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 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 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 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 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 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 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 450 void test_complex_float(_Complex float x) { 451 (void)cabsf(x); 452 (void)cabs(x); 453 (void)cabsl(x); 454 455 (void)__builtin_cabsf(x); 456 (void)__builtin_cabs(x); 457 (void)__builtin_cabsl(x); 458 } 459 460 void test_complex_double(_Complex double x) { 461 (void)cabsf(x); 462 // 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}} 463 // expected-note@-2 {{use function 'cabs' instead}} 464 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"cabs" 465 (void)cabs(x); 466 (void)cabsl(x); 467 468 469 (void)__builtin_cabsf(x); 470 // 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}} 471 // expected-note@-2 {{use function '__builtin_cabs' instead}} 472 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"__builtin_cabs" 473 (void)__builtin_cabs(x); 474 (void)__builtin_cabsl(x); 475 } 476 477 void test_complex_long_double(_Complex long double x) { 478 (void)cabsf(x); 479 // 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}} 480 // expected-note@-2 {{use function 'cabsl' instead}} 481 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"cabsl" 482 (void)cabs(x); 483 // 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}} 484 // expected-note@-2 {{use function 'cabsl' instead}} 485 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"cabsl" 486 (void)cabsl(x); 487 488 (void)__builtin_cabsf(x); 489 // 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}} 490 // expected-note@-2 {{use function '__builtin_cabsl' instead}} 491 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"__builtin_cabsl" 492 (void)__builtin_cabs(x); 493 // 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}} 494 // expected-note@-2 {{use function '__builtin_cabsl' instead}} 495 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"__builtin_cabsl" 496 (void)__builtin_cabsl(x); 497 } 498 499 void test_unsigned_int(unsigned int x) { 500 (void)std::abs(x); 501 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 502 // expected-note@-2 {{remove the call to 'std::abs' since unsigned values cannot be negative}} 503 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:17}:"" 504 505 (void)abs(x); 506 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 507 // expected-note@-2 {{remove the call to 'abs' since unsigned values cannot be negative}} 508 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:12}:"" 509 (void)labs(x); 510 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 511 // expected-note@-2 {{remove the call to 'labs' since unsigned values cannot be negative}} 512 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"" 513 (void)llabs(x); 514 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 515 // expected-note@-2 {{remove the call to 'llabs' since unsigned values cannot be negative}} 516 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"" 517 518 (void)fabsf(x); 519 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 520 // expected-note@-2 {{remove the call to 'fabsf' since unsigned values cannot be negative}} 521 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"" 522 (void)fabs(x); 523 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 524 // expected-note@-2 {{remove the call to 'fabs' since unsigned values cannot be negative}} 525 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"" 526 (void)fabsl(x); 527 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 528 // expected-note@-2 {{remove the call to 'fabsl' since unsigned values cannot be negative}} 529 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"" 530 531 (void)cabsf(x); 532 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 533 // expected-note@-2 {{remove the call to 'cabsf' since unsigned values cannot be negative}} 534 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"" 535 (void)cabs(x); 536 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 537 // expected-note@-2 {{remove the call to 'cabs' since unsigned values cannot be negative}} 538 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"" 539 (void)cabsl(x); 540 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 541 // expected-note@-2 {{remove the call to 'cabsl' since unsigned values cannot be negative}} 542 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"" 543 544 (void)__builtin_abs(x); 545 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 546 // expected-note@-2 {{remove the call to '__builtin_abs' since unsigned values cannot be negative}} 547 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:22}:"" 548 (void)__builtin_labs(x); 549 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 550 // expected-note@-2 {{remove the call to '__builtin_labs' since unsigned values cannot be negative}} 551 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"" 552 (void)__builtin_llabs(x); 553 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 554 // expected-note@-2 {{remove the call to '__builtin_llabs' since unsigned values cannot be negative}} 555 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"" 556 557 (void)__builtin_fabsf(x); 558 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 559 // expected-note@-2 {{remove the call to '__builtin_fabsf' since unsigned values cannot be negative}} 560 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"" 561 (void)__builtin_fabs(x); 562 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 563 // expected-note@-2 {{remove the call to '__builtin_fabs' since unsigned values cannot be negative}} 564 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"" 565 (void)__builtin_fabsl(x); 566 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 567 // expected-note@-2 {{remove the call to '__builtin_fabsl' since unsigned values cannot be negative}} 568 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"" 569 570 (void)__builtin_cabsf(x); 571 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 572 // expected-note@-2 {{remove the call to '__builtin_cabsf' since unsigned values cannot be negative}} 573 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"" 574 (void)__builtin_cabs(x); 575 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 576 // expected-note@-2 {{remove the call to '__builtin_cabs' since unsigned values cannot be negative}} 577 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"" 578 (void)__builtin_cabsl(x); 579 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned int' has no effect}} 580 // expected-note@-2 {{remove the call to '__builtin_cabsl' since unsigned values cannot be negative}} 581 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"" 582 } 583 584 void test_unsigned_long(unsigned long x) { 585 (void)std::abs(x); 586 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 587 // expected-note@-2 {{remove the call to 'std::abs' since unsigned values cannot be negative}} 588 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:17}:"" 589 590 (void)abs(x); 591 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 592 // expected-note@-2 {{remove the call to 'abs' since unsigned values cannot be negative}} 593 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:12}:"" 594 (void)labs(x); 595 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 596 // expected-note@-2 {{remove the call to 'labs' since unsigned values cannot be negative}} 597 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"" 598 (void)llabs(x); 599 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 600 // expected-note@-2 {{remove the call to 'llabs' since unsigned values cannot be negative}} 601 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"" 602 603 (void)fabsf(x); 604 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 605 // expected-note@-2 {{remove the call to 'fabsf' since unsigned values cannot be negative}} 606 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"" 607 (void)fabs(x); 608 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 609 // expected-note@-2 {{remove the call to 'fabs' since unsigned values cannot be negative}} 610 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"" 611 (void)fabsl(x); 612 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 613 // expected-note@-2 {{remove the call to 'fabsl' since unsigned values cannot be negative}} 614 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"" 615 616 (void)cabsf(x); 617 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 618 // expected-note@-2 {{remove the call to 'cabsf' since unsigned values cannot be negative}} 619 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"" 620 (void)cabs(x); 621 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 622 // expected-note@-2 {{remove the call to 'cabs' since unsigned values cannot be negative}} 623 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:13}:"" 624 (void)cabsl(x); 625 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 626 // expected-note@-2 {{remove the call to 'cabsl' since unsigned values cannot be negative}} 627 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:14}:"" 628 629 (void)__builtin_abs(x); 630 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 631 // expected-note@-2 {{remove the call to '__builtin_abs' since unsigned values cannot be negative}} 632 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:22}:"" 633 (void)__builtin_labs(x); 634 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 635 // expected-note@-2 {{remove the call to '__builtin_labs' since unsigned values cannot be negative}} 636 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"" 637 (void)__builtin_llabs(x); 638 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 639 // expected-note@-2 {{remove the call to '__builtin_llabs' since unsigned values cannot be negative}} 640 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"" 641 642 (void)__builtin_fabsf(x); 643 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 644 // expected-note@-2 {{remove the call to '__builtin_fabsf' since unsigned values cannot be negative}} 645 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"" 646 (void)__builtin_fabs(x); 647 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 648 // expected-note@-2 {{remove the call to '__builtin_fabs' since unsigned values cannot be negative}} 649 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"" 650 (void)__builtin_fabsl(x); 651 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 652 // expected-note@-2 {{remove the call to '__builtin_fabsl' since unsigned values cannot be negative}} 653 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"" 654 655 (void)__builtin_cabsf(x); 656 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 657 // expected-note@-2 {{remove the call to '__builtin_cabsf' since unsigned values cannot be negative}} 658 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"" 659 (void)__builtin_cabs(x); 660 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 661 // expected-note@-2 {{remove the call to '__builtin_cabs' since unsigned values cannot be negative}} 662 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:23}:"" 663 (void)__builtin_cabsl(x); 664 // expected-warning@-1 {{taking the absolute value of unsigned type 'unsigned long' has no effect}} 665 // expected-note@-2 {{remove the call to '__builtin_cabsl' since unsigned values cannot be negative}} 666 // CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:9-[[@LINE-3]]:24}:"" 667 } 668 669