Cache all results of running identifyNode, even those that do not identify
potential complex operations. This patch prevents ComplexDeinterleaving pass
from repeatedly trying to identify Nodes for the same pair of instructions.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
LGTM.
And after adding one extra u[i] = u[i] * (a[i] * b[i] + c[i]); line it takes 23 seconds.
Out of interest; How long does that sample take with this change? And any idea why the time it takes grows so quickly with a single statement?
Comment Actions
@NickGuy, it looks like we had O(2**N) complexity there where N is the depth of identifyNode call stack :)
After turning off complex deinterleaving, the file compiles for 0.5 seconds on my machine and with this patch and the complex deinterleaving enabled, it is still the same 0.5 seconds no matter how many times I copy/paste those lines.