diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2017-10-03 00:27:14 -0400 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2017-10-03 00:29:41 -0400 |
| commit | b5054625093ef22b3f228199b6fbf70e1c50b703 (patch) | |
| tree | 09b000d9205b1f378d0d6a78700c3f3b642894d8 /src | |
| parent | f1bd02e6f46821415d96f54f6a3258159ba5a9c5 (diff) | |
| download | zig-b5054625093ef22b3f228199b6fbf70e1c50b703.tar.gz zig-b5054625093ef22b3f228199b6fbf70e1c50b703.zip | |
replace __chkstk function with a stub that does not crash
Closes #508
See #302
Diffstat (limited to 'src')
| -rw-r--r-- | src/codegen.cpp | 17 | ||||
| -rw-r--r-- | src/link.cpp | 2 |
2 files changed, 6 insertions, 13 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 = ""; diff --git a/src/link.cpp b/src/link.cpp index bd17ff1ea4..35b350df0f 100644 --- a/src/link.cpp +++ b/src/link.cpp @@ -423,7 +423,7 @@ static void construct_linker_job_coff(LinkJob *lj) { if (g->have_winmain) { lj->args.append("-ENTRY:WinMain"); } else { - lj->args.append("-ENTRY:_start"); + lj->args.append("-ENTRY:WinMainCRTStartup"); } } |
