exponential blowup in inlining (without INLINE pragmas)
The test case for #10397 (closed) also demonstrates an exponential blowup by the inliner, without any INLINE pragmas.
I added another four fields to the Register
type, and I get these final Core program sizes. (The variation in sizes between versions is not really important, the point is just that they are very large for all versions.)
ghc-7.6.3:
*** CorePrep:
Result size of CorePrep
= {terms: 1,702,684, types: 1,950,647, coercions: 103}
ghc-7.8.4:
*** CorePrep:
Result size of CorePrep
= {terms: 1,964,183, types: 1,950,620, coercions: 97}
ghc-7.10.1:
*** CorePrep:
Result size of CorePrep
= {terms: 1,964,212, types: 1,950,764, coercions: 97}
ghc-7.11:
*** CorePrep:
Result size of CorePrep
= {terms: 1,964,212, types: 1,950,764, coercions: 97}
Ideally GHC should not produce enormous Core programs on its own like this.
Trac metadata
Trac field | Value |
---|---|
Version | 7.6.3 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |