Investigate inlining sweetspot for Generics with `-fdicts-strict`
Summary
I noticed that T9630
is quite sensitive to inlining behaviour) when -fdicts-strict
is enabled.
In particular:
- Compiler performance is good with a low inlining threshold.
- Performance is good with a high inlining threshold.
- Compiler performance absolutely tanks at some point in between.
Steps to reproduce
Compile T9630 with different -funfolding-use-threshold
settings and -fdicts-strict.
Expected behavior
Compiler performance should be somewhat stable across unfolding thresholds and -fdicts-strict.
I assume this issue manifests itself in Cabal, where it causes the compile time regressions seen in !2575 (closed) as well.
This also affects generics runtime performance. As only after increasing the threshold T9630 get's rid of the generics instance overhead.
Things to look at
- Can this be solved by user given inline pragmas
- Can this be solved by derived generics code having inline pragmas
- Are there other approaches?