re PR c++/70808 (Spurious -Wzero-as-null-pointer-constant for nullptr_t)
[official-gcc.git] / gcc / testsuite / g++.dg / warn / Wunused-var-5.C
blob7fcaa955c599fca4e87cc09f61a8f9bb19fa06b8
1 // { dg-do compile }
2 // { dg-options "-Wunused" }
4 template <int N>
5 void
6 f1 (void)
8   int a;        // { dg-warning "set but not used" }
9   int b;
10   int c;
11   c = 1;
12   a = b = c;
15 template <int N>
16 void
17 f2 (int x)
19   int a;        // { dg-warning "set but not used" }
20   int b;
21   int c;        // { dg-warning "set but not used" }
22   c = (a = x, b = x);
25 template <int N>
26 int
27 f3 (int x)
29   int a;
30   return a = x;
33 template <int N>
34 int
35 f4 (int x)
37   int a;
38   a = x;
39   return a;
42 template <int N>
43 void
44 f5 (int x)
46   int a[2];     // { dg-warning "set but not used" }
47   int b;
48   int *c, d[2];
49   c = d;
50   b = x;
51   a[b] = 1;
52   c[b] = 1;
55 template <int N>
56 int
57 f6 (int x)
59   int a[2];
60   int b;
61   b = x;
62   a[b] = 1;
63   return a[b];
66 template <int N>
67 void
68 f7 (int x, int *p)
70   int *a[2];
71   a[x] = p;
72   a[x][x] = x;
75 struct S { int i; };
77 template <int N>
78 void
79 f8 (void)
81   struct S s;   // { dg-warning "set but not used" }
82   s.i = 6;
85 template <int N>
86 int
87 f9 (void)
89   struct S s;
90   s.i = 6;
91   return s.i;
94 template <int N>
95 struct S
96 f10 (void)
98   struct S s;
99   s.i = 6;
100   return s;
103 extern int foo11 (int *);
105 template <int N>
106 void
107 f11 (void)
109   int a[2];
110   foo11 (a);
113 template <int N>
114 void
115 f12 (void)
117   int a;
118   a = 1;
119   a;    // { dg-warning "statement has no effect" }
122 template <int N>
123 void
124 f13 (void (*x) (void))
126   void (*a) (void);
127   a = x;
128   a ();
131 template <int N>
132 void
133 f14 (void (*x) (void))
135   void (*a) (void);     // { dg-warning "set but not used" }
136   a = x;
139 extern void foo15 (int *);
141 template <int N>
142 void
143 f15 (void)
145   int a[10];
146   int *b = a + 2;
147   foo15 (b);
150 extern void foo16 (int **);
152 template <int N>
153 void
154 f16 (void)
156   int a[10];
157   int *b[] = { a, a + 2 };
158   foo16 (b);
161 template <int N>
162 void
163 f17 (int x)
165   long a;       // { dg-warning "set but not used" }
166   int b;
167   a = b = x;
170 template <int N>
171 void
172 f18 (int x)
174   int a;        // { dg-warning "set but not used" }
175   int b;
176   a = (char) (b = x);
179 template <int N>
181 f19 (int x, int y, int z)
183   int a;
184   int b;
185   a = x;
186   b = y;
187   return z ? a : b;
190 template <int N>
191 int *
192 f20 (int x)
194   static int a[] = { 3, 4, 5, 6 };
195   static int b[] = { 4, 5, 6, 7 };
196   static int c[] = { 5, 6, 7, 8 };      // { dg-warning "set but not used" }
197   c[1] = 1;
198   return x ? a : b;
201 S s;
203 void
204 test ()
206   int i = 0;
207   f1<0> ();
208   f2<0> (0);
209   (void) f3<0> (0);
210   (void) f4<0> (0);
211   f5<0> (0);
212   (void) f6<0> (0);
213   f7<0> (0, &i);
214   f8<0> ();
215   (void) f9<0> ();
216   s = f10<0> ();
217   f11<0> ();
218   f12<0> ();
219   f13<0> (f1<0>);
220   f14<0> (f1<0>);
221   f15<0> ();
222   f16<0> ();
223   f17<0> (0);
224   f18<0> (0);
225   (void) f19<0> (0, 0, 0);
226   (void) f20<0> (0);