https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120423
Georg-Johann Lay <gjl at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Known to work| |14.2.0 --- Comment #2 from Georg-Johann Lay <gjl at gcc dot gnu.org> --- With -da, the .ira dump has the following paradoxical subreg: (insn 9 6 10 2 (set (reg:HI 50 [ _3 ]) (ashift:HI (subreg:HI (mem/c:QI (symbol_ref:HI ("val") [flags 0x2] <var_decl 0x7fcd9e0f2980 val>) [0 val+0 S1 A8]) 0) (const_int 8 [0x8]))) "pr120423-2.c":12:16 667 {ashlhi3} Then, .reload has: Reloads for insn # 9 Reload 0: reload_in (QI) = (mem/c:QI (symbol_ref:HI ("val") [flags 0x2] <var_decl 0x7f53023f9980 val>) [0 val+0 S1 A8]) GENERAL_REGS, RELOAD_FOR_INPUT (opnum = 1) reload_in_reg: (mem/c:QI (symbol_ref:HI ("val") [flags 0x2] <var_decl 0x7f53023f9980 val>) [0 val+0 S1 A8]) reload_reg_rtx: (reg:QI 31 r31) and transforms insn 9 to: (insn 9 18 10 2 (set (reg:HI 18 r18 [orig:50 _3 ] [50]) (ashift:HI (reg:HI 31 r31) (const_int 8 [0x8]))) "pr120423-2.c":12:16 667 {ashlhi3} which is obvously wrong since there is HImode in an odd regiser number. This triggers the ICE in postreload.