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