[llvm] 2ce36eb - [DebugInfo] Shorten legacy [s|z]ext dwarf expressions

Vedant Kumar via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 28 12:06:15 PDT 2020


Author: Vedant Kumar
Date: 2020-10-28T12:06:02-07:00
New Revision: 2ce36ebca544dd71075a7818ff4070da5667603b

URL: https://github.com/llvm/llvm-project/commit/2ce36ebca544dd71075a7818ff4070da5667603b
DIFF: https://github.com/llvm/llvm-project/commit/2ce36ebca544dd71075a7818ff4070da5667603b.diff

LOG: [DebugInfo] Shorten legacy [s|z]ext dwarf expressions

Take advantage of the emitConstu helper to emit slightly shorter dwarf
expressions to implement legacy [s|z]ext operations.

Added: 
    

Modified: 
    llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
    llvm/test/DebugInfo/X86/convert-debugloc.ll
    llvm/test/DebugInfo/X86/convert-inlined.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
index 2803c8e087fc..6533cbe6810b 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
@@ -638,14 +638,12 @@ void DwarfExpression::addFragmentOffset(const DIExpression *Expr) {
 void DwarfExpression::emitLegacySExt(unsigned FromBits) {
   // (((X >> (FromBits - 1)) * (~0)) << FromBits) | X
   emitOp(dwarf::DW_OP_dup);
-  emitOp(dwarf::DW_OP_constu);
-  emitUnsigned(FromBits - 1);
+  emitConstu(FromBits - 1);
   emitOp(dwarf::DW_OP_shr);
   emitOp(dwarf::DW_OP_lit0);
   emitOp(dwarf::DW_OP_not);
   emitOp(dwarf::DW_OP_mul);
-  emitOp(dwarf::DW_OP_constu);
-  emitUnsigned(FromBits);
+  emitConstu(FromBits);
   emitOp(dwarf::DW_OP_shl);
   emitOp(dwarf::DW_OP_or);
 }
@@ -653,8 +651,7 @@ void DwarfExpression::emitLegacySExt(unsigned FromBits) {
 void DwarfExpression::emitLegacyZExt(unsigned FromBits, unsigned ToBits) {
   if (FromBits < 64) {
     // X & ((1 << FromBits) - 1)
-    emitOp(dwarf::DW_OP_constu);
-    emitUnsigned((1ULL << FromBits) - 1);
+    emitConstu((1ULL << FromBits) - 1);
     emitOp(dwarf::DW_OP_and);
   } else {
     addOpPiece(FromBits, 0);

diff  --git a/llvm/test/DebugInfo/X86/convert-debugloc.ll b/llvm/test/DebugInfo/X86/convert-debugloc.ll
index a61127ab6932..f00079556de2 100644
--- a/llvm/test/DebugInfo/X86/convert-debugloc.ll
+++ b/llvm/test/DebugInfo/X86/convert-debugloc.ll
@@ -62,7 +62,7 @@
 ; NOCONV:     DW_TAG_formal_parameter
 ; NOCONV:     DW_TAG_variable
 ; NOCONV:       DW_AT_location (
-; 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_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_AT_name ("y")
 ; NOCONV:     NULL
 ; NOCONV:   DW_TAG_base_type

diff  --git a/llvm/test/DebugInfo/X86/convert-inlined.ll b/llvm/test/DebugInfo/X86/convert-inlined.ll
index 5e28a7293d80..56379b2215c5 100644
--- a/llvm/test/DebugInfo/X86/convert-inlined.ll
+++ b/llvm/test/DebugInfo/X86/convert-inlined.ll
@@ -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_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_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_TAG_base_type
 ; DW4:     DW_AT_name ("int")
 ; DW4:   NULL


        


More information about the llvm-commits mailing list