]> granicus.if.org Git - clang/commitdiff
Rip out one of the features I added for the driver-include-management.
authorChandler Carruth <chandlerc@gmail.com>
Mon, 7 Nov 2011 09:17:31 +0000 (09:17 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Mon, 7 Nov 2011 09:17:31 +0000 (09:17 +0000)
We don't actually need a separate flag for non-sysrooted paths as the
driver has to manage the sysroot anyways. The driver is not infrequently
adding paths to the header search based on their existence on the
filesystem. For that, it has to add the sysroot anyways, we should pass
it on down to CC1 already joined. More importantly, the driver cannot in
all cases distinguish between sysrooted paths and paths that are
relative to the Clang binary's installation directory. Essentially, we
always need to ignore the system root for these internal header search
options. It turns out in most of the places we were already providing
the system root in the driver, and then another one in CC1 so this fixes
several bugs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143917 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/CC1Options.td
lib/Driver/ToolChains.cpp
lib/Frontend/CompilerInvocation.cpp
test/lit.cfg

index cc41110a0959aae2cb09f9e9dfd5af44a3655504..e8d06f994fde663c444d3ca268a9a6995a2d4389 100644 (file)
@@ -670,12 +670,6 @@ def internal_externc_isystem : JoinedOrSeparate<"-internal-externc-isystem">,
            "implicit extern \"C\" semantics; these are assumed to not be "
            "user-provided and are used to model system and standard headers' "
            "paths.">;
-def internal_nosysroot_isystem : JoinedOrSeparate<"-internal-nosysroot-isystem">,
-  MetaVarName<"<directory>">,
-  HelpText<"Add directory to the internal system include search path without "
-           "applying a sysroot to it; these are assumed to not be "
-           "user-provided and are used to model system and standard headers' "
-           "paths.">;
 def iprefix : JoinedOrSeparate<"-iprefix">, MetaVarName<"<prefix>">,
   HelpText<"Set the -iwithprefix/-iwithprefixbefore prefix">;
 def iwithprefix : JoinedOrSeparate<"-iwithprefix">, MetaVarName<"<dir>">,
index 9b84966d81bb2c8833f9352a9822d502d401b256..d787ee08e849a9e2f1880e566fc5ad094fbd8304 100644 (file)
@@ -1920,12 +1920,9 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
     addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/usr/local/include");
 
   if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
-    // Ignore the sysroot, we *always* look for clang headers relative to
-    // supplied path.
     llvm::sys::Path P(D.ResourceDir);
     P.appendComponent("include");
-    CC1Args.push_back("-internal-nosysroot-isystem");
-    CC1Args.push_back(DriverArgs.MakeArgString(P.str()));
+    addSystemInclude(DriverArgs, CC1Args, P.str());
   }
 
   if (DriverArgs.hasArg(options::OPT_nostdlibinc))
@@ -2381,12 +2378,9 @@ void Windows::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
     return;
 
   if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
-    // Ignore the sysroot, we *always* look for clang headers relative to
-    // supplied path.
     llvm::sys::Path P(getDriver().ResourceDir);
     P.appendComponent("include");
-    CC1Args.push_back("-internal-nosysroot-isystem");
-    CC1Args.push_back(DriverArgs.MakeArgString(P.str()));
+    addSystemInclude(DriverArgs, CC1Args, P.str());
   }
 
   if (DriverArgs.hasArg(options::OPT_nostdlibinc))
index 1bcad24ee4d052990e4f1c0b394945950d287483..c247e217376793b0e2aa0c4aea18143b716fe635 100644 (file)
@@ -577,9 +577,7 @@ static void HeaderSearchOptsToArgs(const HeaderSearchOptions &Opts,
     } 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 @@ 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_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));
 }
 
index 2422ad09035911ee94db731465c17f78c15cf1ad..1f4a8452b010d61f9ad0d0e4a0d78555080b1bc9 100644 (file)
@@ -157,8 +157,7 @@ def getClangBuiltinIncludeDir(clang):
       lit.fatal("Couldn't find the include dir for Clang ('%s')" % clang)
     return cmd.stdout.read().strip()
 
-config.substitutions.append( ('%clang_cc1',
-                              '%s -cc1 -internal-nosysroot-isystem %s'
+config.substitutions.append( ('%clang_cc1', '%s -cc1 -internal-isystem %s'
                               % (config.clang,
                                  getClangBuiltinIncludeDir(config.clang))) )