OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [NEWS] - Blame information for rev 21

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 21 jlechner
This file contains information about GCC releases which has been generated
2
automatically from the online release notes.  It covers releases of GCC
3
(and the former EGCS project) since EGCS 1.0, on the line of development
4
that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
5
see ONEWS.
6
 
7
======================================================================
8
http://gcc.gnu.org/gcc-4.1/index.html
9
 
10
                           GCC 4.1 Release Series
11
 
12
   May 24, 2006
13
 
14
   The  [1]GNU project and the GCC developers are pleased to announce the
15
   release of GCC 4.1.1.
16
 
17
   This release is a bug-fix release, containing fixes for regressions in
18
   GCC 4.1.0 relative to previous releases of GCC.
19
 
20
   February 28, 2006
21
 
22
   The  [2]GNU project and the GCC developers are pleased to announce the
23
   release of GCC 4.1.0.
24
 
25
Release History
26
 
27
   GCC 4.1.1
28
          May 24, 2006 ([3]changes)
29
 
30
   GCC 4.1.0
31
          February 28, 2006 ([4]changes)
32
 
33
References and Acknowledgements
34
 
35
   GCC  used  to  stand  for  the  GNU C Compiler, but since the compiler
36
   supports  several  other languages aside from C, it now stands for the
37
   GNU Compiler Collection.
38
 
39
   A  list  of [5]successful builds is updated as new information becomes
40
   available.
41
 
42
   The  GCC  developers would like to thank the numerous people that have
43
   contributed  new  features, improvements, bug fixes, and other changes
44
   as well as test results to GCC. This [6]amazing group of volunteers is
45
   what makes GCC successful.
46
 
47
   For  additional  information  about  GCC  please  refer  to the [7]GCC
48
   project web site or contact the [8]GCC development mailing list.
49
 
50
   To  obtain  GCC  please  use  [9]our  mirror sites, one of the [10]GNU
51
   mirror sites, or [11]our SVN server.
52
     _________________________________________________________________
53
 
54
   Please  send FSF & GNU inquiries & questions to [12]gnu@gnu.org. There
55
   are also [13]other ways to contact the FSF.
56
 
57
   These pages are maintained by [14]the GCC team.
58
 
59
 
60
    For  questions  related  to the use of GCC, please consult these web
61
    pages    and    the    [15]GCC   manuals.   If   that   fails,   the
62
    [16]gcc-help@gcc.gnu.org mailing list might help.
63
    Please  send  comments on these web pages and the development of GCC
64
    to    our    developer    mailing   list   at   [17]gcc@gnu.org   or
65
    [18]gcc@gcc.gnu.org. All of our lists have [19]public archives.
66
 
67
   Copyright  (C)  Free  Software Foundation, Inc., 51 Franklin St, Fifth
68
   Floor, Boston, MA 02110, USA.
69
 
70
   Verbatim  copying and distribution of this entire article is permitted
71
   in any medium, provided this notice is preserved.
72
 
73
   Last modified 2006-05-24 [20]Valid XHTML 1.0
74
 
75
References
76
 
77
   1. http://www.gnu.org/
78
   2. http://www.gnu.org/
79
   3. http://gcc.gnu.org/gcc-4.1/changes.html
80
   4. http://gcc.gnu.org/gcc-4.1/changes.html
81
   5. http://gcc.gnu.org/gcc-4.1/buildstat.html
82
   6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
83
   7. http://gcc.gnu.org/index.html
84
   8. mailto:gcc@gcc.gnu.org
85
   9. http://gcc.gnu.org/mirrors.html
86
  10. http://www.gnu.org/order/ftp.html
87
  11. http://gcc.gnu.org/svn.html
88
  12. mailto:gnu@gnu.org
89
  13. http://www.gnu.org/home.html#ContactInfo
90
  14. http://gcc.gnu.org/about.html
91
  15. http://gcc.gnu.org/onlinedocs/
92
  16. mailto:gcc-help@gcc.gnu.org
93
  17. mailto:gcc@gnu.org
94
  18. mailto:gcc@gcc.gnu.org
95
  19. http://gcc.gnu.org/lists.html
96
  20. http://validator.w3.org/check/referer
97
======================================================================
98
http://gcc.gnu.org/gcc-4.1/changes.html
99
 
100
                           GCC 4.1 Release Series
101
                      Changes, New Features, and Fixes
102
 
103
Caveats
104
 
105
General Optimizer Improvements
106
 
107
     * GCC  now has infrastructure for inter-procedural optimizations and
108
       the following inter-procedural optimizations are implemented:
109
          + Profile  guided  inlining. When doing profile feedback guided
110
            optimization,  GCC  can  now  use  the profile to make better
111
            informed  decisions  on  whether  inlining  of  a function is
112
            profitable  or not. This means that GCC will no longer inline
113
            functions at call sites that are not executed very often, and
114
            that  functions  at  hot  call  sites  are  more likely to be
115
            inlined.
116
            A  new parameter min-inline-recursive-probability is also now
117
            available  to  throttle  recursive inlining of functions with
118
            small average recursive depths.
119
          + Discovery of pure and const functions, a form of side-effects
120
            analysis.  While  older GCC releases could also discover such
121
            special  functions,  the  new  IPA-based pass runs earlier so
122
            that  the  results are available to more optimizers. The pass
123
            is also simply more powerful than the old one.
124
          + Analysis  of  references  to static variables and type escape
125
            analysis, also forms of side-effects analysis. The results of
126
            these passes allow the compiler to be less conservative about
127
            call-clobbered variables and references. This results in more
