summaryrefslogtreecommitdiffstats
path: root/llvm/lib/IR
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/IR')
-rw-r--r--llvm/lib/IR/AsmWriter.cpp9
-rw-r--r--llvm/lib/IR/DebugInfoMetadata.cpp2
2 files changed, 9 insertions, 2 deletions
diff --git a/llvm/lib/IR/AsmWriter.cpp b/llvm/lib/IR/AsmWriter.cpp
index af3db5186a2..07dea403d56 100644
--- a/llvm/lib/IR/AsmWriter.cpp
+++ b/llvm/lib/IR/AsmWriter.cpp
@@ -2123,8 +2123,13 @@ static void writeDIExpression(raw_ostream &Out, const DIExpression *N,
assert(!OpStr.empty() && "Expected valid opcode");
Out << FS << OpStr;
- for (unsigned A = 0, AE = I->getNumArgs(); A != AE; ++A)
- Out << FS << I->getArg(A);
+ if (I->getOp() == dwarf::DW_OP_LLVM_convert) {
+ Out << FS << I->getArg(0);
+ Out << FS << dwarf::AttributeEncodingString(I->getArg(1));
+ } else {
+ for (unsigned A = 0, AE = I->getNumArgs(); A != AE; ++A)
+ Out << FS << I->getArg(A);
+ }
}
} else {
for (const auto &I : N->getElements())
diff --git a/llvm/lib/IR/DebugInfoMetadata.cpp b/llvm/lib/IR/DebugInfoMetadata.cpp
index f772276613c..0ae408af041 100644
--- a/llvm/lib/IR/DebugInfoMetadata.cpp
+++ b/llvm/lib/IR/DebugInfoMetadata.cpp
@@ -813,6 +813,7 @@ DIExpression *DIExpression::getImpl(LLVMContext &Context,
unsigned DIExpression::ExprOperand::getSize() const {
switch (getOp()) {
+ case dwarf::DW_OP_LLVM_convert:
case dwarf::DW_OP_LLVM_fragment:
return 3;
case dwarf::DW_OP_constu:
@@ -857,6 +858,7 @@ bool DIExpression::isValid() const {
return false;
break;
}
+ case dwarf::DW_OP_LLVM_convert:
case dwarf::DW_OP_constu:
case dwarf::DW_OP_plus_uconst:
case dwarf::DW_OP_plus:
OpenPOWER on IntegriCloud