]> gcc.gnu.org Git - gcc.git/commit
PR middle-end/93246 - missing alias subsets
authorRichard Biener <rguenther@suse.de>
Tue, 14 Jan 2020 07:43:32 +0000 (08:43 +0100)
committerRichard Biener <rguenther@suse.de>
Fri, 14 Feb 2020 10:15:47 +0000 (11:15 +0100)
commit1b169f1ea0c9fab7712ede65edb0ffb6e021ad7c
treeede6af301d5863dfde0a350e94f2573646132b25
parente6a329e42d127a0e6094250ace5ea147d3cc9550
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  <rguenther@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.
gcc/ChangeLog
gcc/alias.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/torture/pr93246.C [new file with mode: 0644]
This page took 0.066434 seconds and 6 git commands to generate.