Revert "[DebugInfo] Shorten legacy [s|z]ext dwarf expressions"

This reverts commit 2ce36ebca5. It depends
on https://reviews.llvm.org/D89838, which needs to be reverted.
This commit is contained in:
Vedant Kumar 2020-10-28 18:55:37 -07:00
parent 735ab4be35
commit 4fe81b6b6a
3 changed files with 8 additions and 5 deletions

View File

@ -642,12 +642,14 @@ void DwarfExpression::addFragmentOffset(const DIExpression *Expr) {
void DwarfExpression::emitLegacySExt(unsigned FromBits) {
// (((X >> (FromBits - 1)) * (~0)) << FromBits) | X
emitOp(dwarf::DW_OP_dup);
emitConstu(FromBits - 1);
emitOp(dwarf::DW_OP_constu);
emitUnsigned(FromBits - 1);
emitOp(dwarf::DW_OP_shr);
emitOp(dwarf::DW_OP_lit0);
emitOp(dwarf::DW_OP_not);
emitOp(dwarf::DW_OP_mul);
emitConstu(FromBits);
emitOp(dwarf::DW_OP_constu);
emitUnsigned(FromBits);
emitOp(dwarf::DW_OP_shl);
emitOp(dwarf::DW_OP_or);
}
@ -655,7 +657,8 @@ void DwarfExpression::emitLegacySExt(unsigned FromBits) {
void DwarfExpression::emitLegacyZExt(unsigned FromBits, unsigned ToBits) {
if (FromBits < 64) {
// X & ((1 << FromBits) - 1)
emitConstu((1ULL << FromBits) - 1);
emitOp(dwarf::DW_OP_constu);
emitUnsigned((1ULL << FromBits) - 1);
emitOp(dwarf::DW_OP_and);
} else {
addOpPiece(FromBits, 0);

View File

@ -62,7 +62,7 @@
; NOCONV: DW_TAG_formal_parameter
; NOCONV: DW_TAG_variable
; NOCONV: DW_AT_location (
; NOCONV: {{.*}}, DW_OP_dup, DW_OP_lit7, DW_OP_shr, DW_OP_lit0, DW_OP_not, DW_OP_mul, DW_OP_lit8, DW_OP_shl, DW_OP_or, DW_OP_stack_value)
; NOCONV: {{.*}}, DW_OP_dup, DW_OP_constu 0x7, DW_OP_shr, DW_OP_lit0, DW_OP_not, DW_OP_mul, DW_OP_constu 0x8, DW_OP_shl, DW_OP_or, DW_OP_stack_value)
; NOCONV: DW_AT_name ("y")
; NOCONV: NULL
; NOCONV: DW_TAG_base_type

View File

@ -26,7 +26,7 @@
; DW4: DW_TAG_compile_unit
; DW4: DW_TAG_variable
; DW4: DW_AT_name ("global")
; DW4: DW_AT_location (DW_OP_addr 0x0, DW_OP_deref, DW_OP_dup, DW_OP_lit7, DW_OP_shr, DW_OP_lit0, DW_OP_not, DW_OP_mul, DW_OP_lit8, DW_OP_shl, DW_OP_or, DW_OP_stack_value)
; DW4: DW_AT_location (DW_OP_addr 0x0, DW_OP_deref, DW_OP_dup, DW_OP_constu 0x7, DW_OP_shr, DW_OP_lit0, DW_OP_not, DW_OP_mul, DW_OP_constu 0x8, DW_OP_shl, DW_OP_or, DW_OP_stack_value)
; DW4: DW_TAG_base_type
; DW4: DW_AT_name ("int")
; DW4: NULL