]> granicus.if.org Git - clang/commitdiff
At sabre's request, drop the FP bounds diagnostics down to warnings and file
authorJohn McCall <rjmccall@apple.com>
Fri, 26 Feb 2010 23:35:57 +0000 (23:35 +0000)
committerJohn McCall <rjmccall@apple.com>
Fri, 26 Feb 2010 23:35:57 +0000 (23:35 +0000)
them under -Wbad-literal.  They're still on by default.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97284 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticGroups.td
include/clang/Basic/DiagnosticSemaKinds.td
lib/Sema/SemaExpr.cpp
test/Lexer/constants.c

index 918f13e2b418e49cab38f6586232eb5df672dc46..4cedd11e219ec6c82f4287f2c658af59a4985643 100644 (file)
@@ -24,6 +24,7 @@ def AddressOfTemporary : DiagGroup<"address-of-temporary">;
 def : DiagGroup<"aggregate-return">;
 def : DiagGroup<"attributes">;
 def : DiagGroup<"bad-function-cast">;
+def BadLiteral : DiagGroup<"bad-literal">; // not in gcc
 def : DiagGroup<"c++-compat">;
 def : DiagGroup<"cast-align">;
 def : DiagGroup<"cast-qual">;
index 3d9253db334a2aa0525dd8e44111d7230c02e3cd..6eb3520c6fff864fdf21a138024bb72ba9643bad 100644 (file)
@@ -29,10 +29,12 @@ def ext_null_pointer_expr_not_ice : Extension<
 // Semantic analysis of constant literals.
 def ext_predef_outside_function : Warning<
   "predefined identifier is only valid inside function">;
-def err_float_overflow : Error<
-  "magnitude of floating-point constant too large for type %0; maximum is %1">;
-def err_float_underflow : Error<
-  "magnitude of floating-point constant too small for type %0; minimum is %1">;
+def warn_float_overflow : Warning<
+  "magnitude of floating-point constant too large for type %0; maximum is %1">,
+   InGroup<BadLiteral>;
+def warn_float_underflow : Warning<
+  "magnitude of floating-point constant too small for type %0; minimum is %1">,
+  InGroup<BadLiteral>;
 
 // C99 Designated Initializers
 def err_array_designator_negative : Error<
index fc89b15c04e7db85b1fde55345e8058dbbd85ef3..c25d1195d8bff02d20cb8d649de1619885cdae54 100644 (file)
@@ -1736,10 +1736,10 @@ Action::OwningExprResult Sema::ActOnNumericConstant(const Token &Tok) {
       unsigned diagnostic;
       llvm::SmallVector<char, 20> buffer;
       if (result & APFloat::opOverflow) {
-        diagnostic = diag::err_float_overflow;
+        diagnostic = diag::warn_float_overflow;
         APFloat::getLargest(Format).toString(buffer);
       } else {
-        diagnostic = diag::err_float_underflow;
+        diagnostic = diag::warn_float_underflow;
         APFloat::getSmallest(Format).toString(buffer);
       }
 
index 104a3a2a2b27d5ebd7554112b73fc0f2895d2d5c..b833e7b43f4717ac87ebd15b201b728b0f26a403 100644 (file)
@@ -38,20 +38,20 @@ char f = 'abcd';  // ignored.
 float t0[] = {
   1.9e20f,
   1.9e-20f,
-  1.9e50f,   // expected-error {{too large}}
-  1.9e-50f,  // expected-error {{too small}}
+  1.9e50f,   // expected-warning {{too large}}
+  1.9e-50f,  // expected-warning {{too small}}
   -1.9e20f,
   -1.9e-20f,
-  -1.9e50f,  // expected-error {{too large}}
-  -1.9e-50f  // expected-error {{too small}}
+  -1.9e50f,  // expected-warning {{too large}}
+  -1.9e-50f  // expected-warning {{too small}}
 };
 double t1[] = {
   1.9e50,
   1.9e-50,
-  1.9e500,   // expected-error {{too large}}
-  1.9e-500,  // expected-error {{too small}}
+  1.9e500,   // expected-warning {{too large}}
+  1.9e-500,  // expected-warning {{too small}}
   -1.9e50,
   -1.9e-50,
-  -1.9e500,  // expected-error {{too large}}
-  -1.9e-500  // expected-error {{too small}}
+  -1.9e500,  // expected-warning {{too large}}
+  -1.9e-500  // expected-warning {{too small}}
 };