aboutsummaryrefslogtreecommitdiffstats
path: root/yjit
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2023-11-22 15:13:32 -0800
committerGitHub <noreply@github.com>2023-11-22 15:13:32 -0800
commit926bfc3bc0cfea976533c8eba8cda1fa298124e2 (patch)
treedd1e3e70003a7e7a95839749cbb13bae10816ce9 /yjit
parent5672fb63d21ca8311513c44a82ffe5a0c8f55240 (diff)
downloadruby-926bfc3bc0cfea976533c8eba8cda1fa298124e2.tar.gz
YJIT: Avoid a register spill on arm64 (#9014)
Diffstat (limited to 'yjit')
-rw-r--r--yjit/src/backend/arm64/mod.rs2
1 files changed, 1 insertions, 1 deletions
diff --git a/yjit/src/backend/arm64/mod.rs b/yjit/src/backend/arm64/mod.rs
index f09a07e571..7cd2449e73 100644
--- a/yjit/src/backend/arm64/mod.rs
+++ b/yjit/src/backend/arm64/mod.rs
@@ -564,6 +564,7 @@ impl Assembler
// If we're attempting to load into a memory operand, then
// we'll switch over to the store instruction.
(Opnd::Mem(_), _) => {
+ let opnd0 = split_memory_address(asm, *dest);
let value = match *src {
// If the first operand is zero, then we can just use
// the zero register.
@@ -579,7 +580,6 @@ impl Assembler
_ => split_bitmask_immediate(asm, *src, dest.rm_num_bits())
};
- let opnd0 = split_memory_address(asm, *dest);
asm.store(opnd0, value);
},
// If we're loading a memory operand into a register, then