Dataflow: Simplify the call-edge join in reverse through-flow.#18515
Conversation
There was a problem hiding this comment.
Copilot wasn't able to review any files in this pull request.
Files not reviewed (1)
- shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll: Language not supported
Tip: Copilot only keeps its highest confidence comments to reduce noise and keep you focused. Learn more
|
Dca is mostly uneventful, except for some clear performance improvements for a couple of JS projects. |
|
Looks good! I've started https://github.com/github/codeql-dca-main/issues/26112 to check if this fixes pathological case |
|
Looks like |
smowton
left a comment
There was a problem hiding this comment.
To a very similar degree, yes
So, 👍
Alternative to #18355.
For a summary edge
arg->par->ret->outfound in reverse flow with access pathsapatarg/parandinnerReturnApatret/outit seems superfluous to includeinnerReturnApin the call-edgearg-parjoin. The added constraint is that a path exists betweenparandretwith those access paths, but when we joinflowThroughIntoCallin reverse flow, then that exactly what we just established, so I don't think it adds much (if anything). Dropping the column avoids the need to materialize a combination of 3 access paths (ap,innerReturnAp, andreturnAp) that can vary independently in degenerate cases.