X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=i686-linux-gnu-4.7%2Fusr%2Fshare%2Fdoc%2Fgcc-4.7-base%2FNEWS.html;fp=i686-linux-gnu-4.7%2Fusr%2Fshare%2Fdoc%2Fgcc-4.7-base%2FNEWS.html;h=bc3172ef04119d653c36dc47c99ece34e899c402;hb=94df942c2c7bd3457276fe5b7367623cbb8c1302;hp=0000000000000000000000000000000000000000;hpb=4dd7d9155a920895ff7b1cb6b9c9c676aa62000a;p=cross.git diff --git a/i686-linux-gnu-4.7/usr/share/doc/gcc-4.7-base/NEWS.html b/i686-linux-gnu-4.7/usr/share/doc/gcc-4.7-base/NEWS.html new file mode 100644 index 0000000..bc3172e --- /dev/null +++ b/i686-linux-gnu-4.7/usr/share/doc/gcc-4.7-base/NEWS.html @@ -0,0 +1,1075 @@ + + + + + + + + + + + + + + + + + + + +
+ + + + + + +The -fconserve-space
flag has been
+ deprecated. The flag had no effect for most targets: only
+ targets without a global .bss
section and without
+ support for switchable sections. Furthermore, the flag only
+ had an effect for G++, where it could result in wrong semantics
+ (please refer to the GCC manual for further details).
+ The flag will be removed in GCC 4.8
Support for a number of older systems and recently + unmaintained or untested target ports of GCC has been declared + obsolete in GCC 4.7. 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:
+ +picochip-*
)The following ports for individual systems on + particular architectures have been obsoleted:
+ +-munaligned-access
is active by default, which for
+ some source codes generates code that accesses memory on unaligned
+ addresses. This will require the kernel of those systems to enable
+ such accesses (controlled by CP15 register c1
, refer
+ to ARM documentation). Alternatively or for compatibility with
+ kernels where unaligned accesses are not supported, all code has
+ to be compiled with -mno-unaligned-access
.
+ Linux/ARM in official releases has automatically and
+ unconditionally supported unaligned accesses as emitted by GCC due
+ to this option being active, since Linux version 2.6.28.The obsolete ports with alternatives are:
+ +Note, however, that these alternatives are not binary compatible + with their legacy counterparts (although some can support running legacy + applications).
+The obsolete ports that currently lack a modern alternative are:
+ +--enable-threads=solaris
configure option and
+ the -threads
compiler option don't work any longer./usr/ucbinclude
and
+ /usr/ucblib
. It has been removed from Solaris 11, and was
+ only intended as a migration aid from SunOS 4 to SunOS 5. The
+ -compat-bsd
compiler option is not recognized any
+ longer.-mwords-little-endian
option has
+ been deprecated. It will be removed in a future release."l"
+ constraint in MIPS16 asm
statements.std::list
changing its size and altering the definitions of
+ some member functions, and std::pair
's move constructor was
+ non-trivial which altered the calling convention for functions with
+ std::pair
arguments or return types. The ABI incompatibilities
+ have been fixed for GCC version 4.7.2 but as a result C++11 code compiled
+ with GCC 4.7.0 or 4.7.1 may be incompatible with C++11 code compiled with
+ different GCC versions and with C++98/C++03 code compiled with any version.
+ --param case-values-threshold=n
+ was added to allow users to control the cutoff between doing switch statements
+ as a series of if statements and using a jump table.
+ ld -r
is now supported with LTO.+void foo(int a) +{ + if (a > 10) + ... huge code ... +} +void bar (void) +{ + foo (0); +} ++ The call of
foo
will be inlined into bar
even when
+ optimizing for code size. Constructs based on __builtin_constant_p
+ are now understood by the inliner and code size estimates are evaluated a lot
+ more realistically.alias
attribute) has been re-engineered. Aliases no
+ longer pose optimization barriers and calls to an alias can be inlined
+ and otherwise optimized.+void foo(bool flag) +{ + if (flag) + ... do something ... + else + ... do something else ... +} +void bar (void) +{ + foo (false); + foo (true); + foo (false); + foo (true); + foo (false); + foo (true); +} ++ GCC will now produce two copies of
foo
. One with flag
being
+ true
, while other with flag
being
+ false
. This leads to performance improvements previously
+ possible only by inlining all calls. Cloning causes a lot less code size
+ growth.strlen
, strchr
, strcpy
,
+ strcat
, stpcpy
and their
+ _FORTIFY_SOURCE
counterparts into faster alternatives.
+ This pass is enabled by default at -O2
or above, unless
+ optimizing for size, and can be disabled by the
+ -fno-optimize-strlen
option. The pass can e.g. optimize
+ +char *bar (const char *a) +{ + size_t l = strlen (a) + 2; + char *p = malloc (l); if (p == NULL) return p; + strcpy (p, a); strcat (p, "/"); return p; +} ++ into: +
+char *bar (const char *a) +{ + size_t tmp = strlen (a); + char *p = malloc (tmp + 2); if (p == NULL) return p; + memcpy (p, a, tmp); memcpy (p + tmp, "/", 2); return p; +} ++ or for hosted compilations where
stpcpy
is available in the
+ runtime and headers provide its prototype, e.g.
+ +void foo (char *a, const char *b, const char *c, const char *d) +{ + strcpy (a, b); strcat (a, c); strcat (a, d); +} ++ can be optimized into: +
+void foo (char *a, const char *b, const char *c, const char *d) +{ + strcpy (stpcpy (stpcpy (a, b), c), d); +} ++
-feliminate-unused-debug-types
+ has been re-enabled by default, as it is for the other languages,
+ leading to a reduction in debug info size of 12.5% and more for
+ relevant cases, as well as to a small compilation speedup.__builtin_assume_aligned
, has been added,
+ through which the compiler can be hinted about pointer alignment
+ and can use it to improve generated code.
+
+ Experimental support for transactional memory has been added.
+ It includes support in the compiler, as well as a supporting
+ runtime library called libitm
. To compile code
+ with transactional memory constructs, use
+ the -fgnu-tm
option.
+
+ Support is currently available for Alpha, ARM, PowerPC, SH, SPARC, + and 32-bit/64-bit x86 platforms. +
+ ++ For more details on transactional memory + see the GCC + WiKi. +
+
+ Support for atomic operations specifying the C++11/C11 memory model
+ has been added. These new __atomic
routines replace the
+ existing __sync
built-in routines.
+
+ Atomic support is also available for memory blocks. Lock-free + instructions will be used if a memory block is the same size and + alignment as a supported integer type. Atomic operations which do not + have lock-free support are left as function calls. A set of library + functions is available on the GCC atomic wiki in the "External + Atomics Library" section. +
++ For more details on the memory models and features, see the + atomic wiki. +
++typedef int v4si __attribute__ ((vector_size (16))); +v4si res, a = {1,2,3,4}; +int x; + +res = 2 + a; /* means {2,2,2,2} + a */ +res = a - x; /* means a - {x,x,x,x} */ ++
-std=c11
and -std=gnu11
, in
+ addition to the previous -std=c1x
+ and -std=gnu1x
.
+ -std=gnu11
, now supported
+ with -std=c11
), and the predefined
+ macros __STDC_UTF_16__
+ and __STDC_UTF_32__
._Noreturn
+ and <stdnoreturn.h>
)._Alignas
, _Alignof
,
+ max_align_t
, <stdalign.h>
).__builtin_complex
is
+ provided to support C library implementation of
+ the CMPLX
family of macros.-std=c++11
,
+ -std=gnu++11
, and -Wc++11-compat
options,
+ which are equivalent to -std=c++0x
,
+ -std=gnu++0x
, and -Wc++0x-compat
,
+ respectively.+template<class W> +class Q +{ + static const int I = 2; +public: + friend W; +}; + +struct B +{ + int ar[Q<B>::I]; +};
+struct B { + virtual void f() const final; + virtual void f(int); +}; + +struct D : B { + void f() const; // error: D::f attempts to override final B::f + void f(long) override; // error: doesn't override anything + void f(int) override; // ok +}; + +struct E final { }; +struct F: E { }; // error: deriving from final class
+struct A { + int i = 42; +} a; // initializes a.i to 42
+// Not actually a good approximation. :) +constexpr long double operator"" _degrees (long double d) { return d * 0.0175; } +long double pi = 180.0_degrees;
+template <class T> using Ptr = T*; +Ptr<int> ip; // decltype(ip) is int*
+struct A { + A(int); + A(): A(42) { } // delegate to the A(int) constructor +};
+class POD { + int a; + int b; +}; +std::atomic<POD> my_atomic_POD; +
__cplusplus
to the
+ correct value, 199711L
for C++98/03,
+ and 201103L
for C++11.
+ -fpermissive
compiler flag will
+ allow the code to compile with a warning.
+
+ +template <class T> +void f() { g(T()); } // error, g(int) not found by argument-dependent lookup +void g(int) { } // fix by moving this declaration before the declaration of f + +template <class T> +struct A: T { + // error, B::g(B) not found by argument-dependent lookup + void f() { g(T()); } // fix by using this->g or A::g +}; + +struct B { void g(B); }; + +int main() +{ + f<int>(); + A<B>().f(); +}
+Here,+const int &f(const int &i) { return i; } +.... +const int &x = f(1); +const int &y = f(2);
x
refers to the temporary allocated to hold the
+1
argument, which only lives until the end of the
+initialization; it immediately becomes a dangling reference. So the
+next statement re-uses the stack slot to hold the 2
+argument, and users of x
get that value instead.
+
+Note that this should not cause any change of behavior for temporaries +of types with non-trivial destructors, as they are already destroyed at end +of full-expression; the change is that now the storage is released as +well.
-Wdelete-non-virtual-dtor
+ has been added to warn when delete
is used to destroy
+ an instance of a class which has virtual functions and non-virtual
+ destructor. It is unsafe to delete an instance of a derived class
+ through a pointer to a base class if the base class does not have a
+ virtual destructor. This warning is enabled by -Wall
.
+ -Wzero-as-null-pointer-constant
+ has been added to warn when a literal '0' is used as null pointer
+ constant. It can be useful to facilitate the conversion to
+ nullptr
in C++11.
+ noexcept
in most of the library;pointer_traits
, allocator_traits
+ and scoped_allocator_adaptor
; tuple
; vector
meets the allocator-aware container requirements; monotonic_clock
with steady_clock
; --enable-clocale=newlib
configure option. <unistd.h>
.-fstack-arrays
has been added, which causes
+ all local arrays to be put on stack memory. For some
+ programs this will improve the performance significantly. If your
+ program uses very large local arrays, it is possible that you will
+ have to extend your runtime limits for stack memory.-Ofast
flag now also implies -fno-protect-parens
and -fstack-arrays
.-ffrontend-optimize
option and deselected by
+ the -fno-frontend-optimize
option.-Wfunction-elimination
warns about that.-faggressive-function-elimination
option
+ allows the removal of duplicate function calls even for impure
+ functions.-Wreal-q-constant
has been added, which
+ warns if floating-point literals have been specified using
+ q
(such as 1.0q0
); the q
+ marker is now supported as a vendor extension to denote quad precision
+ (REAL(16)
or, if not available, REAL(10)
).
+ Consider using a kind parameter (such as in 1.0_qp
)
+ instead, which can be obtained via SELECTED_REAL_KIND
.GFORTRAN_USE_STDERR
environment variable has
+ been removed. GNU Fortran now always prints error messages to
+ standard error. If you wish to redirect standard error, please
+ consult the manual for your OS, shell, batch environment etc.
+ as appropriate.-fdump-core
option and
+ GFORTRAN_ERROR_DUMPCORE
environment variable have
+ been removed. When encountering a serious error, gfortran will
+ now always abort the program. Whether a core dump is generated
+ depends on the user environment settings; see the ulimit -c
+ setting for POSIX shells, limit coredumpsize
for C shells,
+ and the WER user-mode dumps settings on Windows.-fbacktrace
option is now enabled by default.
+ When encountering a fatal error, gfortran will attempt to
+ print a backtrace to standard error before aborting. It can be
+ disabled with -fno-backtrace
. Note: On POSIX targets
+ with the addr2line
utility from GNU binutils, GNU
+ Fortran can print a backtrace with function name, file name,
+ line number information in addition to the addresses; otherwise
+ only the addresses are printed.class
) arrays are now supported.DO CONCURRENT
construct has been
+ added, which allows the user to specify that individual loop
+ iterations have no interdependencies.-std=f2008ts
permits programs that are expected
+ to conform to the Fortran 2008 standard and the draft Technical
+ Specification (TS) 29113 on Further Interoperability of Fortran
+ with C.OPTIONAL
attribute is now allowed
+ for dummy arguments of BIND(C)
procedures.RANK
intrinsic has been added.ASYNCHRONOUS
attribute
+ in GCC is compatible with the candidate draft of TS 29113
+ (since GCC 4.6).-mcpu=cortex-a7
.-mvectorize-with-neon-double
was added to
+ allow users to change the vector size to 64 bits.__flash
, __flash1
, …,
+ __flash5
and __memx
has been added.
+ These address spaces locate read-only data in
+ flash memory and allow reading from flash memory by means of ordinary
+ C code, i.e. without the need of (inline) assembler code:
+ +const __flash int values[] = { 42, 31 }; + +int add_values (const __flash int *p, int i) +{ + return values[i] + *p; +}
--with-avrlibc=yes
in order to arrange for better
+ integration of AVR-Libc.
+ This configure option is supported in avr-gcc 4.7.2 and newer and will
+ only take effect in non-RTEMS configurations. If avr-gcc is configured
+ for RTEMS, the option will be ignored which is the same as
+ specifying --with-avrlibc=no
.
+ See PR54461 for more technical
+ details.__int24
and __uint24
.-maccumulate-args
,
+ -mbranch-cost=cost
and -mstrict-X
+ were added to allow better fine-tuning of code optimization.-fdata-sections
now also takes affect
+ on the section names of variables with the progmem
+ attribute.%i
to print a RAM address as I/O
+ address has been added:
+ + The offset between an I/O address and the RAM address for that I/O + location is device-specific. This offset is taken into account when + printing a RAM address with the+#include <avr/io.h> /* Port Definitions from AVR-LibC */ + +void set_portb (uint8_t value) +{ + asm volatile ("out %0, %i1" :: "r" (value), "n" (&PORTB) : "memory"); +}
%i
modifier so that the
+ address is suitable to be used as operand in an I/O command.
+ The address must be a constant integer known at compile time."R"
to represent integers
+ in the range −6 … 5 has been removed
+ without replacement.__builtin_ffs*
, __builtin_clz*
, etc.switch
+ instructionsEIND
and indirect jumps on devices with
+ more than 128 KiB of program memory.RAMPD
, RAMPX
,
+ RAMPY
and RAMPZ
special function registers.OS_main
and OS_task
.-mavx2
.-mbmi2
.__builtin_clz*
+ using the lzcnt
instruction is available via -mlzcnt
.-mfma
.-mfsgsbase
command-line option is available that makes GCC
+ generate new segment register read/write instructions through dedicated built-ins.rdrnd
instruction is available via -mrdrnd
.-mf16c
.-march=core-avx-i
.-march=core-avx2
.-march=bdver2
and -mtune=bdver2
options.-mx32
option.-mms-bitfields
option
+ by default.__thiscall
calling
+ convention for C++ class-member functions.--with-threads=posix
+ for Windows mingw targets.-march=octeon+
and -march=octeon2
+ respectively. Both options require GNU binutils 2.22 or later.-mfix-24k
.
+ These workarounds require GNU binutils 2.20 or later.mips-linux-gnu
+ can now build n32 and n64 multilibs. The result is effectively
+ a 64-bit GNU/Linux toolchain that generates 32-bit code by default.
+ Use the configure-time option --enable-targets=all
+ to select these extra multilibs.-fno-delayed-branch
now also stops the
+ assembler from automatically filling delay slots.-mno-pointers-to-nested-functions
was
+ added to allow AIX 32-bit/64-bit and GNU/Linux 64-bit PowerPC users to
+ specify that the compiler should not load up the chain register
+ (r11
) before calling a function through a pointer.
+ If you use this option, you cannot call nested functions through a
+ pointer, or call other languages that might use the static chain.msave-toc-indirect
was added to allow AIX
+ 32-bit/64-bit and GNU/Linux 64-bit PowerPC users control whether we
+ save the TOC in the prologue for indirect calls or generate the save
+ inline. This can speed up some programs that call through a function
+ pointer a lot, but it can slow down other functions that only call
+ through a function pointer in exceptional cases.#pragma GCC target
or
+ __attribute__ ((__target__ ("target")))
+ code sequences. In addition, the target macros are updated.
+ However, due to the way the -save-temps
switch is
+ implemented, you won't see the effect of these additional macros
+ being defined in preprocessor output.-msoft-atomic
has been added. When it is
+ specified, GCC will generate GNU/Linux-compatible gUSA atomic sequences
+ for the new __atomic
routines.-ml
with -m2a*
will now result in a compiler
+ error.-mbranch-cost
option has been fixed.tst #imm,R0
instruction.-mflat
has been reinstated. When it is
+ specified, the compiler will generate code for a single register
+ window model. This is essentially a new implementation and the
+ corresponding debugger support has been added to GDB 7.4.-mtune=native
and
+ -mcpu=native
has been added on selected native platforms
+ (GNU/Linux and Solaris).visintrin.h
has been added.alignaddr
is now
+ supported.const
, which
+ should increase the compiler's ability to optimize VIS
+ operations.%gsr
register
+ and how it behaves as an input for various VIS instructions.fzero
, the compiler can now generate
+ fone
instructions in order to set all of the bits
+ of a floating-point register to 1
.bmask
,
+ bshuffle
, and non-condition-code
+ setting edge instructions have been added. Their availability
+ is controlled by the new -mvis2
and
+ -mno-vis2
options. They are enabled by default
+ on UltraSPARC-III and later CPUs.-grecord-gcc-switches
) was added that
+ appends compiler command-line options that might affect code
+ generation to the DW_AT_producer
attribute string in the
+ DWARF debugging information.
+ -gstrict-dwarf
command-line option.
+ This is the list +of problem reports (PRs) from GCC's bug tracking system that are +known to be fixed in the 4.7.1 release. This list might not be +complete (that is, it is possible that some PRs that have been fixed +are not listed here).
+ +The Go frontend in the 4.7.1 release fully supports +the Go 1 language +standard.
+ +This is the list +of problem reports (PRs) from GCC's bug tracking system that are +known to be fixed in the 4.7.2 release. This list might not be +complete (that is, it is possible that some PRs that have been fixed +are not listed here).
+ + + + + + +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 2012-09-20.
+ +