]> granicus.if.org Git - clang/commitdiff
Speeds up parsing of global declarations in cases where the warning
authorManuel Klimek <klimek@google.com>
Wed, 12 Dec 2012 13:26:54 +0000 (13:26 +0000)
committerManuel Klimek <klimek@google.com>
Wed, 12 Dec 2012 13:26:54 +0000 (13:26 +0000)
is switched of by about 0.8% (tested with int i<N>).

Additionally, this puts computing the diagnostic class into the hot
path more when parsing, in preparation for upcoming optimizations
in this area.

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

lib/Sema/SemaDecl.cpp

index aa0b41bc7a6c7ec1ff76603a8183c4218d095743..10e871a630d1dba0cacda1a6d88def9ad3b338e2 100644 (file)
@@ -7233,7 +7233,10 @@ void Sema::CheckCompleteVariableDeclaration(VarDecl *var) {
   }
 
   if (var->isThisDeclarationADefinition() &&
-      var->getLinkage() == ExternalLinkage) {
+      var->getLinkage() == ExternalLinkage &&
+      getDiagnostics().getDiagnosticLevel(
+                       diag::warn_missing_variable_declarations,
+                       var->getLocation())) {
     // Find a previous declaration that's not a definition.
     VarDecl *prev = var->getPreviousDecl();
     while (prev && prev->isThisDeclarationADefinition())