This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/13722] [3.4/3.5 regression] [ia64] ICE in push_secondary_reload
- From: "rth at redhat dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 23 Jan 2004 08:24:51 -0000
- Subject: [Bug target/13722] [3.4/3.5 regression] [ia64] ICE in push_secondary_reload
- References: <20040117230657.13722.schwab@suse.de>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From rth at redhat dot com 2004-01-23 08:24 -------
Subject: Re: PR 13722 candidate fix
On Thu, Jan 22, 2004 at 11:43:40PM -0800, Zack Weinberg wrote:
> + out[0] = adjust_automodify_address
> + (in, DImode, gen_rtx_POST_INC (Pmode, base), 0);
> +
> + if (GET_CODE (XEXP (offset, 1)) == REG)
> + {
> + rtx reg = XEXP (offset, 1);
> + /* Tweak the index register, then emit the first move as
> + a POST_INC and the second as the original POST_MODIFY. */
> + emit_insn (GEN_FCN (add_optab->handlers[GET_MODE (reg)].insn_code)
> + (reg, reg, GEN_INT (-8)));
You can't modify the POST_MODIFY operand.
You need to modify the address register a third time, ie.
ld8 x = [a], 8
ld8 y = [a], -8
add a = r, a
or
ld8 x = [a], 8
ld8 y = [a], r
adds a = -8, a
r~
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13722