diff --git a/include/clang/AST/ASTImporter.h b/include/clang/AST/ASTImporter.h index b698522e01..e9245ee958 100644 --- a/include/clang/AST/ASTImporter.h +++ b/include/clang/AST/ASTImporter.h @@ -28,7 +28,6 @@ namespace clang { class Diagnostic; class Expr; class FileManager; - class FileSystemOptions; class IdentifierInfo; class NestedNameSpecifier; class Stmt; @@ -47,8 +46,6 @@ namespace clang { /// \brief The file managers we're importing to and from. FileManager &ToFileManager, &FromFileManager; - const FileSystemOptions &ToFileSystemOpts, &FromFileSystemOpts; - /// \brief Mapping from the already-imported types in the "from" context /// to the corresponding types in the "to" context. llvm::DenseMap ImportedTypes; @@ -75,9 +72,7 @@ namespace clang { public: ASTImporter(ASTContext &ToContext, FileManager &ToFileManager, - const FileSystemOptions &ToFileSystemOpts, - ASTContext &FromContext, FileManager &FromFileManager, - const FileSystemOptions &FromFileSystemOpts); + ASTContext &FromContext, FileManager &FromFileManager); virtual ~ASTImporter(); diff --git a/include/clang/Basic/FileManager.h b/include/clang/Basic/FileManager.h index d5d2da7c26..5a143e9441 100644 --- a/include/clang/Basic/FileManager.h +++ b/include/clang/Basic/FileManager.h @@ -14,6 +14,7 @@ #ifndef LLVM_CLANG_FILEMANAGER_H #define LLVM_CLANG_FILEMANAGER_H +#include "clang/Basic/FileSystemOptions.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringMap.h" #include "llvm/ADT/StringRef.h" @@ -33,7 +34,6 @@ class Path; namespace clang { class FileManager; -class FileSystemOptions; /// DirectoryEntry - Cached information about one directory on the disk. /// @@ -141,7 +141,7 @@ public: /// names (e.g. symlinked) will be treated as a single file. /// class FileManager { - const FileSystemOptions &FileSystemOpts; + FileSystemOptions FileSystemOpts; class UniqueDirContainer; class UniqueFileContainer; @@ -196,32 +196,26 @@ public: /// getDirectory - Lookup, cache, and verify the specified directory. This /// returns null if the directory doesn't exist. /// - const DirectoryEntry *getDirectory(llvm::StringRef Filename, - const FileSystemOptions &FileSystemOpts); + const DirectoryEntry *getDirectory(llvm::StringRef Filename); /// getFile - Lookup, cache, and verify the specified file. This returns null /// if the file doesn't exist. /// - const FileEntry *getFile(llvm::StringRef Filename, - const FileSystemOptions &FileSystemOpts); + const FileEntry *getFile(llvm::StringRef Filename); /// \brief Retrieve a file entry for a "virtual" file that acts as /// if there were a file with the given name on disk. The file /// itself is not accessed. const FileEntry *getVirtualFile(llvm::StringRef Filename, off_t Size, - time_t ModificationTime, - const FileSystemOptions &FileSystemOpts); + time_t ModificationTime); /// \brief Open the specified file as a MemoryBuffer, returning a new /// MemoryBuffer if successful, otherwise returning null. llvm::MemoryBuffer *getBufferForFile(const FileEntry *Entry, - const FileSystemOptions &FileSystemOpts, std::string *ErrorStr = 0) { - return getBufferForFile(Entry->getName(), FileSystemOpts, - ErrorStr, Entry->getSize()); + return getBufferForFile(Entry->getName(), ErrorStr, Entry->getSize()); } llvm::MemoryBuffer *getBufferForFile(llvm::StringRef Filename, - const FileSystemOptions &FileSystemOpts, std::string *ErrorStr = 0, int64_t FileSize = -1); diff --git a/include/clang/Basic/SourceManager.h b/include/clang/Basic/SourceManager.h index 9df5ffa2da..e02242882c 100644 --- a/include/clang/Basic/SourceManager.h +++ b/include/clang/Basic/SourceManager.h @@ -33,7 +33,6 @@ namespace clang { class Diagnostic; class SourceManager; class FileManager; -class FileSystemOptions; class FileEntry; class LineTableInfo; @@ -372,7 +371,6 @@ class SourceManager { Diagnostic &Diag; FileManager &FileMgr; - const FileSystemOptions &FileSystemOpts; mutable llvm::BumpPtrAllocator ContentCacheAlloc; @@ -431,8 +429,7 @@ class SourceManager { explicit SourceManager(const SourceManager&); void operator=(const SourceManager&); public: - SourceManager(Diagnostic &Diag, FileManager &FileMgr, - const FileSystemOptions &FSOpts); + SourceManager(Diagnostic &Diag, FileManager &FileMgr); ~SourceManager(); void clearIDTables(); @@ -440,7 +437,6 @@ public: Diagnostic &getDiagnostics() const { return Diag; } FileManager &getFileManager() const { return FileMgr; } - const FileSystemOptions &getFileSystemOpts() const { return FileSystemOpts; } //===--------------------------------------------------------------------===// // MainFileID creation and querying methods. diff --git a/include/clang/Frontend/CompilerInstance.h b/include/clang/Frontend/CompilerInstance.h index f5d6221efc..5f47aa601e 100644 --- a/include/clang/Frontend/CompilerInstance.h +++ b/include/clang/Frontend/CompilerInstance.h @@ -515,8 +515,7 @@ public: void createFileManager(); /// Create the source manager and replace any existing one with it. - void createSourceManager(FileManager &FileMgr, - const FileSystemOptions &FSOpts); + void createSourceManager(FileManager &FileMgr); /// Create the preprocessor, using the invocation, file, and source managers, /// and replace any existing one with it. @@ -534,7 +533,6 @@ public: const DependencyOutputOptions &, const TargetInfo &, const FrontendOptions &, - const FileSystemOptions &, SourceManager &, FileManager &); /// Create the AST context. @@ -635,7 +633,6 @@ public: static bool InitializeSourceManager(llvm::StringRef InputFile, Diagnostic &Diags, FileManager &FileMgr, - const FileSystemOptions &FSOpts, SourceManager &SourceMgr, const FrontendOptions &Opts); diff --git a/include/clang/Frontend/Utils.h b/include/clang/Frontend/Utils.h index ff075445b4..fe722db381 100644 --- a/include/clang/Frontend/Utils.h +++ b/include/clang/Frontend/Utils.h @@ -39,7 +39,6 @@ class SourceManager; class Stmt; class TargetInfo; class FrontendOptions; -class FileSystemOptions; /// Normalize \arg File for use in a user defined #include directive (in the /// predefines buffer). @@ -54,7 +53,6 @@ void ApplyHeaderSearchOptions(HeaderSearch &HS, /// InitializePreprocessor - Initialize the preprocessor getting it and the /// environment ready to process a single file. void InitializePreprocessor(Preprocessor &PP, - const FileSystemOptions &FSOpts, const PreprocessorOptions &PPOpts, const HeaderSearchOptions &HSOpts, const FrontendOptions &FEOpts); diff --git a/include/clang/Lex/HeaderMap.h b/include/clang/Lex/HeaderMap.h index 4f17ae3ec3..8a5c83ecf4 100644 --- a/include/clang/Lex/HeaderMap.h +++ b/include/clang/Lex/HeaderMap.h @@ -21,7 +21,6 @@ namespace llvm { namespace clang { class FileEntry; class FileManager; - class FileSystemOptions; struct HMapBucket; struct HMapHeader; @@ -44,13 +43,11 @@ public: /// HeaderMap::Create - This attempts to load the specified file as a header /// map. If it doesn't look like a HeaderMap, it gives up and returns null. - static const HeaderMap *Create(const FileEntry *FE, FileManager &FM, - const FileSystemOptions &FSOpts); + static const HeaderMap *Create(const FileEntry *FE, FileManager &FM); /// LookupFile - Check to see if the specified relative filename is located in /// this HeaderMap. If so, open it and return its FileEntry. - const FileEntry *LookupFile(llvm::StringRef Filename, FileManager &FM, - const FileSystemOptions &FileSystemOpts) const; + const FileEntry *LookupFile(llvm::StringRef Filename, FileManager &FM) const; /// getFileName - Return the filename of the headermap. const char *getFileName() const; diff --git a/include/clang/Lex/HeaderSearch.h b/include/clang/Lex/HeaderSearch.h index 7d467a5680..b8d5781a6d 100644 --- a/include/clang/Lex/HeaderSearch.h +++ b/include/clang/Lex/HeaderSearch.h @@ -23,7 +23,6 @@ namespace clang { class ExternalIdentifierLookup; class FileEntry; class FileManager; -class FileSystemOptions; class IdentifierInfo; /// HeaderFileInfo - The preprocessor keeps track of this information for each @@ -72,8 +71,6 @@ struct HeaderFileInfo { /// file referenced by a #include or #include_next, (sub-)framework lookup, etc. class HeaderSearch { FileManager &FileMgr; - const FileSystemOptions &FileSystemOpts; - /// #include search path information. Requests for #include "x" search the /// directory of the #including file first, then each directory in SearchDirs /// consequtively. Requests for search the current dir first, then each @@ -120,11 +117,10 @@ class HeaderSearch { explicit HeaderSearch(const HeaderSearch&); void operator=(const HeaderSearch&); public: - HeaderSearch(FileManager &FM, const FileSystemOptions &FSOpts); + HeaderSearch(FileManager &FM); ~HeaderSearch(); FileManager &getFileMgr() const { return FileMgr; } - const FileSystemOptions &getFileSystemOpts() const { return FileSystemOpts; } /// SetSearchPaths - Interface for setting the file search paths. /// diff --git a/include/clang/Lex/PTHManager.h b/include/clang/Lex/PTHManager.h index a3787e3ffe..531ec11ea1 100644 --- a/include/clang/Lex/PTHManager.h +++ b/include/clang/Lex/PTHManager.h @@ -120,7 +120,6 @@ public: /// Create - This method creates PTHManager objects. The 'file' argument /// is the name of the PTH file. This method returns NULL upon failure. static PTHManager *Create(const std::string& file, FileManager &FileMgr, - const FileSystemOptions &FSOpts, Diagnostic &Diags); void setPreprocessor(Preprocessor *pp) { PP = pp; } diff --git a/include/clang/Lex/Preprocessor.h b/include/clang/Lex/Preprocessor.h index 261daed75b..c2fcfe218e 100644 --- a/include/clang/Lex/Preprocessor.h +++ b/include/clang/Lex/Preprocessor.h @@ -35,7 +35,6 @@ namespace clang { class SourceManager; class ExternalPreprocessorSource; class FileManager; -class FileSystemOptions; class FileEntry; class HeaderSearch; class PragmaNamespace; @@ -58,7 +57,6 @@ class Preprocessor { LangOptions Features; const TargetInfo &Target; FileManager &FileMgr; - const FileSystemOptions &FileSystemOpts; SourceManager &SourceMgr; ScratchBuffer *ScratchBuf; HeaderSearch &HeaderInfo; @@ -281,7 +279,6 @@ public: const LangOptions &getLangOptions() const { return Features; } const TargetInfo &getTargetInfo() const { return Target; } FileManager &getFileManager() const { return FileMgr; } - const FileSystemOptions &getFileSystemOpts() const { return FileSystemOpts; } SourceManager &getSourceManager() const { return SourceMgr; } HeaderSearch &getHeaderSearchInfo() const { return HeaderInfo; } diff --git a/include/clang/Serialization/ASTReader.h b/include/clang/Serialization/ASTReader.h index b92ca0b6a7..528ba15ecf 100644 --- a/include/clang/Serialization/ASTReader.h +++ b/include/clang/Serialization/ASTReader.h @@ -67,7 +67,6 @@ class ASTDeclReader; class ASTStmtReader; class ASTIdentifierLookupTrait; class TypeLocReader; -class FileSystemOptions; struct HeaderFileInfo; struct PCHPredefinesBlock { @@ -194,7 +193,6 @@ private: SourceManager &SourceMgr; FileManager &FileMgr; - const FileSystemOptions &FileSystemOpts; Diagnostic &Diags; /// \brief The semantic analysis object that will be processing the @@ -808,7 +806,6 @@ public: /// of its regular consistency checking, allowing the use of precompiled /// headers that cannot be determined to be compatible. ASTReader(SourceManager &SourceMgr, FileManager &FileMgr, - const FileSystemOptions &FileSystemOpts, Diagnostic &Diags, const char *isysroot = 0, bool DisableValidation = false); ~ASTReader(); @@ -841,7 +838,6 @@ public: /// the AST file, without actually loading the AST file. static std::string getOriginalSourceFile(const std::string &ASTFileName, FileManager &FileMgr, - const FileSystemOptions &FSOpts, Diagnostic &Diags); /// \brief Returns the suggested contents of the predefines buffer, diff --git a/lib/AST/ASTImporter.cpp b/lib/AST/ASTImporter.cpp index 980e93c04d..fcd9caa304 100644 --- a/lib/AST/ASTImporter.cpp +++ b/lib/AST/ASTImporter.cpp @@ -3015,12 +3015,9 @@ Expr *ASTNodeImporter::VisitCStyleCastExpr(CStyleCastExpr *E) { } ASTImporter::ASTImporter(ASTContext &ToContext, FileManager &ToFileManager, - const FileSystemOptions &ToFileSystemOpts, - ASTContext &FromContext, FileManager &FromFileManager, - const FileSystemOptions &FromFileSystemOpts) + ASTContext &FromContext, FileManager &FromFileManager) : ToContext(ToContext), FromContext(FromContext), - ToFileManager(ToFileManager), FromFileManager(FromFileManager), - ToFileSystemOpts(ToFileSystemOpts), FromFileSystemOpts(FromFileSystemOpts) { + ToFileManager(ToFileManager), FromFileManager(FromFileManager) { ImportedDecls[FromContext.getTranslationUnitDecl()] = ToContext.getTranslationUnitDecl(); } @@ -3190,8 +3187,7 @@ FileID ASTImporter::Import(FileID FromID) { // disk again // FIXME: We definitely want to re-use the existing MemoryBuffer, rather // than mmap the files several times. - const FileEntry *Entry = ToFileManager.getFile(Cache->Entry->getName(), - ToFileSystemOpts); + const FileEntry *Entry = ToFileManager.getFile(Cache->Entry->getName()); ToID = ToSM.createFileID(Entry, ToIncludeLoc, FromSLoc.getFile().getFileCharacteristic()); } else { diff --git a/lib/Basic/FileManager.cpp b/lib/Basic/FileManager.cpp index 6b356b87d5..36b53850bc 100644 --- a/lib/Basic/FileManager.cpp +++ b/lib/Basic/FileManager.cpp @@ -199,8 +199,7 @@ void FileManager::removeStatCache(StatSysCallCache *statCache) { /// \brief Retrieve the directory that the given file name resides in. static const DirectoryEntry *getDirectoryFromFile(FileManager &FileMgr, - llvm::StringRef Filename, - const FileSystemOptions &FileSystemOpts) { + llvm::StringRef Filename) { // Figure out what directory it is in. If the string contains a / in it, // strip off everything after it. // FIXME: this logic should be in sys::Path. @@ -210,7 +209,7 @@ static const DirectoryEntry *getDirectoryFromFile(FileManager &FileMgr, // Use the current directory if file has no path component. if (SlashPos == 0) - return FileMgr.getDirectory(".", FileSystemOpts); + return FileMgr.getDirectory("."); if (SlashPos == Filename.size()-1) return 0; // If filename ends with a /, it's a directory. @@ -219,14 +218,13 @@ static const DirectoryEntry *getDirectoryFromFile(FileManager &FileMgr, while (SlashPos != 0 && IS_DIR_SEPARATOR_CHAR(Filename[SlashPos-1])) --SlashPos; - return FileMgr.getDirectory(Filename.substr(0, SlashPos), FileSystemOpts); + return FileMgr.getDirectory(Filename.substr(0, SlashPos)); } /// getDirectory - Lookup, cache, and verify the specified directory. This /// returns null if the directory doesn't exist. /// -const DirectoryEntry *FileManager::getDirectory(llvm::StringRef Filename, - const FileSystemOptions &FileSystemOpts) { +const DirectoryEntry *FileManager::getDirectory(llvm::StringRef Filename) { // stat doesn't like trailing separators (at least on Windows). if (Filename.size() > 1 && IS_DIR_SEPARATOR_CHAR(Filename.back())) Filename = Filename.substr(0, Filename.size()-1); @@ -276,8 +274,7 @@ const DirectoryEntry *FileManager::getDirectory(llvm::StringRef Filename, /// getFile - Lookup, cache, and verify the specified file. This returns null /// if the file doesn't exist. /// -const FileEntry *FileManager::getFile(llvm::StringRef Filename, - const FileSystemOptions &FileSystemOpts) { +const FileEntry *FileManager::getFile(llvm::StringRef Filename) { ++NumFileLookups; // See if there is already an entry in the map. @@ -299,8 +296,7 @@ const FileEntry *FileManager::getFile(llvm::StringRef Filename, // FileEntries map. const char *InterndFileName = NamedFileEnt.getKeyData(); - const DirectoryEntry *DirInfo - = getDirectoryFromFile(*this, Filename, FileSystemOpts); + const DirectoryEntry *DirInfo = getDirectoryFromFile(*this, Filename); if (DirInfo == 0) // Directory doesn't exist, file can't exist. return 0; @@ -339,8 +335,7 @@ const FileEntry *FileManager::getFile(llvm::StringRef Filename, const FileEntry * FileManager::getVirtualFile(llvm::StringRef Filename, off_t Size, - time_t ModificationTime, - const FileSystemOptions &FileSystemOpts) { + time_t ModificationTime) { ++NumFileLookups; // See if there is already an entry in the map. @@ -357,8 +352,7 @@ FileManager::getVirtualFile(llvm::StringRef Filename, off_t Size, // By default, initialize it to invalid. NamedFileEnt.setValue(NON_EXISTENT_FILE); - const DirectoryEntry *DirInfo - = getDirectoryFromFile(*this, Filename, FileSystemOpts); + const DirectoryEntry *DirInfo = getDirectoryFromFile(*this, Filename); if (DirInfo == 0) // Directory doesn't exist, file can't exist. return 0; @@ -399,7 +393,6 @@ void FileManager::FixupRelativePath(llvm::sys::Path &path, llvm::MemoryBuffer *FileManager:: getBufferForFile(llvm::StringRef Filename, - const FileSystemOptions &FileSystemOpts, std::string *ErrorStr, int64_t FileSize) { if (FileSystemOpts.WorkingDir.empty()) return llvm::MemoryBuffer::getFile(Filename, ErrorStr, FileSize); diff --git a/lib/Basic/SourceManager.cpp b/lib/Basic/SourceManager.cpp index 2e47cdc275..eaa911830f 100644 --- a/lib/Basic/SourceManager.cpp +++ b/lib/Basic/SourceManager.cpp @@ -73,9 +73,7 @@ const llvm::MemoryBuffer *ContentCache::getBuffer(Diagnostic &Diag, // Lazily create the Buffer for ContentCaches that wrap files. if (!Buffer.getPointer() && Entry) { std::string ErrorStr; - Buffer.setPointer(SM.getFileManager().getBufferForFile(Entry, - SM.getFileSystemOpts(), - &ErrorStr)); + Buffer.setPointer(SM.getFileManager().getBufferForFile(Entry, &ErrorStr)); // If we were unable to open the file, then we are in an inconsistent // situation where the content cache referenced a file which no longer @@ -332,9 +330,8 @@ LineTableInfo &SourceManager::getLineTable() { // Private 'Create' methods. //===----------------------------------------------------------------------===// -SourceManager::SourceManager(Diagnostic &Diag, FileManager &FileMgr, - const FileSystemOptions &FSOpts) - : Diag(Diag), FileMgr(FileMgr), FileSystemOpts(FSOpts), +SourceManager::SourceManager(Diagnostic &Diag, FileManager &FileMgr) + : Diag(Diag), FileMgr(FileMgr), ExternalSLocEntries(0), LineTable(0), NumLinearScans(0), NumBinaryProbes(0) { clearIDTables(); diff --git a/lib/Frontend/ASTMerge.cpp b/lib/Frontend/ASTMerge.cpp index d4ed8d3e03..ec074415c1 100644 --- a/lib/Frontend/ASTMerge.cpp +++ b/lib/Frontend/ASTMerge.cpp @@ -51,10 +51,8 @@ void ASTMergeAction::ExecuteAction() { ASTImporter Importer(CI.getASTContext(), CI.getFileManager(), - CI.getFileSystemOpts(), Unit->getASTContext(), - Unit->getFileManager(), - Unit->getFileSystemOpts()); + Unit->getFileManager()); TranslationUnitDecl *TU = Unit->getASTContext().getTranslationUnitDecl(); for (DeclContext::decl_iterator D = TU->decls_begin(), diff --git a/lib/Frontend/ASTUnit.cpp b/lib/Frontend/ASTUnit.cpp index cbcb08b6fe..34d2fec3cb 100644 --- a/lib/Frontend/ASTUnit.cpp +++ b/lib/Frontend/ASTUnit.cpp @@ -458,8 +458,8 @@ const std::string &ASTUnit::getASTFileName() { llvm::MemoryBuffer *ASTUnit::getBufferForFile(llvm::StringRef Filename, std::string *ErrorStr, int64_t FileSize) { - return FileMgr->getBufferForFile(Filename, FileSystemOpts, - ErrorStr, FileSize); + assert(FileMgr); + return FileMgr->getBufferForFile(Filename, ErrorStr, FileSize); } /// \brief Configure the diagnostics object for use with ASTUnit. @@ -491,21 +491,17 @@ ASTUnit *ASTUnit::LoadFromASTFile(const std::string &Filename, AST->OnlyLocalDecls = OnlyLocalDecls; AST->CaptureDiagnostics = CaptureDiagnostics; AST->Diagnostics = Diags; - AST->FileSystemOpts = FileSystemOpts; AST->FileMgr.reset(new FileManager(FileSystemOpts)); AST->SourceMgr.reset(new SourceManager(AST->getDiagnostics(), - AST->getFileManager(), - AST->getFileSystemOpts())); - AST->HeaderInfo.reset(new HeaderSearch(AST->getFileManager(), - AST->getFileSystemOpts())); + AST->getFileManager())); + AST->HeaderInfo.reset(new HeaderSearch(AST->getFileManager())); for (unsigned I = 0; I != NumRemappedFiles; ++I) { // Create the file entry for the file that we're mapping from. const FileEntry *FromFile = AST->getFileManager().getVirtualFile(RemappedFiles[I].first, RemappedFiles[I].second->getBufferSize(), - 0, - AST->getFileSystemOpts()); + 0); if (!FromFile) { AST->getDiagnostics().Report(diag::err_fe_remap_missing_from_file) << RemappedFiles[I].first; @@ -530,7 +526,7 @@ ASTUnit *ASTUnit::LoadFromASTFile(const std::string &Filename, llvm::OwningPtr Reader; Reader.reset(new ASTReader(AST->getSourceManager(), AST->getFileManager(), - AST->getFileSystemOpts(), AST->getDiagnostics())); + AST->getDiagnostics())); Reader->setListener(new ASTInfoCollector(LangInfo, HeaderInfo, TargetTriple, Predefines, Counter)); @@ -753,9 +749,9 @@ bool ASTUnit::Parse(llvm::MemoryBuffer *OverrideMainBuffer) { // Configure the various subsystems. // FIXME: Should we retain the previous file manager? - FileMgr.reset(new FileManager(Clang.getFileSystemOpts())); FileSystemOpts = Clang.getFileSystemOpts(); - SourceMgr.reset(new SourceManager(getDiagnostics(), *FileMgr, FileSystemOpts)); + FileMgr.reset(new FileManager(Clang.getFileSystemOpts())); + SourceMgr.reset(new SourceManager(getDiagnostics(), *FileMgr)); TheSema.reset(); Ctx.reset(); PP.reset(); @@ -899,8 +895,7 @@ std::pair > ASTUnit::ComputePreamble(CompilerInvocation &Invocation, unsigned MaxLines, bool &CreatedBuffer) { FrontendOptions &FrontendOpts = Invocation.getFrontendOpts(); - PreprocessorOptions &PreprocessorOpts - = Invocation.getPreprocessorOpts(); + PreprocessorOptions &PreprocessorOpts = Invocation.getPreprocessorOpts(); CreatedBuffer = false; // Try to determine if the main file has been remapped, either from the @@ -1249,8 +1244,7 @@ llvm::MemoryBuffer *ASTUnit::getMainBufferWithPrecompiledPreamble( // Create the source manager. Clang.setSourceManager(new SourceManager(getDiagnostics(), - Clang.getFileManager(), - Clang.getFileSystemOpts())); + Clang.getFileManager())); llvm::OwningPtr Act; Act.reset(new PrecompilePreambleAction(*this)); @@ -1477,6 +1471,8 @@ ASTUnit *ASTUnit::LoadFromCommandLine(const char **ArgBegin, AST.reset(new ASTUnit(false)); ConfigureDiags(Diags, *AST, CaptureDiagnostics); AST->Diagnostics = Diags; + + AST->FileMgr.reset(new FileManager(FileSystemOptions())); AST->OnlyLocalDecls = OnlyLocalDecls; AST->CaptureDiagnostics = CaptureDiagnostics; AST->CompleteTranslationUnit = CompleteTranslationUnit; @@ -1486,7 +1482,7 @@ ASTUnit *ASTUnit::LoadFromCommandLine(const char **ArgBegin, AST->NumStoredDiagnosticsInPreamble = StoredDiagnostics.size(); AST->StoredDiagnostics.swap(StoredDiagnostics); AST->Invocation.reset(CI.take()); - return AST->LoadFromCompilerInvocation(PrecompilePreamble)? 0 : AST.take(); + return AST->LoadFromCompilerInvocation(PrecompilePreamble) ? 0 : AST.take(); } bool ASTUnit::Reparse(RemappedFile *RemappedFiles, unsigned NumRemappedFiles) { diff --git a/lib/Frontend/CompilerInstance.cpp b/lib/Frontend/CompilerInstance.cpp index 06917706be..125f271a62 100644 --- a/lib/Frontend/CompilerInstance.cpp +++ b/lib/Frontend/CompilerInstance.cpp @@ -153,9 +153,8 @@ void CompilerInstance::createFileManager() { // Source Manager -void CompilerInstance::createSourceManager(FileManager &FileMgr, - const FileSystemOptions &FSOpts) { - SourceMgr.reset(new SourceManager(getDiagnostics(), FileMgr, FSOpts)); +void CompilerInstance::createSourceManager(FileManager &FileMgr) { + SourceMgr.reset(new SourceManager(getDiagnostics(), FileMgr)); } // Preprocessor @@ -164,8 +163,8 @@ void CompilerInstance::createPreprocessor() { PP.reset(createPreprocessor(getDiagnostics(), getLangOpts(), getPreprocessorOpts(), getHeaderSearchOpts(), getDependencyOutputOpts(), getTarget(), - getFrontendOpts(), getFileSystemOpts(), - getSourceManager(), getFileManager())); + getFrontendOpts(), getSourceManager(), + getFileManager())); } Preprocessor * @@ -176,16 +175,15 @@ CompilerInstance::createPreprocessor(Diagnostic &Diags, const DependencyOutputOptions &DepOpts, const TargetInfo &Target, const FrontendOptions &FEOpts, - const FileSystemOptions &FSOpts, SourceManager &SourceMgr, FileManager &FileMgr) { // Create a PTH manager if we are using some form of a token cache. PTHManager *PTHMgr = 0; if (!PPOpts.TokenCache.empty()) - PTHMgr = PTHManager::Create(PPOpts.TokenCache, FileMgr, FSOpts, Diags); + PTHMgr = PTHManager::Create(PPOpts.TokenCache, FileMgr, Diags); // Create the Preprocessor. - HeaderSearch *HeaderInfo = new HeaderSearch(FileMgr, FSOpts); + HeaderSearch *HeaderInfo = new HeaderSearch(FileMgr); Preprocessor *PP = new Preprocessor(Diags, LangInfo, Target, SourceMgr, *HeaderInfo, PTHMgr, /*OwnsHeaderSearch=*/true); @@ -201,7 +199,7 @@ CompilerInstance::createPreprocessor(Diagnostic &Diags, if (PPOpts.DetailedRecord) PP->createPreprocessingRecord(); - InitializePreprocessor(*PP, FSOpts, PPOpts, HSOpts, FEOpts); + InitializePreprocessor(*PP, PPOpts, HSOpts, FEOpts); // Handle generating dependencies, if requested. if (!DepOpts.OutputFile.empty()) @@ -278,8 +276,7 @@ static bool EnableCodeCompletion(Preprocessor &PP, unsigned Column) { // Tell the source manager to chop off the given file at a specific // line and column. - const FileEntry *Entry = PP.getFileManager().getFile(Filename, - PP.getFileSystemOpts()); + const FileEntry *Entry = PP.getFileManager().getFile(Filename); if (!Entry) { PP.getDiagnostics().Report(diag::err_fe_invalid_code_complete_file) << Filename; @@ -469,19 +466,17 @@ CompilerInstance::createOutputFile(llvm::StringRef OutputPath, bool CompilerInstance::InitializeSourceManager(llvm::StringRef InputFile) { return InitializeSourceManager(InputFile, getDiagnostics(), getFileManager(), - getFileSystemOpts(), getSourceManager(), getFrontendOpts()); } bool CompilerInstance::InitializeSourceManager(llvm::StringRef InputFile, Diagnostic &Diags, FileManager &FileMgr, - const FileSystemOptions &FSOpts, SourceManager &SourceMgr, const FrontendOptions &Opts) { // Figure out where to get and map in the main file. if (InputFile != "-") { - const FileEntry *File = FileMgr.getFile(InputFile, FSOpts); + const FileEntry *File = FileMgr.getFile(InputFile); if (!File) { Diags.Report(diag::err_fe_error_reading) << InputFile; return false; @@ -494,8 +489,7 @@ bool CompilerInstance::InitializeSourceManager(llvm::StringRef InputFile, return false; } const FileEntry *File = FileMgr.getVirtualFile(SB->getBufferIdentifier(), - SB->getBufferSize(), 0, - FSOpts); + SB->getBufferSize(), 0); SourceMgr.createMainFileID(File); SourceMgr.overrideFileContents(File, SB); } diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index b0c30361dd..a0280e52c7 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -1419,7 +1419,6 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK, static void ParsePreprocessorArgs(PreprocessorOptions &Opts, ArgList &Args, FileManager &FileMgr, - const FileSystemOptions &FSOpts, Diagnostic &Diags) { using namespace cc1options; Opts.ImplicitPCHInclude = Args.getLastArgValue(OPT_include_pch); @@ -1474,8 +1473,7 @@ static void ParsePreprocessorArgs(PreprocessorOptions &Opts, ArgList &Args, // PCH is handled specially, we need to extra the original include path. if (A->getOption().matches(OPT_include_pch)) { std::string OriginalFile = - ASTReader::getOriginalSourceFile(A->getValue(Args), FileMgr, FSOpts, - Diags); + ASTReader::getOriginalSourceFile(A->getValue(Args), FileMgr, Diags); if (OriginalFile.empty()) continue; @@ -1531,8 +1529,8 @@ static void ParseTargetArgs(TargetOptions &Opts, ArgList &Args) { // void CompilerInvocation::CreateFromArgs(CompilerInvocation &Res, - const char* const *ArgBegin, - const char* const *ArgEnd, + const char *const *ArgBegin, + const char *const *ArgEnd, Diagnostic &Diags) { // Parse the arguments. llvm::OwningPtr Opts(createCC1OptTable()); @@ -1561,11 +1559,10 @@ void CompilerInvocation::CreateFromArgs(CompilerInvocation &Res, ParseLangArgs(Res.getLangOpts(), *Args, DashX, Diags); // FIXME: ParsePreprocessorArgs uses the FileManager to read the contents of // PCH file and find the original header name. Remove the need to do that in - // ParsePreprocessorArgs and remove the FileManager & FileSystemOptions + // ParsePreprocessorArgs and remove the FileManager // parameters from the function and the "FileManager.h" #include. FileManager FileMgr(Res.getFileSystemOpts()); - ParsePreprocessorArgs(Res.getPreprocessorOpts(), *Args, - FileMgr, Res.getFileSystemOpts(), Diags); + ParsePreprocessorArgs(Res.getPreprocessorOpts(), *Args, FileMgr, Diags); ParsePreprocessorOutputArgs(Res.getPreprocessorOutputOpts(), *Args); ParseTargetArgs(Res.getTargetOpts(), *Args); } diff --git a/lib/Frontend/FrontendAction.cpp b/lib/Frontend/FrontendAction.cpp index 2e9d05f3cf..f70bc72269 100644 --- a/lib/Frontend/FrontendAction.cpp +++ b/lib/Frontend/FrontendAction.cpp @@ -133,7 +133,7 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI, if (!CI.hasFileManager()) CI.createFileManager(); if (!CI.hasSourceManager()) - CI.createSourceManager(CI.getFileManager(), CI.getFileSystemOpts()); + CI.createSourceManager(CI.getFileManager()); // IR files bypass the rest of initialization. if (InputKind == IK_LLVM_IR) { diff --git a/lib/Frontend/FrontendActions.cpp b/lib/Frontend/FrontendActions.cpp index 9ef1ca64d7..d18baaa7e1 100644 --- a/lib/Frontend/FrontendActions.cpp +++ b/lib/Frontend/FrontendActions.cpp @@ -209,8 +209,7 @@ void PrintPreambleAction::ExecuteAction() { CompilerInstance &CI = getCompilerInstance(); llvm::MemoryBuffer *Buffer - = CI.getFileManager().getBufferForFile(getCurrentFile(), - CI.getFileSystemOpts()); + = CI.getFileManager().getBufferForFile(getCurrentFile()); if (Buffer) { unsigned Preamble = Lexer::ComputePreamble(Buffer).first; llvm::outs().write(Buffer->getBufferStart(), Preamble); diff --git a/lib/Frontend/InitHeaderSearch.cpp b/lib/Frontend/InitHeaderSearch.cpp index 1244d8bd0c..8d3dee4c50 100644 --- a/lib/Frontend/InitHeaderSearch.cpp +++ b/lib/Frontend/InitHeaderSearch.cpp @@ -102,7 +102,6 @@ void InitHeaderSearch::AddPath(const llvm::Twine &Path, bool IgnoreSysRoot) { assert(!Path.isTriviallyEmpty() && "can't handle empty path here"); FileManager &FM = Headers.getFileMgr(); - const FileSystemOptions &FSOpts = Headers.getFileSystemOpts(); // Compute the actual path, taking into consideration -isysroot. llvm::SmallString<256> MappedPathStorage; @@ -129,7 +128,7 @@ void InitHeaderSearch::AddPath(const llvm::Twine &Path, // If the directory exists, add it. - if (const DirectoryEntry *DE = FM.getDirectory(MappedPathStr, FSOpts)) { + if (const DirectoryEntry *DE = FM.getDirectory(MappedPathStr)) { IncludeGroup[Group].push_back(DirectoryLookup(DE, Type, isUserSupplied, isFramework)); return; @@ -138,7 +137,7 @@ void InitHeaderSearch::AddPath(const llvm::Twine &Path, // Check to see if this is an apple-style headermap (which are not allowed to // be frameworks). if (!isFramework) { - if (const FileEntry *FE = FM.getFile(MappedPathStr, FSOpts)) { + if (const FileEntry *FE = FM.getFile(MappedPathStr)) { if (const HeaderMap *HM = Headers.CreateHeaderMap(FE)) { // It is a headermap, add it to the search path. IncludeGroup[Group].push_back(DirectoryLookup(HM, Type,isUserSupplied)); diff --git a/lib/Frontend/InitPreprocessor.cpp b/lib/Frontend/InitPreprocessor.cpp index 7275733bbb..08ced99c08 100644 --- a/lib/Frontend/InitPreprocessor.cpp +++ b/lib/Frontend/InitPreprocessor.cpp @@ -478,7 +478,6 @@ static void InitializePredefinedMacros(const TargetInfo &TI, static void InitializeFileRemapping(Diagnostic &Diags, SourceManager &SourceMgr, FileManager &FileMgr, - const FileSystemOptions &FSOpts, const PreprocessorOptions &InitOpts) { // Remap files in the source manager (with buffers). for (PreprocessorOptions::const_remapped_file_buffer_iterator @@ -489,7 +488,7 @@ static void InitializeFileRemapping(Diagnostic &Diags, // Create the file entry for the file that we're mapping from. const FileEntry *FromFile = FileMgr.getVirtualFile(Remap->first, Remap->second->getBufferSize(), - 0, FSOpts); + 0); if (!FromFile) { Diags.Report(diag::err_fe_remap_missing_from_file) << Remap->first; @@ -511,7 +510,7 @@ static void InitializeFileRemapping(Diagnostic &Diags, Remap != RemapEnd; ++Remap) { // Find the file that we're mapping to. - const FileEntry *ToFile = FileMgr.getFile(Remap->second, FSOpts); + const FileEntry *ToFile = FileMgr.getFile(Remap->second); if (!ToFile) { Diags.Report(diag::err_fe_remap_missing_to_file) << Remap->first << Remap->second; @@ -520,8 +519,7 @@ static void InitializeFileRemapping(Diagnostic &Diags, // Create the file entry for the file that we're mapping from. const FileEntry *FromFile = FileMgr.getVirtualFile(Remap->first, - ToFile->getSize(), - 0, FSOpts); + ToFile->getSize(), 0); if (!FromFile) { Diags.Report(diag::err_fe_remap_missing_from_file) << Remap->first; @@ -531,7 +529,7 @@ static void InitializeFileRemapping(Diagnostic &Diags, // Load the contents of the file we're mapping to. std::string ErrorStr; const llvm::MemoryBuffer *Buffer - = FileMgr.getBufferForFile(ToFile->getName(), FSOpts, &ErrorStr); + = FileMgr.getBufferForFile(ToFile->getName(), &ErrorStr); if (!Buffer) { Diags.Report(diag::err_fe_error_opening) << Remap->second << ErrorStr; @@ -548,7 +546,6 @@ static void InitializeFileRemapping(Diagnostic &Diags, /// environment ready to process a single file. This returns true on error. /// void clang::InitializePreprocessor(Preprocessor &PP, - const FileSystemOptions &FSOpts, const PreprocessorOptions &InitOpts, const HeaderSearchOptions &HSOpts, const FrontendOptions &FEOpts) { @@ -558,7 +555,7 @@ void clang::InitializePreprocessor(Preprocessor &PP, MacroBuilder Builder(Predefines); InitializeFileRemapping(PP.getDiagnostics(), PP.getSourceManager(), - PP.getFileManager(), FSOpts, InitOpts); + PP.getFileManager(), InitOpts); // Emit line markers for various builtin sections of the file. We don't do // this in asm preprocessor mode, because "# 4" is not a line marker directive diff --git a/lib/Lex/HeaderMap.cpp b/lib/Lex/HeaderMap.cpp index d5d7e4b9bb..81a58d4183 100644 --- a/lib/Lex/HeaderMap.cpp +++ b/lib/Lex/HeaderMap.cpp @@ -75,14 +75,12 @@ static inline unsigned HashHMapKey(llvm::StringRef Str) { /// map. If it doesn't look like a HeaderMap, it gives up and returns null. /// If it looks like a HeaderMap but is obviously corrupted, it puts a reason /// into the string error argument and returns null. -const HeaderMap *HeaderMap::Create(const FileEntry *FE, FileManager &FM, - const FileSystemOptions &FSOpts) { +const HeaderMap *HeaderMap::Create(const FileEntry *FE, FileManager &FM) { // If the file is too small to be a header map, ignore it. unsigned FileSize = FE->getSize(); if (FileSize <= sizeof(HMapHeader)) return 0; - llvm::OwningPtr FileBuffer( - FM.getBufferForFile(FE, FSOpts)); + llvm::OwningPtr FileBuffer(FM.getBufferForFile(FE)); if (FileBuffer == 0) return 0; // Unreadable file? const char *FileStart = FileBuffer->getBufferStart(); @@ -201,8 +199,7 @@ void HeaderMap::dump() const { /// LookupFile - Check to see if the specified relative filename is located in /// this HeaderMap. If so, open it and return its FileEntry. const FileEntry *HeaderMap::LookupFile(llvm::StringRef Filename, - FileManager &FM, - const FileSystemOptions &FileSystemOpts) const { + FileManager &FM) const { const HMapHeader &Hdr = getHeader(); unsigned NumBuckets = getEndianAdjustedWord(Hdr.NumBuckets); @@ -225,6 +222,6 @@ const FileEntry *HeaderMap::LookupFile(llvm::StringRef Filename, llvm::SmallString<1024> DestPath; DestPath += getString(B.Prefix); DestPath += getString(B.Suffix); - return FM.getFile(DestPath.str(), FileSystemOpts); + return FM.getFile(DestPath.str()); } } diff --git a/lib/Lex/HeaderSearch.cpp b/lib/Lex/HeaderSearch.cpp index ee6c4c6a8c..8d89048c78 100644 --- a/lib/Lex/HeaderSearch.cpp +++ b/lib/Lex/HeaderSearch.cpp @@ -32,8 +32,8 @@ HeaderFileInfo::getControllingMacro(ExternalIdentifierLookup *External) { return ControllingMacro; } -HeaderSearch::HeaderSearch(FileManager &FM, const FileSystemOptions &FSOpts) - : FileMgr(FM), FileSystemOpts(FSOpts), FrameworkMap(64) { +HeaderSearch::HeaderSearch(FileManager &FM) + : FileMgr(FM), FrameworkMap(64) { SystemDirIdx = 0; NoCurDirSearch = false; @@ -84,7 +84,7 @@ const HeaderMap *HeaderSearch::CreateHeaderMap(const FileEntry *FE) { return HeaderMaps[i].second; } - if (const HeaderMap *HM = HeaderMap::Create(FE, FileMgr, FileSystemOpts)) { + if (const HeaderMap *HM = HeaderMap::Create(FE, FileMgr)) { HeaderMaps.push_back(std::make_pair(FE, HM)); return HM; } @@ -119,15 +119,14 @@ const FileEntry *DirectoryLookup::LookupFile(llvm::StringRef Filename, TmpDir += getDir()->getName(); TmpDir.push_back('/'); TmpDir.append(Filename.begin(), Filename.end()); - return HS.getFileMgr().getFile(TmpDir.str(), HS.getFileSystemOpts()); + return HS.getFileMgr().getFile(TmpDir.str()); } if (isFramework()) return DoFrameworkLookup(Filename, HS); assert(isHeaderMap() && "Unknown directory lookup"); - return getHeaderMap()->LookupFile(Filename, HS.getFileMgr(), - HS.getFileSystemOpts()); + return getHeaderMap()->LookupFile(Filename, HS.getFileMgr()); } @@ -136,7 +135,6 @@ const FileEntry *DirectoryLookup::LookupFile(llvm::StringRef Filename, const FileEntry *DirectoryLookup::DoFrameworkLookup(llvm::StringRef Filename, HeaderSearch &HS) const { FileManager &FileMgr = HS.getFileMgr(); - const FileSystemOptions &FileSystemOpts = HS.getFileSystemOpts(); // Framework names must have a '/' in the filename. size_t SlashPos = Filename.find('/'); @@ -186,16 +184,14 @@ const FileEntry *DirectoryLookup::DoFrameworkLookup(llvm::StringRef Filename, FrameworkName += "Headers/"; FrameworkName.append(Filename.begin()+SlashPos+1, Filename.end()); - if (const FileEntry *FE = FileMgr.getFile(FrameworkName.str(), - FileSystemOpts)) { + if (const FileEntry *FE = FileMgr.getFile(FrameworkName.str())) return FE; - } // Check "/System/Library/Frameworks/Cocoa.framework/PrivateHeaders/file.h" const char *Private = "Private"; FrameworkName.insert(FrameworkName.begin()+OrigSize, Private, Private+strlen(Private)); - return FileMgr.getFile(FrameworkName.str(), FileSystemOpts); + return FileMgr.getFile(FrameworkName.str()); } @@ -222,7 +218,7 @@ const FileEntry *HeaderSearch::LookupFile(llvm::StringRef Filename, if (FromDir) return 0; // Otherwise, just return the file. - return FileMgr.getFile(Filename, FileSystemOpts); + return FileMgr.getFile(Filename); } // Step #0, unless disabled, check to see if the file is in the #includer's @@ -237,7 +233,7 @@ const FileEntry *HeaderSearch::LookupFile(llvm::StringRef Filename, TmpDir += CurFileEnt->getDir()->getName(); TmpDir.push_back('/'); TmpDir.append(Filename.begin(), Filename.end()); - if (const FileEntry *FE = FileMgr.getFile(TmpDir.str(), FileSystemOpts)) { + if (const FileEntry *FE = FileMgr.getFile(TmpDir.str())) { // Leave CurDir unset. // This file is a system header or C++ unfriendly if the old file is. // @@ -346,8 +342,7 @@ LookupSubframeworkHeader(llvm::StringRef Filename, ++NumSubFrameworkLookups; // If the framework dir doesn't exist, we fail. - const DirectoryEntry *Dir = FileMgr.getDirectory(FrameworkName.str(), - FileSystemOpts); + const DirectoryEntry *Dir = FileMgr.getDirectory(FrameworkName.str()); if (Dir == 0) return 0; // Otherwise, if it does, remember that this is the right direntry for this @@ -361,13 +356,13 @@ LookupSubframeworkHeader(llvm::StringRef Filename, llvm::SmallString<1024> HeadersFilename(FrameworkName); HeadersFilename += "Headers/"; HeadersFilename.append(Filename.begin()+SlashPos+1, Filename.end()); - if (!(FE = FileMgr.getFile(HeadersFilename.str(), FileSystemOpts))) { + if (!(FE = FileMgr.getFile(HeadersFilename.str()))) { // Check ".../Frameworks/HIToolbox.framework/PrivateHeaders/HIToolbox.h" HeadersFilename = FrameworkName; HeadersFilename += "PrivateHeaders/"; HeadersFilename.append(Filename.begin()+SlashPos+1, Filename.end()); - if (!(FE = FileMgr.getFile(HeadersFilename.str(), FileSystemOpts))) + if (!(FE = FileMgr.getFile(HeadersFilename.str()))) return 0; } diff --git a/lib/Lex/PTHLexer.cpp b/lib/Lex/PTHLexer.cpp index 926f05598b..23ff3f4790 100644 --- a/lib/Lex/PTHLexer.cpp +++ b/lib/Lex/PTHLexer.cpp @@ -435,11 +435,9 @@ static void InvalidPTH(Diagnostic &Diags, const char *Msg) { } PTHManager *PTHManager::Create(const std::string &file, FileManager &FileMgr, - const FileSystemOptions &FSOpts, Diagnostic &Diags) { // Memory map the PTH file. - llvm::OwningPtr - File(FileMgr.getBufferForFile(file, FSOpts)); + llvm::OwningPtr File(FileMgr.getBufferForFile(file)); if (!File) { Diags.Report(diag::err_invalid_pth_file) << file; diff --git a/lib/Lex/Preprocessor.cpp b/lib/Lex/Preprocessor.cpp index 0b2e970bda..2d8f1a5aa7 100644 --- a/lib/Lex/Preprocessor.cpp +++ b/lib/Lex/Preprocessor.cpp @@ -53,7 +53,7 @@ Preprocessor::Preprocessor(Diagnostic &diags, const LangOptions &opts, IdentifierInfoLookup* IILookup, bool OwnsHeaders) : Diags(&diags), Features(opts), Target(target),FileMgr(Headers.getFileMgr()), - FileSystemOpts(Headers.getFileSystemOpts()), SourceMgr(SM), + SourceMgr(SM), HeaderInfo(Headers), ExternalSource(0), Identifiers(opts, IILookup), BuiltinInfo(Target), CodeComplete(0), CodeCompletionFile(0), SkipMainFilePreamble(0, true), CurPPLexer(0), diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index 9e3e0773bf..9673081f0a 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -1234,7 +1234,7 @@ ASTReader::ASTReadResult ASTReader::ReadSLocEntryRecord(unsigned ID) { case SM_SLOC_FILE_ENTRY: { std::string Filename(BlobStart, BlobStart + BlobLen); MaybeAddSystemRootToFilename(Filename); - const FileEntry *File = FileMgr.getFile(Filename, FileSystemOpts); + const FileEntry *File = FileMgr.getFile(Filename); if (File == 0) { std::string ErrorStr = "could not find file '"; ErrorStr += Filename; @@ -1549,8 +1549,7 @@ void ASTReader::ReadMacroRecord(PerFileData &F, uint64_t Offset) { const char *FullFileNameStart = BlobStart + Record[3]; const FileEntry *File = PP->getFileManager().getFile(llvm::StringRef(FullFileNameStart, - BlobLen - Record[3]), - FileSystemOpts); + BlobLen - Record[3])); // FIXME: Stable encoding InclusionDirective::InclusionKind Kind @@ -2273,7 +2272,7 @@ ASTReader::ASTReadResult ASTReader::ReadASTCore(llvm::StringRef FileName, if (FileName == "-") F.Buffer.reset(llvm::MemoryBuffer::getSTDIN(&ErrStr)); else - F.Buffer.reset(FileMgr.getBufferForFile(FileName, FileSystemOpts, &ErrStr)); + F.Buffer.reset(FileMgr.getBufferForFile(FileName, &ErrStr)); if (!F.Buffer) { Error(ErrStr.c_str()); return IgnorePCH; @@ -2478,12 +2477,11 @@ void ASTReader::InitializeContext(ASTContext &Ctx) { /// file. std::string ASTReader::getOriginalSourceFile(const std::string &ASTFileName, FileManager &FileMgr, - const FileSystemOptions &FSOpts, Diagnostic &Diags) { // Open the AST file. std::string ErrStr; llvm::OwningPtr Buffer; - Buffer.reset(FileMgr.getBufferForFile(ASTFileName, FSOpts, &ErrStr)); + Buffer.reset(FileMgr.getBufferForFile(ASTFileName, &ErrStr)); if (!Buffer) { Diags.Report(diag::err_fe_unable_to_read_pch_file) << ErrStr; return std::string(); @@ -4503,7 +4501,6 @@ ASTReader::ASTReader(Preprocessor &PP, ASTContext *Context, const char *isysroot, bool DisableValidation) : Listener(new PCHValidator(PP, *this)), DeserializationListener(0), SourceMgr(PP.getSourceManager()), FileMgr(PP.getFileManager()), - FileSystemOpts(PP.getFileSystemOpts()), Diags(PP.getDiagnostics()), SemaObj(0), PP(&PP), Context(Context), Consumer(0), isysroot(isysroot), DisableValidation(DisableValidation), NumStatHits(0), NumStatMisses(0), NumSLocEntriesRead(0), @@ -4517,11 +4514,9 @@ ASTReader::ASTReader(Preprocessor &PP, ASTContext *Context, } ASTReader::ASTReader(SourceManager &SourceMgr, FileManager &FileMgr, - const FileSystemOptions &FileSystemOpts, Diagnostic &Diags, const char *isysroot, bool DisableValidation) : DeserializationListener(0), SourceMgr(SourceMgr), FileMgr(FileMgr), - FileSystemOpts(FileSystemOpts), Diags(Diags), SemaObj(0), PP(0), Context(0), Consumer(0), isysroot(isysroot), DisableValidation(DisableValidation), NumStatHits(0), NumStatMisses(0), NumSLocEntriesRead(0), TotalNumSLocEntries(0), diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index 2bc362adfc..7de7d40e03 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -2584,8 +2584,7 @@ CXFile clang_getFile(CXTranslationUnit tu, const char *file_name) { ASTUnit *CXXUnit = static_cast(tu->TUData); FileManager &FMgr = CXXUnit->getFileManager(); - const FileEntry *File = FMgr.getFile(file_name, CXXUnit->getFileSystemOpts()); - return const_cast(File); + return const_cast(FMgr.getFile(file_name)); } } // end: extern "C" diff --git a/tools/libclang/CIndexCodeCompletion.cpp b/tools/libclang/CIndexCodeCompletion.cpp index 60c9e19f41..7fb1e8022b 100644 --- a/tools/libclang/CIndexCodeCompletion.cpp +++ b/tools/libclang/CIndexCodeCompletion.cpp @@ -234,12 +234,12 @@ struct AllocatedCXCodeCompleteResults : public CXCodeCompleteResults { /// \brief Language options used to adjust source locations. LangOptions LangOpts; - - /// \brief File manager, used for diagnostics. - FileManager FileMgr; FileSystemOptions FileSystemOpts; + /// \brief File manager, used for diagnostics. + FileManager FileMgr; + /// \brief Source manager, used for diagnostics. SourceManager SourceMgr; @@ -263,7 +263,7 @@ AllocatedCXCodeCompleteResults::AllocatedCXCodeCompleteResults() Diag(new Diagnostic( llvm::IntrusiveRefCntPtr(new DiagnosticIDs))), FileMgr(FileSystemOpts), - SourceMgr(*Diag, FileMgr, FileSystemOpts) { + SourceMgr(*Diag, FileMgr) { if (getenv("LIBCLANG_OBJTRACKING")) { ++CodeCompletionResultObjects; fprintf(stderr, "+++ %d completion results\n", CodeCompletionResultObjects);