aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorDouglas Gregor <doug.gregor@gmail.com>2007-03-29 14:11:28 +0000
committerDoug Gregor <dgregor@gcc.gnu.org>2007-03-29 14:11:28 +0000
commite89886a0eaf0ff8b3642bba7b88b3e9353c2b714 (patch)
tree71b8132557308fe006fa303079733b84731aa6bf /gcc/tree.c
parent2a42f4aa198bf06b093a76d38dd29a49324d904e (diff)
downloadgcc-e89886a0eaf0ff8b3642bba7b88b3e9353c2b714.zip
gcc-e89886a0eaf0ff8b3642bba7b88b3e9353c2b714.tar.gz
gcc-e89886a0eaf0ff8b3642bba7b88b3e9353c2b714.tar.bz2
re PR middle-end/30666 (warning: canonical types differ for identical types double __complex__ and double __complex__)
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
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index c0cd2ae..0ea18b2 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -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 ();