On Sun, 1 May 2022, 16:39 Richard Biener via Gcc, <gcc@gcc.gnu.org> wrote:
> > > > Am 01.05.2022 um 13:42 schrieb Jakub Jelinek via Gcc <gcc@gcc.gnu.org>: > > > > On Sun, May 01, 2022 at 11:02:29AM +0100, Iain Sandoe wrote: > >> All of these show new fails (presumably because checking is off): > >> > >> XPASS: c-c++-common/goacc/kernels-decompose-pr100400-1-2.c -std=c++98 > (internal compiler error) > >> FAIL: c-c++-common/goacc/kernels-decompose-pr100400-1-2.c -std=c++98 > (test for excess errors) > >> XPASS: c-c++-common/goacc/kernels-decompose-pr100400-1-2.c -std=c++14 > (internal compiler error) > >> FAIL: c-c++-common/goacc/kernels-decompose-pr100400-1-2.c -std=c++14 > (test for excess errors) > >> XPASS: c-c++-common/goacc/kernels-decompose-pr100400-1-2.c -std=c++17 > (internal compiler error) > >> FAIL: c-c++-common/goacc/kernels-decompose-pr100400-1-2.c -std=c++17 > (test for excess errors) > >> XPASS: c-c++-common/goacc/kernels-decompose-pr100400-1-2.c -std=c++20 > (internal compiler error) > >> FAIL: c-c++-common/goacc/kernels-decompose-pr100400-1-2.c -std=c++20 > (test for excess errors) > > > > We can live with that for 12.1. > > > >> earlier x86 darwin is particularly noisy test-wise because there seem > to be a lot of newer AVX512 tests > >> that do not check for support from the assembler etc. > > > > That would be nice to fix for 12.2, can you file a PR with a list? > > > >> However from Darwin12+ (macOS 10.8) we expect to be able to bootstrap > with the host clang, but: > >> > >> Not OK: > >> x86_64-darwin{12..15} FAIL to bootstrap with host clang, this is a > regression. > >> > >> the reason is that "gcc/analyzer/region-model.cc” uses > initializer_lists, and it seems that <initializer_list> > >> is not transitively included by any used headers for _LIBCPP_VERSION < > 4000. I fixed that locally by > >> adding initializer_list into system.h (and adding > INCLUDE_INITIALIZER_LIST to the top of > >> gcc/analyzer/region-model.cc) > >> - with that change those versions do bootstrap and test OK*** > > > > From what I can see, with libstdc++ it works because <utility> which is > > included by system.h includes <initializer_list>. > > If I rename initializer_list in analyzer/region-model.ii to > initializer_listx, I > > also get: > > ../../gcc/analyzer/region-model.cc: In function ‘void > ana::selftest::test_binop_svalue_folding()’: > > ../../gcc/analyzer/region-model.cc:4966:48: error: deducing from > brace-enclosed initializer list requires ‘#include <initializer_list>’ > > 4508 | > > +++ |+#include <initializer_list> > > 4509 | static void > > ...... > > 4966 | for (auto op : {BIT_IOR_EXPR, TRUTH_OR_EXPR}) > > | ^ > > ../../gcc/analyzer/region-model.cc:4978:49: error: deducing from > brace-enclosed initializer list requires ‘#include <initializer_list>’ > > 4978 | for (auto op : {BIT_AND_EXPR, TRUTH_AND_EXPR}) > > | ^ > > > > I think we have 2 options, one is do what you wrote above, > > INCLUDE_INITIALIZER_LIST defined before system.h to get #include > <initializer_list>. > > The other option is just to include that unconditionally, it is a very > small > > header. For libstdc++ it will make no difference as it is included > anyway > > and the header is really small there, libc++ includes <cstddef> which > isn't > > normally included and system.h includes <stddef.h> instead. > > I’d say unconditionally would be OK. I suppose the chance that any host > C++ is good enough to build GCC as-is but fails to provide > <initializer_list> is zero? > Yes, definitely. > I’d be OK to do this change without a new RC even. > > Richard. > > > > > Jakub > > >