From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- .../numeric_limits/requirements/constexpr_data.cc | 98 ++++++++++++++++++++++ .../requirements/constexpr_functions.cc | 70 ++++++++++++++++ .../requirements/explicit_instantiation/1.cc | 41 +++++++++ 3 files changed, 209 insertions(+) create mode 100644 libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc create mode 100644 libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc create mode 100644 libstdc++-v3/testsuite/18_support/numeric_limits/requirements/explicit_instantiation/1.cc (limited to 'libstdc++-v3/testsuite/18_support/numeric_limits/requirements') diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc b/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc new file mode 100644 index 000000000..0b82a75db --- /dev/null +++ b/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc @@ -0,0 +1,98 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2010 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 + +namespace __gnu_test +{ + struct constexpr_member_data + { + template + void + operator()() + { + struct _Concept + { + void __constraint() + { + using std::float_denorm_style; + using std::float_round_style; + constexpr bool v1 __attribute__((unused)) + = _Ttesttype::is_specialized; + constexpr int v2 __attribute__((unused)) + = _Ttesttype::digits; + constexpr int v3 __attribute__((unused)) + = _Ttesttype::digits10; + constexpr int v4 __attribute__((unused)) + = _Ttesttype::max_digits10; + constexpr bool v5 __attribute__((unused)) + = _Ttesttype::is_signed; + constexpr bool v6 __attribute__((unused)) + = _Ttesttype::is_integer; + constexpr bool v7 __attribute__((unused)) + = _Ttesttype::is_exact; + constexpr int v8 __attribute__((unused)) + = _Ttesttype::radix; + constexpr int v9 __attribute__((unused)) + = _Ttesttype::min_exponent; + constexpr int v10 __attribute__((unused)) + = _Ttesttype::min_exponent10; + constexpr int v11 __attribute__((unused)) + = _Ttesttype::max_exponent; + constexpr int v12 __attribute__((unused)) + = _Ttesttype::max_exponent10; + constexpr bool v13 __attribute__((unused)) + = _Ttesttype::has_infinity; + constexpr bool v14 __attribute__((unused)) + = _Ttesttype::has_quiet_NaN; + constexpr bool v15 __attribute__((unused)) + = _Ttesttype::has_signaling_NaN; + constexpr float_denorm_style v16 __attribute__((unused)) + = _Ttesttype::has_denorm; + constexpr bool v17 __attribute__((unused)) + = _Ttesttype::has_denorm_loss; + constexpr bool v18 __attribute__((unused)) + = _Ttesttype::is_iec559; + constexpr bool v19 __attribute__((unused)) + = _Ttesttype::is_bounded; + constexpr bool v20 __attribute__((unused)) + = _Ttesttype::is_modulo; + constexpr bool v21 __attribute__((unused)) + = _Ttesttype::traps; + constexpr bool v22 __attribute__((unused)) + = _Ttesttype::tinyness_before; + constexpr float_round_style v23 __attribute__((unused)) + = _Ttesttype::round_style; + } + }; + + _Concept c; + c.__constraint(); + } + }; +} + +int main() +{ + __gnu_test::constexpr_member_data test; + __gnu_cxx::typelist::apply_generator(test, __gnu_test::limits_tl()); + return 0; +} diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc b/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc new file mode 100644 index 000000000..f1848f218 --- /dev/null +++ b/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc @@ -0,0 +1,70 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2010 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 + +namespace __gnu_test +{ + struct constexpr_member_functions + { + template + void + operator()() + { + struct _Concept + { + void __constraint() + { + constexpr _Tbasetype v1 __attribute__((unused)) + = _Ttesttype::min(); + constexpr _Tbasetype v2 __attribute__((unused)) + = _Ttesttype::max(); + constexpr _Tbasetype v3 __attribute__((unused)) + = _Ttesttype::lowest(); + constexpr _Tbasetype v4 __attribute__((unused)) + = _Ttesttype::epsilon(); + constexpr _Tbasetype v5 __attribute__((unused)) + = _Ttesttype::round_error(); + constexpr _Tbasetype v6 __attribute__((unused)) + = _Ttesttype::infinity(); + constexpr _Tbasetype v7 __attribute__((unused)) + = _Ttesttype::quiet_NaN(); + constexpr _Tbasetype v8 __attribute__((unused)) + = _Ttesttype::signaling_NaN(); + constexpr _Tbasetype v9 __attribute__((unused)) + = _Ttesttype::denorm_min(); + } + }; + + _Concept c; + c.__constraint(); + } + }; +} + +int main() +{ + __gnu_test::constexpr_member_functions test; + __gnu_cxx::typelist::apply_generator(test, + __gnu_test::limits_tl(), + __gnu_test::integral_types::type()); + return 0; +} diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/explicit_instantiation/1.cc b/libstdc++-v3/testsuite/18_support/numeric_limits/requirements/explicit_instantiation/1.cc new file mode 100644 index 000000000..aa75bd14c --- /dev/null +++ b/libstdc++-v3/testsuite/18_support/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 +// . + + +// This file tests explicit instantiation of library containers. + +#include + +template + 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 >; -- cgit v1.2.3