> 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?
I’d be OK to do this change without a new RC even.
Richard.
>
> Jakub
>