//@ needs-asm-support //@ ignore-nvptx64 //@ ignore-spirv use std::arch::{asm, global_asm}; // Const operands must be integers and must be constants. global_asm!("{}", const 0); global_asm!("{}", const 0i32); global_asm!("{}", const 0i128); global_asm!("{}", const 0f32); //~^ ERROR invalid type for `const` operand global_asm!("{}", const 0 as *mut u8); //~^ ERROR invalid type for `const` operand fn main() { unsafe { // Const operands must be integers and must be constants. asm!("{}", const 0); asm!("{}", const 0i32); asm!("{}", const 0i128); asm!("{}", const 0f32); //~^ ERROR invalid type for `const` operand asm!("{}", const 0 as *mut u8); //~^ ERROR invalid type for `const` operand asm!("{}", const &0); //~^ ERROR invalid type for `const` operand // Constants must be... constant let x = 0; const fn const_foo(x: i32) -> i32 { x } const fn const_bar(x: T) -> T { x } asm!("{}", const x); //~^ ERROR attempt to use a non-constant value in a constant asm!("{}", const const_foo(0)); asm!("{}", const const_foo(x)); //~^ ERROR attempt to use a non-constant value in a constant asm!("{}", const const_bar(0)); asm!("{}", const const_bar(x)); //~^ ERROR attempt to use a non-constant value in a constant } }