diff options
| author | simonpj@microsoft.com <unknown> | 2010-11-25 17:21:38 +0000 |
|---|---|---|
| committer | simonpj@microsoft.com <unknown> | 2010-11-25 17:21:38 +0000 |
| commit | 45a61df30f95b22d4818b6e3e3622707911bde03 (patch) | |
| tree | ae855f3803924ee4f4ec975a8707e5460d067e2c | |
| parent | 8d022fe21d265d3ab982ae2826d9d9e1438c3b68 (diff) | |
| download | haskell-45a61df30f95b22d4818b6e3e3622707911bde03.tar.gz | |
Make SpecConstr "look through" identity coercions
| -rw-r--r-- | compiler/specialise/SpecConstr.lhs | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/specialise/SpecConstr.lhs b/compiler/specialise/SpecConstr.lhs index cbe1c0b76a..0b61a57c0d 100644 --- a/compiler/specialise/SpecConstr.lhs +++ b/compiler/specialise/SpecConstr.lhs @@ -1549,6 +1549,9 @@ argToPat env in_scope val_env (Case scrut _ _ [(_, _, rhs)]) arg_occ -} argToPat env in_scope val_env (Cast arg co) arg_occ + | isIdentityCoercion co -- Substitution in the SpecConstr itself + -- can lead to identity coercions + = argToPat env in_scope val_env arg arg_occ | not (ignoreType env ty2) = do { (interesting, arg') <- argToPat env in_scope val_env arg arg_occ ; if not interesting then |
