]> git.lizzy.rs Git - rust.git/blob - src/test/ui/asm/inline-syntax.rs
Auto merge of #100845 - timvermeulen:iter_compare, r=scottmcm
[rust.git] / src / test / ui / asm / inline-syntax.rs
1 // revisions: x86_64 arm
2 //[x86_64] compile-flags: --target x86_64-unknown-linux-gnu
3 //[x86_64] check-pass
4 //[x86_64] needs-llvm-components: x86
5 //[x86_64_allowed] compile-flags: --target x86_64-unknown-linux-gnu
6 //[x86_64_allowed] check-pass
7 //[x86_64_allowed] needs-llvm-components: x86
8 //[arm] compile-flags: --target armv7-unknown-linux-gnueabihf
9 //[arm] build-fail
10 //[arm] needs-llvm-components: arm
11 // needs-asm-support
12
13 #![feature(no_core, lang_items, rustc_attrs)]
14 #![crate_type = "rlib"]
15 #![no_core]
16 #![cfg_attr(x86_64_allowed, allow(bad_asm_style))]
17
18 #[rustc_builtin_macro]
19 macro_rules! asm {
20     () => {};
21 }
22 #[rustc_builtin_macro]
23 macro_rules! global_asm {
24     () => {};
25 }
26
27 #[lang = "sized"]
28 trait Sized {}
29
30 pub fn main() {
31     unsafe {
32         asm!(".intel_syntax noprefix", "nop");
33         //[x86_64]~^ WARN avoid using `.intel_syntax`
34         //[arm]~^^ ERROR unknown directive
35         asm!(".intel_syntax aaa noprefix", "nop");
36         //[x86_64]~^ WARN avoid using `.intel_syntax`
37         //[arm]~^^ ERROR unknown directive
38         asm!(".att_syntax noprefix", "nop");
39         //[x86_64]~^ WARN avoid using `.att_syntax`
40         //[arm]~^^ ERROR unknown directive
41         asm!(".att_syntax bbb noprefix", "nop");
42         //[x86_64]~^ WARN avoid using `.att_syntax`
43         //[arm]~^^ ERROR unknown directive
44         asm!(".intel_syntax noprefix; nop");
45         //[x86_64]~^ WARN avoid using `.intel_syntax`
46         //[arm]~^^ ERROR unknown directive
47
48         asm!(
49             r"
50             .intel_syntax noprefix
51             nop"
52         );
53         //[x86_64]~^^^ WARN avoid using `.intel_syntax`
54         //[arm]~^^^^ ERROR unknown directive
55     }
56 }
57
58 global_asm!(".intel_syntax noprefix", "nop");
59 //[x86_64]~^ WARN avoid using `.intel_syntax`
60 // Assembler errors don't have line numbers, so no error on ARM