Introduce a new predicate Decl::isFromASTFile() to determine whether a
declaration was deserialized from an AST file. Use this instead of Decl::getPCHLevel() wherever possible. This is a simple step toward killing off Decl::getPCHLevel(). llvm-svn: 139427
This commit is contained in:
@@ -155,7 +155,7 @@ void ASTDeclWriter::VisitDecl(Decl *D) {
|
||||
Record.push_back(D->isUsed(false));
|
||||
Record.push_back(D->isReferenced());
|
||||
Record.push_back(D->getAccess());
|
||||
Record.push_back(D->getPCHLevel());
|
||||
Record.push_back(D->PCHLevel);
|
||||
Record.push_back(D->ModulePrivate);
|
||||
}
|
||||
|
||||
@@ -181,7 +181,7 @@ void ASTDeclWriter::VisitTypedefDecl(TypedefDecl *D) {
|
||||
if (!D->hasAttrs() &&
|
||||
!D->isImplicit() &&
|
||||
!D->isUsed(false) &&
|
||||
D->getPCHLevel() == 0 &&
|
||||
!D->isFromASTFile() &&
|
||||
D->RedeclLink.getNext() == D &&
|
||||
!D->isInvalidDecl() &&
|
||||
!D->isReferenced() &&
|
||||
@@ -230,7 +230,7 @@ void ASTDeclWriter::VisitEnumDecl(EnumDecl *D) {
|
||||
if (!D->hasAttrs() &&
|
||||
!D->isImplicit() &&
|
||||
!D->isUsed(false) &&
|
||||
D->getPCHLevel() == 0 &&
|
||||
!D->isFromASTFile() &&
|
||||
!D->hasExtInfo() &&
|
||||
D->RedeclLink.getNext() == D &&
|
||||
!D->isInvalidDecl() &&
|
||||
@@ -254,7 +254,7 @@ void ASTDeclWriter::VisitRecordDecl(RecordDecl *D) {
|
||||
if (!D->hasAttrs() &&
|
||||
!D->isImplicit() &&
|
||||
!D->isUsed(false) &&
|
||||
D->getPCHLevel() == 0 &&
|
||||
!D->isFromASTFile() &&
|
||||
!D->hasExtInfo() &&
|
||||
D->RedeclLink.getNext() == D &&
|
||||
!D->isInvalidDecl() &&
|
||||
@@ -476,7 +476,7 @@ void ASTDeclWriter::VisitObjCIvarDecl(ObjCIvarDecl *D) {
|
||||
!D->isUsed(false) &&
|
||||
!D->isInvalidDecl() &&
|
||||
!D->isReferenced() &&
|
||||
D->getPCHLevel() == 0 &&
|
||||
!D->isFromASTFile() &&
|
||||
!D->isModulePrivate() &&
|
||||
!D->getBitWidth() &&
|
||||
!D->hasExtInfo() &&
|
||||
@@ -615,7 +615,7 @@ void ASTDeclWriter::VisitFieldDecl(FieldDecl *D) {
|
||||
!D->isUsed(false) &&
|
||||
!D->isInvalidDecl() &&
|
||||
!D->isReferenced() &&
|
||||
D->getPCHLevel() == 0 &&
|
||||
!D->isFromASTFile() &&
|
||||
!D->isModulePrivate() &&
|
||||
!D->getBitWidth() &&
|
||||
!D->hasInClassInitializer() &&
|
||||
@@ -670,7 +670,7 @@ void ASTDeclWriter::VisitVarDecl(VarDecl *D) {
|
||||
!D->isReferenced() &&
|
||||
D->getAccess() == AS_none &&
|
||||
!D->isModulePrivate() &&
|
||||
D->getPCHLevel() == 0 &&
|
||||
!D->isFromASTFile() &&
|
||||
D->getDeclName().getNameKind() == DeclarationName::Identifier &&
|
||||
!D->hasExtInfo() &&
|
||||
D->RedeclLink.getNext() == D &&
|
||||
@@ -712,7 +712,7 @@ void ASTDeclWriter::VisitParmVarDecl(ParmVarDecl *D) {
|
||||
!D->isUsed(false) &&
|
||||
D->getAccess() == AS_none &&
|
||||
!D->isModulePrivate() &&
|
||||
D->getPCHLevel() == 0 &&
|
||||
!D->isFromASTFile() &&
|
||||
D->getStorageClass() == 0 &&
|
||||
!D->hasCXXDirectInitializer() && // Can params have this ever?
|
||||
D->getFunctionScopeDepth() == 0 &&
|
||||
@@ -799,7 +799,7 @@ void ASTDeclWriter::VisitNamespaceDecl(NamespaceDecl *D) {
|
||||
Code = serialization::DECL_NAMESPACE;
|
||||
|
||||
if (Writer.hasChain() && !D->isOriginalNamespace() &&
|
||||
D->getOriginalNamespace()->getPCHLevel() > 0) {
|
||||
D->getOriginalNamespace()->isFromASTFile()) {
|
||||
NamespaceDecl *NS = D->getOriginalNamespace();
|
||||
Writer.AddUpdatedDeclContext(NS);
|
||||
|
||||
@@ -825,7 +825,7 @@ void ASTDeclWriter::VisitNamespaceDecl(NamespaceDecl *D) {
|
||||
// anonymous namespace.
|
||||
Decl *Parent = cast<Decl>(
|
||||
D->getParent()->getRedeclContext()->getPrimaryContext());
|
||||
if (Parent->getPCHLevel() > 0 || isa<TranslationUnitDecl>(Parent)) {
|
||||
if (Parent->isFromASTFile() || isa<TranslationUnitDecl>(Parent)) {
|
||||
ASTWriter::UpdateRecord &Record = Writer.DeclUpdates[Parent];
|
||||
Record.push_back(UPD_CXX_ADDED_ANONYMOUS_NAMESPACE);
|
||||
Writer.AddDeclRef(D, Record);
|
||||
|
||||
Reference in New Issue
Block a user