From e29a68e7a9b0a4eeedb6a4c5ed7c843fb24e4efb Mon Sep 17 00:00:00 2001
From: Jakub Jelinek <jakub@fedoraproject.org>
Date: Fri, 11 Sep 2009 10:19:55 +0000
Subject: [PATCH] 4.4.1-13

---
 .cvsignore                                    |   2 +-
 gcc.spec                                      |  27 ++-
 gcc44-pr41175-2.patch                         |   8 +-
 gcc44-rh518303.patch                          |  30 +++
 gcc44-rh522577.patch                          |  15 ++
 ...-cselib-subreg-of-value-more-pr41276.patch | 188 ------------------
 sources                                       |   2 +-
 7 files changed, 69 insertions(+), 203 deletions(-)
 create mode 100644 gcc44-rh518303.patch
 create mode 100644 gcc44-rh522577.patch
 delete mode 100644 gcc44-vta-cselib-subreg-of-value-more-pr41276.patch

diff --git a/.cvsignore b/.cvsignore
index 71dab69..9b9e5e6 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1,2 +1,2 @@
 fastjar-0.97.tar.gz
-gcc-4.4.1-20090910.tar.bz2
+gcc-4.4.1-20090911.tar.bz2
diff --git a/gcc.spec b/gcc.spec
index 228badd..0b5052a 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,9 +1,9 @@
-%global DATE 20090910
-%global SVNREV 151593
+%global DATE 20090911
+%global SVNREV 151630
 %global gcc_version 4.4.1
 # Note, gcc_release must be integer, if you want to add suffixes to
 # %{release}, append them after %{gcc_release} on Release: line.
-%global gcc_release 12
+%global gcc_release 13
 %global _unpackaged_files_terminate_build 0
 %global multilib_64_archs sparc64 ppc64 s390x x86_64
 %global include_gappletviewer 1
@@ -160,9 +160,11 @@ Patch16: gcc44-unwind-debug-hook.patch
 Patch17: gcc44-pr38757.patch
 Patch18: gcc44-libstdc++-docs.patch
 Patch19: gcc44-vta-cfgexpand-ptr-mode-pr41248.patch
-Patch20: gcc44-vta-cselib-subreg-of-value-more-pr41276.patch
-Patch21: gcc44-powerpc-libgcc_s_so.patch
-Patch22: gcc44-pr41175.patch
+Patch20: gcc44-powerpc-libgcc_s_so.patch
+Patch21: gcc44-pr41175.patch
+Patch22: gcc44-pr41175-2.patch
+Patch23: gcc44-rh518303.patch
+Patch24: gcc44-rh522577.patch
 
 Patch1000: fastjar-0.97-segfault.patch
 
@@ -469,9 +471,11 @@ which are required to compile with the GNAT.
 %patch18 -p0 -b .libstdc++-docs~
 %endif
 %patch19 -p0 -b .vta-cfgexpand-ptr-mode-pr41248~
-%patch20 -p0 -b .gcc44-vta-cselib-subreg-of-value-more-pr41276~
-%patch21 -p0 -b .powerpc-libgcc_s_so~
-%patch22 -p0 -b .pr41175~
+%patch20 -p0 -b .powerpc-libgcc_s_so~
+%patch21 -p0 -b .pr41175~
+%patch22 -p0 -b .pr41175-2~
+%patch23 -p0 -b .rh518303~
+%patch24 -p0 -b .rh522577~
 
 # This testcase doesn't compile.
 rm libjava/testsuite/libjava.lang/PR35020*
@@ -1827,6 +1831,11 @@ fi
 %doc rpm.doc/changelogs/libmudflap/ChangeLog*
 
 %changelog
