@@ -66,10 +66,9 @@ copyPropagation = flip evalState mempty . hyloM rmBlocks builder where
6666 pure $ project $ EBind (SReturn valWithOrigVars) bpat rightExp
6767
6868 -- left unit law + eliminate redundant rebinds
69- EBind (SReturn (Var valVar)) (AsPat patVar asPat ) rightExp
69+ EBind (SReturn (Var valVar)) (AsPat patTag patArgs patVar ) rightExp
7070 | origVar <- getAlias valVar aliases
7171 , origVal <- getOrigVal origVar origVals
72- , ConstTagNode patTag patArgs <- asPat
7372 , ConstTagNode valTag valArgs <- origVal
7473 , patTag == valTag -> do
7574 let aliases' = aliases <> (Map. fromList $ zip (patVar: patArgs) (origVar: valArgs))
@@ -79,10 +78,9 @@ copyPropagation = flip evalState mempty . hyloM rmBlocks builder where
7978
8079 -- add the lhs value as an original value
8180 -- and eliminate redudant rebinds
82- EBind (SReturn val) (AsPat patVar asPat ) rightExp
81+ EBind (SReturn val) (AsPat patTag patArgs patVar ) rightExp
8382 | isn't _Lit val
8483 , valWithOrigVars <- substNamesVal aliases val
85- , ConstTagNode patTag patArgs <- asPat
8684 , ConstTagNode valTag valArgs <- valWithOrigVars
8785 , patTag == valTag -> do
8886 let origVals' = Map. insert patVar valWithOrigVars origVals
@@ -91,10 +89,10 @@ copyPropagation = flip evalState mempty . hyloM rmBlocks builder where
9189 put newEnv
9290 pure $ project $ EBind (SReturn val) (VarPat patVar) rightExp
9391
94- -- simplify as-pattern matching against the same basic value it binds
95- EBind (SReturn retVal) (AsPat var patVal ) rightExp
96- | isBasicValue retVal
97- , retVal == patVal -> do
92+ -- simplify as-pattern matching against the same node value it binds
93+ EBind (SReturn retVal@ ( ConstTagNode retTag retArgs)) (AsPat patTag patArgs var ) rightExp
94+ | retTag == patTag
95+ , retArgs == patArgs -> do
9896 pure $ project $ EBind (SReturn retVal) (VarPat var) rightExp
9997
10098 _ -> pure $ project exp'
0 commit comments