From 76d0be83b2b60ed61c4c85e6579b2427e223a6af Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Thu, 4 Nov 2010 17:02:25 +0000 Subject: [PATCH] re PR libstdc++/46303 ('mutex' is not a member of 'std' failures in 30_threads/call_once/constexpr.cc, 30_threads/mutex/cons/constexpr.cc, 30_threads/once_flag/cons/constexpr.cc) 2010-11-04 Paolo Carlini PR libstdc++/46303 * testsuite/30_threads/call_once/constexpr.cc: Add missing dg-require directives. * testsuite/30_threads/mutex/cons/constexpr.cc: Likewise. * testsuite/30_threads/once_flag/cons/constexpr.cc: Likewise. 2010-11-04 Paolo Carlini * include/std/ratio (ratio_add, ratio_subtract, ratio_multiply, ratio_divide): Declare the data members constexpr. * testsuite/20_util/ratio/requirements/constexpr_data.cc: Extend. From-SVN: r166319 --- libstdc++-v3/ChangeLog | 14 ++++++++ libstdc++-v3/include/std/ratio | 32 +++++++++---------- .../ratio/requirements/constexpr_data.cc | 8 ++++- .../30_threads/call_once/constexpr.cc | 2 ++ .../30_threads/mutex/cons/constexpr.cc | 2 ++ .../30_threads/once_flag/cons/constexpr.cc | 2 ++ 6 files changed, 43 insertions(+), 17 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index acc4f582150..8ea46f0847d 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,17 @@ +2010-11-04 Paolo Carlini + + PR libstdc++/46303 + * testsuite/30_threads/call_once/constexpr.cc: Add missing dg-require + directives. + * testsuite/30_threads/mutex/cons/constexpr.cc: Likewise. + * testsuite/30_threads/once_flag/cons/constexpr.cc: Likewise. + +2010-11-04 Paolo Carlini + + * include/std/ratio (ratio_add, ratio_subtract, ratio_multiply, + ratio_divide): Declare the data members constexpr. + * testsuite/20_util/ratio/requirements/constexpr_data.cc: Extend. + 2010-11-03 Benjamin Kosnik * include/std/tuple (tuple): Make default constructors constexpr. diff --git a/libstdc++-v3/include/std/ratio b/libstdc++-v3/include/std/ratio index b424ef341a4..80c5d15e789 100644 --- a/libstdc++-v3/include/std/ratio +++ b/libstdc++-v3/include/std/ratio @@ -185,15 +185,15 @@ _GLIBCXX_BEGIN_NAMESPACE(std) __safe_multiply<_R2::num, (_R1::den / __gcd)>::value>::value, __safe_multiply<_R1::den, (_R2::den / __gcd)>::value> type; - static const intmax_t num = type::num; - static const intmax_t den = type::den; + static constexpr intmax_t num = type::num; + static constexpr intmax_t den = type::den; }; template - const intmax_t ratio_add<_R1, _R2>::num; + constexpr intmax_t ratio_add<_R1, _R2>::num; template - const intmax_t ratio_add<_R1, _R2>::den; + constexpr intmax_t ratio_add<_R1, _R2>::den; /// ratio_subtract template @@ -203,15 +203,15 @@ _GLIBCXX_BEGIN_NAMESPACE(std) _R1, ratio<-_R2::num, _R2::den>>::type type; - static const intmax_t num = type::num; - static const intmax_t den = type::den; + static constexpr intmax_t num = type::num; + static constexpr intmax_t den = type::den; }; template - const intmax_t ratio_subtract<_R1, _R2>::num; + constexpr intmax_t ratio_subtract<_R1, _R2>::num; template - const intmax_t ratio_subtract<_R1, _R2>::den; + constexpr intmax_t ratio_subtract<_R1, _R2>::den; /// ratio_multiply template @@ -230,15 +230,15 @@ _GLIBCXX_BEGIN_NAMESPACE(std) __safe_multiply<(_R1::den / __gcd2), (_R2::den / __gcd1)>::value> type; - static const intmax_t num = type::num; - static const intmax_t den = type::den; + static constexpr intmax_t num = type::num; + static constexpr intmax_t den = type::den; }; template - const intmax_t ratio_multiply<_R1, _R2>::num; + constexpr intmax_t ratio_multiply<_R1, _R2>::num; template - const intmax_t ratio_multiply<_R1, _R2>::den; + constexpr intmax_t ratio_multiply<_R1, _R2>::den; /// ratio_divide template @@ -250,15 +250,15 @@ _GLIBCXX_BEGIN_NAMESPACE(std) _R1, ratio<_R2::den, _R2::num>>::type type; - static const intmax_t num = type::num; - static const intmax_t den = type::den; + static constexpr intmax_t num = type::num; + static constexpr intmax_t den = type::den; }; template - const intmax_t ratio_divide<_R1, _R2>::num; + constexpr intmax_t ratio_divide<_R1, _R2>::num; template - const intmax_t ratio_divide<_R1, _R2>::den; + constexpr intmax_t ratio_divide<_R1, _R2>::den; /// ratio_equal template diff --git a/libstdc++-v3/testsuite/20_util/ratio/requirements/constexpr_data.cc b/libstdc++-v3/testsuite/20_util/ratio/requirements/constexpr_data.cc index 2665a815f4b..d3a1543deca 100644 --- a/libstdc++-v3/testsuite/20_util/ratio/requirements/constexpr_data.cc +++ b/libstdc++-v3/testsuite/20_util/ratio/requirements/constexpr_data.cc @@ -49,6 +49,12 @@ namespace __gnu_test int main() { __gnu_test::constexpr_member_data test; - test.operator()>(); + typedef std::ratio<600, 900> R1; + typedef std::ratio<700, 200> R2; + test.operator()(); + test.operator()>(); + test.operator()>(); + test.operator()>(); + test.operator()>(); return 0; } diff --git a/libstdc++-v3/testsuite/30_threads/call_once/constexpr.cc b/libstdc++-v3/testsuite/30_threads/call_once/constexpr.cc index 9518b72ea92..56efa06146b 100644 --- a/libstdc++-v3/testsuite/30_threads/call_once/constexpr.cc +++ b/libstdc++-v3/testsuite/30_threads/call_once/constexpr.cc @@ -1,5 +1,7 @@ // { dg-do compile } // { dg-options "-std=gnu++0x" } +// { dg-require-cstdint "" } +// { dg-require-gthreads "" } // Copyright (C) 2010 Free Software Foundation, Inc. // diff --git a/libstdc++-v3/testsuite/30_threads/mutex/cons/constexpr.cc b/libstdc++-v3/testsuite/30_threads/mutex/cons/constexpr.cc index 9518b72ea92..56efa06146b 100644 --- a/libstdc++-v3/testsuite/30_threads/mutex/cons/constexpr.cc +++ b/libstdc++-v3/testsuite/30_threads/mutex/cons/constexpr.cc @@ -1,5 +1,7 @@ // { dg-do compile } // { dg-options "-std=gnu++0x" } +// { dg-require-cstdint "" } +// { dg-require-gthreads "" } // Copyright (C) 2010 Free Software Foundation, Inc. // diff --git a/libstdc++-v3/testsuite/30_threads/once_flag/cons/constexpr.cc b/libstdc++-v3/testsuite/30_threads/once_flag/cons/constexpr.cc index 52f3b5d3d4d..4f238de9b3c 100644 --- a/libstdc++-v3/testsuite/30_threads/once_flag/cons/constexpr.cc +++ b/libstdc++-v3/testsuite/30_threads/once_flag/cons/constexpr.cc @@ -1,5 +1,7 @@ // { dg-do compile } // { dg-options "-std=gnu++0x" } +// { dg-require-cstdint "" } +// { dg-require-gthreads "" } // Copyright (C) 2010 Free Software Foundation, Inc. //