summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/InitHeaderSearch.cpp
diff options
context:
space:
mode:
authormike-m <mikem.llvm@gmail.com>2010-05-16 19:03:52 +0000
committermike-m <mikem.llvm@gmail.com>2010-05-16 19:03:52 +0000
commitc6da261fb4fddc43bbea9439834582ae3d7af48b (patch)
tree4cfb9e111326af999b0c27e3c62a292500b7c68b /clang/lib/Frontend/InitHeaderSearch.cpp
parentfc1492d71b1c8b7005ef679c4092d28424c8c755 (diff)
downloadbcm5719-llvm-c6da261fb4fddc43bbea9439834582ae3d7af48b.tar.gz
bcm5719-llvm-c6da261fb4fddc43bbea9439834582ae3d7af48b.zip
Moved clang-builtin include dir position to immediately precede C includes.
This aligns with how gcc compiler does things. llvm-svn: 103912
Diffstat (limited to 'clang/lib/Frontend/InitHeaderSearch.cpp')
-rw-r--r--clang/lib/Frontend/InitHeaderSearch.cpp43
1 files changed, 22 insertions, 21 deletions
diff --git a/clang/lib/Frontend/InitHeaderSearch.cpp b/clang/lib/Frontend/InitHeaderSearch.cpp
index f10e802ed9e..4283f8ace84 100644
--- a/clang/lib/Frontend/InitHeaderSearch.cpp
+++ b/clang/lib/Frontend/InitHeaderSearch.cpp
@@ -73,7 +73,8 @@ public:
void AddDelimitedPaths(llvm::StringRef String);
// AddDefaultCIncludePaths - Add paths that should always be searched.
- void AddDefaultCIncludePaths(const llvm::Triple &triple);
+ void AddDefaultCIncludePaths(const llvm::Triple &triple,
+ const HeaderSearchOptions &HSOpts);
// AddDefaultCPlusPlusIncludePaths - Add paths that should be searched when
// compiling c++.
@@ -83,7 +84,7 @@ public:
/// that e.g. stdio.h is found.
void AddDefaultSystemIncludePaths(const LangOptions &Lang,
const llvm::Triple &triple,
- bool UseStandardCXXIncludes);
+ const HeaderSearchOptions &HSOpts);
/// Realize - Merges all search path lists into one list and send it to
/// HeaderSearch.
@@ -382,8 +383,22 @@ static bool getWindowsSDKDir(std::string &path) {
return(false);
}
-void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple) {
+void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple,
+ const HeaderSearchOptions &HSOpts) {
// FIXME: temporary hack: hard-coded paths.
+ AddPath("/usr/local/include", System, true, false, false);
+
+ // Builtin includes use #include_next directives and should be positioned
+ // just prior C include dirs.
+ if (HSOpts.UseBuiltinIncludes) {
+ // Ignore the sys root, we *always* look for clang headers relative to
+ // supplied path.
+ llvm::sys::Path P(HSOpts.ResourceDir);
+ P.appendComponent("include");
+ AddPath(P.str(), System, false, false, false, /*IgnoreSysRoot=*/ true);
+ }
+
+ // Add dirs specified via 'configure --with-c-include-dirs'.
llvm::StringRef CIncludeDirs(C_INCLUDE_DIRS);
if (CIncludeDirs != "") {
llvm::SmallVector<llvm::StringRef, 5> dirs;
@@ -480,7 +495,6 @@ void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple) {
break;
}
- AddPath("/usr/local/include", System, true, false, false);
AddPath("/usr/include", System, false, false, false);
}
@@ -666,11 +680,11 @@ AddDefaultCPlusPlusIncludePaths(const llvm::Triple &triple) {
void InitHeaderSearch::AddDefaultSystemIncludePaths(const LangOptions &Lang,
const llvm::Triple &triple,
- bool UseStandardCXXIncludes) {
- if (Lang.CPlusPlus && UseStandardCXXIncludes)
+ const HeaderSearchOptions &HSOpts) {
+ if (Lang.CPlusPlus && HSOpts.UseStandardCXXIncludes)
AddDefaultCPlusPlusIncludePaths(triple);
- AddDefaultCIncludePaths(triple);
+ AddDefaultCIncludePaths(triple, HSOpts);
// Add the default framework include paths on Darwin.
if (triple.getOS() == llvm::Triple::Darwin) {
@@ -828,21 +842,8 @@ void clang::ApplyHeaderSearchOptions(HeaderSearch &HS,
else
Init.AddDelimitedPaths(HSOpts.CEnvIncPath);
- if (HSOpts.UseBuiltinIncludes) {
- // Ignore the sys root, we *always* look for clang headers relative to
- // supplied path.
- llvm::sys::Path P(HSOpts.ResourceDir);
- P.appendComponent("include");
- Init.AddPath(P.str(), System, false, false, false, /*IgnoreSysRoot=*/ true);
- }
-
- if (HSOpts.UseStandardIncludes)
- Init.AddDefaultSystemIncludePaths(Lang, Triple,
- HSOpts.UseStandardCXXIncludes);
-
if (HSOpts.UseStandardIncludes)
- Init.AddDefaultSystemIncludePaths(Lang, Triple,
- HSOpts.UseStandardCXXIncludes);
+ Init.AddDefaultSystemIncludePaths(Lang, Triple, HSOpts);
Init.Realize();
}
OpenPOWER on IntegriCloud