www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Phobos and LTO

reply Las <lasssafin gmail.com> writes:
Is Phobos compiled with LTO enabled?
Mar 05
next sibling parent reply Temtaime <temtaime gmail.com> writes:
On Sunday, 5 March 2017 at 17:17:13 UTC, Las wrote:
 Is Phobos compiled with LTO enabled?
There is no LTO with D.
Mar 05
parent reply Daniel Kozak via Digitalmars-d <digitalmars-d puremagic.com> writes:
Dne 5.3.2017 v 20:31 Temtaime via Digitalmars-d napsal(a):

 On Sunday, 5 March 2017 at 17:17:13 UTC, Las wrote:
 Is Phobos compiled with LTO enabled?
There is no LTO with D.
Yes it is https://johanengelen.github.io/ldc/2016/11/10/Link-Time-Optimization-LDC.html
Mar 05
next sibling parent Johan Engelen <j j.nl> writes:
On Sunday, 5 March 2017 at 19:52:12 UTC, Daniel Kozak wrote:
 Dne 5.3.2017 v 20:31 Temtaime via Digitalmars-d napsal(a):

 On Sunday, 5 March 2017 at 17:17:13 UTC, Las wrote:
 Is Phobos compiled with LTO enabled?
There is no LTO with D.
Yes it is https://johanengelen.github.io/ldc/2016/11/10/Link-Time-Optimization-LDC.html
And it appeared first in the recent LDC 1.1 release. -Johan
Mar 05
prev sibling parent reply Temtaime <temtaime gmail.com> writes:
On Sunday, 5 March 2017 at 19:52:12 UTC, Daniel Kozak wrote:
 Dne 5.3.2017 v 20:31 Temtaime via Digitalmars-d napsal(a):

 On Sunday, 5 March 2017 at 17:17:13 UTC, Las wrote:
 Is Phobos compiled with LTO enabled?
There is no LTO with D.
Yes it is https://johanengelen.github.io/ldc/2016/11/10/Link-Time-Optimization-LDC.html
Being specific only for LDC and only on linux - it's a lie to say simple « yes ».
Mar 07
parent reply Johan Engelen <j j.nl> writes:
On Tuesday, 7 March 2017 at 18:15:52 UTC, Temtaime wrote:
 On Sunday, 5 March 2017 at 19:52:12 UTC, Daniel Kozak wrote:
 Dne 5.3.2017 v 20:31 Temtaime via Digitalmars-d napsal(a):

 On Sunday, 5 March 2017 at 17:17:13 UTC, Las wrote:
 Is Phobos compiled with LTO enabled?
There is no LTO with D.
Yes it is https://johanengelen.github.io/ldc/2016/11/10/Link-Time-Optimization-LDC.html
Being specific only for LDC and only on linux - it's a lie to say simple « yes ».
Cheer up, you wrote "there is no LTO with D", which there clearly is. :-) It works on OS X too. And OS X is the only platform for which we package the LTO linker binaries in the release. -Johan
Mar 07
next sibling parent reply Johan Engelen <j j.nl> writes:
On Tuesday, 7 March 2017 at 18:42:40 UTC, Johan Engelen wrote:
 It works on OS X too.
 And OS X is the only platform for which we package the LTO 
 linker binaries in the release.
Has anybody tried LLD on Windows for D already? https://lld.llvm.org/windows_support.html If LLD works (or another linker that can use the LLVM plugin), then LTO is also available on Windows. -Johan
Mar 07
parent reply kinke <noone nowhere.com> writes:
On Tuesday, 7 March 2017 at 18:46:15 UTC, Johan Engelen wrote:
 On Tuesday, 7 March 2017 at 18:42:40 UTC, Johan Engelen wrote:
 It works on OS X too.
 And OS X is the only platform for which we package the LTO 
 linker binaries in the release.
