
#8275: Loopification breaks profiling ----------------------------------------+---------------------------------- Reporter: jstolarek | Owner: Type: bug | Status: patch Priority: high | Milestone: 7.8.1 Component: Profiling | Version: 7.7 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Building GHC failed | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: 8456 | Related Tickets: ----------------------------------------+---------------------------------- Comment (by parcs): Replying to [comment:33 jstolarek]:
Thanks Patrick! Currently I'm without my main laptop so I can't verify your patch - I will do it in Wednesday, unless someone else can do it before.
Okay, great. And here's an ugly PoC patch that moves the self-loop label below the stack check: {{{ #!diff diff --git a/compiler/codeGen/StgCmmBind.hs b/compiler/codeGen/StgCmmBind.hs index 16477c8..029b8af 100644 --- a/compiler/codeGen/StgCmmBind.hs +++ b/compiler/codeGen/StgCmmBind.hs @@ -481,7 +481,6 @@ closureCodeBody top_lvl bndr cl_info cc args arity body fv_details -- of a self-recursive tail call. See Note -- [Self-recursive tail calls] in StgCmmExpr ; loop_header_id <- newLabelC - ; emitLabel loop_header_id -- Extend reader monad with information that -- self-recursive tail calls can be optimized into local -- jumps diff --git a/compiler/codeGen/StgCmmHeap.hs b/compiler/codeGen/StgCmmHeap.hs index 55ddfd4..f01d042 100644 --- a/compiler/codeGen/StgCmmHeap.hs +++ b/compiler/codeGen/StgCmmHeap.hs @@ -615,6 +615,12 @@ do_checks mb_stk_hwm checkYield mb_alloc_lit do_gc = do Nothing -> return () Just stk_hwm -> tickyStackCheck >> (emit =<< mkCmmIfGoto (sp_oflo stk_hwm) gc_id) + self_loop_info <- getSelfLoop + case self_loop_info of + Just (_,loop_header_id,_) + | checkYield && isJust mb_stk_hwm -> emitLabel loop_header_id + _otherwise -> return () + if (isJust mb_alloc_lit) then do tickyHeapCheck }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8275#comment:34 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler