rpms/gcc/FC-6 gcc41-libjava-anonverscript.patch, NONE, 1.1 gcc41-ppc64-libffi-unwind.patch, NONE, 1.1 gcc41-pr27266.patch, NONE, 1.1 gcc41-pr29166.patch, NONE, 1.1 gcc41-pr29241.patch, NONE, 1.1 gcc41-pr29299.patch, NONE, 1.1 gcc41-pr29612.patch, NONE, 1.1 gcc41-pr29703.patch, NONE, 1.1 gcc41-pr30110.patch, NONE, 1.1 gcc41-pr30113.patch, NONE, 1.1 gcc41-pr30143.patch, NONE, 1.1 gcc41-pr30230.patch, NONE, 1.1 gcc41-pr30262.patch, NONE, 1.1 protoize.1, NONE, 1.1 .cvsignore, 1.177, 1.178 gcc41-pr25874.patch, 1.1, 1.2 gcc41-tests.patch, 1.3, 1.4 gcc41.spec, 1.111, 1.112 sources, 1.179, 1.180 gcc41-multi32-hack.patch, 1.1, NONE gcc41-power6-2.patch, 1.1, NONE gcc41-power6.patch, 1.1, NONE gcc41-power6x.patch, 1.2, NONE gcc41-pr26881.patch, 1.2, NONE gcc41-pr29091.patch, 1.1, NONE

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Thu Dec 21 00:26:08 UTC 2006


Author: jakub

Update of /cvs/dist/rpms/gcc/FC-6
In directory cvs.devel.redhat.com:/tmp/cvs-serv23926/FC-6

Modified Files:
	.cvsignore gcc41-pr25874.patch gcc41-tests.patch gcc41.spec 
	sources 
Added Files:
	gcc41-libjava-anonverscript.patch 
	gcc41-ppc64-libffi-unwind.patch gcc41-pr27266.patch 
	gcc41-pr29166.patch gcc41-pr29241.patch gcc41-pr29299.patch 
	gcc41-pr29612.patch gcc41-pr29703.patch gcc41-pr30110.patch 
	gcc41-pr30113.patch gcc41-pr30143.patch gcc41-pr30230.patch 
	gcc41-pr30262.patch protoize.1 
Removed Files:
	gcc41-multi32-hack.patch gcc41-power6-2.patch 
	gcc41-power6.patch gcc41-power6x.patch gcc41-pr26881.patch 
	gcc41-pr29091.patch 
Log Message:
auto-import gcc-4.1.1-47.fc6 on branch FC-6 from gcc-4.1.1-47.fc6.src.rpm

gcc41-libjava-anonverscript.patch:
 Makefile.am  |    7 ++++
 Makefile.in  |   41 ++++++++++++++-------------
 configure    |   87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 configure.ac |   13 ++++++++
 libgcj.ver   |    7 ++++
 5 files changed, 135 insertions(+), 20 deletions(-)

--- NEW FILE gcc41-libjava-anonverscript.patch ---
2006-11-21  Jakub Jelinek  <jakub at redhat.com>

	* configure.ac (libjava_cv_anon_version_script): New test.
	(ANONVERSCRIPT): New AM_CONDITIONAL.
	* configure: Rebuilt.
	* Makefile.am (extra_ldflags_libjava): Link with -Wl,--version-script
	if ANONVERSCRIPT.
	* Makefile.in: Rebuilt.
	(libgcj_la_DEPENDENCIES): Depend on libgcj.ver.
	* libgcj.ver: New file.

--- libjava/configure.ac.jj	2006-11-04 22:39:14.000000000 +0100
+++ libjava/configure.ac	2006-11-21 14:23:01.000000000 +0100
@@ -1489,6 +1489,19 @@ fi
 # See if we support thread-local storage.
 GCC_CHECK_TLS
 
+# See if linker supports anonymous version scripts.
+AC_CACHE_CHECK([whether ld supports anonymous version scripts],
+  [libjava_cv_anon_version_script],
+  [save_CFLAGS="$CFLAGS"; save_LDFLAGS="$LDFLAGS"
+   libjava_cv_anon_version_script=no
+   CFLAGS="$CFLAGS -fPIC"; LDFLAGS="$LDFLAGS -shared -Wl,--version-script,conftest.map"
+   echo '{ global: globalsymb*; local: *; };' > conftest.map
+   AC_TRY_LINK(void globalsymbol (void) {} void localsymbol (void) {},,
+	       [libjava_cv_anon_version_script=yes], [])
+   CFLAGS="$save_CFLAGS"; LDFLAGS="$save_LDFLAGS"
+  ])
+AM_CONDITIONAL(ANONVERSCRIPT, test "$libjava_cv_anon_version_script" = yes)
+
 # Check if linker supports static linking on a per library basis
 LD_START_STATIC_SPEC=
 LD_FINISH_STATIC_SPEC=
--- libjava/Makefile.am.jj	2006-09-22 13:49:10.000000000 +0200
+++ libjava/Makefile.am	2006-11-21 14:10:49.000000000 +0100
@@ -93,6 +93,10 @@ GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8
 
 extra_ldflags_libjava = @extra_ldflags_libjava@
 
+if ANONVERSCRIPT
+extra_ldflags_libjava += -Wl,--version-script=$(srcdir)/libgcj.ver
+endif
+
 GCJLINK = $(LIBTOOL) --tag=GCJ --mode=link $(GCJ) -L$(here) $(JC1FLAGS) \
           $(LDFLAGS) -o $@
 LIBLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXX) -L$(here) $(JC1FLAGS) \
@@ -229,6 +233,9 @@ libgcj_la_LIBADD = \
 libgcj_la_DEPENDENCIES = libgcj-$(gcc_version).jar \
 	$(all_packages_source_files:.list=.lo) \
 	$(LIBLTDL) $(libgcj_la_LIBADD)
+if ANONVERSCRIPT
+libgcj_la_DEPENDENCIES += $(srcdir)/libgcj.ver
+endif
 libgcj_la_LINK = $(LIBLINK)
 
 libgcj_tools_la_SOURCES = classpath/tools/tools.jar
--- libjava/libgcj.ver.jj	2006-11-21 14:08:08.000000000 +0100
+++ libjava/libgcj.ver	2006-11-21 14:08:01.000000000 +0100
@@ -0,0 +1,7 @@
+# Anonymous GNU ld version script to hide boehm-gc, libffi and fdlibm
+# symbols in libgcj.so.
+
+{
+  global: Jv*; _Jv_*; __gcj_personality_v0; _Z*;
+  local: *;
+};
--- libjava/configure.jj	2006-11-04 22:39:14.000000000 +0100
+++ libjava/configure	2006-11-21 14:23:04.000000000 +0100
@@ -310,7 +310,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_subdir host_subdir target_subdir libgcj_basedir host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S mkinstalldirs CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LDFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXDEPMODE am__fastdepCXX_TRU!
 E am__fastdepCXX_FALSE AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB JAR ZIP UNZIP BASH_JAR_TRUE BASH_JAR_FALSE MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBGCJ_CFLAGS LIBGCJ_CXXFLAGS LIBGCJ_JAVAFLAGS LIBGCJ_LD_SYMBOLIC LIBGCJDEBUG TOOLKIT XLIB_AWT_TRUE XLIB_AWT_FALSE GCJH INCLTDL LIBLTDL DIRLTDL LIBTOOL CXXCPP CPPFLAGS GCJ GCJFLAGS GCJDEPMODE am__fastdepGCJ_TRUE am__fastdepGCJ_FALSE subdirs TESTSUBDIR_TRUE TESTSUBDIR_FALSE JAVA_HOME_SET_TRUE JAVA_HOME_SET_FALSE JAVA_HOME INTERPRETER LIBFFI LIBFFIINCS PLATFORM_INNER_NAT_HDRS CPP EGREP USING_WIN32_PLATFORM_TRUE USING_WIN32_PLATFORM_FALSE USING_POSIX_PLATFORM_TRUE USING_POSIX_PLATFORM_FALSE USING_DARWIN_CRT_TRUE USING_DARWIN_CRT_FALSE SYSTEMSPEC LIBGCJTESTSPEC ZLIBSPEC ZLIBTESTSPEC X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS extra_ldflags_libjava GCLIBS GCINCS GCDEPS GCSPEC JC1GCSPEC GCTESTSPEC USING_BOEHMGC_TRUE USING_BOEHMGC_FALSE USING_NOGC_TRUE USING_NOGC_FALSE THREADLIBS THREADINCS THREADDEPS THREADSPEC THRE!
 ADSTARTFILESPEC THREADLDFLAGS THREADCXXFLAGS USING_POSIX_THREA!
 DS_TRUE 
USING_POSIX_THREADS_FALSE USING_WIN32_THREADS_TRUE USING_WIN32_THREADS_FALSE USING_NO_THREADS_TRUE USING_NO_THREADS_FALSE USE_LIBGCJ_BC_TRUE USE_LIBGCJ_BC_FALSE LIBGCJ_SPEC HASH_SYNC_SPEC USING_GCC_TRUE USING_GCC_FALSE LIBICONV LTLIBICONV PKG_CONFIG GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS LIBART_CFLAGS LIBART_LIBS CLASSPATH_SEPARATOR ac_ct_GCJ ZLIBS SYS_ZLIBS ZINCS DIVIDESPEC CHECKREFSPEC EXCEPTIONSPEC BACKTRACESPEC IEEESPEC NATIVE_TRUE NATIVE_FALSE NEEDS_DATA_START_TRUE NEEDS_DATA_START_FALSE GCC_UNWIND_INCLUDE toolexecdir toolexecmainlibdir toolexeclibdir dbexecdir GCJVERSION gxx_include_dir libstdcxx_incdir ALLOCA PERL SYSDEP_SOURCES LD_START_STATIC_SPEC LD_FINISH_STATIC_SPEC here LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_subdir host_subdir target_subdir libgcj_basedir host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S mkinstalldirs CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LDFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXDEPMODE am__fastdepCXX_TRU!
 E am__fastdepCXX_FALSE AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB JAR ZIP UNZIP BASH_JAR_TRUE BASH_JAR_FALSE MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBGCJ_CFLAGS LIBGCJ_CXXFLAGS LIBGCJ_JAVAFLAGS LIBGCJ_LD_SYMBOLIC LIBGCJDEBUG TOOLKIT XLIB_AWT_TRUE XLIB_AWT_FALSE GCJH INCLTDL LIBLTDL DIRLTDL LIBTOOL CXXCPP CPPFLAGS GCJ GCJFLAGS GCJDEPMODE am__fastdepGCJ_TRUE am__fastdepGCJ_FALSE subdirs TESTSUBDIR_TRUE TESTSUBDIR_FALSE JAVA_HOME_SET_TRUE JAVA_HOME_SET_FALSE JAVA_HOME INTERPRETER LIBFFI LIBFFIINCS PLATFORM_INNER_NAT_HDRS CPP EGREP USING_WIN32_PLATFORM_TRUE USING_WIN32_PLATFORM_FALSE USING_POSIX_PLATFORM_TRUE USING_POSIX_PLATFORM_FALSE USING_DARWIN_CRT_TRUE USING_DARWIN_CRT_FALSE SYSTEMSPEC LIBGCJTESTSPEC ZLIBSPEC ZLIBTESTSPEC X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS extra_ldflags_libjava GCLIBS GCINCS GCDEPS GCSPEC JC1GCSPEC GCTESTSPEC USING_BOEHMGC_TRUE USING_BOEHMGC_FALSE USING_NOGC_TRUE USING_NOGC_FALSE THREADLIBS THREADINCS THREADDEPS THREADSPEC THRE!
 ADSTARTFILESPEC THREADLDFLAGS THREADCXXFLAGS USING_POSIX_THREA!
 DS_TRUE 
USING_POSIX_THREADS_FALSE USING_WIN32_THREADS_TRUE USING_WIN32_THREADS_FALSE USING_NO_THREADS_TRUE USING_NO_THREADS_FALSE USE_LIBGCJ_BC_TRUE USE_LIBGCJ_BC_FALSE LIBGCJ_SPEC HASH_SYNC_SPEC USING_GCC_TRUE USING_GCC_FALSE LIBICONV LTLIBICONV PKG_CONFIG GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS LIBART_CFLAGS LIBART_LIBS CLASSPATH_SEPARATOR ac_ct_GCJ ZLIBS SYS_ZLIBS ZINCS DIVIDESPEC CHECKREFSPEC EXCEPTIONSPEC BACKTRACESPEC IEEESPEC NATIVE_TRUE NATIVE_FALSE NEEDS_DATA_START_TRUE NEEDS_DATA_START_FALSE GCC_UNWIND_INCLUDE toolexecdir toolexecmainlibdir toolexeclibdir dbexecdir GCJVERSION gxx_include_dir libstdcxx_incdir ALLOCA PERL SYSDEP_SOURCES ANONVERSCRIPT_TRUE ANONVERSCRIPT_FALSE LD_START_STATIC_SPEC LD_FINISH_STATIC_SPEC here LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -16638,6 +16639,82 @@ _ACEOF
 
   fi
 
+# See if linker supports anonymous version scripts.
+echo "$as_me:$LINENO: checking whether ld supports anonymous version scripts" >&5
+echo $ECHO_N "checking whether ld supports anonymous version scripts... $ECHO_C" >&6
+if test "${libjava_cv_anon_version_script+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  save_CFLAGS="$CFLAGS"; save_LDFLAGS="$LDFLAGS"
+   libjava_cv_anon_version_script=no
+   CFLAGS="$CFLAGS -fPIC"; LDFLAGS="$LDFLAGS -shared -Wl,--version-script,conftest.map"
+   echo '{ global: globalsymb*; local: *; };' > conftest.map
+   if test x$gcc_no_link = xyes; then
+  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+void globalsymbol (void) {} void localsymbol (void) {}
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  libjava_cv_anon_version_script=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+   CFLAGS="$save_CFLAGS"; LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $libjava_cv_anon_version_script" >&5
+echo "${ECHO_T}$libjava_cv_anon_version_script" >&6
+
+
+if test "$libjava_cv_anon_version_script" = yes; then
+  ANONVERSCRIPT_TRUE=
+  ANONVERSCRIPT_FALSE='#'
+else
+  ANONVERSCRIPT_TRUE='#'
+  ANONVERSCRIPT_FALSE=
+fi
+
+
 # Check if linker supports static linking on a per library basis
 LD_START_STATIC_SPEC=
 LD_FINISH_STATIC_SPEC=
