[GHC] #9229: Compiler memory use regression
#9229: Compiler memory use regression -------------------------+------------------------------------------------- Reporter: | Owner: augustss | Status: new Type: bug | Milestone: Priority: | Version: 7.8.2 normal | Operating System: Windows Component: | Type of failure: Compile-time performance bug Compiler | Test Case: Keywords: | Blocking: Architecture: | Unknown/Multiple | Difficulty: | Unknown | Blocked By: | Related Tickets: | -------------------------+------------------------------------------------- I have a module which compiles fine with ghc 7.6, but where ghc 7.8.2 runs out of memory (32-bit Windows). Sadly, I cannot supply the source code since it's proprietary, so I realize that this bug will be almost impossible to fix. It is possible to compile the module with -O0 and -O1, but not -O2. (This is a very performance critical module so I'd like -O2.) -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9229> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#9229: Compiler memory use regression -------------------------------------------------+------------------------- Reporter: augustss | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.2 Resolution: | Keywords: Operating System: Windows | Architecture: Type of failure: Compile-time performance bug | Unknown/Multiple Test Case: | Difficulty: Blocking: | Unknown | Blocked By: | Related Tickets: -------------------------------------------------+------------------------- Comment (by thoughtpolice): This is probably #8960. Is it possible for you to turn off SpecConstr with `-fno-spec-constr` and see what difference it makes in compilation time and resulting executable speed? -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9229#comment:1> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#9229: Compiler memory use regression -------------------------------------------------+------------------------- Reporter: augustss | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.2 Resolution: | Keywords: Operating System: Windows | Architecture: Type of failure: Compile-time performance bug | Unknown/Multiple Test Case: | Difficulty: Blocking: | Unknown | Blocked By: | Related Tickets: -------------------------------------------------+------------------------- Comment (by augustss): Yes, turning off SpecConstr makes it work. Thanks for the workaround! -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9229#comment:2> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#9229: Compiler memory use regression -------------------------------------+------------------------------------- Reporter: augustss | Owner: Type: bug | Status: infoneeded Priority: normal | Milestone: Component: Compiler | Version: 7.8.2 Resolution: | Keywords: Operating System: Windows | Architecture: Unknown/Multiple Type of failure: Compile- | Difficulty: Unknown time performance bug | Blocked By: Test Case: | Related Tickets: #8852, #8980, Blocking: | #8941, 8960, #7898, #7068, #7944, Differential Revisions: | #5550, #8836 -------------------------------------+------------------------------------- Changes (by thomie): * status: new => infoneeded * related: => #8852, #8980, #8941, 8960, #7898, #7068, #7944, #5550, #8836 Comment: Can you try to compile your module with either HEAD (the master branch) or the ghc-7.8 [wiki:Building/GettingTheSources branch]? Those branches contain the following bug fix, which should solve your problem: {{{ commit af4bc31c50c873344a2426d4be842f92edf17019 Author: Simon Peyton Jones <simonpj@microsoft.com> Date: Mon Aug 25 12:28:44 2014 +0100 Do not duplicate call information in SpecConstr (Trac #8852) This long-standing and egregious bug meant that call information was being gratuitously copied, leading to an exponential blowup in the number of calls to be examined when function definitions are deeply nested. That is what has been causing the blowup in SpecConstr's running time, not (as I had previously supposed) generating very large code. See Note [spec_usg includes rhs_usg] }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9229#comment:3> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#9229: Compiler memory use regression -------------------------------------+------------------------------------- Reporter: augustss | Owner: Type: bug | Status: infoneeded Priority: normal | Milestone: Component: Compiler | Version: 7.8.2 Resolution: | Keywords: Operating System: Windows | Architecture: Type of failure: Compile-time | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #8852, #8980, | Differential Revisions: #8941, 8960, #7898, #7068, #7944, | #5550, #8836 | -------------------------------------+------------------------------------- Comment (by augustss): I will test it when there's a win-32 ghc-7.8.4. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9229#comment:4> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#9229: Compiler memory use regression -------------------------------------+------------------------------------- Reporter: augustss | Owner: Type: bug | Status: closed Priority: normal | Milestone: Component: Compiler | Version: 7.8.2 Resolution: worksforme | Keywords: Operating System: Windows | Architecture: Type of failure: Compile-time | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #8852, #8980, | Differential Revisions: #8941, 8960, #7898, #7068, #7944, | #5550, #8836 | -------------------------------------+------------------------------------- Changes (by thomie): * status: infoneeded => closed * resolution: => worksforme Comment: Please reopen if this is still a problem. You can get ghc-7.8.4 for 32-bit windows here: https://www.haskell.org/ghc/download_ghc_7_8_4#windows -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9229#comment:5> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
participants (1)
-
GHC