summaryrefslogtreecommitdiff
path: root/compiler/coreSyn
diff options
context:
space:
mode:
authorJoachim Breitner <mail@joachim-breitner.de>2016-10-21 19:07:51 -0400
committerJoachim Breitner <mail@joachim-breitner.de>2016-10-21 20:07:26 -0400
commit201332eda995ffe5faee07849e629eea09ec84d4 (patch)
tree55c093a0ca53125c243eb682a42498cd8f08d3a1 /compiler/coreSyn
parenta875ab3b4c3bce7e52ffa270f4c82e79f62b3fb8 (diff)
downloadhaskell-wip/T12618.tar.gz
Cache the analysis of the data con typewip/T12618
for faster compression/decompression.
Diffstat (limited to 'compiler/coreSyn')
-rw-r--r--compiler/coreSyn/CoreFVs.hs4
-rw-r--r--compiler/coreSyn/CoreSyn.hs2
-rw-r--r--compiler/coreSyn/CoreUtils.hs2
3 files changed, 4 insertions, 4 deletions
diff --git a/compiler/coreSyn/CoreFVs.hs b/compiler/coreSyn/CoreFVs.hs
index 12544b89d2..5f1fad2f2e 100644
--- a/compiler/coreSyn/CoreFVs.hs
+++ b/compiler/coreSyn/CoreFVs.hs
@@ -74,7 +74,7 @@ import Type
import TyCoRep
import TyCon
import CompressArgs
-import DataCon ( dataConRepType, dataConWorkId )
+import DataCon ( dataConRepType, dataConCompressScheme, dataConWorkId )
import CoAxiom
import FamInstEnv
import TysPrim( funTyConName )
@@ -752,7 +752,7 @@ freeVars = go
, AnnConApp dc cargs' )
where
cargs' = map go cargs
- args = uncompressArgs exprTypeFV (go . Type) dc_ty cargs'
+ args = uncompressArgs exprTypeFV (go . Type) (dataConCompressScheme dc) cargs'
dc_ty = dataConRepType dc
res_ty = foldl applyTypeToArg dc_ty (map deAnnotate args)
-- Why does this not work? Isn't piResultTys just iterated application
diff --git a/compiler/coreSyn/CoreSyn.hs b/compiler/coreSyn/CoreSyn.hs
index 54a62ef984..b47b21c5a4 100644
--- a/compiler/coreSyn/CoreSyn.hs
+++ b/compiler/coreSyn/CoreSyn.hs
@@ -1501,7 +1501,7 @@ mkCoApps f args = foldl (\ e a -> App e (Coercion a)) f args
mkVarApps f vars = foldl (\ e a -> App e (varToCoreExpr a)) f vars
mkConApp dc args =
ASSERT2 ( dataConRepFullArity dc == length args, text "mkConApp: artiy mismatch" $$ ppr dc )
- ConApp dc (compressArgs (dataConRepType dc) args)
+ ConApp dc (compressArgs (dataConCompressScheme dc) args)
mkTyApps f args = foldl (\ e a -> App e (typeOrCoercion a)) f args
where
diff --git a/compiler/coreSyn/CoreUtils.hs b/compiler/coreSyn/CoreUtils.hs
index e71055b26d..89499e3aad 100644
--- a/compiler/coreSyn/CoreUtils.hs
+++ b/compiler/coreSyn/CoreUtils.hs
@@ -212,7 +212,7 @@ applyTypeToArgs e op_ty args
-}
collectConArgs :: CoreExpr -> [CoreArg]
-collectConArgs (ConApp dc cargs) = uncompressArgs exprTypeOrKind Type (dataConRepType dc) cargs
+collectConArgs (ConApp dc cargs) = uncompressArgs exprTypeOrKind Type (dataConCompressScheme dc) cargs
collectConArgs _ = panic "conAppArgs"