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