https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117679
--- Comment #3 from Fedor Chelnokov <fchelnokov at gmail dot com> ---
Here is a better example. It looks valid (unlike above one) because of creating
of copy `A( u.a )`:
```
#include <iostream>
struct A { int c[7]; };
struct X { int x; };
struct B : X, A {
using A::operator=;
};
int main() {
union U {
A a{ 0, 1, 2, 3, 4, 5, 6 };
B b;
} u;
u.b = A( u.a );
for ( int i = 0; i < 7; ++i )
std::cout << (int)u.b.c[i];
}
```
It prints `0123456` in Clang and MSVC. But in GCC 14 it prints `0122356` with
any optimization level (-O0 through -O3). Online demo:
https://gcc.godbolt.org/z/GKo8YcqqM