aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/abi/nsdmi-aggr1a.C
blob: e7a509dbc8583d2c77d924a70d14afd51772d82e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// 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 */