mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
Debug info: Use DW_OP_bit_piece instead of DW_OP_piece in the
intermediate representation. This - increases consistency by using the same granularity everywhere - allows for pieces < 1 byte - DW_OP_piece didn't actually allow storing an offset. Part of PR22495. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228631 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -211,10 +211,9 @@ bool DwarfExpression::AddMachineRegExpression(DIExpression Expr,
|
||||
|
||||
bool ValidReg = false;
|
||||
switch (*I) {
|
||||
case dwarf::DW_OP_piece: {
|
||||
unsigned SizeOfByte = 8;
|
||||
unsigned OffsetInBits = I->getArg(1) * SizeOfByte;
|
||||
unsigned SizeInBits = I->getArg(2) * SizeOfByte;
|
||||
case dwarf::DW_OP_bit_piece: {
|
||||
unsigned OffsetInBits = I->getArg(1);
|
||||
unsigned SizeInBits = I->getArg(2);
|
||||
// Piece always comes at the end of the expression.
|
||||
return AddMachineRegPiece(MachineReg, SizeInBits,
|
||||
getOffsetOrZero(OffsetInBits, PieceOffsetInBits));
|
||||
@@ -249,10 +248,9 @@ void DwarfExpression::AddExpression(DIExpression::iterator I,
|
||||
unsigned PieceOffsetInBits) {
|
||||
for (; I != 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;
|
||||
case dwarf::DW_OP_bit_piece: {
|
||||
unsigned OffsetInBits = I->getArg(1);
|
||||
unsigned SizeInBits = I->getArg(2);
|
||||
AddOpPiece(SizeInBits, getOffsetOrZero(OffsetInBits, PieceOffsetInBits));
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user