Really zap case-binder occurrence info: solves #5028
authorIan Lynagh <igloo@earth.li>
Fri, 1 Apr 2011 14:16:30 +0000 (15:16 +0100)
committerIan Lynagh <igloo@earth.li>
Fri, 1 Apr 2011 14:16:30 +0000 (15:16 +0100)
Converted from a darcs patch from Max Bolingbroke:
    Fri Apr  1 11:39:49 BST 2011  Max Bolingbroke <batterseapower@hotmail.com>
      * Really zap case-binder occurrence info: solves #5028

compiler/simplCore/OccurAnal.lhs

index ae8d960..7692b62 100644 (file)
@@ -1146,7 +1146,7 @@ wrapProxy (bndr, rhs_var, co) (body_usg, body)
   where
     (body_usg', tagged_bndr) = tagBinder body_usg bndr
     rhs_usg = unitVarEnv rhs_var NoOccInfo     -- We don't need exact info
-    rhs = mkCoerceI co (Var rhs_var)
+    rhs = mkCoerceI co (Var (zapIdOccInfo rhs_var)) -- See Note [Zap case binders in proxy bindings]
 \end{code}
 
 
@@ -1582,8 +1582,7 @@ extendProxyEnv pe scrut co case_bndr
   | otherwise          = PE env2 fvs2  --   don't extend
   where
     PE env1 fvs1 = trimProxyEnv pe [case_bndr]
-    zapped_case_bndr = zapIdOccInfo case_bndr  -- See Note [Zap case binders in proxy bindings]
-    env2 = extendVarEnv_Acc add single env1 scrut1 (zapped_case_bndr,co)
+    env2 = extendVarEnv_Acc add single env1 scrut1 (case_bndr,co)
     single cb_co = (scrut1, [cb_co]) 
     add cb_co (x, cb_cos) = (x, cb_co:cb_cos)
     fvs2 = fvs1 `unionVarSet`  freeVarsCoI co