The library specializations for __int128 and __float128 are not
defined when __STRICT_ANSI__ is defined, so some tests fail when
compiled with -std=c++NN rather than -std=gnu++NN. This lets them
pass.

        * testsuite/18_support/numeric_limits/40856.cc [__STRICT_ANSI__]: Do
        not test 128-bit types.
        * testsuite/20_util/is_floating_point/value.cc: Likewise.
        * testsuite/20_util/is_integral/value.cc: Likewise.
        * testsuite/20_util/is_signed/value.cc: Likewise.
        * testsuite/20_util/is_unsigned/value.cc: Likewise.
        * testsuite/20_util/make_signed/requirements/typedefs-1.cc: Likewise.
        * testsuite/20_util/make_signed/requirements/typedefs-2.cc: Likewise.
        * testsuite/20_util/make_unsigned/requirements/typedefs-1.cc:
        Likewise.
        * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc:
        Likewise.

Tested x86_64-linux, committed to trunk.

commit e4571f4714264369afd18d1a60e67d034fccc839
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Thu Jul 28 10:16:13 2016 +0100

    Check __STRICT_ANSI__ for 128-bit arithmetic types
    
        * testsuite/18_support/numeric_limits/40856.cc [__STRICT_ANSI__]: Do
        not test 128-bit types.
        * testsuite/20_util/is_floating_point/value.cc: Likewise.
        * testsuite/20_util/is_integral/value.cc: Likewise.
        * testsuite/20_util/is_signed/value.cc: Likewise.
        * testsuite/20_util/is_unsigned/value.cc: Likewise.
        * testsuite/20_util/make_signed/requirements/typedefs-1.cc: Likewise.
        * testsuite/20_util/make_signed/requirements/typedefs-2.cc: Likewise.
        * testsuite/20_util/make_unsigned/requirements/typedefs-1.cc:
        Likewise.
        * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc:
        Likewise.

diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc 
b/libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc
index d317a3f..7577b59 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc
@@ -21,7 +21,7 @@
 #include <limits>
 
 // libstdc++/40856 
-#ifdef _GLIBCXX_USE_INT128
+#if defined _GLIBCXX_USE_INT128 && ! defined __STRICT_ANSI__
 static_assert(std::numeric_limits<__int128>::is_specialized == true, "");
 static_assert(std::numeric_limits<unsigned __int128>::is_specialized == true,
              "");
diff --git a/libstdc++-v3/testsuite/20_util/is_floating_point/value.cc 
b/libstdc++-v3/testsuite/20_util/is_floating_point/value.cc
index 8ed73fc..c2736fa 100644
--- a/libstdc++-v3/testsuite/20_util/is_floating_point/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_floating_point/value.cc
@@ -47,6 +47,7 @@ void test01()
   static_assert(test_category<is_floating_point, double>(true), "");
   static_assert(test_category<is_floating_point, long double>(true), "");
 
+#ifndef __STRICT_ANSI__
   // GNU Extensions.
 #ifdef _GLIBCXX_USE_FLOAT128
   static_assert(test_category<is_floating_point, __float128>(true), "");
@@ -57,6 +58,7 @@ void test01()
   static_assert(test_category<is_floating_point,
                unsigned __int128>(false), "");
 #endif
+#endif
 
   // Sanity check.
   static_assert(test_category<is_floating_point, ClassType>(false), "");
diff --git a/libstdc++-v3/testsuite/20_util/is_integral/value.cc 
b/libstdc++-v3/testsuite/20_util/is_integral/value.cc
index 7d1cb9e..56974dc 100644
--- a/libstdc++-v3/testsuite/20_util/is_integral/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_integral/value.cc
@@ -51,6 +51,7 @@ void test01()
   static_assert(test_category<is_integral, double>(false), "");
   static_assert(test_category<is_integral, long double>(false), "");
 
+#ifndef __STRICT_ANSI__
   // GNU Extensions.
 #ifdef _GLIBCXX_USE_INT128
   static_assert(test_category<is_integral, __int128>(true), "");
@@ -60,6 +61,7 @@ void test01()
 #ifdef _GLIBCXX_USE_FLOAT128
   static_assert(test_category<is_integral, __float128>(false), "");
 #endif
+#endif
 
   // Sanity check.
   static_assert(test_category<is_integral, ClassType>(false), "");
