Hi!

On Thu, Jun 06, 2019 at 04:38:36PM +0100, Jonathan Wakely wrote:
> This can greatly reduce the amount of preprocessed code that is included
> by other headers, because <stdexcept> depends on <string> which is huge.
> 
>       * include/std/array: Do not include <stdexcept>.
>       * include/std/optional: Include <exception> and
>       <bits/exception_defines.h> instead of <stdexcept>.
> 
> Preprocessed line counts for C++17 mode:
> 
>       <tuple> <memory> <map>
> Before   25774    32453 31616
> After     9925    23194 19062
> 
> Tested x86_64-linux, committed to trunk.
> 
> Once we have a gcc-10/porting_to.html page I'll note this change
> there, because code relying on std::string and std::allocator being
> defined by transitive includes will need to include the right headers.

Not only those, but apparently also ::size_t or std::plus; this broke
FAIL: g++.dg/cpp1y/feat-cxx14.C   (test for excess errors)
FAIL: g++.dg/cpp1z/feat-cxx1z.C  -std=gnu++17 (test for excess errors)
FAIL: g++.dg/cpp1z/pr85569.C  -std=c++17 (test for excess errors)
FAIL: g++.dg/cpp2a/feat-cxx2a.C   (test for excess errors)

Fixed thusly, tested on x86_64-linux with check-c++-all, ok for trunk?

2019-06-06  Jakub Jelinek  <ja...@redhat.com>

        PR testsuite/90772
        * g++.dg/cpp1y/feat-cxx14.C: Use std::size_t instead of size_t.
        * g++.dg/cpp1z/feat-cxx1z.C: Likewise.
        * g++.dg/cpp2a/feat-cxx2a.C: Likewise.
        * g++.dg/cpp1z/pr85569.C: Include <functional>.

--- gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C.jj  2017-09-12 09:35:46.955698280 
+0200
+++ gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C     2019-06-06 22:08:59.853528085 
+0200
@@ -303,11 +303,11 @@
 #if __has_include(<array>)
 #  define STD_ARRAY 1
 #  include <array>
-  template<typename _Tp, size_t _Num>
+  template<typename _Tp, std::size_t _Num>
     using array = std::array<_Tp, _Num>;
 #elif __has_include(<tr1/array>)
 #  define TR1_ARRAY 1
 #  include <tr1/array>
-  template<typename _Tp, size_t _Num>
+  template<typename _Tp, std::size_t _Num>
     typedef std::tr1::array<_Tp, _Num> array;
 #endif
--- gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C.jj  2019-01-16 09:35:07.360276820 
+0100
+++ gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C     2019-06-06 22:09:21.571184644 
+0200
@@ -292,12 +292,12 @@
 #if __has_include(<array>)
 #  define STD_ARRAY 1
 #  include <array>
-  template<typename _Tp, size_t _Num>
+  template<typename _Tp, std::size_t _Num>
     using array = std::array<_Tp, _Num>;
 #elif __has_include(<tr1/array>)
 #  define TR1_ARRAY 1
 #  include <tr1/array>
-  template<typename _Tp, size_t _Num>
+  template<typename _Tp, std::size_t _Num>
     typedef std::tr1::array<_Tp, _Num> array;
 #endif
 
--- gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C.jj  2019-01-16 09:35:07.800269539 
+0100
+++ gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C     2019-06-06 22:09:37.432934738 
+0200
@@ -291,12 +291,12 @@
 #if __has_include(<array>)
 #  define STD_ARRAY 1
 #  include <array>
-  template<typename _Tp, size_t _Num>
+  template<typename _Tp, std::size_t _Num>
     using array = std::array<_Tp, _Num>;
 #elif __has_include(<tr1/array>)
 #  define TR1_ARRAY 1
 #  include <tr1/array>
-  template<typename _Tp, size_t _Num>
+  template<typename _Tp, std::size_t _Num>
     typedef std::tr1::array<_Tp, _Num> array;
 #endif
 
--- gcc/testsuite/g++.dg/cpp1z/pr85569.C.jj     2018-12-05 09:16:42.870128432 
+0100
+++ gcc/testsuite/g++.dg/cpp1z/pr85569.C        2019-06-06 22:15:46.462120520 
+0200
@@ -2,6 +2,7 @@
 
 #include <utility>
 #include <tuple>
+#include <functional>
 
 #define LIFT_FWD(x) std::forward<decltype(x)>(x)
 

        Jakub

Reply via email to