From: Stefan Behnel Date: Fri, 20 Mar 2009 16:51:46 +0000 (+0100) Subject: patch cleanup and test fix (avoid uninitialised variable) X-Git-Tag: 0.11.1.alpha~40^2~1 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=4b446b493080cc6cbb2d32405850c8081d2c0a05;p=cython.git patch cleanup and test fix (avoid uninitialised variable) --HG-- rename : tests/bugs/rangeOptimization_T203.pyx => tests/run/range_optimisation_T203.pyx --- diff --git a/Cython/Compiler/Nodes.py b/Cython/Compiler/Nodes.py index 757055f7..9c213a10 100644 --- a/Cython/Compiler/Nodes.py +++ b/Cython/Compiler/Nodes.py @@ -3967,26 +3967,21 @@ class ForFromStatNode(LoopNode, StatNode): decop = "%s=%s" % (decop[0], step) loopvar_name = self.loopvar_node.result() if from_range: - temp_range_bound = code.funcstate.allocate_temp(self.bound2.type, manage_ref=False) - code.putln("%s = %s;" % (temp_range_bound, self.bound2.result())) + range_bound = code.funcstate.allocate_temp(self.bound2.type, manage_ref=False) + code.putln("%s = %s;" % (range_bound, self.bound2.result())) # Skip the loop entirely (and avoid assigning to the loopvar) if # the loop is empty: code.putln("if (%s%s %s %s) {" % ( - self.bound1.result(), offset, self.relation2, temp_range_bound - )) - code.putln( - "for (%s = %s%s; %s %s %s; %s%s) {" % ( - loopvar_name, - self.bound1.result(), offset, - loopvar_name, self.relation2, temp_range_bound, - loopvar_name, incop)) + self.bound1.result(), offset, self.relation2, range_bound + )) else: - code.putln( - "for (%s = %s%s; %s %s %s; %s%s) {" % ( - loopvar_name, - self.bound1.result(), offset, - loopvar_name, self.relation2, self.bound2.result(), - loopvar_name, incop)) + range_bound = self.bound2.result() + code.putln( + "for (%s = %s%s; %s %s %s; %s%s) {" % ( + loopvar_name, + self.bound1.result(), offset, + loopvar_name, self.relation2, range_bound, + loopvar_name, incop)) if self.py_loopvar_node: self.py_loopvar_node.generate_evaluation_code(code) self.target.generate_assignment_code(self.py_loopvar_node, code) @@ -3997,7 +3992,7 @@ class ForFromStatNode(LoopNode, StatNode): code.putln("} %s%s;" % (loopvar_name, decop)) # End the outer if statement: code.putln("} /* end if */") - code.funcstate.release_temp(temp_range_bound) + code.funcstate.release_temp(range_bound) else: code.putln("}") break_label = code.break_label diff --git a/tests/bugs/rangeOptimization_T203.pyx b/tests/run/range_optimisation_T203.pyx similarity index 97% rename from tests/bugs/rangeOptimization_T203.pyx rename to tests/run/range_optimisation_T203.pyx index 3388c2d0..5ae5e951 100644 --- a/tests/bugs/rangeOptimization_T203.pyx +++ b/tests/run/range_optimisation_T203.pyx @@ -53,7 +53,7 @@ cdef int g(): return 3 def f(): - cdef int i + cdef int i = -1 for i in range(g()): print i print i