-
Notifications
You must be signed in to change notification settings - Fork 11.5k
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] Sparse conditional IP constant propagation #787
Comments
assigned to @lattner |
There are some notes for this bug here: -Chris |
Here's a trivial testcase this should handle: implementation ; Functions: internal int %foo(int %X) { void %bar() { IPCP should realize that %X is always '17'. The current, simple IPCP, should -Chris |
ok, another note. Simple IPCP now handles the simple case above. |
Initial implementation: There is more to come for this PR, stay tuned! -Chris |
This is now implemented, named -ipsccp. -Chris |
…m#787) This PR verifies `cir.get_global` has its result type correctly annotated with address space of the referenced symbol. The documentation is also updated to clarify this constraint. `GlobalOp` is the main consideration. It's worth noting that if the `cir.get_global` op references a function, we also (implicitly) checks that its result pointer type has no address space attribute.
Extended Description
Brian pointed out that the Olden/mst benchmark has code that basically looks
like this:
main() {
Do_all_BlueRule(..., 1, 0);
}
void Do_all_BlueRule(..., int nproc, int pn) {
if (nproc > 1) {
Do_all_BlueRule(nproc/2, nproc/2+pn);
... A BUNCH OF OTHER STUFF ...
}
bar();
}
The observation is that Do_all_BlueRule contains a bunch of code that is
dynamically dead, but it requires a smarter IPCP algorithm to notice it (the
unreachable recursive call causes us to miss this).
It seems like an aggressive IPCP coupled with SCCP'y techniques could solve this
pretty easily.
-Chris
The text was updated successfully, but these errors were encountered: