| /* Test for diagnostics for Wconversion for floating-point. */ |
| |
| /* { dg-do compile } */ |
| /* { dg-skip-if "doubles are floats" { "avr-*-*" } } */ |
| /* { dg-options "-std=c99 -Wconversion" { target c } } */ |
| /* { dg-options "-Wconversion" { target c++ } } */ |
| /* { dg-require-effective-target large_double } */ |
| |
| float vfloat; |
| double vdouble; |
| long double vlongdouble; |
| |
| void ffloat (float f); |
| void fdouble (double d); |
| void flongdouble (long double ld); |
| |
| void h (void) |
| { |
| float f = 0; |
| double d = 0; |
| long double ld = 0; |
| |
| ffloat (3.1); /* { dg-warning "conversion" } */ |
| vfloat = 3.1; /* { dg-warning "conversion" } */ |
| ffloat (3.1L); /* { dg-warning "conversion" } */ |
| vfloat = 3.1L; /* { dg-warning "conversion" } */ |
| fdouble (3.1L); /* { dg-warning "conversion" "" { target large_long_double } } */ |
| vdouble = 3.1L; /* { dg-warning "conversion" "" { target large_long_double } } */ |
| ffloat (vdouble); /* { dg-warning "conversion" } */ |
| vfloat = vdouble; /* { dg-warning "conversion" } */ |
| ffloat (vlongdouble); /* { dg-warning "conversion" } */ |
| vfloat = vlongdouble; /* { dg-warning "conversion" } */ |
| fdouble (vlongdouble); /* { dg-warning "conversion" "" { target large_long_double } } */ |
| vdouble = vlongdouble; /* { dg-warning "conversion" "" { target large_long_double } } */ |
| |
| |
| ffloat ((float) 3.1); |
| vfloat = (float) 3.1; |
| ffloat ((float) 3.1L); |
| vfloat = (float) 3.1L; |
| fdouble ((double) 3.1L); |
| vdouble = (double) 3.1L; |
| ffloat ((float) vdouble); |
| vfloat = (float) vdouble; |
| ffloat ((float) vlongdouble); |
| vfloat = (float) vlongdouble; |
| fdouble ((double) vlongdouble); |
| vdouble = (double) vlongdouble; |
| |
| |
| ffloat (3.0); |
| vfloat = 3.0; |
| ffloat (3.1f); |
| vfloat = 3.1f; |
| ffloat (0.25L); |
| vfloat = 0.25L; |
| |
| |
| fdouble (3.0); |
| vdouble = 3.0; |
| fdouble (3.1f); |
| vdouble = 3.1f; |
| fdouble (0.25L); |
| vdouble = 0.25L; |
| |
| flongdouble (3.0); |
| vlongdouble = 3.0; |
| flongdouble (3.1f); |
| vlongdouble = 3.1f; |
| flongdouble (0.25L); |
| vlongdouble = 0.25L; |
| |
| ffloat (f); |
| vfloat = f; |
| fdouble (f); |
| vdouble = f; |
| fdouble (d); |
| vdouble = d; |
| flongdouble (f); |
| vlongdouble = f; |
| flongdouble (d); |
| vlongdouble = d; |
| flongdouble (ld); |
| vlongdouble = ld; |
| } |