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 |