Index: src/compiler/move-optimizer.cc |
diff --git a/src/compiler/move-optimizer.cc b/src/compiler/move-optimizer.cc |
index b869185e60ed2aed9dbc939878d1874e92e4eda6..6d71ef2e1b6b0098bb8ee1f26979ffaaf3dbfafb 100644 |
--- a/src/compiler/move-optimizer.cc |
+++ b/src/compiler/move-optimizer.cc |
@@ -59,6 +59,14 @@ void MoveOptimizer::Run() { |
} |
for (auto block : code()->instruction_blocks()) { |
if (block->PredecessorCount() <= 1) continue; |
+ bool has_only_deferred = true; |
+ for (RpoNumber pred_id : block->predecessors()) { |
+ if (!code()->InstructionBlockAt(pred_id)->IsDeferred()) { |
+ has_only_deferred = false; |
+ break; |
+ } |
+ } |
+ if (has_only_deferred) continue; |
Jarin
2015/08/04 19:39:43
Could you explain why we skip the optimization her
Mircea Trofin
2015/08/04 20:34:46
This would pull down common fills. If the fills oc
Mircea Trofin
2015/08/04 20:39:04
Should have added: the last statement of the Multi
|
OptimizeMerge(block); |
} |
for (auto gap : to_finalize_) { |