]> git.proxmox.com Git - rustc.git/blame - src/test/ui/inline-asm-bad-constraint.rs
New upstream version 1.49.0+dfsg1
[rustc.git] / src / test / ui / inline-asm-bad-constraint.rs
CommitLineData
0bf4aa26
XL
1// Test that the compiler will catch invalid inline assembly constraints.
2
46de9a89 3// build-fail
a1dfa0c6
XL
4// ignore-emscripten
5
72b1a166 6#![feature(llvm_asm)]
0bf4aa26
XL
7
8extern "C" {
9 fn foo(a: usize);
10}
11
12fn main() {
13 bad_register_constraint();
14 bad_input();
15 wrong_size_output();
16}
17
18// Issue #54130
19fn bad_register_constraint() {
20 let rax: u64;
21 unsafe {
72b1a166 22 llvm_asm!("" :"={rax"(rax)) //~ ERROR E0668
0bf4aa26
XL
23 };
24 println!("Accumulator is: {}", rax);
25}
26
27// Issue #54376
28fn bad_input() {
29 unsafe {
72b1a166 30 llvm_asm!("callq $0" : : "0"(foo)) //~ ERROR E0668
0bf4aa26
XL
31 };
32}
33
34fn wrong_size_output() {
35 let rax: u64 = 0;
36 unsafe {
72b1a166 37 llvm_asm!("addb $1, $0" : "={rax}"((0i32, rax))); //~ ERROR E0668
0bf4aa26
XL
38 }
39 println!("rax: {}", rax);
40}