From ab56cbed60ad78b3d77065a5a84b7c1306fe3b5e Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Thu, 21 Jan 2016 13:33:27 +0000 Subject: [PATCH] libstdc++/69406 Fix test to check for supported headers PR libstdc++/69406 * include/bits/cpp_type_traits.h: Ensure C++ language linkage. * include/ext/type_traits.h: Likewise. * testsuite/17_intro/headers/c++2011/linkage.cc: Check autoconf macros for presence of C headers. * testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Adjust dg-error line number. * testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Likewise. * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Likewise. * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Likewise. From-SVN: r232672 --- libstdc++-v3/ChangeLog | 13 ++++++++++++ libstdc++-v3/include/bits/cpp_type_traits.h | 3 +++ libstdc++-v3/include/ext/type_traits.h | 3 +++ .../17_intro/headers/c++2011/linkage.cc | 20 +++++++++++++++++++ .../type_traits/add_unsigned_floating_neg.cc | 2 +- .../type_traits/add_unsigned_integer_neg.cc | 4 ++-- .../remove_unsigned_floating_neg.cc | 2 +- .../remove_unsigned_integer_neg.cc | 4 ++-- 8 files changed, 45 insertions(+), 6 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 72ee6edcf8d..3b559c516ed 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,16 @@ +2016-01-21 Jonathan Wakely + + PR libstdc++/69406 + * include/bits/cpp_type_traits.h: Ensure C++ language linkage. + * include/ext/type_traits.h: Likewise. + * testsuite/17_intro/headers/c++2011/linkage.cc: Check autoconf macros + for presence of C headers. + * testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Adjust + dg-error line number. + * testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Likewise. + * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Likewise. + * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Likewise. + 2016-01-20 Torvald Riegel PR libstdc++/69310 diff --git a/libstdc++-v3/include/bits/cpp_type_traits.h b/libstdc++-v3/include/bits/cpp_type_traits.h index 3b188d4cc80..fff1e9949d0 100644 --- a/libstdc++-v3/include/bits/cpp_type_traits.h +++ b/libstdc++-v3/include/bits/cpp_type_traits.h @@ -64,6 +64,8 @@ // removed. // +extern "C++" { + namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION @@ -408,5 +410,6 @@ __INT_N(__GLIBCXX_TYPE_INT_N_3) _GLIBCXX_END_NAMESPACE_VERSION } // namespace +} // extern "C++" #endif //_CPP_TYPE_TRAITS_H diff --git a/libstdc++-v3/include/ext/type_traits.h b/libstdc++-v3/include/ext/type_traits.h index 0a4f4255015..dd276578969 100644 --- a/libstdc++-v3/include/ext/type_traits.h +++ b/libstdc++-v3/include/ext/type_traits.h @@ -34,6 +34,8 @@ #include #include +extern "C++" { + namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION @@ -214,5 +216,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace +} // extern "C++" #endif diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc b/libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc index 33e70535c1c..67c384b81ff 100644 --- a/libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc +++ b/libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc @@ -20,15 +20,23 @@ // libstdc++/69386 +#include + extern "C" { #include +#ifdef _GLIBCXX_HAVE_COMPLEX_H #include +#endif #include #include +#ifdef _GLIBCXX_HAVE_FENV_H #include +#endif #include +#ifdef _GLIBCXX_HAVE_INTTYPES_H #include +#endif #include #include #include @@ -36,15 +44,27 @@ extern "C" #include #include #include +#ifdef _GLIBCXX_HAVE_STDBOOL_H #include +#endif #include +#ifdef _GLIBCXX_HAVE_STDINT_H #include +#endif #include #include #include +#ifdef _GLIBCXX_HAVE_TGMATH_H #include +#endif #include +#if __has_include() #include +#endif +#ifdef _GLIBCXX_HAVE_WCHAR_H #include +#endif +#ifdef _GLIBCXX_HAVE_WCTYPE_H #include +#endif } diff --git a/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc b/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc index f0c48d0c16c..09d2c7c41a4 100644 --- a/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc +++ b/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc @@ -35,4 +35,4 @@ int main() } // { dg-error "required from" "" { target *-*-* } 28 } -// { dg-error "no type" "" { target *-*-* } 69 } +// { dg-error "no type" "" { target *-*-* } 71 } diff --git a/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc b/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc index cee08a39a8d..567684ee958 100644 --- a/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc +++ b/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc @@ -36,5 +36,5 @@ int main() } // { dg-error "invalid use of incomplete" "" { target *-*-* } 28 } -// { dg-error "declaration of" "" { target *-*-* } 98 } -// { dg-error "declaration of" "" { target *-*-* } 101 } +// { dg-error "declaration of" "" { target *-*-* } 100 } +// { dg-error "declaration of" "" { target *-*-* } 103 } diff --git a/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc b/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc index 98ba8a6fdc6..c946a4f0ad6 100644 --- a/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc +++ b/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc @@ -35,4 +35,4 @@ int main() } // { dg-error "required from" "" { target *-*-* } 28 } -// { dg-error "no type" "" { target *-*-* } 112 } +// { dg-error "no type" "" { target *-*-* } 114 } diff --git a/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc b/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc index 14e671d7a90..a2cc4c768c2 100644 --- a/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc +++ b/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc @@ -36,5 +36,5 @@ int main() } // { dg-error "invalid use of incomplete" "" { target *-*-* } 28 } -// { dg-error "declaration of" "" { target *-*-* } 141 } -// { dg-error "declaration of" "" { target *-*-* } 144 } +// { dg-error "declaration of" "" { target *-*-* } 143 } +// { dg-error "declaration of" "" { target *-*-* } 146 }