OSDN Git Service

gcc/
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / Wconversion-real-integer.c
1 /* Test for diagnostics for Wconversion between floating-point and
2    integers.  */
3
4 /* { dg-do compile }
5 /* { dg-options "-std=c99 -Wconversion" } */
6
7 #include <limits.h>
8
9 void fsi (signed int x);
10 void fui (unsigned int x);
11 void ffloat (float x);
12 void fdouble (double x);
13
14 float  vfloat;
15 double vdouble;
16
17 void h (void)
18 {
19   unsigned int ui = 3;
20   int   si = 3;
21   unsigned char uc = 3;
22   signed char sc = 3;
23   float  f = 3;
24   double d = 3;
25
26   fsi (3.1f); /* { dg-warning "conversion" } */
27   si = 3.1f; /* { dg-warning "conversion" } */
28   fsi (3.1);  /* { dg-warning "conversion" } */
29   si = 3.1;  /* { dg-warning "conversion" } */
30   fsi (d);    /* { dg-warning "conversion" } */
31   si = d;    /* { dg-warning "conversion" } */
32   fui (-1.0); /* { dg-warning "overflow" } */
33   ui = -1.0;   /* { dg-warning "overflow" } */
34   ffloat (INT_MAX);  /* { dg-warning "conversion" } */
35   vfloat = INT_MAX;  /* { dg-warning "conversion" } */
36   ffloat (16777217); /* { dg-warning "conversion" } */
37   vfloat = 16777217; /* { dg-warning "conversion" } */
38   ffloat (si); /* { dg-warning "conversion" } */
39   vfloat = si; /* { dg-warning "conversion" } */
40   ffloat (ui); /* { dg-warning "conversion" } */
41   vfloat = ui; /* { dg-warning "conversion" } */
42
43   fsi (3);
44   si = 3;
45   fsi (3.0f);
46   si = 3.0f;
47   fsi (3.0);
48   si = 3.0;
49   fsi (16777217.0f);
50   si = 16777217.0f;
51   fsi ((int) 3.1);
52   si = (int) 3.1;
53   ffloat (3U);
54   vfloat = 3U;
55   ffloat (3);
56   vfloat = 3;
57   ffloat (INT_MIN);
58   vfloat = INT_MIN;
59   ffloat (uc);
60   vfloat = uc;
61   ffloat (sc);
62   vfloat = sc;
63
64   fdouble (UINT_MAX);
65   vdouble = UINT_MAX;
66   fdouble (ui);
67   vdouble = ui;
68   fdouble (si);
69   vdouble = si;
70 }
71
72