diff options
Diffstat (limited to 'docs/GoldPlugin.html')
-rw-r--r-- | docs/GoldPlugin.html | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/docs/GoldPlugin.html b/docs/GoldPlugin.html index 375dd3c..2c08bd0 100644 --- a/docs/GoldPlugin.html +++ b/docs/GoldPlugin.html @@ -89,11 +89,11 @@ placed. <tt>-emit-llvm</tt> or <tt>-flto</tt>, or the <tt>-O4</tt> flag which is synonymous with <tt>-O3 -flto</tt>.</p> - <p><tt>Clang</tt> has a <tt>-use-gold-plugin</tt> option which looks for the - gold plugin in the same directories as it looks for <tt>cc1</tt> and passes - the <tt>-plugin</tt> option to <tt>ld</tt>. It will not look for an alternate - linker, which is why you need gold to be the installed system linker in your - path.</p> + <p>Any of these flags will also cause <tt>clang</tt> to look for the + gold plugin in the <tt>lib</tt> directory under its prefix and pass the + <tt>-plugin</tt> option to <tt>ld</tt>. It will not look for an alternate + linker, which is why you need gold to be the installed system linker in + your path.</p> <p>If you want <tt>ar</tt> and <tt>nm</tt> to work seamlessly as well, install <tt>LLVMgold.so</tt> to <tt>/usr/lib/bfd-plugins</tt>. If you built your @@ -141,10 +141,10 @@ void foo4(void) { } --- command lines --- -$ clang -flto a.c -c -o a.o # <-- a.o is LLVM bitcode file -$ ar q a.a a.o # <-- a.a is an archive with LLVM bitcode -$ clang b.c -c -o b.o # <-- b.o is native object file -$ clang -use-gold-plugin a.a b.o -o main # <-- link with LLVMgold plugin +$ clang -flto a.c -c -o a.o # <-- a.o is LLVM bitcode file +$ ar q a.a a.o # <-- a.a is an archive with LLVM bitcode +$ clang b.c -c -o b.o # <-- b.o is native object file +$ clang -flto a.a b.o -o main # <-- link with LLVMgold plugin </pre> <p>Gold informs the plugin that foo3 is never referenced outside the IR, @@ -171,13 +171,12 @@ $ clang -use-gold-plugin a.a b.o -o main # <-- link with LLVMgold plugin <li>Follow the instructions <a href="#build">on how to build LLVMgold.so</a>.</li> <li>Install the newly built binutils to <tt>$PREFIX</tt></li> <li>Copy <tt>Release/lib/LLVMgold.so</tt> to - <tt>$PREFIX/libexec/gcc/x86_64-unknown-linux-gnu/4.2.1/</tt> and <tt>$PREFIX/lib/bfd-plugins/</tt></li> <li>Set environment variables (<tt>$PREFIX</tt> is where you installed clang and binutils): <pre class="doc_code"> -export CC="$PREFIX/bin/clang -use-gold-plugin" -export CXX="$PREFIX/bin/clang++ -use-gold-plugin" +export CC="$PREFIX/bin/clang -flto" +export CXX="$PREFIX/bin/clang++ -flto" export AR="$PREFIX/bin/ar" export NM="$PREFIX/bin/nm" export RANLIB=/bin/true #ranlib is not needed, and doesn't support .bc files in .a @@ -187,8 +186,8 @@ export CFLAGS="-O4" <li>Or you can just set your path: <pre class="doc_code"> export PATH="$PREFIX/bin:$PATH" -export CC="clang -use-gold-plugin" -export CXX="clang++ -use-gold-plugin" +export CC="clang -flto" +export CXX="clang++ -flto" export RANLIB=/bin/true export CFLAGS="-O4" </pre></li> |