Tested x86_64-linux. Pushed to trunk. -- >8 --
When I added these tests I gave them .h file extensions, so they've never been run. They need to use the no_pch option, so that they only test the <complex.h> header and don't get <complex> via <bits/stdc++.h>. libstdc++-v3/ChangeLog: * testsuite/26_numerics/headers/complex.h/std_c++11.h: Moved to... * testsuite/26_numerics/headers/complex.h/std_c++11.cc: ...here. * testsuite/26_numerics/headers/complex.h/std_c++98.h: Moved to... * testsuite/26_numerics/headers/complex.h/std_c++98.cc: ...here. Check macro first and then #undef. * testsuite/26_numerics/headers/complex.h/std_gnu++11.h: Moved to... * testsuite/26_numerics/headers/complex.h/std_gnu++11.cc: ...here. --- .../complex.h/{std_c++11.h => std_c++11.cc} | 4 +++- .../complex.h/{std_c++98.h => std_c++98.cc} | 14 ++++++++------ .../complex.h/{std_gnu++11.h => std_gnu++11.cc} | 3 ++- 3 files changed, 13 insertions(+), 8 deletions(-) rename libstdc++-v3/testsuite/26_numerics/headers/complex.h/{std_c++11.h => std_c++11.cc} (91%) rename libstdc++-v3/testsuite/26_numerics/headers/complex.h/{std_c++98.h => std_c++98.cc} (87%) rename libstdc++-v3/testsuite/26_numerics/headers/complex.h/{std_gnu++11.h => std_gnu++11.cc} (95%) diff --git a/libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++11.h b/libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++11.cc similarity index 91% rename from libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++11.h rename to libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++11.cc index f74b13498d7..5cac1218163 100644 --- a/libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++11.h +++ b/libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++11.cc @@ -15,7 +15,9 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. -// { dg-options "-std=c++11" } +// { dg-do compile { target c++11 } } +// { dg-add-options strict_std } +// { dg-add-options no_pch } #include <complex.h> diff --git a/libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++98.h b/libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++98.cc similarity index 87% rename from libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++98.h rename to libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++98.cc index 79facef8d5b..4c9bd6e6a08 100644 --- a/libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++98.h +++ b/libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++98.cc @@ -15,13 +15,19 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. -// { dg-options "-std=c++98" } +// { dg-do compile { target c++98_only } } +// { dg-add-options strict_std } +// { dg-add-options no_pch } #include <complex.h> -// Should be equivalent to C99 <complex>, not C++ <complex> +// Should be equivalent to C99 <complex.h>, not C++ <complex> +#ifndef complex +# error "'complex' is not defined as a macro by <complex.h> for -std=c++98" +#endif namespace std { +#undef complex struct complex; } @@ -49,7 +55,3 @@ namespace test using ::creal; } #endif - -#ifndef complex -# error "'complex' is not defined as a macro by <complex.h> for -std=c++98" -#endif diff --git a/libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_gnu++11.h b/libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_gnu++11.cc similarity index 95% rename from libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_gnu++11.h rename to libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_gnu++11.cc index 20c55a5944e..4a6fc00d390 100644 --- a/libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_gnu++11.h +++ b/libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_gnu++11.cc @@ -15,7 +15,8 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. -// { dg-options "-std=gnu++11" } +// { dg-do compile { target c++11 } } +// { dg-add-options no_pch } #include <complex.h> -- 2.41.0