diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 30ae24e08b3f44d02cf244a031968d09c870646a..582ad9296a8f513c64148019fc55a6c799b7a272 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2010-07-30  Bernd Schmidt  <bernds@codesourcery.com>
+
+	* rtlanal.c (simplify_subreg_regno): Don't treat
+	HARD_FRAME_POINTER_REGNUM specially.
+
 2010-07-30  Joseph Myers  <joseph@codesourcery.com>
 
 	* common.opt (-G): Don't define option here.
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index d242a9a3690c8828ce9684b962370f3888fd9683..ac786338a00c7584bb40f31726d268c34de00446 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -3297,8 +3297,7 @@ simplify_subreg_regno (unsigned int xregno, enum machine_mode xmode,
 
   /* We shouldn't simplify stack-related registers.  */
   if ((!reload_completed || frame_pointer_needed)
-      && (xregno == FRAME_POINTER_REGNUM
-	  || xregno == HARD_FRAME_POINTER_REGNUM))
+      && xregno == FRAME_POINTER_REGNUM)
     return -1;
 
   if (FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM