summaryrefslogtreecommitdiffstats
path: root/src/test/ui/asm/inline-syntax.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/asm/inline-syntax.rs')
-rw-r--r--src/test/ui/asm/inline-syntax.rs60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/test/ui/asm/inline-syntax.rs b/src/test/ui/asm/inline-syntax.rs
new file mode 100644
index 000000000..d06796e33
--- /dev/null
+++ b/src/test/ui/asm/inline-syntax.rs
@@ -0,0 +1,60 @@
+// revisions: x86_64 arm
+//[x86_64] compile-flags: --target x86_64-unknown-linux-gnu
+//[x86_64] check-pass
+//[x86_64] needs-llvm-components: x86
+//[x86_64_allowed] compile-flags: --target x86_64-unknown-linux-gnu
+//[x86_64_allowed] check-pass
+//[x86_64_allowed] needs-llvm-components: x86
+//[arm] compile-flags: --target armv7-unknown-linux-gnueabihf
+//[arm] build-fail
+//[arm] needs-llvm-components: arm
+// needs-asm-support
+
+#![feature(no_core, lang_items, rustc_attrs)]
+#![crate_type = "rlib"]
+#![no_core]
+#![cfg_attr(x86_64_allowed, allow(bad_asm_style))]
+
+#[rustc_builtin_macro]
+macro_rules! asm {
+ () => {};
+}
+#[rustc_builtin_macro]
+macro_rules! global_asm {
+ () => {};
+}
+
+#[lang = "sized"]
+trait Sized {}
+
+pub fn main() {
+ unsafe {
+ asm!(".intel_syntax noprefix", "nop");
+ //[x86_64]~^ WARN avoid using `.intel_syntax`
+ //[arm]~^^ ERROR unknown directive
+ asm!(".intel_syntax aaa noprefix", "nop");
+ //[x86_64]~^ WARN avoid using `.intel_syntax`
+ //[arm]~^^ ERROR unknown directive
+ asm!(".att_syntax noprefix", "nop");
+ //[x86_64]~^ WARN avoid using `.att_syntax`
+ //[arm]~^^ ERROR unknown directive
+ asm!(".att_syntax bbb noprefix", "nop");
+ //[x86_64]~^ WARN avoid using `.att_syntax`
+ //[arm]~^^ ERROR unknown directive
+ asm!(".intel_syntax noprefix; nop");
+ //[x86_64]~^ WARN avoid using `.intel_syntax`
+ //[arm]~^^ ERROR unknown directive
+
+ asm!(
+ r"
+ .intel_syntax noprefix
+ nop"
+ );
+ //[x86_64]~^^^ WARN avoid using `.intel_syntax`
+ //[arm]~^^^^ ERROR unknown directive
+ }
+}
+
+global_asm!(".intel_syntax noprefix", "nop");
+//[x86_64]~^ WARN avoid using `.intel_syntax`
+// Assembler errors don't have line numbers, so no error on ARM