[Mesa-dev] [PATCH 39/47] clover: Define error subclass to signal build option parse failure.

Francisco Jerez currojerez at riseup.net
Mon Jul 4 00:51:48 UTC 2016


Reviewed-by: Serge Martin <edb+mesa at sigluy.net>
---
 src/gallium/state_trackers/clover/api/program.cpp     | 6 ++++--
 src/gallium/state_trackers/clover/core/error.hpp      | 6 ++++++
 src/gallium/state_trackers/clover/llvm/invocation.cpp | 2 +-
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/gallium/state_trackers/clover/api/program.cpp b/src/gallium/state_trackers/clover/api/program.cpp
index ff199ab..848d2d0 100644
--- a/src/gallium/state_trackers/clover/api/program.cpp
+++ b/src/gallium/state_trackers/clover/api/program.cpp
@@ -183,9 +183,8 @@ clBuildProgram(cl_program d_prog, cl_uint num_devs,
 
    prog.build(devs, opts);
    return CL_SUCCESS;
+
 } catch (error &e) {
-   if (e.get() == CL_INVALID_COMPILER_OPTIONS)
-      return CL_INVALID_BUILD_OPTIONS;
    return e.get();
 }
 
@@ -225,6 +224,9 @@ clCompileProgram(cl_program d_prog, cl_uint num_devs,
    prog.build(devs, opts, headers);
    return CL_SUCCESS;
 
+} catch (invalid_build_options_error &e) {
+   return CL_INVALID_COMPILER_OPTIONS;
+
 } catch (build_error &e) {
    return CL_COMPILE_PROGRAM_FAILURE;
 
diff --git a/src/gallium/state_trackers/clover/core/error.hpp b/src/gallium/state_trackers/clover/core/error.hpp
index 3165402..0490c19 100644
--- a/src/gallium/state_trackers/clover/core/error.hpp
+++ b/src/gallium/state_trackers/clover/core/error.hpp
@@ -65,6 +65,12 @@ namespace clover {
       cl_int code;
    };
 
+   class invalid_build_options_error : public error {
+   public:
+      invalid_build_options_error(const std::string &what = "") :
+         error(CL_INVALID_BUILD_OPTIONS, what) {}
+   };
+
    class build_error : public error {
    public:
       build_error(const std::string &what = "") :
diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp
index db3b481..944c305 100644
--- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
+++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
@@ -98,7 +98,7 @@ namespace {
 
       if (!clang::CompilerInvocation::CreateFromArgs(
              c->getInvocation(), copts.data(), copts.data() + copts.size(), diag))
-         throw error(CL_INVALID_COMPILER_OPTIONS);
+         throw invalid_build_options_error();
 
       c->getTargetOpts().CPU = target.cpu;
       c->getTargetOpts().Triple = target.triple;
-- 
2.9.0



More information about the mesa-dev mailing list