diff options
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp index 4f647de1ed2..0971c594220 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp @@ -23,57 +23,6 @@ using namespace llvm; -bool DbgVariableLocation::extractFromMachineInstruction( - DbgVariableLocation &Location, const MachineInstr &Instruction) { - if (!Instruction.isDebugValue()) - return false; - if (!Instruction.getOperand(0).isReg()) - return false; - Location.Register = Instruction.getOperand(0).getReg(); - Location.InMemory = Instruction.getOperand(1).isImm(); - Location.Deref = false; - Location.FragmentInfo.reset(); - // We only handle expressions generated by DIExpression::appendOffset, - // which doesn't require a full stack machine. - int64_t Offset = 0; - const DIExpression *DIExpr = Instruction.getDebugExpression(); - auto Op = DIExpr->expr_op_begin(); - while (Op != DIExpr->expr_op_end()) { - switch (Op->getOp()) { - case dwarf::DW_OP_constu: { - int Value = Op->getArg(0); - ++Op; - if (Op != DIExpr->expr_op_end()) { - switch (Op->getOp()) { - case dwarf::DW_OP_minus: - Offset -= Value; - break; - case dwarf::DW_OP_plus: - Offset += Value; - default: - continue; - } - } - } break; - case dwarf::DW_OP_plus_uconst: - Offset += Op->getArg(0); - break; - case dwarf::DW_OP_LLVM_fragment: - Location.FragmentInfo = {Op->getArg(1), Op->getArg(0)}; - break; - case dwarf::DW_OP_deref: - Location.Deref = true; - break; - default: - return false; - } - ++Op; - } - - Location.Offset = Offset; - return true; -} - DebugHandlerBase::DebugHandlerBase(AsmPrinter *A) : Asm(A), MMI(Asm->MMI) {} // Each LexicalScope has first instruction and last instruction to mark |