mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-17 20:23:59 +00:00
Move the accessor functions from DIExpression::iterator into a wrapper
DIExpression::Operand, so we can write range-based for loops. Thanks to David Blaikie for the idea. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226939 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -210,8 +210,8 @@ 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));
|
||||
@ -219,7 +219,7 @@ bool DwarfExpression::AddMachineRegExpression(DIExpression Expr,
|
||||
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);
|
||||
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);
|
||||
|
Reference in New Issue
Block a user