benlangmuir added a comment.

I suggest we add a comment explaining the weird has_feature checks being added 
here (even if they're less weird than what they're replacing).  Maybe just a 
comment in stdarg.h and/or stddef.h and then the __std(arg|def) headers could 
just add a one-liner reference  "see comment in std(arg|def).h".



================
Comment at: clang/include/clang/Basic/Features.def:233
 FEATURE(modules, LangOpts.Modules)
+FEATURE(builtin_headers_in_system_modules, 
LangOpts.BuiltinHeadersInSystemModules)
 FEATURE(safe_stack, LangOpts.Sanitize.has(SanitizerKind::SafeStack))
----------------
iana wrote:
> benlangmuir wrote:
> > This appears to be in a list of `// C++ TSes`.  Near the bottom there is 
> > 'Miscellaneous language extensions' which might be a better fit.
> I thought it went with `FEATURE(modules, LangOpts.Modules)`, but I can put it 
> down in 'Miscellaneous language extensions' if that's better.
I think misc is probably better.


================
Comment at: clang/include/clang/Driver/Options.td:2944
           [NoXarchOption], [ClangOption, CLOption]>>;
+def fbuiltin_headers_in_system_modules : Flag <["-"], 
"fbuiltin-headers-in-system-modules">,
+  Group<f_Group>,
----------------
iana wrote:
> I don't love this flag name, but I couldn't come up with anything more 
> succinct. It actually does two things.
> 
>   # Turns on `ModuleMap::isBuiltinHeader` behavior, that is the builtin 
> headers get added into the system modules.
>   # Causes the module map parser to ignore all of the new builtin modules 
> added in D159064. This is needed before the modules are added to assist with 
> Apple internal staging with the Swift compiler.
> 
I think the name is good enough for a -cc1 option, unless someone else has a 
better suggestion. I suggest adding a HelpText - you could basically copy the 
description you added to LangOptions.def


================
Comment at: clang/include/clang/Driver/Options.td:2945-2946
+def fbuiltin_headers_in_system_modules : Flag <["-"], 
"fbuiltin-headers-in-system-modules">,
+  Group<f_Group>,
+  Flags<[NoXarchOption]>,
+  Visibility<[CC1Option]>,
----------------
iana wrote:
> I don't fully understand what these two do, but I think they apply here?
I agree they apply. `f_Group` affects a `ClaimAllArgs` call (via inheritance 
from `CompileOnly_Group`) but mostly puts it under a group in documentation.  
`NoXarchOption` means you can't modify this option per-arch in a multi-arch 
compilation.  That seems like what you want.


================
Comment at: clang/lib/Lex/ModuleMap.cpp:1540
+    /// or added to Map's Modules/ModuleScopeIDs).
+    bool IgnoreModules = false;
+
----------------
iana wrote:
> This an everything under it is gross, but the only other thing I could think 
> of was to duplicate the module map and decided to load a special one for 
> BuiltinHeadersInSystemModules. That seemed weirder.
Would it be possible to get the right semantics using a `requires` decl in the 
modules plus a new module feature?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D159483

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to