diff options
author | Bernd Schmidt <bernds@codesourcery.com> | 2011-10-05 12:59:23 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2011-10-05 12:59:23 +0000 |
commit | 484db665a35edd7c5e4112331665da4dfe57affd (patch) | |
tree | 092a063b47d0bf2e253befae6fbbc597612758ed /gcc/doc | |
parent | 18474649d91dd922555c5af509206a7aa3c65285 (diff) | |
download | gcc-484db665a35edd7c5e4112331665da4dfe57affd.zip gcc-484db665a35edd7c5e4112331665da4dfe57affd.tar.gz gcc-484db665a35edd7c5e4112331665da4dfe57affd.tar.bz2 |
invoke.texi (-fshrink-wrap): Document.
* doc/invoke.texi (-fshrink-wrap): Document.
* opts.c (default_options_table): Add it.
* common.opt (fshrink-wrap): Add.
* function.c (emit_return_into_block): Remove useless declaration.
(record_hard_reg_uses_1, record_hard_reg_uses, frame_required_for_rtx,
requires_stack_frame_p, gen_return_pattern): New static functions.
(emit_return_into_block): New arg simple_p. All callers changed.
Use gen_return_pattern.
(thread_prologue_and_epilogue_insns): Implement shrink-wrapping.
* config/i386/i386.md (return): Expand into a simple_return.
(simple_return): New expander):
(simple_return_internal, simple_return_internal_long,
simple_return_pop_internal_long, simple_return_indirect_internal):
Renamed from return_internal, return_internal_long,
return_pop_internal_long and return_indirect_internal; changed to use
simple_return.
* config/i386/i386.c (ix86_expand_epilogue): Adjust to expand
simple returns.
(ix86_pad_returns): Likewise.
* function.h (struct rtl_data): Add member shrink_wrapped.
* cfgcleanup.c (outgoing_edges_match): If shrink-wrapped, edges that
are not jumps or sibcalls can't be compared.
* gcc.target/i386/sw-1.c: New test.
From-SVN: r179553
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/invoke.texi | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index c92c6b2..e0df77a 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -396,10 +396,10 @@ Objective-C and Objective-C++ Dialects}. -fschedule-insns -fschedule-insns2 -fsection-anchors @gol -fselective-scheduling -fselective-scheduling2 @gol -fsel-sched-pipelining -fsel-sched-pipelining-outer-loops @gol --fsignaling-nans -fsingle-precision-constant -fsplit-ivs-in-unroller @gol --fsplit-wide-types -fstack-protector -fstack-protector-all @gol --fstrict-aliasing -fstrict-overflow -fthread-jumps -ftracer @gol --ftree-bit-ccp @gol +-fshrink-wrap -fsignaling-nans -fsingle-precision-constant @gol +-fsplit-ivs-in-unroller -fsplit-wide-types -fstack-protector @gol +-fstack-protector-all -fstrict-aliasing -fstrict-overflow @gol +-fthread-jumps -ftracer -ftree-bit-ccp @gol -ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-copy-prop @gol -ftree-copyrename -ftree-dce -ftree-dominator-opts -ftree-dse @gol -ftree-forwprop -ftree-fre -ftree-loop-if-convert @gol @@ -6880,6 +6880,12 @@ This option has no effect until one of @option{-fselective-scheduling} or When pipelining loops during selective scheduling, also pipeline outer loops. This option has no effect until @option{-fsel-sched-pipelining} is turned on. +@item -fshrink-wrap +@opindex fshrink-wrap +Emit function prologues only before parts of the function that need it, +rather than at the top of the function. This flag is enabled by default at +@option{-O} and higher. + @item -fcaller-saves @opindex fcaller-saves Enable values to be allocated in registers that will be clobbered by |