-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
Misc changes to StableMIR required to Kani use case. #117688
Conversation
r? @davidtwco (rustbot has picked a reviewer for you, use r? to override) |
This PR changes Stable MIR cc @oli-obk, @celinval, @spastorino, @ouz-a |
r? spastorino |
This PR changes Stable MIR cc @oli-obk, @celinval, @spastorino, @ouz-a |
@compiler-errors let me know if there's anything that you would like me to address. Also, should I reassign this PR for you, or should I wait for @spastorino's review? |
In cases like Kani, we will invoke the rustc_internal run command directly for now. It would be handly to be able to have a callback that can return a value. We also need extra methods to convert stable constructs into internal ones, so we can break down the transition into finer grain commits.
We were not iterating over all local variables due to a typo.
r=me after rebasing |
Add more APIs to retrieve information about types, and add more instance resolution options. Make `Instance::body()` return an Option<Body>, since not every instance might have an available body. For example, foreign instances, virtual instances, dependencies.
We were previously skipping it for non-generic functions, but this was leaving some constants unevaluated.
Fixed the `has_body()` function operator. Before that, this function was returning false for all shims. Change resolve_drop_in_place() to also return an instance for empty shims, since they may still be required for vtable construction.
34e52d2
to
8e81fc0
Compare
@compiler-errors sorry to bother. I added one extra commit to fix 2 APIs. Do you want to take a look at it first? |
I just read them @bors r+ |
…iaskrgr Rollup of 3 pull requests Successful merges: - rust-lang#115476 (document ABI compatibility) - rust-lang#117688 (Misc changes to StableMIR required to Kani use case.) - rust-lang#117998 (On resolve error of `[rest..]`, suggest `[rest @ ..]`) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#117688 - celinval:smir-kani-reach, r=compiler-errors Misc changes to StableMIR required to Kani use case. First, I wanted to say that I can split this review into multiple if it makes reviewing easier. I bundled them up, since I've been testing them together (See rust-lang/project-stable-mir#51 for the set of more thorough checks). So far, this review includes 3 commits: 1. Add more APIs and fix `Instance::body` - Add more APIs to retrieve information about types. - Add a few more instance resolution options. For the drop shim, we return None if the drop body is empty. Not sure it will be enough. - Make `Instance::body()` return an Option<Body>, since not every instance might have an available body. For example, foreign instances, virtual instances, dependencies. 2. Fix a bug on MIRVisitor - We were not iterating over all local variables due to a typo. 3. Add more SMIR internal impl and callback return value - In cases like Kani, we will invoke the rustc_internal run command directly for now. It would be handly to be able to have a callback that can return a value. - We also need extra methods to convert stable constructs into internal ones, so we can break down the transition into finer grain commits. - For the internal implementation of Region, we're always returning `ReErased` for now.
We got a bit delayed on the nightly, so this PR closes the gap. The related Rust changes were: - rust-lang/rust#117876 - rust-lang/rust#117688
First, I wanted to say that I can split this review into multiple if it makes reviewing easier. I bundled them up, since I've been testing them together (See rust-lang/project-stable-mir#51 for the set of more thorough checks).
So far, this review includes 3 commits:
Instance::body
Instance::body()
return an Option, since not every instance might have an available body. For example, foreign instances, virtual instances, dependencies.ReErased
for now.