ifcvt: Fall through to NCE if getting the CE condition failed
authorMaciej W. Rozycki <macro@linux-mips.org>
Thu, 3 Dec 2020 11:35:06 +0000 (11:35 +0000)
committerMaciej W. Rozycki <macro@orcam.me.uk>
Tue, 27 Apr 2021 18:02:06 +0000 (20:02 +0200)
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.

gcc/ifcvt.c

index b467eb5..4de7bb9 100644 (file)
@@ -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