<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Dec 1, 2017 at 9:47 AM, Rafael Avila de Espindola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">Rui Ueyama via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> writes:<br>
<br>
> Author: ruiu<br>
> Date: Thu Nov 30 20:46:56 2017<br>
> New Revision: 319518<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=319518&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=319518&view=rev</a><br>
> Log:<br>
> Add an additional test for r319503.<br>
><br>
> Added:<br>
>     lld/trunk/test/ELF/gnu-hash-<wbr>table-many.s<br>
><br>
> Added: lld/trunk/test/ELF/gnu-hash-<wbr>table-many.s<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/gnu-hash-table-many.s?rev=319518&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lld/trunk/test/ELF/<wbr>gnu-hash-table-many.s?rev=<wbr>319518&view=auto</a><br>
> ==============================<wbr>==============================<wbr>==================<br>
> --- lld/trunk/test/ELF/gnu-hash-<wbr>table-many.s (added)<br>
> +++ lld/trunk/test/ELF/gnu-hash-<wbr>table-many.s Thu Nov 30 20:46:56 2017<br>
> @@ -0,0 +1,55 @@<br>
> +# REQUIRES: x86<br>
> +<br>
> +# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o<br>
> +# RUN: ld.lld -hash-style=gnu %t.o -o %t.so -shared<br>
> +# RUN: llvm-readelf --gnu-hash-table %t.so | FileCheck %s<br>
> +<br>
> +# CHECK: Num Buckets: 4<br>
<br>
</span>Thanks. BTW, out bloom filter still seems to be larger than gold or<br>
bfd. When linking clang I get<br>
<br>
lld:<br>
<br>
  Num Mask Words: 8192<br>
<br>
gold and bfd:<br>
  Num Mask Words: 4096<br></blockquote><div><br></div><div>It's hard to say whether we should shrink our bloom filter or not.</div><div><br></div><div>When I link clang, gold produces a 64 KiB bloom filter for 88,850 symbols while lld produces a 128 KiB bloom filter for the same number of symbols.</div><div><br></div><div>If you compute the probability of false positive [1], the 128 KiB bloom filter that the GNU linker produced has 8.3% false positive rate [2] while our 128 KiB filter has 2.4% [3]. To me, 8.3% seems too high, so I'd keep our code as-is, but ideally we should do some benchmark.</div><div><br></div><div>[1] <a href="https://en.wikipedia.org/wiki/Bloom_filter#Probability_of_false_positives">https://en.wikipedia.org/wiki/Bloom_filter#Probability_of_false_positives</a><br></div><div>[2] <a href="https://www.wolframalpha.com/input/?i=(1-e%5E(-kn%2Fm))%5Ek+where+m%3D8192*64,+k%3D2,+n%3D88850">https://www.wolframalpha.com/input/?i=(1-e%5E(-kn%2Fm))%5Ek+where+m%3D8192*64,+k%3D2,+n%3D88850</a></div><div>[3] <a href="https://www.wolframalpha.com/input/?i=(1-e%5E(-kn%2Fm))%5Ek+where+m%3D16384*64,+k%3D2,+n%3D88850">https://www.wolframalpha.com/input/?i=(1-e%5E(-kn%2Fm))%5Ek+where+m%3D16384*64,+k%3D2,+n%3D88850</a></div></div></div></div>