From 1691074b4b1f080b3a1f7ca7dc7426c6ef4c242a Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 27 Apr 2017 18:40:17 -0400 Subject: add no-elim-base-pointer to __zig_fail function fixes missing frame for unwrapping an error closes #345 --- src/codegen.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/codegen.cpp') diff --git a/src/codegen.cpp b/src/codegen.cpp index a80610b731..2b48450711 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -720,6 +720,11 @@ static LLVMValueRef get_safety_crash_err_fn(CodeGen *g) { addLLVMFnAttr(fn_val, "cold"); LLVMSetLinkage(fn_val, LLVMInternalLinkage); LLVMSetFunctionCallConv(fn_val, LLVMFastCallConv); + addLLVMFnAttr(fn_val, "nounwind"); + if (!g->is_release_build) { + ZigLLVMAddFunctionAttr(fn_val, "no-frame-pointer-elim", "true"); + ZigLLVMAddFunctionAttr(fn_val, "no-frame-pointer-elim-non-leaf", nullptr); + } LLVMBasicBlockRef entry_block = LLVMAppendBasicBlock(fn_val, "Entry"); LLVMBasicBlockRef prev_block = LLVMGetInsertBlock(g->builder); -- cgit v1.2.3