Fix asm goto with outputs and move it to a separate feature gate#131523
Fix asm goto with outputs and move it to a separate feature gate#131523bors merged 3 commits intorust-lang:masterfrom
Conversation
|
☔ The latest upstream changes (presumably #132027) made this pull request unmergeable. Please resolve the merge conflicts. |
|
r? compiler-errors I'll review this, please ping me if I don't get to it in a few days |
|
☔ The latest upstream changes (presumably #132470) made this pull request unmergeable. Please resolve the merge conflicts. |
|
ping @compiler-errors |
compiler-errors
left a comment
There was a problem hiding this comment.
One nit then r=me
| let mut _out: u64; | ||
| unsafe { | ||
| asm!("mov {}, 1", "jmp {}", out(reg) _out, label {}); | ||
| //~^ ERROR using both label and outputs operands for inline assembly is unstable |
There was a problem hiding this comment.
Is this a typo? I think it should be "label and output operands"
|
@bors delegate+ |
|
✌️ @nbdd0121, you can now approve this pull request! If @compiler-errors told you to " |
|
You also may want to rebase this PR just in case |
When outputs are used together with labels, they are considered to be written for all destinations, not only when falling through.
When labels are present, the `noreturn` option really means that asm block won't fallthrough -- if labels are present, then outputs can still be meaningfully used.
|
@bors r+ |
…iaskrgr Rollup of 8 pull requests Successful merges: - rust-lang#131523 (Fix asm goto with outputs and move it to a separate feature gate) - rust-lang#131664 (Support input/output in vector registers of s390x inline assembly (under asm_experimental_reg feature)) - rust-lang#132432 (Add a test to verify that libstd doesn't use protected symbols) - rust-lang#132502 (Document possibility to set core features in example config.toml) - rust-lang#132529 (ci(triagebot): add more top-level files to A-meta) - rust-lang#132533 (Add BorrowedBuf::into_filled{,_mut} methods to allow returning buffer with original lifetime) - rust-lang#132803 (Fix broken url) - rust-lang#132982 (alloc: fix `Allocator` method names in `alloc` free function docs) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#131523 - nbdd0121:asm, r=compiler-errors Fix asm goto with outputs and move it to a separate feature gate Tracking issue: rust-lang#119364 This PR addresses 3 aspects of asm goto with outputs: * Codegen is fixed. My initial implementation has an oversight which cause the output to be only stored in fallthrough path, but not in label blocks. * Outputs can now be used with `options(noreturn)` if a label block is given. * All of this is moved to a new feature gate, because we likely want to stabilise `asm_goto` before asm goto with outputs. `@rustbot` labels: +A-inline-assembly +F-asm
Tracking issue: #119364
This PR addresses 3 aspects of asm goto with outputs:
options(noreturn)if a label block is given.asm_gotobefore asm goto with outputs.@rustbot labels: +A-inline-assembly +F-asm