Author: Richard Smith Date: 2020-08-24T17:49:58-07:00 New Revision: 91604949ef2fc8401d17a31362c46c310d5550b6
URL: https://github.com/llvm/llvm-project/commit/91604949ef2fc8401d17a31362c46c310d5550b6 DIFF: https://github.com/llvm/llvm-project/commit/91604949ef2fc8401d17a31362c46c310d5550b6.diff LOG: Properly pass modules flags to frontend when using -std=c++20 instead of -std=c++2a. In passing, also teach the driver to map /std:c++latest to -std=c++20 not -std=c++2a. Added: Modified: clang/lib/Driver/ToolChains/Clang.cpp clang/test/Driver/cl-options.c clang/test/Driver/modules.cpp Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 2054069daa5b..d8fa77b050f8 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5584,7 +5584,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, LanguageStandard = llvm::StringSwitch<StringRef>(StdArg->getValue()) .Case("c++14", "-std=c++14") .Case("c++17", "-std=c++17") - .Case("c++latest", "-std=c++2a") + .Case("c++latest", "-std=c++20") .Default(""); if (LanguageStandard.empty()) D.Diag(clang::diag::warn_drv_unused_argument) @@ -5647,7 +5647,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, // FIXME: Find a better way to determine whether the language has modules // support by default, or just assume that all languages do. bool HaveModules = - Std && (Std->containsValue("c++2a") || Std->containsValue("c++latest")); + Std && (Std->containsValue("c++2a") || Std->containsValue("c++20") || + Std->containsValue("c++latest")); RenderModulesOptions(C, D, Args, Input, Output, CmdArgs, HaveModules); if (Args.hasFlag(options::OPT_fpch_validate_input_files_content, diff --git a/clang/test/Driver/cl-options.c b/clang/test/Driver/cl-options.c index bc4cab0f949f..608e89c35c76 100644 --- a/clang/test/Driver/cl-options.c +++ b/clang/test/Driver/cl-options.c @@ -573,7 +573,7 @@ // STDCXX17: -std=c++17 // RUN: %clang_cl -fmsc-version=1900 -TP -std:c++latest -### -- %s 2>&1 | FileCheck -check-prefix=STDCXXLATEST %s -// STDCXXLATEST: -std=c++2a +// STDCXXLATEST: -std=c++20 // RUN: env CL="/Gy" %clang_cl -### -- %s 2>&1 | FileCheck -check-prefix=ENV-CL %s // ENV-CL: "-ffunction-sections" diff --git a/clang/test/Driver/modules.cpp b/clang/test/Driver/modules.cpp index 4f4e3a414002..87b6cc640cb0 100644 --- a/clang/test/Driver/modules.cpp +++ b/clang/test/Driver/modules.cpp @@ -22,6 +22,7 @@ // Check use of a .pcm file in another compilation. // // RUN: %clang -std=c++2a -fmodule-file=%t/module.pcm -Dexport= %s -S -o %t/module.o -v 2>&1 | FileCheck %s --check-prefix=CHECK-USE +// RUN: %clang -std=c++20 -fmodule-file=%t/module.pcm -Dexport= %s -S -o %t/module.o -v 2>&1 | FileCheck %s --check-prefix=CHECK-USE // // CHECK-USE: -cc1 // CHECK-USE-SAME: {{-emit-obj|-S}} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits