From 588c630b79c9446ee0145eb7cd33408032f7a950 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Thu, 3 Jul 2025 10:15:26 +0000 Subject: [PATCH 1/2] Escape { and } before passing to global_asm!() --- src/global_asm.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/global_asm.rs b/src/global_asm.rs index db40d84be..cbb4c3131 100644 --- a/src/global_asm.rs +++ b/src/global_asm.rs @@ -202,6 +202,9 @@ pub(crate) fn compile_global_asm( return Err(format!("Failed to assemble `{}`", global_asm)); } } else { + // Escape { and } + let global_asm = global_asm.replace('{', "{{").replace('}', "}}"); + let mut child = Command::new(std::env::current_exe().unwrap()) // Avoid a warning about the jobserver fd not being passed .env_remove("CARGO_MAKEFLAGS") From 868d953b7a13bbc1ebf1635ff6c5fddaed441050 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Thu, 3 Jul 2025 10:16:13 +0000 Subject: [PATCH 2/2] Avoid q modifier for user references to arm64 vector registers It should only be necessary for the clobber save/restore sequences. --- src/inline_asm.rs | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/inline_asm.rs b/src/inline_asm.rs index 95c249f5a..eec8b08a1 100644 --- a/src/inline_asm.rs +++ b/src/inline_asm.rs @@ -568,20 +568,6 @@ impl<'tcx> InlineAssemblyGenerator<'_, 'tcx> { .emit(&mut generated_asm, InlineAsmArch::X86_64, *modifier) .unwrap(), }, - InlineAsmArch::AArch64 => match reg { - InlineAsmReg::AArch64(reg) if reg.vreg_index().is_some() => { - // rustc emits v0 rather than q0 - reg.emit( - &mut generated_asm, - InlineAsmArch::AArch64, - Some(modifier.unwrap_or('q')), - ) - .unwrap() - } - _ => reg - .emit(&mut generated_asm, InlineAsmArch::AArch64, *modifier) - .unwrap(), - }, _ => reg.emit(&mut generated_asm, self.arch, *modifier).unwrap(), } }