@@ -16903,6 +16980,13 @@ echo "$as_me: error: conditional \"NEEDS
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${ANONVERSCRIPT_TRUE}" && test -z "${ANONVERSCRIPT_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"ANONVERSCRIPT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"ANONVERSCRIPT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 
 : ${CONFIG_STATUS=./config.status}
 ac_clean_files_save=$ac_clean_files
@@ -17665,6 +17749,8 @@ s, at libstdcxx_incdir@,$libstdcxx_incdir,;
 s, at ALLOCA@,$ALLOCA,;t t
 s, at PERL@,$PERL,;t t
 s, at SYSDEP_SOURCES@,$SYSDEP_SOURCES,;t t
+s, at ANONVERSCRIPT_TRUE@,$ANONVERSCRIPT_TRUE,;t t
+s, at ANONVERSCRIPT_FALSE@,$ANONVERSCRIPT_FALSE,;t t
 s, at LD_START_STATIC_SPEC@,$LD_START_STATIC_SPEC,;t t
 s, at LD_FINISH_STATIC_SPEC@,$LD_FINISH_STATIC_SPEC,;t t
 s, at here@,$here,;t t
--- libjava/Makefile.in.jj	2006-11-04 22:39:14.000000000 +0100
+++ libjava/Makefile.in	2006-11-21 14:12:00.000000000 +0100
@@ -48,15 +48,17 @@ target_triplet = @target@
 @NATIVE_TRUE@	gcj-dbtool$(EXEEXT) gappletviewer$(EXEEXT) \
 @NATIVE_TRUE@	gjarsigner$(EXEEXT) gkeytool$(EXEEXT)
 @BASH_JAR_TRUE at am__append_4 = scripts/jar
- at USING_GCC_TRUE@am__append_5 = $(WARNINGS)
- at USING_BOEHMGC_TRUE@am__append_6 = boehm.cc
- at USING_NOGC_TRUE@am__append_7 = nogc.cc
- at USING_POSIX_PLATFORM_TRUE@am__append_8 = posix.cc
- at USING_WIN32_PLATFORM_TRUE@am__append_9 = win32.cc
- at USING_DARWIN_CRT_TRUE@am__append_10 = darwin.cc
- at USING_POSIX_THREADS_TRUE@am__append_11 = posix-threads.cc
- at USING_WIN32_THREADS_TRUE@am__append_12 = win32-threads.cc
- at USING_NO_THREADS_TRUE@am__append_13 = no-threads.cc
+ at ANONVERSCRIPT_TRUE@am__append_5 = -Wl,--version-script=$(srcdir)/libgcj.ver
+ at USING_GCC_TRUE@am__append_6 = $(WARNINGS)
+ at USING_BOEHMGC_TRUE@am__append_7 = boehm.cc
+ at USING_NOGC_TRUE@am__append_8 = nogc.cc
+ at USING_POSIX_PLATFORM_TRUE@am__append_9 = posix.cc
+ at USING_WIN32_PLATFORM_TRUE@am__append_10 = win32.cc
+ at USING_DARWIN_CRT_TRUE@am__append_11 = darwin.cc
+ at USING_POSIX_THREADS_TRUE@am__append_12 = posix-threads.cc
+ at USING_WIN32_THREADS_TRUE@am__append_13 = win32-threads.cc
+ at USING_NO_THREADS_TRUE@am__append_14 = no-threads.cc
+ at ANONVERSCRIPT_TRUE@am__append_15 = $(srcdir)/libgcj.ver
 DIST_COMMON = README $(am__configure_deps) $(srcdir)/../compile \
 	$(srcdir)/../config.guess $(srcdir)/../config.sub \
 	$(srcdir)/../depcomp $(srcdir)/../install-sh \
@@ -68,7 +70,7 @@ DIST_COMMON = README $(am__configure_dep
 	$(top_srcdir)/scripts/jar.in COPYING ChangeLog NEWS THANKS
 @MAINTAINER_MODE_TRUE@@NATIVE_TRUE at noinst_PROGRAMS =  \
 @MAINTAINER_MODE_TRUE@@NATIVE_TRUE@	gen-from-JIS$(EXEEXT)
- at XLIB_AWT_TRUE@am__append_14 = $(xlib_nat_headers)
+ at XLIB_AWT_TRUE@am__append_16 = $(xlib_nat_headers)
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
@@ -473,6 +475,8 @@ ALLOCA = @ALLOCA@
 AMDEP_FALSE = @AMDEP_FALSE@
 AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+ANONVERSCRIPT_FALSE = @ANONVERSCRIPT_FALSE@
+ANONVERSCRIPT_TRUE = @ANONVERSCRIPT_TRUE@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -653,7 +657,7 @@ build_vendor = @build_vendor@
 datadir = @datadir@
 dbexecdir = @dbexecdir@
 exec_prefix = @exec_prefix@
-extra_ldflags_libjava = @extra_ldflags_libjava@
+extra_ldflags_libjava = @extra_ldflags_libjava@ $(am__append_5)
 gxx_include_dir = @gxx_include_dir@
 here = @here@
 host = @host@
@@ -763,7 +767,7 @@ AM_GCJFLAGS = \
 	--encoding=UTF-8 \
 	-Wno-deprecated -fbootstrap-classes
 
-AM_CFLAGS = @LIBGCJ_CFLAGS@ $(am__append_5)
+AM_CFLAGS = @LIBGCJ_CFLAGS@ $(am__append_6)
 PEDANTIC_CFLAGS = -ansi -pedantic -Wall -Wno-long-long
 JCFLAGS = -g
 JC1FLAGS = @LIBGCJ_JAVAFLAGS@ $(GCJFLAGS)
@@ -785,9 +789,9 @@ libgij_la_LDFLAGS = -rpath $(toolexeclib
 libgcj_la_SOURCES = prims.cc jni.cc jvmti.cc exception.cc \
 	stacktrace.cc link.cc defineclass.cc interpret.cc verify.cc \
 	java/lang/Class.java java/lang/Object.java $(nat_source_files) \
-	$(am__append_6) $(am__append_7) $(am__append_8) \
-	$(am__append_9) $(am__append_10) $(am__append_11) \
-	$(am__append_12) $(am__append_13)
+	$(am__append_7) $(am__append_8) $(am__append_9) \
+	$(am__append_10) $(am__append_11) $(am__append_12) \
+	$(am__append_13) $(am__append_14)
 nat_files = $(nat_source_files:.cc=.lo)
 xlib_nat_files = $(xlib_nat_source_files:.cc=.lo)
 
@@ -805,9 +809,8 @@ libgcj_la_LIBADD = \
 	$(LIBFFI) $(ZLIBS) $(GCLIBS)
 
 libgcj_la_DEPENDENCIES = libgcj-$(gcc_version).jar \
-	$(all_packages_source_files:.list=.lo) \
-	$(LIBLTDL) $(libgcj_la_LIBADD)
-
+	$(all_packages_source_files:.list=.lo) $(LIBLTDL) \
+	$(libgcj_la_LIBADD) $(am__append_15)
 libgcj_la_LINK = $(LIBLINK)
 libgcj_tools_la_SOURCES = classpath/tools/tools.jar
 libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch -fno-indirect-classes
@@ -7460,7 +7463,7 @@ gnu/gcj/xlib/natXImage.cc \
 gnu/gcj/xlib/natXUnmapEvent.cc
 
 sourcesdir = $(jardir)
-headers_to_make = $(nat_headers) $(am__append_14)
+headers_to_make = $(nat_headers) $(am__append_16)
 
 # Work around what appears to be a GNU make bug handling MAKEFLAGS
 # values defined in terms of make variables, as is the case for CC and


gcc41-ppc64-libffi-unwind.patch:
 linux64.S |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

--- NEW FILE gcc41-ppc64-libffi-unwind.patch ---
2006-11-24  Jakub Jelinek  <jakub at redhat.com>

	* src/powerpc/linux64.S (ffi_call_LINUX64): Move restore of r2
	immediately after bctrl instruction.

--- libffi/src/powerpc/linux64.S.jj	2006-08-02 20:55:10.000000000 +0200
+++ libffi/src/powerpc/linux64.S	2006-11-24 21:57:06.000000000 +0100
@@ -47,8 +47,8 @@ ffi_call_LINUX64:
 	std	%r0, 16(%r1)
 
 	mr	%r28, %r1	/* our AP.  */
-	stdux	%r1, %r1, %r4
 .LCFI0:
+	stdux	%r1, %r1, %r4
 	mr	%r31, %r5	/* flags, */
 	mr	%r30, %r6	/* rvalue, */
 	mr	%r29, %r7	/* function address.  */
@@ -100,6 +100,10 @@ ffi_call_LINUX64:
 	/* Make the call.  */
 	bctrl
 
+	/* This must follow the call immediately, the unwinder
+	   uses this to find out if r2 has been saved or not.  */
+	ld	%r2, 40(%r1)
+
 	/* Now, deal with the return value.  */
 	mtcrf	0x01, %r31
 	bt-	30, .Ldone_return_value
@@ -109,7 +113,6 @@ ffi_call_LINUX64:
 
 .Ldone_return_value:
 	/* Restore the registers we used and return.  */
-	ld	%r2, 40(%r1)
 	mr	%r1, %r28
 	ld	%r0, 16(%r28)
 	ld	%r28, -32(%r1)

gcc41-pr27266.patch:
 0 files changed

--- NEW FILE gcc41-pr27266.patch ---
2006-05-22  Kazu Hirata  <kazu at codesourcery.com>

	PR target/27266
	* config/i386/i386.c (ix86_expand_branch): Jump to simple if
	ix86_compare_emitted is non-NULL.

	* gcc.target/i386/pr27266.c: New.

--- gcc/config/i386/i386.c	(revision 113986)
+++ gcc/config/i386/i386.c	(revision 113987)
@@ -10175,6 +10175,12 @@ ix86_expand_branch (enum rtx_code code, 
 {
   rtx tmp;
 
+  /* If we have emitted a compare insn, go straight to simple.
+     ix86_expand_compare won't emit anything if ix86_compare_emitted
+     is non NULL.  */
+  if (ix86_compare_emitted)
+    goto simple;
+
   switch (GET_MODE (ix86_compare_op0))
     {
     case QImode:
--- gcc/testsuite/gcc.target/i386/pr27266.c	(revision 0)
+++ gcc/testsuite/gcc.target/i386/pr27266.c	(revision 113987)
@@ -0,0 +1,14 @@
+/* PR target/27266.
+   The testcase below used to trigger an ICE.  */
+
+/* { dg-do compile } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-options "-march=pentium" } */
+
+signed long long sll;
+
+void
+foo (void)
+{
+  __sync_fetch_and_add (&sll, 1);
+}

gcc41-pr29166.patch:
 pr29166.C |  197 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 197 insertions(+)

--- NEW FILE gcc41-pr29166.patch ---
2006-11-24  Andreas Schwab  <schwab at suse.de>

	PR target/29166
	* config/ia64/ia64.c (ia64_compute_frame_size): Account space for
	save of BR0 in extra_spill_size instead of spill_size.
	(ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
	area.
	(ia64_expand_epilogue): Restore BR0 from its new location.

	* g++.dg/eh/pr29166.C: New test.

--- gcc/config/ia64/ia64.c	(revision 119149)
+++ gcc/config/ia64/ia64.c	(working copy)
@@ -2457,7 +2457,7 @@ ia64_compute_frame_size (HOST_WIDE_INT s
       current_frame_info.reg_save_b0 = find_gr_spill (1);
       if (current_frame_info.reg_save_b0 == 0)
 	{
-	  spill_size += 8;
+	  extra_spill_size += 8;
 	  n_spilled += 1;
 	}
 
@@ -2486,7 +2486,7 @@ ia64_compute_frame_size (HOST_WIDE_INT s
       if (regs_ever_live[BR_REG (0)] && ! call_used_regs[BR_REG (0)])
 	{
 	  SET_HARD_REG_BIT (mask, BR_REG (0));
-	  spill_size += 8;
+	  extra_spill_size += 8;
 	  n_spilled += 1;
 	}
 
@@ -3176,6 +3176,31 @@ ia64_expand_prologue (void)
 	}
     }
 
+  /* Save the return pointer.  */
+  if (TEST_HARD_REG_BIT (current_frame_info.mask, BR_REG (0)))
+    {
+      reg = gen_rtx_REG (DImode, BR_REG (0));
+      if (current_frame_info.reg_save_b0 != 0)
+	{
+	  alt_reg = gen_rtx_REG (DImode, current_frame_info.reg_save_b0);
+	  insn = emit_move_insn (alt_reg, reg);
+	  RTX_FRAME_RELATED_P (insn) = 1;
+
+	  /* Even if we're not going to generate an epilogue, we still
+	     need to save the register so that EH works.  */
+	  if (! epilogue_p)
+	    emit_insn (gen_prologue_use (alt_reg));
+	}
+      else
+	{
+	  alt_regno = next_scratch_gr_reg ();
+	  alt_reg = gen_rtx_REG (DImode, alt_regno);
+	  emit_move_insn (alt_reg, reg);
+	  do_spill (gen_movdi_x, alt_reg, cfa_off, reg);
+	  cfa_off -= 8;
+	}
+    }
+
   if (current_frame_info.reg_save_gp)
     {
       insn = emit_move_insn (gen_rtx_REG (DImode,
@@ -3202,32 +3227,6 @@ ia64_expand_prologue (void)
 	cfa_off -= 8;
       }
 
-  /* Handle BR0 specially -- it may be getting stored permanently in
-     some GR register.  */
-  if (TEST_HARD_REG_BIT (current_frame_info.mask, BR_REG (0)))
-    {
-      reg = gen_rtx_REG (DImode, BR_REG (0));
-      if (current_frame_info.reg_save_b0 != 0)
-	{
-	  alt_reg = gen_rtx_REG (DImode, current_frame_info.reg_save_b0);
-	  insn = emit_move_insn (alt_reg, reg);
-	  RTX_FRAME_RELATED_P (insn) = 1;
-
-	  /* Even if we're not going to generate an epilogue, we still
-	     need to save the register so that EH works.  */
-	  if (! epilogue_p)
-	    emit_insn (gen_prologue_use (alt_reg));
-	}
-      else
-	{
-	  alt_regno = next_scratch_gr_reg ();
-	  alt_reg = gen_rtx_REG (DImode, alt_regno);
-	  emit_move_insn (alt_reg, reg);
-	  do_spill (gen_movdi_x, alt_reg, cfa_off, reg);
-	  cfa_off -= 8;
-	}
-    }
-
   /* Spill the rest of the BR registers.  */
   for (regno = BR_REG (1); regno <= BR_REG (7); ++regno)
     if (TEST_HARD_REG_BIT (current_frame_info.mask, regno))
@@ -3361,6 +3360,22 @@ ia64_expand_epilogue (int sibcall_p)
       emit_move_insn (reg, alt_reg);
     }
 
+  /* Restore the return pointer.  */
+  if (TEST_HARD_REG_BIT (current_frame_info.mask, BR_REG (0)))
+    {
+      if (current_frame_info.reg_save_b0 != 0)
+	alt_reg = gen_rtx_REG (DImode, current_frame_info.reg_save_b0);
+      else
+	{
+	  alt_regno = next_scratch_gr_reg ();
+	  alt_reg = gen_rtx_REG (DImode, alt_regno);
+	  do_restore (gen_movdi_x, alt_reg, cfa_off);
+	  cfa_off -= 8;
+	}
+      reg = gen_rtx_REG (DImode, BR_REG (0));
+      emit_move_insn (reg, alt_reg);
+    }
+
   /* We should now be at the base of the gr/br/fr spill area.  */
   gcc_assert (cfa_off == (current_frame_info.spill_cfa_off
 			  + current_frame_info.spill_size));
@@ -3379,23 +3394,7 @@ ia64_expand_epilogue (int sibcall_p)
 	cfa_off -= 8;
       }
 
-  /* Restore the branch registers.  Handle B0 specially, as it may
-     have gotten stored in some GR register.  */
-  if (TEST_HARD_REG_BIT (current_frame_info.mask, BR_REG (0)))
-    {
-      if (current_frame_info.reg_save_b0 != 0)
-	alt_reg = gen_rtx_REG (DImode, current_frame_info.reg_save_b0);
-      else
-	{
-	  alt_regno = next_scratch_gr_reg ();
-	  alt_reg = gen_rtx_REG (DImode, alt_regno);
-	  do_restore (gen_movdi_x, alt_reg, cfa_off);
-	  cfa_off -= 8;
-	}
-      reg = gen_rtx_REG (DImode, BR_REG (0));
-      emit_move_insn (reg, alt_reg);
-    }
-
+  /* Restore the branch registers.  */
   for (regno = BR_REG (1); regno <= BR_REG (7); ++regno)
     if (TEST_HARD_REG_BIT (current_frame_info.mask, regno))
       {
--- gcc/testsuite/g++.dg/eh/pr29166.C	2006-06-02 16:57:24.000000000 +0200
+++ gcc/testsuite/g++.dg/eh/pr29166.C	2006-11-24 23:10:18.000000000 +0100
@@ -0,0 +1,197 @@
+// PR 29166: r4-r7 corrupted when unwinding.
+// { dg-do run }
+
+class Ex 
+{ 
+public: 
+  int val; 
+
+  Ex( int v )
+   : val( v ) 
+   { }
+
+};
+
+void doIt() 
+{
+  int OFF( 1000 ); 
+  register int v1=OFF+1,v2=OFF+2,v3=OFF+3,v4=OFF+4,v5=OFF+5,v6=OFF+6,v7=OFF+7,v8=OFF+8,v9=OFF+9,v10=OFF+10;
+  register int v11=OFF+11,v12=OFF+12,v13=OFF+13,v14=OFF+14,v15=OFF+15,v16=OFF+16,v17=OFF+17,v18=OFF+18,v19=OFF+19,v20=OFF+20;
+  register int v21=OFF+21,v22=OFF+22,v23=OFF+23,v24=OFF+24,v25=OFF+25,v26=OFF+26,v27=OFF+27,v28=OFF+28,v29=OFF+29,v30=OFF+30;
+  register int v31=OFF+31,v32=OFF+32,v33=OFF+33,v34=OFF+34,v35=OFF+35,v36=OFF+36,v37=OFF+37,v38=OFF+38,v39=OFF+39,v40=OFF+40;
+  register int v41=OFF+41,v42=OFF+42,v43=OFF+43,v44=OFF+44,v45=OFF+45,v46=OFF+46,v47=OFF+47,v48=OFF+48,v49=OFF+49,v50=OFF+50;
+  register int v51=OFF+51,v52=OFF+52,v53=OFF+53,v54=OFF+54,v55=OFF+55,v56=OFF+56,v57=OFF+57,v58=OFF+58,v59=OFF+59,v60=OFF+60;
+  register int v61=OFF+61,v62=OFF+62,v63=OFF+63,v64=OFF+64,v65=OFF+65,v66=OFF+66,v67=OFF+67,v68=OFF+68,v69=OFF+69,v70=OFF+70;
+  register int v71=OFF+71,v72=OFF+72,v73=OFF+73,v74=OFF+74,v75=OFF+75,v76=OFF+76,v77=OFF+77,v78=OFF+78,v79=OFF+79,v80=OFF+80;
+  register int v81=OFF+81,v82=OFF+82,v83=OFF+83,v84=OFF+84,v85=OFF+85,v86=OFF+86,v87=OFF+87,v88=OFF+88,v89=OFF+89,v90=OFF+90;
+  register int v91=OFF+91,v92=OFF+92,v93=OFF+93,v94=OFF+94,v95=OFF+95,v96=OFF+96,v97=OFF+97,v98=OFF+98,v99=OFF+99,v100=OFF+100;
+  register int v101=OFF+101,v102=OFF+102,v103=OFF+103,v104=OFF+104,v105=OFF+105,v106=OFF+106,v107=OFF+107,v108=OFF+108,v109=OFF+109,v110=OFF+110;
+  register int v111=OFF+111,v112=OFF+112,v113=OFF+113,v114=OFF+114,v115=OFF+115,v116=OFF+116,v117=OFF+117,v118=OFF+118,v119=OFF+119,v120=OFF+120;
+  register int v121=OFF+121,v122=OFF+122,v123=OFF+123,v124=OFF+124,v125=OFF+125,v126=OFF+126,v127=OFF+127,v128=OFF+128,v129=OFF+129,v130=OFF+130;
+  register int v131=OFF+131,v132=OFF+132,v133=OFF+133,v134=OFF+134,v135=OFF+135,v136=OFF+136,v137=OFF+137,v138=OFF+138,v139=OFF+139,v140=OFF+140;
+  register int v141=OFF+141,v142=OFF+142,v143=OFF+143,v144=OFF+144,v145=OFF+145,v146=OFF+146,v147=OFF+147,v148=OFF+148,v149=OFF+149,v150=OFF+150;
+  register int v151=OFF+151,v152=OFF+152,v153=OFF+153,v154=OFF+154,v155=OFF+155,v156=OFF+156,v157=OFF+157,v158=OFF+158,v159=OFF+159,v160=OFF+160;
+  register int v161=OFF+161,v162=OFF+162,v163=OFF+163,v164=OFF+164,v165=OFF+165,v166=OFF+166,v167=OFF+167,v168=OFF+168,v169=OFF+169,v170=OFF+170;
+  register int v171=OFF+171,v172=OFF+172,v173=OFF+173,v174=OFF+174,v175=OFF+175,v176=OFF+176,v177=OFF+177,v178=OFF+178,v179=OFF+179,v180=OFF+180;
+  register int v181=OFF+181,v182=OFF+182,v183=OFF+183,v184=OFF+184,v185=OFF+185,v186=OFF+186,v187=OFF+187,v188=OFF+188,v189=OFF+189,v190=OFF+190;
+  register int v191=OFF+191,v192=OFF+192,v193=OFF+193,v194=OFF+194,v195=OFF+195,v196=OFF+196,v197=OFF+197,v198=OFF+198,v199=OFF+199,v200=OFF+200;
+  register int v201=OFF+201,v202=OFF+202,v203=OFF+203,v204=OFF+204,v205=OFF+205,v206=OFF+206,v207=OFF+207,v208=OFF+208,v209=OFF+209,v210=OFF+210;
+  register int v211=OFF+211,v212=OFF+212,v213=OFF+213,v214=OFF+214,v215=OFF+215,v216=OFF+216,v217=OFF+217,v218=OFF+218,v219=OFF+219,v220=OFF+220;
+  register int v231=OFF+231,v232=OFF+232,v233=OFF+233,v234=OFF+234,v235=OFF+235,v236=OFF+236,v237=OFF+237,v238=OFF+238,v239=OFF+239,v240=OFF+240;
+  register int v241=OFF+241,v242=OFF+242,v243=OFF+243,v244=OFF+244,v245=OFF+245,v246=OFF+246,v247=OFF+247,v248=OFF+248,v249=OFF+249,v250=OFF+250;
+  register int v251=OFF+251,v252=OFF+252,v253=OFF+253,v254=OFF+254,v255=OFF+255,v256=OFF+256,v257=OFF+257,v258=OFF+258,v259=OFF+259,v260=OFF+260;
+  register int v261=OFF+261,v262=OFF+262,v263=OFF+263,v264=OFF+264,v265=OFF+265,v266=OFF+266,v267=OFF+267,v268=OFF+268,v269=OFF+269,v270=OFF+270;
+  register int v271=OFF+271,v272=OFF+272,v273=OFF+273,v274=OFF+274,v275=OFF+275,v276=OFF+276,v277=OFF+277,v278=OFF+278,v279=OFF+279,v280=OFF+280;
+  register int v281=OFF+281,v282=OFF+282,v283=OFF+283,v284=OFF+284,v285=OFF+285,v286=OFF+286,v287=OFF+287,v288=OFF+288,v289=OFF+289,v290=OFF+290;
+  register int v291=OFF+291,v292=OFF+292,v293=OFF+293,v294=OFF+294,v295=OFF+295,v296=OFF+296,v297=OFF+297,v298=OFF+298,v299=OFF+299,v300=OFF+300;
+
+  register int sum = 0;
+  sum +=v1+v2+v3+v4+v5+v6+v7+v8+v9+v10;
+  sum +=v11+v12+v13+v14+v15+v16+v17+v18+v19+v20;
+  sum +=v21+v22+v23+v24+v25+v26+v27+v28+v29+v30;
+  sum +=v31+v32+v33+v34+v35+v36+v37+v38+v39+v40;
+  sum +=v41+v42+v43+v44+v45+v46+v47+v48+v49+v50;
+  sum +=v51+v52+v53+v54+v55+v56+v57+v58+v59+v60;
+  sum +=v61+v62+v63+v64+v65+v66+v67+v68+v69+v70;
+  sum +=v71+v72+v73+v74+v75+v76+v77+v78+v79+v80;
+  sum +=v81+v82+v83+v84+v85+v86+v87+v88+v89+v90;
+  sum +=v91+v92+v93+v94+v95+v96+v97+v98+v99+v100;
+  sum +=v101+v102+v103+v104+v105+v106+v107+v108+v109+v110;
+  sum +=v111+v112+v113+v114+v115+v116+v117+v118+v119+v120;
+  sum +=v121+v122+v123+v124+v125+v126+v127+v128+v129+v130;
+  sum +=v131+v132+v133+v134+v135+v136+v137+v138+v139+v140;
+  sum +=v141+v142+v143+v144+v145+v146+v147+v148+v149+v150;
+  sum +=v151+v152+v153+v154+v155+v156+v157+v158+v159+v160;
+  sum +=v161+v162+v163+v164+v165+v166+v167+v168+v169+v170;
+  sum +=v171+v172+v173+v174+v175+v176+v177+v178+v179+v180;
+  sum +=v181+v182+v183+v184+v185+v186+v187+v188+v189+v190;
+  sum +=v191+v192+v193+v194+v195+v196+v197+v198+v199+v200;
+  sum +=v201+v202+v203+v204+v205+v206+v207+v208+v209+v210;
+  sum +=v211+v212+v213+v214+v215+v216+v217+v218+v219+v220;
+  sum +=v231+v232+v233+v234+v235+v236+v237+v238+v239+v240;
+  sum +=v241+v242+v243+v244+v245+v246+v247+v248+v249+v250;
+  sum +=v251+v252+v253+v254+v255+v256+v257+v258+v259+v260;
+  sum +=v261+v262+v263+v264+v265+v266+v267+v268+v269+v270;
+  sum +=v271+v272+v273+v274+v275+v276+v277+v278+v279+v280;
+  sum +=v281+v282+v283+v284+v285+v286+v287+v288+v289+v290;
+  sum +=v291+v292+v293+v294+v295+v296+v297+v298+v299+v300;
+
+  throw Ex( sum );  
+}
+
+void test() 
+{
+  try {
+    doIt(); 
+  } catch( Ex& ) { } 
+}
+
+int main(int argc, char** argv) 
+{
+  int OFF(0); 
+  register int v1=OFF+1,v2=OFF+2,v3=OFF+3,v4=OFF+4,v5=OFF+5,v6=OFF+6,v7=OFF+7,v8=OFF+8,v9=OFF+9,v10=OFF+10;
+  register int v11=OFF+11,v12=OFF+12,v13=OFF+13,v14=OFF+14,v15=OFF+15,v16=OFF+16,v17=OFF+17,v18=OFF+18,v19=OFF+19,v20=OFF+20;
+  register int v21=OFF+21,v22=OFF+22,v23=OFF+23,v24=OFF+24,v25=OFF+25,v26=OFF+26,v27=OFF+27,v28=OFF+28,v29=OFF+29,v30=OFF+30;
+  register int v31=OFF+31,v32=OFF+32,v33=OFF+33,v34=OFF+34,v35=OFF+35,v36=OFF+36,v37=OFF+37,v38=OFF+38,v39=OFF+39,v40=OFF+40;
+  register int v41=OFF+41,v42=OFF+42,v43=OFF+43,v44=OFF+44,v45=OFF+45,v46=OFF+46,v47=OFF+47,v48=OFF+48,v49=OFF+49,v50=OFF+50;
+  register int v51=OFF+51,v52=OFF+52,v53=OFF+53,v54=OFF+54,v55=OFF+55,v56=OFF+56,v57=OFF+57,v58=OFF+58,v59=OFF+59,v60=OFF+60;
+  register int v61=OFF+61,v62=OFF+62,v63=OFF+63,v64=OFF+64,v65=OFF+65,v66=OFF+66,v67=OFF+67,v68=OFF+68,v69=OFF+69,v70=OFF+70;
+  register int v71=OFF+71,v72=OFF+72,v73=OFF+73,v74=OFF+74,v75=OFF+75,v76=OFF+76,v77=OFF+77,v78=OFF+78,v79=OFF+79,v80=OFF+80;
+  register int v81=OFF+81,v82=OFF+82,v83=OFF+83,v84=OFF+84,v85=OFF+85,v86=OFF+86,v87=OFF+87,v88=OFF+88,v89=OFF+89,v90=OFF+90;
+  register int v91=OFF+91,v92=OFF+92,v93=OFF+93,v94=OFF+94,v95=OFF+95,v96=OFF+96,v97=OFF+97,v98=OFF+98,v99=OFF+99,v100=OFF+100;
+  register int v101=OFF+101,v102=OFF+102,v103=OFF+103,v104=OFF+104,v105=OFF+105,v106=OFF+106,v107=OFF+107,v108=OFF+108,v109=OFF+109,v110=OFF+110;
+  register int v111=OFF+111,v112=OFF+112,v113=OFF+113,v114=OFF+114,v115=OFF+115,v116=OFF+116,v117=OFF+117,v118=OFF+118,v119=OFF+119,v120=OFF+120;
+  register int v121=OFF+121,v122=OFF+122,v123=OFF+123,v124=OFF+124,v125=OFF+125,v126=OFF+126,v127=OFF+127,v128=OFF+128,v129=OFF+129,v130=OFF+130;
+  register int v131=OFF+131,v132=OFF+132,v133=OFF+133,v134=OFF+134,v135=OFF+135,v136=OFF+136,v137=OFF+137,v138=OFF+138,v139=OFF+139,v140=OFF+140;
+  register int v141=OFF+141,v142=OFF+142,v143=OFF+143,v144=OFF+144,v145=OFF+145,v146=OFF+146,v147=OFF+147,v148=OFF+148,v149=OFF+149,v150=OFF+150;
+  register int v151=OFF+151,v152=OFF+152,v153=OFF+153,v154=OFF+154,v155=OFF+155,v156=OFF+156,v157=OFF+157,v158=OFF+158,v159=OFF+159,v160=OFF+160;
+  register int v161=OFF+161,v162=OFF+162,v163=OFF+163,v164=OFF+164,v165=OFF+165,v166=OFF+166,v167=OFF+167,v168=OFF+168,v169=OFF+169,v170=OFF+170;
+  register int v171=OFF+171,v172=OFF+172,v173=OFF+173,v174=OFF+174,v175=OFF+175,v176=OFF+176,v177=OFF+177,v178=OFF+178,v179=OFF+179,v180=OFF+180;
+  register int v181=OFF+181,v182=OFF+182,v183=OFF+183,v184=OFF+184,v185=OFF+185,v186=OFF+186,v187=OFF+187,v188=OFF+188,v189=OFF+189,v190=OFF+190;
+  register int v191=OFF+191,v192=OFF+192,v193=OFF+193,v194=OFF+194,v195=OFF+195,v196=OFF+196,v197=OFF+197,v198=OFF+198,v199=OFF+199,v200=OFF+200;
+  register int v201=OFF+201,v202=OFF+202,v203=OFF+203,v204=OFF+204,v205=OFF+205,v206=OFF+206,v207=OFF+207,v208=OFF+208,v209=OFF+209,v210=OFF+210;
+  register int v211=OFF+211,v212=OFF+212,v213=OFF+213,v214=OFF+214,v215=OFF+215,v216=OFF+216,v217=OFF+217,v218=OFF+218,v219=OFF+219,v220=OFF+220;
+  register int v231=OFF+231,v232=OFF+232,v233=OFF+233,v234=OFF+234,v235=OFF+235,v236=OFF+236,v237=OFF+237,v238=OFF+238,v239=OFF+239,v240=OFF+240;
+  register int v241=OFF+241,v242=OFF+242,v243=OFF+243,v244=OFF+244,v245=OFF+245,v246=OFF+246,v247=OFF+247,v248=OFF+248,v249=OFF+249,v250=OFF+250;
+  register int v251=OFF+251,v252=OFF+252,v253=OFF+253,v254=OFF+254,v255=OFF+255,v256=OFF+256,v257=OFF+257,v258=OFF+258,v259=OFF+259,v260=OFF+260;
+  register int v261=OFF+261,v262=OFF+262,v263=OFF+263,v264=OFF+264,v265=OFF+265,v266=OFF+266,v267=OFF+267,v268=OFF+268,v269=OFF+269,v270=OFF+270;
+  register int v271=OFF+271,v272=OFF+272,v273=OFF+273,v274=OFF+274,v275=OFF+275,v276=OFF+276,v277=OFF+277,v278=OFF+278,v279=OFF+279,v280=OFF+280;
+  register int v281=OFF+281,v282=OFF+282,v283=OFF+283,v284=OFF+284,v285=OFF+285,v286=OFF+286,v287=OFF+287,v288=OFF+288,v289=OFF+289,v290=OFF+290;
+  register int v291=OFF+291,v292=OFF+292,v293=OFF+293,v294=OFF+294,v295=OFF+295,v296=OFF+296,v297=OFF+297,v298=OFF+298,v299=OFF+299,v300=OFF+300;
+
+  int sum_before, sum_after; 
+
+  {
+    int sum( 0 );
+    sum +=v1+v2+v3+v4+v5+v6+v7+v8+v9+v10;
+    sum +=v11+v12+v13+v14+v15+v16+v17+v18+v19+v20;
+    sum +=v21+v22+v23+v24+v25+v26+v27+v28+v29+v30;
+    sum +=v31+v32+v33+v34+v35+v36+v37+v38+v39+v40;
+    sum +=v41+v42+v43+v44+v45+v46+v47+v48+v49+v50;
+    sum +=v51+v52+v53+v54+v55+v56+v57+v58+v59+v60;
+    sum +=v61+v62+v63+v64+v65+v66+v67+v68+v69+v70;
+    sum +=v71+v72+v73+v74+v75+v76+v77+v78+v79+v80;
+    sum +=v81+v82+v83+v84+v85+v86+v87+v88+v89+v90;
+    sum +=v91+v92+v93+v94+v95+v96+v97+v98+v99+v100;
+    sum +=v101+v102+v103+v104+v105+v106+v107+v108+v109+v110;
+    sum +=v111+v112+v113+v114+v115+v116+v117+v118+v119+v120;
+    sum +=v121+v122+v123+v124+v125+v126+v127+v128+v129+v130;
+    sum +=v131+v132+v133+v134+v135+v136+v137+v138+v139+v140;
+    sum +=v141+v142+v143+v144+v145+v146+v147+v148+v149+v150;
+    sum +=v151+v152+v153+v154+v155+v156+v157+v158+v159+v160;
+    sum +=v161+v162+v163+v164+v165+v166+v167+v168+v169+v170;
+    sum +=v171+v172+v173+v174+v175+v176+v177+v178+v179+v180;
+    sum +=v181+v182+v183+v184+v185+v186+v187+v188+v189+v190;
+    sum +=v191+v192+v193+v194+v195+v196+v197+v198+v199+v200;
+    sum +=v201+v202+v203+v204+v205+v206+v207+v208+v209+v210;
+    sum +=v211+v212+v213+v214+v215+v216+v217+v218+v219+v220;
+    sum +=v231+v232+v233+v234+v235+v236+v237+v238+v239+v240;
+    sum +=v241+v242+v243+v244+v245+v246+v247+v248+v249+v250;
+    sum +=v251+v252+v253+v254+v255+v256+v257+v258+v259+v260;
+    sum +=v261+v262+v263+v264+v265+v266+v267+v268+v269+v270;
+    sum +=v271+v272+v273+v274+v275+v276+v277+v278+v279+v280;
+    sum +=v281+v282+v283+v284+v285+v286+v287+v288+v289+v290;
+    sum +=v291+v292+v293+v294+v295+v296+v297+v298+v299+v300;
+
+    sum_before = sum;
+  }
+
+ test(); 
+
+ {
+   int sum( 0 );
+   sum +=v1+v2+v3+v4+v5+v6+v7+v8+v9+v10;
+   sum +=v11+v12+v13+v14+v15+v16+v17+v18+v19+v20;
+   sum +=v21+v22+v23+v24+v25+v26+v27+v28+v29+v30;
+   sum +=v31+v32+v33+v34+v35+v36+v37+v38+v39+v40;
+   sum +=v41+v42+v43+v44+v45+v46+v47+v48+v49+v50;
+   sum +=v51+v52+v53+v54+v55+v56+v57+v58+v59+v60;
+   sum +=v61+v62+v63+v64+v65+v66+v67+v68+v69+v70;
+   sum +=v71+v72+v73+v74+v75+v76+v77+v78+v79+v80;
+   sum +=v81+v82+v83+v84+v85+v86+v87+v88+v89+v90;
+   sum +=v91+v92+v93+v94+v95+v96+v97+v98+v99+v100;
+   sum +=v101+v102+v103+v104+v105+v106+v107+v108+v109+v110;
+   sum +=v111+v112+v113+v114+v115+v116+v117+v118+v119+v120;
+   sum +=v121+v122+v123+v124+v125+v126+v127+v128+v129+v130;
+   sum +=v131+v132+v133+v134+v135+v136+v137+v138+v139+v140;
+   sum +=v141+v142+v143+v144+v145+v146+v147+v148+v149+v150;
+   sum +=v151+v152+v153+v154+v155+v156+v157+v158+v159+v160;
+   sum +=v161+v162+v163+v164+v165+v166+v167+v168+v169+v170;
+   sum +=v171+v172+v173+v174+v175+v176+v177+v178+v179+v180;
+   sum +=v181+v182+v183+v184+v185+v186+v187+v188+v189+v190;
+   sum +=v191+v192+v193+v194+v195+v196+v197+v198+v199+v200;
+   sum +=v201+v202+v203+v204+v205+v206+v207+v208+v209+v210;
+   sum +=v211+v212+v213+v214+v215+v216+v217+v218+v219+v220;
+   sum +=v231+v232+v233+v234+v235+v236+v237+v238+v239+v240;
+   sum +=v241+v242+v243+v244+v245+v246+v247+v248+v249+v250;
+   sum +=v251+v252+v253+v254+v255+v256+v257+v258+v259+v260;
+   sum +=v261+v262+v263+v264+v265+v266+v267+v268+v269+v270;
+   sum +=v271+v272+v273+v274+v275+v276+v277+v278+v279+v280;
+   sum +=v281+v282+v283+v284+v285+v286+v287+v288+v289+v290;
+   sum +=v291+v292+v293+v294+v295+v296+v297+v298+v299+v300;
+
+   sum_after = sum; 
+ }
+
+  return sum_before != sum_after;
+}

gcc41-pr29241.patch:
 0 files changed

--- NEW FILE gcc41-pr29241.patch ---
2006-10-15  Jan Hubicka  <jh at suse.cz>

	PR middle-end/29241
	* cgraphunit.c (cgraph_preserve_function_body_p): Preserve functions
	declared always_inline even when not inlining.

	* gcc.c-torture/compile/pr29241.c: New testcase.

--- gcc/cgraphunit.c	(revision 117745)
+++ gcc/cgraphunit.c	(revision 117863)
@@ -1486,7 +1494,9 @@ cgraph_preserve_function_body_p (tree de
 {
   struct cgraph_node *node;
   if (!cgraph_global_info_ready)
-    return (DECL_INLINE (decl) && !flag_really_no_inline);
+    return (flag_really_no_inline
+	    ? lang_hooks.tree_inlining.disregard_inline_limits (decl)
+	    : DECL_INLINE (decl));
   /* Look if there is any clone around.  */
   for (node = cgraph_node (decl); node; node = node->next_clone)
     if (node->global.inlined_to)
--- gcc/testsuite/gcc.c-torture/compile/pr29241.c	(revision 0)
+++ gcc/testsuite/gcc.c-torture/compile/pr29241.c	(revision 117863)
@@ -0,0 +1,15 @@
+static inline __attribute__((always_inline)) void ip_finish_output2(){}
+void ip_fragment(void (*)(void));
+static inline __attribute__((always_inline)) void ip_finish_output()
+{
+ ip_fragment(ip_finish_output2);
+ ip_finish_output2();
+}
+void ip_mc_output()
+{
+ ip_finish_output();
+}
+void ip_output()
+{
+ ip_finish_output();
+}

gcc41-pr29299.patch:
 0 files changed

--- NEW FILE gcc41-pr29299.patch ---
2006-10-18  Jan Hubicka  <jh at suse.cz>

	PR middle-end/29299
	* cfgexpand.c (expand_used_vars_for_block): Vars marked used by user
	are used.

2006-10-15  Jan Hubicka  <jh at suse.cz>
            Richard Guenther  <rguenther at suse.de>

	PR middle-end/29299
	* cgraphunit.c (cgraph_finalize_compilation_unit): Call
	process_function_and_variable_attributes on all variables, including
	those discovered during cgraph construction phase.

	* gcc.dg/pr29299.c: New testcase.

--- gcc/cgraphunit.c	(revision 117745)
+++ gcc/cgraphunit.c	(revision 117863)
@@ -1055,6 +1055,7 @@ cgraph_finalize_compilation_unit (void)
   /* Keep track of already processed nodes when called multiple times for
      intermodule optimization.  */
   static struct cgraph_node *first_analyzed;
+  struct cgraph_node *first_processed = first_analyzed;
   static struct cgraph_varpool_node *first_analyzed_var;
 
   if (errorcount || sorrycount)
@@ -1077,7 +1078,10 @@ cgraph_finalize_compilation_unit (void)
     }
 
   timevar_push (TV_CGRAPH);
-  process_function_and_variable_attributes (first_analyzed, first_analyzed_var);
+  process_function_and_variable_attributes (first_processed,
+					    first_analyzed_var);
+  first_processed = cgraph_nodes;
+  first_analyzed_var = cgraph_varpool_nodes;
   cgraph_varpool_analyze_pending_decls ();
   if (cgraph_dump_file)
     {
@@ -1119,11 +1123,16 @@ cgraph_finalize_compilation_unit (void)
 	if (!edge->callee->reachable)
 	  cgraph_mark_reachable_node (edge->callee);
 
+      /* We finalize local static variables during constructing callgraph
+         edges.  Process their attributes too.  */
+      process_function_and_variable_attributes (first_processed,
+						first_analyzed_var);
+      first_processed = cgraph_nodes;
+      first_analyzed_var = cgraph_varpool_nodes;
       cgraph_varpool_analyze_pending_decls ();
     }
 
   /* Collect entry points to the unit.  */
-
   if (cgraph_dump_file)
     {
       fprintf (cgraph_dump_file, "Unit entry points:");
@@ -1163,7 +1172,6 @@ cgraph_finalize_compilation_unit (void)
       dump_cgraph (cgraph_dump_file);
     }
   first_analyzed = cgraph_nodes;
-  first_analyzed_var = cgraph_varpool_nodes;
   ggc_collect ();
   timevar_pop (TV_CGRAPH);
 }
--- gcc/cfgexpand.c	(revision 117745)
+++ gcc/cfgexpand.c	(revision 117863)
@@ -764,7 +764,12 @@ expand_used_vars_for_block (tree block, 
 
   /* Expand all variables at this level.  */
   for (t = BLOCK_VARS (block); t ; t = TREE_CHAIN (t))
-    if (TREE_USED (t))
+    if (TREE_USED (t)
+	/* Force local static variables to be output when marked by
+	   used attribute.  For unit-at-a-time, cgraph code already takes
+	   care of this.  */
+	|| (!flag_unit_at_a_time && TREE_STATIC (t)
+	    && DECL_PRESERVE_P (t)))
       expand_one_var (t, toplevel);
 
   this_sv_num = stack_vars_num;
--- gcc/testsuite/gcc.dg/pr29299.c	(revision 0)
+++ gcc/testsuite/gcc.dg/pr29299.c	(revision 117863)
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O" } */
+
+static int bof __attribute__((used));
+int foo()
+{
+	static int barbarbarbar __attribute__((used));
+};
+
+/* { dg-final { scan-assembler "barbarbarbar" } } */

gcc41-pr29612.patch:
 gcc/testsuite/gcc.dg/cpp/pr29612-1.c |   15 +++++++++++++++
 gcc/testsuite/gcc.dg/cpp/pr29612-2.c |   18 ++++++++++++++++++
 libcpp/directives.c                  |    2 +-
 3 files changed, 34 insertions(+), 1 deletion(-)

--- NEW FILE gcc41-pr29612.patch ---
2006-11-08  Jakub Jelinek  <jakub at redhat.com>

	PR preprocessor/29612
	* directives.c (do_linemarker): Set pfile->buffer->sysp always, not
	only when new_sysp is non-zero.

	* gcc.dg/cpp/pr29612-1.c: New test.
	* gcc.dg/cpp/pr29612-2.c: New test.

--- libcpp/directives.c.jj	2006-10-05 00:31:24.000000000 +0200
+++ libcpp/directives.c	2006-11-08 12:16:36.000000000 +0100
@@ -942,8 +943,8 @@ do_linemarker (cpp_reader *pfile)
 	  flag = read_flag (pfile, flag);
 	  if (flag == 4)
 	    new_sysp = 2;
-	  pfile->buffer->sysp = new_sysp;
 	}
+      pfile->buffer->sysp = new_sysp;
 
       check_eol (pfile);
     }
--- gcc/testsuite/gcc.dg/cpp/pr29612-1.c.jj	2006-11-08 12:52:28.000000000 +0100
+++ gcc/testsuite/gcc.dg/cpp/pr29612-1.c	2006-11-08 13:07:01.000000000 +0100
@@ -0,0 +1,15 @@
+/* PR preprocessor/29612 */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+# 6 "pr29612-1.c"
+
+int foo (void) { return 'ab'; } /* { dg-warning "multi-character" } */
+
+# 1 "foo.h" 1 3
+
+int bar (void) { return 'ab'; } /* No warning in system header.  */
+
+# 14 "pr29612-1.c" 2
+
+int baz (void) { return 'ab'; } /* { dg-warning "multi-character" } */
--- gcc/testsuite/gcc.dg/cpp/pr29612-2.c.jj	2006-11-08 12:52:28.000000000 +0100
+++ gcc/testsuite/gcc.dg/cpp/pr29612-2.c	2006-11-08 13:01:59.000000000 +0100
@@ -0,0 +1,18 @@
+/* PR preprocessor/29612 */
+/* { dg-do preprocess } */
+/* { dg-options "-Wtraditional -fno-show-column" } */
+
+# 6 "pr29612-2.c"
+
+#if 1U /* { dg-warning "traditional C rejects" "numeric constant suffix" } */
+#endif
+
+# 1 "foo.h" 1 3
+
+#if 1U
+#endif /* No warning in system header.  */
+
+# 16 "pr29612-2.c" 2
+
+#if 1U /* { dg-warning "traditional C rejects" "numeric constant suffix" } */
+#endif

gcc41-pr29703.patch:
 Matcher.java |    1 +
 1 files changed, 1 insertion(+)

--- NEW FILE gcc41-pr29703.patch ---
2006-11-06  Ito Kazumitsu  <kaz at maczuka.gcd.org>

	PR classpath/29703
	* java/util/regex/Matcher.java(reset): Reset inputCharIndexed. 

--- libjava/classpath/java/util/regex/Matcher.java.orig	2006-08-25 05:06:23.000000000 -0700
+++ libjava/classpath/java/util/regex/Matcher.java	2006-11-07 12:10:00.000000000 -0800
@@ -278,6 +278,7 @@
   public Matcher reset (CharSequence input)
   {
     this.input = input;
+    this.inputCharIndexed = RE.makeCharIndexed(input, 0);
     return reset();
   }
   

gcc41-pr30110.patch:
 0 files changed

--- NEW FILE gcc41-pr30110.patch ---
2006-12-08  Ben Konrath  <bkonrath at redhat.com>

	PR libgcj/30110:
	* Makefile.am: Add contents of classpath/external to src.zip.
	* Makefile.in: Regenerate.

--- libjava/Makefile.am	(revision 119663)
+++ libjava/Makefile.am	(revision 119664)
@@ -913,6 +913,27 @@ src.zip:
 	    echo $(srcdir)/classpath; \
 	    echo $$file; \
 	  done ); \
+	  ( cd $(srcdir)/classpath/external/sax; \
+	  find org -name '*.java' -print | \
+	  while read file; do \
+	    echo "x-C" | sed -e 's/^.//'; \
+	    echo $(srcdir)/classpath/external/sax; \
+	    echo $$file; \
+	  done ); \
+	  ( cd $(srcdir)/classpath/external/relaxngDatatype; \
+	  find org -name '*.java' -print | \
+	  while read file; do \
+	    echo "x-C" | sed -e 's/^.//'; \
+	    echo $(srcdir)/classpath/external/relaxngDatatype; \
+	    echo $$file; \
+	  done ); \
+	  ( cd $(srcdir)/classpath/external/w3c_dom; \
+	  find org -name '*.java' -print | \
+	  while read file; do \
+	    echo "x-C" | sed -e 's/^.//'; \
+	    echo $(srcdir)/classpath/external/w3c_dom; \
+	    echo $$file; \
+	  done ); \
 ## Now the build tree.
 	  ( cd classpath; \
 	    find gnu java -name '*.java' -print | \
--- libjava/Makefile.in	(revision 119663)
+++ libjava/Makefile.in	(revision 119664)
@@ -11864,6 +11864,27 @@ src.zip:
 	    echo $(srcdir)/classpath; \
 	    echo $$file; \
 	  done ); \
+	  ( cd $(srcdir)/classpath/external/sax; \
+	  find org -name '*.java' -print | \
+	  while read file; do \
+	    echo "x-C" | sed -e 's/^.//'; \
+	    echo $(srcdir)/classpath/external/sax; \
+	    echo $$file; \
+	  done ); \
+	  ( cd $(srcdir)/classpath/external/relaxngDatatype; \
+	  find org -name '*.java' -print | \
+	  while read file; do \
+	    echo "x-C" | sed -e 's/^.//'; \
+	    echo $(srcdir)/classpath/external/relaxngDatatype; \
+	    echo $$file; \
+	  done ); \
+	  ( cd $(srcdir)/classpath/external/w3c_dom; \
+	  find org -name '*.java' -print | \
+	  while read file; do \
+	    echo "x-C" | sed -e 's/^.//'; \
+	    echo $(srcdir)/classpath/external/w3c_dom; \
+	    echo $$file; \
+	  done ); \
 	  ( cd classpath; \
 	    find gnu java -name '*.java' -print | \
 	    while read file; do \

gcc41-pr30113.patch:
 0 files changed

--- NEW FILE gcc41-pr30113.patch ---
2006-12-11  Zdenek Dvorak <dvorakz at suse.cz>

	PR rtl-optimization/30113
	* loop-iv.c (implies_p): Require the mode of the operands to be
	scalar.

--- gcc/loop-iv.c	(revision 119747)
+++ gcc/loop-iv.c	(revision 119748)
@@ -1490,7 +1490,7 @@ implies_p (rtx a, rtx b)
 	    mode = VOIDmode;
 	}
 
-      if (mode != VOIDmode
+      if (SCALAR_INT_MODE_P (mode)
 	  && rtx_equal_p (op1, opb1)
 	  && simplify_gen_binary (MINUS, mode, opb0, op0) == const1_rtx)
 	return true;

gcc41-pr30143.patch:
 0 files changed

--- NEW FILE gcc41-pr30143.patch ---
2006-12-20  Andrew Pinski  <pinskia at gmail.com>

	PR middle-end/30143
	* omp-low.c (init_tmp_var): New function.
	(save_tmp_var): New function.
	(lower_omp_1): Use them for VAR_DECL.

	* gcc.dg/gomp/complex-1.c: New testcase.

--- gcc/omp-low.c	(revision 119958)
+++ gcc/omp-low.c	(working copy)
@@ -4188,6 +4188,40 @@ lower_regimplify (tree *tp, struct walk_
     tsi_link_before (&wi->tsi, pre, TSI_SAME_STMT);
 }
 
+/* Copy EXP into a temporary.  Insert the initialization statement before TSI.  */
+
+static tree
+init_tmp_var (tree exp, tree_stmt_iterator *tsi)
+{
+  tree t, stmt;
+
+  t = create_tmp_var (TREE_TYPE (exp), NULL);
+  if (TREE_CODE (TREE_TYPE (t)) == COMPLEX_TYPE)
+    DECL_COMPLEX_GIMPLE_REG_P (t) = 1;
+  stmt = build2 (MODIFY_EXPR, TREE_TYPE (t), t, exp);
+  SET_EXPR_LOCUS (stmt, EXPR_LOCUS (tsi_stmt (*tsi)));
+  tsi_link_before (tsi, stmt, TSI_SAME_STMT);
+
+  return t;
+}
+
+/* Similarly, but copy from the temporary and insert the statement
+   after the iterator.  */
+
+static tree
+save_tmp_var (tree exp, tree_stmt_iterator *tsi)
+{
+  tree t, stmt;
+
+  t = create_tmp_var (TREE_TYPE (exp), NULL);
+  if (TREE_CODE (TREE_TYPE (t)) == COMPLEX_TYPE)
+    DECL_COMPLEX_GIMPLE_REG_P (t) = 1;
+  stmt = build2 (MODIFY_EXPR, TREE_TYPE (t), exp, t);
+  SET_EXPR_LOCUS (stmt, EXPR_LOCUS (tsi_stmt (*tsi)));
+  tsi_link_after (tsi, stmt, TSI_SAME_STMT);
+
+  return t;
+}
 
 /* Callback for walk_stmts.  Lower the OpenMP directive pointed by TP.  */
 
@@ -4253,7 +4287,17 @@ lower_omp_1 (tree *tp, int *walk_subtree
 
     case VAR_DECL:
       if (ctx && DECL_HAS_VALUE_EXPR_P (t))
-	lower_regimplify (tp, wi);
+	{
+	  lower_regimplify (&t, wi);
+	  if (wi->val_only)
+	    {
+	      if (wi->is_lhs)
+		t = save_tmp_var (t, &wi->tsi);
+	      else
+		t = init_tmp_var (t, &wi->tsi);
+	    }
+	  *tp = t;
+	}
       break;
 
     case ADDR_EXPR:
--- gcc/testsuite/gcc.dg/gomp/complex-1.c	(revision 0)
+++ gcc/testsuite/gcc.dg/gomp/complex-1.c	(revision 0)
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp -O1" } */
+/* PR middle-end/30143 */
+
+
+int f (int n)
+{
+  int i;
+  _Complex float t;
+#pragma omp parallel
+    for (i = 1; i < n - 1; ++i)
+      t+=1;
+}

gcc41-pr30230.patch:
 config/ia64/ia64.c           |   57 ++++++++++++++++++++++++++++++++++++-------
 testsuite/g++.dg/eh/ia64-2.C |   57 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 106 insertions(+), 8 deletions(-)

--- NEW FILE gcc41-pr30230.patch ---
2006-12-16  Jakub Jelinek  <jakub at redhat.com>

	PR target/30230
	* config/ia64/ia64.c (ia64_add_bundle_selector_before): New function.
	(bundling): Use it.

	* g++.dg/eh/ia64-2.C: New test.

--- gcc/config/ia64/ia64.c.jj	2006-12-08 15:58:05.000000000 +0100
+++ gcc/config/ia64/ia64.c	2006-12-16 10:01:38.000000000 +0100
@@ -7693,6 +7693,51 @@ get_next_important_insn (rtx insn, rtx t
   return NULL_RTX;
 }
 
+/* Add a bundle selector TEMPLATE0 before INSN.  */
+
+static void
+ia64_add_bundle_selector_before (int template0, rtx insn)
+{
+  rtx b = gen_bundle_selector (GEN_INT (template0));
+  ia64_emit_insn_before (b, insn);
+#if NR_BUNDLES == 10
+  if ((template0 == 4 || template0 == 5)
+      && (flag_unwind_tables || (flag_exceptions && !USING_SJLJ_EXCEPTIONS)))
+    {
+      int i;
+      rtx note = NULL_RTX;
+
+      /* In .mbb and .bbb bundles, check if CALL_INSN isn't in the
+	 first or second slot.  If it is and has REG_EH_NOTE set, copy it
+	 to following nops, as br.call sets rp to the address of following
+	 bundle and therefore an EH region end must be on a bundle
+	 boundary.  */
+      insn = PREV_INSN (insn);
+      for (i = 0; i < 3; i++)
+	{
+	  do
+	    insn = next_active_insn (insn);
+	  while (GET_CODE (insn) == INSN
+		 && get_attr_empty (insn) == EMPTY_YES);
+	  if (GET_CODE (insn) == CALL_INSN)
+	    note = find_reg_note (insn, REG_EH_REGION, NULL_RTX);
+	  else if (note)
+	    {
+	      int code;
+	      gcc_assert ((code = recog_memoized (insn)) == CODE_FOR_nop
+			  || code == CODE_FOR_nop_b);
+	      if (find_reg_note (insn, REG_EH_REGION, NULL_RTX))
+		note = NULL_RTX;
+	      else
+		REG_NOTES (insn)
+		  = gen_rtx_EXPR_LIST (REG_EH_REGION, XEXP (note, 0),
+				       REG_NOTES (insn));
+	    }
+	}
+    }
+#endif
+}
+
 /* The following function does insn bundling.  Bundling means
    inserting templates and nop insns to fit insn groups into permitted
    templates.  Instruction scheduling uses NDFA (non-deterministic
@@ -7974,8 +8019,7 @@ bundling (FILE *dump, int verbose, rtx p
 		/* We are at the start of a bundle: emit the template
 		   (it should be defined).  */
 		gcc_assert (template0 >= 0);
-		b = gen_bundle_selector (GEN_INT (template0));
-		ia64_emit_insn_before (b, nop);
+		ia64_add_bundle_selector_before (template0, nop);
 		/* If we have two bundle window, we make one bundle
 		   rotation.  Otherwise template0 will be undefined
 		   (negative value).  */
@@ -8001,8 +8045,7 @@ bundling (FILE *dump, int verbose, rtx p
 	  /* The current insn is at the bundle start: emit the
 	     template.  */
 	  gcc_assert (template0 >= 0);
-	  b = gen_bundle_selector (GEN_INT (template0));
-	  ia64_emit_insn_before (b, insn);
+	  ia64_add_bundle_selector_before (template0, insn);
 	  b = PREV_INSN (insn);
 	  insn = b;
 	  /* See comment above in analogous place for emitting nops
@@ -8024,8 +8067,7 @@ bundling (FILE *dump, int verbose, rtx p
 	      /* See comment above in analogous place for emitting nops
 		 after the insn.  */
 	      gcc_assert (template0 >= 0);
-	      b = gen_bundle_selector (GEN_INT (template0));
-	      ia64_emit_insn_before (b, insn);
+	      ia64_add_bundle_selector_before (template0, insn);
 	      b = PREV_INSN (insn);
 	      insn = b;
 	      template0 = template1;
@@ -8119,8 +8161,7 @@ bundling (FILE *dump, int verbose, rtx p
 	      }
 	    /* Put the MM-insn in the same slot of a bundle with the
 	       same template as the original one.  */
-	    ia64_emit_insn_before (gen_bundle_selector (GEN_INT (template0)),
-				   insn);
+	    ia64_add_bundle_selector_before (template0, insn);
 	    /* To put the insn in the same slot, add necessary number
 	       of nops.  */
 	    for (j = n; j > 0; j --)
--- gcc/testsuite/g++.dg/eh/ia64-2.C.jj	2006-12-16 10:06:38.000000000 +0100
+++ gcc/testsuite/g++.dg/eh/ia64-2.C	2006-12-16 10:09:03.000000000 +0100
@@ -0,0 +1,57 @@
+// PR target/30230
+// This testcase failed on IA-64, where end of an EH region ended
+// in the middle of a bundle (with br.call insn in first or second
+// slot of .bbb/.mbb bundles and EH region end right after it).
+// But br.call returns to the start of the next bundlem so during
+// unwinding the call was considered to be outside of the EH region
+// while it should have been inside.
+// { dg-options "-O2" }
+// { dg-do run }
+
+struct A {};
+struct B { virtual ~B(); };
+B::~B () {}
+struct C { void foo (short &, B &); };
+struct D { void *d1; C *d2; virtual void virt (void) {} };
+struct E { D *e1; B *e2; };
+struct F { void bar (void *, B &); };
+F *p __attribute__((weak));
+volatile int r;
+
+void C::foo (short &x, B &)
+{
+  if (r)
+    throw A ();
+  x = 1;
+}
+
+void F::bar (void *, B &)
+{
+  throw A ();
+}
+
+void baz (E &x)
+{
+  short g = 0;
+  B b = *x.e2;
+  x.e1->d2->foo (g, b);
+  if (g)
+    p->bar(x.e1->d1, b);
+}
+
+int main ()
+{
+  F g;
+  D s;
+  E h;
+  p = &g;
+  h.e1 = &s;
+  try
+    {
+      baz (h);
+    }
+  catch (A &)
+    {
+    }
+  return 0;
+}

gcc41-pr30262.patch:
 testsuite/gcc.c-torture/execute/20061220-1.c |   72 +++++++++++++++++++++++++++
 testsuite/gcc.dg/gomp/asm-1.c                |   19 +++++++
 tree-nested.c                                |   45 ++++++++++++++++
 3 files changed, 136 insertions(+)

--- NEW FILE gcc41-pr30262.patch ---
2006-12-20  Jakub Jelinek  <jakub at redhat.com>

	PR middle-end/30262
	PR middle-end/30263
	* tree-nested.c (walk_asm_expr): New function.
	(walk_stmts): Use it for ASM_EXPR.

	* gcc.c-torture/execute/20061220-1.c: New test.
	* gcc.dg/gomp/asm-1.c: New test.

--- gcc/tree-nested.c.jj	2006-12-08 15:58:09.000000000 +0100
+++ gcc/tree-nested.c	2006-12-20 16:28:35.000000000 +0100
@@ -546,6 +546,47 @@ get_nl_goto_field (struct nesting_info *
   return field;
 }
 
+/* Helper function for walk_stmts.  Walk output operands of an ASM_EXPR.  */
+
+static void
+walk_asm_expr (struct walk_stmt_info *wi, tree stmt)
+{
+  int noutputs = list_length (ASM_OUTPUTS (stmt));
+  const char **oconstraints
+    = (const char **) alloca ((noutputs) * sizeof (const char *));
+  int i;
+  tree link;
+  const char *constraint;
+  bool allows_mem, allows_reg, is_inout;
+
+  wi->is_lhs = true;
+  for (i=0, link = ASM_OUTPUTS (stmt); link; ++i, link = TREE_CHAIN (link))
+    {
+      constraint = TREE_STRING_POINTER (TREE_VALUE (TREE_PURPOSE (link)));
+      oconstraints[i] = constraint;
+      parse_output_constraint (&constraint, i, 0, 0, &allows_mem,
+			       &allows_reg, &is_inout);
+
+      wi->val_only = (allows_reg || !allows_mem);
+      walk_tree (&TREE_VALUE (link), wi->callback, wi, NULL);
+    }
+
+  for (link = ASM_INPUTS (stmt); link; link = TREE_CHAIN (link))
+    {
+      constraint = TREE_STRING_POINTER (TREE_VALUE (TREE_PURPOSE (link)));
+      parse_input_constraint (&constraint, 0, 0, noutputs, 0,
+			      oconstraints, &allows_mem, &allows_reg);
+
+      wi->val_only = (allows_reg || !allows_mem);
+      /* Although input "m" is not really a LHS, we need a lvalue.  */
+      wi->is_lhs = !wi->val_only;
+      walk_tree (&TREE_VALUE (link), wi->callback, wi, NULL);
+    }
+
+  wi->is_lhs = false;
+  wi->val_only = true;
+}
+
 /* Iterate over all sub-statements of *TP calling walk_tree with
    WI->CALLBACK for every sub-expression in each statement found.  */
 
@@ -628,6 +669,10 @@ walk_stmts (struct walk_stmt_info *wi, t
       wi->is_lhs = false;
       break;
 
+    case ASM_EXPR:
+      walk_asm_expr (wi, *tp);
+      break;
+
     default:
       wi->val_only = true;
       walk_tree (tp, wi->callback, wi, NULL);
--- gcc/testsuite/gcc.c-torture/execute/20061220-1.c.jj	2006-12-20 15:40:09.000000000 +0100
+++ gcc/testsuite/gcc.c-torture/execute/20061220-1.c	2006-12-20 15:39:33.000000000 +0100
@@ -0,0 +1,72 @@
+/* PR middle-end/30262 */
+extern void abort (void);
+
+int
+foo (void)
+{
+  unsigned int x = 0;
+
+  void nested (void)
+  {
+    x = 254;
+  }
+
+  nested ();
+  asm volatile ("" :: "r" (x));
+  asm volatile ("" :: "m" (x));
+  asm volatile ("" :: "mr" (x));
+  asm volatile ("" : "=r" (x) : "0" (x));
+  asm volatile ("" : "=m" (x) : "m" (x));
+  return x;
+}
+
+int
+bar (void)
+{
+  unsigned int x = 0;
+
+  void nested (void)
+  {
+    asm volatile ("" :: "r" (x));
+    asm volatile ("" :: "m" (x));
+    asm volatile ("" :: "mr" (x));
+    x += 4;
+    asm volatile ("" : "=r" (x) : "0" (x));
+    asm volatile ("" : "=m" (x) : "m" (x));
+  }
+
+  nested ();
+  return x;
+}
+
+int
+baz (void)
+{
+  unsigned int x = 0;
+
+  void nested (void)
+  {
+    void nested2 (void)
+    {
+      asm volatile ("" :: "r" (x));
+      asm volatile ("" :: "m" (x));
+      asm volatile ("" :: "mr" (x));
+      x += 4;
+      asm volatile ("" : "=r" (x) : "0" (x));
+      asm volatile ("" : "=m" (x) : "m" (x));
+    }
+    nested2 ();
+    nested2 ();
+  }
+
+  nested ();
+  return x;
+}
+
+int
+main (void)
+{
+  if (foo () != 254 || bar () != 4 || baz () != 8)
+    abort ();
+  return 0;
+}
--- gcc/testsuite/gcc.dg/gomp/asm-1.c.jj	2006-12-20 16:35:57.000000000 +0100
+++ gcc/testsuite/gcc.dg/gomp/asm-1.c	2006-12-20 16:36:41.000000000 +0100
@@ -0,0 +1,19 @@
+/* PR middle-end/30263 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fopenmp" } */
+
+void
+foo (void)
+{
+  int s0, s1 = 5, s2 = 6;
+  int p0, p1, p2;
+  int f0 = 4, f1 = 5, f2 = 6;
+#pragma omp parallel shared (s0, s1, s2) private (p0, p1, p2) \
+	    firstprivate (f0, f1, f2)
+  {
+    asm ("" : "=m" (p0) : "m" (p1), "mr" (p2));
+    if (omp_get_thread_num () == 0)
+      asm ("" : "=m" (s0) : "m" (s1), "mr" (s2));
+    asm ("" : "=m" (f0) : "m" (f1), "mr" (f2));
+  }
+}


--- NEW FILE protoize.1 ---
.\" Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation
.\" See section COPYING for conditions for redistribution
.\"
.TH protoize 1 "8 December 2006" "GCC" "GNU"
.SH NAME
protoize, unprotoize \- automatically add or remove function prototypes
.SH SYNOPSIS
.HP 7
\fBprotoize\fR [\-CfgklNnqv] [\-B \fIDIRECTORY\fR] [\-c \fICOMPILATION-OPTIONS\fR] [\-d \fIDIRECTORY\fR] [\-i \fISTRING\fR] [\-p \fIPROGRAM\fR] [\-x \fIFILE\fR] [\fIFILE\fR...]
.HP 7
\fBunprotoize\fR [\-fkNnqv] [\-c \fICOMPILATION-OPTIONS\fR] [\-d \fIDIRECTORY\fR] [\-i \fISTRING\fR] [\-p \fIPROGRAM\fR] [\-x \fIFILE\fR] [\fIFILE\fR...]
.SH DESCRIPTION
.PP
\fBprotoize\fR is an optional part of GCC.
You can use it to add prototypes to a program,
thus converting the program to ANSI C in one respect.
The companion program
\fBunprotoize\fR does the reverse: it removes argument types from any prototypes that are found.
.PP
When you run these programs, you must specify a set of source files
as command line arguments.
The conversion programs start out by compiling these files
to see what functions they define.
The information gathered about a file
\fIFOO\fR is saved in a file named \fIFOO.X\fR.
.PP
After scanning comes the actual conversion.
The specified files are all eligible to be converted;
any files they include (whether sources or just headers) are eligible as well.
.PP
But not all the eligible files are converted.
By default,
\fBprotoize\fR and \fBunprotoize\fR
convert only source and header files in the current directory.
You can specify additional directories whose files
should be converted with the
\fB\-d\fR \fIDIRECTORY\fR option.
You can also specify particular files to exclude with the
\fB\-x\fR \fIFILE\fR option.
A file is converted if it is eligible, its directory name matches one of the
specified directory names, and its name within the directory has not
been excluded.
.PP
Basic conversion with
\fBprotoize\fR consists of rewriting most function definitions and function declarations
to specify the types of the arguments.
The only ones not rewritten are those for varargs functions.
.PP
\fBprotoize\fR optionally inserts prototype declarations at the beginning of the source file,
to make them available for any calls that precede the function's definition.
Or it can insert prototype declarations with block scope
in the blocks where undeclared functions are called.
.PP
Basic conversion with
\fBunprotoize\fR
consists of rewriting most function declarations to remove any argument types,
and rewriting function definitions to the old-style pre-ANSI form.
.PP
Both conversion programs print a warning for any function
declaration or definition that they can't convert.
You can suppress these warnings with the
\fB\-q\fR option.
.PP
The output from
\fBprotoize\fR or \fBunprotoize\fR
replaces the original source file.
The original file is renamed to a name ending with
\fI.save\fR.
If the \fI.save\fR file already exists, then the source file is simply discarded.
.PP
\fBprotoize\fR and \fBunprotoize\fR both depend on
\fBgcc\fR\|(1) to scan the program and collect information about the functions it uses.
.PP
The options are as follows:
.TP
\fB\-B\fR \fIDIRECTORY\fR
Look for the file
\fISYSCALLS.c.X\fR in \fIdirectory\fR,
instead of the usual directory (normally \fI/usr/local/lib\fR).
This file contains prototype information about standard system functions.
This option applies only to \fBprotoize\fR.
.TP
\fB\-C\fR
Rename files to end in
\fI.C\fR instead of \fI.c\fR.
This is convenient if you are converting a C program to C++.
This option applies only to
\fBprotoize\fR.
.TP
\fB\-c\fR \fICOMPILATION-OPTIONS\fR
Use \fICOMPILATION-OPTIONS\fR as the options when running \fBgcc\fR\|(1) to produce the
\fI.X\fR files.
The special option \fB\-aux-info\fR is always passed in addition, to tell gcc to write a
\fI.X\fR file.
Note that the compilation options must be given as a single argument to
\fBprotoize\fR or \fBunprotoize\fR.
If you want to specify several gcc options, you must quote the entire set of
compilation options to make them a single word in the shell.
There are certain gcc arguments that you cannot use, because they
would produce the wrong kind of output.
These include
\fB\-g\fR, \fB\-O\fR, \fB\-c\fR, \fB\-S\fR,\fB\-o\fR.
If you include these in the \fICOMPILATION-OPTIONS\fR, they are ignored.
.TP
\fB\-d\fR \fIDIRECTORY\fR
Specify additional directories whose files should be converted.
.TP
\fB\-g\fR
Add explicit global declarations.
This means inserting explicit declarations at the beginning of each
source file for each function that is called in the file and was not declared.
These declarations precede the first function definition that contains a
call to an undeclared function.
This option applies only to
.\fBprotoize\fR.
.TP
\fB\-i\fR \fISTRING\fR
Indent old-style parameter declarations with the string
\fISTRING\fR.
This option applies only to
\fBprotoize\fR.
\fBunprotoize\fR converts prototyped function definitions to old-style
function definitions, where the arguments are declared between the
argument list and the initial
\fB{\fR.
By default,
\fBunprotoize\fR uses five spaces as the indentation.
If you want to indent with just one space instead, use
\fB\-i " "\fR.
.TP
\fB\-k\fR
Keep the
\fI.X\fR files.
Normally, they are deleted after conversion is finished.
.TP
\fB\-l\fR
Add explicit local declarations.
\fBprotoize\fR with
\fB\-l\fR inserts a prototype declaration for each function in each block which calls
the function without any declaration.
This option applies only to
\fBprotoize\fR.
.TP
\fB\-N\fR
Make no \fI.save\fR files.
The original files are simply deleted.
Use this option with caution.
.TP
\fB\-n\fR
Make no real changes.
This mode just prints information about the conversions
that would have been done without
\fB\-n\fR.
.TP
\fB\-p\fR \fIPROGRAM\fR
Use the program
\fBPROGRAM\fR as the compiler.
Normally, the name
\fBgcc\fR is used.
.TP
\fB\-q\fR
Work quietly.
Most warnings are suppressed.
.TP
\fB\-v\fR
Print the version number, just like
\fB\-v\fR for gcc.
.TP
\fB\-x\fR \fBFILE\fR
List of files to exclude from the conversion process.
.PP
If you need special compiler options to compile one of your program's
source files, then you should generate that file's
\fI.X\fR file specially, by running gcc on that source file with
the appropriate options and the option
\fB\-aux-info\fR.
Then run
\fBprotoize\fR on the entire set of files.
\fBprotoize\fR will use the existing
\fI.X\fR file because it is newer than the source file.
For example:
.PP
.DL $ gcc -Dfoo=bar file1.c -aux-info
.DL $ protoize *.c
.PP
You need to include the special files along with the rest in the
\fBprotoize\fR command, even though their
\fI.X\fR files already exist, because otherwise they won't get converted.
.PP
.SH SEE ALSO
\fBgcc\fR\|(1), and the Info entry for \fBgcc\fR, particularly
\fBRunning protoize\fR section.
.SH HISTORY
Ron Guilmette implemented the
\fBprotoize\fR and \fBunprotoize\fR tools.
.SH AUTHORS
See the GCC manual for the contributors to GCC.
.SH CAVEATS
The conversion programs \fBprotoize\fR and \fBunprotoize\fR
can sometimes change a source file in a way that won't work
unless you rearrange it.
.PP
\fBprotoize\fR can insert references to a type name or type tag before
the definition, or in a file where they are not defined.
.PP
If this happens, compiler error messages should indicate where the
new references are, so fixing the file by hand is straightforward.
.PP
There are some C constructs which \fBprotoize\fR
cannot figure out.
For example, it can't determine argument types for declaring a
pointer-to-function variable; this must be done by hand.  \fBprotoize\fR
inserts a comment containing \fB???\fR each time it finds such a variable;
all such variables can be found by searching for this string.
ANSI C does not require declaring the argument types of
pointer-to-function types.
.PP
Using \fBunprotoize\fR can easily introduce bugs.
If the program relied on prototypes to bring about conversion of arguments,
these conversions will not take place in the program without prototypes.
One case in which you can be sure \fBunprotoize\fR
is safe is when you are removing prototypes that were made with
\fBprotoize\fR; if the program worked before without any prototypes,
it will work again without them.
.PP
You can find all the places where this problem might occur by
compiling the program with the \fB\-Wconversion\fR option.
It prints a warning whenever an argument is converted.
.PP
Both conversion programs can be confused if there are macro calls
in and around the text to be converted.
In other words, the standard syntax for a declaration or definition
must not result from expanding a macro.
This problem is inherent in the design of C and cannot be fixed.
If only a few functions have confusing macro calls,
you can easily convert them manually.
.PP
\fBprotoize\fR cannot get the argument types for a function whose definition was not
actually compiled due to preprocessing conditionals.
When this happens, \fBprotoize\fR changes nothing in regard to such a function.
\fBprotoize\fR tries to detect such instances and warn about them.
.PP
You can generally work around this problem by using
\fBprotoize\fR step by step, each time specifying a different set of
\fB\-D\fR options for compilation, until all of the functions have been converted.
There is no automatic way to verify that you have got them all, however.
.PP
Confusion may result if there is an occasion to convert a function
declaration or definition in a region of source code where there
is more than one formal parameter list present.
Thus, attempts to convert code containing multiple (conditionally compiled)
versions of a single function header (in the same vicinity)
may not produce the desired (or expected) results.
.PP
If you plan on converting source files which contain such code,
it is recommended that you first make sure that each conditionally
compiled region of source code which contains an alternative
function header also contains at least one additional follower
token (past the final right parenthesis of the function header).
This should circumvent the problem.
.PP
\fBunprotoize\fR can become confused when trying to convert a function
definition or declaration which contains a declaration for a
pointer-to-function formal argument which has the same name as the
function being defined or declared.
We recommand you avoid such choices of formal parameter names.
.PP
It might be necessary to correct some of the indentation by hand and
break long lines.
(The conversion programs don't write lines longer than eighty characters
in any case.)
.SH BUGS
For instructions on reporting bugs, see the GCC manual.
.SH COPYING
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
.PP
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
.PP
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be included in
translations approved by the Free Software Foundation instead of in
the original English.


Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/gcc/FC-6/.cvsignore,v
retrieving revision 1.177
retrieving revision 1.178
diff -u -r1.177 -r1.178
--- .cvsignore	11 Oct 2006 11:27:35 -0000	1.177
+++ .cvsignore	21 Dec 2006 00:26:06 -0000	1.178
@@ -1 +1 @@
-gcc-4.1.1-20061011.tar.bz2
+gcc-4.1.1-20061220.tar.bz2

gcc41-pr25874.patch:
 omp-low.c                       |   10 ++++++++++
 testsuite/g++.dg/gomp/pr25874.C |    2 ++
 testsuite/gcc.dg/gomp/pr25874.c |    2 ++
 3 files changed, 14 insertions(+)

Index: gcc41-pr25874.patch
===================================================================
RCS file: /cvs/dist/rpms/gcc/FC-6/gcc41-pr25874.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- gcc41-pr25874.patch	20 Apr 2006 13:50:21 -0000	1.1
+++ gcc41-pr25874.patch	21 Dec 2006 00:26:06 -0000	1.2
@@ -9,7 +9,7 @@
 
 --- gcc/omp-low.c.jj	2006-04-18 13:31:18.000000000 +0200
 +++ gcc/omp-low.c	2006-04-18 13:57:03.000000000 +0200
-@@ -2278,6 +2278,7 @@ expand_omp_parallel (struct omp_region *
+@@ -2421,6 +2421,7 @@ expand_omp_parallel (struct omp_region *
    block_stmt_iterator si;
    tree entry_stmt;
    edge e;
@@ -17,15 +17,15 @@
  
    entry_stmt = last_stmt (region->entry);
    child_fn = OMP_PARALLEL_FN (entry_stmt);
-@@ -2310,6 +2311,7 @@ expand_omp_parallel (struct omp_region *
-       new_bb = entry_bb;
-       remove_edge (entry_succ_e);
-       make_edge (new_bb, exit_succ_e->dest, EDGE_FALLTHRU);
+@@ -2456,6 +2457,7 @@ expand_omp_parallel (struct omp_region *
+ 	  exit_succ_e = single_succ_edge (exit_bb);
+ 	  make_edge (new_bb, exit_succ_e->dest, EDGE_FALLTHRU);
+ 	}
 +      do_cleanup_cfg = true;
      }
    else
      {
-@@ -2385,6 +2387,14 @@ expand_omp_parallel (struct omp_region *
+@@ -2546,6 +2548,14 @@ expand_omp_parallel (struct omp_region *
  
    /* Emit a library call to launch the children threads.  */
    expand_parallel_call (region, new_bb, entry_stmt, ws_args);

gcc41-tests.patch:
 g++.dg/debug/vartrack1.C           |   99 +++++++++++++++++++++++++++++++++++++
 g++.dg/opt/ifcvt1.C                |   17 ++++++
 g++.dg/opt/pr15054-2.C             |   39 ++++++++++++++
 g++.dg/template/array17.C          |   23 ++++++++
 gcc.c-torture/execute/20060412-1.c |   33 ++++++++++++
 gcc.c-torture/execute/20060420-1.c |   71 ++++++++++++++++++++++++++
 gcc.dg/20060425-2.c                |   10 +++
 gcc.dg/tls/opt-13.c                |   16 +++++
 gcc.target/powerpc/altivec-23.c    |   25 +++++++++
 9 files changed, 333 insertions(+)

Index: gcc41-tests.patch
===================================================================
RCS file: /cvs/dist/rpms/gcc/FC-6/gcc41-tests.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- gcc41-tests.patch	30 Sep 2006 19:13:59 -0000	1.3
+++ gcc41-tests.patch	21 Dec 2006 00:26:06 -0000	1.4
@@ -1,3 +1,13 @@
+2006-12-08  Jakub Jelinek  <jakub at redhat.com>
+
+	* g++.dg/debug/vartrack1.C: New test.
+
+	* g++.dg/opt/ifcvt1.C: New test.
+
+2006-12-08  Alexandre Oliva  <aoliva at redhat.com>
+
+	* g++.dg/template/array17.C: New test.
+
 2006-05-05  Jakub Jelinek  <jakub at redhat.com>
 
 	* gcc.dg/tls/opt-13.c: New test.
@@ -232,3 +242,151 @@
 +  __builtin_strcpy (thr.b, "abcd");
 +  return 0;
 +}
+--- gcc/testsuite/g++.dg/debug/vartrack1.C	2004-06-24 14:04:38.000000000 -0400
++++ gcc/testsuite/g++.dg/debug/vartrack1.C	2006-12-08 05:29:41.000000000 -0500
+@@ -0,0 +1,99 @@
++// This testcase used to hang the compiler in vt_find_locations.
++// { dg-do compile }
++// { dg-options "-O2 -g" }
++
++struct S
++{
++  int a;
++  S *b, *c, *d;
++};
++
++struct T
++{
++  void f1 (S *x);
++  void f2 (S *x);
++  void f3 (S *x, S *y);
++  S *e;
++};
++
++void
++T::f3 (S *x, S *y)
++{
++  while (x != this->e && (!x || x->a == 1))
++    {
++      if (x == y->c)
++	{
++	  S *w = y->d;
++	  if (w && w->a == 0)
++	    {
++	      w->a = 1;
++	      y->a = 0;
++	      f2 (y);
++	      w = y->d;
++	    }
++	  if (w && (!w->c || w->c->a == 1) && (!w->d || w->d->a == 1))
++	    {
++	      w->a = 0;
++	      x = y;
++	      y = x->b;
++	    }
++	  else
++	    {
++	      if (w && (!w->d || w->d->a == 1))
++		{
++		  if (w->c)
++		    w->c->a = 1;
++		  w->a = 0;
++		  f1 (w);
++		  w = y->d;
++		}
++	      if (w)
++		{
++		  w->a = y->a;
++		  if (w->d)
++		    w->d->a = 1;
++		}
++	      y->a = 1;
++	      f2 (y);
++	      x = e;
++	    }
++	}
++      else
++	{
++	  S *w = y->c;
++	  if (w && w->a == 0)
++	    {
++	      w->a = 1;
++	      y->a = 0;
++	      f1 (y);
++	      w = y->c;
++	    }
++	  if (w && (!w->c || w->c->a == 1) && (!w->d || w->d->a == 1))
++	    {
++	      w->a = 0;
++	      x = y;
++	      y = x->b;
++	    }
++	  else
++	    {
++	      if (w && (!w->c || w->c->a == 1))
++		{
++		  w->a = 0;
++		  if (w->d)
++		    w->d->a = 1;
++		  f2 (w);
++		  w = y->c;
++		}
++	      if (w)
++		{
++		  w->a = y->a;
++		  if (w->c)
++		    w->c->a = 1;
++		}
++	      y->a = 1;
++	      f1 (y);
++	      x = e;
++	    }
++	}
++    }
++}
+--- gcc/testsuite/g++.dg/opt/ifcvt1.C	2006-10-04 16:28:56.502613000 +0200
++++ gcc/testsuite/g++.dg/opt/ifcvt1.C	2006-12-08 12:23:23.000000000 +0100
+@@ -0,0 +1,17 @@
++// { dg-do compile }
++// { dg-options "-O2 -fnon-call-exceptions" }
++
++struct S { ~S () throw () {} };
++double bar ();
++
++int
++foo ()
++{
++  S a;
++  int i = 0;
++  double c = bar ();
++  c = c < 0 ? -c : c;
++  if (c <= 1.e-8)
++    i += 24;
++  return i;
++}
+--- gcc/testsuite/g++.dg/template/array17.C	2006-10-04 16:28:56.502613000 +0200
++++ gcc/testsuite/g++.dg/template/array17.C	2006-12-08 12:38:27.000000000 +0100
+@@ -0,0 +1,23 @@
++// { dg-do compile }
++
++template <typename T>
++struct V {
++  T& operator[](int);
++};
++
++struct S {
++  S operator +(int);
++  template <typename T> T value();
++};
++
++template <typename T>
++void R (T v)
++{
++  v[(S() + 0).template value<int>()][0] = 0;
++}
++
++int
++main ()
++{
++  R(V<V<int> >());
++}


Index: gcc41.spec
===================================================================
RCS file: /cvs/dist/rpms/gcc/FC-6/gcc41.spec,v
retrieving revision 1.111
retrieving revision 1.112
diff -u -r1.111 -r1.112
--- gcc41.spec	11 Oct 2006 11:27:35 -0000	1.111
+++ gcc41.spec	21 Dec 2006 00:26:06 -0000	1.112
@@ -1,6 +1,6 @@
-%define DATE 20061011
+%define DATE 20061220
 %define gcc_version 4.1.1
-%define gcc_release 30
+%define gcc_release 47
 %define _unpackaged_files_terminate_build 0
 %define multilib_64_archs sparc64 ppc64 s390x x86_64
 %ifarch %{ix86} x86_64 ia64
@@ -24,12 +24,13 @@
 Summary: Various compilers (C, C++, Objective-C, Java, ...)
 Name: gcc
 Version: %{gcc_version}
-Release: %{gcc_release}
+Release: %{gcc_release}%{?dist}
 License: GPL
 Group: Development/Languages
 Source0: gcc-%{version}-%{DATE}.tar.bz2
 Source1: libgcc_post_upgrade.c
 Source2: README.libgcjwebplugin.so
+Source3: protoize.1
 URL: http://gcc.gnu.org
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
 # Need binutils with -pie support >= 2.14.90.0.4-4
@@ -102,7 +103,6 @@
 Obsoletes: gcc34
 Obsoletes: gcc35
 Obsoletes: gcc4
-Provides: gcc4 = %{version}-%{release}
 Prereq: /sbin/install-info
 AutoReq: true
 
@@ -122,22 +122,29 @@
 Patch14: gcc41-objc-rh185398.patch
 Patch15: gcc41-tests.patch
 Patch16: gcc41-pr25874.patch
-Patch17: gcc41-pr26881.patch
+Patch17: gcc41-pr29241.patch
 Patch18: gcc41-i386-tune-geode.patch
 Patch19: gcc41-hash-style-gnu.patch
-Patch20: gcc41-power6.patch
-Patch21: gcc41-power6-2.patch
-Patch22: gcc41-java-libdotdotlib.patch
-Patch23: gcc41-pr28709.patch
-Patch24: gcc41-pr28755.patch
-Patch25: gcc41-pr27898.patch
-Patch26: gcc41-pr27567.patch
-Patch27: gcc41-pr29272.patch
-Patch28: gcc41-pr29059.patch
-Patch29: gcc41-strncat-chk.patch
-Patch30: gcc41-power6x.patch
-Patch31: gcc41-pr29091.patch
-
+Patch20: gcc41-pr29612.patch
+Patch21: gcc41-java-libdotdotlib.patch
+Patch22: gcc41-pr28709.patch
+Patch23: gcc41-pr28755.patch
+Patch24: gcc41-pr27898.patch
+Patch25: gcc41-pr27567.patch
+Patch26: gcc41-pr29272.patch
+Patch27: gcc41-pr29059.patch
+Patch28: gcc41-strncat-chk.patch
+Patch29: gcc41-pr29703.patch
+Patch30: gcc41-pr29299.patch
+Patch31: gcc41-libjava-anonverscript.patch
+Patch32: gcc41-ppc64-libffi-unwind.patch
+Patch33: gcc41-pr30113.patch
+Patch34: gcc41-pr30110.patch
+Patch35: gcc41-pr29166.patch
+Patch36: gcc41-pr27266.patch
+Patch37: gcc41-pr30143.patch
+Patch38: gcc41-pr30262.patch
+Patch39: gcc41-pr30230.patch
 %define _gnu %{nil}
 %ifarch sparc
 %define gcc_target_platform sparc64-%{_vendor}-%{_target_os}
@@ -172,7 +179,6 @@
 Obsoletes: gcc34-c++
 Obsoletes: gcc35-c++
 Obsoletes: gcc4-c++
-Provides: gcc4-c++ = %{version}-%{release}
 Autoreq: true
 
 %description c++
@@ -185,7 +191,6 @@
 Group: System Environment/Libraries
 Obsoletes: libstdc++3
 Obsoletes: libstdc++34
-Provides: libstdc++34
 Autoreq: true
 
 %description -n libstdc++
@@ -198,7 +203,6 @@
 Requires: libstdc++ = %{version}-%{release}, %{_prefix}/%{_lib}/libstdc++.so.6
 Obsoletes: libstdc++3-devel
 Obsoletes: libstdc++34-devel
-Provides: libstdc++34-devel
 Autoreq: true
 
 %description -n libstdc++-devel
@@ -303,7 +307,6 @@
 Obsoletes: gcc34-java
 Obsoletes: gcc35-java
 Obsoletes: gcc4-java
-Provides: gcc4-java
 Prereq: /sbin/install-info
 Autoreq: true
 
@@ -330,7 +333,6 @@
 Obsoletes: libgcj3
 Obsoletes: libgcj34
 Obsoletes: libgcj4
-Provides: libgcj4
 Autoreq: true
 
 %description -n libgcj
@@ -346,7 +348,6 @@
 Obsoletes: libgcj3-devel
 Obsoletes: libgcj34-devel
 Obsoletes: libgcj4-devel
-Provides: libgcj4-devel
 Autoreq: false
 Autoprov: false
 
@@ -359,7 +360,6 @@
 Group: System Environment/Libraries
 Requires: libgcj = %{version}-%{release}
 Obsoletes: libgcj4-src
-Provides: libgcj4-src
 Autoreq: true
 
 %description -n libgcj-src
@@ -436,21 +436,29 @@
 %patch14 -p0 -b .objc-rh185398~
 %patch15 -p0 -b .tests~
 %patch16 -p0 -b .pr25874~
-%patch17 -p0 -b .pr26881~
+%patch17 -p0 -b .pr29241~
 %patch18 -p0 -b .i386-tune-geode~
 %patch19 -p0 -b .hash-style-gnu~
-%patch20 -p0 -b .power6~
-%patch21 -p0 -b .power6-2~
-%patch22 -p0 -b .java-libdotdotlib~
-%patch23 -p0 -b .pr28709~
-%patch24 -p0 -b .pr28755~
-%patch25 -p0 -b .pr27898~
-%patch26 -p0 -b .pr27567~
-%patch27 -p0 -b .pr29272~
-%patch28 -p0 -b .pr29059~
-%patch29 -p0 -b .strncat-chk~
-%patch30 -p0 -b .power6x~
-%patch31 -p0 -b .pr29091~
+%patch20 -p0 -b .pr29612~
+%patch21 -p0 -b .java-libdotdotlib~
+%patch22 -p0 -b .pr28709~
+%patch23 -p0 -b .pr28755~
+%patch24 -p0 -b .pr27898~
+%patch25 -p0 -b .pr27567~
+%patch26 -p0 -b .pr29272~
+%patch27 -p0 -b .pr29059~
+%patch28 -p0 -b .strncat-chk~
+%patch29 -p0 -b .pr29703~
+%patch30 -p0 -b .pr29299~
+%patch31 -p0 -b .libjava-anonverscript~
+%patch32 -p0 -b .ppc64-libffi-unwind~
+%patch33 -p0 -b .pr30113~
+%patch34 -p0 -b .pr30110~
+%patch35 -p0 -b .pr29166~
+%patch36 -p0 -b .pr27266~
+%patch37 -p0 -b .pr30143~
+%patch38 -p0 -b .pr30262~
+%patch39 -p0 -b .pr30230~
 
 sed -i -e 's/4\.1\.2/4.1.1/' gcc/BASE-VER gcc/version.c
 sed -i -e 's/" (Red Hat[^)]*)"/" (Red Hat %{version}-%{gcc_release})"/' gcc/version.c
@@ -604,26 +612,6 @@
 make -C gcc generated-manpages
 for i in ../gcc/doc/*.texi; do mv -f $i.orig $i; done
 
-%if %{build_java}
-LIBGCJ_BC_CFLAGS=
-%ifarch sparc ppc
-LIBGCJ_BC_CFLAGS=-m64
-%endif
-%ifarch %{multilib_64_archs}
-LIBGCJ_BC_CFLAGS=-m32
-%endif
-%ifarch s390x
-LIBGCJ_BC_CFLAGS=-m31
-%endif
-if [ -n "$LIBGCJ_BC_CFLAGS" ]; then
-  mkdir libgcj_bc
-  gcc/xgcc -B gcc/ $OPT_FLAGS $LIBGCJ_BC_CFLAGS -shared -fpic -xc /dev/null \
-      -o libgcj_bc/libgcj.so -Wl,-soname,libgcj.so.7rh -nostdlib
-  gcc/xgcc -B gcc/ $OPT_FLAGS $LIBGCJ_BC_CFLAGS -shared -fpic ../libjava/libgcj_bc.c \
-      -o libgcj_bc/libgcj_bc.so -Wl,-soname,libgcj_bc.so.1 libgcj_bc/libgcj.so -shared-libgcc 
-fi
-%endif
-
 # Copy various doc files here and there
 cd ..
 mkdir -p rpm.doc/gfortran rpm.doc/objc
@@ -687,12 +675,6 @@
   infodir=$RPM_BUILD_ROOT%{_infodir} install
 %if %{build_java}
 make DESTDIR=$RPM_BUILD_ROOT -C %{gcc_target_platform}/libjava install-src.zip
-%ifarch %{multilib_64_archs}
-install -m755 libgcj_bc/libgcj_bc.so $RPM_BUILD_ROOT%{_prefix}/lib/libgcj_bc.so
-%endif
-%ifarch sparc ppc
-install -m755 libgcj_bc/libgcj_bc.so $RPM_BUILD_ROOT%{_prefix}/lib64/libgcj_bc.so
-%endif
 %endif
 %if %{build_ada}
 chmod 644 $RPM_BUILD_ROOT%{_infodir}/gnat*
@@ -758,7 +740,7 @@
 fi
 
 find $RPM_BUILD_ROOT -name \*.la | xargs rm -f
-if [ "%{build_java}" -gt 0 ]; then
+%if %{build_java}
 # gcj -static doesn't work properly anyway, unless using --whole-archive
 # and saving 35MB is not bad.
 find $RPM_BUILD_ROOT -name libgcj.a -o -name libgtkpeer.a \
@@ -768,7 +750,7 @@
 mv $RPM_BUILD_ROOT%{_prefix}/lib/libgcj.spec $FULLPATH/
 sed -i -e 's/lib: /&%%{static:%%eJava programs cannot be linked statically}/' \
   $FULLPATH/libgcj.spec
-fi
+%endif
 
 mkdir -p $RPM_BUILD_ROOT/%{_lib}
 mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcc_s.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
@@ -818,7 +800,6 @@
 ln -sf ../../../libgcj.so.7rh.* libgcj.so
 ln -sf ../../../libgcj-tools.so.7rh.* libgcj-tools.so
 ln -sf ../../../libgij.so.7rh.* libgij.so
-mv ../../../libgcj_bc.so libgcj_bc.so
 %endif
 %if %{build_ada}
 cd adalib
@@ -839,7 +820,6 @@
 ln -sf ../../../../%{_lib}/libgcj.so.7rh.* libgcj.so
 ln -sf ../../../../%{_lib}/libgcj-tools.so.7rh.* libgcj-tools.so
 ln -sf ../../../../%{_lib}/libgij.so.7rh.* libgij.so
-mv ../../../../%{_lib}/libgcj_bc.so libgcj_bc.so
 %endif
 %if %{build_ada}
 cd adalib
@@ -850,6 +830,9 @@
 cd ..
 %endif
 fi
+%if %{build_java}
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcj_bc.so $FULLLPATH/
+%endif
 mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/
 mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libsupc++.*a .
 mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.*a .
@@ -866,12 +849,13 @@
 ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so
 ln -sf ../`echo ../../../../lib/libmudflap.so.0.* | sed s~/lib/~/lib64/~` 64/libmudflap.so
 ln -sf ../`echo ../../../../lib/libmudflapth.so.0.* | sed s~/lib/~/lib64/~` 64/libmudflapth.so
-if [ "%{build_java}" -gt 0 ]; then
+%if %{build_java}
 ln -sf ../`echo ../../../../lib/libgcj.so.7rh.* | sed s~/lib/~/lib64/~` 64/libgcj.so
 ln -sf ../`echo ../../../../lib/libgcj-tools.so.7rh.* | sed s~/lib/~/lib64/~` 64/libgcj-tools.so
 ln -sf ../`echo ../../../../lib/libgij.so.7rh.* | sed s~/lib/~/lib64/~` 64/libgij.so
-mv ../../../../lib64/libgcj_bc.so 64/libgcj_bc.so
-fi
+ln -sf lib32/libgcj_bc.so libgcj_bc.so
+ln -sf ../lib64/libgcj_bc.so 64/libgcj_bc.so
+%endif
 mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libsupc++.*a 64/
 mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgfortran.*a 64/
 mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgfortranbegin.*a 64/
@@ -889,12 +873,11 @@
 ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so
 ln -sf ../`echo ../../../../lib64/libmudflap.so.0.* | sed s~/../lib64/~/~` 32/libmudflap.so
 ln -sf ../`echo ../../../../lib64/libmudflapth.so.0.* | sed s~/../lib64/~/~` 32/libmudflapth.so
-if [ "%{build_java}" -gt 0 ]; then
+%if %{build_java}
 ln -sf ../`echo ../../../../lib64/libgcj.so.7rh.* | sed s~/../lib64/~/~` 32/libgcj.so
 ln -sf ../`echo ../../../../lib64/libgcj-tools.so.7rh.* | sed s~/../lib64/~/~` 32/libgcj-tools.so
 ln -sf ../`echo ../../../../lib64/libgij.so.7rh.* | sed s~/../lib64/~/~` 32/libgij.so
-mv ../../../../lib/libgcj_bc.so 32/libgcj_bc.so
-fi
+%endif
 mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libsupc++.*a 32/
 mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgfortran.*a 32/
 mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgfortranbegin.*a 32/
@@ -905,9 +888,16 @@
 %ifarch sparc64 ppc64
 ln -sf ../lib32/libstdc++.a 32/libstdc++.a
 ln -sf lib64/libstdc++.a libstdc++.a
+%if %{build_java}
+ln -sf ../lib32/libgcj_bc.so 32/libgcj_bc.so
+ln -sf lib64/libgcj_bc.so libgcj_bc.so
+%endif
 %else
 %ifarch %{multilib_64_archs}
 ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libstdc++.a 32/libstdc++.a
+%if %{build_java}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgcj_bc.so 32/libgcj_bc.so
+%endif
 %endif
 %endif
 
@@ -995,6 +985,10 @@
 touch $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db
 %endif
 
+install -m644 %{SOURCE3} $RPM_BUILD_ROOT%{_mandir}/man1/protoize.1
+echo '.so man1/protoize.1' > $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1
+chmod 644 $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1
+
 %clean
 rm -rf $RPM_BUILD_ROOT
 
@@ -1119,6 +1113,8 @@
 %{_prefix}/bin/%{gcc_target_platform}-gcc
 %{_mandir}/man1/gcc.1*
 %{_mandir}/man1/gcov.1*
+%{_mandir}/man1/protoize.1*
+%{_mandir}/man1/unprotoize.1*
 %{_infodir}/gcc*
 %dir %{_prefix}/lib/gcc
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -1363,8 +1359,31 @@
 %dir %{_prefix}/libexec/gcc
 %dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
 %dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
 %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jc1
 %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jvgenmain
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj-tools.so
+%ifarch sparc sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj_bc.so
+%endif
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgij.so
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj-tools.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj_bc.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgij.so
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj-tools.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj_bc.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgij.so
+%endif
 %doc rpm.doc/changelogs/gcc/java/ChangeLog*
 
 %files -n libgcj
@@ -1420,23 +1439,16 @@
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jni_md.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jvmpi.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.spec
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj-tools.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj_bc.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgij.so
 %ifarch sparc ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj-tools.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj_bc.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgij.so
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libgcj_bc.so
 %endif
-%ifarch %{multilib_64_archs}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj-tools.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj_bc.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgij.so
+%ifarch sparc64 ppc64
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libgcj_bc.so
+%endif
+%ifnarch sparc sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj_bc.so
 %endif
 %dir %{_prefix}/include/c++
 %dir %{_prefix}/include/c++/%{gcc_version}
@@ -1512,6 +1524,138 @@
 %doc rpm.doc/changelogs/libmudflap/ChangeLog*
 
 %changelog
+* Wed Dec 20 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-47.fc6
+- update from gcc-4_1-branch (-r119833:120062)
+  - PRs libstdc++/11953, target/24036
+- fix ia64 EH region boundaries where last br.call in the region
+  is not at the end of a bundle (#219596, PR target/30230)
+- fix DI resp. TImode __sync_*_compare_and_swap on i?86 resp. x86_64
+  (Kazu Hirata, #220258, PR target/27266)
+- fix asm vs. nested functions or OpenMP (#220250, PRs middle-end/30262,
+  middle-end/30263)
+- fix handling of complex shared OpenMP vars (Andrew Pinski,
+  PR middle-end/30143)
+
+* Thu Dec 14 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-47
+- fix ia64 prologue generation (Andreas Schwab, #219594, PR target/29166)
+- fix ppc64 divdi3 (PR target/30185)
+
+* Wed Dec 13 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-46
+- update from gcc-4_1-branch (-r119654:119833)
+  - PRs c++/27316, c++/28740, c++/29732, fortran/29820, fortran/29821,
+	fortran/29912, fortran/29916, fortran/30003, libstdc++/26497,
+	libstdc++/28125, libstdc++/28265, target/30039
+- fix loop unswitching (Zdenek Dvorak, #219138, PR rtl-optimization/30113)
+
+* Fri Dec  8 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-45
+- update from gcc-4_1-branch (-r119343:119654)
+  - PRs c++/14329, c++/28284, c++/29632, c++/29728, c++/29729, c++/29730,
+	c++/29733, c++/30022, libfortran/29810
+- add protoize.1 and unprotoize.1 man pages (#188914)
+- fix RTL sharing problem in combine (#218603, PR rtl-optimization/27761)
+- additions to libgcj-src (Ben Konrath, PR libgcj/30110)
+
+* Fri Dec  1 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-44
+- fix OpenMP loops with 0 iterations (PR libgomp/29947)
+
+* Thu Nov 30 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-43
+- update from gcc-4_1-branch (-r119167:119343)
+  - PRs c++/29022, fortran/29391, fortran/29489, fortran/29982,
+	libgfortran/29936, target/29319, tree-opt/29964
+- fix -fopenmp ICEs on omp constructs where the body never returns
+  (PR middle-end/29965)
+
+* Fri Nov 24 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-42
+- update from gcc-4_1-branch (-r119021:119167)
+  - fix s390{,x} __sync_* builtins
+- fix ppc64 libffi unwind info
+
+* Thu Nov 23 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-41
+- fix ICE with -fopenmp -fexceptions on ia64 (#216988, PR c/29955)
+- fix parsing of C++ if/switch/etc. conditions (PR c++/29886)
+
+* Wed Nov 22 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-40
+- disallow multiple vector_size attributes (PR c/29736)
+- don't ICE on main returning int with vector_size attribute (PR c++/29735)
+- hide symbols that shouldn't be exported from libgcj.so (GC_*, ffi_*,
+  lt_* etc., #216120)
+
+* Tue Nov 20 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-39
+- update from gcc-4_1-branch (-r118891:119021)
+  - PRs middle-end/26306, middle-end/29753, target/18553, target/29114,
+	target/29449, tree-opt/29788, tree-optimization/28888
+- fix some C++ vector conversions (PR c++/29734)
+- fix C++ ICE with value dependent const brace enclosed initializer
+  (PR c++/29570)
+
+* Thu Nov 16 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-38
+- update from gcc-4_1-branch (-r118805:118891)
+  - PRs rtl-optimization/29797
+- fix forwprop switch optimization (PR middle-end/29584)
+- remove old *34* provides (#215839)
+
+* Tue Nov 14 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-37
+- fix up check_effective_target_fopenmp tcl test for the testsuite
+  framework backport changes
+
+* Tue Nov 14 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-36
+- update from gcc-4_1-branch (-r118571:118805)
+  - PRs c++/29106, c++/29518, fortran/24518, fortran/29216, fortran/29314,
+	fortran/29371, fortran/29387, fortran/29392, fortran/29490,
+	fortran/29565, fortran/29630, fortran/29679, fortran/29713,
+	middle-end/21032, testsuite/28703, tree-opt/28545
+- honor initial conditions and variable types in conversion to perfect
+  nesting for -ftree-loop-linear optimizations (#209297,
+  PR tree-optimization/29581)
+
+* Sat Nov 11 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-35
+- fix libgcj_bc.so dummy lib on i?86/x86_64/ia64/s390/s390x
+
+* Sat Nov 11 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-34
+- fix libgcj_bc.so symlink and dummy lib placement to avoid 64-bit gcc-java
+  requiring 32-bit libc or vice versa
+- fix ICE on Fortran !$omp continued line followed by !$ conditional
+  line (PR fortran/29759)
+
+* Wed Nov  8 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-33
+- update from gcc-4_1-branch (-r118468:118571)
+  - PRs fortran/24398, fortran/27701, fortran/29098, fortran/29115,
+	fortran/29211, fortran/29232, fortran/29364, fortran/29373,
+	fortran/29407, libfortran/29627, tree-optimization/29610
+- fix java.net.SocketPermission (Gary Benson, #212739)
+- fix java.util.regex.Matcher (Ito Kazumitsu, #183698, PR classpath/29703)
+- fix # <linenum> <file> <flags> handling in libcpp when switching
+  from system header to non-system header or main source
+  (PR preprocessor/29612)
+- fix gcc configury detection of ld COMDAT support
+- move *.so symlinks from libgcj-devel to gcc-java (#214195)
+
+* Sat Nov  4 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-32
+- update from gcc-4_1-branch (-r118025:118468)
+  - PRs bootstrap/28400, fortran/29067, libgfortran/29563, middle-end/29250,
+	rtl-optimization/28970, rtl-optimization/29631, target/29377,
+	tree-optimization/27891
+  - fix infinite recursion in make_vector_type (#212848,
+    PR tree-optimization/29637)
+- merge gomp fixes from the trunk (-r118133:118134)
+  - PR fortran/29629
+- fix A < 0 ? <sign bit of A> : 0 optimization (#213821, PR middle-end/29695)
+- fix ICE in gfc_get_derived_type (Paul Thomas, #212936, PR fortran/29641)
+
+* Wed Oct 25 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-31
+- update from gcc-4_1-branch (-r117629:118025)
+  - PRs c++/20647, c++/25878, c++/26884, c++/27787, c++/28506, c++/28906,
+	c++/29020, c++/29175, c++/29318, c++/29408, c++/29435, c/27184,
+	c/29092, fortran/25091, fortran/25092, fortran/29284, fortran/29321,
+	fortran/29322, fortran/29393, fortran/29403, gcov/profile/26570,
+	inline-asm/29119, middle-end/20491, rtl-optimization/29323,
+	target/25519, target/28825, target/28960, target/29300,
+	testsuite/28829, tree-optimization/26969
+  - fix libstdc++.so backwards compatibility with GCC 3.4.x (#210452)
+- fix always_inline attribute at -O0 (Jan Hubicka, PR middle-end/29241)
+- fix function local static vars with used attribute (Jan Hubicka,
+  Richard Guenther, PR middle-end/29299)
+
 * Wed Oct 11 2006 Jakub Jelinek <jakub at redhat.com> 4.1.1-30
 - update from gcc-4_1-branch (-r117464:117629)
   - PRs c++/28302, c++/28349, c++/28450, c++/29002, libstdc++/29095,


Index: sources
===================================================================
RCS file: /cvs/dist/rpms/gcc/FC-6/sources,v
retrieving revision 1.179
retrieving revision 1.180
diff -u -r1.179 -r1.180
--- sources	11 Oct 2006 11:27:35 -0000	1.179
+++ sources	21 Dec 2006 00:26:06 -0000	1.180
@@ -1 +1 @@
-69307646aecf759e4c30ceaba2d05241  gcc-4.1.1-20061011.tar.bz2
+750bda4d0c5278dd34f79731ac8a7f9d  gcc-4.1.1-20061220.tar.bz2


--- gcc41-multi32-hack.patch DELETED ---


--- gcc41-power6-2.patch DELETED ---


--- gcc41-power6.patch DELETED ---


--- gcc41-power6x.patch DELETED ---


--- gcc41-pr26881.patch DELETED ---


--- gcc41-pr29091.patch DELETED ---




More information about the fedora-cvs-commits mailing list