]> granicus.if.org Git - clang/commitdiff
Eliminate Sema::KnownFunctionIDs, so that Sema doesn't end up pulling
authorDouglas Gregor <dgregor@apple.com>
Wed, 22 Apr 2009 20:56:09 +0000 (20:56 +0000)
committerDouglas Gregor <dgregor@apple.com>
Wed, 22 Apr 2009 20:56:09 +0000 (20:56 +0000)
in a bunch of declarations from the PCH file. We're down to loading
very few declarations in Carbon-prefixed "Hello, World!":

*** PCH Statistics:
  6/20693 types read (0.028995%)
  7/59230 declarations read (0.011818%)
  50/44914 identifiers read (0.111324%)
  0/32954 statements read (0.000000%)
  5/6187 macros read (0.080815%)

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

lib/Sema/Sema.cpp
lib/Sema/Sema.h
lib/Sema/SemaDecl.cpp

index 19155b6cc3459d9145015484d4eeed50e764e85c..a5b30cc72aca7c4354d5d28f25a720eeb8cebb31 100644 (file)
@@ -161,15 +161,6 @@ Sema::Sema(Preprocessor &pp, ASTContext &ctxt, ASTConsumer &consumer,
     GlobalNewDeleteDeclared(false), 
     CompleteTranslationUnit(CompleteTranslationUnit) {
   
-  // Get IdentifierInfo objects for known functions for which we
-  // do extra checking.  
-  IdentifierTable &IT = PP.getIdentifierTable();  
-
-  KnownFunctionIDs[id_NSLog]         = &IT.get("NSLog");
-  KnownFunctionIDs[id_NSLogv]         = &IT.get("NSLogv");
-  KnownFunctionIDs[id_asprintf]      = &IT.get("asprintf");
-  KnownFunctionIDs[id_vasprintf]     = &IT.get("vasprintf");
-
   StdNamespace = 0;
   TUScope = 0;
   if (getLangOptions().CPlusPlus)
index e8c69c2f5f6419be99b832b52e694ad5ccbca3eb..5a53374033d26b201109559d85c45e653cb4f346 100644 (file)
@@ -243,21 +243,6 @@ public:
 
   IdentifierResolver IdResolver;
 
-  // Enum values used by KnownFunctionIDs (see below).
-  enum {
-    id_NSLog,
-    id_NSLogv,
-    id_asprintf,
-    id_vasprintf,
-    id_num_known_functions
-  };
-  
-  /// KnownFunctionIDs - This is a list of IdentifierInfo objects to a set
-  /// of known functions used by the semantic analysis to do various
-  /// kinds of checking (e.g. checking format string errors in printf calls).
-  /// This list is populated upon the creation of a Sema object.    
-  IdentifierInfo* KnownFunctionIDs[id_num_known_functions];
-
   /// Translation Unit Scope - useful to Objective-C actions that need
   /// to lookup file scope declarations in the "ordinary" C decl namespace.
   /// For example, user-defined classes, built-in "id" type, etc.
index abde26ae533b820f593d8115ebe239d124510681..040c5467ac589253a56f43cf4d0ae8d17df795f2 100644 (file)
@@ -3114,31 +3114,15 @@ void Sema::AddKnownFunctionAttributes(FunctionDecl *FD) {
   } else
     return;
 
-  unsigned KnownID;
-  for (KnownID = 0; KnownID != id_num_known_functions; ++KnownID)
-    if (KnownFunctionIDs[KnownID] == Name)
-      break;
-
-  switch (KnownID) {
-  case id_NSLog:
-  case id_NSLogv:
+  if (Name->isStr("NSLog") || Name->isStr("NSLogv")) {
     if (const FormatAttr *Format = FD->getAttr<FormatAttr>()) {
       // FIXME: We known better than our headers.
       const_cast<FormatAttr *>(Format)->setType("printf");
     } else 
       FD->addAttr(::new (Context) FormatAttr("printf", 1, 2));
-    break;
-
-  case id_asprintf:
-  case id_vasprintf:
+  } else if (Name->isStr("asprintf") || Name->isStr("vasprintf")) {
     if (!FD->getAttr<FormatAttr>())
       FD->addAttr(::new (Context) FormatAttr("printf", 2, 3));
-    break;
-
-  default:
-    // Unknown function or known function without any attributes to
-    // add. Do nothing.
-    break;
   }
 }