NFC: Propagate global effects via strongly-connected components#8607
NFC: Propagate global effects via strongly-connected components#8607stevenfontanella merged 3 commits intomainfrom
Conversation
e7a9067 to
3318f8f
Compare
3318f8f to
9bc667f
Compare
tlively
left a comment
There was a problem hiding this comment.
Nice, I hadn't even considered that you could just compute a single Effects for each SCC, then flow them along the edges between SCCs, completely avoiding any unbounded fixed point analysis.
tlively
left a comment
There was a problem hiding this comment.
What's the performance difference between the status quo and this solution?
Included that in the description, it's 0.13451015 -> 0.1328012 (1.3% improvement) on calcworker. Also after adding indirect effects (the next PR), the runtime is 0.146778 (+9% slower from main without this PR) (EDIT: after fixing some code, the runtime with indirect effects is about the same). All averaged across 20 runs with a release build. |
|
Are the speedup numbers for this particular pass, or the total workload? (if the latter, which?) |
|
This is from running |
572234c to
a6b6272
Compare
|
Sounds good about the numbers. |
Helps prevent huge visited sets and work queues for edges when traversing large call graphs. After adding support for indirect call effects, the previous algorithm would OOM or timeout when computing global effects for large binaries like calcworker.
Yields a small runtime improvement when tested on calcworker: 0.13451015 -> 0.1328012 (1.3%, averaged from 20 tries with a release build).
Part of #8615.