Commit 5292c033 by Benjamin Kosnik Committed by Benjamin Kosnik

testsuite_common_types.h (has_trivial_cons_dtor): New.

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.

From-SVN: r143749
parent e8eef596
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.
2009-01-22 Jonathan Wakely <jwakely.gcc@gmail.com> 2009-01-22 Jonathan Wakely <jwakely.gcc@gmail.com>
* include/std/thread (__thread_data_base, thread): Rename member * include/std/thread (__thread_data_base, thread): Rename member
......
...@@ -38,7 +38,7 @@ int main() ...@@ -38,7 +38,7 @@ int main()
return 0; 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 *-*-* } 239 }
// { dg-error "deleted function" "" { target *-*-* } 257 } // { dg-error "deleted function" "" { target *-*-* } 257 }
// { dg-error "deleted function" "" { target *-*-* } 275 } // { dg-error "deleted function" "" { target *-*-* } 275 }
......
...@@ -38,7 +38,7 @@ int main() ...@@ -38,7 +38,7 @@ int main()
return 0; 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 *-*-* } 238 }
// { dg-error "deleted function" "" { target *-*-* } 256 } // { dg-error "deleted function" "" { target *-*-* } 256 }
// { dg-error "deleted function" "" { target *-*-* } 274 } // { dg-error "deleted function" "" { target *-*-* } 274 }
......
// { dg-options "-std=gnu++0x" } // { dg-options "-std=gnu++0x" }
// { dg-do compile } // { dg-do compile }
// 2008-10-22 Benjamin Kosnik <bkoz@redhat.com>
// 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 // 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 // software; you can redistribute it and/or modify it under the
...@@ -20,12 +19,20 @@ ...@@ -20,12 +19,20 @@
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA. // 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 <cstdatomic>
#include <testsuite_common_types.h> #include <testsuite_common_types.h>
void test01() void test01()
{ {
// Check for standard layout requirements
__gnu_test::standard_layout test; __gnu_test::standard_layout test;
__gnu_cxx::typelist::apply_generator(test, __gnu_test::atomics_tl()); test.operator()<std::atomic_address>();
} }
// { 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>();
}
// { dg-options "-std=gnu++0x" } // { 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 // 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 // software; you can redistribute it and/or modify it under the
...@@ -28,20 +29,10 @@ ...@@ -28,20 +29,10 @@
// the GNU General Public License. // the GNU General Public License.
#include <cstdatomic> #include <cstdatomic>
#include <type_traits> #include <testsuite_common_types.h>
#include <testsuite_hooks.h>
int main() void test01()
{ {
bool test __attribute__((unused)) = true; __gnu_test::standard_layout test;
test.operator()<std::atomic_flag>();
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;
} }
// { 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>();
}
...@@ -39,11 +39,11 @@ int main() ...@@ -39,11 +39,11 @@ int main()
return 0; 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-excess-errors "deleted function" } // { dg-excess-errors "deleted function" }
// { dg-error "instantiated from" "" { target *-*-* } 38 } // { 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 *-*-* } 173 }
// { dg-error "instantiated from" "" { target *-*-* } 404 } // { dg-error "instantiated from" "" { target *-*-* } 404 }
// { dg-error "instantiated from" "" { target *-*-* } 175 } // { dg-error "instantiated from" "" { target *-*-* } 175 }
......
...@@ -39,11 +39,11 @@ int main() ...@@ -39,11 +39,11 @@ int main()
return 0; 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-excess-errors "deleted function" } // { dg-excess-errors "deleted function" }
// { dg-error "instantiated from" "" { target *-*-* } 38 } // { 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 *-*-* } 173 }
// { dg-error "instantiated from" "" { target *-*-* } 404 } // { dg-error "instantiated from" "" { target *-*-* } 404 }
// { dg-error "instantiated from" "" { target *-*-* } 175 } // { dg-error "instantiated from" "" { target *-*-* } 175 }
......
// { 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());
}
// { 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>();
}
// { 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;
}
// { 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>();
}
// { 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>();
}
// { 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>();
}
// -*- C++ -*- // -*- C++ -*-
// typelist for the C++ library testsuite. // 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 // 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 // software; you can redistribute it and/or modify it under the
...@@ -446,6 +446,29 @@ namespace __gnu_test ...@@ -446,6 +446,29 @@ namespace __gnu_test
// Generator to test standard layout // Generator to test standard layout
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #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 struct standard_layout
{ {
template<typename _Tp> template<typename _Tp>
...@@ -459,12 +482,9 @@ namespace __gnu_test ...@@ -459,12 +482,9 @@ namespace __gnu_test
// libstdc++/37907 // libstdc++/37907
// typedef std::is_standard_layout<_Tp> standard_layout_p; // typedef std::is_standard_layout<_Tp> standard_layout_p;
// static_assert(standard_layout_p::value, "not standard_layout"); // 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; typedef std::has_virtual_destructor<_Tp> ctor_p;
static_assert(dtor_p::value, "dtor not trivial"); static_assert(!ctor_p::value, "has virtual destructor");
} }
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment