> From: Jonathan Wakely <jwakely....@gmail.com>
> Date: Tue, 5 Apr 2022 20:47:58 +0200

> On Tue, 5 Apr 2022, 17:44 Hans-Peter Nilsson via
> Libstdc++,
> <libstd...@gcc.gnu.org<mailto:libstdc%2b...@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?

Oh right, yes it does.  Ok then, I'll commit this:

-------------- 8< --------------

[PATCH v2] libstdc++-v3 expected: Correct minimal-size test in requirements.cc

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

The intent of that line is to check that the object is not larger than
necessary.

libstdc++-v3/:
        * testsuite/20_util/expected/requirements.cc: Correct minimal-size
        test.

---
 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,6 @@ 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( sizeof(std::expected<void*, char>) == sizeof(void*) + 
__alignof(void*) );
 static_assert( alignof(std::expected<void, char>) == 1 );
 static_assert( alignof(std::expected<void*, char>) == alignof(void*) );
-- 
2.30.2

Reply via email to