aboutsummaryrefslogtreecommitdiff
path: root/gcc/ifcvt.c
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@linux-mips.org>2020-12-03 11:35:06 +0000
committerMaciej W. Rozycki <macro@orcam.me.uk>2021-04-27 20:02:06 +0200
commit6c1976fa3ff57f5b547e0c3f1e0461409936586b (patch)
tree32adcd32f6c241782219ece702f31da142c74aff /gcc/ifcvt.c
parentd0a57b030f1c7df33c6bc3c661d16c9cb79e96dd (diff)
downloadgcc-6c1976fa3ff57f5b547e0c3f1e0461409936586b.zip
gcc-6c1976fa3ff57f5b547e0c3f1e0461409936586b.tar.gz
gcc-6c1976fa3ff57f5b547e0c3f1e0461409936586b.tar.bz2
ifcvt: Fall through to NCE if getting the CE condition failed
If getting the condition for conditional execution has failed then fall through and try the non-conditional execution approach instead rather than giving up with dead code elimination altogether, for a better code structure if nothing else. The case may well now be that whenever `cond_exec_get_condition' fails `noce_get_condition' will as well, however in that case no change in semantics will result. If they ever diverge, then someone will have to chase this place. gcc/ * ifcvt.c (dead_or_predicable) [!IFCVT_MODIFY_TESTS]: Fall through to the non-conditional execution case if getting the condition for conditional execution has failed.
Diffstat (limited to 'gcc/ifcvt.c')
-rw-r--r--gcc/ifcvt.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index b467eb5..4de7bb9 100644
--- a/gcc/ifcvt.c
+++ b/gcc/ifcvt.c
@@ -5193,7 +5193,7 @@ dead_or_predicable (basic_block test_bb, basic_block merge_bb,
cond = cond_exec_get_condition (jump);
if (! cond)
- return FALSE;
+ goto nce;
rtx note = find_reg_note (jump, REG_BR_PROB, NULL_RTX);
profile_probability prob_val