All, Looking for some guidance on narrowing down an issue I am seeing at work. Some background: large monorepo, many packages; I'm on MacOS Tahoe (26.6). I have a problematic module that causes GHC to allocate a HUGE amount of memory under certain conditions. Compilation never finishes - instead, the process is killed by the OS. * With -O1, GHC consumes a huge amount of memory (> 32GB) before getting killed by the OS. * Without -O1, but with all available -f flags that seemed to be implied by -O1, GHC does NOT blow up and compilation succeeds. (List of flags below.) The last output (with -ddump-phases) in the failing case is always "*** Specialise [aaa.Tests.Service.Client.TestHelpers]:" followed by a newline, then nothing else. I'm working to isolate the code that's causing the problem, to get to a repro case, but in the meantime can anyone suggest why -O1 fails but all the -f flags do not? Thank you! p.s. I'm happy to share logs but don't want to spam the list if those aren't necessary. ********** Here are all the flags I used in place of -O1: -fblock-layout-cfg -fcall-arity -fcase-folding -fcase-merge -fcore-constant-folding -fcmm-control-flow -fcmm-elim-common-blocks -fcmm-sink -fcmm-static-pred -fcore-constant-folding -fcpr-anal -fcross-module-specialise -fcse -fenable-rewrite-rules -fexitification -ffloat-in -ffull-laziness -fignore-asserts -finline-generics -floopification -fnum-constant-folding -fsolve-constant-dicts -fspecialise -fstg-cse -fstrictness -funbox-small-strict-fields -fworker-wrapper ********** Here is the (possibly) relevant logs for compilation with -O1 that failed: *** Checking old interface for aaa.Tests.Service.Client.TestHelpers (use -ddump-hi-diffs for more details): [62 of 74] Compiling aaa.Tests.Service.Client.TestHelpers ( test/aaa/Tests/Service/Client/TestHelpers.hs, /Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.o, /Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.dyn_o ) *** Parser [aaa.Tests.Service.Client.TestHelpers]: !!! Parser [aaa.Tests.Service.Client.TestHelpers]: finished in 7.28 milliseconds, allocated 2.470 megabytes *** Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: *** ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: !!! ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: finished in 1763.61 milliseconds, allocated 750.592 megabytes !!! Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: finished in 2449.36 milliseconds, allocated 962.845 megabytes *** Desugar [aaa.Tests.Service.Client.TestHelpers]: Result size of Desugar (before optimization) = {terms: 713, types: 33,167, coercions: 15,521, joins: 0/171} Result size of Desugar (after optimization) = {terms: 551, types: 27,957, coercions: 15,828, joins: 0/93} !!! Desugar [aaa.Tests.Service.Client.TestHelpers]: finished in 5.46 milliseconds, allocated 2.524 megabytes *** Simplifier [aaa.Tests.Service.Client.TestHelpers]: Result size of Simplifier iteration=1 = {terms: 2,677, types: 74,181, coercions: 37,908, joins: 0/155} Result size of Simplifier iteration=2 = {terms: 1,737, types: 52,195, coercions: 27,615, joins: 0/88} Result size of Simplifier iteration=3 = {terms: 1,673, types: 51,005, coercions: 19,466, joins: 0/80} Result size of Simplifier iteration=4 = {terms: 1,630, types: 50,531, coercions: 19,333, joins: 0/78} Result size of Simplifier = {terms: 1,630, types: 50,531, coercions: 19,333, joins: 0/78} !!! Simplifier [aaa.Tests.Service.Client.TestHelpers]: finished in 217.38 milliseconds, allocated 120.723 megabytes *** Specialise [aaa.Tests.Service.Client.TestHelpers]: ********** Here are those same logs (up to specialisation) for a compilation that succeeded (no -O1, only the -f flags): *** Checking old interface for aaa.Tests.Service.Client.TestHelpers (use -ddump-hi-diffs for more details): [62 of 74] Compiling aaa.Tests.Service.Client.TestHelpers ( test/aaa/Tests/Service/Client/TestHelpers.hs, /Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.o, /Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.dyn_o ) *** Parser [aaa.Tests.Service.Client.TestHelpers]: !!! Parser [aaa.Tests.Service.Client.TestHelpers]: finished in 5.70 milliseconds, allocated 2.470 megabytes *** Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: *** ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: !!! ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: finished in 1707.88 milliseconds, allocated 749.094 megabytes !!! Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: finished in 2305.51 milliseconds, allocated 959.358 megabytes *** Desugar [aaa.Tests.Service.Client.TestHelpers]: Result size of Desugar (before optimization) = {terms: 713, types: 33,167, coercions: 15,521, joins: 0/171} Result size of Desugar (after optimization) = {terms: 551, types: 27,957, coercions: 15,828, joins: 0/93} !!! Desugar [aaa.Tests.Service.Client.TestHelpers]: finished in 4.66 milliseconds, allocated 2.526 megabytes *** Simplifier [aaa.Tests.Service.Client.TestHelpers]: Result size of Simplifier iteration=1 = {terms: 555, types: 27,953, coercions: 15,828, joins: 0/93} Result size of Simplifier = {terms: 555, types: 27,953, coercions: 15,828, joins: 0/93} !!! Simplifier [aaa.Tests.Service.Client.TestHelpers]: finished in 8.60 milliseconds, allocated 5.818 megabytes *** Specialise [aaa.Tests.Service.Client.TestHelpers]: Result size of Specialise = {terms: 555, types: 27,953, coercions: 15,828, joins: 0/10} !!! Specialise [aaa.Tests.Service.Client.TestHelpers]: finished in 3.98 milliseconds, allocated 2.227 megabytes
Maybe the specialiser is somehow looping or generating a huge program. What I would do is to un-comment some of the `pprTrace` lines in GHC.Core.Opt.Specialise and try again to ss what's going on inside the specialiser. But that requires you to build GHC itself, and I don't know if you are set up to do that. Simon On Tue, 4 Aug 2026 at 22:08, Justin Bailey via ghc-devs < ghc-devs@haskell.org> wrote:
All,
Looking for some guidance on narrowing down an issue I am seeing at work. Some background: large monorepo, many packages; I'm on MacOS Tahoe (26.6).
I have a problematic module that causes GHC to allocate a HUGE amount of memory under certain conditions. Compilation never finishes - instead, the process is killed by the OS.
* With -O1, GHC consumes a huge amount of memory (> 32GB) before getting killed by the OS. * Without -O1, but with all available -f flags that seemed to be implied by -O1, GHC does NOT blow up and compilation succeeds. (List of flags below.)
The last output (with -ddump-phases) in the failing case is always "*** Specialise [aaa.Tests.Service.Client.TestHelpers]:" followed by a newline, then nothing else.
I'm working to isolate the code that's causing the problem, to get to a repro case, but in the meantime can anyone suggest why -O1 fails but all the -f flags do not?
Thank you!
p.s. I'm happy to share logs but don't want to spam the list if those aren't necessary.
********** Here are all the flags I used in place of -O1:
-fblock-layout-cfg -fcall-arity -fcase-folding -fcase-merge -fcore-constant-folding -fcmm-control-flow -fcmm-elim-common-blocks -fcmm-sink -fcmm-static-pred -fcore-constant-folding -fcpr-anal -fcross-module-specialise -fcse -fenable-rewrite-rules -fexitification -ffloat-in -ffull-laziness -fignore-asserts -finline-generics -floopification -fnum-constant-folding -fsolve-constant-dicts -fspecialise -fstg-cse -fstrictness -funbox-small-strict-fields -fworker-wrapper
**********
Here is the (possibly) relevant logs for compilation with -O1 that failed:
*** Checking old interface for aaa.Tests.Service.Client.TestHelpers (use -ddump-hi-diffs for more details): [62 of 74] Compiling aaa.Tests.Service.Client.TestHelpers ( test/aaa/Tests/Service/Client/TestHelpers.hs,
/Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.o,
/Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.dyn_o ) *** Parser [aaa.Tests.Service.Client.TestHelpers]: !!! Parser [aaa.Tests.Service.Client.TestHelpers]: finished in 7.28 milliseconds, allocated 2.470 megabytes *** Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: *** ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: !!! ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: finished in 1763.61 milliseconds, allocated 750.592 megabytes !!! Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: finished in 2449.36 milliseconds, allocated 962.845 megabytes *** Desugar [aaa.Tests.Service.Client.TestHelpers]: Result size of Desugar (before optimization) = {terms: 713, types: 33,167, coercions: 15,521, joins: 0/171} Result size of Desugar (after optimization) = {terms: 551, types: 27,957, coercions: 15,828, joins: 0/93} !!! Desugar [aaa.Tests.Service.Client.TestHelpers]: finished in 5.46 milliseconds, allocated 2.524 megabytes *** Simplifier [aaa.Tests.Service.Client.TestHelpers]: Result size of Simplifier iteration=1 = {terms: 2,677, types: 74,181, coercions: 37,908, joins: 0/155} Result size of Simplifier iteration=2 = {terms: 1,737, types: 52,195, coercions: 27,615, joins: 0/88} Result size of Simplifier iteration=3 = {terms: 1,673, types: 51,005, coercions: 19,466, joins: 0/80} Result size of Simplifier iteration=4 = {terms: 1,630, types: 50,531, coercions: 19,333, joins: 0/78} Result size of Simplifier = {terms: 1,630, types: 50,531, coercions: 19,333, joins: 0/78} !!! Simplifier [aaa.Tests.Service.Client.TestHelpers]: finished in 217.38 milliseconds, allocated 120.723 megabytes *** Specialise [aaa.Tests.Service.Client.TestHelpers]:
**********
Here are those same logs (up to specialisation) for a compilation that succeeded (no -O1, only the -f flags):
*** Checking old interface for aaa.Tests.Service.Client.TestHelpers (use -ddump-hi-diffs for more details): [62 of 74] Compiling aaa.Tests.Service.Client.TestHelpers ( test/aaa/Tests/Service/Client/TestHelpers.hs,
/Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.o,
/Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.dyn_o ) *** Parser [aaa.Tests.Service.Client.TestHelpers]: !!! Parser [aaa.Tests.Service.Client.TestHelpers]: finished in 5.70 milliseconds, allocated 2.470 megabytes *** Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: *** ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: !!! ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: finished in 1707.88 milliseconds, allocated 749.094 megabytes !!! Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: finished in 2305.51 milliseconds, allocated 959.358 megabytes *** Desugar [aaa.Tests.Service.Client.TestHelpers]: Result size of Desugar (before optimization) = {terms: 713, types: 33,167, coercions: 15,521, joins: 0/171} Result size of Desugar (after optimization) = {terms: 551, types: 27,957, coercions: 15,828, joins: 0/93} !!! Desugar [aaa.Tests.Service.Client.TestHelpers]: finished in 4.66 milliseconds, allocated 2.526 megabytes *** Simplifier [aaa.Tests.Service.Client.TestHelpers]: Result size of Simplifier iteration=1 = {terms: 555, types: 27,953, coercions: 15,828, joins: 0/93} Result size of Simplifier = {terms: 555, types: 27,953, coercions: 15,828, joins: 0/93} !!! Simplifier [aaa.Tests.Service.Client.TestHelpers]: finished in 8.60 milliseconds, allocated 5.818 megabytes *** Specialise [aaa.Tests.Service.Client.TestHelpers]: Result size of Specialise = {terms: 555, types: 27,953, coercions: 15,828, joins: 0/10} !!! Specialise [aaa.Tests.Service.Client.TestHelpers]: finished in 3.98 milliseconds, allocated 2.227 megabytes _______________________________________________ ghc-devs mailing list -- ghc-devs@haskell.org To unsubscribe send an email to ghc-devs-leave@haskell.org
Thank you for the suggestion! It does seem to be something huge. I can get output from the specialisation pass for some programs and I see things like: Result size of Specialise = {terms: 200, types: 552, coercions: 95, joins: 0/21} Result size of Specialise = {terms: 29,314, types: 316,883, coercions: 73,030, joins: 0/627} Result size of Specialise = {terms: 2,362,118, types: 25,657,037, coercions: 5,919,604, joins: 0/49,227} I'll attempt to use a modified GHC :pray: On Tue, Aug 4, 2026 at 3:41 PM Simon Peyton Jones <simon.peytonjones@gmail.com> wrote:
Maybe the specialiser is somehow looping or generating a huge program.
What I would do is to un-comment some of the `pprTrace` lines in GHC.Core.Opt.Specialise and try again to ss what's going on inside the specialiser. But that requires you to build GHC itself, and I don't know if you are set up to do that.
Simon
On Tue, 4 Aug 2026 at 22:08, Justin Bailey via ghc-devs <ghc-devs@haskell.org> wrote:
All,
Looking for some guidance on narrowing down an issue I am seeing at work. Some background: large monorepo, many packages; I'm on MacOS Tahoe (26.6).
I have a problematic module that causes GHC to allocate a HUGE amount of memory under certain conditions. Compilation never finishes - instead, the process is killed by the OS.
* With -O1, GHC consumes a huge amount of memory (> 32GB) before getting killed by the OS. * Without -O1, but with all available -f flags that seemed to be implied by -O1, GHC does NOT blow up and compilation succeeds. (List of flags below.)
The last output (with -ddump-phases) in the failing case is always "*** Specialise [aaa.Tests.Service.Client.TestHelpers]:" followed by a newline, then nothing else.
I'm working to isolate the code that's causing the problem, to get to a repro case, but in the meantime can anyone suggest why -O1 fails but all the -f flags do not?
Thank you!
p.s. I'm happy to share logs but don't want to spam the list if those aren't necessary.
********** Here are all the flags I used in place of -O1:
-fblock-layout-cfg -fcall-arity -fcase-folding -fcase-merge -fcore-constant-folding -fcmm-control-flow -fcmm-elim-common-blocks -fcmm-sink -fcmm-static-pred -fcore-constant-folding -fcpr-anal -fcross-module-specialise -fcse -fenable-rewrite-rules -fexitification -ffloat-in -ffull-laziness -fignore-asserts -finline-generics -floopification -fnum-constant-folding -fsolve-constant-dicts -fspecialise -fstg-cse -fstrictness -funbox-small-strict-fields -fworker-wrapper
**********
Here is the (possibly) relevant logs for compilation with -O1 that failed:
*** Checking old interface for aaa.Tests.Service.Client.TestHelpers (use -ddump-hi-diffs for more details): [62 of 74] Compiling aaa.Tests.Service.Client.TestHelpers ( test/aaa/Tests/Service/Client/TestHelpers.hs, /Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.o, /Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.dyn_o ) *** Parser [aaa.Tests.Service.Client.TestHelpers]: !!! Parser [aaa.Tests.Service.Client.TestHelpers]: finished in 7.28 milliseconds, allocated 2.470 megabytes *** Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: *** ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: !!! ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: finished in 1763.61 milliseconds, allocated 750.592 megabytes !!! Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: finished in 2449.36 milliseconds, allocated 962.845 megabytes *** Desugar [aaa.Tests.Service.Client.TestHelpers]: Result size of Desugar (before optimization) = {terms: 713, types: 33,167, coercions: 15,521, joins: 0/171} Result size of Desugar (after optimization) = {terms: 551, types: 27,957, coercions: 15,828, joins: 0/93} !!! Desugar [aaa.Tests.Service.Client.TestHelpers]: finished in 5.46 milliseconds, allocated 2.524 megabytes *** Simplifier [aaa.Tests.Service.Client.TestHelpers]: Result size of Simplifier iteration=1 = {terms: 2,677, types: 74,181, coercions: 37,908, joins: 0/155} Result size of Simplifier iteration=2 = {terms: 1,737, types: 52,195, coercions: 27,615, joins: 0/88} Result size of Simplifier iteration=3 = {terms: 1,673, types: 51,005, coercions: 19,466, joins: 0/80} Result size of Simplifier iteration=4 = {terms: 1,630, types: 50,531, coercions: 19,333, joins: 0/78} Result size of Simplifier = {terms: 1,630, types: 50,531, coercions: 19,333, joins: 0/78} !!! Simplifier [aaa.Tests.Service.Client.TestHelpers]: finished in 217.38 milliseconds, allocated 120.723 megabytes *** Specialise [aaa.Tests.Service.Client.TestHelpers]:
**********
Here are those same logs (up to specialisation) for a compilation that succeeded (no -O1, only the -f flags):
*** Checking old interface for aaa.Tests.Service.Client.TestHelpers (use -ddump-hi-diffs for more details): [62 of 74] Compiling aaa.Tests.Service.Client.TestHelpers ( test/aaa/Tests/Service/Client/TestHelpers.hs, /Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.o, /Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.dyn_o ) *** Parser [aaa.Tests.Service.Client.TestHelpers]: !!! Parser [aaa.Tests.Service.Client.TestHelpers]: finished in 5.70 milliseconds, allocated 2.470 megabytes *** Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: *** ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: !!! ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: finished in 1707.88 milliseconds, allocated 749.094 megabytes !!! Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: finished in 2305.51 milliseconds, allocated 959.358 megabytes *** Desugar [aaa.Tests.Service.Client.TestHelpers]: Result size of Desugar (before optimization) = {terms: 713, types: 33,167, coercions: 15,521, joins: 0/171} Result size of Desugar (after optimization) = {terms: 551, types: 27,957, coercions: 15,828, joins: 0/93} !!! Desugar [aaa.Tests.Service.Client.TestHelpers]: finished in 4.66 milliseconds, allocated 2.526 megabytes *** Simplifier [aaa.Tests.Service.Client.TestHelpers]: Result size of Simplifier iteration=1 = {terms: 555, types: 27,953, coercions: 15,828, joins: 0/93} Result size of Simplifier = {terms: 555, types: 27,953, coercions: 15,828, joins: 0/93} !!! Simplifier [aaa.Tests.Service.Client.TestHelpers]: finished in 8.60 milliseconds, allocated 5.818 megabytes *** Specialise [aaa.Tests.Service.Client.TestHelpers]: Result size of Specialise = {terms: 555, types: 27,953, coercions: 15,828, joins: 0/10} !!! Specialise [aaa.Tests.Service.Client.TestHelpers]: finished in 3.98 milliseconds, allocated 2.227 megabytes _______________________________________________ ghc-devs mailing list -- ghc-devs@haskell.org To unsubscribe send an email to ghc-devs-leave@haskell.org
It sounds as if the specialiser is going mad, generating tons and tons of specialisations. If you can make your own GHC I can tell you how to spit out a trace whenever it makes a speicalisation; then we can see what it is doing. Simon On Wed, 5 Aug 2026 at 02:10, Justin Bailey <jgbailey@gmail.com> wrote:
Thank you for the suggestion! It does seem to be something huge. I can get output from the specialisation pass for some programs and I see things like:
Result size of Specialise = {terms: 200, types: 552, coercions: 95, joins: 0/21}
Result size of Specialise = {terms: 29,314, types: 316,883, coercions: 73,030, joins: 0/627}
Result size of Specialise = {terms: 2,362,118, types: 25,657,037, coercions: 5,919,604, joins: 0/49,227}
I'll attempt to use a modified GHC :pray:
On Tue, Aug 4, 2026 at 3:41 PM Simon Peyton Jones <simon.peytonjones@gmail.com> wrote:
Maybe the specialiser is somehow looping or generating a huge program.
What I would do is to un-comment some of the `pprTrace` lines in
GHC.Core.Opt.Specialise and try again to ss what's going on inside the specialiser. But that requires you to build GHC itself, and I don't know if you are set up to do that.
Simon
On Tue, 4 Aug 2026 at 22:08, Justin Bailey via ghc-devs <
ghc-devs@haskell.org> wrote:
All,
Looking for some guidance on narrowing down an issue I am seeing at work. Some background: large monorepo, many packages; I'm on MacOS Tahoe (26.6).
I have a problematic module that causes GHC to allocate a HUGE amount of memory under certain conditions. Compilation never finishes - instead, the process is killed by the OS.
* With -O1, GHC consumes a huge amount of memory (> 32GB) before getting killed by the OS. * Without -O1, but with all available -f flags that seemed to be implied by -O1, GHC does NOT blow up and compilation succeeds. (List of flags below.)
The last output (with -ddump-phases) in the failing case is always "*** Specialise [aaa.Tests.Service.Client.TestHelpers]:" followed by a newline, then nothing else.
I'm working to isolate the code that's causing the problem, to get to a repro case, but in the meantime can anyone suggest why -O1 fails but all the -f flags do not?
Thank you!
p.s. I'm happy to share logs but don't want to spam the list if those aren't necessary.
********** Here are all the flags I used in place of -O1:
-fblock-layout-cfg -fcall-arity -fcase-folding -fcase-merge -fcore-constant-folding -fcmm-control-flow -fcmm-elim-common-blocks -fcmm-sink -fcmm-static-pred -fcore-constant-folding -fcpr-anal -fcross-module-specialise -fcse -fenable-rewrite-rules -fexitification -ffloat-in -ffull-laziness -fignore-asserts -finline-generics -floopification -fnum-constant-folding -fsolve-constant-dicts -fspecialise -fstg-cse -fstrictness -funbox-small-strict-fields -fworker-wrapper
**********
Here is the (possibly) relevant logs for compilation with -O1 that
failed:
*** Checking old interface for aaa.Tests.Service.Client.TestHelpers (use -ddump-hi-diffs for more details): [62 of 74] Compiling aaa.Tests.Service.Client.TestHelpers ( test/aaa/Tests/Service/Client/TestHelpers.hs,
/Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.o,
/Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.dyn_o
) *** Parser [aaa.Tests.Service.Client.TestHelpers]: !!! Parser [aaa.Tests.Service.Client.TestHelpers]: finished in 7.28 milliseconds, allocated 2.470 megabytes *** Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: *** ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: !!! ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: finished in 1763.61 milliseconds, allocated 750.592 megabytes !!! Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: finished in 2449.36 milliseconds, allocated 962.845 megabytes *** Desugar [aaa.Tests.Service.Client.TestHelpers]: Result size of Desugar (before optimization) = {terms: 713, types: 33,167, coercions: 15,521, joins: 0/171} Result size of Desugar (after optimization) = {terms: 551, types: 27,957, coercions: 15,828, joins: 0/93} !!! Desugar [aaa.Tests.Service.Client.TestHelpers]: finished in 5.46 milliseconds, allocated 2.524 megabytes *** Simplifier [aaa.Tests.Service.Client.TestHelpers]: Result size of Simplifier iteration=1 = {terms: 2,677, types: 74,181, coercions: 37,908, joins: 0/155} Result size of Simplifier iteration=2 = {terms: 1,737, types: 52,195, coercions: 27,615, joins: 0/88} Result size of Simplifier iteration=3 = {terms: 1,673, types: 51,005, coercions: 19,466, joins: 0/80} Result size of Simplifier iteration=4 = {terms: 1,630, types: 50,531, coercions: 19,333, joins: 0/78} Result size of Simplifier = {terms: 1,630, types: 50,531, coercions: 19,333, joins: 0/78} !!! Simplifier [aaa.Tests.Service.Client.TestHelpers]: finished in 217.38 milliseconds, allocated 120.723 megabytes *** Specialise [aaa.Tests.Service.Client.TestHelpers]:
**********
Here are those same logs (up to specialisation) for a compilation that succeeded (no -O1, only the -f flags):
*** Checking old interface for aaa.Tests.Service.Client.TestHelpers (use -ddump-hi-diffs for more details): [62 of 74] Compiling aaa.Tests.Service.Client.TestHelpers ( test/aaa/Tests/Service/Client/TestHelpers.hs,
/Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.o,
/Users/xxx.yyy/Source/health-engine/well-he-aaa/worktrees/master/dist-newstyle/build/aarch64-osx/ghc-9.14.1/aaa-service-client-0.0.0/t/test/noopt/build/test/test-tmp/aaa/Tests/Service/Client/TestHelpers.dyn_o
) *** Parser [aaa.Tests.Service.Client.TestHelpers]: !!! Parser [aaa.Tests.Service.Client.TestHelpers]: finished in 5.70 milliseconds, allocated 2.470 megabytes *** Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: *** ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: !!! ConsistencyCheck [aaa.Tests.Service.Client.TestHelpers]: finished in 1707.88 milliseconds, allocated 749.094 megabytes !!! Renamer/typechecker [aaa.Tests.Service.Client.TestHelpers]: finished in 2305.51 milliseconds, allocated 959.358 megabytes *** Desugar [aaa.Tests.Service.Client.TestHelpers]: Result size of Desugar (before optimization) = {terms: 713, types: 33,167, coercions: 15,521, joins: 0/171} Result size of Desugar (after optimization) = {terms: 551, types: 27,957, coercions: 15,828, joins: 0/93} !!! Desugar [aaa.Tests.Service.Client.TestHelpers]: finished in 4.66 milliseconds, allocated 2.526 megabytes *** Simplifier [aaa.Tests.Service.Client.TestHelpers]: Result size of Simplifier iteration=1 = {terms: 555, types: 27,953, coercions: 15,828, joins: 0/93} Result size of Simplifier = {terms: 555, types: 27,953, coercions: 15,828, joins: 0/93} !!! Simplifier [aaa.Tests.Service.Client.TestHelpers]: finished in 8.60 milliseconds, allocated 5.818 megabytes *** Specialise [aaa.Tests.Service.Client.TestHelpers]: Result size of Specialise = {terms: 555, types: 27,953, coercions: 15,828, joins: 0/10} !!! Specialise [aaa.Tests.Service.Client.TestHelpers]: finished in 3.98 milliseconds, allocated 2.227 megabytes _______________________________________________ ghc-devs mailing list -- ghc-devs@haskell.org To unsubscribe send an email to ghc-devs-leave@haskell.org
participants (2)
-
Justin Bailey -
Simon Peyton Jones