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 
4 extern "C" {
5 int abs(int);
6 long int labs(long int);
7 long long int llabs(long long int);
8 
9 float fabsf(float);
10 double fabs(double);
11 long double fabsl(long double);
12 
13 float cabsf(float _Complex);
14 double cabs(double _Complex);
15 long double cabsl(long double _Complex);
16 }
17 
18 namespace std {
19 
20 inline namespace __1 {
21 int abs(int);
22 long int abs(long int);
23 long long int abs(long long int);
24 }
25 
26 float abs(float);
27 double abs(double);
28 long double abs(long double);
29 
30 template <typename T>
31 double abs(T);
32 
33 }
34 
test_int(int x)35 void 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 
test_long(long x)99 void 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 
test_long_long(long long x)164 void 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 
test_float(float x)240 void 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 
test_double(double x)304 void 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 
test_long_double(long double x)374 void 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 
test_complex_float(_Complex float x)450 void 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 
test_complex_double(_Complex double x)512 void 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 
test_complex_long_double(_Complex long double x)580 void 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 
test_unsigned_int(unsigned int x)654 void 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 
test_unsigned_long(unsigned long x)739 void 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