Mainline is broken on ia64

H. J. Lu hjl@lucon.org
Sat Jan 28 05:41:00 GMT 2006


On Fri, Jan 27, 2006 at 06:20:41PM -0500, Daniel Berlin wrote:
> H. J. Lu wrote:
> > I got
> > 
> > /net/gnu-13/export/gnu/src/gcc/gcc/gcc/df-scan.c: In function
> > `df_record_entry_block_defs':
> > /net/gnu-13/export/gnu/src/gcc/gcc/gcc/df-scan.c:1753: error:
> > `INCOMING_RETURN_ADDR_RTX' undeclared (first use in this function)
> > /net/gnu-13/export/gnu/src/gcc/gcc/gcc/df-scan.c:1753: error: (Each
> > undeclared identifier is reported only once
> > /net/gnu-13/export/gnu/src/gcc/gcc/gcc/df-scan.c:1753: error: for each
> > function it appears in.)
> > make[5]: *** [df-scan.o] Error 1
> > make[5]: *** Waiting for unfinished jobs....
> > 
> > [hjl@gnu-13 gcc]$ grep INCOMING_RETURN_ADDR_RTX *.c
> > df-scan.c:      if (REG_P (INCOMING_RETURN_ADDR_RTX))
> > df-scan.c:      bitmap_set_bit (df->entry_block_defs, REGNO
> > (INCOMING_RETURN_ADDR_RTX));
> > dwarf2out.c:   INCOMING_RETURN_ADDR_RTX.  */
> > dwarf2out.c:  initial_return_save (INCOMING_RETURN_ADDR_RTX);
> > function.c:#if defined(HAVE_epilogue) &&
> > defined(INCOMING_RETURN_ADDR_RTX)
> > function.c:#if defined(HAVE_epilogue) &&
> > defined(INCOMING_RETURN_ADDR_RTX)
> > function.c:       rtx retaddr = INCOMING_RETURN_ADDR_RTX;
> > function.c:#ifdef INCOMING_RETURN_ADDR_RTX
> > 
> > df-scan.c doesn't check if INCOMING_RETURN_ADDR_RTX is defined.
> 
> Actually, neither does dwarf2out.c specifically check for it, it assumes
> it's defined if DWARF2_UNWIND_INFO does.
> 
> #ifdef DWARF2_UNWIND_INFO
>   /* On entry, the Canonical Frame Address is at SP.  */
>   dwarf2out_def_cfa (NULL, STACK_POINTER_REGNUM, INCOMING_FRAME_SP_OFFSET);
>   initial_return_save (INCOMING_RETURN_ADDR_RTX);
> #endif
> 
> 
> Can you try the obvious patch here (surrounding INCOMING_RETURN_ADDR_RTX
> with an ifdef)?
> 

This patch works for me.


H.J.
---
2006-01-27  H.J. Lu  <hongjiu.lu@intel.com>

	* df-scan.c (df_record_entry_block_defs): Check if
	INCOMING_RETURN_ADDR_RTX is defined.

--- gcc/df-scan.c.foo	2006-01-27 14:24:43.000000000 -0800
+++ gcc/df-scan.c	2006-01-27 15:28:31.000000000 -0800
@@ -1750,8 +1750,10 @@ df_record_entry_block_defs (struct dataf
     }
   else
     {
+#ifdef INCOMING_RETURN_ADDR_RTX
       if (REG_P (INCOMING_RETURN_ADDR_RTX))
 	bitmap_set_bit (df->entry_block_defs, REGNO (INCOMING_RETURN_ADDR_RTX));
+#endif
             
       /* If STATIC_CHAIN_INCOMING_REGNUM == STATIC_CHAIN_REGNUM
 	 only STATIC_CHAIN_REGNUM is defined.  If they are different,



More information about the Gcc-patches mailing list