ddunbar added a comment.

In https://reviews.llvm.org/D30882#1074822, @dexonsmith wrote:

> I don't think this is quite right.  I know at least `make`-based incremental 
> builds wouldn't deal well with this.


This is actually not a novel problem w.r.t. this patch. The exact same 
situation comes up with Makefile-included .d files and when one of the 
referenced headers is removed.

This is typically solved somewhere in the build system, for example Make has 
`-include`, and Ninja and llbuild have explicit support for this situation.

I agree we might want to tread cautiously on how we change the .d output, but 
in this case I think it might be safe.

If we decide this isn't safe, then we may want to consider a new flag which 
tracks *all* anti-dependencies (file's for which Clang checked existence but 
did not exist), and include that here. The major concern with that approach is 
it is a much larger list, and while it would support being substantially more 
correct, it is also well beyond what people currently expect out of the build 
system + compiler generated deps approaches.

> Given t.cpp:
> 
>   #if __has_include("missing.h")
>   #endif
> 
> 
> t.d will be:
> 
>   t.o: missing.h
> 
> 
> Since the build system doesn't know how to generate missing.h, when t.cpp 
> changes the build system will stop dead in its tracks.
> 
> Knowing the list of files that are //potential// inputs to `t.o` seems 
> useful, but we should probably do that under a separate flag.  And if it's a 
> separate flag, we might consider giving it a better name than `-MF`...


https://reviews.llvm.org/D30882



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D30882: A... Duncan P. N. Exon Smith via Phabricator via cfe-commits
    • [PATCH] D308... Daniel Dunbar via Phabricator via cfe-commits
    • [PATCH] D308... Duncan P. N. Exon Smith via Phabricator via cfe-commits
    • [PATCH] D308... Pete Cooper via Phabricator via cfe-commits
    • [PATCH] D308... Duncan P. N. Exon Smith via Phabricator via cfe-commits
    • [PATCH] D308... Duncan P. N. Exon Smith via Phabricator via cfe-commits
    • [PATCH] D308... Richard Smith - zygoloid via Phabricator via cfe-commits

Reply via email to