This is the mail archive of the gcc-patches@gcc.gnu.org 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 i386]: Expand sibling-tail-calls via accumulator register


On 05/28/14 15:52, Jakub Jelinek wrote:
On Wed, May 28, 2014 at 05:28:31PM -0400, Kai Tietz wrote:
Yes, I missed the plus-part.

I am just running bootstrap with regression testing for altering predicate to:

(define_predicate "sibcall_memory_operand"
   (match_operand 0 "memory_operand")
{
   op = XEXP (op, 0);

   if (GET_CODE (op) == CONST)
     op = XEXP (op, 0);
   if (GET_CODE (op) == PLUS && CONSTANT_P (XEXP (op, 0)))
     op = XEXP (op, 1);

Why not get rid of all the above 4 lines and just keep:

   return CONSTANT_P (op);

?  CONST matches CONSTANT_P, and what is inside of CONST should be
fine, and (plus (symbol_ref) (const_int)) not surrounded by CONST
ir invalid.
Haven't we recently had problems with being overly accepting of stuff inside CONST when using the CONST for address expressions. ISTM we should only accept what the processor supports here.

jeff


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