This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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 
that case.

"... 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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]