[GHC] #14163: Stack Overflow with ApplicativeDo
GHC
ghc-devs at haskell.org
Tue Aug 29 10:21:23 UTC 2017
#14163: Stack Overflow with ApplicativeDo
-------------------------------------+-------------------------------------
Reporter: lippling | Owner: simonmar
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.2.1
Resolution: | Keywords: ApplicativeDo
Operating System: MacOS X | Architecture: x86_64
Type of failure: Compile-time | (amd64)
crash or panic | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Changes (by simonpj):
* keywords: => ApplicativeDo
* owner: (none) => simonmar
Comment:
OK Simon M is the expert here. But I did find that if I add the following
`traceRn` in `rearrangeForApplicativeDo`:
{{{
rearrangeForApplicativeDo ctxt stmts0 = do
optimal_ado <- goptM Opt_OptimalApplicativeDo
let stmt_tree | optimal_ado = mkStmtTreeOptimal stmts
| otherwise = mkStmtTreeHeuristic stmts
traceRn "rearrangeForADo" (ppr stmt_tree) <------------------- NEW
return_name <- lookupSyntaxName' returnMName
pure_name <- lookupSyntaxName' pureAName
}}}
then I get this output
{{{
rearrangeForADo
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
(StmtTreeBind
}}}
That is, it seems that `mkStmtTreeHeuristic`goes into a loop.
If you use `-foptimal-applicative-do` it works fine!
Over to you, Simon
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14163#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list