Skip to content
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

Add way to differentiate argument locals from other locals in Stable MIR #117095

Merged
merged 9 commits into from
Oct 26, 2023

Conversation

klinvill
Copy link
Contributor

@klinvill klinvill commented Oct 23, 2023

This PR resolves rust-lang/project-stable-mir#47 which request a way to differentiate argument locals in a SMIR Body from other locals.

Specifically, this PR exposes the arg_count field from the MIR Body. However, I'm opening this as a draft PR because I think there are a few outstanding questions on how this information should be exposed and described. Namely:

  • Is exposing arg_count the best way to surface this information to SMIR users? Would it be better to leave arg_count as a private field and add public methods (e.g. fn arguments(&self) -> Iter<'_, LocalDecls>) that may use the underlying arg_count info from the MIR body, but expose this information to users in a more convenient form? Or is it best to stick close to the current MIR convention?
  • If the answer to the above point is to stick with the current MIR convention (arg_count), is it reasonable to also commit to sticking to the current MIR convention that the first local is always the return local, while the next arg_count locals are always the (in-order) argument locals?
  • Should Body in SMIR only represent function bodies (as implied by the comment I added)? That seems to be the current case in MIR, but should this restriction always be the case for SMIR?

r? @celinval
r? @oli-obk

@rustbot
Copy link
Collaborator

rustbot commented Oct 23, 2023

Failed to set assignee to celinval: invalid assignee

Note: Only org members with at least the repository "read" role, users with write permissions, or people who have commented on the PR may be assigned.

@rustbot
Copy link
Collaborator

rustbot commented Oct 23, 2023

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @celinval (or someone else) soon.

Please see the contribution instructions for more information. Namely, in order to ensure the minimum review times lag, PR authors and assigned reviewers should ensure that the review label (S-waiting-on-review and S-waiting-on-author) stays updated, invoking these commands when appropriate:

  • @rustbot author: the review is finished, PR author should check the comments and take action accordingly
  • @rustbot review: the author is ready for a review, this PR will be queued again in the reviewer's queue

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Oct 23, 2023
@celinval
Copy link
Contributor

I definitely see a lot of benefit to add more user friendly APIs, such as get the ret place and a list of arguments. Unfortunately, we either have to make the fields all public or add a constructor to Body if we want to keep the details private

@klinvill
Copy link
Contributor Author

Is there a reason to avoid adding a constructor? I'd imagine a constructor and helper methods could be as simple as shown below (and then rustc_smir could just call the constructor instead of setting the fields directly):

impl Body {
    /// Constructs a `Body`.
    ///
    /// Required to build a `Body` from outside the crate because the `arg_count` field is private.
    pub fn new(blocks: Vec<BasicBlock>, locals: LocalDecls, arg_count: usize) -> Self {
        Self { blocks, locals, arg_count }
    }

    /// Gets the function's return local.
    pub fn ret_local(&self) -> &LocalDecl {
        &self.locals[0]
    }

    /// Gets the locals in `self` that correspond to the function's arguments.
    pub fn arg_locals(&self) -> &[LocalDecl] {
        &self.locals[1 .. self.arg_count + 1]
    }
}

@celinval
Copy link
Contributor

No... I actually like the encapsulation in cases where the type safety invariant depends on the relationship of its variables. I would suggest that you add a sanity check in the constructor: locals.len() > arg_count.

Copy link
Contributor

@celinval celinval left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me. Do you mark it as ready for review?

compiler/stable_mir/src/mir/body.rs Outdated Show resolved Hide resolved
compiler/stable_mir/src/mir/body.rs Outdated Show resolved Hide resolved
@klinvill
Copy link
Contributor Author

klinvill commented Oct 25, 2023

Looks good to me. Do you mark it as ready for review?

I'll go ahead and mark it as ready. I was trying to figure out how to add a unit test to make sure I didn't have any off-by-one errors, but it seems like constructing a LocalDecl requires a TyCtxt (as mentioned here) which seems like much more complexity than such a simple test should have. Should tests just be added to the project-stable-mir repo instead? (edit: or I suppose I could just add it to the ui tests that are currently failing)

@klinvill klinvill marked this pull request as ready for review October 25, 2023 20:42
@rustbot
Copy link
Collaborator

rustbot commented Oct 25, 2023

This PR changes Stable MIR

cc @oli-obk, @celinval, @spastorino, @ouz-a

@rust-log-analyzer

This comment has been minimized.

This field allows SMIR consumers to identify which locals correspond to
argument locals. It simply exposes the arg_count field from the MIR
representation.
This commit hides the arg_count field in Body and instead exposes more
stable and user-friendly methods to get the return and argument locals.
As a result, Body instances must now be constructed using the `new`
function.
This is particularly helpful for the ui tests, but also could be helpful
for Stable MIR users who just want all the locals without needing to
concatenate responses
@celinval
Copy link
Contributor

Yeah, unit tests can be quite challenging. For StableMIR, you can see this description on how we test our code: https://rust-lang.github.io/project-stable-mir/dev/index.html#test-suites

The word internal has connotations about information that's not exposed.
It's more accurate to say that the remaining locals apply only to the
inner part of the function, so I'm renaming them to inner locals.
The latest locals() method in stable MIR returns slices instead of vecs.
This commit also includes fixes to the existing tests that previously
referenced the private locals field.
@klinvill
Copy link
Contributor Author

I ended up just adding an extra test within the ui-fulldeps tests. I think that should be the right place for it.

compiler/stable_mir/src/mir/body.rs Outdated Show resolved Hide resolved
@oli-obk
Copy link
Contributor

oli-obk commented Oct 26, 2023

@bors r+ rollup

@bors
Copy link
Contributor

bors commented Oct 26, 2023

📌 Commit bac7d5b has been approved by oli-obk

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Oct 26, 2023
@oli-obk
Copy link
Contributor

oli-obk commented Oct 26, 2023

@bors r+ rollup

@bors
Copy link
Contributor

bors commented Oct 26, 2023

📌 Commit d55487d has been approved by oli-obk

It is now in the queue for this repository.

bors added a commit to rust-lang-ci/rust that referenced this pull request Oct 26, 2023
…iaskrgr

Rollup of 8 pull requests

Successful merges:

 - rust-lang#116905 (refactor(compiler/resolve): simplify some code)
 - rust-lang#117095 (Add way to differentiate argument locals from other locals in Stable MIR)
 - rust-lang#117143 (Avoid unbounded O(n^2) when parsing nested type args)
 - rust-lang#117194 (Minor improvements to `rustc_incremental`)
 - rust-lang#117202 (Revert "Remove TaKO8Ki from reviewers")
 - rust-lang#117207 (The value of `-Cinstrument-coverage=` doesn't need to be `Option`)
 - rust-lang#117214 (Quietly fail if an error has already occurred)
 - rust-lang#117221 (Rename type flag `HAS_TY_GENERATOR` to `HAS_TY_COROUTINE`)

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Oct 26, 2023
…iaskrgr

Rollup of 8 pull requests

Successful merges:

 - rust-lang#116905 (refactor(compiler/resolve): simplify some code)
 - rust-lang#117095 (Add way to differentiate argument locals from other locals in Stable MIR)
 - rust-lang#117143 (Avoid unbounded O(n^2) when parsing nested type args)
 - rust-lang#117194 (Minor improvements to `rustc_incremental`)
 - rust-lang#117202 (Revert "Remove TaKO8Ki from reviewers")
 - rust-lang#117207 (The value of `-Cinstrument-coverage=` doesn't need to be `Option`)
 - rust-lang#117214 (Quietly fail if an error has already occurred)
 - rust-lang#117221 (Rename type flag `HAS_TY_GENERATOR` to `HAS_TY_COROUTINE`)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit b66c6e7 into rust-lang:master Oct 26, 2023
11 checks passed
@rustbot rustbot added this to the 1.75.0 milestone Oct 26, 2023
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Oct 26, 2023
Rollup merge of rust-lang#117095 - klinvill:smir-fn-arg-count, r=oli-obk

Add way to differentiate argument locals from other locals in Stable MIR

This PR resolves rust-lang/project-stable-mir#47 which request a way to differentiate argument locals in a SMIR `Body` from other locals.

Specifically, this PR exposes the `arg_count` field from the MIR `Body`. However, I'm opening this as a draft PR because I think there are a few outstanding questions on how this information should be exposed and described. Namely:

- Is exposing `arg_count` the best way to surface this information to SMIR users? Would it be better to leave `arg_count` as a private field and add public methods (e.g. `fn arguments(&self) -> Iter<'_, LocalDecls>`) that may use the underlying `arg_count` info from the MIR body, but expose this information to users in a more convenient form? Or is it best to stick close to the current MIR convention?
- If the answer to the above point is to stick with the current MIR convention (`arg_count`), is it reasonable to also commit to sticking to the current MIR convention that the first local is always the return local, while the next `arg_count` locals are always the (in-order) argument locals?
- Should `Body` in SMIR only represent function bodies (as implied by the comment I added)? That seems to be the current case in MIR, but should this restriction always be the case for SMIR?

r? `@celinval`
r? `@oli-obk`
@klinvill klinvill deleted the smir-fn-arg-count branch October 26, 2023 21:06
bors-ferrocene bot added a commit to ferrocene/ferrocene that referenced this pull request Oct 31, 2023
74: Automated pull from upstream `master` r=tshepang a=github-actions[bot]


This PR pulls the following changes from the upstream repository:

* rust-lang/rust#117363
* rust-lang/rust#116405
* rust-lang/rust#117415
  * rust-lang/rust#117414
  * rust-lang/rust#117411
  * rust-lang/rust#117403
  * rust-lang/rust#117398
  * rust-lang/rust#117396
  * rust-lang/rust#117389
  * rust-lang/rust#116862
* rust-lang/rust#117405
  * rust-lang/rust#117395
  * rust-lang/rust#117390
  * rust-lang/rust#117383
  * rust-lang/rust#117376
  * rust-lang/rust#117370
  * rust-lang/rust#117357
  * rust-lang/rust#117356
  * rust-lang/rust#117317
  * rust-lang/rust#117132
  * rust-lang/rust#117068
  * rust-lang/rust#112463
* rust-lang/rust#117267
* rust-lang/rust#116939
* rust-lang/rust#117387
  * rust-lang/rust#117385
  * rust-lang/rust#117382
  * rust-lang/rust#117371
  * rust-lang/rust#117365
  * rust-lang/rust#117350
  * rust-lang/rust#117205
  * rust-lang/rust#117177
  * rust-lang/rust#117147
* rust-lang/rust#116485
* rust-lang/rust#117328
* rust-lang/rust#117332
* rust-lang/rust#117089
* rust-lang/rust#116733
* rust-lang/rust#116889
* rust-lang/rust#116270
* rust-lang/rust#117354
  * rust-lang/rust#117337
  * rust-lang/rust#117312
  * rust-lang/rust#117082
  * rust-lang/rust#117043
  * rust-lang/rust#115968
* rust-lang/rust#117336
  * rust-lang/rust#117325
  * rust-lang/rust#117322
  * rust-lang/rust#117259
  * rust-lang/rust#117170
* rust-lang/rust#117335
  * rust-lang/rust#117319
  * rust-lang/rust#117316
  * rust-lang/rust#117311
  * rust-lang/rust#117162
  * rust-lang/rust#115773
* rust-lang/rust#116447
* rust-lang/rust#117149
* rust-lang/rust#116240
* rust-lang/rust#117123
* rust-lang/rust#81746
* rust-lang/rust#117038
* rust-lang/rust#116609
* rust-lang/rust#117309
  * rust-lang/rust#117277
  * rust-lang/rust#117268
  * rust-lang/rust#117256
  * rust-lang/rust#117025
  * rust-lang/rust#116945
  * rust-lang/rust#116816
  * rust-lang/rust#116739
  * rust-lang/rust#116534
* rust-lang/rust#117253
* rust-lang/rust#117302
* rust-lang/rust#117197
* rust-lang/rust#116471
* rust-lang/rust#117294
  * rust-lang/rust#117287
  * rust-lang/rust#117281
  * rust-lang/rust#117270
  * rust-lang/rust#117247
  * rust-lang/rust#117246
  * rust-lang/rust#117212
  * rust-lang/rust#116834
* rust-lang/rust#103208
* rust-lang/rust#117166
* rust-lang/rust#116751
* rust-lang/rust#116858
* rust-lang/rust#117272
  * rust-lang/rust#117266
  * rust-lang/rust#117262
  * rust-lang/rust#117241
  * rust-lang/rust#117240
  * rust-lang/rust#116868
  * rust-lang/rust#114998
* rust-lang/rust#116205
* rust-lang/rust#117260
* rust-lang/rust#116035
* rust-lang/rust#113183
* rust-lang/rust#117249
  * rust-lang/rust#117243
  * rust-lang/rust#117188
  * rust-lang/rust#117114
  * rust-lang/rust#117106
  * rust-lang/rust#117032
  * rust-lang/rust#116968
* rust-lang/rust#116581
* rust-lang/rust#117228
  * rust-lang/rust#117221
  * rust-lang/rust#117214
  * rust-lang/rust#117207
  * rust-lang/rust#117202
  * rust-lang/rust#117194
  * rust-lang/rust#117143
  * rust-lang/rust#117095
  * rust-lang/rust#116905
* rust-lang/rust#117171
* rust-lang/rust#113262
* rust-lang/rust#112875
* rust-lang/rust#116983
* rust-lang/rust#117148
* rust-lang/rust#117115
* rust-lang/rust#116818
* rust-lang/rust#115872
* rust-lang/rust#117193
  * rust-lang/rust#117175
  * rust-lang/rust#117009
  * rust-lang/rust#117008
  * rust-lang/rust#116931
  * rust-lang/rust#116553
  * rust-lang/rust#116401
* rust-lang/rust#117180
  * rust-lang/rust#117173
  * rust-lang/rust#117163
  * rust-lang/rust#117159
  * rust-lang/rust#117154
  * rust-lang/rust#117152
  * rust-lang/rust#117141
  * rust-lang/rust#117111
* rust-lang/rust#117172
  * rust-lang/rust#117168
  * rust-lang/rust#117160
  * rust-lang/rust#117158
  * rust-lang/rust#117150
  * rust-lang/rust#117136
  * rust-lang/rust#117133
  * rust-lang/rust#116801
* rust-lang/rust#117165
* rust-lang/rust#117113
* rust-lang/rust#117102
* rust-lang/rust#117076
* rust-lang/rust#116236
* rust-lang/rust#116993
* rust-lang/rust#117139
* rust-lang/rust#116482
* rust-lang/rust#115796
* rust-lang/rust#117135
  * rust-lang/rust#117127
  * rust-lang/rust#117010
  * rust-lang/rust#116943
  * rust-lang/rust#116841
  * rust-lang/rust#116792
  * rust-lang/rust#116714
  * rust-lang/rust#116396
  * rust-lang/rust#116094
* rust-lang/rust#117126
  * rust-lang/rust#117105
  * rust-lang/rust#117093
  * rust-lang/rust#117092
  * rust-lang/rust#117091
  * rust-lang/rust#117081
* rust-lang/rust#116773
* rust-lang/rust#117124
* rust-lang/rust#116461
* rust-lang/rust#116435
* rust-lang/rust#116319
* rust-lang/rust#116238
* rust-lang/rust#116998
* rust-lang/rust#116300
* rust-lang/rust#117103
  * rust-lang/rust#117086
  * rust-lang/rust#117074
  * rust-lang/rust#117070
  * rust-lang/rust#117046
  * rust-lang/rust#116859
  * rust-lang/rust#107159
* rust-lang/rust#116033
* rust-lang/rust#107009
* rust-lang/rust#117087
  * rust-lang/rust#117073
  * rust-lang/rust#117064
  * rust-lang/rust#117040
  * rust-lang/rust#116978
  * rust-lang/rust#116960
* rust-lang/rust#116837
* rust-lang/rust#116835
* rust-lang/rust#116849
* rust-lang/rust#117071
  * rust-lang/rust#117069
  * rust-lang/rust#117051
  * rust-lang/rust#117049
  * rust-lang/rust#117044
  * rust-lang/rust#117042
  * rust-lang/rust#105666
* rust-lang/rust#116606
* rust-lang/rust#117066
* rust-lang/rust#115324
* rust-lang/rust#117062
* rust-lang/rust#117000
* rust-lang/rust#117007
* rust-lang/rust#117018
* rust-lang/rust#116256
* rust-lang/rust#117041
  * rust-lang/rust#117037
  * rust-lang/rust#117034
  * rust-lang/rust#116989
  * rust-lang/rust#116985
* rust-lang/rust#116950
* rust-lang/rust#116956
* rust-lang/rust#116932
* rust-lang/rust#117031
* rust-lang/rust#117030
  * rust-lang/rust#117028
  * rust-lang/rust#117026
  * rust-lang/rust#116992
  * rust-lang/rust#116981
  * rust-lang/rust#116955
  * rust-lang/rust#116928
  * rust-lang/rust#116312
* rust-lang/rust#116368
* rust-lang/rust#116922
* rust-lang/rust#117021
* rust-lang/rust#117020
  * rust-lang/rust#117019
  * rust-lang/rust#116975
  * rust-lang/rust#106601
* rust-lang/rust#116734
* rust-lang/rust#117013
  * rust-lang/rust#116995
  * rust-lang/rust#116990
  * rust-lang/rust#116974
  * rust-lang/rust#116964
  * rust-lang/rust#116961
  * rust-lang/rust#116917
  * rust-lang/rust#116911
  * rust-lang/rust#114521
* rust-lang/rust#117011
* rust-lang/rust#116958
* rust-lang/rust#116951
* rust-lang/rust#116966
* rust-lang/rust#116965
* rust-lang/rust#116962
* rust-lang/rust#116946
* rust-lang/rust#116899
* rust-lang/rust#116785
* rust-lang/rust#116838
* rust-lang/rust#116875
* rust-lang/rust#116874
* rust-lang/rust#115214
* rust-lang/rust#116810
* rust-lang/rust#116940
  * rust-lang/rust#116921
  * rust-lang/rust#116906
  * rust-lang/rust#116896
  * rust-lang/rust#116650
* rust-lang/rust#116132
* rust-lang/rust#116037
* rust-lang/rust#116923
  * rust-lang/rust#116912
  * rust-lang/rust#116908
  * rust-lang/rust#116883
  * rust-lang/rust#116829
  * rust-lang/rust#116795
  * rust-lang/rust#116761
  * rust-lang/rust#116663
* rust-lang/rust#114534
* rust-lang/rust#116402
* rust-lang/rust#116493
* rust-lang/rust#116046
* rust-lang/rust#116887
* rust-lang/rust#116885
  * rust-lang/rust#116879
  * rust-lang/rust#116870
  * rust-lang/rust#116865
  * rust-lang/rust#116856
  * rust-lang/rust#116812
* rust-lang/rust#116815
* rust-lang/rust#116814
* rust-lang/rust#116713
* rust-lang/rust#116830



Co-authored-by: Matthias Krüger <matthias.krueger@famsik.de>
Co-authored-by: antoyo <antoyo@users.noreply.github.com>
Co-authored-by: Antoni Boucher <bouanto@zoho.com>
Co-authored-by: bors <bors@rust-lang.org>
Co-authored-by: Esteban Küber <esteban@kuber.com.ar>
Co-authored-by: Kjetil Kjeka <kjetilkjeka@gmail.com>
Co-authored-by: clubby789 <jamie@hill-daniel.co.uk>
Co-authored-by: okaneco <47607823+okaneco@users.noreply.github.com>
Co-authored-by: David Tolnay <dtolnay@gmail.com>
Co-authored-by: Nadrieril <nadrieril+git@gmail.com>
Co-authored-by: Celina G. Val <celinval@amazon.com>
Co-authored-by: Ralf Jung <post@ralfj.de>
Co-authored-by: Zalathar <Zalathar@users.noreply.github.com>
Co-authored-by: Havard Eidnes <he@NetBSD.org>
Co-authored-by: Jacob Pratt <jacob@jhpratt.dev>
Co-authored-by: Kjetil Kjeka <kjetil@muybridge.com>
bors-ferrocene bot added a commit to ferrocene/ferrocene that referenced this pull request Oct 31, 2023
74: Automated pull from upstream `master` r=tshepang a=github-actions[bot]


This PR pulls the following changes from the upstream repository:

* rust-lang/rust#117363
* rust-lang/rust#116405
* rust-lang/rust#117415
  * rust-lang/rust#117414
  * rust-lang/rust#117411
  * rust-lang/rust#117403
  * rust-lang/rust#117398
  * rust-lang/rust#117396
  * rust-lang/rust#117389
  * rust-lang/rust#116862
* rust-lang/rust#117405
  * rust-lang/rust#117395
  * rust-lang/rust#117390
  * rust-lang/rust#117383
  * rust-lang/rust#117376
  * rust-lang/rust#117370
  * rust-lang/rust#117357
  * rust-lang/rust#117356
  * rust-lang/rust#117317
  * rust-lang/rust#117132
  * rust-lang/rust#117068
  * rust-lang/rust#112463
* rust-lang/rust#117267
* rust-lang/rust#116939
* rust-lang/rust#117387
  * rust-lang/rust#117385
  * rust-lang/rust#117382
  * rust-lang/rust#117371
  * rust-lang/rust#117365
  * rust-lang/rust#117350
  * rust-lang/rust#117205
  * rust-lang/rust#117177
  * rust-lang/rust#117147
* rust-lang/rust#116485
* rust-lang/rust#117328
* rust-lang/rust#117332
* rust-lang/rust#117089
* rust-lang/rust#116733
* rust-lang/rust#116889
* rust-lang/rust#116270
* rust-lang/rust#117354
  * rust-lang/rust#117337
  * rust-lang/rust#117312
  * rust-lang/rust#117082
  * rust-lang/rust#117043
  * rust-lang/rust#115968
* rust-lang/rust#117336
  * rust-lang/rust#117325
  * rust-lang/rust#117322
  * rust-lang/rust#117259
  * rust-lang/rust#117170
* rust-lang/rust#117335
  * rust-lang/rust#117319
  * rust-lang/rust#117316
  * rust-lang/rust#117311
  * rust-lang/rust#117162
  * rust-lang/rust#115773
* rust-lang/rust#116447
* rust-lang/rust#117149
* rust-lang/rust#116240
* rust-lang/rust#117123
* rust-lang/rust#81746
* rust-lang/rust#117038
* rust-lang/rust#116609
* rust-lang/rust#117309
  * rust-lang/rust#117277
  * rust-lang/rust#117268
  * rust-lang/rust#117256
  * rust-lang/rust#117025
  * rust-lang/rust#116945
  * rust-lang/rust#116816
  * rust-lang/rust#116739
  * rust-lang/rust#116534
* rust-lang/rust#117253
* rust-lang/rust#117302
* rust-lang/rust#117197
* rust-lang/rust#116471
* rust-lang/rust#117294
  * rust-lang/rust#117287
  * rust-lang/rust#117281
  * rust-lang/rust#117270
  * rust-lang/rust#117247
  * rust-lang/rust#117246
  * rust-lang/rust#117212
  * rust-lang/rust#116834
* rust-lang/rust#103208
* rust-lang/rust#117166
* rust-lang/rust#116751
* rust-lang/rust#116858
* rust-lang/rust#117272
  * rust-lang/rust#117266
  * rust-lang/rust#117262
  * rust-lang/rust#117241
  * rust-lang/rust#117240
  * rust-lang/rust#116868
  * rust-lang/rust#114998
* rust-lang/rust#116205
* rust-lang/rust#117260
* rust-lang/rust#116035
* rust-lang/rust#113183
* rust-lang/rust#117249
  * rust-lang/rust#117243
  * rust-lang/rust#117188
  * rust-lang/rust#117114
  * rust-lang/rust#117106
  * rust-lang/rust#117032
  * rust-lang/rust#116968
* rust-lang/rust#116581
* rust-lang/rust#117228
  * rust-lang/rust#117221
  * rust-lang/rust#117214
  * rust-lang/rust#117207
  * rust-lang/rust#117202
  * rust-lang/rust#117194
  * rust-lang/rust#117143
  * rust-lang/rust#117095
  * rust-lang/rust#116905
* rust-lang/rust#117171
* rust-lang/rust#113262
* rust-lang/rust#112875
* rust-lang/rust#116983
* rust-lang/rust#117148
* rust-lang/rust#117115
* rust-lang/rust#116818
* rust-lang/rust#115872
* rust-lang/rust#117193
  * rust-lang/rust#117175
  * rust-lang/rust#117009
  * rust-lang/rust#117008
  * rust-lang/rust#116931
  * rust-lang/rust#116553
  * rust-lang/rust#116401
* rust-lang/rust#117180
  * rust-lang/rust#117173
  * rust-lang/rust#117163
  * rust-lang/rust#117159
  * rust-lang/rust#117154
  * rust-lang/rust#117152
  * rust-lang/rust#117141
  * rust-lang/rust#117111
* rust-lang/rust#117172
  * rust-lang/rust#117168
  * rust-lang/rust#117160
  * rust-lang/rust#117158
  * rust-lang/rust#117150
  * rust-lang/rust#117136
  * rust-lang/rust#117133
  * rust-lang/rust#116801
* rust-lang/rust#117165
* rust-lang/rust#117113
* rust-lang/rust#117102
* rust-lang/rust#117076
* rust-lang/rust#116236
* rust-lang/rust#116993
* rust-lang/rust#117139
* rust-lang/rust#116482
* rust-lang/rust#115796
* rust-lang/rust#117135
  * rust-lang/rust#117127
  * rust-lang/rust#117010
  * rust-lang/rust#116943
  * rust-lang/rust#116841
  * rust-lang/rust#116792
  * rust-lang/rust#116714
  * rust-lang/rust#116396
  * rust-lang/rust#116094
* rust-lang/rust#117126
  * rust-lang/rust#117105
  * rust-lang/rust#117093
  * rust-lang/rust#117092
  * rust-lang/rust#117091
  * rust-lang/rust#117081
* rust-lang/rust#116773
* rust-lang/rust#117124
* rust-lang/rust#116461
* rust-lang/rust#116435
* rust-lang/rust#116319
* rust-lang/rust#116238
* rust-lang/rust#116998
* rust-lang/rust#116300
* rust-lang/rust#117103
  * rust-lang/rust#117086
  * rust-lang/rust#117074
  * rust-lang/rust#117070
  * rust-lang/rust#117046
  * rust-lang/rust#116859
  * rust-lang/rust#107159
* rust-lang/rust#116033
* rust-lang/rust#107009
* rust-lang/rust#117087
  * rust-lang/rust#117073
  * rust-lang/rust#117064
  * rust-lang/rust#117040
  * rust-lang/rust#116978
  * rust-lang/rust#116960
* rust-lang/rust#116837
* rust-lang/rust#116835
* rust-lang/rust#116849
* rust-lang/rust#117071
  * rust-lang/rust#117069
  * rust-lang/rust#117051
  * rust-lang/rust#117049
  * rust-lang/rust#117044
  * rust-lang/rust#117042
  * rust-lang/rust#105666
* rust-lang/rust#116606
* rust-lang/rust#117066
* rust-lang/rust#115324
* rust-lang/rust#117062
* rust-lang/rust#117000
* rust-lang/rust#117007
* rust-lang/rust#117018
* rust-lang/rust#116256
* rust-lang/rust#117041
  * rust-lang/rust#117037
  * rust-lang/rust#117034
  * rust-lang/rust#116989
  * rust-lang/rust#116985
* rust-lang/rust#116950
* rust-lang/rust#116956
* rust-lang/rust#116932
* rust-lang/rust#117031
* rust-lang/rust#117030
  * rust-lang/rust#117028
  * rust-lang/rust#117026
  * rust-lang/rust#116992
  * rust-lang/rust#116981
  * rust-lang/rust#116955
  * rust-lang/rust#116928
  * rust-lang/rust#116312
* rust-lang/rust#116368
* rust-lang/rust#116922
* rust-lang/rust#117021
* rust-lang/rust#117020
  * rust-lang/rust#117019
  * rust-lang/rust#116975
  * rust-lang/rust#106601
* rust-lang/rust#116734
* rust-lang/rust#117013
  * rust-lang/rust#116995
  * rust-lang/rust#116990
  * rust-lang/rust#116974
  * rust-lang/rust#116964
  * rust-lang/rust#116961
  * rust-lang/rust#116917
  * rust-lang/rust#116911
  * rust-lang/rust#114521
* rust-lang/rust#117011
* rust-lang/rust#116958
* rust-lang/rust#116951
* rust-lang/rust#116966
* rust-lang/rust#116965
* rust-lang/rust#116962
* rust-lang/rust#116946
* rust-lang/rust#116899
* rust-lang/rust#116785
* rust-lang/rust#116838
* rust-lang/rust#116875
* rust-lang/rust#116874
* rust-lang/rust#115214
* rust-lang/rust#116810
* rust-lang/rust#116940
  * rust-lang/rust#116921
  * rust-lang/rust#116906
  * rust-lang/rust#116896
  * rust-lang/rust#116650
* rust-lang/rust#116132
* rust-lang/rust#116037
* rust-lang/rust#116923
  * rust-lang/rust#116912
  * rust-lang/rust#116908
  * rust-lang/rust#116883
  * rust-lang/rust#116829
  * rust-lang/rust#116795
  * rust-lang/rust#116761
  * rust-lang/rust#116663
* rust-lang/rust#114534
* rust-lang/rust#116402
* rust-lang/rust#116493
* rust-lang/rust#116046
* rust-lang/rust#116887
* rust-lang/rust#116885
  * rust-lang/rust#116879
  * rust-lang/rust#116870
  * rust-lang/rust#116865
  * rust-lang/rust#116856
  * rust-lang/rust#116812
* rust-lang/rust#116815
* rust-lang/rust#116814
* rust-lang/rust#116713
* rust-lang/rust#116830



Co-authored-by: antoyo <antoyo@users.noreply.github.com>
Co-authored-by: Antoni Boucher <bouanto@zoho.com>
Co-authored-by: bors <bors@rust-lang.org>
Co-authored-by: Esteban Küber <esteban@kuber.com.ar>
Co-authored-by: Kjetil Kjeka <kjetilkjeka@gmail.com>
Co-authored-by: clubby789 <jamie@hill-daniel.co.uk>
Co-authored-by: okaneco <47607823+okaneco@users.noreply.github.com>
Co-authored-by: David Tolnay <dtolnay@gmail.com>
Co-authored-by: Nadrieril <nadrieril+git@gmail.com>
Co-authored-by: Celina G. Val <celinval@amazon.com>
Co-authored-by: Ralf Jung <post@ralfj.de>
Co-authored-by: Zalathar <Zalathar@users.noreply.github.com>
Co-authored-by: Havard Eidnes <he@NetBSD.org>
Co-authored-by: Jacob Pratt <jacob@jhpratt.dev>
Co-authored-by: Kjetil Kjeka <kjetil@muybridge.com>
Co-authored-by: Matthias Krüger <matthias.krueger@famsik.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add way to differentiate locals that are function arguments from other locals
6 participants