Commit 1691074b4b

Andrew Kelley <superjoe30@gmail.com>
2017-04-28 00:40:17
add no-elim-base-pointer to __zig_fail function
fixes missing frame for unwrapping an error closes #345
1 parent 7e11ef7
Changed files (2)
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);
README.md
@@ -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