diff options
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 <iostream> 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" } |