[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