[cfe-commits] r70191 - in /cfe/trunk/lib/Frontend: PCHReader.cpp PCHReaderDecl.cpp

Chris Lattner sabre at nondot.org
Sun Apr 26 23:01:06 PDT 2009


Author: lattner
Date: Mon Apr 27 01:01:06 2009
New Revision: 70191

URL: http://llvm.org/viewvc/llvm-project?rev=70191&view=rev
Log:
move attribute reading to PCHReaderDecl.cpp, remove some
extraneous braces.

Modified:
    cfe/trunk/lib/Frontend/PCHReader.cpp
    cfe/trunk/lib/Frontend/PCHReaderDecl.cpp

Modified: cfe/trunk/lib/Frontend/PCHReader.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PCHReader.cpp?rev=70191&r1=70190&r2=70191&view=diff

==============================================================================
--- cfe/trunk/lib/Frontend/PCHReader.cpp (original)
+++ cfe/trunk/lib/Frontend/PCHReader.cpp Mon Apr 27 01:01:06 2009
@@ -1711,140 +1711,6 @@
   return Result;
 }
 
-/// \brief Reads attributes from the current stream position.
-Attr *PCHReader::ReadAttributes() {
-  unsigned Code = DeclsCursor.ReadCode();
-  assert(Code == llvm::bitc::UNABBREV_RECORD && 
-         "Expected unabbreviated record"); (void)Code;
-  
-  RecordData Record;
-  unsigned Idx = 0;
-  unsigned RecCode = DeclsCursor.ReadRecord(Code, Record);
-  assert(RecCode == pch::DECL_ATTR && "Expected attribute record"); 
-  (void)RecCode;
-
-#define SIMPLE_ATTR(Name)                       \
- case Attr::Name:                               \
-   New = ::new (Context) Name##Attr();          \
-   break
-
-#define STRING_ATTR(Name)                                       \
- case Attr::Name:                                               \
-   New = ::new (Context) Name##Attr(ReadString(Record, Idx));   \
-   break
-
-#define UNSIGNED_ATTR(Name)                             \
- case Attr::Name:                                       \
-   New = ::new (Context) Name##Attr(Record[Idx++]);     \
-   break
-
-  Attr *Attrs = 0;
-  while (Idx < Record.size()) {
-    Attr *New = 0;
-    Attr::Kind Kind = (Attr::Kind)Record[Idx++];
-    bool IsInherited = Record[Idx++];
-
-    switch (Kind) {
-    STRING_ATTR(Alias);
-    UNSIGNED_ATTR(Aligned);
-    SIMPLE_ATTR(AlwaysInline);
-    SIMPLE_ATTR(AnalyzerNoReturn);
-    STRING_ATTR(Annotate);
-    STRING_ATTR(AsmLabel);
-    
-    case Attr::Blocks:
-      New = ::new (Context) BlocksAttr(
-                                  (BlocksAttr::BlocksAttrTypes)Record[Idx++]);
-      break;
-      
-    case Attr::Cleanup:
-      New = ::new (Context) CleanupAttr(
-                                  cast<FunctionDecl>(GetDecl(Record[Idx++])));
-      break;
-
-    SIMPLE_ATTR(Const);
-    UNSIGNED_ATTR(Constructor);
-    SIMPLE_ATTR(DLLExport);
-    SIMPLE_ATTR(DLLImport);
-    SIMPLE_ATTR(Deprecated);
-    UNSIGNED_ATTR(Destructor);
-    SIMPLE_ATTR(FastCall);
-    
-    case Attr::Format: {
-      std::string Type = ReadString(Record, Idx);
-      unsigned FormatIdx = Record[Idx++];
-      unsigned FirstArg = Record[Idx++];
-      New = ::new (Context) FormatAttr(Type, FormatIdx, FirstArg);
-      break;
-    }
-
-    SIMPLE_ATTR(GNUInline);
-    
-    case Attr::IBOutletKind:
-      New = ::new (Context) IBOutletAttr();
-      break;
-
-    SIMPLE_ATTR(NoReturn);
-    SIMPLE_ATTR(NoThrow);
-    SIMPLE_ATTR(Nodebug);
-    SIMPLE_ATTR(Noinline);
-    
-    case Attr::NonNull: {
-      unsigned Size = Record[Idx++];
-      llvm::SmallVector<unsigned, 16> ArgNums;
-      ArgNums.insert(ArgNums.end(), &Record[Idx], &Record[Idx] + Size);
-      Idx += Size;
-      New = ::new (Context) NonNullAttr(&ArgNums[0], Size);
-      break;
-    }
-
-    SIMPLE_ATTR(ObjCException);
-    SIMPLE_ATTR(ObjCNSObject);
-    SIMPLE_ATTR(ObjCOwnershipRetain);
-    SIMPLE_ATTR(ObjCOwnershipReturns);
-    SIMPLE_ATTR(Overloadable);
-    UNSIGNED_ATTR(Packed);
-    SIMPLE_ATTR(Pure);
-    UNSIGNED_ATTR(Regparm);
-    STRING_ATTR(Section);
-    SIMPLE_ATTR(StdCall);
-    SIMPLE_ATTR(TransparentUnion);
-    SIMPLE_ATTR(Unavailable);
-    SIMPLE_ATTR(Unused);
-    SIMPLE_ATTR(Used);
-    
-    case Attr::Visibility:
-      New = ::new (Context) VisibilityAttr(
-                              (VisibilityAttr::VisibilityTypes)Record[Idx++]);
-      break;
-
-    SIMPLE_ATTR(WarnUnusedResult);
-    SIMPLE_ATTR(Weak);
-    SIMPLE_ATTR(WeakImport);
-    }
-
-    assert(New && "Unable to decode attribute?");
-    New->setInherited(IsInherited);
-    New->setNext(Attrs);
-    Attrs = New;
-  }
-#undef UNSIGNED_ATTR
-#undef STRING_ATTR
-#undef SIMPLE_ATTR
-
-  // The list of attributes was built backwards. Reverse the list
-  // before returning it.
-  Attr *PrevAttr = 0, *NextAttr = 0;
-  while (Attrs) {
-    NextAttr = Attrs->getNext();
-    Attrs->setNext(PrevAttr);
-    PrevAttr = Attrs;
-    Attrs = NextAttr;
-  }
-
-  return PrevAttr;
-}
-
 DiagnosticBuilder PCHReader::Diag(unsigned DiagID) {
   return Diag(SourceLocation(), DiagID);
 }

