[clang] [C++20] [Modules] [Driver] Don't enable -fdelayed-template-parsing by default on windows with C++20 modules (PR #69431)
David Blaikie via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 20 11:21:42 PDT 2023
================
@@ -6870,8 +6852,38 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
Args.AddLastArg(CmdArgs, options::OPT_finline_max_stacksize_EQ);
+ // FIXME: Find a better way to determine whether we are in C++20.
+ bool HaveCxx20 =
+ Std &&
+ (Std->containsValue("c++2a") || Std->containsValue("gnu++2a") ||
+ Std->containsValue("c++20") || Std->containsValue("gnu++20") ||
+ Std->containsValue("c++2b") || Std->containsValue("gnu++2b") ||
+ Std->containsValue("c++23") || Std->containsValue("gnu++23") ||
+ Std->containsValue("c++2c") || Std->containsValue("gnu++2c") ||
+ Std->containsValue("c++26") || Std->containsValue("gnu++26") ||
+ Std->containsValue("c++latest") || Std->containsValue("gnu++latest"));
bool HaveModules =
- RenderModulesOptions(C, D, Args, Input, Output, Std, CmdArgs);
+ RenderModulesOptions(C, D, Args, Input, Output, HaveCxx20, CmdArgs);
+
+ // -fno-delayed-template-parsing is default, except when targeting MSVC.
+ // Many old Windows SDK versions require this to parse.
+ //
+ // According to
+ // https://learn.microsoft.com/en-us/cpp/build/reference/permissive-standards-conformance?view=msvc-170,
+ // the MSVC actually defaults to -fno-delayed-template-parsing (/Zc:twoPhase-
----------------
dwblaikie wrote:
"the" can be removed here,
https://github.com/llvm/llvm-project/pull/69431
More information about the cfe-commits
mailing list