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
Data flow: Earlier call-context based dispatch filtering #13983
base: main
Are you sure you want to change the base?
Conversation
919931a
to
570654d
Compare
| @@ -778,9 +780,13 @@ module MakeImplCommon<InputSig Lang> { | |||
| * `ctx`. | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This qldoc needs an update - it's no longer correct now that you've shuffled the columns around.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought it was still correct; what would you suggest updating it to?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The call is no longer in the context ctx. It used to be that the return chain was from result to call and then further to ctx, so the return context was the result-to-call edge. Now that edge is the CallContextReturn ctx, the result is the callable in which ctx makes sense, and call is where we can return to (the prior ctx).
So keeping the DataFlowCallable as the result is going to make the qldoc phrasing awkward, since that's not really the "result" - rather, it is the call that's the "result". I.e. "Holds if result-to-call is a viable return edge in the context ctx."
066ec79
to
4d951d8
Compare
#11725 reveals the following bad join-orders when calculating flow in
and flow out
The bad join-orders happen because we first join with the full dispatch relation, only to afterwards filter away impossible call targets based on call contexts. This PR reorders the joins so we immediately filter away impossible call targets, when possible.