This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: More of struct function breakup


Jan Hubicka <jh@suse.cz> writes:
> this patch finish the breakup of RTL stuff from struct function to rtl_data.
> It moves all the flags that are maintained only during RTL compilation.
>
> I've also removed the obsoletted current_function_*
> accestor macros for all the flags. RTL flags are now bools since they
> are not memory critical and generate smaller code this way than the
> bitfields.

I've installed this patch to restore builds for a few targets.
Tested by building cc1 for arm-eabi, frv-elf, iq2000-elf,
m32c-elf and xtensa-elf.  Installed as obvious.

Richard


gcc/
	* config/arm/arm.c (arm_unwind_emit): Use
	crtl->all_throwers_are_sibcalls instead of
	cfun->all_throwers_are_sibcalls.
	(arm_output_fn_unwind): Likewise.
	* config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
	instead of cfun->uses_pic_offset_table.
	(frv_expand_prologue): Likewise.
	(frv_frame_pointer_required): Likewise.
	(frv_expand_fdpic_call): Likewise.
	(frv_emit_movsi): Likewise.
	* config/iq2000/iq2000.c (iq2000_expand_prologue): Use
	cfun->returns_pcc_struct instead of
	current_function_returns_pcc_struct.
	* config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
	instead of cfun->calls_eh_return.
	(m32c_pushm_popm): Likewise.
	* config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
	"extern" declaration.

Index: gcc/config/arm/arm.c
===================================================================
--- gcc/config/arm/arm.c	(revision 134834)
+++ gcc/config/arm/arm.c	(working copy)
@@ -18635,7 +18635,7 @@ arm_unwind_emit (FILE * asm_out_file, rt
 
   if (!(flag_unwind_tables || crtl->uses_eh_lsda)
       && (TREE_NOTHROW (current_function_decl)
-	  || cfun->all_throwers_are_sibcalls))
+	  || crtl->all_throwers_are_sibcalls))
     return;
 
   if (GET_CODE (insn) == NOTE || !RTX_FRAME_RELATED_P (insn))
@@ -18724,7 +18724,7 @@ arm_output_fn_unwind (FILE * f, bool pro
 	 the frame annotations.  */
       if (!(flag_unwind_tables || crtl->uses_eh_lsda)
 	  && (TREE_NOTHROW (current_function_decl)
-	      || cfun->all_throwers_are_sibcalls))
+	      || crtl->all_throwers_are_sibcalls))
 	fputs("\t.cantunwind\n", f);
 
       fputs ("\t.fnend\n", f);
Index: gcc/config/frv/frv.c
===================================================================
--- gcc/config/frv/frv.c	(revision 134834)
+++ gcc/config/frv/frv.c	(working copy)
@@ -1175,7 +1175,7 @@ frv_stack_info (void)
 		  || (crtl->calls_eh_return
 		      && (regno >= FIRST_EH_REGNUM && regno <= LAST_EH_REGNUM))
 		  || (!TARGET_FDPIC && flag_pic
-		      && cfun->uses_pic_offset_table && regno == PIC_REGNO))
+		      && crtl->uses_pic_offset_table && regno == PIC_REGNO))
 		{
 		  info_ptr->save_p[regno] = REG_SAVE_1WORD;
 		  size_1word += UNITS_PER_WORD;
@@ -1195,7 +1195,7 @@ frv_stack_info (void)
 	      || cfun->machine->frame_needed
               || (TARGET_LINKED_FP && frame_pointer_needed)
               || (!TARGET_FDPIC && flag_pic
-		  && cfun->uses_pic_offset_table))
+		  && crtl->uses_pic_offset_table))
 	    {
 	      info_ptr->save_p[LR_REGNO] = REG_SAVE_1WORD;
 	      size_1word += UNITS_PER_WORD;
@@ -1864,7 +1864,7 @@ frv_expand_prologue (void)
     emit_insn (gen_blockage ());
 
   /* Set up pic register/small data register for this function.  */
-  if (!TARGET_FDPIC && flag_pic && cfun->uses_pic_offset_table)
+  if (!TARGET_FDPIC && flag_pic && crtl->uses_pic_offset_table)
     emit_insn (gen_pic_prologue (gen_rtx_REG (Pmode, PIC_REGNO),
 				 gen_rtx_REG (Pmode, LR_REGNO),
 				 gen_rtx_REG (SImode, OFFSET_REGNO)));
@@ -2110,7 +2110,7 @@ frv_frame_pointer_required (void)
   if (!current_function_sp_is_unchanging)
     return TRUE;
 
-  if (!TARGET_FDPIC && flag_pic && cfun->uses_pic_offset_table)
+  if (!TARGET_FDPIC && flag_pic && crtl->uses_pic_offset_table)
     return TRUE;
 
   if (profile_flag)
@@ -3799,7 +3799,7 @@ frv_expand_fdpic_call (rtx *operands, bo
 	x = gen_symGOTOFF2reg (dest, addr, OUR_FDPIC_REG,
 			       GEN_INT (R_FRV_FUNCDESC_GOTOFF12));
       emit_insn (x);
-      cfun->uses_pic_offset_table = TRUE;
+      crtl->uses_pic_offset_table = TRUE;
       addr = dest;
     }
   else if (GET_CODE (addr) == SYMBOL_REF)
@@ -4160,7 +4160,7 @@ frv_emit_movsi (rtx dest, rtx src)
 					   gen_rtx_REG (Pmode, base_regno),
 					   GEN_INT (R_FRV_GPREL12)));
       if (base_regno == PIC_REGNO)
