From: Chris Lattner Date: Mon, 1 Mar 2010 21:06:03 +0000 (+0000) Subject: fix PR5933: don't warn about unused variables if a function has other errors in it. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e6794974b706ddd51e65dcea411a6378a0f16a2e;p=clang fix PR5933: don't warn about unused variables if a function has other errors in it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97498 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index be4a591f29..4842da2a7b 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/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/test/Sema/warn-unused-variables.c b/test/Sema/warn-unused-variables.c index 36615061fe..4d1cde7067 100644 --- a/test/Sema/warn-unused-variables.c +++ b/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'}} +}