clover: No need for clover::is_zero() to be a functor.
authorFrancisco Jerez <currojerez@riseup.net>
Fri, 19 Oct 2012 09:29:40 +0000 (11:29 +0200)
committerFrancisco Jerez <currojerez@riseup.net>
Fri, 19 Oct 2012 10:38:44 +0000 (12:38 +0200)
Simplify is_zero() somewhat, and as a side effect work around a gcc compiler
bug that causes build failure.

https://bugs.freedesktop.org/show_bug.cgi?id=56140

Reported-by: Dmitry Cherkassov <dcherkassov@gmail.com>
src/gallium/state_trackers/clover/api/context.cpp
src/gallium/state_trackers/clover/api/kernel.cpp
src/gallium/state_trackers/clover/api/program.cpp
src/gallium/state_trackers/clover/api/transfer.cpp
src/gallium/state_trackers/clover/core/base.hpp

index c8d668933e5ed945d1e32c12ecd158afac0dbbfe..80afb6bf4ec20a773fcaa129e212cbc7470d3862 100644 (file)
@@ -37,7 +37,7 @@ clCreateContext(const cl_context_properties *props, cl_uint num_devs,
        (!pfn_notify && user_data))
       throw error(CL_INVALID_VALUE);
 
-   if (any_of(is_zero<cl_device_id>(), devs, devs + num_devs))
+   if (any_of(is_zero<cl_device_id>, devs, devs + num_devs))
       throw error(CL_INVALID_DEVICE);
 
    for (auto p : mprops) {
index 775f251e076ddf1bea67d1c974e07e3df2cffc64..9e371fdbc55caa5fcf7fcb2e12b6ae85367770df 100644 (file)
@@ -206,7 +206,7 @@ namespace {
          throw error(CL_INVALID_CONTEXT);
 
       if (bool(num_deps) != bool(deps) ||
-          any_of(is_zero<cl_event>(), deps, deps + num_deps))
+          any_of(is_zero<cl_event>, deps, deps + num_deps))
          throw error(CL_INVALID_EVENT_WAIT_LIST);
 
       if (any_of([](std::unique_ptr<kernel::argument> &arg) {
@@ -220,7 +220,7 @@ namespace {
       if (dims < 1 || dims > q->dev.max_block_size().size())
          throw error(CL_INVALID_WORK_DIMENSION);
 
-      if (!grid_size || any_of(is_zero<size_t>(), grid_size, grid_size + dims))
+      if (!grid_size || any_of(is_zero<size_t>, grid_size, grid_size + dims))
          throw error(CL_INVALID_GLOBAL_WORK_SIZE);
 
       if (block_size) {
index b167904377f33f6adc6cd53585bdd06ab99546fd..74de840d3df68c6407a75dd1a4baaa3ad6a87a20 100644 (file)
@@ -35,7 +35,7 @@ clCreateProgramWithSource(cl_context ctx, cl_uint count,
       throw error(CL_INVALID_CONTEXT);
 
    if (!count || !strings ||
-       any_of(is_zero<const char *>(), strings, strings + count))
+       any_of(is_zero<const char *>, strings, strings + count))
       throw error(CL_INVALID_VALUE);
 
    // Concatenate all the provided fragments together
index 8ea8f86768b41b3817c16210b60d4263e6c72c74..295d6c7b29e3f966158413db93731f7e9b2fed93 100644 (file)
@@ -40,7 +40,7 @@ namespace {
          throw error(CL_INVALID_COMMAND_QUEUE);
 
       if (bool(num_deps) != bool(deps) ||
-          any_of(is_zero<cl_event>(), deps, deps + num_deps))
+          any_of(is_zero<cl_event>, deps, deps + num_deps))
          throw error(CL_INVALID_EVENT_WAIT_LIST);
 
       if (any_of([&](const cl_event ev) {
index 2a2e26a141a692177885ef049f7b28581d7c8cb3..f487f0fa992c26ec4f992dbaa785d35d45805b88 100644 (file)
@@ -273,11 +273,9 @@ namespace clover {
    }
 
    template<typename T>
-   std::function<bool (const T &)>
-   is_zero() {
-      return [](const T &x) {
-         return x == 0;
-      };
+   bool
+   is_zero(T x) {
+      return x == 0;
    }
 }