Give a better error for uses of R11, R12, ...; trac #5422
authorIan Lynagh <igloo@earth.li>
Sun, 6 Nov 2011 15:53:39 +0000 (15:53 +0000)
committerIan Lynagh <igloo@earth.li>
Sun, 6 Nov 2011 15:53:39 +0000 (15:53 +0000)
It's still a panic, as it wouldn't be trivial to give a proper error
at the point that we generate it, but it's now a bit nicer:
    Registers above R10 are not supported (tried to use R11)

compiler/codeGen/CgUtils.hs

index 5c52eeb..3ee4726 100644 (file)
@@ -407,15 +407,19 @@ baseRegOffset (VanillaReg 7 _)    = oFFSET_StgRegTable_rR7
 baseRegOffset (VanillaReg 8 _)    = oFFSET_StgRegTable_rR8
 baseRegOffset (VanillaReg 9 _)    = oFFSET_StgRegTable_rR9
 baseRegOffset (VanillaReg 10 _)   = oFFSET_StgRegTable_rR10
+baseRegOffset (VanillaReg n _)    = panic ("Registers above R10 are not supported (tried to use R" ++ show n ++ ")")
 baseRegOffset (FloatReg  1)       = oFFSET_StgRegTable_rF1
 baseRegOffset (FloatReg  2)       = oFFSET_StgRegTable_rF2
 baseRegOffset (FloatReg  3)       = oFFSET_StgRegTable_rF3
 baseRegOffset (FloatReg  4)       = oFFSET_StgRegTable_rF4
+baseRegOffset (FloatReg  n)       = panic ("Registers above F4 are not supported (tried to use F" ++ show n ++ ")")
 baseRegOffset (DoubleReg 1)       = oFFSET_StgRegTable_rD1
 baseRegOffset (DoubleReg 2)       = oFFSET_StgRegTable_rD2
+baseRegOffset (DoubleReg n)       = panic ("Registers above D2 are not supported (tried to use D" ++ show n ++ ")")
 baseRegOffset Sp                  = oFFSET_StgRegTable_rSp
 baseRegOffset SpLim               = oFFSET_StgRegTable_rSpLim
 baseRegOffset (LongReg 1)         = oFFSET_StgRegTable_rL1
+baseRegOffset (LongReg n)         = panic ("Registers above L1 are not supported (tried to use L" ++ show n ++ ")")
 baseRegOffset Hp                  = oFFSET_StgRegTable_rHp
 baseRegOffset HpLim               = oFFSET_StgRegTable_rHpLim
 baseRegOffset CurrentTSO          = oFFSET_StgRegTable_rCurrentTSO
@@ -425,7 +429,7 @@ baseRegOffset EagerBlackholeInfo  = oFFSET_stgEagerBlackholeInfo
 baseRegOffset GCEnter1            = oFFSET_stgGCEnter1
 baseRegOffset GCFun               = oFFSET_stgGCFun
 baseRegOffset BaseReg             = panic "baseRegOffset:BaseReg"
-baseRegOffset _                   = panic "baseRegOffset:other"
+baseRegOffset PicBaseReg          = panic "baseRegOffset:PicBaseReg"
 
 
 -------------------------------------------------------------------------