expand/recog/match question

Hendrik Greving hendrik.greving.intel@gmail.com
Tue Aug 27 16:28:00 GMT 2013


Would you say that basically you're supposed to support that in terms
of predicates so it 'passes' recog?

On Mon, Aug 26, 2013 at 10:50 PM, Ian Lance Taylor <iant@google.com> wrote:
> On Mon, Aug 26, 2013 at 7:51 PM, Hendrik Greving
> <hendrik.greving.intel@gmail.com> wrote:
>>
>> GCC 4.8.1 generates a movsi like this when compiling newlib with my backend:
>>
>> gdb) call debug_rtx(operand0)
>> (reg:SI 356)
>> (gdb) call debug_rtx(operand1)
>> (const:SI (plus:SI (symbol_ref:SI ("_ctype_locale_buf") <var_decl
>> 0x2aaaab15d558 _ctype_locale_buf>)
>>         (const_int 32 [0x20])))
>>
>> Any idea why the compiler tries to store such a weird construct? Is it
>> weird actually, or normal? I am trying to figure out if I either
>> allowed too much at some point (predicates?) or too little (do I need
>> to handle this with instructions?)?
>
> This seems normal enough to me.  It's basically
>     move reg356, $_ctype_locale_buf+32
> Here _ctype_locale_buf+32 is an immediate value which is known at link
> time.
>
> You will get this kind of thing from code like
>     p = &_ctype_locale_buf[32];
> if _ctype_locale_buf is a char array.
>
> Ian



More information about the Gcc-help mailing list