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