//@ only-aarch64 //@ build-fail //@ needs-asm-support //@ compile-flags: -Ccodegen-units=1 use std::arch::asm; // Checks that inline asm errors are mapped to the correct line in the source code. fn main() { unsafe { asm!("invalid_instruction"); //~^ ERROR: unrecognized instruction mnemonic asm!(" invalid_instruction "); //~^^ ERROR: unrecognized instruction mnemonic asm!(r#" invalid_instruction "#); //~^^ ERROR: unrecognized instruction mnemonic asm!(" mov x0, x0 invalid_instruction mov x0, x0 "); //~^^^ ERROR: unrecognized instruction mnemonic asm!(r#" mov x0, x0 invalid_instruction mov x0, x0 "#); //~^^^ ERROR: unrecognized instruction mnemonic asm!(concat!("invalid", "_", "instruction")); //~^ ERROR: unrecognized instruction mnemonic asm!( "invalid_instruction", ); //~^^ ERROR: unrecognized instruction mnemonic asm!( "mov x0, x0", "invalid_instruction", "mov x0, x0", ); //~^^^ ERROR: unrecognized instruction mnemonic asm!( "mov x0, x0\n", "invalid_instruction", "mov x0, x0", ); //~^^^ ERROR: unrecognized instruction mnemonic asm!( "mov x0, x0", concat!("invalid", "_", "instruction"), "mov x0, x0", ); //~^^^ ERROR: unrecognized instruction mnemonic asm!( concat!("mov x0", ", ", "x0"), concat!("invalid", "_", "instruction"), concat!("mov x0", ", ", "x0"), ); //~^^^ ERROR: unrecognized instruction mnemonic // Make sure template strings get separated asm!( "invalid_instruction1", "invalid_instruction2", ); //~^^^ ERROR: unrecognized instruction mnemonic //~^^^ ERROR: unrecognized instruction mnemonic asm!( concat!( "invalid", "_", "instruction1", "\n", "invalid", "_", "instruction2", ), ); //~^^^^^ ERROR: unrecognized instruction mnemonic //~^^^^^^ ERROR: unrecognized instruction mnemonic asm!( concat!( "invalid", "_", "instruction1", "\n", "invalid", "_", "instruction2", ), concat!( "invalid", "_", "instruction3", "\n", "invalid", "_", "instruction4", ), ); //~^^^^^^^^^ ERROR: unrecognized instruction mnemonic //~^^^^^^^^^^ ERROR: unrecognized instruction mnemonic //~^^^^^^^ ERROR: unrecognized instruction mnemonic //~^^^^^^^^ ERROR: unrecognized instruction mnemonic asm!( concat!( "invalid", "_", "instruction1", "\n", "invalid", "_", "instruction2", "\n", ), concat!( "invalid", "_", "instruction3", "\n", "invalid", "_", "instruction4", "\n", ), ); //~^^^^^^^^^ ERROR: unrecognized instruction mnemonic //~^^^^^^^^^^ ERROR: unrecognized instruction mnemonic //~^^^^^^^ ERROR: unrecognized instruction mnemonic //~^^^^^^^^ ERROR: unrecognized instruction mnemonic asm!( "", "\n", "invalid_instruction" ); //~^^ ERROR: unrecognized instruction mnemonic } }