[frontend] Don't put a PCH/PTH filename into the set of includes in the preprocessor options;
since only one of them is allowed in command-line, process them separately. Otherwise, if more than one is specified in the command-line, one is processed normally and the others are going to be treated and included as header files. Related to radar://13140508 llvm-svn: 174385
This commit is contained in:
@@ -784,15 +784,16 @@ void clang::InitializePreprocessor(Preprocessor &PP,
|
||||
AddImplicitIncludeMacros(Builder, InitOpts.MacroIncludes[i],
|
||||
PP.getFileManager());
|
||||
|
||||
// Process -include-pch/-include-pth directives.
|
||||
if (!InitOpts.ImplicitPCHInclude.empty())
|
||||
AddImplicitIncludePCH(Builder, PP, InitOpts.ImplicitPCHInclude);
|
||||
if (!InitOpts.ImplicitPTHInclude.empty())
|
||||
AddImplicitIncludePTH(Builder, PP, InitOpts.ImplicitPTHInclude);
|
||||
|
||||
// Process -include directives.
|
||||
for (unsigned i = 0, e = InitOpts.Includes.size(); i != e; ++i) {
|
||||
const std::string &Path = InitOpts.Includes[i];
|
||||
if (Path == InitOpts.ImplicitPTHInclude)
|
||||
AddImplicitIncludePTH(Builder, PP, Path);
|
||||
else if (Path == InitOpts.ImplicitPCHInclude)
|
||||
AddImplicitIncludePCH(Builder, PP, Path);
|
||||
else
|
||||
AddImplicitInclude(Builder, Path, PP.getFileManager());
|
||||
AddImplicitInclude(Builder, Path, PP.getFileManager());
|
||||
}
|
||||
|
||||
// Exit the command line and go back to <built-in> (2 is LC_LEAVE).
|
||||
|
||||
Reference in New Issue
Block a user