-
Notifications
You must be signed in to change notification settings - Fork 13.2k
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
Process current bucket instead of parent's bucket when starting loop for dominators. #111596
Conversation
This comment has been minimized.
This comment has been minimized.
50e2bf1
to
ff68566
Compare
☔ The latest upstream changes (presumably #111585) made this pull request unmergeable. Please resolve the merge conflicts. |
ff68566
to
84339a6
Compare
A job failed! Check out the build log: (web) (plain) Click to see the possible cause of the failure (guessed by this bot)
|
Good catch! I thought I transcribed the impl pretty closely, but I must've missed something in this bit. I think this looks right to me though. @bors r+ |
☀️ Test successful - checks-actions |
Finished benchmarking commit (25f084d): comparison URL. Overall result: no relevant changes - no action needed@rustbot label: -perf-regression Instruction countThis benchmark run did not return any relevant results for this metric. Max RSS (memory usage)ResultsThis is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
CyclesResultsThis is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 641.899s -> 642.768s (0.14%) |
The linked paper by Georgiadis suggests in §2.2.3 to process
bucket[w]
when beginning the loop, instead ofbucket[parent[w]]
when finishing it.In the test case, we correctly computed
idom[2] = 0
andsdom[3] = 1
, but the algorithm returnedidom[3] = 1
, instead of the correct value 0, because of the path 0-7-2-3.This provoked LLVM ICE in #111061 (comment). LLVM checks that SSA assignments dominate uses using its own implementation of Lengauer-Tarjan, and saw case where rustc was breaking the dominance property.
r? @Mark-Simulacrum