Encode %fsr correctly; don't fail an assertion.
authorBrian Gaeke <gaeke@uiuc.edu>
Wed, 9 Jun 2004 21:54:59 +0000 (21:54 +0000)
committerBrian Gaeke <gaeke@uiuc.edu>
Wed, 9 Jun 2004 21:54:59 +0000 (21:54 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14103 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/SparcV9/SparcV9CodeEmitter.cpp

index 54cbab49b4d63dd46c8414a94457cab0ee75e6dc..4f4f0b3b915746079aaeb5c34cc23bc3888e7633 100644 (file)
@@ -527,6 +527,15 @@ SparcV9CodeEmitter::getRealRegNum(unsigned fakeReg,
     DEBUG(std::cerr << "FP CC reg: " << fakeReg << "\n");
     return fakeReg;
   }
+  case SparcV9RegInfo::SpecialRegClassID: {
+    // Currently only "special" reg is %fsr, which is encoded as 1 in
+    // instructions and 0 in SparcV9SpecialRegClass.
+    static const unsigned SpecialReg[] = {  1 };
+    assert(fakeReg < sizeof(SpecialReg)/sizeof(SpecialReg[0])
+             && "Special register out of bounds for SpecialReg map");      
+    DEBUG(std::cerr << "Special reg: " << SpecialReg[fakeReg] << "\n");
+    return SpecialReg[fakeReg];
+  }
   default:
     assert(0 && "Invalid unified register number in getRealRegNum");
     return fakeReg;