On Tue, 5 Apr 2022, 17:44 Hans-Peter Nilsson via Libstdc++, < libstd...@gcc.gnu.org> wrote:
> Ok to commit? > -------------- 8< -------------- > > Without this, for a target where alignment and structure-sizes are by > default byte-aligned, such as cris-elf, you'll see, in libstdc++.log: > > /X/gcc/libstdc++-v3/testsuite/20_util/expected/requirements.cc:127: error: > static assertion failed > /X/gcc/libstdc++-v3/testsuite/20_util/expected/requirements.cc:127: note: > the comparison reduces to '(5 == 2)' > compiler exited with status 1 > FAIL: 20_util/expected/requirements.cc (test for excess errors) > Excess errors: > /X/gcc/libstdc++-v3/testsuite/20_util/expected/requirements.cc:127: error: > static assertion failed > > It seems the intent is a smoke-test and that conditionals for ABI > properties are out of scope, so best to just delete this particular > line. > The idea is to ensure the object is no larger than necessary. I think we could use == sizeof(void*)+alignof(void*) which would be correct everywhere. Does that work for cris-elf? > libstdc++-v3/: > * testsuite/20_util/expected/requirements.cc: Don't test > ABI-variant properties of expected<>. > --- > libstdc++-v3/testsuite/20_util/expected/requirements.cc | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/libstdc++-v3/testsuite/20_util/expected/requirements.cc > b/libstdc++-v3/testsuite/20_util/expected/requirements.cc > index 485aa338679c..a51a007a4fc3 100644 > --- a/libstdc++-v3/testsuite/20_util/expected/requirements.cc > +++ b/libstdc++-v3/testsuite/20_util/expected/requirements.cc > @@ -124,6 +124,5 @@ static_assert( move_assignable< void, G > ); > // QoI properties > static_assert( sizeof(std::expected<char, unsigned char>) == 2 ); > static_assert( sizeof(std::expected<void, char>) == 2 ); > -static_assert( sizeof(std::expected<void*, char>) == 2 * __alignof(void*) > ); > static_assert( alignof(std::expected<void, char>) == 1 ); > static_assert( alignof(std::expected<void*, char>) == alignof(void*) ); > -- > 2.30.2 > >