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
On Tue, 12 Dec 2006, David Edelsohn wrote:
> Michael> Yes, but in this case you _forbid_ some operands (namely some specific
> Michael> hardware registers), the opposite of what's allowed by the above docu.
> Michael> The above docu refers to cases like allowing all constants and registers
> Michael> in the predicate, where the constraint then only allows restricted
> Michael> constants (and at least one register to make necessary reloads).
> The hardware does not allow some special registers.
Yes. But to cite the docu again:
"Operand predicates can allow operands that are not actually acceptable to
the hardware, ... "
So per docu you could _accept_ those non-allowable operands. It gives you
no leeway to also _forbid_ these, it simply doesn't say anything about
"... 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
> The constraints correctly restrict the operands. The predicate tries to
> match the constraints more closely than allowing all registers.
See my other mail to Ulrich about what predicates can do currently.
> I do not see how this contradicts the documentation.
Oh sorry. I didn't mean to imply that what you do contradicts the
documentation. I merely said that your specific citation doesn't
explicitely allow it, because it didn't apply to what you do. I think
what you do doesn't contradict any other documentation either, because
none of it speaks about your specific case. But this is a documentation
problem, if it were completely describing what the compiler is able to do
then it would contradict what you do.