[all-commits] [llvm/llvm-project] e188aa: Cleanup header dependencies in LLVMCore

serge-sans-paille via All-commits all-commits at lists.llvm.org
Tue Feb 1 21:56:00 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: e188aae406f3fecaed65a1f7e6562205f0de937e
      https://github.com/llvm/llvm-project/commit/e188aae406f3fecaed65a1f7e6562205f0de937e
  Author: serge-sans-paille <sguelton at redhat.com>
  Date:   2022-02-02 (Wed, 02 Feb 2022)

  Changed paths:
    M clang/lib/CodeGen/CGStmtOpenMP.cpp
    M llvm/examples/IRTransforms/InitializePasses.h
    M llvm/include/llvm-c/Core.h
    M llvm/include/llvm-c/DebugInfo.h
    M llvm/include/llvm/Analysis/AliasAnalysisEvaluator.h
    M llvm/include/llvm/Analysis/CycleAnalysis.h
    M llvm/include/llvm/Analysis/MLInlineAdvisor.h
    M llvm/include/llvm/Analysis/MemoryDependenceAnalysis.h
    M llvm/include/llvm/Analysis/SparsePropagation.h
    M llvm/include/llvm/CodeGen/ReplaceWithVeclib.h
    M llvm/include/llvm/IR/AbstractCallSite.h
    M llvm/include/llvm/IR/Attributes.h
    M llvm/include/llvm/IR/CFG.h
    M llvm/include/llvm/IR/DIBuilder.h
    M llvm/include/llvm/IR/DebugInfoMetadata.h
    M llvm/include/llvm/IR/DiagnosticInfo.h
    M llvm/include/llvm/IR/Dominators.h
    M llvm/include/llvm/IR/IRBuilder.h
    M llvm/include/llvm/IR/IRPrintingPasses.h
    M llvm/include/llvm/IR/Instruction.h
    M llvm/include/llvm/IR/Instructions.h
    M llvm/include/llvm/IR/LLVMContext.h
    M llvm/include/llvm/IR/LLVMRemarkStreamer.h
    M llvm/include/llvm/IR/LegacyPassManager.h
    M llvm/include/llvm/IR/MDBuilder.h
    M llvm/include/llvm/IR/Metadata.h
    M llvm/include/llvm/IR/ModuleSummaryIndex.h
    M llvm/include/llvm/IR/PassManager.h
    M llvm/include/llvm/IR/PassTimingInfo.h
    M llvm/include/llvm/IR/ReplaceConstant.h
    M llvm/include/llvm/IR/SSAContext.h
    M llvm/include/llvm/IR/Statepoint.h
    M llvm/include/llvm/IR/Type.h
    M llvm/include/llvm/IR/Use.h
    M llvm/include/llvm/Transforms/AggressiveInstCombine/AggressiveInstCombine.h
    M llvm/include/llvm/Transforms/IPO/AlwaysInliner.h
    M llvm/include/llvm/Transforms/IPO/ForceFunctionAttrs.h
    M llvm/include/llvm/Transforms/IPO/InferFunctionAttrs.h
    M llvm/include/llvm/Transforms/IPO/SampleProfile.h
    M llvm/include/llvm/Transforms/Instrumentation/AddressSanitizer.h
    M llvm/include/llvm/Transforms/Instrumentation/BoundsChecking.h
    M llvm/include/llvm/Transforms/Instrumentation/HWAddressSanitizer.h
    M llvm/include/llvm/Transforms/Instrumentation/MemProfiler.h
    M llvm/include/llvm/Transforms/Scalar/Scalarizer.h
    M llvm/include/llvm/Transforms/Scalar/WarnMissedTransforms.h
    M llvm/include/llvm/Transforms/Utils/AssumeBundleBuilder.h
    M llvm/include/llvm/Transforms/Utils/Debugify.h
    M llvm/include/llvm/Transforms/Utils/InjectTLIMappings.h
    M llvm/include/llvm/Transforms/Vectorize/LoadStoreVectorizer.h
    M llvm/lib/IR/Attributes.cpp
    M llvm/lib/IR/AutoUpgrade.cpp
    M llvm/lib/IR/BasicBlock.cpp
    M llvm/lib/IR/Comdat.cpp
    M llvm/lib/IR/ConstantFold.cpp
    M llvm/lib/IR/Constants.cpp
    M llvm/lib/IR/Core.cpp
    M llvm/lib/IR/DIBuilder.cpp
    M llvm/lib/IR/DataLayout.cpp
    M llvm/lib/IR/DebugInfo.cpp
    M llvm/lib/IR/DebugInfoMetadata.cpp
    M llvm/lib/IR/DebugLoc.cpp
    M llvm/lib/IR/DiagnosticInfo.cpp
    M llvm/lib/IR/Dominators.cpp
    M llvm/lib/IR/Function.cpp
    M llvm/lib/IR/Globals.cpp
    M llvm/lib/IR/IRBuilder.cpp
    M llvm/lib/IR/InlineAsm.cpp
    M llvm/lib/IR/Instruction.cpp
    M llvm/lib/IR/IntrinsicInst.cpp
    M llvm/lib/IR/LLVMContext.cpp
    M llvm/lib/IR/LLVMContextImpl.cpp
    M llvm/lib/IR/LLVMContextImpl.h
    M llvm/lib/IR/LLVMRemarkStreamer.cpp
    M llvm/lib/IR/LegacyPassManager.cpp
    M llvm/lib/IR/Metadata.cpp
    M llvm/lib/IR/Module.cpp
    M llvm/lib/IR/ModuleSummaryIndex.cpp
    M llvm/lib/IR/Operator.cpp
    M llvm/lib/IR/OptBisect.cpp
    M llvm/lib/IR/PassManager.cpp
    M llvm/lib/IR/ProfileSummary.cpp
    M llvm/lib/IR/PseudoProbe.cpp
    M llvm/lib/IR/ReplaceConstant.cpp
    M llvm/lib/IR/SSAContext.cpp
    M llvm/lib/IR/SafepointIRVerifier.cpp
    M llvm/lib/IR/Statepoint.cpp
    M llvm/lib/IR/Type.cpp
    M llvm/lib/IR/Use.cpp
    M llvm/lib/IR/Value.cpp
    M llvm/lib/IR/Verifier.cpp
    M llvm/lib/LTO/LTO.cpp
    M llvm/lib/LTO/LTOBackend.cpp
    M llvm/lib/Target/AMDGPU/AMDGPU.h
    M llvm/lib/Target/AMDGPU/AMDGPULibCalls.cpp
    M llvm/lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp
    M llvm/lib/Target/X86/X86LowerAMXType.cpp
    M llvm/lib/Transforms/Coroutines/CoroFrame.cpp
    M llvm/lib/Transforms/IPO/CalledValuePropagation.cpp
    M llvm/lib/Transforms/IPO/LowerTypeTests.cpp
    M llvm/lib/Transforms/IPO/SampleProfileProbe.cpp
    M llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
    M llvm/lib/Transforms/Instrumentation/MemProfiler.cpp
    M llvm/lib/Transforms/Scalar/SROA.cpp
    M llvm/lib/Transforms/Utils/CodeExtractor.cpp
    M llvm/lib/Transforms/Utils/InlineFunction.cpp
    M llvm/lib/Transforms/Utils/Local.cpp
    M llvm/lib/Transforms/Utils/NameAnonGlobals.cpp
    M llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
    M llvm/lib/Transforms/Utils/Utils.cpp
    M llvm/lib/Transforms/Utils/VNCoercion.cpp
    M llvm/lib/Transforms/Vectorize/Vectorize.cpp
    M llvm/tools/llvm-c-test/echo.cpp
    M llvm/tools/llvm-extract/llvm-extract.cpp
    M llvm/tools/llvm-stress/llvm-stress.cpp
    M llvm/unittests/ExecutionEngine/MCJIT/MCJITTestAPICommon.h
    M llvm/unittests/IR/TimePassesTest.cpp
    M llvm/unittests/Transforms/Utils/LocalTest.cpp
    M polly/include/polly/Support/DumpFunctionPass.h

  Log Message:
  -----------
  Cleanup header dependencies in LLVMCore

