From e3b557809604d036af6e00c60f012c2025b59a5e Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Sat, 11 Feb 2023 13:38:04 +0100 Subject: Vendor import of llvm-project main llvmorg-16-init-18548-gb0daacf58f41, the last commit before the upstream release/17.x branch was created. --- llvm/lib/CodeGen/MachineSSAContext.cpp | 42 ++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 5 deletions(-) (limited to 'llvm/lib/CodeGen/MachineSSAContext.cpp') diff --git a/llvm/lib/CodeGen/MachineSSAContext.cpp b/llvm/lib/CodeGen/MachineSSAContext.cpp index 01cea85ecc7c..6de8f8da9254 100644 --- a/llvm/lib/CodeGen/MachineSSAContext.cpp +++ b/llvm/lib/CodeGen/MachineSSAContext.cpp @@ -21,20 +21,52 @@ using namespace llvm; -MachineBasicBlock *MachineSSAContext::getEntryBlock(MachineFunction &F) { - return &F.front(); -} +const Register MachineSSAContext::ValueRefNull{}; void MachineSSAContext::setFunction(MachineFunction &Fn) { MF = &Fn; RegInfo = &MF->getRegInfo(); } -Printable MachineSSAContext::print(MachineBasicBlock *Block) const { +MachineBasicBlock *MachineSSAContext::getEntryBlock(MachineFunction &F) { + return &F.front(); +} + +void MachineSSAContext::appendBlockTerms( + SmallVectorImpl &terms, + const MachineBasicBlock &block) { + for (auto &T : block.terminators()) + terms.push_back(&T); +} + +void MachineSSAContext::appendBlockDefs(SmallVectorImpl &defs, + const MachineBasicBlock &block) { + for (const MachineInstr &instr : block.instrs()) { + for (const MachineOperand &op : instr.operands()) { + if (op.isReg() && op.isDef()) + defs.push_back(op.getReg()); + } + } +} + +/// Get the defining block of a value. +MachineBasicBlock *MachineSSAContext::getDefBlock(Register value) const { + if (!value) + return nullptr; + return RegInfo->getVRegDef(value)->getParent(); +} + +bool MachineSSAContext::isConstantValuePhi(const MachineInstr &Phi) { + return Phi.isConstantValuePHI(); +} + +Printable MachineSSAContext::print(const MachineBasicBlock *Block) const { + if (!Block) + return Printable([](raw_ostream &Out) { Out << ""; }); return Printable([Block](raw_ostream &Out) { Block->printName(Out); }); } -Printable MachineSSAContext::print(MachineInstr *I) const { +Printable MachineSSAContext::print(const MachineInstr *I) const { return Printable([I](raw_ostream &Out) { I->print(Out); }); } -- cgit v1.2.3