https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106101

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |segher at gcc dot gnu.org
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2022-06-27
           Keywords|                            |needs-bisection
     Ever confirmed|0                           |1

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Program received signal SIGSEGV, Segmentation fault.
0x00000000021932ef in reg_bitfield_target_p (x=0x7ffff6a4ee10,
body=0x7ffff6a4e450) at /space/rguenther/src/gcc/gcc/combine.cc:14142
14142         if (GET_CODE (target) == SUBREG)
(gdb) p target
$1 = (rtx) 0xafafaf0100000047

one frame up:

(gdb) p debug_rtx (place)
(insn 24 52 25 4 (set (strict_low_part (reg/v:SI 71 [ yyval ]))
        (mem/f:SI (plus:DI (reg:DI 85)
                (const_int 4 [0x4])) [2 *_3+4 S4 A32])) "/tmp/y.tab.i":41:23
1485 {movstrictsi}
     (nil))

static int
reg_bitfield_target_p (rtx x, rtx body)
{
...
      else if (GET_CODE (dest) == STRICT_LOW_PART)
        target = SUBREG_REG (XEXP (dest, 0));

but the strict_low_part doesn't contain a SUBREG ...!?  Adding a check to
that avail would of course fix this.

It's all ancient code though...

Reply via email to