[Bug rtl-optimization/104153] New: [12 Regression] ICE due to recent ifcvt changes
law at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jan 21 00:12:07 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104153
Bug ID: 104153
Summary: [12 Regression] ICE due to recent ifcvt changes
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: law at gcc dot gnu.org
Target Milestone: ---
Created attachment 52249
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52249&action=edit
Testcase
or1k-elf has started regressing building newlib after this patch:
commit aa8cfe785953a0e87d2472311e1260cd98c605c0 (HEAD)
Author: Robin Dapp <rdapp@linux.ibm.com>
Date: Wed Jan 19 17:36:36 2022 +0100
ifcvt: Try re-using CC for conditional moves.
Following up on the previous patch, this patch makes
noce_convert_multiple emit two cmov sequences: The same one as before
and a second one that tries to re-use the existing CC. Then their costs
are compared and the cheaper one is selected.
gcc/ChangeLog:
* ifcvt.cc (cond_exec_get_condition): New parameter to allow
getting the
reversed comparison.
(try_emit_cmove_seq): New function to facilitate creating a cmov
sequence.
(noce_convert_multiple_sets): Create two sequences and use the less
expensive one.
It's faulting a bit later in the RTL pipeline, but I think what's going on is
we're modifying an insn in-place and don't update the DF information leading to
a DF verification failure later. I'd bet if we did a full DF verify after
ifcvt we'd see the failure earlier.
Compile the attached code with -O2 on an or1k-elf cross-compiler to get:
dump file: j.c.276r.cprop3
../../../../../../..//newlib-cygwin/newlib/libm/math/s_floor.c: In function
‘floor’:
../../../../../../..//newlib-cygwin/newlib/libm/math/s_floor.c:121:1: internal
compiler error: in df_refs_verify, at df-scan.cc:4003
0xca95c6 df_refs_verify
/home/jlaw/test/gcc/gcc/df-scan.cc:4003
0xca9836 df_insn_refs_verify
/home/jlaw/test/gcc/gcc/df-scan.cc:4086
0xca99d7 df_bb_verify
/home/jlaw/test/gcc/gcc/df-scan.cc:4119
0xca9fa5 df_scan_verify()
/home/jlaw/test/gcc/gcc/df-scan.cc:4240
0xc94512 df_verify()
/home/jlaw/test/gcc/gcc/df-core.cc:1818
0xc92e0c df_analyze_1
/home/jlaw/test/gcc/gcc/df-core.cc:1214
0xc931d0 df_analyze()
/home/jlaw/test/gcc/gcc/df-core.cc:1290
0x1dc4925 execute_rtl_cprop
/home/jlaw/test/gcc/gcc/cprop.cc:1925
0x1dc4a24 execute
/home/jlaw/test/gcc/gcc/cprop.cc:1964
More information about the Gcc-bugs
mailing list