Modified: cfe/trunk/lib/Frontend/PCHReaderDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PCHReaderDecl.cpp?rev=70191&r1=70190&r2=70191&view=diff

==============================================================================
--- cfe/trunk/lib/Frontend/PCHReaderDecl.cpp (original)
+++ cfe/trunk/lib/Frontend/PCHReaderDecl.cpp Mon Apr 27 01:01:06 2009
@@ -401,9 +401,146 @@
 }
 
 //===----------------------------------------------------------------------===//
-// PCHReader Implementation
+// Attribute Reading
 //===----------------------------------------------------------------------===//
 
+/// \brief Reads attributes from the current stream position.
+Attr *PCHReader::ReadAttributes() {
+  unsigned Code = DeclsCursor.ReadCode();
+  assert(Code == llvm::bitc::UNABBREV_RECORD && 
+         "Expected unabbreviated record"); (void)Code;
+  
+  RecordData Record;
+  unsigned Idx = 0;
+  unsigned RecCode = DeclsCursor.ReadRecord(Code, Record);
+  assert(RecCode == pch::DECL_ATTR && "Expected attribute record"); 
+  (void)RecCode;
+
+#define SIMPLE_ATTR(Name)                       \
+ case Attr::Name:                               \
+   New = ::new (Context) Name##Attr();          \
+   break
+
+#define STRING_ATTR(Name)                                       \
+ case Attr::Name:                                               \
+   New = ::new (Context) Name##Attr(ReadString(Record, Idx));   \
+   break
+
+#define UNSIGNED_ATTR(Name)                             \
+ case Attr::Name:                                       \
+   New = ::new (Context) Name##Attr(Record[Idx++]);     \
+   break
+
+  Attr *Attrs = 0;
+  while (Idx < Record.size()) {
+    Attr *New = 0;
+    Attr::Kind Kind = (Attr::Kind)Record[Idx++];
+    bool IsInherited = Record[Idx++];
+
+    switch (Kind) {
+    STRING_ATTR(Alias);
+    UNSIGNED_ATTR(Aligned);
+    SIMPLE_ATTR(AlwaysInline);
+    SIMPLE_ATTR(AnalyzerNoReturn);
+    STRING_ATTR(Annotate);
+    STRING_ATTR(AsmLabel);
+    
+    case Attr::Blocks:
+      New = ::new (Context) BlocksAttr(
+                                  (BlocksAttr::BlocksAttrTypes)Record[Idx++]);
+      break;
+      
+    case Attr::Cleanup:
+      New = ::new (Context) CleanupAttr(
+                                  cast<FunctionDecl>(GetDecl(Record[Idx++])));
+      break;
+
+    SIMPLE_ATTR(Const);
+    UNSIGNED_ATTR(Constructor);
+    SIMPLE_ATTR(DLLExport);
+    SIMPLE_ATTR(DLLImport);
+    SIMPLE_ATTR(Deprecated);
+    UNSIGNED_ATTR(Destructor);
+    SIMPLE_ATTR(FastCall);
+    
+    case Attr::Format: {
+      std::string Type = ReadString(Record, Idx);
+      unsigned FormatIdx = Record[Idx++];
+      unsigned FirstArg = Record[Idx++];
+      New = ::new (Context) FormatAttr(Type, FormatIdx, FirstArg);
+      break;
+    }
+
+    SIMPLE_ATTR(GNUInline);
+    
+    case Attr::IBOutletKind:
+      New = ::new (Context) IBOutletAttr();
+      break;
+
+    SIMPLE_ATTR(NoReturn);
+    SIMPLE_ATTR(NoThrow);
+    SIMPLE_ATTR(Nodebug);
+    SIMPLE_ATTR(Noinline);
+    
+    case Attr::NonNull: {
+      unsigned Size = Record[Idx++];
+      llvm::SmallVector<unsigned, 16> ArgNums;
+      ArgNums.insert(ArgNums.end(), &Record[Idx], &Record[Idx] + Size);
+      Idx += Size;
+      New = ::new (Context) NonNullAttr(&ArgNums[0], Size);
+      break;
+    }
+
+    SIMPLE_ATTR(ObjCException);
+    SIMPLE_ATTR(ObjCNSObject);
+    SIMPLE_ATTR(ObjCOwnershipRetain);
+    SIMPLE_ATTR(ObjCOwnershipReturns);
+    SIMPLE_ATTR(Overloadable);
+    UNSIGNED_ATTR(Packed);
+    SIMPLE_ATTR(Pure);
+    UNSIGNED_ATTR(Regparm);
+    STRING_ATTR(Section);
+    SIMPLE_ATTR(StdCall);
+    SIMPLE_ATTR(TransparentUnion);
+    SIMPLE_ATTR(Unavailable);
+    SIMPLE_ATTR(Unused);
+    SIMPLE_ATTR(Used);
+    
+    case Attr::Visibility:
+      New = ::new (Context) VisibilityAttr(
+                              (VisibilityAttr::VisibilityTypes)Record[Idx++]);
+      break;
+
+    SIMPLE_ATTR(WarnUnusedResult);
+    SIMPLE_ATTR(Weak);
+    SIMPLE_ATTR(WeakImport);
+    }
+
+    assert(New && "Unable to decode attribute?");
+    New->setInherited(IsInherited);
+    New->setNext(Attrs);
+    Attrs = New;
+  }
+#undef UNSIGNED_ATTR
+#undef STRING_ATTR
+#undef SIMPLE_ATTR
+
+  // The list of attributes was built backwards. Reverse the list
+  // before returning it.
+  Attr *PrevAttr = 0, *NextAttr = 0;
+  while (Attrs) {
+    NextAttr = Attrs->getNext();
+    Attrs->setNext(PrevAttr);
+    PrevAttr = Attrs;
+    Attrs = NextAttr;
+  }
+
+  return PrevAttr;
+}
+
+//===----------------------------------------------------------------------===//
+// PCHReader Implementation
+//===----------------------------------------------------------------------===//
 
 /// \brief Note that we have loaded the declaration with the given
 /// Index.
