diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp
index 1bcad24..c247e21 100644
--- a/lib/Frontend/CompilerInvocation.cpp
+++ b/lib/Frontend/CompilerInvocation.cpp
@@ -577,9 +577,7 @@
     } else {
       if (E.IsInternal) {
         assert(E.Group == frontend::System && "Unexpected header search group");
-        if (E.IgnoreSysRoot)
-          Res.push_back("-internal-nosysroot-isystem");
-        else if (E.ImplicitExternC)
+        if (E.ImplicitExternC)
           Res.push_back("-internal-externc-isystem");
         else
           Res.push_back("-internal-isystem");
@@ -1496,14 +1494,11 @@
 
   // 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_nosysroot_isystem),
+                                            OPT_internal_externc_isystem),
                     E = Args.filtered_end();
        I != E; ++I)
     Opts.AddPath((*I)->getValue(Args), frontend::System,
-                 false, false,
-                 (*I)->getOption().matches(OPT_internal_nosysroot_isystem),
-                 /*IsInternal=*/true,
+                 false, false, /*IgnoreSysRoot=*/true, /*IsInternal=*/true,
                  (*I)->getOption().matches(OPT_internal_externc_isystem));
 }
 
