aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gcc-4.8/gcc/config/aarch64/arm_neon.h22
-rw-r--r--gcc-4.9/LAST_UPDATED2
-rw-r--r--gcc-4.9/MD5SUMS443
-rw-r--r--gcc-4.9/gcc/ChangeLog717
-rw-r--r--gcc-4.9/gcc/DATESTAMP2
-rw-r--r--gcc-4.9/gcc/DEV-PHASE1
-rw-r--r--gcc-4.9/gcc/asan.c15
-rw-r--r--gcc-4.9/gcc/c-family/ChangeLog16
-rw-r--r--gcc-4.9/gcc/c-family/c-common.c15
-rw-r--r--gcc-4.9/gcc/c-family/c-opts.c6
-rw-r--r--gcc-4.9/gcc/c/ChangeLog12
-rw-r--r--gcc-4.9/gcc/c/c-parser.c34
-rw-r--r--gcc-4.9/gcc/cfgexpand.c18
-rw-r--r--gcc-4.9/gcc/config.gcc1
-rw-r--r--gcc-4.9/gcc/config/aarch64/aarch64.h12
-rw-r--r--gcc-4.9/gcc/config/alpha/alpha.c49
-rw-r--r--gcc-4.9/gcc/config/avr/avr-mcus.def2
-rw-r--r--gcc-4.9/gcc/config/avr/avr.c13
-rw-r--r--gcc-4.9/gcc/config/avr/avr.md8
-rw-r--r--gcc-4.9/gcc/config/i386/cygwin.h1
-rw-r--r--gcc-4.9/gcc/config/i386/i386.c22
-rw-r--r--gcc-4.9/gcc/config/i386/i386.md11
-rw-r--r--gcc-4.9/gcc/config/i386/mingw32.h1
-rw-r--r--gcc-4.9/gcc/config/msp430/msp430-protos.h3
-rw-r--r--gcc-4.9/gcc/config/msp430/msp430.c97
-rw-r--r--gcc-4.9/gcc/config/msp430/msp430.md32
-rw-r--r--gcc-4.9/gcc/config/msp430/msp430.opt35
-rw-r--r--gcc-4.9/gcc/config/rs6000/altivec.md112
-rw-r--r--gcc-4.9/gcc/config/rs6000/dfp.md69
-rw-r--r--gcc-4.9/gcc/config/rs6000/predicates.md9
-rw-r--r--gcc-4.9/gcc/config/rs6000/rs6000-builtin.def135
-rw-r--r--gcc-4.9/gcc/config/rs6000/rs6000.c116
-rw-r--r--gcc-4.9/gcc/config/rs6000/rs6000.h15
-rw-r--r--gcc-4.9/gcc/config/rs6000/rs6000.md255
-rw-r--r--gcc-4.9/gcc/config/rs6000/sync.md105
-rw-r--r--gcc-4.9/gcc/config/rs6000/vsx.md14
-rw-r--r--gcc-4.9/gcc/config/sh/sh.c8
-rw-r--r--gcc-4.9/gcc/config/sparc/sparc-protos.h1
-rw-r--r--gcc-4.9/gcc/config/sparc/sparc.c16
-rw-r--r--gcc-4.9/gcc/config/sparc/sparc.md304
-rw-r--r--gcc-4.9/gcc/config/sparc/sparc.opt4
-rw-r--r--gcc-4.9/gcc/config/sparc/sync.md19
-rwxr-xr-xgcc-4.9/gcc/configure2
-rw-r--r--gcc-4.9/gcc/configure.ac2
-rw-r--r--gcc-4.9/gcc/cp/ChangeLog51
-rw-r--r--gcc-4.9/gcc/cp/call.c13
-rw-r--r--gcc-4.9/gcc/cp/init.c3
-rw-r--r--gcc-4.9/gcc/cp/lambda.c13
-rw-r--r--gcc-4.9/gcc/cp/parser.c38
-rw-r--r--gcc-4.9/gcc/cp/pt.c125
-rw-r--r--gcc-4.9/gcc/cp/typeck2.c2
-rw-r--r--gcc-4.9/gcc/doc/extend.texi67
-rw-r--r--gcc-4.9/gcc/doc/install.texi3
-rw-r--r--gcc-4.9/gcc/doc/invoke.texi34
-rw-r--r--gcc-4.9/gcc/doc/sourcebuild.texi31
-rw-r--r--gcc-4.9/gcc/fold-const.c4
-rw-r--r--gcc-4.9/gcc/fortran/ChangeLog10
-rw-r--r--gcc-4.9/gcc/fortran/resolve.c42
-rw-r--r--gcc-4.9/gcc/gimple-ssa-strength-reduction.c17
-rw-r--r--gcc-4.9/gcc/gimplify.c84
-rw-r--r--gcc-4.9/gcc/go/gofrontend/import-archive.cc2
-rw-r--r--gcc-4.9/gcc/go/gofrontend/types.cc37
-rw-r--r--gcc-4.9/gcc/go/gofrontend/types.h10
-rw-r--r--gcc-4.9/gcc/graphite-scop-detection.c11
-rw-r--r--gcc-4.9/gcc/ipa-devirt.c11
-rw-r--r--gcc-4.9/gcc/loop-init.c17
-rw-r--r--gcc-4.9/gcc/lto-streamer-out.c62
-rw-r--r--gcc-4.9/gcc/omp-low.c142
-rw-r--r--gcc-4.9/gcc/opts.c10
-rw-r--r--gcc-4.9/gcc/passes.c34
-rw-r--r--gcc-4.9/gcc/po/ChangeLog4
-rw-r--r--gcc-4.9/gcc/po/sv.po40
-rw-r--r--gcc-4.9/gcc/testsuite/ChangeLog337
-rw-r--r--gcc-4.9/gcc/testsuite/c-c++-common/gomp/atomic-16.c40
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-11.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-27.C2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/alias-30.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60505.c2
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c33
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/vmx/merge-vsx.c27
-rw-r--r--gcc-4.9/gcc/testsuite/lib/target-supports.exp28
-rw-r--r--gcc-4.9/gcc/tree-dfa.c2
-rw-r--r--gcc-4.9/gcc/tree-inline.c8
-rw-r--r--gcc-4.9/gcc/tree-nested.c22
-rw-r--r--gcc-4.9/gcc/tree-ssa-loop-im.c24
-rw-r--r--gcc-4.9/gcc/tree-ssa-propagate.c12
-rw-r--r--gcc-4.9/gcc/tree-ssa-reassoc.c39
-rw-r--r--gcc-4.9/gcc/tree-ssa-structalias.c41
-rw-r--r--gcc-4.9/gcc/tree-ssa-threadedge.c88
-rw-r--r--gcc-4.9/gcc/tree-tailcall.c16
-rw-r--r--gcc-4.9/gcc/tree-vect-data-refs.c8
-rw-r--r--gcc-4.9/gcc/tree-vect-generic.c3
-rw-r--r--gcc-4.9/gcc/tree-vect-loop.c13
-rw-r--r--gcc-4.9/gcc/tree-vect-slp.c42
-rw-r--r--gcc-4.9/gcc/tree-vectorizer.h5
-rw-r--r--gcc-4.9/gcc/tree.h3
-rw-r--r--gcc-4.9/libbacktrace/ChangeLog9
-rw-r--r--gcc-4.9/libbacktrace/mmap.c28
-rw-r--r--gcc-4.9/libgcc/ChangeLog7
-rw-r--r--gcc-4.9/libgcc/config/i386/cygming-crtbegin.c8
-rw-r--r--gcc-4.9/libgfortran/ChangeLog7
-rw-r--r--gcc-4.9/libgfortran/io/list_read.c16
-rw-r--r--gcc-4.9/libgo/config.h.in3
-rwxr-xr-xgcc-4.9/libgo/configure2
-rw-r--r--gcc-4.9/libgo/configure.ac2
-rwxr-xr-xgcc-4.9/libgo/mksysinfo.sh39
-rw-r--r--gcc-4.9/libgo/runtime/mheap.c14
-rw-r--r--gcc-4.9/libgomp/ChangeLog19
-rw-r--r--gcc-4.9/libgomp/testsuite/libgomp.c++/atomic-14.C26
-rw-r--r--gcc-4.9/libgomp/testsuite/libgomp.c++/atomic-15.C26
-rw-r--r--gcc-4.9/libgomp/testsuite/libgomp.c/atomic-17.c26
-rw-r--r--gcc-4.9/libstdc++-v3/ChangeLog83
-rw-r--r--gcc-4.9/libstdc++-v3/doc/html/faq.html2
-rw-r--r--gcc-4.9/libstdc++-v3/doc/xml/faq.xml2
-rw-r--r--gcc-4.9/libstdc++-v3/include/bits/shared_ptr_base.h2
-rw-r--r--gcc-4.9/libstdc++-v3/include/bits/stl_iterator.h15
-rw-r--r--gcc-4.9/libstdc++-v3/include/bits/stl_tree.h1
-rw-r--r--gcc-4.9/libstdc++-v3/include/bits/stl_vector.h14
-rw-r--r--gcc-4.9/libstdc++-v3/include/bits/vector.tcc9
-rw-r--r--gcc-4.9/libstdc++-v3/include/debug/vector2
-rw-r--r--gcc-4.9/libstdc++-v3/include/experimental/optional4
-rw-r--r--gcc-4.9/libstdc++-v3/include/std/functional11
-rw-r--r--gcc-4.9/libstdc++-v3/include/std/iostream6
-rw-r--r--gcc-4.9/libstdc++-v3/include/std/tuple15
-rw-r--r--gcc-4.9/libstdc++-v3/python/libstdcxx/v6/printers.py25
-rw-r--r--gcc-4.9/libstdc++-v3/src/c++98/ios_init.cc2
-rw-r--r--gcc-4.9/libstdc++-v3/testsuite/20_util/tuple/tuple_element.cc3
-rw-r--r--gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc2
-rw-r--r--gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc2
-rw-r--r--gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc2
-rw-r--r--gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc2
-rw-r--r--gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/1.cc4
-rw-r--r--gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/2.cc4
-rw-r--r--gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/3.cc4
-rw-r--r--gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/4.cc4
-rw-r--r--gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/5.cc4
-rw-r--r--gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/6.cc4
-rw-r--r--gcc-4.9/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc2
138 files changed, 3836 insertions, 1118 deletions
diff --git a/gcc-4.8/gcc/config/aarch64/arm_neon.h b/gcc-4.8/gcc/config/aarch64/arm_neon.h
index 2bb42af72..3b0ed0d45 100644
--- a/gcc-4.8/gcc/config/aarch64/arm_neon.h
+++ b/gcc-4.8/gcc/config/aarch64/arm_neon.h
@@ -24819,17 +24819,17 @@ vst4_s32 (int32_t * __a, int32x2x4_t val)
__extension__ static __inline void __attribute__ ((__always_inline__))
vst4_u8 (uint8_t * __a, uint8x8x4_t val)
{
- __builtin_aarch64_simd_xi __o;
- uint8x16x4_t temp;
- temp.val[0] = vcombine_u8 (val.val[0], vcreate_u8 (UINT64_C (0)));
- temp.val[1] = vcombine_u8 (val.val[1], vcreate_u8 (UINT64_C (0)));
- temp.val[2] = vcombine_u8 (val.val[2], vcreate_u8 (UINT64_C (0)));
- temp.val[3] = vcombine_u8 (val.val[3], vcreate_u8 (UINT64_C (0)));
- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[0], 0);
- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[1], 1);
- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[2], 2);
- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[3], 3);
- __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o);
+ __builtin_aarch64_simd_xi __o1;
+ uint8x16x4_t temp1;
+ temp1.val[0] = vcombine_u8 (val.val[0], vcreate_u8 (UINT64_C (0)));
+ temp1.val[1] = vcombine_u8 (val.val[1], vcreate_u8 (UINT64_C (0)));
+ temp1.val[2] = vcombine_u8 (val.val[2], vcreate_u8 (UINT64_C (0)));
+ temp1.val[3] = vcombine_u8 (val.val[3], vcreate_u8 (UINT64_C (0)));
+ __o1 = __builtin_aarch64_set_qregxiv16qi (__o1, (int8x16_t) temp1.val[0], 0);
+ __o1 = __builtin_aarch64_set_qregxiv16qi (__o1, (int8x16_t) temp1.val[1], 1);
+ __o1 = __builtin_aarch64_set_qregxiv16qi (__o1, (int8x16_t) temp1.val[2], 2);
+ __o1 = __builtin_aarch64_set_qregxiv16qi (__o1, (int8x16_t) temp1.val[3], 3);
+ __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o1);
}
__extension__ static __inline void __attribute__ ((__always_inline__))
diff --git a/gcc-4.9/LAST_UPDATED b/gcc-4.9/LAST_UPDATED
index a290d11bf..67c18308d 100644
--- a/gcc-4.9/LAST_UPDATED
+++ b/gcc-4.9/LAST_UPDATED
@@ -1 +1 @@
-Obtained from SVN: tags/gcc_4_9_0_release revision 209612
+Obtained from SVN: branches/gcc-4_9-branch revision 210447
diff --git a/gcc-4.9/MD5SUMS b/gcc-4.9/MD5SUMS
index 334123a99..06afc914f 100644
--- a/gcc-4.9/MD5SUMS
+++ b/gcc-4.9/MD5SUMS
@@ -1,5 +1,5 @@
# This file contains the MD5 checksums of the files in the
-# gcc-4.9.0.tar.bz2 tarball.
+# gcc-4.9-20140514.tar.bz2 tarball.
#
# Besides verifying that all files in the tarball were correctly expanded,
# it also can be used to determine if any files have changed since the
@@ -19,23 +19,11 @@ d32239bcb673463ab874e80d47fae504 COPYING3
8d6d05e379c4a8df790fbc678299a8a3 ChangeLog
09538b708302f1735f6fa05b622ecf5e ChangeLog.tree-ssa
79ef16e405f5873970e04cee49091ff8 INSTALL/README
-2ac324e177e1068e2c7e9c2ad3aa779d INSTALL/binaries.html
-f2594062b115667717f768157a776465 INSTALL/build.html
-a75a16d0b16482ab73219c31f90f1265 INSTALL/configure.html
-a09a2c134251cbc03a4d8c47881c96bf INSTALL/download.html
-f71e8877b0791a16025b2bd2663f0865 INSTALL/finalinstall.html
-d365b39a74c405586955c87e540531ac INSTALL/gfdl.html
-4e742a49a16683b5759b0763fb109e84 INSTALL/index.html
-37c24a83ee5d2059fce28b7e56527bf8 INSTALL/old.html
-bca4120af0b2247e337e0b6991ed3702 INSTALL/prerequisites.html
-f060c2181d42f672076f86141966e64d INSTALL/specific.html
-86dd39fb0df38e33811ae7942add5854 INSTALL/test.html
-80f106aa8640529921d7dfcb42e401ee LAST_UPDATED
+32065b446be1e68d3e09c2a7d4b9b6fe LAST_UPDATED
5df43eb77ba93510a6adee7bd06bd774 MAINTAINERS
e6078d46d3729f3f514954081bfd9480 Makefile.def
356452c2d3677e10f0047801465f2ea7 Makefile.in
f3a76b2dae23759df8f4bf5f1088f950 Makefile.tpl
-b5c55edd6d5a6fa42f76d5c01460a014 NEWS
80d26bc3b1ad4f6969a96a24c9181bf5 README
b510a5285eb05298b5f3d9f5ae920588 boehm-gc/AmigaOS.c
2caafacabf758bb76a9dfce1fc544b97 boehm-gc/BCC_MAKEFILE
@@ -550,12 +538,12 @@ a5e817d35ded04a0fb03999b50c0e89e fixincludes/tests/base/tgmath.h
955462b555900ecd3934223c64e21fa7 fixincludes/tests/base/types/vxTypesBase.h
c78e762f2c91f2af991feda7d3d7f4b2 fixincludes/tests/base/unistd.h
f9abccf4b8b7eac82a99bb1f9ef6832f gcc/ABOUT-GCC-NLS
-12c685a5239eb2421fb99d6211a31d2c gcc/BASE-VER
+b73567b635a03772e7a52b29fa7a12ee gcc/BASE-VER
59530bdf33659b29e73d4adb9f9f6552 gcc/COPYING
a916467b91076e631dd8edb7424769c7 gcc/COPYING.LIB
d32239bcb673463ab874e80d47fae504 gcc/COPYING3
6a6a8e020838b23406c81b19c1d46df6 gcc/COPYING3.LIB
-abe43b4eec0f7a36b8fff4884ea829a4 gcc/ChangeLog
+1b595657f49504b7928893049e6b5f8d gcc/ChangeLog
a3b63c675afa7a655cc2bfa8a907af79 gcc/ChangeLog-1997
d9a88529352a010253c2e8fb1ed6023b gcc/ChangeLog-1998
240f08f81cb4699e8b49347db38233db gcc/ChangeLog-1999
@@ -579,8 +567,8 @@ fb3fadb88e1d2b3b640cfaaa5ff11780 gcc/ChangeLog.graphite
3eb07e0b2e542409bf73d359f7f65609 gcc/ChangeLog.ptr
e13638e26743ba41e6011b76cc00d9a9 gcc/ChangeLog.tree-ssa
739ab47f6425bcea1d05e4fc0542de54 gcc/ChangeLog.tuples
-766c23d7fd70339aa367112c80a90a13 gcc/DATESTAMP
-d41d8cd98f00b204e9800998ecf8427e gcc/DEV-PHASE
+949ce0bd3b0ab7ddc3fbd6d9613b6110 gcc/DATESTAMP
+afbe595ca33384182f656ad1e88e8615 gcc/DEV-PHASE
eb92e1ff5e982ca07e173e0eb286d243 gcc/FSFChangeLog
30e1e33411566388b3164558482dc5e6 gcc/FSFChangeLog.10
36698274bb69e2ada20f5cc434f3caa5 gcc/FSFChangeLog.11
@@ -2710,7 +2698,7 @@ ea19de2a367c59c3e9ca2ffb169870f9 gcc/alias.c
f806ef31303c8073c9399221837a0cca gcc/alias.h
62460fd310b0c679995a9f3e7a5dd196 gcc/alloc-pool.c
381b28a1bdd5698b2aa6b37bbe7bd591 gcc/alloc-pool.h
-f2703a2c5283028811b9314f55a3f876 gcc/asan.c
+01f9205a58ab703ad269012b0f203bba gcc/asan.c
3e1fa4c99f53f52f13177fbdc594c191 gcc/asan.h
cfd590b0822ba24a9383ebb7ce10a076 gcc/attribs.c
a53a9ce9c944413119fc0a25fb06a976 gcc/attribs.h
@@ -2726,12 +2714,12 @@ af0e8c840fa48a6200875c0df80dd7f7 gcc/builtin-attrs.def
435c31f0e374dedc231c9bfea1ee4de0 gcc/builtins.c
709447be4b984f09869436e1af94d606 gcc/builtins.def
4b25cb43c45b2775bf3398cad0b2f997 gcc/builtins.h
-429fcb29f67015be15355b2e9669d103 gcc/c-family/ChangeLog
+9f0c221e48b3c0f248b6579f3430949f gcc/c-family/ChangeLog
73540d5b0f49564e0c08e24b6feeb126 gcc/c-family/array-notation-common.c
522dd88f1775b9c27c88bdec1b215f33 gcc/c-family/c-ada-spec.c
10157e4802b298ec57f6bbe626694034 gcc/c-family/c-ada-spec.h
005a6e6078a443f37358315735999e75 gcc/c-family/c-cilkplus.c
-fe4405afc690b12573dd77c70f79a145 gcc/c-family/c-common.c
+bc69950fa6c0f58ab1b4e3b86524100b gcc/c-family/c-common.c
3ce0acd449868895cda4785a578266e2 gcc/c-family/c-common.def
5d7444bae9d31d85d704048f1092625e gcc/c-family/c-common.h
3b67756246e8ee78f5476f7d6e1e5a26 gcc/c-family/c-cppbuiltin.c
@@ -2742,7 +2730,7 @@ d903f037f15d1a4333bff696b8b4951a gcc/c-family/c-format.c
a3c101e11d8d2321151be53333283c58 gcc/c-family/c-lex.c
5c6cd6a62c649574128a4651f621a0b0 gcc/c-family/c-objc.h
1dc164b29bfc4608e65bc1dbbf3075f3 gcc/c-family/c-omp.c
-cb6a908fe3e325518d31541c95382ebd gcc/c-family/c-opts.c
+9dadf710ab87357edd7ac40326f605d2 gcc/c-family/c-opts.c
6f8ef838c68a594024f4c12c021f38be gcc/c-family/c-pch.c
a764fac4f453e4c326786cf0400015da gcc/c-family/c-ppoutput.c
b657c501deaf141499da23ce44944859 gcc/c-family/c-pragma.c
@@ -2759,7 +2747,7 @@ b657c501deaf141499da23ce44944859 gcc/c-family/c-pragma.c
8041b1cda8919775362c4465096c609b gcc/c-family/cilk.c
85b441a3f28a2bd4e2ca99f03490e65e gcc/c-family/cppspec.c
00be2969ca302d49f76b65173590c942 gcc/c-family/stub-objc.c
-2dff10b90e21925148128f0ea3ca20f0 gcc/c/ChangeLog
+6f9808f9345f7c22d59bb95563f90d87 gcc/c/ChangeLog
5d46413a194e3bb9b8b12f6e49e911c3 gcc/c/Make-lang.in
9ec984df7cf8a2836f79a2162e03b3b6 gcc/c/c-array-notation.c
f8a2e7536c39b4d1e3f4b1d5ee6d62c5 gcc/c/c-aux-info.c
@@ -2770,7 +2758,7 @@ f8a2e7536c39b4d1e3f4b1d5ee6d62c5 gcc/c/c-aux-info.c
8b01b74da83bfb4d6dc1127114c72f94 gcc/c/c-lang.h
e8fa0ec0164ceb8a90d6ae74f9c7fd1b gcc/c/c-objc-common.c
941499386ac0a23999c942a8986f8e61 gcc/c/c-objc-common.h
-1307f7b7625b59fe133120362328b6da gcc/c/c-parser.c
+5fa6621cc0ca52113a4b7758ec0c318b gcc/c/c-parser.c
66a995603b2cd1394afbfb29b90fe209 gcc/c/c-tree.h
b3b78f574305a73e4d51b5fc69bf9dda gcc/c/c-typeck.c
62032db4c55340bd16e7f80d99c0b016 gcc/c/config-lang.in
@@ -2783,7 +2771,7 @@ e136a667dd62eb56a89111c4fcb045eb gcc/cfg.c
02943835098f2e8538a6df30ad37cf85 gcc/cfganal.c
4d8cc1876560628dabb57cefce453d9d gcc/cfgbuild.c
373997b7234f5abbda49e47e5cd973ca gcc/cfgcleanup.c
-520104bc5700831e918532f501fa7010 gcc/cfgexpand.c
+567226e4328d5bfff1f1b9746e1e8c2e gcc/cfgexpand.c
b3c947b28531afadb81599f4a0d73783 gcc/cfgexpand.h
a6a0c9ebc641dfa71f1f2e5188b0da21 gcc/cfghooks.c
17095bd67a8350591e1bd47ec9355698 gcc/cfghooks.h
@@ -2840,6 +2828,7 @@ d34f05fd6320395d42378fe449c6f95b gcc/common/config/m68k/m68k-common.c
c89c903fdaeebf0937c539fe077d79bc gcc/common/config/mips/mips-common.c
fc30a9a41b3f761ba5fff6f2c1581944 gcc/common/config/mmix/mmix-common.c
e3c6c57c2590f0a3610edb36b66dfc03 gcc/common/config/mn10300/mn10300-common.c
+a5289d44a7568876d6b8474ce02597f1 gcc/common/config/msp430/msp430-common.c
ef89260dc33590c40c56cc99fedc1511 gcc/common/config/nds32/nds32-common.c
598e0913f0667a262988f8a38927b2c6 gcc/common/config/nios2/nios2-common.c
5cd6f4c52d593fe8262f4f38668e7bf0 gcc/common/config/pa/pa-common.c
@@ -2861,7 +2850,7 @@ ef0ef64208ca9035f93ed6d6e9606df6 gcc/common/config/xstormy16/xstormy16-common.c
2ebc5e4eccb7d2c52897dd83a4be28a7 gcc/compare-elim.c
e82a81c423eccb73f4e9f04c09a5cae1 gcc/conditions.h
a40ac599c845be41c961d15dfd9559b3 gcc/config.build
-7ec66ee3b384f4fc04b63987c11b3e21 gcc/config.gcc
+089f42ad208698ae8b42dc83c69d34fa gcc/config.gcc
9eba81e694fe412bcfa8aafa6743a568 gcc/config.host
0d9065d0b9bc757911399a1b4127aa6d gcc/config.in
8e697813dc96ca90f5d0f4c196efe2cc gcc/config/README
@@ -2879,7 +2868,7 @@ e786c44f23ac42a3b66f08e8865d0b0a gcc/config/aarch64/aarch64-protos.h
e0f8f1d76d1dae334cf39aaf5a922533 gcc/config/aarch64/aarch64-simd.md
d0075eefdaf65db63dacef89ea39e1ea gcc/config/aarch64/aarch64-tune.md
b8d56e96679088e423ae1431579ee273 gcc/config/aarch64/aarch64.c
-0d33e7e507dd97cbe7bf272379fa8dab gcc/config/aarch64/aarch64.h
+52f8eb234212c8c48c3468fd5318f1e9 gcc/config/aarch64/aarch64.h
f63fe28acb626e46d41cba25d7ddbdce gcc/config/aarch64/aarch64.md
5f65f38fa897daabd9e7f57dd1a9e90a gcc/config/aarch64/aarch64.opt
d744a2fc495a74654c2bc56f58b45274 gcc/config/aarch64/arm_neon.h
@@ -2894,7 +2883,7 @@ a381f4f44bffba3068dea2bcf86b1c37 gcc/config/aarch64/t-aarch64
c5163265d2d83b8fe360d25202a8b342 gcc/config/aarch64/t-aarch64-linux
9d0a5d95304a9bd6b70b0e316bd30832 gcc/config/alpha/alpha-modes.def
b1dbf3309f3744b073c14d10174ad350 gcc/config/alpha/alpha-protos.h
-34f1fc8f7bc037838e036d6819487b42 gcc/config/alpha/alpha.c
+6ed07ff7ed14c7cc10a8a7c932a8257c gcc/config/alpha/alpha.c
26d7e3357f7c361c8e6343bd33837415 gcc/config/alpha/alpha.h
b88e1217fbf0f3dae5b18f17063bf733 gcc/config/alpha/alpha.md
0112499d08da07e950408270a411f17b gcc/config/alpha/alpha.opt
@@ -3036,14 +3025,14 @@ b5a2b09861de6689113db05b64719022 gcc/config/avr/avr-arch.h
5b18e57e6b772fc6eff612a345599f23 gcc/config/avr/avr-dimode.md
964d39554ea32300f4353e8bf87c115a gcc/config/avr/avr-fixed.md
0ea9e1292fa63ad32d73b8c1ea6175e9 gcc/config/avr/avr-log.c
-12514ae1006cd842cff739c9680f69e2 gcc/config/avr/avr-mcus.def
+48400c902cb5f518f34efe8178f569b4 gcc/config/avr/avr-mcus.def
f2654233df6eb02ba173ff479c08e9a5 gcc/config/avr/avr-modes.def
f18b33ac6648ea748c8b996ee866aa3a gcc/config/avr/avr-protos.h
5ebe500ff3ac2700f5b1bc9c761a0c87 gcc/config/avr/avr-stdint.h
7344d18acafd2951ffbf2c0a9f014f08 gcc/config/avr/avr-tables.opt
-c4c13b493b766197778c55301a2613e3 gcc/config/avr/avr.c
+039808b0d14099c7c5d41b144f7db0f0 gcc/config/avr/avr.c
14d8b02e8292c150bb47704e7442bc82 gcc/config/avr/avr.h
-1cc6502c3e804c18ea0d4e157317d782 gcc/config/avr/avr.md
+02d52e6f77d0e264500661cc23d37625 gcc/config/avr/avr.md
421709cbe0735ad8406c0430cf5087d8 gcc/config/avr/avr.opt
d661391f9cbec6e8f6a68663a2f1eef7 gcc/config/avr/avrlibc.h
df7d2059ef5d7a0c8b8680202c92f0c8 gcc/config/avr/builtins.def
@@ -3239,7 +3228,7 @@ a9e1cde30a6ecf9d70e7db1d49a3a8f6 gcc/config/i386/crtdll.h
24c5f3a19dc3f8efde748b4e1fb28aa1 gcc/config/i386/cygming.opt
e21436b3decf985d45fcb3570935958f gcc/config/i386/cygwin-stdint.h
b8c56841226d00f3611e76df81bc1c32 gcc/config/i386/cygwin-w64.h
-a4281656c7c96108f69b4d49b64346bc gcc/config/i386/cygwin.h
+04d0e764f6744c7e9b76a39d0381d053 gcc/config/i386/cygwin.h
21dcaf77cc8fb36ae705ee603ce101e7 gcc/config/i386/darwin.h
f662aa7a9eab8bad5800512a3187b0c8 gcc/config/i386/darwin64.h
e7c8adf4ccaf394835acedd1e77b0be5 gcc/config/i386/djgpp-stdint.h
@@ -3271,9 +3260,9 @@ a206f895a51dca0acbbd5c40439f43ac gcc/config/i386/i386-c.c
fbc0e51208d80f573c53d5b2172b2750 gcc/config/i386/i386-modes.def
1fc953e4fa5bc7c93802f7952b7dafbc gcc/config/i386/i386-opts.h
b2009cc823c7348862f1dd5b62268874 gcc/config/i386/i386-protos.h
-5a3d6e3603783530ff8af3cd36274b56 gcc/config/i386/i386.c
+80cb1beb9fc15ad1a100642a6d5b61d6 gcc/config/i386/i386.c
cc283b2c0490928dcd63471d19148858 gcc/config/i386/i386.h
-f6762ecc5776c962f05fbd3d189a99b4 gcc/config/i386/i386.md
+0d367472a0c0f4dc0c6397ea921c71ed gcc/config/i386/i386.md
8ae240f9350420a2a75307b02b20422a gcc/config/i386/i386.opt
ddbc3d63f2446262d897ba8f20043c58 gcc/config/i386/i386elf.h
c238f4d065449a93da6bce13121a2c3d gcc/config/i386/ia32intrin.h
@@ -3295,7 +3284,7 @@ b1b30be7ff3a4fd669a9f6b11c2c8195 gcc/config/i386/lzcntintrin.h
02bfe0ac147bcb4c9f26f542a3ea1c3a gcc/config/i386/mingw-w64.h
666ec7e2e9890486e50762bfe1ca7c25 gcc/config/i386/mingw-w64.opt
d17b901c2f628cb44f5a234eb3572a92 gcc/config/i386/mingw.opt
-8d288d09714f4e79aae5458ef6848407 gcc/config/i386/mingw32.h
+17134943d15d722dccd7c33d27496b58 gcc/config/i386/mingw32.h
97f47580518fbe15e82cf9bd4741669f gcc/config/i386/mm3dnow.h
e4e116de997ab92599e67a55612e8c65 gcc/config/i386/mmintrin.h
6417b98a54d4b0b7a5161245196159f4 gcc/config/i386/mmx.md
@@ -3670,11 +3659,12 @@ f276505b774e975b88b6c90362783e73 gcc/config/msp430/README.txt
4772463c3b1ea64d84fc459630245dc6 gcc/config/msp430/constraints.md
81c5efbfbbf0226a94fec244522f0086 gcc/config/msp430/msp430-c.c
45e698ba893f440905885dced318b218 gcc/config/msp430/msp430-modes.def
-2725dd8935cc0b1fe508a73747bfee2e gcc/config/msp430/msp430-protos.h
-9cd05a6d3ab08982dab0bf70da241111 gcc/config/msp430/msp430.c
+e343f3539654f52b3b9a63601843a705 gcc/config/msp430/msp430-opts.h
+da9601ef9725a1ac04f31f9dd8d88b8e gcc/config/msp430/msp430-protos.h
+dfa881ebf5fb04e42e9dd9567737d88e gcc/config/msp430/msp430.c
b2e61ed52e0d72055c1528a3de95164a gcc/config/msp430/msp430.h
-4955a52bd8647e7a5ed0a596c1558c55 gcc/config/msp430/msp430.md
-b73015e7d728b07e82f86543b578c7cf gcc/config/msp430/msp430.opt
+6c0490f4e6405dae9086348b2e578a5a gcc/config/msp430/msp430.md
+8a2e57378fa5d5962cae3a7e95498eec gcc/config/msp430/msp430.opt
271e888963ee26b4096af0f70230db1b gcc/config/msp430/predicates.md
dc8043434cd35a5508738f23cced8f6a gcc/config/msp430/t-msp430
bef2e0bb04dc995149b8679834ba792e gcc/config/nds32/constants.md
@@ -3808,7 +3798,7 @@ e6ce7b8fd7aaeddaa95722dd2257db20 gcc/config/rs6000/aix53.h
a126c516a8ecc213c4eae1949e1a2e15 gcc/config/rs6000/aix61.h
7ba56f31fe475125fb79489a951e14c5 gcc/config/rs6000/aix64.opt
f99b25eefb9db62d51f310e5b787ff5a gcc/config/rs6000/altivec.h
-c500bcd8daa1df5dd882d5357386ea5c gcc/config/rs6000/altivec.md
+87ac343d66c31032b41c494d38ffb0d9 gcc/config/rs6000/altivec.md
87ecd670e3f1a8e2186f29d0b3ee3720 gcc/config/rs6000/biarch64.h
07348cec6e9bf39592be4fad5e165f02 gcc/config/rs6000/cell.md
f3ab2b31f64194613298ea7a70a5e4ce gcc/config/rs6000/constraints.md
@@ -3820,7 +3810,7 @@ d99ffcd0ce9424a55a2fea384bb1686e gcc/config/rs6000/darwin.opt
02ca5caa36de5edf56fe24dbbda6b294 gcc/config/rs6000/darwin7.h
5cbd6ff218133094f33d29711429a7bf gcc/config/rs6000/darwin8.h
1d8de40ad03abb984184f2bd449a4029 gcc/config/rs6000/default64.h
-7a1401c61271d7d7ad136bbb68b29ea1 gcc/config/rs6000/dfp.md
+e0c3e640aac757ec2f33aee03cea2181 gcc/config/rs6000/dfp.md
2441ed646ceea5331ee440418bd26204 gcc/config/rs6000/driver-rs6000.c
c8949ac54fd92b36837415b4558f7448 gcc/config/rs6000/e300c2c3.md
1f15aab6bf2c740614cb66d636c01a19 gcc/config/rs6000/e500.h
@@ -3859,8 +3849,8 @@ fa3263af675169a19805527633e55a4c gcc/config/rs6000/power5.md
ecc63691ee399be45afbeb50ef539bb7 gcc/config/rs6000/power8.md
0eca30e0219caa2c3b9107b8a8934167 gcc/config/rs6000/ppc-asm.h
a399e486f9d1ec320a662bd4afffd037 gcc/config/rs6000/ppu_intrinsics.h
-034b4482bb5c43d49fe72d5ee86f5755 gcc/config/rs6000/predicates.md
-1e67b012ea1a2a9bc17967d0176399b6 gcc/config/rs6000/rs6000-builtin.def
+7b4965895e3de2671c0d4baec4bac25c gcc/config/rs6000/predicates.md
+199997619c633a5f35cb5eab07c79340 gcc/config/rs6000/rs6000-builtin.def
e03a012414e4363cc0297e7022d3d17c gcc/config/rs6000/rs6000-c.c
b8e72be81712f25cfaede9887cc18d63 gcc/config/rs6000/rs6000-cpus.def
2b7ac7ddb1e383347e8684708991a45c gcc/config/rs6000/rs6000-linux.c
@@ -3868,9 +3858,9 @@ b8e72be81712f25cfaede9887cc18d63 gcc/config/rs6000/rs6000-cpus.def
09c1fbf640b3bad5ae3bb2300301eaa8 gcc/config/rs6000/rs6000-opts.h
1e962a6fe5044ba2cf188d320875649b gcc/config/rs6000/rs6000-protos.h
91c3c0b251bd8b64407d2c54008592a3 gcc/config/rs6000/rs6000-tables.opt
-8e99fce650a2d7c4802477b619849298 gcc/config/rs6000/rs6000.c
-a3ad0b92d8a977d3b7d0cef20546c521 gcc/config/rs6000/rs6000.h
-7e0dd7ce95a25e8ce508d8f1d07e91a5 gcc/config/rs6000/rs6000.md
+5639df1ac901bcb8084e128a7de9dbd6 gcc/config/rs6000/rs6000.c
+93569957cdaa77cfc2d94fe05235c091 gcc/config/rs6000/rs6000.h
+5dcf28f30440b7fa4f61f8203da12c0c gcc/config/rs6000/rs6000.md
7343b7045580eba4411121ec1934ecad gcc/config/rs6000/rs6000.opt
4449f37807aeb14832c50529169a3ffe gcc/config/rs6000/rs64.md
f33e13ba9553f9dffed8aa05d8df34d1 gcc/config/rs6000/rtems.h
@@ -3880,7 +3870,7 @@ aeae742b02e4f6ac96fa1a3d18fad193 gcc/config/rs6000/si2vmx.h
a9da2a60ceb8a34d28fd44dfb88da7f7 gcc/config/rs6000/spe.h
d8d983e9d6d999fdf563dfe20ed78474 gcc/config/rs6000/spe.md
1bd465f61447745c22afbe27e0f381ec gcc/config/rs6000/spu2vmx.h
-10a887e10132e9413706333244ff91d4 gcc/config/rs6000/sync.md
+a9f8e6036f73260991227c777d01a371 gcc/config/rs6000/sync.md
8a041c83cc607c42aa7ae7046df74070 gcc/config/rs6000/sysv4.h
7a548d9a782e0a42d0e7ff42a1f331b7 gcc/config/rs6000/sysv4.opt
3b9a0af37461971b0c7698f018bd13af gcc/config/rs6000/sysv4le.h
@@ -3910,7 +3900,7 @@ d23864248497f7f5544c2e1916dc402d gcc/config/rs6000/t-xilinx
b1f48ff99abc14b3f61842bd2ad8cb9f gcc/config/rs6000/titan.md
0ac3e3c82b12030f8797bf598d14a7df gcc/config/rs6000/vec_types.h
afa1b08d7889dfa24025d27c5ebcf9d2 gcc/config/rs6000/vector.md
-619057d84062c67d970112fcf127b91f gcc/config/rs6000/vsx.md
+066a1b78ea51f7755473464b781aa910 gcc/config/rs6000/vsx.md
0c2404e4c53d11d18595ce802fcd85df gcc/config/rs6000/vxworks.h
5c2f724024335c015d76fe32d3da6de9 gcc/config/rs6000/x-aix
af875b9bcb1ec1da1f33d5e34df8ca7b gcc/config/rs6000/x-darwin
@@ -3987,7 +3977,7 @@ fd503e66901381fd4a42832d0d3a26d0 gcc/config/sh/rtemself.h
815bc614203e150615c85713d1aa605a gcc/config/sh/sh-mem.cc
ee56adc86b26db0a967855a075947e96 gcc/config/sh/sh-modes.def
e0d982724069321bc7bdc47869642298 gcc/config/sh/sh-protos.h
-ef9ef4706de1da43d91e1037839b9a2d gcc/config/sh/sh.c
+ca269f7f50036a7abfe4c200bef3b526 gcc/config/sh/sh.c
c4e8a30076baf764ee83c7a1427cad1c gcc/config/sh/sh.h
56bc2118729eb86840eaa403473be07a gcc/config/sh/sh.md
738c29389fcea942f96d0f3ef40b61f8 gcc/config/sh/sh.opt
@@ -4046,14 +4036,14 @@ a7f11fb79691ee2c896b0cf2880ed295 gcc/config/sparc/predicates.md
4c9272c156a54169682c4d78519e0574 gcc/config/sparc/sparc-c.c
fe11466ca359c98303d1d5a77efc7277 gcc/config/sparc/sparc-modes.def
b3a2f800b64aa009f99321dfb6a0f3b6 gcc/config/sparc/sparc-opts.h
-d293d1f15e3d50817d45094addc03686 gcc/config/sparc/sparc-protos.h
-cc83181bf17b40dacf1b54d35a524561 gcc/config/sparc/sparc.c
+10784bdb9b36f0c0d8072f1299f9fa9c gcc/config/sparc/sparc-protos.h
+80cf8d1da0e7beece46d81df37a27494 gcc/config/sparc/sparc.c
056e9cce1df0c82fbbf3df07ca8247c8 gcc/config/sparc/sparc.h
-1bc8e3f63a355025962c17184c8abf24 gcc/config/sparc/sparc.md
-1ecc43f754c828db35372a102bd69702 gcc/config/sparc/sparc.opt
+809a67243ab306f705824adc49250783 gcc/config/sparc/sparc.md
+0fc21233cd7245bdd222051524ce0840 gcc/config/sparc/sparc.opt
a4e9378ba096bbe768f431e5efe542fe gcc/config/sparc/sparclet.md
23633c532af69df48b8945cd85fa8e89 gcc/config/sparc/supersparc.md
-02061225bf4b9a7f1d10b8074a261c5b gcc/config/sparc/sync.md
+9a1ba094e19de6682a05f2e661b89991 gcc/config/sparc/sync.md
06afb5edf97e75d9c98bd0c7feee7ce8 gcc/config/sparc/sysv4.h
a833a63e73fa8b2cd6d957a7dba46b80 gcc/config/sparc/t-elf
c220a70c033b2f3839f5da1eaf86bd51 gcc/config/sparc/t-leon
@@ -4218,8 +4208,8 @@ a4953dec370aeb83aa4c300580989aca gcc/config/xtensa/xtensa.c
3403522b62b3afbdee0c6ba1c08dd9b5 gcc/config/xtensa/xtensa.h
d0f70581147ddc12bdd0b9b2002099f9 gcc/config/xtensa/xtensa.md
3626e5875265724499b1e0889df223f8 gcc/config/xtensa/xtensa.opt
-8100621be2c42a551591323bb0dec425 gcc/configure
-8ff785664c06b5945215ea6ed1108f6c gcc/configure.ac
+1bddc6e6cb6791968f6eba3c71377361 gcc/configure
+489a2e12b18ab2dfa155ca33870ead56 gcc/configure.ac
3f8600d94fa18c9df14202629b15c30a gcc/context.c
a105f73fec5a545a02b66e02a5fc9cd1 gcc/context.h
ad2e5674b80419b7901057a9553438d4 gcc/convert.c
@@ -4227,7 +4217,7 @@ ad2e5674b80419b7901057a9553438d4 gcc/convert.c
7f281fac897d0a12b476c90692737329 gcc/coretypes.h
77f22f105dfdc4a9829de4737400fdc3 gcc/coverage.c
fc0ea61bb4cd0e88fcb974874b454f63 gcc/coverage.h
-96599999d0dbcb083641d0fbe78a27d6 gcc/cp/ChangeLog
+3d179e6d81c9de463e40a21494f73385 gcc/cp/ChangeLog
d271e3663538ba1f3281cab3838e92cd gcc/cp/ChangeLog-1993
f5a44adbc05521162350ca409d1d95ce gcc/cp/ChangeLog-1994
ac55db48d964cb5469ff03c1cd3ee04d gcc/cp/ChangeLog-1995
@@ -4253,7 +4243,7 @@ c1c7801b9b0f379e702a4f6cb83972e7 gcc/cp/ChangeLog.ptr
9aa3cd9f75c785de9f51446e3f295515 gcc/cp/ChangeLog.tree-ssa
455a052c3ba589ded45beac207aae43f gcc/cp/Make-lang.in
2a39a12cc0dff2b94a44e84e818ded9e gcc/cp/NEWS
-1ed220fc9a91b1e2d8055ed57c933c8c gcc/cp/call.c
+99595a8cd58280da4deb972cf128d810 gcc/cp/call.c
e184e53ef1c7ccede7b4257052006bd7 gcc/cp/cfns.gperf
66d1092c8be3fffdb7372b46a158ebf6 gcc/cp/cfns.h
910d44b3e4d1a6bf0e9a3c7dc0598bf9 gcc/cp/class.c
@@ -4278,8 +4268,8 @@ dbc65ed107b0f033dbc47a1901d3c6be gcc/cp/decl2.c
eb58e03f4b2c41c5e089789e2a83f27e gcc/cp/expr.c
f825a4855a4c9f2390afb1302bb4d8d6 gcc/cp/friend.c
4e1f37f96a3d7f70ba70e24cba59dc3a gcc/cp/g++spec.c
-a5dabcb829765fe2506fdfe679534cb1 gcc/cp/init.c
-0bb50f920201a7665c66a8b34c1dbbad gcc/cp/lambda.c
+6d41b0db315a817ab75ed611998ad491 gcc/cp/init.c
+be78b35f070bd7382c2233ae8aada26b gcc/cp/lambda.c
d505a249800c51140eb8d126b620394f gcc/cp/lang-specs.h
a9d9b7c8443dcc78573259632806eb39 gcc/cp/lex.c
2c850a80db903247f001008baf357822 gcc/cp/mangle.c
@@ -4288,9 +4278,9 @@ a331b4a15818458a23cced154db41740 gcc/cp/method.c
2fe9fc47b363db0eb4eb053c2b3b5109 gcc/cp/name-lookup.h
a4c4160079301223008ae949e923ae09 gcc/cp/operators.def
cab3f4d3911d5d98b499168510c420bf gcc/cp/optimize.c
-2da908e5f3db5d3a3aa0afe175078c9b gcc/cp/parser.c
+964b2c4a9b6925da8a808c8abd5304ca gcc/cp/parser.c
7dad8f7951a41247d36a1491c5ed3333 gcc/cp/parser.h
-74b0261982aec2eeb078b2eb670ffb00 gcc/cp/pt.c
+ecddb19d633e9d0cbf50ab24e1b159b4 gcc/cp/pt.c
1fb212eac0559ba1dcb95d7a26602e06 gcc/cp/ptree.c
da1e4054f89a7112f63ce85825932ca5 gcc/cp/repo.c
42e298dd7b029109771b91c2ed2adaec gcc/cp/rtti.c
@@ -4299,7 +4289,7 @@ fd23ab9c86b9d7c857c0440da98be254 gcc/cp/semantics.c
b1bc4d92bafd656e405c2a58d608378f gcc/cp/tree.c
1adee27afd0240132800372d13882a94 gcc/cp/type-utils.h
03213757a1dd8df87d0616f27d88863d gcc/cp/typeck.c
-eb3af5ebc8aeeffe9beaffbdef78ca84 gcc/cp/typeck2.c
+de80a3b703284fd08e3fb5e495c0440f gcc/cp/typeck2.c
74dbaaf0e744d50ebddff66290b3dfd4 gcc/cp/vtable-class-hierarchy.c
c69f7cfa3152c54d30a4413e74a55584 gcc/cppbuiltin.c
3ec7183b5a34a0f3e00a2f1e80b9b1d4 gcc/cppbuiltin.h
@@ -4338,7 +4328,6 @@ dfa2f3caa589d990913f898317c3ba04 gcc/diagnostic-core.h
ea862db8f1c974282768561f5c6fd263 gcc/diagnostic.c
a82f4c29248edc233f641579ab6e772a gcc/diagnostic.def
439f0d28ab1a85692b11ba394cc4e6f6 gcc/diagnostic.h
-4fbbb71db1722ae5342765a0b1fbc441 gcc/doc/aot-compile.1
a4f5d332dae4a0fd204d8bb28855e9b0 gcc/doc/arm-acle-intrinsics.texi
8eddcd81550867f0cb449d6d2643e9e8 gcc/doc/arm-neon-intrinsics.texi
9afccee176594b00a1b7a15878bebcd0 gcc/doc/avr-mmcu.texi
@@ -4350,38 +4339,19 @@ f2623c6aeaa1ad4a6474141b9dd5f995 gcc/doc/configfiles.texi
429106f28aff7ad80a86d1442fb5003d gcc/doc/configterms.texi
3c64bdb237b5fc38837b9b9bc2fda853 gcc/doc/contrib.texi
6436407c42cecb738124becb9079d978 gcc/doc/contribute.texi
-34436461cdc0c7ecfb7a40b5e686e422 gcc/doc/cpp.1
-b466d87d5a11bb0e1bea3a60a6645b7b gcc/doc/cpp.info
7787bf2f2843f9e075dcabc3ef549147 gcc/doc/cpp.texi
4aa9560d9a516a5df4f7429c00ba1fb2 gcc/doc/cppenv.texi
-d1619b326f23a607e6cb3a044afcc4df gcc/doc/cppinternals.info
ffb92a322644e39300d1398a048cb9a8 gcc/doc/cppinternals.texi
249506473d9c4b6f20554997a9c8946f gcc/doc/cppopts.texi
-9e34dec3b954fa18067e8949ca9a910d gcc/doc/extend.texi
+411e853640d29ea0392b292582a2674f gcc/doc/extend.texi
5ee3105f6fb685feb1259931acfbf79e gcc/doc/fragments.texi
de203f1fc34a4d519c489d06bf46b2bf gcc/doc/frontends.texi
-556f499f2c221eff6a35c3b745af786c gcc/doc/fsf-funding.7
-952529ddc42e4badf57f5480f1a7ea68 gcc/doc/g++.1
-9effbde8fcf02bcea835284372237e5c gcc/doc/gc-analyze.1
-952529ddc42e4badf57f5480f1a7ea68 gcc/doc/gcc.1
-9628abd90c18f277c0312630a7400a77 gcc/doc/gcc.info
8daacd29f48167f6b49255b6c181b9bc gcc/doc/gcc.texi
-b821f76036a460788a4f67a985b06c72 gcc/doc/gccinstall.info
-c0218512e3fc985d93bf9beacdeec227 gcc/doc/gccint.info
7911949acb880ae16515d7ca0ede3d9a gcc/doc/gccint.texi
-27a20c84ea29cb25e1f558e3c2b0fdc2 gcc/doc/gcj-dbtool.1
-558701264335d20a6dafb6f544251958 gcc/doc/gcj.1
-aab4d3dcd1960876e4dd2744c0595107 gcc/doc/gcj.info
-a2aaacd8a4504c1eee42040c6d62d982 gcc/doc/gcov.1
7a35df8cd0480abb695958df18ea6134 gcc/doc/gcov.texi
5587ca6c5976c7dffb318cf45f5b7f13 gcc/doc/generic.texi
-1ded054093de910d9786c62bc4fe8cc6 gcc/doc/gfdl.7
-8867d9d5f00d2c3424fcc1ec15d11b36 gcc/doc/gfortran.1
-0b52eeba46e08a404b1efdeb0b73b3d7 gcc/doc/gij.1
ac25ba9af042d4f99e0ab97a4f46517a gcc/doc/gimple.texi
290370669f02bef1502ada9273e5261f gcc/doc/gnu.texi
-0066e0767ad465789161865c43ff33b5 gcc/doc/gpl.7
-ef92b0edb983e1c4330f56fabd877997 gcc/doc/grmic.1
f2dd6df88ca65026d154f628ffbc8f13 gcc/doc/gty.texi
34a1955f331ff1028e09083a178c0418 gcc/doc/headerdirs.texi
a56cc8baf1b35fa5c4c43bbfdb35b74b gcc/doc/hostconfig.texi
@@ -4393,12 +4363,10 @@ fd6c359ffd07e895e9b60c12c1bc76c8 gcc/doc/include/gcc-common.texi
5f5adc2c6c4ebdcf03cc0125250f5995 gcc/doc/include/gpl_v3.texi
73819b3930a3d4be5d6234070d02386a gcc/doc/include/texinfo.tex
ca81bf9d3358342ef978866b6895f4ca gcc/doc/install-old.texi
-36a705ad4747c9ba42a38ddc6b48480a gcc/doc/install.texi
+28065d2266e9fbc74841d629325cf061 gcc/doc/install.texi
8851ed69b0a7490fa673efa763d090c7 gcc/doc/install.texi2html
f1aaec9eb4571d731a4089d5d5ef97fa gcc/doc/interface.texi
-1ca8071afee5c71cd6b887cc9411c03d gcc/doc/invoke.texi
-b5321deb87587779b8fa0e631185b29b gcc/doc/jcf-dump.1
-dcda92a48788754d1c476e86dc371535 gcc/doc/jv-convert.1
+4fcaa21e02084a61316a81e87b6bfd46 gcc/doc/invoke.texi
c36b6709dd343cbcd4b54f0417bcc780 gcc/doc/languages.texi
2ae9a3e90fef1d92ab8196ae773a7673 gcc/doc/libgcc.texi
8b58315c921fc046e0ab6f949ebd5990 gcc/doc/loop.texi
@@ -4411,10 +4379,9 @@ ee0a1b01a1a27eee100cc172673b9fe2 gcc/doc/lto.texi
f9f577785f8eae98a97b29568343be95 gcc/doc/passes.texi
6997cbfce5b82226e56271f7498697f5 gcc/doc/plugins.texi
914a3d181f9c38ac74e424d667026b61 gcc/doc/portability.texi
-d56bb820227b6cddf5dbc9f246f8df6a gcc/doc/rebuild-gcj-db.1
fa0276a6b5d315ae4e036add235d9b26 gcc/doc/rtl.texi
3f5d8a76a7ddd984603fb2f35ee46632 gcc/doc/service.texi
-5c68a874833d75649dad867b1c5db296 gcc/doc/sourcebuild.texi
+7e9ab90b42ddb45d7ad37adaaa5631f3 gcc/doc/sourcebuild.texi
80f74ac416390bd73b75ae93f1f2f8f8 gcc/doc/standards.texi
95089e28a67d22186f3190775ec30f42 gcc/doc/tm.texi
bd168a92c3471828c75208e25c6c6ab9 gcc/doc/tm.texi.in
@@ -4455,9 +4422,9 @@ f21b58f2ee4076afbfccecb6f0b20813 gcc/file-find.h
e273344d3f81a5d94a7296a6f73d4599 gcc/fixed-value.h
84141e938faf8046cbecad04e080660d gcc/flag-types.h
927cde0489c22a941e547faf5ec11e50 gcc/flags.h
-bfa3c33b1a9c0b95a8b41227093171ef gcc/fold-const.c
+fe3d53ebee15300e7cf55973ce20a663 gcc/fold-const.c
926e7b21d0de960d055e2f98520491fc gcc/fold-const.h
-e3feb37017ce740135780b8149ebd3f7 gcc/fortran/ChangeLog
+9f40c193b967165387fc4e6e3ec6d86d gcc/fortran/ChangeLog
3330102ad3a0217cba963be6b5eefd58 gcc/fortran/ChangeLog-2002
d000ab985b1eeb1ad5749f98b8fef99f gcc/fortran/ChangeLog-2003
bf42f94f0c51dcc7d8051cc7fda1efdc gcc/fortran/ChangeLog-2004
@@ -4496,7 +4463,6 @@ ce6133a52a0fa6aec2a32bbadf2584bf gcc/fortran/f95-lang.c
35359335a2a4611a4bd39850e837d3fd gcc/fortran/frontend-passes.c
0a038b837897c57a2b48cc83a3475346 gcc/fortran/gfc-internals.texi
c19efada195a0808eff058dffb8dcdc8 gcc/fortran/gfortran.h
-b3c9192114aa576c4b1e37059b7ddc4c gcc/fortran/gfortran.info
01b74d2257b39a5e878d0d02c961bc24 gcc/fortran/gfortran.texi
1f64ebcbca965051ff328411c4a95624 gcc/fortran/gfortranspec.c
afbe567cd3204e53be6fbcc32e82e7c1 gcc/fortran/interface.c
@@ -4523,7 +4489,7 @@ f51d0e2eedb4abe7296518a55e09ca88 gcc/fortran/options.c
9ddf6b1c7e1f71ab06663ea220fce3bf gcc/fortran/parse.c
6d0ad629aed04bdd74a9574a8bf4846e gcc/fortran/parse.h
fd7c4ac7c689b6a4fb90173f4133229d gcc/fortran/primary.c
-2894d407b715abd8941c0bc2e50afda8 gcc/fortran/resolve.c
+981f3b06d886b430724982812cd2bfed gcc/fortran/resolve.c
1034f94bfb9742bd1a794e92c5a75ba0 gcc/fortran/scanner.c
72c90bd863614df8517636fc47ccfc94 gcc/fortran/scanner.h
efa59c20588f8cbfa50de0c93a7eef20 gcc/fortran/simplify.c
@@ -4583,7 +4549,6 @@ f494127078ee11832d689cde6cc3659b gcc/genconstants.c
433eb66f3d010864a76c754d81db24cb gcc/genextract.c
fe4697f2b98c57d9478b6bb7a7ae2e88 gcc/genflags.c
e041d627ebfb410e6ac9821a3ebb3d42 gcc/gengenrtl.c
-9b8f0d2f17c80f6ff5fd6319f7369382 gcc/gengtype-lex.c
689319748dcd572b0d864e2f427c5ffa gcc/gengtype-lex.l
cbbcd3bf3726ae98ca84780142a68208 gcc/gengtype-parse.c
4eaf2d492394ef805a5d5ae40b3405b1 gcc/gengtype-state.c
@@ -4619,7 +4584,7 @@ d5b3c841aa21c9571759196e5299b4bc gcc/gimple-low.c
bce8302c35666fa97812af572784ddb4 gcc/gimple-pretty-print.c
fd36993cffdf23f8818cd5ab8119f9ef gcc/gimple-pretty-print.h
a55e2dba541a5690618f749ab8209b06 gcc/gimple-ssa-isolate-paths.c
-3c7181d1dd3aba8a2e25d2612ba3cc9f gcc/gimple-ssa-strength-reduction.c
+ddfcd12ffaa58e2c4343f8868d646bcc gcc/gimple-ssa-strength-reduction.c
65c5fd48c73569d5d8c6cb61fa000a0f gcc/gimple-ssa.h
05ea5f1994babea73ca748acd5ef37c6 gcc/gimple-streamer-in.c
d27ff703db577eb6b990d1d617cfe155 gcc/gimple-streamer-out.c
@@ -4631,7 +4596,7 @@ c5289edd7df36bab34b0a7146643c60a gcc/gimple.def
e59654c510717f38e5835473b88512f8 gcc/gimple.h
79b09968dccc8cd8a7a3bd3b2449b1b7 gcc/gimplify-me.c
0fe03cac0c9e29cc1e32425f09eb2c17 gcc/gimplify-me.h
-b70a6f4bd27f94701ed6a838e70ce584 gcc/gimplify.c
+b6f97dd90b2e3914fe1584297ee9e35a gcc/gimplify.c
37ff4336f0f0ec290f8652bccd3ba720 gcc/gimplify.h
2ac6b57e8aad060fa48b9a8a039a708a gcc/ginclude/float.h
a610d6820fa8bbb9030d13a1dcd4ee52 gcc/ginclude/iso646.h
@@ -4681,7 +4646,7 @@ a9976cefc0150a7132d127b093292abb gcc/go/gofrontend/go-optimize.cc
2a2578ae2b3378d37d61324c02656e27 gcc/go/gofrontend/gogo-tree.cc
fbd5ef95dfe6c1db3cd54ba4bc33109b gcc/go/gofrontend/gogo.cc
e33b0b4c9d13b6266a694e094d738133 gcc/go/gofrontend/gogo.h
-a54db7e2c0bee63493b5e156afd1e29c gcc/go/gofrontend/import-archive.cc
+19530349ffce8b937ed080715e7442d8 gcc/go/gofrontend/import-archive.cc
499fe8bccdd0651f0566d8c145b8d5f7 gcc/go/gofrontend/import.cc
46ea027bf693486499d4396551ed674d gcc/go/gofrontend/import.h
33c61fb692bc083f4b5774ea4325871f gcc/go/gofrontend/lex.cc
@@ -4695,8 +4660,8 @@ df0b2e89a7ce7d87c1816e63cdecbf48 gcc/go/gofrontend/runtime.h
30dd3449497113e8536805ec47db0d63 gcc/go/gofrontend/statements.cc
26fa4c1f2268d3e5180280310918ed0b gcc/go/gofrontend/statements.h
0ba1a11b029f92c6795e4c940c966f48 gcc/go/gofrontend/string-dump.h
-a4b994f44698b8a89e8c75119144265f gcc/go/gofrontend/types.cc
-f2cb4f81684d611386905f2fff829bd4 gcc/go/gofrontend/types.h
+807127e169b2ac5e8222bd4c8f66f1f8 gcc/go/gofrontend/types.cc
+2edc37f5e0fd28a18b5988791482cf60 gcc/go/gofrontend/types.h
14f99064d66c4b9bc9ab92b14d4e7afe gcc/go/gofrontend/unsafe.cc
dd84ec7483eb88b19ce6722e47c1a1f2 gcc/go/gospec.c
4d471970b23da7e4147258ef9373b38e gcc/go/lang-specs.h
@@ -4715,7 +4680,7 @@ fa16dedaafdb2228849f12a7ffd2e158 gcc/graphite-clast-to-gimple.h
1400b8e99d3520aa60a29717280777e2 gcc/graphite-optimize-isl.c
7acfa753917c853e000017c393da3fc3 gcc/graphite-poly.c
f9c785410cfde9d61c3ffb670dced572 gcc/graphite-poly.h
-ab1e6698efdaf3110847f7d273bdbc78 gcc/graphite-scop-detection.c
+190556169317e351f3cdb8cec465cac0 gcc/graphite-scop-detection.c
2c30c8f2568b1d728f9ba0e3929140d6 gcc/graphite-scop-detection.h
3d283157b1a0b1afd2a76a27ce09465c gcc/graphite-sese-to-poly.c
49ddf476aa0ab3084a087850dbf32c8b gcc/graphite-sese-to-poly.h
@@ -4753,7 +4718,7 @@ bf8ea69460dc53e98b80abbf629386bc gcc/internal-fn.c
d9360459f2f4e913687597f9589da5da gcc/intl.c
828d71668221b7c1bd27436bf9a019bc gcc/intl.h
c1423c98892b40ef08f44d0701ddf8e0 gcc/ipa-cp.c
-fc02b557228552e7d857db952632c4b0 gcc/ipa-devirt.c
+f75b8fe39834f6b40b66e413e0288cb2 gcc/ipa-devirt.c
1b8d3fb6c67dd0e13f67b75b924c3a3d gcc/ipa-inline-analysis.c
ae7311c23f026fe0be71fd216e23d50e gcc/ipa-inline-transform.c
45752dfeb17ec8efd11c9e60b0b01c7c gcc/ipa-inline.c
@@ -4835,7 +4800,7 @@ ed206298e22a303c30ef36e0bbd20a48 gcc/langhooks.h
bcd8945e5414cda5e3ad03542a2d011d gcc/lists.c
16086d64468975aa4ba54f78d2a7b542 gcc/lock-and-run.sh
208b088d7ccccc8e6c543e63fdea06fa gcc/loop-doloop.c
-b2e8b3596aa6202b3a28b571d7ab31ce gcc/loop-init.c
+2d37d0b843b816b1c6dd9aad0304fca4 gcc/loop-init.c
961aa1aafb4d7f6633b1296cae0f3adf gcc/loop-invariant.c
ec482357a36adb888741b89a43153c39 gcc/loop-iv.c
64a1aad9486a60d822da0c2f90e3d74d gcc/loop-unroll.c
@@ -4858,7 +4823,7 @@ f6df3e8bdd1544526a9063ecaa5262a2 gcc/lto-opts.c
1ad7c612bb12a8205345f45c9902dbff gcc/lto-section-in.c
4ef9318ae61cbd95ceba4d21ac1dc3bc gcc/lto-section-out.c
9d90309ed38ceafd2737c415ab3b73b7 gcc/lto-streamer-in.c
-5b1dc7a9d599c8a7d5fb86745620eda6 gcc/lto-streamer-out.c
+6363140d711d0e7a7105c3c997df1ef3 gcc/lto-streamer-out.c
81d24bca19f31cd5f0e863be0155267b gcc/lto-streamer.c
b6667b25d54cd3d347edba40e635a6f8 gcc/lto-streamer.h
b22d02e83c5f71264232ba966fa80333 gcc/lto-wrapper.c
@@ -4914,7 +4879,7 @@ f1fe0e2522617705fd8c3550c0e11716 gcc/objcp/objcp-decl.h
b287f66d35995315cca62a202c60bb74 gcc/omega.c
010649dbdbf5e49817e4ea9f867a7bff gcc/omega.h
21429c2e0fbb11feafa4b0713ffd0458 gcc/omp-builtins.def
-f26a560e5c6f914b54f634408d144c07 gcc/omp-low.c
+f2d42e8f7f8bdcd5daa572e2f1269271 gcc/omp-low.c
768117c1b005da4325bccda2b1aafbf8 gcc/omp-low.h
f1316591a0b9cca13acbe19ecbc3bbc2 gcc/opt-functions.awk
dea8fbe4f187428f3ca66daeae92f165 gcc/opt-gather.awk
@@ -4929,57 +4894,39 @@ ea7ba995cdc17d9cc64b18b75e660dc1 gcc/opth-gen.awk
1ddfeafac813cf8a92d2c3e589959754 gcc/opts-common.c
f8af27e8d310fb07ee954b9d51720a44 gcc/opts-diagnostic.h
8d0e45b60b7e191de6268565d8f7be68 gcc/opts-global.c
-f0d81e40a553c25127f2ba08b8d59d94 gcc/opts.c
+d0dc1d83347f8cb22597dc399f1c9a1c gcc/opts.c
a8111e6b093d3a2ffb9761954116196f gcc/opts.h
aed504b0320caa1fe29201ae90d7696b gcc/output.h
1a435aeba364655d22922ca5ce6d6a57 gcc/params.c
ccfd047721d6ef8fbf1de21f9ce3d72c gcc/params.def
bd4f289f412d22ec498d4945cb7892b6 gcc/params.h
b61dc6bbf55ac62d93ddeaa57e1034d7 gcc/pass_manager.h
-881287af7fb13d7da6651d92e7936bfe gcc/passes.c
+9072ae9400752c4738ce43bc338e2f54 gcc/passes.c
05e2c2f175685b9549570e51b3dd799a gcc/passes.def
1e36a92344845ad1cb58222eea33d560 gcc/plugin.c
e68ff8352334b5b009a28b53fb9284ca gcc/plugin.def
c26393f8f5ea723bfcc15bf50ee1cc7d gcc/plugin.h
-706a43669ae00ed9fa3d772d5b6459c7 gcc/po/ChangeLog
+b30058e4a634a6413bbb7a3118d60657 gcc/po/ChangeLog
75ba3ed7c2ea3070333b11ced79b1cc8 gcc/po/EXCLUDES
-1da2375d1cb67532f3330921d29cd450 gcc/po/be.gmo
ef9de679afafaa38517caa5a594e771a gcc/po/be.po
-3b240ccfc98866437198921b05ba3018 gcc/po/da.gmo
dc92748364c4378a909e1020335833c6 gcc/po/da.po
-c7cdfd4e9d4833614bf2f6548e974f75 gcc/po/de.gmo
a36f91e7a36f2c9bc648e097d8eda9eb gcc/po/de.po
-c0836d3cb5a878bb362498f6ea42b282 gcc/po/el.gmo
b161c428c9ad278a508a4d2833672605 gcc/po/el.po
-acfe5e113bfe971ee24399cf1d616b11 gcc/po/es.gmo
7945da3b8c627f14bf3b223a2dbbe6b6 gcc/po/es.po
1d3ac6da92bc6e1eaf147402839e5d52 gcc/po/exgettext
-b1a8dd3185c475fada19c3c0c12c7b52 gcc/po/fi.gmo
ba30edbde27bf66a98bd6e15e6fa53c0 gcc/po/fi.po
-4beb80cfda1e9cf33a68a48768d9b8f8 gcc/po/fr.gmo
a4736f4f95a416eb929d585210603219 gcc/po/fr.po
9ec117231bce2afe4b97a4896a25cfbd gcc/po/gcc.pot
-d49ad806352a9e325ebdcbebbcab1732 gcc/po/hr.gmo
1e95b663ed49c2119615cc206c0942e7 gcc/po/hr.po
-a28f5fdf68a4b9d748272aaea2064ff9 gcc/po/id.gmo
876cc342357120322ab71cd27273c3d9 gcc/po/id.po
-b5dfb93b25767b3dfb0c42a9ec70571e gcc/po/ja.gmo
06b1af31fdf4d13bbccdf6f1c32eee1b gcc/po/ja.po
-81baf1e42c12ed28dd97b79804f3f689 gcc/po/nl.gmo
fd7ece5b815ea48c4860ed2fc449ade0 gcc/po/nl.po
-2af4c86d57ab3ff4e265fb707257c7ca gcc/po/ru.gmo
28ab66c54e1279b684f5240a46adc7a7 gcc/po/ru.po
-56c8cc4daf3693852ab6e11be298083a gcc/po/sr.gmo
edc2c082d66ed31ad2c5897a23f09b8d gcc/po/sr.po
-d1f020c9a99ddcffda08d5f1f112901f gcc/po/sv.gmo
-f0e0da51bf7ee2ca2aa08bd2954c8968 gcc/po/sv.po
-50c9101bba2810cbc8f32fdf0154b842 gcc/po/tr.gmo
+7b50cd91f6dbfff3c10c3f39cccbc939 gcc/po/sv.po
70f05386117166e45871362f9bed6288 gcc/po/tr.po
-70add2819182fb77e30058d218746ad2 gcc/po/vi.gmo
6b8be71c236a0ffdb8beabb1e48c9714 gcc/po/vi.po
-4bcbbee8cefeef73ad8921889e8769f3 gcc/po/zh_CN.gmo
da7cf7070e0b6d7b860bd2504261ae6e gcc/po/zh_CN.po
-c0a6da01a1a90e55a45d23532046d414 gcc/po/zh_TW.gmo
3c222a095eadff06aa61b52919603ca2 gcc/po/zh_TW.po
f6726e62db99c4bd4123f60cde728904 gcc/pointer-set.c
241755c632af229442e2e7106c723411 gcc/pointer-set.h
@@ -5079,7 +5026,7 @@ dd5e75577e30df65977e84f24fbfa8f2 gcc/target-globals.c
5096a6cda7c1340a6843c4eee249eb97 gcc/target.h
be5e3bfa678dd16872775c30f8c43ce4 gcc/targhooks.c
8e6bbb74d18a1c0dc21dee6ba057882f gcc/targhooks.h
-00e103354f56c5ed082d7bfa518b4ba4 gcc/testsuite/ChangeLog
+686a544902578667bae89c5ab8419bf9 gcc/testsuite/ChangeLog
862f04afbd87da2cc6bc432c3f28430f gcc/testsuite/ChangeLog-1993-2007
029a5d8dacd25eb5d4711452ac448e5b gcc/testsuite/ChangeLog-2008
13ac28c41d51b66b4ec40dba6bd50f39 gcc/testsuite/ChangeLog-2009
@@ -7963,7 +7910,7 @@ c0e0d2f46bf19ec2b6f3291f97a1ac27 gcc/testsuite/c-c++-common/dfp/usual-arith-con
c2e14df2c3c1f90d28c611400c8d66df gcc/testsuite/c-c++-common/gomp/atomic-13.c
7e932cfe67a56047f2793f8f073026d8 gcc/testsuite/c-c++-common/gomp/atomic-14.c
ea35c8898a66194ddfd4052e95c9b78c gcc/testsuite/c-c++-common/gomp/atomic-15.c
-041021ef9972945e372ef740ba657791 gcc/testsuite/c-c++-common/gomp/atomic-16.c
+0129f6c1e124f845d12d0e1105a1272a gcc/testsuite/c-c++-common/gomp/atomic-16.c
02a1665574401bc7491c754880894569 gcc/testsuite/c-c++-common/gomp/atomic-2.c
36961f7538f3a387eb44b9dd71182644 gcc/testsuite/c-c++-common/gomp/atomic-3.c
b2ce89f1ba635f8d6701308583cd4759 gcc/testsuite/c-c++-common/gomp/atomic-4.c
@@ -7984,10 +7931,14 @@ a7d789b5091f59130b63c3467560e1e1 gcc/testsuite/c-c++-common/gomp/pr58257.c
fe151bac678698a31d909bd16fae419b gcc/testsuite/c-c++-common/gomp/pr58551.c
6d1dc12c879ee866b842cec98b946a0d gcc/testsuite/c-c++-common/gomp/pr58703.c
8bae1133175c7b4a752ebdc6baba26e4 gcc/testsuite/c-c++-common/gomp/pr58809.c
+63108e4eb634574549c4c4c319dc6ae0 gcc/testsuite/c-c++-common/gomp/pr59073.c
5d8f96921e9524db1e999bab7eac1116 gcc/testsuite/c-c++-common/gomp/pr59152.c
05e6a38172b7bfc26de83040dfc8c364 gcc/testsuite/c-c++-common/gomp/pr59467.c
c282b9ecbe7c1cafd42ab3e0184003b2 gcc/testsuite/c-c++-common/gomp/pr59917-1.c
aae6611cdfa9d295d22870f8c9222f69 gcc/testsuite/c-c++-common/gomp/pr59917-2.c
+648e6282c96355072c109ed1a82ea4d7 gcc/testsuite/c-c++-common/gomp/pr60823-1.c
+5724f24c4f1988cd1539ef0c5e147b98 gcc/testsuite/c-c++-common/gomp/pr60823-2.c
+defbe62797ed1363de67a60914b29aa7 gcc/testsuite/c-c++-common/gomp/pr60823-3.c
328147f679f9eac26be960bf85acb2e8 gcc/testsuite/c-c++-common/gomp/sections1.c
c7cb982e272572b3d42948b23c3c6229 gcc/testsuite/c-c++-common/gomp/simd1.c
3ffb158d7db65691583ca6ff7330457a gcc/testsuite/c-c++-common/gomp/simd2.c
@@ -8127,6 +8078,7 @@ dad442c09041500a2c414da240f49b82 gcc/testsuite/c-c++-common/torture/pr53505.c
baa15b278da5bb4b2b348d4043f1c97e gcc/testsuite/c-c++-common/torture/pr58794-1.c
c816e733ed428f32e49d50b564aaef54 gcc/testsuite/c-c++-common/torture/pr58794-2.c
51789b713733d1d6693238c2ca4e9b85 gcc/testsuite/c-c++-common/torture/pr60026.c
+233a29474162885f1e2509bbf25e078f gcc/testsuite/c-c++-common/torture/pr60971.c
fdeec1e5ecb339bf68961fab033b606e gcc/testsuite/c-c++-common/torture/vector-compare-1.c
e098360b3686787abea6589b13d9e806 gcc/testsuite/c-c++-common/torture/vector-compare-2.c
26c13a49130d1f2d291bea112073585f gcc/testsuite/c-c++-common/torture/vector-shift.c
@@ -8872,6 +8824,7 @@ de3d6255780c29f63df3f8d96932bd39 gcc/testsuite/g++.dg/cpp0x/constexpr-98.C
1bc1c995533b047ed8df6f6f24905cd1 gcc/testsuite/g++.dg/cpp0x/constexpr-99.C
785343af0b3355420f795309fbe121fb gcc/testsuite/g++.dg/cpp0x/constexpr-abi1.C
7d8afd8896f969ba303cb470f166dc1a gcc/testsuite/g++.dg/cpp0x/constexpr-access.C
+b2677ed5d88c259b9b0fac3db40c4180 gcc/testsuite/g++.dg/cpp0x/constexpr-aggr1.C
3f271472f05de1e297d6ea28097b47d1 gcc/testsuite/g++.dg/cpp0x/constexpr-and.C
d184daf58a1efefa9b5d9f2675332595 gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr.C
8fd033f4e6b69599a1e293c45d0814cb gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr2.C
@@ -9188,6 +9141,7 @@ bf3070d396c7bb7e08191019deb59497 gcc/testsuite/g++.dg/cpp0x/defaulted45.C
acc6bd6fd744bdc18ca97d53d2b93372 gcc/testsuite/g++.dg/cpp0x/defaulted46.C
9c11c2857ec4e4034b1d9d143b50000f gcc/testsuite/g++.dg/cpp0x/defaulted47.C
c7e6cc6230f1d5b6c871906050eb4a8e gcc/testsuite/g++.dg/cpp0x/defaulted48.C
+f43c03a4784f2f2c60f5f1a33fb05baa gcc/testsuite/g++.dg/cpp0x/defaulted49.C
f850ce13cb38dd65e14979303082c6cf gcc/testsuite/g++.dg/cpp0x/defaulted5.C
1983e4823fae7dc43730a329ff221148 gcc/testsuite/g++.dg/cpp0x/defaulted6.C
bbb1e584edf09356b8623f522ff03019 gcc/testsuite/g++.dg/cpp0x/defaulted7.C
@@ -9488,6 +9442,7 @@ b8f5e644f92e53096f2cac6fa2abc634 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-captu
22fc25fa709265abbae77ff5d72e72f8 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
1d85414b94d2d104004fc7341b90a896 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
64bc761abc3783521fdfb26f930f3410 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const2.C
+e513b4dcc45e6063745c03c7c99151fa gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const3.C
25265bcafc26c3a0ab3727a9ff348916 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv.C
299fbfde279f22ba6cf7e79d7e17f49b gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv2.C
13859d1112ce3900c792dcdc2e8ae085 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv3.C
@@ -9600,6 +9555,7 @@ bde8c4c4c753e9d6da1e9bf4d5eeb363 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this1
cb3b2650a080bd9c7acfa0a46c317afe gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this15.C
1552f0ad6ccfb863bbdcf5b710f3b84d gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this16.C
0d9d1df756c17ed3794931d85361bea9 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this17.C
+4140ff305c161e7f2fe64321a7e90846 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this18.C
53707c7f73c56183ff77914e6f7417b9 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this2.C
4d206d41378a3a22959ec8c2c1439014 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this3.C
63fdeead97cb6030e039c864293a278b gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this4.C
@@ -9667,6 +9623,7 @@ ef20e3e0e53b4fb3163e5066efb89b64 gcc/testsuite/g++.dg/cpp0x/nsdmi-list3.C
bb52d0707dea46cd2224e8f36c397c29 gcc/testsuite/g++.dg/cpp0x/nsdmi-local.C
532b3e2c733c1b03dfa22d18667650fb gcc/testsuite/g++.dg/cpp0x/nsdmi-sizeof.C
6a97f223fff723db9f950c32a7828e35 gcc/testsuite/g++.dg/cpp0x/nsdmi-template1.C
+4826317ec7401f0dceb7076d880beac7 gcc/testsuite/g++.dg/cpp0x/nsdmi-template10.C
d83133afa9fe5d533ed8b6cecc90cc44 gcc/testsuite/g++.dg/cpp0x/nsdmi-template2.C
a4838f227c782d1dc8cc894a19deb0d1 gcc/testsuite/g++.dg/cpp0x/nsdmi-template3.C
ecc55c2acf604366d5eab66ebf6a29dd gcc/testsuite/g++.dg/cpp0x/nsdmi-template4.C
@@ -9674,6 +9631,7 @@ bbce95e97ae41e0f3fe3ba83781deb99 gcc/testsuite/g++.dg/cpp0x/nsdmi-template5.C
3a5b1755ff3b8f25bdc5d3343ec58d7e gcc/testsuite/g++.dg/cpp0x/nsdmi-template6.C
bca364bb7be51173c515446b467d101b gcc/testsuite/g++.dg/cpp0x/nsdmi-template7.C
8228a8cc4123378699db41bb692816a8 gcc/testsuite/g++.dg/cpp0x/nsdmi-template8.C
+10d5192bc22fb982a714dabcc1321c84 gcc/testsuite/g++.dg/cpp0x/nsdmi-template9.C
d1503365b6615b562965b9d47e9327c5 gcc/testsuite/g++.dg/cpp0x/nsdmi-union1.C
97244e2bdff262e5f89cc9d5717cbeee gcc/testsuite/g++.dg/cpp0x/nsdmi-union2.C
24d435bfe180c503be113a8efa76cca0 gcc/testsuite/g++.dg/cpp0x/nsdmi-union3.C
@@ -9940,6 +9898,7 @@ c271006c8055b6ab792c26bdb8a60c51 gcc/testsuite/g++.dg/cpp0x/sfinae46.C
7f9ec6f23b495a9ffdc2eb43224e4e97 gcc/testsuite/g++.dg/cpp0x/sfinae48.C
07a6e388376959abb699902ddf79cfaa gcc/testsuite/g++.dg/cpp0x/sfinae49.C
d5e6c1bb41ba570249eba838c6885b91 gcc/testsuite/g++.dg/cpp0x/sfinae5.C
+e658abe19e3f9090108ecdee6c7ff751 gcc/testsuite/g++.dg/cpp0x/sfinae50.C
7d2a515d9dca41b0e82b2e6ea54bd2d3 gcc/testsuite/g++.dg/cpp0x/sfinae6.C
ec1a51ea3fd41e6e61c8f425bde1fd0b gcc/testsuite/g++.dg/cpp0x/sfinae7.C
547894832b1452d5f513938e0cb8a166 gcc/testsuite/g++.dg/cpp0x/sfinae8.C
@@ -11785,6 +11744,7 @@ c268699333b239c371d1bdc906ea54ad gcc/testsuite/g++.dg/init/copy2.C
28ced8869a7baac26a49e3084bf7d851 gcc/testsuite/g++.dg/init/copy4.C
02c689a173b02b7312d282add8f14591 gcc/testsuite/g++.dg/init/copy5.C
5d48182e8fa2907f420bf1ef3d67dba3 gcc/testsuite/g++.dg/init/copy6.C
+401730d1bb87c3edf85010755fe8a2ff gcc/testsuite/g++.dg/init/copy7.C
77ceed5edeb6a109374c44ef23679bef gcc/testsuite/g++.dg/init/ctor1.C
a7fab26ec8d16e90cb47357e7759a768 gcc/testsuite/g++.dg/init/ctor10.C
6ee4f7840a21e5a764e2facf94d7e71d gcc/testsuite/g++.dg/init/ctor11.C
@@ -11967,7 +11927,7 @@ f98e7ab2646951eca57b37b0ade8c12a gcc/testsuite/g++.dg/init/volatile2.C
181d03bf17027cab97eb47736f11ff30 gcc/testsuite/g++.dg/ipa/20090113-1.C
7522727dcb8122398374b49264575c77 gcc/testsuite/g++.dg/ipa/devirt-1.C
a38c209b4fc2c2a0b36cf4c89adcf9d8 gcc/testsuite/g++.dg/ipa/devirt-10.C
-30cb11288b1bdcca3c2f20d03e0033cf gcc/testsuite/g++.dg/ipa/devirt-11.C
+430d3646a32af28b1b1292c14affd8a7 gcc/testsuite/g++.dg/ipa/devirt-11.C
af8781bfa434602bbdd203a9b683acca gcc/testsuite/g++.dg/ipa/devirt-12.C
95efb847fd00d08421ccc099b6b62a1d gcc/testsuite/g++.dg/ipa/devirt-13.C
26800570b776735a7c4b46e635a55d01 gcc/testsuite/g++.dg/ipa/devirt-14.C
@@ -11984,11 +11944,12 @@ dfb26a875a3981e85385d162fbc8fb72 gcc/testsuite/g++.dg/ipa/devirt-23.C
540360b373bf580206ab7238bc7a9976 gcc/testsuite/g++.dg/ipa/devirt-24.C
0ea3d64f37ec0034e0cdf3da393fe2c8 gcc/testsuite/g++.dg/ipa/devirt-25.C
a955053ff50f32fdd98345068ff798fa gcc/testsuite/g++.dg/ipa/devirt-26.C
-8a2c5cc0f1c6187bc864f03efc389fae gcc/testsuite/g++.dg/ipa/devirt-27.C
+83c12ee028b9711638166b6f6aa4120c gcc/testsuite/g++.dg/ipa/devirt-27.C
4e8c06e1e1145b9d11bc125669054764 gcc/testsuite/g++.dg/ipa/devirt-28.C
31f84d40ad557791781d8a441ce8fb42 gcc/testsuite/g++.dg/ipa/devirt-29.C
48c9df6f6e861f2448fa74314b9affb3 gcc/testsuite/g++.dg/ipa/devirt-3.C
7cd06fb87d4e922414924f6395c7441b gcc/testsuite/g++.dg/ipa/devirt-30.C
+46c20441c2f9bdc827ed732c9e41f089 gcc/testsuite/g++.dg/ipa/devirt-31.C
d2da990ad34e9459150b3aa94be920a9 gcc/testsuite/g++.dg/ipa/devirt-4.C
bef829571c10195d63a0c4ff07d958ef gcc/testsuite/g++.dg/ipa/devirt-5.C
8c636e7513618b1b3735a28c660923df gcc/testsuite/g++.dg/ipa/devirt-6.C
@@ -12686,6 +12647,8 @@ a7e9290a66164d70cf71a687dc002b1d gcc/testsuite/g++.dg/opt/pr59622.C
bc581baefa9c2cdf340c7afe5ec42620 gcc/testsuite/g++.dg/opt/pr59947.C
fcc0cbf12c3c1ff2231451798c2c5d37 gcc/testsuite/g++.dg/opt/pr60002.C
e676633b5d90b99891eacfad5d4d65cc gcc/testsuite/g++.dg/opt/pr60597.C
+cd9ce81573f1dd55ed9926ad0afbe423 gcc/testsuite/g++.dg/opt/pr60849.C
+2ca5ee004fc73e412a39de0dd38e1b4c gcc/testsuite/g++.dg/opt/pr60912.C
ac2356162f00cd5e8804482480f1795a gcc/testsuite/g++.dg/opt/pr6713.C
90bdbfd9313461944756a9e9f01ce788 gcc/testsuite/g++.dg/opt/pr7503-1.C
1451eba24eea82cbd0c1ab87885c0f77 gcc/testsuite/g++.dg/opt/preinc1.C
@@ -15187,6 +15150,7 @@ ce5bd74dda85ecae08b1e79c21fc231c gcc/testsuite/g++.dg/torture/pr60609.C
8c2dc2c3e3d744280501f821dd5cfb10 gcc/testsuite/g++.dg/torture/pr60659.C
59b64e493342855b4d4f60c5c5b2e866 gcc/testsuite/g++.dg/torture/pr60746.C
5f42e568cc105049d43016ffc65ea36f gcc/testsuite/g++.dg/torture/pr60750.C
+ea51728c5e2ae154940893c6ccb374f8 gcc/testsuite/g++.dg/torture/pr60895.C
389892c1f2e87d69449479d1b053c70c gcc/testsuite/g++.dg/torture/predcom-1.C
d28910105d9c9253d94d70eacd5e19d4 gcc/testsuite/g++.dg/torture/pushpop_macro.C
a1b47b9c3e69d79d1895ebc4fd11032b gcc/testsuite/g++.dg/torture/stackalign/check.h
@@ -15378,6 +15342,7 @@ ffa63568656b6e8f88c2e04bcfb82d6f gcc/testsuite/g++.dg/tree-ssa/pr53844.C
a82ef6cbe78155176eca6d640870c3a5 gcc/testsuite/g++.dg/tree-ssa/pr54515.C
0302793462643aeaccabd5c387ce8c93 gcc/testsuite/g++.dg/tree-ssa/pr57380.C
bb17cbedcbb5bcabb9ee8299f30c3ae9 gcc/testsuite/g++.dg/tree-ssa/pr58404.C
+22dc7006f5ec66c9a231712242810915 gcc/testsuite/g++.dg/tree-ssa/pr61009.C
d56e4fc904579446fb892941249b3b4a gcc/testsuite/g++.dg/tree-ssa/pr8781.C
1774a3db4e8c1c639d06cfd8ba95990d gcc/testsuite/g++.dg/tree-ssa/ptrmemfield.C
fe0c4f92b4591334dd40df6bbeb06f32 gcc/testsuite/g++.dg/tree-ssa/restrict1.C
@@ -15454,6 +15419,7 @@ add1cfbf96f3e44641caf48f126f9c38 gcc/testsuite/g++.dg/vect/pr45470-b.cc
7341ca0a00bff9809481068f2f734d5a gcc/testsuite/g++.dg/vect/pr60023.cc
43a78626ccd2affbd7d45540f8fc64d9 gcc/testsuite/g++.dg/vect/pr60559.cc
3bff2af6c3bfd7ad46d2d49817f2f165 gcc/testsuite/g++.dg/vect/pr60729.cc
+6fedf5fcd346e8a54e1ea882011da7e0 gcc/testsuite/g++.dg/vect/pr60836.cc
2319b033c4be551a98e6e2be4cfa22df gcc/testsuite/g++.dg/vect/slp-pr50413.cc
8d1334dabd32a7cd566077fb76b6ef3f gcc/testsuite/g++.dg/vect/slp-pr50819.cc
df93e1203b366a6199944cfb11b3ada2 gcc/testsuite/g++.dg/vect/slp-pr56812.cc
@@ -20898,6 +20864,7 @@ e930646e7dc4ae306668360758733d33 gcc/testsuite/gcc.c-torture/execute/20121108-1
91f48b05bc9d42c398d7b5856e001a8d gcc/testsuite/gcc.c-torture/execute/20131127-1.c
00319451004c266ad1b8c6aeb089eb51 gcc/testsuite/gcc.c-torture/execute/20140212-1.c
4ad9d497fc6da5c1d93322b91642142c gcc/testsuite/gcc.c-torture/execute/20140326-1.c
+a5f4cdd2313a084c86b42c022d5711d7 gcc/testsuite/gcc.c-torture/execute/20140425-1.c
65f01ac7346bd4d47ed9c1ca94ab74ff gcc/testsuite/gcc.c-torture/execute/900409-1.c
5aefab4daab0bd29ecf2a389f3c44f40 gcc/testsuite/gcc.c-torture/execute/920202-1.c
655936aaf9a63e991a555cbc16738485 gcc/testsuite/gcc.c-torture/execute/920302-1.c
@@ -21916,6 +21883,7 @@ f121fd0f8e286e507377c1095024e72f gcc/testsuite/gcc.c-torture/execute/pr59643.c
c9a0c78ab7e5e97f8d9f79003415e3c1 gcc/testsuite/gcc.c-torture/execute/pr60062.c
525a1e55ab5e4b58132522416d2abb4a gcc/testsuite/gcc.c-torture/execute/pr60072.c
2d9ffe4c8d2f9f03fc51460365e7419e gcc/testsuite/gcc.c-torture/execute/pr60454.c
+1313e26f31dd7d7fb997709384d78e64 gcc/testsuite/gcc.c-torture/execute/pr60960.c
ecfc31f12ce09d6ccbcced04ff04deba gcc/testsuite/gcc.c-torture/execute/pr7284-1.c
89f3c7ee990221eeb33cb08a0772e024 gcc/testsuite/gcc.c-torture/execute/pr7284-1.x
f4610e3bba97324f7005c428fe41e597 gcc/testsuite/gcc.c-torture/execute/printf-1.c
@@ -25145,6 +25113,9 @@ f9442fdd2416c6261814045723c89f0e gcc/testsuite/gcc.dg/graphite/pr46966.c
6ac2201f5ceaf1d669d875abfffae276 gcc/testsuite/gcc.dg/graphite/pr46970.c
78520b60a1ee3851ffd28abd9cd2e62d gcc/testsuite/gcc.dg/graphite/pr50561.c
c09c7286c8fcd9cc08b18719c098cc60 gcc/testsuite/gcc.dg/graphite/pr54094.c
+fb5a862ce6ffbade0ae64b3575de6664 gcc/testsuite/gcc.dg/graphite/pr55022.c
+16b9ffb71e6313c09e32f8d47736f438 gcc/testsuite/gcc.dg/graphite/pr59817-1.c
+3ef979f48d76e0fd94ea3b71fc3510af gcc/testsuite/gcc.dg/graphite/pr59817-2.c
60c6684ae0f8c1d5b794c4d512a928be gcc/testsuite/gcc.dg/graphite/pr60740.c
ad18eaa8675b607e46c69dadd60f3046 gcc/testsuite/gcc.dg/graphite/pr60785.c
16574d3df752f79e2361bed11b712e31 gcc/testsuite/gcc.dg/graphite/run-id-1.c
@@ -25692,6 +25663,9 @@ d5a8d86104befcf27df8a5080dbe66ce gcc/testsuite/gcc.dg/lto/pr60404_0.c
10073f0592215c1f150902dbd5bea335 gcc/testsuite/gcc.dg/lto/pr60404_1.c
57b84f9f4fb097f80fb864bc81c70abb gcc/testsuite/gcc.dg/lto/pr60404_2.c
729e7df711f59da5edc3a02fe050b9eb gcc/testsuite/gcc.dg/lto/pr60461_0.c
+fb92fea16dbb92181a81b79e2e378036 gcc/testsuite/gcc.dg/lto/pr60720_0.c
+06c25fe0c80b8959051a62f8f034710a gcc/testsuite/gcc.dg/lto/pr60720_1.c
+3ce380dc49e4f5afb926994881824b04 gcc/testsuite/gcc.dg/lto/pr60911_0.c
e36db27b1e4084d326181d15570bf8d4 gcc/testsuite/gcc.dg/lto/resolutions_0.c
1084184a9b11a84eee39ef130211f70b gcc/testsuite/gcc.dg/lto/save-temps_0.c
69ff2353992f738ce7ea3cb89e9db1e4 gcc/testsuite/gcc.dg/lto/trans-mem-3_0.c
@@ -26967,6 +26941,8 @@ b867a773709f523e8f1a27664cb184b2 gcc/testsuite/gcc.dg/pr60647-1.c
32abf2686c9d3296f9fa19df9002094d gcc/testsuite/gcc.dg/pr60647-2.c
c124a95a6e3650b96ef3058205b5ac36 gcc/testsuite/gcc.dg/pr60704.c
2fcb562c88ced77b7ac0bce42b64f443 gcc/testsuite/gcc.dg/pr60797.c
+5559e398e075ca7f9141308579b0fac6 gcc/testsuite/gcc.dg/pr60844.c
+e2d94f81ab73335d50800841dbd4b12c gcc/testsuite/gcc.dg/pr61060.c
8b7d73da2d5d78000716492365a85d5a gcc/testsuite/gcc.dg/pr8715.c
3d08410b2dd57259aa63f0e1c64b376e gcc/testsuite/gcc.dg/pr8788-1.c
be04382a35ebb1cfae1b2168f1693a94 gcc/testsuite/gcc.dg/pr8835-1.c
@@ -27861,6 +27837,7 @@ f2dddb213748ccb1b2e30ff1ff7f59e4 gcc/testsuite/gcc.dg/torture/pr57748-1.c
5564f74a800596aaf87f8e8cb5453803 gcc/testsuite/gcc.dg/torture/pr57748-2.c
76796ab921180653905caef9c792720e gcc/testsuite/gcc.dg/torture/pr57748-3.c
85d58426bedaf1d6a74d38d55833e66d gcc/testsuite/gcc.dg/torture/pr57748-4.c
+5bfa303899e64bffcddb82847e6a434f gcc/testsuite/gcc.dg/torture/pr57864.c
6593178a39cf24816cba3dab5b42f172 gcc/testsuite/gcc.dg/torture/pr57993-2.cpp
8f27084dca98134d7f524112d900a2d1 gcc/testsuite/gcc.dg/torture/pr57993.c
95154523d1488e9fe16d67474343c8d5 gcc/testsuite/gcc.dg/torture/pr58018.c
@@ -27914,6 +27891,9 @@ cd4b15fda1ef44742db263de30216d1b gcc/testsuite/gcc.dg/torture/pr59993.c
3e0dd582d51f218aa9dbe4841686c12a gcc/testsuite/gcc.dg/torture/pr60183.c
128cefe94a9f05e84df676feb8e099af gcc/testsuite/gcc.dg/torture/pr60733.c
bc7d88b95c8be08a1a73b15283ed1f06 gcc/testsuite/gcc.dg/torture/pr60766.c
+d6d4353931f1be7031525660bdb72067 gcc/testsuite/gcc.dg/torture/pr60891.c
+b7419f520b851243b27be91c272be4ec gcc/testsuite/gcc.dg/torture/pr60903.c
+cd6896f9999dc19951f9e8e74e12f5f8 gcc/testsuite/gcc.dg/torture/pr60930.c
c99c3745eca0ddc81822cc070070a4d3 gcc/testsuite/gcc.dg/torture/pr8081.c
b3a9e4f2af6462183da8d6c5cb13bf1f gcc/testsuite/gcc.dg/torture/pta-callused-1.c
98fde0e59e55c1ed923ee9d9f034d7f2 gcc/testsuite/gcc.dg/torture/pta-escape-1.c
@@ -28193,7 +28173,7 @@ abd4ca43bb4b377619c41f454ad2e646 gcc/testsuite/gcc.dg/tree-ssa/alias-27.c
82856885ede689411173996a10bc876e gcc/testsuite/gcc.dg/tree-ssa/alias-28.c
0636ce20d822dd25b9d5ce792a2c3820 gcc/testsuite/gcc.dg/tree-ssa/alias-29.c
bb1c37124577d61c99b7e5ebd9d72713 gcc/testsuite/gcc.dg/tree-ssa/alias-3.c
-52fc06fea0d8944a3c7c7cf58329c649 gcc/testsuite/gcc.dg/tree-ssa/alias-30.c
+79dfb5b1039d2883100bde8c195d39c4 gcc/testsuite/gcc.dg/tree-ssa/alias-30.c
8cfc15afdd6d383287dda63878fc6083 gcc/testsuite/gcc.dg/tree-ssa/alias-31.c
104c2bb3b44866aa1a413bc286888421 gcc/testsuite/gcc.dg/tree-ssa/alias-4.c
02459b5c01776fac9cbf076da37d3770 gcc/testsuite/gcc.dg/tree-ssa/alias-5.c
@@ -29241,6 +29221,7 @@ d057a4907971998a1473fdea2ead40cc gcc/testsuite/gcc.dg/unused-6-WallWextra.c
43d1bfb1c3e82e590c699df9328c86ff gcc/testsuite/gcc.dg/unused-6-no.c
e3db8ed02ca0ecad28455ac3f0b93696 gcc/testsuite/gcc.dg/unused-6.c
b9094e47fb1bcf5228d5a172f181d34c gcc/testsuite/gcc.dg/unused-7.c
+615e1e240a379f560bb499664764aa19 gcc/testsuite/gcc.dg/unused-8b.c
3026c7972826035f46319fe0338270d0 gcc/testsuite/gcc.dg/unwind-1.c
82e97901e9d95cb7baff3da146a5c919 gcc/testsuite/gcc.dg/utf-array-short-wchar.c
58bb3d290d515392b37ec7e27a115e8e gcc/testsuite/gcc.dg/utf-array.c
@@ -29620,8 +29601,9 @@ d29f4943bad625aa38224c822f9da622 gcc/testsuite/gcc.dg/vect/pr60012.c
a866350e19555393d6961e8b412e9124 gcc/testsuite/gcc.dg/vect/pr60276.c
b107b5d9d8332504cce7d4f98d0296f7 gcc/testsuite/gcc.dg/vect/pr60382.c
170c5596ccb511f48df93f8649f3aba7 gcc/testsuite/gcc.dg/vect/pr60482.c
-6238a8b7620ccb76249b00f14ace3ada gcc/testsuite/gcc.dg/vect/pr60505.c
+97f0138cf5bdb9cb11d8e107c00bc27c gcc/testsuite/gcc.dg/vect/pr60505.c
410bc9651b5f4b0552af7cad596832e8 gcc/testsuite/gcc.dg/vect/pr60656.c
+72142e96ba1e228790f86e7f25a6c1a5 gcc/testsuite/gcc.dg/vect/pr60841.c
0706a6b1e589668022cd055b960dd18d gcc/testsuite/gcc.dg/vect/section-anchors-pr27770.c
260e2f31b30dda89387f41e7bfe71e1e gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c
4d2e98feff81733536fba7cd2d0ca053 gcc/testsuite/gcc.dg/vect/slp-1.c
@@ -30280,8 +30262,8 @@ b22e613ba2712c4e8f7204eed0adc88a gcc/testsuite/gcc.dg/vmx/ldl-vsx.c
c3039576bdd2e286778c9c26319c1266 gcc/testsuite/gcc.dg/vmx/ldl.c
02e4a282249f914f0c14a216ba9d4cfc gcc/testsuite/gcc.dg/vmx/mem.c
6aae24591b76899daf226454ac9b1991 gcc/testsuite/gcc.dg/vmx/merge-be-order.c
-eee9871ed36b20241187f151e4501a99 gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c
-25b17ce14463feddc218415eb2a5416b gcc/testsuite/gcc.dg/vmx/merge-vsx.c
+201b16426a5ac5b3987ba0dccc6f5a71 gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c
+2e6a5aaa5824f852ad0030af451aeb08 gcc/testsuite/gcc.dg/vmx/merge-vsx.c
eb7dd9debe1674f5d04a9841461e4954 gcc/testsuite/gcc.dg/vmx/merge.c
1bf3417266f1541ffcf1dd896b544b2e gcc/testsuite/gcc.dg/vmx/mult-even-odd-be-order.c
69b4a248b11c1f8cdf318024cf68f3f6 gcc/testsuite/gcc.dg/vmx/mult-even-odd.c
@@ -33303,6 +33285,7 @@ a6701935d18c8ed062555c8a48454bc9 gcc/testsuite/gcc.target/avr/dev-specific-rmw.
2931177f4aeff49d531d5474224448f6 gcc/testsuite/gcc.target/avr/pr46779-1.c
572dc228e08385a1db0fcbab66dbaa4e gcc/testsuite/gcc.target/avr/pr46779-2.c
421d2b9b36fa2496dce05d129d2c352b gcc/testsuite/gcc.target/avr/pr58545.c
+9e82df166e8b559cb56d2c4f48cbaf30 gcc/testsuite/gcc.target/avr/pr60991.c
881cb1836ddfc3105e0aacacc481aa09 gcc/testsuite/gcc.target/avr/progmem-error-1.c
2eb3f167ae58b534e25afc1b94617746 gcc/testsuite/gcc.target/avr/progmem-error-1.cpp
56de611fd29076ce9da389a853476819 gcc/testsuite/gcc.target/avr/progmem-warning-1.c
@@ -33333,6 +33316,7 @@ c458c2462e23a4c58a7e4d05b6200907 gcc/testsuite/gcc.target/avr/torture/fix-types
70b849f57ecf42299230b99b7734dd2d gcc/testsuite/gcc.target/avr/torture/pr51374-1.c
640699ff4839c2a7798488c85177d381 gcc/testsuite/gcc.target/avr/torture/pr51782-1.c
006a6c5a86a749ba6291dfb65e0376e0 gcc/testsuite/gcc.target/avr/torture/pr57631.c
+fea352b16ae79edc9965b1f39680a709 gcc/testsuite/gcc.target/avr/torture/pr61055.c
21a45d34960ba9567b9f2483d22c843f gcc/testsuite/gcc.target/avr/torture/progmem-1.c
564c71a894aff68e98d5c4a6db2b47ae gcc/testsuite/gcc.target/avr/torture/progmem-1.cpp
e3e1c41865f5287c9ff7e200745758fd gcc/testsuite/gcc.target/avr/torture/sat-hr-plus-minus.c
@@ -36418,6 +36402,10 @@ ef6b97efa08c7174694a3f12619b3adc gcc/testsuite/gcc.target/i386/pr60508.c
697da7d0cc19b38fd886149eb3d4af13 gcc/testsuite/gcc.target/i386/pr60516.c
3c94cee0c51e457793c9d3861c12d06d gcc/testsuite/gcc.target/i386/pr60693.c
aa9afa3fae8ccdc655d286ee8211123a gcc/testsuite/gcc.target/i386/pr60700.c
+8166dccdf85e516834c35488dbde09e2 gcc/testsuite/gcc.target/i386/pr60868.c
+dd8e17a0fafdd705a4f0de3d73c4d9c0 gcc/testsuite/gcc.target/i386/pr60902.c
+90c5be2a3f80aff7d7204eaa36133881 gcc/testsuite/gcc.target/i386/pr60909-1.c
+65d3cafc066a01d0520d7d9137813522 gcc/testsuite/gcc.target/i386/pr60909-2.c
849234c7a569c1e86023244bc5561263 gcc/testsuite/gcc.target/i386/pr9771-1.c
24ceb6d5f3f5cde4b9d852839bdb98ae gcc/testsuite/gcc.target/i386/prefetchw-1.c
f11f4731c396f099373c033ab016a64f gcc/testsuite/gcc.target/i386/prefetchwt1-1.c
@@ -36986,6 +36974,7 @@ a4fe926ed930e3d04f3d214919607450 gcc/testsuite/gcc.target/i386/vararg-4.c
80fc45c82401c81c8e327977d855adfe gcc/testsuite/gcc.target/i386/vcvtps2ph-1.c
62f75fee089e9d7544817acc173d5b9e gcc/testsuite/gcc.target/i386/vcvtps2ph-2.c
7bfd4b219fe89df5db7d39dd83f07267 gcc/testsuite/gcc.target/i386/vcvtps2ph-3.c
+c3845076ba5898729c1d858ed48d8182 gcc/testsuite/gcc.target/i386/vec-may_alias.c
6c6b35f324ed291cf10b22e9a8f246a4 gcc/testsuite/gcc.target/i386/vecinit-1.c
8c76c9fbb837c00a866f4323808181a0 gcc/testsuite/gcc.target/i386/vecinit-2.c
5c31804a1a01677fce626685b7d3670c gcc/testsuite/gcc.target/i386/vecinit-3.c
@@ -37834,6 +37823,9 @@ f1f6a9ec080c7f1554b538d5701c21e2 gcc/testsuite/gcc.target/powerpc/asm-y.c
e476471a7edb5f299042583dac1e4886 gcc/testsuite/gcc.target/powerpc/atomic-p8.c
1bb3c02dda5fc71d0e39b0833c955824 gcc/testsuite/gcc.target/powerpc/atomic_load_store-p8.c
f7e7c3525d555350473e6eaeb20a763c gcc/testsuite/gcc.target/powerpc/avoid-indexed-addresses.c
+68a98ba6065eb1bd5a5a38ffaebe3628 gcc/testsuite/gcc.target/powerpc/bcd-1.c
+4c4454e8a943ac537214d0651d7689fc gcc/testsuite/gcc.target/powerpc/bcd-2.c
+130b8d095a504ba76a81116d57667e8a gcc/testsuite/gcc.target/powerpc/bcd-3.c
d71e4fffd67fe9a02068065c31f40a8c gcc/testsuite/gcc.target/powerpc/block-move-1.c
acce3a59dc7d4ef94160abede8f06c07 gcc/testsuite/gcc.target/powerpc/block-move-2.c
8b94a94a7dff0052358065a48eaa4f9f gcc/testsuite/gcc.target/powerpc/bool.c
@@ -37887,6 +37879,8 @@ bab9d2b9475b292a01a50c6972b9f682 gcc/testsuite/gcc.target/powerpc/darwin-longlo
a034d7a8bf265623a75800f01113e836 gcc/testsuite/gcc.target/powerpc/darwin-split-ld-stret.c
548fc585bcbf766f23bef7319f0b0a18 gcc/testsuite/gcc.target/powerpc/darwin64-abi.c
b4bba5410c6e6f914897ce86ffaca508 gcc/testsuite/gcc.target/powerpc/dfmode_off.c
+57ea0173da68940a58564009a30679b4 gcc/testsuite/gcc.target/powerpc/dfp-builtin-1.c
+a5f66daa4a8160a6e06231f0c816da83 gcc/testsuite/gcc.target/powerpc/dfp-builtin-2.c
c25b0e4bf35d335bbde9c753c70ff289 gcc/testsuite/gcc.target/powerpc/dfp-dd-2.c
1957dd277fc1f9a9eef7275766fcea8e gcc/testsuite/gcc.target/powerpc/dfp-dd.c
b2bd0e99cbcd0dff49c3d07bafb4ad8c gcc/testsuite/gcc.target/powerpc/dfp-td-2.c
@@ -37909,6 +37903,8 @@ b04fe8cd314a3a748a73aeec923a8f87 gcc/testsuite/gcc.target/powerpc/e500-ord-2.c
008e68ecfc8e883b43cb8fcc43f0e792 gcc/testsuite/gcc.target/powerpc/e500-unord-1.c
47822d8b2aed4011af4831b9d6950e63 gcc/testsuite/gcc.target/powerpc/e500-unord-2.c
52468a71868e251587d1c07bc7e2b10f gcc/testsuite/gcc.target/powerpc/ehreturn.c
+9a3782b86e33933301343450411ef697 gcc/testsuite/gcc.target/powerpc/extend-divide-1.c
+391b21c9192f7bcd5ab0a0179c012e29 gcc/testsuite/gcc.target/powerpc/extend-divide-2.c
fbe44e0943c31011fa30a479b0856bc9 gcc/testsuite/gcc.target/powerpc/fusion.c
4109709d89c976bec9d1d05e94004ff2 gcc/testsuite/gcc.target/powerpc/gcse-1.c
f5543e6f996fc00e4ca43418e125fb66 gcc/testsuite/gcc.target/powerpc/htm-builtin-1.c
@@ -37949,6 +37945,9 @@ c5e75e8af9c592b80468829ced525050 gcc/testsuite/gcc.target/powerpc/p8vector-vect
cf9235cec69f4eadb301d29838226a26 gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-3.c
6708bd01f1d343f54ae84933d94773c6 gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-4.c
d34c3ce9f5f4b9ff4e17af15a2345cab gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c
+5fd09506461138827bcc1a6e8e116021 gcc/testsuite/gcc.target/powerpc/pack01.c
+3df5b6b1151211b0a71dcb7de4fcd779 gcc/testsuite/gcc.target/powerpc/pack02.c
+fa72c1f9512bac14ea57ebf20c94c152 gcc/testsuite/gcc.target/powerpc/pack03.c
d0bd3df7fee3d73a0acc876ce20691e2 gcc/testsuite/gcc.target/powerpc/paired-1.c
0d7e5847184bc01c42a40dda9b07bda3 gcc/testsuite/gcc.target/powerpc/paired-10.c
2bdeefd1d55b55e6e9b8ace714c9b100 gcc/testsuite/gcc.target/powerpc/paired-2.c
@@ -38091,6 +38090,7 @@ e2be005a17035d4d4c6269830259fd72 gcc/testsuite/gcc.target/powerpc/pr60032.c
70e395f580930213d5cbd9e97ec91f7f gcc/testsuite/gcc.target/powerpc/pr60137.c
18d594301e79cf9932c8ad49c33828ac gcc/testsuite/gcc.target/powerpc/pr60203.c
f128ae78c8eb899c06243379c091ac5a gcc/testsuite/gcc.target/powerpc/pr60676.c
+73ae1ef8995476aa6b62eea67f6f58dd gcc/testsuite/gcc.target/powerpc/pr60735.c
06c624c2b437fc5b9f805dc2231a75b6 gcc/testsuite/gcc.target/powerpc/quad-atomic.c
6e15a41526f5cb59817b7a5541452615 gcc/testsuite/gcc.target/powerpc/recip-1.c
6f035f512a3f0d6917409f569174ccea gcc/testsuite/gcc.target/powerpc/recip-2.c
@@ -38119,6 +38119,8 @@ aefbc9c117b311a9394883e9c890efb9 gcc/testsuite/gcc.target/powerpc/spe-vector-me
32bb5e201dd78c548aed0cdf044779ec gcc/testsuite/gcc.target/powerpc/spe1.c
c9be7e0cc9ba390460928b1de506fa70 gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c
d032ed8cc3859ce1a17c9d90fc292f26 gcc/testsuite/gcc.target/powerpc/tfmode_off.c
+c2edbb1afba546ea3ac8a5efcaca9c38 gcc/testsuite/gcc.target/powerpc/ti_math1.c
+c3d0d51284479d220a6166a0f362536c gcc/testsuite/gcc.target/powerpc/ti_math2.c
e8cdd476c18884428cf136ed2c4548b2 gcc/testsuite/gcc.target/powerpc/timode_off.c
2d7ba7687ab5e578e54145507a734e92 gcc/testsuite/gcc.target/powerpc/vsx-builtin-1.c
0126618c8adf18da2ca783d2a0e48645 gcc/testsuite/gcc.target/powerpc/vsx-builtin-2.c
@@ -40473,6 +40475,7 @@ d274474e388646c24096790888b5a1eb gcc/testsuite/gfortran.dg/finalize_21.f90
d88c4f69c4e8abbcf539c35db1c38c47 gcc/testsuite/gfortran.dg/finalize_22.f90
694cfd8a3b55175c1a6e16f7d7f60038 gcc/testsuite/gfortran.dg/finalize_23.f90
7777e7da27f0f204cb380c5791769371 gcc/testsuite/gfortran.dg/finalize_24.f90
+9d8695ba5d9b84a617601b19fbc15f3e gcc/testsuite/gfortran.dg/finalize_25.f90
fd6f56591cff43978fb9e37af994eec0 gcc/testsuite/gfortran.dg/finalize_3.f03
92b4ca27645d88cb11543d720382b004 gcc/testsuite/gfortran.dg/finalize_4.f03
ce817f495edb0ac306d6ae1052014e67 gcc/testsuite/gfortran.dg/finalize_5.f03
@@ -40987,6 +40990,7 @@ b3194ceb811f07a263b4b3018c8b7155 gcc/testsuite/gfortran.dg/graphite/pr42732.f
14ef0b0fb7468bddc8da80d525db505d gcc/testsuite/gfortran.dg/graphite/pr43349.f
cf66c78971cc0a0ccbbe06e8285499fb gcc/testsuite/gfortran.dg/graphite/pr45758.f90
c35834551693365c4a94cd2ef2b4bd6d gcc/testsuite/gfortran.dg/graphite/pr47019.f
+f993bc6aecd63bdc6b9e8b64e54b0800 gcc/testsuite/gfortran.dg/graphite/pr59817.f
daa53e999b30e1103a7ea6f3e62ecd91 gcc/testsuite/gfortran.dg/graphite/run-id-1.f
f284b8f4f2a5b32dc60a00731241ca8e gcc/testsuite/gfortran.dg/graphite/run-id-2.f90
a9d76d71bfd312f4638121eef4a5b755 gcc/testsuite/gfortran.dg/graphite/scop-1.f
@@ -41407,6 +41411,7 @@ fc437ac99c80ded40e13df8066e49a91 gcc/testsuite/gfortran.dg/linked_list_1.f90
16b03bca05a6acc43f24be44e1f2ff05 gcc/testsuite/gfortran.dg/list_read_10.f90
e76e21ee6abb6a701aa6c131c97d9312 gcc/testsuite/gfortran.dg/list_read_11.f90
20aebdb97e7740e2d38992e6981de05a gcc/testsuite/gfortran.dg/list_read_12.f90
+a9116f1431f2fcd98ac937aaf225727c gcc/testsuite/gfortran.dg/list_read_13.f
67997f845ffceb239257b26970956c2d gcc/testsuite/gfortran.dg/list_read_2.f90
799ffeafd700d24bd3e365a8addcfa10 gcc/testsuite/gfortran.dg/list_read_3.f90
36e928b3a5b9a5d89ecebae1c130be22 gcc/testsuite/gfortran.dg/list_read_4.f90
@@ -45876,7 +45881,7 @@ f3784967f82fd982a7b13a211872bdd7 gcc/testsuite/lib/scanipa.exp
bd515d57aa30aa3fb51f62e9fc698abc gcc/testsuite/lib/scantree.exp
d44c50538cc6d39a3eb1aa063b392626 gcc/testsuite/lib/target-libpath.exp
d6e6500432d65180387c39287b536b8a gcc/testsuite/lib/target-supports-dg.exp
-d3d7377c7613aed518b295f4e436f2b9 gcc/testsuite/lib/target-supports.exp
+596517bfa629c9a92959ddf70e1749c8 gcc/testsuite/lib/target-supports.exp
11de8489fa53e77ff9be279e855090eb gcc/testsuite/lib/timeout-dg.exp
038a7798c766b7a7466b09f89b875129 gcc/testsuite/lib/timeout.exp
9aba7d93506cf79e6241eb0b27cdbce3 gcc/testsuite/lib/torture-options.exp
@@ -46829,7 +46834,7 @@ f7eea62b481e8b0a731b6272b9cc74bc gcc/tree-cfg.c
4f70760d40ea5faeaf2fc2a7b235f14e gcc/tree-core.h
68d17debfd1dc9aa375d8c5cfa5d6346 gcc/tree-data-ref.c
eb5d27926043e6b574073a68ae7a6bbd gcc/tree-data-ref.h
-3dd5a3692ceb0c94441ce1fa308fbead gcc/tree-dfa.c
+e76e8e1efc24553629d2002ee50fe15d gcc/tree-dfa.c
188948b90ecddaf70eef9d404c377bba gcc/tree-dfa.h
13373f758dbb8bec16c7f6bfc183483f gcc/tree-diagnostic.c
308dd14e2238ac39da0eada1c384605c gcc/tree-diagnostic.h
@@ -46840,14 +46845,14 @@ c1de5be4d7c816691e462f98ebbfb35e gcc/tree-dump.c
18f1ee32b871b8e6a91c092dc86652b2 gcc/tree-emutls.c
392b556d7ee2d1f57ef2b4cc6b7566ce gcc/tree-hasher.h
09eb6bde07e86a671ea0c0af5a54dcd2 gcc/tree-if-conv.c
-bc4d003e0876de5cac79fbbfbe1397f6 gcc/tree-inline.c
+54c9584f7b2133d8f97ee05f49ce5957 gcc/tree-inline.c
38c9fe3122537a015ee2e63c38dcdb4d gcc/tree-inline.h
9e237b35b42a8d96e2582a9a4b2e17cf gcc/tree-into-ssa.c
391b426d3a83206f44b13a9784fdc4f4 gcc/tree-into-ssa.h
a50e871a6391b650cd6682d5c01811e2 gcc/tree-iterator.c
f930e7c2f6a3ed536883d847d3b2ccbb gcc/tree-iterator.h
a15cc75a41e7bf2ccfc380cf1eba2caa gcc/tree-loop-distribution.c
-dd3474665f077379bc17e67c77962e53 gcc/tree-nested.c
+4d1f4d581cdedd4a4726374e9275145c gcc/tree-nested.c
fd0be797829a72cc8aa7075c4f014071 gcc/tree-nested.h
f0a4e6c679c97265f09801be43d3a14c gcc/tree-nrv.c
20b5b1a12f858b7354b153c8ffc9772f gcc/tree-object-size.c
@@ -46884,7 +46889,7 @@ eeb18249f19630551d81760b4bf8543c gcc/tree-ssa-forwprop.c
4316577d7bfe850e5701f66f50da950d gcc/tree-ssa-live.c
73c40cd97a78b00562f807d65b537704 gcc/tree-ssa-live.h
44623445e0a3c3ef90cbdeca15dc7898 gcc/tree-ssa-loop-ch.c
-d079a8d937eb558ee76ca68a6d35ee9b gcc/tree-ssa-loop-im.c
+d70235f13b67d1cd315cad0b61a93821 gcc/tree-ssa-loop-im.c
de0b463530ea41456521090168225afe gcc/tree-ssa-loop-ivcanon.c
917bdac433d10a17378ef2a0abb40878 gcc/tree-ssa-loop-ivopts.c
02338563356306fac3c2016a7cbb7e18 gcc/tree-ssa-loop-ivopts.h
@@ -46902,18 +46907,18 @@ f1ab905b3a864de6c06760872d285039 gcc/tree-ssa-operands.c
863288b76e2e726b542bbbf75b4993a0 gcc/tree-ssa-phiopt.c
8fb9d0b352dbc5a750557b79d39ecb7b gcc/tree-ssa-phiprop.c
f3b38ebf82330446d5ba11dc1c4f9999 gcc/tree-ssa-pre.c
-6a218f3964aafb0ad32c2c4c24656f22 gcc/tree-ssa-propagate.c
+9083eec79d74033bf086e4bb48337a5e gcc/tree-ssa-propagate.c
7815765bde42cd1f14f758d5728ff1b8 gcc/tree-ssa-propagate.h
-a105a8fff9d7fc96ff8a5807dec618ca gcc/tree-ssa-reassoc.c
+49f3a282983a44d50b2be6d4223a2cc0 gcc/tree-ssa-reassoc.c
cec79090f8302ce24c3124ac80ae49d2 gcc/tree-ssa-sccvn.c
2b653bc55e7496a67ed55e853541ad46 gcc/tree-ssa-sccvn.h
7e7a1a092345df08ee409928b3982dfe gcc/tree-ssa-sink.c
544ace7a165f16f1c9762df3a847246f gcc/tree-ssa-strlen.c
-a5f65a2627768e5489628080335c6b35 gcc/tree-ssa-structalias.c
+242dd99b24c5b80e86aa65996c526c66 gcc/tree-ssa-structalias.c
90f6f3b5d2fb378039024c5358db286f gcc/tree-ssa-tail-merge.c
062609c7341f33356980b58413052721 gcc/tree-ssa-ter.c
b58c1f79a5493a196cfa2fe3743f0f1b gcc/tree-ssa-ter.h
-51c9c3be8d80f3944fdb6c4600335fb1 gcc/tree-ssa-threadedge.c
+7758600345e182f29ec37460ae16a349 gcc/tree-ssa-threadedge.c
516be19b8699fd0711b27443d9c35780 gcc/tree-ssa-threadedge.h
5da1def2ada611ef35889f5f82435404 gcc/tree-ssa-threadupdate.c
51f65d2aae4b00e4f980342a6f3e8f0d gcc/tree-ssa-threadupdate.h
@@ -46930,20 +46935,20 @@ a40cfa29f8fda80e38f78cf32f7f38c9 gcc/tree-streamer-in.c
df287b486f934620deb088f2ee0ce7d6 gcc/tree-streamer.c
66df870f3a2e434206f12dfca5530651 gcc/tree-streamer.h
59772b6a0b414642ac5a2a048d0f3f3d gcc/tree-switch-conversion.c
-b31ae3316201ce279149fe5e7b06de4b gcc/tree-tailcall.c
-edc269fee754426fbefc306d4ad1abad gcc/tree-vect-data-refs.c
-0e27064ef9d087f1f89864c3e014fa18 gcc/tree-vect-generic.c
+ba49073bb43840db9e9ff429362ab8b2 gcc/tree-tailcall.c
+274b1816ee7f2b383d65e3791329da01 gcc/tree-vect-data-refs.c
+a073c78a4368c02a28108cc09bf3be9a gcc/tree-vect-generic.c
c4830553b5647a24557575bac1731b99 gcc/tree-vect-loop-manip.c
-4f794f59f5123dbe288b54e7f5f2217c gcc/tree-vect-loop.c
+75b561d43c4bab24c3cab19b15ed57f8 gcc/tree-vect-loop.c
20abc700ab1045ac316418ded7857b1d gcc/tree-vect-patterns.c
-570bb562cea9f896cf6d277a778eb509 gcc/tree-vect-slp.c
+77fd4e9dc7fd733a55875224826fccdd gcc/tree-vect-slp.c
9c3f0571fc30c94ce244049843fe875f gcc/tree-vect-stmts.c
4a58096af76df477534bbb3ab779b591 gcc/tree-vectorizer.c
-00577adc4ec453db88a9e940444ffd6b gcc/tree-vectorizer.h
+b23aeb290e610825e695bf1897f28c7d gcc/tree-vectorizer.h
ddf25802321fbbbf5b2dbc7dd3c34257 gcc/tree-vrp.c
cdcff8975ef1bf46b4d958ed3dab4420 gcc/tree.c
3b971f9d72f052ea9a5fb6c32f6f9e34 gcc/tree.def
-0a5666325f0cd0535278735908559c65 gcc/tree.h
+60250d8bb2bc7e745913600f05b4cf29 gcc/tree.h
c1549110ae4675e04b97bd68b4d59a32 gcc/treestruct.def
f8da8bc6127f943f29fc1237e2806e29 gcc/tsan.c
de06e1e7c04c8221fb7bb5b03eee0230 gcc/tsan.h
@@ -47137,7 +47142,7 @@ c03a072efac9b30f8f8429ac52fd246b libatomic/testsuite/libatomic.c/atomic-store-3
8a7308fda7ed1543cb9e3be0f8e47bce libatomic/testsuite/libatomic.c/atomic-store-5.c
cce610fe1b2413dc6f097cb40816e9e8 libatomic/testsuite/libatomic.c/c.exp
97b0c9cdfcb733664bdf4efe0f5dc449 libatomic/testsuite/libatomic.c/generic-2.c
-a1f6c36fefc619da897ac9060b272016 libbacktrace/ChangeLog
+10b33b40345912c5851f7aef4f6a4a75 libbacktrace/ChangeLog
6af6c9838d1737a87529f290a49f863a libbacktrace/Makefile.am
10502b510e3bb652e63f65eab6326c9d libbacktrace/Makefile.in
1987c0495aeee1bc47709f399772173b libbacktrace/README
@@ -47156,7 +47161,7 @@ aa0d3848ac3020cb6562c1c923da293c libbacktrace/dwarf.c
5badd67d5362a883d02092d992e2c605 libbacktrace/fileline.c
4c73c8c2d1aba3b0c421e8b8e163b7ed libbacktrace/filetype.awk
16977003b6cf9fba62ceb490ea19f074 libbacktrace/internal.h
-41d56b65744d5a34a78cf347f1f93225 libbacktrace/mmap.c
+6940c5afbd9fa8c0932aa32f75836141 libbacktrace/mmap.c
b0a8eab539202706059b1cbb305d132e libbacktrace/mmapio.c
86e7417bbd63c38c6f30058e4d2f7bd8 libbacktrace/nounwind.c
915162e3a8fae0ff20d7e9232030a49a libbacktrace/posix.c
@@ -47302,48 +47307,27 @@ e5e6e60c02d9485ec697dd4f781e5444 libcpp/makeucnid.c
2b26a65df760b88805e260d6da1b8586 libcpp/mkdeps.c
eced0388fb8c787f6ddc4e261432d411 libcpp/pch.c
76f3706394bf44814a3cdbc90019ec94 libcpp/po/ChangeLog
-54906a88ab7fcfdf317421cf7c4303bc libcpp/po/be.gmo
ecad891effc5c3a27a61d3faa8aee068 libcpp/po/be.po
-5df92306df1918b63b8969719b670bf7 libcpp/po/ca.gmo
05021f159a366758ffd39f79127c09a6 libcpp/po/ca.po
378dec7a9392b4d6e11b74aa76e490f3 libcpp/po/cpplib.pot
-18b122f528c2cd812adadb54d4770fe3 libcpp/po/da.gmo
817d97ba99402c56cbf04b3cd9b0b7c7 libcpp/po/da.po
-c76d105b92625eb05a966b26c57c462f libcpp/po/de.gmo
91afe6e48dfed8912670a2f79334ed8f libcpp/po/de.po
-a204b1cc8accfe4da2179b93ecc68e0a libcpp/po/el.gmo
36e93d005544e1b703891c78e7c460e6 libcpp/po/el.po
-8fc1b1e4bf0845de080ad52ef4085ab8 libcpp/po/eo.gmo
bb77389e9eb72204ade094beef62300e libcpp/po/eo.po
-5f31720ee8a95417481dec55f3d80c8e libcpp/po/es.gmo
a7c23b2115ab171005a9c2a2672a198d libcpp/po/es.po
-7025e6b7e7802e3485e5bbbb6530c3d4 libcpp/po/fi.gmo
5294853c87e2f926371da66243cc98d9 libcpp/po/fi.po
-b52c02707d31319697136d5c5d42d4f2 libcpp/po/fr.gmo
761315916d45325a8a697b116046376f libcpp/po/fr.po
-8d8c1d4ca73156beecfcf5a7526f2213 libcpp/po/id.gmo
7d5d1f626ca2c269f239279d264a3f63 libcpp/po/id.po
-b24a5eb37c5355da1257608d765e22fe libcpp/po/ja.gmo
b8affad2de513a2b9e1c0d95b74fb2bc libcpp/po/ja.po
-db9f40047d56516cda41a7fac5fda810 libcpp/po/nl.gmo
c687d8f9dc02c416135ce7cdfb1e0ad2 libcpp/po/nl.po
-7d9f2349653981577d3223839ca4e33a libcpp/po/pt_BR.gmo
4dcc0c4b6095b169c55f55743597e6df libcpp/po/pt_BR.po
-2230fedb285bcd81c3dd755e1a5ae02a libcpp/po/ru.gmo
53a0d73a75ca2e760c13994617d67777 libcpp/po/ru.po
-317f6b60cef18eb6812d690628f3956b libcpp/po/sr.gmo
bdf9ea438c16ce527f315b29b7b9534f libcpp/po/sr.po
-ccebdb36f42a95dff00890587b194f2e libcpp/po/sv.gmo
611e8bb07450c7651f328ad6545c7b2f libcpp/po/sv.po
-7421850e9eb11eb389d402fa4b59f9d9 libcpp/po/tr.gmo
83bddfc964557d9d5d120109fbbab012 libcpp/po/tr.po
-9eefd0b35b367f238d96d92c7d3b6c8a libcpp/po/uk.gmo
e4ba6de4bc89fceb1bfdd9bde63dbf85 libcpp/po/uk.po
-28f89e8f64a76b79ba5658ef56ee5969 libcpp/po/vi.gmo
1e4e0ec0c885ba030bf1bb7d30da3e6b libcpp/po/vi.po
-ce75739771dc9af55a8f884a06d952f1 libcpp/po/zh_CN.gmo
32856d35a1c4dff45d02d2ece30eb94c libcpp/po/zh_CN.po
-161777f5843351985b8143a83bb85089 libcpp/po/zh_TW.gmo
b69e85570561450c8b44e66d788ebf71 libcpp/po/zh_TW.po
e48a7be7830821efa9fc6069c2e16674 libcpp/symtab.c
cbd2e314b31723cdff4f92f6bd0ad99f libcpp/system.h
@@ -47427,7 +47411,6 @@ c9faebdbe02f87b62c091d969dad5a0f libffi/build-ios.sh
57879ac0e3baf03623bea65c77a5aa22 libffi/configure
ae845e087dc3d68e728ac8beb670fd3a libffi/configure.ac
bec544523f8f7f3d5136f67598cf609a libffi/configure.host
-6b3dc7640e3a616bb6617983e2333580 libffi/doc/libffi.info
75795db3386811d8c8b54e152937efd4 libffi/doc/libffi.texi
d9de4b04d3550cec2e8e18ebad6434fc libffi/doc/stamp-vti
d9de4b04d3550cec2e8e18ebad6434fc libffi/doc/version.texi
@@ -47690,7 +47673,7 @@ d47c79b281339983862a8e52d8c73f0f libffi/testsuite/libffi.special/ffitestcxx.h
291be426192f460f6a07dfe1c96ab094 libffi/testsuite/libffi.special/special.exp
93fc3ea311b79f64004992807ce75d1e libffi/testsuite/libffi.special/unwindtest.cc
185d0795017fbbe253a13db8e34085f9 libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
-1235a9bc441affc877d2c91c634ce0b1 libgcc/ChangeLog
+fbd52ba3708c6c184d8ea3cfbbdde224 libgcc/ChangeLog
7f58014cfac96f94d81457205c18c223 libgcc/Makefile.in
4575e60db0c36a906ae99acf805a0550 libgcc/config.host
25a291c353009228fc85e36e91e64c08 libgcc/config.in
@@ -47946,7 +47929,7 @@ d1337b28acd8dbde9817492f9027dbc3 libgcc/config/i386/64/sfp-machine.h
1ad8379325b99afa4e196e92cf5a5aba libgcc/config/i386/crti.S
a57fb755601c047971e04689034ff273 libgcc/config/i386/crtn.S
c2535975d467d390b827e21ee7f9a2d3 libgcc/config/i386/crtprec.c
-678c48b2cd8358306d0c6998bc9e6c06 libgcc/config/i386/cygming-crtbegin.c
+381536838c868685bd0f2abfa9f81af2 libgcc/config/i386/cygming-crtbegin.c
e7b956200c902115a507718a103cf015 libgcc/config/i386/cygming-crtend.c
cbd36f1edf69f15bf49d0044d38663b5 libgcc/config/i386/cygwin.S
8e657583537e83d8cc15822e9ade5eae libgcc/config/i386/darwin-lib.h
@@ -48982,7 +48965,7 @@ e32c5653df9e5c5b602b2a6e6ddeaaf1 libgcc/unwind.inc
7e5de74bf98e12bb4afb927d0c5d69c3 libgcc/vtv_end_preinit.c
1c9bb66910761539ddc5ff002e70c272 libgcc/vtv_start.c
868ca421eb9feaef7af922f89533ec54 libgcc/vtv_start_preinit.c
-22dc2014a415529e7d8004ae8c1b91b1 libgfortran/ChangeLog
+e34e21bbed38cf6845fc39494e942626 libgfortran/ChangeLog
9aca36338382e5b4b730e7779170b24d libgfortran/ChangeLog-2002
80d3edc880c2da0b7a2beec2e2c4f774 libgfortran/ChangeLog-2003
9f0239429993a5e64ed793eb6c55a5c1 libgfortran/ChangeLog-2004
@@ -49603,7 +49586,7 @@ c287df298776a437b3a48419c86b4645 libgfortran/io/format.h
3265147203606b7bad62e5d2908f9869 libgfortran/io/inquire.c
040686ca709c2eb8e86ffe443d3fd8d6 libgfortran/io/intrinsics.c
c35833ba6b9b23bdef8de6e70635aea9 libgfortran/io/io.h
-fc91f07e504c9261c0d49f9d39a14a4c libgfortran/io/list_read.c
+2facdb9e535f3f8d38fc21d06d98f816 libgfortran/io/list_read.c
f0b41e3bb3904d863aec0780e95d876c libgfortran/io/lock.c
d7d4ed433bf1c8a869ae50ddb62b42f9 libgfortran/io/open.c
7f0a9a12949149a87ba70a272df7d9db libgfortran/io/read.c
@@ -49694,7 +49677,7 @@ b2ad6bfcfd1503c2084c749a616619d5 libgo/Makefile.in
0e3a2fb357762bdec163fe51ccb1e951 libgo/README
d46376034c1fd6df47c8ba2cd5de9d0a libgo/README.gcc
7281cb4b7a426e299beb22a3191d79c3 libgo/aclocal.m4
-2006458cea7d8eb986fc19fb9ceafac4 libgo/config.h.in
+636bde47828341ba6e598a0f281167cc libgo/config.h.in
ad1ce707d70b18d5d14bdbcfef82a9bb libgo/config/README
9a6e33ac95f7d5857d34f53bde4cb610 libgo/config/go.m4
0dbf51539b4d117324c49e2410a7868e libgo/config/libtool.m4
@@ -49703,8 +49686,8 @@ dee72a6a60e99528b0d17bf3ff9a1e15 libgo/config/ltoptions.m4
bc2f6032c98896249eadb56177c7d357 libgo/config/ltsugar.m4
c30cd33c496505f13d9fbdb6970c7c33 libgo/config/ltversion.m4
293853a13b7e218e3a4342cf85fbbf25 libgo/config/lt~obsolete.m4
-1abd9bf3e0611da88226a02318dfba20 libgo/configure
-fe865d95bef24266c89e3d2724ebbd6a libgo/configure.ac
+292416f1fc0ab677291a1094cac27c28 libgo/configure
+56d57ca3e961e4f201130d371bdd3274 libgo/configure.ac
1ef809eec8a49a2eca44b613eaf9847d libgo/go/archive/tar/common.go
45655d3df8e304b659bb098fc9006e94 libgo/go/archive/tar/reader.go
e432f7705cc613af1419f6c711089511 libgo/go/archive/tar/reader_test.go
@@ -51025,7 +51008,7 @@ bd8fc56eab9b633e58128083caf5df5f libgo/go/unicode/utf16/utf16_test.go
d2c0f0166aa2cc63cec3270b5fa1d3e2 libgo/go/unicode/utf8/utf8_test.go
8e700e99e52bad7f8289006b7bd149d4 libgo/godeps.sh
8bc70efd6d9c1c8ba1e6df79a2241516 libgo/merge.sh
-b3f8c2f9a46ec559581ca9e007ca3c4e libgo/mksysinfo.sh
+27ae1fdf2b91e9664d6b1e923a866af4 libgo/mksysinfo.sh
06b0ddfbd036dbdfdf8c4c7efb8b746f libgo/runtime/arch.h
0d727dcfb3816731f56f174e8cbd29eb libgo/runtime/array.h
d539a7523f322c7b10a6e934c5fa16e6 libgo/runtime/chan.c
@@ -51129,7 +51112,7 @@ e89e0219aa4c38b5be8fcfe859855033 libgo/runtime/mfinal.c
ec646d3074384118062135dba38d8e0c libgo/runtime/mfixalloc.c
66424704bf902fadede61a48abf430c1 libgo/runtime/mgc0.c
8814b7062f80a4c061b106b2c9c7c1bd libgo/runtime/mgc0.h
-25280d2578cb621c0a1a4808f3f0e792 libgo/runtime/mheap.c
+e66170fdb4388b7e18851ec4e3dd0b29 libgo/runtime/mheap.c
b97eeb7e3b957b7fb4f671642734023a libgo/runtime/mprof.goc
d15b2c21437b787c0d0e98b9a9740108 libgo/runtime/msize.c
c4ce56193babb313ea7bb80c882173e0 libgo/runtime/netpoll.goc
@@ -51163,7 +51146,7 @@ c95a6cc35511a2183eb5b480fa8ae836 libgo/testsuite/Makefile.in
207f334413c982763e10e994230fefbf libgo/testsuite/gotest
578a4705035f5cbb8425f2e2eb75a433 libgo/testsuite/lib/libgo.exp
6df485581d2f02246f41b5ca46f5bb5d libgo/testsuite/libgo.testmain/testmain.exp
-050c8bb88f970bea2fa92a4c08d9fa17 libgomp/ChangeLog
+cbcaa35a3c4fd86c5a9b09abbb699c31 libgomp/ChangeLog
0d55aa862aee66efdc5f8d62c94ff8fb libgomp/ChangeLog.graphite
0b707c40cd3236f294bcd8a5bcead00f libgomp/Makefile.am
d538a08bffc033de3bd6ab6000ee2091 libgomp/Makefile.in
@@ -51222,7 +51205,6 @@ cd992e3cb72acf469ea9463e733d19fc libgomp/hashtab.h
033ba0d8f9cd68151cebebf17bf33589 libgomp/iter.c
5f2f63229277fb78ee8308c045d7b476 libgomp/iter_ull.c
1f693ed86e1282c2307d65c71055023e libgomp/libgomp.h
-576982b551550b2fd60e8132ca5891e5 libgomp/libgomp.info
6cbe48d155b1725f5e32de30d5daedb4 libgomp/libgomp.map
8b2aa50aecad82171348a6918309afd6 libgomp/libgomp.spec.in
dce36ef18f99dd59489caa7388103c55 libgomp/libgomp.texi
@@ -51251,8 +51233,8 @@ ba5ed16a48b3a78511b4913cdd4d7617 libgomp/testsuite/libgomp.c++/atomic-1.C
5562ceebc0054102930e3944e3d8cea0 libgomp/testsuite/libgomp.c++/atomic-11.C
60fb93a6f619d4375a1224303e0884ea libgomp/testsuite/libgomp.c++/atomic-12.C
a56e4a1dad7c21fecfbf5dd26cb1f86a libgomp/testsuite/libgomp.c++/atomic-13.C
-63da250a39155cc5c2679f50bafe413a libgomp/testsuite/libgomp.c++/atomic-14.C
-998d78d48199bf9a944cf00743b4f08e libgomp/testsuite/libgomp.c++/atomic-15.C
+f5aa3b6a543d3042289d53904701574b libgomp/testsuite/libgomp.c++/atomic-14.C
+156c6a231b71803eea67391fb8826eab libgomp/testsuite/libgomp.c++/atomic-15.C
11dca764f708d500baba4ceaa6de9b54 libgomp/testsuite/libgomp.c++/atomic-2.C
ed304e6a8199d4a60a7bb4acd1a4f4fc libgomp/testsuite/libgomp.c++/atomic-3.C
f944acede3f9beeaf281ef9282c0ff44 libgomp/testsuite/libgomp.c++/atomic-4.C
@@ -51405,7 +51387,7 @@ b5f7bab4126564eb440b88c3b697d94b libgomp/testsuite/libgomp.c/atomic-13.c
85ee71c5eb239b17bb9095c68fbcb661 libgomp/testsuite/libgomp.c/atomic-14.c
33127ad11444516f01f50d3c91a2f1d6 libgomp/testsuite/libgomp.c/atomic-15.c
6f72ee0577bc6156aa5c8df3b6419bbb libgomp/testsuite/libgomp.c/atomic-16.c
-0ad9f2e3d666958d47ff539a07b4b3e4 libgomp/testsuite/libgomp.c/atomic-17.c
+0ab38a97361e81570c040a605673de79 libgomp/testsuite/libgomp.c/atomic-17.c
b2cad381aa4dd3db0ef4c2a7e632baf1 libgomp/testsuite/libgomp.c/atomic-2.c
b0fbce555e04a1378026d70e19942300 libgomp/testsuite/libgomp.c/atomic-3.c
55ed566464c81304a5007804570816ec libgomp/testsuite/libgomp.c/atomic-4.c
@@ -51454,6 +51436,7 @@ eedf4ded48f258d9de2bce91fae39374 libgomp/testsuite/libgomp.c/loop-12.c
683302cd2c348c750020ecdfcfa8c7de libgomp/testsuite/libgomp.c/loop-13.c
81cd8a77c25ea49d08f07250f984f35d libgomp/testsuite/libgomp.c/loop-14.c
dffc3aabaa5b2461aa560fc66c80c0fe libgomp/testsuite/libgomp.c/loop-15.c
+8257d204f0bf53b53ae5433dcee92216 libgomp/testsuite/libgomp.c/loop-16.c
fcf0b70da92fc55e6cdd5d1a77923dc3 libgomp/testsuite/libgomp.c/loop-2.c
2d311b74a086fbde01cc1251018f8c89 libgomp/testsuite/libgomp.c/loop-3.c
3e1854d7c928c20929261995df919755 libgomp/testsuite/libgomp.c/loop-4.c
@@ -51546,11 +51529,18 @@ aed7e36c7c93e3badbbf11beaf753207 libgomp/testsuite/libgomp.c/sections-2.c
6059443919441f3c8acfe62439b65044 libgomp/testsuite/libgomp.c/shared-2.c
7b472060fcdfa5aa072be093a71d8d41 libgomp/testsuite/libgomp.c/shared-3.c
d687c7ee2b97ca318eb2cbe2d9e32923 libgomp/testsuite/libgomp.c/simd-1.c
+d584069147624aaa771a8fbe26a34b92 libgomp/testsuite/libgomp.c/simd-10.c
+4b97c8d0be63a89338a88d29f5f0fbad libgomp/testsuite/libgomp.c/simd-11.c
+e2fb02a03879cc3eefcf136169a6aa04 libgomp/testsuite/libgomp.c/simd-12.c
+6d5662514cdcb1fa1445426457b8795a libgomp/testsuite/libgomp.c/simd-13.c
d825417b8e2624e2972edaefb1333efd libgomp/testsuite/libgomp.c/simd-2.c
92361ad7427a9ea00af35e9e86485641 libgomp/testsuite/libgomp.c/simd-3.c
8d5767814fdf98dacd112725c1647994 libgomp/testsuite/libgomp.c/simd-4.c
91b5ed7d04f7567188bdb6f72bf88c56 libgomp/testsuite/libgomp.c/simd-5.c
da6350b2bde6abd3e194167a5b3eb74f libgomp/testsuite/libgomp.c/simd-6.c
+f7ffd498a19cadfe20b0cbe2bd4e62f1 libgomp/testsuite/libgomp.c/simd-7.c
+9bb4ef88871b44e41ac2f641b409f04a libgomp/testsuite/libgomp.c/simd-8.c
+b898403c47aaf9326713abfd2c7ed020 libgomp/testsuite/libgomp.c/simd-9.c
21b382f164a90f3510cb97d72b5288b0 libgomp/testsuite/libgomp.c/single-1.c
f96d46491425528d3d7b30c80c64952a libgomp/testsuite/libgomp.c/single-2.c
a3d6465fcc15265d1c049a81027ae8db libgomp/testsuite/libgomp.c/sort-1.c
@@ -51941,7 +51931,6 @@ b9557cfa4f6c06b54f305a5b85fd1015 libitm/config/x86/x86_sse.cc
5dc53060e57627b03382dbd606aa5d59 libitm/dispatch.h
fce3c710dce0dcbc25e474baeacc332f libitm/eh_cpp.cc
2c833c5016e0c1a5e6b56afe97118d0d libitm/libitm.h
-d7c88c826189888dfe5aa9da84360b11 libitm/libitm.info
8d44f8cc119e5c7cbc20c558b551475b libitm/libitm.map
ea467d7117853d139bb288ab75261139 libitm/libitm.spec.in
ad66eb66e3d3354b743c68be8404be4b libitm/libitm.texi
@@ -52060,21 +52049,8 @@ a6cedb4991503f803e9f0870daf59c13 libjava/classpath/doc/.cvsignore
b343eec566430e85d1f95c21438aa4ee libjava/classpath/doc/api/Makefile.am
8f716e277c4626f1f81544c6291101b3 libjava/classpath/doc/api/Makefile.in
5ddd829b35fc94b0cdb119084089edb8 libjava/classpath/doc/cp-hacking.texinfo
-8e47b82e10c52c7434946f7552f1b333 libjava/classpath/doc/cp-tools.info
0349e5c38c548584225423ef4bafd20b libjava/classpath/doc/cp-tools.texinfo
3155d9bd9a7bf4aff2ff0dfe4a2cb878 libjava/classpath/doc/cp-vmintegration.texinfo
-c0c0e81b77952682626c07d8f3bf48b7 libjava/classpath/doc/gappletviewer.1
-8d4c248122d8d8b5aeb543425eb485a0 libjava/classpath/doc/gjar.1
-93cac536c263d4c94f75fe011d219f27 libjava/classpath/doc/gjarsigner.1
-8a418a99010f0cc7adda21f618d62433 libjava/classpath/doc/gjavah.1
-41f9cbbf7a0329e9e58f7531b6e6d58e libjava/classpath/doc/gjdoc.1
-25dfd043e4ad42a70874ca7eaa7c7576 libjava/classpath/doc/gkeytool.1
-384916dc8f8e2f999ce3a92fc8b620f8 libjava/classpath/doc/gnative2ascii.1
-9f05869a4f2ee199e364dead4bbc2186 libjava/classpath/doc/gorbd.1
-5a7e049f52bdb1a55390424b51bda8c3 libjava/classpath/doc/grmid.1
-077fa87e7b56a0d2d205afb29e7b88e9 libjava/classpath/doc/grmiregistry.1
-3bbda322d57e9d53953d3b7d82dcebc1 libjava/classpath/doc/gserialver.1
-5a0bcf97da9224b9f415d48d095431b5 libjava/classpath/doc/gtnameserv.1
7e4e31659df1c7e815f9151958dceef2 libjava/classpath/doc/texi2pod.pl
01b23c87dcf82048a5958c8224653305 libjava/classpath/doc/texinfo.tex
b1e0c0c30547d57d7a09b04d47c70b06 libjava/classpath/examples/.cvsignore
@@ -76055,7 +76031,6 @@ aece970dd74d47d051257c4d4d1e91fa libquadmath/aclocal.m4
bf09ede5c6d78e3d132bde0f933590d8 libquadmath/config.h.in
c07d51701c0992c05cc87da166fe9a8e libquadmath/configure
70f1bb2cf17ed14a22bd7f52ebf2593e libquadmath/configure.ac
-3c860ea9255794609be9a32b7305e035 libquadmath/libquadmath.info
46b44acd71b68faa8a93c7b2a1ea8e0b libquadmath/libquadmath.texi
77280bb7ee423875e03d9c0d34527df6 libquadmath/libtool-version
f44065462735b4699d44588271a5f09a libquadmath/math/acoshq.c
@@ -76430,7 +76405,7 @@ aeb2f84c5e8ba3215469d507bd2efe57 libssp/ssp/string.h
e9ab923d2562bf5f5be6883dfb9f0184 libssp/strncpy-chk.c
5e0d8b8a766c31b12354baec1b7a159c libssp/vsnprintf-chk.c
f56ab1f8922a16f7e9e4f5270ae1e34e libssp/vsprintf-chk.c
-1a8f6e700007b6a608009660de48ebc7 libstdc++-v3/ChangeLog
+b3873e9f2b01b8942e5b29ff5042a51a libstdc++-v3/ChangeLog
7aa6c40440a44fcf5ec94c066160c2f8 libstdc++-v3/ChangeLog-1998
7aff86600b6a1ed3fa87305075a92db0 libstdc++-v3/ChangeLog-1999
a6f28e8fc9bb07696a9e068b439a3a87 libstdc++-v3/ChangeLog-2000
@@ -76643,7 +76618,7 @@ e24504647642dbafa49db140acc95c21 libstdc++-v3/doc/html/bk02.html
1d3eb837e8c17cf0d0ad6d151e8d1777 libstdc++-v3/doc/html/ext/lwg-active.html
68372fa89a0decb4aa5f941df5484129 libstdc++-v3/doc/html/ext/lwg-closed.html
2defa75c6dc8ce9a6f6b775439df3b7c libstdc++-v3/doc/html/ext/lwg-defects.html
-a14649ebd9755de4404f37ba6732487d libstdc++-v3/doc/html/faq.html
+c69ec11cafce0d5c44cae4cd87842360 libstdc++-v3/doc/html/faq.html
1ae70f0bf94464b036515d333fff8ab2 libstdc++-v3/doc/html/images/confdeps.png
d7f63b43e9f4c39cf71de7585de522ee libstdc++-v3/doc/html/images/pbds_balls_and_bins.png
22eedc841676a98f8ae8b95131ac4d7e libstdc++-v3/doc/html/images/pbds_binary_priority_queue_int_push.png
@@ -76831,7 +76806,7 @@ e1f4e8c45aef131bced71b1a7fcae8d6 libstdc++-v3/doc/html/manual/utilities.html
f5a41d4f7585b850b3182fc5f4888f93 libstdc++-v3/doc/xml/book.txml
95d1335e76860d53246f3e400231ec38 libstdc++-v3/doc/xml/chapter.txml
7f8c520dc83013026c671c5c342f73e2 libstdc++-v3/doc/xml/class.txml
-ee2a1b703e1eb8fc3aaac1c05aec6e41 libstdc++-v3/doc/xml/faq.xml
+a017272ecd74d4bd4949fd4ce69b337e libstdc++-v3/doc/xml/faq.xml
0408e04957d20fcb2a1048c482230ec0 libstdc++-v3/doc/xml/gnu/fdl-1.3.xml
df4574d04d7f029398ab0183832017b6 libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
18a6390297702ec8fd75cbcc525d2005 libstdc++-v3/doc/xml/images/confdeps.dot
@@ -77138,7 +77113,7 @@ fcf411de1eb0b855de59fa82d47ed503 libstdc++-v3/include/bits/regex_constants.h
40d92d78e2e4d68bd737a1c39f1e8c9a libstdc++-v3/include/bits/regex_scanner.h
cb07487a8c867ffe44908705172d1d83 libstdc++-v3/include/bits/regex_scanner.tcc
ebd42997721b883b0c545520f6e1923d libstdc++-v3/include/bits/shared_ptr.h
-2c73a21b63642d56430e02d019b9a72c libstdc++-v3/include/bits/shared_ptr_base.h
+73934af07bbc86b6572b24058ba7f506 libstdc++-v3/include/bits/shared_ptr_base.h
6a86488bbca653f3a59bb8fa94b4e8a2 libstdc++-v3/include/bits/slice_array.h
6571ee6b9bcceaf19c56c7480d662850 libstdc++-v3/include/bits/sstream.tcc
6612703d15fae484dd38041011614cd2 libstdc++-v3/include/bits/stl_algo.h
@@ -77148,7 +77123,7 @@ ebd42997721b883b0c545520f6e1923d libstdc++-v3/include/bits/shared_ptr.h
31b2e6563922b13c61f34302db1e0895 libstdc++-v3/include/bits/stl_deque.h
564c232f6a3984a902168c5ed63dee3d libstdc++-v3/include/bits/stl_function.h
e94510088da5bc4e0335075b0964b5a3 libstdc++-v3/include/bits/stl_heap.h
-ef1aefd927cd362719132b6701a0527e libstdc++-v3/include/bits/stl_iterator.h
+18667479413ea2ec58c9d8dd1f83bcfc libstdc++-v3/include/bits/stl_iterator.h
430ba07bbc7a44cc10ce3890ca06a940 libstdc++-v3/include/bits/stl_iterator_base_funcs.h
032892ca6b0d5c74ee60b73ef2a30cf1 libstdc++-v3/include/bits/stl_iterator_base_types.h
a26666e5ba01046b83884d262adef1ca libstdc++-v3/include/bits/stl_list.h
@@ -77163,9 +77138,9 @@ c7775476ce9b7afb9233ef7bdf872cd4 libstdc++-v3/include/bits/stl_pair.h
a0088f41806a01bec922402b3eca201c libstdc++-v3/include/bits/stl_set.h
7d7a50c1bcb46613e4ec87b9c376df26 libstdc++-v3/include/bits/stl_stack.h
ba1d780f102f7ce8ebfcb87dd4a48d7b libstdc++-v3/include/bits/stl_tempbuf.h
-a8129e4da6ba88dd94051aa5f64667ed libstdc++-v3/include/bits/stl_tree.h
+67db80e147e1b99ddc72263805205b1b libstdc++-v3/include/bits/stl_tree.h
8f773b6de66ac394bddf286331b71818 libstdc++-v3/include/bits/stl_uninitialized.h
-5d5c1e9bbf937f39841caaecbd05757f libstdc++-v3/include/bits/stl_vector.h
+647b57eaafb7ef6fa20b9974a21cd063 libstdc++-v3/include/bits/stl_vector.h
4a227ea0bd121a073811a974d1d3f9b9 libstdc++-v3/include/bits/stream_iterator.h
122883005110d85812da6f01829e96e9 libstdc++-v3/include/bits/streambuf.tcc
1c437562e43cf8a7a1f4ba02bb308f04 libstdc++-v3/include/bits/streambuf_iterator.h
@@ -77178,7 +77153,7 @@ ffe4b2ce633d829846436fb65cfa1510 libstdc++-v3/include/bits/unordered_map.h
918fb95f55f1fe8f78197411d268b5c1 libstdc++-v3/include/bits/valarray_array.h
4a627b9075252068afa8da4696a387fc libstdc++-v3/include/bits/valarray_array.tcc
485a0086425b2772da4e15fd41433c43 libstdc++-v3/include/bits/valarray_before.h
-d7147c7c297fdc86dcf25ab4ef8b0985 libstdc++-v3/include/bits/vector.tcc
+6034ae6655f7418322c7bc1cd98eba08 libstdc++-v3/include/bits/vector.tcc
c2ea3321ad369e72704e3afde6828ecb libstdc++-v3/include/c/cassert
ae6a534cd39eaec2a78f42fcf9df0039 libstdc++-v3/include/c/cctype
a4c5d9b471b21331d7351b5999bb5710 libstdc++-v3/include/c/cerrno
@@ -77292,10 +77267,10 @@ ab1016486b6656005c913345e073abcf libstdc++-v3/include/debug/set.h
37dcb5505d644050637f490189f58833 libstdc++-v3/include/debug/string
56f3ad660e8300705b324a3f985b90c1 libstdc++-v3/include/debug/unordered_map
5e4e3827840ba1320c7dddbd85f56ebd libstdc++-v3/include/debug/unordered_set
-7c7720a25327cff231296154af94ae1a libstdc++-v3/include/debug/vector
+d9f9a801dbe5afcecb48a69ab8d93f32 libstdc++-v3/include/debug/vector
7e2551d2c2dd7bb997d42a690593b3fa libstdc++-v3/include/decimal/decimal
ac52c8af39627ef083a226df42fc31fb libstdc++-v3/include/decimal/decimal.h
-ef11306e00bcc0f4f269855252b1aeaa libstdc++-v3/include/experimental/optional
+9f57830b191f4bf2721cef3ccf82a697 libstdc++-v3/include/experimental/optional
5c356e2454335ced2476f7f9fdf04cb9 libstdc++-v3/include/experimental/string_view
25ac6a5e2e4bb3f2cc6cc5879b90ca32 libstdc++-v3/include/experimental/string_view.tcc
246337397419fba205fe59ea330ef425 libstdc++-v3/include/ext/algorithm
@@ -77669,12 +77644,12 @@ b405e08a37e04a980f1d9aa24cd89cdd libstdc++-v3/include/std/condition_variable
bdd91fa0453fe14cc18653b7dc6927f2 libstdc++-v3/include/std/deque
99ccf219bea076709ff5aa261b1e2d48 libstdc++-v3/include/std/forward_list
597cc52c077c63f1fdddbfa95c4bdf1f libstdc++-v3/include/std/fstream
-65b7a77990429e2e268f5b68eef98716 libstdc++-v3/include/std/functional
+7f133f2fc0f513033e8103e64ffbd5c3 libstdc++-v3/include/std/functional
d2b9b6f47bf0ff9c65becaac4c387c47 libstdc++-v3/include/std/future
5b5ed5e588d574370e630aa6f1a21944 libstdc++-v3/include/std/iomanip
0c0f52522245aad5244a12ae2e638253 libstdc++-v3/include/std/ios
565afcfbf5ba12b6327e4de4d1fd0d2a libstdc++-v3/include/std/iosfwd
-1f149f33d005cdc244261d6cc211a73b libstdc++-v3/include/std/iostream
+50f28b6730969a973497fa9c1985ce0b libstdc++-v3/include/std/iostream
d86206727695677690dd9b76890a4336 libstdc++-v3/include/std/istream
ad8f7a1244f2cf5ed21c08d23c62637a libstdc++-v3/include/std/iterator
cdf2ed2088596d3b05077f5394156082 libstdc++-v3/include/std/limits
@@ -77699,7 +77674,7 @@ fb28860f413b071d148f791cc4d8b916 libstdc++-v3/include/std/stack
d3b6f528148b5a63ee727c016366da87 libstdc++-v3/include/std/string
cb7aa094ede5e41f12cda9a35a0cfb13 libstdc++-v3/include/std/system_error
d72a138145b8c940cb7f3df7af9cb1b1 libstdc++-v3/include/std/thread
-64697bcbc4f5426ee6ea2c644858dc8f libstdc++-v3/include/std/tuple
+67f646626f10d1fe3bcde19322728392 libstdc++-v3/include/std/tuple
ad757c964d01ac611f5409e023630869 libstdc++-v3/include/std/type_traits
c4e55f5325a735f9af1b712745d9ef83 libstdc++-v3/include/std/typeindex
fc58abad3b04bfec654e4e41b8f83040 libstdc++-v3/include/std/unordered_map
@@ -77855,7 +77830,7 @@ ee6661c4f7afc49cc9f88c7592a47ffe libstdc++-v3/po/string_literals.cc
1f0d57eef092baee4784e63a2bd21719 libstdc++-v3/python/hook.in
68b329da9893e34099c7d8ad5cb9c940 libstdc++-v3/python/libstdcxx/__init__.py
68b329da9893e34099c7d8ad5cb9c940 libstdc++-v3/python/libstdcxx/v6/__init__.py
-95073c248e1254cc4b7c8b4ef8dceec7 libstdc++-v3/python/libstdcxx/v6/printers.py
+1b83b0b9896053a8206a076826e33de2 libstdc++-v3/python/libstdcxx/v6/printers.py
b1441422cec6381d9285b7681b666124 libstdc++-v3/scripts/check_compile
533e594add6e79910b0e557ba690fac6 libstdc++-v3/scripts/check_performance
f480e111db2d50194a3e1f7014c9f422 libstdc++-v3/scripts/create_testsuite_files
@@ -77917,7 +77892,7 @@ c4cd8bac205ed47583ff3f1ecd35676b libstdc++-v3/src/c++98/hashtable_tr1.cc
ba8260aee97ff53f868d21a956ace200 libstdc++-v3/src/c++98/ios-inst.cc
f4cc74d469720509875160f74fff3aeb libstdc++-v3/src/c++98/ios.cc
33865b886a4fa91608c14b40d0e74673 libstdc++-v3/src/c++98/ios_failure.cc
-566a4281292275362923b6277ad4e566 libstdc++-v3/src/c++98/ios_init.cc
+1edbe2182283a26697c86fbe00cab5f2 libstdc++-v3/src/c++98/ios_init.cc
bf46baae6c5f1da47c22b2c072419379 libstdc++-v3/src/c++98/ios_locale.cc
ac80c7ec5c0a615662b28990e1094eeb libstdc++-v3/src/c++98/iostream-inst.cc
e057f7cce50ac3eba93348a0a06364fe libstdc++-v3/src/c++98/istream-inst.cc
@@ -78255,6 +78230,7 @@ cbe0b5843c9880cc627cabcfd14ad8b8 libstdc++-v3/testsuite/20_util/function/43397.
d9ab7a7f1b9b6b6acfc774735e8ae71d libstdc++-v3/testsuite/20_util/function/5.cc
5ff95a9327494e5fd5a7bb9548a8f4ed libstdc++-v3/testsuite/20_util/function/58569.cc
9e3c0cf22572df7b8cfad07710c111c9 libstdc++-v3/testsuite/20_util/function/6.cc
+fabfe76dc30b13e696bbaf0d3da99caf libstdc++-v3/testsuite/20_util/function/60594.cc
0366f931515bb0f27522d8f32613581b libstdc++-v3/testsuite/20_util/function/7.cc
9ace4aecb05784929a870023e72fa190 libstdc++-v3/testsuite/20_util/function/8.cc
9a4341f79b42e1f66f3258b878bc6cd5 libstdc++-v3/testsuite/20_util/function/9.cc
@@ -78612,6 +78588,7 @@ ad00ade7e7b678c031a00a6371c5120d libstdc++-v3/testsuite/20_util/shared_ptr/cons
5d0781c37d398f45d346557df8346d0a libstdc++-v3/testsuite/20_util/shared_ptr/cons/55123.cc
72be9b573ae9730908ba49362a208f32 libstdc++-v3/testsuite/20_util/shared_ptr/cons/58659.cc
e47350c38a5a123564392ac3d8070833 libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc
+18099d5eb630735b727ff66874b6b79a libstdc++-v3/testsuite/20_util/shared_ptr/cons/61036.cc
56294d2ef9d9d9fd6f7c992ac3c7abff libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias.cc
a07139730396a79913c3fc0485af03cc libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc.cc
9ae93bfe04caf93a462c94cca031dfb6 libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc_min.cc
@@ -78687,6 +78664,7 @@ ea8970008dcfc507b732a77b6b6274e5 libstdc++-v3/testsuite/20_util/time_point_cast
27943d64279528f9141bfe71482464d4 libstdc++-v3/testsuite/20_util/tuple/48476.cc
04b82209ed6c0210db27506ad3187c7e libstdc++-v3/testsuite/20_util/tuple/51365.cc
c54af389d65573764200bfb0b3597473 libstdc++-v3/testsuite/20_util/tuple/53648.cc
+073f9c2ec2806d897dd09a059663bb00 libstdc++-v3/testsuite/20_util/tuple/60497.cc
ee9b755981731038f237341ae8a7dc3f libstdc++-v3/testsuite/20_util/tuple/comparison_operators/35480_neg.cc
87df08a010e0029b0c82f3c2bac6d87e libstdc++-v3/testsuite/20_util/tuple/comparison_operators/comparisons.cc
9a077a11db7228f699befe4f0726869a libstdc++-v3/testsuite/20_util/tuple/comparison_operators/constexpr.cc
@@ -78725,7 +78703,8 @@ fad4ad5ad40bf44ea48788d9a6dab764 libstdc++-v3/testsuite/20_util/tuple/moveable.
e1eea1c271af0bdfa12cc94693ef107b libstdc++-v3/testsuite/20_util/tuple/requirements/dr801.cc
3f8ef4dac6a2e28913a495f5c2823e5f libstdc++-v3/testsuite/20_util/tuple/requirements/explicit_instantiation.cc
0fbf39466f47e927efc63b5fe8acf2d6 libstdc++-v3/testsuite/20_util/tuple/swap.cc
-9b6ff386dab421e6c403a91cfcbcf2fc libstdc++-v3/testsuite/20_util/tuple/tuple_element.cc
+2ddb2960845b7e1c69f2282968ca53aa libstdc++-v3/testsuite/20_util/tuple/tuple_element.cc
+8d5defa9ea9654930802511fbb97e9f1 libstdc++-v3/testsuite/20_util/tuple/tuple_element_t.cc
f0e73cece5252f9d8ced5f133fe2f45a libstdc++-v3/testsuite/20_util/tuple/tuple_size.cc
04d1024415682274ef59af1d5ba80f8f libstdc++-v3/testsuite/20_util/typeindex/comparison_operators.cc
9b7c3ebe2b60022fc39b43722bfc2e27 libstdc++-v3/testsuite/20_util/typeindex/hash.cc
@@ -80119,6 +80098,7 @@ bf5368a7b5646d5a76293b3e5092c1c1 libstdc++-v3/testsuite/23_containers/set/23781
eac021f82238b0e7f88b2f6f300962ca libstdc++-v3/testsuite/23_containers/set/allocator/swap.cc
44177aa990428b2a07f4cad36608b16b libstdc++-v3/testsuite/23_containers/set/capacity/29134.cc
cdc1c5cbfb547b78c021908f817445fe libstdc++-v3/testsuite/23_containers/set/check_construct_destroy.cc
+479cc77c5e25439c4361e2f6436d46c2 libstdc++-v3/testsuite/23_containers/set/cons/61023.cc
2c40c028cc84603b5d0823e47d5d0fa6 libstdc++-v3/testsuite/23_containers/set/cons/moveable.cc
8140074ed960ac4091fb63b0076ebc32 libstdc++-v3/testsuite/23_containers/set/cons/noexcept_move_construct.cc
a95e300c8c185b4d18f769fa8ffe8fdb libstdc++-v3/testsuite/23_containers/set/debug/60499.cc
@@ -80597,11 +80577,11 @@ baf8b8fba1e021512d18674c803a5b85 libstdc++-v3/testsuite/23_containers/vector/mo
4f335d323864b5be5299555c2912e8ac libstdc++-v3/testsuite/23_containers/vector/range_access.cc
9174c8b0a88b51a0557c382440e6823d libstdc++-v3/testsuite/23_containers/vector/requirements/citerators.cc
8606495410696a122546bcc697746c3c libstdc++-v3/testsuite/23_containers/vector/requirements/do_the_right_thing.cc
-167bb655cddee4f8d02062168dd75224 libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
+bb8b1982b6ef069f872670de22921d72 libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
97df37bb365cecef0333fd25b4e35c5c libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor.cc
-4f34ac09baa2df97864f0e72bee2849c libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
-5742effad2a53f90eef6f9d5d5217265 libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
-729c67193e8e356623b22cc821fec6da libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
+b6b83ff4d8d1a5673351a5b066713cc2 libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
+15dac0a181dd7f47fb11cfaf934e3a30 libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
+0009af600ea619b6d63bffcc4d8f9748 libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
7b0f44a8fc2116e762a4e07fd3133016 libstdc++-v3/testsuite/23_containers/vector/requirements/exception/basic.cc
941bc15e59f223786bada67caf743f9b libstdc++-v3/testsuite/23_containers/vector/requirements/exception/generation_prohibited.cc
39fe176070e9aa0d1fd59dfdb0878d89 libstdc++-v3/testsuite/23_containers/vector/requirements/exception/propagation_consistent.cc
@@ -82967,12 +82947,12 @@ d4b43bda26dae604d284388b6730c29b libstdc++-v3/testsuite/experimental/optional/i
bc6f0c361b3eb9651d818c2e0e645499 libstdc++-v3/testsuite/experimental/optional/observers/3.cc
51b90f804430db44b2dda8253d9b7692 libstdc++-v3/testsuite/experimental/optional/observers/4.cc
a59061cab533dab4faf31c5c7ab1d6ad libstdc++-v3/testsuite/experimental/optional/observers/5.cc
-c5f9c364199476e9fa303488156af366 libstdc++-v3/testsuite/experimental/optional/relops/1.cc
-4aacc81f47fb92960fb5faf60141e2e0 libstdc++-v3/testsuite/experimental/optional/relops/2.cc
-ceeeeac7654c3e1a806227ab531e3ee4 libstdc++-v3/testsuite/experimental/optional/relops/3.cc
-0046058c67bcf8a3898a782d86c898ea libstdc++-v3/testsuite/experimental/optional/relops/4.cc
-5ab41e00c91ba3b5f2983d83e072c294 libstdc++-v3/testsuite/experimental/optional/relops/5.cc
-e173488a7d91c6b92176cbe138566d23 libstdc++-v3/testsuite/experimental/optional/relops/6.cc
+7607163a58c7bf235533be7ce1f017b4 libstdc++-v3/testsuite/experimental/optional/relops/1.cc
+af8d68158b6bfe925afefc615fb0930a libstdc++-v3/testsuite/experimental/optional/relops/2.cc
+868ada806d159763660651740db597dd libstdc++-v3/testsuite/experimental/optional/relops/3.cc
+dc55fb894f1c03adba1041a6f273b249 libstdc++-v3/testsuite/experimental/optional/relops/4.cc
+090cba6677d1fea9a9f85fe0893724f3 libstdc++-v3/testsuite/experimental/optional/relops/5.cc
+8e69c348f95d204b190c6b1e1073912d libstdc++-v3/testsuite/experimental/optional/relops/6.cc
ffca06999dc2f2773d1d0ba023ea0eb2 libstdc++-v3/testsuite/experimental/optional/requirements.cc
665098ee916ad79f901d0b111d04524b libstdc++-v3/testsuite/experimental/optional/swap/1.cc
c5dc3eec5ce8007b0241cdcf55577dd5 libstdc++-v3/testsuite/experimental/string_view/capacity/1.cc
@@ -83365,7 +83345,8 @@ a1dd9b857b40f69ff465fbb5d457440d libstdc++-v3/testsuite/libstdc++-prettyprinter
16ad995556bb1fb21842b84da10bc99c libstdc++-v3/testsuite/libstdc++-prettyprinters/debug.cc
b446ff0e9a95b28827a74d7cf33c1a2a libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
e5420a74cf55910e3f538d2b656fea8d libstdc++-v3/testsuite/libstdc++-prettyprinters/shared_ptr.cc
-13a710151699b2217a16079a0543a1e4 libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
+256a25db337bc4a096a88295c99baaae libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
+544702e55c214c943e924806b911f7b9 libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc
8914aa851af0c6a50497c3ba1a6a450e libstdc++-v3/testsuite/libstdc++-prettyprinters/tr1.cc
b7a630188c64c6cddbac76f48ceb3935 libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis.cc
ef0d22637757cfcc1ca687b6d57d9a29 libstdc++-v3/testsuite/performance/21_strings/append-1.cc
diff --git a/gcc-4.9/gcc/ChangeLog b/gcc-4.9/gcc/ChangeLog
index c0f56a156..1ccda1cd6 100644
--- a/gcc-4.9/gcc/ChangeLog
+++ b/gcc-4.9/gcc/ChangeLog
@@ -1,3 +1,646 @@
+2014-05-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/sparc/sparc-protos.h (sparc_absnegfloat_split_legitimate):
+ Delete.
+ * config/sparc/sparc.c (sparc_absnegfloat_split_legitimate): Likewise.
+ * config/sparc/sparc.md (fptype_ut699): New attribute.
+ (in_branch_delay): Return false if -mfix-ut699 is specified and
+ fptype_ut699 is set to single.
+ (truncdfsf2): Add fptype_ut699 attribute.
+ (fix_truncdfsi2): Likewise.
+ (floatsisf2): Change fptype attribute.
+ (fix_truncsfsi2): Likewise.
+ (negtf2_notv9): Delete.
+ (negtf2_v9): Likewise.
+ (negtf2_hq): New instruction.
+ (negtf2): New instruction and splitter.
+ (negdf2_notv9): Rewrite.
+ (abstf2_notv9): Delete.
+ (abstf2_hq_v9): Likewise.
+ (abstf2_v9): Likewise.
+ (abstf2_hq): New instruction.
+ (abstf2): New instruction and splitter.
+ (absdf2_notv9): Rewrite.
+
+2014-05-14 Matthias Klose <doko@ubuntu.com>
+
+ Revert:
+ 2014-05-08 Manuel López-Ibáñez <manu@gcc.gnu.org>
+ Matthias Klose <doko@ubuntu.com>
+
+ PR driver/61106
+ * optc-gen.awk: Fix option handling for -Wunused-parameter.
+
+2014-05-13 Peter Bergner <bergner@vnet.ibm.com>
+
+ * doc/sourcebuild.texi: (dfp_hw): Document.
+ (p8vector_hw): Likewise.
+ (powerpc_eabi_ok): Likewise.
+ (powerpc_elfv2): Likewise.
+ (powerpc_htm_ok): Likewise.
+ (ppc_recip_hw): Likewise.
+ (vsx_hw): Likewise.
+
+2014-05-13 Jeff Law <law@redhat.com>
+
+ Backports fromm mainline:
+
+ 2014-05-08 Jeff Law <law@redhat.com>
+
+ PR tree-optimization/61009
+ * tree-ssa-threadedge.c (thread_through_normal_block): Return a
+ tri-state rather than a boolean. When a block is too big to
+ thread through, inform caller via negative return value.
+ (thread_across_edge): If a block was too big for normal threading,
+ then it's too big for a joiner too, so remove temporary equivalences
+ and return immediately.
+
+ 2014-04-28 Jeff Law <law@redhat.com>
+
+ PR tree-optimization/60902
+ * tree-ssa-threadedge.c
+ (record_temporary_equivalences_from_stmts_at_dest): Only iterate
+ over real defs when invalidating outputs from statements that do not
+ produce useful outputs for threading.
+
+ 2014-04-23 Jeff Law <law@redhat.com>
+
+ PR tree-optimization/60902
+ * tree-ssa-threadedge.c
+ (record_temporary_equivalences_from_stmts_at_dest): Make sure to
+ invalidate outputs from statements that do not produce useful
+ outputs for threading.
+
+2014-05-13 Richard Biener <rguenther@suse.de>
+
+ PR ipa/60973
+ * tree-inline.c (remap_gimple_stmt): Clear tail call flag,
+ it needs revisiting whether the call still may be tail-called.
+
+2014-05-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/61060
+ * config/i386/i386.c (ix86_expand_set_or_movmem): If count_exp
+ is const0_rtx, return immediately. Don't test count == 0 when
+ it is always true.
+
+2014-05-12 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
+
+ Backport from mainline
+ 2014-05-12 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
+
+ PR target/60991
+ * config/avr/avr.c (avr_out_store_psi): Use correct constant
+ to restore Y.
+
+2014-05-09 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2014-05-08 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/61092
+ * config/alpha/alpha.c: Include gimple-iterator.h.
+ (alpha_gimple_fold_builtin): New function. Move
+ ALPHA_BUILTIN_UMULH folding from ...
+ (alpha_fold_builtin): ... here.
+ (TARGET_GIMPLE_FOLD_BUILTIN): New define.
+
+2014-05-09 Pitchumani Sivanupandi <Pitchumani.S@atmel.com>
+
+ Backport from 2014-04-16 trunk r209446
+ 2014-04-16 Pitchumani Sivanupandi <Pitchumani.S@atmel.com>
+
+ * config/avr/avr-mcus.def: Correct typo for atxmega256a3bu macro.
+
+2014-05-09 Georg-Johann Lay <avr@gjlay.de>
+
+ Backport from 2014-05-09 trunk r210267
+
+ PR target/61055
+ * config/avr/avr.md (cc): Add new attribute set_vzn.
+ (addqi3, addqq3, adduqq3, subqi3, subqq3, subuqq3, negqi2) [cc]:
+ Set cc insn attribute to set_vzn instead of set_zn for alternatives
+ with INC, DEC or NEG.
+ * config/avr/avr.c (avr_notice_update_cc): Handle SET_VZN.
+ (avr_out_plus_1): ADIW sets cc0 to CC_SET_CZN.
+ INC, DEC and ADD+ADC set cc0 to CC_CLOBBER.
+
+2014-05-08 Manuel López-Ibáñez <manu@gcc.gnu.org>
+ Matthias Klose <doko@ubuntu.com>
+
+ PR driver/61106
+ * optc-gen.awk: Fix option handling for -Wunused-parameter.
+
+2014-05-08 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/59952
+ * config/i386/i386.c (PTA_HASWELL): Remove PTA_RTM.
+
+2014-05-05 Marek Polacek <polacek@redhat.com>
+
+ Back port from mainline
+ 2014-05-05 Marek Polacek <polacek@redhat.com>
+
+ PR driver/61065
+ * opts.c (common_handle_option): Call error_at instead of warning_at.
+
+2014-05-04 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/60965
+ * ipa-devirt.c (get_class_context): Allow POD to change to non-POD.
+
+2014-05-04 Peter Bergner <bergner@vnet.ibm.com>
+
+ * config/rs6000/rs6000.h (RS6000_BTM_HARD_FLOAT): New define.
+ (RS6000_BTM_COMMON): Add RS6000_BTM_HARD_FLOAT.
+ (TARGET_EXTRA_BUILTINS): Add TARGET_HARD_FLOAT.
+ * config/rs6000/rs6000-builtin.def (BU_MISC_1):
+ Use RS6000_BTM_HARD_FLOAT.
+ (BU_MISC_2): Likewise.
+ * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Handle
+ RS6000_BTM_HARD_FLOAT.
+ (rs6000_option_override_internal): Enforce -mhard-float if -mhard-dfp
+ is explicitly used.
+ (rs6000_invalid_builtin): Add hard floating builtin support.
+ (rs6000_expand_builtin): Relax the gcc_assert to allow the new
+ hard float builtins.
+ (rs6000_builtin_mask_names): Add RS6000_BTM_HARD_FLOAT.
+
+2014-05-03 Joey Ye <joey.ye@arm.com>
+
+ Backport from mainline r209463
+ 2014-04-17 Joey Ye <joey.ye@arm.com>
+
+ * opts.c (OPT_fif_conversion, OPT_fif_conversion2): Disable for Og.
+
+2014-05-03 Oleg Endo <olegendo@gcc.gnu.org>
+
+ Back port from mainline
+ PR target/61026
+ * config/sh/sh.c: Include stdlib headers before everything else.
+
+2014-05-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ PR tree-optimization/60930
+ * gimple-ssa-strength-reduction.c (create_mul_imm_cand): Reject
+ creating a multiply candidate by folding two constant
+ multiplicands when the result overflows.
+
+2014-05-02 Jakub Jelinek <jakub@redhat.com>
+
+ * gimplify.c (gimplify_adjust_omp_clauses_1): Handle
+ GOVD_FIRSTPRIVATE | GOVD_LASTPRIVATE.
+ (gimplify_adjust_omp_clauses): Simd region is never
+ directly nested in combined parallel. Instead, for linear
+ with copyin/copyout, if in combined for simd loop, make decl
+ firstprivate/lastprivate on OMP_FOR.
+ * omp-low.c (expand_omp_for_generic, expand_omp_for_static_nochunk,
+ expand_omp_for_static_chunk): When setting endvar, also set
+ fd->loop.v to the same value.
+
+2014-05-02 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ Back port from mainline
+ 2014-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Check
+ TARGET_SIMD rather than TARGET_GENERAL_REGS_ONLY.
+ (TARGET_SIMD): Take AARCH64_ISA_SIMD into account.
+ (TARGET_FLOAT): Take AARCH64_ISA_FP into account.
+ (TARGET_CRYPTO): Take TARGET_SIMD into account.
+
+2014-04-30 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Back port from mainline
+ 2014-04-24 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ * doc/extend.texi (PowerPC Built-in Functions): Document new
+ powerpc extended divide, bcd, pack/unpack 128-bit, builtin
+ functions.
+ (PowerPC AltiVec/VSX Built-in Functions): Likewise.
+
+ * config/rs6000/predicates.md (const_0_to_3_operand): New
+ predicate to match 0..3 integer constants.
+
+ * config/rs6000/rs6000-builtin.def (BU_DFP_MISC_1): Add new macros
+ to support adding miscellaneous builtin functions.
+ (BU_DFP_MISC_2): Likewise.
+ (BU_P7_MISC_1): Likewise.
+ (BU_P7_MISC_2): Likewise.
+ (BU_P8V_MISC_3): Likewise.
+ (BU_MISC_1): Likewise.
+ (BU_MISC_2): Likewise.
+ (DIVWE): Add extended divide builtin functions.
+ (DIVWEO): Likewise.
+ (DIVWEU): Likewise.
+ (DIVWEUO): Likewise.
+ (DIVDE): Likewise.
+ (DIVDEO): Likewise.
+ (DIVDEU): Likewise.
+ (DIVDEUO): Likewise.
+ (DXEX): Add decimal floating-point builtin functions.
+ (DXEXQ): Likewise.
+ (DDEDPD): Likewise.
+ (DDEDPDQ): Likewise.
+ (DENBCD): Likewise.
+ (DENBCDQ): Likewise.
+ (DIEX): Likewise.
+ (DIEXQ): Likewise.
+ (DSCLI): Likewise.
+ (DSCLIQ): Likewise.
+ (DSCRI): Likewise.
+ (DSCRIQ): Likewise.
+ (CDTBCD): Add new BCD builtin functions.
+ (CBCDTD): Likewise.
+ (ADDG6S): Likewise.
+ (BCDADD): Likewise.
+ (BCDADD_LT): Likewise.
+ (BCDADD_EQ): Likewise.
+ (BCDADD_GT): Likewise.
+ (BCDADD_OV): Likewise.
+ (BCDSUB): Likewise.
+ (BCDSUB_LT): Likewise.
+ (BCDSUB_EQ): Likewise.
+ (BCDSUB_GT): Likewise.
+ (BCDSUB_OV): Likewise.
+ (PACK_TD): Add new pack/unpack 128-bit type builtin functions.
+ (UNPACK_TD): Likewise.
+ (PACK_TF): Likewise.
+ (UNPACK_TF): Likewise.
+ (UNPACK_TF_0): Likewise.
+ (UNPACK_TF_1): Likewise.
+ (PACK_V1TI): Likewise.
+ (UNPACK_V1TI): Likewise.
+
+ * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
+ support for decimal floating point builtin functions.
+ (rs6000_expand_ternop_builtin): Add checks for the new builtin
+ functions that take constant arguments.
+ (rs6000_invalid_builtin): Add decimal floating point builtin
+ support.
+ (rs6000_init_builtins): Setup long double, _Decimal64, and
+ _Decimal128 types for new builtin functions.
+ (builtin_function_type): Set the unsigned flags appropriately for
+ the new builtin functions.
+ (rs6000_opt_masks): Add support for decimal floating point builtin
+ functions.
+
+ * config/rs6000/rs6000.h (RS6000_BTM_DFP): Add support for decimal
+ floating point builtin functions.
+ (RS6000_BTM_COMMON): Likewise.
+ (RS6000_BTI_long_double): Likewise.
+ (RS6000_BTI_dfloat64): Likewise.
+ (RS6000_BTI_dfloat128): Likewise.
+ (long_double_type_internal_node): Likewise.
+ (dfloat64_type_internal_node): Likewise.
+ (dfloat128_type_internal_node): Likewise.
+
+ * config/rs6000/altivec.h (UNSPEC_BCDADD): Add support for ISA
+ 2.07 bcd arithmetic instructions.
+ (UNSPEC_BCDSUB): Likewise.
+ (UNSPEC_BCD_OVERFLOW): Likewise.
+ (UNSPEC_BCD_ADD_SUB): Likewise.
+ (bcd_add_sub): Likewise.
+ (BCD_TEST): Likewise.
+ (bcd<bcd_add_sub>): Likewise.
+ (bcd<bcd_add_sub>_test): Likewise.
+ (bcd<bcd_add_sub>_test2): Likewise.
+ (bcd<bcd_add_sub>_<code>): Likewise.
+ (peephole2 for combined bcd ops): Likewise.
+
+ * config/rs6000/dfp.md (UNSPEC_DDEDPD): Add support for new
+ decimal floating point builtin functions.
+ (UNSPEC_DENBCD): Likewise.
+ (UNSPEC_DXEX): Likewise.
+ (UNSPEC_DIEX): Likewise.
+ (UNSPEC_DSCLI): Likewise.
+ (UNSPEC_DSCRI): Likewise.
+ (D64_D128): Likewise.
+ (dfp_suffix): Likewise.
+ (dfp_ddedpd_<mode>): Likewise.
+ (dfp_denbcd_<mode>): Likewise.
+ (dfp_dxex_<mode>): Likewise.
+ (dfp_diex_<mode>): Likewise.
+ (dfp_dscli_<mode>): Likewise.
+ (dfp_dscri_<mode>): Likewise.
+
+ * config/rs6000/rs6000.md (UNSPEC_ADDG6S): Add support for new BCD
+ builtin functions.
+ (UNSPEC_CDTBCD): Likewise.
+ (UNSPEC_CBCDTD): Likewise.
+ (UNSPEC_DIVE): Add support for new extended divide builtin
+ functions.
+ (UNSPEC_DIVEO): Likewise.
+ (UNSPEC_DIVEU): Likewise.
+ (UNSPEC_DIVEUO): Likewise.
+ (UNSPEC_UNPACK_128BIT): Add support for new builtin functions to
+ pack/unpack 128-bit types.
+ (UNSPEC_PACK_128BIT): Likewise.
+ (idiv_ldiv): New mode attribute to set the 32/64-bit divide type.
+ (udiv<mode>3): Use idiv_ldiv mode attribute.
+ (div<mode>3): Likewise.
+ (addg6s): Add new BCD builtin functions.
+ (cdtbcd): Likewise.
+ (cbcdtd): Likewise.
+ (UNSPEC_DIV_EXTEND): Add support for new extended divide
+ instructions.
+ (div_extend): Likewise.
+ (div<div_extend>_<mode>"): Likewise.
+ (FP128_64): Add support for new builtin functions to pack/unpack
+ 128-bit types.
+ (unpack<mode>): Likewise.
+ (unpacktf_0): Likewise.
+ (unpacktf_1): Likewise.
+ (unpack<mode>_dm): Likewise.
+ (unpack<mode>_nodm): Likewise.
+ (pack<mode>): Likewise.
+ (unpackv1ti): Likewise.
+ (packv1ti): Likewise.
+
+2014-04-29 Pat Haugen <pthaugen@us.ibm.com>
+
+ Backport from mainline
+ 2014-04-17 Pat Haugen <pthaugen@us.ibm.com>
+
+ * config/rs6000/rs6000.md (addti3, subti3): New.
+
+2014-04-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/60971
+ * tree-tailcall.c (process_assignment): Reject conversions which
+ reduce precision.
+
+2014-04-29 Nick Clifton <nickc@redhat.com>
+
+ * config/msp430/msp430.md (umulsidi): Fix typo.
+ (mulhisi3): Enable even inside interrupt handlers.
+ * config/msp430/msp430.c (msp430_print_operand): %O: Allow for the
+ bigger return address pushed in large mode.
+
+2014-04-28 Pat Haugen <pthaugen@us.ibm.com>
+
+ * config/rs6000/sync.md (AINT mode_iterator): Move definition.
+ (loadsync_<mode>): Change mode.
+ (load_quadpti, store_quadpti): New.
+ (atomic_load<mode>, atomic_store<mode>): Add support for TI mode.
+ * config/rs6000/rs6000.md (unspec enum): Add UNSPEC_LSQ.
+
+2014-04-28 Eric Botcazou <ebotcazou@adacore.com>
+
+ * configure.ac: Tweak GAS check for LEON instructions on SPARC.
+ * configure: Regenerate.
+ * config/sparc/sparc.opt (muser-mode): New option.
+ * config/sparc/sync.md (atomic_compare_and_swap<mode>_1): Do not enable
+ for LEON3.
+ (atomic_compare_and_swap_leon3_1): New instruction for LEON3.
+ * doc/invoke.texi (SPARC options): Document -muser-mode.
+
+2014-04-26 Markus Trippelsdorf <markus@trippelsdorf.de>
+
+ * doc/install.texi (Building with profile feedback): Remove
+ outdated sentence.
+
+2014-04-26 Tom de Vries <tom@codesourcery.com>
+
+ * config/i386/i386.md (define_expand "ldexpxf3"): Fix out-of-bounds
+ array accesses.
+
+2014-04-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/60960
+ * tree-vect-generic.c (expand_vector_operation): Only call
+ expand_vector_divmod if type's mode satisfies VECTOR_MODE_P.
+
+2014-04-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/60941
+ * config/sparc/sparc.md (ashlsi3_extend): Delete.
+
+2014-04-25 Richard Biener <rguenther@suse.de>
+
+ PR ipa/60912
+ * tree-ssa-structalias.c (ipa_pta_execute): Compute direct
+ call stmt use/clobber sets during stmt walk instead of
+ walking the possibly incomplete set of caller edges.
+
+2014-04-25 Richard Biener <rguenther@suse.de>
+
+ PR ipa/60911
+ * passes.c (apply_ipa_transforms): Inline into only caller ...
+ (execute_one_pass): ... here. Properly bring in function
+ bodies for nodes we want to apply IPA transforms to.
+
+2014-04-24 Jakub Jelinek <jakub@redhat.com>
+
+ * tree.h (OMP_CLAUSE_LINEAR_GIMPLE_SEQ): Define.
+ * gimplify.c (omp_is_private): Change last argument's type to int.
+ Only diagnose lastprivate if the simd argument is 1, only diagnose
+ linear if the simd argument is 2.
+ (gimplify_omp_for): Adjust omp_is_private callers. When adding
+ lastprivate or private, add the clause to OMP_FOR_CLAUSES. Pass
+ GOVD_EXPLICIT to omp_add_variable. For simd with collapse == 1
+ create OMP_CLAUSE_LINEAR rather than OMP_CLAUSE_PRIVATE for var.
+ If var != decl and decl is in OMP_CLAUSE_LINEAR, gimplify decl
+ increment to OMP_CLAUSE_LINEAR_GIMPLE_SEQ.
+ * omp-low.c (scan_sharing_clauses, lower_lastprivate_clauses): Handle
+ OMP_CLAUSE_LINEAR_GIMPLE_SEQ.
+ * tree-nested.c (convert_nonlocal_omp_clauses,
+ convert_local_omp_clauses): Handle OMP_CLAUSE_LINEAR.
+
+2014-04-23 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2014-04-21 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/60909
+ * config/i386/i386.c (ix86_expand_builtin)
+ <case IX86_BUILTIN_RDRAND{16,32,64}_STEP>: Use temporary
+ register for target RTX.
+ <case IX86_BUILTIN_RDSEED{16,32,64}_STEP>: Ditto.
+
+2014-04-23 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/60903
+ * tree-ssa-loop-im.c (analyze_memory_references): Remove
+ commented code block.
+ (execute_sm_if_changed): Properly apply IRREDUCIBLE_LOOP
+ loop flags to newly created BBs and edges.
+
+2014-04-23 Nick Clifton <nickc@redhat.com>
+
+ * config/msp430/msp430.c (msp430_handle_option): Move function
+ to msp430-common.c
+ (msp430_option_override): Simplify mcu and mcpu option handling.
+ (msp430_is_f5_mcu): Rename to msp430_use_f5_series_hwmult. Add
+ support for -mhwmult command line option.
+ (has_32bit_hwmult): Rename to use_32bit_hwmult. Add support for
+ -mhwmult command line option.
+ (msp430_hwmult_enabled): Delete.
+ (msp43o_output_labelref): Add support for -mhwmult command line
+ option.
+ * config/msp430/msp430.md (mulhisi3, umulhisi3, mulsidi3)
+ (umulsidi3): Likewise.
+ * config/msp430/msp430.opt (mmcu): Add Report attribute.
+ (mcpu, mlarge, msmall): Likewise.
+ (mhwmult): New option.
+ * config/msp430/msp430-protos.h (msp430_hwmult_enabled): Remove
+ prototype.
+ (msp430_is_f5_mcu): Remove prototype.
+ (msp430_use_f5_series_hwmult): Add prototype.
+ * config/msp430/msp430-opts.h: New file.
+ * common/config/msp430: New directory.
+ * common/config/msp430/msp430-common.c: New file.
+ * config.gcc (msp430): Remove target_has_targetm_common.
+ * doc/invoke.texi: Document -mhwmult command line option.
+
+2014-04-23 Nick Clifton <nickc@redhat.com>
+
+ * config/i386/cygwin.h (ENDFILE_SPEC): Include
+ default-manifest.o if it can be found in the search path.
+ * config/i386/mingw32.h (ENDFILE_SPEC): Likewise.
+
+2014-04-23 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-04-14 Richard Biener <rguenther@suse.de>
+
+ PR lto/60720
+ * lto-streamer-out.c (wrap_refs): New function.
+ (lto_output): Wrap symbol references in global initializes in
+ type-preserving MEM_REFs.
+
+2014-04-23 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/60895
+ * tree-inline.c (declare_return_variable): Use mark_addressable.
+
+2014-04-23 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/60891
+ * loop-init.c (loop_optimizer_init): Make sure to apply
+ LOOPS_MAY_HAVE_MULTIPLE_LATCHES before fixing up loops.
+
+2014-04-22 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Backport from mainline
+ 2014-04-21 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/60735
+ * config/rs6000/rs6000.md (mov<mode>_softfloat32, FMOVE64 case):
+ If mode is DDmode and TARGET_E500_DOUBLE allow move.
+
+ * config/rs6000/rs6000.c (rs6000_debug_reg_global): Print some
+ more debug information for E500 if -mdebug=reg.
+
+2014-04-22 H.J. Lu <hongjiu.lu@intel.com>
+
+ Backport from mainline
+ 2014-04-22 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/60868
+ * config/i386/i386.c (ix86_expand_set_or_movmem): Call counter_mode
+ on count_exp to get mode.
+
+2014-04-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * config/rs6000/vsx.md (vsx_xxmrghw_<mode>): Adjust for
+ little-endian.
+ (vsx_xxmrglw_<mode>): Likewise.
+
+2014-04-22 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-04-14 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/55022
+ * fold-const.c (negate_expr_p): Don't negate directional rounding
+ division.
+ (fold_negate_expr): Likewise.
+
+2014-04-22 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-04-17 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/60849
+ * tree-ssa-propagate.c (valid_gimple_rhs_p): Only allow effective
+ boolean results for comparisons.
+
+2014-04-22 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-04-17 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/60841
+ * tree-vect-data-refs.c (vect_analyze_data_refs): Count stmts.
+ * tree-vect-loop.c (vect_analyze_loop_2): Pass down number
+ of stmts to SLP build.
+ * tree-vect-slp.c (vect_slp_analyze_bb_1): Likewise.
+ (vect_analyze_slp): Likewise.
+ (vect_analyze_slp_instance): Likewise.
+ (vect_build_slp_tree): Limit overall SLP tree growth.
+ * tree-vectorizer.h (vect_analyze_data_refs,
+ vect_analyze_slp): Adjust prototypes.
+
+2014-04-22 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-04-17 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/60836
+ * tree-vect-loop.c (vect_create_epilog_for_reduction): Force
+ initial PHI args to be gimple values.
+
+2014-04-22 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-04-14 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/59817
+ PR tree-optimization/60453
+ * graphite-scop-detection.c (graphite_can_represent_scev): Complete
+ recursion to catch all CHRECs in the scalar evolution and restrict
+ the predicate for the remains appropriately.
+
+2014-04-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/60823
+ * omp-low.c (ipa_simd_modify_function_body): Go through
+ all SSA_NAMEs and for those refering to vector arguments
+ which are going to be replaced adjust SSA_NAME_VAR and,
+ if it is a default definition, change it into a non-default
+ definition assigned at the beginning of function from new_decl.
+ (ipa_simd_modify_stmt_ops): Rewritten.
+ * tree-dfa.c (set_ssa_default_def): When removing default def,
+ check for NULL loc instead of NULL *loc.
+
+2014-04-22 Lin Zuojian <manjian2006@gmail.com>
+
+ PR middle-end/60281
+ * asan.c (asan_emit_stack_protection): Force the base to align to
+ appropriate bits if STRICT_ALIGNMENT. Set shadow_mem align to
+ appropriate bits if STRICT_ALIGNMENT.
+ * cfgexpand.c (expand_stack_vars): Set base_align appropriately
+ when asan is on.
+ (expand_used_vars): Leave a space in the stack frame for alignment
+ if STRICT_ALIGNMENT.
+
+2014-04-22 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
+ 2014-04-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/60844
+ * tree-ssa-reassoc.c (reassoc_remove_stmt): New function.
+ (propagate_op_to_single_use, remove_visited_stmt_chain,
+ linearize_expr, repropagate_negates, reassociate_bb): Use it
+ instead of gsi_remove.
+
+2014-04-22 Jakub Jelinek <jakub@redhat.com>
+
+ * BASE-VER: Set to 4.9.1.
+ * DEV-PHASE: Set to prerelease.
+
2014-04-22 Release Manager
* GCC 4.9.0 released.
@@ -59,8 +702,7 @@
2014-04-11 Tobias Burnus <burnus@net-b.de>
PR other/59055
- * doc/bugreport.texi (Bugs): Remove nodes pointing to the
- nirvana.
+ * doc/bugreport.texi (Bugs): Remove nodes pointing to the nirvana.
* doc/gcc.texi (Service): Update description in the @menu
* doc/invoke.texi (Option Summary): Remove misplaced and
duplicated @menu.
@@ -86,15 +728,14 @@
2014-04-11 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/60663
- * cse.c (cse_insn): Set src_volatile on ASM_OPERANDS in
- PARALLEL.
+ * cse.c (cse_insn): Set src_volatile on ASM_OPERANDS in PARALLEL.
2014-04-10 Jan Hubicka <hubicka@ucw.cz>
Jakub Jelinek <jakub@redhat.com>
PR lto/60567
- * ipa.c (function_and_variable_visibility): Copy forced_by_abi flag from
- decl_node to node.
+ * ipa.c (function_and_variable_visibility): Copy forced_by_abi
+ flag from decl_node to node.
2014-04-10 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
@@ -212,9 +853,10 @@
2014-04-05 Pitchumani Sivanupandi <Pitchumani.S@atmel.com>
- * config/avr/avr-arch.h (avr_mcu_t): Add dev_attribute field to have device
- specific ISA/ feature information. Remove short_sp and errata_skip ds.
- Add avr_device_specific_features enum to have device specific info.
+ * config/avr/avr-arch.h (avr_mcu_t): Add dev_attribute field to have
+ device specific ISA/ feature information. Remove short_sp and
+ errata_skip ds. Add avr_device_specific_features enum to have device
+ specific info.
* config/avr/avr-c.c (avr_cpu_cpp_builtins): use dev_attribute to check
errata_skip. Add __AVR_ISA_RMW__ builtin macro if RMW ISA available.
* config/avr/avr-devices.c (avr_mcu_types): Update AVR_MCU macro for
@@ -282,21 +924,21 @@
2014-04-04 Martin Jambor <mjambor@suse.cz>
PR ipa/60640
- * cgraph.h (cgraph_clone_node): New parameter added to declaration.
- Adjust all callers.
+ * cgraph.h (cgraph_clone_node): New parameter added to declaration.
+ Adjust all callers.
* cgraph.c (clone_of_p): Also return true if thunks match.
(verify_edge_corresponds_to_fndecl): Removed extraneous call to
cgraph_function_or_thunk_node and an obsolete comment.
- * cgraphclones.c (build_function_type_skip_args): Moved upwards in the
- file.
- (build_function_decl_skip_args): Likewise.
+ * cgraphclones.c (build_function_type_skip_args): Moved upwards in the
+ file.
+ (build_function_decl_skip_args): Likewise.
(set_new_clone_decl_and_node_flags): New function.
- (duplicate_thunk_for_node): Likewise.
- (redirect_edge_duplicating_thunks): Likewise.
- (cgraph_clone_node): New parameter args_to_skip, pass it to
- redirect_edge_duplicating_thunks which is called instead of
- cgraph_redirect_edge_callee.
- (cgraph_create_virtual_clone): Pass args_to_skip to cgraph_clone_node,
+ (duplicate_thunk_for_node): Likewise.
+ (redirect_edge_duplicating_thunks): Likewise.
+ (cgraph_clone_node): New parameter args_to_skip, pass it to
+ redirect_edge_duplicating_thunks which is called instead of
+ cgraph_redirect_edge_callee.
+ (cgraph_create_virtual_clone): Pass args_to_skip to cgraph_clone_node,
moved setting of a lot of flags to set_new_clone_decl_and_node_flags.
2014-04-04 Jeff Law <law@redhat.com>
@@ -334,8 +976,8 @@
PR tree-optimization/60505
* tree-vectorizer.h (struct _stmt_vec_info): Add th field as the
- threshold of number of iterations below which no vectorization will be
- done.
+ threshold of number of iterations below which no vectorization
+ will be done.
* tree-vect-loop.c (new_loop_vec_info):
Initialize LOOP_VINFO_COST_MODEL_THRESHOLD.
* tree-vect-loop.c (vect_analyze_loop_operations):
@@ -347,8 +989,7 @@
2014-04-03 Richard Biener <rguenther@suse.de>
- * tree-streamer.h (struct streamer_tree_cache_d): Add next_idx
- member.
+ * tree-streamer.h (struct streamer_tree_cache_d): Add next_idx member.
(streamer_tree_cache_create): Adjust.
* tree-streamer.c (streamer_tree_cache_add_to_node_array): Adjust
to allow optional nodes array.
@@ -359,8 +1000,7 @@
* lto-streamer-out.c (create_output_block): Avoid maintaining
the node array in the writer cache.
(DFS_write_tree): Remove assertion.
- (produce_asm_for_decls): Free the out decl state hash table
- early.
+ (produce_asm_for_decls): Free the out decl state hash table early.
* lto-streamer-in.c (lto_data_in_create): Adjust for
streamer_tree_cache_create prototype change.
@@ -381,24 +1021,6 @@
(Weffc++): Remove Scott's numbering, merge lists and reference
Wnon-virtual-dtor.
- c-family/
-
- cp/
- * class.c (accessible_nvdtor_p): New.
- (check_bases): Don't check base destructor here ...
- (check_bases_and_members): ... check them here. Trigger on
- Wnon-virtual-dtor flag.
- (finish_struct_1): Use accessible_nvdtor_p.
-
- testsuite/
- * g++.dg/warn/Wnvdtor.C: Add non-polymorphic case.
- * g++.dg/warn/Wnvdtor-2.C: New.
- * g++.dg/warn/Wnvdtor-3.C: New.
- * g++.dg/warn/Wnvdtor-4.C: New.
- * g++.dg/warn/Weff1.C: Delete.
- * g++.old-deja/g++.benjamin/15309-1.C: Delete.
- * g++.old-deja/g++.benjamin/15309-2.C: Delete.
-
2014-04-03 Nick Clifton <nickc@redhat.com>
* config/rl78/rl78-expand.md (movqi): Handle (SUBREG (SYMBOL_REF))
@@ -414,8 +1036,8 @@
2014-04-02 Jan Hubicka <hubicka@ucw.cz>
PR ipa/60659
- * ipa-devirt.c (get_polymorphic_call_info): Do not ICE on type inconsistent
- code and instead mark the context inconsistent.
+ * ipa-devirt.c (get_polymorphic_call_info): Do not ICE on type
+ inconsistent code and instead mark the context inconsistent.
(possible_polymorphic_call_targets): For inconsistent contexts
return empty complete list.
@@ -519,8 +1141,7 @@
2014-04-01 Richard Biener <rguenther@suse.de>
- * gimple.h (struct gimple_statement_base): Align subcode to
- 16 bits.
+ * gimple.h (struct gimple_statement_base): Align subcode to 16 bits.
2014-04-01 Sebastian Huber <sebastian.huber@embedded-brains.de>
diff --git a/gcc-4.9/gcc/DATESTAMP b/gcc-4.9/gcc/DATESTAMP
index 50894d115..7dfdaab6e 100644
--- a/gcc-4.9/gcc/DATESTAMP
+++ b/gcc-4.9/gcc/DATESTAMP
@@ -1 +1 @@
-20140422
+20140514
diff --git a/gcc-4.9/gcc/DEV-PHASE b/gcc-4.9/gcc/DEV-PHASE
index e69de29bb..373fbc60b 100644
--- a/gcc-4.9/gcc/DEV-PHASE
+++ b/gcc-4.9/gcc/DEV-PHASE
@@ -0,0 +1 @@
+prerelease
diff --git a/gcc-4.9/gcc/asan.c b/gcc-4.9/gcc/asan.c
index 53992a81b..28a476fe4 100644
--- a/gcc-4.9/gcc/asan.c
+++ b/gcc-4.9/gcc/asan.c
@@ -1017,8 +1017,17 @@ asan_emit_stack_protection (rtx base, rtx pbase, unsigned int alignb,
base_align_bias = ((asan_frame_size + alignb - 1)
& ~(alignb - HOST_WIDE_INT_1)) - asan_frame_size;
}
+ /* Align base if target is STRICT_ALIGNMENT. */
+ if (STRICT_ALIGNMENT)
+ base = expand_binop (Pmode, and_optab, base,
+ gen_int_mode (-((GET_MODE_ALIGNMENT (SImode)
+ << ASAN_SHADOW_SHIFT)
+ / BITS_PER_UNIT), Pmode), NULL_RTX,
+ 1, OPTAB_DIRECT);
+
if (use_after_return_class == -1 && pbase)
emit_move_insn (pbase, base);
+
base = expand_binop (Pmode, add_optab, base,
gen_int_mode (base_offset - base_align_bias, Pmode),
NULL_RTX, 1, OPTAB_DIRECT);
@@ -1097,6 +1106,8 @@ asan_emit_stack_protection (rtx base, rtx pbase, unsigned int alignb,
&& (ASAN_RED_ZONE_SIZE >> ASAN_SHADOW_SHIFT) == 4);
shadow_mem = gen_rtx_MEM (SImode, shadow_base);
set_mem_alias_set (shadow_mem, asan_shadow_set);
+ if (STRICT_ALIGNMENT)
+ set_mem_align (shadow_mem, (GET_MODE_ALIGNMENT (SImode)));
prev_offset = base_offset;
for (l = length; l; l -= 2)
{
@@ -1186,6 +1197,10 @@ asan_emit_stack_protection (rtx base, rtx pbase, unsigned int alignb,
shadow_mem = gen_rtx_MEM (BLKmode, shadow_base);
set_mem_alias_set (shadow_mem, asan_shadow_set);
+
+ if (STRICT_ALIGNMENT)
+ set_mem_align (shadow_mem, (GET_MODE_ALIGNMENT (SImode)));
+
prev_offset = base_offset;
last_offset = base_offset;
last_size = 0;
diff --git a/gcc-4.9/gcc/c-family/ChangeLog b/gcc-4.9/gcc/c-family/ChangeLog
index 805ba9ca8..4f277de68 100644
--- a/gcc-4.9/gcc/c-family/ChangeLog
+++ b/gcc-4.9/gcc/c-family/ChangeLog
@@ -1,3 +1,19 @@
+2014-05-06 Richard Biener <rguenther@suse.de>
+
+ * c-opts.c (c_common_post_options): For -freestanding,
+ -fno-hosted and -fno-builtin disable pattern recognition
+ if not enabled explicitely.
+
+2014-04-22 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-04-14 Richard Biener <rguenther@suse.de>
+ Marc Glisse <marc.glisse@inria.fr>
+
+ PR c/60819
+ * c-common.c (convert_vector_to_pointer_for_subscript): Properly
+ apply may-alias the scalar pointer type when applicable.
+
2014-04-22 Release Manager
* GCC 4.9.0 released.
diff --git a/gcc-4.9/gcc/c-family/c-common.c b/gcc-4.9/gcc/c-family/c-common.c
index 03731b4b8..f7f2bb3e3 100644
--- a/gcc-4.9/gcc/c-family/c-common.c
+++ b/gcc-4.9/gcc/c-family/c-common.c
@@ -11770,8 +11770,21 @@ convert_vector_to_pointer_for_subscript (location_t loc,
c_common_mark_addressable_vec (*vecp);
type = build_qualified_type (TREE_TYPE (type), TYPE_QUALS (type));
- type = build_pointer_type (type);
type1 = build_pointer_type (TREE_TYPE (*vecp));
+ bool ref_all = TYPE_REF_CAN_ALIAS_ALL (type1);
+ if (!ref_all
+ && !DECL_P (*vecp))
+ {
+ /* If the original vector isn't declared may_alias and it
+ isn't a bare vector look if the subscripting would
+ alias the vector we subscript, and if not, force ref-all. */
+ alias_set_type vecset = get_alias_set (*vecp);
+ alias_set_type sset = get_alias_set (type);
+ if (!alias_sets_must_conflict_p (sset, vecset)
+ && !alias_set_subset_of (sset, vecset))
+ ref_all = true;
+ }
+ type = build_pointer_type_for_mode (type, ptr_mode, ref_all);
*vecp = build1 (ADDR_EXPR, type1, *vecp);
*vecp = convert (type, *vecp);
}
diff --git a/gcc-4.9/gcc/c-family/c-opts.c b/gcc-4.9/gcc/c-family/c-opts.c
index e162e49a1..29e9a355b 100644
--- a/gcc-4.9/gcc/c-family/c-opts.c
+++ b/gcc-4.9/gcc/c-family/c-opts.c
@@ -851,6 +851,12 @@ c_common_post_options (const char **pfilename)
if (flag_objc_exceptions && !flag_objc_sjlj_exceptions)
flag_exceptions = 1;
+ /* If -ffreestanding, -fno-hosted or -fno-builtin then disable
+ pattern recognition. */
+ if (!global_options_set.x_flag_tree_loop_distribute_patterns
+ && flag_no_builtin)
+ flag_tree_loop_distribute_patterns = 0;
+
/* -Woverlength-strings is off by default, but is enabled by -Wpedantic.
It is never enabled in C++, as the minimum limit is not normative
in that standard. */
diff --git a/gcc-4.9/gcc/c/ChangeLog b/gcc-4.9/gcc/c/ChangeLog
index f5e7179e9..5f4a207a7 100644
--- a/gcc-4.9/gcc/c/ChangeLog
+++ b/gcc-4.9/gcc/c/ChangeLog
@@ -1,3 +1,15 @@
+2014-04-24 Jakub Jelinek <jakub@redhat.com>
+
+ * c-parser.c (c_parser_omp_atomic): Allow seq_cst before
+ atomic-clause, allow comma in between atomic-clause and
+ seq_cst.
+
+2014-04-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/59073
+ * c-parser.c (c_parser_omp_parallel): If c_parser_omp_for
+ fails, don't set OM_PARALLEL_COMBINED and return NULL.
+
2014-04-22 Release Manager
* GCC 4.9.0 released.
diff --git a/gcc-4.9/gcc/c/c-parser.c b/gcc-4.9/gcc/c/c-parser.c
index 5653e49f4..6eb235c5c 100644
--- a/gcc-4.9/gcc/c/c-parser.c
+++ b/gcc-4.9/gcc/c/c-parser.c
@@ -11198,6 +11198,18 @@ c_parser_omp_atomic (location_t loc, c_parser *parser)
if (c_parser_next_token_is (parser, CPP_NAME))
{
const char *p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
+ if (!strcmp (p, "seq_cst"))
+ {
+ seq_cst = true;
+ c_parser_consume_token (parser);
+ if (c_parser_next_token_is (parser, CPP_COMMA)
+ && c_parser_peek_2nd_token (parser)->type == CPP_NAME)
+ c_parser_consume_token (parser);
+ }
+ }
+ if (c_parser_next_token_is (parser, CPP_NAME))
+ {
+ const char *p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
if (!strcmp (p, "read"))
code = OMP_ATOMIC_READ;
@@ -11212,13 +11224,21 @@ c_parser_omp_atomic (location_t loc, c_parser *parser)
if (p)
c_parser_consume_token (parser);
}
- if (c_parser_next_token_is (parser, CPP_NAME))
+ if (!seq_cst)
{
- const char *p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
- if (!strcmp (p, "seq_cst"))
+ if (c_parser_next_token_is (parser, CPP_COMMA)
+ && c_parser_peek_2nd_token (parser)->type == CPP_NAME)
+ c_parser_consume_token (parser);
+
+ if (c_parser_next_token_is (parser, CPP_NAME))
{
- seq_cst = true;
- c_parser_consume_token (parser);
+ const char *p
+ = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
+ if (!strcmp (p, "seq_cst"))
+ {
+ seq_cst = true;
+ c_parser_consume_token (parser);
+ }
}
}
c_parser_skip_to_pragma_eol (parser);
@@ -12208,10 +12228,12 @@ c_parser_omp_parallel (location_t loc, c_parser *parser,
if (!flag_openmp) /* flag_openmp_simd */
return c_parser_omp_for (loc, parser, p_name, mask, cclauses);
block = c_begin_omp_parallel ();
- c_parser_omp_for (loc, parser, p_name, mask, cclauses);
+ tree ret = c_parser_omp_for (loc, parser, p_name, mask, cclauses);
stmt
= c_finish_omp_parallel (loc, cclauses[C_OMP_CLAUSE_SPLIT_PARALLEL],
block);
+ if (ret == NULL_TREE)
+ return ret;
OMP_PARALLEL_COMBINED (stmt) = 1;
return stmt;
}
diff --git a/gcc-4.9/gcc/cfgexpand.c b/gcc-4.9/gcc/cfgexpand.c
index b7f63602d..14511e137 100644
--- a/gcc-4.9/gcc/cfgexpand.c
+++ b/gcc-4.9/gcc/cfgexpand.c
@@ -1013,10 +1013,19 @@ expand_stack_vars (bool (*pred) (size_t), struct stack_vars_data *data)
if (data->asan_base == NULL)
data->asan_base = gen_reg_rtx (Pmode);
base = data->asan_base;
+
+ if (!STRICT_ALIGNMENT)
+ base_align = crtl->max_used_stack_slot_alignment;
+ else
+ base_align = MAX (crtl->max_used_stack_slot_alignment,
+ GET_MODE_ALIGNMENT (SImode)
+ << ASAN_SHADOW_SHIFT);
}
else
- offset = alloc_stack_frame_space (stack_vars[i].size, alignb);
- base_align = crtl->max_used_stack_slot_alignment;
+ {
+ offset = alloc_stack_frame_space (stack_vars[i].size, alignb);
+ base_align = crtl->max_used_stack_slot_alignment;
+ }
}
else
{
@@ -1845,6 +1854,11 @@ expand_used_vars (void)
= alloc_stack_frame_space (redzonesz, ASAN_RED_ZONE_SIZE);
data.asan_vec.safe_push (prev_offset);
data.asan_vec.safe_push (offset);
+ /* Leave space for alignment if STRICT_ALIGNMENT. */
+ if (STRICT_ALIGNMENT)
+ alloc_stack_frame_space ((GET_MODE_ALIGNMENT (SImode)
+ << ASAN_SHADOW_SHIFT)
+ / BITS_PER_UNIT, 1);
var_end_seq
= asan_emit_stack_protection (virtual_stack_vars_rtx,
diff --git a/gcc-4.9/gcc/config.gcc b/gcc-4.9/gcc/config.gcc
index 2ad81ea91..04681224f 100644
--- a/gcc-4.9/gcc/config.gcc
+++ b/gcc-4.9/gcc/config.gcc
@@ -2146,7 +2146,6 @@ msp430*-*-*)
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
c_target_objs="msp430-c.o"
cxx_target_objs="msp430-c.o"
- target_has_targetm_common=no
tmake_file="${tmake_file} msp430/t-msp430"
;;
nds32le-*-*)
diff --git a/gcc-4.9/gcc/config/aarch64/aarch64.h b/gcc-4.9/gcc/config/aarch64/aarch64.h
index 7962aa472..2fd6df4af 100644
--- a/gcc-4.9/gcc/config/aarch64/aarch64.h
+++ b/gcc-4.9/gcc/config/aarch64/aarch64.h
@@ -32,7 +32,7 @@
else \
builtin_define ("__AARCH64EL__"); \
\
- if (!TARGET_GENERAL_REGS_ONLY) \
+ if (TARGET_SIMD) \
builtin_define ("__ARM_NEON"); \
\
switch (aarch64_cmodel) \
@@ -83,9 +83,9 @@
#define WORDS_BIG_ENDIAN (BYTES_BIG_ENDIAN)
/* AdvSIMD is supported in the default configuration, unless disabled by
- -mgeneral-regs-only. */
-#define TARGET_SIMD !TARGET_GENERAL_REGS_ONLY
-#define TARGET_FLOAT !TARGET_GENERAL_REGS_ONLY
+ -mgeneral-regs-only or by the +nosimd extension. */
+#define TARGET_SIMD (!TARGET_GENERAL_REGS_ONLY && AARCH64_ISA_SIMD)
+#define TARGET_FLOAT (!TARGET_GENERAL_REGS_ONLY && AARCH64_ISA_FP)
#define UNITS_PER_WORD 8
@@ -185,8 +185,8 @@ extern unsigned long aarch64_isa_flags;
extern unsigned long aarch64_tune_flags;
#define AARCH64_TUNE_SLOWMUL (aarch64_tune_flags & AARCH64_FL_SLOWMUL)
-/* Crypto is an optional feature. */
-#define TARGET_CRYPTO AARCH64_ISA_CRYPTO
+/* Crypto is an optional extension to AdvSIMD. */
+#define TARGET_CRYPTO (TARGET_SIMD && AARCH64_ISA_CRYPTO)
/* Standard register usage. */
diff --git a/gcc-4.9/gcc/config/alpha/alpha.c b/gcc-4.9/gcc/config/alpha/alpha.c
index df4cc1b1c..dc07a02c0 100644
--- a/gcc-4.9/gcc/config/alpha/alpha.c
+++ b/gcc-4.9/gcc/config/alpha/alpha.c
@@ -62,6 +62,7 @@ along with GCC; see the file COPYING3. If not see
#include "gimple-expr.h"
#include "is-a.h"
#include "gimple.h"
+#include "gimple-iterator.h"
#include "gimplify.h"
#include "gimple-ssa.h"
#include "stringpool.h"
@@ -7042,9 +7043,6 @@ alpha_fold_builtin (tree fndecl, int n_args, tree *op,
case ALPHA_BUILTIN_MSKQH:
return alpha_fold_builtin_mskxx (op, opint, op_const, 0xff, true);
- case ALPHA_BUILTIN_UMULH:
- return fold_build2 (MULT_HIGHPART_EXPR, alpha_dimode_u, op[0], op[1]);
-
case ALPHA_BUILTIN_ZAP:
opint[1] ^= 0xff;
/* FALLTHRU */
@@ -7094,6 +7092,49 @@ alpha_fold_builtin (tree fndecl, int n_args, tree *op,
return NULL;
}
}
+
+bool
+alpha_gimple_fold_builtin (gimple_stmt_iterator *gsi)
+{
+ bool changed = false;
+ gimple stmt = gsi_stmt (*gsi);
+ tree call = gimple_call_fn (stmt);
+ gimple new_stmt = NULL;
+
+ if (call)
+ {
+ tree fndecl = gimple_call_fndecl (stmt);
+
+ if (fndecl)
+ {
+ tree arg0, arg1;
+
+ switch (DECL_FUNCTION_CODE (fndecl))
+ {
+ case ALPHA_BUILTIN_UMULH:
+ arg0 = gimple_call_arg (stmt, 0);
+ arg1 = gimple_call_arg (stmt, 1);
+
+ new_stmt
+ = gimple_build_assign_with_ops (MULT_HIGHPART_EXPR,
+ gimple_call_lhs (stmt),
+ arg0,
+ arg1);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ if (new_stmt)
+ {
+ gsi_replace (gsi, new_stmt, true);
+ changed = true;
+ }
+
+ return changed;
+}
/* This page contains routines that are used to determine what the function
prologue and epilogue code will do and write them out. */
@@ -9790,6 +9831,8 @@ alpha_canonicalize_comparison (int *code, rtx *op0, rtx *op1,
#define TARGET_EXPAND_BUILTIN alpha_expand_builtin
#undef TARGET_FOLD_BUILTIN
#define TARGET_FOLD_BUILTIN alpha_fold_builtin
+#undef TARGET_GIMPLE_FOLD_BUILTIN
+#define TARGET_GIMPLE_FOLD_BUILTIN alpha_gimple_fold_builtin
#undef TARGET_FUNCTION_OK_FOR_SIBCALL
#define TARGET_FUNCTION_OK_FOR_SIBCALL alpha_function_ok_for_sibcall
diff --git a/gcc-4.9/gcc/config/avr/avr-mcus.def b/gcc-4.9/gcc/config/avr/avr-mcus.def
index 3cf2fcd41..483a30321 100644
--- a/gcc-4.9/gcc/config/avr/avr-mcus.def
+++ b/gcc-4.9/gcc/config/avr/avr-mcus.def
@@ -291,7 +291,7 @@ AVR_MCU ("atxmega192a3", ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega192A3__
AVR_MCU ("atxmega192d3", ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega192D3__", 0x2000, 4, "x192d3")
AVR_MCU ("atxmega256a3", ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256A3__", 0x2000, 5, "x256a3")
AVR_MCU ("atxmega256a3b", ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256A3B__", 0x2000, 5, "x256a3b")
-AVR_MCU ("atxmega256a3bu", ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega258A3BU__", 0x2000, 5, "x256a3bu")
+AVR_MCU ("atxmega256a3bu", ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256A3BU__", 0x2000, 5, "x256a3bu")
AVR_MCU ("atxmega256d3", ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256D3__", 0x2000, 5, "x256d3")
AVR_MCU ("atxmega128a3u", ARCH_AVRXMEGA6, AVR_ISA_RMW, "__AVR_ATxmega128A3U__", 0x2000, 3, "x128a3u")
AVR_MCU ("atxmega128b1", ARCH_AVRXMEGA6, AVR_ISA_RMW, "__AVR_ATxmega128B1__", 0x2000, 3, "x128b1")
diff --git a/gcc-4.9/gcc/config/avr/avr.c b/gcc-4.9/gcc/config/avr/avr.c
index 99644ec92..fa979df46 100644
--- a/gcc-4.9/gcc/config/avr/avr.c
+++ b/gcc-4.9/gcc/config/avr/avr.c
@@ -2353,6 +2353,12 @@ avr_notice_update_cc (rtx body ATTRIBUTE_UNUSED, rtx insn)
}
break;
+ case CC_SET_VZN:
+ /* Insn like INC, DEC, NEG that set Z,N,V. We currently don't make use
+ of this combination, cf. also PR61055. */
+ CC_STATUS_INIT;
+ break;
+
case CC_SET_CZN:
/* Insn sets the Z,N,C flags of CC to recog_operand[0].
The V flag may or may not be known but that's ok because
@@ -3987,7 +3993,7 @@ avr_out_store_psi (rtx insn, rtx *op, int *plen)
"std Y+61,%A1" CR_TAB
"std Y+62,%B1" CR_TAB
"std Y+63,%C1" CR_TAB
- "sbiw r28,%o0-60", op, plen, -5);
+ "sbiw r28,%o0-61", op, plen, -5);
return avr_asm_len ("subi r28,lo8(-%o0)" CR_TAB
"sbci r29,hi8(-%o0)" CR_TAB
@@ -6284,7 +6290,7 @@ avr_out_plus_1 (rtx *xop, int *plen, enum rtx_code code, int *pcc,
if (REG_P (xop[2]))
{
- *pcc = MINUS == code ? (int) CC_SET_CZN : (int) CC_SET_N;
+ *pcc = MINUS == code ? (int) CC_SET_CZN : (int) CC_CLOBBER;
for (i = 0; i < n_bytes; i++)
{
@@ -6393,7 +6399,7 @@ avr_out_plus_1 (rtx *xop, int *plen, enum rtx_code code, int *pcc,
op, plen, 1);
if (n_bytes == 2 && PLUS == code)
- *pcc = CC_SET_ZN;
+ *pcc = CC_SET_CZN;
}
i++;
@@ -6416,6 +6422,7 @@ avr_out_plus_1 (rtx *xop, int *plen, enum rtx_code code, int *pcc,
{
avr_asm_len ((code == PLUS) ^ (val8 == 1) ? "dec %0" : "inc %0",
op, plen, 1);
+ *pcc = CC_CLOBBER;
break;
}
diff --git a/gcc-4.9/gcc/config/avr/avr.md b/gcc-4.9/gcc/config/avr/avr.md
index d7baa4a83..2c59bf3f9 100644
--- a/gcc-4.9/gcc/config/avr/avr.md
+++ b/gcc-4.9/gcc/config/avr/avr.md
@@ -90,7 +90,7 @@
(include "constraints.md")
;; Condition code settings.
-(define_attr "cc" "none,set_czn,set_zn,set_n,compare,clobber,
+(define_attr "cc" "none,set_czn,set_zn,set_vzn,set_n,compare,clobber,
plus,ldi"
(const_string "none"))
@@ -1098,7 +1098,7 @@
inc %0\;inc %0
dec %0\;dec %0"
[(set_attr "length" "1,1,1,1,2,2")
- (set_attr "cc" "set_czn,set_czn,set_zn,set_zn,set_zn,set_zn")])
+ (set_attr "cc" "set_czn,set_czn,set_vzn,set_vzn,set_vzn,set_vzn")])
;; "addhi3"
;; "addhq3" "adduhq3"
@@ -1369,7 +1369,7 @@
dec %0\;dec %0
inc %0\;inc %0"
[(set_attr "length" "1,1,1,1,2,2")
- (set_attr "cc" "set_czn,set_czn,set_zn,set_zn,set_zn,set_zn")])
+ (set_attr "cc" "set_czn,set_czn,set_vzn,set_vzn,set_vzn,set_vzn")])
;; "subhi3"
;; "subhq3" "subuhq3"
@@ -3992,7 +3992,7 @@
""
"neg %0"
[(set_attr "length" "1")
- (set_attr "cc" "set_zn")])
+ (set_attr "cc" "set_vzn")])
(define_insn "*negqihi2"
[(set (match_operand:HI 0 "register_operand" "=r")
diff --git a/gcc-4.9/gcc/config/i386/cygwin.h b/gcc-4.9/gcc/config/i386/cygwin.h
index f7b9a284c..165d3aae2 100644
--- a/gcc-4.9/gcc/config/i386/cygwin.h
+++ b/gcc-4.9/gcc/config/i386/cygwin.h
@@ -45,6 +45,7 @@ along with GCC; see the file COPYING3. If not see
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
"%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}\
+ %{!shared:%:if-exists(default-manifest.o%s)}\
crtend.o%s"
/* Normally, -lgcc is not needed since everything in it is in the DLL, but we
diff --git a/gcc-4.9/gcc/config/i386/i386.c b/gcc-4.9/gcc/config/i386/i386.c
index 3eefe4ac5..d7c592f48 100644
--- a/gcc-4.9/gcc/config/i386/i386.c
+++ b/gcc-4.9/gcc/config/i386/i386.c
@@ -3128,7 +3128,7 @@ ix86_option_override_internal (bool main_args_p,
(PTA_SANDYBRIDGE | PTA_FSGSBASE | PTA_RDRND | PTA_F16C)
#define PTA_HASWELL \
(PTA_IVYBRIDGE | PTA_AVX2 | PTA_BMI | PTA_BMI2 | PTA_LZCNT \
- | PTA_FMA | PTA_MOVBE | PTA_RTM | PTA_HLE)
+ | PTA_FMA | PTA_MOVBE | PTA_HLE)
#define PTA_BROADWELL \
(PTA_HASWELL | PTA_ADX | PTA_PRFCHW | PTA_RDSEED)
#define PTA_BONNELL \
@@ -24151,8 +24151,13 @@ ix86_expand_set_or_movmem (rtx dst, rtx src, rtx count_exp, rtx val_exp,
align = MEM_ALIGN (dst) / BITS_PER_UNIT;
if (CONST_INT_P (count_exp))
- min_size = max_size = probable_max_size = count = expected_size
- = INTVAL (count_exp);
+ {
+ min_size = max_size = probable_max_size = count = expected_size
+ = INTVAL (count_exp);
+ /* When COUNT is 0, there is nothing to do. */
+ if (!count)
+ return true;
+ }
else
{
if (min_size_exp)
@@ -24161,7 +24166,7 @@ ix86_expand_set_or_movmem (rtx dst, rtx src, rtx count_exp, rtx val_exp,
max_size = INTVAL (max_size_exp);
if (probable_max_size_exp)
probable_max_size = INTVAL (probable_max_size_exp);
- if (CONST_INT_P (expected_size_exp) && count == 0)
+ if (CONST_INT_P (expected_size_exp))
expected_size = INTVAL (expected_size_exp);
}
@@ -24390,7 +24395,8 @@ ix86_expand_set_or_movmem (rtx dst, rtx src, rtx count_exp, rtx val_exp,
if (jump_around_label == NULL_RTX)
jump_around_label = gen_label_rtx ();
emit_cmp_and_jump_insns (count_exp, GEN_INT (dynamic_check - 1),
- LEU, 0, GET_MODE (count_exp), 1, hot_label);
+ LEU, 0, counter_mode (count_exp),
+ 1, hot_label);
predict_jump (REG_BR_PROB_BASE * 90 / 100);
if (issetmem)
set_storage_via_libcall (dst, count_exp, val_exp, false);
@@ -35406,7 +35412,8 @@ rdrand_step:
else
op2 = gen_rtx_SUBREG (SImode, op0, 0);
- if (target == 0)
+ if (target == 0
+ || !register_operand (target, SImode))
target = gen_reg_rtx (SImode);
pat = gen_rtx_GEU (VOIDmode, gen_rtx_REG (CCCmode, FLAGS_REG),
@@ -35448,7 +35455,8 @@ rdseed_step:
const0_rtx);
emit_insn (gen_rtx_SET (VOIDmode, op2, pat));
- if (target == 0)
+ if (target == 0
+ || !register_operand (target, SImode))
target = gen_reg_rtx (SImode);
emit_insn (gen_zero_extendqisi2 (target, op2));
diff --git a/gcc-4.9/gcc/config/i386/i386.md b/gcc-4.9/gcc/config/i386/i386.md
index 25e2e93e3..9f103cf30 100644
--- a/gcc-4.9/gcc/config/i386/i386.md
+++ b/gcc-4.9/gcc/config/i386/i386.md
@@ -14427,15 +14427,16 @@
"TARGET_USE_FANCY_MATH_387
&& flag_unsafe_math_optimizations"
{
+ rtx tmp1, tmp2;
if (optimize_insn_for_size_p ())
FAIL;
- operands[3] = gen_reg_rtx (XFmode);
- operands[4] = gen_reg_rtx (XFmode);
+ tmp1 = gen_reg_rtx (XFmode);
+ tmp2 = gen_reg_rtx (XFmode);
- emit_insn (gen_floatsixf2 (operands[3], operands[2]));
- emit_insn (gen_fscalexf4_i387 (operands[0], operands[4],
- operands[1], operands[3]));
+ emit_insn (gen_floatsixf2 (tmp1, operands[2]));
+ emit_insn (gen_fscalexf4_i387 (operands[0], tmp2,
+ operands[1], tmp1));
DONE;
})
diff --git a/gcc-4.9/gcc/config/i386/mingw32.h b/gcc-4.9/gcc/config/i386/mingw32.h
index f56382095..4cfd5f013 100644
--- a/gcc-4.9/gcc/config/i386/mingw32.h
+++ b/gcc-4.9/gcc/config/i386/mingw32.h
@@ -148,6 +148,7 @@ along with GCC; see the file COPYING3. If not see
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
"%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+ %{!shared:%:if-exists(default-manifest.o%s)}\
crtend.o%s"
/* Override startfile prefix defaults. */
diff --git a/gcc-4.9/gcc/config/msp430/msp430-protos.h b/gcc-4.9/gcc/config/msp430/msp430-protos.h
index 7f999abbd..f0b8aea03 100644
--- a/gcc-4.9/gcc/config/msp430/msp430-protos.h
+++ b/gcc-4.9/gcc/config/msp430/msp430-protos.h
@@ -30,11 +30,9 @@ const char * msp430x_extendhisi (rtx *);
void msp430_fixup_compare_operands (enum machine_mode, rtx *);
int msp430_hard_regno_mode_ok (int, enum machine_mode);
int msp430_hard_regno_nregs (int, enum machine_mode);
-bool msp430_hwmult_enabled (void);
rtx msp430_incoming_return_addr_rtx (void);
void msp430_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, int);
int msp430_initial_elimination_offset (int, int);
-bool msp430_is_f5_mcu (void);
bool msp430_is_interrupt_func (void);
const char * msp430x_logical_shift_right (rtx);
const char * msp430_mcu_name (void);
@@ -45,5 +43,6 @@ rtx msp430_return_addr_rtx (int);
void msp430_split_movsi (rtx *);
void msp430_start_function (FILE *, const char *, tree);
rtx msp430_subreg (enum machine_mode, rtx, enum machine_mode, int);
+bool msp430_use_f5_series_hwmult (void);
#endif /* GCC_MSP430_PROTOS_H */
diff --git a/gcc-4.9/gcc/config/msp430/msp430.c b/gcc-4.9/gcc/config/msp430/msp430.c
index 80a17a6e3..c844aa2a1 100644
--- a/gcc-4.9/gcc/config/msp430/msp430.c
+++ b/gcc-4.9/gcc/config/msp430/msp430.c
@@ -95,18 +95,6 @@ msp430_init_machine_status (void)
return m;
}
-#undef TARGET_HANDLE_OPTION
-#define TARGET_HANDLE_OPTION msp430_handle_option
-
-bool
-msp430_handle_option (struct gcc_options *opts ATTRIBUTE_UNUSED,
- struct gcc_options *opts_set ATTRIBUTE_UNUSED,
- const struct cl_decoded_option *decoded ATTRIBUTE_UNUSED,
- location_t loc ATTRIBUTE_UNUSED)
-{
- return true;
-}
-
#undef TARGET_OPTION_OVERRIDE
#define TARGET_OPTION_OVERRIDE msp430_option_override
@@ -196,19 +184,14 @@ msp430_option_override (void)
if (target_cpu)
{
- if (strcasecmp (target_cpu, "msp430x") == 0
- || strcasecmp (target_cpu, "msp430xv2") == 0
- || strcasecmp (target_cpu, "430x") == 0
- || strcasecmp (target_cpu, "430xv2") == 0)
+ if (strcasecmp (target_cpu, "msp430x") == 0)
msp430x = true;
- else if (strcasecmp (target_cpu, "msp430") == 0
- || strcasecmp (target_cpu, "430") == 0)
+ else /* target_cpu == "msp430" - already handled by the front end. */
msp430x = false;
- else
- error ("unrecognised argument of -mcpu: %s", target_cpu);
}
-
- if (target_mcu)
+ /* Note - the front end has already ensured at most
+ one of target_cpu and target_mcu will be set. */
+ else if (target_mcu)
{
int i;
@@ -217,25 +200,12 @@ msp430_option_override (void)
supports 430. */
msp430x = true;
- /* For backwards compatibility we recognise two generic MCU
- 430X names. However we want to be able to generate special C
- preprocessor defines for them, which is why we set target_mcu
- to NULL. */
- if (strcasecmp (target_mcu, "msp430") == 0)
- {
- msp430x = false;
- target_mcu = NULL;
- }
- else if (strcasecmp (target_mcu, "msp430x") == 0
- || strcasecmp (target_mcu, "msp430xv2") == 0)
- target_mcu = NULL;
- else
- for (i = ARRAY_SIZE (msp430_mcu_names); i--;)
- if (strcasecmp (msp430_mcu_names[i], target_mcu) == 0)
- {
- msp430x = false;
- break;
- }
+ for (i = ARRAY_SIZE (msp430_mcu_names); i--;)
+ if (strcasecmp (msp430_mcu_names[i], target_mcu) == 0)
+ {
+ msp430x = false;
+ break;
+ }
/* It is not an error if we do not match the MCU name. There are
hundreds of them. */
}
@@ -1847,16 +1817,20 @@ static const struct
/* Returns true if the current MCU is an F5xxx series. */
bool
-msp430_is_f5_mcu (void)
+msp430_use_f5_series_hwmult (void)
{
- if (target_mcu == NULL)
+ if (msp430_hwmult_type == F5SERIES)
+ return true;
+
+ if (target_mcu == NULL || msp430_hwmult_type != AUTO)
return false;
+
return strncasecmp (target_mcu, "msp430f5", 8) == 0;
}
/* Returns true id the current MCU has a second generation 32-bit hardware multiplier. */
static bool
-has_32bit_hw_mult (void)
+use_32bit_hwmult (void)
{
static const char * known_32bit_mult_mcus [] =
{
@@ -1868,7 +1842,11 @@ has_32bit_hw_mult (void)
"msp430f47177", "msp430f47187", "msp430f47197"
};
int i;
- if (target_mcu == NULL)
+
+ if (msp430_hwmult_type == LARGE)
+ return true;
+
+ if (target_mcu == NULL || msp430_hwmult_type != AUTO)
return false;
for (i = ARRAY_SIZE (known_32bit_mult_mcus); i--;)
@@ -1878,25 +1856,6 @@ has_32bit_hw_mult (void)
return false;
}
-/* Returns true if hardware multiply is supported by the chosen MCU. */
-bool
-msp430_hwmult_enabled (void)
-{
- if (target_mcu == NULL)
- return false;
-
- if (!ENABLE_HWMULT)
- return false;
-
- if (msp430_is_interrupt_func ())
- return false;
-
- if (msp430_is_f5_mcu () || has_32bit_hw_mult ())
- return true;
-
- return false;
-}
-
/* This function does the same as the default, but it will replace GCC
function names with the MSPABI-specified ones. */
void
@@ -1913,20 +1872,20 @@ msp430_output_labelref (FILE *file, const char *name)
/* If we have been given a specific MCU name then we may be
able to make use of its hardware multiply capabilities. */
- if (msp430_hwmult_enabled ())
+ if (msp430_hwmult_type != NONE)
{
if (strcmp ("__mspabi_mpyi", name) == 0)
{
- if (msp430_is_f5_mcu ())
+ if (msp430_use_f5_series_hwmult ())
name = "__mulhi2_f5";
else
name = "__mulhi2";
}
else if (strcmp ("__mspabi_mpyl", name) == 0)
{
- if (msp430_is_f5_mcu ())
+ if (msp430_use_f5_series_hwmult ())
name = "__mulsi2_f5";
- else if (has_32bit_hw_mult ())
+ else if (use_32bit_hwmult ())
name = "__mulsi2_hw32";
else
name = "__mulsi2";
@@ -2203,7 +2162,7 @@ msp430_print_operand (FILE * file, rtx op, int letter)
because builtins are expanded before the frame layout is determined. */
fprintf (file, "%d",
msp430_initial_elimination_offset (ARG_POINTER_REGNUM, STACK_POINTER_REGNUM)
- - 2);
+ - (TARGET_LARGE ? 4 : 2));
return;
case 'J':
diff --git a/gcc-4.9/gcc/config/msp430/msp430.md b/gcc-4.9/gcc/config/msp430/msp430.md
index c0c97dae6..74a98b480 100644
--- a/gcc-4.9/gcc/config/msp430/msp430.md
+++ b/gcc-4.9/gcc/config/msp430/msp430.md
@@ -1321,12 +1321,12 @@
[(set (match_operand:SI 0 "register_operand" "=r")
(mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand" "%0"))
(sign_extend:SI (match_operand:HI 2 "register_operand" "r"))))]
- "optimize > 2 && msp430_hwmult_enabled ()"
+ "optimize > 2 && msp430_hwmult_type != NONE"
"*
- if (msp430_is_f5_mcu ())
- return \"MOV.W %1, &0x04C2 { MOV.W %2, &0x04C8 { MOV.W &0x04CA, %L0 { MOV.W &0x04CC, %H0\";
+ if (msp430_use_f5_series_hwmult ())
+ return \"PUSH.W sr { DINT { MOV.W %1, &0x04C2 { MOV.W %2, &0x04C8 { MOV.W &0x04CA, %L0 { MOV.W &0x04CC, %H0 { POP.W sr\";
else
- return \"MOV.W %1, &0x0132 { MOV.W %2, &0x0138 { MOV.W &0x013A, %L0 { MOV.W &0x013C, %H0\";
+ return \"PUSH.W sr { DINT { MOV.W %1, &0x0132 { MOV.W %2, &0x0138 { MOV.W &0x013A, %L0 { MOV.W &0x013C, %H0 { POP.W sr\";
"
)
@@ -1334,12 +1334,12 @@
[(set (match_operand:SI 0 "register_operand" "=r")
(mult:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "%0"))
(zero_extend:SI (match_operand:HI 2 "register_operand" "r"))))]
- "optimize > 2 && msp430_hwmult_enabled ()"
+ "optimize > 2 && msp430_hwmult_type != NONE"
"*
- if (msp430_is_f5_mcu ())
- return \"MOV.W %1, &0x04C0 { MOV.W %2, &0x04C8 { MOV.W &0x04CA, %L0 { MOV.W &0x04CC, %H0\";
+ if (msp430_use_f5_series_hwmult ())
+ return \"PUSH.W sr { DINT { MOV.W %1, &0x04C0 { MOV.W %2, &0x04C8 { MOV.W &0x04CA, %L0 { MOV.W &0x04CC, %H0 { POP.W sr\";
else
- return \"MOV.W %1, &0x0130 { MOV.W %2, &0x0138 { MOV.W &0x013A, %L0 { MOV.W &0x013C, %H0\";
+ return \"PUSH.W sr { DINT { MOV.W %1, &0x0130 { MOV.W %2, &0x0138 { MOV.W &0x013A, %L0 { MOV.W &0x013C, %H0 { POP.W sr\";
"
)
@@ -1347,12 +1347,12 @@
[(set (match_operand:DI 0 "register_operand" "=r")
(mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "%0"))
(sign_extend:DI (match_operand:SI 2 "register_operand" "r"))))]
- "optimize > 2 && msp430_hwmult_enabled ()"
+ "optimize > 2 && msp430_hwmult_type != NONE"
"*
- if (msp430_is_f5_mcu ())
- return \"MOV.W %L1, &0x04D4 { MOV.W %H1, &0x04D6 { MOV.W %L2, &0x04E0 { MOV.W %H2, &0x04E2 { MOV.W &0x04E4, %A0 { MOV.W &0x04E6, %B0 { MOV.W &0x04E8, %C0 { MOV.W &0x04EA, %D0\";
+ if (msp430_use_f5_series_hwmult ())
+ return \"PUSH.W sr { DINT { MOV.W %L1, &0x04D4 { MOV.W %H1, &0x04D6 { MOV.W %L2, &0x04E0 { MOV.W %H2, &0x04E2 { MOV.W &0x04E4, %A0 { MOV.W &0x04E6, %B0 { MOV.W &0x04E8, %C0 { MOV.W &0x04EA, %D0 { POP.W sr\";
else
- return \"MOV.W %L1, &0x0144 { MOV.W %H1, &0x0146 { MOV.W %L2, &0x0150 { MOV.W %H2, &0x0152 { MOV.W &0x0154, %A0 { MOV.W &0x0156, %B0 { MOV.W &0x0158, %C0 { MOV.W &0x015A, %D0\";
+ return \"PUSH.W sr { DINT { MOV.W %L1, &0x0144 { MOV.W %H1, &0x0146 { MOV.W %L2, &0x0150 { MOV.W %H2, &0x0152 { MOV.W &0x0154, %A0 { MOV.W &0x0156, %B0 { MOV.W &0x0158, %C0 { MOV.W &0x015A, %D0 { POP.W sr\";
"
)
@@ -1360,11 +1360,11 @@
[(set (match_operand:DI 0 "register_operand" "=r")
(mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "%0"))
(zero_extend:DI (match_operand:SI 2 "register_operand" "r"))))]
- "optimize > 2 && msp430_hwmult_enabled ()"
+ "optimize > 2 && msp430_hwmult_type != NONE"
"*
- if (msp430_is_f5_mcu ())
- return \"MOV.W %L1, &0x04D0 { MOV.W %H1, &0x04D2 { MOV.W %L2, &0x04E0 { MOV.W %H2, &0x04E2 { MOV.W &0x04E4, %A0 { MOV.W &0x04E6, %B0 { MOV.W &0x04E8, %C0 { MOV.W &0x04EA, %D0\";
+ if (msp430_use_f5_series_hwmult ())
+ return \"PUSH.W sr { DINT { MOV.W %L1, &0x04D0 { MOV.W %H1, &0x04D2 { MOV.W %L2, &0x04E0 { MOV.W %H2, &0x04E2 { MOV.W &0x04E4, %A0 { MOV.W &0x04E6, %B0 { MOV.W &0x04E8, %C0 { MOV.W &0x04EA, %D0 { POP.W sr\";
else
- return \"MOV.W %L1, &0x0140 { MOV.W %H1, &0x0141 { MOV.W %L2, &0x0150 { MOV.W %H2, &0x0152 { MOV.W &0x0154, %A0 { MOV.W &0x0156, %B0 { MOV.W &0x0158, %C0 { MOV.W &0x015A, %D0\";
+ return \"PUSH.W sr { DINT { MOV.W %L1, &0x0140 { MOV.W %H1, &0x0142 { MOV.W %L2, &0x0150 { MOV.W %H2, &0x0152 { MOV.W &0x0154, %A0 { MOV.W &0x0156, %B0 { MOV.W &0x0158, %C0 { MOV.W &0x015A, %D0 { POP.W sr\";
"
)
diff --git a/gcc-4.9/gcc/config/msp430/msp430.opt b/gcc-4.9/gcc/config/msp430/msp430.opt
index 5a447c0d2..8215013e8 100644
--- a/gcc-4.9/gcc/config/msp430/msp430.opt
+++ b/gcc-4.9/gcc/config/msp430/msp430.opt
@@ -7,19 +7,19 @@ Target Mask(ASM_HEX)
Force assembly output to always use hex constants
mmcu=
-Target ToLower Joined RejectNegative Var(target_mcu)
+Target Report ToLower Joined RejectNegative Var(target_mcu)
Specify the MCU to build for.
mcpu=
-Target Joined RejectNegative Var(target_cpu)
+Target Report Joined RejectNegative Var(target_cpu)
Specify the ISA to build for: msp430, mdsp430x, msp430xv2
mlarge
-Target Mask(LARGE) RejectNegative
+Target Report Mask(LARGE) RejectNegative
Select large model - 20-bit addresses/pointers
msmall
-Target InverseMask(LARGE) RejectNegative
+Target Report InverseMask(LARGE) RejectNegative
Select small model - 16-bit addresses/pointers (default)
mrelax
@@ -33,6 +33,27 @@ minrt
Target Report Mask(MINRT) RejectNegative
Use a minimum runtime (no static initializers or ctors) for memory-constrained devices.
-mhwmult
-Target Report Var(ENABLE_HWMULT, 1) Init(1)
-Enable hardware multiply (except in interrupt routines)
+HeaderInclude
+config/msp430/msp430-opts.h
+
+mhwmult=
+Target Joined RejectNegative Report ToLower Var(msp430_hwmult_type) Enum(msp430_hwmult_types) Init(AUTO)
+Specify the type of hardware multiply to support
+
+Enum
+Name(msp430_hwmult_types) Type(enum msp430_hwmult_types)
+
+EnumValue
+Enum(msp430_hwmult_types) String(none) Value(NONE)
+
+EnumValue
+Enum(msp430_hwmult_types) String(auto) Value(AUTO)
+
+EnumValue
+Enum(msp430_hwmult_types) String(16bit) Value(SMALL)
+
+EnumValue
+Enum(msp430_hwmult_types) String(32bit) Value(LARGE)
+
+EnumValue
+Enum(msp430_hwmult_types) String(f5series) Value(F5SERIES)
diff --git a/gcc-4.9/gcc/config/rs6000/altivec.md b/gcc-4.9/gcc/config/rs6000/altivec.md
index 674cb40bf..a8cfcb739 100644
--- a/gcc-4.9/gcc/config/rs6000/altivec.md
+++ b/gcc-4.9/gcc/config/rs6000/altivec.md
@@ -143,6 +143,9 @@
UNSPEC_VSUBEUQM
UNSPEC_VSUBECUQ
UNSPEC_VBPERMQ
+ UNSPEC_BCDADD
+ UNSPEC_BCDSUB
+ UNSPEC_BCD_OVERFLOW
])
(define_c_enum "unspecv"
@@ -3334,3 +3337,112 @@
"vbpermq %0,%1,%2"
[(set_attr "length" "4")
(set_attr "type" "vecsimple")])
+
+;; Decimal Integer operations
+(define_int_iterator UNSPEC_BCD_ADD_SUB [UNSPEC_BCDADD UNSPEC_BCDSUB])
+
+(define_int_attr bcd_add_sub [(UNSPEC_BCDADD "add")
+ (UNSPEC_BCDSUB "sub")])
+
+(define_code_iterator BCD_TEST [eq lt gt unordered])
+
+(define_insn "bcd<bcd_add_sub>"
+ [(set (match_operand:V1TI 0 "register_operand" "")
+ (unspec:V1TI [(match_operand:V1TI 1 "register_operand" "")
+ (match_operand:V1TI 2 "register_operand" "")
+ (match_operand:QI 3 "const_0_to_1_operand" "")]
+ UNSPEC_BCD_ADD_SUB))
+ (clobber (reg:CCFP 74))]
+ "TARGET_P8_VECTOR"
+ "bcd<bcd_add_sub>. %0,%1,%2,%3"
+ [(set_attr "length" "4")
+ (set_attr "type" "vecsimple")])
+
+;; Use a floating point type (V2DFmode) for the compare to set CR6 so that we
+;; can use the unordered test for BCD nans and add/subtracts that overflow. An
+;; UNORDERED test on an integer type (like V1TImode) is not defined. The type
+;; probably should be one that can go in the VMX (Altivec) registers, so we
+;; can't use DDmode or DFmode.
+(define_insn "*bcd<bcd_add_sub>_test"
+ [(set (reg:CCFP 74)
+ (compare:CCFP
+ (unspec:V2DF [(match_operand:V1TI 1 "register_operand" "v")
+ (match_operand:V1TI 2 "register_operand" "v")
+ (match_operand:QI 3 "const_0_to_1_operand" "i")]
+ UNSPEC_BCD_ADD_SUB)
+ (match_operand:V2DF 4 "zero_constant" "j")))
+ (clobber (match_scratch:V1TI 0 "=v"))]
+ "TARGET_P8_VECTOR"
+ "bcd<bcd_add_sub>. %0,%1,%2,%3"
+ [(set_attr "length" "4")
+ (set_attr "type" "vecsimple")])
+
+(define_insn "*bcd<bcd_add_sub>_test2"
+ [(set (match_operand:V1TI 0 "register_operand" "=v")
+ (unspec:V1TI [(match_operand:V1TI 1 "register_operand" "v")
+ (match_operand:V1TI 2 "register_operand" "v")
+ (match_operand:QI 3 "const_0_to_1_operand" "i")]
+ UNSPEC_BCD_ADD_SUB))
+ (set (reg:CCFP 74)
+ (compare:CCFP
+ (unspec:V2DF [(match_dup 1)
+ (match_dup 2)
+ (match_dup 3)]
+ UNSPEC_BCD_ADD_SUB)
+ (match_operand:V2DF 4 "zero_constant" "j")))]
+ "TARGET_P8_VECTOR"
+ "bcd<bcd_add_sub>. %0,%1,%2,%3"
+ [(set_attr "length" "4")
+ (set_attr "type" "vecsimple")])
+
+(define_expand "bcd<bcd_add_sub>_<code>"
+ [(parallel [(set (reg:CCFP 74)
+ (compare:CCFP
+ (unspec:V2DF [(match_operand:V1TI 1 "register_operand" "")
+ (match_operand:V1TI 2 "register_operand" "")
+ (match_operand:QI 3 "const_0_to_1_operand" "")]
+ UNSPEC_BCD_ADD_SUB)
+ (match_dup 4)))
+ (clobber (match_scratch:V1TI 5 ""))])
+ (set (match_operand:SI 0 "register_operand" "")
+ (BCD_TEST:SI (reg:CCFP 74)
+ (const_int 0)))]
+ "TARGET_P8_VECTOR"
+{
+ operands[4] = CONST0_RTX (V2DFmode);
+})
+
+;; Peephole2 pattern to combine a bcdadd/bcdsub that calculates the value and
+;; the bcdadd/bcdsub that tests the value. The combiner won't work since
+;; CR6 is a hard coded register. Unfortunately, all of the Altivec predicate
+;; support is hard coded to use the fixed register CR6 instead of creating
+;; a register class for CR6.
+
+(define_peephole2
+ [(parallel [(set (match_operand:V1TI 0 "register_operand" "")
+ (unspec:V1TI [(match_operand:V1TI 1 "register_operand" "")
+ (match_operand:V1TI 2 "register_operand" "")
+ (match_operand:QI 3 "const_0_to_1_operand" "")]
+ UNSPEC_BCD_ADD_SUB))
+ (clobber (reg:CCFP 74))])
+ (parallel [(set (reg:CCFP 74)
+ (compare:CCFP
+ (unspec:V2DF [(match_dup 1)
+ (match_dup 2)
+ (match_dup 3)]
+ UNSPEC_BCD_ADD_SUB)
+ (match_operand:V2DF 4 "zero_constant" "")))
+ (clobber (match_operand:V1TI 5 "register_operand" ""))])]
+ "TARGET_P8_VECTOR"
+ [(parallel [(set (match_dup 0)
+ (unspec:V1TI [(match_dup 1)
+ (match_dup 2)
+ (match_dup 3)]
+ UNSPEC_BCD_ADD_SUB))
+ (set (reg:CCFP 74)
+ (compare:CCFP
+ (unspec:V2DF [(match_dup 1)
+ (match_dup 2)
+ (match_dup 3)]
+ UNSPEC_BCD_ADD_SUB)
+ (match_dup 4)))])])
diff --git a/gcc-4.9/gcc/config/rs6000/dfp.md b/gcc-4.9/gcc/config/rs6000/dfp.md
index 8e99bc0d7..40e27e77d 100644
--- a/gcc-4.9/gcc/config/rs6000/dfp.md
+++ b/gcc-4.9/gcc/config/rs6000/dfp.md
@@ -322,3 +322,72 @@
"TARGET_DFP"
"dctfixq %0,%1"
[(set_attr "type" "fp")])
+
+
+;; Decimal builtin support
+
+(define_c_enum "unspec"
+ [UNSPEC_DDEDPD
+ UNSPEC_DENBCD
+ UNSPEC_DXEX
+ UNSPEC_DIEX
+ UNSPEC_DSCLI
+ UNSPEC_DSCRI])
+
+(define_mode_iterator D64_D128 [DD TD])
+
+(define_mode_attr dfp_suffix [(DD "")
+ (TD "q")])
+
+(define_insn "dfp_ddedpd_<mode>"
+ [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
+ (unspec:D64_D128 [(match_operand:QI 1 "const_0_to_3_operand" "i")
+ (match_operand:D64_D128 2 "gpc_reg_operand" "d")]
+ UNSPEC_DDEDPD))]
+ "TARGET_DFP"
+ "ddedpd<dfp_suffix> %1,%0,%2"
+ [(set_attr "type" "fp")])
+
+(define_insn "dfp_denbcd_<mode>"
+ [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
+ (unspec:D64_D128 [(match_operand:QI 1 "const_0_to_1_operand" "i")
+ (match_operand:D64_D128 2 "gpc_reg_operand" "d")]
+ UNSPEC_DENBCD))]
+ "TARGET_DFP"
+ "denbcd<dfp_suffix> %1,%0,%2"
+ [(set_attr "type" "fp")])
+
+(define_insn "dfp_dxex_<mode>"
+ [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
+ (unspec:D64_D128 [(match_operand:D64_D128 1 "gpc_reg_operand" "d")]
+ UNSPEC_DXEX))]
+ "TARGET_DFP"
+ "dxex<dfp_suffix> %0,%1"
+ [(set_attr "type" "fp")])
+
+(define_insn "dfp_diex_<mode>"
+ [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
+ (unspec:D64_D128 [(match_operand:D64_D128 1 "gpc_reg_operand" "d")
+ (match_operand:D64_D128 2 "gpc_reg_operand" "d")]
+ UNSPEC_DXEX))]
+ "TARGET_DFP"
+ "diex<dfp_suffix> %0,%1,%2"
+ [(set_attr "type" "fp")])
+
+(define_insn "dfp_dscli_<mode>"
+ [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
+ (unspec:D64_D128 [(match_operand:D64_D128 1 "gpc_reg_operand" "d")
+ (match_operand:QI 2 "immediate_operand" "i")]
+ UNSPEC_DSCLI))]
+ "TARGET_DFP"
+ "dscli<dfp_suffix> %0,%1,%2"
+ [(set_attr "type" "fp")])
+
+(define_insn "dfp_dscri_<mode>"
+ [(set (match_operand:D64_D128 0 "gpc_reg_operand" "=d")
+ (unspec:D64_D128 [(match_operand:D64_D128 1 "gpc_reg_operand" "d")
+ (match_operand:QI 2 "immediate_operand" "i")]
+ UNSPEC_DSCRI))]
+ "TARGET_DFP"
+ "dscri<dfp_suffix> %0,%1,%2"
+ [(set_attr "type" "fp")])
diff --git a/gcc-4.9/gcc/config/rs6000/predicates.md b/gcc-4.9/gcc/config/rs6000/predicates.md
index 28f4f5d98..8c384b380 100644
--- a/gcc-4.9/gcc/config/rs6000/predicates.md
+++ b/gcc-4.9/gcc/config/rs6000/predicates.md
@@ -171,6 +171,11 @@
(and (match_code "const_int")
(match_test "IN_RANGE (INTVAL (op), 0, 1)")))
+;; Match op = 0..3.
+(define_predicate "const_0_to_3_operand"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (INTVAL (op), 0, 3)")))
+
;; Match op = 2 or op = 3.
(define_predicate "const_2_to_3_operand"
(and (match_code "const_int")
@@ -624,14 +629,14 @@
(match_test "offsettable_nonstrict_memref_p (op)")))
;; Return 1 if the operand is suitable for load/store quad memory.
-;; This predicate only checks for non-atomic loads/stores.
+;; This predicate only checks for non-atomic loads/stores (not lqarx/stqcx).
(define_predicate "quad_memory_operand"
(match_code "mem")
{
rtx addr, op0, op1;
int ret;
- if (!TARGET_QUAD_MEMORY)
+ if (!TARGET_QUAD_MEMORY && !TARGET_SYNC_TI)
ret = 0;
else if (!memory_operand (op, mode))
diff --git a/gcc-4.9/gcc/config/rs6000/rs6000-builtin.def b/gcc-4.9/gcc/config/rs6000/rs6000-builtin.def
index 83351691f..8e15bdf16 100644
--- a/gcc-4.9/gcc/config/rs6000/rs6000-builtin.def
+++ b/gcc-4.9/gcc/config/rs6000/rs6000-builtin.def
@@ -570,6 +570,75 @@
MASK, /* MASK */ \
(ATTR | RS6000_BTC_SPECIAL), /* ATTR */ \
CODE_FOR_nothing) /* ICODE */
+
+
+/* Decimal floating point builtins for instructions. */
+#define BU_DFP_MISC_1(ENUM, NAME, ATTR, ICODE) \
+ RS6000_BUILTIN_1 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
+ "__builtin_" NAME, /* NAME */ \
+ RS6000_BTM_DFP, /* MASK */ \
+ (RS6000_BTC_ ## ATTR /* ATTR */ \
+ | RS6000_BTC_UNARY), \
+ CODE_FOR_ ## ICODE) /* ICODE */
+
+#define BU_DFP_MISC_2(ENUM, NAME, ATTR, ICODE) \
+ RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
+ "__builtin_" NAME, /* NAME */ \
+ RS6000_BTM_DFP, /* MASK */ \
+ (RS6000_BTC_ ## ATTR /* ATTR */ \
+ | RS6000_BTC_BINARY), \
+ CODE_FOR_ ## ICODE) /* ICODE */
+
+
+/* Miscellaneous builtins for instructions added in ISA 2.06. These
+ instructions don't require either the DFP or VSX options, just the basic ISA
+ 2.06 (popcntd) enablement since they operate on general purpose
+ registers. */
+#define BU_P7_MISC_1(ENUM, NAME, ATTR, ICODE) \
+ RS6000_BUILTIN_1 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
+ "__builtin_" NAME, /* NAME */ \
+ RS6000_BTM_POPCNTD, /* MASK */ \
+ (RS6000_BTC_ ## ATTR /* ATTR */ \
+ | RS6000_BTC_UNARY), \
+ CODE_FOR_ ## ICODE) /* ICODE */
+
+#define BU_P7_MISC_2(ENUM, NAME, ATTR, ICODE) \
+ RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
+ "__builtin_" NAME, /* NAME */ \
+ RS6000_BTM_POPCNTD, /* MASK */ \
+ (RS6000_BTC_ ## ATTR /* ATTR */ \
+ | RS6000_BTC_BINARY), \
+ CODE_FOR_ ## ICODE) /* ICODE */
+
+
+/* Miscellaneous builtins for instructions added in ISA 2.07. These
+ instructions do require the ISA 2.07 vector support, but they aren't vector
+ instructions. */
+#define BU_P8V_MISC_3(ENUM, NAME, ATTR, ICODE) \
+ RS6000_BUILTIN_3 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
+ "__builtin_" NAME, /* NAME */ \
+ RS6000_BTM_P8_VECTOR, /* MASK */ \
+ (RS6000_BTC_ ## ATTR /* ATTR */ \
+ | RS6000_BTC_TERNARY), \
+ CODE_FOR_ ## ICODE) /* ICODE */
+
+/* Miscellaneous builtins. */
+#define BU_MISC_1(ENUM, NAME, ATTR, ICODE) \
+ RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
+ "__builtin_" NAME, /* NAME */ \
+ RS6000_BTM_HARD_FLOAT, /* MASK */ \
+ (RS6000_BTC_ ## ATTR /* ATTR */ \
+ | RS6000_BTC_UNARY), \
+ CODE_FOR_ ## ICODE) /* ICODE */
+
+#define BU_MISC_2(ENUM, NAME, ATTR, ICODE) \
+ RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
+ "__builtin_" NAME, /* NAME */ \
+ RS6000_BTM_HARD_FLOAT, /* MASK */ \
+ (RS6000_BTC_ ## ATTR /* ATTR */ \
+ | RS6000_BTC_BINARY), \
+ CODE_FOR_ ## ICODE) /* ICODE */
+
#endif
/* Insure 0 is not a legitimate index. */
@@ -1412,10 +1481,10 @@ BU_P8V_AV_2 (ORC_V4SF, "orc_v4sf", CONST, orcv4sf3)
BU_P8V_AV_2 (ORC_V2DF, "orc_v2df", CONST, orcv2df3)
/* 3 argument altivec instructions added in ISA 2.07. */
-BU_P8V_AV_3 (VADDEUQM, "vaddeuqm", CONST, altivec_vaddeuqm)
-BU_P8V_AV_3 (VADDECUQ, "vaddecuq", CONST, altivec_vaddecuq)
-BU_P8V_AV_3 (VSUBEUQM, "vsubeuqm", CONST, altivec_vsubeuqm)
-BU_P8V_AV_3 (VSUBECUQ, "vsubecuq", CONST, altivec_vsubecuq)
+BU_P8V_AV_3 (VADDEUQM, "vaddeuqm", CONST, altivec_vaddeuqm)
+BU_P8V_AV_3 (VADDECUQ, "vaddecuq", CONST, altivec_vaddecuq)
+BU_P8V_AV_3 (VSUBEUQM, "vsubeuqm", CONST, altivec_vsubeuqm)
+BU_P8V_AV_3 (VSUBECUQ, "vsubecuq", CONST, altivec_vsubecuq)
/* Vector comparison instructions added in ISA 2.07. */
BU_P8V_AV_2 (VCMPEQUD, "vcmpequd", CONST, vector_eqv2di)
@@ -1475,6 +1544,64 @@ BU_P8V_OVERLOAD_3 (VSUBECUQ, "vsubecuq")
BU_P8V_OVERLOAD_3 (VSUBEUQM, "vsubeuqm")
+/* 2 argument extended divide functions added in ISA 2.06. */
+BU_P7_MISC_2 (DIVWE, "divwe", CONST, dive_si)
+BU_P7_MISC_2 (DIVWEO, "divweo", CONST, diveo_si)
+BU_P7_MISC_2 (DIVWEU, "divweu", CONST, diveu_si)
+BU_P7_MISC_2 (DIVWEUO, "divweuo", CONST, diveuo_si)
+BU_P7_MISC_2 (DIVDE, "divde", CONST, dive_di)
+BU_P7_MISC_2 (DIVDEO, "divdeo", CONST, diveo_di)
+BU_P7_MISC_2 (DIVDEU, "divdeu", CONST, diveu_di)
+BU_P7_MISC_2 (DIVDEUO, "divdeuo", CONST, diveuo_di)
+
+/* 1 argument DFP (decimal floating point) functions added in ISA 2.05. */
+BU_DFP_MISC_1 (DXEX, "dxex", CONST, dfp_dxex_dd)
+BU_DFP_MISC_1 (DXEXQ, "dxexq", CONST, dfp_dxex_td)
+
+/* 2 argument DFP (decimal floating point) functions added in ISA 2.05. */
+BU_DFP_MISC_2 (DDEDPD, "ddedpd", CONST, dfp_ddedpd_dd)
+BU_DFP_MISC_2 (DDEDPDQ, "ddedpdq", CONST, dfp_ddedpd_td)
+BU_DFP_MISC_2 (DENBCD, "denbcd", CONST, dfp_denbcd_dd)
+BU_DFP_MISC_2 (DENBCDQ, "denbcdq", CONST, dfp_denbcd_td)
+BU_DFP_MISC_2 (DIEX, "diex", CONST, dfp_diex_dd)
+BU_DFP_MISC_2 (DIEXQ, "diexq", CONST, dfp_diex_td)
+BU_DFP_MISC_2 (DSCLI, "dscli", CONST, dfp_dscli_dd)
+BU_DFP_MISC_2 (DSCLIQ, "dscliq", CONST, dfp_dscli_td)
+BU_DFP_MISC_2 (DSCRI, "dscri", CONST, dfp_dscri_dd)
+BU_DFP_MISC_2 (DSCRIQ, "dscriq", CONST, dfp_dscri_td)
+
+/* 1 argument BCD functions added in ISA 2.06. */
+BU_P7_MISC_1 (CDTBCD, "cdtbcd", CONST, cdtbcd)
+BU_P7_MISC_1 (CBCDTD, "cbcdtd", CONST, cbcdtd)
+
+/* 2 argument BCD functions added in ISA 2.06. */
+BU_P7_MISC_2 (ADDG6S, "addg6s", CONST, addg6s)
+
+/* 3 argument BCD functions added in ISA 2.07. */
+BU_P8V_MISC_3 (BCDADD, "bcdadd", CONST, bcdadd)
+BU_P8V_MISC_3 (BCDADD_LT, "bcdadd_lt", CONST, bcdadd_lt)
+BU_P8V_MISC_3 (BCDADD_EQ, "bcdadd_eq", CONST, bcdadd_eq)
+BU_P8V_MISC_3 (BCDADD_GT, "bcdadd_gt", CONST, bcdadd_gt)
+BU_P8V_MISC_3 (BCDADD_OV, "bcdadd_ov", CONST, bcdadd_unordered)
+BU_P8V_MISC_3 (BCDSUB, "bcdsub", CONST, bcdsub)
+BU_P8V_MISC_3 (BCDSUB_LT, "bcdsub_lt", CONST, bcdsub_lt)
+BU_P8V_MISC_3 (BCDSUB_EQ, "bcdsub_eq", CONST, bcdsub_eq)
+BU_P8V_MISC_3 (BCDSUB_GT, "bcdsub_gt", CONST, bcdsub_gt)
+BU_P8V_MISC_3 (BCDSUB_OV, "bcdsub_ov", CONST, bcdsub_unordered)
+
+/* 2 argument pack/unpack 128-bit floating point types. */
+BU_DFP_MISC_2 (PACK_TD, "pack_dec128", CONST, packtd)
+BU_DFP_MISC_2 (UNPACK_TD, "unpack_dec128", CONST, unpacktd)
+
+BU_MISC_2 (PACK_TF, "pack_longdouble", CONST, packtf)
+BU_MISC_2 (UNPACK_TF, "unpack_longdouble", CONST, unpacktf)
+BU_MISC_1 (UNPACK_TF_0, "longdouble_dw0", CONST, unpacktf_0)
+BU_MISC_1 (UNPACK_TF_1, "longdouble_dw1", CONST, unpacktf_1)
+
+BU_P7_MISC_2 (PACK_V1TI, "pack_vector_int128", CONST, packv1ti)
+BU_P7_MISC_2 (UNPACK_V1TI, "unpack_vector_int128", CONST, unpackv1ti)
+
+
/* 1 argument crypto functions. */
BU_CRYPTO_1 (VSBOX, "vsbox", CONST, crypto_vsbox)
diff --git a/gcc-4.9/gcc/config/rs6000/rs6000.c b/gcc-4.9/gcc/config/rs6000/rs6000.c
index 494efc562..4f1a399a2 100644
--- a/gcc-4.9/gcc/config/rs6000/rs6000.c
+++ b/gcc-4.9/gcc/config/rs6000/rs6000.c
@@ -2283,6 +2283,24 @@ rs6000_debug_reg_global (void)
if (rs6000_float_gprs)
fprintf (stderr, DEBUG_FMT_S, "float_gprs", "true");
+ fprintf (stderr, DEBUG_FMT_S, "fprs",
+ (TARGET_FPRS ? "true" : "false"));
+
+ fprintf (stderr, DEBUG_FMT_S, "single_float",
+ (TARGET_SINGLE_FLOAT ? "true" : "false"));
+
+ fprintf (stderr, DEBUG_FMT_S, "double_float",
+ (TARGET_DOUBLE_FLOAT ? "true" : "false"));
+
+ fprintf (stderr, DEBUG_FMT_S, "soft_float",
+ (TARGET_SOFT_FLOAT ? "true" : "false"));
+
+ fprintf (stderr, DEBUG_FMT_S, "e500_single",
+ (TARGET_E500_SINGLE ? "true" : "false"));
+
+ fprintf (stderr, DEBUG_FMT_S, "e500_double",
+ (TARGET_E500_DOUBLE ? "true" : "false"));
+
if (TARGET_LINK_STACK)
fprintf (stderr, DEBUG_FMT_S, "link_stack", "true");
@@ -3017,7 +3035,9 @@ rs6000_builtin_mask_calculate (void)
| ((rs6000_cpu == PROCESSOR_CELL) ? RS6000_BTM_CELL : 0)
| ((TARGET_P8_VECTOR) ? RS6000_BTM_P8_VECTOR : 0)
| ((TARGET_CRYPTO) ? RS6000_BTM_CRYPTO : 0)
- | ((TARGET_HTM) ? RS6000_BTM_HTM : 0));
+ | ((TARGET_HTM) ? RS6000_BTM_HTM : 0)
+ | ((TARGET_DFP) ? RS6000_BTM_DFP : 0)
+ | ((TARGET_HARD_FLOAT) ? RS6000_BTM_HARD_FLOAT : 0));
}
/* Override command line options. Mostly we process the processor type and
@@ -3374,6 +3394,13 @@ rs6000_option_override_internal (bool global_init_p)
rs6000_isa_flags &= ~OPTION_MASK_VSX_TIMODE;
}
+ if (TARGET_DFP && !TARGET_HARD_FLOAT)
+ {
+ if (rs6000_isa_flags_explicit & OPTION_MASK_DFP)
+ error ("-mhard-dfp requires -mhard-float");
+ rs6000_isa_flags &= ~OPTION_MASK_DFP;
+ }
+
/* The quad memory instructions only works in 64-bit mode. In 32-bit mode,
silently turn off quad memory mode. */
if ((TARGET_QUAD_MEMORY || TARGET_QUAD_MEMORY_ATOMIC) && !TARGET_POWERPC64)
@@ -12381,7 +12408,15 @@ rs6000_expand_ternop_builtin (enum insn_code icode, tree exp, rtx target)
}
}
else if (icode == CODE_FOR_vsx_set_v2df
- || icode == CODE_FOR_vsx_set_v2di)
+ || icode == CODE_FOR_vsx_set_v2di
+ || icode == CODE_FOR_bcdadd
+ || icode == CODE_FOR_bcdadd_lt
+ || icode == CODE_FOR_bcdadd_eq
+ || icode == CODE_FOR_bcdadd_gt
+ || icode == CODE_FOR_bcdsub
+ || icode == CODE_FOR_bcdsub_lt
+ || icode == CODE_FOR_bcdsub_eq
+ || icode == CODE_FOR_bcdsub_gt)
{
/* Only allow 1-bit unsigned literals. */
STRIP_NOPS (arg2);
@@ -12392,6 +12427,44 @@ rs6000_expand_ternop_builtin (enum insn_code icode, tree exp, rtx target)
return const0_rtx;
}
}
+ else if (icode == CODE_FOR_dfp_ddedpd_dd
+ || icode == CODE_FOR_dfp_ddedpd_td)
+ {
+ /* Only allow 2-bit unsigned literals where the value is 0 or 2. */
+ STRIP_NOPS (arg0);
+ if (TREE_CODE (arg0) != INTEGER_CST
+ || TREE_INT_CST_LOW (arg2) & ~0x3)
+ {
+ error ("argument 1 must be 0 or 2");
+ return const0_rtx;
+ }
+ }
+ else if (icode == CODE_FOR_dfp_denbcd_dd
+ || icode == CODE_FOR_dfp_denbcd_td)
+ {
+ /* Only allow 1-bit unsigned literals. */
+ STRIP_NOPS (arg0);
+ if (TREE_CODE (arg0) != INTEGER_CST
+ || TREE_INT_CST_LOW (arg0) & ~0x1)
+ {
+ error ("argument 1 must be a 1-bit unsigned literal");
+ return const0_rtx;
+ }
+ }
+ else if (icode == CODE_FOR_dfp_dscli_dd
+ || icode == CODE_FOR_dfp_dscli_td
+ || icode == CODE_FOR_dfp_dscri_dd
+ || icode == CODE_FOR_dfp_dscri_td)
+ {
+ /* Only allow 6-bit unsigned literals. */
+ STRIP_NOPS (arg1);
+ if (TREE_CODE (arg1) != INTEGER_CST
+ || TREE_INT_CST_LOW (arg1) & ~0x3f)
+ {
+ error ("argument 2 must be a 6-bit unsigned literal");
+ return const0_rtx;
+ }
+ }
else if (icode == CODE_FOR_crypto_vshasigmaw
|| icode == CODE_FOR_crypto_vshasigmad)
{
@@ -13483,6 +13556,16 @@ rs6000_invalid_builtin (enum rs6000_builtins fncode)
error ("Builtin function %s requires the -mpaired option", name);
else if ((fnmask & RS6000_BTM_SPE) != 0)
error ("Builtin function %s requires the -mspe option", name);
+ else if ((fnmask & (RS6000_BTM_DFP | RS6000_BTM_P8_VECTOR))
+ == (RS6000_BTM_DFP | RS6000_BTM_P8_VECTOR))
+ error ("Builtin function %s requires the -mhard-dfp and"
+ "-mpower8-vector options", name);
+ else if ((fnmask & RS6000_BTM_DFP) != 0)
+ error ("Builtin function %s requires the -mhard-dfp option", name);
+ else if ((fnmask & RS6000_BTM_P8_VECTOR) != 0)
+ error ("Builtin function %s requires the -mpower8-vector option", name);
+ else if ((fnmask & RS6000_BTM_HARD_FLOAT) != 0)
+ error ("Builtin function %s requires the -mhard-float option", name);
else
error ("Builtin function %s is not supported with the current options",
name);
@@ -13671,7 +13754,10 @@ rs6000_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
return ret;
}
- gcc_assert (TARGET_ALTIVEC || TARGET_VSX || TARGET_SPE || TARGET_PAIRED_FLOAT);
+ unsigned attr = rs6000_builtin_info[uns_fcode].attr & RS6000_BTC_TYPE_MASK;
+ gcc_assert (attr == RS6000_BTC_UNARY
+ || attr == RS6000_BTC_BINARY
+ || attr == RS6000_BTC_TERNARY);
/* Handle simple unary operations. */
d = bdesc_1arg;
@@ -13762,6 +13848,9 @@ rs6000_init_builtins (void)
uintTI_type_internal_node = unsigned_intTI_type_node;
float_type_internal_node = float_type_node;
double_type_internal_node = double_type_node;
+ long_double_type_internal_node = long_double_type_node;
+ dfloat64_type_internal_node = dfloat64_type_node;
+ dfloat128_type_internal_node = dfloat128_type_node;
void_type_internal_node = void_type_node;
/* Initialize the modes for builtin_function_type, mapping a machine mode to
@@ -13776,6 +13865,9 @@ rs6000_init_builtins (void)
builtin_mode_to_type[TImode][1] = unsigned_intTI_type_node;
builtin_mode_to_type[SFmode][0] = float_type_node;
builtin_mode_to_type[DFmode][0] = double_type_node;
+ builtin_mode_to_type[TFmode][0] = long_double_type_node;
+ builtin_mode_to_type[DDmode][0] = dfloat64_type_node;
+ builtin_mode_to_type[TDmode][0] = dfloat128_type_node;
builtin_mode_to_type[V1TImode][0] = V1TI_type_node;
builtin_mode_to_type[V1TImode][1] = unsigned_V1TI_type_node;
builtin_mode_to_type[V2SImode][0] = V2SI_type_node;
@@ -14868,6 +14960,8 @@ builtin_function_type (enum machine_mode mode_ret, enum machine_mode mode_arg0,
/* unsigned 1 argument functions. */
case CRYPTO_BUILTIN_VSBOX:
case P8V_BUILTIN_VGBBD:
+ case MISC_BUILTIN_CDTBCD:
+ case MISC_BUILTIN_CBCDTD:
h.uns_p[0] = 1;
h.uns_p[1] = 1;
break;
@@ -14886,6 +14980,11 @@ builtin_function_type (enum machine_mode mode_ret, enum machine_mode mode_arg0,
case CRYPTO_BUILTIN_VPMSUMW:
case CRYPTO_BUILTIN_VPMSUMD:
case CRYPTO_BUILTIN_VPMSUM:
+ case MISC_BUILTIN_ADDG6S:
+ case MISC_BUILTIN_DIVWEU:
+ case MISC_BUILTIN_DIVWEUO:
+ case MISC_BUILTIN_DIVDEU:
+ case MISC_BUILTIN_DIVDEUO:
h.uns_p[0] = 1;
h.uns_p[1] = 1;
h.uns_p[2] = 1;
@@ -14947,9 +15046,18 @@ builtin_function_type (enum machine_mode mode_ret, enum machine_mode mode_arg0,
/* signed args, unsigned return. */
case VSX_BUILTIN_XVCVDPUXDS_UNS:
case ALTIVEC_BUILTIN_FIXUNS_V4SF_V4SI:
+ case MISC_BUILTIN_UNPACK_TD:
+ case MISC_BUILTIN_UNPACK_V1TI:
h.uns_p[0] = 1;
break;
+ /* unsigned arguments for 128-bit pack instructions. */
+ case MISC_BUILTIN_PACK_TD:
+ case MISC_BUILTIN_PACK_V1TI:
+ h.uns_p[1] = 1;
+ h.uns_p[2] = 1;
+ break;
+
default:
break;
}
@@ -31203,6 +31311,8 @@ static struct rs6000_opt_mask const rs6000_builtin_mask_names[] =
{ "power8-vector", RS6000_BTM_P8_VECTOR, false, false },
{ "crypto", RS6000_BTM_CRYPTO, false, false },
{ "htm", RS6000_BTM_HTM, false, false },
+ { "hard-dfp", RS6000_BTM_DFP, false, false },
+ { "hard-float", RS6000_BTM_HARD_FLOAT, false, false },
};
/* Option variables that we want to support inside attribute((target)) and
diff --git a/gcc-4.9/gcc/config/rs6000/rs6000.h b/gcc-4.9/gcc/config/rs6000/rs6000.h
index 9ec3647fe..21330dc65 100644
--- a/gcc-4.9/gcc/config/rs6000/rs6000.h
+++ b/gcc-4.9/gcc/config/rs6000/rs6000.h
@@ -624,7 +624,8 @@ extern int rs6000_vector_align[];
|| TARGET_CMPB /* ISA 2.05 */ \
|| TARGET_POPCNTD /* ISA 2.06 */ \
|| TARGET_ALTIVEC \
- || TARGET_VSX)))
+ || TARGET_VSX \
+ || TARGET_HARD_FLOAT)))
/* E500 cores only support plain "sync", not lwsync. */
#define TARGET_NO_LWSYNC (rs6000_cpu == PROCESSOR_PPC8540 \
@@ -2516,6 +2517,8 @@ extern int frame_pointer_needed;
#define RS6000_BTM_FRSQRTES MASK_POPCNTB /* FRSQRTES instruction. */
#define RS6000_BTM_POPCNTD MASK_POPCNTD /* Target supports ISA 2.06. */
#define RS6000_BTM_CELL MASK_FPRND /* Target is cell powerpc. */
+#define RS6000_BTM_DFP MASK_DFP /* Decimal floating point. */
+#define RS6000_BTM_HARD_FLOAT MASK_SOFT_FLOAT /* Hardware floating point. */
#define RS6000_BTM_COMMON (RS6000_BTM_ALTIVEC \
| RS6000_BTM_VSX \
@@ -2527,7 +2530,9 @@ extern int frame_pointer_needed;
| RS6000_BTM_FRSQRTES \
| RS6000_BTM_HTM \
| RS6000_BTM_POPCNTD \
- | RS6000_BTM_CELL)
+ | RS6000_BTM_CELL \
+ | RS6000_BTM_DFP \
+ | RS6000_BTM_HARD_FLOAT)
/* Define builtin enum index. */
@@ -2622,6 +2627,9 @@ enum rs6000_builtin_type_index
RS6000_BTI_UINTTI, /* unsigned_intTI_type_node */
RS6000_BTI_float, /* float_type_node */
RS6000_BTI_double, /* double_type_node */
+ RS6000_BTI_long_double, /* long_double_type_node */
+ RS6000_BTI_dfloat64, /* dfloat64_type_node */
+ RS6000_BTI_dfloat128, /* dfloat128_type_node */
RS6000_BTI_void, /* void_type_node */
RS6000_BTI_MAX
};
@@ -2673,6 +2681,9 @@ enum rs6000_builtin_type_index
#define uintTI_type_internal_node (rs6000_builtin_types[RS6000_BTI_UINTTI])
#define float_type_internal_node (rs6000_builtin_types[RS6000_BTI_float])
#define double_type_internal_node (rs6000_builtin_types[RS6000_BTI_double])
+#define long_double_type_internal_node (rs6000_builtin_types[RS6000_BTI_long_double])
+#define dfloat64_type_internal_node (rs6000_builtin_types[RS6000_BTI_dfloat64])
+#define dfloat128_type_internal_node (rs6000_builtin_types[RS6000_BTI_dfloat128])
#define void_type_internal_node (rs6000_builtin_types[RS6000_BTI_void])
extern GTY(()) tree rs6000_builtin_types[RS6000_BTI_MAX];
diff --git a/gcc-4.9/gcc/config/rs6000/rs6000.md b/gcc-4.9/gcc/config/rs6000/rs6000.md
index 64c9e7c10..e853bc4f9 100644
--- a/gcc-4.9/gcc/config/rs6000/rs6000.md
+++ b/gcc-4.9/gcc/config/rs6000/rs6000.md
@@ -125,6 +125,16 @@
UNSPEC_P8V_MTVSRD
UNSPEC_P8V_XXPERMDI
UNSPEC_P8V_RELOAD_FROM_VSX
+ UNSPEC_ADDG6S
+ UNSPEC_CDTBCD
+ UNSPEC_CBCDTD
+ UNSPEC_DIVE
+ UNSPEC_DIVEO
+ UNSPEC_DIVEU
+ UNSPEC_DIVEUO
+ UNSPEC_UNPACK_128BIT
+ UNSPEC_PACK_128BIT
+ UNSPEC_LSQ
])
;;
@@ -481,6 +491,10 @@
(V2DF "X,X,X,X,X")
(V1TI "X,X,X,X,X")])
+;; Mode attribute to give the correct type for integer divides
+(define_mode_attr idiv_ldiv [(SI "idiv")
+ (DI "ldiv")])
+
;; Start with fixed-point load and store insns. Here we put only the more
;; complex forms. Basic data transfer is done later.
@@ -2755,10 +2769,7 @@
(match_operand:GPR 2 "gpc_reg_operand" "r")))]
""
"div<wd>u %0,%1,%2"
- [(set (attr "type")
- (cond [(match_operand:SI 0 "" "")
- (const_string "idiv")]
- (const_string "ldiv")))])
+ [(set_attr "type" "<idiv_ldiv>")])
;; For powers of two we can do srai/aze for divide and then adjust for
@@ -2782,10 +2793,7 @@
(match_operand:GPR 2 "gpc_reg_operand" "r")))]
""
"div<wd> %0,%1,%2"
- [(set (attr "type")
- (cond [(match_operand:SI 0 "" "")
- (const_string "idiv")]
- (const_string "ldiv")))])
+ [(set_attr "type" "<idiv_ldiv>")])
(define_expand "mod<mode>3"
[(use (match_operand:GPR 0 "gpc_reg_operand" ""))
@@ -6534,6 +6542,49 @@
[(set_attr "length" "8")
(set_attr "type" "fpload")])
+;; Define the TImode operations that can be done in a small number
+;; of instructions. The & constraints are to prevent the register
+;; allocator from allocating registers that overlap with the inputs
+;; (for example, having an input in 7,8 and an output in 6,7). We
+;; also allow for the output being the same as one of the inputs.
+
+(define_insn "addti3"
+ [(set (match_operand:TI 0 "gpc_reg_operand" "=&r,&r,r,r")
+ (plus:TI (match_operand:TI 1 "gpc_reg_operand" "%r,r,0,0")
+ (match_operand:TI 2 "reg_or_short_operand" "r,I,r,I")))]
+ "TARGET_64BIT"
+{
+ if (WORDS_BIG_ENDIAN)
+ return (GET_CODE (operands[2])) != CONST_INT
+ ? \"addc %L0,%L1,%L2\;adde %0,%1,%2\"
+ : \"addic %L0,%L1,%2\;add%G2e %0,%1\";
+ else
+ return (GET_CODE (operands[2])) != CONST_INT
+ ? \"addc %0,%1,%2\;adde %L0,%L1,%L2\"
+ : \"addic %0,%1,%2\;add%G2e %L0,%L1\";
+}
+ [(set_attr "type" "two")
+ (set_attr "length" "8")])
+
+(define_insn "subti3"
+ [(set (match_operand:TI 0 "gpc_reg_operand" "=&r,&r,r,r,r")
+ (minus:TI (match_operand:TI 1 "reg_or_short_operand" "r,I,0,r,I")
+ (match_operand:TI 2 "gpc_reg_operand" "r,r,r,0,0")))]
+ "TARGET_64BIT"
+{
+ if (WORDS_BIG_ENDIAN)
+ return (GET_CODE (operands[1]) != CONST_INT)
+ ? \"subfc %L0,%L2,%L1\;subfe %0,%2,%1\"
+ : \"subfic %L0,%L2,%1\;subf%G1e %0,%2\";
+ else
+ return (GET_CODE (operands[1]) != CONST_INT)
+ ? \"subfc %0,%2,%1\;subfe %L0,%L2,%L1\"
+ : \"subfic %0,%2,%1\;subf%G1e %L0,%L2\";
+}
+ [(set_attr "type" "two")
+ (set_attr "length" "8")])
+
+
;; Define the DImode operations that can be done in a small number
;; of instructions. The & constraints are to prevent the register
;; allocator from allocating registers that overlap with the inputs
@@ -9395,7 +9446,8 @@
(match_operand:FMOVE64 1 "input_operand" "r,Y,r,G,H,F"))]
"! TARGET_POWERPC64
&& ((TARGET_FPRS && TARGET_SINGLE_FLOAT)
- || TARGET_SOFT_FLOAT || TARGET_E500_SINGLE)
+ || TARGET_SOFT_FLOAT || TARGET_E500_SINGLE
+ || (<MODE>mode == DDmode && TARGET_E500_DOUBLE))
&& (gpc_reg_operand (operands[0], <MODE>mode)
|| gpc_reg_operand (operands[1], <MODE>mode))"
"#"
@@ -15691,6 +15743,191 @@
})
+;; Miscellaneous ISA 2.06 (power7) instructions
+(define_insn "addg6s"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (match_operand:SI 2 "register_operand" "r")]
+ UNSPEC_ADDG6S))]
+ "TARGET_POPCNTD"
+ "addg6s %0,%1,%2"
+ [(set_attr "type" "integer")
+ (set_attr "length" "4")])
+
+(define_insn "cdtbcd"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")]
+ UNSPEC_CDTBCD))]
+ "TARGET_POPCNTD"
+ "cdtbcd %0,%1"
+ [(set_attr "type" "integer")
+ (set_attr "length" "4")])
+
+(define_insn "cbcdtd"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")]
+ UNSPEC_CBCDTD))]
+ "TARGET_POPCNTD"
+ "cbcdtd %0,%1"
+ [(set_attr "type" "integer")
+ (set_attr "length" "4")])
+
+(define_int_iterator UNSPEC_DIV_EXTEND [UNSPEC_DIVE
+ UNSPEC_DIVEO
+ UNSPEC_DIVEU
+ UNSPEC_DIVEUO])
+
+(define_int_attr div_extend [(UNSPEC_DIVE "e")
+ (UNSPEC_DIVEO "eo")
+ (UNSPEC_DIVEU "eu")
+ (UNSPEC_DIVEUO "euo")])
+
+(define_insn "div<div_extend>_<mode>"
+ [(set (match_operand:GPR 0 "register_operand" "=r")
+ (unspec:GPR [(match_operand:GPR 1 "register_operand" "r")
+ (match_operand:GPR 2 "register_operand" "r")]
+ UNSPEC_DIV_EXTEND))]
+ "TARGET_POPCNTD"
+ "div<wd><div_extend> %0,%1,%2"
+ [(set_attr "type" "<idiv_ldiv>")])
+
+
+;; Pack/unpack 128-bit floating point types that take 2 scalar registers
+
+; Type of the 64-bit part when packing/unpacking 128-bit floating point types
+(define_mode_attr FP128_64 [(TF "DF") (TD "DI")])
+
+(define_expand "unpack<mode>"
+ [(set (match_operand:<FP128_64> 0 "nonimmediate_operand" "")
+ (unspec:<FP128_64>
+ [(match_operand:FMOVE128 1 "register_operand" "")
+ (match_operand:QI 2 "const_0_to_1_operand" "")]
+ UNSPEC_UNPACK_128BIT))]
+ ""
+ "")
+
+;; The Advance Toolchain 7.0-3 added private builtins: __builtin_longdouble_dw0
+;; and __builtin_longdouble_dw1 to optimize glibc. Add support for these
+;; builtins here.
+
+(define_expand "unpacktf_0"
+ [(set (match_operand:DF 0 "nonimmediate_operand" "")
+ (unspec:DF [(match_operand:TF 1 "register_operand" "")
+ (const_int 0)]
+ UNSPEC_UNPACK_128BIT))]
+ ""
+ "")
+
+(define_expand "unpacktf_1"
+ [(set (match_operand:DF 0 "nonimmediate_operand" "")
+ (unspec:DF [(match_operand:TF 1 "register_operand" "")
+ (const_int 1)]
+ UNSPEC_UNPACK_128BIT))]
+ ""
+ "")
+
+(define_insn_and_split "unpack<mode>_dm"
+ [(set (match_operand:<FP128_64> 0 "nonimmediate_operand" "=d,m,d,r,m")
+ (unspec:<FP128_64>
+ [(match_operand:FMOVE128 1 "register_operand" "d,d,r,d,r")
+ (match_operand:QI 2 "const_0_to_1_operand" "i,i,i,i,i")]
+ UNSPEC_UNPACK_128BIT))]
+ "TARGET_POWERPC64 && TARGET_DIRECT_MOVE"
+ "#"
+ "&& reload_completed"
+ [(set (match_dup 0) (match_dup 3))]
+{
+ unsigned fp_regno = REGNO (operands[1]) + UINTVAL (operands[2]);
+
+ if (REG_P (operands[0]) && REGNO (operands[0]) == fp_regno)
+ {
+ emit_note (NOTE_INSN_DELETED);
+ DONE;
+ }
+
+ operands[3] = gen_rtx_REG (<FP128_64>mode, fp_regno);
+}
+ [(set_attr "type" "fp,fpstore,mffgpr,mftgpr,store")
+ (set_attr "length" "4")])
+
+(define_insn_and_split "unpack<mode>_nodm"
+ [(set (match_operand:<FP128_64> 0 "nonimmediate_operand" "=d,m")
+ (unspec:<FP128_64>
+ [(match_operand:FMOVE128 1 "register_operand" "d,d")
+ (match_operand:QI 2 "const_0_to_1_operand" "i,i")]
+ UNSPEC_UNPACK_128BIT))]
+ "!TARGET_POWERPC64 || !TARGET_DIRECT_MOVE"
+ "#"
+ "&& reload_completed"
+ [(set (match_dup 0) (match_dup 3))]
+{
+ unsigned fp_regno = REGNO (operands[1]) + UINTVAL (operands[2]);
+
+ if (REG_P (operands[0]) && REGNO (operands[0]) == fp_regno)
+ {
+ emit_note (NOTE_INSN_DELETED);
+ DONE;
+ }
+
+ operands[3] = gen_rtx_REG (<FP128_64>mode, fp_regno);
+}
+ [(set_attr "type" "fp,fpstore")
+ (set_attr "length" "4")])
+
+(define_insn_and_split "pack<mode>"
+ [(set (match_operand:FMOVE128 0 "register_operand" "=d,&d")
+ (unspec:FMOVE128
+ [(match_operand:<FP128_64> 1 "register_operand" "0,d")
+ (match_operand:<FP128_64> 2 "register_operand" "d,d")]
+ UNSPEC_PACK_128BIT))]
+ ""
+ "@
+ fmr %L0,%2
+ #"
+ "&& reload_completed && REGNO (operands[0]) != REGNO (operands[1])"
+ [(set (match_dup 3) (match_dup 1))
+ (set (match_dup 4) (match_dup 2))]
+{
+ unsigned dest_hi = REGNO (operands[0]);
+ unsigned dest_lo = dest_hi + 1;
+
+ gcc_assert (!IN_RANGE (REGNO (operands[1]), dest_hi, dest_lo));
+ gcc_assert (!IN_RANGE (REGNO (operands[2]), dest_hi, dest_lo));
+
+ operands[3] = gen_rtx_REG (<FP128_64>mode, dest_hi);
+ operands[4] = gen_rtx_REG (<FP128_64>mode, dest_lo);
+}
+ [(set_attr "type" "fp,fp")
+ (set_attr "length" "4,8")])
+
+(define_insn "unpackv1ti"
+ [(set (match_operand:DI 0 "register_operand" "=d,d")
+ (unspec:DI [(match_operand:V1TI 1 "register_operand" "0,wa")
+ (match_operand:QI 2 "const_0_to_1_operand" "O,i")]
+ UNSPEC_UNPACK_128BIT))]
+ "TARGET_VSX"
+{
+ if (REGNO (operands[0]) == REGNO (operands[1]) && INTVAL (operands[2]) == 0)
+ return ASM_COMMENT_START " xxpermdi to same register";
+
+ operands[3] = GEN_INT (INTVAL (operands[2]) == 0 ? 0 : 3);
+ return "xxpermdi %x0,%x1,%x1,%3";
+}
+ [(set_attr "type" "vecperm")
+ (set_attr "length" "4")])
+
+(define_insn "packv1ti"
+ [(set (match_operand:V1TI 0 "register_operand" "=wa")
+ (unspec:V1TI
+ [(match_operand:DI 1 "register_operand" "d")
+ (match_operand:DI 2 "register_operand" "d")]
+ UNSPEC_PACK_128BIT))]
+ "TARGET_VSX"
+ "xxpermdi %x0,%x1,%x2,0"
+ [(set_attr "type" "vecperm")
+ (set_attr "length" "4")])
+
+
(include "sync.md")
(include "vector.md")
diff --git a/gcc-4.9/gcc/config/rs6000/sync.md b/gcc-4.9/gcc/config/rs6000/sync.md
index 7db439074..63152ed04 100644
--- a/gcc-4.9/gcc/config/rs6000/sync.md
+++ b/gcc-4.9/gcc/config/rs6000/sync.md
@@ -107,10 +107,17 @@
"isync"
[(set_attr "type" "isync")])
+;; Types that we should provide atomic instructions for.
+(define_mode_iterator AINT [QI
+ HI
+ SI
+ (DI "TARGET_POWERPC64")
+ (TI "TARGET_SYNC_TI")])
+
;; The control dependency used for load dependency described
;; in B.2.3 of the Power ISA 2.06B.
(define_insn "loadsync_<mode>"
- [(unspec_volatile:BLK [(match_operand:INT1 0 "register_operand" "r")]
+ [(unspec_volatile:BLK [(match_operand:AINT 0 "register_operand" "r")]
UNSPECV_ISYNC)
(clobber (match_scratch:CC 1 "=y"))]
""
@@ -118,18 +125,56 @@
[(set_attr "type" "isync")
(set_attr "length" "12")])
+(define_insn "load_quadpti"
+ [(set (match_operand:PTI 0 "quad_int_reg_operand" "=&r")
+ (unspec:PTI
+ [(match_operand:TI 1 "quad_memory_operand" "wQ")] UNSPEC_LSQ))]
+ "TARGET_SYNC_TI
+ && !reg_mentioned_p (operands[0], operands[1])"
+ "lq %0,%1"
+ [(set_attr "type" "load")
+ (set_attr "length" "4")])
+
(define_expand "atomic_load<mode>"
- [(set (match_operand:INT1 0 "register_operand" "") ;; output
- (match_operand:INT1 1 "memory_operand" "")) ;; memory
+ [(set (match_operand:AINT 0 "register_operand" "") ;; output
+ (match_operand:AINT 1 "memory_operand" "")) ;; memory
(use (match_operand:SI 2 "const_int_operand" ""))] ;; model
""
{
+ if (<MODE>mode == TImode && !TARGET_SYNC_TI)
+ FAIL;
+
enum memmodel model = (enum memmodel) INTVAL (operands[2]);
if (model == MEMMODEL_SEQ_CST)
emit_insn (gen_hwsync ());
- emit_move_insn (operands[0], operands[1]);
+ if (<MODE>mode != TImode)
+ emit_move_insn (operands[0], operands[1]);
+ else
+ {
+ rtx op0 = operands[0];
+ rtx op1 = operands[1];
+ rtx pti_reg = gen_reg_rtx (PTImode);
+
+ // Can't have indexed address for 'lq'
+ if (indexed_address (XEXP (op1, 0), TImode))
+ {
+ rtx old_addr = XEXP (op1, 0);
+ rtx new_addr = force_reg (Pmode, old_addr);
+ operands[1] = op1 = replace_equiv_address (op1, new_addr);
+ }
+
+ emit_insn (gen_load_quadpti (pti_reg, op1));
+
+ if (WORDS_BIG_ENDIAN)
+ emit_move_insn (op0, gen_lowpart (TImode, pti_reg));
+ else
+ {
+ emit_move_insn (gen_lowpart (DImode, op0), gen_highpart (DImode, pti_reg));
+ emit_move_insn (gen_highpart (DImode, op0), gen_lowpart (DImode, pti_reg));
+ }
+ }
switch (model)
{
@@ -146,12 +191,24 @@
DONE;
})
+(define_insn "store_quadpti"
+ [(set (match_operand:PTI 0 "quad_memory_operand" "=wQ")
+ (unspec:PTI
+ [(match_operand:PTI 1 "quad_int_reg_operand" "r")] UNSPEC_LSQ))]
+ "TARGET_SYNC_TI"
+ "stq %1,%0"
+ [(set_attr "type" "store")
+ (set_attr "length" "4")])
+
(define_expand "atomic_store<mode>"
- [(set (match_operand:INT1 0 "memory_operand" "") ;; memory
- (match_operand:INT1 1 "register_operand" "")) ;; input
+ [(set (match_operand:AINT 0 "memory_operand" "") ;; memory
+ (match_operand:AINT 1 "register_operand" "")) ;; input
(use (match_operand:SI 2 "const_int_operand" ""))] ;; model
""
{
+ if (<MODE>mode == TImode && !TARGET_SYNC_TI)
+ FAIL;
+
enum memmodel model = (enum memmodel) INTVAL (operands[2]);
switch (model)
{
@@ -166,7 +223,33 @@
default:
gcc_unreachable ();
}
- emit_move_insn (operands[0], operands[1]);
+ if (<MODE>mode != TImode)
+ emit_move_insn (operands[0], operands[1]);
+ else
+ {
+ rtx op0 = operands[0];
+ rtx op1 = operands[1];
+ rtx pti_reg = gen_reg_rtx (PTImode);
+
+ // Can't have indexed address for 'stq'
+ if (indexed_address (XEXP (op0, 0), TImode))
+ {
+ rtx old_addr = XEXP (op0, 0);
+ rtx new_addr = force_reg (Pmode, old_addr);
+ operands[0] = op0 = replace_equiv_address (op0, new_addr);
+ }
+
+ if (WORDS_BIG_ENDIAN)
+ emit_move_insn (pti_reg, gen_lowpart (PTImode, op1));
+ else
+ {
+ emit_move_insn (gen_lowpart (DImode, pti_reg), gen_highpart (DImode, op1));
+ emit_move_insn (gen_highpart (DImode, pti_reg), gen_lowpart (DImode, op1));
+ }
+
+ emit_insn (gen_store_quadpti (gen_lowpart (PTImode, op0), pti_reg));
+ }
+
DONE;
})
@@ -180,14 +263,6 @@
SI
(DI "TARGET_POWERPC64")])
-;; Types that we should provide atomic instructions for.
-
-(define_mode_iterator AINT [QI
- HI
- SI
- (DI "TARGET_POWERPC64")
- (TI "TARGET_SYNC_TI")])
-
(define_insn "load_locked<mode>"
[(set (match_operand:ATOMIC 0 "int_reg_operand" "=r")
(unspec_volatile:ATOMIC
diff --git a/gcc-4.9/gcc/config/rs6000/vsx.md b/gcc-4.9/gcc/config/rs6000/vsx.md
index d83cdc3df..23d85ab06 100644
--- a/gcc-4.9/gcc/config/rs6000/vsx.md
+++ b/gcc-4.9/gcc/config/rs6000/vsx.md
@@ -1891,7 +1891,12 @@
(parallel [(const_int 0) (const_int 4)
(const_int 1) (const_int 5)])))]
"VECTOR_MEM_VSX_P (<MODE>mode)"
- "xxmrghw %x0,%x1,%x2"
+{
+ if (BYTES_BIG_ENDIAN)
+ return "xxmrghw %x0,%x1,%x2";
+ else
+ return "xxmrglw %x0,%x2,%x1";
+}
[(set_attr "type" "vecperm")])
(define_insn "vsx_xxmrglw_<mode>"
@@ -1903,7 +1908,12 @@
(parallel [(const_int 2) (const_int 6)
(const_int 3) (const_int 7)])))]
"VECTOR_MEM_VSX_P (<MODE>mode)"
- "xxmrglw %x0,%x1,%x2"
+{
+ if (BYTES_BIG_ENDIAN)
+ return "xxmrglw %x0,%x1,%x2";
+ else
+ return "xxmrghw %x0,%x2,%x1";
+}
[(set_attr "type" "vecperm")])
;; Shift left double by word immediate
diff --git a/gcc-4.9/gcc/config/sh/sh.c b/gcc-4.9/gcc/config/sh/sh.c
index 6d909c79e..12724a20d 100644
--- a/gcc-4.9/gcc/config/sh/sh.c
+++ b/gcc-4.9/gcc/config/sh/sh.c
@@ -19,6 +19,10 @@ You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
+#include <sstream>
+#include <vector>
+#include <algorithm>
+
#include "config.h"
#include "system.h"
#include "coretypes.h"
@@ -70,10 +74,6 @@ along with GCC; see the file COPYING3. If not see
#include "pass_manager.h"
#include "context.h"
-#include <sstream>
-#include <vector>
-#include <algorithm>
-
int code_for_indirect_jump_scratch = CODE_FOR_indirect_jump_scratch;
/* These are some macros to abstract register modes. */
diff --git a/gcc-4.9/gcc/config/sparc/sparc-protos.h b/gcc-4.9/gcc/config/sparc/sparc-protos.h
index 1d63e4640..ee2091bb8 100644
--- a/gcc-4.9/gcc/config/sparc/sparc-protos.h
+++ b/gcc-4.9/gcc/config/sparc/sparc-protos.h
@@ -69,7 +69,6 @@ extern bool sparc_expand_move (enum machine_mode, rtx *);
extern void sparc_emit_set_symbolic_const64 (rtx, rtx, rtx);
extern int sparc_splitdi_legitimate (rtx, rtx);
extern int sparc_split_regreg_legitimate (rtx, rtx);
-extern int sparc_absnegfloat_split_legitimate (rtx, rtx);
extern const char *output_ubranch (rtx, rtx);
extern const char *output_cbranch (rtx, rtx, int, int, int, rtx);
extern const char *output_return (rtx);
diff --git a/gcc-4.9/gcc/config/sparc/sparc.c b/gcc-4.9/gcc/config/sparc/sparc.c
index f52b9761a..5b00cca47 100644
--- a/gcc-4.9/gcc/config/sparc/sparc.c
+++ b/gcc-4.9/gcc/config/sparc/sparc.c
@@ -8539,22 +8539,6 @@ sparc_split_regreg_legitimate (rtx reg1, rtx reg2)
return 0;
}
-/* Return 1 if x and y are some kind of REG and they refer to
- different hard registers. This test is guaranteed to be
- run after reload. */
-
-int
-sparc_absnegfloat_split_legitimate (rtx x, rtx y)
-{
- if (GET_CODE (x) != REG)
- return 0;
- if (GET_CODE (y) != REG)
- return 0;
- if (REGNO (x) == REGNO (y))
- return 0;
- return 1;
-}
-
/* Return 1 if REGNO (reg1) is even and REGNO (reg1) == REGNO (reg2) - 1.
This makes them candidates for using ldd and std insns.
diff --git a/gcc-4.9/gcc/config/sparc/sparc.md b/gcc-4.9/gcc/config/sparc/sparc.md
index 8b6c647fc..76c331597 100644
--- a/gcc-4.9/gcc/config/sparc/sparc.md
+++ b/gcc-4.9/gcc/config/sparc/sparc.md
@@ -424,6 +424,10 @@
(define_attr "fptype" "single,double"
(const_string "single"))
+;; FP precision specific to the UT699.
+(define_attr "fptype_ut699" "none,single"
+ (const_string "none"))
+
;; UltraSPARC-III integer load type.
(define_attr "us3load_type" "2cycle,3cycle"
(const_string "2cycle"))
@@ -464,7 +468,8 @@
(const_string "false")
(and (eq_attr "fix_ut699" "true")
(and (eq_attr "type" "fpload,fp,fpmove,fpmul,fpdivs,fpsqrts")
- (eq_attr "fptype" "single")))
+ (ior (eq_attr "fptype" "single")
+ (eq_attr "fptype_ut699" "single"))))
(const_string "false")
(eq_attr "length" "1")
(const_string "true")
@@ -3455,7 +3460,8 @@
"TARGET_FPU"
"fdtos\t%1, %0"
[(set_attr "type" "fp")
- (set_attr "fptype" "double")])
+ (set_attr "fptype" "double")
+ (set_attr "fptype_ut699" "single")])
(define_expand "trunctfsf2"
[(set (match_operand:SF 0 "register_operand" "")
@@ -3496,7 +3502,7 @@
"TARGET_FPU"
"fitos\t%1, %0"
[(set_attr "type" "fp")
- (set_attr "fptype" "double")])
+ (set_attr "fptype" "single")])
(define_insn "floatsidf2"
[(set (match_operand:DF 0 "register_operand" "=e")
@@ -3583,7 +3589,7 @@
"TARGET_FPU"
"fstoi\t%1, %0"
[(set_attr "type" "fp")
- (set_attr "fptype" "double")])
+ (set_attr "fptype" "single")])
(define_insn "fix_truncdfsi2"
[(set (match_operand:SI 0 "register_operand" "=f")
@@ -3591,7 +3597,8 @@
"TARGET_FPU"
"fdtoi\t%1, %0"
[(set_attr "type" "fp")
- (set_attr "fptype" "double")])
+ (set_attr "fptype" "double")
+ (set_attr "fptype_ut699" "single")])
(define_expand "fix_trunctfsi2"
[(set (match_operand:SI 0 "register_operand" "")
@@ -5554,53 +5561,52 @@
[(set_attr "type" "fpdivs")])
(define_expand "negtf2"
- [(set (match_operand:TF 0 "register_operand" "=e,e")
- (neg:TF (match_operand:TF 1 "register_operand" "0,e")))]
+ [(set (match_operand:TF 0 "register_operand" "")
+ (neg:TF (match_operand:TF 1 "register_operand" "")))]
"TARGET_FPU"
"")
-(define_insn_and_split "*negtf2_notv9"
- [(set (match_operand:TF 0 "register_operand" "=e,e")
- (neg:TF (match_operand:TF 1 "register_operand" "0,e")))]
- ; We don't use quad float insns here so we don't need TARGET_HARD_QUAD.
- "TARGET_FPU
- && ! TARGET_V9"
- "@
- fnegs\t%0, %0
- #"
- "&& reload_completed
- && sparc_absnegfloat_split_legitimate (operands[0], operands[1])"
- [(set (match_dup 2) (neg:SF (match_dup 3)))
- (set (match_dup 4) (match_dup 5))
- (set (match_dup 6) (match_dup 7))]
- "operands[2] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]));
- operands[3] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]));
- operands[4] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]) + 1);
- operands[5] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]) + 1);
- operands[6] = gen_rtx_raw_REG (DFmode, REGNO (operands[0]) + 2);
- operands[7] = gen_rtx_raw_REG (DFmode, REGNO (operands[1]) + 2);"
- [(set_attr "type" "fpmove,*")
- (set_attr "length" "*,2")])
-
-(define_insn_and_split "*negtf2_v9"
- [(set (match_operand:TF 0 "register_operand" "=e,e")
- (neg:TF (match_operand:TF 1 "register_operand" "0,e")))]
- ; We don't use quad float insns here so we don't need TARGET_HARD_QUAD.
- "TARGET_FPU && TARGET_V9"
- "@
- fnegd\t%0, %0
- #"
- "&& reload_completed
- && sparc_absnegfloat_split_legitimate (operands[0], operands[1])"
- [(set (match_dup 2) (neg:DF (match_dup 3)))
- (set (match_dup 4) (match_dup 5))]
- "operands[2] = gen_rtx_raw_REG (DFmode, REGNO (operands[0]));
- operands[3] = gen_rtx_raw_REG (DFmode, REGNO (operands[1]));
- operands[4] = gen_rtx_raw_REG (DFmode, REGNO (operands[0]) + 2);
- operands[5] = gen_rtx_raw_REG (DFmode, REGNO (operands[1]) + 2);"
- [(set_attr "type" "fpmove,*")
- (set_attr "length" "*,2")
- (set_attr "fptype" "double")])
+(define_insn "*negtf2_hq"
+ [(set (match_operand:TF 0 "register_operand" "=e")
+ (neg:TF (match_operand:TF 1 "register_operand" "e")))]
+ "TARGET_FPU && TARGET_HARD_QUAD"
+ "fnegq\t%1, %0"
+ [(set_attr "type" "fpmove")])
+
+(define_insn_and_split "*negtf2"
+ [(set (match_operand:TF 0 "register_operand" "=e")
+ (neg:TF (match_operand:TF 1 "register_operand" "e")))]
+ "TARGET_FPU && !TARGET_HARD_QUAD"
+ "#"
+ "&& reload_completed"
+ [(clobber (const_int 0))]
+{
+ rtx set_dest = operands[0];
+ rtx set_src = operands[1];
+ rtx dest1, dest2;
+ rtx src1, src2;
+
+ dest1 = gen_df_reg (set_dest, 0);
+ dest2 = gen_df_reg (set_dest, 1);
+ src1 = gen_df_reg (set_src, 0);
+ src2 = gen_df_reg (set_src, 1);
+
+ /* Now emit using the real source and destination we found, swapping
+ the order if we detect overlap. */
+ if (reg_overlap_mentioned_p (dest1, src2))
+ {
+ emit_insn (gen_movdf (dest2, src2));
+ emit_insn (gen_negdf2 (dest1, src1));
+ }
+ else
+ {
+ emit_insn (gen_negdf2 (dest1, src1));
+ if (REGNO (dest2) != REGNO (src2))
+ emit_insn (gen_movdf (dest2, src2));
+ }
+ DONE;
+}
+ [(set_attr "length" "2")])
(define_expand "negdf2"
[(set (match_operand:DF 0 "register_operand" "")
@@ -5609,22 +5615,39 @@
"")
(define_insn_and_split "*negdf2_notv9"
- [(set (match_operand:DF 0 "register_operand" "=e,e")
- (neg:DF (match_operand:DF 1 "register_operand" "0,e")))]
- "TARGET_FPU && ! TARGET_V9"
- "@
- fnegs\t%0, %0
- #"
- "&& reload_completed
- && sparc_absnegfloat_split_legitimate (operands[0], operands[1])"
- [(set (match_dup 2) (neg:SF (match_dup 3)))
- (set (match_dup 4) (match_dup 5))]
- "operands[2] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]));
- operands[3] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]));
- operands[4] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]) + 1);
- operands[5] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]) + 1);"
- [(set_attr "type" "fpmove,*")
- (set_attr "length" "*,2")])
+ [(set (match_operand:DF 0 "register_operand" "=e")
+ (neg:DF (match_operand:DF 1 "register_operand" "e")))]
+ "TARGET_FPU && !TARGET_V9"
+ "#"
+ "&& reload_completed"
+ [(clobber (const_int 0))]
+{
+ rtx set_dest = operands[0];
+ rtx set_src = operands[1];
+ rtx dest1, dest2;
+ rtx src1, src2;
+
+ dest1 = gen_highpart (SFmode, set_dest);
+ dest2 = gen_lowpart (SFmode, set_dest);
+ src1 = gen_highpart (SFmode, set_src);
+ src2 = gen_lowpart (SFmode, set_src);
+
+ /* Now emit using the real source and destination we found, swapping
+ the order if we detect overlap. */
+ if (reg_overlap_mentioned_p (dest1, src2))
+ {
+ emit_insn (gen_movsf (dest2, src2));
+ emit_insn (gen_negsf2 (dest1, src1));
+ }
+ else
+ {
+ emit_insn (gen_negsf2 (dest1, src1));
+ if (REGNO (dest2) != REGNO (src2))
+ emit_insn (gen_movsf (dest2, src2));
+ }
+ DONE;
+}
+ [(set_attr "length" "2")])
(define_insn "*negdf2_v9"
[(set (match_operand:DF 0 "register_operand" "=e")
@@ -5647,56 +5670,47 @@
"TARGET_FPU"
"")
-(define_insn_and_split "*abstf2_notv9"
- [(set (match_operand:TF 0 "register_operand" "=e,e")
- (abs:TF (match_operand:TF 1 "register_operand" "0,e")))]
- ; We don't use quad float insns here so we don't need TARGET_HARD_QUAD.
- "TARGET_FPU && ! TARGET_V9"
- "@
- fabss\t%0, %0
- #"
- "&& reload_completed
- && sparc_absnegfloat_split_legitimate (operands[0], operands[1])"
- [(set (match_dup 2) (abs:SF (match_dup 3)))
- (set (match_dup 4) (match_dup 5))
- (set (match_dup 6) (match_dup 7))]
- "operands[2] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]));
- operands[3] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]));
- operands[4] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]) + 1);
- operands[5] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]) + 1);
- operands[6] = gen_rtx_raw_REG (DFmode, REGNO (operands[0]) + 2);
- operands[7] = gen_rtx_raw_REG (DFmode, REGNO (operands[1]) + 2);"
- [(set_attr "type" "fpmove,*")
- (set_attr "length" "*,2")])
-
-(define_insn "*abstf2_hq_v9"
- [(set (match_operand:TF 0 "register_operand" "=e,e")
- (abs:TF (match_operand:TF 1 "register_operand" "0,e")))]
- "TARGET_FPU && TARGET_V9 && TARGET_HARD_QUAD"
- "@
- fabsd\t%0, %0
- fabsq\t%1, %0"
- [(set_attr "type" "fpmove")
- (set_attr "fptype" "double,*")])
+(define_insn "*abstf2_hq"
+ [(set (match_operand:TF 0 "register_operand" "=e")
+ (abs:TF (match_operand:TF 1 "register_operand" "e")))]
+ "TARGET_FPU && TARGET_HARD_QUAD"
+ "fabsq\t%1, %0"
+ [(set_attr "type" "fpmove")])
-(define_insn_and_split "*abstf2_v9"
- [(set (match_operand:TF 0 "register_operand" "=e,e")
- (abs:TF (match_operand:TF 1 "register_operand" "0,e")))]
- "TARGET_FPU && TARGET_V9 && !TARGET_HARD_QUAD"
- "@
- fabsd\t%0, %0
- #"
- "&& reload_completed
- && sparc_absnegfloat_split_legitimate (operands[0], operands[1])"
- [(set (match_dup 2) (abs:DF (match_dup 3)))
- (set (match_dup 4) (match_dup 5))]
- "operands[2] = gen_rtx_raw_REG (DFmode, REGNO (operands[0]));
- operands[3] = gen_rtx_raw_REG (DFmode, REGNO (operands[1]));
- operands[4] = gen_rtx_raw_REG (DFmode, REGNO (operands[0]) + 2);
- operands[5] = gen_rtx_raw_REG (DFmode, REGNO (operands[1]) + 2);"
- [(set_attr "type" "fpmove,*")
- (set_attr "length" "*,2")
- (set_attr "fptype" "double,*")])
+(define_insn_and_split "*abstf2"
+ [(set (match_operand:TF 0 "register_operand" "=e")
+ (abs:TF (match_operand:TF 1 "register_operand" "e")))]
+ "TARGET_FPU && !TARGET_HARD_QUAD"
+ "#"
+ "&& reload_completed"
+ [(clobber (const_int 0))]
+{
+ rtx set_dest = operands[0];
+ rtx set_src = operands[1];
+ rtx dest1, dest2;
+ rtx src1, src2;
+
+ dest1 = gen_df_reg (set_dest, 0);
+ dest2 = gen_df_reg (set_dest, 1);
+ src1 = gen_df_reg (set_src, 0);
+ src2 = gen_df_reg (set_src, 1);
+
+ /* Now emit using the real source and destination we found, swapping
+ the order if we detect overlap. */
+ if (reg_overlap_mentioned_p (dest1, src2))
+ {
+ emit_insn (gen_movdf (dest2, src2));
+ emit_insn (gen_absdf2 (dest1, src1));
+ }
+ else
+ {
+ emit_insn (gen_absdf2 (dest1, src1));
+ if (REGNO (dest2) != REGNO (src2))
+ emit_insn (gen_movdf (dest2, src2));
+ }
+ DONE;
+}
+ [(set_attr "length" "2")])
(define_expand "absdf2"
[(set (match_operand:DF 0 "register_operand" "")
@@ -5705,22 +5719,39 @@
"")
(define_insn_and_split "*absdf2_notv9"
- [(set (match_operand:DF 0 "register_operand" "=e,e")
- (abs:DF (match_operand:DF 1 "register_operand" "0,e")))]
- "TARGET_FPU && ! TARGET_V9"
- "@
- fabss\t%0, %0
- #"
- "&& reload_completed
- && sparc_absnegfloat_split_legitimate (operands[0], operands[1])"
- [(set (match_dup 2) (abs:SF (match_dup 3)))
- (set (match_dup 4) (match_dup 5))]
- "operands[2] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]));
- operands[3] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]));
- operands[4] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]) + 1);
- operands[5] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]) + 1);"
- [(set_attr "type" "fpmove,*")
- (set_attr "length" "*,2")])
+ [(set (match_operand:DF 0 "register_operand" "=e")
+ (abs:DF (match_operand:DF 1 "register_operand" "e")))]
+ "TARGET_FPU && !TARGET_V9"
+ "#"
+ "&& reload_completed"
+ [(clobber (const_int 0))]
+{
+ rtx set_dest = operands[0];
+ rtx set_src = operands[1];
+ rtx dest1, dest2;
+ rtx src1, src2;
+
+ dest1 = gen_highpart (SFmode, set_dest);
+ dest2 = gen_lowpart (SFmode, set_dest);
+ src1 = gen_highpart (SFmode, set_src);
+ src2 = gen_lowpart (SFmode, set_src);
+
+ /* Now emit using the real source and destination we found, swapping
+ the order if we detect overlap. */
+ if (reg_overlap_mentioned_p (dest1, src2))
+ {
+ emit_insn (gen_movsf (dest2, src2));
+ emit_insn (gen_abssf2 (dest1, src1));
+ }
+ else
+ {
+ emit_insn (gen_abssf2 (dest1, src1));
+ if (REGNO (dest2) != REGNO (src2))
+ emit_insn (gen_movsf (dest2, src2));
+ }
+ DONE;
+}
+ [(set_attr "length" "2")])
(define_insn "*absdf2_v9"
[(set (match_operand:DF 0 "register_operand" "=e")
@@ -5795,19 +5826,6 @@
}
[(set_attr "type" "shift")])
-(define_insn "*ashlsi3_extend"
- [(set (match_operand:DI 0 "register_operand" "=r")
- (zero_extend:DI
- (ashift:SI (match_operand:SI 1 "register_operand" "r")
- (match_operand:SI 2 "arith_operand" "rI"))))]
- "TARGET_ARCH64"
-{
- if (GET_CODE (operands[2]) == CONST_INT)
- operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
- return "sll\t%1, %2, %0";
-}
- [(set_attr "type" "shift")])
-
(define_expand "ashldi3"
[(set (match_operand:DI 0 "register_operand" "=r")
(ashift:DI (match_operand:DI 1 "register_operand" "r")
diff --git a/gcc-4.9/gcc/config/sparc/sparc.opt b/gcc-4.9/gcc/config/sparc/sparc.opt
index c02aec59f..64e40955a 100644
--- a/gcc-4.9/gcc/config/sparc/sparc.opt
+++ b/gcc-4.9/gcc/config/sparc/sparc.opt
@@ -113,6 +113,10 @@ mrelax
Target
Optimize tail call instructions in assembler and linker
+muser-mode
+Target Report Mask(USER_MODE)
+Do not generate code that can only run in supervisor mode
+
mcpu=
Target RejectNegative Joined Var(sparc_cpu_and_features) Enum(sparc_processor_type) Init(PROCESSOR_V7)
Use features of and schedule code for given CPU
diff --git a/gcc-4.9/gcc/config/sparc/sync.md b/gcc-4.9/gcc/config/sparc/sync.md
index fd5691f73..e6e237f25 100644
--- a/gcc-4.9/gcc/config/sparc/sync.md
+++ b/gcc-4.9/gcc/config/sparc/sync.md
@@ -200,10 +200,27 @@
[(match_operand:I48MODE 2 "register_operand" "r")
(match_operand:I48MODE 3 "register_operand" "0")]
UNSPECV_CAS))]
- "(TARGET_V9 || TARGET_LEON3) && (<MODE>mode != DImode || TARGET_ARCH64)"
+ "TARGET_V9 && (<MODE>mode != DImode || TARGET_ARCH64)"
"cas<modesuffix>\t%1, %2, %0"
[(set_attr "type" "multi")])
+(define_insn "*atomic_compare_and_swap_leon3_1"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (match_operand:SI 1 "mem_noofs_operand" "+w"))
+ (set (match_dup 1)
+ (unspec_volatile:SI
+ [(match_operand:SI 2 "register_operand" "r")
+ (match_operand:SI 3 "register_operand" "0")]
+ UNSPECV_CAS))]
+ "TARGET_LEON3"
+{
+ if (TARGET_USER_MODE)
+ return "casa\t%1 0xa, %2, %0"; /* ASI for user data space. */
+ else
+ return "casa\t%1 0xb, %2, %0"; /* ASI for supervisor data space. */
+}
+ [(set_attr "type" "multi")])
+
(define_insn "*atomic_compare_and_swapdi_v8plus"
[(set (match_operand:DI 0 "register_operand" "=h")
(match_operand:DI 1 "mem_noofs_operand" "+w"))
diff --git a/gcc-4.9/gcc/configure b/gcc-4.9/gcc/configure
index 7b07b1b53..5408d8fbe 100755
--- a/gcc-4.9/gcc/configure
+++ b/gcc-4.9/gcc/configure
@@ -24503,7 +24503,7 @@ else
.align 4
smac %g2, %g3, %g1
umac %g2, %g3, %g1
- cas [%g2], %g3, %g1' > conftest.s
+ casa [%g2] 0xb, %g3, %g1' > conftest.s
if { ac_try='$gcc_cv_as $gcc_cv_as_flags -Aleon -o conftest.o conftest.s >&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
diff --git a/gcc-4.9/gcc/configure.ac b/gcc-4.9/gcc/configure.ac
index c7a593f52..011ec822e 100644
--- a/gcc-4.9/gcc/configure.ac
+++ b/gcc-4.9/gcc/configure.ac
@@ -3727,7 +3727,7 @@ foo:
.align 4
smac %g2, %g3, %g1
umac %g2, %g3, %g1
- cas [[%g2]], %g3, %g1],,
+ casa [[%g2]] 0xb, %g3, %g1],,
[AC_DEFINE(HAVE_AS_LEON, 1,
[Define if your assembler supports LEON instructions.])])
;;
diff --git a/gcc-4.9/gcc/cp/ChangeLog b/gcc-4.9/gcc/cp/ChangeLog
index f95944b9b..f9cf11884 100644
--- a/gcc-4.9/gcc/cp/ChangeLog
+++ b/gcc-4.9/gcc/cp/ChangeLog
@@ -1,3 +1,54 @@
+2014-05-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/61151
+ * lambda.c (is_this): Allow capture proxies too.
+
+ DR 5
+ PR c++/60019
+ * call.c (build_user_type_conversion_1): The copy-init temporary
+ is cv-unqualified.
+
+2014-05-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/61083
+ * pt.c (convert_nontype_argument): Protect all the error calls
+ with complain & tf_error.
+
+2014-05-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/60999
+ * pt.c (maybe_begin_member_template_processing): Use
+ uses_template_parms.
+
+2014-05-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/60992
+ * lambda.c (lambda_capture_field_type): Wrap anything dependent
+ other than 'this' or a VLA.
+ (is_this): New.
+ * pt.c (tsubst_copy) [VAR_DECL]: Also build a new VAR_DECL if
+ the operand was static or constant.
+
+2014-04-30 Jason Merrill <jason@redhat.com>
+
+ PR c++/60980
+ * init.c (build_value_init): Don't try to call an array constructor.
+
+ PR c++/60951
+ * typeck2.c (massage_init_elt): Use maybe_constant_init.
+
+2014-04-24 Jakub Jelinek <jakub@redhat.com>
+
+ * parser.c (cp_parser_omp_atomic): Allow seq_cst before
+ atomic-clause, allow comma in between atomic-clause and
+ seq_cst.
+
+2014-04-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/59073
+ * parser.c (cp_parser_omp_parallel): If cp_parser_omp_for
+ fails, don't set OM_PARALLEL_COMBINED and return NULL.
+
2014-04-22 Release Manager
* GCC 4.9.0 released.
diff --git a/gcc-4.9/gcc/cp/call.c b/gcc-4.9/gcc/cp/call.c
index 98469e9e4..57e08cb8e 100644
--- a/gcc-4.9/gcc/cp/call.c
+++ b/gcc-4.9/gcc/cp/call.c
@@ -3677,11 +3677,20 @@ build_user_type_conversion_1 (tree totype, tree expr, int flags,
return cand;
}
+ tree convtype;
+ if (!DECL_CONSTRUCTOR_P (cand->fn))
+ convtype = non_reference (TREE_TYPE (TREE_TYPE (cand->fn)));
+ else if (cand->second_conv->kind == ck_rvalue)
+ /* DR 5: [in the first step of copy-initialization]...if the function
+ is a constructor, the call initializes a temporary of the
+ cv-unqualified version of the destination type. */
+ convtype = cv_unqualified (totype);
+ else
+ convtype = totype;
/* Build the user conversion sequence. */
conv = build_conv
(ck_user,
- (DECL_CONSTRUCTOR_P (cand->fn)
- ? totype : non_reference (TREE_TYPE (TREE_TYPE (cand->fn)))),
+ convtype,
build_identity_conv (TREE_TYPE (expr), expr));
conv->cand = cand;
if (cand->viable == -1)
diff --git a/gcc-4.9/gcc/cp/init.c b/gcc-4.9/gcc/cp/init.c
index 1a1f6c0fe..4373963a2 100644
--- a/gcc-4.9/gcc/cp/init.c
+++ b/gcc-4.9/gcc/cp/init.c
@@ -339,7 +339,8 @@ build_value_init (tree type, tsubst_flags_t complain)
gcc_assert (!processing_template_decl
|| (SCALAR_TYPE_P (type) || TREE_CODE (type) == ARRAY_TYPE));
- if (type_build_ctor_call (type))
+ if (CLASS_TYPE_P (type)
+ && type_build_ctor_call (type))
{
tree ctor = build_aggr_init_expr
(type,
diff --git a/gcc-4.9/gcc/cp/lambda.c b/gcc-4.9/gcc/cp/lambda.c
index 0b8b46a81..7bd0de15f 100644
--- a/gcc-4.9/gcc/cp/lambda.c
+++ b/gcc-4.9/gcc/cp/lambda.c
@@ -201,6 +201,14 @@ lambda_function (tree lambda)
return lambda;
}
+static inline bool
+is_this (tree t)
+{
+ return ((TREE_CODE (t) == PARM_DECL
+ || TREE_CODE (t) == VAR_DECL)
+ && DECL_NAME (t) == this_identifier);
+}
+
/* Returns the type to use for the FIELD_DECL corresponding to the
capture of EXPR.
The caller should add REFERENCE_TYPE for capture by reference. */
@@ -216,8 +224,9 @@ lambda_capture_field_type (tree expr, bool explicit_init_p)
}
else
type = non_reference (unlowered_expr_type (expr));
- if (!type || WILDCARD_TYPE_P (type) || type_uses_auto (type)
- || DECL_PACK_P (expr))
+ if (type_dependent_expression_p (expr)
+ && !is_this (tree_strip_nop_conversions (expr))
+ && !array_of_runtime_bound_p (type))
{
type = cxx_make_type (DECLTYPE_TYPE);
DECLTYPE_TYPE_EXPR (type) = expr;
diff --git a/gcc-4.9/gcc/cp/parser.c b/gcc-4.9/gcc/cp/parser.c
index f386eed27..aa00a7b68 100644
--- a/gcc-4.9/gcc/cp/parser.c
+++ b/gcc-4.9/gcc/cp/parser.c
@@ -28530,6 +28530,20 @@ cp_parser_omp_atomic (cp_parser *parser, cp_token *pragma_tok)
tree id = cp_lexer_peek_token (parser->lexer)->u.value;
const char *p = IDENTIFIER_POINTER (id);
+ if (!strcmp (p, "seq_cst"))
+ {
+ seq_cst = true;
+ cp_lexer_consume_token (parser->lexer);
+ if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)
+ && cp_lexer_peek_nth_token (parser->lexer, 2)->type == CPP_NAME)
+ cp_lexer_consume_token (parser->lexer);
+ }
+ }
+ if (cp_lexer_next_token_is (parser->lexer, CPP_NAME))
+ {
+ tree id = cp_lexer_peek_token (parser->lexer)->u.value;
+ const char *p = IDENTIFIER_POINTER (id);
+
if (!strcmp (p, "read"))
code = OMP_ATOMIC_READ;
else if (!strcmp (p, "write"))
@@ -28543,16 +28557,22 @@ cp_parser_omp_atomic (cp_parser *parser, cp_token *pragma_tok)
if (p)
cp_lexer_consume_token (parser->lexer);
}
-
- if (cp_lexer_next_token_is (parser->lexer, CPP_NAME))
+ if (!seq_cst)
{
- tree id = cp_lexer_peek_token (parser->lexer)->u.value;
- const char *p = IDENTIFIER_POINTER (id);
+ if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA)
+ && cp_lexer_peek_nth_token (parser->lexer, 2)->type == CPP_NAME)
+ cp_lexer_consume_token (parser->lexer);
- if (!strcmp (p, "seq_cst"))
+ if (cp_lexer_next_token_is (parser->lexer, CPP_NAME))
{
- seq_cst = true;
- cp_lexer_consume_token (parser->lexer);
+ tree id = cp_lexer_peek_token (parser->lexer)->u.value;
+ const char *p = IDENTIFIER_POINTER (id);
+
+ if (!strcmp (p, "seq_cst"))
+ {
+ seq_cst = true;
+ cp_lexer_consume_token (parser->lexer);
+ }
}
}
cp_parser_require_pragma_eol (parser, pragma_tok);
@@ -29825,10 +29845,12 @@ cp_parser_omp_parallel (cp_parser *parser, cp_token *pragma_tok,
return cp_parser_omp_for (parser, pragma_tok, p_name, mask, cclauses);
block = begin_omp_parallel ();
save = cp_parser_begin_omp_structured_block (parser);
- cp_parser_omp_for (parser, pragma_tok, p_name, mask, cclauses);
+ tree ret = cp_parser_omp_for (parser, pragma_tok, p_name, mask, cclauses);
cp_parser_end_omp_structured_block (parser, save);
stmt = finish_omp_parallel (cclauses[C_OMP_CLAUSE_SPLIT_PARALLEL],
block);
+ if (ret == NULL_TREE)
+ return ret;
OMP_PARALLEL_COMBINED (stmt) = 1;
return stmt;
}
diff --git a/gcc-4.9/gcc/cp/pt.c b/gcc-4.9/gcc/cp/pt.c
index 318c32507..3951997b0 100644
--- a/gcc-4.9/gcc/cp/pt.c
+++ b/gcc-4.9/gcc/cp/pt.c
@@ -462,9 +462,13 @@ maybe_begin_member_template_processing (tree decl)
bool nsdmi = TREE_CODE (decl) == FIELD_DECL;
if (nsdmi)
- decl = (CLASSTYPE_TEMPLATE_INFO (DECL_CONTEXT (decl))
- ? CLASSTYPE_TI_TEMPLATE (DECL_CONTEXT (decl))
- : NULL_TREE);
+ {
+ tree ctx = DECL_CONTEXT (decl);
+ decl = (CLASSTYPE_TEMPLATE_INFO (ctx)
+ /* Disregard full specializations (c++/60999). */
+ && uses_template_parms (ctx)
+ ? CLASSTYPE_TI_TEMPLATE (ctx) : NULL_TREE);
+ }
if (inline_needs_template_parms (decl, nsdmi))
{
@@ -5817,17 +5821,18 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
{
if (VAR_P (expr))
{
- error ("%qD is not a valid template argument "
- "because %qD is a variable, not the address of "
- "a variable",
- expr, expr);
+ if (complain & tf_error)
+ error ("%qD is not a valid template argument "
+ "because %qD is a variable, not the address of "
+ "a variable", expr, expr);
return NULL_TREE;
}
if (POINTER_TYPE_P (expr_type))
{
- error ("%qE is not a valid template argument for %qT "
- "because it is not the address of a variable",
- expr, type);
+ if (complain & tf_error)
+ error ("%qE is not a valid template argument for %qT "
+ "because it is not the address of a variable",
+ expr, type);
return NULL_TREE;
}
/* Other values, like integer constants, might be valid
@@ -5842,23 +5847,24 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
? TREE_OPERAND (expr, 0) : expr);
if (!VAR_P (decl))
{
- error ("%qE is not a valid template argument of type %qT "
- "because %qE is not a variable",
- expr, type, decl);
+ if (complain & tf_error)
+ error ("%qE is not a valid template argument of type %qT "
+ "because %qE is not a variable", expr, type, decl);
return NULL_TREE;
}
else if (cxx_dialect < cxx11 && !DECL_EXTERNAL_LINKAGE_P (decl))
{
- error ("%qE is not a valid template argument of type %qT "
- "because %qD does not have external linkage",
- expr, type, decl);
+ if (complain & tf_error)
+ error ("%qE is not a valid template argument of type %qT "
+ "because %qD does not have external linkage",
+ expr, type, decl);
return NULL_TREE;
}
else if (cxx_dialect >= cxx11 && decl_linkage (decl) == lk_none)
{
- error ("%qE is not a valid template argument of type %qT "
- "because %qD has no linkage",
- expr, type, decl);
+ if (complain & tf_error)
+ error ("%qE is not a valid template argument of type %qT "
+ "because %qD has no linkage", expr, type, decl);
return NULL_TREE;
}
}
@@ -5886,15 +5892,17 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
if (!at_least_as_qualified_p (TREE_TYPE (type), expr_type))
{
- error ("%qE is not a valid template argument for type %qT "
- "because of conflicts in cv-qualification", expr, type);
+ if (complain & tf_error)
+ error ("%qE is not a valid template argument for type %qT "
+ "because of conflicts in cv-qualification", expr, type);
return NULL_TREE;
}
if (!real_lvalue_p (expr))
{
- error ("%qE is not a valid template argument for type %qT "
- "because it is not an lvalue", expr, type);
+ if (complain & tf_error)
+ error ("%qE is not a valid template argument for type %qT "
+ "because it is not an lvalue", expr, type);
return NULL_TREE;
}
@@ -5910,26 +5918,29 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
expr = TREE_OPERAND (expr, 0);
if (DECL_P (expr))
{
- error ("%q#D is not a valid template argument for type %qT "
- "because a reference variable does not have a constant "
- "address", expr, type);
+ if (complain & tf_error)
+ error ("%q#D is not a valid template argument for type %qT "
+ "because a reference variable does not have a constant "
+ "address", expr, type);
return NULL_TREE;
}
}
if (!DECL_P (expr))
{
- error ("%qE is not a valid template argument for type %qT "
- "because it is not an object with external linkage",
- expr, type);
+ if (complain & tf_error)
+ error ("%qE is not a valid template argument for type %qT "
+ "because it is not an object with external linkage",
+ expr, type);
return NULL_TREE;
}
if (!DECL_EXTERNAL_LINKAGE_P (expr))
{
- error ("%qE is not a valid template argument for type %qT "
- "because object %qD has not external linkage",
- expr, type, expr);
+ if (complain & tf_error)
+ error ("%qE is not a valid template argument for type %qT "
+ "because object %qD has not external linkage",
+ expr, type, expr);
return NULL_TREE;
}
@@ -5971,9 +5982,13 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
{
if (TREE_CODE (expr) == ADDR_EXPR)
{
- error ("%qE is not a valid template argument for type %qT "
- "because it is a pointer", expr, type);
- inform (input_location, "try using %qE instead", TREE_OPERAND (expr, 0));
+ if (complain & tf_error)
+ {
+ error ("%qE is not a valid template argument for type %qT "
+ "because it is a pointer", expr, type);
+ inform (input_location, "try using %qE instead",
+ TREE_OPERAND (expr, 0));
+ }
return NULL_TREE;
}
@@ -6011,13 +6026,16 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
provide a superior diagnostic. */
if (!same_type_p (TREE_TYPE (expr), type))
{
- error ("%qE is not a valid template argument for type %qT "
- "because it is of type %qT", expr, type,
- TREE_TYPE (expr));
- /* If we are just one standard conversion off, explain. */
- if (can_convert_standard (type, TREE_TYPE (expr), complain))
- inform (input_location,
- "standard conversions are not allowed in this context");
+ if (complain & tf_error)
+ {
+ error ("%qE is not a valid template argument for type %qT "
+ "because it is of type %qT", expr, type,
+ TREE_TYPE (expr));
+ /* If we are just one standard conversion off, explain. */
+ if (can_convert_standard (type, TREE_TYPE (expr), complain))
+ inform (input_location,
+ "standard conversions are not allowed in this context");
+ }
return NULL_TREE;
}
}
@@ -6040,8 +6058,9 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
{
if (expr != nullptr_node)
{
- error ("%qE is not a valid template argument for type %qT "
- "because it is of type %qT", expr, type, TREE_TYPE (expr));
+ if (complain & tf_error)
+ error ("%qE is not a valid template argument for type %qT "
+ "because it is of type %qT", expr, type, TREE_TYPE (expr));
return NULL_TREE;
}
return expr;
@@ -12638,13 +12657,17 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl)
}
else
{
- /* This can happen for a variable used in a late-specified
- return type of a local lambda. Just make a dummy decl
- since it's only used for its type. */
- if (cp_unevaluated_operand)
- return tsubst_decl (t, args, complain);
- gcc_assert (errorcount || sorrycount);
- return error_mark_node;
+ /* This can happen for a variable used in a
+ late-specified return type of a local lambda, or for a
+ local static or constant. Building a new VAR_DECL
+ should be OK in all those cases. */
+ r = tsubst_decl (t, args, complain);
+ if (decl_constant_var_p (r))
+ /* A use of a local constant must decay to its value. */
+ return integral_constant_value (r);
+ gcc_assert (cp_unevaluated_operand || TREE_STATIC (r)
+ || errorcount || sorrycount);
+ return r;
}
}
}
diff --git a/gcc-4.9/gcc/cp/typeck2.c b/gcc-4.9/gcc/cp/typeck2.c
index 68e518a5c..85696f6e0 100644
--- a/gcc-4.9/gcc/cp/typeck2.c
+++ b/gcc-4.9/gcc/cp/typeck2.c
@@ -1138,7 +1138,7 @@ massage_init_elt (tree type, tree init, tsubst_flags_t complain)
/* When we defer constant folding within a statement, we may want to
defer this folding as well. */
tree t = fold_non_dependent_expr_sfinae (init, complain);
- t = maybe_constant_value (t);
+ t = maybe_constant_init (t);
if (TREE_CONSTANT (t))
init = t;
return init;
diff --git a/gcc-4.9/gcc/doc/extend.texi b/gcc-4.9/gcc/doc/extend.texi
index 347a94a3a..9780d9238 100644
--- a/gcc-4.9/gcc/doc/extend.texi
+++ b/gcc-4.9/gcc/doc/extend.texi
@@ -12787,9 +12787,12 @@ float __builtin_recipdivf (float, float);
float __builtin_rsqrtf (float);
double __builtin_recipdiv (double, double);
double __builtin_rsqrt (double);
-long __builtin_bpermd (long, long);
uint64_t __builtin_ppc_get_timebase ();
unsigned long __builtin_ppc_mftb ();
+double __builtin_unpack_longdouble (long double, int);
+double __builtin_longdouble_dw0 (long double);
+double __builtin_longdouble_dw1 (long double);
+long double __builtin_pack_longdouble (double, double);
@end smallexample
The @code{vec_rsqrt}, @code{__builtin_rsqrt}, and
@@ -12809,6 +12812,57 @@ The @code{__builtin_ppc_mftb} function always generates one instruction and
returns the Time Base Register value as an unsigned long, throwing away
the most significant word on 32-bit environments.
+The following built-in functions are available for the PowerPC family
+of processors, starting with ISA 2.06 or later (@option{-mcpu=power7}
+or @option{-mpopcntd}):
+@smallexample
+long __builtin_bpermd (long, long);
+int __builtin_divwe (int, int);
+int __builtin_divweo (int, int);
+unsigned int __builtin_divweu (unsigned int, unsigned int);
+unsigned int __builtin_divweuo (unsigned int, unsigned int);
+long __builtin_divde (long, long);
+long __builtin_divdeo (long, long);
+unsigned long __builtin_divdeu (unsigned long, unsigned long);
+unsigned long __builtin_divdeuo (unsigned long, unsigned long);
+unsigned int cdtbcd (unsigned int);
+unsigned int cbcdtd (unsigned int);
+unsigned int addg6s (unsigned int, unsigned int);
+@end smallexample
+
+The @code{__builtin_divde}, @code{__builtin_divdeo},
+@code{__builitin_divdeu}, @code{__builtin_divdeou} functions require a
+64-bit environment support ISA 2.06 or later.
+
+The following built-in functions are available for the PowerPC family
+of processors when hardware decimal floating point
+(@option{-mhard-dfp}) is available:
+@smallexample
+_Decimal64 __builtin_dxex (_Decimal64);
+_Decimal128 __builtin_dxexq (_Decimal128);
+_Decimal64 __builtin_ddedpd (int, _Decimal64);
+_Decimal128 __builtin_ddedpdq (int, _Decimal128);
+_Decimal64 __builtin_denbcd (int, _Decimal64);
+_Decimal128 __builtin_denbcdq (int, _Decimal128);
+_Decimal64 __builtin_diex (_Decimal64, _Decimal64);
+_Decimal128 _builtin_diexq (_Decimal128, _Decimal128);
+_Decimal64 __builtin_dscli (_Decimal64, int);
+_Decimal128 __builitn_dscliq (_Decimal128, int);
+_Decimal64 __builtin_dscri (_Decimal64, int);
+_Decimal128 __builitn_dscriq (_Decimal128, int);
+unsigned long long __builtin_unpack_dec128 (_Decimal128, int);
+_Decimal128 __builtin_pack_dec128 (unsigned long long, unsigned long long);
+@end smallexample
+
+The following built-in functions are available for the PowerPC family
+of processors when the Vector Scalar (vsx) instruction set is
+available:
+@smallexample
+unsigned long long __builtin_unpack_vector_int128 (vector __int128_t, int);
+vector __int128_t __builtin_pack_vector_int128 (unsigned long long,
+ unsigned long long);
+@end smallexample
+
@node PowerPC AltiVec/VSX Built-in Functions
@subsection PowerPC AltiVec Built-in Functions
@@ -15220,6 +15274,17 @@ vector __uint128_t vec_vsubcuq (vector __uint128_t, vector __uint128_t);
__int128_t vec_vsubuqm (__int128_t, __int128_t);
__uint128_t vec_vsubuqm (__uint128_t, __uint128_t);
+
+vector __int128_t __builtin_bcdadd (vector __int128_t, vector__int128_t);
+int __builtin_bcdadd_lt (vector __int128_t, vector__int128_t);
+int __builtin_bcdadd_eq (vector __int128_t, vector__int128_t);
+int __builtin_bcdadd_gt (vector __int128_t, vector__int128_t);
+int __builtin_bcdadd_ov (vector __int128_t, vector__int128_t);
+vector __int128_t bcdsub (vector __int128_t, vector__int128_t);
+int __builtin_bcdsub_lt (vector __int128_t, vector__int128_t);
+int __builtin_bcdsub_eq (vector __int128_t, vector__int128_t);
+int __builtin_bcdsub_gt (vector __int128_t, vector__int128_t);
+int __builtin_bcdsub_ov (vector __int128_t, vector__int128_t);
@end smallexample
If the cryptographic instructions are enabled (@option{-mcrypto} or
diff --git a/gcc-4.9/gcc/doc/install.texi b/gcc-4.9/gcc/doc/install.texi
index c32f1f90e..6b45e9d0d 100644
--- a/gcc-4.9/gcc/doc/install.texi
+++ b/gcc-4.9/gcc/doc/install.texi
@@ -2544,8 +2544,7 @@ Finally a @code{stagefeedback} compiler is built using the information collected
Unlike standard bootstrap, several additional restrictions apply. The
compiler used to build @code{stage1} needs to support a 64-bit integral type.
-It is recommended to only use GCC for this. Also parallel make is currently
-not supported since collisions in profile collecting may occur.
+It is recommended to only use GCC for this.
@html
<hr />
diff --git a/gcc-4.9/gcc/doc/invoke.texi b/gcc-4.9/gcc/doc/invoke.texi
index 8ecb44565..0324a8571 100644
--- a/gcc-4.9/gcc/doc/invoke.texi
+++ b/gcc-4.9/gcc/doc/invoke.texi
@@ -825,7 +825,8 @@ Objective-C and Objective-C++ Dialects}.
@gccoptlist{-meb -mel -mno-crt0}
@emph{MSP430 Options}
-@gccoptlist{-msim -masm-hex -mmcu= -mcpu= -mlarge -msmall -mrelax}
+@gccoptlist{-msim -masm-hex -mmcu= -mcpu= -mlarge -msmall -mrelax @gol
+-mhwmult=}
@emph{NDS32 Options}
@gccoptlist{-mbig-endian -mlittle-endian @gol
@@ -991,6 +992,7 @@ See RS/6000 and PowerPC Options.
-mhard-quad-float -msoft-quad-float @gol
-mstack-bias -mno-stack-bias @gol
-munaligned-doubles -mno-unaligned-doubles @gol
+-muser-mode -mno-user-mode @gol
-mv8plus -mno-v8plus -mvis -mno-vis @gol
-mvis2 -mno-vis2 -mvis3 -mno-vis3 @gol
-mcbcond -mno-cbcond @gol
@@ -18218,6 +18220,28 @@ This option is passed to the assembler and linker, and allows the
linker to perform certain optimizations that cannot be done until
the final link.
+@item mhwmult=
+@opindex mhwmult=
+Describes the type of hardware multiply supported by the target.
+Accepted values are @code{none} for no hardware multiply, @code{16bit}
+for the original 16-bit-only multiply supported by early MCUs.
+@code{32bit} for the 16/32-bit multiply supported by later MCUs and
+@code{f5series} for the 16/32-bit multiply supported by F5-series MCUs.
+A value of @code{auto} can also be given. This tells GCC to deduce
+the hardware multiply support based upon the MCU name provided by the
+@option{-mmcu} option. If no @option{-mmcu} option is specified then
+@code{32bit} hardware multiply support is assumed. @code{auto} is the
+default setting.
+
+Hardware multiplies are normally performed by calling a library
+routine. This saves space in the generated code. When compiling at
+@code{-O3} or higher however the hardware multiplier is invoked
+inline. This makes for bigger, but faster code.
+
+The hardware multiply routines disable interrupts whilst running and
+restore the previous interrupt state when they finish. This makes
+them safe to use inside interrupt handlers as well as in normal code.
+
@end table
@node NDS32 Options
@@ -20908,6 +20932,14 @@ Specifying this option avoids some rare compatibility problems with code
generated by other compilers. It is not the default because it results
in a performance loss, especially for floating-point code.
+@item -muser-mode
+@itemx -mno-user-mode
+@opindex muser-mode
+@opindex mno-user-mode
+Do not generate code that can only run in supervisor mode. This is relevant
+only for the @code{casa} instruction emitted for the LEON3 processor. The
+default is @option{-mno-user-mode}.
+
@item -mno-faster-structs
@itemx -mfaster-structs
@opindex mno-faster-structs
diff --git a/gcc-4.9/gcc/doc/sourcebuild.texi b/gcc-4.9/gcc/doc/sourcebuild.texi
index 914860813..7438980f0 100644
--- a/gcc-4.9/gcc/doc/sourcebuild.texi
+++ b/gcc-4.9/gcc/doc/sourcebuild.texi
@@ -1601,6 +1601,13 @@ MIPS target supports @code{-mpaired-single}.
@subsubsection PowerPC-specific attributes
@table @code
+
+@item dfp_hw
+PowerPC target supports executing hardware DFP instructions.
+
+@item p8vector_hw
+PowerPC target supports executing VSX instructions (ISA 2.07).
+
@item powerpc64
Test system supports executing 64-bit instructions.
@@ -1610,12 +1617,24 @@ PowerPC target supports AltiVec.
@item powerpc_altivec_ok
PowerPC target supports @code{-maltivec}.
+@item powerpc_eabi_ok
+PowerPC target supports @code{-meabi}.
+
+@item powerpc_elfv2
+PowerPC target supports @code{-mabi=elfv2}.
+
@item powerpc_fprs
PowerPC target supports floating-point registers.
@item powerpc_hard_double
PowerPC target supports hardware double-precision floating-point.
+@item powerpc_htm_ok
+PowerPC target supports @code{-mhtm}
+
+@item powerpc_p8vector_ok
+PowerPC target supports @code{-mpower8-vector}
+
@item powerpc_ppu_ok
PowerPC target supports @code{-mcpu=cell}.
@@ -1629,9 +1648,6 @@ PowerPC target supports PowerPC SPE.
@item powerpc_spu
PowerPC target supports PowerPC SPU.
-@item spu_auto_overlay
-SPU target has toolchain that supports automatic overlay generation.
-
@item powerpc_vsx_ok
PowerPC target supports @code{-mvsx}.
@@ -1639,8 +1655,17 @@ PowerPC target supports @code{-mvsx}.
Including the options used to compile this particular test, the
PowerPC target supports PowerPC 405.
+@item ppc_recip_hw
+PowerPC target supports executing reciprocal estimate instructions.
+
+@item spu_auto_overlay
+SPU target has toolchain that supports automatic overlay generation.
+
@item vmx_hw
PowerPC target supports executing AltiVec instructions.
+
+@item vsx_hw
+PowerPC target supports executing VSX instructions (ISA 2.06).
@end table
@subsubsection Other hardware attributes
diff --git a/gcc-4.9/gcc/fold-const.c b/gcc-4.9/gcc/fold-const.c
index 891c0d515..5c2bf256c 100644
--- a/gcc-4.9/gcc/fold-const.c
+++ b/gcc-4.9/gcc/fold-const.c
@@ -484,8 +484,6 @@ negate_expr_p (tree t)
case TRUNC_DIV_EXPR:
case ROUND_DIV_EXPR:
- case FLOOR_DIV_EXPR:
- case CEIL_DIV_EXPR:
case EXACT_DIV_EXPR:
/* In general we can't negate A / B, because if A is INT_MIN and
B is 1, we may turn this into INT_MIN / -1 which is undefined
@@ -682,8 +680,6 @@ fold_negate_expr (location_t loc, tree t)
case TRUNC_DIV_EXPR:
case ROUND_DIV_EXPR:
- case FLOOR_DIV_EXPR:
- case CEIL_DIV_EXPR:
case EXACT_DIV_EXPR:
/* In general we can't negate A / B, because if A is INT_MIN and
B is 1, we may turn this into INT_MIN / -1 which is undefined
diff --git a/gcc-4.9/gcc/fortran/ChangeLog b/gcc-4.9/gcc/fortran/ChangeLog
index eb33cc928..42f0321c5 100644
--- a/gcc-4.9/gcc/fortran/ChangeLog
+++ b/gcc-4.9/gcc/fortran/ChangeLog
@@ -1,3 +1,13 @@
+2014-04-22 Tobias Burnus <burnus@net-b.de>
+
+ Backport from mainline
+ 2014-04-11 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/58880
+ PR fortran/60495
+ * resolve.c (gfc_resolve_finalizers): Ensure that vtables
+ and finalization wrappers are generated.
+
2014-04-22 Release Manager
* GCC 4.9.0 released.
diff --git a/gcc-4.9/gcc/fortran/resolve.c b/gcc-4.9/gcc/fortran/resolve.c
index 6e23e570b..38755fef6 100644
--- a/gcc-4.9/gcc/fortran/resolve.c
+++ b/gcc-4.9/gcc/fortran/resolve.c
@@ -11200,15 +11200,36 @@ resolve_fl_procedure (gfc_symbol *sym, int mp_flag)
the requirements of the standard for procedures used as finalizers. */
static bool
-gfc_resolve_finalizers (gfc_symbol* derived)
+gfc_resolve_finalizers (gfc_symbol* derived, bool *finalizable)
{
gfc_finalizer* list;
gfc_finalizer** prev_link; /* For removing wrong entries from the list. */
bool result = true;
bool seen_scalar = false;
+ gfc_symbol *vtab;
+ gfc_component *c;
+ /* Return early when not finalizable. Additionally, ensure that derived-type
+ components have a their finalizables resolved. */
if (!derived->f2k_derived || !derived->f2k_derived->finalizers)
- return true;
+ {
+ bool has_final = false;
+ for (c = derived->components; c; c = c->next)
+ if (c->ts.type == BT_DERIVED
+ && !c->attr.pointer && !c->attr.proc_pointer && !c->attr.allocatable)
+ {
+ bool has_final2 = false;
+ if (!gfc_resolve_finalizers (c->ts.u.derived, &has_final))
+ return false; /* Error. */
+ has_final = has_final || has_final2;
+ }
+ if (!has_final)
+ {
+ if (finalizable)
+ *finalizable = false;
+ return true;
+ }
+ }
/* Walk over the list of finalizer-procedures, check them, and if any one
does not fit in with the standard's definition, print an error and remove
@@ -11330,12 +11351,15 @@ gfc_resolve_finalizers (gfc_symbol* derived)
/* Remove wrong nodes immediately from the list so we don't risk any
troubles in the future when they might fail later expectations. */
error:
- result = false;
i = list;
*prev_link = list->next;
gfc_free_finalizer (i);
+ result = false;
}
+ if (result == false)
+ return false;
+
/* Warn if we haven't seen a scalar finalizer procedure (but we know there
were nodes in the list, must have been for arrays. It is surely a good
idea to have a scalar version there if there's something to finalize. */
@@ -11344,8 +11368,14 @@ error:
" defined at %L, suggest also scalar one",
derived->name, &derived->declared_at);
- gfc_find_derived_vtab (derived);
- return result;
+ vtab = gfc_find_derived_vtab (derived);
+ c = vtab->ts.u.derived->components->next->next->next->next->next;
+ gfc_set_sym_referenced (c->initializer->symtree->n.sym);
+
+ if (finalizable)
+ *finalizable = true;
+
+ return true;
}
@@ -12513,7 +12543,7 @@ resolve_fl_derived (gfc_symbol *sym)
return false;
/* Resolve the finalizer procedures. */
- if (!gfc_resolve_finalizers (sym))
+ if (!gfc_resolve_finalizers (sym, NULL))
return false;
if (sym->attr.is_class && sym->ts.u.derived == NULL)
diff --git a/gcc-4.9/gcc/gimple-ssa-strength-reduction.c b/gcc-4.9/gcc/gimple-ssa-strength-reduction.c
index 9ad1b4f06..cb19399bd 100644
--- a/gcc-4.9/gcc/gimple-ssa-strength-reduction.c
+++ b/gcc-4.9/gcc/gimple-ssa-strength-reduction.c
@@ -1114,15 +1114,18 @@ create_mul_imm_cand (gimple gs, tree base_in, tree stride_in, bool speed)
X = Y * c
============================
X = (B + i') * (S * c) */
- base = base_cand->base_expr;
- index = base_cand->index;
temp = tree_to_double_int (base_cand->stride)
* tree_to_double_int (stride_in);
- stride = double_int_to_tree (TREE_TYPE (stride_in), temp);
- ctype = base_cand->cand_type;
- if (has_single_use (base_in))
- savings = (base_cand->dead_savings
- + stmt_cost (base_cand->cand_stmt, speed));
+ if (double_int_fits_to_tree_p (TREE_TYPE (stride_in), temp))
+ {
+ base = base_cand->base_expr;
+ index = base_cand->index;
+ stride = double_int_to_tree (TREE_TYPE (stride_in), temp);
+ ctype = base_cand->cand_type;
+ if (has_single_use (base_in))
+ savings = (base_cand->dead_savings
+ + stmt_cost (base_cand->cand_stmt, speed));
+ }
}
else if (base_cand->kind == CAND_ADD && integer_onep (base_cand->stride))
{
diff --git a/gcc-4.9/gcc/gimplify.c b/gcc-4.9/gcc/gimplify.c
index dcc2d74bc..9f4bad853 100644
--- a/gcc-4.9/gcc/gimplify.c
+++ b/gcc-4.9/gcc/gimplify.c
@@ -5802,7 +5802,7 @@ omp_notice_variable (struct gimplify_omp_ctx *ctx, tree decl, bool in_code)
to the contrary in the innermost scope, generate an error. */
static bool
-omp_is_private (struct gimplify_omp_ctx *ctx, tree decl, bool simd)
+omp_is_private (struct gimplify_omp_ctx *ctx, tree decl, int simd)
{
splay_tree_node n;
@@ -5836,13 +5836,13 @@ omp_is_private (struct gimplify_omp_ctx *ctx, tree decl, bool simd)
else if ((n->value & GOVD_REDUCTION) != 0)
error ("iteration variable %qE should not be reduction",
DECL_NAME (decl));
- else if (simd && (n->value & GOVD_LASTPRIVATE) != 0)
+ else if (simd == 1 && (n->value & GOVD_LASTPRIVATE) != 0)
error ("iteration variable %qE should not be lastprivate",
DECL_NAME (decl));
else if (simd && (n->value & GOVD_PRIVATE) != 0)
error ("iteration variable %qE should not be private",
DECL_NAME (decl));
- else if (simd && (n->value & GOVD_LINEAR) != 0)
+ else if (simd == 2 && (n->value & GOVD_LINEAR) != 0)
error ("iteration variable %qE is predetermined linear",
DECL_NAME (decl));
}
@@ -6279,9 +6279,17 @@ gimplify_adjust_omp_clauses_1 (splay_tree_node n, void *data)
OMP_CLAUSE_CHAIN (clause) = nc;
}
}
+ if (code == OMP_CLAUSE_FIRSTPRIVATE && (flags & GOVD_LASTPRIVATE) != 0)
+ {
+ tree nc = build_omp_clause (input_location, OMP_CLAUSE_LASTPRIVATE);
+ OMP_CLAUSE_DECL (nc) = decl;
+ OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE (nc) = 1;
+ OMP_CLAUSE_CHAIN (nc) = *list_p;
+ OMP_CLAUSE_CHAIN (clause) = nc;
+ lang_hooks.decls.omp_finish_clause (nc);
+ }
*list_p = clause;
lang_hooks.decls.omp_finish_clause (clause);
-
return 0;
}
@@ -6320,18 +6328,17 @@ gimplify_adjust_omp_clauses (tree *list_p)
if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LINEAR
&& ctx->outer_context
&& !(OMP_CLAUSE_LINEAR_NO_COPYIN (c)
- && OMP_CLAUSE_LINEAR_NO_COPYOUT (c))
- && !is_global_var (decl))
+ && OMP_CLAUSE_LINEAR_NO_COPYOUT (c)))
{
- if (ctx->outer_context->region_type == ORT_COMBINED_PARALLEL)
+ if (ctx->outer_context->combined_loop
+ && !OMP_CLAUSE_LINEAR_NO_COPYIN (c))
{
n = splay_tree_lookup (ctx->outer_context->variables,
(splay_tree_key) decl);
if (n == NULL
|| (n->value & GOVD_DATA_SHARE_CLASS) == 0)
{
- int flags = OMP_CLAUSE_LINEAR_NO_COPYIN (c)
- ? GOVD_LASTPRIVATE : GOVD_SHARED;
+ int flags = GOVD_FIRSTPRIVATE | GOVD_LASTPRIVATE;
if (n == NULL)
omp_add_variable (ctx->outer_context, decl,
flags | GOVD_SEEN);
@@ -6339,7 +6346,7 @@ gimplify_adjust_omp_clauses (tree *list_p)
n->value |= flags | GOVD_SEEN;
}
}
- else
+ else if (!is_global_var (decl))
omp_notice_variable (ctx->outer_context, decl, true);
}
}
@@ -6608,8 +6615,8 @@ gimplify_omp_for (tree *expr_p, gimple_seq *pre_p)
orig_for_stmt = for_stmt = *expr_p;
- simd = TREE_CODE (for_stmt) == OMP_SIMD
- || TREE_CODE (for_stmt) == CILK_SIMD;
+ simd = (TREE_CODE (for_stmt) == OMP_SIMD
+ || TREE_CODE (for_stmt) == CILK_SIMD);
gimplify_scan_omp_clauses (&OMP_FOR_CLAUSES (for_stmt), pre_p,
simd ? ORT_SIMD : ORT_WORKSHARE);
@@ -6665,13 +6672,16 @@ gimplify_omp_for (tree *expr_p, gimple_seq *pre_p)
/* Make sure the iteration variable is private. */
tree c = NULL_TREE;
+ tree c2 = NULL_TREE;
if (orig_for_stmt != for_stmt)
/* Do this only on innermost construct for combined ones. */;
else if (simd)
{
splay_tree_node n = splay_tree_lookup (gimplify_omp_ctxp->variables,
(splay_tree_key)decl);
- omp_is_private (gimplify_omp_ctxp, decl, simd);
+ omp_is_private (gimplify_omp_ctxp, decl,
+ 1 + (TREE_VEC_LENGTH (OMP_FOR_INIT (for_stmt))
+ != 1));
if (n != NULL && (n->value & GOVD_DATA_SHARE_CLASS) != 0)
omp_notice_variable (gimplify_omp_ctxp, decl, true);
else if (TREE_VEC_LENGTH (OMP_FOR_INIT (for_stmt)) == 1)
@@ -6697,13 +6707,14 @@ gimplify_omp_for (tree *expr_p, gimple_seq *pre_p)
: OMP_CLAUSE_PRIVATE);
OMP_CLAUSE_DECL (c) = decl;
OMP_CLAUSE_CHAIN (c) = OMP_FOR_CLAUSES (for_stmt);
+ OMP_FOR_CLAUSES (for_stmt) = c;
omp_add_variable (gimplify_omp_ctxp, decl,
(lastprivate ? GOVD_LASTPRIVATE : GOVD_PRIVATE)
- | GOVD_SEEN);
+ | GOVD_EXPLICIT | GOVD_SEEN);
c = NULL_TREE;
}
}
- else if (omp_is_private (gimplify_omp_ctxp, decl, simd))
+ else if (omp_is_private (gimplify_omp_ctxp, decl, 0))
omp_notice_variable (gimplify_omp_ctxp, decl, true);
else
omp_add_variable (gimplify_omp_ctxp, decl, GOVD_PRIVATE | GOVD_SEEN);
@@ -6720,7 +6731,25 @@ gimplify_omp_for (tree *expr_p, gimple_seq *pre_p)
gimplify_seq_add_stmt (&for_body, gimple_build_assign (decl, var));
- omp_add_variable (gimplify_omp_ctxp, var, GOVD_PRIVATE | GOVD_SEEN);
+ if (simd && TREE_VEC_LENGTH (OMP_FOR_INIT (for_stmt)) == 1)
+ {
+ c2 = build_omp_clause (input_location, OMP_CLAUSE_LINEAR);
+ OMP_CLAUSE_LINEAR_NO_COPYIN (c2) = 1;
+ OMP_CLAUSE_LINEAR_NO_COPYOUT (c2) = 1;
+ OMP_CLAUSE_DECL (c2) = var;
+ OMP_CLAUSE_CHAIN (c2) = OMP_FOR_CLAUSES (for_stmt);
+ OMP_FOR_CLAUSES (for_stmt) = c2;
+ omp_add_variable (gimplify_omp_ctxp, var,
+ GOVD_LINEAR | GOVD_EXPLICIT | GOVD_SEEN);
+ if (c == NULL_TREE)
+ {
+ c = c2;
+ c2 = NULL_TREE;
+ }
+ }
+ else
+ omp_add_variable (gimplify_omp_ctxp, var,
+ GOVD_PRIVATE | GOVD_SEEN);
}
else
var = decl;
@@ -6823,13 +6852,22 @@ gimplify_omp_for (tree *expr_p, gimple_seq *pre_p)
gcc_unreachable ();
}
+ if (c2)
+ {
+ gcc_assert (c);
+ OMP_CLAUSE_LINEAR_STEP (c2) = OMP_CLAUSE_LINEAR_STEP (c);
+ }
+
if ((var != decl || TREE_VEC_LENGTH (OMP_FOR_INIT (for_stmt)) > 1)
&& orig_for_stmt == for_stmt)
{
for (c = OMP_FOR_CLAUSES (for_stmt); c ; c = OMP_CLAUSE_CHAIN (c))
- if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LASTPRIVATE
- && OMP_CLAUSE_DECL (c) == decl
- && OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c) == NULL)
+ if (((OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LASTPRIVATE
+ && OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c) == NULL)
+ || (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LINEAR
+ && !OMP_CLAUSE_LINEAR_NO_COPYOUT (c)
+ && OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c) == NULL))
+ && OMP_CLAUSE_DECL (c) == decl)
{
t = TREE_VEC_ELT (OMP_FOR_INCR (for_stmt), i);
gcc_assert (TREE_CODE (t) == MODIFY_EXPR);
@@ -6841,8 +6879,12 @@ gimplify_omp_for (tree *expr_p, gimple_seq *pre_p)
gcc_assert (TREE_OPERAND (t, 0) == var);
t = build2 (TREE_CODE (t), TREE_TYPE (decl), decl,
TREE_OPERAND (t, 1));
- gimplify_assign (decl, t,
- &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c));
+ gimple_seq *seq;
+ if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LASTPRIVATE)
+ seq = &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c);
+ else
+ seq = &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c);
+ gimplify_assign (decl, t, seq);
}
}
}
diff --git a/gcc-4.9/gcc/go/gofrontend/import-archive.cc b/gcc-4.9/gcc/go/gofrontend/import-archive.cc
index 9a1d5b3d7..34fb528ab 100644
--- a/gcc-4.9/gcc/go/gofrontend/import-archive.cc
+++ b/gcc-4.9/gcc/go/gofrontend/import-archive.cc
@@ -261,7 +261,7 @@ Archive_file::interpret_header(const Archive_header* hdr, off_t off,
char size_string[size_string_size + 1];
memcpy(size_string, hdr->ar_size, size_string_size);
char* ps = size_string + size_string_size;
- while (ps[-1] == ' ')
+ while (ps > size_string && ps[-1] == ' ')
--ps;
*ps = '\0';
diff --git a/gcc-4.9/gcc/go/gofrontend/types.cc b/gcc-4.9/gcc/go/gofrontend/types.cc
index 2148a1a43..e79adb396 100644
--- a/gcc-4.9/gcc/go/gofrontend/types.cc
+++ b/gcc-4.9/gcc/go/gofrontend/types.cc
@@ -8966,9 +8966,8 @@ Type::finalize_methods(Gogo* gogo, const Type* type, Location location,
Methods** all_methods)
{
*all_methods = NULL;
- Types_seen types_seen;
- Type::add_methods_for_type(type, NULL, 0, false, false, &types_seen,
- all_methods);
+ std::vector<const Named_type*> seen;
+ Type::add_methods_for_type(type, NULL, 0, false, false, &seen, all_methods);
Type::build_stub_methods(gogo, type, *all_methods, location);
}
@@ -8986,7 +8985,7 @@ Type::add_methods_for_type(const Type* type,
unsigned int depth,
bool is_embedded_pointer,
bool needs_stub_method,
- Types_seen* types_seen,
+ std::vector<const Named_type*>* seen,
Methods** methods)
{
// Pointer types may not have methods.
@@ -8996,19 +8995,24 @@ Type::add_methods_for_type(const Type* type,
const Named_type* nt = type->named_type();
if (nt != NULL)
{
- std::pair<Types_seen::iterator, bool> ins = types_seen->insert(nt);
- if (!ins.second)
- return;
- }
+ for (std::vector<const Named_type*>::const_iterator p = seen->begin();
+ p != seen->end();
+ ++p)
+ {
+ if (*p == nt)
+ return;
+ }
- if (nt != NULL)
- Type::add_local_methods_for_type(nt, field_indexes, depth,
- is_embedded_pointer, needs_stub_method,
- methods);
+ seen->push_back(nt);
+
+ Type::add_local_methods_for_type(nt, field_indexes, depth,
+ is_embedded_pointer, needs_stub_method,
+ methods);
+ }
Type::add_embedded_methods_for_type(type, field_indexes, depth,
is_embedded_pointer, needs_stub_method,
- types_seen, methods);
+ seen, methods);
// If we are called with depth > 0, then we are looking at an
// anonymous field of a struct. If such a field has interface type,
@@ -9017,6 +9021,9 @@ Type::add_methods_for_type(const Type* type,
// following the usual rules for an interface type.
if (depth > 0)
Type::add_interface_methods_for_type(type, field_indexes, depth, methods);
+
+ if (nt != NULL)
+ seen->pop_back();
}
// Add the local methods for the named type NT to *METHODS. The
@@ -9062,7 +9069,7 @@ Type::add_embedded_methods_for_type(const Type* type,
unsigned int depth,
bool is_embedded_pointer,
bool needs_stub_method,
- Types_seen* types_seen,
+ std::vector<const Named_type*>* seen,
Methods** methods)
{
// Look for anonymous fields in TYPE. TYPE has fields if it is a
@@ -9106,7 +9113,7 @@ Type::add_embedded_methods_for_type(const Type* type,
(needs_stub_method
|| is_pointer
|| i > 0),
- types_seen,
+ seen,
methods);
}
}
diff --git a/gcc-4.9/gcc/go/gofrontend/types.h b/gcc-4.9/gcc/go/gofrontend/types.h
index 5fda4e728..acb06cac5 100644
--- a/gcc-4.9/gcc/go/gofrontend/types.h
+++ b/gcc-4.9/gcc/go/gofrontend/types.h
@@ -1171,14 +1171,11 @@ class Type
static tree
build_receive_return_type(tree type);
- // A hash table we use to avoid infinite recursion.
- typedef Unordered_set_hash(const Named_type*, Type_hash_identical,
- Type_identical) Types_seen;
-
// Add all methods for TYPE to the list of methods for THIS.
static void
add_methods_for_type(const Type* type, const Method::Field_indexes*,
- unsigned int depth, bool, bool, Types_seen*,
+ unsigned int depth, bool, bool,
+ std::vector<const Named_type*>*,
Methods**);
static void
@@ -1189,7 +1186,8 @@ class Type
static void
add_embedded_methods_for_type(const Type* type,
const Method::Field_indexes*,
- unsigned int depth, bool, bool, Types_seen*,
+ unsigned int depth, bool, bool,
+ std::vector<const Named_type*>*,
Methods**);
static void
diff --git a/gcc-4.9/gcc/graphite-scop-detection.c b/gcc-4.9/gcc/graphite-scop-detection.c
index b5e4a8c8c..821f0846e 100644
--- a/gcc-4.9/gcc/graphite-scop-detection.c
+++ b/gcc-4.9/gcc/graphite-scop-detection.c
@@ -219,7 +219,14 @@ graphite_can_represent_scev (tree scev)
switch (TREE_CODE (scev))
{
+ case NEGATE_EXPR:
+ case BIT_NOT_EXPR:
+ CASE_CONVERT:
+ case NON_LVALUE_EXPR:
+ return graphite_can_represent_scev (TREE_OPERAND (scev, 0));
+
case PLUS_EXPR:
+ case POINTER_PLUS_EXPR:
case MINUS_EXPR:
return graphite_can_represent_scev (TREE_OPERAND (scev, 0))
&& graphite_can_represent_scev (TREE_OPERAND (scev, 1));
@@ -241,13 +248,15 @@ graphite_can_represent_scev (tree scev)
if (!evolution_function_right_is_integer_cst (scev)
|| !graphite_can_represent_init (scev))
return false;
+ return graphite_can_represent_scev (CHREC_LEFT (scev));
default:
break;
}
/* Only affine functions can be represented. */
- if (!scev_is_linear_expression (scev))
+ if (tree_contains_chrecs (scev, NULL)
+ || !scev_is_linear_expression (scev))
return false;
return true;
diff --git a/gcc-4.9/gcc/ipa-devirt.c b/gcc-4.9/gcc/ipa-devirt.c
index 03a6c5b5d..7f07d2f94 100644
--- a/gcc-4.9/gcc/ipa-devirt.c
+++ b/gcc-4.9/gcc/ipa-devirt.c
@@ -987,6 +987,17 @@ give_up:
context->outer_type = expected_type;
context->offset = 0;
context->maybe_derived_type = true;
+ context->maybe_in_construction = true;
+ /* POD can be changed to an instance of a polymorphic type by
+ placement new. Here we play safe and assume that any
+ non-polymorphic type is POD. */
+ if ((TREE_CODE (type) != RECORD_TYPE
+ || !TYPE_BINFO (type)
+ || !polymorphic_type_binfo_p (TYPE_BINFO (type)))
+ && (TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST
+ || (offset + tree_to_uhwi (TYPE_SIZE (expected_type)) <=
+ tree_to_uhwi (TYPE_SIZE (type)))))
+ return true;
return false;
}
diff --git a/gcc-4.9/gcc/loop-init.c b/gcc-4.9/gcc/loop-init.c
index 2c2c269b8..4cc561c2e 100644
--- a/gcc-4.9/gcc/loop-init.c
+++ b/gcc-4.9/gcc/loop-init.c
@@ -94,20 +94,15 @@ loop_optimizer_init (unsigned flags)
else
{
bool recorded_exits = loops_state_satisfies_p (LOOPS_HAVE_RECORDED_EXITS);
+ bool needs_fixup = loops_state_satisfies_p (LOOPS_NEED_FIXUP);
gcc_assert (cfun->curr_properties & PROP_loops);
/* Ensure that the dominators are computed, like flow_loops_find does. */
calculate_dominance_info (CDI_DOMINATORS);
- if (loops_state_satisfies_p (LOOPS_NEED_FIXUP))
- {
- loops_state_clear (~0U);
- fix_loop_structure (NULL);
- }
-
#ifdef ENABLE_CHECKING
- else
+ if (!needs_fixup)
verify_loop_structure ();
#endif
@@ -115,6 +110,14 @@ loop_optimizer_init (unsigned flags)
if (recorded_exits)
release_recorded_exits ();
loops_state_clear (~0U);
+
+ if (needs_fixup)
+ {
+ /* Apply LOOPS_MAY_HAVE_MULTIPLE_LATCHES early as fix_loop_structure
+ re-applies flags. */
+ loops_state_set (flags & LOOPS_MAY_HAVE_MULTIPLE_LATCHES);
+ fix_loop_structure (NULL);
+ }
}
/* Apply flags to loops. */
diff --git a/gcc-4.9/gcc/lto-streamer-out.c b/gcc-4.9/gcc/lto-streamer-out.c
index 69b5a79e5..b193d730d 100644
--- a/gcc-4.9/gcc/lto-streamer-out.c
+++ b/gcc-4.9/gcc/lto-streamer-out.c
@@ -2022,6 +2022,29 @@ copy_function (struct cgraph_node *node)
lto_end_section ();
}
+/* Wrap symbol references in *TP inside a type-preserving MEM_REF. */
+
+static tree
+wrap_refs (tree *tp, int *ws, void *)
+{
+ tree t = *tp;
+ if (handled_component_p (t)
+ && TREE_CODE (TREE_OPERAND (t, 0)) == VAR_DECL)
+ {
+ tree decl = TREE_OPERAND (t, 0);
+ tree ptrtype = build_pointer_type (TREE_TYPE (decl));
+ TREE_OPERAND (t, 0) = build2 (MEM_REF, TREE_TYPE (decl),
+ build1 (ADDR_EXPR, ptrtype, decl),
+ build_int_cst (ptrtype, 0));
+ TREE_THIS_VOLATILE (TREE_OPERAND (t, 0)) = TREE_THIS_VOLATILE (decl);
+ *ws = 0;
+ }
+ else if (TREE_CODE (t) == CONSTRUCTOR)
+ ;
+ else if (!EXPR_P (t))
+ *ws = 0;
+ return NULL_TREE;
+}
/* Main entry point from the pass manager. */
@@ -2043,24 +2066,33 @@ lto_output (void)
for (i = 0; i < n_nodes; i++)
{
symtab_node *snode = lto_symtab_encoder_deref (encoder, i);
- cgraph_node *node = dyn_cast <cgraph_node> (snode);
- if (node
- && lto_symtab_encoder_encode_body_p (encoder, node)
- && !node->alias)
+ if (cgraph_node *node = dyn_cast <cgraph_node> (snode))
{
+ if (lto_symtab_encoder_encode_body_p (encoder, node)
+ && !node->alias)
+ {
#ifdef ENABLE_CHECKING
- gcc_assert (!bitmap_bit_p (output, DECL_UID (node->decl)));
- bitmap_set_bit (output, DECL_UID (node->decl));
+ gcc_assert (!bitmap_bit_p (output, DECL_UID (node->decl)));
+ bitmap_set_bit (output, DECL_UID (node->decl));
#endif
- decl_state = lto_new_out_decl_state ();
- lto_push_out_decl_state (decl_state);
- if (gimple_has_body_p (node->decl) || !flag_wpa)
- output_function (node);
- else
- copy_function (node);
- gcc_assert (lto_get_out_decl_state () == decl_state);
- lto_pop_out_decl_state ();
- lto_record_function_out_decl_state (node->decl, decl_state);
+ decl_state = lto_new_out_decl_state ();
+ lto_push_out_decl_state (decl_state);
+ if (gimple_has_body_p (node->decl) || !flag_wpa)
+ output_function (node);
+ else
+ copy_function (node);
+ gcc_assert (lto_get_out_decl_state () == decl_state);
+ lto_pop_out_decl_state ();
+ lto_record_function_out_decl_state (node->decl, decl_state);
+ }
+ }
+ else if (varpool_node *node = dyn_cast <varpool_node> (snode))
+ {
+ /* Wrap symbol references inside the ctor in a type
+ preserving MEM_REF. */
+ tree ctor = DECL_INITIAL (node->decl);
+ if (ctor && !in_lto_p)
+ walk_tree (&ctor, wrap_refs, NULL, NULL);
}
}
diff --git a/gcc-4.9/gcc/omp-low.c b/gcc-4.9/gcc/omp-low.c
index 11bb2d35a..26e484964 100644
--- a/gcc-4.9/gcc/omp-low.c
+++ b/gcc-4.9/gcc/omp-low.c
@@ -1730,6 +1730,9 @@ scan_sharing_clauses (tree clauses, omp_context *ctx)
if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_REDUCTION
&& OMP_CLAUSE_REDUCTION_PLACEHOLDER (c))
scan_array_reductions = true;
+ else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LINEAR
+ && OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c))
+ scan_array_reductions = true;
break;
case OMP_CLAUSE_SHARED:
@@ -1816,6 +1819,9 @@ scan_sharing_clauses (tree clauses, omp_context *ctx)
else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LASTPRIVATE
&& OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c))
scan_omp (&OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c), ctx);
+ else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LINEAR
+ && OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c))
+ scan_omp (&OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c), ctx);
}
/* Create a new name for omp child function. Returns an identifier. */
@@ -3803,6 +3809,14 @@ lower_lastprivate_clauses (tree clauses, tree predicate, gimple_seq *stmt_list,
OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c));
OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c) = NULL;
}
+ else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LINEAR
+ && OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c))
+ {
+ lower_omp (&OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c), ctx);
+ gimple_seq_add_seq (stmt_list,
+ OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c));
+ OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c) = NULL;
+ }
x = build_outer_var_ref (var, ctx);
if (is_reference (var))
@@ -5570,6 +5584,12 @@ expand_omp_for_generic (struct omp_region *region,
{
stmt = gimple_build_assign (endvar, iend);
gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
+ if (useless_type_conversion_p (TREE_TYPE (fd->loop.v), TREE_TYPE (iend)))
+ stmt = gimple_build_assign (fd->loop.v, iend);
+ else
+ stmt = gimple_build_assign_with_ops (NOP_EXPR, fd->loop.v, iend,
+ NULL_TREE);
+ gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
}
if (fd->collapse > 1)
expand_omp_for_init_vars (fd, &gsi, counts, inner_stmt, startvar);
@@ -5986,6 +6006,12 @@ expand_omp_for_static_nochunk (struct omp_region *region,
{
stmt = gimple_build_assign (endvar, e);
gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
+ if (useless_type_conversion_p (TREE_TYPE (fd->loop.v), TREE_TYPE (e)))
+ stmt = gimple_build_assign (fd->loop.v, e);
+ else
+ stmt = gimple_build_assign_with_ops (NOP_EXPR, fd->loop.v, e,
+ NULL_TREE);
+ gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
}
if (fd->collapse > 1)
expand_omp_for_init_vars (fd, &gsi, counts, inner_stmt, startvar);
@@ -6371,6 +6397,12 @@ expand_omp_for_static_chunk (struct omp_region *region,
{
stmt = gimple_build_assign (endvar, e);
gsi_insert_after (&si, stmt, GSI_CONTINUE_LINKING);
+ if (useless_type_conversion_p (TREE_TYPE (fd->loop.v), TREE_TYPE (e)))
+ stmt = gimple_build_assign (fd->loop.v, e);
+ else
+ stmt = gimple_build_assign_with_ops (NOP_EXPR, fd->loop.v, e,
+ NULL_TREE);
+ gsi_insert_after (&si, stmt, GSI_CONTINUE_LINKING);
}
if (fd->collapse > 1)
expand_omp_for_init_vars (fd, &si, counts, inner_stmt, startvar);
@@ -11291,45 +11323,53 @@ static tree
ipa_simd_modify_stmt_ops (tree *tp, int *walk_subtrees, void *data)
{
struct walk_stmt_info *wi = (struct walk_stmt_info *) data;
- if (!SSA_VAR_P (*tp))
+ struct modify_stmt_info *info = (struct modify_stmt_info *) wi->info;
+ tree *orig_tp = tp;
+ if (TREE_CODE (*tp) == ADDR_EXPR)
+ tp = &TREE_OPERAND (*tp, 0);
+ struct ipa_parm_adjustment *cand = NULL;
+ if (TREE_CODE (*tp) == PARM_DECL)
+ cand = ipa_get_adjustment_candidate (&tp, NULL, info->adjustments, true);
+ else
{
- /* Make sure we treat subtrees as a RHS. This makes sure that
- when examining the `*foo' in *foo=x, the `foo' get treated as
- a use properly. */
- wi->is_lhs = false;
- wi->val_only = true;
if (TYPE_P (*tp))
*walk_subtrees = 0;
- return NULL_TREE;
}
- struct modify_stmt_info *info = (struct modify_stmt_info *) wi->info;
- struct ipa_parm_adjustment *cand
- = ipa_get_adjustment_candidate (&tp, NULL, info->adjustments, true);
- if (!cand)
- return NULL_TREE;
- tree t = *tp;
- tree repl = make_ssa_name (TREE_TYPE (t), NULL);
-
- gimple stmt;
- gimple_stmt_iterator gsi = gsi_for_stmt (info->stmt);
- if (wi->is_lhs)
+ tree repl = NULL_TREE;
+ if (cand)
+ repl = unshare_expr (cand->new_decl);
+ else
{
- stmt = gimple_build_assign (unshare_expr (cand->new_decl), repl);
- gsi_insert_after (&gsi, stmt, GSI_SAME_STMT);
- SSA_NAME_DEF_STMT (repl) = info->stmt;
+ if (tp != orig_tp)
+ {
+ *walk_subtrees = 0;
+ bool modified = info->modified;
+ info->modified = false;
+ walk_tree (tp, ipa_simd_modify_stmt_ops, wi, wi->pset);
+ if (!info->modified)
+ {
+ info->modified = modified;
+ return NULL_TREE;
+ }
+ info->modified = modified;
+ repl = *tp;
+ }
+ else
+ return NULL_TREE;
}
- else
+
+ if (tp != orig_tp)
{
- /* You'd think we could skip the extra SSA variable when
- wi->val_only=true, but we may have `*var' which will get
- replaced into `*var_array[iter]' and will likely be something
- not gimple. */
- stmt = gimple_build_assign (repl, unshare_expr (cand->new_decl));
+ repl = build_fold_addr_expr (repl);
+ gimple stmt
+ = gimple_build_assign (make_ssa_name (TREE_TYPE (repl), NULL), repl);
+ repl = gimple_assign_lhs (stmt);
+ gimple_stmt_iterator gsi = gsi_for_stmt (info->stmt);
gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
+ *orig_tp = repl;
}
-
- if (!useless_type_conversion_p (TREE_TYPE (*tp), TREE_TYPE (repl)))
+ else if (!useless_type_conversion_p (TREE_TYPE (*tp), TREE_TYPE (repl)))
{
tree vce = build1 (VIEW_CONVERT_EXPR, TREE_TYPE (*tp), repl);
*tp = vce;
@@ -11338,8 +11378,6 @@ ipa_simd_modify_stmt_ops (tree *tp, int *walk_subtrees, void *data)
*tp = repl;
info->modified = true;
- wi->is_lhs = false;
- wi->val_only = true;
return NULL_TREE;
}
@@ -11358,7 +11396,7 @@ ipa_simd_modify_function_body (struct cgraph_node *node,
tree retval_array, tree iter)
{
basic_block bb;
- unsigned int i, j;
+ unsigned int i, j, l;
/* Re-use the adjustments array, but this time use it to replace
every function argument use to an offset into the corresponding
@@ -11381,6 +11419,46 @@ ipa_simd_modify_function_body (struct cgraph_node *node,
j += node->simdclone->simdlen / TYPE_VECTOR_SUBPARTS (vectype) - 1;
}
+ l = adjustments.length ();
+ for (i = 1; i < num_ssa_names; i++)
+ {
+ tree name = ssa_name (i);
+ if (name
+ && SSA_NAME_VAR (name)
+ && TREE_CODE (SSA_NAME_VAR (name)) == PARM_DECL)
+ {
+ for (j = 0; j < l; j++)
+ if (SSA_NAME_VAR (name) == adjustments[j].base
+ && adjustments[j].new_decl)
+ {
+ tree base_var;
+ if (adjustments[j].new_ssa_base == NULL_TREE)
+ {
+ base_var
+ = copy_var_decl (adjustments[j].base,
+ DECL_NAME (adjustments[j].base),
+ TREE_TYPE (adjustments[j].base));
+ adjustments[j].new_ssa_base = base_var;
+ }
+ else
+ base_var = adjustments[j].new_ssa_base;
+ if (SSA_NAME_IS_DEFAULT_DEF (name))
+ {
+ bb = single_succ (ENTRY_BLOCK_PTR_FOR_FN (cfun));
+ gimple_stmt_iterator gsi = gsi_after_labels (bb);
+ tree new_decl = unshare_expr (adjustments[j].new_decl);
+ set_ssa_default_def (cfun, adjustments[j].base, NULL_TREE);
+ SET_SSA_NAME_VAR_OR_IDENTIFIER (name, base_var);
+ SSA_NAME_IS_DEFAULT_DEF (name) = 0;
+ gimple stmt = gimple_build_assign (name, new_decl);
+ gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
+ }
+ else
+ SET_SSA_NAME_VAR_OR_IDENTIFIER (name, base_var);
+ }
+ }
+ }
+
struct modify_stmt_info info;
info.adjustments = adjustments;
diff --git a/gcc-4.9/gcc/opts.c b/gcc-4.9/gcc/opts.c
index d6c254802..506ed8490 100644
--- a/gcc-4.9/gcc/opts.c
+++ b/gcc-4.9/gcc/opts.c
@@ -431,8 +431,8 @@ static const struct default_options default_options_table[] =
{ OPT_LEVELS_1_PLUS, OPT_fguess_branch_probability, NULL, 1 },
{ OPT_LEVELS_1_PLUS, OPT_fcprop_registers, NULL, 1 },
{ OPT_LEVELS_1_PLUS, OPT_fforward_propagate, NULL, 1 },
- { OPT_LEVELS_1_PLUS, OPT_fif_conversion, NULL, 1 },
- { OPT_LEVELS_1_PLUS, OPT_fif_conversion2, NULL, 1 },
+ { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fif_conversion, NULL, 1 },
+ { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fif_conversion2, NULL, 1 },
{ OPT_LEVELS_1_PLUS, OPT_fipa_pure_const, NULL, 1 },
{ OPT_LEVELS_1_PLUS, OPT_fipa_reference, NULL, 1 },
{ OPT_LEVELS_1_PLUS, OPT_fipa_profile, NULL, 1 },
@@ -1501,9 +1501,9 @@ common_handle_option (struct gcc_options *opts,
}
if (! found)
- warning_at (loc, 0,
- "unrecognized argument to -fsanitize= option: %q.*s",
- (int) len, p);
+ error_at (loc,
+ "unrecognized argument to -fsanitize= option: %q.*s",
+ (int) len, p);
if (comma == NULL)
break;
diff --git a/gcc-4.9/gcc/passes.c b/gcc-4.9/gcc/passes.c
index 60fb13536..377b2471a 100644
--- a/gcc-4.9/gcc/passes.c
+++ b/gcc-4.9/gcc/passes.c
@@ -2109,20 +2109,6 @@ execute_all_ipa_transforms (void)
}
}
-/* Callback for do_per_function to apply all IPA transforms. */
-
-static void
-apply_ipa_transforms (void *data)
-{
- struct cgraph_node *node = cgraph_get_node (current_function_decl);
- if (!node->global.inlined_to && node->ipa_transforms_to_apply.exists ())
- {
- *(bool *)data = true;
- execute_all_ipa_transforms ();
- rebuild_cgraph_edges ();
- }
-}
-
/* Check if PASS is explicitly disabled or enabled and return
the gate status. FUNC is the function to be processed, and
GATE_STATUS is the gate status determined by pass manager by
@@ -2194,8 +2180,26 @@ execute_one_pass (opt_pass *pass)
Apply all trnasforms first. */
if (pass->type == SIMPLE_IPA_PASS)
{
+ struct cgraph_node *node;
bool applied = false;
- do_per_function (apply_ipa_transforms, (void *)&applied);
+ FOR_EACH_DEFINED_FUNCTION (node)
+ if (node->analyzed
+ && cgraph_function_with_gimple_body_p (node)
+ && (!node->clone_of || node->decl != node->clone_of->decl))
+ {
+ if (!node->global.inlined_to
+ && node->ipa_transforms_to_apply.exists ())
+ {
+ cgraph_get_body (node);
+ push_cfun (DECL_STRUCT_FUNCTION (node->decl));
+ execute_all_ipa_transforms ();
+ rebuild_cgraph_edges ();
+ free_dominance_info (CDI_DOMINATORS);
+ free_dominance_info (CDI_POST_DOMINATORS);
+ pop_cfun ();
+ applied = true;
+ }
+ }
if (applied)
symtab_remove_unreachable_nodes (true, dump_file);
/* Restore current_pass. */
diff --git a/gcc-4.9/gcc/po/ChangeLog b/gcc-4.9/gcc/po/ChangeLog
index b7e3dfb78..d9af0fe34 100644
--- a/gcc-4.9/gcc/po/ChangeLog
+++ b/gcc-4.9/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2014-05-01 Joseph Myers <joseph@codesourcery.com>
+
+ * sv.po: Update.
+
2014-04-22 Release Manager
* GCC 4.9.0 released.
diff --git a/gcc-4.9/gcc/po/sv.po b/gcc-4.9/gcc/po/sv.po
index 0bae3b6f7..b38f70811 100644
--- a/gcc-4.9/gcc/po/sv.po
+++ b/gcc-4.9/gcc/po/sv.po
@@ -16,7 +16,7 @@ msgstr ""
"Project-Id-Version: gcc 4.9-b20140202\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
"POT-Creation-Date: 2014-02-02 17:35+0000\n"
-"PO-Revision-Date: 2014-03-30 20:23+0200\n"
+"PO-Revision-Date: 2014-04-11 20:56+0200\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@@ -1493,7 +1493,7 @@ msgstr "attributen för optimeringsnivåer stämmer inte"
#: cif-code.def:125
msgid "callee refers to comdat-local symbols"
-msgstr "den anropade referarar till comdat-lokala symboler"
+msgstr "den anropade refererar till comdat-lokala symboler"
#. The remainder are real diagnostic types.
#: diagnostic.def:33
@@ -6065,7 +6065,7 @@ msgstr "Varna för missbruk av pragman"
#: c-family/c.opt:653
msgid "Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage"
-msgstr "Warn för använding av __TIME__, __DATE__ och __TIMESTAMP__"
+msgstr "Varna för användning av __TIME__, __DATE__ och __TIMESTAMP__"
#: c-family/c.opt:657
msgid "Warn if a property for an Objective-C object has no assign semantics specified"
@@ -12220,7 +12220,7 @@ msgstr "-dumpdir <kat>\tAnge katalognamn att användas för dumpar"
#: common.opt:811
msgid "Aggressively optimize loops using language constraints"
-msgstr "Optimera aggresivt slingor med användning av språkbegränsningar"
+msgstr "Optimera aggressivt slingor med användning av språkbegränsningar"
#: common.opt:815
msgid "Align the start of functions"
@@ -13449,7 +13449,7 @@ msgstr "okänd kostnadsmodell för vektorisering %qs"
#: common.opt:2332
msgid "Enables the dynamic vectorizer cost model. Preserved for backward compatibility."
-msgstr "Aktivera den dynamiska kostnadsmodellen för vekoriseraren. Bevarad för bakåtkompatibilitet."
+msgstr "Aktivera den dynamiska kostnadsmodellen för vektoriseraren. Bevarad för bakåtkompatibilitet."
#: common.opt:2336
msgid "Enables the unlimited vectorizer cost model. Preserved for backward compatibility."
@@ -19151,7 +19151,7 @@ msgstr "längden stämmer inte i uttryck"
#: c/c-array-notation.c:721 cp/cp-array-notation.c:610
#, gcc-internal-format
msgid "rank mismatch between %qE and %qE"
-msgstr "ordingen stämmer inte mellan %qE och %qE"
+msgstr "ordningen stämmer inte mellan %qE och %qE"
#. Here the original expression is printed as a "heads-up"
#. to the programmer. This is because since there is no
@@ -25782,7 +25782,7 @@ msgstr "felaktig DISPOSE-konstruktion: %d"
msgid "too much stack space to dispose of: %d"
msgstr "för mycket stackutrymme att göra av med: %d"
-# Förmodligen en felstavning i orginalet, men tills jag vet säkert
+# Förmodligen en felstavning i originalet, men tills jag vet säkert
# behåller jag den
#: config/v850/v850.c:2788
#, gcc-internal-format, gfc-internal-format
@@ -28130,7 +28130,7 @@ msgstr "den andra matchen är här"
#: c/c-parser.c:6884
#, gcc-internal-format
msgid "%<_Generic%> selector of type %qT is not compatible with any association"
-msgstr "%<_Generic%>-väljare av typ %qT är inte kompatiblem med någon association"
+msgstr "%<_Generic%>-väljare av typ %qT är inte kompatibel med någon association"
#: c/c-parser.c:7039 c/c-parser.c:7519 c/c-parser.c:7538
#, gcc-internal-format
@@ -28185,7 +28185,7 @@ msgstr "-fcilkplus måste vara aktiverat för att använda %<_Cilk_spawn%>"
#: c/c-parser.c:7505 cp/parser.c:5807
#, gcc-internal-format
msgid "consecutive %<_Cilk_spawn%> keywords are not permitted"
-msgstr "konsektiva %<_Cilk_spawn%>-nyckelord är inte tillåtet"
+msgstr "konsekutiva %<_Cilk_spawn%>-nyckelord är inte tillåtet"
#: c/c-parser.c:7573
#, gcc-internal-format
@@ -31055,7 +31055,7 @@ msgstr "%qD kan inte vara en skalär när %qD inte är det"
#: cp/cp-array-notation.c:849 cp/cp-array-notation.c:855
#, gcc-internal-format
msgid "rank mismatch with controlling expression of parent if-statement"
-msgstr "ordingen stämmer inte med det styrande uttrycket i förälder-if-satsen"
+msgstr "ordningen stämmer inte med det styrande uttrycket i förälder-if-satsen"
#: cp/cp-array-notation.c:1250
#, gcc-internal-format
@@ -31090,7 +31090,7 @@ msgstr "startindex och längdfält är nödvändiga för att använda vektornota
#: cp/cp-array-notation.c:1422
#, gcc-internal-format
msgid "array notation cannot be used with function type"
-msgstr "vektornotation kan inte användas användas med en funktionstyp"
+msgstr "vektornotation kan inte användas med en funktionstyp"
#: cp/cp-array-notation.c:1432
#, gcc-internal-format
@@ -31100,7 +31100,7 @@ msgstr "ordningen på en vektornotations trippels startindex är inte noll"
#: cp/cp-array-notation.c:1438
#, gcc-internal-format
msgid "rank of an array notation triplet%'s length is not zero"
-msgstr "ordingen på en vektornotations trippels längd är inte noll"
+msgstr "ordningen på en vektornotations trippels längd är inte noll"
#: cp/cp-array-notation.c:1443
#, gcc-internal-format
@@ -31450,7 +31450,7 @@ msgstr "standardtypkonvertering kan inte härleda mallargumentet för %qD"
#: cp/cvt.c:1659
#, gcc-internal-format
msgid "ambiguous default type conversion from %qT"
-msgstr "tvetydig standartypkonvertering från %qT"
+msgstr "tvetydig standardtypkonvertering från %qT"
#: cp/cvt.c:1661
#, gcc-internal-format
@@ -33747,7 +33747,7 @@ msgstr "%qD är redan definierad i klassen %qT"
#: cp/decl.c:14531 cp/decl2.c:4673
#, gcc-internal-format
msgid "use of %qD before deduction of %<auto%>"
-msgstr "använding av %qD före härledning av %<auto%>"
+msgstr "användning av %qD före härledning av %<auto%>"
#: cp/decl2.c:322
#, gcc-internal-format
@@ -36027,7 +36027,7 @@ msgstr "användning av %<auto%> i lambdaparameterdeklarationer är endast tillg
#: cp/parser.c:14516
#, gcc-internal-format
msgid "use of %<auto%> in parameter declaration only available with -std=c++1y or -std=gnu++1y"
-msgstr "använding av %<auto%> i parameterdeklarationer är endast tillgängligt med -std=c++1y eller -std=gnu++1y"
+msgstr "användning av %<auto%> i parameterdeklarationer är endast tillgängligt med -std=c++1y eller -std=gnu++1y"
#: cp/parser.c:14521
#, gcc-internal-format
@@ -37288,7 +37288,7 @@ msgstr " men %d behövs"
#: cp/pt.c:4861
#, gcc-internal-format
msgid "template arguments to %qD do not match original template %qD"
-msgstr "mallargument till %qD stämmer inte med orginalmallen %qD"
+msgstr "mallargument till %qD stämmer inte med originalmallen %qD"
#: cp/pt.c:4865
#, gcc-internal-format
@@ -38326,7 +38326,7 @@ msgstr "det går inte att applicera %<offsetof%> på destrueraren %<~%T%>"
#: cp/semantics.c:3800
#, gcc-internal-format
msgid "second operand of %<offsetof%> is neither a single identifier nor a sequence of member accesses and array references"
-msgstr "andra operanden till %<offsetof%> är varken en ensam idientifierare eller en sekvens av medlemsåtkomster och vektorreferenser"
+msgstr "andra operanden till %<offsetof%> är varken en ensam identifierare eller en sekvens av medlemsåtkomster och vektorreferenser"
#: cp/semantics.c:3808
#, gcc-internal-format
@@ -48120,7 +48120,7 @@ msgstr "Variabeln ”%s” vid %L av TYPE(C_PTR) eller TYPE(C_FUNPTR) får inte
#: fortran/resolve.c:13229
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar, which is not a coarray"
-msgstr "Variabeln ”%s” vid %L med co-vektorkomponent skall vara en skalär som inte är en pekare eller allokerbar och inte en co-vaktor"
+msgstr "Variabeln ”%s” vid %L med co-vektorkomponent skall vara en skalär som inte är en pekare eller allokerbar och inte en co-vektor"
#: fortran/resolve.c:13244
#, gcc-internal-format, gfc-internal-format
@@ -49576,12 +49576,12 @@ msgstr "tidigare definition här"
#: lto/lto-symtab.c:404
#, gcc-internal-format
msgid "type of %qD does not match original declaration"
-msgstr "typen på %qD stämmer inte med orginaldeklarationen"
+msgstr "typen på %qD stämmer inte med originaldeklarationen"
#: lto/lto-symtab.c:412
#, gcc-internal-format
msgid "alignment of %qD is bigger than original declaration"
-msgstr "justering av %qD är större än orginaldeklarationen"
+msgstr "justering av %qD är större än originaldeklarationen"
#: lto/lto-symtab.c:418 lto/lto-symtab.c:517
#, gcc-internal-format
diff --git a/gcc-4.9/gcc/testsuite/ChangeLog b/gcc-4.9/gcc/testsuite/ChangeLog
index 4c09a1e05..104703076 100644
--- a/gcc-4.9/gcc/testsuite/ChangeLog
+++ b/gcc-4.9/gcc/testsuite/ChangeLog
@@ -1,3 +1,297 @@
+2014-05-14 Matthias Klose <doko@ubuntu.com>
+
+ PR driver/61106
+ * gcc-dg/unused-8a.c: Remove.
+
+2014-05-13 Peter Bergner <bergner@vnet.ibm.com>
+
+ * lib/target-support.exp (check_dfp_hw_available): New function.
+ (is-effective-target): Check $arg for dfp_hw.
+ (is-effective-target-keyword): Likewise.
+ * gcc.target/powerpc/pack03.c: (dg-require-effective-target):
+ Change target to dfp_hw.
+
+2014-05-13 Jeff Law <law@redhat.com>
+
+ Backports from mainline
+
+ 2014-05-08 Jeff Law <law@redhat.com>
+
+ PR tree-optimization/61009
+ * g++.dg/tree-ssa/pr61009.C: New test.
+
+ 2014-04-23 Jeff Law <law@redhat.com>
+
+ PR tree-optimization/60902
+ * gcc.target/i386/pr60902.c: New test.
+
+2014-05-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/61060
+ * gcc.dg/pr61060.c: New test.
+
+2014-05-12 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
+
+ Backport from mainline
+ 2014-05-12 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
+
+ PR target/60991
+ * gcc.target/avr/pr60991.c: New testcase.
+
+2014-05-10 Jerry DeLisle <jvdelisle@gcc.gnu>
+
+ Backport from trunk.
+ PR libfortran/61049
+ * gfortran.dg/list_read_13.f: New test.
+
+2014-05-09 Georg-Johann Lay <avr@gjlay.de>
+
+ Backport from 2014-05-09 trunk r210267
+
+ PR target/61055
+ * gcc.target/avr/torture/pr61055.c: New test.
+
+2014-05-08 Matthias Klose <doko@ubuntu.com>
+
+ PR driver/61106
+ * gcc-dg/unused-8a.c: New.
+ * gcc-dg/unused-8b.c: Likewise.
+
+2014-05-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/61083
+ * g++.dg/cpp0x/sfinae50.C: New.
+
+2014-05-07 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57864
+ * gcc.dg/torture/pr57864.c: New testcase.
+
+2014-05-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/60999
+ * g++.dg/cpp0x/nsdmi-template9.C: New.
+ * g++.dg/cpp0x/nsdmi-template10.C: Likewise.
+
+2014-05-04 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/60965
+ * g++.dg/ipa/devirt-31.C: New testcase.
+ * g++.dg/ipa/devirt-11.C: Adjust testcase.
+
+2014-05-04 Peter Bergner <bergner@vnet.ibm.com>
+
+ * gcc.target/powerpc/pack02.c (dg-options): Add -mhard-float.
+ (dg-require-effective-target): Change target to powerpc_fprs.
+ * gcc.target/powerpc/pack03.c (dg-options): Add -mhard-dfp.
+ (dg-require-effective-target): Change target to dfprt.
+
+2014-05-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ PR tree-optimization/60930
+ * gcc.dg/torture/pr60930.c: New test.
+
+2014-04-30 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Back port from mainline
+ 2014-04-24 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ * gcc.target/powerpc/pack01.c: New test to test the new pack and
+ unpack builtin functionss for 128-bit types.
+ * gcc.target/powerpc/pack02.c: Likewise.
+ * gcc.target/powerpc/pack03.c: Likewise.
+ * gcc.target/powerpc/extend-divide-1.c: New test to test extended
+ divide builtin functionss.
+ * gcc.target/powerpc/extend-divide-2.c: Likewise.
+ * gcc.target/powerpc/bcd-1.c: New test for the new BCD builtin
+ functions.
+ * gcc.target/powerpc/bcd-2.c: Likewise.
+ * gcc.target/powerpc/bcd-3.c: Likewise.
+ * gcc.target/powerpc/dfp-builtin-1.c: New test for the new DFP
+ builtin functionss.
+ * gcc.target/powerpc/dfp-builtin-2.c: Likewise.
+
+2014-04-29 Pat Haugen <pthaugen@us.ibm.com>
+
+ Backport from mainline
+ 2014-04-17 Pat Haugen <pthaugen@us.ibm.com>
+
+ * gcc.target/powerpc/ti_math1.c: New.
+ * gcc.target/powerpc/ti_math2.c: New.
+
+2014-04-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/60971
+ * c-c++-common/turtore/pr60971.c: New test.
+
+2014-04-26 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.dg/tree-ssa/alias-30.c (dg-options): Dump only fre1 details.
+ * gcc.dg/vect/pr60505.c: Cleanup vect tree dump.
+ * g++.dg/ipa/devirt-27.C (dg-options): Remove -fdump-ipa-devirt.
+
+2014-04-25 Uros Bizjak <ubizjak@gmail.com>
+
+ * c-c++-common/gomp/pr60823-2.c: Require effective target
+ vect_simd_clones.
+
+2014-04-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/60960
+ * gcc.c-torture/execute/pr60960.c: New test.
+
+2014-04-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.c-torture/execute/20140425-1.c: New test.
+
+2014-04-25 Richard Biener <rguenther@suse.de>
+
+ PR ipa/60912
+ * g++.dg/opt/pr60912.C: New testcase.
+
+2014-04-25 Richard Biener <rguenther@suse.de>
+
+ PR ipa/60911
+ * gcc.dg/lto/pr60911_0.c: New testcase.
+
+2014-04-24 Jakub Jelinek <jakub@redhat.com>
+
+ * c-c++-common/gomp/atomic-16.c: Remove all dg-error directives.
+ Replace load with read and store with write.
+
+2014-04-23 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2014-04-21 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/60909
+ * gcc.target/i386/pr60909-1.c: New test.
+ * gcc.target/i386/pr60909-2.c: Ditto.
+
+2014-04-23 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/60903
+ * gcc.dg/torture/pr60903.c: New testcase.
+
+2014-04-23 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-04-14 Richard Biener <rguenther@suse.de>
+
+ PR lto/60720
+ * gcc.dg/lto/pr60720_0.c: New testcase.
+ * gcc.dg/lto/pr60720_1.c: Likewise.
+
+2014-04-23 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/60895
+ * g++.dg/torture/pr60895.C: New testcase.
+
+2014-04-23 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/60891
+ * gcc.dg/torture/pr60891.c: New testcase.
+
+2014-04-22 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Backport from mainline
+ 2014-04-21 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/60735
+ * gcc.target/powerpc/pr60735.c: New test. Insure _Decimal64 does
+ not cause errors if -mspe.
+
+2014-04-22 Tobias Burnus <burnus@net-b.de>
+
+ Backport from mainline
+ 2014-04-11 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/58880
+ PR fortran/60495
+ * gfortran.dg/finalize_25.f90: New.
+
+2014-04-22 H.J. Lu <hongjiu.lu@intel.com>
+
+ Backport from mainline
+ 2014-04-22 H.J. Lu <hongjiu.lu@intel.com>
+
+ * gcc.target/i386/pr60868.c: New testcase.
+
+2014-04-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/59073
+ * c-c++-common/gomp/pr59073.c: New test.
+
+2014-04-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * gcc.dg/vmx/merge-vsx.c: Add V4SI and V4SF tests.
+ * gcc.dg/vmx/merge-vsx-be-order.c: Likewise.
+
+2014-04-22 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-04-14 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/55022
+ * gcc.dg/graphite/pr55022.c: New testcase.
+
+2014-04-22 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-04-17 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/60849
+ * g++.dg/opt/pr60849.C: New testcase.
+
+2014-04-22 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-04-17 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/60841
+ * gcc.dg/vect/pr60841.c: New testcase.
+
+2014-04-22 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-04-17 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/60836
+ * g++.dg/vect/pr60836.cc: New testcase.
+
+2014-04-22 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-04-14 Richard Biener <rguenther@suse.de>
+ Marc Glisse <marc.glisse@inria.fr>
+
+ PR c/60819
+ * gcc.target/i386/vec-may_alias.c: New testcase.
+
+2014-04-22 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2014-04-14 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/59817
+ PR tree-optimization/60453
+ * gfortran.dg/graphite/pr59817.f: New testcase.
+ * gcc.dg/graphite/pr59817-1.c: Likewise.
+ * gcc.dg/graphite/pr59817-2.c: Likewise.
+
+2014-04-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/60823
+ * c-c++-common/gomp/pr60823-1.c: New test.
+ * c-c++-common/gomp/pr60823-2.c: New test.
+ * c-c++-common/gomp/pr60823-3.c: New test.
+
+ Backported from mainline
+ 2014-04-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/60844
+ * gcc.dg/pr60844.c: New test.
+
2014-04-22 Release Manager
* GCC 4.9.0 released.
@@ -51,7 +345,7 @@
2014-04-12 Jerry DeLisle <jvdelisle@gcc.gnu>
PR libfortran/60810
- gfortran.dg/arrayio_13.f90: New test.
+ * gfortran.dg/arrayio_13.f90: New test.
2014-04-11 Steve Ellcey <sellcey@mips.com>
Jakub Jelinek <jakub@redhat.com>
@@ -135,8 +429,7 @@
2014-04-08 Jason Merrill <jason@redhat.com>
- * lib/gcc-dg.exp (dg-build-dso): Reset dg-do-what-default to
- compile.
+ * lib/gcc-dg.exp (dg-build-dso): Reset dg-do-what-default to compile.
2014-04-08 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
@@ -256,10 +549,10 @@
2014-04-04 Martin Jambor <mjambor@suse.cz>
PR ipa/60640
- * g++.dg/ipa/pr60640-1.C: New test.
- * g++.dg/ipa/pr60640-2.C: Likewise.
- * g++.dg/ipa/pr60640-3.C: Likewise.
- * g++.dg/ipa/pr60640-4.C: Likewise.
+ * g++.dg/ipa/pr60640-1.C: New test.
+ * g++.dg/ipa/pr60640-2.C: Likewise.
+ * g++.dg/ipa/pr60640-3.C: Likewise.
+ * g++.dg/ipa/pr60640-4.C: Likewise.
2014-04-04 Jeff Law <law@redhat.com>
@@ -371,7 +664,7 @@
2014-04-01 Fabien Chêne <fabien@gcc.gnu.org>
- * g++.dg/init/ctor4.C: Adjust.
+ * g++.dg/init/ctor4.C: Adjust.
* g++.dg/init/ctor4-1.C: New.
* g++.dg/cpp0x/defaulted2.C: Adjust.
@@ -459,8 +752,8 @@
2014-03-27 Jeff Law <law@redhat.com>
- PR target/60648
- * g++.dg/pr60648.C: New test.
+ PR target/60648
+ * g++.dg/pr60648.C: New test.
2014-03-28 Adam Butcher <adam@jessamine.co.uk>
@@ -493,14 +786,13 @@
2014-03-28 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
- * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Remove s390 special
- option.
+ * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Remove s390 special option.
* lib/target-supports.exp: Return true for s390
- in check_effective_logical_op_short_circuit.
+ in check_effective_logical_op_short_circuit.
2014-03-28 Kirill Yukhin <kirill.yukhin@intel.com>
- * gcc.target/i386/avx512f-vshuff32x4-2.c: Fix initialization
+ * gcc.target/i386/avx512f-vshuff32x4-2.c: Fix initialization
of second source operand.
* gcc.target/i386/avx512f-vshuff64x2-2.c: Ditto.
* gcc.target/i386/avx512f-vshufi32x4-2.c: Ditto.
@@ -635,8 +927,8 @@
2014-03-24 Marek Polacek <polacek@redhat.com>
- * c-c++-common/ubsan/div-by-zero-4.c: Don't include limits.h. Define
- INT_MIN.
+ * c-c++-common/ubsan/div-by-zero-4.c: Don't include limits.h.
+ Define INT_MIN.
* c-c++-common/ubsan/overflow-1.c: Check for unwanted output.
* c-c++-common/ubsan/overflow-add-1.c: Likewise.
* c-c++-common/ubsan/overflow-mul-1.c: Likewise.
@@ -721,8 +1013,7 @@
2014-03-21 Tobias Burnus <burnus@net-b.de>
PR fortran/60599
- * lib/gcc-dg.exp (scan-module): Uncompress .mod files for
- reading.
+ * lib/gcc-dg.exp (scan-module): Uncompress .mod files for reading.
2014-03-20 Jakub Jelinek <jakub@redhat.com>
@@ -1540,8 +1831,7 @@
2014-02-19 Paul Pluzhnikov <ppluzhnikov@google.com>
- * gcc.dg/vect/no-vfa-vect-depend-2.c (main1): Fix buffer
- overflow.
+ * gcc.dg/vect/no-vfa-vect-depend-2.c (main1): Fix buffer overflow.
2014-02-19 Jakub Jelinek <jakub@redhat.com>
@@ -1850,8 +2140,7 @@
2014-02-10 Jakub Jelinek <jakub@redhat.com>
- * gcc.dg/vect/pr59984.c: Require effective target
- vect_simd_clones.
+ * gcc.dg/vect/pr59984.c: Require effective target vect_simd_clones.
2014-02-09 Paul Thomas <pault@gcc.gnu.org>
@@ -3098,8 +3387,8 @@
* gfortran.dg/vect/fast-math-mgrid-resid.f: Change
-fdump-tree-optimized to -fdump-tree-pcom-details in dg-options and
cleanup-tree-dump from optimized to pcom. Remove scan-tree-dump-times
- for vect_\[^\\n\]*\\+, add scan-tree-dump-times for no suitable chains and
- Executing predictive commoning without unrolling.
+ for vect_\[^\\n\]*\\+, add scan-tree-dump-times for no suitable
+ chains and Executing predictive commoning without unrolling.
2014-01-14 Kirill Yukhin <kirill.yukhin@intel.com>
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/gomp/atomic-16.c b/gcc-4.9/gcc/testsuite/c-c++-common/gomp/atomic-16.c
index 87fbaa233..9332396ea 100644
--- a/gcc-4.9/gcc/testsuite/c-c++-common/gomp/atomic-16.c
+++ b/gcc-4.9/gcc/testsuite/c-c++-common/gomp/atomic-16.c
@@ -7,28 +7,28 @@ void
foo ()
{
int v;
- #pragma omp atomic seq_cst load /* { dg-error "expected end of line" } */
- v = x; /* { dg-error "invalid form" } */
- #pragma omp atomic seq_cst, load /* { dg-error "expected end of line" } */
- v = x; /* { dg-error "invalid form" } */
- #pragma omp atomic seq_cst store /* { dg-error "expected end of line" } */
- x = v; /* { dg-error "invalid form" } */
- #pragma omp atomic seq_cst ,store /* { dg-error "expected end of line" } */
- x = v; /* { dg-error "invalid form" } */
- #pragma omp atomic seq_cst update /* { dg-error "expected end of line" } */
+ #pragma omp atomic seq_cst read
+ v = x;
+ #pragma omp atomic seq_cst, read
+ v = x;
+ #pragma omp atomic seq_cst write
+ x = v;
+ #pragma omp atomic seq_cst ,write
+ x = v;
+ #pragma omp atomic seq_cst update
x += v;
- #pragma omp atomic seq_cst , update /* { dg-error "expected end of line" } */
+ #pragma omp atomic seq_cst , update
x += v;
- #pragma omp atomic seq_cst capture /* { dg-error "expected end of line" } */
- v = x += 2; /* { dg-error "invalid form" } */
- #pragma omp atomic seq_cst, capture /* { dg-error "expected end of line" } */
- v = x += 2; /* { dg-error "invalid form" } */
- #pragma omp atomic load , seq_cst /* { dg-error "expected end of line" } */
- v = x; /* { dg-error "invalid form" } */
- #pragma omp atomic store ,seq_cst /* { dg-error "expected end of line" } */
- x = v; /* { dg-error "invalid form" } */
- #pragma omp atomic update, seq_cst /* { dg-error "expected end of line" } */
+ #pragma omp atomic seq_cst capture
+ v = x += 2;
+ #pragma omp atomic seq_cst, capture
+ v = x += 2;
+ #pragma omp atomic read , seq_cst
+ v = x;
+ #pragma omp atomic write ,seq_cst
+ x = v;
+ #pragma omp atomic update, seq_cst
x += v;
- #pragma omp atomic capture, seq_cst /* { dg-error "expected end of line" } */
+ #pragma omp atomic capture, seq_cst
v = x += 2;
}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-11.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-11.C
index d30d56cff..ca8ea4cc2 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-11.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-11.C
@@ -45,5 +45,5 @@ bar ()
/* While inlining function called once we should devirtualize a new call to fn2
and two to fn3. While doing so the new symbol for fn2 needs to be
introduced. */
-/* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target" 3 "inline" } } */
+/* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target" 1 "inline" } } */
/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-27.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-27.C
index 1dcf76cc3..749f40af1 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-27.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-27.C
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -fdump-ipa-devirt -fdump-tree-optimized" } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
struct A
{
int a;
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/alias-30.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/alias-30.c
index addf12840..7ef830d19 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/alias-30.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/alias-30.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-fre-details" } */
+/* { dg-options "-O -fdump-tree-fre1-details" } */
extern int posix_memalign(void **memptr,
__SIZE_TYPE__ alignment, __SIZE_TYPE__ size);
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60505.c b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60505.c
index 694051320..70e2ec06f 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60505.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60505.c
@@ -10,3 +10,5 @@ void foo(char *in, char *out, int num)
out[i] = (ovec[i] = in[i]);
out[num] = ovec[num/2];
}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c b/gcc-4.9/gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c
index 440ac9a00..56e0b0e6c 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c
@@ -21,10 +21,19 @@ static void test()
vector long long vlb = {0,1};
vector double vda = {-2.0,-1.0};
vector double vdb = {0.0,1.0};
+ vector unsigned int vuia = {0,1,2,3};
+ vector unsigned int vuib = {4,5,6,7};
+ vector signed int vsia = {-4,-3,-2,-1};
+ vector signed int vsib = {0,1,2,3};
+ vector float vfa = {-4.0,-3.0,-2.0,-1.0};
+ vector float vfb = {0.0,1.0,2.0,3.0};
/* Result vectors. */
vector long long vlh, vll;
vector double vdh, vdl;
+ vector unsigned int vuih, vuil;
+ vector signed int vsih, vsil;
+ vector float vfh, vfl;
/* Expected result vectors. */
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
@@ -32,20 +41,44 @@ static void test()
vector long long vlrl = {0,-2};
vector double vdrh = {1.0,-1.0};
vector double vdrl = {0.0,-2.0};
+ vector unsigned int vuirh = {6,2,7,3};
+ vector unsigned int vuirl = {4,0,5,1};
+ vector signed int vsirh = {2,-2,3,-1};
+ vector signed int vsirl = {0,-4,1,-3};
+ vector float vfrh = {2.0,-2.0,3.0,-1.0};
+ vector float vfrl = {0.0,-4.0,1.0,-3.0};
#else
vector long long vlrh = {-2,0};
vector long long vlrl = {-1,1};
vector double vdrh = {-2.0,0.0};
vector double vdrl = {-1.0,1.0};
+ vector unsigned int vuirh = {0,4,1,5};
+ vector unsigned int vuirl = {2,6,3,7};
+ vector signed int vsirh = {-4,0,-3,1};
+ vector signed int vsirl = {-2,2,-1,3};
+ vector float vfrh = {-4.0,0.0,-3.0,1.0};
+ vector float vfrl = {-2.0,2.0,-1.0,3.0};
#endif
vlh = vec_mergeh (vla, vlb);
vll = vec_mergel (vla, vlb);
vdh = vec_mergeh (vda, vdb);
vdl = vec_mergel (vda, vdb);
+ vuih = vec_mergeh (vuia, vuib);
+ vuil = vec_mergel (vuia, vuib);
+ vsih = vec_mergeh (vsia, vsib);
+ vsil = vec_mergel (vsia, vsib);
+ vfh = vec_mergeh (vfa, vfb );
+ vfl = vec_mergel (vfa, vfb );
check (vec_long_long_eq (vlh, vlrh), "vlh");
check (vec_long_long_eq (vll, vlrl), "vll");
check (vec_double_eq (vdh, vdrh), "vdh" );
check (vec_double_eq (vdl, vdrl), "vdl" );
+ check (vec_all_eq (vuih, vuirh), "vuih");
+ check (vec_all_eq (vuil, vuirl), "vuil");
+ check (vec_all_eq (vsih, vsirh), "vsih");
+ check (vec_all_eq (vsil, vsirl), "vsil");
+ check (vec_all_eq (vfh, vfrh), "vfh");
+ check (vec_all_eq (vfl, vfrl), "vfl");
}
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/vmx/merge-vsx.c b/gcc-4.9/gcc/testsuite/gcc.dg/vmx/merge-vsx.c
index 851f35bd3..40693e95b 100644
--- a/gcc-4.9/gcc/testsuite/gcc.dg/vmx/merge-vsx.c
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/vmx/merge-vsx.c
@@ -21,24 +21,51 @@ static void test()
vector long long vlb = {0,1};
vector double vda = {-2.0,-1.0};
vector double vdb = {0.0,1.0};
+ vector unsigned int vuia = {0,1,2,3};
+ vector unsigned int vuib = {4,5,6,7};
+ vector signed int vsia = {-4,-3,-2,-1};
+ vector signed int vsib = {0,1,2,3};
+ vector float vfa = {-4.0,-3.0,-2.0,-1.0};
+ vector float vfb = {0.0,1.0,2.0,3.0};
/* Result vectors. */
vector long long vlh, vll;
vector double vdh, vdl;
+ vector unsigned int vuih, vuil;
+ vector signed int vsih, vsil;
+ vector float vfh, vfl;
/* Expected result vectors. */
vector long long vlrh = {-2,0};
vector long long vlrl = {-1,1};
vector double vdrh = {-2.0,0.0};
vector double vdrl = {-1.0,1.0};
+ vector unsigned int vuirh = {0,4,1,5};
+ vector unsigned int vuirl = {2,6,3,7};
+ vector signed int vsirh = {-4,0,-3,1};
+ vector signed int vsirl = {-2,2,-1,3};
+ vector float vfrh = {-4.0,0.0,-3.0,1.0};
+ vector float vfrl = {-2.0,2.0,-1.0,3.0};
vlh = vec_mergeh (vla, vlb);
vll = vec_mergel (vla, vlb);
vdh = vec_mergeh (vda, vdb);
vdl = vec_mergel (vda, vdb);
+ vuih = vec_mergeh (vuia, vuib);
+ vuil = vec_mergel (vuia, vuib);
+ vsih = vec_mergeh (vsia, vsib);
+ vsil = vec_mergel (vsia, vsib);
+ vfh = vec_mergeh (vfa, vfb );
+ vfl = vec_mergel (vfa, vfb );
check (vec_long_long_eq (vlh, vlrh), "vlh");
check (vec_long_long_eq (vll, vlrl), "vll");
check (vec_double_eq (vdh, vdrh), "vdh" );
check (vec_double_eq (vdl, vdrl), "vdl" );
+ check (vec_all_eq (vuih, vuirh), "vuih");
+ check (vec_all_eq (vuil, vuirl), "vuil");
+ check (vec_all_eq (vsih, vsirh), "vsih");
+ check (vec_all_eq (vsil, vsirl), "vsil");
+ check (vec_all_eq (vfh, vfrh), "vfh");
+ check (vec_all_eq (vfl, vfrl), "vfl");
}
diff --git a/gcc-4.9/gcc/testsuite/lib/target-supports.exp b/gcc-4.9/gcc/testsuite/lib/target-supports.exp
index 57b10d0a8..7d296d902 100644
--- a/gcc-4.9/gcc/testsuite/lib/target-supports.exp
+++ b/gcc-4.9/gcc/testsuite/lib/target-supports.exp
@@ -1956,6 +1956,32 @@ proc check_effective_target_dfprt { } {
}]
}
+# Return 1 if the target supports executing DFP hardware instructions,
+# 0 otherwise. Cache the result.
+
+proc check_dfp_hw_available { } {
+ return [check_cached_effective_target dfp_hw_available {
+ # For now, disable on Darwin
+ if { [istarget powerpc-*-eabi] || [istarget powerpc*-*-eabispe] || [istarget *-*-darwin*]} {
+ expr 0
+ } else {
+ check_runtime_nocache dfp_hw_available {
+ volatile _Decimal64 r;
+ volatile _Decimal64 a = 4.0DD;
+ volatile _Decimal64 b = 2.0DD;
+ int main()
+ {
+ asm volatile ("dadd %0,%1,%2" : "=d" (r) : "d" (a), "d" (b));
+ asm volatile ("dsub %0,%1,%2" : "=d" (r) : "d" (a), "d" (b));
+ asm volatile ("dmul %0,%1,%2" : "=d" (r) : "d" (a), "d" (b));
+ asm volatile ("ddiv %0,%1,%2" : "=d" (r) : "d" (a), "d" (b));
+ return 0;
+ }
+ } "-mcpu=power6 -mhard-float"
+ }
+ }]
+}
+
# Return 1 if the target supports compiling and assembling UCN, 0 otherwise.
proc check_effective_target_ucn_nocache { } {
@@ -4919,6 +4945,7 @@ proc is-effective-target { arg } {
"vsx_hw" { set selected [check_vsx_hw_available] }
"p8vector_hw" { set selected [check_p8vector_hw_available] }
"ppc_recip_hw" { set selected [check_ppc_recip_hw_available] }
+ "dfp_hw" { set selected [check_dfp_hw_available] }
"named_sections" { set selected [check_named_sections_available] }
"gc_sections" { set selected [check_gc_sections_available] }
"cxa_atexit" { set selected [check_cxa_atexit_available] }
@@ -4941,6 +4968,7 @@ proc is-effective-target-keyword { arg } {
"vsx_hw" { return 1 }
"p8vector_hw" { return 1 }
"ppc_recip_hw" { return 1 }
+ "dfp_hw" { return 1 }
"named_sections" { return 1 }
"gc_sections" { return 1 }
"cxa_atexit" { return 1 }
diff --git a/gcc-4.9/gcc/tree-dfa.c b/gcc-4.9/gcc/tree-dfa.c
index fcf8d80fd..a1f275874 100644
--- a/gcc-4.9/gcc/tree-dfa.c
+++ b/gcc-4.9/gcc/tree-dfa.c
@@ -343,7 +343,7 @@ set_ssa_default_def (struct function *fn, tree var, tree def)
{
loc = htab_find_slot_with_hash (DEFAULT_DEFS (fn), &in,
DECL_UID (var), NO_INSERT);
- if (*loc)
+ if (loc)
{
SSA_NAME_IS_DEFAULT_DEF (*(tree *)loc) = false;
htab_clear_slot (DEFAULT_DEFS (fn), loc);
diff --git a/gcc-4.9/gcc/tree-inline.c b/gcc-4.9/gcc/tree-inline.c
index 429324138..04d099f61 100644
--- a/gcc-4.9/gcc/tree-inline.c
+++ b/gcc-4.9/gcc/tree-inline.c
@@ -1485,6 +1485,11 @@ remap_gimple_stmt (gimple stmt, copy_body_data *id)
/* Create a new deep copy of the statement. */
copy = gimple_copy (stmt);
+ /* Clear flags that need revisiting. */
+ if (is_gimple_call (copy)
+ && gimple_call_tail_p (copy))
+ gimple_call_set_tail (copy, false);
+
/* Remap the region numbers for __builtin_eh_{pointer,filter},
RESX and EH_DISPATCH. */
if (id->eh_map)
@@ -3119,7 +3124,8 @@ declare_return_variable (copy_body_data *id, tree return_slot, tree modify_dest,
{
var = return_slot;
gcc_assert (TREE_CODE (var) != SSA_NAME);
- TREE_ADDRESSABLE (var) |= TREE_ADDRESSABLE (result);
+ if (TREE_ADDRESSABLE (result))
+ mark_addressable (var);
}
if ((TREE_CODE (TREE_TYPE (result)) == COMPLEX_TYPE
|| TREE_CODE (TREE_TYPE (result)) == VECTOR_TYPE)
diff --git a/gcc-4.9/gcc/tree-nested.c b/gcc-4.9/gcc/tree-nested.c
index df6923f76..9c175de4e 100644
--- a/gcc-4.9/gcc/tree-nested.c
+++ b/gcc-4.9/gcc/tree-nested.c
@@ -1082,6 +1082,11 @@ convert_nonlocal_omp_clauses (tree *pclauses, struct walk_stmt_info *wi)
need_stmts = true;
goto do_decl_clause;
+ case OMP_CLAUSE_LINEAR:
+ if (OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause))
+ need_stmts = true;
+ goto do_decl_clause;
+
case OMP_CLAUSE_PRIVATE:
case OMP_CLAUSE_FIRSTPRIVATE:
case OMP_CLAUSE_COPYPRIVATE:
@@ -1157,6 +1162,12 @@ convert_nonlocal_omp_clauses (tree *pclauses, struct walk_stmt_info *wi)
&OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause));
break;
+ case OMP_CLAUSE_LINEAR:
+ walk_body (convert_nonlocal_reference_stmt,
+ convert_nonlocal_reference_op, info,
+ &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause));
+ break;
+
default:
break;
}
@@ -1605,6 +1616,11 @@ convert_local_omp_clauses (tree *pclauses, struct walk_stmt_info *wi)
need_stmts = true;
goto do_decl_clause;
+ case OMP_CLAUSE_LINEAR:
+ if (OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause))
+ need_stmts = true;
+ goto do_decl_clause;
+
case OMP_CLAUSE_PRIVATE:
case OMP_CLAUSE_FIRSTPRIVATE:
case OMP_CLAUSE_COPYPRIVATE:
@@ -1685,6 +1701,12 @@ convert_local_omp_clauses (tree *pclauses, struct walk_stmt_info *wi)
&OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause));
break;
+ case OMP_CLAUSE_LINEAR:
+ walk_body (convert_local_reference_stmt,
+ convert_local_reference_op, info,
+ &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause));
+ break;
+
default:
break;
}
diff --git a/gcc-4.9/gcc/tree-ssa-loop-im.c b/gcc-4.9/gcc/tree-ssa-loop-im.c
index c75f25749..1b4019041 100644
--- a/gcc-4.9/gcc/tree-ssa-loop-im.c
+++ b/gcc-4.9/gcc/tree-ssa-loop-im.c
@@ -1544,15 +1544,6 @@ analyze_memory_references (void)
struct loop *loop, *outer;
unsigned i, n;
-#if 0
- /* Initialize bb_loop_postorder with a mapping from loop->num to
- its postorder index. */
- i = 0;
- bb_loop_postorder = XNEWVEC (unsigned, number_of_loops (cfun));
- FOR_EACH_LOOP (loop, LI_FROM_INNERMOST)
- bb_loop_postorder[loop->num] = i++;
-#endif
-
/* Collect all basic-blocks in loops and sort them after their
loops postorder. */
i = 0;
@@ -1807,6 +1798,7 @@ execute_sm_if_changed (edge ex, tree mem, tree tmp_var, tree flag)
gimple_stmt_iterator gsi;
gimple stmt;
struct prev_flag_edges *prev_edges = (struct prev_flag_edges *) ex->aux;
+ bool irr = ex->flags & EDGE_IRREDUCIBLE_LOOP;
/* ?? Insert store after previous store if applicable. See note
below. */
@@ -1821,8 +1813,9 @@ execute_sm_if_changed (edge ex, tree mem, tree tmp_var, tree flag)
old_dest = ex->dest;
new_bb = split_edge (ex);
then_bb = create_empty_bb (new_bb);
- if (current_loops && new_bb->loop_father)
- add_bb_to_loop (then_bb, new_bb->loop_father);
+ if (irr)
+ then_bb->flags = BB_IRREDUCIBLE_LOOP;
+ add_bb_to_loop (then_bb, new_bb->loop_father);
gsi = gsi_start_bb (new_bb);
stmt = gimple_build_cond (NE_EXPR, flag, boolean_false_node,
@@ -1834,9 +1827,12 @@ execute_sm_if_changed (edge ex, tree mem, tree tmp_var, tree flag)
stmt = gimple_build_assign (unshare_expr (mem), tmp_var);
gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
- make_edge (new_bb, then_bb, EDGE_TRUE_VALUE);
- make_edge (new_bb, old_dest, EDGE_FALSE_VALUE);
- then_old_edge = make_edge (then_bb, old_dest, EDGE_FALLTHRU);
+ make_edge (new_bb, then_bb,
+ EDGE_TRUE_VALUE | (irr ? EDGE_IRREDUCIBLE_LOOP : 0));
+ make_edge (new_bb, old_dest,
+ EDGE_FALSE_VALUE | (irr ? EDGE_IRREDUCIBLE_LOOP : 0));
+ then_old_edge = make_edge (then_bb, old_dest,
+ EDGE_FALLTHRU | (irr ? EDGE_IRREDUCIBLE_LOOP : 0));
set_immediate_dominator (CDI_DOMINATORS, then_bb, new_bb);
diff --git a/gcc-4.9/gcc/tree-ssa-propagate.c b/gcc-4.9/gcc/tree-ssa-propagate.c
index 840d7e762..172b6386e 100644
--- a/gcc-4.9/gcc/tree-ssa-propagate.c
+++ b/gcc-4.9/gcc/tree-ssa-propagate.c
@@ -571,8 +571,18 @@ valid_gimple_rhs_p (tree expr)
/* All constants are ok. */
break;
- case tcc_binary:
case tcc_comparison:
+ /* GENERIC allows comparisons with non-boolean types, reject
+ those for GIMPLE. Let vector-typed comparisons pass - rules
+ for GENERIC and GIMPLE are the same here. */
+ if (!(INTEGRAL_TYPE_P (TREE_TYPE (expr))
+ && (TREE_CODE (TREE_TYPE (expr)) == BOOLEAN_TYPE
+ || TYPE_PRECISION (TREE_TYPE (expr)) == 1))
+ && TREE_CODE (TREE_TYPE (expr)) != VECTOR_TYPE)
+ return false;
+
+ /* Fallthru. */
+ case tcc_binary:
if (!is_gimple_val (TREE_OPERAND (expr, 0))
|| !is_gimple_val (TREE_OPERAND (expr, 1)))
return false;
diff --git a/gcc-4.9/gcc/tree-ssa-reassoc.c b/gcc-4.9/gcc/tree-ssa-reassoc.c
index e9e29e550..fce2a6e20 100644
--- a/gcc-4.9/gcc/tree-ssa-reassoc.c
+++ b/gcc-4.9/gcc/tree-ssa-reassoc.c
@@ -221,6 +221,35 @@ static struct pointer_map_t *operand_rank;
static long get_rank (tree);
static bool reassoc_stmt_dominates_stmt_p (gimple, gimple);
+/* Wrapper around gsi_remove, which adjusts gimple_uid of debug stmts
+ possibly added by gsi_remove. */
+
+bool
+reassoc_remove_stmt (gimple_stmt_iterator *gsi)
+{
+ gimple stmt = gsi_stmt (*gsi);
+
+ if (!MAY_HAVE_DEBUG_STMTS || gimple_code (stmt) == GIMPLE_PHI)
+ return gsi_remove (gsi, true);
+
+ gimple_stmt_iterator prev = *gsi;
+ gsi_prev (&prev);
+ unsigned uid = gimple_uid (stmt);
+ basic_block bb = gimple_bb (stmt);
+ bool ret = gsi_remove (gsi, true);
+ if (!gsi_end_p (prev))
+ gsi_next (&prev);
+ else
+ prev = gsi_start_bb (bb);
+ gimple end_stmt = gsi_stmt (*gsi);
+ while ((stmt = gsi_stmt (prev)) != end_stmt)
+ {
+ gcc_assert (stmt && is_gimple_debug (stmt) && gimple_uid (stmt) == 0);
+ gimple_set_uid (stmt, uid);
+ gsi_next (&prev);
+ }
+ return ret;
+}
/* Bias amount for loop-carried phis. We want this to be larger than
the depth of any reassociation tree we can see, but not larger than
@@ -1123,7 +1152,7 @@ propagate_op_to_single_use (tree op, gimple stmt, tree *def)
update_stmt (use_stmt);
gsi = gsi_for_stmt (stmt);
unlink_stmt_vdef (stmt);
- gsi_remove (&gsi, true);
+ reassoc_remove_stmt (&gsi);
release_defs (stmt);
}
@@ -3072,7 +3101,7 @@ remove_visited_stmt_chain (tree var)
{
var = gimple_assign_rhs1 (stmt);
gsi = gsi_for_stmt (stmt);
- gsi_remove (&gsi, true);
+ reassoc_remove_stmt (&gsi);
release_defs (stmt);
}
else
@@ -3494,7 +3523,7 @@ linearize_expr (gimple stmt)
update_stmt (stmt);
gsi = gsi_for_stmt (oldbinrhs);
- gsi_remove (&gsi, true);
+ reassoc_remove_stmt (&gsi);
release_defs (oldbinrhs);
gimple_set_visited (stmt, true);
@@ -3896,7 +3925,7 @@ repropagate_negates (void)
gimple_assign_set_rhs_with_ops (&gsi2, NEGATE_EXPR, x, NULL);
user = gsi_stmt (gsi2);
update_stmt (user);
- gsi_remove (&gsi, true);
+ reassoc_remove_stmt (&gsi);
release_defs (feed);
plus_negates.safe_push (gimple_assign_lhs (user));
}
@@ -4413,7 +4442,7 @@ reassociate_bb (basic_block bb)
reassociations. */
if (has_zero_uses (gimple_get_lhs (stmt)))
{
- gsi_remove (&gsi, true);
+ reassoc_remove_stmt (&gsi);
release_defs (stmt);
/* We might end up removing the last stmt above which
places the iterator to the end of the sequence.
diff --git a/gcc-4.9/gcc/tree-ssa-structalias.c b/gcc-4.9/gcc/tree-ssa-structalias.c
index 8201cb423..347dba3e9 100644
--- a/gcc-4.9/gcc/tree-ssa-structalias.c
+++ b/gcc-4.9/gcc/tree-ssa-structalias.c
@@ -7264,10 +7264,7 @@ ipa_pta_execute (void)
tree ptr;
struct function *fn;
unsigned i;
- varinfo_t fi;
basic_block bb;
- struct pt_solution uses, clobbers;
- struct cgraph_edge *e;
/* Nodes without a body are not interesting. */
if (!cgraph_function_with_gimple_body_p (node) || node->clone_of)
@@ -7283,21 +7280,6 @@ ipa_pta_execute (void)
find_what_p_points_to (ptr);
}
- /* Compute the call-use and call-clobber sets for all direct calls. */
- fi = lookup_vi_for_tree (node->decl);
- gcc_assert (fi->is_fn_info);
- clobbers
- = find_what_var_points_to (first_vi_for_offset (fi, fi_clobbers));
- uses = find_what_var_points_to (first_vi_for_offset (fi, fi_uses));
- for (e = node->callers; e; e = e->next_caller)
- {
- if (!e->call_stmt)
- continue;
-
- *gimple_call_clobber_set (e->call_stmt) = clobbers;
- *gimple_call_use_set (e->call_stmt) = uses;
- }
-
/* Compute the call-use and call-clobber sets for indirect calls
and calls to external functions. */
FOR_EACH_BB_FN (bb, fn)
@@ -7308,17 +7290,27 @@ ipa_pta_execute (void)
{
gimple stmt = gsi_stmt (gsi);
struct pt_solution *pt;
- varinfo_t vi;
+ varinfo_t vi, fi;
tree decl;
if (!is_gimple_call (stmt))
continue;
- /* Handle direct calls to external functions. */
+ /* Handle direct calls to functions with body. */
decl = gimple_call_fndecl (stmt);
if (decl
- && (!(fi = lookup_vi_for_tree (decl))
- || !fi->is_fn_info))
+ && (fi = lookup_vi_for_tree (decl))
+ && fi->is_fn_info)
+ {
+ *gimple_call_clobber_set (stmt)
+ = find_what_var_points_to
+ (first_vi_for_offset (fi, fi_clobbers));
+ *gimple_call_use_set (stmt)
+ = find_what_var_points_to
+ (first_vi_for_offset (fi, fi_uses));
+ }
+ /* Handle direct calls to external functions. */
+ else if (decl)
{
pt = gimple_call_use_set (stmt);
if (gimple_call_flags (stmt) & ECF_CONST)
@@ -7362,10 +7354,9 @@ ipa_pta_execute (void)
pt->nonlocal = 1;
}
}
-
/* Handle indirect calls. */
- if (!decl
- && (fi = get_fi_for_callee (stmt)))
+ else if (!decl
+ && (fi = get_fi_for_callee (stmt)))
{
/* We need to accumulate all clobbers/uses of all possible
callees. */
diff --git a/gcc-4.9/gcc/tree-ssa-threadedge.c b/gcc-4.9/gcc/tree-ssa-threadedge.c
index c447b72c3..8e628d553 100644
--- a/gcc-4.9/gcc/tree-ssa-threadedge.c
+++ b/gcc-4.9/gcc/tree-ssa-threadedge.c
@@ -387,7 +387,34 @@ record_temporary_equivalences_from_stmts_at_dest (edge e,
&& (gimple_code (stmt) != GIMPLE_CALL
|| gimple_call_lhs (stmt) == NULL_TREE
|| TREE_CODE (gimple_call_lhs (stmt)) != SSA_NAME))
- continue;
+ {
+ /* STMT might still have DEFS and we need to invalidate any known
+ equivalences for them.
+
+ Consider if STMT is a GIMPLE_ASM with one or more outputs that
+ feeds a conditional inside a loop. We might derive an equivalence
+ due to the conditional. */
+ tree op;
+ ssa_op_iter iter;
+
+ if (backedge_seen)
+ FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_DEF)
+ {
+ /* This call only invalidates equivalences created by
+ PHI nodes. This is by design to keep the cost of
+ of invalidation reasonable. */
+ invalidate_equivalences (op, stack, src_map, dst_map);
+
+ /* However, conditionals can imply values for real
+ operands as well. And those won't be recorded in the
+ maps. In fact, those equivalences may be recorded totally
+ outside the threading code. We can just create a new
+ temporary NULL equivalence here. */
+ record_temporary_equivalence (op, NULL_TREE, stack);
+ }
+
+ continue;
+ }
/* The result of __builtin_object_size depends on all the arguments
of a phi node. Temporarily using only one edge produces invalid
@@ -939,9 +966,14 @@ thread_around_empty_blocks (edge taken_edge,
SIMPLIFY is a pass-specific function used to simplify statements.
Our caller is responsible for restoring the state of the expression
- and const_and_copies stacks. */
+ and const_and_copies stacks.
-static bool
+ Positive return value is success. Zero return value is failure, but
+ the block can still be duplicated as a joiner in a jump thread path,
+ negative indicates the block should not be duplicated and thus is not
+ suitable for a joiner in a jump threading path. */
+
+static int
thread_through_normal_block (edge e,
gimple dummy_cond,
bool handle_dominating_asserts,
@@ -963,7 +995,7 @@ thread_through_normal_block (edge e,
/* PHIs create temporary equivalences. */
if (!record_temporary_equivalences_from_phis (e, stack, *backedge_seen_p,
src_map, dst_map))
- return false;
+ return 0;
/* Now walk each statement recording any context sensitive
temporary equivalences we can detect. */
@@ -971,8 +1003,16 @@ thread_through_normal_block (edge e,
= record_temporary_equivalences_from_stmts_at_dest (e, stack, simplify,
*backedge_seen_p,
src_map, dst_map);
+
+ /* If we didn't look at all the statements, the most likely reason is
+ there were too many and thus duplicating this block is not profitable.
+
+ Also note if we do not look at all the statements, then we may not
+ have invalidated equivalences that are no longer valid if we threaded
+ around a loop. Thus we must signal to our caller that this block
+ is not suitable for use as a joiner in a threading path. */
if (!stmt)
- return false;
+ return -1;
/* If we stopped at a COND_EXPR or SWITCH_EXPR, see if we know which arm
will be taken. */
@@ -996,7 +1036,7 @@ thread_through_normal_block (edge e,
if (dest == NULL
|| dest == e->dest
|| bitmap_bit_p (visited, dest->index))
- return false;
+ return 0;
/* Only push the EDGE_START_JUMP_THREAD marker if this is
first edge on the path. */
@@ -1030,10 +1070,10 @@ thread_through_normal_block (edge e,
visited,
path,
backedge_seen_p);
- return true;
+ return 1;
}
}
- return false;
+ return 0;
}
/* We are exiting E->src, see if E->dest ends with a conditional
@@ -1085,9 +1125,12 @@ thread_across_edge (gimple dummy_cond,
if (backedge_seen)
simplify = dummy_simplify;
- if (thread_through_normal_block (e, dummy_cond, handle_dominating_asserts,
- stack, simplify, path, visited,
- &backedge_seen, src_map, dst_map))
+ int threaded = thread_through_normal_block (e, dummy_cond,
+ handle_dominating_asserts,
+ stack, simplify, path,
+ visited, &backedge_seen,
+ src_map, dst_map);
+ if (threaded > 0)
{
propagate_threaded_block_debug_into (path->last ()->e->dest,
e->dest);
@@ -1100,10 +1143,27 @@ thread_across_edge (gimple dummy_cond,
}
else
{
- /* There should be no edges on the path, so no need to walk through
- the vector entries. */
+ /* Negative and zero return values indicate no threading was possible,
+ thus there should be no edges on the thread path and no need to walk
+ through the vector entries. */
gcc_assert (path->length () == 0);
path->release ();
+
+ /* A negative status indicates the target block was deemed too big to
+ duplicate. Just quit now rather than trying to use the block as
+ a joiner in a jump threading path.
+
+ This prevents unnecessary code growth, but more importantly if we
+ do not look at all the statements in the block, then we may have
+ missed some invalidations if we had traversed a backedge! */
+ if (threaded < 0)
+ {
+ BITMAP_FREE (visited);
+ BITMAP_FREE (src_map);
+ BITMAP_FREE (dst_map);
+ remove_temporary_equivalences (stack);
+ return;
+ }
}
/* We were unable to determine what out edge from E->dest is taken. However,
@@ -1185,7 +1245,7 @@ thread_across_edge (gimple dummy_cond,
handle_dominating_asserts,
stack, simplify, path, visited,
&backedge_seen,
- src_map, dst_map);
+ src_map, dst_map) > 0;
/* If we were able to thread through a successor of E->dest, then
record the jump threading opportunity. */
diff --git a/gcc-4.9/gcc/tree-tailcall.c b/gcc-4.9/gcc/tree-tailcall.c
index 3488c2fc2..02086317b 100644
--- a/gcc-4.9/gcc/tree-tailcall.c
+++ b/gcc-4.9/gcc/tree-tailcall.c
@@ -285,9 +285,19 @@ process_assignment (gimple stmt, gimple_stmt_iterator call, tree *m,
{
/* Reject a tailcall if the type conversion might need
additional code. */
- if (gimple_assign_cast_p (stmt)
- && TYPE_MODE (TREE_TYPE (dest)) != TYPE_MODE (TREE_TYPE (src_var)))
- return false;
+ if (gimple_assign_cast_p (stmt))
+ {
+ if (TYPE_MODE (TREE_TYPE (dest)) != TYPE_MODE (TREE_TYPE (src_var)))
+ return false;
+
+ /* Even if the type modes are the same, if the precision of the
+ type is smaller than mode's precision,
+ reduce_to_bit_field_precision would generate additional code. */
+ if (INTEGRAL_TYPE_P (TREE_TYPE (dest))
+ && (GET_MODE_PRECISION (TYPE_MODE (TREE_TYPE (dest)))
+ > TYPE_PRECISION (TREE_TYPE (dest))))
+ return false;
+ }
if (src_var != *ass_var)
return false;
diff --git a/gcc-4.9/gcc/tree-vect-data-refs.c b/gcc-4.9/gcc/tree-vect-data-refs.c
index fbc35a3fe..274cdbdcf 100644
--- a/gcc-4.9/gcc/tree-vect-data-refs.c
+++ b/gcc-4.9/gcc/tree-vect-data-refs.c
@@ -3172,7 +3172,7 @@ vect_check_gather (gimple stmt, loop_vec_info loop_vinfo, tree *basep,
bool
vect_analyze_data_refs (loop_vec_info loop_vinfo,
bb_vec_info bb_vinfo,
- int *min_vf)
+ int *min_vf, unsigned *n_stmts)
{
struct loop *loop = NULL;
basic_block bb = NULL;
@@ -3207,6 +3207,9 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo,
for (gsi = gsi_start_bb (bbs[i]); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple stmt = gsi_stmt (gsi);
+ if (is_gimple_debug (stmt))
+ continue;
+ ++*n_stmts;
if (!find_data_references_in_stmt (loop, stmt, &datarefs))
{
if (is_gimple_call (stmt) && loop->safelen)
@@ -3260,6 +3263,9 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo,
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple stmt = gsi_stmt (gsi);
+ if (is_gimple_debug (stmt))
+ continue;
+ ++*n_stmts;
if (!find_data_references_in_stmt (NULL, stmt,
&BB_VINFO_DATAREFS (bb_vinfo)))
{
diff --git a/gcc-4.9/gcc/tree-vect-generic.c b/gcc-4.9/gcc/tree-vect-generic.c
index d00a4b47e..a1de7beb0 100644
--- a/gcc-4.9/gcc/tree-vect-generic.c
+++ b/gcc-4.9/gcc/tree-vect-generic.c
@@ -971,7 +971,8 @@ expand_vector_operation (gimple_stmt_iterator *gsi, tree type, tree compute_type
if (!optimize
|| !VECTOR_INTEGER_TYPE_P (type)
- || TREE_CODE (rhs2) != VECTOR_CST)
+ || TREE_CODE (rhs2) != VECTOR_CST
+ || !VECTOR_MODE_P (TYPE_MODE (type)))
break;
ret = expand_vector_divmod (gsi, type, rhs1, rhs2, code);
diff --git a/gcc-4.9/gcc/tree-vect-loop.c b/gcc-4.9/gcc/tree-vect-loop.c
index 1c78e114f..4204907a1 100644
--- a/gcc-4.9/gcc/tree-vect-loop.c
+++ b/gcc-4.9/gcc/tree-vect-loop.c
@@ -1629,6 +1629,7 @@ vect_analyze_loop_2 (loop_vec_info loop_vinfo)
int max_vf = MAX_VECTORIZATION_FACTOR;
int min_vf = 2;
unsigned int th;
+ unsigned int n_stmts = 0;
/* Find all data references in the loop (which correspond to vdefs/vuses)
and analyze their evolution in the loop. Also adjust the minimal
@@ -1637,7 +1638,7 @@ vect_analyze_loop_2 (loop_vec_info loop_vinfo)
FORNOW: Handle only simple, array references, which
alignment can be forced, and aligned pointer-references. */
- ok = vect_analyze_data_refs (loop_vinfo, NULL, &min_vf);
+ ok = vect_analyze_data_refs (loop_vinfo, NULL, &min_vf, &n_stmts);
if (!ok)
{
if (dump_enabled_p ())
@@ -1747,7 +1748,7 @@ vect_analyze_loop_2 (loop_vec_info loop_vinfo)
}
/* Check the SLP opportunities in the loop, analyze and build SLP trees. */
- ok = vect_analyze_slp (loop_vinfo, NULL);
+ ok = vect_analyze_slp (loop_vinfo, NULL, n_stmts);
if (ok)
{
/* Decide which possible SLP instances to SLP. */
@@ -3951,8 +3952,12 @@ vect_create_epilog_for_reduction (vec<tree> vect_defs, gimple stmt,
/* Set phi nodes arguments. */
FOR_EACH_VEC_ELT (reduction_phis, i, phi)
{
- tree vec_init_def = vec_initial_defs[i];
- tree def = vect_defs[i];
+ tree vec_init_def, def;
+ gimple_seq stmts;
+ vec_init_def = force_gimple_operand (vec_initial_defs[i], &stmts,
+ true, NULL_TREE);
+ gsi_insert_seq_on_edge_immediate (loop_preheader_edge (loop), stmts);
+ def = vect_defs[i];
for (j = 0; j < ncopies; j++)
{
/* Set the loop-entry arg of the reduction-phi. */
diff --git a/gcc-4.9/gcc/tree-vect-slp.c b/gcc-4.9/gcc/tree-vect-slp.c
index 65f8b022e..0ab267f7d 100644
--- a/gcc-4.9/gcc/tree-vect-slp.c
+++ b/gcc-4.9/gcc/tree-vect-slp.c
@@ -849,9 +849,10 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
unsigned int *max_nunits,
vec<slp_tree> *loads,
unsigned int vectorization_factor,
- bool *matches, unsigned *npermutes)
+ bool *matches, unsigned *npermutes, unsigned *tree_size,
+ unsigned max_tree_size)
{
- unsigned nops, i, this_npermutes = 0;
+ unsigned nops, i, this_npermutes = 0, this_tree_size = 0;
gimple stmt;
if (!matches)
@@ -911,6 +912,12 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
if (oprnd_info->first_dt != vect_internal_def)
continue;
+ if (++this_tree_size > max_tree_size)
+ {
+ vect_free_oprnd_info (oprnds_info);
+ return false;
+ }
+
child = vect_create_new_slp_node (oprnd_info->def_stmts);
if (!child)
{
@@ -921,7 +928,8 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
bool *matches = XALLOCAVEC (bool, group_size);
if (vect_build_slp_tree (loop_vinfo, bb_vinfo, &child,
group_size, max_nunits, loads,
- vectorization_factor, matches, npermutes))
+ vectorization_factor, matches,
+ npermutes, &this_tree_size, max_tree_size))
{
oprnd_info->def_stmts = vNULL;
SLP_TREE_CHILDREN (*node).quick_push (child);
@@ -961,7 +969,8 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
if (vect_build_slp_tree (loop_vinfo, bb_vinfo, &child,
group_size, max_nunits, loads,
vectorization_factor,
- matches, npermutes))
+ matches, npermutes, &this_tree_size,
+ max_tree_size))
{
oprnd_info->def_stmts = vNULL;
SLP_TREE_CHILDREN (*node).quick_push (child);
@@ -977,6 +986,9 @@ vect_build_slp_tree (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
return false;
}
+ if (tree_size)
+ *tree_size += this_tree_size;
+
vect_free_oprnd_info (oprnds_info);
return true;
}
@@ -1436,7 +1448,7 @@ vect_analyze_slp_cost (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
static bool
vect_analyze_slp_instance (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
- gimple stmt)
+ gimple stmt, unsigned max_tree_size)
{
slp_instance new_instance;
slp_tree node;
@@ -1536,7 +1548,8 @@ vect_analyze_slp_instance (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
/* Build the tree for the SLP instance. */
if (vect_build_slp_tree (loop_vinfo, bb_vinfo, &node, group_size,
&max_nunits, &loads,
- vectorization_factor, NULL, NULL))
+ vectorization_factor, NULL, NULL, NULL,
+ max_tree_size))
{
/* Calculate the unrolling factor based on the smallest type. */
if (max_nunits > nunits)
@@ -1641,7 +1654,8 @@ vect_analyze_slp_instance (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
trees of packed scalar stmts if SLP is possible. */
bool
-vect_analyze_slp (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo)
+vect_analyze_slp (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo,
+ unsigned max_tree_size)
{
unsigned int i;
vec<gimple> grouped_stores;
@@ -1664,7 +1678,8 @@ vect_analyze_slp (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo)
/* Find SLP sequences starting from groups of grouped stores. */
FOR_EACH_VEC_ELT (grouped_stores, i, first_element)
- if (vect_analyze_slp_instance (loop_vinfo, bb_vinfo, first_element))
+ if (vect_analyze_slp_instance (loop_vinfo, bb_vinfo, first_element,
+ max_tree_size))
ok = true;
if (bb_vinfo && !ok)
@@ -1681,7 +1696,8 @@ vect_analyze_slp (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo)
{
/* Find SLP sequences starting from reduction chains. */
FOR_EACH_VEC_ELT (reduc_chains, i, first_element)
- if (vect_analyze_slp_instance (loop_vinfo, bb_vinfo, first_element))
+ if (vect_analyze_slp_instance (loop_vinfo, bb_vinfo, first_element,
+ max_tree_size))
ok = true;
else
return false;
@@ -1693,7 +1709,8 @@ vect_analyze_slp (loop_vec_info loop_vinfo, bb_vec_info bb_vinfo)
/* Find SLP sequences starting from groups of reductions. */
if (loop_vinfo && LOOP_VINFO_REDUCTIONS (loop_vinfo).length () > 1
- && vect_analyze_slp_instance (loop_vinfo, bb_vinfo, reductions[0]))
+ && vect_analyze_slp_instance (loop_vinfo, bb_vinfo, reductions[0],
+ max_tree_size))
ok = true;
return true;
@@ -2071,12 +2088,13 @@ vect_slp_analyze_bb_1 (basic_block bb)
slp_instance instance;
int i;
int min_vf = 2;
+ unsigned n_stmts = 0;
bb_vinfo = new_bb_vec_info (bb);
if (!bb_vinfo)
return NULL;
- if (!vect_analyze_data_refs (NULL, bb_vinfo, &min_vf))
+ if (!vect_analyze_data_refs (NULL, bb_vinfo, &min_vf, &n_stmts))
{
if (dump_enabled_p ())
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
@@ -2124,7 +2142,7 @@ vect_slp_analyze_bb_1 (basic_block bb)
/* Check the SLP opportunities in the basic block, analyze and build SLP
trees. */
- if (!vect_analyze_slp (NULL, bb_vinfo))
+ if (!vect_analyze_slp (NULL, bb_vinfo, n_stmts))
{
if (dump_enabled_p ())
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
diff --git a/gcc-4.9/gcc/tree-vectorizer.h b/gcc-4.9/gcc/tree-vectorizer.h
index f2087e223..fa2989d72 100644
--- a/gcc-4.9/gcc/tree-vectorizer.h
+++ b/gcc-4.9/gcc/tree-vectorizer.h
@@ -1057,7 +1057,8 @@ extern bool vect_analyze_data_ref_accesses (loop_vec_info, bb_vec_info);
extern bool vect_prune_runtime_alias_test_list (loop_vec_info);
extern tree vect_check_gather (gimple, loop_vec_info, tree *, tree *,
int *);
-extern bool vect_analyze_data_refs (loop_vec_info, bb_vec_info, int *);
+extern bool vect_analyze_data_refs (loop_vec_info, bb_vec_info, int *,
+ unsigned *);
extern tree vect_create_data_ref_ptr (gimple, tree, struct loop *, tree,
tree *, gimple_stmt_iterator *,
gimple *, bool, bool *);
@@ -1107,7 +1108,7 @@ extern bool vect_transform_slp_perm_load (slp_tree, vec<tree> ,
slp_instance, bool);
extern bool vect_schedule_slp (loop_vec_info, bb_vec_info);
extern void vect_update_slp_costs_according_to_vf (loop_vec_info);
-extern bool vect_analyze_slp (loop_vec_info, bb_vec_info);
+extern bool vect_analyze_slp (loop_vec_info, bb_vec_info, unsigned);
extern bool vect_make_slp_decision (loop_vec_info);
extern void vect_detect_hybrid_slp (loop_vec_info);
extern void vect_get_slp_defs (vec<tree> , slp_tree,
diff --git a/gcc-4.9/gcc/tree.h b/gcc-4.9/gcc/tree.h
index 9fbc5c4ec..90e5e275c 100644
--- a/gcc-4.9/gcc/tree.h
+++ b/gcc-4.9/gcc/tree.h
@@ -1330,6 +1330,9 @@ extern void protected_set_expr_location (tree, location_t);
#define OMP_CLAUSE_LINEAR_STEP(NODE) \
OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_LINEAR), 1)
+#define OMP_CLAUSE_LINEAR_GIMPLE_SEQ(NODE) \
+ (OMP_CLAUSE_CHECK (NODE))->omp_clause.gimple_reduction_init
+
#define OMP_CLAUSE_ALIGNED_ALIGNMENT(NODE) \
OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_ALIGNED), 1)
diff --git a/gcc-4.9/libbacktrace/ChangeLog b/gcc-4.9/libbacktrace/ChangeLog
index 5dfe80b38..8bcc677fd 100644
--- a/gcc-4.9/libbacktrace/ChangeLog
+++ b/gcc-4.9/libbacktrace/ChangeLog
@@ -1,3 +1,12 @@
+2014-05-08 Ian Lance Taylor <iant@google.com>
+
+ Backport from mainline:
+ * mmap.c (backtrace_free): If freeing a large aligned block of
+ memory, call munmap rather than holding onto it.
+ (backtrace_vector_grow): When growing a vector, double the number
+ of pages requested. When releasing the old version of a grown
+ vector, pass the correct size to backtrace_free.
+
2014-04-22 Release Manager
* GCC 4.9.0 released.
diff --git a/gcc-4.9/libbacktrace/mmap.c b/gcc-4.9/libbacktrace/mmap.c
index b530e3823..5a9f6299b 100644
--- a/gcc-4.9/libbacktrace/mmap.c
+++ b/gcc-4.9/libbacktrace/mmap.c
@@ -164,6 +164,26 @@ backtrace_free (struct backtrace_state *state, void *addr, size_t size,
{
int locked;
+ /* If we are freeing a large aligned block, just release it back to
+ the system. This case arises when growing a vector for a large
+ binary with lots of debug info. Calling munmap here may cause us
+ to call mmap again if there is also a large shared library; we
+ just live with that. */
+ if (size >= 16 * 4096)
+ {
+ size_t pagesize;
+
+ pagesize = getpagesize ();
+ if (((uintptr_t) addr & (pagesize - 1)) == 0
+ && (size & (pagesize - 1)) == 0)
+ {
+ /* If munmap fails for some reason, just add the block to
+ the freelist. */
+ if (munmap (addr, size) == 0)
+ return;
+ }
+ }
+
/* If we can acquire the lock, add the new space to the free list.
If we can't acquire the lock, just leak the memory.
__sync_lock_test_and_set returns the old state of the lock, so we
@@ -209,14 +229,18 @@ backtrace_vector_grow (struct backtrace_state *state,size_t size,
alc = pagesize;
}
else
- alc = (alc + pagesize - 1) & ~ (pagesize - 1);
+ {
+ alc *= 2;
+ alc = (alc + pagesize - 1) & ~ (pagesize - 1);
+ }
base = backtrace_alloc (state, alc, error_callback, data);
if (base == NULL)
return NULL;
if (vec->base != NULL)
{
memcpy (base, vec->base, vec->size);
- backtrace_free (state, vec->base, vec->alc, error_callback, data);
+ backtrace_free (state, vec->base, vec->size + vec->alc,
+ error_callback, data);
}
vec->base = base;
vec->alc = alc - vec->size;
diff --git a/gcc-4.9/libgcc/ChangeLog b/gcc-4.9/libgcc/ChangeLog
index 41db7d805..57a83718a 100644
--- a/gcc-4.9/libgcc/ChangeLog
+++ b/gcc-4.9/libgcc/ChangeLog
@@ -1,3 +1,10 @@
+2014-04-30 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
+ Work around for current cygwin32 build problems.
+ * config/i386/cygming-crtbegin.c (__register_frame_info,
+ __deregister_frame_info, _Jv_RegisterClasses): Compile weak default
+ functions only for 64-bit systems.
+
2014-04-22 Release Manager
* GCC 4.9.0 released.
diff --git a/gcc-4.9/libgcc/config/i386/cygming-crtbegin.c b/gcc-4.9/libgcc/config/i386/cygming-crtbegin.c
index eeb51d4c5..195b46376 100644
--- a/gcc-4.9/libgcc/config/i386/cygming-crtbegin.c
+++ b/gcc-4.9/libgcc/config/i386/cygming-crtbegin.c
@@ -54,6 +54,11 @@ extern void __register_frame_info (__attribute__((unused)) const void *,
TARGET_ATTRIBUTE_WEAK;
extern void *__deregister_frame_info (__attribute__((unused)) const void *)
TARGET_ATTRIBUTE_WEAK;
+
+/* Work around for current cygwin32 build problems (Bug gas/16858).
+ Compile weak default functions only for 64-bit systems,
+ when absolutely necessary. */
+#ifdef __x86_64__
TARGET_ATTRIBUTE_WEAK void
__register_frame_info (__attribute__((unused)) const void *p,
__attribute__((unused)) struct object *o)
@@ -65,16 +70,19 @@ __deregister_frame_info (__attribute__((unused)) const void *p)
{
return (void*) 0;
}
+#endif
#endif /* DWARF2_UNWIND_INFO */
#if TARGET_USE_JCR_SECTION
extern void _Jv_RegisterClasses (__attribute__((unused)) const void *)
TARGET_ATTRIBUTE_WEAK;
+#ifdef __x86_64__
TARGET_ATTRIBUTE_WEAK void
_Jv_RegisterClasses (__attribute__((unused)) const void *p)
{
}
+#endif
#endif /* TARGET_USE_JCR_SECTION */
#if defined(HAVE_LD_RO_RW_SECTION_MIXING)
diff --git a/gcc-4.9/libgfortran/ChangeLog b/gcc-4.9/libgfortran/ChangeLog
index 91d283d6d..a70f9bb4a 100644
--- a/gcc-4.9/libgfortran/ChangeLog
+++ b/gcc-4.9/libgfortran/ChangeLog
@@ -1,3 +1,10 @@
+2014-05-10 Jerry DeLisle <jvdelisle@gcc.gnu>
+
+ Backport from Trunk.
+ PR libfortran/61049
+ * io/list_read.c (list_formatted_read_scalar): Use eat_separator
+ and delete extraneous code.
+
2014-04-22 Release Manager
* GCC 4.9.0 released.
diff --git a/gcc-4.9/libgfortran/io/list_read.c b/gcc-4.9/libgfortran/io/list_read.c
index 625ba0c85..2e739f2da 100644
--- a/gcc-4.9/libgfortran/io/list_read.c
+++ b/gcc-4.9/libgfortran/io/list_read.c
@@ -1923,20 +1923,9 @@ list_formatted_read_scalar (st_parameter_dt *dtp, bt type, void *p,
}
if (is_separator (c))
{
- /* Found a null value. Do not use eat_separator here otherwise
- we will do an extra read from stdin. */
+ /* Found a null value. */
dtp->u.p.repeat_count = 0;
-
- /* Set comma_flag. */
- if ((c == ';'
- && dtp->u.p.current_unit->decimal_status == DECIMAL_COMMA)
- ||
- (c == ','
- && dtp->u.p.current_unit->decimal_status == DECIMAL_POINT))
- {
- dtp->u.p.comma_flag = 1;
- goto cleanup;
- }
+ eat_separator (dtp);
/* Set end-of-line flag. */
if (c == '\n' || c == '\r')
@@ -1951,7 +1940,6 @@ list_formatted_read_scalar (st_parameter_dt *dtp, bt type, void *p,
else
goto cleanup;
}
-
}
else
{
diff --git a/gcc-4.9/libgo/config.h.in b/gcc-4.9/libgo/config.h.in
index 73854351c..2ee0cfc24 100644
--- a/gcc-4.9/libgo/config.h.in
+++ b/gcc-4.9/libgo/config.h.in
@@ -192,6 +192,9 @@
/* Define to 1 if you have the `renameat' function. */
#undef HAVE_RENAMEAT
+/* Define to 1 if you have the <sched.h> header file. */
+#undef HAVE_SCHED_H
+
/* Define to 1 if you have the `sem_timedwait' function. */
#undef HAVE_SEM_TIMEDWAIT
diff --git a/gcc-4.9/libgo/configure b/gcc-4.9/libgo/configure
index f4b8c1044..1223204a2 100755
--- a/gcc-4.9/libgo/configure
+++ b/gcc-4.9/libgo/configure
@@ -14627,7 +14627,7 @@ no)
;;
esac
-for ac_header in sys/file.h sys/mman.h syscall.h sys/epoll.h sys/inotify.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/if.h net/if_arp.h net/route.h netpacket/packet.h sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h sys/timex.h sys/sysinfo.h utime.h linux/ether.h linux/fs.h linux/reboot.h netinet/icmp6.h netinet/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h
+for ac_header in sched.h sys/file.h sys/mman.h syscall.h sys/epoll.h sys/inotify.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/if.h net/if_arp.h net/route.h netpacket/packet.h sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h sys/timex.h sys/sysinfo.h utime.h linux/ether.h linux/fs.h linux/reboot.h netinet/icmp6.h netinet/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
diff --git a/gcc-4.9/libgo/configure.ac b/gcc-4.9/libgo/configure.ac
index 4480261a9..754e1906c 100644
--- a/gcc-4.9/libgo/configure.ac
+++ b/gcc-4.9/libgo/configure.ac
@@ -480,7 +480,7 @@ no)
;;
esac
-AC_CHECK_HEADERS(sys/file.h sys/mman.h syscall.h sys/epoll.h sys/inotify.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/if.h net/if_arp.h net/route.h netpacket/packet.h sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h sys/timex.h sys/sysinfo.h utime.h linux/ether.h linux/fs.h linux/reboot.h netinet/icmp6.h netinet/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h)
+AC_CHECK_HEADERS(sched.h sys/file.h sys/mman.h syscall.h sys/epoll.h sys/inotify.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/if.h net/if_arp.h net/route.h netpacket/packet.h sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h sys/timex.h sys/sysinfo.h utime.h linux/ether.h linux/fs.h linux/reboot.h netinet/icmp6.h netinet/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h)
AC_CHECK_HEADERS([linux/filter.h linux/if_addr.h linux/if_ether.h linux/if_tun.h linux/netlink.h linux/rtnetlink.h], [], [],
[#ifdef HAVE_SYS_SOCKET_H
diff --git a/gcc-4.9/libgo/mksysinfo.sh b/gcc-4.9/libgo/mksysinfo.sh
index 025729cca..bb6abfd04 100755
--- a/gcc-4.9/libgo/mksysinfo.sh
+++ b/gcc-4.9/libgo/mksysinfo.sh
@@ -163,6 +163,9 @@ cat > sysinfo.c <<EOF
#if defined(HAVE_NETINET_ICMP6_H)
#include <netinet/icmp6.h>
#endif
+#if defined(HAVE_SCHED_H)
+#include <sched.h>
+#endif
/* Constants that may only be defined as expressions on some systems,
expressions too complex for -fdump-go-spec to handle. These are
@@ -177,6 +180,18 @@ enum {
#ifdef TIOCSCTTY
TIOCSCTTY_val = TIOCSCTTY,
#endif
+#ifdef TIOCGPTN
+ TIOCGPTN_val = TIOCGPTN,
+#endif
+#ifdef TIOCSPTLCK
+ TIOCSPTLCK_val = TIOCSPTLCK,
+#endif
+#ifdef TIOCGDEV
+ TIOCGDEV_val = TIOCGDEV,
+#endif
+#ifdef TIOCSIG
+ TIOCSIG_val = TIOCSIG,
+#endif
};
EOF
@@ -775,6 +790,26 @@ if ! grep '^const TIOCSCTTY' ${OUT} >/dev/null 2>&1; then
echo 'const TIOCSCTTY = _TIOCSCTTY_val' >> ${OUT}
fi
fi
+if ! grep '^const TIOCGPTN' ${OUT} >/dev/null 2>&1; then
+ if grep '^const _TIOCGPTN_val' ${OUT} >/dev/null 2>&1; then
+ echo 'const TIOCGPTN = _TIOCGPTN_val' >> ${OUT}
+ fi
+fi
+if ! grep '^const TIOCSPTLCK' ${OUT} >/dev/null 2>&1; then
+ if grep '^const _TIOCSPTLCK_val' ${OUT} >/dev/null 2>&1; then
+ echo 'const TIOCSPTLCK = _TIOCSPTLCK_val' >> ${OUT}
+ fi
+fi
+if ! grep '^const TIOCGDEV' ${OUT} >/dev/null 2>&1; then
+ if grep '^const _TIOCGDEV_val' ${OUT} >/dev/null 2>&1; then
+ echo 'const TIOCGDEV = _TIOCGDEV_val' >> ${OUT}
+ fi
+fi
+if ! grep '^const TIOCSIG' ${OUT} >/dev/null 2>&1; then
+ if grep '^const _TIOCSIG_val' ${OUT} >/dev/null 2>&1; then
+ echo 'const TIOCSIG = _TIOCSIG_val' >> ${OUT}
+ fi
+fi
# The ioctl flags for terminal control
grep '^const _TC[GS]ET' gen-sysinfo.go | \
@@ -1130,6 +1165,10 @@ grep '^type _inotify_event ' gen-sysinfo.go | \
-e 's/\[0\]byte/[0]int8/' \
>> ${OUT}
+# The GNU/Linux CLONE flags.
+grep '^const _CLONE_' gen-sysinfo.go | \
+ sed -e 's/^\(const \)_\(CLONE_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
+
# The Solaris 11 Update 1 _zone_net_addr_t struct.
grep '^type _zone_net_addr_t ' gen-sysinfo.go | \
sed -e 's/_in6_addr/[16]byte/' \
diff --git a/gcc-4.9/libgo/runtime/mheap.c b/gcc-4.9/libgo/runtime/mheap.c
index fee493c13..1b8ab7916 100644
--- a/gcc-4.9/libgo/runtime/mheap.c
+++ b/gcc-4.9/libgo/runtime/mheap.c
@@ -387,7 +387,7 @@ forcegchelper(void *vnote)
static uintptr
scavengelist(MSpan *list, uint64 now, uint64 limit)
{
- uintptr released, sumreleased;
+ uintptr released, sumreleased, start, end, pagesize;
MSpan *s;
if(runtime_MSpanList_IsEmpty(list))
@@ -400,7 +400,17 @@ scavengelist(MSpan *list, uint64 now, uint64 limit)
mstats.heap_released += released;
sumreleased += released;
s->npreleased = s->npages;
- runtime_SysUnused((void*)(s->start << PageShift), s->npages << PageShift);
+
+ start = s->start << PageShift;
+ end = start + (s->npages << PageShift);
+
+ // Round start up and end down to ensure we
+ // are acting on entire pages.
+ pagesize = getpagesize();
+ start = ROUND(start, pagesize);
+ end &= ~(pagesize - 1);
+ if(end > start)
+ runtime_SysUnused((void*)start, end - start);
}
}
return sumreleased;
diff --git a/gcc-4.9/libgomp/ChangeLog b/gcc-4.9/libgomp/ChangeLog
index 91fc2a25d..819bfa19b 100644
--- a/gcc-4.9/libgomp/ChangeLog
+++ b/gcc-4.9/libgomp/ChangeLog
@@ -1,3 +1,22 @@
+2014-05-02 Jakub Jelinek <jakub@redhat.com>
+
+ * testsuite/libgomp.c/simd-10.c: New test.
+ * testsuite/libgomp.c/simd-11.c: New test.
+ * testsuite/libgomp.c/simd-12.c: New test.
+ * testsuite/libgomp.c/simd-13.c: New test.
+
+2014-04-24 Jakub Jelinek <jakub@redhat.com>
+
+ * testsuite/libgomp.c++/atomic-14.C: Allow seq_cst and
+ atomic type clauses in any order and optional comma in between.
+ * testsuite/libgomp.c++/atomic-15.C: Likewise.
+ * testsuite/libgomp.c/atomic-17.c: Likewise.
+
+ * testsuite/libgomp.c/simd-7.c: New test.
+ * testsuite/libgomp.c/simd-8.c: New test.
+ * testsuite/libgomp.c/simd-9.c: New test.
+ * testsuite/libgomp.c/loop-16.c: New test.
+
2014-04-22 Release Manager
* GCC 4.9.0 released.
diff --git a/gcc-4.9/libgomp/testsuite/libgomp.c++/atomic-14.C b/gcc-4.9/libgomp/testsuite/libgomp.c++/atomic-14.C
index 4cd9df812..dccea3acd 100644
--- a/gcc-4.9/libgomp/testsuite/libgomp.c++/atomic-14.C
+++ b/gcc-4.9/libgomp/testsuite/libgomp.c++/atomic-14.C
@@ -13,13 +13,13 @@ main ()
v = x;
if (v != 3)
abort ();
- #pragma omp atomic update seq_cst
+ #pragma omp atomic seq_cst update
x = 3 * 2 * 1 + x;
- #pragma omp atomic read seq_cst
+ #pragma omp atomic read, seq_cst
v = x;
if (v != 9)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic seq_cst, capture
v = x = x | 16;
if (v != 25)
abort ();
@@ -27,15 +27,15 @@ main ()
v = x = x + 14 * 2 / 4;
if (v != 32)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic seq_cst capture
v = x = 5 | x;
if (v != 37)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic capture, seq_cst
v = x = 40 + 12 - 2 - 7 - x;
if (v != 6)
abort ();
- #pragma omp atomic read seq_cst
+ #pragma omp atomic seq_cst read
v = x;
if (v != 6)
abort ();
@@ -43,7 +43,7 @@ main ()
{ v = x; x = 3 + x; }
if (v != 6)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic seq_cst capture
{ v = x; x = -1 * -1 * -1 * -1 - x; }
if (v != 9)
abort ();
@@ -51,11 +51,11 @@ main ()
v = x;
if (v != -8)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic capture, seq_cst
{ x = 2 * 2 - x; v = x; }
if (v != 12)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic seq_cst capture
{ x = 7 & x; v = x; }
if (v != 4)
abort ();
@@ -63,7 +63,7 @@ main ()
{ v = x; x = 6; }
if (v != 4)
abort ();
- #pragma omp atomic read seq_cst
+ #pragma omp atomic read, seq_cst
v = x;
if (v != 6)
abort ();
@@ -71,11 +71,11 @@ main ()
{ v = x; x = 7 * 8 + 23; }
if (v != 6)
abort ();
- #pragma omp atomic read seq_cst
+ #pragma omp atomic seq_cst, read
v = x;
if (v != 79)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic capture , seq_cst
{ v = x; x = 23 + 6 * 4; }
if (v != 79)
abort ();
@@ -83,7 +83,7 @@ main ()
v = x;
if (v != 47)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic seq_cst capture
{ v = x; x = l ? 17 : 12; }
if (v != 47)
abort ();
diff --git a/gcc-4.9/libgomp/testsuite/libgomp.c++/atomic-15.C b/gcc-4.9/libgomp/testsuite/libgomp.c++/atomic-15.C
index 1eabce7db..9abefb646 100644
--- a/gcc-4.9/libgomp/testsuite/libgomp.c++/atomic-15.C
+++ b/gcc-4.9/libgomp/testsuite/libgomp.c++/atomic-15.C
@@ -14,13 +14,13 @@ foo ()
v = x;
if (v != 3)
abort ();
- #pragma omp atomic update seq_cst
+ #pragma omp atomic seq_cst update
x = 3 * 2 * 1 + x;
- #pragma omp atomic read seq_cst
+ #pragma omp atomic read, seq_cst
v = x;
if (v != 9)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic seq_cst, capture
v = x = x | 16;
if (v != 25)
abort ();
@@ -28,15 +28,15 @@ foo ()
v = x = x + 14 * 2 / 4;
if (v != 32)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic seq_cst capture
v = x = 5 | x;
if (v != 37)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic capture, seq_cst
v = x = 40 + 12 - 2 - 7 - x;
if (v != 6)
abort ();
- #pragma omp atomic read seq_cst
+ #pragma omp atomic seq_cst read
v = x;
if (v != 6)
abort ();
@@ -44,7 +44,7 @@ foo ()
{ v = x; x = 3 + x; }
if (v != 6)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic seq_cst capture
{ v = x; x = -1 * -1 * -1 * -1 - x; }
if (v != 9)
abort ();
@@ -52,11 +52,11 @@ foo ()
v = x;
if (v != -8)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic capture, seq_cst
{ x = 2 * 2 - x; v = x; }
if (v != 12)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic seq_cst capture
{ x = 7 & x; v = x; }
if (v != 4)
abort ();
@@ -64,7 +64,7 @@ foo ()
{ v = x; x = 6; }
if (v != 4)
abort ();
- #pragma omp atomic read seq_cst
+ #pragma omp atomic read, seq_cst
v = x;
if (v != 6)
abort ();
@@ -72,11 +72,11 @@ foo ()
{ v = x; x = 7 * 8 + 23; }
if (v != 6)
abort ();
- #pragma omp atomic read seq_cst
+ #pragma omp atomic seq_cst, read
v = x;
if (v != 79)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic capture , seq_cst
{ v = x; x = 23 + 6 * 4; }
if (v != 79)
abort ();
@@ -84,7 +84,7 @@ foo ()
v = x;
if (v != 47)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic seq_cst capture
{ v = x; x = l ? 17 : 12; }
if (v != 47)
abort ();
diff --git a/gcc-4.9/libgomp/testsuite/libgomp.c/atomic-17.c b/gcc-4.9/libgomp/testsuite/libgomp.c/atomic-17.c
index 2bd0e9b44..147ab26a9 100644
--- a/gcc-4.9/libgomp/testsuite/libgomp.c/atomic-17.c
+++ b/gcc-4.9/libgomp/testsuite/libgomp.c/atomic-17.c
@@ -13,13 +13,13 @@ main ()
v = x;
if (v != 3)
abort ();
- #pragma omp atomic update seq_cst
+ #pragma omp atomic seq_cst update
x = 3 * 2 * 1 + x;
- #pragma omp atomic read seq_cst
+ #pragma omp atomic read, seq_cst
v = x;
if (v != 9)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic seq_cst, capture
v = x = x | 16;
if (v != 25)
abort ();
@@ -27,15 +27,15 @@ main ()
v = x = x + 14 * 2 / 4;
if (v != 32)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic seq_cst capture
v = x = 5 | x;
if (v != 37)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic capture, seq_cst
v = x = 40 + 12 - 2 - 7 - x;
if (v != 6)
abort ();
- #pragma omp atomic read seq_cst
+ #pragma omp atomic seq_cst read
v = x;
if (v != 6)
abort ();
@@ -43,7 +43,7 @@ main ()
{ v = x; x = 3 + x; }
if (v != 6)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic seq_cst capture
{ v = x; x = -1 * -1 * -1 * -1 - x; }
if (v != 9)
abort ();
@@ -51,11 +51,11 @@ main ()
v = x;
if (v != -8)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic capture, seq_cst
{ x = 2 * 2 - x; v = x; }
if (v != 12)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic seq_cst capture
{ x = 7 & x; v = x; }
if (v != 4)
abort ();
@@ -63,7 +63,7 @@ main ()
{ v = x; x = 6; }
if (v != 4)
abort ();
- #pragma omp atomic read seq_cst
+ #pragma omp atomic read, seq_cst
v = x;
if (v != 6)
abort ();
@@ -71,11 +71,11 @@ main ()
{ v = x; x = 7 * 8 + 23; }
if (v != 6)
abort ();
- #pragma omp atomic read seq_cst
+ #pragma omp atomic seq_cst, read
v = x;
if (v != 79)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic capture , seq_cst
{ v = x; x = 23 + 6 * 4; }
if (v != 79)
abort ();
@@ -83,7 +83,7 @@ main ()
v = x;
if (v != 47)
abort ();
- #pragma omp atomic capture seq_cst
+ #pragma omp atomic seq_cst capture
{ v = x; x = l ? 17 : 12; }
if (v != 47)
abort ();
diff --git a/gcc-4.9/libstdc++-v3/ChangeLog b/gcc-4.9/libstdc++-v3/ChangeLog
index a88c29a98..b78daca58 100644
--- a/gcc-4.9/libstdc++-v3/ChangeLog
+++ b/gcc-4.9/libstdc++-v3/ChangeLog
@@ -1,3 +1,86 @@
+2014-05-08 Joshua Gay <jgay@gnu.org>
+
+ PR libstdc++/61117
+ * doc/xml/faq.xml (faq.license.what_restrictions): Replace "open
+ source" with "free software".
+ * doc/html/faq.html: Likewise.
+
+2014-05-08 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/std/iostream: Fix URL in comment.
+ * src/c++98/ios_init.cc: Fix path in comment.
+
+2014-05-07 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/61023
+ * include/bits/stl_tree.h (_Rb_tree::_M_move_assign): Copy the
+ comparison function.
+ * testsuite/23_containers/set/cons/61023.cc: New.
+
+ PR libstdc++/61086
+ * include/bits/stl_iterator.h (__normal_iterator::_M_const_cast):
+ Remove.
+ * include/bits/stl_vector.h (vector::insert, vector::erase): Use
+ arithmetic to obtain a mutable iterator from const_iterator.
+ * include/bits/vector.tcc (vector::insert): Likewise.
+ * include/debug/vector (vector::erase): Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+ Adjust dg-error line number.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+ Likewise.
+
+2014-05-06 Jonathan Wakely <jwakely@redhat.com>
+
+ Backport from mainline
+ 2014-04-15 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/60594
+ * include/std/functional (function::_Callable): Exclude own type
+ from the callable checks.
+ * testsuite/20_util/function/60594.cc: New.
+
+2014-05-02 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/59476
+ * python/libstdcxx/v6/printers.py (get_value_from_Rb_tree_node): New
+ function to handle both C++03 and C++11 _Rb_tree_node implementations.
+ (StdRbtreeIteratorPrinter, StdMapPrinter, StdSetPrinter): Use it.
+ * testsuite/libstdc++-prettyprinters/simple.cc: Update comment to
+ refer to...
+ * testsuite/libstdc++-prettyprinters/simple11.cc: New.
+
+ PR libstdc++/61036
+ * include/bits/shared_ptr_base.h (__shared_ptr::__shared_ptr(_Tp1*)):
+ Check the correct type in the static assertion.
+ * testsuite/20_util/shared_ptr/cons/61036.cc: New.
+
+2014-04-27 Lars Gullik Bjønnes <larsbj@gullik.org>
+
+ PR libstdc++/60710
+ * include/experimental/optional (operator!=): Implement in terms of
+ operator==.
+ * testsuite/experimental/optional/relops/1.cc: Remove operator!=.
+ * testsuite/experimental/optional/relops/2.cc: Likewise.
+ * testsuite/experimental/optional/relops/3.cc: Likewise.
+ * testsuite/experimental/optional/relops/4.cc: Likewise.
+ * testsuite/experimental/optional/relops/5.cc: Likewise.
+ * testsuite/experimental/optional/relops/6.cc: Likewise.
+
+2014-04-27 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/60497
+ * include/std/tuple (get): Qualify calls to prevent ADL.
+ * testsuite/20_util/tuple/60497.cc: New.
+
+ * include/std/tuple (tuple_element_t): Define.
+ * testsuite/20_util/tuple/tuple_element.cc: Change to compile-only
+ test.
+ * testsuite/20_util/tuple/tuple_element_t.cc: New.
+
2014-04-22 Release Manager
* GCC 4.9.0 released.
diff --git a/gcc-4.9/libstdc++-v3/doc/html/faq.html b/gcc-4.9/libstdc++-v3/doc/html/faq.html
index 2e0f3e252..81b295f03 100644
--- a/gcc-4.9/libstdc++-v3/doc/html/faq.html
+++ b/gcc-4.9/libstdc++-v3/doc/html/faq.html
@@ -223,7 +223,7 @@
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.license.what_restrictions"></a><a id="q-license.what_restrictions"></a><p><strong>2.4.</strong></p></td><td align="left" valign="top"><p>
I see. So, what restrictions are there on programs that use the library?
</p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-license.what_restrictions"></a></td><td align="left" valign="top"><p>
- None. We encourage such programs to be released as open source,
+ None. We encourage such programs to be released as free software,
but we won't punish you or sue you if you choose otherwise.
</p></td></tr><tr class="toc"><td align="left" valign="top" colspan="2"><dl><dt>3.1. <a href="faq.html#faq.how_to_install">How do I install libstdc++?
</a></dt><dt>3.2. <a href="faq.html#faq.how_to_get_sources">How does one get current libstdc++ sources?
diff --git a/gcc-4.9/libstdc++-v3/doc/xml/faq.xml b/gcc-4.9/libstdc++-v3/doc/xml/faq.xml
index 3a2fbad8e..69e2f9022 100644
--- a/gcc-4.9/libstdc++-v3/doc/xml/faq.xml
+++ b/gcc-4.9/libstdc++-v3/doc/xml/faq.xml
@@ -241,7 +241,7 @@
</question>
<answer xml:id="a-license.what_restrictions">
<para>
- None. We encourage such programs to be released as open source,
+ None. We encourage such programs to be released as free software,
but we won't punish you or sue you if you choose otherwise.
</para>
</answer>
diff --git a/gcc-4.9/libstdc++-v3/include/bits/shared_ptr_base.h b/gcc-4.9/libstdc++-v3/include/bits/shared_ptr_base.h
index 536df017d..026c5979f 100644
--- a/gcc-4.9/libstdc++-v3/include/bits/shared_ptr_base.h
+++ b/gcc-4.9/libstdc++-v3/include/bits/shared_ptr_base.h
@@ -871,7 +871,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: _M_ptr(__p), _M_refcount(__p)
{
__glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>)
- static_assert( !is_void<_Tp>::value, "incomplete type" );
+ static_assert( !is_void<_Tp1>::value, "incomplete type" );
static_assert( sizeof(_Tp1) > 0, "incomplete type" );
__enable_shared_from_this_helper(_M_refcount, __p, __p);
}
diff --git a/gcc-4.9/libstdc++-v3/include/bits/stl_iterator.h b/gcc-4.9/libstdc++-v3/include/bits/stl_iterator.h
index 1d2a52419..aa3581e33 100644
--- a/gcc-4.9/libstdc++-v3/include/bits/stl_iterator.h
+++ b/gcc-4.9/libstdc++-v3/include/bits/stl_iterator.h
@@ -736,21 +736,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_Container>::__type>& __i) _GLIBCXX_NOEXCEPT
: _M_current(__i.base()) { }
-#if __cplusplus >= 201103L
- __normal_iterator<typename _Container::pointer, _Container>
- _M_const_cast() const noexcept
- {
- using _PTraits = std::pointer_traits<typename _Container::pointer>;
- return __normal_iterator<typename _Container::pointer, _Container>
- (_PTraits::pointer_to(const_cast<typename _PTraits::element_type&>
- (*_M_current)));
- }
-#else
- __normal_iterator
- _M_const_cast() const
- { return *this; }
-#endif
-
// Forward iterator requirements
reference
operator*() const _GLIBCXX_NOEXCEPT
diff --git a/gcc-4.9/libstdc++-v3/include/bits/stl_tree.h b/gcc-4.9/libstdc++-v3/include/bits/stl_tree.h
index 4bc3c602c..cac917ea3 100644
--- a/gcc-4.9/libstdc++-v3/include/bits/stl_tree.h
+++ b/gcc-4.9/libstdc++-v3/include/bits/stl_tree.h
@@ -1073,6 +1073,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
_M_move_assign(_Rb_tree& __x)
{
+ _M_impl._M_key_compare = __x._M_impl._M_key_compare;
if (_Alloc_traits::_S_propagate_on_move_assign()
|| _Alloc_traits::_S_always_equal()
|| _M_get_Node_allocator() == __x._M_get_Node_allocator())
diff --git a/gcc-4.9/libstdc++-v3/include/bits/stl_vector.h b/gcc-4.9/libstdc++-v3/include/bits/stl_vector.h
index 7e52fde55..c33e2c6ae 100644
--- a/gcc-4.9/libstdc++-v3/include/bits/stl_vector.h
+++ b/gcc-4.9/libstdc++-v3/include/bits/stl_vector.h
@@ -1051,7 +1051,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
insert(const_iterator __position, size_type __n, const value_type& __x)
{
difference_type __offset = __position - cbegin();
- _M_fill_insert(__position._M_const_cast(), __n, __x);
+ _M_fill_insert(begin() + __offset, __n, __x);
return begin() + __offset;
}
#else
@@ -1096,7 +1096,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
_InputIterator __last)
{
difference_type __offset = __position - cbegin();
- _M_insert_dispatch(__position._M_const_cast(),
+ _M_insert_dispatch(begin() + __offset,
__first, __last, __false_type());
return begin() + __offset;
}
@@ -1144,10 +1144,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
iterator
#if __cplusplus >= 201103L
erase(const_iterator __position)
+ { return _M_erase(begin() + (__position - cbegin())); }
#else
erase(iterator __position)
+ { return _M_erase(__position); }
#endif
- { return _M_erase(__position._M_const_cast()); }
/**
* @brief Remove a range of elements.
@@ -1170,10 +1171,15 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
iterator
#if __cplusplus >= 201103L
erase(const_iterator __first, const_iterator __last)
+ {
+ const auto __beg = begin();
+ const auto __cbeg = cbegin();
+ return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg));
+ }
#else
erase(iterator __first, iterator __last)
+ { return _M_erase(__first, __last); }
#endif
- { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); }
/**
* @brief Swaps data with another %vector.
diff --git a/gcc-4.9/libstdc++-v3/include/bits/vector.tcc b/gcc-4.9/libstdc++-v3/include/bits/vector.tcc
index 1eff51447..c937b3887 100644
--- a/gcc-4.9/libstdc++-v3/include/bits/vector.tcc
+++ b/gcc-4.9/libstdc++-v3/include/bits/vector.tcc
@@ -121,14 +121,17 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
else
{
#if __cplusplus >= 201103L
+ const auto __pos = begin() + (__position - cbegin());
if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
{
_Tp __x_copy = __x;
- _M_insert_aux(__position._M_const_cast(), std::move(__x_copy));
+ _M_insert_aux(__pos, std::move(__x_copy));
}
else
+ _M_insert_aux(__pos, __x);
+#else
+ _M_insert_aux(__position, __x);
#endif
- _M_insert_aux(__position._M_const_cast(), __x);
}
return iterator(this->_M_impl._M_start + __n);
}
@@ -307,7 +310,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
++this->_M_impl._M_finish;
}
else
- _M_insert_aux(__position._M_const_cast(),
+ _M_insert_aux(begin() + (__position - cbegin()),
std::forward<_Args>(__args)...);
return iterator(this->_M_impl._M_start + __n);
}
diff --git a/gcc-4.9/libstdc++-v3/include/debug/vector b/gcc-4.9/libstdc++-v3/include/debug/vector
index 2e9cd656b..f7f54eeda 100644
--- a/gcc-4.9/libstdc++-v3/include/debug/vector
+++ b/gcc-4.9/libstdc++-v3/include/debug/vector
@@ -602,7 +602,7 @@ namespace __debug
}
else
#if __cplusplus >= 201103L
- return iterator(__first.base()._M_const_cast(), this);
+ return begin() + (__first.base() - cbegin().base());
#else
return __first;
#endif
diff --git a/gcc-4.9/libstdc++-v3/include/experimental/optional b/gcc-4.9/libstdc++-v3/include/experimental/optional
index 5f2d93fb7..2a3f29dcd 100644
--- a/gcc-4.9/libstdc++-v3/include/experimental/optional
+++ b/gcc-4.9/libstdc++-v3/include/experimental/optional
@@ -736,12 +736,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Tp>
constexpr bool
operator!=(const optional<_Tp>& __lhs, _Tp const& __rhs)
- { return !__lhs || *__lhs != __rhs; }
+ { return !__lhs || !(*__lhs == __rhs); }
template<typename _Tp>
constexpr bool
operator!=(const _Tp& __lhs, const optional<_Tp>& __rhs)
- { return !__rhs || __lhs != *__rhs; }
+ { return !__rhs || !(__lhs == *__rhs); }
template<typename _Tp>
constexpr bool
diff --git a/gcc-4.9/libstdc++-v3/include/std/functional b/gcc-4.9/libstdc++-v3/include/std/functional
index 5a987d914..0e80fa37c 100644
--- a/gcc-4.9/libstdc++-v3/include/std/functional
+++ b/gcc-4.9/libstdc++-v3/include/std/functional
@@ -2149,8 +2149,15 @@ _GLIBCXX_HAS_NESTED_TYPE(result_type)
using _Invoke = decltype(__callable_functor(std::declval<_Functor&>())
(std::declval<_ArgTypes>()...) );
+ // Used so the return type convertibility checks aren't done when
+ // performing overload resolution for copy construction/assignment.
+ template<typename _Tp>
+ using _NotSelf = __not_<is_same<_Tp, function>>;
+
template<typename _Functor>
- using _Callable = __check_func_return_type<_Invoke<_Functor>, _Res>;
+ using _Callable
+ = __and_<_NotSelf<_Functor>,
+ __check_func_return_type<_Invoke<_Functor>, _Res>>;
template<typename _Cond, typename _Tp>
using _Requires = typename enable_if<_Cond::value, _Tp>::type;
@@ -2291,7 +2298,7 @@ _GLIBCXX_HAS_NESTED_TYPE(result_type)
* reference_wrapper<F>, this function will not throw.
*/
template<typename _Functor>
- _Requires<_Callable<_Functor>, function&>
+ _Requires<_Callable<typename decay<_Functor>::type>, function&>
operator=(_Functor&& __f)
{
function(std::forward<_Functor>(__f)).swap(*this);
diff --git a/gcc-4.9/libstdc++-v3/include/std/iostream b/gcc-4.9/libstdc++-v3/include/std/iostream
index 85d2b959f..5c1086909 100644
--- a/gcc-4.9/libstdc++-v3/include/std/iostream
+++ b/gcc-4.9/libstdc++-v3/include/std/iostream
@@ -48,13 +48,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
*
* The &lt;iostream&gt; header declares the eight <em>standard stream
* objects</em>. For other declarations, see
- * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch24.html
+ * http://gcc.gnu.org/onlinedocs/libstdc++/manual/io.html
* and the @link iosfwd I/O forward declarations @endlink
*
* They are required by default to cooperate with the global C
* library's @c FILE streams, and to be available during program
- * startup and termination. For more information, see the HOWTO
- * linked to above.
+ * startup and termination. For more information, see the section of the
+ * manual linked to above.
*/
//@{
extern istream cin; /// Linked to standard input
diff --git a/gcc-4.9/libstdc++-v3/include/std/tuple b/gcc-4.9/libstdc++-v3/include/std/tuple
index 92ecdb9bc..03d87d77a 100644
--- a/gcc-4.9/libstdc++-v3/include/std/tuple
+++ b/gcc-4.9/libstdc++-v3/include/std/tuple
@@ -710,6 +710,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
add_cv<typename tuple_element<__i, _Tp>::type>::type type;
};
+#if __cplusplus > 201103L
+ template<std::size_t __i, typename _Tp>
+ using tuple_element_t = typename tuple_element<__i, _Tp>::type;
+#endif
+
/// Finds the size of a given tuple type.
template<typename _Tp>
struct tuple_size;
@@ -755,14 +760,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typename tuple_element<__i, tuple<_Elements...>>::type
>::type
get(tuple<_Elements...>& __t) noexcept
- { return __get_helper<__i>(__t); }
+ { return std::__get_helper<__i>(__t); }
template<std::size_t __i, typename... _Elements>
constexpr typename __add_c_ref<
typename tuple_element<__i, tuple<_Elements...>>::type
>::type
get(const tuple<_Elements...>& __t) noexcept
- { return __get_helper<__i>(__t); }
+ { return std::__get_helper<__i>(__t); }
template<std::size_t __i, typename... _Elements>
constexpr typename __add_r_ref<
@@ -786,17 +791,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template <typename _Tp, typename... _Types>
constexpr _Tp&
get(tuple<_Types...>& __t) noexcept
- { return __get_helper2<_Tp>(__t); }
+ { return std::__get_helper2<_Tp>(__t); }
template <typename _Tp, typename... _Types>
constexpr _Tp&&
get(tuple<_Types...>&& __t) noexcept
- { return std::move(__get_helper2<_Tp>(__t)); }
+ { return std::move(std::__get_helper2<_Tp>(__t)); }
template <typename _Tp, typename... _Types>
constexpr const _Tp&
get(const tuple<_Types...>& __t) noexcept
- { return __get_helper2<_Tp>(__t); }
+ { return std::__get_helper2<_Tp>(__t); }
#endif
// This class helps construct the various comparison operations on tuples
diff --git a/gcc-4.9/libstdc++-v3/python/libstdcxx/v6/printers.py b/gcc-4.9/libstdc++-v3/python/libstdcxx/v6/printers.py
index 05da17b61..1f1f860a5 100644
--- a/gcc-4.9/libstdc++-v3/python/libstdcxx/v6/printers.py
+++ b/gcc-4.9/libstdc++-v3/python/libstdcxx/v6/printers.py
@@ -375,6 +375,22 @@ class RbtreeIterator:
self.node = node
return result
+def get_value_from_Rb_tree_node(node):
+ """Returns the value held in an _Rb_tree_node<_Val>"""
+ try:
+ member = node.type.fields()[1].name
+ if member == '_M_value_field':
+ # C++03 implementation, node contains the value as a member
+ return node['_M_value_field']
+ elif member == '_M_storage':
+ # C++11 implementation, node stores value in __aligned_buffer
+ p = node['_M_storage']['_M_storage'].address
+ p = p.cast(node.type.template_argument(0).pointer())
+ return p.dereference()
+ except:
+ pass
+ raise ValueError, "Unsupported implementation for %s" % str(node.type)
+
# This is a pretty printer for std::_Rb_tree_iterator (which is
# std::map::iterator), and has nothing to do with the RbtreeIterator
# class above.
@@ -387,7 +403,8 @@ class StdRbtreeIteratorPrinter:
def to_string (self):
typename = str(self.val.type.strip_typedefs()) + '::_Link_type'
nodetype = gdb.lookup_type(typename).strip_typedefs()
- return self.val.cast(nodetype).dereference()['_M_value_field']
+ node = self.val.cast(nodetype).dereference()
+ return get_value_from_Rb_tree_node(node)
class StdDebugIteratorPrinter:
"Print a debug enabled version of an iterator"
@@ -417,7 +434,8 @@ class StdMapPrinter:
def next(self):
if self.count % 2 == 0:
n = self.rbiter.next()
- n = n.cast(self.type).dereference()['_M_value_field']
+ n = n.cast(self.type).dereference()
+ n = get_value_from_Rb_tree_node(n)
self.pair = n
item = n['first']
else:
@@ -458,7 +476,8 @@ class StdSetPrinter:
def next(self):
item = self.rbiter.next()
- item = item.cast(self.type).dereference()['_M_value_field']
+ item = item.cast(self.type).dereference()
+ item = get_value_from_Rb_tree_node(item)
# FIXME: this is weird ... what to do?
# Maybe a 'set' display hint?
result = ('[%d]' % self.count, item)
diff --git a/gcc-4.9/libstdc++-v3/src/c++98/ios_init.cc b/gcc-4.9/libstdc++-v3/src/c++98/ios_init.cc
index d8d2a0d25..b5c14f29b 100644
--- a/gcc-4.9/libstdc++-v3/src/c++98/ios_init.cc
+++ b/gcc-4.9/libstdc++-v3/src/c++98/ios_init.cc
@@ -37,7 +37,7 @@ namespace __gnu_internal _GLIBCXX_VISIBILITY(hidden)
{
using namespace __gnu_cxx;
- // Extern declarations for global objects in src/globals.cc.
+ // Extern declarations for global objects in src/c++98/globals.cc.
extern stdio_sync_filebuf<char> buf_cout_sync;
extern stdio_sync_filebuf<char> buf_cin_sync;
extern stdio_sync_filebuf<char> buf_cerr_sync;
diff --git a/gcc-4.9/libstdc++-v3/testsuite/20_util/tuple/tuple_element.cc b/gcc-4.9/libstdc++-v3/testsuite/20_util/tuple/tuple_element.cc
index 0dbdf10fc..3ff8e824f 100644
--- a/gcc-4.9/libstdc++-v3/testsuite/20_util/tuple/tuple_element.cc
+++ b/gcc-4.9/libstdc++-v3/testsuite/20_util/tuple/tuple_element.cc
@@ -1,4 +1,5 @@
-// { dg-options "-std=gnu++0x" }
+// { dg-options "-std=gnu++11" }
+// { dg-do compile }
// Copyright (C) 2007-2014 Free Software Foundation, Inc.
//
diff --git a/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc b/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
index 191fbc7bf..655c7e8ad 100644
--- a/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
+++ b/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1320 }
+// { dg-error "no matching" "" { target *-*-* } 1326 }
#include <vector>
diff --git a/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc b/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
index 8818a88cc..d938aa21b 100644
--- a/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
+++ b/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1246 }
+// { dg-error "no matching" "" { target *-*-* } 1252 }
#include <vector>
diff --git a/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc b/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
index 09499bcba..f88828562 100644
--- a/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
+++ b/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1246 }
+// { dg-error "no matching" "" { target *-*-* } 1252 }
#include <vector>
#include <utility>
diff --git a/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc b/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
index 674e3b5d6..316249b01 100644
--- a/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
+++ b/gcc-4.9/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1361 }
+// { dg-error "no matching" "" { target *-*-* } 1367 }
#include <vector>
diff --git a/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/1.cc b/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/1.cc
index f1408805a..3f1ee9c49 100644
--- a/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/1.cc
+++ b/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/1.cc
@@ -37,10 +37,6 @@ namespace ns
{ return std::tie(lhs.i, lhs.s) == std::tie(rhs.i, rhs.s); }
bool
- operator!=(value_type const& lhs, value_type const& rhs)
- { return !(lhs == rhs); }
-
- bool
operator<(value_type const& lhs, value_type const& rhs)
{ return std::tie(lhs.i, lhs.s) < std::tie(rhs.i, rhs.s); }
diff --git a/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/2.cc b/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/2.cc
index c7fc848de..6ee9cba76 100644
--- a/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/2.cc
+++ b/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/2.cc
@@ -37,10 +37,6 @@ namespace ns
{ return std::tie(lhs.i, lhs.s) == std::tie(rhs.i, rhs.s); }
bool
- operator!=(value_type const& lhs, value_type const& rhs)
- { return !(lhs == rhs); }
-
- bool
operator<(value_type const& lhs, value_type const& rhs)
{ return std::tie(lhs.i, lhs.s) < std::tie(rhs.i, rhs.s); }
diff --git a/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/3.cc b/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/3.cc
index 9729000d5..581d0168f 100644
--- a/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/3.cc
+++ b/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/3.cc
@@ -37,10 +37,6 @@ namespace ns
{ return std::tie(lhs.i, lhs.s) == std::tie(rhs.i, rhs.s); }
bool
- operator!=(value_type const& lhs, value_type const& rhs)
- { return !(lhs == rhs); }
-
- bool
operator<(value_type const& lhs, value_type const& rhs)
{ return std::tie(lhs.i, lhs.s) < std::tie(rhs.i, rhs.s); }
diff --git a/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/4.cc b/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/4.cc
index 45378f688..ce16fcb92 100644
--- a/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/4.cc
+++ b/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/4.cc
@@ -37,10 +37,6 @@ namespace ns
{ return std::tie(lhs.i, lhs.s) == std::tie(rhs.i, rhs.s); }
bool
- operator!=(value_type const& lhs, value_type const& rhs)
- { return !(lhs == rhs); }
-
- bool
operator<(value_type const& lhs, value_type const& rhs)
{ return std::tie(lhs.i, lhs.s) < std::tie(rhs.i, rhs.s); }
diff --git a/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/5.cc b/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/5.cc
index 008409ef4..c01bba57a 100644
--- a/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/5.cc
+++ b/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/5.cc
@@ -37,10 +37,6 @@ namespace ns
{ return std::tie(lhs.i, lhs.s) == std::tie(rhs.i, rhs.s); }
bool
- operator!=(value_type const& lhs, value_type const& rhs)
- { return !(lhs == rhs); }
-
- bool
operator<(value_type const& lhs, value_type const& rhs)
{ return std::tie(lhs.i, lhs.s) < std::tie(rhs.i, rhs.s); }
diff --git a/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/6.cc b/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/6.cc
index b17914062..a24622b5f 100644
--- a/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/6.cc
+++ b/gcc-4.9/libstdc++-v3/testsuite/experimental/optional/relops/6.cc
@@ -37,10 +37,6 @@ namespace ns
{ return std::tie(lhs.i, lhs.s) == std::tie(rhs.i, rhs.s); }
bool
- operator!=(value_type const& lhs, value_type const& rhs)
- { return !(lhs == rhs); }
-
- bool
operator<(value_type const& lhs, value_type const& rhs)
{ return std::tie(lhs.i, lhs.s) < std::tie(rhs.i, rhs.s); }
diff --git a/gcc-4.9/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc b/gcc-4.9/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
index 66ae8f70e..030207aa6 100644
--- a/gcc-4.9/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
+++ b/gcc-4.9/libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
@@ -1,4 +1,4 @@
-// If you modify this, please update debug.cc as well.
+// If you modify this, please update simple11.cc and debug.cc as well.
// { dg-do run }
// { dg-options "-g -O0" }