diff --git a/lib/CodeGen/AsmPrinter/DwarfExpression.cpp b/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
index 01c9e2497dd841fc646c6eaca00841612de18e7f..2b6911e32e8004bc5ca103a1a1d348ac364bccf9 100644 (file)
EmitOp(dwarf::DW_OP_shr);
}
+bool DwarfExpression::AddMachineRegIndirect(unsigned MachineReg, int Offset) {
+ const TargetRegisterInfo *TRI = TM.getSubtargetImpl()->getRegisterInfo();
+ int DwarfReg = TRI->getDwarfRegNum(MachineReg, false);
+ if (DwarfReg < 0)
+ return false;
+
+ if (MachineReg == getFrameRegister()) {
+ // If variable offset is based in frame register then use fbreg.
+ EmitOp(dwarf::DW_OP_fbreg);
+ EmitSigned(Offset);
+ } else {
+ AddRegIndirect(DwarfReg, Offset);
+ }
+ return true;
+}
+
void DwarfExpression::AddMachineRegPiece(unsigned MachineReg,
unsigned PieceSizeInBits,
unsigned PieceOffsetInBits) {