https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63633
Bug ID: 63633 Summary: [avr] internal compiler error: urecognizable insn with multi insns Product: gcc Version: 4.9.2 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: gjl at gcc dot gnu.org Target: avr void ice_mult (int x) { register long reg asm ("22"); __asm volatile (" " :: "r" (reg = 0x12345 * x)); } This programm raises ICE when compiler with $ avr-gcc-4.9.2 -S -Os -mmcu=avr51 Some pass is propagating hard reg:SI 22 to SET_DEST of insn 7 even though that register is covered by clobber reg:DI 18 (DI 18 covers R18...R25): -.c: In function 'ice_mult': -.c:5:1: error: unrecognizable insn: } ^ (insn 7 6 8 2 (parallel [ (set (reg/v:SI 22 r22 [ reg ]) (mult:SI (reg:SI 45 [ D.1458 ]) (const_int 74565 [0x12345]))) (clobber (reg:HI 26 r26)) (clobber (reg:DI 18 r18)) ]) fun-eval-avr.c:4 -1 (nil)) -.c:5:1: internal compiler error: in extract_insn, at recog.c:2202 -.c:5:1: internal compiler error: Segmentation fault