diff --git a/src/plugins/cpptools/cppsemanticsearch.cpp b/src/plugins/cpptools/cppsemanticsearch.cpp
index 08ccab05f78d9ca6990f4c93da0395c7448f1a68..68fb581a3408ba30a738be068c4914ed717bac58 100644
--- a/src/plugins/cpptools/cppsemanticsearch.cpp
+++ b/src/plugins/cpptools/cppsemanticsearch.cpp
@@ -33,8 +33,6 @@
 #include <AST.h>
 #include <TranslationUnit.h>
 
-#include <cplusplus/FastPreprocessor.h>
-
 #include <QtCore/QDir>
 #include <QtCore/QPointer>
 #include <QtCore/QtConcurrentRun>
@@ -175,12 +173,8 @@ static void semanticSearch_helper(QFutureInterface<Core::Utils::FileSearchResult
             continue;
 
         const QString contents = QTextStream(&file).readAll(); // ### FIXME
-
-        FastPreprocessor r(snapshot);
-        const QByteArray source = r.run(fileName, contents.toUtf8());
-
-        Document::Ptr newDoc = Document::create(fileName);
-        newDoc->setSource(source);
+        const QByteArray source = snapshot.preprocessedCode(contents.toUtf8(), fileName);
+        Document::Ptr newDoc = snapshot.documentFromSource(source, fileName);
         newDoc->parse();
 
         if (SemanticSearch *search = factory->create(future, newDoc, snapshot)) {