aboutsummaryrefslogtreecommitdiff
path: root/gcc/postreload-gcse.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2016-08-30 10:10:26 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2016-08-30 10:10:26 +0000
commit8fa372320a8a4f94fb2b9755fb7cd20170e8e865 (patch)
treedb7824d3a5922688416323168c11922fda5806be /gcc/postreload-gcse.c
parent6f651baeb7092ada83febdaebb0f5e22eef184c8 (diff)
downloadgcc-8fa372320a8a4f94fb2b9755fb7cd20170e8e865.zip
gcc-8fa372320a8a4f94fb2b9755fb7cd20170e8e865.tar.gz
gcc-8fa372320a8a4f94fb2b9755fb7cd20170e8e865.tar.bz2
postreload-gcse.c (bb_has_well_behaved_predecessors): Tweak criterion used for abnormal egdes.
* postreload-gcse.c (bb_has_well_behaved_predecessors): Tweak criterion used for abnormal egdes. From-SVN: r239858
Diffstat (limited to 'gcc/postreload-gcse.c')
-rw-r--r--gcc/postreload-gcse.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/postreload-gcse.c b/gcc/postreload-gcse.c
index 566e875..da04fb7 100644
--- a/gcc/postreload-gcse.c
+++ b/gcc/postreload-gcse.c
@@ -962,7 +962,9 @@ bb_has_well_behaved_predecessors (basic_block bb)
FOR_EACH_EDGE (pred, ei, bb->preds)
{
- if ((pred->flags & EDGE_ABNORMAL) && EDGE_CRITICAL_P (pred))
+ /* commit_one_edge_insertion refuses to insert on abnormal edges even if
+ the source has only one successor so EDGE_CRITICAL_P is too weak. */
+ if ((pred->flags & EDGE_ABNORMAL) && !single_pred_p (pred->dest))
return false;
if ((pred->flags & EDGE_ABNORMAL_CALL) && cfun->has_nonlocal_label)