diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index 8a8d796b1171bfa38b2cc538d6735014d73a08b2..30b4209dbecbff623ededd961a8fbfd0f40a5b04 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -1259,6 +1259,10 @@ void CppModelManager::updateIncludesInPaths(QFutureInterface<void> &future,
 
         const QString path = paths.takeFirst();
 
+        // Skip non-existing paths
+        if (!QFile::exists(path))
+            continue;
+
         // Skip already scanned paths
         if (entriesInPaths.contains(path))
             continue;
@@ -1269,32 +1273,33 @@ void CppModelManager::updateIncludesInPaths(QFutureInterface<void> &future,
         while (i.hasNext()) {
             const QString fileName = i.next();
             const QFileInfo fileInfo = i.fileInfo();
-            const QString suffix = fileInfo.suffix();
-            if (suffix.isEmpty() || suffixes.contains(suffix)) {
-                QString text = fileInfo.fileName();
-                if (fileInfo.isDir()) {
-                    text += QLatin1Char('/');
-
-                    // Also scan subdirectory, but avoid endless recursion with symbolic links
-                    if (fileInfo.isSymLink()) {
-                        QString target = fileInfo.symLinkTarget();
-
-                        // Don't add broken symlinks
-                        if (!QFileInfo(target).exists())
-                            continue;
-
-                        QMap<QString, QStringList>::const_iterator result = entriesInPaths.find(target);
-                        if (result != entriesInPaths.constEnd()) {
-                            entriesInPaths.insert(fileName, result.value());
-                        } else {
-                            paths.append(target);
-                            symlinks.append(SymLink(fileName, target));
-                        }
+            QString text = fileInfo.fileName();
+            if (fileInfo.isDir()) {
+                text += QLatin1Char('/');
+
+                // Also scan subdirectory, but avoid endless recursion with symbolic links
+                if (fileInfo.isSymLink()) {
+                    QString target = fileInfo.symLinkTarget();
+
+                    // Don't add broken symlinks
+                    if (!QFileInfo(target).exists())
+                        continue;
+
+                    QMap<QString, QStringList>::const_iterator result = entriesInPaths.find(target);
+                    if (result != entriesInPaths.constEnd()) {
+                        entriesInPaths.insert(fileName, result.value());
                     } else {
-                        paths.append(fileName);
+                        paths.append(target);
+                        symlinks.append(SymLink(fileName, target));
                     }
+                } else {
+                    paths.append(fileName);
                 }
                 entries.append(text);
+            } else {
+                const QString suffix = fileInfo.suffix();
+                if (suffix.isEmpty() || suffixes.contains(suffix))
+                    entries.append(text);
             }
         }