This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: More of struct function breakup
- From: Richard Sandiford <rsandifo at nildram dot co dot uk>
- To: Jan Hubicka <jh at suse dot cz>
- Cc: gcc-patches at gcc dot gnu dot org, rguenther at suse dot de
- Date: Wed, 30 Apr 2008 20:33:49 +0100
- Subject: Re: More of struct function breakup
- References: <20080425133301.GL29302@kam.mff.cuni.cz>
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. */