[cfe-commits] r103912 - /cfe/trunk/lib/Frontend/InitHeaderSearch.cpp
Nuno Lopes
nunoplopes at sapo.pt
Sun May 16 13:38:08 PDT 2010
Does this fixes http://llvm.org/bugs/show_bug.cgi?id=5188 ?
Nuno
----- Original Message -----
> Author: mikem
> Date: Sun May 16 14:03:52 2010
> New Revision: 103912
>
> URL: http://llvm.org/viewvc/llvm-project?rev=103912&view=rev
> Log:
> Moved clang-builtin include dir position to immediately precede C
> includes.
> This aligns with how gcc compiler does things.
>
> Modified:
> cfe/trunk/lib/Frontend/InitHeaderSearch.cpp
>
> Modified: cfe/trunk/lib/Frontend/InitHeaderSearch.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitHeaderSearch.cpp?rev=103912&r1=103911&r2=103912&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Frontend/InitHeaderSearch.cpp (original)
> +++ cfe/trunk/lib/Frontend/InitHeaderSearch.cpp Sun May 16 14:03:52 2010
> @@ -73,7 +73,8 @@
> 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 @@
> /// 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 @@
> 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 @@
> break;
> }
>
> - AddPath("/usr/local/include", System, true, false, false);
> AddPath("/usr/include", System, false, false, false);
> }
>
> @@ -666,11 +680,11 @@
>
> 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 @@
> 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();
> }
More information about the cfe-commits
mailing list