diff options
author | Richard Guenther <rguenther@suse.de> | 2010-06-13 14:14:17 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-06-13 14:14:17 +0000 |
commit | 4a2ac96fb7e845adc573a3accfafdd534e179156 (patch) | |
tree | 35daaa9972d65e4f2ede54da386f2214ce5ac3cb /gcc/lto-streamer.c | |
parent | ba90d838257853023abae85f8c393eda41c50189 (diff) | |
download | gcc-4a2ac96fb7e845adc573a3accfafdd534e179156.tar.gz |
lto-streamer-in.c (lto_input_ts_type_tree_pointers): Do not stream but initialize TYPE_CANONICAL to NULL.
2010-06-13 Richard Guenther <rguenther@suse.de>
* lto-streamer-in.c (lto_input_ts_type_tree_pointers):
Do not stream but initialize TYPE_CANONICAL to NULL.
(lto_output_ts_type_tree_pointers): Do not stream TYPE_CANONICAL.
* gimple.c (gimple_types_compatible_p): Disregard
TYPE_STRUCTURAL_EQUALITY_P.
(gimple_register_type): Use TYPE_CANONICAL as cache.
* lto-streamer.c (lto_record_common_node): Zero TYPE_CANONICAL
before registering common types.
* config/i386/i386.c (ix86_function_arg_boundary): Do not
use TYPE_CANONICAL, instead use TYPE_MAIN_VARIANT.
* tree.h (TYPE_CANONICAL): Clarify documentation.
lto/
* lto.c (lto_fixup_type): Do not register or fixup TYPE_CANONICAL.
From-SVN: r160679
Diffstat (limited to 'gcc/lto-streamer.c')
-rw-r--r-- | gcc/lto-streamer.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/lto-streamer.c b/gcc/lto-streamer.c index a086d918004..5b0e7748b2f 100644 --- a/gcc/lto-streamer.c +++ b/gcc/lto-streamer.c @@ -674,7 +674,12 @@ lto_record_common_node (tree *nodep, VEC(tree, heap) **common_nodes, return; if (TYPE_P (node)) - *nodep = node = gimple_register_type (node); + { + /* Type merging will get confused by the canonical types as they + are set by the middle-end. */ + TYPE_CANONICAL (node) = NULL_TREE; + *nodep = node = gimple_register_type (node); + } /* Return if node is already seen. */ if (pointer_set_insert (seen_nodes, node)) |