diff options
author | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-07 06:14:15 +0000 |
---|---|---|
committer | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-07 06:14:15 +0000 |
commit | 0d9e7a5e1514e20af3a2eb2e89739f2d362f482a (patch) | |
tree | 710e59e353d684b5781d79e6d8725a5a5754308b /gcc/cfghooks.c | |
parent | 9d4547b22985663818de5a847885b7b436715a45 (diff) | |
download | gcc-0d9e7a5e1514e20af3a2eb2e89739f2d362f482a.tar.gz |
PR tree-optimization/17806
* cfghooks.c (split_edge): Update IRREDUCIBLE_LOOP flags.
* cfgloopmanip.c (loop_split_edge_with): Updating of IRREDUCIBLE_LOOP
flags moved to split_edge.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88665 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfghooks.c')
-rw-r--r-- | gcc/cfghooks.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/cfghooks.c b/gcc/cfghooks.c index e6a624c3550..948c2b4c13d 100644 --- a/gcc/cfghooks.c +++ b/gcc/cfghooks.c @@ -389,6 +389,7 @@ split_edge (edge e) gcov_type count = e->count; int freq = EDGE_FREQUENCY (e); edge f; + bool irr = (e->flags & EDGE_IRREDUCIBLE_LOOP) != 0; if (!cfg_hooks->split_edge) internal_error ("%s does not support split_edge.", cfg_hooks->name); @@ -399,6 +400,13 @@ split_edge (edge e) EDGE_SUCC (ret, 0)->probability = REG_BR_PROB_BASE; EDGE_SUCC (ret, 0)->count = count; + if (irr) + { + ret->flags |= BB_IRREDUCIBLE_LOOP; + EDGE_PRED (ret, 0)->flags |= EDGE_IRREDUCIBLE_LOOP; + EDGE_SUCC (ret, 0)->flags |= EDGE_IRREDUCIBLE_LOOP; + } + if (dom_computed[CDI_DOMINATORS]) set_immediate_dominator (CDI_DOMINATORS, ret, EDGE_PRED (ret, 0)->src); |