diff mbox

PATCH: Check HARD_FRAME_POINTER_REGNUM instead of hard_frame_pointer_rtx in dwarf2out_frame_debug_expr

Message ID 20111104202954.GA25377@intel.com
State New
Headers show

Commit Message

H.J. Lu Nov. 4, 2011, 8:29 p.m. UTC
With Pmode == SImode and word_mode == DImode, we generate

(insn/f 105 104 106 2 (set (mem:DI (pre_dec:SI (reg/f:SI 7 sp)) [0 S8 A8])
        (reg:DI 6 bp)) x.cc:18 42 {*pushdi2_rex64}
	     (nil))

to push frame pointer onto stack. Checking hard_frame_pointer_rtx fails
since hard_frame_pointer_rtx is in Pmode, not word_mode.  This patch checks
HARD_FRAME_POINTER_REGNUM instead of hard_frame_pointer_rtx for push/pop.
OK for trunk?

Thanks.


H.J.
---
2011-11-04  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.

Comments

Richard Henderson Nov. 5, 2011, 7:23 p.m. UTC | #1
On 11/04/2011 01:29 PM, H.J. Lu wrote:
> 2011-11-04  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.

Ok.


r~
diff mbox

Patch

diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c
index 4f44c77..69e6f21 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;