Hello community,
here is the log from the commit of package gcc43
checked in at Fri Mar 7 20:22:47 CET 2008.
--------
--- gcc43/cross-avr-gcc43.changes 2008-02-21 14:07:18.000000000 +0100
+++ gcc43/cross-avr-gcc43.changes 2008-03-06 12:08:02.000000000 +0100
@@ -1,0 +2,12 @@
+Thu Mar 6 12:06:50 CET 2008 - rguenther@suse.de
+
+- Update to GCC 4.3.0 release.
+- Add patches for PR35472 and PR34989.
+- Add patches for AMD requested feature. [ggo#34043]
+
+-------------------------------------------------------------------
+Fri Feb 22 14:05:20 CET 2008 - rguenther@suse.de
+
+- Deal with fixed wchar.h on old glibc systems.
+
+-------------------------------------------------------------------
cross-hppa-gcc-icecream-backend.changes: same change
cross-i386-gcc-icecream-backend.changes: same change
cross-ia64-gcc-icecream-backend.changes: same change
cross-ppc64-gcc-icecream-backend.changes: same change
cross-ppc-gcc-icecream-backend.changes: same change
cross-s390-gcc-icecream-backend.changes: same change
cross-s390x-gcc-icecream-backend.changes: same change
cross-spu-gcc.changes: same change
cross-spu-gcc-static.changes: same change
cross-x86_64-gcc-icecream-backend.changes: same change
gcc43.changes: same change
libgcj43.changes: same change
Old:
----
gcc-4.3.0-20080221.tar.bz2
New:
----
gcc-4.3.0-20080306.tar.bz2
pr34043-1.diff
pr34043-2.diff
pr34043-3.diff
pr34043-4.diff
pr34043-5.diff
pr34989.diff
pr35472.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cross-avr-gcc43.spec ++++++
--- /var/tmp/diff_new_pack.l28281/_old 2008-03-07 20:20:38.000000000 +0100
+++ /var/tmp/diff_new_pack.l28281/_new 2008-03-07 20:20:38.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package cross-avr-gcc43 (Version 4.3.0_20080221)
+# spec file for package cross-avr-gcc43 (Version 4.3.0_20080306)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -55,7 +55,7 @@
%define biarch_targets x86_64 s390x powerpc64 powerpc
Url: http://gcc.gnu.org/
License: BSD 3-Clause; GPL v2 or later; LGPL v2.1 or later; X11/MIT
-Version: 4.3.0_20080221
+Version: 4.3.0_20080306
Release: 1
%define gcc_version %(echo %version | sed 's/_.*//')
%define gcc_dir_version %(echo %gcc_version | cut -d '.' -f 1-2)
@@ -84,6 +84,8 @@
Patch25: pr27880.diff
Patch28: pr33763.diff
Patch30: Wunprototyped-calls.diff
+Patch31: pr35472.diff
+Patch32: pr34989.diff
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
Patch55: gcc41-java-slow_pthread_self.patch
@@ -91,6 +93,12 @@
# Some patches taken from Debian
Patch60: gcc43-textdomain.patch
Patch61: gcc43-rename-info-files.patch
+# Patches for AMD features
+Patch70: pr34043-1.diff
+Patch71: pr34043-2.diff
+Patch72: pr34043-3.diff
+Patch73: pr34043-4.diff
+Patch74: pr34043-5.diff
# LIBJAVA-DELETE-BEGIN
%description
@@ -145,11 +153,18 @@
%patch25
%patch28
%patch30
+%patch31
+%patch32
%patch51
%patch55
%patch57
%patch60
%patch61
+%patch70
+%patch71
+%patch72
+%patch73
+%patch74 -p1
%build
# Avoid rebuilding of generated files
@@ -159,13 +174,6 @@
# See also gcc-dir-version.patch.
mv gcc/BASE-VER gcc/FULL-VER
cat gcc/FULL-VER | cut -d '.' -f 1-2 > gcc/BASE-VER
-# We don't want to show (prerelease) but need to adjust the version
-# number then?
-#if test "`cat gcc/DEV-PHASE`" == "prerelease" \
-# -a ! `cat gcc/FULL-VER | grep '\.0$'`; then
- # don't make it empty, otherwise date and revision are not shown
-# echo ' ' > gcc/DEV_PHASE
-#fi
rm -rf obj-%{GCCDIST}
mkdir obj-%{GCCDIST}
cd obj-%{GCCDIST}
@@ -360,6 +368,12 @@
%defattr(-,root,root)
%{_prefix}
%changelog
+* Thu Mar 06 2008 rguenther@suse.de
+- Update to GCC 4.3.0 release.
+- Add patches for PR35472 and PR34989.
+- Add patches for AMD requested feature. [ggo#34043]
+* Fri Feb 22 2008 rguenther@suse.de
+- Deal with fixed wchar.h on old glibc systems.
* Mon Feb 18 2008 rguenther@suse.de
- Update to gcc-4_3-branch head (r132521). [bnc#355496, bnc#354113]
* Sat Feb 16 2008 schwab@suse.de
++++++ cross-hppa-gcc-icecream-backend.spec ++++++
--- /var/tmp/diff_new_pack.l28281/_old 2008-03-07 20:20:38.000000000 +0100
+++ /var/tmp/diff_new_pack.l28281/_new 2008-03-07 20:20:38.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package cross-hppa-gcc-icecream-backend (Version 4.3.0_20080221)
+# spec file for package cross-hppa-gcc-icecream-backend (Version 4.3.0_20080306)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -34,7 +34,7 @@
%define biarch_targets x86_64 s390x powerpc64 powerpc
Url: http://gcc.gnu.org/
License: BSD 3-Clause; GPL v2 or later; LGPL v2.1 or later; X11/MIT
-Version: 4.3.0_20080221
+Version: 4.3.0_20080306
Release: 1
%define gcc_version %(echo %version | sed 's/_.*//')
%define gcc_dir_version %(echo %gcc_version | cut -d '.' -f 1-2)
@@ -63,6 +63,8 @@
Patch25: pr27880.diff
Patch28: pr33763.diff
Patch30: Wunprototyped-calls.diff
+Patch31: pr35472.diff
+Patch32: pr34989.diff
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
Patch55: gcc41-java-slow_pthread_self.patch
@@ -70,6 +72,12 @@
# Some patches taken from Debian
Patch60: gcc43-textdomain.patch
Patch61: gcc43-rename-info-files.patch
+# Patches for AMD features
+Patch70: pr34043-1.diff
+Patch71: pr34043-2.diff
+Patch72: pr34043-3.diff
+Patch73: pr34043-4.diff
+Patch74: pr34043-5.diff
# LIBJAVA-DELETE-BEGIN
%description
@@ -127,11 +135,18 @@
%patch25
%patch28
%patch30
+%patch31
+%patch32
%patch51
%patch55
%patch57
%patch60
%patch61
+%patch70
+%patch71
+%patch72
+%patch73
+%patch74 -p1
%build
# Avoid rebuilding of generated files
@@ -141,13 +156,6 @@
# See also gcc-dir-version.patch.
mv gcc/BASE-VER gcc/FULL-VER
cat gcc/FULL-VER | cut -d '.' -f 1-2 > gcc/BASE-VER
-# We don't want to show (prerelease) but need to adjust the version
-# number then?
-#if test "`cat gcc/DEV-PHASE`" == "prerelease" \
-# -a ! `cat gcc/FULL-VER | grep '\.0$'`; then
- # don't make it empty, otherwise date and revision are not shown
-# echo ' ' > gcc/DEV_PHASE
-#fi
rm -rf obj-%{GCCDIST}
mkdir obj-%{GCCDIST}
cd obj-%{GCCDIST}
@@ -376,6 +384,12 @@
/usr/share/icecream-envs
%changelog
+* Thu Mar 06 2008 rguenther@suse.de
+- Update to GCC 4.3.0 release.
+- Add patches for PR35472 and PR34989.
+- Add patches for AMD requested feature. [ggo#34043]
+* Fri Feb 22 2008 rguenther@suse.de
+- Deal with fixed wchar.h on old glibc systems.
* Mon Feb 18 2008 rguenther@suse.de
- Update to gcc-4_3-branch head (r132521). [bnc#355496, bnc#354113]
* Sat Feb 16 2008 schwab@suse.de
cross-i386-gcc-icecream-backend.spec: same change
cross-ia64-gcc-icecream-backend.spec: same change
cross-ppc64-gcc-icecream-backend.spec: same change
cross-ppc-gcc-icecream-backend.spec: same change
cross-s390-gcc-icecream-backend.spec: same change
cross-s390x-gcc-icecream-backend.spec: same change
++++++ cross-spu-gcc.spec ++++++
--- /var/tmp/diff_new_pack.l28281/_old 2008-03-07 20:20:39.000000000 +0100
+++ /var/tmp/diff_new_pack.l28281/_new 2008-03-07 20:20:39.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package cross-spu-gcc (Version 4.3.0_20080221)
+# spec file for package cross-spu-gcc (Version 4.3.0_20080306)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -45,7 +45,7 @@
%define biarch_targets x86_64 s390x powerpc64 powerpc
Url: http://gcc.gnu.org/
License: GPL v2 or later
-Version: 4.3.0_20080221
+Version: 4.3.0_20080306
Release: 1
%define gcc_version %(echo %version | sed 's/_.*//')
%define gcc_dir_version %(echo %gcc_version | cut -d '.' -f 1-2)
@@ -74,6 +74,8 @@
Patch25: pr27880.diff
Patch28: pr33763.diff
Patch30: Wunprototyped-calls.diff
+Patch31: pr35472.diff
+Patch32: pr34989.diff
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
Patch55: gcc41-java-slow_pthread_self.patch
@@ -81,6 +83,12 @@
# Some patches taken from Debian
Patch60: gcc43-textdomain.patch
Patch61: gcc43-rename-info-files.patch
+# Patches for AMD features
+Patch70: pr34043-1.diff
+Patch71: pr34043-2.diff
+Patch72: pr34043-3.diff
+Patch73: pr34043-4.diff
+Patch74: pr34043-5.diff
# LIBJAVA-DELETE-BEGIN
%description
@@ -130,11 +138,18 @@
%patch25
%patch28
%patch30
+%patch31
+%patch32
%patch51
%patch55
%patch57
%patch60
%patch61
+%patch70
+%patch71
+%patch72
+%patch73
+%patch74 -p1
%build
# Avoid rebuilding of generated files
@@ -144,13 +159,6 @@
# See also gcc-dir-version.patch.
mv gcc/BASE-VER gcc/FULL-VER
cat gcc/FULL-VER | cut -d '.' -f 1-2 > gcc/BASE-VER
-# We don't want to show (prerelease) but need to adjust the version
-# number then?
-#if test "`cat gcc/DEV-PHASE`" == "prerelease" \
-# -a ! `cat gcc/FULL-VER | grep '\.0$'`; then
- # don't make it empty, otherwise date and revision are not shown
-# echo ' ' > gcc/DEV_PHASE
-#fi
rm -rf obj-%{GCCDIST}
mkdir obj-%{GCCDIST}
cd obj-%{GCCDIST}
@@ -345,6 +353,12 @@
%defattr(-,root,root)
%{_prefix}
%changelog
+* Thu Mar 06 2008 rguenther@suse.de
+- Update to GCC 4.3.0 release.
+- Add patches for PR35472 and PR34989.
+- Add patches for AMD requested feature. [ggo#34043]
+* Fri Feb 22 2008 rguenther@suse.de
+- Deal with fixed wchar.h on old glibc systems.
* Mon Feb 18 2008 rguenther@suse.de
- Update to gcc-4_3-branch head (r132521). [bnc#355496, bnc#354113]
* Sat Feb 16 2008 schwab@suse.de
cross-spu-gcc-static.spec: same change
++++++ cross-x86_64-gcc-icecream-backend.spec ++++++
--- /var/tmp/diff_new_pack.l28281/_old 2008-03-07 20:20:39.000000000 +0100
+++ /var/tmp/diff_new_pack.l28281/_new 2008-03-07 20:20:39.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package cross-x86_64-gcc-icecream-backend (Version 4.3.0_20080221)
+# spec file for package cross-x86_64-gcc-icecream-backend (Version 4.3.0_20080306)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -34,7 +34,7 @@
%define biarch_targets x86_64 s390x powerpc64 powerpc
Url: http://gcc.gnu.org/
License: BSD 3-Clause; GPL v2 or later; LGPL v2.1 or later; X11/MIT
-Version: 4.3.0_20080221
+Version: 4.3.0_20080306
Release: 1
%define gcc_version %(echo %version | sed 's/_.*//')
%define gcc_dir_version %(echo %gcc_version | cut -d '.' -f 1-2)
@@ -63,6 +63,8 @@
Patch25: pr27880.diff
Patch28: pr33763.diff
Patch30: Wunprototyped-calls.diff
+Patch31: pr35472.diff
+Patch32: pr34989.diff
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
Patch55: gcc41-java-slow_pthread_self.patch
@@ -70,6 +72,12 @@
# Some patches taken from Debian
Patch60: gcc43-textdomain.patch
Patch61: gcc43-rename-info-files.patch
+# Patches for AMD features
+Patch70: pr34043-1.diff
+Patch71: pr34043-2.diff
+Patch72: pr34043-3.diff
+Patch73: pr34043-4.diff
+Patch74: pr34043-5.diff
# LIBJAVA-DELETE-BEGIN
%description
@@ -127,11 +135,18 @@
%patch25
%patch28
%patch30
+%patch31
+%patch32
%patch51
%patch55
%patch57
%patch60
%patch61
+%patch70
+%patch71
+%patch72
+%patch73
+%patch74 -p1
%build
# Avoid rebuilding of generated files
@@ -141,13 +156,6 @@
# See also gcc-dir-version.patch.
mv gcc/BASE-VER gcc/FULL-VER
cat gcc/FULL-VER | cut -d '.' -f 1-2 > gcc/BASE-VER
-# We don't want to show (prerelease) but need to adjust the version
-# number then?
-#if test "`cat gcc/DEV-PHASE`" == "prerelease" \
-# -a ! `cat gcc/FULL-VER | grep '\.0$'`; then
- # don't make it empty, otherwise date and revision are not shown
-# echo ' ' > gcc/DEV_PHASE
-#fi
rm -rf obj-%{GCCDIST}
mkdir obj-%{GCCDIST}
cd obj-%{GCCDIST}
@@ -376,6 +384,12 @@
/usr/share/icecream-envs
%changelog
+* Thu Mar 06 2008 rguenther@suse.de
+- Update to GCC 4.3.0 release.
+- Add patches for PR35472 and PR34989.
+- Add patches for AMD requested feature. [ggo#34043]
+* Fri Feb 22 2008 rguenther@suse.de
+- Deal with fixed wchar.h on old glibc systems.
* Mon Feb 18 2008 rguenther@suse.de
- Update to gcc-4_3-branch head (r132521). [bnc#355496, bnc#354113]
* Sat Feb 16 2008 schwab@suse.de
++++++ gcc43.spec ++++++
--- /var/tmp/diff_new_pack.l28281/_old 2008-03-07 20:20:39.000000000 +0100
+++ /var/tmp/diff_new_pack.l28281/_new 2008-03-07 20:20:39.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package gcc43 (Version 4.3.0_20080221)
+# spec file for package gcc43 (Version 4.3.0_20080306)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -107,7 +107,7 @@
%define biarch_targets x86_64 s390x powerpc64 powerpc
Url: http://gcc.gnu.org/
License: GPL v3 or later
-Version: 4.3.0_20080221
+Version: 4.3.0_20080306
Release: 1
%define gcc_version %(echo %version | sed 's/_.*//')
%define gcc_dir_version %(echo %gcc_version | cut -d '.' -f 1-2)
@@ -145,6 +145,8 @@
Patch25: pr27880.diff
Patch28: pr33763.diff
Patch30: Wunprototyped-calls.diff
+Patch31: pr35472.diff
+Patch32: pr34989.diff
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
Patch55: gcc41-java-slow_pthread_self.patch
@@ -152,6 +154,12 @@
# Some patches taken from Debian
Patch60: gcc43-textdomain.patch
Patch61: gcc43-rename-info-files.patch
+# Patches for AMD features
+Patch70: pr34043-1.diff
+Patch71: pr34043-2.diff
+Patch72: pr34043-3.diff
+Patch73: pr34043-4.diff
+Patch74: pr34043-5.diff
# LIBJAVA-DELETE-BEGIN
%description
@@ -1288,11 +1296,18 @@
%patch25
%patch28
%patch30
+%patch31
+%patch32
%patch51
%patch55
%patch57
%patch60
%patch61
+%patch70
+%patch71
+%patch72
+%patch73
+%patch74 -p1
%build
# Avoid rebuilding of generated files
@@ -1302,13 +1317,6 @@
# See also gcc-dir-version.patch.
mv gcc/BASE-VER gcc/FULL-VER
cat gcc/FULL-VER | cut -d '.' -f 1-2 > gcc/BASE-VER
-# We don't want to show (prerelease) but need to adjust the version
-# number then?
-#if test "`cat gcc/DEV-PHASE`" == "prerelease" \
-# -a ! `cat gcc/FULL-VER | grep '\.0$'`; then
- # don't make it empty, otherwise date and revision are not shown
-# echo ' ' > gcc/DEV_PHASE
-#fi
rm -rf obj-%{GCCDIST}
mkdir obj-%{GCCDIST}
cd obj-%{GCCDIST}
@@ -1502,7 +1510,6 @@
%install
export NO_BRP_CHECK_BYTECODE_VERSION=true
-rm -rf $RPM_BUILD_ROOT
cd obj-%{GCCDIST}
# Work around tail/head -1 changes
export _POSIX2_VERSION=199209
@@ -1854,6 +1861,9 @@
%{libsubdir}/include-fixed/README
%{libsubdir}/include-fixed/limits.h
%{libsubdir}/include-fixed/syslimits.h
+%if %{suse_version} < 1030
+%{libsubdir}/include-fixed/wchar.h
+%endif
%{libsubdir}/include/omp.h
%{libsubdir}/include/float.h
%{libsubdir}/include/iso646.h
@@ -2299,6 +2309,12 @@
%endif
%changelog
+* Thu Mar 06 2008 rguenther@suse.de
+- Update to GCC 4.3.0 release.
+- Add patches for PR35472 and PR34989.
+- Add patches for AMD requested feature. [ggo#34043]
+* Fri Feb 22 2008 rguenther@suse.de
+- Deal with fixed wchar.h on old glibc systems.
* Mon Feb 18 2008 rguenther@suse.de
- Update to gcc-4_3-branch head (r132521). [bnc#355496, bnc#354113]
* Sat Feb 16 2008 schwab@suse.de
++++++ libgcj43.spec ++++++
--- /var/tmp/diff_new_pack.l28281/_old 2008-03-07 20:20:39.000000000 +0100
+++ /var/tmp/diff_new_pack.l28281/_new 2008-03-07 20:20:39.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package libgcj43 (Version 4.3.0_20080221)
+# spec file for package libgcj43 (Version 4.3.0_20080306)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -119,7 +119,7 @@
%define biarch_targets x86_64 s390x powerpc64 powerpc
Url: http://gcc.gnu.org/
License: GPL v2 or later; LGPL v2.1 or later
-Version: 4.3.0_20080221
+Version: 4.3.0_20080306
Release: 1
%define gcc_version %(echo %version | sed 's/_.*//')
%define gcc_dir_version %(echo %gcc_version | cut -d '.' -f 1-2)
@@ -157,6 +157,8 @@
Patch25: pr27880.diff
Patch28: pr33763.diff
Patch30: Wunprototyped-calls.diff
+Patch31: pr35472.diff
+Patch32: pr34989.diff
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
Patch55: gcc41-java-slow_pthread_self.patch
@@ -164,6 +166,12 @@
# Some patches taken from Debian
Patch60: gcc43-textdomain.patch
Patch61: gcc43-rename-info-files.patch
+# Patches for AMD features
+Patch70: pr34043-1.diff
+Patch71: pr34043-2.diff
+Patch72: pr34043-3.diff
+Patch73: pr34043-4.diff
+Patch74: pr34043-5.diff
Summary: Java Runtime Library for gcc
Group: System/Libraries
%define gcj_sover 9
@@ -531,11 +539,18 @@
%patch25
%patch28
%patch30
+%patch31
+%patch32
%patch51
%patch55
%patch57
%patch60
%patch61
+%patch70
+%patch71
+%patch72
+%patch73
+%patch74 -p1
%build
# Avoid rebuilding of generated files
@@ -545,13 +560,6 @@
# See also gcc-dir-version.patch.
mv gcc/BASE-VER gcc/FULL-VER
cat gcc/FULL-VER | cut -d '.' -f 1-2 > gcc/BASE-VER
-# We don't want to show (prerelease) but need to adjust the version
-# number then?
-#if test "`cat gcc/DEV-PHASE`" == "prerelease" \
-# -a ! `cat gcc/FULL-VER | grep '\.0$'`; then
- # don't make it empty, otherwise date and revision are not shown
-# echo ' ' > gcc/DEV_PHASE
-#fi
rm -rf obj-%{GCCDIST}
mkdir obj-%{GCCDIST}
cd obj-%{GCCDIST}
@@ -745,7 +753,6 @@
%install
export NO_BRP_CHECK_BYTECODE_VERSION=true
-rm -rf $RPM_BUILD_ROOT
cd obj-%{GCCDIST}
# Work around tail/head -1 changes
export _POSIX2_VERSION=199209
@@ -1128,6 +1135,12 @@
%endif
%changelog
+* Thu Mar 06 2008 rguenther@suse.de
+- Update to GCC 4.3.0 release.
+- Add patches for PR35472 and PR34989.
+- Add patches for AMD requested feature. [ggo#34043]
+* Fri Feb 22 2008 rguenther@suse.de
+- Deal with fixed wchar.h on old glibc systems.
* Mon Feb 18 2008 rguenther@suse.de
- Update to gcc-4_3-branch head (r132521). [bnc#355496, bnc#354113]
* Sat Feb 16 2008 schwab@suse.de
++++++ gcc-4.3.0-20080221.tar.bz2 -> gcc-4.3.0-20080306.tar.bz2 ++++++
gcc43/gcc-4.3.0-20080221.tar.bz2 gcc43/gcc-4.3.0-20080306.tar.bz2 differ: byte 11, line 1
++++++ gcc.spec.in ++++++
--- gcc43/gcc.spec.in 2008-02-21 14:07:46.000000000 +0100
+++ gcc43/gcc.spec.in 2008-03-06 13:02:46.000000000 +0100
@@ -122,7 +122,7 @@
URL: http://gcc.gnu.org/
License: GPL
-Version: 4.3.0_20080221
+Version: 4.3.0_20080306
Release: 1
%define gcc_version %(echo %version | sed 's/_.*//')
%define gcc_dir_version %(echo %gcc_version | cut -d '.' -f 1-2)
@@ -162,6 +162,8 @@
Patch25: pr27880.diff
Patch28: pr33763.diff
Patch30: Wunprototyped-calls.diff
+Patch31: pr35472.diff
+Patch32: pr34989.diff
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
Patch55: gcc41-java-slow_pthread_self.patch
@@ -169,6 +171,12 @@
# Some patches taken from Debian
Patch60: gcc43-textdomain.patch
Patch61: gcc43-rename-info-files.patch
+# Patches for AMD features
+Patch70: pr34043-1.diff
+Patch71: pr34043-2.diff
+Patch72: pr34043-3.diff
+Patch73: pr34043-4.diff
+Patch74: pr34043-5.diff
# LIBJAVA-DELETE-BEGIN
%description
@@ -802,11 +810,18 @@
%patch25
%patch28
%patch30
+%patch31
+%patch32
%patch51
%patch55
%patch57
%patch60
%patch61
+%patch70
+%patch71
+%patch72
+%patch73
+%patch74 -p1
%build
# Avoid rebuilding of generated files
@@ -818,14 +833,6 @@
mv gcc/BASE-VER gcc/FULL-VER
cat gcc/FULL-VER | cut -d '.' -f 1-2 > gcc/BASE-VER
-# We don't want to show (prerelease) but need to adjust the version
-# number then?
-#if test "`cat gcc/DEV-PHASE`" == "prerelease" \
-# -a ! `cat gcc/FULL-VER | grep '\.0$'`; then
- # don't make it empty, otherwise date and revision are not shown
-# echo ' ' > gcc/DEV_PHASE
-#fi
-
rm -rf obj-%{GCCDIST}
mkdir obj-%{GCCDIST}
cd obj-%{GCCDIST}
@@ -1029,7 +1036,6 @@
%install
export NO_BRP_CHECK_BYTECODE_VERSION=true
-rm -rf $RPM_BUILD_ROOT
cd obj-%{GCCDIST}
# Work around tail/head -1 changes
export _POSIX2_VERSION=199209
@@ -1397,6 +1403,9 @@
%{libsubdir}/include-fixed/README
%{libsubdir}/include-fixed/limits.h
%{libsubdir}/include-fixed/syslimits.h
+%if %{suse_version} < 1030
+%{libsubdir}/include-fixed/wchar.h
+%endif
%{libsubdir}/include/omp.h
%{libsubdir}/include/float.h
%{libsubdir}/include/iso646.h
++++++ pr34043-1.diff ++++++
2008-02-29 Richard Guenther
* tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
vn_lookup_or_add.
* tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
value for comparing for a store match.
(simplify_unary_expression): Do nothing for SSA_NAMEs.
(try_to_simplify): Do not do a full-blown reference lookup.
Index: gcc/tree-ssa-sccvn.c
===================================================================
--- gcc/tree-ssa-sccvn.c (revision 132767)
+++ gcc/tree-ssa-sccvn.c (revision 132768)
@@ -1231,6 +1231,8 @@ visit_reference_op_store (tree lhs, tree
{
if (TREE_CODE (result) == SSA_NAME)
result = SSA_VAL (result);
+ if (TREE_CODE (op) == SSA_NAME)
+ op = SSA_VAL (op);
resultsame = expressions_equal_p (result, op);
}
@@ -1527,13 +1529,10 @@ simplify_unary_expression (tree rhs)
static tree
try_to_simplify (tree stmt, tree rhs)
{
+ /* For stores we can end up simplifying a SSA_NAME rhs. Just return
+ in this case, there is no point in doing extra work. */
if (TREE_CODE (rhs) == SSA_NAME)
- {
- if (is_gimple_min_invariant (SSA_VAL (rhs)))
- return SSA_VAL (rhs);
- else if (VN_INFO (rhs)->has_constants)
- return VN_INFO (rhs)->expr;
- }
+ return rhs;
else
{
switch (TREE_CODE_CLASS (TREE_CODE (rhs)))
@@ -1550,13 +1549,11 @@ try_to_simplify (tree stmt, tree rhs)
/* Fallthrough. */
case tcc_reference:
- {
- tree result = vn_reference_lookup (rhs,
- shared_vuses_from_stmt (stmt));
- if (result)
- return result;
- }
- /* Fallthrough for some codes. */
+ /* Do not do full-blown reference lookup here.
+ ??? But like for tcc_declaration, we should simplify
+ from constant initializers. */
+
+ /* Fallthrough for some codes that can operate on registers. */
if (!(TREE_CODE (rhs) == REALPART_EXPR
|| TREE_CODE (rhs) == IMAGPART_EXPR))
break;
Index: gcc/tree-ssa-pre.c
===================================================================
--- gcc/tree-ssa-pre.c (revision 132767)
+++ gcc/tree-ssa-pre.c (revision 132768)
@@ -3256,7 +3256,9 @@ get_sccvn_value (tree name)
!ZERO_SSA_OPERANDS (defstmt2, SSA_OP_ALL_VIRTUALS))
gcc_assert (defstmt);
}
- valvh = vn_lookup_or_add_with_stmt (val, defstmt);
+ /* We lookup with the LHS, so do not use vn_lookup_or_add_with_stmt
+ here, as that will result in useless reference lookups. */
+ valvh = vn_lookup_or_add (val);
}
if (dump_file && (dump_flags & TDF_DETAILS))
++++++ pr34043-2.diff ++++++
2008-03-01 Richard Guenther
PR tree-optimization/35411
* tree-sra.c (sra_build_assignment): Split conversion to
final type to a separate statement if we are not assigning
to a register.
Index: gcc/tree-sra.c
===================================================================
*** gcc/tree-sra.c (revision 132767)
--- gcc/tree-sra.c (working copy)
*************** sra_build_assignment (tree dst, tree src
*** 2139,2145 ****
if (scalar_bitfield_p (src))
{
tree var, shift, width;
! tree utype, stype, stmp, utmp;
tree list, stmt;
bool unsignedp = BIT_FIELD_REF_UNSIGNED (src);
--- 2139,2145 ----
if (scalar_bitfield_p (src))
{
tree var, shift, width;
! tree utype, stype, stmp, utmp, dtmp;
tree list, stmt;
bool unsignedp = BIT_FIELD_REF_UNSIGNED (src);
*************** sra_build_assignment (tree dst, tree src
*** 2256,2261 ****
--- 2256,2271 ----
var = fold_convert (TREE_TYPE (dst), var);
else
var = fold_build1 (VIEW_CONVERT_EXPR, TREE_TYPE (dst), var);
+
+ /* If the destination is not a register the conversion needs
+ to be a separate statement. */
+ if (!is_gimple_reg (dst))
+ {
+ dtmp = make_rename_temp (TREE_TYPE (dst), "SR");
+ stmt = build_gimple_modify_stmt (dtmp, var);
+ append_to_statement_list (stmt, &list);
+ var = dtmp;
+ }
}
stmt = build_gimple_modify_stmt (dst, var);
append_to_statement_list (stmt, &list);
++++++ pr34043-3.diff ++++++
2008-02-29 Richard Guenther
* fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
integral and pointer arguments which do not change the
precision to NOP_EXPRs.
* tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
VIEW_CONVERT_EXPR case.
Index: gcc/fold-const.c
===================================================================
*** gcc/fold-const.c 2008-03-01 19:51:04.000000000 +0100
--- gcc/fold-const.c 2008-03-01 19:53:25.000000000 +0100
*************** fold_unary (enum tree_code code, tree ty
*** 8277,8289 ****
case VIEW_CONVERT_EXPR:
if (TREE_TYPE (op0) == type)
return op0;
! if (TREE_CODE (op0) == VIEW_CONVERT_EXPR
! || (TREE_CODE (op0) == NOP_EXPR
! && INTEGRAL_TYPE_P (TREE_TYPE (op0))
! && INTEGRAL_TYPE_P (TREE_TYPE (TREE_OPERAND (op0, 0)))
! && TYPE_PRECISION (TREE_TYPE (op0))
! == TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (op0, 0)))))
return fold_build1 (VIEW_CONVERT_EXPR, type, TREE_OPERAND (op0, 0));
return fold_view_convert_expr (type, op0);
case NEGATE_EXPR:
--- 8277,8304 ----
case VIEW_CONVERT_EXPR:
if (TREE_TYPE (op0) == type)
return op0;
! if (TREE_CODE (op0) == VIEW_CONVERT_EXPR)
return fold_build1 (VIEW_CONVERT_EXPR, type, TREE_OPERAND (op0, 0));
+
+ /* For integral conversions with the same precision or pointer
+ conversions use a NOP_EXPR instead. */
+ if ((INTEGRAL_TYPE_P (type) && INTEGRAL_TYPE_P (TREE_TYPE (op0))
+ && TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (op0))
+ /* Do not muck with VIEW_CONVERT_EXPRs that convert from
+ a sub-type to its base type as generated by the Ada FE. */
+ && !TREE_TYPE (TREE_TYPE (op0)))
+ || (POINTER_TYPE_P (type) && POINTER_TYPE_P (TREE_TYPE (op0))))
+ return fold_convert (type, op0);
+
+ /* Strip inner integral conversions that do not change the precision. */
+ if ((TREE_CODE (op0) == NOP_EXPR
+ || TREE_CODE (op0) == CONVERT_EXPR)
+ && INTEGRAL_TYPE_P (TREE_TYPE (op0))
+ && INTEGRAL_TYPE_P (TREE_TYPE (TREE_OPERAND (op0, 0)))
+ && (TYPE_PRECISION (TREE_TYPE (op0))
+ == TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (op0, 0)))))
+ return fold_build1 (VIEW_CONVERT_EXPR, type, TREE_OPERAND (op0, 0));
+
return fold_view_convert_expr (type, op0);
case NEGATE_EXPR:
Index: gcc/tree-ssa-loop-ivopts.c
===================================================================
*** gcc/tree-ssa-loop-ivopts.c 2008-03-01 19:51:04.000000000 +0100
--- gcc/tree-ssa-loop-ivopts.c 2008-03-01 19:53:25.000000000 +0100
*************** may_be_nonaddressable_p (tree expr)
*** 1522,1529 ****
and make them look addressable. After some processing the
non-addressability may be uncovered again, causing ADDR_EXPRs
of inappropriate objects to be built. */
! if (AGGREGATE_TYPE_P (TREE_TYPE (expr))
! && !AGGREGATE_TYPE_P (TREE_TYPE (TREE_OPERAND (expr, 0))))
return true;
/* ... fall through ... */
--- 1522,1529 ----
and make them look addressable. After some processing the
non-addressability may be uncovered again, causing ADDR_EXPRs
of inappropriate objects to be built. */
! if (is_gimple_reg (TREE_OPERAND (expr, 0))
! || is_gimple_min_invariant (TREE_OPERAND (expr, 0)))
return true;
/* ... fall through ... */
++++++ pr34043-4.diff ++++++
2008-02-29 Richard Guenther
* tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
struct copies into the expression table.
(simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
(try_to_simplify): Likewise.
Index: gcc/tree-ssa-sccvn.c
===================================================================
*** gcc/tree-ssa-sccvn.c 2008-03-01 19:53:24.000000000 +0100
--- gcc/tree-ssa-sccvn.c 2008-03-01 19:53:24.000000000 +0100
*************** visit_reference_op_store (tree lhs, tree
*** 1311,1317 ****
changed |= set_ssa_val_to (vdef, vdef);
}
! vn_reference_insert (lhs, op, vdefs);
}
else
{
--- 1365,1374 ----
changed |= set_ssa_val_to (vdef, vdef);
}
! /* Do not insert structure copies into the tables. */
! if (is_gimple_min_invariant (op)
! || is_gimple_reg (op))
! vn_reference_insert (lhs, op, vdefs);
}
else
{
*************** simplify_unary_expression (tree rhs)
*** 1549,1561 ****
else if (TREE_CODE (rhs) == NOP_EXPR
|| TREE_CODE (rhs) == CONVERT_EXPR
|| TREE_CODE (rhs) == REALPART_EXPR
! || TREE_CODE (rhs) == IMAGPART_EXPR)
{
/* We want to do tree-combining on conversion-like expressions.
Make sure we feed only SSA_NAMEs or constants to fold though. */
tree tem = valueize_expr (VN_INFO (op0)->expr);
if (UNARY_CLASS_P (tem)
|| BINARY_CLASS_P (tem)
|| TREE_CODE (tem) == SSA_NAME
|| is_gimple_min_invariant (tem))
op0 = tem;
--- 1606,1620 ----
else if (TREE_CODE (rhs) == NOP_EXPR
|| TREE_CODE (rhs) == CONVERT_EXPR
|| TREE_CODE (rhs) == REALPART_EXPR
! || TREE_CODE (rhs) == IMAGPART_EXPR
! || TREE_CODE (rhs) == VIEW_CONVERT_EXPR)
{
/* We want to do tree-combining on conversion-like expressions.
Make sure we feed only SSA_NAMEs or constants to fold though. */
tree tem = valueize_expr (VN_INFO (op0)->expr);
if (UNARY_CLASS_P (tem)
|| BINARY_CLASS_P (tem)
+ || TREE_CODE (tem) == VIEW_CONVERT_EXPR
|| TREE_CODE (tem) == SSA_NAME
|| is_gimple_min_invariant (tem))
op0 = tem;
*************** try_to_simplify (tree stmt, tree rhs)
*** 1607,1613 ****
/* Fallthrough for some codes that can operate on registers. */
if (!(TREE_CODE (rhs) == REALPART_EXPR
! || TREE_CODE (rhs) == IMAGPART_EXPR))
break;
/* We could do a little more with unary ops, if they expand
into binary ops, but it's debatable whether it is worth it. */
--- 1666,1673 ----
/* Fallthrough for some codes that can operate on registers. */
if (!(TREE_CODE (rhs) == REALPART_EXPR
! || TREE_CODE (rhs) == IMAGPART_EXPR
! || TREE_CODE (rhs) == VIEW_CONVERT_EXPR))
break;
/* We could do a little more with unary ops, if they expand
into binary ops, but it's debatable whether it is worth it. */
++++++ pr34043-5.diff ++++++
2008-02-29 Richard Guenther
PR tree-optimization/34043
PR tree-optimization/33989
* tree-ssa-pre.c (get_sccvn_value): Build a value handle for
to be inserted expressions.
(substitute_leaders_in_expr): New function.
(eliminate): If we do not have a fully redundant leader but
can insert an alternate simplified expression, do so with all
operands replaced with their leader.
* tree-ssa-sccvn.h (struct vn_ssa_aux): Add needs_insertion flag.
* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Value-number
union member access based on its size, not type and member.
(visit_reference_op_load): For a weak match from union type
punning create a fake SSA_NAME to attach a value-number for
the result VIEW_CONVERTed to the correct type.
(free_scc_vn): Release fake SSA_NAMEs again.
* gcc.dg/tree-ssa/ssa-fre-7.c: New testcase.
* gcc.dg/tree-ssa/ssa-fre-8.c: Likewise.
Index: gcc-4.3.0-20080306/gcc/tree-ssa-pre.c
===================================================================
*** gcc-4.3.0-20080306.orig/gcc/tree-ssa-pre.c 2008-03-06 13:08:25.000000000 +0100
--- gcc-4.3.0-20080306/gcc/tree-ssa-pre.c 2008-03-06 13:08:33.000000000 +0100
*************** get_sccvn_value (tree name)
*** 3237,3247 ****
bool is_invariant = is_gimple_min_invariant (val);
tree valvh = !is_invariant ? get_value_handle (val) : NULL_TREE;
/* We may end up with situations where SCCVN has chosen a
representative for the equivalence set that we have not
visited yet. In this case, just create the value handle for
it. */
! if (!valvh && !is_invariant)
{
tree defstmt = SSA_NAME_DEF_STMT (val);
--- 3237,3252 ----
bool is_invariant = is_gimple_min_invariant (val);
tree valvh = !is_invariant ? get_value_handle (val) : NULL_TREE;
+ /* In the case SCCVN has created a dummy SSA_NAME to value
+ number a simplified expression, just create a value handle
+ for it. */
+ if (!valvh && !is_invariant && VN_INFO (val)->needs_insertion)
+ valvh = vn_lookup_or_add (VN_INFO (val)->expr);
/* We may end up with situations where SCCVN has chosen a
representative for the equivalence set that we have not
visited yet. In this case, just create the value handle for
it. */
! else if (!valvh && !is_invariant)
{
tree defstmt = SSA_NAME_DEF_STMT (val);
*************** compute_avail (void)
*** 3590,3595 ****
--- 3595,3648 ----
free (worklist);
}
+ /* Substitutes leaders for all operands in EXPR supposed to replace
+ the rhs of STMT in basic-block BB.
+ Returns an available expression if that succeeds, NULL_TREE otherwise. */
+
+ static tree
+ substitute_leaders_in_expr (basic_block bb, tree stmt, tree expr)
+ {
+ switch (TREE_CODE_CLASS (TREE_CODE (expr)))
+ {
+ case tcc_reference:
+ if (TREE_CODE (expr) != VIEW_CONVERT_EXPR
+ && TREE_CODE (expr) != REALPART_EXPR
+ && TREE_CODE (expr) != IMAGPART_EXPR)
+ return NULL_TREE;
+
+ /* Fallthrough. */
+ case tcc_unary:
+ if (is_gimple_min_invariant (TREE_OPERAND (expr, 0)))
+ return expr;
+ if (TREE_CODE (TREE_OPERAND (expr, 0)) == SSA_NAME)
+ {
+ tree def_stmt;
+ tree tmp = get_value_handle (TREE_OPERAND (expr, 0));
+ tmp = bitmap_find_leader (AVAIL_OUT (bb), tmp);
+ if (!tmp)
+ return NULL_TREE;
+ /* tmp can still be unavailable if it is defined in the same
+ basic-block, but after stmt. libgomp.fortran/retval1.f90:f5 */
+ def_stmt = SSA_NAME_DEF_STMT (tmp);
+ if (def_stmt
+ && TREE_CODE (def_stmt) != PHI_NODE
+ && bb_for_stmt (def_stmt) == bb)
+ {
+ block_stmt_iterator bsi = bsi_start (bb);
+ while (bsi_stmt (bsi) != def_stmt)
+ {
+ if (bsi_stmt (bsi) == stmt)
+ return NULL_TREE;
+ bsi_next (&bsi);
+ }
+ }
+ return build1 (TREE_CODE (expr), TREE_TYPE (expr), tmp);
+ }
+
+ default:;
+ }
+ return NULL_TREE;
+ }
/* Eliminate fully redundant computations. */
*************** eliminate (void)
*** 3622,3627 ****
--- 3675,3696 ----
sprime = bitmap_find_leader (AVAIL_OUT (b),
get_value_handle (lhs));
+ /* If we didn't find a leader but have an expression
+ we can insert, use that as replacement. */
+ if (sprime
+ && sprime == lhs
+ && VN_INFO (lhs)->valnum != VN_TOP
+ /* Instead of VN_TOP we also can end up with a
+ constant value. g++.dg/opt/reload1.C */
+ && TREE_CODE (VN_INFO (lhs)->valnum) == SSA_NAME
+ && VN_INFO (VN_INFO (lhs)->valnum)->needs_insertion)
+ {
+ tree tmp = VN_INFO (VN_INFO (lhs)->valnum)->expr;
+ tmp = substitute_leaders_in_expr (b, stmt, tmp);
+ if (tmp)
+ sprime = tmp;
+ }
+
if (sprime
&& sprime != lhs
&& (TREE_CODE (*rhs_p) != SSA_NAME
Index: gcc-4.3.0-20080306/gcc/tree-ssa-sccvn.c
===================================================================
*** gcc-4.3.0-20080306.orig/gcc/tree-ssa-sccvn.c 2008-03-06 13:08:25.000000000 +0100
--- gcc-4.3.0-20080306/gcc/tree-ssa-sccvn.c 2008-03-06 13:10:00.000000000 +0100
*************** copy_reference_ops_from_ref (tree ref, V
*** 538,545 ****
temp.op1 = TREE_OPERAND (ref, 2);
break;
case COMPONENT_REF:
! /* Record field as operand. */
! temp.op0 = TREE_OPERAND (ref, 1);
break;
case ARRAY_RANGE_REF:
case ARRAY_REF:
--- 538,555 ----
temp.op1 = TREE_OPERAND (ref, 2);
break;
case COMPONENT_REF:
! /* If this is a reference to a union member, record the union
! member size as operand. */
! if (TREE_CODE (DECL_CONTEXT (TREE_OPERAND (ref, 1))) == UNION_TYPE
! && integer_zerop (DECL_FIELD_OFFSET (TREE_OPERAND (ref, 1)))
! && integer_zerop (DECL_FIELD_BIT_OFFSET (TREE_OPERAND (ref, 1))))
! {
! temp.type = NULL_TREE;
! temp.op0 = TYPE_SIZE (TREE_TYPE (TREE_OPERAND (ref, 1)));
! }
! else
! /* Record field as operand. */
! temp.op0 = TREE_OPERAND (ref, 1);
break;
case ARRAY_RANGE_REF:
case ARRAY_REF:
*************** defs_to_varying (tree stmt)
*** 1107,1112 ****
--- 1117,1125 ----
return changed;
}
+ static tree
+ try_to_simplify (tree stmt, tree rhs);
+
/* Visit a copy between LHS and RHS, return true if the value number
changed. */
*************** visit_reference_op_load (tree lhs, tree
*** 1179,1186 ****
bool changed = false;
tree result = vn_reference_lookup (op, shared_vuses_from_stmt (stmt));
! if (result)
! {
changed = set_ssa_val_to (lhs, result);
}
else
--- 1192,1240 ----
bool changed = false;
tree result = vn_reference_lookup (op, shared_vuses_from_stmt (stmt));
! /* We handle type-punning through unions by value-numbering based
! on offset and size of the access. Be prepared to handle a
! type-mismatch here via creating a VIEW_CONVERT_EXPR.
! Do this only after the iteration converged as introducing new
! SSA_NAMEs will let it never finish otherwise. */
! if (result
! && (useless_type_conversion_p (TREE_TYPE (result), TREE_TYPE (op))
! || current_info == valid_info))
! {
! if (!useless_type_conversion_p (TREE_TYPE (result), TREE_TYPE (op)))
! {
! tree val = fold_build1 (VIEW_CONVERT_EXPR, TREE_TYPE (op),
! result);
! /* Make sure to simplify with earlier conversions as otherwise
! our dummy SSA_NAMEs start to leak all over. */
! if (TREE_CODE (val) == VIEW_CONVERT_EXPR)
! val = try_to_simplify (stmt, val);
! result = val;
! if (result != lhs
! && !is_gimple_min_invariant (val)
! && TREE_CODE (val) != SSA_NAME)
! /* Finally do a lookup to not create redundant conversions. */
! result = vn_unary_op_lookup (val);
! if (!result)
! {
! /* Create a new temporary SSA_NAME to attach the
! conversion expression to. */
! result = make_ssa_name (SSA_NAME_VAR (lhs), NULL_TREE);
! VN_INFO_GET (result)->valnum = result;
! VN_INFO (result)->expr = val;
! VN_INFO (result)->needs_insertion = true;
! /* And insert the conversion so we can find it later. */
! vn_unary_op_insert (val, result);
! if (dump_file && (dump_flags & TDF_DETAILS))
! {
! fprintf (dump_file, "Inserting name ");
! print_generic_expr (dump_file, result, 0);
! fprintf (dump_file, " for expression ");
! print_generic_expr (dump_file, val, 0);
! fprintf (dump_file, "\n");
! }
! }
! }
changed = set_ssa_val_to (lhs, result);
}
else
*************** free_scc_vn (void)
*** 2083,2088 ****
--- 2137,2145 ----
if (SSA_NAME_VALUE (name) &&
TREE_CODE (SSA_NAME_VALUE (name)) == VALUE_HANDLE)
SSA_NAME_VALUE (name) = NULL;
+ if (name
+ && VN_INFO (name)->needs_insertion)
+ release_ssa_name (name);
}
}
Index: gcc-4.3.0-20080306/gcc/tree-ssa-sccvn.h
===================================================================
*** gcc-4.3.0-20080306.orig/gcc/tree-ssa-sccvn.h 2008-02-19 10:55:59.000000000 +0100
--- gcc-4.3.0-20080306/gcc/tree-ssa-sccvn.h 2008-03-06 13:08:33.000000000 +0100
*************** typedef struct vn_ssa_aux
*** 44,49 ****
--- 44,53 ----
once. It cannot be used to avoid visitation for SSA_NAME's
involved in non-singleton SCC's. */
unsigned use_processed : 1;
+
+ /* True, if this SSA_NAME doesn't have a defining statement.
+ Insertion of such with expr or replacement with expr is necessary. */
+ unsigned needs_insertion : 1;
} *vn_ssa_aux_t;
/* Return the value numbering info for an SSA_NAME. */
Index: gcc-4.3.0-20080306/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-7.c
===================================================================
*** /dev/null 1970-01-01 00:00:00.000000000 +0000
--- gcc-4.3.0-20080306/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-7.c 2008-03-06 13:08:33.000000000 +0100
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O -fdump-tree-fre-details -fdump-tree-optimized" } */
+
+ struct X {
+ int i;
+ union {
+ int j;
+ int k;
+ float f;
+ } u;
+ };
+
+ int foo(int j)
+ {
+ struct X a;
+
+ a.u.j = j;
+ a.u.f = a.u.f;
+ a.u.f = a.u.f;
+ a.u.j = a.u.j;
+ a.u.f = a.u.f;
+ return a.u.k;
+ }
+
+ /* { dg-final { scan-tree-dump "Replaced a.u.f with VIEW_CONVERT_EXPR" "fre" } } */
+ /* { dg-final { scan-tree-dump "Replaced a.u.j with j" "fre" } } */
+ /* { dg-final { scan-tree-dump "Replaced a.u.k with j" "fre" } } */
+ /* { dg-final { scan-tree-dump "return j" "optimized" } } */
+ /* { dg-final { cleanup-tree-dump "fre" } } */
+ /* { dg-final { cleanup-tree-dump "optimized" } } */
Index: gcc-4.3.0-20080306/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-8.c
===================================================================
*** /dev/null 1970-01-01 00:00:00.000000000 +0000
--- gcc-4.3.0-20080306/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-8.c 2008-03-06 13:08:33.000000000 +0100
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O -fdump-tree-fre-details" } */
+
+ union U {
+ int i;
+ float f;
+ };
+ int foo(int i, int b)
+ {
+ union U u;
+ if (b)
+ {
+ i = i << 2;
+ u.i = i;
+ return u.f;
+ }
+ else
+ {
+ i = i << 2;
+ u.i = i;
+ return u.f;
+ }
+ }
+
+ /* { dg-final { scan-tree-dump-times "Replaced u.f with VIEW_CONVERT_EXPR" 2 "fre" } } */
+ /* { dg-final { cleanup-tree-dump "fre" } } */
++++++ pr34989.diff ++++++
Index: gcc/testsuite/gcc.dg/pr34989-1.c
===================================================================
--- gcc/testsuite/gcc.dg/pr34989-1.c (revision 0)
+++ gcc/testsuite/gcc.dg/pr34989-1.c (revision 132429)
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "--combine -O2" } */
+/* { dg-additional-sources "pr34989-2.c" } */
+
+extern struct globals *const ptr_to_globals;
+struct globals { };
+int syslogd_main(int argc, char **argv)
+{
+ (*(struct globals**)&ptr_to_globals) = 0;
+}
Index: gcc/testsuite/gcc.dg/pr34989-2.c
===================================================================
--- gcc/testsuite/gcc.dg/pr34989-2.c (revision 0)
+++ gcc/testsuite/gcc.dg/pr34989-2.c (revision 132429)
@@ -0,0 +1,3 @@
+/* { dg-do compile } */
+
+extern struct globals *const ptr_to_globals;
Index: gcc/tree-ssa-forwprop.c
===================================================================
--- gcc/tree-ssa-forwprop.c (revision 132428)
+++ gcc/tree-ssa-forwprop.c (revision 132429)
@@ -546,68 +546,99 @@ forward_propagate_addr_expr_1 (tree name
bool single_use_p)
{
tree lhs, rhs, array_ref;
+ tree *rhsp, *lhsp;
- /* Strip away any outer COMPONENT_REF/ARRAY_REF nodes from the LHS.
- ADDR_EXPR will not appear on the LHS. */
- lhs = GIMPLE_STMT_OPERAND (use_stmt, 0);
- while (handled_component_p (lhs))
- lhs = TREE_OPERAND (lhs, 0);
+ gcc_assert (TREE_CODE (def_rhs) == ADDR_EXPR);
+ lhs = GIMPLE_STMT_OPERAND (use_stmt, 0);
rhs = GIMPLE_STMT_OPERAND (use_stmt, 1);
- /* Now see if the LHS node is an INDIRECT_REF using NAME. If so,
- propagate the ADDR_EXPR into the use of NAME and fold the result. */
- if (TREE_CODE (lhs) == INDIRECT_REF && TREE_OPERAND (lhs, 0) == name)
- {
- /* This should always succeed in creating gimple, so there is
- no need to save enough state to undo this propagation. */
- TREE_OPERAND (lhs, 0) = unshare_expr (def_rhs);
- fold_stmt_inplace (use_stmt);
- tidy_after_forward_propagate_addr (use_stmt);
-
- /* Continue propagating into the RHS. */
- }
-
/* Trivial cases. The use statement could be a trivial copy or a
useless conversion. Recurse to the uses of the lhs as copyprop does
- not copy through differen variant pointers and FRE does not catch
+ not copy through different variant pointers and FRE does not catch
all useless conversions. Treat the case of a single-use name and
a conversion to def_rhs type separate, though. */
- else if (TREE_CODE (lhs) == SSA_NAME
- && (TREE_CODE (rhs) == NOP_EXPR
- || TREE_CODE (rhs) == CONVERT_EXPR)
- && TREE_TYPE (rhs) == TREE_TYPE (def_rhs)
- && single_use_p)
- {
+ if (TREE_CODE (lhs) == SSA_NAME
+ && (rhs == name
+ || TREE_CODE (rhs) == NOP_EXPR
+ || TREE_CODE (rhs) == CONVERT_EXPR)
+ && useless_type_conversion_p (TREE_TYPE (rhs), TREE_TYPE (def_rhs)))
+ {
+ /* Only recurse if we don't deal with a single use. */
+ if (!single_use_p)
+ return forward_propagate_addr_expr (lhs, def_rhs);
+
GIMPLE_STMT_OPERAND (use_stmt, 1) = unshare_expr (def_rhs);
return true;
}
- else if ((TREE_CODE (lhs) == SSA_NAME
- && rhs == name)
- || ((TREE_CODE (rhs) == NOP_EXPR
- || TREE_CODE (rhs) == CONVERT_EXPR)
- && useless_type_conversion_p (TREE_TYPE (rhs),
- TREE_TYPE (def_rhs))))
- return forward_propagate_addr_expr (lhs, def_rhs);
+
+ /* Now strip away any outer COMPONENT_REF/ARRAY_REF nodes from the LHS.
+ ADDR_EXPR will not appear on the LHS. */
+ lhsp = &GIMPLE_STMT_OPERAND (use_stmt, 0);
+ while (handled_component_p (*lhsp))
+ lhsp = &TREE_OPERAND (*lhsp, 0);
+ lhs = *lhsp;
+
+ /* Now see if the LHS node is an INDIRECT_REF using NAME. If so,
+ propagate the ADDR_EXPR into the use of NAME and fold the result. */
+ if (TREE_CODE (lhs) == INDIRECT_REF
+ && TREE_OPERAND (lhs, 0) == name
+ /* This will not allow stripping const qualification from
+ pointers which we want to allow specifically here to clean up
+ the IL for initialization of constant objects. */
+ && (useless_type_conversion_p (TREE_TYPE (TREE_OPERAND (lhs, 0)),
+ TREE_TYPE (def_rhs))
+ /* So explicitly check for this here. */
+ || (TYPE_QUALS (TREE_TYPE (TREE_TYPE (TREE_OPERAND (lhs, 0))))
+ ^ TYPE_QUALS (TREE_TYPE (TREE_TYPE (def_rhs)))) == TYPE_QUAL_CONST)
+ /* ??? This looks redundant, but is required for bogus types
+ that can sometimes occur. */
+ && useless_type_conversion_p (TREE_TYPE (lhs),
+ TREE_TYPE (TREE_OPERAND (def_rhs, 0))))
+ {
+ *lhsp = unshare_expr (TREE_OPERAND (def_rhs, 0));
+ fold_stmt_inplace (use_stmt);
+ tidy_after_forward_propagate_addr (use_stmt);
+
+ /* Continue propagating into the RHS if this was not the only use. */
+ if (single_use_p)
+ return true;
+ }
/* Strip away any outer COMPONENT_REF, ARRAY_REF or ADDR_EXPR
nodes from the RHS. */
- while (handled_component_p (rhs)
- || TREE_CODE (rhs) == ADDR_EXPR)
- rhs = TREE_OPERAND (rhs, 0);
+ rhsp = &GIMPLE_STMT_OPERAND (use_stmt, 1);
+ while (handled_component_p (*rhsp)
+ || TREE_CODE (*rhsp) == ADDR_EXPR)
+ rhsp = &TREE_OPERAND (*rhsp, 0);
+ rhs = *rhsp;
/* Now see if the RHS node is an INDIRECT_REF using NAME. If so,
propagate the ADDR_EXPR into the use of NAME and fold the result. */
- if (TREE_CODE (rhs) == INDIRECT_REF && TREE_OPERAND (rhs, 0) == name)
+ if (TREE_CODE (rhs) == INDIRECT_REF
+ && TREE_OPERAND (rhs, 0) == name
+ /* ??? This doesn't allow stripping const qualification to
+ streamline the IL for reads from non-constant objects. */
+ && (useless_type_conversion_p (TREE_TYPE (TREE_OPERAND (rhs, 0)),
+ TREE_TYPE (def_rhs))
+ /* So explicitly check for this here. */
+ || (TYPE_QUALS (TREE_TYPE (TREE_TYPE (TREE_OPERAND (rhs, 0))))
+ ^ TYPE_QUALS (TREE_TYPE (TREE_TYPE (def_rhs)))) == TYPE_QUAL_CONST)
+ && useless_type_conversion_p (TREE_TYPE (rhs),
+ TREE_TYPE (TREE_OPERAND (def_rhs, 0))))
{
- /* This should always succeed in creating gimple, so there is
- no need to save enough state to undo this propagation. */
- TREE_OPERAND (rhs, 0) = unshare_expr (def_rhs);
+ *rhsp = unshare_expr (TREE_OPERAND (def_rhs, 0));
fold_stmt_inplace (use_stmt);
tidy_after_forward_propagate_addr (use_stmt);
return true;
}
+ /* If the use of the ADDR_EXPR is not a POINTER_PLUS_EXPR, there
+ is nothing to do. */
+ if (TREE_CODE (rhs) != POINTER_PLUS_EXPR
+ || TREE_OPERAND (rhs, 0) != name)
+ return false;
+
/* The remaining cases are all for turning pointer arithmetic into
array indexing. They only apply when we have the address of
element zero in an array. If that is not the case then there
@@ -618,15 +649,9 @@ forward_propagate_addr_expr_1 (tree name
|| !integer_zerop (TREE_OPERAND (array_ref, 1)))
return false;
- /* If the use of the ADDR_EXPR is not a POINTER_PLUS_EXPR, there
- is nothing to do. */
- if (TREE_CODE (rhs) != POINTER_PLUS_EXPR)
- return false;
-
/* Try to optimize &x[0] p+ C where C is a multiple of the size
of the elements in X into &x[C/element size]. */
- if (TREE_OPERAND (rhs, 0) == name
- && TREE_CODE (TREE_OPERAND (rhs, 1)) == INTEGER_CST)
+ if (TREE_CODE (TREE_OPERAND (rhs, 1)) == INTEGER_CST)
{
tree orig = unshare_expr (rhs);
TREE_OPERAND (rhs, 0) = unshare_expr (def_rhs);
@@ -651,8 +676,7 @@ forward_propagate_addr_expr_1 (tree name
converting a multiplication of an index by the size of the
array elements, then the result is converted into the proper
type for the arithmetic. */
- if (TREE_OPERAND (rhs, 0) == name
- && TREE_CODE (TREE_OPERAND (rhs, 1)) == SSA_NAME
+ if (TREE_CODE (TREE_OPERAND (rhs, 1)) == SSA_NAME
/* Avoid problems with IVopts creating PLUS_EXPRs with a
different type than their operands. */
&& useless_type_conversion_p (TREE_TYPE (rhs), TREE_TYPE (name)))
@@ -956,18 +980,14 @@ tree_ssa_forward_propagate_single_use_va
}
if (TREE_CODE (rhs) == ADDR_EXPR
- /* We can also disregard changes in const qualifiers for
- the dereferenced value. */
+ /* Handle pointer conversions on invariant addresses
+ as well, as this is valid gimple. */
|| ((TREE_CODE (rhs) == NOP_EXPR
|| TREE_CODE (rhs) == CONVERT_EXPR)
&& TREE_CODE (TREE_OPERAND (rhs, 0)) == ADDR_EXPR
- && POINTER_TYPE_P (TREE_TYPE (rhs))
- /* But do not propagate changes in volatileness. */
- && (TYPE_VOLATILE (TREE_TYPE (TREE_TYPE (rhs)))
- == TYPE_VOLATILE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (rhs, 0)))))
- && types_compatible_p (TREE_TYPE (TREE_TYPE (TREE_OPERAND (rhs, 0))),
- TREE_TYPE (TREE_TYPE (rhs)))))
+ && POINTER_TYPE_P (TREE_TYPE (rhs))))
{
+ STRIP_NOPS (rhs);
if (!stmt_references_abnormal_ssa_name (stmt)
&& forward_propagate_addr_expr (lhs, rhs))
{
++++++ pr35472.diff ++++++
2008-03-05 Richard Guenther
PR tree-optimization/35472
* tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
whose single use_stmt has a overlapping set of loaded and
stored symbols as that use_stmt might be a noop assignment then.
* gcc.c-torture/execute/pr35472.c: New testcase.
Index: gcc/tree-ssa-dse.c
===================================================================
*** gcc/tree-ssa-dse.c (revision 132896)
--- gcc/tree-ssa-dse.c (working copy)
*************** dse_optimize_stmt (struct dom_walk_data
*** 470,493 ****
vuse_vec_p vv;
tree stmt_lhs;
! if (LOADED_SYMS (use_stmt))
{
! tree use_base
! = get_base_address (GIMPLE_STMT_OPERAND (use_stmt, 0));
! /* If use_stmt is or might be a nop assignment, e.g. for
! struct { ... } S a, b, *p; ...
! b = a; b = b;
! or
! b = a; b = *p; where p might be &b, then USE_STMT
! acts as a use as well as definition, so store in STMT
! is not dead. */
! if (TREE_CODE (use_base) == VAR_DECL
! && bitmap_bit_p (LOADED_SYMS (use_stmt),
! DECL_UID (use_base)))
! {
! record_voperand_set (dse_gd->stores, &bd->stores, ann->uid);
! return;
! }
}
if (dump_file && (dump_flags & TDF_DETAILS))
--- 470,492 ----
vuse_vec_p vv;
tree stmt_lhs;
! /* If use_stmt is or might be a nop assignment, e.g. for
! struct { ... } S a, b, *p; ...
! b = a; b = b;
! or
! b = a; b = *p; where p might be &b,
! or
! *p = a; *p = b; where p might be &b,
! or
! *p = *u; *p = *v; where p might be v, then USE_STMT
! acts as a use as well as definition, so store in STMT
! is not dead. */
! if (LOADED_SYMS (use_stmt)
! && bitmap_intersect_p (LOADED_SYMS (use_stmt),
! STORED_SYMS (use_stmt)))
{
! record_voperand_set (dse_gd->stores, &bd->stores, ann->uid);
! return;
}
if (dump_file && (dump_flags & TDF_DETAILS))
Index: gcc/testsuite/gcc.c-torture/execute/pr35472.c
===================================================================
*** gcc/testsuite/gcc.c-torture/execute/pr35472.c (revision 0)
--- gcc/testsuite/gcc.c-torture/execute/pr35472.c (revision 0)
***************
*** 0 ****
--- 1,22 ----
+ extern void abort (void);
+ extern void *memset (void *s, int c, __SIZE_TYPE__ n);
+ struct S { int i[16]; };
+ struct S *p;
+ void __attribute__((noinline))
+ foo(struct S *a, struct S *b) { a->i[0] = -1; p = b; }
+ void test (void)
+ {
+ struct S a, b;
+ memset (&a.i[0], '\0', sizeof (a.i));
+ memset (&b.i[0], '\0', sizeof (b.i));
+ foo (&a, &b);
+ *p = a;
+ *p = b;
+ if (b.i[0] != -1)
+ abort ();
+ }
+ int main()
+ {
+ test();
+ return 0;
+ }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org