diff options
| author | Devang Patel <dpatel@apple.com> | 2011-04-21 23:22:35 +0000 |
|---|---|---|
| committer | Devang Patel <dpatel@apple.com> | 2011-04-21 23:22:35 +0000 |
| commit | 94ad6ac13ccd4c0f79538f9b897c7e0fdd4503cf (patch) | |
| tree | 482b455b48dd7ba5ba631cd52865bc167611f900 /llvm/lib/Target/ARM/ARMAsmPrinter.cpp | |
| parent | b77d6f0fd1a429aedb11439e460c0cea943753a8 (diff) | |
| download | bcm5719-llvm-94ad6ac13ccd4c0f79538f9b897c7e0fdd4503cf.tar.gz bcm5719-llvm-94ad6ac13ccd4c0f79538f9b897c7e0fdd4503cf.zip | |
Fix DWARF description of Q registers.
llvm-svn: 129952
Diffstat (limited to 'llvm/lib/Target/ARM/ARMAsmPrinter.cpp')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMAsmPrinter.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp index 8e4f11352c1..47a6520629b 100644 --- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp @@ -209,6 +209,33 @@ void ARMAsmPrinter::EmitDwarfRegOp(const MachineLocation &MLoc) const { EmitULEB128(32); EmitULEB128(0); } + } else if (Reg >= ARM::Q0 && Reg <= ARM::Q15) { + // Q registers Q0-Q15 are described by composing two D registers together. + // Qx = DW_OP_regx(256+2x) DW_OP_piece(8) DW_OP_regx(256+2x+1) DW_OP_piece(8) + + unsigned QReg = Reg - ARM::Q0; + unsigned D1 = 256 + 2 * QReg; + unsigned D2 = D1 + 1; + + OutStreamer.AddComment("Loc expr size"); + // DW_OP_regx + ULEB + DW_OP_piece + ULEB(8) + + // DW_OP_regx + ULEB + DW_OP_piece + ULEB(8); + // 6 + ULEB(D1) + ULEB(D2) + EmitInt16(6 + MCAsmInfo::getULEB128Size(D1) + MCAsmInfo::getULEB128Size(D2)); + + OutStreamer.AddComment("DW_OP_regx for Q register: D1"); + EmitInt8(dwarf::DW_OP_regx); + EmitULEB128(D1); + OutStreamer.AddComment("DW_OP_piece 8"); + EmitInt8(dwarf::DW_OP_piece); + EmitULEB128(8); + + OutStreamer.AddComment("DW_OP_regx for Q register: D2"); + EmitInt8(dwarf::DW_OP_regx); + EmitULEB128(D2); + OutStreamer.AddComment("DW_OP_piece 8"); + EmitInt8(dwarf::DW_OP_piece); + EmitULEB128(8); } } } |

