diff options
author | Dave Airlie <[email protected]> | 2019-10-10 13:27:30 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2019-10-11 12:15:45 +1000 |
commit | f59ff014b199af118ac9b90e3a67f15f4c37110e (patch) | |
tree | d8b0e999fa7420b99f2b80d66b04cbc26019c9f6 /src/gallium/auxiliary/gallivm | |
parent | 05b008c961faf4de322bbf08a452893f01fb143d (diff) |
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 <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary/gallivm')
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_init.c | 6 |
1 files changed, 6 insertions, 0 deletions
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 <llvm-c/BitWriter.h> #if GALLIVM_HAVE_CORO +#if LLVM_VERSION_MAJOR <= 8 && defined(PIPE_ARCH_AARCH64) +#include <llvm-c/Transforms/IPO.h> +#endif #include <llvm-c/Transforms/Coroutines.h> #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); |