URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/gnu-stable/gcc-4.5.1/libstdc++-v3/testsuite/18_support
- from Rev 816 to Rev 826
- ↔ Reverse comparison
Rev 816 → Rev 826
/numeric_limits/lowest.cc
0,0 → 1,83
// { dg-options "-std=gnu++0x" } |
// { dg-add-options ieee } |
// { dg-do run { xfail { ! wchar } } } |
|
// 2010-02-25 Ed Smith-Rowland |
|
// Copyright (C) 2010 Free Software Foundation |
// |
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// 18.2.1.1 template class numeric_limits |
|
#include <limits> |
#include <type_traits> |
#include <testsuite_hooks.h> |
|
template<typename T> |
void |
do_test(std::true_type) |
{ |
bool test __attribute__((unused)) = true; |
T limits_min = std::numeric_limits<T>::min(); |
VERIFY( std::numeric_limits<T>::lowest() == limits_min ); |
} |
|
template<typename T> |
void |
do_test(std::false_type) |
{ |
bool test __attribute__((unused)) = true; |
T limits_max = std::numeric_limits<T>::max(); |
VERIFY( std::numeric_limits<T>::lowest() == -limits_max ); |
} |
|
template<typename Tp> |
void |
do_test() |
{ do_test<Tp>(typename std::is_integral<Tp>::type()); } |
|
void test01() |
{ |
do_test<char>(); |
do_test<signed char>(); |
do_test<unsigned char>(); |
do_test<wchar_t>(); |
do_test<char16_t>(); |
do_test<char32_t>(); |
|
do_test<short>(); |
do_test<unsigned short>(); |
|
do_test<int>(); |
do_test<unsigned int>(); |
|
do_test<long>(); |
do_test<unsigned long>(); |
|
do_test<long long>(); |
do_test<unsigned long long>(); |
|
do_test<float>(); |
do_test<double>(); |
do_test<long double>(); |
} |
|
int main() |
{ |
test01(); |
return 0; |
} |
/numeric_limits/is_iec559.cc
0,0 → 1,79
// { dg-add-options ieee } |
|
// 1999-08-23 bkoz |
|
// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2009 Free Software Foundation |
// |
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// 18.2.1.1 template class numeric_limits |
|
#include <limits> |
#include <limits.h> |
#include <float.h> |
#include <cwchar> |
#include <testsuite_hooks.h> |
|
template<typename T> |
void |
test_is_iec559() |
{ |
bool test; |
|
if (std::numeric_limits<T>::is_iec559) |
{ |
// IEC 559 requires all of the following. |
test = (std::numeric_limits<T>::has_infinity |
&& std::numeric_limits<T>::has_quiet_NaN |
&& std::numeric_limits<T>::has_signaling_NaN); |
} |
else |
{ |
// If we had all of the following, why didn't we set IEC 559? |
test = (!std::numeric_limits<T>::has_infinity |
|| !std::numeric_limits<T>::has_quiet_NaN |
|| !std::numeric_limits<T>::has_signaling_NaN); |
} |
|
VERIFY (test); |
} |
|
// libstdc++/8949 |
bool test04() |
{ |
bool test __attribute__((unused)) = true; |
|
VERIFY( !std::numeric_limits<short>::is_iec559 ); |
VERIFY( !std::numeric_limits<unsigned short>::is_iec559 ); |
VERIFY( !std::numeric_limits<int>::is_iec559 ); |
VERIFY( !std::numeric_limits<unsigned int>::is_iec559 ); |
VERIFY( !std::numeric_limits<long>::is_iec559 ); |
VERIFY( !std::numeric_limits<unsigned long>::is_iec559 ); |
VERIFY( !std::numeric_limits<long long>::is_iec559 ); |
VERIFY( !std::numeric_limits<unsigned long long>::is_iec559 ); |
return test; |
} |
|
int main() |
{ |
test_is_iec559<float>(); |
test_is_iec559<double>(); |
test_is_iec559<long double>(); |
|
test04(); |
|
return 0; |
} |
/numeric_limits/requirements/explicit_instantiation/1.cc
0,0 → 1,41
// { dg-do compile } |
|
// Copyright (C) 2007, 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
|
// This file tests explicit instantiation of library containers. |
|
#include <limits> |
|
template<typename T> |
struct A |
{ |
int key; |
public: |
A(int i = 0): key(i) { } |
bool |
operator==(int i) { return i == key; } |
}; |
|
struct B |
{ |
B(int = 0) { } |
}; |
|
// XXX Should this work for POD types? |
template class std::numeric_limits<A<B> >; |
/numeric_limits/specialization_default_values.cc
0,0 → 1,106
// { dg-add-options ieee } |
|
// 1999-08-23 bkoz |
|
// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2009 |
// Free Software Foundation |
// |
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// 18.2.1.1 template class numeric_limits |
|
#include <limits> |
#include <limits.h> |
#include <float.h> |
#include <cwchar> |
#include <testsuite_hooks.h> |
|
template<typename T> |
struct A |
{ |
int key; |
public: |
A(int i = 0): key(i) { } |
bool |
operator==(int i) { return i == key; } |
}; |
|
struct B |
{ |
B(int = 0) { } |
}; |
|
|
bool test01() |
{ |
bool test __attribute__((unused)) = true; |
std::numeric_limits< A<B> > obj; |
|
VERIFY( !obj.is_specialized ); |
VERIFY( obj.min() == 0 ); |
VERIFY( obj.max() == 0 ); |
VERIFY( obj.digits == 0 ); |
VERIFY( obj.digits10 == 0 ); |
VERIFY( !obj.is_signed ); |
VERIFY( !obj.is_integer ); |
VERIFY( !obj.is_exact ); |
VERIFY( obj.radix == 0 ); |
VERIFY( obj.epsilon() == 0 ); |
VERIFY( obj.round_error() == 0 ); |
VERIFY( obj.min_exponent == 0 ); |
VERIFY( obj.min_exponent10 == 0 ); |
VERIFY( obj.max_exponent == 0 ); |
VERIFY( obj.max_exponent10 == 0 ); |
VERIFY( !obj.has_infinity ); |
VERIFY( !obj.has_quiet_NaN ); |
VERIFY( !obj.has_signaling_NaN ); |
VERIFY( !obj.has_denorm ); |
VERIFY( !obj.has_denorm_loss ); |
VERIFY( obj.infinity() == 0 ); |
VERIFY( obj.quiet_NaN() == 0 ); |
VERIFY( obj.signaling_NaN() == 0 ); |
VERIFY( obj.denorm_min() == 0 ); |
VERIFY( !obj.is_iec559 ); |
VERIFY( !obj.is_bounded ); |
VERIFY( !obj.is_modulo ); |
VERIFY( !obj.traps ); |
VERIFY( !obj.tinyness_before ); |
VERIFY( obj.round_style == std::round_toward_zero ); |
return test; |
} |
|
// test linkage of the generic bits |
template struct std::numeric_limits<B>; |
|
void test02() |
{ |
typedef std::numeric_limits<B> b_nl_type; |
|
// Should probably do all of them... |
const int* __attribute__((unused)) pi1 = &b_nl_type::digits; |
const int* __attribute__((unused)) pi2 = &b_nl_type::digits10; |
const int* __attribute__((unused)) pi3 = &b_nl_type::max_exponent10; |
const bool* __attribute__((unused)) pb1 = &b_nl_type::traps; |
} |
|
|
int main() |
{ |
test01(); |
test02(); |
|
return 0; |
} |
/numeric_limits/29989.cc
0,0 → 1,22
// { dg-do compile } |
|
// Copyright (C) 2006, 2009 Free Software Foundation |
// |
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// libstdc++/29989 |
#define max(a,b) quirk |
#include <limits> |
/numeric_limits/is_signed.cc
0,0 → 1,58
// { dg-add-options ieee } |
|
// 1999-08-23 bkoz |
|
// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2009 Free Software Foundation |
// |
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// 18.2.1.1 template class numeric_limits |
|
#include <limits> |
#include <limits.h> |
#include <float.h> |
#include <cwchar> |
#include <testsuite_hooks.h> |
|
#ifdef __CHAR_UNSIGNED__ |
#define char_is_signed false |
#else |
#define char_is_signed true |
#endif |
|
void test_sign() |
{ |
bool test __attribute__((unused)) = true; |
VERIFY( std::numeric_limits<char>::is_signed == char_is_signed ); |
VERIFY( std::numeric_limits<signed char>::is_signed == true ); |
VERIFY( std::numeric_limits<unsigned char>::is_signed == false ); |
VERIFY( std::numeric_limits<short>::is_signed == true ); |
VERIFY( std::numeric_limits<unsigned short>::is_signed == false ); |
VERIFY( std::numeric_limits<int>::is_signed == true ); |
VERIFY( std::numeric_limits<unsigned>::is_signed == false ); |
VERIFY( std::numeric_limits<long>::is_signed == true ); |
VERIFY( std::numeric_limits<unsigned long>::is_signed == false ); |
VERIFY( std::numeric_limits<float>::is_signed == true ); |
VERIFY( std::numeric_limits<double>::is_signed == true ); |
VERIFY( std::numeric_limits<long double>::is_signed == true ); |
} |
|
int main() |
{ |
test_sign(); |
|
return 0; |
} |
/numeric_limits/dr559.cc
0,0 → 1,102
// { dg-options "-std=gnu++0x" } |
|
// 2010-02-17 Paolo Carlini <paolo.carlini@oracle.com> |
// |
// Copyright (C) 2010 Free Software Foundation |
// |
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
#include <limits> |
#include <type_traits> |
#include <testsuite_hooks.h> |
|
template<typename T> |
void do_test_aux() |
{ |
bool test __attribute__((unused)) = true; |
typedef std::numeric_limits<T> cv_limits; |
typedef std::numeric_limits<typename std::remove_cv<T>::type> limits; |
|
VERIFY( cv_limits::is_specialized == limits::is_specialized ); |
VERIFY( cv_limits::min() == limits::min() ); |
VERIFY( cv_limits::max() == limits::max() ); |
VERIFY( cv_limits::lowest() == limits::lowest() ); |
VERIFY( cv_limits::digits == limits::digits ); |
VERIFY( cv_limits::digits10 == limits::digits10 ); |
VERIFY( cv_limits::max_digits10 == limits::max_digits10 ); |
VERIFY( cv_limits::is_signed == limits::is_signed ); |
VERIFY( cv_limits::is_integer == limits::is_integer ); |
VERIFY( cv_limits::is_exact == limits::is_exact ); |
VERIFY( cv_limits::radix == limits::radix ); |
VERIFY( cv_limits::epsilon() == limits::epsilon() ); |
VERIFY( cv_limits::round_error() == limits::round_error() ); |
VERIFY( cv_limits::min_exponent == limits::min_exponent ); |
VERIFY( cv_limits::min_exponent10 == limits::min_exponent10 ); |
VERIFY( cv_limits::max_exponent == limits::max_exponent ); |
VERIFY( cv_limits::max_exponent10 == limits::max_exponent10 ); |
VERIFY( cv_limits::has_infinity == limits::has_infinity ); |
VERIFY( cv_limits::has_quiet_NaN == limits::has_quiet_NaN ); |
VERIFY( cv_limits::has_signaling_NaN == limits::has_signaling_NaN ); |
VERIFY( cv_limits::has_denorm == limits::has_denorm ); |
VERIFY( cv_limits::has_denorm_loss == limits::has_denorm_loss ); |
VERIFY( cv_limits::infinity() == limits::infinity() ); |
if (!std::is_floating_point<T>::value) |
{ |
VERIFY( cv_limits::quiet_NaN() == limits::quiet_NaN() ); |
VERIFY( cv_limits::signaling_NaN() == limits::signaling_NaN() ); |
} |
VERIFY( cv_limits::denorm_min() == limits::denorm_min() ); |
VERIFY( cv_limits::is_iec559 == limits::is_iec559 ); |
VERIFY( cv_limits::is_bounded == limits::is_bounded ); |
VERIFY( cv_limits::is_modulo == limits::is_modulo ); |
VERIFY( cv_limits::traps == limits::traps ); |
VERIFY( cv_limits::tinyness_before == limits::tinyness_before ); |
VERIFY( cv_limits::round_style == limits::round_style ); |
} |
|
template<typename T> |
void |
do_test() |
{ |
do_test_aux<T>(); |
do_test_aux<const T>(); |
do_test_aux<volatile T>(); |
do_test_aux<const volatile T>(); |
} |
|
// DR 559. |
int main() |
{ |
do_test<bool>(); |
do_test<char>(); |
do_test<signed char>(); |
do_test<unsigned char>(); |
do_test<wchar_t>(); |
do_test<char16_t>(); |
do_test<char32_t>(); |
do_test<short>(); |
do_test<unsigned short>(); |
do_test<int>(); |
do_test<unsigned int>(); |
do_test<long>(); |
do_test<unsigned long>(); |
do_test<long long>(); |
do_test<unsigned long long>(); |
do_test<float>(); |
do_test<double>(); |
do_test<long double>(); |
return 0; |
} |
/numeric_limits/epsilon.cc
0,0 → 1,47
// { dg-add-options ieee } |
|
// 1999-08-23 bkoz |
|
// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2009 Free Software Foundation |
// |
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// 18.2.1.1 template class numeric_limits |
|
#include <limits> |
#include <limits.h> |
#include <float.h> |
#include <cwchar> |
#include <testsuite_hooks.h> |
|
template<typename T> |
void test_epsilon() |
{ |
bool test __attribute__((unused)) = true; |
T epsilon = std::numeric_limits<T>::epsilon(); |
T one = 1; |
|
VERIFY( one != (one + epsilon) ); |
} |
|
int main() |
{ |
test_epsilon<float>(); |
test_epsilon<double>(); |
test_epsilon<long double>(); |
|
return 0; |
} |
/numeric_limits/char16_32_t.cc
0,0 → 1,77
// { dg-options "-std=gnu++0x" } |
// { dg-require-cstdint "" } |
|
// 2008-05-20 Paolo Carlini <paolo.carlini@oracle.com> |
// |
// Copyright (C) 2008, 2009 Free Software Foundation |
// |
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// 18.2.1.1 template class numeric_limits |
|
#include <limits> |
#include <cstdint> |
#include <testsuite_hooks.h> |
|
// Test specializations for char16_t and char32_t, in C++0x. |
template<typename T, typename R> |
void |
do_test() |
{ |
bool test __attribute__((unused)) = true; |
|
typedef std::numeric_limits<T> char_type; |
typedef std::numeric_limits<R> impl_type; |
|
VERIFY( char_type::is_specialized == impl_type::is_specialized ); |
VERIFY( char_type::min() == impl_type::min() ); |
VERIFY( char_type::max() == impl_type::max() ); |
VERIFY( char_type::digits == impl_type::digits ); |
VERIFY( char_type::digits10 == impl_type::digits10 ); |
VERIFY( char_type::is_signed == impl_type::is_signed ); |
VERIFY( char_type::is_integer == impl_type::is_integer ); |
VERIFY( char_type::is_exact == impl_type::is_exact ); |
VERIFY( char_type::radix == impl_type::radix ); |
VERIFY( char_type::epsilon() == impl_type::epsilon() ); |
VERIFY( char_type::round_error() == impl_type::round_error() ); |
VERIFY( char_type::min_exponent == impl_type::min_exponent ); |
VERIFY( char_type::min_exponent10 == impl_type::min_exponent10 ); |
VERIFY( char_type::max_exponent == impl_type::max_exponent ); |
VERIFY( char_type::max_exponent10 == impl_type::max_exponent10 ); |
VERIFY( char_type::has_infinity == impl_type::has_infinity ); |
VERIFY( char_type::has_quiet_NaN == impl_type::has_quiet_NaN ); |
VERIFY( char_type::has_signaling_NaN == impl_type::has_signaling_NaN ); |
VERIFY( char_type::has_denorm == impl_type::has_denorm ); |
VERIFY( char_type::has_denorm_loss == impl_type::has_denorm_loss ); |
VERIFY( char_type::infinity() == impl_type::infinity() ); |
VERIFY( char_type::quiet_NaN() == impl_type::quiet_NaN() ); |
VERIFY( char_type::signaling_NaN() == impl_type::signaling_NaN() ); |
VERIFY( char_type::denorm_min() == impl_type::denorm_min() ); |
VERIFY( char_type::is_iec559 == impl_type::is_iec559 ); |
VERIFY( char_type::is_bounded == impl_type::is_bounded ); |
VERIFY( char_type::is_modulo == impl_type::is_modulo ); |
VERIFY( char_type::traps == impl_type::traps ); |
VERIFY( char_type::tinyness_before == impl_type::tinyness_before ); |
VERIFY( char_type::round_style == impl_type::round_style ); |
} |
|
int main() |
{ |
do_test<char16_t, uint_least16_t>(); |
do_test<char32_t, uint_least32_t>(); |
|
return 0; |
} |
/numeric_limits/quiet_NaN.cc
0,0 → 1,54
// { dg-add-options ieee } |
|
// 1999-08-23 bkoz |
|
// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2009 Free Software Foundation |
// |
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// 18.2.1.1 template class numeric_limits |
|
#include <limits> |
#include <limits.h> |
#include <float.h> |
#include <cwchar> |
#include <testsuite_hooks.h> |
|
template<typename T> |
void |
test_qnan() |
{ |
bool test; |
|
if (std::numeric_limits<T>::has_quiet_NaN) |
{ |
T nan = std::numeric_limits<T>::quiet_NaN(); |
test = (nan != nan); |
} |
else |
test = true; |
|
VERIFY (test); |
} |
|
int main() |
{ |
test_qnan<float>(); |
test_qnan<double>(); |
test_qnan<long double>(); |
|
return 0; |
} |
/numeric_limits/digits10.cc
0,0 → 1,64
// { dg-add-options ieee } |
|
// 1999-08-23 bkoz |
|
// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2009 Free Software Foundation |
// |
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// 18.2.1.1 template class numeric_limits |
|
#include <limits> |
#include <limits.h> |
#include <float.h> |
#include <cwchar> |
#include <testsuite_hooks.h> |
|
// libstdc++/5045 |
bool test03() |
{ |
bool test __attribute__((unused)) = true; |
|
VERIFY( std::numeric_limits<bool>::digits10 == 0 ); |
if (__CHAR_BIT__ == 8) |
{ |
VERIFY( std::numeric_limits<signed char>::digits10 == 2 ); |
VERIFY( std::numeric_limits<unsigned char>::digits10 == 2 ); |
} |
if (__CHAR_BIT__ * sizeof(short) == 16) |
{ |
VERIFY( std::numeric_limits<signed short>::digits10 == 4 ); |
VERIFY( std::numeric_limits<unsigned short>::digits10 == 4 ); |
} |
if (__CHAR_BIT__ * sizeof(int) == 32) |
{ |
VERIFY( std::numeric_limits<signed int>::digits10 == 9 ); |
VERIFY( std::numeric_limits<unsigned int>::digits10 == 9 ); |
} |
if (__CHAR_BIT__ * sizeof(long long) == 64) |
{ |
VERIFY( std::numeric_limits<signed long long>::digits10 == 18 ); |
VERIFY( std::numeric_limits<unsigned long long>::digits10 == 19 ); |
} |
return test; |
} |
|
int main() |
{ |
test03(); |
|
return 0; |
} |
/numeric_limits/denorm_min.cc
0,0 → 1,54
// { dg-add-options ieee } |
|
// 1999-08-23 bkoz |
|
// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2009 Free Software Foundation |
// |
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// 18.2.1.1 template class numeric_limits |
|
#include <limits> |
#include <limits.h> |
#include <float.h> |
#include <cwchar> |
#include <testsuite_hooks.h> |
|
template<typename T> |
void |
test_denorm_min() |
{ |
bool test; |
|
if (std::numeric_limits<T>::has_denorm == std::denorm_present) |
{ |
T denorm = std::numeric_limits<T>::denorm_min(); |
test = (denorm > 0); |
} |
else |
test = true; |
|
VERIFY (test); |
} |
|
int main() |
{ |
test_denorm_min<float>(); |
test_denorm_min<double>(); |
test_denorm_min<long double>(); |
|
return 0; |
} |
/numeric_limits/min_max.cc
0,0 → 1,93
// { dg-add-options ieee } |
|
// 1999-08-23 bkoz |
|
// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2009 Free Software Foundation |
// |
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// 18.2.1.1 template class numeric_limits |
|
#include <limits> |
#include <limits.h> |
#include <float.h> |
#include <cwchar> |
#include <testsuite_hooks.h> |
|
template<typename T> |
struct extrema { |
static T min; |
static T max; |
}; |
|
|
#define DEFINE_EXTREMA(T, m, M) \ |
template<> T extrema<T>::min = m; \ |
template<> T extrema<T>::max = M |
|
DEFINE_EXTREMA(char, CHAR_MIN, CHAR_MAX); |
DEFINE_EXTREMA(signed char, SCHAR_MIN, SCHAR_MAX); |
DEFINE_EXTREMA(unsigned char, 0, UCHAR_MAX); |
DEFINE_EXTREMA(short, SHRT_MIN, SHRT_MAX); |
DEFINE_EXTREMA(unsigned short, 0, USHRT_MAX); |
DEFINE_EXTREMA(int, INT_MIN, INT_MAX); |
DEFINE_EXTREMA(unsigned, 0U, UINT_MAX); |
DEFINE_EXTREMA(long, LONG_MIN, LONG_MAX); |
DEFINE_EXTREMA(unsigned long, 0UL, ULONG_MAX); |
|
#if _GLIBCXX_USE_WCHAR_T |
DEFINE_EXTREMA(wchar_t, WCHAR_MIN, WCHAR_MAX); |
#endif //_GLIBCXX_USE_WCHAR_T |
|
DEFINE_EXTREMA(float, FLT_MIN, FLT_MAX); |
DEFINE_EXTREMA(double, DBL_MIN, DBL_MAX); |
DEFINE_EXTREMA(long double, LDBL_MIN, LDBL_MAX); |
|
#undef DEFINE_EXTREMA |
|
template<typename T> |
void test_extrema() |
{ |
bool test __attribute__((unused)) = true; |
T limits_min = std::numeric_limits<T>::min(); |
T limits_max = std::numeric_limits<T>::max(); |
T extrema_min = extrema<T>::min; |
T extrema_max = extrema<T>::max; |
VERIFY( extrema_min == limits_min ); |
VERIFY( extrema_max == limits_max ); |
} |
|
int main() |
{ |
test_extrema<char>(); |
test_extrema<signed char>(); |
test_extrema<unsigned char>(); |
|
test_extrema<short>(); |
test_extrema<unsigned short>(); |
|
test_extrema<int>(); |
test_extrema<unsigned>(); |
|
test_extrema<long>(); |
test_extrema<unsigned long>(); |
|
test_extrema<float>(); |
test_extrema<double>(); |
test_extrema<long double>(); |
|
return 0; |
} |
/numeric_limits/infinity.cc
0,0 → 1,54
// { dg-add-options ieee } |
|
// 1999-08-23 bkoz |
|
// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2009 Free Software Foundation |
// |
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// 18.2.1.1 template class numeric_limits |
|
#include <limits> |
#include <limits.h> |
#include <float.h> |
#include <cwchar> |
#include <testsuite_hooks.h> |
|
template<typename T> |
void |
test_infinity() |
{ |
bool test; |
|
if (std::numeric_limits<T>::has_infinity) |
{ |
T inf = std::numeric_limits<T>::infinity(); |
test = (inf + inf == inf); |
} |
else |
test = true; |
|
VERIFY (test); |
} |
|
int main() |
{ |
test_infinity<float>(); |
test_infinity<double>(); |
test_infinity<long double>(); |
|
return 0; |
} |
/numeric_limits/max_digits10.cc
0,0 → 1,67
// { dg-options "-std=gnu++0x" } |
// { dg-add-options ieee } |
|
// 2010-02-25 Ed Smith-Rowland |
|
// Copyright (C) 2010 Free Software Foundation |
// |
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// 18.2.1.1 template class numeric_limits |
|
#include <limits> |
#include <cmath> |
#include <testsuite_hooks.h> |
|
void |
test01() |
{ |
bool test __attribute__((unused)) = true; |
|
VERIFY( std::numeric_limits<bool>::max_digits10 == 0 ); |
VERIFY( std::numeric_limits<char>::max_digits10 == 0 ); |
VERIFY( std::numeric_limits<signed char>::max_digits10 == 0 ); |
VERIFY( std::numeric_limits<unsigned char>::max_digits10 == 0 ); |
VERIFY( std::numeric_limits<wchar_t>::max_digits10 == 0 ); |
VERIFY( std::numeric_limits<short>::max_digits10 == 0 ); |
VERIFY( std::numeric_limits<unsigned short>::max_digits10 == 0 ); |
VERIFY( std::numeric_limits<int>::max_digits10 == 0 ); |
VERIFY( std::numeric_limits<unsigned int>::max_digits10 == 0 ); |
VERIFY( std::numeric_limits<long>::max_digits10 == 0 ); |
VERIFY( std::numeric_limits<unsigned long>::max_digits10 == 0 ); |
VERIFY( std::numeric_limits<long long>::max_digits10 == 0 ); |
VERIFY( std::numeric_limits<unsigned long long>::max_digits10 == 0 ); |
VERIFY( std::numeric_limits<char16_t>::max_digits10 == 0 ); |
VERIFY( std::numeric_limits<char32_t>::max_digits10 == 0 ); |
|
const int f_max_digits10 = (2 + std::numeric_limits<float>::digits |
* 643 / 2136); |
VERIFY( std::numeric_limits<float>::max_digits10 == f_max_digits10 ); |
|
const int d_max_digits10 = (2 + std::numeric_limits<double>::digits |
* 643 / 2136); |
VERIFY( std::numeric_limits<double>::max_digits10 == d_max_digits10 ); |
|
const int ld_max_digits10 = (2 + std::numeric_limits<long double>::digits |
* 643 / 2136); |
VERIFY( std::numeric_limits<long double>::max_digits10 == ld_max_digits10 ); |
} |
|
int main() |
{ |
test01(); |
return 0; |
} |
/numeric_limits/traps.cc
0,0 → 1,61
// { dg-add-options ieee } |
|
// Copyright (C) 2005, 2009 Free Software Foundation |
// |
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// 18.2.1.1 template class numeric_limits |
|
#include <limits> |
#include <testsuite_hooks.h> |
|
template<typename T> |
void |
test_traps(T r = T(0)) |
{ |
typedef T value_type; |
volatile value_type i(5); |
volatile value_type j(0); |
|
if (!std::numeric_limits<value_type>::traps) |
r = i / j; |
} |
|
// libstdc++/22203 |
int main() |
{ |
test_traps<int>(); |
test_traps<unsigned int>(); |
test_traps<long>(); |
test_traps<unsigned long>(); |
test_traps<long long>(); |
test_traps<unsigned long long>(); |
|
/* |
For floating points, trapping is a different, more complicated |
story. If is_iecxxx is true, then division by zero would not trap |
(infinity). If is_iecxxx is false, we don't know (VAX may trap for |
0/0 -- I have to check). For most cases (i.e. IEE-754), trapping |
for floating points have to do with whether there is a support for |
signaling NaN. |
- Gaby. |
*/ |
// test_traps<float>(); |
// test_traps<double>(); |
// test_traps<long double>(); |
|
return 0; |
} |
/bad_alloc/cons_virtual_derivation.cc
0,0 → 1,28
// 2007-05-29 Benjamin Kosnik <bkoz@redhat.com> |
|
// Copyright (C) 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 |
// terms of the GNU General Public License as published by the |
// Free Software Foundation; either version 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
#include <new> |
#include <testsuite_api.h> |
|
int main() |
{ |
typedef std::bad_alloc test_type; |
__gnu_test::diamond_derivation<test_type, true>::test(); |
return 0; |
} |
/bad_alloc/what.cc
0,0 → 1,40
// 2007-01-30 Paolo Carlini <pcarlini@suse.de> |
|
// Copyright (C) 2007, 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
#include <new> |
#include <typeinfo> |
#include <exception> |
#include <cstring> |
#include <testsuite_hooks.h> |
|
// libstdc++/14493 |
void test01() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
bad_alloc ba; |
VERIFY( !strcmp(ba.what(), "std::bad_alloc") ); |
} |
|
int main() |
{ |
test01(); |
return 0; |
} |
/bad_cast/cons_virtual_derivation.cc
0,0 → 1,28
// 2007-05-29 Benjamin Kosnik <bkoz@redhat.com> |
|
// Copyright (C) 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 |
// terms of the GNU General Public License as published by the |
// Free Software Foundation; either version 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
#include <typeinfo> |
#include <testsuite_api.h> |
|
int main() |
{ |
typedef std::bad_cast test_type; |
__gnu_test::diamond_derivation<test_type, true>::test(); |
return 0; |
} |
/bad_cast/what.cc
0,0 → 1,40
// 2007-01-30 Paolo Carlini <pcarlini@suse.de> |
|
// Copyright (C) 2007, 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
#include <new> |
#include <typeinfo> |
#include <exception> |
#include <cstring> |
#include <testsuite_hooks.h> |
|
// libstdc++/14493 |
void test01() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
bad_cast bc; |
VERIFY( !strcmp(bc.what(), "std::bad_cast") ); |
} |
|
int main() |
{ |
test01(); |
return 0; |
} |
/nested_exception/rethrow_nested.cc
0,0 → 1,53
// { dg-options "-std=gnu++0x" } |
// { dg-require-atomic-builtins "" } |
|
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
#include <exception> |
#include <testsuite_hooks.h> |
|
void test01() |
{ |
bool test __attribute__((unused)) = false; |
|
try |
{ |
try |
{ |
throw 42; |
} |
catch (...) |
{ |
std::nested_exception e; |
e.rethrow_nested(); |
} |
} |
catch(const int& i) |
{ |
test = true; |
VERIFY( i == 42 ); |
} |
|
VERIFY( test ); |
} |
|
int main() |
{ |
test01(); |
return 0; |
} |
/nested_exception/throw_with_nested.cc
0,0 → 1,80
// { dg-options "-std=gnu++0x" } |
// { dg-require-atomic-builtins "" } |
|
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
#include <exception> |
#include <testsuite_hooks.h> |
|
struct derived : std::nested_exception { }; |
|
struct not_derived { virtual ~not_derived(); }; |
inline not_derived::~not_derived() = default; |
|
void test01() |
{ |
bool test __attribute__((unused)) = false; |
|
try |
{ |
std::throw_with_nested(derived()); |
} |
catch (const std::nested_exception& e) |
{ |
VERIFY( e.nested_ptr() == 0 ); |
try |
{ |
throw; |
} |
catch (const derived&) |
{ |
test = true; |
} |
} |
VERIFY( test ); |
} |
|
void test02() |
{ |
bool test __attribute__((unused)) = false; |
|
try |
{ |
std::throw_with_nested(not_derived()); |
} |
catch (const std::nested_exception& e) |
{ |
VERIFY( e.nested_ptr() == 0 ); |
try |
{ |
throw; |
} |
catch (const not_derived&) |
{ |
test = true; |
} |
} |
VERIFY( test ); |
} |
|
int main() |
{ |
test01(); |
test02(); |
return 0; |
} |
/nested_exception/cons.cc
0,0 → 1,53
// { dg-options "-std=gnu++0x" } |
// { dg-require-atomic-builtins "" } |
|
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
#include <exception> |
#include <testsuite_hooks.h> |
|
void test01() |
{ |
bool test __attribute__((unused)) = true; |
|
std::nested_exception e; |
|
VERIFY( e.nested_ptr() == 0 ); |
} |
|
void test02() |
{ |
bool test __attribute__((unused)) = true; |
|
try |
{ |
throw 42; |
} |
catch (...) |
{ |
std::nested_exception e; |
VERIFY( e.nested_ptr() == std::current_exception() ); |
} |
} |
|
int main() |
{ |
test01(); |
test02(); |
return 0; |
} |
/nested_exception/nested_ptr.cc
0,0 → 1,71
// { dg-options "-std=gnu++0x" } |
// { dg-require-atomic-builtins "" } |
|
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
#include <exception> |
#include <testsuite_hooks.h> |
|
void test01() |
{ |
bool test __attribute__((unused)) = true; |
|
try |
{ |
throw std::nested_exception(); |
} |
catch (const std::nested_exception& e) |
{ |
VERIFY( e.nested_ptr() == 0 ); |
} |
} |
|
void test02() |
{ |
bool test __attribute__((unused)) = true; |
|
try |
{ |
throw 42; |
} |
catch (...) |
{ |
try |
{ |
throw std::nested_exception(); |
} |
catch (const std::nested_exception& e) |
{ |
try |
{ |
std::rethrow_exception( e.nested_ptr() ); |
} |
catch(const int& i) |
{ |
VERIFY( i == 42 ); |
} |
} |
} |
} |
|
int main() |
{ |
test01(); |
test02(); |
return 0; |
} |
/nested_exception/rethrow_if_nested.cc
0,0 → 1,111
// { dg-options "-std=gnu++0x" } |
// { dg-require-atomic-builtins "" } |
|
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
#include <exception> |
#include <testsuite_hooks.h> |
|
struct derived : std::nested_exception { }; |
|
struct base { virtual ~base(); }; |
inline base::~base() = default; |
|
struct derived2 : base, std::nested_exception { }; |
|
void test01() |
{ |
bool test __attribute__((unused)) = false; |
|
try |
{ |
throw 42; |
} |
catch (...) |
{ |
derived d; |
try |
{ |
std::rethrow_if_nested(d); |
} |
catch (const int& i) |
{ |
test = true; |
VERIFY( i == 42 ); |
} |
} |
|
VERIFY( test ); |
} |
|
void test02() |
{ |
bool test __attribute__((unused)) = false; |
|
try |
{ |
throw base(); |
} |
catch (const base& b) |
{ |
std::rethrow_if_nested(b); |
test = true; |
} |
|
VERIFY( test ); |
} |
|
void test03() |
{ |
bool test __attribute__((unused)) = false; |
|
try |
{ |
throw 42; |
} |
catch (...) |
{ |
try |
{ |
throw derived2(); |
} |
catch (const base& b) |
{ |
try |
{ |
std::rethrow_if_nested(b); |
} |
catch (const int& i) |
{ |
VERIFY( i == 42 ); |
test = true; |
} |
} |
} |
|
VERIFY( test ); |
} |
|
|
int main() |
{ |
test01(); |
test02(); |
test03(); |
return 0; |
} |
/exception_ptr/current_exception.cc
0,0 → 1,91
// { dg-options "-std=gnu++0x" } |
// { dg-require-atomic-builtins "" } |
|
// 2008-05-25 Sebastian Redl <sebastian.redl@getdesigned.at> |
|
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// current_exception() under various conditions. |
|
#include <exception> |
#include <testsuite_hooks.h> |
|
void test01() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
exception_ptr ep = current_exception(); |
VERIFY( ep == 0 ); |
} |
|
void test02() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
try { |
throw 0; |
} catch(...) { |
exception_ptr ep = current_exception(); |
VERIFY( ep != 0 ); |
} |
} |
|
void test03() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
try { |
throw exception(); |
} catch(std::exception&) { |
exception_ptr ep = current_exception(); |
VERIFY( ep != 0 ); |
} |
} |
|
void test04() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
try { |
throw 0; |
} catch(...) { |
exception_ptr ep1 = current_exception(); |
try { |
throw 0; |
} catch(...) { |
exception_ptr ep2 = current_exception(); |
VERIFY( ep1 != ep2 ); |
} |
exception_ptr ep3 = current_exception(); |
// Not guaranteed by standard, but by this implementation. |
VERIFY( ep1 == ep3 ); |
} |
} |
|
int main() |
{ |
test01(); |
test02(); |
test03(); |
test04(); |
return 0; |
} |
/exception_ptr/lifespan.cc
0,0 → 1,189
// { dg-options "-std=gnu++0x" } |
// { dg-require-atomic-builtins "" } |
|
// 2008-05-25 Sebastian Redl <sebastian.redl@getdesigned.at> |
|
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// Tests the life span of the exception object. |
|
#include <exception> |
#include <testsuite_hooks.h> |
|
bool may_destruct = false; |
|
class destructing |
{ |
mutable bool copied; |
|
public: |
destructing() : copied(false) { } |
destructing(const destructing &o) : copied(false) { o.copied = true; } |
~destructing() { VERIFY( copied || may_destruct ); } |
}; |
|
void test01() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
may_destruct = false; |
|
// Test the destructing class. |
{ |
destructing *d = new destructing; |
destructing d2(*d); |
delete d; |
may_destruct = true; |
} |
may_destruct = false; |
} |
|
void test02() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
may_destruct = false; |
|
try { |
throw destructing(); |
} catch(...) { |
may_destruct = true; |
} |
may_destruct = false; |
} |
|
void test03() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
may_destruct = false; |
|
try { |
throw destructing(); |
} catch(...) { |
{ |
exception_ptr ep = current_exception(); |
} |
may_destruct = true; |
} |
may_destruct = false; |
} |
|
void test04() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
may_destruct = false; |
|
{ |
exception_ptr ep; |
try { |
throw destructing(); |
} catch(...) { |
ep = current_exception(); |
} |
may_destruct = true; |
} |
may_destruct = false; |
} |
|
void test05_helper() |
{ |
using namespace std; |
try { |
throw destructing(); |
} catch(...) { |
exception_ptr ep = current_exception(); |
rethrow_exception(ep); |
} |
} |
|
void test05() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
may_destruct = false; |
|
try { |
test05_helper(); |
} catch(...) { |
may_destruct = true; |
} |
may_destruct = false; |
} |
|
void test06_helper() |
{ |
using namespace std; |
try { |
throw destructing(); |
} catch(...) { |
exception_ptr ep = current_exception(); |
throw; |
} |
} |
|
void test06() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
may_destruct = false; |
|
try { |
test06_helper(); |
} catch(...) { |
may_destruct = true; |
} |
may_destruct = false; |
} |
|
std::exception_ptr gep; |
|
void test99() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
may_destruct = false; |
|
try { |
throw destructing(); |
} catch(...) { |
gep = current_exception(); |
} |
} |
|
int main() |
{ |
test01(); |
test02(); |
test03(); |
test04(); |
test05(); |
test06(); |
|
test99(); |
may_destruct = true; |
return 0; |
} |
/exception_ptr/40296.cc
0,0 → 1,30
// { dg-do compile } |
// { dg-options "-std=gnu++0x" } |
// { dg-require-atomic-builtins "" } |
|
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
#include <exception> |
|
// libstdc++/40296 |
bool test01() |
{ |
std::exception_ptr p; |
|
return (p == 0); |
} |
/exception_ptr/move.cc
0,0 → 1,45
// { dg-options "-std=gnu++0x" } |
// { dg-require-atomic-builtins "" } |
|
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
#include <exception> |
#include <utility> |
#include <testsuite_hooks.h> |
|
// Verify move construction and assignment are efficient and do not copy. |
// This behaviour is a GNU extension provided for efficiency. |
void test01() |
{ |
bool test = true; |
|
std::exception_ptr p1 = std::copy_exception(test); |
std::exception_ptr p2 = std::move(p1); |
VERIFY( p1 == 0 ); |
VERIFY( !(p2 == 0) ); |
|
p1 = std::move(p2); |
VERIFY( !(p1 == 0) ); |
VERIFY( p2 == 0 ); |
} |
|
int main() |
{ |
test01(); |
return 0; |
} |
/exception_ptr/rethrow_exception.cc
0,0 → 1,114
// { dg-options "-std=gnu++0x" } |
// { dg-require-atomic-builtins "" } |
|
// 2008-05-25 Sebastian Redl <sebastian.redl@getdesigned.at> |
|
// 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
// rethrow_exception() and preservation of data |
|
#include <exception> |
#include <typeinfo> |
#include <cstring> |
#include <stdexcept> |
#include <testsuite_hooks.h> |
|
void test01() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
try { |
rethrow_exception(copy_exception(0)); |
} catch(...) { |
} |
} |
|
void test02() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
try { |
rethrow_exception(copy_exception(runtime_error("test"))); |
} catch(exception &e) { |
VERIFY( typeid(e) == typeid(runtime_error) ); |
VERIFY( strcmp(e.what(), "test") == 0 ); |
} |
} |
|
void test03() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
exception_ptr ep; |
try { |
throw 0; |
} catch(...) { |
ep = current_exception(); |
} |
try { |
rethrow_exception(ep); |
} catch(...) { |
} |
} |
|
void test04() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
// Weave the exceptions in an attempt to confuse the machinery. |
try { |
throw 0; |
} catch(...) { |
exception_ptr ep1 = current_exception(); |
try { |
throw 1; |
} catch(...) { |
exception_ptr ep2 = current_exception(); |
try { |
rethrow_exception(ep1); |
} catch(...) { |
try { |
rethrow_exception(ep2); |
} catch(...) { |
try { |
rethrow_exception(ep1); |
} catch(...) { |
} |
try { |
rethrow_exception(ep2); |
} catch(...) { |
} |
} |
} |
} |
} |
} |
|
int main() |
{ |
test01(); |
test02(); |
test03(); |
test04(); |
|
return 0; |
} |
/bad_exception/cons_virtual_derivation.cc
0,0 → 1,28
// 2007-05-29 Benjamin Kosnik <bkoz@redhat.com> |
|
// Copyright (C) 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 |
// terms of the GNU General Public License as published by the |
// Free Software Foundation; either version 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
#include <exception> |
#include <testsuite_api.h> |
|
int main() |
{ |
typedef std::bad_exception test_type; |
__gnu_test::diamond_derivation<test_type, true>::test(); |
return 0; |
} |
/bad_exception/what.cc
0,0 → 1,40
// 2007-01-30 Paolo Carlini <pcarlini@suse.de> |
|
// Copyright (C) 2007, 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
#include <new> |
#include <typeinfo> |
#include <exception> |
#include <cstring> |
#include <testsuite_hooks.h> |
|
// libstdc++/14493 |
void test01() |
{ |
bool test __attribute__((unused)) = true; |
using namespace std; |
|
bad_exception be; |
VERIFY( !strcmp(be.what(), "std::bad_exception") ); |
} |
|
int main() |
{ |
test01(); |
return 0; |
} |
/bad_exception/23591_thread-1.c
0,0 → 1,62
// { dg-require-sharedlib "" } |
// { dg-options "-g -O2 -pthread -ldl -x c" { target *-*-linux* } } |
|
// Copyright (C) 2005, 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 3, 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 COPYING3. If not see |
// <http://www.gnu.org/licenses/>. |
|
#include <pthread.h> |
#include <dlfcn.h> |
#include <errno.h> |
#include <stdio.h> |
#include <string.h> |
|
// NB: This must be compiled and linked as a "C" executable. |
static void* run(void* arg) |
{ |
typedef void (*function_type) (void); |
void* lib; |
void (*cb)(); |
|
lib = dlopen("./testsuite_shared.so", RTLD_NOW); |
if (lib == NULL) |
{ |
printf("dlopen failed: %s\n", strerror(errno)); |
return NULL; |
} |
cb = (function_type) dlsym(lib, "try_throw_exception"); |
if (cb == NULL) |
{ |
printf("dlsym failed: %s\n", strerror(errno)); |
return NULL; |
} |
cb(); |
dlclose(lib); |
return NULL; |
} |
|
// libstdc++/23591 |
int main(void) |
{ |
pthread_t pt; |
|
if (pthread_create(&pt, NULL, &run, NULL) != 0) |
return 1; |
if (pthread_join(pt, NULL) != 0) |
return 1; |
|
return 0; |
} |
bad_exception/23591_thread-1.c
Property changes :
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Index: bad_typeid/cons_virtual_derivation.cc
===================================================================
--- bad_typeid/cons_virtual_derivation.cc (nonexistent)
+++ bad_typeid/cons_virtual_derivation.cc (revision 826)
@@ -0,0 +1,28 @@
+// 2007-05-29 Benjamin Kosnik
+
+// Copyright (C) 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
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, 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 COPYING3. If not see
+// .
+
+#include
+#include
+
+int main()
+{
+ typedef std::bad_typeid test_type;
+ __gnu_test::diamond_derivation::test();
+ return 0;
+}
Index: bad_typeid/what.cc
===================================================================
--- bad_typeid/what.cc (nonexistent)
+++ bad_typeid/what.cc (revision 826)
@@ -0,0 +1,40 @@
+// 2007-01-30 Paolo Carlini
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+#include
+#include
+#include
+#include
+
+// libstdc++/14493
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+ using namespace std;
+
+ bad_typeid bt;
+ VERIFY( !strcmp(bt.what(), "std::bad_typeid") );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
Index: new_delete_placement.cc
===================================================================
--- new_delete_placement.cc (nonexistent)
+++ new_delete_placement.cc (revision 826)
@@ -0,0 +1,39 @@
+// 2002-07-24 Benjamin Kosnik
+
+// Copyright (C) 2002, 2004, 2009 Free Software Foundation
+//
+// 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 3, 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 COPYING3. If not see
+// .
+
+// 18.4.1.3 - Placement forms
+
+#include
+#include
+
+// libstdc++/7286
+void test01()
+{
+ void* pc = new char;
+ void* pa = new char[10];
+ void* tmp = NULL;
+ operator delete(pc, tmp);
+ operator delete[](pa, tmp);
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
Index: headers/csignal/types_std.cc
===================================================================
--- headers/csignal/types_std.cc (nonexistent)
+++ headers/csignal/types_std.cc (revision 826)
@@ -0,0 +1,25 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+ std::sig_atomic_t s;
+}
Index: headers/csignal/functions_std.cc
===================================================================
--- headers/csignal/functions_std.cc (nonexistent)
+++ headers/csignal/functions_std.cc (revision 826)
@@ -0,0 +1,26 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+ using std::raise;
+ using std::signal;
+}
Index: headers/csignal/macros.cc
===================================================================
--- headers/csignal/macros.cc (nonexistent)
+++ headers/csignal/macros.cc (revision 826)
@@ -0,0 +1,55 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+#ifndef SIGABRT
+ #error "SIGABRT_must_be_a_macro"
+#endif
+
+#ifndef SIGILL
+ #error "SIGILL_must_be_a_macro"
+#endif
+
+#ifndef SIGSEGV
+ #error "SIGSEGV_must_be_a_macro"
+#endif
+
+#ifndef SIG_DFL
+ #error "SIG_DFL_must_be_a_macro"
+#endif
+
+#ifndef SIGFPE
+ #error "SIGFPE_must_be_a_macro"
+#endif
+
+#ifndef SIGINT
+ #error "SIGINT_must_be_a_macro"
+#endif
+
+#ifndef SIGTERM
+ #error "SIGTERM_must_be_a_macro"
+#endif
+
+#ifndef SIG_ERR
+ #error "SIG_ERR_must_be_a_macro"
+#endif
+}
Index: headers/ctime/types_std.cc
===================================================================
--- headers/ctime/types_std.cc (nonexistent)
+++ headers/ctime/types_std.cc (revision 826)
@@ -0,0 +1,25 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+ std::clock_t c;
+}
Index: headers/ctime/functions_std.cc
===================================================================
--- headers/ctime/functions_std.cc (nonexistent)
+++ headers/ctime/functions_std.cc (revision 826)
@@ -0,0 +1,25 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+ using std::clock;
+}
Index: headers/ctime/macros.cc
===================================================================
--- headers/ctime/macros.cc (nonexistent)
+++ headers/ctime/macros.cc (revision 826)
@@ -0,0 +1,27 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+#ifndef CLOCKS_PER_SEC
+ #error "CLOCKS_PER_SEC_must_be_a_macro"
+#endif
+}
Index: headers/limits/synopsis.cc
===================================================================
--- headers/limits/synopsis.cc (nonexistent)
+++ headers/limits/synopsis.cc (revision 826)
@@ -0,0 +1,47 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace std {
+ template class numeric_limits;
+
+#if 0
+ enum float_round_style;
+ enum float_denorm_style;
+#endif
+
+ template<> class numeric_limits;
+
+ template<> class numeric_limits;
+ template<> class numeric_limits;
+ template<> class numeric_limits;
+ template<> class numeric_limits;
+
+ template<> class numeric_limits;
+ template<> class numeric_limits;
+ template<> class numeric_limits;
+ template<> class numeric_limits;
+ template<> class numeric_limits;
+ template<> class numeric_limits;
+
+ template<> class numeric_limits;
+ template<> class numeric_limits;
+ template<> class numeric_limits;
+}
Index: headers/climits/values.cc
===================================================================
--- headers/climits/values.cc (nonexistent)
+++ headers/climits/values.cc (revision 826)
@@ -0,0 +1,52 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+ // char
+ char c1 = CHAR_BIT;
+ char c2 = CHAR_MAX;
+ char c3 = CHAR_MIN;
+
+ // int
+ int i2 = INT_MAX;
+ int i3 = INT_MIN;
+
+ // short
+ short s2 = SHRT_MAX;
+ short s3 = SHRT_MIN;
+
+ // long
+ long l2 = LONG_MAX;
+ long l3 = LONG_MIN;
+
+ unsigned long mb = MB_LEN_MAX;
+
+ // signed char
+ signed char sc1 = SCHAR_MIN;
+ signed char sc2 = SCHAR_MAX;
+
+ // unsigned
+ unsigned int ui = UINT_MAX;
+ unsigned short us = USHRT_MAX;
+ unsigned long ul = ULONG_MAX;
+
+}
Index: headers/cstdlib/functions_std.cc
===================================================================
--- headers/cstdlib/functions_std.cc (nonexistent)
+++ headers/cstdlib/functions_std.cc (revision 826)
@@ -0,0 +1,30 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+ using std::abort;
+ using std::atexit;
+ using std::exit;
+
+ using std::getenv;
+ using std::system;
+}
Index: headers/cstdlib/macros.cc
===================================================================
--- headers/cstdlib/macros.cc (nonexistent)
+++ headers/cstdlib/macros.cc (revision 826)
@@ -0,0 +1,32 @@
+// { dg-do compile }
+// 2001-02-06 Benjamin Kosnik
+
+// Copyright (C) 2001, 2003, 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+#ifndef EXIT_FAILURE
+ #error "EXIT_FAILURE_must_be_a_macro"
+#endif
+
+#ifndef EXIT_SUCCESS
+ #error "EXIT_SUCCESS_must_be_a_macro"
+#endif
+}
Index: headers/csetjmp/types_std.cc
===================================================================
--- headers/csetjmp/types_std.cc (nonexistent)
+++ headers/csetjmp/types_std.cc (revision 826)
@@ -0,0 +1,25 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+ std::jmp_buf j;
+}
Index: headers/csetjmp/functions_std.cc
===================================================================
--- headers/csetjmp/functions_std.cc (nonexistent)
+++ headers/csetjmp/functions_std.cc (revision 826)
@@ -0,0 +1,25 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+ using std::longjmp;
+}
Index: headers/csetjmp/macros.cc
===================================================================
--- headers/csetjmp/macros.cc (nonexistent)
+++ headers/csetjmp/macros.cc (revision 826)
@@ -0,0 +1,27 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+#ifndef setjmp
+ #error "setjmp_must_be_a_macro"
+#endif
+}
Index: headers/cstdarg/types_std.cc
===================================================================
--- headers/cstdarg/types_std.cc (nonexistent)
+++ headers/cstdarg/types_std.cc (revision 826)
@@ -0,0 +1,25 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+ std::va_list v;
+}
Index: headers/cstdarg/macros.cc
===================================================================
--- headers/cstdarg/macros.cc (nonexistent)
+++ headers/cstdarg/macros.cc (revision 826)
@@ -0,0 +1,35 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+#ifndef va_arg
+ #error "va_arg_must_be_a_macro"
+#endif
+
+#ifndef va_start
+ #error "va_start_must_be_a_macro"
+#endif
+
+#ifndef va_end
+ #error "va_end_must_be_a_macro"
+#endif
+}
Index: headers/cfloat/values.cc
===================================================================
--- headers/cfloat/values.cc (nonexistent)
+++ headers/cfloat/values.cc (revision 826)
@@ -0,0 +1,53 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+ double d1 = DBL_DIG;
+ double d2 = DBL_EPSILON;
+ double d3 = DBL_MANT_DIG;
+ double d4 = DBL_MAX;
+ double d5 = DBL_MAX_10_EXP;
+ double d6 = DBL_MAX_EXP;
+ double d7 = DBL_MIN;
+ double d8 = DBL_MIN_10_EXP;
+ double d9 = DBL_MIN_EXP;
+
+ float f1 = FLT_DIG;
+ float f2 = FLT_EPSILON;
+ float f3 = FLT_MANT_DIG;
+ float f4 = FLT_MAX;
+ float f5 = FLT_MAX_10_EXP;
+ float f6 = FLT_MAX_EXP;
+ float f7 = FLT_MIN;
+ float f8 = FLT_MIN_10_EXP;
+ float f9 = FLT_MIN_EXP;
+
+ long double ld1 = LDBL_DIG;
+ long double ld2 = LDBL_EPSILON;
+ long double ld3 = LDBL_MANT_DIG;
+ long double ld4 = LDBL_MAX;
+ long double ld5 = LDBL_MAX_10_EXP;
+ long double ld6 = LDBL_MAX_EXP;
+ long double ld7 = LDBL_MIN;
+ long double ld8 = LDBL_MIN_10_EXP;
+ long double ld9 = LDBL_MIN_EXP;
+}
Index: headers/cstdint/types_std_c++0x.cc
===================================================================
--- headers/cstdint/types_std_c++0x.cc (nonexistent)
+++ headers/cstdint/types_std_c++0x.cc (revision 826)
@@ -0,0 +1,54 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+// { dg-require-cstdint "" }
+
+// Copyright (C) 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
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, 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 COPYING3. If not see
+// .
+
+#include
+
+void test01()
+{
+ typedef std::int8_t my_int8_t;
+ typedef std::int16_t my_int16_t;
+ typedef std::int32_t my_int32_t;
+ typedef std::int64_t my_int64_t;
+ typedef std::int_fast8_t my_int_fast8_t;
+ typedef std::int_fast16_t my_int_fast16_t;
+ typedef std::int_fast32_t my_int_fast32_t;
+ typedef std::int_fast64_t my_int_fast64_t;
+ typedef std::int_least8_t my_int_least8_t;
+ typedef std::int_least16_t my_int_least16_t;
+ typedef std::int_least32_t my_int_least32_t;
+ typedef std::int_least64_t my_int_least64_t;
+ typedef std::intmax_t my_intmax_t;
+ typedef std::intptr_t my_intptr_t;
+ typedef std::uint8_t my_uint8_t;
+ typedef std::uint16_t my_uint16_t;
+ typedef std::uint32_t my_uint32_t;
+ typedef std::uint64_t my_uint64_t;
+ typedef std::uint_fast8_t my_uint_fast8_t;
+ typedef std::uint_fast16_t my_uint_fast16_t;
+ typedef std::uint_fast32_t my_uint_fast32_t;
+ typedef std::uint_fast64_t my_uint_fast64_t;
+ typedef std::uint_least8_t my_uint_least8_t;
+ typedef std::uint_least16_t my_uint_least16_t;
+ typedef std::uint_least32_t my_uint_least32_t;
+ typedef std::uint_least64_t my_uint_least64_t;
+ typedef std::uintmax_t my_uintmax_t;
+ typedef std::uintptr_t my_uintptr_t;
+}
Index: headers/cstdint/std_c++0x_neg.cc
===================================================================
--- headers/cstdint/std_c++0x_neg.cc (nonexistent)
+++ headers/cstdint/std_c++0x_neg.cc (revision 826)
@@ -0,0 +1,26 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++98" }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include // { dg-excess-errors "In file included from" }
+
+// { dg-error "upcoming ISO" "" { target *-*-* } 31 }
+
+
+
Index: headers/cstdbool/std_c++0x_neg.cc
===================================================================
--- headers/cstdbool/std_c++0x_neg.cc (nonexistent)
+++ headers/cstdbool/std_c++0x_neg.cc (revision 826)
@@ -0,0 +1,26 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++98" }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include // { dg-excess-errors "In file included from" }
+
+// { dg-error "upcoming ISO" "" { target *-*-* } 31 }
+
+
+
Index: headers/new/types_std.cc
===================================================================
--- headers/new/types_std.cc (nonexistent)
+++ headers/new/types_std.cc (revision 826)
@@ -0,0 +1,28 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+ typedef std::bad_alloc t1;
+ typedef std::nothrow_t t2;
+
+ typedef std::new_handler t3;
+}
Index: headers/new/synopsis.cc
===================================================================
--- headers/new/synopsis.cc (nonexistent)
+++ headers/new/synopsis.cc (revision 826)
@@ -0,0 +1,42 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace std {
+ class bad_alloc;
+ struct nothrow_t;
+ extern const nothrow_t nothrow;
+ typedef void (*new_handler)();
+ new_handler set_new_handler(new_handler new_p) throw();
+}
+
+void* operator new(std::size_t size) throw(std::bad_alloc);
+void* operator new(std::size_t size, const std::nothrow_t&) throw();
+void operator delete(void* ptr) throw();
+void operator delete(void* ptr, const std::nothrow_t&) throw();
+void* operator new[](std::size_t size) throw(std::bad_alloc);
+void* operator new[](std::size_t size, const std::nothrow_t&) throw();
+void operator delete[](void* ptr) throw();
+void operator delete[](void* ptr, const std::nothrow_t&) throw();
+
+void* operator new (std::size_t size, void* ptr) throw();
+void* operator new[](std::size_t size, void* ptr) throw();
+void operator delete (void* ptr, void*) throw();
+void operator delete[](void* ptr, void*) throw();
Index: headers/cstddef/types_std.cc
===================================================================
--- headers/cstddef/types_std.cc (nonexistent)
+++ headers/cstddef/types_std.cc (revision 826)
@@ -0,0 +1,26 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+ std::size_t s;
+ std::ptrdiff_t p;
+}
Index: headers/cstddef/macros.cc
===================================================================
--- headers/cstddef/macros.cc (nonexistent)
+++ headers/cstddef/macros.cc (revision 826)
@@ -0,0 +1,52 @@
+// { dg-do compile }
+// { dg-options "-Wno-conversion-null" }
+// 2001-02-06 Benjamin Kosnik
+
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+ struct test_type
+ {
+ int i;
+ int j;
+ };
+
+ // offsetof
+ void test01()
+ {
+ std::size_t i __attribute__((unused)) = offsetof(struct test_type, i);
+#ifndef offsetof
+ #error "offsetof_must_be_a_macro"
+#endif
+ }
+
+ // NULL
+ void test02()
+ {
+ // Must not be (void*)0
+ const int j __attribute__((unused)) = NULL;
+
+#ifndef NULL
+ #error "NULL_must_be_a_macro"
+#endif
+ }
+}
Index: headers/typeinfo/types_std.cc
===================================================================
--- headers/typeinfo/types_std.cc (nonexistent)
+++ headers/typeinfo/types_std.cc (revision 826)
@@ -0,0 +1,28 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+ typedef std::type_info t1;
+ typedef std::bad_cast t2;
+
+ typedef std::bad_typeid t3;
+}
Index: headers/typeinfo/synopsis.cc
===================================================================
--- headers/typeinfo/synopsis.cc (nonexistent)
+++ headers/typeinfo/synopsis.cc (revision 826)
@@ -0,0 +1,26 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace std {
+ class type_info;
+ class bad_cast;
+ class bad_typeid;
+}
Index: headers/exception/types_std.cc
===================================================================
--- headers/exception/types_std.cc (nonexistent)
+++ headers/exception/types_std.cc (revision 826)
@@ -0,0 +1,26 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace gnu
+{
+ typedef std::exception t1;
+ typedef std::bad_exception t2;
+}
Index: headers/exception/synopsis.cc
===================================================================
--- headers/exception/synopsis.cc (nonexistent)
+++ headers/exception/synopsis.cc (revision 826)
@@ -0,0 +1,35 @@
+// { dg-do compile }
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+namespace std {
+ class exception;
+ class bad_exception;
+
+ typedef void (*unexpected_handler)();
+ unexpected_handler set_unexpected(unexpected_handler f ) throw();
+ void unexpected();
+
+ typedef void (*terminate_handler)();
+ terminate_handler set_terminate(terminate_handler f ) throw();
+ void terminate() throw();
+
+ bool uncaught_exception() throw();
+}
Index: uncaught_exception/14026.cc
===================================================================
--- uncaught_exception/14026.cc (nonexistent)
+++ uncaught_exception/14026.cc (revision 826)
@@ -0,0 +1,53 @@
+// Copyright (C) 2004, 2007, 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 3, 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 COPYING3. If not see
+// .
+
+// PR 14026
+// 18.6.4 uncaught_exception
+
+#include
+#include
+#include
+
+static void
+no_uncaught ()
+{
+ if (std::uncaught_exception())
+ abort();
+}
+
+int
+main()
+{
+ try
+ {
+ throw 1;
+ }
+ catch (...)
+ {
+ try
+ {
+ throw;
+ }
+ catch (...)
+ {
+ no_uncaught ();
+ }
+ }
+ no_uncaught();
+
+ return 0;
+}
Index: pthread_guard.cc
===================================================================
--- pthread_guard.cc (nonexistent)
+++ pthread_guard.cc (revision 826)
@@ -0,0 +1,65 @@
+//
+// Copyright (C) 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
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, 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 COPYING3. If not see
+// .
+
+// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* alpha*-*-osf* } }
+// { dg-options "-pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-darwin* alpha*-*-osf* } }
+
+#include
+#include
+
+// This used to deadlock with the old libstdc++ because there is only one
+// global mutex guarding initialization of statics and it is held during by
+// the initializer thread of a static until the variable is completely
+// initialized. If the initializer thread creates and waits for another thread
+// which also initializes a static variable, there will be a deadlock because
+// the first thread is holding the mutex and waiting for the second thread,
+// which is blocked when it is acquiring the mutex.
+
+int
+get_bar (void)
+{
+ return 1;
+}
+
+void*
+do_something (void *arg)
+{
+ static int bar __attribute__((unused)) = get_bar ();
+ return NULL;
+}
+
+int
+get_foo (void)
+{
+ pthread_t new_thread;
+
+ if (pthread_create (&new_thread, NULL, do_something, NULL) != 0)
+ std::abort ();
+
+ if (pthread_join (new_thread, NULL) != 0)
+ std::abort ();
+
+ return 1;
+}
+
+int
+main (int argc, char **argv)
+{
+ static int foo __attribute__((unused)) = get_foo ();
+ return 0;
+}
Index: exception/what.cc
===================================================================
--- exception/what.cc (nonexistent)
+++ exception/what.cc (revision 826)
@@ -0,0 +1,40 @@
+// 2007-01-30 Paolo Carlini
+
+// Copyright (C) 2007, 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 3, 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 COPYING3. If not see
+// .
+
+#include
+#include
+#include
+#include
+#include
+
+// libstdc++/14493
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+ using namespace std;
+
+ exception e;
+ VERIFY( !strcmp(e.what(), "std::exception") );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
Index: exception/38732.cc
===================================================================
--- exception/38732.cc (nonexistent)
+++ exception/38732.cc (revision 826)
@@ -0,0 +1,92 @@
+// 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 3, 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 COPYING3. If not see
+// .
+
+#include
+#include
+#include
+#include "unwind.h"
+#include
+
+// Before exception_ptr was introduced, some programs copied
+// part of unwind-cxx.h and used __cxa_get_globals to get at the
+// current exceptionType. __cxa_exception structure is described in the
+// C++ ABI, so they have the right to assume it works.
+// Ensure it is true.
+
+struct __cxa_exception
+{
+ std::type_info *exceptionType;
+ void (*exceptionDestructor)(void *);
+ std::unexpected_handler unexpectedHandler;
+ std::terminate_handler terminateHandler;
+ __cxa_exception *nextException;
+ int handlerCount;
+#ifdef __ARM_EABI_UNWINDER__
+ __cxa_exception* nextPropagatingException;
+ int propagationCount;
+#else
+ int handlerSwitchValue;
+ const unsigned char *actionRecord;
+ const unsigned char *languageSpecificData;
+ _Unwind_Ptr catchTemp;
+ void *adjustedPtr;
+#endif
+ _Unwind_Exception unwindHeader;
+};
+
+struct __cxa_eh_globals
+{
+ __cxa_exception *caughtExceptions;
+ unsigned int uncaughtExceptions;
+#ifdef __ARM_EABI_UNWINDER__
+ __cxa_exception* propagatingExceptions;
+#endif
+};
+
+extern "C" __cxa_eh_globals *__cxa_get_globals () throw();
+
+// PR libstdc++/38732
+void test01 ()
+{
+ bool test __attribute__((unused)) = true;
+ try {
+ throw 0;
+ } catch(...) {
+ __cxa_exception *exc = __cxa_get_globals()->caughtExceptions;
+ VERIFY ( exc != NULL );
+ VERIFY ( typeid(int) == *exc->exceptionType );
+ }
+ try {
+ throw 0LL;
+ } catch(...) {
+ __cxa_exception *exc = __cxa_get_globals()->caughtExceptions;
+ VERIFY ( exc != NULL );
+ VERIFY ( typeid(long long int) == *exc->exceptionType );
+ }
+ try {
+ throw 0.0;
+ } catch(...) {
+ __cxa_exception *exc = __cxa_get_globals()->caughtExceptions;
+ VERIFY ( exc != NULL );
+ VERIFY ( typeid(double) == *exc->exceptionType );
+ }
+}
+
+int main ()
+{
+ test01 ();
+}
Index: initializer_list/requirements/typedefs.cc
===================================================================
--- initializer_list/requirements/typedefs.cc (nonexistent)
+++ initializer_list/requirements/typedefs.cc (revision 826)
@@ -0,0 +1,34 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+// 2009-05-27 Benjamin Kosnik
+
+// 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+void test01()
+{
+ // Check for required typedefs
+ typedef std::initializer_list test_type;
+ typedef test_type::value_type type1;
+ typedef test_type::size_type type2;
+ typedef test_type::reference type3;
+ typedef test_type::const_reference type4;
+ typedef test_type::iterator type5;
+ typedef test_type::const_iterator type5;
+}
Index: initializer_list/requirements/explicit_instantiation.cc
===================================================================
--- initializer_list/requirements/explicit_instantiation.cc (nonexistent)
+++ initializer_list/requirements/explicit_instantiation.cc (revision 826)
@@ -0,0 +1,24 @@
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+// 2009-05-27 Benjamin Kosnik
+
+// 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 3, 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 COPYING3. If not see
+// .
+
+#include
+
+template class std::initializer_list;