diff mbox

[5/9] libstdc++ testsuite changes

Message ID d01bb8bb-02bf-08ec-fdee-c56bb9905267@codesourcery.com
State New
Headers show

Commit Message

Andrew Jenner April 1, 2017, 4:48 p.m. UTC
2017-04-01  Andrew Jenner  <andrew@codesourcery.com>

	* testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc: Add 
support for ia16.
	* testsuite/25_algorithms/random_shuffle/moveable.cc: Likewise.
	* testsuite/25_algorithms/nth_element/58800.cc: Likewise.
	* testsuite/18_support/numeric_limits/max_digits10.cc: Likewise.
	* 
testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/typedefs.cc: 
Likewise.
	* 
testsuite/tr1/5_numerical_facilities/random/discard_block/operators/equal.cc: 
Likewise.
	* 
testsuite/tr1/5_numerical_facilities/random/discard_block/operators/not_equal.cc: 
Likewise.
	* 
testsuite/tr1/5_numerical_facilities/random/discard_block/operators/serialize.cc: 
Likewise.
	* testsuite/tr1/4_metaprogramming/extent/value.cc: Likewise.
	* testsuite/lib/prune.exp: Likewise.
	* testsuite/lib/libstdc++.exp: Likewise.
	* testsuite/special_functions/15_hermite/check_value.cc: Likewise.
	* testsuite/27_io/ios_base/types/fmtflags/case_label.cc: Likewise.
	* testsuite/27_io/ios_base/types/openmode/case_label.cc: Likewise.
	* testsuite/27_io/ios_base/types/iostate/case_label.cc: Likewise.
	* testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc: Likewise.
	* testsuite/27_io/basic_istream/getline/wchar_t/5.cc: Likewise.
	* testsuite/27_io/headers/cstdio/functions_std.cc: Likewise.
	* testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc: 
Likewise.
	* testsuite/19_diagnostics/system_error/39880.cc: Likewise.
	* 
testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_functions.cc: 
Likewise.
	* 
testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_data.cc: 
Likewise.
	* testsuite/20_util/extent/value.cc: Likewise.
	* testsuite/20_util/tuple/creation_functions/constexpr.cc: Likewise.

Comments

Jonathan Wakely April 3, 2017, 3:31 p.m. UTC | #1
On 01/04/17 17:48 +0100, Andrew Jenner wrote:
>Index: libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc
>===================================================================
>--- libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc	(revision 475331)
>+++ libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc	(revision 475455)
>@@ -18,20 +18,22 @@
> // 25.3.2 [lib.alg.nth.element]
>
> // { dg-options "-std=gnu++11" }
>+// { dg-require-effective-target stdint_types }
>
> #include <algorithm>
> #include <vector>
> #include <testsuite_hooks.h>
> #include <testsuite_iterators.h>
>+#include <stdint.h>
>
> using __gnu_test::test_container;
> using __gnu_test::random_access_iterator_wrapper;
>
>-typedef test_container<int, random_access_iterator_wrapper> Container;
>+typedef test_container<int_least32_t, random_access_iterator_wrapper> Container;
>
> void test01()
> {
>-  std::vector<int> v = {
>+  std::vector<int_least32_t> v = {

We could just use long here, but this is OK too.

>     207089,
>     202585,
>     180067,


>Index: libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
>===================================================================
>--- libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc	(revision 475331)
>+++ libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc	(revision 475455)
>@@ -75,6 +75,6 @@ case_labels(bitmask_type b)
>     case ~__INT_MAX__:
>       break;
>     }
>-  static_assert( sizeof(std::underlying_type_t<bitmask_type>) == sizeof(int),
>+  static_assert( sizeof(std::underlying_type_t<bitmask_type>) >= sizeof(int),
>       "underlying type has same range of values as int");
> }

We need to be careful here.

This check is ensuring there is no undefined behaviour in
<bits/ios_base.h>.

Same for ...

>Index: libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
>===================================================================
>--- libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc	(revision 475331)
>+++ libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc	(revision 475455)
>@@ -51,6 +51,6 @@ case_labels(bitmask_type b)
>     case ~__INT_MAX__:
>       break;
>     }
>-  static_assert( sizeof(std::underlying_type_t<bitmask_type>) == sizeof(int),
>+  static_assert( sizeof(std::underlying_type_t<bitmask_type>) >= sizeof(int),
>       "underlying type has same range of values as int");
> }
>Index: libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
>===================================================================
>--- libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc	(revision 475331)
>+++ libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc	(revision 475455)
>@@ -47,6 +47,6 @@ case_labels(bitmask_type b)
>     case ~__INT_MAX__:
>       break;
>     }
>-  static_assert( sizeof(std::underlying_type_t<bitmask_type>) == sizeof(int),
>+  static_assert( sizeof(std::underlying_type_t<bitmask_type>) >= sizeof(int),
>       "underlying type has same range of values as int");
> }

If the target uses a larger size for these enumerations then we need
to be sure the code is still correct, not just adjust the tests.

  enum _Ios_Fmtflags 
    { 
      ...
      _S_ios_fmtflags_end = 1L << 16,
      _S_ios_fmtflags_max = __INT_MAX__,
      _S_ios_fmtflags_min = ~__INT_MAX__
    };

  inline _GLIBCXX_CONSTEXPR _Ios_Fmtflags
  operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
  { return _Ios_Fmtflags(static_cast<int>(__a) & static_cast<int>(__b)); }

 ...

  inline _GLIBCXX_CONSTEXPR _Ios_Fmtflags
  operator~(_Ios_Fmtflags __a)
  { return _Ios_Fmtflags(~static_cast<int>(__a)); }

I think the operations and casts are still valid if the type is larger
than int. If not, we could replace __INT_MAX__ with __LONG_MAX__ when
defined(__ia16__) and then use long for the static_cast conversions.



>Index: libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc
>===================================================================
>--- libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc	(revision 475331)
>+++ libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc	(revision 475455)
>@@ -19,7 +19,7 @@
>
> // 27.8.1.4 Overridden virtual functions
>
>-// { dg-options "-DMAX_SIZE=4096" { target simulator } }
>+// { dg-options "-DMAX_SIZE=4096" { target { simulator || ia16-*-* } } }
>
> #ifndef MAX_SIZE
> #define MAX_SIZE (1 << 18)
>Index: libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc
>===================================================================
>--- libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc	(revision 475331)
>+++ libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc	(revision 475455)
>@@ -50,7 +50,11 @@ check(wistream& stream, const wstring& s
> {
>   bool test __attribute__((unused)) = true;
>
>+#ifdef __ia16__
>+  static wchar_t buf[1000];
>+#else
>   static wchar_t buf[1000000];
>+#endif

Hmm, I guess this can't use { target { simulator || ia16-*-* } } to
reduce the MAX_LENGTH instead, because this array would still be too
large for ia16. OK.

>   wstring::size_type index = 0, index_new = 0;
>   unsigned n = 0;
>
>Index: libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc
>===================================================================
>--- libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc	(revision 475331)
>+++ libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc	(revision 475455)
>@@ -104,7 +104,10 @@ void test01()
>
>   TEST_ERRC(not_connected);
>   TEST_ERRC(not_enough_memory);
>+
>+#ifdef _GLIBCXX_HAVE_ENOTSUP
>   TEST_ERRC(not_supported);
>+#endif

Ironic that ENOTSUP is not supported :-)


>Index: libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_functions.cc
>===================================================================
>--- libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_functions.cc	(revision 475331)
>+++ libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_functions.cc	(revision 475455)
>@@ -1,4 +1,4 @@
>-// { dg-do compile }
>+// { dg-do compile { target { stdint_types } } }
> // { dg-options "-std=gnu++11" }
>
> // Copyright (C) 2010-2016 Free Software Foundation, Inc.
>@@ -20,6 +20,7 @@
>
> #include <random>
> #include <testsuite_common_types.h>
>+#include <stdint.h>
>
> namespace __gnu_test
> {
>@@ -49,7 +50,7 @@ namespace __gnu_test
> int main()
> {
>   __gnu_test::constexpr_member_functions test;
>-  typedef std::linear_congruential_engine<unsigned int, 41, 0, 2147483647> type;
>+  typedef std::linear_congruential_engine<uint_least32_t, 41, 0, 2147483647> type;

I see no harm in just using INT_MAX for the last parameter, so the
type can stay as unsigned int.



>Index: libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_data.cc
>===================================================================
>--- libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_data.cc	(revision 475331)
>+++ libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_data.cc	(revision 475455)
>@@ -1,4 +1,4 @@
>-// { dg-do compile }
>+// { dg-do compile { target { stdint_types } } }
> // { dg-options "-std=gnu++11" }
>
> // Copyright (C) 2010-2016 Free Software Foundation, Inc.
>@@ -20,6 +20,7 @@
>
> #include <random>
> #include <testsuite_common_types.h>
>+#include <stdint.h>
>
> namespace __gnu_test
> {
>@@ -53,7 +54,7 @@ namespace __gnu_test
> int main()
> {
>   __gnu_test::constexpr_member_data test;
>-  typedef std::linear_congruential_engine<unsigned int, 41, 0, 2147483647> type;
>+  typedef std::linear_congruential_engine<uint_least32_t, 41, 0, 2147483647> type;

Ditto.

>   test.operator()<type>();
>   return 0;
> }


>Index: libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr.cc
>===================================================================
>--- libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr.cc	(revision 475331)
>+++ libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr.cc	(revision 475455)
>@@ -1,4 +1,4 @@
>-// { dg-do compile }
>+// { dg-do compile { target { stdint_types } } }
> // { dg-options "-std=gnu++11" }
>
> // Copyright (C) 2011-2016 Free Software Foundation, Inc.
>@@ -24,6 +24,7 @@
> // changes this test may begin to fail.
>
> #include <tuple>
>+#include <stdint.h>
>
> bool test __attribute__((unused)) = true;
>
>@@ -60,9 +61,9 @@ test_forward_as_tuple()
>   {
>     static int i(22);
>     static float f(22.222);
>-    static int ii(77799);
>+    static int_least32_t ii(77799);

This can just be changed to a smaller number that fits in int.

>
>-    typedef std::tuple<int&, float&, int&&> tuple_type;
>+    typedef std::tuple<int&, float&, int_least32_t&&> tuple_type;
>     constexpr tuple_type p1 __attribute__((unused))
>       = std::forward_as_tuple(i, f, std::move(ii));
>   }
>@@ -83,9 +84,9 @@ test_tie()
>   {
>     static int i(22);
>     static float f(22.222);
>-    static const int ii(77799);
>+    static const int_least32_t ii(77799);
>
>-    typedef std::tuple<int&, float&, const int&> tuple_type;
>+    typedef std::tuple<int&, float&, const int_least32_t&> tuple_type;
>     constexpr tuple_type p1 __attribute__((unused))
>       = std::tie(i, f, ii);
>   }
>
>

Otherwise this seems OK for stage 1.
diff mbox

Patch

Index: libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc
===================================================================
--- libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc	(revision 475331)
+++ libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc	(revision 475455)
@@ -22,6 +22,12 @@ 
 #include <algorithm>
 #include <testsuite_hooks.h>

+#ifdef __ia16__
+#define MAX 1650
+#else
+#define MAX 16500
+#endif
+
 // In the occasion of libstdc++/25482
 void test01()
 {
@@ -33,10 +39,10 @@  void test01()
   wifstream fbuf_ref("istream_unformatted-1.txt"),
             fbuf("istream_unformatted-1.txt");

-  wchar_t buffer_ref[16500],
-          buffer[16500];
+  wchar_t buffer_ref[MAX],
+          buffer[MAX];

-  fbuf_ref.read(buffer_ref, 16500);
+  fbuf_ref.read(buffer_ref, MAX);

   in_iterator_type beg(fbuf);
   in_iterator_type end;
@@ -45,7 +51,7 @@  void test01()
   VERIFY( fbuf_ref.good() );
   VERIFY( fbuf.good() );

-  VERIFY( !wmemcmp(buffer, buffer_ref, 16500) );
+  VERIFY( !wmemcmp(buffer, buffer_ref, MAX) );
 }

 int main()
Index: libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc
===================================================================
--- libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc	(revision 475331)
+++ libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc	(revision 475455)
@@ -34,7 +34,11 @@  using __gnu_test::rvalstruct;

 typedef test_container<rvalstruct, random_access_iterator_wrapper> Container;

+#ifdef __ia16__
+const unsigned int N = 1000;
+#else
 const unsigned int N = 10000;
+#endif
 int A[N]; // This is made global because we don't want it on the stack

 void fill_ascending()
Index: libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc
===================================================================
--- libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc	(revision 475331)
+++ libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc	(revision 475455)
@@ -18,20 +18,22 @@ 
 // 25.3.2 [lib.alg.nth.element]

 // { dg-options "-std=gnu++11" }
+// { dg-require-effective-target stdint_types }

 #include <algorithm>
 #include <vector>
 #include <testsuite_hooks.h>
 #include <testsuite_iterators.h>
+#include <stdint.h>

 using __gnu_test::test_container;
 using __gnu_test::random_access_iterator_wrapper;

-typedef test_container<int, random_access_iterator_wrapper> Container;
+typedef test_container<int_least32_t, random_access_iterator_wrapper> Container;

 void test01()
 {
-  std::vector<int> v = {
+  std::vector<int_least32_t> v = {
     207089,
     202585,
     180067,
Index: libstdc++-v3/testsuite/18_support/numeric_limits/max_digits10.cc
===================================================================
--- libstdc++-v3/testsuite/18_support/numeric_limits/max_digits10.cc	(revision 475331)
+++ libstdc++-v3/testsuite/18_support/numeric_limits/max_digits10.cc	(revision 475455)
@@ -1,5 +1,6 @@ 
 // { dg-options "-std=gnu++11" }
 // { dg-add-options ieee }
+// { dg-require-effective-target stdint_types }

 // 2010-02-25  Ed Smith-Rowland

@@ -25,6 +26,7 @@ 
 #include <limits>
 #include <cmath>
 #include <testsuite_hooks.h>
+#include <stdint.h>

 void
 test01()
@@ -57,12 +59,12 @@  test01()
 			      * 643 / 2136);
   VERIFY( std::numeric_limits<float>::max_digits10 == f_max_digits10 );

-  const int d_max_digits10 = (2 + std::numeric_limits<double>::digits
-			      * 643 / 2136);
+  const int_least32_t d_max_digits10 = (2 + std::numeric_limits<double>::digits
+			      * 643L / 2136);
   VERIFY( std::numeric_limits<double>::max_digits10 == d_max_digits10 );

-  const int ld_max_digits10 = (2 + std::numeric_limits<long double>::digits
-			       * 643 / 2136);
+  const int_least32_t ld_max_digits10 = (2 + std::numeric_limits<long double>::digits
+			       * 643L / 2136);
   VERIFY( std::numeric_limits<long double>::max_digits10 == ld_max_digits10 );
 }

Index: libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/typedefs.cc
===================================================================
--- libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/typedefs.cc	(revision 475331)
+++ libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/typedefs.cc	(revision 475455)
@@ -31,7 +31,7 @@  test01()

   typedef discard_block
     <
-    subtract_with_carry<long, (1 << 24), 10, 24>,
+    subtract_with_carry<long, (1L << 24), 10, 24>,
     389, 24
     > test_type;

Index: libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/equal.cc
===================================================================
--- libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/equal.cc	(revision 475331)
+++ libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/equal.cc	(revision 475455)
@@ -31,7 +31,7 @@  test01()

   discard_block
     <
-    subtract_with_carry<long, (1 << 24), 10, 24>,
+    subtract_with_carry<long, (1L << 24), 10, 24>,
     389, 24
     > u, v;

Index: libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/not_equal.cc
===================================================================
--- libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/not_equal.cc	(revision 475331)
+++ libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/not_equal.cc	(revision 475455)
@@ -31,13 +31,13 @@  test01()

   discard_block
     <
-    subtract_with_carry<long, (1 << 24), 10, 24>,
+    subtract_with_carry<long, (1L << 24), 10, 24>,
     389, 24
     > u(1);

   discard_block
     <
-    subtract_with_carry<long, (1 << 24), 10, 24>,
+    subtract_with_carry<long, (1L << 24), 10, 24>,
     389, 24
     > v(2);

Index: libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/serialize.cc
===================================================================
--- libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/serialize.cc	(revision 475331)
+++ libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/serialize.cc	(revision 475455)
@@ -34,7 +34,7 @@  test01()
   std::stringstream str;
   discard_block
     <
-    subtract_with_carry<long, (1 << 24), 10, 24>,
+    subtract_with_carry<long, (1L << 24), 10, 24>,
     389, 24
     > u, v;

Index: libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/value.cc
===================================================================
--- libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/value.cc	(revision 475331)
+++ libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/value.cc	(revision 475455)
@@ -37,7 +37,7 @@  void test01()
   VERIFY( (extent<int[2], 1>::value == 0) );
   VERIFY( (extent<int[2][4], 1>::value == 4) );
   VERIFY( (extent<int[][4], 1>::value == 4) );
-  VERIFY( (extent<int[10][4][6][8][12][2], 4>::value == 12) );
+  VERIFY( (extent<int[3][4][6][8][12][2], 4>::value == 12) );
   VERIFY( (test_property<extent, ClassType, 0>(0)) );
   VERIFY( (test_property<extent, ClassType[2], 0>(2)) );
   VERIFY( (test_property<extent, ClassType[2][4], 0>(2)) );
@@ -46,7 +46,7 @@  void test01()
   VERIFY( (extent<ClassType[2], 1>::value == 0) );
   VERIFY( (extent<ClassType[2][4], 1>::value == 4) );
   VERIFY( (extent<ClassType[][4], 1>::value == 4) );
-  VERIFY( (extent<ClassType[10][4][6][8][12][2], 4>::value == 12) );
+  VERIFY( (extent<ClassType[3][4][6][8][12][2], 4>::value == 12) );
 }

 int main()
Index: libstdc++-v3/testsuite/lib/prune.exp
===================================================================
--- libstdc++-v3/testsuite/lib/prune.exp	(revision 475331)
+++ libstdc++-v3/testsuite/lib/prune.exp	(revision 475455)
@@ -33,6 +33,8 @@  proc libstdc++-dg-prune { system text }

 #    send_user "Before:$text\n"

+    regsub -all "(^|\n)\[^\n\]*: warning: target system does not support debug output\[^\n\]*" $text "" text
+
     # Ignore caret diagnostics. Unfortunately dejaGNU trims leading
     # spaces, so one cannot rely on them being present.
     regsub -all "(^|\n)\[^\n\]+\n *\\^\n" $text "\n" text
Index: libstdc++-v3/testsuite/lib/libstdc++.exp
===================================================================
--- libstdc++-v3/testsuite/lib/libstdc++.exp	(revision 475331)
+++ libstdc++-v3/testsuite/lib/libstdc++.exp	(revision 475455)
@@ -503,6 +503,8 @@  proc v3_target_compile { source dest typ
     lappend options "timeout=[timeout_value]"

     set comp_output [target_compile $source $dest $type $options]
+    regsub -all "(^|\n)\[^\n\]*: warning: target system does not support debug output\[^\n\]*" $comp_output "" comp_output
+    set comp_output [string trim $comp_output]

     return $comp_output
 }
Index: libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
===================================================================
--- libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc	(revision 475331)
+++ libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc	(revision 475455)
@@ -1,4 +1,5 @@ 
 // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
+// { dg-skip-if "Does not fit in 64kB" { "ia16-*-*" } }
 //
 // Copyright (C) 2016 Free Software Foundation, Inc.
 //
Index: libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
===================================================================
--- libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc	(revision 475331)
+++ libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc	(revision 475455)
@@ -75,6 +75,6 @@  case_labels(bitmask_type b)
     case ~__INT_MAX__:
       break;
     }
-  static_assert( sizeof(std::underlying_type_t<bitmask_type>) == sizeof(int),
+  static_assert( sizeof(std::underlying_type_t<bitmask_type>) >= sizeof(int),
       "underlying type has same range of values as int");
 }
Index: libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
===================================================================
--- libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc	(revision 475331)
+++ libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc	(revision 475455)
@@ -51,6 +51,6 @@  case_labels(bitmask_type b)
     case ~__INT_MAX__:
       break;
     }
-  static_assert( sizeof(std::underlying_type_t<bitmask_type>) == sizeof(int),
+  static_assert( sizeof(std::underlying_type_t<bitmask_type>) >= sizeof(int),
       "underlying type has same range of values as int");
 }
Index: libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
===================================================================
--- libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc	(revision 475331)
+++ libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc	(revision 475455)
@@ -47,6 +47,6 @@  case_labels(bitmask_type b)
     case ~__INT_MAX__:
       break;
     }
-  static_assert( sizeof(std::underlying_type_t<bitmask_type>) == sizeof(int),
+  static_assert( sizeof(std::underlying_type_t<bitmask_type>) >= sizeof(int),
       "underlying type has same range of values as int");
 }
Index: libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc
===================================================================
--- libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc	(revision 475331)
+++ libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc	(revision 475455)
@@ -19,7 +19,7 @@ 

 // 27.8.1.4 Overridden virtual functions

-// { dg-options "-DMAX_SIZE=4096" { target simulator } }
+// { dg-options "-DMAX_SIZE=4096" { target { simulator || ia16-*-* } } }

 #ifndef MAX_SIZE
 #define MAX_SIZE (1 << 18)
Index: libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc
===================================================================
--- libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc	(revision 475331)
+++ libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc	(revision 475455)
@@ -50,7 +50,11 @@  check(wistream& stream, const wstring& s
 {
   bool test __attribute__((unused)) = true;

+#ifdef __ia16__
+  static wchar_t buf[1000];
+#else
   static wchar_t buf[1000000];
+#endif
   wstring::size_type index = 0, index_new = 0;
   unsigned n = 0;

Index: libstdc++-v3/testsuite/27_io/headers/cstdio/functions_std.cc
===================================================================
--- libstdc++-v3/testsuite/27_io/headers/cstdio/functions_std.cc	(revision 475331)
+++ libstdc++-v3/testsuite/27_io/headers/cstdio/functions_std.cc	(revision 475455)
@@ -34,7 +34,9 @@  namespace gnu
   using std::fseek;
   using std::perror;
   using std::rewind;
+#if _GLIBCXX_USE_TMPNAM
   using std::tmpnam;
+#endif
   using std::feof;
   using std::fprintf;
   using std::fsetpos;
Index: libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc
===================================================================
--- libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc	(revision 475331)
+++ libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc	(revision 475455)
@@ -104,7 +104,10 @@  void test01()

   TEST_ERRC(not_connected);
   TEST_ERRC(not_enough_memory);
+
+#ifdef _GLIBCXX_HAVE_ENOTSUP
   TEST_ERRC(not_supported);
+#endif

 #ifdef _GLIBCXX_HAVE_ECANCELED
   TEST_ERRC(operation_canceled);
Index: libstdc++-v3/testsuite/19_diagnostics/system_error/39880.cc
===================================================================
--- libstdc++-v3/testsuite/19_diagnostics/system_error/39880.cc	(revision 475331)
+++ libstdc++-v3/testsuite/19_diagnostics/system_error/39880.cc	(revision 475455)
@@ -24,6 +24,6 @@ 
 void test01()
 {
   std::error_code ec;
-  if (ec == std::errc::not_supported)
+  if (ec == std::errc::not_enough_memory)
     { }
 }
Index: libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_functions.cc
===================================================================
--- libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_functions.cc	(revision 475331)
+++ libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_functions.cc	(revision 475455)
@@ -1,4 +1,4 @@ 
-// { dg-do compile }
+// { dg-do compile { target { stdint_types } } }
 // { dg-options "-std=gnu++11" }

 // Copyright (C) 2010-2016 Free Software Foundation, Inc.
@@ -20,6 +20,7 @@ 

 #include <random>
 #include <testsuite_common_types.h>
+#include <stdint.h>

 namespace __gnu_test
 {
@@ -49,7 +50,7 @@  namespace __gnu_test
 int main()
 {
   __gnu_test::constexpr_member_functions test;
-  typedef std::linear_congruential_engine<unsigned int, 41, 0, 2147483647> type;
+  typedef std::linear_congruential_engine<uint_least32_t, 41, 0, 2147483647> type;
   test.operator()<type>();
   return 0;
 }
Index: libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_data.cc
===================================================================
--- libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_data.cc	(revision 475331)
+++ libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_data.cc	(revision 475455)
@@ -1,4 +1,4 @@ 
-// { dg-do compile }
+// { dg-do compile { target { stdint_types } } }
 // { dg-options "-std=gnu++11" }

 // Copyright (C) 2010-2016 Free Software Foundation, Inc.
@@ -20,6 +20,7 @@ 

 #include <random>
 #include <testsuite_common_types.h>
+#include <stdint.h>

 namespace __gnu_test
 {
@@ -53,7 +54,7 @@  namespace __gnu_test
 int main()
 {
   __gnu_test::constexpr_member_data test;
-  typedef std::linear_congruential_engine<unsigned int, 41, 0, 2147483647> type;
+  typedef std::linear_congruential_engine<uint_least32_t, 41, 0, 2147483647> type;
   test.operator()<type>();
   return 0;
 }
Index: libstdc++-v3/testsuite/20_util/extent/value.cc
===================================================================
--- libstdc++-v3/testsuite/20_util/extent/value.cc	(revision 475331)
+++ libstdc++-v3/testsuite/20_util/extent/value.cc	(revision 475455)
@@ -34,7 +34,7 @@  void test01()
   static_assert(extent<int[2], 1>::value == 0, "");
   static_assert(extent<int[2][4], 1>::value == 4, "");
   static_assert(extent<int[][4], 1>::value == 4, "");
-  static_assert(extent<int[10][4][6][8][12][2], 4>::value == 12, "");
+  static_assert(extent<int[3][4][6][8][12][2], 4>::value == 12, "");
   static_assert(test_property<extent, ClassType, 0>(0), "");
   static_assert(test_property<extent, ClassType[2], 0>(2), "");
   static_assert(test_property<extent, ClassType[2][4], 0>(2), "");
@@ -43,5 +43,5 @@  void test01()
   static_assert(extent<ClassType[2], 1>::value == 0, "");
   static_assert(extent<ClassType[2][4], 1>::value == 4, "");
   static_assert(extent<ClassType[][4], 1>::value == 4, "");
-  static_assert(extent<ClassType[10][4][6][8][12][2], 4>::value == 12, "");
+  static_assert(extent<ClassType[3][4][6][8][12][2], 4>::value == 12, "");
 }
Index: libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr.cc
===================================================================
--- libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr.cc	(revision 475331)
+++ libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr.cc	(revision 475455)
@@ -1,4 +1,4 @@ 
-// { dg-do compile }
+// { dg-do compile { target { stdint_types } } }
 // { dg-options "-std=gnu++11" }

 // Copyright (C) 2011-2016 Free Software Foundation, Inc.
@@ -24,6 +24,7 @@ 
 // changes this test may begin to fail.

 #include <tuple>
+#include <stdint.h>

 bool test __attribute__((unused)) = true;

@@ -60,9 +61,9 @@  test_forward_as_tuple()
   {
     static int i(22);
     static float f(22.222);
-    static int ii(77799);
+    static int_least32_t ii(77799);

-    typedef std::tuple<int&, float&, int&&> tuple_type;
+    typedef std::tuple<int&, float&, int_least32_t&&> tuple_type;
     constexpr tuple_type p1 __attribute__((unused))
       = std::forward_as_tuple(i, f, std::move(ii));
   }
@@ -83,9 +84,9 @@  test_tie()
   {
     static int i(22);
     static float f(22.222);
-    static const int ii(77799);
+    static const int_least32_t ii(77799);

-    typedef std::tuple<int&, float&, const int&> tuple_type;
+    typedef std::tuple<int&, float&, const int_least32_t&> tuple_type;
     constexpr tuple_type p1 __attribute__((unused))
       = std::tie(i, f, ii);
   }