diff options
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/combine-stack-adj.c | 2 | ||||
-rw-r--r-- | gcc/common.opt | 4 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 10 | ||||
-rw-r--r-- | gcc/opts.c | 1 |
5 files changed, 24 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bb7a98bcba1..d17bdd376ba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2010-10-01 Nick Clifton <nickc@redhat.com> + + * common.opt: Add -fcombine-stack-adjustments. + * opts.c (decode_options): Enable -fcombine-stack-adjustments at + -O1. + * combine-stack-adj.c (gate_handle_stack_adjustments): Check + flag_combine_stack_adjustments. + * doc/invoke.texi: Document the new option. + 2010-10-01 Richard Guenther <rguenther@suse.de> PR tree-optimization/45854 diff --git a/gcc/combine-stack-adj.c b/gcc/combine-stack-adj.c index 96bfb3a633e..0a7b53e250b 100644 --- a/gcc/combine-stack-adj.c +++ b/gcc/combine-stack-adj.c @@ -546,7 +546,7 @@ combine_stack_adjustments_for_block (basic_block bb) static bool gate_handle_stack_adjustments (void) { - return (optimize > 0); + return flag_combine_stack_adjustments; } static unsigned int diff --git a/gcc/common.opt b/gcc/common.opt index 938b76e0c15..44a3de85c6a 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -640,6 +640,10 @@ fcheck-data-deps Common Report Var(flag_check_data_deps) Compare the results of several data dependence analyzers. +fcombine-stack-adjustments +Common Report Var(flag_combine_stack_adjustments) Optimization +Looks for opportunities to reduce stack adjustments and stack references. + fcommon Common Report Var(flag_no_common,0) Optimization Do not put uninitialized globals in the common section diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index df39e167938..057ae7d3be8 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -334,7 +334,8 @@ Objective-C and Objective-C++ Dialects}. -falign-labels[=@var{n}] -falign-loops[=@var{n}] -fassociative-math @gol -fauto-inc-dec -fbranch-probabilities -fbranch-target-load-optimize @gol -fbranch-target-load-optimize2 -fbtr-bb-exclusive -fcaller-saves @gol --fcheck-data-deps -fconserve-stack -fcprop-registers -fcrossjumping @gol +-fcheck-data-deps -fcombine-stack-adjustments -fconserve-stack @gol +-fcprop-registers -fcrossjumping @gol -fcse-follow-jumps -fcse-skip-blocks -fcx-fortran-rules @gol -fcx-limited-range @gol -fdata-sections -fdce -fdce @gol @@ -6618,6 +6619,13 @@ those which have no call-preserved registers to use instead. Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}. +@item -fcombine-stack-adjustments +@opindex fcombine-stack-adjustments +Tracks stack adjustments (pushes and pops) and stack memory references +and then tries to find ways to combine them. + +Enabled by default at @option{-O1} and higher. + @item -fconserve-stack @opindex fconserve-stack Attempt to minimize stack usage. The compiler will attempt to use less diff --git a/gcc/opts.c b/gcc/opts.c index 2b2071ef594..88321b55a25 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -801,6 +801,7 @@ decode_options (unsigned int argc, const char **argv, flag_tree_copy_prop = opt1; flag_tree_sink = opt1; flag_tree_ch = opt1; + flag_combine_stack_adjustments = opt1; /* -O2 optimizations. */ opt2 = (optimize >= 2); |