Skip to content

Commit 5d8d899

Browse files
committed
[CodeGen][NewPM] Port "FixupStatepointCallerSaved" pass to NPM
1 parent 98542a3 commit 5d8d899

14 files changed

+71
-15
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
//===- llvm/CodeGen/FixupStatepointCallerSaved.h ----------------*- C++ -*-===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#ifndef LLVM_CODEGEN_FIXUPSTATEPOINTCALLERSAVED_H
10+
#define LLVM_CODEGEN_FIXUPSTATEPOINTCALLERSAVED_H
11+
12+
#include "llvm/CodeGen/MachinePassManager.h"
13+
14+
namespace llvm {
15+
16+
class FixupStatepointCallerSavedPass
17+
: public PassInfoMixin<FixupStatepointCallerSavedPass> {
18+
public:
19+
PreservedAnalyses run(MachineFunction &MF,
20+
MachineFunctionAnalysisManager &MFAM);
21+
};
22+
23+
} // namespace llvm
24+
25+
#endif // LLVM_CODEGEN_FIXUPSTATEPOINTCALLERSAVED_H

llvm/include/llvm/InitializePasses.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ void initializeFEntryInserterPass(PassRegistry &);
116116
void initializeFinalizeISelPass(PassRegistry &);
117117
void initializeFinalizeMachineBundlesPass(PassRegistry &);
118118
void initializeFixIrreduciblePass(PassRegistry &);
119-
void initializeFixupStatepointCallerSavedPass(PassRegistry &);
119+
void initializeFixupStatepointCallerSavedLegacyPass(PassRegistry &);
120120
void initializeFlattenCFGLegacyPassPass(PassRegistry &);
121121
void initializeFuncletLayoutPass(PassRegistry &);
122122
void initializeGCEmptyBasicBlocksPass(PassRegistry &);

llvm/include/llvm/Passes/CodeGenPassBuilder.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include "llvm/CodeGen/ExpandMemCmp.h"
3434
#include "llvm/CodeGen/ExpandReductions.h"
3535
#include "llvm/CodeGen/FinalizeISel.h"
36+
#include "llvm/CodeGen/FixupStatepointCallerSaved.h"
3637
#include "llvm/CodeGen/GCMetadata.h"
3738
#include "llvm/CodeGen/GlobalMerge.h"
3839
#include "llvm/CodeGen/GlobalMergeFunctions.h"

llvm/include/llvm/Passes/MachinePassRegistry.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ MACHINE_FUNCTION_PASS("early-ifcvt", EarlyIfConverterPass())
141141
MACHINE_FUNCTION_PASS("early-machinelicm", EarlyMachineLICMPass())
142142
MACHINE_FUNCTION_PASS("early-tailduplication", EarlyTailDuplicatePass())
143143
MACHINE_FUNCTION_PASS("finalize-isel", FinalizeISelPass())
144+
MACHINE_FUNCTION_PASS("fixup-statepoint-caller-saved", FixupStatepointCallerSavedPass())
144145
MACHINE_FUNCTION_PASS("localstackalloc", LocalStackSlotAllocationPass())
145146
MACHINE_FUNCTION_PASS("machine-cp", MachineCopyPropagationPass())
146147
MACHINE_FUNCTION_PASS("machine-cse", MachineCSEPass())
@@ -231,7 +232,6 @@ DUMMY_MACHINE_FUNCTION_PASS("cfi-instr-inserter", CFIInstrInserterPass)
231232
DUMMY_MACHINE_FUNCTION_PASS("detect-dead-lanes", DetectDeadLanesPass)
232233
DUMMY_MACHINE_FUNCTION_PASS("dot-machine-cfg", MachineCFGPrinter)
233234
DUMMY_MACHINE_FUNCTION_PASS("fentry-insert", FEntryInserterPass)
234-
DUMMY_MACHINE_FUNCTION_PASS("fixup-statepoint-caller-saved", FixupStatepointCallerSavedPass)
235235
DUMMY_MACHINE_FUNCTION_PASS("fs-profile-loader", MIRProfileLoaderNewPass)
236236
DUMMY_MACHINE_FUNCTION_PASS("funclet-layout", FuncletLayoutPass)
237237
DUMMY_MACHINE_FUNCTION_PASS("gc-empty-basic-blocks", GCEmptyBasicBlocksPass)

llvm/lib/CodeGen/CodeGen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
4646
initializeFEntryInserterPass(Registry);
4747
initializeFinalizeISelPass(Registry);
4848
initializeFinalizeMachineBundlesPass(Registry);
49-
initializeFixupStatepointCallerSavedPass(Registry);
49+
initializeFixupStatepointCallerSavedLegacyPass(Registry);
5050
initializeFuncletLayoutPass(Registry);
5151
initializeGCMachineCodeAnalysisPass(Registry);
5252
initializeGCModuleInfoPass(Registry);

llvm/lib/CodeGen/FixupStatepointCallerSaved.cpp

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
///
2121
//===----------------------------------------------------------------------===//
2222

