summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-03-01 21:06:03 +0000
committerChris Lattner <sabre@nondot.org>2010-03-01 21:06:03 +0000
commitefc83e60d349da075491f03373ffed92065afb0a (patch)
tree4d71d46a3376d40f0f2d023e86e6bbc7cee18a80
parent30d0cfda354ec7f271ff3fa006db02d10a9e9610 (diff)
downloadbcm5719-llvm-efc83e60d349da075491f03373ffed92065afb0a.tar.gz
bcm5719-llvm-efc83e60d349da075491f03373ffed92065afb0a.zip
fix PR5933: don't warn about unused variables if a function has other errors in it.
llvm-svn: 97498
-rw-r--r--clang/lib/Sema/SemaDecl.cpp3
-rw-r--r--clang/test/Sema/warn-unused-variables.c6
2 files changed, 8 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index be4a591f29a..4842da2a7b5 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -553,7 +553,8 @@ void Sema::ActOnPopScope(SourceLocation Loc, Scope *S) {
if (!D->getDeclName()) continue;
// Diagnose unused variables in this scope.
- if (ShouldDiagnoseUnusedDecl(D))
+ if (ShouldDiagnoseUnusedDecl(D) &&
+ NumErrorsAtStartOfFunction == getDiagnostics().getNumErrors())
Diag(D->getLocation(), diag::warn_unused_variable) << D->getDeclName();
// Remove this name from our lexical scope.
diff --git a/clang/test/Sema/warn-unused-variables.c b/clang/test/Sema/warn-unused-variables.c
index 36615061fe6..4d1cde7067e 100644
--- a/clang/test/Sema/warn-unused-variables.c
+++ b/clang/test/Sema/warn-unused-variables.c
@@ -17,3 +17,9 @@ void f1(void) {
(void)sizeof(i);
return;
}
+
+// PR5933
+int f2() {
+ int X = 4; // Shouldn't have a bogus 'unused variable X' warning.
+ return Y + X; // expected-error {{use of undeclared identifier 'Y'}}
+}
OpenPOWER on IntegriCloud