Repository navigation
[ICE]: Both stable and nightly crash at compiler/rustc_const_eval/src/interpret/operand.rs:84:42 on the invalid code under opt-level=3 #135128
Copy link
Copy link
Closed
Labels
A-const-evalArea: Constant evaluation, covers all const contexts (static, const fn, ...)Area: Constant evaluation, covers all const contexts (static, const fn, ...)A-impossible-boundsArea: Issues related to have impossible trait bounds in scope (impossible predicates)Area: Issues related to have impossible trait bounds in scope (impossible predicates)C-bugCategory: This is a bug.Category: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-bug-has-testStatus: This bug is tracked inside the repo by a `known-bug` test.Status: This bug is tracked inside the repo by a `known-bug` test.S-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueStatus: A Minimal Complete and Verifiable Example has been found for this issueT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
Code
#![allow(unused)]
#![allow(type_alias_bounds)]
pub trait Foo {
fn test(&self);
}
async fn generic_function<'g, X: Foo>(x: &'g X) {}
enum E
where
i32: Foo,
{
V,
}
struct S
where
i32: Foo;
trait T where
i32: Foo,
{
}
union U
where
i32: Foo,
{
f: i32,
}
type Y
where
i32: Foo,
= ();
impl Foo for ()
where
i32: Foo,
{
fn test(&self) {
3i32.test();
Foo::test(&4i32);
generic_function(5i32);
}
}
async fn f()
where
i32: Foo,
{
let s = S;
3i32.test();
Foo::test(&4i32);
generic_function(5i32);
}
async fn use_op<'g>(s: &'g String) -> String
where
String: ::std::ops::Neg<Output = String>,
{
-s
}
async fn use_for()
where
i32: Iterator,
{
for _ in 2i32 {}
}
trait A {}
impl A for i32 {}
struct Dst {
x: X,
}
struct TwoStrs(str, str)
where
str: Sized;
async fn unsized_local()
where
Dst<dyn A>: Sized,
{
let x: Dst<dyn A> = *(Box::new(Dst { x: 1 }) as Box<Dst<dyn A>>);
}
async fn return_str() -> str
where
str: Sized,
{
*"Sized".to_string().into_boxed_str()
}
async fn global_hr<'g>(x: &'g fn(&()))
where
fn(&()): Foo,
{
x.test();
}
fn main() {}Affected release channels
- Previous Stable
- Current Stable
- Current Beta
- Current Nightly
Rust Version
$ rustc --version --verbose
rustc 1.83.0 (90b35a623 2024-11-26)
binary: rustc
commit-hash: 90b35a6239c3d8bdabc530a6a0816f7ff89a0aaf
commit-date: 2024-11-26
host: x86_64-unknown-linux-gnu
release: 1.83.0
LLVM version: 19.1.1Current error output
$ rustc -C opt-level=3 --edition=2021 1.rs
error[E0412]: cannot find type `X` in this scope
--> 1.rs:64:8
|
61 | trait A {}
| ------- similarly named trait `A` defined here
...
64 | x: X,
| ^
|
help: a trait with a similar name exists
|
64 | x: A,
| ~
help: you might be missing a type parameter
|
63 | struct Dst<X> {
| +++
error[E0277]: the trait bound `i32: Foo` is not satisfied
--> 1.rs:9:5
|
9 | i32: Foo,
| ^^^^^^^^ the trait `Foo` is not implemented for `i32`
|
= help: the trait `Foo` is implemented for `()`
= help: see issue #48214
error[E0277]: the trait bound `i32: Foo` is not satisfied
--> 1.rs:15:5
|
15 | i32: Foo;
| ^^^^^^^^ the trait `Foo` is not implemented for `i32`
|
= help: the trait `Foo` is implemented for `()`
= help: see issue #48214
error[E0277]: the trait bound `i32: Foo` is not satisfied
--> 1.rs:17:5
|
17 | i32: Foo,
| ^^^^^^^^ the trait `Foo` is not implemented for `i32`
|
= help: the trait `Foo` is implemented for `()`
= help: see issue #48214
error[E0277]: the trait bound `i32: Foo` is not satisfied
--> 1.rs:22:5
|
22 | i32: Foo,
| ^^^^^^^^ the trait `Foo` is not implemented for `i32`
|
= help: the trait `Foo` is implemented for `()`
= help: see issue #48214
error[E0277]: the trait bound `i32: Foo` is not satisfied
--> 1.rs:32:5
|
32 | i32: Foo,
| ^^^^^^^^ the trait `Foo` is not implemented for `i32`
|
= help: the trait `Foo` is implemented for `()`
= help: see issue #48214
error[E0277]: the trait bound `i32: Foo` is not satisfied
--> 1.rs:42:5
|
42 | i32: Foo,
| ^^^^^^^^ the trait `Foo` is not implemented for `i32`
|
= help: the trait `Foo` is implemented for `()`
= help: see issue #48214
error[E0277]: the trait bound `String: Neg` is not satisfied
--> 1.rs:51:5
|
51 | String: ::std::ops::Neg<Output = String>,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Neg` is not implemented for `String`
|
= help: see issue #48214
error[E0277]: `i32` is not an iterator
--> 1.rs:57:5
|
57 | i32: Iterator,
| ^^^^^^^^^^^^^ `i32` is not an iterator
|
= help: the trait `Iterator` is not implemented for `i32`
= help: see issue #48214
error[E0277]: the size for values of type `str` cannot be known at compilation time
--> 1.rs:68:5
|
68 | str: Sized;
| ^^^^^^^^^^ doesn't have a size known at compile-time
|
= help: the trait `Sized` is not implemented for `str`
= help: see issue #48214
error[E0107]: struct takes 0 generic arguments but 1 generic argument was supplied
--> 1.rs:71:5
|
71 | Dst<dyn A>: Sized,
| ^^^------- help: remove the unnecessary generics
| |
| expected 0 generic arguments
|
note: struct defined here, with 0 generic parameters
--> 1.rs:63:8
|
63 | struct Dst {
| ^^^
error[E0277]: the size for values of type `str` cannot be known at compilation time
--> 1.rs:77:5
|
77 | str: Sized,
| ^^^^^^^^^^ doesn't have a size known at compile-time
|
= help: the trait `Sized` is not implemented for `str`
= help: see issue #48214
error[E0308]: mismatched types
--> 1.rs:47:22
|
47 | generic_function(5i32);
| ---------------- ^^^^ expected `&_`, found `i32`
| |
| arguments to this function are incorrect
|
= note: expected reference `&_`
found type `i32`
note: function defined here
--> 1.rs:6:10
|
6 | async fn generic_function<'g, X: Foo>(x: &'g X) {}
| ^^^^^^^^^^^^^^^^ --------
help: consider borrowing here
|
47 | generic_function(&5i32);
| +
error[E0600]: cannot apply unary operator `-` to type `&String`
--> 1.rs:53:5
|
53 | -s
| ^^ cannot apply unary operator `-`
error[E0107]: struct takes 0 generic arguments but 1 generic argument was supplied
--> 1.rs:73:12
|
73 | let x: Dst<dyn A> = *(Box::new(Dst { x: 1 }) as Box<Dst<dyn A>>);
| ^^^------- help: remove the unnecessary generics
| |
| expected 0 generic arguments
|
note: struct defined here, with 0 generic parameters
--> 1.rs:63:8
|
63 | struct Dst {
| ^^^
error[E0107]: struct takes 0 generic arguments but 1 generic argument was supplied
--> 1.rs:73:57
|
73 | let x: Dst<dyn A> = *(Box::new(Dst { x: 1 }) as Box<Dst<dyn A>>);
| ^^^------- help: remove the unnecessary generics
| |
| expected 0 generic arguments
|
note: struct defined here, with 0 generic parameters
--> 1.rs:63:8
|
63 | struct Dst {
| ^^^
error[E0308]: mismatched types
--> 1.rs:37:26
|
37 | generic_function(5i32);
| ---------------- ^^^^ expected `&_`, found `i32`
| |
| arguments to this function are incorrect
|
= note: expected reference `&_`
found type `i32`
note: function defined here
--> 1.rs:6:10
|
6 | async fn generic_function<'g, X: Foo>(x: &'g X) {}
| ^^^^^^^^^^^^^^^^ --------
help: consider borrowing here
|
37 | generic_function(&5i32);
| +Backtrace
error: internal compiler error: /rustc/90b35a6239c3d8bdabc530a6a0816f7ff89a0aaf/compiler/rustc_const_eval/src/interpret/operand.rs:84:42: Got a scalar pair where a scalar was expected
thread 'rustc' panicked at /rustc/90b35a6239c3d8bdabc530a6a0816f7ff89a0aaf/compiler/rustc_const_eval/src/interpret/operand.rs:84:42:
Box<dyn Any>
stack backtrace:
0: 0x7f57f8acb12a - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h5b6bd5631a6d1f6b
1: 0x7f57f92ac8f8 - core::fmt::write::h7550c97b06c86515
2: 0x7f57fa4e3b91 - std::io::Write::write_fmt::h7b09c64fe0be9c84
3: 0x7f57f8acaf82 - std::sys::backtrace::BacktraceLock::print::h2395ccd2c84ba3aa
4: 0x7f57f8acd456 - std::panicking::default_hook::{{closure}}::he19d4c7230e07961
5: 0x7f57f8acd2a0 - std::panicking::default_hook::hf614597d3c67bbdb
6: 0x7f57f7b8f556 - std[c6eb78587944e35c]::panicking::update_hook::<alloc[148a978a4a62f5d]::boxed::Box<rustc_driver_impl[4c2d2ad79fb810ac]::install_ice_hook::{closure#0}>>::{closure#0}
7: 0x7f57f8acdb68 - std::panicking::rust_panic_with_hook::h8942133a8b252070
8: 0x7f57f7bc6371 - std[c6eb78587944e35c]::panicking::begin_panic::<rustc_errors[7f4c80274b6ccf5]::ExplicitBug>::{closure#0}
9: 0x7f57f7bb9976 - std[c6eb78587944e35c]::sys::backtrace::__rust_end_short_backtrace::<std[c6eb78587944e35c]::panicking::begin_panic<rustc_errors[7f4c80274b6ccf5]::ExplicitBug>::{closure#0}, !>
10: 0x7f57f7bb9933 - std[c6eb78587944e35c]::panicking::begin_panic::<rustc_errors[7f4c80274b6ccf5]::ExplicitBug>
11: 0x7f57f7bcfa31 - <rustc_errors[7f4c80274b6ccf5]::diagnostic::BugAbort as rustc_errors[7f4c80274b6ccf5]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
12: 0x7f57f81f9e74 - rustc_middle[a886f61dbc61428a]::util::bug::opt_span_bug_fmt::<rustc_span[3e5cf3424d44936d]::span_encoding::Span>::{closure#0}
13: 0x7f57f81dff6a - rustc_middle[a886f61dbc61428a]::ty::context::tls::with_opt::<rustc_middle[a886f61dbc61428a]::util::bug::opt_span_bug_fmt<rustc_span[3e5cf3424d44936d]::span_encoding::Span>::{closure#0}, !>::{closure#0}
14: 0x7f57f81dfdfb - rustc_middle[a886f61dbc61428a]::ty::context::tls::with_context_opt::<rustc_middle[a886f61dbc61428a]::ty::context::tls::with_opt<rustc_middle[a886f61dbc61428a]::util::bug::opt_span_bug_fmt<rustc_span[3e5cf3424d44936d]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
15: 0x7f57f6b0e9a0 - rustc_middle[a886f61dbc61428a]::util::bug::bug_fmt
16: 0x7f57fab8f291 - <rustc_mir_transform[b36c87ceb4bb9a8e]::gvn::VnState>::simplify_operand.cold
17: 0x7f57f6bcb95b - <rustc_mir_transform[b36c87ceb4bb9a8e]::gvn::GVN as rustc_mir_transform[b36c87ceb4bb9a8e]::pass_manager::MirPass>::run_pass
18: 0x7f57f92963dd - rustc_mir_transform[b36c87ceb4bb9a8e]::pass_manager::run_passes_inner
19: 0x7f57f97959fa - rustc_mir_transform[b36c87ceb4bb9a8e]::optimized_mir
20: 0x7f57f9793369 - rustc_query_impl[db795c774d495014]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[db795c774d495014]::query_impl::optimized_mir::dynamic_query::{closure#2}::{closure#0}, rustc_middle[a886f61dbc61428a]::query::erase::Erased<[u8; 8usize]>>
21: 0x7f57f92afb2d - rustc_query_system[b2bb6e43dd6b7fda]::query::plumbing::try_execute_query::<rustc_query_impl[db795c774d495014]::DynamicConfig<rustc_query_system[b2bb6e43dd6b7fda]::query::caches::DefIdCache<rustc_middle[a886f61dbc61428a]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[db795c774d495014]::plumbing::QueryCtxt, false>
22: 0x7f57f92af1b3 - rustc_query_impl[db795c774d495014]::query_impl::optimized_mir::get_query_non_incr::__rust_end_short_backtrace
23: 0x7f57f9d5939f - rustc_middle[a886f61dbc61428a]::query::plumbing::query_get_at::<rustc_query_system[b2bb6e43dd6b7fda]::query::caches::DefIdCache<rustc_middle[a886f61dbc61428a]::query::erase::Erased<[u8; 8usize]>>>
24: 0x7f57f81f98b5 - <rustc_middle[a886f61dbc61428a]::ty::context::TyCtxt>::coroutine_layout
25: 0x7f57f98fec28 - rustc_ty_utils[45bf0f8bee683616]::layout::layout_of_uncached
26: 0x7f57f98efa46 - rustc_ty_utils[45bf0f8bee683616]::layout::layout_of
27: 0x7f57f98ef9d1 - rustc_query_impl[db795c774d495014]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[db795c774d495014]::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[a886f61dbc61428a]::query::erase::Erased<[u8; 16usize]>>
28: 0x7f57f98ef0b2 - rustc_query_system[b2bb6e43dd6b7fda]::query::plumbing::try_execute_query::<rustc_query_impl[db795c774d495014]::DynamicConfig<rustc_query_system[b2bb6e43dd6b7fda]::query::caches::DefaultCache<rustc_middle[a886f61dbc61428a]::ty::ParamEnvAnd<rustc_middle[a886f61dbc61428a]::ty::Ty>, rustc_middle[a886f61dbc61428a]::query::erase::Erased<[u8; 16usize]>>, false, true, false>, rustc_query_impl[db795c774d495014]::plumbing::QueryCtxt, false>
29: 0x7f57f98eeda9 - rustc_query_impl[db795c774d495014]::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
30: 0x7f57f689e0da - <rustc_mir_transform[b36c87ceb4bb9a8e]::known_panics_lint::KnownPanicsLint as rustc_mir_transform[b36c87ceb4bb9a8e]::pass_manager::MirLint>::run_lint
31: 0x7f57f92916b9 - rustc_mir_transform[b36c87ceb4bb9a8e]::run_analysis_to_runtime_passes
32: 0x7f57f94812de - rustc_mir_transform[b36c87ceb4bb9a8e]::mir_drops_elaborated_and_const_checked
33: 0x7f57f9480cfd - rustc_query_impl[db795c774d495014]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[db795c774d495014]::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle[a886f61dbc61428a]::query::erase::Erased<[u8; 8usize]>>
34: 0x7f57f957ee68 - rustc_query_system[b2bb6e43dd6b7fda]::query::plumbing::try_execute_query::<rustc_query_impl[db795c774d495014]::DynamicConfig<rustc_query_system[b2bb6e43dd6b7fda]::query::caches::VecCache<rustc_span[3e5cf3424d44936d]::def_id::LocalDefId, rustc_middle[a886f61dbc61428a]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[db795c774d495014]::plumbing::QueryCtxt, false>
35: 0x7f57f957e6cd - rustc_query_impl[db795c774d495014]::query_impl::mir_drops_elaborated_and_const_checked::get_query_non_incr::__rust_end_short_backtrace
36: 0x7f57f9b7b705 - rustc_interface[88a02114bbdb2383]::passes::run_required_analyses
37: 0x7f57f9b722e5 - rustc_interface[88a02114bbdb2383]::passes::analysis
38: 0x7f57f9b722c9 - rustc_query_impl[db795c774d495014]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[db795c774d495014]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[a886f61dbc61428a]::query::erase::Erased<[u8; 1usize]>>
39: 0x7f57fa07d662 - rustc_query_system[b2bb6e43dd6b7fda]::query::plumbing::try_execute_query::<rustc_query_impl[db795c774d495014]::DynamicConfig<rustc_query_system[b2bb6e43dd6b7fda]::query::caches::SingleCache<rustc_middle[a886f61dbc61428a]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[db795c774d495014]::plumbing::QueryCtxt, false>
40: 0x7f57fa07d38f - rustc_query_impl[db795c774d495014]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
41: 0x7f57f9fed0bb - rustc_interface[88a02114bbdb2383]::interface::run_compiler::<core[c06ff78fa456ca03]::result::Result<(), rustc_span[3e5cf3424d44936d]::ErrorGuaranteed>, rustc_driver_impl[4c2d2ad79fb810ac]::run_compiler::{closure#0}>::{closure#1}
42: 0x7f57f9fde3d9 - std[c6eb78587944e35c]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[88a02114bbdb2383]::util::run_in_thread_with_globals<rustc_interface[88a02114bbdb2383]::interface::run_compiler<core[c06ff78fa456ca03]::result::Result<(), rustc_span[3e5cf3424d44936d]::ErrorGuaranteed>, rustc_driver_impl[4c2d2ad79fb810ac]::run_compiler::{closure#0}>::{closure#1}, core[c06ff78fa456ca03]::result::Result<(), rustc_span[3e5cf3424d44936d]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[c06ff78fa456ca03]::result::Result<(), rustc_span[3e5cf3424d44936d]::ErrorGuaranteed>>
43: 0x7f57fa0adfac - <<std[c6eb78587944e35c]::thread::Builder>::spawn_unchecked_<rustc_interface[88a02114bbdb2383]::util::run_in_thread_with_globals<rustc_interface[88a02114bbdb2383]::interface::run_compiler<core[c06ff78fa456ca03]::result::Result<(), rustc_span[3e5cf3424d44936d]::ErrorGuaranteed>, rustc_driver_impl[4c2d2ad79fb810ac]::run_compiler::{closure#0}>::{closure#1}, core[c06ff78fa456ca03]::result::Result<(), rustc_span[3e5cf3424d44936d]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[c06ff78fa456ca03]::result::Result<(), rustc_span[3e5cf3424d44936d]::ErrorGuaranteed>>::{closure#1} as core[c06ff78fa456ca03]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
44: 0x7f57fa0aea6b - std::sys::pal::unix::thread::Thread::new::thread_start::hcc78f3943333fa94
45: 0x7f57f4649609 - start_thread
at /build/glibc-LcI20x/glibc-2.31/nptl/pthread_create.c:477:8
46: 0x7f57f456e353 - clone
at /build/glibc-LcI20x/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95
47: 0x0 - <unknown>
note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md
note: rustc 1.83.0 (90b35a623 2024-11-26) running on x86_64-unknown-linux-gnu
note: compiler flags: -C opt-level=3
query stack during panic:
#0 [optimized_mir] optimizing MIR for `return_str::{closure#0}`
#1 [layout_of] computing layout of `{async fn body of return_str()}`
end of query stack
error: aborting due to 18 previous errors
Some errors have detailed explanations: E0107, E0277, E0308, E0412, E0600.
For more information about an error, try `rustc --explain E0107`.Anything else?
Note that the bug can only be reproduced by rustc -C opt-level=3 --edition=2021 1.rs .
If we remove -C opt-level=3, the ICE disappears.
Metadata
Metadata
Assignees
Labels
A-const-evalArea: Constant evaluation, covers all const contexts (static, const fn, ...)Area: Constant evaluation, covers all const contexts (static, const fn, ...)A-impossible-boundsArea: Issues related to have impossible trait bounds in scope (impossible predicates)Area: Issues related to have impossible trait bounds in scope (impossible predicates)C-bugCategory: This is a bug.Category: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-bug-has-testStatus: This bug is tracked inside the repo by a `known-bug` test.Status: This bug is tracked inside the repo by a `known-bug` test.S-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueStatus: A Minimal Complete and Verifiable Example has been found for this issueT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Activity
[-][ICE]: Both stable and nightly crashes on the invalid code under opt-level=3[/-][+][ICE]: Both stable and nightly crashes at `compiler/rustc_const_eval/src/interpret/operand.rs:84:42` on the invalid code under opt-level=3[/+][-][ICE]: Both stable and nightly crashes at `compiler/rustc_const_eval/src/interpret/operand.rs:84:42` on the invalid code under opt-level=3[/-][+][ICE]: Both stable and nightly crashes at `compiler/rustc_const_eval/src/interpret/operand.rs:84:42` on the invalid code under `opt-level=3`[/+][-][ICE]: Both stable and nightly crashes at `compiler/rustc_const_eval/src/interpret/operand.rs:84:42` on the invalid code under `opt-level=3`[/-][+][ICE]: Both stable and nightly crash at `compiler/rustc_const_eval/src/interpret/operand.rs:84:42` on the invalid code under `opt-level=3`[/+]jieyouxu commentedon Jan 5, 2025
@wangbo15 are these ICEs fuzzer-generated?
lqd commentedon Jan 5, 2025
👨 🦋 Is this minimized?
wangbo15 commentedon Jan 5, 2025
@jieyouxu Yes, I apologize for trying to minimize it, but it is still oversized.
jieyouxu commentedon Jan 5, 2025
Please refer to fuzzing guidelines, in particular please disclose that the ICE is generated through fuzzing.
jieyouxu commentedon Jan 5, 2025
Also,
-Copt-level=3is not needed,-Copt-level=1is sufficient to ICE stable rustc (1.83.0). Please try the minimum opt-level as well since this is fuzzed.12 remaining items
compiler\rustc_const_eval\src\interpret\operand.rs:157:17due toasyncandwhereconstraints #135546 as a duplicate of this issueRollup merge of rust-lang#143271 - cjgillot:gvn-types, r=oli-obk
Rollup merge of rust-lang#143271 - cjgillot:gvn-types, r=oli-obk
Rollup merge of rust-lang#143271 - cjgillot:gvn-types, r=oli-obk
Rollup merge of rust-lang#143271 - cjgillot:gvn-types, r=oli-obk
Rollup merge of rust-lang#143271 - cjgillot:gvn-types, r=oli-obk
Unrolled build for #143271
Rollup merge of #143271 - cjgillot:gvn-types, r=oli-obk
Rollup merge of #143271 - cjgillot:gvn-types, r=oli-obk
Rollup merge of rust-lang#143271 - cjgillot:gvn-types, r=oli-obk
Rollup merge of #143271 - cjgillot:gvn-types, r=oli-obk
Rollup merge of #143271 - cjgillot:gvn-types, r=oli-obk