<div dir="ltr">Hi there,<div><br></div><div>I am trying to JIT a rather big wasm bytecode program to x86 native code and running into this JIT compilation time issue. In the first stage, I use MCJIT to translate wasm bytecode to a single LLVM IR Module which ends up with 927 functions. Then it took a pretty long time to apply several optimization passes to this big IR module and finally generate x86 code. What should I do to shorten the compilation time? Is it possible to compile this single big IR Module with MCJIT in parallel? Is OrcV2 JIT faster than MCJIT? Can the 'concurrent compilation' feature mentioned in Orcv2 webpage help on this? Thanks in advance for any advice.</div><div><br></div><div>This is how I organized the optimization pass:</div><div><br></div><div>    LLVMAddBasicAliasAnalysisPass(comp_ctx->pass_mgr);<br>    LLVMAddPromoteMemoryToRegisterPass(comp_ctx->pass_mgr);<br>    LLVMAddInstructionCombiningPass(comp_ctx->pass_mgr);<br>    LLVMAddJumpThreadingPass(comp_ctx->pass_mgr);<br>    LLVMAddConstantPropagationPass(comp_ctx->pass_mgr);<br>    LLVMAddReassociatePass(comp_ctx->pass_mgr);<br>    LLVMAddGVNPass(comp_ctx->pass_mgr);<br>    LLVMAddCFGSimplificationPass(comp_ctx->pass_mgr);<br></div><div><br></div><div>This is how I apply passes to my single IR module (which actually includes 927 functions)</div><div><br></div><div>if (comp_ctx->optimize) {<br>      LLVMInitializeFunctionPassManager(comp_ctx->pass_mgr);<br>      for (i = 0; i < comp_ctx->func_ctx_count; i++)<br>          LLVMRunFunctionPassManager(comp_ctx->pass_mgr,<br>                                     comp_ctx->func_ctxes[i]->func);<br>  }<br></div><div><br></div><div>BR,</div><div>Terry</div></div>