diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp index db4af6d971dd7..c7071132cb2cd 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp @@ -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); diff --git a/llvm/test/DebugInfo/X86/convert-debugloc.ll b/llvm/test/DebugInfo/X86/convert-debugloc.ll index f00079556de22..a61127ab6932f 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_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 diff --git a/llvm/test/DebugInfo/X86/convert-inlined.ll b/llvm/test/DebugInfo/X86/convert-inlined.ll index 56379b2215c5d..5e28a7293d80b 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_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