From 6da865bcfeecaa9ab4bb1632416d813f7df24f3e Mon Sep 17 00:00:00 2001 From: Greg V Date: Wed, 4 Jul 2018 20:15:04 +0300 Subject: [PATCH 1/2] clover: use iterator_range in get_kernel_nodes With libc++ (LLVM's STL implementation), the original code does not compile because an appropriate vector constructor cannot be found (for the _ForwardIterator one, requirement is_constructible is not satisfied). --- src/gallium/state_trackers/clover/llvm/metadata.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gallium/state_trackers/clover/llvm/metadata.hpp b/src/gallium/state_trackers/clover/llvm/metadata.hpp index d23f317c0a5..b2f3e5d95b2 100644 --- a/src/gallium/state_trackers/clover/llvm/metadata.hpp +++ b/src/gallium/state_trackers/clover/llvm/metadata.hpp @@ -39,11 +39,11 @@ namespace clover { namespace llvm { namespace detail { - inline std::vector + inline iterator_range< ::llvm::NamedMDNode::const_op_iterator> get_kernel_nodes(const ::llvm::Module &mod) { if (const ::llvm::NamedMDNode *n = mod.getNamedMetadata("opencl.kernels")) - return { n->op_begin(), n->op_end() }; + return range(n->op_begin(), n->op_end()); else return {}; } -- 2.21.0 From b2f6fda542d2eb868409fbd03564b63ae2c666bb Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Wed, 9 Oct 2019 14:52:09 -0700 Subject: [PATCH 2/2] clover: Remove unused code Fixes: 96b592696f1 ("gallium: Require LLVM >= 3.9") Bug: https://bugs.gentoo.org/685678 --- .../state_trackers/clover/llvm/metadata.hpp | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/src/gallium/state_trackers/clover/llvm/metadata.hpp b/src/gallium/state_trackers/clover/llvm/metadata.hpp index b2f3e5d95b2..5e8e720843d 100644 --- a/src/gallium/state_trackers/clover/llvm/metadata.hpp +++ b/src/gallium/state_trackers/clover/llvm/metadata.hpp @@ -39,23 +39,6 @@ namespace clover { namespace llvm { namespace detail { - inline iterator_range< ::llvm::NamedMDNode::const_op_iterator> - get_kernel_nodes(const ::llvm::Module &mod) { - if (const ::llvm::NamedMDNode *n = - mod.getNamedMetadata("opencl.kernels")) - return range(n->op_begin(), n->op_end()); - else - return {}; - } - - inline std::function - is_kernel_node_for(const ::llvm::Function &f) { - return [&](const ::llvm::MDNode *n) { - using ::llvm::mdconst::dyn_extract; - return &f == dyn_extract< ::llvm::Function>(n->getOperand(0)); - }; - } - inline bool is_kernel(const ::llvm::Function &f) { return f.getMetadata("kernel_arg_type"); -- 2.21.0 From 3f212bc879de6b3e217d65168a5fc643a33dfbf2 Mon Sep 17 00:00:00 2001 From: Greg V Date: Wed, 4 Jul 2018 20:15:04 +0300 Subject: [PATCH 2/4] clover: use iterator_range in get_kernel_nodes With libc++ (LLVM's STL implementation), the original code does not compile because an appropriate vector constructor cannot be found (for the _ForwardIterator one, requirement is_constructible is not satisfied). --- src/gallium/state_trackers/clover/llvm/metadata.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gallium/state_trackers/clover/llvm/metadata.hpp b/src/gallium/state_trackers/clover/llvm/metadata.hpp index 825008d4974..7f3176e8647 100644 --- a/src/gallium/state_trackers/clover/llvm/metadata.hpp +++ b/src/gallium/state_trackers/clover/llvm/metadata.hpp @@ -38,11 +38,11 @@ namespace clover { namespace llvm { namespace detail { - inline std::vector + inline iterator_range< ::llvm::NamedMDNode::const_op_iterator> get_kernel_nodes(const ::llvm::Module &mod) { if (const ::llvm::NamedMDNode *n = mod.getNamedMetadata("opencl.kernels")) - return { n->op_begin(), n->op_end() }; + return range(n->op_begin(), n->op_end()); else return {}; } -- 2.22.0