summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2017-03-16 16:38:22 +0000
committerAdrian Prantl <aprantl@apple.com>2017-03-16 16:38:22 +0000
commitc5b3351750c74b192d1fb31de291494fa8db97b2 (patch)
treefb8481c4d203f771b59433bb62d17c513e46bf66 /llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
parent3e54835ad75271d4420feb9a0e29b23b28d03ef5 (diff)
downloadbcm5719-llvm-c5b3351750c74b192d1fb31de291494fa8db97b2.tar.gz
bcm5719-llvm-c5b3351750c74b192d1fb31de291494fa8db97b2.zip
Revert "PR32288: More efficient encoding for DWARF expr subregister access."
This reverts commit 2bf453116889a576956892ea9683db4fcd96e30e while investigating buildbot breakage. llvm-svn: 297962
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp31
1 files changed, 2 insertions, 29 deletions
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) {
OpenPOWER on IntegriCloud