Index: src/IceTargetLoweringMIPS32.h |
diff --git a/src/IceTargetLoweringMIPS32.h b/src/IceTargetLoweringMIPS32.h |
index 3cd1687ea0ed1ae1458d946a7299702f00b398f2..a63ca353e7bb3301357238115814258b7c9ab0e9 100644 |
--- a/src/IceTargetLoweringMIPS32.h |
+++ b/src/IceTargetLoweringMIPS32.h |
@@ -23,6 +23,9 @@ |
namespace Ice { |
+// Extend enum RegClass with MIPS32-specific register classes (if any). |
+enum RegClassMIPS32 : uint8_t { RCMIPS32_NUM = RC_Target }; |
+ |
class TargetMIPS32 : public TargetLowering { |
TargetMIPS32() = delete; |
TargetMIPS32(const TargetMIPS32 &) = delete; |
@@ -42,8 +45,11 @@ public: |
IceString getRegName(SizeT RegNum, Type Ty) const override; |
llvm::SmallBitVector getRegisterSet(RegSetMask Include, |
RegSetMask Exclude) const override; |
- const llvm::SmallBitVector &getRegisterSetForType(Type Ty) const override { |
- return TypeToRegisterSet[Ty]; |
+ const llvm::SmallBitVector & |
+ getRegistersForClass(const Variable *Var) const override { |
+ RegClass RC = Var->getRegClass(); |
+ assert(RC < RC_Target); |
+ return TypeToRegisterSet[RC]; |
} |
const llvm::SmallBitVector &getAliasesForRegister(SizeT Reg) const override { |
return RegisterAliases[Reg]; |
@@ -231,7 +237,7 @@ protected: |
bool UsesFramePointer = false; |
bool NeedsStackAlignment = false; |
- static llvm::SmallBitVector TypeToRegisterSet[IceType_NUM]; |
+ static llvm::SmallBitVector TypeToRegisterSet[RCMIPS32_NUM]; |
static llvm::SmallBitVector RegisterAliases[RegMIPS32::Reg_NUM]; |
static llvm::SmallBitVector ScratchRegs; |
llvm::SmallBitVector RegsUsed; |