From: Dave Airlie Date: Thu, 10 Oct 2019 03:27:30 +0000 (+1000) Subject: gallivm: fix coroutines on aarch64 with llvm 8 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f59ff014b199af118ac9b90e3a67f15f4c37110e;p=mesa.git gallivm: fix coroutines on aarch64 with llvm 8 The coroutine split pass is missing a dependency before LLVM 9.0, and fails to initialise properly if the CallGraphWrapperPass hasn't be initialised earlier (x86 does it due to some of it's passes requiring it). This is a workaround for llvm 8 (coroutines are only supported in 8 and higher). It adds another pass that has a dependency on the pass the coroutines split requires. This pass shouldn't have any raal effects. Fixes: d32690b43c9 (gallivm: add coroutine pass manager support) Reviewed-by: Roland Scheidegger --- diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c index 19d0d5ab031..beffbc552a2 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_init.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c @@ -46,6 +46,9 @@ #endif #include #if GALLIVM_HAVE_CORO +#if LLVM_VERSION_MAJOR <= 8 && defined(PIPE_ARCH_AARCH64) +#include +#endif #include #endif @@ -134,6 +137,9 @@ create_pass_manager(struct gallivm_state *gallivm) } #if GALLIVM_HAVE_CORO +#if LLVM_VERSION_MAJOR <= 8 && defined(PIPE_ARCH_AARCH64) + LLVMAddFunctionAttrsPass(gallivm->cgpassmgr); +#endif LLVMAddCoroEarlyPass(gallivm->cgpassmgr); LLVMAddCoroSplitPass(gallivm->cgpassmgr); LLVMAddCoroElidePass(gallivm->cgpassmgr);