summaryrefslogtreecommitdiff
path: root/compiler/specialise
diff options
context:
space:
mode:
authorJoachim Breitner <mail@joachim-breitner.de>2017-09-10 16:10:37 +0100
committerJoachim Breitner <mail@joachim-breitner.de>2017-09-12 11:01:10 -0400
commitfe04f3783b662c52c4a0ff36b2d62a7a575998a5 (patch)
tree3a49d515bc700562621bb0d97a74a89bd0d174fb /compiler/specialise
parentfe35b85a8cc72582e0f98a3059be00a9a2318a4a (diff)
downloadhaskell-fe04f3783b662c52c4a0ff36b2d62a7a575998a5.tar.gz
Allow CSE'ing of work-wrapped bindings (#14186)
the worker/wrapper creates an artificial INLINE pragma, which caused CSE to not do its work. We now recognize such artificial pragmas by using `NoUserInline` instead of `Inline` as the `InlineSpec`. Differential Revision: https://phabricator.haskell.org/D3939
Diffstat (limited to 'compiler/specialise')
-rw-r--r--compiler/specialise/Specialise.hs2
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/specialise/Specialise.hs b/compiler/specialise/Specialise.hs
index dfbb16a9cb..83f1ed78bb 100644
--- a/compiler/specialise/Specialise.hs
+++ b/compiler/specialise/Specialise.hs
@@ -1341,7 +1341,7 @@ specCalls mb_mod env existing_rules calls_for_me fn rhs
-- See Note [Specialising imported functions] in OccurAnal
| InlinePragma { inl_inline = Inlinable } <- inl_prag
- = (inl_prag { inl_inline = EmptyInlineSpec }, noUnfolding)
+ = (inl_prag { inl_inline = NoUserInline }, noUnfolding)
| otherwise
= (inl_prag, specUnfolding poly_tyvars spec_app