https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93246
--- Comment #15 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-9 branch has been updated by Richard Guenther <rgue...@gcc.gnu.org>: https://gcc.gnu.org/g:20e9d78543493f2f6aeef19af4cea54696247fc8 commit r9-8147-g20e9d78543493f2f6aeef19af4cea54696247fc8 Author: Richard Biener <rguent...@suse.de> Date: Tue Jan 14 08:43:32 2020 +0100 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.