On Fri, 9 Dec 2011, Richard Guenther wrote:

> 
> This fixes PR46796 by making sure the types in the type variant chain
> can be looked up again using get_qualified_type.
> 
> LTO bootstrap and regtest running on x86_64-unknown-linux-gnu.

Actually I didn't like that patch very much and here is a much
simpler and more localized variant - simply make sure the TYPE_NAMEs
are entered into the streamer cache at the time we pre-load the
type nodes.

LTO bootstrap and regtest running on x86_64-unknown-linux-gnu.

Richard.

2011-12-12  Richard Guenther  <rguent...@suse.de>

        PR lto/46796
        * tree-streamer.c (record_common_node): Also pre-load TYPE_NAMEs.

Index: gcc/tree-streamer.c
===================================================================
--- gcc/tree-streamer.c (revision 182220)
+++ gcc/tree-streamer.c (working copy)
@@ -277,6 +277,15 @@ record_common_node (struct streamer_tree
       for (f = TYPE_FIELDS (node); f; f = TREE_CHAIN (f))
        record_common_node (cache, f);
     }
+
+  /* To make qualified type variants pass the check_qualified_type test
+     we have to make sure to properly share TYPE_NAME.  Do so by also
+     pre-loading that to the cache.  See PR46796.
+     ???  To properly preserve name differences from different frontends
+     we should stop pre-loading those type nodes to the cache competely
+     instead.  */
+  if (TYPE_P (node))
+    record_common_node (cache, TYPE_NAME (node));
 }
 
 

Reply via email to