From e01c66ca3083cf998d7e2f568ff6227f86727499 Mon Sep 17 00:00:00 2001 From: Segher Boessenkool Date: Thu, 1 Oct 2015 08:40:01 +0200 Subject: [PATCH] bb-reorder: Documentation updates 2015-09-23 Segher Boessenkool * doc/invoke.texi (Optimization Options): Add -freorder-blocks-algorithm=. (Optimize Options) <-O>: Add -freorder-blocks. <-O2>: Remove -freorder-blocks. Add -freorder-blocks-algorithm=stc. <-Os>: Add -freorder-blocks-algorithm=stc as not enabled. <-freorder-blocks>: Also enabled at levels -O and -Os. <-freorder-blocks-algorithm=>: Document new option. From-SVN: r228319 --- gcc/ChangeLog | 10 ++++++++++ gcc/doc/invoke.texi | 23 +++++++++++++++++++---- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8bfff2b106f..d50f9916613 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2015-10-01 Segher Boessenkool + + * doc/invoke.texi (Optimization Options): Add + -freorder-blocks-algorithm=. + (Optimize Options) <-O>: Add -freorder-blocks. + <-O2>: Remove -freorder-blocks. Add -freorder-blocks-algorithm=stc. + <-Os>: Add -freorder-blocks-algorithm=stc as not enabled. + <-freorder-blocks>: Also enabled at levels -O and -Os. + <-freorder-blocks-algorithm=>: Document new option. + 2015-10-01 Segher Boessenkool * bb-reorder.c (reorder_basic_blocks): Use the algorithm selected diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index c19be78943a..ebfaaa132fa 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -430,6 +430,7 @@ Objective-C and Objective-C++ Dialects}. -fprofile-use -fprofile-use=@var{path} -fprofile-values @gol -fprofile-reorder-functions @gol -freciprocal-math -free -frename-registers -freorder-blocks @gol +-freorder-blocks-algorithm=@var{algorithm} @gol -freorder-blocks-and-partition -freorder-functions @gol -frerun-cse-after-loop -freschedule-modulo-scheduled-loops @gol -frounding-math -fsched2-use-superblocks -fsched-pressure @gol @@ -7689,6 +7690,7 @@ compilation time. -fipa-reference @gol -fmerge-constants @gol -fmove-loop-invariants @gol +-freorder-blocks @gol -fshrink-wrap @gol -fsplit-wide-types @gol -ftree-bit-ccp @gol @@ -7745,7 +7747,8 @@ also turns on the following optimization flags: -foptimize-strlen @gol -fpartial-inlining @gol -fpeephole2 @gol --freorder-blocks -freorder-blocks-and-partition -freorder-functions @gol +-freorder-blocks-algorithm=stc @gol +-freorder-blocks-and-partition -freorder-functions @gol -frerun-cse-after-loop @gol -fsched-interblock -fsched-spec @gol -fschedule-insns -fschedule-insns2 @gol @@ -7782,8 +7785,8 @@ optimizations designed to reduce code size. @option{-Os} disables the following optimization flags: @gccoptlist{-falign-functions -falign-jumps -falign-loops @gol --falign-labels -freorder-blocks -freorder-blocks-and-partition @gol --fprefetch-loop-arrays} +-falign-labels -freorder-blocks -freorder-blocks-algorithm=stc @gol +-freorder-blocks-and-partition -fprefetch-loop-arrays} @item -Ofast @opindex Ofast @@ -9134,7 +9137,19 @@ The default is @option{-fguess-branch-probability} at levels Reorder basic blocks in the compiled function in order to reduce number of taken branches and improve code locality. -Enabled at levels @option{-O2}, @option{-O3}. +Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}. + +@item -freorder-blocks-algorithm=@var{algorithm} +@opindex freorder-blocks-algorithm +Use the specified algorithm for basic block reordering. The +@var{algorithm} argument can be @samp{simple}, which does not increase +code size (except sometimes due to secondary effects like alignment), +or @samp{stc}, the ``software trace cache'' algorithm, which tries to +put all often executed code together, minimizing the number of branches +executed by making extra copies of code. + +The default is @samp{simple} at levels @option{-O}, @option{-Os}, and +@samp{stc} at levels @option{-O2}, @option{-O3}. @item -freorder-blocks-and-partition @opindex freorder-blocks-and-partition -- 2.30.2