public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/101743] New: [12 Regression] Error: insn does not satisfy its constraints since r12-2640-gf7bf03cf69ccb7dc
@ 2021-08-03 8:24 marxin at gcc dot gnu.org
2021-08-03 8:25 ` [Bug target/101743] " marxin at gcc dot gnu.org
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: marxin at gcc dot gnu.org @ 2021-08-03 8:24 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101743
Bug ID: 101743
Summary: [12 Regression] Error: insn does not satisfy its
constraints since r12-2640-gf7bf03cf69ccb7dc
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: marxin at gcc dot gnu.org
CC: roger at nextmovesoftware dot com, uros at gcc dot gnu.org
Target Milestone: ---
Host: x86_64-linux-gnu
Created attachment 51249
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=51249&action=edit
RTL dump file
The ICE happens in cam4_r SPEC 2017 benchmark when run with PGO and
-march=znver2 -Ofast. It's not easy to get a test-case as the file contains
quite some modules.
Hope you'll be able to guess what's wrong based on RTL dump file.
$ gfortran -I/tmp/ -c -Ofast -march=znver2 -g -std=legacy -fprofile-use
m_MCTWorld.fppized.f90 -fdump-rtl-all
...
Error: insn does not satisfy its constraints:
(insn 2301 2106 2302 113 (parallel [
(set (reg:CCGOC 17 flags)
(compare:CCGOC (plus:DI (reg:DI 20 xmm0 [orig:311 vect__743.211
] [311])
(const_int -1 [0xffffffffffffffff]))
(const_int 0 [0])))
(set (reg:DI 20 xmm0 [orig:311 vect__743.211 ] [311])
(plus:DI (reg:DI 20 xmm0 [orig:311 vect__743.211 ] [311])
(const_int -1 [0xffffffffffffffff])))
]) "m_MCTWorld.fppized.f90":103:40 217 {*adddi_2}
(nil))
during RTL pass: rnreg
dump file: m_MCTWorld.fppized.f90.313r.rnreg
m_MCTWorld.fppized.f90:116:22: internal compiler error: in
extract_constrain_insn, at recog.c:2670
0x7143a8 _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
/home/marxin/Programming/gcc/gcc/rtl-error.c:108
0x7143d6 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
/home/marxin/Programming/gcc/gcc/rtl-error.c:118
0x7125cb extract_constrain_insn(rtx_insn*)
/home/marxin/Programming/gcc/gcc/recog.c:2670
0xeaf065 build_def_use
/home/marxin/Programming/gcc/gcc/regrename.c:1691
0xeaf065 regrename_analyze(bitmap_head*, bool)
/home/marxin/Programming/gcc/gcc/regrename.c:763
0xeb0196 regrename_optimize
/home/marxin/Programming/gcc/gcc/regrename.c:1974
0xeb0196 execute
/home/marxin/Programming/gcc/gcc/regrename.c:2011
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug target/101743] [12 Regression] Error: insn does not satisfy its constraints since r12-2640-gf7bf03cf69ccb7dc
2021-08-03 8:24 [Bug target/101743] New: [12 Regression] Error: insn does not satisfy its constraints since r12-2640-gf7bf03cf69ccb7dc marxin at gcc dot gnu.org
@ 2021-08-03 8:25 ` marxin at gcc dot gnu.org
2021-08-03 8:49 ` crazylht at gmail dot com
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: marxin at gcc dot gnu.org @ 2021-08-03 8:25 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101743
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
Last reconfirmed| |2021-08-03
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug target/101743] [12 Regression] Error: insn does not satisfy its constraints since r12-2640-gf7bf03cf69ccb7dc
2021-08-03 8:24 [Bug target/101743] New: [12 Regression] Error: insn does not satisfy its constraints since r12-2640-gf7bf03cf69ccb7dc marxin at gcc dot gnu.org
2021-08-03 8:25 ` [Bug target/101743] " marxin at gcc dot gnu.org
@ 2021-08-03 8:49 ` crazylht at gmail dot com
2021-08-03 10:46 ` rguenth at gcc dot gnu.org
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: crazylht at gmail dot com @ 2021-08-03 8:49 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101743
Hongtao.liu <crazylht at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |crazylht at gmail dot com
--- Comment #1 from Hongtao.liu <crazylht at gmail dot com> ---
+;; Eliminate a reg-reg mov by inverting the condition of a cmov (#1).
+;; mov r0,r1; dec r0; mov r2,r3; cmov r0,r2 -> dec r1; mov r0,r3; cmov r0, r1
+(define_peephole2
+ [(set (match_operand:SWI248 0 "register_operand")
+ (match_operand:SWI248 1 "register_operand"))
+ (parallel [(set (reg FLAGS_REG) (match_operand 5))
+ (set (match_dup 0) (match_operand:SWI248 6))])
+ (set (match_operand:SWI248 2 "register_operand")
+ (match_operand:SWI248 3))
+ (set (match_dup 0)
+ (if_then_else:SWI248 (match_operator 4 "ix86_comparison_operator"
+ [(reg FLAGS_REG) (const_int 0)])
+ (match_dup 0)
+ (match_dup 2)))]
+ "TARGET_CMOVE
+ && REGNO (operands[2]) != REGNO (operands[0])
+ && REGNO (operands[2]) != REGNO (operands[1])
+ && peep2_reg_dead_p (1, operands[1])
+ && peep2_reg_dead_p (4, operands[2])
+ && !reg_overlap_mentioned_p (operands[0], operands[3])"
+ [(parallel [(set (match_dup 7) (match_dup 8))
+ (set (match_dup 1) (match_dup 9))])
+ (set (match_dup 0) (match_dup 3))
+ (set (match_dup 0) (if_then_else:SWI248 (match_dup 4)
+ (match_dup 1)
+ (match_dup 0)))]
+{
+ operands[7] = SET_DEST (XVECEXP (PATTERN (peep2_next_insn (1)), 0, 0));
+ operands[8] = replace_rtx (operands[5], operands[0], operands[1]);
+ operands[9] = replace_rtx (operands[6], operands[0], operands[1]);
+})
+
+;; Eliminate a reg-reg mov by inverting the condition of a cmov (#2).
+;; mov r2,r3; mov r0,r1; dec r0; cmov r0,r2 -> dec r1; mov r0,r3; cmov r0, r1
I guess the below peephole should refine its predicate as general_reg_operand,
since x86 support movement between gpr, sse, mask registers.
r1 here is very likely sse_reg_operand which result in ICE.
+(define_peephole2
+ [(set (match_operand:SWI248 2 "register_operand")
+ (match_operand:SWI248 3))
+ (set (match_operand:SWI248 0 "register_operand")
+ (match_operand:SWI248 1 "register_operand"))
+ (parallel [(set (reg FLAGS_REG) (match_operand 5))
+ (set (match_dup 0) (match_operand:SWI248 6))])
+ (set (match_dup 0)
+ (if_then_else:SWI248 (match_operator 4 "ix86_comparison_operator"
+ [(reg FLAGS_REG) (const_int 0)])
+ (match_dup 0)
+ (match_dup 2)))]
+ "TARGET_CMOVE
+ && REGNO (operands[2]) != REGNO (operands[0])
+ && REGNO (operands[2]) != REGNO (operands[1])
+ && peep2_reg_dead_p (2, operands[1])
+ && peep2_reg_dead_p (4, operands[2])
+ && !reg_overlap_mentioned_p (operands[0], operands[3])"
+ [(parallel [(set (match_dup 7) (match_dup 8))
+ (set (match_dup 1) (match_dup 9))])
+ (set (match_dup 0) (match_dup 3))
+ (set (match_dup 0) (if_then_else:SWI248 (match_dup 4)
+ (match_dup 1)
+ (match_dup 0)))]
+{
+ operands[7] = SET_DEST (XVECEXP (PATTERN (peep2_next_insn (2)), 0, 0));
+ operands[8] = replace_rtx (operands[5], operands[0], operands[1]);
+ operands[9] = replace_rtx (operands[6], operands[0], operands[1]);
+})
+
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug target/101743] [12 Regression] Error: insn does not satisfy its constraints since r12-2640-gf7bf03cf69ccb7dc
2021-08-03 8:24 [Bug target/101743] New: [12 Regression] Error: insn does not satisfy its constraints since r12-2640-gf7bf03cf69ccb7dc marxin at gcc dot gnu.org
2021-08-03 8:25 ` [Bug target/101743] " marxin at gcc dot gnu.org
2021-08-03 8:49 ` crazylht at gmail dot com
@ 2021-08-03 10:46 ` rguenth at gcc dot gnu.org
2021-08-04 9:43 ` cvs-commit at gcc dot gnu.org
2021-08-12 10:28 ` marxin at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: rguenth at gcc dot gnu.org @ 2021-08-03 10:46 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101743
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |12.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug target/101743] [12 Regression] Error: insn does not satisfy its constraints since r12-2640-gf7bf03cf69ccb7dc
2021-08-03 8:24 [Bug target/101743] New: [12 Regression] Error: insn does not satisfy its constraints since r12-2640-gf7bf03cf69ccb7dc marxin at gcc dot gnu.org
` (2 preceding siblings ...)
2021-08-03 10:46 ` rguenth at gcc dot gnu.org
@ 2021-08-04 9:43 ` cvs-commit at gcc dot gnu.org
2021-08-12 10:28 ` marxin at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-08-04 9:43 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101743
--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by hongtao Liu <liuhongt@gcc.gnu.org>:
https://gcc.gnu.org/g:9f26640f7b89c771b0ebffd7e7f5019d0709a955
commit r12-2724-g9f26640f7b89c771b0ebffd7e7f5019d0709a955
Author: liuhongt <hongtao.liu@intel.com>
Date: Wed Aug 4 10:50:28 2021 +0800
Refine predicate of peephole2 to general_reg_operand. [PR target/101743]
The define_peephole2 which is added by r12-2640-gf7bf03cf69ccb7dc
should only work on general registers, considering that x86 also
supports mov instructions between gpr, sse reg, mask reg, limiting the
peephole2 predicate to general_reg_operand.
gcc/ChangeLog:
PR target/101743
* config/i386/i386.md (peephole2): Refine predicate from
register_operand to general_reg_operand.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug target/101743] [12 Regression] Error: insn does not satisfy its constraints since r12-2640-gf7bf03cf69ccb7dc
2021-08-03 8:24 [Bug target/101743] New: [12 Regression] Error: insn does not satisfy its constraints since r12-2640-gf7bf03cf69ccb7dc marxin at gcc dot gnu.org
` (3 preceding siblings ...)
2021-08-04 9:43 ` cvs-commit at gcc dot gnu.org
@ 2021-08-12 10:28 ` marxin at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: marxin at gcc dot gnu.org @ 2021-08-12 10:28 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101743
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution|--- |FIXED
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> ---
I can confirm it's fixed now.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-08-12 10:28 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-03 8:24 [Bug target/101743] New: [12 Regression] Error: insn does not satisfy its constraints since r12-2640-gf7bf03cf69ccb7dc marxin at gcc dot gnu.org
2021-08-03 8:25 ` [Bug target/101743] " marxin at gcc dot gnu.org
2021-08-03 8:49 ` crazylht at gmail dot com
2021-08-03 10:46 ` rguenth at gcc dot gnu.org
2021-08-04 9:43 ` cvs-commit at gcc dot gnu.org
2021-08-12 10:28 ` marxin at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).