From 0784e27a0176d0de3bd4aed98efc0543343431d6 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Mon, 30 Mar 2026 20:29:58 +0300 Subject: [PATCH] Fix jumping in Aarch64 compiler --- libs/jit/source/arch/aarch64/compiler.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libs/jit/source/arch/aarch64/compiler.cpp b/libs/jit/source/arch/aarch64/compiler.cpp index e736afc..29abaff 100644 --- a/libs/jit/source/arch/aarch64/compiler.cpp +++ b/libs/jit/source/arch/aarch64/compiler.cpp @@ -739,6 +739,7 @@ namespace pslang::jit::aarch64 void apply(ir::node_ref, ir::jump_if_zero const & node, types::type_ptr const &) { load(node.condition, 0); + extend(0, node.condition->inferred_type); lcontext.cbranch_resolve.emplace_back(pcontext.code.size(), node.target); builder.cbz(0, 0); } @@ -746,6 +747,7 @@ namespace pslang::jit::aarch64 void apply(ir::node_ref, ir::jump_if_nonzero const & node, types::type_ptr const &) { load(node.condition, 0); + extend(0, node.condition->inferred_type); lcontext.cbranch_resolve.emplace_back(pcontext.code.size(), node.target); builder.cbnz(0, 0); } @@ -1054,7 +1056,7 @@ namespace pslang::jit::aarch64 for (; it != end; ++it) { // Uncomment to debug per-node instruction generation: - builder.nop(); + // builder.nop(); lcontext.nodes[it] = pcontext.code.size(); std::visit([&](auto const & instruction){ apply(it, instruction, it->inferred_type); }, it->instruction); }