Skip to content
  1. Apr 06, 2017
  2. Feb 11, 2017
  3. Oct 18, 2016
  4. Oct 14, 2016
    • Rafael Espindola's avatar
      Move alignTo computation inside the if. · 4a2ef911
      Rafael Espindola authored
      This is an improvement when compiling with llvm. llvm doesn't inline
      the call to insert, so the align is always executed and shows up in
      the profile.
      
      With gcc the call to insert is inlined and the align computation moved
      and done only if needed.
      
      With this patch we explicitly only compute it if it is needed.
      
      In the two tests with debug info, the speedup was
      
      scylla
        master 3.008959365
        patch  2.932080942 1.02621974786x faster
      
      firefox
        master 6.709823604
        patch  6.592387227 1.01781393795x faster
      
      In all others the difference was in the noise.
      
      llvm-svn: 284249
      4a2ef911
  5. Oct 05, 2016
    • Rafael Espindola's avatar
      Allow the caller to pass in the hash. · 37fc0183
      Rafael Espindola authored
      If the caller already has the hash we don't have to compute it. This
      will be used in lld.
      
      llvm-svn: 283359
      37fc0183
    • Rafael Espindola's avatar
      Don't pass null to memcpy. Should fix the asan bots. · 24db10d8
      Rafael Espindola authored
      llvm-svn: 283336
      24db10d8
    • Rafael Espindola's avatar
      Misc improvements to StringTableBuilder. · 39751afc
      Rafael Espindola authored
      This patch adds write methods to StringTableBuilder so that it is
      easier to change the underlying implementation.
      
      Using the write methods, avoid creating a temporary buffer when using
      mmaped output.
      
      It also uses a more compact key in the DenseMap. Overall this produces
      a slightly faster lld:
      
      firefox
        master 6.853419709
        patch  6.841968912 1.00167361138x faster
      chromium
        master 4.297280174
        patch  4.298712163 1.00033323147x slower
      chromium fast
        master 1.802335952
        patch  1.806872459 1.00251701521x slower
      the gold plugin
        master 0.3247149
        patch  0.321971644 1.00852017888x faster
      clang
        master 0.551279945
        patch  0.543733194 1.01387951128x faster
      llvm-as
        master 0.032743458
        patch  0.032143478 1.01866568391x faster
      the gold plugin fsds
        master 0.350814247
        patch  0.348571741 1.00643341309x faster
      clang fsds
        master 0.6281672
        patch  0.621130222 1.01132931187x faster
      llvm-as fsds
        master 0.030168899
        patch  0.029797155 1.01247582194x faster
      scylla
        master 3.104222518
        patch  3.059590248 1.01458766252x faster
      
      llvm-svn: 283266
      39751afc
  6. Oct 04, 2016
  7. Oct 03, 2016
  8. May 06, 2016
  9. Feb 19, 2016
  10. Jan 29, 2016
    • Reid Kleckner's avatar
      Reland "[CodeView] Use assembler directives for line tables" · 2214ed89
      Reid Kleckner authored
      This reverts commit r259126 and relands r259117.
      
      This time with updated library dependencies.
      
      llvm-svn: 259130
      2214ed89
    • Reid Kleckner's avatar
      Revert "[CodeView] Use assembler directives for line tables" · 00d9639c
      Reid Kleckner authored
      This reverts commit r259117.
      
      The LineInfo constructor is defined in the codeview library and we have
      to link against it now. Doing that isn't trivial, so reverting for now.
      
      llvm-svn: 259126
      00d9639c
    • Reid Kleckner's avatar
      [CodeView] Use assembler directives for line tables · c62e379d
      Reid Kleckner authored
      Adds a new family of .cv_* directives to LLVM's variant of GAS syntax:
      
      - .cv_file: Similar to DWARF .file directives
      
      - .cv_loc: Similar to the DWARF .loc directive, but starts with a
        function id. CodeView line tables are emitted by function instead of
        by compilation unit, so we needed an extra field to communicate this.
        Rather than overloading the .loc direction further, we decided it was
        better to have our own directive.
      
      - .cv_stringtable: Emits the codeview string table at the current
        position. Currently this just contains the filenames as
        null-terminated strings.
      
      - .cv_filechecksums: Emits the file checksum table for all files used
        with .cv_file so far. There is currently no support for emitting
        actual checksums, just filenames.
      
      This moves the line table emission code down into the assembler.  This
      is in preparation for implementing the inlined call site line table
      format. The inline line table format encoding algorithm requires knowing
      the absolute code offsets, so it must run after the assembler has laid
      out the code.
      
      David Majnemer collaborated on this patch.
      
      llvm-svn: 259117
      c62e379d
  11. Oct 27, 2015
  12. Oct 26, 2015
    • Rui Ueyama's avatar
      Optimize StringTableBuilder. · df94852a
      Rui Ueyama authored
      This is a patch to improve StringTableBuilder's performance. That class'
      finalize function is very hot particularly in LLD because the function
      does tail-merge strings in string tables or SHF_MERGE sections.
      
      Generic std::sort-style sorter is not efficient for sorting strings.
      The function implemented in this patch seems to be more efficient.
      
      Here's a benchmark of LLD to link Clang with or without this patch.
      The numbers are medians of 50 runs.
      
      -O0
      real 0m0.455s
      real 0m0.430s (5.5% faster)
      
      -O3
      real 0m0.487s
      real 0m0.452s (7.2% faster)
      
      Since that is a benchmark of the whole linker, the speedup of
      StringTableBuilder itself is much more than that.
      
      http://reviews.llvm.org/D14053
      
      llvm-svn: 251337
      df94852a
  13. Oct 23, 2015
  14. Oct 22, 2015
  15. Oct 06, 2014
  16. Sep 30, 2014
  17. Sep 24, 2014
  18. Jul 03, 2014
    • Rafael Espindola's avatar
      Invert the MC -> Object dependency. · 97de474a
      Rafael Espindola authored
      Now that we have a lib/MC/MCAnalysis, the dependency was there just because
      of two helper classes. Move the two over to MC.
      
      This will allow IRObjectFile to parse inline assembly.
      
      llvm-svn: 212248
      97de474a
  19. Apr 30, 2014
    • Hans Wennborg's avatar
      ELFObjectWriter: deduplicate suffices in strtab · 83e6e1e9
      Hans Wennborg authored
      We already do this for shstrtab, so might as well do it for strtab. This
      extracts the string table building code into a separate class. The idea
      is to use it for other object formats too.
      
      I mostly wanted to do this for the general principle, but it does save a
      little bit on object file size. I tried this on a clang bootstrap and
      saved 0.54% on the sum of object file sizes (1.14 MB out of 212 MB for
      a release build).
      
      Differential Revision: http://reviews.llvm.org/D3533
      
      llvm-svn: 207670
      83e6e1e9
Loading