> +  /* Registers that can not be allocated for this allocno, for example 
> because
> +     there is an ASM_OPERANDS with that register as an output and this pseudo
> +     as an earlyclobber input.  */
> +  HARD_REG_SET forbidden_regs;

You mean "with that register as an earlyclobber output and this pseudo as an
input".  There is no such thing as an earlyclobber input.  ;-)

> +asm_constraint_earlyclobber (const char *constraint)
> +{
> +  while (*constraint != 0)
> +    {
> +      if (*constraint == '&')
> +     return true;
> +      ++constraint;
> +    }
> +  return false;
> +}

This would be

  return strchr (constraint, '&') != NULL;

but we don't actually have to search the whole string, surely.  I'd be
surprised if early clobber could be anywhere except at the start of the 
constraint.

> +       if (REG_P (op))
> +         {
> +           unsigned int regno = REGNO (op);
> +           if (regno < FIRST_PSEUDO_REGISTER)
> +             for (int j = 0; j < noperands; j++)
> +               {
> +                 rtx op2;
> +                 if (j == i)
> +                   continue;
> +                 op2 = operands[j];
> +                 if (REG_P (op2) && REGNO (op2) == regno)
> +                   return 0;
> +               }
> +         }

reg_overlap_mentioned_p.



r~

Reply via email to