This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/70326] [6 Regression] ICE: RTL check: expected elt 3 type 'e' or 'u', have '0' (rtx note) in PATTERN, at rtl.h:1440
- From: "jakub at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 21 Mar 2016 08:59:03 +0000
- Subject: [Bug rtl-optimization/70326] [6 Regression] ICE: RTL check: expected elt 3 type 'e' or 'u', have '0' (rtx note) in PATTERN, at rtl.h:1440
- Auto-submitted: auto-generated
- References: <bug-70326-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70326
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2016-03-21
CC| |jakub at gcc dot gnu.org,
| |vmakarov at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Don't have our bisect seed built with --enable-checking=rtl, so can't bisect
this easily. But what I see is that this insn is marked as deleted during
LRA inheritance:
#0 set_insn_deleted (insn=0x7ffff184f240) at ../../gcc/emit-rtl.c:4116
#1 0x0000000000bd9c99 in lra_set_insn_deleted (insn=0x7ffff184f240) at
../../gcc/lra.c:256
#2 0x0000000000bf5188 in update_ebb_live_info (head=0x7ffff1726900,
tail=0x7ffff184f540) at ../../gcc/lra-constraints.c:5263
#3 0x0000000000bf7236 in lra_inheritance () at
../../gcc/lra-constraints.c:5816
#4 0x0000000000bdeb52 in lra (f=0x0) at ../../gcc/lra.c:2312
(previously
(insn 136 140 142 5 (parallel [
(set (reg/v:TI 116 [ u128_0 ])
(rotatert:TI (reg/v:TI 116 [ u128_0 ])
(const_int 1 [0x1])))
(clobber (reg:CC 17 flags))
(clobber (scratch:DI))
]) pr70326.c:14 601 {ix86_rotrti3_doubleword}
(expr_list:REG_UNUSED (reg/v:TI 116 [ u128_0 ])
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil))))
) and then remove_scratches
1968 for (i = 0; scratches.iterate (i, &loc); i++)
1969 {
1970 if (last != loc->insn)
1971 {
1972 last = loc->insn;
1973 id = lra_get_insn_recog_data (last);
1974 }
ICEs because calling lra_get_insn_recog_data on NOTE_INSN_DELETED is not
supported. Dunno if we should just ignore deleted insns here, or if we need to
adjust instead the insn that replaced them, ...