http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53065
Georg-Johann Lay <gjl at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |pinskia at gcc dot gnu.org Build|4.7.0 | --- Comment #3 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-04-24 11:49:33 UTC --- Would you please explain why this is a target issue? The ICE occurs while caller-save.c:save_call_clobbered_regs:858 processes the following: (debug_insn 34 33 35 2 (var_location:SF y (concatn:SF [ (reg:SI 16 r16) (reg:SI 17 r17) (mem/c:QI (plus:HI (reg/f:HI 32 __SP_L__) (const_int 13 [0xd])) [29 S1 A8]) (mem/c:QI (plus:HI (reg/f:HI 32 __SP_L__) (const_int 14 [0xe])) [29 S1 A8]) ])) AHRS.cpp:267 -1 (nil)) save_mode[16] = SImode save_mode[17] = VOIDmode replace_reg_with_saved_mem then sees VOIDmode for R17 This looks wrong because R16 overlaps R17. All hard registers are 8 bits wide, i.e. the next register after (reg:SI 16) is R20. Obviously some pass generates a bad debug_insn and cannot process it. The backend does not generate such insns.