annotate gcc/testsuite/g++.dg/abi/no_unique_address1.C @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 84e7813d76e9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 // { dg-do run { target c++2a } }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 struct B { };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 struct A
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 [[no_unique_address]] B b;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 int i;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 struct C
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 B b;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 int i;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 struct D: B { };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 struct E
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 B b [[no_unique_address]];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 D d [[no_unique_address]];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 constexpr bool same (void *x, void *y) { return x == y; }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 int main()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 A a;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 if (!same(&a.b, &a.i))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 __builtin_abort();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 C c;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 if (same(&c.b, &c.i))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 __builtin_abort();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 E e;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 if (same (&e.b, &e.d))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 __builtin_abort();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 }