gcc/gcc44-vta-non-call-exceptio...

39 lines
1.1 KiB
Diff

2010-01-21 Jakub Jelinek <jakub@redhat.com>
* tree-into-ssa.c (maybe_register_def): If stmt ends the bb,
insert the debug stmt on the single non-EH edge from the stmt.
--- gcc/tree-into-ssa.c.jj 2010-01-21 09:58:38.000000000 +0100
+++ gcc/tree-into-ssa.c 2010-01-21 12:25:22.000000000 +0100
@@ -1968,7 +1968,29 @@ maybe_register_def (def_operand_p def_p,
if (tracked_var)
{
gimple note = gimple_build_debug_bind (tracked_var, def, stmt);
- gsi_insert_after (&gsi, note, GSI_SAME_STMT);
+ if (gsi_one_before_end_p (gsi) && stmt_ends_bb_p (stmt))
+ {
+ basic_block bb = gsi_bb (gsi);
+ edge_iterator ei;
+ edge e, ef = NULL;
+ FOR_EACH_EDGE (e, ei, bb->succs)
+ if (!(e->flags & EDGE_EH))
+ {
+ if (ef)
+ {
+ ef = NULL;
+ break;
+ }
+ ef = e;
+ }
+ if (ef
+ && single_pred_p (ef->dest)
+ && !phi_nodes (ef->dest)
+ && ef->dest != EXIT_BLOCK_PTR)
+ gsi_insert_on_edge_immediate (ef, note);
+ }
+ else
+ gsi_insert_after (&gsi, note, GSI_SAME_STMT);
}
}