Compare commits
25 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
1a553a9b75 | ||
|
10c2deba1c | ||
|
37242838cf | ||
|
62ab2a7e6a | ||
|
6a4afb791a | ||
|
74b02e66d0 | ||
|
837cf30304 | ||
|
30d99f0e2c | ||
|
d266a563d9 | ||
|
c2cec65b77 | ||
|
72541ade18 | ||
|
18b821470e | ||
|
e353bdf70d | ||
|
7673a11d74 | ||
|
927fb5cb0e | ||
|
22888b3c67 | ||
|
9834bb7938 | ||
|
2bdb06cea2 | ||
|
5d988eaf97 | ||
|
c2547f9762 | ||
|
384ba4880b | ||
|
f2fb531df3 | ||
|
c1037e4cad | ||
|
87e4ffffc9 | ||
|
33116016ca |
12
.gitignore
vendored
12
.gitignore
vendored
@ -19,3 +19,15 @@
|
|||||||
/gcc-4.9.1-20140717.tar.bz2
|
/gcc-4.9.1-20140717.tar.bz2
|
||||||
/gcc-4.9.1-20140801.tar.bz2
|
/gcc-4.9.1-20140801.tar.bz2
|
||||||
/gcc-4.9.1-20140807.tar.bz2
|
/gcc-4.9.1-20140807.tar.bz2
|
||||||
|
/gcc-4.9.1-20140813.tar.bz2
|
||||||
|
/gcc-4.9.1-20140815.tar.bz2
|
||||||
|
/gcc-4.9.1-20140912.tar.bz2
|
||||||
|
/gcc-4.9.1-20140922.tar.bz2
|
||||||
|
/gcc-4.9.1-20140930.tar.bz2
|
||||||
|
/gcc-4.9.1-20141017.tar.bz2
|
||||||
|
/gcc-4.9.1-20141024.tar.bz2
|
||||||
|
/gcc-4.9.2-20141101.tar.bz2
|
||||||
|
/gcc-4.9.2-20141212.tar.bz2
|
||||||
|
/gcc-4.9.2-20141217.tar.bz2
|
||||||
|
/gcc-4.9.2-20150107.tar.bz2
|
||||||
|
/gcc-4.9.2-20150212.tar.bz2
|
||||||
|
35
STAGE1-gcc
Normal file
35
STAGE1-gcc
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
srpm gcc
|
||||||
|
mcd $BUILDDIR/gcc
|
||||||
|
|
||||||
|
# These are for gcc cross-tools (politics sometime result in slightly
|
||||||
|
# different arch names)
|
||||||
|
GCC_CONFIGARGS="--prefix=$PREFIX
|
||||||
|
--libdir=$PREFIX/lib${SUFFIX}
|
||||||
|
--target=$TARGET
|
||||||
|
${GCC_CONFIG_EXTRA}
|
||||||
|
--enable-languages=c,c++
|
||||||
|
--with-sysroot=$ROOTFS
|
||||||
|
--with-build-sysroot=$ROOTFS
|
||||||
|
--cache-file=config.cache
|
||||||
|
--disable-bootstrap
|
||||||
|
--enable-threads=posix
|
||||||
|
--enable-64-bit-bfd
|
||||||
|
--disable-lto
|
||||||
|
$WITHPPL
|
||||||
|
"
|
||||||
|
|
||||||
|
# prefill gcc cache
|
||||||
|
echo 'lt_cv_shlibpath_overrides_runpath=no' > config.cache
|
||||||
|
echo 'gcc_cv_libc_provides_ssp=yes' >> config.cache
|
||||||
|
|
||||||
|
if [ ! "$BUILDER_ARCH" = "$TARGET_ARCH" ]; then
|
||||||
|
WITH_HEADERS="--with-headers=$ROOTFS/usr/include"
|
||||||
|
fi
|
||||||
|
|
||||||
|
$SRC/gcc-*/configure $GCC_CONFIGARGS $WITH_HEADERS
|
||||||
|
notparallel
|
||||||
|
make $J
|
||||||
|
make $J install
|
||||||
|
mcd $ROOTFS/lib${SUFFIX}/gcc
|
||||||
|
rsync -av $PREFIX/lib${SUFFIX}/gcc/ $ROOTFS/lib${SUFFIX}/gcc/
|
||||||
|
rsync -av $PREFIX/$TARGET/lib/ $ROOTFS/lib${SUFFIX}/
|
48
STAGE1-gcc-host
Normal file
48
STAGE1-gcc-host
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
srpm gcc
|
||||||
|
mcd $BUILDDIR/gcc-host
|
||||||
|
|
||||||
|
# These are for gcc cross-tools (politics sometime result in slightly
|
||||||
|
# different arch names)
|
||||||
|
GCC_CONFIGARGS="--prefix=$PREFIX
|
||||||
|
--libdir=$PREFIX/lib${SUFFIX}
|
||||||
|
--target=$TARGET
|
||||||
|
${GCC_CONFIG_EXTRA}
|
||||||
|
--enable-languages=c,c++
|
||||||
|
--with-sysroot=$ROOTFS
|
||||||
|
--with-build-sysroot=$ROOTFS
|
||||||
|
--cache-file=config.cache
|
||||||
|
--disable-bootstrap
|
||||||
|
--enable-threads=posix
|
||||||
|
--enable-64-bit-bfd
|
||||||
|
--disable-lto
|
||||||
|
$WITHPPL
|
||||||
|
"
|
||||||
|
|
||||||
|
# prefill gcc cache
|
||||||
|
echo 'lt_cv_shlibpath_overrides_runpath=no' > config.cache
|
||||||
|
echo 'gcc_cv_libc_provides_ssp=yes' >> config.cache
|
||||||
|
|
||||||
|
if [ ! "$BUILDER_ARCH" = "$TARGET_ARCH" ]; then
|
||||||
|
WITH_HEADERS="--with-headers=$ROOTFS/usr/include"
|
||||||
|
fi
|
||||||
|
|
||||||
|
$SRC/gcc-*/configure $GCC_CONFIGARGS $WITH_HEADERS
|
||||||
|
notparallel
|
||||||
|
|
||||||
|
# Pass gcc_cv_libc_provides_ssp down, because the config.cache
|
||||||
|
# version is not passed down to the gcc subdir.
|
||||||
|
make $J all-host gcc_cv_libc_provides_ssp=yes
|
||||||
|
make $J install-host gcc_cv_libc_provides_ssp=yes
|
||||||
|
|
||||||
|
|
||||||
|
if false; then
|
||||||
|
mkdirp $ROOTFS/usr/lib${SUFFIX}
|
||||||
|
for o in crt Scrt1 crti crtbegin crtbeginS crtend crtendS crtn
|
||||||
|
do
|
||||||
|
$TARGET-gcc -nostdlib -nostartfiles -c -x c /dev/null -c -o $ROOTFS/usr/lib${SUFFIX}/$o.o
|
||||||
|
done
|
||||||
|
for so in gcc gcc_s c
|
||||||
|
do
|
||||||
|
$TARGET-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o $ROOTFS/usr/lib${SUFFIX}/lib$so.so
|
||||||
|
done
|
||||||
|
fi
|
34
STAGE1-gcc-libgcc
Normal file
34
STAGE1-gcc-libgcc
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
srpm gcc
|
||||||
|
mcd $BUILDDIR/gcc-libgcc
|
||||||
|
|
||||||
|
# These are for gcc cross-tools (politics sometime result in slightly
|
||||||
|
# different arch names)
|
||||||
|
GCC_CONFIGARGS="--prefix=$PREFIX
|
||||||
|
--libdir=$PREFIX/lib${SUFFIX}
|
||||||
|
--target=$TARGET
|
||||||
|
${GCC_CONFIG_EXTRA}
|
||||||
|
--enable-languages=c,c++
|
||||||
|
--with-sysroot=$ROOTFS
|
||||||
|
--with-build-sysroot=$ROOTFS
|
||||||
|
--cache-file=config.cache
|
||||||
|
--disable-bootstrap
|
||||||
|
--enable-threads=posix
|
||||||
|
--enable-64-bit-bfd
|
||||||
|
--disable-lto
|
||||||
|
$WITHPPL
|
||||||
|
"
|
||||||
|
|
||||||
|
# prefill gcc cache
|
||||||
|
echo 'lt_cv_shlibpath_overrides_runpath=no' > config.cache
|
||||||
|
echo 'gcc_cv_libc_provides_ssp=yes' >> config.cache
|
||||||
|
|
||||||
|
if [ ! "$BUILDER_ARCH" = "$TARGET_ARCH" ]; then
|
||||||
|
WITH_HEADERS="--with-headers=$ROOTFS/usr/include"
|
||||||
|
fi
|
||||||
|
|
||||||
|
$SRC/gcc-*/configure $GCC_CONFIGARGS $WITH_HEADERS
|
||||||
|
notparallel
|
||||||
|
# Pass gcc_cv_libc_provides_ssp down, because the config.cache
|
||||||
|
# version is not passed down to the gcc subdir.
|
||||||
|
make $J all-target-libgcc all-target-libssp gcc_cv_libc_provides_ssp=yes
|
||||||
|
make $J install-target-libgcc install-target-libssp gcc_cv_libc_provides_ssp=yes
|
28
STAGE1-t-gcc
Normal file
28
STAGE1-t-gcc
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
srpm gcc
|
||||||
|
mcd $BUILDDIR/t-gcc
|
||||||
|
|
||||||
|
GCC_TCONFIGARGS="--prefix=/usr
|
||||||
|
--libdir=/usr/lib${SUFFIX}
|
||||||
|
--with-sysroot=/
|
||||||
|
--with-build-sysroot=$ROOTFS
|
||||||
|
--build=$BUILD
|
||||||
|
--host=$TARGET
|
||||||
|
--target=$TARGET
|
||||||
|
--disable-bootstrap
|
||||||
|
--enable-werror=no
|
||||||
|
--enable-cxx
|
||||||
|
${GCC_CONFIG_EXTRA}
|
||||||
|
--enable-languages=c,c++
|
||||||
|
--enable-threads=posix
|
||||||
|
--enable-linker-build-id
|
||||||
|
"
|
||||||
|
|
||||||
|
$SRC/gcc-*/configure $GCC_TCONFIGARGS
|
||||||
|
notparallel
|
||||||
|
make $J
|
||||||
|
make $J install DESTDIR=${ROOTFS}
|
||||||
|
test -e ${ROOTFS}/usr/bin/cc && rm ${ROOTFS}/usr/bin/cc
|
||||||
|
ln -s gcc ${ROOTFS}/usr/bin/cc
|
||||||
|
mkdir -p ${ROOTFS}/usr/share/gdb/auto-load/usr/lib${SUFFIX}
|
||||||
|
mv -f ${ROOTFS}/usr/lib${SUFFIX}/libstdc++*gdb.py* \
|
||||||
|
${ROOTFS}/usr/share/gdb/auto-load/usr/lib${SUFFIX}
|
184
gcc.spec
184
gcc.spec
@ -1,9 +1,9 @@
|
|||||||
%global DATE 20140807
|
%global DATE 20150212
|
||||||
%global SVNREV 213696
|
%global SVNREV 220644
|
||||||
%global gcc_version 4.9.1
|
%global gcc_version 4.9.2
|
||||||
# Note, gcc_release must be integer, if you want to add suffixes to
|
# Note, gcc_release must be integer, if you want to add suffixes to
|
||||||
# %{release}, append them after %{gcc_release} on Release: line.
|
# %{release}, append them after %{gcc_release} on Release: line.
|
||||||
%global gcc_release 5
|
%global gcc_release 6
|
||||||
%global _unpackaged_files_terminate_build 0
|
%global _unpackaged_files_terminate_build 0
|
||||||
%global _performance_build 1
|
%global _performance_build 1
|
||||||
%global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64
|
%global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64
|
||||||
@ -105,7 +105,8 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
|||||||
# Need binutils which support %gnu_unique_object >= 2.19.51.0.14
|
# Need binutils which support %gnu_unique_object >= 2.19.51.0.14
|
||||||
# Need binutils which support .cfi_sections >= 2.19.51.0.14-33
|
# Need binutils which support .cfi_sections >= 2.19.51.0.14-33
|
||||||
# Need binutils which support --no-add-needed >= 2.20.51.0.2-12
|
# Need binutils which support --no-add-needed >= 2.20.51.0.2-12
|
||||||
BuildRequires: binutils >= 2.20.51.0.2-12
|
# Need binutils which support -plugin
|
||||||
|
BuildRequires: binutils >= 2.24
|
||||||
# While gcc doesn't include statically linked binaries, during testing
|
# While gcc doesn't include statically linked binaries, during testing
|
||||||
# -static is used several times.
|
# -static is used several times.
|
||||||
BuildRequires: glibc-static
|
BuildRequires: glibc-static
|
||||||
@ -156,7 +157,8 @@ Requires: cpp = %{version}-%{release}
|
|||||||
# Need binutils that support %gnu_unique_object
|
# Need binutils that support %gnu_unique_object
|
||||||
# Need binutils that support .cfi_sections
|
# Need binutils that support .cfi_sections
|
||||||
# Need binutils that support --no-add-needed
|
# Need binutils that support --no-add-needed
|
||||||
Requires: binutils >= 2.20.51.0.2-12
|
# Need binutils that support -plugin
|
||||||
|
Requires: binutils >= 2.24
|
||||||
# Make sure gdb will understand DW_FORM_strp
|
# Make sure gdb will understand DW_FORM_strp
|
||||||
Conflicts: gdb < 5.1-2
|
Conflicts: gdb < 5.1-2
|
||||||
Requires: glibc-devel >= 2.2.90-12
|
Requires: glibc-devel >= 2.2.90-12
|
||||||
@ -193,10 +195,11 @@ Patch9: gcc49-cloog-dl2.patch
|
|||||||
Patch10: gcc49-pr38757.patch
|
Patch10: gcc49-pr38757.patch
|
||||||
Patch11: gcc49-libstdc++-docs.patch
|
Patch11: gcc49-libstdc++-docs.patch
|
||||||
Patch12: gcc49-no-add-needed.patch
|
Patch12: gcc49-no-add-needed.patch
|
||||||
Patch14: gcc49-pr56493.patch
|
Patch13: gcc49-color-auto.patch
|
||||||
Patch15: gcc49-color-auto.patch
|
Patch14: gcc49-libgo-p224.patch
|
||||||
Patch16: gcc49-libgo-p224.patch
|
Patch15: gcc49-aarch64-async-unw-tables.patch
|
||||||
Patch17: gcc49-aarch64-async-unw-tables.patch
|
Patch16: gcc49-aarch64-unwind-opt.patch
|
||||||
|
Patch17: gcc49-pr64336.patch
|
||||||
|
|
||||||
Patch1100: cloog-%{cloog_version}-ppc64le-config.patch
|
Patch1100: cloog-%{cloog_version}-ppc64le-config.patch
|
||||||
|
|
||||||
@ -717,13 +720,14 @@ package or when debugging this package.
|
|||||||
%patch11 -p0 -b .libstdc++-docs~
|
%patch11 -p0 -b .libstdc++-docs~
|
||||||
%endif
|
%endif
|
||||||
%patch12 -p0 -b .no-add-needed~
|
%patch12 -p0 -b .no-add-needed~
|
||||||
%patch14 -p0 -b .pr56493~
|
|
||||||
%if 0%{?fedora} >= 20 || 0%{?rhel} >= 7
|
%if 0%{?fedora} >= 20 || 0%{?rhel} >= 7
|
||||||
%patch15 -p0 -b .color-auto~
|
%patch13 -p0 -b .color-auto~
|
||||||
%endif
|
%endif
|
||||||
%patch16 -p0 -b .libgo-p224~
|
%patch14 -p0 -b .libgo-p224~
|
||||||
rm -f libgo/go/crypto/elliptic/p224{,_test}.go
|
rm -f libgo/go/crypto/elliptic/p224{,_test}.go
|
||||||
%patch17 -p0 -b .aarch64-async-unw-tables~
|
%patch15 -p0 -b .aarch64-async-unw-tables~
|
||||||
|
%patch16 -p0 -b .aarch64-unwind-opt~
|
||||||
|
%patch17 -p0 -b .pr64336~
|
||||||
|
|
||||||
%if 0%{?_enable_debug_packages}
|
%if 0%{?_enable_debug_packages}
|
||||||
cat > split-debuginfo.sh <<\EOF
|
cat > split-debuginfo.sh <<\EOF
|
||||||
@ -774,7 +778,7 @@ chmod 755 split-debuginfo.sh
|
|||||||
|
|
||||||
%patch1100 -p0 -b .cloog-ppc64le-config~
|
%patch1100 -p0 -b .cloog-ppc64le-config~
|
||||||
|
|
||||||
sed -i -e 's/4\.9\.2/4.9.1/' gcc/BASE-VER
|
sed -i -e 's/4\.9\.3/4.9.2/' gcc/BASE-VER
|
||||||
echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
|
echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
|
||||||
|
|
||||||
%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
|
%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
|
||||||
@ -1194,6 +1198,9 @@ mv %{buildroot}%{_prefix}/%{_lib}/libitm.spec $FULLPATH/
|
|||||||
%if %{build_libasan}
|
%if %{build_libasan}
|
||||||
mv %{buildroot}%{_prefix}/%{_lib}/libsanitizer.spec $FULLPATH/
|
mv %{buildroot}%{_prefix}/%{_lib}/libsanitizer.spec $FULLPATH/
|
||||||
%endif
|
%endif
|
||||||
|
%if %{build_libcilkrts}
|
||||||
|
mv %{buildroot}%{_prefix}/%{_lib}/libcilkrts.spec $FULLPATH/
|
||||||
|
%endif
|
||||||
|
|
||||||
mkdir -p %{buildroot}/%{_lib}
|
mkdir -p %{buildroot}/%{_lib}
|
||||||
mv -f %{buildroot}%{_prefix}/%{_lib}/libgcc_s.so.1 %{buildroot}/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
|
mv -f %{buildroot}%{_prefix}/%{_lib}/libgcc_s.so.1 %{buildroot}/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
|
||||||
@ -2047,6 +2054,10 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
%if %{build_libcilkrts}
|
%if %{build_libcilkrts}
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cilk
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cilk
|
||||||
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libcilkrts.spec
|
||||||
|
%endif
|
||||||
|
%if %{build_libasan}
|
||||||
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/sanitizer
|
||||||
%endif
|
%endif
|
||||||
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/collect2
|
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/collect2
|
||||||
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/crt*.o
|
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/crt*.o
|
||||||
@ -2796,6 +2807,149 @@ fi
|
|||||||
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
|
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Feb 12 2015 Jakub Jelinek <jakub@redhat.com> 4.9.2-6
|
||||||
|
- update from the 4.9 branch
|
||||||
|
- PRs c++/54442, c++/64514, c++/64521, c++/64901, c/57653, c/61553, c/64766,
|
||||||
|
c/64778, c/64824, c/64868, debug/64511, debug/64663, fortran/56867,
|
||||||
|
fortran/57023, fortran/60922, fortran/62044, fortran/63733,
|
||||||
|
fortran/64230, fortran/64528, fortran/64771, ipa/63970, ipa/64068,
|
||||||
|
ipa/64559, libstdc++/64476, libstdc++/64584, libstdc++/64585,
|
||||||
|
libstdc++/64646, libstdc++/64649, libstdc++/64680, middle-end/63704,
|
||||||
|
middle-end/64391, middle-end/64421, middle-end/64734,
|
||||||
|
rtl-optimization/61058, rtl-optimization/63637,
|
||||||
|
rtl-optimization/64286, rtl-optimization/64557, target/61413,
|
||||||
|
target/63424, target/64358, target/64479, target/64505, target/64513,
|
||||||
|
target/64580, target/64795, target/64882, target/64938, target/64979,
|
||||||
|
testsuite/64712, tree-optimization/64563
|
||||||
|
|
||||||
|
* Thu Jan 8 2015 Jakub Jelinek <jakub@redhat.com> 4.9.2-5
|
||||||
|
- don't remove tablejumps in rtl_tidy_fallthru_edge (#1136939,
|
||||||
|
PR rtl-optimization/64536)
|
||||||
|
|
||||||
|
* Wed Jan 7 2015 Jakub Jelinek <jakub@redhat.com> 4.9.2-4
|
||||||
|
- update from the 4.9 branch
|
||||||
|
- PRs ada/64492, c++/38958, c++/60955, c++/63657, c++/63658, c++/64029,
|
||||||
|
c++/64251, c++/64297, c++/64352, c++/64487, fortran/64244,
|
||||||
|
libstdc++/64302, libstdc++/64303, rtl-optimization/64010,
|
||||||
|
target/64409, target/64507
|
||||||
|
- backport -mskip-rax-setup support from trunk
|
||||||
|
- fix -fsanitize=float-cast-overflow (PR sanitizer/64344)
|
||||||
|
- fix handling of fortran components vs. cray pointers (#1134560,
|
||||||
|
PR fortran/62174)
|
||||||
|
- package libcilkrts.spec (#1173905)
|
||||||
|
|
||||||
|
* Wed Dec 17 2014 Jakub Jelinek <jakub@redhat.com> 4.9.2-3
|
||||||
|
- update from the 4.9 branch
|
||||||
|
- PRs libstdc++/64239, sanitizer/64265, target/64200,
|
||||||
|
tree-optimization/63551, tree-optimization/64269
|
||||||
|
- fix up SANITIZE_* enum values, so that -fsanitize=bool is independent
|
||||||
|
from -fsanitize=float-divide-by-zero and -fsanitize=enum is independent
|
||||||
|
from -fsanitize=float-cast-overflow (#1173185)
|
||||||
|
- fix -fsanitize=float-cast-overflow in C (#1173185, PR sanitizer/64289)
|
||||||
|
- fix -fsanitize=thread (PR sanitizer/64336)
|
||||||
|
- fix up Fortran DATA error recovery (#1115207, PR fortran/61669)
|
||||||
|
|
||||||
|
* Fri Dec 12 2014 Jakub Jelinek <jakub@redhat.com> 4.9.2-2
|
||||||
|
- update from the 4.9 branch
|
||||||
|
- PRs ada/42978, ada/47500, bootstrap/63703, bootstrap/64213, c++/56493,
|
||||||
|
c++/63265, c++/63849, c/52769, c/59708, fortran/63938, ipa/63551,
|
||||||
|
ipa/63838, ipa/64153, libstdc++/61947, libstdc++/63497,
|
||||||
|
libstdc++/63840, libstdc++/64103, libstdc++/64140, libstdc++/64203,
|
||||||
|
middle-end/63665, middle-end/63738, middle-end/63762,
|
||||||
|
middle-end/64067, middle-end/64111, middle-end/64225,
|
||||||
|
preprocessor/60436, rtl-optimization/63475, rtl-optimization/63483,
|
||||||
|
rtl-optimization/64037, sanitizer/63913, target/50751, target/51244,
|
||||||
|
target/53976, target/55351, target/56846, target/59593, target/60111,
|
||||||
|
target/61535, target/63538, target/63661, target/63673, target/63783,
|
||||||
|
target/63947, target/64108, target/64113, target/64115,
|
||||||
|
testsuite/63305, tree-optimization/61686, tree-optimization/61750,
|
||||||
|
tree-optimization/61927, tree-optimization/62021,
|
||||||
|
tree-optimization/62167, tree-optimization/62238,
|
||||||
|
tree-optimization/63605, tree-optimization/63738,
|
||||||
|
tree-optimization/63841, tree-optimization/63915,
|
||||||
|
tree-optimization/64191
|
||||||
|
|
||||||
|
* Sat Nov 1 2014 Jakub Jelinek <jakub@redhat.com> 4.9.2-1
|
||||||
|
- update from the 4.9 branch
|
||||||
|
- GCC 4.9.2 release
|
||||||
|
- PRs sanitizer/63638, sanitizer/63697, tree-optimization/63530
|
||||||
|
- handle REG_EQ* notes in REE (PR rtl-optimization/63659)
|
||||||
|
- include asan/lsan sanitizer/ includes
|
||||||
|
|
||||||
|
* Fri Oct 24 2014 Jakub Jelinek <jakub@redhat.com> 4.9.1-13
|
||||||
|
- update from the 4.9 branch
|
||||||
|
- PRs bootstrap/63632, libfortran/63589, libstdc++/63500,
|
||||||
|
lto/63603, tree-optimization/63563
|
||||||
|
- backport -f{,no-}sanitize-recover=<list> support from the trunk
|
||||||
|
- backport var-tracking fix (#1151226, PR debug/63623)
|
||||||
|
|
||||||
|
* Fri Oct 17 2014 Jakub Jelinek <jakub@redhat.com> 4.9.1-12
|
||||||
|
- update from the 4.9 branch
|
||||||
|
- PRs ada/63225, c++/63306, c++/63405, c++/63415, c++/63437, c++/63455,
|
||||||
|
c/63495, debug/63342, fortran/59488, ipa/61144, ipa/62121,
|
||||||
|
libgfortran/63460, libgomp/61200, libstdc++/57440, libstdc++/59603,
|
||||||
|
libstdc++/63199, libstdc++/63449, libstdc++/63456, lto/62026,
|
||||||
|
regression/61510, rtl-optimization/57003, rtl-optimization/63448,
|
||||||
|
sanitizer/61100, sanitizer/61530, sanitizer/61547, sanitizer/61897,
|
||||||
|
sanitizer/62089, sanitizer/62140, target/52941, target/63428,
|
||||||
|
tree-optimization/61969, tree-optimization/62031,
|
||||||
|
tree-optimization/63302, tree-optimization/63375,
|
||||||
|
tree-optimization/63379, tree-optimization/63380
|
||||||
|
- initial -fsanitize=kernel-address support
|
||||||
|
|
||||||
|
* Tue Sep 30 2014 Jakub Jelinek <jakub@redhat.com> 4.9.1-11
|
||||||
|
- update from the 4.9 branch
|
||||||
|
- PRs c++/61465, c++/62219, c++/63249, inline-asm/63282, middle-end/63247,
|
||||||
|
plugins/63410, sanitizer/61272, target/49423, target/61407,
|
||||||
|
target/62218, target/63335, tree-optimization/63341
|
||||||
|
- avoid fnsplit if there are forced labels accessed in between the partitions
|
||||||
|
(#1106758, PR tree-optimization/63186)
|
||||||
|
|
||||||
|
* Mon Sep 22 2014 Jakub Jelinek <jakub@redhat.com> 4.9.1-10
|
||||||
|
- update from the 4.9 branch
|
||||||
|
- PRs c++/62017, c++/63241, c++/63248, debug/63284, debug/63328, ipa/61654,
|
||||||
|
target/61853, testsuite/63292
|
||||||
|
- fix scheduler -fcompare-debug issue (#1140872, PR debug/63285)
|
||||||
|
|
||||||
|
* Fri Sep 12 2014 Jakub Jelinek <jakub@redhat.com> 4.9.1-9
|
||||||
|
- update from the 4.9 branch
|
||||||
|
- PRs c++/58624, c++/61214, c++/61659, c++/62129, c++/62224, c++/62659,
|
||||||
|
c++/63139, c/61271, c/62294, fortran/62106, fortran/62142,
|
||||||
|
fortran/62214, fortran/62215, fortran/62270, ipa/60449, ipa/61986,
|
||||||
|
ipa/62015, libgfortran/62188, libstdc++/62264, libstdc++/63219,
|
||||||
|
middle-end/61776, other/62008, other/62248, rtl-optimization/61672,
|
||||||
|
rtl-optimization/62004, rtl-optimization/62030,
|
||||||
|
rtl-optimization/62079, rtl-optimization/62146, target/61641,
|
||||||
|
target/61996, target/62011, target/62038, target/62040, target/62111,
|
||||||
|
target/62195, target/62261, target/62262, target/62312, target/63209,
|
||||||
|
target/63223, target/63228, testsuite/56194, tree-optimization/60196,
|
||||||
|
tree-optimization/62075, tree-optimization/62091,
|
||||||
|
tree-optimization/62175, tree-optimization/63189
|
||||||
|
- fix s390{,x} return address handling in epilogues (#1131899,
|
||||||
|
PR target/62662)
|
||||||
|
|
||||||
|
* Fri Aug 15 2014 Jakub Jelinek <jakub@redhat.com> 4.9.1-8
|
||||||
|
- update from the 4.9 branch
|
||||||
|
- PRs fortran/62076, fortran/62107, lto/62032, middle-end/62092,
|
||||||
|
target/61713
|
||||||
|
- allow elements/components of allocatables in !$omp atomic
|
||||||
|
(PR fortran/62131)
|
||||||
|
- require/build require >= 2.24 binutils
|
||||||
|
|
||||||
|
* Thu Aug 14 2014 Jakub Jelinek <jakub@redhat.com> 4.9.1-7
|
||||||
|
- fix up scheduler deps handling fix (PR target/62025)
|
||||||
|
- vectorization fix (PR tree-optimization/62073)
|
||||||
|
|
||||||
|
* Wed Aug 13 2014 Jakub Jelinek <jakub@redhat.com> 4.9.1-6
|
||||||
|
- update from the 4.9 branch
|
||||||
|
- PRs c++/58714, c++/60872, c++/61959, c++/61994, fortran/61999,
|
||||||
|
libstdc++/61667, other/61962, tree-optimization/60707
|
||||||
|
- fix scheduler deps handling of inc with clobbers vs. mem user (#1126463,
|
||||||
|
PR target/62025)
|
||||||
|
- optimize slightly aarch64 unwind info
|
||||||
|
- backport arm vcvtf2i fix from trunk (PR target/62098)
|
||||||
|
- backport fold_ctor_reference big-endian fix (PR middle-end/62103)
|
||||||
|
|
||||||
* Thu Aug 7 2014 Jakub Jelinek <jakub@redhat.com> 4.9.1-5
|
* Thu Aug 7 2014 Jakub Jelinek <jakub@redhat.com> 4.9.1-5
|
||||||
- update from the 4.9 branch
|
- update from the 4.9 branch
|
||||||
- PRs debug/61923, libstdc++/58962, libstdc++/61374, libstdc++/61390,
|
- PRs debug/61923, libstdc++/58962, libstdc++/61374, libstdc++/61390,
|
||||||
|
338
gcc49-aarch64-unwind-opt.patch
Normal file
338
gcc49-aarch64-unwind-opt.patch
Normal file
@ -0,0 +1,338 @@
|
|||||||
|
2014-08-08 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
|
* config/aarch64/aarch64.c (aarch64_save_or_restore_fprs): Add
|
||||||
|
cfi_ops argument, for restore put REG_CFA_RESTORE notes into
|
||||||
|
*cfi_ops rather than on individual insns. Cleanup.
|
||||||
|
(aarch64_save_or_restore_callee_save_registers): Likewise.
|
||||||
|
(aarch64_expand_prologue): Adjust caller.
|
||||||
|
(aarch64_expand_epilogue): Likewise. Cleanup. Emit queued cfi_ops
|
||||||
|
on the stack restore insn.
|
||||||
|
|
||||||
|
--- gcc/config/aarch64/aarch64.c.jj 2014-07-08 17:38:17.398231989 +0200
|
||||||
|
+++ gcc/config/aarch64/aarch64.c 2014-08-13 10:02:45.599757706 +0200
|
||||||
|
@@ -1810,8 +1810,7 @@ aarch64_register_saved_on_entry (int reg
|
||||||
|
|
||||||
|
static void
|
||||||
|
aarch64_save_or_restore_fprs (int start_offset, int increment,
|
||||||
|
- bool restore, rtx base_rtx)
|
||||||
|
-
|
||||||
|
+ bool restore, rtx base_rtx, rtx *cfi_ops)
|
||||||
|
{
|
||||||
|
unsigned regno;
|
||||||
|
unsigned regno2;
|
||||||
|
@@ -1819,16 +1818,16 @@ aarch64_save_or_restore_fprs (int start_
|
||||||
|
rtx (*gen_mem_ref)(enum machine_mode, rtx)
|
||||||
|
= (frame_pointer_needed)? gen_frame_mem : gen_rtx_MEM;
|
||||||
|
|
||||||
|
-
|
||||||
|
for (regno = V0_REGNUM; regno <= V31_REGNUM; regno++)
|
||||||
|
{
|
||||||
|
if (aarch64_register_saved_on_entry (regno))
|
||||||
|
{
|
||||||
|
- rtx mem;
|
||||||
|
+ rtx mem, reg1;
|
||||||
|
mem = gen_mem_ref (DFmode,
|
||||||
|
plus_constant (Pmode,
|
||||||
|
base_rtx,
|
||||||
|
start_offset));
|
||||||
|
+ reg1 = gen_rtx_REG (DFmode, regno);
|
||||||
|
|
||||||
|
for (regno2 = regno + 1;
|
||||||
|
regno2 <= V31_REGNUM
|
||||||
|
@@ -1840,56 +1839,51 @@ aarch64_save_or_restore_fprs (int start_
|
||||||
|
if (regno2 <= V31_REGNUM &&
|
||||||
|
aarch64_register_saved_on_entry (regno2))
|
||||||
|
{
|
||||||
|
- rtx mem2;
|
||||||
|
+ rtx mem2, reg2;
|
||||||
|
/* Next highest register to be saved. */
|
||||||
|
mem2 = gen_mem_ref (DFmode,
|
||||||
|
plus_constant
|
||||||
|
(Pmode,
|
||||||
|
base_rtx,
|
||||||
|
start_offset + increment));
|
||||||
|
+ reg2 = gen_rtx_REG (DFmode, regno2);
|
||||||
|
+
|
||||||
|
if (restore == false)
|
||||||
|
{
|
||||||
|
- insn = emit_insn
|
||||||
|
- ( gen_store_pairdf (mem, gen_rtx_REG (DFmode, regno),
|
||||||
|
- mem2, gen_rtx_REG (DFmode, regno2)));
|
||||||
|
-
|
||||||
|
+ insn = emit_insn (gen_store_pairdf (mem, reg1, mem2, reg2));
|
||||||
|
+ /* The first part of a frame-related parallel insn
|
||||||
|
+ is always assumed to be relevant to the frame
|
||||||
|
+ calculations; subsequent parts, are only
|
||||||
|
+ frame-related if explicitly marked. */
|
||||||
|
+ RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1;
|
||||||
|
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- insn = emit_insn
|
||||||
|
- ( gen_load_pairdf (gen_rtx_REG (DFmode, regno), mem,
|
||||||
|
- gen_rtx_REG (DFmode, regno2), mem2));
|
||||||
|
-
|
||||||
|
- add_reg_note (insn, REG_CFA_RESTORE,
|
||||||
|
- gen_rtx_REG (DFmode, regno));
|
||||||
|
- add_reg_note (insn, REG_CFA_RESTORE,
|
||||||
|
- gen_rtx_REG (DFmode, regno2));
|
||||||
|
+ emit_insn (gen_load_pairdf (reg1, mem, reg2, mem2));
|
||||||
|
+ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops);
|
||||||
|
+ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg2, *cfi_ops);
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* The first part of a frame-related parallel insn
|
||||||
|
- is always assumed to be relevant to the frame
|
||||||
|
- calculations; subsequent parts, are only
|
||||||
|
- frame-related if explicitly marked. */
|
||||||
|
- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1;
|
||||||
|
regno = regno2;
|
||||||
|
start_offset += increment * 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (restore == false)
|
||||||
|
- insn = emit_move_insn (mem, gen_rtx_REG (DFmode, regno));
|
||||||
|
+ {
|
||||||
|
+ insn = emit_move_insn (mem, reg1);
|
||||||
|
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||||
|
+ }
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- insn = emit_move_insn (gen_rtx_REG (DFmode, regno), mem);
|
||||||
|
- add_reg_note (insn, REG_CFA_RESTORE,
|
||||||
|
- gen_rtx_REG (DImode, regno));
|
||||||
|
+ emit_move_insn (reg1, mem);
|
||||||
|
+ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops);
|
||||||
|
}
|
||||||
|
start_offset += increment;
|
||||||
|
}
|
||||||
|
- RTX_FRAME_RELATED_P (insn) = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1897,13 +1891,14 @@ aarch64_save_or_restore_fprs (int start_
|
||||||
|
restore's have to happen. */
|
||||||
|
static void
|
||||||
|
aarch64_save_or_restore_callee_save_registers (HOST_WIDE_INT offset,
|
||||||
|
- bool restore)
|
||||||
|
+ bool restore, rtx *cfi_ops)
|
||||||
|
{
|
||||||
|
rtx insn;
|
||||||
|
rtx base_rtx = stack_pointer_rtx;
|
||||||
|
HOST_WIDE_INT start_offset = offset;
|
||||||
|
HOST_WIDE_INT increment = UNITS_PER_WORD;
|
||||||
|
- rtx (*gen_mem_ref)(enum machine_mode, rtx) = (frame_pointer_needed)? gen_frame_mem : gen_rtx_MEM;
|
||||||
|
+ rtx (*gen_mem_ref)(enum machine_mode, rtx)
|
||||||
|
+ = (frame_pointer_needed)? gen_frame_mem : gen_rtx_MEM;
|
||||||
|
unsigned limit = (frame_pointer_needed)? R28_REGNUM: R30_REGNUM;
|
||||||
|
unsigned regno;
|
||||||
|
unsigned regno2;
|
||||||
|
@@ -1912,11 +1907,13 @@ aarch64_save_or_restore_callee_save_regi
|
||||||
|
{
|
||||||
|
if (aarch64_register_saved_on_entry (regno))
|
||||||
|
{
|
||||||
|
- rtx mem;
|
||||||
|
+ rtx mem, reg1;
|
||||||
|
+
|
||||||
|
mem = gen_mem_ref (Pmode,
|
||||||
|
plus_constant (Pmode,
|
||||||
|
base_rtx,
|
||||||
|
start_offset));
|
||||||
|
+ reg1 = gen_rtx_REG (DImode, regno);
|
||||||
|
|
||||||
|
for (regno2 = regno + 1;
|
||||||
|
regno2 <= limit
|
||||||
|
@@ -1928,56 +1925,54 @@ aarch64_save_or_restore_callee_save_regi
|
||||||
|
if (regno2 <= limit &&
|
||||||
|
aarch64_register_saved_on_entry (regno2))
|
||||||
|
{
|
||||||
|
- rtx mem2;
|
||||||
|
+ rtx mem2, reg2;
|
||||||
|
/* Next highest register to be saved. */
|
||||||
|
mem2 = gen_mem_ref (Pmode,
|
||||||
|
plus_constant
|
||||||
|
(Pmode,
|
||||||
|
base_rtx,
|
||||||
|
start_offset + increment));
|
||||||
|
+ reg2 = gen_rtx_REG (DImode, regno2);
|
||||||
|
+
|
||||||
|
if (restore == false)
|
||||||
|
{
|
||||||
|
- insn = emit_insn
|
||||||
|
- ( gen_store_pairdi (mem, gen_rtx_REG (DImode, regno),
|
||||||
|
- mem2, gen_rtx_REG (DImode, regno2)));
|
||||||
|
-
|
||||||
|
+ insn = emit_insn (gen_store_pairdi (mem, reg1, mem2, reg2));
|
||||||
|
+ /* The first part of a frame-related parallel insn
|
||||||
|
+ is always assumed to be relevant to the frame
|
||||||
|
+ calculations; subsequent parts, are only
|
||||||
|
+ frame-related if explicitly marked. */
|
||||||
|
+ RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1;
|
||||||
|
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- insn = emit_insn
|
||||||
|
- ( gen_load_pairdi (gen_rtx_REG (DImode, regno), mem,
|
||||||
|
- gen_rtx_REG (DImode, regno2), mem2));
|
||||||
|
-
|
||||||
|
- add_reg_note (insn, REG_CFA_RESTORE, gen_rtx_REG (DImode, regno));
|
||||||
|
- add_reg_note (insn, REG_CFA_RESTORE, gen_rtx_REG (DImode, regno2));
|
||||||
|
+ emit_insn (gen_load_pairdi (reg1, mem, reg2, mem2));
|
||||||
|
+ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops);
|
||||||
|
+ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg2, *cfi_ops);
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* The first part of a frame-related parallel insn
|
||||||
|
- is always assumed to be relevant to the frame
|
||||||
|
- calculations; subsequent parts, are only
|
||||||
|
- frame-related if explicitly marked. */
|
||||||
|
- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0,
|
||||||
|
- 1)) = 1;
|
||||||
|
regno = regno2;
|
||||||
|
start_offset += increment * 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (restore == false)
|
||||||
|
- insn = emit_move_insn (mem, gen_rtx_REG (DImode, regno));
|
||||||
|
+ {
|
||||||
|
+ insn = emit_move_insn (mem, reg1);
|
||||||
|
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||||
|
+ }
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- insn = emit_move_insn (gen_rtx_REG (DImode, regno), mem);
|
||||||
|
- add_reg_note (insn, REG_CFA_RESTORE, gen_rtx_REG (DImode, regno));
|
||||||
|
+ emit_move_insn (reg1, mem);
|
||||||
|
+ *cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg1, *cfi_ops);
|
||||||
|
}
|
||||||
|
start_offset += increment;
|
||||||
|
}
|
||||||
|
- RTX_FRAME_RELATED_P (insn) = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- aarch64_save_or_restore_fprs (start_offset, increment, restore, base_rtx);
|
||||||
|
-
|
||||||
|
+ aarch64_save_or_restore_fprs (start_offset, increment, restore,
|
||||||
|
+ base_rtx, cfi_ops);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* AArch64 stack frames generated by this compiler look like:
|
||||||
|
@@ -2179,7 +2174,7 @@ aarch64_expand_prologue (void)
|
||||||
|
}
|
||||||
|
|
||||||
|
aarch64_save_or_restore_callee_save_registers
|
||||||
|
- (fp_offset + cfun->machine->frame.hardfp_offset, 0);
|
||||||
|
+ (fp_offset + cfun->machine->frame.hardfp_offset, 0, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* when offset >= 512,
|
||||||
|
@@ -2248,15 +2243,18 @@ aarch64_expand_epilogue (bool for_sibcal
|
||||||
|
insn = emit_insn (gen_add3_insn (stack_pointer_rtx,
|
||||||
|
hard_frame_pointer_rtx,
|
||||||
|
GEN_INT (- fp_offset)));
|
||||||
|
+ /* CFA should be calculated from the value of SP from now on. */
|
||||||
|
+ add_reg_note (insn, REG_CFA_ADJUST_CFA,
|
||||||
|
+ gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||||
|
+ plus_constant (Pmode, hard_frame_pointer_rtx,
|
||||||
|
+ -fp_offset)));
|
||||||
|
RTX_FRAME_RELATED_P (insn) = 1;
|
||||||
|
- /* As SP is set to (FP - fp_offset), according to the rules in
|
||||||
|
- dwarf2cfi.c:dwarf2out_frame_debug_expr, CFA should be calculated
|
||||||
|
- from the value of SP from now on. */
|
||||||
|
cfa_reg = stack_pointer_rtx;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ rtx cfi_ops = NULL;
|
||||||
|
aarch64_save_or_restore_callee_save_registers
|
||||||
|
- (fp_offset + cfun->machine->frame.hardfp_offset, 1);
|
||||||
|
+ (fp_offset + cfun->machine->frame.hardfp_offset, 1, &cfi_ops);
|
||||||
|
|
||||||
|
/* Restore the frame pointer and lr if the frame pointer is needed. */
|
||||||
|
if (offset > 0)
|
||||||
|
@@ -2264,6 +2262,8 @@ aarch64_expand_epilogue (bool for_sibcal
|
||||||
|
if (frame_pointer_needed)
|
||||||
|
{
|
||||||
|
rtx mem_fp, mem_lr;
|
||||||
|
+ rtx reg_fp = hard_frame_pointer_rtx;
|
||||||
|
+ rtx reg_lr = gen_rtx_REG (DImode, LR_REGNUM);
|
||||||
|
|
||||||
|
if (fp_offset)
|
||||||
|
{
|
||||||
|
@@ -2276,52 +2276,36 @@ aarch64_expand_epilogue (bool for_sibcal
|
||||||
|
stack_pointer_rtx,
|
||||||
|
fp_offset
|
||||||
|
+ UNITS_PER_WORD));
|
||||||
|
- insn = emit_insn (gen_load_pairdi (hard_frame_pointer_rtx,
|
||||||
|
- mem_fp,
|
||||||
|
- gen_rtx_REG (DImode,
|
||||||
|
- LR_REGNUM),
|
||||||
|
- mem_lr));
|
||||||
|
+ emit_insn (gen_load_pairdi (reg_fp, mem_fp, reg_lr, mem_lr));
|
||||||
|
+
|
||||||
|
+ insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
|
||||||
|
+ GEN_INT (offset)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
insn = emit_insn (gen_loadwb_pairdi_di
|
||||||
|
- (stack_pointer_rtx,
|
||||||
|
- stack_pointer_rtx,
|
||||||
|
- hard_frame_pointer_rtx,
|
||||||
|
- gen_rtx_REG (DImode, LR_REGNUM),
|
||||||
|
- GEN_INT (offset),
|
||||||
|
+ (stack_pointer_rtx, stack_pointer_rtx,
|
||||||
|
+ reg_fp, reg_lr, GEN_INT (offset),
|
||||||
|
GEN_INT (GET_MODE_SIZE (DImode) + offset)));
|
||||||
|
- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 2)) = 1;
|
||||||
|
- add_reg_note (insn, REG_CFA_ADJUST_CFA,
|
||||||
|
- (gen_rtx_SET (Pmode, stack_pointer_rtx,
|
||||||
|
- plus_constant (Pmode, cfa_reg,
|
||||||
|
- offset))));
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- /* The first part of a frame-related parallel insn
|
||||||
|
- is always assumed to be relevant to the frame
|
||||||
|
- calculations; subsequent parts, are only
|
||||||
|
- frame-related if explicitly marked. */
|
||||||
|
- RTX_FRAME_RELATED_P (XVECEXP (PATTERN (insn), 0, 1)) = 1;
|
||||||
|
- RTX_FRAME_RELATED_P (insn) = 1;
|
||||||
|
- add_reg_note (insn, REG_CFA_RESTORE, hard_frame_pointer_rtx);
|
||||||
|
- add_reg_note (insn, REG_CFA_RESTORE,
|
||||||
|
- gen_rtx_REG (DImode, LR_REGNUM));
|
||||||
|
-
|
||||||
|
- if (fp_offset)
|
||||||
|
- {
|
||||||
|
- insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
|
||||||
|
- GEN_INT (offset)));
|
||||||
|
- RTX_FRAME_RELATED_P (insn) = 1;
|
||||||
|
}
|
||||||
|
+ cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg_fp, cfi_ops);
|
||||||
|
+ cfi_ops = alloc_reg_note (REG_CFA_RESTORE, reg_lr, cfi_ops);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
insn = emit_insn (gen_add2_insn (stack_pointer_rtx,
|
||||||
|
GEN_INT (offset)));
|
||||||
|
- RTX_FRAME_RELATED_P (insn) = 1;
|
||||||
|
}
|
||||||
|
+ cfi_ops = alloc_reg_note (REG_CFA_ADJUST_CFA,
|
||||||
|
+ gen_rtx_SET (VOIDmode, stack_pointer_rtx,
|
||||||
|
+ plus_constant (Pmode, cfa_reg,
|
||||||
|
+ offset)),
|
||||||
|
+ cfi_ops);
|
||||||
|
+ REG_NOTES (insn) = cfi_ops;
|
||||||
|
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||||
|
}
|
||||||
|
+ else
|
||||||
|
+ gcc_assert (cfi_ops == NULL);
|
||||||
|
|
||||||
|
/* Stack adjustment for exception handler. */
|
||||||
|
if (crtl->calls_eh_return)
|
@ -9,12 +9,3 @@
|
|||||||
fi
|
fi
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
@@ -79,7 +79,7 @@ if test $enable_linux_futex = yes; then
|
|
||||||
config_path="linux/x86 linux posix"
|
|
||||||
case " ${CC} ${CFLAGS} " in
|
|
||||||
*" -m32 "*)
|
|
||||||
- XCFLAGS="${XCFLAGS} -march=i486 -mtune=i686"
|
|
||||||
+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<a class="link" href="http://www.fsf.org/" target="_top">FSF
|
<a class="link" href="http://www.fsf.org/" target="_top">FSF
|
||||||
</a>
|
</a>
|
||||||
</p><p>
|
</p><p>
|
||||||
+ Release 4.9.1
|
+ Release 4.9.2
|
||||||
+ </p><p>
|
+ </p><p>
|
||||||
Permission is granted to copy, distribute and/or modify this
|
Permission is granted to copy, distribute and/or modify this
|
||||||
document under the terms of the GNU Free Documentation
|
document under the terms of the GNU Free Documentation
|
||||||
@ -18,7 +18,7 @@
|
|||||||
- The API documentation, rendered into HTML, can be viewed online:
|
- The API documentation, rendered into HTML, can be viewed online:
|
||||||
+ The API documentation, rendered into HTML, can be viewed here:
|
+ The API documentation, rendered into HTML, can be viewed here:
|
||||||
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
|
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
|
||||||
+ <a class="link" href="api/index.html" target="_top">for the 4.9.1 release, local
|
+ <a class="link" href="api/index.html" target="_top">for the 4.9.2 release, local
|
||||||
+ </a>
|
+ </a>
|
||||||
+ </p></li><li class="listitem"><p>
|
+ </p></li><li class="listitem"><p>
|
||||||
<a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html" target="_top">for the 3.4 release
|
<a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html" target="_top">for the 3.4 release
|
||||||
|
@ -1,76 +0,0 @@
|
|||||||
2013-06-17 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
PR c++/56493
|
|
||||||
* convert.c (convert_to_real, convert_to_expr, convert_to_complex):
|
|
||||||
Handle COMPOUND_EXPR.
|
|
||||||
|
|
||||||
* c-c++-common/pr56493.c: New test.
|
|
||||||
|
|
||||||
--- gcc/convert.c.jj 2013-05-13 09:44:53.000000000 +0200
|
|
||||||
+++ gcc/convert.c 2013-06-16 12:16:13.754108523 +0200
|
|
||||||
@@ -95,6 +95,15 @@ convert_to_real (tree type, tree expr)
|
|
||||||
enum built_in_function fcode = builtin_mathfn_code (expr);
|
|
||||||
tree itype = TREE_TYPE (expr);
|
|
||||||
|
|
||||||
+ if (TREE_CODE (expr) == COMPOUND_EXPR)
|
|
||||||
+ {
|
|
||||||
+ tree t = convert_to_real (type, TREE_OPERAND (expr, 1));
|
|
||||||
+ if (t == TREE_OPERAND (expr, 1))
|
|
||||||
+ return expr;
|
|
||||||
+ return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR, TREE_TYPE (t),
|
|
||||||
+ TREE_OPERAND (expr, 0), t);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/* Disable until we figure out how to decide whether the functions are
|
|
||||||
present in runtime. */
|
|
||||||
/* Convert (float)sqrt((double)x) where x is float into sqrtf(x) */
|
|
||||||
@@ -366,6 +375,15 @@ convert_to_integer (tree type, tree expr
|
|
||||||
return error_mark_node;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (ex_form == COMPOUND_EXPR)
|
|
||||||
+ {
|
|
||||||
+ tree t = convert_to_integer (type, TREE_OPERAND (expr, 1));
|
|
||||||
+ if (t == TREE_OPERAND (expr, 1))
|
|
||||||
+ return expr;
|
|
||||||
+ return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR, TREE_TYPE (t),
|
|
||||||
+ TREE_OPERAND (expr, 0), t);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/* Convert e.g. (long)round(d) -> lround(d). */
|
|
||||||
/* If we're converting to char, we may encounter differing behavior
|
|
||||||
between converting from double->char vs double->long->char.
|
|
||||||
@@ -854,6 +872,14 @@ convert_to_complex (tree type, tree expr
|
|
||||||
|
|
||||||
if (TYPE_MAIN_VARIANT (elt_type) == TYPE_MAIN_VARIANT (subtype))
|
|
||||||
return expr;
|
|
||||||
+ else if (TREE_CODE (expr) == COMPOUND_EXPR)
|
|
||||||
+ {
|
|
||||||
+ tree t = convert_to_complex (type, TREE_OPERAND (expr, 1));
|
|
||||||
+ if (t == TREE_OPERAND (expr, 1))
|
|
||||||
+ return expr;
|
|
||||||
+ return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR,
|
|
||||||
+ TREE_TYPE (t), TREE_OPERAND (expr, 0), t);
|
|
||||||
+ }
|
|
||||||
else if (TREE_CODE (expr) == COMPLEX_EXPR)
|
|
||||||
return fold_build2 (COMPLEX_EXPR, type,
|
|
||||||
convert (subtype, TREE_OPERAND (expr, 0)),
|
|
||||||
--- gcc/testsuite/c-c++-common/pr56493.c.jj 2013-06-17 10:24:36.891659600 +0200
|
|
||||||
+++ gcc/testsuite/c-c++-common/pr56493.c 2013-06-17 10:24:33.164720149 +0200
|
|
||||||
@@ -0,0 +1,16 @@
|
|
||||||
+/* PR c++/56493 */
|
|
||||||
+/* { dg-do compile } */
|
|
||||||
+/* { dg-options "-O2 -fdump-tree-gimple" } */
|
|
||||||
+
|
|
||||||
+unsigned long long bar (void);
|
|
||||||
+int x;
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+foo (void)
|
|
||||||
+{
|
|
||||||
+ x += bar ();
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* Verify we narrow the addition from unsigned long long to unsigned int type. */
|
|
||||||
+/* { dg-final { scan-tree-dump " (\[a-zA-Z._0-9]*) = \\(unsigned int\\) \[^;\n\r]*;.* (\[a-zA-Z._0-9]*) = \\(unsigned int\\) \[^;\n\r]*;.* = \\1 \\+ \\2;" "gimple" { target { ilp32 || lp64 } } } } */
|
|
||||||
+/* { dg-final { cleanup-tree-dump "gimple" } } */
|
|
17
gcc49-pr64336.patch
Normal file
17
gcc49-pr64336.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
2014-12-17 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR sanitizer/64336
|
||||||
|
* tsan.c (instrument_expr): Ignore TREE_READONLY bit
|
||||||
|
on MEM_REFs.
|
||||||
|
|
||||||
|
--- gcc/tsan.c.jj 2014-12-17 10:53:30.000000000 +0100
|
||||||
|
+++ gcc/tsan.c 2014-12-17 11:55:12.793058159 +0100
|
||||||
|
@@ -138,7 +138,7 @@ instrument_expr (gimple_stmt_iterator gs
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (TREE_READONLY (base)
|
||||||
|
+ if ((TREE_READONLY (base) && TREE_CODE (base) != MEM_REF)
|
||||||
|
|| (TREE_CODE (base) == VAR_DECL
|
||||||
|
&& DECL_HARD_REGISTER (base)))
|
||||||
|
return false;
|
@ -2,7 +2,7 @@
|
|||||||
+++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
|
+++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
|
||||||
@@ -2656,7 +2656,7 @@ sparc-*-rtems*)
|
@@ -2656,7 +2656,7 @@ sparc-*-rtems*)
|
||||||
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
|
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
|
||||||
tmake_file="${tmake_file} sparc/t-sparc sparc/t-elf sparc/t-rtems"
|
tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
|
||||||
;;
|
;;
|
||||||
-sparc-*-linux*)
|
-sparc-*-linux*)
|
||||||
+sparc-*-linux* | sparcv9-*-linux*)
|
+sparc-*-linux* | sparcv9-*-linux*)
|
||||||
|
2
sources
2
sources
@ -1,3 +1,3 @@
|
|||||||
e34fca0540d840e5d0f6427e98c92252 cloog-0.18.1.tar.gz
|
e34fca0540d840e5d0f6427e98c92252 cloog-0.18.1.tar.gz
|
||||||
d0748685c39ced9837fdb30467524cc9 gcc-4.9.1-20140807.tar.bz2
|
bad062712242d2825ca5ef7f3ce7f0bb gcc-4.9.2-20150212.tar.bz2
|
||||||
e039bfcfb6c2ab039b8ee69bf883e824 isl-0.12.2.tar.bz2
|
e039bfcfb6c2ab039b8ee69bf883e824 isl-0.12.2.tar.bz2
|
||||||
|
Loading…
Reference in New Issue
Block a user