Skip to content
  • Reid Kleckner's avatar
    Sink all InitializePasses.h includes · 05da2fe5
    Reid Kleckner authored
    This file lists every pass in LLVM, and is included by Pass.h, which is
    very popular. Every time we add, remove, or rename a pass in LLVM, it
    caused lots of recompilation.
    
    I found this fact by looking at this table, which is sorted by the
    number of times a file was changed over the last 100,000 git commits
    multiplied by the number of object files that depend on it in the
    current checkout:
      recompiles    touches affected_files  header
      342380        95      3604    llvm/include/llvm/ADT/STLExtras.h
      314730        234     1345    llvm/include/llvm/InitializePasses.h
      307036        118     2602    llvm/include/llvm/ADT/APInt.h
      213049        59      3611    llvm/include/llvm/Support/MathExtras.h
      170422        47      3626    llvm/include/llvm/Support/Compiler.h
      162225        45      3605    llvm/include/llvm/ADT/Optional.h
      158319        63      2513    llvm/include/llvm/ADT/Triple.h
      140322        39      3598    llvm/include/llvm/ADT/StringRef.h
      137647        59      2333    llvm/include/llvm/Support/Error.h
      131619        73      1803    llvm/include/llvm/Support/FileSystem.h
    
    Before this change, touching InitializePasses.h would cause 1345 files
    to recompile. After this change, touching it only causes 550 compiles in
    an incremental rebuild.
    
    Reviewers: bkramer, asbirlea, bollu, jdoerfert
    
    Differential Revision: https://reviews.llvm.org/D70211
    05da2fe5
Loading