diff options
| author | Brian Gaeke <gaeke@uiuc.edu> | 2004-06-09 21:54:59 +0000 |
|---|---|---|
| committer | Brian Gaeke <gaeke@uiuc.edu> | 2004-06-09 21:54:59 +0000 |
| commit | 5b03a0628ff77b7b4eff00e6ed5539b2c5b967b0 (patch) | |
| tree | 19d68d9c0acf9a2c73b4fa792c71fd6ee1d98a24 /llvm/lib/Target/SparcV9/SparcV9CodeEmitter.cpp | |
| parent | 87d8878f6d80048041fb9ddf97ddba9d03b84797 (diff) | |
| download | bcm5719-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.cpp | 9 |
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; |

