aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgexpand.c
diff options
context:
space:
mode:
authorZdenek Dvorak <dvorakz@suse.cz>2006-06-22 19:54:45 +0200
committerZdenek Dvorak <rakdver@gcc.gnu.org>2006-06-22 17:54:45 +0000
commit0ef902968099b4ddb1c272eec3c4db8870f25c0d (patch)
treee2a239d938daea1acc289a43961031d9d0933e6b /gcc/cfgexpand.c
parenta8fe5a30f21979b1c444c31668bf3aef157aefa3 (diff)
downloadgcc-0ef902968099b4ddb1c272eec3c4db8870f25c0d.zip
gcc-0ef902968099b4ddb1c272eec3c4db8870f25c0d.tar.gz
gcc-0ef902968099b4ddb1c272eec3c4db8870f25c0d.tar.bz2
re PR rtl-optimization/28121 (verify_flow_info failed (wrong amount of branch edges after unconditional jump 2))
PR rtl-optimization/28121 * cfgexpand.c (tree_expand_cfg): Clean EDGE_EXECUTABLE flag from the entry edge. * gcc.dg/pr28121.c: New test. From-SVN: r114898
Diffstat (limited to 'gcc/cfgexpand.c')
-rw-r--r--gcc/cfgexpand.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 941cdad..1f43a32 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -1580,6 +1580,8 @@ tree_expand_cfg (void)
{
basic_block bb, init_block;
sbitmap blocks;
+ edge_iterator ei;
+ edge e;
/* Some backends want to know that we are expanding to RTL. */
currently_expanding_to_rtl = 1;
@@ -1623,6 +1625,11 @@ tree_expand_cfg (void)
init_block = construct_init_block ();
+ /* Clear EDGE_EXECUTABLE on the entry edge(s). It is cleaned from the
+ remainining edges in expand_gimple_basic_block. */
+ FOR_EACH_EDGE (e, ei, ENTRY_BLOCK_PTR->succs)
+ e->flags &= ~EDGE_EXECUTABLE;
+
FOR_BB_BETWEEN (bb, init_block->next_bb, EXIT_BLOCK_PTR, next_bb)
bb = expand_gimple_basic_block (bb);