From 94f336768e199bc268c30446a63b49a53b02f648 Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Sat, 5 Dec 2020 18:26:24 +0000 Subject: [PATCH] ifcvt: Add missing call to `onlyjump_p' 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(+) diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index a9ea7b1808d..0bd05dc2622 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -5127,6 +5127,11 @@ dead_or_predicable (basic_block test_bb, basic_block merge_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, basic_block merge_bb, earliest = jump; } + nce: #endif /* If we allocated new pseudos (e.g. in the conditional move -- 2.30.2