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

Reply via email to