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
> >
>

Reply via email to