[PATCH] D25932: Unconditionally pass `-lto_library` to the linker on Darwin

Duncan P. N. Exon Smith via cfe-commits cfe-commits at lists.llvm.org
Tue Oct 25 08:29:29 PDT 2016


> On 2016-Oct-24, at 21:43, Mehdi AMINI <mehdi.amini at apple.com> wrote:
> 
> mehdi_amini created this revision.
> mehdi_amini added a reviewer: dexonsmith.
> mehdi_amini added a subscriber: cfe-commits.
> 
> We're only doing it with -flto currently, however it never "hurt"
> to pass it, and users that are linking without -flto can get in
> trouble if one of the dependency (a static library for instance)
> contains bitcode.

Seems reasonable.  LGTM.

> 
> 
> https://reviews.llvm.org/D25932
> 
> Files:
>  clang/lib/Driver/Tools.cpp
>  clang/test/Driver/darwin-ld-lto.c
> 
> 
> Index: clang/test/Driver/darwin-ld-lto.c
> ===================================================================
> --- clang/test/Driver/darwin-ld-lto.c
> +++ clang/test/Driver/darwin-ld-lto.c
> @@ -6,20 +6,20 @@
> // RUN: mkdir -p %T/lib
> // RUN: touch %T/lib/libLTO.dylib
> // RUN: %clang -target x86_64-apple-darwin10 -### %s \
> -// RUN:   -ccc-install-dir %T/bin -mlinker-version=133 -flto 2> %t.log
> +// RUN:   -ccc-install-dir %T/bin -mlinker-version=133 2> %t.log
> // RUN: FileCheck -check-prefix=LINK_LTOLIB_PATH %s -input-file %t.log
> //
> // LINK_LTOLIB_PATH: {{ld(.exe)?"}}
> // LINK_LTOLIB_PATH: "-lto_library"
> 
> // RUN: %clang -target x86_64-apple-darwin10 -### %s \
> -// RUN:   -ccc-install-dir %S/dummytestdir -mlinker-version=133 -flto 2> %t.log
> +// RUN:   -ccc-install-dir %S/dummytestdir -mlinker-version=133 2> %t.log
> // RUN: FileCheck -check-prefix=LINK_LTOLIB_PATH_WRN %s -input-file %t.log
> //
> // LINK_LTOLIB_PATH_WRN: warning: libLTO.dylib relative to clang installed dir not found; using 'ld' default search path instead
> 
> // RUN: %clang -target x86_64-apple-darwin10 -### %s \
> -// RUN:   -ccc-install-dir %S/dummytestdir -mlinker-version=133 -Wno-liblto -flto 2> %t.log
> +// RUN:   -ccc-install-dir %S/dummytestdir -mlinker-version=133 -Wno-liblto 2> %t.log
> // RUN: FileCheck -check-prefix=LINK_LTOLIB_PATH_NOWRN %s -input-file %t.log
> //
> // LINK_LTOLIB_PATH_NOWRN-NOT: warning: libLTO.dylib relative to clang installed dir not found; using 'ld' default search path instead
> Index: clang/lib/Driver/Tools.cpp
> ===================================================================
> --- clang/lib/Driver/Tools.cpp
> +++ clang/lib/Driver/Tools.cpp
> @@ -7944,22 +7944,22 @@
>       CmdArgs.push_back("-object_path_lto");
>       CmdArgs.push_back(TmpPath);
>     }
> +  }
> 
> -    // Use -lto_library option to specify the libLTO.dylib path. Try to find
> -    // it in clang installed libraries. If not found, the option is not used
> -    // and 'ld' will use its default mechanism to search for libLTO.dylib.
> -    if (Version[0] >= 133) {
> -      // Search for libLTO in <InstalledDir>/../lib/libLTO.dylib
> -      StringRef P = llvm::sys::path::parent_path(D.getInstalledDir());
> -      SmallString<128> LibLTOPath(P);
> -      llvm::sys::path::append(LibLTOPath, "lib");
> -      llvm::sys::path::append(LibLTOPath, "libLTO.dylib");
> -      if (llvm::sys::fs::exists(LibLTOPath)) {
> -        CmdArgs.push_back("-lto_library");
> -        CmdArgs.push_back(C.getArgs().MakeArgString(LibLTOPath));
> -      } else {
> -        D.Diag(diag::warn_drv_lto_libpath);
> -      }
> +  // Use -lto_library option to specify the libLTO.dylib path. Try to find
> +  // it in clang installed libraries. If not found, the option is not used
> +  // and 'ld' will use its default mechanism to search for libLTO.dylib.
> +  if (Version[0] >= 133) {
> +    // Search for libLTO in <InstalledDir>/../lib/libLTO.dylib
> +    StringRef P = llvm::sys::path::parent_path(D.getInstalledDir());
> +    SmallString<128> LibLTOPath(P);
> +    llvm::sys::path::append(LibLTOPath, "lib");
> +    llvm::sys::path::append(LibLTOPath, "libLTO.dylib");
> +    if (llvm::sys::fs::exists(LibLTOPath)) {
> +      CmdArgs.push_back("-lto_library");
> +      CmdArgs.push_back(C.getArgs().MakeArgString(LibLTOPath));
> +    } else {
> +      D.Diag(diag::warn_drv_lto_libpath);
>     }
>   }
> 
> 
> 
> <D25932.75668.patch>



More information about the cfe-commits mailing list