[gcc/f16] 4.6.1-9

Jakub Jelinek jakub at fedoraproject.org
Thu Sep 8 07:24:17 UTC 2011


commit 56208957a2291cfa7452a6666d119ac65229fb19
Author: Jakub Jelinek <jakub at redhat.com>
Date:   Thu Sep 8 09:24:03 2011 +0200

    4.6.1-9

 .gitignore           |    1 +
 gcc.spec             |   50 +++++++++++-----
 gcc46-pr48722.patch  |   76 ------------------------
 gcc46-pr50299.patch  |  155 ++++++++++++++++++++++++++++++++++++++++++++++++++
 gcc46-rh713800.patch |   28 ---------
 sources              |    2 +-
 6 files changed, 192 insertions(+), 120 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index c8df42e..c9b4424 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,4 @@
 /gcc-4.6.1-20110802.tar.bz2
 /gcc-4.6.1-20110804.tar.bz2
 /gcc-4.6.1-20110824.tar.bz2
+/gcc-4.6.1-20110908.tar.bz2
diff --git a/gcc.spec b/gcc.spec
index fb843e4..2152990 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,9 +1,9 @@
-%global DATE 20110824
-%global SVNREV 178027
+%global DATE 20110908
+%global SVNREV 178678
 %global gcc_version 4.6.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 8
+%global gcc_release 9
 %global _unpackaged_files_terminate_build 0
 %global multilib_64_archs sparc64 ppc64 s390x x86_64
 %ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha
@@ -107,7 +107,7 @@ BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1
 BuildRequires: libunwind >= 0.98
 %endif
 %if %{build_cloog}
-%if 0%{?fedora} >= 15
+%if 0%{?fedora} >= 15 || 0%{?rhel} >= 7
 BuildRequires: ppl >= 0.11.2, ppl-devel >= 0.11.2
 %else
 BuildRequires: ppl >= 0.10, ppl-devel >= 0.10
@@ -169,8 +169,7 @@ Patch15: gcc46-libstdc++-docs.patch
 Patch17: gcc46-no-add-needed.patch
 Patch18: gcc46-ppl-0.10.patch
 Patch19: gcc46-pr47858.patch
-Patch20: gcc46-pr48722.patch
-Patch21: gcc46-rh713800.patch
+Patch20: gcc46-pr50299.patch
 
 Patch1000: fastjar-0.97-segfault.patch
 Patch1001: fastjar-0.97-len1.patch
@@ -638,12 +637,11 @@ package or when debugging this package.
 %patch15 -p0 -b .libstdc++-docs~
 %endif
 %patch17 -p0 -b .no-add-needed~
-%if 0%{?fedora} < 15
+%if 0%{?fedora} < 15 || 0%{?rhel} < 7
 %patch18 -p0 -b .ppl-0.10~
 %endif
 %patch19 -p0 -b .pr47858~
-%patch20 -p0 -b .pr48722~
-%patch21 -p0 -b .rh713800~
+%patch20 -p0 -b .pr50299~
 
 %if 0%{?_enable_debug_packages}
 cat > split-debuginfo.sh <<\EOF
@@ -710,7 +708,7 @@ tar xjf %{SOURCE10}
 sed -i -e 's/4\.6\.2/4.6.1/' gcc/BASE-VER
 echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
 
-%if 0%{fedora} >= 16
+%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
 # Default to -gdwarf-4 -fno-debug-types-section rather than -gdwarf-2
 sed -i '/UInteger Var(dwarf_version)/s/Init(2)/Init(4)/' gcc/common.opt
 sed -i '/flag_debug_types_section/s/Init(1)/Init(0)/' gcc/common.opt
@@ -1149,6 +1147,14 @@ echo '/* GNU ld script
 OUTPUT_FORMAT(elf32-powerpc)
 GROUP ( /lib/libgcc_s.so.1 libgcc.a )' > $FULLPATH/32/libgcc_s.so
 %endif
+%ifarch %{arm}
+rm -f $FULLPATH/libgcc_s.so
+echo '/* GNU ld script
+   Use the shared library, but some functions are only in
+   the static library, so try that secondarily.  */
+OUTPUT_FORMAT(elf32-littlearm)
+GROUP ( /lib/libgcc_s.so.1 libgcc.a )' > $FULLPATH/libgcc_s.so
+%endif
 
 mv -f %{buildroot}%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/
 
