summaryrefslogtreecommitdiff
path: root/compiler/nativeGen/RegAlloc/Graph/SpillClean.hs
diff options
context:
space:
mode:
authorsimonpj@microsoft.com <unknown>2009-10-15 12:28:10 +0000
committersimonpj@microsoft.com <unknown>2009-10-15 12:28:10 +0000
commit388e3356f71daffa62f1d4157e1e07e4c68f218a (patch)
treec65be526dc1aec02a3c2b872f7350091433032e0 /compiler/nativeGen/RegAlloc/Graph/SpillClean.hs
parentc173e8d155ca61ec53224c39d8cb936ddcc5dbda (diff)
downloadhaskell-388e3356f71daffa62f1d4157e1e07e4c68f218a.tar.gz
Fix Trac #959: a long-standing bug in instantiating otherwise-unbound type variables
DO NOT MERGE TO GHC 6.12 branch (Reason: interface file format change.) The typechecker needs to instantiate otherwise-unconstraint type variables to an appropriately-kinded constant type, but we didn't have a supply of arbitrarily-kinded tycons for this purpose. Now we do. The details are described in Note [Any types] in TysPrim. The fundamental change is that there is a new sort of TyCon, namely AnyTyCon, defined in TyCon. Ter's a small change to interface-file binary format, because the new AnyTyCons have to be serialised. I tided up the handling of uniques a bit too, so that mkUnique is not exported, so that we can see all the different name spaces in one module.
Diffstat (limited to 'compiler/nativeGen/RegAlloc/Graph/SpillClean.hs')
-rw-r--r--compiler/nativeGen/RegAlloc/Graph/SpillClean.hs6
1 files changed, 3 insertions, 3 deletions
diff --git a/compiler/nativeGen/RegAlloc/Graph/SpillClean.hs b/compiler/nativeGen/RegAlloc/Graph/SpillClean.hs
index b7b7475aec..15fbb59e34 100644
--- a/compiler/nativeGen/RegAlloc/Graph/SpillClean.hs
+++ b/compiler/nativeGen/RegAlloc/Graph/SpillClean.hs
@@ -436,15 +436,15 @@ isStoreReg ss
instance Uniquable Store where
getUnique (SReg r)
| RegReal (RealRegSingle i) <- r
- = mkUnique 'R' i
+ = mkRegSingleUnique i
| RegReal (RealRegPair r1 r2) <- r
- = mkUnique 'P' (r1 * 65535 + r2)
+ = mkRegPairUnique (r1 * 65535 + r2)
| otherwise
= error "RegSpillClean.getUnique: found virtual reg during spill clean, only real regs expected."
- getUnique (SSlot i) = mkUnique 'S' i
+ getUnique (SSlot i) = mkRegSubUnique i -- [SLPJ] I hope "SubUnique" is ok
instance Outputable Store where
ppr (SSlot i) = text "slot" <> int i