128
            redundant   loads  being  eliminated  and  in  making  static
129
            variables candidates for register promotion.
130
          + Improvement  of RTL-based alias analysis. The results of type
131
            escape analysis are fed to the RTL type-based alias analyzer,
132
            allowing it to disambiguate more memory references.
133
          + Interprocedural constant propagation and function versioning.
134
            This pass looks for functions that are always called with the
135
            same   constant  value  for  one  or  more  of  the  function
136
            arguments,   and   propagates   those  constants  into  those
137
            functions.
138
          + GCC  will  now  eliminate  static  variables  whose usage was
139
            optimized out.
140
          + -fwhole-program  --combine  can  now  be  used  to  make  all
141
            functions   in   program   static   allowing   whole  program
142
            optimization.  As  an  exception,  the  main function and all
143
            functions  marked  with  the new externally_visible attribute
144
            are  kept  global  so  that  programs  can  link with runtime
145
            libraries.
146
     * GCC can now do a form of partial dead code elimination (PDCE) that
147
       allows code motion of expressions to the paths where the result of
148
       the  expression  is  actually needed. This is not always a win, so
149
       the  pass has been limited to only consider profitable cases. Here
150
       is an example:
151
    int foo (int *, int *);
152
    int
153
    bar (int d)
154
    {
155
      int a, b, c;
156
      b = d + 1;
157
      c = d + 2;
158
      a = b + c;
159
      if (d)
160
        {
161
          foo (&b, &c);
162
          a = b + c;
163
        }
164
      printf ("%d\n", a);
165
    }
166
               The  a  =  b  +  c  can  be  sunk  to  right  before  the  printf.
167
       Normal  code  sinking will not do this, it will sink the first one
168
       above  into  the  else-branch of the conditional jump, which still
169
       gives you two copies of the code.
170
     * GCC  now  has  a  value  range  propagation  pass. This allows the
171
       compiler  to  eliminate bounds checks and branches. The results of
172
       the   pass   can   also  be  used  to  accurately  compute  branch
173
       probabilities.
174
     * The  pass  to  convert  PHI nodes to straight-line code (a form of
175
       if-conversion for GIMPLE) has been improved significantly. The two
176
       most   significant  improvements  are  an  improved  algorithm  to
177
       determine  the order in which the PHI nodes are considered, and an
178
       improvement  that  allow  the  pass  to consider if-conversions of
179
       basic blocks with more than two predecessors.
180
     * Alias  analysis  improvements.  GCC  can now differentiate between
181
       different  fields  of  structures  in  Tree-SSA's virtual operands
182
       form. This lets stores/loads from non-overlapping structure fields
183
       not  conflict.  A  new  algorithm  to  compute  points-to sets was
184
       contributed  that  can  allows  GCC to see now that p->a and p->b,
185
       where  p  is a pointer to a structure, can never point to the same
186
       field.
187
     * Various enhancements to auto-vectorization:
188
          + Incrementally preserve SSA form when vectorizing.
189
          + Incrementally preserve loop-closed form when vectorizing.
190
          + Improvements  to  peeling for alignment: generate better code
191
            when  the misalignment of an access is known at compile time,
192
            or  when  different  accesses  are  known  to  have  the same
193
            misalignment,  even  if  the  misalignment  amount  itself is
194
            unknown.
195
          + Consider dependence distance in the vectorizer.
196
          + Externalize  generic parts of data reference analysis to make
197
            this analysis available to other passes.
198
          + Vectorization of conditional code.
199
          + Reduction support.
200
     * GCC  can now partition functions in sections of hot and cold code.
201
       This   can   significantly   improve  performance  due  to  better
202
       instruction  cache locality. This feature works best together with
203
       profile feedback driven optimization.
204
     * A  new  pass to avoid saving of unneeded arguments to the stack in
205
       vararg  functions  if the compiler can prove that they will not be
206
       needed.
207
     * Transition  of  basic block profiling to tree level implementation
208
       has  been completed. The new implementation should be considerably
209
       more  reliable  (hopefully  avoiding  profile mismatch errors when
210
       using  -fprofile-use or -fbranch-probabilities) and can be used to
211
       drive higher level optimizations, such as inlining.
212
       The  -ftree-based-profiling  command  line  option was removed and
213
       -fprofile-use  now  implies disabling old RTL level loop optimizer
214
       (-fno-loop-optimize).    Speculative    prefetching   optimization
215
       (originally enabled by -fspeculative-prefetching) was removed.
216
 
217
New Languages and Language specific improvements
218
 
219
  C and Objective-C
220
 
221
     * The  old Bison-based C and Objective-C parser has been replaced by
222
       a new, faster hand-written recursive-descent parser.
223
 
224
  Ada
225
 
226
     * The build infrastructure for the Ada runtime library and tools has
227
       been  changed  to  be better integrated with the rest of the build
228
       infrastructure  of GCC. This should make doing cross builds of Ada
229
       a bit easier.
230
 
231
  C++
232
 
233
     * ARM-style  name-injection  of friend declarations is no longer the
234
       default. For example:
235
          struct S {
236
            friend void f();
237
          };
238
 
239
          void g() { f(); }
240
       will  not  be accepted; instead a declaration of f will need to be
241
       present  outside  of  the  scope  of S. The new -ffriend-injection
242
       option will enable the old behavior.
243
     * The   (undocumented)  extension  which  permitted  templates  with
244
       default arguments to be bound to template template parameters with
245
       fewer  parameters  has been deprecated, and will be removed in the
246
       next major release of G++. For example:
247
       template