diff options
author | Joachim Breitner <mail@joachim-breitner.de> | 2013-12-04 16:55:18 +0000 |
---|---|---|
committer | Joachim Breitner <mail@joachim-breitner.de> | 2014-02-04 11:05:02 +0000 |
commit | 9343ce5c71da6672e056245505ba8ec659aa144d (patch) | |
tree | 8fa959e445ff58aac8b4a11f4088a9aff02ee242 | |
parent | 24fa001912799578d1a658e7d09343a0bd97e748 (diff) | |
download | haskell-9343ce5c71da6672e056245505ba8ec659aa144d.tar.gz |
In deferType, return convRes = Converges NoCPR
because this is the right-identity to `bothDmdResult`, and this is the
right thing to do in a lazy context.
-rw-r--r-- | compiler/basicTypes/Demand.lhs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/compiler/basicTypes/Demand.lhs b/compiler/basicTypes/Demand.lhs index 5c31a28ba0..b2e762be90 100644 --- a/compiler/basicTypes/Demand.lhs +++ b/compiler/basicTypes/Demand.lhs @@ -781,8 +781,9 @@ seqCPRResult RetProd = () -- [cprRes] lets us switch off CPR analysis -- by making sure that everything uses TopRes -topRes, botRes :: DmdResult +topRes, convRes, botRes :: DmdResult topRes = Dunno NoCPR +convRes = Converges NoCPR botRes = Diverges cprSumRes :: ConTag -> DmdResult @@ -1213,9 +1214,9 @@ postProcessUnsat (True, One) ty = deferType ty postProcessUnsat (False, One) ty = ty deferType, reuseType, deferReuse :: DmdType -> DmdType -deferType (DmdType fv ds _) = DmdType (deferEnv fv) (map deferDmd ds) topRes +deferType (DmdType fv ds _) = DmdType (deferEnv fv) (map deferDmd ds) convRes reuseType (DmdType fv ds res_ty) = DmdType (reuseEnv fv) (map reuseDmd ds) res_ty -deferReuse (DmdType fv ds _) = DmdType (deferReuseEnv fv) (map deferReuseDmd ds) topRes +deferReuse (DmdType fv ds _) = DmdType (deferReuseEnv fv) (map deferReuseDmd ds) convRes deferEnv, reuseEnv, deferReuseEnv :: DmdEnv -> DmdEnv deferEnv fv = mapVarEnv deferDmd fv |