aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/IR/LLVMContext.cpp
diff options
context:
space:
mode:
authorpaperchalice <liujunchang97@outlook.com>2024-04-30 09:54:48 +0800
committerGitHub <noreply@github.com>2024-04-30 09:54:48 +0800
commit6ea0c0a28343b2676baf480db490b5a27fa11d7c (patch)
treef00243ace9e105d4acf60987f9a218b0809ac8af /llvm/lib/IR/LLVMContext.cpp
parentb1867e18c346e9621e14270bea2d1acb7d2a9ce0 (diff)
downloadllvm-6ea0c0a28343b2676baf480db490b5a27fa11d7c.zip
llvm-6ea0c0a28343b2676baf480db490b5a27fa11d7c.tar.gz
llvm-6ea0c0a28343b2676baf480db490b5a27fa11d7c.tar.bz2
[NewPM][CodeGen] Add `MachineFunctionAnalysis` (#88610)
In new pass system, `MachineFunction` could be an analysis result again, machine module pass can now fetch them from analysis manager. `MachineModuleInfo` no longer owns them. Remove `FreeMachineFunctionPass`, replaced by `InvalidateAnalysisPass<MachineFunctionAnalysis>`. Now `FreeMachineFunction` is replaced by `InvalidateAnalysisPass<MachineFunctionAnalysis>`, the workaround in `MachineFunctionPassManager` is no longer needed, there is no difference between `unittests/MIR/PassBuilderCallbacksTest.cpp` and `unittests/IR/PassBuilderCallbacksTest.cpp`.
Diffstat (limited to 'llvm/lib/IR/LLVMContext.cpp')
-rw-r--r--llvm/lib/IR/LLVMContext.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/IR/LLVMContext.cpp b/llvm/lib/IR/LLVMContext.cpp
index 57077e7..8120ccc 100644
--- a/llvm/lib/IR/LLVMContext.cpp
+++ b/llvm/lib/IR/LLVMContext.cpp
@@ -118,6 +118,13 @@ void LLVMContext::addModule(Module *M) {
void LLVMContext::removeModule(Module *M) {
pImpl->OwnedModules.erase(M);
+ pImpl->MachineFunctionNums.erase(M);
+}
+
+unsigned LLVMContext::generateMachineFunctionNum(Function &F) {
+ Module *M = F.getParent();
+ assert(pImpl->OwnedModules.contains(M) && "Unexpected module!");
+ return pImpl->MachineFunctionNums[M]++;
}
//===----------------------------------------------------------------------===//