rsmith added inline comments.

================
Comment at: clang/include/clang/Driver/Options.td:2575-2581
 // These "special" warning flags are effectively processed as f_Group flags by 
the driver:
 // Just silence warnings about -Wlarger-than for now.
 def Wlarger_than_EQ : Joined<["-"], "Wlarger-than=">, 
Group<clang_ignored_f_Group>;
 def Wlarger_than_ : Joined<["-"], "Wlarger-than-">, Alias<Wlarger_than_EQ>;
-def Wframe_larger_than_EQ : Joined<["-"], "Wframe-larger-than=">, 
Group<f_Group>, Flags<[NoXarchOption]>;
+def Wframe_larger_than_EQ : Joined<["-"], "Wframe-larger-than=">,
+  Group<f_Group>, Flags<[NoXarchOption,CC1Option]>,
+  MarshallingInfoInt<CodeGenOpts<"WarnStackSize">, "UINT_MAX">;
----------------
nickdesaulniers wrote:
> @rsmith I wasn't super sure about this hunk of the diff.  Should I not be 
> reusing the same flag between the Frontend and the Driver? (The Driver comes 
> after the Frontend, IIUC? Is that right?)
(The driver comes before the frontend: the driver is the user-facing 
GCC-compatible `clang` binary, and the frontend is the `-cc1` interface.)

What we do in other cases is to translate the driver-level (user-facing) 
warning flag into multiple frontend flags:

* The driver-level flag `-Wwrite-strings` (in C) gets mapped into the 
frontend-level flags `-Wwrite-strings -fconst-strings`, where `-Wwrite-strings` 
only controls whether the warning is shown, and `-fconst-strings` only controls 
whether string literals have type `char[N]` or `const char[N]`.
* The driver-level flag `-Wdeprecated` (in C++) gets mapped into the 
frontend-level flags `-Wdeprecated -fdeprecated-macro`, where `-Wdeprecated` 
only controls whether the warning is shown, and `-fdeprecated-macro` only 
controls whether `__DEPRECATED` is implicitly defined by the preprocessor.

So I think the expected strategy here would probably be that the driver-level 
flag `-Wframe-larger-than=N` would get mapped into the frontend-level flags 
`-Wframe-larger-than -fsomething=N`, where `-Wframe-larger-than` only controls 
whether the warning is shown, and `-fsomething=N` sets the level of stack usage 
at which the backend triggers the warning.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D103928

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

Reply via email to