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]

[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>
  
    


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