1 // Test that the compiler will catch passing invalid values to inline assembly
22 llvm_asm!("" :: "r"("")); //~ ERROR E0669
26 let target = MyPtr(0);
27 llvm_asm!("ret" : : "{rdi}"(target)); //~ ERROR E0669
32 let hello: &str = "hello";
33 // this should fail...
34 unsafe { llvm_asm!("" :: "i"(hello)) }; //~ ERROR E0669
35 // but this should succeed.
36 unsafe { llvm_asm!("" :: "r"(hello.as_ptr())) };
40 let arr: [u8; 1] = [0; 1];
42 llvm_asm!("movups $1, %xmm0"::"m"(arr)); //~ ERROR E0669
47 let addr: Option<u32> = Some(123);
49 llvm_asm!("mov sp, $0"::"r"(addr)); //~ ERROR E0669
53 fn multiple_errors() {
54 let addr: (u32, u32) = (1, 2);
56 llvm_asm!("mov sp, $0"::"r"(addr), //~ ERROR E0669
57 "r"("hello e0669")); //~ ERROR E0669