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