diff --git a/src/shader_recompiler/backend/spirv/emit_spirv.cpp b/src/shader_recompiler/backend/spirv/emit_spirv.cpp
index 266ac690c..881a5dc4c 100644
--- a/src/shader_recompiler/backend/spirv/emit_spirv.cpp
+++ b/src/shader_recompiler/backend/spirv/emit_spirv.cpp
@@ -136,7 +136,7 @@ void Traverse(EmitContext& ctx, IR::Program& program) {
             const Id endloop_label{node.loop.merge->Definition<Id>()};
 
             ctx.OpLoopMerge(endloop_label, continue_label, spv::LoopControlMask::MaskNone);
-            ctx.OpBranch(node.loop.body->Definition<Id>());
+            ctx.OpBranch(body_label);
             break;
         }
         case IR::AbstractSyntaxNode::Type::Break: {