add no-elim-base-pointer to __zig_fail function

fixes missing frame for unwrapping an error

closes #345
This commit is contained in:
Andrew Kelley 2017-04-27 18:40:17 -04:00
parent 7e11ef79d6
commit 1691074b4b
2 changed files with 6 additions and 1 deletions

View File

@ -75,7 +75,7 @@ the Zig compiler itself:
#### Library Dependencies
These libraries must be installed on your system, with the development files
available. The Zig compiler dynamically links against them.
available. The Zig compiler links against them.
* LLVM, Clang, and LLD libraries == 4.x

View File

@ -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);