gcc - GNU Compiler Collection (original) (raw)

author Xi Ruoyao xry111@xry111.site 2026-04-07 04:03:09 +0800
committer Xi Ruoyao xry111@xry111.site 2026-04-09 09:19:15 +0800
commit 7f1e96ee025ab481cf0893b3a4ce82909b22d8f9 (patch)
tree 77281cc1d8c62966e03bd682ac31bcbb5336efa0
parent Daily bump. (diff)

ifcvt: reject use of ctrap post reload [PR 105192]HEADtrunkmaster

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.

-rw-r--r-- gcc/ifcvt.cc 2
-rw-r--r-- gcc/testsuite/gcc.c-torture/compile/pr105192.c 9

2 files changed, 10 insertions, 1 deletions

diff --git a/gcc/ifcvt.cc b/gcc/ifcvt.ccindex 7f5af2ca9159..c151146c1b22 100644--- a/gcc/ifcvt.cc+++ b/gcc/ifcvt.cc
@@ -5180,7 +5180,7 @@ find_if_header (basic_block test_bb, int pass)
5180 && cond_exec_find_if_block (&ce_info)) 5180 && cond_exec_find_if_block (&ce_info))
5181 goto success; 5181 goto success;
5182 5182
5183 if (targetm.have_trap () 5183 if (!reload_completed && targetm.have_trap ()
5184 && optab_handler (ctrap_optab, word_mode) != CODE_FOR_nothing 5184 && optab_handler (ctrap_optab, word_mode) != CODE_FOR_nothing
5185 && find_cond_trap (test_bb, then_edge, else_edge)) 5185 && find_cond_trap (test_bb, then_edge, else_edge))
5186 goto success; 5186 goto success;
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr105192.c b/gcc/testsuite/gcc.c-torture/compile/pr105192.cnew file mode 100644index 000000000000..0cc615052182--- /dev/null+++ b/gcc/testsuite/gcc.c-torture/compile/pr105192.c
@@ -0,0 +1,9 @@
1 /* { dg-additional-options "-fno-if-conversion -fharden-compares" } */
2
3 int a, b;
4
5 void
6 foo (void)
7 {
8 b = a % 0 > 0;
9 }