summaryrefslogtreecommitdiff
path: root/compiler/specialise
diff options
context:
space:
mode:
authorsimonpj@microsoft.com <unknown>2010-11-25 17:21:38 +0000
committersimonpj@microsoft.com <unknown>2010-11-25 17:21:38 +0000
commit45a61df30f95b22d4818b6e3e3622707911bde03 (patch)
treeae855f3803924ee4f4ec975a8707e5460d067e2c /compiler/specialise
parent8d022fe21d265d3ab982ae2826d9d9e1438c3b68 (diff)
downloadhaskell-45a61df30f95b22d4818b6e3e3622707911bde03.tar.gz
Make SpecConstr "look through" identity coercions
Diffstat (limited to 'compiler/specialise')
-rw-r--r--compiler/specialise/SpecConstr.lhs3
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