diff options
Diffstat (limited to 'src/Simplify.hs')
-rw-r--r-- | src/Simplify.hs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/Simplify.hs b/src/Simplify.hs index 1640729..3ac68ed 100644 --- a/src/Simplify.hs +++ b/src/Simplify.hs @@ -68,6 +68,8 @@ simplify' = \case -- TODO: constant folding for operations + -- TODO: accum of zero, plus of zero + EVar _ t i -> EVar ext t i ELet _ a b -> ELet ext (simplify' a) (simplify' b) EPair _ a b -> EPair ext (simplify' a) (simplify' b) @@ -92,6 +94,8 @@ simplify' = \case EOp _ op e -> EOp ext op (simplify' e) EWith e1 e2 -> EWith (simplify' e1) (let ?accumInScope = True in simplify' e2) EAccum i e1 e2 e3 -> EAccum i (simplify' e1) (simplify' e2) (simplify' e3) + EZero t -> EZero t + EPlus t a b -> EPlus t (simplify' a) (simplify' b) EError t s -> EError t s cheapExpr :: Expr x env t -> Bool @@ -129,6 +133,8 @@ hasAdds = \case EOp _ _ e -> hasAdds e EWith a b -> hasAdds a || hasAdds b EAccum _ _ _ _ -> True + EZero _ -> False + EPlus _ a b -> hasAdds a || hasAdds b EError _ _ -> False checkAccumInScope :: SList STy env -> Bool |