summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Feuer <David.Feuer@gmail.com>2014-10-01 16:02:45 +0200
committerJoachim Breitner <mail@joachim-breitner.de>2014-10-01 18:20:26 +0200
commit93b8d0fd63cf8e00ca37c1ce76b93d4ee1fc56f8 (patch)
tree886fce730335d9d31aed12d8a341e50d0e428309
parent96a4062a7e7587592829c045b3b12c755cc8e329 (diff)
downloadhaskell-93b8d0fd63cf8e00ca37c1ce76b93d4ee1fc56f8.tar.gz
Simplify mergeSATInfo by using zipWith
Closes #9561.
-rw-r--r--compiler/simplCore/SAT.lhs27
1 files changed, 18 insertions, 9 deletions
diff --git a/compiler/simplCore/SAT.lhs b/compiler/simplCore/SAT.lhs
index f973c3569c..bd5b718669 100644
--- a/compiler/simplCore/SAT.lhs
+++ b/compiler/simplCore/SAT.lhs
@@ -139,15 +139,24 @@ pprStaticness NotStatic = ptext (sLit "NS")
mergeSATInfo :: SATInfo -> SATInfo -> SATInfo
-mergeSATInfo [] _ = []
-mergeSATInfo _ [] = []
-mergeSATInfo (NotStatic:statics) (_:apps) = NotStatic : mergeSATInfo statics apps
-mergeSATInfo (_:statics) (NotStatic:apps) = NotStatic : mergeSATInfo statics apps
-mergeSATInfo ((Static (VarApp v)):statics) ((Static (VarApp v')):apps) = (if v == v' then Static (VarApp v) else NotStatic) : mergeSATInfo statics apps
-mergeSATInfo ((Static (TypeApp t)):statics) ((Static (TypeApp t')):apps) = (if t `eqType` t' then Static (TypeApp t) else NotStatic) : mergeSATInfo statics apps
-mergeSATInfo ((Static (CoApp c)):statics) ((Static (CoApp c')):apps) = (if c `coreEqCoercion` c' then Static (CoApp c) else NotStatic) : mergeSATInfo statics apps
-mergeSATInfo l r = pprPanic "mergeSATInfo" $ ptext (sLit "Left:") <> pprSATInfo l <> ptext (sLit ", ")
- <> ptext (sLit "Right:") <> pprSATInfo r
+mergeSATInfo l r = zipWith mergeSA l r
+ where
+ mergeSA NotStatic _ = NotStatic
+ mergeSA _ NotStatic = NotStatic
+ mergeSA (Static (VarApp v)) (Static (VarApp v'))
+ | v == v' = Static (VarApp v)
+ | otherwise = NotStatic
+ mergeSA (Static (TypeApp t)) (Static (TypeApp t'))
+ | t `eqType` t' = Static (TypeApp t)
+ | otherwise = NotStatic
+ mergeSA (Static (CoApp c)) (Static (CoApp c'))
+ | c `coreEqCoercion` c' = Static (CoApp c)
+ | otherwise = NotStatic
+ mergeSA _ _ = pprPanic "mergeSATInfo" $
+ ptext (sLit "Left:")
+ <> pprSATInfo l <> ptext (sLit ", ")
+ <> ptext (sLit "Right:")
+ <> pprSATInfo r
mergeIdSATInfo :: IdSATInfo -> IdSATInfo -> IdSATInfo
mergeIdSATInfo = plusUFM_C mergeSATInfo