This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/48806] ICE in reload_cse_simplify_operands, at postreload.c:403
- From: "kkojima at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 29 Apr 2011 00:23:36 +0000
- Subject: [Bug target/48806] ICE in reload_cse_simplify_operands, at postreload.c:403
- Auto-submitted: auto-generated
- References: <bug-48806-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48806
Kazumoto Kojima <kkojima at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2011.04.29 00:22:53
CC| |kkojima at gcc dot gnu.org
Ever Confirmed|0 |1
--- Comment #1 from Kazumoto Kojima <kkojima at gcc dot gnu.org> 2011-04-29 00:22:53 UTC ---
Before reload pass, the insns causing problem look like as
...
(insn 131 22 23 4 (set (reg/f:SI 231)
(reg/v/f:SI 167 [ ctx ])) foo.c:74 176 {movsi_ie}
(nil))
(insn 23 131 24 4 (set (reg/f:SI 168 [ D.2106 ])
(mem/s/f/j:SI (post_inc:SI (reg/f:SI 231)) [0 ctx_12->cc_ic+0 S4 A32]))
foo.c:74 176 {movsi_ie}
(expr_list:REG_INC (reg/f:SI 231)
(nil)))
...
When reloading, with -O1, IRA gives fr13 as r231 and these insns
are reloaded like as
(insn 131 154 155 3 (set (reg:SI 1 r1)
(mem/c:SI (plus:SI (reg/f:SI 15 r15)
(const_int 12 [0xc])) [0 %sfp+-52 S4 A32])) foo.c:74 176 {mo
vsi_ie}
(nil))
(insn 155 131 156 3 (set (reg:SI 150 fpul)
(reg:SI 1 r1)) foo.c:74 176 {movsi_ie}
(nil))
(insn 156 155 157 3 (set (reg/f:SI 77 fr13 [231])
(reg:SI 150 fpul)) foo.c:74 176 {movsi_ie}
(nil))
(insn 157 156 159 3 (set (reg:SI 2 r2)
(reg/f:SI 77 fr13 [231])) foo.c:74 176 {movsi_ie}
(nil))
(insn 159 157 160 3 (set (reg:SI 2 r2)
(plus:SI (reg:SI 2 r2)
(const_int 4 [0x4]))) foo.c:74 35 {*addsi3_compact}
(nil))
Insn 157 is illegal because SH has no move insns between frN and
rM directly and the error occurs.
It seems this issue is two-fold, though both are beyond me.
The one problem would be that reload doesn't validate some move
insns generated during POST_INC/PRE_DEC handling. The other one
is that RA chooses a floating point register as the pointer
register with -O1. The later looks like the same issue as PR48596.