diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2016-08-30 10:10:26 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2016-08-30 10:10:26 +0000 |
commit | 8fa372320a8a4f94fb2b9755fb7cd20170e8e865 (patch) | |
tree | db7824d3a5922688416323168c11922fda5806be /gcc/postreload-gcse.c | |
parent | 6f651baeb7092ada83febdaebb0f5e22eef184c8 (diff) | |
download | gcc-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.c | 4 |
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) |