PHIOPT: move factor_out_conditional_operation over to use gimple_match_op
[official-gcc.git] / gcc / testsuite / g++.dg / abi / nsdmi-aggr1.C
blobc212c439a67eb6da72b5f17504db7d818c93fde8
1 // PR c++/103681
2 // { dg-do compile { target c++11 } }
3 // { dg-additional-options "-fabi-version=16 -Wabi" }
5 struct A {
6   long l;
7   char c = -1;
8 };
9 struct B : public A {
10   char d;
11   // { dg-warning "offset" "" { target c++14 } .-1 }
14 #define SA(X) static_assert(X,#X)
15 SA(sizeof (B) == sizeof (A));
16 // { dg-error "static assertion" "" { target c++14 } .-1 }
18 struct X { char d; };
19 struct B2 : A, X { };
20 // { dg-warning "offset" "" { target c++14 } .-1 }
21 SA(sizeof (B2) == sizeof (A));
22 // { dg-error "static assertion" "" { target c++14 } .-1 }
24 #if __cplusplus > 201800L
26 struct C {
27   [[no_unique_address]] A a;
28   char d;
29   // { dg-warning "offset" "" { target c++20 } .-1 }
31 SA(sizeof (C) == sizeof (A));
32 // { dg-error "static assertion" "" { target c++20 } .-1 }
34 struct C2 : A, X { };
35 // { dg-warning "offset" "" { target c++20 } .-1 }
36 SA(sizeof (B2) == sizeof (A));
37 // { dg-error "static assertion" "" { target c++20 } .-1 }
39 #endif /* C++20 */