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]

[v3] cleanup standard layout tests


Just noticed that these tests were all wrong
(__gnu_test::standard_layout functor testing trivial cons/dtor) and or
lacking complete coverage... will be using std::is_standard_layout in
the future, but for now only test !has_virtual_destructor. 

tested x86_64/linux

-benjamin
2009-01-28  Benjamin Kosnik  <bkoz@redhat.com>

	* testsuite/util/testsuite_common_types.h (has_trivial_cons_dtor): New.
	(standard_layout): Just use !has_virtual_destructor for now.
	* testsuite/30_threads/mutex/requirements/standard_layout.cc: New.
	* testsuite/30_threads/timed_mutex/requirements/standard_layout.cc: New.
	* testsuite/30_threads/recursive_mutex/requirements/
	standard_layout.cc: New.
	* testsuite/30_threads/condition_variable/requirements/
	standard_layout.cc: New.
	* testsuite/29_atomics/atomic_address/requirements/
	standard_layout.cc: Adjust.
	* testsuite/29_atomics/atomic_flag/requirements/
	standard_layout.cc: Same.
	* testsuite/29_atomics/atomic_address/requirements/trivial.cc: New.
	* testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Same.
	* testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Same.
	* testsuite/30_threads/condition_variable/requirements/typedefs.cc: New.
	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Adjust
	line numbers.
	* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same.
	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Same.
	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Same.
	* testsuite/29_atomics/atomic/requirements/standard_layout.cc:
	Remove, not required.


Index: testsuite/30_threads/mutex/requirements/standard_layout.cc
===================================================================
--- testsuite/30_threads/mutex/requirements/standard_layout.cc	(revision 0)
+++ testsuite/30_threads/mutex/requirements/standard_layout.cc	(revision 0)
@@ -0,0 +1,40 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+// { dg-require-cstdint "" }
+// { dg-require-gthreads "" }
+
+// Copyright (C) 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#include <mutex>
+#include <testsuite_common_types.h>
+
+void test01()
+{
+  __gnu_test::standard_layout test;
+  test.operator()<std::mutex>();
+}
Index: testsuite/30_threads/timed_mutex/requirements/standard_layout.cc
===================================================================
--- testsuite/30_threads/timed_mutex/requirements/standard_layout.cc	(revision 0)
+++ testsuite/30_threads/timed_mutex/requirements/standard_layout.cc	(revision 0)
@@ -0,0 +1,40 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+// { dg-require-cstdint "" }
+// { dg-require-gthreads "" }
+
+// Copyright (C) 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#include <mutex>
+#include <testsuite_common_types.h>
+
+void test01()
+{
+  __gnu_test::standard_layout test;
+  test.operator()<std::timed_mutex>();
+}
Index: testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc
===================================================================
--- testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc	(revision 0)
+++ testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc	(revision 0)
@@ -0,0 +1,40 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+// { dg-require-cstdint "" }
+// { dg-require-gthreads "" }
+
+// Copyright (C) 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#include <mutex>
+#include <testsuite_common_types.h>
+
+void test01()
+{
+  __gnu_test::standard_layout test;
+  test.operator()<std::recursive_mutex>();
+}
Index: testsuite/30_threads/condition_variable/requirements/standard_layout.cc
===================================================================
--- testsuite/30_threads/condition_variable/requirements/standard_layout.cc	(revision 0)
+++ testsuite/30_threads/condition_variable/requirements/standard_layout.cc	(revision 0)
@@ -0,0 +1,40 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+// { dg-require-cstdint "" }
+// { dg-require-gthreads "" }
+
+// Copyright (C) 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#include <condition_variable>
+#include <testsuite_common_types.h>
+
+void test01()
+{
+  __gnu_test::standard_layout test;
+  test.operator()<std::condition_variable>();
+}
Index: testsuite/30_threads/condition_variable/requirements/typedefs.cc
===================================================================
--- testsuite/30_threads/condition_variable/requirements/typedefs.cc	(revision 0)
+++ testsuite/30_threads/condition_variable/requirements/typedefs.cc	(revision 0)
@@ -0,0 +1,41 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+// { dg-require-cstdint "" }
+// { dg-require-gthreads "" }
+// 2009-01-28 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#include <condition_variable>
+
+void test01()
+{
+  // Check for required typedefs
+  typedef std::condition_variable test_type;
+  typedef test_type::native_handle_type type;
+}
Index: testsuite/29_atomics/atomic_address/requirements/standard_layout.cc
===================================================================
--- testsuite/29_atomics/atomic_address/requirements/standard_layout.cc	(revision 0)
+++ testsuite/29_atomics/atomic_address/requirements/standard_layout.cc	(revision 0)
@@ -0,0 +1,38 @@
+// { dg-options "-std=gnu++0x" }
+// { dg-do compile }
+
+// Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#include <cstdatomic>
+#include <testsuite_common_types.h>
+
+void test01()
+{
+  __gnu_test::standard_layout test;
+  test.operator()<std::atomic_address>();
+}
Index: testsuite/29_atomics/atomic_address/requirements/trivial.cc
===================================================================
--- testsuite/29_atomics/atomic_address/requirements/trivial.cc	(revision 0)
+++ testsuite/29_atomics/atomic_address/requirements/trivial.cc	(revision 0)
@@ -0,0 +1,38 @@
+// { dg-options "-std=gnu++0x" }
+// { dg-do compile }
+
+// Copyright (C) 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#include <cstdatomic>
+#include <testsuite_common_types.h>
+
+void test01()
+{
+  __gnu_test::has_trivial_cons_dtor test;
+  test.operator()<std::atomic_address>();
+}
Index: testsuite/29_atomics/atomic_integral/cons/assign_neg.cc
===================================================================
--- testsuite/29_atomics/atomic_integral/cons/assign_neg.cc	(revision 143744)
+++ testsuite/29_atomics/atomic_integral/cons/assign_neg.cc	(working copy)
@@ -39,11 +39,11 @@
   return 0;
 }
 
