On Fri, Jul 11, 2008 at 6:49 PM, Olivier Hainque <[EMAIL PROTECTED]> wrote:
> Richard Guenther wrote:
>> A doc extension is ok.
>
>  Understood, as soon as we agree on what it should say :)
>
>> > We'd also like to get to an agreement on what TREE_READONLY means on a
>> > decl with non static storage, if anything at all.
>>
>> Good question...
>
>> >  Ada front-end sets TREE_RO and DECL_INITIAL on a stack decl with
>> >  initializer but never assigned later on,
>
>> >  gimplify_decl_expr turns this into an explicit assignment,
>> >  clears DECL_INITIAL and leaves TREE_RO set (creating an
>> >  unexpected assignment with TREE_RO on the lhs).
>>
>> ... I suggest to not clear DECL_INITIAL here.
>
>  Leaving an assignment with TREE_RO on the lhs ?
>
>  Other options we thought of were
>
>   Don't set TREE_RO on the decl if !TREE_STATIC, in gigi (we might
>   decide it doesn't make sense and document accordingly).

That would work.

>   Clear TREE_RO in gimplify_decl_expr. We could leave
>   DECL_INITIAL there in this case as well.

This as well.

>> >  later middle-end passes (e.g. tree-sra) turn this into an
>> >  assignment from 0 (null DECL_INITIAL).
>
>> But in the end tree-sra shouldn't try to look at DECL_INITIAL from
>> non-static storage.
>
>  Sorry, this part was confused on my side: the issue we had with
>  sra was with a static rhs (global Ada constant integer), of value 1,
>  marked TREE_RO and without DECL_INITIAL.

So what happened?  The code in tree-sra looking at DECL_INITIAL looks fine.

Richard.

Reply via email to