Has anybody tried LLD on Windows for D already? https://lld.llvm.org/windows_support.html If LLD works (or another linker that can use the LLVM plugin), then LTO is also available on Windows. -Johan
Yep, I gave LLD 3.9 a try on Win64 some weeks ago. Works out of the box as drop-in replacement for Microsoft's link.exe, incl. usage of environment variables. What's apparently still lacking is debuginfos (.pdb) generation, so our CDB debugging tests failed (all others worked IIRC). LLD is supposed to be significantly faster than Microsoft's linker; I haven't done any measurements yet. Besides offering nice stuff like LTO, integrating LLD should allow LDC to directly cross-compile *and* cross-link. So you'll only need the target system libs to produce objects, libraries and executables for 'any' target. Which is pretty awesome.
Mar 07
parent reply Johan Engelen <j j.nl> writes:
On Tuesday, 7 March 2017 at 22:38:33 UTC, kinke wrote:
 
 Yep, I gave LLD 3.9 a try on Win64 some weeks ago. Works out of 
 the box as drop-in replacement for Microsoft's link.exe, incl. 
 usage of environment variables.
Niiice. Awesome indeed! Does LLVM trunk automatically build an LLD LTO plugin on Windows? If not, we should ask about it on the LLVM mailing list. cheers, Johan
Mar 08
parent Johan Engelen <j j.nl> writes:
On Wednesday, 8 March 2017 at 17:16:58 UTC, Johan Engelen wrote:
 
 Does LLVM trunk automatically build an LLD LTO plugin on 
 Windows? If not, we should ask about it on the LLVM mailing 
 list.
Er... stop me before doing something stupid :) LTO is of course a native feature of LLD.
Mar 08
prev sibling parent Daniel Kozak via Digitalmars-d <digitalmars-d puremagic.com> writes:
Dne 7.3.2017 v 19:42 Johan Engelen via Digitalmars-d napsal(a):

 On Tuesday, 7 March 2017 at 18:15:52 UTC, Temtaime wrote:
 On Sunday, 5 March 2017 at 19:52:12 UTC, Daniel Kozak wrote:
 Dne 5.3.2017 v 20:31 Temtaime via Digitalmars-d napsal(a):

 On Sunday, 5 March 2017 at 17:17:13 UTC, Las wrote:
 Is Phobos compiled with LTO enabled?
There is no LTO with D.
Yes it is https://johanengelen.github.io/ldc/2016/11/10/Link-Time-Optimization-LDC.html
Being specific only for LDC and only on linux - it's a lie to say simple « yes ».
Cheer up, you wrote "there is no LTO with D", which there clearly is. :-) It works on OS X too. And OS X is the only platform for which we package the LTO linker binaries in the release. -Johan
OTOH he maybe has dmd in mind when he speaking about D. It is a really common pattern (problem) I am challenging every time (unfortunately) when I am speaking about D.
Mar 07
prev sibling parent reply Dmitry Olshansky <dmitry.olsh gmail.com> writes:
On 3/5/17 6:17 PM, Las wrote:
 Is Phobos compiled with LTO enabled?
LTO is *link* time optimization so I'd say it makes no sense for libraries, as they are not linked. --- Dmitry Olshansky
Mar 05
next sibling parent John Colvin <john.loughran.colvin gmail.com> writes:
On Sunday, 5 March 2017 at 21:00:32 UTC, Dmitry Olshansky wrote:
 On 3/5/17 6:17 PM, Las wrote:
 Is Phobos compiled with LTO enabled?
LTO is *link* time optimization so I'd say it makes no sense for libraries, as they are not linked. --- Dmitry Olshansky
Shared libraries are linked.
Mar 05
prev sibling parent Johan Engelen <j j.nl> writes:
On Sunday, 5 March 2017 at 21:00:32 UTC, Dmitry Olshansky wrote:
 On 3/5/17 6:17 PM, Las wrote:
 Is Phobos compiled with LTO enabled?
LTO is *link* time optimization so I'd say it makes no sense for libraries, as they are not linked.
Static libraries _are_ linked into your executable and LTO is very relevant for libraries. Having druntime and/or Phobos compiled with LTO enabled can provide massive speedups. I have not worked on it yet, but it'd be awesome if we could ship LDC with LTO versions of druntime and Phobos. PRs with additions to our CMake files are very welcome! :-) cheers, Johan
Mar 05