diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0bfd95afc3de4523a5c79b6c908d993aebe5ff4f..4c7bdd5e93bfe4f3c230e39c72718a87047c5f58 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2011-11-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* dwarf2cfi.c (dwarf2out_frame_debug_expr): Check
+	HARD_FRAME_POINTER_REGNUM instead of hard_frame_pointer_rtx
+	in Rule 18.
+
 2011-11-07  Jakub Jelinek  <jakub@redhat.com>
 
 	* config/i386/i386.c (ix86_expand_builtin): If gather mask
diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c
index 4f44c7744b331734819c50c8a8d0872f855690f1..69e6f21719bb886e583a1ffa610cb30b32196018 100644
--- a/gcc/dwarf2cfi.c
+++ b/gcc/dwarf2cfi.c
@@ -1757,7 +1757,8 @@ dwarf2out_frame_debug_expr (rtx expr)
 	     regiser.  */
           if (fde
               && fde->stack_realign
-              && src == hard_frame_pointer_rtx)
+	      && REG_P (src)
+	      && REGNO (src) == HARD_FRAME_POINTER_REGNUM)
 	    {
 	      gcc_assert (cur_cfa->reg != dw_frame_pointer_regnum);
 	      cur_trace->cfa_store.offset = 0;