[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