Commit 7a8e86e46c

Alex Rønne Petersen <alex@alexrp.com>
2024-08-13 05:26:30
llvm: Don't emit extra debug instructions for `dbg_var_val` in naked functions.
1 parent acad2fa
Changed files (1)
src
codegen
src/codegen/llvm.zig
@@ -6743,7 +6743,10 @@ pub const FuncGen = struct {
                 },
                 "",
             );
-        } else if (owner_mod.optimize_mode == .Debug) {
+        } else if (owner_mod.optimize_mode == .Debug and !self.is_naked) {
+            // We avoid taking this path for naked functions because there's no guarantee that such
+            // functions even have a valid stack pointer, making the `alloca` + `store` unsafe.
+
             const alignment = operand_ty.abiAlignment(pt).toLlvm();
             const alloca = try self.buildAlloca(operand.typeOfWip(&self.wip), alignment);
             _ = try self.wip.store(.normal, operand, alloca, alignment);