gimple.c (gimple_register_canonical_type): Use the main-variant leader for computing...
authorRichard Guenther <rguenther@suse.de>
Tue, 17 May 2011 10:04:23 +0000 (10:04 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 17 May 2011 10:04:23 +0000 (10:04 +0000)
2011-05-17  Richard Guenther  <rguenther@suse.de>

* gimple.c (gimple_register_canonical_type): Use the main-variant
leader for computing the canonical type.

From-SVN: r173826

gcc/ChangeLog
gcc/gimple.c

index 18243164f05965607c822a673af80e56b2923423..178f563754e52df1733ed33e0623f43ea2bbc778 100644 (file)
@@ -1,3 +1,8 @@
+2011-05-17  Richard Guenther  <rguenther@suse.de>
+
+       * gimple.c (gimple_register_canonical_type): Use the main-variant
+       leader for computing the canonical type.
+
 2011-05-17  Nick Clifton  <nickc@redhat.com>
 
        * config/rx/rx.c (rx_memory_move_cost): Include cost of register
index 488e9713ddce96b9bb292edae8a8f5b184a9a385..1daa13316fca47138c054abf75c5ef613e21bf31 100644 (file)
@@ -4856,19 +4856,14 @@ gimple_register_canonical_type (tree t)
   if (TYPE_CANONICAL (t))
     return TYPE_CANONICAL (t);
 
-  /* Always register the type itself first so that if it turns out
-     to be the canonical type it will be the one we merge to as well.  */
-  t = gimple_register_type (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);
 
-  /* Always register the main variant first.  This is important so we
-     pick up the non-typedef variants as canonical, otherwise we'll end
-     up taking typedef ids for structure tags during comparison.  */
-  if (TYPE_MAIN_VARIANT (t) != t)
-    gimple_register_canonical_type (TYPE_MAIN_VARIANT (t));
-
   if (gimple_canonical_types == NULL)
     gimple_canonical_types = htab_create_ggc (16381, gimple_canonical_type_hash,
                                              gimple_canonical_type_eq, 0);