-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
Map RPIT duplicated lifetimes back to fn captured lifetimes #114602
Conversation
@bors try @rust-timer queue |
This comment has been minimized.
This comment has been minimized.
⌛ Trying commit bc461799fc9e220b2024d76858cf84251b73af70 with merge 82ab41b39edc01008508d4b458cc34ede29be16b... |
bc46179
to
688c743
Compare
@bors try |
⌛ Trying commit 688c743ff88e9db224a16751dc5a1da4c949c6c6 with merge f66ef3d2de1894e1454094853abcdeb83cd3e06d... |
☀️ Try build successful - checks-actions |
This comment has been minimized.
This comment has been minimized.
688c743
to
7fb0aa7
Compare
This comment has been minimized.
This comment has been minimized.
9f4789d
to
c05615e
Compare
This comment has been minimized.
This comment has been minimized.
c05615e
to
0614554
Compare
Finished benchmarking commit (f66ef3d2de1894e1454094853abcdeb83cd3e06d): comparison URL. Overall result: no relevant changes - no action neededBenchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf. @bors rollup=never 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: 652.752s -> 650.391s (-0.36%) |
0614554
to
3942d2a
Compare
…he args from the single use of a RPIT in its parent function's return type
3942d2a
to
0adf704
Compare
@bors r+ |
☀️ Test successful - checks-actions |
1 similar comment
☀️ Test successful - checks-actions |
Finished benchmarking commit (bf62436): comparison URL. Overall result: ✅ improvements - no action needed@rustbot label: -perf-regression Instruction countThis is a highly reliable metric that was used to determine the overall result at the top of this comment.
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: 633.541s -> 631.076s (-0.39%) |
Use the
lifetime_mapping
to map an RPIT's captured lifetimes back to the early- or late-bound lifetimes from its parent function. We may be going thru several layers of mapping, since opaques can be nested, so we introduceTyCtxt::map_rpit_lifetime_to_fn_lifetime
to loop through several opaques worth of mapping, and handle turning it into aty::Region
as well.We can then use this instead of the identity substs for RPITs in
check_opaque_meets_bounds
to address #114285.We can then also use
map_rpit_lifetime_to_fn_lifetime
to properly install bidirectional-outlives predicates for both RPITs and RPITITs. This addresses #114601.I based this on #114574, but I don't actually know how much of that PR we still need, so some code may be redundant now... 🤷
Fixes #114597
Fixes #114579
Fixes #114285
Also fixes #114601, since it turns out we had other bugs with RPITITs and their duplicated lifetime params 😅.
Supersedes #114574
r? @oli-obk