diff options
author | Francisco Jerez <[email protected]> | 2016-05-17 16:03:11 +0200 |
---|---|---|
committer | Francisco Jerez <[email protected]> | 2016-07-11 20:34:34 -0700 |
commit | 2a73ae662cb393bef0d2d0ab71bfd1072adbafb6 (patch) | |
tree | e67f3a14dbcc7fb3bfd1bbd1ee79e03d0f8c4bc8 | |
parent | 4ef1c0918da4363aa20b7c1a91d344fae6c01942 (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.cpp | 6 | ||||
-rw-r--r-- | src/gallium/state_trackers/clover/core/error.hpp | 6 | ||||
-rw-r--r-- | 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 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; |