This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[wwwdocs] Update changes-3.4.html
- From: Jan Hubicka <jh at suse dot cz>
- To: gcc-patches at gcc dot gnu dot org
- Date: Wed, 31 Dec 2003 11:24:20 +0100
- Subject: [wwwdocs] Update changes-3.4.html
? htdocs/pp1
? htdocs/gcc-3.2/doc
? htdocs/gcc-3.2/q
? htdocs/gcc-3.4/1
? htdocs/gcc-3.4/chl
Index: htdocs/gcc-3.4/changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-3.4/changes.html,v
retrieving revision 1.78
diff -c -3 -p -r1.78 changes.html
*** htdocs/gcc-3.4/changes.html 23 Dec 2003 19:47:33 -0000 1.78
--- htdocs/gcc-3.4/changes.html 31 Dec 2003 10:19:45 -0000
***************
*** 38,43 ****
--- 38,76 ----
<li>The configure option <code>--enable-threads=pthreads</code> has
been removed; use <code>--enable-threads=posix</code> instead,
which should have the same effect.</li>
+ <li>Code size estimates used by inlining heuristics for C, Objective-C, C++
+ and Java have been redesigned significantly. As a result the parameters
+ of <code>-finline-insns</code>,
+ <code>--param max-inline-insns-single</code>
+ and <code>--param max-inline-insns-auto</code> needs to be re-tested.</li>
+ <li><code>--param max-inline-slope</code>
+ and <code>--param min-inline-insns</code>
+ has been removed; they are not needed for new bottom-up inlining
+ heuristics.</li>
+ <li>Unit at a time compilation mode has several compatibility issues:
+ <ul>
+ <li>Function, variable and top-level asm statements order is changed now.
+ Code relying on some particular ordering needs to be updated. Majority
+ of such top-level asm statements can be replaced by section attributes.
+ <li>Unreferenced static variables and functions are removed.
+ This may result in undefined references when asm statement is referring
+ to the variable/function directly. Either the variable/function shall
+ be listed in asm statement operand or in the case of top-level asm
+ statements the attribute <code>used</code> shall be used to force
+ function/variable to be always output and considered as a possible
+ entry point to the unit.
+
+ For variables the attribute is accepted only by GCC 3.4 and newer, while
+ for earlier versions it is sufficient to use <code>unused</code> to
+ silence warning about variable not being referenced. The preprocessor
+ needs to be used for code portable across different GCC versions.
+ <li>Static functions now can use non-standard passing conventions that may
+ break asm statements calling functions directly. Again the attribute
+ <code>used</code> shall be used to prevent this behavior.
+ </ul>
+ As a temporary workaround, <code>-fno-unit-at-a-time</code> can be used,
+ but this mode may not be supported by future relases of GCC.
+ </li>
</ul>
<h2>General Optimizer Improvements</h2>
***************
*** 54,65 ****
<li>Coverage file format has been redesigned.</li>
<li><code>gcov</code> coverage tool has been improved.</li>
<li><code>make profiledbootstrap</code> available to build a faster
! compiler.</li>
</ul>
</li>
! <li>Inlining heuristics for C, Objective-C, C++ and Java have been
! improved significantly. Call graph based out-of-order inlining
! is now enabled by default at <code>-O2</code>.</li>
</ul>
--- 87,127 ----
<li>Coverage file format has been redesigned.</li>
<li><code>gcov</code> coverage tool has been improved.</li>
<li><code>make profiledbootstrap</code> available to build a faster
! compiler.
!
! Experiments made on i386 hardware shown 11% speedup on
! <code>-O0<code> and 7.5% speedup on <code>-O2</code> compilation of
! large C++ testcase.</li>
! <li>Value profiling enabled via <code>-fprofile-values</code></li>
! <li>Value profile transformations pass enabled via <code>-fvpt</code>
! aimed to optimize some code sequences by knowing value ranges or
! other fact about the operands. At the moment conversion of
! expensive divisions into cheaper operations is implemented.</li>
! <li>New <code>-fprofile-generate</code> and <code>-fprofile-use</code>
! command line options to simplify use of profile feedback.</li>
! </ul>
! </li>
! <li>New unit at a time compilation mode for C, Objective-C, C++ and Java enabled via
! <code>-funit-at-a-time</code> (implied by </code>-O2</code>). In
! this mode whole file is parsed first and optimized later. Following
! basic inter-procedural optimizations are implemented:
! <ul>
! <li>Removal of unreachable functions and variables</li>
! <li>Discovery of local functions (functions with static linkage and whose address
! is never taken)</li>
! <li>On i386, the local functions use register passing conventions</li>
! <li>Reordering of functions in topological order of call graph to enable
! better propagation of optimizing hints (such as stack alignment needed
! by function) in back end.</li>
! <li>Call graph based out-of-order inlining heuristics allowing to limit
! overall compilation unit growth (<code>--param inline-unit-growth</code>)</li>
</ul>
+ Overall unit at a time mode cause 1.3% for SPECint2000 benchmark on i386 architecture.
</li>
! <li>More realistic code size estimates used by inlining for C, Objective-C,
! C++ and Java. The growth of large functions can now be limited via
! <code>--param large-function-insns</code>
! and </code>--param large-function-growth</code></li>
</ul>