From: Francisco Jerez Date: Tue, 17 May 2016 14:03:11 +0000 (+0200) Subject: clover: Define error subclass to signal build option parse failure. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2a73ae662cb393bef0d2d0ab71bfd1072adbafb6;p=mesa.git clover: Define error subclass to signal build option parse failure. Reviewed-by: Serge Martin Tested-by: Jan Vesely --- 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;