rsmith added a comment.

I've landed some tests for the specific functionality that intends to use 
modules info under `-fno-modules` in b484256f59850e702df4d4532c5f31f478879bb9 
<https://reviews.llvm.org/rGb484256f59850e702df4d4532c5f31f478879bb9>.

I think the approach you're taking here is probably doomed -- too many things 
in Clang depend on whether we've read module map files, and it seems unlikely 
to me that you'll be able to catch all of them from the driver. For example:

  $ touch a.h
  $ echo 'module a { private header "a.h" }' > module.modulemap
  $ echo '#include "a.h"' > b.cc
  $ clang -fmodule-map-file=module.modulemap b.cc
  b.cc:1:10: error: use of private header from outside its module: 'a.h' 
[-Wprivate-header]
  #include "a.h"
           ^
  1 error generated.

(and that error can be controlled by a `#pragma`, so you can't even do this if 
the driver sees `-Wno-private-header`).

I wonder if we could mark a `Module` as "used" whenever we use information from 
it, and treat module map files as dependencies of the current compilation only 
if they're used?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D133229/new/

https://reviews.llvm.org/D133229

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D133229: ... Argyrios Kyrtzidis via Phabricator via cfe-commits
    • [PATCH] D133... Richard Smith - zygoloid via Phabricator via cfe-commits
    • [PATCH] D133... Argyrios Kyrtzidis via Phabricator via cfe-commits

Reply via email to