[all-commits] [llvm/llvm-project] 4646de: [NewPM][CodeGen] Introduce CodeGenPassBuilder to h...
Yuanfang Chen via All-commits
all-commits at lists.llvm.org
Mon Dec 28 17:40:32 PST 2020
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 4646de5d75cfce3da4ddeffb6eb8e66e38238800
https://github.com/llvm/llvm-project/commit/4646de5d75cfce3da4ddeffb6eb8e66e38238800
Author: Yuanfang Chen <yuanfang.chen at sony.com>
Date: 2020-12-28 (Mon, 28 Dec 2020)
Changed paths:
A llvm/include/llvm/CodeGen/CodeGenPassBuilder.h
A llvm/include/llvm/CodeGen/MachinePassRegistry.def
M llvm/include/llvm/CodeGen/TargetPassConfig.h
A llvm/include/llvm/Target/CGPassBuilderOption.h
M llvm/include/llvm/Target/TargetMachine.h
M llvm/lib/CodeGen/CMakeLists.txt
A llvm/lib/CodeGen/CodeGenPassBuilder.cpp
M llvm/lib/CodeGen/LLVMTargetMachine.cpp
M llvm/lib/CodeGen/TargetPassConfig.cpp
Log Message:
-----------
[NewPM][CodeGen] Introduce CodeGenPassBuilder to help build codegen pipeline
Following up on D67687.
Please refer to the RFC here http://lists.llvm.org/pipermail/llvm-dev/2020-July/143309.html
`CodeGenPassBuilder` is the NPM counterpart of `TargetPassConfig` with below differences.
- Debugging features (MIR print/verify, disable pass, start/stop-before/after, etc.) living in `TargetPassConfig` are moved to use PassInstrument as much as possible. (Implementation also lives in `TargetPassConfig.cpp`)
- `TargetPassConfig` is a polymorphic base (virtual inheritance) to build the target-dependent pipeline whereas `CodeGenPassBuilder` is the CRTP base/helper to implement the target-dependent pipeline. The motivation is flexibility for targets to customize the pipeline, inlining opportunity, and fits the overall NPM value semantics design.
- `TargetPassConfig` is a legacy immutable pass to declare hooks for targets to customize some target-independent codegen layer behavior. This is partially ported to TargetMachine::options. The rest, such as `createMachineScheduler/createPostMachineScheduler`, are left out for now. They should be implemented in LLVMTargetMachine in the future.
Reviewed By: arsenm, aeubanks
Differential Revision: https://reviews.llvm.org/D83608
More information about the All-commits
mailing list