This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFA; Add option to control combine-stack-adjustments pass


On Fri, Oct 1, 2010 at 12:41 PM, Nick Clifton <nickc@redhat.com> wrote:
> Hi Guys,
>
> ?I recently ran into a problem with GCC's combine stack adjustment
> ?pass. ?(It is breaking the relationship between CC0-setter and
> ?CC0-user). ?I have not tracked down the exact cause of this problem
> ?yet, but I did find it odd that there was no way to control the use of
> ?the optimization from the command line. ?So I have created the patch
> ?below.
>
> ?This patch adds a new command line option:
>
> ? ?-fcombine-stack-adjustments
>
> ?which is enabled by default at -O1 and greater and which controls the
> ?operation of the combine stack adjustments pass.
>
> ?Tested without regressions on an i686-pc-linux-gnu target.
>
> ?OK to apply ?
>
> Cheers
> ?Nick
>
> gcc/ChangeLog
> 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.

doc/invoke.texi

Ok with that change.

Thanks,
Richard.

> Index: gcc/doc/invoke.texi
> ===================================================================
> --- gcc/doc/invoke.texi (revision 164830)
> +++ gcc/doc/invoke.texi (working copy)
> @@ -334,7 +334,8 @@
> ?-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 @@
>
> ?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
> Index: gcc/opts.c
> ===================================================================
> --- gcc/opts.c ?(revision 164830)
> +++ gcc/opts.c ?(working copy)
> @@ -801,6 +801,7 @@
> ? flag_tree_copy_prop = opt1;
> ? flag_tree_sink = opt1;
> ? flag_tree_ch = opt1;
> + ?flag_combine_stack_adjustments = opt1;
>
> ? /* -O2 optimizations. ?*/
> ? opt2 = (optimize >= 2);
> Index: gcc/common.opt
> ===================================================================
> --- gcc/common.opt ? ? ?(revision 164830)
> +++ gcc/common.opt ? ? ?(working copy)
> @@ -640,6 +640,10 @@
> ?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
> Index: gcc/combine-stack-adj.c
> ===================================================================
> --- gcc/combine-stack-adj.c ? ? (revision 164830)
> +++ gcc/combine-stack-adj.c ? ? (working copy)
> @@ -546,7 +546,7 @@
> ?static bool
> ?gate_handle_stack_adjustments (void)
> ?{
> - ?return (optimize > 0);
> + ?return flag_combine_stack_adjustments;
> ?}
>
> ?static unsigned int
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]