This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/47744] [x32] ICE: in reload_cse_simplify_operands, at postreload.c:403
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 17 Jul 2011 20:07:48 +0000
- Subject: [Bug target/47744] [x32] ICE: in reload_cse_simplify_operands, at postreload.c:403
- Auto-submitted: auto-generated
- References: <bug-47744-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47744
--- Comment #14 from Uros Bizjak <ubizjak at gmail dot com> 2011-07-17 20:07:38 UTC ---
(In reply to comment #13)
> Looking at the example in Comment #0, RTX expansion pass generates:
>
> ;; D.2794_77 = &q + D.2793_76;
>
> (insn 84 83 85 (parallel [
> (set (reg:DI 173)
> (plus:DI (reg/f:DI 54 virtual-stack-vars)
> (const_int -160 [0xffffffffffffff60])))
> (clobber (reg:CC 17 flags))
> ]) pr47744.c:5 -1
> (nil))
>
> Why 64bit virtual register to hold &q _address_?
Later, reg:DI 173 gets propagated into (insn 89):
(insn 89 87 90 3 (set (reg:SI 177)
(plus:SI (plus:SI (mult:SI (reg:SI 175)
(const_int 8 [0x8]))
(subreg:SI (reg/f:DI 20 frame) 0))
(const_int -160 [0xffffffffffffff60]))) pr47744.c:5 250
{*lea_2_x32}
(expr_list:REG_DEAD (reg:SI 175)
(nil)))
which chokes reload when trying to eliminate frame pointer:
(insn 89 87 90 3 (set (reg:SI 39 r10 [177])
(plus:SI (plus:SI (mult:SI (reg:SI 0 ax [175])
(const_int 8 [0x8]))
(subreg:SI (plus:DI (reg/f:DI 7 sp)
(const_int 200 [0xc8])) 0))
(const_int -160 [0xffffffffffffff60]))) pr47744.c:5 250
{*lea_2_x32}
(nil))