Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/g++.dg/cpp1z/decomp48.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
111:04ced10e8804 | 131:84e7813d76e9 |
---|---|
1 // PR c++/87582 | |
2 // { dg-do run { target c++11 } } | |
3 // { dg-options "-Wreturn-local-addr" } | |
4 | |
5 struct S { int s, t; }; | |
6 S v {1, 2}; | |
7 int a[3] = {1, 2, 3}; | |
8 | |
9 int & | |
10 f1 () | |
11 { | |
12 auto& [s, t] = v; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
13 return s; // { dg-bogus "reference to local variable '.' returned" } | |
14 } | |
15 | |
16 int & | |
17 f2 () | |
18 { | |
19 S v {1, 2}; | |
20 auto& [s, t] = v; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
21 return s; // { dg-warning "reference to local variable 'v' returned" } | |
22 } | |
23 | |
24 int & | |
25 f3 () | |
26 { | |
27 auto& [s, t, u] = a; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
28 return s; // { dg-bogus "reference to local variable '.' returned" } | |
29 } | |
30 | |
31 int & | |
32 f4 () | |
33 { | |
34 int a[3] = {1, 2, 3}; | |
35 auto& [s, t, u] = a; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
36 return s; // { dg-warning "reference to local variable 'a' returned" } | |
37 } | |
38 | |
39 int & | |
40 f5 () | |
41 { | |
42 auto [s, t] = v; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
43 return s; // { dg-warning "reference to local variable 's' returned" } | |
44 } | |
45 | |
46 int & | |
47 f6 () | |
48 { | |
49 S v {1, 2}; | |
50 auto [s, t] = v; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
51 return s; // { dg-warning "reference to local variable 's' returned" } | |
52 } | |
53 | |
54 int & | |
55 f7 () | |
56 { | |
57 auto [s, t, u] = a; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
58 return s; // { dg-warning "reference to local variable 's' returned" } | |
59 } | |
60 | |
61 int & | |
62 f8 () | |
63 { | |
64 int a[3] = {1, 2, 3}; | |
65 auto [s, t, u] = a; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
66 return s; // { dg-warning "reference to local variable 's' returned" } | |
67 } | |
68 | |
69 int * | |
70 f9 () | |
71 { | |
72 auto& [s, t] = v; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
73 return &s; // { dg-bogus "address of local variable '.' returned" } | |
74 } | |
75 | |
76 int * | |
77 f10 () | |
78 { | |
79 S v {1, 2}; | |
80 auto& [s, t] = v; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
81 return &s; // { dg-warning "address of local variable 'v' returned" } | |
82 } | |
83 | |
84 int * | |
85 f11 () | |
86 { | |
87 auto& [s, t, u] = a; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
88 return &s; // { dg-bogus "address of local variable '.' returned" } | |
89 } | |
90 | |
91 int * | |
92 f12 () | |
93 { | |
94 int a[3] = {1, 2, 3}; | |
95 auto& [s, t, u] = a; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
96 return &s; // { dg-warning "address of local variable 'a' returned" } | |
97 } | |
98 | |
99 int * | |
100 f13 () | |
101 { | |
102 auto [s, t] = v; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
103 return &s; // { dg-warning "address of local variable 's' returned" } | |
104 } | |
105 | |
106 int * | |
107 f14 () | |
108 { | |
109 S v {1, 2}; | |
110 auto [s, t] = v; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
111 return &s; // { dg-warning "address of local variable 's' returned" } | |
112 } | |
113 | |
114 int * | |
115 f15 () | |
116 { | |
117 auto [s, t, u] = a; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
118 return &s; // { dg-warning "address of local variable 's' returned" } | |
119 } | |
120 | |
121 int * | |
122 f16 () | |
123 { | |
124 int a[3] = {1, 2, 3}; | |
125 auto [s, t, u] = a; // { dg-warning "structured bindings only available with" "" { target c++14_down } } | |
126 return &s; // { dg-warning "address of local variable 's' returned" } | |
127 } | |
128 | |
129 int | |
130 main () | |
131 { | |
132 if (&f1 () != &v.s || &f3 () != &a[0] || f9 () != &v.s || f11 () != &a[0]) | |
133 __builtin_abort (); | |
134 } |