From c5b3351750c74b192d1fb31de291494fa8db97b2 Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Thu, 16 Mar 2017 16:38:22 +0000 Subject: Revert "PR32288: More efficient encoding for DWARF expr subregister access." This reverts commit 2bf453116889a576956892ea9683db4fcd96e30e while investigating buildbot breakage. llvm-svn: 297962 --- llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp | 31 ++----------------------- 1 file changed, 2 insertions(+), 29 deletions(-) (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp') diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp index caf0bc0f258..43c98442d8b 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp @@ -66,12 +66,6 @@ void DwarfExpression::AddShr(unsigned ShiftBy) { EmitOp(dwarf::DW_OP_shr); } -void DwarfExpression::AddAnd(unsigned Mask) { - EmitOp(dwarf::DW_OP_constu); - EmitUnsigned(Mask); - EmitOp(dwarf::DW_OP_and); -} - bool DwarfExpression::AddMachineRegIndirect(const TargetRegisterInfo &TRI, unsigned MachineReg, int Offset) { if (isFrameRegister(TRI, MachineReg)) { @@ -236,12 +230,6 @@ void DwarfExpression::AddExpression(DIExpressionCursor &&ExprCursor, unsigned FragmentOffsetInBits) { while (ExprCursor) { auto Op = ExprCursor.take(); - - // If we need to mask out a subregister, do it now, unless the next - // operation would emit an OpPiece anyway. - if (SubRegisterSizeInBits && Op->getOp() != dwarf::DW_OP_LLVM_fragment) - maskSubRegister(); - switch (Op->getOp()) { case dwarf::DW_OP_LLVM_fragment: { unsigned SizeInBits = Op->getArg(1); @@ -297,24 +285,9 @@ void DwarfExpression::AddExpression(DIExpressionCursor &&ExprCursor, } } -/// Add masking operations to stencil out a subregister. -void DwarfExpression::maskSubRegister() { - assert(SubRegisterSizeInBits && "no subregister was registered"); - if (SubRegisterOffsetInBits > 0) - AddShr(SubRegisterOffsetInBits); - uint64_t Mask = (1UL << SubRegisterSizeInBits) - 1; - AddAnd(Mask); -} - - void DwarfExpression::finalize() { - // Emit any outstanding DW_OP_piece operations to mask out subregisters. - if (SubRegisterSizeInBits == 0) - return; - // Don't emit a DW_OP_piece for a subregister at offset 0. - if (SubRegisterOffsetInBits == 0) - return; - AddOpPiece(SubRegisterSizeInBits, SubRegisterOffsetInBits); + if (SubRegisterSizeInBits) + AddOpPiece(SubRegisterSizeInBits, SubRegisterOffsetInBits); } void DwarfExpression::addFragmentOffset(const DIExpression *Expr) { -- cgit v1.2.3