// PR c++/103681 // { dg-do compile { target c++11 } } // { dg-additional-options "-fabi-version=0 -Wabi=16" } struct A { long l; char c = -1; }; struct B : public A { char d; // { dg-warning "offset" "" { target c++14 } .-1 } }; #define SA(X) static_assert(X,#X) SA(sizeof (B) == sizeof (A)); struct X { char d; }; struct B2 : A, X { }; // { dg-warning "offset" "" { target c++14 } .-1 } SA(sizeof (B2) == sizeof (A)); #if __cplusplus > 201800L struct C { [[no_unique_address]] A a; char d; // { dg-warning "offset" "" { target c++20 } .-1 } }; SA(sizeof (C) == sizeof (A)); struct C2 : A, X { }; // { dg-warning "offset" "" { target c++20 } .-1 } SA(sizeof (B2) == sizeof (A)); #endif /* C++20 */