simplify some code
authorStefan Behnel <stefan_ml@behnel.de>
Sun, 1 Dec 2013 17:04:46 +0000 (18:04 +0100)
committerStefan Behnel <stefan_ml@behnel.de>
Sun, 1 Dec 2013 17:04:46 +0000 (18:04 +0100)
Cython/Compiler/Nodes.py
Cython/Compiler/Optimize.py

index d4c820e..4525f89 100644 (file)
@@ -5328,12 +5328,6 @@ class IfClauseNode(Node):
         self.body = self.body.analyse_expressions(env)
         return self
 
-    def get_constant_condition_result(self):
-        if self.condition.has_constant_result():
-            return bool(self.condition.constant_result)
-        else:
-            return None
-
     def generate_execution_code(self, code, end_label):
         self.condition.generate_evaluation_code(code)
         code.putln(
index 9292a2c..53fad8a 100644 (file)
@@ -3306,17 +3306,16 @@ class ConstantFolding(Visitor.VisitorTransform, SkipDeclarations):
         # eliminate dead code based on constant condition results
         if_clauses = []
         for if_clause in node.if_clauses:
-            condition_result = if_clause.get_constant_condition_result()
-            if condition_result is None:
+            condition = if_clause.condition
+            if condition.has_constant_result():
+                if condition.constant_result:
+                    # always true => subsequent clauses can safely be dropped
+                    node.else_clause = if_clause.body
+                    break
+                # else: false => drop clause
+            else:
                 # unknown result => normal runtime evaluation
                 if_clauses.append(if_clause)
-            elif condition_result == True:
-                # subsequent clauses can safely be dropped
-                node.else_clause = if_clause.body
-                break
-            else:
-                # False clauses can safely be deleted
-                assert condition_result == False
         if if_clauses:
             node.if_clauses = if_clauses
             return node