OSDN Git Service

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