struct function cleanup part I

Jan Hubicka jh@suse.cz
Tue Apr 1 08:42:00 GMT 2008


> Hi Jan,
> 
> It works on ia64.
Thanks,
I've commited the following as obvious, hope it will solve all the
problems.

Index: ChangeLog
===================================================================
*** ChangeLog	(revision 133785)
--- ChangeLog	(working copy)
***************
*** 1,3 ****
--- 1,13 ----
+ 2008-04-01  Jan Hubicka  <jh@suse.cz>
+ 	    Jim Wilson  <wilson@tuliptree.org>
+ 	    Andreas Tobler <andreast@gcc.gnu.org>
+ 
+ 	PR middle-end/35781
+ 	* m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
+ 	rtl.emit instead cfun->emit.
+ 	* sparc/sparc.h (INIT_EXPANDERS): Likewise.
+ 	* ia64/ia64.h (INIT_EXPANDERS): Likewise.
+ 
  2008-04-01  Ben Elliston  <bje@au.ibm.com>
  
  	* doc/c-tree.texi (Function Basics): Fix grammatical error.
Index: config/m32c/m32c.c
===================================================================
*** config/m32c/m32c.c	(revision 133785)
--- config/m32c/m32c.c	(working copy)
*************** m32c_leaf_function_p (void)
*** 3889,3908 ****
    struct sequence_stack *seq;
    int rv;
  
!   saved_first = cfun->emit->x_first_insn;
!   saved_last = cfun->emit->x_last_insn;
!   for (seq = cfun->emit->sequence_stack; seq && seq->next; seq = seq->next)
      ;
    if (seq)
      {
!       cfun->emit->x_first_insn = seq->first;
!       cfun->emit->x_last_insn = seq->last;
      }
  
    rv = leaf_function_p ();
  
!   cfun->emit->x_first_insn = saved_first;
!   cfun->emit->x_last_insn = saved_last;
    return rv;
  }
  
--- 3889,3908 ----
    struct sequence_stack *seq;
    int rv;
  
!   saved_first = rtl.emit.x_first_insn;
!   saved_last = rtl.emit.x_last_insn;
!   for (seq = rtl.emit.sequence_stack; seq && seq->next; seq = seq->next)
      ;
    if (seq)
      {
!       rtl.emit.x_first_insn = seq->first;
!       rtl.emit.x_last_insn = seq->last;
      }
  
    rv = leaf_function_p ();
  
!   rtl.emit.x_first_insn = saved_first;
!   rtl.emit.x_last_insn = saved_last;
    return rv;
  }
  
*************** m32c_function_needs_enter (void)
*** 3918,3924 ****
    rtx fb = gen_rtx_REG (Pmode, FB_REGNO);
  
    insn = get_insns ();
!   for (seq = cfun->emit->sequence_stack;
         seq;
         insn = seq->first, seq = seq->next);
  
--- 3918,3924 ----
    rtx fb = gen_rtx_REG (Pmode, FB_REGNO);
  
    insn = get_insns ();
!   for (seq = rtl.emit.sequence_stack;
         seq;
         insn = seq->first, seq = seq->next);
  
Index: config/sparc/sparc.h
===================================================================
*** config/sparc/sparc.h	(revision 133785)
--- config/sparc/sparc.h	(working copy)
*************** extern int sparc_mode_class[];
*** 953,959 ****
  /* Given the stack bias, the stack pointer isn't actually aligned.  */
  #define INIT_EXPANDERS							 \
    do {									 \
!     if (cfun && cfun->emit->regno_pointer_align && SPARC_STACK_BIAS)	 \
        {									 \
  	REGNO_POINTER_ALIGN (STACK_POINTER_REGNUM) = BITS_PER_UNIT;	 \
  	REGNO_POINTER_ALIGN (HARD_FRAME_POINTER_REGNUM) = BITS_PER_UNIT; \
--- 953,959 ----
  /* Given the stack bias, the stack pointer isn't actually aligned.  */
  #define INIT_EXPANDERS							 \
    do {									 \
!     if (rtl.emit.regno_pointer_align && SPARC_STACK_BIAS)	 \
        {									 \
  	REGNO_POINTER_ALIGN (STACK_POINTER_REGNUM) = BITS_PER_UNIT;	 \
  	REGNO_POINTER_ALIGN (HARD_FRAME_POINTER_REGNUM) = BITS_PER_UNIT; \
Index: config/ia64/ia64.h
===================================================================
*** config/ia64/ia64.h	(revision 133785)
--- config/ia64/ia64.h	(working copy)
*************** enum reg_class
*** 982,988 ****
  #define INIT_EXPANDERS					\
    do {							\
      ia64_init_expanders ();                             \
!     if (cfun && cfun->emit->regno_pointer_align)	\
        REGNO_POINTER_ALIGN (ARG_POINTER_REGNUM) = 64;	\
    } while (0)
  
--- 982,988 ----
  #define INIT_EXPANDERS					\
    do {							\
      ia64_init_expanders ();                             \
!     if (rtl.emit.regno_pointer_align)	\
        REGNO_POINTER_ALIGN (ARG_POINTER_REGNUM) = 64;	\
    } while (0)
  



More information about the Gcc-patches mailing list