This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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);
 
   {

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]