diff options
author | Adrian Prantl <aprantl@apple.com> | 2015-02-09 23:57:15 +0000 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2015-02-09 23:57:15 +0000 |
commit | 27bd01f71cbc9ef5c489e27980b21087232b229c (patch) | |
tree | ebff33b7a1a66482dece6d63656820d095522330 /llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp | |
parent | 328b1633d79a61db739a366b1f58cee42e307240 (diff) | |
download | bcm5719-llvm-27bd01f71cbc9ef5c489e27980b21087232b229c.tar.gz bcm5719-llvm-27bd01f71cbc9ef5c489e27980b21087232b229c.zip |
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.
llvm-svn: 228631
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp index 7c5c879289b..3d1e3822c51 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp @@ -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; } |