Merge branch 'master' into llvm6

This commit is contained in:
Andrew Kelley 2018-03-03 16:30:59 -05:00
commit 1c244d34b3
2 changed files with 5 additions and 11 deletions

View File

@ -489,6 +489,10 @@ static LLVMValueRef fn_llvm_value(CodeGen *g, FnTableEntry *fn_table_entry) {
} else {
LLVMSetFunctionCallConv(fn_table_entry->llvm_value, get_llvm_cc(g, fn_type->data.fn.fn_type_id.cc));
}
if (fn_type->data.fn.fn_type_id.cc == CallingConventionAsync) {
addLLVMFnAttr(fn_table_entry->llvm_value, "optnone");
addLLVMFnAttr(fn_table_entry->llvm_value, "noinline");
}
bool want_cold = fn_table_entry->is_cold || fn_type->data.fn.fn_type_id.cc == CallingConventionCold;
if (want_cold) {

View File

@ -13,6 +13,7 @@ comptime {
_ = @import("cases/bugs/656.zig");
_ = @import("cases/cast.zig");
_ = @import("cases/const_slice_child.zig");
_ = @import("cases/coroutines.zig");
_ = @import("cases/defer.zig");
_ = @import("cases/enum.zig");
_ = @import("cases/enum_with_members.zig");
@ -49,15 +50,4 @@ comptime {
_ = @import("cases/var_args.zig");
_ = @import("cases/void.zig");
_ = @import("cases/while.zig");
// LLVM 5.0.1, 6.0.0, and trunk crash when attempting to optimize coroutine code.
// So, Zig does not support ReleaseFast or ReleaseSafe for coroutines yet.
// Luckily, Clang users are running into the same crashes, so folks from the LLVM
// community are working on fixes. If we're really lucky they'll be fixed in 6.0.1.
// Otherwise we can hope for 7.0.0.
if (builtin.mode == builtin.Mode.Debug) {
_ = @import("cases/coroutines.zig");
}
}