diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/state_trackers/clover/llvm/invocation.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp index 675cf1944d7..f63ff3d41c3 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; |