X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firgopt.c;h=751ad2aa75a8e064c7eb893d2585c8a66c227b66;hb=9924f5a9ff6902ae3c18d5065b13b676bbf25502;hp=9f4c1a96f5f091ca22c86b9a2ce474c06d7a2dfc;hpb=a63062db7f43c0d0bec2779e62fa9493cd74d3af;p=libfirm diff --git a/ir/ir/irgopt.c b/ir/ir/irgopt.c index 9f4c1a96f..751ad2aa7 100644 --- a/ir/ir/irgopt.c +++ b/ir/ir/irgopt.c @@ -158,8 +158,10 @@ copy_preds (ir_node *n, void *env) { /* repair the block visited flag from above misuse */ set_Block_block_visited(nn, 0); /* Local optimization could not merge two subsequent blocks if - in array contained Bads. Now it's possible. */ - on = optimize_in_place(nn); + in array contained Bads. Now it's possible, but don't do it for + the end block! */ + if (n != current_ir_graph->end_block) on = optimize_in_place(nn); + else on = nn; if (nn != on) exchange(nn, on); } else if (get_irn_opcode(n) == iro_Phi) { /* Don't copy node if corresponding predecessor in block is Bad.