669 lines · cpp
1// RUN: %clang_cc1 -triple i686-pc-linux-gnu -fsyntax-only -verify %s -Wabsolute-value -std=c++112// RUN: %clang_cc1 -triple i686-pc-linux-gnu -fsyntax-only %s -Wabsolute-value -fdiagnostics-parseable-fixits -std=c++11 2>&1 | FileCheck %s3 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 target103 (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 for133 // this target134 (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)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 460void 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 477void 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 499void 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 584void 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