* lto-streamer-in.c (lto_read_body_or_constructor): Set TYPE_CANONICAL
commitb89bfdca5bbfdd456cc22b8ae8a74d740f2b971d
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Nov 2015 19:35:38 +0000 (24 19:35 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Nov 2015 19:35:38 +0000 (24 19:35 +0000)
tree2720a21d3a42af746351fb5f5e419414f55e6da8
parent6c59e0ffaa5e7040d15aa36fd686a0d1da24c724
* lto-streamer-in.c (lto_read_body_or_constructor): Set TYPE_CANONICAL
only for types where LTO sets them.
* tree.c (build_array_type_1): Do ont set TYPE_CANONICAL for LTO.
(make_vector_type): Likewise.
(gimple_canonical_types_compatible_p): Use canonical_type_used_p.
* tree.h (canonical_type_used_p): New inline.
* alias.c (get_alias_set): Handle structural equality for all
types that pass canonical_type_used_p.
(record_component_aliases): Look through all types with
record_component_aliases for possible pointers; sanity check that
the alias sets match.

* lto.c (iterative_hash_canonical_type): Recruse for all types
which pass !canonical_type_used_p.
(gimple_register_canonical_type_1): Sanity check we do not compute
canonical type of anything with !canonical_type_used_p.
(gimple_register_canonical_type): Skip all types that are
!canonical_type_used_p

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230835 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/alias.c
gcc/lto-streamer-in.c
gcc/lto/ChangeLog
gcc/lto/lto.c
gcc/tree.c
gcc/tree.h