Sorry to take so long to get back on this one.
> If someone could get all of them 100% on-board with doing full semantic
analysis for dependency analysis, then I could just tank this paper
entirely. I would actually be 200% on board with that. But, I don't see
it happening anytime soon.
I believe convincing can be done in this regard. I'm not proposing that implementers add support for this as part of the preprocessor, but rather as another compiler option. Modern build tools such as Ninja grab the dependency information for a translation unit as part of invoking the compiler command, not by running the preprocessor separately. I'm preparing a post on how Ninja builds and performs dependency analysis, which I believe is the currently optimal way to do it. There may be some tweaks with the addition on modules, but it will still be applicable.
In short: Implicit dependency information is generated on-the-fly by the edge command as part of regular edge execution. Not only is semantic analysis executed, but the entire compilation process.