diff options
author | Joachim Breitner <mail@joachim-breitner.de> | 2017-09-10 16:10:37 +0100 |
---|---|---|
committer | Joachim Breitner <mail@joachim-breitner.de> | 2017-09-12 11:01:10 -0400 |
commit | fe04f3783b662c52c4a0ff36b2d62a7a575998a5 (patch) | |
tree | 3a49d515bc700562621bb0d97a74a89bd0d174fb /compiler/specialise | |
parent | fe35b85a8cc72582e0f98a3059be00a9a2318a4a (diff) | |
download | haskell-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.hs | 2 |
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 |