Debug Info: Bail out of AddMachineRegPiece() if MachineReg is not a
authorAdrian Prantl <aprantl@apple.com>
Tue, 13 Jan 2015 23:39:15 +0000 (23:39 +0000)
committerAdrian Prantl <aprantl@apple.com>
Tue, 13 Jan 2015 23:39:15 +0000 (23:39 +0000)
physical register. The call to getMinimalPhysRegClass() later on asserts
on this condition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225852 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/DwarfExpression.cpp

index 4c16ae70d1f344147d134c92acd91977568db65c..26c2a20dea19f7c51bc77c05ce72895bd82e0d56 100644 (file)
@@ -93,6 +93,12 @@ void DwarfExpression::AddMachineRegPiece(unsigned MachineReg,
                                          unsigned PieceSizeInBits,
                                          unsigned PieceOffsetInBits) {
   const TargetRegisterInfo *TRI = getTRI();
                                          unsigned PieceSizeInBits,
                                          unsigned PieceOffsetInBits) {
   const TargetRegisterInfo *TRI = getTRI();
+  if (!TRI->isPhysicalRegister(MachineReg)) {
+    // FIXME: We have no reasonable way of handling errors in here.
+    EmitOp(dwarf::DW_OP_nop, "nop (could not find a dwarf register number)");
+    return;
+  }
+
   int Reg = TRI->getDwarfRegNum(MachineReg, false);
 
   // If this is a valid register number, emit it.
   int Reg = TRI->getDwarfRegNum(MachineReg, false);
 
   // If this is a valid register number, emit it.