annotate gcc/testsuite/c-c++-common/Wfloat-conversion.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Test for diagnostics for Wconversion for floating-point. */
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 /* { dg-do compile } */
kono
parents:
diff changeset
4 /* { dg-options "-std=c99 -Wfloat-conversion" { target c } } */
kono
parents:
diff changeset
5 /* { dg-options "-Wfloat-conversion" { target c++ } } */
kono
parents:
diff changeset
6 /* { dg-require-effective-target large_double } */
kono
parents:
diff changeset
7 /* { dg-require-effective-target int32plus } */
kono
parents:
diff changeset
8 /* { dg-require-effective-target double64plus } */
kono
parents:
diff changeset
9 #include <limits.h>
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 float vfloat;
kono
parents:
diff changeset
12 double vdouble;
kono
parents:
diff changeset
13 long double vlongdouble;
kono
parents:
diff changeset
14 int bar;
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 void fsi (signed int x);
kono
parents:
diff changeset
17 void fui (unsigned int x);
kono
parents:
diff changeset
18 void ffloat (float f);
kono
parents:
diff changeset
19 void fdouble (double d);
kono
parents:
diff changeset
20 void flongdouble (long double ld);
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 void h (void)
kono
parents:
diff changeset
23 {
kono
parents:
diff changeset
24 unsigned int ui = 3;
kono
parents:
diff changeset
25 int si = 3;
kono
parents:
diff changeset
26 unsigned char uc = 3;
kono
parents:
diff changeset
27 signed char sc = 3;
kono
parents:
diff changeset
28 float f = 0;
kono
parents:
diff changeset
29 double d = 0;
kono
parents:
diff changeset
30 long double ld = 0;
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 ffloat (3.1); /* { dg-warning "conversion from .double. to .float. changes value" } */
kono
parents:
diff changeset
33 vfloat = 3.1; /* { dg-warning "conversion from .double. to .float. changes value" } */
kono
parents:
diff changeset
34 ffloat (3.1L); /* { dg-warning "conversion from .long double. to .float. changes value" } */
kono
parents:
diff changeset
35 vfloat = 3.1L; /* { dg-warning "conversion from .long double. to .float. changes value" } */
kono
parents:
diff changeset
36 fdouble (3.1L); /* { dg-warning "conversion from .long double. to .double. changes value" "" { target large_long_double } } */
kono
parents:
diff changeset
37 vdouble = 3.1L; /* { dg-warning "conversion from .long double. to .double. changes value" "" { target large_long_double } } */
kono
parents:
diff changeset
38 ffloat (vdouble); /* { dg-warning "conversion from .double. to .float. may change value" } */
kono
parents:
diff changeset
39 vfloat = vdouble; /* { dg-warning "conversion from .double. to .float. may change value" } */
kono
parents:
diff changeset
40 ffloat (vlongdouble); /* { dg-warning "conversion from .long double. to .float. may change value" } */
kono
parents:
diff changeset
41 vfloat = vlongdouble; /* { dg-warning "conversion from .long double. to .float. may change value" } */
kono
parents:
diff changeset
42 fdouble (vlongdouble); /* { dg-warning "conversion from .long double. to .double. may change value" "" { target large_long_double } } */
kono
parents:
diff changeset
43 vdouble = vlongdouble; /* { dg-warning "conversion from .long double. to .double. may change value" "" { target large_long_double } } */
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 fsi (3.1f); /* { dg-warning "conversion from .float. to .int. changes value" } */
kono
parents:
diff changeset
46 si = 3.1f; /* { dg-warning "conversion from .float. to .int. changes value" } */
kono
parents:
diff changeset
47 fsi (3.1); /* { dg-warning "conversion from .double. to .int. changes value" } */
kono
parents:
diff changeset
48 si = 3.1; /* { dg-warning "conversion from .double. to .int. changes value" } */
kono
parents:
diff changeset
49 fsi (d); /* { dg-warning "conversion from .double. to .int. may change value" } */
kono
parents:
diff changeset
50 si = d; /* { dg-warning "conversion from .double. to .int. may change value" } */
kono
parents:
diff changeset
51 ffloat (INT_MAX); /* { dg-warning "conversion from .int. to .float. changes value" } */
kono
parents:
diff changeset
52 vfloat = INT_MAX; /* { dg-warning "conversion from .int. to .float. changes value" } */
kono
parents:
diff changeset
53 ffloat (16777217); /* { dg-warning "conversion from .int. to .float. changes value from .16777217." } */
kono
parents:
diff changeset
54 vfloat = 16777217; /* { dg-warning "conversion from .int. to .float. changes value from .16777217." } */
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 sc = bar != 0 ? 2.1 : 10; /* { dg-warning "conversion from .double. to .signed char. changes the value of .2\.1" } */
kono
parents:
diff changeset
57 uc = bar != 0 ? 2.1 : 10; /* { dg-warning "conversion from .double. to .unsigned char. changes the value of .2\.1" } */
kono
parents:
diff changeset
58 }