1// RUN: %clang_cc1 -triple i686-pc-linux-gnu -fsyntax-only -verify %s -Wabsolute-value -std=c++11
2// RUN: %clang_cc1 -triple i686-pc-linux-gnu -fsyntax-only %s -Wabsolute-value -fdiagnostics-parseable-fixits -std=c++11 2>&1 | FileCheck %s
3
4extern "C" {
5int abs(int);
6long int labs(long int);
7long long int llabs(long long int);
8
9float fabsf(float);
10double fabs(double);
11long double fabsl(long double);
12
13float cabsf(float _Complex);
14double cabs(double _Complex);
15long double cabsl(long double _Complex);
16}
17
18namespace std {
19
20inline namespace __1 {
21int abs(int);
22long int abs(long int);
23long long int abs(long long int);
24}
25
26float abs(float);
27double abs(double);
28long double abs(long double);
29
30template <typename T>
31double abs(T);
32
33}
34
35void test_int(int x) {
36  (void)std::abs(x);
37
38  (void)abs(x);
39  (void)labs(x);
40  (void)llabs(x);
41
42  (void)fabsf(x);
43  // expected-warning@-1 {{using floating point absolute value function 'fabsf' when argument is of integer type}}
44  // expected-note@-2 {{use function 'std::abs' instead}}
45  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
46  (void)fabs(x);
47  // expected-warning@-1 {{using floating point absolute value function 'fabs' when argument is of integer type}}
48  // expected-note@-2 {{use function 'std::abs' instead}}
49  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"std::abs"
50  (void)fabsl(x);
51  // expected-warning@-1 {{using floating point absolute value function 'fabsl' when argument is of integer type}}
52  // expected-note@-2 {{use function 'std::abs' instead}}
53  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
54
55  (void)cabsf(x);
56  // expected-warning@-1 {{using complex absolute value function 'cabsf' when argument is of integer type}}
57  // expected-note@-2 {{use function 'std::abs' instead}}
58  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
59  (void)cabs(x);
60  // expected-warning@-1 {{using complex absolute value function 'cabs' when argument is of integer type}}
61  // expected-note@-2 {{use function 'std::abs' instead}}
62  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"std::abs"
63  (void)cabsl(x);
64  // expected-warning@-1 {{using complex absolute value function 'cabsl' when argument is of integer type}}
65  // expected-note@-2 {{use function 'std::abs' instead}}
66  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
67
68  (void)__builtin_abs(x);
69  (void)__builtin_labs(x);
70  (void)__builtin_llabs(x);
71
72  (void)__builtin_fabsf(x);
73  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabsf' when argument is of integer type}}
74  // expected-note@-2 {{use function 'std::abs' instead}}
75  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
76  (void)__builtin_fabs(x);
77  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabs' when argument is of integer type}}
78  // expected-note@-2 {{use function 'std::abs' instead}}
79  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"std::abs"
80  (void)__builtin_fabsl(x);
81  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabsl' when argument is of integer type}}
82  // expected-note@-2 {{use function 'std::abs' instead}}
83  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
84
85  (void)__builtin_cabsf(x);
86  // expected-warning@-1 {{using complex absolute value function '__builtin_cabsf' when argument is of integer type}}
87  // expected-note@-2 {{use function 'std::abs' instead}}
88  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
89  (void)__builtin_cabs(x);
90  // expected-warning@-1 {{using complex absolute value function '__builtin_cabs' when argument is of integer type}}
91  // expected-note@-2 {{use function 'std::abs' instead}}
92  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"std::abs"
93  (void)__builtin_cabsl(x);
94  // expected-warning@-1 {{using complex absolute value function '__builtin_cabsl' when argument is of integer type}}
95  // expected-note@-2 {{use function 'std::abs' instead}}
96  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
97}
98
99void test_long(long x) {
100  (void)std::abs(x);
101
102  (void)abs(x);  // no warning - int and long are same length for this target
103  (void)labs(x);
104  (void)llabs(x);
105
106  (void)fabsf(x);
107  // expected-warning@-1 {{using floating point absolute value function 'fabsf' when argument is of integer type}}
108  // expected-note@-2 {{use function 'std::abs' instead}}
109  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
110  (void)fabs(x);
111  // expected-warning@-1 {{using floating point absolute value function 'fabs' when argument is of integer type}}
112  // expected-note@-2 {{use function 'std::abs' instead}}
113  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"std::abs"
114  (void)fabsl(x);
115  // expected-warning@-1 {{using floating point absolute value function 'fabsl' when argument is of integer type}}
116  // expected-note@-2 {{use function 'std::abs' instead}}
117  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
118
119  (void)cabsf(x);
120  // expected-warning@-1 {{using complex absolute value function 'cabsf' when argument is of integer type}}
121  // expected-note@-2 {{use function 'std::abs' instead}}
122  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
123  (void)cabs(x);
124  // expected-warning@-1 {{using complex absolute value function 'cabs' when argument is of integer type}}
125  // expected-note@-2 {{use function 'std::abs' instead}}
126  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"std::abs"
127  (void)cabsl(x);
128  // expected-warning@-1 {{using complex absolute value function 'cabsl' when argument is of integer type}}
129  // expected-note@-2 {{use function 'std::abs' instead}}
130  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
131
132  (void)__builtin_abs(x);  // no warning - int and long are same length for
133                           // this target
134  (void)__builtin_labs(x);
135  (void)__builtin_llabs(x);
136
137  (void)__builtin_fabsf(x);
138  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabsf' when argument is of integer type}}
139  // expected-note@-2 {{use function 'std::abs' instead}}
140  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
141  (void)__builtin_fabs(x);
142  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabs' when argument is of integer type}}
143  // expected-note@-2 {{use function 'std::abs' instead}}
144  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"std::abs"
145  (void)__builtin_fabsl(x);
146  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabsl' when argument is of integer type}}
147  // expected-note@-2 {{use function 'std::abs' instead}}
148  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
149
150  (void)__builtin_cabsf(x);
151  // expected-warning@-1 {{using complex absolute value function '__builtin_cabsf' when argument is of integer type}}
152  // expected-note@-2 {{use function 'std::abs' instead}}
153  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
154  (void)__builtin_cabs(x);
155  // expected-warning@-1 {{using complex absolute value function '__builtin_cabs' when argument is of integer type}}
156  // expected-note@-2 {{use function 'std::abs' instead}}
157  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"std::abs"
158  (void)__builtin_cabsl(x);
159  // expected-warning@-1 {{using complex absolute value function '__builtin_cabsl' when argument is of integer type}}
160  // expected-note@-2 {{use function 'std::abs' instead}}
161  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
162}
163
164void test_long_long(long long x) {
165  (void)std::abs(x);
166
167  (void)abs(x);
168  // expected-warning@-1{{absolute value function 'abs' given an argument of type 'long long' but has parameter of type 'int' which may cause truncation of value}}
169  // expected-note@-2{{use function 'std::abs' instead}}
170  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:12}:"std::abs"
171  (void)labs(x);
172  // expected-warning@-1{{absolute value function 'labs' given an argument of type 'long long' but has parameter of type 'long' which may cause truncation of value}}
173  // expected-note@-2{{use function 'std::abs' instead}}
174  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"std::abs"
175  (void)llabs(x);
176
177  (void)fabsf(x);
178  // expected-warning@-1 {{using floating point absolute value function 'fabsf' when argument is of integer type}}
179  // expected-note@-2 {{use function 'std::abs' instead}}
180  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
181  (void)fabs(x);
182  // expected-warning@-1 {{using floating point absolute value function 'fabs' when argument is of integer type}}
183  // expected-note@-2 {{use function 'std::abs' instead}}
184  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"std::abs"
185  (void)fabsl(x);
186  // expected-warning@-1 {{using floating point absolute value function 'fabsl' when argument is of integer type}}
187  // expected-note@-2 {{use function 'std::abs' instead}}
188  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
189
190  (void)cabsf(x);
191  // expected-warning@-1 {{using complex absolute value function 'cabsf' when argument is of integer type}}
192  // expected-note@-2 {{use function 'std::abs' instead}}
193  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
194  (void)cabs(x);
195  // expected-warning@-1 {{using complex absolute value function 'cabs' when argument is of integer type}}
196  // expected-note@-2 {{use function 'std::abs' instead}}
197  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"std::abs"
198  (void)cabsl(x);
199  // expected-warning@-1 {{using complex absolute value function 'cabsl' when argument is of integer type}}
200  // expected-note@-2 {{use function 'std::abs' instead}}
201  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
202
203  (void)__builtin_abs(x);
204  // expected-warning@-1{{absolute value function '__builtin_abs' given an argument of type 'long long' but has parameter of type 'int' which may cause truncation of value}}
205  // expected-note@-2{{use function 'std::abs' instead}}
206  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:22}:"std::abs"
207  (void)__builtin_labs(x);
208  // expected-warning@-1{{absolute value function '__builtin_labs' given an argument of type 'long long' but has parameter of type 'long' which may cause truncation of value}}
209  // expected-note@-2{{use function 'std::abs' instead}}
210  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"std::abs"
211  (void)__builtin_llabs(x);
212
213  (void)__builtin_fabsf(x);
214  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabsf' when argument is of integer type}}
215  // expected-note@-2 {{use function 'std::abs' instead}}
216  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
217  (void)__builtin_fabs(x);
218  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabs' when argument is of integer type}}
219  // expected-note@-2 {{use function 'std::abs' instead}}
220  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"std::abs"
221  (void)__builtin_fabsl(x);
222  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabsl' when argument is of integer type}}
223  // expected-note@-2 {{use function 'std::abs' instead}}
224  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
225
226  (void)__builtin_cabsf(x);
227  // expected-warning@-1 {{using complex absolute value function '__builtin_cabsf' when argument is of integer type}}
228  // expected-note@-2 {{use function 'std::abs' instead}}
229  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
230  (void)__builtin_cabs(x);
231  // expected-warning@-1 {{using complex absolute value function '__builtin_cabs' when argument is of integer type}}
232  // expected-note@-2 {{use function 'std::abs' instead}}
233  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"std::abs"
234  (void)__builtin_cabsl(x);
235  // expected-warning@-1 {{using complex absolute value function '__builtin_cabsl' when argument is of integer type}}
236  // expected-note@-2 {{use function 'std::abs' instead}}
237  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
238}
239
240void test_float(float x) {
241  (void)std::abs(x);
242
243  (void)abs(x);
244  // expected-warning@-1 {{using integer absolute value function 'abs' when argument is of floating point type}}
245  // expected-note@-2 {{use function 'std::abs' instead}}
246  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:12}:"std::abs"
247  (void)labs(x);
248  // expected-warning@-1 {{using integer absolute value function 'labs' when argument is of floating point type}}
249  // expected-note@-2 {{use function 'std::abs' instead}}
250  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"std::abs"
251  (void)llabs(x);
252  // expected-warning@-1 {{using integer absolute value function 'llabs' when argument is of floating point type}}
253  // expected-note@-2 {{use function 'std::abs' instead}}
254  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
255
256  (void)fabsf(x);
257  (void)fabs(x);
258  (void)fabsl(x);
259
260  (void)cabsf(x);
261  // expected-warning@-1 {{using complex absolute value function 'cabsf' when argument is of floating point type}}
262  // expected-note@-2 {{use function 'std::abs' instead}}
263  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
264  (void)cabs(x);
265  // expected-warning@-1 {{using complex absolute value function 'cabs' when argument is of floating point type}}
266  // expected-note@-2 {{use function 'std::abs' instead}}
267  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"std::abs"
268  (void)cabsl(x);
269  // expected-warning@-1 {{using complex absolute value function 'cabsl' when argument is of floating point type}}
270  // expected-note@-2 {{use function 'std::abs' instead}}
271  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
272
273  (void)__builtin_abs(x);
274  // expected-warning@-1 {{using integer absolute value function '__builtin_abs' when argument is of floating point type}}
275  // expected-note@-2 {{use function 'std::abs' instead}}
276  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:22}:"std::abs"
277  (void)__builtin_labs(x);
278  // expected-warning@-1 {{using integer absolute value function '__builtin_labs' when argument is of floating point type}}
279  // expected-note@-2 {{use function 'std::abs' instead}}
280  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"std::abs"
281  (void)__builtin_llabs(x);
282  // expected-warning@-1 {{using integer absolute value function '__builtin_llabs' when argument is of floating point type}}
283  // expected-note@-2 {{use function 'std::abs' instead}}
284  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
285
286  (void)__builtin_fabsf(x);
287  (void)__builtin_fabs(x);
288  (void)__builtin_fabsl(x);
289
290  (void)__builtin_cabsf(x);
291  // expected-warning@-1 {{using complex absolute value function '__builtin_cabsf' when argument is of floating point type}}
292  // expected-note@-2 {{use function 'std::abs' instead}}
293  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
294  (void)__builtin_cabs(x);
295  // expected-warning@-1 {{using complex absolute value function '__builtin_cabs' when argument is of floating point type}}
296  // expected-note@-2 {{use function 'std::abs' instead}}
297  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"std::abs"
298  (void)__builtin_cabsl(x);
299  // expected-warning@-1 {{using complex absolute value function '__builtin_cabsl' when argument is of floating point type}}
300  // expected-note@-2 {{use function 'std::abs' instead}}
301  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
302}
303
304void test_double(double x) {
305  (void)std::abs(x);
306
307  (void)abs(x);
308  // expected-warning@-1 {{using integer absolute value function 'abs' when argument is of floating point type}}
309  // expected-note@-2 {{use function 'std::abs' instead}}
310  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:12}:"std::abs"
311  (void)labs(x);
312  // expected-warning@-1 {{using integer absolute value function 'labs' when argument is of floating point type}}
313  // expected-note@-2 {{use function 'std::abs' instead}}
314  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"std::abs"
315  (void)llabs(x);
316  // expected-warning@-1 {{using integer absolute value function 'llabs' when argument is of floating point type}}
317  // expected-note@-2 {{use function 'std::abs' instead}}
318  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
319
320  (void)fabsf(x);
321  // expected-warning@-1{{absolute value function 'fabsf' given an argument of type 'double' but has parameter of type 'float' which may cause truncation of value}}
322  // expected-note@-2{{use function 'std::abs' instead}}
323  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
324  (void)fabs(x);
325  (void)fabsl(x);
326
327  (void)cabsf(x);
328  // expected-warning@-1 {{using complex absolute value function 'cabsf' when argument is of floating point type}}
329  // expected-note@-2 {{use function 'std::abs' instead}}
330  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
331  (void)cabs(x);
332  // expected-warning@-1 {{using complex absolute value function 'cabs' when argument is of floating point type}}
333  // expected-note@-2 {{use function 'std::abs' instead}}
334  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"std::abs"
335  (void)cabsl(x);
336  // expected-warning@-1 {{using complex absolute value function 'cabsl' when argument is of floating point type}}
337  // expected-note@-2 {{use function 'std::abs' instead}}
338  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
339
340  (void)__builtin_abs(x);
341  // expected-warning@-1 {{using integer absolute value function '__builtin_abs' when argument is of floating point type}}
342  // expected-note@-2 {{use function 'std::abs' instead}}
343  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:22}:"std::abs"
344  (void)__builtin_labs(x);
345  // expected-warning@-1 {{using integer absolute value function '__builtin_labs' when argument is of floating point type}}
346  // expected-note@-2 {{use function 'std::abs' instead}}
347  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"std::abs"
348  (void)__builtin_llabs(x);
349  // expected-warning@-1 {{using integer absolute value function '__builtin_llabs' when argument is of floating point type}}
350  // expected-note@-2 {{use function 'std::abs' instead}}
351  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
352
353  (void)__builtin_fabsf(x);
354  // expected-warning@-1{{absolute value function '__builtin_fabsf' given an argument of type 'double' but has parameter of type 'float' which may cause truncation of value}}
355  // expected-note@-2{{use function 'std::abs' instead}}
356  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
357  (void)__builtin_fabs(x);
358  (void)__builtin_fabsl(x);
359
360  (void)__builtin_cabsf(x);
361  // expected-warning@-1 {{using complex absolute value function '__builtin_cabsf' when argument is of floating point type}}
362  // expected-note@-2 {{use function 'std::abs' instead}}
363  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
364  (void)__builtin_cabs(x);
365  // expected-warning@-1 {{using complex absolute value function '__builtin_cabs' when argument is of floating point type}}
366  // expected-note@-2 {{use function 'std::abs' instead}}
367  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"std::abs"
368  (void)__builtin_cabsl(x);
369  // expected-warning@-1 {{using complex absolute value function '__builtin_cabsl' when argument is of floating point type}}
370  // expected-note@-2 {{use function 'std::abs' instead}}
371  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
372}
373
374void test_long_double(long double x) {
375  (void)std::abs(x);
376
377  (void)abs(x);
378  // expected-warning@-1 {{using integer absolute value function 'abs' when argument is of floating point type}}
379  // expected-note@-2 {{use function 'std::abs' instead}}
380  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:12}:"std::abs"
381  (void)labs(x);
382  // expected-warning@-1 {{using integer absolute value function 'labs' when argument is of floating point type}}
383  // expected-note@-2 {{use function 'std::abs' instead}}
384  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"std::abs"
385  (void)llabs(x);
386  // expected-warning@-1 {{using integer absolute value function 'llabs' when argument is of floating point type}}
387  // expected-note@-2 {{use function 'std::abs' instead}}
388  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
389
390  (void)fabsf(x);
391  // expected-warning@-1{{absolute value function 'fabsf' given an argument of type 'long double' but has parameter of type 'float' which may cause truncation of value}}
392  // expected-note@-2{{use function 'std::abs' instead}}
393  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
394  (void)fabs(x);
395  // expected-warning@-1{{absolute value function 'fabs' given an argument of type 'long double' but has parameter of type 'double' which may cause truncation of value}}
396  // expected-note@-2{{use function 'std::abs' instead}}
397  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"std::abs"
398  (void)fabsl(x);
399
400  (void)cabsf(x);
401  // expected-warning@-1 {{using complex absolute value function 'cabsf' when argument is of floating point type}}
402  // expected-note@-2 {{use function 'std::abs' instead}}
403  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
404  (void)cabs(x);
405  // expected-warning@-1 {{using complex absolute value function 'cabs' when argument is of floating point type}}
406  // expected-note@-2 {{use function 'std::abs' instead}}
407  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"std::abs"
408  (void)cabsl(x);
409  // expected-warning@-1 {{using complex absolute value function 'cabsl' when argument is of floating point type}}
410  // expected-note@-2 {{use function 'std::abs' instead}}
411  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"std::abs"
412
413  (void)__builtin_abs(x);
414  // expected-warning@-1 {{using integer absolute value function '__builtin_abs' when argument is of floating point type}}
415  // expected-note@-2 {{use function 'std::abs' instead}}
416  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:22}:"std::abs"
417  (void)__builtin_labs(x);
418  // expected-warning@-1 {{using integer absolute value function '__builtin_labs' when argument is of floating point type}}
419  // expected-note@-2 {{use function 'std::abs' instead}}
420  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"std::abs"
421  (void)__builtin_llabs(x);
422  // expected-warning@-1 {{using integer absolute value function '__builtin_llabs' when argument is of floating point type}}
423  // expected-note@-2 {{use function 'std::abs' instead}}
424  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
425
426  (void)__builtin_fabsf(x);
427  // expected-warning@-1{{absolute value function '__builtin_fabsf' given an argument of type 'long double' but has parameter of type 'float' which may cause truncation of value}}
428  // expected-note@-2{{use function 'std::abs' instead}}
429  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
430  (void)__builtin_fabs(x);
431  // expected-warning@-1{{absolute value function '__builtin_fabs' given an argument of type 'long double' but has parameter of type 'double' which may cause truncation of value}}
432  // expected-note@-2{{use function 'std::abs' instead}}
433  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"std::abs"
434  (void)__builtin_fabsl(x);
435
436  (void)__builtin_cabsf(x);
437  // expected-warning@-1 {{using complex absolute value function '__builtin_cabsf' when argument is of floating point type}}
438  // expected-note@-2 {{use function 'std::abs' instead}}
439  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
440  (void)__builtin_cabs(x);
441  // expected-warning@-1 {{using complex absolute value function '__builtin_cabs' when argument is of floating point type}}
442  // expected-note@-2 {{use function 'std::abs' instead}}
443  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"std::abs"
444  (void)__builtin_cabsl(x);
445  // expected-warning@-1 {{using complex absolute value function '__builtin_cabsl' when argument is of floating point type}}
446  // expected-note@-2 {{use function 'std::abs' instead}}
447  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"std::abs"
448}
449
450void test_complex_float(_Complex float x) {
451  (void)abs(x);
452  // expected-warning@-1 {{using integer absolute value function 'abs' when argument is of complex type}}
453  // expected-note@-2 {{use function 'cabsf' instead}}
454  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:12}:"cabsf"
455  (void)labs(x);
456  // expected-warning@-1 {{using integer absolute value function 'labs' when argument is of complex type}}
457  // expected-note@-2 {{use function 'cabsf' instead}}
458  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"cabsf"
459  (void)llabs(x);
460  // expected-warning@-1 {{using integer absolute value function 'llabs' when argument is of complex type}}
461  // expected-note@-2 {{use function 'cabsf' instead}}
462  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"cabsf"
463
464  (void)fabsf(x);
465  // expected-warning@-1 {{using floating point absolute value function 'fabsf' when argument is of complex type}}
466  // expected-note@-2 {{use function 'cabsf' instead}}
467  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"cabsf"
468  (void)fabs(x);
469  // expected-warning@-1 {{using floating point absolute value function 'fabs' when argument is of complex type}}
470  // expected-note@-2 {{use function 'cabsf' instead}}
471  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"cabsf"
472  (void)fabsl(x);
473  // expected-warning@-1 {{using floating point absolute value function 'fabsl' when argument is of complex type}}
474  // expected-note@-2 {{use function 'cabsf' instead}}
475  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"cabsf"
476
477  (void)cabsf(x);
478  (void)cabs(x);
479  (void)cabsl(x);
480
481  (void)__builtin_abs(x);
482  // expected-warning@-1 {{using integer absolute value function '__builtin_abs' when argument is of complex type}}
483  // expected-note@-2 {{use function '__builtin_cabsf' instead}}
484  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:22}:"__builtin_cabsf"
485  (void)__builtin_labs(x);
486  // expected-warning@-1 {{using integer absolute value function '__builtin_labs' when argument is of complex type}}
487  // expected-note@-2 {{use function '__builtin_cabsf' instead}}
488  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"__builtin_cabsf"
489  (void)__builtin_llabs(x);
490  // expected-warning@-1 {{using integer absolute value function '__builtin_llabs' when argument is of complex type}}
491  // expected-note@-2 {{use function '__builtin_cabsf' instead}}
492  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"__builtin_cabsf"
493
494  (void)__builtin_fabsf(x);
495  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabsf' when argument is of complex type}}
496  // expected-note@-2 {{use function '__builtin_cabsf' instead}}
497  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"__builtin_cabsf"
498  (void)__builtin_fabs(x);
499  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabs' when argument is of complex type}}
500  // expected-note@-2 {{use function '__builtin_cabsf' instead}}
501  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"__builtin_cabsf"
502  (void)__builtin_fabsl(x);
503  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabsl' when argument is of complex type}}
504  // expected-note@-2 {{use function '__builtin_cabsf' instead}}
505  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"__builtin_cabsf"
506
507  (void)__builtin_cabsf(x);
508  (void)__builtin_cabs(x);
509  (void)__builtin_cabsl(x);
510}
511
512void test_complex_double(_Complex double x) {
513  (void)abs(x);
514  // expected-warning@-1 {{using integer absolute value function 'abs' when argument is of complex type}}
515  // expected-note@-2 {{use function 'cabs' instead}}
516  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:12}:"cabs"
517  (void)labs(x);
518  // expected-warning@-1 {{using integer absolute value function 'labs' when argument is of complex type}}
519  // expected-note@-2 {{use function 'cabs' instead}}
520  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"cabs"
521  (void)llabs(x);
522  // expected-warning@-1 {{using integer absolute value function 'llabs' when argument is of complex type}}
523  // expected-note@-2 {{use function 'cabs' instead}}
524  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"cabs"
525
526  (void)fabsf(x);
527  // expected-warning@-1 {{using floating point absolute value function 'fabsf' when argument is of complex type}}
528  // expected-note@-2 {{use function 'cabs' instead}}
529  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"cabs"
530  (void)fabs(x);
531  // expected-warning@-1 {{using floating point absolute value function 'fabs' when argument is of complex type}}
532  // expected-note@-2 {{use function 'cabs' instead}}
533  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"cabs"
534  (void)fabsl(x);
535  // expected-warning@-1 {{using floating point absolute value function 'fabsl' when argument is of complex type}}
536  // expected-note@-2 {{use function 'cabs' instead}}
537  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"cabs"
538
539  (void)cabsf(x);
540  // expected-warning@-1 {{absolute value function 'cabsf' given an argument of type '_Complex double' but has parameter of type '_Complex float' which may cause truncation of value}}
541  // expected-note@-2 {{use function 'cabs' instead}}
542  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"cabs"
543  (void)cabs(x);
544  (void)cabsl(x);
545
546  (void)__builtin_abs(x);
547  // expected-warning@-1 {{using integer absolute value function '__builtin_abs' when argument is of complex type}}
548  // expected-note@-2 {{use function '__builtin_cabs' instead}}
549  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:22}:"__builtin_cabs"
550  (void)__builtin_labs(x);
551  // expected-warning@-1 {{using integer absolute value function '__builtin_labs' when argument is of complex type}}
552  // expected-note@-2 {{use function '__builtin_cabs' instead}}
553  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"__builtin_cabs"
554  (void)__builtin_llabs(x);
555  // expected-warning@-1 {{using integer absolute value function '__builtin_llabs' when argument is of complex type}}
556  // expected-note@-2 {{use function '__builtin_cabs' instead}}
557  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"__builtin_cabs"
558
559  (void)__builtin_fabsf(x);
560  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabsf' when argument is of complex type}}
561  // expected-note@-2 {{use function '__builtin_cabs' instead}}
562  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"__builtin_cabs"
563  (void)__builtin_fabs(x);
564  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabs' when argument is of complex type}}
565  // expected-note@-2 {{use function '__builtin_cabs' instead}}
566  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"__builtin_cabs"
567  (void)__builtin_fabsl(x);
568  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabsl' when argument is of complex type}}
569  // expected-note@-2 {{use function '__builtin_cabs' instead}}
570  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"__builtin_cabs"
571
572  (void)__builtin_cabsf(x);
573  // expected-warning@-1 {{absolute value function '__builtin_cabsf' given an argument of type '_Complex double' but has parameter of type '_Complex float' which may cause truncation of value}}
574  // expected-note@-2 {{use function '__builtin_cabs' instead}}
575  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"__builtin_cabs"
576  (void)__builtin_cabs(x);
577  (void)__builtin_cabsl(x);
578}
579
580void test_complex_long_double(_Complex long double x) {
581  (void)abs(x);
582  // expected-warning@-1 {{using integer absolute value function 'abs' when argument is of complex type}}
583  // expected-note@-2 {{use function 'cabsl' instead}}
584  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:12}:"cabsl"
585  (void)labs(x);
586  // expected-warning@-1 {{using integer absolute value function 'labs' when argument is of complex type}}
587  // expected-note@-2 {{use function 'cabsl' instead}}
588  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"cabsl"
589  (void)llabs(x);
590  // expected-warning@-1 {{using integer absolute value function 'llabs' when argument is of complex type}}
591  // expected-note@-2 {{use function 'cabsl' instead}}
592  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"cabsl"
593
594  (void)fabsf(x);
595  // expected-warning@-1 {{using floating point absolute value function 'fabsf' when argument is of complex type}}
596  // expected-note@-2 {{use function 'cabsl' instead}}
597  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"cabsl"
598  (void)fabs(x);
599  // expected-warning@-1 {{using floating point absolute value function 'fabs' when argument is of complex type}}
600  // expected-note@-2 {{use function 'cabsl' instead}}
601  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"cabsl"
602  (void)fabsl(x);
603  // expected-warning@-1 {{using floating point absolute value function 'fabsl' when argument is of complex type}}
604  // expected-note@-2 {{use function 'cabsl' instead}}
605  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"cabsl"
606
607  (void)cabsf(x);
608  // expected-warning@-1 {{absolute value function 'cabsf' given an argument of type '_Complex long double' but has parameter of type '_Complex float' which may cause truncation of value}}
609  // expected-note@-2 {{use function 'cabsl' instead}}
610  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"cabsl"
611  (void)cabs(x);
612  // expected-warning@-1 {{absolute value function 'cabs' given an argument of type '_Complex long double' but has parameter of type '_Complex double' which may cause truncation of value}}
613  // expected-note@-2 {{use function 'cabsl' instead}}
614  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"cabsl"
615  (void)cabsl(x);
616
617  (void)__builtin_abs(x);
618  // expected-warning@-1 {{using integer absolute value function '__builtin_abs' when argument is of complex type}}
619  // expected-note@-2 {{use function '__builtin_cabsl' instead}}
620  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:22}:"__builtin_cabsl"
621  (void)__builtin_labs(x);
622  // expected-warning@-1 {{using integer absolute value function '__builtin_labs' when argument is of complex type}}
623  // expected-note@-2 {{use function '__builtin_cabsl' instead}}
624  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"__builtin_cabsl"
625  (void)__builtin_llabs(x);
626  // expected-warning@-1 {{using integer absolute value function '__builtin_llabs' when argument is of complex type}}
627  // expected-note@-2 {{use function '__builtin_cabsl' instead}}
628  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"__builtin_cabsl"
629
630  (void)__builtin_fabsf(x);
631  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabsf' when argument is of complex type}}
632  // expected-note@-2 {{use function '__builtin_cabsl' instead}}
633  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"__builtin_cabsl"
634  (void)__builtin_fabs(x);
635  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabs' when argument is of complex type}}
636  // expected-note@-2 {{use function '__builtin_cabsl' instead}}
637  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"__builtin_cabsl"
638  (void)__builtin_fabsl(x);
639  // expected-warning@-1 {{using floating point absolute value function '__builtin_fabsl' when argument is of complex type}}
640  // expected-note@-2 {{use function '__builtin_cabsl' instead}}
641  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"__builtin_cabsl"
642
643  (void)__builtin_cabsf(x);
644  // expected-warning@-1 {{absolute value function '__builtin_cabsf' given an argument of type '_Complex long double' but has parameter of type '_Complex float' which may cause truncation of value}}
645  // expected-note@-2 {{use function '__builtin_cabsl' instead}}
646  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"__builtin_cabsl"
647  (void)__builtin_cabs(x);
648  // expected-warning@-1 {{absolute value function '__builtin_cabs' given an argument of type '_Complex long double' but has parameter of type '_Complex double' which may cause truncation of value}}
649  // expected-note@-2 {{use function '__builtin_cabsl' instead}}
650  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"__builtin_cabsl"
651  (void)__builtin_cabsl(x);
652}
653
654void test_unsigned_int(unsigned int x) {
655  (void)std::abs(x);
656  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
657  // expected-note@-2 {{remove the call to 'std::abs' since unsigned values cannot be negative}}
658  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:17}:""
659
660  (void)abs(x);
661  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
662  // expected-note@-2 {{remove the call to 'abs' since unsigned values cannot be negative}}
663  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:12}:""
664  (void)labs(x);
665  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
666  // expected-note@-2 {{remove the call to 'labs' since unsigned values cannot be negative}}
667  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:""
668  (void)llabs(x);
669  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
670  // expected-note@-2 {{remove the call to 'llabs' since unsigned values cannot be negative}}
671  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:""
672
673  (void)fabsf(x);
674  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
675  // expected-note@-2 {{remove the call to 'fabsf' since unsigned values cannot be negative}}
676  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:""
677  (void)fabs(x);
678  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
679  // expected-note@-2 {{remove the call to 'fabs' since unsigned values cannot be negative}}
680  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:""
681  (void)fabsl(x);
682  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
683  // expected-note@-2 {{remove the call to 'fabsl' since unsigned values cannot be negative}}
684  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:""
685
686  (void)cabsf(x);
687  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
688  // expected-note@-2 {{remove the call to 'cabsf' since unsigned values cannot be negative}}
689  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:""
690  (void)cabs(x);
691  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
692  // expected-note@-2 {{remove the call to 'cabs' since unsigned values cannot be negative}}
693  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:""
694  (void)cabsl(x);
695  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
696  // expected-note@-2 {{remove the call to 'cabsl' since unsigned values cannot be negative}}
697  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:""
698
699  (void)__builtin_abs(x);
700  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
701  // expected-note@-2 {{remove the call to '__builtin_abs' since unsigned values cannot be negative}}
702  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:22}:""
703  (void)__builtin_labs(x);
704  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
705  // expected-note@-2 {{remove the call to '__builtin_labs' since unsigned values cannot be negative}}
706  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:""
707  (void)__builtin_llabs(x);
708  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
709  // expected-note@-2 {{remove the call to '__builtin_llabs' since unsigned values cannot be negative}}
710  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:""
711
712  (void)__builtin_fabsf(x);
713  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
714  // expected-note@-2 {{remove the call to '__builtin_fabsf' since unsigned values cannot be negative}}
715  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:""
716  (void)__builtin_fabs(x);
717  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
718  // expected-note@-2 {{remove the call to '__builtin_fabs' since unsigned values cannot be negative}}
719  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:""
720  (void)__builtin_fabsl(x);
721  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
722  // expected-note@-2 {{remove the call to '__builtin_fabsl' since unsigned values cannot be negative}}
723  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:""
724
725  (void)__builtin_cabsf(x);
726  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
727  // expected-note@-2 {{remove the call to '__builtin_cabsf' since unsigned values cannot be negative}}
728  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:""
729  (void)__builtin_cabs(x);
730  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
731  // expected-note@-2 {{remove the call to '__builtin_cabs' since unsigned values cannot be negative}}
732  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:""
733  (void)__builtin_cabsl(x);
734  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}}
735  // expected-note@-2 {{remove the call to '__builtin_cabsl' since unsigned values cannot be negative}}
736  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:""
737}
738
739void test_unsigned_long(unsigned long x) {
740  (void)std::abs(x);
741  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
742  // expected-note@-2 {{remove the call to 'std::abs' since unsigned values cannot be negative}}
743  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:17}:""
744
745  (void)abs(x);
746  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
747  // expected-note@-2 {{remove the call to 'abs' since unsigned values cannot be negative}}
748  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:12}:""
749  (void)labs(x);
750  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
751  // expected-note@-2 {{remove the call to 'labs' since unsigned values cannot be negative}}
752  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:""
753  (void)llabs(x);
754  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
755  // expected-note@-2 {{remove the call to 'llabs' since unsigned values cannot be negative}}
756  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:""
757
758  (void)fabsf(x);
759  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
760  // expected-note@-2 {{remove the call to 'fabsf' since unsigned values cannot be negative}}
761  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:""
762  (void)fabs(x);
763  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
764  // expected-note@-2 {{remove the call to 'fabs' since unsigned values cannot be negative}}
765  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:""
766  (void)fabsl(x);
767  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
768  // expected-note@-2 {{remove the call to 'fabsl' since unsigned values cannot be negative}}
769  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:""
770
771  (void)cabsf(x);
772  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
773  // expected-note@-2 {{remove the call to 'cabsf' since unsigned values cannot be negative}}
774  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:""
775  (void)cabs(x);
776  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
777  // expected-note@-2 {{remove the call to 'cabs' since unsigned values cannot be negative}}
778  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:""
779  (void)cabsl(x);
780  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
781  // expected-note@-2 {{remove the call to 'cabsl' since unsigned values cannot be negative}}
782  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:""
783
784  (void)__builtin_abs(x);
785  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
786  // expected-note@-2 {{remove the call to '__builtin_abs' since unsigned values cannot be negative}}
787  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:22}:""
788  (void)__builtin_labs(x);
789  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
790  // expected-note@-2 {{remove the call to '__builtin_labs' since unsigned values cannot be negative}}
791  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:""
792  (void)__builtin_llabs(x);
793  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
794  // expected-note@-2 {{remove the call to '__builtin_llabs' since unsigned values cannot be negative}}
795  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:""
796
797  (void)__builtin_fabsf(x);
798  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
799  // expected-note@-2 {{remove the call to '__builtin_fabsf' since unsigned values cannot be negative}}
800  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:""
801  (void)__builtin_fabs(x);
802  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
803  // expected-note@-2 {{remove the call to '__builtin_fabs' since unsigned values cannot be negative}}
804  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:""
805  (void)__builtin_fabsl(x);
806  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
807  // expected-note@-2 {{remove the call to '__builtin_fabsl' since unsigned values cannot be negative}}
808  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:""
809
810  (void)__builtin_cabsf(x);
811  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
812  // expected-note@-2 {{remove the call to '__builtin_cabsf' since unsigned values cannot be negative}}
813  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:""
814  (void)__builtin_cabs(x);
815  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
816  // expected-note@-2 {{remove the call to '__builtin_cabs' since unsigned values cannot be negative}}
817  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:""
818  (void)__builtin_cabsl(x);
819  // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}}
820  // expected-note@-2 {{remove the call to '__builtin_cabsl' since unsigned values cannot be negative}}
821  // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:""
822}
823
824