This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] Fix PR middle-end/28690, indexed load/store performance + reload bug
- From: Michael Matz <matz at suse dot de>
- To: David Edelsohn <dje at watson dot ibm dot com>
- Cc: Ulrich Weigand <uweigand at de dot ibm dot com>, Dale Johannesen <dalej at apple dot com>, Peter Bergner <bergner at vnet dot ibm dot com>, gcc-patches at gcc dot gnu dot org, Ulrich Weigand <ulrich dot weigand at de dot ibm dot com>, Andrew Pinski <pinskia at gmail dot com>
- Date: Tue, 12 Dec 2006 15:49:26 +0100 (CET)
- Subject: Re: [PATCH] Fix PR middle-end/28690, indexed load/store performance + reload bug
- References: <200612121140.kBCBeUYD009654@d12av02.megacenter.de.ibm.com> <200612121439.kBCEduV33268@makai.watson.ibm.com>
On Tue, 12 Dec 2006, David Edelsohn wrote:
> Ulrich> I guess one question is, why do you need that predicate in the
> Ulrich> first place, and don't just use register_operand? In
> Ulrich> particular, given the issues discussed in this thread, the
> Ulrich> predicate doesn't appear to have the intended effect anyway ...
> As stated in the GCC documentation of predicates:
> "Operand predicates can allow operands that are not actually acceptable
> to the hardware, as long as the constraints give reload the ability to
> fix them up. However, GCC will usually generate better code if the
> predicates specify the requirements of the machine instructions as
> closely as possible."
Yes, but in this case you _forbid_ some operands (namely some specific
hardware registers), the opposite of what's allowed by the above docu.
The above docu refers to cases like allowing all constants and registers
in the predicate, where the constraint then only allows restricted
constants (and at least one register to make necessary reloads).
I tried to find docu where what I say here is specified (I thought I
remembered that there was such in the past) but I failed, so I'm