1 // revisions: x86_64_mirunsafeck aarch64_mirunsafeck x86_64_thirunsafeck aarch64_thirunsafeck
3 // [x86_64_thirunsafeck] compile-flags: -Z thir-unsafeck --target x86_64-unknown-linux-gnu
4 // [aarch64_thirunsafeck] compile-flags: -Z thir-unsafeck --target aarch64-unknown-linux-gnu
5 // [x86_64_mirunsafeck] compile-flags: --target x86_64-unknown-linux-gnu
6 // [aarch64_mirunsafeck] compile-flags: --target aarch64-unknown-linux-gnu
8 // [x86_64_thirunsafeck] needs-llvm-components: x86
9 // [x86_64_mirunsafeck] needs-llvm-components: x86
10 // [aarch64_thirunsafeck] needs-llvm-components: aarch64
11 // [aarch64_mirunsafeck] needs-llvm-components: aarch64
13 #![feature(no_core, lang_items, rustc_attrs, asm_const)]
16 #[rustc_builtin_macro]
20 #[rustc_builtin_macro]
21 macro_rules! global_asm {
32 //~^ ERROR invalid reference to argument at index 0
33 asm!("{1}", in(reg) foo);
34 //~^ ERROR invalid reference to argument at index 1
35 //~^^ ERROR argument never used
37 //~^ ERROR there is no argument named `a`
38 asm!("{}", a = in(reg) foo);
39 //~^ ERROR invalid reference to argument at index 0
40 //~^^ ERROR argument never used
41 asm!("{1}", a = in(reg) foo);
42 //~^ ERROR invalid reference to argument at index 1
43 //~^^ ERROR named argument never used
44 #[cfg(any(x86_64_thirunsafeck, x86_64_mirunsafeck))]
45 asm!("{}", in("eax") foo);
46 //[x86_64_thirunsafeck,x86_64_mirunsafeck]~^ ERROR invalid reference to argument at index 0
47 #[cfg(any(aarch64_thirunsafeck, aarch64_mirunsafeck))]
48 asm!("{}", in("x0") foo);
49 //[aarch64_thirunsafeck,aarch64_mirunsafeck]~^ ERROR invalid reference to argument at index 0
50 asm!("{:foo}", in(reg) foo);
51 //~^ ERROR asm template modifier must be a single character
52 asm!("", in(reg) 0, in(reg) 1);
53 //~^ ERROR multiple unused asm arguments
59 //~^ ERROR invalid reference to argument at index 0
60 global_asm!("{1}", const FOO);
61 //~^ ERROR invalid reference to argument at index 1
62 //~^^ ERROR argument never used
64 //~^ ERROR there is no argument named `a`
65 global_asm!("{}", a = const FOO);
66 //~^ ERROR invalid reference to argument at index 0
67 //~^^ ERROR argument never used
68 global_asm!("{1}", a = const FOO);
69 //~^ ERROR invalid reference to argument at index 1
70 //~^^ ERROR named argument never used
71 global_asm!("{:foo}", const FOO);
72 //~^ ERROR asm template modifier must be a single character
73 global_asm!("", const FOO, const FOO);
74 //~^ ERROR multiple unused asm arguments