New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IPSCCP pass can't reach a fixed-point when conditions have dependency #57186
Comments
The issue here is that IPSCCP is using PredicateInfo to propagate conditional information. PredicateInfo only tracks information in blocks dominated by the true & false blocks of the branch. At construction time, neither |
Can we add a function to mark edge not executable when we propagate %b.0 = call i1 @llvm.ssa.copy.i1(i1 %b) to fix the issue? |
I think the edge Not sure if running IPSCCP is desirable, it is already quite expensive. |
It looks PredicateInfo doesn't support update dynamic also. No easy way to make it work. |
Trying to add some test code here https://github.com/bcl5980/llvm-project/tree/perf/ipsccp-loop
|
Try loop runipsccp to a fix point: The loop count statistcs is here: External/S...6.blender_r/526.blender_r.test 518.00
run ipsccp_loop It looks we have a lot of cases benefit from ipsccp-loop |
Is that the number of times we re-run IPSCCP? It may be interesting to see the difference in number of simplifications applied? Should be doable with the existing ipsccp stats. |
Yes, it is the number of times we re-run IPSCCP. |
https://alive2.llvm.org/ce/z/FCT5eJ
First time SCCPSolver's log:
We need to run IPSCCP twice to eliminate the dead branch with function
@use
.The text was updated successfully, but these errors were encountered: