clover: use iterator_range in get_kernel_nodes
authorGreg V <greg@unrelenting.technology>
Wed, 4 Jul 2018 17:15:04 +0000 (20:15 +0300)
committerMatt Turner <mattst88@gmail.com>
Wed, 9 Oct 2019 21:54:07 +0000 (14:54 -0700)
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

index d23f317c0a59d2c7cf7a07ab1145bf104e937d5c..b2f3e5d95b21e275e0b8a918995bf8158d1d4ceb 100644 (file)
 namespace clover {
    namespace llvm {
       namespace detail {
-         inline std::vector<const ::llvm::MDNode *>
+         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 {};
          }