From 2d11beb698945ebfe472885def09fefa2f0d423e Mon Sep 17 00:00:00 2001 From: simonmar Date: Thu, 26 Jul 2001 10:06:22 +0000 Subject: [PATCH] [project @ 2001-07-26 10:06:22 by simonmar] Fix from Simon P.J. (committing over the phone :-) Add missing case in lub: lub Eval (Seq k Defer ds) = Lazy previously lub of Eval and Defer would have defaulted to Eval, which was overoptimistic. --- ghc/compiler/stranal/DmdAnal.lhs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ghc/compiler/stranal/DmdAnal.lhs b/ghc/compiler/stranal/DmdAnal.lhs index 0aeea0d..f7cef99 100644 --- a/ghc/compiler/stranal/DmdAnal.lhs +++ b/ghc/compiler/stranal/DmdAnal.lhs @@ -627,10 +627,11 @@ lub Abs Abs = Abs lub Abs (Seq k _ ds) = Seq k Defer ds -- Very important ('radicals' example) lub Abs d = Lazy -lub Eval Abs = Lazy -lub Eval Lazy = Lazy -lub Eval (Seq k Now ds) = Seq Keep Now ds -lub Eval d = Eval +lub Eval Abs = Lazy +lub Eval Lazy = Lazy +lub Eval (Seq k Now ds) = Seq Keep Now ds +lub Eval (Seq k Defer ds) = Lazy +lub Eval d = Eval lub (Call d1) (Call d2) = Call (lub d1 d2) -- 1.7.10.4