Commit 727fae32 authored by Ian Lynagh's avatar Ian Lynagh

Make some more modules use LazyUniqFM instead of UniqFM

If these modules use UniqFM then we get a stack overflow when compiling
modules that use fundeps. I haven't tracked down the actual cause.
parent d6a7aff8
......@@ -35,7 +35,7 @@ module NewDemand(
import StaticFlags
import BasicTypes
import VarEnv
import UniqFM
import LazyUniqFM
import Util
import Outputable
\end{code}
......
......@@ -46,7 +46,7 @@ module VarEnv (
import OccName
import Var
import VarSet
import UniqFM
import LazyUniqFM
import Unique
import Util
import Maybes
......
......@@ -38,7 +38,7 @@ import CoreSyn
import Id
import IdInfo
import NameSet
import UniqFM
import LazyUniqFM
import Name
import VarSet
import Var
......
......@@ -22,7 +22,7 @@ import IdInfo
import Type
import Var
import VarEnv
import UniqFM
import LazyUniqFM
import Name hiding (tidyNameOcc)
import OccName
import SrcLoc
......
......@@ -40,7 +40,7 @@ import MachOp
import CLabel
import State
import UniqFM
import LazyUniqFM
import Unique ( Unique, getUnique )
import UniqSupply
import List ( groupBy, sortBy )
......
......@@ -105,7 +105,8 @@ import UniqSet
import Constants
import FastTypes
import FastBool
import UniqFM
import qualified UniqFM as S
import LazyUniqFM
#if powerpc_TARGET_ARCH
import Data.Word ( Word8, Word16, Word32 )
......@@ -518,20 +519,20 @@ worst n classN classC
{-# INLINE regClass #-}
trivColorable :: RegClass -> UniqSet Reg -> UniqSet Reg -> Bool
trivColorable classN conflicts exclusions
trivColorable classN (MkUniqFM conflicts) (MkUniqFM exclusions)
= {-# SCC "trivColorable" #-}
let
{-# INLINE isSqueesed #-}
isSqueesed cI cF ufm
= case ufm of
NodeUFM _ _ left right
S.NodeUFM _ _ left right
-> case isSqueesed cI cF right of
(# s, cI', cF' #)
-> case s of
False -> isSqueesed cI' cF' left
True -> (# True, cI', cF' #)
LeafUFM _ reg
S.LeafUFM _ (Lazy reg)
-> case regClass reg of
RcInteger
-> case cI +# _ILIT(1) of
......@@ -541,7 +542,7 @@ trivColorable classN conflicts exclusions
-> case cF +# _ILIT(1) of
cF' -> (# cF' >=# ALLOCATABLE_REGS_DOUBLE, cI, cF' #)
EmptyUFM
S.EmptyUFM
-> (# False, cI, cF #)
in case isSqueesed (_ILIT(0)) (_ILIT(0)) conflicts of
......
......@@ -24,7 +24,7 @@ import PprMach
import UniqSupply
import UniqSet
import UniqFM
import LazyUniqFM
import Bag
import Outputable
import DynFlags
......
......@@ -97,7 +97,7 @@ import Cmm hiding (RegSet)
import Digraph
import Unique ( Uniquable(getUnique), Unique )
import UniqSet
import UniqFM
import LazyUniqFM
import UniqSupply
import Outputable
import State
......
......@@ -30,7 +30,7 @@ import MachInstrs
import Cmm
import Outputable
import UniqFM
import LazyUniqFM
import UniqSet
import State
......
......@@ -42,7 +42,7 @@ import Digraph
import Outputable
import Unique
import UniqSet
import UniqFM
import LazyUniqFM
import UniqSupply
import Bag
import State
......
......@@ -23,7 +23,7 @@ import MachInstrs
import MachRegs
import Cmm
import UniqFM
import LazyUniqFM
import UniqSet
import Outputable
import State
......
......@@ -33,7 +33,7 @@ import Maybes ( orElse )
import Digraph ( stronglyConnCompR, SCC(..) )
import PrelNames ( buildIdKey, foldrIdKey, runSTRepIdKey, augmentIdKey )
import Unique ( Unique )
import UniqFM ( keysUFM, intersectUFM_C, foldUFM_Directly )
import LazyUniqFM ( keysUFM, intersectUFM_C, foldUFM_Directly )
import Util ( mapAndUnzip )
import Outputable
......
......@@ -45,7 +45,7 @@ import Var ( Var )
import VarEnv
import TysWiredIn ( unboxedPairDataCon )
import TysPrim ( realWorldStatePrimTy )
import UniqFM ( plusUFM_C, addToUFM_Directly, lookupUFM_Directly,
import LazyUniqFM ( plusUFM_C, addToUFM_Directly, lookupUFM_Directly,
keysUFM, minusUFM, ufmToList, filterUFM )
import Type ( isUnLiftedType, coreEqType, splitTyConApp_maybe )
import Coercion ( coercionKind )
......
......@@ -40,7 +40,7 @@ import Control.Monad
import Outputable
import TcType
import Unique
import UniqFM
import LazyUniqFM
\end{code}
......
......@@ -14,7 +14,7 @@ module GraphBase (
where
import UniqSet
import UniqFM
import LazyUniqFM
-- | A fn to check if a node is trivially colorable
......
......@@ -19,7 +19,7 @@ import GraphOps
import GraphPpr
import Unique
import UniqFM
import LazyUniqFM
import UniqSet
import Outputable
......
......@@ -24,7 +24,7 @@ import GraphBase
import Outputable
import Unique
import UniqSet
import UniqFM
import LazyUniqFM
import Data.List hiding (union)
import Data.Maybe
......
......@@ -12,7 +12,7 @@ import GraphBase
import Outputable
import Unique
import UniqSet
import UniqFM
import LazyUniqFM
import Data.List
import Data.Maybe
......
......@@ -13,7 +13,9 @@ Basically, the things need to be in class @Uniquable@, and we use the
\begin{code}
{-# OPTIONS -Wall -fno-warn-name-shadowing -Werror -fallow-undecidable-instances #-}
module LazyUniqFM (
UniqFM, -- abstract type
UniqFM(..), -- abstract type
-- XXX Not actually abstract because of nativeGen/MachRegs; sigh
Lazy(Lazy), -- XXX Also for nativeGen/MachRegs; sigh
emptyUFM,
unitUFM,
......
......@@ -22,7 +22,7 @@ module UniqSet (
) where
import Maybes
import UniqFM
import LazyUniqFM
import Unique
#if ! OMIT_NATIVE_CODEGEN
......
......@@ -39,7 +39,7 @@ import TysWiredIn
import TysPrim ( intPrimTy )
import Unique
import UniqFM
import LazyUniqFM
import UniqSet
import Util ( singleton )
import Digraph ( SCC(..), stronglyConnComp )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment