Stabilize `asm_goto` feature gate Stabilize `asm_goto` feature (tracked by #119364). The issue will remain open and be updated to track `asm_goto_with_outputs`. Reference PR: https://github.com/rust-lang/reference/pull/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 https://github.com/rust-lang/rust/issues/119364#issuecomment-2316037703 and https://github.com/rust-lang/rust/pull/131544. It's currently forbidden to use `asm_goto` with output operands; that is still unstable under `asm_goto_with_outputs`. Example: ```rust 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
UI Tests
This folder contains rustc's
UI tests.
Test Directives (Headers)
Typically, a UI test will have some test directives / headers which are special comments that tell compiletest how to build and interpret a test.
As part of an ongoing effort to rewrite compiletest
(see https://github.com/rust-lang/compiler-team/issues/536), a major
change proposal to change legacy compiletest-style headers // <directive>
to ui_test-style headers
//@ <directive> was accepted (see
https://github.com/rust-lang/compiler-team/issues/512.
An example directive is ignore-test. In legacy compiletest style, the header
would be written as
// ignore-test
but in ui_test style, the header would be written as
//@ ignore-test
compiletest is changed to accept only //@ directives for UI tests
(currently), and will reject and report an error if it encounters any
comments // <content> that may be parsed as a legacy compiletest-style
test header. To fix this, you should migrate to the ui_test-style header
//@ <content>.