[PATCH] D70211: Sink all InitializePasses.h includes

Reid Kleckner via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 13 15:09:01 PST 2019


rnk created this revision.
rnk added reviewers: bkramer, asbirlea.
Herald added subscribers: sameer.abuasal, pzheng, s.egerton, lenary, Petar.Avramovic, jsji, jocewei, PkmX, tpr, arphaman, dexonsmith, george.burgess.iv, the_o, brucehoult, MartinMosbeck, rogfer01, steven_wu, atanasyan, edward-jones, zzheng, MaskRay, jrtc27, niosHD, sabuasal, apazos, simoncook, johnrusso, rbar, asb, javed.absar, kbarton, aheejin, hiraditya, eraman, jgravelle-google, sbc100, nhaehnle, jvesely, nemanjai, sdardis, mehdi_amini, dschuff, arsenm, qcolombet, MatzeB.
Herald added a reviewer: bollu.
Herald added a reviewer: jdoerfert.
Herald added a project: LLVM.

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.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D70211

Files:
  llvm/examples/IRTransforms/SimplifyCFG.cpp
  llvm/include/llvm/Analysis/AliasAnalysis.h
  llvm/include/llvm/Analysis/BranchProbabilityInfo.h
  llvm/include/llvm/Analysis/DependenceAnalysis.h
  llvm/include/llvm/Analysis/IntervalPartition.h
  llvm/include/llvm/Analysis/LazyValueInfo.h
  llvm/include/llvm/Analysis/LegacyDivergenceAnalysis.h
  llvm/include/llvm/Analysis/LoopAccessAnalysis.h
  llvm/include/llvm/Analysis/LoopInfo.h
  llvm/include/llvm/Analysis/LoopPass.h
  llvm/include/llvm/Analysis/PostDominators.h
  llvm/include/llvm/CodeGen/GlobalISel/CSEInfo.h
  llvm/include/llvm/CodeGen/LiveStacks.h
  llvm/include/llvm/CodeGen/LiveVariables.h
  llvm/include/llvm/CodeGen/MachineBranchProbabilityInfo.h
  llvm/include/llvm/CodeGen/MachineLoopInfo.h
  llvm/include/llvm/CodeGen/MachinePipeliner.h
  llvm/include/llvm/CodeGen/ReachingDefAnalysis.h
  llvm/include/llvm/CodeGen/RegisterUsageInfo.h
  llvm/include/llvm/CodeGen/SlotIndexes.h
  llvm/include/llvm/CodeGen/StackProtector.h
  llvm/include/llvm/IR/Dominators.h
  llvm/include/llvm/Pass.h
  llvm/include/llvm/Transforms/InstCombine/InstCombine.h
  llvm/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h
  llvm/lib/Analysis/AliasAnalysis.cpp
  llvm/lib/Analysis/AliasAnalysisEvaluator.cpp
  llvm/lib/Analysis/AliasSetTracker.cpp
  llvm/lib/Analysis/AssumptionCache.cpp
  llvm/lib/Analysis/BasicAliasAnalysis.cpp
  llvm/lib/Analysis/BlockFrequencyInfo.cpp
  llvm/lib/Analysis/BranchProbabilityInfo.cpp
  llvm/lib/Analysis/CFGPrinter.cpp
  llvm/lib/Analysis/CFLAndersAliasAnalysis.cpp
  llvm/lib/Analysis/CFLSteensAliasAnalysis.cpp
  llvm/lib/Analysis/CallGraph.cpp
  llvm/lib/Analysis/CallPrinter.cpp
  llvm/lib/Analysis/CostModel.cpp
  llvm/lib/Analysis/Delinearization.cpp
  llvm/lib/Analysis/DemandedBits.cpp
  llvm/lib/Analysis/DependenceAnalysis.cpp
  llvm/lib/Analysis/DomPrinter.cpp
  llvm/lib/Analysis/DominanceFrontier.cpp
  llvm/lib/Analysis/GlobalsModRef.cpp
  llvm/lib/Analysis/IVUsers.cpp
  llvm/lib/Analysis/InstCount.cpp
  llvm/lib/Analysis/IntervalPartition.cpp
  llvm/lib/Analysis/LazyBlockFrequencyInfo.cpp
  llvm/lib/Analysis/LazyBranchProbabilityInfo.cpp
  llvm/lib/Analysis/LazyValueInfo.cpp
  llvm/lib/Analysis/LegacyDivergenceAnalysis.cpp
  llvm/lib/Analysis/Lint.cpp
  llvm/lib/Analysis/LoopAccessAnalysis.cpp
  llvm/lib/Analysis/LoopInfo.cpp
  llvm/lib/Analysis/LoopPass.cpp
  llvm/lib/Analysis/MemDepPrinter.cpp
  llvm/lib/Analysis/MemDerefPrinter.cpp
  llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
  llvm/lib/Analysis/MemorySSA.cpp
  llvm/lib/Analysis/ModuleDebugInfoPrinter.cpp
  llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
  llvm/lib/Analysis/MustExecute.cpp
  llvm/lib/Analysis/OptimizationRemarkEmitter.cpp
  llvm/lib/Analysis/PhiValues.cpp
  llvm/lib/Analysis/PostDominators.cpp
  llvm/lib/Analysis/ProfileSummaryInfo.cpp
  llvm/lib/Analysis/RegionInfo.cpp
  llvm/lib/Analysis/RegionPrinter.cpp
  llvm/lib/Analysis/ScalarEvolution.cpp
  llvm/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp
  llvm/lib/Analysis/ScopedNoAliasAA.cpp
  llvm/lib/Analysis/StackSafetyAnalysis.cpp
  llvm/lib/Analysis/TargetLibraryInfo.cpp
  llvm/lib/Analysis/TargetTransformInfo.cpp
  llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp
  llvm/lib/Bitcode/Writer/BitcodeWriterPass.cpp
  llvm/lib/CodeGen/AtomicExpandPass.cpp
  llvm/lib/CodeGen/BranchFolding.cpp
  llvm/lib/CodeGen/BranchRelaxation.cpp
  llvm/lib/CodeGen/BreakFalseDeps.cpp
  llvm/lib/CodeGen/CFGuardLongjmp.cpp
  llvm/lib/CodeGen/CFIInstrInserter.cpp
  llvm/lib/CodeGen/CodeGenPrepare.cpp
  llvm/lib/CodeGen/DeadMachineInstructionElim.cpp
  llvm/lib/CodeGen/DwarfEHPrepare.cpp
  llvm/lib/CodeGen/EarlyIfConversion.cpp
  llvm/lib/CodeGen/EdgeBundles.cpp
  llvm/lib/CodeGen/ExpandMemCmp.cpp
  llvm/lib/CodeGen/ExpandPostRAPseudos.cpp
  llvm/lib/CodeGen/ExpandReductions.cpp
  llvm/lib/CodeGen/FEntryInserter.cpp
  llvm/lib/CodeGen/FinalizeISel.cpp
  llvm/lib/CodeGen/FuncletLayout.cpp
  llvm/lib/CodeGen/GCMetadata.cpp
  llvm/lib/CodeGen/GCRootLowering.cpp
  llvm/lib/CodeGen/GlobalISel/CSEInfo.cpp
  llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
  llvm/lib/CodeGen/GlobalISel/Legalizer.cpp
  llvm/lib/CodeGen/GlobalISel/Localizer.cpp
  llvm/lib/CodeGen/GlobalISel/RegBankSelect.cpp
  llvm/lib/CodeGen/GlobalMerge.cpp
  llvm/lib/CodeGen/HardwareLoops.cpp
  llvm/lib/CodeGen/IfConversion.cpp
  llvm/lib/CodeGen/ImplicitNullChecks.cpp
  llvm/lib/CodeGen/IndirectBrExpandPass.cpp
  llvm/lib/CodeGen/InterleavedAccessPass.cpp
  llvm/lib/CodeGen/InterleavedLoadCombinePass.cpp
  llvm/lib/CodeGen/LazyMachineBlockFrequencyInfo.cpp
  llvm/lib/CodeGen/LiveDebugValues.cpp
  llvm/lib/CodeGen/LiveDebugVariables.cpp
  llvm/lib/CodeGen/LiveRangeShrink.cpp
  llvm/lib/CodeGen/LiveRegMatrix.cpp
  llvm/lib/CodeGen/LocalStackSlotAllocation.cpp
  llvm/lib/CodeGen/LowerEmuTLS.cpp
  llvm/lib/CodeGen/MIRCanonicalizerPass.cpp
  llvm/lib/CodeGen/MIRNamerPass.cpp
  llvm/lib/CodeGen/MIRPrintingPass.cpp
  llvm/lib/CodeGen/MachineBlockFrequencyInfo.cpp
  llvm/lib/CodeGen/MachineBlockPlacement.cpp
  llvm/lib/CodeGen/MachineBranchProbabilityInfo.cpp
  llvm/lib/CodeGen/MachineCSE.cpp
  llvm/lib/CodeGen/MachineCombiner.cpp
  llvm/lib/CodeGen/MachineCopyPropagation.cpp
  llvm/lib/CodeGen/MachineDominanceFrontier.cpp
  llvm/lib/CodeGen/MachineDominators.cpp
  llvm/lib/CodeGen/MachineFunctionPrinterPass.cpp
  llvm/lib/CodeGen/MachineInstrBundle.cpp
  llvm/lib/CodeGen/MachineLICM.cpp
  llvm/lib/CodeGen/MachineLoopInfo.cpp
  llvm/lib/CodeGen/MachineModuleInfo.cpp
  llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp
  llvm/lib/CodeGen/MachineOutliner.cpp
  llvm/lib/CodeGen/MachinePostDominators.cpp
  llvm/lib/CodeGen/MachineRegionInfo.cpp
  llvm/lib/CodeGen/MachineScheduler.cpp
  llvm/lib/CodeGen/MachineSink.cpp
  llvm/lib/CodeGen/MachineTraceMetrics.cpp
  llvm/lib/CodeGen/MachineVerifier.cpp
  llvm/lib/CodeGen/ModuloSchedule.cpp
  llvm/lib/CodeGen/OptimizePHIs.cpp
  llvm/lib/CodeGen/PatchableFunction.cpp
  llvm/lib/CodeGen/PeepholeOptimizer.cpp
  llvm/lib/CodeGen/PostRAHazardRecognizer.cpp
  llvm/lib/CodeGen/PostRASchedulerList.cpp
  llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp
  llvm/lib/CodeGen/ProcessImplicitDefs.cpp
  llvm/lib/CodeGen/PrologEpilogInserter.cpp
  llvm/lib/CodeGen/RegAllocFast.cpp
  llvm/lib/CodeGen/RegisterCoalescer.cpp
  llvm/lib/CodeGen/RegisterScavenging.cpp
  llvm/lib/CodeGen/RenameIndependentSubregs.cpp
  llvm/lib/CodeGen/ResetMachineFunctionPass.cpp
  llvm/lib/CodeGen/SafeStack.cpp
  llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp
  llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
  llvm/lib/CodeGen/ShadowStackGCLowering.cpp
  llvm/lib/CodeGen/ShrinkWrap.cpp
  llvm/lib/CodeGen/SjLjEHPrepare.cpp
  llvm/lib/CodeGen/SlotIndexes.cpp
  llvm/lib/CodeGen/SpillPlacement.cpp
  llvm/lib/CodeGen/StackColoring.cpp
  llvm/lib/CodeGen/StackMapLivenessAnalysis.cpp
  llvm/lib/CodeGen/StackProtector.cpp
  llvm/lib/CodeGen/StackSlotColoring.cpp
  llvm/lib/CodeGen/TailDuplication.cpp
  llvm/lib/CodeGen/TargetPassConfig.cpp
  llvm/lib/CodeGen/UnreachableBlockElim.cpp
  llvm/lib/CodeGen/WasmEHPrepare.cpp
  llvm/lib/CodeGen/WinEHPrepare.cpp
  llvm/lib/CodeGen/XRayInstrumentation.cpp
  llvm/lib/IR/Core.cpp
  llvm/lib/IR/Dominators.cpp
  llvm/lib/IR/IRPrintingPasses.cpp
  llvm/lib/IR/SafepointIRVerifier.cpp
  llvm/lib/IR/Verifier.cpp
  llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp
  llvm/lib/Target/AArch64/AArch64ConditionalCompares.cpp
  llvm/lib/Target/AArch64/AArch64FalkorHWPFFix.cpp
  llvm/lib/Target/AArch64/AArch64PromoteConstant.cpp
  llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
  llvm/lib/Target/AMDGPU/AMDGPUAnnotateUniformValues.cpp
  llvm/lib/Target/AMDGPU/AMDGPUAtomicOptimizer.cpp
  llvm/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
  llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
  llvm/lib/Target/AMDGPU/AMDGPUInline.cpp
  llvm/lib/Target/AMDGPU/AMDGPULibCalls.cpp
  llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp
  llvm/lib/Target/AMDGPU/AMDGPUPrintfRuntimeBinding.cpp
  llvm/lib/Target/AMDGPU/AMDGPURewriteOutArguments.cpp
  llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
  llvm/lib/Target/AMDGPU/AMDGPUUnifyDivergentExitNodes.cpp
  llvm/lib/Target/AMDGPU/AMDILCFGStructurizer.cpp
  llvm/lib/Target/AMDGPU/GCNNSAReassign.cpp
  llvm/lib/Target/AMDGPU/GCNRegBankReassign.cpp
  llvm/lib/Target/AMDGPU/SIAnnotateControlFlow.cpp
  llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp
  llvm/lib/Target/AMDGPU/SIFormMemoryClauses.cpp
  llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp
  llvm/lib/Target/AMDGPU/SILowerI1Copies.cpp
  llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp
  llvm/lib/Target/AMDGPU/SIOptimizeExecMasking.cpp
  llvm/lib/Target/AMDGPU/SIOptimizeExecMaskingPreRA.cpp
  llvm/lib/Target/AMDGPU/SIPreAllocateWWMRegs.cpp
  llvm/lib/Target/AMDGPU/SIWholeQuadMode.cpp
  llvm/lib/Target/Hexagon/HexagonBitSimplify.cpp
  llvm/lib/Target/Hexagon/HexagonCommonGEP.cpp
  llvm/lib/Target/Hexagon/HexagonConstExtenders.cpp
  llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp
  llvm/lib/Target/Hexagon/HexagonGenExtract.cpp
  llvm/lib/Target/Hexagon/HexagonGenInsert.cpp
  llvm/lib/Target/Hexagon/HexagonGenPredicate.cpp
  llvm/lib/Target/Hexagon/HexagonHardwareLoops.cpp
  llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
  llvm/lib/Target/Hexagon/HexagonNewValueJump.cpp
  llvm/lib/Target/Hexagon/HexagonOptAddrMode.cpp
  llvm/lib/Target/Hexagon/HexagonRDFOpt.cpp
  llvm/lib/Target/Hexagon/HexagonStoreWidening.cpp
  llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
  llvm/lib/Target/Hexagon/HexagonVectorLoopCarriedReuse.cpp
  llvm/lib/Target/Mips/MipsPreLegalizerCombiner.cpp
  llvm/lib/Target/Mips/MipsTargetMachine.cpp
  llvm/lib/Target/PowerPC/PPCBranchCoalescing.cpp
  llvm/lib/Target/PowerPC/PPCCTRLoops.cpp
  llvm/lib/Target/PowerPC/PPCLoopPreIncPrep.cpp
  llvm/lib/Target/PowerPC/PPCMIPeephole.cpp
  llvm/lib/Target/PowerPC/PPCReduceCRLogicals.cpp
  llvm/lib/Target/PowerPC/PPCTLSDynamicCall.cpp
  llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp
  llvm/lib/Target/RISCV/RISCVTargetMachine.cpp
  llvm/lib/Target/WebAssembly/WebAssemblyExceptionInfo.cpp
  llvm/lib/Target/X86/X86AvoidStoreForwardingBlocks.cpp
  llvm/lib/Target/X86/X86CmovConversion.cpp
  llvm/lib/Target/X86/X86FloatingPoint.cpp
  llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp
  llvm/lib/Transforms/Coroutines/CoroElide.cpp
  llvm/lib/Transforms/Coroutines/CoroSplit.cpp
  llvm/lib/Transforms/Coroutines/Coroutines.cpp
  llvm/lib/Transforms/IPO/AlwaysInliner.cpp
  llvm/lib/Transforms/IPO/ArgumentPromotion.cpp
  llvm/lib/Transforms/IPO/Attributor.cpp
  llvm/lib/Transforms/IPO/BarrierNoopPass.cpp
  llvm/lib/Transforms/IPO/BlockExtractor.cpp
  llvm/lib/Transforms/IPO/CalledValuePropagation.cpp
  llvm/lib/Transforms/IPO/ConstantMerge.cpp
  llvm/lib/Transforms/IPO/CrossDSOCFI.cpp
  llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp
  llvm/lib/Transforms/IPO/ElimAvailExtern.cpp
  llvm/lib/Transforms/IPO/ForceFunctionAttrs.cpp
  llvm/lib/Transforms/IPO/FunctionAttrs.cpp
  llvm/lib/Transforms/IPO/FunctionImport.cpp
  (143 more files...)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D70211.229193.patch
Type: text/x-patch
Size: 228353 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191113/33f8fb83/attachment-0001.bin>


More information about the llvm-commits mailing list