aboutsummaryrefslogtreecommitdiff
path: root/gcc/alias.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/alias.c')
-rw-r--r--gcc/alias.c8
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. */