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.