packages: gcc/gcc-branch.diff, gcc/gcc.spec - up to 4.5.2

arekm arekm at pld-linux.org
Sat Dec 18 22:02:00 CET 2010


Author: arekm                        Date: Sat Dec 18 21:02:00 2010 GMT
Module: packages                      Tag: HEAD
---- Log message:
- up to 4.5.2

---- Files affected:
packages/gcc:
   gcc-branch.diff (1.39 -> 1.40) , gcc.spec (1.643 -> 1.644) 

---- Diffs:

================================================================
Index: packages/gcc/gcc-branch.diff
diff -u packages/gcc/gcc-branch.diff:1.39 packages/gcc/gcc-branch.diff:1.40
--- packages/gcc/gcc-branch.diff:1.39	Tue Nov 16 09:53:09 2010
+++ packages/gcc/gcc-branch.diff	Sat Dec 18 22:01:45 2010
@@ -1,61729 +1,399 @@
-Index: configure
+Index: libgomp/configure.tgt
 ===================================================================
---- configure	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ configure	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -3097,7 +3097,7 @@
-     # Check for target supported by gold.
-     case "${target}" in
-       i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-*)
--        configdirs="`echo " ${configdirs} " | sed -e 's/ ld / gold /'`"
-+        configdirs=`echo " ${configdirs} " | sed -e 's/ ld / gold /'`
-         ;;
-     esac
-   fi
-@@ -5457,7 +5457,7 @@
- if test "x$with_gmp$with_gmp_include$with_gmp_lib" = x && test -d ${srcdir}/gmp; then
-   gmplibs='-L$$r/$(HOST_SUBDIR)/gmp/'"$lt_cv_objdir $gmplibs"
-   gmpinc='-I$$r/$(HOST_SUBDIR)/gmp -I$$s/gmp '"$gmpinc"
--  extra_mpfr_configure_flags='--with-gmp-build=$$r/$(HOST_SUBDIR)/gmp'
-+  extra_mpfr_configure_flags='--with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-gmp-lib=$$r/$(HOST_SUBDIR)/gmp/'"$lt_cv_objdir"
-   extra_mpc_gmp_configure_flags='--with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-gmp-lib=$$r/$(HOST_SUBDIR)/gmp/'"$lt_cv_objdir"
-   # Do not test the gmp version.  Assume that it is sufficient, since
-   # it is in the source tree, and the library has not been built yet
-Index: libgcc/config.host
-===================================================================
---- libgcc/config.host	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ libgcc/config.host	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -345,6 +345,8 @@
- 	tmake_file="ia64/t-ia64"
- 	;;
- ia64*-*-freebsd*)
-+	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
-+	tmake_file="ia64/t-ia64"
- 	;;
- ia64*-*-linux*)
- 	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
-Index: libgcc/ChangeLog
-===================================================================
---- libgcc/ChangeLog	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ libgcc/ChangeLog	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -1,3 +1,9 @@
-+2010-09-12  Gerald Pfeifer  <gerald at pfeifer.com>
-+	    Andrew Pinski  <pinskia at gmail.com>
-+
-+	PR target/40959	
-+	* config.host (ia64*-*-freebsd*): Set extra_parts.  Set tmake_file.
-+
- 2010-07-31  Release Manager
- 
- 	* GCC 4.5.1 released.
-Index: gcc/doc/sourcebuild.texi
-===================================================================
---- gcc/doc/sourcebuild.texi	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/doc/sourcebuild.texi	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -1679,6 +1679,11 @@
- @item pthread_h
- Target has @code{pthread.h}.
- 
-+ at item run_expensive_tests
-+Expensive testcases (usually those that consume excessive amounts of CPU
-+time) should be run on this target.  This can be enabled by setting the
-+ at env{GCC_TEST_RUN_EXPENSIVE} environment variable to a non-empty string.
-+
- @item simulator
- Test system runs executables on a simulator (i.e. slowly) rather than
- hardware (i.e. fast).
-Index: gcc/doc/extend.texi
-===================================================================
---- gcc/doc/extend.texi	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/doc/extend.texi	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -1345,9 +1345,7 @@
- @cindex VLAs
- 
- Variable-length automatic arrays are allowed in ISO C99, and as an
--extension GCC accepts them in C90 mode and in C++.  (However, GCC's
--implementation of variable-length arrays does not yet conform in detail
--to the ISO C99 standard.)  These arrays are
-+extension GCC accepts them in C90 mode and in C++.  These arrays are
- declared like any other automatic arrays, but with a length that is not
- a constant expression.  The storage is allocated at the point of
- declaration and deallocated when the brace-level is exited.  For
-Index: gcc/doc/invoke.texi
-===================================================================
---- gcc/doc/invoke.texi	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/doc/invoke.texi	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -5776,7 +5776,8 @@
- Optimize yet more.  @option{-O3} turns on all optimizations specified
- by @option{-O2} and also turns on the @option{-finline-functions},
- @option{-funswitch-loops}, @option{-fpredictive-commoning},
-- at option{-fgcse-after-reload} and @option{-ftree-vectorize} options.
-+ at option{-fgcse-after-reload}, @option{-ftree-vectorize} and
-+ at option{-fipa-cp-clone} options.
- 
- @item -O0
- @opindex O0
-Index: gcc/ira-conflicts.c
-===================================================================
---- gcc/ira-conflicts.c	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/ira-conflicts.c	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -825,6 +825,21 @@
- 	  IOR_HARD_REG_SET (ALLOCNO_CONFLICT_HARD_REGS (a),
- 			    temp_hard_reg_set);
- 	}
-+
-+      if (ALLOCNO_CALLS_CROSSED_NUM (a) != 0)
-+	{
-+	  int regno;
-+
-+	  /* Allocnos bigger than the saved part of call saved
-+	     regs must conflict with them.  */
-+	  for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
-+	    if (!TEST_HARD_REG_BIT (call_used_reg_set, regno)
-+		&& HARD_REGNO_CALL_PART_CLOBBERED (regno, a->mode))
-+	      {
-+		SET_HARD_REG_BIT (ALLOCNO_CONFLICT_HARD_REGS (a), regno);
-+		SET_HARD_REG_BIT (ALLOCNO_TOTAL_CONFLICT_HARD_REGS (a), regno);
-+	      }
-+	}
-     }
-   if (optimize && ira_conflicts_p
-       && internal_flag_ira_verbose > 2 && ira_dump_file != NULL)
-Index: gcc/tree-complex.c
-===================================================================
---- gcc/tree-complex.c	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/tree-complex.c	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -665,12 +665,16 @@
- update_complex_assignment (gimple_stmt_iterator *gsi, tree r, tree i)
- {
-   gimple_stmt_iterator orig_si = *gsi;
-+  gimple stmt;
- 
-   if (gimple_in_ssa_p (cfun))
-     update_complex_components (gsi, gsi_stmt (*gsi), r, i);
- 
-   gimple_assign_set_rhs_with_ops (&orig_si, COMPLEX_EXPR, r, i);
--  update_stmt (gsi_stmt (orig_si));
-+  stmt = gsi_stmt (orig_si);
-+  update_stmt (stmt);
-+  if (maybe_clean_eh_stmt (stmt))
-+    gimple_purge_dead_eh_edges (gimple_bb (stmt));
- }
- 
- 
-Index: gcc/tree-loop-distribution.c
-===================================================================
---- gcc/tree-loop-distribution.c	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/tree-loop-distribution.c	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -321,38 +321,6 @@
-   return res;
- }
- 
--/* Propagate phis in BB b to their uses and remove them.  */
--
--static void
--prop_phis (basic_block b)
--{
--  gimple_stmt_iterator psi;
--  gimple_seq phis = phi_nodes (b);
--
--  for (psi = gsi_start (phis); !gsi_end_p (psi); )
--    {
--      gimple phi = gsi_stmt (psi);
--      tree def = gimple_phi_result (phi), use = gimple_phi_arg_def (phi, 0);
--
--      gcc_assert (gimple_phi_num_args (phi) == 1);
--
--      if (!is_gimple_reg (def))
--	{
--	  imm_use_iterator iter;
--	  use_operand_p use_p;
--	  gimple stmt;
--
--	  FOR_EACH_IMM_USE_STMT (stmt, iter, def)
--	    FOR_EACH_IMM_USE_ON_STMT (use_p, iter)
--	      SET_USE (use_p, use);
--	}
--      else
--	replace_uses_by (def, use);
--
--      remove_phi_node (&psi, true);
--    }
--}
--
- /* Tries to generate a builtin function for the instructions of LOOP
-    pointed to by the bits set in PARTITION.  Returns true when the
-    operation succeeded.  */
-@@ -422,11 +390,13 @@
-   if (res && !copy_p)
-     {
-       unsigned nbbs = loop->num_nodes;
--      basic_block src = loop_preheader_edge (loop)->src;
--      basic_block dest = single_exit (loop)->dest;
--      prop_phis (dest);
--      make_edge (src, dest, EDGE_FALLTHRU);
-+      edge exit = single_exit (loop);
-+      basic_block src = loop_preheader_edge (loop)->src, dest = exit->dest;
-+      redirect_edge_pred (exit, src);
-+      exit->flags &= ~(EDGE_TRUE_VALUE|EDGE_FALSE_VALUE);
-+      exit->flags |= EDGE_FALLTHRU;
-       cancel_loop_tree (loop);
-+      rescan_loop_exit (exit, false, true);
- 
-       for (i = 0; i < nbbs; i++)
- 	delete_basic_block (bbs[i]);
-@@ -1192,8 +1162,13 @@
- 
-   FOR_EACH_LOOP (li, loop, 0)
-     {
--      VEC (gimple, heap) *work_list = VEC_alloc (gimple, heap, 3);
-+      VEC (gimple, heap) *work_list = NULL;
- 
-+      /* If the loop doesn't have a single exit we will fail anyway,
-+	 so do that early.  */
-+      if (!single_exit (loop))
-+	continue;
-+
-       /* With the following working list, we're asking distribute_loop
- 	 to separate the stores of the loop: when dependences allow,
- 	 it will end on having one store per loop.  */
-Index: gcc/cfgloopmanip.c
-===================================================================
---- gcc/cfgloopmanip.c	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/cfgloopmanip.c	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -1538,7 +1538,10 @@
-   /* Duplicate loop.  */
-   if (!cfg_hook_duplicate_loop_to_header_edge (loop, entry, 1,
- 					       NULL, NULL, NULL, 0))
--    return NULL;
-+    {
-+      entry->flags |= irred_flag;
-+      return NULL;
-+    }
- 
-   /* After duplication entry edge now points to new loop head block.
-      Note down new head as second_head.  */
-Index: gcc/optabs.c
-===================================================================
---- gcc/optabs.c	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/optabs.c	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -7033,6 +7033,7 @@
-   if (icode == CODE_FOR_nothing)
-     return NULL_RTX;
- 
-+  do_pending_stack_adjust ();
-   do
-     {
-       start_sequence ();
-Index: gcc/DATESTAMP
-===================================================================
---- gcc/DATESTAMP	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/DATESTAMP	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -1 +1 @@
--20100731
-+20101116
-Index: gcc/postreload.c
-===================================================================
---- gcc/postreload.c	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/postreload.c	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -810,7 +810,7 @@
- 	  rtx reg = SET_DEST (set);
- 	  rtx plus = SET_SRC (set);
- 	  rtx base = XEXP (plus, 1);
--	  rtx prev = prev_nonnote_insn (insn);
-+	  rtx prev = prev_nonnote_nondebug_insn (insn);
- 	  rtx prev_set = prev ? single_set (prev) : NULL_RTX;
- 	  unsigned int regno = REGNO (reg);
- 	  rtx index_reg = NULL_RTX;
-@@ -1323,7 +1323,7 @@
- 		       && MODES_OK_FOR_MOVE2ADD (GET_MODE (reg),
- 						 reg_mode[REGNO (src)]))
- 		{
--		  rtx next = next_nonnote_insn (insn);
-+		  rtx next = next_nonnote_nondebug_insn (insn);
- 		  rtx set = NULL_RTX;
- 		  if (next)
- 		    set = single_set (next);
-Index: gcc/tree.h
-===================================================================
---- gcc/tree.h	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/tree.h	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -2578,9 +2578,11 @@
-   (FUNCTION_DECL_CHECK (NODE)->function_decl.personality)
- 
- /* Nonzero for a given ..._DECL node means that the name of this node should
--   be ignored for symbolic debug purposes.  Moreover, for a FUNCTION_DECL,
--   the body of the function should also be ignored.  */
--#define DECL_IGNORED_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.ignored_flag)
-+   be ignored for symbolic debug purposes.  For a TYPE_DECL, this means that
-+   the associated type should be ignored.  For a FUNCTION_DECL, the body of
-+   the function should also be ignored.  */
-+#define DECL_IGNORED_P(NODE) \
-+  (DECL_COMMON_CHECK (NODE)->decl_common.ignored_flag)
- 
- /* Nonzero for a given ..._DECL node means that this node represents an
-    "abstract instance" of the given declaration (e.g. in the original
-Index: gcc/rtlanal.c
-===================================================================
---- gcc/rtlanal.c	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/rtlanal.c	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -4755,9 +4755,7 @@
- 	 stop if it isn't a single set or if it has a REG_INC note because
- 	 we don't want to bother dealing with it.  */
- 
--      do
--	prev = prev_nonnote_insn (prev);
--      while (prev && DEBUG_INSN_P (prev));
-+      prev = prev_nonnote_nondebug_insn (prev);
- 
-       if (prev == 0
- 	  || !NONJUMP_INSN_P (prev)
-Index: gcc/configure
-===================================================================
---- gcc/configure	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/configure	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -25454,27 +25454,58 @@
- 
- 
- pluginlibs=
-+
-+case "${host}" in
-+  *-*-darwin*)
-+    if test x$build = x$host; then
-+      export_sym_check="nm${exeext} -g"
-+    elif test x$host = x$target; then
-+      export_sym_check="$gcc_cv_nm -g"
-+    else
-+      export_sym_check=
-+    fi
-+  ;;
-+  *)
-+    if test x$build = x$host; then
-+      export_sym_check="objdump${exeext} -T"
-+    elif test x$host = x$target; then
-+      export_sym_check="$gcc_cv_objdump -T"
-+    else
-+      export_sym_check=
-+    fi
-+  ;;
-+esac
-+
- if test x"$enable_plugin" = x"yes"; then
- 
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for exported symbols" >&5
- $as_echo_n "checking for exported symbols... " >&6; }
--  echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
--  ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1
--  if $gcc_cv_objdump -T conftest | grep foobar > /dev/null; then
--    : # No need to use a flag
--  else
--    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -rdynamic" >&5
-+  if test "x$export_sym_check" != x; then
-+    echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
-+    ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1
-+    if $export_sym_check conftest | grep foobar > /dev/null; then
-+      : # No need to use a flag
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-+$as_echo "yes" >&6; }
-+    else
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-+$as_echo "yes" >&6; }
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -rdynamic" >&5
- $as_echo_n "checking for -rdynamic... " >&6; }
--    ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1
--    if $gcc_cv_objdump -T conftest | grep foobar > /dev/null; then
--      plugin_rdynamic=yes
--      pluginlibs="-rdynamic"
--    else
--      plugin_rdynamic=no
--      enable_plugin=no
-+      ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1
-+      if $export_sym_check conftest | grep foobar > /dev/null; then
-+        plugin_rdynamic=yes
-+        pluginlibs="-rdynamic"
-+      else
-+        plugin_rdynamic=no
-+        enable_plugin=no
-+      fi
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $plugin_rdynamic" >&5
-+$as_echo "$plugin_rdynamic" >&6; }
-     fi
--    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $plugin_rdynamic" >&5
--$as_echo "$plugin_rdynamic" >&6; }
-+  else
-+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unable to check" >&5
-+$as_echo "unable to check" >&6; }
-   fi
- 
-   # Check -ldl
-@@ -25542,7 +25573,14 @@
- 
-   # Check that we can build shared objects with -fPIC -shared
-   saved_LDFLAGS="$LDFLAGS"
--  LDFLAGS="$LDFLAGS -fPIC -shared"
-+  case "${host}" in
-+    *-*-darwin*)
-+      LDFLAGS="$LDFLAGS -fPIC -shared -undefined dynamic_lookup"
-+    ;;
-+    *)
-+      LDFLAGS="$LDFLAGS -fPIC -shared"
-+    ;;
-+  esac
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fPIC -shared" >&5
- $as_echo_n "checking for -fPIC -shared... " >&6; }
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-Index: gcc/builtins.c
-===================================================================
---- gcc/builtins.c	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/builtins.c	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -100,9 +100,9 @@
- static rtx expand_builtin_mathfn (tree, rtx, rtx);
- static rtx expand_builtin_mathfn_2 (tree, rtx, rtx);
- static rtx expand_builtin_mathfn_3 (tree, rtx, rtx);
--static rtx expand_builtin_interclass_mathfn (tree, rtx, rtx);
-+static rtx expand_builtin_interclass_mathfn (tree, rtx);
- static rtx expand_builtin_sincos (tree);
--static rtx expand_builtin_cexpi (tree, rtx, rtx);
-+static rtx expand_builtin_cexpi (tree, rtx);
- static rtx expand_builtin_int_roundingfn (tree, rtx);
- static rtx expand_builtin_int_roundingfn_2 (tree, rtx);
- static rtx expand_builtin_args_info (tree);
-@@ -2291,11 +2291,10 @@
-    isnan, etc).
-    Return 0 if a normal call should be emitted rather than expanding the
-    function in-line.  EXP is the expression that is a call to the builtin
--   function; if convenient, the result should be placed in TARGET.
--   SUBTARGET may be used as the target for computing one of EXP's operands.  */
-+   function; if convenient, the result should be placed in TARGET.  */
- 
- static rtx
--expand_builtin_interclass_mathfn (tree exp, rtx target, rtx subtarget)
-+expand_builtin_interclass_mathfn (tree exp, rtx target)
- {
-   enum insn_code icode = CODE_FOR_nothing;
-   rtx op0;
-@@ -2328,7 +2327,7 @@
- 	 side-effects more the once.  */
-       CALL_EXPR_ARG (exp, 0) = arg = builtin_save_expr (arg);
- 
--      op0 = expand_expr (arg, subtarget, VOIDmode, EXPAND_NORMAL);
-+      op0 = expand_expr (arg, NULL_RTX, VOIDmode, EXPAND_NORMAL);
- 
-       if (mode != GET_MODE (op0))
- 	op0 = convert_to_mode (mode, op0, 0);
-@@ -2395,11 +2394,10 @@
- 
- /* Expand a call to the internal cexpi builtin to the sincos math function.
-    EXP is the expression that is a call to the builtin function; if convenient,
--   the result should be placed in TARGET.  SUBTARGET may be used as the target
--   for computing one of EXP's operands.  */
-+   the result should be placed in TARGET.  */
- 
- static rtx
--expand_builtin_cexpi (tree exp, rtx target, rtx subtarget)
-+expand_builtin_cexpi (tree exp, rtx target)
- {
-   tree fndecl = get_callee_fndecl (exp);
-   tree arg, type;
-@@ -2422,7 +2420,7 @@
-       op1 = gen_reg_rtx (mode);
-       op2 = gen_reg_rtx (mode);
- 
--      op0 = expand_expr (arg, subtarget, VOIDmode, EXPAND_NORMAL);
-+      op0 = expand_expr (arg, NULL_RTX, VOIDmode, EXPAND_NORMAL);
- 
-       /* Compute into op1 and op2.  */
-       expand_twoval_unop (sincos_optab, op0, op2, op1, 0);
-@@ -3073,7 +3071,7 @@
-    function; if convenient, the result should be placed in TARGET.  */
- 
- static rtx
--expand_builtin_powi (tree exp, rtx target, rtx subtarget)
-+expand_builtin_powi (tree exp, rtx target)
- {
-   tree arg0, arg1;
-   rtx op0, op1;
-@@ -3102,7 +3100,7 @@
- 	      || (optimize_insn_for_speed_p ()
- 		  && powi_cost (n) <= POWI_MAX_MULTS)))
- 	{
--	  op0 = expand_expr (arg0, subtarget, VOIDmode, EXPAND_NORMAL);
-+	  op0 = expand_expr (arg0, NULL_RTX, VOIDmode, EXPAND_NORMAL);
- 	  op0 = force_reg (mode, op0);
- 	  return expand_powi (op0, mode, n);
- 	}
-@@ -3116,7 +3114,7 @@
-   if (target == NULL_RTX)
-     target = gen_reg_rtx (mode);
- 
--  op0 = expand_expr (arg0, subtarget, mode, EXPAND_NORMAL);
-+  op0 = expand_expr (arg0, NULL_RTX, mode, EXPAND_NORMAL);
-   if (GET_MODE (op0) != mode)
-     op0 = convert_to_mode (mode, op0, 0);
-   op1 = expand_expr (arg1, NULL_RTX, mode2, EXPAND_NORMAL);
-@@ -4885,7 +4883,10 @@
-     return NULL_RTX;
- 
-   /* Compute the argument.  */
--  op0 = expand_expr (CALL_EXPR_ARG (exp, 0), subtarget,
-+  op0 = expand_expr (CALL_EXPR_ARG (exp, 0),
-+		     (subtarget
-+		      && (TYPE_MODE (TREE_TYPE (CALL_EXPR_ARG (exp, 0)))
-+			  == GET_MODE (subtarget))) ? subtarget : NULL_RTX,
- 		     VOIDmode, EXPAND_NORMAL);
-   /* Compute op, into TARGET if possible.
-      Set TARGET to wherever the result comes back.  */
-@@ -5722,7 +5723,7 @@
-     CASE_FLT_FN (BUILT_IN_FINITE):
-     case BUILT_IN_ISFINITE:
-     case BUILT_IN_ISNORMAL:
--      target = expand_builtin_interclass_mathfn (exp, target, subtarget);
-+      target = expand_builtin_interclass_mathfn (exp, target);
-       if (target)
- 	return target;
-       break;
-@@ -5752,7 +5753,7 @@
-       break;
- 
-     CASE_FLT_FN (BUILT_IN_POWI):
--      target = expand_builtin_powi (exp, target, subtarget);
-+      target = expand_builtin_powi (exp, target);
-       if (target)
- 	return target;
-       break;
-@@ -5774,7 +5775,7 @@
-       break;
- 
-     CASE_FLT_FN (BUILT_IN_CEXPI):
--      target = expand_builtin_cexpi (exp, target, subtarget);
-+      target = expand_builtin_cexpi (exp, target);
-       gcc_assert (target);
-       return target;
- 
-Index: gcc/fold-const.c
-===================================================================
---- gcc/fold-const.c	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/fold-const.c	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -4737,9 +4737,9 @@
- 	  n_high = range_binop (MINUS_EXPR, exp_type,
- 				build_int_cst (exp_type, 0),
- 				0, low, 0);
--	  low = n_low, high = n_high;
--	  exp = arg0;
--	  continue;
-+	  if (n_high != 0 && TREE_OVERFLOW (n_high))
-+	    break;
-+	  goto normalize;
- 
- 	case BIT_NOT_EXPR:
- 	  /* ~ X -> -X - 1  */
-@@ -4773,6 +4773,7 @@
- 	  if (TYPE_OVERFLOW_UNDEFINED (arg0_type))
- 	    *strict_overflow_p = true;
- 
-+	normalize:
- 	  /* Check for an unsigned range which has wrapped around the maximum
- 	     value thus making n_high < n_low, and normalize it.  */
- 	  if (n_low && n_high && tree_int_cst_lt (n_high, n_low))
-@@ -12096,8 +12097,14 @@
- 	  if (integer_pow2p (sval) && tree_int_cst_sgn (sval) > 0)
- 	    {
- 	      tree sh_cnt = TREE_OPERAND (arg1, 1);
--	      unsigned long pow2 = exact_log2 (TREE_INT_CST_LOW (sval));
-+	      unsigned long pow2;
- 
-+	      if (TREE_INT_CST_LOW (sval))
-+		pow2 = exact_log2 (TREE_INT_CST_LOW (sval));
-+	      else
-+		pow2 = exact_log2 (TREE_INT_CST_HIGH (sval))
-+		       + HOST_BITS_PER_WIDE_INT;
-+
- 	      if (strict_overflow_p)
- 		fold_overflow_warning (("assuming signed overflow does not "
- 					"occur when simplifying A / (B << N)"),
-Index: gcc/reorg.c
-===================================================================
---- gcc/reorg.c	(.../tags/gcc_4_5_1_release)	(wersja 166792)
-+++ gcc/reorg.c	(.../branches/gcc-4_5-branch)	(wersja 166792)
-@@ -3458,9 +3458,13 @@
- 	     We do this by deleting the INSN containing the SEQUENCE, then
- 	     re-emitting the insns separately, and then deleting the RETURN.
- 	     This allows the count of the jump target to be properly
--	     decremented.  */
-+	     decremented.
- 
--	  /* Clear the from target bit, since these insns are no longer
-+	     Note that we need to change the INSN_UID of the re-emitted insns
-+	     since it is used to hash the insns for mark_target_live_regs and
-+	     the re-emitted insns will no longer be wrapped up in a SEQUENCE.
-+
-+	     Clear the from target bit, since these insns are no longer
- 	     in delay slots.  */
<<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.39&r2=1.40&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/gcc/gcc.spec?r1=1.643&r2=1.644&f=u



More information about the pld-cvs-commit mailing list