On Wed, Jan 14, 2015 at 1:15 PM, Eric Botcazou <ebotca...@adacore.com> wrote:
> Hi,
>
> this is a follow-up to
>   https://gcc.gnu.org/ml/gcc-patches/2012-03/msg01890.html
> where Martin was fixing an Ada bootstrap failure on SPARC64.  After some
> discussion between Martin, Richard B. and me, the initial proposal evolved
> into a tweak to be applied to the existing call to set_mem_attributes in the
> normal_inner_ref case of expand_expr_real_1, first to avoid it and eventually
> to call it on the type instead of the expression.
>
> That was an oversight on my side, since the type is that of the expression and
> not that of the value spilled onto the stack, so it may not always be seen as
> having an alias set conflicting with that of the expression in Ada, e.g. if
> the expression is a an ARRAY_REF of a VCE to an array with a non-aliased
> component, see the attached testcase.  So the patch reverts the change and
> instead clears MEM_EXPR in the problematic case, as first proposed by Martin.
>
> Bootstrapped/regtested on x86_64-suse-linux, OK for mainline and 4.9 branch?

Ok.

Thanks,
Richard.

>
> 2015-01-14  Eric Botcazou  <ebotca...@adacore.com>
>
>         * expr.c (expand_expr_real_1) <normal_inner_ref>: Use the expression 
> to
>         set the memory attributes in all cases but clear MEM_EXPR if need be.
>
>
> 2015-01-14  Eric Botcazou  <ebotca...@adacore.com>
>
>         * testsuite/gnat.dg/opt47.adb: New test.
>
>
> --
> Eric Botcazou

Reply via email to