Mark return value as define instead of clobber for TLS pseudoinstructions (#4357)

This commit is contained in:
bjorn3
2022-06-30 19:44:51 +02:00
committed by GitHub
parent b4830ef1e7
commit d1446f767d
5 changed files with 15 additions and 13 deletions

View File

@@ -1032,9 +1032,10 @@ fn aarch64_get_operands<F: Fn(VReg) -> VReg>(inst: &Inst, collector: &mut Operan
&Inst::VirtualSPOffsetAdj { .. } => {}
&Inst::ElfTlsGetAddr { .. } => {
collector.reg_clobbers(AArch64MachineDeps::get_regs_clobbered_by_call(
CallConv::SystemV,
));
collector.reg_def(Writable::from_reg(regs::xreg(0)));
let mut clobbers = AArch64MachineDeps::get_regs_clobbered_by_call(CallConv::SystemV);
clobbers.remove(regs::xreg_preg(0));
collector.reg_clobbers(clobbers);
}
&Inst::Unwind { .. } => {}
&Inst::EmitIsland { .. } => {}
@@ -2723,7 +2724,7 @@ impl Inst {
&Inst::EmitIsland { needed_space } => format!("emit_island {}", needed_space),
&Inst::ElfTlsGetAddr { ref symbol } => {
format!("elf_tls_get_addr {}", symbol)
format!("x0 = elf_tls_get_addr {}", symbol)
}
&Inst::Unwind { ref inst } => {
format!("unwind {:?}", inst)