This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix PR46796
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 <rguenther@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));
}