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: "zack at codesourcery dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 22 Jan 2004 02:26:39 -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 zack at codesourcery dot com 2004-01-22 02:26 -------
Subject: Re: [3.4/3.5 regression] [ia64] ICE in
push_secondary_reload
"wilson at specifixinc dot com" <gcc-bugzilla@gcc.gnu.org> writes:
> I see Zack has left yet another IA-64 turd for me to clean up. Sigh.
... excuse me for having bigger problems on my plate right now. Not
to mention that none of this is reproducible on any target I can
conveniently test on.
> The main problem with Zack's patch is that he replaced a null
> predicate in the reload_{in,out}* patterns with a memory_operand
> predicate. This doesn't work. push_secondary_reloads tries to
> verify that the operands are OK for the secondary reload pattern.
> However, for a MEM, this means that we are passing an operand to the
> predicate that may appear to be invalid, but is valid because it has
> already been reloaded.
I ... see.
> However, I think there are other problems. Zack "fixed" the
> secondary reload patterns to use DImode instead of TImode for
> operand2. Anyone who knows how these patterns work knows that you
> have to allocate 2 registers just in case the scratch operand
> overlaps one of the other operands. Practically all ports define
> the patterns this way.
This is insane. Clearly the bug is that overlapping operands can
occur in the first place.
zw
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13722