WarnUnusedMacros("Wunused_macros",
llvm::cl::desc("Warn for unused macros in the main translation unit"));
+static llvm::cl::opt<bool>
+WarnFloatEqual("Wfloat-equal",
+ llvm::cl::desc("Warn about equality comparisons of floating point values."));
+
/// InitializeDiagnostics - Initialize the diagnostic object, based on the
/// current command line option settings.
static void InitializeDiagnostics(Diagnostic &Diags) {
// Silence the "macro is not used" warning unless requested.
if (!WarnUnusedMacros)
Diags.setDiagnosticMapping(diag::pp_macro_not_used, diag::MAP_IGNORE);
+
+ // Silence "floating point comparison" warnings unless requested.
+ if (!WarnFloatEqual)
+ Diags.setDiagnosticMapping(diag::warn_floatingpoint_eq, diag::MAP_IGNORE);
}
//===----------------------------------------------------------------------===//
-// RUN: clang -fsyntax-only -verify %s
+// RUN: clang -fsyntax-only -Wfloat-equal -verify %s
int foo(float x, float y) {
return x == y; // expected-warning {{comparing floating point with ==}}