aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/cplusplus
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/12.0'Eike Ziller2024-01-301-0/+2
|\ | | | | | | | | | | | | | | Conflicts: src/plugins/cppeditor/cppfilesettingspage.cpp src/plugins/haskell/haskellplugin.h Change-Id: I880693c2e4986853b7aa600a5b7d6c09ad14634e
| * CPlusPlus: deal with QByteArray::(c)begin() return nullptrThiago Macieira2024-01-231-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | You should either use begin() and end(), or data() and size(), and either way you shouldn't dereference the first iterator if the size is zero. Roberto's parser in 3rdparty/cplusplus assumes you've passed at least one character (I'm guessing the null terminator) and does pointer manipulation there: void Lexer::setSource(const char *firstChar, const char *lastChar) { _firstChar = firstChar; _lastChar = lastChar; _currentChar = _firstChar - 1; _currentCharUtf16 = ~0; _tokenStart = _currentChar; _yychar = '\n'; } Note the _firstChar - 1 math is technically UB if firstChar is the actual first character of any buffer allocation or string. Fixes: QTCREATORBUG-30044 Change-Id: I76ffba14ece04f24b43efffd17abcb8102497813 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Move most acknowledgments to qt_attributions.jsonEike Ziller2023-12-151-0/+17
|/ | | | | | | | | | | | | | | | | Create a qt_attributions.json and generate a documentation file from it automatically when building documentation. The result is included as a table in the acknowledgments page in the documentation. Some attributions cannot (yet) move to qt_attributions.json, because that requires the sources to be available in the project's source tree, which is not the case for LLVM, Clazy, etc. Remove the attributions from the README and instead point to the documentation from there, so we get rid of that duplication. Change-Id: I22623fe7495593ffce2e2c6c26255c27c5a8cb71 Reviewed-by: Kai Köhne <kai.koehne@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* CPlusPlus: Fix parser crashChristian Kandeler2023-11-241-2/+2
| | | | | | | | | The parseCompoundStatement() function can return without setting the output parameter if the maximum statement depth is exceeded. Task-number: QTCREATORBUG-29847 Change-Id: Ifd76cd948c30498863246a1b80bd0657950101ca Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* CPlusPlus: Fix compile before Qt6.5v12.0.0Christian Stenger2023-11-221-1/+1
| | | | | | | Amends 7475b073fb8084cf1304cea8a1781e74204a0a11. Change-Id: I59494fe485cdb40b3af089698edc895dc2dd4519 Reviewed-by: David Schulz <david.schulz@qt.io>
* CPlusPlus: Fix finding end of raw string literalChristian Kandeler2023-11-211-9/+9
| | | | | | | | The employed algorithm lacked proper backtracking, potentially causing us to miss the delimiter altogether. Change-Id: I7993c3c27d034925bd884e192779c85c54be9ec4 Reviewed-by: hjk <hjk@qt.io>
* Merge remote-tracking branch 'origin/11.0'David Schulz2023-08-221-0/+5
|\ | | | | | | Change-Id: Idbf5f641aa9db7574cf2a4bd09adb8bcd03da894
| * CPlusPlus: Fix crash on weird-looking constructChristian Kandeler2023-08-181-0/+5
| | | | | | | | | | | | | | | | | | | | | | This was misparsed as a function with an initializer (e.g. "= default"), and then the empty id caused trouble later on. Fixes: QTCREATORBUG-29386 Change-Id: I85a35db544e11ad85f50e3a15b1a071b36e79cd0 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
* | CppEditor: Add quickfix for converting comments from C++ to C styleChristian Kandeler2023-08-082-8/+76
| | | | | | | | | | | | | | | | | | ... and vice versa. Fixes: QTCREATORBUG-27501 Change-Id: I8584cc1e86718b3fe0f0ead2a3436495303ca3c8 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
* | CPlusPlus: Remove TranslationUnit::getTokenStartPosition()Christian Kandeler2023-07-132-20/+6
|/ | | | | | | | It was exactly the same as getTokenPosition(). Change-Id: I292522faa18933ec400b556c384786eb9efdfb3a Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
* CPlusPlus: Reuse QScopeGuard instead of ExecuteOnDestructionJarek Kobus2023-06-071-5/+5
| | | | | | | Change-Id: Ifb2cf839777c18b4f66a88b7f5106f05148b0c20 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
* CppEditor: Revert changes to parseExpressionStatement()Christian Kandeler2023-05-266-24/+23
| | | | | | | | | | | | | Amends c8f29b9e0148202ab1959466e14fa23411fd8214. It turns out that there are contexts where we want to parse an expression statement even with the semicolon missing (e.g. completion on incomplete code). So leave the existing functions unchanged and do the thorough check afterwards in parseIfStatement(). Change-Id: Id6209ef1abfe9d155c5b9381e6ae655cc721feb2 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* CppEditor: Add support for init statements in if conditionsChristian Kandeler2023-05-257-6/+44
| | | | | | Fixes: QTCREATORBUG-29182 Change-Id: I9b7969da694b368236246123ad0028d8e754e903 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* CMake: Add -fPIC also for OBJECT librariesCristian Adam2023-05-121-1/+0
| | | | | | | | | | add_qtc_library would have set the POSITION_INDEPENDENT_CODE property for STATIC libraries on UNIX based systems. The OBJECT libraries need the same treatment. Change-Id: Ia333a36ea0f35d7db3ed876cdde5b895b47644c7 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* CppEditor: More special rendering for string literalsChristian Kandeler2023-04-131-1/+6
| | | | | | | | | | | | | Display prefixes and suffixes different from the actual string, like we already did for raw string literals. This uncovered some minor bugs in both lexer and highlighter: - Wrong length for a setFormat() call in highlightRawStringLiteral() - Missing check for user-defined literal in raw string literals - Missing check for user-defined literal in multi-line strings Fixes: QTCREATORBUG-28869 Change-Id: I018717c50ddc1d09c609556161c85dfb0cc29fab Reviewed-by: David Schulz <david.schulz@qt.io>
* Replace a few \returns by Returnshjk2023-03-241-2/+2
| | | | | Change-Id: I09c633e610421f5cc8257b15de60ffa98d890ee0 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* CPlusPlus: Add parser support for generic lambdasChristian Kandeler2023-03-136-2/+90
| | | | | | Change-Id: Id17975a4296925c10b1b43f963412eea61ccfa5d Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* CPlusPlus: Add support for coroutinesChristian Kandeler2023-03-0613-18/+196
| | | | | | | | | Also fix some concept-related bugs uncovered by the test case. Change-Id: Ia67c971026bcd85d9cc252f46cd4f56c2865d432 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* CPlusPlus: Support requires clause in parserChristian Kandeler2023-03-0311-0/+88
| | | | | | | Change-Id: Ice6a7a287453516a1cfc296e2c9f16160b3ea130 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* CPlusPlus: Handle C++20 concepts in parserChristian Kandeler2023-02-2813-1/+518
| | | | | | | Change-Id: I8c6b8b1ba3f36b83cd1d667bec9830271147b1ac Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* CPlusPlus: Add lexer support for new C++20 keywordsChristian Kandeler2023-02-094-4/+126
| | | | | Change-Id: I2b83deb0502ebf2cdca2af774fbb2ce26e947c11 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Cpp: support space ship operator in lexerDavid Schulz2023-01-306-21/+37
| | | | | | Fixes: QTCREATORBUG-27503 Change-Id: Idbff5a9b5b2e6e841e298ca6f706ef3c6aa1622b Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* CMake build: Use version-less Qt targetsEike Ziller2023-01-051-1/+1
| | | | | | | | | Since we do not support Qt < 5.15 anymore, and as a first step for getting rid of our special FindQt5.cmake. Change-Id: Icc5dbaf9b0a3a622b1f609ff114b9decb6d2856c Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Cristian Adam <cristian.adam@qt.io>
* CppEditor: More migration to FilePathhjk2022-12-142-6/+19
| | | | | Change-Id: I261b713671e00bb567f61b4ee5ecf6fa83473bff Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Merge remote-tracking branch 'origin/9.0'Eike Ziller2022-11-102-2/+24
|\ | | | | | | Change-Id: Ie069f3b2a1200b3e665341b1d56ce836024b0d29
| * QuickFix: Fix generate function definition with unsigned typeArtem Sokolovskii2022-11-102-2/+24
| | | | | | | | | | | | | | Fixes: QTCREATORBUG-28378 Change-Id: Ic94901e430d08aab22c8f4c394eda1f8a93398bc Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | CPlusPlus: Allow " = default" also on function implementationsChristian Kandeler2022-10-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | Note that we only make sure not to trip over valid code; we make no effort to check whether default/delete is actually allowed at this type of declaration. Fixes: QTCREATORBUG-28102 Change-Id: Ic693319b9dfaf8652cf4cae9cd907a6e258ad773 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* | CPlusPlus: Remove unused parser functionsChristian Kandeler2022-10-212-60/+0
|/ | | | | | | | | | It's unclear whether they should actually be used, but right now their presence is confusing. Change-Id: I15d8a7a2524c3abc668bcd0a4b3e0e956f68b065 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
* Port from qAsConst() to std::as_const()Marc Mutz2022-10-071-1/+1
| | | | | | | | | | | | | | We've been requiring C++17 since Qt 6.0, and our qAsConst use finally starts to bother us (QTBUG-99313), so time to port away from it now. Since qAsConst has exactly the same semantics as std::as_const (down to rvalue treatment, constexpr'ness and noexcept'ness), there's really nothing more to it than a global search-and-replace. Task-number: QTBUG-99313 Change-Id: I88edd91395849574436299b8badda21bb93bea39 Reviewed-by: hjk <hjk@qt.io>
* CppEditor: Remove extra CPlusPlus::Class memberChristian Kandeler2022-09-163-10/+1
| | | | | | | | | | | | | | | | | | | Amends 0fab5956ea91dc0ee40b4d99605ec26a3720c5c8. We want to avoid carrying these eight bytes ber Class instance around. Instead, we now just replace the (anonymous) struct name with the typedef'ed one. Note that in C (but not C++), this is possible: struct S {}; typedef struct {} S; struct S s1; S s2; However, our code model has never respected the extra struct namespace, so it can already not distinguish between occurrences of "S" and "struct S". Change-Id: I55feafea7d3a4a5848e10f7011f633a2ce0f626e Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* CppEditor: Store typedefed name for anonymous structsChristian Kandeler2022-09-153-0/+13
| | | | | | | | | ... and use it as the struct display name in some places. Fixes: QTCREATORBUG-26611 Change-Id: I1b127f5705307a0fabd2441ff871162c882927a5 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* ClangCodeModel: Use central functions for getting token positionsChristian Kandeler2022-08-262-0/+8
| | | | | | | Change-Id: I192e2807067467906b38e164933755f763133cb4 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
* CPlusPlus: Fix mis-parsing array-related constructsChristian Kandeler2022-08-253-20/+30
| | | | | | | | | | | ... as structured bindings. Also add a safety check to Bind that might be needed for invalid code. Amends ca00b874a7. Change-Id: I7b174b80ad97ed7424f1e369b876c99acf7e95d2 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* CPlusPlus: Support structured bindingsChristian Kandeler2022-08-2314-38/+175
| | | | | | | | | | While we do recommend clangd for modern code bases, we should still be able to parse basic language constructs. Fixes: QTCREATORBUG-27975 Change-Id: I189b991685a5cd5f62f2afce77878b60c895e8f9 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: hjk <hjk@qt.io>
* CppEditor: Consider selection when requesting quickfixesChristian Kandeler2022-08-232-0/+16
| | | | | | | | | | | If the user has a token selected, prefer that to the actual cursor position. Fixes: QTCREATORBUG-27886 Change-Id: Ib32e24676510bff42292fe23e4962720fcbac4ed Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
* cplusplus: Disable warningMarcus Tillmanns2022-08-041-0/+4
| | | | | Change-Id: I08f3b40afc50903304627aeb788c60fcbafdd288 Reviewed-by: hjk <hjk@qt.io>
* CPlusPlus: Inline more simple Type related functionshjk2022-06-288-391/+102
| | | | | Change-Id: I2103e8047b385b438e58072e8a2689f1889d2724 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* CPlusPlus: Inline some Scope related simple functionshjk2022-06-284-47/+15
| | | | | Change-Id: I23486fdfa749fe864c04d5c1a7cede21fb16005b Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* CPlusPlus: Use a global variable for the undefined type instancehjk2022-06-245-12/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... and split the FullySpecifiedType in two overloads. Initially: 29 [1] FullySpecifiedType::FullySpecifiedType(Type *type) : <+ 24> 41 54 push %r12 <+ 26> 55 push %rbp 34 [1] static UndefinedType t; <+ 27> 48 8b 2d 26 68 13 00 mov 0x136826(%rip),%rbp 29 [1] FullySpecifiedType::FullySpecifiedType(Type *type) : <+ 34> 53 push %rbx <+ 35> 48 89 fb mov %rdi,%rbx 34 [1] static UndefinedType t; <+ 38> 0f b6 45 00 movzbl 0x0(%rbp),%eax <+ 42> 84 c0 test %al,%al <+ 44> 74 12 je 0x7fffc135c620 <_ZN9CPlusPlus18FullySpecifiedTypeC2EPNS_4TypeE+64> <+ 46> 4c 8b 25 5b 66 13 00 mov 0x13665b(%rip),%r12 35 [1] return &t; <+ 53> 4c 89 23 mov %r12,(%rbx) 34 [1] } <+ 56> 5b pop %rbx <+ 57> 5d pop %rbp <+ 58> 41 5c pop %r12 <+ 60> c3 ret After making it a global variable: 29 [1] FullySpecifiedType::FullySpecifiedType(Type *type) : f3 0f 1e fa endbr64 30 [1] _type(type), _flags(0) <+ 4> c7 47 08 00 00 00 00 movl $0x0,0x8(%rdi) 32 [1] if (! type) <+ 11> 48 85 f6 test %rsi,%rsi <+ 14> 74 08 je 0x7fffc14675f8 <_ZN9CPlusPlus18FullySpecifiedTypeC2EPNS_4TypeE+24> <+ 16> 48 89 37 mov %rsi,(%rdi) 34 [1] } <+ 19> c3 ret <+ 20> 0f 1f 40 00 nopl 0x0(%rax) 33 [1] _type = &UndefinedType::instance; <+ 24> 48 8b 35 49 67 13 00 mov 0x136749(%rip),%rsi # 0x7fffc159dd48 <+ 31> 48 89 37 mov %rsi,(%rdi) 34 [1] } <+ 34> c3 ret The no-parameters branch after splitting: 29 [1] FullySpecifiedType::FullySpecifiedType() : f3 0f 1e fa endbr64 30 [1] _type(&UndefinedType::instance), _flags(0) <+ 4> 48 8b 05 5d 67 13 00 mov 0x13675d(%rip),%rax # 0x7fffc159dd48 <+ 11> c7 47 08 00 00 00 00 movl $0x0,0x8(%rdi) <+ 18> 48 89 07 mov %rax,(%rdi) 31 [1] {} <+ 21> c3 ret Change-Id: I61439d68921cf9fa422304033b75de16bb4aa0d5 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* CPlusPlus: Inline some simple central functionshjk2022-06-2413-1000/+319
| | | | | | | | | | | | | Depending on context, callgrind sees contributions of >8% to the total cost of project parsing for these functions. The functional are actualy executed executed out-of-line, often for a function body of one "payload" instruction only. Inlining removes the call/endbr64/ret overhead. Change-Id: I6886f08e322fcaa4e0f54d424279e0a8c24e4718 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* CMake: Qt Creator Static build supportCristian Adam2022-04-291-1/+6
| | | | | | | | | | | | | | | | | | | This adds the build system feature that allows Qt Creator's libraries and plugins to be compiled statically. Fixes some symbol clashes when all plugins are linked into the same executable. Support for actually loading static plugins will be added in a separate commit. The feature is controlled by QTC_STATIC_BUILD which by default is OFF. Change-Id: I1fab7953c43e42dc75619e35660029ee067106df Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* CppEditor: Fix "move function definition"Christian Kandeler2022-04-051-23/+32
| | | | | | | | | | | | | | | | | | | ... for member functions with exception specification and/or reference qualifiers. The FunctionDeclaratorAST::cv_qualifier_list member can contain both the proper qualifiers "const" and "volatile" as well as the pseudo-qualifiers "override" and "final". The problem is that the former appear before exception specification and reference qualifiers, whereas the latter come afterwards. Therefore, when calculating the declarator's first and last tokens, we can't just mechanically check the different declarator members in order. Instead, we need to compare the token values to see which comes first. Task-number: QTCREATORBUG-27132 Change-Id: I924f9afe49453fa51b4a2fe010d1cc00c9defad1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Remove qmake build filesEike Ziller2022-01-201-69/+0
| | | | | | | | | | Removes qmake as a build system for building Qt Creator itself. Keep them for some tests that are not completely moved to CMake yet. Change-Id: I846c6ef65626b6dfae6375fdc85d00677aa8c2fb Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* CppEditor: Fix highlighting of raw string literalsChristian Kandeler2021-12-102-4/+44
| | | | | | | | | | | | ... with the built-in highlighter. Pass the necessary context information in and out of the SimpleLexer. Task-number: QTCREATORBUG-26211 Fixes: QTCREATORBUG-26425 Fixes: QTCREATORBUG-26615 Change-Id: Id72f743e07ae117ca51b0d5e527b208dda133b7e Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
* CPlusPlus: Allow numeric literals with single quotesChristian Kandeler2021-11-081-1/+1
| | | | | | | | | | | | ... also in macro expansions. Amends 8c437362bc. Just like in that patch, we don't prevent trailing quotes, even though they are not allowed. Unlike in that patch, we don't check the language version, as it is not set during preprocessor mode (for whatever reason). Fixes: QTCREATORBUG-26484 Change-Id: I8737724208802ed9a9005af538cf13fbfd2efd42 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* CPlusPlus: Fix buildChristian Kandeler2021-10-271-0/+3
| | | | | | | Amends 05e698a478. Change-Id: Ie33c233b89cad40f7e6a29a26582990ba9029f44 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* CppEditor: Fix "insert def from decl" for template return typesChristian Kandeler2021-10-272-0/+14
| | | | | | Fixes: QTCREATORBUG-26397 Change-Id: Ia215f2c2b5da708b0fd7c894987683b305f4ccec Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* CppEditor: Fix "insert definition" for templates with value parametersChristian Kandeler2021-08-172-1/+5
| | | | | | Fixes: QTCREATORBUG-26113 Change-Id: I2d2a1c1bdcffd67072bbda99dabbbfbfafe115c5 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* Merge remote-tracking branch 'origin/4.15' into 5.0Eike Ziller2021-06-241-0/+9
|\ | | | | | | | | | | | | | | Conflicts: src/plugins/cmakeprojectmanager/projecttreehelper.cpp src/plugins/coreplugin/mainwindow.cpp Change-Id: Ie3a281b8635e79ca5fa794a127ed0039f33fe2ee
| * CMake build: Force optimization of CPlusPlus libEike Ziller2021-06-221-0/+9
| | | | | | | | | | | | | | | | | | | | | | Even in the debug build, as done for the qmake build system. This is for performance optimization of this critical part for C++ parsing even in debug / developer builds. Change-Id: I9552ba9fc44e213f2df1d2d2a64a126af3603fd1 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: Cristian Adam <cristian.adam@qt.io>