Go to the documentation of this file.
14 #ifndef LLVM_CODEGEN_CODEGENCOMMONISEL_H
15 #define LLVM_CODEGEN_CODEGENCOMMONISEL_H
121 return ParentMBB && SuccessMBB && FailureMBB;
125 return ParentMBB && !SuccessMBB && !FailureMBB;
131 bool FunctionBasedInstrumentation) {
134 "already initialized!");
136 if (!FunctionBasedInstrumentation) {
137 SuccessMBB = addSuccessorMBB(
BB,
MBB,
true);
138 FailureMBB = addSuccessorMBB(
BB,
MBB,
false, FailureMBB);
154 SuccessMBB =
nullptr;
214 const TargetInstrInfo &
TII);
227 ArrayRef<MachineOperand *> DbgUsers);
231 #endif // LLVM_CODEGEN_CODEGENCOMMONISEL_H
This is an optimization pass for GlobalISel generic memory operations.
void salvageDebugInfoForDbgValue(const MachineRegisterInfo &MRI, MachineInstr &MI, ArrayRef< MachineOperand * > DbgUsers)
Assuming the instruction MI is going to be deleted, attempt to salvage debug users of MI by writing t...
unsigned getInvertedFPClassTest(unsigned Test)
Evaluates if the specified FP class test is an inversion of a simpler test.
MachineBasicBlock * getSuccessMBB()
LLVM Basic Block Representation.
Encapsulates all of the information needed to generate a stack protector check, and signals to isel w...
const HexagonInstrInfo * TII
void resetPerBBState()
Reset state that changes when we handle different basic blocks.
MachineBasicBlock * getFailureMBB()
bool shouldEmitStackProtector() const
Returns true if all fields of the stack protector descriptor are initialized implying that we should/...
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
@ BasicBlock
Various leaf nodes.
MachineInstrBundleIterator< MachineInstr > iterator
void resetPerFunctionState()
Reset state that only changes when we switch functions.
unsigned const MachineRegisterInfo * MRI
MachineBasicBlock * getParentMBB()
StackProtectorDescriptor()=default
bool shouldEmitFunctionBasedCheckStackProtector() const
void initialize(const BasicBlock *BB, MachineBasicBlock *MBB, bool FunctionBasedInstrumentation)
Initialize the stack protector descriptor structure for a new basic block.
Common register allocation spilling lr str ldr sxth r3 ldr mla r4 can lr mov lr str ldr sxth r3 mla r4 and then merge mul and lr str ldr sxth r3 mla r4 It also increase the likelihood the store may become dead bb27 Successors according to LLVM BB
MachineBasicBlock::iterator findSplitPointForStackProtector(MachineBasicBlock *BB, const TargetInstrInfo &TII)
Find the split point at which to splice the end of BB into its success stack protector check machine ...