[project @ 1997-08-25 22:25:50 by sof]
[ghc-hetmet.git] / ghc / compiler / utils / SpecLoop.lhi
1 This loop-breaking module is used solely to braek the loops caused by
2 SPECIALIZE pragmas.
3
4 \begin{code}
5 interface SpecLoop where
6
7 import RdrHsSyn         ( RdrName )
8 import Name             ( Name, OccName )
9 import TyVar            ( GenTyVar )
10 import TyCon            ( TyCon )
11 import Class            ( GenClass, GenClassOp )
12 import Id               ( GenId )
13 import Unique           ( Unique, Uniquable(..) )
14 import MachRegs         ( Reg )
15 import CLabel           ( CLabel )
16
17 data RdrName 
18 data GenClass a b
19 data GenClassOp a
20 data GenId a            -- NB: fails the optimisation criterion
21 data GenTyVar a         -- NB: fails the optimisation criterion
22 data Name
23 data OccName
24 data TyCon
25 data Unique
26 data Reg
27 data CLabel
28
29
30 class Uniquable a where
31         uniqueOf :: a -> Unique
32
33 -- SPECIALIZing in FiniteMap
34 instance Eq Reg
35 instance Eq CLabel
36 instance Eq OccName
37 instance Eq RdrName
38 instance Eq (GenId a)
39 instance Eq TyCon
40 instance Eq (GenClass a b)
41 instance Eq Unique
42 instance Eq Name
43
44 instance Ord Reg
45 instance Ord CLabel
46 instance Ord OccName
47 instance Ord RdrName
48 instance Ord (GenId a)
49 instance Ord TyCon
50 instance Ord (GenClass a b)
51 instance Ord Unique
52 instance Ord Name
53
54 -- SPECIALIZing in UniqFM, UniqSet
55 instance Uniquable (GenId a)
56 instance Uniquable TyCon
57 instance Uniquable (GenClass a b)
58 instance Uniquable Unique
59 instance Uniquable Name
60
61 -- SPECIALIZing in Name
62 \end{code}