1193323Sed/* PR 23572 : warnings for out of range floating-point constants
2193323Sed   Test that they are NOT pedantic warnings.  */
3193323Sed/* { dg-compile } */
4193323Sed/* { dg-options "-pedantic-errors -std=c99" } */
5193323Sed/* { dg-skip-if "No Inf support" { spu-*-* } } */
6193323Sed#include <math.h>
7193323Sed
8193323Sed#ifndef INFINITY
9193323Sed#define INFINITY (__builtin_inff ())
10193323Sed#endif
11193323Sed
12193323Sedvoid overflow(void)
13193323Sed{
14193323Sed  float f1 = 3.5E+38f;  /* { dg-warning "floating constant exceeds range" } */
15193323Sed  float f2 = -3.5E+38f; /* { dg-warning "floating constant exceeds range" } */
16193323Sed  float f3 = INFINITY;
17193323Sed  float f4 = -INFINITY;
18193323Sed
19193323Sed  double d1 = 1.9E+308;  /* { dg-warning "floating constant exceeds range" } */
20193323Sed  double d2 = -1.9E+308; /* { dg-warning "floating constant exceeds range" } */
21193323Sed  double d3 = INFINITY;
22203954Srdivacky  double d4 = -INFINITY;
23193323Sed}
24193323Sed
25193323Sedvoid underflow(void)
26193323Sed{
27193323Sed  float f11 = 3.3E-10000000000000000000f;  /* { dg-warning "floating constant truncated to zero" } */
28193323Sed  float f22 = -3.3E-10000000000000000000f; /* { dg-warning "floating constant truncated to zero" } */
29193323Sed  float f1 = 3.3E-46f;  /* { dg-warning "floating constant truncated to zero" } */
30193323Sed  float f2 = -3.3E-46f; /* { dg-warning "floating constant truncated to zero" } */
31193323Sed  float f3 = 0;
32193323Sed  float f4 = -0;
33193323Sed  float f5 = 0.0;
34193323Sed  float f6 = -0.0;
35193323Sed
36193323Sed  double d11 = 3.3E-10000000000000000000;  /* { dg-warning "floating constant truncated to zero" } */
37193323Sed  double d22 = -3.3E-10000000000000000000; /* { dg-warning "floating constant truncated to zero" } */
38193323Sed  double d1 = 1.4E-325;  /* { dg-warning "floating constant truncated to zero" } */
39193323Sed  double d2 = -1.4E-325; /* { dg-warning "floating constant truncated to zero" } */
40193323Sed  double d3 = 0;
41193323Sed  double d4 = -0;
42193323Sed  double d5 = 0.0;
43193323Sed  double d6 = -0.0;
44193323Sed}
45193323Sed