diff --git a/libstdc++-v3/testsuite/20_util/is_signed/value.cc 
b/libstdc++-v3/testsuite/20_util/is_signed/value.cc
index ab09d0c..2e25103 100644
--- a/libstdc++-v3/testsuite/20_util/is_signed/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_signed/value.cc
@@ -50,6 +50,7 @@ void test01()
   static_assert(test_category<is_signed, double>(true), "");
   static_assert(test_category<is_signed, long double>(true), "");
 
+#ifndef __STRICT_ANSI__
   // GNU Extensions.
 #ifdef _GLIBCXX_USE_INT128
   static_assert(test_category<is_signed, __int128>(true), "");
@@ -59,6 +60,7 @@ void test01()
 #ifdef _GLIBCXX_USE_FLOAT128
   static_assert(test_category<is_signed, __float128>(true), "");
 #endif
+#endif
 
   // Sanity check.
   static_assert(test_category<is_signed, ClassType>(false), "");
diff --git a/libstdc++-v3/testsuite/20_util/is_unsigned/value.cc 
b/libstdc++-v3/testsuite/20_util/is_unsigned/value.cc
index 3ced5bb..75bec3b 100644
--- a/libstdc++-v3/testsuite/20_util/is_unsigned/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_unsigned/value.cc
@@ -50,6 +50,7 @@ void test01()
   static_assert(test_category<is_unsigned, double>(false), "");
   static_assert(test_category<is_unsigned, long double>(false), "");
 
+#ifndef __STRICT_ANSI__
   // GNU Extensions.
 #ifdef _GLIBCXX_USE_INT128
   static_assert(test_category<is_unsigned, unsigned __int128>(true), "");
@@ -59,6 +60,7 @@ void test01()
 #ifdef _GLIBCXX_USE_FLOAT128
   static_assert(test_category<is_unsigned, __float128>(false), "");
 #endif
+#endif
 
   // Sanity check.
   static_assert(test_category<is_unsigned, ClassType>(false), "");
diff --git 
a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc 
b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc
index be8d4b0..40b9fb8 100644
--- a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc
+++ b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc
@@ -67,6 +67,7 @@ void test01()
   static_assert( sizeof(test24_type) == sizeof(test_enum),
                  "make_signed<test_enum> makes type of same size" );
 
+#ifndef __STRICT_ANSI__
   // GNU Extensions.
 #ifdef _GLIBCXX_USE_INT128
   typedef make_signed<unsigned __int128>::type  test25_type;
@@ -77,4 +78,5 @@ void test01()
   static_assert( is_same<test26_type, __int128>::value,
                  "make_signed<__int128>" );
 #endif
+#endif
 }
diff --git 
a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc 
b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
index 2378db1..f58e869 100644
--- a/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
+++ b/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
@@ -60,6 +60,7 @@ void test01()
   typedef make_signed<test_enum>::type         test24_type;
   static_assert(is_same<test24_type, short>::value, "");
 
+#ifndef __STRICT_ANSI__
   // GNU Extensions.
 #ifdef _GLIBCXX_USE_INT128
   typedef make_signed<unsigned __int128>::type  test25_type;
@@ -68,4 +69,5 @@ void test01()
   typedef make_signed<__int128>::type                  test26_type;
   static_assert(is_same<test26_type, __int128>::value, "");
 #endif
+#endif
 }
diff --git 
a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc 
b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc
index 5971cab..09b63bb 100644
--- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc
+++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc
@@ -61,6 +61,7 @@ void test01()
   static_assert(is_unsigned<test24_type>::value, "");
   static_assert(sizeof(test24_type) == sizeof(test_enum), "");
 
+#ifndef __STRICT_ANSI__
   // GNU Extensions.
 #ifdef _GLIBCXX_USE_INT128
   typedef make_unsigned<unsigned __int128>::type test25_type;
@@ -69,4 +70,5 @@ void test01()
   typedef make_unsigned<__int128>::type         test26_type;
   static_assert(is_same<test26_type, unsigned __int128>::value, "");
 #endif
+#endif
 }
diff --git 
a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc 
b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
index 19aa5d3..98d8bed 100644
--- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
+++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
@@ -60,6 +60,7 @@ void test01()
   typedef make_unsigned<test_enum>::type         test24_type;
   static_assert(is_same<test24_type, unsigned short>::value, "");
 
+#ifndef __STRICT_ANSI__
   // GNU Extensions.
 #ifdef _GLIBCXX_USE_INT128
   typedef make_unsigned<unsigned __int128>::type  test25_type;
@@ -68,4 +69,5 @@ void test01()
   typedef make_unsigned<__int128>::type          test26_type;
   static_assert(is_same<test26_type, unsigned __int128>::value, "");
 #endif
+#endif
 }

Reply via email to