From d5cf6eeb83972dd69b7c8b7342df8912b827f65b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Wed, 1 Feb 2012 06:20:38 +0000 Subject: [PATCH] - updated Changed files: gcc-branch.diff -> 1.57 --- gcc-branch.diff | 4531 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 4090 insertions(+), 441 deletions(-) diff --git a/gcc-branch.diff b/gcc-branch.diff index 4f492e1..4166488 100644 --- a/gcc-branch.diff +++ b/gcc-branch.diff @@ -1,7 +1,7 @@ Index: configure =================================================================== ---- configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ configure (.../branches/gcc-4_6-branch) (wersja 182722) +--- configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ configure (.../branches/gcc-4_6-branch) (wersja 183790) @@ -5117,7 +5117,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_cc_gcc_supports_ada" >&5 $as_echo "$acx_cv_cc_gcc_supports_ada" >&6; } @@ -22,10 +22,22 @@ Index: configure mips*-*-pe | sh*-*-pe | *arm-wince-pe) target_makefile_frag="config/mt-wince" ;; +Index: Makefile.in +=================================================================== +--- Makefile.in (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ Makefile.in (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -60017,6 +60017,7 @@ + install-gcc: maybe-install-fixincludes + install-gcc: maybe-install-lto-plugin + install-strip-gcc: maybe-install-strip-fixincludes ++install-strip-gcc: maybe-install-strip-lto-plugin + configure-libcpp: configure-libiberty + + configure-stage1-libcpp: configure-stage1-libiberty Index: libgcc/config.host =================================================================== ---- libgcc/config.host (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libgcc/config.host (.../branches/gcc-4_6-branch) (wersja 182722) +--- libgcc/config.host (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libgcc/config.host (.../branches/gcc-4_6-branch) (wersja 183790) @@ -145,15 +145,6 @@ asm_hidden_op=.private_extern tmake_file="t-darwin ${cpu_type}/t-darwin t-slibgcc-darwin" @@ -44,8 +56,8 @@ Index: libgcc/config.host # machine-specific sections may refine and add to this Index: libgcc/generic-morestack.c =================================================================== ---- libgcc/generic-morestack.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libgcc/generic-morestack.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- libgcc/generic-morestack.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libgcc/generic-morestack.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -459,8 +459,8 @@ sigemptyset (&__morestack_initial_sp.mask); @@ -59,8 +71,8 @@ Index: libgcc/generic-morestack.c importantly, pthread_sigmask uses less stack space on x86_64. */ Index: libgcc/ChangeLog =================================================================== ---- libgcc/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libgcc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- libgcc/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libgcc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,16 @@ +2011-12-15 H.J. Lu + @@ -80,8 +92,8 @@ Index: libgcc/ChangeLog * GCC 4.6.2 released. Index: libtool.m4 =================================================================== ---- libtool.m4 (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libtool.m4 (.../branches/gcc-4_6-branch) (wersja 182722) +--- libtool.m4 (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libtool.m4 (.../branches/gcc-4_6-branch) (wersja 183790) @@ -2273,7 +2273,7 @@ objformat=`/usr/bin/objformat` else @@ -120,8 +132,8 @@ Index: libtool.m4 _LT_TAGVAR(ld_shlibs, $1)=no Index: libgomp/configure =================================================================== ---- libgomp/configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libgomp/configure (.../branches/gcc-4_6-branch) (wersja 182722) +--- libgomp/configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libgomp/configure (.../branches/gcc-4_6-branch) (wersja 183790) @@ -9317,7 +9317,7 @@ ;; @@ -178,8 +190,8 @@ Index: libgomp/configure freebsd3.[01]* | freebsdelf3.[01]*) Index: libgomp/ChangeLog =================================================================== ---- libgomp/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libgomp/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- libgomp/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libgomp/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,7 @@ +2011-11-20 Andreas Tobler + @@ -190,8 +202,8 @@ Index: libgomp/ChangeLog * GCC 4.6.2 released. Index: libquadmath/configure =================================================================== ---- libquadmath/configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libquadmath/configure (.../branches/gcc-4_6-branch) (wersja 182722) +--- libquadmath/configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libquadmath/configure (.../branches/gcc-4_6-branch) (wersja 183790) @@ -8727,7 +8727,7 @@ ;; @@ -221,8 +233,8 @@ Index: libquadmath/configure freebsd3.[01]* | freebsdelf3.[01]*) Index: libquadmath/ChangeLog =================================================================== ---- libquadmath/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libquadmath/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- libquadmath/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libquadmath/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,7 @@ +2011-11-20 Andreas Tobler + @@ -231,10 +243,287 @@ Index: libquadmath/ChangeLog 2011-10-26 Release Manager * GCC 4.6.2 released. +Index: gcc/doc/invoke.texi +=================================================================== +--- gcc/doc/invoke.texi (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/doc/invoke.texi (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -7527,8 +7527,8 @@ + bodies are read from these ELF sections and instantiated as if they + had been part of the same translation unit. + +-To use the link-timer optimizer, @option{-flto} needs to be specified at +-compile time and during the final link. For example, ++To use the link-time optimizer, @option{-flto} needs to be specified at ++compile time and during the final link. For example: + + @smallexample + gcc -c -O2 -flto foo.c +@@ -7536,25 +7536,25 @@ + gcc -o myprog -flto -O2 foo.o bar.o + @end smallexample + +-The first two invocations to GCC will save a bytecode representation ++The first two invocations to GCC save a bytecode representation + of GIMPLE into special ELF sections inside @file{foo.o} and +-@file{bar.o}. The final invocation will read the GIMPLE bytecode from +-@file{foo.o} and @file{bar.o}, merge the two files into a single +-internal image, and compile the result as usual. Since both ++@file{bar.o}. The final invocation reads the GIMPLE bytecode from ++@file{foo.o} and @file{bar.o}, merges the two files into a single ++internal image, and compiles the result as usual. Since both + @file{foo.o} and @file{bar.o} are merged into a single image, this +-causes all the inter-procedural analyses and optimizations in GCC to ++causes all the interprocedural analyses and optimizations in GCC to + work across the two files as if they were a single one. This means, +-for example, that the inliner will be able to inline functions in ++for example, that the inliner is able to inline functions in + @file{bar.o} into functions in @file{foo.o} and vice-versa. + +-Another (simpler) way to enable link-time optimization is, ++Another (simpler) way to enable link-time optimization is: + + @smallexample + gcc -o myprog -flto -O2 foo.c bar.c + @end smallexample + +-The above will generate bytecode for @file{foo.c} and @file{bar.c}, +-merge them together into a single GIMPLE representation and optimize ++The above generates bytecode for @file{foo.c} and @file{bar.c}, ++merges them together into a single GIMPLE representation and optimizes + them as usual to produce @file{myprog}. + + The only important thing to keep in mind is that to enable link-time +@@ -7564,30 +7564,22 @@ + To make whole program optimization effective, it is necessary to make + certain whole program assumptions. The compiler needs to know + what functions and variables can be accessed by libraries and runtime +-outside of the link time optimized unit. When supported by the linker, +-the linker plugin (see @option{-fuse-linker-plugin}) passes to the +-compiler information about used and externally visible symbols. When ++outside of the link-time optimized unit. When supported by the linker, ++the linker plugin (see @option{-fuse-linker-plugin}) passes information ++to the compiler about used and externally visible symbols. When + the linker plugin is not available, @option{-fwhole-program} should be +-used to allow the compiler to make these assumptions, which will lead ++used to allow the compiler to make these assumptions, which leads + to more aggressive optimization decisions. + + Note that when a file is compiled with @option{-flto}, the generated +-object file will be larger than a regular object file because it will +-contain GIMPLE bytecodes and the usual final code. This means that +-object files with LTO information can be linked as a normal object +-file. So, in the previous example, if the final link is done with ++object file is larger than a regular object file because it ++contains GIMPLE bytecodes and the usual final code. This means that ++object files with LTO information can be linked as normal object ++files; if @option{-flto} is not passed to the linker, no ++interprocedural optimizations are applied. + +-@smallexample +-gcc -o myprog foo.o bar.o +-@end smallexample +- +-The only difference will be that no inter-procedural optimizations +-will be applied to produce @file{myprog}. The two object files +-@file{foo.o} and @file{bar.o} will be simply sent to the regular +-linker. +- + Additionally, the optimization flags used to compile individual files +-are not necessarily related to those used at link-time. For instance, ++are not necessarily related to those used at link time. For instance, + + @smallexample + gcc -c -O0 -flto foo.c +@@ -7595,37 +7587,42 @@ + gcc -o myprog -flto -O3 foo.o bar.o + @end smallexample + +-This will produce individual object files with unoptimized assembler +-code, but the resulting binary @file{myprog} will be optimized at +-@option{-O3}. Now, if the final binary is generated without +-@option{-flto}, then @file{myprog} will not be optimized. ++This produces individual object files with unoptimized assembler ++code, but the resulting binary @file{myprog} is optimized at ++@option{-O3}. If, instead, the final binary is generated without ++@option{-flto}, then @file{myprog} is not optimized. + +-When producing the final binary with @option{-flto}, GCC will only +-apply link-time optimizations to those files that contain bytecode. ++When producing the final binary with @option{-flto}, GCC only ++applies link-time optimizations to those files that contain bytecode. + Therefore, you can mix and match object files and libraries with +-GIMPLE bytecodes and final object code. GCC will automatically select ++GIMPLE bytecodes and final object code. GCC automatically selects + which files to optimize in LTO mode and which files to link without + further processing. + +-There are some code generation flags that GCC will preserve when ++There are some code generation flags that GCC preserves when + generating bytecodes, as they need to be used during the final link + stage. Currently, the following options are saved into the GIMPLE + bytecode files: @option{-fPIC}, @option{-fcommon} and all the + @option{-m} target flags. + +-At link time, these options are read-in and reapplied. Note that the +-current implementation makes no attempt at recognizing conflicting +-values for these options. If two or more files have a conflicting +-value (e.g., one file is compiled with @option{-fPIC} and another +-isn't), the compiler will simply use the last value read from the +-bytecode files. It is recommended, then, that all the files +-participating in the same link be compiled with the same options. ++At link time, these options are read in and reapplied. Note that the ++current implementation makes no attempt to recognize conflicting ++values for these options. If different files have conflicting option ++values (e.g., one file is compiled with @option{-fPIC} and another ++isn't), the compiler simply uses the last value read from the ++bytecode files. It is recommended, then, that you compile all the files ++participating in the same link with the same options. + ++If LTO encounters objects with C linkage declared with incompatible ++types in separate translation units to be linked together (undefined ++behavior according to ISO C99 6.2.7), a non-fatal diagnostic may be ++issued. The behavior is still undefined at runtime. ++ + Another feature of LTO is that it is possible to apply interprocedural + optimizations on files written in different languages. This requires +-some support in the language front end. Currently, the C, C++ and ++support in the language front end. Currently, the C, C++ and + Fortran front ends are capable of emitting GIMPLE bytecodes, so +-something like this should work ++something like this should work: + + @smallexample + gcc -c -flto foo.c +@@ -7637,49 +7634,43 @@ + Notice that the final link is done with @command{g++} to get the C++ + runtime libraries and @option{-lgfortran} is added to get the Fortran + runtime libraries. In general, when mixing languages in LTO mode, you +-should use the same link command used when mixing languages in a +-regular (non-LTO) compilation. This means that if your build process +-was mixing languages before, all you need to add is @option{-flto} to ++should use the same link command options as when mixing languages in a ++regular (non-LTO) compilation; all you need to add is @option{-flto} to + all the compile and link commands. + +-If LTO encounters objects with C linkage declared with incompatible +-types in separate translation units to be linked together (undefined +-behavior according to ISO C99 6.2.7), a non-fatal diagnostic may be +-issued. The behavior is still undefined at runtime. +- + If object files containing GIMPLE bytecode are stored in a library archive, say + @file{libfoo.a}, it is possible to extract and use them in an LTO link if you +-are using a linker with linker plugin support. To enable this feature, use +-the flag @option{-fuse-linker-plugin} at link-time: ++are using a linker with plugin support. To enable this feature, use ++the flag @option{-fuse-linker-plugin} at link time: + + @smallexample + gcc -o myprog -O2 -flto -fuse-linker-plugin a.o b.o -lfoo + @end smallexample + +-With the linker plugin enabled, the linker will extract the needed +-GIMPLE files from @file{libfoo.a} and pass them on to the running GCC ++With the linker plugin enabled, the linker extracts the needed ++GIMPLE files from @file{libfoo.a} and passes them on to the running GCC + to make them part of the aggregated GIMPLE image to be optimized. + +-If you are not using a linker with linker plugin support and/or do not +-enable linker plugin then the objects inside @file{libfoo.a} +-will be extracted and linked as usual, but they will not participate ++If you are not using a linker with plugin support and/or do not ++enable the linker plugin, then the objects inside @file{libfoo.a} ++are extracted and linked as usual, but they do not participate + in the LTO optimization process. + +-Link time optimizations do not require the presence of the whole program to ++Link-time optimizations do not require the presence of the whole program to + operate. If the program does not require any symbols to be exported, it is +-possible to combine @option{-flto} and with @option{-fwhole-program} to allow ++possible to combine @option{-flto} and @option{-fwhole-program} to allow + the interprocedural optimizers to use more aggressive assumptions which may + lead to improved optimization opportunities. + Use of @option{-fwhole-program} is not needed when linker plugin is + active (see @option{-fuse-linker-plugin}). + +-Regarding portability: the current implementation of LTO makes no +-attempt at generating bytecode that can be ported between different ++The current implementation of LTO makes no ++attempt to generate bytecode that is portable between different + types of hosts. The bytecode files are versioned and there is a + strict version check, so bytecode files generated in one version of + GCC will not work with an older/newer version of GCC. + +-Link time optimization does not play well with generating debugging ++Link-time optimization does not work well with generation of debugging + information. Combining @option{-flto} with + @option{-g} is currently experimental and expected to produce wrong + results. +@@ -7693,15 +7684,15 @@ + You can also specify @option{-flto=jobserver} to use GNU make's + job server mode to determine the number of parallel jobs. This + is useful when the Makefile calling GCC is already executing in parallel. +-The parent Makefile will need a @samp{+} prepended to the command recipe +-for this to work. This will likely only work if @env{MAKE} is ++You must prepend a @samp{+} to the command recipe in the parent Makefile ++for this to work. This option likely only works if @env{MAKE} is + GNU make. + + This option is disabled by default. + + @item -flto-partition=@var{alg} + @opindex flto-partition +-Specify the partitioning algorithm used by the link time optimizer. ++Specify the partitioning algorithm used by the link-time optimizer. + The value is either @code{1to1} to specify a partitioning mirroring + the original source files or @code{balanced} to specify partitioning + into equally sized chunks (whenever possible). Specifying @code{none} +@@ -7718,27 +7709,29 @@ + + @item -flto-report + Prints a report with internal details on the workings of the link-time +-optimizer. The contents of this report vary from version to version, +-it is meant to be useful to GCC developers when processing object ++optimizer. The contents of this report vary from version to version. ++It is meant to be useful to GCC developers when processing object + files in LTO mode (via @option{-flto}). + + Disabled by default. + + @item -fuse-linker-plugin +-Enables the use of linker plugin during link time optimization. This option +-relies on the linker plugin support in linker that is available in gold ++Enables the use of a linker plugin during link-time optimization. This ++option relies on the linker plugin support in linker that is available in gold + or in GNU ld 2.21 or newer. + +-This option enables the extraction of object files with GIMPLE bytecode out of +-library archives. This improves the quality of optimization by exposing more +-code the the link time optimizer. This information specify what symbols +-can be accessed externally (by non-LTO object or during dynamic linking). +-Resulting code quality improvements on binaries (and shared libraries that do +-use hidden visibility) is similar to @code{-fwhole-program}. See +-@option{-flto} for a description on the effect of this flag and how to use it. ++This option enables the extraction of object files with GIMPLE bytecode out ++of library archives. This improves the quality of optimization by exposing ++more code to the link-time optimizer. This information specifies what ++symbols can be accessed externally (by non-LTO object or during dynamic ++linking). Resulting code quality improvements on binaries (and shared ++libraries that use hidden visibility) are similar to @code{-fwhole-program}. ++See @option{-flto} for a description of the effect of this flag and how to ++use it. + +-Enabled by default when LTO support in GCC is enabled and GCC was compiled +-with a linker supporting plugins (GNU ld 2.21 or newer or gold). ++This option is enabled by default when LTO support in GCC is enabled ++and GCC was configured for use with ++a linker supporting plugins (GNU ld 2.21 or newer or gold). + + @item -fcompare-elim + @opindex fcompare-elim Index: gcc/c-family/ChangeLog =================================================================== ---- gcc/c-family/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/c-family/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/c-family/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/c-family/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,15 @@ +2011-11-04 Eric Botcazou + @@ -253,8 +542,8 @@ Index: gcc/c-family/ChangeLog * GCC 4.6.2 released. Index: gcc/c-family/c-common.c =================================================================== ---- gcc/c-family/c-common.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/c-family/c-common.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/c-family/c-common.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/c-family/c-common.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1236,13 +1236,7 @@ && (op1 = get_base_address (op0)) != NULL_TREE && TREE_CODE (op1) == INDIRECT_REF @@ -377,8 +666,8 @@ Index: gcc/c-family/c-common.c /* Warn for A ?: C expressions (with B omitted) where A is a boolean Index: gcc/c-family/c-common.h =================================================================== ---- gcc/c-family/c-common.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/c-family/c-common.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/c-family/c-common.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/c-family/c-common.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -916,7 +916,8 @@ extern void verify_sequence_points (tree); @@ -389,17 +678,178 @@ Index: gcc/c-family/c-common.h /* Places where an lvalue, or modifiable lvalue, may be required. Used to select diagnostic messages in lvalue_error and +Index: gcc/tree-loop-distribution.c +=================================================================== +--- gcc/tree-loop-distribution.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/tree-loop-distribution.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -63,6 +63,51 @@ + predecessor a node that writes to memory. */ + static bitmap upstream_mem_writes; + ++/* Returns true when DEF is an SSA_NAME defined in LOOP and used after ++ the LOOP. */ ++ ++static bool ++ssa_name_has_uses_outside_loop_p (tree def, loop_p loop) ++{ ++ imm_use_iterator imm_iter; ++ use_operand_p use_p; ++ ++ FOR_EACH_IMM_USE_FAST (use_p, imm_iter, def) ++ if (loop != loop_containing_stmt (USE_STMT (use_p))) ++ return true; ++ ++ return false; ++} ++ ++/* Returns true when STMT defines a scalar variable used after the ++ loop. */ ++ ++static bool ++stmt_has_scalar_dependences_outside_loop (gimple stmt) ++{ ++ tree name; ++ ++ switch (gimple_code (stmt)) ++ { ++ case GIMPLE_CALL: ++ case GIMPLE_ASSIGN: ++ name = gimple_get_lhs (stmt); ++ break; ++ ++ case GIMPLE_PHI: ++ name = gimple_phi_result (stmt); ++ break; ++ ++ default: ++ return false; ++ } ++ ++ return (name ++ && TREE_CODE (name) == SSA_NAME ++ && ssa_name_has_uses_outside_loop_p (name, ++ loop_containing_stmt (stmt))); ++} ++ + /* Update the PHI nodes of NEW_LOOP. NEW_LOOP is a duplicate of + ORIG_LOOP. */ + +@@ -332,10 +377,18 @@ + { + gimple stmt = gsi_stmt (bsi); + +- if (gimple_code (stmt) != GIMPLE_LABEL +- && !is_gimple_debug (stmt) +- && bitmap_bit_p (partition, x++) +- && is_gimple_assign (stmt) ++ if (gimple_code (stmt) == GIMPLE_LABEL ++ || is_gimple_debug (stmt)) ++ continue; ++ ++ if (!bitmap_bit_p (partition, x++)) ++ continue; ++ ++ /* If the stmt has uses outside of the loop fail. */ ++ if (stmt_has_scalar_dependences_outside_loop (stmt)) ++ goto end; ++ ++ if (is_gimple_assign (stmt) + && !is_gimple_reg (gimple_assign_lhs (stmt))) + { + /* Don't generate the builtins when there are more than +@@ -826,48 +879,6 @@ + } + } + +-/* Returns true when DEF is an SSA_NAME defined in LOOP and used after +- the LOOP. */ +- +-static bool +-ssa_name_has_uses_outside_loop_p (tree def, loop_p loop) +-{ +- imm_use_iterator imm_iter; +- use_operand_p use_p; +- +- FOR_EACH_IMM_USE_FAST (use_p, imm_iter, def) +- if (loop != loop_containing_stmt (USE_STMT (use_p))) +- return true; +- +- return false; +-} +- +-/* Returns true when STMT defines a scalar variable used after the +- loop. */ +- +-static bool +-stmt_has_scalar_dependences_outside_loop (gimple stmt) +-{ +- tree name; +- +- switch (gimple_code (stmt)) +- { +- case GIMPLE_ASSIGN: +- name = gimple_assign_lhs (stmt); +- break; +- +- case GIMPLE_PHI: +- name = gimple_phi_result (stmt); +- break; +- +- default: +- return false; +- } +- +- return TREE_CODE (name) == SSA_NAME +- && ssa_name_has_uses_outside_loop_p (name, loop_containing_stmt (stmt)); +-} +- + /* Returns true when STMT will be code generated in a partition of RDG + different than PART and that will not be code generated as a + builtin. */ +Index: gcc/java/ChangeLog +=================================================================== +--- gcc/java/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/java/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1,3 +1,8 @@ ++2012-01-23 Andreas Schwab ++ ++ * lang.c (java_init_options_struct): Set ++ frontend_set_flag_trapping_math. ++ + 2011-10-26 Release Manager + + * GCC 4.6.2 released. +Index: gcc/java/lang.c +=================================================================== +--- gcc/java/lang.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/java/lang.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1,6 +1,6 @@ + /* Java(TM) language-specific utility routines. + Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +- 2005, 2006, 2007, 2008, 2010 Free Software Foundation, Inc. ++ 2005, 2006, 2007, 2008, 2010, 2012 Free Software Foundation, Inc. + + This file is part of GCC. + +@@ -550,6 +550,7 @@ + + /* In Java floating point operations never trap. */ + opts->x_flag_trapping_math = 0; ++ opts->frontend_set_flag_trapping_math = true; + + /* In Java arithmetic overflow always wraps around. */ + opts->x_flag_wrapv = 1; Index: gcc/DATESTAMP =================================================================== ---- gcc/DATESTAMP (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/DATESTAMP (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/DATESTAMP (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/DATESTAMP (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1 +1 @@ -20111026 -+20111229 ++20120201 Index: gcc/configure =================================================================== ---- gcc/configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/configure (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/configure (.../branches/gcc-4_6-branch) (wersja 183790) @@ -7442,17 +7442,7 @@ RANLIB="$ac_cv_prog_RANLIB" fi @@ -493,8 +943,8 @@ Index: gcc/configure freebsd3.[01]* | freebsdelf3.[01]*) Index: gcc/objc/objc-next-runtime-abi-01.c =================================================================== ---- gcc/objc/objc-next-runtime-abi-01.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/objc/objc-next-runtime-abi-01.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/objc/objc-next-runtime-abi-01.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/objc/objc-next-runtime-abi-01.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -2871,12 +2871,15 @@ return eh_id; } @@ -514,8 +964,8 @@ Index: gcc/objc/objc-next-runtime-abi-01.c #endif Index: gcc/objc/objc-act.c =================================================================== ---- gcc/objc/objc-act.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/objc/objc-act.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/objc/objc-act.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/objc/objc-act.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -3136,9 +3136,8 @@ struct string_descriptor *desc, key; void **loc; @@ -530,8 +980,8 @@ Index: gcc/objc/objc-act.c /* The target may have different ideas on how to construct an ObjC string Index: gcc/objc/ChangeLog =================================================================== ---- gcc/objc/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/objc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/objc/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/objc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,18 @@ +2011-11-12 Iain Sandoe + @@ -553,8 +1003,8 @@ Index: gcc/objc/ChangeLog * GCC 4.6.2 released. Index: gcc/reorg.c =================================================================== ---- gcc/reorg.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/reorg.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/reorg.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/reorg.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -3554,9 +3554,11 @@ } } @@ -570,15 +1020,255 @@ Index: gcc/reorg.c various code assumes that it is in a delay slot. We could Index: gcc/DEV-PHASE =================================================================== ---- gcc/DEV-PHASE (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/DEV-PHASE (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/DEV-PHASE (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/DEV-PHASE (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1 @@ +prerelease +Index: gcc/tree-ssa-sccvn.c +=================================================================== +--- gcc/tree-ssa-sccvn.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/tree-ssa-sccvn.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -546,6 +546,7 @@ + tem1.type = TREE_TYPE (tem1.op0); + tem1.opcode = TREE_CODE (tem1.op0); + vro1 = &tem1; ++ deref1 = false; + } + if (deref2 && vro2->opcode == ADDR_EXPR) + { +@@ -554,7 +555,10 @@ + tem2.type = TREE_TYPE (tem2.op0); + tem2.opcode = TREE_CODE (tem2.op0); + vro2 = &tem2; ++ deref2 = false; + } ++ if (deref1 != deref2) ++ return false; + if (!vn_reference_op_eq (vro1, vro2)) + return false; + ++j; Index: gcc/ChangeLog =================================================================== ---- gcc/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) -@@ -1,3 +1,437 @@ +--- gcc/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1,3 +1,653 @@ ++2012-01-31 Matthew Gretton-Dann ++ ++ Backport from mainline. ++ 2011-01-31 Matthew Gretton-Dann ++ ++ config/arm/thumb2.md (thumb2_mov_notscc): Use MVN for true ++ condition. ++ ++2012-01-31 Andreas Krebbel ++ ++ * config/s390/s390.md ("*ashr3_and"): Add missing z196 flag ++ to srak instruction. ++ ++2012-01-30 Bin Cheng ++ ++ Backport from mainline. ++ 2012-01-30 Bin Cheng ++ ++ PR target/51835 ++ * config/arm/arm.c (arm_libcall_uses_aapcs_base): Use correct ABI ++ for __aeabi_d2iz/__aeabi_d2uiz with hard-float. ++ ++2012-01-30 Ramana Radhakrishnan ++ ++ Backport from mainline. ++ 2012-01-20 Ramana Radhakrishnan ++ ++ PR target/50313 ++ * config/arm/arm.c (arm_load_pic_register): Use ++ gen_pic_load_addr_unified. Delete calls to gen_pic_load_addr_32bit ++ , gen_pic_add_dot_plus_eight and gen_pic_add_dot_plus_four. ++ (arm_pic_static_addr): Likewise. ++ (arm_rtx_costs_1): Adjust cost for UNSPEC_PIC_UNIFIED. ++ (arm_note_pic_base): Handle UNSPEC_PIC_UNIFIED. ++ * config/arm/arm.md (UNSPEC_PIC_UNIFIED): Define. ++ (pic_load_addr_unified): New. ++ ++2012-01-25 Richard Guenther ++ ++ * tree-ssa-sccvn.c (vn_reference_eq): Also compare if both ++ bases are dereferenced. ++ ++2012-01-24 Richard Guenther ++ ++ Forward-port to branch ++ 2010-09-21 Jakub Jelinek ++ ++ PR middle-end/45678 ++ * expr.c (expand_expr_real_1) : If ++ op0 isn't sufficiently aligned and there is movmisalignM ++ insn for mode, use it to load op0 into a temporary register. ++ ++2012-01-20 Eric Botcazou ++ ++ * cfgrtl.c (rtl_dump_bb): Do not dump insns for {ENTRY|EXIT}_BLOCK. ++ ++2012-01-19 Quentin Neill ++ ++ PR target/48743 ++ * config/i386/driver-i386.c (host_detect_local_cpu): Also check ++ family to distinguish PROCESSOR_ATHLON. ++ ++2012-01-18 Bill Schmidt ++ ++ PR tree-optimization/49642 ++ * ipa-split.c (forbidden_dominators): New variable. ++ (check_forbidden_calls): New function. ++ (dominated_by_forbidden): Likewise. ++ (consider_split): Check for forbidden dominators. ++ (execute_split_functions): Initialize and free forbidden ++ dominators info; call check_forbidden_calls. ++ ++2012-01-18 David Edelsohn ++ ++ * config/rs6000/rs6000.md (call_value_indirect_aix32): Fix typo ++ in mode of operand[4]. ++ ++2012-01-15 Uros Bizjak ++ ++ PR rtl-optimization/51821 ++ * recog.c (peep2_find_free_register): Determine clobbered registers ++ from insn pattern. ++ ++2012-01-12 Georg-Johann Lay ++ ++ Backport from mainline r183129 ++ PR target/51756 ++ * config/avr/avr.c (avr_encode_section_info): Test for absence of ++ DECL_EXTERNAL when checking for initializers of progmem variables. ++ ++22012-01-12 Matthew Gretton-Dann ++ ++ Backport from mainline ++ 2012-01-11 Matthew Gretton-Dann ++ ++ * config/arm/arm.md (mov_notscc): Use MVN for false condition. ++ ++2012-01-12 Uros Bizjak ++ ++ * config/i386/i386.md (*zero_extendsidi2_rex64): Correct movl template. ++ (x86_shift_adj_1): Remove operand constraint from operand 3. ++ ++2012-01-10 Joseph Myers ++ ++ Revert: ++ ++ 2008-09-18 Andrew Pinski ++ ++ PR rtl-opt/37451 ++ * loop-doloop.c (doloop_modify): New argument zero_extend_p and ++ zero extend count after the correction to it is done. ++ (doloop_optimize): Update call to doloop_modify, don't zero extend ++ count before call. ++ ++ 2008-11-03 Andrew Pinski ++ ++ PR rtl-opt/37782 ++ * loop-doloop.c (doloop_modify): Add from_mode argument that says what ++ mode count is in. ++ (doloop_optimize): Update call to doloop_modify. ++ ++2012-01-09 Richard Sandiford ++ ++ * config/mips/mips.md (loadgp_newabi_): Add missing earlyclobber. ++ ++2012-01-09 Eric Botcazou ++ ++ * config/sparc/sol2-unwind.h (sparc64_is_sighandler): Check that the ++ purported sigacthandler address isn't null before dereferencing it. ++ (sparc_is_sighandler): Likewise. ++ ++2012-01-09 Ramana Radhakrishnan ++ ++ Backport from mainline ++ 2011-11-04 Jiangning Liu ++ ++ PR rtl-optimization/38644 ++ * config/arm/arm.c (thumb1_expand_epilogue): Add memory barrier ++ for epilogue having stack adjustment. ++ ++2012-01-09 Eric Botcazou ++ ++ PR ada/41929 ++ * config/sparc/sol2-unwind.h (sparc64_is_sighandler): Remove SAVPC and ++ add CFA. Revert back to old code for Solaris 8+ multi-threaded. ++ (sparc_is_sighandler): Likewise. ++ (MD_FALLBACK_FRAME_STATE_FOR): Adjust call to IS_SIGHANDLER. ++ ++2012-01-06 Eric Botcazou ++ ++ Backport from mainline ++ 2012-01-06 Arnaud Charlet ++ ++ * c-decl.c (ext_block): Moved up. ++ (collect_all_refs, for_each_global_decl): Take ext_block into account. ++ ++2012-01-06 Richard Sandiford ++ ++ PR middle-end/48660 ++ * expr.h (copy_blkmode_to_reg): Declare. ++ * expr.c (copy_blkmode_to_reg): New function. ++ (expand_assignment): Don't expand register RESULT_DECLs before ++ the lhs. Use copy_blkmode_to_reg to copy BLKmode values into a ++ RESULT_DECL register. ++ (expand_expr_real_1): Handle BLKmode decls when looking for promotion. ++ ++2012-01-05 Eric Botcazou ++ ++ PR tree-optimization/51315 ++ * tree-sra.c (tree_non_aligned_mem_for_access_p): New predicate. ++ (build_accesses_from_assign): Use it instead of tree_non_aligned_mem_p. ++ ++2012-01-04 Eric Botcazou ++ ++ PR tree-optimization/51624 ++ * tree-sra.c (build_ref_for_model): When replicating a chain of ++ COMPONENT_REFs, stop as soon as the offset would become negative. ++ ++2012-01-04 Richard Guenther ++ ++ PR tree-optimization/49651 ++ * tree-ssa-structalias.c (type_can_have_subvars): New function. ++ (var_can_have_subvars): Use it. ++ (get_constraint_for_1): Only consider subfields if there can be any. ++ ++2012-01-03 Sandra Loosemore ++ ++ Backport from mainline: ++ 2012-01-02 Sandra Loosemore ++ ++ * doc/invoke.texi (-flto and related options): Copy-edit. ++ ++2012-01-03 Richard Guenther ++ ++ Backport from mainline ++ 2011-11-10 Richard Guenther ++ ++ PR tree-optimization/51042 ++ * tree-ssa-pre.c (phi_translate_1): Avoid recursing on ++ self-referential expressions. Refactor code to avoid duplication. ++ ++2012-01-03 Richard Guenther ++ ++ PR tree-optimization/51070 ++ * tree-loop-distribution.c (generate_builtin): Do not replace ++ the loop with a builtin if the partition contains statements which ++ results are used outside of the loop. ++ (stmt_has_scalar_dependences_outside_loop): Properly handle calls. ++ ++2011-12-30 Michael Meissner ++ ++ Backport from the mainline ++ 2011-12-30 Michael Meissner ++ ++ * config/rs6000/rs6000.c (rs6000_inner_target_options): Fix thinko ++ in setting options via target #pragma or attribute. ++ +2011-12-28 Michael Meissner + + Backport from mainline @@ -586,8 +1276,7 @@ Index: gcc/ChangeLog + + PR target/51623 + * config/rs6000/rs6000.c (rs6000_assemble_integer): Don't call -+ unlikely_text_section_p. Instead check for being in a code -+ section. ++ unlikely_text_section_p. Instead check for being in a code section. + +2011-12-23 Richard Guenther + @@ -1016,7 +1705,7 @@ Index: gcc/ChangeLog 2011-10-26 Release Manager * GCC 4.6.2 released. -@@ -144,8 +578,8 @@ +@@ -144,8 +794,8 @@ 2011-10-07 Bernd Schmidt @@ -1027,7 +1716,7 @@ Index: gcc/ChangeLog 2011-10-06 Jakub Jelinek -@@ -252,7 +686,7 @@ +@@ -252,7 +902,7 @@ * config/rs6000/rs6000.md (probe_stack): Use explicit operand. * config/rs6000/rs6000.c (output_probe_stack_range): Likewise. @@ -1036,10 +1725,22 @@ Index: gcc/ChangeLog * tree-vect-stmts.c (vect_transform_stmt): Remove unused local variable ORIG_SCALAR_STMT. +Index: gcc/testsuite/gcc.target/arm/headmerge-2.c +=================================================================== +--- gcc/testsuite/gcc.target/arm/headmerge-2.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/testsuite/gcc.target/arm/headmerge-2.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1,6 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-O2" } */ +-/* { dg-final { scan-assembler-times "120" 1 } } */ ++/* { dg-final { scan-assembler-times "120\n" 1 } } */ + + extern void foo1 (int); + extern void foo2 (int); Index: gcc/testsuite/gcc.target/arm/pr49641.c =================================================================== --- gcc/testsuite/gcc.target/arm/pr49641.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.target/arm/pr49641.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.target/arm/pr49641.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mthumb -O2" } */ @@ -1059,10 +1760,27 @@ Index: gcc/testsuite/gcc.target/arm/pr49641.c + y = 0; + foo(&v); +} +Index: gcc/testsuite/gcc.target/arm/stack-red-zone.c +=================================================================== +--- gcc/testsuite/gcc.target/arm/stack-red-zone.c (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gcc.target/arm/stack-red-zone.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,12 @@ ++/* No stack red zone. PR38644. */ ++/* { dg-options "-mthumb -O2" } */ ++/* { dg-final { scan-assembler "ldrb\[^\n\]*\\n\[\t \]*add\[\t \]*sp" } } */ ++ ++extern int doStreamReadBlock (int *, char *, int size, int); ++ ++char readStream (int *s) ++{ ++ char c = 0; ++ doStreamReadBlock (s, &c, 1, *s); ++ return c; ++} Index: gcc/testsuite/gcc.target/arm/sibcall-2.c =================================================================== --- gcc/testsuite/gcc.target/arm/sibcall-2.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.target/arm/sibcall-2.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.target/arm/sibcall-2.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,12 @@ +/* { dg-require-effective-target arm_eabi } */ +/* { dg-do compile } */ @@ -1076,10 +1794,29 @@ Index: gcc/testsuite/gcc.target/arm/sibcall-2.c +} + +/* { dg-final { scan-assembler-not "b\[\\t \]+wfunc" } } */ +Index: gcc/testsuite/gcc.target/arm/pr51835.c +=================================================================== +--- gcc/testsuite/gcc.target/arm/pr51835.c (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gcc.target/arm/pr51835.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,14 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mfloat-abi=hard -mfpu=fpv4-sp-d16" } */ ++/* { dg-require-effective-target arm_thumb2_ok } */ ++ ++int func1 (double d) ++{ ++ return (int)d; ++} ++unsigned int func2 (double d) ++{ ++ return (unsigned int)d; ++} ++ ++/* { dg-final { scan-assembler-times "fmrrd\[\\t \]+r0,\[\\t \]*r1,\[\\t \]*d0" 2 } } */ Index: gcc/testsuite/gcc.target/powerpc/pr51623.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/pr51623.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.target/powerpc/pr51623.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.target/powerpc/pr51623.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,123 @@ +/* PR target/51623 */ +/* { dg-do compile { target { { powerpc*-*-linux* && ilp32 } || { powerpc-*-eabi* } } } } */ @@ -1207,7 +1944,7 @@ Index: gcc/testsuite/gcc.target/powerpc/pr51623.c Index: gcc/testsuite/gcc.target/i386/pr51393.c =================================================================== --- gcc/testsuite/gcc.target/i386/pr51393.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.target/i386/pr51393.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.target/i386/pr51393.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,22 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx } */ @@ -1234,7 +1971,7 @@ Index: gcc/testsuite/gcc.target/i386/pr51393.c Index: gcc/testsuite/gcc.target/i386/pr48721.c =================================================================== --- gcc/testsuite/gcc.target/i386/pr48721.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.target/i386/pr48721.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.target/i386/pr48721.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,51 @@ +/* PR rtl-optimization/48721 */ +/* { dg-do compile } */ @@ -1290,7 +2027,7 @@ Index: gcc/testsuite/gcc.target/i386/pr48721.c Index: gcc/testsuite/gcc.target/i386/movdi-rex64.c =================================================================== --- gcc/testsuite/gcc.target/i386/movdi-rex64.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.target/i386/movdi-rex64.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.target/i386/movdi-rex64.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,11 @@ +/* { dg-do compile { target *-*-linux* } } */ +/* { dg-options "-fPIE" } */ @@ -1303,10 +2040,39 @@ Index: gcc/testsuite/gcc.target/i386/movdi-rex64.c + strcpy (buffer, "Unknown code "); + return 0; +} +Index: gcc/testsuite/lib/gcc-dg.exp +=================================================================== +--- gcc/testsuite/lib/gcc-dg.exp (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/testsuite/lib/gcc-dg.exp (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -565,6 +565,24 @@ + } + } + ++# Scan Fortran modules for absence of a given regexp. ++# ++# Argument 0 is the module name ++# Argument 1 is the regexp to match ++proc scan-module-absence { args } { ++ set modfilename [string tolower [lindex $args 0]].mod ++ set fd [open $modfilename r] ++ set text [read $fd] ++ close $fd ++ ++ upvar 2 name testcase ++ if [regexp -- [lindex $args 1] $text] { ++ fail "$testcase scan-module [lindex $args 1]" ++ } else { ++ pass "$testcase scan-module [lindex $args 1]" ++ } ++} ++ + # Verify that the compiler output file exists, invoked via dg-final. + proc output-exists { args } { + # Process an optional target or xfail list. Index: gcc/testsuite/gfortran.dg/whole_file_35.f90 =================================================================== --- gcc/testsuite/gfortran.dg/whole_file_35.f90 (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gfortran.dg/whole_file_35.f90 (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gfortran.dg/whole_file_35.f90 (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,28 @@ +! { dg-do compile } +! @@ -1336,10 +2102,115 @@ Index: gcc/testsuite/gfortran.dg/whole_file_35.f90 + end program p + +! { dg-final { cleanup-modules "m" } } +Index: gcc/testsuite/gfortran.dg/dummy_procedure_7.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/dummy_procedure_7.f90 (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gfortran.dg/dummy_procedure_7.f90 (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,65 @@ ++! { dg-do run } ++! ++! PR fortran/52022 ++! ++ ++module check ++ integer, save :: icheck = 0 ++end module check ++ ++module t ++implicit none ++ contains ++subroutine sol(cost) ++ use check ++ interface ++ function cost(p) result(y) ++ double precision,dimension(:) :: p ++ double precision,dimension(:),allocatable :: y ++ end function cost ++ end interface ++ ++ if (any (cost([1d0,2d0]) /= [2.d0, 4.d0])) call abort () ++ icheck = icheck + 1 ++end subroutine ++ ++end module t ++ ++module tt ++ procedure(cost1),pointer :: pcost ++contains ++ subroutine init() ++ pcost=>cost1 ++ end subroutine ++ ++ function cost1(x) result(y) ++ double precision,dimension(:) :: x ++ double precision,dimension(:),allocatable :: y ++ allocate(y(2)) ++ y=2d0*x ++ end function cost1 ++ ++ ++ ++ function cost(x) result(y) ++ double precision,dimension(:) :: x ++ double precision,dimension(:),allocatable :: y ++ allocate(y(2)) ++ y=pcost(x) ++ end function cost ++end module ++ ++program test ++ use tt ++ use t ++ use check ++ implicit none ++ ++ call init() ++ if (any (cost([3.d0,7.d0]) /= [6.d0, 14.d0])) call abort () ++ if (icheck /= 0) call abort () ++ call sol(cost) ++ if (icheck /= 1) call abort () ++end program test ++ ++! { dg-final { cleanup-modules "t tt check" } } +Index: gcc/testsuite/gfortran.dg/derived_constructor_char_3.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/derived_constructor_char_3.f90 (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gfortran.dg/derived_constructor_char_3.f90 (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,30 @@ ++! { dg-do compile } ++! ++! PR fortran/51966 ++! ++! Contributed by Peter Wind ++! ++ ++ type :: Deriv ++ character(len=10) :: name ++ end type ++ character(len=8), dimension(2), parameter :: & ++ DEF_ECOSYSTEMS = (/ "Gridxxxx", "StringYY" /) ++ ++ type(Deriv), save :: DepEcoSystem = Deriv(DEF_ECOSYSTEMS(1)) ++ ++ if (DepEcoSystem%name /= "Gridxxxx" & ++ .or. DepEcoSystem%name(9:9) /= ' ' & ++ .or. DepEcoSystem%name(10:10) /= ' ') call abort() ++ DepEcoSystem%name = 'ABCDEFGHIJ' ++ call Init_EcoSystems() ++ if (DepEcoSystem%name /= "StringYY" & ++ .or. DepEcoSystem%name(9:9) /= ' ' & ++ .or. DepEcoSystem%name(10:10) /= ' ') call abort() ++ ++contains ++ subroutine Init_EcoSystems() ++ integer :: i =2 ++ DepEcoSystem = Deriv(DEF_ECOSYSTEMS(i)) ++ end subroutine Init_EcoSystems ++end Index: gcc/testsuite/gfortran.dg/move_alloc_8.f90 =================================================================== --- gcc/testsuite/gfortran.dg/move_alloc_8.f90 (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gfortran.dg/move_alloc_8.f90 (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gfortran.dg/move_alloc_8.f90 (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,106 @@ +! { dg-do compile } +! @@ -1450,7 +2321,7 @@ Index: gcc/testsuite/gfortran.dg/move_alloc_8.f90 Index: gcc/testsuite/gfortran.dg/realloc_on_assign_8.f90 =================================================================== --- gcc/testsuite/gfortran.dg/realloc_on_assign_8.f90 (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gfortran.dg/realloc_on_assign_8.f90 (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gfortran.dg/realloc_on_assign_8.f90 (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,17 @@ +! { dg-do compile } +! @@ -1469,10 +2340,54 @@ Index: gcc/testsuite/gfortran.dg/realloc_on_assign_8.f90 + a%b=0.0E0 + x=a%b + END +Index: gcc/testsuite/gfortran.dg/implicit_pure_2.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/implicit_pure_2.f90 (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gfortran.dg/implicit_pure_2.f90 (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,17 @@ ++! { dg-do compile } ++! PR 51502 - this was wrongly detected to be implicit pure. ++module m ++ integer :: i ++contains ++ subroutine foo(x) ++ integer, intent(inout) :: x ++ outer: block ++ block ++ i = 5 ++ end block ++ end block outer ++ end subroutine foo ++end module m ++ ++! { dg-final { scan-module-absence "m" "IMPLICIT_PURE" } } ++! { dg-final { cleanup-modules "m" } } +Index: gcc/testsuite/gfortran.dg/intrinsic_size_2.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/intrinsic_size_2.f90 (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gfortran.dg/intrinsic_size_2.f90 (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,17 @@ ++! { dg-do compile } ++! ++! PR fortran/51904 ++! ++! Contributed by David Sagan. ++! ++ ++call qp_draw_polyline_basic([1.0,2.0]) ++contains ++subroutine qp_draw_polyline_basic (x) ++ implicit none ++ real :: x(:), f ++ integer :: i ++ f = 0 ++ print *, size(f*x) ++end subroutine ++end Index: gcc/testsuite/gfortran.dg/default_initialization_5.f90 =================================================================== --- gcc/testsuite/gfortran.dg/default_initialization_5.f90 (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gfortran.dg/default_initialization_5.f90 (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gfortran.dg/default_initialization_5.f90 (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,66 @@ +! { dg-do run } +! { dg-options "-fdump-tree-original" } @@ -1540,10 +2455,68 @@ Index: gcc/testsuite/gfortran.dg/default_initialization_5.f90 +! { dg-final { scan-tree-dump-times "my_data.head = &tgt" 1 "original" } } +! { dg-final { cleanup-tree-dump "original" } } +! { dg-final { cleanup-modules "arr_m list_m worker_mod" } } +Index: gcc/testsuite/gfortran.dg/move_alloc_12.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/move_alloc_12.f90 (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gfortran.dg/move_alloc_12.f90 (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,33 @@ ++! { dg-do compile } ++! ++! PR fortran/51948 ++! ++ type :: t ++ end type t ++contains ++ function func(x, y) ++ class(t) :: y ++ type(t), allocatable :: func ++ type(t), allocatable :: x ++ ++ select type (y) ++ type is(t) ++ call move_alloc (x, func) ++ end select ++ end function ++ ++ function func2(x, y) ++ class(t) :: y ++ class(t), allocatable :: func2 ++ class(t), allocatable :: x ++ ++ block ++ block ++ select type (y) ++ type is(t) ++ call move_alloc (x, func2) ++ end select ++ end block ++ end block ++ end function ++end +Index: gcc/testsuite/gfortran.dg/init_flag_9.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/init_flag_9.f90 (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gfortran.dg/init_flag_9.f90 (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,15 @@ ++! { dg-do run } ++! { dg-options "-finit-character=89" } ++! ++! PR fortran/51800 ++! ++ ++subroutine foo(n) ++ character(len=n) :: str ++! print *, str ++ if (str /= repeat ('Y', n)) call abort() ++end subroutine foo ++ ++call foo(3) ++call foo(10) ++end Index: gcc/testsuite/gfortran.dg/pr50875.f90 =================================================================== --- gcc/testsuite/gfortran.dg/pr50875.f90 (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gfortran.dg/pr50875.f90 (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gfortran.dg/pr50875.f90 (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,39 @@ +! { dg-do compile { target { i?86-*-* x86_64-*-* } } } +! { dg-options "-O3 -mavx" } @@ -1584,10 +2557,55 @@ Index: gcc/testsuite/gfortran.dg/pr50875.f90 +end module test + +! { dg-final { cleanup-modules "test" } } +Index: gcc/testsuite/gfortran.dg/class_47.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/class_47.f90 (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gfortran.dg/class_47.f90 (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,40 @@ ++! { dg-do compile } ++! ++! PR fortran/51913 ++! ++! Contributed by Alexander Tismer ++! ++MODULE m_sparseMatrix ++ ++ implicit none ++ ++ type :: sparseMatrix_t ++ ++ end type sparseMatrix_t ++END MODULE m_sparseMatrix ++ ++!=============================================================================== ++module m_subroutine ++! USE m_sparseMatrix !< when uncommenting this line program works fine ++ ++ implicit none ++ ++ contains ++ subroutine test(matrix) ++ use m_sparseMatrix ++ class(sparseMatrix_t), pointer :: matrix ++ end subroutine ++end module ++ ++!=============================================================================== ++PROGRAM main ++ use m_subroutine ++ USE m_sparseMatrix ++ implicit none ++ ++ CLASS(sparseMatrix_t), pointer :: sparseMatrix ++ ++ call test(sparseMatrix) ++END PROGRAM ++ ++! { dg-final { cleanup-modules "m_sparsematrix m_subroutine" } } Index: gcc/testsuite/gfortran.dg/warn_function_without_result_2.f90 =================================================================== --- gcc/testsuite/gfortran.dg/warn_function_without_result_2.f90 (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gfortran.dg/warn_function_without_result_2.f90 (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gfortran.dg/warn_function_without_result_2.f90 (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,19 @@ +! { dg-do compile } +! { dg-options "-Wall" } @@ -1611,7 +2629,7 @@ Index: gcc/testsuite/gfortran.dg/warn_function_without_result_2.f90 Index: gcc/testsuite/gfortran.dg/implicit_pure_1.f90 =================================================================== --- gcc/testsuite/gfortran.dg/implicit_pure_1.f90 (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gfortran.dg/implicit_pure_1.f90 (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gfortran.dg/implicit_pure_1.f90 (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,53 @@ +! { dg-do run } +! @@ -1666,10 +2684,79 @@ Index: gcc/testsuite/gfortran.dg/implicit_pure_1.f90 + +! { dg-final { scan-module "b" "IMPLICIT_PURE" } } +! { dg-final { cleanup-modules "b" } } +Index: gcc/testsuite/gfortran.dg/init_flag_8.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/init_flag_8.f90 (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gfortran.dg/init_flag_8.f90 (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,18 @@ ++! { dg-do compile } ++! { dg-options "-fno-automatic -finit-local-zero" } ++! ++! PR fortran/51800 ++! ++! Contributed by Mario Baumann ++! ++ SUBROUTINE FOO( N, A ) ++ IMPLICIT NONE ++ INTEGER :: N ++ INTEGER :: A(1:N) ++ INTEGER :: J ++ INTEGER :: DUMMY(1:N) ++ DO J=1,N ++ DUMMY(J) = 0 ++ A(J) = DUMMY(J) ++ END DO ++ END SUBROUTINE FOO +Index: gcc/testsuite/gcc.c-torture/execute/doloop-1.c +=================================================================== +--- gcc/testsuite/gcc.c-torture/execute/doloop-1.c (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gcc.c-torture/execute/doloop-1.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,18 @@ ++#include ++ ++extern void exit (int); ++extern void abort (void); ++ ++volatile unsigned int i; ++ ++int ++main (void) ++{ ++ unsigned char z = 0; ++ ++ do ++i; ++ while (--z > 0); ++ if (i != UCHAR_MAX + 1U) ++ abort (); ++ exit (0); ++} +Index: gcc/testsuite/gcc.c-torture/execute/20120111-1.c +=================================================================== +--- gcc/testsuite/gcc.c-torture/execute/20120111-1.c (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gcc.c-torture/execute/20120111-1.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,18 @@ ++#include ++#include ++ ++uint32_t f0a (uint64_t arg2) __attribute__((noinline)); ++ ++uint32_t ++f0a (uint64_t arg) ++{ ++ return ~(arg > -3); ++} ++ ++int main() { ++ uint32_t r1; ++ r1 = f0a (12094370573988097329ULL); ++ if (r1 != ~0U) ++ abort (); ++ return 0; ++} Index: gcc/testsuite/gcc.c-torture/execute/pr51466.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/pr51466.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.c-torture/execute/pr51466.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.c-torture/execute/pr51466.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,43 @@ +/* PR tree-optimization/51466 */ + @@ -1717,7 +2804,7 @@ Index: gcc/testsuite/gcc.c-torture/execute/pr51466.c Index: gcc/testsuite/gcc.c-torture/execute/20111212-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/20111212-1.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.c-torture/execute/20111212-1.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.c-torture/execute/20111212-1.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,34 @@ +/* PR tree-optimization/50569 */ +/* Reported by Paul Koning */ @@ -1753,10 +2840,39 @@ Index: gcc/testsuite/gcc.c-torture/execute/20111212-1.c + + return 0; +} +Index: gcc/testsuite/gcc.c-torture/execute/20120105-1.c +=================================================================== +--- gcc/testsuite/gcc.c-torture/execute/20120105-1.c (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gcc.c-torture/execute/20120105-1.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,24 @@ ++struct __attribute__((packed)) S ++{ ++ int a, b, c; ++}; ++ ++static int __attribute__ ((noinline,noclone)) ++extract(const char *p) ++{ ++ struct S s; ++ __builtin_memcpy (&s, p, sizeof(struct S)); ++ return s.a; ++} ++ ++volatile int i; ++ ++int main (void) ++{ ++ char p[sizeof(struct S) + 1]; ++ ++ __builtin_memset (p, 0, sizeof(struct S) + 1); ++ i = extract (p + 1); ++ ++ return 0; ++} Index: gcc/testsuite/gcc.c-torture/execute/pr51323.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/pr51323.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.c-torture/execute/pr51323.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.c-torture/execute/pr51323.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,35 @@ +/* PR middle-end/51323 */ + @@ -1796,7 +2912,7 @@ Index: gcc/testsuite/gcc.c-torture/execute/pr51323.c Index: gcc/testsuite/gcc.c-torture/execute/20111208-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/execute/20111208-1.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.c-torture/execute/20111208-1.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.c-torture/execute/20111208-1.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,94 @@ +/* PR tree-optimization/51315 */ +/* Reported by Jurij Smakov */ @@ -1892,10 +3008,33 @@ Index: gcc/testsuite/gcc.c-torture/execute/20111208-1.c + abort (); + return 0; +} +Index: gcc/testsuite/gcc.c-torture/execute/doloop-2.c +=================================================================== +--- gcc/testsuite/gcc.c-torture/execute/doloop-2.c (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gcc.c-torture/execute/doloop-2.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,18 @@ ++#include ++ ++extern void exit (int); ++extern void abort (void); ++ ++volatile unsigned int i; ++ ++int ++main (void) ++{ ++ unsigned short z = 0; ++ ++ do ++i; ++ while (--z > 0); ++ if (i != USHRT_MAX + 1U) ++ abort (); ++ exit (0); ++} Index: gcc/testsuite/gcc.c-torture/compile/pr51077.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr51077.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.c-torture/compile/pr51077.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.c-torture/compile/pr51077.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,15 @@ +/* PR middle-end/51077 */ + @@ -1915,7 +3054,7 @@ Index: gcc/testsuite/gcc.c-torture/compile/pr51077.c Index: gcc/testsuite/gcc.c-torture/compile/20110913-1.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/20110913-1.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.c-torture/compile/20110913-1.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.c-torture/compile/20110913-1.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,26 @@ +struct ieee754_double { + double d; @@ -1945,8 +3084,8 @@ Index: gcc/testsuite/gcc.c-torture/compile/20110913-1.c +} Index: gcc/testsuite/gnat.dg/frame_overflow.adb =================================================================== ---- gcc/testsuite/gnat.dg/frame_overflow.adb (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/testsuite/gnat.dg/frame_overflow.adb (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/testsuite/gnat.dg/frame_overflow.adb (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/testsuite/gnat.dg/frame_overflow.adb (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,27 +1,20 @@ -- { dg-do compile } @@ -1993,7 +3132,7 @@ Index: gcc/testsuite/gnat.dg/frame_overflow.adb Index: gcc/testsuite/gnat.dg/frame_overflow.ads =================================================================== --- gcc/testsuite/gnat.dg/frame_overflow.ads (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gnat.dg/frame_overflow.ads (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gnat.dg/frame_overflow.ads (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,17 @@ +with System; + @@ -2012,10 +3151,55 @@ Index: gcc/testsuite/gnat.dg/frame_overflow.ads + function Negate (Bitmap : Bitmap_T) return Bitmap_T; + +end Frame_Overflow; +Index: gcc/testsuite/gnat.dg/renaming5.adb +=================================================================== +--- gcc/testsuite/gnat.dg/renaming5.adb (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gnat.dg/renaming5.adb (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,30 @@ ++-- PR ada/46192 ++-- Testcase by Rolf Ebert ++ ++-- { dg-do compile } ++-- { dg-options "-O2 -fdump-tree-optimized" } ++ ++with System; use System; ++ ++package body Renaming5 is ++ ++ type Bits_In_Byte is array (0 .. 7) of Boolean; ++ pragma Pack (Bits_In_Byte); ++ ++ A : Bits_In_Byte; ++ for A'Address use System'To_Address(16#c0#); ++ pragma Volatile (A); ++ ++ B : Bits_In_Byte renames A; ++ ++ procedure Proc is ++ begin ++ while B (0) = False loop ++ null; ++ end loop; ++ end; ++ ++end Renaming5; ++ ++-- { dg-final { scan-tree-dump-times "goto" 2 "optimized" } } ++-- { dg-final { cleanup-tree-dump "optimized" } } +Index: gcc/testsuite/gnat.dg/renaming5.ads +=================================================================== +--- gcc/testsuite/gnat.dg/renaming5.ads (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gnat.dg/renaming5.ads (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,5 @@ ++package Renaming5 is ++ ++ procedure Proc; ++ ++end Renaming5; Index: gcc/testsuite/gnat.dg/specs/addr1.ads =================================================================== ---- gcc/testsuite/gnat.dg/specs/addr1.ads (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/testsuite/gnat.dg/specs/addr1.ads (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/testsuite/gnat.dg/specs/addr1.ads (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/testsuite/gnat.dg/specs/addr1.ads (.../branches/gcc-4_6-branch) (wersja 183790) @@ -15,7 +15,7 @@ end record; for Rec2'Size use 64; @@ -2027,8 +3211,8 @@ Index: gcc/testsuite/gnat.dg/specs/addr1.ads for Obj1'Address use A'Address; -- { dg-bogus "alignment" } Index: gcc/testsuite/gcc.dg/pr45819.c =================================================================== ---- gcc/testsuite/gcc.dg/pr45819.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/testsuite/gcc.dg/pr45819.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/testsuite/gcc.dg/pr45819.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/testsuite/gcc.dg/pr45819.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -fdump-tree-optimized" } */ @@ -2039,7 +3223,7 @@ Index: gcc/testsuite/gcc.dg/pr45819.c Index: gcc/testsuite/gcc.dg/gomp/pr51339.c =================================================================== --- gcc/testsuite/gcc.dg/gomp/pr51339.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.dg/gomp/pr51339.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.dg/gomp/pr51339.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,15 @@ +/* PR c/51339 */ +/* { dg-do compile } */ @@ -2058,8 +3242,8 @@ Index: gcc/testsuite/gcc.dg/gomp/pr51339.c +} Index: gcc/testsuite/gcc.dg/cpp/assert4.c =================================================================== ---- gcc/testsuite/gcc.dg/cpp/assert4.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/testsuite/gcc.dg/cpp/assert4.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/testsuite/gcc.dg/cpp/assert4.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/testsuite/gcc.dg/cpp/assert4.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,4 +1,4 @@ -/* Copyright (C) 2003, 2006, 2008 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2006, 2008, 2009, 2011 Free Software Foundation, Inc. @@ -2078,7 +3262,7 @@ Index: gcc/testsuite/gcc.dg/cpp/assert4.c Index: gcc/testsuite/gcc.dg/pr50078.c =================================================================== --- gcc/testsuite/gcc.dg/pr50078.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.dg/pr50078.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.dg/pr50078.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,14 @@ +/* PR tree-optimization/50078 */ +/* { dg-do compile } */ @@ -2097,7 +3281,7 @@ Index: gcc/testsuite/gcc.dg/pr50078.c Index: gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c =================================================================== --- gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,13 @@ +/* PR debug/51410 */ +/* { dg-do compile } */ @@ -2112,10 +3296,40 @@ Index: gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c +} + +/* { dg-final { scan-assembler-times "\\(DIE\[^\\r\\n\]*DW_TAG_variable\\)" 1 } } */ +Index: gcc/testsuite/gcc.dg/pr51821.c +=================================================================== +--- gcc/testsuite/gcc.dg/pr51821.c (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gcc.dg/pr51821.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,25 @@ ++/* { dg-do run } */ ++/* { dg-options "-std=c99 -O2" } */ ++/* { dg-options "-std=c99 -O2 -msse" { target { i?86-*-* x86_64-*-* } } } */ ++/* { dg-require-effective-target sse_runtime { target { i?86-*-* x86_64-*-* } } } */ ++ ++extern void abort (void); ++ ++unsigned int __attribute__((noinline)) ++test (int shift_size) ++{ ++ unsigned long long res = ~0; ++ ++ return res << shift_size; ++} ++ ++int ++main () ++{ ++ int dst = 32; ++ ++ if (test (dst) != 0) ++ abort (); ++ ++ return 0; ++} Index: gcc/testsuite/gcc.dg/volatile-bitfields-1.c =================================================================== --- gcc/testsuite/gcc.dg/volatile-bitfields-1.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.dg/volatile-bitfields-1.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.dg/volatile-bitfields-1.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,23 @@ +/* { dg-options "-fstrict-volatile-bitfields" } */ +/* { dg-do run } */ @@ -2143,7 +3357,7 @@ Index: gcc/testsuite/gcc.dg/volatile-bitfields-1.c Index: gcc/testsuite/gcc.dg/pr51408.c =================================================================== --- gcc/testsuite/gcc.dg/pr51408.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.dg/pr51408.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.dg/pr51408.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,22 @@ +/* This testcase used to fail because of a bug in + arm.md:*minmax_arithsi. */ @@ -2170,7 +3384,7 @@ Index: gcc/testsuite/gcc.dg/pr51408.c Index: gcc/testsuite/gcc.dg/torture/pr50396.c =================================================================== --- gcc/testsuite/gcc.dg/torture/pr50396.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.dg/torture/pr50396.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.dg/torture/pr50396.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,22 @@ +/* { dg-do run } */ +/* { dg-add-options ieee } */ @@ -2194,10 +3408,192 @@ Index: gcc/testsuite/gcc.dg/torture/pr50396.c +#endif + return 0; +} +Index: gcc/testsuite/gcc.dg/torture/pr51042.c +=================================================================== +--- gcc/testsuite/gcc.dg/torture/pr51042.c (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gcc.dg/torture/pr51042.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,22 @@ ++/* { dg-do compile } */ ++ ++int a, b; ++ ++void ++foo (int x) ++{ ++ int e[2]; ++ int d; ++ while (x) ++ { ++ for (d = 0; d <= 1; d = 1) ++ if (e[a]) ++ break; ++ for (b = 0; b <= 0; b = 1) ++ { ++ e[a] = a; ++ if (a) ++ break; ++ } ++ } ++} +Index: gcc/testsuite/gcc.dg/torture/pr51070-2.c +=================================================================== +--- gcc/testsuite/gcc.dg/torture/pr51070-2.c (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gcc.dg/torture/pr51070-2.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,35 @@ ++/* { dg-do compile } */ ++/* { dg-options "-fno-inline" } */ ++ ++int ++func_4 (int si1, int si2) ++{ ++ return si1; ++} ++ ++int ++func_14 (int left, int right) ++{ ++ return 1; ++} ++ ++int ++func_37 (int left, int right) ++{ ++ return left; ++} ++ ++int g_92[1024]; ++int g_95[1024]; ++int g_224; ++int g_352[1024]; ++int ++func_9 () ++{ ++ for (; g_224; g_224 += 1) ++ { ++ g_95[0] = func_4 (func_37 (g_92[g_224], 0), 0); ++ g_92[g_224] = 0, g_352[g_224] = func_14 (0, 0); ++ } ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr51070.c +=================================================================== +--- gcc/testsuite/gcc.dg/torture/pr51070.c (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gcc.dg/torture/pr51070.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,34 @@ ++/* { dg-do compile } */ ++ ++int ++func_4 (int si1, int si2) ++{ ++ return si1; ++} ++ ++int ++func_14 (int left, int right) ++{ ++ return 1; ++} ++ ++int ++func_37 (int left, int right) ++{ ++ return left; ++} ++ ++int g_92[1024]; ++int g_95[1024]; ++int g_224; ++int g_352[1024]; ++int ++func_9 () ++{ ++ for (; g_224; g_224 += 1) ++ { ++ g_95[0] = func_4 (func_37 (g_92[g_224], 0), 0); ++ g_92[g_224] = 0, g_352[g_224] = func_14 (0, 0); ++ } ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/tree-ssa/pr49642.c +=================================================================== +--- gcc/testsuite/gcc.dg/tree-ssa/pr49642.c (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/gcc.dg/tree-ssa/pr49642.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,49 @@ ++/* Verify that ipa-split is disabled following __builtin_constant_p. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fdump-tree-optimized" } */ ++ ++typedef unsigned int u32; ++typedef unsigned long long u64; ++ ++static inline __attribute__((always_inline)) __attribute__((const)) ++int __ilog2_u32(u32 n) ++{ ++ int bit; ++ asm ("cntlzw %0,%1" : "=r" (bit) : "r" (n)); ++ return 31 - bit; ++} ++ ++ ++static inline __attribute__((always_inline)) __attribute__((const)) ++int __ilog2_u64(u64 n) ++{ ++ int bit; ++ asm ("cntlzd %0,%1" : "=r" (bit) : "r" (n)); ++ return 63 - bit; ++} ++ ++ ++ ++static u64 ehca_map_vaddr(void *caddr); ++ ++struct ehca_shca { ++ u32 hca_cap_mr_pgsize; ++}; ++ ++static u64 ehca_get_max_hwpage_size(struct ehca_shca *shca) ++{ ++ return 1UL << ( __builtin_constant_p(shca->hca_cap_mr_pgsize) ? ( (shca->hca_cap_mr_pgsize) < 1 ? ____ilog2_NaN() : (shca->hca_cap_mr_pgsize) & (1ULL << 63) ? 63 : (shca->hca_cap_mr_pgsize) & (1ULL << 62) ? 62 : (shca->hca_cap_mr_pgsize) & (1ULL << 61) ? 61 : (shca->hca_cap_mr_pgsize) & (1ULL << 60) ? 60 : (shca->hca_cap_mr_pgsize) & (1ULL << 59) ? 59 : (shca->hca_cap_mr_pgsize) & (1ULL << 58) ? 58 : (shca->hca_cap_mr_pgsize) & (1ULL << 57) ? 57 : (shca->hca_cap_mr_pgsize) & (1ULL << 56) ? 56 : (shca->hca_cap_mr_pgsize) & (1ULL << 55) ? 55 : (shca->hca_cap_mr_pgsize) & (1ULL << 54) ? 54 : (shca->hca_cap_mr_pgsize) & (1ULL << 53) ? 53 : (shca->hca_cap_mr_pgsize) & (1ULL << 52) ? 52 : (shca->hca_cap_mr_pgsize) & (1ULL << 51) ? 51 : (shca->hca_cap_mr_pgsize) & (1ULL << 50) ? 50 : (shca->hca_cap_mr_pgsize) & (1ULL << 49) ? 49 : (shca->hca_cap_mr_pgsize) & (1ULL << 48) ? 48 : (shca->hca_cap_mr_pgsize) & (1ULL << 47) ? 47 : (shca->hca_cap_mr_pgsize) & (1ULL << 46) ? 46 : (shca->hca_cap_mr_pgsize) & (1ULL << 45) ? 45 : (shca->hca_cap_mr_pgsize) & (1ULL << 44) ? 44 : (shca->hca_cap_mr_pgsize) & (1ULL << 43) ? 43 : (shca->hca_cap_mr_pgsize) & (1ULL << 42) ? 42 : (shca->hca_cap_mr_pgsize) & (1ULL << 41) ? 41 : (shca->hca_cap_mr_pgsize) & (1ULL << 40) ? 40 : (shca->hca_cap_mr_pgsize) & (1ULL << 39) ? 39 : (shca->hca_cap_mr_pgsize) & (1ULL << 38) ? 38 : (shca->hca_cap_mr_pgsize) & (1ULL << 37) ? 37 : (shca->hca_cap_mr_pgsize) & (1ULL << 36) ? 36 : (shca->hca_cap_mr_pgsize) & (1ULL << 35) ? 35 : (shca->hca_cap_mr_pgsize) & (1ULL << 34) ? 34 : (shca->hca_cap_mr_pgsize) & (1ULL << 33) ? 33 : (shca->hca_cap_mr_pgsize) & (1ULL << 32) ? 32 : (shca->hca_cap_mr_pgsize) & (1ULL << 31) ? 31 : (shca->hca_cap_mr_pgsize) & (1ULL << 30) ? 30 : (shca->hca_cap_mr_pgsize) & (1ULL << 29) ? 29 : (shca->hca_cap_mr_pgsize) & (1ULL << 28) ? 28 : (shca->hca_cap_mr_pgsize) & (1ULL << 27) ? 27 : (shca->hca_cap_mr_pgsize) & (1ULL << 26) ? 26 : (shca->hca_cap_mr_pgsize) & (1ULL << 25) ? 25 : (shca->hca_cap_mr_pgsize) & (1ULL << 24) ? 24 : (shca->hca_cap_mr_pgsize) & (1ULL << 23) ? 23 : (shca->hca_cap_mr_pgsize) & (1ULL << 22) ? 22 : (shca->hca_cap_mr_pgsize) & (1ULL << 21) ? 21 : (shca->hca_cap_mr_pgsize) & (1ULL << 20) ? 20 : (shca->hca_cap_mr_pgsize) & (1ULL << 19) ? 19 : (shca->hca_cap_mr_pgsize) & (1ULL << 18) ? 18 : (shca->hca_cap_mr_pgsize) & (1ULL << 17) ? 17 : (shca->hca_cap_mr_pgsize) & (1ULL << 16) ? 16 : (shca->hca_cap_mr_pgsize) & (1ULL << 15) ? 15 : (shca->hca_cap_mr_pgsize) & (1ULL << 14) ? 14 : (shca->hca_cap_mr_pgsize) & (1ULL << 13) ? 13 : (shca->hca_cap_mr_pgsize) & (1ULL << 12) ? 12 : (shca->hca_cap_mr_pgsize) & (1ULL << 11) ? 11 : (shca->hca_cap_mr_pgsize) & (1ULL << 10) ? 10 : (shca->hca_cap_mr_pgsize) & (1ULL << 9) ? 9 : (shca->hca_cap_mr_pgsize) & (1ULL << 8) ? 8 : (shca->hca_cap_mr_pgsize) & (1ULL << 7) ? 7 : (shca->hca_cap_mr_pgsize) & (1ULL << 6) ? 6 : (shca->hca_cap_mr_pgsize) & (1ULL << 5) ? 5 : (shca->hca_cap_mr_pgsize) & (1ULL << 4) ? 4 : (shca->hca_cap_mr_pgsize) & (1ULL << 3) ? 3 : (shca->hca_cap_mr_pgsize) & (1ULL << 2) ? 2 : (shca->hca_cap_mr_pgsize) & (1ULL << 1) ? 1 : (shca->hca_cap_mr_pgsize) & (1ULL << 0) ? 0 : ____ilog2_NaN() ) : (sizeof(shca->hca_cap_mr_pgsize) <= 4) ? __ilog2_u32(shca->hca_cap_mr_pgsize) : __ilog2_u64(shca->hca_cap_mr_pgsize) ); ++} ++ ++int x(struct ehca_shca *shca) { ++ return ehca_get_max_hwpage_size(shca); ++} ++ ++int y(struct ehca_shca *shca) ++{ ++ return ehca_get_max_hwpage_size(shca); ++} ++ ++/* { dg-final { scan-tree-dump-times "____ilog2_NaN" 0 "optimized" } } */ ++/* { dg-final { cleanup-tree-dump "optimized" } } */ +Index: gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c +=================================================================== +--- gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fno-tree-ccp -fdump-tree-ealias" } */ ++/* { dg-options "-O2 -fno-tree-forwprop -fno-tree-ccp -fdump-tree-ealias" } */ + + extern void abort (void); + struct X { +Index: gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c +=================================================================== +--- gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fno-tree-ccp -fdump-tree-ealias" } */ ++/* { dg-options "-O2 -fno-tree-forwprop -fno-tree-ccp -fdump-tree-ealias" } */ + + extern void abort (void); + struct X { Index: gcc/testsuite/gcc.dg/tree-ssa/pr51583.c =================================================================== --- gcc/testsuite/gcc.dg/tree-ssa/pr51583.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.dg/tree-ssa/pr51583.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.dg/tree-ssa/pr51583.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,34 @@ +/* { dg-do compile } */ +/* { dg-options "-O1" } */ @@ -2236,7 +3632,7 @@ Index: gcc/testsuite/gcc.dg/tree-ssa/pr51583.c Index: gcc/testsuite/gcc.dg/delay-slot-2.c =================================================================== --- gcc/testsuite/gcc.dg/delay-slot-2.c (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/gcc.dg/delay-slot-2.c (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/gcc.dg/delay-slot-2.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,116 @@ +/* PR rtl-optimization/51187 */ +/* Reported by Jurij Smakov */ @@ -2348,17 +3744,182 @@ Index: gcc/testsuite/gcc.dg/delay-slot-2.c + printf ("pnum_clobbers != NULL"); + break; + -+ default: -+ __builtin_unreachable(); -+ } -+} ++ default: ++ __builtin_unreachable(); ++ } ++} ++ ++/* { dg-final { scan-assembler "printf" } } */ +Index: gcc/testsuite/ada/acats/overflow.lst +=================================================================== +--- gcc/testsuite/ada/acats/overflow.lst (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/testsuite/ada/acats/overflow.lst (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -14,3 +14,4 @@ + c460008 + c460011 + c4a012b ++cb20004 +Index: gcc/testsuite/ChangeLog +=================================================================== +--- gcc/testsuite/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/testsuite/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1,3 +1,411 @@ ++2012-01-30 Bin Cheng ++ ++ Backport from mainline. ++ 2012-01-30 Bin Cheng ++ ++ PR target/51835 ++ * gcc.target/arm/pr51835.c: New testcase. ++ ++2012-01-28 Tobias Burnus ++ ++ PR fortran/52022 ++ * gfortran.dg/dummy_procedure_7.f90: New. ++ ++2012-01-25 Jason Merrill ++ ++ PR target/51934 ++ * g++.dg/torture/pr51344.C: Limit to x86. ++ ++2012-01-25 Tobias Burnus ++ ++ PR fortran/51966 ++ * gfortran.dg/derived_constructor_char_3.f90: New. ++ ++2012-01-24 Tobias Burnus ++ ++ PR fortran/51948 ++ * gfortran.dg/move_alloc_12.f90: New. ++ ++2012-01-21 Tobias Burnus ++ ++ PR fortran/51913 ++ * gfortran.dg/class_47.f90: New. ++ ++2012-01-21 Eric Botcazou ++ ++ * gnat.dg/renaming5.ad[sb]: New test. ++ ++2012-01-20 Kai Tietz ++ ++ * g++.dg/torture/pr51344.C: Fix typo. ++ ++2012-01-19 Kai Tietz ++ ++ * g++.dg/torture/pr51344.C: New test. ++ ++2012-01-19 Tobias Burnus ++ ++ PR fortran/51904 ++ * gfortran.dg/intrinsic_size_2.f90: New. ++ ++2012-01-18 Bill Schmidt ++ ++ PR tree-optimization/49642 ++ * gcc.dg/tree-ssa/pr49642.c: New test. ++ ++2012-01-16 Jason Merrill ++ ++ PR c++/51854 ++ * g++.dg/abi/mangle60.C: New. ++ ++ PR c++/51868 ++ * g++.dg/cpp0x/rv-bitfield.C: New. ++ * g++.dg/cpp0x/rv-bitfield2.C: New. ++ ++2012-01-15 Uros Bizjak ++ ++ PR rtl-optimization/51821 ++ * gcc.dg/pr51821.c: New test. ++ ++2012-01-14 Tobias Burnus ++ ++ Backported from mainline ++ 2012-01-14 Tobias Burnus ++ ++ PR fortran/51800 ++ * gfortran.dg/init_flag_8.f90: New. ++ * gfortran.dg/init_flag_9.f90: New. ++ ++2012-01-12 Matthew Gretton-Dann ++ ++ Backport from mainline: ++ 2012-01-11 Matthew Gretton-Dann ++ ++ * testsuite/gcc.c-torture/execute/20120110-1.c: New testcase. ++ ++2012-01-10 Joseph Myers ++ ++ * gcc.c-torture/execute/doloop-1.c, ++ gcc.c-torture/execute/doloop-2.c: New tests. ++ ++2012-01-09 Martin Jambor ++ ++ PR tree-optimization/51759 ++ * g++.dg/ipa/pr51759.C: New test. ++ ++2012-01-09 Ramana Radhakrishnan ++ ++ Backport from mainline: ++ 2011-11-04 Jiangning Liu ++ ++ PR rtl-optimization/38644 ++ * gcc.target/arm/stack-red-zone.c: New. ++ ++2012-01-09 Andrew Stubbs ++ ++ Backport from mainline: ++ ++ 2012-01-06 Andrew Stubbs ++ ++ * gcc.target/arm/headmerge-2.c: Adjust scan pattern. ++ ++2012-01-06 Richard Sandiford ++ ++ PR middle-end/48660 ++ * g++.dg/pr48660.C: New test. ++ ++2012-01-06 Eric Botcazou ++ ++ * ada/acats/overflow.lst: Add cb20004. ++ ++2012-01-05 Eric Botcazou ++ ++ * gcc.c-torture/execute/20120104-1.c: New test. ++ ++2012-01-04 Richard Guenther ++ ++ PR tree-optimization/49651 ++ * gcc.dg/tree-ssa/pta-ptrarith-1.c: Adjust. ++ * gcc.dg/tree-ssa/pta-ptrarith-2.c: Likewise. ++ ++2012-01-03 Richard Guenther ++ ++ Backport from mainline ++ 2011-11-10 Richard Guenther ++ ++ PR tree-optimization/51042 ++ * gcc.dg/torture/pr51042.c: New testcase. ++ ++2012-01-03 Richard Guenther ++ ++ PR tree-optimization/51070 ++ * gcc.dg/torture/pr51070.c: New testcase. ++ * gcc.dg/torture/pr51070-2.c: Likewise. ++ ++2011-12-20 Dodji Seketeli ++ ++ PR debug/49951 ++ * g++.dg/gcov/gcov-2.C: Adjust. ++ ++2012-01-01 Thomas König ++ ++ Backport from trunk ++ PR fortran/51502 ++ * lib/gcc-dg.exp (scan-module-absence): New function. ++ * gfortran.dg/implicit_pure_2.f90: New test. + -+/* { dg-final { scan-assembler "printf" } } */ -Index: gcc/testsuite/ChangeLog -=================================================================== ---- gcc/testsuite/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/testsuite/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) -@@ -1,3 +1,255 @@ +2011-12-28 Michael Meissner + + Backport from mainline @@ -2614,7 +4175,7 @@ Index: gcc/testsuite/ChangeLog 2011-10-26 Release Manager * GCC 4.6.2 released. -@@ -9,9 +261,9 @@ +@@ -9,9 +417,9 @@ 2011-10-20 Uros Bizjak @@ -2630,7 +4191,7 @@ Index: gcc/testsuite/ChangeLog Index: gcc/testsuite/g++.dg/vect/pr51485.cc =================================================================== --- gcc/testsuite/g++.dg/vect/pr51485.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/g++.dg/vect/pr51485.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/g++.dg/vect/pr51485.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,14 @@ +/* { dg-do compile } */ + @@ -2646,10 +4207,63 @@ Index: gcc/testsuite/g++.dg/vect/pr51485.cc +} + +/* { dg-final { cleanup-tree-dump "vect" } } */ +Index: gcc/testsuite/g++.dg/pr48660.C +=================================================================== +--- gcc/testsuite/g++.dg/pr48660.C (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/g++.dg/pr48660.C (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,22 @@ ++template struct val { char a[N]; }; ++ ++class Base ++{ ++public: ++ virtual val<1> get1() const = 0; ++ virtual val<2> get2() const = 0; ++ virtual val<3> get3() const = 0; ++ virtual val<4> get4() const = 0; ++}; ++ ++class Derived : public virtual Base ++{ ++public: ++ virtual val<1> get1() const { return foo->get1(); } ++ virtual val<2> get2() const { return foo->get2(); } ++ virtual val<3> get3() const { return foo->get3(); } ++ virtual val<4> get4() const { return foo->get4(); } ++ Base *foo; ++}; ++ ++Base* make() { return new Derived; } +Index: gcc/testsuite/g++.dg/abi/mangle60.C +=================================================================== +--- gcc/testsuite/g++.dg/abi/mangle60.C (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/g++.dg/abi/mangle60.C (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,21 @@ ++// PR c++/51854 ++// { dg-options "" } ++// { dg-excess-errors "" { xfail *-*-* } } ++ ++template struct A; ++ ++template ++char foo(U, V); ++ ++// { dg-final { scan-assembler "_Z3barIiEvP1AIXszcl3foocvT__ELCi0_42EEEE" } } ++template ++void bar(A *); ++ ++// { dg-final { scan-assembler "_Z3bazIiEvP1AIXszcl3foocvT__ELCf00000000_00000000EEEE" } } ++template ++void baz(A *); ++ ++int main() { ++ bar(0); ++ baz(0); ++} Index: gcc/testsuite/g++.dg/init/value10.C =================================================================== --- gcc/testsuite/g++.dg/init/value10.C (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/g++.dg/init/value10.C (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/g++.dg/init/value10.C (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,27 @@ +// PR c++/51331 +// { dg-do run } @@ -2681,7 +4295,7 @@ Index: gcc/testsuite/g++.dg/init/value10.C Index: gcc/testsuite/g++.dg/other/enum2.C =================================================================== --- gcc/testsuite/g++.dg/other/enum2.C (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/g++.dg/other/enum2.C (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/g++.dg/other/enum2.C (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,3 @@ +// PR c++/51248 + @@ -2689,7 +4303,7 @@ Index: gcc/testsuite/g++.dg/other/enum2.C Index: gcc/testsuite/g++.dg/other/offsetof7.C =================================================================== --- gcc/testsuite/g++.dg/other/offsetof7.C (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/g++.dg/other/offsetof7.C (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/g++.dg/other/offsetof7.C (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,17 @@ +// PR c++/50608 +// Testcase by @@ -2711,7 +4325,7 @@ Index: gcc/testsuite/g++.dg/other/offsetof7.C Index: gcc/testsuite/g++.dg/tree-ssa/pr50622.C =================================================================== --- gcc/testsuite/g++.dg/tree-ssa/pr50622.C (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/g++.dg/tree-ssa/pr50622.C (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/g++.dg/tree-ssa/pr50622.C (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,30 @@ +// { dg-do compile } +// { dg-options "-O2" } @@ -2746,7 +4360,7 @@ Index: gcc/testsuite/g++.dg/tree-ssa/pr50622.C Index: gcc/testsuite/g++.dg/cpp0x/auto31.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/auto31.C (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/g++.dg/cpp0x/auto31.C (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/g++.dg/cpp0x/auto31.C (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,12 @@ +// PR c++/51416 +// { dg-options "-std=c++0x" } @@ -2763,7 +4377,7 @@ Index: gcc/testsuite/g++.dg/cpp0x/auto31.C Index: gcc/testsuite/g++.dg/cpp0x/pr50901.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/pr50901.C (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/g++.dg/cpp0x/pr50901.C (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/g++.dg/cpp0x/pr50901.C (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,9 @@ +// { dg-options "-std=c++0x" } + @@ -2776,8 +4390,8 @@ Index: gcc/testsuite/g++.dg/cpp0x/pr50901.C +int i = foo(1); Index: gcc/testsuite/g++.dg/cpp0x/variadic103.C =================================================================== ---- gcc/testsuite/g++.dg/cpp0x/variadic103.C (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/testsuite/g++.dg/cpp0x/variadic103.C (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/testsuite/g++.dg/cpp0x/variadic103.C (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/testsuite/g++.dg/cpp0x/variadic103.C (.../branches/gcc-4_6-branch) (wersja 183790) @@ -5,7 +5,7 @@ template @@ -2790,7 +4404,7 @@ Index: gcc/testsuite/g++.dg/cpp0x/variadic103.C Index: gcc/testsuite/g++.dg/cpp0x/decltype35.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/decltype35.C (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/g++.dg/cpp0x/decltype35.C (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/g++.dg/cpp0x/decltype35.C (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,15 @@ +// PR c++/50870 +// { dg-options -std=c++0x } @@ -2810,7 +4424,7 @@ Index: gcc/testsuite/g++.dg/cpp0x/decltype35.C Index: gcc/testsuite/g++.dg/cpp0x/decltype36.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/decltype36.C (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/g++.dg/cpp0x/decltype36.C (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/g++.dg/cpp0x/decltype36.C (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,21 @@ +// PR c++/51265 +// { dg-options -std=c++0x } @@ -2836,7 +4450,7 @@ Index: gcc/testsuite/g++.dg/cpp0x/decltype36.C Index: gcc/testsuite/g++.dg/cpp0x/pr51150.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/pr51150.C (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/g++.dg/cpp0x/pr51150.C (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/g++.dg/cpp0x/pr51150.C (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,20 @@ +// PR c++/51150 +// { dg-options "-std=c++0x" } @@ -2858,10 +4472,49 @@ Index: gcc/testsuite/g++.dg/cpp0x/pr51150.C +} + +template void Boo(int); +Index: gcc/testsuite/g++.dg/cpp0x/rv-bitfield2.C +=================================================================== +--- gcc/testsuite/g++.dg/cpp0x/rv-bitfield2.C (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/g++.dg/cpp0x/rv-bitfield2.C (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,17 @@ ++// PR c++/51868 ++// { dg-options -std=c++0x } ++ ++struct A { ++ A() {} ++ A(const A&) {} ++ A(A&&) {} ++}; ++ ++struct B { ++ A a; ++ int f : 1; ++}; ++ ++B func() { ++ return B(); ++} +Index: gcc/testsuite/g++.dg/cpp0x/rv-bitfield.C +=================================================================== +--- gcc/testsuite/g++.dg/cpp0x/rv-bitfield.C (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/g++.dg/cpp0x/rv-bitfield.C (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,12 @@ ++// { dg-options -std=c++0x } ++ ++struct A ++{ ++ int i : 1; ++}; ++ ++int main() ++{ ++ A a; ++ static_cast(a.i); ++} Index: gcc/testsuite/g++.dg/cpp0x/rv-cast3.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv-cast3.C (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/g++.dg/cpp0x/rv-cast3.C (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/g++.dg/cpp0x/rv-cast3.C (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,18 @@ +// PR c++/51406 +// { dg-do run } @@ -2884,7 +4537,7 @@ Index: gcc/testsuite/g++.dg/cpp0x/rv-cast3.C Index: gcc/testsuite/g++.dg/cpp0x/rv-cast4.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/rv-cast4.C (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/g++.dg/cpp0x/rv-cast4.C (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/g++.dg/cpp0x/rv-cast4.C (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,13 @@ +// PR c++/51161 +// { dg-options "-std=c++0x" } @@ -2899,10 +4552,39 @@ Index: gcc/testsuite/g++.dg/cpp0x/rv-cast4.C + D d; + static_cast(d); // { dg-error "ambiguous" } +} +Index: gcc/testsuite/g++.dg/gcov/gcov-2.C +=================================================================== +--- gcc/testsuite/g++.dg/gcov/gcov-2.C (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/testsuite/g++.dg/gcov/gcov-2.C (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -20,7 +20,7 @@ + + void foo() + { +- C c; /* count(2) */ ++ C c; /* count(1) */ + c.seti (1); /* count(1) */ + } + +Index: gcc/testsuite/g++.dg/torture/pr51344.C +=================================================================== +--- gcc/testsuite/g++.dg/torture/pr51344.C (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/g++.dg/torture/pr51344.C (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,11 @@ ++/* { dg-do compile { target { i?86-*-* && ilp32 } } } */ ++class A; ++ ++template ++class B ++{ ++ friend __attribute__((cdecl)) A& operator >>(A& a, B& b) ++ { ++ return a; ++ } ++}; Index: gcc/testsuite/g++.dg/torture/pr49720.C =================================================================== --- gcc/testsuite/g++.dg/torture/pr49720.C (.../tags/gcc_4_6_2_release) (wersja 0) -+++ gcc/testsuite/g++.dg/torture/pr49720.C (.../branches/gcc-4_6-branch) (wersja 182722) ++++ gcc/testsuite/g++.dg/torture/pr49720.C (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,8 @@ +/* { dg-do compile } */ + @@ -2912,10 +4594,41 @@ Index: gcc/testsuite/g++.dg/torture/pr49720.C + long size = reinterpret_cast(t_size); + return (size == t_end - t_start); +} +Index: gcc/testsuite/g++.dg/ipa/pr51759.C +=================================================================== +--- gcc/testsuite/g++.dg/ipa/pr51759.C (.../tags/gcc_4_6_2_release) (wersja 0) ++++ gcc/testsuite/g++.dg/ipa/pr51759.C (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,26 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++extern "C" void abort (void); ++struct S ++{ ++ void __attribute__((noinline)) set(unsigned val) ++ { ++ data = val; ++ if (data != val) ++ abort (); ++ } ++ int pad0; ++ unsigned pad1 : 8; ++ unsigned data : 24; ++ int pad2; ++}; ++int main() ++{ ++ S s; ++ s.pad2 = -1; ++ s.set(0); ++ if (s.pad2 != -1) ++ abort (); ++} ++ Index: gcc/cp/typeck.c =================================================================== ---- gcc/cp/typeck.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/cp/typeck.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/cp/typeck.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/cp/typeck.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -4835,9 +4835,7 @@ && TREE_CONSTANT (TREE_OPERAND (val, 0))) { @@ -2927,31 +4640,57 @@ Index: gcc/cp/typeck.c } /* Handle complex lvalues (when permitted) -@@ -5772,8 +5770,18 @@ +@@ -5698,11 +5696,12 @@ + { + tree intype; + tree result; ++ cp_lvalue_kind clk; + + /* Assume the cast is valid. */ + *valid_p = true; + +- intype = TREE_TYPE (expr); ++ intype = unlowered_expr_type (expr); + + /* Save casted types in the function's used types hash table. */ + used_types_insert (type); +@@ -5768,12 +5767,29 @@ + cv2 T2 if cv2 T2 is reference-compatible with cv1 T1 (8.5.3)." */ + if (TREE_CODE (type) == REFERENCE_TYPE + && TYPE_REF_IS_RVALUE (type) +- && real_lvalue_p (expr) ++ && (clk = real_lvalue_p (expr)) && reference_related_p (TREE_TYPE (type), intype) && (c_cast_p || at_least_as_qualified_p (TREE_TYPE (type), intype))) { - expr = build_typed_address (expr, type); - return convert_from_reference (expr); -+ /* Handle the lvalue case here by casting to lvalue reference and -+ then changing it to an rvalue reference. Casting an xvalue to -+ rvalue reference will be handled by the main code path. */ -+ tree lref = cp_build_reference_type (TREE_TYPE (type), false); -+ result = (perform_direct_initialization_if_possible -+ (lref, expr, c_cast_p, complain)); -+ result = cp_fold_convert (type, result); -+ /* Make sure we don't fold back down to a named rvalue reference, -+ because that would be an lvalue. */ -+ if (DECL_P (result)) -+ result = build1 (NON_LVALUE_EXPR, type, result); -+ return convert_from_reference (result); ++ if (clk == clk_ordinary) ++ { ++ /* Handle the (non-bit-field) lvalue case here by casting to ++ lvalue reference and then changing it to an rvalue reference. ++ Casting an xvalue to rvalue reference will be handled by the ++ main code path. */ ++ tree lref = cp_build_reference_type (TREE_TYPE (type), false); ++ result = (perform_direct_initialization_if_possible ++ (lref, expr, c_cast_p, complain)); ++ result = cp_fold_convert (type, result); ++ /* Make sure we don't fold back down to a named rvalue reference, ++ because that would be an lvalue. */ ++ if (DECL_P (result)) ++ result = build1 (NON_LVALUE_EXPR, type, result); ++ return convert_from_reference (result); ++ } ++ else ++ /* For a bit-field or packed field, bind to a temporary. */ ++ expr = rvalue (expr); } /* Resolve overloaded address here rather than once in Index: gcc/cp/init.c =================================================================== ---- gcc/cp/init.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/cp/init.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/cp/init.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/cp/init.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -141,7 +141,9 @@ zero-initialization does not simply mean filling the storage with zero bytes. FIELD_SIZE, if non-NULL, is the bit size of the field, @@ -2978,8 +4717,8 @@ Index: gcc/cp/init.c gcc_assert (!TYPE_NEEDS_CONSTRUCTING (type)); Index: gcc/cp/class.c =================================================================== ---- gcc/cp/class.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/cp/class.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/cp/class.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/cp/class.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -464,7 +464,14 @@ /* Is this the base field created by build_base_field? */ if (TREE_CODE (field) == FIELD_DECL @@ -3009,8 +4748,8 @@ Index: gcc/cp/class.c /* We use fold_build2 and fold_convert below to simplify the trees Index: gcc/cp/decl.c =================================================================== ---- gcc/cp/decl.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/cp/decl.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/cp/decl.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/cp/decl.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -11540,15 +11540,19 @@ static void copy_type_enum (tree dst, tree src) @@ -3055,11 +4794,51 @@ Index: gcc/cp/decl.c } /* Build and install a CONST_DECL for an enumeration constant of the +@@ -13356,8 +13363,17 @@ + cleanup = call; + } + ++ /* build_delete sets the location of the destructor call to the ++ current location, even though the destructor is going to be ++ called later, at the end of the current scope. This can lead to ++ a "jumpy" behaviour for users of debuggers when they step around ++ the end of the block. So let's unset the location of the ++ destructor call instead. */ ++ if (cleanup != NULL && EXPR_P (cleanup)) ++ SET_EXPR_LOCATION (cleanup, UNKNOWN_LOCATION); + return cleanup; + } ++ + + /* When a stmt has been parsed, this function is called. */ + Index: gcc/cp/ChangeLog =================================================================== ---- gcc/cp/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/cp/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) -@@ -1,3 +1,57 @@ +--- gcc/cp/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/cp/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1,3 +1,79 @@ ++2012-01-19 Kai Tietz ++ ++ PR c++/51344 ++ * decl2.c (save_template_attributes): Use merge_attributes ++ instead of chaining up via TREE_CHAIN. ++ ++2012-01-16 Jakub Jelinek ++ ++ PR c++/51854 ++ * mangle.c (write_template_arg_literal): Sorry instead of aborting. ++ ++2012-01-16 Jason Merrill ++ ++ PR c++/51868 ++ * typeck.c (build_static_cast_1): Handle bit-fields properly. ++ ++2011-12-20 Dodji Seketeli ++ ++ PR debug/49951 ++ * decl.c (cxx_maybe_build_cleanup): Don't set location of the call ++ to the destructor. ++ +2011-12-16 Jason Merrill + + PR c++/51416 @@ -3119,8 +4898,8 @@ Index: gcc/cp/ChangeLog * GCC 4.6.2 released. Index: gcc/cp/pt.c =================================================================== ---- gcc/cp/pt.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/cp/pt.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/cp/pt.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/cp/pt.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -11439,6 +11439,9 @@ mark_used (t); return t; @@ -3155,8 +4934,8 @@ Index: gcc/cp/pt.c { Index: gcc/cp/semantics.c =================================================================== ---- gcc/cp/semantics.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/cp/semantics.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/cp/semantics.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/cp/semantics.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -3348,7 +3348,7 @@ } if (TREE_CODE (expr) == INDIRECT_REF && REFERENCE_REF_P (expr)) @@ -3177,10 +4956,26 @@ Index: gcc/cp/semantics.c type = TREE_TYPE (expr); break; +Index: gcc/cp/decl2.c +=================================================================== +--- gcc/cp/decl2.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/cp/decl2.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1185,9 +1185,9 @@ + + old_attrs = *q; + +- /* Place the late attributes at the beginning of the attribute ++ /* Merge the late attributes at the beginning with the attribute + list. */ +- TREE_CHAIN (tree_last (late_attrs)) = *q; ++ late_attrs = merge_attributes (late_attrs, *q); + *q = late_attrs; + + if (!DECL_P (*decl_p) && *decl_p == TYPE_MAIN_VARIANT (*decl_p)) Index: gcc/cp/call.c =================================================================== ---- gcc/cp/call.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/cp/call.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/cp/call.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/cp/call.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -4996,6 +4996,7 @@ case POSTDECREMENT_EXPR: case REALPART_EXPR: @@ -3189,10 +4984,24 @@ Index: gcc/cp/call.c return cp_build_unary_op (code, arg1, candidates != 0, complain); case ARRAY_REF: +Index: gcc/cp/mangle.c +=================================================================== +--- gcc/cp/mangle.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/cp/mangle.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -2770,7 +2770,8 @@ + break; + + default: +- gcc_unreachable (); ++ sorry ("mangling %C", TREE_CODE (value)); ++ break; + } + + write_char ('E'); Index: gcc/lto-cgraph.c =================================================================== ---- gcc/lto-cgraph.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/lto-cgraph.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/lto-cgraph.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/lto-cgraph.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1792,9 +1792,9 @@ { const struct lto_function_header *header = @@ -3208,8 +5017,8 @@ Index: gcc/lto-cgraph.c unsigned int i; Index: gcc/lto-streamer-out.c =================================================================== ---- gcc/lto-streamer-out.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/lto-streamer-out.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/lto-streamer-out.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/lto-streamer-out.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -2408,7 +2408,7 @@ enum gcc_plugin_symbol_kind kind; enum gcc_plugin_symbol_visibility visibility; @@ -3248,8 +5057,8 @@ Index: gcc/lto-streamer-out.c Index: gcc/dwarf2out.c =================================================================== ---- gcc/dwarf2out.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/dwarf2out.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/dwarf2out.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/dwarf2out.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -4431,6 +4431,11 @@ const char *section; /* Section this loclist is relative to */ dw_loc_descr_ref expr; @@ -3517,9 +5326,170 @@ Index: gcc/dwarf2out.c Index: gcc/expr.c =================================================================== ---- gcc/expr.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/expr.c (.../branches/gcc-4_6-branch) (wersja 182722) -@@ -9189,8 +9189,16 @@ +--- gcc/expr.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/expr.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -2180,6 +2180,111 @@ + return tgtblk; + } + ++/* Copy BLKmode value SRC into a register of mode MODE. Return the ++ register if it contains any data, otherwise return null. ++ ++ This is used on targets that return BLKmode values in registers. */ ++ ++rtx ++copy_blkmode_to_reg (enum machine_mode mode, tree src) ++{ ++ int i, n_regs; ++ unsigned HOST_WIDE_INT bitpos, xbitpos, padding_correction = 0, bytes; ++ unsigned int bitsize; ++ rtx *dst_words, dst, x, src_word = NULL_RTX, dst_word = NULL_RTX; ++ enum machine_mode dst_mode; ++ ++ gcc_assert (TYPE_MODE (TREE_TYPE (src)) == BLKmode); ++ ++ x = expand_normal (src); ++ ++ bytes = int_size_in_bytes (TREE_TYPE (src)); ++ if (bytes == 0) ++ return NULL_RTX; ++ ++ /* If the structure doesn't take up a whole number of words, see ++ whether the register value should be padded on the left or on ++ the right. Set PADDING_CORRECTION to the number of padding ++ bits needed on the left side. ++ ++ In most ABIs, the structure will be returned at the least end of ++ the register, which translates to right padding on little-endian ++ targets and left padding on big-endian targets. The opposite ++ holds if the structure is returned at the most significant ++ end of the register. */ ++ if (bytes % UNITS_PER_WORD != 0 ++ && (targetm.calls.return_in_msb (TREE_TYPE (src)) ++ ? !BYTES_BIG_ENDIAN ++ : BYTES_BIG_ENDIAN)) ++ padding_correction = (BITS_PER_WORD - ((bytes % UNITS_PER_WORD) ++ * BITS_PER_UNIT)); ++ ++ n_regs = (bytes + UNITS_PER_WORD - 1) / UNITS_PER_WORD; ++ dst_words = XALLOCAVEC (rtx, n_regs); ++ bitsize = MIN (TYPE_ALIGN (TREE_TYPE (src)), BITS_PER_WORD); ++ ++ /* Copy the structure BITSIZE bits at a time. */ ++ for (bitpos = 0, xbitpos = padding_correction; ++ bitpos < bytes * BITS_PER_UNIT; ++ bitpos += bitsize, xbitpos += bitsize) ++ { ++ /* We need a new destination pseudo each time xbitpos is ++ on a word boundary and when xbitpos == padding_correction ++ (the first time through). */ ++ if (xbitpos % BITS_PER_WORD == 0 ++ || xbitpos == padding_correction) ++ { ++ /* Generate an appropriate register. */ ++ dst_word = gen_reg_rtx (word_mode); ++ dst_words[xbitpos / BITS_PER_WORD] = dst_word; ++ ++ /* Clear the destination before we move anything into it. */ ++ emit_move_insn (dst_word, CONST0_RTX (word_mode)); ++ } ++ ++ /* We need a new source operand each time bitpos is on a word ++ boundary. */ ++ if (bitpos % BITS_PER_WORD == 0) ++ src_word = operand_subword_force (x, bitpos / BITS_PER_WORD, BLKmode); ++ ++ /* Use bitpos for the source extraction (left justified) and ++ xbitpos for the destination store (right justified). */ ++ store_bit_field (dst_word, bitsize, xbitpos % BITS_PER_WORD, word_mode, ++ extract_bit_field (src_word, bitsize, ++ bitpos % BITS_PER_WORD, 1, false, ++ NULL_RTX, word_mode, word_mode)); ++ } ++ ++ if (mode == BLKmode) ++ { ++ /* Find the smallest integer mode large enough to hold the ++ entire structure. */ ++ for (mode = GET_CLASS_NARROWEST_MODE (MODE_INT); ++ mode != VOIDmode; ++ mode = GET_MODE_WIDER_MODE (mode)) ++ /* Have we found a large enough mode? */ ++ if (GET_MODE_SIZE (mode) >= bytes) ++ break; ++ ++ /* A suitable mode should have been found. */ ++ gcc_assert (mode != VOIDmode); ++ } ++ ++ if (GET_MODE_SIZE (mode) < GET_MODE_SIZE (word_mode)) ++ dst_mode = word_mode; ++ else ++ dst_mode = mode; ++ dst = gen_reg_rtx (dst_mode); ++ ++ for (i = 0; i < n_regs; i++) ++ emit_move_insn (operand_subword (dst, i, 0, dst_mode), dst_words[i]); ++ ++ if (mode != dst_mode) ++ dst = gen_lowpart (mode, dst); ++ ++ return dst; ++} ++ + /* Add a USE expression for REG to the (possibly empty) list pointed + to by CALL_FUSAGE. REG must denote a hard register. */ + +@@ -4382,7 +4487,9 @@ + if (TREE_CODE (from) == CALL_EXPR && ! aggregate_value_p (from, from) + && COMPLETE_TYPE_P (TREE_TYPE (from)) + && TREE_CODE (TYPE_SIZE (TREE_TYPE (from))) == INTEGER_CST +- && ! (((TREE_CODE (to) == VAR_DECL || TREE_CODE (to) == PARM_DECL) ++ && ! (((TREE_CODE (to) == VAR_DECL ++ || TREE_CODE (to) == PARM_DECL ++ || TREE_CODE (to) == RESULT_DECL) + && REG_P (DECL_RTL (to))) + || TREE_CODE (to) == SSA_NAME)) + { +@@ -4428,12 +4535,15 @@ + rtx temp; + + push_temp_slots (); +- temp = expand_expr (from, NULL_RTX, GET_MODE (to_rtx), EXPAND_NORMAL); ++ if (REG_P (to_rtx) && TYPE_MODE (TREE_TYPE (from)) == BLKmode) ++ temp = copy_blkmode_to_reg (GET_MODE (to_rtx), from); ++ else ++ temp = expand_expr (from, NULL_RTX, GET_MODE (to_rtx), EXPAND_NORMAL); + + if (GET_CODE (to_rtx) == PARALLEL) + emit_group_load (to_rtx, temp, TREE_TYPE (from), + int_size_in_bytes (TREE_TYPE (from))); +- else ++ else if (temp) + emit_move_insn (to_rtx, temp); + + preserve_temp_slots (to_rtx); +@@ -8533,10 +8643,15 @@ + return temp; + } + +- /* If the mode of DECL_RTL does not match that of the decl, it +- must be a promoted value. We return a SUBREG of the wanted mode, +- but mark it so that we know that it was already extended. */ +- if (REG_P (decl_rtl) && GET_MODE (decl_rtl) != DECL_MODE (exp)) ++ /* If the mode of DECL_RTL does not match that of the decl, ++ there are two cases: we are dealing with a BLKmode value ++ that is returned in a register, or we are dealing with ++ a promoted value. In the latter case, return a SUBREG ++ of the wanted mode, but mark it so that we know that it ++ was already extended. */ ++ if (REG_P (decl_rtl) ++ && DECL_MODE (exp) != BLKmode ++ && GET_MODE (decl_rtl) != DECL_MODE (exp)) + { + enum machine_mode pmode; + +@@ -9189,8 +9304,16 @@ && modifier != EXPAND_CONST_ADDRESS && modifier != EXPAND_INITIALIZER) /* If the field is volatile, we always want an aligned @@ -3538,10 +5508,87 @@ Index: gcc/expr.c /* If the field isn't aligned enough to fetch as a memref, fetch it as a bit field. */ || (mode1 != BLKmode +@@ -9486,10 +9609,32 @@ + results. */ + if (MEM_P (op0)) + { ++ enum insn_code icode; ++ + op0 = copy_rtx (op0); + + if (TYPE_ALIGN_OK (type)) + set_mem_align (op0, MAX (MEM_ALIGN (op0), TYPE_ALIGN (type))); ++ else if (mode != BLKmode ++ && MEM_ALIGN (op0) < GET_MODE_ALIGNMENT (mode) ++ /* If the target does have special handling for unaligned ++ loads of mode then use them. */ ++ && ((icode = optab_handler (movmisalign_optab, mode)) ++ != CODE_FOR_nothing)) ++ { ++ rtx reg, insn; ++ ++ op0 = adjust_address (op0, mode, 0); ++ /* We've already validated the memory, and we're creating a ++ new pseudo destination. The predicates really can't ++ fail. */ ++ reg = gen_reg_rtx (mode); ++ ++ /* Nor can the insn generator. */ ++ insn = GEN_FCN (icode) (reg, op0); ++ emit_insn (insn); ++ return reg; ++ } + else if (STRICT_ALIGNMENT + && mode != BLKmode + && MEM_ALIGN (op0) < GET_MODE_ALIGNMENT (mode)) +Index: gcc/expr.h +=================================================================== +--- gcc/expr.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/expr.h (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -324,6 +324,8 @@ + /* Copy BLKmode object from a set of registers. */ + extern rtx copy_blkmode_from_reg (rtx, rtx, tree); + ++extern rtx copy_blkmode_to_reg (enum machine_mode, tree); ++ + /* Mark REG as holding a parameter for the next CALL_INSN. */ + extern void use_reg (rtx *, rtx); + +Index: gcc/recog.c +=================================================================== +--- gcc/recog.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/recog.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -3023,6 +3023,7 @@ + static int search_ofs; + enum reg_class cl; + HARD_REG_SET live; ++ df_ref *def_rec; + int i; + + gcc_assert (from < MAX_INSNS_PER_PEEP2 + 1); +@@ -3036,12 +3037,14 @@ + + while (from != to) + { +- HARD_REG_SET this_live; ++ gcc_assert (peep2_insn_data[from].insn != NULL_RTX); + ++ /* Don't use registers set or clobbered by the insn. */ ++ for (def_rec = DF_INSN_DEFS (peep2_insn_data[from].insn); ++ *def_rec; def_rec++) ++ SET_HARD_REG_BIT (live, DF_REF_REGNO (*def_rec)); ++ + from = peep2_buf_position (from + 1); +- gcc_assert (peep2_insn_data[from].insn != NULL_RTX); +- REG_SET_TO_HARD_REG_SET (this_live, peep2_insn_data[from].live_before); +- IOR_HARD_REG_SET (live, this_live); + } + + cl = (class_str[0] == 'r' ? GENERAL_REGS Index: gcc/ada/mlib-tgt-specific-darwin.adb =================================================================== ---- gcc/ada/mlib-tgt-specific-darwin.adb (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/ada/mlib-tgt-specific-darwin.adb (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/ada/mlib-tgt-specific-darwin.adb (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/ada/mlib-tgt-specific-darwin.adb (.../branches/gcc-4_6-branch) (wersja 183790) @@ -36,8 +36,6 @@ -- Non default subprograms @@ -3577,8 +5624,8 @@ Index: gcc/ada/mlib-tgt-specific-darwin.adb Dynamic_Option_Ptr := Dynamic_Option'Access; Index: gcc/ada/init.c =================================================================== ---- gcc/ada/init.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/ada/init.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/ada/init.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/ada/init.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -2216,12 +2216,33 @@ return 0; } @@ -3616,9 +5663,23 @@ Index: gcc/ada/init.c case SIGSEGV: Index: gcc/ada/ChangeLog =================================================================== ---- gcc/ada/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/ada/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) -@@ -1,3 +1,42 @@ +--- gcc/ada/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/ada/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1,3 +1,56 @@ ++2012-01-21 Eric Botcazou ++ ++ PR ada/46192 ++ * gcc-interface/decl.c (gnat_to_gnu_entity) : In the case of a ++ renaming, preserve the volatileness through the indirection, if any. ++ ++2012-01-09 Eric Botcazou ++ ++ * gcc-interface/trans.c (addressable_p) : Fix thinko. ++ ++2012-01-02 Eric Botcazou ++ ++ * gnatvsn.ads (Current_Year): Bump to 2011. ++ +2011-12-08 Eric Botcazou + + PR tree-optimization/51315 @@ -3661,10 +5722,32 @@ Index: gcc/ada/ChangeLog 2011-10-26 Release Manager * GCC 4.6.2 released. +Index: gcc/ada/gnatvsn.ads +=================================================================== +--- gcc/ada/gnatvsn.ads (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/ada/gnatvsn.ads (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -6,7 +6,7 @@ + -- -- + -- S p e c -- + -- -- +--- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- ++-- Copyright (C) 1992-2011, Free Software Foundation, Inc. -- + -- -- + -- GNAT is free software; you can redistribute it and/or modify it under -- + -- terms of the GNU General Public License as published by the Free Soft- -- +@@ -92,7 +92,7 @@ + Verbose_Library_Version : constant String := "GNAT Lib v" & Library_Version; + -- Version string stored in e.g. ALI files + +- Current_Year : constant String := "2010"; ++ Current_Year : constant String := "2011"; + -- Used in printing copyright messages + + end Gnatvsn; Index: gcc/ada/gcc-interface/Makefile.in =================================================================== ---- gcc/ada/gcc-interface/Makefile.in (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/ada/gcc-interface/Makefile.in (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/ada/gcc-interface/Makefile.in (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/ada/gcc-interface/Makefile.in (.../branches/gcc-4_6-branch) (wersja 183790) @@ -2189,7 +2189,6 @@ EH_MECHANISM=-gcc @@ -3732,8 +5815,8 @@ Index: gcc/ada/gcc-interface/Makefile.in | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ Index: gcc/ada/gcc-interface/decl.c =================================================================== ---- gcc/ada/gcc-interface/decl.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/ada/gcc-interface/decl.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/ada/gcc-interface/decl.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/ada/gcc-interface/decl.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -808,16 +808,30 @@ && No (Address_Clause (gnat_entity)))) && TREE_CODE (TYPE_SIZE (gnu_type)) == INTEGER_CST) @@ -3770,10 +5853,47 @@ Index: gcc/ada/gcc-interface/decl.c align = align_cap; else align = ceil_alignment (tree_low_cst (TYPE_SIZE (gnu_type), 1)); +@@ -1009,6 +1023,14 @@ + entity is always accessed indirectly through it. */ + else + { ++ /* We need to preserve the volatileness of the renamed ++ object through the indirection. */ ++ if (TREE_THIS_VOLATILE (gnu_expr) ++ && !TYPE_VOLATILE (gnu_type)) ++ gnu_type ++ = build_qualified_type (gnu_type, ++ (TYPE_QUALS (gnu_type) ++ | TYPE_QUAL_VOLATILE)); + gnu_type = build_reference_type (gnu_type); + inner_const_flag = TREE_READONLY (gnu_expr); + const_flag = true; +Index: gcc/ada/gcc-interface/trans.c +=================================================================== +--- gcc/ada/gcc-interface/trans.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/ada/gcc-interface/trans.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -6,7 +6,7 @@ + * * + * C Implementation File * + * * +- * Copyright (C) 1992-2011, Free Software Foundation, Inc. * ++ * Copyright (C) 1992-2012, Free Software Foundation, Inc. * + * * + * GNAT is free software; you can redistribute it and/or modify it under * + * terms of the GNU General Public License as published by the Free Soft- * +@@ -7409,7 +7409,7 @@ + || DECL_ALIGN (TREE_OPERAND (gnu_expr, 1)) + >= TYPE_ALIGN (TREE_TYPE (gnu_expr)))) + /* The field of a padding record is always addressable. */ +- || TYPE_PADDING_P (TREE_TYPE (TREE_OPERAND (gnu_expr, 0)))) ++ || TYPE_IS_PADDING_P (TREE_TYPE (TREE_OPERAND (gnu_expr, 0)))) + && addressable_p (TREE_OPERAND (gnu_expr, 0), NULL_TREE)); + + case ARRAY_REF: case ARRAY_RANGE_REF: Index: gcc/ada/Make-generated.in =================================================================== ---- gcc/ada/Make-generated.in (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/ada/Make-generated.in (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/ada/Make-generated.in (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/ada/Make-generated.in (.../branches/gcc-4_6-branch) (wersja 183790) @@ -64,37 +64,6 @@ $(CP) $^ $(ADA_GEN_SUBDIR)/bldtools/nmake_s (cd $(ADA_GEN_SUBDIR)/bldtools/nmake_s; gnatmake -q xnmake ; ./xnmake -s ../../nmake.ads ) @@ -3814,8 +5934,8 @@ Index: gcc/ada/Make-generated.in $(ECHO) "pragma Style_Checks (Off);" >tmp-sdefault.adb Index: gcc/lto-streamer-in.c =================================================================== ---- gcc/lto-streamer-in.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/lto-streamer-in.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/lto-streamer-in.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/lto-streamer-in.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1366,9 +1366,9 @@ { const struct lto_function_header *header; @@ -3831,8 +5951,8 @@ Index: gcc/lto-streamer-in.c Index: gcc/c-decl.c =================================================================== ---- gcc/c-decl.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/c-decl.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/c-decl.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/c-decl.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -721,7 +721,7 @@ complete_array_type (&TREE_TYPE (decl), NULL_TREE, true); @@ -3860,10 +5980,82 @@ Index: gcc/c-decl.c } if (TREE_CODE (decl) == VAR_DECL) +@@ -9782,6 +9782,9 @@ + collect_source_ref (LOCATION_FILE (decl_sloc (decl, false))); + } + ++/* Preserve the external declarations scope across a garbage collect. */ ++static GTY(()) tree ext_block; ++ + /* Collect all references relevant to SOURCE_FILE. */ + + static void +@@ -9792,6 +9795,8 @@ + + FOR_EACH_VEC_ELT (tree, all_translation_units, i, t) + collect_ada_nodes (BLOCK_VARS (DECL_INITIAL (t)), source_file); ++ ++ collect_ada_nodes (BLOCK_VARS (ext_block), source_file); + } + + /* Iterate over all global declarations and call CALLBACK. */ +@@ -9810,11 +9815,11 @@ + for (decl = BLOCK_VARS (decls); decl; decl = TREE_CHAIN (decl)) + callback (decl); + } ++ ++ for (decl = BLOCK_VARS (ext_block); decl; decl = TREE_CHAIN (decl)) ++ callback (decl); + } + +-/* Preserve the external declarations scope across a garbage collect. */ +-static GTY(()) tree ext_block; +- + void + c_write_global_declarations (void) + { +Index: gcc/fortran/interface.c +=================================================================== +--- gcc/fortran/interface.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/fortran/interface.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1535,7 +1535,7 @@ + return 0; + } + +- /* F2003, 12.5.2.5. */ ++ /* F2008, 12.5.2.5. */ + if (formal->ts.type == BT_CLASS + && (CLASS_DATA (formal)->attr.class_pointer + || CLASS_DATA (formal)->attr.allocatable)) +@@ -1547,8 +1547,8 @@ + formal->name, &actual->where); + return 0; + } +- if (CLASS_DATA (actual)->ts.u.derived +- != CLASS_DATA (formal)->ts.u.derived) ++ if (!gfc_compare_derived_types (CLASS_DATA (actual)->ts.u.derived, ++ CLASS_DATA (formal)->ts.u.derived)) + { + if (where) + gfc_error ("Actual argument to '%s' at %L must have the same " +Index: gcc/fortran/trans-expr.c +=================================================================== +--- gcc/fortran/trans-expr.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/fortran/trans-expr.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -3064,7 +3064,8 @@ + || (fsym->attr.proc_pointer + && e->expr_type == EXPR_VARIABLE + && gfc_is_proc_ptr_comp (e, NULL)) +- || fsym->attr.allocatable)) ++ || (fsym->attr.allocatable ++ && fsym->attr.flavor != FL_PROCEDURE))) + { + /* Scalar pointer dummy args require an extra level of + indirection. The null pointer already contains Index: gcc/fortran/trans-array.c =================================================================== ---- gcc/fortran/trans-array.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/fortran/trans-array.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/fortran/trans-array.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/fortran/trans-array.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -6772,8 +6772,17 @@ gfc_array_index_type, cond, lbound, gfc_index_one_node); @@ -3901,9 +6093,57 @@ Index: gcc/fortran/trans-array.c } Index: gcc/fortran/ChangeLog =================================================================== ---- gcc/fortran/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/fortran/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) -@@ -1,3 +1,73 @@ +--- gcc/fortran/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/fortran/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1,3 +1,121 @@ ++2012-01-28 Tobias Burnus ++ ++ PR fortran/52022 ++ * trans-expr.c (gfc_conv_procedure_call): Fix passing ++ of functions, which return allocatables. ++ ++2012-01-25 Tobias Burnus ++ ++ PR fortran/51966 ++ * resolve.c (resolve_structure_cons): Only create an ++ array constructors for nonscalars. ++ ++2012-01-24 Tobias Burnus ++ ++ PR fortran/51948 ++ * check.c (variable_check): Fix checking for ++ result variables and deeply nested BLOCKs. ++ ++2012-01-21 Tobias Burnus ++ ++ PR fortran/51913 ++ * interface.c (compare_parameter): Fix CLASS comparison. ++ ++2012-01-19 Tobias Burnus ++ ++ PR fortran/51904 ++ *expr.c (gfc_build_intrinsic_call): Also set the symtree. ++ ++2012-01-14 Tobias Burnus ++ ++ Backported from mainline ++ 2012-01-14 Tobias Burnus ++ ++ PR fortran/51800 ++ * resolve.c (build_default_init_expr): Also initialize ++ nonconstant-length strings with -finit-character=. ++ ++2012-01-01 Thomas König ++ ++ Backport from trunk ++ PR fortran/51502 ++ * expr.c (gfc_check_vardef_context): When determining ++ implicit pure status, also check for variable definition ++ context. Walk up namespaces until a procedure is ++ found to reset the implict pure attribute. ++ * resolve.c (gfc_implicit_pure): Walk up namespaces ++ until a procedure is found. ++ +2011-12-22 Toon Moene + + PR fortran/51310 @@ -3979,8 +6219,8 @@ Index: gcc/fortran/ChangeLog * GCC 4.6.2 released. Index: gcc/fortran/expr.c =================================================================== ---- gcc/fortran/expr.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/fortran/expr.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/fortran/expr.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/fortran/expr.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -3679,6 +3679,8 @@ if (!c->attr.pointer && gfc_has_default_initializer (c->ts.u.derived)) @@ -3998,10 +6238,49 @@ Index: gcc/fortran/expr.c /* Get an expression for a default initializer. */ gfc_expr * +@@ -4360,6 +4363,11 @@ + result->value.function.name = name; + result->value.function.isym = isym; + ++ result->symtree = gfc_find_symtree (gfc_current_ns->sym_root, name); ++ gcc_assert (result->symtree ++ && (result->symtree->n.sym->attr.flavor == FL_PROCEDURE ++ || result->symtree->n.sym->attr.flavor == FL_UNKNOWN)); ++ + va_start (ap, numarg); + atail = NULL; + for (i = 0; i < numarg; ++i) +@@ -4520,9 +4528,24 @@ + return FAILURE; + } + +- if (!pointer && gfc_implicit_pure (NULL) && gfc_impure_variable (sym)) +- gfc_current_ns->proc_name->attr.implicit_pure = 0; ++ if (!pointer && context && gfc_implicit_pure (NULL) ++ && gfc_impure_variable (sym)) ++ { ++ gfc_namespace *ns; ++ gfc_symbol *sym; + ++ for (ns = gfc_current_ns; ns; ns = ns->parent) ++ { ++ sym = ns->proc_name; ++ if (sym == NULL) ++ break; ++ if (sym->attr.flavor == FL_PROCEDURE) ++ { ++ sym->attr.implicit_pure = 0; ++ break; ++ } ++ } ++ } + /* Check variable definition context for associate-names. */ + if (!pointer && sym->assoc) + { Index: gcc/fortran/invoke.texi =================================================================== ---- gcc/fortran/invoke.texi (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/fortran/invoke.texi (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/fortran/invoke.texi (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/fortran/invoke.texi (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1438,10 +1438,16 @@ the real and imaginary parts of local @code{COMPLEX} variables), @option{-finit-logical=@var{}}, and @@ -4025,8 +6304,8 @@ Index: gcc/fortran/invoke.texi and @code{COMPLEX} variables with a quiet NaN. For a signalling NaN Index: gcc/fortran/trans-types.c =================================================================== ---- gcc/fortran/trans-types.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/fortran/trans-types.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/fortran/trans-types.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/fortran/trans-types.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -2092,6 +2092,9 @@ gfc_component *to_cm; gfc_component *from_cm; @@ -4039,9 +6318,17 @@ Index: gcc/fortran/trans-types.c return 0; Index: gcc/fortran/resolve.c =================================================================== ---- gcc/fortran/resolve.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/fortran/resolve.c (.../branches/gcc-4_6-branch) (wersja 182722) -@@ -3132,11 +3132,11 @@ +--- gcc/fortran/resolve.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/fortran/resolve.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1053,6 +1053,7 @@ + && comp->ts.u.cl->length->expr_type == EXPR_CONSTANT + && cons->expr->ts.u.cl && cons->expr->ts.u.cl->length + && cons->expr->ts.u.cl->length->expr_type == EXPR_CONSTANT ++ && cons->expr->rank != 0 + && mpz_cmp (cons->expr->ts.u.cl->length->value.integer, + comp->ts.u.cl->length->value.integer) != 0) + { +@@ -3132,11 +3133,11 @@ "procedure within a PURE procedure", name, &expr->where); t = FAILURE; } @@ -4056,7 +6343,7 @@ Index: gcc/fortran/resolve.c /* Functions without the RECURSIVE attribution are not allowed to * call themselves. */ if (expr->value.function.esym && !expr->value.function.esym->attr.recursive) -@@ -3195,6 +3195,9 @@ +@@ -3195,6 +3196,9 @@ else if (gfc_pure (NULL)) gfc_error ("Subroutine call to '%s' at %L is not PURE", sym->name, &c->loc); @@ -4066,7 +6353,7 @@ Index: gcc/fortran/resolve.c } -@@ -9687,7 +9690,7 @@ +@@ -9687,7 +9691,7 @@ int i; /* These symbols should never have a default initialization. */ @@ -4075,7 +6362,50 @@ Index: gcc/fortran/resolve.c || sym->attr.external || sym->attr.dummy || sym->attr.pointer -@@ -11394,6 +11397,14 @@ +@@ -9811,6 +9815,26 @@ + gfc_free_expr (init_expr); + init_expr = NULL; + } ++ if (!init_expr && gfc_option.flag_init_character == GFC_INIT_CHARACTER_ON ++ && sym->ts.u.cl->length) ++ { ++ gfc_actual_arglist *arg; ++ init_expr = gfc_get_expr (); ++ init_expr->where = sym->declared_at; ++ init_expr->ts = sym->ts; ++ init_expr->expr_type = EXPR_FUNCTION; ++ init_expr->value.function.isym = ++ gfc_intrinsic_function_by_id (GFC_ISYM_REPEAT); ++ init_expr->value.function.name = "repeat"; ++ arg = gfc_get_actual_arglist (); ++ arg->expr = gfc_get_character_expr (sym->ts.kind, &sym->declared_at, ++ NULL, 1); ++ arg->expr->value.character.string[0] ++ = gfc_option.flag_init_character_value; ++ arg->next = gfc_get_actual_arglist (); ++ arg->next->expr = gfc_copy_expr (sym->ts.u.cl->length); ++ init_expr->value.function.actual = arg; ++ } + break; + + default: +@@ -9837,10 +9861,12 @@ + if (init == NULL) + return; + +- /* For saved variables, we don't want to add an initializer at +- function entry, so we just add a static initializer. */ ++ /* For saved variables, we don't want to add an initializer at function ++ entry, so we just add a static initializer. Note that automatic variables ++ are stack allocated even with -fno-automatic. */ + if (sym->attr.save || sym->ns->save_all +- || gfc_option.flag_max_stack_var_size == 0) ++ || (gfc_option.flag_max_stack_var_size == 0 ++ && (!sym->attr.dimension || !is_non_constant_shape_array (sym)))) + { + /* Don't clobber an existing initializer! */ + gcc_assert (sym->value == NULL); +@@ -11394,6 +11420,14 @@ for (c = sym->components; c != NULL; c = c->next) { @@ -4090,10 +6420,50 @@ Index: gcc/fortran/resolve.c /* F2008, C442. */ if (c->attr.codimension /* FIXME: c->as check due to PR 43412. */ && (!c->attr.allocatable || (c->as && c->as->type != AS_DEFERRED))) +@@ -12925,24 +12959,25 @@ + int + gfc_implicit_pure (gfc_symbol *sym) + { +- symbol_attribute attr; ++ gfc_namespace *ns; + + if (sym == NULL) + { +- /* Check if the current namespace is implicit_pure. */ +- sym = gfc_current_ns->proc_name; +- if (sym == NULL) +- return 0; +- attr = sym->attr; +- if (attr.flavor == FL_PROCEDURE +- && attr.implicit_pure && !attr.pure) +- return 1; +- return 0; ++ /* Check if the current procedure is implicit_pure. Walk up ++ the procedure list until we find a procedure. */ ++ for (ns = gfc_current_ns; ns; ns = ns->parent) ++ { ++ sym = ns->proc_name; ++ if (sym == NULL) ++ return 0; ++ ++ if (sym->attr.flavor == FL_PROCEDURE) ++ break; ++ } + } +- +- attr = sym->attr; +- +- return attr.flavor == FL_PROCEDURE && attr.implicit_pure && !attr.pure; ++ ++ return sym->attr.flavor == FL_PROCEDURE && sym->attr.implicit_pure ++ && !sym->attr.pure; + } + + Index: gcc/fortran/trans-decl.c =================================================================== ---- gcc/fortran/trans-decl.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/fortran/trans-decl.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/fortran/trans-decl.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/fortran/trans-decl.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -677,7 +677,7 @@ } else if (s->backend_decl) @@ -4162,9 +6532,9 @@ Index: gcc/fortran/trans-decl.c gfc_add_expr_to_block (&body, gfc_generate_return ()); Index: gcc/fortran/check.c =================================================================== ---- gcc/fortran/check.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/fortran/check.c (.../branches/gcc-4_6-branch) (wersja 182722) -@@ -485,10 +485,31 @@ +--- gcc/fortran/check.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/fortran/check.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -485,23 +485,47 @@ && (gfc_current_intrinsic_arg[n]->intent == INTENT_OUT || gfc_current_intrinsic_arg[n]->intent == INTENT_INOUT)) { @@ -4200,10 +6570,33 @@ Index: gcc/fortran/check.c } if (e->expr_type == EXPR_VARIABLE + && e->symtree->n.sym->attr.flavor != FL_PARAMETER +- && (allow_proc +- || !e->symtree->n.sym->attr.function +- || (e->symtree->n.sym == e->symtree->n.sym->result +- && (e->symtree->n.sym == gfc_current_ns->proc_name +- || (gfc_current_ns->parent +- && e->symtree->n.sym +- == gfc_current_ns->parent->proc_name))))) ++ && (allow_proc || !e->symtree->n.sym->attr.function)) + return SUCCESS; + ++ if (e->expr_type == EXPR_VARIABLE && e->symtree->n.sym->attr.function ++ && e->symtree->n.sym == e->symtree->n.sym->result) ++ { ++ gfc_namespace *ns; ++ for (ns = gfc_current_ns; ns; ns = ns->parent) ++ if (ns->proc_name == e->symtree->n.sym) ++ return SUCCESS; ++ } ++ + gfc_error ("'%s' argument of '%s' intrinsic at %L must be a variable", + gfc_current_intrinsic_arg[n]->name, gfc_current_intrinsic, &e->where); + Index: gcc/fortran/dependency.c =================================================================== ---- gcc/fortran/dependency.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/fortran/dependency.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/fortran/dependency.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/fortran/dependency.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -163,9 +163,19 @@ break; @@ -4228,8 +6621,8 @@ Index: gcc/fortran/dependency.c default: Index: gcc/regmove.c =================================================================== ---- gcc/regmove.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/regmove.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/regmove.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/regmove.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -860,7 +860,7 @@ if (REG_N_CALLS_CROSSED (REGNO (src)) == 0) break; @@ -4241,8 +6634,8 @@ Index: gcc/regmove.c } Index: gcc/configure.ac =================================================================== ---- gcc/configure.ac (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/configure.ac (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/configure.ac (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/configure.ac (.../branches/gcc-4_6-branch) (wersja 183790) @@ -807,17 +807,7 @@ gcc_AC_PROG_LN_S ACX_PROG_LN($LN_S) @@ -4264,15 +6657,15 @@ Index: gcc/configure.ac gcc_AC_PROG_INSTALL Index: gcc/BASE-VER =================================================================== ---- gcc/BASE-VER (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/BASE-VER (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/BASE-VER (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/BASE-VER (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1 +1 @@ -4.6.2 +4.6.3 Index: gcc/df.h =================================================================== ---- gcc/df.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/df.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/df.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/df.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -53,7 +53,7 @@ #define DF_RD 3 /* Reaching Defs. */ #define DF_CHAIN 4 /* Def-Use and/or Use-Def Chains. */ @@ -4281,11 +6674,156 @@ Index: gcc/df.h +#define DF_NOTE 6 /* REG_DEAD and REG_UNUSED notes. */ #define DF_MD 7 /* Multiple Definitions. */ - #define DF_LAST_PROBLEM_PLUS1 (DF_MD + 1) + #define DF_LAST_PROBLEM_PLUS1 (DF_MD + 1) +Index: gcc/ipa-split.c +=================================================================== +--- gcc/ipa-split.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/ipa-split.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -130,6 +130,10 @@ + + struct split_point best_split_point; + ++/* Set of basic blocks that are not allowed to dominate a split point. */ ++ ++static bitmap forbidden_dominators; ++ + static tree find_retval (basic_block return_bb); + + /* Callback for walk_stmt_load_store_addr_ops. If T is non-SSA automatic +@@ -270,6 +274,83 @@ + return ok; + } + ++/* If STMT is a call, check the callee against a list of forbidden ++ predicate functions. If a match is found, look for uses of the ++ call result in condition statements that compare against zero. ++ For each such use, find the block targeted by the condition ++ statement for the nonzero result, and set the bit for this block ++ in the forbidden dominators bitmap. The purpose of this is to avoid ++ selecting a split point where we are likely to lose the chance ++ to optimize away an unused function call. */ ++ ++static void ++check_forbidden_calls (gimple stmt) ++{ ++ imm_use_iterator use_iter; ++ use_operand_p use_p; ++ tree lhs; ++ ++ /* At the moment, __builtin_constant_p is the only forbidden ++ predicate function call (see PR49642). */ ++ if (!gimple_call_builtin_p (stmt, BUILT_IN_CONSTANT_P)) ++ return; ++ ++ lhs = gimple_call_lhs (stmt); ++ ++ if (!lhs || TREE_CODE (lhs) != SSA_NAME) ++ return; ++ ++ FOR_EACH_IMM_USE_FAST (use_p, use_iter, lhs) ++ { ++ tree op1; ++ basic_block use_bb, forbidden_bb; ++ enum tree_code code; ++ edge true_edge, false_edge; ++ gimple use_stmt = USE_STMT (use_p); ++ ++ if (gimple_code (use_stmt) != GIMPLE_COND) ++ continue; ++ ++ /* Assuming canonical form for GIMPLE_COND here, with constant ++ in second position. */ ++ op1 = gimple_cond_rhs (use_stmt); ++ code = gimple_cond_code (use_stmt); ++ use_bb = gimple_bb (use_stmt); ++ ++ extract_true_false_edges_from_block (use_bb, &true_edge, &false_edge); ++ ++ /* We're only interested in comparisons that distinguish ++ unambiguously from zero. */ ++ if (!integer_zerop (op1) || code == LE_EXPR || code == GE_EXPR) ++ continue; ++ ++ if (code == EQ_EXPR) ++ forbidden_bb = false_edge->dest; ++ else ++ forbidden_bb = true_edge->dest; ++ ++ bitmap_set_bit (forbidden_dominators, forbidden_bb->index); ++ } ++} ++ ++/* If BB is dominated by any block in the forbidden dominators set, ++ return TRUE; else FALSE. */ ++ ++static bool ++dominated_by_forbidden (basic_block bb) ++{ ++ unsigned dom_bb; ++ bitmap_iterator bi; ++ ++ EXECUTE_IF_SET_IN_BITMAP (forbidden_dominators, 1, dom_bb, bi) ++ { ++ if (dominated_by_p (CDI_DOMINATORS, bb, BASIC_BLOCK (dom_bb))) ++ return true; ++ } ++ ++ return false; ++} ++ + /* We found an split_point CURRENT. NON_SSA_VARS is bitmap of all non ssa + variables used and RETURN_BB is return basic block. + See if we can split function here. */ +@@ -411,6 +492,18 @@ + " Refused: split part has non-ssa uses\n"); + return; + } ++ ++ /* If the split point is dominated by a forbidden block, reject ++ the split. */ ++ if (!bitmap_empty_p (forbidden_dominators) ++ && dominated_by_forbidden (current->entry_bb)) ++ { ++ if (dump_file && (dump_flags & TDF_DETAILS)) ++ fprintf (dump_file, ++ " Refused: split point dominated by forbidden block\n"); ++ return; ++ } ++ + /* See if retval used by return bb is computed by header or split part. + When it is computed by split part, we need to produce return statement + in the split part and add code to header to pass it around. +@@ -1329,6 +1422,10 @@ + return 0; + } + ++ /* Initialize bitmap to track forbidden calls. */ ++ forbidden_dominators = BITMAP_ALLOC (NULL); ++ calculate_dominance_info (CDI_DOMINATORS); ++ + /* Compute local info about basic blocks and determine function size/time. */ + VEC_safe_grow_cleared (bb_info, heap, bb_info_vec, last_basic_block + 1); + memset (&best_split_point, 0, sizeof (best_split_point)); +@@ -1350,6 +1447,7 @@ + this_time = estimate_num_insns (stmt, &eni_time_weights) * freq; + size += this_size; + time += this_time; ++ check_forbidden_calls (stmt); + + if (dump_file && (dump_flags & TDF_DETAILS)) + { +@@ -1371,6 +1469,7 @@ + BITMAP_FREE (best_split_point.split_bbs); + todo = TODO_update_ssa | TODO_cleanup_cfg; + } ++ BITMAP_FREE (forbidden_dominators); + VEC_free (bb_info, heap, bb_info_vec); + bb_info_vec = NULL; + return todo; Index: gcc/lto-section-in.c =================================================================== ---- gcc/lto-section-in.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/lto-section-in.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/lto-section-in.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/lto-section-in.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -296,7 +296,7 @@ = (const struct lto_simple_header *) data; @@ -4297,8 +6835,8 @@ Index: gcc/lto-section-in.c return NULL; Index: gcc/tree-vect-data-refs.c =================================================================== ---- gcc/tree-vect-data-refs.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/tree-vect-data-refs.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/tree-vect-data-refs.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/tree-vect-data-refs.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -2631,6 +2631,16 @@ return false; } @@ -4318,8 +6856,8 @@ Index: gcc/tree-vect-data-refs.c /* If the dataref is in an inner-loop of the loop that is considered for Index: gcc/c-typeck.c =================================================================== ---- gcc/c-typeck.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/c-typeck.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/c-typeck.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/c-typeck.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -3802,11 +3802,7 @@ if (val && TREE_CODE (val) == INDIRECT_REF && TREE_CONSTANT (TREE_OPERAND (val, 0))) @@ -4335,8 +6873,8 @@ Index: gcc/c-typeck.c Index: gcc/calls.c =================================================================== ---- gcc/calls.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/calls.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/calls.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/calls.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1548,6 +1548,131 @@ return funexp; } @@ -4507,10 +7045,234 @@ Index: gcc/calls.c } else { +Index: gcc/loop-doloop.c +=================================================================== +--- gcc/loop-doloop.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/loop-doloop.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -334,14 +334,11 @@ + describes the loop, DESC describes the number of iterations of the + loop, and DOLOOP_INSN is the low-overhead looping insn to emit at the + end of the loop. CONDITION is the condition separated from the +- DOLOOP_SEQ. COUNT is the number of iterations of the LOOP. +- ZERO_EXTEND_P says to zero extend COUNT after the increment of it to +- word_mode from FROM_MODE. */ ++ DOLOOP_SEQ. COUNT is the number of iterations of the LOOP. */ + + static void + doloop_modify (struct loop *loop, struct niter_desc *desc, +- rtx doloop_seq, rtx condition, rtx count, +- bool zero_extend_p, enum machine_mode from_mode) ++ rtx doloop_seq, rtx condition, rtx count) + { + rtx counter_reg; + rtx tmp, noloop = NULL_RTX; +@@ -415,12 +412,8 @@ + } + + if (increment_count) +- count = simplify_gen_binary (PLUS, from_mode, count, const1_rtx); ++ count = simplify_gen_binary (PLUS, mode, count, const1_rtx); + +- if (zero_extend_p) +- count = simplify_gen_unary (ZERO_EXTEND, word_mode, +- count, from_mode); +- + /* Insert initialization of the count register into the loop header. */ + start_sequence (); + tmp = force_operand (count, counter_reg); +@@ -555,7 +548,6 @@ + struct niter_desc *desc; + unsigned word_mode_size; + unsigned HOST_WIDE_INT word_mode_max; +- bool zero_extend_p = false; + + if (dump_file) + fprintf (dump_file, "Doloop: Processing loop %d.\n", loop->num); +@@ -630,7 +622,8 @@ + { + if (word_mode_size > GET_MODE_BITSIZE (mode)) + { +- zero_extend_p = true; ++ count = simplify_gen_unary (ZERO_EXTEND, word_mode, ++ count, mode); + iterations = simplify_gen_unary (ZERO_EXTEND, word_mode, + iterations, mode); + iterations_max = simplify_gen_unary (ZERO_EXTEND, word_mode, +@@ -674,8 +667,7 @@ + return false; + } + +- doloop_modify (loop, desc, doloop_seq, condition, count, +- zero_extend_p, mode); ++ doloop_modify (loop, desc, doloop_seq, condition, count); + return true; + } + +Index: gcc/tree-ssa-pre.c +=================================================================== +--- gcc/tree-ssa-pre.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/tree-ssa-pre.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1545,7 +1545,7 @@ + tree newvuse = vuse; + VEC (vn_reference_op_s, heap) *newoperands = NULL; + bool changed = false, same_valid = true; +- unsigned int i, j; ++ unsigned int i, j, n; + vn_reference_op_t operand; + vn_reference_t newref; + +@@ -1554,100 +1554,83 @@ + { + pre_expr opresult; + pre_expr leader; +- tree oldop0 = operand->op0; +- tree oldop1 = operand->op1; +- tree oldop2 = operand->op2; +- tree op0 = oldop0; +- tree op1 = oldop1; +- tree op2 = oldop2; ++ tree op[3]; + tree type = operand->type; + vn_reference_op_s newop = *operand; +- +- if (op0 && TREE_CODE (op0) == SSA_NAME) ++ op[0] = operand->op0; ++ op[1] = operand->op1; ++ op[2] = operand->op2; ++ for (n = 0; n < 3; ++n) + { +- unsigned int op_val_id = VN_INFO (op0)->value_id; +- leader = find_leader_in_sets (op_val_id, set1, set2); +- opresult = phi_translate (leader, set1, set2, pred, phiblock); +- if (opresult && opresult != leader) ++ unsigned int op_val_id; ++ if (!op[n]) ++ continue; ++ if (TREE_CODE (op[n]) != SSA_NAME) + { +- tree name = get_representative_for (opresult); +- if (!name) ++ /* We can't possibly insert these. */ ++ if (n != 0 ++ && !is_gimple_min_invariant (op[n])) + break; +- op0 = name; ++ continue; + } +- else if (!opresult) ++ op_val_id = VN_INFO (op[n])->value_id; ++ leader = find_leader_in_sets (op_val_id, set1, set2); ++ if (!leader) + break; +- } +- changed |= op0 != oldop0; +- +- if (op1 && TREE_CODE (op1) == SSA_NAME) +- { +- unsigned int op_val_id = VN_INFO (op1)->value_id; +- leader = find_leader_in_sets (op_val_id, set1, set2); +- opresult = phi_translate (leader, set1, set2, pred, phiblock); +- if (opresult && opresult != leader) ++ /* Make sure we do not recursively translate ourselves ++ like for translating a[n_1] with the leader for ++ n_1 being a[n_1]. */ ++ if (get_expression_id (leader) != get_expression_id (expr)) + { +- tree name = get_representative_for (opresult); +- if (!name) ++ opresult = phi_translate (leader, set1, set2, ++ pred, phiblock); ++ if (!opresult) + break; +- op1 = name; ++ if (opresult != leader) ++ { ++ tree name = get_representative_for (opresult); ++ if (!name) ++ break; ++ changed |= name != op[n]; ++ op[n] = name; ++ } + } +- else if (!opresult) +- break; + } +- /* We can't possibly insert these. */ +- else if (op1 && !is_gimple_min_invariant (op1)) +- break; +- changed |= op1 != oldop1; +- if (op2 && TREE_CODE (op2) == SSA_NAME) ++ if (n != 3) + { +- unsigned int op_val_id = VN_INFO (op2)->value_id; +- leader = find_leader_in_sets (op_val_id, set1, set2); +- opresult = phi_translate (leader, set1, set2, pred, phiblock); +- if (opresult && opresult != leader) +- { +- tree name = get_representative_for (opresult); +- if (!name) +- break; +- op2 = name; +- } +- else if (!opresult) +- break; ++ if (newoperands) ++ VEC_free (vn_reference_op_s, heap, newoperands); ++ return NULL; + } +- /* We can't possibly insert these. */ +- else if (op2 && !is_gimple_min_invariant (op2)) +- break; +- changed |= op2 != oldop2; +- + if (!newoperands) + newoperands = VEC_copy (vn_reference_op_s, heap, operands); + /* We may have changed from an SSA_NAME to a constant */ +- if (newop.opcode == SSA_NAME && TREE_CODE (op0) != SSA_NAME) +- newop.opcode = TREE_CODE (op0); ++ if (newop.opcode == SSA_NAME && TREE_CODE (op[0]) != SSA_NAME) ++ newop.opcode = TREE_CODE (op[0]); + newop.type = type; +- newop.op0 = op0; +- newop.op1 = op1; +- newop.op2 = op2; ++ newop.op0 = op[0]; ++ newop.op1 = op[1]; ++ newop.op2 = op[2]; + /* If it transforms a non-constant ARRAY_REF into a constant + one, adjust the constant offset. */ + if (newop.opcode == ARRAY_REF + && newop.off == -1 +- && TREE_CODE (op0) == INTEGER_CST +- && TREE_CODE (op1) == INTEGER_CST +- && TREE_CODE (op2) == INTEGER_CST) ++ && TREE_CODE (op[0]) == INTEGER_CST ++ && TREE_CODE (op[1]) == INTEGER_CST ++ && TREE_CODE (op[2]) == INTEGER_CST) + { +- double_int off = tree_to_double_int (op0); ++ double_int off = tree_to_double_int (op[0]); + off = double_int_add (off, + double_int_neg +- (tree_to_double_int (op1))); +- off = double_int_mul (off, tree_to_double_int (op2)); ++ (tree_to_double_int (op[1]))); ++ off = double_int_mul (off, tree_to_double_int (op[2])); + if (double_int_fits_in_shwi_p (off)) + newop.off = off.low; + } + VEC_replace (vn_reference_op_s, newoperands, j, &newop); + /* If it transforms from an SSA_NAME to an address, fold with + a preceding indirect reference. */ +- if (j > 0 && op0 && TREE_CODE (op0) == ADDR_EXPR ++ if (j > 0 && op[0] && TREE_CODE (op[0]) == ADDR_EXPR + && VEC_index (vn_reference_op_s, + newoperands, j - 1)->opcode == MEM_REF) + vn_reference_fold_indirect (&newoperands, &j); Index: gcc/cfgcleanup.c =================================================================== ---- gcc/cfgcleanup.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/cfgcleanup.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/cfgcleanup.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/cfgcleanup.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1969,7 +1969,14 @@ cond = get_condition (jump, &move_before, true, false); @@ -4545,8 +7307,8 @@ Index: gcc/cfgcleanup.c do Index: gcc/simplify-rtx.c =================================================================== ---- gcc/simplify-rtx.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/simplify-rtx.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/simplify-rtx.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/simplify-rtx.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -2777,7 +2777,7 @@ } } @@ -4582,9 +7344,9 @@ Index: gcc/simplify-rtx.c /* (ne:SI (zero_extract:SI FOO (const_int 1) BAR) (const_int 0))) is Index: gcc/tree-sra.c =================================================================== ---- gcc/tree-sra.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/tree-sra.c (.../branches/gcc-4_6-branch) (wersja 182722) -@@ -1020,26 +1020,28 @@ +--- gcc/tree-sra.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/tree-sra.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1020,31 +1020,52 @@ return false; } @@ -4624,33 +7386,51 @@ Index: gcc/tree-sra.c return true; return false; -@@ -1071,7 +1073,11 @@ + } + ++/* Return true if EXP is a memory reference less aligned than what the access ++ ACC would require. This is invoked only on strict-alignment targets. */ ++ ++static bool ++tree_non_aligned_mem_for_access_p (tree exp, struct access *acc) ++{ ++ unsigned int acc_align; ++ ++ /* The alignment of the access is that of its expression. However, it may ++ have been artificially increased, e.g. by a local alignment promotion, ++ so we cap it to the alignment of the type of the base, on the grounds ++ that valid sub-accesses cannot be more aligned than that. */ ++ acc_align = get_object_alignment (acc->expr, BIGGEST_ALIGNMENT); ++ if (acc->base && acc_align > TYPE_ALIGN (TREE_TYPE (acc->base))) ++ acc_align = TYPE_ALIGN (TREE_TYPE (acc->base)); ++ ++ return tree_non_aligned_mem_p (exp, acc_align); ++} ++ + /* Scan expressions occuring in STMT, create access structures for all accesses + to candidates for scalarization and remove those candidates which occur in + statements or expressions that prevent them from being split apart. Return +@@ -1071,7 +1092,8 @@ if (lacc) { lacc->grp_assignment_write = 1; - lacc->grp_unscalarizable_region |= tree_non_mode_aligned_mem_p (rhs); -+ if (STRICT_ALIGNMENT -+ && tree_non_aligned_mem_p (rhs, -+ get_object_alignment (lhs, -+ BIGGEST_ALIGNMENT))) ++ if (STRICT_ALIGNMENT && tree_non_aligned_mem_for_access_p (rhs, lacc)) + lacc->grp_unscalarizable_region = 1; } if (racc) -@@ -1080,7 +1086,11 @@ +@@ -1080,7 +1102,8 @@ if (should_scalarize_away_bitmap && !gimple_has_volatile_ops (stmt) && !is_gimple_reg_type (racc->type)) bitmap_set_bit (should_scalarize_away_bitmap, DECL_UID (racc->base)); - racc->grp_unscalarizable_region |= tree_non_mode_aligned_mem_p (lhs); -+ if (STRICT_ALIGNMENT -+ && tree_non_aligned_mem_p (lhs, -+ get_object_alignment (rhs, -+ BIGGEST_ALIGNMENT))) ++ if (STRICT_ALIGNMENT && tree_non_aligned_mem_for_access_p (lhs, racc)) + racc->grp_unscalarizable_region = 1; } if (lacc && racc -@@ -1435,29 +1445,61 @@ +@@ -1435,29 +1458,67 @@ return fold_build2_loc (loc, MEM_REF, exp_type, base, off); } @@ -4691,8 +7471,14 @@ Index: gcc/tree-sra.c + + do { + tree field = TREE_OPERAND (expr, 1); -+ offset -= int_bit_position (field); ++ HOST_WIDE_INT bit_pos = int_bit_position (field); + ++ /* We can be called with a model different from the one associated ++ with BASE so we need to avoid going up the chain too far. */ ++ if (offset - bit_pos < 0) ++ break; ++ ++ offset -= bit_pos; + VEC_safe_push (tree, stack, cr_stack, expr); + + expr = TREE_OPERAND (expr, 0); @@ -4725,7 +7511,7 @@ Index: gcc/tree-sra.c } /* Construct a memory reference consisting of component_refs and array_refs to -@@ -2594,6 +2636,10 @@ +@@ -2594,6 +2655,10 @@ rhs = get_access_replacement (racc); if (!useless_type_conversion_p (lacc->type, racc->type)) rhs = fold_build1_loc (loc, VIEW_CONVERT_EXPR, lacc->type, rhs); @@ -4736,7 +7522,7 @@ Index: gcc/tree-sra.c } else { -@@ -2609,6 +2655,9 @@ +@@ -2609,6 +2674,9 @@ else rhs = build_ref_for_model (loc, top_racc->base, offset, lacc, new_gsi, true); @@ -4746,7 +7532,7 @@ Index: gcc/tree-sra.c } stmt = gimple_build_assign (get_access_replacement (lacc), rhs); -@@ -3604,7 +3653,8 @@ +@@ -3604,7 +3672,8 @@ || gimple_code (access->stmt) == GIMPLE_ASM)) return true; @@ -4758,8 +7544,8 @@ Index: gcc/tree-sra.c return false; Index: gcc/lto/lto.c =================================================================== ---- gcc/lto/lto.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/lto/lto.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/lto/lto.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/lto/lto.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -198,7 +198,7 @@ uint32_t ix; tree decl; @@ -4827,8 +7613,8 @@ Index: gcc/lto/lto.c internal_error ("could not parse file offset"); Index: gcc/lto/lto.h =================================================================== ---- gcc/lto/lto.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/lto/lto.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/lto/lto.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/lto/lto.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -60,6 +60,4 @@ size_t len; }; @@ -4838,8 +7624,8 @@ Index: gcc/lto/lto.h #endif /* LTO_H */ Index: gcc/lto/ChangeLog =================================================================== ---- gcc/lto/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/lto/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/lto/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/lto/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,10 @@ +2011-12-13 Eric Botcazou + @@ -4853,8 +7639,8 @@ Index: gcc/lto/ChangeLog * GCC 4.6.2 released. Index: gcc/ipa-prop.c =================================================================== ---- gcc/ipa-prop.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/ipa-prop.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/ipa-prop.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/ipa-prop.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -2868,9 +2868,9 @@ { const struct lto_function_header *header = @@ -4870,8 +7656,8 @@ Index: gcc/ipa-prop.c unsigned int i; Index: gcc/po/ChangeLog =================================================================== ---- gcc/po/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/po/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/po/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/po/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,7 @@ +2011-10-30 Joseph Myers + @@ -4882,8 +7668,8 @@ Index: gcc/po/ChangeLog * GCC 4.6.2 released. Index: gcc/po/ja.po =================================================================== ---- gcc/po/ja.po (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/po/ja.po (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/po/ja.po (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/po/ja.po (.../branches/gcc-4_6-branch) (wersja 183790) @@ -20,7 +20,7 @@ "Project-Id-Version: gcc 4.6.1\n" "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" @@ -6471,8 +9257,8 @@ Index: gcc/po/ja.po #, gcc-internal-format Index: gcc/tree-ssa-forwprop.c =================================================================== ---- gcc/tree-ssa-forwprop.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/tree-ssa-forwprop.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/tree-ssa-forwprop.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/tree-ssa-forwprop.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -872,7 +872,7 @@ TREE_TYPE (gimple_assign_rhs1 (use_stmt)))) { @@ -6523,8 +9309,8 @@ Index: gcc/tree-ssa-forwprop.c tidy_after_forward_propagate_addr (use_stmt); Index: gcc/varasm.c =================================================================== ---- gcc/varasm.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/varasm.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/varasm.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/varasm.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -6751,11 +6751,14 @@ /* A non-decl is an entry in the constant pool. */ if (!DECL_P (exp)) @@ -6547,8 +9333,8 @@ Index: gcc/varasm.c else if (! TREE_PUBLIC (exp)) Index: gcc/sched-deps.c =================================================================== ---- gcc/sched-deps.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/sched-deps.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/sched-deps.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/sched-deps.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -2687,7 +2687,11 @@ else sched_analyze_2 (deps, XEXP (link, 0), insn); @@ -6564,8 +9350,8 @@ Index: gcc/sched-deps.c Index: gcc/tree-object-size.c =================================================================== ---- gcc/tree-object-size.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/tree-object-size.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/tree-object-size.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/tree-object-size.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -175,7 +175,7 @@ unsigned HOST_WIDE_INT sz; @@ -6577,8 +9363,8 @@ Index: gcc/tree-object-size.c object_size_type & ~1); Index: gcc/tree-outof-ssa.c =================================================================== ---- gcc/tree-outof-ssa.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/tree-outof-ssa.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/tree-outof-ssa.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/tree-outof-ssa.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -237,9 +237,10 @@ var = SSA_NAME_VAR (partition_to_var (SA.map, dest)); @@ -6592,10 +9378,61 @@ Index: gcc/tree-outof-ssa.c if (src_mode != dest_mode) { +Index: gcc/tree-ssa-structalias.c +=================================================================== +--- gcc/tree-ssa-structalias.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/tree-ssa-structalias.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -308,6 +308,7 @@ + static varinfo_t first_or_preceding_vi_for_offset (varinfo_t, + unsigned HOST_WIDE_INT); + static varinfo_t lookup_vi_for_tree (tree); ++static inline bool type_can_have_subvars (const_tree); + + /* Pool of variable info structures. */ + static alloc_pool variable_info_pool; +@@ -3353,7 +3354,8 @@ + return; + + cs = *VEC_last (ce_s, *results); +- if (cs.type == DEREF) ++ if (cs.type == DEREF ++ && type_can_have_subvars (TREE_TYPE (t))) + { + /* For dereferences this means we have to defer it + to solving time. */ +@@ -4981,6 +4983,15 @@ + VEC_qsort (fieldoff_s, fieldstack, fieldoff_compare); + } + ++/* Return true if T is a type that can have subvars. */ ++ ++static inline bool ++type_can_have_subvars (const_tree t) ++{ ++ /* Aggregates without overlapping fields can have subvars. */ ++ return TREE_CODE (t) == RECORD_TYPE; ++} ++ + /* Return true if V is a tree that we can have subvars for. + Normally, this is any aggregate type. Also complex + types which are not gimple registers can have subvars. */ +@@ -4996,11 +5007,7 @@ + if (!DECL_P (v)) + return false; + +- /* Aggregates without overlapping fields can have subvars. */ +- if (TREE_CODE (TREE_TYPE (v)) == RECORD_TYPE) +- return true; +- +- return false; ++ return type_can_have_subvars (TREE_TYPE (v)); + } + + /* Return true if T is a type that does contain pointers. */ Index: gcc/lto-opts.c =================================================================== ---- gcc/lto-opts.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/lto-opts.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/lto-opts.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/lto-opts.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -358,7 +358,7 @@ size_t len, l, skip; const char *data, *p; @@ -6620,8 +9457,8 @@ Index: gcc/lto-opts.c p += skip; Index: gcc/c-parser.c =================================================================== ---- gcc/c-parser.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/c-parser.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/c-parser.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/c-parser.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -6294,7 +6294,7 @@ c_parser_error (parser, "expected identifier"); c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, @@ -6633,8 +9470,8 @@ Index: gcc/c-parser.c case RID_CHOOSE_EXPR: Index: gcc/config/alpha/linux-unwind.h =================================================================== ---- gcc/config/alpha/linux-unwind.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/alpha/linux-unwind.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/alpha/linux-unwind.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/alpha/linux-unwind.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,5 +1,5 @@ /* DWARF2 EH unwinding support for Alpha Linux. - Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. @@ -6708,10 +9545,22 @@ Index: gcc/config/alpha/linux-unwind.h + || pc[1] == 0x201f015f)) /* lda $0,NR_rt_sigreturn */ + _Unwind_SetSignalFrame (context, 1); +} +Index: gcc/config/s390/s390.md +=================================================================== +--- gcc/config/s390/s390.md (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/s390/s390.md (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -7644,6 +7644,7 @@ + sra\t%0,%1,%Y2" + [(set_attr "op_type" "RS,RSY") + (set_attr "atype" "reg,reg") ++ (set_attr "cpu_facility" "*,z196") + (set_attr "z10prop" "z10_super_E1,*")]) + + Index: gcc/config/sparc/sparc.md =================================================================== ---- gcc/config/sparc/sparc.md (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/sparc/sparc.md (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/sparc/sparc.md (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/sparc/sparc.md (.../branches/gcc-4_6-branch) (wersja 183790) @@ -28,6 +28,7 @@ [(UNSPEC_MOVE_PIC 0) (UNSPEC_UPDATE_RETURN 1) @@ -6891,8 +9740,8 @@ Index: gcc/config/sparc/sparc.md "" Index: gcc/config/sparc/sparc.c =================================================================== ---- gcc/config/sparc/sparc.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/sparc/sparc.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/sparc/sparc.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/sparc/sparc.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -4569,8 +4569,9 @@ else if (actual_fsize <= 8192) { @@ -6925,8 +9774,8 @@ Index: gcc/config/sparc/sparc.c { Index: gcc/config/sparc/sparc.h =================================================================== ---- gcc/config/sparc/sparc.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/sparc/sparc.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/sparc/sparc.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/sparc/sparc.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -408,6 +408,7 @@ %{mcpu=sparclite:-Asparclite} \ %{mcpu=sparclite86x:-Asparclite} \ @@ -6935,10 +9784,218 @@ Index: gcc/config/sparc/sparc.h %{mv8plus:-Av8plus} \ %{mcpu=v9:-Av9} \ %{mcpu=ultrasparc:%{!mv8plus:-Av9a}} \ +Index: gcc/config/sparc/sol2-unwind.h +=================================================================== +--- gcc/config/sparc/sol2-unwind.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/sparc/sol2-unwind.h (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1,5 +1,5 @@ + /* DWARF2 EH unwinding support for SPARC Solaris. +- Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc. ++ Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + + This file is part of GCC. + +@@ -34,7 +34,7 @@ + #define IS_SIGHANDLER sparc64_is_sighandler + + static int +-sparc64_is_sighandler (unsigned int *pc, unsigned int *savpc, int *nframes) ++sparc64_is_sighandler (unsigned int *pc, void *cfa, int *nframes) + { + if (/* Solaris 8 - single-threaded + ---------------------------- +@@ -110,38 +110,58 @@ + && pc[ 0] == 0x81c7e008 + && pc[ 1] == 0x81e80000) + { +- if (/* Solaris 8 /usr/lib/sparcv9/libthread.so.1 +- ------------------------------------------ +- Before patch 108827-08: +- : st %g4, [ %i1 + 0x1c ] ++ /* We have observed different calling frames among different ++ versions of the operating system, so that we need to ++ discriminate using the upper frame. We look for the return ++ address of the caller frame (there is an offset of 15 double ++ words between the frame address and the place where this return ++ address is stored) in order to do some more pattern matching. */ ++ unsigned int cuh_pattern ++ = *(unsigned int *)(*(unsigned long *)(cfa + 15*8) - 4); + +- Since patch 108827-08: +- : st %l0, [ %i4 + 0x10 ] */ +- savpc[-1] == 0xc826601c +- || savpc[-1] == 0xe0272010) ++ if (cuh_pattern == 0xd25fa7ef) + { +- /* We need to move up three frames: ++ /* This matches the call_user_handler pattern for Solaris 10. ++ There are 2 cases so we look for the return address of the ++ caller's caller frame in order to do more pattern matching. */ ++ unsigned long sah_address = *(unsigned long *)(cfa + 176 + 15*8); + ++ if (sah_address && *(unsigned int *)(sah_address - 4) == 0x92100019) ++ /* This is the same setup as for Solaris 9, see below. */ ++ *nframes = 3; ++ else ++ /* The sigacthandler frame isn't present in the chain. ++ We need to move up two frames: ++ + <-- context->cfa + __sighndlr +- sigacthandler ++ call_user_handler frame + +- */ +- *nframes = 2; ++ */ ++ *nframes = 2; + } +- else /* Solaris 8 /usr/lib/lwp/sparcv9/libthread.so.1, Solaris 9+ +- ---------------------------------------------------------- */ +- { +- /* We need to move up three frames: ++ else if (cuh_pattern == 0x9410001a || cuh_pattern == 0x94100013) ++ /* This matches the call_user_handler pattern for Solaris 9 and ++ for Solaris 8 running inside Solaris Containers respectively ++ We need to move up three frames: + + <-- context->cfa + __sighndlr + call_user_handler + sigacthandler + +- */ +- *nframes = 3; +- } ++ */ ++ *nframes = 3; ++ else ++ /* This is the default Solaris 8 case. ++ We need to move up two frames: ++ ++ <-- context->cfa ++ __sighndlr ++ sigacthandler ++ ++ */ ++ *nframes = 2; + return 1; + } + +@@ -172,7 +192,7 @@ + #define IS_SIGHANDLER sparc_is_sighandler + + static int +-sparc_is_sighandler (unsigned int *pc, unsigned int * savpc, int *nframes) ++sparc_is_sighandler (unsigned int *pc, void *cfa, int *nframes) + { + if (/* Solaris 8, 9 - single-threaded + ------------------------------- +@@ -200,7 +220,7 @@ + && pc[-1] == 0x9410001a + && pc[ 0] == 0x80a62008) + { +- /* Need to move up one frame: ++ /* We need to move up one frame: + + <-- context->cfa + sigacthandler +@@ -231,7 +251,7 @@ + && pc[ 1] == 0x81e80000 + && pc[ 2] == 0x80a26000) + { +- /* Need to move up one frame: ++ /* We need to move up one frame: + + <-- context->cfa + __libthread_segvhdlr +@@ -258,33 +278,58 @@ + && pc[ 0] == 0x81c7e008 + && pc[ 1] == 0x81e80000) + { +- if (/* Solaris 8 /usr/lib/libthread.so.1 +- ---------------------------------- +- : mov %i0, %o0 */ +- savpc[-1] == 0x90100018) ++ /* We have observed different calling frames among different ++ versions of the operating system, so that we need to ++ discriminate using the upper frame. We look for the return ++ address of the caller frame (there is an offset of 15 words ++ between the frame address and the place where this return ++ address is stored) in order to do some more pattern matching. */ ++ unsigned int cuh_pattern ++ = *(unsigned int *)(*(unsigned int *)(cfa + 15*4) - 4); ++ ++ if (cuh_pattern == 0xd407a04c) + { +- /* We need to move up two frames: ++ /* This matches the call_user_handler pattern for Solaris 10. ++ There are 2 cases so we look for the return address of the ++ caller's caller frame in order to do more pattern matching. */ ++ unsigned int sah_address = *(unsigned int *)(cfa + 96 + 15*4); + ++ if (sah_address && *(unsigned int *)(sah_address - 4) == 0x92100019) ++ /* This is the same setup as for Solaris 9, see below. */ ++ *nframes = 3; ++ else ++ /* The sigacthandler frame isn't present in the chain. ++ We need to move up two frames: ++ + <-- context->cfa + __sighndlr +- sigacthandler ++ call_user_handler frame + +- */ +- *nframes = 2; ++ */ ++ *nframes = 2; + } +- else /* Solaris 8 /usr/lib/lwp/libthread.so.1, Solaris 9+ +- -------------------------------------------------- */ +- { +- /* We need to move up three frames: ++ else if (cuh_pattern == 0x9410001a || cuh_pattern == 0x9410001b) ++ /* This matches the call_user_handler pattern for Solaris 9 and ++ for Solaris 8 running inside Solaris Containers respectively. ++ We need to move up three frames: + + <-- context->cfa + __sighndlr + call_user_handler + sigacthandler + +- */ +- *nframes = 3; +- } ++ */ ++ *nframes = 3; ++ else ++ /* This is the default Solaris 8 case. ++ We need to move up two frames: ++ ++ <-- context->cfa ++ __sighndlr ++ sigacthandler ++ ++ */ ++ *nframes = 2; + return 1; + } + +@@ -322,7 +367,7 @@ + return _URC_NO_REASON; + } + +- if (IS_SIGHANDLER (pc, (unsigned int *)fp->fr_savpc, &nframes)) ++ if (IS_SIGHANDLER (pc, this_cfa, &nframes)) + { + struct handler_args { + struct frame frwin; Index: gcc/config/i386/i386.md =================================================================== ---- gcc/config/i386/i386.md (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/i386/i386.md (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/i386/i386.md (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/i386/i386.md (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1960,7 +1960,7 @@ (define_insn "*movdi_internal_rex64" @@ -6957,6 +10014,15 @@ Index: gcc/config/i386/i386.md (match_operand:DF 1 "general_operand" "fm,f,G,rm,r,F ,F ,C ,Y2*x,m ,Y2*x,r ,Yi"))] "TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1])) +@@ -3647,7 +3647,7 @@ + (match_operand:SI 1 "nonimmediate_operand" "rm,0,r ,m ,r ,m")))] + "TARGET_64BIT" + "@ +- mov\t{%k1, %k0|%k0, %k1} ++ mov{l}\t{%1, %k0|%k0, %1} + # + movd\t{%1, %0|%0, %1} + movd\t{%1, %0|%0, %1} @@ -5103,7 +5103,7 @@ && reload_completed && (SSE_REG_P (operands[0]) @@ -7038,6 +10104,15 @@ Index: gcc/config/i386/i386.md [(set (match_dup 0) (float:MODEF (match_dup 1)))]) (define_insn "*float2_i387_with_temp" +@@ -9222,7 +9222,7 @@ + (match_dup 0))) + (set (match_dup 1) + (if_then_else:SWI48 (ne (reg:CCZ FLAGS_REG) (const_int 0)) +- (match_operand:SWI48 3 "register_operand" "r") ++ (match_operand:SWI48 3 "register_operand" "") + (match_dup 1)))] + "TARGET_CMOVE" + "operands[4] = GEN_INT (GET_MODE_BITSIZE (mode));") @@ -14625,7 +14625,7 @@ emit_insn (gen_sse4_1_round2 (operands[0], operands[1], GEN_INT (0x04))); @@ -7135,8 +10210,8 @@ Index: gcc/config/i386/i386.md [(unspec_volatile [(match_operand:SWI48 0 "register_operand" "r") Index: gcc/config/i386/sse.md =================================================================== ---- gcc/config/i386/sse.md (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/i386/sse.md (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/i386/sse.md (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/i386/sse.md (.../branches/gcc-4_6-branch) (wersja 183790) @@ -4521,15 +4521,14 @@ [(set (match_operand:V4DF 0 "register_operand" "=x,x") (vec_select:V4DF @@ -7160,8 +10235,8 @@ Index: gcc/config/i386/sse.md (set_attr "mode" "V4DF")]) Index: gcc/config/i386/freebsd.h =================================================================== ---- gcc/config/i386/freebsd.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/i386/freebsd.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/i386/freebsd.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/i386/freebsd.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -147,3 +147,6 @@ #if FBSD_MAJOR >= 6 #define SUBTARGET32_DEFAULT_CPU "i486" @@ -7169,10 +10244,23 @@ Index: gcc/config/i386/freebsd.h + +#define TARGET_ASM_FILE_END file_end_indicate_exec_stack + +Index: gcc/config/i386/driver-i386.c +=================================================================== +--- gcc/config/i386/driver-i386.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/i386/driver-i386.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -507,7 +507,7 @@ + processor = PROCESSOR_AMDFAM10; + else if (has_sse2 || has_longmode) + processor = PROCESSOR_K8; +- else if (has_3dnowp) ++ else if (has_3dnowp && family == 6) + processor = PROCESSOR_ATHLON; + else if (has_mmx) + processor = PROCESSOR_K6; Index: gcc/config/i386/avxintrin.h =================================================================== ---- gcc/config/i386/avxintrin.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/i386/avxintrin.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/i386/avxintrin.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/i386/avxintrin.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -759,7 +759,7 @@ #ifdef __x86_64__ @@ -7184,8 +10272,8 @@ Index: gcc/config/i386/avxintrin.h __Y = _mm_insert_epi64 (__Y, __D, __N % 2); Index: gcc/config/i386/i386.c =================================================================== ---- gcc/config/i386/i386.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/i386/i386.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/i386/i386.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/i386/i386.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -16329,7 +16329,6 @@ basic_block bb = BLOCK_FOR_INSN (insn); int distance = 0; @@ -7218,8 +10306,8 @@ Index: gcc/config/i386/i386.c } Index: gcc/config/avr/libgcc.S =================================================================== ---- gcc/config/avr/libgcc.S (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/avr/libgcc.S (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/avr/libgcc.S (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/avr/libgcc.S (.../branches/gcc-4_6-branch) (wersja 183790) @@ -582,7 +582,16 @@ push r17 push r28 @@ -7271,8 +10359,8 @@ Index: gcc/config/avr/libgcc.S #endif /* defined (L_epilogue) */ Index: gcc/config/avr/avr.md =================================================================== ---- gcc/config/avr/avr.md (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/avr/avr.md (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/avr/avr.md (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/avr/avr.md (.../branches/gcc-4_6-branch) (wersja 183790) @@ -299,7 +299,7 @@ [(set (match_operand:HI 0 "stack_register_operand" "=q") (unspec_volatile:HI [(match_operand:HI 1 "register_operand" "r")] @@ -7293,8 +10381,8 @@ Index: gcc/config/avr/avr.md sei Index: gcc/config/avr/avr-devices.c =================================================================== ---- gcc/config/avr/avr-devices.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/avr/avr-devices.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/avr/avr-devices.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/avr/avr-devices.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -70,7 +70,7 @@ { "attiny2313a", ARCH_AVR25, "__AVR_ATtiny2313A__", 1, 0x0060, "tn2313a" }, { "attiny24", ARCH_AVR25, "__AVR_ATtiny24__", 1, 0x0060, "tn24" }, @@ -7315,8 +10403,8 @@ Index: gcc/config/avr/avr-devices.c { "at43usb355", ARCH_AVR3, "__AVR_AT43USB355__", 0, 0x0060, "43355" }, Index: gcc/config/avr/avr.c =================================================================== ---- gcc/config/avr/avr.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/avr/avr.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/avr/avr.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/avr/avr.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1879,9 +1879,12 @@ } else if (test_hard_reg_class (STACK_REG, src)) @@ -7333,7 +10421,15 @@ Index: gcc/config/avr/avr.c } if (AVR_HAVE_MOVW) -@@ -5173,10 +5176,10 @@ +@@ -5151,6 +5154,7 @@ + if (new_decl_p + && decl && DECL_P (decl) + && NULL_TREE == DECL_INITIAL (decl) ++ && !DECL_EXTERNAL (decl) + && avr_progmem_p (decl, DECL_ATTRIBUTES (decl))) + { + warning (OPT_Wuninitialized, +@@ -5173,10 +5177,10 @@ default_file_start (); @@ -7350,8 +10446,8 @@ Index: gcc/config/avr/avr.c "__zero_reg__ = 1\n", asm_out_file); Index: gcc/config/rs6000/rs6000.c =================================================================== ---- gcc/config/rs6000/rs6000.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/rs6000/rs6000.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/rs6000/rs6000.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/rs6000/rs6000.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -2612,6 +2612,7 @@ off. */ rs6000_altivec_abi = 1; @@ -7626,10 +10722,34 @@ Index: gcc/config/rs6000/rs6000.c } par = rs6000_make_savres_rtx (info, frame_reg_rtx, +@@ -27763,7 +27760,7 @@ + if (strcmp (r, rs6000_opt_vars[i].name) == 0) + { + size_t j = rs6000_opt_vars[i].global_offset; +- ((int *) &global_options)[j] = !invert; ++ *((int *) ((char *)&global_options + j)) = !invert; + error_p = false; + break; + } +Index: gcc/config/rs6000/rs6000.md +=================================================================== +--- gcc/config/rs6000/rs6000.md (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/rs6000/rs6000.md (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -12241,8 +12241,8 @@ + " + { + operands[3] = gen_reg_rtx (SImode); +- operands[4] = gen_rtx_MEM (DImode, +- gen_rtx_PLUS (DImode, stack_pointer_rtx, ++ operands[4] = gen_rtx_MEM (SImode, ++ gen_rtx_PLUS (SImode, stack_pointer_rtx, + GEN_INT (20))); + + operands[5] = gen_rtx_MEM (SImode, Index: gcc/config/darwin.c =================================================================== ---- gcc/config/darwin.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/darwin.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/darwin.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/darwin.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1753,19 +1753,51 @@ return (!strncmp ((const char *)p, "_OBJC_", 6)); } @@ -7858,11 +10978,35 @@ Index: gcc/config/darwin.c /* If we have section anchors, then we must prevent the linker from re-arranging data. */ +Index: gcc/config/arm/thumb2.md +=================================================================== +--- gcc/config/arm/thumb2.md (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/arm/thumb2.md (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -257,7 +257,7 @@ + (not:SI (match_operator:SI 1 "arm_comparison_operator" + [(match_operand 2 "cc_register" "") (const_int 0)])))] + "TARGET_THUMB2" +- "ite\\t%D1\;mov%D1\\t%0, #0\;mvn%d1\\t%0, #1" ++ "ite\\t%D1\;mvn%D1\\t%0, #0\;mvn%d1\\t%0, #1" + [(set_attr "conds" "use") + (set_attr "length" "10")] + ) Index: gcc/config/arm/arm.c =================================================================== ---- gcc/config/arm/arm.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/arm/arm.c (.../branches/gcc-4_6-branch) (wersja 182722) -@@ -5077,6 +5077,14 @@ +--- gcc/config/arm/arm.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/arm/arm.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -3570,6 +3570,10 @@ + add_libcall (libcall_htab, + convert_optab_libfunc (trunc_optab, HFmode, SFmode)); + add_libcall (libcall_htab, ++ convert_optab_libfunc (sfix_optab, SImode, DFmode)); ++ add_libcall (libcall_htab, ++ convert_optab_libfunc (ufix_optab, SImode, DFmode)); ++ add_libcall (libcall_htab, + convert_optab_libfunc (sfix_optab, DImode, DFmode)); + add_libcall (libcall_htab, + convert_optab_libfunc (ufix_optab, DImode, DFmode)); +@@ -5077,6 +5081,14 @@ if (IS_STACKALIGN (func_type)) return false; @@ -7877,7 +11021,90 @@ Index: gcc/config/arm/arm.c /* Everything else is ok. */ return true; } -@@ -9812,6 +9820,9 @@ +@@ -5379,11 +5391,7 @@ + + if (TARGET_32BIT) + { +- emit_insn (gen_pic_load_addr_32bit (pic_reg, pic_rtx)); +- if (TARGET_ARM) +- emit_insn (gen_pic_add_dot_plus_eight (pic_reg, pic_reg, labelno)); +- else +- emit_insn (gen_pic_add_dot_plus_four (pic_reg, pic_reg, labelno)); ++ emit_insn (gen_pic_load_addr_unified (pic_reg, pic_rtx, labelno)); + } + else /* TARGET_THUMB1 */ + { +@@ -5396,10 +5404,10 @@ + thumb_find_work_register (saved_regs)); + emit_insn (gen_pic_load_addr_thumb1 (pic_tmp, pic_rtx)); + emit_insn (gen_movsi (pic_offset_table_rtx, pic_tmp)); ++ emit_insn (gen_pic_add_dot_plus_four (pic_reg, pic_reg, labelno)); + } + else +- emit_insn (gen_pic_load_addr_thumb1 (pic_reg, pic_rtx)); +- emit_insn (gen_pic_add_dot_plus_four (pic_reg, pic_reg, labelno)); ++ emit_insn (gen_pic_load_addr_unified (pic_reg, pic_rtx, labelno)); + } + } + +@@ -5429,20 +5437,7 @@ + UNSPEC_SYMBOL_OFFSET); + offset_rtx = gen_rtx_CONST (Pmode, offset_rtx); + +- if (TARGET_32BIT) +- { +- emit_insn (gen_pic_load_addr_32bit (reg, offset_rtx)); +- if (TARGET_ARM) +- insn = emit_insn (gen_pic_add_dot_plus_eight (reg, reg, labelno)); +- else +- insn = emit_insn (gen_pic_add_dot_plus_four (reg, reg, labelno)); +- } +- else /* TARGET_THUMB1 */ +- { +- emit_insn (gen_pic_load_addr_thumb1 (reg, offset_rtx)); +- insn = emit_insn (gen_pic_add_dot_plus_four (reg, reg, labelno)); +- } +- ++ insn = emit_insn (gen_pic_load_addr_unified (reg, offset_rtx, labelno)); + return insn; + } + +@@ -5485,7 +5480,7 @@ + will_be_in_index_register (const_rtx x) + { + /* arm.md: calculate_pic_address will split this into a register. */ +- return GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_PIC_SYM; ++ return GET_CODE (x) == UNSPEC && (XINT (x, 1) == UNSPEC_PIC_SYM); + } + + /* Return nonzero if X is a valid ARM state address operand. */ +@@ -7233,6 +7228,15 @@ + *total = COSTS_N_INSNS (4); + return true; + ++ case UNSPEC: ++ /* We cost this as high as our memory costs to allow this to ++ be hoisted from loops. */ ++ if (XINT (x, 1) == UNSPEC_PIC_UNIFIED) ++ { ++ *total = COSTS_N_INSNS (2 + ARM_NUM_REGS (mode)); ++ } ++ return true; ++ + default: + *total = COSTS_N_INSNS (4); + return false; +@@ -9426,7 +9430,8 @@ + arm_note_pic_base (rtx *x, void *date ATTRIBUTE_UNUSED) + { + if (GET_CODE (*x) == UNSPEC +- && XINT (*x, 1) == UNSPEC_PIC_BASE) ++ && (XINT (*x, 1) == UNSPEC_PIC_BASE ++ || XINT (*x, 1) == UNSPEC_PIC_UNIFIED)) + return 1; + return 0; + } +@@ -9812,6 +9817,9 @@ rtx base_reg_rtx = NULL; int i, stm_case; @@ -7887,7 +11114,7 @@ Index: gcc/config/arm/arm.c /* Can only handle up to MAX_LDM_STM_OPS insns at present, though could be easily extended if required. */ gcc_assert (nops >= 2 && nops <= MAX_LDM_STM_OPS); -@@ -9869,7 +9880,9 @@ +@@ -9869,7 +9877,9 @@ /* If it isn't an integer register, then we can't do this. */ if (unsorted_regs[i] < 0 || (TARGET_THUMB1 && unsorted_regs[i] > LAST_LO_REGNUM) @@ -7898,7 +11125,7 @@ Index: gcc/config/arm/arm.c || (TARGET_THUMB2 && unsorted_regs[i] == SP_REGNUM) || unsorted_regs[i] > 14) return 0; -@@ -19571,39 +19584,34 @@ +@@ -19571,39 +19581,34 @@ emit_move_insn (mem, tmp2); } @@ -7958,11 +11185,28 @@ Index: gcc/config/arm/arm.c } /* Expand an expression EXP that calls a built-in function, +@@ -20859,6 +20864,8 @@ + gcc_assert (amount >= 0); + if (amount) + { ++ emit_insn (gen_blockage ()); ++ + if (amount < 512) + emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, + GEN_INT (amount))); Index: gcc/config/arm/arm.md =================================================================== ---- gcc/config/arm/arm.md (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/arm/arm.md (.../branches/gcc-4_6-branch) (wersja 182722) -@@ -3272,7 +3272,7 @@ +--- gcc/config/arm/arm.md (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/arm/arm.md (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -104,6 +104,7 @@ + (UNSPEC_SYMBOL_OFFSET 27) ; The offset of the start of the symbol from + ; another symbolic address. + (UNSPEC_MEMORY_BARRIER 28) ; Represent a memory barrier. ++ (UNSPEC_PIC_UNIFIED 29) ; Create a common pic addressing form. + ] + ) + +@@ -3272,7 +3273,7 @@ bool need_else; if (which_alternative != 0 || operands[3] != const0_rtx @@ -7971,10 +11215,50 @@ Index: gcc/config/arm/arm.md need_else = true; else need_else = false; +@@ -5257,6 +5258,30 @@ + "operands[3] = can_create_pseudo_p () ? gen_reg_rtx (SImode) : operands[0];" + ) + ++;; operand1 is the memory address to go into ++;; pic_load_addr_32bit. ++;; operand2 is the PIC label to be emitted ++;; from pic_add_dot_plus_eight. ++;; We do this to allow hoisting of the entire insn. ++(define_insn_and_split "pic_load_addr_unified" ++ [(set (match_operand:SI 0 "s_register_operand" "=r,r,l") ++ (unspec:SI [(match_operand:SI 1 "" "mX,mX,mX") ++ (match_operand:SI 2 "" "")] ++ UNSPEC_PIC_UNIFIED))] ++ "flag_pic" ++ "#" ++ "&& reload_completed" ++ [(set (match_dup 0) (unspec:SI [(match_dup 1)] UNSPEC_PIC_SYM)) ++ (set (match_dup 0) (unspec:SI [(match_dup 0) (match_dup 3) ++ (match_dup 2)] UNSPEC_PIC_BASE))] ++ "operands[3] = TARGET_THUMB ? GEN_INT (4) : GEN_INT (8);" ++ [(set_attr "type" "load1,load1,load1") ++ (set_attr "pool_range" "4096,4096,1024") ++ (set_attr "neg_pool_range" "4084,0,0") ++ (set_attr "arch" "a,t2,t1") ++ (set_attr "length" "8,6,4")] ++) ++ + ;; The rather odd constraints on the following are to force reload to leave + ;; the insn alone, and to force the minipool generation pass to then move + ;; the GOT symbol to memory. +@@ -7346,7 +7371,7 @@ + (not:SI (match_operator:SI 1 "arm_comparison_operator" + [(match_operand 2 "cc_register" "") (const_int 0)])))] + "TARGET_ARM" +- "mov%D1\\t%0, #0\;mvn%d1\\t%0, #1" ++ "mvn%D1\\t%0, #0\;mvn%d1\\t%0, #1" + [(set_attr "conds" "use") + (set_attr "insn" "mov") + (set_attr "length" "8")] Index: gcc/config/pa/pa.c =================================================================== ---- gcc/config/pa/pa.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/pa/pa.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/pa/pa.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/pa/pa.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1863,6 +1863,11 @@ /* Handle the most common case: storing into a register. */ else if (register_operand (operand0, mode)) @@ -7989,8 +11273,8 @@ Index: gcc/config/pa/pa.c && cint_ok_for_move (INTVAL (operand1))) Index: gcc/config/pa/pa.h =================================================================== ---- gcc/config/pa/pa.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/config/pa/pa.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/config/pa/pa.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/pa/pa.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -848,6 +848,9 @@ && (NEW_HP_ASSEMBLER \ || TARGET_GAS \ @@ -8001,10 +11285,41 @@ Index: gcc/config/pa/pa.h && (!TARGET_64BIT \ || GET_CODE (X) != CONST_DOUBLE) \ && (!TARGET_64BIT \ +Index: gcc/config/mips/mips.md +=================================================================== +--- gcc/config/mips/mips.md (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/config/mips/mips.md (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -4707,7 +4707,7 @@ + ;; of _gp from the start of this function. Operand 1 is the incoming + ;; function address. + (define_insn_and_split "loadgp_newabi_" +- [(set (match_operand:P 0 "register_operand" "=d") ++ [(set (match_operand:P 0 "register_operand" "=&d") + (unspec:P [(match_operand:P 1) + (match_operand:P 2 "register_operand" "d")] + UNSPEC_LOADGP))] +Index: gcc/cfgrtl.c +=================================================================== +--- gcc/cfgrtl.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/cfgrtl.c (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1642,9 +1642,10 @@ + putc ('\n', outf); + } + +- for (insn = BB_HEAD (bb), last = NEXT_INSN (BB_END (bb)); insn != last; +- insn = NEXT_INSN (insn)) +- print_rtl_single (outf, insn); ++ if (bb->index != ENTRY_BLOCK && bb->index != EXIT_BLOCK) ++ for (insn = BB_HEAD (bb), last = NEXT_INSN (BB_END (bb)); insn != last; ++ insn = NEXT_INSN (insn)) ++ print_rtl_single (outf, insn); + + if (df) + { Index: gcc/reload1.c =================================================================== ---- gcc/reload1.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ gcc/reload1.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- gcc/reload1.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ gcc/reload1.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -3899,6 +3899,10 @@ if (XEXP (x, 0)) set_label_offsets (XEXP (x, 0), NULL_RTX, 1); @@ -8018,8 +11333,8 @@ Index: gcc/reload1.c Index: zlib/configure =================================================================== ---- zlib/configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ zlib/configure (.../branches/gcc-4_6-branch) (wersja 182722) +--- zlib/configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ zlib/configure (.../branches/gcc-4_6-branch) (wersja 183790) @@ -8600,7 +8600,7 @@ ;; @@ -8049,8 +11364,8 @@ Index: zlib/configure freebsd3.[01]* | freebsdelf3.[01]*) Index: zlib/ChangeLog =================================================================== ---- zlib/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ zlib/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- zlib/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ zlib/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,7 @@ +2011-11-20 Andreas Tobler + @@ -8061,8 +11376,8 @@ Index: zlib/ChangeLog * GCC 4.6.2 released. Index: libstdc++-v3/configure =================================================================== ---- libstdc++-v3/configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/configure (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/configure (.../branches/gcc-4_6-branch) (wersja 183790) @@ -9698,7 +9698,7 @@ ;; @@ -8119,8 +11434,8 @@ Index: libstdc++-v3/configure freebsd3.[01]* | freebsdelf3.[01]*) Index: libstdc++-v3/include/debug/unordered_map =================================================================== ---- libstdc++-v3/include/debug/unordered_map (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/debug/unordered_map (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/debug/unordered_map (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/debug/unordered_map (.../branches/gcc-4_6-branch) (wersja 183790) @@ -276,6 +276,10 @@ } @@ -8145,8 +11460,8 @@ Index: libstdc++-v3/include/debug/unordered_map __glibcxx_check_erase_range(__first, __last); Index: libstdc++-v3/include/debug/unordered_set =================================================================== ---- libstdc++-v3/include/debug/unordered_set (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/debug/unordered_set (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/debug/unordered_set (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/debug/unordered_set (.../branches/gcc-4_6-branch) (wersja 183790) @@ -269,6 +269,10 @@ } @@ -8171,8 +11486,8 @@ Index: libstdc++-v3/include/debug/unordered_set __glibcxx_check_erase_range(__first, __last); Index: libstdc++-v3/include/debug/map.h =================================================================== ---- libstdc++-v3/include/debug/map.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/debug/map.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/debug/map.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/debug/map.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -273,6 +273,10 @@ this->_M_invalidate_if(_Equal(__position.base())); return iterator(_Base::erase(__position.base()), this); @@ -8186,8 +11501,8 @@ Index: libstdc++-v3/include/debug/map.h erase(iterator __position) Index: libstdc++-v3/include/debug/multimap.h =================================================================== ---- libstdc++-v3/include/debug/multimap.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/debug/multimap.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/debug/multimap.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/debug/multimap.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -254,6 +254,10 @@ this->_M_invalidate_if(_Equal(__position.base())); return iterator(_Base::erase(__position.base()), this); @@ -8201,8 +11516,8 @@ Index: libstdc++-v3/include/debug/multimap.h erase(iterator __position) Index: libstdc++-v3/include/std/condition_variable =================================================================== ---- libstdc++-v3/include/std/condition_variable (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/std/condition_variable (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/std/condition_variable (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/std/condition_variable (.../branches/gcc-4_6-branch) (wersja 183790) @@ -198,10 +198,25 @@ void wait(_Lock& __lock) @@ -8235,8 +11550,8 @@ Index: libstdc++-v3/include/std/condition_variable Index: libstdc++-v3/include/std/complex =================================================================== ---- libstdc++-v3/include/std/complex (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/std/complex (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/std/complex (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/std/complex (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,7 +1,7 @@ // The template and inlines for the -*- C++ -*- complex number classes. @@ -8264,8 +11579,8 @@ Index: libstdc++-v3/include/std/complex #if _GLIBCXX_USE_C99_COMPLEX_TR1 Index: libstdc++-v3/include/ext/type_traits.h =================================================================== ---- libstdc++-v3/include/ext/type_traits.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/ext/type_traits.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/ext/type_traits.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/ext/type_traits.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,6 +1,7 @@ // -*- C++ -*- @@ -8353,8 +11668,8 @@ Index: libstdc++-v3/include/ext/type_traits.h _GLIBCXX_END_NAMESPACE_VERSION Index: libstdc++-v3/include/profile/map.h =================================================================== ---- libstdc++-v3/include/profile/map.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/profile/map.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/profile/map.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/profile/map.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -326,6 +326,10 @@ __profcxx_map_to_unordered_map_erase(this, size(), 1); return __i; @@ -8368,8 +11683,8 @@ Index: libstdc++-v3/include/profile/map.h erase(iterator __position) Index: libstdc++-v3/include/profile/multimap.h =================================================================== ---- libstdc++-v3/include/profile/multimap.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/profile/multimap.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/profile/multimap.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/profile/multimap.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -225,6 +225,10 @@ iterator erase(const_iterator __position) @@ -8383,8 +11698,8 @@ Index: libstdc++-v3/include/profile/multimap.h erase(iterator __position) Index: libstdc++-v3/include/bits/hashtable.h =================================================================== ---- libstdc++-v3/include/bits/hashtable.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/bits/hashtable.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/bits/hashtable.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/bits/hashtable.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -440,6 +440,11 @@ iterator erase(const_iterator); @@ -8397,10 +11712,32 @@ Index: libstdc++-v3/include/bits/hashtable.h size_type erase(const key_type&); +Index: libstdc++-v3/include/bits/shared_ptr.h +=================================================================== +--- libstdc++-v3/include/bits/shared_ptr.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/bits/shared_ptr.h (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -100,6 +100,8 @@ + constexpr shared_ptr() + : __shared_ptr<_Tp>() { } + ++ shared_ptr(const shared_ptr&) = default; // never throws ++ + /** + * @brief Construct a %shared_ptr that owns the pointer @a __p. + * @param __p A pointer that is convertible to element_type*. +@@ -264,6 +266,8 @@ + constexpr shared_ptr(nullptr_t __p) + : __shared_ptr<_Tp>(__p) { } + ++ shared_ptr& operator=(const shared_ptr&) = default; ++ + template + shared_ptr& + operator=(const shared_ptr<_Tp1>& __r) // never throws Index: libstdc++-v3/include/bits/stl_map.h =================================================================== ---- libstdc++-v3/include/bits/stl_map.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/bits/stl_map.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/bits/stl_map.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/bits/stl_map.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -612,6 +612,11 @@ iterator erase(const_iterator __position) @@ -8415,8 +11752,8 @@ Index: libstdc++-v3/include/bits/stl_map.h * @brief Erases an element from a %map. Index: libstdc++-v3/include/bits/stl_multimap.h =================================================================== ---- libstdc++-v3/include/bits/stl_multimap.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/bits/stl_multimap.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/bits/stl_multimap.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/bits/stl_multimap.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -533,6 +533,11 @@ iterator erase(const_iterator __position) @@ -8431,8 +11768,8 @@ Index: libstdc++-v3/include/bits/stl_multimap.h * @brief Erases an element from a %multimap. Index: libstdc++-v3/include/bits/stl_numeric.h =================================================================== ---- libstdc++-v3/include/bits/stl_numeric.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/bits/stl_numeric.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/bits/stl_numeric.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/bits/stl_numeric.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -222,10 +222,10 @@ /** * @brief Return list of partial sums @@ -8469,8 +11806,8 @@ Index: libstdc++-v3/include/bits/stl_numeric.h template::value>::type> +Index: libstdc++-v3/include/bits/regex.h +=================================================================== +--- libstdc++-v3/include/bits/regex.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/bits/regex.h (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -2219,7 +2219,7 @@ + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { +- std::string __result; ++ basic_string<_Ch_type> __result; + regex_replace(std::back_inserter(__result), + __s.begin(), __s.end(), __e, __fmt, __flags); + return __result; Index: libstdc++-v3/include/bits/stl_tree.h =================================================================== ---- libstdc++-v3/include/bits/stl_tree.h (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/bits/stl_tree.h (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/bits/stl_tree.h (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/bits/stl_tree.h (.../branches/gcc-4_6-branch) (wersja 183790) @@ -760,6 +760,16 @@ _M_erase_aux(__position); return __result._M_const_cast(); @@ -8544,8 +11908,8 @@ Index: libstdc++-v3/include/bits/stl_tree.h erase(iterator __position) Index: libstdc++-v3/include/c_global/cmath =================================================================== ---- libstdc++-v3/include/c_global/cmath (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/c_global/cmath (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/c_global/cmath (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/c_global/cmath (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,7 +1,7 @@ // -*- C++ -*- C forwarding header. @@ -8581,8 +11945,8 @@ Index: libstdc++-v3/include/c_global/cmath typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; Index: libstdc++-v3/include/tr1/complex =================================================================== ---- libstdc++-v3/include/tr1/complex (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/tr1/complex (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/tr1/complex (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/tr1/complex (.../branches/gcc-4_6-branch) (wersja 183790) @@ -185,12 +185,9 @@ std::complex<_Tp> __complex_acosh(const std::complex<_Tp>& __z) @@ -8601,8 +11965,8 @@ Index: libstdc++-v3/include/tr1/complex #if _GLIBCXX_USE_C99_COMPLEX_TR1 Index: libstdc++-v3/include/tr1/poly_hermite.tcc =================================================================== ---- libstdc++-v3/include/tr1/poly_hermite.tcc (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/include/tr1/poly_hermite.tcc (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/include/tr1/poly_hermite.tcc (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/include/tr1/poly_hermite.tcc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,6 +1,6 @@ // Special functions -*- C++ -*- @@ -8622,9 +11986,26 @@ Index: libstdc++-v3/include/tr1/poly_hermite.tcc } Index: libstdc++-v3/ChangeLog =================================================================== ---- libstdc++-v3/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) -@@ -1,3 +1,114 @@ +--- libstdc++-v3/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1,3 +1,131 @@ ++2012-01-03 Chase Douglas ++ Jonathan Wakely ++ ++ * include/bits/shared_ptr.h: Default copy ctor and assignment. ++ * include/bits/shared_ptr_base.h: Likewise. ++ * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error ++ line numbers. ++ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise. ++ ++2011-12-30 Paolo Carlini ++ ++ PR libstdc++/51711 ++ * include/bits/regex.h (regex_replace): Fix thinko. ++ * testsuite/28_regex/algorithms/regex_replace/char/51711.cc: New. ++ * testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc: ++ Likewise. ++ +2011-12-19 Jonathan Wakely + + PR libstdc++/51626 @@ -8739,10 +12120,82 @@ Index: libstdc++-v3/ChangeLog 2011-10-26 Release Manager * GCC 4.6.2 released. +Index: libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc +=================================================================== +--- libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc (.../tags/gcc_4_6_2_release) (wersja 0) ++++ libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,31 @@ ++// { dg-options "-std=gnu++0x" } ++// { dg-do compile } ++ ++// Copyright (C) 2011 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++// ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++// ++ ++#include ++#include ++ ++// libstdc++/51711 ++void test01() ++{ ++ std::wstring toProcess(L"Bug\r\n"); ++ std::wstring result __attribute__((unused)) ++ = std::regex_replace(toProcess, std::wregex(L"\\r"), std::wstring(L"\\r")); ++} +Index: libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc +=================================================================== +--- libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc (.../tags/gcc_4_6_2_release) (wersja 0) ++++ libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -0,0 +1,31 @@ ++// { dg-options "-std=gnu++0x" } ++// { dg-do compile } ++ ++// Copyright (C) 2011 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++// ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++// ++ ++#include ++#include ++ ++// libstdc++/51711 ++void test01() ++{ ++ std::string toProcess("Bug\r\n"); ++ std::string result __attribute__((unused)) ++ = std::regex_replace(toProcess, std::regex("\\r"), std::string("\\r")); ++} Index: libstdc++-v3/testsuite/26_numerics/complex/51083.cc =================================================================== --- libstdc++-v3/testsuite/26_numerics/complex/51083.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/26_numerics/complex/51083.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/26_numerics/complex/51083.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,54 @@ +// { dg-options "-std=gnu++0x" } +// @@ -8801,7 +12254,7 @@ Index: libstdc++-v3/testsuite/26_numerics/complex/51083.cc Index: libstdc++-v3/testsuite/26_numerics/complex/50880.cc =================================================================== --- libstdc++-v3/testsuite/26_numerics/complex/50880.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/26_numerics/complex/50880.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/26_numerics/complex/50880.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,53 @@ +// { dg-options "-std=gnu++0x" } +// @@ -8859,7 +12312,7 @@ Index: libstdc++-v3/testsuite/26_numerics/complex/50880.cc Index: libstdc++-v3/testsuite/26_numerics/cmath/51083.cc =================================================================== --- libstdc++-v3/testsuite/26_numerics/cmath/51083.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/26_numerics/cmath/51083.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/26_numerics/cmath/51083.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,62 @@ +// { dg-options "-std=gnu++0x" } +// @@ -8926,7 +12379,7 @@ Index: libstdc++-v3/testsuite/26_numerics/cmath/51083.cc Index: libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc =================================================================== --- libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,80 @@ +// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* alpha*-*-osf* mips-sgi-irix6* } } +// { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* alpha*-*-osf* mips-sgi-irix6* } } @@ -9010,8 +12463,8 @@ Index: libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc +} Index: libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc =================================================================== ---- libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -36,4 +36,4 @@ } @@ -9020,8 +12473,8 @@ Index: libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc +// { dg-error "declaration of" "" { target *-*-* } 107 } Index: libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc =================================================================== ---- libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -35,4 +35,4 @@ } @@ -9030,8 +12483,8 @@ Index: libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc +// { dg-error "no type" "" { target *-*-* } 70 } Index: libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc =================================================================== ---- libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -35,4 +35,4 @@ } @@ -9040,8 +12493,8 @@ Index: libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc +// { dg-error "no type" "" { target *-*-* } 113 } Index: libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc =================================================================== ---- libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc (.../branches/gcc-4_6-branch) (wersja 182722) +--- libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -36,4 +36,4 @@ } @@ -9051,7 +12504,7 @@ Index: libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc Index: libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc =================================================================== --- libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,54 @@ +// { dg-options "-std=gnu++0x" } +// @@ -9110,7 +12563,7 @@ Index: libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc Index: libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc =================================================================== --- libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,51 @@ +// Copyright (C) 2011 Free Software Foundation, Inc. +// @@ -9166,7 +12619,7 @@ Index: libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc Index: libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc =================================================================== --- libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,62 @@ +// { dg-options "-std=gnu++0x" } +// @@ -9233,7 +12686,7 @@ Index: libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc Index: libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc =================================================================== --- libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,38 @@ +// Copyright (C) 2011 Free Software Foundation, Inc. +// @@ -9276,7 +12729,7 @@ Index: libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc Index: libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc =================================================================== --- libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,38 @@ +// Copyright (C) 2011 Free Software Foundation, Inc. +// @@ -9319,7 +12772,7 @@ Index: libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc Index: libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc =================================================================== --- libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,38 @@ +// Copyright (C) 2011 Free Software Foundation, Inc. +// @@ -9362,7 +12815,7 @@ Index: libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc Index: libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc =================================================================== --- libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,38 @@ +// Copyright (C) 2011 Free Software Foundation, Inc. +// @@ -9405,7 +12858,7 @@ Index: libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc Index: libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc =================================================================== --- libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,38 @@ +// Copyright (C) 2011 Free Software Foundation, Inc. +// @@ -9448,7 +12901,7 @@ Index: libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc Index: libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc =================================================================== --- libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,38 @@ +// Copyright (C) 2011 Free Software Foundation, Inc. +// @@ -9491,7 +12944,7 @@ Index: libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc Index: libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc =================================================================== --- libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,38 @@ +// Copyright (C) 2011 Free Software Foundation, Inc. +// @@ -9534,7 +12987,7 @@ Index: libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc Index: libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc =================================================================== --- libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,38 @@ +// Copyright (C) 2011 Free Software Foundation, Inc. +// @@ -9574,10 +13027,22 @@ Index: libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc + if (it != s.end()) + s.erase(it); +} +Index: libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc +=================================================================== +--- libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -35,6 +35,6 @@ + // { dg-error "incomplete" "" { target *-*-* } 766 } + + std::shared_ptr p9(ap()); // { dg-error "here" } +- // { dg-error "incomplete" "" { target *-*-* } 858 } ++ // { dg-error "incomplete" "" { target *-*-* } 859 } + + } Index: libstdc++-v3/testsuite/20_util/allocator/51626.cc =================================================================== --- libstdc++-v3/testsuite/20_util/allocator/51626.cc (.../tags/gcc_4_6_2_release) (wersja 0) -+++ libstdc++-v3/testsuite/20_util/allocator/51626.cc (.../branches/gcc-4_6-branch) (wersja 182722) ++++ libstdc++-v3/testsuite/20_util/allocator/51626.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -0,0 +1,66 @@ +// Copyright (C) 2011 Free Software Foundation, Inc. +// @@ -9645,10 +13110,25 @@ Index: libstdc++-v3/testsuite/20_util/allocator/51626.cc + std::vector< int, allocator11 > v11(1); + VERIFY( count == 1 ); +} +Index: libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc +=================================================================== +--- libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -42,8 +42,8 @@ + return 0; + } + +-// { dg-warning "note" "" { target *-*-* } 354 } +-// { dg-warning "note" "" { target *-*-* } 1085 } ++// { dg-warning "note" "" { target *-*-* } 358 } ++// { dg-warning "note" "" { target *-*-* } 1086 } + // { dg-warning "note" "" { target *-*-* } 468 } + // { dg-warning "note" "" { target *-*-* } 586 } + // { dg-warning "note" "" { target *-*-* } 1049 } Index: configure.ac =================================================================== ---- configure.ac (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ configure.ac (.../branches/gcc-4_6-branch) (wersja 182722) +--- configure.ac (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ configure.ac (.../branches/gcc-4_6-branch) (wersja 183790) @@ -2428,10 +2428,6 @@ extra_arflags_for_target=" -X32_64" extra_nmflags_for_target=" -B -X32_64" @@ -9662,8 +13142,8 @@ Index: configure.ac ;; Index: libobjc/configure =================================================================== ---- libobjc/configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libobjc/configure (.../branches/gcc-4_6-branch) (wersja 182722) +--- libobjc/configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libobjc/configure (.../branches/gcc-4_6-branch) (wersja 183790) @@ -8797,7 +8797,7 @@ ;; @@ -9693,8 +13173,8 @@ Index: libobjc/configure freebsd3.[01]* | freebsdelf3.[01]*) Index: libobjc/ChangeLog =================================================================== ---- libobjc/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libobjc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- libobjc/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libobjc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,7 @@ +2011-11-20 Andreas Tobler + @@ -9705,8 +13185,8 @@ Index: libobjc/ChangeLog * GCC 4.6.2 released. Index: libgfortran/configure =================================================================== ---- libgfortran/configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libgfortran/configure (.../branches/gcc-4_6-branch) (wersja 182722) +--- libgfortran/configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libgfortran/configure (.../branches/gcc-4_6-branch) (wersja 183790) @@ -10326,7 +10326,7 @@ ;; @@ -9763,8 +13243,8 @@ Index: libgfortran/configure freebsd3.[01]* | freebsdelf3.[01]*) Index: libgfortran/ChangeLog =================================================================== ---- libgfortran/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libgfortran/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- libgfortran/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libgfortran/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,7 @@ +2011-11-20 Andreas Tobler + @@ -9773,10 +13253,22 @@ Index: libgfortran/ChangeLog 2011-10-26 Release Manager * GCC 4.6.2 released. +Index: Makefile.def +=================================================================== +--- Makefile.def (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ Makefile.def (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -353,6 +353,7 @@ + dependencies = { module=install-gcc ; on=install-fixincludes; }; + dependencies = { module=install-gcc ; on=install-lto-plugin; }; + dependencies = { module=install-strip-gcc ; on=install-strip-fixincludes; }; ++dependencies = { module=install-strip-gcc ; on=install-strip-lto-plugin; }; + + dependencies = { module=configure-libcpp; on=configure-libiberty; hard=true; }; + dependencies = { module=configure-libcpp; on=configure-intl; }; Index: libada/Makefile.in =================================================================== ---- libada/Makefile.in (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libada/Makefile.in (.../branches/gcc-4_6-branch) (wersja 182722) +--- libada/Makefile.in (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libada/Makefile.in (.../branches/gcc-4_6-branch) (wersja 183790) @@ -70,6 +70,7 @@ version := $(shell cat $(srcdir)/../gcc/BASE-VER) libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) @@ -9820,8 +13312,8 @@ Index: libada/Makefile.in $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) install-gnatlib Index: libada/ChangeLog =================================================================== ---- libada/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libada/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- libada/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libada/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,9 @@ +2011-11-13 Iain Sandoe + @@ -9834,8 +13326,8 @@ Index: libada/ChangeLog * GCC 4.6.2 released. Index: libmudflap/configure =================================================================== ---- libmudflap/configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libmudflap/configure (.../branches/gcc-4_6-branch) (wersja 182722) +--- libmudflap/configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libmudflap/configure (.../branches/gcc-4_6-branch) (wersja 183790) @@ -8818,7 +8818,7 @@ ;; @@ -9865,8 +13357,8 @@ Index: libmudflap/configure freebsd3.[01]* | freebsdelf3.[01]*) Index: libmudflap/ChangeLog =================================================================== ---- libmudflap/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libmudflap/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- libmudflap/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libmudflap/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,7 @@ +2011-11-20 Andreas Tobler + @@ -9877,8 +13369,8 @@ Index: libmudflap/ChangeLog * GCC 4.6.2 released. Index: boehm-gc/ChangeLog =================================================================== ---- boehm-gc/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ boehm-gc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- boehm-gc/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ boehm-gc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,7 @@ +2011-11-20 Andreas Tobler + @@ -9889,8 +13381,8 @@ Index: boehm-gc/ChangeLog * GCC 4.6.2 released. Index: boehm-gc/configure =================================================================== ---- boehm-gc/configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ boehm-gc/configure (.../branches/gcc-4_6-branch) (wersja 182722) +--- boehm-gc/configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ boehm-gc/configure (.../branches/gcc-4_6-branch) (wersja 183790) @@ -9604,7 +9604,7 @@ ;; @@ -9947,8 +13439,8 @@ Index: boehm-gc/configure freebsd3.[01]* | freebsdelf3.[01]*) Index: libiberty/ChangeLog =================================================================== ---- libiberty/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libiberty/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- libiberty/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libiberty/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,17 @@ +2011-11-13 Iain Sandoe + @@ -9969,8 +13461,8 @@ Index: libiberty/ChangeLog * GCC 4.6.2 released. Index: libiberty/simple-object-mach-o.c =================================================================== ---- libiberty/simple-object-mach-o.c (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libiberty/simple-object-mach-o.c (.../branches/gcc-4_6-branch) (wersja 182722) +--- libiberty/simple-object-mach-o.c (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libiberty/simple-object-mach-o.c (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,5 +1,5 @@ /* simple-object-mach-o.c -- routines to manipulate Mach-O object files. - Copyright 2010 Free Software Foundation, Inc. @@ -10718,9 +14210,15 @@ Index: libiberty/simple-object-mach-o.c Index: ChangeLog =================================================================== ---- ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) -@@ -1,3 +1,17 @@ +--- ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1,3 +1,23 @@ ++2012-01-02 Richard Guenther ++ ++ PR bootstrap/51686 ++ * Makefile.def (install-strip-gcc): Depend on install-strip-lto-plugin. ++ * Makefile.in: Regenerate. ++ +2011-12-18 Eric Botcazou + + * configure: Regenerate. @@ -10740,9 +14238,63 @@ Index: ChangeLog * GCC 4.6.2 released. Index: lto-plugin/configure =================================================================== ---- lto-plugin/configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ lto-plugin/configure (.../branches/gcc-4_6-branch) (wersja 182722) -@@ -8733,7 +8733,7 @@ +--- lto-plugin/configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ lto-plugin/configure (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -622,6 +622,7 @@ + GREP + SED + LIBTOOL ++ac_lto_plugin_warn_cflags + am__fastdepCC_FALSE + am__fastdepCC_TRUE + CCDEPMODE +@@ -4040,6 +4041,45 @@ + fi + fi + ++ac_lto_plugin_warn_cflags= ++save_CFLAGS="$CFLAGS" ++for option in -Wall; do ++ as_acx_Woption=`$as_echo "acx_cv_prog_cc_warning_$option" | $as_tr_sh` ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports $option" >&5 ++$as_echo_n "checking whether $CC supports $option... " >&6; } ++if { as_var=$as_acx_Woption; eval "test \"\${$as_var+set}\" = set"; }; then : ++ $as_echo_n "(cached) " >&6 ++else ++ CFLAGS="$option" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ eval "$as_acx_Woption=yes" ++else ++ eval "$as_acx_Woption=no" ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++fi ++eval ac_res=\$$as_acx_Woption ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++ if test `eval 'as_val=${'$as_acx_Woption'};$as_echo "$as_val"'` = yes; then : ++ ac_lto_plugin_warn_cflags="$ac_lto_plugin_warn_cflags${ac_lto_plugin_warn_cflags:+ }$option" ++fi ++ done ++CFLAGS="$save_CFLAGS" ++ + case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +@@ -8733,7 +8773,7 @@ ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. @@ -10751,7 +14303,7 @@ Index: lto-plugin/configure archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes -@@ -9646,7 +9646,7 @@ +@@ -9646,7 +9686,7 @@ objformat=`/usr/bin/objformat` else case $host_os in @@ -10760,7 +14312,7 @@ Index: lto-plugin/configure *) objformat=elf ;; esac fi -@@ -9664,7 +9664,7 @@ +@@ -9664,7 +9704,7 @@ esac shlibpath_var=LD_LIBRARY_PATH case $host_os in @@ -10769,11 +14321,83 @@ Index: lto-plugin/configure shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) +@@ -10498,7 +10538,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 10501 "configure" ++#line 10541 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -10604,7 +10644,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 10607 "configure" ++#line 10647 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +Index: lto-plugin/Makefile.in +=================================================================== +--- lto-plugin/Makefile.in (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ lto-plugin/Makefile.in (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -47,6 +47,7 @@ + $(top_srcdir)/../config/lead-dot.m4 \ + $(top_srcdir)/../config/lthostflags.m4 \ + $(top_srcdir)/../config/override.m4 \ ++ $(top_srcdir)/../config/warnings.m4 \ + $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ + $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ + $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/configure.ac +@@ -167,6 +168,7 @@ + abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ++ac_lto_plugin_warn_cflags = @ac_lto_plugin_warn_cflags@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ +@@ -227,7 +229,7 @@ + gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) + libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) + AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS) +-AM_CFLAGS = -Wall -Werror ++AM_CFLAGS = @ac_lto_plugin_warn_cflags@ + AM_LIBTOOLFLAGS = --tag=disable-static + libexecsub_LTLIBRARIES = liblto_plugin.la + gcc_build_dir = ../$(host_subdir)/gcc +Index: lto-plugin/configure.ac +=================================================================== +--- lto-plugin/configure.ac (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ lto-plugin/configure.ac (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -6,6 +6,7 @@ + AM_MAINTAINER_MODE + AC_PROG_CC + AC_SYS_LARGEFILE ++ACX_PROG_CC_WARNING_OPTS([-Wall], [ac_lto_plugin_warn_cflags]) + AM_PROG_LIBTOOL + ACX_LT_HOST_FLAGS + AC_SUBST(target_noncanonical) Index: lto-plugin/ChangeLog =================================================================== ---- lto-plugin/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ lto-plugin/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) -@@ -1,3 +1,7 @@ +--- lto-plugin/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ lto-plugin/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -1,3 +1,20 @@ ++2012-01-03 Richard Guenther ++ ++ Backport from mainline ++ 2011-08-10 Richard Guenther ++ ++ PR bootstrap/49907 ++ lto-plugin/ ++ * configure.ac: Use ACX_PROG_CC_WARNING_OPTS to detect -Wall presence. ++ * Makefile.am (AM_CFLAGS): Adjust. Do not build with -Werror. ++ * configure: Regenerate. ++ * Makefile.in: Likewise. ++ * aclocal.m4: Likewise. ++ +2011-11-20 Andreas Tobler + + * configure: Regenerate. @@ -10781,10 +14405,35 @@ Index: lto-plugin/ChangeLog 2011-10-26 Release Manager * GCC 4.6.2 released. +Index: lto-plugin/Makefile.am +=================================================================== +--- lto-plugin/Makefile.am (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ lto-plugin/Makefile.am (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -8,7 +8,7 @@ + libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) + + AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS) +-AM_CFLAGS = -Wall -Werror ++AM_CFLAGS = @ac_lto_plugin_warn_cflags@ + AM_LIBTOOLFLAGS = --tag=disable-static + + libexecsub_LTLIBRARIES = liblto_plugin.la +Index: lto-plugin/aclocal.m4 +=================================================================== +--- lto-plugin/aclocal.m4 (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ lto-plugin/aclocal.m4 (.../branches/gcc-4_6-branch) (wersja 183790) +@@ -973,6 +973,7 @@ + m4_include([../config/lead-dot.m4]) + m4_include([../config/lthostflags.m4]) + m4_include([../config/override.m4]) ++m4_include([../config/warnings.m4]) + m4_include([../libtool.m4]) + m4_include([../ltoptions.m4]) + m4_include([../ltsugar.m4]) Index: libffi/configure =================================================================== ---- libffi/configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libffi/configure (.../branches/gcc-4_6-branch) (wersja 182722) +--- libffi/configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libffi/configure (.../branches/gcc-4_6-branch) (wersja 183790) @@ -9001,7 +9001,7 @@ ;; @@ -10814,8 +14463,8 @@ Index: libffi/configure freebsd3.[01]* | freebsdelf3.[01]*) Index: libffi/ChangeLog =================================================================== ---- libffi/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libffi/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- libffi/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libffi/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,7 @@ +2011-11-20 Andreas Tobler + @@ -10826,8 +14475,8 @@ Index: libffi/ChangeLog * GCC 4.6.2 released. Index: libssp/configure =================================================================== ---- libssp/configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libssp/configure (.../branches/gcc-4_6-branch) (wersja 182722) +--- libssp/configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libssp/configure (.../branches/gcc-4_6-branch) (wersja 183790) @@ -8864,7 +8864,7 @@ ;; @@ -10857,8 +14506,8 @@ Index: libssp/configure freebsd3.[01]* | freebsdelf3.[01]*) Index: libssp/ChangeLog =================================================================== ---- libssp/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libssp/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- libssp/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libssp/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,7 @@ +2011-11-20 Andreas Tobler + @@ -10869,8 +14518,8 @@ Index: libssp/ChangeLog * GCC 4.6.2 released. Index: config/ChangeLog =================================================================== ---- config/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ config/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- config/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ config/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,7 @@ +2011-12-18 Eric Botcazou + @@ -10881,8 +14530,8 @@ Index: config/ChangeLog * GCC 4.6.2 released. Index: config/acx.m4 =================================================================== ---- config/acx.m4 (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ config/acx.m4 (.../branches/gcc-4_6-branch) (wersja 182722) +--- config/acx.m4 (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ config/acx.m4 (.../branches/gcc-4_6-branch) (wersja 183790) @@ -356,9 +356,9 @@ ac_c_preproc_warn_flag=yes])# AC_PROG_CPP_WERROR @@ -10907,8 +14556,8 @@ Index: config/acx.m4 have_gnat=no Index: libjava/libltdl/configure =================================================================== ---- libjava/libltdl/configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libjava/libltdl/configure (.../branches/gcc-4_6-branch) (wersja 182722) +--- libjava/libltdl/configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libjava/libltdl/configure (.../branches/gcc-4_6-branch) (wersja 183790) @@ -7355,7 +7355,7 @@ ;; @@ -10929,8 +14578,8 @@ Index: libjava/libltdl/configure freebsd3.[01]* | freebsdelf3.[01]*) Index: libjava/libltdl/ChangeLog =================================================================== ---- libjava/libltdl/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libjava/libltdl/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- libjava/libltdl/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libjava/libltdl/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,8 @@ +2011-11-20 Andreas Tobler + @@ -10942,8 +14591,8 @@ Index: libjava/libltdl/ChangeLog * GCC 4.6.2 released. Index: libjava/libltdl/acinclude.m4 =================================================================== ---- libjava/libltdl/acinclude.m4 (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libjava/libltdl/acinclude.m4 (.../branches/gcc-4_6-branch) (wersja 182722) +--- libjava/libltdl/acinclude.m4 (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libjava/libltdl/acinclude.m4 (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1377,7 +1377,7 @@ esac shlibpath_var=LD_LIBRARY_PATH @@ -10973,8 +14622,8 @@ Index: libjava/libltdl/acinclude.m4 _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes Index: libjava/configure.ac =================================================================== ---- libjava/configure.ac (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libjava/configure.ac (.../branches/gcc-4_6-branch) (wersja 182722) +--- libjava/configure.ac (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libjava/configure.ac (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1060,7 +1060,7 @@ *-*-cygwin*) # Don't set THREADLIBS here. Cygwin doesn't have -lpthread. @@ -10986,8 +14635,8 @@ Index: libjava/configure.ac # which is required at link-time to select -lc_r *instead* of -lc. Index: libjava/classpath/config.rpath =================================================================== ---- libjava/classpath/config.rpath (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libjava/classpath/config.rpath (.../branches/gcc-4_6-branch) (wersja 182722) +--- libjava/classpath/config.rpath (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libjava/classpath/config.rpath (.../branches/gcc-4_6-branch) (wersja 183790) @@ -361,7 +361,7 @@ hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes @@ -11008,8 +14657,8 @@ Index: libjava/classpath/config.rpath library_names_spec='$libname$shrext' ;; Index: libjava/classpath/configure =================================================================== ---- libjava/classpath/configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libjava/classpath/configure (.../branches/gcc-4_6-branch) (wersja 182722) +--- libjava/classpath/configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libjava/classpath/configure (.../branches/gcc-4_6-branch) (wersja 183790) @@ -10025,7 +10025,7 @@ ;; @@ -11066,8 +14715,8 @@ Index: libjava/classpath/configure freebsd3.[01]* | freebsdelf3.[01]*) Index: libjava/classpath/ChangeLog.gcj =================================================================== ---- libjava/classpath/ChangeLog.gcj (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libjava/classpath/ChangeLog.gcj (.../branches/gcc-4_6-branch) (wersja 182722) +--- libjava/classpath/ChangeLog.gcj (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libjava/classpath/ChangeLog.gcj (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,9 @@ +2011-11-29 Andreas Tobler + @@ -11080,8 +14729,8 @@ Index: libjava/classpath/ChangeLog.gcj * config.rpath, ltcf-c.sh, ltcf-gcj.sh, ltconfig: Remove Index: libjava/ChangeLog =================================================================== ---- libjava/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libjava/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- libjava/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libjava/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,16 @@ +2011-11-24 Jakub Jelinek + @@ -11101,8 +14750,8 @@ Index: libjava/ChangeLog * GCC 4.6.2 released. Index: libjava/prims.cc =================================================================== ---- libjava/prims.cc (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libjava/prims.cc (.../branches/gcc-4_6-branch) (wersja 182722) +--- libjava/prims.cc (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libjava/prims.cc (.../branches/gcc-4_6-branch) (wersja 183790) @@ -38,7 +38,6 @@ #endif @@ -11163,8 +14812,8 @@ Index: libjava/prims.cc { Index: libjava/configure =================================================================== ---- libjava/configure (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ libjava/configure (.../branches/gcc-4_6-branch) (wersja 182722) +--- libjava/configure (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ libjava/configure (.../branches/gcc-4_6-branch) (wersja 183790) @@ -11560,7 +11560,7 @@ ;; @@ -11239,8 +14888,8 @@ Index: libjava/configure # which is required at link-time to select -lc_r *instead* of -lc. Index: maintainer-scripts/ChangeLog =================================================================== ---- maintainer-scripts/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ maintainer-scripts/ChangeLog (.../branches/gcc-4_6-branch) (wersja 182722) +--- maintainer-scripts/ChangeLog (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ maintainer-scripts/ChangeLog (.../branches/gcc-4_6-branch) (wersja 183790) @@ -1,3 +1,8 @@ +2011-11-23 Gerald Pfeifer + @@ -11252,8 +14901,8 @@ Index: maintainer-scripts/ChangeLog * GCC 4.6.2 released. Index: maintainer-scripts/update_web_docs_svn =================================================================== ---- maintainer-scripts/update_web_docs_svn (.../tags/gcc_4_6_2_release) (wersja 182722) -+++ maintainer-scripts/update_web_docs_svn (.../branches/gcc-4_6-branch) (wersja 182722) +--- maintainer-scripts/update_web_docs_svn (.../tags/gcc_4_6_2_release) (wersja 183790) ++++ maintainer-scripts/update_web_docs_svn (.../branches/gcc-4_6-branch) (wersja 183790) @@ -93,6 +93,7 @@ if [ ! -d $DOCSDIR ]; then -- 2.44.0