diff options
author | Richard Guenther <rguenther@suse.de> | 2011-05-24 12:40:28 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-05-24 12:40:28 +0000 |
commit | 96d91dcf6a4e2130e6f0f72387f90bc31a9f992c (patch) | |
tree | 4d0ee86ac31210e10293afa2014bd8a23fbabb5f /gcc/alias.c | |
parent | 1ed1641d71f9fe8380d3edd80e1dbd17998543f5 (diff) | |
download | gcc-96d91dcf6a4e2130e6f0f72387f90bc31a9f992c.zip gcc-96d91dcf6a4e2130e6f0f72387f90bc31a9f992c.tar.gz gcc-96d91dcf6a4e2130e6f0f72387f90bc31a9f992c.tar.bz2 |
re PR bootstrap/49078 (LTO bootstrap failed with bootstrap-profiled)
2011-05-24 Richard Guenther <rguenther@suse.de>
PR bootstrap/49078
* gimple.c (gimple_register_canonical_type): Revert
previous change.
* alias.c (get_alias_set): Only assert that TYPE_CANONICAL
does not for a tree for the case where it matters. Cache
pointer-type alias-sets.
From-SVN: r174113
Diffstat (limited to 'gcc/alias.c')
-rw-r--r-- | gcc/alias.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/gcc/alias.c b/gcc/alias.c index c2a2c9d..b32e6b3 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -709,10 +709,8 @@ get_alias_set (tree t) t = TYPE_CANONICAL (t); - /* Canonical types shouldn't form a tree nor should the canonical - type require structural equality checks. */ - gcc_checking_assert (TYPE_CANONICAL (t) == t - && !TYPE_STRUCTURAL_EQUALITY_P (t)); + /* The canonical type should not require structural equality checks. */ + gcc_checking_assert (!TYPE_STRUCTURAL_EQUALITY_P (t)); /* If this is a type with a known alias set, return it. */ if (TYPE_ALIAS_SET_KNOWN_P (t)) @@ -813,11 +811,19 @@ get_alias_set (tree t) That's simple and avoids all the above problems. */ else if (POINTER_TYPE_P (t) && t != ptr_type_node) - return get_alias_set (ptr_type_node); + set = get_alias_set (ptr_type_node); /* Otherwise make a new alias set for this type. */ else - set = new_alias_set (); + { + /* Each canonical type gets its own alias set, so canonical types + shouldn't form a tree. It doesn't really matter for types + we handle specially above, so only check it where it possibly + would result in a bogus alias set. */ + gcc_checking_assert (TYPE_CANONICAL (t) == t); + + set = new_alias_set (); + } TYPE_ALIAS_SET (t) = set; |