This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/16532] Inefficient jump to epilogue
- From: "cvs-commit at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 28 Sep 2004 06:26:18 -0000
- Subject: [Bug target/16532] Inefficient jump to epilogue
- References: <20040713215437.16532.dann@godzilla.ics.uci.edu>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From cvs-commit at gcc dot gnu dot org 2004-09-28 06:26 -------
Subject: Bug 16532
CVSROOT: /cvs/gcc
Module name: gcc
Changes by: ebotcazou@gcc.gnu.org 2004-09-28 06:26:08
Modified files:
gcc : ChangeLog
gcc/config/sparc: sparc-protos.h sparc.c sparc.h sparc.md
Log message:
PR target/16532
* config/sparc/sparc.c (struct machine_function): New field
'leaf_function_p' and 'prologue_data_valid_p'.
(sparc_leaf_function_p, sparc_prologue_data_valid_p): New macro
to conveniently access the above fields.
(TARGET_LATE_RTL_PROLOGUE_EPILOGUE): Delete.
(eligible_for_return_delay): Use 'sparc_leaf_function_p' instead
of the generic flavor 'current_function_uses_only_leaf_regs'.
(eligible_for_sibcall_delay): Likewise.
(sparc_expand_prologue): Compute 'sparc_leaf_function_p' and set
'sparc_prologue_data_valid_p'. Use 'sparc_leaf_function_p'.
(sparc_asm_function_prologue): Add sanity check for the assumption
made in 'sparc_expand_prologue'. Use 'sparc_leaf_function_p'.
(sparc_can_use_return_insn_p): New function.
(sparc_expand_epilogue): Use 'sparc_leaf_function_p'.
(output_restore): Likewise.
(output_sibcall): Likewise.
(sparc_output_mi_thunk): Likewise.
* config/sparc/sparc-protos.h (sparc_can_use_return_insn_p): Declare.
* config/sparc/sparc.md (return): New expander.
* config/sparc/sparc.h (INITIAL_ELIMINATION_OFFSET): Minor tweak.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.5651&r2=2.5652
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/sparc-protos.h.diff?cvsroot=gcc&r1=1.48&r2=1.49
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/sparc.c.diff?cvsroot=gcc&r1=1.335&r2=1.336
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/sparc.h.diff?cvsroot=gcc&r1=1.267&r2=1.268
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/sparc.md.diff?cvsroot=gcc&r1=1.215&r2=1.216
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16532