OSDN Git Service

gcc/cp
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 31 May 2007 08:58:47 +0000 (08:58 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 31 May 2007 08:58:47 +0000 (08:58 +0000)
2007-05-31  Paolo Carlini  <pcarlini@suse.de>

PR c++/32158
* semantics.c (finish_trait_expr): Complete the types.

gcc/testsuite
2007-05-31  Paolo Carlini  <pcarlini@suse.de>

PR c++/32158
* g++.dg/ext/is_pod_incomplete.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125217 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ext/is_pod_incomplete.C [new file with mode: 0644]

index 22171e4..885af4f 100644 (file)
@@ -1,3 +1,8 @@
+2007-05-31  Paolo Carlini  <pcarlini@suse.de>
+
+       PR c++/32158
+       * semantics.c (finish_trait_expr): Complete the types.
+
 2007-05-30  Russell Yanofsky <russ@yanofsky.org>
             Douglas Gregor <doug.gregor@gmail.com>
             Pedro Lamarao <pedro.lamarao@mndfck.org>
index 631f5e8..4a9ea8c 100644 (file)
@@ -4177,11 +4177,15 @@ finish_trait_expr (cp_trait_kind kind, tree type1, tree type2)
       return trait_expr;
     }
 
+  complete_type (type1);
+  if (type2)
+    complete_type (type2);
+
   /* The only required diagnostic.  */
   if (kind == CPTK_IS_BASE_OF
       && NON_UNION_CLASS_TYPE_P (type1) && NON_UNION_CLASS_TYPE_P (type2)
       && !same_type_ignoring_top_level_qualifiers_p (type1, type2)
-      && !COMPLETE_TYPE_P (complete_type (type2)))
+      && !COMPLETE_TYPE_P (type2))
     {
       error ("incomplete type %qT not allowed", type2);
       return error_mark_node;
index 045a336..70853cd 100644 (file)
@@ -1,4 +1,9 @@
-2007-05-31  Paul Thomas  <pault@gcc.gnu.org>\r\r PR fortran/32103\r       * gfortran.dg/module_equivalence_3.f90: New test.\r\r2007-05-30  Russell Yanofsky <russ@yanofsky.org>
+2007-05-31  Paolo Carlini  <pcarlini@suse.de>
+
+       PR c++/32158
+       * g++.dg/ext/is_pod_incomplete.C: New.
+
+2007-05-31  Russell Yanofsky <russ@yanofsky.org>
             Douglas Gregor <doug.gregor@gmail.com>
             Pedro Lamarao <pedro.lamarao@mndfck.org>
             Howard Hinnant <howard.hinnant@gmail.com>
diff --git a/gcc/testsuite/g++.dg/ext/is_pod_incomplete.C b/gcc/testsuite/g++.dg/ext/is_pod_incomplete.C
new file mode 100644 (file)
index 0000000..a30ab1f
--- /dev/null
@@ -0,0 +1,8 @@
+// PR c++/32158
+template<typename T>
+  struct A
+  {
+    A() { }
+  };
+
+int t[__is_pod(A<int>)?-1:1];