[PATCH 1/6] ifcvt: Add missing call to `onlyjump_p'

Maciej W. Rozycki macro@linux-mips.org
Thu Dec 3 11:34:37 GMT 2020


Do not convert a conditional jump into conditional execution (and remove 
the jump as a consequence) if the jump has side effects.

	gcc/
	* ifcvt.c (dead_or_predicable) [!IFCVT_MODIFY_TESTS]: Bail out 
	if `!onlyjump_p'.
---
 gcc/ifcvt.c |    6 ++++++
 1 file changed, 6 insertions(+)

gcc-ifcvt-dead-or-predicable-ce-only-jump.diff
Index: gcc/gcc/ifcvt.c
===================================================================
--- gcc.orig/gcc/ifcvt.c
+++ gcc/gcc/ifcvt.c
@@ -5127,6 +5127,11 @@ dead_or_predicable (basic_block test_bb,
 
       rtx cond;
 
+      /* If the conditional jump is more than just a conditional jump,
+	 then we cannot do conditional execution conversion on this block.  */
+      if (!onlyjump_p (jump))
+	goto nce;
+
       cond = cond_exec_get_condition (jump);
       if (! cond)
 	return FALSE;
@@ -5154,6 +5159,7 @@ dead_or_predicable (basic_block test_bb,
 
       earliest = jump;
     }
+ nce:
 #endif
 
   /* If we allocated new pseudos (e.g. in the conditional move


More information about the Gcc-patches mailing list