[Bug target/53065] ICE replace_reg_with_saved_mem, at caller-save.c:1125
gjl at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Apr 24 11:50:00 GMT 2012
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.
More information about the Gcc-bugs
mailing list