diff options
| author | bors <bors@rust-lang.org> | 2024-02-17 01:54:24 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-02-17 01:54:24 +0000 |
| commit | 5471e0645a497ab331ae38adc965aa15b74aa8c9 (patch) | |
| tree | b9e8611ea646b473c3665b589f838b7932f443b5 /tests | |
| parent | ab8880bdf33401ab69ae0ac38c7ceb454c6ca9bf (diff) | |
| parent | 9b5e4c6d57decaa419e3af48d0c6b95cb5b7620e (diff) | |
| download | rust-5471e0645a497ab331ae38adc965aa15b74aa8c9.tar.gz rust-5471e0645a497ab331ae38adc965aa15b74aa8c9.zip | |
Auto merge of #12305 - beetrees:asm-syntax, r=Manishearth
Ensure ASM syntax detect `global_asm!` and `asm!` only on x86 architectures The ASM syntax lint is only relevant on x86 architectures, so this PR ensures it doesn't trigger on other architectures. This PR also makes the lints check `global_asm!` items as well as `asm!` expressions. changelog: Check `global_asm!` items in the ASM syntax lints, and fix false positives on non-x86 architectures.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ui/asm_syntax.stderr | 46 | ||||
| -rw-r--r-- | tests/ui/asm_syntax_not_x86.rs | 24 | ||||
| -rw-r--r-- | tests/ui/asm_syntax_x86.i686.stderr | 73 | ||||
| -rw-r--r-- | tests/ui/asm_syntax_x86.rs (renamed from tests/ui/asm_syntax.rs) | 23 | ||||
| -rw-r--r-- | tests/ui/asm_syntax_x86.x86_64.stderr | 73 |
5 files changed, 188 insertions, 51 deletions
diff --git a/tests/ui/asm_syntax.stderr b/tests/ui/asm_syntax.stderr deleted file mode 100644 index 537ea8c57e9..00000000000 --- a/tests/ui/asm_syntax.stderr +++ /dev/null @@ -1,46 +0,0 @@ -error: Intel x86 assembly syntax used - --> $DIR/asm_syntax.rs:8:9 - | -LL | asm!(""); - | ^^^^^^^^ - | - = help: use AT&T x86 assembly syntax - = note: `-D clippy::inline-asm-x86-intel-syntax` implied by `-D warnings` - = help: to override `-D warnings` add `#[allow(clippy::inline_asm_x86_intel_syntax)]` - -error: Intel x86 assembly syntax used - --> $DIR/asm_syntax.rs:10:9 - | -LL | asm!("", options()); - | ^^^^^^^^^^^^^^^^^^^ - | - = help: use AT&T x86 assembly syntax - -error: Intel x86 assembly syntax used - --> $DIR/asm_syntax.rs:12:9 - | -LL | asm!("", options(nostack)); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: use AT&T x86 assembly syntax - -error: AT&T x86 assembly syntax used - --> $DIR/asm_syntax.rs:26:9 - | -LL | asm!("", options(att_syntax)); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: use Intel x86 assembly syntax - = note: `-D clippy::inline-asm-x86-att-syntax` implied by `-D warnings` - = help: to override `-D warnings` add `#[allow(clippy::inline_asm_x86_att_syntax)]` - -error: AT&T x86 assembly syntax used - --> $DIR/asm_syntax.rs:28:9 - | -LL | asm!("", options(nostack, att_syntax)); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: use Intel x86 assembly syntax - -error: aborting due to 5 previous errors - diff --git a/tests/ui/asm_syntax_not_x86.rs b/tests/ui/asm_syntax_not_x86.rs new file mode 100644 index 00000000000..33cea480681 --- /dev/null +++ b/tests/ui/asm_syntax_not_x86.rs @@ -0,0 +1,24 @@ +//@ignore-target-i686 +//@ignore-target-x86 +//@needs-asm-support + +#[warn(clippy::inline_asm_x86_intel_syntax)] +#[warn(clippy::inline_asm_x86_att_syntax)] +mod dont_warn { + use std::arch::{asm, global_asm}; + + pub(super) unsafe fn use_asm() { + asm!(""); + asm!("", options()); + asm!("", options(nostack)); + } + + global_asm!(""); + global_asm!("", options()); +} + +fn main() { + unsafe { + dont_warn::use_asm(); + } +} diff --git a/tests/ui/asm_syntax_x86.i686.stderr b/tests/ui/asm_syntax_x86.i686.stderr new file mode 100644 index 00000000000..dee78f97e68 --- /dev/null +++ b/tests/ui/asm_syntax_x86.i686.stderr @@ -0,0 +1,73 @@ +error: Intel x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:10:9 + | +LL | asm!(""); + | ^^^^^^^^ + | + = help: use AT&T x86 assembly syntax + = note: `-D clippy::inline-asm-x86-intel-syntax` implied by `-D warnings` + = help: to override `-D warnings` add `#[allow(clippy::inline_asm_x86_intel_syntax)]` + +error: Intel x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:12:9 + | +LL | asm!("", options()); + | ^^^^^^^^^^^^^^^^^^^ + | + = help: use AT&T x86 assembly syntax + +error: Intel x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:14:9 + | +LL | asm!("", options(nostack)); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: use AT&T x86 assembly syntax + +error: Intel x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:20:5 + | +LL | global_asm!(""); + | ^^^^^^^^^^^^^^^ + | + = help: use AT&T x86 assembly syntax + = note: this error originates in the macro `global_asm` (in Nightly builds, run with -Z macro-backtrace for more info) + +error: Intel x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:22:5 + | +LL | global_asm!("", options()); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: use AT&T x86 assembly syntax + = note: this error originates in the macro `global_asm` (in Nightly builds, run with -Z macro-backtrace for more info) + +error: AT&T x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:35:9 + | +LL | asm!("", options(att_syntax)); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: use Intel x86 assembly syntax + = note: `-D clippy::inline-asm-x86-att-syntax` implied by `-D warnings` + = help: to override `-D warnings` add `#[allow(clippy::inline_asm_x86_att_syntax)]` + +error: AT&T x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:37:9 + | +LL | asm!("", options(nostack, att_syntax)); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: use Intel x86 assembly syntax + +error: AT&T x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:43:5 + | +LL | global_asm!("", options(att_syntax)); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: use Intel x86 assembly syntax + = note: this error originates in the macro `global_asm` (in Nightly builds, run with -Z macro-backtrace for more info) + +error: aborting due to 8 previous errors + diff --git a/tests/ui/asm_syntax.rs b/tests/ui/asm_syntax_x86.rs index 0a7eb86bc03..835943b4389 100644 --- a/tests/ui/asm_syntax.rs +++ b/tests/ui/asm_syntax_x86.rs @@ -1,10 +1,12 @@ -//@only-target-x86_64 -//@ignore-target-aarch64 +//@revisions: i686 x86_64 +//@[i686] only-target-i686 +//@[x86_64] only-target-x86_64 #[warn(clippy::inline_asm_x86_intel_syntax)] mod warn_intel { + use std::arch::{asm, global_asm}; + pub(super) unsafe fn use_asm() { - use std::arch::asm; asm!(""); //~^ ERROR: Intel x86 assembly syntax used asm!("", options()); @@ -14,12 +16,19 @@ mod warn_intel { asm!("", options(att_syntax)); asm!("", options(nostack, att_syntax)); } + + global_asm!(""); + //~^ ERROR: Intel x86 assembly syntax used + global_asm!("", options()); + //~^ ERROR: Intel x86 assembly syntax used + global_asm!("", options(att_syntax)); } #[warn(clippy::inline_asm_x86_att_syntax)] mod warn_att { + use std::arch::{asm, global_asm}; + pub(super) unsafe fn use_asm() { - use std::arch::asm; asm!(""); asm!("", options()); asm!("", options(nostack)); @@ -28,9 +37,13 @@ mod warn_att { asm!("", options(nostack, att_syntax)); //~^ ERROR: AT&T x86 assembly syntax used } + + global_asm!(""); + global_asm!("", options()); + global_asm!("", options(att_syntax)); + //~^ ERROR: AT&T x86 assembly syntax used } -#[cfg(target_arch = "x86_64")] fn main() { unsafe { warn_att::use_asm(); diff --git a/tests/ui/asm_syntax_x86.x86_64.stderr b/tests/ui/asm_syntax_x86.x86_64.stderr new file mode 100644 index 00000000000..dee78f97e68 --- /dev/null +++ b/tests/ui/asm_syntax_x86.x86_64.stderr @@ -0,0 +1,73 @@ +error: Intel x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:10:9 + | +LL | asm!(""); + | ^^^^^^^^ + | + = help: use AT&T x86 assembly syntax + = note: `-D clippy::inline-asm-x86-intel-syntax` implied by `-D warnings` + = help: to override `-D warnings` add `#[allow(clippy::inline_asm_x86_intel_syntax)]` + +error: Intel x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:12:9 + | +LL | asm!("", options()); + | ^^^^^^^^^^^^^^^^^^^ + | + = help: use AT&T x86 assembly syntax + +error: Intel x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:14:9 + | +LL | asm!("", options(nostack)); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: use AT&T x86 assembly syntax + +error: Intel x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:20:5 + | +LL | global_asm!(""); + | ^^^^^^^^^^^^^^^ + | + = help: use AT&T x86 assembly syntax + = note: this error originates in the macro `global_asm` (in Nightly builds, run with -Z macro-backtrace for more info) + +error: Intel x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:22:5 + | +LL | global_asm!("", options()); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: use AT&T x86 assembly syntax + = note: this error originates in the macro `global_asm` (in Nightly builds, run with -Z macro-backtrace for more info) + +error: AT&T x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:35:9 + | +LL | asm!("", options(att_syntax)); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: use Intel x86 assembly syntax + = note: `-D clippy::inline-asm-x86-att-syntax` implied by `-D warnings` + = help: to override `-D warnings` add `#[allow(clippy::inline_asm_x86_att_syntax)]` + +error: AT&T x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:37:9 + | +LL | asm!("", options(nostack, att_syntax)); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: use Intel x86 assembly syntax + +error: AT&T x86 assembly syntax used + --> $DIR/asm_syntax_x86.rs:43:5 + | +LL | global_asm!("", options(att_syntax)); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: use Intel x86 assembly syntax + = note: this error originates in the macro `global_asm` (in Nightly builds, run with -Z macro-backtrace for more info) + +error: aborting due to 8 previous errors + |
