jit: gcc diagnostics are jit errors
authorDavid Malcolm <dmalcolm@redhat.com>
Tue, 17 May 2016 19:28:47 +0000 (19:28 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Tue, 17 May 2016 19:28:47 +0000 (19:28 +0000)
commit6b5423a512421989934071586c9ddb6ee42ac417
treeff6f37c704f22faac7eab9e79f10232646b62933
parentf51703a8f80c9935f27148bb53ec7591716fd519
jit: gcc diagnostics are jit errors

libgccjit performs numerous checks at the API boundary, but
if these succeed, it ignores errors and other diagnostics emitted
within the core of gcc, and treats the compile of a gcc_jit_context
as having succeeded.

This patch ensures that if any diagnostics are emitted, they
are visible from the libgccjit API, and that the the context is
flagged as having failed.

For now any kind of diagnostic is treated as a jit error,
so warnings and notes also count as errors.

gcc/jit/ChangeLog:
* dummy-frontend.c: Include diagnostic.h.
(jit_begin_diagnostic): New function.
(jit_end_diagnostic): New function.
(jit_langhook_init): Register jit_begin_diagnostic
and jit_end_diagnostic with the global_dc.
* jit-playback.c: Include diagnostic.h.
(gcc::jit::playback::context::add_diagnostic): New method.
* jit-playback.h (struct diagnostic_context): Add forward
declaration.
(gcc::jit::playback::context::add_diagnostic): New method.

gcc/testsuite/ChangeLog:
* jit.dg/test-error-array-bounds.c: New test case.

From-SVN: r236342
gcc/jit/ChangeLog
gcc/jit/dummy-frontend.c
gcc/jit/jit-playback.c
gcc/jit/jit-playback.h
gcc/testsuite/ChangeLog
gcc/testsuite/jit.dg/test-error-array-bounds.c [new file with mode: 0644]