From 857c6fcdb0807f26b732f2cdbea0a990d289838f Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Fri, 14 Mar 2014 02:26:27 +0000 Subject: [PATCH] Refactor ASTReader::readInputFileInfo to return a struct containing the related information. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@203881 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Serialization/ASTReader.h | 11 +++++++--- lib/Serialization/ASTReader.cpp | 29 +++++++++++++------------ 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/include/clang/Serialization/ASTReader.h b/include/clang/Serialization/ASTReader.h index 13909dbbd3..92b2172f51 100644 --- a/include/clang/Serialization/ASTReader.h +++ b/include/clang/Serialization/ASTReader.h @@ -1022,10 +1022,15 @@ private: /// \brief Reads a statement from the specified cursor. Stmt *ReadStmtFromStream(ModuleFile &F); + struct InputFileInfo { + std::string Filename; + off_t StoredSize; + time_t StoredTime; + bool Overridden; + }; + /// \brief Reads the stored information about an input file. - void readInputFileInfo(ModuleFile &F, unsigned ID, std::string &Filename, - off_t &StoredSize, time_t &StoredTime, - bool &Overridden); + InputFileInfo readInputFileInfo(ModuleFile &F, unsigned ID); /// \brief A convenience method to read the filename from an input file. std::string getInputFileName(ModuleFile &F, unsigned ID); diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index 62bc2246d2..595edfc4c5 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -1870,9 +1870,8 @@ void ASTReader::installImportedMacro(IdentifierInfo *II, ModuleMacroInfo *MMI, PP.appendMacroDirective(II, MD); } -void ASTReader::readInputFileInfo(ModuleFile &F, unsigned ID, - std::string &Filename, off_t &StoredSize, - time_t &StoredTime, bool &Overridden) { +ASTReader::InputFileInfo +ASTReader::readInputFileInfo(ModuleFile &F, unsigned ID) { // Go find this input file. BitstreamCursor &Cursor = F.InputFilesCursor; SavedStreamPosition SavedPosition(Cursor); @@ -1887,21 +1886,23 @@ void ASTReader::readInputFileInfo(ModuleFile &F, unsigned ID, "invalid record type for input file"); (void)Result; + std::string Filename; + off_t StoredSize; + time_t StoredTime; + bool Overridden; + assert(Record[0] == ID && "Bogus stored ID or offset"); StoredSize = static_cast(Record[1]); StoredTime = static_cast(Record[2]); Overridden = static_cast(Record[3]); Filename = Blob; MaybeAddSystemRootToFilename(F, Filename); + + return { std::move(Filename), StoredSize, StoredTime, Overridden }; } std::string ASTReader::getInputFileName(ModuleFile &F, unsigned int ID) { - off_t StoredSize; - time_t StoredTime; - bool Overridden; - std::string Filename; - readInputFileInfo(F, ID, Filename, StoredSize, StoredTime, Overridden); - return Filename; + return readInputFileInfo(F, ID).Filename; } InputFile ASTReader::getInputFile(ModuleFile &F, unsigned ID, bool Complain) { @@ -1921,11 +1922,11 @@ InputFile ASTReader::getInputFile(ModuleFile &F, unsigned ID, bool Complain) { SavedStreamPosition SavedPosition(Cursor); Cursor.JumpToBit(F.InputFileOffsets[ID-1]); - off_t StoredSize; - time_t StoredTime; - bool Overridden; - std::string Filename; - readInputFileInfo(F, ID, Filename, StoredSize, StoredTime, Overridden); + InputFileInfo FI = readInputFileInfo(F, ID); + off_t StoredSize = FI.StoredSize; + time_t StoredTime = FI.StoredTime; + bool Overridden = FI.Overridden; + StringRef Filename = FI.Filename; const FileEntry *File = Overridden? FileMgr.getVirtualFile(Filename, StoredSize, StoredTime) -- 2.50.1