On Jan 12, 2015, at 2:45 PM, Rafael Espíndola <rafael.espindola at gmail.com> wrote:> On 10 January 2015 at 17:43, Rahman Lavaee <r.lavaee at gmail.com> wrote: >> Hi, >> I'm building LLVM on Mac OS 10.10 and I'm having trouble making LTO work. >> The system linker dumps the following information when I executed "ld -v" >> >> @(#)PROGRAM:ld PROJECT:ld64-241.9 >> configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h >> armv6m armv7m armv7em >> LTO support using: LLVM version 3.4.2 >> >> which tells me that it is correctly pointing to the LLVM that I have built. >> However, when I pass any LTO command line arguments like "disable-inling" it >> complains. >> >> I was previously working on Linux and the gold plugin makes it very >> convenient. However, that plugin only handles ELF assembly and I can't >> install it on Mac. > > > I am not sure if there is a supported way of passing extra llvm > options during LTO with ld64.You can pass options with -mllvm. But you need to get it to the linker, so when invoking the linker through clang it looks like: -Wl,-llvm,-myltoopt That will get it to lto_codegen_debug_options(). But I don’t know what options strings lto_codegen_debug_options() handles. -Nick
Thank you Nick. I think it's worth giving LLD a try. I tried building lld (branch 3.4) on top of llvm 3.4 and got the following error in the last step when it is linking lld. [100%] Building CXX object tools/lld/tools/lld/CMakeFiles/lld.dir/lld.cpp.o Linking CXX executable ../../../../bin/lld ld: library not found for -llldHexagonELFTarget Can you please help me with that? On Mon, Jan 12, 2015 at 5:55 PM, Nick Kledzik <kledzik at apple.com> wrote:> > > On Jan 12, 2015, at 2:45 PM, Rafael Espíndola <rafael.espindola at gmail.com> > wrote: > > On 10 January 2015 at 17:43, Rahman Lavaee <r.lavaee at gmail.com> wrote: > >> Hi, > >> I'm building LLVM on Mac OS 10.10 and I'm having trouble making LTO > work. > >> The system linker dumps the following information when I executed "ld > -v" > >> > >> @(#)PROGRAM:ld PROJECT:ld64-241.9 > >> configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 > x86_64h > >> armv6m armv7m armv7em > >> LTO support using: LLVM version 3.4.2 > >> > >> which tells me that it is correctly pointing to the LLVM that I have > built. > >> However, when I pass any LTO command line arguments like > "disable-inling" it > >> complains. > >> > >> I was previously working on Linux and the gold plugin makes it very > >> convenient. However, that plugin only handles ELF assembly and I can't > >> install it on Mac. > > > > > > I am not sure if there is a supported way of passing extra llvm > > options during LTO with ld64. > > You can pass options with -mllvm. But you need to get it to the linker, > so when invoking the linker through clang it looks like: > > -Wl,-llvm,-myltoopt > > That will get it to lto_codegen_debug_options(). But I don't know what > options strings lto_codegen_debug_options() handles. > > -Nick-- Rahman -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150118/070a60e3/attachment.html>
lld is a relatively new project. You should really try trunk instead of 3.4. On 18 January 2015 at 12:09, Rahman Lavaee <r.lavaee at gmail.com> wrote:> Thank you Nick. I think it's worth giving LLD a try. > I tried building lld (branch 3.4) on top of llvm 3.4 and got the following > error in the last step when it is linking lld. > > [100%] Building CXX object tools/lld/tools/lld/CMakeFiles/lld.dir/lld.cpp.o > Linking CXX executable ../../../../bin/lld > ld: library not found for -llldHexagonELFTarget > > Can you please help me with that? > > On Mon, Jan 12, 2015 at 5:55 PM, Nick Kledzik <kledzik at apple.com> wrote: >> >> >> >> On Jan 12, 2015, at 2:45 PM, Rafael Espíndola <rafael.espindola at gmail.com> >> wrote: >> > On 10 January 2015 at 17:43, Rahman Lavaee <r.lavaee at gmail.com> wrote: >> >> Hi, >> >> I'm building LLVM on Mac OS 10.10 and I'm having trouble making LTO >> >> work. >> >> The system linker dumps the following information when I executed "ld >> >> -v" >> >> >> >> @(#)PROGRAM:ld PROJECT:ld64-241.9 >> >> configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 >> >> x86_64h >> >> armv6m armv7m armv7em >> >> LTO support using: LLVM version 3.4.2 >> >> >> >> which tells me that it is correctly pointing to the LLVM that I have >> >> built. >> >> However, when I pass any LTO command line arguments like >> >> "disable-inling" it >> >> complains. >> >> >> >> I was previously working on Linux and the gold plugin makes it very >> >> convenient. However, that plugin only handles ELF assembly and I can't >> >> install it on Mac. >> > >> > >> > I am not sure if there is a supported way of passing extra llvm >> > options during LTO with ld64. >> >> You can pass options with -mllvm. But you need to get it to the linker, >> so when invoking the linker through clang it looks like: >> >> -Wl,-llvm,-myltoopt >> >> That will get it to lto_codegen_debug_options(). But I don’t know what >> options strings lto_codegen_debug_options() handles. >> >> -Nick > > > > > -- > Rahman