Debug Info: Implement DwarfUnit::addRegisterOffset using DwarfExpression.

No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225707 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Adrian Prantl
2015-01-12 22:19:26 +00:00
parent f89325d832
commit 93eb099f24
5 changed files with 60 additions and 16 deletions

View File

@ -65,6 +65,22 @@ void DwarfExpression::AddShr(unsigned ShiftBy) {
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) {