diff options
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 1829d7de0ad..1bcad24ee4d 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -577,8 +577,12 @@ static void HeaderSearchOptsToArgs(const HeaderSearchOptions &Opts, } else { if (E.IsInternal) { assert(E.Group == frontend::System && "Unexpected header search group"); - Res.push_back(E.ImplicitExternC ? "-internal-externc-isystem" - : "-internal-isystem"); + if (E.IgnoreSysRoot) + Res.push_back("-internal-nosysroot-isystem"); + else if (E.ImplicitExternC) + Res.push_back("-internal-externc-isystem"); + else + Res.push_back("-internal-isystem"); } else { if (E.Group != frontend::Angled && E.Group != frontend::System) llvm::report_fatal_error("Invalid option set!"); @@ -1492,11 +1496,14 @@ static void ParseHeaderSearchArgs(HeaderSearchOptions &Opts, ArgList &Args) { // Add the internal paths from a driver that detects standard include paths. for (arg_iterator I = Args.filtered_begin(OPT_internal_isystem, - OPT_internal_externc_isystem), + OPT_internal_externc_isystem, + OPT_internal_nosysroot_isystem), E = Args.filtered_end(); I != E; ++I) Opts.AddPath((*I)->getValue(Args), frontend::System, - false, false, false, /*IsInternal=*/true, + false, false, + (*I)->getOption().matches(OPT_internal_nosysroot_isystem), + /*IsInternal=*/true, (*I)->getOption().matches(OPT_internal_externc_isystem)); } |