[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

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Mar 21 08:59:00 GMT 2016


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, ...


More information about the Gcc-bugs mailing list