-	cfun->uses_pic_offset_table = TRUE;
+	crtl->uses_pic_offset_table = TRUE;
       return TRUE;
     }
 
@@ -4204,7 +4204,7 @@ frv_emit_movsi (rtx dest, rtx src)
 	  break;
 	}
       emit_insn (x);
-      cfun->uses_pic_offset_table = TRUE;
+      crtl->uses_pic_offset_table = TRUE;
       return TRUE;
     }
 
Index: gcc/config/iq2000/iq2000.c
===================================================================
--- gcc/config/iq2000/iq2000.c	(revision 134834)
+++ gcc/config/iq2000/iq2000.c	(working copy)
@@ -1872,7 +1872,7 @@ iq2000_expand_prologue (void)
 
   /* If struct value address is treated as the first argument.  */
   if (aggregate_value_p (DECL_RESULT (fndecl), fndecl)
-      && ! current_function_returns_pcc_struct
+      && !cfun->returns_pcc_struct
       && targetm.calls.struct_value_rtx (TREE_TYPE (fndecl), 1) == 0)
     {
       tree type = build_pointer_type (fntype);
Index: gcc/config/m32c/m32c.c
===================================================================
--- gcc/config/m32c/m32c.c	(revision 134834)
+++ gcc/config/m32c/m32c.c	(working copy)
@@ -1251,7 +1251,7 @@ need_to_save (int regno)
 {
   if (fixed_regs[regno])
     return 0;
-  if (cfun->calls_eh_return)
+  if (crtl->calls_eh_return)
     return 1;
   if (regno == FP_REGNO)
     return 0;
@@ -1283,7 +1283,7 @@ m32c_pushm_popm (Push_Pop_Type ppt)
 
   if (crtl->return_rtx
       && GET_CODE (crtl->return_rtx) == PARALLEL
-      && !(cfun->calls_eh_return || cfun->machine->is_interrupt))
+      && !(crtl->calls_eh_return || cfun->machine->is_interrupt))
     {
       rtx exp = XVECEXP (crtl->return_rtx, 0, 0);
       rtx rv = XEXP (exp, 0);
Index: gcc/config/xtensa/xtensa.h
===================================================================
--- gcc/config/xtensa/xtensa.h	(revision 134834)
+++ gcc/config/xtensa/xtensa.h	(working copy)
@@ -23,7 +23,6 @@ Software Foundation; either version 3, o
 #include "xtensa-config.h"
 
 /* Standard GCC variables that we reference.  */
-extern int cfun->calls_alloca;
 extern int optimize;
 
 /* External variables defined in xtensa.c.  */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]