summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrancisco Jerez <[email protected]>2016-05-17 16:03:11 +0200
committerFrancisco Jerez <[email protected]>2016-07-11 20:34:34 -0700
commit2a73ae662cb393bef0d2d0ab71bfd1072adbafb6 (patch)
treee67f3a14dbcc7fb3bfd1bbd1ee79e03d0f8c4bc8
parent4ef1c0918da4363aa20b7c1a91d344fae6c01942 (diff)
clover: Define error subclass to signal build option parse failure.
Reviewed-by: Serge Martin <[email protected]> Tested-by: Jan Vesely <[email protected]>
-rw-r--r--src/gallium/state_trackers/clover/api/program.cpp6
-rw-r--r--src/gallium/state_trackers/clover/core/error.hpp6
-rw-r--r--src/gallium/state_trackers/clover/llvm/invocation.cpp2
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 ff199abe5c0..848d2d0329c 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 3165402d7e3..0490c19a276 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 db3b48176b0..944c30566c0 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;