diff options
28 files changed, 91 insertions, 176 deletions
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<Type *, Type *> 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 <x> 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<ASTReader> 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<llvm::MemoryBuffer *, std::pair<unsigned, bool> > 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<PrecompilePreambleAction> 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 |