forked from OSchip/llvm-project
[clang-cl] Implement support for /std
/std: supports two arguments, c++14 and c++latest. Currently, c++latest maps to c++1z but this might change down the road. llvm-svn: 273841
This commit is contained in:
parent
e3c72c1c85
commit
093012bf6e
|
@ -120,6 +120,8 @@ def _SLASH_Qvec_ : CLFlag<"Qvec-">,
|
|||
def _SLASH_showIncludes : CLFlag<"showIncludes">,
|
||||
HelpText<"Print info about included files to stderr">,
|
||||
Alias<show_includes>;
|
||||
def _SLASH_std : CLCompileJoined<"std:">,
|
||||
HelpText<"Language standard to compile for">;
|
||||
def _SLASH_U : CLJoinedOrSeparate<"U">, HelpText<"Undefine macro">,
|
||||
MetaVarName<"<macro>">, Alias<U>;
|
||||
def _SLASH_W0 : CLFlag<"W0">, HelpText<"Disable all warnings">, Alias<w>;
|
||||
|
|
|
@ -5362,10 +5362,25 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
|
||||
bool IsMSVC2015Compatible = MSVT.getMajor() >= 19;
|
||||
if (ImplyVCPPCXXVer) {
|
||||
StringRef LanguageStandard;
|
||||
if (const Arg *StdArg = Args.getLastArg(options::OPT__SLASH_std)) {
|
||||
LanguageStandard = llvm::StringSwitch<StringRef>(StdArg->getValue())
|
||||
.Case("c++14", "-std=c++14")
|
||||
.Case("c++latest", "-std=c++1z")
|
||||
.Default("");
|
||||
if (LanguageStandard.empty())
|
||||
D.Diag(clang::diag::warn_drv_unused_argument)
|
||||
<< StdArg->getAsString(Args);
|
||||
}
|
||||
|
||||
if (LanguageStandard.empty()) {
|
||||
if (IsMSVC2015Compatible)
|
||||
CmdArgs.push_back("-std=c++14");
|
||||
LanguageStandard = "-std=c++14";
|
||||
else
|
||||
CmdArgs.push_back("-std=c++11");
|
||||
LanguageStandard = "-std=c++11";
|
||||
}
|
||||
|
||||
CmdArgs.push_back(LanguageStandard.data());
|
||||
}
|
||||
|
||||
// -fno-borland-extensions is default.
|
||||
|
|
|
@ -452,6 +452,12 @@
|
|||
// RUN: %clang_cl -fmsc-version=1900 -TP -### -- %s 2>&1 | FileCheck -check-prefix=CXX14 %s
|
||||
// CXX14: -std=c++14
|
||||
|
||||
// RUN: %clang_cl -fmsc-version=1900 -TP -std:c++14 -### -- %s 2>&1 | FileCheck -check-prefix=STDCXX14 %s
|
||||
// STDCXX14: -std=c++14
|
||||
|
||||
// RUN: %clang_cl -fmsc-version=1900 -TP -std:c++latest -### -- %s 2>&1 | FileCheck -check-prefix=STDCXXLATEST %s
|
||||
// STDCXXLATEST: -std=c++1z
|
||||
|
||||
// RUN: env CL="/Gy" %clang_cl -### -- %s 2>&1 | FileCheck -check-prefix=ENV-CL %s
|
||||
// ENV-CL: "-ffunction-sections"
|
||||
|
||||
|
|
Loading…
Reference in New Issue