+* Fri Sep 11 2009 Jakub Jelinek <jakub@redhat.com> 4.4.1-13
+- fix ICE in debuginfo output with BLOCK_NONLOCALIZED_VARS (#518303)
+- wrap_constant when propagating for subst in debug in the combiner (#522577)
+- further fix for ppc -m32 -Os out of line gpr/fpr restoring (PR target/41175)
+
 * Thu Sep 10 2009 Jakub Jelinek <jakub@redhat.com> 4.4.1-12
 - update from gcc-4_4-branch
   - PRs bootstrap/41180, target/41315
diff --git a/gcc44-pr41175-2.patch b/gcc44-pr41175-2.patch
index aade733..41d1b65 100644
--- a/gcc44-pr41175-2.patch
+++ b/gcc44-pr41175-2.patch
@@ -13,9 +13,9 @@
 
 --- gcc/config/rs6000/rs6000.c.jj	2009-09-09 20:46:57.000000000 +0200
 +++ gcc/config/rs6000/rs6000.c	2009-09-11 10:29:01.101406443 +0200
-@@ -18104,8 +18104,12 @@ rs6000_emit_stack_reset (rs6000_stack_t 
-   if (frame_reg_rtx != sp_reg_rtx)
+@@ -18083,8 +18083,12 @@ rs6000_emit_stack_reset (rs6000_stack_t 
      {
+       rs6000_emit_stack_tie ();
        if (sp_offset != 0)
 -	return emit_insn (gen_addsi3 (sp_reg_rtx, frame_reg_rtx,
 -				      GEN_INT (sp_offset)));
@@ -28,7 +28,7 @@
        else if (!savres)
  	return emit_move_insn (sp_reg_rtx, frame_reg_rtx);
      }
-@@ -19541,9 +19545,13 @@ rs6000_emit_epilogue (int sibcall)
+@@ -19525,9 +19529,13 @@ rs6000_emit_epilogue (int sibcall)
  	rs6000_emit_stack_reset (info, sp_reg_rtx, frame_reg_rtx,
  				 sp_offset, can_use_exit);
        else
@@ -45,7 +45,7 @@
  
        par = rs6000_make_savres_rtx (info, frame_reg_rtx,
  				    info->gp_save_offset, reg_mode,
-@@ -19648,12 +19656,10 @@ rs6000_emit_epilogue (int sibcall)
+@@ -19632,12 +19640,10 @@ rs6000_emit_epilogue (int sibcall)
  				      info->lr_save_offset + sp_offset);
  
        emit_move_insn (gen_rtx_REG (Pmode, 0), mem);
diff --git a/gcc44-rh518303.patch b/gcc44-rh518303.patch
new file mode 100644
index 0000000..271b1df
--- /dev/null
+++ b/gcc44-rh518303.patch
@@ -0,0 +1,30 @@
+2009-09-09  Jakub Jelinek  <jakub@redhat.com>
+
+	* integrate.c (set_block_abstract_flags): Call
+	set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
+
+--- gcc/integrate.c.jj	2009-03-04 12:12:03.000000000 +0100
++++ gcc/integrate.c	2009-09-09 18:07:07.000000000 +0200
+@@ -167,6 +167,7 @@ set_block_abstract_flags (tree stmt, int
+ {
+   tree local_decl;
+   tree subblock;
++  unsigned int i;
+ 
+   BLOCK_ABSTRACT (stmt) = setting;
+ 
+@@ -175,6 +176,14 @@ set_block_abstract_flags (tree stmt, int
+        local_decl = TREE_CHAIN (local_decl))
+     set_decl_abstract_flags (local_decl, setting);
+ 
++  for (i = 0; i < BLOCK_NUM_NONLOCALIZED_VARS (stmt); i++)
++    {
++      local_decl = BLOCK_NONLOCALIZED_VAR (stmt, i);
++      if ((TREE_CODE (local_decl) == VAR_DECL && !TREE_STATIC (local_decl))
++	  || TREE_CODE (local_decl) == PARM_DECL)
++	set_decl_abstract_flags (local_decl, setting);
++    }
++
+   for (subblock = BLOCK_SUBBLOCKS (stmt);
+        subblock != NULL_TREE;
+        subblock = BLOCK_CHAIN (subblock))
diff --git a/gcc44-rh522577.patch b/gcc44-rh522577.patch
new file mode 100644
index 0000000..4de10d7
--- /dev/null
+++ b/gcc44-rh522577.patch
@@ -0,0 +1,15 @@
+2009-09-11  Jakub Jelinek  <jakub@redhat.com>
+
+	* combine.c (propagate_for_debug_subst): Call wrap_constant on top.
+
+--- gcc/combine.c.jj	2009-09-08 12:32:31.000000000 +0200
++++ gcc/combine.c	2009-09-11 11:01:32.000000000 +0200
+@@ -2311,7 +2311,7 @@ propagate_for_debug_subst (rtx *loc, voi
+ 	  to = simplify_gen_subreg (GET_MODE (x), to,
+ 				    GET_MODE (from), SUBREG_BYTE (x));
+ 	}
+-      *loc = to;
++      *loc = wrap_constant (GET_MODE (x), to);
+       pair->changed = true;
+       return -1;
+     }
diff --git a/gcc44-vta-cselib-subreg-of-value-more-pr41276.patch b/gcc44-vta-cselib-subreg-of-value-more-pr41276.patch
deleted file mode 100644
index a61935c..0000000
--- a/gcc44-vta-cselib-subreg-of-value-more-pr41276.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-for  gcc/ChangeLog
-from  Alexandre Oliva  <aoliva@redhat.com>
-
-	PR debug/41276
-	PR debug/41307
-	* cselib.c (cselib_expand_value_rtx_cb): Document callback
-	interface.
-	(cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
-	for VALUEs, to implement the documented interface.
-	* var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
-	Adjust for VALUEs and anything else, to implement the
-	documented interface.
-
-Index: gcc/cselib.c
-===================================================================
---- gcc/cselib.c.orig	2009-09-08 19:34:10.000000000 -0300
-+++ gcc/cselib.c	2009-09-09 05:20:52.000000000 -0300
-@@ -1053,7 +1053,10 @@ cselib_expand_value_rtx (rtx orig, bitma
- }
- 
- /* Same as cselib_expand_value_rtx, but using a callback to try to
--   resolve VALUEs that expand to nothing.  */
-+   resolve some expressions.  The CB function should return ORIG if it
-+   can't or does not want to deal with a certain RTX.  Any other
-+   return value, including NULL, will be used as the expansion for
-+   VALUE, without any further changes.  */
- 
- rtx
- cselib_expand_value_rtx_cb (rtx orig, bitmap regs_active, int max_depth,
-@@ -1068,6 +1071,9 @@ cselib_expand_value_rtx_cb (rtx orig, bi
-   return cselib_expand_value_rtx_1 (orig, &evd, max_depth);
- }
- 
-+/* Internal implementation of cselib_expand_value_rtx and
-+   cselib_expand_value_rtx_cb.  */
-+
- static rtx
- cselib_expand_value_rtx_1 (rtx orig, struct expand_value_data *evd,
- 			   int max_depth)
-@@ -1158,26 +1164,36 @@ cselib_expand_value_rtx_1 (rtx orig, str
- 
-     case SUBREG:
-       {
--	rtx subreg = cselib_expand_value_rtx_1 (SUBREG_REG (orig), evd,
--						max_depth - 1);
-+	rtx subreg;
-+
-+	if (evd->callback)
-+	  {
-+	    subreg = evd->callback (orig, evd->regs_active, max_depth,
-+				    evd->callback_arg);
-+	    if (subreg != orig)
-+	      return subreg;
-+	  }
-+
-+	subreg = cselib_expand_value_rtx_1 (SUBREG_REG (orig), evd,
-+					    max_depth - 1);
- 	if (!subreg)
- 	  return NULL;
- 	scopy = simplify_gen_subreg (GET_MODE (orig), subreg,
- 				     GET_MODE (SUBREG_REG (orig)),
- 				     SUBREG_BYTE (orig));
--	if ((scopy == NULL
--	     || (GET_CODE (scopy) == SUBREG
--		 && !REG_P (SUBREG_REG (scopy))
--		 && !MEM_P (SUBREG_REG (scopy))))
--	    && (REG_P (SUBREG_REG (orig))
--		|| MEM_P (SUBREG_REG (orig))))
--	  return shallow_copy_rtx (orig);
-+	if (scopy == NULL
-+	    || (GET_CODE (scopy) == SUBREG
-+		&& !REG_P (SUBREG_REG (scopy))
-+		&& !MEM_P (SUBREG_REG (scopy))))
-+	  return NULL;
-+
- 	return scopy;
-       }
- 
-     case VALUE:
-       {
- 	rtx result;
-+
- 	if (dump_file && (dump_flags & TDF_DETAILS))
- 	  {
- 	    fputs ("\nexpanding ", dump_file);
-@@ -1185,20 +1201,16 @@ cselib_expand_value_rtx_1 (rtx orig, str
- 	    fputs (" into...", dump_file);
- 	  }
- 	
--	if (!evd->callback)
--	  result = NULL;
--	else
-+	if (evd->callback)
- 	  {
- 	    result = evd->callback (orig, evd->regs_active, max_depth,
- 				    evd->callback_arg);
--	    if (result == orig)
--	      result = NULL;
--	    else if (result)
--	      result = cselib_expand_value_rtx_1 (result, evd, max_depth);
-+
-+	    if (result != orig)
-+	      return result;
- 	  }
- 
--	if (!result)
--	  result = expand_loc (CSELIB_VAL_PTR (orig)->locs, evd, max_depth);
-+	result = expand_loc (CSELIB_VAL_PTR (orig)->locs, evd, max_depth);
- 	return result;
-       }
-     default:
-Index: gcc/var-tracking.c
-===================================================================
---- gcc/var-tracking.c.orig	2009-09-08 19:33:55.000000000 -0300
-+++ gcc/var-tracking.c	2009-09-08 20:08:08.000000000 -0300
-@@ -6243,7 +6243,8 @@ check_wrap_constant (enum machine_mode m
- }
- 
- /* Callback for cselib_expand_value, that looks for expressions
--   holding the value in the var-tracking hash tables.  */
-+   holding the value in the var-tracking hash tables.  Return X for
-+   standard processing, anything else is to be used as-is.  */
- 
- static rtx
- vt_expand_loc_callback (rtx x, bitmap regs, int max_depth, void *data)
-@@ -6254,19 +6255,46 @@ vt_expand_loc_callback (rtx x, bitmap re
-   location_chain loc;
-   rtx result;
- 
--  gcc_assert (GET_CODE (x) == VALUE);
-+  if (GET_CODE (x) == SUBREG)
-+    {
-+      rtx subreg = SUBREG_REG (x);
-+
-+      if (GET_CODE (SUBREG_REG (x)) != VALUE)
-+	return x;
-+
-+      subreg = cselib_expand_value_rtx_cb (SUBREG_REG (x), regs,
-+					   max_depth - 1,
-+					   vt_expand_loc_callback, data);
-+
-+      if (!subreg)
-+	return NULL;
-+
-+      result = simplify_gen_subreg (GET_MODE (x), subreg,
-+				    GET_MODE (SUBREG_REG (x)),
-+				    SUBREG_BYTE (x));
-+
-+      /* Invalid SUBREGs are ok in debug info.  ??? We could try
-+	 alternate expansions for the VALUE as well.  */
-+      if (!result && (REG_P (subreg) || MEM_P (subreg)))
-+	result = gen_rtx_raw_SUBREG (GET_MODE (x), subreg, SUBREG_BYTE (x));
-+
-+      return result;
-+    }
-+
-+  if (GET_CODE (x) != VALUE)
-+    return x;
- 
-   if (VALUE_RECURSED_INTO (x))
--    return NULL;
-+    return x;
- 
-   dv = dv_from_value (x);
-   var = (variable) htab_find_with_hash (vars, dv, dv_htab_hash (dv));
- 
-   if (!var)
--    return NULL;
-+    return x;
- 
-   if (var->n_var_parts == 0)
--    return NULL;
-+    return x;
- 
-   gcc_assert (var->n_var_parts == 1);
- 
-@@ -6283,7 +6311,10 @@ vt_expand_loc_callback (rtx x, bitmap re
-     }
- 
-   VALUE_RECURSED_INTO (x) = false;
--  return result;
-+  if (result)
-+    return result;
-+  else
-+    return x;
- }
- 
- /* Expand VALUEs in LOC, using VARS as well as cselib's equivalence
diff --git a/sources b/sources
index 23c42fb..fde2eab 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
 2659f09c2e43ef8b7d4406321753f1b2  fastjar-0.97.tar.gz
-e928ff85387b4b7c8f1f065a15f0a4f9  gcc-4.4.1-20090910.tar.bz2
+36739b78d9654be37ccf6019e72db459  gcc-4.4.1-20090911.tar.bz2