summary refs log tree commit diff
path: root/compiler/rustc_middle/src/query/mod.rs
diff options
context:
space:
mode:
authorStuart Cook <Zalathar@users.noreply.github.com>2025-07-31 15:42:00 +1000
committerGitHub <noreply@github.com>2025-07-31 15:42:00 +1000
commit8628b78f24c01026d01b82afd3ec91a2019fe647 (patch)
tree5275877553f3c35fcf1ea74dc9a0e1a14fcd223a /compiler/rustc_middle/src/query/mod.rs
parentf478bec907b6c7c945d9de4da488d55f6a90dd82 (diff)
parenta448837045326d7c33059dc3aa2d1d87529dcf3d (diff)
downloadrust-8628b78f24c01026d01b82afd3ec91a2019fe647.tar.gz
rust-8628b78f24c01026d01b82afd3ec91a2019fe647.zip
Rollup merge of #144232 - xacrimon:explicit-tail-call, r=WaffleLapkin
Implement support for `become` and explicit tail call codegen for the LLVM backend

This PR implements codegen of explicit tail calls via `become` in `rustc_codegen_ssa` and support within the LLVM backend. Completes a task on (https://github.com/rust-lang/rust/issues/112788). This PR implements all the necessary bits to make explicit tail calls usable, other backends have received stubs for now and will ICE if you use `become` on them. I suspect there is some bikeshedding to be done on how we should go about implementing this for other backends, but it should be relatively straightforward for GCC after this is merged.

During development I also put together a POC bytecode VM based on tail call dispatch to test these changes out and analyze the codegen to make sure it generates expected assembly. That is available [here](https://github.com/xacrimon/tcvm).
Diffstat (limited to 'compiler/rustc_middle/src/query/mod.rs')
0 files changed, 0 insertions, 0 deletions