From 129bdb27529a21039b69bef4d0b3b05252ea10ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Wed, 9 May 2018 13:48:55 +0200 Subject: [PATCH] SymbolDatabase::createSymbolDatabaseSetTypePointers: Optimize ~90% --- lib/symboldatabase.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index 83c6b71a5..318a83855 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -1049,11 +1049,19 @@ void SymbolDatabase::createSymbolDatabaseSetFunctionPointers(bool firstPass) void SymbolDatabase::createSymbolDatabaseSetTypePointers() { + std::set typenames; + for (const Type &t : typeList) { + typenames.insert(t.name()); + } + // Set type pointers for (const Token* tok = _tokenizer->list.front(); tok != _tokenizer->list.back(); tok = tok->next()) { if (!tok->isName() || tok->varId() || tok->function() || tok->type() || tok->enumerator()) continue; + if (typenames.find(tok->str()) == typenames.end()) + continue; + const Type *type = findVariableType(tok->scope(), tok); if (type) const_cast(tok)->type(type);