From 2a73ae662cb393bef0d2d0ab71bfd1072adbafb6 Mon Sep 17 00:00:00 2001 From: Francisco Jerez Date: Tue, 17 May 2016 16:03:11 +0200 Subject: [PATCH] clover: Define error subclass to signal build option parse failure. Reviewed-by: Serge Martin Tested-by: Jan Vesely --- 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 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; -- 2.30.2