diff options
Diffstat (limited to 'gcc/alias.c')
-rw-r--r-- | gcc/alias.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/alias.c b/gcc/alias.c index cc31ee0..efd89ce 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -613,6 +613,10 @@ component_uses_parent_alias_set_from (const_tree t) { const_tree found = NULL_TREE; + if (AGGREGATE_TYPE_P (TREE_TYPE (t)) + && TYPE_TYPELESS_STORAGE (TREE_TYPE (t))) + return const_cast <tree> (t); + while (handled_component_p (t)) { switch (TREE_CODE (t)) @@ -883,6 +887,10 @@ get_alias_set (tree t) variant. */ t = TYPE_MAIN_VARIANT (t); + if (AGGREGATE_TYPE_P (t) + && TYPE_TYPELESS_STORAGE (t)) + return 0; + /* Always use the canonical type as well. If this is a type that requires structural comparisons to identify compatible types use alias set zero. */ |