https://gcc.gnu.org/g:a4f8c1c638853f88ddf203d21b99a9740bb8e4c1
commit r15-11065-ga4f8c1c638853f88ddf203d21b99a9740bb8e4c1 Author: Xi Ruoyao <[email protected]> Date: Tue Apr 7 04:03:09 2026 +0800 ifcvt: reject use of ctrap post reload [PR 105192] The ctrap expanders of several targets can end up creating pseudos. And it would be really counter-intuitive to disallow a define_expand to generate pseudos. So don't invoke the expander post reload. PR target/105192 gcc/ * ifcvt.cc (find_if_header): Don't attempt to use ctrap expander after reload. gcc/testsuite/ * gcc.c-torture/compile/pr105192.c: New test. (cherry picked from commit 7f1e96ee025ab481cf0893b3a4ce82909b22d8f9) Diff: --- gcc/ifcvt.cc | 2 +- gcc/testsuite/gcc.c-torture/compile/pr105192.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/ifcvt.cc b/gcc/ifcvt.cc index c34072f36fed..42ba2538ef4b 100644 --- a/gcc/ifcvt.cc +++ b/gcc/ifcvt.cc @@ -4952,7 +4952,7 @@ find_if_header (basic_block test_bb, int pass) && cond_exec_find_if_block (&ce_info)) goto success; - if (targetm.have_trap () + if (!reload_completed && targetm.have_trap () && optab_handler (ctrap_optab, word_mode) != CODE_FOR_nothing && find_cond_trap (test_bb, then_edge, else_edge)) goto success; diff --git a/gcc/testsuite/gcc.c-torture/compile/pr105192.c b/gcc/testsuite/gcc.c-torture/compile/pr105192.c new file mode 100644 index 000000000000..0cc615052182 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr105192.c @@ -0,0 +1,9 @@ +/* { dg-additional-options "-fno-if-conversion -fharden-compares" } */ + +int a, b; + +void +foo (void) +{ + b = a % 0 > 0; +}
