diff options
author | Adrian Prantl <aprantl@apple.com> | 2015-03-03 20:12:52 +0000 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2015-03-03 20:12:52 +0000 |
commit | b283815a3021d42803da1918ac808bd8e7e79a4f (patch) | |
tree | d19771cccbe0347dc96d95f48e4235ff82e28b25 /llvm/lib/CodeGen/AsmPrinter | |
parent | 6efb8bd947edae14936c6cbff7585e093f5f91a1 (diff) | |
download | bcm5719-llvm-b283815a3021d42803da1918ac808bd8e7e79a4f.tar.gz bcm5719-llvm-b283815a3021d42803da1918ac808bd8e7e79a4f.zip |
Fix PR22762. When emitting a DWARF expression check whether this is the
frame register before checking if there is a DWARF register number for it.
Thanks to H.J. Lu for diagnosing this and providing the testcase!
llvm-svn: 231121
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp index eae42daefa6..86954e90b68 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp @@ -66,17 +66,18 @@ void DwarfExpression::AddShr(unsigned ShiftBy) { } bool DwarfExpression::AddMachineRegIndirect(unsigned MachineReg, int Offset) { - int DwarfReg = TRI.getDwarfRegNum(MachineReg, false); - if (DwarfReg < 0) - return false; - if (isFrameRegister(MachineReg)) { // If variable offset is based in frame register then use fbreg. EmitOp(dwarf::DW_OP_fbreg); EmitSigned(Offset); - } else { - AddRegIndirect(DwarfReg, Offset); + return true; } + + int DwarfReg = TRI.getDwarfRegNum(MachineReg, false); + if (DwarfReg < 0) + return false; + + AddRegIndirect(DwarfReg, Offset); return true; } |