Based on the output of include-what-you-use.

This is a big chunk of changes. It is very likely to break downstream code
unless they took a lot of care in avoiding hidden ehader dependencies, something
the LLVM codebase doesn't do that well :-/

I've tried to summarize the biggest change below:

- llvm/include/llvm-c/Core.h: no longer includes llvm-c/ErrorHandling.h
- llvm/IR/DIBuilder.h no longer includes llvm/IR/DebugInfo.h
- llvm/IR/IRBuilder.h no longer includes llvm/IR/IntrinsicInst.h
- llvm/IR/LLVMRemarkStreamer.h no longer includes llvm/Support/ToolOutputFile.h
- llvm/IR/LegacyPassManager.h no longer include llvm/Pass.h
- llvm/IR/Type.h no longer includes llvm/ADT/SmallPtrSet.h
- llvm/IR/PassManager.h no longer includes llvm/Pass.h nor llvm/Support/Debug.h

And the usual count of preprocessed lines:
$ clang++ -E  -Iinclude -I../llvm/include ../llvm/lib/IR/*.cpp -std=c++14 -fno-rtti -fno-exceptions | wc -l
before: 6400831
after:  6189948

200k lines less to process is no that bad ;-)

Discourse thread on the topic: https://llvm.discourse.group/t/include-what-you-use-include-cleanup

Differential Revision: https://reviews.llvm.org/D118652




More information about the All-commits mailing list