This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] LTO canoical type merging disentangle
- From: Richard Guenther <rguenther at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 31 May 2011 16:22:34 +0200 (CEST)
- Subject: [PATCH] LTO canoical type merging disentangle
This disentangles canonical type merging from type merging.
LTO bootstrapped and tested on x86_64-unknown-linux-gnu, SPEC 2k6 LTO
tested, committed.
Richard.
2011-05-31 Richard Guenther <rguenther@suse.de>
* gimple.c (gimple_register_canonical_type): Do not register
any types via gimple_register_type.
Index: gcc/gimple.c
===================================================================
--- gcc/gimple.c (revision 174478)
+++ gcc/gimple.c (working copy)
@@ -4749,21 +4749,12 @@ tree
gimple_register_canonical_type (tree t)
{
void **slot;
- tree orig_t = t;
gcc_assert (TYPE_P (t));
if (TYPE_CANONICAL (t))
return TYPE_CANONICAL (t);
- /* Use the leader of our main variant for determining our canonical
- type. The main variant leader is a type that will always
- prevail. */
- t = gimple_register_type (TYPE_MAIN_VARIANT (t));
-
- if (TYPE_CANONICAL (t))
- return TYPE_CANONICAL (t);
-
if (gimple_canonical_types == NULL)
gimple_canonical_types = htab_create_ggc (16381, gimple_canonical_type_hash,
gimple_canonical_type_eq, 0);
@@ -4783,9 +4774,6 @@ gimple_register_canonical_type (tree t)
*slot = (void *) t;
}
- /* Also cache the canonical type in the non-leaders. */
- TYPE_CANONICAL (orig_t) = t;
-
return t;
}