From 39f0e9b40d64e5141482fcc5e20fb6b99a32943f Mon Sep 17 00:00:00 2001 From: Zachary Snow Date: Sat, 19 Oct 2019 14:35:54 -0400 Subject: [PATCH] minor perf optimization --- src/Convert/DimensionQuery.hs | 3 +-- src/Convert/Simplify.hs | 2 ++ src/Convert/SizeCast.hs | 2 +- src/Convert/Traverse.hs | 4 +--- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/Convert/DimensionQuery.hs b/src/Convert/DimensionQuery.hs index cf595d0..e7b5ef9 100644 --- a/src/Convert/DimensionQuery.hs +++ b/src/Convert/DimensionQuery.hs @@ -55,8 +55,7 @@ traverseStmtM :: Stmt -> State Info Stmt traverseStmtM stmt = traverseStmtExprsM traverseExprM stmt traverseExprM :: Expr -> State Info Expr -traverseExprM = traverseNestedExprsM $ stately converter - where converter a b = simplify $ (traverseNestedExprs (convertExpr a) b) +traverseExprM = traverseNestedExprsM $ stately convertExpr -- elaborate integer atom types to have explicit dimensions elaborateType :: Type -> Type diff --git a/src/Convert/Simplify.hs b/src/Convert/Simplify.hs index 368271b..e340841 100644 --- a/src/Convert/Simplify.hs +++ b/src/Convert/Simplify.hs @@ -71,6 +71,8 @@ convertExpr info (Mux cc aa bb) = where before = substitute info cc after = simplify before +convertExpr _ (other @ Repeat{}) = traverseNestedExprs simplify other +convertExpr _ (other @ Concat{}) = simplify other convertExpr _ other = other substitute :: Info -> Expr -> Expr diff --git a/src/Convert/SizeCast.hs b/src/Convert/SizeCast.hs index 98f7066..eefca79 100644 --- a/src/Convert/SizeCast.hs +++ b/src/Convert/SizeCast.hs @@ -76,7 +76,7 @@ castFn e sg = Function (Just Automatic) t fnName [decl] [Return $ Ident inp] where inp = "inp" - r = (BinOp Sub e (Number "1"), Number "0") + r = (simplify $ BinOp Sub e (Number "1"), Number "0") t = IntegerVector TLogic sg [r] fnName = castFnName e sg decl = Variable Input t inp [] Nothing diff --git a/src/Convert/Traverse.hs b/src/Convert/Traverse.hs index 3121fda..3fe851f 100644 --- a/src/Convert/Traverse.hs +++ b/src/Convert/Traverse.hs @@ -349,9 +349,7 @@ traverseAssertionExprsM mapper = assertionMapper propExprMapper (PropExprIff p1 p2) = ppMapper PropExprIff p1 p2 propSpecMapper (PropertySpec ms me pe) = do - me' <- case me of - Nothing -> return Nothing - Just e -> mapper e >>= return . Just + me' <- maybeExprMapper me pe' <- propExprMapper pe return $ PropertySpec ms me' pe' assertionExprMapper (Left e) =