aot_compile_op_call: Remove a wrong optimization (#2233)

Unlike a tail-call, the caller of an ordinary recursive call doesn't
necessarily return immediately.
This commit is contained in:
YAMAMOTO Takashi 2023-05-25 08:44:54 +09:00 committed by GitHub
parent 7c766c2283
commit 94204b90ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -868,10 +868,6 @@ aot_compile_op_call(AOTCompContext *comp_ctx, AOTFuncContext *func_ctx,
#if LLVM_VERSION_MAJOR >= 14
LLVMTypeRef llvm_func_type;
#endif
bool recursive_call =
(func_ctx == func_ctxes[func_idx - import_func_count]) ? true
: false;
if (comp_ctx->is_indirect_mode) {
LLVMTypeRef func_ptr_type;
@ -971,7 +967,7 @@ aot_compile_op_call(AOTCompContext *comp_ctx, AOTFuncContext *func_ctx,
/* Check whether there was exception thrown when executing
the function */
if (!tail_call && !recursive_call && comp_ctx->enable_bound_check
if (!tail_call && comp_ctx->enable_bound_check
&& !check_exception_thrown(comp_ctx, func_ctx))
goto fail;
}