Vedran Miletić <[email protected]> writes:

> 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.
>
> Signed-off-by: Vedran Miletić <[email protected]>
> ---
>  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..29dec44 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;

Inconsistent pointer formatting.  With that fixed:

Reviewed-by: Francisco Jerez <[email protected]>

>        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

Attachment: signature.asc
Description: PGP signature

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to