summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2015-02-09 23:57:15 +0000
committerAdrian Prantl <aprantl@apple.com>2015-02-09 23:57:15 +0000
commit27bd01f71cbc9ef5c489e27980b21087232b229c (patch)
treeebff33b7a1a66482dece6d63656820d095522330 /llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
parent328b1633d79a61db739a366b1f58cee42e307240 (diff)
downloadbcm5719-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.cpp14
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;
}
OpenPOWER on IntegriCloud