23+
#include "llvm/CodeGen/FixupStatepointCallerSaved.h"
2324
#include "llvm/ADT/SmallSet.h"
2425
#include "llvm/ADT/Statistic.h"
2526
#include "llvm/CodeGen/MachineFrameInfo.h"
@@ -58,14 +59,18 @@ static cl::opt<unsigned> MaxStatepointsWithRegs(
5859

5960
namespace {
6061

61-
class FixupStatepointCallerSaved : public MachineFunctionPass {
62+
struct FixupStatepointCallerSavedImpl {
63+
bool run(MachineFunction &MF);
64+
};
65+
66+
class FixupStatepointCallerSavedLegacy : public MachineFunctionPass {
6267
public:
6368
static char ID;
6469

65-
FixupStatepointCallerSaved() : MachineFunctionPass(ID) {
66-
initializeFixupStatepointCallerSavedPass(*PassRegistry::getPassRegistry());
70+
FixupStatepointCallerSavedLegacy() : MachineFunctionPass(ID) {
71+
initializeFixupStatepointCallerSavedLegacyPass(
72+
*PassRegistry::getPassRegistry());
6773
}
68-
6974
void getAnalysisUsage(AnalysisUsage &AU) const override {
7075
AU.setPreservesCFG();
7176
MachineFunctionPass::getAnalysisUsage(AU);
@@ -80,12 +85,12 @@ class FixupStatepointCallerSaved : public MachineFunctionPass {
8085

8186
} // End anonymous namespace.
8287

83-
char FixupStatepointCallerSaved::ID = 0;
84-
char &llvm::FixupStatepointCallerSavedID = FixupStatepointCallerSaved::ID;
88+
char FixupStatepointCallerSavedLegacy::ID = 0;
89+
char &llvm::FixupStatepointCallerSavedID = FixupStatepointCallerSavedLegacy::ID;
8590

86-
INITIALIZE_PASS_BEGIN(FixupStatepointCallerSaved, DEBUG_TYPE,
91+
INITIALIZE_PASS_BEGIN(FixupStatepointCallerSavedLegacy, DEBUG_TYPE,
8792
"Fixup Statepoint Caller Saved", false, false)
88-
INITIALIZE_PASS_END(FixupStatepointCallerSaved, DEBUG_TYPE,
93+
INITIALIZE_PASS_END(FixupStatepointCallerSavedLegacy, DEBUG_TYPE,
8994
"Fixup Statepoint Caller Saved", false, false)
9095

9196
// Utility function to get size of the register.
@@ -588,10 +593,7 @@ class StatepointProcessor {
588593
};
589594
} // namespace
590595

591-
bool FixupStatepointCallerSaved::runOnMachineFunction(MachineFunction &MF) {
592-
if (skipFunction(MF.getFunction()))
593-
return false;
594-
596+
bool FixupStatepointCallerSavedImpl::run(MachineFunction &MF) {
595597
const Function &F = MF.getFunction();
596598
if (!F.hasGC())
597599
return false;
@@ -618,3 +620,23 @@ bool FixupStatepointCallerSaved::runOnMachineFunction(MachineFunction &MF) {
618620
}
619621
return Changed;
620622
}
623+
624+
bool FixupStatepointCallerSavedLegacy::runOnMachineFunction(
625+
MachineFunction &MF) {
626+
if (skipFunction(MF.getFunction()))
627+
return false;
628+
629+
return FixupStatepointCallerSavedImpl().run(MF);
630+
}
631+
632+
PreservedAnalyses
633+
FixupStatepointCallerSavedPass::run(MachineFunction &MF,
634+
MachineFunctionAnalysisManager &MFAM) {
635+
636+
if (!FixupStatepointCallerSavedImpl().run(MF))
637+
return PreservedAnalyses::all();
638+
639+
auto PA = getMachineFunctionPassPreservedAnalyses();
640+
PA.preserveSet<CFGAnalyses>();
641+
return PA;
642+
}

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@
9191
#include "llvm/CodeGen/ExpandLargeFpConvert.h"
9292
#include "llvm/CodeGen/ExpandMemCmp.h"
9393
#include "llvm/CodeGen/FinalizeISel.h"
94+
#include "llvm/CodeGen/FixupStatepointCallerSaved.h"
9495
#include "llvm/CodeGen/GCMetadata.h"
9596
#include "llvm/CodeGen/GlobalMerge.h"
9697
#include "llvm/CodeGen/GlobalMergeFunctions.h"

llvm/test/CodeGen/X86/statepoint-fixup-call.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
22
# RUN: llc -o - %s -fixup-allow-gcptr-in-csr=false -run-pass fixup-statepoint-caller-saved | FileCheck %s
3+
# RUN: llc -o - %s -fixup-allow-gcptr-in-csr=false -passes="fixup-statepoint-caller-saved" | FileCheck %s
34
--- |
45
; ModuleID = 'test/CodeGen/X86/statepoint-fixup-call.ll'
56
source_filename = "test/CodeGen/X86/statepoint-fixup-call.ll"

llvm/test/CodeGen/X86/statepoint-fixup-copy-prop-neg.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
22
# RUN: llc -o - %s -run-pass fixup-statepoint-caller-saved -verify-machineinstrs | FileCheck %s
3+
# RUN: llc -o - %s -passes="fixup-statepoint-caller-saved" | FileCheck %s
34

45
# Check that COPY is not eliminated if dest register is used in
56
# non-meta arguments of statepoint.

llvm/test/CodeGen/X86/statepoint-fixup-copy-prop.mir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# RUN: llc -o - %s -run-pass fixup-statepoint-caller-saved -verify-machineinstrs | FileCheck %s
2+
# RUN: llc -o - %s -passes="fixup-statepoint-caller-saved" | FileCheck %s
23

34
--- |
45
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"

0 commit comments

Comments
 (0)