On 08/13/2017 09:25 AM, Boris Kolpackov wrote: > Hi, > > I've been instructed to resend this patch from the gcc mailing list: > > Currently GCC does not write extracted header dependency information > if there are errors. However, this can be useful when dealing with > outdated generated headers that trigger errors which would have been > resolved if we could update it. A concrete example in our case is a > version check with #error. > > The included (trivial) patch changes this behavior. Note also that > this is how Clang already behaves. I've tested the patch in build2 > and everything works well (i.e., no invalid dependency output in the > face of various preprocessor errors such as #error, stray #else, etc). > > While I don't foresee any backwards-compatibility issues with such > an unconditional change (after all, the compiler still exists with > an error status), if there are concerns, I could re-do it via an > option (e.g., -ME, analogous to -MG). > > Joseph Myers <jos...@codesourcery.com> writes: > >> I suppose a question for the present proposal would be making sure any >> dependencies generated in this case do not include dependencies on files >> that don't exist (so #include "some-misspelling.h" doesn't create any sort >> of dependency on such a header). > Good point. I've tested this and I believe everything is in order: > unless -MG is specified, a non-existent header is treated as a fatal > error so we don't even get to writing the dependency info. And if -MG > is specified, then there is no error and we get the missing header in > the dependency output, as requested. > > P.S. I have the paperwork necessary to contribute on file with FSF. > > Thanks, > Boris > > > deps-on-error.diff > > > Index: gcc/c-family/ChangeLog > =================================================================== > --- gcc/c-family/ChangeLog (revision 250514) > +++ gcc/c-family/ChangeLog (working copy) > @@ -1,3 +1,8 @@ > +2017-08-06 Boris Kolpackov <bo...@codesynthesis.com> > + > + * c-opts.c (c_common_finish): Write dependency information even if > + there are errors. Thanks. I've installed this on the trunk. Sorry for the delays.
jeff