forgot to make the lhs in FlattenInListTransform a CloneNode
authorStefan Behnel <scoder@users.berlios.de>
Tue, 2 Dec 2008 19:39:44 +0000 (20:39 +0100)
committerStefan Behnel <scoder@users.berlios.de>
Tue, 2 Dec 2008 19:39:44 +0000 (20:39 +0100)
Cython/Compiler/Optimize.py

index a0f38f34d78275558355394cff75220e47b04672..6dec163efa1577d98cca01959328b6c6bd70cccf 100644 (file)
@@ -316,7 +316,7 @@ class FlattenInListTransform(Visitor.VisitorTransform):
             if len(args) == 0:
                 return ExprNodes.BoolNode(pos = node.pos, value = node.operator == 'not_in')
 
-            if node.operand1.is_temp or node.operand1.is_simple():
+            if node.operand1.is_simple():
                 lhs = node.operand1
             else:
                 # FIXME: allocate temp for evaluated node.operand1
@@ -334,6 +334,8 @@ class FlattenInListTransform(Visitor.VisitorTransform):
                                     pos = node.pos, 
                                     operand = cond,
                                     type = PyrexTypes.c_bint_type))
+                if type(lhs) is not ExprNodes.CloneNode:
+                    lhs = ExprNodes.CloneNode(lhs)
             def concat(left, right):
                 return ExprNodes.BoolBinopNode(
                                     pos = node.pos,