diff --git a/src/plugins/projectexplorer/gccparser.cpp b/src/plugins/projectexplorer/gccparser.cpp
index abb887541eb4dbd78808277bed5fa409c61a909f..605af2d5a58a69636ce77c9a929a435d2f1eee29 100644
--- a/src/plugins/projectexplorer/gccparser.cpp
+++ b/src/plugins/projectexplorer/gccparser.cpp
@@ -36,16 +36,17 @@ using namespace ProjectExplorer;
 
 namespace {
     // opt. drive letter + filename: (2 brackets)
-    const char * const FILE_PATTERN = "^(([A-Za-z]:)?[^:]+\\.[^:]+):";
+    const char * const FILE_PATTERN = "(([A-Za-z]:)?[^:]+\\.[^:]+):";
     const char * const COMMAND_PATTERN = "^(.*[\\\\/])?([a-z0-9]+-[a-z0-9]+-[a-z0-9]+-)?(gcc|g\\+\\+)(-[0-9\\.]+)?(\\.exe)?: ";
 }
 
 GccParser::GccParser()
 {
-    m_regExp.setPattern(QString::fromLatin1(FILE_PATTERN) + QLatin1String("(\\d+):(\\d+:)?\\s((fatal |#)?(warning|error|note):?\\s)(.+)$"));
+    setObjectName(QLatin1String("GCCParser"));
+    m_regExp.setPattern(QString(QChar('^')) + QString::fromLatin1(FILE_PATTERN) + QLatin1String("(\\d+):(\\d+:)?\\s((fatal |#)?(warning|error|note):?\\s)(.+)$"));
     m_regExp.setMinimal(true);
 
-    m_regExpIncluded.setPattern("^.*from\\s([^:]+):(\\d+)(,|:)$");
+    m_regExpIncluded.setPattern(QString::fromLatin1("^.*from\\s") + QString::fromLatin1(FILE_PATTERN) + QLatin1String("(\\d+)[,:]?$"));
     m_regExpIncluded.setMinimal(true);
 
     // optional path with trailing slash
@@ -118,7 +119,7 @@ void GccParser::stdError(const QString &line)
         emit addTask(Task(Task::Unknown,
                           lne /* description */,
                           m_regExpIncluded.cap(1) /* filename */,
-                          m_regExpIncluded.cap(2).toInt() /* linenumber */,
+                          m_regExpIncluded.cap(3).toInt() /* linenumber */,
                           Constants::TASK_CATEGORY_COMPILE));
         return;
     }
@@ -547,6 +548,32 @@ void ProjectExplorerPlugin::testGccOutputParsers_data()
                         Constants::TASK_CATEGORY_COMPILE))
             << QString();
 
+    QTest::newRow("GCCE from lines")
+            << QString::fromLatin1("In file included from C:/Symbian_SDK/epoc32/include/e32cmn.h:6792,\n"
+                                   "                 from C:/Symbian_SDK/epoc32/include/e32std.h:25,\n"
+                                   "C:/Symbian_SDK/epoc32/include/e32cmn.inl: In member function 'SSecureId::operator const TSecureId&() const':\n"
+                                   "C:/Symbian_SDK/epoc32/include/e32cmn.inl:7094: warning: returning reference to temporary")
+            << OutputParserTester::STDERR
+            << QString() << QString()
+            << ( QList<ProjectExplorer::Task>()
+                << Task(Task::Unknown,
+                        QLatin1String("In file included from C:/Symbian_SDK/epoc32/include/e32cmn.h:6792,"),
+                        QLatin1String("C:/Symbian_SDK/epoc32/include/e32cmn.h"), 6792,
+                        Constants::TASK_CATEGORY_COMPILE)
+                << Task(Task::Unknown,
+                        QLatin1String("from C:/Symbian_SDK/epoc32/include/e32std.h:25,"),
+                        QLatin1String("C:/Symbian_SDK/epoc32/include/e32std.h"), 25,
+                        Constants::TASK_CATEGORY_COMPILE)
+                << Task(Task::Unknown,
+                        QLatin1String("In member function 'SSecureId::operator const TSecureId&() const':"),
+                        QLatin1String("C:/Symbian_SDK/epoc32/include/e32cmn.inl"), -1,
+                        Constants::TASK_CATEGORY_COMPILE)
+                << Task(Task::Warning,
+                        QLatin1String("returning reference to temporary"),
+                        QLatin1String("C:/Symbian_SDK/epoc32/include/e32cmn.inl"), 7094,
+                        Constants::TASK_CATEGORY_COMPILE))
+            << QString();
+
 }
 
 void ProjectExplorerPlugin::testGccOutputParsers()