This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PATCH: Fix PR 30666 [4.3 Regression]
- From: "Doug Gregor" <doug dot gregor at gmail dot com>
- To: "GCC Patches" <gcc-patches at gcc dot gnu dot org>
- Date: Sat, 3 Mar 2007 14:47:38 -0500
- Subject: PATCH: Fix PR 30666 [4.3 Regression]
This little patch fixes PR tree-optimization/20336, a 4.3 regression
where the canonical types system was failing to keep the built-in
complex types canonical. The problem shows up as a warning now, but
would be a crash with --disable-checking.
Tested i686-pc-linux-gnu; no regressions.
Okay for mainline?
Cheers,
Doug
:ADDPATCH c:
2007-03-03 Douglas Gregor <doug.gregor@gmail.com>
PR tree-optimization/30666
* tree.c (build_common_tree_nodes_2): Use build_complex_type when
building predefined complex types, to preserve canonical types.
Index: tree.c
===================================================================
--- tree.c (revision 122510)
+++ tree.c (working copy)
@@ -7004,20 +7004,20 @@ build_common_tree_nodes_2 (int short_dou
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;
+ complex_integer_type_node = build_complex_type (integer_type_node);
+ TYPE_NAME (complex_integer_type_node) = NULL_TREE;
layout_type (complex_integer_type_node);
- complex_float_type_node = make_node (COMPLEX_TYPE);
- TREE_TYPE (complex_float_type_node) = float_type_node;
+ complex_float_type_node = build_complex_type (float_type_node);
+ TYPE_NAME (complex_float_type_node) = NULL_TREE;
layout_type (complex_float_type_node);
- complex_double_type_node = make_node (COMPLEX_TYPE);
- TREE_TYPE (complex_double_type_node) = double_type_node;
+ complex_double_type_node = build_complex_type (double_type_node);
+ TYPE_NAME (complex_double_type_node) = NULL_TREE;
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;
+ complex_long_double_type_node = build_complex_type (long_double_type_node);
+ TYPE_NAME (complex_long_double_type_node) = NULL_TREE;
layout_type (complex_long_double_type_node);
{