[project @ 2001-03-01 13:44:33 by simonmar]
authorsimonmar <unknown>
Thu, 1 Mar 2001 13:44:33 +0000 (13:44 +0000)
committersimonmar <unknown>
Thu, 1 Mar 2001 13:44:33 +0000 (13:44 +0000)
fix an ASSERT: the isDeadBinder predicate can't be used here, because
all the Ids have been cloned with empty IdInfo.

ghc/compiler/coreSyn/CoreSat.lhs

index 3e53e9e..f80d356 100644 (file)
@@ -530,9 +530,10 @@ mkCase scrut@(Var fn `App` Type ty `App` arg) bndr alts
                      Case arg   new_bndr [deflt_alt]
        other      -> Case scrut bndr alts
   where
-    (deflt_alt : _) = [alt | alt@(DEFAULT,_,_) <- alts]
+    (deflt_alt@(_,_,rhs) : _) = [alt | alt@(DEFAULT,_,_) <- alts]
 
-    new_bndr = ASSERT( isDeadBinder bndr )     -- The binder shouldn't be used in the expression!
+       -- The binder shouldn't be used in the expression!
+    new_bndr = ASSERT2( not (bndr `elemVarSet` exprFreeVars rhs), ppr bndr )
               setIdType bndr (exprType arg)
        -- NB:  SeqOp :: forall a. a -> Int#
        -- So bndr has type Int#