[Mesa-dev] [PATCH] clover: fix llvm 3.5 build error
Serge Martin (EdB)
edb+mesa at sigluy.net
Fri Aug 21 01:36:00 PDT 2015
On Wednesday 19 August 2015 11:56:08 Zoltan Gilian wrote:
> There is no MDOperand in llvm 3.5.
>
> v2: Check if kernel metadata is present to avoid crash (EdB).
> v3: Second attempt to avoid crash: switch off metadata query for llvm < 3.6.
Since the change you made for image support won't be backport to llvm 3.5 this
is good for me. And it no longer make clover crash.
Reviewed-by: Serge Martin (EdB) <edb+mesa at sigluy.net>
But since I don't have commit access, not sure what my r-b worth.
Could it be pushed before the branch point?
> ---
> .../state_trackers/clover/llvm/invocation.cpp | 33
> ++++++++++++++-------- 1 file changed, 21 insertions(+), 12 deletions(-)
>
> diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp
> b/src/gallium/state_trackers/clover/llvm/invocation.cpp index
> 8eb0469..908a296 100644
> --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
> +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
> @@ -346,6 +346,15 @@ namespace {
>
> // Kernel metadata
>
> + struct kernel_arg_md {
> + llvm::StringRef type_name;
> + llvm::StringRef access_qual;
> + kernel_arg_md(llvm::StringRef type_name_, llvm::StringRef
> access_qual_): + type_name(type_name_), access_qual(access_qual_)
> {}
> + };
> +
> +#if HAVE_LLVM >= 0x0306
> +
> const llvm::MDNode *
> get_kernel_metadata(const llvm::Function *kernel_func) {
> auto mod = kernel_func->getParent();
> @@ -356,12 +365,8 @@ namespace {
>
> const llvm::MDNode *kernel_node = nullptr;
> for (unsigned i = 0; i < kernels_node->getNumOperands(); ++i) {
> -#if HAVE_LLVM >= 0x0306
> auto func = llvm::mdconst::dyn_extract<llvm::Function>(
> -#else
> - auto func = llvm::dyn_cast<llvm::Function>(
> -#endif
> -
> kernels_node->getOperand(i)->getOperand(0)); +
> kernels_node->getOperand(i)->getOperand(0));
> if (func == kernel_func) {
> kernel_node = kernels_node->getOperand(i);
> break;
> @@ -387,13 +392,6 @@ namespace {
> return node;
> }
>
> - struct kernel_arg_md {
> - llvm::StringRef type_name;
> - llvm::StringRef access_qual;
> - kernel_arg_md(llvm::StringRef type_name_, llvm::StringRef
> access_qual_): - type_name(type_name_), access_qual(access_qual_)
> {}
> - };
> -
> std::vector<kernel_arg_md>
> get_kernel_arg_md(const llvm::Function *kernel_func) {
> auto num_args = kernel_func->getArgumentList().size();
> @@ -415,6 +413,17 @@ namespace {
> return res;
> }
>
> +#else
> +
> + std::vector<kernel_arg_md>
> + get_kernel_arg_md(const llvm::Function *kernel_func) {
> + return std::vector<kernel_arg_md>(
> + kernel_func->getArgumentList().size(),
> + kernel_arg_md("", ""));
> + }
> +
> +#endif // HAVE_LLVM >= 0x0306
> +
> std::vector<module::argument>
> get_kernel_args(const llvm::Module *mod, const std::string &kernel_name,
> const clang::LangAS::Map &address_spaces) {
More information about the mesa-dev
mailing list