]> granicus.if.org Git - clang/commitdiff
fix rdar://6505352 - Bogus warning with -WUndef, a case
authorChris Lattner <sabre@nondot.org>
Sun, 18 Jan 2009 21:18:58 +0000 (21:18 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 18 Jan 2009 21:18:58 +0000 (21:18 +0000)
Anders noticed.

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

lib/Lex/PPExpressions.cpp
test/Preprocessor/expr_liveness.c

index 168c9d08adfea2f194c135190ac5463fa87a906d..86f93e407a4f626ba1149c6e689196ddfb0a12b2 100644 (file)
@@ -91,7 +91,8 @@ static bool EvaluateValue(PPValue &Result, Token &PeekTok, DefinedTracker &DT,
     // into a simple 0, unless it is the C++ keyword "true", in which case it
     // turns into "1".
     if (II->getPPKeywordID() != tok::pp_defined) {
-      PP.Diag(PeekTok, diag::warn_pp_undef_identifier) << II;
+      if (ValueLive)
+        PP.Diag(PeekTok, diag::warn_pp_undef_identifier) << II;
       Result.Val = II->getTokenID() == tok::kw_true;
       Result.Val.setIsUnsigned(false);  // "0" is signed intmax_t 0.
       Result.setRange(PeekTok.getLocation());
index 3f4003ea3af1c954d97fe0eae6c5536af2d7e5b0..d9e5d7cb25f4bb3aa79002bdf9a3e6523412c21a 100644 (file)
@@ -1,4 +1,4 @@
-/* RUN: clang -E %s -DNO_ERRORS &&
+/* RUN: clang -E %s -DNO_ERRORS -Werror -Wundef &&
    RUN: not clang -E %s
  */
 
@@ -44,3 +44,9 @@ baz
 
 
 #endif
+
+// rdar://6505352
+// -Wundef should not warn about use of undefined identifier if not live.
+#if (!defined(XXX) || XXX > 42)
+#endif
+