summaryrefslogtreecommitdiff
path: root/src/Analysis/Identity.hs
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2025-06-21 09:57:45 +0200
committerTom Smeding <tom@tomsmeding.com>2025-06-21 09:57:45 +0200
commitb5ed3d2fcc249cb410b9e86d25e9ef808c6dba97 (patch)
tree66383b16d5d95f939aaa165a783dbbfd99a57fe3 /src/Analysis/Identity.hs
parent8bbc2d2867e3d0a4a1f2810b40e92175779822e1 (diff)
parenta4b3eb76acbec30ffeae119a4dc6e4c9f64396fe (diff)
Merge branch 'sparse'HEADmaster
Diffstat (limited to 'src/Analysis/Identity.hs')
-rw-r--r--src/Analysis/Identity.hs11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/Analysis/Identity.hs b/src/Analysis/Identity.hs
index 4501c32..b54946b 100644
--- a/src/Analysis/Identity.hs
+++ b/src/Analysis/Identity.hs
@@ -307,11 +307,11 @@ idana env expr = case expr of
let res = VIPair v2 x2
pure (res, EWith res t e1' e2')
- EAccum _ t prj e1 e2 e3 -> do
+ EAccum _ t prj e1 sp e2 e3 -> do
(_, e1') <- idana env e1
(_, e2') <- idana env e2
(_, e3') <- idana env e3
- pure (VINil, EAccum VINil t prj e1' e2' e3')
+ pure (VINil, EAccum VINil t prj e1' sp e2' e3')
EZero _ t e1 -> do
-- Approximate the result of EZero to be independent from the zero info
@@ -320,6 +320,13 @@ idana env expr = case expr of
res <- genIds (fromSMTy t)
pure (res, EZero res t e1')
+ EDeepZero _ t e1 -> do
+ -- Approximate the result of EDeepZero to be independent from the zero info
+ -- expression; not quite true for shape variables
+ (_, e1') <- idana env e1
+ res <- genIds (fromSMTy t)
+ pure (res, EDeepZero res t e1')
+
EPlus _ t e1 e2 -> do
(_, e1') <- idana env e1
(_, e2') <- idana env e2