https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69368

--- Comment #34 from rguenther at suse dot de <rguenther at suse dot de> ---
On February 8, 2016 4:49:20 PM GMT+01:00, "alalaw01 at gcc dot gnu.org"
<gcc-bugzi...@gcc.gnu.org> wrote:
>https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69368
>
>alalaw01 at gcc dot gnu.org changed:
>
>           What    |Removed                     |Added
>----------------------------------------------------------------------------
>             Status|RESOLVED                    |REOPENED
>         Resolution|FIXED                       |---
>
>--- Comment #33 from alalaw01 at gcc dot gnu.org ---
>(In reply to rguent...@suse.de from comment #31)
>> 
>> Thus a "fix" for the case where treating a[i] as a[0] is the issue
>> would be
>> 
>> Index: gcc/tree-dfa.c
>> ===================================================================
>> --- gcc/tree-dfa.c      (revision 233172)
>> +++ gcc/tree-dfa.c      (working copy)
>> @@ -617,7 +617,11 @@ get_ref_base_and_extent (tree exp, HOST_
>>        if (maxsize == -1
>>           && DECL_SIZE (exp)
>>           && TREE_CODE (DECL_SIZE (exp)) == INTEGER_CST)
>> -       maxsize = wi::to_offset (DECL_SIZE (exp)) - bit_offset;
>> +       {
>> +         maxsize = wi::to_offset (DECL_SIZE (exp)) - bit_offset;
>> +         if (maxsize == size)
>> +           maxsize = -1;
>> +       }
>>      }
>>    else if (CONSTANT_CLASS_P (exp))
>>      {
>
>So is there a case where we want this for C ?
>
>If I declare a struct with a VLA, and access it through a pointer - GCC
>recognizes the VLA idiom and keeps the accesses. If I access it from a
>decl,
>yes we optimize away the out-of-bounds accesses (in FRE, long before we
>reach
>the tree-ssa-scopedtables changes). So OK, if I access it from a extern
>or
>__attribute__((weak) decl, which I then get the linker to replace with
>a bigger
>decl, then I get "wrong" code (it ignores the extra elements in the
>bigger
>decl) - but I'd say that was invalid code.
>
>So if this is Fortran-only, we probably have to hook off --std=legacy,
>right?

Yes.

Reply via email to