diff options
author | Richard Biener <rguenther@suse.de> | 2013-05-06 11:27:29 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-05-06 11:27:29 +0000 |
commit | 0107dca2adf82db79c54d6da9707035533d474d6 (patch) | |
tree | 08393bb2ffe3daf1347d560e6951600839f91db7 /gcc/tree-inline.c | |
parent | e5123d087ed24066c03c97c92a15d255c8d318dd (diff) | |
download | gcc-0107dca2adf82db79c54d6da9707035533d474d6.zip gcc-0107dca2adf82db79c54d6da9707035533d474d6.tar.gz gcc-0107dca2adf82db79c54d6da9707035533d474d6.tar.bz2 |
re PR middle-end/57147 (setjmp call and if body wrongly elided (function runs off early end))
2013-05-06 Richard Biener <rguenther@suse.de>
PR middle-end/57147
* tree-cfg.c (gimple_purge_dead_abnormal_call_edges): If
the edge is also fallthru, preserve it and just clear the
abnormal flag.
* tree-cfgcleanup.c (remove_fallthru_edge): If the edge is
also complex, preserve that and just clear the fallthru flag.
* tree-inline.c (update_ssa_across_abnormal_edges): Also
update virtual operands.
* gcc.dg/torture/pr57147-1.c: New testcase.
* gcc.dg/torture/pr57147-2.c: Likewise.
* gcc.dg/torture/pr57147-3.c: Likewise.
From-SVN: r198625
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r-- | gcc/tree-inline.c | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index b5339c4..83b41b1 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -1841,14 +1841,8 @@ update_ssa_across_abnormal_edges (basic_block bb, basic_block ret_bb, gcc_assert ((e->flags & EDGE_EH) || SSA_NAME_OCCURS_IN_ABNORMAL_PHI (PHI_RESULT (phi))); - if (virtual_operand_p (PHI_RESULT (phi))) - { - mark_virtual_operands_for_renaming (cfun); - continue; - } - re = find_edge (ret_bb, e->dest); - gcc_assert (re); + gcc_checking_assert (re); gcc_assert ((re->flags & (EDGE_EH | EDGE_ABNORMAL)) == (e->flags & (EDGE_EH | EDGE_ABNORMAL))); |