Double-checked on the latest binary release on llvm.org, it ships with 
clang+llvm-3.9.0-x86_64-apple-darwin/lib/libLTO.dylib

I also can’t find any CMake option that disable LTO support at build time for 
clang.


> On Nov 21, 2016, at 9:53 PM, Mehdi Amini via cfe-commits 
> <cfe-commits@lists.llvm.org> wrote:
> 
> AFAIK any clang build open-source ships with libLTO.
> Not having libLTO built with clang is a Chromium oddity, unless I missed the 
> obvious somewhere.
> 
> 
>> On Nov 21, 2016, at 9:50 PM, Nico Weber <tha...@chromium.org 
>> <mailto:tha...@chromium.org>> wrote:
>> 
>> In what way is this chromium specific? It's "all non-xcode uses of clang on 
>> mac", no?
>> 
>> 
>> On Nov 21, 2016 7:29 PM, "Mehdi Amini" <mehdi.am...@apple.com 
>> <mailto:mehdi.am...@apple.com>> wrote:
>> 
>>> On Nov 21, 2016, at 2:44 PM, Nico Weber <tha...@chromium.org 
>>> <mailto:tha...@chromium.org>> wrote:
>>> 
>>> On Mon, Nov 21, 2016 at 5:34 PM, Mehdi Amini <mehdi.am...@apple.com 
>>> <mailto:mehdi.am...@apple.com>> wrote:
>>> 
>>>> On Nov 21, 2016, at 2:27 PM, Nico Weber <tha...@chromium.org 
>>>> <mailto:tha...@chromium.org>> wrote:
>>>> 
>>>> On Mon, Nov 21, 2016 at 5:19 PM, Mehdi AMINI via cfe-commits 
>>>> <cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>> wrote:
>>>> mehdi_amini added a comment.
>>>> 
>>>> In https://reviews.llvm.org/D25932#601842 
>>>> <https://reviews.llvm.org/D25932#601842>, @rnk wrote:
>>>> 
>>>> > In https://reviews.llvm.org/D25932#601820 
>>>> > <https://reviews.llvm.org/D25932#601820>, @mehdi_amini wrote:
>>>> >
>>>> > > We ship `clang + libLTO + ld64` bundled in the toolchain, so even if 
>>>> > > you don't package libLTO yourself, it is already accessible from the 
>>>> > > linker: it will use the one in the toolchain when needed.
>>>> > >
>>>> > > I don't have an immediate idea to prevent this and have the linker 
>>>> > > issue an error (other than removing manually libLTO from the Xcode 
>>>> > > installation).
>>>> >
>>>> >
>>>> > So, even if clang doesn't pass -lto_library to ld64, ld64 will 
>>>> > auto-discover the bundled libLTO that happens to be next to it? That 
>>>> > could go badly.
>>>> 
>>>> 
>>>> Right: until LLVM 3.8, clang was *never* passing the `-lto_library` 
>>>> option. The only way to have your own libLTO used by ld64 instead of the 
>>>> one in the Xcode toolchain was setting the environment variable 
>>>> "DYLD_LIBRARY_PATH".
>>>> Of course was has many issues, and that's what lead us to have clang 
>>>> passing this option to ld64. Initially only when the driver was invoked 
>>>> with -flto, but recently I had issues with clients that didn't use LTO 
>>>> themselves but were having static archives they depend on that were 
>>>> containing bitcode.
>>>> 
>>>> Where those archives system libraries, or other things?
>>> 
>>> We have two cases:
>>> 
>>> 1) Internal teams producing libraries in an internal SDK with LTO enabled, 
>>> and other teams consuming these libraries and linking to the framework. It 
>>> seems also something that people out-in-the-wild are doing according to 
>>> some bug reports.
>>> 2) Any Xcode user that have a somehow complex project which is split in 
>>> multiple targets. Xcode can’t tell clang from one target that it is linking 
>>> with LTO even if LTO is disabled just because another dependency has LTO 
>>> enabled. And sometimes Xcode is only seeing static archive as an input 
>>> anyway.
>>> 
>>> It sounds like this is a pure regression for us then.
>> 
>> Right, for you "downstream consumer of clang in chromium”.
>> 
>>> Since 'it never "hurt" to pass it' isn't true (every link invocation done 
>>> by the driver now prints a warning), maybe this should be reverted until 
>>> there's some better approach?
>>> Requiring everyone to put a dummy libLTO.dylib at ../lib/libLTO.dylib 
>>> (while clever) seems pretty unfortunate.
>> 
>> Is there a CMake invocation that disable libLTO today and allow to run “make 
>> install” and produce a distribution of clang without libLTO?
>> 
>> If not, then I’m against reverting this because I consider your Chromium 
>> specific incorrect with respect to the support upstream. And I’m fine having 
>> it supported in the future, but you should make it supported, for instance 
>> with a cmake option (if the cmake option already exists, I haven’t checked, 
>> then we could conditionally compile-out the warning based on it).
>> 
>> — 
>> Mehdi
>> 
>> 
>> 
>> 
>>>  
>>> 
>>>> Maybe clang could sniff archives for bitcode and pass only -flto in that 
>>>> case?
>>> 
>>> That seems like a possibility. It’d have to resolve paths to the static 
>>> archives, which it doesn’t do right now I believe (they can be resolved 
>>> with `-Lpath -lfoo`).
>>> 
>>> — 
>>> Mehdi
>> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to