diff options
author | Ben Gamari <ben@smart-cactus.org> | 2016-06-17 22:57:38 +0200 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2016-06-18 11:45:10 +0200 |
commit | 2396d9bb76c11775589fc91b362a61c4a92d27fa (patch) | |
tree | 8974307980358a9aadace3f9e60a5c1a25a4a832 /compiler/llvmGen/LlvmCodeGen | |
parent | 3e8c495f2e6557c85c65c7fc91113f45b010d333 (diff) | |
download | haskell-2396d9bb76c11775589fc91b362a61c4a92d27fa.tar.gz |
llvmGen: Make metadata ids a newtype
These were previously just represented as Ints which was needlessly
vague.
Diffstat (limited to 'compiler/llvmGen/LlvmCodeGen')
-rw-r--r-- | compiler/llvmGen/LlvmCodeGen/Base.hs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/compiler/llvmGen/LlvmCodeGen/Base.hs b/compiler/llvmGen/LlvmCodeGen/Base.hs index 3e2b795650..392c069822 100644 --- a/compiler/llvmGen/LlvmCodeGen/Base.hs +++ b/compiler/llvmGen/LlvmCodeGen/Base.hs @@ -44,7 +44,7 @@ import CLabel import CodeGen.Platform ( activeStgRegs ) import DynFlags import FastString -import Cmm +import Cmm hiding ( succ ) import Outputable as Outp import qualified Pretty as Prt import Platform @@ -193,8 +193,8 @@ data LlvmEnv = LlvmEnv , envDynFlags :: DynFlags -- ^ Dynamic flags , envOutput :: BufHandle -- ^ Output buffer , envUniq :: UniqSupply -- ^ Supply of unique values - , envFreshMeta :: Int -- ^ Supply of fresh metadata IDs - , envUniqMeta :: UniqFM Int -- ^ Global metadata nodes + , envFreshMeta :: MetaId -- ^ Supply of fresh metadata IDs + , envUniqMeta :: UniqFM MetaId -- ^ Global metadata nodes , envFunMap :: LlvmEnvMap -- ^ Global functions so far, with type , envAliases :: UniqSet LMString -- ^ Globals that we had to alias, see [Llvm Forward References] , envUsedVars :: [LlvmVar] -- ^ Pointers to be added to llvm.used (see @cmmUsedLlvmGens@) @@ -256,7 +256,7 @@ runLlvm dflags ver out us m = do , envDynFlags = dflags , envOutput = out , envUniq = us - , envFreshMeta = 0 + , envFreshMeta = MetaId 0 , envUniqMeta = emptyUFM } @@ -301,8 +301,9 @@ checkStackReg :: GlobalReg -> LlvmM Bool checkStackReg r = getEnv ((elem r) . envStackRegs) -- | Allocate a new global unnamed metadata identifier -getMetaUniqueId :: LlvmM Int -getMetaUniqueId = LlvmM $ \env -> return (envFreshMeta env, env { envFreshMeta = envFreshMeta env + 1}) +getMetaUniqueId :: LlvmM MetaId +getMetaUniqueId = LlvmM $ \env -> + return (envFreshMeta env, env { envFreshMeta = succ $ envFreshMeta env }) -- | Get the LLVM version we are generating code for getLlvmVer :: LlvmM LlvmVersion @@ -350,10 +351,11 @@ saveAlias :: LMString -> LlvmM () saveAlias lbl = modifyEnv $ \env -> env { envAliases = addOneToUniqSet (envAliases env) lbl } -- | Sets metadata node for a given unique -setUniqMeta :: Unique -> Int -> LlvmM () +setUniqMeta :: Unique -> MetaId -> LlvmM () setUniqMeta f m = modifyEnv $ \env -> env { envUniqMeta = addToUFM (envUniqMeta env) f m } + -- | Gets metadata node for given unique -getUniqMeta :: Unique -> LlvmM (Maybe Int) +getUniqMeta :: Unique -> LlvmM (Maybe MetaId) getUniqMeta s = getEnv (flip lookupUFM s . envUniqMeta) -- ---------------------------------------------------------------------------- |