forked from qt-creator/qt-creator
Revert "Clang: Stop enabling exceptions explicitly"
This reverts commit b114f77d8a
as
"--driver-mode=cl" apparently still disables exceptions.
Task-number: QTCREATORBUG-23000
Change-Id: I9c49d971fafda5e1aca8445f8921e50f323d368f
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
@@ -136,6 +136,7 @@ QStringList CompilerOptionsBuilder::build(ProjectFile::Kind fileKind,
|
|||||||
addTargetTriple();
|
addTargetTriple();
|
||||||
updateFileLanguage(fileKind);
|
updateFileLanguage(fileKind);
|
||||||
addLanguageVersionAndExtensions();
|
addLanguageVersionAndExtensions();
|
||||||
|
enableExceptions();
|
||||||
|
|
||||||
addPrecompiledHeaderOptions(usePrecompiledHeaders);
|
addPrecompiledHeaderOptions(usePrecompiledHeaders);
|
||||||
addProjectConfigFileInclude();
|
addProjectConfigFileInclude();
|
||||||
@@ -270,6 +271,17 @@ void CompilerOptionsBuilder::addCompilerFlags()
|
|||||||
add(m_compilerFlags.flags);
|
add(m_compilerFlags.flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CompilerOptionsBuilder::enableExceptions()
|
||||||
|
{
|
||||||
|
// With "--driver-mode=cl" exceptions are disabled (clang 8).
|
||||||
|
// This is most likely due to incomplete exception support of clang.
|
||||||
|
// However, as we need exception support only in the frontend,
|
||||||
|
// enabling them explicitly should be fine.
|
||||||
|
if (m_projectPart.languageVersion > ::Utils::LanguageVersion::LatestC)
|
||||||
|
add("-fcxx-exceptions");
|
||||||
|
add("-fexceptions");
|
||||||
|
}
|
||||||
|
|
||||||
static QString creatorResourcePath()
|
static QString creatorResourcePath()
|
||||||
{
|
{
|
||||||
#ifndef UNIT_TESTS
|
#ifndef UNIT_TESTS
|
||||||
|
@@ -69,6 +69,7 @@ public:
|
|||||||
void addExtraCodeModelFlags();
|
void addExtraCodeModelFlags();
|
||||||
void addPicIfCompilerFlagsContainsIt();
|
void addPicIfCompilerFlagsContainsIt();
|
||||||
void addCompilerFlags();
|
void addCompilerFlags();
|
||||||
|
void enableExceptions();
|
||||||
void insertWrappedQtHeaders();
|
void insertWrappedQtHeaders();
|
||||||
void addLanguageVersionAndExtensions();
|
void addLanguageVersionAndExtensions();
|
||||||
void updateFileLanguage(ProjectFile::Kind fileKind);
|
void updateFileLanguage(ProjectFile::Kind fileKind);
|
||||||
|
@@ -444,6 +444,22 @@ TEST_F(CompilerOptionsBuilder, AddTargetTriple)
|
|||||||
ASSERT_THAT(compilerOptionsBuilder.options(), ElementsAre("--target=x86_64-apple-darwin10"));
|
ASSERT_THAT(compilerOptionsBuilder.options(), ElementsAre("--target=x86_64-apple-darwin10"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(CompilerOptionsBuilder, EnableCExceptions)
|
||||||
|
{
|
||||||
|
projectPart.languageVersion = Utils::LanguageVersion::C99;
|
||||||
|
|
||||||
|
compilerOptionsBuilder.enableExceptions();
|
||||||
|
|
||||||
|
ASSERT_THAT(compilerOptionsBuilder.options(), ElementsAre("-fexceptions"));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(CompilerOptionsBuilder, EnableCXXExceptions)
|
||||||
|
{
|
||||||
|
compilerOptionsBuilder.enableExceptions();
|
||||||
|
|
||||||
|
ASSERT_THAT(compilerOptionsBuilder.options(), ElementsAre("-fcxx-exceptions", "-fexceptions"));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(CompilerOptionsBuilder, InsertWrappedQtHeaders)
|
TEST_F(CompilerOptionsBuilder, InsertWrappedQtHeaders)
|
||||||
{
|
{
|
||||||
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart,
|
CppTools::CompilerOptionsBuilder compilerOptionsBuilder{projectPart,
|
||||||
@@ -601,6 +617,8 @@ TEST_F(CompilerOptionsBuilder, BuildAllOptions)
|
|||||||
"-x",
|
"-x",
|
||||||
"c++",
|
"c++",
|
||||||
"-std=c++17",
|
"-std=c++17",
|
||||||
|
"-fcxx-exceptions",
|
||||||
|
"-fexceptions",
|
||||||
"-DprojectFoo=projectBar",
|
"-DprojectFoo=projectBar",
|
||||||
"-I", IsPartOfHeader("wrappedQtHeaders"),
|
"-I", IsPartOfHeader("wrappedQtHeaders"),
|
||||||
"-I", IsPartOfHeader(toNative("wrappedQtHeaders/QtCore").toStdString()),
|
"-I", IsPartOfHeader(toNative("wrappedQtHeaders/QtCore").toStdString()),
|
||||||
@@ -632,6 +650,8 @@ TEST_F(CompilerOptionsBuilder, BuildAllOptionsCl)
|
|||||||
"--target=x86_64-apple-darwin10",
|
"--target=x86_64-apple-darwin10",
|
||||||
"/TP",
|
"/TP",
|
||||||
"/std:c++17",
|
"/std:c++17",
|
||||||
|
"-fcxx-exceptions",
|
||||||
|
"-fexceptions",
|
||||||
"-fms-compatibility-version=19.00",
|
"-fms-compatibility-version=19.00",
|
||||||
"-DprojectFoo=projectBar",
|
"-DprojectFoo=projectBar",
|
||||||
"-D__FUNCSIG__=\"\"",
|
"-D__FUNCSIG__=\"\"",
|
||||||
|
Reference in New Issue
Block a user