diff --git a/src/libs/cplusplus/FindUsages.cpp b/src/libs/cplusplus/FindUsages.cpp
index 7b79b0ac16d2c2ac16acdebf8aaefa52ad307c86..a8d0e456b6fb6e996579a69291943f3947fa6228 100644
--- a/src/libs/cplusplus/FindUsages.cpp
+++ b/src/libs/cplusplus/FindUsages.cpp
@@ -69,6 +69,7 @@ void FindUsages::operator()(Symbol *symbol)
     _references.clear();
     _usages.clear();
     _declSymbol = symbol;
+    _inSimpleDeclaration = 0;
 
     _id = 0;
     if (_declSymbol && 0 != (_id = _declSymbol->identifier()))
@@ -450,15 +451,18 @@ bool FindUsages::visit(FunctionDeclaratorAST *ast)
     return false;
 }
 
-bool FindUsages::visit(SimpleDeclarationAST *)
+bool FindUsages::visit(SimpleDeclarationAST *ast)
 {
+    for  (SpecifierListAST *it = ast->decl_specifier_list; it; it = it->next)
+        accept(it->value);
+
     ++_inSimpleDeclaration;
-    return true;
+    for (DeclaratorListAST *it = ast->declarator_list; it; it = it->next)
+        accept(it->value);
+    --_inSimpleDeclaration;
+    return false;
 }
 
-void FindUsages::endVisit(SimpleDeclarationAST *)
-{ --_inSimpleDeclaration; }
-
 bool FindUsages::visit(ObjCSelectorWithoutArgumentsAST *ast)
 {
     const Identifier *id = identifier(ast->name_token);
diff --git a/src/libs/cplusplus/FindUsages.h b/src/libs/cplusplus/FindUsages.h
index 2b066fa2fa53b7f2aaf7101c767e27f008fbd6cf..313676fc909428bcfae2678d2e74677806c5a869 100644
--- a/src/libs/cplusplus/FindUsages.h
+++ b/src/libs/cplusplus/FindUsages.h
@@ -99,7 +99,6 @@ protected:
     virtual bool visit(ExpressionOrDeclarationStatementAST *ast);
     virtual bool visit(FunctionDeclaratorAST *ast);
     virtual bool visit(SimpleDeclarationAST *);
-    virtual void endVisit(SimpleDeclarationAST *);
     virtual bool visit(ObjCSelectorWithoutArgumentsAST *ast);
     virtual bool visit(ObjCSelectorWithArgumentsAST *ast);