-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathNEWS
11279 lines (9815 loc) · 491 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
This file contains information about GCC releases which has been generated
automatically from the online release notes. It covers releases of GCC
(and the former EGCS project) since EGCS 1.0, on the line of development
that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
see ONEWS.
======================================================================
http://gcc.gnu.org/gcc-4.5/index.html
GCC 4.5 Release Series
Dec 16, 2010
The [1]GNU project and the GCC developers are pleased to announce the
release of GCC 4.5.2.
This release is a bug-fix release, containing fixes for regressions in
GCC 4.5.1 relative to previous releases of GCC.
Release History
GCC 4.5.2
Dec 16, 2010 ([2]changes)
GCC 4.5.1
Jul 31, 2010 ([3]changes)
GCC 4.5.0
April 14, 2010 ([4]changes)
References and Acknowledgements
GCC used to stand for the GNU C Compiler, but since the compiler
supports several other languages aside from C, it now stands for the
GNU Compiler Collection.
A list of [5]successful builds is updated as new information becomes
available.
The GCC developers would like to thank the numerous people that have
contributed new features, improvements, bug fixes, and other changes as
well as test results to GCC. This [6]amazing group of volunteers is
what makes GCC successful.
For additional information about GCC please refer to the [7]GCC project
web site or contact the [8]GCC development mailing list.
To obtain GCC please use [9]our mirror sites or [10]our SVN server.
Please send FSF & GNU inquiries & questions to [11]gnu@gnu.org. There
are also [12]other ways to contact the FSF.
These pages are [13]maintained by the GCC team.
For questions related to the use of GCC, please consult these web
pages and the [14]GCC manuals. If that fails, the
[15]gcc-help@gcc.gnu.org mailing list might help.
Please send comments on these web pages and the development of GCC to
our developer list at [16]gcc@gcc.gnu.org. All of our lists have
[17]public archives.
Copyright (C) Free Software Foundation, Inc.
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
Last modified 2010-12-16 [18]Valid XHTML 1.0
References
1. http://www.gnu.org/
2. http://gcc.gnu.org/gcc-4.5/changes.html
3. http://gcc.gnu.org/gcc-4.5/changes.html
4. http://gcc.gnu.org/gcc-4.5/changes.html
5. http://gcc.gnu.org/gcc-4.5/buildstat.html
6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
7. http://gcc.gnu.org/index.html
8. mailto:gcc@gcc.gnu.org
9. http://gcc.gnu.org/mirrors.html
10. http://gcc.gnu.org/svn.html
11. mailto:gnu@gnu.org
12. http://www.gnu.org/home.html#ContactInfo
13. http://gcc.gnu.org/about.html
14. http://gcc.gnu.org/onlinedocs/
15. mailto:gcc-help@gcc.gnu.org
16. mailto:gcc@gcc.gnu.org
17. http://gcc.gnu.org/lists.html
18. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-4.5/changes.html
GCC 4.5 Release Series
Changes, New Features, and Fixes
Caveats
* GCC now requires the [1]MPC library in order to build. See the
[2]prerequisites page for version requirements.
* Support for a number of older systems and recently unmaintained or
untested target ports of GCC has been declared obsolete in GCC 4.5.
Unless there is activity to revive them, the next release of GCC
will have their sources permanently removed.
The following ports for individual systems on particular
architectures have been obsoleted:
+ IRIX releases before 6.5 (mips-sgi-irix5*,
mips-sgi-irix6.[0-4])
+ Solaris 7 (*-*-solaris2.7)
+ Tru64 UNIX releases before V5.1 (alpha*-dec-osf4*,
alpha-dec-osf5.0*)
+ Details for the IRIX, Solaris 7, and Tru64 UNIX obsoletions
can be found in the [3]announcement.
Support for the classic POWER architecture implemented in the
original RIOS and RIOS2 processors of the old IBM RS/6000 product
line has been obsoleted in the rs6000 port. This does not affect
the new generation Power and PowerPC architectures.
* Support has been removed for all the [4]configurations obsoleted in
GCC 4.4.
* Support has been removed for the protoize and unprotoize utilities,
obsoleted in GCC 4.4.
* Support has been removed for tuning for Itanium1 (Merced) variants.
Note that code tuned for Itanium2 should also run correctly on
Itanium1.
* GCC now generates unwind info also for epilogues. DWARF debuginfo
generated by GCC now uses more features of DWARF3 than it used to
do and also some DWARF4 features. GDB older than 7.0 is not able to
handle either of these, so to debug GCC 4.5 generated binaries or
libraries GDB 7.0 or later is needed. You can disable use of DWARF4
features with -gdwarf-3 -gstrict-dwarf options, or with -gdwarf-2
-gstrict-dwarf restrict GCC to just DWARF2 standard, but epilogue
unwind info is emitted unconditionally whenever unwind info is
emitted.
* On x86 targets, code containing floating-point calculations may run
significantly slower when compiled with GCC 4.5 in strict C99
conformance mode than they did with earlier GCC versions. This is
due to stricter standard conformance of the compiler and can be
avoided by using the option -fexcess-precision=fast; also see
[5]below.
* The function attribute noinline no longer prevents GCC from cloning
the function. A new attribute noclone has been introduced for this
purpose. Cloning a function means that it is duplicated and the new
copy is specialized for certain contexts (for example when a
parameter is a known constant).
General Optimizer Improvements
* The -save-temps now takes an optional argument. The -save-temps and
-save-temps=cwd switches write the temporary files in the current
working directory based on the original source file. The
-save-temps=obj switch will write files into the directory
specified with the -o option, and the intermediate filenames are
based on the output file. This will allow the user to get the
compiler intermediate files when doing parallel builds without two
builds of the same filename located in different directories from
interfering with each other.
* Debugging dumps are now created in the same directory as the object
file rather than in the current working directory. This allows the
user to get debugging dumps when doing parallel builds without two
builds of the same filename interfering with each other.
* GCC has been integrated with the [6]MPC library. This allows GCC to
evaluate complex arithmetic at compile time [7]more accurately. It
also allows GCC to evaluate calls to complex built-in math
functions having constant arguments and replace them at compile
time with their mathematically equivalent results. In doing so, GCC
can generate correct results regardless of the math library
implementation or floating point precision of the host platform.
This also allows GCC to generate identical results regardless of
whether one compiles in native or cross-compile configurations to a
particular target. The following built-in functions take advantage
of this new capability: cacos, cacosh, casin, casinh, catan,
catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan,
and ctanh. The float and long double variants of these functions
(e.g. csinf and csinl) are also handled.
* A new link-time optimizer has been added ([8]-flto). When this
option is used, GCC generates a bytecode representation of each
input file and writes it to special ELF sections in each object
file. When the object files are linked together, all the function
bodies are read from these ELF sections and instantiated as if they
had been part of the same translation unit. This enables
interprocedural optimizations to work across different files (and
even different languages), potentially improving the performance of
the generated code. To use the link-timer optimizer, -flto needs to
be specified at compile time and during the final link. If the
program does not require any symbols to be exported, it is possible
to combine -flto and the experimental [9]-fwhopr with
[10]-fwhole-program to allow the interprocedural optimizers to use
more aggressive assumptions.
* The automatic parallelization pass was enhanced to support
parallelization of outer loops.
* Automatic parallelization can be enabled as part of Graphite. In
addition to -ftree-parallelize-loops=, specify
-floop-parallelize-all to enable the Graphite-based optimization.
* The infrastructure for optimizing based on [11]restrict qualified
pointers has been rewritten and should result in code generation
improvements. Optimizations based on restrict qualified pointers
are now also available when using -fno-strict-aliasing.
* There is a new optimization pass that attempts to change prototype
of functions to avoid unused parameters, pass only relevant parts
of structures and turn arguments passed by reference to arguments
passed by value when possible. It is enabled by -O2 and above as
well as -Os and can be manually invoked using the new command-line
switch -fipa-sra.
* GCC now optimize exception handling code. In particular cleanup
regions that are proved to not have any effect are optimized out.
New Languages and Language specific improvements
All languages
* The -fshow-column option is now on by default. This means error
messages now have a column associated with them.
Ada
* Compilation of programs heavily using discriminated record types
with variant parts has been sped up and generates more compact
code.
* Stack checking now works reasonably well on most plaforms. In some
specific cases, stack overflows may still fail to be detected, but
a compile-time warning will be issued for these cases.
C family
* If a header named in a #include directive is not found, the
compiler exits immediately. This avoids a cascade of errors arising
from declarations expected to be found in that header being
missing.
* A new built-in function __builtin_unreachable() has been added that
tells the compiler that control will never reach that point. It may
be used after asm statements that terminate by transferring control
elsewhere, and in other places that are known to be unreachable.
* The -Wlogical-op option now warns for logical expressions such as
(c == 1 && c == 2) and (c != 1 || c != 2), which are likely to be
mistakes. This option is disabled by default.
* An asm goto feature has been added to allow asm statements that
jump to C labels.
* C++0x raw strings are supported for C++ and for C with -std=gnu99.
* The deprecated attribute now takes an optional string argument, for
example, __attribute__((deprecated("text string"))), that will be
printed together with the deprecation warning.
C
* The -Wenum-compare option, which warns when comparing values of
different enum types, now works for C. It formerly only worked for
C++. This warning is enabled by -Wall. It may be avoided by using a
type cast.
* The -Wcast-qual option now warns about casts which are unsafe in
that they permit const-correctness to be violated without further
warnings. Specifically, it warns about cases where a qualifier is
added when all the lower types are not const. For example, it warns
about a cast from char ** to const char **.
* The -Wc++-compat option is significantly improved. It issues new
warnings for:
+ Using C++ reserved operator names as identifiers.
+ Conversions to enum types without explicit casts.
+ Using va_arg with an enum type.
+ Using different enum types in the two branches of ?:.
+ Using ++ or -- on a variable of enum type.
+ Using the same name as both a struct, union or enum tag and a
typedef, unless the typedef refers to the tagged type itself.
+ Using a struct, union, or enum which is defined within another
struct or union.
+ A struct field defined using a typedef if there is a field in
the struct, or an enclosing struct, whose name is the typedef
name.
+ Duplicate definitions at file scope.
+ Uninitialized const variables.
+ A global variable with an anonymous struct, union, or enum
type.
+ Using a string constant to initialize a char array whose size
is the length of the string.
* The new -Wjump-misses-init option warns about cases where a goto or
switch skips the initialization of a variable. This sort of branch
is an error in C++ but not in C. This warning is enabled by
-Wc++-compat.
* GCC now ensures that a C99-conforming <stdint.h> is present on most
targets, and uses information about the types in this header to
implement the Fortran bindings to those types. GCC does not ensure
the presence of such a header, and does not implement the Fortran
bindings, on the following targets: NetBSD, VxWorks, VMS,
SymbianOS, WinCE, LynxOS, Netware, QNX, Interix, TPF.
* GCC now implements C90- and C99-conforming rules for constant
expressions. This may cause warnings or errors for some code using
expressions that can be folded to a constant but are not constant
expressions as defined by ISO C.
* All known target-independent C90 and C90 Amendment 1 conformance
bugs, and all known target-independent C99 conformance bugs not
related to floating point or extended identifiers, have been fixed.
* The C decimal floating point support now includes support for the
FLOAT_CONST_DECIMAL64 pragma.
* The named address space feature from ISO/IEC TR 18037 is now
supported. This is currently only implemented for the SPU
processor.
C++
* Improved [12]experimental support for the upcoming C++0x ISO C++
standard, including support for raw strings, lambda expressions and
explicit type conversion operators.
* When printing the name of a class template specialization, G++ will
now omit any template arguments which come from default template
arguments. This behavior (and the pretty-printing of function
template specializations as template signature and arguments) can
be disabled with the -fno-pretty-templates option.
* Access control is now applied to typedef names used in a template,
which may cause G++ to reject some ill-formed code that was
accepted by earlier releases. The -fno-access-control option can be
used as a temporary workaround until the code is corrected.
* Compilation time for code that uses templates should now scale
linearly with the number of instantiations rather than
quadratically, as template instantiations are now looked up using
hash tables.
* Declarations of functions that look like builtin declarations of
library functions are only considered to be redeclarations if they
are declared with extern "C". This may cause problems with code
that omits extern "C" on hand-written declarations of C library
functions such as abort or memcpy. Such code is ill-formed, but was
accepted by earlier releases.
* Diagnostics that used to complain about passing non-POD types to
... or jumping past the declaration of a non-POD variable now check
for triviality rather than PODness, as per C++0x.
* In C++0x mode local and anonymous classes are now allowed as
template arguments, and in declarations of variables and functions
with linkage, so long as any such declaration that is used is also
defined ([13]DR 757).
* Labels may now have attributes, as has been permitted for a while
in C. This is only permitted when the label definition and the
attribute specifier is followed by a semicolon--i.e., the label
applies to an empty statement. The only useful attribute for a
label is unused.
* G++ now implements [14]DR 176. Previously G++ did not support using
the injected-class-name of a template base class as a type name,
and lookup of the name found the declaration of the template in the
enclosing scope. Now lookup of the name finds the
injected-class-name, which can be used either as a type or as a
template, depending on whether or not the name is followed by a
template argument list. As a result of this change, some code that
was previously accepted may be ill-formed because
1. The injected-class-name is not accessible because it's from a
private base, or
2. The injected-class-name cannot be used as an argument for a
template template parameter.
In either of these cases, the code can be fixed by adding a
nested-name-specifier to explicitly name the template. The first
can be worked around with -fno-access-control; the second is only
rejected with -pedantic.
* A new standard mangling for SIMD vector types has been added, to
avoid name clashes on systems with vectors of varying length. By
default the compiler still uses the old mangling, but emits aliases
with the new mangling on targets that support strong aliases. Users
can switch over entirely to the new mangling with -fabi-version=4
or -fabi-version=0. -Wabi will now warn about code that uses the
old mangling.
* The command-line option -ftemplate-depth-N is now written as
-ftemplate-depth=N and the old form is deprecated.
* Conversions between NULL and non-pointer types are now warned by
default. The new option -Wno-conversion-null disables these
warnings. Previously these warnings were only available when using
-Wconversion explicitly.
Runtime Library (libstdc++)
* [15]Improved experimental support for the upcoming ISO C++
standard, C++0x, including:
+ Support for <future>, <functional>, and <random>.
+ Existing facilities now exploit explicit operators and the
newly implemented core C++0x features.
* An experimental [16]profile mode has been added. This is an
implementation of many C++ standard library constructs with an
additional analysis layer that gives performance improvement advice
based on recognition of suboptimal usage patterns. For example,
#include <vector>
int main()
{
std::vector<int> v;
for (int k = 0; k < 1024; ++k)
v.insert(v.begin(), k);
}
When instrumented via the profile mode, can return suggestions
about the initial size and choice of the container used as follows:
vector-to-list: improvement = 5: call stack = 0x804842c ...
: advice = change std::vector to std::list
vector-size: improvement = 3: call stack = 0x804842c ...
: advice = change initial container size from 0 to 1024
These constructs can be substituted for the normal libstdc++
constructs on a piecemeal basis, or all existing components can be
transformed via the -D_GLIBCXX_PROFILE macro.
* [17]Support for decimal floating-point arithmetic (aka ISO C++ TR
24733) has been added. This support is in header file
<decimal/decimal>, uses namespace std::decimal, and includes
classes decimal32, decimal64, and decimal128.
* Sources have been audited for application of function attributes
nothrow, const, pure, and noreturn.
* Python pretty-printers have been added for many standard library
components that simplify the internal representation and present a
more intuitive view of components when used with
appropriately-advanced versions of GDB. For more information,
please consult the more [18]detailed description.
* The default behavior for comparing typeinfo names has changed, so
in <typeinfo>, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
* The new -static-libstdc++ option directs g++ to link the C++
library statically, even if the default would normally be to link
it dynamically.
Fortran
* The COMMON default padding has been changed - instead of adding the
padding before a variable it is now added afterwards, which
increases the compatibility with other vendors and helps to obtain
the correct output in some cases. Cf. also the -falign-commons
option ([19]added in 4.4).
* The -finit-real= option now also supports the value snan for
signalling not-a-number; to be effective, one additionally needs to
enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
optimizations can turn a signalling NaN into a quiet one.
* The new option -fcheck= has been added with the options bounds,
array-temps, do, pointer, and recursive. The bounds and array-temps
options are equivalent to -fbounds-check and
-fcheck-array-temporaries. The do option checks for invalid
modification of loop iteration variables, and the recursive option
tests for recursive calls to subroutines/functions which are not
marked as recursive. With pointer pointer association checks in
calls are performed; however, neither undefined pointers nor
pointers in expressions are handled. Using -fcheck=all enables all
these run-time checks.
* The run-time checking -fcheck=bounds now warns about invalid string
lengths of character dummy arguments. Additionally, more
compile-time checks have been added.
* The new option [20]-fno-protect-parens has been added; if set, the
compiler may reorder REAL and COMPLEX expressions without regard to
parentheses.
* GNU Fortran no longer links against libgfortranbegin. As before,
MAIN__ (assembler symbol name) is the actual Fortran main program,
which is invoked by the main function. However, main is now
generated and put in the same object file as MAIN__. For the time
being, libgfortranbegin still exists for backward compatibility.
For details see the new [21]Mixed-Language Programming chapter in
the manual.
* The I/O library was restructured for performance and cleaner code.
* Array assignments and WHERE are now run in parallel when OpenMP's
WORKSHARE is used.
* The experimental option -fwhole-file was added. The option allows
whole-file checking of procedure arguments and allows for better
optimizations. It can also be used with -fwhole-program, which is
now also supported in gfortran.
* More Fortran 2003 and Fortran 2008 mathematical functions can now
be used as initialization expressions.
* Some extended attributes such as STDCALL are now supported via the
[22]GCC$ compiler directive.
* For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
intrinsic behaves now as if zero were always positive.
* For legacy compatibiliy: On Cygwin and MinGW, the special files
CONOUT$ and CONIN$ (and CONERR$ which maps to CONOUT$) are now
supported.
* Fortran 2003 support has been extended:
+ Procedure-pointer function results and procedure-pointer
components (including PASS),
+ allocatable scalars (experimental),
+ DEFERRED type-bound procedures,
+ the ERRMSG= argument of the ALLOCATE and DEALLOCATE statements
have been implemented.
+ The ALLOCATE statement supports type-specs and the SOURCE=
argument.
+ OPERATOR(*) and ASSIGNMENT(=) are now allowed as GENERIC
type-bound procedure (i.e. as type-bound operators).
+ Rounding (ROUND=, RZ, ...) for output is now supported.
+ The INT_FAST{8,16,32,64,128}_T kind type parameters of the
intrinsic module ISO_C_BINDING are now supported, except for
the targets listed above as ones where GCC does not have
<stdint.h> type information.
+ Extensible derived types with type-bound procedure or
procedure pointer with PASS attribute now have to use CLASS in
line with the Fortran 2003 standard; the workaround to use
TYPE is no longer supported.
+ [23]Experimental, incomplete support for polymorphism,
including CLASS, SELECT TYPE and dynamic dispatch of
type-bound procedure calls. Some features do not work yet such
as unlimited polymorphism (CLASS(*)).
* Fortran 2008 support has been extended:
+ The OPEN statement now supports the NEWUNIT= option, which
returns a unique file unit, thus preventing inadvertent use of
the same unit in different parts of the program.
+ Support for unlimited format items has been added.
+ The INT{8,16,32} and REAL{32,64,128} kind type parameters of
the intrinsic module ISO_FORTRAN_ENV are now supported.
+ Using complex arguments with TAN, SINH, COSH, TANH, ASIN,
ACOS, and ATAN is now possible; the functions ASINH, ACOSH,
and ATANH have been added (for real and complex arguments) and
ATAN(Y,X) is now an alias for ATAN2(Y,X).
+ The BLOCK construct has been implemented.
Java (GCJ)
New Targets and Target Specific Improvements
AIX
* Full cross-toolchain support now available with GNU Binutils
ARM
* GCC now supports the Cortex-M0 and Cortex-A5 processors.
* GCC now supports the ARM v7E-M architecture.
* GCC now supports VFPv4-based FPUs and FPUs with
single-precision-only VFP.
* GCC has many improvements to optimization for other ARM processors,
including scheduling support for the integer pipeline on Cortex-A9.
* GCC now supports the IEEE 754-2008 half-precision floating-point
type, and a variant ARM-specific half-precision type. This type is
specified using __fp16, with the layout determined by
-mfp16-format. With appropriate -mfpu options, the Cortex-A9 and
VFPv4 half-precision instructions will be used.
* GCC now supports the variant of AAPCS that uses VFP registers for
parameter passing and return values.
AVR
* The -mno-tablejump option has been removed because it has the same
effect as the -fno-jump-tables option.
* Added support for these new AVR devices:
+ ATmega8U2
+ ATmega16U2
+ ATmega32U2
IA-32/x86-64
* GCC now will set the default for -march= based on the configure
target.
* GCC now supports handling floating-point excess precision arising
from use of the x87 floating-point unit in a way that conforms to
ISO C99. This is enabled with -fexcess-precision=standard and with
standards conformance options such as -std=c99, and may be disabled
using -fexcess-precision=fast.
* Support for the Intel Atom processor is now available through the
-march=atom and -mtune=atom options.
* A new -mcrc32 option is now available to enable crc32 intrinsics.
* A new -mmovbe option is now available to enable GCC to use the
movbe instruction to implement __builtin_bswap32 and
__builtin_bswap64.
* SSE math now can be enabled by default at configure time with the
new --with-fpmath=sse option.
* There is a new intrinsic header file, <x86intrin.h>. It should be
included before using any IA-32/x86-64 intrinsics.
* Support for the XOP, FMA4, and LWP instruction sets for the AMD
Orochi processors are now available with the -mxop, -mfma4, and
-mlwp options.
* The -mabm option enables GCC to use the popcnt and lzcnt
instructions on AMD processors.
* The -mpopcnt option enables GCC to use the popcnt instructions on
both AMD and Intel processors.
M68K/ColdFire
* GCC now supports ColdFire 51xx, 5221x, 5225x, 52274, 52277, 5301x
and 5441x devices.
* GCC now supports thread-local storage (TLS) on M68K and ColdFire
processors.
MeP
Support has been added for the Toshiba Media embedded Processor (MeP,
or mep-elf) embedded target.
MIPS
* GCC now supports MIPS 1004K processors.
* GCC can now be configured with options --with-arch-32,
--with-arch-64, --with-tune-32 and --with-tune-64 to control the
default optimization separately for 32-bit and 64-bit modes.
* MIPS targets now support an alternative _mcount interface, in which
register $12 points to the function's save slot for register $31.
This interface is selected by the -mcount-ra-address option; see
the documentation for more details.
* GNU/Linux targets can now generate read-only .eh_frame sections.
This optimization requires GNU binutils 2.20 or above, and is only
available if GCC is configured with a suitable version of binutils.
* GNU/Linux targets can now attach special relocations to indirect
calls, so that the linker can turn them into direct jumps or
branches. This optimization requires GNU binutils 2.20 or later,
and is automatically selected if GCC is configured with an
appropriate version of binutils. It can be explicitly enabled or
disabled using the -mrelax-pic-calls command-line option.
* GCC now generates more heavily-optimized atomic operations on
Octeon processors.
* MIPS targets now support the -fstack-protector option.
* GCC now supports an -msynci option, which specifies that synci is
enough to flush the instruction cache, without help from the
operating system. GCC uses this information to optimize
automatically-generated cache flush operations, such as those used
for nested functions in C. There is also a --with-synci
configure-time option, which makes -msynci the default.
* GCC supports four new function attributes for interrupt handlers:
interrupt, use_shadow_register_set, keep_interrupts_masked and
use_debug_exception_return. See the documentation for more details
about these attributes.
picochip
RS/6000 (POWER/PowerPC)
* GCC now supports the Power ISA 2.06, which includes the VSX
instructions that add vector 64-bit floating point support, new
population count instructions, and conversions between floating
point and unsigned types.
* Support for the power7 processor is now available through the
-mcpu=power7 and -mtune=power7.
* GCC will now vectorize loops that contain simple math functions
like copysign when generating code for altivec or VSX targets.
* Support for the A2 processor is now available through the -mcpu=a2
and -mtune=a2 options.
* Support for the 476 processor is now available through the
-mcpu={476,476fp} and -mtune={476,476fp} options.
* Support for the e500mc64 processor is now available through the
-mcpu=e500mc64 and -mtune=e500mc64 options.
* GCC can now be configured with options --with-cpu-32,
--with-cpu-64, --with-tune-32 and --with-tune-64 to control the
default optimization separately for 32-bit and 64-bit modes.
RX
Support has been added for the Renesas RX Processor (rx-elf) target.
Operating Systems
Windows (Cygwin and MinGW)
* GCC now installs all the major language runtime libraries as DLLs
when configured with the --enable-shared option.
* GCC now makes use of the new support for aligned common variables
in versions of binutils >= 2.20 to fix bugs in the support for SSE
data types.
* Improvements to the libffi support library increase the reliability
of code generated by GCJ on all Windows platforms. Libgcj is
enabled by default for the first time.
* Libtool improvements simplify installation by placing the generated
DLLs in the correct binaries directory.
* Numerous other minor bugfixes and improvements, and substantial
enhancements to the Fortran language support library.
Documentation improvements
Other significant improvements
Plugins
* It is now possible to extend the compiler without having to modify
its source code. A new option -fplugin=file.so tells GCC to load
the shared object file.so and execute it as part of the compiler.
The internal documentation describes the details on how plugins can
interact with the compiler.
Installation changes
* The move to newer autotools changed default installation
directories and switches to control them: The --with-datarootdir,
--with-docdir, --with-pdfdir, and --with-htmldir switches are not
used any more. Instead, you can now use --datarootdir, --docdir,
--htmldir, and --pdfdir. The default installation directories have
changed as follows according to the GNU Coding Standards:
datarootdir read-only architecture-independent data root [PREFIX/share]
localedir locale-specific message catalogs [DATAROOTDIR/locale]
docdir documentation root [DATAROOTDIR/doc/PACKAGE]
htmldir html documentation [DOCDIR]
dvidir dvi documentation [DOCDIR]
pdfdir pdf documentation [DOCDIR]
psdir ps documentation [DOCDIR]
The following variables have new default values:
datadir read-only architecture-independent data [DATAROOTDIR]
infodir info documentation [DATAROOTDIR/info]
mandir man documentation [DATAROOTDIR/man]
GCC 4.5.1
This is the [24]list of problem reports (PRs) from GCC's bug tracking
system that are known to be fixed in the 4.5.1 release. This list might
not be complete (that is, it is possible that some PRs that have been
fixed are not listed here).
All languages
* GCC's new link-time optimizer ([25]-flto) now also works on a few
non-ELF targets:
+ Cygwin (*-cygwin*)
+ MinGW (*-mingw*)
+ Darwin on x86-64 (x86_64-apple-darwin*)
LTO is not enabled by default for these targets. To enable LTO, you
should configure with the --enable-lto option.
GCC 4.5.2
This is the [26]list of problem reports (PRs) from GCC's bug tracking
system that are known to be fixed in the 4.5.2 release. This list might
not be complete (that is, it is possible that some PRs that have been
fixed are not listed here).
Please send FSF & GNU inquiries & questions to [27]gnu@gnu.org. There
are also [28]other ways to contact the FSF.
These pages are [29]maintained by the GCC team.
For questions related to the use of GCC, please consult these web
pages and the [30]GCC manuals. If that fails, the
[31]gcc-help@gcc.gnu.org mailing list might help.
Please send comments on these web pages and the development of GCC to
our developer list at [32]gcc@gcc.gnu.org. All of our lists have
[33]public archives.
Copyright (C) Free Software Foundation, Inc.
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
Last modified 2010-12-16 [34]Valid XHTML 1.0
References
1. http://www.multiprecision.org/
2. http://gcc.gnu.org/install/prerequisites.html
3. http://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
5. http://gcc.gnu.org/gcc-4.5/changes.html#x86
6. http://www.multiprecision.org/
7. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30789
8. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
9. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802
10. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800
11. http://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html
12. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
14. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x
16. http://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
17. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
18. http://sourceware.org/gdb/wiki/STLSupport
19. http://gcc.gnu.org/gcc-4.4/changes.html
20. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
21. http://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
22. http://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
23. http://gcc.gnu.org/wiki/OOP
24. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
25. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2
27. mailto:gnu@gnu.org
28. http://www.gnu.org/home.html#ContactInfo
29. http://gcc.gnu.org/about.html
30. http://gcc.gnu.org/onlinedocs/
31. mailto:gcc-help@gcc.gnu.org
32. mailto:gcc@gcc.gnu.org
33. http://gcc.gnu.org/lists.html
34. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-4.4/index.html
GCC 4.4 Release Series
April 29, 2010
The [1]GNU project and the GCC developers are pleased to announce the
release of GCC 4.4.5.
This release is a bug-fix release, containing fixes for regressions in
GCC 4.4.4 relative to previous releases of GCC.
Release History
GCC 4.4.5
October 1, 2010 ([2]changes)
GCC 4.4.4
April 29, 2010 ([3]changes)
GCC 4.4.3
January 21, 2010 ([4]changes)
GCC 4.4.2
October 15, 2009 ([5]changes)
GCC 4.4.1
July 22, 2009 ([6]changes)
GCC 4.4.0
April 21, 2009 ([7]changes)
References and Acknowledgements
GCC used to stand for the GNU C Compiler, but since the compiler
supports several other languages aside from C, it now stands for the
GNU Compiler Collection.
A list of [8]successful builds is updated as new information becomes
available.
The GCC developers would like to thank the numerous people that have
contributed new features, improvements, bug fixes, and other changes as
well as test results to GCC. This [9]amazing group of volunteers is
what makes GCC successful.
For additional information about GCC please refer to the [10]GCC
project web site or contact the [11]GCC development mailing list.
To obtain GCC please use [12]our mirror sites or [13]our SVN server.
Please send FSF & GNU inquiries & questions to [14]gnu@gnu.org. There
are also [15]other ways to contact the FSF.
These pages are [16]maintained by the GCC team.
For questions related to the use of GCC, please consult these web
pages and the [17]GCC manuals. If that fails, the
[18]gcc-help@gcc.gnu.org mailing list might help.
Please send comments on these web pages and the development of GCC to
our developer list at [19]gcc@gcc.gnu.org. All of our lists have
[20]public archives.
Copyright (C) Free Software Foundation, Inc.
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
Last modified 2010-11-06 [21]Valid XHTML 1.0
References
1. http://www.gnu.org/
2. http://gcc.gnu.org/gcc-4.4/changes.html
3. http://gcc.gnu.org/gcc-4.4/changes.html
4. http://gcc.gnu.org/gcc-4.4/changes.html
5. http://gcc.gnu.org/gcc-4.4/changes.html
6. http://gcc.gnu.org/gcc-4.4/changes.html
7. http://gcc.gnu.org/gcc-4.4/changes.html
8. http://gcc.gnu.org/gcc-4.4/buildstat.html
9. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
10. http://gcc.gnu.org/index.html
11. mailto:gcc@gcc.gnu.org
12. http://gcc.gnu.org/mirrors.html
13. http://gcc.gnu.org/svn.html
14. mailto:gnu@gnu.org
15. http://www.gnu.org/home.html#ContactInfo
16. http://gcc.gnu.org/about.html
17. http://gcc.gnu.org/onlinedocs/
18. mailto:gcc-help@gcc.gnu.org
19. mailto:gcc@gcc.gnu.org
20. http://gcc.gnu.org/lists.html
21. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-4.4/changes.html
GCC 4.4 Release Series
Changes, New Features, and Fixes
The latest release in the 4.4 release series is [1]GCC 4.4.5.
Caveats
* __builtin_stdarg_start has been completely removed from GCC.
Support for <varargs.h> had been deprecated since GCC 4.0. Use
__builtin_va_start as a replacement.
* Some of the errors issued by the C++ front end that could be
downgraded to warnings in previous releases by using -fpermissive
are now warnings by default. They can be converted into errors by
using -pedantic-errors.
* Use of the cpp assertion extension will now emit a warning when
-Wdeprecated or -pedantic is used. This extension has been
deprecated for many years, but never warned about.
* Packed bit-fields of type char were not properly bit-packed on many
targets prior to GCC 4.4. On these targets, the fix in GCC 4.4
causes an ABI change. For example there is no longer a 4-bit
padding between field a and b in this structure:
struct foo
{
char a:4;
char b:8;
} __attribute__ ((packed));
There is a new warning to help identify fields that are affected:
foo.c:5: note: Offset of packed bit-field 'b' has changed in GCC 4.4
The warning can be disabled with -Wno-packed-bitfield-compat.
* On ARM EABI targets, the C++ mangling of the va_list type has been
changed to conform to the current revision of the EABI. This does
not affect the libstdc++ library included with GCC.
* The SCOUNT and POS bits of the MIPS DSP control register are now
treated as global. Previous versions of GCC treated these fields as
call-clobbered instead.
* The MIPS port no longer recognizes the h asm constraint. It was
necessary to remove this constraint in order to avoid generating
unpredictable code sequences.
One of the main uses of the h constraint was to extract the high
part of a multiplication on 64-bit targets. For example:
asm ("dmultu\t%1,%2" : "=h" (result) : "r" (x), "r" (y));
You can now achieve the same effect using 128-bit types:
typedef unsigned int uint128_t __attribute__((mode(TI)));
result = ((uint128_t) x * y) >> 64;
The second sequence is better in many ways. For example, if x and y
are constants, the compiler can perform the multiplication at
compile time. If x and y are not constants, the compiler can
schedule the runtime multiplication better than it can schedule an
asm statement.
* Support for a number of older systems and recently unmaintained or
untested target ports of GCC has been declared obsolete in GCC 4.4.
Unless there is activity to revive them, the next release of GCC
will have their sources permanently removed.
The following ports for individual systems on particular
architectures have been obsoleted:
+ Generic a.out on IA32 and m68k (i[34567]86-*-aout*,
m68k-*-aout*)
+ Generic COFF on ARM, H8300, IA32, m68k and SH (arm-*-coff*,
armel-*-coff*, h8300-*-*, i[34567]86-*-coff*, m68k-*-coff*,
sh-*-*). This does not affect other more specific targets
using the COFF object format on those architectures, or the
more specific H8300 and SH targets (h8300-*-rtems*,
h8300-*-elf*, sh-*-elf*, sh-*-symbianelf*, sh-*-linux*,
sh-*-netbsdelf*, sh-*-rtems*, sh-wrs-vxworks).
+ 2BSD on PDP-11 (pdp11-*-bsd)
+ AIX 4.1 and 4.2 on PowerPC (rs6000-ibm-aix4.[12]*,
powerpc-ibm-aix4.[12]*)
+ Tuning support for Itanium1 (Merced) variants. Note that code
tuned for Itanium2 should also run correctly on Itanium1.
* The protoize and unprotoize utilities have been obsoleted and will
be removed in GCC 4.5. These utilities have not been installed by
default since GCC 3.0.
* Support has been removed for all the [2]configurations obsoleted in
GCC 4.3.
* Unknown -Wno-* options are now silently ignored by GCC if no other
diagnostics are issued. If other diagnostics are issued, then GCC
warns about the unknown options.
* More information on porting to GCC 4.4 from previous versions of
GCC can be found in the [3]porting guide for this release.
General Optimizer Improvements
* A new command-line switch -findirect-inlining has been added. When
turned on it allows the inliner to also inline indirect calls that
are discovered to have known targets at compile time thanks to
previous inlining.
* A new command-line switch -ftree-switch-conversion has been added.
This new pass turns simple initializations of scalar variables in
switch statements into initializations from a static array, given
that all the values are known at compile time and the ratio between
the new array size and the original switch branches does not exceed
the parameter --param switch-conversion-max-branch-ratio (default
is eight).
* A new command-line switch -ftree-builtin-call-dce has been added.
This optimization eliminates unnecessary calls to certain builtin
functions when the return value is not used, in cases where the
calls can not be eliminated entirely because the function may set
errno. This optimization is on by default at -O2 and above.
* A new command-line switch -fconserve-stack directs the compiler to
minimize stack usage even if it makes the generated code slower.
This affects inlining decisions.
* When the assembler supports it, the compiler will now emit unwind
information using assembler .cfi directives. This makes it possible
to use such directives in inline assembler code. The new option
-fno-dwarf2-cfi-asm directs the compiler to not use .cfi
directives.
* The [4]Graphite branch has been merged. This merge has brought in a
new framework for loop optimizations based on a polyhedral
intermediate representation. These optimizations apply to all the
languages supported by GCC. The following new code transformations
are available in GCC 4.4:
+ -floop-interchange performs loop interchange transformations
on loops. Interchanging two nested loops switches the inner
and outer loops. For example, given a loop like:
DO J = 1, M
DO I = 1, N
A(J, I) = A(J, I) * C
ENDDO
ENDDO
loop interchange will transform the loop as if the user had
written:
DO I = 1, N
DO J = 1, M
A(J, I) = A(J, I) * C
ENDDO
ENDDO
which can be beneficial when N is larger than the caches,
because in Fortran, the elements of an array are stored in
memory contiguously by column, and the original loop iterates
over rows, potentially creating at each access a cache miss.
+ -floop-strip-mine performs loop strip mining transformations
on loops. Strip mining splits a loop into two nested loops.
The outer loop has strides equal to the strip size and the
inner loop has strides of the original loop within a strip.
For example, given a loop like:
DO I = 1, N
A(I) = A(I) + C
ENDDO
loop strip mining will transform the loop as if the user had
written:
DO II = 1, N, 4
DO I = II, min (II + 3, N)
A(I) = A(I) + C
ENDDO
ENDDO
+ -floop-block performs loop blocking transformations on loops.
Blocking strip mines each loop in the loop nest such that the
memory accesses of the element loops fit inside caches. For