of GCC (usually an upstream release). It starts out as GCC 4.6.1 and
is thus in conflict with lang/gcc46 and will move towards later minor
versions of GCC 4.6 and then on to GCC 4.7.
lang/gcc will provide gcc46, g++46, gfortran46 etc. exactly like
lang/gcc46 with which it is interchangible.
This is also planned to be in sync with our existing USE_FORTRAN knob
so that users have the option of using this port, rarely updated, or
the corresponding lang/gcc46 which follows weekly upstream snapshots.
On the way rename %%GCC_VER%% in pkg-plist to %%GCC_VERSION%% and
make the Makefile machinery a bit more generic to minimize differences
between lang/gcc ports based on releases and those based on snapshots.
PR: 156857
Enable c, c++, and fortran (and only these) explicitly by default, and
Java when/where available. [1]
Reported by: Scott Allendorf <scott-allendorf@uiowa.edu> [1]
Replace the, now dysfunctional, post-patch target with a configure
option that marks this build of GCC as "FreeBSD Ports Collection". [1]
Reported by: Bjoern Koenig <bkoenig@alpha-tierchen.de> [1]
to sensibly list here, but http://gcc.gnu.org/gcc-4.6/changes.html has a
nice overview.
Some highlights include
- a new quad-precision library that's used by the Fortran frontend
(on x86 and amd64);
- new -Wunused-but-set-variable and -Wunused-but-set-parameter warnings
for C family languages (enabled by -Wall and -Wall -Wextra, too);
- new -Wdouble-promotion warning for implicit promotions to double;
- a new general optimization level -Ofast combines -O3 with options that
can affect standards compliance but result in better optimized code;
- link-time optimizations (LTO) now scaling to large input sizes, using
better heuristics, and optimizing more aggressively;
- new command-line options -fstack-usage and -fstrict-volatile-bitfields
(for precisely defining and accessing memory-mapped peripheral registers);
- function attribute leaf that allows for more aggressive optimizations;
- new data type __int128 for targets having wide enough machine-mode support;
- support for selectively enabling and disabling warnings via
#pragma GCC diagnostic has been added. For instance:
#pragma GCC diagnostic error "-Wuninitialized"
foo(a); /* error is given for this one */
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wuninitialized"
foo(b); /* no diagnostic for this one */
#pragma GCC diagnostic pop
foo(c); /* error is given for this one */
#pragma GCC diagnostic pop
foo(d); /* depends on command line options */
- new command-line option-fmax-errors=N;
- experimental support for some features from the upcoming ISO C1X;
- similarly for ISO C++0x including constexpr, nullptr, noexcept,
unrestricted unions, range-based for loops, opaque enums, implicitly
deleted functions, and implicit move constructors;
- default warning when integers are cast to larger pointer types,
to disable via -Wno-int-to-pointer-cast;
- signficiantly better diagnostics for C++ code;
- loads and loads and loads of improvements to the Fortran frontend;
- a new Go frontend and run-time library;
- massive work on Objective-C and Objective-C++; notably extensive
support for Objective-C 2.0 (not enabled by this port yet);
- support for Intel Core 2 processors (-march=core2, -mtune=core2),
Intel Core i3/i5/i7 processors /with AVS (-march=corei7, -mtune=corei7,
-march=corei7-avx, -mtune=corei7-avx);
- support for AMD Bobcat (fam 14) processors (-march=btver1, -mtune=btver1);
Caveat:
- Most libstdc++ standard headers have been changed to no longer include
the cstddef header as an implementation detail.
This addresses the pollution of common namespace by
share/python/aotcompile.py and share/python/classfile.py which are
now saved in version-specific directories.
By means of an extra patch default code generation on i386 now
defaults to i486 on FreeBSD 6 and above. [1]
Submitted by: tijl [1]
Reported by: Yuri Karaban <tech@askold.net> [1]
PR: 154364 [1]
This addresses the pollution of common namespace by
share/python/aotcompile.py and share/python/classfile.py which now
go into version-specific directories.
By means of an extra patch default code generation on i386 defaults
to i486 on FreeBSD 6 and above. [1]
Submitted by: tijl [1]
Reported by: Yuri Karaban <tech@askold.net> [1]
PR: 154364 [1]
a long standing issue around libgcj that's been hitting us and allows
me to remove the stop gap I had put in place years ago. [1]
PR: 81788 [1]
Feature safe: yes
(better support for 128 bit floating point types, which for now poisons
global include file namespace though this won't be an issue before GCC
4.7 and I have reported it upstream).
link-time optimization framework and optimizations. GCC 4.6 has been
seeing a lot of work since GCC 4.5, but we are still keeping this
disable by default for now
Using LTO adds libelf as a new dependency and in either case the
environment does not have an influence any more. Bumping PORTREVISION
since someone who had libelf on his system previously to this change
would get LTO enabled automatically and then run into problems if libelf
was removed.
work with the ancient version of GNU as that is part of FreeBSD 8.1 and
earlier (and likely later), so where the dependency this port has on
devel/binutils was a strong recommendation until now and necessary to
leverage new processor features and the -mtune=native option when running
on those newer processors, it is now strictly needed on x86-64 at least.
system tools. The latter are half a decade old and fail to properly
support modern CPUs and their standard features such as SSE or AVX in
the case of AMD64/Intel64 which means that they even break when using
a simple -march=native.
On the way, sort CONFIGURE_ARGS.
PR: 140995, 136607