Recommend the -flto flag instead of -use-gold-plugin, and update

other aspects of the gold plugin docs to reflect reality.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143785 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Peter Collingbourne 2011-11-05 04:17:28 +00:00
parent 988fdc5f28
commit 5f73f68d39

View File

@ -89,11 +89,11 @@ placed.
<tt>-emit-llvm</tt> or <tt>-flto</tt>, or the <tt>-O4</tt> flag which is <tt>-emit-llvm</tt> or <tt>-flto</tt>, or the <tt>-O4</tt> flag which is
synonymous with <tt>-O3 -flto</tt>.</p> synonymous with <tt>-O3 -flto</tt>.</p>
<p><tt>Clang</tt> has a <tt>-use-gold-plugin</tt> option which looks for the <p>Any of these flags will also cause <tt>clang</tt> to look for the
gold plugin in the same directories as it looks for <tt>cc1</tt> and passes gold plugin in the <tt>lib</tt> directory under its prefix and pass the
the <tt>-plugin</tt> option to <tt>ld</tt>. It will not look for an alternate <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 linker, which is why you need gold to be the installed system linker in
path.</p> your path.</p>
<p>If you want <tt>ar</tt> and <tt>nm</tt> to work seamlessly as well, install <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 <tt>LLVMgold.so</tt> to <tt>/usr/lib/bfd-plugins</tt>. If you built your
@ -141,10 +141,10 @@ void foo4(void) {
} }
--- command lines --- --- command lines ---
$ clang -flto a.c -c -o a.o # &lt;-- a.o is LLVM bitcode file $ clang -flto a.c -c -o a.o # &lt;-- a.o is LLVM bitcode file
$ ar q a.a a.o # &lt;-- a.a is an archive with LLVM bitcode $ ar q a.a a.o # &lt;-- a.a is an archive with LLVM bitcode
$ clang b.c -c -o b.o # &lt;-- b.o is native object file $ clang b.c -c -o b.o # &lt;-- b.o is native object file
$ clang -use-gold-plugin a.a b.o -o main # &lt;-- link with LLVMgold plugin $ clang -flto a.a b.o -o main # &lt;-- link with LLVMgold plugin
</pre> </pre>
<p>Gold informs the plugin that foo3 is never referenced outside the IR, <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 # &lt;-- link with LLVMgold plugin
<li>Follow the instructions <a href="#build">on how to build LLVMgold.so</a>.</li> <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>Install the newly built binutils to <tt>$PREFIX</tt></li>
<li>Copy <tt>Release/lib/LLVMgold.so</tt> to <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> <tt>$PREFIX/lib/bfd-plugins/</tt></li>
<li>Set environment variables (<tt>$PREFIX</tt> is where you installed clang and <li>Set environment variables (<tt>$PREFIX</tt> is where you installed clang and
binutils): binutils):
<pre class="doc_code"> <pre class="doc_code">
export CC="$PREFIX/bin/clang -use-gold-plugin" export CC="$PREFIX/bin/clang -flto"
export CXX="$PREFIX/bin/clang++ -use-gold-plugin" export CXX="$PREFIX/bin/clang++ -flto"
export AR="$PREFIX/bin/ar" export AR="$PREFIX/bin/ar"
export NM="$PREFIX/bin/nm" export NM="$PREFIX/bin/nm"
export RANLIB=/bin/true #ranlib is not needed, and doesn't support .bc files in .a 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: <li>Or you can just set your path:
<pre class="doc_code"> <pre class="doc_code">
export PATH="$PREFIX/bin:$PATH" export PATH="$PREFIX/bin:$PATH"
export CC="clang -use-gold-plugin" export CC="clang -flto"
export CXX="clang++ -use-gold-plugin" export CXX="clang++ -flto"
export RANLIB=/bin/true export RANLIB=/bin/true
export CFLAGS="-O4" export CFLAGS="-O4"
</pre></li> </pre></li>