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

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |marxin at gcc dot gnu.org
   Last reconfirmed|                            |2020-06-01
             Status|UNCONFIRMED                 |NEW
           Keywords|needs-bisection             |
     Ever confirmed|0                           |1

--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> ---
> # -O1 with -fstrict-aliasing
> $ rm gccBug; g++ -o gccBug -Wall -Werror -O1 -fstrict-aliasing TestGccBug.cpp 
> && ./gccBug 

This configuration fails on GCC 8 and 9 branches, started with:

$   r9-4245-gdc3221e1e3d3a39d(20 Nov 2018 09:31)(rguent...@suse.de): [took:
0.754s] result: FAILED (1)
ERROR: Invalid idx: 0! Capacity: 4, number elements: 0
re PR middle-end/83215 (C++: struct with char-array assumed to alias with
everything)

2018-11-20  Richard Biener  <rguent...@suse.de>

        PR middle-end/83215
        * alias.c (component_uses_parent_alias_set_from): Remove
        alias-set zero and TYPE_TYPELESS_STORAGE case both already
        handled in other ways.

        * g++.dg/tree-ssa/pr83215.C: New testcase.

From-SVN: r266305

and is gone since:

  r10-5940-g6b8df3e421b56bb7(14 Jan 2020 09:47)(rguent...@suse.de): [took:
0.822s] result: OK
Test finished.
PR middle-end/93246 - missing alias subsets

Starting with the introduction of TYPE_TYPELESS_STORAGE the situation
of having a alias-set zero aggregate field became more common which
prevents recording alias-sets of fields of said aggregate as subset
of the outer aggregate.  component_uses_parent_alias_set_from in the
past fended off some of the issues with that but the alias oracles
use of the alias set of the base of an access path never appropriately
handled it.

The following makes it so that alias-sets of fields of alias-set zero
aggregate fields are still recorded as subset of the container.

2020-01-14  Richard Biener  <rguent...@suse.de>

        PR middle-end/93246
        * alias.c (record_component_aliases): Take superset to record
        into, recurse for alias-set zero fields.
        (record_component_aliases): New oveerload wrapping around the above.

        * g++.dg/torture/pr93246.C: New testcase.

Reply via email to