@@ -2454,6 +2460,20 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
 
 %changelog
+* Thu Sep  8 2011 Jakub Jelinek <jakub at redhat.com> 4.6.1-9
+- update from the 4.6 branch
+  - PRs c++/49267, c++/50089, c++/50157, c++/50207, c++/50220, c++/50224,
+	c++/50234, c++/50255, c++/50309, c/50179, fortran/50163,
+	libffi/49594, libfortran/50192, libstdc++/50268, middle-end/50116,
+	middle-end/50266, target/50090, target/50202, target/50289,
+	target/50310, tree-optimization/50178
+- debug info related backports from the trunk
+  - PRs debug/50191, debug/50215
+- fix call site debug info on big endian targets (PR debug/50299)
+- put libgcc.a into libgcc_s.so linker script also on arm (#733549)
+- use %%{?fedora} instead of %%{fedora}, handle 0%%{?rhel} >= 7 like
+  0%%{?fedora} >= 16
+
 * Wed Aug 24 2011 Jakub Jelinek <jakub at redhat.com> 4.6.1-8
 - update from the 4.6 branch
   - PRs c++/46862, c++/48993, c++/49669, c++/49921, c++/49988, c++/50024,
@@ -2483,7 +2503,7 @@ fi
   - PRs c++/49260, c++/49924, libstdc++/49925, target/47908, target/49920
   - fix libquadmath on i686 (#726909)
 - OpenMP 3.1 support (PR fortran/42041, PR fortran/46752)
-%if 0%{fedora} >= 16
+%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
 - make -grecord-gcc-switches the default
 %endif
 
@@ -2504,7 +2524,7 @@ fi
 - require gmp-devel, mpfr-devel and libmpc-devel in gcc-plugin-devel
   (#725569)
 - backport -grecord-gcc-switches (#507759, PR other/32998)
-%if 0%{fedora} >= 16
+%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
 - more compact debug macro info for -g3 - .debug_macro section
 - improve call site debug info for some floating point parameters
   passed on the stack (PR debug/49846)
@@ -2518,7 +2538,7 @@ fi
 	target/49487, target/49541, target/49621, tree-opt/49309,
 	tree-optimization/49094, tree-optimization/49651
 - backport -march=bdver2 and -mtune=bdver2 support
-%if 0%{fedora} < 16
+%if 0%{?fedora} < 16 || 0%{?rhel} >= 7
 - use ENTRY_VALUE RTLs internally to improve generated debug info,
   just make sure to remove it from possible options before emitting
   var-tracking notes
@@ -2562,7 +2582,7 @@ fi
   - fix GCSE (#712480, PR rtl-optimization/49390)
 - use rm -f and mv -f in split-debuginfo.sh (#716664)
 - backport some debuginfo improvements and bugfixes
-%if 0%{fedora} >= 16
+%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
   - improve debug info for IPA-SRA through DW_OP_GNU_parameter_ref
     (PR debug/47858)
   - emit DW_OP_GNU_convert <0> as convert to untyped
@@ -2591,7 +2611,7 @@ fi
 	target/43700, target/43995, target/44643, target/45263,
 	tree-optimization/44897, tree-optimization/49161,
 	tree-optimization/49217, tree-optimization/49218
-%if 0%{fedora} >= 16
+%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
 - default to -gdwarf-4 -fno-debug-types-section instead of -gdwarf-3
 - backport DW_OP_GNU_entry_value support
   (PRs rtl-optimization/48826, debug/48902, bootstrap/48148,
diff --git a/gcc46-pr50299.patch b/gcc46-pr50299.patch
new file mode 100644
index 0000000..3779d97
--- /dev/null
+++ b/gcc46-pr50299.patch
@@ -0,0 +1,155 @@
+2011-09-06  Jakub Jelinek  <jakub at redhat.com>
+
+	PR debug/50299
+	* calls.c (load_register_parameters): Use use_reg_mode instead
+	of use_reg when adding a single register CALL_INSN_FUNCTION_USAGE
+	entry.
+	(expand_call): Set EXPR_LIST mode to TYPE_MODE of the argument
+	for stack CALL_INSN_FUNCTION_USAGE uses.
+	* expr.h (use_reg_mode): New prototype.
+	(use_reg): Changed into inline around use_reg_mode.
+	* expr.c (use_reg): Renamed to...
+	(use_reg_mode): ... this.  Added MODE argument, set EXPR_LIST
+	mode to that mode instead of VOIDmode.
+	* var-tracking.c (prepare_call_arguments): Don't track parameters
+	whose EXPR_LIST mode is VOIDmode, BLKmode or X mode isn't convertible
+	to it using lowpart_subreg.  Convert VALUE and REG/MEM to the
+	EXPR_LIST mode.
+
+--- gcc/calls.c.jj	2011-08-22 08:17:07.000000000 +0200
++++ gcc/calls.c	2011-09-05 19:47:47.000000000 +0200
+@@ -1756,7 +1756,8 @@ load_register_parameters (struct arg_dat
+ 	  if (GET_CODE (reg) == PARALLEL)
+ 	    use_group_regs (call_fusage, reg);
+ 	  else if (nregs == -1)
+-	    use_reg (call_fusage, reg);
++	    use_reg_mode (call_fusage, reg,
++			  TYPE_MODE (TREE_TYPE (args[i].tree_value)));
+ 	  else if (nregs > 0)
+ 	    use_regs (call_fusage, REGNO (reg), nregs);
+ 	}
+@@ -2815,10 +2816,10 @@ expand_call (tree exp, rtx target, int i
+ 	      }
+ 
+ 	  if (args[i].stack)
+-	    call_fusage = gen_rtx_EXPR_LIST (VOIDmode,
+-					     gen_rtx_USE (VOIDmode,
+-							  args[i].stack),
+-					     call_fusage);
++	    call_fusage
++	      = gen_rtx_EXPR_LIST (TYPE_MODE (TREE_TYPE (args[i].tree_value)),
++				   gen_rtx_USE (VOIDmode, args[i].stack),
++				   call_fusage);
+ 	}
+ 
+       /* If we have a parm that is passed in registers but not in memory
+--- gcc/expr.h.jj	2011-07-27 23:25:36.000000000 +0200
++++ gcc/expr.h	2011-09-05 18:05:31.000000000 +0200
+@@ -321,8 +321,16 @@ extern void emit_group_store (rtx, rtx, 
+ /* Copy BLKmode object from a set of registers.  */
+ extern rtx copy_blkmode_from_reg (rtx, rtx, tree);
+ 
++/* Mark REG as holding a parameter for the next CALL_INSN.
++   Mode is TYPE_MODE of the non-promoted parameter, or VOIDmode.  */
++extern void use_reg_mode (rtx *, rtx, enum machine_mode);
++
+ /* Mark REG as holding a parameter for the next CALL_INSN.  */
+-extern void use_reg (rtx *, rtx);
++static inline void
++use_reg (rtx *fusage, rtx reg)
++{
++  use_reg_mode (fusage, reg, VOIDmode);
++}
+ 
+ /* Mark NREGS consecutive regs, starting at REGNO, as holding parameters
+    for the next CALL_INSN.  */
+--- gcc/expr.c.jj	2011-09-02 16:29:39.000000000 +0200
++++ gcc/expr.c	2011-09-05 19:47:32.000000000 +0200
+@@ -2184,13 +2184,12 @@ copy_blkmode_from_reg (rtx tgtblk, rtx s
+    to by CALL_FUSAGE.  REG must denote a hard register.  */
+ 
+ void
+-use_reg (rtx *call_fusage, rtx reg)
++use_reg_mode (rtx *call_fusage, rtx reg, enum machine_mode mode)
+ {
+   gcc_assert (REG_P (reg) && REGNO (reg) < FIRST_PSEUDO_REGISTER);
+ 
+   *call_fusage
+-    = gen_rtx_EXPR_LIST (VOIDmode,
+-			 gen_rtx_USE (VOIDmode, reg), *call_fusage);
++    = gen_rtx_EXPR_LIST (mode, gen_rtx_USE (VOIDmode, reg), *call_fusage);
+ }
+ 
+ /* Add USE expressions to *CALL_FUSAGE for each of NREGS consecutive regs,
+--- gcc/var-tracking.c.jj	2011-08-30 10:52:41.000000000 +0200
++++ gcc/var-tracking.c	2011-09-05 19:48:10.000000000 +0200
+@@ -5730,11 +5730,18 @@ prepare_call_arguments (basic_block bb, 
+       {
+ 	rtx item = NULL_RTX;
+ 	x = XEXP (XEXP (link, 0), 0);
+-	if (REG_P (x))
++	if (GET_MODE (link) == VOIDmode
++	    || GET_MODE (link) == BLKmode
++	    || (GET_MODE (link) != GET_MODE (x)
++		&& (GET_MODE_CLASS (GET_MODE (link)) != MODE_INT
++		    || GET_MODE_CLASS (GET_MODE (x)) != MODE_INT)))
++	  /* Can't do anything for these, if the original type mode
++	     isn't known or can't be converted.  */;
++	else if (REG_P (x))
+ 	  {
+ 	    cselib_val *val = cselib_lookup (x, GET_MODE (x), 0, VOIDmode);
+ 	    if (val && cselib_preserved_value_p (val))
+-	      item = gen_rtx_CONCAT (GET_MODE (x), x, val->val_rtx);
++	      item = val->val_rtx;
+ 	    else if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT)
+ 	      {
+ 		enum machine_mode mode = GET_MODE (x);
+@@ -5749,10 +5756,7 @@ prepare_call_arguments (basic_block bb, 
+ 		    val = cselib_lookup (reg, mode, 0, VOIDmode);
+ 		    if (val && cselib_preserved_value_p (val))
+ 		      {
+-			item = gen_rtx_CONCAT (GET_MODE (x), x,
+-					       lowpart_subreg (GET_MODE (x),
+-							       val->val_rtx,
+-							       mode));
++			item = val->val_rtx;
+ 			break;
+ 		      }
+ 		  }
+@@ -5776,7 +5780,7 @@ prepare_call_arguments (basic_block bb, 
+ 	      }
+ 	    val = cselib_lookup (mem, GET_MODE (mem), 0, VOIDmode);
+ 	    if (val && cselib_preserved_value_p (val))
+-	      item = gen_rtx_CONCAT (GET_MODE (x), copy_rtx (x), val->val_rtx);
++	      item = val->val_rtx;
+ 	    else if (GET_MODE_CLASS (GET_MODE (mem)) != MODE_INT)
+ 	      {
+ 		/* For non-integer stack argument see also if they weren't
+@@ -5787,15 +5791,22 @@ prepare_call_arguments (basic_block bb, 
+ 		    val = cselib_lookup (adjust_address_nv (mem, imode, 0),
+ 					 imode, 0, VOIDmode);
+ 		    if (val && cselib_preserved_value_p (val))
+-		      item = gen_rtx_CONCAT (GET_MODE (x), copy_rtx (x),
+-					     lowpart_subreg (GET_MODE (x),
+-							     val->val_rtx,
+-							     imode));
++		      item = lowpart_subreg (GET_MODE (x), val->val_rtx,
++					     imode);
+ 		  }
+ 	      }
+ 	  }
+ 	if (item)
+-	  call_arguments = gen_rtx_EXPR_LIST (VOIDmode, item, call_arguments);
++	  {
++	    rtx x2 = x;
++	    if (GET_MODE (item) != GET_MODE (link))
++	      item = lowpart_subreg (GET_MODE (link), item, GET_MODE (item));
++	    if (GET_MODE (x2) != GET_MODE (link))
++	      x2 = lowpart_subreg (GET_MODE (link), x2, GET_MODE (x2));
++	    item = gen_rtx_CONCAT (GET_MODE (link), x2, item);
++	    call_arguments
++	      = gen_rtx_EXPR_LIST (VOIDmode, item, call_arguments);
++	  }
+ 	if (t && t != void_list_node)
+ 	  {
+ 	    tree argtype = TREE_VALUE (t);
diff --git a/sources b/sources
index 3e3fb58..3b3056b 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
 2659f09c2e43ef8b7d4406321753f1b2  fastjar-0.97.tar.gz
-bb9c5e409658f09ff4cd6679c637bb08  gcc-4.6.1-20110824.tar.bz2
+5bb1baf5cbb43be9d7c952a00c2c750f  gcc-4.6.1-20110908.tar.bz2


More information about the scm-commits mailing list