Browse Source

Optimize for small functions in CFG->tree lowering

jonathanvdc 8 years ago
parent
commit
6eef774b3f
1 changed files with 7 additions and 3 deletions
  1. 7 3
      kernel/modelverse_jit/cfg_to_tree.py

+ 7 - 3
kernel/modelverse_jit/cfg_to_tree.py

@@ -965,7 +965,11 @@ class LoweringState(object):
 def lower_flow_graph(entry_point, jit):
     """Lowers the control-flow graph defined by the given entry point to tree IR."""
     cfg_lowerer = LoweringState(jit, find_inlinable_definitions(entry_point))
-    lowered_body = reloop_function_body(entry_point).lower(cfg_lowerer)
-    lowered_body = tree_ir.CompoundInstruction(
-        cfg_lowerer.lower_jump(cfg_ir.create_jump(entry_point)), lowered_body)
+    ep_branches = entry_point.flow.branches()
+    if len(ep_branches) == 0:
+        lowered_body = cfg_lowerer.lower_block(entry_point)
+    else:
+        lowered_body = reloop_function_body(entry_point).lower(cfg_lowerer)
+        lowered_body = tree_ir.CompoundInstruction(
+            cfg_lowerer.lower_jump(cfg_ir.create_jump(entry_point)), lowered_body)
     return tree_ir.map_and_simplify(lambda x: x, lowered_body)