diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 1829d7de..1bcad24 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -577,8 +577,12 @@
     } 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 @@
 
   // 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));
 }
 
