diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b93924e094b310d3981e52ab1bbb9c3ec1a59690..e7ad9005212df38937f6da2e9268563b8992c3b0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-01-03  Andrew Pinski  <apinski@cavium.com>
+
+	* lib/scanasm.exp (dg-function-on-line): Always use a special format
+	for all mips targets.  Also allow an optional .cfi_startproc.
+
 2012-01-03  Uros Bizjak  <ubizjak@gmail.com>
 
 	* gfortran.dg/typebound_operator_8.f03: Use dg-add-options ieee.
diff --git a/gcc/testsuite/lib/scanasm.exp b/gcc/testsuite/lib/scanasm.exp
index 3ba22f9dad7b42c0c8995854597236243b55c48c..e03d241d93dab8336c12f48a4298bb97424ece95 100644
--- a/gcc/testsuite/lib/scanasm.exp
+++ b/gcc/testsuite/lib/scanasm.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2000, 2002, 2003, 2007, 2008, 2010, 2011
+# Copyright (C) 2000, 2002, 2003, 2007, 2008, 2010, 2011, 2012
 # Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
@@ -474,8 +474,8 @@ proc dg-function-on-line { args } {
     if { [istarget hppa*-*-*] } {
 	set pattern [format {\t;[^:]+:%d\n(\t[^\t]+\n)+%s:\n\t.PROC} \
                      $line $symbol]
-    } elseif { [istarget mips-sgi-irix*] } {
-	set pattern [format {\t\.loc [0-9]+ %d 0( [^\n]*)?\n\t\.set\t(no)?mips16\n\t\.ent\t%s\n\t\.type\t%s, @function\n%s:\n} \
+    } elseif { [istarget mips*-*-*] } {
+	set pattern [format {\t\.loc [0-9]+ %d 0( [^\n]*)?\n(\t.cfi_startproc[^\t]*\n)*\t\.set\t(no)?mips16\n\t\.ent\t%s\n\t\.type\t%s, @function\n%s:\n} \
 		     $line $symbol $symbol $symbol]
     } else {
 	set pattern [format {%s:[^\t]*(\t.(fnstart|frame|mask|file)[^\t]*)*\t[^:]+:%d\n} \