-// { dg-error "used here" "" { target *-*-* } 510 }
+// { dg-error "used here" "" { target *-*-* } 530 }
 // { dg-excess-errors "deleted function" } 
 // { dg-excess-errors "deleted function" } 
 // { dg-error "instantiated from" "" { target *-*-* } 38 } 
-// { dg-error "instantiated from" "" { target *-*-* } 517 } 
+// { dg-error "instantiated from" "" { target *-*-* } 537 } 
 // { dg-error "instantiated from" "" { target *-*-* } 173 } 
 // { dg-error "instantiated from" "" { target *-*-* } 404 }
 // { dg-error "instantiated from" "" { target *-*-* } 175 }  
Index: testsuite/29_atomics/atomic_integral/cons/copy_neg.cc
===================================================================
--- testsuite/29_atomics/atomic_integral/cons/copy_neg.cc	(revision 143744)
+++ testsuite/29_atomics/atomic_integral/cons/copy_neg.cc	(working copy)
@@ -39,11 +39,11 @@
   return 0;
 }
 
-// { dg-error "used here" "" { target *-*-* } 549 }
+// { dg-error "used here" "" { target *-*-* } 569 }
 // { dg-excess-errors "deleted function" } 
 // { dg-excess-errors "deleted function" } 
 // { dg-error "instantiated from" "" { target *-*-* } 38 } 
-// { dg-error "instantiated from" "" { target *-*-* } 555 } 
+// { dg-error "instantiated from" "" { target *-*-* } 575 } 
 // { dg-error "instantiated from" "" { target *-*-* } 173 } 
 // { dg-error "instantiated from" "" { target *-*-* } 404 }
 // { dg-error "instantiated from" "" { target *-*-* } 175 }  
Index: testsuite/29_atomics/atomic_integral/requirements/trivial.cc
===================================================================
--- testsuite/29_atomics/atomic_integral/requirements/trivial.cc	(revision 0)
+++ testsuite/29_atomics/atomic_integral/requirements/trivial.cc	(revision 0)
@@ -0,0 +1,39 @@
+// { dg-options "-std=gnu++0x" }
+// { dg-do compile }
+
+// Copyright (C) 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#include <cstdatomic>
+#include <testsuite_common_types.h>
+
+void test01()
+{
+  __gnu_test::has_trivial_cons_dtor test;
+  __gnu_cxx::typelist::apply_generator(test, 
+				       __gnu_test::atomic_integrals::type());
+}
Index: testsuite/29_atomics/atomic_flag/requirements/standard_layout.cc
===================================================================
--- testsuite/29_atomics/atomic_flag/requirements/standard_layout.cc	(revision 143744)
+++ testsuite/29_atomics/atomic_flag/requirements/standard_layout.cc	(working copy)
@@ -1,6 +1,7 @@
 // { dg-options "-std=gnu++0x" }
+// { dg-do compile }
 
-// Copyright (C) 2008 Free Software Foundation, Inc.
+// Copyright (C) 2008, 2009 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -28,20 +29,10 @@
 // the GNU General Public License.
 
 #include <cstdatomic>
-#include <type_traits>
-#include <testsuite_hooks.h>
+#include <testsuite_common_types.h>
 
-int main()
+void test01()
 {
-  bool test __attribute__((unused)) = true;
-
-  typedef std::atomic_flag test_type;
-  
-  // libstdc++/37907
-  // VERIFY( std::is_standard_layout<test_type>::value );
-
-  VERIFY( std::has_trivial_default_constructor<test_type>::value );
-  VERIFY( std::has_trivial_destructor<test_type>::value );
-
-  return 0;
+  __gnu_test::standard_layout test;
+  test.operator()<std::atomic_flag>();
 }
Index: testsuite/29_atomics/atomic_flag/requirements/trivial.cc
===================================================================
--- testsuite/29_atomics/atomic_flag/requirements/trivial.cc	(revision 0)
+++ testsuite/29_atomics/atomic_flag/requirements/trivial.cc	(revision 0)
@@ -0,0 +1,38 @@
+// { dg-options "-std=gnu++0x" }
+// { dg-do compile }
+
+// Copyright (C) 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+#include <cstdatomic>
+#include <testsuite_common_types.h>
+
+void test01()
+{
+  __gnu_test::has_trivial_cons_dtor test;
+  test.operator()<std::atomic_flag>();
+}
Index: testsuite/29_atomics/atomic/cons/assign_neg.cc
===================================================================
--- testsuite/29_atomics/atomic/cons/assign_neg.cc	(revision 143744)
+++ testsuite/29_atomics/atomic/cons/assign_neg.cc	(working copy)
@@ -38,7 +38,7 @@
   return 0;
 }
 
-// { dg-error "used here" "" { target *-*-* } 510 }
+// { dg-error "used here" "" { target *-*-* } 530 }
 // { dg-error "deleted function" "" { target *-*-* } 239 }
 // { dg-error "deleted function" "" { target *-*-* } 257 }
 // { dg-error "deleted function" "" { target *-*-* } 275 } 
Index: testsuite/29_atomics/atomic/cons/copy_neg.cc
===================================================================
--- testsuite/29_atomics/atomic/cons/copy_neg.cc	(revision 143744)
+++ testsuite/29_atomics/atomic/cons/copy_neg.cc	(working copy)
@@ -38,7 +38,7 @@
   return 0;
 }
 
-// { dg-error "used here" "" { target *-*-* } 549 } 
+// { dg-error "used here" "" { target *-*-* } 569 } 
 // { dg-error "deleted function" "" { target *-*-* } 238 }
 // { dg-error "deleted function" "" { target *-*-* } 256 }
 // { dg-error "deleted function" "" { target *-*-* } 274 }
Index: testsuite/29_atomics/atomic/requirements/standard_layout.cc
===================================================================
--- testsuite/29_atomics/atomic/requirements/standard_layout.cc	(revision 143744)
+++ testsuite/29_atomics/atomic/requirements/standard_layout.cc	(working copy)
@@ -1,31 +0,0 @@
-// { dg-options "-std=gnu++0x" }
-// { dg-do compile }
-// 2008-10-22 Benjamin Kosnik  <bkoz@redhat.com>
-
-// Copyright (C) 2008 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-#include <cstdatomic>
-#include <testsuite_common_types.h>
-
-void test01()
-{
-  // Check for standard layout requirements
-  __gnu_test::standard_layout test;
-  __gnu_cxx::typelist::apply_generator(test, __gnu_test::atomics_tl());
-}
Index: testsuite/util/testsuite_common_types.h
===================================================================
--- testsuite/util/testsuite_common_types.h	(revision 143744)
+++ testsuite/util/testsuite_common_types.h	(working copy)
@@ -1,7 +1,7 @@
 // -*- C++ -*-
 // typelist for the C++ library testsuite. 
 //
-// Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -446,6 +446,29 @@
 
   // Generator to test standard layout
 #ifdef __GXX_EXPERIMENTAL_CXX0X__
+  struct has_trivial_cons_dtor
+  {
+    template<typename _Tp>
+      void 
+      operator()()
+      {
+	struct _Concept
+	{
+	  void __constraint()
+	  {
+	    typedef std::has_trivial_default_constructor<_Tp> ctor_p;
+	    static_assert(ctor_p::value, "default constructor not trivial");
+
+	    typedef std::has_trivial_destructor<_Tp> dtor_p;
+	    static_assert(dtor_p::value, "destructor not trivial");
+	  }
+	};
+
+	void (_Concept::*__x)() __attribute__((unused))
+	  = &_Concept::__constraint;
+      }
+  };
+
   struct standard_layout
   {
     template<typename _Tp>
@@ -459,12 +482,9 @@
 	    // libstdc++/37907
 	    // typedef std::is_standard_layout<_Tp> standard_layout_p;
 	    // static_assert(standard_layout_p::value, "not standard_layout");
-	    
-	    typedef std::has_trivial_default_constructor<_Tp> ctor_p;
-	    static_assert(ctor_p::value, "default ctor not trivial");
 
-	    typedef std::has_trivial_destructor<_Tp> dtor_p;
-	    static_assert(dtor_p::value, "dtor not trivial");
+	    typedef std::has_virtual_destructor<_Tp> ctor_p;
+	    static_assert(!ctor_p::value, "has virtual destructor");
 	  }
 	};
 

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