diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Serialization/ASTWriter.cpp | 11 | ||||
-rw-r--r-- | lib/Serialization/ASTWriterDecl.cpp | 6 |
2 files changed, 9 insertions, 8 deletions
diff --git a/lib/Serialization/ASTWriter.cpp b/lib/Serialization/ASTWriter.cpp index 749c27b1aa..0c9f0a1247 100644 --- a/lib/Serialization/ASTWriter.cpp +++ b/lib/Serialization/ASTWriter.cpp @@ -3486,17 +3486,20 @@ static inline bool compLocDecl(std::pair<unsigned, serialization::DeclID> L, return L.first < R.first; } -void ASTWriter::associateDeclWithFile(const Decl *D, DeclID ID, - SourceLocation FileLoc) { +void ASTWriter::associateDeclWithFile(const Decl *D, DeclID ID) { assert(ID); - assert(FileLoc.isValid()); - assert(FileLoc.isFileID()); + assert(D); + + SourceLocation Loc = D->getLocation(); + if (Loc.isInvalid()) + return; // We only keep track of the file-level declarations of each file. if (!D->getLexicalDeclContext()->isFileContext()) return; SourceManager &SM = Context->getSourceManager(); + SourceLocation FileLoc = SM.getFileLoc(Loc); assert(SM.isLocalSourceLocation(FileLoc)); FileID FID = SM.getFileID(FileLoc); if (FID.isInvalid()) diff --git a/lib/Serialization/ASTWriterDecl.cpp b/lib/Serialization/ASTWriterDecl.cpp index 1b95e927f9..3e3e28dfbb 100644 --- a/lib/Serialization/ASTWriterDecl.cpp +++ b/lib/Serialization/ASTWriterDecl.cpp @@ -1662,10 +1662,8 @@ void ASTWriter::WriteDecl(ASTContext &Context, Decl *D) { } SourceManager &SM = Context.getSourceManager(); - if (Loc.isValid() && SM.isLocalSourceLocation(Loc)) { - SourceLocation FileLoc = SM.getFileLoc(Loc); - associateDeclWithFile(D, ID, FileLoc); - } + if (Loc.isValid() && SM.isLocalSourceLocation(Loc)) + associateDeclWithFile(D, ID); } // Build and emit a record for this declaration |