The mudflap run time checker has been removed. The mudflap options remain, but do nothing.
Support for a number of older systems and recently unmaintained or untested target ports of GCC has been declared obsolete in GCC 4.9. 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:
More information on porting to GCC 4.9 from previous versions of GCC can be found in the porting guide for this release.
-fsanitize=undefined.
Various computations will be instrumented to detect undefined behavior
at runtime. UndefinedBehaviorSanitizer is currently available for the C
and C++ languages.
-flto
option now generates slim objects files (.o) which only
contain intermediate language representation for LTO. Use
-ffat-lto-objects to create files which contain
additionally the object code. To generate static libraries suitable
for LTO processing, use gcc-ar and
gcc-ranlib; to list symbols from a slim object file use
gcc-nm. (Requires that ar,
ranlib and nm have been compiled with
plugin support.)final keyword.-fdevirtualize-speculatively.-freorder-functions) significantly reduces
startup time of large applications. Until binutils support is
completed, it is effective only with link-time optimization.-fopenmp-simd option can be used to enable OpenMP's
SIMD directives, while ignoring other OpenMP directives. The new -fsimd-cost-model= option permits to tune the
vectorization cost model for loops annotated with OpenMP and Cilk
Plus simd directives; -Wopenmp-simd warns when
the current costmodel overrides simd directives set by the user.-Wdate-time option has been added for the C, C++ and
Fortran compilers, which warns when the __DATE__,
__TIME__ or __TIMESTAMP__ macros are used.
Those macros might prevent bit-wise-identical reproducible
compilations.-fdiagnostics-color=auto will enable it when
outputting to terminals, -fdiagnostics-color=always
unconditionally. The GCC_COLORS environment variable
can be used to customize the colors or disable coloring.
If GCC_COLORS variable is present in the environment,
the default is -fdiagnostics-color=auto, otherwise
-fdiagnostics-color=never.
$ g++ -fdiagnostics-color=always -S -Wall test.C
test.C: In function ‘int foo()’:
test.C:1:14: warning: no return statement in function returning non-void [-Wreturn-type]
int foo () { }
^
test.C:2:46: error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum) instantiating ‘struct X<100>’
template <int N> struct X { static const int value = X<N-1>::value; }; template struct X<1000>;
^
test.C:2:46: recursively required from ‘const int X<999>::value’
test.C:2:46: required from ‘const int X<1000>::value’
test.C:2:88: required from here
test.C:2:46: error: incomplete type ‘X<100>’ used in nested name specifier
#pragma GCC ivdep, the user can assert that there are no
loop-carried dependencies which would prevent concurrent execution of
consecutive iterations using SIMD (single instruction multiple data)
instructions.-fcilkplus option. Cilk Plus
is an extension to the C and C++ languages to support data and task
parallelism. The present implementation follows ABI version 1.2; all
features but _Cilk_for have been implemented._Atomic type specifier and
qualifier and the <stdatomic.h> header) are now
supported._Generic keyword) are
now supported._Thread_local,
similar to GNU C __thread) is now supported.-fextended-identifiers is used), floating-point
issues (mainly but not entirely relating to optional C99 features
from Annexes F and G) and the optional Annexes K (Bounds-checking
interfaces) and L (Analyzability).__auto_type provides a subset of
the functionality of C++11 auto in GNU C.
int& f();
auto i1 = f(); // int
decltype(auto) i2 = f(); // int&
[x = 42]{ ... };
Actually, they have been accepted since GCC 4.5, but now the compiler doesn't
warn about them with -std=c++1y, and supports parenthesized and
brace-enclosed initializers as well.
void f(int n) {
int a[n] = { 1, 2, 3 }; // throws std::bad_array_length if n < 3
[&a]{ for (int i : a) { cout << i << endl; } }();
&a; // error, taking address of VLA
}
class A;
int bar(int n);
#if __cplusplus > 201103
class [[deprecated("A is deprecated in C++14; Use B instead")]] A;
[[deprecated("bar is unsafe; use foo() instead")]]
int bar(int n);
int foo(int n);
class B;
#endif
A aa; // warning: 'A' is deprecated : A is deprecated in C++14; Use B instead
int j = bar(2); // warning: 'int bar(int)' is deprecated : bar is unsafe; use foo() instead
int i = 1048576; int j = 1'048'576; int k = 0x10'0000; int m = 0'004'000'000; int n = 0b0001'0000'0000'0000'0000'0000; double x = 1.602'176'565e-19; double y = 1.602'176'565e-1'9;
// a functional object that will increment any type
auto incr = [](auto x) { return x++; };
<regex>;<map> and
<set> and the unordered associative containers
in <unordered_map> and <unordered_set>
meet the allocator-aware container requirements; constexpr member functions without const; std::exchange() utility function; std::make_unique; std::shared_lock; std::result_of SFINAE-friendly; operator() to integral_constant; std::basic_string, std::chrono::duration,
and std::complex; std::equal and std::mismatch; constexpr members to <utility>,
<complex>, <chrono>, and some containers; std::integer_sequence; <functional>s operator functors easier to use
and more generic; std::experimental::optional.std::experimental::string_view.std::copy_exception has been deprecated
and will be removed in a future version. std::make_exception_ptr
should be used instead.
.mod)
has been incremented; additionally, module files are now compressed.
Fortran MODULEs compiled by earlier GCC versions have
to be recompiled, when they are USEd by files compiled
with GCC 4.9, because GCC 4.9 is not able to read .mod
files of earlier GCC versions; attempting to do so gives an error
message. Note: The ABI of the produced assembler data itself has not
changed: object files and libraries are fully compatible to older
versions. (Except for the next items.)INTEGER, REAL,
COMPLEX and LOGICAL, which have
both the VALUE and the OPTIONAL
attribute.CLASS should be recompiled, including all files which
define derived types involved in the type definition used by
polymorphic variables. (Note: Due to the incremented module version,
trying to mix old code with new code will usually give an error
message.)SAVE
attribute.fcntl(), e.g. via
ISO_C_BINDING, before executing the child process.-fno-whole-file
has been removed. (-fwhole-file is the default since
GCC 4.6.) -fwhole-file/-fno-whole-file
continue to be accepted but do not influence the code generation.DO loops with zero iterations. This warning is now
controlled by the -Wzerotrips option, which is implied by
-Wall.NO_ARG_CHECK attribute of the !GCC$ directive can be used to disable the
type-kind-rank (TKR) argument check for a dummy argument. The feature
is similar to ISO/IEC TS 29133:2012's TYPE(*), except that
it additionally also disables the rank check. Variables with
NO_ARG_CHECK have to be dummy arguments and may only be
used as argument to ISO_C_BINDING's C_LOC
and as actual argument to another NO_ARG_CHECK dummy
argument; also the other constraints of TYPE(*) apply.
The dummy arguments should be declared as scalar or assumed-size
variable of type type(*) (recommended) – or of
type integer, real, complex
or logical. With NO_ARG_CHECK, a pointer
to the data without further type or shape information is passed,
similar to C's void*. Note that also TS 29113's
type(*),dimension(..) accepts arguments of any type and
rank; contrary to NO_ARG_CHECK assumed-rank arguments
pass an array descriptor which contains the array shape and stride
of the argument.STOP or ERROR STOP is used to terminate
the execution and any exception (but inexact) is signaling, a warning is
printed to ERROR_UNIT, indicating which exceptions are
signaling. The -ffpe-summary= command-line option can be used to fine-tune
for which exception the warning should be shown.READ) is now handled on systems where
strtod honours the rounding mode. (For output, rounding is
supported since GCC 4.5.) Note that for input, the
compatible rounding mode is handled as nearest
(i.e., for a tie, rounding to an even last significant
[cf. IEC 60559:1989] – while compatible rounds away
from zero for a tie).-march=armv8-a+crc
and -march=armv8-a+crypto options.
-mabi=ilp32. Support for ILP32 is
considered experimental as the ABI specification is still beta.
-mcpu=cortex-a57.cortex-a53
option.
-mneon-for-64bits option.
-mrestrict-it option can be used with
-march=armv7-a or the -march=armv7ve options
to make code generation fully compatible with the deprecated instructions
in ARMv8-A.
-march=armv7ve option.
-march=armv8-a+crc
and mfpu=crypto-neon-fp-armv8 options.
-mno-lra option. This option is purely
transitionary command line option and will be removed in a future
release. We are interested in any bug reports regarding functional and
performance regressions with LRA.
-mslow-flash-data to improve performance
of programs fetching data on slow flash memory has now been
introduced for the ARMv7-M profile cores.
-mpic-data-is-text-relative for targets
that allows data segments to be relative to text segments has
been added. This is on by default for all targets except VxWorks RTP.
-mcpu=cortex-a12 and -mcpu=cortex-r7 options.
-mcpu=cortex-a57 and -mcpu=cortex-a53
options.
-mcpu=cortex-a57.cortex-a53
option. Similar support was added for the combination of
Cortex-A15 and Cortex-A7 through the -mcpu=cortex-a15.cortex-a7
option.
-mfpmath=sse is now implied by -ffast-math
on all targets where SSE2 is supported.-mavx512f, AVX-512 prefetch instructions: -mavx512pf,
AVX-512 exponential and reciprocal instructions: -mavx512er,
AVX-512 conflict detection instructions: -mavx512cd.
-mxxx option.
This improves the usability of x86 intrinsics and is particularly useful
when doing Function Multiversioning.
-march=silvermont.
-march=broadwell.
-march=nehalem, westmere,
sandybridge, ivybridge,
haswell, bonnell.
-march=generic has been retuned for better support of
Intel core and AMD Bulldozer architectures. Performance of AMD K7, K8,
Intel Pentium-M, and Pentium4 based CPUs is no longer considered important
for generic.
-mtune=intel can now be used to generate code running
well on the most current Intel processors, which are Haswell
and Silvermont for GCC 4.9.
-m16 command-line option.
memcpy and memset
that is aware of value ranges and produces shorter alignment prologues.
-mno-accumulate-outgoing-args is now honored when unwind
information is output. Argument accumulation is also now turned off
for portions of programs optimized for size.-march=bdver4 and
-mtune=bdver4 options.-mcpu= has been added to the MSP430 backend.
This option is used to specify the ISA to be used. Accepted values are
msp430 (the default), msp430x and msp430xv2. The ISA is no longer deduced
from the -mmcu= option as there are far too many different MCU names. The
-mmcu= option is still supported, and this is still used to select linker
scripts and generate a C preprocessor symbol that will be recognised by the
msp430.h header file.-mcpu=power8 and -mtune=power8 options.-march=zEC12 option but can explicitly be
disabled with -mno-htm.
Using the GCC builtins also libitm supports hardware
transactions on S/390.-mhotpatch for a compilation unit or can be
enabled per function using the hotpatch
attribute.-march=z10
or higher.clips and clipu
instructions. The compiler will now try to utilize them for min/max
expressions such as max (-128, min (127, x)).cmp/str instruction through built-in
functions such as __builtin_strlen. When not optimizing for
size, the compiler will now expand calls to e.g. strlen as an
inlined sequences which utilize the cmp/str instruction.-mcbranchdi has been deprecated. Specifying it
will result in a warning and will not influence code generation.-mcmpeqdi has been deprecated. Specifying it
will result in a warning and will not influence code generation.Copyright (C) Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
These pages are maintained by the GCC team. Last modified 2014-04-22.