Reuse free variable lists through nested closures
Consider NestedClosures and #7258; essentially, deeply nested closures exhibit quadratic compiler performance due to the fact that when allocating registers, each nesting level will have the compiler unpack the entire parent closure and then re-pack the variables into the child closure.
To solve this, check if the parent closure can be carried along wholesale, and pull variables from there so that the repackaging can be bypassed.
This comment contains an interesting test case: #7258 (comment 144932)
Trac metadata
Trac field | Value |
---|---|
Version | 8.2.1 |
Type | Task |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |