diff options
Diffstat (limited to 'src/CHAD/Top.hs')
-rw-r--r-- | src/CHAD/Top.hs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/CHAD/Top.hs b/src/CHAD/Top.hs index ced7550..ea7449d 100644 --- a/src/CHAD/Top.hs +++ b/src/CHAD/Top.hs @@ -12,6 +12,7 @@ module CHAD.Top where import Analysis.Identity import AST +import AST.SplitLets import AST.Weaken.Auto import CHAD import CHAD.Accum @@ -87,7 +88,7 @@ chad config env (term :: Ex env t) &. #tl (d1e env)) (#d :++: #acenv :++: #tl) (#acenv :++: #d :++: #tl)) $ - freezeRet descr (drev descr VarMap.empty (identityAnalysis env term))) $ + freezeRet descr (drev descr VarMap.empty term')) $ EPair ext (EFst ext (EFst ext (EVar ext tvar IZ))) (reassembleD2E descr (EPair ext (ESnd ext (EVar ext tvar IZ)) (ESnd ext (EFst ext (EVar ext tvar IZ))))) @@ -95,7 +96,9 @@ chad config env (term :: Ex env t) | False <- chcArgArrayAccum config , Refl <- mergeEnvNoAccum env , Refl <- mergeEnvOnlyMerge env - = let ?config = config in freezeRet (mergeDescr env) (drev (mergeDescr env) VarMap.empty (identityAnalysis env term)) + = let ?config = config in freezeRet (mergeDescr env) (drev (mergeDescr env) VarMap.empty term') + where + term' = identityAnalysis env (splitLets term) chad' :: CHADConfig -> SList STy env -> Ex env t -> Ex (D2 t : env) (TPair t (Tup (D2E env))) chad' config env term |