[PATCH] Driver: Include driver diags when we --serialize-diagnostics

Justin Bogner mail at justinbogner.com
Mon Oct 20 15:19:35 PDT 2014

Richard Smith <richard at metafoo.co.uk> writes:
> On Mon, Oct 20, 2014 at 10:43 AM, Justin Bogner <mail at justinbogner.com> wrote:
>     Currently, when --serialize-diagnostics is passed this only includes the
>     diagnostics from clang -cc1, and driver diagnostics are dropped. This
>     causes issues for tools that use the serialized diagnostics, since
>     stderr is lost and these diagnostics aren't seen at all.
>     This patch handles this by merging the diagnostics from the CC1 process
>     and the driver diagnostics into a single file when the driver invokes
>     CC1.
> The idea seems (superficially) reasonable to me. Have you tested this in the
> case where the driver is given multiple input files to process? Please add a
> test covering that case.

Multiple input files don't DTRT with serialized diagnostics in the first
place. I've just filed pr21318 about that.

This doesn't make it worse (the driver diags *and* the last -cc1 will be
included) and potentially makes that easier to fix, since the driver
could be taught to merge after each execution. It looks to me that to
actually do that work involves a fair amount of restructuring of the
driver though.

> What about the case where the clang driver runs a tool other than the clang
> frontend? Your hypothetical process that runs clang with
> --serialize-diagnostics and drops its stderr will lose diagnostics there too,
> right?

I'm not sure what you mean here. If the driver runs a tool that creates
a serialized diagnostics file, this will merge it in. If the tool
doesn't create a diagnostics file, the diagnostics will only include the
driver's diags.

More information about the cfe-commits mailing list