[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: building llvm optimizations for libobjc2
From: |
David Chisnall |
Subject: |
Re: building llvm optimizations for libobjc2 |
Date: |
Thu, 8 Dec 2011 15:03:12 +0000 |
On 8 Dec 2011, at 14:48, Sebastian Reitenbach wrote:
> So, now I have a lib/libGNUObjCRuntime.so file installed, but wonder a bit,
> how to make use of it ;)
The closest thing to documentation for it currently is this blog post:
http://etoileos.com/news/archive/2011/05/14/1829/
It shouldn't need any documentation. Eventually it will be used by front ends
automagically if it's installed.
> The README states:
> Running GNU make will then create GNUObjCRuntime.so. This library can be
> passed to opt to run optimisations on bitcode generated with clang or
> LanguageKit.
LanguageKit will use it automatically if it's present. Clang can be told to
use it with -Xclang -load -Xclang /path/to/libGNURuntime.so
GNU people can probably invoke it from gold for link-time optimisation as well,
but I've never tried.
> but unfortunately, this doesn't tells me much :(
>
> man opt tells me, its the llvm optimizer,
> reading further, I should do
> opt -load=libGNUObjCRuntime.so -gnu-nonfragile-ivar -gnu-objc-type-feedback
> <inputfile>
You can do that too, although if it's built against LLVM 3 or later it will
automatically add the optimisations in sensible points at the default places
for
> but what is the inputfile, would it be libgnustep-base.so.X.X ??
> Shall I need to do this for libraries, binaries, or both?
> Can gnustep-make do this for me "automagically" when I give an environment
> variable?
Well, you can set OBJCFLAGS="-Xclang -load -Xclang /path/to/libGNURuntime.so"
and it should Just Workâ˘. It's nowhere near as well tested as the rest of the
runtime or compiler though, so I'm a bit hesitant about enabling it by default.
I've compiled all of -base with it and run the tests though, so more testing
is definitely appreciated (as are bug reports with - ideally, reduced - test
cases).
> Or, where do I find the RTFM on that topic?
Currently in my brain. In the LLVM 3.1 timeframe I plan on improving the UI
for this, and once it's a bit less ugly I'll document it properly.
David
-- Sent from my Difference Engine