summaryrefslogtreecommitdiff
path: root/compiler/stranal
diff options
context:
space:
mode:
authorSimon Peyton Jones <simonpj@microsoft.com>2017-06-28 14:45:40 +0100
committerSimon Peyton Jones <simonpj@microsoft.com>2017-06-28 14:45:40 +0100
commit87c5fdbba118db1938d699951a811cc2f6206d4d (patch)
tree3004f666ec1ad3e3e7351b67bd06aa50def8e939 /compiler/stranal
parentfae672f647fe00c303d8fb56971563c1a76ad04e (diff)
downloadhaskell-87c5fdbba118db1938d699951a811cc2f6206d4d.tar.gz
Zap stable unfoldings in worker/wrapper
This patch fixes the buglet described in Trac #13890.
Diffstat (limited to 'compiler/stranal')
-rw-r--r--compiler/stranal/WwLib.hs7
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/stranal/WwLib.hs b/compiler/stranal/WwLib.hs
index 8d41426935..f83aafe7b0 100644
--- a/compiler/stranal/WwLib.hs
+++ b/compiler/stranal/WwLib.hs
@@ -587,8 +587,11 @@ mkWWstr_one dflags fam_envs arg
; let unpk_args = zipWith3 mk_ww_arg uniqs inst_con_arg_tys cs
unbox_fn = mkUnpackCase (Var arg) co uniq1
data_con unpk_args
- rebox_fn = Let (NonRec arg con_app)
- con_app = mkConApp2 data_con inst_tys unpk_args `mkCast` mkSymCo co
+ arg_no_unf = zapStableUnfolding arg
+ -- See Note [Zap unfolding when beta-reducing]
+ -- in Simplify.hs; and see Trac #13890
+ rebox_fn = Let (NonRec arg_no_unf con_app)
+ con_app = mkConApp2 data_con inst_tys unpk_args `mkCast` mkSymCo co
; (_, worker_args, wrap_fn, work_fn) <- mkWWstr dflags fam_envs unpk_args
; return (True, worker_args, unbox_fn . wrap_fn, work_fn . rebox_fn) }
-- Don't pass the arg, rebox instead