aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-10-03 00:27:14 -0400
committerAndrew Kelley <superjoe30@gmail.com>2017-10-03 00:29:41 -0400
commitb5054625093ef22b3f228199b6fbf70e1c50b703 (patch)
tree09b000d9205b1f378d0d6a78700c3f3b642894d8 /src/codegen.cpp
parentf1bd02e6f46821415d96f54f6a3258159ba5a9c5 (diff)
downloadzig-b5054625093ef22b3f228199b6fbf70e1c50b703.tar.gz
zig-b5054625093ef22b3f228199b6fbf70e1c50b703.zip
replace __chkstk function with a stub that does not crash
Closes #508 See #302
Diffstat (limited to 'src/codegen.cpp')
-rw-r--r--src/codegen.cpp17
1 files changed, 5 insertions, 12 deletions
diff --git a/src/codegen.cpp b/src/codegen.cpp
index 6a0e7e12f4..efcf6ea3e3 100644
--- a/src/codegen.cpp
+++ b/src/codegen.cpp
@@ -867,7 +867,7 @@ static LLVMValueRef get_safety_crash_err_fn(CodeGen *g) {
addLLVMFnAttr(fn_val, "noreturn");
addLLVMFnAttr(fn_val, "cold");
LLVMSetLinkage(fn_val, LLVMInternalLinkage);
- LLVMSetFunctionCallConv(fn_val, LLVMFastCallConv);
+ LLVMSetFunctionCallConv(fn_val, get_llvm_cc(g, CallingConventionUnspecified));
addLLVMFnAttr(fn_val, "nounwind");
if (g->build_mode == BuildModeDebug) {
ZigLLVMAddFunctionAttr(fn_val, "no-frame-pointer-elim", "true");
@@ -924,7 +924,8 @@ static LLVMValueRef get_safety_crash_err_fn(CodeGen *g) {
static void gen_debug_safety_crash_for_err(CodeGen *g, LLVMValueRef err_val) {
LLVMValueRef safety_crash_err_fn = get_safety_crash_err_fn(g);
- ZigLLVMBuildCall(g->builder, safety_crash_err_fn, &err_val, 1, LLVMFastCallConv, false, "");
+ ZigLLVMBuildCall(g->builder, safety_crash_err_fn, &err_val, 1, get_llvm_cc(g, CallingConventionUnspecified),
+ false, "");
LLVMBuildUnreachable(g->builder);
}
@@ -5007,16 +5008,8 @@ static void init(CodeGen *g) {
const char *target_specific_cpu_args;
const char *target_specific_features;
if (g->is_native_target) {
- // LLVM creates invalid binaries on Windows sometimes.
- // See https://github.com/zig-lang/zig/issues/508
- // As a workaround we do not use target native features on Windows.
- if (g->zig_target.os == ZigLLVM_Win32) {
- target_specific_cpu_args = "";
- target_specific_features = "";
- } else {
- target_specific_cpu_args = ZigLLVMGetHostCPUName();
- target_specific_features = ZigLLVMGetNativeFeatures();
- }
+ target_specific_cpu_args = ZigLLVMGetHostCPUName();
+ target_specific_features = ZigLLVMGetNativeFeatures();
} else {
target_specific_cpu_args = "";
target_specific_features = "";