11//@ only-aarch64
22
3- use std:: arch:: { asm, global_asm } ;
3+ use std:: arch:: asm;
44
55fn main ( ) {
66 let mut foo = 0 ;
77 let mut bar = 0 ;
88 unsafe {
9- asm ! ( ) ;
10- //~^ ERROR requires at least a template string argument
11- asm ! ( foo) ;
12- //~^ ERROR asm template must be a string literal
13- asm ! ( "{}" foo) ;
14- //~^ ERROR expected token: `,`
15- asm ! ( "{}" , foo) ;
16- //~^ ERROR expected operand, clobber_abi, options, or additional template string
17- asm ! ( "{}" , in foo) ;
18- //~^ ERROR expected `(`, found `foo`
19- asm ! ( "{}" , in( reg foo) ) ;
20- //~^ ERROR expected `)`, found `foo`
21- asm ! ( "{}" , in( reg) ) ;
22- //~^ ERROR expected expression, found end of macro arguments
23- asm ! ( "{}" , inout( =) foo => bar) ;
24- //~^ ERROR expected register class or explicit register
25- asm ! ( "{}" , inout( reg) foo =>) ;
26- //~^ ERROR expected expression, found end of macro arguments
27- asm ! ( "{}" , in( reg) foo => bar) ;
28- //~^ ERROR expected one of `!`, `,`, `.`, `::`, `?`, `{`, or an operator, found `=>`
29- asm ! ( "{}" , sym foo + bar) ;
30- //~^ ERROR expected a path for argument to `sym`
31- asm ! ( "" , options( foo) ) ;
32- //~^ ERROR expected one of
33- asm ! ( "" , options( nomem foo) ) ;
34- //~^ ERROR expected one of
35- asm ! ( "" , options( nomem, foo) ) ;
36- //~^ ERROR expected one of
37- asm ! ( "{}" , options( ) , const foo) ;
38- //~^ ERROR attempt to use a non-constant value in a constant
39- asm ! ( "" , clobber_abi( foo) ) ;
40- //~^ ERROR expected string literal
41- asm ! ( "" , clobber_abi( "C" foo) ) ;
42- //~^ ERROR expected one of `)` or `,`, found `foo`
43- asm ! ( "" , clobber_abi( "C" , foo) ) ;
44- //~^ ERROR expected string literal
45- asm ! ( "{}" , clobber_abi( "C" ) , const foo) ;
46- //~^ ERROR attempt to use a non-constant value in a constant
47- asm ! ( "" , options( ) , clobber_abi( "C" ) ) ;
48- asm ! ( "{}" , options( ) , clobber_abi( "C" ) , const foo) ;
49- //~^ ERROR attempt to use a non-constant value in a constant
50- asm ! ( "{a}" , a = const foo, a = const bar) ;
51- //~^ ERROR duplicate argument named `a`
52- //~^^ ERROR argument never used
53- //~^^^ ERROR attempt to use a non-constant value in a constant
54- //~^^^^ ERROR attempt to use a non-constant value in a constant
559 asm ! ( "" , a = in( "x0" ) foo) ;
5610 //~^ ERROR explicit register arguments cannot have names
5711 asm ! ( "{a}" , in( "x0" ) foo, a = const bar) ;
@@ -61,64 +15,5 @@ fn main() {
6115 asm ! ( "{1}" , in( "x0" ) foo, const bar) ;
6216 //~^ ERROR positional arguments cannot follow named arguments or explicit register arguments
6317 //~^^ ERROR attempt to use a non-constant value in a constant
64- asm ! ( "" , options( ) , "" ) ;
65- //~^ ERROR expected one of
66- asm ! ( "{}" , in( reg) foo, "{}" , out( reg) foo) ;
67- //~^ ERROR expected one of
68- asm ! ( format!( "{{{}}}" , 0 ) , in( reg) foo) ;
69- //~^ ERROR asm template must be a string literal
70- asm ! ( "{1}" , format!( "{{{}}}" , 0 ) , in( reg) foo, out( reg) bar) ;
71- //~^ ERROR asm template must be a string literal
72- asm ! ( "{}" , in( reg) _) ;
73- //~^ ERROR _ cannot be used for input operands
74- asm ! ( "{}" , inout( reg) _) ;
75- //~^ ERROR _ cannot be used for input operands
76- asm ! ( "{}" , inlateout( reg) _) ;
77- //~^ ERROR _ cannot be used for input operands
7818 }
7919}
80-
81- const FOO : i32 = 1 ;
82- const BAR : i32 = 2 ;
83- global_asm ! ( ) ;
84- //~^ ERROR requires at least a template string argument
85- global_asm ! ( FOO ) ;
86- //~^ ERROR asm template must be a string literal
87- global_asm ! ( "{}" FOO ) ;
88- //~^ ERROR expected token: `,`
89- global_asm ! ( "{}" , FOO ) ;
90- //~^ ERROR expected operand, options, or additional template string
91- global_asm ! ( "{}" , const ) ;
92- //~^ ERROR expected expression, found end of macro arguments
93- global_asm ! ( "{}" , const ( reg) FOO ) ;
94- //~^ ERROR expected one of
95- global_asm ! ( "" , options( FOO ) ) ;
96- //~^ ERROR expected one of
97- global_asm ! ( "" , options( nomem FOO ) ) ;
98- //~^ ERROR expected one of
99- global_asm ! ( "" , options( nomem, FOO ) ) ;
100- //~^ ERROR expected one of
101- global_asm ! ( "{}" , options( ) , const FOO ) ;
102- global_asm ! ( "" , clobber_abi( FOO ) ) ;
103- //~^ ERROR expected string literal
104- global_asm ! ( "" , clobber_abi( "C" FOO ) ) ;
105- //~^ ERROR expected one of `)` or `,`, found `FOO`
106- global_asm ! ( "" , clobber_abi( "C" , FOO ) ) ;
107- //~^ ERROR expected string literal
108- global_asm ! ( "{}" , clobber_abi( "C" ) , const FOO ) ;
109- //~^ ERROR `clobber_abi` cannot be used with `global_asm!`
110- global_asm ! ( "" , options( ) , clobber_abi( "C" ) ) ;
111- //~^ ERROR `clobber_abi` cannot be used with `global_asm!`
112- global_asm ! ( "{}" , options( ) , clobber_abi( "C" ) , const FOO ) ;
113- //~^ ERROR `clobber_abi` cannot be used with `global_asm!`
114- global_asm ! ( "{a}" , a = const FOO , a = const BAR ) ;
115- //~^ ERROR duplicate argument named `a`
116- //~^^ ERROR argument never used
117- global_asm ! ( "" , options( ) , "" ) ;
118- //~^ ERROR expected one of
119- global_asm ! ( "{}" , const FOO , "{}" , const FOO ) ;
120- //~^ ERROR expected one of
121- global_asm ! ( format!( "{{{}}}" , 0 ) , const FOO ) ;
122- //~^ ERROR asm template must be a string literal
123- global_asm ! ( "{1}" , format!( "{{{}}}" , 0 ) , const FOO , const BAR ) ;
124- //~^ ERROR asm template must be a string literal
0 commit comments