aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGolovanevsky Olga <olga@il.ibm.com>2007-12-13 11:11:57 +0000
committerOlga Golovanevsky <olga@gcc.gnu.org>2007-12-13 11:11:57 +0000
commit5bb06e1856e99aed6db9e0aef34e4bd02721443c (patch)
tree60b5db4b98b77ade3f5b287659a6d1ddac7cc95c
parentb446725a8ad50e83d6024dea0fea93a7be60506b (diff)
downloadgcc-5bb06e1856e99aed6db9e0aef34e4bd02721443c.zip
gcc-5bb06e1856e99aed6db9e0aef34e4bd02721443c.tar.gz
gcc-5bb06e1856e99aed6db9e0aef34e4bd02721443c.tar.bz2
invoke.texi (Optimiza Options): Document new -fipa-struct-reorg option and struct-reorg-cold-struct-ratio parameter.
2007-12-13 Golovanevsky Olga <olga@il.ibm.com> * doc/invoke.texi (Optimiza Options): Document new -fipa-struct-reorg option and struct-reorg-cold-struct-ratio parameter. From-SVN: r130890
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/doc/invoke.texi25
2 files changed, 29 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 00bf7c6..952bb9a7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-12-13 Golovanevsky Olga <olga@il.ibm.com>
+
+ * doc/invoke.texi (Optimiza Options): Document new -fipa-struct-reorg
+ option and struct-reorg-cold-struct-ratio parameter.
+
2007-12-13 Torbjorn Granlund <tege@swox.com>
* config/i386/i386.c (ix86_rtx_costs) [MULT]: Check op0 for
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 3376420..e8431da 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -329,7 +329,7 @@ Objective-C and Objective-C++ Dialects}.
-fgcse-sm -fif-conversion -fif-conversion2 -finline-functions @gol
-finline-functions-called-once -finline-limit=@var{n} @gol
-finline-small-functions -fipa-cp -fipa-marix-reorg -fipa-pta @gol
--fipa-pure-const -fipa-reference @gol
+-fipa-pure-const -fipa-reference -fipa-struct-reorg @gol
-fipa-type-escape -fivopts -fkeep-inline-functions -fkeep-static-consts @gol
-fmerge-all-constants -fmerge-constants -fmodulo-sched @gol
-fmodulo-sched-allow-regmoves -fmove-loop-invariants -fmudflap @gol
@@ -5707,6 +5707,20 @@ Discover which static variables do not escape cannot escape the
compilation unit.
Enabled by default at @option{-O} and higher.
+@item -fipa-struct-reorg
+@opindex fipa-struct-reorg
+Perform structure reorganization optimization, that change C-like structures
+layout in order to better utilize spatial locality. This transformation is
+affective for programs containing arrays of structures. Available in two
+compilation modes: profile-based (enabled with @option{-fprofile-generate})
+or static (which uses built-in heuristics). Require @option{-fipa-type-escape}
+to provide the safety of this transformation. It works only in whole program
+mode, so it requires @option{-fwhole-program} and @option{-combine} to be
+enabled. Structures considered @samp{cold} by this transformation are not
+affected (see @option{--param struct-reorg-cold-struct-ratio=@var{value}}).
+
+With this flag, the program debug info reflects a new structure layout.
+
@item -fipa-pta
@opindex fipa-pta
Perform interprocedural pointer analysis.
@@ -6643,6 +6657,15 @@ of bytes in instantiated fields to the number of bytes in the complete
structure exceeds this parameter, then block copies are not used. The
default is 75.
+@item struct-reorg-cold-struct-ratio
+The threshold ratio (as a percentage) between a structure frequency
+and the frequency of the hottest structure in the program. This parameter
+is used by struct-reorg optimization enabled by @option{-fipa-struct-reorg}.
+We say that if the ratio of a structure frequency, calculated by profiling,
+to the hottest structure frequency in the program is less than this
+parameter, then structure reorganization is not applied to this structure.
+The default is 10.
+
@item max-crossjump-edges
The maximum number of incoming edges to consider for crossjumping.
The algorithm used by @option{-fcrossjumping} is @math{O(N^2)} in