@@ -450,116 +587,76 @@
   case pch::DECL_CONTEXT_VISIBLE:
     assert(false && "Record cannot be de-serialized with ReadDeclRecord");
     break;
-
   case pch::DECL_TRANSLATION_UNIT:
     assert(Index == 0 && "Translation unit must be at index 0");
     D = Context.getTranslationUnitDecl();
     break;
-
-  case pch::DECL_TYPEDEF: {
+  case pch::DECL_TYPEDEF:
     D = TypedefDecl::Create(Context, 0, SourceLocation(), 0, QualType());
     break;
-  }
-
-  case pch::DECL_ENUM: {
+  case pch::DECL_ENUM:
     D = EnumDecl::Create(Context, 0, SourceLocation(), 0, 0);
     break;
-  }
-
-  case pch::DECL_RECORD: {
-    D = RecordDecl::Create(Context, TagDecl::TK_struct, 0, SourceLocation(), 
+  case pch::DECL_RECORD:
+    D = RecordDecl::Create(Context, TagDecl::TK_struct, 0, SourceLocation(),
                            0, 0);
     break;
-  }
-
-  case pch::DECL_ENUM_CONSTANT: {
+  case pch::DECL_ENUM_CONSTANT:
     D = EnumConstantDecl::Create(Context, 0, SourceLocation(), 0, QualType(),
                                  0, llvm::APSInt());
     break;
-  }
-  
-  case pch::DECL_FUNCTION: {
+  case pch::DECL_FUNCTION:
     D = FunctionDecl::Create(Context, 0, SourceLocation(), DeclarationName(), 
                              QualType());
     break;
-  }
-
-  case pch::DECL_OBJC_METHOD: {
+  case pch::DECL_OBJC_METHOD:
     D = ObjCMethodDecl::Create(Context, SourceLocation(), SourceLocation(), 
                                Selector(), QualType(), 0);
     break;
-  }
-
-  case pch::DECL_OBJC_INTERFACE: {
+  case pch::DECL_OBJC_INTERFACE:
     D = ObjCInterfaceDecl::Create(Context, 0, SourceLocation(), 0);
     break;
-  }
-
-  case pch::DECL_OBJC_IVAR: {
+  case pch::DECL_OBJC_IVAR:
     D = ObjCIvarDecl::Create(Context, 0, SourceLocation(), 0, QualType(),
                              ObjCIvarDecl::None);
     break;
-  }
-
-  case pch::DECL_OBJC_PROTOCOL: {
+  case pch::DECL_OBJC_PROTOCOL:
     D = ObjCProtocolDecl::Create(Context, 0, SourceLocation(), 0);
     break;
-  }
-
-  case pch::DECL_OBJC_AT_DEFS_FIELD: {
+  case pch::DECL_OBJC_AT_DEFS_FIELD:
     D = ObjCAtDefsFieldDecl::Create(Context, 0, SourceLocation(), 0, 
                                     QualType(), 0);
     break;
-  }
-
-  case pch::DECL_OBJC_CLASS: {
+  case pch::DECL_OBJC_CLASS:
     D = ObjCClassDecl::Create(Context, 0, SourceLocation());
     break;
-  }
-
-  case pch::DECL_OBJC_FORWARD_PROTOCOL: {
+  case pch::DECL_OBJC_FORWARD_PROTOCOL:
     D = ObjCForwardProtocolDecl::Create(Context, 0, SourceLocation());
     break;
-  }
-
-  case pch::DECL_OBJC_CATEGORY: {
+  case pch::DECL_OBJC_CATEGORY:
     D = ObjCCategoryDecl::Create(Context, 0, SourceLocation(), 0);
     break;
-  }
-
-  case pch::DECL_OBJC_CATEGORY_IMPL: {
+  case pch::DECL_OBJC_CATEGORY_IMPL:
     D = ObjCCategoryImplDecl::Create(Context, 0, SourceLocation(), 0, 0);
     break;
-  }
-  
-  case pch::DECL_OBJC_IMPLEMENTATION: {
+  case pch::DECL_OBJC_IMPLEMENTATION:
     D = ObjCImplementationDecl::Create(Context, 0, SourceLocation(), 0, 0);
     break;
-  }
-  
-  case pch::DECL_OBJC_COMPATIBLE_ALIAS: {
+  case pch::DECL_OBJC_COMPATIBLE_ALIAS:
     D = ObjCCompatibleAliasDecl::Create(Context, 0, SourceLocation(), 0, 0);
     break;
-  }
-  
-  case pch::DECL_OBJC_PROPERTY: {
+  case pch::DECL_OBJC_PROPERTY:
     D = ObjCPropertyDecl::Create(Context, 0, SourceLocation(), 0, QualType());
     break;
-  }
-  
-  case pch::DECL_OBJC_PROPERTY_IMPL: {
+  case pch::DECL_OBJC_PROPERTY_IMPL:
     D = ObjCPropertyImplDecl::Create(Context, 0, SourceLocation(),
                                      SourceLocation(), 0, 
                                      ObjCPropertyImplDecl::Dynamic, 0);
     break;
-  }
-
-  case pch::DECL_FIELD: {
+  case pch::DECL_FIELD:
     D = FieldDecl::Create(Context, 0, SourceLocation(), 0, QualType(), 0, 
                           false);
     break;
-  }
-
   case pch::DECL_VAR:
     D = VarDecl::Create(Context, 0, SourceLocation(), 0, QualType(),
                         VarDecl::None, SourceLocation());
@@ -569,35 +666,25 @@
     D = ImplicitParamDecl::Create(Context, 0, SourceLocation(), 0, QualType());
     break;
 
-  case pch::DECL_PARM_VAR: {
+  case pch::DECL_PARM_VAR:
     D = ParmVarDecl::Create(Context, 0, SourceLocation(), 0, QualType(), 
                             VarDecl::None, 0);
     break;
-  }
-
-  case pch::DECL_ORIGINAL_PARM_VAR: {
+  case pch::DECL_ORIGINAL_PARM_VAR:
     D = OriginalParmVarDecl::Create(Context, 0, SourceLocation(), 0,
-                                    QualType(), QualType(), VarDecl::None, 
-                                    0);
+                                    QualType(), QualType(), VarDecl::None, 0);
     break;
-  }
-
-  case pch::DECL_FILE_SCOPE_ASM: {
+  case pch::DECL_FILE_SCOPE_ASM:
     D = FileScopeAsmDecl::Create(Context, 0, SourceLocation(), 0);
     break;
-  }
-
-  case pch::DECL_BLOCK: {
+  case pch::DECL_BLOCK:
     D = BlockDecl::Create(Context, 0, SourceLocation());
     break;
   }
-  }
 
   assert(D && "Unknown declaration reading PCH file");
-  if (D) {
-    LoadedDecl(Index, D);
-    Reader.Visit(D);
-  }
+  LoadedDecl(Index, D);
+  Reader.Visit(D);
 
   // If this declaration is also a declaration context, get the
   // offsets for its tables of lexical and visible declarations.





More information about the cfe-commits mailing list