Stabilize asm_goto
feature gate by nbdd0121 · Pull Request #133870 · rust-lang/rust (original) (raw)
Stabilize asm_goto
feature (tracked by #119364). The issue will remain open and be updated to track asm_goto_with_outputs
.
Reference PR: rust-lang/reference#1693
Stabilization Report
This feature adds a label <block>
operand type to asm!
. <block>
must be a block expression with type unit or never. The address of the block is substituted and the assembly may jump to the block. When block completes the asm!
block returns and continues execution.
The block starts a new safety context and unsafe operations within must have additional unsafe
s; the effect of unsafe
that surrounds asm!
block is cancelled. See #119364 (comment) and #131544.
It's currently forbidden to use asm_goto
with output operands; that is still unstable under asm_goto_with_outputs
.
Example:
unsafe { asm!( "jmp {}", label { println!("Jumped from asm!"); } ); }
Tests:
- tests/ui/asm/x86_64/goto.rs
- tests/ui/asm/x86_64/goto-block-safe.stderr
- tests/ui/asm/x86_64/bad-options.rs
- tests/codegen/asm/goto.rs