aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cpptools
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2021-08-26 11:09:08 +0200
committerEike Ziller <eike.ziller@qt.io>2021-08-26 11:09:08 +0200
commit0777b65db3589324ab45ea5d08ad68860623e69b (patch)
treefe5e03fc4a36397649f6ec6791b3488efec8c1b4 /src/plugins/cpptools
parent245b6c0dc73087678de941652f8c752bb49995cf (diff)
parentcd8da8fe5f608d4968b90f19f30b515058605b8c (diff)
Merge remote-tracking branch 'origin/5.0'
Conflicts: qbs/modules/qtc/qtc.qbs src/plugins/android/androidconfigurations.cpp Change-Id: If8dc2cdf131811e08ca147c6f58dbb3ed3bf7227
Diffstat (limited to 'src/plugins/cpptools')
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.cpp20
-rw-r--r--src/plugins/cpptools/cppcodemodelinspectordumper.cpp3
2 files changed, 19 insertions, 4 deletions
diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp
index f5eb770c36..0c8c5d9305 100644
--- a/src/plugins/cpptools/compileroptionsbuilder.cpp
+++ b/src/plugins/cpptools/compileroptionsbuilder.cpp
@@ -472,7 +472,10 @@ void CompilerOptionsBuilder::addLanguageVersionAndExtensions()
case LanguageVersion::CXX17:
option = "/std:c++17";
break;
- case LanguageVersion::CXX2a:
+ case LanguageVersion::CXX20:
+ option = "/std:c++20";
+ break;
+ case LanguageVersion::CXX2b:
option = "/std:c++latest";
break;
}
@@ -517,8 +520,11 @@ void CompilerOptionsBuilder::addLanguageVersionAndExtensions()
case LanguageVersion::CXX17:
option = (gnuExtensions ? QLatin1String("-std=gnu++17") : QLatin1String("-std=c++17"));
break;
- case LanguageVersion::CXX2a:
- option = (gnuExtensions ? QLatin1String("-std=gnu++2a") : QLatin1String("-std=c++2a"));
+ case LanguageVersion::CXX20:
+ option = (gnuExtensions ? QLatin1String("-std=gnu++20") : QLatin1String("-std=c++20"));
+ break;
+ case LanguageVersion::CXX2b:
+ option = (gnuExtensions ? QLatin1String("-std=gnu++2b") : QLatin1String("-std=c++2b"));
break;
case LanguageVersion::None:
break;
@@ -868,6 +874,14 @@ void CompilerOptionsBuilder::evaluateCompilerFlags()
theOption[0] = '-';
}
+ // Clang-cl (as of Clang 12) frontend doesn't know about -std:c++20
+ // but the clang front end knows about -std=c++20
+ // https://github.com/llvm/llvm-project/blob/release/12.x/clang/lib/Driver/ToolChains/Clang.cpp#L5855
+ if (toolChain == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID ||
+ toolChain == ProjectExplorer::Constants::CLANG_CL_TOOLCHAIN_TYPEID) {
+ theOption.replace("-std:c++20", "-clang:-std=c++20");
+ }
+
m_compilerFlags.flags.append(theOption);
}
diff --git a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp
index efaf909c55..44c968e10b 100644
--- a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp
+++ b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp
@@ -123,7 +123,8 @@ QString Utils::toString(::Utils::LanguageVersion languageVersion)
CASE_LANGUAGEVERSION(CXX11);
CASE_LANGUAGEVERSION(CXX14);
CASE_LANGUAGEVERSION(CXX17);
- CASE_LANGUAGEVERSION(CXX2a);
+ CASE_LANGUAGEVERSION(CXX20);
+ CASE_LANGUAGEVERSION(CXX2b);
// no default to get a compiler warning if anything is added
}
#undef CASE_LANGUAGEVERSION