annotate gcc/testsuite/g++.dg/debug/pr94459.C @ 152:2b5abeee2509

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
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 // PR debug/94459
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 // { dg-do compile { target c++14 } }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3 // { dg-options "-g -dA" }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5 template <typename T>
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 struct S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 T v;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 T w[2];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 S () : v (0), w { 0, 0 } {}
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 static auto baz () { return (T) 0; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 auto m1 () { return v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 auto &m2 () { return v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 auto &&m3 () { return (T&&)v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 const auto m4 () { return v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 const auto &m5 () { return v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 const auto &&m6 () { return (T&&)v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 volatile auto m7 () { return v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 volatile auto &m8 () { return v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20 volatile auto &&m9 () { return (T&&)v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 volatile const auto m10 () { return v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 volatile const auto &m11 () { return v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 volatile const auto &&m12 () { return (T&&)v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 const volatile auto m13 () { return v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 const volatile auto &m14 () { return v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 const volatile auto &&m15 () { return (T&&)v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 #ifndef __STRICT_ANSI__
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28 __restrict const volatile auto &&m16 () { return (T&&)v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 const __restrict auto &m17 () { return v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 #endif
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 auto *m18 () { return &v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 auto (S::* (m19 ())) () { return &S::m1; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 auto (S::* (m20 ())) { return &S::v; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 auto (*m21 ()) () { return S::baz; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37 S<long> s, u, v;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39 long
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40 foo ()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
41 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
42 auto x = s.m19 ();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
43 auto y = s.m20 ();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
44 auto z = s.m21 ();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
45 return s.m1 () + s.m2 () + s.m3 () + s.m4 () + s.m5 ()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
46 + s.m6 () + s.m7 () + s.m8 () + s.m9 () + s.m10 ()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
47 + s.m11 () + s.m12 () + s.m13 () + s.m14 () + s.m15 ()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
48 #ifndef __STRICT_ANSI__
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
49 + u.m16 () + v.m17 ()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
50 #endif
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
51 + *s.m18 () + (s.*x) () + s.*y + z ();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
52 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
53
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
54 int
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
55 main ()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
56 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
57 return foo ();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
58 }