-
Notifications
You must be signed in to change notification settings - Fork 1
/
NEWS
10555 lines (9188 loc) · 456 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.4/index.html
GCC 4.4 Release Series
October 15, 2009
The [1]GNU project and the GCC developers are pleased to announce the
release of GCC 4.4.3.
This release is a bug-fix release, containing fixes for regressions in
GCC 4.4.1 relative to previous releases of GCC.
Release History
GCC 4.4.3
January 21, 2010 ([2]changes)
GCC 4.4.2
October 15, 2009 ([3]changes)
GCC 4.4.1
July 22, 2009 ([4]changes)
GCC 4.4.0
April 21, 2009 ([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 or [11]our SVN server.
Please send FSF & GNU inquiries & questions to [12][email protected]. There
are also [13]other ways to contact the FSF.
These pages are maintained by [14]the GCC team.
For questions related to the use of GCC, please consult these web
pages and the [15]GCC manuals. If that fails, the
[16][email protected] mailing list might help.
Please send comments on these web pages and the development of GCC to
our developer mailing list at [17][email protected] or [18][email protected].
All of our lists have [19]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 2010-01-21 [20]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/buildstat.html
7. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
8. http://gcc.gnu.org/index.html
9. mailto:[email protected]
10. http://gcc.gnu.org/mirrors.html
11. http://gcc.gnu.org/svn.html
12. mailto:[email protected]
13. http://www.gnu.org/home.html#ContactInfo
14. http://gcc.gnu.org/about.html
15. http://gcc.gnu.org/onlinedocs/
16. mailto:[email protected]
17. mailto:[email protected]
18. mailto:[email protected]
19. http://gcc.gnu.org/lists.html
20. 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.3.
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
example, given a loop like:
DO I = 1, N
DO J = 1, M
A(J, I) = B(I) + C(J)
ENDDO
ENDDO
loop blocking will transform the loop as if the user had
written:
DO II = 1, N, 64
DO JJ = 1, M, 64
DO I = II, min (II + 63, N)
DO J = JJ, min (JJ + 63, M)
A(J, I) = B(I) + C(J)
ENDDO
ENDDO
ENDDO
ENDDO
which can be beneficial when M is larger than the caches,
because the innermost loop will iterate over a smaller amount
of data that can be kept in the caches.
* A new register allocator has replaced the old one. It is called
integrated register allocator (IRA) because coalescing, register
live range splitting, and hard register preferencing are done
on-the-fly during coloring. It also has better integration with the
reload pass. IRA is a regional register allocator which uses modern
Chaitin-Briggs coloring instead of Chow's priority coloring used in
the old register allocator. More info about IRA internals and
options can be found in the GCC manuals.
* A new instruction scheduler and software pipeliner, based on the
selective scheduling approach, has been added. The new pass
performs instruction unification, register renaming, substitution
through register copies, and speculation during scheduling. The
software pipeliner is able to pipeline non-countable loops. The new
pass is targeted at scheduling-eager in-order platforms. In GCC 4.4
it is available for the Intel Itanium platform working by default
as the second scheduling pass (after register allocation) at the
-O3 optimization level.
* When using -fprofile-generate with a multi-threaded program, the
profile counts may be slightly wrong due to race conditions. The
new -fprofile-correction option directs the compiler to apply
heuristics to smooth out the inconsistencies. By default the
compiler will give an error message when it finds an inconsistent
profile.
* The new -fprofile-dir=PATH option permits setting the directory
where profile data files are stored when using -fprofile-generate
and friends, and the directory used when reading profile data files
using -fprofile-use and friends.
New warning options
* The new -Wframe-larger-than=NUMBER option directs GCC to emit a
warning if any stack frame is larger than NUMBER bytes. This may be
used to help ensure that code fits within a limited amount of stack
space.
* The new -Wno-mudflap option disables warnings about constructs
which can not be instrumented when using -fmudflap.
New Languages and Language specific improvements
* Version 3.0 of the [5]OpenMP specification is now supported for the
C, C++, and Fortran compilers.
* New character data types, per [6]TR 19769: New character types in
C, are now supported for the C compiler in -std=gnu99 mode, as
__CHAR16_TYPE__ and __CHAR32_TYPE__, and for the C++ compiler in
-std=c++0x and -std=gnu++0x modes, as char16_t and char32_t too.
C family
* A new optimize attribute was added to allow programmers to change
the optimization level and particular optimization options for an
individual function. You can also change the optimization options
via the GCC optimize pragma for functions defined after the pragma.
The GCC push_options pragma and the GCC pop_options pragma allow
you temporarily save and restore the options used. The GCC
reset_options pragma restores the options to what was specified on
the command line.
* Uninitialized warnings do not require enabling optimization
anymore, that is, -Wuninitialized can be used together with -O0.
Nonetheless, the warnings given by -Wuninitialized will probably be
more accurate if optimization is enabled.
* -Wparentheses now warns about expressions such as (!x | y) and (!x
& y). Using explicit parentheses, such as in ((!x) | y), silences
this warning.
* -Wsequence-point now warns within if, while,do while and for
conditions, and within for begin/end expressions.
* A new option -dU is available to dump definitions of preprocessor
macros that are tested or expanded.
C++
* [7]Improved experimental support for the upcoming ISO C++ standard,
C++0x. Including support for auto, inline namespaces, generalized
initializer lists, defaulted and deleted functions, new character
types, and scoped enums.
* Those errors that may be downgraded to warnings to build legacy
code now mention -fpermissive when -fdiagnostics-show-option is
enabled.
* -Wconversion now warns if the result of a static_cast to enumeral
type is unspecified because the value is outside the range of the
enumeral type.
* -Wuninitialized now warns if a non-static reference or non-static
const member appears in a class without constructors.
* G++ now properly implements value-initialization, so objects with
an initializer of () and an implicitly defined default constructor
will be zero-initialized before the default constructor is called.
Runtime Library (libstdc++)
* [8]Improved experimental support for the upcoming ISO C++ standard,
C++0x, including:
+ Support for <chrono>, <condition_variable>, <cstdatomic>,
<forward_list>, <initializer_list>, <mutex>, <ratio>,
<system_error>, and <thread>.
+ unique_ptr, <algorithm> additions, exception propagation, and
support for the new character types in <string> and <limits>.
+ Existing facilities now exploit initializer lists, defaulted
and deleted functions, and the newly implemented core C++0x
features.
+ Some standard containers are more efficient together with
stateful allocators, i.e., no allocator is constructed on the
fly at element construction time.
* Experimental support for non-standard pointer types in containers.
* The long standing libstdc++/30928 has been fixed for targets
running glibc 2.10 or later.
* As usual, many small and larger bug fixes, in particular quite a
few corner cases in <locale>.
Fortran
* GNU Fortran now employs libcpp directly instead of using cc1 as an
external preprocessor. The [9]-cpp option was added to allow manual
invocation of the preprocessor without relying on filename
extensions.
* The [10]-Warray-temporaries option warns about array temporaries
generated by the compiler, as an aid to optimization.
* The [11]-fcheck-array-temporaries option has been added, printing a
notification at run time, when an array temporary had to be created
for an function argument. Contrary to -Warray-temporaries the
warning is only printed if the array is noncontiguous.
* Improved generation of DWARF debugging symbols
* If using an intrinsic not part of the selected standard (via -std=
and -fall-intrinsics) gfortran will now treat it as if this
procedure were declared EXTERNAL and try to link to a user-supplied
procedure. -Wintrinsics-std will warn whenever this happens. The
now-useless option -Wnonstd-intrinsic was removed.
* The flag -falign-commons has been added to control the alignment of
variables in COMMON blocks, which is enabled by default in line
with previous GCC version. Using -fno-align-commons one can force
commons to be contiguous in memory as required by the Fortran
standard, however, this slows down the memory access. The option
-Walign-commons, which is enabled by default, warns when padding
bytes were added for alignment. The proper solution is to sort the
common objects by decreasing storage size, which avoids the
alignment problems.
* Fortran 2003 support has been extended:
+ Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 I/O is
now supported (except internal reads from/writes to wide
strings). [12]-fbackslash now supports also \unnnn and
\Unnnnnnnn to enter Unicode characters.
+ Asynchronous I/O (implemented as synchronous I/O) and the
decimal=, size=, sign=, pad=, blank=, and delim= specifiers
are now supported in I/O statements.
+ Support for Fortran 2003 structure constructors and for array
constructor with typespec has been added.
+ Procedure Pointers (but not yet as component in derived types
and as function results) are now supported.
+ Abstract types, type extension, and type-bound procedures
(both PROCEDURE and GENERIC but not as operators). Note: As
CLASS/polymorphyic types are not implemented, type-bound
procedures with PASS accept as non-standard extension TYPE
arguments.
* Fortran 2008 support has been added:
+ The -std=f2008 option and support for the file extensions
.f2008 and .F2008 has been added.
+ The g0 format descriptor is now supported.
+ The Fortran 2008 mathematical intrinsics ASINH, ACOSH, ATANH,
ERF, ERFC, GAMMA, LOG_GAMMA, BESSEL_*, HYPOT, and ERFC_SCALED
are now available (some of them existed as GNU extension
before). Note: The hyperbolic functions are not yet supporting
complex arguments and the three- argument version of BESSEL_*N
is not available.
+ The bit intrinsics LEADZ and TRAILZ have been added.
Java (GCJ)
Ada
* The Ada runtime now supports multilibs on many platforms including
x86_64, SPARC and PowerPC. Their build is enabled by default.
New Targets and Target Specific Improvements
ARM
* GCC now supports optimizing for the Cortex-A9, Cortex-R4 and
Cortex-R4F processors and has many other improvements to
optimization for ARM processors.
* GCC now supports the VFPv3 variant with 16 double-precision
registers with -mfpu=vfpv3-d16. The option -mfpu=vfp3 has been
renamed to -mfpu=vfpv3.
* GCC now supports the -mfix-cortex-m3-ldrd option to work around an
erratum on Cortex-M3 processors.
* GCC now supports the __sync_* atomic operations for ARM EABI
GNU/Linux.
* The section anchors optimization is now enabled by default when
optimizing for ARM.
* GCC now uses a new EABI-compatible profiling interface for EABI
targets. This requires a function __gnu_mcount_nc, which is
provided by GNU libc versions 2.8 and later.
AVR
* The -mno-tablejump option has been deprecated because it has the
same effect as the -fno-jump-tables option.
* Added support for these new AVR devices:
+ ATA6289
+ ATtiny13A
+ ATtiny87
+ ATtiny167
+ ATtiny327
+ ATmega8C1
+ ATmega16C1
+ ATmega32C1
+ ATmega8M1
+ ATmega16M1
+ ATmega32M1
+ ATmega32U4
+ ATmega16HVB
+ ATmega4HVD
+ ATmega8HVD
+ ATmega64C1
+ ATmega64M1
+ ATmega16U4
+ ATmega32U6
+ ATmega128RFA1
+ AT90PWM81
+ AT90SCR100
+ M3000F
+ M3000S
+ M3001B
IA-32/x86-64
* Support for Intel AES built-in functions and code generation is
available via -maes.
* Support for Intel PCLMUL built-in function and code generation is
available via -mpclmul.
* Support for Intel AVX built-in functions and code generation is
available via -mavx.
* Automatically align the stack for local variables with alignment
requirement.
* GCC can now utilize the SVML library for vectorizing calls to a set
of C99 functions if -mveclibabi=svml is specified and you link to
an SVML ABI compatible library.
* On x86-64, the ABI has been changed in the following cases to
conform to the x86-64 ABI:
+ Passing/returning structures with flexible array member:
struct foo
{
int i;
int flex[];
};
+ Passing/returning structures with complex float member:
struct foo
{
int i;
__complex__ float f;
};
+ Passing/returning unions with long double member:
union foo
{
int x;
long double ld;
};
Code built with previous versions of GCC that uses any of these is
not compatible with code built with GCC 4.4.0 or later.
* A new target attribute was added to allow programmers to change the
target options like -msse2 or -march=k8 for an individual function.
You can also change the target options via the GCC target pragma
for functions defined after the pragma.
* GCC can now be configured with options --with-arch-32,
--with-arch-64, --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.
IA-32/IA64
* Support for __float128 (TFmode) IEEE quad type and corresponding
TCmode IEEE complex quad type is available via the soft-fp library
on IA-32/IA64 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, IA64
only) integer types. Additionally, all operations generate the full
set of IEEE exceptions and support the full set of IEEE rounding
modes.
M68K/ColdFire
* GCC now supports instruction scheduling for ColdFire V1, V3 and V4
processors. (Scheduling support for ColdFire V2 processors was
added in GCC 4.3.)
* GCC now supports the -mxgot option to support programs requiring
many GOT entries on ColdFire.
* The m68k-*-linux-gnu target now builds multilibs by default.
MIPS
* MIPS Technologies have extended the original MIPS SVR4 ABI to
include support for procedure linkage tables (PLTs) and copy
relocations. These extensions allow GNU/Linux executables to use a
significantly more efficient code model than the one defined by the
original ABI.
GCC support for this code model is available via a new command-line
option, -mplt. There is also a new configure-time option,
--with-mips-plt, to make -mplt the default.
The new code model requires support from the assembler, the linker,
and the runtime C library. This support is available in binutils
2.19 and GLIBC 2.9.
* GCC can now generate MIPS16 code for 32-bit GNU/Linux executables
and 32-bit GNU/Linux shared libraries. This feature requires GNU
binutils 2.19 or above.
* Support for RMI's XLR processor is now available through the
-march=xlr and -mtune=xlr options.
* 64-bit targets can now perform 128-bit multiplications inline,
instead of relying on a libgcc function.
* Native GNU/Linux toolchains now support -march=native and
-mtune=native, which select the host processor.
* GCC now supports the R10K, R12K, R14K and R16K processors. The
canonical -march= and -mtune= names for these processors are
r10000, r12000, r14000 and r16000 respectively.
* GCC can now work around the side effects of speculative execution
on R10K processors. Please see the documentation of the
-mr10k-cache-barrier option for details.
* Support for the MIPS64 Release 2 instruction set has been added.
The option -march=mips64r2 enables generation of these
instructions.
* GCC now supports Cavium Networks' Octeon processor. This support is
available through the -march=octeon and -mtune=octeon options.
* GCC now supports STMicroelectronics' Loongson 2E/2F processors. The
canonical -march= and -mtune= names for these processors are
loongson2e and loongson2f.
picochip
Picochip is a 16-bit processor. A typical picoChip contains over 250
small cores, each with small amounts of memory. There are three
processor variants (STAN, MEM and CTRL) with different instruction sets
and memory configurations and they can be chosen using the -mae option.
This port is intended to be a "C" only port.
Power Architecture and PowerPC
* GCC now supports the e300c2, e300c3 and e500mc processors.
* GCC now supports Xilinx processors with a single-precision FPU.
* Decimal floating point is now supported for e500 processors.
S/390, zSeries and System z9/z10
* Support for the IBM System z10 EC/BC processor has been added. When
using the -march=z10 option, the compiler will generate code making
use of instructions provided by the General-Instruction-Extension
Facility and the Execute-Extension Facility.
VxWorks
* GCC now supports the thread-local storage mechanism used on
VxWorks.
Xtensa
* GCC now supports thread-local storage (TLS) for Xtensa processor
configurations that include the Thread Pointer option. TLS also
requires support from the assembler and linker; this support is
provided in the GNU binutils beginning with version 2.19.
Documentation improvements
Other significant improvements
GCC 4.4.1
This is the [13]list of problem reports (PRs) from GCC's bug tracking
system that are known to be fixed in the 4.4.1 release. This list might
not be complete (that is, it is possible that some PRs that have been
fixed are not listed here).
GCC 4.4.2
This is the [14]list of problem reports (PRs) from GCC's bug tracking
system that are known to be fixed in the 4.4.2 release. This list might
not be complete (that is, it is possible that some PRs that have been
fixed are not listed here).
GCC 4.4.3
This is the [15]list of problem reports (PRs) from GCC's bug tracking
system that are known to be fixed in the 4.4.3 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 [16][email protected]. There
are also [17]other ways to contact the FSF.
These pages are maintained by [18]the GCC team.
For questions related to the use of GCC, please consult these web
pages and the [19]GCC manuals. If that fails, the
[20][email protected] mailing list might help.
Please send comments on these web pages and the development of GCC to
our developer mailing list at [21][email protected] or [22][email protected].
All of our lists have [23]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 2010-01-21 [24]Valid XHTML 1.0
References
1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.3
2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
3. http://gcc.gnu.org/gcc-4.4/porting_to.html
4. http://gcc.gnu.org/wiki/Graphite
5. http://openmp.org/wp/openmp-specifications/
6. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
7. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html
8. http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#id476343
9. http://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html
10. http://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWarray-temporaries_007d-125
11. http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcheck-array-temporaries_007d-221
12. http://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bbackslash_007d-34
13. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.1
14. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.2
15. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.3
16. mailto:[email protected]
17. http://www.gnu.org/home.html#ContactInfo
18. http://gcc.gnu.org/about.html
19. http://gcc.gnu.org/onlinedocs/
20. mailto:[email protected]
21. mailto:[email protected]
22. mailto:[email protected]
23. http://gcc.gnu.org/lists.html
24. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-4.3/index.html
GCC 4.3 Release Series
January 24, 2009
The [1]GNU project and the GCC developers are pleased to announce the
release of GCC 4.3.4.
This release is a bug-fix release, containing fixes for regressions in
GCC 4.3.3 relative to previous releases of GCC.
Release History
GCC 4.3.4
August 4, 2009 ([2]changes)
GCC 4.3.3
January 24, 2009 ([3]changes)
GCC 4.3.2
August 27, 2008 ([4]changes)
GCC 4.3.1
June 6, 2008 ([5]changes)
GCC 4.3.0
March 5, 2008 ([6]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 [7]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 [8]amazing group of volunteers is
what makes GCC successful.
For additional information about GCC please refer to the [9]GCC project
web site or contact the [10]GCC development mailing list.
To obtain GCC please use [11]our mirror sites or [12]our SVN server.
Please send FSF & GNU inquiries & questions to [13][email protected]. 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][email protected] mailing list might help.
Please send comments on these web pages and the development of GCC to
our developer mailing list at [18][email protected] or [19][email protected].
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 2009-10-15 [21]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/changes.html
4. http://gcc.gnu.org/gcc-4.3/changes.html
5. http://gcc.gnu.org/gcc-4.3/changes.html
6. http://gcc.gnu.org/gcc-4.3/changes.html
7. http://gcc.gnu.org/gcc-4.3/buildstat.html
8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
9. http://gcc.gnu.org/index.html
10. mailto:[email protected]
11. http://gcc.gnu.org/mirrors.html
12. http://gcc.gnu.org/svn.html
13. mailto:[email protected]
14. http://www.gnu.org/home.html#ContactInfo
15. http://gcc.gnu.org/about.html
16. http://gcc.gnu.org/onlinedocs/
17. mailto:[email protected]
18. mailto:[email protected]
19. mailto:[email protected]
20. http://gcc.gnu.org/lists.html
21. 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
The latest release in the 4.3 release series is [1]GCC 4.3.4.
Caveats
* GCC requires the [2]GMP and [3]MPFR libraries for building all the
various front-end languages it supports. See the [4]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:
+ 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 [5]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 [6]-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.
* The -ftree-vectorize option is now on by default under -O3. In
order to generate code for a SIMD extension, it has to be enabled
as well: use -maltivec for PowerPC platforms and -msse/-msse2 for
i?86 and x86_64.
* More information on porting to GCC 4.3 from previous versions of
GCC can be found in the [7]porting guide for this release.
General Optimizer Improvements
* The GCC middle-end has been integrated with the [8]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 [9]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 [10]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.
* The vectorizer was enhanced to support vectorization of outer
loops, intra-iteration parallelism (loop-aware SLP), vectorization
of strided accesses and loops with multiple data-types. Run-time
dependency testing using loop versioning was added. The cost model,
turned on by -fvect-cost-model, was developed.
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 [11]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.