| /* { dg-do compile { target c99_runtime } } */ |
| /* { dg-options "-Wabsolute-value" } */ |
| |
| #include <stdlib.h> |
| #include <inttypes.h> |
| #include <math.h> |
| #include <complex.h> |
| |
| void |
| tst_unsigned (unsigned *pu, unsigned long *pl, unsigned long long *pll, |
| uintmax_t *pm) |
| { |
| *pu = abs (*pu); /* { dg-warning "taking the absolute value of unsigned type" } */ |
| *pl = labs (*pl); /* { dg-warning "taking the absolute value of unsigned type" } */ |
| *pll = llabs (*pll); /* { dg-warning "taking the absolute value of unsigned type" } */ |
| *pm = imaxabs (*pm); /* { dg-warning "taking the absolute value of unsigned type" } */ |
| } |
| |
| void |
| test_int_size (long long *pll) |
| { |
| *pll = abs (*pll); /* { dg-warning "may cause truncation of value" } */ |
| *pll = abs ((int) *pll); |
| } |
| |
| void |
| tst_notint (float *pf, double *pd, _Complex double *pc) |
| { |
| *pf = abs (*pf); /* { dg-warning "using integer absolute value function" } */ |
| *pd = labs (*pd); /* { dg-warning "using integer absolute value function" } */ |
| *pc = abs (*pc); /* { dg-warning "using integer absolute value function" } */ |
| } |
| |
| void |
| tst_notfloat (int *pi, long *pl, complex double *pc) |
| { |
| *pi = fabsf (*pi); /* { dg-warning "using floating-point absolute value function" } */ |
| *pl = fabs (*pl); /* { dg-warning "using floating-point absolute value function" } */ |
| *pc = fabs (*pc); /* { dg-warning "using floating-point absolute value function" } */ |
| } |
| |
| void |
| tst_float_size (double *pd, long double *pld) |
| { |
| *pd = fabsf (*pd); /* { dg-warning "may cause truncation of value" } */ |
| *pld = fabs (*pld); /* { dg-warning "may cause truncation of value" "fabs trunc" { target { large_long_double } } } */ |
| *pld = fabs ((double) *pld); |
| } |
| |
| void tst_notcomplex (int *pi, long *pl, long double *pld) |
| { |
| *pi = cabs (*pi); /* { dg-warning "using complex absolute value function" } */ |
| *pl = cabs (*pl); /* { dg-warning "using complex absolute value function" } */ |
| *pld = cabsl (*pld);/* { dg-warning "using complex absolute value function" } */ |
| } |
| |
| void tst_cplx_size (complex double *pcd, complex long double *pcld) |
| { |
| *pcd = cabsf (*pcd); /* { dg-warning "may cause truncation of value" } */ |
| *pcld = cabs (*pcld); /* { dg-warning "may cause truncation of value" "cabs trunc" { target { large_long_double } } } */ |
| *pcld = cabs ((complex double) *pcld); |
| } |
| |
| |
| |
| |