Skip to content
  1. Dec 11, 2013
  2. Dec 10, 2013
  3. Dec 09, 2013
  4. Dec 08, 2013
    • Rui Ueyama's avatar
      Fix -Wunused-function to unbreak buildbot. · 2994f6f7
      Rui Ueyama authored
      llvm-svn: 196716
      2994f6f7
    • Rui Ueyama's avatar
      Move static member functions out of a class. · 5af4622f
      Rui Ueyama authored
      Because compare() and its heper functions no longer have to be members of
      LayoutPass class, we can remove it from the class. No functionality change.
      
      llvm-svn: 196715
      5af4622f
    • Rui Ueyama's avatar
      Optimize the layout pass. · 37c43e9f
      Rui Ueyama authored
      The comparator used in the layout pass has many calls of map::find(). Because
      std::sort runs the comparator N*log2(N) times, the maps are looked up with the
      same key again and again. The map lookup is not a very fast operation. It made
      the pass slow.
      
      This patch eliminates the duplicate map lookups using decorate-sort-undecorate
      idiom. The pass used to take 1.1 seconds when linking LLD with LLD on Windows,
      but it now takes only 0.3 seconds. Overall performance gain in that case is from
      6.1 seconds to 5.2 seconds.
      
      Differential Revision: http://llvm-reviews.chandlerc.com/D2358
      
      llvm-svn: 196714
      37c43e9f
  5. Dec 07, 2013
    • Rui Ueyama's avatar
      Re-submit r195852 with GroupedSectionsPass change. · 32c3f17d
      Rui Ueyama authored
      GroupedSectionsPass was a complicated pass. That pass's job was to reorder
      atoms by section name, so that the atoms with the same section prefix will be
      emitted consecutively to the executable. The pass added layout edges to atoms,
      and let the layout pass to actually reorder them.
      
      This patch simplifies the design by making GroupedSectionPass to directly
      reorder atoms, rather than adding layout edges. This resembles ELF's
      ArrayOrderPass.
      
      This patch improves the performance of LLD; it used to take 7.1 seconds to
      link LLD with LLD on my Macbook Pro, but it now takes 6.1 seconds.
      
      llvm-svn: 196628
      32c3f17d
  6. Dec 06, 2013
  7. Dec 05, 2013
    • Rui Ueyama's avatar
      [PECOFF] Handle .lib files as if they are grouped by --{start,end}-group. · 16c025e2
      Rui Ueyama authored
      Currently we do not de-duplicate library files specified by /defaultlib option.
      As a result, the same files are added multiple times to the input graph. In
      particular, some popular files, such as kernel32.lib or oldnames.lib, are added
      more than 10 times during linking of LLD. That makes the linker slower, as it
      needs to parse the same file again and again.
      
      This patch solves the issue by de-duplicating. The same file will be added only
      once to the input graph. This patch improved the LLD linking time from 10.5
      seconds to 7.7 seconds on my 4-core Core i7 Macbook Pro.
      
      llvm-svn: 196504
      16c025e2
Loading