[llvm-dev] more reassociation in IR
Sanjay Patel via llvm-dev
llvm-dev at lists.llvm.org
Tue May 8 09:19:36 PDT 2018
There are at least 3 active proposals to add reassociative optimizations in
 D41574 <https://reviews.llvm.org/D41574>- a new pass for
 D46336 <https://reviews.llvm.org/D46336> - enhance -instcombine to do
 D45842 <https://reviews.llvm.org/D45842> - add to the existing
-reassociate pass to enable factoring
Here's a basic motivating example that we fail to optimize:
Currently, responsibility for reassociative transforms is split between
-reassociate and -instcombine. I don't know if that split is intentional or
just how the code evolved. Debug stats for test-suite compiled with -O3
78K "reassociations" by -instcombine.
58K "reassociated" by -reassociate
A debug stat with D45842 showed that that transform fired 1.3K times.
Keep in mind that instcombine runs 1st, runs to fixed-point, and runs 8
times in the -O2 pipeline. Reassociate runs 1 time and doesn't run to
fixed-point. Some transforms are unique to 1 pass or the other, but there
is some overlapping functionality already there.
So the questions are:
1. How do we solve these remaining reassociation optimizations?
2. Do we want to consolidate existing reassociation transforms in 1 pass or
is there value in splitting the folds across multiple passes?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev