public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/gcc] rhel-f41-base: 4.4.1-16
@ 2026-06-29 12:24 Jakub Jelinek
  0 siblings, 0 replies; 2+ messages in thread
From: Jakub Jelinek @ 2026-06-29 12:24 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/gcc
Branch : rhel-f41-base
Commit : b90c67c32ef034e98907602223dc9f8517c7a324
Author : Jakub Jelinek <jakub@fedoraproject.org>
Date   : 2009-09-23T18:21:09+00:00
Stats  : +21/-1505 in 6 file(s)
URL    : https://src.fedoraproject.org/rpms/gcc/c/b90c67c32ef034e98907602223dc9f8517c7a324?branch=rhel-f41-base

Log:
4.4.1-16

---
diff --git a/.cvsignore b/.cvsignore
index 60d2bbf..6aab4c1 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1,2 +1,2 @@
 fastjar-0.97.tar.gz
-gcc-4.4.1-20090918.tar.bz2
+gcc-4.4.1-20090923.tar.bz2

diff --git a/gcc.spec b/gcc.spec
index 240a3b8..6f0f51e 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,9 +1,9 @@
-%global DATE 20090918
-%global SVNREV 151835
+%global DATE 20090923
+%global SVNREV 152092
 %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 15
+%global gcc_release 16
 %global _unpackaged_files_terminate_build 0
 %global multilib_64_archs sparc64 ppc64 s390x x86_64
 %global include_gappletviewer 1
@@ -159,10 +159,7 @@ Patch15: gcc44-raw-string.patch
 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-powerpc-libgcc_s_so.patch
-Patch21: gcc44-pr41175.patch
-Patch22: gcc44-ppc64-aixdesc.patch
+Patch19: gcc44-ppc64-aixdesc.patch
 
 Patch1000: fastjar-0.97-segfault.patch
 
@@ -468,10 +465,7 @@ which are required to compile with the GNAT.
 %if %{build_libstdcxx_docs}
 %patch18 -p0 -b .libstdc++-docs~
 %endif
-%patch19 -p0 -b .vta-cfgexpand-ptr-mode-pr41248~
-%patch20 -p0 -b .powerpc-libgcc_s_so~
-%patch21 -p0 -b .pr41175~
-%patch22 -p0 -b .ppc64-aixdesc~
+%patch19 -p0 -b .ppc64-aixdesc~
 
 # This testcase doesn't compile.
 rm libjava/testsuite/libjava.lang/PR35020*
@@ -1827,6 +1821,20 @@ fi
 %doc rpm.doc/changelogs/libmudflap/ChangeLog*
 
 %changelog
+* Wed Sep 23 2009 Jakub Jelinek <jakub@redhat.com> 4.4.1-16
+- update from gcc-4_4-branch
+  - PRs c/39779, c/41049, debug/41065, libffi/40242, libffi/41443,
+	libgfortran/41328, testsuite/41288
+- VTA backports
+  - PRs bootstrap/41397, bootstrap/41404, bootstrap/41405, debug/41295,
+	debug/41411, debug/41439
+  - fix ICE caused by reload substitution of const_int into zero_extend
+    in debug_insn (#524439)
+- fix altivec vec_cmp{lt,gt} (#524273)
+- fix -mno-sched-epilogue on ppc (#524216, PR target/40473)
+- don't look at MUDFLAP_OPTIONS env var in suid/sgid programs
+  (PR libmudflap/41433)
+
 * Fri Sep 18 2009 Jakub Jelinek <jakub@redhat.com> 4.4.1-15
 - for now disable out of line gpr/fpr saving on ppc with -m64 -Os -mcall-aixdesc
 - fix DW_AT_decl_{file,location} for DW_TAG_structure_type for C structs

diff --git a/gcc44-powerpc-libgcc_s_so.patch b/gcc44-powerpc-libgcc_s_so.patch
deleted file mode 100644
index 0f1674d..0000000
--- a/gcc44-powerpc-libgcc_s_so.patch
+++ /dev/null
@@ -1,136 +0,0 @@
-svn diff -r151567:151568 svn+ssh://gcc.gnu.org/svn/gcc/trunk
-
-2009-09-09  Jakub Jelinek  <jakub@redhat.com>
-
-	* config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
-	New variables.
-	(SHLIB_LINK, SHLIB_INSTALL): Use them.
-	* config/t-slibgcc-libgcc: New file.
-	* config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
-
---- gcc/config.gcc	(revision 151567)
-+++ gcc/config.gcc	(revision 151568)
-@@ -1738,12 +1738,12 @@ powerpc64-*-linux*)
- 		tm_file="rs6000/secureplt.h ${tm_file}"
- 	fi
- 	extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
--	tmake_file="t-dfprules rs6000/t-fprules ${tmake_file} rs6000/t-ppccomm rs6000/t-linux64 rs6000/t-fprules-softfp soft-fp/t-softfp"
-+	tmake_file="t-dfprules rs6000/t-fprules ${tmake_file} t-slibgcc-libgcc rs6000/t-ppccomm rs6000/t-linux64 rs6000/t-fprules-softfp soft-fp/t-softfp"
- 	;;
- powerpc64-*-gnu*)
- 	tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux64.h rs6000/gnu.h"
- 	extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
--	tmake_file="rs6000/t-fprules t-slibgcc-elf-ver t-gnu rs6000/t-linux64 rs6000/t-fprules-softfp soft-fp/t-softfp"
-+	tmake_file="rs6000/t-fprules t-slibgcc-elf-ver t-slibgcc-libgcc t-gnu rs6000/t-linux64 rs6000/t-fprules-softfp soft-fp/t-softfp"
- 	;;
- powerpc-*-darwin*)
- 	extra_options="${extra_options} rs6000/darwin.opt"
-@@ -1820,22 +1820,22 @@ powerpc-*-rtems*)
- powerpc-*-linux*altivec*)
- 	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h"
- 	extra_options="${extra_options} rs6000/sysv4.opt"
--	tmake_file="rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
-+	tmake_file="rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} t-slibgcc-libgcc rs6000/t-ppccomm"
- 	;;
- powerpc-*-linux*spe*)
- 	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxspe.h rs6000/e500.h"
- 	extra_options="${extra_options} rs6000/sysv4.opt"
--	tmake_file="t-dfprules rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
-+	tmake_file="t-dfprules rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} t-slibgcc-libgcc rs6000/t-ppccomm"
- 	;;
- powerpc-*-linux*paired*)
-         tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/750cl.h"
-         extra_options="${extra_options} rs6000/sysv4.opt"
--        tmake_file="rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
-+        tmake_file="rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} t-slibgcc-libgcc rs6000/t-ppccomm"
-         ;;
- powerpc-*-linux*)
- 	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h"
- 	extra_options="${extra_options} rs6000/sysv4.opt"
--	tmake_file="t-dfprules rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
-+	tmake_file="t-dfprules rs6000/t-fprules rs6000/t-ppcos ${tmake_file} t-slibgcc-libgcc rs6000/t-ppccomm"
- 	case ${enable_targets}:${cpu_is_64bit} in
- 	    *powerpc64* | all:* | *:yes)
- 		if test x$cpu_is_64bit = xyes; then
-@@ -1857,14 +1857,14 @@ powerpc-*-linux*)
- powerpc-*-gnu-gnualtivec*)
- 	tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h rs6000/gnu.h"
- 	extra_options="${extra_options} rs6000/sysv4.opt"
--	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
-+	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-slibgcc-libgcc t-gnu rs6000/t-ppccomm"
- 	if test x$enable_threads = xyes; then
- 		thread_file='posix'
- 	fi
- 	;;
- powerpc-*-gnu*)
- 	tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/gnu.h"
--	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
-+	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-slibgcc-libgcc t-gnu rs6000/t-ppccomm"
- 	extra_options="${extra_options} rs6000/sysv4.opt"
- 	if test x$enable_threads = xyes; then
- 		thread_file='posix'
---- gcc/config/t-slibgcc-libgcc	(revision 0)
-+++ gcc/config/t-slibgcc-libgcc	(revision 151568)
-@@ -0,0 +1,32 @@
-+# Copyright (C) 2009 Free Software Foundation, Inc.
-+#
-+# This file is part of GCC.
-+#
-+# GCC 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.
-+#
-+# GCC 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 GCC; see the file COPYING3.  If not see
-+# <http://www.gnu.org/licenses/>.
-+
-+# Instead of creating $(SHLIB_SOLINK) symlink create a GNU ld
-+# linker script which sources in both $(SHLIB_SONAME) and libgcc.a.
-+# This is needed on targets where libgcc.a contains routines that aren't in
-+# $(SHLIB_SONAME) and are needed for shared libraries.
-+
-+SHLIB_MAKE_SOLINK = \
-+	(echo "/* GNU ld script"; \
-+	 echo "   Use the shared library, but some functions are only in"; \
-+	 echo "   the static library.  */"; \
-+	 echo "GROUP ( $(SHLIB_SONAME) libgcc.a )" \
-+	) > $(SHLIB_DIR)/$(SHLIB_SOLINK)
-+SHLIB_INSTALL_SOLINK = \
-+	$(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_SOLINK) \
-+	  $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
---- gcc/config/t-slibgcc-elf-ver	(revision 151567)
-+++ gcc/config/t-slibgcc-elf-ver	(revision 151568)
-@@ -28,6 +28,9 @@ SHLIB_OBJS = @shlib_objs@
- SHLIB_DIR = @multilib_dir@
- SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
- SHLIB_LC = -lc
-+SHLIB_MAKE_SOLINK = $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
-+SHLIB_INSTALL_SOLINK = $(LN_S) $(SHLIB_SONAME) \
-+	$$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
- 
- SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
- 	-Wl,--soname=$(SHLIB_SONAME) \
-@@ -40,7 +43,7 @@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2
- 		$(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
- 	else true; fi && \
- 	mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
--	$(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
-+	$(SHLIB_MAKE_SOLINK)
- # $(slibdir) double quoted to protect it from expansion while building
- # libgcc.mk.  We want this delayed until actual install time.
- SHLIB_INSTALL = \
-@@ -48,7 +51,6 @@ SHLIB_INSTALL = \
- 	$(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_SONAME) \
- 	  $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
- 	rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
--	$(LN_S) $(SHLIB_SONAME) \
--	  $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
-+	$(SHLIB_INSTALL_SOLINK)
- SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
- SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver

diff --git a/gcc44-pr41175.patch b/gcc44-pr41175.patch
deleted file mode 100644
index 56c19af..0000000
--- a/gcc44-pr41175.patch
+++ /dev/null
@@ -1,1205 +0,0 @@
-2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
-	    Jakub Jelinek  <jakub@redhat.com>
-
-	PR target/41175
-	PR target/40677
-	* config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
-	problem.
-	(SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
-	SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
-	(rs6000_savres_strategy): Always save FP registers inline if the
-	target doesn't support hardware double-precision.  Set the above
-	bits in return value when needed.
-	(rs6000_savres_routine_sym): Fix computation for cache selector.
-	Mark the generated symbol as a function.  Rename exitp argument to
-	lr.  Move code for determining the name of the symbol...
-	(rs6000_savres_routine_name): ...here.  New function.  Add cases for
-	getting the names right on AIX and 64-bit Linux.
-	(savres_routine_name): New variable.
-	(rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
-	lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
-	on what the target routine uses as a base register.  If savep && lr
-	describe saving of r0 into memory slot.
-	(rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
-	line calls for AIX ABI.
-	(rs6000_output_function_prologue): Use rs6000_savres_routine_name to
-	determine FP save/restore functions.
-	(rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
-	frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
-	gen_addsi3.
-	(rs6000_emit_epilogue): Adjust computation of restore_lr.
-	Duplicate restoration of LR and execute the appropriate one
-	depending on whether GPRs are being restored inline.  Set r11 from
-	offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
-	r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
-	Fix out of line calls for AIX ABI.
-	* config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
-	New insn.
-	* config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
-	register 11.
-	(*restore_gpregs_spe): Likewise.
-	(*return_and_restore_gpregs_spe): Likewise.
-	* config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
-	Define to empty string unconditionally.
-	* config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
-	Define to empty string unconditionally.
-	(GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
-	!TARGET_64BIT.
-
-	* gcc.target/powerpc/pr41175.c: New test.
-
---- gcc/testsuite/gcc.target/powerpc/pr41175.c	(revision 0)
-+++ gcc/testsuite/gcc.target/powerpc/pr41175.c	(revision 151729)
-@@ -0,0 +1,461 @@
-+/* PR target/41175 */
-+/* { dg-do run } */
-+/* { dg-options "-Os" } */
-+
-+#define X2(n) X1(n##0) X1(n##1)
-+#define X4(n) X2(n##0) X2(n##1)
-+#define X8(n) X4(n##0) X4(n##1)
-+
-+#ifndef __SPE__
-+#define FLOAT_REG_CONSTRAINT "f"
-+#else
-+#define FLOAT_REG_CONSTRAINT "r"
-+#endif
-+
-+volatile int ll;
-+
-+__attribute__((noinline)) void
-+foo (void)
-+{
-+  asm volatile ("" : : : "memory");
-+}
-+
-+__attribute__((noinline)) void
-+bar (char *p)
-+{
-+  asm volatile ("" : : "r" (p) : "memory");
-+}
-+
-+__attribute__((noinline)) void
-+f1 (void)
-+{
-+  int mem;
-+#undef X1
-+#define X1(n) int gpr##n = 0;
-+  X8(a) X8(b) X8(c)
-+#undef X1
-+#define X1(n) "+r" (gpr##n),
-+  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
-+  foo ();
-+#undef X1
-+#define X1(n) "r" (gpr##n),
-+  asm volatile ("" : : X8(a) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(b) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(c) "m" (mem) : "memory");
-+}
-+
-+__attribute__((noinline)) void
-+f2 (void)
-+{
-+  int mem;
-+#undef X1
-+#define X1(n) int gpr##n = 0;
-+  X8(a) X8(b) X8(c)
-+#undef X1
-+#define X1(n) "+r" (gpr##n),
-+  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
-+  char *pp = __builtin_alloca (ll);
-+  bar (pp);
-+#undef X1
-+#define X1(n) "r" (gpr##n),
-+  asm volatile ("" : : X8(a) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(b) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(c) "m" (mem) : "memory");
-+}
-+
-+__attribute__((noinline)) void
-+f3 (void)
-+{
-+  int mem;
-+#undef X1
-+#define X1(n) int gpr##n = 0;
-+  X8(a) X8(b) X8(c)
-+#undef X1
-+#define X1(n) "+r" (gpr##n),
-+  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "r" (gpr##n),
-+  asm volatile ("" : : X8(a) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(b) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(c) "m" (mem) : "memory");
-+}
-+
-+#ifndef __NO_FPRS__
-+__attribute__((noinline)) void
-+f4 (void)
-+{
-+  int mem;
-+#undef X1
-+#define X1(n) int gpr##n = 0;
-+  X8(a) X8(b) X8(c)
-+#undef X1
-+#define X1(n) double fpr##n = 0.0;
-+  X4(d)
-+#undef X1
-+#define X1(n) "+r" (gpr##n),
-+  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : X4(d) "=m" (mem) : : "memory");
-+  foo ();
-+#undef X1
-+#define X1(n) "r" (gpr##n),
-+  asm volatile ("" : : X8(a) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(b) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(c) "m" (mem) : "memory");
-+#undef X1
-+#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : : X4(d) "m" (mem) : "memory");
-+}
-+
-+__attribute__((noinline)) void
-+f5 (void)
-+{
-+  int mem;
-+#undef X1
-+#define X1(n) int gpr##n = 0;
-+  X8(a) X8(b) X8(c)
-+#undef X1
-+#define X1(n) double fpr##n = 0.0;
-+  X4(d)
-+#undef X1
-+#define X1(n) "+r" (gpr##n),
-+  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : X4(d) "=m" (mem) : : "memory");
-+  char *pp = __builtin_alloca (ll);
-+  bar (pp);
-+#undef X1
-+#define X1(n) "r" (gpr##n),
-+  asm volatile ("" : : X8(a) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(b) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(c) "m" (mem) : "memory");
-+#undef X1
-+#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : : X4(d) "m" (mem) : "memory");
-+}
-+
-+__attribute__((noinline)) void
-+f6 (void)
-+{
-+  int mem;
-+#undef X1
-+#define X1(n) int gpr##n = 0;
-+  X8(a) X8(b) X8(c)
-+#undef X1
-+#define X1(n) double fpr##n = 0.0;
-+  X4(d)
-+#undef X1
-+#define X1(n) "+r" (gpr##n),
-+  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : X4(d) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "r" (gpr##n),
-+  asm volatile ("" : : X8(a) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(b) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(c) "m" (mem) : "memory");
-+#undef X1
-+#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : : X4(d) "m" (mem) : "memory");
-+}
-+
-+__attribute__((noinline)) void
-+f7 (void)
-+{
-+  int mem;
-+#undef X1
-+#define X1(n) int gpr##n = 0;
-+  X8(a) X8(b) X8(c)
-+#undef X1
-+#define X1(n) double fpr##n = 0.0;
-+  X2(d)
-+#undef X1
-+#define X1(n) "+r" (gpr##n),
-+  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : X2(d) "=m" (mem) : : "memory");
-+  foo ();
-+#undef X1
-+#define X1(n) "r" (gpr##n),
-+  asm volatile ("" : : X8(a) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(b) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(c) "m" (mem) : "memory");
-+#undef X1
-+#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : : X2(d) "m" (mem) : "memory");
-+}
-+
-+__attribute__((noinline)) void
-+f8 (void)
-+{
-+  int mem;
-+#undef X1
-+#define X1(n) int gpr##n = 0;
-+  X8(a) X8(b) X8(c)
-+#undef X1
-+#define X1(n) double fpr##n = 0.0;
-+  X2(d)
-+#undef X1
-+#define X1(n) "+r" (gpr##n),
-+  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : X2(d) "=m" (mem) : : "memory");
-+  char *pp = __builtin_alloca (ll);
-+  bar (pp);
-+#undef X1
-+#define X1(n) "r" (gpr##n),
-+  asm volatile ("" : : X8(a) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(b) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(c) "m" (mem) : "memory");
-+#undef X1
-+#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : : X2(d) "m" (mem) : "memory");
-+}
-+
-+__attribute__((noinline)) void
-+f9 (void)
-+{
-+  int mem;
-+#undef X1
-+#define X1(n) int gpr##n = 0;
-+  X8(a) X8(b) X8(c)
-+#undef X1
-+#define X1(n) double fpr##n = 0.0;
-+  X2(d)
-+#undef X1
-+#define X1(n) "+r" (gpr##n),
-+  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(c) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : X2(d) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "r" (gpr##n),
-+  asm volatile ("" : : X8(a) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(b) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(c) "m" (mem) : "memory");
-+#undef X1
-+#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : : X2(d) "m" (mem) : "memory");
-+}
-+
-+__attribute__((noinline)) void
-+f10 (void)
-+{
-+  int mem;
-+#undef X1
-+#define X1(n) int gpr##n = 0;
-+  X8(a) X8(b) X4(c)
-+#undef X1
-+#define X1(n) double fpr##n = 0.0;
-+  X1(d)
-+#undef X1
-+#define X1(n) "+r" (gpr##n),
-+  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
-+  asm volatile ("" : X4(c) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : X1(d) "=m" (mem) : : "memory");
-+  foo ();
-+#undef X1
-+#define X1(n) "r" (gpr##n),
-+  asm volatile ("" : : X8(a) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(b) "m" (mem) : "memory");
-+  asm volatile ("" : : X4(c) "m" (mem) : "memory");
-+#undef X1
-+#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : : X1(d) "m" (mem) : "memory");
-+}
-+
-+__attribute__((noinline)) void
-+f11 (void)
-+{
-+  int mem;
-+#undef X1
-+#define X1(n) int gpr##n = 0;
-+  X8(a) X8(b) X4(c)
-+#undef X1
-+#define X1(n) double fpr##n = 0.0;
-+  X1(d)
-+#undef X1
-+#define X1(n) "+r" (gpr##n),
-+  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
-+  asm volatile ("" : X4(c) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : X1(d) "=m" (mem) : : "memory");
-+  char *pp = __builtin_alloca (ll);
-+  bar (pp);
-+#undef X1
-+#define X1(n) "r" (gpr##n),
-+  asm volatile ("" : : X8(a) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(b) "m" (mem) : "memory");
-+  asm volatile ("" : : X4(c) "m" (mem) : "memory");
-+#undef X1
-+#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : : X1(d) "m" (mem) : "memory");
-+}
-+
-+__attribute__((noinline)) void
-+f12 (void)
-+{
-+  int mem;
-+#undef X1
-+#define X1(n) int gpr##n = 0;
-+  X8(a) X8(b) X4(c)
-+#undef X1
-+#define X1(n) double fpr##n = 0.0;
-+  X1(d)
-+#undef X1
-+#define X1(n) "+r" (gpr##n),
-+  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
-+  asm volatile ("" : X4(c) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : X1(d) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "r" (gpr##n),
-+  asm volatile ("" : : X8(a) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(b) "m" (mem) : "memory");
-+  asm volatile ("" : : X4(c) "m" (mem) : "memory");
-+#undef X1
-+#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : : X1(d) "m" (mem) : "memory");
-+}
-+
-+__attribute__((noinline)) void
-+f13 (void)
-+{
-+  int mem;
-+#undef X1
-+#define X1(n) int gpr##n = 0;
-+  X8(a) X8(b) X2(c)
-+#undef X1
-+#define X1(n) double fpr##n = 0.0;
-+  X8(d)
-+#undef X1
-+#define X1(n) "+r" (gpr##n),
-+  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
-+  asm volatile ("" : X2(c) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : X8(d) "=m" (mem) : : "memory");
-+  foo ();
-+#undef X1
-+#define X1(n) "r" (gpr##n),
-+  asm volatile ("" : : X8(a) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(b) "m" (mem) : "memory");
-+  asm volatile ("" : : X2(c) "m" (mem) : "memory");
-+#undef X1
-+#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : : X8(d) "m" (mem) : "memory");
-+}
-+
-+__attribute__((noinline)) void
-+f14 (void)
-+{
-+  int mem;
-+#undef X1
-+#define X1(n) int gpr##n = 0;
-+  X8(a) X8(b) X2(c)
-+#undef X1
-+#define X1(n) double fpr##n = 0.0;
-+  X8(d)
-+#undef X1
-+#define X1(n) "+r" (gpr##n),
-+  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
-+  asm volatile ("" : X2(c) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : X8(d) "=m" (mem) : : "memory");
-+  char *pp = __builtin_alloca (ll);
-+  bar (pp);
-+#undef X1
-+#define X1(n) "r" (gpr##n),
-+  asm volatile ("" : : X8(a) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(b) "m" (mem) : "memory");
-+  asm volatile ("" : : X2(c) "m" (mem) : "memory");
-+#undef X1
-+#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : : X8(d) "m" (mem) : "memory");
-+}
-+
-+__attribute__((noinline)) void
-+f15 (void)
-+{
-+  int mem;
-+#undef X1
-+#define X1(n) int gpr##n = 0;
-+  X8(a) X8(b) X2(c)
-+#undef X1
-+#define X1(n) double fpr##n = 0.0;
-+  X8(d)
-+#undef X1
-+#define X1(n) "+r" (gpr##n),
-+  asm volatile ("" : X8(a) "=m" (mem) : : "memory");
-+  asm volatile ("" : X8(b) "=m" (mem) : : "memory");
-+  asm volatile ("" : X2(c) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "+" FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : X8(d) "=m" (mem) : : "memory");
-+#undef X1
-+#define X1(n) "r" (gpr##n),
-+  asm volatile ("" : : X8(a) "m" (mem) : "memory");
-+  asm volatile ("" : : X8(b) "m" (mem) : "memory");
-+  asm volatile ("" : : X2(c) "m" (mem) : "memory");
-+#undef X1
-+#define X1(n) FLOAT_REG_CONSTRAINT (fpr##n),
-+  asm volatile ("" : : X8(d) "m" (mem) : "memory");
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+  ll = 60;
-+  f1 ();
-+  f2 ();
-+  f3 ();
-+#ifndef __NO_FPRS__
-+  f4 ();
-+  f5 ();
-+  f6 ();
-+  f7 ();
-+  f8 ();
-+  f9 ();
-+  f10 ();
-+  f11 ();
-+  f12 ();
-+  f13 ();
-+  f14 ();
-+  f15 ();
-+#endif
-+  return 0;
-+}
---- gcc/config/rs6000/spe.md	(revision 151728)
-+++ gcc/config/rs6000/spe.md	(revision 151729)
-@@ -3156,9 +3156,9 @@ (define_insn "*save_gpregs_spe"
-   [(match_parallel 0 "any_parallel_operand"
- 		   [(clobber (reg:P 65))
- 		    (use (match_operand:P 1 "symbol_ref_operand" "s"))
--		    (use (match_operand:P 2 "gpc_reg_operand" "r"))
--		    (set (match_operand:V2SI 3 "memory_operand" "=m")
--			 (match_operand:V2SI 4 "gpc_reg_operand" "r"))])]
-+		    (use (reg:P 11))
-+		    (set (match_operand:V2SI 2 "memory_operand" "=m")
-+			 (match_operand:V2SI 3 "gpc_reg_operand" "r"))])]
-   "TARGET_SPE_ABI"
-   "bl %z1"
-   [(set_attr "type" "branch")
-@@ -3168,9 +3168,9 @@ (define_insn "*restore_gpregs_spe"
-  [(match_parallel 0 "any_parallel_operand"
- 		  [(clobber (reg:P 65))
- 		   (use (match_operand:P 1 "symbol_ref_operand" "s"))
--		   (use (match_operand:P 2 "gpc_reg_operand" "r"))
--		   (set (match_operand:V2SI 3 "gpc_reg_operand" "=r")
--			(match_operand:V2SI 4 "memory_operand" "m"))])]
-+		   (use (reg:P 11))
-+		   (set (match_operand:V2SI 2 "gpc_reg_operand" "=r")
-+			(match_operand:V2SI 3 "memory_operand" "m"))])]
-  "TARGET_SPE_ABI"
-  "bl %z1"
-  [(set_attr "type" "branch")
-@@ -3181,9 +3181,9 @@ (define_insn "*return_and_restore_gpregs
- 		  [(return)
- 		   (clobber (reg:P 65))
- 		   (use (match_operand:P 1 "symbol_ref_operand" "s"))
--		   (use (match_operand:P 2 "gpc_reg_operand" "r"))
--		   (set (match_operand:V2SI 3 "gpc_reg_operand" "=r")
--			(match_operand:V2SI 4 "memory_operand" "m"))])]
-+		   (use (reg:P 11))
-+		   (set (match_operand:V2SI 2 "gpc_reg_operand" "=r")
-+			(match_operand:V2SI 3 "memory_operand" "m"))])]
-  "TARGET_SPE_ABI"
-  "b %z1"
-  [(set_attr "type" "branch")
---- gcc/config/rs6000/linux64.h	(revision 151728)
-+++ gcc/config/rs6000/linux64.h	(revision 151729)
-@@ -437,11 +437,11 @@ extern int dot_symbols;
- #undef  SAVE_FP_PREFIX
- #define SAVE_FP_PREFIX (TARGET_64BIT ? "._savef" : "_savefpr_")
- #undef  SAVE_FP_SUFFIX
--#define SAVE_FP_SUFFIX (TARGET_64BIT ? "" : "_l")
-+#define SAVE_FP_SUFFIX ""
- #undef  RESTORE_FP_PREFIX
- #define RESTORE_FP_PREFIX (TARGET_64BIT ? "._restf" : "_restfpr_")
- #undef  RESTORE_FP_SUFFIX
--#define RESTORE_FP_SUFFIX (TARGET_64BIT ? "" : "_l")
-+#define RESTORE_FP_SUFFIX ""
- 
- /* Dwarf2 debugging.  */
- #undef  PREFERRED_DEBUGGING_TYPE
---- gcc/config/rs6000/rs6000.c	(revision 151728)
-+++ gcc/config/rs6000/rs6000.c	(revision 151729)
-@@ -17980,7 +17980,8 @@ static bool
- no_global_regs_above (int first, bool gpr)
- {
-   int i;
--  for (i = first; i < gpr ? 32 : 64 ; i++)
-+  int last = gpr ? 32 : 64;
-+  for (i = first; i < last; i++)
-     if (global_regs[i])
-       return false;
-   return true;
-@@ -17997,54 +17998,136 @@ no_global_regs_above (int first, bool gp
- 
- static GTY(()) rtx savres_routine_syms[N_SAVRES_REGISTERS][8];
- 
--/* Return the symbol for an out-of-line register save/restore routine.
-+/* Temporary holding space for an out-of-line register save/restore
-+   routine name.  */
-+static char savres_routine_name[30];
-+
-+/* Return the name for an out-of-line register save/restore routine.
-+   We are saving/restoring GPRs if GPR is true.  */
-+
-+static char *
-+rs6000_savres_routine_name (rs6000_stack_t *info, int regno,
-+			    bool savep, bool gpr, bool lr)
-+{
-+  const char *prefix = "";
-+  const char *suffix = "";
-+
-+  /* Different targets are supposed to define
-+     {SAVE,RESTORE}_FP_{PREFIX,SUFFIX} with the idea that the needed
-+     routine name could be defined with:
-+
-+     sprintf (name, "%s%d%s", SAVE_FP_PREFIX, regno, SAVE_FP_SUFFIX)
-+
-+     This is a nice idea in practice, but in reality, things are
-+     complicated in several ways:
-+
-+     - ELF targets have save/restore routines for GPRs.
-+
-+     - SPE targets use different prefixes for 32/64-bit registers, and
-+       neither of them fit neatly in the FOO_{PREFIX,SUFFIX} regimen.
-+
-+     - PPC64 ELF targets have routines for save/restore of GPRs that
-+       differ in what they do with the link register, so having a set
-+       prefix doesn't work.  (We only use one of the save routines at
-+       the moment, though.)
-+
-+     - PPC32 elf targets have "exit" versions of the restore routines
-+       that restore the link register and can save some extra space.
-+       These require an extra suffix.  (There are also "tail" versions
-+       of the restore routines and "GOT" versions of the save routines,
-+       but we don't generate those at present.  Same problems apply,
-+       though.)
-+
-+     We deal with all this by synthesizing our own prefix/suffix and
-+     using that for the simple sprintf call shown above.  */
-+  if (TARGET_SPE)
-+    {
-+      /* No floating point saves on the SPE.  */
-+      gcc_assert (gpr);
-+
-+      if (savep)
-+	prefix = info->spe_64bit_regs_used ? "_save64gpr_" : "_save32gpr_";
-+      else
-+	prefix = info->spe_64bit_regs_used ? "_rest64gpr_" : "_rest32gpr_";
-+
-+      if (lr)
-+	suffix = "_x";
-+    }
-+  else if (DEFAULT_ABI == ABI_V4)
-+    {
-+      if (TARGET_64BIT)
-+	goto aix_names;
-+
-+      if (gpr)
-+	prefix = savep ? "_savegpr_" : "_restgpr_";
-+      else
-+	prefix = savep ? "_savefpr_" : "_restfpr_";
-+
-+      if (lr)
-+	suffix = "_x";
-+    }
-+  else if (DEFAULT_ABI == ABI_AIX)
-+    {
-+#ifndef POWERPC_LINUX
-+      /* No out-of-line save/restore routines for GPRs on AIX.  */
-+      gcc_assert (!TARGET_AIX || !gpr);
-+#endif
-+
-+    aix_names:
-+      if (gpr)
-+	prefix = (savep
-+		  ? (lr ? "_savegpr0_" : "_savegpr1_")
-+		  : (lr ? "_restgpr0_" : "_restgpr1_"));
-+#ifdef POWERPC_LINUX
-+      else if (lr)
-+	prefix = (savep ? "_savefpr_" : "_restfpr_");
-+#endif
-+      else
-+	{
-+	  prefix = savep ? SAVE_FP_PREFIX : RESTORE_FP_PREFIX;
-+	  suffix = savep ? SAVE_FP_SUFFIX : RESTORE_FP_SUFFIX;
-+	}
-+    }
-+  else if (DEFAULT_ABI == ABI_DARWIN)
-+    sorry ("Out-of-line save/restore routines not supported on Darwin");
-+
-+  sprintf (savres_routine_name, "%s%d%s", prefix, regno, suffix);
-+
-+  return savres_routine_name;
-+}
-+
-+/* Return an RTL SYMBOL_REF for an out-of-line register save/restore routine.
-    We are saving/restoring GPRs if GPR is true.  */
- 
- static rtx
--rs6000_savres_routine_sym (rs6000_stack_t *info, bool savep, bool gpr, bool exitp)
-+rs6000_savres_routine_sym (rs6000_stack_t *info, bool savep,
-+			   bool gpr, bool lr)
- {
-   int regno = gpr ? info->first_gp_reg_save : (info->first_fp_reg_save - 32);
-   rtx sym;
-   int select = ((savep ? 1 : 0) << 2
--		| (gpr
--		   /* On the SPE, we never have any FPRs, but we do have
--		      32/64-bit versions of the routines.  */
--		   ? (TARGET_SPE_ABI && info->spe_64bit_regs_used ? 1 : 0)
--		   : 0) << 1
--		| (exitp ? 1: 0));
-+		| ((TARGET_SPE_ABI
-+		    /* On the SPE, we never have any FPRs, but we do have
-+		       32/64-bit versions of the routines.  */
-+		    ? (info->spe_64bit_regs_used ? 1 : 0)
-+		    : (gpr ? 1 : 0)) << 1)
-+		| (lr ? 1: 0));
- 
-   /* Don't generate bogus routine names.  */
--  gcc_assert (FIRST_SAVRES_REGISTER <= regno && regno <= LAST_SAVRES_REGISTER);
-+  gcc_assert (FIRST_SAVRES_REGISTER <= regno
-+	      && regno <= LAST_SAVRES_REGISTER);
- 
-   sym = savres_routine_syms[regno-FIRST_SAVRES_REGISTER][select];
- 
-   if (sym == NULL)
-     {
--      char name[30];
--      const char *action;
--      const char *regkind;
--      const char *exit_suffix;
--
--      action = savep ? "save" : "rest";
--
--      /* SPE has slightly different names for its routines depending on
--	 whether we are saving 32-bit or 64-bit registers.  */
--      if (TARGET_SPE_ABI)
--	{
--	  /* No floating point saves on the SPE.  */
--	  gcc_assert (gpr);
--
--	  regkind = info->spe_64bit_regs_used ? "64gpr" : "32gpr";
--	}
--      else
--	regkind = gpr ? "gpr" : "fpr";
--
--      exit_suffix = exitp ? "_x" : "";
-+      char *name;
- 
--      sprintf (name, "_%s%s_%d%s", action, regkind, regno, exit_suffix);
-+      name = rs6000_savres_routine_name (info, regno, savep, gpr, lr);
- 
-       sym = savres_routine_syms[regno-FIRST_SAVRES_REGISTER][select]
- 	= gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
-+      SYMBOL_REF_FLAGS (sym) |= SYMBOL_FLAG_FUNCTION;
-     }
- 
-   return sym;
-@@ -18072,8 +18155,11 @@ 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)));
-+	{
-+	  rtx dest_reg = savres ? gen_rtx_REG (Pmode, 11) : sp_reg_rtx;
-+	  return emit_insn (gen_add3_insn (dest_reg, frame_reg_rtx,
-+					   GEN_INT (sp_offset)));
-+	}
-       else if (!savres)
- 	return emit_move_insn (sp_reg_rtx, frame_reg_rtx);
-     }
-@@ -18102,7 +18188,7 @@ static rtx
- rs6000_make_savres_rtx (rs6000_stack_t *info,
- 			rtx frame_reg_rtx, int save_area_offset,
- 			enum machine_mode reg_mode,
--			bool savep, bool gpr, bool exitp)
-+			bool savep, bool gpr, bool lr)
- {
-   int i;
-   int offset, start_reg, end_reg, n_regs;
-@@ -18116,20 +18202,21 @@ rs6000_make_savres_rtx (rs6000_stack_t *
- 	       : info->first_fp_reg_save);
-   end_reg = gpr ? 32 : 64;
-   n_regs = end_reg - start_reg;
--  p = rtvec_alloc ((exitp ? 4 : 3) + n_regs);
-+  p = rtvec_alloc ((lr ? 4 : 3) + n_regs);
- 
--  /* If we're saving registers, then we should never say we're exiting.	 */
--  gcc_assert ((savep && !exitp) || !savep);
--
--  if (exitp)
-+  if (!savep && lr)
-     RTVEC_ELT (p, offset++) = gen_rtx_RETURN (VOIDmode);
- 
-   RTVEC_ELT (p, offset++)
-     = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (Pmode, 65));
- 
--  sym = rs6000_savres_routine_sym (info, savep, gpr, exitp);
-+  sym = rs6000_savres_routine_sym (info, savep, gpr, lr);
-   RTVEC_ELT (p, offset++) = gen_rtx_USE (VOIDmode, sym);
--  RTVEC_ELT (p, offset++) = gen_rtx_USE (VOIDmode, gen_rtx_REG (Pmode, 11));
-+  RTVEC_ELT (p, offset++)
-+    = gen_rtx_USE (VOIDmode,
-+		   gen_rtx_REG (Pmode, DEFAULT_ABI != ABI_AIX ? 11
-+				       : gpr && !lr ? 12
-+				       : 1));
- 
-   for (i = 0; i < end_reg - start_reg; i++)
-     {
-@@ -18144,6 +18231,16 @@ rs6000_make_savres_rtx (rs6000_stack_t *
- 					       savep ? reg : mem);
-     }
- 
-+  if (savep && lr)
-+    {
-+      rtx addr, reg, mem;
-+      reg = gen_rtx_REG (Pmode, 0);
-+      addr = gen_rtx_PLUS (Pmode, frame_reg_rtx,
-+			   GEN_INT (info->lr_save_offset));
-+      mem = gen_frame_mem (Pmode, addr);
-+      RTVEC_ELT (p, i + offset) = gen_rtx_SET (VOIDmode, mem, reg);
-+    }
-+
-   return gen_rtx_PARALLEL (VOIDmode, p);
- }
- 
-@@ -18164,7 +18261,10 @@ rs6000_reg_live_or_pic_offset_p (int reg
- enum {
-   SAVRES_MULTIPLE = 0x1,
-   SAVRES_INLINE_FPRS = 0x2,
--  SAVRES_INLINE_GPRS = 0x4
-+  SAVRES_INLINE_GPRS = 0x4,
-+  SAVRES_NOINLINE_GPRS_SAVES_LR = 0x8,
-+  SAVRES_NOINLINE_FPRS_SAVES_LR = 0x10,
-+  SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR = 0x20
- };
- 
- /* Determine the strategy for savings/restoring registers.  */
-@@ -18179,6 +18279,7 @@ rs6000_savres_strategy (rs6000_stack_t *
-   bool savres_gprs_inline;
-   bool noclobber_global_gprs
-     = no_global_regs_above (info->first_gp_reg_save, /*gpr=*/true);
-+  int strategy;
- 
-   using_multiple_p = (TARGET_MULTIPLE && ! TARGET_POWERPC64
- 		      && (!TARGET_SPE_ABI
-@@ -18198,6 +18299,10 @@ rs6000_savres_strategy (rs6000_stack_t *
- 			|| info->first_fp_reg_save == 64
- 			|| !no_global_regs_above (info->first_fp_reg_save,
- 						  /*gpr=*/false)
-+			/* The out-of-line FP routines use
-+			   double-precision stores; we can't use those
-+			   routines if we don't have such stores.  */
-+			|| (TARGET_HARD_FLOAT && !TARGET_DOUBLE_FLOAT)
- 			|| FP_SAVE_INLINE (info->first_fp_reg_save));
-   savres_gprs_inline = (common
- 			/* Saving CR interferes with the exit routines
-@@ -18235,9 +18340,22 @@ rs6000_savres_strategy (rs6000_stack_t *
- 	savres_gprs_inline = savres_gprs_inline || using_multiple_p;
-     }
- 
--  return (using_multiple_p
--	  | (savres_fprs_inline << 1)
--	  | (savres_gprs_inline << 2));
-+  strategy = (using_multiple_p
-+	      | (savres_fprs_inline << 1)
-+	      | (savres_gprs_inline << 2));
-+#ifdef POWERPC_LINUX
-+  if (TARGET_64BIT)
-+    {
-+      if (!savres_fprs_inline)
-+	strategy |= SAVRES_NOINLINE_FPRS_SAVES_LR;
-+      else if (!savres_gprs_inline && info->first_fp_reg_save == 64)
-+	strategy |= SAVRES_NOINLINE_GPRS_SAVES_LR;
-+    }
-+#else
-+  if (TARGET_AIX && !savres_fprs_inline)
-+    strategy |= SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR;
-+#endif
-+  return strategy;
- }
- 
- /* Emit function prologue as insns.  */
-@@ -18259,7 +18377,7 @@ rs6000_emit_prologue (void)
-   int using_store_multiple;
-   int using_static_chain_p = (cfun->static_chain_decl != NULL_TREE
-                               && df_regs_ever_live_p (STATIC_CHAIN_REGNUM)
--                              && !call_used_regs[STATIC_CHAIN_REGNUM]);
-+			      && call_used_regs[STATIC_CHAIN_REGNUM]);
-   HOST_WIDE_INT sp_offset = 0;
- 
-   if (TARGET_FIX_AND_CONTINUE)
-@@ -18444,24 +18562,30 @@ rs6000_emit_prologue (void)
- 			     gen_rtx_REG (Pmode, LR_REGNO));
-       RTX_FRAME_RELATED_P (insn) = 1;
- 
--      addr = gen_rtx_PLUS (Pmode, frame_reg_rtx,
-+      if (!(strategy & (SAVRES_NOINLINE_GPRS_SAVES_LR
-+			| SAVRES_NOINLINE_FPRS_SAVES_LR)))
-+	{
-+	  addr = gen_rtx_PLUS (Pmode, frame_reg_rtx,
- 			       GEN_INT (info->lr_save_offset + sp_offset));
--      reg = gen_rtx_REG (Pmode, 0);
--      mem = gen_rtx_MEM (Pmode, addr);
--      /* This should not be of rs6000_sr_alias_set, because of
--	 __builtin_return_address.  */
-+	  reg = gen_rtx_REG (Pmode, 0);
-+	  mem = gen_rtx_MEM (Pmode, addr);
-+	  /* This should not be of rs6000_sr_alias_set, because of
-+	     __builtin_return_address.  */
- 
--      insn = emit_move_insn (mem, reg);
--      rs6000_frame_related (insn, frame_ptr_rtx, info->total_size,
--			    NULL_RTX, NULL_RTX);
-+	  insn = emit_move_insn (mem, reg);
-+	  rs6000_frame_related (insn, frame_ptr_rtx, info->total_size,
-+				NULL_RTX, NULL_RTX);
-+	}
-     }
- 
--  /* If we need to save CR, put it into r12.  */
-+  /* If we need to save CR, put it into r12 or r11.  */
-   if (!WORLD_SAVE_P (info) && info->cr_save_p && frame_reg_rtx != frame_ptr_rtx)
-     {
-       rtx set;
- 
--      cr_save_rtx = gen_rtx_REG (SImode, 12);
-+      cr_save_rtx
-+	= gen_rtx_REG (SImode, DEFAULT_ABI == ABI_AIX && !saving_GPRs_inline
-+		       ? 11 : 12);
-       insn = emit_insn (gen_movesi_from_cr (cr_save_rtx));
-       RTX_FRAME_RELATED_P (insn) = 1;
-       /* Now, there's no way that dwarf2out_frame_debug_expr is going
-@@ -18500,7 +18624,9 @@ rs6000_emit_prologue (void)
- 				    info->fp_save_offset + sp_offset,
- 				    DFmode,
- 				    /*savep=*/true, /*gpr=*/false,
--				    /*exitp=*/false);
-+				    /*lr=*/(strategy
-+					    & SAVRES_NOINLINE_FPRS_SAVES_LR)
-+					   != 0);
-       insn = emit_insn (par);
-       rs6000_frame_related (insn, frame_ptr_rtx, info->total_size,
- 			    NULL_RTX, NULL_RTX);
-@@ -18596,7 +18722,7 @@ rs6000_emit_prologue (void)
- 	  par = rs6000_make_savres_rtx (info, gen_rtx_REG (Pmode, 11),
- 					0, reg_mode,
- 					/*savep=*/true, /*gpr=*/true,
--					/*exitp=*/false);
-+					/*lr=*/false);
- 	  insn = emit_insn (par);
- 	  rs6000_frame_related (insn, frame_ptr_rtx, info->total_size,
- 				NULL_RTX, NULL_RTX);
-@@ -18611,23 +18737,23 @@ rs6000_emit_prologue (void)
-     {
-       rtx par;
- 
--      /* Need to adjust r11 if we saved any FPRs.  */
-+      /* Need to adjust r11 (r12) if we saved any FPRs.  */
-       if (info->first_fp_reg_save != 64)
-         {
--          rtx r11 = gen_rtx_REG (reg_mode, 11);
--          rtx offset = GEN_INT (info->total_size
-+	  rtx dest_reg = gen_rtx_REG (reg_mode, DEFAULT_ABI == ABI_AIX
-+				      ? 12 : 11);
-+	  rtx offset = GEN_INT (sp_offset
-                                 + (-8 * (64-info->first_fp_reg_save)));
--          rtx ptr_reg = (sp_reg_rtx == frame_reg_rtx
--                         ? sp_reg_rtx : r11);
--
--	  emit_insn (gen_add3_insn (r11, ptr_reg, offset));
-+	  emit_insn (gen_add3_insn (dest_reg, frame_reg_rtx, offset));
-         }
- 
-       par = rs6000_make_savres_rtx (info, frame_reg_rtx,
- 				    info->gp_save_offset + sp_offset,
- 				    reg_mode,
- 				    /*savep=*/true, /*gpr=*/true,
--				    /*exitp=*/false);
-+				    /*lr=*/(strategy
-+					    & SAVRES_NOINLINE_GPRS_SAVES_LR)
-+					   != 0);
-       insn = emit_insn (par);
-       rs6000_frame_related (insn, frame_ptr_rtx, info->total_size,
- 			    NULL_RTX, NULL_RTX);
-@@ -18907,9 +19033,18 @@ rs6000_output_function_prologue (FILE *f
-      fp values.  */
-   if (info->first_fp_reg_save < 64
-       && !FP_SAVE_INLINE (info->first_fp_reg_save))
--    fprintf (file, "\t.extern %s%d%s\n\t.extern %s%d%s\n",
--	     SAVE_FP_PREFIX, info->first_fp_reg_save - 32, SAVE_FP_SUFFIX,
--	     RESTORE_FP_PREFIX, info->first_fp_reg_save - 32, RESTORE_FP_SUFFIX);
-+    {
-+      char *name;
-+      int regno = info->first_fp_reg_save - 32;
-+
-+      name = rs6000_savres_routine_name (info, regno, /*savep=*/true,
-+					 /*gpr=*/false, /*lr=*/false);
-+      fprintf (file, "\t.extern %s\n", name);
-+
-+      name = rs6000_savres_routine_name (info, regno, /*savep=*/false,
-+					 /*gpr=*/false, /*lr=*/true);
-+      fprintf (file, "\t.extern %s\n", name);
-+    }
- 
-   /* Write .extern for AIX common mode routines, if needed.  */
-   if (! TARGET_POWER && ! TARGET_POWERPC && ! common_mode_defined)
-@@ -19035,6 +19170,7 @@ rs6000_emit_epilogue (int sibcall)
-   rtx frame_reg_rtx = sp_reg_rtx;
-   rtx cfa_restores = NULL_RTX;
-   rtx insn;
-+  rtx cr_save_reg = NULL_RTX;
-   enum machine_mode reg_mode = Pmode;
-   int reg_size = TARGET_32BIT ? 4 : 8;
-   int i;
-@@ -19068,8 +19204,10 @@ rs6000_emit_epilogue (int sibcall)
- 				 || (cfun->calls_alloca
- 				     && !frame_pointer_needed));
-   restore_lr = (info->lr_save_p
--		&& restoring_GPRs_inline
--		&& restoring_FPRs_inline);
-+		&& (restoring_FPRs_inline
-+		    || (strategy & SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR))
-+		&& (restoring_GPRs_inline
-+		    || info->first_fp_reg_save < 64));
- 
-   if (WORLD_SAVE_P (info))
-     {
-@@ -19356,7 +19494,7 @@ rs6000_emit_epilogue (int sibcall)
- 
-   /* Get the old lr if we saved it.  If we are restoring registers
-      out-of-line, then the out-of-line routines can do this for us.  */
--  if (restore_lr)
-+  if (restore_lr && restoring_GPRs_inline)
-     {
-       rtx mem = gen_frame_mem_offset (Pmode, frame_reg_rtx,
- 				      info->lr_save_offset + sp_offset);
-@@ -19371,12 +19509,17 @@ rs6000_emit_epilogue (int sibcall)
- 			       GEN_INT (info->cr_save_offset + sp_offset));
-       rtx mem = gen_frame_mem (SImode, addr);
- 
--      emit_move_insn (gen_rtx_REG (SImode, 12), mem);
-+      cr_save_reg = gen_rtx_REG (SImode,
-+				 DEFAULT_ABI == ABI_AIX
-+				 && !restoring_GPRs_inline
-+				 && info->first_fp_reg_save < 64
-+				 ? 11 : 12);
-+      emit_move_insn (cr_save_reg, mem);
-     }
- 
-   /* Set LR here to try to overlap restores below.  LR is always saved
-      above incoming stack, so it never needs REG_CFA_RESTORE.  */
--  if (restore_lr)
-+  if (restore_lr && restoring_GPRs_inline)
-     emit_move_insn (gen_rtx_REG (Pmode, LR_REGNO),
- 		    gen_rtx_REG (Pmode, 0));
- 
-@@ -19493,7 +19636,7 @@ rs6000_emit_epilogue (int sibcall)
- 	  par = rs6000_make_savres_rtx (info, gen_rtx_REG (Pmode, 11),
- 					0, reg_mode,
- 					/*savep=*/false, /*gpr=*/true,
--					/*exitp=*/true);
-+					/*lr=*/true);
- 	  emit_jump_insn (par);
- 	  /* We don't want anybody else emitting things after we jumped
- 	     back.  */
-@@ -19511,21 +19654,25 @@ rs6000_emit_epilogue (int sibcall)
- 	rs6000_emit_stack_reset (info, sp_reg_rtx, frame_reg_rtx,
- 				 sp_offset, can_use_exit);
-       else
--	emit_insn (gen_addsi3 (gen_rtx_REG (Pmode, 11),
--			       sp_reg_rtx,
--			       GEN_INT (sp_offset - info->fp_size)));
-+	{
-+	  emit_insn (gen_add3_insn (gen_rtx_REG (Pmode, DEFAULT_ABI == ABI_AIX
-+							? 12 : 11),
-+				    frame_reg_rtx,
-+				    GEN_INT (sp_offset - info->fp_size)));
-+	  if (REGNO (frame_reg_rtx) == 11)
-+	    sp_offset += info->fp_size;
-+	}
- 
-       par = rs6000_make_savres_rtx (info, frame_reg_rtx,
- 				    info->gp_save_offset, reg_mode,
- 				    /*savep=*/false, /*gpr=*/true,
--				    /*exitp=*/can_use_exit);
-+				    /*lr=*/can_use_exit);
- 
-       if (can_use_exit)
- 	{
- 	  if (info->cr_save_p)
- 	    {
--	      rs6000_restore_saved_cr (gen_rtx_REG (SImode, 12),
--				       using_mtcr_multiple);
-+	      rs6000_restore_saved_cr (cr_save_reg, using_mtcr_multiple);
- 	      if (DEFAULT_ABI == ABI_V4)
- 		cfa_restores
- 		  = alloc_EXPR_LIST (REG_CFA_RESTORE,
-@@ -19612,6 +19759,16 @@ rs6000_emit_epilogue (int sibcall)
-           }
-     }
- 
-+  if (restore_lr && !restoring_GPRs_inline)
-+    {
-+      rtx mem = gen_frame_mem_offset (Pmode, frame_reg_rtx,
-+				     info->lr_save_offset + sp_offset);
-+
-+      emit_move_insn (gen_rtx_REG (Pmode, 0), mem);
-+      emit_move_insn (gen_rtx_REG (Pmode, LR_REGNO),
-+		      gen_rtx_REG (Pmode, 0));
-+    }
-+
-   /* Restore fpr's if we need to do it without calling a function.  */
-   if (restoring_FPRs_inline)
-     for (i = 0; i < 64 - info->first_fp_reg_save; i++)
-@@ -19638,7 +19795,7 @@ rs6000_emit_epilogue (int sibcall)
-   /* If we saved cr, restore it here.  Just those that were used.  */
-   if (info->cr_save_p)
-     {
--      rs6000_restore_saved_cr (gen_rtx_REG (SImode, 12), using_mtcr_multiple);
-+      rs6000_restore_saved_cr (cr_save_reg, using_mtcr_multiple);
-       if (DEFAULT_ABI == ABI_V4)
- 	cfa_restores
- 	  = alloc_EXPR_LIST (REG_CFA_RESTORE, gen_rtx_REG (SImode, CR2_REGNO),
-@@ -19669,13 +19826,14 @@ rs6000_emit_epilogue (int sibcall)
-   if (!sibcall)
-     {
-       rtvec p;
-+      bool lr = (strategy & SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR) == 0;
-       if (! restoring_FPRs_inline)
- 	p = rtvec_alloc (4 + 64 - info->first_fp_reg_save);
-       else
- 	p = rtvec_alloc (2);
- 
-       RTVEC_ELT (p, 0) = gen_rtx_RETURN (VOIDmode);
--      RTVEC_ELT (p, 1) = (restoring_FPRs_inline
-+      RTVEC_ELT (p, 1) = ((restoring_FPRs_inline || !lr)
- 			  ? gen_rtx_USE (VOIDmode, gen_rtx_REG (Pmode, 65))
- 			  : gen_rtx_CLOBBER (VOIDmode,
- 					     gen_rtx_REG (Pmode, 65)));
-@@ -19690,10 +19848,12 @@ rs6000_emit_epilogue (int sibcall)
- 	  sym = rs6000_savres_routine_sym (info,
- 					   /*savep=*/false,
- 					   /*gpr=*/false,
--					   /*exitp=*/true);
-+					   /*lr=*/lr);
- 	  RTVEC_ELT (p, 2) = gen_rtx_USE (VOIDmode, sym);
- 	  RTVEC_ELT (p, 3) = gen_rtx_USE (VOIDmode,
--					  gen_rtx_REG (Pmode, 11));
-+					  gen_rtx_REG (Pmode,
-+						       DEFAULT_ABI == ABI_AIX
-+						       ? 1 : 11));
- 	  for (i = 0; i < 64 - info->first_fp_reg_save; i++)
- 	    {
- 	      rtx addr, mem;
---- gcc/config/rs6000/rs6000.md	(revision 151728)
-+++ gcc/config/rs6000/rs6000.md	(revision 151729)
-@@ -15436,6 +15436,19 @@ (define_insn "*return_and_restore_fpregs
-  [(set_attr "type" "branch")
-   (set_attr "length" "4")])
- 
-+(define_insn "*return_and_restore_fpregs_aix_<mode>"
-+ [(match_parallel 0 "any_parallel_operand"
-+		  [(return)
-+		   (use (match_operand:P 1 "register_operand" "l"))
-+		   (use (match_operand:P 2 "symbol_ref_operand" "s"))
-+		   (use (match_operand:P 3 "gpc_reg_operand" "r"))
-+		   (set (match_operand:DF 4 "gpc_reg_operand" "=d")
-+			(match_operand:DF 5 "memory_operand" "m"))])]
-+ ""
-+ "b %z2"
-+ [(set_attr "type" "branch")
-+  (set_attr "length" "4")])
-+
- ; This is used in compiling the unwind routines.
- (define_expand "eh_return"
-   [(use (match_operand 0 "general_operand" ""))]
---- gcc/config/rs6000/sysv4.h	(revision 151728)
-+++ gcc/config/rs6000/sysv4.h	(revision 151729)
-@@ -272,27 +272,25 @@ do {									\
- #endif
- 
- /* Define cutoff for using external functions to save floating point.
--   Currently on 64-bit V.4, always use inline stores.  When optimizing
--   for size on 32-bit targets, use external functions when
--   profitable.  */
--#define FP_SAVE_INLINE(FIRST_REG) (optimize_size && !TARGET_64BIT	\
-+   When optimizing for size, use external functions when profitable.  */
-+#define FP_SAVE_INLINE(FIRST_REG) (optimize_size			\
- 				   ? ((FIRST_REG) == 62			\
- 				      || (FIRST_REG) == 63)		\
- 				   : (FIRST_REG) < 64)
- /* And similarly for general purpose registers.  */
- #define GP_SAVE_INLINE(FIRST_REG) ((FIRST_REG) < 32	\
--				   && (TARGET_64BIT || !optimize_size))
-+				   && !optimize_size)
- 
- /* Put jump tables in read-only memory, rather than in .text.  */
- #define JUMP_TABLES_IN_TEXT_SECTION 0
- 
- /* Prefix and suffix to use to saving floating point.  */
- #define	SAVE_FP_PREFIX "_savefpr_"
--#define SAVE_FP_SUFFIX (TARGET_64BIT ? "_l" : "")
-+#define SAVE_FP_SUFFIX ""
- 
- /* Prefix and suffix to use to restoring floating point.  */
- #define	RESTORE_FP_PREFIX "_restfpr_"
--#define RESTORE_FP_SUFFIX (TARGET_64BIT ? "_l" : "")
-+#define RESTORE_FP_SUFFIX ""
- 
- /* Type used for ptrdiff_t, as a string used in a declaration.  */
- #define PTRDIFF_TYPE "int"

diff --git a/gcc44-vta-cfgexpand-ptr-mode-pr41248.patch b/gcc44-vta-cfgexpand-ptr-mode-pr41248.patch
deleted file mode 100644
index 27dc43d..0000000
--- a/gcc44-vta-cfgexpand-ptr-mode-pr41248.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-for  gcc/ChangeLog
-from  Alexandre Oliva  <aoliva@redhat.com>
-
-	PR debug/41248
-	* cfgexpand.c (convert_debug_memory_address): New.
-	(expand_debug_expr): Convert base address and offset to the same
-	mode.  Use it to convert addresses to other modes.  Accept
-	ptr_mode addresses.
-	
-for  gcc/testsuite/ChangeLog
-from  Alexandre Oliva  <aoliva@redhat.com>
-
-	PR debug/41248
-	* gcc.dg/pr41248.c: New.
-
-Index: gcc/cfgexpand.c
-===================================================================
---- gcc/cfgexpand.c.orig	2009-09-07 19:00:20.000000000 -0300
-+++ gcc/cfgexpand.c	2009-09-07 19:17:27.000000000 -0300
-@@ -1966,6 +1966,38 @@ unwrap_constant (rtx x)
-   return ret;
- }
- 
-+/* Convert X to MODE, that must be Pmode or ptr_mode, without emitting
-+   any rtl.  */
-+
-+static rtx
-+convert_debug_memory_address (enum machine_mode mode, rtx x)
-+{
-+  enum machine_mode xmode = GET_MODE (x);
-+
-+#ifndef POINTERS_EXTEND_UNSIGNED
-+  gcc_assert (mode == Pmode);
-+  gcc_assert (xmode == mode || xmode == VOIDmode);
-+#else
-+  gcc_assert (mode == Pmode || mode == ptr_mode);
-+
-+  if (GET_MODE (x) == mode || GET_MODE (x) == VOIDmode)
-+    return x;
-+
-+  if (GET_MODE_BITSIZE (mode) < GET_MODE_BITSIZE (xmode))
-+    x = simplify_gen_subreg (mode, x, xmode,
-+			     subreg_lowpart_offset
-+			     (mode, xmode));
-+  else if (POINTERS_EXTEND_UNSIGNED > 0)
-+    x = gen_rtx_ZERO_EXTEND (mode, x);
-+  else if (!POINTERS_EXTEND_UNSIGNED)
-+    x = gen_rtx_SIGN_EXTEND (mode, x);
-+  else
-+    gcc_unreachable ();
-+#endif /* POINTERS_EXTEND_UNSIGNED */
-+
-+  return x;
-+}
-+
- /* Return an RTX equivalent to the value of the tree expression
-    EXP.  */
- 
-@@ -2141,6 +2173,7 @@ expand_debug_expr (tree exp)
- 	return NULL;
- 
-       gcc_assert (GET_MODE (op0) == Pmode
-+		  || GET_MODE (op0) == ptr_mode
- 		  || GET_CODE (op0) == CONST_INT
- 		  || GET_CODE (op0) == CONST_DOUBLE);
- 
-@@ -2167,6 +2200,7 @@ expand_debug_expr (tree exp)
- 	return NULL;
- 
-       gcc_assert (GET_MODE (op0) == Pmode
-+		  || GET_MODE (op0) == ptr_mode
- 		  || GET_CODE (op0) == CONST_INT
- 		  || GET_CODE (op0) == CONST_DOUBLE);
- 
-@@ -2199,13 +2233,32 @@ expand_debug_expr (tree exp)
- 
- 	if (offset)
- 	  {
-+	    enum machine_mode addrmode, offmode;
-+
- 	    gcc_assert (MEM_P (op0));
- 
-+	    op0 = XEXP (op0, 0);
-+	    addrmode = GET_MODE (op0);
-+	    if (addrmode == VOIDmode)
-+	      addrmode = Pmode;
-+
- 	    op1 = expand_debug_expr (offset);
- 	    if (!op1)
- 	      return NULL;
- 
--	    op0 = gen_rtx_MEM (mode, gen_rtx_PLUS (Pmode, XEXP (op0, 0), op1));
-+	    offmode = GET_MODE (op1);
-+	    if (offmode == VOIDmode)
-+	      offmode = TYPE_MODE (TREE_TYPE (offset));
-+
-+	    if (addrmode != offmode)
-+	      op1 = simplify_gen_subreg (addrmode, op1, offmode,
-+					 subreg_lowpart_offset (addrmode,
-+								offmode));
-+
-+	    /* Don't use offset_address here, we don't need a
-+	       recognizable address, and we don't want to generate
-+	       code.  */
-+	    op0 = gen_rtx_MEM (mode, gen_rtx_PLUS (addrmode, op0, op1));
- 	  }
- 
- 	if (MEM_P (op0))
-@@ -2525,7 +2578,9 @@ expand_debug_expr (tree exp)
-       if (!op0 || !MEM_P (op0))
- 	return NULL;
- 
--      return XEXP (op0, 0);
-+      op0 = convert_debug_memory_address (mode, XEXP (op0, 0));
-+
-+      return op0;
- 
-     case VECTOR_CST:
-       exp = build_constructor_from_list (TREE_TYPE (exp),
-Index: gcc/testsuite/gcc.dg/pr41248.c
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ gcc/testsuite/gcc.dg/pr41248.c	2009-09-07 19:17:27.000000000 -0300
-@@ -0,0 +1,27 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -g" } */
-+
-+struct __gcov_var {
-+   unsigned int offset;
-+   unsigned int buffer[(1 << 10) + 1];
-+} __gcov_var;
-+unsigned int * gcov_write_words (unsigned int words) {
-+   unsigned int *result;
-+   result = &__gcov_var.buffer[__gcov_var.offset];
-+   return result;
-+}
-+
-+struct gcov_ctr_summary { };
-+struct gcov_summary {
-+   unsigned int checksum;
-+   struct gcov_ctr_summary ctrs[1];
-+};
-+void __gcov_write_unsigned (unsigned int);
-+void __gcov_write_summary (unsigned int tag,
-+			   const struct gcov_summary *summary)
-+{
-+   unsigned ix;
-+   const struct gcov_ctr_summary *csum;
-+   __gcov_write_unsigned (summary->checksum);
-+   for (csum = summary->ctrs, ix = 1; ix--; csum++) { }
-+}

diff --git a/sources b/sources
index c118a41..70d0e1a 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
 2659f09c2e43ef8b7d4406321753f1b2  fastjar-0.97.tar.gz
-d80d46cdb567914d34408afcd3c4d5af  gcc-4.4.1-20090918.tar.bz2
+25ef066c0ea8770f562eed45a9e1619f  gcc-4.4.1-20090923.tar.bz2

^ permalink raw reply related	[flat|nested] 2+ messages in thread
* [rpms/gcc] rhel-f41-base: 4.4.1-16
@ 2026-06-29 12:24 Jakub Jelinek
  0 siblings, 0 replies; 2+ messages in thread
From: Jakub Jelinek @ 2026-06-29 12:24 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/gcc
Branch : rhel-f41-base
Commit : e2781b7b62817539da163bdc37bc786515e8cecd
Author : Jakub Jelinek <jakub@fedoraproject.org>
Date   : 2009-09-23T20:17:19+00:00
Stats  : +9/-13 in 1 file(s)
URL    : https://src.fedoraproject.org/rpms/gcc/c/e2781b7b62817539da163bdc37bc786515e8cecd?branch=rhel-f41-base

Log:
4.4.1-16

---
diff --git a/gcc44-pr38757.patch b/gcc44-pr38757.patch
index c166411..805996f 100644
--- a/gcc44-pr38757.patch
+++ b/gcc44-pr38757.patch
@@ -90,7 +90,7 @@
  const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
 --- gcc/dwarf2out.c.jj	2009-03-17 13:06:29.000000000 +0100
 +++ gcc/dwarf2out.c	2009-03-18 12:55:36.000000000 +0100
-@@ -12470,9 +12470,18 @@ add_bit_size_attribute (dw_die_ref die, 
+@@ -14286,9 +14286,18 @@ add_bit_size_attribute (dw_die_ref die, 
  static inline void
  add_prototyped_attribute (dw_die_ref die, tree func_type)
  {
@@ -112,18 +112,14 @@
  }
  
  /* Add an 'abstract_origin' attribute below a given DIE.  The DIE is found
-@@ -14419,7 +14428,13 @@ gen_compile_unit_die (const char *filena
-   else if (strcmp (language_string, "GNU Objective-C++") == 0)
-     language = DW_LANG_ObjC_plus_plus;
-   else
--    language = DW_LANG_C89;
-+    {
-+      if (lang_hooks.source_language
-+	  && lang_hooks.source_language () >= 1999)
+@@ -16290,6 +16299,10 @@ gen_compile_unit_die (const char *filena
+ 	language = DW_LANG_ObjC;
+       else if (strcmp (language_string, "GNU Objective-C++") == 0)
+ 	language = DW_LANG_ObjC_plus_plus;
++      else if (strcmp (language_string, "GNU C") == 0
++	       && lang_hooks.source_language
++	       && lang_hooks.source_language () >= 1999)
 +	language = DW_LANG_C99;
-+      else
-+	language = DW_LANG_C89;
-+    }
+     }
  
    add_AT_unsigned (die, DW_AT_language, language);
-   return die;

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-06-29 12:24 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-29 12:24 [rpms/gcc] rhel-f41-base: 4.4.1-16 Jakub Jelinek
2026-06-29 12:24 Jakub Jelinek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox