On Sun, Jul 4, 2021 at 10:04 PM Iain Sandoe <i...@sandoe.co.uk> wrote: > > Hi, > > Several older compilers fail to build modern GCC because of missing > or incomplete C++11 support. > > (although the PR mentions clang, specifically, this has also been reported > for some GCC versions within the range that should be able to bootstrap > GCC) > > There are several possible solutions proposed in the PR, this one seems > the least invasive. > > The header is pulled into the gcov code that builds with C, so we have to > make the CTOR conditional on C++. > > tested on Darwin12 with xcode-6, bootstrapped on x86_64-darwin and linux. > OK for master / GCC-11?
Hmm, what is specifically built with a C compiler? gcov.c not, I think. Instead of commenting the CTOR, does it work to comment the whole stringop_algs type? Also it seems on trunk this CTOR is no more? > thanks > Iain > > Signed-off-by: Iain Sandoe <i...@sandoe.co.uk> > > PR bootstrap/100246 - [11/12 Regression] GCC will not bootstrap with clang > 3.4/3.5 [xcode 5/6, Darwin 12/13] > > PR bootstrap/100246 > > gcc/ChangeLog: > > * config/i386/i386.h (struct stringop_algs): Define a CTOR for > this type. > --- > gcc/config/i386/i386.h | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h > index 6e0340a4b60..84151156999 100644 > --- a/gcc/config/i386/i386.h > +++ b/gcc/config/i386/i386.h > @@ -73,6 +73,11 @@ struct stringop_algs > { > const enum stringop_alg unknown_size; > const struct stringop_strategy { > +#ifdef __cplusplus > + stringop_strategy(int _max = -1, enum stringop_alg _alg = libcall, > + int _noalign = false) > + : max (_max), alg (_alg), noalign (_noalign) {} > +#endif > const int max; > const enum stringop_alg alg; > int noalign; > -- > 2.24.1 > >