-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathNEWS
9798 lines (8540 loc) · 422 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.3/index.html
GCC 4.3 Release Series
March 5, 2008
The [1]GNU project and the GCC developers are pleased to announce the
release of GCC 4.3.0.
This release is a major release, containing new features (as well as
many other improvements) relative to GCC 4.2.x.
Release History
GCC 4.3.0
March 5, 2008 ([2]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 [3]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 [4]amazing group of volunteers is
what makes GCC successful.
For additional information about GCC please refer to the [5]GCC project
web site or contact the [6]GCC development mailing list.
To obtain GCC please use [7]our mirror sites, one of the [8]GNU mirror
sites, or [9]our SVN server.
Please send FSF & GNU inquiries & questions to [10]gnu@gnu.org. There
are also [11]other ways to contact the FSF.
These pages are maintained by [12]the GCC team.
For questions related to the use of GCC, please consult these web
pages and the [13]GCC manuals. If that fails, the
[14]gcc-help@gcc.gnu.org mailing list might help.
Please send comments on these web pages and the development of GCC to
our developer mailing list at [15]gcc@gnu.org or [16]gcc@gcc.gnu.org.
All of our lists have [17]public archives.
Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
Floor, Boston, MA 02110, USA.
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
Last modified 2008-03-05 [18]Valid XHTML 1.0
References
1. http://www.gnu.org/
2. http://gcc.gnu.org/gcc-4.3/changes.html
3. http://gcc.gnu.org/gcc-4.3/buildstat.html
4. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
5. http://gcc.gnu.org/index.html
6. mailto:gcc@gcc.gnu.org
7. http://gcc.gnu.org/mirrors.html
8. http://www.gnu.org/order/ftp.html
9. http://gcc.gnu.org/svn.html
10. mailto:gnu@gnu.org
11. http://www.gnu.org/home.html#ContactInfo
12. http://gcc.gnu.org/about.html
13. http://gcc.gnu.org/onlinedocs/
14. mailto:gcc-help@gcc.gnu.org
15. mailto: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.3/changes.html
GCC 4.3 Release Series
Changes, New Features, and Fixes
Caveats
* GCC requires the [1]GMP and [2]MPFR libraries for building all the
various front-end languages it supports. See the [3]prerequisites
page for version requirements.
* ColdFire targets now treat long double as having the same format as
double. In earlier versions of GCC, they used the 68881 long double
format instead.
* The m68k-uclinux target now uses the same calling conventions as
m68k-linux-gnu. You can select the original calling conventions by
configuring for m68k-uclinuxoldabi instead. Note that
m68k-uclinuxoldabi also retains the original 80-bit long double on
ColdFire targets.
* The -fforce-mem option has been removed because it has had no
effect in the last few GCC releases.
* The i386 -msvr3-shlib option has been removed since it is no longer
used.
* Fastcall for i386 has been changed not to pass aggregate arguments
in registers, following Microsoft compilers.
* Support for the AOF assembler has been removed from the ARM back
end; this affects only the targets arm-semi-aof and armel-semi-aof,
which are no longer recognized. We removed these targets without a
deprecation period because we discovered that they have been
unusable since GCC 4.0.0.
* Support for the TMS320C3x/C4x processor (targets c4x-* and tic4x-*)
has been removed. This support had been deprecated since GCC 4.0.0.
* Support for a number of older systems and recently unmaintained or
untested target ports of GCC has been declared obsolete in GCC 4.3.
Unless there is activity to revive them, the next release of GCC
will have their sources permanently removed.
All GCC ports for the following processor architectures have been
declared obsolete:
+ National Semiconductor CRX (crx-*)
+ Morpho MT (mt-*)
The following aliases for processor architectures have been
declared obsolete. Users should use the indicated generic target
names instead, with compile-time options such as -mcpu or
configure-time options such as --with-cpu to control the
configuration more precisely.
+ strongarm*-*-*, ep9312*-*-*, xscale*-*-* (use arm*-*-*
instead).
+ parisc*-*-* (use hppa*-*-* instead).
+ m680[012]0-*-* (use m68k-*-* instead).
All GCC ports for the following operating systems have been
declared obsolete:
+ BeOS (*-*-beos*)
+ kaOS (*-*-kaos*)
+ GNU/Linux using the a.out object format (*-*-linux*aout*)
+ GNU/Linux using version 1 of the GNU C Library
(*-*-linux*libc1*)
+ Solaris versions before Solaris 7 (*-*-solaris2.[0-6],
*-*-solaris2.[0-6].*)
+ Miscellaneous System V (*-*-sysv*)
+ WindISS (*-*-windiss*)
Also, those for some individual systems on particular architectures
have been obsoleted:
+ UNICOS/mk on DEC Alpha (alpha*-*-unicosmk*)
+ CRIS with a.out object format (cris-*-aout)
+ BSD 4.3 on PA-RISC (hppa1.1-*-bsd*)
+ OSF/1 on PA-RISC (hppa1.1-*-osf*)
+ PRO on PA-RISC (hppa1.1-*-pro*)
+ Sequent PTX on IA32 (i[34567]86-sequent-ptx4*,
i[34567]86-sequent-sysv4*)
+ SCO Open Server 5 on IA32 (i[34567]86-*-sco3.2v5*)
+ UWIN on IA32 (i[34567]86-*-uwin*) (support for UWIN as a host
was previously [4]removed in 2001, leaving only the support
for UWIN as a target now being deprecated)
+ ChorusOS on PowerPC (powerpc-*-chorusos*)
+ All VAX configurations apart from NetBSD and OpenBSD
(vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*)
* The [5]-Wconversion option has been modified. Its purpose now is to
warn for implicit conversions that may alter a value. This new
behavior is available for both C and C++. Warnings about
conversions between signed and unsigned integers can be disabled by
using -Wno-sign-conversion. In C++, they are disabled by default
unless -Wsign-conversion is explicitly requested. The old behavior
of -Wconversion, that is, warn for prototypes causing a type
conversion that is different from what would happen to the same
argument in the absence of a prototype, has been moved to a new
option -Wtraditional-conversion, which is only available for C.
* The -m386, -m486, -mpentium and -mpentiumpro tuning options have
been removed because they were deprecated for more than 3 GCC major
releases. Use -mtune=i386, -mtune=i486, -mtune=pentium or
-mtune=pentiumpro as a replacement.
* The -funsafe-math-optimizations option now automatically turns on
-fno-trapping-math in addition to -fno-signed-zeros, as it enables
reassociation and thus may introduce or remove traps.
* More information on porting to GCC 4.3 from previous versions of
GCC can be found in the [6]porting guide for this release.
General Optimizer Improvements
* The GCC middle-end has been integrated with the [7]MPFR library.
This allows GCC to evaluate and replace at compile-time calls to
built-in math functions having constant arguments with their
mathematically equivalent results. In making use of [8]MPFR, 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: acos, acosh, asin, asinh, atan2, atan,
atanh, cbrt, cos, cosh, drem, erf, erfc, exp10, exp2, exp, expm1,
fdim, fma, fmax, fmin, gamma_r, hypot, j0, j1, jn, lgamma_r, log10,
log1p, log2, log, pow10, pow, remainder, remquo, sin, sincos, sinh,
tan, tanh, tgamma, y0, y1 and yn. The float and long double
variants of these functions (e.g. sinf and sinl) are also handled.
The sqrt and cabs functions with constant arguments were already
optimized in prior GCC releases. Now they also use [9]MPFR.
* A new forward propagation pass on RTL was added. The new pass
replaces several slower transformations, resulting in compile-time
improvements as well as better code generation in some cases.
* A new command-line switch -frecord-gcc-switches has been added to
GCC, although it is only enabled for some targets. The switch
causes the command line that was used to invoke the compiler to be
recorded into the object file that is being created. The exact
format of this recording is target and binary file format
dependent, but it usually takes the form of a note section
containing ASCII text. The switch is related to the -fverbose-asm
switch, but that one only records the information in the assembler
output file as comments, so the information never reaches the
object file.
* The inliner heuristic is now aware of stack frame consumption. New
command-line parameters --param large-stack-frame and --param
large-stack-frame-growth can be used to limit stack frame size
growth caused by inlining.
* During feedback directed optimizations, the expected block size the
memcpy, memset and bzero functions operate on is discovered and for
cases of commonly used small sizes, specialized inline code is
generated.
* __builtin_expect no longer requires its argument to be a compile
time constant.
* Interprocedural optimization was reorganized to work on functions
in SSA form. This enables more precise and cheaper dataflow
analysis and makes writing interprocedural optimizations easier.
The following improvements have been implemented on top of this
framework:
+ Pre-inline optimization: Selected local optimization passes
are run before the inliner (and other interprocedural passes)
are executed. This significantly improves the accuracy of code
growth estimates used by the inliner and reduces the overall
memory footprint for large compilation units.
+ Early inlining (a simple bottom-up inliner pass inlining only
functions whose body is smaller than the expected call
overhead) is now executed with the early optimization passes,
thus inlining already optimized function bodies into an
unoptimized function that is subsequently optimized by early
optimizers. This enables the compiler to quickly eliminate
abstraction penalty in C++ programs.
+ Interprocedural constant propagation now operate on SSA form
increasing accuracy of the analysis.
* A new internal representation for GIMPLE statements has been
contributed, resulting in compile-time memory savings.
New Languages and Language specific improvements
* We have added new command-line options
-finstrument-functions-exclude-function-list and
-finstrument-functions-exclude-file-list. They provide more control
over which functions are annotated by the -finstrument-functions
option.
C family
* Implicit conversions between generic vector types are now only
permitted when the two vectors in question have the same number of
elements and compatible element types. (Note that the restriction
involves compatible element types, not implicitly-convertible
element types: thus, a vector type with element type int may not be
implicitly converted to a vector type with element type unsigned
int.) This restriction, which is in line with specifications for
SIMD architectures such as AltiVec, may be relaxed using the flag
-flax-vector-conversions. This flag is intended only as a
compatibility measure and should not be used for new code.
* -Warray-bounds has been added and is now enabled by default for
-Wall . It produces warnings for array subscripts that can be
determined at compile time to be always out of bounds.
-Wno-array-bounds will disable the warning.
* The constructor and destructor function attributes now accept
optional priority arguments which control the order in which the
constructor and destructor functions are run.
* New [10]command-line options -Wtype-limits,
-Wold-style-declaration, -Wmissing-parameter-type, -Wempty-body,
-Wclobbered and -Wignored-qualifiers have been added for finer
control of the diverse warnings enabled by -Wextra.
* A new function attribute alloc_size has been added to mark up
malloc style functions. For constant sized allocations this can be
used to find out the size of the returned pointer using the
__builtin_object_size() function for buffer overflow checking and
similar. This supplements the already built-in malloc and calloc
constant size handling.
* Integer constants written in binary are now supported as a GCC
extension. They consist of a prefix 0b or 0B, followed by a
sequence of 0 and 1 digits.
* A new predefined macro __COUNTER__ has been added. It expands to
sequential integral values starting from 0. In conjunction with the
## operator, this provides a convenient means to generate unique
identifiers.
* A new command-line option -fdirectives-only has been added. It
enables a special preprocessing mode which improves the performance
of applications like distcc and ccache.
* Fixed-point data types and operators have been added. They are
based on Chapter 4 of the Embedded-C specification (n1169.pdf).
Currently, only MIPS targets are supported.
C++
* [11]Experimental support for the upcoming ISO C++ standard, C++0x.
* -Wc++0x-compat has been added and is now enabled by default for
-Wall. It produces warnings for constructs whose meaning differs
between ISO C++ 1998 and C++0x.
* The -Wparentheses option now works for C++ as it does for C. It
warns if parentheses are omitted when operators with confusing
precedence are nested. It also warns about ambiguous else
statements. Since -Wparentheses is enabled by -Wall, this may cause
additional warnings with existing C++ code which uses -Wall. These
new warnings may be disabled by using -Wall -Wno-parentheses.
* The -Wmissing-declarations now works for C++ as it does for C.
* The -fvisibility-ms-compat flag was added, to make it easier to
port larger projects using shared libraries from Microsoft's Visual
Studio to ELF and Mach-O systems.
* C++ attribute handling has been overhauled for template arguments
(ie dependent types). In particular, __attribute__((aligned(T)));
works for C++ types.
Runtime Library (libstdc++)
* [12]Experimental support for the upcoming ISO C++ standard, C++0x.
* Support for TR1 mathematical special functions and regular
expressions. The implementation status for TR1 can be tracked in
[13]tr1.html
* Default what implementations give more elaborate exception strings
for bad_cast, bad_typeid, bad_exception, and bad_alloc.
* Header dependencies have been streamlined, reducing unnecessary
includes and pre-processed bloat.
* Variadic template implementations of items in <tuple> and
<functional>.
* An experimental [14]parallel mode has been added. This is a
parallel implementation of many C++ Standard library algorithms,
like std::accumulate, std::for_each, std::transform, or std::sort,
to give but four examples. These algorithms can be substituted for
the normal (sequential) libstdc++ algorithms on a piecemeal basis,
or all existing algorithms can be transformed via the
-D_GLIBCXX_PARALLEL macro.
* Debug mode versions of classes in <unordered_set> and
<unordered_map>.
* Formal deprecation of <ext/hash_set> and <ext/hash_map>, which are
now <backward/hash_set> and <backward/hash_map>. This code:
#include <ext/hash_set>
__gnu_cxx::hash_set<int> s;
Can be transformed (in order of preference) to:
#include <tr1/unordered_set>
std::tr1::unordered_set<int> s;
or
#include <backward/hash_set>
__gnu_cxx::hash_set<int> s;
Similar transformations apply to __gnu_cxx::hash_map,
__gnu_cxx::hash_multimap, __gnu_cxx::hash_set,
__gnu_cxx::hash_multiset.
Fortran
* Due to the fact that the [15]GMP and [16]MPFR libraries are
required for all languages, Fortran is no longer special in this
regard and is available by default.
* The [17]-fexternal-blas option has been added, which generates
calls to BLAS routines for intrinsic matrix operations such as
matmul rather than using the built-in algorithms.
* Support to give a backtrace (compiler flag -fbacktrace or
environment variable GFORTRAN_ERROR_BACKTRACE; on glibc systems
only) or a core dump (-fdump-core, GFORTRAN_ERROR_DUMPCORE) when a
run-time error occured.
* GNU Fortran now defines __GFORTRAN__ when it runs the C
preprocessor (CPP).
* The [18]-finit-local-zero, -finit-real, -finit-integer,
-finit-character, and -finit-logical options have been added, which
can be used to initialize local variables.
* The intrinsic procedures [19]GAMMA and [20]LGAMMA have been added,
which calculate the Gamma function and its logarithm. Use EXTERNAL
gamma if you want to use your own gamma function.
* GNU Fortran now regards the backslash character as literal (as
required by the Fortran 2003 standard); using [21]-fbackslash GNU
Fortran interprets backslashes as C-style escape characters.
* The [22]interpretation of binary, octal and hexadecimal (BOZ)
literal constants has been changed. Before they were always
interpreted as integer; now they are bit-wise transferred as
argument of INT, REAL, DBLE and CMPLX as required by the Fortran
2003 standard, and for real and complex variables in DATA
statements or when directly assigned to real and complex variables.
Everywhere else and especially in expressions they are still
regarded as integer constants.
* Fortran 2003 support has been extended:
+ Intrinsic statements IMPORT, PROTECTED, VALUE and VOLATILE
+ Pointer intent
+ Intrinsic module ISO_ENV_FORTRAN
+ Interoperability with C (ISO C Bindings)
+ ABSTRACT INTERFACES and PROCEDURE statements (without POINTER
attribute)
+ Fortran 2003 BOZ
Java (GCJ)
* gcj now uses the Eclipse Java compiler for its Java parsing needs.
This enables the use of all 1.5 language features, and fixes most
existing front end bugs.
* libgcj now supports all 1.5 language features which require runtime
support: foreach, enum, annotations, generics, and auto-boxing.
* We've made many changes to the tools shipped with gcj.
+ The old jv-scan tool has been removed. This tool never really
worked properly. There is no replacement.
+ gcjh has been rewritten. Some of its more obscure options no
longer work, but are still recognized in an attempt at
compatibility. gjavah is a new program with similar
functionality but different command-line options.
+ grmic and grmiregistry have been rewritten. grmid has been
added.
+ gjar replaces the old fastjar.
+ gjarsigner (used for signing jars), gkeytool (used for key
management), gorbd (for CORBA), gserialver (computes
serialization UIDs), and gtnameserv (also for CORBA) are now
installed.
* The ability to dump the contents of the java run time heap to a
file for off-line analysis has been added. The heap dumps may be
analyzed with the new gc-analyze tool. They may be generated on
out-of-memory conditions or on demand and are controlled by the new
run time class gnu.gcj.util.GCInfo.
* java.util.TimeZone can now read files from /usr/share/zoneinfo to
provide correct, updated, timezone information. This means that
packagers no longer have to update libgcj when a time zone change
is published.
New Targets and Target Specific Improvements
IA-32/x86-64
* Tuning for Intel Core 2 processors is available via -mtune=core2
and -march=core2.
* Tuning for AMD Geode processors is available via -mtune=geode and
-march=geode.
* Code generation of block move (memcpy) and block set (memset) was
rewritten. GCC can now pick the best algorithm (loop, unrolled
loop, instruction with rep prefix or a library call) based on the
size of the block being copied and the CPU being optimized for. A
new option -minline-stringops-dynamically has been added. With this
option string operations of unknown size are expanded such that
small blocks are copied by in-line code, while for large blocks a
library call is used. This results in faster code than
-minline-all-stringops when the library implementation is capable
of using cache hierarchy hints. The heuristic choosing the
particular algorithm can be overwritten via -mstringop-strategy.
Newly also memset of values different from 0 is inlined.
* GCC no longer places the cld instruction before string operations.
Both i386 and x86-64 ABI documents mandate the direction flag to be
clear at the entry of a function. It is now invalid to set the flag
in asm statement without reseting it afterward.
* Support for SSSE3 built-in functions and code generation are
available via -mssse3.
* Support for SSE4.1 built-in functions and code generation are
available via -msse4.1.
* Support for SSE4.2 built-in functions and code generation are
available via -msse4.2.
* Both SSE4.1 and SSE4.2 support can be enabled via -msse4.
* A new set of options -mpc32, -mpc64 and -mpc80 have been added to
allow explicit control of x87 floating point precision.
* Support for __float128 (TFmode) IEEE quad type and corresponding
TCmode IEEE complex quad type is available via the soft-fp library
on x86_64 targets. This includes basic arithmetic operations
(addition, subtraction, negation, multiplication and division) on
__float128 real and TCmode complex values, the full set of IEEE
comparisons between __float128 values, conversions to and from
float, double and long double floating point types, as well as
conversions to and from signed or unsigned integer, signed or
unsigned long integer and signed or unsigned quad (TImode) integer
types. Additionally, all operations generate the full set of IEEE
exceptions and support the full set of IEEE rounding modes.
* GCC can now utilize the ACML library for vectorizing calls to a set
of C99 functions on x86_64 if -mveclibabi=acml is specified and you
link to an ACML ABI compatible library.
ARM
* Compiler and Library support for Thumb-2 and the ARMv7 architecture
has been added.
CRIS
New features
* Compiler and Library support for the CRIS v32 architecture, as
found in Axis Communications ETRAX FS and ARTPEC-3 chips, has been
added.
Configuration changes
* The cris-*-elf target now includes support for CRIS v32, including
libraries, through the -march=v32 option.
* A new crisv32-*-elf target defaults to generate code for CRIS v32.
* A new crisv32-*-linux* target defaults to generate code for CRIS
v32.
* The cris-*-aout target has been obsoleted.
Improved support for built-in functions
* GCC can now use the lz and swapwbr instructions to implement the
__builtin_clz, __builtin_ctz and __builtin_ffs family of functions.
* __builtin_bswap32 is now implemented using the swapwb instruction,
when available.
m68k and ColdFire
New features
* Support for several new ColdFire processors has been added. You can
generate code for them using the new -mcpu option.
* All targets now support ColdFire processors.
* m68k-uclinux targets have improved support for C++ constructors and
destructors, and for shared libraries.
* It is now possible to set breakpoints on the first or last line of
a function, even if there are no statements on that line.
Optimizations
* Support for sibling calls has been added.
* More use is now made of the ColdFire mov3q instruction.
* __builtin_clz is now implemented using the ff1 ColdFire
instruction, when available.
* GCC now honors the -m68010 option. 68010 code now uses clr rather
than move to zero volatile memory.
* 68020 targets and above can now use symbol(index.size*scale)
addresses for indexed array accesses. Earlier compilers would
always load the symbol into a base register first.
Configuration changes
* All m68k and ColdFire targets now allow the default processor to be
set at configure time using --with-cpu.
* A --with-arch configuration option has been added. This option
allows you to restrict a target to ColdFire or non-ColdFire
processors.
Preprocessor macros
* An __mcfv*__ macro is now defined for all ColdFire targets.
(Earlier versions of GCC only defined __mcfv4e__.)
* __mcf_cpu_*, __mcf_family_* and __mcffpu__ macros have been added.
* All targets now define __mc68010 and __mc68010__ when generating
68010 code.
Command-line changes
* New command-line options -march, -mcpu, -mtune and -mhard-float
have been added. These options apply to both m68k and ColdFire
targets.
* -mno-short, -mno-bitfield and -mno-rtd are now accepted as negative
versions of -mshort, etc.
* -fforce-addr has been removed. It is now ignored by the compiler.
Other improvements
* ColdFire targets now try to maintain a 4-byte-aligned stack where
possible.
* m68k-uclinux targets now try to avoid situations that lead to the
load-time error: BINFMT_FLAT: reloc outside program.
MIPS
Changes to existing configurations
* libffi and libjava now support all three GNU/Linux ABIs: o32, n32
and n64. Every GNU/Linux configuration now builds these libraries
by default.
* GNU/Linux configurations now generate -mno-shared code unless
overridden by -fpic, -fPIC, -fpie or -fPIE.
* mipsisa32*-linux-gnu configurations now generate hard-float code by
default, just like other mipsisa32* and mips*-linux-gnu
configurations. You can build a soft-float version of any
mips*-linux-gnu configuration by passing --with-float=soft to
configure.
* mips-wrs-vxworks now supports run-time processes (RTPs).
Changes to existing command-line options
* The -march and -mtune options no longer accept 24k as a processor
name. Please use 24kc, 24kf2_1 or 24kf1_1 instead.
* The -march and -mtune options now accept 24kf2_1, 24kef2_1 and
34kf2_1 as synonyms for 24kf, 24kef and 34kf respectively. The
options also accept 24kf1_1, 24kef1_1 and 34kf1_1 as synonyms for
24kx, 24kex and 34kx.
New configurations
GCC now supports the following configurations:
* mipsisa32r2*-linux-gnu*, which generates MIPS32 revision 2 code by
default. Earlier releases also recognized this configuration, but
they treated it in the same way as mipsisa32*-linux-gnu*. Note that
you can customize any mips*-linux-gnu* configuration to a
particular ISA or processor by passing an appropriate --with-arch
option to configure.
* mipsisa*-sde-elf*, which provides compatibility with MIPS
Technologies' SDE toolchains. The configuration uses the SDE
libraries by default, but you can use it like other newlib-based
ELF configurations by passing --with-newlib to configure. It is the
only configuration besides mips64vr*-elf* to build MIPS16 as well
as non-MIPS16 libraries.
* mipsisa*-elfoabi*, which is similar to the general mipsisa*-elf*
configuration, but uses the o32 and o64 ABIs instead of the 32-bit
and 64-bit forms of the EABI.
New processors and application-specific extensions
* Support for the SmartMIPS ASE is available through the new
-msmartmips option.
* Support for revision 2 of the DSP ASE is available through the new
-mdspr2 option. A new preprocessor macro called __mips_dsp_rev
indicates the revision of the ASE in use.
* Support for the 4KS and 74K families of processors is available
through the -march and -mtune options.
Improved support for built-in functions
* GCC can now use load-linked, store-conditional and sync
instructions to implement atomic built-in functions such as
__sync_fetch_and_add. The memory reference must be 4 bytes wide for
32-bit targets and either 4 or 8 bytes wide for 64-bit targets.
* GCC can now use the clz and dclz instructions to implement the
__builtin_ctz and __builtin_ffs families of functions.
* There is a new __builtin___clear_cache function for flushing the
instruction cache. GCC expands this function inline on MIPS32
revision 2 targets, otherwise it calls the function specified by
-mcache-flush-func.
MIPS16 improvements
* GCC can now compile objects that contain a mixture of MIPS16 and
non-MIPS16 code. There are two new attributes, mips16 and nomips16,
for specifying which mode a function should use.
* A new option called -minterlink-mips16 makes non-MIPS16 code
link-compatible with MIPS16 code.
* After many bug fixes, the long-standing MIPS16 -mhard-float support
should now work fairly reliably.
* GCC can now use the MIPS16e save and restore instructions.
* -fsection-anchors now works in MIPS16 mode. MIPS16 code compiled
with -G0 -fsection-anchors is often smaller than code compiled with
-G8. However, please note that you must usually compile all objects
in your application with the same -G option; see the documentation
of -G for details.
* A new option called-mcode-readable specifies which instructions are
allowed to load from the code segment. -mcode-readable=yes is the
default and says that any instruction may load from the code
segment. The other alternatives are -mcode-readable=pcrel, which
says that only PC-relative MIPS16 instructions may load from the
code segment, and -mcode-readable=no, which says that no
instruction may do so. Please see the documentation for more
details, including example uses.
Small-data improvements
There are three new options for controlling small data:
* -mno-extern-sdata, which disables small-data accesses for
externally-defined variables. Code compiled with -Gn
-mno-extern-sdata will be link-compatible with any -G setting
between -G0 and -Gn inclusive.
* -mno-local-sdata, which disables the use of small-data sections for
data that is not externally visible. This option can be a useful
way of reducing small-data usage in less performance-critical parts
of an application.
* -mno-gpopt, which disables the use of the $gp register while still
honoring the -G limit when placing externally-visible data. This
option implies -mno-extern-sdata and -mno-local-sdata and it can be
useful in situations where $gp does not necessarily hold the
expected value.
Miscellaneous improvements
* There is a new option called -mbranch-cost for tweaking the
perceived cost of branches.
* If GCC is configured to use a version of GAS that supports the
.gnu_attribute directive, it will use that directive to record
certain properties of the output code. .gnu_attribute is new to GAS
2.18.
* There are two new function attributes, near and far, for overriding
the command-line setting of -mlong-calls on a function-by-function
basis.
* -mfp64, which previously required a 64-bit target, now works with
MIPS32 revision 2 targets as well. The mipsisa*-elfoabi* and
mipsisa*-sde-elf* configurations provide suitable library support.
* GCC now recognizes the -mdmx and -mmt options and passes them down
to the assembler. It does nothing else with the options at present.
SPU (Synergistic Processor Unit) of the Cell Broadband Engine Architecture
(BEA)
* Support has been added for this new architecture.
RS6000 (POWER/PowerPC)
* Support for the PowerPC 750CL paired-single instructions has been
added with a new powerpc-*-linux*paired* target configuration. It
is enabled by an associated -mpaired option and can be accessed
using new built-in functions.
* Support for auto-detecting architecture and system configuration to
auto-select processor optimization tuning.
* Support for VMX on AIX 5.3 has been added.
* Support for AIX Version 6.1 has been added.
S/390, zSeries and System z9
* Support for the IBM System z9 EC/BC processor (z9 GA3) has been
added. When using the -march=z9-ec option, the compiler will
generate code making use of instructions provided by the decimal
floating point facility and the floating point conversion facility
(pfpo). Besides the instructions used to implement decimal floating
point operations these facilities also contain instructions to move
between general purpose and floating point registers and to modify
and copy the sign-bit of floating point values.
* When the -march=z9-ec option is used the new
-mhard-dfp/-mno-hard-dfp options can be used to specify whether the
decimal floating point hardware instructions will be used or not.
If none of them is given the hardware support is enabled by
default.
* The -mstack-guard option can now be omitted when using stack
checking via -mstack-size in order to let GCC choose a sensible
stack guard value according to the frame size of each function.
* Various changes to improve performance of generated code have been
implemented, including:
+ The condition code set by an add logical with carry
instruction is now available for overflow checks like: a + b +
carry < b.
+ The test data class instruction is now used to implement
sign-bit and infinity checks of binary and decimal floating
point numbers.
Xtensa
* Stack unwinding for exception handling now uses by default a
specialized version of DWARF unwinding. This is not
binary-compatible with the setjmp/longjmp (sjlj) unwinding used for
Xtensa with previous versions of GCC.
* For Xtensa processors that include the Conditional Store option,
the built-in functions for atomic memory access are now implemented
using S32C1I instructions.
* If the Xtensa NSA option is available, GCC will use it to implement
the __builtin_ctz and __builtin_clz functions.
Documentation improvements
Other significant improvements
* The compiler's --help command-line option has been extended so that
it now takes an optional set of arguments. These arguments restrict
the information displayed to specific classes of command-line
options, and possibly only a subset of those options. It is also
now possible to replace the descriptive text associated with each
displayed option with an indication of its current value, or for
binary options, whether it has been enabled or disabled.
Here are some examples. The following will display all the options
controlling warning messages:
--help=warnings
Whereas this will display all the undocumented, target specific
options:
--help=target,undocumented
This sequence of commands will display the binary optimizations
that are enabled by -O3:
gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
diff /tmp/O2-opts /tmp/O3-opts | grep enabled
* The configure options --with-pkgversion and --with-bugurl have been
added. These allow distributors of GCC to include a
distributor-specific string in manuals and --version output and to
specify the URL for reporting bugs in their versions of GCC.
Please send FSF & GNU inquiries & questions to [23]gnu@gnu.org. There
are also [24]other ways to contact the FSF.
These pages are maintained by [25]the GCC team.
For questions related to the use of GCC, please consult these web
pages and the [26]GCC manuals. If that fails, the
[27]gcc-help@gcc.gnu.org mailing list might help.
Please send comments on these web pages and the development of GCC to
our developer mailing list at [28]gcc@gnu.org or [29]gcc@gcc.gnu.org.
All of our lists have [30]public archives.
Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
Floor, Boston, MA 02110, USA.
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
Last modified 2008-02-28 [31]Valid XHTML 1.0
References
1. http://gmplib.org/
2. http://www.mpfr.org/
3. http://gcc.gnu.org/install/prerequisites.html
4. http://gcc.gnu.org/ml/gcc-announce/2001/msg00000.html
5. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
6. http://gcc.gnu.org/gcc-4.3/porting_to.html
7. http://www.mpfr.org/
8. http://www.mpfr.org/
9. http://www.mpfr.org/
10. http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
11. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
12. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
13. http://gcc.gnu.org/onlinedocs/libstdc++/ext/tr1.html
14. http://gcc.gnu.org/onlinedocs/libstdc++/ext/parallel_mode.html
15. http://gmplib.org/
16. http://www.mpfr.org/
17. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options
18. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167
19. http://gcc.gnu.org/onlinedocs/gfortran/GAMMA.html
20. http://gcc.gnu.org/onlinedocs/gfortran/LGAMMA.html
21. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html
22. http://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html
23. mailto:gnu@gnu.org
24. http://www.gnu.org/home.html#ContactInfo
25. http://gcc.gnu.org/about.html
26. http://gcc.gnu.org/onlinedocs/
27. mailto:gcc-help@gcc.gnu.org
28. mailto:gcc@gnu.org
29. mailto:gcc@gcc.gnu.org
30. http://gcc.gnu.org/lists.html
31. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-4.2/index.html
GCC 4.2 Release Series
February 1, 2008
The [1]GNU project and the GCC developers are pleased to announce the
release of GCC 4.2.3.
This release is a bug-fix release, containing fixes for regressions in
GCC 4.2.2 relative to previous releases of GCC.
Release History
GCC 4.2.3
February 1, 2008 ([2]changes)
GCC 4.2.2
October 7, 2007 ([3]changes)
GCC 4.2.1
July 18, 2007 ([4]changes)
GCC 4.2.0
May 13, 2007 ([5]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 [6]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 [7]amazing group of volunteers is
what makes GCC successful.
For additional information about GCC please refer to the [8]GCC project
web site or contact the [9]GCC development mailing list.
To obtain GCC please use [10]our mirror sites, one of the [11]GNU
mirror sites, or [12]our SVN server.
Please send FSF & GNU inquiries & questions to [13]gnu@gnu.org. There
are also [14]other ways to contact the FSF.
These pages are maintained by [15]the GCC team.
For questions related to the use of GCC, please consult these web
pages and the [16]GCC manuals. If that fails, the
[17]gcc-help@gcc.gnu.org mailing list might help.
Please send comments on these web pages and the development of GCC to
our developer mailing list at [18]gcc@gnu.org or [19]gcc@gcc.gnu.org.
All of our lists have [20]public archives.
Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth
Floor, Boston, MA 02110, USA.
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.
Last modified 2008-02-01 [21]Valid XHTML 1.0
References
1. http://www.gnu.org/
2. http://gcc.gnu.org/gcc-4.2/changes.html
3. http://gcc.gnu.org/gcc-4.2/changes.html
4. http://gcc.gnu.org/gcc-4.2/changes.html
5. http://gcc.gnu.org/gcc-4.2/changes.html
6. http://gcc.gnu.org/gcc-4.2/buildstat.html
7. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
8. http://gcc.gnu.org/index.html
9. mailto:gcc@gcc.gnu.org
10. http://gcc.gnu.org/mirrors.html
11. http://www.gnu.org/order/ftp.html
12. http://gcc.gnu.org/svn.html
13. mailto:gnu@gnu.org
14. http://www.gnu.org/home.html#ContactInfo
15. http://gcc.gnu.org/about.html
16. http://gcc.gnu.org/onlinedocs/
17. mailto:gcc-help@gcc.gnu.org
18. mailto: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.2/changes.html
GCC 4.2 Release Series
Changes, New Features, and Fixes
Caveats
* GCC no longer accepts the -fshared-data option. This option has had
no effect in any GCC 4 release; the targets to which the option
used to apply had been removed before GCC 4.0.
General Optimizer Improvements
* New command-line options specify the possible relationships among
parameters and between parameters and global data. For example,
-fargument-noalias-anything specifies that arguments do not alias
any other storage.
Each language will automatically use whatever option is required by
the language standard. You should not need to use these options
yourself.
New Languages and Language specific improvements
* [1]OpenMP is now supported for the C, C++ and Fortran compilers.
* New command-line options -fstrict-overflow and -Wstrict-overflow
have been added. -fstrict-overflow tells the compiler that it may
assume that the program follows the strict signed overflow
semantics permitted for the language: for C and C++ this means that
the compiler may assume that signed overflow does not occur. For
example, a loop like
for (i = 1; i > 0; i *= 2)
is presumably intended to continue looping until i overflows. With
-fstrict-overflow, the compiler may assume that signed overflow
will not occur, and transform this into an infinite loop.
-fstrict-overflow is turned on by default at -O2, and may be
disabled via -fno-strict-overflow. The -Wstrict-overflow option may
be used to warn about cases where the compiler assumes that signed
overflow will not occur. It takes five different levels:
-Wstrict-overflow=1 to 5. See the [2]documentation for details.
-Wstrict-overflow=1 is enabled by -Wall.
* The new command-line option -fno-toplevel-reorder directs GCC to
emit top-level functions, variables, and asm statements in the same
order that they appear in the input file. This is intended to
support existing code which relies on a particular ordering (for
example, code which uses top-level asm statements to switch
sections). For new code, it is generally better to use function and
variable attributes. The -fno-toplevel-reorder option may be used
for most cases which currently use -fno-unit-at-a-time. The
-fno-unit-at-a-time option will be removed in some future version
of GCC. If you know of a case which requires -fno-unit-at-a-time
which is not fixed by -fno-toplevel-reorder, please [3]open a bug
report.
C family
* The pragma redefine_extname will now macro expand its tokens for
compatibility with SunPRO.
* In the next release of GCC, 4.3, -std=c99 or -std=gnu99 will direct
GCC to handle inline functions as specified in the C99 standard. In
preparation for this, GCC 4.2 will warn about any use of non-static
inline functions in gnu99 or c99 mode. This new warning may be
disabled with the new gnu_inline function attribute or the new
-fgnu89-inline command-line option. Also, GCC 4.2 and later will
define one of the preprocessor macros __GNUC_GNU_INLINE__ or
__GNUC_STDC_INLINE__ to indicate the semantics of inline functions
in the current compilation.
* A new command-line option -Waddress has been added to warn about
suspicious uses of memory addresses as, for example, using the
address of a function in a conditional expression, and comparisons
against the memory address of a string literal. This warning is
enabled by -Wall.
C++
* C++ visibility handling has been overhauled.
Restricted visiblity is propagated from classes to members, from
functions to local statics, and from templates and template
arguments to instantiations, unless the latter has explicitly
declared visibility.
The visibility attribute for a class must come between the
class-key and the name, not after the closing brace.
Attributes are now allowed for enums and elaborated-type-specifiers
that only declare a type.
Members of the anonymous namespace are now local to a particular
translation unit, along with any other declarations which use them,
though they are still treated as having external linkage for
language semantics.
* The (undocumented) extension which permitted templates with default
arguments to be bound to template template parameters with fewer
parameters has been removed. For example:
template <template <typename> class C>
void f(C<double>) {}