1/* Test for diagnostics for Wconversion for floating-point. */ 2 3/* { dg-do compile } */ 4/* { dg-skip-if "doubles are floats" { "avr-*-*" } { "*" } { "" } } */ 5/* { dg-options "-std=c99 -Wconversion" { target c } } */ 6/* { dg-options "-Wconversion" { target c++ } } */ 7/* { dg-require-effective-target large_double } */ 8 9float vfloat; 10double vdouble; 11long double vlongdouble; 12 13void ffloat (float f); 14void fdouble (double d); 15void flongdouble (long double ld); 16 17void h (void) 18{ 19 float f = 0; 20 double d = 0; 21 long double ld = 0; 22 23 ffloat (3.1); /* { dg-warning "conversion" } */ 24 vfloat = 3.1; /* { dg-warning "conversion" } */ 25 ffloat (3.1L); /* { dg-warning "conversion" } */ 26 vfloat = 3.1L; /* { dg-warning "conversion" } */ 27 fdouble (3.1L); /* { dg-warning "conversion" "" { target large_long_double } } */ 28 vdouble = 3.1L; /* { dg-warning "conversion" "" { target large_long_double } } */ 29 ffloat (vdouble); /* { dg-warning "conversion" } */ 30 vfloat = vdouble; /* { dg-warning "conversion" } */ 31 ffloat (vlongdouble); /* { dg-warning "conversion" } */ 32 vfloat = vlongdouble; /* { dg-warning "conversion" } */ 33 fdouble (vlongdouble); /* { dg-warning "conversion" "" { target large_long_double } } */ 34 vdouble = vlongdouble; /* { dg-warning "conversion" "" { target large_long_double } } */ 35 36 37 ffloat ((float) 3.1); 38 vfloat = (float) 3.1; 39 ffloat ((float) 3.1L); 40 vfloat = (float) 3.1L; 41 fdouble ((double) 3.1L); 42 vdouble = (double) 3.1L; 43 ffloat ((float) vdouble); 44 vfloat = (float) vdouble; 45 ffloat ((float) vlongdouble); 46 vfloat = (float) vlongdouble; 47 fdouble ((double) vlongdouble); 48 vdouble = (double) vlongdouble; 49 50 51 ffloat (3.0); 52 vfloat = 3.0; 53 ffloat (3.1f); 54 vfloat = 3.1f; 55 ffloat (0.25L); 56 vfloat = 0.25L; 57 58 59 fdouble (3.0); 60 vdouble = 3.0; 61 fdouble (3.1f); 62 vdouble = 3.1f; 63 fdouble (0.25L); 64 vdouble = 0.25L; 65 66 flongdouble (3.0); 67 vlongdouble = 3.0; 68 flongdouble (3.1f); 69 vlongdouble = 3.1f; 70 flongdouble (0.25L); 71 vlongdouble = 0.25L; 72 73 ffloat (f); 74 vfloat = f; 75 fdouble (f); 76 vdouble = f; 77 fdouble (d); 78 vdouble = d; 79 flongdouble (f); 80 vlongdouble = f; 81 flongdouble (d); 82 vlongdouble = d; 83 flongdouble (ld); 84 vlongdouble = ld; 85} 86