LLVM: lib/CodeGen/FinalizeISel.cpp Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
25using namespace llvm;
26
27#define DEBUG_TYPE "finalize-isel"
28
29namespace {
31 public:
32 static char ID;
34
35 private:
37
38 void getAnalysisUsage(AnalysisUsage &AU) const override {
40 }
41 };
42}
43
49
51
52
56 MBBI != MBBE; ) {
58
59
60
61 if (TII->isFrameInstr(MI) || MI.isStackAligningInlineAsm())
63
64
65 if (MI.usesCustomInsertionHook()) {
68
69 if (NewMBB != MBB) {
71 MBB = NewMBB;
74 MBBE = NewMBB->end();
75 }
76 }
77 }
78 }
80}
81
82char FinalizeISel::ID = 0;
85 "Finalize ISel and expand pseudo-instructions", false, false)
86
89}
90
const TargetInstrInfo & TII
MachineBasicBlock MachineBasicBlock::iterator MBBI
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
static bool runImpl(Function &F, const TargetLowering &TLI, const LibcallLoweringInfo &Libcalls, AssumptionCache *AC)
static std::pair< bool, bool > runImpl(MachineFunction &MF)
Definition FinalizeISel.cpp:44
#define INITIALIZE_PASS(passName, arg, name, cfg, analysis)
This file describes how to lower LLVM code to machine code.
Represent the analysis usage information of a pass.
Represents analyses that only rely on functions' control flow.
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &)
Definition FinalizeISel.cpp:91
MachineInstrBundleIterator< MachineInstr > iterator
void setAdjustsStack(bool V)
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
const TargetSubtargetInfo & getSubtarget() const
getSubtarget - Return the subtarget for which this machine code is being compiled.
MachineFrameInfo & getFrameInfo()
getFrameInfo - Return the frame info object for the current function.
BasicBlockListType::iterator iterator
Representation of each machine instruction.
A set of analyses that are preserved following a run of a transformation pass.
static PreservedAnalyses all()
Construct a special preserved set that preserves all passes.
TargetInstrInfo - Interface to description of machine instruction set.
virtual void finalizeLowering(MachineFunction &MF) const
Execute target specific actions to finalize target lowering.
This class defines information used to lower LLVM code to legal SelectionDAG operators that the targe...
virtual MachineBasicBlock * EmitInstrWithCustomInserter(MachineInstr &MI, MachineBasicBlock *MBB) const
This method should be implemented by targets that mark instructions with the 'usesCustomInserter' fla...
virtual const TargetInstrInfo * getInstrInfo() const
virtual const TargetLowering * getTargetLowering() const
self_iterator getIterator()
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
This is an optimization pass for GlobalISel generic memory operations.
AnalysisManager< MachineFunction > MachineFunctionAnalysisManager
LLVM_ABI PreservedAnalyses getMachineFunctionPassPreservedAnalyses()
Returns the minimum set of Analyses that all machine function passes must preserve.
LLVM_ABI char & FinalizeISelID
This pass expands pseudo-instructions, reserves registers and adjusts machine frame information.
Definition FinalizeISel.cpp:83