Compare commits

...

25 Commits
master ... f21

Author SHA1 Message Date
Jaromir Capik 1a553a9b75 STAGE1-*: Moving config args to recipes & fixing FTBFS
This commit moves the *GCC_CONFIGARGS from the stage1 script
to the *gcc* recipes so that the args can be tweaked by the
gcc maintainers in the future. This adds a bit of redundancy,
but still worthy.
This commit also disables gcc bootstrap in stage1 and splits
the build dir for gcc-host, gcc-libgcc and gcc so that it is
clean prior starting each build. It resolves strange config
issues that appear just under some combinations of build and
target arch.
2015-06-24 13:22:45 +02:00
Jaromir Capik 10c2deba1c Adding STAGE1 bootstrap recipes 2015-06-16 13:22:50 +02:00
Jakub Jelinek 37242838cf 4.9.2-6 2015-02-12 11:29:37 +01:00
Jakub Jelinek 62ab2a7e6a 4.9.2-5 2015-01-08 19:03:01 +01:00
Jakub Jelinek 6a4afb791a 4.9.2-4 2015-01-07 18:32:39 +01:00
Jakub Jelinek 74b02e66d0 4.9.2-3 2014-12-17 12:14:24 +01:00
Jakub Jelinek 837cf30304 4.9.2-2 2014-12-12 15:22:19 +01:00
Jakub Jelinek 30d99f0e2c 4.9.2-2 2014-12-12 15:07:02 +01:00
Jakub Jelinek d266a563d9 4.9.2-2 2014-12-12 14:45:09 +01:00
Jakub Jelinek c2cec65b77 4.9.2-1 2014-11-01 17:48:39 +01:00
Jakub Jelinek 72541ade18 4.9.2-1 2014-11-01 17:48:28 +01:00
Jakub Jelinek 18b821470e 4.9.1-13 2014-10-24 11:13:07 +02:00
Jakub Jelinek e353bdf70d 4.9.1-12 2014-10-17 19:29:34 +02:00
Jakub Jelinek 7673a11d74 4.9.1-11 2014-09-30 19:17:36 +02:00
Jakub Jelinek 927fb5cb0e 4.9.1-10 2014-09-30 19:17:27 +02:00
Jakub Jelinek 22888b3c67 4.9.1-9 2014-09-12 12:32:53 +02:00
Jakub Jelinek 9834bb7938 4.9.1-9 2014-09-12 11:09:57 +02:00
Jakub Jelinek 2bdb06cea2 4.9.1-8 2014-08-15 12:43:01 +02:00
Jakub Jelinek 5d988eaf97 4.9.1-7 2014-08-14 01:58:14 +02:00
Jakub Jelinek c2547f9762 4.9.1-6 2014-08-13 11:32:12 +02:00
Jakub Jelinek 384ba4880b 4.9.1-5 2014-08-07 09:51:03 +02:00
Jakub Jelinek f2fb531df3 4.9.1-3 2014-08-01 13:57:52 +02:00
Dan Horák c1037e4cad Merge branch 'master' into f21 2014-07-25 14:00:48 +02:00
Jakub Jelinek 87e4ffffc9 4.9.1-2 2014-07-17 11:27:53 +02:00
Tom Callaway 33116016ca fix license handling 2014-07-12 11:08:07 -04:00
13 changed files with 685 additions and 104 deletions

12
.gitignore vendored
View File

@ -19,3 +19,15 @@
/gcc-4.9.1-20140717.tar.bz2
/gcc-4.9.1-20140801.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
View 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
View 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
View 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
View 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
View File

@ -1,9 +1,9 @@
%global DATE 20140807
%global SVNREV 213696
%global gcc_version 4.9.1
%global DATE 20150212
%global SVNREV 220644
%global gcc_version 4.9.2
# Note, gcc_release must be integer, if you want to add suffixes to
# %{release}, append them after %{gcc_release} on Release: line.
%global gcc_release 5
%global gcc_release 6
%global _unpackaged_files_terminate_build 0
%global _performance_build 1
%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 .cfi_sections >= 2.19.51.0.14-33
# 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
# -static is used several times.
BuildRequires: glibc-static
@ -156,7 +157,8 @@ Requires: cpp = %{version}-%{release}
# Need binutils that support %gnu_unique_object
# Need binutils that support .cfi_sections
# 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
Conflicts: gdb < 5.1-2
Requires: glibc-devel >= 2.2.90-12
@ -193,10 +195,11 @@ Patch9: gcc49-cloog-dl2.patch
Patch10: gcc49-pr38757.patch
Patch11: gcc49-libstdc++-docs.patch
Patch12: gcc49-no-add-needed.patch
Patch14: gcc49-pr56493.patch
Patch15: gcc49-color-auto.patch
Patch16: gcc49-libgo-p224.patch
Patch17: gcc49-aarch64-async-unw-tables.patch
Patch13: gcc49-color-auto.patch
Patch14: gcc49-libgo-p224.patch
Patch15: gcc49-aarch64-async-unw-tables.patch
Patch16: gcc49-aarch64-unwind-opt.patch
Patch17: gcc49-pr64336.patch
Patch1100: cloog-%{cloog_version}-ppc64le-config.patch
@ -717,13 +720,14 @@ package or when debugging this package.
%patch11 -p0 -b .libstdc++-docs~
%endif
%patch12 -p0 -b .no-add-needed~
%patch14 -p0 -b .pr56493~
%if 0%{?fedora} >= 20 || 0%{?rhel} >= 7
%patch15 -p0 -b .color-auto~
%patch13 -p0 -b .color-auto~
%endif
%patch16 -p0 -b .libgo-p224~
%patch14 -p0 -b .libgo-p224~
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}
cat > split-debuginfo.sh <<\EOF
@ -774,7 +778,7 @@ chmod 755 split-debuginfo.sh
%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
%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
@ -1194,6 +1198,9 @@ mv %{buildroot}%{_prefix}/%{_lib}/libitm.spec $FULLPATH/
%if %{build_libasan}
mv %{buildroot}%{_prefix}/%{_lib}/libsanitizer.spec $FULLPATH/
%endif
%if %{build_libcilkrts}
mv %{buildroot}%{_prefix}/%{_lib}/libcilkrts.spec $FULLPATH/
%endif
mkdir -p %{buildroot}/%{_lib}
mv -f %{buildroot}%{_prefix}/%{_lib}/libgcc_s.so.1 %{buildroot}/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
@ -2047,6 +2054,10 @@ fi
%endif
%if %{build_libcilkrts}
%{_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
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/collect2
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/crt*.o
@ -2796,6 +2807,149 @@ fi
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
%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
- update from the 4.9 branch
- PRs debug/61923, libstdc++/58962, libstdc++/61374, libstdc++/61390,

View 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)

View File

@ -9,12 +9,3 @@
fi
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
;;

View File

@ -4,7 +4,7 @@
<a class="link" href="http://www.fsf.org/" target="_top">FSF
</a>
</p><p>
+ Release 4.9.1
+ Release 4.9.2
+ </p><p>
Permission is granted to copy, distribute and/or modify this
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 here:
</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>
+ </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

View File

@ -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
View 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;

View File

@ -2,7 +2,7 @@
+++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
@@ -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"
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* | sparcv9-*-linux*)

View File

@ -1,3 +1,3 @@
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