Address more review comments for DIExpression::iterator.

- input_iterator
- define an operator->
- make constructors private were possible

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226967 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Adrian Prantl
2015-01-23 23:40:47 +00:00
parent d2925c201e
commit eabbe07449
3 changed files with 44 additions and 33 deletions

View File

@@ -210,16 +210,16 @@ bool DwarfExpression::AddMachineRegExpression(DIExpression Expr,
switch (*I) {
case dwarf::DW_OP_piece: {
unsigned SizeOfByte = 8;
unsigned OffsetInBits = (*I).getArg(1) * SizeOfByte;
unsigned SizeInBits = (*I).getArg(2) * SizeOfByte;
unsigned OffsetInBits = I->getArg(1) * SizeOfByte;
unsigned SizeInBits = I->getArg(2) * SizeOfByte;
// Piece always comes at the end of the expression.
return AddMachineRegPiece(MachineReg, SizeInBits,
getOffsetOrZero(OffsetInBits, PieceOffsetInBits));
}
case dwarf::DW_OP_plus:
// [DW_OP_reg,Offset,DW_OP_plus,DW_OP_deref] --> [DW_OP_breg,Offset].
if (*std::next(I) == dwarf::DW_OP_deref) {
unsigned Offset = (*I).getArg(1);
if (I->getNext() == dwarf::DW_OP_deref) {
unsigned Offset = I->getArg(1);
ValidReg = AddMachineRegIndirect(MachineReg, Offset);
std::advance(I, 2);
break;
@@ -248,14 +248,14 @@ void DwarfExpression::AddExpression(DIExpression::iterator I,
switch (*I) {
case dwarf::DW_OP_piece: {
unsigned SizeOfByte = 8;
unsigned OffsetInBits = (*I).getArg(1) * SizeOfByte;
unsigned SizeInBits = (*I).getArg(2) * SizeOfByte;
unsigned OffsetInBits = I->getArg(1) * SizeOfByte;
unsigned SizeInBits = I->getArg(2) * SizeOfByte;
AddOpPiece(SizeInBits, getOffsetOrZero(OffsetInBits, PieceOffsetInBits));
break;
}
case dwarf::DW_OP_plus:
EmitOp(dwarf::DW_OP_plus_uconst);
EmitUnsigned((*I).getArg(1));
EmitUnsigned(I->getArg(1));
break;
case dwarf::DW_OP_deref:
EmitOp(dwarf::DW_OP_deref);