[Compbench-devel] CompBenchmarks++/libcompbenchmarks/share/KB/gxx/3.0.x description.xml, 1.2, 1.3
Brought to you by:
xfred
From: Frederic T. <xf...@us...> - 2007-04-16 16:53:27
|
Update of /cvsroot/compbench/CompBenchmarks++/libcompbenchmarks/share/KB/gxx/3.0.x In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv5805 Modified Files: description.xml Log Message: Profile related options added. Index: description.xml =================================================================== RCS file: /cvsroot/compbench/CompBenchmarks++/libcompbenchmarks/share/KB/gxx/3.0.x/description.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** description.xml 9 Apr 2007 10:12:06 -0000 1.2 --- description.xml 16 Apr 2007 16:53:05 -0000 1.3 *************** *** 13,16 **** --- 13,18 ---- <options> + <include file="gxx/2.95.x/description.xml"/> + <option id="ssa"> <value>-fssa</value> *************** *** 24,30 **** According to -fdce description, this is probably an experimental feature. </editor-description> </option> ! <option id="fdce"> <value>-fdce</value> <short-description>Dead-code elimination in SSA form</short-description> --- 26,36 ---- According to -fdce description, this is probably an experimental feature. </editor-description> + <logic> + <logic-option-implied-by id="O2"/> + <logic-option-implied-by id="O3"/> + </logic> </option> ! <option id="dce"> <value>-fdce</value> <short-description>Dead-code elimination in SSA form</short-description> *************** *** 33,36 **** --- 39,47 ---- -fssa, this is an experimental feature. </editor-description> + <logic> + <logic-option-implied-by id="O2"/> + <logic-option-implied-by id="O3"/> + <logic-option-requires id="ssa"/> + </logic> </option> *************** *** 53,56 **** --- 64,71 ---- If n is not specified, use a machine-dependent default. </editor-description> + <logic> + <logic-option-exclusive on="alignment-disabled" value="1"/> + <logic-option-implied-by id="Os"/> + </logic> </option> *************** *** 73,76 **** --- 88,96 ---- If n is not specified, use a machine-dependent default. </editor-description> + <logic> + <logic-option-exclusive on="alignment-disabled" value="0"/> + <logic-option-implied-by id="O2"/> + <logic-option-implied-by id="O3"/> + </logic> </option> *************** *** 90,93 **** --- 110,117 ---- very likely to be 1, meaning no alignment. </editor-description> + <logic> + <logic-option-exclusive on="alignment-disabled" value="1"/> + <logic-option-implied-by id="Os"/> + </logic> </option> *************** *** 107,110 **** --- 131,139 ---- very likely to be 1, meaning no alignment. </editor-description> + <logic> + <logic-option-exclusive on="alignment-disabled" value="0"/> + <logic-option-implied-by id="O2"/> + <logic-option-implied-by id="O3"/> + </logic> </option> *************** *** 120,123 **** --- 149,156 ---- If n is not specified, use a machine-dependent default. </editor-description> + <logic> + <logic-option-exclusive on="alignment-disabled" value="1"/> + <logic-option-implied-by id="Os"/> + </logic> </option> *************** *** 133,136 **** --- 166,174 ---- If n is not specified, use a machine-dependent default. </editor-description> + <logic> + <logic-option-exclusive on="alignment-disabled" value="0"/> + <logic-option-implied-by id="O2"/> + <logic-option-implied-by id="O3"/> + </logic> </option> *************** *** 146,149 **** --- 184,397 ---- If n is not specified, use a machine-dependent default. </editor-description> + <logic> + <logic-option-exclusive on="alignment-disabled" value="1"/> + <logic-option-implied-by id="Os"/> + </logic> + </option> + + <option id="align-jumps"> + <value>-falign-jumps</value> + <short-description>Enable target branch default alignment</short-description> + <editor-description> + Align branch targets to a power-of-two boundary, for branch targets + where the targets can only be reached by jumping, skipping up to n + bytes like -falign-functions. In this case, no dummy operations + need be executed. + + If n is not specified, use a machine-dependent default. + </editor-description> + <logic> + <logic-option-exclusive on="alignment-disabled" value="0"/> + <logic-option-implied-by id="O2"/> + <logic-option-implied-by id="O3"/> + </logic> + </option> + + <!-- !!! missing --> + + <option id="reduce-all-givs"> + <value>-freduce-all-givs</value> + <short-description>Forces all general-induction variables in loops to be strength-reduced.</short-description> + <editor-description> + Forces all general-induction variables in loops to be strength- + reduced. + + Note: When compiling programs written in Fortran, -fmove-all-movables + and -freduce-all-givs are enabled by default when you use the + optimizer. + + These options may generate better or worse code; results are highly + dependent on the structure of loops within the source code. + + These two options are intended to be removed someday, once they + have helped determine the efficacy of various approaches to + improving loop optimizations. + + Please let us (gc...@gc... and fo...@gn...) know how + use of these options affects the performance of your production + code. We're very interested in code that runs slower when these + options are enabled. + </editor-description> + <logic> + <logic-option-implied-by id="O2"/> + <logic-option-implied-by id="O3"/> + </logic> + </option> + + <option id="strict-aliasing"> + <value>-fstrict-aliasing</value> + <short-description>Assume the strictest aliasing rules to be applicable</short-description> + <editor-description> + Allows the compiler to assume the strictest aliasing rules + applicable to the language being compiled. For C (and C++), this + activates optimizations based on the type of expressions. In + particular, an object of one type is assumed never to reside at the same + address as an object of a different type, unless the types are + almost the same. For example, an "unsigned int" can alias an + "int", but not a "void*" or a "double". A character type may alias + any other type. + </editor-description> + <logic> + <logic-option-implied-by id="O2"/> + <logic-option-implied-by id="O3"/> + </logic> + </option> + + <option id="gcse"> + <value>-fgcse</value> + <short-description>Global common subexpression elimination pass</short-description> + <editor-description> + Perform a global common subexpression elimination pass. This pass + also performs global constant and copy propagation. + </editor-description> + <logic> + <logic-option-implied-by id="O2"/> + <logic-option-implied-by id="O3"/> + </logic> + </option> + + <option id="rename-registers"> + <value>-frename-registers</value> + <short-description>Attempt to avoid false dependencies in scheduled code</short-description> + <editor-description> + Attempt to avoid false dependencies in scheduled code by making use + of registers left over after register allocation. This optimization + will most benefit processors with lots of registers. It can, + however, make debugging impossible, since variables will no longer + stay in a ``home register''. + </editor-description> + <logic> + <logic-option-implied-by id="O2"/> + <logic-option-implied-by id="O3"/> + </logic> + </option> + + <option id="mcpu-486"> + <value>-mcpu=i486</value> + <short-description>486 Optimizations</short-description> + <editor-description> + Assume the defaults for the machine type cpu-type when scheduling + instructions. The choices for cpu-type are i386, i486, i586, i686, + pentium, pentiumpro, k6, and athlon + + While picking a specific cpu-type will schedule things appropri- + ately for that particular chip, the compiler will not generate any + code that does not run on the i386 without the -march=cpu-type + option being used. i586 is equivalent to pentium and i686 is + equivalent to pentiumpro. k6 is the AMD chip as opposed to the + Intel ones. + </editor-description> + <logic> + <logic-option-exclusive on="kb-option-cpu"/> + </logic> + </option> + + <option id="mcpu-pentium"> + <value>-mcpu=pentium</value> + <short-description>Pentium optimizations</short-description> + <editor-description copy-id="mcpu-486"/> + <logic> + <logic-option-exclusive on="kb-option-cpu"/> + </logic> + </option> + + <option id="mcpu-pentiumpro"> + <value>-mcpu=pentiumpro</value> + <short-description>Pentium Pro optimizations</short-description> + <editor-description copy-id="mcpu-486"/> + <logic> + <logic-option-exclusive on="kb-option-cpu"/> + </logic> + </option> + + <option id="mcpu-k6"> + <value>-mcpu=k6</value> + <short-description>AMD K6 optimizations</short-description> + <editor-description copy-id="mcpu-486"/> + <logic> + <logic-option-exclusive on="kb-option-cpu"/> + </logic> + </option> + + <option id="profile-generate"> + <value>-fprofile-arcs</value> + <compilation type="first-pass"/> + <short-description>Instrument arcs during compilation</short-description> + <editor-description> + Here's GCC 3.1.x help (3.0.x's not given) : + + Instrument arcs during compilation to generate coverage data or for + profile-directed block ordering. During execution the program + records how many times each branch is executed and how many times + it is taken. When the compiled program exits it saves this data to + a file called sourcename.da for each source file. + + For profile-directed block ordering, compile the program with + -fprofile-arcs plus optimization and code generation options, generate + the arc profile information by running the program on a + selected workload, and then compile the program again with the same + optimization and code generation options plus -fbranch-probabilities. + + The other use of -fprofile-arcs is for use with "gcov", when it is + used with the -ftest-coverage option. GCC supports two methods of + determining code coverage: the options that support "gcov", and + options -a and -ax, which write information to text files. The + options that support "gcov" do not need to instrument every arc in + the program, so a program compiled with them runs faster than a + program compiled with -a, which adds instrumentation code to every + basic block in the program. The tradeoff: since "gcov" does not + have execution counts for all branches, it must start with the execution + counts for the instrumented branches, and then iterate over + the program flow graph until the entire graph has been solved. + Hence, "gcov" runs a little more slowly than a program which uses + information from -a and -ax. + + With -fprofile-arcs, for each function of your program GCC creates + a program flow graph, then finds a spanning tree for the graph. + Only arcs that are not on the spanning tree have to be instrumented: + the compiler adds code to count the number of times that + these arcs are executed. When an arc is the only exit or only + entrance to a block, the instrumentation code can be added to the + block; otherwise, a new basic block must be created to hold the + instrumentation code. + + This option makes it possible to estimate branch probabilities and + to calculate basic block execution counts. In general, basic block + execution counts as provided by -a do not give enough information + to estimate all branch probabilities. + </editor-description> + <logic/> + </option> + + <option id="profile-use"> + <value>-fbranch-probabilities</value> + <compilation type="second-pass" first-pass="profile-generate"/> + <short-description>Optimizations based on path guessing</short-description> + <editor-description> + After running a program compiled with -fprofile-arcs, you can compile it a + second time using -fbranch-probabilities, to improve + optimizations based on guessing the path a branch might take. + </editor-description> + <logic/> </option> |