re PR target/16532 (Inefficient jump to epilogue)
authorEric Botcazou <ebotcazou@libertysurf.fr>
Tue, 28 Sep 2004 06:26:08 +0000 (08:26 +0200)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 28 Sep 2004 06:26:08 +0000 (06:26 +0000)
commit5be9b7a1750e019b85286348a325f00819daca52
treebe38bba66d1221286973b3932565532de93fb5c8
parent4badaa417d86f108d2921a9588a0b9846d552118
re PR target/16532 (Inefficient jump to epilogue)

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.

From-SVN: r88220
gcc/ChangeLog
gcc/config/sparc/sparc-protos.h
gcc/config/sparc/sparc.c
gcc/config/sparc/sparc.h
gcc/config/sparc/sparc.md