[Mesa-dev] [PATCH v2] clover: Use Clang's diagnostics
Aaron Watry
awatry at gmail.com
Fri Dec 23 04:16:11 UTC 2016
On Wed, Dec 21, 2016 at 6:49 AM, Vedran Miletić <vedran at 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ć <vedran at miletic.net>
> Reviewed-by: Francisco Jerez <currojerez at riseup.net>
>
Tested-by: Aaron Watry <awatry at 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20161222/288316ab/attachment.html>
More information about the mesa-dev
mailing list