
#8275: Loopification breaks profiling ----------------------------------------+---------------------------------- Reporter: jstolarek | Owner: jstolarek Type: bug | Status: new Priority: highest | Milestone: 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: 8298 | Blocked By: | Related Tickets: ----------------------------------------+---------------------------------- Comment (by ezyang): If the C-- dump is too large, minimize the test case! Then you can look at each of the phases and see which one is inserting the extra stack check. It sounds like you have almost figured it out though. As for whether or not the LDV code needs to be done again, it depends on whether node (R1) changes when looping. If it does, yes, you need to run the LDV code, since the closure needs to be marked as used. Otherwise it will be idempotent, and you only need to run it once. This also reminds me, please make sure loopification interacts properly with `-falways-yields` (which guarantees that Haskell code will eventually yields); it sounds like either loopification must be disabled if always- yields is enabled, or the loop-back needs to insert a heap check for preemption purposes. And if a loop can be preempted, then the era can change, and yes, you need to run the LDV check after the preemption. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8275#comment:12 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler