[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