Small fix for walking constructors

Richard Biener richard.guenther@gmail.com
Mon Sep 22 09:56:00 GMT 2014


On Mon, Sep 22, 2014 at 11:52 AM, Bernd Schmidt <bernds@codesourcery.com> wrote:
> On 09/22/2014 11:00 AM, Richard Biener wrote:
>>>
>>> It seems to me that walk_stmt_load_store_addr_ops is called on
>>> bogus input.  The function is supposed to be called on GIMPLE
>>> stmts and in GIMPLE stmts CONSTRUCTORs may _not_ have
>>> conversions in their elements.
>>>
>>> Please revert if you have applied already.
>>
>>
>> For the testcase I can indeed see
>>
>>
>>    <bb 2>:
>>    pin_3 = {(unsigned int) (long int) &g[16]};
>>
>> but that's invalid GIMPLE, unfortunately not caught by out checker.
>>
>> Please fix the root cause and add checking to verify_gimple_assign_single.
>
>
> Hmm, fix how exactly? What representation do you want for an initializer
> where a pointer is cast to an int (or to a different address space,
> something that will be possible with patches I'll submit in the near
> future)?

For the above

  _4 = (long int) &g[16];
  _5 = (unsigned int) _4;
  pin_3 = { _5 };

it's GIMPLE after all, not GENERIC.

Richard.

>
> Bernd
>



More information about the Gcc-patches mailing list