packages: gcc/gcc-branch.diff - updated

arekm arekm at pld-linux.org
Wed Feb 1 07:20:45 CET 2012


Author: arekm                        Date: Wed Feb  1 06:20:45 2012 GMT
Module: packages                      Tag: HEAD
---- Log message:
- updated

---- Files affected:
packages/gcc:
   gcc-branch.diff (1.56 -> 1.57) 

---- Diffs:

================================================================
Index: packages/gcc/gcc-branch.diff
diff -u packages/gcc/gcc-branch.diff:1.56 packages/gcc/gcc-branch.diff:1.57
--- packages/gcc/gcc-branch.diff:1.56	Thu Dec 29 15:41:30 2011
+++ packages/gcc/gcc-branch.diff	Wed Feb  1 07:20:38 2012
@@ -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 @@
    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 @@
    # 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 @@
       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  <hongjiu.lu at intel.com>
 +
@@ -80,8 +92,8 @@
  	* 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 @@
          _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 @@
    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  <andreast at fgznet.ch>
 +
@@ -190,8 +202,8 @@
  	* 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 @@
    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  <andreast at fgznet.ch>
 +
@@ -231,10 +243,287 @@
  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
+- at file{bar.o}.  The final invocation will read the GIMPLE bytecode from
+- at file{foo.o} and @file{bar.o}, merge the two files into a single
+-internal image, and compile the result as usual.  Since both
++ at file{bar.o}.  The final invocation reads the GIMPLE bytecode from
++ at 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.
+ 
+- at smallexample
+-gcc -o myprog foo.o bar.o
+- at end smallexample
+-
+-The only difference will be that no inter-procedural optimizations
+-will be applied to produce @file{myprog}.  The two object files
+- at 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
+- at option{-O3}.  Now, if the final binary is generated without
+- at 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
++ at option{-O3}.  If, instead, the final binary is generated without
++ at 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
+- at 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  <ebotcazou at adacore.com>
 +
@@ -253,8 +542,8 @@
  	* 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 @@
  /* 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 @@
  
  /* 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  <schwab at linux-m68k.org>
++
++	* 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)
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/gcc/gcc-branch.diff?r1=1.56&r2=1.57&f=u



More information about the pld-cvs-commit mailing list