Fix the root cause of the bootstrap failure:
authorRafael Espindola <rafael.espindola@gmail.com>
Sat, 28 May 2011 00:13:01 +0000 (00:13 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Sat, 28 May 2011 00:13:01 +0000 (00:13 +0000)
There was no way to check if a given register/mode pair was valid. We now return
an error code (-2) instead of asserting. If anyone thinks that an assert
at this point  is really needed, we can autogen a hasValidDwarfRegNum instead.

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

lib/CodeGen/AsmPrinter/AsmPrinter.cpp
utils/TableGen/RegisterInfoEmitter.cpp

index 5617a0fa4bd28cd6f12dec69922cb11ea63e4c76..dee6e53226279a9f3e1c1e97b9ce88e6c80d6770 100644 (file)
@@ -769,7 +769,7 @@ void AsmPrinter::EmitDwarfRegOp(const MachineLocation &MLoc) const {
   int Reg = TRI->getDwarfRegNum(MLoc.getReg(), false);
 
   for (const unsigned *SR = TRI->getSuperRegisters(MLoc.getReg());
-       *SR && Reg == -1; ++SR) {
+       *SR && Reg < 0; ++SR) {
     Reg = TRI->getDwarfRegNum(*SR, false);
     // FIXME: Get the bit range this register uses of the superregister
     // so that we can produce a DW_OP_bit_piece
index 017a5856467e22daccf281ce9b3ee6d4592d6167..dc263b117729987e3b8f6e27909e9e68ac234c6e 100644 (file)
@@ -1010,13 +1010,8 @@ void RegisterInfoEmitter::run(raw_ostream &OS) {
     for (DwarfRegNumsMapTy::iterator
            I = DwarfRegNums.begin(), E = DwarfRegNums.end(); I != E; ++I) {
       int RegNo = I->second[i];
-      if (RegNo != -2)
-        OS << "    case " << getQualifiedName(I->first) << ":\n"
-           << "      return " << RegNo << ";\n";
-      else
-        OS << "    case " << getQualifiedName(I->first) << ":\n"
-           << "      assert(0 && \"Invalid register for this mode\");\n"
-           << "      return -1;\n";
+      OS << "    case " << getQualifiedName(I->first) << ":\n"
+         << "      return " << RegNo << ";\n";
     }
     OS << "    };\n";
   }