merged in latest cython-devel
authorStefan Behnel <scoder@users.berlios.de>
Tue, 15 Jun 2010 20:34:10 +0000 (22:34 +0200)
committerStefan Behnel <scoder@users.berlios.de>
Tue, 15 Jun 2010 20:34:10 +0000 (22:34 +0200)
1  2 
Cython/Compiler/ExprNodes.py
Cython/Compiler/Main.py
Cython/Compiler/Optimize.py
Cython/Compiler/TypeInference.py

index 5273419bfac2bb8dc258b84e2dadd644d49c3fdf,cdf267018b45f5b2c87bc33238facce8609d1554..f5fc042581517959b7bd29da2e372c0a76dc3ad9
@@@ -19,8 -18,8 +19,9 @@@ from Builtin import list_type, tuple_ty
  import Builtin
  import Symtab
  import Options
+ from Cython import Utils
  from Annotate import AnnotationItem
 +from Cython import Utils
  
  from Cython.Debugging import print_call_chain
  from DebugFlags import debug_disposal_code, debug_temp_alloc, \
Simple merge
Simple merge
index 38f8049863bc62cfb792b4814994642076e833d8,e0daaabc132c90a1367955e31628f94ca86ee748..9335d72a754a5fe9314b7085880a41af3412aa6e
@@@ -175,9 -176,27 +176,27 @@@ class MarkOverflowingArithmetic(CythonT
      visit_InPlaceAssignmentNode = visit_dangerous_node
      
      visit_Node = visit_safe_node
+     
+     def visit_assignment(self, lhs, rhs):
+         if (isinstance(rhs, ExprNodes.IntNode) 
+                 and isinstance(lhs, ExprNodes.NameNode)
+                 and Utils.long_literal(rhs.value)):
+             entry = lhs.entry or self.env.lookup(lhs.name)
+             if entry:
+                 entry.might_overflow = True
+     
+     def visit_SingleAssignmentNode(self, node):
+         self.visit_assignment(node.lhs, node.rhs)
+         self.visitchildren(node)
+         return node
+     
+     def visit_CascadedAssignmentNode(self, node):
+         for lhs in node.lhs_list:
+             self.visit_assignment(lhs, node.rhs)
+         self.visitchildren(node)
+         return node
  
 -class PyObjectTypeInferer:
 +class PyObjectTypeInferer(object):
      """
      If it's not declared, it's a PyObject.
      """