[project @ 1997-06-05 09:16:04 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 )
14 import UniqFM           ( Uniquable(..) )
15 import MachRegs         ( Reg )
16 import CLabel           ( CLabel )
17
18 data RdrName 
19 data GenClass a b
20 data GenClassOp a
21 data GenId a            -- NB: fails the optimisation criterion
22 data GenTyVar a         -- NB: fails the optimisation criterion
23 data Name
24 data OccName
25 data TyCon
26 data Unique
27 data Reg
28 data CLabel
29
30
31 class Uniquable a where
32         uniqueOf :: a -> Unique
33
34 -- SPECIALIZing in FiniteMap
35 instance Eq Reg
36 instance Eq CLabel
37 instance Eq OccName
38 instance Eq RdrName
39 instance Eq (GenId a)
40 instance Eq TyCon
41 instance Eq (GenClass a b)
42 instance Eq Unique
43 instance Eq Name
44
45 instance Ord Reg
46 instance Ord CLabel
47 instance Ord OccName
48 instance Ord RdrName
49 instance Ord (GenId a)
50 instance Ord TyCon
51 instance Ord (GenClass a b)
52 instance Ord Unique
53 instance Ord Name
54
55 -- SPECIALIZing in UniqFM, UniqSet
56 instance Uniquable (GenId a)
57 instance Uniquable TyCon
58 instance Uniquable (GenClass a b)
59 instance Uniquable Unique
60 instance Uniquable Name
61
62 -- SPECIALIZing in Name
63 \end{code}