Re: prevent (pre_inc ...) from satisfying "movhi" RTL template constraints

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Jul 22, 2017 at 2:43 AM, Segher Boessenkool
<segher@xxxxxxxxxxxxxxxxxxx> wrote:
> ("i" matches everything "n" does; did you mean "rmi"?  If you did
> mean "ri", you should use nonmemory_operand).

The "rni" is not a typo; I was uncertain of the difference between 'n' and 'i',
so I decided to put both of them in. From the definitions, I deduced that 'i'
can support symbolic constants and 'n' does not, and I wasn't sure what to
make of the following definition of 'n':

> ...Many systems cannot support assembly-time constants for operands
> less than a word wide. Constraints for these operands should use 'n' rather
> than 'i'.

> > My question is, why does the compiler match the above RTL code to
> > my "movhi" template? I have not specified an auto {pre,post}
> > inc/decremented ("<" or ">") operand constraint anywhere in the
> > "movhi" template; thus, surely the template match should fail, if the
> > RTL that is attempted to be matched contains such a *cremented
> > expression?
>
> Because your legitimate_address_p (or similar) is fine with it,
> I suspect.

The aforementioned RTL is not invalid; legitimate_address_p correctly
permits addressing of that form. What I would like to do is prevent such
RTL expressions from matching to the "movhi" template (which in my
mind, it shouldn't have matched in the first place), so that it only matches
the "pushhi" template.



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux