On Wed, Dec 21, 2016 at 6:49 AM, Vedran Miletić <ved...@miletic.net> wrote:
> Presently errors from frontend are handled only if they occur in > clang::CompilerInvocation::CreateFromArgs(). This patch uses > clang::DiagnosticsEngine to detect errors such as invalid values for > Clang frontend arguments. > > Fixes Piglit's cl/program/build/fail/invalid-version-declaration.cl > test. > > v2: fix inconsistent code formatting > > Signed-off-by: Vedran Miletić <ved...@miletic.net> > Reviewed-by: Francisco Jerez <curroje...@riseup.net> > Tested-by: Aaron Watry <awa...@gmail.com> > --- > src/gallium/state_trackers/clover/llvm/invocation.cpp | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp > b/src/gallium/state_trackers/clover/llvm/invocation.cpp > index 675cf19..f63ff3d 100644 > --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp > +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp > @@ -98,8 +98,9 @@ namespace { > const std::vector<std::string> &opts, > std::string &r_log) { > std::unique_ptr<clang::CompilerInstance> c { new > clang::CompilerInstance }; > + clang::TextDiagnosticBuffer *diag_buffer = new > clang::TextDiagnosticBuffer; > clang::DiagnosticsEngine diag { new clang::DiagnosticIDs, > - new clang::DiagnosticOptions, new clang::TextDiagnosticBuffer > }; > + new clang::DiagnosticOptions, diag_buffer }; > > // Parse the compiler options. A file name should be present at > the end > // and must have the .cl extension in order for the > CompilerInvocation > @@ -111,6 +112,10 @@ namespace { > c->getInvocation(), copts.data(), copts.data() + > copts.size(), diag)) > throw invalid_build_options_error(); > > + diag_buffer->FlushDiagnostics(diag); > + if (diag.hasErrorOccurred()) > + throw invalid_build_options_error(); > + > c->getTargetOpts().CPU = target.cpu; > c->getTargetOpts().Triple = target.triple; > c->getLangOpts().NoBuiltin = true; > -- > 2.7.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev