diff options
| author | bors <bors@rust-lang.org> | 2023-08-23 13:40:41 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-08-23 13:40:41 +0000 |
| commit | 97fff1f2ed01f6f7c0c204530b693c74d88c2105 (patch) | |
| tree | 4ae098cc1a10ca8400e9283247ed34bbcfd663c1 /compiler/rustc_codegen_llvm/src | |
| parent | 544dea6aee767539daeca453ff96e32fe5cb56e8 (diff) | |
| parent | 03fd2d4379cc0f5d6a04dd1708c75d2f828f598e (diff) | |
| download | rust-97fff1f2ed01f6f7c0c204530b693c74d88c2105.tar.gz rust-97fff1f2ed01f6f7c0c204530b693c74d88c2105.zip | |
Auto merge of #114790 - taiki-e:asm-maybe-uninit, r=Amanieu
Allow MaybeUninit in input and output of inline assembly **Motivation:** As part of the work to remove UBs from crossbeam's AtomicCell, I'm writing a library to implement atomic operations on MaybeUnint using inline assembly ([atomic-maybe-uninit](https://github.com/taiki-e/atomic-maybe-uninit), https://github.com/crossbeam-rs/crossbeam/pull/1015). However, currently, MaybeUnint cannot be used in input&output of inline assembly, so when processing MaybeUninit, values must be [passed through memory](https://github.com/taiki-e/atomic-maybe-uninit/blob/main/src/arch/aarch64.rs#L121-L122). It is inefficient and microbenchmarks have [actually shown significant performance degradation](https://github.com/crossbeam-rs/crossbeam/pull/1015#issuecomment-1676549870). It would be nice if we could allow MaybeUninit in input and output of inline assembly. --- This PR changed the type check in rustc_hir_analysis to allow `MaybeUnint<int | float | ptr | fn ptr | simd vector>` in input and output of inline assembly and added a simple test. To be honest, I'm not sure that this is the correct way to do it, because this is like doing transmute to integers/floats/etc from MaybeUninit on the compiler side. EDIT: [this seems fine](https://rust-lang.zulipchat.com/#narrow/stream/216763-project-inline-asm/topic/MaybeUninit.20in.20asm!/near/384662900) r? `@Amanieu` cc `@thomcc` (because you [had previously proposed this](https://rust-lang.zulipchat.com/#narrow/stream/216763-project-inline-asm/topic/MaybeUninit.20in.20asm!))
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
0 files changed, 0 insertions, 0 deletions
