This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/53065] ICE replace_reg_with_saved_mem, at caller-save.c:1125
- From: "gjl at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 24 Apr 2012 11:49:33 +0000
- Subject: [Bug target/53065] ICE replace_reg_with_saved_mem, at caller-save.c:1125
- Auto-submitted: auto-generated
- References: <bug-53065-4@http.gcc.gnu.org/bugzilla/>
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.