diff options
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp index 22f458e4b03e..880791a06d93 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp @@ -32,9 +32,9 @@ DbgVariableLocation::extractFromMachineInstruction( DbgVariableLocation Location; if (!Instruction.isDebugValue()) return None; - if (!Instruction.getOperand(0).isReg()) + if (!Instruction.getDebugOperand(0).isReg()) return None; - Location.Register = Instruction.getOperand(0).getReg(); + Location.Register = Instruction.getDebugOperand(0).getReg(); Location.FragmentInfo.reset(); // We only handle expressions generated by DIExpression::appendOffset, // which doesn't require a full stack machine. @@ -124,21 +124,6 @@ MCSymbol *DebugHandlerBase::getLabelAfterInsn(const MachineInstr *MI) { return LabelsAfterInsn.lookup(MI); } -// Return the function-local offset of an instruction. -const MCExpr * -DebugHandlerBase::getFunctionLocalOffsetAfterInsn(const MachineInstr *MI) { - MCContext &MC = Asm->OutContext; - - MCSymbol *Start = Asm->getFunctionBegin(); - const auto *StartRef = MCSymbolRefExpr::create(Start, MC); - - MCSymbol *AfterInsn = getLabelAfterInsn(MI); - assert(AfterInsn && "Expected label after instruction"); - const auto *AfterRef = MCSymbolRefExpr::create(AfterInsn, MC); - - return MCBinaryExpr::createSub(AfterRef, StartRef, MC); -} - /// If this type is derived from a base type then return base type size. uint64_t DebugHandlerBase::getBaseTypeSize(const DIType *Ty) { assert(Ty); @@ -215,7 +200,7 @@ void DebugHandlerBase::beginFunction(const MachineFunction *MF) { continue; auto IsDescribedByReg = [](const MachineInstr *MI) { - return MI->getOperand(0).isReg() && MI->getOperand(0).getReg(); + return MI->getDebugOperand(0).isReg() && MI->getDebugOperand(0).getReg(); }; // The first mention of a function argument gets the CurrentFnBegin label, @@ -297,7 +282,7 @@ void DebugHandlerBase::beginInstruction(const MachineInstr *MI) { if (!PrevLabel) { PrevLabel = MMI->getContext().createTempSymbol(); - Asm->OutStreamer->EmitLabel(PrevLabel); + Asm->OutStreamer->emitLabel(PrevLabel); } I->second = PrevLabel; } @@ -329,7 +314,7 @@ void DebugHandlerBase::endInstruction() { // We need a label after this instruction. if (!PrevLabel) { PrevLabel = MMI->getContext().createTempSymbol(); - Asm->OutStreamer->EmitLabel(PrevLabel); + Asm->OutStreamer->emitLabel(PrevLabel); } I->second = PrevLabel; } @@ -342,3 +327,17 @@ void DebugHandlerBase::endFunction(const MachineFunction *MF) { LabelsBeforeInsn.clear(); LabelsAfterInsn.clear(); } + +void DebugHandlerBase::beginBasicBlock(const MachineBasicBlock &MBB) { + if (!MBB.isBeginSection()) + return; + + PrevLabel = MBB.getSymbol(); +} + +void DebugHandlerBase::endBasicBlock(const MachineBasicBlock &MBB) { + if (!MBB.isEndSection()) + return; + + PrevLabel = nullptr; +} |