summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/SparcV9/SparcV9CodeEmitter.cpp
diff options
context:
space:
mode:
authorBrian Gaeke <gaeke@uiuc.edu>2004-06-09 21:54:59 +0000
committerBrian Gaeke <gaeke@uiuc.edu>2004-06-09 21:54:59 +0000
commit5b03a0628ff77b7b4eff00e6ed5539b2c5b967b0 (patch)
tree19d68d9c0acf9a2c73b4fa792c71fd6ee1d98a24 /llvm/lib/Target/SparcV9/SparcV9CodeEmitter.cpp
parent87d8878f6d80048041fb9ddf97ddba9d03b84797 (diff)
downloadbcm5719-llvm-5b03a0628ff77b7b4eff00e6ed5539b2c5b967b0.tar.gz
bcm5719-llvm-5b03a0628ff77b7b4eff00e6ed5539b2c5b967b0.zip
Encode %fsr correctly; don't fail an assertion.
llvm-svn: 14103
Diffstat (limited to 'llvm/lib/Target/SparcV9/SparcV9CodeEmitter.cpp')
-rw-r--r--llvm/lib/Target/SparcV9/SparcV9CodeEmitter.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Target/SparcV9/SparcV9CodeEmitter.cpp b/llvm/lib/Target/SparcV9/SparcV9CodeEmitter.cpp
index 54cbab49b4d..4f4f0b3b915 100644
--- a/llvm/lib/Target/SparcV9/SparcV9CodeEmitter.cpp
+++ b/llvm/lib/Target/SparcV9/SparcV9CodeEmitter.cpp
@@ -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;
OpenPOWER on IntegriCloud