]> git.proxmox.com Git - rustc.git/blob - src/test/ui/asm/srcloc.rs
New upstream version 1.53.0+dfsg1
[rustc.git] / src / test / ui / asm / srcloc.rs
1 // min-llvm-version: 10.0.1
2 // only-x86_64
3 // build-fail
4 // compile-flags: -Ccodegen-units=1
5 #![feature(asm)]
6
7 // Checks that inline asm errors are mapped to the correct line in the source code.
8
9 fn main() {
10 unsafe {
11 asm!("invalid_instruction");
12 //~^ ERROR: invalid instruction mnemonic 'invalid_instruction'
13
14 asm!("
15 invalid_instruction
16 ");
17 //~^^ ERROR: invalid instruction mnemonic 'invalid_instruction'
18
19 asm!(r#"
20 invalid_instruction
21 "#);
22 //~^^ ERROR: invalid instruction mnemonic 'invalid_instruction'
23
24 asm!("
25 mov eax, eax
26 invalid_instruction
27 mov eax, eax
28 ");
29 //~^^^ ERROR: invalid instruction mnemonic 'invalid_instruction'
30
31 asm!(r#"
32 mov eax, eax
33 invalid_instruction
34 mov eax, eax
35 "#);
36 //~^^^ ERROR: invalid instruction mnemonic 'invalid_instruction'
37
38 asm!(concat!("invalid", "_", "instruction"));
39 //~^ ERROR: invalid instruction mnemonic 'invalid_instruction'
40
41 asm!("movaps %xmm3, (%esi, 2)", options(att_syntax));
42 //~^ WARN: scale factor without index register is ignored
43
44 asm!(
45 "invalid_instruction",
46 );
47 //~^^ ERROR: invalid instruction mnemonic 'invalid_instruction'
48
49 asm!(
50 "mov eax, eax",
51 "invalid_instruction",
52 "mov eax, eax",
53 );
54 //~^^^ ERROR: invalid instruction mnemonic 'invalid_instruction'
55
56 asm!(
57 "mov eax, eax\n",
58 "invalid_instruction",
59 "mov eax, eax",
60 );
61 //~^^^ ERROR: invalid instruction mnemonic 'invalid_instruction'
62
63 asm!(
64 "mov eax, eax",
65 concat!("invalid", "_", "instruction"),
66 "mov eax, eax",
67 );
68 //~^^^ ERROR: invalid instruction mnemonic 'invalid_instruction'
69
70 asm!(
71 concat!("mov eax", ", ", "eax"),
72 concat!("invalid", "_", "instruction"),
73 concat!("mov eax", ", ", "eax"),
74 );
75 //~^^^ ERROR: invalid instruction mnemonic 'invalid_instruction'
76
77 // Make sure template strings get separated
78 asm!(
79 "invalid_instruction1",
80 "invalid_instruction2",
81 );
82 //~^^^ ERROR: invalid instruction mnemonic 'invalid_instruction1'
83 //~^^^ ERROR: invalid instruction mnemonic 'invalid_instruction2'
84
85 asm!(
86 concat!(
87 "invalid", "_", "instruction1", "\n",
88 "invalid", "_", "instruction2",
89 ),
90 );
91 //~^^^^^ ERROR: invalid instruction mnemonic 'invalid_instruction1'
92 //~^^^^^^ ERROR: invalid instruction mnemonic 'invalid_instruction2'
93
94 asm!(
95 concat!(
96 "invalid", "_", "instruction1", "\n",
97 "invalid", "_", "instruction2",
98 ),
99 concat!(
100 "invalid", "_", "instruction3", "\n",
101 "invalid", "_", "instruction4",
102 ),
103 );
104 //~^^^^^^^^^ ERROR: invalid instruction mnemonic 'invalid_instruction1'
105 //~^^^^^^^^^^ ERROR: invalid instruction mnemonic 'invalid_instruction2'
106 //~^^^^^^^ ERROR: invalid instruction mnemonic 'invalid_instruction3'
107 //~^^^^^^^^ ERROR: invalid instruction mnemonic 'invalid_instruction4'
108
109 asm!(
110 concat!(
111 "invalid", "_", "instruction1", "\n",
112 "invalid", "_", "instruction2", "\n",
113 ),
114 concat!(
115 "invalid", "_", "instruction3", "\n",
116 "invalid", "_", "instruction4", "\n",
117 ),
118 );
119 //~^^^^^^^^^ ERROR: invalid instruction mnemonic 'invalid_instruction1'
120 //~^^^^^^^^^^ ERROR: invalid instruction mnemonic 'invalid_instruction2'
121 //~^^^^^^^ ERROR: invalid instruction mnemonic 'invalid_instruction3'
122 //~^^^^^^^^ ERROR: invalid instruction mnemonic 'invalid_instruction4'
123 }
124 }