Files
rust/tests/ui
Matthias Krüger 3d3f817ff9 Rollup merge of #133870 - nbdd0121:asm, r=traviscross,nnethercote
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
2025-03-17 16:34:47 +01:00
..
2025-03-17 11:12:10 +00:00
2025-02-21 00:41:17 +00:00
2025-03-03 08:52:07 +01:00
2025-02-28 08:42:06 +11:00
2025-02-24 14:31:19 +01:00
2025-02-27 10:26:33 +00:00
2025-03-06 17:58:32 -03:00
2024-12-12 23:36:27 +00:00
2025-02-28 08:42:14 +11:00
2024-12-31 23:46:39 +08:00
2025-02-24 14:31:19 +01:00
2025-02-24 18:48:40 +00:00
2024-12-12 23:36:27 +00:00
2025-01-28 19:35:51 +00:00
2025-01-07 16:04:14 +01:00
2025-01-26 13:55:59 +00:00
2025-02-25 16:56:04 +00:00
2025-02-27 20:02:25 +00:00
2025-03-07 17:55:08 +00:00
2025-02-24 09:26:54 +00:00
2025-02-24 09:26:54 +00:00
2025-01-29 15:45:13 +00:00
2024-12-25 10:36:32 +01:00
2025-02-27 10:26:33 +00:00
2025-02-27 10:26:33 +00:00
2025-01-23 10:55:01 +00:00
2025-02-04 21:42:43 +05:30
2024-10-28 14:20:28 +11:00
2024-10-28 14:20:28 +11:00
2024-12-02 03:43:50 -07:00
2024-10-30 16:47:47 -07:00

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>.