Change llvm void pointer to i8 pointer to avoid assert failed (#250)

This commit is contained in:
wenyongh
2020-05-08 13:40:04 +08:00
committed by GitHub
parent 44ccfd20ad
commit 7abd1ca813
4 changed files with 2 additions and 50 deletions

View File

@ -359,45 +359,6 @@ create_cur_exception(AOTCompContext *comp_ctx, AOTFuncContext *func_ctx)
return true;
}
static bool
create_func_ptrs(AOTCompContext *comp_ctx, AOTFuncContext *func_ctx)
{
LLVMValueRef offset, func_ptrs_ptr;
LLVMTypeRef void_ptr_type;
offset = I32_CONST(offsetof(AOTModuleInstance, func_ptrs.ptr));
func_ptrs_ptr = LLVMBuildInBoundsGEP(comp_ctx->builder,
func_ctx->aot_inst,
&offset, 1,
"func_ptrs_ptr");
if (!func_ptrs_ptr) {
aot_set_last_error("llvm build in bounds gep failed.");
return false;
}
if (!(void_ptr_type = LLVMPointerType(VOID_PTR_TYPE, 0))
|| !(void_ptr_type = LLVMPointerType(void_ptr_type, 0))) {
aot_set_last_error("llvm get pointer type failed.");
return false;
}
func_ctx->func_ptrs = LLVMBuildBitCast(comp_ctx->builder, func_ptrs_ptr,
void_ptr_type, "func_ptrs_tmp");
if (!func_ctx->func_ptrs) {
aot_set_last_error("llvm build bit cast failed.");
return false;
}
func_ctx->func_ptrs = LLVMBuildLoad(comp_ctx->builder, func_ctx->func_ptrs,
"func_ptrs");
if (!func_ctx->func_ptrs) {
aot_set_last_error("llvm build load failed.");
return false;
}
return true;
}
static bool
create_func_type_indexes(AOTCompContext *comp_ctx,
AOTFuncContext *func_ctx)
@ -636,10 +597,6 @@ aot_create_func_context(AOTCompData *comp_data, AOTCompContext *comp_ctx,
if (!create_cur_exception(comp_ctx, func_ctx))
goto fail;
/* Load function pointers */
if (!create_func_ptrs(comp_ctx, func_ctx))
goto fail;
/* Load function type indexes */
if (!create_func_type_indexes(comp_ctx, func_ctx))
goto fail;
@ -723,7 +680,6 @@ aot_set_llvm_basic_types(AOTLLVMTypes *basic_types, LLVMContextRef context)
basic_types->int64_ptr_type = LLVMPointerType(basic_types->int64_type, 0);
basic_types->float32_ptr_type = LLVMPointerType(basic_types->float32_type, 0);
basic_types->float64_ptr_type = LLVMPointerType(basic_types->float64_type, 0);
basic_types->void_ptr_type = LLVMPointerType(basic_types->void_type, 0);
return (basic_types->int8_ptr_type
&& basic_types->int16_ptr_type
@ -731,7 +687,6 @@ aot_set_llvm_basic_types(AOTLLVMTypes *basic_types, LLVMContextRef context)
&& basic_types->int64_ptr_type
&& basic_types->float32_ptr_type
&& basic_types->float64_ptr_type
&& basic_types->void_ptr_type
&& basic_types->meta_data_type) ? true : false;
}