Skip to content
  1. May 23, 2018
  2. May 15, 2018
    • Peter Smith's avatar
      [ELF] Implement --keep-unique option · dbef8cc6
      Peter Smith authored
      The --keep-unique <symbol> option is taken from gold. The intention is that
      <symbol> will be prevented from being folded by ICF. Although not
      specifically mentioned in the documentation <symbol> only matches
      global symbols, with a warning if the symbol is not found.
      
      The implementation finds the Section defining <symbol> and removes it from
      the set of sections considered for ICF.
      
      Differential Revision: https://reviews.llvm.org/D46755
      
      llvm-svn: 332332
      dbef8cc6
  3. Apr 03, 2018
  4. Mar 29, 2018
  5. Mar 27, 2018
    • Andrew Ng's avatar
      [ELF] Disable ICF for synthetic sections · ae0a7735
      Andrew Ng authored
      The Data member of synthetic section's is not valid and empty. The Data
      member is required to be valid by ICF as it is used by ICF to determine
      the equality of section contents. Therefore, exclude synthetic sections
      from ICF.
      
      Fixes bug PR36910.
      
      Differential Revision: https://reviews.llvm.org/D44923
      
      llvm-svn: 328624
      ae0a7735
  6. Feb 23, 2018
  7. Feb 13, 2018
  8. Feb 11, 2018
  9. Feb 09, 2018
  10. Feb 01, 2018
    • James Henderson's avatar
      [ELF] Add --print-icf-sections flag · 9c6e2fd5
      James Henderson authored
      Currently ICF information is output through stderr if the "--verbose"
      flag is used. This differs to Gold for example, which uses an explicit
      flag to output this to stdout. This commit adds the
      "--print-icf-sections" and "--no-print-icf-sections" flags and changes
      the output message format for clarity and consistency with
      "--print-gc-sections". These messages are still output to stderr if
      using the verbose flag. However to avoid intermingled message output to
      console, this will not occur when the "--print-icf-sections" flag is
      used.
      
      Existing tests have been modified to expect the new message format from
      stderr.
      
      Patch by Owen Reynolds.
      
      Differential Revision: https://reviews.llvm.org/D42375
      
      Reviewers: ruiu, rafael
      
      Reviewed by: 
      
      llvm-svn: 323976
      9c6e2fd5
  11. Jan 10, 2018
    • Rafael Espindola's avatar
      Rename --icf-data and add a corresponding flag for functions. · b5506e6b
      Rafael Espindola authored
      When we have --icf=safe we should be able to define --icf=all as a
      shorthand for --icf=safe --ignore-function-address-equality.
      
      For now --ignore-function-address-equality is used only to control
      access to non preemptable symbols in shared libraries.
      
      llvm-svn: 322152
      b5506e6b
  12. Dec 12, 2017
    • Rafael Espindola's avatar
      Add an option for ICFing data. · 814ece68
      Rafael Espindola authored
      An internal linker has support for merging identical data and in some
      cases it can be a significant win.
      
      This is behind an off by default flag so it has to be requested
      explicitly.
      
      llvm-svn: 320448
      814ece68
  13. Dec 09, 2017
  14. Nov 06, 2017
  15. Nov 03, 2017
    • Rui Ueyama's avatar
      Rename SymbolBody -> Symbol · f52496e1
      Rui Ueyama authored
      Now that we have only SymbolBody as the symbol class. So, "SymbolBody"
      is a bit strange name now. This is a mechanical change generated by
      
        perl -i -pe s/SymbolBody/Symbol/g $(git grep -l SymbolBody lld/ELF lld/COFF)
      
      nd clang-format-diff.
      
      Differential Revision: https://reviews.llvm.org/D39459
      
      llvm-svn: 317370
      f52496e1
  16. Oct 13, 2017
    • Bob Haarman's avatar
      [lld] Move Threads to Common · 4f5c8c29
      Bob Haarman authored
      Summary:
      This will allow using the functionality from other linkers. It is also
      a prerequisite for sharing the error logging code.
      
      Reviewers: ruiu
      
      Reviewed By: ruiu
      
      Subscribers: emaste, mgorny, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D38822
      
      llvm-svn: 315725
      4f5c8c29
  17. Oct 02, 2017
    • Rui Ueyama's avatar
      [ICF] Include section contents in section hash values. · 274aa2fb
      Rui Ueyama authored
      Computing section content hashes early seems like a win in terms of
      performance. It increases a chance that two different sections will get
      different class IDs from the beginning.
      
      Without threads, this patch improves Chromium link time by about 0.3
      seconds. With threads, by 0.1 seconds. That's less than 1% time saving
      but not bad for a small patch.
      
      llvm-svn: 314644
      274aa2fb
  18. Aug 29, 2017
  19. Jun 12, 2017
  20. Jun 07, 2017
  21. May 24, 2017
    • Rui Ueyama's avatar
      Improve parallelism of ICF. · f04c0483
      Rui Ueyama authored
      This is the only place we use threads for ICF. The intention of this code
      was to split an input vector into 256 shards and process them in parallel.
      What the code was actually doing was to split an input into 257 shards,
      process the first 256 shards in parallel, and the remaining one in serial.
      
      That means this code takes ceil(256/n)+1 instead of ceil(256/n) where n
      is the number of available CPU cores. The former converges to 2 while
      the latter converges to 1.
      
      This patches fixes the above issue.
      
      llvm-svn: 303797
      f04c0483
  22. May 10, 2017
  23. Apr 13, 2017
    • Peter Smith's avatar
      [ELF] Mark ARM Exceptions that refer to folded code as not live · cec1e260
      Peter Smith authored
          
      ARM Exception Index Table sections .ARM.exidx have an implicit dependency
      on code sections via SHF_LINK_ORDER. When code sections are folded by ICF
      we must mark the unique .ARM.exidx table that describes it as not live
      to prevent an illegal entry in the exception table.
          
      Note that we do not try and follow the relocations from the .ARM.exidx
      section to the .ARM.extab sections to mark these as not live. Leaving
      these sections is not a correctness problem. In theory these could be
      removed via an application of garbage collection.
          
      Fixes https://bugs.llvm.org/show_bug.cgi?id=32614
      
      Differential Revision: https://reviews.llvm.org/D31932
      
      llvm-svn: 300182
      cec1e260
  24. Mar 23, 2017
  25. Mar 18, 2017
    • Rui Ueyama's avatar
      Compute Config member function return values only once. · d57e74b7
      Rui Ueyama authored
      We had a few Config member functions that returns configuration values.
      For example, we had is64() which returns true if the target is 64-bit.
      The return values of these functions are constant and never change.
      
      This patch is to compute them only once to make it clear that they'll
      never change.
      
      llvm-svn: 298168
      d57e74b7
  26. Mar 08, 2017
  27. Mar 07, 2017
  28. Feb 28, 2017
  29. Feb 27, 2017
    • Rui Ueyama's avatar
      Move SymbolTable<ELFT>::Sections out of the class. · 536a2670
      Rui Ueyama authored
      The list of all input sections was defined in SymbolTable class for a
      historical reason. The list itself is not a template. However, because
      SymbolTable class is a template, we needed to pass around ELFT to access
      the list. This patch moves the list out of the class so that it doesn't
      need ELFT.
      
      llvm-svn: 296309
      536a2670
  30. Feb 23, 2017
    • Rafael Espindola's avatar
      Make InputSection a class. NFC. · 774ea7d0
      Rafael Espindola authored
      With the current design an InputSection is basically anything that
      goes directly in a OutputSection. That includes plain input section
      but also synthetic sections, so this should probably not be a
      template.
      
      llvm-svn: 295993
      774ea7d0
    • Rafael Espindola's avatar
      Convert InputSectionBase to a class. · b4c9b81a
      Rafael Espindola authored
      Removing this template is not a big win by itself, but opens the way
      for removing more templates.
      
      llvm-svn: 295923
      b4c9b81a
  31. Jan 20, 2017
  32. Jan 15, 2017
  33. Dec 05, 2016
Loading