From: Daniel Dunbar Date: Wed, 11 Nov 2009 21:44:42 +0000 (+0000) Subject: Always initialize the header search object as part of InitializePreprocessor; X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=961c76ea8d5089293e448e5d538570653e28080c;p=clang Always initialize the header search object as part of InitializePreprocessor; not doing this has little to no utility. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86883 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Frontend/Utils.h b/include/clang/Frontend/Utils.h index cc0d1b5671..60c0f226ef 100644 --- a/include/clang/Frontend/Utils.h +++ b/include/clang/Frontend/Utils.h @@ -48,9 +48,9 @@ void ApplyHeaderSearchOptions(HeaderSearch &HS, /// InitializePreprocessor - Initialize the preprocessor getting it and the /// environment ready to process a single file. -/// void InitializePreprocessor(Preprocessor &PP, - const PreprocessorOptions &PPOpts); + const PreprocessorOptions &PPOpts, + const HeaderSearchOptions &HSOpts); /// ProcessWarningOptions - Initialize the diagnostic client and process the /// warning options specified on the command line. diff --git a/lib/Frontend/InitPreprocessor.cpp b/lib/Frontend/InitPreprocessor.cpp index 15ea9015a2..ad70727c05 100644 --- a/lib/Frontend/InitPreprocessor.cpp +++ b/lib/Frontend/InitPreprocessor.cpp @@ -456,7 +456,8 @@ static void InitializePredefinedMacros(const TargetInfo &TI, /// environment ready to process a single file. This returns true on error. /// void clang::InitializePreprocessor(Preprocessor &PP, - const PreprocessorOptions &InitOpts) { + const PreprocessorOptions &InitOpts, + const HeaderSearchOptions &HSOpts) { std::vector PredefineBuffer; const char *LineDirective = "# 1 \"\" 3\n"; @@ -501,4 +502,9 @@ void clang::InitializePreprocessor(Preprocessor &PP, // Null terminate PredefinedBuffer and add it. PredefineBuffer.push_back(0); PP.setPredefines(&PredefineBuffer[0]); + + // Initialize the header search object. + ApplyHeaderSearchOptions(PP.getHeaderSearchInfo(), HSOpts, + PP.getLangOptions(), + PP.getTargetInfo().getTriple()); } diff --git a/tools/clang-cc/clang-cc.cpp b/tools/clang-cc/clang-cc.cpp index 0b5a6d35a6..5cce02ff4b 100644 --- a/tools/clang-cc/clang-cc.cpp +++ b/tools/clang-cc/clang-cc.cpp @@ -377,6 +377,7 @@ std::string GetBuiltinIncludePath(const char *Argv0) { static Preprocessor * CreatePreprocessor(Diagnostic &Diags, const LangOptions &LangInfo, const PreprocessorOptions &PPOpts, + const HeaderSearchOptions &HSOpts, const DependencyOutputOptions &DepOpts, TargetInfo &Target, SourceManager &SourceMgr, FileManager &FileMgr) { @@ -413,7 +414,7 @@ CreatePreprocessor(Diagnostic &Diags, const LangOptions &LangInfo, PP->setPTHManager(PTHMgr); } - InitializePreprocessor(*PP, PPOpts); + InitializePreprocessor(*PP, PPOpts, HSOpts); // Handle generating dependencies, if requested. if (!DepOpts.OutputFile.empty()) @@ -1209,14 +1210,10 @@ int main(int argc, char **argv) { llvm::OwningPtr PP(CreatePreprocessor(Diags, CompOpts.getLangOpts(), CompOpts.getPreprocessorOpts(), + CompOpts.getHeaderSearchOpts(), CompOpts.getDependencyOutputOpts(), *Target, SourceMgr, FileMgr)); - // Apply all the options to the header search object. - ApplyHeaderSearchOptions(PP->getHeaderSearchInfo(), - CompOpts.getHeaderSearchOpts(), - CompOpts.getLangOpts(), Triple); - if (CompOpts.getPreprocessorOpts().getImplicitPCHInclude().empty()) { if (InitializeSourceManager(*PP.get(), InFile)) continue;