diff --git a/src/libs/cplusplus/Macro.h b/src/libs/cplusplus/Macro.h
index 1c340dba650855e18bc8fee9227150e67f79b909..a3d83b1f00db4b25f14cf3b5dfe020293db4da1a 100644
--- a/src/libs/cplusplus/Macro.h
+++ b/src/libs/cplusplus/Macro.h
@@ -137,12 +137,6 @@ public:
     void setVariadic(bool isVariadic)
     { f._variadic = isVariadic; }
 
-    bool isPredefined() const
-    { return f._predefined; }
-
-    void setPredefined(bool isPredefined)
-    { f._predefined = isPredefined; }
-
     QString toString() const;
     QString toStringWithLineBreaks() const;
 
@@ -157,7 +151,6 @@ private:
         unsigned _hidden: 1;
         unsigned _functionLike: 1;
         unsigned _variadic: 1;
-        unsigned _predefined: 1;
     };
 
     QByteArray _name;
diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp
index 4bbb229734b444a813d562235cb0450fc2a26541..05a7a083d384e8730e3d336665ef5f139eb2fdab 100644
--- a/src/libs/cplusplus/pp-engine.cpp
+++ b/src/libs/cplusplus/pp-engine.cpp
@@ -917,21 +917,23 @@ bool Preprocessor::handleIdentifier(PPToken *tk)
             && macroNameRef[0] == '_'
             && macroNameRef[1] == '_') {
         PPToken newTk;
-        QByteArray txt;
         if (macroNameRef == ppLine) {
-            txt = QByteArray::number(tk->lineno);
+            QByteArray txt = QByteArray::number(tk->lineno);
             newTk = generateToken(T_STRING_LITERAL, txt.constData(), txt.size(), tk->lineno, false);
         } else if (macroNameRef == ppFile) {
+            QByteArray txt;
             txt.append('"');
             txt.append(m_env->currentFileUtf8);
             txt.append('"');
             newTk = generateToken(T_STRING_LITERAL, txt.constData(), txt.size(), tk->lineno, false);
         } else if (macroNameRef == ppDate) {
+            QByteArray txt;
             txt.append('"');
             txt.append(QDate::currentDate().toString().toUtf8());
             txt.append('"');
             newTk = generateToken(T_STRING_LITERAL, txt.constData(), txt.size(), tk->lineno, false);
         } else if (macroNameRef == ppTime) {
+            QByteArray txt;
             txt.append('"');
             txt.append(QTime::currentTime().toString().toUtf8());
             txt.append('"');
@@ -939,14 +941,10 @@ bool Preprocessor::handleIdentifier(PPToken *tk)
         }
 
         if (newTk.hasSource()) {
-            Macro macro;
-            macro.setName(macroNameRef.toByteArray());
-            macro.setFileName(m_env->currentFile);
-            macro.setPredefined(true);
-            macro.setDefinition(txt, QVector<PPToken>() << newTk);
-            m_env->bind(macro);
-            if (m_client)
-                m_client->macroAdded(macro);
+            newTk.f.newline = tk->newline();
+            newTk.f.whitespace = tk->whitespace();
+            *tk = newTk;
+            return false;
         }
     }
 
diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index 740269efedbe58e652693264e2e12217931eb9ff..63d5bc2e5b7b52b66bd1abf53e285bd26dc713ce 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -797,12 +797,10 @@ const Macro *CPPEditorWidget::findCanonicalMacro(const QTextCursor &cursor, Docu
     if (const Macro *macro = doc->findMacroDefinitionAt(line)) {
         QTextCursor macroCursor = cursor;
         const QByteArray name = identifierUnderCursor(&macroCursor).toLatin1();
-        if (macro->name() == name && !macro->isPredefined())
+        if (macro->name() == name)
             return macro;
     } else if (const Document::MacroUse *use = doc->findMacroUseAt(cursor.position())) {
-        const Macro &macro = use->macro();
-        if (!macro.isPredefined())
-            return &macro;
+        return &use->macro();
     }
 
     return 0;
diff --git a/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp b/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp
index 050ba6ef8fb399ae3ff0535ffb2f64ec21df4601..19a5a3a5e59fd7a366d4cf15082219d6f9c24016 100644
--- a/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp
+++ b/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp
@@ -592,12 +592,10 @@ BaseTextEditorWidget::Link FollowSymbolUnderCursor::findLink(const QTextCursor &
             m_widget->showPreProcessorWidget();
         } else if (fileName != CppModelManagerInterface::configurationFileName()) {
             const Macro &macro = use->macro();
-            if (!macro.isPredefined()) {
-                link.targetFileName = macro.fileName();
-                link.targetLine = macro.line();
-                link.linkTextStart = use->begin();
-                link.linkTextEnd = use->end();
-            }
+            link.targetFileName = macro.fileName();
+            link.targetLine = macro.line();
+            link.linkTextStart = use->begin();
+            link.linkTextEnd = use->end();
         }
         return link;
     }
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index 17bc85f97da10abbaba134d3a3bfbb115cfc1d67..a1e9625e85da1b79fdf2cd491f4046c9335fac86 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -558,8 +558,6 @@ restart_search:
         usages.clear();
         foreach (const Document::MacroUse &use, doc->macroUses()) {
             const Macro &useMacro = use.macro();
-            if (useMacro.isPredefined())
-                continue;
 
             if (useMacro.fileName() == macro.fileName()) { // Check if this is a match, but possibly against an outdated document.
                 if (source.isEmpty())
diff --git a/src/plugins/cpptools/cpphighlightingsupportinternal.cpp b/src/plugins/cpptools/cpphighlightingsupportinternal.cpp
index d2a14170e46a359e099e4c0de9bead672f0c9424..3009d45c169ae38cb915ce1690b2a572c51a10bc 100644
--- a/src/plugins/cpptools/cpphighlightingsupportinternal.cpp
+++ b/src/plugins/cpptools/cpphighlightingsupportinternal.cpp
@@ -58,9 +58,6 @@ QFuture<TextEditor::HighlightingResult> CppHighlightingSupportInternal::highligh
 
     // Get macro definitions
     foreach (const CPlusPlus::Macro& macro, doc->definedMacros()) {
-        if (macro.isPredefined())
-            continue; // No "real" definition location
-
         int line, column;
         editor()->convertPosition(macro.offset(), &line, &column);
         ++column; //Highlighting starts at (column-1) --> compensate here
diff --git a/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp b/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp
index 9afbd315732aa46c1be6b6e1b57d147c92cc6108..26ece497a03589fa993b762a5fc7b4c23907d6f8 100644
--- a/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp
+++ b/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp
@@ -175,8 +175,6 @@ private slots:
     void test_checksymbols_VirtualMethodUse();
     void test_checksymbols_LabelUse();
     void test_checksymbols_MacroUse();
-    void test_checksymbols_Macros__FILE__LINE__DATE__TIME__1();
-    void test_checksymbols_Macros__FILE__LINE__DATE__TIME__2();
     void test_checksymbols_FunctionUse();
     void test_checksymbols_PseudoKeywordUse();
     void test_checksymbols_StaticUse();
@@ -328,55 +326,6 @@ void tst_CheckSymbols::test_checksymbols_MacroUse()
     TestData::check(source, expectedUses, macroUses);
 }
 
-void tst_CheckSymbols::test_checksymbols_Macros__FILE__LINE__DATE__TIME__1()
-{
-    const QByteArray source =
-        "#define FILE_DATE_TIME __FILE__  \" / \"  __DATE__  \" / \"  __TIME__\n"
-        "#define LINE_NUMBER 0 + __LINE__\n"
-        "\n"
-        "void f()\n"
-        "{\n"
-        "    class Printer;\n"
-        "    Printer::printText(FILE_DATE_TIME); Printer::printInteger(LINE_NUMBER); Printer::nl();\n"
-        "    return;\n"
-        "}\n";
-    const QList<Use> expectedUses = QList<Use>()
-        << Use(4, 6, 1, CppHighlightingSupport::FunctionUse)
-        << Use(6, 11, 7, CppHighlightingSupport::TypeUse)
-        << Use(6, 11, 7, CppHighlightingSupport::TypeUse)
-        << Use(7, 5, 7, CppHighlightingSupport::TypeUse)
-        << Use(7, 41, 7, CppHighlightingSupport::TypeUse)
-        << Use(7, 77, 7, CppHighlightingSupport::TypeUse)
-           ;
-
-    TestData::check(source, expectedUses);
-}
-
-void tst_CheckSymbols::test_checksymbols_Macros__FILE__LINE__DATE__TIME__2()
-{
-    const QByteArray source =
-        "void f()\n"
-        "{\n"
-        "    class Printer;\n"
-        "    Printer::printInteger(__LINE__); Printer::printText(__FILE__); Printer::nl();\n"
-        "    Printer::printText(__DATE__); Printer::printText(__TIME__); Printer::nl();\n"
-        "    return;\n"
-        "}\n";
-    const QList<Use> expectedUses = QList<Use>()
-        << Use(1, 6, 1, CppHighlightingSupport::FunctionUse)
-        << Use(3, 11, 7, CppHighlightingSupport::TypeUse)
-        << Use(3, 11, 7, CppHighlightingSupport::TypeUse)
-        << Use(4, 5, 7, CppHighlightingSupport::TypeUse)
-        << Use(4, 38, 7, CppHighlightingSupport::TypeUse)
-        << Use(4, 68, 7, CppHighlightingSupport::TypeUse)
-        << Use(5, 5, 7, CppHighlightingSupport::TypeUse)
-        << Use(5, 35, 7, CppHighlightingSupport::TypeUse)
-        << Use(5, 65, 7, CppHighlightingSupport::TypeUse)
-           ;
-
-    TestData::check(source, expectedUses);
-}
-
 void tst_CheckSymbols::test_checksymbols_FunctionUse()
 {
     const QByteArray source =
diff --git a/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp b/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp
index 489722d675950626cbcc2a9880eb9f69f22ecae7..2594bc692f6f796483c106f4bada75c46e34eb75 100644
--- a/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp
+++ b/tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp
@@ -796,11 +796,7 @@ void tst_Preprocessor::builtin__FILE__()
                            ));
     const QByteArray result____ =
             "# 1 \"some-file.c\"\n"
-            "const char *f =\n"
-            "# expansion begin 16,8 ~1\n"
-            "\"some-file.c\"\n"
-            "# expansion end\n"
-            "# 2 \"some-file.c\"\n";
+            "const char *f = \"some-file.c\"\n";
 
     QCOMPARE(preprocessed, result____);
 }