diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2015-05-18 04:49:30 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2015-05-18 04:49:30 +0000 |
| commit | 8db9176d688fd89a7578d120542fbfa7f87eb515 (patch) | |
| tree | b320dd768bcebc299329b860303beff2b280417d /clang/lib/Driver | |
| parent | 63b6fcef9655d91a66973e57ca77ec56dfa39ad0 (diff) | |
| download | bcm5719-llvm-8db9176d688fd89a7578d120542fbfa7f87eb515.tar.gz bcm5719-llvm-8db9176d688fd89a7578d120542fbfa7f87eb515.zip | |
[clang-cl] Enable C++14 when targeting 2015 compatibility
llvm-svn: 237553
Diffstat (limited to 'clang/lib/Driver')
| -rw-r--r-- | clang/lib/Driver/Tools.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 756600eddc1..0f191f34b01 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -3591,6 +3591,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, // // If a std is supplied, only add -trigraphs if it follows the // option. + bool ImplyVCPPCXXVer = false; if (Arg *Std = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi)) { if (Std->getOption().matches(options::OPT_ansi)) if (types::isCXX(InputType)) @@ -3617,7 +3618,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, Args.AddAllArgsTranslated(CmdArgs, options::OPT_std_default_EQ, "-std=", /*Joined=*/true); else if (IsWindowsMSVC) - CmdArgs.push_back("-std=c++11"); + ImplyVCPPCXXVer = true; Args.AddLastArg(CmdArgs, options::OPT_ftrigraphs, options::OPT_fno_trigraphs); @@ -4199,6 +4200,14 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, Args.MakeArgString("-fms-compatibility-version=" + MSVT.getAsString())); } + bool IsMSVC2015Compatible = MSVT.getMajor() >= 19; + if (ImplyVCPPCXXVer) { + if (IsMSVC2015Compatible) + CmdArgs.push_back("-std=c++14"); + else + CmdArgs.push_back("-std=c++11"); + } + // -fno-borland-extensions is default. if (Args.hasFlag(options::OPT_fborland_extensions, options::OPT_fno_borland_extensions, false)) @@ -4208,7 +4217,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, // than 19. if (!Args.hasFlag(options::OPT_fthreadsafe_statics, options::OPT_fno_threadsafe_statics, - !IsWindowsMSVC || MSVT.getMajor() >= 19)) + !IsWindowsMSVC || IsMSVC2015Compatible)) CmdArgs.push_back("-fno-threadsafe-statics"); // -fno-delayed-template-parsing is default, except for Windows where MSVC STL |

