diff --git a/.cvsignore b/.cvsignore index e17de7b..16f2639 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,2 @@ -gcc-4.3.2-20081105.tar.bz2 -fastjar-0.95.tar.gz +fastjar-0.97.tar.gz +gcc-4.4.0-20090115.tar.bz2 diff --git a/fastjar-0.97-segfault.patch b/fastjar-0.97-segfault.patch new file mode 100644 index 0000000..ab62624 --- /dev/null +++ b/fastjar-0.97-segfault.patch @@ -0,0 +1,29 @@ +2009-01-14 Jakub Jelinek + + * jartool.c (make_manifest): Initialize current_time before + calling unix2dostime on it. + +--- fastjar-0.97/jartool.c.jj 2008-10-15 18:35:37.000000000 +0200 ++++ fastjar-0.97/jartool.c 2009-01-14 15:40:50.000000000 +0100 +@@ -820,6 +820,10 @@ int make_manifest(int jfd, const char *m + int mod_time; /* file modification time */ + struct zipentry *ze; + ++ current_time = time(NULL); ++ if(current_time == (time_t)-1) ++ exit_on_error("time"); ++ + mod_time = unix2dostime(¤t_time); + + /* If we are creating a new manifest, create a META-INF directory entry */ +@@ -828,10 +832,6 @@ int make_manifest(int jfd, const char *m + + memset((file_header + 12), '\0', 16); /*clear mod time, crc, size fields*/ + +- current_time = time(NULL); +- if(current_time == (time_t)-1) +- exit_on_error("time"); +- + PACK_UB2(file_header, LOC_EXTRA, 0); + PACK_UB2(file_header, LOC_COMP, 0); + PACK_UB2(file_header, LOC_FNLEN, nlen); diff --git a/gcc43.spec b/gcc.spec similarity index 72% rename from gcc43.spec rename to gcc.spec index 97a3e01..fd69467 100644 --- a/gcc43.spec +++ b/gcc.spec @@ -1,9 +1,9 @@ -%define DATE 20081105 +%define DATE 20090115 %define SVNREV 141601 -%define gcc_version 4.3.2 +%define gcc_version 4.4.0 # Note, gcc_release must be integer, if you want to add suffixes to # %{release}, append them after %{gcc_release} on Release: line. -%define gcc_release 7 +%define gcc_release 0.3 %define _unpackaged_files_terminate_build 0 %define multilib_64_archs sparc64 ppc64 s390x x86_64 %define include_gappletviewer 1 @@ -48,7 +48,7 @@ Source0: gcc-%{version}-%{DATE}.tar.bz2 Source1: libgcc_post_upgrade.c Source2: README.libgcjwebplugin.so Source3: protoize.1 -%define fastjar_ver 0.95 +%define fastjar_ver 0.97 Source4: http://download.savannah.nongnu.org/releases/fastjar/fastjar-%{fastjar_ver}.tar.gz URL: http://gcc.gnu.org BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -110,61 +110,31 @@ Requires: glibc >= 2.3.90-35 %endif Requires: libgcc >= %{version}-%{release} Requires: libgomp = %{version}-%{release} -#Obsoletes: gcc3 -#Obsoletes: egcs -%ifarch sparc -#Obsoletes: gcc-sparc32 -#Obsoletes: gcc-c++-sparc32 -%endif -%ifarch ppc -#Obsoletes: gcc-ppc32 -#Obsoletes: gcc-c++-ppc32 -%endif -#Obsoletes: gcc-chill %if !%{build_ada} Obsoletes: gcc-gnat < %{version}-%{release} Obsoletes: libgnat < %{version}-%{release} %endif -%ifarch sparc sparc64 -#Obsoletes: egcs64 -%endif -#Obsoletes: gcc34 -#Obsoletes: gcc35 -#Obsoletes: gcc4 Prereq: /sbin/install-info AutoReq: true -Patch1: gcc43-build-id.patch -Patch2: gcc43-c++-builtin-redecl.patch -Patch3: gcc43-ia64-libunwind.patch -Patch4: gcc43-java-nomulti.patch -Patch5: gcc43-ppc32-retaddr.patch -Patch6: gcc43-ppc64-ia64-GNU-stack.patch -Patch7: gcc43-pr27898.patch -Patch8: gcc43-pr32139.patch -Patch9: gcc43-pr33763.patch -Patch10: gcc43-rh330771.patch -Patch11: gcc43-rh341221.patch -Patch12: gcc43-java-debug-iface-type.patch -Patch13: gcc43-i386-libgomp.patch -Patch14: gcc43-rh251682.patch -Patch15: gcc43-sparc-config-detection.patch -Patch16: gcc43-libgomp-omp_h-multilib.patch -Patch17: gcc43-x86_64-va_start.patch -Patch18: gcc43-pr37189.patch -Patch19: gcc43-altivec-tests.patch -Patch20: gcc43-libtool-no-rpath.patch -Patch21: gcc43-pr36741-revert.patch -Patch22: gcc43-pr34037.patch -Patch23: gcc43-pr37738.patch -Patch24: gcc43-pr29609.patch -Patch25: gcc43-aes.patch -Patch26: gcc43-pr29609-2.patch -Patch27: gcc43-pr29609-3.patch -Patch28: gcc43-pr37870.patch -Patch29: gcc43-pr37858.patch -Patch30: gcc43-pr37879.patch -Patch31: gcc43-pr37924.patch +Patch0: gcc44-hack.patch +Patch1: gcc44-build-id.patch +Patch2: gcc44-c++-builtin-redecl.patch +Patch3: gcc44-ia64-libunwind.patch +Patch4: gcc44-java-nomulti.patch +Patch5: gcc44-ppc32-retaddr.patch +Patch7: gcc44-pr27898.patch +Patch8: gcc44-pr32139.patch +Patch9: gcc44-pr33763.patch +Patch10: gcc44-rh330771.patch +Patch11: gcc44-rh341221.patch +Patch12: gcc44-java-debug-iface-type.patch +Patch13: gcc44-i386-libgomp.patch +Patch15: gcc44-sparc-config-detection.patch +Patch16: gcc44-libgomp-omp_h-multilib.patch +Patch20: gcc44-libtool-no-rpath.patch + +Patch1000: fastjar-0.97-segfault.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -182,11 +152,11 @@ Patch31: gcc43-pr37924.patch %endif %description -The gcc package contains the GNU Compiler Collection version 4.3. +The gcc package contains the GNU Compiler Collection version 4.4. You'll need this package in order to compile C code. %package -n libgcc -Summary: GCC version 4.3 shared support library +Summary: GCC version 4.4 shared support library Group: System Environment/Libraries Autoreq: false @@ -200,10 +170,6 @@ Group: Development/Languages Requires: gcc = %{version}-%{release} Requires: libstdc++ = %{version}-%{release} Requires: libstdc++-devel = %{version}-%{release} -#Obsoletes: gcc3-c++ -#Obsoletes: gcc34-c++ -#Obsoletes: gcc35-c++ -#Obsoletes: gcc4-c++ Autoreq: true %description c++ @@ -214,8 +180,6 @@ including templates and exception handling. %package -n libstdc++ Summary: GNU Standard C++ Library Group: System Environment/Libraries -#Obsoletes: libstdc++3 -#Obsoletes: libstdc++34 Autoreq: true %description -n libstdc++ @@ -226,8 +190,6 @@ C++ Library. Summary: Header files and libraries for C++ development Group: Development/Libraries Requires: libstdc++ = %{version}-%{release}, %{_prefix}/%{_lib}/libstdc++.so.6 -#Obsoletes: libstdc++3-devel -#Obsoletes: libstdc++34-devel Autoreq: true %description -n libstdc++-devel @@ -240,7 +202,6 @@ Summary: Objective-C support for GCC Group: Development/Languages Requires: gcc = %{version}-%{release} Requires: libobjc = %{version}-%{release} -#Obsoletes: gcc3-objc Autoreq: true %description objc @@ -267,30 +228,26 @@ This package contains Objective-C shared library which is needed to run Objective-C dynamically linked programs. %package gfortran -Summary: Fortran 95 support +Summary: Fortran support Group: Development/Languages Requires: gcc = %{version}-%{release} Requires: libgfortran = %{version}-%{release} BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1 Prereq: /sbin/install-info -#Obsoletes: gcc3-g77 -#Obsoletes: gcc-g77 -#Obsoletes: gcc4-gfortran Autoreq: true %description gfortran -The gcc-gfortran package provides support for compiling Fortran 95 +The gcc-gfortran package provides support for compiling Fortran programs with the GNU Compiler Collection. %package -n libgfortran -Summary: Fortran 95 runtime +Summary: Fortran runtime Group: System Environment/Libraries -#Obsoletes: libf2c Autoreq: true %description -n libgfortran -This package contains Fortran 95 shared library which is needed to run -Fortran 95 dynamically linked programs. +This package contains Fortran shared library which is needed to run +Fortran dynamically linked programs. %package -n libgomp Summary: GCC OpenMP v3.0 shared support library @@ -330,10 +287,6 @@ Requires: gcc = %{version}-%{release} Requires: libgcj = %{version}-%{release} Requires: libgcj-devel = %{version}-%{release} Requires: /usr/share/java/eclipse-ecj.jar -#Obsoletes: gcc3-java -#Obsoletes: gcc34-java -#Obsoletes: gcc35-java -#Obsoletes: gcc4-java Prereq: /sbin/install-info Autoreq: true @@ -358,10 +311,6 @@ BuildRequires: alsa-lib-devel BuildRequires: libXtst-devel BuildRequires: libXt-devel %endif -#Obsoletes: gcc-libgcj -#Obsoletes: libgcj3 -#Obsoletes: libgcj34 -#Obsoletes: libgcj4 Autoreq: true %description -n libgcj @@ -371,12 +320,9 @@ programs compiled using the Java compiler from GNU Compiler Collection (gcj). %package -n libgcj-devel Summary: Libraries for Java development using GCC Group: Development/Languages -Requires: libgcj = %{version}-%{release}, %{_prefix}/%{_lib}/libgcj.so.9 +Requires: libgcj = %{version}-%{release}, %{_prefix}/%{_lib}/libgcj.so.10 Requires: zlib-devel, %{_prefix}/%{_lib}/libz.so Requires: /bin/awk -#Obsoletes: libgcj3-devel -#Obsoletes: libgcj34-devel -#Obsoletes: libgcj4-devel Autoreq: false Autoprov: false @@ -388,7 +334,6 @@ package to compile your Java programs using the GCC Java compiler (gcj). Summary: Java library sources from GCC4 preview Group: System Environment/Libraries Requires: libgcj = %{version}-%{release} -#Obsoletes: libgcj4-src Autoreq: true %description -n libgcj-src @@ -398,9 +343,6 @@ The Java(tm) runtime library sources for use in Eclipse. Summary: The C Preprocessor Group: Development/Languages Prereq: /sbin/install-info -%ifarch ia64 -#Obsoletes: gnupro -%endif Autoreq: true %description -n cpp @@ -428,8 +370,8 @@ macros. %package gnat Summary: Ada 95 support for GCC Group: Development/Languages -Requires: gcc = %{version}-%{release}, libgnat = %{version}-%{release} -#Obsoletes: gnat-devel, gcc3-gnat +Requires: gcc = %{version}-%{release} +Requires: libgnat = %{version}-%{release}, libgnat-devel = %{version}-%{release} Prereq: /sbin/install-info Autoreq: true @@ -440,21 +382,29 @@ the documents and Ada 95 compiler. %package -n libgnat Summary: GNU Ada 95 runtime shared libraries Group: System Environment/Libraries -#Obsoletes: gnat libgnat3 Autoreq: true %description -n libgnat GNAT is a GNU Ada 95 front-end to GCC. This package includes shared libraries, which are required to run programs compiled with the GNAT. +%package -n libgnat-devel +Summary: GNU Ada 95 libraries +Group: System Environment/Libraries +Autoreq: true + +%description -n libgnat-devel +GNAT is a GNU Ada 95 front-end to GCC. This package includes libraries, +which are required to compile with the GNAT. + %prep %setup -q -n gcc-%{version}-%{DATE} +%patch0 -p0 -b .hack~ %patch1 -p0 -b .build-id~ %patch2 -p0 -b .c++-builtin-redecl~ %patch3 -p0 -b .ia64-libunwind~ %patch4 -p0 -b .java-nomulti~ %patch5 -p0 -b .ppc32-retaddr~ -%patch6 -p0 -b .ppc64-ia64-GNU-stack~ %patch7 -p0 -b .pr27898~ %patch8 -p0 -b .pr32139~ %patch9 -p0 -b .pr33763~ @@ -462,32 +412,22 @@ which are required to run programs compiled with the GNAT. %patch11 -p0 -b .rh341221~ %patch12 -p0 -b .java-debug-iface-type~ %patch13 -p0 -b .i386-libgomp~ -%patch14 -p0 -b .rh251682~ %patch15 -p0 -b .sparc-config-detection~ %patch16 -p0 -b .libgomp-omp_h-multilib~ -%patch17 -p0 -b .x86_64-va_start~ -%patch18 -p0 -b .pr37189~ -%patch19 -p0 -b .altivec-tests~ %patch20 -p0 -b .libtool-no-rpath~ -%patch21 -p0 -b .pr36741-revert~ -%patch22 -p0 -b .pr34037~ -%patch23 -p0 -b .pr37738~ -%patch24 -p0 -b .pr29609~ -%patch25 -p0 -b .aes~ -%patch26 -p0 -b .pr29609-2~ -%patch27 -p0 -b .pr29609-3~ -%patch28 -p0 -b .pr37870~ -%patch29 -p0 -b .pr37858~ -%patch30 -p0 -b .pr37879~ -%patch31 -p0 -b .pr37924~ + +# This testcase doesn't compile. +rm libjava/testsuite/libjava.lang/PR35020* tar xzf %{SOURCE4} +%patch1000 -p0 -b .fastjar-0.97-segfault~ + %if %{bootstrap_java} tar xjf %{SOURCE10} %endif -sed -i -e 's/4\.3\.3/4.3.2/' gcc/BASE-VER +sed -i -e 's/4\.4\.1/4.4.0/' gcc/BASE-VER echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h @@ -502,36 +442,6 @@ perl -pi -e 's/^check: check-recursive/ifeq (\$(MULTISUBDIR),)\ncheck: check-rec ./contrib/gcc_update --touch -# To make rpmlint happy (argh), fix up names in ChangeLog entries to valid UTF-8 -LC_ALL=C sed -i \ - -e 's/D\(o\|\xf6\)nmez/D\xc3\xb6nmez/' \ - -e 's/\(Av\|\x81\xc1v\|\xc1v\|\xef\xbf\xbdv\?\|\x81\xc3\x81v\|\xc3v\)ila/\xc3\x81vila/' \ - -e 's/Esp\(in\|\x81\xedn\|\xedn\|\xef\xbf\xbdn\?\|\xef\xbf\xbd\xadn\|\x81\xc3\xadn\|\xc3\xef\xbf\xbd\xadn\)dola/Esp\xc3\xadndola/' \ - -e 's/Schl\(u\|\xef\xbf\xbd\|\xfcu\?\|\x81\xfc\|\x81\xc3\xbc\|\xc3\xaf\xc2\xbf\xc2\xbd\|\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xc2\xbc\)ter/Schl\xc3\xbcter/' \ - -e 's/Humi\(e\|\xe8\)res/Humi\xc3\xa8res/' \ - -e 's/L\(ow\|\xc3\xaf\xc2\xbf\xc2\xbd\|oew\|\xf6w\)is/L\xc3\xb6wis/' \ - -e 's/G\xfctlein/G\xc3\xbctlein/' \ - -e 's/G\xe1[b]or/G\xc3\xa1bor/' \ - -e 's/L\xf3ki/L\xc3\xb3ki/' \ - -e 's/Fautr\xc3 /Fautr\xc3\xa9 /' \ - -e 's/S\xe9[b]astian/S\xc3\xa9bastian/' \ - -e 's/Th\xef\xbf\xbd[d]ore/Th\xc3\xa9odore/' \ - -e 's/Cors\xc3\xc2\xa9pius/Cors\xc3\xa9pius/' \ - -e 's/K\xfchl/K\xc3\xbchl/' \ - -e 's/R\xf6nnerup/R\xc3\xb6nnerup/' \ - -e 's/L\xf8vset/L\xc3\xb8vset/' \ - -e 's/Ph\x81\xfb\x81\xf4ng-Th\x81\xe5o/Ph\xc3\xbb\xc3\xb4ng-Th\xc3\xa5o/' \ - -e 's/V\x81\xf5/V\xc3\xb5/' \ - -e 's/J\xf6nsson/J\xc3\xb6nsson/' \ - -e 's/V\xef\xbf\xbdis\xef\xbf\xbdnen/V\xc3\xa4is\xc3\xa4nen/' \ - -e 's/J\xef\xbf\xbdrg/J\xc3\xb6rg/' \ - -e 's/M\xef\xbf\xbdsli/M\xc3\xb6sli/' \ - -e 's/R\xe4ty/R\xc3\xa4ty/' \ - -e 's/2003\xc2\xad-/2003-/' \ - -e 's/\xc2\xa0/ /g' \ - -e 's/ \xa0/ /g' \ - -e 's/\xa0 //' \ - `find . -name \*ChangeLog\*` LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi %ifarch ppc @@ -573,21 +483,20 @@ cd obj-%{gcc_target_platform} # If we don't have gjavah in $PATH, try to build it with the old gij mkdir java_hacks cd java_hacks -if [ ! -x /usr/bin/gjavah ]; then - cp -a ../../libjava/classpath/tools/external external - mkdir -p gnu/classpath/tools - cp -a ../../libjava/classpath/tools/gnu/classpath/tools/{common,javah,getopt} gnu/classpath/tools/ - cp -a ../../libjava/classpath/resource/gnu/classpath/tools/common/Messages.properties gnu/classpath/tools/common - cd external/asm; for i in `find . -name \*.java`; do gcj --encoding ISO-8859-1 -C $i -I.; done; cd ../.. - for i in `find gnu -name \*.java`; do gcj -C $i -I. -Iexternal/asm/; done - gcj -findirect-dispatch -O2 -fmain=gnu.classpath.tools.javah.Main -I. -Iexternal/asm/ `find . -name \*.class` -o gjavah.real - cat > gjavah < gjavah < ecj1 <&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}' echo ====================TESTING END===================== @@ -706,9 +607,6 @@ mkdir testlogs-%{_target_platform}-%{version}-%{release} for i in `find . -name \*.log | grep -F testsuite/ | grep -v 'config.log\|acats\|ada'`; do ln $i testlogs-%{_target_platform}-%{version}-%{release}/ || : done -for i in `find . -name \*.log | grep -F testsuite.ssp/ | grep -v 'config.log\|acats\|ada'`; do - ln $i testlogs-%{_target_platform}-%{version}-%{release}/ssp-`basename $i` || : -done tar cf - testlogs-%{_target_platform}-%{version}-%{release} | bzip2 -9c \ | uuencode testlogs-%{_target_platform}.tar.bz2 || : rm -rf testlogs-%{_target_platform}-%{version}-%{release} @@ -877,7 +775,8 @@ find $RPM_BUILD_ROOT -name \*.la | xargs rm -f # and saving 35MB is not bad. find $RPM_BUILD_ROOT -name libgcj.a -o -name libgtkpeer.a \ -o -name libgjsmalsa.a -o -name libgcj-tools.a -o -name libjvm.a \ - -o -name libgij.a -o -name libgcj_bc.a | xargs rm -f + -o -name libgij.a -o -name libgcj_bc.a -o -name libjavamath.a \ + | xargs rm -f mv $RPM_BUILD_ROOT%{_prefix}/lib/libgcj.spec $FULLPATH/ sed -i -e 's/lib: /&%%{static:%%eJava programs cannot be linked statically}/' \ @@ -932,17 +831,9 @@ ln -sf ../../../libgomp.so.1.* libgomp.so ln -sf ../../../libmudflap.so.0.* libmudflap.so ln -sf ../../../libmudflapth.so.0.* libmudflapth.so %if %{build_java} -ln -sf ../../../libgcj.so.9.* libgcj.so -ln -sf ../../../libgcj-tools.so.9.* libgcj-tools.so -ln -sf ../../../libgij.so.9.* libgij.so -%endif -%if %{build_ada} -cd adalib -ln -sf ../../../../libgnarl-*.so libgnarl.so -ln -sf ../../../../libgnarl-*.so libgnarl-4.3.so -ln -sf ../../../../libgnat-*.so libgnat.so -ln -sf ../../../../libgnat-*.so libgnat-4.3.so -cd .. +ln -sf ../../../libgcj.so.10.* libgcj.so +ln -sf ../../../libgcj-tools.so.10.* libgcj-tools.so +ln -sf ../../../libgij.so.10.* libgij.so %endif else ln -sf ../../../../%{_lib}/libobjc.so.2 libobjc.so @@ -952,17 +843,9 @@ ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so ln -sf ../../../../%{_lib}/libmudflap.so.0.* libmudflap.so ln -sf ../../../../%{_lib}/libmudflapth.so.0.* libmudflapth.so %if %{build_java} -ln -sf ../../../../%{_lib}/libgcj.so.9.* libgcj.so -ln -sf ../../../../%{_lib}/libgcj-tools.so.9.* libgcj-tools.so -ln -sf ../../../../%{_lib}/libgij.so.9.* libgij.so -%endif -%if %{build_ada} -cd adalib -ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so -ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-4.3.so -ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so -ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-4.3.so -cd .. +ln -sf ../../../../%{_lib}/libgcj.so.10.* libgcj.so +ln -sf ../../../../%{_lib}/libgcj-tools.so.10.* libgcj-tools.so +ln -sf ../../../../%{_lib}/libgij.so.10.* libgij.so %endif fi %if %{build_java} @@ -975,6 +858,45 @@ mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.*a . mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.*a . mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.*a $FULLLPATH/ +%if %{build_ada} +%ifarch sparcv9 ppc +rm -rf $FULLPATH/64/ada{include,lib} +%endif +%ifarch %{multilib_64_archs} +rm -rf $FULLPATH/32/ada{include,lib} +%endif +if [ "$FULLPATH" != "$FULLLPATH" ]; then +mv -f $FULLPATH/ada{include,lib} $FULLLPATH/ +pushd $FULLLPATH/adalib +if [ "%{_lib}" = "lib" ]; then +ln -sf ../../../../../libgnarl-*.so libgnarl.so +ln -sf ../../../../../libgnarl-*.so libgnarl-4.4.so +ln -sf ../../../../../libgnat-*.so libgnat.so +ln -sf ../../../../../libgnat-*.so libgnat-4.4.so +else +ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl.so +ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-4.4.so +ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat.so +ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-4.4.so +fi +popd +else +pushd $FULLPATH/adalib +if [ "%{_lib}" = "lib" ]; then +ln -sf ../../../../libgnarl-*.so libgnarl.so +ln -sf ../../../../libgnarl-*.so libgnarl-4.4.so +ln -sf ../../../../libgnat-*.so libgnat.so +ln -sf ../../../../libgnat-*.so libgnat-4.4.so +else +ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so +ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-4.4.so +ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so +ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-4.4.so +fi +popd +fi +%endif + %ifarch sparcv9 ppc ln -sf ../../../../../lib64/libobjc.so.2 64/libobjc.so ln -sf ../`echo ../../../../lib/libstdc++.so.6.* | sed s~/lib/~/lib64/~` 64/libstdc++.so @@ -986,9 +908,9 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libmudflapth.so.0.* | sed 's echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libmudflap.so.0.* | sed 's,^.*libm,libm,'`' )' > 64/libmudflap.so echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libmudflapth.so.0.* | sed 's,^.*libm,libm,'`' )' > 64/libmudflapth.so %if %{build_java} -ln -sf ../`echo ../../../../lib/libgcj.so.9.* | sed s~/lib/~/lib64/~` 64/libgcj.so -ln -sf ../`echo ../../../../lib/libgcj-tools.so.9.* | sed s~/lib/~/lib64/~` 64/libgcj-tools.so -ln -sf ../`echo ../../../../lib/libgij.so.9.* | sed s~/lib/~/lib64/~` 64/libgij.so +ln -sf ../`echo ../../../../lib/libgcj.so.10.* | sed s~/lib/~/lib64/~` 64/libgcj.so +ln -sf ../`echo ../../../../lib/libgcj-tools.so.10.* | sed s~/lib/~/lib64/~` 64/libgcj-tools.so +ln -sf ../`echo ../../../../lib/libgij.so.10.* | sed s~/lib/~/lib64/~` 64/libgij.so ln -sf lib32/libgcj_bc.so libgcj_bc.so ln -sf ../lib64/libgcj_bc.so 64/libgcj_bc.so %endif @@ -1002,6 +924,12 @@ ln -sf lib32/libmudflap.a libmudflap.a ln -sf ../lib64/libmudflap.a 64/libmudflap.a ln -sf lib32/libmudflapth.a libmudflapth.a ln -sf ../lib64/libmudflapth.a 64/libmudflapth.a +%if %{build_ada} +ln -sf lib32/adainclude adainclude +ln -sf ../lib64/adainclude 64/adainclude +ln -sf lib32/adalib adalib +ln -sf ../lib64/adalib 64/adalib +%endif %endif %ifarch %{multilib_64_archs} mkdir -p 32 @@ -1015,9 +943,9 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libmudflapth.so.0.* | se echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libmudflap.so.0.* | sed 's,^.*libm,libm,'`' )' > 32/libmudflap.so echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libmudflapth.so.0.* | sed 's,^.*libm,libm,'`' )' > 32/libmudflapth.so %if %{build_java} -ln -sf ../`echo ../../../../lib64/libgcj.so.9.* | sed s~/../lib64/~/~` 32/libgcj.so -ln -sf ../`echo ../../../../lib64/libgcj-tools.so.9.* | sed s~/../lib64/~/~` 32/libgcj-tools.so -ln -sf ../`echo ../../../../lib64/libgij.so.9.* | sed s~/../lib64/~/~` 32/libgij.so +ln -sf ../`echo ../../../../lib64/libgcj.so.10.* | sed s~/../lib64/~/~` 32/libgcj.so +ln -sf ../`echo ../../../../lib64/libgcj-tools.so.10.* | sed s~/../lib64/~/~` 32/libgcj-tools.so +ln -sf ../`echo ../../../../lib64/libgij.so.10.* | sed s~/../lib64/~/~` 32/libgij.so %endif mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libsupc++.*a 32/ mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgfortran.*a 32/ @@ -1035,6 +963,12 @@ ln -sf lib64/libmudflapth.a libmudflapth.a ln -sf ../lib32/libgcj_bc.so 32/libgcj_bc.so ln -sf lib64/libgcj_bc.so libgcj_bc.so %endif +%if %{build_ada} +ln -sf ../lib32/adainclude 32/adainclude +ln -sf lib64/adainclude adainclude +ln -sf ../lib32/adalib 32/adalib +ln -sf lib64/adalib adalib +%endif %else %ifarch %{multilib_64_archs} ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libstdc++.a 32/libstdc++.a @@ -1043,6 +977,10 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libm %if %{build_java} ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgcj_bc.so 32/libgcj_bc.so %endif +%if %{build_ada} +ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/adainclude 32/adainclude +ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/adalib 32/adalib +%endif %endif %endif @@ -1287,6 +1225,7 @@ fi %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/SYSCALLS.c.X %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stddef.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdarg.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdfix.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/varargs.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/float.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/limits.h @@ -1306,10 +1245,14 @@ fi %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/nmmintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/bmmintrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/wmmintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/immintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avxintrin.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/x86intrin.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mmintrin-common.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm_malloc.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm3dnow.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cpuid.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cross-stdarg.h %endif %ifarch ia64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ia64intrin.h @@ -1322,6 +1265,7 @@ fi %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ppu_intrinsics.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/si2vmx.h %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/spu2vmx.h +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/vec_types.h %endif %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/collect2 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/crt*.o @@ -1620,6 +1564,7 @@ fi %{_prefix}/%{_lib}/gcj-%{version}/libgcjwebplugin.so %endif %{_prefix}/%{_lib}/gcj-%{version}/libjvm.so +%{_prefix}/%{_lib}/gcj-%{version}/libjavamath.so %dir %{_prefix}/share/java %{_prefix}/share/java/[^sl]* %{_prefix}/share/java/libgcj-%{version}.jar @@ -1684,8 +1629,20 @@ fi %dir %{_prefix}/libexec/gcc %dir %{_prefix}/libexec/gcc/%{gcc_target_platform} %dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version} +%ifarch sparcv9 ppc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/adainclude +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/adalib +%endif +%ifarch %{multilib_64_archs} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/adainclude +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/adalib +%endif +%ifarch sparcv9 sparc64 ppc ppc64 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adainclude %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib +%endif %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/gnat1 %doc rpm.doc/changelogs/gcc/ada/ChangeLog* @@ -1693,6 +1650,26 @@ fi %defattr(-,root,root) %{_prefix}/%{_lib}/libgnat-*.so %{_prefix}/%{_lib}/libgnarl-*.so + +%files -n libgnat-devel +%defattr(-,root,root) +%dir %{_prefix}/lib/gcc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform} +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version} +%ifarch sparcv9 ppc +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/adainclude +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/adalib +%endif +%ifarch sparc64 ppc64 +%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/adainclude +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/adalib +%endif +%ifnarch sparcv9 sparc64 ppc ppc64 +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adainclude +%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib +%endif %endif %files -n libgomp @@ -1732,327 +1709,5 @@ fi %doc rpm.doc/changelogs/libmudflap/ChangeLog* %changelog -* Wed Nov 5 2008 Jakub Jelinek 4.3.2-7 -- update from gcc-4_3-branch - - PRs c/35437, fortran/35680, fortran/37723, fortran/37749, fortran/37787, - fortran/37794, fortran/37903, libfortran/37707, libfortran/37863, - middle-end/37882, other/37897, rtl-optimization/37769, target/37909, - target/37939, tree-optimization/37102 -- fix ICE in extract_bit_field_1 (PR middle-end/37870) -- combiner fix for shifts (PR c/37924) -- fix -fdump-ipa-all -dv (PR middle-end/37858) -- fix ICE with wrong use of noreturn attribute (PR tree-optimization/37879) -- fix up --with-java_bootstrap build - -* Thu Oct 9 2008 Jakub Jelinek 4.3.2-6 -- fix fallouts from the -g -O0 debugging patch (#466169, #466198) - -* Wed Oct 8 2008 Jakub Jelinek 4.3.2-5 -- update from gcc-4_3-branch - - PRs c++/37555, c/35712, c/37645, fortran/35770, fortran/35945, - fortran/36374, fortran/36454, fortran/36700, fortran/37274, - fortran/37504, fortran/37580, fortran/37583, fortran/37626, - fortran/37706, middle-end/36575, middle-end/37236, middle-end/37731, - rtl-optimization/37544, target/35620, target/35713, target/37603, - tree-opt/35737, tree-optimization/36343, tree-optimization/37539 -- ensure one can put breakpoints on break, continue and goto statements - with -g -O0 (#465824, PRs debug/29609, debug/36690, debug/37616) -- emit one DW_TAG_common_block for each common block in each scope, not - one for each common block in one CU (#465974, PR debug/37738) -- Intel -maes and -mpclmul support - -* Wed Sep 17 2008 Jakub Jelinek 4.3.2-4 -- update from gcc-4_3-branch - - PRs c++/37389, fortran/35837, fortran/36214, fortran/37099, fortran/37199, - rtl-optimization/37408, target/37466, tree-optimization/36630 -- revert PR c++/36741 fix -- fix VLA debuginfo at -O0 (PR debug/34037) - -* Sat Sep 6 2008 Jakub Jelinek 4.3.2-3 -- don't run tests that require Altivec hw on non-Altivec powerpcs -- make sure none of libgcj binaries/libraries contains /usr/%{lib} in - RPATH -- fix up BuildRoot - -* Fri Sep 5 2008 Jakub Jelinek 4.3.2-2 -- update from gcc-4_3-branch - - PRs c++/37348, c/37261, fortran/36371, fortran/37193, middle-end/36449, - target/36332, target/37168 -- make ChangeLog files and gcc.info valid UTF-8, remove gnative2ascii from - gcc-gnat, comment out most of the Obsoletes (#225778) -- on x86_64 decrease frame size in varargs functions that don't need saving - gpr or fpr registers -- fix ICE on implicitly determined firstprivate where copy ctor or dtor - needs synthetization (PR c++/37189) -- document how to recrease the tarball - -* Fri Aug 29 2008 Jakub Jelinek 4.3.2-1 -- update from gcc-4_3-branch - - 4.3.2 release - - PRs c++/36741, middle-end/36548, middle-end/36817, middle-end/37125, - target/37184, target/37191, target/37197 -- backport further Fortran debuginfo improvements (#460378, #459375) -- revert removal of adjacent bitfield comparison - optimization (PR middle-end/37248) -- on ppc/ppc64 add paired.h, ppu_instrinsics.h, si2vmx.h and spu2vmx.h - headers (#460497) - -* Mon Aug 25 2008 Jakub Jelinek 4.3.1-8 -- update from gcc-4_3-branch - - PRs debug/37156, libgcj/8995, libstdc++/37100, target/37101 -- backport Fortran debuginfo improvements (PRs debug/35896, fortran/35154, - fortran/35724, fortran/35892, fortran/29635, fortran/23057 - fortran/24790, #457792, #457793, #459374, #459376, #459378) - -* Thu Aug 14 2008 Jakub Jelinek 4.3.1-7 -- update from gcc-4_3-branch - - PRs bootstrap/35752, c++/36688, c++/36999, c++/37016, c/35746, - fortran/36582, libgcj/31890, middle-end/35432, middle-end/36691, - middle-end/37014, middle-end/37026, middle-end/37042, - rtl-optimization/35542, rtl-optimization/36998, target/35659, - target/36613, tree-optimization/36991 -- fix folding of widened comparisons (PR middle-end/37103) - -* Fri Aug 1 2008 Jakub Jelinek 4.3.1-6 -- update from gcc-4_3-branch - - PRs c++/36405, c++/36767, c++/36852, debug/36278, preprocessor/36649, - rtl-optimization/36929 - - fix the last -Os -fasynchronous-unwind-tables known issue (#447912, - PR rtl-optimization/36419) -- don't loop > 230000 times in make_temp_file if /tmp is full (#203231) - -* Mon Jul 28 2008 Jakub Jelinek 4.3.1-5 -- update from gcc-4_3-branch - - PRs c++/36407, fortran/36132, fortran/36366, fortran/36824, fortran/36852, - libfortran/36852, libstdc++/36552, libstdc++/36729, libstdc++/36832, - middle-end/36369, middle-end/36811, middle-end/36877, - rtl-optimization/35281, rtl-optimization/36419, - rtl-optimization/36753, target/35492, target/35802, target/36780, - target/36782, target/36784, target/36827, tree-optimization/36830 -- OpenMP 3.0 bugfixes from trunk - - fix occassional hangs of libgomp.c/ordered-3.c - - PR middle-end/36790 - -* Tue Jul 8 2008 Jakub Jelinek 4.3.1-4 -- update from gcc-4_3-branch - - PRs c++/34963, c++/36662, fortran/36546, fortran/36657, fortran/36676, - libstdc++/36612, libstdc++/36616, rtl-optimization/34744, - target/34780, target/34856, target/36510, target/36634, - target/36684, target/36698, target/36736, testsuite/36620, - tree-optimization/36648 - - fix -frepo (#448390, PR c++/36364) -- improve OpenMP debug info (PRs debug/36617, middle-end/36726) - -* Tue Jun 24 2008 Jakub Jelinek 4.3.1-3 -- update from gcc-4_3-branch - - PRs c++/35317, c++/35320, documentation/30739, fortran/34908, - fortran/36276, fortran/36538, java/36247, middle-end/36584, - rtl-optimization/35604, target/36336, target/36424, - tree-optimization/36493, tree-optimization/36498, - tree-optimization/36504, tree-optimization/36519 - - don't mark hard registers as reg pointers (#451068, target/36533) - - allow more compute_antic iterations (#450889, tree-optimization/36508) -- fix #pragma omp task copyfn registration with cgraph (c++/36523) - -* Thu Jun 12 2008 Jakub Jelinek 4.3.1-2 -- update from gcc-4_3-branch - - PRs c++/36408, middle-end/35336, middle-end/36506, testsuite/36443, - tree-optimization/36474 -- OpenMP 3.0 bugfixes from trunk - - fix a thinko in task dispatching on barriers - - PRs libgomp/36469, libgomp/36471 -- fix nested inline functions in -std=gnu99 mode (#450967, PR c/36507) - -* Mon Jun 9 2008 Jakub Jelinek 4.3.1-1 -- update from gcc-4_3-branch - - 4.3.1 release - - PRs ada/24880, ada/26635, bootstrap/35169, bootstrap/36452, c++/35578, - c++/35986, c++/36023, c++/36237, c++/36308, fortran/35184, - fortran/35743, fortran/35745, fortran/35756, fortran/35759, - fortran/35780, fortran/35864, fortran/35997, fortran/36176, - fortran/36233, libfortran/35990, libfortran/35993, libfortran/35995, - libgcj/36252, libstdc++/35922, middle-end/34973, middle-end/36013, - middle-end/36077, middle-end/36093, middle-end/36106, - middle-end/36137, middle-end/36154, middle-end/36172, - middle-end/36194, middle-end/36227, middle-end/36244, - middle-end/36300, middle-end/PR28690, rtl-optimization/36111, - rtl-optimization/36419, target/27386, target/30243, target/34932, - target/35661, target/35921, target/36079, target/36090, target/36095, - target/36182, target/36224, target/36321, target/36362, - tree-optimization/34244, tree-optimization/34330, - tree-optimization/34976, tree-optimization/35204, - tree-optimization/36098, tree-optimization/36119, - tree-optimization/36129, tree-optimization/36181, - tree-optimization/36187, tree-optimization/36245, - tree-optimization/36262, tree-optimization/36291, - tree-optimization/36293, tree-optimization/36339 -- OpenMP 3.0 support - -* Tue May 20 2008 Tom "spot" Callaway 4.3.0-11 -- fix missing file with sparcv9 - -* Sun May 18 2008 Tom "spot" Callaway 4.3.0-10 -- make sparcv9 the multilib_32_arch for sparc64 - -* Sun May 18 2008 Tom "spot" Callaway 4.3.0-9 -- sparcv9 support and detection - -* Mon Apr 28 2008 Jakub Jelinek 4.3.0-8 -- update from gcc-4_3-branch - - decrease compile time stack usage during GC (#443739, PR debug/36060) - - fix -mregparm=X with K&R function decls (#443583, PR target/36015) - - fix tail called sqrt and math builtins (#435297, - PR rtl-optimization/36017) - - PRs c++/33486, c++/35316, c++/35325, c++/35678, c++/35747, c++/35758, - c++/35773, c/35436, c/35744, fortran/35932, fortran/35944, - fortran/35946, fortran/35947, fortran/35959, fortran/35994, - libgcj/35950, libstdc++/35597, libstdc++/35887, libstdc++/35954, - middle-end/36021, target/35944, testsuite/36056, - tree-optimization/35982, tree-optimization/36008, - tree-optimization/36034 -- fix C++ const references to bitfields (PR c++/35909) -- fix C++ ++var = val error recovery (PR c++/35987) -- fix C++ reference binding to function through using-decl (PR c++/35650) - -* Wed Apr 16 2008 Jakub Jelinek 4.3.0-7 -- update from gcc-4_3-branch - - PRs c++/35708, c++/35734, libstdc++/35816, middle-end/35519, - rtl-optimization/34916, target/35364, target/35695, - tree-optimization/35821, tree-optimization/35833 - - fix libgfortran buffer overflows -- fix restoring of Altivec registers when alloca is used (PR target/35907) -- misc fixes (PRs tree-optimization/35899, target/35662, c/35739) - -* Fri Apr 4 2008 Jakub Jelinek 4.3.0-6 -- update from gcc-4_3-branch - - PRs ada/33857, c++/35245, c++/35741, c/35738, fortran/35698, - fortran/35699, fortran/35702, fortran/35724, fortran/35740, - fortran/35786, libfortran/35699, libstdc++/35725, middle-end/35429, - middle-end/35705, middle-end/35818, target/31110, target/31232, - target/35657, tree-opt/35431 -- fix OpenMP ICE on invalid extern/static VLA (PR c/35751) -- fix PCH failure if a precompiled header is included more than - once (#251682, PR pch/13675) - -* Thu Mar 27 2008 Jakub Jelinek 4.3.0-5 -- fix libgomp when sync builtins aren't available -- on i386 build libgomp and __cxa_guard_* as i486+, - NPTL doesn't support pre-i486 anyway and atomic builtins give - significant speedups - -* Wed Mar 26 2008 Jakub Jelinek 4.3.0-4 -- update from gcc-4_3-branch - - PRs c++/35332, c++/35548, debug/31510, fortran/33295, fortran/34813, - libfortran/35617, libfortran/35627, libgomp/35625, libstdc++/35256, - libstdc++/35637, middle-end/35593, middle-end/35609, - middle-end/35611, middle-end/35616, target/35504, testsuite/34168, - testsuite/35621 -- backport libgomp speedups from gomp-3_0-branch (#437268) -- fix diagnostics with compound literals (PR c/35440) -- fix C++ handling of late template attributes (PR c++/35546) -- Prereq install-info in libgomp (#437523) - -* Fri Mar 14 2008 Jakub Jelinek 4.3.0-3 -- update from gcc-4_3-branch - - PRs c++/33887, c++/35328, c++/35337, c++/35469, c/35438, c/35439, - fortran/35474, libstdc++/35541, libstdc++/35566, middle-end/35099, - middle-end/35185, middle-end/35456, middle-end/35526, - middle-end/35549, target/34000, target/35190, target/35225, - target/35350, target/35496, target/35540, target/35553, - tree-optimization/34989, tree-optimization/35472 - - fix eclipse build (#434356) -- libstdc++ doc fix (#436687) - -* Fri Mar 7 2008 Jakub Jelinek 4.3.0-2 -- fix ppc/ppc64 8/16 bit sync builtins (PR target/35498) - -* Fri Mar 7 2008 Jakub Jelinek 4.3.0-1 -- gcc 4.3.0 release - - PRs c++/35244, c++/35315, c++/35323, c++/35333, c++/35338, driver/35420, - libfortran/35355, libstdc++/35480, target/33963, target/35189, - target/35222, target/35401, target/35453 - -* Fri Feb 29 2008 Jakub Jelinek 4.3.0-0.13 -- update from gcc-4_3-branch - - PRs middle-end/19984, target/25477 - - remove , fix ppc/ppc64 - std::{,tr1::}hash::operator() ABI - -* Thu Feb 28 2008 Jakub Jelinek 4.3.0-0.12 -- update from gcc-4_3-branch - - PRs c++/34715, c++/35368, libfortran/24685, middle-end/34971, - middle-end/35390, target/25477 - -* Fri Feb 22 2008 Jakub Jelinek 4.3.0-0.11 -- update from gcc-4_3-branch - - 4.3.0 rc1 - - PRs bootstrap/35218, bootstrap/35273, c++/34950, c++/35282, - middle-end/35265, rtl-optimization/35232, target/34526, - target/35071, target/35239, target/35264 - -* Mon Feb 18 2008 Jakub Jelinek 4.3.0-0.10 -- update to trunk - - PRs c++/11159, c++/28743, c++/34050, c++/35023, c++/35024, c++/35026, - c++/5645, c/28368, documentation/15479, fortran/34952, - fortran/35150, libgcj/33085, libstdc++/34797, libstdc++/35209, - libstdc++/35221, middle-end/34621, middle-end/35149, middle-end/35196, - middle-end/35227, preprocessor/35061, target/34930, target/35088, - testsuite/35119, testsuite/35208, tree-optimization/35164, - tree-optimization/35231 -- some OpenMP fixes (PRs c++/34964, c++/35028, c++/35078) -- fix cp-tools.info* @direntry (#433222) - -* Thu Feb 14 2008 Jakub Jelinek 4.3.0-0.9 -- update to trunk - - PRs middle-end/29673, ada/35143, c++/34774, c++/34824, c++/34962, c++/34937, - c++/34939, debug/35065, other/35148, target/34393 -- fix ia64 build (#432068) - -* Tue Feb 12 2008 Jakub Jelinek 4.3.0-0.8 -- update to trunk - - PRs bootstrap/33781, bootstrap/34922, bootstrap/35051, bootstrap/35115, - c++/29048, c++/33553, c++/33916, c++/33964, c++/34052, c++/34094, - c++/34314, c++/34776, c++/34862, c++/34891, c++/34935, c++/34936, - c++/35049, c++/35056, c++/35074, c++/35077, c++/35096, c++/35097, - c++/35113, c++/35116, c/29326, c/34993, documentation/30330, - fortran/32315, fortran/32760, fortran/34910, fortran/34945, - fortran/35037, fortran/35093, java/35035, libffi/34612, - libfortran/35001, libfortran/35063, libgcj/30071, libstdc++/16251, - middle-end/33631, middle-end/34627, middle-end/35043, - middle-end/35136, middle-end/35163, middle_end/34150, objc++/34193, - other/29972, other/31405, other/32754, other/35042, other/35070, - other/35107, rtl-opt/33410, rtl-optimization/34773, - rtl-optimization/34995, rtl-optimization/34998, target/23322, - target/34900, target/34982, target/35045, target/35083, - target/35084, testsuite/33946, testsuite/35047, - tree-optimization/33992, tree-optimization/35085, tree-optimization/35171 - - inline asm optimization fix (#432146, PR inline-asm/35160) - - SRA fix (#432090, PR c++/35144) -- fix #pragma omp parallel body calling nested functions which store - into shared parent variables (PR middle-end/35130) -- ./-> after dependent expr parsing fix (PR c++/35138) - -* Wed Jan 30 2008 Jakub Jelinek 4.3.0-0.7 -- update from trunk - - fix ISO C99 6.7.4p3 diagnostics (#427634, PR c/35017) - -* Fri Jan 25 2008 Jakub Jelinek 4.3.0-0.6 -- update from the trunk - -* Thu Jan 10 2008 Jakub Jelinek 4.3.0-0.5 -- update from the trunk -- don't require on ppc/ppc64 libmudflap in gcc subpackage - -* Thu Dec 20 2007 Jakub Jelinek 4.3.0-0.4 -- update from the trunk -- adjustments to build against xulrunner-devel - -* Fri Dec 14 2007 Jakub Jelinek 4.3.0-0.3 -- build fastjar, gjar is uncomparably worse -- fix profiledbootstrap and use it - -* Wed Dec 12 2007 Jakub Jelinek 4.3.0-0.2 -- update from the trunk - -* Sun Dec 9 2007 Jakub Jelinek 4.3.0-0.1 -- initial 4.3 package, using newly created redhat/gcc-4_3-branch +* Fri Jan 16 2009 Jakub Jelinek 4.4.0-0.3 +- initial 4.4 package, using newly created redhat/gcc-4_4-branch diff --git a/gcc43-aes.patch b/gcc43-aes.patch deleted file mode 100644 index 9a45d45..0000000 --- a/gcc43-aes.patch +++ /dev/null @@ -1,1351 +0,0 @@ -2008-04-04 H.J. Lu - - * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64. - - * config/i386/cpuid.h (bit_AES): New. - (bit_PCLMUL): Likewise. - - * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL. - (override_options): Handle PTA_AES and PTA_PCLMUL. Enable - SSE2 if AES or PCLMUL is enabled. - (ix86_builtins): Add IX86_BUILTIN_AESENC128, - IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128, - IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128, - IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128. - (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128. - (bdesc_2arg): Add IX86_BUILTIN_AESENC128, - IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128, - IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128. - (bdesc_1arg): Add IX86_BUILTIN_AESIMC128. - (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128, - __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128, - __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128, - __builtin_ia32_aeskeygenassist128 and - __builtin_ia32_pclmulqdq128. - * config/i386/i386.c (ix86_expand_binop_imm_builtin): New. - (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and - IX86_BUILTIN_PSRLDQI128. Handle IX86_BUILTIN_AESKEYGENASSIST128. - - * config/i386/i386.h (TARGET_AES): New. - (TARGET_PCLMUL): Likewise. - (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL. - - * config/i386/i386.md (UNSPEC_AESENC): New. - (UNSPEC_AESENCLAST): Likewise. - (UNSPEC_AESDEC): Likewise. - (UNSPEC_AESDECLAST): Likewise. - (UNSPEC_AESIMC): Likewise. - (UNSPEC_AESKEYGENASSIST): Likewise. - (UNSPEC_PCLMULQDQ): Likewise. - - * config/i386/i386.opt (maes): New. - (mpclmul): Likewise. - - * config/i386/sse.md (aesenc): New pattern. - (aesenclast): Likewise. - (aesdec): Likewise. - (aesdeclast): Likewise. - (aesimc): Likewise. - (aeskeygenassist): Likewise. - (pclmulqdq): Likewise. - - * config/i386/wmmintrin.h: New. - - * doc/extend.texi: Document AES and PCLMUL built-in function. - - * doc/invoke.texi: Document -maes and -mpclmul. - - * g++.dg/other/i386-2.C: Include . - * g++.dg/other/i386-3.C: Likewise. - * gcc.target/i386/sse-13.c: Likewise. - * gcc.target/i386/sse-14.c: Likewise. - - * gcc.target/i386/aes-check.h: New. - * gcc.target/i386/aesdec.c: Likewise. - * gcc.target/i386/aesdeclast.c: Likewise. - * gcc.target/i386/aesenc.c: Likewise. - * gcc.target/i386/aesenclast.c: Likewise. - * gcc.target/i386/aesimc.c: Likewise. - * gcc.target/i386/aeskeygenassist.c: Likewise. - * gcc.target/i386/pclmulqdq.c: Likewise. - * gcc.target/i386/pclmul-check.h: Likewise. - - * gcc.target/i386/i386.exp (check_effective_target_aes): New. - (check_effective_target_pclmul): Likewise. - ---- gcc/config.gcc (revision 133901) -+++ gcc/config.gcc (revision 133902) -@@ -309,13 +309,15 @@ i[34567]86-*-*) - cpu_type=i386 - extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h - pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h -- nmmintrin.h bmmintrin.h mmintrin-common.h" -+ nmmintrin.h bmmintrin.h mmintrin-common.h -+ wmmintrin.h" - ;; - x86_64-*-*) - cpu_type=i386 - extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h - pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h -- nmmintrin.h bmmintrin.h mmintrin-common.h" -+ nmmintrin.h bmmintrin.h mmintrin-common.h -+ wmmintrin.h" - need_64bit_hwint=yes - ;; - ia64-*-*) ---- gcc/config/i386/i386.h (revision 133901) -+++ gcc/config/i386/i386.h (revision 133902) -@@ -395,6 +395,8 @@ extern int x86_prefetch_sse; - #define TARGET_SAHF x86_sahf - #define TARGET_RECIP x86_recip - #define TARGET_FUSED_MADD x86_fused_muladd -+#define TARGET_AES (TARGET_SSE2 && x86_aes) -+#define TARGET_PCLMUL (TARGET_SSE2 && x86_pclmul) - - #define ASSEMBLER_DIALECT (ix86_asm_dialect) - -@@ -683,6 +685,10 @@ extern const char *host_detect_local_cpu - builtin_define ("__SSE4_1__"); \ - if (TARGET_SSE4_2) \ - builtin_define ("__SSE4_2__"); \ -+ if (TARGET_AES) \ -+ builtin_define ("__AES__"); \ -+ if (TARGET_PCLMUL) \ -+ builtin_define ("__PCLMUL__"); \ - if (TARGET_SSE4A) \ - builtin_define ("__SSE4A__"); \ - if (TARGET_SSE5) \ ---- gcc/config/i386/i386.md (revision 133901) -+++ gcc/config/i386/i386.md (revision 133902) -@@ -186,6 +186,17 @@ (define_constants - (UNSPEC_FRCZ 156) - (UNSPEC_CVTPH2PS 157) - (UNSPEC_CVTPS2PH 158) -+ -+ ; For AES support -+ (UNSPEC_AESENC 159) -+ (UNSPEC_AESENCLAST 160) -+ (UNSPEC_AESDEC 161) -+ (UNSPEC_AESDECLAST 162) -+ (UNSPEC_AESIMC 163) -+ (UNSPEC_AESKEYGENASSIST 164) -+ -+ ; For PCLMUL support -+ (UNSPEC_PCLMUL 165) - ]) - - (define_constants ---- gcc/config/i386/wmmintrin.h (revision 0) -+++ gcc/config/i386/wmmintrin.h (revision 133902) -@@ -0,0 +1,123 @@ -+/* Copyright (C) 2008 Free Software Foundation, Inc. -+ -+ This file is part of GCC. -+ -+ GCC is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2, or (at your option) -+ any later version. -+ -+ GCC is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with GCC; see the file COPYING. If not, write to -+ the Free Software Foundation, 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. */ -+ -+/* As a special exception, if you include this header file into source -+ files compiled by GCC, this header file does not by itself cause -+ the resulting executable to be covered by the GNU General Public -+ License. This exception does not however invalidate any other -+ reasons why the executable file might be covered by the GNU General -+ Public License. */ -+ -+/* Implemented from the specification included in the Intel C++ Compiler -+ User Guide and Reference, version 10.1. */ -+ -+#ifndef _WMMINTRIN_H_INCLUDED -+#define _WMMINTRIN_H_INCLUDED -+ -+/* We need definitions from the SSE2 header file. */ -+#include -+ -+#if !defined (__AES__) && !defined (__PCLMUL__) -+# error "AES/PCLMUL instructions not enabled" -+#else -+ -+/* AES */ -+ -+#ifdef __AES__ -+/* Performs 1 round of AES decryption of the first m128i using -+ the second m128i as a round key. */ -+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) -+_mm_aesdec_si128 (__m128i __X, __m128i __Y) -+{ -+ return (__m128i) __builtin_ia32_aesdec128 ((__v2di)__X, (__v2di)__Y); -+} -+ -+/* Performs the last round of AES decryption of the first m128i -+ using the second m128i as a round key. */ -+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) -+_mm_aesdeclast_si128 (__m128i __X, __m128i __Y) -+{ -+ return (__m128i) __builtin_ia32_aesdeclast128 ((__v2di)__X, -+ (__v2di)__Y); -+} -+ -+/* Performs 1 round of AES encryption of the first m128i using -+ the second m128i as a round key. */ -+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) -+_mm_aesenc_si128 (__m128i __X, __m128i __Y) -+{ -+ return (__m128i) __builtin_ia32_aesenc128 ((__v2di)__X, (__v2di)__Y); -+} -+ -+/* Performs the last round of AES encryption of the first m128i -+ using the second m128i as a round key. */ -+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) -+_mm_aesenclast_si128 (__m128i __X, __m128i __Y) -+{ -+ return (__m128i) __builtin_ia32_aesenclast128 ((__v2di)__X, (__v2di)__Y); -+} -+ -+/* Performs the InverseMixColumn operation on the source m128i -+ and stores the result into m128i destination. */ -+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) -+_mm_aesimc_si128 (__m128i __X) -+{ -+ return (__m128i) __builtin_ia32_aesimc128 ((__v2di)__X); -+} -+ -+/* Generates a m128i round key for the input m128i AES cipher key and -+ byte round constant. The second parameter must be a compile time -+ constant. */ -+#ifdef __OPTIMIZE__ -+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) -+_mm_aeskeygenassist_si128 (__m128i __X, const int __C) -+{ -+ return (__m128i) __builtin_ia32_aeskeygenassist128 ((__v2di)__X, __C); -+} -+#else -+#define _mm_aeskeygenassist_si128(X, C) \ -+ ((__m128i) __builtin_ia32_aeskeygenassist128 ((__v2di)(__m128i)(X), \ -+ (int)(C))) -+#endif -+#endif /* __AES__ */ -+ -+/* PCLMUL */ -+ -+#ifdef __PCLMUL__ -+/* Performs carry-less integer multiplication of 64-bit halves of -+ 128-bit input operands. The third parameter inducates which 64-bit -+ haves of the input parameters v1 and v2 should be used. It must be -+ a compile time constant. */ -+#ifdef __OPTIMIZE__ -+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) -+_mm_clmulepi64_si128 (__m128i __X, __m128i __Y, const int __I) -+{ -+ return (__m128i) __builtin_ia32_pclmulqdq128 ((__v2di)__X, -+ (__v2di)__Y, __I); -+} -+#else -+#define _mm_clmulepi64_si128(X, Y, I) \ -+ ((__m128i) __builtin_ia32_pclmulqdq128 ((__v2di)(__m128i)(X), \ -+ (__v2di)(__m128i)(Y), (int)(I))) -+#endif -+#endif /* __PCLMUL__ */ -+ -+#endif /* __AES__/__PCLMUL__ */ -+ -+#endif /* _WMMINTRIN_H_INCLUDED */ ---- gcc/config/i386/cpuid.h (revision 133901) -+++ gcc/config/i386/cpuid.h (revision 133902) -@@ -33,11 +33,13 @@ - - /* %ecx */ - #define bit_SSE3 (1 << 0) -+#define bit_PCLMUL (1 << 1) - #define bit_SSSE3 (1 << 9) - #define bit_CMPXCHG16B (1 << 13) - #define bit_SSE4_1 (1 << 19) - #define bit_SSE4_2 (1 << 20) - #define bit_POPCNT (1 << 23) -+#define bit_AES (1 << 25) - - /* %edx */ - #define bit_CMPXCHG8B (1 << 8) ---- gcc/config/i386/sse.md (revision 133901) -+++ gcc/config/i386/sse.md (revision 133902) -@@ -7897,3 +7897,80 @@ (define_insn "sse5_pcom_tf3" - } - [(set_attr "type" "ssecmp") - (set_attr "mode" "TI")]) -+ -+(define_insn "aesenc" -+ [(set (match_operand:V2DI 0 "register_operand" "=x") -+ (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0") -+ (match_operand:V2DI 2 "nonimmediate_operand" "xm")] -+ UNSPEC_AESENC))] -+ "TARGET_AES" -+ "aesenc\t{%2, %0|%0, %2}" -+ [(set_attr "type" "sselog1") -+ (set_attr "prefix_extra" "1") -+ (set_attr "mode" "TI")]) -+ -+(define_insn "aesenclast" -+ [(set (match_operand:V2DI 0 "register_operand" "=x") -+ (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0") -+ (match_operand:V2DI 2 "nonimmediate_operand" "xm")] -+ UNSPEC_AESENCLAST))] -+ "TARGET_AES" -+ "aesenclast\t{%2, %0|%0, %2}" -+ [(set_attr "type" "sselog1") -+ (set_attr "prefix_extra" "1") -+ (set_attr "mode" "TI")]) -+ -+(define_insn "aesdec" -+ [(set (match_operand:V2DI 0 "register_operand" "=x") -+ (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0") -+ (match_operand:V2DI 2 "nonimmediate_operand" "xm")] -+ UNSPEC_AESDEC))] -+ "TARGET_AES" -+ "aesdec\t{%2, %0|%0, %2}" -+ [(set_attr "type" "sselog1") -+ (set_attr "prefix_extra" "1") -+ (set_attr "mode" "TI")]) -+ -+(define_insn "aesdeclast" -+ [(set (match_operand:V2DI 0 "register_operand" "=x") -+ (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0") -+ (match_operand:V2DI 2 "nonimmediate_operand" "xm")] -+ UNSPEC_AESDECLAST))] -+ "TARGET_AES" -+ "aesdeclast\t{%2, %0|%0, %2}" -+ [(set_attr "type" "sselog1") -+ (set_attr "prefix_extra" "1") -+ (set_attr "mode" "TI")]) -+ -+(define_insn "aesimc" -+ [(set (match_operand:V2DI 0 "register_operand" "=x") -+ (unspec:V2DI [(match_operand:V2DI 1 "nonimmediate_operand" "xm")] -+ UNSPEC_AESIMC))] -+ "TARGET_AES" -+ "aesimc\t{%1, %0|%0, %1}" -+ [(set_attr "type" "sselog1") -+ (set_attr "prefix_extra" "1") -+ (set_attr "mode" "TI")]) -+ -+(define_insn "aeskeygenassist" -+ [(set (match_operand:V2DI 0 "register_operand" "=x") -+ (unspec:V2DI [(match_operand:V2DI 1 "nonimmediate_operand" "xm") -+ (match_operand:SI 2 "const_0_to_255_operand" "n")] -+ UNSPEC_AESKEYGENASSIST))] -+ "TARGET_AES" -+ "aeskeygenassist\t{%2, %1, %0|%0, %1, %2}" -+ [(set_attr "type" "sselog1") -+ (set_attr "prefix_extra" "1") -+ (set_attr "mode" "TI")]) -+ -+(define_insn "pclmulqdq" -+ [(set (match_operand:V2DI 0 "register_operand" "=x") -+ (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0") -+ (match_operand:V2DI 2 "nonimmediate_operand" "xm") -+ (match_operand:SI 3 "const_0_to_255_operand" "n")] -+ UNSPEC_PCLMUL))] -+ "TARGET_PCLMUL" -+ "pclmulqdq\t{%3, %2, %0|%0, %2, %3}" -+ [(set_attr "type" "sselog1") -+ (set_attr "prefix_extra" "1") -+ (set_attr "mode" "TI")]) ---- gcc/config/i386/i386.opt (revision 133901) -+++ gcc/config/i386/i386.opt (revision 133902) -@@ -275,3 +275,11 @@ Target Report Var(x86_fused_muladd) Init - Enable automatic generation of fused floating point multiply-add instructions - if the ISA supports such instructions. The -mfused-madd option is on by - default. -+ -+maes -+Target Report RejectNegative Var(x86_aes) -+Support AES built-in functions and code generation -+ -+mpclmul -+Target Report RejectNegative Var(x86_pclmul) -+Support PCLMUL built-in functions and code generation ---- gcc/config/i386/i386.c (revision 133901) -+++ gcc/config/i386/i386.c (revision 133902) -@@ -2077,7 +2077,9 @@ override_options (void) - PTA_NO_SAHF = 1 << 13, - PTA_SSE4_1 = 1 << 14, - PTA_SSE4_2 = 1 << 15, -- PTA_SSE5 = 1 << 16 -+ PTA_SSE5 = 1 << 16, -+ PTA_AES = 1 << 17, -+ PTA_PCLMUL = 1 << 18 - }; - - static struct pta -@@ -2384,6 +2386,10 @@ override_options (void) - x86_prefetch_sse = true; - if (!(TARGET_64BIT && (processor_alias_table[i].flags & PTA_NO_SAHF))) - x86_sahf = true; -+ if (processor_alias_table[i].flags & PTA_AES) -+ x86_aes = true; -+ if (processor_alias_table[i].flags & PTA_PCLMUL) -+ x86_pclmul = true; - - break; - } -@@ -2427,6 +2433,14 @@ override_options (void) - if (i == pta_size) - error ("bad value (%s) for -mtune= switch", ix86_tune_string); - -+ /* Enable SSE2 if AES or PCLMUL is enabled. */ -+ if ((x86_aes || x86_pclmul) -+ && !(ix86_isa_flags_explicit & OPTION_MASK_ISA_SSE2)) -+ { -+ ix86_isa_flags |= OPTION_MASK_ISA_SSE2_SET; -+ ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_SET; -+ } -+ - ix86_tune_mask = 1u << ix86_tune; - for (i = 0; i < X86_TUNE_LAST; ++i) - ix86_tune_features[i] &= ix86_tune_mask; -@@ -17545,6 +17559,17 @@ enum ix86_builtins - - IX86_BUILTIN_PCMPGTQ, - -+ /* AES instructions */ -+ IX86_BUILTIN_AESENC128, -+ IX86_BUILTIN_AESENCLAST128, -+ IX86_BUILTIN_AESDEC128, -+ IX86_BUILTIN_AESDECLAST128, -+ IX86_BUILTIN_AESIMC128, -+ IX86_BUILTIN_AESKEYGENASSIST128, -+ -+ /* PCLMUL instruction */ -+ IX86_BUILTIN_PCLMULQDQ128, -+ - /* TFmode support builtins. */ - IX86_BUILTIN_INFQ, - IX86_BUILTIN_FABSQ, -@@ -17900,6 +17925,9 @@ static const struct builtin_description - { OPTION_MASK_ISA_SSE4_1, CODE_FOR_sse4_1_pblendw, "__builtin_ia32_pblendw128", IX86_BUILTIN_PBLENDW128, UNKNOWN, 0 }, - { OPTION_MASK_ISA_ROUND, CODE_FOR_sse4_1_roundsd, 0, IX86_BUILTIN_ROUNDSD, UNKNOWN, 0 }, - { OPTION_MASK_ISA_ROUND, CODE_FOR_sse4_1_roundss, 0, IX86_BUILTIN_ROUNDSS, UNKNOWN, 0 }, -+ -+ /* PCLMUL */ -+ { OPTION_MASK_ISA_SSE2, CODE_FOR_pclmulqdq, 0, IX86_BUILTIN_PCLMULQDQ128, UNKNOWN, 0 }, - }; - - static const struct builtin_description bdesc_2arg[] = -@@ -18210,6 +18238,13 @@ static const struct builtin_description - - /* SSE4.2 */ - { OPTION_MASK_ISA_SSE4_2, CODE_FOR_sse4_2_gtv2di3, "__builtin_ia32_pcmpgtq", IX86_BUILTIN_PCMPGTQ, UNKNOWN, 0 }, -+ -+ /* AES */ -+ { OPTION_MASK_ISA_SSE2, CODE_FOR_aesenc, 0, IX86_BUILTIN_AESENC128, UNKNOWN, 0 }, -+ { OPTION_MASK_ISA_SSE2, CODE_FOR_aesenclast, 0, IX86_BUILTIN_AESENCLAST128, UNKNOWN, 0 }, -+ { OPTION_MASK_ISA_SSE2, CODE_FOR_aesdec, 0, IX86_BUILTIN_AESDEC128, UNKNOWN, 0 }, -+ { OPTION_MASK_ISA_SSE2, CODE_FOR_aesdeclast, 0, IX86_BUILTIN_AESDECLAST128, UNKNOWN, 0 }, -+ { OPTION_MASK_ISA_SSE2, CODE_FOR_aeskeygenassist, 0, IX86_BUILTIN_AESKEYGENASSIST128, UNKNOWN, 0 }, - }; - - static const struct builtin_description bdesc_1arg[] = -@@ -18285,6 +18320,9 @@ static const struct builtin_description - /* Fake 1 arg builtins with a constant smaller than 8 bits as the 2nd arg. */ - { OPTION_MASK_ISA_SSE4_1, CODE_FOR_sse4_1_roundpd, 0, IX86_BUILTIN_ROUNDPD, UNKNOWN, 0 }, - { OPTION_MASK_ISA_SSE4_1, CODE_FOR_sse4_1_roundps, 0, IX86_BUILTIN_ROUNDPS, UNKNOWN, 0 }, -+ -+ /* AES */ -+ { OPTION_MASK_ISA_SSE2, CODE_FOR_aesimc, 0, IX86_BUILTIN_AESIMC128, UNKNOWN, 0 }, - }; - - /* SSE5 */ -@@ -19518,6 +19556,25 @@ ix86_init_mmx_sse_builtins (void) - NULL_TREE); - def_builtin_const (OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_64BIT, "__builtin_ia32_crc32di", ftype, IX86_BUILTIN_CRC32DI); - -+ /* AES */ -+ if (TARGET_AES) -+ { -+ /* Define AES built-in functions only if AES is enabled. */ -+ def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_aesenc128", v2di_ftype_v2di_v2di, IX86_BUILTIN_AESENC128); -+ def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_aesenclast128", v2di_ftype_v2di_v2di, IX86_BUILTIN_AESENCLAST128); -+ def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_aesdec128", v2di_ftype_v2di_v2di, IX86_BUILTIN_AESDEC128); -+ def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_aesdeclast128", v2di_ftype_v2di_v2di, IX86_BUILTIN_AESDECLAST128); -+ def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_aesimc128", v2di_ftype_v2di, IX86_BUILTIN_AESIMC128); -+ def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_aeskeygenassist128", v2di_ftype_v2di_int, IX86_BUILTIN_AESKEYGENASSIST128); -+ } -+ -+ /* PCLMUL */ -+ if (TARGET_PCLMUL) -+ { -+ /* Define PCLMUL built-in function only if PCLMUL is enabled. */ -+ def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_pclmulqdq128", v2di_ftype_v2di_v2di_int, IX86_BUILTIN_PCLMULQDQ128); -+ } -+ - /* AMDFAM10 SSE4A New built-ins */ - def_builtin (OPTION_MASK_ISA_SSE4A, "__builtin_ia32_movntsd", void_ftype_pdouble_v2df, IX86_BUILTIN_MOVNTSD); - def_builtin (OPTION_MASK_ISA_SSE4A, "__builtin_ia32_movntss", void_ftype_pfloat_v4sf, IX86_BUILTIN_MOVNTSS); -@@ -19793,6 +19850,44 @@ ix86_expand_crc32 (enum insn_code icode, - return target; - } - -+/* Subroutine of ix86_expand_builtin to take care of binop insns -+ with an immediate. */ -+ -+static rtx -+ix86_expand_binop_imm_builtin (enum insn_code icode, tree exp, -+ rtx target) -+{ -+ rtx pat; -+ tree arg0 = CALL_EXPR_ARG (exp, 0); -+ tree arg1 = CALL_EXPR_ARG (exp, 1); -+ rtx op0 = expand_normal (arg0); -+ rtx op1 = expand_normal (arg1); -+ enum machine_mode tmode = insn_data[icode].operand[0].mode; -+ enum machine_mode mode0 = insn_data[icode].operand[1].mode; -+ enum machine_mode mode1 = insn_data[icode].operand[2].mode; -+ -+ if (! (*insn_data[icode].operand[1].predicate) (op0, mode1)) -+ { -+ op0 = copy_to_reg (op0); -+ op0 = simplify_gen_subreg (mode0, op0, GET_MODE (op0), 0); -+ } -+ -+ if (! (*insn_data[icode].operand[2].predicate) (op1, mode1)) -+ { -+ error ("the last operand must be an immediate"); -+ return const0_rtx; -+ } -+ -+ target = gen_reg_rtx (V2DImode); -+ pat = GEN_FCN (icode) (simplify_gen_subreg (tmode, target, -+ V2DImode, 0), -+ op0, op1); -+ if (! pat) -+ return 0; -+ emit_insn (pat); -+ return target; -+} -+ - /* Subroutine of ix86_expand_builtin to take care of binop insns. */ - - static rtx -@@ -20889,34 +20984,18 @@ ix86_expand_builtin (tree exp, rtx targe - return target; - - case IX86_BUILTIN_PSLLDQI128: -+ return ix86_expand_binop_imm_builtin (CODE_FOR_sse2_ashlti3, -+ exp, target); -+ break; -+ - case IX86_BUILTIN_PSRLDQI128: -- icode = (fcode == IX86_BUILTIN_PSLLDQI128 ? CODE_FOR_sse2_ashlti3 -- : CODE_FOR_sse2_lshrti3); -- arg0 = CALL_EXPR_ARG (exp, 0); -- arg1 = CALL_EXPR_ARG (exp, 1); -- op0 = expand_normal (arg0); -- op1 = expand_normal (arg1); -- tmode = insn_data[icode].operand[0].mode; -- mode1 = insn_data[icode].operand[1].mode; -- mode2 = insn_data[icode].operand[2].mode; -+ return ix86_expand_binop_imm_builtin (CODE_FOR_sse2_lshrti3, -+ exp, target); -+ break; - -- if (! (*insn_data[icode].operand[1].predicate) (op0, mode1)) -- { -- op0 = copy_to_reg (op0); -- op0 = simplify_gen_subreg (mode1, op0, GET_MODE (op0), 0); -- } -- if (! (*insn_data[icode].operand[2].predicate) (op1, mode2)) -- { -- error ("shift must be an immediate"); -- return const0_rtx; -- } -- target = gen_reg_rtx (V2DImode); -- pat = GEN_FCN (icode) (simplify_gen_subreg (tmode, target, V2DImode, 0), -- op0, op1); -- if (! pat) -- return 0; -- emit_insn (pat); -- return target; -+ case IX86_BUILTIN_AESKEYGENASSIST128: -+ return ix86_expand_binop_imm_builtin (CODE_FOR_aeskeygenassist, -+ exp, target); - - case IX86_BUILTIN_FEMMS: - emit_insn (gen_mmx_femms ()); ---- gcc/doc/extend.texi (revision 133901) -+++ gcc/doc/extend.texi (revision 133902) -@@ -8013,6 +8013,27 @@ depending on the size of @code{unsigned - Generates the @code{popcntq} machine instruction. - @end table - -+The following built-in functions are available when @option{-maes} is -+used. All of them generate the machine instruction that is part of the -+name. -+ -+@smallexample -+v2di __builtin_ia32_aesenc128 (v2di, v2di) -+v2di __builtin_ia32_aesenclast128 (v2di, v2di) -+v2di __builtin_ia32_aesdec128 (v2di, v2di) -+v2di __builtin_ia32_aesdeclast128 (v2di, v2di) -+v2di __builtin_ia32_aeskeygenassist128 (v2di, const int) -+v2di __builtin_ia32_aesimc128 (v2di) -+@end smallexample -+ -+The following built-in function is available when @option{-mpclmul} is -+used. -+ -+@table @code -+@item v2di __builtin_ia32_pclmulqdq128 (v2di, v2di, const int) -+Generates the @code{pclmulqdq} machine instruction. -+@end table -+ - The following built-in functions are available when @option{-msse4a} is used. - All of them generate the machine instruction that is part of the name. - ---- gcc/doc/invoke.texi (revision 133901) -+++ gcc/doc/invoke.texi (revision 133902) -@@ -551,6 +551,7 @@ Objective-C and Objective-C++ Dialects}. - -mno-wide-multiply -mrtd -malign-double @gol - -mpreferred-stack-boundary=@var{num} -mcld -mcx16 -msahf -mrecip @gol - -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -msse4 @gol -+-maes -mpclmul @gol - -msse4a -m3dnow -mpopcnt -mabm -msse5 @gol - -mthreads -mno-align-stringops -minline-all-stringops @gol - -mpush-args -maccumulate-outgoing-args -m128bit-long-double @gol -@@ -10732,6 +10733,10 @@ preferred alignment to @option{-mpreferr - @itemx -mno-sse4.2 - @item -msse4 - @itemx -mno-sse4 -+@itemx -maes -+@itemx -mno-aes -+@itemx -mpclmul -+@itemx -mno-pclmul - @item -msse4a - @item -mno-sse4a - @item -msse5 -@@ -10749,8 +10754,8 @@ preferred alignment to @option{-mpreferr - @opindex m3dnow - @opindex mno-3dnow - These switches enable or disable the use of instructions in the MMX, --SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4A, SSE5, ABM or 3DNow!@: extended --instruction sets. -+SSE, SSE2, SSE3, SSSE3, SSE4.1, AES, PCLMUL, SSE4A, SSE5, ABM or -+3DNow!@: extended instruction sets. - These extensions are also available as built-in functions: see - @ref{X86 Built-in Functions}, for details of the functions enabled and - disabled by these switches. ---- gcc/testsuite/gcc.target/i386/sse-14.c (revision 133901) -+++ gcc/testsuite/gcc.target/i386/sse-14.c (revision 133902) -@@ -1,14 +1,15 @@ - /* { dg-do compile } */ --/* { dg-options "-O0 -march=k8 -m3dnow -msse4 -msse5" } */ -+/* { dg-options "-O0 -march=k8 -m3dnow -msse4 -msse5 -maes -mpclmul" } */ - - /* Test that the intrinsics compile without optimization. All of them are -- defined as inline functions in {,x,e,p,t,s,a,b}mmintrin.h and mm3dnow.h -+ defined as inline functions in {,x,e,p,t,s,w,a,b}mmintrin.h and mm3dnow.h - that reference the proper builtin functions. Defining away "extern" and - "__inline" results in all of them being compiled as proper functions. */ - - #define extern - #define __inline - -+#include - #include - #include - #include -@@ -44,6 +45,10 @@ - test_1x (_mm_extracti_si64, __m128i, __m128i, 1, 1) - test_2x (_mm_inserti_si64, __m128i, __m128i, __m128i, 1, 1) - -+/* wmmintrin.h */ -+test_1 (_mm_aeskeygenassist_si128, __m128i, __m128i, 1) -+test_2 (_mm_clmulepi64_si128, __m128i, __m128i, __m128i, 1) -+ - /* smmintrin.h */ - test_2 (_mm_blend_epi16, __m128i, __m128i, __m128i, 1) - test_2 (_mm_blend_ps, __m128, __m128, __m128, 1) ---- gcc/testsuite/gcc.target/i386/i386.exp (revision 133901) -+++ gcc/testsuite/gcc.target/i386/i386.exp (revision 133902) -@@ -51,6 +51,34 @@ proc check_effective_target_sse4 { } { - } "-O2 -msse4.1" ] - } - -+# Return 1 if aes instructions can be compiled. -+proc check_effective_target_aes { } { -+ return [check_no_compiler_messages aes object { -+ typedef long long __m128i __attribute__ ((__vector_size__ (16))); -+ typedef long long __v2di __attribute__ ((__vector_size__ (16))); -+ -+ __m128i _mm_aesimc_si128 (__m128i __X) -+ { -+ return (__m128i) __builtin_ia32_aesimc128 ((__v2di)__X); -+ } -+ } "-O2 -maes" ] -+} -+ -+# Return 1 if pclmul instructions can be compiled. -+proc check_effective_target_pclmul { } { -+ return [check_no_compiler_messages pclmul object { -+ typedef long long __m128i __attribute__ ((__vector_size__ (16))); -+ typedef long long __v2di __attribute__ ((__vector_size__ (16))); -+ -+ __m128i pclmulqdq_test (__m128i __X, __m128i __Y) -+ { -+ return (__m128i) __builtin_ia32_pclmulqdq128 ((__v2di)__X, -+ (__v2di)__Y, -+ 1); -+ } -+ } "-O2 -mpclmul" ] -+} -+ - # Return 1 if sse4a instructions can be compiled. - proc check_effective_target_sse4a { } { - return [check_no_compiler_messages sse4a object { ---- gcc/testsuite/gcc.target/i386/aesdeclast.c (revision 0) -+++ gcc/testsuite/gcc.target/i386/aesdeclast.c (revision 133902) -@@ -0,0 +1,69 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target aes } */ -+/* { dg-options "-O2 -maes" } */ -+ -+#include -+#include -+ -+#include "aes-check.h" -+ -+extern void abort (void); -+ -+#define NUM 1024 -+ -+static __m128i src1[NUM]; -+static __m128i src2[NUM]; -+static __m128i edst[NUM]; -+ -+static __m128i resdst[NUM]; -+ -+/* Initialize input/output vectors. (Currently, there is only one set of -+ input/output vectors). */ -+ -+static void -+init_data (__m128i *s1, __m128i *s2, __m128i *d) -+{ -+ int i; -+ -+ for (i = 0; i < NUM; i++) -+ { -+ s1[i] = _mm_setr_epi32 (0x5d53475d, 0x63746f72, -+ 0x73745665, 0x7b5b5465); -+ s2[i] = _mm_setr_epi32 (0x726f6e5d, 0x5b477565, -+ 0x68617929, 0x48692853); -+ d[i] = _mm_setr_epi32 (0x72a593d0, 0xd410637b, -+ 0x6b317f95, 0xc5a391ef); -+ } -+} -+ -+static void -+aes_test (void) -+{ -+ int i; -+ -+ init_data (src1, src2, edst); -+ -+ for (i = 0; i < NUM; i += 16) -+ { -+ resdst[i] = _mm_aesdeclast_si128 (src1[i], src2[i]); -+ resdst[i + 1] = _mm_aesdeclast_si128 (src1[i + 1], src2[i + 1]); -+ resdst[i + 2] = _mm_aesdeclast_si128 (src1[i + 2], src2[i + 2]); -+ resdst[i + 3] = _mm_aesdeclast_si128 (src1[i + 3], src2[i + 3]); -+ resdst[i + 4] = _mm_aesdeclast_si128 (src1[i + 4], src2[i + 4]); -+ resdst[i + 5] = _mm_aesdeclast_si128 (src1[i + 5], src2[i + 5]); -+ resdst[i + 6] = _mm_aesdeclast_si128 (src1[i + 6], src2[i + 6]); -+ resdst[i + 7] = _mm_aesdeclast_si128 (src1[i + 7], src2[i + 7]); -+ resdst[i + 8] = _mm_aesdeclast_si128 (src1[i + 8], src2[i + 8]); -+ resdst[i + 9] = _mm_aesdeclast_si128 (src1[i + 9], src2[i + 9]); -+ resdst[i + 10] = _mm_aesdeclast_si128 (src1[i + 10], src2[i + 10]); -+ resdst[i + 11] = _mm_aesdeclast_si128 (src1[i + 11], src2[i + 11]); -+ resdst[i + 12] = _mm_aesdeclast_si128 (src1[i + 12], src2[i + 12]); -+ resdst[i + 13] = _mm_aesdeclast_si128 (src1[i + 13], src2[i + 13]); -+ resdst[i + 14] = _mm_aesdeclast_si128 (src1[i + 14], src2[i + 14]); -+ resdst[i + 15] = _mm_aesdeclast_si128 (src1[i + 15], src2[i + 15]); -+ } -+ -+ for (i = 0; i < NUM; i++) -+ if (memcmp (edst + i, resdst + i, sizeof (__m128i))) -+ abort (); -+} ---- gcc/testsuite/gcc.target/i386/pclmulqdq.c (revision 0) -+++ gcc/testsuite/gcc.target/i386/pclmulqdq.c (revision 133902) -@@ -0,0 +1,87 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target pclmul } */ -+/* { dg-options "-O2 -mpclmul" } */ -+ -+#include -+#include -+ -+#include "pclmul-check.h" -+ -+extern void abort (void); -+ -+#define NUM 1024 -+ -+static __m128i s1[NUM]; -+static __m128i s2[NUM]; -+/* We need this array to generate mem form of inst */ -+static __m128i s2m[NUM]; -+ -+static __m128i e_00[NUM]; -+static __m128i e_01[NUM]; -+static __m128i e_10[NUM]; -+static __m128i e_11[NUM]; -+ -+static __m128i d_00[NUM]; -+static __m128i d_01[NUM]; -+static __m128i d_10[NUM]; -+static __m128i d_11[NUM]; -+ -+/* Initialize input/output vectors. (Currently, there is only one set -+ of input/output vectors). */ -+static void -+init_data (__m128i *ls1, __m128i *ls2, __m128i *le_00, __m128i *le_01, -+ __m128i *le_10, __m128i *le_11) -+{ -+ int i; -+ -+ for (i = 0; i < NUM; i++) -+ { -+ ls1[i] = _mm_set_epi32 (0x7B5B5465, 0x73745665, -+ 0x63746F72, 0x5D53475D); -+ ls2[i] = _mm_set_epi32 (0x48692853, 0x68617929, -+ 0x5B477565, 0x726F6E5D); -+ s2m[i] = _mm_set_epi32 (0x48692853, 0x68617929, -+ 0x5B477565, 0x726F6E5D); -+ le_00[i] = _mm_set_epi32 (0x1D4D84C8, 0x5C3440C0, -+ 0x929633D5, 0xD36F0451); -+ le_01[i] = _mm_set_epi32 (0x1A2BF6DB, 0x3A30862F, -+ 0xBABF262D, 0xF4B7D5C9); -+ le_10[i] = _mm_set_epi32 (0x1BD17C8D, 0x556AB5A1, -+ 0x7FA540AC, 0x2A281315); -+ le_11[i] = _mm_set_epi32 (0x1D1E1F2C, 0x592E7C45, -+ 0xD66EE03E, 0x410FD4ED); -+ } -+} -+ -+static void -+pclmul_test (void) -+{ -+ int i; -+ -+ init_data (s1, s2, e_00, e_01, e_10, e_11); -+ -+ for (i = 0; i < NUM; i += 2) -+ { -+ d_00[i] = _mm_clmulepi64_si128 (s1[i], s2m[i], 0x00); -+ d_01[i] = _mm_clmulepi64_si128 (s1[i], s2[i], 0x01); -+ d_10[i] = _mm_clmulepi64_si128 (s1[i], s2[i], 0x10); -+ d_11[i] = _mm_clmulepi64_si128 (s1[i], s2[i], 0x11); -+ -+ d_11[i + 1] = _mm_clmulepi64_si128 (s1[i + 1], s2[i + 1], 0x11); -+ d_00[i + 1] = _mm_clmulepi64_si128 (s1[i + 1], s2[i + 1], 0x00); -+ d_10[i + 1] = _mm_clmulepi64_si128 (s1[i + 1], s2m[i + 1], 0x10); -+ d_01[i + 1] = _mm_clmulepi64_si128 (s1[i + 1], s2[i + 1], 0x01); -+ } -+ -+ for (i = 0; i < NUM; i++) -+ { -+ if (memcmp (d_00 + i, e_00 + i, sizeof (__m128i))) -+ abort (); -+ if (memcmp (d_01 + i, e_01 + i, sizeof (__m128i))) -+ abort (); -+ if (memcmp (d_10 + i, e_10 + i, sizeof (__m128i))) -+ abort (); -+ if (memcmp(d_11 + i, e_11 + i, sizeof (__m128i))) -+ abort (); -+ } -+} ---- gcc/testsuite/gcc.target/i386/aes-check.h (revision 0) -+++ gcc/testsuite/gcc.target/i386/aes-check.h (revision 133902) -@@ -0,0 +1,30 @@ -+#include -+#include -+ -+#include "cpuid.h" -+ -+static void aes_test (void); -+ -+int -+main () -+{ -+ unsigned int eax, ebx, ecx, edx; -+ -+ if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) -+ return 0; -+ -+ /* Run AES test only if host has AES support. */ -+ if (ecx & bit_AES) -+ { -+ aes_test (); -+#ifdef DEBUG -+ printf ("PASSED\n"); -+#endif -+ } -+#ifdef DEBUG -+ else -+ printf ("SKIPPED\n"); -+#endif -+ -+ return 0; -+} ---- gcc/testsuite/gcc.target/i386/pclmul-check.h (revision 0) -+++ gcc/testsuite/gcc.target/i386/pclmul-check.h (revision 133902) -@@ -0,0 +1,30 @@ -+#include -+#include -+ -+#include "cpuid.h" -+ -+static void pclmul_test (void); -+ -+int -+main () -+{ -+ unsigned int eax, ebx, ecx, edx; -+ -+ if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) -+ return 0; -+ -+ /* Run PCLMULQDQ test only if host has PCLMULQDQ support. */ -+ if (ecx & bit_PCLMUL) -+ { -+ pclmul_test (); -+#ifdef DEBUG -+ printf ("PASSED\n"); -+#endif -+ } -+#ifdef DEBUG -+ else -+ printf ("SKIPPED\n"); -+#endif -+ -+ return 0; -+} ---- gcc/testsuite/gcc.target/i386/aeskeygenassist.c (revision 0) -+++ gcc/testsuite/gcc.target/i386/aeskeygenassist.c (revision 133902) -@@ -0,0 +1,66 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target aes } */ -+/* { dg-options "-O2 -maes" } */ -+ -+#include -+#include -+ -+#include "aes-check.h" -+ -+extern void abort (void); -+ -+#define NUM 1024 -+#define IMM8 1 -+ -+static __m128i src1[NUM]; -+static __m128i edst[NUM]; -+ -+static __m128i resdst[NUM]; -+ -+/* Initialize input/output vectors. (Currently, there is only one set -+ of input/output vectors). */ -+ -+static void -+init_data (__m128i *s1, __m128i *d) -+{ -+ int i; -+ for (i = 0; i < NUM; i++) -+ { -+ s1[i] = _mm_setr_epi32 (0x16157e2b, 0xa6d2ae28, -+ 0x8815f7ab, 0x3c4fcf09); -+ d[i] = _mm_setr_epi32 (0x24b5e434, 0x3424b5e5, -+ 0xeb848a01, 0x01eb848b); -+ } -+} -+ -+static void -+aes_test (void) -+{ -+ int i; -+ -+ init_data (src1, edst); -+ -+ for (i = 0; i < NUM; i += 16) -+ { -+ resdst[i] = _mm_aeskeygenassist_si128 (src1[i], IMM8); -+ resdst[i + 1] = _mm_aeskeygenassist_si128 (src1[i + 1], IMM8); -+ resdst[i + 2] = _mm_aeskeygenassist_si128 (src1[i + 2], IMM8); -+ resdst[i + 3] = _mm_aeskeygenassist_si128 (src1[i + 3], IMM8); -+ resdst[i + 4] = _mm_aeskeygenassist_si128 (src1[i + 4], IMM8); -+ resdst[i + 5] = _mm_aeskeygenassist_si128 (src1[i + 5], IMM8); -+ resdst[i + 6] = _mm_aeskeygenassist_si128 (src1[i + 6], IMM8); -+ resdst[i + 7] = _mm_aeskeygenassist_si128 (src1[i + 7], IMM8); -+ resdst[i + 8] = _mm_aeskeygenassist_si128 (src1[i + 8], IMM8); -+ resdst[i + 9] = _mm_aeskeygenassist_si128 (src1[i + 9], IMM8); -+ resdst[i + 10] = _mm_aeskeygenassist_si128 (src1[i + 10], IMM8); -+ resdst[i + 11] = _mm_aeskeygenassist_si128 (src1[i + 11], IMM8); -+ resdst[i + 12] = _mm_aeskeygenassist_si128 (src1[i + 12], IMM8); -+ resdst[i + 13] = _mm_aeskeygenassist_si128 (src1[i + 13], IMM8); -+ resdst[i + 14] = _mm_aeskeygenassist_si128 (src1[i + 14], IMM8); -+ resdst[i + 15] = _mm_aeskeygenassist_si128 (src1[i + 15], IMM8); -+ } -+ -+ for (i = 0; i < NUM; i++) -+ if (memcmp(edst + i, resdst + i, sizeof (__m128i))) -+ abort (); -+} ---- gcc/testsuite/gcc.target/i386/aesenclast.c (revision 0) -+++ gcc/testsuite/gcc.target/i386/aesenclast.c (revision 133902) -@@ -0,0 +1,68 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target aes } */ -+/* { dg-options "-O2 -maes" } */ -+ -+#include -+#include -+ -+#include "aes-check.h" -+ -+extern void abort (void); -+ -+#define NUM 1024 -+ -+static __m128i src1[NUM]; -+static __m128i src2[NUM]; -+static __m128i edst[NUM]; -+ -+static __m128i resdst[NUM]; -+ -+/* Initialize input/output vectors. (Currently, there is only one -+ set of input/output vectors). */ -+ -+static void -+init_data (__m128i *s1, __m128i *s2, __m128i *d) -+{ -+ int i; -+ for (i = 0; i < NUM; i++) -+ { -+ s1[i] = _mm_setr_epi32 (0x5d53475d, 0x63746f72, -+ 0x73745665, 0x7b5b5465); -+ s2[i] = _mm_setr_epi32 (0x726f6e5d, 0x5b477565, -+ 0x68617929, 0x48692853); -+ d[i] = _mm_setr_epi32 (0x53fdc611, 0x177ec425, -+ 0x938c5964, 0xc7fb881e); -+ } -+} -+ -+static void -+aes_test (void) -+{ -+ int i; -+ -+ init_data (src1, src2, edst); -+ -+ for (i = 0; i < NUM; i += 16) -+ { -+ resdst[i] = _mm_aesenclast_si128 (src1[i], src2[i]); -+ resdst[i + 1] = _mm_aesenclast_si128 (src1[i + 1], src2[i + 1]); -+ resdst[i + 2] = _mm_aesenclast_si128 (src1[i + 2], src2[i + 2]); -+ resdst[i + 3] = _mm_aesenclast_si128 (src1[i + 3], src2[i + 3]); -+ resdst[i + 4] = _mm_aesenclast_si128 (src1[i + 4], src2[i + 4]); -+ resdst[i + 5] = _mm_aesenclast_si128 (src1[i + 5], src2[i + 5]); -+ resdst[i + 6] = _mm_aesenclast_si128 (src1[i + 6], src2[i + 6]); -+ resdst[i + 7] = _mm_aesenclast_si128 (src1[i + 7], src2[i + 7]); -+ resdst[i + 8] = _mm_aesenclast_si128 (src1[i + 8], src2[i + 8]); -+ resdst[i + 9] = _mm_aesenclast_si128 (src1[i + 9], src2[i + 9]); -+ resdst[i + 10] = _mm_aesenclast_si128 (src1[i + 10], src2[i + 10]); -+ resdst[i + 11] = _mm_aesenclast_si128 (src1[i + 11], src2[i + 11]); -+ resdst[i + 12] = _mm_aesenclast_si128 (src1[i + 12], src2[i + 12]); -+ resdst[i + 13] = _mm_aesenclast_si128 (src1[i + 13], src2[i + 13]); -+ resdst[i + 14] = _mm_aesenclast_si128 (src1[i + 14], src2[i + 14]); -+ resdst[i + 15] = _mm_aesenclast_si128 (src1[i + 15], src2[i + 15]); -+ } -+ -+ for (i = 0; i < NUM; i++) -+ if (memcmp(edst + i, resdst + i, sizeof (__m128i))) -+ abort (); -+} ---- gcc/testsuite/gcc.target/i386/aesimc.c (revision 0) -+++ gcc/testsuite/gcc.target/i386/aesimc.c (revision 133902) -@@ -0,0 +1,66 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target aes } */ -+/* { dg-options "-O2 -maes" } */ -+ -+#include -+#include -+ -+#include "aes-check.h" -+ -+extern void abort (void); -+ -+#define NUM 1024 -+ -+static __m128i src1[NUM]; -+static __m128i edst[NUM]; -+ -+static __m128i resdst[NUM]; -+ -+/* Initialize input/output vectors. (Currently, there is only one set -+ of input/output vectors). */ -+ -+static void -+init_data (__m128i *s1, __m128i *d) -+{ -+ int i; -+ -+ for (i = 0; i < NUM; i++) -+ { -+ s1[i] = _mm_setr_epi32 (0x5d53475d, 0x63746f72, -+ 0x73745665, 0x7b5b5465); -+ d[i] = _mm_setr_epi32 (0x81c3b3e5, 0x2b18330a, -+ 0x44b109c8, 0x627a6f66); -+ } -+} -+ -+static void -+aes_test (void) -+{ -+ int i; -+ -+ init_data (src1, edst); -+ -+ for (i = 0; i < NUM; i += 16) -+ { -+ resdst[i] = _mm_aesimc_si128 (src1[i]); -+ resdst[i + 1] = _mm_aesimc_si128 (src1[i + 1]); -+ resdst[i + 2] = _mm_aesimc_si128 (src1[i + 2]); -+ resdst[i + 3] = _mm_aesimc_si128 (src1[i + 3]); -+ resdst[i + 4] = _mm_aesimc_si128 (src1[i + 4]); -+ resdst[i + 5] = _mm_aesimc_si128 (src1[i + 5]); -+ resdst[i + 6] = _mm_aesimc_si128 (src1[i + 6]); -+ resdst[i + 7] = _mm_aesimc_si128 (src1[i + 7]); -+ resdst[i + 8] = _mm_aesimc_si128 (src1[i + 8]); -+ resdst[i + 9] = _mm_aesimc_si128 (src1[i + 9]); -+ resdst[i + 10] = _mm_aesimc_si128 (src1[i + 10]); -+ resdst[i + 11] = _mm_aesimc_si128 (src1[i + 11]); -+ resdst[i + 12] = _mm_aesimc_si128 (src1[i + 12]); -+ resdst[i + 13] = _mm_aesimc_si128 (src1[i + 13]); -+ resdst[i + 14] = _mm_aesimc_si128 (src1[i + 14]); -+ resdst[i + 15] = _mm_aesimc_si128 (src1[i + 15]); -+ } -+ -+ for (i = 0; i < NUM; i++) -+ if (memcmp(edst + i, resdst + i, sizeof (__m128i))) -+ abort (); -+} ---- gcc/testsuite/gcc.target/i386/aesenc.c (revision 0) -+++ gcc/testsuite/gcc.target/i386/aesenc.c (revision 133902) -@@ -0,0 +1,68 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target aes } */ -+/* { dg-options "-O2 -maes" } */ -+ -+#include -+#include -+ -+#include "aes-check.h" -+ -+extern void abort (void); -+ -+#define NUM 1024 -+ -+static __m128i src1[NUM]; -+static __m128i src2[NUM]; -+static __m128i edst[NUM]; -+ -+static __m128i resdst[NUM]; -+ -+/* Initialize input/output vectors. (Currently, there is only one set -+ of input/output vectors). */ -+ -+static void -+init_data (__m128i *s1, __m128i *s2, __m128i *d) -+{ -+ int i; -+ for (i = 0; i < NUM; i++) -+ { -+ s1[i] = _mm_setr_epi32 (0x5d53475d, 0x63746f72, -+ 0x73745665, 0x7b5b5465); -+ s2[i] = _mm_setr_epi32 (0x726f6e5d, 0x5b477565, -+ 0x68617929, 0x48692853); -+ d[i] = _mm_setr_epi32 (0xded7e595, 0x8b104b58, -+ 0x9fdba3c5, 0xa8311c2f); -+ } -+} -+ -+static void -+aes_test (void) -+{ -+ int i; -+ -+ init_data (src1, src2, edst); -+ -+ for (i = 0; i < NUM; i += 16) -+ { -+ resdst[i] = _mm_aesenc_si128 (src1[i], src2[i]); -+ resdst[i + 1] = _mm_aesenc_si128 (src1[i + 1], src2[i + 1]); -+ resdst[i + 2] = _mm_aesenc_si128 (src1[i + 2], src2[i + 2]); -+ resdst[i + 3] = _mm_aesenc_si128 (src1[i + 3], src2[i + 3]); -+ resdst[i + 4] = _mm_aesenc_si128 (src1[i + 4], src2[i + 4]); -+ resdst[i + 5] = _mm_aesenc_si128 (src1[i + 5], src2[i + 5]); -+ resdst[i + 6] = _mm_aesenc_si128 (src1[i + 6], src2[i + 6]); -+ resdst[i + 7] = _mm_aesenc_si128 (src1[i + 7], src2[i + 7]); -+ resdst[i + 8] = _mm_aesenc_si128 (src1[i + 8], src2[i + 8]); -+ resdst[i + 9] = _mm_aesenc_si128 (src1[i + 9], src2[i + 9]); -+ resdst[i + 10] = _mm_aesenc_si128 (src1[i + 10], src2[i + 10]); -+ resdst[i + 11] = _mm_aesenc_si128 (src1[i + 11], src2[i + 11]); -+ resdst[i + 12] = _mm_aesenc_si128 (src1[i + 12], src2[i + 12]); -+ resdst[i + 13] = _mm_aesenc_si128 (src1[i + 13], src2[i + 13]); -+ resdst[i + 14] = _mm_aesenc_si128 (src1[i + 14], src2[i + 14]); -+ resdst[i + 15] = _mm_aesenc_si128 (src1[i + 15], src2[i + 15]); -+ } -+ -+ for (i = 0; i < NUM; i++) -+ if (memcmp (edst + i, resdst + i, sizeof (__m128i))) -+ abort (); -+} ---- gcc/testsuite/gcc.target/i386/sse-13.c (revision 133901) -+++ gcc/testsuite/gcc.target/i386/sse-13.c (revision 133902) -@@ -1,8 +1,8 @@ - /* { dg-do compile } */ --/* { dg-options "-O2 -march=k8 -m3dnow -msse4 -msse5" } */ -+/* { dg-options "-O2 -march=k8 -m3dnow -msse4 -msse5 -maes -mpclmul" } */ - - /* Test that the intrinsics compile with optimization. All of them are -- defined as inline functions in {,x,e,p,t,s,a,b}mmintrin.h and mm3dnow.h -+ defined as inline functions in {,x,e,p,t,s,w,a,b}mmintrin.h and mm3dnow.h - that reference the proper builtin functions. Defining away "extern" and - "__inline" results in all of them being compiled as proper functions. */ - -@@ -15,6 +15,10 @@ - #define __builtin_ia32_extrqi(X, I, L) __builtin_ia32_extrqi(X, 1, 1) - #define __builtin_ia32_insertqi(X, Y, I, L) __builtin_ia32_insertqi(X, Y, 1, 1) - -+/* wmmintrin.h */ -+#define __builtin_ia32_aeskeygenassist128(X, C) __builtin_ia32_aeskeygenassist128(X, 1) -+#define __builtin_ia32_pclmulqdq128(X, Y, I) __builtin_ia32_pclmulqdq128(X, Y, 1) -+ - /* smmintrin.h */ - #define __builtin_ia32_pblendw128(X, Y, M) __builtin_ia32_pblendw128 (X, Y, 1) - #define __builtin_ia32_blendps(X, Y, M) __builtin_ia32_blendps(X, Y, 1) -@@ -92,6 +96,7 @@ - #define __builtin_ia32_protdi(A, B) __builtin_ia32_protdi(A,1) - #define __builtin_ia32_protqi(A, B) __builtin_ia32_protqi(A,1) - -+#include - #include - #include - #include ---- gcc/testsuite/gcc.target/i386/aesdec.c (revision 0) -+++ gcc/testsuite/gcc.target/i386/aesdec.c (revision 133902) -@@ -0,0 +1,67 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target aes } */ -+/* { dg-options "-O2 -maes" } */ -+ -+#include -+#include -+ -+#include "aes-check.h" -+ -+extern void abort (void); -+ -+#define NUM 1024 -+ -+static __m128i src1[NUM]; -+static __m128i src2[NUM]; -+static __m128i edst[NUM]; -+ -+static __m128i resdst[NUM]; -+ -+/* Initialize input/output vectors. (Currently, there is only one set -+ of input/output vectors). */ -+static void -+init_data (__m128i *s1, __m128i *s2, __m128i *d) -+{ -+ int i; -+ for (i = 0; i < NUM; i++) -+ { -+ s1[i] = _mm_setr_epi32 (0x5d53475d, 0x63746f72, -+ 0x73745665, 0x7b5b5465); -+ s2[i] = _mm_setr_epi32 (0x726f6e5d, 0x5b477565, -+ 0x68617929, 0x48692853); -+ d[i] = _mm_setr_epi32 (0xb730392a, 0xb58eb95e, -+ 0xfaea2787, 0x138ac342); -+ } -+} -+ -+static void -+aes_test (void) -+{ -+ int i; -+ -+ init_data (src1, src2, edst); -+ -+ for (i = 0; i < NUM; i += 16) -+ { -+ resdst[i] = _mm_aesdec_si128 (src1[i], src2[i]); -+ resdst[i + 1] = _mm_aesdec_si128 (src1[i + 1], src2[i + 1]); -+ resdst[i + 2] = _mm_aesdec_si128 (src1[i + 2], src2[i + 2]); -+ resdst[i + 3] = _mm_aesdec_si128 (src1[i + 3], src2[i + 3]); -+ resdst[i + 4] = _mm_aesdec_si128 (src1[i + 4], src2[i + 4]); -+ resdst[i + 5] = _mm_aesdec_si128 (src1[i + 5], src2[i + 5]); -+ resdst[i + 6] = _mm_aesdec_si128 (src1[i + 6], src2[i + 6]); -+ resdst[i + 7] = _mm_aesdec_si128 (src1[i + 7], src2[i + 7]); -+ resdst[i + 8] = _mm_aesdec_si128 (src1[i + 8], src2[i + 8]); -+ resdst[i + 9] = _mm_aesdec_si128 (src1[i + 9], src2[i + 9]); -+ resdst[i + 10] = _mm_aesdec_si128 (src1[i + 10], src2[i + 10]); -+ resdst[i + 11] = _mm_aesdec_si128 (src1[i + 11], src2[i + 11]); -+ resdst[i + 12] = _mm_aesdec_si128 (src1[i + 12], src2[i + 12]); -+ resdst[i + 13] = _mm_aesdec_si128 (src1[i + 13], src2[i + 13]); -+ resdst[i + 14] = _mm_aesdec_si128 (src1[i + 14], src2[i + 14]); -+ resdst[i + 15] = _mm_aesdec_si128 (src1[i + 15], src2[i + 15]); -+ } -+ -+ for (i = 0; i < NUM; i++) -+ if (memcmp (edst + i, resdst + i, sizeof (__m128i))) -+ abort (); -+} ---- gcc/testsuite/g++.dg/other/i386-2.C (revision 133901) -+++ gcc/testsuite/g++.dg/other/i386-2.C (revision 133902) -@@ -1,8 +1,9 @@ --/* Test that {,x,e,p,t,s,a,b}mmintrin.h, mm3dnow.h and mm_malloc.h are -+/* Test that {,x,e,p,t,s,w,a,b}mmintrin.h, mm3dnow.h and mm_malloc.h are - usable with -O -pedantic-errors. */ - /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ --/* { dg-options "-O -pedantic-errors -march=k8 -m3dnow -msse4 -msse5" } */ -+/* { dg-options "-O -pedantic-errors -march=k8 -m3dnow -msse4 -msse5 -maes -mpclmul" } */ - -+#include - #include - #include - #include ---- gcc/testsuite/g++.dg/other/i386-3.C (revision 133901) -+++ gcc/testsuite/g++.dg/other/i386-3.C (revision 133902) -@@ -1,8 +1,9 @@ --/* Test that {,x,e,p,t,s,a,b}mmintrin.h, mm3dnow.h and mm_malloc.h are -+/* Test that {,x,e,p,t,s,w,a,b}mmintrin.h, mm3dnow.h and mm_malloc.h are - usable with -O -fkeep-inline-functions. */ - /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ --/* { dg-options "-O -fkeep-inline-functions -march=k8 -m3dnow -msse4 -msse5" } */ -+/* { dg-options "-O -fkeep-inline-functions -march=k8 -m3dnow -maes -mpclmul -msse4 -msse5" } */ - -+#include - #include - #include - #include diff --git a/gcc43-altivec-tests.patch b/gcc43-altivec-tests.patch deleted file mode 100644 index 0b7a456..0000000 --- a/gcc43-altivec-tests.patch +++ /dev/null @@ -1,42 +0,0 @@ -2008-08-26 Janis Johnson - - * g++.dg/ext/altivec-3.C: Move AltiVec code out of main. - -2008-04-04 Janis Johnson - - * gcc.dg/var-expand3.c: Skip for powerpc-linux if not on AltiVec HW. - ---- gcc/testsuite/g++.dg/ext/altivec-3.C (revision 139609) -+++ gcc/testsuite/g++.dg/ext/altivec-3.C (revision 139610) -@@ -120,16 +120,19 @@ void baz2 (int i, ... ) - CHECK_INVARIANT (vec_all_eq (vxi.v, vx_g.v)); - } - --int main(void) -+void main1(void) - { - CHECK_INVARIANT (sizeof(struct foo) == 8 && sizeof(struct vfoo) == 48); - -- altivec_check(); -- - bar(i_1, x_g, (short)i_2, (float)d_2, ld_1, (char)i_1, d_3); - baz(i_1, v_g, i_1, vx_g, i_1, v2_g, i_1, vx2_g); - quux(i_1, v_g, v_g); - baz2(i_1, vx_g); -- -+} -+ -+int main(void) -+{ -+ altivec_check(); -+ main1(); - return 0; - } ---- gcc/testsuite/gcc.dg/var-expand3.c (revision 133910) -+++ gcc/testsuite/gcc.dg/var-expand3.c (revision 133911) -@@ -1,4 +1,4 @@ --/* { dg-do run { target { powerpc*-*-* && powerpc_altivec_ok } } }} */ -+/* { dg-do run { target { powerpc*-*-* && vmx_hw } } }} */ - /* { dg-options "-O2 -funroll-loops -ffast-math -fvariable-expansion-in-unroller -maltivec -dL" } */ - - #include "altivec.h" diff --git a/gcc43-ppc64-ia64-GNU-stack.patch b/gcc43-ppc64-ia64-GNU-stack.patch deleted file mode 100644 index d49f2b9..0000000 --- a/gcc43-ppc64-ia64-GNU-stack.patch +++ /dev/null @@ -1,86 +0,0 @@ -2007-08-27 Jakub Jelinek - - * config/rs6000/rs6000.c (rs6000_elf_end_indicate_exec_stack): New. - * config/rs6000/linux64.h (TARGET_ASM_FILE_END): Use - rs6000_elf_end_indicate_exec_stack. - * config/ia64/ia64.c (ia64_linux_file_end): new. - * config/ia64/linux.h (TARGET_ASM_FILE_END): Use ia64_linux_file_end. - ---- gcc/config/rs6000/rs6000.c.jj 2007-12-07 18:41:08.000000000 +0100 -+++ gcc/config/rs6000/rs6000.c 2007-12-07 18:42:12.000000000 +0100 -@@ -746,6 +746,7 @@ static void rs6000_file_start (void); - static int rs6000_elf_reloc_rw_mask (void); - static void rs6000_elf_asm_out_constructor (rtx, int); - static void rs6000_elf_asm_out_destructor (rtx, int); -+static void rs6000_elf_end_indicate_exec_stack (void) ATTRIBUTE_UNUSED; - static void rs6000_elf_asm_init_sections (void); - static section *rs6000_elf_select_rtx_section (enum machine_mode, rtx, - unsigned HOST_WIDE_INT); -@@ -20418,6 +20419,20 @@ rs6000_elf_declare_function_name (FILE * - } - ASM_OUTPUT_LABEL (file, name); - } -+ -+static void -+rs6000_elf_end_indicate_exec_stack (void) -+{ -+ if (TARGET_32BIT) -+ file_end_indicate_exec_stack (); -+ else -+ { -+ int saved_trampolines_created = trampolines_created; -+ trampolines_created = 0; -+ file_end_indicate_exec_stack (); -+ trampolines_created = saved_trampolines_created; -+ } -+} - #endif - - #if TARGET_XCOFF ---- gcc/config/rs6000/linux64.h.jj 2007-12-07 17:18:06.000000000 +0100 -+++ gcc/config/rs6000/linux64.h 2007-12-07 18:41:21.000000000 +0100 -@@ -504,7 +504,7 @@ extern int dot_symbols; - #undef DRAFT_V4_STRUCT_RET - #define DRAFT_V4_STRUCT_RET (!TARGET_64BIT) - --#define TARGET_ASM_FILE_END file_end_indicate_exec_stack -+#define TARGET_ASM_FILE_END rs6000_elf_end_indicate_exec_stack - - #define TARGET_POSIX_IO - ---- gcc/config/ia64/linux.h.jj 2007-12-07 18:17:43.000000000 +0100 -+++ gcc/config/ia64/linux.h 2007-12-07 18:41:21.000000000 +0100 -@@ -5,7 +5,7 @@ - - #define TARGET_VERSION fprintf (stderr, " (IA-64) Linux"); - --#define TARGET_ASM_FILE_END file_end_indicate_exec_stack -+#define TARGET_ASM_FILE_END ia64_linux_file_end - - /* This is for -profile to use -lc_p instead of -lc. */ - #undef CC1_SPEC ---- gcc/config/ia64/ia64.c.jj 2007-12-07 15:41:58.000000000 +0100 -+++ gcc/config/ia64/ia64.c 2007-12-07 18:43:18.000000000 +0100 -@@ -262,6 +262,8 @@ static section *ia64_select_rtx_section - static void ia64_output_dwarf_dtprel (FILE *, int, rtx) - ATTRIBUTE_UNUSED; - static unsigned int ia64_section_type_flags (tree, const char *, int); -+static void ia64_linux_file_end (void) -+ ATTRIBUTE_UNUSED; - static void ia64_init_libfuncs (void) - ATTRIBUTE_UNUSED; - static void ia64_hpux_init_libfuncs (void) -@@ -9957,4 +9959,13 @@ ia64_c_mode_for_suffix (char suffix) - return VOIDmode; - } - -+static void -+ia64_linux_file_end (void) -+{ -+ int saved_trampolines_created = trampolines_created; -+ trampolines_created = 0; -+ file_end_indicate_exec_stack (); -+ trampolines_created = saved_trampolines_created; -+} -+ - #include "gt-ia64.h" diff --git a/gcc43-pr29609-2.patch b/gcc43-pr29609-2.patch deleted file mode 100644 index e057605..0000000 --- a/gcc43-pr29609-2.patch +++ /dev/null @@ -1,105 +0,0 @@ -2008-10-09 Jakub Jelinek - - * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block - as used. - * gimple-low.c (lower_return_expr, lower_builtin_setjmp): Set - TREE_BLOCK on the newly created stmts. - * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set - goto_block on edges if goto_locus is known. - ---- gcc/tree-ssa-live.c.jj 2008-10-07 21:25:57.000000000 +0200 -+++ gcc/tree-ssa-live.c 2008-10-09 00:25:20.000000000 +0200 -@@ -591,6 +591,8 @@ remove_unused_locals (void) - { - block_stmt_iterator bsi; - tree phi, def; -+ edge_iterator ei; -+ edge e; - - /* Walk the statements. */ - for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi)) -@@ -614,6 +616,10 @@ remove_unused_locals (void) - mark_all_vars_used (&arg, NULL); - } - } -+ -+ FOR_EACH_EDGE (e, ei, bb->succs) -+ if (e->goto_locus) -+ TREE_USED (e->goto_block) = true; - } - - /* Remove unmarked local vars from unexpanded_var_list. */ ---- gcc/gimple-low.c.jj 2008-10-07 21:25:58.000000000 +0200 -+++ gcc/gimple-low.c 2008-10-09 00:42:31.000000000 +0200 -@@ -590,6 +590,7 @@ lower_return_expr (tree_stmt_iterator *t - found: - t = build1 (GOTO_EXPR, void_type_node, label); - SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt)); -+ TREE_BLOCK (t) = TREE_BLOCK (stmt); - tsi_link_before (tsi, t, TSI_SAME_STMT); - tsi_delink (tsi); - } -@@ -672,6 +673,7 @@ lower_builtin_setjmp (tree_stmt_iterator - t = implicit_built_in_decls[BUILT_IN_SETJMP_SETUP]; - t = build_call_expr (t, 2, CALL_EXPR_ARG (stmt, 0), arg); - SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt)); -+ TREE_BLOCK (t) = TREE_BLOCK (stmt); - tsi_link_before (tsi, t, TSI_SAME_STMT); - - /* Build 'DEST = 0' and insert. */ -@@ -680,6 +682,7 @@ lower_builtin_setjmp (tree_stmt_iterator - t = build_gimple_modify_stmt (dest, fold_convert (TREE_TYPE (dest), - integer_zero_node)); - SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt)); -+ TREE_BLOCK (t) = TREE_BLOCK (stmt); - tsi_link_before (tsi, t, TSI_SAME_STMT); - } - -@@ -696,6 +699,7 @@ lower_builtin_setjmp (tree_stmt_iterator - t = implicit_built_in_decls[BUILT_IN_SETJMP_RECEIVER]; - t = build_call_expr (t, 1, arg); - SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt)); -+ TREE_BLOCK (t) = TREE_BLOCK (stmt); - tsi_link_before (tsi, t, TSI_SAME_STMT); - - /* Build 'DEST = 1' and insert. */ -@@ -704,6 +708,7 @@ lower_builtin_setjmp (tree_stmt_iterator - t = build_gimple_modify_stmt (dest, fold_convert (TREE_TYPE (dest), - integer_one_node)); - SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt)); -+ TREE_BLOCK (t) = TREE_BLOCK (stmt); - tsi_link_before (tsi, t, TSI_SAME_STMT); - } - ---- gcc/tree-cfg.c.jj 2008-10-07 21:39:14.000000000 +0200 -+++ gcc/tree-cfg.c 2008-10-09 00:00:48.000000000 +0200 -@@ -634,7 +634,8 @@ make_cond_expr_edges (basic_block bb) - #else - e->goto_locus = EXPR_LOCUS (COND_EXPR_THEN (entry)); - #endif -- e->goto_block = TREE_BLOCK (COND_EXPR_THEN (entry)); -+ if (e->goto_locus) -+ e->goto_block = TREE_BLOCK (COND_EXPR_THEN (entry)); - e = make_edge (bb, else_bb, EDGE_FALSE_VALUE); - if (e) - { -@@ -643,7 +644,8 @@ make_cond_expr_edges (basic_block bb) - #else - e->goto_locus = EXPR_LOCUS (COND_EXPR_ELSE (entry)); - #endif -- e->goto_block = TREE_BLOCK (COND_EXPR_ELSE (entry)); -+ if (e->goto_locus) -+ e->goto_block = TREE_BLOCK (COND_EXPR_ELSE (entry)); - } - - /* We do not need the gotos anymore. */ -@@ -843,7 +845,8 @@ make_goto_expr_edges (basic_block bb) - #else - e->goto_locus = EXPR_LOCUS (goto_t); - #endif -- e->goto_block = TREE_BLOCK (goto_t); -+ if (e->goto_locus) -+ e->goto_block = TREE_BLOCK (goto_t); - bsi_remove (&last, true); - return; - } diff --git a/gcc43-pr29609-3.patch b/gcc43-pr29609-3.patch deleted file mode 100644 index 72791cd..0000000 --- a/gcc43-pr29609-3.patch +++ /dev/null @@ -1,168 +0,0 @@ -2008-10-09 Jakub Jelinek - - * rtl.h (locator_eq): New decl. - * cfglayout.c (locator_scope): New function. - (insn_scope): Use it. - (locator_eq): New function. - (fixup_reorder_chain): Search for last insn in src bb - that has locator set or first insn in dest bb. Use - locator_eq instead of == to compare locators. - * cfgrtl.c (cfg_layout_merge_blocks): Likewise. - * cfgcleanup.c (try_forward_edges): Use locator_eq instead of - == to compare locators. - ---- gcc/cfglayout.c.jj 2008-10-07 21:35:33.000000000 +0200 -+++ gcc/cfglayout.c 2008-10-09 11:18:51.000000000 +0200 -@@ -448,13 +448,12 @@ change_scope (rtx orig_insn, tree s1, tr - } - } - --/* Return lexical scope block insn belong to. */ -+/* Return lexical scope block locator belongs to. */ - static tree --insn_scope (const_rtx insn) -+locator_scope (int loc) - { - int max = VEC_length (int, block_locators_locs); - int min = 0; -- int loc = INSN_LOCATOR (insn); - - /* When block_locators_locs was initialized, the pro- and epilogue - insns didn't exist yet and can therefore not be found this way. -@@ -488,6 +487,13 @@ insn_scope (const_rtx insn) - return VEC_index (tree, block_locators_blocks, min); - } - -+/* Return lexical scope block insn belongs to. */ -+static tree -+insn_scope (const_rtx insn) -+{ -+ return locator_scope (INSN_LOCATOR (insn)); -+} -+ - /* Return line number of the statement specified by the locator. */ - static location_t - locator_location (int loc) -@@ -551,6 +557,17 @@ insn_file (const_rtx insn) - return locator_file (INSN_LOCATOR (insn)); - } - -+/* Return true if LOC1 and LOC2 locators have the same location and scope. */ -+bool -+locator_eq (int loc1, int loc2) -+{ -+ if (loc1 == loc2) -+ return true; -+ if (locator_location (loc1) != locator_location (loc2)) -+ return false; -+ return locator_scope (loc1) == locator_scope (loc2); -+} -+ - /* Rebuild all the NOTE_INSN_BLOCK_BEG and NOTE_INSN_BLOCK_END notes based - on the scope tree and the newly reordered instructions. */ - -@@ -901,24 +918,30 @@ fixup_reorder_chain (void) - if (e->goto_locus && !(e->flags & EDGE_ABNORMAL)) - { - basic_block nb; -+ rtx end; - -- if (simplejump_p (BB_END (e->src))) -+ insn = BB_END (e->src); -+ end = PREV_INSN (BB_HEAD (e->src)); -+ while (insn != end -+ && (!INSN_P (insn) || INSN_LOCATOR (insn) == 0)) -+ insn = PREV_INSN (insn); -+ if (insn != end -+ && locator_eq (INSN_LOCATOR (insn), (int) e->goto_locus)) -+ continue; -+ if (simplejump_p (BB_END (e->src)) -+ && INSN_LOCATOR (BB_END (e->src)) == 0) - { -- if (INSN_LOCATOR (BB_END (e->src)) == (int) e->goto_locus) -- continue; -- if (INSN_LOCATOR (BB_END (e->src)) == 0) -- { -- INSN_LOCATOR (BB_END (e->src)) = e->goto_locus; -- continue; -- } -+ INSN_LOCATOR (BB_END (e->src)) = e->goto_locus; -+ continue; - } - if (e->dest != EXIT_BLOCK_PTR) - { - insn = BB_HEAD (e->dest); -- if (!INSN_P (insn)) -- insn = next_insn (insn); -- if (insn && INSN_P (insn) -- && INSN_LOCATOR (insn) == (int) e->goto_locus) -+ end = NEXT_INSN (BB_END (e->dest)); -+ while (insn != end && !INSN_P (insn)) -+ insn = NEXT_INSN (insn); -+ if (insn != end && INSN_LOCATOR (insn) -+ && locator_eq (INSN_LOCATOR (insn), (int) e->goto_locus)) - continue; - } - nb = split_edge (e); ---- gcc/rtl.h.jj 2008-10-07 21:25:44.000000000 +0200 -+++ gcc/rtl.h 2008-10-09 11:15:57.000000000 +0200 -@@ -1622,6 +1622,7 @@ extern int insn_line (const_rtx); - extern const char * insn_file (const_rtx); - extern int locator_line (int); - extern const char * locator_file (int); -+extern bool locator_eq (int, int); - extern int prologue_locator, epilogue_locator; - - /* In jump.c */ ---- gcc/cfgrtl.c.jj 2008-10-07 21:35:33.000000000 +0200 -+++ gcc/cfgrtl.c 2008-10-09 10:37:03.000000000 +0200 -@@ -2623,19 +2623,21 @@ cfg_layout_merge_blocks (basic_block a, - some unique locus, emit a nop with that locus in between. */ - if (!optimize && EDGE_SUCC (a, 0)->goto_locus) - { -- rtx insn = BB_END (a); -+ rtx insn = BB_END (a), end = PREV_INSN (BB_HEAD (a)); - int goto_locus = EDGE_SUCC (a, 0)->goto_locus; - -- if (NOTE_P (insn)) -- insn = prev_nonnote_insn (insn); -- if (insn && INSN_P (insn) && INSN_LOCATOR (insn) == goto_locus) -+ while (insn != end && (!INSN_P (insn) || INSN_LOCATOR (insn) == 0)) -+ insn = PREV_INSN (insn); -+ if (insn != end && locator_eq (INSN_LOCATOR (insn), goto_locus)) - goto_locus = 0; - else - { - insn = BB_HEAD (b); -- if (!INSN_P (insn)) -- insn = next_insn (insn); -- if (insn && INSN_P (insn) && INSN_LOCATOR (insn) == goto_locus) -+ end = NEXT_INSN (BB_END (b)); -+ while (insn != end && !INSN_P (insn)) -+ insn = NEXT_INSN (insn); -+ if (insn != end && INSN_LOCATOR (insn) != 0 -+ && locator_eq (INSN_LOCATOR (insn), goto_locus)) - goto_locus = 0; - } - if (goto_locus) ---- gcc/cfgcleanup.c.jj 2008-10-07 21:35:33.000000000 +0200 -+++ gcc/cfgcleanup.c 2008-10-09 11:07:40.000000000 +0200 -@@ -482,7 +482,7 @@ try_forward_edges (int mode, basic_block - blocks with different locus are not optimized out. */ - int locus = single_succ_edge (target)->goto_locus; - -- if (locus && goto_locus && locus != goto_locus) -+ if (locus && goto_locus && !locator_eq (locus, goto_locus)) - counter = n_basic_blocks; - else if (locus) - goto_locus = locus; -@@ -491,7 +491,8 @@ try_forward_edges (int mode, basic_block - { - locus = INSN_LOCATOR (BB_END (target)); - -- if (locus && goto_locus && locus != goto_locus) -+ if (locus && goto_locus -+ && !locator_eq (locus, goto_locus)) - counter = n_basic_blocks; - else if (locus) - goto_locus = locus; diff --git a/gcc43-pr29609.patch b/gcc43-pr29609.patch deleted file mode 100644 index 1a8dfbf..0000000 --- a/gcc43-pr29609.patch +++ /dev/null @@ -1,899 +0,0 @@ -2008-10-08 Jakub Jelinek - - * cfgexpand.c (expand_gimple_cond_expr): Convert also goto_block and - goto_locus of true_edge into RTL locator. - -2008-10-07 Jakub Jelinek - - PR debug/29609 - PR debug/36690 - PR debug/37616 - * basic-block.h (struct edge_def): Add goto_block field. - * cfglayout.c (fixup_reorder_chain): Ensure that there is at least - one insn with locus corresponding to edge's goto_locus if !optimize. - * profile.c (branch_prob): Copy edge's goto_block. - * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for - emitted jumps. - (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus - locator in between the merged basic blocks if !optimize and needed. - * cfgexpand.c (expand_gimple_cond_expr): Convert goto_block and - goto_locus into RTL locator. For unconditional jump use that - locator for the jump insn. - (expand_gimple_basic_block): Convert goto_block and goto_locus into - RTL locator for all remaining edges. For unconditional jump - use that locator for the jump insn. - * cfgcleanup.c (try_forward_edges): Avoid the optimization if - there is more than one edge or insn locator along the forwarding - edges and !optimize. If there is just one, set e->goto_locus. - * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also - edge's goto_block. - (move_block_to_fn): Adjust edge's goto_block. - - * gcc.dg/debug/pr29609-1.c: New test. - * gcc.dg/debug/pr29609-2.c: New test. - * gcc.dg/debug/pr36690-1.c: New test. - * gcc.dg/debug/pr36690-2.c: New test. - * gcc.dg/debug/pr36690-3.c: New test. - * gcc.dg/debug/pr37616.c: New test. - * gcc.dg/debug/dwarf2/pr29609-1.c: New test. - * gcc.dg/debug/dwarf2/pr29609-2.c: New test. - * gcc.dg/debug/dwarf2/pr36690-1.c: New test. - * gcc.dg/debug/dwarf2/pr36690-2.c: New test. - * gcc.dg/debug/dwarf2/pr36690-3.c: New test. - * gcc.dg/debug/dwarf2/pr37616.c: New test. - ---- gcc/profile.c (revision 140947) -+++ gcc/profile.c (revision 140948) -@@ -825,7 +825,9 @@ branch_prob (void) - #endif - { - basic_block new = split_edge (e); -- single_succ_edge (new)->goto_locus = e->goto_locus; -+ edge ne = single_succ_edge (new); -+ ne->goto_locus = e->goto_locus; -+ ne->goto_block = e->goto_block; - } - if ((e->flags & (EDGE_ABNORMAL | EDGE_ABNORMAL_CALL)) - && e->dest != EXIT_BLOCK_PTR) ---- gcc/cfgexpand.c (revision 140947) -+++ gcc/cfgexpand.c (revision 140948) -@@ -1316,7 +1316,12 @@ expand_gimple_cond_expr (basic_block bb, - add_reg_br_prob_note (last, true_edge->probability); - maybe_dump_rtl_for_tree_stmt (stmt, last); - if (true_edge->goto_locus) -- set_curr_insn_source_location (location_from_locus (true_edge->goto_locus)); -+ { -+ set_curr_insn_source_location (location_from_locus (true_edge->goto_locus)); -+ set_curr_insn_block (true_edge->goto_block); -+ true_edge->goto_locus = curr_insn_locator (); -+ } -+ true_edge->goto_block = NULL; - false_edge->flags |= EDGE_FALLTHRU; - return NULL; - } -@@ -1326,7 +1331,12 @@ expand_gimple_cond_expr (basic_block bb, - add_reg_br_prob_note (last, false_edge->probability); - maybe_dump_rtl_for_tree_stmt (stmt, last); - if (false_edge->goto_locus) -- set_curr_insn_source_location (location_from_locus (false_edge->goto_locus)); -+ { -+ set_curr_insn_source_location (location_from_locus (false_edge->goto_locus)); -+ set_curr_insn_block (false_edge->goto_block); -+ false_edge->goto_locus = curr_insn_locator (); -+ } -+ false_edge->goto_block = NULL; - true_edge->flags |= EDGE_FALLTHRU; - return NULL; - } -@@ -1334,6 +1344,13 @@ expand_gimple_cond_expr (basic_block bb, - jumpif (pred, label_rtx_for_bb (true_edge->dest)); - add_reg_br_prob_note (last, true_edge->probability); - last = get_last_insn (); -+ if (false_edge->goto_locus) -+ { -+ set_curr_insn_source_location (location_from_locus (false_edge->goto_locus)); -+ set_curr_insn_block (false_edge->goto_block); -+ false_edge->goto_locus = curr_insn_locator (); -+ } -+ false_edge->goto_block = NULL; - emit_jump (label_rtx_for_bb (false_edge->dest)); - - BB_END (bb) = last; -@@ -1356,9 +1373,13 @@ expand_gimple_cond_expr (basic_block bb, - - maybe_dump_rtl_for_tree_stmt (stmt, last2); - -- if (false_edge->goto_locus) -- set_curr_insn_source_location (location_from_locus (false_edge->goto_locus)); -- -+ if (true_edge->goto_locus) -+ { -+ set_curr_insn_source_location (location_from_locus (true_edge->goto_locus)); -+ set_curr_insn_block (true_edge->goto_block); -+ true_edge->goto_locus = curr_insn_locator (); -+ } -+ true_edge->goto_block = NULL; - return new_bb; - } - -@@ -1613,19 +1634,21 @@ expand_gimple_basic_block (basic_block b - } - } - -- /* Expand implicit goto. */ -+ /* Expand implicit goto and convert goto_locus. */ - FOR_EACH_EDGE (e, ei, bb->succs) - { -- if (e->flags & EDGE_FALLTHRU) -- break; -- } -- -- if (e && e->dest != bb->next_bb) -- { -- emit_jump (label_rtx_for_bb (e->dest)); -- if (e->goto_locus) -- set_curr_insn_source_location (location_from_locus (e->goto_locus)); -- e->flags &= ~EDGE_FALLTHRU; -+ if (e->goto_locus && e->goto_block) -+ { -+ set_curr_insn_source_location (location_from_locus (e->goto_locus)); -+ set_curr_insn_block (e->goto_block); -+ e->goto_locus = curr_insn_locator (); -+ } -+ e->goto_block = NULL; -+ if ((e->flags & EDGE_FALLTHRU) && e->dest != bb->next_bb) -+ { -+ emit_jump (label_rtx_for_bb (e->dest)); -+ e->flags &= ~EDGE_FALLTHRU; -+ } - } - - do_pending_stack_adjust (); ---- gcc/cfgcleanup.c (revision 140947) -+++ gcc/cfgcleanup.c (revision 140948) -@@ -429,7 +429,7 @@ try_forward_edges (int mode, basic_block - for (ei = ei_start (b->succs); (e = ei_safe_edge (ei)); ) - { - basic_block target, first; -- int counter; -+ int counter, goto_locus; - bool threaded = false; - int nthreaded_edges = 0; - bool may_thread = first_pass | df_get_bb_dirty (b); -@@ -447,6 +447,7 @@ try_forward_edges (int mode, basic_block - - target = first = e->dest; - counter = NUM_FIXED_BLOCKS; -+ goto_locus = e->goto_locus; - - /* If we are partitioning hot/cold basic_blocks, we don't want to mess - up jumps that cross between hot/cold sections. -@@ -476,6 +477,27 @@ try_forward_edges (int mode, basic_block - new_target = single_succ (target); - if (target == new_target) - counter = n_basic_blocks; -+ else if (!optimize) -+ { -+ /* When not optimizing, ensure that edges or forwarder -+ blocks with different locus are not optimized out. */ -+ int locus = single_succ_edge (target)->goto_locus; -+ -+ if (locus && goto_locus && locus != goto_locus) -+ counter = n_basic_blocks; -+ else if (locus) -+ goto_locus = locus; -+ -+ if (INSN_P (BB_END (target))) -+ { -+ locus = INSN_LOCATOR (BB_END (target)); -+ -+ if (locus && goto_locus && locus != goto_locus) -+ counter = n_basic_blocks; -+ else if (locus) -+ goto_locus = locus; -+ } -+ } - } - - /* Allow to thread only over one edge at time to simplify updating -@@ -539,6 +561,8 @@ try_forward_edges (int mode, basic_block - int edge_frequency; - int n = 0; - -+ e->goto_locus = goto_locus; -+ - /* Don't force if target is exit block. */ - if (threaded && target != EXIT_BLOCK_PTR) - { ---- gcc/cfglayout.c (revision 140947) -+++ gcc/cfglayout.c (revision 140948) -@@ -887,6 +887,46 @@ fixup_reorder_chain (void) - if (e && !can_fallthru (e->src, e->dest)) - force_nonfallthru (e); - } -+ -+ /* Ensure goto_locus from edges has some instructions with that locus -+ in RTL. */ -+ if (!optimize) -+ FOR_EACH_BB (bb) -+ { -+ edge e; -+ edge_iterator ei; -+ -+ FOR_EACH_EDGE (e, ei, bb->succs) -+ if (e->goto_locus && !(e->flags & EDGE_ABNORMAL)) -+ { -+ basic_block nb; -+ -+ if (simplejump_p (BB_END (e->src))) -+ { -+ if (INSN_LOCATOR (BB_END (e->src)) == (int) e->goto_locus) -+ continue; -+ if (INSN_LOCATOR (BB_END (e->src)) == 0) -+ { -+ INSN_LOCATOR (BB_END (e->src)) = e->goto_locus; -+ continue; -+ } -+ } -+ if (e->dest != EXIT_BLOCK_PTR) -+ { -+ insn = BB_HEAD (e->dest); -+ if (!INSN_P (insn)) -+ insn = next_insn (insn); -+ if (insn && INSN_P (insn) -+ && INSN_LOCATOR (insn) == (int) e->goto_locus) -+ continue; -+ } -+ nb = split_edge (e); -+ if (!INSN_P (BB_END (nb))) -+ BB_END (nb) = emit_insn_after_noloc (gen_nop (), BB_END (nb), -+ nb); -+ INSN_LOCATOR (BB_END (nb)) = e->goto_locus; -+ } -+ } - } - - /* Perform sanity checks on the insn chain. ---- gcc/basic-block.h (revision 140947) -+++ gcc/basic-block.h (revision 140948) -@@ -129,7 +129,8 @@ struct edge_def GTY(()) - /* Auxiliary info specific to a pass. */ - PTR GTY ((skip (""))) aux; - -- /* Location of any goto implicit in the edge, during tree-ssa. */ -+ /* Location of any goto implicit in the edge and associated BLOCK. */ -+ tree goto_block; - source_locus goto_locus; - - /* The index number corresponding to this edge in the edge vector ---- gcc/tree-cfg.c (revision 140947) -+++ gcc/tree-cfg.c (revision 140948) -@@ -634,6 +634,7 @@ make_cond_expr_edges (basic_block bb) - #else - e->goto_locus = EXPR_LOCUS (COND_EXPR_THEN (entry)); - #endif -+ e->goto_block = TREE_BLOCK (COND_EXPR_THEN (entry)); - e = make_edge (bb, else_bb, EDGE_FALSE_VALUE); - if (e) - { -@@ -642,6 +643,7 @@ make_cond_expr_edges (basic_block bb) - #else - e->goto_locus = EXPR_LOCUS (COND_EXPR_ELSE (entry)); - #endif -+ e->goto_block = TREE_BLOCK (COND_EXPR_ELSE (entry)); - } - - /* We do not need the gotos anymore. */ -@@ -841,6 +843,7 @@ make_goto_expr_edges (basic_block bb) - #else - e->goto_locus = EXPR_LOCUS (goto_t); - #endif -+ e->goto_block = TREE_BLOCK (goto_t); - bsi_remove (&last, true); - return; - } -@@ -5874,6 +5877,23 @@ move_block_to_fn (struct function *dest_ - update_stmt (stmt); - pop_cfun (); - } -+ -+ FOR_EACH_EDGE (e, ei, bb->succs) -+ if (e->goto_locus) -+ { -+ tree block = e->goto_block; -+ if (d->orig_block == NULL_TREE -+ || block == d->orig_block) -+ e->goto_block = d->new_block; -+#ifdef ENABLE_CHECKING -+ else if (block != d->new_block) -+ { -+ while (block && block != d->orig_block) -+ block = BLOCK_SUPERCONTEXT (block); -+ gcc_assert (block); -+ } -+#endif -+ } - } - - /* Examine the statements in BB (which is in SRC_CFUN); find and return ---- gcc/cfgrtl.c (revision 140947) -+++ gcc/cfgrtl.c (revision 140948) -@@ -1009,6 +1009,7 @@ force_nonfallthru_and_redirect (edge e, - rtx note; - edge new_edge; - int abnormal_edge_flags = 0; -+ int loc; - - /* In the case the last instruction is conditional jump to the next - instruction, first redirect the jump itself and then continue -@@ -1127,11 +1128,15 @@ force_nonfallthru_and_redirect (edge e, - else - jump_block = e->src; - -+ if (e->goto_locus && e->goto_block == NULL) -+ loc = e->goto_locus; -+ else -+ loc = 0; - e->flags &= ~EDGE_FALLTHRU; - if (target == EXIT_BLOCK_PTR) - { - #ifdef HAVE_return -- emit_jump_insn_after_noloc (gen_return (), BB_END (jump_block)); -+ emit_jump_insn_after_setloc (gen_return (), BB_END (jump_block), loc); - #else - gcc_unreachable (); - #endif -@@ -1139,7 +1144,7 @@ force_nonfallthru_and_redirect (edge e, - else - { - rtx label = block_label (target); -- emit_jump_insn_after_noloc (gen_jump (label), BB_END (jump_block)); -+ emit_jump_insn_after_setloc (gen_jump (label), BB_END (jump_block), loc); - JUMP_LABEL (BB_END (jump_block)) = label; - LABEL_NUSES (label)++; - } -@@ -2606,6 +2611,32 @@ cfg_layout_merge_blocks (basic_block a, - try_redirect_by_replacing_jump (EDGE_SUCC (a, 0), b, true); - gcc_assert (!JUMP_P (BB_END (a))); - -+ /* When not optimizing and the edge is the only place in RTL which holds -+ some unique locus, emit a nop with that locus in between. */ -+ if (!optimize && EDGE_SUCC (a, 0)->goto_locus) -+ { -+ rtx insn = BB_END (a); -+ int goto_locus = EDGE_SUCC (a, 0)->goto_locus; -+ -+ if (NOTE_P (insn)) -+ insn = prev_nonnote_insn (insn); -+ if (insn && INSN_P (insn) && INSN_LOCATOR (insn) == goto_locus) -+ goto_locus = 0; -+ else -+ { -+ insn = BB_HEAD (b); -+ if (!INSN_P (insn)) -+ insn = next_insn (insn); -+ if (insn && INSN_P (insn) && INSN_LOCATOR (insn) == goto_locus) -+ goto_locus = 0; -+ } -+ if (goto_locus) -+ { -+ BB_END (a) = emit_insn_after_noloc (gen_nop (), BB_END (a), a); -+ INSN_LOCATOR (BB_END (a)) = goto_locus; -+ } -+ } -+ - /* Possible line number notes should appear in between. */ - if (b->il.rtl->header) - { ---- gcc/testsuite/gcc.dg/debug/pr36690-1.c (revision 0) -+++ gcc/testsuite/gcc.dg/debug/pr36690-1.c (revision 140948) -@@ -0,0 +1,23 @@ -+/* PR debug/36690 */ -+/* Verify that break func is hit. -+ This version of the test just checks that it can be compiled, linked -+ and executed, further testing is done in corresponding gcc.dg/dwarf2/ -+ test and hopefully in gdb testsuite. */ -+/* { dg-do run } */ -+/* { dg-options "-O0 -g -dA" } */ -+ -+int i; -+ -+void -+func (void) -+{ -+ while (i == 1) -+ i = 0; -+} -+ -+int -+main (void) -+{ -+ func (); -+ return 0; -+} ---- gcc/testsuite/gcc.dg/debug/pr36690-2.c (revision 0) -+++ gcc/testsuite/gcc.dg/debug/pr36690-2.c (revision 140948) -@@ -0,0 +1,40 @@ -+/* PR debug/36690 */ -+/* Verify that breakpoint can be put on goto f1, it is hit and -+ varz at that spot is defined and contains 5. Nowhere else -+ in the function should be varz in the scope. -+ This version of the test just checks that it can be compiled, linked -+ and executed, further testing is done in corresponding gcc.dg/dwarf2/ -+ test and hopefully in gdb testsuite. */ -+/* { dg-do run } */ -+/* { dg-options "-O0 -g -dA" } */ -+ -+int cnt; -+ -+void -+bar (int i) -+{ -+ cnt += i; -+} -+ -+void -+foo (int i) -+{ -+ if (!i) -+ bar (0); -+ else -+ { -+ static int varz = 5; -+ goto f1; -+ } -+ bar (1); -+f1: -+ bar (2); -+} -+ -+int -+main (void) -+{ -+ foo (0); -+ foo (1); -+ return 0; -+} ---- gcc/testsuite/gcc.dg/debug/pr29609-1.c (revision 0) -+++ gcc/testsuite/gcc.dg/debug/pr29609-1.c (revision 140948) -@@ -0,0 +1,33 @@ -+/* PR debug/29609 */ -+/* Verify that breakpoint on the break is hit. -+ This version of the test just checks that it can be compiled, linked -+ and executed, further testing is done in corresponding gcc.dg/dwarf2/ -+ test and hopefully in gdb testsuite. */ -+/* { dg-do run } */ -+/* { dg-options "-O0 -g -dA" } */ -+ -+extern void abort (void); -+ -+int -+foo (void) -+{ -+ int a, i; -+ -+ for (i = 1; i <= 10; i++) -+ { -+ if (i < 3) -+ a = 1; -+ else -+ break; -+ a = 5; -+ } -+ return a; -+} -+ -+int -+main (void) -+{ -+ if (foo () != 5) -+ abort (); -+ return 0; -+} ---- gcc/testsuite/gcc.dg/debug/pr36690-3.c (revision 0) -+++ gcc/testsuite/gcc.dg/debug/pr36690-3.c (revision 140948) -@@ -0,0 +1,47 @@ -+/* PR debug/36690 */ -+/* { dg-do run } */ -+/* { dg-options "-O0 -g -dA" } */ -+ -+int cnt; -+ -+void -+bar (int i) -+{ -+ cnt += i; -+} -+ -+void -+foo (int i, int j) -+{ -+ if (j) -+ { -+ bar (i + 1); -+ goto f1; -+ } -+ bar (i + 2); -+ goto f2; -+f1: -+ if (i > 10) -+ goto f3; -+f2: -+ if (i > 40) -+ goto f4; -+ else -+ goto f5; -+f3: -+ bar (i); -+f4: -+ bar (i); -+f5: -+ bar (i); -+} -+ -+int -+main (void) -+{ -+ foo (0, 1); -+ foo (11, 1); -+ foo (21, 0); -+ foo (41, 0); -+ return 0; -+} ---- gcc/testsuite/gcc.dg/debug/pr29609-2.c (revision 0) -+++ gcc/testsuite/gcc.dg/debug/pr29609-2.c (revision 140948) -@@ -0,0 +1,53 @@ -+/* PR debug/29609 */ -+/* Verify that breakpoint on both goto failure; stmts is hit. -+ This version of the test just checks that it can be compiled, linked -+ and executed, further testing is done in corresponding gcc.dg/dwarf2/ -+ test and hopefully in gdb testsuite. */ -+/* { dg-do run } */ -+/* { dg-options "-O0 -g -dA" } */ -+ -+extern void abort (void); -+int x; -+ -+int -+foo (void) -+{ -+ return 0 ^ x; -+} -+ -+int -+bar (void) -+{ -+ return 1 ^ x; -+} -+ -+int -+baz (void) -+{ -+ int c; -+ -+ if (!foo ()) -+ goto failure; -+ -+ if (!bar ()) -+ goto failure; -+ -+ return 0; -+ -+failure: -+ return 1; -+} -+ -+int -+main (void) -+{ -+ if (baz () != 1) -+ abort (); -+ x = 1; -+ if (baz () != 1) -+ abort (); -+ x = 2; -+ if (baz () != 0) -+ abort (); -+ return 0; -+} ---- gcc/testsuite/gcc.dg/debug/dwarf2/pr36690-1.c (revision 0) -+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr36690-1.c (revision 140948) -@@ -0,0 +1,22 @@ -+/* PR debug/36690 */ -+/* Verify that break func is hit. */ -+/* { dg-do compile } */ -+/* { dg-options "-O0 -gdwarf-2 -dA" } */ -+ -+int i; -+ -+void -+func (void) -+{ -+ while (i == 1) -+ i = 0; -+} -+ -+int -+main (void) -+{ -+ func (); -+ return 0; -+} -+ -+/* { dg-final { scan-assembler "pr36690-1.c:11" } } */ ---- gcc/testsuite/gcc.dg/debug/dwarf2/pr36690-2.c (revision 0) -+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr36690-2.c (revision 140948) -@@ -0,0 +1,39 @@ -+/* PR debug/36690 */ -+/* Verify that breakpoint can be put on goto f1, it is hit and -+ varz at that spot is defined and contains 5. Nowhere else -+ in the function should be varz in the scope. */ -+/* { dg-do compile } */ -+/* { dg-options "-O0 -gdwarf-2 -dA" } */ -+ -+int cnt; -+ -+void -+bar (int i) -+{ -+ cnt += i; -+} -+ -+void -+foo (int i) -+{ -+ if (!i) -+ bar (0); -+ else -+ { -+ static int varz = 5; -+ goto f1; -+ } -+ bar (1); -+f1: -+ bar (2); -+} -+ -+int -+main (void) -+{ -+ foo (0); -+ foo (1); -+ return 0; -+} -+ -+/* { dg-final { scan-assembler "pr36690-2.c:24" } } */ ---- gcc/testsuite/gcc.dg/debug/dwarf2/pr29609-1.c (revision 0) -+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr29609-1.c (revision 140948) -@@ -0,0 +1,32 @@ -+/* PR debug/29609 */ -+/* Verify that breakpoint on the break is hit. */ -+/* { dg-do compile } */ -+/* { dg-options "-O0 -gdwarf-2 -dA" } */ -+ -+void abort (void); -+ -+int -+foo (void) -+{ -+ int a, i; -+ -+ for (i = 1; i <= 10; i++) -+ { -+ if (i < 3) -+ a = 1; -+ else -+ break; -+ a = 5; -+ } -+ return a; -+} -+ -+int -+main (void) -+{ -+ if (foo () != 5) -+ abort (); -+ return 0; -+} -+ -+/* { dg-final { scan-assembler "pr29609-1.c:18" } } */ ---- gcc/testsuite/gcc.dg/debug/dwarf2/pr36690-3.c (revision 0) -+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr36690-3.c (revision 140948) -@@ -0,0 +1,53 @@ -+/* PR debug/36690 */ -+/* { dg-do compile } */ -+/* { dg-options "-O0 -gdwarf-2 -dA" } */ -+ -+int cnt; -+ -+void -+bar (int i) -+{ -+ cnt += i; -+} -+ -+void -+foo (int i, int j) -+{ -+ if (j) -+ { -+ bar (i + 1); -+ goto f1; -+ } -+ bar (i + 2); -+ goto f2; -+f1: -+ if (i > 10) -+ goto f3; -+f2: -+ if (i > 40) -+ goto f4; -+ else -+ goto f5; -+f3: -+ bar (i); -+f4: -+ bar (i); -+f5: -+ bar (i); -+} -+ -+int -+main (void) -+{ -+ foo (0, 1); -+ foo (11, 1); -+ foo (21, 0); -+ foo (41, 0); -+ return 0; -+} -+ -+/* { dg-final { scan-assembler "pr36690-3.c:19" } } */ -+/* { dg-final { scan-assembler "pr36690-3.c:22" } } */ -+/* { dg-final { scan-assembler "pr36690-3.c:25" } } */ -+/* { dg-final { scan-assembler "pr36690-3.c:28" } } */ -+/* { dg-final { scan-assembler "pr36690-3.c:30" } } */ ---- gcc/testsuite/gcc.dg/debug/dwarf2/pr29609-2.c (revision 0) -+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr29609-2.c (revision 140948) -@@ -0,0 +1,53 @@ -+/* PR debug/29609 */ -+/* Verify that breakpoint on both goto failure; stmts is hit. */ -+/* { dg-do compile } */ -+/* { dg-options "-O0 -gdwarf-2 -dA" } */ -+ -+extern void abort (void); -+int x; -+ -+int -+foo (void) -+{ -+ return 0 ^ x; -+} -+ -+int -+bar (void) -+{ -+ return 1 ^ x; -+} -+ -+int -+baz (void) -+{ -+ int c; -+ -+ if (!foo ()) -+ goto failure; -+ -+ if (!bar ()) -+ goto failure; -+ -+ return 0; -+ -+failure: -+ return 1; -+} -+ -+int -+main (void) -+{ -+ if (baz () != 1) -+ abort (); -+ x = 1; -+ if (baz () != 1) -+ abort (); -+ x = 2; -+ if (baz () != 0) -+ abort (); -+ return 0; -+} -+ -+/* { dg-final { scan-assembler "pr29609-2.c:27" } } */ -+/* { dg-final { scan-assembler "pr29609-2.c:30" } } */ ---- gcc/testsuite/gcc.dg/debug/dwarf2/pr37616.c (revision 0) -+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr37616.c (revision 140948) -@@ -0,0 +1,41 @@ -+/* PR debug/37616 */ -+/* Test that one can put breakpoints onto continue, exitlab and break -+ and actually see program reaching those breakpoints. */ -+/* { dg-do compile } */ -+/* { dg-options "-O0 -gdwarf-2 -dA" } */ -+ -+extern void abort (void); -+ -+int -+foo (int parm) -+{ -+ int varj, varm; -+ -+ for (varj = 0; varj < 10; varj++) -+ { -+ if (varj == 5) -+ continue; -+ if (varj == 7 && !parm) -+ goto exitlab; -+ if (varj == 9) -+ break; -+ varm = varj; -+ } -+ -+exitlab: -+ return varm; -+} -+ -+int -+main (void) -+{ -+ if (foo (0) != 6) -+ abort (); -+ if (foo (1) != 8) -+ abort (); -+ return 0; -+} -+ -+/* { dg-final { scan-assembler "pr37616.c:17" } } */ -+/* { dg-final { scan-assembler "pr37616.c:19" } } */ -+/* { dg-final { scan-assembler "pr37616.c:21" } } */ ---- gcc/testsuite/gcc.dg/debug/pr37616.c (revision 0) -+++ gcc/testsuite/gcc.dg/debug/pr37616.c (revision 140948) -@@ -0,0 +1,40 @@ -+/* PR debug/37616 */ -+/* Test that one can put breakpoints onto continue, exitlab and break -+ and actually see program reaching those breakpoints. -+ This version of the test just checks that it can be compiled, linked -+ and executed, further testing is done in corresponding gcc.dg/dwarf2/ -+ test and hopefully in gdb testsuite. */ -+/* { dg-do run } */ -+/* { dg-options "-O0 -g -dA" } */ -+ -+extern void abort (void); -+ -+int -+foo (int parm) -+{ -+ int varj, varm; -+ -+ for (varj = 0; varj < 10; varj++) -+ { -+ if (varj == 5) -+ continue; -+ if (varj == 7 && !parm) -+ goto exitlab; -+ if (varj == 9) -+ break; -+ varm = varj; -+ } -+ -+exitlab: -+ return varm; -+} -+ -+int -+main (void) -+{ -+ if (foo (0) != 6) -+ abort (); -+ if (foo (1) != 8) -+ abort (); -+ return 0; -+} diff --git a/gcc43-pr34037.patch b/gcc43-pr34037.patch deleted file mode 100644 index 2c5a163..0000000 --- a/gcc43-pr34037.patch +++ /dev/null @@ -1,118 +0,0 @@ -2008-09-11 Jakub Jelinek - - PR debug/34037 - * gimplify.c (gimplify_type_sizes): When not optimizing, ensure - TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P - VAR_DECL. - * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL - !DECL_IGNORED_P vars in unexpanded_var_list list for instantiate_decls, - ggc_free other TREE_LIST nodes from that chain. - * function.c (instantiate_decls): Instantiate also DECL_RTL - of vars in cfun->unexpanded_var_list, free that list afterwards. - ---- gcc/gimplify.c.jj 2008-09-10 20:50:11.000000000 +0200 -+++ gcc/gimplify.c 2008-09-11 13:54:22.000000000 +0200 -@@ -7105,6 +7105,18 @@ gimplify_type_sizes (tree type, gimple_s - /* These types may not have declarations, so handle them here. */ - gimplify_type_sizes (TREE_TYPE (type), list_p); - gimplify_type_sizes (TYPE_DOMAIN (type), list_p); -+ /* When not optimizing, ensure VLA bounds aren't removed. */ -+ if (!optimize -+ && TYPE_DOMAIN (type) -+ && INTEGRAL_TYPE_P (TYPE_DOMAIN (type))) -+ { -+ t = TYPE_MIN_VALUE (TYPE_DOMAIN (type)); -+ if (t && TREE_CODE (t) == VAR_DECL && DECL_ARTIFICIAL (t)) -+ DECL_IGNORED_P (t) = 0; -+ t = TYPE_MAX_VALUE (TYPE_DOMAIN (type)); -+ if (t && TREE_CODE (t) == VAR_DECL && DECL_ARTIFICIAL (t)) -+ DECL_IGNORED_P (t) = 0; -+ } - break; - - case RECORD_TYPE: ---- gcc/cfgexpand.c.jj 2008-09-09 16:08:04.000000000 +0200 -+++ gcc/cfgexpand.c 2008-09-11 15:01:00.000000000 +0200 -@@ -1440,7 +1440,7 @@ estimated_stack_frame_size (void) - static void - expand_used_vars (void) - { -- tree t, outer_block = DECL_INITIAL (current_function_decl); -+ tree t, next, outer_block = DECL_INITIAL (current_function_decl); - - /* Compute the phase of the stack frame for this function. */ - { -@@ -1453,11 +1453,15 @@ expand_used_vars (void) - - /* At this point all variables on the unexpanded_var_list with TREE_USED - set are not associated with any block scope. Lay them out. */ -- for (t = cfun->unexpanded_var_list; t; t = TREE_CHAIN (t)) -+ t = cfun->unexpanded_var_list; -+ cfun->unexpanded_var_list = NULL_TREE; -+ for (; t; t = next) - { - tree var = TREE_VALUE (t); - bool expand_now = false; - -+ next = TREE_CHAIN (t); -+ - /* We didn't set a block for static or extern because it's hard - to tell the difference between a global variable (re)declared - in a local scope, and one that's really declared there to -@@ -1484,9 +1488,25 @@ expand_used_vars (void) - TREE_USED (var) = 1; - - if (expand_now) -- expand_one_var (var, true, true); -+ { -+ expand_one_var (var, true, true); -+ if (DECL_ARTIFICIAL (var) && !DECL_IGNORED_P (var)) -+ { -+ rtx rtl = DECL_RTL_IF_SET (var); -+ -+ /* Keep artificial non-ignored vars in cfun->unexpanded_var_list -+ chain until instantiate_decls. */ -+ if (rtl && (MEM_P (rtl) || GET_CODE (rtl) == CONCAT)) -+ { -+ TREE_CHAIN (t) = cfun->unexpanded_var_list; -+ cfun->unexpanded_var_list = t; -+ continue; -+ } -+ } -+ } -+ -+ ggc_free (t); - } -- cfun->unexpanded_var_list = NULL_TREE; - - /* At this point, all variables within the block tree with TREE_USED - set are actually used by the optimized function. Lay them out. */ ---- gcc/function.c.jj 2008-09-09 21:13:24.000000000 +0200 -+++ gcc/function.c 2008-09-11 14:56:47.000000000 +0200 -@@ -1645,7 +1645,7 @@ instantiate_decls_1 (tree let) - static void - instantiate_decls (tree fndecl) - { -- tree decl; -+ tree decl, t, next; - - /* Process all parameters of the function. */ - for (decl = DECL_ARGUMENTS (fndecl); decl; decl = TREE_CHAIN (decl)) -@@ -1661,6 +1661,17 @@ instantiate_decls (tree fndecl) - - /* Now process all variables defined in the function or its subblocks. */ - instantiate_decls_1 (DECL_INITIAL (fndecl)); -+ -+ t = cfun->unexpanded_var_list; -+ cfun->unexpanded_var_list = NULL_TREE; -+ for (; t; t = next) -+ { -+ next = TREE_CHAIN (t); -+ decl = TREE_VALUE (t); -+ if (DECL_RTL_SET_P (decl)) -+ instantiate_decl_rtl (DECL_RTL (decl)); -+ ggc_free (t); -+ } - } - - /* Pass through the INSNS of function FNDECL and convert virtual register diff --git a/gcc43-pr36741-revert.patch b/gcc43-pr36741-revert.patch deleted file mode 100644 index 5a67d96..0000000 --- a/gcc43-pr36741-revert.patch +++ /dev/null @@ -1,47 +0,0 @@ -Revert: -2008-08-28 Dodji Seketeli - - PR c++/36741 - * tree.c (int_fits_type_p): Don't forget unsigned integers - of type sizetype which higher end word equals -1. - - * g++.dg/other/new-size-type.C: New test. - ---- gcc/tree.c (revision 139711) -+++ gcc/tree.c (revision 139710) -@@ -6296,21 +6296,6 @@ int_fits_type_p (const_tree c, const_tre - for "unknown if constant fits", 0 for "constant known *not* to fit" and 1 - for "constant known to fit". */ - -- if (TREE_TYPE (c) == sizetype -- && TYPE_UNSIGNED (TREE_TYPE (c)) -- && TREE_INT_CST_HIGH (c) == -1 -- && !TREE_OVERFLOW (c)) -- /* So c is an unsigned integer which type is sizetype. -- sizetype'd integers are sign extended even though they are -- unsigned. If the integer value fits in the lower end word of c, -- and if the higher end word has all its bits set to 1, that -- means the higher end bits are set to 1 only for sign extension. -- So let's convert c into an equivalent zero extended unsigned -- integer. */ -- c = force_fit_type_double (size_type_node, -- TREE_INT_CST_LOW (c), -- TREE_INT_CST_HIGH (c), -- false, false); - /* Check if C >= type_low_bound. */ - if (type_low_bound && TREE_CODE (type_low_bound) == INTEGER_CST) - { ---- gcc/testsuite/g++.dg/other/new-size-type.C (revision 139711) -+++ gcc/testsuite/g++.dg/other/new-size-type.C (revision 139710) -@@ -1,10 +1,10 @@ - // Contributed by Dodji Seketeli - // Origin: PR c++/36741 - - #include - const char* - foo() - { -- return new char[~static_cast(0)];// { dg-bogus "large" } -+ return new char[~static_cast(0)];// { dg-bogus "large" "" { xfail *-*-* } } - } - diff --git a/gcc43-pr37189.patch b/gcc43-pr37189.patch deleted file mode 100644 index 2e61f3d..0000000 --- a/gcc43-pr37189.patch +++ /dev/null @@ -1,117 +0,0 @@ -2008-09-03 Jakub Jelinek - - PR c++/37189 - * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): New - extern decls. - * decl2.c (mark_used): If defer_mark_used_calls, push decl into - deferred_mark_used_calls vector and exit early. - * decl.c (defer_mark_used_calls, deferred_mark_used_calls): New - variables. - (finish_function): Set defer_mark_used_calls for the duration of the - function. Call mark_used on any queued decls. - - PR c++/37189 - * g++.dg/gomp/pr37189.C: New test. - ---- gcc/cp/decl2.c (revision 139954) -+++ gcc/cp/decl2.c (revision 139955) -@@ -3776,6 +3776,15 @@ mark_used (tree decl) - /* If we don't need a value, then we don't need to synthesize DECL. */ - if (skip_evaluation) - return; -+ -+ /* If within finish_function, defer the rest until that function -+ finishes, otherwise it might recurse. */ -+ if (defer_mark_used_calls) -+ { -+ VEC_safe_push (tree, gc, deferred_mark_used_calls, decl); -+ return; -+ } -+ - /* Normally, we can wait until instantiation-time to synthesize - DECL. However, if DECL is a static data member initialized with - a constant, we need the value right now because a reference to ---- gcc/cp/decl.c (revision 139954) -+++ gcc/cp/decl.c (revision 139955) -@@ -227,6 +227,11 @@ struct named_label_entry GTY(()) - function, two inside the body of a function in a local class, etc.) */ - int function_depth; - -+/* To avoid unwanted recursion, finish_function defers all mark_used calls -+ encountered during its execution until it finishes. */ -+bool defer_mark_used_calls; -+VEC(tree, gc) *deferred_mark_used_calls; -+ - /* States indicating how grokdeclarator() should handle declspecs marked - with __attribute__((deprecated)). An object declared as - __attribute__((deprecated)) suppresses warnings of uses of other -@@ -12033,6 +12038,9 @@ finish_function (int flags) - if (fndecl == NULL_TREE) - return error_mark_node; - -+ gcc_assert (!defer_mark_used_calls); -+ defer_mark_used_calls = true; -+ - if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fndecl) - && DECL_VIRTUAL_P (fndecl) - && !processing_template_decl) -@@ -12232,6 +12240,17 @@ finish_function (int flags) - cxx_pop_function_context and then reset via pop_function_context. */ - current_function_decl = NULL_TREE; - -+ defer_mark_used_calls = false; -+ if (deferred_mark_used_calls) -+ { -+ unsigned int i; -+ tree decl; -+ -+ for (i = 0; VEC_iterate (tree, deferred_mark_used_calls, i, decl); i++) -+ mark_used (decl); -+ VEC_free (tree, gc, deferred_mark_used_calls); -+ } -+ - return fndecl; - } - ---- gcc/cp/cp-tree.h (revision 139954) -+++ gcc/cp/cp-tree.h (revision 139955) -@@ -4381,6 +4381,9 @@ extern void initialize_artificial_var ( - extern tree check_var_type (tree, tree); - extern tree reshape_init (tree, tree); - -+extern bool defer_mark_used_calls; -+extern GTY(()) VEC(tree, gc) *deferred_mark_used_calls; -+ - /* in decl2.c */ - extern bool check_java_method (tree); - extern tree build_memfn_type (tree, tree, cp_cv_quals); ---- gcc/testsuite/g++.dg/gomp/pr37189.C (revision 0) -+++ gcc/testsuite/g++.dg/gomp/pr37189.C (revision 139955) -@@ -0,0 +1,27 @@ -+// PR c++/37189 -+// { dg-do compile } -+// { dg-options "-fopenmp" } -+ -+struct S -+{ -+ S () {} -+ S (S const &) {} -+}; -+ -+struct T -+{ -+ S s; -+}; -+ -+void -+bar (T &) -+{ -+} -+ -+int -+foo () -+{ -+ T t; -+ #pragma omp task -+ bar (t); -+} diff --git a/gcc43-pr37738.patch b/gcc43-pr37738.patch deleted file mode 100644 index 90c3235..0000000 --- a/gcc43-pr37738.patch +++ /dev/null @@ -1,276 +0,0 @@ -2008-10-07 Jakub Jelinek - - * f95-lang.c (poplevel): Don't clear BLOCK_VARS if functionbody. - * trans-decl.c (gfc_build_qualified_array): Build accurate debug type - even if nest. - (build_entry_thunks, gfc_generate_function_code, - gfc_generate_constructors): Ensure DECL_SAVED_TREE is a BIND_EXPR - with DECL_INITIAL as its BLOCK. - - PR debug/37738 - * dwarf2out.c (common_block_die_table): New variable. - (common_block_die_table_hash, common_block_die_table_eq): New - functions. - (gen_variable_die): Look up a DW_TAG_common_block die for a particular - COMMON block in the current scope rather than globally. Optimize - DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into - DW_OP_addr SYMBOL_REF+off. - - * gfortran.dg/debug/pr37738.f: New test. - ---- gcc/testsuite/gfortran.dg/debug/pr37738.f (revision 0) -+++ gcc/testsuite/gfortran.dg/debug/pr37738.f (revision 140945) -@@ -0,0 +1,30 @@ -+C PR debug/37738 -+C { dg-do compile } -+C { dg-skip-if "DWARF-2 only" { "*-*-*" } { "*" } { "-gdwarf-2" } } -+C { dg-options "-dA" } -+ -+ subroutine a -+ integer*4 a_i, c_i -+ common /block/a_i, c_i -+ a_i = 1 -+ c_i = 4 -+ end subroutine a -+ subroutine b -+ integer*4 b_i -+ common /block/b_i, d_i -+ b_i = 2 -+ d_i = 5 -+ end subroutine b -+ subroutine c -+ integer*4 a_i, c_i -+ common /block/a_i, c_i -+ if (a_i .ne. 2) call abort -+ if (c_i .ne. 5) call abort -+ end subroutine c -+ program abc -+ call a -+ call b -+ call c -+ end program abc -+ -+C { dg-final { scan-assembler-times "DIE\[^\n\]*DW_TAG_common_block" 3 } } ---- gcc/dwarf2out.c (revision 140943) -+++ gcc/dwarf2out.c (revision 140945) -@@ -4748,6 +4748,10 @@ static GTY((param_is (struct dwarf_file_ - The key is a DECL_UID() which is a unique number identifying each decl. */ - static GTY ((param_is (struct die_struct))) htab_t decl_die_table; - -+/* A hash table of references to DIE's that describe COMMON blocks. -+ The key is DECL_UID() ^ die_parent. */ -+static GTY ((param_is (struct die_struct))) htab_t common_block_die_table; -+ - /* Node of the variable location list. */ - struct var_loc_node GTY ((chain_next ("%h.next"))) - { -@@ -4960,6 +4964,8 @@ static void equate_type_number_to_die (t - static hashval_t decl_die_table_hash (const void *); - static int decl_die_table_eq (const void *, const void *); - static dw_die_ref lookup_decl_die (tree); -+static hashval_t common_block_die_table_hash (const void *); -+static int common_block_die_table_eq (const void *, const void *); - static hashval_t decl_loc_table_hash (const void *); - static int decl_loc_table_eq (const void *, const void *); - static var_loc_list *lookup_decl_loc (const_tree); -@@ -13812,6 +13818,26 @@ gen_subprogram_die (tree decl, dw_die_re - - } - -+/* Returns a hash value for X (which really is a die_struct). */ -+ -+static hashval_t -+common_block_die_table_hash (const void *x) -+{ -+ const_dw_die_ref d = (const_dw_die_ref) x; -+ return (hashval_t) d->decl_id ^ htab_hash_pointer (d->die_parent); -+} -+ -+/* Return nonzero if decl_id and die_parent of die_struct X is the same -+ as decl_id and die_parent of die_struct Y. */ -+ -+static int -+common_block_die_table_eq (const void *x, const void *y) -+{ -+ const_dw_die_ref d = (const_dw_die_ref) x; -+ const_dw_die_ref e = (const_dw_die_ref) y; -+ return d->decl_id == e->decl_id && d->die_parent == e->die_parent; -+} -+ - /* Generate a DIE to represent a declared data object. */ - - static void -@@ -13853,6 +13879,7 @@ gen_variable_die (tree decl, dw_die_ref - tree field; - dw_die_ref com_die; - dw_loc_descr_ref loc; -+ die_node com_die_arg; - - var_die = lookup_decl_die (decl); - if (var_die) -@@ -13863,21 +13890,41 @@ gen_variable_die (tree decl, dw_die_ref - if (loc) - { - if (off) -- add_loc_descr (&loc, new_loc_descr (DW_OP_plus_uconst, -+ { -+ /* Optimize the common case. */ -+ if (loc->dw_loc_opc == DW_OP_addr -+ && loc->dw_loc_next == NULL -+ && GET_CODE (loc->dw_loc_oprnd1.v.val_addr) -+ == SYMBOL_REF) -+ loc->dw_loc_oprnd1.v.val_addr -+ = plus_constant (loc->dw_loc_oprnd1.v.val_addr, off); -+ else -+ add_loc_descr (&loc, -+ new_loc_descr (DW_OP_plus_uconst, - off, 0)); -+ } - add_AT_loc (var_die, DW_AT_location, loc); - remove_AT (var_die, DW_AT_declaration); - } - } - return; - } -+ -+ if (common_block_die_table == NULL) -+ common_block_die_table -+ = htab_create_ggc (10, common_block_die_table_hash, -+ common_block_die_table_eq, NULL); -+ - field = TREE_OPERAND (DECL_VALUE_EXPR (decl), 0); -- com_die = lookup_decl_die (com_decl); -+ com_die_arg.decl_id = DECL_UID (com_decl); -+ com_die_arg.die_parent = context_die; -+ com_die = (dw_die_ref) htab_find (common_block_die_table, &com_die_arg); - loc = loc_descriptor_from_tree (com_decl); - if (com_die == NULL) - { - const char *cnam - = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (com_decl)); -+ void **slot; - - com_die = new_die (DW_TAG_common_block, context_die, decl); - add_name_and_src_coords_attributes (com_die, com_decl); -@@ -13891,7 +13938,9 @@ gen_variable_die (tree decl, dw_die_ref - else if (DECL_EXTERNAL (decl)) - add_AT_flag (com_die, DW_AT_declaration, 1); - add_pubname_string (cnam, com_die); /* ??? needed? */ -- equate_decl_number_to_die (com_decl, com_die); -+ com_die->decl_id = DECL_UID (com_decl); -+ slot = htab_find_slot (common_block_die_table, com_die, INSERT); -+ *slot = (void *) com_die; - } - else if (get_AT (com_die, DW_AT_location) == NULL && loc) - { -@@ -13907,7 +13956,17 @@ gen_variable_die (tree decl, dw_die_ref - if (loc) - { - if (off) -- add_loc_descr (&loc, new_loc_descr (DW_OP_plus_uconst, off, 0)); -+ { -+ /* Optimize the common case. */ -+ if (loc->dw_loc_opc == DW_OP_addr -+ && loc->dw_loc_next == NULL -+ && GET_CODE (loc->dw_loc_oprnd1.v.val_addr) == SYMBOL_REF) -+ loc->dw_loc_oprnd1.v.val_addr -+ = plus_constant (loc->dw_loc_oprnd1.v.val_addr, off); -+ else -+ add_loc_descr (&loc, new_loc_descr (DW_OP_plus_uconst, -+ off, 0)); -+ } - add_AT_loc (var_die, DW_AT_location, loc); - } - else if (DECL_EXTERNAL (decl)) ---- gcc/fortran/f95-lang.c (revision 140943) -+++ gcc/fortran/f95-lang.c (revision 140945) -@@ -457,14 +457,8 @@ poplevel (int keep, int reverse, int fun - current_binding_level = current_binding_level->level_chain; - - if (functionbody) -- { -- /* This is the top level block of a function. The ..._DECL chain stored -- in BLOCK_VARS are the function's parameters (PARM_DECL nodes). Don't -- leave them in the BLOCK because they are found in the FUNCTION_DECL -- instead. */ -- DECL_INITIAL (current_function_decl) = block_node; -- BLOCK_VARS (block_node) = 0; -- } -+ /* This is the top level block of a function. */ -+ DECL_INITIAL (current_function_decl) = block_node; - else if (current_binding_level == global_binding_level) - /* When using gfc_start_block/gfc_finish_block from middle-end hooks, - don't add newly created BLOCKs as sublocks of global_binding_level. */ ---- gcc/fortran/trans-decl.c (revision 140943) -+++ gcc/fortran/trans-decl.c (revision 140945) -@@ -704,7 +704,7 @@ gfc_build_qualified_array (tree decl, gf - layout_type (type); - } - -- if (nest || write_symbols == NO_DEBUG) -+ if (write_symbols == NO_DEBUG) - return; - - if (TYPE_NAME (type) != NULL_TREE -@@ -1761,7 +1761,7 @@ build_entry_thunks (gfc_namespace * ns) - - thunk_fndecl = thunk_sym->backend_decl; - -- gfc_start_block (&body); -+ gfc_init_block (&body); - - /* Pass extra parameter identifying this entry point. */ - tmp = build_int_cst (gfc_array_index_type, el->id); -@@ -1869,8 +1869,12 @@ build_entry_thunks (gfc_namespace * ns) - - /* Finish off this function and send it for code generation. */ - DECL_SAVED_TREE (thunk_fndecl) = gfc_finish_block (&body); -+ tmp = getdecls (); - poplevel (1, 0, 1); - BLOCK_SUPERCONTEXT (DECL_INITIAL (thunk_fndecl)) = thunk_fndecl; -+ DECL_SAVED_TREE (thunk_fndecl) -+ = build3_v (BIND_EXPR, tmp, DECL_SAVED_TREE (thunk_fndecl), -+ DECL_INITIAL (thunk_fndecl)); - - /* Output the GENERIC tree. */ - dump_function (TDI_original, thunk_fndecl); -@@ -3652,7 +3656,7 @@ gfc_generate_function_code (gfc_namespac - - trans_function_start (sym); - -- gfc_start_block (&block); -+ gfc_init_block (&block); - - if (ns->entries && ns->proc_name->ts.type == BT_CHARACTER) - { -@@ -3886,11 +3890,16 @@ gfc_generate_function_code (gfc_namespac - saved_function_decls = NULL_TREE; - - DECL_SAVED_TREE (fndecl) = gfc_finish_block (&block); -+ decl = getdecls (); - - /* Finish off this function and send it for code generation. */ - poplevel (1, 0, 1); - BLOCK_SUPERCONTEXT (DECL_INITIAL (fndecl)) = fndecl; - -+ DECL_SAVED_TREE (fndecl) -+ = build3_v (BIND_EXPR, decl, DECL_SAVED_TREE (fndecl), -+ DECL_INITIAL (fndecl)); -+ - /* Output the GENERIC tree. */ - dump_function (TDI_original, fndecl); - -@@ -3969,9 +3978,13 @@ gfc_generate_constructors (void) - DECL_SAVED_TREE (fndecl) = build_stmt (EXPR_STMT, tmp); - } - -+ decl = getdecls (); - poplevel (1, 0, 1); - - BLOCK_SUPERCONTEXT (DECL_INITIAL (fndecl)) = fndecl; -+ DECL_SAVED_TREE (fndecl) -+ = build3_v (BIND_EXPR, decl, DECL_SAVED_TREE (fndecl), -+ DECL_INITIAL (fndecl)); - - free_after_parsing (cfun); - free_after_compilation (cfun); diff --git a/gcc43-pr37858.patch b/gcc43-pr37858.patch deleted file mode 100644 index 21fa405..0000000 --- a/gcc43-pr37858.patch +++ /dev/null @@ -1,32 +0,0 @@ -2008-11-03 Jakub Jelinek - - PR middle-end/37858 - * passes.c (execute_one_pass): Don't look at cfun->curr_properties - for ipa and simple ipa passes. - - * gcc.dg/pr37858.c: New test. - ---- gcc/passes.c (revision 141544) -+++ gcc/passes.c (revision 141545) -@@ -1289,6 +1289,7 @@ execute_one_pass (struct opt_pass *pass) - if (initializing_dump - && dump_file - && graph_dump_format != no_graph -+ && cfun - && (cfun->curr_properties & (PROP_cfg | PROP_rtl)) - == (PROP_cfg | PROP_rtl)) - { ---- gcc/testsuite/gcc.dg/pr37858.c (revision 0) -+++ gcc/testsuite/gcc.dg/pr37858.c (revision 141545) -@@ -0,0 +1,11 @@ -+/* PR middle-end/37858 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -fdump-ipa-early_local_cleanups -dv" } */ -+ -+int -+main (void) -+{ -+ return 0; -+} -+ -+/* { dg-final { cleanup-ipa-dump "early_local_cleanups" } } */ diff --git a/gcc43-pr37870.patch b/gcc43-pr37870.patch deleted file mode 100644 index 3e43d4f..0000000 --- a/gcc43-pr37870.patch +++ /dev/null @@ -1,79 +0,0 @@ -2008-10-29 Jakub Jelinek - - PR middle-end/37870 - * expmed.c (extract_bit_field_1): If int_mode_for_mode returns - BLKmode for non-memory, convert using a wider MODE_INT mode - or through memory. - - * gcc.target/i386/pr37870.c: New test. - ---- gcc/expmed.c (revision 141429) -+++ gcc/expmed.c (revision 141430) -@@ -1278,9 +1278,8 @@ extract_bit_field_1 (rtx str_rtx, unsign - { - if (MEM_P (op0)) - op0 = adjust_address (op0, imode, 0); -- else -+ else if (imode != BLKmode) - { -- gcc_assert (imode != BLKmode); - op0 = gen_lowpart (imode, op0); - - /* If we got a SUBREG, force it into a register since we -@@ -1288,6 +1287,24 @@ extract_bit_field_1 (rtx str_rtx, unsign - if (GET_CODE (op0) == SUBREG) - op0 = force_reg (imode, op0); - } -+ else if (REG_P (op0)) -+ { -+ rtx reg, subreg; -+ imode = smallest_mode_for_size (GET_MODE_BITSIZE (GET_MODE (op0)), -+ MODE_INT); -+ reg = gen_reg_rtx (imode); -+ subreg = gen_lowpart_SUBREG (GET_MODE (op0), reg); -+ emit_move_insn (subreg, op0); -+ op0 = reg; -+ bitnum += SUBREG_BYTE (subreg) * BITS_PER_UNIT; -+ } -+ else -+ { -+ rtx mem = assign_stack_temp (GET_MODE (op0), -+ GET_MODE_SIZE (GET_MODE (op0)), 0); -+ emit_move_insn (mem, op0); -+ op0 = adjust_address (mem, BLKmode, 0); -+ } - } - } - ---- gcc/testsuite/gcc.target/i386/pr37870.c (revision 0) -+++ gcc/testsuite/gcc.target/i386/pr37870.c (revision 141430) -@@ -0,0 +1,29 @@ -+/* PR middle-end/37870 */ -+/* { dg-do run } */ -+/* { dg-options "-O2" } */ -+ -+unsigned int -+foo (long double x) -+{ -+ struct { char a[8]; unsigned int b:7; } c; -+ __builtin_memcpy (&c, &x, sizeof (c)); -+ return c.b; -+} -+ -+unsigned int -+bar (long double x) -+{ -+ union { struct { char a[8]; unsigned int b:7; } c; long double d; } u; -+ u.d = x; -+ return u.c.b; -+} -+ -+int -+main (void) -+{ -+ if (foo (1.245L) != bar (1.245L) -+ || foo (245.67L) != bar (245.67L) -+ || foo (0.00567L) != bar (0.00567L)) -+ __builtin_abort (); -+ return 0; -+} diff --git a/gcc43-pr37879.patch b/gcc43-pr37879.patch deleted file mode 100644 index a6deb97..0000000 --- a/gcc43-pr37879.patch +++ /dev/null @@ -1,59 +0,0 @@ -2008-10-27 Jakub Jelinek - - PR tree-optimization/37879 - * predict.c (tree_estimate_probability): Check if last_stmt is - non-NULL before dereferencing it. - - * gcc.dg/pr37879.c: New test. - ---- gcc/predict.c (revision 141389) -+++ gcc/predict.c (revision 141390) -@@ -1374,6 +1374,7 @@ tree_estimate_probability (void) - { - edge e; - edge_iterator ei; -+ tree last; - - FOR_EACH_EDGE (e, ei, bb->succs) - { -@@ -1396,7 +1397,8 @@ tree_estimate_probability (void) - && e->dest != EXIT_BLOCK_PTR - && single_succ_p (e->dest) - && single_succ_edge (e->dest)->dest == EXIT_BLOCK_PTR -- && TREE_CODE (last_stmt (e->dest)) == RETURN_EXPR) -+ && (last = last_stmt (e->dest)) != NULL_TREE -+ && TREE_CODE (last) == RETURN_EXPR) - { - edge e1; - edge_iterator ei1; ---- gcc/testsuite/gcc.dg/pr37879.c (revision 0) -+++ gcc/testsuite/gcc.dg/pr37879.c (revision 141390) -@@ -0,0 +1,28 @@ -+/* PR tree-optimization/37879 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2" } */ -+ -+static inline void bar (int) __attribute__ ((noreturn)); -+void baz () __attribute__ ((noreturn)); -+ -+inline int -+foo (int i) -+{ -+ return i; -+} -+ -+int i = 23; -+static inline void -+bar (int j) -+{ -+ if (j) -+ asm (""); -+} /* { dg-warning "does return" } */ -+ -+void -+baz () -+{ -+ int j; -+ bar (foo (j = i++)); -+ asm (""); -+} diff --git a/gcc43-pr37924.patch b/gcc43-pr37924.patch deleted file mode 100644 index 62baac2..0000000 --- a/gcc43-pr37924.patch +++ /dev/null @@ -1,106 +0,0 @@ -2008-10-28 Jakub Jelinek - - PR c/37924 - * combine.c (make_compound_operation): Don't call make_extraction with - non-positive length. - (simplify_shift_const_1): Canonicalize count even if complement_p. - - * gcc.c-torture/execute/pr37924.c: New test. - ---- gcc/combine.c (revision 141412) -+++ gcc/combine.c (revision 141413) -@@ -7024,7 +7024,8 @@ make_compound_operation (rtx x, enum rtx - if (GET_CODE (rhs) == CONST_INT - && GET_CODE (lhs) == ASHIFT - && GET_CODE (XEXP (lhs, 1)) == CONST_INT -- && INTVAL (rhs) >= INTVAL (XEXP (lhs, 1))) -+ && INTVAL (rhs) >= INTVAL (XEXP (lhs, 1)) -+ && INTVAL (rhs) < mode_width) - { - new = make_compound_operation (XEXP (lhs, 0), next_code); - new = make_extraction (mode, new, -@@ -7044,6 +7045,7 @@ make_compound_operation (rtx x, enum rtx - && (OBJECT_P (SUBREG_REG (lhs)))) - && GET_CODE (rhs) == CONST_INT - && INTVAL (rhs) < HOST_BITS_PER_WIDE_INT -+ && INTVAL (rhs) < mode_width - && (new = extract_left_shift (lhs, INTVAL (rhs))) != 0) - new = make_extraction (mode, make_compound_operation (new, next_code), - 0, NULL_RTX, mode_width - INTVAL (rhs), -@@ -9023,11 +9025,6 @@ simplify_shift_const_1 (enum rtx_code co - if (GET_CODE (varop) == CLOBBER) - return NULL_RTX; - -- /* If we discovered we had to complement VAROP, leave. Making a NOT -- here would cause an infinite loop. */ -- if (complement_p) -- break; -- - /* Convert ROTATERT to ROTATE. */ - if (code == ROTATERT) - { -@@ -9073,6 +9070,11 @@ simplify_shift_const_1 (enum rtx_code co - } - } - -+ /* If we discovered we had to complement VAROP, leave. Making a NOT -+ here would cause an infinite loop. */ -+ if (complement_p) -+ break; -+ - /* An arithmetic right shift of a quantity known to be -1 or 0 - is a no-op. */ - if (code == ASHIFTRT ---- gcc/testsuite/gcc.c-torture/execute/pr37924.c (revision 0) -+++ gcc/testsuite/gcc.c-torture/execute/pr37924.c (revision 141413) -@@ -0,0 +1,50 @@ -+/* PR c/37924 */ -+ -+extern void abort (void); -+ -+signed char a; -+unsigned char b; -+ -+int -+test1 (void) -+{ -+ int c = -1; -+ return ((unsigned int) (a ^ c)) >> 9; -+} -+ -+int -+test2 (void) -+{ -+ int c = -1; -+ return ((unsigned int) (b ^ c)) >> 9; -+} -+ -+int -+main (void) -+{ -+ a = 0; -+ if (test1 () != (-1U >> 9)) -+ abort (); -+ a = 0x40; -+ if (test1 () != (-1U >> 9)) -+ abort (); -+ a = 0x80; -+ if (test1 () != (a < 0) ? 0 : (-1U >> 9)) -+ abort (); -+ a = 0xff; -+ if (test1 () != (a < 0) ? 0 : (-1U >> 9)) -+ abort (); -+ b = 0; -+ if (test2 () != (-1U >> 9)) -+ abort (); -+ b = 0x40; -+ if (test2 () != (-1U >> 9)) -+ abort (); -+ b = 0x80; -+ if (test2 () != (-1U >> 9)) -+ abort (); -+ b = 0xff; -+ if (test2 () != (-1U >> 9)) -+ abort (); -+ return 0; -+} diff --git a/gcc43-rh251682.patch b/gcc43-rh251682.patch deleted file mode 100644 index e96ae6f..0000000 --- a/gcc43-rh251682.patch +++ /dev/null @@ -1,89 +0,0 @@ -2008-04-01 Jakub Jelinek - - PR pch/13675 - * files.c (struct _cpp_file): Remove pch field. - (pch_open_file): Don't set file->pch, just file->pchname. - (should_stack_file): After pfile->cb.read_pch call - free pchname and clear pchname, don't close file->fd. - Test file->pchname instead of file->pch. Don't close fd after cb. - (_cpp_stack_include): Test file->pchname instead of file->pch. - - * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f). - ---- libcpp/files.c.jj 2008-02-18 23:50:17.000000000 +0100 -+++ libcpp/files.c 2008-03-31 15:59:01.000000000 +0200 -@@ -106,9 +106,6 @@ struct _cpp_file - - /* If BUFFER above contains the true contents of the file. */ - bool buffer_valid; -- -- /* File is a PCH (on return from find_include_file). */ -- bool pch; - }; - - /* A singly-linked list for all searches for a given file name, with -@@ -322,9 +319,7 @@ pch_open_file (cpp_reader *pfile, _cpp_f - } - closedir (pchdir); - } -- if (valid) -- file->pch = true; -- else -+ if (!valid) - *invalid_pch = true; - } - -@@ -703,11 +698,12 @@ should_stack_file (cpp_reader *pfile, _c - return false; - - /* Handle PCH files immediately; don't stack them. */ -- if (file->pch) -+ if (file->pchname) - { - pfile->cb.read_pch (pfile, file->pchname, file->fd, file->path); -- close (file->fd); - file->fd = -1; -+ free ((void *) file->pchname); -+ file->pchname = NULL; - return false; - } - -@@ -916,7 +912,7 @@ _cpp_stack_include (cpp_reader *pfile, c - complicates LAST_SOURCE_LINE_LOCATION. This does not apply if we - found a PCH file (in which case linemap_add is not called) or we - were included from the command-line. */ -- if (! file->pch && file->err_no == 0 && type != IT_CMDLINE) -+ if (file->pchname == NULL && file->err_no == 0 && type != IT_CMDLINE) - pfile->line_table->highest_location--; - - return _cpp_stack_file (pfile, file, type == IT_IMPORT); ---- gcc/c-pch.c.jj 2008-02-18 23:46:08.000000000 +0100 -+++ gcc/c-pch.c 2008-03-31 15:56:00.000000000 +0200 -@@ -372,6 +372,7 @@ c_common_read_pch (cpp_reader *pfile, co - if (f == NULL) - { - cpp_errno (pfile, CPP_DL_ERROR, "calling fdopen"); -+ close (fd); - return; - } - -@@ -380,6 +381,7 @@ c_common_read_pch (cpp_reader *pfile, co - if (fread (&h, sizeof (h), 1, f) != 1) - { - cpp_errno (pfile, CPP_DL_ERROR, "reading"); -+ fclose (f); - return; - } - -@@ -425,7 +427,10 @@ c_common_read_pch (cpp_reader *pfile, co - gt_pch_restore (f); - - if (cpp_read_state (pfile, name, f, smd) != 0) -- return; -+ { -+ fclose (f); -+ return; -+ } - - fclose (f); - diff --git a/gcc43-x86_64-va_start.patch b/gcc43-x86_64-va_start.patch deleted file mode 100644 index efa06bc..0000000 --- a/gcc43-x86_64-va_start.patch +++ /dev/null @@ -1,355 +0,0 @@ -2008-09-02 H.J. Lu - Jakub Jelinek - - * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed. - (setup_incoming_varargs_64): Set/check ix86_varargs_gpr_size and - ix86_varargs_fpr_size. Use ix86_varargs_gpr_size instead of - REGPARM_MAX. Don't set ix86_save_varrargs_registers. - (ix86_va_start): Check ix86_varargs_gpr_size and - ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and - cfun->va_list_fpr_size, respectively. Subtract 8*REGPARM_MAX - from frame pointer if ix86_varargs_gpr_size == 0. - (ix86_compute_frame_layout): Updated. - * config/i386/i386.h (ix86_save_varrargs_registers): Removed. - (ix86_varargs_gpr_size): Define. - (ix86_varargs_fpr_size): Likewise. - (machine_function): Remove save_varrargs_registers. - Add varargs_gpr_size and varargs_fpr_size. - - * gcc.target/i386/amd64-abi-3.c: New test. - * gcc.target/i386/amd64-abi-4.c: Likewise. - * gcc.target/i386/amd64-abi-5.c: Likewise. - * gcc.target/i386/amd64-abi-6.c: Likewise. - ---- gcc/config/i386/i386.h (revision 139909) -+++ gcc/config/i386/i386.h (revision 139910) -@@ -2440,7 +2440,8 @@ struct machine_function GTY(()) - struct stack_local_entry *stack_locals; - const char *some_ld_name; - rtx force_align_arg_pointer; -- int save_varrargs_registers; -+ int varargs_gpr_size; -+ int varargs_fpr_size; - int accesses_prev_frame; - int optimize_mode_switching[MAX_386_ENTITIES]; - int needs_cld; -@@ -2463,7 +2464,8 @@ struct machine_function GTY(()) - }; - - #define ix86_stack_locals (cfun->machine->stack_locals) --#define ix86_save_varrargs_registers (cfun->machine->save_varrargs_registers) -+#define ix86_varargs_gpr_size (cfun->machine->varargs_gpr_size) -+#define ix86_varargs_fpr_size (cfun->machine->varargs_fpr_size) - #define ix86_optimize_mode_switching (cfun->machine->optimize_mode_switching) - #define ix86_current_function_needs_cld (cfun->machine->needs_cld) - #define ix86_tls_descriptor_calls_expanded_in_cfun \ ---- gcc/config/i386/i386.c (revision 139909) -+++ gcc/config/i386/i386.c (revision 139910) -@@ -1616,9 +1616,6 @@ rtx ix86_compare_op0 = NULL_RTX; - rtx ix86_compare_op1 = NULL_RTX; - rtx ix86_compare_emitted = NULL_RTX; - --/* Size of the register save area. */ --#define X86_64_VARARGS_SIZE (REGPARM_MAX * UNITS_PER_WORD + SSE_REGPARM_MAX * 16) -- - /* Define the structure for the machine field in struct function. */ - - struct stack_local_entry GTY(()) -@@ -4976,11 +4973,22 @@ setup_incoming_varargs_64 (CUMULATIVE_AR - alias_set_type set; - int i; - -- if (! cfun->va_list_gpr_size && ! cfun->va_list_fpr_size) -+ /* GPR size of varargs save area. */ -+ if (cfun->va_list_gpr_size) -+ ix86_varargs_gpr_size = REGPARM_MAX * UNITS_PER_WORD; -+ else -+ ix86_varargs_gpr_size = 0; -+ -+ /* FPR size of varargs save area. We don't need it if we don't pass -+ anything in SSE registers. */ -+ if (cum->sse_nregs && cfun->va_list_fpr_size) -+ ix86_varargs_fpr_size = SSE_REGPARM_MAX * 16; -+ else -+ ix86_varargs_fpr_size = 0; -+ -+ if (! ix86_varargs_gpr_size && ! ix86_varargs_fpr_size) - return; - -- /* Indicate to allocate space on the stack for varargs save area. */ -- ix86_save_varrargs_registers = 1; - /* We need 16-byte stack alignment to save SSE registers. If user - asked for lower preferred_stack_boundary, lets just hope that he knows - what he is doing and won't varargs SSE values. -@@ -5006,7 +5014,7 @@ setup_incoming_varargs_64 (CUMULATIVE_AR - x86_64_int_parameter_registers[i])); - } - -- if (cum->sse_nregs && cfun->va_list_fpr_size) -+ if (ix86_varargs_fpr_size) - { - /* Now emit code to save SSE registers. The AX parameter contains number - of SSE parameter registers used to call this function. We use -@@ -5041,7 +5049,7 @@ setup_incoming_varargs_64 (CUMULATIVE_AR - tmp_reg = gen_reg_rtx (Pmode); - emit_insn (gen_rtx_SET (VOIDmode, tmp_reg, - plus_constant (save_area, -- 8 * REGPARM_MAX + 127))); -+ ix86_varargs_gpr_size + 127))); - mem = gen_rtx_MEM (BLKmode, plus_constant (tmp_reg, -127)); - MEM_NOTRAP_P (mem) = 1; - set_mem_alias_set (mem, set); -@@ -5145,7 +5153,7 @@ ix86_va_start (tree valist, rtx nextarg) - expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); - } - -- if (cfun->va_list_fpr_size) -+ if (TARGET_SSE && cfun->va_list_fpr_size) - { - type = TREE_TYPE (fpr); - t = build2 (GIMPLE_MODIFY_STMT, type, fpr, -@@ -5164,12 +5172,15 @@ ix86_va_start (tree valist, rtx nextarg) - TREE_SIDE_EFFECTS (t) = 1; - expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); - -- if (cfun->va_list_gpr_size || cfun->va_list_fpr_size) -+ if (ix86_varargs_gpr_size || ix86_varargs_fpr_size) - { - /* Find the register save area. - Prologue of the function save it right above stack frame. */ - type = TREE_TYPE (sav); - t = make_tree (type, frame_pointer_rtx); -+ if (!ix86_varargs_gpr_size) -+ t = build2 (POINTER_PLUS_EXPR, type, t, -+ size_int (-8 * REGPARM_MAX)); - t = build2 (GIMPLE_MODIFY_STMT, type, sav, t); - TREE_SIDE_EFFECTS (t) = 1; - expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); -@@ -6079,13 +6090,8 @@ ix86_compute_frame_layout (struct ix86_f - offset += frame->nregs * UNITS_PER_WORD; - - /* Va-arg area */ -- if (ix86_save_varrargs_registers) -- { -- offset += X86_64_VARARGS_SIZE; -- frame->va_arg_size = X86_64_VARARGS_SIZE; -- } -- else -- frame->va_arg_size = 0; -+ frame->va_arg_size = ix86_varargs_gpr_size + ix86_varargs_fpr_size; -+ offset += frame->va_arg_size; - - /* Align start of frame for local function. */ - frame->padding1 = ((offset + stack_alignment_needed - 1) ---- gcc/testsuite/gcc.target/i386/amd64-abi-3.c (revision 0) -+++ gcc/testsuite/gcc.target/i386/amd64-abi-3.c (revision 139910) -@@ -0,0 +1,18 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target lp64 } */ -+/* { dg-options "-O2 -mno-sse" } */ -+/* { dg-final { scan-assembler "subq\[\\t \]*\\\$88,\[\\t \]*%rsp" } } */ -+/* { dg-final { scan-assembler-not "subq\[\\t \]*\\\$216,\[\\t \]*%rsp" } } */ -+ -+#include -+ -+void foo (va_list va_arglist); -+ -+void -+test (int a1, ...) -+{ -+ va_list va_arglist; -+ va_start (va_arglist, a1); -+ foo (va_arglist); -+ va_end (va_arglist); -+} ---- gcc/testsuite/gcc.target/i386/amd64-abi-5.c (revision 0) -+++ gcc/testsuite/gcc.target/i386/amd64-abi-5.c (revision 139910) -@@ -0,0 +1,64 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target lp64 } */ -+/* { dg-options "-O2" } */ -+ -+#include -+#include -+ -+int n1 = 30; -+double n2 = 324; -+double n3 = 39494.94; -+double n4 = 407; -+double n5 = 32.304; -+double n6 = 394.14; -+double n7 = 4.07; -+double n8 = 32.4; -+double n9 = 314.194; -+double n10 = 0.1407; -+ -+int e1; -+double e2; -+double e3; -+double e4; -+double e5; -+double e6; -+double e7; -+double e8; -+double e9; -+double e10; -+ -+static void -+__attribute__((noinline)) -+test (int a1, ...) -+{ -+ e1 = a1; -+ va_list va_arglist; -+ va_start (va_arglist, a1); -+ e2 = va_arg (va_arglist, double); -+ e3 = va_arg (va_arglist, double); -+ e4 = va_arg (va_arglist, double); -+ e5 = va_arg (va_arglist, double); -+ e6 = va_arg (va_arglist, double); -+ e7 = va_arg (va_arglist, double); -+ e8 = va_arg (va_arglist, double); -+ e9 = va_arg (va_arglist, double); -+ e10 = va_arg (va_arglist, double); -+ va_end (va_arglist); -+} -+ -+int -+main () -+{ -+ test (n1, n2, n3, n4, n5, n6, n7, n8, n9, n10); -+ assert (n1 == e1); -+ assert (n2 == e2); -+ assert (n3 == e3); -+ assert (n4 == e4); -+ assert (n5 == e5); -+ assert (n6 == e6); -+ assert (n7 == e7); -+ assert (n8 == e8); -+ assert (n9 == e9); -+ assert (n10 == e10); -+ return 0; -+} ---- gcc/testsuite/gcc.target/i386/amd64-abi-4.c (revision 0) -+++ gcc/testsuite/gcc.target/i386/amd64-abi-4.c (revision 139910) -@@ -0,0 +1,47 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target lp64 } */ -+/* { dg-options "-O2 -mno-sse" } */ -+ -+#include -+#include -+ -+int n1 = 30; -+int n2 = 324; -+void *n3 = (void *) &n2; -+int n4 = 407; -+ -+int e1; -+int e2; -+void *e3; -+int e4; -+ -+static void -+__attribute__((noinline)) -+foo (va_list va_arglist) -+{ -+ e2 = va_arg (va_arglist, int); -+ e3 = va_arg (va_arglist, void *); -+ e4 = va_arg (va_arglist, int); -+} -+ -+static void -+__attribute__((noinline)) -+test (int a1, ...) -+{ -+ e1 = a1; -+ va_list va_arglist; -+ va_start (va_arglist, a1); -+ foo (va_arglist); -+ va_end (va_arglist); -+} -+ -+int -+main () -+{ -+ test (n1, n2, n3, n4); -+ assert (n1 == e1); -+ assert (n2 == e2); -+ assert (n3 == e3); -+ assert (n4 == e4); -+ return 0; -+} ---- gcc/testsuite/gcc.target/i386/amd64-abi-6.c (revision 0) -+++ gcc/testsuite/gcc.target/i386/amd64-abi-6.c (revision 139910) -@@ -0,0 +1,71 @@ -+/* { dg-do run } */ -+/* { dg-require-effective-target lp64 } */ -+/* { dg-options "-O2" } */ -+ -+#include -+#include -+ -+int n1 = 30; -+double n2 = 324; -+double n3 = 39494.94; -+double n4 = 407; -+double n5 = 32.304; -+double n6 = 394.14; -+double n7 = 4.07; -+double n8 = 32.4; -+double n9 = 314.194; -+double n10 = 0.1407; -+ -+int e1; -+double e2; -+double e3; -+double e4; -+double e5; -+double e6; -+double e7; -+double e8; -+double e9; -+double e10; -+ -+static void -+__attribute__((noinline)) -+foo (va_list va_arglist) -+{ -+ e2 = va_arg (va_arglist, double); -+ e3 = va_arg (va_arglist, double); -+ e4 = va_arg (va_arglist, double); -+ e5 = va_arg (va_arglist, double); -+ e6 = va_arg (va_arglist, double); -+ e7 = va_arg (va_arglist, double); -+ e8 = va_arg (va_arglist, double); -+ e9 = va_arg (va_arglist, double); -+ e10 = va_arg (va_arglist, double); -+} -+ -+static void -+__attribute__((noinline)) -+test (int a1, ...) -+{ -+ va_list va_arglist; -+ e1 = a1; -+ va_start (va_arglist, a1); -+ foo (va_arglist); -+ va_end (va_arglist); -+} -+ -+int -+main () -+{ -+ test (n1, n2, n3, n4, n5, n6, n7, n8, n9, n10); -+ assert (n1 == e1); -+ assert (n2 == e2); -+ assert (n3 == e3); -+ assert (n4 == e4); -+ assert (n5 == e5); -+ assert (n6 == e6); -+ assert (n7 == e7); -+ assert (n8 == e8); -+ assert (n9 == e9); -+ assert (n10 == e10); -+ return 0; -+} diff --git a/gcc43-build-id.patch b/gcc44-build-id.patch similarity index 68% rename from gcc43-build-id.patch rename to gcc44-build-id.patch index 3f9a415..f76f939 100644 --- a/gcc43-build-id.patch +++ b/gcc44-build-id.patch @@ -3,8 +3,6 @@ * config/rs6000/sysv4.h (LINK_EH_SPEC): Add --build-id for non-relocatable link. * config/linux.h (LINK_EH_SPEC): Likewise. - * config/sparc/linux.h (LINK_EH_SPEC): Likewise. - * config/sparc/linux64.h (LINK_EH_SPEC): Likewise. * config/alpha/elf.h (LINK_EH_SPEC): Likewise. * config/ia64/linux.h (LINK_EH_SPEC): Likewise. @@ -30,37 +28,17 @@ #endif /* Define this so we can compile MS code for use with WINE. */ ---- gcc/config/sparc/linux64.h.~1~ -+++ gcc/config/sparc/linux64.h -@@ -316,7 +316,7 @@ do { \ - #define DITF_CONVERSION_LIBFUNCS 1 - - #if defined(HAVE_LD_EH_FRAME_HDR) --#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} " - #endif - - #ifdef HAVE_AS_TLS ---- gcc/config/sparc/linux.h.~1~ -+++ gcc/config/sparc/linux.h -@@ -188,7 +188,7 @@ do { \ - #define DITF_CONVERSION_LIBFUNCS 1 - - #if defined(HAVE_LD_EH_FRAME_HDR) --#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} " - #endif - - #ifdef HAVE_AS_TLS --- gcc/config/alpha/elf.h.~1~ +++ gcc/config/alpha/elf.h -@@ -453,5 +453,5 @@ extern int alpha_this_gpdisp_sequence_nu +@@ -421,7 +421,7 @@ extern int alpha_this_gpdisp_sequence_nu I imagine that other systems will catch up. In the meantime, it doesn't harm to make sure that the data exists to be used later. */ #if defined(HAVE_LD_EH_FRAME_HDR) -#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " +#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} " #endif + + /* A C statement (sans semicolon) to output to the stdio stream STREAM --- gcc/config/ia64/linux.h.~1~ +++ gcc/config/ia64/linux.h @@ -56,7 +56,7 @@ do { \ diff --git a/gcc43-c++-builtin-redecl.patch b/gcc44-c++-builtin-redecl.patch similarity index 100% rename from gcc43-c++-builtin-redecl.patch rename to gcc44-c++-builtin-redecl.patch diff --git a/gcc44-hack.patch b/gcc44-hack.patch new file mode 100644 index 0000000..4880b12 --- /dev/null +++ b/gcc44-hack.patch @@ -0,0 +1,113 @@ +--- libada/Makefile.in.jj 2009-01-14 12:07:35.000000000 +0100 ++++ libada/Makefile.in 2009-01-15 14:25:33.000000000 +0100 +@@ -66,17 +66,39 @@ target_noncanonical:=@target_noncanonica + version := $(shell cat $(srcdir)/../gcc/BASE-VER) + libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) + ++DEFAULTMULTIFLAGS := ++ifeq ($(MULTISUBDIR),) ++targ:=$(subst -, ,$(target)) ++arch:=$(word 1,$(targ)) ++ifeq ($(words $(targ)),2) ++osys:=$(word 2,$(targ)) ++else ++osys:=$(word 3,$(targ)) ++endif ++ifeq ($(strip $(filter-out i%86 x86_64 powerpc% ppc% s390% sparc% linux%, $(arch) $(osys))),) ++ifeq ($(shell $(CC) $(CFLAGS) -print-multi-os-directory),../lib64) ++DEFAULTMULTIFLAGS := -m64 ++else ++ifeq ($(strip $(filter-out s390%, $(arch))),) ++DEFAULTMULTIFLAGS := -m31 ++else ++DEFAULTMULTIFLAGS := -m32 ++endif ++endif ++endif ++endif ++ + # exeext should not be used because it's the *host* exeext. We're building + # a *target* library, aren't we?!? Likewise for CC. Still, provide bogus + # definitions just in case something slips through the safety net provided + # by recursive make invocations in gcc/ada/Makefile.in + LIBADA_FLAGS_TO_PASS = \ + "MAKEOVERRIDES=" \ +- "LDFLAGS=$(LDFLAGS)" \ ++ "LDFLAGS=$(strip $(LDFLAGS) $(DEFAULTMULTIFLAGS))" \ + "LN_S=$(LN_S)" \ + "SHELL=$(SHELL)" \ +- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \ +- "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \ ++ "GNATLIBFLAGS=$(strip $(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS))" \ ++ "GNATLIBCFLAGS=$(strip $(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS))" \ + "TARGET_LIBGCC2_CFLAGS=$(TARGET_LIBGCC2_CFLAGS)" \ + "THREAD_KIND=$(THREAD_KIND)" \ + "TRACE=$(TRACE)" \ +@@ -87,7 +109,7 @@ LIBADA_FLAGS_TO_PASS = \ + "exeext=.exeext.should.not.be.used " \ + 'CC=the.host.compiler.should.not.be.needed' \ + "GCC_FOR_TARGET=$(CC)" \ +- "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" ++ "CFLAGS=$(strip $(CFLAGS) $(DEFAULTMULTIFLAGS) $(WARN_CFLAGS))" + + # Rules to build gnatlib. + .PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared oscons +--- libjava/classpath/native/plugin/gcjwebplugin.cc.jj 2009-01-14 12:08:34.000000000 +0100 ++++ libjava/classpath/native/plugin/gcjwebplugin.cc 2009-01-15 21:20:17.000000000 +0100 +@@ -45,7 +45,7 @@ exception statement from your version. * + + // Netscape plugin API includes. + #include +-#include ++#include + + // GLib includes. + #include +@@ -827,7 +827,7 @@ GCJ_URLNotify (NPP instance, const char* + PLUGIN_DEBUG ("GCJ_URLNotify return"); + } + +-jref ++void * + GCJ_GetJavaClass (void) + { + PLUGIN_DEBUG ("GCJ_GetJavaClass"); +@@ -1669,17 +1669,17 @@ NP_Initialize (NPNetscapeFuncs* browserT + // Return to the browser the plugin functions that we implement. + pluginTable->version = (NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR; + pluginTable->size = sizeof (NPPluginFuncs); +- pluginTable->newp = NewNPP_NewProc (GCJ_New); +- pluginTable->destroy = NewNPP_DestroyProc (GCJ_Destroy); +- pluginTable->setwindow = NewNPP_SetWindowProc (GCJ_SetWindow); +- pluginTable->newstream = NewNPP_NewStreamProc (GCJ_NewStream); +- pluginTable->destroystream = NewNPP_DestroyStreamProc (GCJ_DestroyStream); +- pluginTable->asfile = NewNPP_StreamAsFileProc (GCJ_StreamAsFile); +- pluginTable->writeready = NewNPP_WriteReadyProc (GCJ_WriteReady); +- pluginTable->write = NewNPP_WriteProc (GCJ_Write); +- pluginTable->print = NewNPP_PrintProc (GCJ_Print); +- pluginTable->urlnotify = NewNPP_URLNotifyProc (GCJ_URLNotify); +- pluginTable->getvalue = NewNPP_GetValueProc (GCJ_GetValue); ++ pluginTable->newp = (NPP_NewProcPtr) (GCJ_New); ++ pluginTable->destroy = (NPP_DestroyProcPtr) (GCJ_Destroy); ++ pluginTable->setwindow = (NPP_SetWindowProcPtr) (GCJ_SetWindow); ++ pluginTable->newstream = (NPP_NewStreamProcPtr) (GCJ_NewStream); ++ pluginTable->destroystream = (NPP_DestroyStreamProcPtr) (GCJ_DestroyStream); ++ pluginTable->asfile = (NPP_StreamAsFileProcPtr) (GCJ_StreamAsFile); ++ pluginTable->writeready = (NPP_WriteReadyProcPtr) (GCJ_WriteReady); ++ pluginTable->write = (NPP_WriteProcPtr) (GCJ_Write); ++ pluginTable->print = (NPP_PrintProcPtr) (GCJ_Print); ++ pluginTable->urlnotify = (NPP_URLNotifyProcPtr) (GCJ_URLNotify); ++ pluginTable->getvalue = (NPP_GetValueProcPtr) (GCJ_GetValue); + + initialized = true; + +--- gcc/ada/make.adb 2008-11-07 23:00:32.000000000 +0100 ++++ gcc/ada/make.adb 2009-01-16 17:55:02.000000000 +0100 +@@ -8039,6 +8039,7 @@ package body Make is + or else Argv (2 .. Argv'Last) = "pg" + or else (Argv (2) = 'm' and then Argv'Last > 2) + or else (Argv (2) = 'f' and then Argv'Last > 2) ++ or else (Argv'Last >= 8 and then Argv (2 .. 8) = "-param=") + then + Add_Switch (Argv, Compiler, And_Save => And_Save); + Add_Switch (Argv, Linker, And_Save => And_Save); diff --git a/gcc43-i386-libgomp.patch b/gcc44-i386-libgomp.patch similarity index 91% rename from gcc43-i386-libgomp.patch rename to gcc44-i386-libgomp.patch index 2ad3b24..5d1eea8 100644 --- a/gcc43-i386-libgomp.patch +++ b/gcc44-i386-libgomp.patch @@ -35,8 +35,8 @@ hardware isn't supported because NPTL doesn't support it anyway. #include #include #include -+#if defined __i386__ && !defined _GLIBCXX_ATOMIC_BUILTINS -+# define _GLIBCXX_ATOMIC_BUILTINS 1 ++#if defined __i386__ && !defined _GLIBCXX_ATOMIC_BUILTINS_4 ++# define _GLIBCXX_ATOMIC_BUILTINS_4 1 +# define __sync_val_compare_and_swap(a, b, c) \ + ({ \ + typedef char sltast[sizeof (*a) == sizeof (int) ? 1 : -1]; \ @@ -57,5 +57,5 @@ hardware isn't supported because NPTL doesn't support it anyway. + }) +#endif #if defined(__GTHREADS) && defined(__GTHREAD_HAS_COND) \ - && defined(_GLIBCXX_ATOMIC_BUILTINS) && defined(_GLIBCXX_HAVE_LINUX_FUTEX) + && defined(_GLIBCXX_ATOMIC_BUILTINS_4) && defined(_GLIBCXX_HAVE_LINUX_FUTEX) # include diff --git a/gcc43-ia64-libunwind.patch b/gcc44-ia64-libunwind.patch similarity index 100% rename from gcc43-ia64-libunwind.patch rename to gcc44-ia64-libunwind.patch diff --git a/gcc43-java-debug-iface-type.patch b/gcc44-java-debug-iface-type.patch similarity index 100% rename from gcc43-java-debug-iface-type.patch rename to gcc44-java-debug-iface-type.patch diff --git a/gcc43-java-nomulti.patch b/gcc44-java-nomulti.patch similarity index 91% rename from gcc43-java-nomulti.patch rename to gcc44-java-nomulti.patch index f07ead8..17334aa 100644 --- a/gcc43-java-nomulti.patch +++ b/gcc44-java-nomulti.patch @@ -16,8 +16,8 @@ --- libjava/configure.jj 2007-12-07 17:55:50.000000000 +0100 +++ libjava/configure 2007-12-07 18:39:58.000000000 +0100 -@@ -1018,6 +1018,8 @@ Optional Features: - --enable-gconf-peer compile GConf native peers for util.preferences +@@ -1021,6 +1021,8 @@ Optional Features: + default=yes --enable-java-maintainer-mode allow rebuilding of .class and .h files + --enable-libjava-multilib @@ -25,7 +25,7 @@ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-maintainer-mode enable make rules and dependencies not useful -@@ -1848,6 +1850,16 @@ else +@@ -1973,6 +1975,16 @@ else fi diff --git a/gcc43-libgomp-omp_h-multilib.patch b/gcc44-libgomp-omp_h-multilib.patch similarity index 100% rename from gcc43-libgomp-omp_h-multilib.patch rename to gcc44-libgomp-omp_h-multilib.patch diff --git a/gcc43-libtool-no-rpath.patch b/gcc44-libtool-no-rpath.patch similarity index 100% rename from gcc43-libtool-no-rpath.patch rename to gcc44-libtool-no-rpath.patch diff --git a/gcc43-ppc32-retaddr.patch b/gcc44-ppc32-retaddr.patch similarity index 100% rename from gcc43-ppc32-retaddr.patch rename to gcc44-ppc32-retaddr.patch diff --git a/gcc43-pr27898.patch b/gcc44-pr27898.patch similarity index 100% rename from gcc43-pr27898.patch rename to gcc44-pr27898.patch diff --git a/gcc43-pr32139.patch b/gcc44-pr32139.patch similarity index 100% rename from gcc43-pr32139.patch rename to gcc44-pr32139.patch diff --git a/gcc43-pr33763.patch b/gcc44-pr33763.patch similarity index 94% rename from gcc43-pr33763.patch rename to gcc44-pr33763.patch index 9e9c90d..86c8ac7 100644 --- a/gcc43-pr33763.patch +++ b/gcc44-pr33763.patch @@ -12,9 +12,9 @@ --- gcc/tree-inline.c.jj 2007-11-06 09:29:04.000000000 +0100 +++ gcc/tree-inline.c 2007-11-06 16:19:12.000000000 +0100 -@@ -2582,6 +2582,12 @@ expand_call_inline (basic_block bb, tree - if (!cgraph_inline_p (cg_edge, &reason)) - { +@@ -3157,6 +3157,12 @@ expand_call_inline (basic_block bb, gimp + goto egress; + if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn)) + /* For extern inline functions that get redefined we always + silently ignored alway_inline flag. Better behaviour would @@ -23,7 +23,7 @@ + the body. */ + && !cg_edge->callee->local.redefined_extern_inline /* Avoid warnings during early inline pass. */ - && (!flag_unit_at_a_time || cgraph_global_info_ready)) + && cgraph_global_info_ready) { --- gcc/testsuite/gcc.dg/pr33763.c.jj 2007-11-06 16:19:12.000000000 +0100 +++ gcc/testsuite/gcc.dg/pr33763.c 2007-11-06 16:19:12.000000000 +0100 diff --git a/gcc43-rh330771.patch b/gcc44-rh330771.patch similarity index 100% rename from gcc43-rh330771.patch rename to gcc44-rh330771.patch diff --git a/gcc43-rh341221.patch b/gcc44-rh341221.patch similarity index 88% rename from gcc43-rh341221.patch rename to gcc44-rh341221.patch index 28e73b0..1f5ff91 100644 --- a/gcc43-rh341221.patch +++ b/gcc44-rh341221.patch @@ -6,9 +6,9 @@ --- libjava/classpath/doc/Makefile.am.jj 2007-12-07 17:55:00.000000000 +0100 +++ libjava/classpath/doc/Makefile.am 2007-12-07 18:55:28.000000000 +0100 -@@ -30,7 +30,7 @@ TOOLS_MANFILES = \ - gserialver.1 \ - gtnameserv.1 +@@ -31,7 +31,7 @@ TOOLS_MANFILES = \ + gtnameserv.1 \ + gjdoc.1 -POD2MAN = pod2man --center="GNU" --release="$(VERSION)" +POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')" @@ -17,9 +17,9 @@ --- libjava/classpath/doc/Makefile.in.jj 2007-12-07 17:55:00.000000000 +0100 +++ libjava/classpath/doc/Makefile.in 2007-12-07 18:55:43.000000000 +0100 -@@ -357,7 +357,7 @@ TOOLS_MANFILES = \ - gserialver.1 \ - gtnameserv.1 +@@ -382,7 +382,7 @@ TOOLS_MANFILES = \ + gtnameserv.1 \ + gjdoc.1 -POD2MAN = pod2man --center="GNU" --release="$(VERSION)" +POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')" diff --git a/gcc43-sparc-config-detection.patch b/gcc44-sparc-config-detection.patch similarity index 79% rename from gcc43-sparc-config-detection.patch rename to gcc44-sparc-config-detection.patch index 4ee95d4..cc3cb41 100644 --- a/gcc43-sparc-config-detection.patch +++ b/gcc44-sparc-config-detection.patch @@ -1,21 +1,21 @@ --- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500 +++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500 -@@ -2343,7 +2343,7 @@ sparc-*-elf*) +@@ -2175,7 +2175,7 @@ sparc-*-elf*) + tmake_file="sparc/t-elf sparc/t-crtfm" extra_parts="crti.o crtn.o crtbegin.o crtend.o" - use_fixproto=yes ;; -sparc-*-linux*) # SPARC's running GNU/Linux, libc6 +sparc-*-linux* | sparcv9*-*-linux*) # SPARC's running GNU/Linux, libc6 - tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux.h" + tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h" extra_options="${extra_options} sparc/long-double-switch.opt" - tmake_file="${tmake_file} sparc/t-linux sparc/t-crtfm" -@@ -2477,7 +2477,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd* + tmake_file="${tmake_file} sparc/t-linux" +@@ -2287,7 +2287,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd* + *) echo "$with_cpu not supported for freebsd target"; exit 1 ;; esac - need_64bit_hwint=yes ;; -sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux +sparc64*-*-linux*) # 64-bit SPARC's running GNU/Linux - tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux64.h" + tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h sparc/linux64.h" extra_options="${extra_options} sparc/long-double-switch.opt" tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm" --- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500 diff --git a/import.log b/import.log new file mode 100644 index 0000000..c2040a3 --- /dev/null +++ b/import.log @@ -0,0 +1 @@ +gcc-4_4_0-0_3:HEAD:gcc-4.4.0-0.3.src.rpm:1232130841 diff --git a/sources b/sources index 042742f..27264af 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -eb9ce8c6f929283bc91c93a6087e8ced gcc-4.3.2-20081105.tar.bz2 -92a70f9e56223b653bce0f58f90cf950 fastjar-0.95.tar.gz +2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz +0fafcb0d23d420c978ab253702094ada gcc-4.4.0-20090115.tar.bz2