annotate gcc/testsuite/g++.target/powerpc/pr94707-4.C @ 19:2b5abeee2509 default tip

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 // PR target/94707
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 // { dg-do compile { target powerpc_elfv2 } }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3 // { dg-options "-O2 -std=c++17" }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4 // Test that for no calls in this testcase the C++17 empty base
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5 // artificial fields and [[no_unique_address]] empty class non-static
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 // data members are ignored in the decision about passing homogeneous
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7 // arguments.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 // { dg-final { scan-assembler-not {(?n)^\s+lfs\s+(?:%f)?4,} } }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 struct X { };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 struct Y { int : 0; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 struct Z { int : 0; Y y; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 struct U : public X { X q; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 struct A { float a, b, c, d; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 struct B : public X { float a, b, c, d; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 struct C : public Y { float a, b, c, d; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 struct D : public Z { float a, b, c, d; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 struct E : public U { float a, b, c, d; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 struct F { [[no_unique_address]] X x; float a, b, c, d; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20 struct G { [[no_unique_address]] Y y; float a, b, c, d; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 struct H { [[no_unique_address]] Z z; float a, b, c, d; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 struct I { [[no_unique_address]] U u; float a, b, c, d; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 struct J { float a, b; [[no_unique_address]] X x; float c, d; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 struct K { float a, b; [[no_unique_address]] Y y; float c, d; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 struct L { float a, b; [[no_unique_address]] Z z; float c, d; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 struct M { float a, b; [[no_unique_address]] U u; float c, d; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 #define T(S, s) extern S s; extern void foo##s (S); int bar##s () { foo##s (s); return 0; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28 // { dg-bogus "parameter passing for argument of type" }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 T (D, d)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 T (E, e)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 T (H, h)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 T (I, i)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 T (L, l)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 T (M, m)