src/codegen.cpp: return null if calling convention is not async;

Tracking Issue #1296 ;
This commit is contained in:
kristopher tate 2018-07-28 11:46:31 +09:00
parent 9366a58bdd
commit a2e5691228

View File

@ -4149,9 +4149,15 @@ static LLVMValueRef ir_render_frame_address(CodeGen *g, IrExecutable *executable
static LLVMValueRef ir_render_handle(CodeGen *g, IrExecutable *executable,
IrInstructionHandle *instruction)
{
// @andrewrk, not sure what to place here ?
// `get_promise_frame_type` ?
LLVMValueRef handle = LLVMConstNull(g->builtin_types.entry_promise->type_ref);
bool is_async = executable->fn_entry != nullptr &&
executable->fn_entry->type_entry->data.fn.fn_type_id.cc == CallingConventionAsync;
if (!is_async || !executable->coro_handle) {
return LLVMConstNull(g->builtin_types.entry_promise->type_ref);
}
LLVMValueRef handle = ir_llvm_value(g, executable->coro_handle);
return LLVMBuildRet(g->builder, handle);
}