-
Notifications
You must be signed in to change notification settings - Fork 13.4k
Move placeholder handling to a proper preprocessing step #140466
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
Move placeholder handling to a proper preprocessing step #140466
Conversation
r? lcnr |
8b2cab2
to
af75e13
Compare
Ok; revised SCC annotations have landed and I think I addressed all of your concerns so far @lcnr? |
af75e13
to
ef9cb23
Compare
@lcnr Fixed all the code review stuff now, I think! I amended it into the second commit. |
ef9cb23
to
b1e4ca5
Compare
This comment has been minimized.
This comment has been minimized.
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.
a few more comment nits, and then finally r=me ☠️ sry
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This commit breaks out the logic of placheolder rewriting into its own preprocessing step. The only functional change from this is that the preprocessing step (where extra `r: 'static` constraints are added) is performed upstream of Polonius legacy, finally affecting Polonius. That is mostly a by-product, though.
61f7324
to
49541b2
Compare
This comment has been minimized.
This comment has been minimized.
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.
@bors delegate+
Co-authored-by: lcnr <[email protected]>
470dcd7
to
f455c4f
Compare
|
@bors r+ rollup=never |
☀️ Test successful - checks-actions |
What is this?This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.Comparing 81a964c (parent) -> 425e142 (this PR) Test differencesShow 12 test diffs12 doctest diffs were found. These are ignored, as they are noisy. Test dashboardRun cargo run --manifest-path src/ci/citool/Cargo.toml -- \
test-dashboard 425e142686242c7e73f5e32c79071ae266f0f355 --output-dir test-dashboard And then open Job duration changes
How to interpret the job duration changes?Job durations can vary a lot, based on the actual runner instance |
Finished benchmarking commit (425e142): comparison URL. Overall result: ❌ regressions - please read the text belowOur benchmarks found a performance regression caused by this PR. Next Steps:
@rustbot label: +perf-regression Instruction countThis is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.
Max RSS (memory usage)Results (secondary 5.7%)This 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.
CyclesThis benchmark run did not return any relevant results for this metric. Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 750.423s -> 749.811s (-0.08%) |
perf triage: These regressions look real. One tiny regression in Cargo and two secondary benchmarks - I'm inclined to say this is fine as this is a piece of larger important work and the regressions are pretty limited. #130227 (which this PR is part of) does have a bit different perf results, so I guess it will also make more sense asses the perf impact of this work when more pieces of it lands. Is that a fair assesment? |
I think so, but it’s really strange that this has any performance impact at all. This PR only moves stuff around, the core logic is unchanged. |
But yes; it’s supposed to be a part of a larger set of work that would actually change the logic quite substantially. Unfortunately, the first two to three parts are adding redundant mechanisms before the third (or fourth, depending on how you slice it) actually reaps the benefits. |
Moving stuff around can affect inlining, so this is not that surprising, especially when the perf changes are this small. If this didn't change what the code does, then it's probably just that and it's spurious. Let's mark this as triaged then, thanks for quick response ;). @rustbot label: +perf-regression-triaged |
Region inference: Use outlives-static constraints in constraint search Revise the extra `r: 'static` constraints added upon universe issues to add an explanation, and use that explanation during constraint blame search. This greatly simplifies the region inference logic, which now does not need to reverse-engineer the event that caused a region to outlive `'static`. This cosmetically changes the output of two UI tests. I blessed them i separate commits with separate motivations, but that can of course be squashed as desired. We probably want that. The PR was extracted out of #130227 and consists of one-third of its functional payload. It is based on #140466, so that has to land first. We probably want a perf run of this. It shouldn't have much of an impact and a positive one if any, but I have been wrong before. In particular, SCC annotations are heavier now. r? lcnr
This commit breaks out the logic of placheolder rewriting into its own preprocessing step. It's one of the more boring
parts of #130227.
The only functional change from this is that the preprocessing step (where extra
r: 'static
constraints are added) is performed upstream of Polonius legacy, finally affecting Polonius. That is mostly a by-product, though.This should be reviewable by anyone in the compiler team, so
r? rust-lang/compiler