attempt number cast simplification after substitution

This commit is contained in:
Zachary Snow 2021-07-29 13:11:25 -04:00
parent 1aa30ea813
commit 37c8938eff
1 changed files with 7 additions and 6 deletions

View File

@ -49,14 +49,15 @@ pattern SimpleVector :: Signing -> Integer -> Integer -> Type
pattern SimpleVector sg l r <- IntegerVector _ sg [(RawNum l, RawNum r)]
insertExpr :: Identifier -> Expr -> Scoper Expr ()
insertExpr ident (Cast (Left (SimpleVector sg l r)) (Number n)) =
insertExpr ident $ Number $ numberCast signed size n
where
signed = sg == Signed
size = fromIntegral $ abs $ l - r + 1
insertExpr ident expr = do
expr' <- substituteExprM expr
when (isSimpleExpr expr') $ insertElem ident expr'
case expr' of
Cast (Left (SimpleVector sg l r)) (Number n) ->
insertElem ident $ Number $ numberCast signed size n
where
signed = sg == Signed
size = fromIntegral $ abs $ l - r + 1
_ -> when (isSimpleExpr expr') $ insertElem ident expr'
isSimpleExpr :: Expr -> Bool
isSimpleExpr Number{} = True