aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-objdump/SourcePrinter.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2023-02-11 12:38:04 +0000
committerDimitry Andric <dim@FreeBSD.org>2023-02-11 12:38:11 +0000
commite3b557809604d036af6e00c60f012c2025b59a5e (patch)
tree8a11ba2269a3b669601e2fd41145b174008f4da8 /llvm/tools/llvm-objdump/SourcePrinter.cpp
parent08e8dd7b9db7bb4a9de26d44c1cbfd24e869c014 (diff)
Diffstat (limited to 'llvm/tools/llvm-objdump/SourcePrinter.cpp')
-rw-r--r--llvm/tools/llvm-objdump/SourcePrinter.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/llvm/tools/llvm-objdump/SourcePrinter.cpp b/llvm/tools/llvm-objdump/SourcePrinter.cpp
index c8ea6b543245..6736cbc9ad5f 100644
--- a/llvm/tools/llvm-objdump/SourcePrinter.cpp
+++ b/llvm/tools/llvm-objdump/SourcePrinter.cpp
@@ -31,7 +31,7 @@ unsigned getInstStartColumn(const MCSubtargetInfo &STI) {
}
bool LiveVariable::liveAtAddress(object::SectionedAddress Addr) {
- if (LocExpr.Range == None)
+ if (LocExpr.Range == std::nullopt)
return false;
return LocExpr.Range->SectionIndex == Addr.SectionIndex &&
LocExpr.Range->LowPC <= Addr.Address &&
@@ -42,7 +42,17 @@ void LiveVariable::print(raw_ostream &OS, const MCRegisterInfo &MRI) const {
DataExtractor Data({LocExpr.Expr.data(), LocExpr.Expr.size()},
Unit->getContext().isLittleEndian(), 0);
DWARFExpression Expression(Data, Unit->getAddressByteSize());
- Expression.printCompact(OS, MRI);
+
+ auto GetRegName = [&MRI, &OS](uint64_t DwarfRegNum, bool IsEH) -> StringRef {
+ if (std::optional<unsigned> LLVMRegNum =
+ MRI.getLLVMRegNum(DwarfRegNum, IsEH))
+ if (const char *RegName = MRI.getName(*LLVMRegNum))
+ return StringRef(RegName);
+ OS << "<unknown register " << DwarfRegNum << ">";
+ return {};
+ };
+
+ Expression.printCompact(OS, GetRegName);
}
void LiveVariablePrinter::addVariable(DWARFDie FuncDie, DWARFDie VarDie) {