about summary refs log tree commit diff
path: root/compiler/rustc_infer/src/traits/engine.rs
diff options
context:
space:
mode:
authorJana Dönszelmann <jonathan@donsz.nl>2025-09-17 20:29:35 +0200
committerGitHub <noreply@github.com>2025-09-17 20:29:35 +0200
commit802343fa47c942ae75523c7e05360e0c88b37f7d (patch)
tree0b139b099eab22e3bfa4f6f654a0e18babb4d10a /compiler/rustc_infer/src/traits/engine.rs
parent0a2be63cf6ed95a5385cf70281b8807188d698a5 (diff)
parentbaed55cceffaa3b5dd0754436b413fa9aef544af (diff)
downloadrust-802343fa47c942ae75523c7e05360e0c88b37f7d.tar.gz
rust-802343fa47c942ae75523c7e05360e0c88b37f7d.zip
Rollup merge of #146485 - zachs18:store_fn_arg-no-unsized, r=davidtwco
Remove unsized arg handling in `ArgAbiBuilderMethods::store_fn_arg` implementations

... since it is unreachable and would ICE anyway.

These branches are unreachable with how `store_fn_arg` is currently used (where it is called, unsized arguments are either: 1. not (yet) supported, or 2. handled differently)[^1], and even if they were reachable, they would ICE anyway, since they call [`OperandValue::store`](https://doc.rust-lang.org/nightly/nightly-rustc/src/rustc_codegen_ssa/mir/operand.rs.html#855-861), which calls [`OperandValue::store_with_flags`](https://doc.rust-lang.org/nightly/nightly-rustc/src/rustc_codegen_ssa/mir/operand.rs.html#887-926) which [panics on any unsized layout](https://doc.rust-lang.org/nightly/nightly-rustc/src/rustc_codegen_ssa/mir/operand.rs.html#900-903).

Also updates the `bug!` message in `store_arg` to not suggest `store_fn_arg` for unsized args.

[^1]: `store_fn_arg` is only nontrivially[^2] called in `compiler/rustc_codegen_ssa/src/mir/mod.rs` for: Line 428 `extern "rust-call"` tuple (un)splitting, which does not support unsized arguments, Line 496 which is only for sized `PassMode::Indirect` (`meta_attrs: None`) arguments, and Line 521 which is only for non-`PassMode::Indirect` arguments which can never be unsized.

[^2]: `<Bx as ArgAbiBuilderMethods>::store_fn_arg` is what is actually called, but codegen_llvm and codegen_gcc's builders both delegate to their own `codegen_crate::ArgAbiExt::store_fn_arg`, which contain the actual implementations that are changed in this PR.
Diffstat (limited to 'compiler/rustc_infer/src/traits/engine.rs')
0 files changed, 0 insertions, 0 deletions