diff --git a/src/libs/cplusplus/FindUsages.cpp b/src/libs/cplusplus/FindUsages.cpp
index 5b3e77ee8d1ff466079b5239f4501a1788922c20..d6ecca8cbf90f4c66e2cddec9a89b4172a7d9609 100644
--- a/src/libs/cplusplus/FindUsages.cpp
+++ b/src/libs/cplusplus/FindUsages.cpp
@@ -59,6 +59,7 @@ void FindUsages::setGlobalNamespaceBinding(NamespaceBindingPtr globalNamespaceBi
 
 QList<int> FindUsages::operator()(Symbol *symbol, Identifier *id, AST *ast)
 {
+    _processed.clear();
     _references.clear();
     _declSymbol = symbol;
     _id = id;
@@ -92,6 +93,9 @@ QString FindUsages::matchingLine(const Token &tk) const
 
 void FindUsages::reportResult(unsigned tokenIndex, const QList<Symbol *> &candidates)
 {
+    if (_processed.contains(tokenIndex))
+        return;
+
     const bool isStrongResult = checkCandidates(candidates);
 
     if (isStrongResult)
@@ -100,6 +104,11 @@ void FindUsages::reportResult(unsigned tokenIndex, const QList<Symbol *> &candid
 
 void FindUsages::reportResult(unsigned tokenIndex)
 {
+    if (_processed.contains(tokenIndex))
+        return;
+
+    _processed.insert(tokenIndex);
+
     const Token &tk = tokenAt(tokenIndex);
     const QString lineText = matchingLine(tk);
 
diff --git a/src/libs/cplusplus/FindUsages.h b/src/libs/cplusplus/FindUsages.h
index 9f82949380677777434fb57ec4a8b9e52b7ee5d2..667ad18485a310421a2372d08395b1781f3cbc75 100644
--- a/src/libs/cplusplus/FindUsages.h
+++ b/src/libs/cplusplus/FindUsages.h
@@ -114,6 +114,7 @@ private:
     QList<int> _references;
     LookupContext _previousContext;
     int _inSimpleDeclaration;
+    QSet<unsigned> _processed;
 };
 
 } // end of namespace CPlusPlus