aboutsummaryrefslogtreecommitdiff
path: root/gcc/alias.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/alias.c')
-rw-r--r--gcc/alias.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/alias.c b/gcc/alias.c
index c03ff03..8064b8e 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -586,6 +586,13 @@ get_alias_set (tree t)
return 0;
}
+ /* For non-addressable fields we return the alias set of the
+ outermost object that could have its address taken. If this
+ is an SFT use the precomputed value. */
+ if (TREE_CODE (t) == STRUCT_FIELD_TAG
+ && SFT_NONADDRESSABLE_P (t))
+ return SFT_ALIAS_SET (t);
+
/* Otherwise, pick up the outermost object that we could have a pointer
to, processing conversions as above. */
while (component_uses_parent_alias_set (t))