diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2017-03-17 16:25:41 +0000 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2017-03-17 16:31:13 +0000 |
commit | a7dbafe9292212f3cbc21be42eb326ab0701db7e (patch) | |
tree | 491cefd34aa9c60948e161469eaa7fccd592d051 /compiler/main/GhcPlugins.hs | |
parent | 567bc6bd194836233ce1576acd7a62b1867f6607 (diff) | |
download | haskell-a7dbafe9292212f3cbc21be42eb326ab0701db7e.tar.gz |
No join-point from an INLINE function with wrong arity
The main payload of this patch is NOT to make a join-point
from a function with an INLINE pragma and the wrong arity;
see Note [Join points and INLINE pragmas] in CoreOpt.
This is what caused Trac #13413.
But we must do the exact same thing in simpleOptExpr,
which drove me to the following refactoring:
* Move simpleOptExpr and simpleOptPgm from CoreSubst to a new
module CoreOpt along with a few others (exprIsConApp_maybe,
pushCoArg, etc)
This eliminates a module loop altogether (delete
CoreArity.hs-boot), and stops CoreSubst getting too huge.
* Rename Simplify.matchOrConvertToJoinPoint
to joinPointBinding_maybe
Move it to the new CoreOpt
Use it in simpleOptExpr as well as in Simplify
* Define CoreArity.joinRhsArity and use it
Diffstat (limited to 'compiler/main/GhcPlugins.hs')
-rw-r--r-- | compiler/main/GhcPlugins.hs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/compiler/main/GhcPlugins.hs b/compiler/main/GhcPlugins.hs index 2af2da8e7a..c064c0e833 100644 --- a/compiler/main/GhcPlugins.hs +++ b/compiler/main/GhcPlugins.hs @@ -41,7 +41,8 @@ import DataCon import CoreUtils import MkCore import CoreFVs -import CoreSubst +import CoreSubst hiding( substTyVarBndr, substCoVarBndr, extendCvSubst ) + -- These names are also exported by Type -- Core "extras" import Rules |