re PR middle-end/30666 (warning: canonical types differ for identical types double...
authorDouglas Gregor <doug.gregor@gmail.com>
Thu, 29 Mar 2007 14:11:28 +0000 (14:11 +0000)
committerDoug Gregor <dgregor@gcc.gnu.org>
Thu, 29 Mar 2007 14:11:28 +0000 (14:11 +0000)
2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>

PR tree-optimization/30666
* tree.c (build_complex_type): When creating type names for DWARF2
debug info, create TYPE_DECLs for TYPE_NAME instead of
IDENTIFIER_NODEs.
(build_common_tree_nodes_2): Use build_complex_type when building
predefined complex types, to preserve canonical types.

From-SVN: r123330

gcc/ChangeLog
gcc/tree.c

index ed51488..d6c580a 100644 (file)
@@ -1,3 +1,12 @@
+2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
+
+       PR tree-optimization/30666
+       * tree.c (build_complex_type): When creating type names for DWARF2
+       debug info, create TYPE_DECLs for TYPE_NAME instead of
+       IDENTIFIER_NODEs.
+       (build_common_tree_nodes_2): Use build_complex_type when building
+       predefined complex types, to preserve canonical types.
+
 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
 
        * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
index c0cd2ae..0ea18b2 100644 (file)
@@ -5826,7 +5826,7 @@ build_complex_type (tree component_type)
        name = 0;
 
       if (name != 0)
-       TYPE_NAME (t) = get_identifier (name);
+       TYPE_NAME (t) = build_decl (TYPE_DECL, get_identifier (name), t);
     }
 
   return build_qualified_type (t, TYPE_QUALS (component_type));
@@ -7004,21 +7004,10 @@ build_common_tree_nodes_2 (int short_double)
   TYPE_MODE (dfloat128_type_node) = TDmode;
   dfloat128_ptr_type_node = build_pointer_type (dfloat128_type_node);
 
-  complex_integer_type_node = make_node (COMPLEX_TYPE);
-  TREE_TYPE (complex_integer_type_node) = integer_type_node;
-  layout_type (complex_integer_type_node);
-
-  complex_float_type_node = make_node (COMPLEX_TYPE);
-  TREE_TYPE (complex_float_type_node) = float_type_node;
-  layout_type (complex_float_type_node);
-
-  complex_double_type_node = make_node (COMPLEX_TYPE);
-  TREE_TYPE (complex_double_type_node) = double_type_node;
-  layout_type (complex_double_type_node);
-
-  complex_long_double_type_node = make_node (COMPLEX_TYPE);
-  TREE_TYPE (complex_long_double_type_node) = long_double_type_node;
-  layout_type (complex_long_double_type_node);
+  complex_integer_type_node = build_complex_type (integer_type_node);
+  complex_float_type_node = build_complex_type (float_type_node);
+  complex_double_type_node = build_complex_type (double_type_node);
+  complex_long_double_type_node = build_complex_type (long_double_type_node);
 
   {
     tree t = targetm.build_builtin_va_list ();