diff options
author | Lucie Gérard <lucie.gerard@qt.io> | 2022-11-02 15:33:43 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-11-08 08:31:52 +0000 |
commit | 93513bef373a0d4a8a1ac8f59630c0e0b788477a (patch) | |
tree | e0bc24b4641925f45078cb4fae011f52e7a100ef | |
parent | e73808abbab6ffc8472e10f559c1df04a9eb3a26 (diff) | |
download | qttools-93513bef373a0d4a8a1ac8f59630c0e0b788477a.tar.gz |
Modify getClangArgumentAdjuster to account for llvm15
Task-number: QTBUG-107199
Change-Id: Idd08d5197af683ebb4a644d1dae8a948a44907e2
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
(cherry picked from commit 032d733ff5b1b539c41a47589f2f33c792f6846c)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/linguist/lupdate/cpp_clang.cpp | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/src/linguist/lupdate/cpp_clang.cpp b/src/linguist/lupdate/cpp_clang.cpp index e1f8a7938..180bbb4cb 100644 --- a/src/linguist/lupdate/cpp_clang.cpp +++ b/src/linguist/lupdate/cpp_clang.cpp @@ -243,40 +243,37 @@ static std::vector<std::string> aliasDefinition; static clang::tooling::ArgumentsAdjuster getClangArgumentAdjuster() { const QByteArrayList compilerIncludeFlags = getIncludePathsFromCompiler(); - return [=](const clang::tooling::CommandLineArguments &args, - llvm::StringRef /*unused*/) { - clang::tooling::CommandLineArguments adjustedArgs; - for (size_t i = 0, e = args.size(); i < e; ++i) { - llvm::StringRef arg = args[i]; - // FIXME: Remove options that generate output. - if (!arg.startswith("-fcolor-diagnostics") && !arg.startswith("-fdiagnostics-color")) - adjustedArgs.push_back(args[i]); - } - adjustedArgs.push_back("-fparse-all-comments"); - adjustedArgs.push_back("-nostdinc"); + return [=](const clang::tooling::CommandLineArguments &args, llvm::StringRef /*unused*/) { + clang::tooling::CommandLineArguments adjustedArgs(args); + clang::tooling::CommandLineArguments adjustedArgsTemp; + + adjustedArgsTemp.push_back("-fparse-all-comments"); + adjustedArgsTemp.push_back("-nostdinc"); // Turn off SSE support to avoid usage of gcc builtins. // TODO: Look into what Qt Creator does. // Pointers: HeaderPathFilter::removeGccInternalIncludePaths() // and gccInstallDir() in gcctoolchain.cpp // Also needed for Mac, No need for CLANG_RESOURCE_DIR when this is part of the argument. - adjustedArgs.push_back("-mno-sse"); + adjustedArgsTemp.push_back("-mno-sse"); - adjustedArgs.push_back("-fsyntax-only"); #ifdef Q_OS_WIN - adjustedArgs.push_back("-fms-compatibility-version=19"); - adjustedArgs.push_back("-DQ_COMPILER_UNIFORM_INIT"); // qtbase + clang-cl hack + adjustedArgsTemp.push_back("-fms-compatibility-version=19"); + adjustedArgsTemp.push_back("-DQ_COMPILER_UNIFORM_INIT"); // qtbase + clang-cl hack // avoid constexpr error connected with offsetof (QTBUG-97380) - adjustedArgs.push_back("-D_CRT_USE_BUILTIN_OFFSETOF"); + adjustedArgsTemp.push_back("-D_CRT_USE_BUILTIN_OFFSETOF"); #endif - adjustedArgs.push_back("-Wno-everything"); + adjustedArgsTemp.push_back("-Wno-everything"); for (const QByteArray &flag : compilerIncludeFlags) - adjustedArgs.push_back(flag.data()); + adjustedArgsTemp.push_back(flag.data()); for (auto alias : aliasDefinition) { - adjustedArgs.push_back(alias); + adjustedArgsTemp.push_back(alias); } + + clang::tooling::CommandLineArguments::iterator it = llvm::find(adjustedArgs, "--"); + adjustedArgs.insert(it, adjustedArgsTemp.begin(), adjustedArgsTemp.end()); return adjustedArgs; }; } @@ -461,7 +458,11 @@ void ClangCppParser::loadCPP(Translator &translator, const QStringList &files, C ReadSynchronizedRef<std::string> ppSources(sources); WriteSynchronizedRef<TranslationRelatedStore> ppStore(stores.Preprocessor); size_t idealProducerCount = std::min(ppSources.size(), size_t(std::thread::hardware_concurrency())); - clang::tooling::ArgumentsAdjuster argumentsAdjuster = getClangArgumentAdjuster(); + clang::tooling::ArgumentsAdjuster argumentsAdjusterSyntaxOnly = + clang::tooling::getClangSyntaxOnlyAdjuster(); + clang::tooling::ArgumentsAdjuster argumentsAdjusterLocal = getClangArgumentAdjuster(); + clang::tooling::ArgumentsAdjuster argumentsAdjuster = + clang::tooling::combineAdjusters(argumentsAdjusterLocal, argumentsAdjusterSyntaxOnly); for (size_t i = 0; i < idealProducerCount; ++i) { std::thread producer([&ppSources, &db, &ppStore, &argumentsAdjuster]() { |