about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-02-17 01:54:24 +0000
committerbors <bors@rust-lang.org>2024-02-17 01:54:24 +0000
commit5471e0645a497ab331ae38adc965aa15b74aa8c9 (patch)
treeb9e8611ea646b473c3665b589f838b7932f443b5 /tests
parentab8880bdf33401ab69ae0ac38c7ceb454c6ca9bf (diff)
parent9b5e4c6d57decaa419e3af48d0c6b95cb5b7620e (diff)
downloadrust-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.stderr46
-rw-r--r--tests/ui/asm_syntax_not_x86.rs24
-rw-r--r--tests/ui/asm_syntax_x86.i686.stderr73
-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.stderr73
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
+