summaryrefslogtreecommitdiff
path: root/src/libs/clangsupport/clangcodemodelconnectionclient.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2018-02-09 11:11:22 +0100
committerNikolai Kosjar <nikolai.kosjar@qt.io>2018-06-05 08:17:40 +0000
commit89d6a36bc64b0e95136c925f4ed37f4520f9cb3a (patch)
tree3be8240203f456c756cd5de6394f89fc5d008f2f /src/libs/clangsupport/clangcodemodelconnectionclient.cpp
parent14a9133abb8b15c8feb9be04d39e31d5a527fad4 (diff)
downloadqt-creator-89d6a36bc64b0e95136c925f4ed37f4520f9cb3a.tar.gz
Clang: Disable internal threads in libclang
We already run all operations in threads to avoid blocking, there is no need to start more threads within libclang. Before this change, a reparse would trigger 3 threads to start: 1. clangbackend: Utils::runAsync() for the job 2. libclang-internal: thread for reparse 3. libclang-internal: thread for annotating tokens (highlighting) Ensure that we use the same stack size for our threads as libclang was doing internally. C++ parsers usually have higher stack size requirements. Change-Id: I2f67602ddfbf77ea2c69144b56acf64ba08041f6 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Diffstat (limited to 'src/libs/clangsupport/clangcodemodelconnectionclient.cpp')
-rw-r--r--src/libs/clangsupport/clangcodemodelconnectionclient.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/libs/clangsupport/clangcodemodelconnectionclient.cpp b/src/libs/clangsupport/clangcodemodelconnectionclient.cpp
index 1938d06353..33d8987024 100644
--- a/src/libs/clangsupport/clangcodemodelconnectionclient.cpp
+++ b/src/libs/clangsupport/clangcodemodelconnectionclient.cpp
@@ -25,6 +25,7 @@
#include "clangcodemodelconnectionclient.h"
+#include <utils/environment.h>
#include <utils/temporarydirectory.h>
#include <QCoreApplication>
@@ -50,6 +51,10 @@ ClangCodeModelConnectionClient::ClangCodeModelConnectionClient(
m_processCreator.setTemporaryDirectoryPattern("clangbackend-XXXXXX");
m_processCreator.setArguments({connectionName()});
+ Utils::Environment environment;
+ environment.set(QStringLiteral("LIBCLANG_NOTHREADS"), QString());
+ m_processCreator.setEnvironment(environment);
+
stdErrPrefixer().setPrefix("clangbackend.stderr: ");
stdOutPrefixer().setPrefix("clangbackend.stdout: ");
}