diff -Nrcpad gcc-4.7.3/ChangeLog gcc-4.7.4/ChangeLog *** gcc-4.7.3/ChangeLog Thu Apr 11 07:54:40 2013 --- gcc-4.7.4/ChangeLog Thu Jun 12 12:05:13 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/LAST_UPDATED gcc-4.7.4/LAST_UPDATED *** gcc-4.7.3/LAST_UPDATED Thu Apr 11 07:59:03 2013 --- gcc-4.7.4/LAST_UPDATED Thu Jun 12 12:46:21 2014 *************** *** 1 **** ! Obtained from SVN: tags/gcc_4_7_3_release revision 197739 --- 1 ---- ! Obtained from SVN: tags/gcc_4_7_4_release revision 211579 diff -Nrcpad gcc-4.7.3/MD5SUMS gcc-4.7.4/MD5SUMS *** gcc-4.7.3/MD5SUMS Thu Apr 11 09:13:11 2013 --- gcc-4.7.4/MD5SUMS Thu Jun 12 14:25:55 2014 *************** *** 1,5 **** # This file contains the MD5 checksums of the files in the ! # gcc-4.7.3.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 --- 1,5 ---- # This file contains the MD5 checksums of the files in the ! # gcc-4.7.4.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 *************** *** 14,20 **** fe60d87048567d4fe8c8a0ed2448bcc8 COPYING.RUNTIME d32239bcb673463ab874e80d47fae504 COPYING3 6a6a8e020838b23406c81b19c1d46df6 COPYING3.LIB ! bfe3f9256a4f29dd867dad5707e09247 ChangeLog 09538b708302f1735f6fa05b622ecf5e ChangeLog.tree-ssa 23b8927fe1fb0ab321c09a4f0500aa4c INSTALL/README b9a70d438682f8726c4d189df9f4d490 INSTALL/binaries.html --- 14,20 ---- fe60d87048567d4fe8c8a0ed2448bcc8 COPYING.RUNTIME d32239bcb673463ab874e80d47fae504 COPYING3 6a6a8e020838b23406c81b19c1d46df6 COPYING3.LIB ! 51a1da902bcfbcc394a52bcbac410861 ChangeLog 09538b708302f1735f6fa05b622ecf5e ChangeLog.tree-ssa 23b8927fe1fb0ab321c09a4f0500aa4c INSTALL/README b9a70d438682f8726c4d189df9f4d490 INSTALL/binaries.html *************** d83d7ff741eb7660554e03a2bd6d44dd INSTAL *** 28,43 **** 4e791f183e31b7e4afc853a8c8248635 INSTALL/prerequisites.html 6d4f2f603157bf9ac3f10514982d6440 INSTALL/specific.html df3669d7d5e057cf09017419a4e0bda2 INSTALL/test.html ! 7dceb4444c9cb0b21fa7404abf76eff5 LAST_UPDATED 1631eb122cc01f8203da4708ee78d4ee MAINTAINERS f004f886f958071f5d33c3c72a7bd8f8 Makefile.def 79e6a5d671f545a1879ee48263fe5c9a Makefile.in c6c419b8005fb07168768568babda28c Makefile.tpl ! 982799cb44fb7071e3456de5825c0044 NEWS ec2b30b6785a025a4647df31097b2339 README b510a5285eb05298b5f3d9f5ae920588 boehm-gc/AmigaOS.c 2caafacabf758bb76a9dfce1fc544b97 boehm-gc/BCC_MAKEFILE ! 9f0497a5e211b182283c5acf2dda081c boehm-gc/ChangeLog c18075e3729cd116028480307a8e845d boehm-gc/EMX_MAKEFILE 3b7cc3be9ed3c2135bbda990e8a69303 boehm-gc/MacOS.c 5cf7764626b7dd7272b2fe11403d1b6a boehm-gc/MacProjects.sit.hqx --- 28,43 ---- 4e791f183e31b7e4afc853a8c8248635 INSTALL/prerequisites.html 6d4f2f603157bf9ac3f10514982d6440 INSTALL/specific.html df3669d7d5e057cf09017419a4e0bda2 INSTALL/test.html ! e8413d0ed66dd640e397842fda43efc9 LAST_UPDATED 1631eb122cc01f8203da4708ee78d4ee MAINTAINERS f004f886f958071f5d33c3c72a7bd8f8 Makefile.def 79e6a5d671f545a1879ee48263fe5c9a Makefile.in c6c419b8005fb07168768568babda28c Makefile.tpl ! f83d5c0e0c95a3e45d73b1941c2ee2db NEWS ec2b30b6785a025a4647df31097b2339 README b510a5285eb05298b5f3d9f5ae920588 boehm-gc/AmigaOS.c 2caafacabf758bb76a9dfce1fc544b97 boehm-gc/BCC_MAKEFILE ! 113fe0e61bf53e7b557501c56fce3a1c boehm-gc/ChangeLog c18075e3729cd116028480307a8e845d boehm-gc/EMX_MAKEFILE 3b7cc3be9ed3c2135bbda990e8a69303 boehm-gc/MacOS.c 5cf7764626b7dd7272b2fe11403d1b6a boehm-gc/MacProjects.sit.hqx *************** b04a1232318128ebd7c630fca10d02e5 boehm- *** 216,222 **** 8385976ed3a37f278f07c10341d53876 config.guess 040359150cf11493f973a46d8a25b06b config.rpath 32c03149d8dd8808dea9adf58e712886 config.sub ! 69731c037c37b031ebbcfa7f4d51cb26 config/ChangeLog 0fcd4badfe2a2191778bdf5ab94aa40c config/acinclude.m4 9238d23c68259d195b332db71892d242 config/acx.m4 6b030f5cf640bdd401ea739f54a667f8 config/asmcfi.m4 --- 216,222 ---- 8385976ed3a37f278f07c10341d53876 config.guess 040359150cf11493f973a46d8a25b06b config.rpath 32c03149d8dd8808dea9adf58e712886 config.sub ! f276332a0c8e6c4a86d22538a7eb685e config/ChangeLog 0fcd4badfe2a2191778bdf5ab94aa40c config/acinclude.m4 9238d23c68259d195b332db71892d242 config/acx.m4 6b030f5cf640bdd401ea739f54a667f8 config/asmcfi.m4 *************** b6afa5c33fb98edfaf591dd38d198b0d config *** 293,299 **** e249d18c447a8372fd1ed5f084284d6b config/zlib.m4 f7c6e22a5570b5d03737fb9faaf0bdc3 configure 65d5e5874a672db769377a1ef1b30208 configure.ac ! 121ea48b516cc593e9877e0b8ae9adfb contrib/ChangeLog 7af8d2979bf1a7cfa88e30d05fa22be2 contrib/ChangeLog.tree-ssa e0ea80d7094bf66610f2f60db444f9a1 contrib/analyze_brprob 174515e368b73ef2fc8c54c9455517bf contrib/check_GNU_style.sh --- 293,299 ---- e249d18c447a8372fd1ed5f084284d6b config/zlib.m4 f7c6e22a5570b5d03737fb9faaf0bdc3 configure 65d5e5874a672db769377a1ef1b30208 configure.ac ! bcd69f4dc1bbef3fa46906b4992d7942 contrib/ChangeLog 7af8d2979bf1a7cfa88e30d05fa22be2 contrib/ChangeLog.tree-ssa e0ea80d7094bf66610f2f60db444f9a1 contrib/analyze_brprob 174515e368b73ef2fc8c54c9455517bf contrib/check_GNU_style.sh *************** db03e57377f9eb202b7b783eb81fe40d contri *** 314,320 **** 2e831f673656f3052f95930c3203cce9 contrib/filter_params.pl 480dbaa133b74e68d41762d6596bd034 contrib/gcc.doxy 55236e85d8087042189b701cd05d84be contrib/gcc_build ! 1f0095ba601dc55c875b15a7513d4549 contrib/gcc_update 5b9eea25597ba1f5d470ed452dd83212 contrib/gennews 59304fc08afa489baa6b920cc76dc625 contrib/gthr_supp_vxw_5x.c fa945bac89ee68b410027dcfe1312f4b contrib/index-prop --- 314,320 ---- 2e831f673656f3052f95930c3203cce9 contrib/filter_params.pl 480dbaa133b74e68d41762d6596bd034 contrib/gcc.doxy 55236e85d8087042189b701cd05d84be contrib/gcc_build ! a5fcf3e318804bea1047af41cd1ecc40 contrib/gcc_update 5b9eea25597ba1f5d470ed452dd83212 contrib/gennews 59304fc08afa489baa6b920cc76dc625 contrib/gthr_supp_vxw_5x.c fa945bac89ee68b410027dcfe1312f4b contrib/index-prop *************** fa945bac89ee68b410027dcfe1312f4b contri *** 322,328 **** 0fb5c8c3cd465d8bd57b55b2548c683a contrib/paranoia.cc 9083c56c1c89c5bec355a27f78e49807 contrib/patch_tester.sh 87a19b40fbd220938cf6c23c42c255e2 contrib/prepare_patch.sh ! d17300c78817054280621175dd651a27 contrib/reghunt/ChangeLog cf247a580e49d212518de409793db0a8 contrib/reghunt/bin/gcc-build-full 724e70ea3e80f87f2a201bbe2f1eef37 contrib/reghunt/bin/gcc-build-simple 3f2318bae7562a4ad1639e686916a545 contrib/reghunt/bin/gcc-cleanup --- 322,328 ---- 0fb5c8c3cd465d8bd57b55b2548c683a contrib/paranoia.cc 9083c56c1c89c5bec355a27f78e49807 contrib/patch_tester.sh 87a19b40fbd220938cf6c23c42c255e2 contrib/prepare_patch.sh ! 7ad18a7cbb46c61cad7e367a9e4adf47 contrib/reghunt/ChangeLog cf247a580e49d212518de409793db0a8 contrib/reghunt/bin/gcc-build-full 724e70ea3e80f87f2a201bbe2f1eef37 contrib/reghunt/bin/gcc-build-simple 3f2318bae7562a4ad1639e686916a545 contrib/reghunt/bin/gcc-cleanup *************** f251d49dd87647250fcd74dd50b7835f contri *** 381,387 **** e2829fc4af4f433a6a328a62d5ce8066 contrib/reghunt/examples/reg-watch afd863c2ec84c906e20f9b9787b1f0fe contrib/reghunt/examples/reg-watch.awk 8955535523d4b5f48006bcb851ba9b4b contrib/reghunt/examples/testall ! 64b0a7e8ac2b7d58a1c099b1def13b68 contrib/regression/ChangeLog 30553bfced1b2b46bf7ca01ef6ba69d1 contrib/regression/GCC_Regression_Tester.wdgt/Default.png ad38ddd771df222eb9d413e3c7f6a751 contrib/regression/GCC_Regression_Tester.wdgt/Icon.png 777bd286c147cc02861811f66b9a4440 contrib/regression/GCC_Regression_Tester.wdgt/Info.plist --- 381,387 ---- e2829fc4af4f433a6a328a62d5ce8066 contrib/reghunt/examples/reg-watch afd863c2ec84c906e20f9b9787b1f0fe contrib/reghunt/examples/reg-watch.awk 8955535523d4b5f48006bcb851ba9b4b contrib/reghunt/examples/testall ! 3bb08964540cfb5306a6e8543ec6777a contrib/regression/ChangeLog 30553bfced1b2b46bf7ca01ef6ba69d1 contrib/regression/GCC_Regression_Tester.wdgt/Default.png ad38ddd771df222eb9d413e3c7f6a751 contrib/regression/GCC_Regression_Tester.wdgt/Icon.png 777bd286c147cc02861811f66b9a4440 contrib/regression/GCC_Regression_Tester.wdgt/Info.plist *************** f82011efd049c5b2b3bbbbd23da07f48 contri *** 403,409 **** e00fa8f7dd72b80ca5a64130e85fe4f4 contrib/uninclude 7cb42cbdf8becd280d1e16191416fb62 contrib/warn_summary 21504de31981a67b5b93b265029d1865 depcomp ! 97140608e4ba35617bbe66851130f8fd fixincludes/ChangeLog 2a322f921f84a63f1935d28805cd9fa8 fixincludes/Makefile.in a3e295399ad4c66c3985433dd62ce25d fixincludes/README 455903ad4ff71fa5c5340ef7ae41a0e6 fixincludes/README-fixinc --- 403,409 ---- e00fa8f7dd72b80ca5a64130e85fe4f4 contrib/uninclude 7cb42cbdf8becd280d1e16191416fb62 contrib/warn_summary 21504de31981a67b5b93b265029d1865 depcomp ! 2c35bdbeab25e70eddcf6d552ee3c0f1 fixincludes/ChangeLog 2a322f921f84a63f1935d28805cd9fa8 fixincludes/Makefile.in a3e295399ad4c66c3985433dd62ce25d fixincludes/README 455903ad4ff71fa5c5340ef7ae41a0e6 fixincludes/README-fixinc *************** a5e817d35ded04a0fb03999b50c0e89e fixinc *** 533,544 **** 955462b555900ecd3934223c64e21fa7 fixincludes/tests/base/types/vxTypesBase.h c78e762f2c91f2af991feda7d3d7f4b2 fixincludes/tests/base/unistd.h d227bdd632a7e8a2d0323e1d37e10d16 gcc/ABOUT-GCC-NLS ! 74a13b82b5261096ec2e1f75329e3041 gcc/BASE-VER 59530bdf33659b29e73d4adb9f9f6552 gcc/COPYING a916467b91076e631dd8edb7424769c7 gcc/COPYING.LIB d32239bcb673463ab874e80d47fae504 gcc/COPYING3 6a6a8e020838b23406c81b19c1d46df6 gcc/COPYING3.LIB ! 8ef8e70a22a6031a9012d8a7eb41921e gcc/ChangeLog a3b63c675afa7a655cc2bfa8a907af79 gcc/ChangeLog-1997 d9a88529352a010253c2e8fb1ed6023b gcc/ChangeLog-1998 240f08f81cb4699e8b49347db38233db gcc/ChangeLog-1999 --- 533,544 ---- 955462b555900ecd3934223c64e21fa7 fixincludes/tests/base/types/vxTypesBase.h c78e762f2c91f2af991feda7d3d7f4b2 fixincludes/tests/base/unistd.h d227bdd632a7e8a2d0323e1d37e10d16 gcc/ABOUT-GCC-NLS ! 1e056392e535463281b97d03e2d91ac0 gcc/BASE-VER 59530bdf33659b29e73d4adb9f9f6552 gcc/COPYING a916467b91076e631dd8edb7424769c7 gcc/COPYING.LIB d32239bcb673463ab874e80d47fae504 gcc/COPYING3 6a6a8e020838b23406c81b19c1d46df6 gcc/COPYING3.LIB ! 0e6dab56e3eb7f2fb308d302c6a424a0 gcc/ChangeLog a3b63c675afa7a655cc2bfa8a907af79 gcc/ChangeLog-1997 d9a88529352a010253c2e8fb1ed6023b gcc/ChangeLog-1998 240f08f81cb4699e8b49347db38233db gcc/ChangeLog-1999 *************** fb3fadb88e1d2b3b640cfaaa5ff11780 gcc/Ch *** 560,578 **** e7d34075f784a1023d629b2d5593e6b4 gcc/ChangeLog.ptr 44a19214e0ebd53bf291bcfe85f7492f gcc/ChangeLog.tree-ssa f8f89587d1efbf6a1f7456761d5712c5 gcc/ChangeLog.tuples ! 6c4ddfd65db33a8e7a46b747dd615795 gcc/DATESTAMP d41d8cd98f00b204e9800998ecf8427e gcc/DEV-PHASE f76db67fe6b61ed06427646baa7ba6bf gcc/FSFChangeLog 44bbf940c2e0a18217b7e604f45216df gcc/FSFChangeLog.10 fa2c2f526f330fe2ea2f87ae5685c48c gcc/FSFChangeLog.11 39ad51480c15445f5595ec9bf0ee8fba gcc/LANGUAGES ! 43af76cdea67e81101a7022e14b88abb gcc/Makefile.in 829657963f84cdbfce626a7324765d39 gcc/ONEWS 09577e2fb41405fbad79f3440f614242 gcc/README.Portability b70b91c56d951ac47b87fcee904d9c86 gcc/acinclude.m4 b005d20cd878dfe7f2b300371aab7dac gcc/aclocal.m4 30995d78221b41ce62c92b2f601b4ebb gcc/ada/9drpc.adb ! 2690953d448319861e927d9cbdae3dae gcc/ada/ChangeLog 683be0b07dc4f64f118fd5e8ae9cb30d gcc/ada/ChangeLog-2001 7aff25efb203be4136b8776cdc812956 gcc/ada/ChangeLog-2002 cd2379152000f40157d349018fb9364d gcc/ada/ChangeLog-2003 --- 560,578 ---- e7d34075f784a1023d629b2d5593e6b4 gcc/ChangeLog.ptr 44a19214e0ebd53bf291bcfe85f7492f gcc/ChangeLog.tree-ssa f8f89587d1efbf6a1f7456761d5712c5 gcc/ChangeLog.tuples ! 0128d482e17acd742d7c6c2cbf6a60a7 gcc/DATESTAMP d41d8cd98f00b204e9800998ecf8427e gcc/DEV-PHASE f76db67fe6b61ed06427646baa7ba6bf gcc/FSFChangeLog 44bbf940c2e0a18217b7e604f45216df gcc/FSFChangeLog.10 fa2c2f526f330fe2ea2f87ae5685c48c gcc/FSFChangeLog.11 39ad51480c15445f5595ec9bf0ee8fba gcc/LANGUAGES ! 1d4c33f72b0d1f9f18f6e6f33c26ce81 gcc/Makefile.in 829657963f84cdbfce626a7324765d39 gcc/ONEWS 09577e2fb41405fbad79f3440f614242 gcc/README.Portability b70b91c56d951ac47b87fcee904d9c86 gcc/acinclude.m4 b005d20cd878dfe7f2b300371aab7dac gcc/aclocal.m4 30995d78221b41ce62c92b2f601b4ebb gcc/ada/9drpc.adb ! 866fb14ebe30c291eaff25f74f761a4e gcc/ada/ChangeLog 683be0b07dc4f64f118fd5e8ae9cb30d gcc/ada/ChangeLog-2001 7aff25efb203be4136b8776cdc812956 gcc/ada/ChangeLog-2002 cd2379152000f40157d349018fb9364d gcc/ada/ChangeLog-2003 *************** f2286092a6a9cab24b7a423b15991286 gcc/ad *** 1182,1188 **** c65a31f117329a3446afecc6aae3a462 gcc/ada/atree.h 32be50d674a4fb546a7e63ae09a84ac3 gcc/ada/aux-io.c 53e051516e8f950415bb1dedfc173906 gcc/ada/back_end.adb ! f40d0c1fe9dd13724e8e6b0e50d7fb5b gcc/ada/back_end.ads 8644cac45c8ecf0b0f041a3a6d3b4b42 gcc/ada/bcheck.adb 98cd146fde62237f7d4d21fe1b9765c5 gcc/ada/bcheck.ads f045214fe9a34bb0cf0cc37abaa680c4 gcc/ada/binde.adb --- 1182,1188 ---- c65a31f117329a3446afecc6aae3a462 gcc/ada/atree.h 32be50d674a4fb546a7e63ae09a84ac3 gcc/ada/aux-io.c 53e051516e8f950415bb1dedfc173906 gcc/ada/back_end.adb ! 4bafabcec625799eb4edbe33f96f9935 gcc/ada/back_end.ads 8644cac45c8ecf0b0f041a3a6d3b4b42 gcc/ada/bcheck.adb 98cd146fde62237f7d4d21fe1b9765c5 gcc/ada/bcheck.ads f045214fe9a34bb0cf0cc37abaa680c4 gcc/ada/binde.adb *************** fbd23958a6d5c4207e39317e708436ac gcc/ad *** 1211,1217 **** e34a03897482201c5244c56338ab1659 gcc/ada/csets.adb 9af07555e86e92295201752e93a58338 gcc/ada/csets.ads 1b23a6b68a5e2b9657cf65837b09d01a gcc/ada/csinfo.adb ! 83493de99cb768e8c681845038b8c2fa gcc/ada/cstand.adb 0626c2b2827a691f6919c4f32956b44d gcc/ada/cstand.ads 99ab0769f39013a46deeb42525b65bf9 gcc/ada/cstreams.c 61437e1d9c8c1109b11ccc86cad3c393 gcc/ada/ctrl_c.c --- 1211,1217 ---- e34a03897482201c5244c56338ab1659 gcc/ada/csets.adb 9af07555e86e92295201752e93a58338 gcc/ada/csets.ads 1b23a6b68a5e2b9657cf65837b09d01a gcc/ada/csinfo.adb ! 108f2debf1a9eae2ca4ebee596b11d5c gcc/ada/cstand.adb 0626c2b2827a691f6919c4f32956b44d gcc/ada/cstand.ads 99ab0769f39013a46deeb42525b65bf9 gcc/ada/cstreams.c 61437e1d9c8c1109b11ccc86cad3c393 gcc/ada/ctrl_c.c *************** f459c88852baf5a8d82a6acef1473c32 gcc/ad *** 1534,1555 **** d7eca93022b3adc8f4a61dbe910e95d2 gcc/ada/g-zspche.adb b45654446bc74bb68ae4adef78906e9b gcc/ada/g-zspche.ads 698b837b776abdf33504479af8506a50 gcc/ada/g-zstspl.ads ! f6006df6b45e291b0f9480122fe3d158 gcc/ada/gcc-interface/Make-lang.in c79d44b648b666256ec97def51b2c015 gcc/ada/gcc-interface/Makefile.in d47cdfac076a7e474979da4139393b39 gcc/ada/gcc-interface/ada-tree.def 87a3c905a4622e86db2ff3cd1f9e38dc gcc/ada/gcc-interface/ada-tree.h 0b1c6ffed20c195e773f26671ffe4088 gcc/ada/gcc-interface/ada.h f1169670279ca47f1fd033a1818a7832 gcc/ada/gcc-interface/config-lang.in ! 74b86d9d165afda42b3b6357143a115a gcc/ada/gcc-interface/cuintp.c 79a8cdaf74dbb48a7fa4cb5a2a5107dd gcc/ada/gcc-interface/decl.c c413d4d50e9563859f4d751a4404b705 gcc/ada/gcc-interface/gadaint.h ! 5625183bb5074d04d03a5e87833860bf gcc/ada/gcc-interface/gigi.h 46e1d373e80f13f6425f491904a82f74 gcc/ada/gcc-interface/lang-specs.h 9f09ad18d39a0196d6dd36592577bca1 gcc/ada/gcc-interface/lang.opt ! c76615b9ba678149973610f8e7bcb82a gcc/ada/gcc-interface/misc.c 0f2437f51d1d6e44c365b9a2e796f0cd gcc/ada/gcc-interface/targtyps.c ! 56b1739bde078b220a88b33b4dffbe60 gcc/ada/gcc-interface/trans.c ! ff23f8fd93d4e30f6bdbf3391fb23b8d gcc/ada/gcc-interface/utils.c ea8dad53694bddd1cf1a64c84ec97df9 gcc/ada/gcc-interface/utils2.c c9aaf060940aaa50c8e52110793ba2ed gcc/ada/get_alfa.adb 3e1abd579a2bee793b5b7684cbf2b482 gcc/ada/get_alfa.ads --- 1534,1555 ---- d7eca93022b3adc8f4a61dbe910e95d2 gcc/ada/g-zspche.adb b45654446bc74bb68ae4adef78906e9b gcc/ada/g-zspche.ads 698b837b776abdf33504479af8506a50 gcc/ada/g-zstspl.ads ! 0582529cf1c2e5040fbeacb1079ea1ba gcc/ada/gcc-interface/Make-lang.in c79d44b648b666256ec97def51b2c015 gcc/ada/gcc-interface/Makefile.in d47cdfac076a7e474979da4139393b39 gcc/ada/gcc-interface/ada-tree.def 87a3c905a4622e86db2ff3cd1f9e38dc gcc/ada/gcc-interface/ada-tree.h 0b1c6ffed20c195e773f26671ffe4088 gcc/ada/gcc-interface/ada.h f1169670279ca47f1fd033a1818a7832 gcc/ada/gcc-interface/config-lang.in ! a0983c07061375f6b920e9d258499283 gcc/ada/gcc-interface/cuintp.c 79a8cdaf74dbb48a7fa4cb5a2a5107dd gcc/ada/gcc-interface/decl.c c413d4d50e9563859f4d751a4404b705 gcc/ada/gcc-interface/gadaint.h ! c24ec4f4237ddd83c7484ab90ea7c694 gcc/ada/gcc-interface/gigi.h 46e1d373e80f13f6425f491904a82f74 gcc/ada/gcc-interface/lang-specs.h 9f09ad18d39a0196d6dd36592577bca1 gcc/ada/gcc-interface/lang.opt ! 775112fc831fce703d924315f53e9493 gcc/ada/gcc-interface/misc.c 0f2437f51d1d6e44c365b9a2e796f0cd gcc/ada/gcc-interface/targtyps.c ! 3768fbadf578121f814de79c66294937 gcc/ada/gcc-interface/trans.c ! c8356922c764eaa2e481ff382feb3f3e gcc/ada/gcc-interface/utils.c ea8dad53694bddd1cf1a64c84ec97df9 gcc/ada/gcc-interface/utils2.c c9aaf060940aaa50c8e52110793ba2ed gcc/ada/get_alfa.adb 3e1abd579a2bee793b5b7684cbf2b482 gcc/ada/get_alfa.ads *************** f65e3c748fae13520dc0bab39e8b815b gcc/ad *** 2586,2613 **** c9a3387febe7e6390c4b46b23e6fbf2b gcc/ada/system-irix-n32.ads d8ae5ca1f8fb43aee5b212b722ab1612 gcc/ada/system-irix-n64.ads 8f1bba6163ace720433b96facda37dd8 gcc/ada/system-irix-o32.ads ! 4f2fdc035ec8b3ded0bed4684ca27a47 gcc/ada/system-linux-alpha.ads 9d9b1ca3c03ea4ca9154c4845e6d60c6 gcc/ada/system-linux-armeb.ads 96eba4aa723a508813b10acf5d9804d7 gcc/ada/system-linux-armel.ads 2b596e661b2669c5510949e66b2eb8d8 gcc/ada/system-linux-hppa.ads d956d324f30f1850f918ae7fe50dc32a gcc/ada/system-linux-ia64.ads ! e538efecb5091c88d40be476152d9889 gcc/ada/system-linux-mips.ads ! f1a8da47d4ee638c2e5c402a29acaf56 gcc/ada/system-linux-mips64el.ads ! 4795c3049d7ca28c8b49dcb4c7097c4e gcc/ada/system-linux-mipsel.ads c85ec72694ea802e9934bdfdff3fbb86 gcc/ada/system-linux-ppc.ads 211b99252543385cdc4d807648466a55 gcc/ada/system-linux-ppc64.ads ! fefe62acaaa893cc48547b1fe9a7709b gcc/ada/system-linux-s390.ads ! cb448c202b4cf5515d79f013b0c7a728 gcc/ada/system-linux-s390x.ads d0ec23b89c564fa0493f698c6110a470 gcc/ada/system-linux-sh4.ads ! 0f3dc5d8e7199ff1e5370da7592bcefb gcc/ada/system-linux-sparc.ads ! 2f64cd764150093343e14e40192fe317 gcc/ada/system-linux-sparcv9.ads a0bc1b5f47d34aaf30895593c2ab5c22 gcc/ada/system-linux-x86.ads 5e901b62811ad4db6936801d14abe52c gcc/ada/system-linux-x86_64.ads 1c45fd28169f93667564d43afd787411 gcc/ada/system-lynxos-ppc.ads 8f97472db2c5e7ff9c4f6e60c154d524 gcc/ada/system-lynxos-x86.ads 2e69efbe65c0f58258cc1cbaee0a265a gcc/ada/system-mingw-x86_64.ads ddf537c8b1e7eacf187131850522d662 gcc/ada/system-mingw.ads ! 54fc680ff591d235f1aebdaa6f432b07 gcc/ada/system-rtems.ads 35a0a274cb602ddd3cb8c7f9a80b5832 gcc/ada/system-solaris-sparc.ads d71a832b70fe903710bc6b252af1424a gcc/ada/system-solaris-sparcv9.ads 8426e572c19a92add266472b54e149c2 gcc/ada/system-solaris-x86.ads --- 2586,2613 ---- c9a3387febe7e6390c4b46b23e6fbf2b gcc/ada/system-irix-n32.ads d8ae5ca1f8fb43aee5b212b722ab1612 gcc/ada/system-irix-n64.ads 8f1bba6163ace720433b96facda37dd8 gcc/ada/system-irix-o32.ads ! 1fa61743e07d9cb4135e79a0dc672c8e gcc/ada/system-linux-alpha.ads 9d9b1ca3c03ea4ca9154c4845e6d60c6 gcc/ada/system-linux-armeb.ads 96eba4aa723a508813b10acf5d9804d7 gcc/ada/system-linux-armel.ads 2b596e661b2669c5510949e66b2eb8d8 gcc/ada/system-linux-hppa.ads d956d324f30f1850f918ae7fe50dc32a gcc/ada/system-linux-ia64.ads ! c608dec3795ace7461c249ea13b780ba gcc/ada/system-linux-mips.ads ! 311c783603920d8b50c9ee01f496bad4 gcc/ada/system-linux-mips64el.ads ! fbb2c025ff615eed10bf34ca73d83a82 gcc/ada/system-linux-mipsel.ads c85ec72694ea802e9934bdfdff3fbb86 gcc/ada/system-linux-ppc.ads 211b99252543385cdc4d807648466a55 gcc/ada/system-linux-ppc64.ads ! 5563c0f4284e52684ad30a18ba1f6097 gcc/ada/system-linux-s390.ads ! 2fc9a140f8d6faaa160fcec38f01f329 gcc/ada/system-linux-s390x.ads d0ec23b89c564fa0493f698c6110a470 gcc/ada/system-linux-sh4.ads ! b959a49eb7962dbc5e63ca1c9e5f6d3c gcc/ada/system-linux-sparc.ads ! 97a4fe7c0aaf50a452a7963002e9c797 gcc/ada/system-linux-sparcv9.ads a0bc1b5f47d34aaf30895593c2ab5c22 gcc/ada/system-linux-x86.ads 5e901b62811ad4db6936801d14abe52c gcc/ada/system-linux-x86_64.ads 1c45fd28169f93667564d43afd787411 gcc/ada/system-lynxos-ppc.ads 8f97472db2c5e7ff9c4f6e60c154d524 gcc/ada/system-lynxos-x86.ads 2e69efbe65c0f58258cc1cbaee0a265a gcc/ada/system-mingw-x86_64.ads ddf537c8b1e7eacf187131850522d662 gcc/ada/system-mingw.ads ! 77455fc53024fce45d93094493eb163a gcc/ada/system-rtems.ads 35a0a274cb602ddd3cb8c7f9a80b5832 gcc/ada/system-solaris-sparc.ads d71a832b70fe903710bc6b252af1424a gcc/ada/system-solaris-sparcv9.ads 8426e572c19a92add266472b54e149c2 gcc/ada/system-solaris-x86.ads *************** d71a832b70fe903710bc6b252af1424a gcc/ad *** 2615,2621 **** 61fcb95a1d6f206565891e2cbe734f25 gcc/ada/system-tru64.ads 2723f6105944551d7ba2638f9f7d29a2 gcc/ada/system-vms-ia64.ads 06aac1412cf51b1b24cd88d9dffe9fe6 gcc/ada/system-vms_64.ads ! 893a17c4435356ed5602e7fe314a2eb1 gcc/ada/system-vxworks-arm.ads daef9c462d51e57d54c5e211c7e41d67 gcc/ada/system-vxworks-m68k.ads c791b71b17fc3aac6e0aeed0e8cd14f6 gcc/ada/system-vxworks-mips.ads bcc4c51f339237462f3be9fb4e067df7 gcc/ada/system-vxworks-ppc.ads --- 2615,2621 ---- 61fcb95a1d6f206565891e2cbe734f25 gcc/ada/system-tru64.ads 2723f6105944551d7ba2638f9f7d29a2 gcc/ada/system-vms-ia64.ads 06aac1412cf51b1b24cd88d9dffe9fe6 gcc/ada/system-vms_64.ads ! 44655c83e15dd23a55a91b28a8205689 gcc/ada/system-vxworks-arm.ads daef9c462d51e57d54c5e211c7e41d67 gcc/ada/system-vxworks-m68k.ads c791b71b17fc3aac6e0aeed0e8cd14f6 gcc/ada/system-vxworks-mips.ads bcc4c51f339237462f3be9fb4e067df7 gcc/ada/system-vxworks-ppc.ads *************** b57c8a4ce2d282f6d31f64b0e9f381b6 gcc/ad *** 2691,2719 **** 259475fd05cfa434a3df9b232287b8bd gcc/ada/xutil.adb f793c0fc3ad8d56b2f810ef22a2a1bae gcc/ada/xutil.ads 8b9a07a3eeb4ed518eebf0f69d8d0afa gcc/addresses.h ! fb55f17c16589d1fc68c640a2fcbdf38 gcc/alias.c 806ecb2b8dbc868bf6c9d336aa9c84f3 gcc/alias.h 851e63a649b8b7a20ab838c2156f060e gcc/alloc-pool.c f43f7b205cd7b61d9b945a1b1a27ae94 gcc/alloc-pool.h 9d77c2d2074a7c7125151f39baacf0bd gcc/attribs.c 043eabc2ccf770fa8cc915971e9e0f66 gcc/auto-inc-dec.c ccb55646bf12a109ead9b1d27e36ef3d gcc/basic-block.h ! d6f6a8832d4bba8a36070c9222c1e4c1 gcc/bb-reorder.c 2c715dbda37cc5eaf2eef3213e7189d2 gcc/bb-reorder.h 92cc82db4e5181fc97ea6d02998a0851 gcc/bitmap.c 9a8cdcee218281a61d7593fb08c16f97 gcc/bitmap.h 78c684cc5aa26d269f958b1ccab7e0c3 gcc/bt-load.c 5dd4d939b2820379a866b5ef47c76c21 gcc/builtin-attrs.def ff6c67529af6419d3976feb2c800e7bb gcc/builtin-types.def ! 1151c728c52d0e9538d138fde9479e70 gcc/builtins.c ddf863dd75f0b618b8a6bc7cfddc4c26 gcc/builtins.def 88c52ea9d8e4609be42f62f8e9cb5c15 gcc/builtins.h 052ff25c8f75c86c4ec9ed732a63be0c gcc/c-aux-info.c 679ab62bc94d1d2297cdffb246f3f55e gcc/c-config-lang.in 659bd21f4a74e0a1a5ed866c39b7486f gcc/c-convert.c ! b9d8de44b3f283e508a1a67d17240782 gcc/c-decl.c 7b6ca63efd5fb2c3125f9d044b219a1b gcc/c-errors.c ! e3d2d4b31042acddc547beabd75c60cf gcc/c-family/ChangeLog c786c7c35c0b370b36202054399be255 gcc/c-family/c-ada-spec.c 937a6f95b3815b61962a56f8cfdfc10e gcc/c-family/c-ada-spec.h 38282cda1325e070c0b902702e4916c5 gcc/c-family/c-common.c --- 2691,2719 ---- 259475fd05cfa434a3df9b232287b8bd gcc/ada/xutil.adb f793c0fc3ad8d56b2f810ef22a2a1bae gcc/ada/xutil.ads 8b9a07a3eeb4ed518eebf0f69d8d0afa gcc/addresses.h ! c3d1747801acf55b86d8676e5c19d2c8 gcc/alias.c 806ecb2b8dbc868bf6c9d336aa9c84f3 gcc/alias.h 851e63a649b8b7a20ab838c2156f060e gcc/alloc-pool.c f43f7b205cd7b61d9b945a1b1a27ae94 gcc/alloc-pool.h 9d77c2d2074a7c7125151f39baacf0bd gcc/attribs.c 043eabc2ccf770fa8cc915971e9e0f66 gcc/auto-inc-dec.c ccb55646bf12a109ead9b1d27e36ef3d gcc/basic-block.h ! b9b0ff61f57670c78896cf074ce990e3 gcc/bb-reorder.c 2c715dbda37cc5eaf2eef3213e7189d2 gcc/bb-reorder.h 92cc82db4e5181fc97ea6d02998a0851 gcc/bitmap.c 9a8cdcee218281a61d7593fb08c16f97 gcc/bitmap.h 78c684cc5aa26d269f958b1ccab7e0c3 gcc/bt-load.c 5dd4d939b2820379a866b5ef47c76c21 gcc/builtin-attrs.def ff6c67529af6419d3976feb2c800e7bb gcc/builtin-types.def ! 9fc6ab2bd5bb51b212ad556702e8acf1 gcc/builtins.c ddf863dd75f0b618b8a6bc7cfddc4c26 gcc/builtins.def 88c52ea9d8e4609be42f62f8e9cb5c15 gcc/builtins.h 052ff25c8f75c86c4ec9ed732a63be0c gcc/c-aux-info.c 679ab62bc94d1d2297cdffb246f3f55e gcc/c-config-lang.in 659bd21f4a74e0a1a5ed866c39b7486f gcc/c-convert.c ! e6169ac3d24fbccc14506038bbe2eae5 gcc/c-decl.c 7b6ca63efd5fb2c3125f9d044b219a1b gcc/c-errors.c ! 2b611f33f2a35157839a8eeb534beb9a gcc/c-family/ChangeLog c786c7c35c0b370b36202054399be255 gcc/c-family/c-ada-spec.c 937a6f95b3815b61962a56f8cfdfc10e gcc/c-family/c-ada-spec.h 38282cda1325e070c0b902702e4916c5 gcc/c-family/c-common.c *************** b999c78463c851d7efdfb6503fda35c1 gcc/c- *** 2736,2744 **** 63052c5a19c3ada73e69cfcac44ba6a9 gcc/c-family/c-pretty-print.h bd30573a78869d1ea13c66e367e955a5 gcc/c-family/c-semantics.c f6458c87cd03a350947b1f54a950f272 gcc/c-family/c-target-def.h ! 0e312ee95b0e9addc8108c9d96faadaa gcc/c-family/c-target.def 01554e7535ea3bfec5f2b92dadfe9e19 gcc/c-family/c-target.h ! bd1bcc6806874633262e10030a6ce473 gcc/c-family/c.opt 40d4a219ffa685d781d09bf9fa4fa3dc gcc/c-family/stub-objc.c 03e37a0d61062b6809d6e02d25ca610c gcc/c-lang.c 5468a3ad6eec5520adaa6f7576b3e42c gcc/c-lang.h --- 2736,2744 ---- 63052c5a19c3ada73e69cfcac44ba6a9 gcc/c-family/c-pretty-print.h bd30573a78869d1ea13c66e367e955a5 gcc/c-family/c-semantics.c f6458c87cd03a350947b1f54a950f272 gcc/c-family/c-target-def.h ! 740b7c8778f67a6afea93742527871f7 gcc/c-family/c-target.def 01554e7535ea3bfec5f2b92dadfe9e19 gcc/c-family/c-target.h ! 65d939b12c7677ef7e9b77bad3dade50 gcc/c-family/c.opt 40d4a219ffa685d781d09bf9fa4fa3dc gcc/c-family/stub-objc.c 03e37a0d61062b6809d6e02d25ca610c gcc/c-lang.c 5468a3ad6eec5520adaa6f7576b3e42c gcc/c-lang.h *************** bd1bcc6806874633262e10030a6ce473 gcc/c- *** 2752,2759 **** 4a7bd3c0ad54ad003a2dfb01ad13da4e gcc/cfg.c d0ff7c24e52b4523b074bea6a8d60e7e gcc/cfganal.c d0f31a8e3e01de3c8bba830040efdd24 gcc/cfgbuild.c ! 19f8da8f5d961ea3e986d858f7f11807 gcc/cfgcleanup.c ! d241f3d096d88054de25cd1fa0eac752 gcc/cfgexpand.c cda475b9b48f7cc96eba8b8f3afaa7e4 gcc/cfghooks.c 97021c9d8921771b97c0be2bd91673ab gcc/cfghooks.h a0e4817febcb3673dd5f45eedf308fc4 gcc/cfglayout.c --- 2752,2759 ---- 4a7bd3c0ad54ad003a2dfb01ad13da4e gcc/cfg.c d0ff7c24e52b4523b074bea6a8d60e7e gcc/cfganal.c d0f31a8e3e01de3c8bba830040efdd24 gcc/cfgbuild.c ! 6eba5e19f5be2ce18372dc4e735506cd gcc/cfgcleanup.c ! 40c13d5f84a52781e4f26d5e940b8794 gcc/cfgexpand.c cda475b9b48f7cc96eba8b8f3afaa7e4 gcc/cfghooks.c 97021c9d8921771b97c0be2bd91673ab gcc/cfghooks.h a0e4817febcb3673dd5f45eedf308fc4 gcc/cfglayout.c *************** f8bf15d643e5e22c6dd454c82feb7c0a gcc/cf *** 2769,2777 **** d5d316a0160fd75b7be6f2d2fceb796a gcc/cgraphunit.c a9cef1133fc39f3870bd83bb39474c75 gcc/cif-code.def 69feeb0f03023f3513e45010e46f1112 gcc/collect2-aix.c ! b7485300552aea793f4b36a7974db9e8 gcc/collect2-aix.h ! c628deda1d9e460469e17820678e1c15 gcc/collect2.c ! 8de3a739c709a4811977903ec5a4c2ad gcc/collect2.h 33944293e76f7bd80203791a6533026a gcc/combine-stack-adj.c 38b77788cd340700930d79183553ff02 gcc/combine.c 697b7a1e676825f866c2c4cbabd66e64 gcc/common.opt --- 2769,2777 ---- d5d316a0160fd75b7be6f2d2fceb796a gcc/cgraphunit.c a9cef1133fc39f3870bd83bb39474c75 gcc/cif-code.def 69feeb0f03023f3513e45010e46f1112 gcc/collect2-aix.c ! 825cf7626d842c24e486654be35ee2a3 gcc/collect2-aix.h ! e1329c08cee214201441495294ce2e25 gcc/collect2.c ! 1016e6b66eedc59a4963db2c2a0bbfbc gcc/collect2.h 33944293e76f7bd80203791a6533026a gcc/combine-stack-adj.c 38b77788cd340700930d79183553ff02 gcc/combine.c 697b7a1e676825f866c2c4cbabd66e64 gcc/common.opt *************** b8e741aeef723b0a904c533adda181f1 gcc/co *** 2823,2837 **** 35608c0792e77eef455d926dff081abf gcc/compare-elim.c 162c077c493d89717647c605b5b81996 gcc/conditions.h 5cf36547e5b390f3948c5c2754738b5f gcc/config.build ! 51fc6d095f1861f9925f0297f40e6069 gcc/config.gcc bfbb2740ad7e066f6985fc38bbe129f5 gcc/config.host 443e2c7d7439c5384c7c309eec3d20ae gcc/config.in 8e697813dc96ca90f5d0f4c196efe2cc gcc/config/README 04f79f407d6d013075899fae724a8e04 gcc/config/alpha/alpha-modes.def b251543ffb0d5dc185eb038850d311b2 gcc/config/alpha/alpha-protos.h ! 9cad89311a5263fb853cb088212ed69e gcc/config/alpha/alpha.c 1581cdd1e8657aa5daa99781ce7d73a8 gcc/config/alpha/alpha.h ! b0c32dd96b60e26084d922835476eda6 gcc/config/alpha/alpha.md de8e700641c687562ecf731c89b7f96e gcc/config/alpha/alpha.opt 58dfa1d9a0a5e3b78302a6829d4635da gcc/config/alpha/constraints.md 02b8ea6fdf1fea20329cdc171b4c643b gcc/config/alpha/driver-alpha.c --- 2823,2837 ---- 35608c0792e77eef455d926dff081abf gcc/compare-elim.c 162c077c493d89717647c605b5b81996 gcc/conditions.h 5cf36547e5b390f3948c5c2754738b5f gcc/config.build ! 1e022b8a627e34df74c6b09ff97b7390 gcc/config.gcc bfbb2740ad7e066f6985fc38bbe129f5 gcc/config.host 443e2c7d7439c5384c7c309eec3d20ae gcc/config.in 8e697813dc96ca90f5d0f4c196efe2cc gcc/config/README 04f79f407d6d013075899fae724a8e04 gcc/config/alpha/alpha-modes.def b251543ffb0d5dc185eb038850d311b2 gcc/config/alpha/alpha-protos.h ! db757e70fde2d7df1454bc5b0e9471ad gcc/config/alpha/alpha.c 1581cdd1e8657aa5daa99781ce7d73a8 gcc/config/alpha/alpha.h ! 7f16b5a128e645b0938ba415bc946394 gcc/config/alpha/alpha.md de8e700641c687562ecf731c89b7f96e gcc/config/alpha/alpha.opt 58dfa1d9a0a5e3b78302a6829d4635da gcc/config/alpha/constraints.md 02b8ea6fdf1fea20329cdc171b4c643b gcc/config/alpha/driver-alpha.c *************** d87333f2bf2086362baa8f608ab912d2 gcc/co *** 2864,2878 **** 944879d97105dc442c64af803ea36340 gcc/config/arm/arm-fixed.md babe0aa80022fcc25982d57472fe9c9b gcc/config/arm/arm-fpus.def 3e0ac23e7964653ba9954b4486538245 gcc/config/arm/arm-generic.md ! 4d9ba1a8393e5e5e1f80db6d54eea73b gcc/config/arm/arm-ldmstm.ml 785d76a7384e0631f4d2a323bdc60648 gcc/config/arm/arm-modes.def eef7e62bea34aa9f13340d59f71bebc8 gcc/config/arm/arm-opts.h 57b9028957820eda924a8a66de4ff883 gcc/config/arm/arm-protos.h fbb66882066c5828a80d02b26ac3d0ae gcc/config/arm/arm-tables.opt 2c097a7beb32503d7832ddb4e9848a58 gcc/config/arm/arm-tune.md ! 9850ed8c3939e982623728e086ab37c6 gcc/config/arm/arm.c ! d046d1acfd11db2882fd79133f58359c gcc/config/arm/arm.h ! 531183ec8abb4a16bb19f2d3ce7d9d45 gcc/config/arm/arm.md ad94d6b683910f0195398677e1bfa8a7 gcc/config/arm/arm.opt 3e100a448539aab31c3af8bb0d9f5c8f gcc/config/arm/arm1020e.md 6ce550532f1eb772756d2052de0611cf gcc/config/arm/arm1026ejs.md --- 2864,2878 ---- 944879d97105dc442c64af803ea36340 gcc/config/arm/arm-fixed.md babe0aa80022fcc25982d57472fe9c9b gcc/config/arm/arm-fpus.def 3e0ac23e7964653ba9954b4486538245 gcc/config/arm/arm-generic.md ! c08a9fdb6c79f1b9959640ff0ae57176 gcc/config/arm/arm-ldmstm.ml 785d76a7384e0631f4d2a323bdc60648 gcc/config/arm/arm-modes.def eef7e62bea34aa9f13340d59f71bebc8 gcc/config/arm/arm-opts.h 57b9028957820eda924a8a66de4ff883 gcc/config/arm/arm-protos.h fbb66882066c5828a80d02b26ac3d0ae gcc/config/arm/arm-tables.opt 2c097a7beb32503d7832ddb4e9848a58 gcc/config/arm/arm-tune.md ! bba70394bad530e2cd845a5634b145c6 gcc/config/arm/arm.c ! 8bb52e9de7adbbb7145c7a8631ad179a gcc/config/arm/arm.h ! ac0f0f63be01a27871d474820c3037b6 gcc/config/arm/arm.md ad94d6b683910f0195398677e1bfa8a7 gcc/config/arm/arm.opt 3e100a448539aab31c3af8bb0d9f5c8f gcc/config/arm/arm1020e.md 6ce550532f1eb772756d2052de0611cf gcc/config/arm/arm1026ejs.md *************** eef00c94690241a9585599eed4e05970 gcc/co *** 2907,2913 **** 96c56a3930e51c7cf794d58ff33d6dd8 gcc/config/arm/gentune.sh 33b6873e3c031eefe2a23059c7ba9321 gcc/config/arm/iterators.md da7328ed698862273adea2e0f71895b4 gcc/config/arm/iwmmxt.md ! 7709ebdc7ff07250da9f2f14866cbdff gcc/config/arm/ldmstm.md 6722e9f38263d23e58e60c816b978a01 gcc/config/arm/linux-eabi.h 2556963d801e8cd879c05348a1ce9699 gcc/config/arm/linux-elf.h fffe0cd79badf432823a50259dd55831 gcc/config/arm/linux-gas.h --- 2907,2913 ---- 96c56a3930e51c7cf794d58ff33d6dd8 gcc/config/arm/gentune.sh 33b6873e3c031eefe2a23059c7ba9321 gcc/config/arm/iterators.md da7328ed698862273adea2e0f71895b4 gcc/config/arm/iwmmxt.md ! 7e218b3b5a9c7c91256f539f4885a192 gcc/config/arm/ldmstm.md 6722e9f38263d23e58e60c816b978a01 gcc/config/arm/linux-eabi.h 2556963d801e8cd879c05348a1ce9699 gcc/config/arm/linux-elf.h fffe0cd79badf432823a50259dd55831 gcc/config/arm/linux-gas.h *************** fffe0cd79badf432823a50259dd55831 gcc/co *** 2916,2928 **** 602ee36dfc441aed277bd3a9e86cb305 gcc/config/arm/neon-gen.ml 22836cf2992b11cc2a5690e51dbeb970 gcc/config/arm/neon-schedgen.ml d3647446a08819437bacdead0a6a2588 gcc/config/arm/neon-testgen.ml ! 00fdb000e1910f0287d239fec26b721e gcc/config/arm/neon.md 531b378f24a64e1cdbb40c4d11f8144d gcc/config/arm/neon.ml 687bc6130e11dd3f8a7ee79919a8ce7a gcc/config/arm/netbsd-elf.h 66e95611835cc621d5bf4e22d3e6e983 gcc/config/arm/pe.c e05d57130fd93feefe17c3ecd1253110 gcc/config/arm/pe.h f97a78d326ecb87773e6d8b5bec8ea8a gcc/config/arm/pe.opt ! 16c6266cef951876ed27a2c01597a771 gcc/config/arm/predicates.md b996ebee8b664875e1bf6124875500da gcc/config/arm/rtems-eabi.h c2ac5310ca643908da24b866a256ce6c gcc/config/arm/rtems-elf.h cabdd9c0d7a66efc9a477a982c2a9ed7 gcc/config/arm/semi.h --- 2916,2928 ---- 602ee36dfc441aed277bd3a9e86cb305 gcc/config/arm/neon-gen.ml 22836cf2992b11cc2a5690e51dbeb970 gcc/config/arm/neon-schedgen.ml d3647446a08819437bacdead0a6a2588 gcc/config/arm/neon-testgen.ml ! 2c9de1f89bce653622ba34b1095788ce gcc/config/arm/neon.md 531b378f24a64e1cdbb40c4d11f8144d gcc/config/arm/neon.ml 687bc6130e11dd3f8a7ee79919a8ce7a gcc/config/arm/netbsd-elf.h 66e95611835cc621d5bf4e22d3e6e983 gcc/config/arm/pe.c e05d57130fd93feefe17c3ecd1253110 gcc/config/arm/pe.h f97a78d326ecb87773e6d8b5bec8ea8a gcc/config/arm/pe.opt ! cf3e4e73db03a06fd7f9831c707282c5 gcc/config/arm/predicates.md b996ebee8b664875e1bf6124875500da gcc/config/arm/rtems-eabi.h c2ac5310ca643908da24b866a256ce6c gcc/config/arm/rtems-elf.h cabdd9c0d7a66efc9a477a982c2a9ed7 gcc/config/arm/semi.h *************** bc9651f25f9cd8f7e724aacbbac25ce2 gcc/co *** 2934,2950 **** e3950ec6bd159734835f8f8fb143efc6 gcc/config/arm/t-linux-androideabi c9ff70e499bbaa75a5eb47016fcb2a64 gcc/config/arm/t-linux-eabi de1f5476a1a858d915c11ffea2c56ee5 gcc/config/arm/t-rtems ! 8e6de408491dfa0c27b80b7cf422f986 gcc/config/arm/t-rtems-eabi 5abb037ba2d7c265bfdb0d2d3b0afdcb gcc/config/arm/t-strongarm-elf c76720130047df0743c4dc72eb0803ae gcc/config/arm/t-symbian 35768947c735ceea072b93e19f9709e0 gcc/config/arm/t-vxworks 24459ee853cb42722a318bcb0fa427bd gcc/config/arm/t-wince-pe ! e8406170b71ab0948a4c59b3c2c9d2e3 gcc/config/arm/thumb2.md f57b1a9a576e505c6c6bf9d29f3ec14a gcc/config/arm/uclinux-eabi.h 6f3fb666d78b72269b29c4444fcbfc2e gcc/config/arm/uclinux-elf.h 803752914a126853d4ff1cf394307316 gcc/config/arm/unknown-elf.h c25466cad61b6544e72a68424dfbac32 gcc/config/arm/vec-common.md ! a9214872ef090f95a3cfa178a91bba17 gcc/config/arm/vfp.md 2fa1eb41329ac7b0ab4375a7212094f1 gcc/config/arm/vfp11.md f60087b05e2379d68f4de3222246120a gcc/config/arm/vxworks.h 57f22728b34efe0937f1cd5ac307bc48 gcc/config/arm/vxworks.opt --- 2934,2950 ---- e3950ec6bd159734835f8f8fb143efc6 gcc/config/arm/t-linux-androideabi c9ff70e499bbaa75a5eb47016fcb2a64 gcc/config/arm/t-linux-eabi de1f5476a1a858d915c11ffea2c56ee5 gcc/config/arm/t-rtems ! cda57f2e60bf2b2516287537752ed00e gcc/config/arm/t-rtems-eabi 5abb037ba2d7c265bfdb0d2d3b0afdcb gcc/config/arm/t-strongarm-elf c76720130047df0743c4dc72eb0803ae gcc/config/arm/t-symbian 35768947c735ceea072b93e19f9709e0 gcc/config/arm/t-vxworks 24459ee853cb42722a318bcb0fa427bd gcc/config/arm/t-wince-pe ! 35656fa9bcbf4a80a241a81ef837da10 gcc/config/arm/thumb2.md f57b1a9a576e505c6c6bf9d29f3ec14a gcc/config/arm/uclinux-eabi.h 6f3fb666d78b72269b29c4444fcbfc2e gcc/config/arm/uclinux-elf.h 803752914a126853d4ff1cf394307316 gcc/config/arm/unknown-elf.h c25466cad61b6544e72a68424dfbac32 gcc/config/arm/vec-common.md ! a468b290373cd08eb76ec03d14b1c406 gcc/config/arm/vfp.md 2fa1eb41329ac7b0ab4375a7212094f1 gcc/config/arm/vfp11.md f60087b05e2379d68f4de3222246120a gcc/config/arm/vxworks.h 57f22728b34efe0937f1cd5ac307bc48 gcc/config/arm/vxworks.opt *************** de7c57a9569810baf3f897705443ca3b gcc/co *** 2959,2967 **** eaaa2c80fcad54cd75dc77f94b7325fc gcc/config/avr/avr-protos.h 925c6dea2f32d430268ad9494fc6d6ab gcc/config/avr/avr-stdint.h f96cc07fdf2c5a1fdd3f3172621fd1ea gcc/config/avr/avr-tables.opt ! c33733e436510f54284b7631084ee985 gcc/config/avr/avr.c bfd470a1b299105f05fd08376ada547d gcc/config/avr/avr.h ! 5ece769b368f796d0a8dec34993e0572 gcc/config/avr/avr.md 6f3794f599cc65749e586bff65516d45 gcc/config/avr/avr.opt 897ba35be360d8222d985dcf545fd9f4 gcc/config/avr/avrlibc.h 13db609fbe0bffc7295b210c2fdd73c7 gcc/config/avr/builtins.def --- 2959,2967 ---- eaaa2c80fcad54cd75dc77f94b7325fc gcc/config/avr/avr-protos.h 925c6dea2f32d430268ad9494fc6d6ab gcc/config/avr/avr-stdint.h f96cc07fdf2c5a1fdd3f3172621fd1ea gcc/config/avr/avr-tables.opt ! 16e82872d418edf0d0158ee0fce6eca1 gcc/config/avr/avr.c bfd470a1b299105f05fd08376ada547d gcc/config/avr/avr.h ! 625fcbee2d8d4ebfa2fa57376e821767 gcc/config/avr/avr.md 6f3794f599cc65749e586bff65516d45 gcc/config/avr/avr.opt 897ba35be360d8222d985dcf545fd9f4 gcc/config/avr/avrlibc.h 13db609fbe0bffc7295b210c2fdd73c7 gcc/config/avr/builtins.def *************** b4f272e076661fec4cdb3096082ae9f8 gcc/co *** 3041,3054 **** de1e699af4d7061045d33403be581cb9 gcc/config/cris/t-cris 4c49efc67f38fbff1004c2a94efe4f03 gcc/config/cris/t-elfmulti 5657034355d2720466dad6b98f794a8f gcc/config/cris/t-linux ! f2438351146a39794e23952caeb2eedc gcc/config/darwin-c.c 8b10a3db8d0e57c44f11cf85da44003c gcc/config/darwin-driver.c b2fae17b46f937ccb27b8b230ecbfe3c gcc/config/darwin-f.c 8542b57bc35681f6ee5ae657995b4775 gcc/config/darwin-ppc-ldouble-patch.def ! 91cb463f1091dca6bb1b1ff3d1b48403 gcc/config/darwin-protos.h dc7847bbecbda96bc1374ed3c4e1e58f gcc/config/darwin-sections.def ! 7a2ed526d6ff3514960d1dbc5dd9afb5 gcc/config/darwin.c ! 5ac954cdf148c0865ab1b9f792f12ecf gcc/config/darwin.h d47b0c8283c8a2a258f3e6b9eff51754 gcc/config/darwin.opt 39c9032d6a23c21adb5cb4fc26b4f29b gcc/config/darwin10.h 7c9422c269f21e54dcbb01553454d187 gcc/config/darwin9.h --- 3041,3054 ---- de1e699af4d7061045d33403be581cb9 gcc/config/cris/t-cris 4c49efc67f38fbff1004c2a94efe4f03 gcc/config/cris/t-elfmulti 5657034355d2720466dad6b98f794a8f gcc/config/cris/t-linux ! b59cb46ac60ef5a431a711083f4f6369 gcc/config/darwin-c.c 8b10a3db8d0e57c44f11cf85da44003c gcc/config/darwin-driver.c b2fae17b46f937ccb27b8b230ecbfe3c gcc/config/darwin-f.c 8542b57bc35681f6ee5ae657995b4775 gcc/config/darwin-ppc-ldouble-patch.def ! 97169d5125ff402883714d2fec72940e gcc/config/darwin-protos.h dc7847bbecbda96bc1374ed3c4e1e58f gcc/config/darwin-sections.def ! a68800696a4c601872d6800d84182578 gcc/config/darwin.c ! 3f513a68efd0013d4614575017a92b80 gcc/config/darwin.h d47b0c8283c8a2a258f3e6b9eff51754 gcc/config/darwin.opt 39c9032d6a23c21adb5cb4fc26b4f29b gcc/config/darwin10.h 7c9422c269f21e54dcbb01553454d187 gcc/config/darwin9.h *************** afc2a4a02051e261bbe685f4f05d54ef gcc/co *** 3149,3157 **** d317a2b3352d2d3715ed395b12799ba0 gcc/config/i386/djgpp-stdint.h e14c7215c369c667ac9c0cf4e73b4639 gcc/config/i386/djgpp.h 14330dd11be7ad7b247a2a6fd090aff8 gcc/config/i386/djgpp.opt ! 85b4d815328380a19224d1bf1f0312cf gcc/config/i386/driver-i386.c cb7f66bf6fccb6d8a238dfbcc69cf800 gcc/config/i386/emmintrin.h ! f60a7f36538c0bd05533cd4b2af8875a gcc/config/i386/f16cintrin.h c9989f34f95b734a3936a68c1a525598 gcc/config/i386/fma4intrin.h 16985900d2f64211d0bfbdba4ff02e22 gcc/config/i386/fmaintrin.h 8ca990fbf5f1e7779e8e6c647691276b gcc/config/i386/freebsd.h --- 3149,3157 ---- d317a2b3352d2d3715ed395b12799ba0 gcc/config/i386/djgpp-stdint.h e14c7215c369c667ac9c0cf4e73b4639 gcc/config/i386/djgpp.h 14330dd11be7ad7b247a2a6fd090aff8 gcc/config/i386/djgpp.opt ! 5afff5c3920c5d35f8c5803574cb2ed7 gcc/config/i386/driver-i386.c cb7f66bf6fccb6d8a238dfbcc69cf800 gcc/config/i386/emmintrin.h ! 56f56959e19301a3b182c7f1185f83e3 gcc/config/i386/f16cintrin.h c9989f34f95b734a3936a68c1a525598 gcc/config/i386/fma4intrin.h 16985900d2f64211d0bfbdba4ff02e22 gcc/config/i386/fmaintrin.h 8ca990fbf5f1e7779e8e6c647691276b gcc/config/i386/freebsd.h *************** e264944097e94ba6d57e37a94c760b40 gcc/co *** 3173,3181 **** d10868eb41da45bd266e310e1ab4685f gcc/config/i386/i386-modes.def 54bb79c818bd9867e64bb787b6362f2a gcc/config/i386/i386-opts.h fbe59491e1417dd3d3b3149e71cd8e37 gcc/config/i386/i386-protos.h ! 6f1f1f35ae96c05ae2c9002b1e067d74 gcc/config/i386/i386.c fd9870076ee9493d24d15ef9096d2564 gcc/config/i386/i386.h ! 69ed39d2b71a9ada925fa0d915651fdb gcc/config/i386/i386.md daea248d353429e5b0cfeab1e41fe0d3 gcc/config/i386/i386.opt b6ee8b10fd8323d85cb9fdc1640455cc gcc/config/i386/i386elf.h 34a42196da1b1486af5e479f21fbdebc gcc/config/i386/ia32intrin.h --- 3173,3181 ---- d10868eb41da45bd266e310e1ab4685f gcc/config/i386/i386-modes.def 54bb79c818bd9867e64bb787b6362f2a gcc/config/i386/i386-opts.h fbe59491e1417dd3d3b3149e71cd8e37 gcc/config/i386/i386-protos.h ! 0c7c0d7f90373d80e663fe9afd59eb31 gcc/config/i386/i386.c fd9870076ee9493d24d15ef9096d2564 gcc/config/i386/i386.h ! 580f05882d98e06b890d9669f45f27f9 gcc/config/i386/i386.md daea248d353429e5b0cfeab1e41fe0d3 gcc/config/i386/i386.opt b6ee8b10fd8323d85cb9fdc1640455cc gcc/config/i386/i386elf.h 34a42196da1b1486af5e479f21fbdebc gcc/config/i386/ia32intrin.h *************** aa297e6a75976dedc4946fa88496ddc9 gcc/co *** 3213,3224 **** 150b69ad9bbe39ddb4ef2b46dca8ef1e gcc/config/i386/pmmintrin.h 67854c8f32e4e12eee38301309d0df6a gcc/config/i386/popcntintrin.h 066ceb6eb6e3a607025a87c7b2fddbf8 gcc/config/i386/ppro.md ! c46e6e1d02b8a5653d4c0188ab2b15ae gcc/config/i386/predicates.md 5aaf9e5a27e6af65db4d947695469397 gcc/config/i386/rtemself.h 120f4603dd8578b5775512916e6771e6 gcc/config/i386/smmintrin.h e501c31a2e34868cc6af320a4c89a270 gcc/config/i386/sol2-bi.h a1a2e24465491cfb42b5269d53f16ac7 gcc/config/i386/sol2.h ! a7d3f389e25fedd208caff8b07b4a9e8 gcc/config/i386/sse.md 6bba0b540111d1aa8e5a67a674cd557f gcc/config/i386/ssemath.h c23c024374c3ea98d3e13d8c7ffab909 gcc/config/i386/sync.md 5bc10cb953b5cecf2513acb22abdc07d gcc/config/i386/sysv4.h --- 3213,3224 ---- 150b69ad9bbe39ddb4ef2b46dca8ef1e gcc/config/i386/pmmintrin.h 67854c8f32e4e12eee38301309d0df6a gcc/config/i386/popcntintrin.h 066ceb6eb6e3a607025a87c7b2fddbf8 gcc/config/i386/ppro.md ! 46456eb376de8be0368cbe9e2ece7783 gcc/config/i386/predicates.md 5aaf9e5a27e6af65db4d947695469397 gcc/config/i386/rtemself.h 120f4603dd8578b5775512916e6771e6 gcc/config/i386/smmintrin.h e501c31a2e34868cc6af320a4c89a270 gcc/config/i386/sol2-bi.h a1a2e24465491cfb42b5269d53f16ac7 gcc/config/i386/sol2.h ! b9455ec735c3c5a11931853a395175a7 gcc/config/i386/sse.md 6bba0b540111d1aa8e5a67a674cd557f gcc/config/i386/ssemath.h c23c024374c3ea98d3e13d8c7ffab909 gcc/config/i386/sync.md 5bc10cb953b5cecf2513acb22abdc07d gcc/config/i386/sysv4.h *************** cd662e746e08a18749e8272fa759278e gcc/co *** 3236,3242 **** 67bcf41f125bbec93a13ad3bd98abaee gcc/config/i386/t-mingw-w64 813c980909a4848e5aed5faeca6fe2bd gcc/config/i386/t-openbsd 12a68576d3577a8da82089f18d60c613 gcc/config/i386/t-pmm_malloc ! f2be093611df15d5348ef7c6bc5740cd gcc/config/i386/t-rtems c2e8b1abb657d2f806c05cd25f6f3a4c gcc/config/i386/t-sol2-64 af24a4211ecc5bef39097e175d346788 gcc/config/i386/t-vxworks b80a5a4a8c8fc32ca318158abc98dc20 gcc/config/i386/t-vxworksae --- 3236,3242 ---- 67bcf41f125bbec93a13ad3bd98abaee gcc/config/i386/t-mingw-w64 813c980909a4848e5aed5faeca6fe2bd gcc/config/i386/t-openbsd 12a68576d3577a8da82089f18d60c613 gcc/config/i386/t-pmm_malloc ! 72a3524fac0b7542cad3962701c8db38 gcc/config/i386/t-rtems c2e8b1abb657d2f806c05cd25f6f3a4c gcc/config/i386/t-sol2-64 af24a4211ecc5bef39097e175d346788 gcc/config/i386/t-vxworks b80a5a4a8c8fc32ca318158abc98dc20 gcc/config/i386/t-vxworksae *************** caf47bc91c8ecf1a642c9b470b8ab625 gcc/co *** 3248,3254 **** 9be9678b9440b4573826a61cca65378a gcc/config/i386/vxworksae.h 84dc6cb2f4eafbad1bd35af71efb0f9f gcc/config/i386/winnt-cxx.c 51a24dac92b5d2e35a30c56392244a70 gcc/config/i386/winnt-stubs.c ! fe303cb6baa5f81a9f7726c3db61d8db gcc/config/i386/winnt.c 5187e9217118c6140976af3d53e060e2 gcc/config/i386/wmmintrin.h 627c3e925a142fb6d2a14368fb637f28 gcc/config/i386/x-cygwin 58a984112f85a94b6be59817a4c57d48 gcc/config/i386/x-darwin --- 3248,3254 ---- 9be9678b9440b4573826a61cca65378a gcc/config/i386/vxworksae.h 84dc6cb2f4eafbad1bd35af71efb0f9f gcc/config/i386/winnt-cxx.c 51a24dac92b5d2e35a30c56392244a70 gcc/config/i386/winnt-stubs.c ! e3f3e8cda7c287d9f5c9b37e87e90bb9 gcc/config/i386/winnt.c 5187e9217118c6140976af3d53e060e2 gcc/config/i386/wmmintrin.h 627c3e925a142fb6d2a14368fb637f28 gcc/config/i386/x-cygwin 58a984112f85a94b6be59817a4c57d48 gcc/config/i386/x-darwin *************** fe303cb6baa5f81a9f7726c3db61d8db gcc/co *** 3260,3266 **** 9ce57f1d31de0e52748eead7af1dfb31 gcc/config/i386/xm-djgpp.h e212b9ca58244b1941bb688b40306a17 gcc/config/i386/xm-mingw32.h 9ff2612928c18361041bce16744edb1e gcc/config/i386/xmmintrin.h ! e210657fa7c87d62a227c0885258f9d8 gcc/config/i386/xopintrin.h 0930888711276a6b9901c06671efc1eb gcc/config/ia64/constraints.md 89d655a977dc447ee135126e6af6c84e gcc/config/ia64/div.md 9e3041cbef49d46c0cf589698de7ea28 gcc/config/ia64/elf.h --- 3260,3266 ---- 9ce57f1d31de0e52748eead7af1dfb31 gcc/config/i386/xm-djgpp.h e212b9ca58244b1941bb688b40306a17 gcc/config/i386/xm-mingw32.h 9ff2612928c18361041bce16744edb1e gcc/config/i386/xmmintrin.h ! 665dc01d92c061a8f77ba98e0fae403c gcc/config/i386/xopintrin.h 0930888711276a6b9901c06671efc1eb gcc/config/ia64/constraints.md 89d655a977dc447ee135126e6af6c84e gcc/config/ia64/div.md 9e3041cbef49d46c0cf589698de7ea28 gcc/config/ia64/elf.h *************** e27e554b63b4fb4bb943e13a0e991024 gcc/co *** 3450,3456 **** 94c5b7ea9449331f1aeceffd763e5836 gcc/config/mips/74k.md 347953319fe6ebca4bec7fdac9a0f0a3 gcc/config/mips/9000.md 9cd68ed827090db00cf965ff8b46cba6 gcc/config/mips/constraints.md ! 34e01805e8c45513b18f3a7f717fa96d gcc/config/mips/driver-native.c 3cb5898185be693e6bfe25024b9c331a gcc/config/mips/elf.h 463d38280de91a19a89373581a4fabc4 gcc/config/mips/elfoabi.h 4be33391c28a07411829a15cc2fe7900 gcc/config/mips/elforion.h --- 3450,3456 ---- 94c5b7ea9449331f1aeceffd763e5836 gcc/config/mips/74k.md 347953319fe6ebca4bec7fdac9a0f0a3 gcc/config/mips/9000.md 9cd68ed827090db00cf965ff8b46cba6 gcc/config/mips/constraints.md ! a3dff93d6023a86cd57f8b45a66c0223 gcc/config/mips/driver-native.c 3cb5898185be693e6bfe25024b9c331a gcc/config/mips/elf.h 463d38280de91a19a89373581a4fabc4 gcc/config/mips/elfoabi.h 4be33391c28a07411829a15cc2fe7900 gcc/config/mips/elforion.h *************** aa28d5b61b9697e44b5793fe58feb292 gcc/co *** 3569,3577 **** 01b8e14468e166bb285428fdc6a20bd3 gcc/config/pa/pa-modes.def 83b07ba70fe8175a3b65bd0296b00e0a gcc/config/pa/pa-opts.h 4077a40fe90139ec20a4d45234628bf1 gcc/config/pa/pa-protos.h ! 7f6a1cacbe47484ac819d52f355d89f4 gcc/config/pa/pa.c ee1ad0fc804922dc6bb8bb51d8378e65 gcc/config/pa/pa.h ! fb1bb39ebca00cc6585c94565a84966a gcc/config/pa/pa.md 2c61d8746fcd6748dd3e49da66204bfc gcc/config/pa/pa.opt 392a0f7d51b83a488fe1917df89384b7 gcc/config/pa/pa32-linux.h d0b7729b72b1a284d739641f9914e26d gcc/config/pa/pa32-regs.h --- 3569,3577 ---- 01b8e14468e166bb285428fdc6a20bd3 gcc/config/pa/pa-modes.def 83b07ba70fe8175a3b65bd0296b00e0a gcc/config/pa/pa-opts.h 4077a40fe90139ec20a4d45234628bf1 gcc/config/pa/pa-protos.h ! 398ef52abd3daaa45138dc2f0a4e8a42 gcc/config/pa/pa.c ee1ad0fc804922dc6bb8bb51d8378e65 gcc/config/pa/pa.h ! eeaf73f58af6e28bc746344a116d3305 gcc/config/pa/pa.md 2c61d8746fcd6748dd3e49da66204bfc gcc/config/pa/pa.opt 392a0f7d51b83a488fe1917df89384b7 gcc/config/pa/pa32-linux.h d0b7729b72b1a284d739641f9914e26d gcc/config/pa/pa32-regs.h *************** e8184c7bb1bdac753fe7a4bd9d7b6d38 gcc/co *** 3694,3701 **** ad7b35ff30a16298d1323f59a62bb368 gcc/config/rs6000/rs6000-opts.h 3be3526192ab7064061f77aa86a527e8 gcc/config/rs6000/rs6000-protos.h c4c899daccffc91de86b45c5ed1f0eb0 gcc/config/rs6000/rs6000-tables.opt ! 0079c01e6139b9a88e24e11aa684235f gcc/config/rs6000/rs6000.c ! 8a7b3421d90ac8b5c8e5ac18cb6b6ba7 gcc/config/rs6000/rs6000.h 2cdb19b8dbd2e1e59980631b2ea39015 gcc/config/rs6000/rs6000.md 27ae2e3dc07c58c88408d6c3fe34cb04 gcc/config/rs6000/rs6000.opt dc120c9c268863a37518b46f4c31f324 gcc/config/rs6000/rs64.md --- 3694,3701 ---- ad7b35ff30a16298d1323f59a62bb368 gcc/config/rs6000/rs6000-opts.h 3be3526192ab7064061f77aa86a527e8 gcc/config/rs6000/rs6000-protos.h c4c899daccffc91de86b45c5ed1f0eb0 gcc/config/rs6000/rs6000-tables.opt ! c771f7f66d56be5189b1578d45612996 gcc/config/rs6000/rs6000.c ! d73036292cf59f3a94e3afbb5807e5b5 gcc/config/rs6000/rs6000.h 2cdb19b8dbd2e1e59980631b2ea39015 gcc/config/rs6000/rs6000.md 27ae2e3dc07c58c88408d6c3fe34cb04 gcc/config/rs6000/rs6000.opt dc120c9c268863a37518b46f4c31f324 gcc/config/rs6000/rs64.md *************** efa4b8a0ae553a19d8195ed5b51bb03a gcc/co *** 3806,3812 **** 1adfe21d5a61f448b1577c55863456b8 gcc/config/sh/sh-protos.h ecc12b63b49f06c18ceeeb40a67de8d8 gcc/config/sh/sh.c 5ff9f2f649729745a22a80a7bc730867 gcc/config/sh/sh.h ! f3ab7d68f8bb72e37b8b3e4c87a66608 gcc/config/sh/sh.md 63bcb5cc337bae3faa88a84d8f9bc5f8 gcc/config/sh/sh.opt d3f5c6e2b4a3620817b14d8dd55128b1 gcc/config/sh/sh1.md edae695e2c740a39c2253e67bda533b8 gcc/config/sh/sh4-300.md --- 3806,3812 ---- 1adfe21d5a61f448b1577c55863456b8 gcc/config/sh/sh-protos.h ecc12b63b49f06c18ceeeb40a67de8d8 gcc/config/sh/sh.c 5ff9f2f649729745a22a80a7bc730867 gcc/config/sh/sh.h ! 25c717ce44ace07e78e01bd4bd595926 gcc/config/sh/sh.md 63bcb5cc337bae3faa88a84d8f9bc5f8 gcc/config/sh/sh.opt d3f5c6e2b4a3620817b14d8dd55128b1 gcc/config/sh/sh1.md edae695e2c740a39c2253e67bda533b8 gcc/config/sh/sh4-300.md *************** e61236a920dbb9948a13577a5b32dac0 gcc/co *** 3861,3869 **** 0b74b64e4399075e87238619d484dd4c gcc/config/sparc/sparc-modes.def 5d67033247044f167e4fdcc7ae31a1f7 gcc/config/sparc/sparc-opts.h 5f7b9b9a237807ab95219302f9668155 gcc/config/sparc/sparc-protos.h ! 93a8559869fce690a0a2e4a7bc2f2d01 gcc/config/sparc/sparc.c d5ffcb9864b82c614bed45a8ab55c9e7 gcc/config/sparc/sparc.h ! 939ec73f45400946eba38d91e09eeabc gcc/config/sparc/sparc.md 84616fed54f46178b678f4d17eeab816 gcc/config/sparc/sparc.opt e085c3934f5520c64222de26b11c11c6 gcc/config/sparc/sparclet.md f271a2c5c69010bdc36679b647809dcf gcc/config/sparc/supersparc.md --- 3861,3869 ---- 0b74b64e4399075e87238619d484dd4c gcc/config/sparc/sparc-modes.def 5d67033247044f167e4fdcc7ae31a1f7 gcc/config/sparc/sparc-opts.h 5f7b9b9a237807ab95219302f9668155 gcc/config/sparc/sparc-protos.h ! 802de743874d16a39a7f4d385adebcee gcc/config/sparc/sparc.c d5ffcb9864b82c614bed45a8ab55c9e7 gcc/config/sparc/sparc.h ! 3a0e9c930106c53c19cc96a0e6a6a196 gcc/config/sparc/sparc.md 84616fed54f46178b678f4d17eeab816 gcc/config/sparc/sparc.opt e085c3934f5520c64222de26b11c11c6 gcc/config/sparc/sparclet.md f271a2c5c69010bdc36679b647809dcf gcc/config/sparc/supersparc.md *************** f62347fb17ffdccf93a30b860f9f4dc2 gcc/co *** 3928,3944 **** 09d9f191d1fc9fbde6e3a7398fa1f3a8 gcc/config/tilegx/linux.h 9124292afc2fffd336763413fbb521e4 gcc/config/tilegx/mul-tables.c b9de6d097f47daffab2310e0d13d49de gcc/config/tilegx/predicates.md ! 44afb0e119bf82038d362056ba386e8a gcc/config/tilegx/sync.md 7bf5713be56996f566a86927d32ac67b gcc/config/tilegx/t-tilegx 531d6d1279a9e738c32ee5fcf7173826 gcc/config/tilegx/tilegx-builtins.h ! cd3f001bef23261e293e65591f06966f gcc/config/tilegx/tilegx-c.c c86e883be1e01c16536be8118ebc6238 gcc/config/tilegx/tilegx-generic.md 81f6b707ef95ba3324a7d6fbff43b229 gcc/config/tilegx/tilegx-modes.def f6a85a68361491bbe8ccc4be5cc3c56a gcc/config/tilegx/tilegx-multiply.h 6a44bee52f97df0b5b4e4ad9bcc1dc4c gcc/config/tilegx/tilegx-protos.h ! 44a2d0dcd9628751c0fb89f8d11c7a70 gcc/config/tilegx/tilegx.c eb4db0583a55521a3b1361d649c08d17 gcc/config/tilegx/tilegx.h ! f0a58464e505b9636e13dbae77fd7194 gcc/config/tilegx/tilegx.md f22ea33023a5fc1b6132b23a3d389606 gcc/config/tilegx/tilegx.opt 66baa3cce35126c1c6a983fca631d58f gcc/config/tilepro/constraints.md f62347fb17ffdccf93a30b860f9f4dc2 gcc/config/tilepro/feedback.h --- 3928,3944 ---- 09d9f191d1fc9fbde6e3a7398fa1f3a8 gcc/config/tilegx/linux.h 9124292afc2fffd336763413fbb521e4 gcc/config/tilegx/mul-tables.c b9de6d097f47daffab2310e0d13d49de gcc/config/tilegx/predicates.md ! d0b8bd68d41e60431c38aeea27d27f36 gcc/config/tilegx/sync.md 7bf5713be56996f566a86927d32ac67b gcc/config/tilegx/t-tilegx 531d6d1279a9e738c32ee5fcf7173826 gcc/config/tilegx/tilegx-builtins.h ! 93e5b60f156b2cbd5cc9b31d2db6f8bc gcc/config/tilegx/tilegx-c.c c86e883be1e01c16536be8118ebc6238 gcc/config/tilegx/tilegx-generic.md 81f6b707ef95ba3324a7d6fbff43b229 gcc/config/tilegx/tilegx-modes.def f6a85a68361491bbe8ccc4be5cc3c56a gcc/config/tilegx/tilegx-multiply.h 6a44bee52f97df0b5b4e4ad9bcc1dc4c gcc/config/tilegx/tilegx-protos.h ! 463a10b09a541c61bed8b2bb985e0544 gcc/config/tilegx/tilegx.c eb4db0583a55521a3b1361d649c08d17 gcc/config/tilegx/tilegx.h ! 98a072b9da3ef017f92b26248ae2f6ce gcc/config/tilegx/tilegx.md f22ea33023a5fc1b6132b23a3d389606 gcc/config/tilegx/tilegx.opt 66baa3cce35126c1c6a983fca631d58f gcc/config/tilepro/constraints.md f62347fb17ffdccf93a30b860f9f4dc2 gcc/config/tilepro/feedback.h *************** fb6d8b01df939f5d64d421361d467393 gcc/co *** 3948,3961 **** 4dad4fa0d9011de747e0827804da4d21 gcc/config/tilepro/predicates.md d461bb0607d54c4bb58238f1fa5dc97d gcc/config/tilepro/t-tilepro 09e8a3879bce8611999ce5dac022329a gcc/config/tilepro/tilepro-builtins.h ! d5aa034b409131c1278a416f6b51a1d3 gcc/config/tilepro/tilepro-c.c b39bc67a984ffc06bb76bb4306b8883d gcc/config/tilepro/tilepro-generic.md d30517bf0008347e8528b8d7efddb41e gcc/config/tilepro/tilepro-modes.def a23f88eedb9c4e385274cc27614392d7 gcc/config/tilepro/tilepro-multiply.h 0194727cdcdc6fa4a100fbf1c22c4251 gcc/config/tilepro/tilepro-protos.h ! 7e10e1218ae63d92c55d85eae7078f83 gcc/config/tilepro/tilepro.c 5438a4d52a2690e72663ee3d695843b2 gcc/config/tilepro/tilepro.h ! b79c317b1b1f015f10d95ac06ee9cffd gcc/config/tilepro/tilepro.md dabb0fdde5821e29fcacea2f11995310 gcc/config/tilepro/tilepro.opt 17fd5cabcc31b720b23bad47cf7fe84c gcc/config/tm-dwarf2.h a810412f27c261278ae8aef72f855f32 gcc/config/usegas.h --- 3948,3961 ---- 4dad4fa0d9011de747e0827804da4d21 gcc/config/tilepro/predicates.md d461bb0607d54c4bb58238f1fa5dc97d gcc/config/tilepro/t-tilepro 09e8a3879bce8611999ce5dac022329a gcc/config/tilepro/tilepro-builtins.h ! fec7d39dc6bce73cd1dca4bf324250f7 gcc/config/tilepro/tilepro-c.c b39bc67a984ffc06bb76bb4306b8883d gcc/config/tilepro/tilepro-generic.md d30517bf0008347e8528b8d7efddb41e gcc/config/tilepro/tilepro-modes.def a23f88eedb9c4e385274cc27614392d7 gcc/config/tilepro/tilepro-multiply.h 0194727cdcdc6fa4a100fbf1c22c4251 gcc/config/tilepro/tilepro-protos.h ! 1f396260cc3e4605b7fbaf9937038653 gcc/config/tilepro/tilepro.c 5438a4d52a2690e72663ee3d695843b2 gcc/config/tilepro/tilepro.h ! 5036e82da4133927c5e7e3adc415efb5 gcc/config/tilepro/tilepro.md dabb0fdde5821e29fcacea2f11995310 gcc/config/tilepro/tilepro.opt 17fd5cabcc31b720b23bad47cf7fe84c gcc/config/tm-dwarf2.h a810412f27c261278ae8aef72f855f32 gcc/config/usegas.h *************** a6ae71a556271cc116214b3e9e87d867 gcc/co *** 3963,3969 **** 5c96ebf3005113fb8d662655e1883a5c gcc/config/v850/constraints.md 0f8b26053a55c7b5528293cc3823b922 gcc/config/v850/predicates.md 3fc82a138879cc9e3a7d701e9baf6fca gcc/config/v850/rtems.h ! 22f360dbed319badc3f9e6c6e1b88808 gcc/config/v850/t-rtems de1bec4c9f2f62555146ad124e0d0b94 gcc/config/v850/t-v850 7ad8852decd4ac008ff86c448db78c83 gcc/config/v850/v850-c.c 752e8aafac5221beb6348f10300042c8 gcc/config/v850/v850-modes.def --- 3963,3969 ---- 5c96ebf3005113fb8d662655e1883a5c gcc/config/v850/constraints.md 0f8b26053a55c7b5528293cc3823b922 gcc/config/v850/predicates.md 3fc82a138879cc9e3a7d701e9baf6fca gcc/config/v850/rtems.h ! 41b5d5e91cc905b1e3ba5de47db5f9c6 gcc/config/v850/t-rtems de1bec4c9f2f62555146ad124e0d0b94 gcc/config/v850/t-v850 7ad8852decd4ac008ff86c448db78c83 gcc/config/v850/v850-c.c 752e8aafac5221beb6348f10300042c8 gcc/config/v850/v850-modes.def *************** cccf083a170fbfe04d44a1c3fce88906 gcc/co *** 4024,4037 **** 6c950d49308c2486553280ce7df5a5d9 gcc/config/xtensa/xtensa.h 843e6bdc5b55528fe0f5180eb0ff1e63 gcc/config/xtensa/xtensa.md 5933d388513eca96e9a100854b6156a6 gcc/config/xtensa/xtensa.opt ! 25bc167ab1fbdb7bff6f1941e38154b5 gcc/configure ! 3bb0673ae909b786e7c7a28c4a277e04 gcc/configure.ac 09a583886642b73a2ccf651045d7ac11 gcc/convert.c 8e8d379b495b79ad19b6260bb3fc43b2 gcc/convert.h 048593b7f507f93ddfb85d600a2de300 gcc/coretypes.h ! 59c7baca802bd3837c558a91dcfac49e gcc/coverage.c b86ee7f04db9c56234a11a95423b9fb7 gcc/coverage.h ! df374e60fd8c26e559f5392088c90d65 gcc/cp/ChangeLog d271e3663538ba1f3281cab3838e92cd gcc/cp/ChangeLog-1993 f5a44adbc05521162350ca409d1d95ce gcc/cp/ChangeLog-1994 ac55db48d964cb5469ff03c1cd3ee04d gcc/cp/ChangeLog-1995 --- 4024,4037 ---- 6c950d49308c2486553280ce7df5a5d9 gcc/config/xtensa/xtensa.h 843e6bdc5b55528fe0f5180eb0ff1e63 gcc/config/xtensa/xtensa.md 5933d388513eca96e9a100854b6156a6 gcc/config/xtensa/xtensa.opt ! c5607f77464c062a1e86d8fe5c2a8a60 gcc/configure ! dff5b949dc42a6c19bd3403a5d26722b gcc/configure.ac 09a583886642b73a2ccf651045d7ac11 gcc/convert.c 8e8d379b495b79ad19b6260bb3fc43b2 gcc/convert.h 048593b7f507f93ddfb85d600a2de300 gcc/coretypes.h ! 46474c488a1b043faed33518aaabcae8 gcc/coverage.c b86ee7f04db9c56234a11a95423b9fb7 gcc/coverage.h ! 7759b3d768df1b25d0dfb969568f0925 gcc/cp/ChangeLog d271e3663538ba1f3281cab3838e92cd gcc/cp/ChangeLog-1993 f5a44adbc05521162350ca409d1d95ce gcc/cp/ChangeLog-1994 ac55db48d964cb5469ff03c1cd3ee04d gcc/cp/ChangeLog-1995 *************** d3a9f903c71463c15002ac1d05c8aa16 gcc/cp *** 4055,4061 **** 8888c230ee6f25898999373f102db18c gcc/cp/ChangeLog.tree-ssa f456b7f483fb1e2850b238e87a3dc6fd gcc/cp/Make-lang.in ab4a46976e9a3cf04888156c085070b4 gcc/cp/NEWS ! 15b15a199e303e9b3558f314eead879c gcc/cp/call.c c333d7276d59c1b4b8e8826a1cb154ba gcc/cp/cfns.gperf 6378f6e4fd51e667512dbe94be975d88 gcc/cp/cfns.h 2e28a32fcfdcee57b7f05ff43ea8b2d3 gcc/cp/class.c --- 4055,4061 ---- 8888c230ee6f25898999373f102db18c gcc/cp/ChangeLog.tree-ssa f456b7f483fb1e2850b238e87a3dc6fd gcc/cp/Make-lang.in ab4a46976e9a3cf04888156c085070b4 gcc/cp/NEWS ! ca342d07b08ecd3c7805ba3be58b97a9 gcc/cp/call.c c333d7276d59c1b4b8e8826a1cb154ba gcc/cp/cfns.gperf 6378f6e4fd51e667512dbe94be975d88 gcc/cp/cfns.h 2e28a32fcfdcee57b7f05ff43ea8b2d3 gcc/cp/class.c *************** f355b3e714015a76769ffd1afae46f95 gcc/cp *** 4065,4102 **** b22e46ad2c035206fd3512a750244d09 gcc/cp/cp-objcp-common.c ebc8209d713cae6945cca7b84208cf07 gcc/cp/cp-objcp-common.h d8107437274e864a74f06836e910272b gcc/cp/cp-tree.def ! 4f95a89b228edfd5b8d4a6bdeddddc63 gcc/cp/cp-tree.h ! 602ed19b791090010d346f08e354437d gcc/cp/cvt.c 1cfe61f1e431b46f80eed6605d435f74 gcc/cp/cxx-pretty-print.c b31a5cf090faf3a361520cba3205d47d gcc/cp/cxx-pretty-print.h ! dc06a581744ee2533605d34edf868e4c gcc/cp/decl.c 5626f8be7c0353390d8a2d6e1c647a2d gcc/cp/decl.h 4b2f129b59b6bf2c23149b66a6b90d96 gcc/cp/decl2.c 053929043ea47f4cfedafdec046a6f81 gcc/cp/dump.c 3b671644053baeb445c5cd8b0182f1f2 gcc/cp/error.c ! 5e9b607ba837b8c809bbfe5238c7a2a5 gcc/cp/except.c 59a9c3d4b2b7b7c64c481b0d6b938b1c gcc/cp/expr.c bf178f91b77b9673cb270b5be109c650 gcc/cp/friend.c 42e3401e9df0dc8e3fe911a330119085 gcc/cp/g++spec.c ! 75fb1dcc3d19a20a0ea2356ea37384db gcc/cp/init.c 1b34614409e2eee4e9083d50a2386e43 gcc/cp/lang-specs.h 0ae7307da476c52aa9205bfb56d75913 gcc/cp/lex.c ! 4fef108ed3a42408834e690cb58a8481 gcc/cp/mangle.c 2742233a46cca8561d39d610a7d26edf gcc/cp/method.c ! 8f03533fef8800031a513ca6f74a6134 gcc/cp/name-lookup.c 4483aa5d7e3dc500e4355d5d69dd0976 gcc/cp/name-lookup.h 6de39f5efb344cf8fc12debf872949d1 gcc/cp/operators.def e51577eab84b7eca2a2a2c4dbed15389 gcc/cp/optimize.c ! e795121b58e4385539530d1f48b4d810 gcc/cp/parser.c 33a341f564edf44a51cd6f783dd8ff9f gcc/cp/parser.h ! 09a5efab6c1a3845862645a48dd51617 gcc/cp/pt.c 0b48b0579a960ea13e8abfb0d5cfa6f6 gcc/cp/ptree.c 4c5341f403234b9da9a6af463497c42b gcc/cp/repo.c 20d5825f771abccdf9723ab5b9809a36 gcc/cp/rtti.c 094b44a70b8e28368eb190be53319079 gcc/cp/search.c ! f71d03fff4eebdc9542a732847536292 gcc/cp/semantics.c ! d37f40a99bda0c12699ab4bac7a494b5 gcc/cp/tree.c ! c6361c80705f12ba070a5ac3c089bd70 gcc/cp/typeck.c 8119c8896bdb39f94233520d82396e27 gcc/cp/typeck2.c 4d0441e56b85b56cdb7fd99736f861df gcc/cppbuiltin.c 390df188d4cdaa4ee1ab26a712ecf998 gcc/cppbuiltin.h --- 4065,4102 ---- b22e46ad2c035206fd3512a750244d09 gcc/cp/cp-objcp-common.c ebc8209d713cae6945cca7b84208cf07 gcc/cp/cp-objcp-common.h d8107437274e864a74f06836e910272b gcc/cp/cp-tree.def ! 504d6b29e23b0fc234987bd898df0c55 gcc/cp/cp-tree.h ! 2b4855f0e1eac5c2ad0cd68805f06efc gcc/cp/cvt.c 1cfe61f1e431b46f80eed6605d435f74 gcc/cp/cxx-pretty-print.c b31a5cf090faf3a361520cba3205d47d gcc/cp/cxx-pretty-print.h ! 0028671d17247748d897ee7937f2d5e9 gcc/cp/decl.c 5626f8be7c0353390d8a2d6e1c647a2d gcc/cp/decl.h 4b2f129b59b6bf2c23149b66a6b90d96 gcc/cp/decl2.c 053929043ea47f4cfedafdec046a6f81 gcc/cp/dump.c 3b671644053baeb445c5cd8b0182f1f2 gcc/cp/error.c ! c98ea183cb2c42841fe6bcec41ffa9cf gcc/cp/except.c 59a9c3d4b2b7b7c64c481b0d6b938b1c gcc/cp/expr.c bf178f91b77b9673cb270b5be109c650 gcc/cp/friend.c 42e3401e9df0dc8e3fe911a330119085 gcc/cp/g++spec.c ! 4439fdae6c2edb5bc61625c84f4fab79 gcc/cp/init.c 1b34614409e2eee4e9083d50a2386e43 gcc/cp/lang-specs.h 0ae7307da476c52aa9205bfb56d75913 gcc/cp/lex.c ! 81325a2e443e529127962a2e9f771865 gcc/cp/mangle.c 2742233a46cca8561d39d610a7d26edf gcc/cp/method.c ! abf4822e7c11a7c25eb2edebac32d0ed gcc/cp/name-lookup.c 4483aa5d7e3dc500e4355d5d69dd0976 gcc/cp/name-lookup.h 6de39f5efb344cf8fc12debf872949d1 gcc/cp/operators.def e51577eab84b7eca2a2a2c4dbed15389 gcc/cp/optimize.c ! 20b0ae8f2e05eeb9c7337739c39a43bb gcc/cp/parser.c 33a341f564edf44a51cd6f783dd8ff9f gcc/cp/parser.h ! 9c0936b9fc9e27cdead83c5aee7e222b gcc/cp/pt.c 0b48b0579a960ea13e8abfb0d5cfa6f6 gcc/cp/ptree.c 4c5341f403234b9da9a6af463497c42b gcc/cp/repo.c 20d5825f771abccdf9723ab5b9809a36 gcc/cp/rtti.c 094b44a70b8e28368eb190be53319079 gcc/cp/search.c ! a93445609d8c52b8d0853c69636537e7 gcc/cp/semantics.c ! 522fd405ec9f22285724fb7e11d45ecf gcc/cp/tree.c ! ab7181ba61541e829e3ba712f5f96566 gcc/cp/typeck.c 8119c8896bdb39f94233520d82396e27 gcc/cp/typeck2.c 4d0441e56b85b56cdb7fd99736f861df gcc/cppbuiltin.c 390df188d4cdaa4ee1ab26a712ecf998 gcc/cppbuiltin.h *************** dd1e79e387e3b16ad878a982b51fa84a gcc/df *** 4134,4140 **** c72b6a9ce2247b307428524eccbbc3f0 gcc/diagnostic.c 02f5415206cf90ce78f5325cf12915e1 gcc/diagnostic.def 8c0468ec397027efc1c820bae43ced63 gcc/diagnostic.h ! 357356b20bf1a2980b539069da08bb17 gcc/doc/aot-compile.1 972a80440a00db9edb7d3e88725abd8b gcc/doc/arm-neon-intrinsics.texi f14bb72f864987edc101885b31399d41 gcc/doc/bugreport.texi 97d36d8c40ab387990eeab73174eec5e gcc/doc/cfg.texi --- 4134,4140 ---- c72b6a9ce2247b307428524eccbbc3f0 gcc/diagnostic.c 02f5415206cf90ce78f5325cf12915e1 gcc/diagnostic.def 8c0468ec397027efc1c820bae43ced63 gcc/diagnostic.h ! 936d77e09a504276ceaa90d8148e61ab gcc/doc/aot-compile.1 972a80440a00db9edb7d3e88725abd8b gcc/doc/arm-neon-intrinsics.texi f14bb72f864987edc101885b31399d41 gcc/doc/bugreport.texi 97d36d8c40ab387990eeab73174eec5e gcc/doc/cfg.texi *************** cdbb61bc66e8eecfd747e24f8755b77b gcc/do *** 4144,4186 **** 6ed911b9535d38ab2eef4969854f0581 gcc/doc/configterms.texi 39a2d8c13d42efe5d43cb5acb761c1b7 gcc/doc/contrib.texi 532efd24ba5590c6aed6cc4fa92638d8 gcc/doc/contribute.texi ! 5bc2c8f5dd91a90cc21680414ec78b23 gcc/doc/cpp.1 ! 2b0a07d5dc87db8f8b6e2555b2eaf400 gcc/doc/cpp.info 3b56531440e5d3475757b74c8b851a2a gcc/doc/cpp.texi 8462a717da44ca316c8c9ac975457a32 gcc/doc/cppenv.texi ! 673652ad15f3fd8f5dc86dd62bb50b7d gcc/doc/cppinternals.info 27c497524af4e535fe2d9d7d9a9c9e0f gcc/doc/cppinternals.texi 8547ba6022be738ee65febf10cd907b4 gcc/doc/cppopts.texi ! bd107ea2b6aa19e169ac10a4dcc16027 gcc/doc/extend.texi 17eed4dc1679770db7997078ea05e39f gcc/doc/fragments.texi 92fe9a03b38d902d29182f6933a8bffc gcc/doc/frontends.texi ! a7ee2cadd7dac41c49625f40c142c23f gcc/doc/fsf-funding.7 ! 9ff5cca861dd4da21f6f89141e409bbc gcc/doc/g++.1 ! d610ca1b8924ba0bdd4716758131fe0b gcc/doc/gc-analyze.1 ! 9ff5cca861dd4da21f6f89141e409bbc gcc/doc/gcc.1 ! 59d9fd36ff7f0732402dff475f5ee756 gcc/doc/gcc.info 295da9cf03906a81b17a79278225a483 gcc/doc/gcc.texi ! a782197f7f3b2159de1d0a6e7c38d2d6 gcc/doc/gccinstall.info ! 0165f1a4259cb9181fce07f281ee8c46 gcc/doc/gccint.info 0641e6c162171d625639a3651b3fff66 gcc/doc/gccint.texi ! ea052f4d6369571f6ad37aa96ef2d8aa gcc/doc/gcj-dbtool.1 ! d62cc8917eb0a41a5c46f6dfd137ac6f gcc/doc/gcj.1 ! 9ea3cb313cebbaefe765bf56a1ca772d gcc/doc/gcj.info ! af9f8b1bae089ed85f3fcd089ecd77fe gcc/doc/gcov.1 5e7047d05316ccd02d77d9318ac1015c gcc/doc/gcov.texi 12b5f65302a1eba6d927302638cf9c72 gcc/doc/generic.texi ! 1d5e0520d79270311e912e50d54f9080 gcc/doc/gfdl.7 ! 390d21161ecc4d7d0044236297b15dbd gcc/doc/gfortran.1 ! d4b058f5f5e1b4a0be99c694587ecf8b gcc/doc/gij.1 7a5c764848a05f5cf4a03d73ed93cea2 gcc/doc/gimple.texi 290370669f02bef1502ada9273e5261f gcc/doc/gnu.texi ! 47a271882f5a78dffde679c605d7d7de gcc/doc/gpl.7 ! 89709c48a5a42ed507e819376aca62af gcc/doc/grmic.1 9a7ff7727a2bc98d269b1ebaca8c25e2 gcc/doc/gty.texi 12712ad63a56e9d549562b21b42b1454 gcc/doc/headerdirs.texi 34af0e470967a81eca6382a2d9927ffe gcc/doc/hostconfig.texi ddc31150ec0573d611deae285525a628 gcc/doc/implement-c.texi ! 5a6972fea86cd72f9ef31653699cd3d1 gcc/doc/implement-cxx.texi c9c72c6be45fb9d057a5590dab9dc5b2 gcc/doc/include/fdl.texi 8787976f426cd52da24a856cd41d87be gcc/doc/include/funding.texi be9b425ec8b2ca65e2fdbad1029e2dff gcc/doc/include/gcc-common.texi --- 4144,4186 ---- 6ed911b9535d38ab2eef4969854f0581 gcc/doc/configterms.texi 39a2d8c13d42efe5d43cb5acb761c1b7 gcc/doc/contrib.texi 532efd24ba5590c6aed6cc4fa92638d8 gcc/doc/contribute.texi ! 7cc3045e96f0811fef1a1df7807b65ec gcc/doc/cpp.1 ! 3517dbab7d7579f5541b067b86d3352d gcc/doc/cpp.info 3b56531440e5d3475757b74c8b851a2a gcc/doc/cpp.texi 8462a717da44ca316c8c9ac975457a32 gcc/doc/cppenv.texi ! 22c700249b5a30ca0b49f04148ad561d gcc/doc/cppinternals.info 27c497524af4e535fe2d9d7d9a9c9e0f gcc/doc/cppinternals.texi 8547ba6022be738ee65febf10cd907b4 gcc/doc/cppopts.texi ! d6902a92481fd2cb05afe0a996ae78de gcc/doc/extend.texi 17eed4dc1679770db7997078ea05e39f gcc/doc/fragments.texi 92fe9a03b38d902d29182f6933a8bffc gcc/doc/frontends.texi ! c80abe8059f518aa330faf6ed7a95567 gcc/doc/fsf-funding.7 ! 9648dd2882211b22222d0d79c7cf2c0c gcc/doc/g++.1 ! 258c6852f4b3d891ebe7a5583cedb66d gcc/doc/gc-analyze.1 ! 9648dd2882211b22222d0d79c7cf2c0c gcc/doc/gcc.1 ! 2d81fbbf349a2dceb7c33b9e628e1c76 gcc/doc/gcc.info 295da9cf03906a81b17a79278225a483 gcc/doc/gcc.texi ! 897dafe5013defa10e0170df08b3d8e5 gcc/doc/gccinstall.info ! 774e4e5ea1741ffd57d9d775967ffe28 gcc/doc/gccint.info 0641e6c162171d625639a3651b3fff66 gcc/doc/gccint.texi ! f4b6b2242d7fb55abea03933b65e259d gcc/doc/gcj-dbtool.1 ! c4323d4ea596ec6d60055a73e70c61ea gcc/doc/gcj.1 ! 065118a8e8791f3aa19dfab572ef2f57 gcc/doc/gcj.info ! 4afa053763add9a78aea181eebf9f5f8 gcc/doc/gcov.1 5e7047d05316ccd02d77d9318ac1015c gcc/doc/gcov.texi 12b5f65302a1eba6d927302638cf9c72 gcc/doc/generic.texi ! 0b4afcd835e96a42f963991328a4462d gcc/doc/gfdl.7 ! b4e6710b75d533b05ba1bcb5b20e6162 gcc/doc/gfortran.1 ! aa92877dc358a91f54fa77290a854e16 gcc/doc/gij.1 7a5c764848a05f5cf4a03d73ed93cea2 gcc/doc/gimple.texi 290370669f02bef1502ada9273e5261f gcc/doc/gnu.texi ! 9beb6cad2bcab9d48309bacaf8d9b49c gcc/doc/gpl.7 ! df798d6de818a03f318901ffe2628e35 gcc/doc/grmic.1 9a7ff7727a2bc98d269b1ebaca8c25e2 gcc/doc/gty.texi 12712ad63a56e9d549562b21b42b1454 gcc/doc/headerdirs.texi 34af0e470967a81eca6382a2d9927ffe gcc/doc/hostconfig.texi ddc31150ec0573d611deae285525a628 gcc/doc/implement-c.texi ! 7a8fb64c2a13d27c5bd077e2c0cabc4f gcc/doc/implement-cxx.texi c9c72c6be45fb9d057a5590dab9dc5b2 gcc/doc/include/fdl.texi 8787976f426cd52da24a856cd41d87be gcc/doc/include/funding.texi be9b425ec8b2ca65e2fdbad1029e2dff gcc/doc/include/gcc-common.texi *************** dee9095d1a927726aff2b0f71fd1f9f5 gcc/do *** 4191,4199 **** a3afcafd4eadc7e57c4ffab978201b1f gcc/doc/install.texi 8798a4a6671853841bb8260cf24753d2 gcc/doc/install.texi2html 5407c66b804884426ce94dcac22864d1 gcc/doc/interface.texi ! edaa0d4f749bf0380e182867c571a7f4 gcc/doc/invoke.texi ! 86707cbfe653005ef0e9f1b995982d6e gcc/doc/jcf-dump.1 ! 6d5d6d78750062506685ce6c01b7ad8a gcc/doc/jv-convert.1 01b0dc3ad11961d7eab2d299d15e9672 gcc/doc/languages.texi 67cf76904449ef7d65eecd8a426ef0aa gcc/doc/libgcc.texi 0c213cbb01a0ef94ec9307a6ff795722 gcc/doc/loop.texi --- 4191,4199 ---- a3afcafd4eadc7e57c4ffab978201b1f gcc/doc/install.texi 8798a4a6671853841bb8260cf24753d2 gcc/doc/install.texi2html 5407c66b804884426ce94dcac22864d1 gcc/doc/interface.texi ! b63307aa07363feb5bd326daf8a8b858 gcc/doc/invoke.texi ! b821fe5ba440e035ccbbd4612d3eae98 gcc/doc/jcf-dump.1 ! bbcd3b55a82b9cea5347b87f58b08945 gcc/doc/jv-convert.1 01b0dc3ad11961d7eab2d299d15e9672 gcc/doc/languages.texi 67cf76904449ef7d65eecd8a426ef0aa gcc/doc/libgcc.texi 0c213cbb01a0ef94ec9307a6ff795722 gcc/doc/loop.texi *************** c93b65423413329363dfeb8ff3f6a77a gcc/do *** 4205,4217 **** ed62128d9d0c21350f7c0e2daf72ddfb gcc/doc/passes.texi 3875aea4ccb8066c4c8fd4f4a6ced510 gcc/doc/plugins.texi 72136dc6e58c1bb1790f0f25bbaf8897 gcc/doc/portability.texi ! d352b852b939ce52e99fbee297a3e669 gcc/doc/rebuild-gcj-db.1 9e2367f7c9814dc4976e7c7a269b6300 gcc/doc/rtl.texi d65d49dcfee4f97f1aea81855a0c20d6 gcc/doc/service.texi a73fa16428694b833800fdddca43df3e gcc/doc/sourcebuild.texi 5062fe0473d72fe0c603ed447cdc019e gcc/doc/standards.texi ! 1759fe28d7313c76acc22c18418acbf7 gcc/doc/tm.texi ! e04c08532d5fc0e9797948548b3ccaa5 gcc/doc/tm.texi.in 75ade100993c75f041958b8803e75aeb gcc/doc/tree-ssa.texi ab18561e198caa17636076997fe16bce gcc/doc/trouble.texi 3cd62f9a14297dee7a1f2b12ec04339d gcc/dojump.c --- 4205,4217 ---- ed62128d9d0c21350f7c0e2daf72ddfb gcc/doc/passes.texi 3875aea4ccb8066c4c8fd4f4a6ced510 gcc/doc/plugins.texi 72136dc6e58c1bb1790f0f25bbaf8897 gcc/doc/portability.texi ! b696e005eb401162517c9742990f25be gcc/doc/rebuild-gcj-db.1 9e2367f7c9814dc4976e7c7a269b6300 gcc/doc/rtl.texi d65d49dcfee4f97f1aea81855a0c20d6 gcc/doc/service.texi a73fa16428694b833800fdddca43df3e gcc/doc/sourcebuild.texi 5062fe0473d72fe0c603ed447cdc019e gcc/doc/standards.texi ! 4f881f639e8625326bdd6a022da34b2b gcc/doc/tm.texi ! e7a3e35987f0b746b289f5901634ecf8 gcc/doc/tm.texi.in 75ade100993c75f041958b8803e75aeb gcc/doc/tree-ssa.texi ab18561e198caa17636076997fe16bce gcc/doc/trouble.texi 3cd62f9a14297dee7a1f2b12ec04339d gcc/dojump.c *************** e88f24b9626e3a4beef8acee9c08478a gcc/ds *** 4225,4231 **** 3aa2bf353e00f2b21f0b9f718ee8c916 gcc/dwarf2asm.c c6a89eaf1ae0e2753ca8dbbf7f4c10a4 gcc/dwarf2asm.h 031a4e3fb2ca5dd404ba146fc3b0992d gcc/dwarf2cfi.c ! 4c7bb7e36b749d1e0e2f93c22b488d74 gcc/dwarf2out.c 75f85e4ca51b1b0bbe3b4634f9179186 gcc/dwarf2out.h a97614a8590c45503176043a155b75bf gcc/ebitmap.c 5aede90d7380412cbc9521027ec7c6a9 gcc/ebitmap.h --- 4225,4231 ---- 3aa2bf353e00f2b21f0b9f718ee8c916 gcc/dwarf2asm.c c6a89eaf1ae0e2753ca8dbbf7f4c10a4 gcc/dwarf2asm.h 031a4e3fb2ca5dd404ba146fc3b0992d gcc/dwarf2cfi.c ! 7993fcc4d33d09a989acc5bdd08ed31d gcc/dwarf2out.c 75f85e4ca51b1b0bbe3b4634f9179186 gcc/dwarf2out.h a97614a8590c45503176043a155b75bf gcc/ebitmap.c 5aede90d7380412cbc9521027ec7c6a9 gcc/ebitmap.h *************** bba4f1403eb290e01644a37e05aebe6f gcc/ex *** 4248,4255 **** f57fd99a821089eaf00eb7374a49a38e gcc/fixed-value.h d0b1e2ba9bba8e940e8b24c086d05e8c gcc/flag-types.h f881c6bc1505d76ca92c10722f265f2f gcc/flags.h ! 7264a43ede05f1023779adb27c7fde16 gcc/fold-const.c ! 8b9f80d5b2e90ec634d1e858d7315f8e gcc/fortran/ChangeLog 3330102ad3a0217cba963be6b5eefd58 gcc/fortran/ChangeLog-2002 d000ab985b1eeb1ad5749f98b8fef99f gcc/fortran/ChangeLog-2003 bf42f94f0c51dcc7d8051cc7fda1efdc gcc/fortran/ChangeLog-2004 --- 4248,4255 ---- f57fd99a821089eaf00eb7374a49a38e gcc/fixed-value.h d0b1e2ba9bba8e940e8b24c086d05e8c gcc/flag-types.h f881c6bc1505d76ca92c10722f265f2f gcc/flags.h ! 9ba226d5c71247b45d60f6383a6bcfd8 gcc/fold-const.c ! 86417fb9366c9b02d1aeced520c6164e gcc/fortran/ChangeLog 3330102ad3a0217cba963be6b5eefd58 gcc/fortran/ChangeLog-2002 d000ab985b1eeb1ad5749f98b8fef99f gcc/fortran/ChangeLog-2003 bf42f94f0c51dcc7d8051cc7fda1efdc gcc/fortran/ChangeLog-2004 *************** f851636001c3cc77afa05855758aa841 gcc/fo *** 4266,4273 **** 9cf51c8c958888e57268ae77059be801 gcc/fortran/arith.h 2e5469f33fe7bb9813a1dfb48c898528 gcc/fortran/array.c 70e200331a2f53233ac222da8434bc3e gcc/fortran/bbt.c ! 2fe247557cb26d0c0d6d60cf1a2ef159 gcc/fortran/check.c ! 0bccaa3575739bda97eeae507cd1117a gcc/fortran/class.c 7c7f86a9e45099db8d493ea49228c0db gcc/fortran/config-lang.in 1c69af02a68e17cea021b1d7007c65c6 gcc/fortran/constructor.c 7bcd253b180a56fd61db3c3615fdb85a gcc/fortran/constructor.h --- 4266,4273 ---- 9cf51c8c958888e57268ae77059be801 gcc/fortran/arith.h 2e5469f33fe7bb9813a1dfb48c898528 gcc/fortran/array.c 70e200331a2f53233ac222da8434bc3e gcc/fortran/bbt.c ! 29ebf175a36c385507db2e844d244c36 gcc/fortran/check.c ! 142ad92cf34a3ade6da967c06b16292e gcc/fortran/class.c 7c7f86a9e45099db8d493ea49228c0db gcc/fortran/config-lang.in 1c69af02a68e17cea021b1d7007c65c6 gcc/fortran/constructor.c 7bcd253b180a56fd61db3c3615fdb85a gcc/fortran/constructor.h *************** f851636001c3cc77afa05855758aa841 gcc/fo *** 4276,4300 **** 6d1cdd748cc7698067c3745514bc2254 gcc/fortran/cpp.h db6838d161e9a8524cf8845b8c7268fe gcc/fortran/data.c 8ebaa0809e6142da26506ff1cf8edece gcc/fortran/data.h ! 7bdafeca7acc7b226f97ecc93d5e9cc3 gcc/fortran/decl.c 3ea4e19a4e7778e89ac7ef0c0043638f gcc/fortran/dependency.c 48c8a1d7162b15b5696c7e17d604620a gcc/fortran/dependency.h ! 9eb8666b60ca3c9a5bfc51a4a617fd20 gcc/fortran/dump-parse-tree.c f90da3b9ef356dcb8b199709d04295c0 gcc/fortran/error.c ! 0dbb3e3e449c65239e23e8036301966d gcc/fortran/expr.c 912f38c8ebd1409619e196ee81566776 gcc/fortran/f95-lang.c ! 3fcfc5acae35074e6ccc24a54aa5d619 gcc/fortran/frontend-passes.c 54455177b152a958a17d0a1cf7098dc7 gcc/fortran/gfc-internals.texi ! 4316dcb01062c127b14778f1c22cde66 gcc/fortran/gfortran.h ! 3e63e994fb73edbc690ac574d9f63a02 gcc/fortran/gfortran.info ff4ff4dc585e7064b7e45ed9f3dd7292 gcc/fortran/gfortran.texi 1c42655f8e847c030340c0bc0f572455 gcc/fortran/gfortranspec.c ! c1cf766acd870f6c5572596d41adf403 gcc/fortran/interface.c ! df4b02c18658cc18668199b6f52ac607 gcc/fortran/intrinsic.c 740f4a188b7eedd8a50593429f7730e2 gcc/fortran/intrinsic.h ! 1f24f53b63b36f3f3b8d81c97c6bed31 gcc/fortran/intrinsic.texi ! c04826f0e1175b5546490fcd118e4511 gcc/fortran/invoke.texi ! 5355a5bbde69d449ff95d446ef1e689b gcc/fortran/io.c 9e6e56abc8c6aef5fb8e17d7f6701cef gcc/fortran/ioparm.def 423f4fb95aa32f60f632ddf8c7f0a4ec gcc/fortran/iresolve.c 06c1e7c8cf24b0f4a3ccd99e3c0731ce gcc/fortran/iso-c-binding.def --- 4276,4300 ---- 6d1cdd748cc7698067c3745514bc2254 gcc/fortran/cpp.h db6838d161e9a8524cf8845b8c7268fe gcc/fortran/data.c 8ebaa0809e6142da26506ff1cf8edece gcc/fortran/data.h ! a1f50a653f82caf8015327d1ccd246f9 gcc/fortran/decl.c 3ea4e19a4e7778e89ac7ef0c0043638f gcc/fortran/dependency.c 48c8a1d7162b15b5696c7e17d604620a gcc/fortran/dependency.h ! 7a8de61015aa878dcadd392e98addefe gcc/fortran/dump-parse-tree.c f90da3b9ef356dcb8b199709d04295c0 gcc/fortran/error.c ! d94a5a8e7464917c051614fe4212110a gcc/fortran/expr.c 912f38c8ebd1409619e196ee81566776 gcc/fortran/f95-lang.c ! 5a04be945f7b16dd490e19f90ce034d5 gcc/fortran/frontend-passes.c 54455177b152a958a17d0a1cf7098dc7 gcc/fortran/gfc-internals.texi ! a06ec77225b9b392138559edb4d27131 gcc/fortran/gfortran.h ! 335b94cf13c3fd89c8ae2fcf517700b4 gcc/fortran/gfortran.info ff4ff4dc585e7064b7e45ed9f3dd7292 gcc/fortran/gfortran.texi 1c42655f8e847c030340c0bc0f572455 gcc/fortran/gfortranspec.c ! 6463ae644f7ccb90d9cc0ffc35251867 gcc/fortran/interface.c ! 9323718f9905f6ad0d7e3203494d35aa gcc/fortran/intrinsic.c 740f4a188b7eedd8a50593429f7730e2 gcc/fortran/intrinsic.h ! b888d3e780fac275a5f3b91373f2dbf6 gcc/fortran/intrinsic.texi ! 3c394a5396e38715ac9bc4e65a88c474 gcc/fortran/invoke.texi ! 905f49eb8c7558d6b0f9017de41d4168 gcc/fortran/io.c 9e6e56abc8c6aef5fb8e17d7f6701cef gcc/fortran/ioparm.def 423f4fb95aa32f60f632ddf8c7f0a4ec gcc/fortran/iresolve.c 06c1e7c8cf24b0f4a3ccd99e3c0731ce gcc/fortran/iso-c-binding.def *************** c04826f0e1175b5546490fcd118e4511 gcc/fo *** 4302,4336 **** 44f1674579c99fdafaaaefa32fc3c8f2 gcc/fortran/lang-specs.h 741132abb81021dec17ad0d19a461685 gcc/fortran/lang.opt d544015fa629b186cecf197ee48584d2 gcc/fortran/libgfortran.h ! fecd56ad887bfd6365fb5ae4b1c9a466 gcc/fortran/match.c 95e2d215f0cbcac094f2213a57094a29 gcc/fortran/match.h 12e8d31a0ad8418861c15ee078422151 gcc/fortran/matchexp.c 56aca94612aaf36f80d3515a9bf14856 gcc/fortran/mathbuiltins.def 9f63ccce26b1e3d966cd4326d311ff2d gcc/fortran/misc.c ! 28f8153502ed531c1877a93d4d5e7538 gcc/fortran/module.c 828922c46f02490055bbee2bdc86d486 gcc/fortran/openmp.c ae6e6431554ba13cc79d0e80177b1f54 gcc/fortran/options.c ! daf0fa6ea568e29473fe8732fa6d86a1 gcc/fortran/parse.c d48e727ba0338b4dbef5767320dc6379 gcc/fortran/parse.h ! aedfdbb69dc322bd0822bdc0cd3d9bf7 gcc/fortran/primary.c ! 82655fbb138947a0bd03c858cdbd56c9 gcc/fortran/resolve.c 55b90d908a182b26c94fbd55418e3e9c gcc/fortran/scanner.c ! 91bb55d1c8808e6685b541b633536e9a gcc/fortran/simplify.c 29d6d2fa3d06f9daadf9e273da6dd5d8 gcc/fortran/st.c ! 3dd0bb7051def9f539c8a00c8be2946f gcc/fortran/symbol.c ! 7fec092b880b0965cbc758c70b1d7796 gcc/fortran/target-memory.c ! 1f3813bb0560a7d133c1144c5de3c350 gcc/fortran/target-memory.h ! a4827709836d35305cd00c9ecf0f8f63 gcc/fortran/trans-array.c fea09f6fe9590179066568a70fada097 gcc/fortran/trans-array.h 3f06bc73b8af6251543ca8b9c3c29ad4 gcc/fortran/trans-common.c b0c47e25986e6bf4b2fac2f4774d5c80 gcc/fortran/trans-const.c 79f96a38a9660a5bd87e8a7ca25ac5db gcc/fortran/trans-const.h a51a072541c8611d705be72ded160e55 gcc/fortran/trans-decl.c ! a14510644e508833246e5a5f41e6372b gcc/fortran/trans-expr.c ! d7d949c88cf5733ae562735f360729e5 gcc/fortran/trans-intrinsic.c ! 6fc3b9df732f14b7b36b27a6a6e47e1e gcc/fortran/trans-io.c c1b453df9d1e8d96310e4814784814fb gcc/fortran/trans-openmp.c ! bc312e68f734f6f67e316fd22ffd639c gcc/fortran/trans-stmt.c ef5a0744fb5a2df7cf08410ee996c3be gcc/fortran/trans-stmt.h 68b3e35ff2008993f4a4df0d246b32bc gcc/fortran/trans-types.c e30c03e67838eb8e054c0f8e91214f78 gcc/fortran/trans-types.h --- 4302,4336 ---- 44f1674579c99fdafaaaefa32fc3c8f2 gcc/fortran/lang-specs.h 741132abb81021dec17ad0d19a461685 gcc/fortran/lang.opt d544015fa629b186cecf197ee48584d2 gcc/fortran/libgfortran.h ! e51e3a02e1089af7ba31a29466e29b1c gcc/fortran/match.c 95e2d215f0cbcac094f2213a57094a29 gcc/fortran/match.h 12e8d31a0ad8418861c15ee078422151 gcc/fortran/matchexp.c 56aca94612aaf36f80d3515a9bf14856 gcc/fortran/mathbuiltins.def 9f63ccce26b1e3d966cd4326d311ff2d gcc/fortran/misc.c ! f34c95626ee2dad824c64f4dd49c5661 gcc/fortran/module.c 828922c46f02490055bbee2bdc86d486 gcc/fortran/openmp.c ae6e6431554ba13cc79d0e80177b1f54 gcc/fortran/options.c ! 189115385166958e9f65c817c0fb34f7 gcc/fortran/parse.c d48e727ba0338b4dbef5767320dc6379 gcc/fortran/parse.h ! 9c109eea3cc29e312d92693664d18c98 gcc/fortran/primary.c ! 4e08bc6f2a47d8dd69eda2f8959742ed gcc/fortran/resolve.c 55b90d908a182b26c94fbd55418e3e9c gcc/fortran/scanner.c ! 0931650b6864477402ca7fb455db18c8 gcc/fortran/simplify.c 29d6d2fa3d06f9daadf9e273da6dd5d8 gcc/fortran/st.c ! 00b30244bb36bd39cbc404cc8ef8e489 gcc/fortran/symbol.c ! c92f71e314e662dfa305749bfae5aca9 gcc/fortran/target-memory.c ! 9bfcdbdcbeeaeca5d9620a85a5784005 gcc/fortran/target-memory.h ! ad6a2d1a56afeec028ed4a392affce4b gcc/fortran/trans-array.c fea09f6fe9590179066568a70fada097 gcc/fortran/trans-array.h 3f06bc73b8af6251543ca8b9c3c29ad4 gcc/fortran/trans-common.c b0c47e25986e6bf4b2fac2f4774d5c80 gcc/fortran/trans-const.c 79f96a38a9660a5bd87e8a7ca25ac5db gcc/fortran/trans-const.h a51a072541c8611d705be72ded160e55 gcc/fortran/trans-decl.c ! a5724fa3104a86f545e6662e6a68ebc3 gcc/fortran/trans-expr.c ! 1d198cf2bab1d99554181c09d28379e2 gcc/fortran/trans-intrinsic.c ! 9b3ffd7bc1f4cecbd60ccac6246f5808 gcc/fortran/trans-io.c c1b453df9d1e8d96310e4814784814fb gcc/fortran/trans-openmp.c ! 657be825bc9adc1b2fa071d429d4f0b9 gcc/fortran/trans-stmt.c ef5a0744fb5a2df7cf08410ee996c3be gcc/fortran/trans-stmt.h 68b3e35ff2008993f4a4df0d246b32bc gcc/fortran/trans-types.c e30c03e67838eb8e054c0f8e91214f78 gcc/fortran/trans-types.h *************** f11e3b1f9fd66f305ebc5eb4d6ca0c18 gcc/ge *** 4369,4375 **** 1a949f80b2d03a1861593fe575394588 gcc/genextract.c f6183e8ec67c2b447d2ba68e1ced923e gcc/genflags.c b5dea17ff36cc4c2f5cc93268a3ea198 gcc/gengenrtl.c ! 93cff294ec7865755245af5d450783b7 gcc/gengtype-lex.c 8ab978b8ee23e81a64b0f3c3ff5bf847 gcc/gengtype-lex.l 5c66b1c23948f45ae835d30170b630e0 gcc/gengtype-parse.c d797b0ea2e498ad224336602c1e78372 gcc/gengtype-state.c --- 4369,4375 ---- 1a949f80b2d03a1861593fe575394588 gcc/genextract.c f6183e8ec67c2b447d2ba68e1ced923e gcc/genflags.c b5dea17ff36cc4c2f5cc93268a3ea198 gcc/gengenrtl.c ! f8617e934f5aef94a328d90db8bd55fe gcc/gengtype-lex.c 8ab978b8ee23e81a64b0f3c3ff5bf847 gcc/gengtype-lex.l 5c66b1c23948f45ae835d30170b630e0 gcc/gengtype-parse.c d797b0ea2e498ad224336602c1e78372 gcc/gengtype-state.c *************** a24699cb051bcc536fe2891b3c2c33c5 gcc/gg *** 4395,4401 **** c6414897667f37e2a21b292c6a9e5716 gcc/gimple-fold.c 5058e8dc47d476d569946cca25ba1f72 gcc/gimple-fold.h f3c11878b0af9f6e31df84251c30c6da gcc/gimple-iterator.c ! faa13094c01e0431e2eb927f352fdd0a gcc/gimple-low.c 2e7e59bf61daae1681ed988e1e8cc4a6 gcc/gimple-pretty-print.c e9616c058c7a31e98f37c6e37cf53a61 gcc/gimple-pretty-print.h 056b7cfe244afc0d2afe481ec9c4c335 gcc/gimple-streamer-in.c --- 4395,4401 ---- c6414897667f37e2a21b292c6a9e5716 gcc/gimple-fold.c 5058e8dc47d476d569946cca25ba1f72 gcc/gimple-fold.h f3c11878b0af9f6e31df84251c30c6da gcc/gimple-iterator.c ! d7a98a9134b60aabd676cc4c2d398890 gcc/gimple-low.c 2e7e59bf61daae1681ed988e1e8cc4a6 gcc/gimple-pretty-print.c e9616c058c7a31e98f37c6e37cf53a61 gcc/gimple-pretty-print.h 056b7cfe244afc0d2afe481ec9c4c335 gcc/gimple-streamer-in.c *************** e9616c058c7a31e98f37c6e37cf53a61 gcc/gi *** 4403,4410 **** 55ee71a641706b2763851c505dfce0a6 gcc/gimple-streamer.h 69b3ef02f55e5fd79e20a06939d5c1db gcc/gimple.c b9757294d5092fd62c8acef003afd1ad gcc/gimple.def ! 3e1db716c7b98a431ebbe79a6a5edb7f gcc/gimple.h ! dfdb4f1e40c39f4d5aacaa355890a7eb gcc/gimplify.c 5aed18d78fc22bdec7fde8f29c83dab8 gcc/ginclude/float.h 798164dd63bdd388c276bdda934db337 gcc/ginclude/iso646.h 922cfd657d9b95a5746eb208a9fe42ae gcc/ginclude/stdalign.h --- 4403,4410 ---- 55ee71a641706b2763851c505dfce0a6 gcc/gimple-streamer.h 69b3ef02f55e5fd79e20a06939d5c1db gcc/gimple.c b9757294d5092fd62c8acef003afd1ad gcc/gimple.def ! ca7b0b6051c460950ebeef28e86b8e14 gcc/gimple.h ! 10597ebe29f9737c8e512eb9df0c35cb gcc/gimplify.c 5aed18d78fc22bdec7fde8f29c83dab8 gcc/ginclude/float.h 798164dd63bdd388c276bdda934db337 gcc/ginclude/iso646.h 922cfd657d9b95a5746eb208a9fe42ae gcc/ginclude/stdalign.h *************** c4fa9905583ee2d3bf5bc1af35bb6a0a gcc/gi *** 4419,4425 **** 897f703ac94c2e943d10fc70add9be6f gcc/ginclude/unwind-arm-common.h 8d9ecf0d6ef93c79623ce1d27a32a2cb gcc/ginclude/varargs.h 1f7349a34b50f9b1be2a87d026723b0b gcc/glimits.h ! 17d81595354a213f99b50a2692073846 gcc/go/ChangeLog 1ffa723af8a46cf1c401d15bf369cce8 gcc/go/Make-lang.in 60ea054548c83c7f66170073f9f3e74c gcc/go/README.gcc 2cf0231be089453273a5d1c00c6bc4af gcc/go/config-lang.in --- 4419,4425 ---- 897f703ac94c2e943d10fc70add9be6f gcc/ginclude/unwind-arm-common.h 8d9ecf0d6ef93c79623ce1d27a32a2cb gcc/ginclude/varargs.h 1f7349a34b50f9b1be2a87d026723b0b gcc/glimits.h ! cdcd9c0df5dd6d59f9f3526ed4b4b389 gcc/go/ChangeLog 1ffa723af8a46cf1c401d15bf369cce8 gcc/go/Make-lang.in 60ea054548c83c7f66170073f9f3e74c gcc/go/README.gcc 2cf0231be089453273a5d1c00c6bc4af gcc/go/config-lang.in *************** a00e5299f2012b33a3f021760c0d1fdc gcc/in *** 4528,4539 **** 670de0f1aeb5df82274d3b656bc7a38e gcc/internal-fn.h 821c9e2a77b4c8ede4f8720e38295785 gcc/intl.c 7c97b2ae48706809ea6c5d02fe74db76 gcc/intl.h ! 3e04d6cf4e3609d4cd82581ae422bf35 gcc/ipa-cp.c e650ccf6c3546386a33be9fa55f96168 gcc/ipa-inline-analysis.c 7805a96fd07fcc2e7bbe1a81540283c8 gcc/ipa-inline-transform.c fe9761a30608b616eef769823f2b1298 gcc/ipa-inline.c 2b20dfa394151a881cc22ea798ef5ea1 gcc/ipa-inline.h ! 03f650910accd754aa65a9569cf04e9b gcc/ipa-prop.c 88504e263c6af167487b3a3a2c4dfb81 gcc/ipa-prop.h 1f42178f91921625c9d0f51f4ce262b3 gcc/ipa-pure-const.c bb5403d0abb6ef4348a1caf348b1400e gcc/ipa-ref-inline.h --- 4528,4539 ---- 670de0f1aeb5df82274d3b656bc7a38e gcc/internal-fn.h 821c9e2a77b4c8ede4f8720e38295785 gcc/intl.c 7c97b2ae48706809ea6c5d02fe74db76 gcc/intl.h ! 488c63eb83542369534f37fde6e175f0 gcc/ipa-cp.c e650ccf6c3546386a33be9fa55f96168 gcc/ipa-inline-analysis.c 7805a96fd07fcc2e7bbe1a81540283c8 gcc/ipa-inline-transform.c fe9761a30608b616eef769823f2b1298 gcc/ipa-inline.c 2b20dfa394151a881cc22ea798ef5ea1 gcc/ipa-inline.h ! 6844898e5214fe499dec267d17390604 gcc/ipa-prop.c 88504e263c6af167487b3a3a2c4dfb81 gcc/ipa-prop.h 1f42178f91921625c9d0f51f4ce262b3 gcc/ipa-pure-const.c bb5403d0abb6ef4348a1caf348b1400e gcc/ipa-ref-inline.h *************** e9fc71608c66a020bc5065751834345e gcc/ir *** 4552,4560 **** f40382429f977edccd08812a87dc118e gcc/ira-emit.c 54349a481c147239e827997ad23e2be7 gcc/ira-int.h 4bfb54c69e738752f2b00a1cb96da798 gcc/ira-lives.c ! f7b888c81c6757427dc94ff4bb913027 gcc/ira.c 0c03a79a3d24fe716b5d18971b84ae94 gcc/ira.h ! bd824ddbf9ef7b59ae57238a92e8b59d gcc/java/ChangeLog 3becfaac793f49e1f52cd74e78172b48 gcc/java/ChangeLog.ptr 32ebed5cdcf7881894c85752621f10b5 gcc/java/ChangeLog.tree-ssa 394f326af882bb222d9663363dc8c1d5 gcc/java/Make-lang.in --- 4552,4560 ---- f40382429f977edccd08812a87dc118e gcc/ira-emit.c 54349a481c147239e827997ad23e2be7 gcc/ira-int.h 4bfb54c69e738752f2b00a1cb96da798 gcc/ira-lives.c ! 3d9b241bf0bf814a6b6c04445dc711d0 gcc/ira.c 0c03a79a3d24fe716b5d18971b84ae94 gcc/ira.h ! 3e76c2a2d325b8459dff59e7330b746f gcc/java/ChangeLog 3becfaac793f49e1f52cd74e78172b48 gcc/java/ChangeLog.ptr 32ebed5cdcf7881894c85752621f10b5 gcc/java/ChangeLog.tree-ssa 394f326af882bb222d9663363dc8c1d5 gcc/java/Make-lang.in *************** bc4ad0401ac0ba0e680a4db1b6e722ec gcc/lt *** 4625,4631 **** b0d7c571ccd020b9e3f647eac0ff6e99 gcc/lto-streamer.h 5da77a6966dabb90acc5132736d74022 gcc/lto-symtab.c 10c8f0cab15150853818cb334e9e4ad8 gcc/lto-wrapper.c ! d238351cc0f901201279d7919c46c3e9 gcc/lto/ChangeLog 56b26f3c44943a7603b7a27a18f7d004 gcc/lto/Make-lang.in 6e14ecfada02760ef348d20107edc908 gcc/lto/common.c 094b93864c0f27f2d50fe81172933d4f gcc/lto/common.h --- 4625,4631 ---- b0d7c571ccd020b9e3f647eac0ff6e99 gcc/lto-streamer.h 5da77a6966dabb90acc5132736d74022 gcc/lto-symtab.c 10c8f0cab15150853818cb334e9e4ad8 gcc/lto-wrapper.c ! 884896d945df798eafe35a3eaee24725 gcc/lto/ChangeLog 56b26f3c44943a7603b7a27a18f7d004 gcc/lto/Make-lang.in 6e14ecfada02760ef348d20107edc908 gcc/lto/common.c 094b93864c0f27f2d50fe81172933d4f gcc/lto/common.h *************** d79df9e1caf58335bab675e9bf82b0c5 gcc/mi *** 4648,4655 **** 2569a0ab9b2c9f2c2b8e980aee6fbbe3 gcc/mode-classes.def e506d103ca497d298c8dd5c5610fe4ea gcc/mode-switching.c 8947509f901796633fb74498eb521da0 gcc/modulo-sched.c ! cc936b807fbec240a2a5797eaac44fe7 gcc/objc/ChangeLog ! 436ad493581c41f8e4cc76a148dd32e0 gcc/objc/Make-lang.in da45b23fbd1e8363b91c55b77441dd08 gcc/objc/config-lang.in 0097a3df91b144aae7c5cdce502e2964 gcc/objc/lang-specs.h 95efe61ae8f0ee3791411889125f6c9d gcc/objc/objc-act.c --- 4648,4655 ---- 2569a0ab9b2c9f2c2b8e980aee6fbbe3 gcc/mode-classes.def e506d103ca497d298c8dd5c5610fe4ea gcc/mode-switching.c 8947509f901796633fb74498eb521da0 gcc/modulo-sched.c ! 5599083bc9ea4647047f5dfcd19a8cf8 gcc/objc/ChangeLog ! 0e757855d32d15cdb854e1063086315d gcc/objc/Make-lang.in da45b23fbd1e8363b91c55b77441dd08 gcc/objc/config-lang.in 0097a3df91b144aae7c5cdce502e2964 gcc/objc/lang-specs.h 95efe61ae8f0ee3791411889125f6c9d gcc/objc/objc-act.c *************** da45b23fbd1e8363b91c55b77441dd08 gcc/ob *** 4661,4673 **** 800aa789213a1c0e7893f2ba91cc7d7a gcc/objc/objc-map.c 7501b84725ddb5617d919c00ca78a82b gcc/objc/objc-map.h 8b12df963a7eb6f2142bae0da56008d4 gcc/objc/objc-next-metadata-tags.h ! c21b78d92750bd0cf77e24d917b432aa gcc/objc/objc-next-runtime-abi-01.c ! 561526027fbee18b5e5d571bfb1c4b80 gcc/objc/objc-next-runtime-abi-02.c 6af5ba6128e393b275d9c930bdd2b449 gcc/objc/objc-runtime-hooks.h ee8a09e553d652170ee422b9efe808f2 gcc/objc/objc-runtime-shared-support.c 21ad5b0852d5d769f7c5ffc32f5ebab8 gcc/objc/objc-runtime-shared-support.h 2ba7d060c0828ada5d0106ae3e71b7e9 gcc/objc/objc-tree.def ! 41aff60608ff7a55904d7f265ff179c1 gcc/objcp/ChangeLog e3076f47f86f2600549b06fd4bad6860 gcc/objcp/Make-lang.in f50cc8cd3f754c025a21d8610532afdd gcc/objcp/config-lang.in 12b71fbafaa2d4d0f413d60abd7b80c8 gcc/objcp/lang-specs.h --- 4661,4673 ---- 800aa789213a1c0e7893f2ba91cc7d7a gcc/objc/objc-map.c 7501b84725ddb5617d919c00ca78a82b gcc/objc/objc-map.h 8b12df963a7eb6f2142bae0da56008d4 gcc/objc/objc-next-metadata-tags.h ! de7dba61a75961a7a7a6de25e2542a42 gcc/objc/objc-next-runtime-abi-01.c ! ab5ba8d4d86e1a3c601e5856ba5a28b3 gcc/objc/objc-next-runtime-abi-02.c 6af5ba6128e393b275d9c930bdd2b449 gcc/objc/objc-runtime-hooks.h ee8a09e553d652170ee422b9efe808f2 gcc/objc/objc-runtime-shared-support.c 21ad5b0852d5d769f7c5ffc32f5ebab8 gcc/objc/objc-runtime-shared-support.h 2ba7d060c0828ada5d0106ae3e71b7e9 gcc/objc/objc-tree.def ! 79670573c1d445ecf7b1a329841b8ae0 gcc/objcp/ChangeLog e3076f47f86f2600549b06fd4bad6860 gcc/objcp/Make-lang.in f50cc8cd3f754c025a21d8610532afdd gcc/objcp/config-lang.in 12b71fbafaa2d4d0f413d60abd7b80c8 gcc/objcp/lang-specs.h *************** d43babbf2865e3dcb835507d3e6d35f1 gcc/op *** 4682,4688 **** ecb17bb0f21652aff510a738b9235bbf gcc/opt-gather.awk 4f41ce38476ec14bc6f2aa2b81241b2e gcc/opt-include.awk 3d010ced67e4be45a93d50038f6bee33 gcc/opt-read.awk ! 100d19768f235e1181fdbda488e915a3 gcc/optabs.c 52d16adf03335ee4fafb1b3c10055b50 gcc/optabs.h e75848ca066c73c8737386188915b055 gcc/optc-gen.awk b5cb0bb31450b4d5944c5c6cf13d5139 gcc/optc-save-gen.awk --- 4682,4688 ---- ecb17bb0f21652aff510a738b9235bbf gcc/opt-gather.awk 4f41ce38476ec14bc6f2aa2b81241b2e gcc/opt-include.awk 3d010ced67e4be45a93d50038f6bee33 gcc/opt-read.awk ! e20c8e5379a264863714c138fa1757d5 gcc/optabs.c 52d16adf03335ee4fafb1b3c10055b50 gcc/optabs.h e75848ca066c73c8737386188915b055 gcc/optc-gen.awk b5cb0bb31450b4d5944c5c6cf13d5139 gcc/optc-save-gen.awk *************** d4fd5db6ffa51b594592b4aee12a8ce0 gcc/pa *** 4700,4706 **** 276dab36c8a8c0d629e819d7e679ca7a gcc/plugin.c 5d2b4c53783879fbf2517aa21103c11f gcc/plugin.def 556fd102f801561a9b39d1f8b3442096 gcc/plugin.h ! 34abb175710e9e23635eb6729c946c25 gcc/po/ChangeLog c18cccb16a6bd9d20e5c1cc80a1411e8 gcc/po/EXCLUDES 606bb6f798de9817ddeb3d25fa70ef4d gcc/po/be.gmo a9a4a16cd4c593709cd04092b7dbab42 gcc/po/be.po --- 4700,4706 ---- 276dab36c8a8c0d629e819d7e679ca7a gcc/plugin.c 5d2b4c53783879fbf2517aa21103c11f gcc/plugin.def 556fd102f801561a9b39d1f8b3442096 gcc/plugin.h ! 696ca6a78928de83e820ce9309e14d68 gcc/po/ChangeLog c18cccb16a6bd9d20e5c1cc80a1411e8 gcc/po/EXCLUDES 606bb6f798de9817ddeb3d25fa70ef4d gcc/po/be.gmo a9a4a16cd4c593709cd04092b7dbab42 gcc/po/be.po *************** c180df3737246433849b5e0a2f7f0975 gcc/po *** 4744,4750 **** a51eb8951c7700a5cd773501a341d8b0 gcc/pointer-set.h b772f9d6714d8bd7d1ccc0dfc3e9a4e2 gcc/postreload-gcse.c 297922b702baaea86d4775aee0040819 gcc/postreload.c ! 0ff850c431de9de702150e3f50991dbc gcc/predict.c 04093d15115503814434ff2c65412e15 gcc/predict.def 3df18a48ab17532aa6b847ced633be98 gcc/predict.h 807554bb8b92439008e4a56e3c175429 gcc/prefix.c --- 4744,4750 ---- a51eb8951c7700a5cd773501a341d8b0 gcc/pointer-set.h b772f9d6714d8bd7d1ccc0dfc3e9a4e2 gcc/postreload-gcse.c 297922b702baaea86d4775aee0040819 gcc/postreload.c ! 3db0d2e73f92531c0d7cc51262d1fa9a gcc/predict.c 04093d15115503814434ff2c65412e15 gcc/predict.def 3df18a48ab17532aa6b847ced633be98 gcc/predict.h 807554bb8b92439008e4a56e3c175429 gcc/prefix.c *************** ce4a4d4f905ea5d3732f0523c1b908e2 gcc/re *** 4762,4774 **** 6ca173e103d3ea7b0968df85b546dc21 gcc/real.h a3f83f852bd9adca4a0c2a391faecc5d gcc/realmpfr.c 4beee08e0077bcf6bb8233ef9362133f gcc/realmpfr.h ! c135a4b50eec2ef2fca9eafaef75dc4b gcc/recog.c d582fb3aefbe5ed1ca54a304fa76de9c gcc/recog.h 9a5084ffcb1148dc4cccc6bf3b377cdf gcc/ree.c eebdb87ff10a861b1455bee95b1dd6fc gcc/reg-notes.def 7a5440d54ed99efac194d6cb45492cb1 gcc/reg-stack.c ! 0864e27c1bd91753636aabd39261164c gcc/regcprop.c ! 807c8660aad902fa86329edefbb3bdaf gcc/reginfo.c 52f7449da4037af206f5b1ef9ff6e6d0 gcc/regmove.c 72c1d303269397b39022219647a47cef gcc/regrename.c 652a3511b84f6848cd4e78a5fae8c856 gcc/regrename.h --- 4762,4774 ---- 6ca173e103d3ea7b0968df85b546dc21 gcc/real.h a3f83f852bd9adca4a0c2a391faecc5d gcc/realmpfr.c 4beee08e0077bcf6bb8233ef9362133f gcc/realmpfr.h ! 2cd64a7038ca57c78dd1e175fc34208c gcc/recog.c d582fb3aefbe5ed1ca54a304fa76de9c gcc/recog.h 9a5084ffcb1148dc4cccc6bf3b377cdf gcc/ree.c eebdb87ff10a861b1455bee95b1dd6fc gcc/reg-notes.def 7a5440d54ed99efac194d6cb45492cb1 gcc/reg-stack.c ! d11f04bb208930bde9e7f49b715a01bb gcc/regcprop.c ! f23e08ee407d2d47a991faffc6b6f113 gcc/reginfo.c 52f7449da4037af206f5b1ef9ff6e6d0 gcc/regmove.c 72c1d303269397b39022219647a47cef gcc/regrename.c 652a3511b84f6848cd4e78a5fae8c856 gcc/regrename.h *************** eccf793fd1d883110589d69a6daec66d gcc/re *** 4785,4812 **** aec454e968250bcec02c3fae1ed45f29 gcc/rtl-error.h 945516ddd2021829a07d1fd1236818d2 gcc/rtl.c 3d437385c998a6ae1b50297008d6b736 gcc/rtl.def ! 3d5fba487035211f16e6af9f15d32e65 gcc/rtl.h a157accd88e34fdf1a0bf8d5bbfb359e gcc/rtlanal.c 2f69f037cee3a42b47d82c4811253b8b gcc/rtlhooks-def.h 56939b7a617ead0e831843904d71821e gcc/rtlhooks.c 24ba5b5969099d08590a4a0f81e13667 gcc/sbitmap.c 20c919ed85979121f1c5b80f875eb049 gcc/sbitmap.h ! 86de7a5531c37e98176cb58092c14b90 gcc/sched-deps.c bb79fde46f69a7b7a2fc923b12be5c55 gcc/sched-ebb.c b1aff40c7513ce576f44ce91d03aa951 gcc/sched-int.h 4232e9d2c1f63ee0a5973f6f19776359 gcc/sched-rgn.c 58135de9b3221e9413a68b1270545e7b gcc/sched-vis.c ! 4afc8c7f06ea17e5350ac0b7829ff3ac gcc/sdbout.c 2bf1c375dc117d4f9b701a7aee5fd59c gcc/sdbout.h 5533dd58d4c86f056496518954280835 gcc/sel-sched-dump.c b17848d6a564d823646673d5a9d60651 gcc/sel-sched-dump.h dadd4542ec08d8037dfd862b691c92e7 gcc/sel-sched-ir.c dd36d975e8030cb9f833a643ce229098 gcc/sel-sched-ir.h ! e8c6184fc870ac089256e85395e77548 gcc/sel-sched.c 32c2071cc9705b499f5917935cacd83f gcc/sel-sched.h ccb65a11bfd2ad61af7bc0338bf40f70 gcc/sese.c 869b55fc2d1ef0fce8f3037da52223c9 gcc/sese.h ! f8919a978ec24c4a0c92705536c5fdd2 gcc/simplify-rtx.c 9d9ec4d8cc5360d6be1d37ebc30ef605 gcc/sparseset.c d401fe3058db6b68c515e587a196e323 gcc/sparseset.h d2c3b7023d5f7846966a413e13012642 gcc/sreal.c --- 4785,4812 ---- aec454e968250bcec02c3fae1ed45f29 gcc/rtl-error.h 945516ddd2021829a07d1fd1236818d2 gcc/rtl.c 3d437385c998a6ae1b50297008d6b736 gcc/rtl.def ! 60b6d5c52aa3dde0638ee48c2524bb02 gcc/rtl.h a157accd88e34fdf1a0bf8d5bbfb359e gcc/rtlanal.c 2f69f037cee3a42b47d82c4811253b8b gcc/rtlhooks-def.h 56939b7a617ead0e831843904d71821e gcc/rtlhooks.c 24ba5b5969099d08590a4a0f81e13667 gcc/sbitmap.c 20c919ed85979121f1c5b80f875eb049 gcc/sbitmap.h ! 25b26e1f7b8bb43e79ee63aec89d6845 gcc/sched-deps.c bb79fde46f69a7b7a2fc923b12be5c55 gcc/sched-ebb.c b1aff40c7513ce576f44ce91d03aa951 gcc/sched-int.h 4232e9d2c1f63ee0a5973f6f19776359 gcc/sched-rgn.c 58135de9b3221e9413a68b1270545e7b gcc/sched-vis.c ! f55c40bde9b25eaed179b8693c5d532b gcc/sdbout.c 2bf1c375dc117d4f9b701a7aee5fd59c gcc/sdbout.h 5533dd58d4c86f056496518954280835 gcc/sel-sched-dump.c b17848d6a564d823646673d5a9d60651 gcc/sel-sched-dump.h dadd4542ec08d8037dfd862b691c92e7 gcc/sel-sched-ir.c dd36d975e8030cb9f833a643ce229098 gcc/sel-sched-ir.h ! 583a6e38de542bc2a7e6cbf37cae4878 gcc/sel-sched.c 32c2071cc9705b499f5917935cacd83f gcc/sel-sched.h ccb65a11bfd2ad61af7bc0338bf40f70 gcc/sese.c 869b55fc2d1ef0fce8f3037da52223c9 gcc/sese.h ! 70ad19b52c5ab373541a04963e5200c4 gcc/simplify-rtx.c 9d9ec4d8cc5360d6be1d37ebc30ef605 gcc/sparseset.c d401fe3058db6b68c515e587a196e323 gcc/sparseset.h d2c3b7023d5f7846966a413e13012642 gcc/sreal.c *************** b8d54a38e425b7ff29e8a3e6e7051d52 gcc/st *** 4828,4838 **** 81185fb8cf1b9425b5476e30ae0d28cb gcc/target-globals.c d63d3caa29e4e952069cfc55b65d3811 gcc/target-globals.h c5a0ec898fbd3d6ecc86f1f872834cb6 gcc/target-hooks-macros.h ! 26eca65bb86a3e56cdcd614b4eb4b822 gcc/target.def 508c9318dbb03c5717f94defd985fae9 gcc/target.h 218240e84eca2c2dff5d2c50591592fa gcc/targhooks.c c13c1b5a443063c21de9ad3d83cc9280 gcc/targhooks.h ! fc09e418ea393d50eda9e4a657e745b3 gcc/testsuite/ChangeLog bf09a3a4b2844c1427e18133bf8c4848 gcc/testsuite/ChangeLog-1993-2007 0cfd18f5e11308d47955263801f31753 gcc/testsuite/ChangeLog-2008 60d3faaef4bf51b170759743d2081977 gcc/testsuite/ChangeLog-2009 --- 4828,4838 ---- 81185fb8cf1b9425b5476e30ae0d28cb gcc/target-globals.c d63d3caa29e4e952069cfc55b65d3811 gcc/target-globals.h c5a0ec898fbd3d6ecc86f1f872834cb6 gcc/target-hooks-macros.h ! 77d20829f6e1160fa9ceb8a9da19445a gcc/target.def 508c9318dbb03c5717f94defd985fae9 gcc/target.h 218240e84eca2c2dff5d2c50591592fa gcc/targhooks.c c13c1b5a443063c21de9ad3d83cc9280 gcc/targhooks.h ! fbaeaff195e00b2335eec351ea02b526 gcc/testsuite/ChangeLog bf09a3a4b2844c1427e18133bf8c4848 gcc/testsuite/ChangeLog-1993-2007 0cfd18f5e11308d47955263801f31753 gcc/testsuite/ChangeLog-2008 60d3faaef4bf51b170759743d2081977 gcc/testsuite/ChangeLog-2009 *************** a0596cb9b205bf852ca157b855109ce7 gcc/te *** 8169,8174 **** --- 8169,8175 ---- 388e3e7b10ac31572872850035c0c870 gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr5.C e4542432269cbece8ffb9364ece496f1 gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr6.C a621c183e9f56da1277a036e92a43fb1 gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr7.C + 2802ca42ee9d91cfb21c5e02dcf35ba4 gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr8.C 433e0f16558f845c892db5541c24ca32 gcc/testsuite/g++.dg/cpp0x/constexpr-array-tparm.C a556f31ce06eec3fb6233e54f8d075bf gcc/testsuite/g++.dg/cpp0x/constexpr-array.C 76c111cf1afe25862b167e8116e6ae47 gcc/testsuite/g++.dg/cpp0x/constexpr-array2.C *************** a3ba35bd21a746eed5c781d96b7ac1b4 gcc/te *** 8370,8375 **** --- 8371,8377 ---- 279dfeb78dc189adeb256c12c0eb074e gcc/testsuite/g++.dg/cpp0x/decltype4.C 12b18d36a7f73c1419f238954db91a8d gcc/testsuite/g++.dg/cpp0x/decltype48.C 386eaa55c3c1d627d49e5f9e7adec123 gcc/testsuite/g++.dg/cpp0x/decltype5.C + dd6c683be4f9a9a39eaad1f127661efd gcc/testsuite/g++.dg/cpp0x/decltype57.C 5e830daa5bfe8780960733c15cef7f74 gcc/testsuite/g++.dg/cpp0x/decltype6.C c3626f3b26fbb53bd234a4e39649b63f gcc/testsuite/g++.dg/cpp0x/decltype7.C bbdff105c665351973aaa6a25eaa0940 gcc/testsuite/g++.dg/cpp0x/decltype8.C *************** c59dd44c446a74f887d02cded81ac68d gcc/te *** 8424,8430 **** 136cf9f59d9f42c7f21ac24a24fb8505 gcc/testsuite/g++.dg/cpp0x/enum15.C 3daab85e397ec0ebb4d72935af3769af gcc/testsuite/g++.dg/cpp0x/enum16.C 366127817ed249e734c8240648919022 gcc/testsuite/g++.dg/cpp0x/enum17.C ! 96f064b57a9747912f56ab170241407f gcc/testsuite/g++.dg/cpp0x/enum18.C ebe8e05bc54f51359fbdd8f97f3a1e5d gcc/testsuite/g++.dg/cpp0x/enum19.C a8073df4790689eb8b20d4a6f09abde1 gcc/testsuite/g++.dg/cpp0x/enum2.C 9beff7ab26dc0851c19db4790deb4e47 gcc/testsuite/g++.dg/cpp0x/enum20.C --- 8426,8432 ---- 136cf9f59d9f42c7f21ac24a24fb8505 gcc/testsuite/g++.dg/cpp0x/enum15.C 3daab85e397ec0ebb4d72935af3769af gcc/testsuite/g++.dg/cpp0x/enum16.C 366127817ed249e734c8240648919022 gcc/testsuite/g++.dg/cpp0x/enum17.C ! 577b64950eb155d98808a78644ec2644 gcc/testsuite/g++.dg/cpp0x/enum18.C ebe8e05bc54f51359fbdd8f97f3a1e5d gcc/testsuite/g++.dg/cpp0x/enum19.C a8073df4790689eb8b20d4a6f09abde1 gcc/testsuite/g++.dg/cpp0x/enum2.C 9beff7ab26dc0851c19db4790deb4e47 gcc/testsuite/g++.dg/cpp0x/enum20.C *************** c1efa91a2b634e23787c9a3ae4b0401c gcc/te *** 8563,8568 **** --- 8565,8571 ---- cce0abbcd5a42636d68daa3b6411ac8c gcc/testsuite/g++.dg/cpp0x/initlist63.C 8dc9677624bd2d64251111d44231387a gcc/testsuite/g++.dg/cpp0x/initlist64.C 613b80eadd3f31808de00e614b6391fa gcc/testsuite/g++.dg/cpp0x/initlist7.C + 0ea881619a668e35542e587d9eb84ead gcc/testsuite/g++.dg/cpp0x/initlist78.C d3a348c4b49e1b0531708a46d1a74cce gcc/testsuite/g++.dg/cpp0x/initlist8.C 73b80da7e3c8fd208ac554539a446c84 gcc/testsuite/g++.dg/cpp0x/initlist9.C 42dda7ee38ea7ff6645882f3f9a6eaa0 gcc/testsuite/g++.dg/cpp0x/inline-ns1.C *************** a30e26da337ef1a550b5b617672f3782 gcc/te *** 8608,8613 **** --- 8611,8617 ---- 42c269128ec251cc935bf084af3fbf0b gcc/testsuite/g++.dg/cpp0x/lambda/lambda-direct-init.C 4d150a5c8a885c4059815a3096459204 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh.C b88a795aaa2898fb80b0ec0b82214e74 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh2.C + 0ab2ed931f43d51b53e363fe32167ff6 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh3.C 3ac0e4a74395a60c6b765eada0384267 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-err1.C d6b61c53f6746bab283cfde83dd61400 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc.C 4f12cdfe781a553313a09b3bec1f9e14 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-errloc2.C *************** fc8b20e80b7a3acae5bba366690c4d56 gcc/te *** 8638,8649 **** --- 8642,8655 ---- 96adf75a6123dcdced3a43ce92c560f9 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C 836e2dcbfa500939dce851cb8f14b448 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C 9b6f6cd67e0b6b1300ea588451c2a8c3 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ns-scope.C + 4dd2e53a818a75bd162594fd25ac6648 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C 80c65dd7b2e3c9f25b1983ac66332449 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C 12e661c561e08767d0eba1cd070bbb1b gcc/testsuite/g++.dg/cpp0x/lambda/lambda-qualified.C 63eabf92616c986c387a2f405326647c gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C 1c8ff3c470a354b483ecd257a3ce332b gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C 0059c3472d7a3d6ab23c7aa58857fedc gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C acbae52bdbdaf07e52af0298a84decea gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref2.C + 1513e36e6bd3517091ebe8591db0f6a9 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-return1.C edbfa2dc925571a1d9ea613aa37a589c gcc/testsuite/g++.dg/cpp0x/lambda/lambda-std-function.C 56bd211474cf91f523f453555f6eb049 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-switch.C ce8e41695176c686dc0c2c2cd466d1d6 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-syntax1.C *************** ae7b9d7f58a9bc802bcf7ffd5e196b3b gcc/te *** 8694,8699 **** --- 8700,8706 ---- f10a73fb8e727619c647ab5fa4bfc33d gcc/testsuite/g++.dg/cpp0x/noexcept18.C 106c122a0f8476e054941f5467d4db3e gcc/testsuite/g++.dg/cpp0x/noexcept19.C 2c2ee75fa09bba00462d8640b91c498d gcc/testsuite/g++.dg/cpp0x/noexcept20.C + 8a1b4a9dc941644e560680d40bba31d3 gcc/testsuite/g++.dg/cpp0x/noexcept22.C b2aeffa807ca947f2ac1ce254e43f97a gcc/testsuite/g++.dg/cpp0x/nolinkage1.C 6b7c91b931bbdacbbffbf9b90a79bc6a gcc/testsuite/g++.dg/cpp0x/nolinkage1.h 84840c32c28b1c181ccc33aecc2459a7 gcc/testsuite/g++.dg/cpp0x/nolinkage1a.cc *************** a236f3104477bbbc39059ee779e10fe1 gcc/te *** 9072,9077 **** --- 9079,9085 ---- 16289b67a240f0f662766372110d6428 gcc/testsuite/g++.dg/cpp0x/variadic133.C 70f85a4313e0ae6d4f02299251ddaaf1 gcc/testsuite/g++.dg/cpp0x/variadic134.C 1e1fa2f2e9cc63d798ef3b07852ef7e5 gcc/testsuite/g++.dg/cpp0x/variadic14.C + 812fa88d8659fdb840378e6b8af20e63 gcc/testsuite/g++.dg/cpp0x/variadic149.C 6ed2e036536de09852464be3cd9a350a gcc/testsuite/g++.dg/cpp0x/variadic15.C 5e1e29412f063305c242c74862e86181 gcc/testsuite/g++.dg/cpp0x/variadic16.C 3053d79335fc919b210a3cc63f124ff4 gcc/testsuite/g++.dg/cpp0x/variadic17.C *************** a864ac9ace6ee08b0ae00899e67445f0 gcc/te *** 9326,9331 **** --- 9334,9340 ---- 3dc7fc950cc8912775fd7b3753944d23 gcc/testsuite/g++.dg/debug/pr56819.C c3f392076ad11f8768ef0321b89abd5f gcc/testsuite/g++.dg/debug/static1.C 7e13d86d33b17cfb7cdf61b7b8cca961 gcc/testsuite/g++.dg/debug/template1.C + 23dff563f4e6898790a381f0897b988f gcc/testsuite/g++.dg/debug/template2.C f50cc26d9a41a3cc4afb62032326372f gcc/testsuite/g++.dg/debug/trivial.C 863c8434199f0ac4d3a2d8d915bd5d1a gcc/testsuite/g++.dg/debug/typedef1.C 798848d35df1829cb7c468058c887871 gcc/testsuite/g++.dg/debug/typedef2.C *************** fd9d6b2aeb10f429dd19c2675cd7ac03 gcc/te *** 9460,9468 **** 7549d75346531f9c6ff9ee0763a142b5 gcc/testsuite/g++.dg/eh/throw1.C 7f4aab5cdb2954060fab6ebdbf157a33 gcc/testsuite/g++.dg/eh/throw2.C 45cea983dcee48d4c249758ac270c782 gcc/testsuite/g++.dg/eh/throw3.C ! 82da5127d5ab16e1719d0acbdd8dc675 gcc/testsuite/g++.dg/eh/uncaught1.C c77f4b5da310cb17818365cde0e153dd gcc/testsuite/g++.dg/eh/uncaught2.C 794cca1303d30d70c6d5c47c972e23a7 gcc/testsuite/g++.dg/eh/uncaught3.C 1ff41980dd5d1398018fd0852361341a gcc/testsuite/g++.dg/eh/unexpected1.C 75e632be1251d6094d2cf9147ed3621d gcc/testsuite/g++.dg/eh/unwind1.C a758dbc649ac4070d4dbe5fa7130d1e5 gcc/testsuite/g++.dg/eh/unwind2.C --- 9469,9478 ---- 7549d75346531f9c6ff9ee0763a142b5 gcc/testsuite/g++.dg/eh/throw1.C 7f4aab5cdb2954060fab6ebdbf157a33 gcc/testsuite/g++.dg/eh/throw2.C 45cea983dcee48d4c249758ac270c782 gcc/testsuite/g++.dg/eh/throw3.C ! c7d37e91415ca637d75ff50b8ef9cfe1 gcc/testsuite/g++.dg/eh/uncaught1.C c77f4b5da310cb17818365cde0e153dd gcc/testsuite/g++.dg/eh/uncaught2.C 794cca1303d30d70c6d5c47c972e23a7 gcc/testsuite/g++.dg/eh/uncaught3.C + fcfb3b280dbfcc3f1855c13475f2e865 gcc/testsuite/g++.dg/eh/uncaught4.C 1ff41980dd5d1398018fd0852361341a gcc/testsuite/g++.dg/eh/unexpected1.C 75e632be1251d6094d2cf9147ed3621d gcc/testsuite/g++.dg/eh/unwind1.C a758dbc649ac4070d4dbe5fa7130d1e5 gcc/testsuite/g++.dg/eh/unwind2.C *************** d30ef5af28e6363dab6713f12d513bc9 gcc/te *** 9513,9518 **** --- 9523,9529 ---- f30409fd40ff04e848318e2beb14a1c7 gcc/testsuite/g++.dg/expr/cond7.C 40070278213343c0b01841f7df7492ae gcc/testsuite/g++.dg/expr/cond8.C d66ca920348778bbeb8e0826f1345ba0 gcc/testsuite/g++.dg/expr/cond9.C + 89913df130d2e40e91c042ff5d6c302d gcc/testsuite/g++.dg/expr/const1.C 40c29dc173bf365777a7de4d0970b286 gcc/testsuite/g++.dg/expr/copy1.C 5943e958df776a88c39dc200ec5d291c gcc/testsuite/g++.dg/expr/crash-1.C 4ddfe508094ae855749b3a8b63fd8063 gcc/testsuite/g++.dg/expr/crash2.C *************** b4b156653c1283c46a83946c6b05b01d gcc/te *** 9687,9692 **** --- 9698,9704 ---- eb7c01a3c27870b31eff78eaff0e6292 gcc/testsuite/g++.dg/ext/attrib43.C a9b531299f7c87d3798a11d5ed6f2ecb gcc/testsuite/g++.dg/ext/attrib44.C a73db09c380f6e6f784f26040b011488 gcc/testsuite/g++.dg/ext/attrib45.C + ca699314b91eb8b52392070eaa448db1 gcc/testsuite/g++.dg/ext/attrib48.C ec01dbb0bb96c7cda806a516a5cf87d4 gcc/testsuite/g++.dg/ext/attrib5.C 76284b29c6fce52f56ddbcc04acd3a97 gcc/testsuite/g++.dg/ext/attrib6.C 7af1e9265de26187b4a3a3880f99ac11 gcc/testsuite/g++.dg/ext/attrib7.C *************** d26dc16e551e9c50eaca4ea300e37bd2 gcc/te *** 10256,10261 **** --- 10268,10274 ---- 07b2ae49f8ff75d1230e86dbfe3f3ef3 gcc/testsuite/g++.dg/gomp/pr51360.C 7a2da759d2704e78a3b0d45bae8fc384 gcc/testsuite/g++.dg/gomp/pr51669.C 271355b3ab79506b8ff11b6ce0ae4994 gcc/testsuite/g++.dg/gomp/pr56217.C + 2638eeaa7af8cdffb3a98b0f4894d2dc gcc/testsuite/g++.dg/gomp/pr59297.C d2c2484d4d1236326efc32a01fddaa03 gcc/testsuite/g++.dg/gomp/predetermined-1.C edac71d2b358ecd6e646fece69c5426d gcc/testsuite/g++.dg/gomp/private-1.C 536359d59fc418a1570a6d8574a66ca1 gcc/testsuite/g++.dg/gomp/sections-1.C *************** b6207250e81c199b2860b99758c7c707 gcc/te *** 10667,10672 **** --- 10680,10688 ---- 20fcc05340e0948ba3a032b0f5f2bbe9 gcc/testsuite/g++.dg/ipa/pr51929.C 5645876c592391b1a221e2bbadde0436 gcc/testsuite/g++.dg/ipa/pr52939.C 31b6d18c1858b5f5148de832f3fb7915 gcc/testsuite/g++.dg/ipa/pr55264.C + 190bb52be2caa70fd51cc2a735d45f1e gcc/testsuite/g++.dg/ipa/pr60640-1.C + b4277c2887fdb910bdca2a8dbf0de117 gcc/testsuite/g++.dg/ipa/pr60640-2.C + 2b5d243c5137f370d06b3628cfde2864 gcc/testsuite/g++.dg/ipa/pr60640-3.C f1339a059a53b8c932f6dd4870283209 gcc/testsuite/g++.dg/lookup/ambig1.C fa1ea4ed4c9f1ae996929481bd6de67c gcc/testsuite/g++.dg/lookup/ambig2.C 0e636168c26983f9ef884688bb4917e7 gcc/testsuite/g++.dg/lookup/ambig3.C *************** ac3ba0e4d0da02a871ab3d83b9cc0bf2 gcc/te *** 11516,11521 **** --- 11532,11539 ---- 36a8c3554403443884b8a9901e71ac7e gcc/testsuite/g++.dg/other/pr50464.C f41d9c16f9331b066d437ea74ff76a33 gcc/testsuite/g++.dg/other/pr52048.C 064314e5b4858c9dbb88aea445e7faae gcc/testsuite/g++.dg/other/pr53811.C + 667d5ddb9eb5ed7e7c010be8e487f82b gcc/testsuite/g++.dg/other/pr55650.C + 0da6ae1a686a791137078c463ee29dd7 gcc/testsuite/g++.dg/other/pr55650.cc fc6dc5d12ae16fd14b7d1c21901a935f gcc/testsuite/g++.dg/other/pragma-ep-1.C 2b96e0cda3aaa703c284fca6a0dd72c9 gcc/testsuite/g++.dg/other/pragma-re-1.C bdec0c9208af6ee3a9ab1f2c07d3ba19 gcc/testsuite/g++.dg/other/pragma-re-2.C *************** dbd20d81c325cee68179c0a4fd156f81 gcc/te *** 12271,12276 **** --- 12289,12295 ---- 0218cd33eef2d06ff1cf3f60e250aed7 gcc/testsuite/g++.dg/template/array23.C a1f7515ba86f0bee05a8d1da2482e446 gcc/testsuite/g++.dg/template/array24.C 8f0a4c4adf2f5e777a6dcc6b13f8fc46 gcc/testsuite/g++.dg/template/array25.C + 8894a9a8ca6a93ffc4fb75f5882e3826 gcc/testsuite/g++.dg/template/array26.C 353ce65cd4b47cb87d4a7e33038e372d gcc/testsuite/g++.dg/template/array3.C 3904f7cfd18135b5f8ef1dbb020648fc gcc/testsuite/g++.dg/template/array4.C c557bdb58ff52b9fc368185880923627 gcc/testsuite/g++.dg/template/array5.C *************** e55baeaf118c452b9f707b8236ee86b1 gcc/te *** 12483,12488 **** --- 12502,12508 ---- 5a9ab10f62078b4d20766a00362fa933 gcc/testsuite/g++.dg/template/defarg8.C bbc0cedc0c23e5084b73fd2bd7d12be0 gcc/testsuite/g++.dg/template/defarg9.C 08e2480f72bcb72f3f0c69f74625bd4c gcc/testsuite/g++.dg/template/delete1.C + f64b5dcbfa3d3051a358c8d1c1e8a878 gcc/testsuite/g++.dg/template/delete2.C ddb49979db2f8e8e7e883106ad0c150c gcc/testsuite/g++.dg/template/dependent-args1.C 4e28ad3da9cf0f80841dd7ac6a9a0233 gcc/testsuite/g++.dg/template/dependent-expr1.C 5c363f74bcfd32858f0d7daa76f3d56b gcc/testsuite/g++.dg/template/dependent-expr2.C *************** c617d0614fa2c65ab23502fc466e2592 gcc/te *** 12658,12663 **** --- 12678,12684 ---- f324fc75e2ce740742e957e7c3d64819 gcc/testsuite/g++.dg/template/inherit6.C 512af16a8d227668dfd611f18408ff34 gcc/testsuite/g++.dg/template/inherit7.C 26c432e91982771c6c64fd5266cbbb79 gcc/testsuite/g++.dg/template/inherit8.C + 19797273bb7cf4155972bbcb4d4fb8c3 gcc/testsuite/g++.dg/template/inherit9.C 9783cba5cd0e48e50ecc5c42ed1dd282 gcc/testsuite/g++.dg/template/init-list.C f30fe425de51d4cb2ab5ff05b71d616a gcc/testsuite/g++.dg/template/init1.C 7c6a96d0550437ed561f8825ad2bc25e gcc/testsuite/g++.dg/template/init10.C *************** e254df20b082728d0e04a8e1b3b18557 gcc/te *** 12701,12706 **** --- 12722,12728 ---- cdb30bf1f7ce096f5aff97aa15fa35ce gcc/testsuite/g++.dg/template/local5.C 4419b1a0c4d0571cfe9b43906ee4cff8 gcc/testsuite/g++.dg/template/local6.C e8013d76ce3f8f9574197fee5026c527 gcc/testsuite/g++.dg/template/local7.C + 4b8e232e3f151333498020bca196e50d gcc/testsuite/g++.dg/template/local8.C 858241029bc9c5f2b0eb96ca1ff057a8 gcc/testsuite/g++.dg/template/lookup1.C e1e6ffb2ea2a524c64cbcc0a6f97459a gcc/testsuite/g++.dg/template/lookup2.C 0287287b4b02081228b1429a9526248d gcc/testsuite/g++.dg/template/lookup3.C *************** bb04475dfd1abb6699b6daee337bc7ef gcc/te *** 12846,12851 **** --- 12868,12874 ---- 3dc2f7f38ec49323d6044ddb2bc2e191 gcc/testsuite/g++.dg/template/partial11.C de5b350b4a291d22a6e427de9a0c69fc gcc/testsuite/g++.dg/template/partial12.C 60cae52d36e0a429fcd673ddc92f855f gcc/testsuite/g++.dg/template/partial13.C + 007e963e6560ba4fd5ed5856096ee4cc gcc/testsuite/g++.dg/template/partial15.C e2ea27f4d30c89986de472da016881a2 gcc/testsuite/g++.dg/template/partial2.C 629ba41b72a6f4a573aa2b2fc66bf5c8 gcc/testsuite/g++.dg/template/partial3.C dbd288590e967c40dee79909821124df gcc/testsuite/g++.dg/template/partial4.C *************** cfc21cabe74fa837433fc899f5f5211c gcc/te *** 13194,13199 **** --- 13217,13226 ---- 320afc20e453862a122ac3d0bdda181b gcc/testsuite/g++.dg/template/using20.C b43f1055f31b1252ac8d0d24e672389e gcc/testsuite/g++.dg/template/using21.C 27c7449bd8162cc3ac767afb5eab28d7 gcc/testsuite/g++.dg/template/using22.C + b6fd01563ec784b5aec55681183ee573 gcc/testsuite/g++.dg/template/using23.C + cc03adff320bfe4d556ca4c56ce6a4d6 gcc/testsuite/g++.dg/template/using27.C + cb0bcba86115588eec939f8284e3cf91 gcc/testsuite/g++.dg/template/using28.C + 97d5663b600fcdde53f2a0e991d27e6e gcc/testsuite/g++.dg/template/using29.C 2131f7be9d523457118116995b368d74 gcc/testsuite/g++.dg/template/using3.C cd698ebd98a80f55920d17ae629b4d9b gcc/testsuite/g++.dg/template/using4.C 730dbbdbfc73d70df6d68467f8af3c39 gcc/testsuite/g++.dg/template/using5.C *************** cdc7b2399908eab653cc4fc892699046 gcc/te *** 13253,13258 **** --- 13280,13286 ---- dbf73018b39d3a8448dc1e40c8cde019 gcc/testsuite/g++.dg/tm/noexcept-3.C c40b5c5db70be9b852bc760e505141d6 gcc/testsuite/g++.dg/tm/noexcept-4.C b955b92a1697b3db056e68d4f5f76728 gcc/testsuite/g++.dg/tm/noexcept-5.C + d9679790119a16f5ef4bd06033d7cc37 gcc/testsuite/g++.dg/tm/noexcept-6.C ea59b8bd032828e4847843e35708c051 gcc/testsuite/g++.dg/tm/opt-1.C f57dc280ca8262993f1656af5de4d8e8 gcc/testsuite/g++.dg/tm/pr45940-2.C ab1fc8e002302cf3993d553b5114313e gcc/testsuite/g++.dg/tm/pr45940-3.C *************** ae3621e0c69148c1ad57e062ce6371ef gcc/te *** 13278,13283 **** --- 13306,13312 ---- d13425070f8f85ea54f79340635d9f50 gcc/testsuite/g++.dg/tm/pr51411.C d99f97f1267297cd10164be5b97e4908 gcc/testsuite/g++.dg/tm/pr51516.C f351d5c844cb8476077b6d37a74faeb7 gcc/testsuite/g++.dg/tm/pr51928.C + c9e5bbfe98ec7fbaa16a15a1f925bb18 gcc/testsuite/g++.dg/tm/pr60004.C d1d8828bb1842a1f639c2d50c70a554a gcc/testsuite/g++.dg/tm/template-1.C ec739e78eca3ade8edc23054b90bc5da gcc/testsuite/g++.dg/tm/template-2.C 6a0f16e627dbc1f416799c8d33213456 gcc/testsuite/g++.dg/tm/tm.exp *************** bc202d330bb84df550bb0522780984e0 gcc/te *** 13473,13478 **** --- 13502,13508 ---- d3a0f6dba851a15d2e1af60c71fda9fc gcc/testsuite/g++.dg/torture/pr55355.C 623e4675e1028b5a86de81a84ced39e5 gcc/testsuite/g++.dg/torture/pr56403.C f9035d95e3a4d25bf372dccc2aebea06 gcc/testsuite/g++.dg/torture/pr56768.C + ce5bd74dda85ecae08b1e79c21fc231c gcc/testsuite/g++.dg/torture/pr60609.C 9832be91178ec7c78651fc4d49380a93 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 *************** f11e1a6a7c64d32c0698605c42c159c1 gcc/te *** 13866,13871 **** --- 13896,13902 ---- 66a1e17af38ca1ea6cfca09567fa2508 gcc/testsuite/g++.dg/warn/Wunused-var-16.C 457e420b30b84147da9f1deedcd1c32b gcc/testsuite/g++.dg/warn/Wunused-var-19.C 6f250a1bec102f3ef4c4450109985c6c gcc/testsuite/g++.dg/warn/Wunused-var-2.C + 0c5df293cc7c104d4640b26ebae4ed15 gcc/testsuite/g++.dg/warn/Wunused-var-21.C dd0f2a1889a83658587b5f12c08c0c1c gcc/testsuite/g++.dg/warn/Wunused-var-3.C 62e5565091b4ee3f018515196f818bf3 gcc/testsuite/g++.dg/warn/Wunused-var-4.C d9191ea69f8ac18b1043d3d093b1f0d4 gcc/testsuite/g++.dg/warn/Wunused-var-5.C *************** c2e5c5b964de24123be7ac0ecbb5a245 gcc/te *** 18994,18999 **** --- 19025,19031 ---- 111426889f335935033317693f8dda59 gcc/testsuite/gcc.c-torture/execute/20120111-1.c f072eb423e4101e6249991a45a673bbc gcc/testsuite/gcc.c-torture/execute/20120207-1.c a1428f0ef932744d76bf477d42790520 gcc/testsuite/gcc.c-torture/execute/20120427-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 *************** eec29fac8b8f9d14f5a55ecd460d705e gcc/te *** 19909,19914 **** --- 19941,19959 ---- 566f6f02acd4a3583261f3bde23ef262 gcc/testsuite/gcc.c-torture/execute/pr54985.c 177c8ddae3f333df6d33696392bac93a gcc/testsuite/gcc.c-torture/execute/pr56051.c f593242559ab374bb74820c31c4df339 gcc/testsuite/gcc.c-torture/execute/pr56250.c + fbefdbfd58811f8f47d5a11d296a27db gcc/testsuite/gcc.c-torture/execute/pr56866.c + 0771ee8b89aebedb83998f5ffe49b94f gcc/testsuite/gcc.c-torture/execute/pr57568.c + 08fd7473bb8a1bd8223764857d3fe1f2 gcc/testsuite/gcc.c-torture/execute/pr57829.c + 7b314b618bd13790f4474067f69058e8 gcc/testsuite/gcc.c-torture/execute/pr58209.c + fde008949dd0c0020ce7e53727e1af7b gcc/testsuite/gcc.c-torture/execute/pr58277-1.c + f0a6494062a64d2fc689d8a4192959c2 gcc/testsuite/gcc.c-torture/execute/pr58277-2.c + a23a8e366e50c4fc95caccc34c4936a7 gcc/testsuite/gcc.c-torture/execute/pr58365.c + cab5da103e14455c850172740640b27c gcc/testsuite/gcc.c-torture/execute/pr58564.c + 107e31f1ece1534d49d334b0b347e9a2 gcc/testsuite/gcc.c-torture/execute/pr58831.c + a0805a93c878ba5b6bbad037b4565428 gcc/testsuite/gcc.c-torture/execute/pr59014-2.c + 368f6dd22bdbb68be24ec532b96befe5 gcc/testsuite/gcc.c-torture/execute/pr59014.c + 3739df7efd9db516415c65375f7c54a8 gcc/testsuite/gcc.c-torture/execute/pr59101.c + 00f4289039c3911c4b904297745cdc30 gcc/testsuite/gcc.c-torture/execute/pr60017.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 *************** fa18390f14716298dbf37d393e23050e gcc/te *** 20488,20495 **** 6d06eeedf9a3137aef0acb839c4b0c71 gcc/testsuite/gcc.dg/20050811-1.c b41f50b806a65fa9b1ea161f7dbf1ec0 gcc/testsuite/gcc.dg/20050811-2.c 0037187d0fb90575d3c3fbef86dde69a gcc/testsuite/gcc.dg/20050826-1.c ! e1fdeda4a350d6b903a481d48aa14167 gcc/testsuite/gcc.dg/20050922-1.c ! f2e3943d2c5612941b954a35780305be gcc/testsuite/gcc.dg/20050922-2.c c315befd785458b73975a2f1f5ce88cc gcc/testsuite/gcc.dg/20051201-1.c c502623cffcbe817706e0c34b3bc2591 gcc/testsuite/gcc.dg/20051207-1.c 5b92e5d1894a37ebf3ba4c9d5008cd98 gcc/testsuite/gcc.dg/20051207-2.c --- 20533,20540 ---- 6d06eeedf9a3137aef0acb839c4b0c71 gcc/testsuite/gcc.dg/20050811-1.c b41f50b806a65fa9b1ea161f7dbf1ec0 gcc/testsuite/gcc.dg/20050811-2.c 0037187d0fb90575d3c3fbef86dde69a gcc/testsuite/gcc.dg/20050826-1.c ! 1d0848bc5bd04ad4942f02553ed28dea gcc/testsuite/gcc.dg/20050922-1.c ! 74299bf0623bb9fa6059b8a26911d123 gcc/testsuite/gcc.dg/20050922-2.c c315befd785458b73975a2f1f5ce88cc gcc/testsuite/gcc.dg/20051201-1.c c502623cffcbe817706e0c34b3bc2591 gcc/testsuite/gcc.dg/20051207-1.c 5b92e5d1894a37ebf3ba4c9d5008cd98 gcc/testsuite/gcc.dg/20051207-2.c *************** d7602ad09d5eea3db942d4889dbbd78c gcc/te *** 20835,20840 **** --- 20880,20886 ---- 364d6b1e3828c0c3e1b976a33f971c60 gcc/testsuite/gcc.dg/atomic-store-3.c 5d8fa2f9c507818b1875a0d1fa8e1505 gcc/testsuite/gcc.dg/atomic-store-4.c fe8909975b6ede03308685e9f19dddaa gcc/testsuite/gcc.dg/atomic-store-5.c + ce7e52f61e6fb003d8ae0bf9772503eb gcc/testsuite/gcc.dg/atomic-store-6.c bfcf3d61cfaeb70ffaf79290c46dc732 gcc/testsuite/gcc.dg/attr-alias-1.c e1871215b9eef07b10dc8c1bf21c038a gcc/testsuite/gcc.dg/attr-alias-2.c 54406575266226337b45764460058754 gcc/testsuite/gcc.dg/attr-alias-3.c *************** fa7929b130df76e25cb947b7f8fdc470 gcc/te *** 20869,20875 **** db8374eda20551d6cd60bccb85b32576 gcc/testsuite/gcc.dg/attr-weak-hidden-1.c 9d67dfe9d24216b60cb82426bce86193 gcc/testsuite/gcc.dg/attr-weak-hidden-1a.c 9ae36569202bfebd5eef9afc2457f445 gcc/testsuite/gcc.dg/attr-weakref-1-darwin.c ! 5a1bc014e56cdf847e379e039a460cfb gcc/testsuite/gcc.dg/attr-weakref-1.c f348c9eb66b29ddb21e87abea341a730 gcc/testsuite/gcc.dg/attr-weakref-1a.c b32f0ffe033e8bca2840070b64fc6314 gcc/testsuite/gcc.dg/attr-weakref-1b.c 0e9f1da058d76aa4fbad24a3687c8454 gcc/testsuite/gcc.dg/attr-weakref-2.c --- 20915,20921 ---- db8374eda20551d6cd60bccb85b32576 gcc/testsuite/gcc.dg/attr-weak-hidden-1.c 9d67dfe9d24216b60cb82426bce86193 gcc/testsuite/gcc.dg/attr-weak-hidden-1a.c 9ae36569202bfebd5eef9afc2457f445 gcc/testsuite/gcc.dg/attr-weakref-1-darwin.c ! 9aec919680114d7b60fe55b77500ca33 gcc/testsuite/gcc.dg/attr-weakref-1.c f348c9eb66b29ddb21e87abea341a730 gcc/testsuite/gcc.dg/attr-weakref-1a.c b32f0ffe033e8bca2840070b64fc6314 gcc/testsuite/gcc.dg/attr-weakref-1b.c 0e9f1da058d76aa4fbad24a3687c8454 gcc/testsuite/gcc.dg/attr-weakref-2.c *************** d202c807b4080808baf99ab9f32b21a4 gcc/te *** 22848,22853 **** --- 22894,22900 ---- 57958d723d900c37a089d21688ee23af gcc/testsuite/gcc.dg/gomp/pr49640.c e586b829c695fbfbbe72ba2d88105ef9 gcc/testsuite/gcc.dg/gomp/pr51339.c 0ef23e0bf072b29475ef72be5859edf2 gcc/testsuite/gcc.dg/gomp/pr53992.c + febf12d386af32718f70a553818628b1 gcc/testsuite/gcc.dg/gomp/pr58809.c 32d1b4709fce01c7b0f596da5c040f2a gcc/testsuite/gcc.dg/gomp/preprocess-1.c 536359d59fc418a1570a6d8574a66ca1 gcc/testsuite/gcc.dg/gomp/sections-1.c c8fdbed05305ecb29a74eae041f265e9 gcc/testsuite/gcc.dg/gomp/sections-2.c *************** ace83ed64690f39a9f100edd9f71563b gcc/te *** 24426,24431 **** --- 24473,24479 ---- cff85b1acec8fdeb760ebc17f8564ad7 gcc/testsuite/gcc.dg/pr48156.c b8885daefdde052cb100b8a92cabf306 gcc/testsuite/gcc.dg/pr48159-1.c e5162e346fafc19231d192033f427c35 gcc/testsuite/gcc.dg/pr48159-2.c + 5545a1131d33d6608a9500beebb9b584 gcc/testsuite/gcc.dg/pr48189.c bb21f898f0beec4dc1c00e48aa0aa4bd gcc/testsuite/gcc.dg/pr48203.c aa11fd32068cf6cd0b3699b941f6cfae gcc/testsuite/gcc.dg/pr48213.c 8b3ace81abc1451e6912efd536ba907d gcc/testsuite/gcc.dg/pr48235.c *************** dc10733d2c1e49ac20fcb41b135da173 gcc/te *** 24560,24565 **** --- 24608,24619 ---- d49dc3b48eaa905ccfaa6054fcbc7232 gcc/testsuite/gcc.dg/pr56275.c 4918ad6d182ccdedb702520d01efe48a gcc/testsuite/gcc.dg/pr56350.c 16d26320b62db6026492824dcc7ebae2 gcc/testsuite/gcc.dg/pr56510.c + df4b816776f2c4e40c56112e07abeeca gcc/testsuite/gcc.dg/pr56890-1.c + 8fe731c15e241e6c041ba662739f3d48 gcc/testsuite/gcc.dg/pr56890-2.c + d62e4be4c8237006d589df7d27fb262c gcc/testsuite/gcc.dg/pr57980.c + 14cefbd9364068522b289c9670f3a54f gcc/testsuite/gcc.dg/pr59011.c + d2a3d623c9f2a62cb80e54e4f4935805 gcc/testsuite/gcc.dg/pr59351.c + f18635f965743e50249d91d9c5ad76ae gcc/testsuite/gcc.dg/pr59827.c 8b7d73da2d5d78000716492365a85d5a gcc/testsuite/gcc.dg/pr8715.c 3d08410b2dd57259aa63f0e1c64b376e gcc/testsuite/gcc.dg/pr8788-1.c be04382a35ebb1cfae1b2168f1693a94 gcc/testsuite/gcc.dg/pr8835-1.c *************** dad7ffa14d7aa7198ddad010ef0c9aed gcc/te *** 24763,24768 **** --- 24817,24823 ---- baed2654d0e7347b730e668bd39ab7b6 gcc/testsuite/gcc.dg/strlenopt-21.c aa590edac260b0bd01e8e79f26e0fdbe gcc/testsuite/gcc.dg/strlenopt-22.c ea0853a882391782586d6ebaf2023e9c gcc/testsuite/gcc.dg/strlenopt-22g.c + 183189a194965b2af592fc3078e905a8 gcc/testsuite/gcc.dg/strlenopt-23.c 2ec6adda34938b3838edbe80d5b9d106 gcc/testsuite/gcc.dg/strlenopt-2f.c f0cc43ad6c07d97ef8d861a90fbc0e27 gcc/testsuite/gcc.dg/strlenopt-3.c 443b7a7422c945928623c1e0535aa34c gcc/testsuite/gcc.dg/strlenopt-4.c *************** dfb471a397851bdb52f7df883b650b86 gcc/te *** 24969,24975 **** ee8bd79edc0ad4bc126961e887ebfba4 gcc/testsuite/gcc.dg/torture/builtin-integral-1.c d03ae4d66084fa9943ede3ebc5834bf4 gcc/testsuite/gcc.dg/torture/builtin-isinf_sign-1.c 83118765f0b187110c56a43bc55e625d gcc/testsuite/gcc.dg/torture/builtin-ldexp-1.c ! 461a4ab161e38bb1f1704f8db31515b8 gcc/testsuite/gcc.dg/torture/builtin-logb-1.c 5e784903b5dc50b9d24bee1bc3d1a59e gcc/testsuite/gcc.dg/torture/builtin-math-1.c 7eacf6e6a75c36f5d4152ec3486d918e gcc/testsuite/gcc.dg/torture/builtin-math-2.c fa7bdb79eb170773050b26a5ed2ae1ec gcc/testsuite/gcc.dg/torture/builtin-math-3.c --- 25024,25030 ---- ee8bd79edc0ad4bc126961e887ebfba4 gcc/testsuite/gcc.dg/torture/builtin-integral-1.c d03ae4d66084fa9943ede3ebc5834bf4 gcc/testsuite/gcc.dg/torture/builtin-isinf_sign-1.c 83118765f0b187110c56a43bc55e625d gcc/testsuite/gcc.dg/torture/builtin-ldexp-1.c ! d030b326d3119921d73a39de71fce346 gcc/testsuite/gcc.dg/torture/builtin-logb-1.c 5e784903b5dc50b9d24bee1bc3d1a59e gcc/testsuite/gcc.dg/torture/builtin-math-1.c 7eacf6e6a75c36f5d4152ec3486d918e gcc/testsuite/gcc.dg/torture/builtin-math-2.c fa7bdb79eb170773050b26a5ed2ae1ec gcc/testsuite/gcc.dg/torture/builtin-math-3.c *************** eb7c28f8fb377dba0060e3879194722d gcc/te *** 25295,25301 **** 7aa9adad88eac4e1c358c4c8ffb822bb gcc/testsuite/gcc.dg/torture/pr53663-3.c 58809eab4a9186297cc9e6413399f775 gcc/testsuite/gcc.dg/torture/pr53790.c d0ffb441d208abf83622aa00e25e03a4 gcc/testsuite/gcc.dg/torture/pr53908.c ! e16d41bbe2226ed42c7bc30cabc1ef28 gcc/testsuite/gcc.dg/torture/pr53922.c 92bc5e783706a1f7f1c0ea5fd220eee2 gcc/testsuite/gcc.dg/torture/pr54127.c d1882ac131c19beaff0b3e524c82794a gcc/testsuite/gcc.dg/torture/pr54436.c 38e865bcbf7f2de7dc73936309578b7e gcc/testsuite/gcc.dg/torture/pr54877.c --- 25350,25356 ---- 7aa9adad88eac4e1c358c4c8ffb822bb gcc/testsuite/gcc.dg/torture/pr53663-3.c 58809eab4a9186297cc9e6413399f775 gcc/testsuite/gcc.dg/torture/pr53790.c d0ffb441d208abf83622aa00e25e03a4 gcc/testsuite/gcc.dg/torture/pr53908.c ! 4d6dfa7dfb3bdc1aba354931b95c01fd gcc/testsuite/gcc.dg/torture/pr53922.c 92bc5e783706a1f7f1c0ea5fd220eee2 gcc/testsuite/gcc.dg/torture/pr54127.c d1882ac131c19beaff0b3e524c82794a gcc/testsuite/gcc.dg/torture/pr54436.c 38e865bcbf7f2de7dc73936309578b7e gcc/testsuite/gcc.dg/torture/pr54877.c *************** a85007c686083d3ac035d85e8cf38403 gcc/te *** 25311,25316 **** --- 25366,25387 ---- 3a5bd344f4404e8fcf09d3f6d83c65df gcc/testsuite/gcc.dg/torture/pr56443.c f6f4283ed4138dc84981c28ce60dbdf4 gcc/testsuite/gcc.dg/torture/pr56488.c ac0ffcc6314c4343db0c42d44dd92b0a gcc/testsuite/gcc.dg/torture/pr56501.c + 845769847030f070941db74e9782dce5 gcc/testsuite/gcc.dg/torture/pr57303.c + ee1a66e4d4e596c1ede2df5349d53f89 gcc/testsuite/gcc.dg/torture/pr57417.c + e1f76d1c7221d8b358de9e1afec3b0af gcc/testsuite/gcc.dg/torture/pr57517.c + a5c2783ab5ddf3529e7f6c7e2fd5069b gcc/testsuite/gcc.dg/torture/pr57521.c + 8534fdea4d74f4a82515872dd4723697 gcc/testsuite/gcc.dg/torture/pr57656.c + 5bfa303899e64bffcddb82847e6a434f gcc/testsuite/gcc.dg/torture/pr57864.c + c47ad0b2897e63ad3159940f9b7fa206 gcc/testsuite/gcc.dg/torture/pr58228.c + ea30d11931d516d6e92b14fe47202b4e gcc/testsuite/gcc.dg/torture/pr58246.c + 9bc5f90faa2efd8139900d4888af0d50 gcc/testsuite/gcc.dg/torture/pr58539.c + b808753df674764b99cc4e8be71634bb gcc/testsuite/gcc.dg/torture/pr58779.c + 156921543fc7ef104ab2878070475099 gcc/testsuite/gcc.dg/torture/pr58941.c + 186aa3e257ca36e1b48a1bf9e8e613b1 gcc/testsuite/gcc.dg/torture/pr59139.c + f160d85466fcb0f2f4699161fbb2a447 gcc/testsuite/gcc.dg/torture/pr59164.c + ac9ffdd6018cd2c07f686e78ec7737bf gcc/testsuite/gcc.dg/torture/pr59330.c + 80b325ade15bfd6d3d7dcef2e97c2467 gcc/testsuite/gcc.dg/torture/pr59715.c + 3e0dd582d51f218aa9dbe4841686c12a gcc/testsuite/gcc.dg/torture/pr60183.c c99c3745eca0ddc81822cc070070a4d3 gcc/testsuite/gcc.dg/torture/pr8081.c c0c42b9676c7d073a1a75c33203020b3 gcc/testsuite/gcc.dg/torture/pta-callused-1.c 163730ae6cbf4741fe6f9cc24a044505 gcc/testsuite/gcc.dg/torture/pta-escape-1.c *************** df6ffa399d00953ab55c706bd9bd14cf gcc/te *** 26748,26753 **** --- 26819,26825 ---- 4faeaa534080a740ecf2055f91f82fcd gcc/testsuite/gcc.dg/vect/pr52091.c 4946ec14e5484e685747485a1acdde7a gcc/testsuite/gcc.dg/vect/pr52298.c f96f88dacdce761d8a6470d4f1d06ba1 gcc/testsuite/gcc.dg/vect/pr52870.c + b107b5d9d8332504cce7d4f98d0296f7 gcc/testsuite/gcc.dg/vect/pr60382.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 *************** b52ff3dcde5cc31956f225bb4ebfa80b gcc/te *** 29599,29604 **** --- 29671,29677 ---- 522c729f0ead031dcc62b39370120c18 gcc/testsuite/gcc.target/arm/pr52375.c de6431d80bdeb202e278026554164376 gcc/testsuite/gcc.target/arm/pr52633.c d8c2b3438057bd37308e16b1228b0738 gcc/testsuite/gcc.target/arm/pr53187.c + dd6fcf2d02dd51f43eca4035c2609ea3 gcc/testsuite/gcc.target/arm/pr54300.C 144c19487bb0a02183a211f107af4c26 gcc/testsuite/gcc.target/arm/pr54892.c 3143560976572191d8bba6ba78a45aa6 gcc/testsuite/gcc.target/arm/register-variables.c 8ad9146d832ee4875783406d1578ca80 gcc/testsuite/gcc.target/arm/scd42-1.c *************** f1148ddb95a6320ace4c79914eafc0a3 gcc/te *** 29684,29689 **** --- 29757,29763 ---- 2028ceccf9f97e5e84e9adf6beb7597e gcc/testsuite/gcc.target/avr/exit-abort.h 2931177f4aeff49d531d5474224448f6 gcc/testsuite/gcc.target/avr/pr46779-1.c 572dc228e08385a1db0fcbab66dbaa4e gcc/testsuite/gcc.target/avr/pr46779-2.c + 9e82df166e8b559cb56d2c4f48cbaf30 gcc/testsuite/gcc.target/avr/pr60991.c 881cb1836ddfc3105e0aacacc481aa09 gcc/testsuite/gcc.target/avr/progmem-error-1.c 881cb1836ddfc3105e0aacacc481aa09 gcc/testsuite/gcc.target/avr/progmem-error-1.cpp 56de611fd29076ce9da389a853476819 gcc/testsuite/gcc.target/avr/progmem-warning-1.c *************** d164a56e058b7e170a57540428321c61 gcc/te *** 29709,29714 **** --- 29783,29789 ---- 8fb17af722ee890b7fa08b5610cdb80e gcc/testsuite/gcc.target/avr/torture/pr41885.c 70b849f57ecf42299230b99b7734dd2d gcc/testsuite/gcc.target/avr/torture/pr51374-1.c 640699ff4839c2a7798488c85177d381 gcc/testsuite/gcc.target/avr/torture/pr51782-1.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 ae6a82add6ca7317217a8a75a19e6f64 gcc/testsuite/gcc.target/avr/torture/trivial.c *************** d32777702ddc7ca220279d28c7df2ece gcc/te *** 30305,30312 **** 79a87f92b29bbb443e1a9ab03e15962a gcc/testsuite/gcc.target/i386/avx-vminss-1.c 19519d6ba32480bdca3e0162db489f45 gcc/testsuite/gcc.target/i386/avx-vmovapd-1.c a0bfa855273d324d1a55d6ba19336d86 gcc/testsuite/gcc.target/i386/avx-vmovapd-2.c ! 0da01abb4fa30bbdd814b067da054524 gcc/testsuite/gcc.target/i386/avx-vmovapd-256-1.c ! f38b1fb99649469904936600bd88c6c5 gcc/testsuite/gcc.target/i386/avx-vmovapd-256-2.c 50d6bda8ddd8a8b35c48909d7f056f2a gcc/testsuite/gcc.target/i386/avx-vmovaps-1.c bd220359275de86b2e6313646af5119b gcc/testsuite/gcc.target/i386/avx-vmovaps-2.c 692c97475a3285ac7a86e8bc89865d58 gcc/testsuite/gcc.target/i386/avx-vmovaps-256-1.c --- 30380,30387 ---- 79a87f92b29bbb443e1a9ab03e15962a gcc/testsuite/gcc.target/i386/avx-vminss-1.c 19519d6ba32480bdca3e0162db489f45 gcc/testsuite/gcc.target/i386/avx-vmovapd-1.c a0bfa855273d324d1a55d6ba19336d86 gcc/testsuite/gcc.target/i386/avx-vmovapd-2.c ! 6b0b34a0d5cd1e19841be42d7f36bec6 gcc/testsuite/gcc.target/i386/avx-vmovapd-256-1.c ! fcbe3a6c36ef11759c7fd7b249d99f4d gcc/testsuite/gcc.target/i386/avx-vmovapd-256-2.c 50d6bda8ddd8a8b35c48909d7f056f2a gcc/testsuite/gcc.target/i386/avx-vmovaps-1.c bd220359275de86b2e6313646af5119b gcc/testsuite/gcc.target/i386/avx-vmovaps-2.c 692c97475a3285ac7a86e8bc89865d58 gcc/testsuite/gcc.target/i386/avx-vmovaps-256-1.c *************** c5c0bf5c0799ea247b5c4285106ed0e7 gcc/te *** 31039,31044 **** --- 31114,31120 ---- 519fc1dbd9a690adb68f647190c125a9 gcc/testsuite/gcc.target/i386/bmi-bextr-1a.c 9caf25ffef27d09a188988bb7307fb43 gcc/testsuite/gcc.target/i386/bmi-bextr-2.c fed20c01e309fe356e55e3cc116c5e00 gcc/testsuite/gcc.target/i386/bmi-bextr-2a.c + ab7b0415123a9edc18231c77b77ec43d gcc/testsuite/gcc.target/i386/bmi-bextr-3.c 6a7249c775a4e50d86020cb0fd1b0c5e gcc/testsuite/gcc.target/i386/bmi-blsi-1.c bd48ce53571cdd48fe6e6784a994f7e7 gcc/testsuite/gcc.target/i386/bmi-blsi-1a.c 4e27601f29d1f40e91892c4a8371f943 gcc/testsuite/gcc.target/i386/bmi-blsi-2.c *************** be3fee1889ad65677a041f24f858b1cb gcc/te *** 31056,31061 **** --- 31132,31138 ---- bddf7c2fb14fca97f8ff604d99aa87eb gcc/testsuite/gcc.target/i386/bmi-tzcnt-1a.c f696e5f06827c19304c1291071f8675b gcc/testsuite/gcc.target/i386/bmi-tzcnt-2.c 0c9052e28cad40006a0099159bd98468 gcc/testsuite/gcc.target/i386/bmi-tzcnt-2a.c + 9950789cb130fff96f198223bbe0f518 gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c a2c0c7d391a581fc83d61c68b6bd649b gcc/testsuite/gcc.target/i386/bmi2-bzhi32-1.c 3ead3d8eb2eb9104a7e22ff065727719 gcc/testsuite/gcc.target/i386/bmi2-bzhi32-1a.c abb025375057fca2257ef280333b1bc3 gcc/testsuite/gcc.target/i386/bmi2-bzhi64-1.c *************** bb0703a0cfe126aeba12e7589d46db56 gcc/te *** 31387,31392 **** --- 31464,31470 ---- f3b09be597872ff56a816e7108198cc2 gcc/testsuite/gcc.target/i386/movti.c 8eb0888c65213c6a136f005c9b089501 gcc/testsuite/gcc.target/i386/ms_hook_prologue.c 0e6e9e397831921b702df0167f01b9d2 gcc/testsuite/gcc.target/i386/mul.c + a7f204e20c0df5dad30eac30c4a089ab gcc/testsuite/gcc.target/i386/nest-1.c c4736e46fe7effe8aa0f8d946367703d gcc/testsuite/gcc.target/i386/nrv1.c 50b8bcd150bf9d9e5338438449a8f71f gcc/testsuite/gcc.target/i386/opt-1.c d7a02dbcdc54a18a392397fb1ed438e2 gcc/testsuite/gcc.target/i386/opt-2.c *************** c5e38f94d34776548cce9b30a886d383 gcc/te *** 31470,31476 **** 5f4936c9d4c31140f8ee0ea81c6aa658 gcc/testsuite/gcc.target/i386/pr28946.c 11491d553f7be969ca12f9fc5f13efe4 gcc/testsuite/gcc.target/i386/pr29978.c 7dc3bb9ffdd974f461d453f9756e2cde gcc/testsuite/gcc.target/i386/pr30120.c ! c9d5a1ffb954d5b026f25ea9c5206d35 gcc/testsuite/gcc.target/i386/pr30315.c 2181ddbcd9ee21c4fa1cca3a92cc1f5b gcc/testsuite/gcc.target/i386/pr30413.c dcfc47d5c6f74562228eb399293c4bc5 gcc/testsuite/gcc.target/i386/pr30505.c cc7150857198a660bd08df2767715c77 gcc/testsuite/gcc.target/i386/pr30848.c --- 31548,31554 ---- 5f4936c9d4c31140f8ee0ea81c6aa658 gcc/testsuite/gcc.target/i386/pr28946.c 11491d553f7be969ca12f9fc5f13efe4 gcc/testsuite/gcc.target/i386/pr29978.c 7dc3bb9ffdd974f461d453f9756e2cde gcc/testsuite/gcc.target/i386/pr30120.c ! 63677bcdd8ebcf86323172bd91499d28 gcc/testsuite/gcc.target/i386/pr30315.c 2181ddbcd9ee21c4fa1cca3a92cc1f5b gcc/testsuite/gcc.target/i386/pr30413.c dcfc47d5c6f74562228eb399293c4bc5 gcc/testsuite/gcc.target/i386/pr30505.c cc7150857198a660bd08df2767715c77 gcc/testsuite/gcc.target/i386/pr30848.c *************** d0f7915dcdfe2b7a2b805eb41ed113f5 gcc/te *** 31628,31633 **** --- 31706,31712 ---- 85ab1ee2ae803c5b7571321d11d28ec8 gcc/testsuite/gcc.target/i386/pr44223.c 953d6c29b36cbfae20828d5d5d2d597f gcc/testsuite/gcc.target/i386/pr44481.c ac86248c1d4d16191ed207503529a795 gcc/testsuite/gcc.target/i386/pr44546.c + 9d51da0130edb98d8156466cec622241 gcc/testsuite/gcc.target/i386/pr44578.c 6d7ceecdc2d9ebbffbf64649e8e374d1 gcc/testsuite/gcc.target/i386/pr44942.c 7101df999e60d99adc155034111869ae gcc/testsuite/gcc.target/i386/pr44948-1a.c bacbac3595a13582651974e0dcedc58a gcc/testsuite/gcc.target/i386/pr44948-1b.c *************** f690a14b83beca2838adf0ade3c944fd gcc/te *** 31735,31747 **** 6fd545a2f653fba6935efa7e1eb56ff6 gcc/testsuite/gcc.target/i386/pr53416.c 2df437fec415935ae646c417072d95ab gcc/testsuite/gcc.target/i386/pr53759.c ea11986dea07c4befaa403beb0b828d8 gcc/testsuite/gcc.target/i386/pr54157.c c502c143bfe08e286784446e3a530233 gcc/testsuite/gcc.target/i386/pr54703.c da6bcaa8782040e1e3737a1f3fe08fc1 gcc/testsuite/gcc.target/i386/pr55142-1.c 3c206f6e58b309be96cb7b400c33d968 gcc/testsuite/gcc.target/i386/pr55142-2.c f54406bf0f978be7af83e49ae9b7755a gcc/testsuite/gcc.target/i386/pr55597.c 9fbcbb7746e6b5b2e4bd43669c5c7b8b gcc/testsuite/gcc.target/i386/pr56028.c 3111de20bdd1ba9007fc6ea6331f6b09 gcc/testsuite/gcc.target/i386/pr56560.c ! bbfa334a0bc4402cca428e4d748bf58a gcc/testsuite/gcc.target/i386/pr9771-1.c 267203167ae369a7a0f5d3c309117f35 gcc/testsuite/gcc.target/i386/quad-sse.c f5672f5c8f5bc6c8c4ec453cac0d4b2e gcc/testsuite/gcc.target/i386/rdfsbase-1.c fab39819b058898eb7f944381e2ef9b8 gcc/testsuite/gcc.target/i386/rdfsbase-2.c --- 31814,31834 ---- 6fd545a2f653fba6935efa7e1eb56ff6 gcc/testsuite/gcc.target/i386/pr53416.c 2df437fec415935ae646c417072d95ab gcc/testsuite/gcc.target/i386/pr53759.c ea11986dea07c4befaa403beb0b828d8 gcc/testsuite/gcc.target/i386/pr54157.c + 6d7b053bbb28bb9e1a4e8c1967a60835 gcc/testsuite/gcc.target/i386/pr54694.c c502c143bfe08e286784446e3a530233 gcc/testsuite/gcc.target/i386/pr54703.c da6bcaa8782040e1e3737a1f3fe08fc1 gcc/testsuite/gcc.target/i386/pr55142-1.c 3c206f6e58b309be96cb7b400c33d968 gcc/testsuite/gcc.target/i386/pr55142-2.c f54406bf0f978be7af83e49ae9b7755a gcc/testsuite/gcc.target/i386/pr55597.c 9fbcbb7746e6b5b2e4bd43669c5c7b8b gcc/testsuite/gcc.target/i386/pr56028.c 3111de20bdd1ba9007fc6ea6331f6b09 gcc/testsuite/gcc.target/i386/pr56560.c ! bd02b8a0614713f55733fac63a3e9c06 gcc/testsuite/gcc.target/i386/pr56866.c ! c2db58543174fc682e6c481e525df5d6 gcc/testsuite/gcc.target/i386/pr57098.c ! 1be3cad52880bd204c5668a12dc63bc1 gcc/testsuite/gcc.target/i386/pr57264.c ! 137ff6c74763639089440687727cf6c3 gcc/testsuite/gcc.target/i386/pr57655.c ! c01a05903164ed251d7228d2c57431ed gcc/testsuite/gcc.target/i386/pr57777.c ! 0c2d582f00adc7472660160cba8ba19b gcc/testsuite/gcc.target/i386/pr59839.c ! 90c5be2a3f80aff7d7204eaa36133881 gcc/testsuite/gcc.target/i386/pr60909.c ! 707512ec49461522d8afd5aff9320ac0 gcc/testsuite/gcc.target/i386/pr9771-1.c 267203167ae369a7a0f5d3c309117f35 gcc/testsuite/gcc.target/i386/quad-sse.c f5672f5c8f5bc6c8c4ec453cac0d4b2e gcc/testsuite/gcc.target/i386/rdfsbase-1.c fab39819b058898eb7f944381e2ef9b8 gcc/testsuite/gcc.target/i386/rdfsbase-2.c *************** de4aecf22a8108ad2498b7a0761ed800 gcc/te *** 31907,31914 **** aefc174798cfd957968a0915e9989648 gcc/testsuite/gcc.target/i386/sse2-minpd-1.c fc86a82738b060b9900f3f68205d60d9 gcc/testsuite/gcc.target/i386/sse2-minsd-1.c 87efe59d21cddd4ccc1f8caa2e5300d4 gcc/testsuite/gcc.target/i386/sse2-mmx.c ! 99700c0bbb9ac7119491dacab03a852e gcc/testsuite/gcc.target/i386/sse2-movapd-1.c ! 6b01c60d5cfc36bc3fb3861e7c65fafb gcc/testsuite/gcc.target/i386/sse2-movapd-2.c df256dc991af0bd27068e98f9914f7e9 gcc/testsuite/gcc.target/i386/sse2-movd-1.c f904689d8d0067d93105e377367edd5b gcc/testsuite/gcc.target/i386/sse2-movd-2.c a2458c99d49657dc72864ee69a151f31 gcc/testsuite/gcc.target/i386/sse2-movdqa-1.c --- 31994,32001 ---- aefc174798cfd957968a0915e9989648 gcc/testsuite/gcc.target/i386/sse2-minpd-1.c fc86a82738b060b9900f3f68205d60d9 gcc/testsuite/gcc.target/i386/sse2-minsd-1.c 87efe59d21cddd4ccc1f8caa2e5300d4 gcc/testsuite/gcc.target/i386/sse2-mmx.c ! 807c3a987219d4de388ae04700d49c59 gcc/testsuite/gcc.target/i386/sse2-movapd-1.c ! 355faabc7545ead3e8b6bee48a939af5 gcc/testsuite/gcc.target/i386/sse2-movapd-2.c df256dc991af0bd27068e98f9914f7e9 gcc/testsuite/gcc.target/i386/sse2-movd-1.c f904689d8d0067d93105e377367edd5b gcc/testsuite/gcc.target/i386/sse2-movd-2.c a2458c99d49657dc72864ee69a151f31 gcc/testsuite/gcc.target/i386/sse2-movdqa-1.c *************** a122c2ab185f51e5f4aeac16a47595e0 gcc/te *** 32322,32327 **** --- 32409,32415 ---- e45be5b5dd5f8be0a75495bb33be0404 gcc/testsuite/gcc.target/i386/xchg-1.c b6d6abcfbd5245e5750e48d0e9518639 gcc/testsuite/gcc.target/i386/xchg-2.c 5ee25ab13ecf1397089259762302768b gcc/testsuite/gcc.target/i386/xop-check.h + c37d749cc823fbe15fae562023e669f6 gcc/testsuite/gcc.target/i386/xop-frczX.c 1dfb32c9098a172a7ddbb001e0617c92 gcc/testsuite/gcc.target/i386/xop-haddX.c 90c1c8a0f655fa0eb23cd02904702233 gcc/testsuite/gcc.target/i386/xop-hadduX.c 561407eb95492b3c08b4d76921b9e89c gcc/testsuite/gcc.target/i386/xop-hsubX.c *************** b58c990aefcc9e7a51cc889c7dd3e52d gcc/te *** 33152,33157 **** --- 33240,33246 ---- 1290fe5ee5af7086f991fe3276aa9bea gcc/testsuite/gcc.target/powerpc/pr52457.c 68a9411e29691e7f8953208e3ad3329b gcc/testsuite/gcc.target/powerpc/pr52775.c 1cfc823003a660fa613b860692646c73 gcc/testsuite/gcc.target/powerpc/pr53199.c + 39b7cb95be459b75bf996ea98e8ffc39 gcc/testsuite/gcc.target/powerpc/pr57150.c f484e2a76013a8abf2f1634d33554af5 gcc/testsuite/gcc.target/powerpc/recip-1.c 6f035f512a3f0d6917409f569174ccea gcc/testsuite/gcc.target/powerpc/recip-2.c 19c27f9d2a9c26ded91356055b0cd01f gcc/testsuite/gcc.target/powerpc/recip-3.c *************** bf385d7310a8dab90ee44f86832aa03b gcc/te *** 33167,33172 **** --- 33256,33262 ---- 9d573583f65f14f71c9c7e9e2b9a3264 gcc/testsuite/gcc.target/powerpc/rs6000-fpint.c afd35ba530c1198a75e9e1a79650add6 gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-1.c 7aacc521251d44cf2fa3a75a564c4270 gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-2.c + b21c33d525f0c97602d4a2348994de36 gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c ca289e747348d6313ec1cb1a375e05b9 gcc/testsuite/gcc.target/powerpc/rs6000-power2-1.c fa68157c9af4cdf7bc742c8c07af3289 gcc/testsuite/gcc.target/powerpc/rs6000-power2-2.c 89537cc7476c27c7c10b811da61def34 gcc/testsuite/gcc.target/powerpc/spe-small-data-1.c *************** aac1ff33c4c0d3b0ede4e1eb91b9b453 gcc/te *** 33250,33255 **** --- 33340,33346 ---- 3bcc1e34a46dbd55284efe4517337dbb gcc/testsuite/gcc.target/sh/pr49880-3.c 68cd3f52bf5a1f75d0979a0f41ca7816 gcc/testsuite/gcc.target/sh/pr49880-4.c 41d3d8dd5168ca6b65b2ccdda3982a01 gcc/testsuite/gcc.target/sh/pr49880-5.c + 918a31e179bcdcb5da1ea39bacfe2e35 gcc/testsuite/gcc.target/sh/pr57108.c 4e2e0d723045d4e05e55616734e675f5 gcc/testsuite/gcc.target/sh/rte-delay-slot.c dadf2783f39a6e7573222cafcc2dee03 gcc/testsuite/gcc.target/sh/sh-relax-vxworks.c e21f6ad0f71c5acbd58d0b5dc9016512 gcc/testsuite/gcc.target/sh/sh-relax.c *************** f1f9f0cb02d6f65f6defd4f55db09f8d gcc/te *** 34008,34013 **** --- 34099,34105 ---- 0dfb9655aa32f6379a0b1e9f324b60da gcc/testsuite/gfortran.dg/array_constructor_36.f90 45cf70388fb5515a0fcecfd6b4688303 gcc/testsuite/gfortran.dg/array_constructor_37.f90 6b96d70766eaf58b5853527d5eb75dce gcc/testsuite/gfortran.dg/array_constructor_4.f90 + 7ec93b8534c3ea84d16c3ccdd8d9a5d1 gcc/testsuite/gfortran.dg/array_constructor_41.f90 9918ac77cf760a3800e94da773f0a74b gcc/testsuite/gfortran.dg/array_constructor_5.f90 6dc05669b848d267b25c38806e59d51f gcc/testsuite/gfortran.dg/array_constructor_6.f90 0965c3437a2116ac32e573441184fdee gcc/testsuite/gfortran.dg/array_constructor_7.f90 *************** ef0448750b54bdfee0bf2b23c2eb77bf gcc/te *** 34064,34069 **** --- 34156,34162 ---- bab9a93e2fbce2377987fb7f67e82a7a gcc/testsuite/gfortran.dg/arrayio_10.f90 4d48a42bc964040c164c122d032b8664 gcc/testsuite/gfortran.dg/arrayio_11.f90 e101afd93c6605938c295b10be41823a gcc/testsuite/gfortran.dg/arrayio_12.f90 + 8eeabeddf3eeabedb9644e95525e98f3 gcc/testsuite/gfortran.dg/arrayio_13.f90 46396e4a37a64cec9c047113bad6eadc gcc/testsuite/gfortran.dg/arrayio_2.f90 464fdf5b0f515ce504fe0f8e2ee07c6b gcc/testsuite/gfortran.dg/arrayio_3.f90 4042242806976787cc2719282ff81591 gcc/testsuite/gfortran.dg/arrayio_4.f90 *************** f501ad9fe36a5716a92695db1f43f9de gcc/te *** 34092,34097 **** --- 34185,34192 ---- 7b6d0b3962d9507085b3721f47cfcc58 gcc/testsuite/gfortran.dg/assignment_3.f90 64c7b6ed6cf665b9011a517161696930 gcc/testsuite/gfortran.dg/associate_1.f03 75afdf677e5a36ffd8e2c2879e337776 gcc/testsuite/gfortran.dg/associate_10.f90 + 984ec0158ef522fe661e4163a5708f35 gcc/testsuite/gfortran.dg/associate_13.f90 + 7ad97bcf7457ca3c0309724df0caad5e gcc/testsuite/gfortran.dg/associate_14.f90 c066328da870ad9b313bf9491c5b72d6 gcc/testsuite/gfortran.dg/associate_2.f95 ada9a3758cef9c8c02a55f1139c4f13b gcc/testsuite/gfortran.dg/associate_3.f03 a1f5f0d8423367d45fe9382b407ce7e9 gcc/testsuite/gfortran.dg/associate_4.f08 *************** c286b196507e9ffee9aad5b53cf42fd7 gcc/te *** 34824,34829 **** --- 34919,34925 ---- 42b17b3f253062bf47e0ae1b669ef161 gcc/testsuite/gfortran.dg/default_initialization_4.f90 65fe7ec52340e1912cad4c6a808c2f37 gcc/testsuite/gfortran.dg/default_initialization_5.f90 f7e099d81831ba1513789eae564fc258 gcc/testsuite/gfortran.dg/default_initialization_6.f90 + 08911b04c850915fc3643836f57a0d11 gcc/testsuite/gfortran.dg/default_initialization_7.f90 bbef424c1a5a9f9e68f1fe7d83c65947 gcc/testsuite/gfortran.dg/default_numeric_type_1.f90 76039d665e1ef71cfe2721af0afa187b gcc/testsuite/gfortran.dg/deferred_type_param_1.f90 8c2b4ff96da50e855afb293e0f216c76 gcc/testsuite/gfortran.dg/deferred_type_param_2.f90 *************** b1b453f9748d762807a3ed0946f87ccc gcc/te *** 34899,34904 **** --- 34995,35001 ---- 14becf7c5ac1f3826b69f362e23e2804 gcc/testsuite/gfortran.dg/derived_constructor_comps_2.f90 a87c753acb594121c4ff34aed0b37234 gcc/testsuite/gfortran.dg/derived_constructor_comps_3.f90 4c9fd221f8c449b4ce8004984aea7749 gcc/testsuite/gfortran.dg/derived_constructor_comps_4.f90 + beea5da72f98be108939b606fa5f03b4 gcc/testsuite/gfortran.dg/derived_external_function_1.f90 86d335193c239bb9151aaf9532250c92 gcc/testsuite/gfortran.dg/derived_function_interface_1.f90 a466fd6c42d7959249200b6a5f8d0976 gcc/testsuite/gfortran.dg/derived_init_1.f90 bf73e6db93468251d9c745aa3421a903 gcc/testsuite/gfortran.dg/derived_init_2.f90 *************** abfaf4c564bbaf3c85104f7601877f3f gcc/te *** 34930,34935 **** --- 35027,35033 ---- b59a9e83027833130c5ee12a722d5ab6 gcc/testsuite/gfortran.dg/do_2.f90 ed7e75b80c8f21fa0411eda463bd259a gcc/testsuite/gfortran.dg/do_3.F90 adae2090c78550da71bc0d69ad7f2410 gcc/testsuite/gfortran.dg/do_4.f + 7b35dc27dd203d21fcdb06fb7f4c247d gcc/testsuite/gfortran.dg/do_5.f90 772ca6a2275433a18fdf36006544a355 gcc/testsuite/gfortran.dg/do_check_1.f90 18a2fbef89d7cf46f122e07d5fbef517 gcc/testsuite/gfortran.dg/do_check_2.f90 fdb990ec0ab32e124633d2dae596183b gcc/testsuite/gfortran.dg/do_check_3.f90 *************** e26c1f7f5f5bf58bc20b92b7f15df396 gcc/te *** 34948,34953 **** --- 35046,35052 ---- bee33f45b2081d3f23f2f3b508893078 gcc/testsuite/gfortran.dg/dollar_sym_2.f90 81c02ab79001889d92651612f04f4029 gcc/testsuite/gfortran.dg/dos_eol.f 47318dcb4acfe6f2932913c638511078 gcc/testsuite/gfortran.dg/dot_product_1.f03 + b18ea280a91df3b2aefc263a51f2897e gcc/testsuite/gfortran.dg/dot_product_2.f90 28c9ee70843b7ef41ef74327bc08fb12 gcc/testsuite/gfortran.dg/double_complex_1.f90 9ce87f920f9f5536194a351e33dbbeb6 gcc/testsuite/gfortran.dg/dshift_1.F90 187310d2d84779c767a852f19eacaaad gcc/testsuite/gfortran.dg/dshift_2.F90 *************** e95fff032a08a9fc9c4323c663de82f6 gcc/te *** 35011,35016 **** --- 35110,35116 ---- 09a12005831f85730627c01a6d1e9024 gcc/testsuite/gfortran.dg/elemental_subroutine_5.f90 2842f22fb2847ebbd9bfa8f583776d53 gcc/testsuite/gfortran.dg/elemental_subroutine_6.f90 ac19ee1e489c101e40d62d762c9465cc gcc/testsuite/gfortran.dg/elemental_subroutine_7.f90 + c468b3ffd72a4bd31e3ea0da9685d6e4 gcc/testsuite/gfortran.dg/elemental_subroutine_9.f90 2815fa1e198196c7978a92b4fd41db91 gcc/testsuite/gfortran.dg/empty_derived_type.f90 f63076ef26944496b1c43542ea168c73 gcc/testsuite/gfortran.dg/empty_format_1.f90 f001da63348b64d8eb6a4bac1d826392 gcc/testsuite/gfortran.dg/empty_function_1.f90 *************** a2e2a31c6e703663db45fbc209856991 gcc/te *** 35118,35123 **** --- 35218,35224 ---- d05b8dcc281fe0d1eb1fb978c1ec31f9 gcc/testsuite/gfortran.dg/extends_12.f03 afb4bd5be618112309df8070e0c9e93e gcc/testsuite/gfortran.dg/extends_13.f03 e08369be0f2ed04f385f7a380065fa7c gcc/testsuite/gfortran.dg/extends_14.f03 + f6c55ba9fac9976bcf395b70165dadb9 gcc/testsuite/gfortran.dg/extends_15.f90 8570fae323c1f9dbc126b1c1180d41a5 gcc/testsuite/gfortran.dg/extends_2.f03 318fdcfb238eaeabe5395ef49b606deb gcc/testsuite/gfortran.dg/extends_3.f03 e1c7ee2d54fa64e2d2c29ac92d3bded6 gcc/testsuite/gfortran.dg/extends_4.f03 *************** d216b76ed81c95ec2cbca83beb2a093d gcc/te *** 35196,35201 **** --- 35297,35303 ---- 5f37b68a67573ed5b3b954e3a730f7aa gcc/testsuite/gfortran.dg/fmt_g0_4.f08 0b72a70e14402c124750e107566af599 gcc/testsuite/gfortran.dg/fmt_g0_5.f08 4cc20d4be04c2046885aac22f0d2cd9c gcc/testsuite/gfortran.dg/fmt_g0_6.f08 + 86b4ecfeb8e8ca81eb695a0802f8087f gcc/testsuite/gfortran.dg/fmt_g_1.f90 1614a240091165ed607a20fdcc4af923 gcc/testsuite/gfortran.dg/fmt_huge.f90 ba8b04701489c6c9dd6281e160362171 gcc/testsuite/gfortran.dg/fmt_int_sign.f90 758a188cd6ce71e5740bef72cb68b26b gcc/testsuite/gfortran.dg/fmt_l.f90 *************** e6c37a9def09433a6a2f8bc1d9220133 gcc/te *** 35711,35716 **** --- 35813,35819 ---- 9f3ccb4943f5f4737bc99acb427e11b0 gcc/testsuite/gfortran.dg/ibset_1.f90 e75d952c59fd79d136d9f20ac5f9d493 gcc/testsuite/gfortran.dg/ichar_1.f90 9f00cdde2669030be42ca86f95884598 gcc/testsuite/gfortran.dg/ichar_2.f90 + b614ce421f97fb4ab6fa10f1f1c47ab0 gcc/testsuite/gfortran.dg/ichar_3.f90 d827b941652feab002a335b27a4dd9f2 gcc/testsuite/gfortran.dg/imag_1.f 53e033ae6a34b14d41d6faa009863f30 gcc/testsuite/gfortran.dg/implicit_1.f90 b504108fd018b98d3250804462b0e252 gcc/testsuite/gfortran.dg/implicit_10.f90 *************** d552633c0063d920ce187de17dd489a2 gcc/te *** 35730,35735 **** --- 35833,35839 ---- a01b887d2f580c8b9f27c132d8de4b00 gcc/testsuite/gfortran.dg/implicit_pure_1.f90 a802a06b4238933f25378c3a8d3d2424 gcc/testsuite/gfortran.dg/implicit_pure_2.f90 0f9453d8638b4c0a374129226a999c57 gcc/testsuite/gfortran.dg/implicit_pure_3.f90 + ed9b46b80fba02ea5657d6ed2bf9073a gcc/testsuite/gfortran.dg/implicit_pure_4.f90 2348275de36b4052b5aaeb2ae73a6494 gcc/testsuite/gfortran.dg/implied_do_1.f90 42d282b943d10363c33bec69d3d4f846 gcc/testsuite/gfortran.dg/implied_shape_1.f08 f9528d7042bf84bf037d6e2b109272ec gcc/testsuite/gfortran.dg/implied_shape_2.f90 *************** c2e6604c8b6154e7ac2d4caaeb333e75 gcc/te *** 35766,35771 **** --- 35870,35876 ---- f0e645d1bc68bcf68e694c7e34810a59 gcc/testsuite/gfortran.dg/index_2.f90 279dd4fea235edaf4642b45c8b3db4b3 gcc/testsuite/gfortran.dg/init_flag_1.f90 1d1e21121359761815ffc4445de94a80 gcc/testsuite/gfortran.dg/init_flag_10.f90 + 42dcb15f62f37f4b66d4674597adee68 gcc/testsuite/gfortran.dg/init_flag_12.f90 f3a235d09bce4c144233db13cafc71c2 gcc/testsuite/gfortran.dg/init_flag_2.f90 d6ec5bc83de3b5682a4df257dae96146 gcc/testsuite/gfortran.dg/init_flag_3.f90 8e49fde0fcd93481c7abf8e8b248041a gcc/testsuite/gfortran.dg/init_flag_4.f90 *************** d57fac299b3332771a75171d9ddb0a97 gcc/te *** 36060,36065 **** --- 36165,36171 ---- fc437ac99c80ded40e13df8066e49a91 gcc/testsuite/gfortran.dg/linked_list_1.f90 6b10115fba6bad4e5a0a58ba881f0ab8 gcc/testsuite/gfortran.dg/list_read_1.f90 16b03bca05a6acc43f24be44e1f2ff05 gcc/testsuite/gfortran.dg/list_read_10.f90 + 20aebdb97e7740e2d38992e6981de05a gcc/testsuite/gfortran.dg/list_read_12.f90 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 *************** d65b9f8a0b3983b834c3856cc2ed5fa7 gcc/te *** 36325,36331 **** --- 36431,36441 ---- 57c379378f1c1751d823354af2ad3344 gcc/testsuite/gfortran.dg/namelist_73.f90 0f226e1334636bb1d113dca9fe6b029b gcc/testsuite/gfortran.dg/namelist_74.f90 3c3ad3169524c54687ffec5e64ff3af3 gcc/testsuite/gfortran.dg/namelist_76.f90 + c911cdf0b838c9d0ab9f89a2c1a70c5e gcc/testsuite/gfortran.dg/namelist_77.f90 + 4418eab648edcdcd7b7d42d4644920c2 gcc/testsuite/gfortran.dg/namelist_78.f90 + e665391e41c97a4015c89b3d0a2470d1 gcc/testsuite/gfortran.dg/namelist_79.f90 95370517d71b6093cd718ee2cd671d97 gcc/testsuite/gfortran.dg/namelist_80.f90 + cf4a855736a5f39a3e98895e0a9876ce gcc/testsuite/gfortran.dg/namelist_81.f90 b8f12d194aa9b2cfb5214297f897456c gcc/testsuite/gfortran.dg/namelist_assumed_char.f90 73de646ecd69b0bf965fecc1ccd64052 gcc/testsuite/gfortran.dg/namelist_blockdata.f 069dbff7c2c727c922c2a492f0feb75e gcc/testsuite/gfortran.dg/namelist_char_only.f90 *************** cfa8928d4701fe4595e327a2ee3672b7 gcc/te *** 36775,36780 **** --- 36885,36891 ---- f144bd6be3dd3c5c75354bf8bb8c5b72 gcc/testsuite/gfortran.dg/proc_ptr_33.f90 9bb400d4d6634612f3f6d15cfb54882f gcc/testsuite/gfortran.dg/proc_ptr_34.f90 8109d84f58f630a5d29c8b76a38b145c gcc/testsuite/gfortran.dg/proc_ptr_4.f90 + b56e9f2b05e65e28487a8445ef02657c gcc/testsuite/gfortran.dg/proc_ptr_41.f90 8315cc72db332168e57edf018a4b8f1f gcc/testsuite/gfortran.dg/proc_ptr_5.f90 2e1358865c3ec02c3c45568f5eebb128 gcc/testsuite/gfortran.dg/proc_ptr_6.f90 3648c097522ae5858550c7d7776afd28 gcc/testsuite/gfortran.dg/proc_ptr_7.c *************** ba4309199b6de8e3f6569168576b672d gcc/te *** 36998,37004 **** 197f641fc30975e9b70c4fb1703af678 gcc/testsuite/gfortran.dg/rewind_1.f90 7c144f98f5c21dcc57bf74bea992d279 gcc/testsuite/gfortran.dg/round_1.f03 8c6826e188281f4ba61e0e09942cb319 gcc/testsuite/gfortran.dg/round_2.f03 ! 09cce7a88c61e4fac5d40791fed2afcf gcc/testsuite/gfortran.dg/round_3.f08 795c3a5486634878e59848252e62aa82 gcc/testsuite/gfortran.dg/rrspacing_1.f90 54535416585a8a8a084e4b2896243778 gcc/testsuite/gfortran.dg/runtime_warning_1.f90 90b332ab5e6358bb408f687d42b5da8b gcc/testsuite/gfortran.dg/same_name_1.f90 --- 37109,37115 ---- 197f641fc30975e9b70c4fb1703af678 gcc/testsuite/gfortran.dg/rewind_1.f90 7c144f98f5c21dcc57bf74bea992d279 gcc/testsuite/gfortran.dg/round_1.f03 8c6826e188281f4ba61e0e09942cb319 gcc/testsuite/gfortran.dg/round_2.f03 ! 1e6dca49810e611218d8671ef4acade6 gcc/testsuite/gfortran.dg/round_3.f08 795c3a5486634878e59848252e62aa82 gcc/testsuite/gfortran.dg/rrspacing_1.f90 54535416585a8a8a084e4b2896243778 gcc/testsuite/gfortran.dg/runtime_warning_1.f90 90b332ab5e6358bb408f687d42b5da8b gcc/testsuite/gfortran.dg/same_name_1.f90 *************** d6dcde25b7c608e43567523cf6faf56c gcc/te *** 37079,37084 **** --- 37190,37196 ---- eed94040461dc3f4fa1bba34b2b82dca gcc/testsuite/gfortran.dg/shape_5.f90 311fedd0eb4347d62531750c8df6e3cd gcc/testsuite/gfortran.dg/shape_6.f90 5fd1f1121c14d548618bcaa2c19b5200 gcc/testsuite/gfortran.dg/shape_7.f90 + 94da9e8d23575b4577fee9c086a66b54 gcc/testsuite/gfortran.dg/shape_8.f90 30fc9ad5840248ef596a1216e5c12bc9 gcc/testsuite/gfortran.dg/shift-alloc.f90 7b1184e923af066c99dfd04c9b054ebd gcc/testsuite/gfortran.dg/shift-kind.f90 bc8bd628ea9b26898618898ace33fc92 gcc/testsuite/gfortran.dg/shift-kind_2.f90 *************** bc8bd628ea9b26898618898ace33fc92 gcc/te *** 37094,37099 **** --- 37206,37213 ---- 4b76f06af801096fcdfad0f2cd948f55 gcc/testsuite/gfortran.dg/single_char_string.f90 a7a1df45b7a28cb48abc9616e9267c7b gcc/testsuite/gfortran.dg/size_dim.f90 76b6a643d27059d9c8114652d1d2ae9f gcc/testsuite/gfortran.dg/size_kind.f90 + 08d6cb0ff396bb8860543e96d72abf83 gcc/testsuite/gfortran.dg/size_kind_2.f90 + 06fc303bb9c257b08d6c089dc0b90562 gcc/testsuite/gfortran.dg/size_kind_3.f90 a7172fbfc13114b77e730c7f3dc8b2dc gcc/testsuite/gfortran.dg/size_optional_dim_1.f90 f3f0ffa916b31c3181088a86aea21a29 gcc/testsuite/gfortran.dg/sizeof.f90 451c2f5f75a37de871bc81e2516908e8 gcc/testsuite/gfortran.dg/sizeof_proc.f90 *************** eda033d11dfa20d82831e890722e7b13 gcc/te *** 37131,37136 **** --- 37245,37251 ---- 5bb6f5182d9384a0852023a67e8b00de gcc/testsuite/gfortran.dg/storage_size_1.f08 8a09c429b2f899cea2c3727d34502cbd gcc/testsuite/gfortran.dg/storage_size_2.f08 9f9a102c20bd7b1a65beb305a960abc4 gcc/testsuite/gfortran.dg/storage_size_3.f08 + 187ed98bc6c4ad9278e3bfc17380d52c gcc/testsuite/gfortran.dg/str_comp_optimize_1.f90 c493cc1dd6aabb50cb30ff4eace72dd8 gcc/testsuite/gfortran.dg/streamio_1.f90 c3098c4c77466c1349767e89676c5a9c gcc/testsuite/gfortran.dg/streamio_10.f90 5e203b3ef2b8d7a585bcb8a40951fcaf gcc/testsuite/gfortran.dg/streamio_11.f90 *************** fb83ab822c4cefcdb2e963eed9040135 gcc/te *** 37210,37215 **** --- 37325,37331 ---- 0d5a3d18a1eeb0de1ca65d86e1cd68f8 gcc/testsuite/gfortran.dg/transfer_check_1.f90 9a2953b8d7639d3d68a7693a2cb88846 gcc/testsuite/gfortran.dg/transfer_check_2.f90 b16324a7bb85ab60eb71418a0761e565 gcc/testsuite/gfortran.dg/transfer_check_3.f90 + 1374d10203871ed68c005e2af626fbeb gcc/testsuite/gfortran.dg/transfer_check_4.f90 76406e3436f42466e7735ed9f5762bd7 gcc/testsuite/gfortran.dg/transfer_class_1.f90 dc67674921059cc6c14a48ba9f6e8515 gcc/testsuite/gfortran.dg/transfer_hollerith_1.f90 9ceb6d0cbc45ccee3659aec7e17a8bcd gcc/testsuite/gfortran.dg/transfer_intrinsic_1.f90 *************** dc67674921059cc6c14a48ba9f6e8515 gcc/te *** 37217,37222 **** --- 37333,37339 ---- 0818fe12ccb412487e694ee7d759586f gcc/testsuite/gfortran.dg/transfer_intrinsic_3.f90 ea5b93d114291b99d509c890190b87e6 gcc/testsuite/gfortran.dg/transfer_intrinsic_4.f 1436414e1567857b5667b2b6403a5f18 gcc/testsuite/gfortran.dg/transfer_intrinsic_5.f90 + 2548b0050cad7d0bdc2410b87807d30a gcc/testsuite/gfortran.dg/transfer_intrinsic_6.f90 d68fb0123f87274c2d884716d42b47b9 gcc/testsuite/gfortran.dg/transfer_null_1.f90 fb06cac22180b4daf49f140f6a9ad4c3 gcc/testsuite/gfortran.dg/transfer_resolve_1.f90 099850a87aba56ec7cc45b0bd6ddec3c gcc/testsuite/gfortran.dg/transfer_simplify_1.f90 *************** f48ade368dab48e37af1b3ff9f5bfedf gcc/te *** 37303,37308 **** --- 37420,37426 ---- 88bd32cdcdc3f9265df6bf1ffc652ccf gcc/testsuite/gfortran.dg/typebound_operator_9.f03 15218c0cdf740ce2d1322afdbe850980 gcc/testsuite/gfortran.dg/typebound_override_1.f90 bdf81c8e63ab90346ddbe60258e54d78 gcc/testsuite/gfortran.dg/typebound_override_2.f90 + 86f54bff12342f95ba0b5682da57f82c gcc/testsuite/gfortran.dg/typebound_override_4.f90 959e451dd504a43a47925c658cbeb8e8 gcc/testsuite/gfortran.dg/typebound_proc_1.f08 b44c0fc5cf4ee5dc00ec5fe9be4ec05b gcc/testsuite/gfortran.dg/typebound_proc_10.f03 2c0f74c81ba326ae4f175ac76ed340a4 gcc/testsuite/gfortran.dg/typebound_proc_11.f03 *************** bddef06c6aab2f9e1bef6c82a9b36c78 gcc/te *** 37321,37326 **** --- 37439,37445 ---- 25692fc586e992ea19e44473d741a774 gcc/testsuite/gfortran.dg/typebound_proc_23.f90 ec2140837ddeb5eaf0c42d39fa921d3b gcc/testsuite/gfortran.dg/typebound_proc_24.f03 0e268a9d8f7817adac714e06911eb33c gcc/testsuite/gfortran.dg/typebound_proc_25.f90 + e8433212f32dbede40539b2ce43dca09 gcc/testsuite/gfortran.dg/typebound_proc_26.f90 7889b6115ecb6c8885ed347a5bafe852 gcc/testsuite/gfortran.dg/typebound_proc_3.f03 57861c9f6842b82217b6f3ac0791cb00 gcc/testsuite/gfortran.dg/typebound_proc_4.f03 e65fb101a3c04c15141be97807aa54fa gcc/testsuite/gfortran.dg/typebound_proc_5.f03 *************** a38aec42f7e0058d56277b2bdbf39923 gcc/te *** 37351,37356 **** --- 37470,37477 ---- 77425eab660cd99123828c97f2657ca9 gcc/testsuite/gfortran.dg/unpack_mask_1.f90 21ad1ac865ebfe7d633e040a09836574 gcc/testsuite/gfortran.dg/unpack_zerosize_1.f90 1662aa96ae80fd6c60807f9bcd74bae2 gcc/testsuite/gfortran.dg/unreferenced_use_assoc_1.f90 + 7b43b740c1827893f88c955a8b8544ac gcc/testsuite/gfortran.dg/unresolved_fixup_1.f90 + e129d02ece9c3131335abb4373cf1721 gcc/testsuite/gfortran.dg/unresolved_fixup_2.f90 e621ad25c780dbf70670daf995ff2786 gcc/testsuite/gfortran.dg/unused_artificial_dummies_1.f90 cee09fb6b5f45d51e8a742f1ffd33f78 gcc/testsuite/gfortran.dg/use_1.f90 abf2d93ab03b6b9be4f14e4a20b8a731 gcc/testsuite/gfortran.dg/use_10.f90 *************** ed3fe34c89b65f2d229816aeaaab6525 gcc/te *** 37534,37539 **** --- 37655,37661 ---- 44bae72b0d75677144f79e13875a55e1 gcc/testsuite/gfortran.dg/where_1.f90 e2dd8115622860575ce72139d603a847 gcc/testsuite/gfortran.dg/where_2.f90 3516e7a52673173d6551f02dca2c1f39 gcc/testsuite/gfortran.dg/where_3.f90 + 4179a357d57c03402f3b139d65faa997 gcc/testsuite/gfortran.dg/where_4.f90 355f71857e4d70eec2b706ae1ab82a95 gcc/testsuite/gfortran.dg/where_nested_1.f90 b1e7c6cf76cd85979d64569b92754d9c gcc/testsuite/gfortran.dg/where_operator_assign_1.f90 4f7a04beb519b7956af37566cdfe5133 gcc/testsuite/gfortran.dg/where_operator_assign_2.f90 *************** d8d04dd88f8e8ffbaa7fbdb631f898a0 gcc/te *** 37700,37705 **** --- 37822,37828 ---- cced6ef67c045f87b6961bdd6fa259a5 gcc/testsuite/gfortran.fortran-torture/compile/pr45634.f90 698812d3b6f7a7395ca3e67775177475 gcc/testsuite/gfortran.fortran-torture/compile/pr45738.f90 6eccce962f547a39c2081378826e5943 gcc/testsuite/gfortran.fortran-torture/compile/pr49721-1.f + 57501cf80740e5c44e0bb4e94dd1bab0 gcc/testsuite/gfortran.fortran-torture/compile/pr57517.f90 7602f8cc2d0ebd2bf0bb974069a764e0 gcc/testsuite/gfortran.fortran-torture/compile/shape_reshape.f90 d5ee9d72b3b02f47b393934ca0c89627 gcc/testsuite/gfortran.fortran-torture/compile/stoppause.f90 0be215e4a53f9370c44eaa153bf1ed6e gcc/testsuite/gfortran.fortran-torture/compile/strparm_1.f90 *************** d7604b4d2f401c17008d23ef48c7da56 gcc/te *** 38001,38007 **** 32af85ba2b22e3a45be1db299d0fc3a0 gcc/testsuite/gnat.dg/aggr9_pkg.ads 35031b3b1cfbf9db80dbdb131ad67e3e gcc/testsuite/gnat.dg/aliased1.adb fc20c665ce493e3af920ca3b8b338e2e gcc/testsuite/gnat.dg/aliased_prefix_accessibility.adb ! a7739809a555fb662a89827d82bc3233 gcc/testsuite/gnat.dg/aliasing1.adb a4902656656cf1933e27aa840c492aae gcc/testsuite/gnat.dg/aliasing1.ads 54f6aed3ad979289cd3a9b9fca61c9d7 gcc/testsuite/gnat.dg/aliasing2.adb fcc69d2d6784a35c97662eebdee16779 gcc/testsuite/gnat.dg/aliasing2.ads --- 38124,38130 ---- 32af85ba2b22e3a45be1db299d0fc3a0 gcc/testsuite/gnat.dg/aggr9_pkg.ads 35031b3b1cfbf9db80dbdb131ad67e3e gcc/testsuite/gnat.dg/aliased1.adb fc20c665ce493e3af920ca3b8b338e2e gcc/testsuite/gnat.dg/aliased_prefix_accessibility.adb ! 9e0da223f4688dd4c3482ce7c4390a98 gcc/testsuite/gnat.dg/aliasing1.adb a4902656656cf1933e27aa840c492aae gcc/testsuite/gnat.dg/aliasing1.ads 54f6aed3ad979289cd3a9b9fca61c9d7 gcc/testsuite/gnat.dg/aliasing2.adb fcc69d2d6784a35c97662eebdee16779 gcc/testsuite/gnat.dg/aliasing2.ads *************** a166962c38d6c017c1d775431b13680f gcc/te *** 38346,38351 **** --- 38469,38475 ---- f3890754644fddd9f8ca37a3bd1cc7ea gcc/testsuite/gnat.dg/in_out_parameter.adb a2da4cb0a5f42827fe6f0e4f56d14218 gcc/testsuite/gnat.dg/in_out_parameter2.adb ad89e1da831369fbad29c8ebf625be88 gcc/testsuite/gnat.dg/in_out_parameter3.adb + aac11d5ba43ac52a20324f46ef1e2185 gcc/testsuite/gnat.dg/in_out_parameter4.adb 928de3a42da5c250f7a1c2e1ce568abb gcc/testsuite/gnat.dg/include.adb 94a108b336603d0d2ef666ceaea862ce gcc/testsuite/gnat.dg/incomplete1.ads 27d2aa8cce9d8a8fca96e6713148db79 gcc/testsuite/gnat.dg/incomplete2.adb *************** af1b92e35220c474b35749f49c144c62 gcc/te *** 38400,38405 **** --- 38524,38532 ---- 5a32401b29cc09de3d114286a8b22223 gcc/testsuite/gnat.dg/loop_optimization10_pkg.ads ded99d82054248221c7a650f9f1c7727 gcc/testsuite/gnat.dg/loop_optimization11.adb a88d9a4231192df703b978b9340ff655 gcc/testsuite/gnat.dg/loop_optimization11_pkg.ads + 118360462b3fb60c35509947b10c1095 gcc/testsuite/gnat.dg/loop_optimization16.adb + 7e48f98b410bc84da4e2783deb3f19bf gcc/testsuite/gnat.dg/loop_optimization16_pkg.adb + 5b1702dd3857556efb2c3278e4b70357 gcc/testsuite/gnat.dg/loop_optimization16_pkg.ads f541e6bfbb5ebc32c8c88b9475f024d2 gcc/testsuite/gnat.dg/loop_optimization2.adb c127785f315390b699c7fa039c495c81 gcc/testsuite/gnat.dg/loop_optimization2.ads 5e481abfdb92dddf7569d6c4d76c865f gcc/testsuite/gnat.dg/loop_optimization3.adb *************** e5b4a3246c128a0f6e5b5b2bee28fec6 gcc/te *** 38559,38565 **** --- 38686,38696 ---- f5a7a2892a18bb3555cdd8dfcaac8feb gcc/testsuite/gnat.dg/opt25_pkg2.adb 44443bdff16278b913a0f3afbc217db6 gcc/testsuite/gnat.dg/opt25_pkg2.ads 95f3d67f9d9254303835cc8a3088a0bf gcc/testsuite/gnat.dg/opt26.adb + 777b73757e1b7106d78209dab2f1e669 gcc/testsuite/gnat.dg/opt28.adb + f34c1ccc4215e16c24735299c32e5af3 gcc/testsuite/gnat.dg/opt28.ads + 58c81b3fda681cd5320a6f0ff30bc291 gcc/testsuite/gnat.dg/opt28_pkg.ads 98384ef07686507b4ed94c26f6a58813 gcc/testsuite/gnat.dg/opt3.adb + 20ad547be814ce4a0fc7d07e373934bf gcc/testsuite/gnat.dg/opt32.adb 65e20f998d483941d92a34b07b482d10 gcc/testsuite/gnat.dg/opt3_pkg.ads e98c04ac385dbd0581c1f5fa108caf6b gcc/testsuite/gnat.dg/opt4.adb 3d44b5cac38d62a85266069665682f5d gcc/testsuite/gnat.dg/opt5.adb *************** e79713b5757a3f8a05926964d5c26b04 gcc/te *** 38771,38776 **** --- 38902,38908 ---- 9ee91f98fa091f6a23c52ae740005659 gcc/testsuite/gnat.dg/specs/import_abstract.ads 18b43ed50b94e487d6c6f0f068e0849e gcc/testsuite/gnat.dg/specs/integer_value.ads bb0e77998b46620c791eef69edc120e4 gcc/testsuite/gnat.dg/specs/interface5.ads + 2964ca5392547150aa2109dc092cc2e2 gcc/testsuite/gnat.dg/specs/last_bit.ads 843de13b4d5cc30db54743bb74dedbf4 gcc/testsuite/gnat.dg/specs/limited1.ads f39191c911e45b0267f86993c00f95e3 gcc/testsuite/gnat.dg/specs/linker_section.ads dd066b85e801f4e3550fdee77334f998 gcc/testsuite/gnat.dg/specs/loop_optimization1.ads *************** ac0b35dcfcf72480c040349b2b8a874b gcc/te *** 39903,39909 **** f6a135d669303e10360f4a9e17664aa7 gcc/testsuite/obj-c++.dg/cxx-class-1.mm eaca42112d9683b4af93483c642c5b3d gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm 2dd2f7dd6f655732fc606d8c85af825b gcc/testsuite/obj-c++.dg/cxx-ivars-2.mm ! 0e74fdedad66d719f97674a41630017d gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm 0f4f03268c6b5629c2c23fe7fbc06966 gcc/testsuite/obj-c++.dg/cxx-scope-1.mm 74ea4974ad0f897a229d4bd99f47da95 gcc/testsuite/obj-c++.dg/cxx-scope-2.mm 4d63d224c8c642188a58882a0609e394 gcc/testsuite/obj-c++.dg/defs.mm --- 40035,40041 ---- f6a135d669303e10360f4a9e17664aa7 gcc/testsuite/obj-c++.dg/cxx-class-1.mm eaca42112d9683b4af93483c642c5b3d gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm 2dd2f7dd6f655732fc606d8c85af825b gcc/testsuite/obj-c++.dg/cxx-ivars-2.mm ! cca9a4ce8eba1acccfd6ad6cb92b40e7 gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm 0f4f03268c6b5629c2c23fe7fbc06966 gcc/testsuite/obj-c++.dg/cxx-scope-1.mm 74ea4974ad0f897a229d4bd99f47da95 gcc/testsuite/obj-c++.dg/cxx-scope-2.mm 4d63d224c8c642188a58882a0609e394 gcc/testsuite/obj-c++.dg/defs.mm *************** eebe88b06210a5c16aed941a9bd8eb5e gcc/te *** 39975,39981 **** e5590a2a3f8b22c8f340429d19038365 gcc/testsuite/obj-c++.dg/method-1.mm 19f8317903ba8bee4bf9fa945f98478d gcc/testsuite/obj-c++.dg/method-10.mm 6eecfde212363a6364af0934a93626ab gcc/testsuite/obj-c++.dg/method-11.mm ! 74240fb8891f61b92b8b5fbfe4b60c59 gcc/testsuite/obj-c++.dg/method-12.mm 5db486c8dedadbd2dec6ab6ab50e4760 gcc/testsuite/obj-c++.dg/method-13.mm 172164daa5b2292983d23e0e5d5a94eb gcc/testsuite/obj-c++.dg/method-14.mm 4e53ceac34f8c331fb19afd677abd05d gcc/testsuite/obj-c++.dg/method-15.mm --- 40107,40113 ---- e5590a2a3f8b22c8f340429d19038365 gcc/testsuite/obj-c++.dg/method-1.mm 19f8317903ba8bee4bf9fa945f98478d gcc/testsuite/obj-c++.dg/method-10.mm 6eecfde212363a6364af0934a93626ab gcc/testsuite/obj-c++.dg/method-11.mm ! 70bd4843da3e5fe528aabbba3c165225 gcc/testsuite/obj-c++.dg/method-12.mm 5db486c8dedadbd2dec6ab6ab50e4760 gcc/testsuite/obj-c++.dg/method-13.mm 172164daa5b2292983d23e0e5d5a94eb gcc/testsuite/obj-c++.dg/method-14.mm 4e53ceac34f8c331fb19afd677abd05d gcc/testsuite/obj-c++.dg/method-15.mm *************** e9acacfeddf9f5b3fcc7bd49ae2063e8 gcc/te *** 40113,40119 **** 8c2650d88d078d9a00f1f3ef1029cbef gcc/testsuite/obj-c++.dg/proto-lossage-4.mm 40b981421154ac96e17299bce5569949 gcc/testsuite/obj-c++.dg/proto-lossage-5.mm fd29bc4e26ebfbde2219d16bcd57ff44 gcc/testsuite/obj-c++.dg/proto-lossage-6.mm ! f1a8174a0d750e68abf26109030dadbb gcc/testsuite/obj-c++.dg/proto-lossage-7.mm 4cd57b67eb48bda4d17d7be6cbbf3651 gcc/testsuite/obj-c++.dg/proto-qual-1.mm cf4aa34add213bab910de4918a4bb01d gcc/testsuite/obj-c++.dg/protocol-forward-1.mm 30d24d440a6063d356f6a53af5141ba5 gcc/testsuite/obj-c++.dg/protocol-forward-2.mm --- 40245,40251 ---- 8c2650d88d078d9a00f1f3ef1029cbef gcc/testsuite/obj-c++.dg/proto-lossage-4.mm 40b981421154ac96e17299bce5569949 gcc/testsuite/obj-c++.dg/proto-lossage-5.mm fd29bc4e26ebfbde2219d16bcd57ff44 gcc/testsuite/obj-c++.dg/proto-lossage-6.mm ! 6975286133171cd693b6f659097de913 gcc/testsuite/obj-c++.dg/proto-lossage-7.mm 4cd57b67eb48bda4d17d7be6cbbf3651 gcc/testsuite/obj-c++.dg/proto-qual-1.mm cf4aa34add213bab910de4918a4bb01d gcc/testsuite/obj-c++.dg/protocol-forward-1.mm 30d24d440a6063d356f6a53af5141ba5 gcc/testsuite/obj-c++.dg/protocol-forward-2.mm *************** c7256230d1e3f8e9c93d3614935b69bc gcc/te *** 40132,40140 **** 9359d93417f401fddd8bdbb1bd3bae20 gcc/testsuite/obj-c++.dg/selector-warn-1.mm d2caa0c9e2ed2954ba9e33d87f726293 gcc/testsuite/obj-c++.dg/set-not-used-1.mm 48dbd5e4f3a80cc5653bb873d59cd3b4 gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm ! 1dc90b8d5a711a3056e6158e886891a3 gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm 21b76d31bad8ab2bce32ce3f5fceff78 gcc/testsuite/obj-c++.dg/strings/const-str-1.mm ! df65847cf73a8ffd54aeb213e0d72b63 gcc/testsuite/obj-c++.dg/strings/const-str-12.mm 71d1ca70f87be11f4325a5b06987bb9b gcc/testsuite/obj-c++.dg/strings/const-str-2.mm c2f326ebd57afc69cfee9d8f6b441323 gcc/testsuite/obj-c++.dg/strings/const-str-5.mm a9aabe53382bdf1de0612f8bcf7ef0eb gcc/testsuite/obj-c++.dg/strings/const-str-6.mm --- 40264,40272 ---- 9359d93417f401fddd8bdbb1bd3bae20 gcc/testsuite/obj-c++.dg/selector-warn-1.mm d2caa0c9e2ed2954ba9e33d87f726293 gcc/testsuite/obj-c++.dg/set-not-used-1.mm 48dbd5e4f3a80cc5653bb873d59cd3b4 gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm ! 944b45f8bae04534787888f64340973c gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm 21b76d31bad8ab2bce32ce3f5fceff78 gcc/testsuite/obj-c++.dg/strings/const-str-1.mm ! 88a204f313d69410fede9a1fadead584 gcc/testsuite/obj-c++.dg/strings/const-str-12.mm 71d1ca70f87be11f4325a5b06987bb9b gcc/testsuite/obj-c++.dg/strings/const-str-2.mm c2f326ebd57afc69cfee9d8f6b441323 gcc/testsuite/obj-c++.dg/strings/const-str-5.mm a9aabe53382bdf1de0612f8bcf7ef0eb gcc/testsuite/obj-c++.dg/strings/const-str-6.mm *************** bc9aa7712b120aebc943581aa15c9c31 gcc/te *** 40149,40155 **** 43c780cbecdb5565a2bda8b0795d5cf8 gcc/testsuite/obj-c++.dg/super-dealloc-2.mm 6d77d7810e6a1711e9c3e10911fdf7f5 gcc/testsuite/obj-c++.dg/sync-2.mm c1db611d2e6bb0f9226c7b773e41bec6 gcc/testsuite/obj-c++.dg/sync-3.mm ! 93fca1bd756ffd9eb1cb9a28fb5bc2af gcc/testsuite/obj-c++.dg/syntax-error-1.mm 76c552ffde73821d35ce37029bf52fb7 gcc/testsuite/obj-c++.dg/syntax-error-10.mm fcc3247af976d648bb2eb1348d0828a8 gcc/testsuite/obj-c++.dg/syntax-error-2.mm 6090398b844ba0e695f8af2946ade6c8 gcc/testsuite/obj-c++.dg/syntax-error-3.mm --- 40281,40287 ---- 43c780cbecdb5565a2bda8b0795d5cf8 gcc/testsuite/obj-c++.dg/super-dealloc-2.mm 6d77d7810e6a1711e9c3e10911fdf7f5 gcc/testsuite/obj-c++.dg/sync-2.mm c1db611d2e6bb0f9226c7b773e41bec6 gcc/testsuite/obj-c++.dg/sync-3.mm ! 748c7566fb8449a9c4cf464bde2a00c3 gcc/testsuite/obj-c++.dg/syntax-error-1.mm 76c552ffde73821d35ce37029bf52fb7 gcc/testsuite/obj-c++.dg/syntax-error-10.mm fcc3247af976d648bb2eb1348d0828a8 gcc/testsuite/obj-c++.dg/syntax-error-2.mm 6090398b844ba0e695f8af2946ade6c8 gcc/testsuite/obj-c++.dg/syntax-error-3.mm *************** d951d115e8add5e2e78e8e2e56aebc7f gcc/te *** 40184,40196 **** 1f7b520d7df4159bcf567388c99dd690 gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm e42495f1f3ad6ec8f920137751c3f8f7 gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-3.mm d2c0463e1e05d168d9d004c74cec0610 gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-4.mm ! 1b65b5e8c76ecd26a9db68d7f1675ece gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm ! c623717c970c4e8cdab658095dd2fd1d gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm 78b70f1aad125fecbbe161087e6dbc54 gcc/testsuite/obj-c++.dg/torture/strings/const-str-3.mm 3b2c597aefd84853b16f8cd8438ff907 gcc/testsuite/obj-c++.dg/torture/strings/const-str-4.mm 71862e2dfd32f32cc37bc2b6300c0cab gcc/testsuite/obj-c++.dg/torture/strings/const-str-7.mm 69c47926ef31db0bb79c5cd3cea4fa0b gcc/testsuite/obj-c++.dg/torture/strings/const-str-8.mm ! c8e0d7f2e9f51ed12a7fb3d2330da091 gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm 38bba22e495d1876db60c1ae29146fbe gcc/testsuite/obj-c++.dg/torture/strings/string1.mm 14d487c713c80e01914dfa8dd3af3826 gcc/testsuite/obj-c++.dg/torture/strings/strings.exp 6f6356dbcb53d22602416e8919a2b428 gcc/testsuite/obj-c++.dg/torture/tls/diag-1.mm --- 40316,40328 ---- 1f7b520d7df4159bcf567388c99dd690 gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm e42495f1f3ad6ec8f920137751c3f8f7 gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-3.mm d2c0463e1e05d168d9d004c74cec0610 gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-4.mm ! 3f540974a4f92e1b3375aa8bcbca7e8c gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm ! bc7815bb9a08dccb57fe4e22b74eb729 gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm 78b70f1aad125fecbbe161087e6dbc54 gcc/testsuite/obj-c++.dg/torture/strings/const-str-3.mm 3b2c597aefd84853b16f8cd8438ff907 gcc/testsuite/obj-c++.dg/torture/strings/const-str-4.mm 71862e2dfd32f32cc37bc2b6300c0cab gcc/testsuite/obj-c++.dg/torture/strings/const-str-7.mm 69c47926ef31db0bb79c5cd3cea4fa0b gcc/testsuite/obj-c++.dg/torture/strings/const-str-8.mm ! 019ec55674cd5d821fa8a7357a379cfc gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm 38bba22e495d1876db60c1ae29146fbe gcc/testsuite/obj-c++.dg/torture/strings/string1.mm 14d487c713c80e01914dfa8dd3af3826 gcc/testsuite/obj-c++.dg/torture/strings/strings.exp 6f6356dbcb53d22602416e8919a2b428 gcc/testsuite/obj-c++.dg/torture/tls/diag-1.mm *************** d41bdbf8fd720cd2fb1c999d1e580ba5 gcc/te *** 40309,40315 **** e8f3db69a8847b70c8bc969edd78dbb2 gcc/testsuite/objc.dg/encode-5.m 1296445554abff012ff56b38392805d1 gcc/testsuite/objc.dg/encode-6-next.m e53ead1c08985bdb0849e450194e9b99 gcc/testsuite/objc.dg/encode-6.m ! d42654d5f0004e95a94e24ba46f1b67a gcc/testsuite/objc.dg/encode-7-next-64bit.m ec0c203eb500e86f1c38d60a10728024 gcc/testsuite/objc.dg/encode-7-next.m 9ab782c949f890c6873d2669830a2e31 gcc/testsuite/objc.dg/encode-7.m 429d40f99aa6566cade774190e6fc983 gcc/testsuite/objc.dg/encode-8.m --- 40441,40447 ---- e8f3db69a8847b70c8bc969edd78dbb2 gcc/testsuite/objc.dg/encode-5.m 1296445554abff012ff56b38392805d1 gcc/testsuite/objc.dg/encode-6-next.m e53ead1c08985bdb0849e450194e9b99 gcc/testsuite/objc.dg/encode-6.m ! 6080da2594c39158f3f4b1344700903b gcc/testsuite/objc.dg/encode-7-next-64bit.m ec0c203eb500e86f1c38d60a10728024 gcc/testsuite/objc.dg/encode-7-next.m 9ab782c949f890c6873d2669830a2e31 gcc/testsuite/objc.dg/encode-7.m 429d40f99aa6566cade774190e6fc983 gcc/testsuite/objc.dg/encode-8.m *************** a10c57561f5023d1bc5813fb62b15e8f gcc/te *** 40370,40376 **** cf495a272fe911f953544354d7af49e2 gcc/testsuite/objc.dg/gnu-runtime-3.m 5af5796e26fc687bf55b3d9f3ed9238f gcc/testsuite/objc.dg/headers.m f1920dcb3d447ac1425163a2d1e6c0d2 gcc/testsuite/objc.dg/id-1.m ! 08c76a379738e6b0b0eb4537ca5d8885 gcc/testsuite/objc.dg/image-info.m f642d96cba4255caca5622eae71014c4 gcc/testsuite/objc.dg/incomplete-type-1.m 7965f2dab76d401f8398a30bcae85653 gcc/testsuite/objc.dg/invalid-method-1.m 172bebf6092a27228381556a110f96cb gcc/testsuite/objc.dg/invalid-method-2.m --- 40502,40508 ---- cf495a272fe911f953544354d7af49e2 gcc/testsuite/objc.dg/gnu-runtime-3.m 5af5796e26fc687bf55b3d9f3ed9238f gcc/testsuite/objc.dg/headers.m f1920dcb3d447ac1425163a2d1e6c0d2 gcc/testsuite/objc.dg/id-1.m ! c6f4519ae7cdde25ce603a24cab9f418 gcc/testsuite/objc.dg/image-info.m f642d96cba4255caca5622eae71014c4 gcc/testsuite/objc.dg/incomplete-type-1.m 7965f2dab76d401f8398a30bcae85653 gcc/testsuite/objc.dg/invalid-method-1.m 172bebf6092a27228381556a110f96cb gcc/testsuite/objc.dg/invalid-method-2.m *************** f00cd88add91ecc5ecc2a311e5080729 gcc/te *** 40408,40414 **** 9153d82237cc99af905bfcb58426980b gcc/testsuite/objc.dg/method-3.m 1857e378233cbdb0ef09315d0ee04fc9 gcc/testsuite/objc.dg/method-4.m 1ad4b2a31a2fabfd021245ffcfa25817 gcc/testsuite/objc.dg/method-5.m ! 87c6479c5012497b9060932a941a4377 gcc/testsuite/objc.dg/method-6.m cf1647763aa007475503deb5e1e09f59 gcc/testsuite/objc.dg/method-7.m 172164daa5b2292983d23e0e5d5a94eb gcc/testsuite/objc.dg/method-8.m 0dfce97c95b1493edb33d7a1bb51e35a gcc/testsuite/objc.dg/method-9.m --- 40540,40546 ---- 9153d82237cc99af905bfcb58426980b gcc/testsuite/objc.dg/method-3.m 1857e378233cbdb0ef09315d0ee04fc9 gcc/testsuite/objc.dg/method-4.m 1ad4b2a31a2fabfd021245ffcfa25817 gcc/testsuite/objc.dg/method-5.m ! 820d2072288e0c5450c20ecf67e0cee7 gcc/testsuite/objc.dg/method-6.m cf1647763aa007475503deb5e1e09f59 gcc/testsuite/objc.dg/method-7.m 172164daa5b2292983d23e0e5d5a94eb gcc/testsuite/objc.dg/method-8.m 0dfce97c95b1493edb33d7a1bb51e35a gcc/testsuite/objc.dg/method-9.m *************** ba9c85f123a269332f97289544f0c272 gcc/te *** 40429,40441 **** 1e68654789c238dc1eaf9e923fe49822 gcc/testsuite/objc.dg/naming-6.m ab539e16480243bccd13cb0ab5c05a26 gcc/testsuite/objc.dg/naming-7.m dab2c64c5d57ebdc0ca4b496b1db48a2 gcc/testsuite/objc.dg/next-runtime-1.m ! 7bd9c4e6799faaf21a263b5b57b1ba2c gcc/testsuite/objc.dg/no-extra-load.m 5aa0d8665f3838cd2d663fc71be4933d gcc/testsuite/objc.dg/objc-fast-4.m 6e3afeaf5baf2e68de83a0896e550b27 gcc/testsuite/objc.dg/objc-foreach-1.m d7940785b72ab02856b58bf8b4c3d710 gcc/testsuite/objc.dg/objc-foreach-2.m b0a4bc88be3fcbba334ad86617c9724e gcc/testsuite/objc.dg/objc-foreach-3.m ! 59d4961cff3bb938af2ce6bafd43529e gcc/testsuite/objc.dg/objc-foreach-4.m ! 7c23e37a96b638975904c678dfab3bd2 gcc/testsuite/objc.dg/objc-foreach-5.m f531c9a9d8f9e24e5d1b5e0d059e3392 gcc/testsuite/objc.dg/objc-gc-4.m e2b871afc37f1772b337d989244b97c6 gcc/testsuite/objc.dg/objc-nofilename-1.m 6eed5537eae24ed6634c3706c12f2114 gcc/testsuite/objc.dg/param-1.m --- 40561,40573 ---- 1e68654789c238dc1eaf9e923fe49822 gcc/testsuite/objc.dg/naming-6.m ab539e16480243bccd13cb0ab5c05a26 gcc/testsuite/objc.dg/naming-7.m dab2c64c5d57ebdc0ca4b496b1db48a2 gcc/testsuite/objc.dg/next-runtime-1.m ! 7bdacce2d25fc27ed41077ddc1cb6a7e gcc/testsuite/objc.dg/no-extra-load.m 5aa0d8665f3838cd2d663fc71be4933d gcc/testsuite/objc.dg/objc-fast-4.m 6e3afeaf5baf2e68de83a0896e550b27 gcc/testsuite/objc.dg/objc-foreach-1.m d7940785b72ab02856b58bf8b4c3d710 gcc/testsuite/objc.dg/objc-foreach-2.m b0a4bc88be3fcbba334ad86617c9724e gcc/testsuite/objc.dg/objc-foreach-3.m ! 12235d0aec67d729a9f040e360810e9c gcc/testsuite/objc.dg/objc-foreach-4.m ! 3b7013081c6c015d989ef0bde95be007 gcc/testsuite/objc.dg/objc-foreach-5.m f531c9a9d8f9e24e5d1b5e0d059e3392 gcc/testsuite/objc.dg/objc-gc-4.m e2b871afc37f1772b337d989244b97c6 gcc/testsuite/objc.dg/objc-nofilename-1.m 6eed5537eae24ed6634c3706c12f2114 gcc/testsuite/objc.dg/param-1.m *************** e2b871afc37f1772b337d989244b97c6 gcc/te *** 40443,40449 **** 71da4e106e38b3671b4f4ae8a237e55f gcc/testsuite/objc.dg/pch/interface-1.m 4cd499acb5d0b5df9162cb95f5a92620 gcc/testsuite/objc.dg/pch/pch.exp 4bde0ee2020d54cbaccb19eddeb1ff93 gcc/testsuite/objc.dg/pr18255.m ! 512f75f9c158730eb4d679896680d2e4 gcc/testsuite/objc.dg/pr23214.m e220e57343bac32bbc315171b87b1bba gcc/testsuite/objc.dg/pr23709.m 8480d22a4388c485c49d1c703c34f7f7 gcc/testsuite/objc.dg/pr24393.m 2e9567e68880e80a9fa203bba6e86d7f gcc/testsuite/objc.dg/pr28049.m --- 40575,40581 ---- 71da4e106e38b3671b4f4ae8a237e55f gcc/testsuite/objc.dg/pch/interface-1.m 4cd499acb5d0b5df9162cb95f5a92620 gcc/testsuite/objc.dg/pch/pch.exp 4bde0ee2020d54cbaccb19eddeb1ff93 gcc/testsuite/objc.dg/pr18255.m ! 92850ceb26e638315f91054c730aacc8 gcc/testsuite/objc.dg/pr23214.m e220e57343bac32bbc315171b87b1bba gcc/testsuite/objc.dg/pr23709.m 8480d22a4388c485c49d1c703c34f7f7 gcc/testsuite/objc.dg/pr24393.m 2e9567e68880e80a9fa203bba6e86d7f gcc/testsuite/objc.dg/pr28049.m *************** d165610dbbfad82f6af91eab9b66d300 gcc/te *** 40549,40555 **** f2414cf609997abfd57b517bafd39019 gcc/testsuite/objc.dg/proto-lossage-4.m 40b981421154ac96e17299bce5569949 gcc/testsuite/objc.dg/proto-lossage-5.m d26b84bd4fece35e5ae1ec9a7c6d4f15 gcc/testsuite/objc.dg/proto-lossage-6.m ! f1a8174a0d750e68abf26109030dadbb gcc/testsuite/objc.dg/proto-lossage-7.m 604faba6fd06b505d44d4837836124fa gcc/testsuite/objc.dg/proto-qual-1.m 4afd2785a0050e517e5c3818d2d5ea46 gcc/testsuite/objc.dg/protocol-forward-1.m 30d24d440a6063d356f6a53af5141ba5 gcc/testsuite/objc.dg/protocol-forward-2.m --- 40681,40687 ---- f2414cf609997abfd57b517bafd39019 gcc/testsuite/objc.dg/proto-lossage-4.m 40b981421154ac96e17299bce5569949 gcc/testsuite/objc.dg/proto-lossage-5.m d26b84bd4fece35e5ae1ec9a7c6d4f15 gcc/testsuite/objc.dg/proto-lossage-6.m ! 6975286133171cd693b6f659097de913 gcc/testsuite/objc.dg/proto-lossage-7.m 604faba6fd06b505d44d4837836124fa gcc/testsuite/objc.dg/proto-qual-1.m 4afd2785a0050e517e5c3818d2d5ea46 gcc/testsuite/objc.dg/protocol-forward-1.m 30d24d440a6063d356f6a53af5141ba5 gcc/testsuite/objc.dg/protocol-forward-2.m *************** c6ca79751de6eabb24a7372bc6ed107e gcc/te *** 40583,40592 **** 911d824641cc5460f0bb8428edcd155b gcc/testsuite/objc.dg/stret-1.m 581f8e860f7f1e705a6b0235823fa173 gcc/testsuite/objc.dg/stret-2.m 48dbd5e4f3a80cc5653bb873d59cd3b4 gcc/testsuite/objc.dg/strings/const-cfstring-2.m ! 1dc90b8d5a711a3056e6158e886891a3 gcc/testsuite/objc.dg/strings/const-cfstring-5.m 21b76d31bad8ab2bce32ce3f5fceff78 gcc/testsuite/objc.dg/strings/const-str-1.m 24ad853ec86d75ab828e6fc36156ce31 gcc/testsuite/objc.dg/strings/const-str-12.m ! df65847cf73a8ffd54aeb213e0d72b63 gcc/testsuite/objc.dg/strings/const-str-12b.m 11e6b8b6d3e9f318be035ef31f291e33 gcc/testsuite/objc.dg/strings/const-str-2.m 2ea7be2c8319bbf91f203eb9e01c5520 gcc/testsuite/objc.dg/strings/const-str-5.m 1b52a4aa3cd0d5062e03b48964ddcb0b gcc/testsuite/objc.dg/strings/const-str-6.m --- 40715,40724 ---- 911d824641cc5460f0bb8428edcd155b gcc/testsuite/objc.dg/stret-1.m 581f8e860f7f1e705a6b0235823fa173 gcc/testsuite/objc.dg/stret-2.m 48dbd5e4f3a80cc5653bb873d59cd3b4 gcc/testsuite/objc.dg/strings/const-cfstring-2.m ! 944b45f8bae04534787888f64340973c gcc/testsuite/objc.dg/strings/const-cfstring-5.m 21b76d31bad8ab2bce32ce3f5fceff78 gcc/testsuite/objc.dg/strings/const-str-1.m 24ad853ec86d75ab828e6fc36156ce31 gcc/testsuite/objc.dg/strings/const-str-12.m ! 88a204f313d69410fede9a1fadead584 gcc/testsuite/objc.dg/strings/const-str-12b.m 11e6b8b6d3e9f318be035ef31f291e33 gcc/testsuite/objc.dg/strings/const-str-2.m 2ea7be2c8319bbf91f203eb9e01c5520 gcc/testsuite/objc.dg/strings/const-str-5.m 1b52a4aa3cd0d5062e03b48964ddcb0b gcc/testsuite/objc.dg/strings/const-str-6.m *************** a1b0dd9c9fb200a066255256ef572225 gcc/te *** 40601,40607 **** c71fc5d6430c26f90154d279a0e4420e gcc/testsuite/objc.dg/super-class-4.m 5f7cf7eb1290cd0ac7cc810aca461fcb gcc/testsuite/objc.dg/super-dealloc-1.m 43c780cbecdb5565a2bda8b0795d5cf8 gcc/testsuite/objc.dg/super-dealloc-2.m ! d3e8e95d2965e9632b94976c344b8386 gcc/testsuite/objc.dg/symtab-1.m 2a986a873850ef622badcc1eb9048d4a gcc/testsuite/objc.dg/sync-1.m 6d77d7810e6a1711e9c3e10911fdf7f5 gcc/testsuite/objc.dg/sync-2.m a7c71308c349df3308ea10cfd5c4cfc2 gcc/testsuite/objc.dg/sync-3.m --- 40733,40739 ---- c71fc5d6430c26f90154d279a0e4420e gcc/testsuite/objc.dg/super-class-4.m 5f7cf7eb1290cd0ac7cc810aca461fcb gcc/testsuite/objc.dg/super-dealloc-1.m 43c780cbecdb5565a2bda8b0795d5cf8 gcc/testsuite/objc.dg/super-dealloc-2.m ! e806ea4ccd7ce77b9958611b5c803146 gcc/testsuite/objc.dg/symtab-1.m 2a986a873850ef622badcc1eb9048d4a gcc/testsuite/objc.dg/sync-1.m 6d77d7810e6a1711e9c3e10911fdf7f5 gcc/testsuite/objc.dg/sync-2.m a7c71308c349df3308ea10cfd5c4cfc2 gcc/testsuite/objc.dg/sync-3.m *************** be65f96db9eb7870d002772ea73b79da gcc/te *** 40619,40631 **** eb414f8a7531ed8a420a1a6ee919602f gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m e42495f1f3ad6ec8f920137751c3f8f7 gcc/testsuite/objc.dg/torture/strings/const-cfstring-3.m d2c0463e1e05d168d9d004c74cec0610 gcc/testsuite/objc.dg/torture/strings/const-cfstring-4.m ! 61e785b1dd58fe544047faf4bcf12ae5 gcc/testsuite/objc.dg/torture/strings/const-str-10.m ! 7b857c4eb80fbc2510098381770e3e2b gcc/testsuite/objc.dg/torture/strings/const-str-11.m 11f5cd130f549cf602c1bb2004fba283 gcc/testsuite/objc.dg/torture/strings/const-str-3.m 95175d9f569f2455a67d3a042a9b49e5 gcc/testsuite/objc.dg/torture/strings/const-str-4.m 38dc4c1d8bffabc69a852320760c79a3 gcc/testsuite/objc.dg/torture/strings/const-str-7.m 3e0b925a0c58f41da0dff25baae98066 gcc/testsuite/objc.dg/torture/strings/const-str-8.m ! 1563584c463f1f03e40f6137e805d4c3 gcc/testsuite/objc.dg/torture/strings/const-str-9.m a8a9f4264b042cb130bb43f35157c620 gcc/testsuite/objc.dg/torture/strings/string1.m f559fec747b34a07335a33efaef1d635 gcc/testsuite/objc.dg/torture/strings/string2.m 8d3378c509e4ec126b88298049f5b787 gcc/testsuite/objc.dg/torture/strings/string3.m --- 40751,40763 ---- eb414f8a7531ed8a420a1a6ee919602f gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m e42495f1f3ad6ec8f920137751c3f8f7 gcc/testsuite/objc.dg/torture/strings/const-cfstring-3.m d2c0463e1e05d168d9d004c74cec0610 gcc/testsuite/objc.dg/torture/strings/const-cfstring-4.m ! c00db2a33ee79619d0d18ec1bec143d2 gcc/testsuite/objc.dg/torture/strings/const-str-10.m ! 870aba766852dd810f3d097bf57286e0 gcc/testsuite/objc.dg/torture/strings/const-str-11.m 11f5cd130f549cf602c1bb2004fba283 gcc/testsuite/objc.dg/torture/strings/const-str-3.m 95175d9f569f2455a67d3a042a9b49e5 gcc/testsuite/objc.dg/torture/strings/const-str-4.m 38dc4c1d8bffabc69a852320760c79a3 gcc/testsuite/objc.dg/torture/strings/const-str-7.m 3e0b925a0c58f41da0dff25baae98066 gcc/testsuite/objc.dg/torture/strings/const-str-8.m ! c240b028053e462ac058c3f830ba0503 gcc/testsuite/objc.dg/torture/strings/const-str-9.m a8a9f4264b042cb130bb43f35157c620 gcc/testsuite/objc.dg/torture/strings/string1.m f559fec747b34a07335a33efaef1d635 gcc/testsuite/objc.dg/torture/strings/string2.m 8d3378c509e4ec126b88298049f5b787 gcc/testsuite/objc.dg/torture/strings/string3.m *************** d2d07c2ebcb90350a34d2a0a2a215530 gcc/te *** 40659,40667 **** 8c73a8da87197ef7c9627087e4a0abdc gcc/testsuite/objc.dg/va-meth-1.m ad588be086756c7bce570ed5a28030b0 gcc/testsuite/objc.dg/volatile-1.m 5b030d8bcb22dedd984e8d8dae17cfb6 gcc/testsuite/objc.dg/weak-1.m ! 80bc77ef95d07372714b27118e333076 gcc/testsuite/objc.dg/zero-link-1.m ! c28e3d0516d4a7c902150ee11a09aa9e gcc/testsuite/objc.dg/zero-link-2.m ! 9a37ef4fef5bcfa3c169baa6e9a266db gcc/testsuite/objc.dg/zero-link-3.m 0d71c48c831bf5882b80c4cd6ca9d9d8 gcc/testsuite/objc/compile/20011211-1.m 9b70591be7f91f15d0a53c89bdc94bf4 gcc/testsuite/objc/compile/20060406-1.m 14b501a57316e489de47619ffeb248fb gcc/testsuite/objc/compile/compile.exp --- 40791,40799 ---- 8c73a8da87197ef7c9627087e4a0abdc gcc/testsuite/objc.dg/va-meth-1.m ad588be086756c7bce570ed5a28030b0 gcc/testsuite/objc.dg/volatile-1.m 5b030d8bcb22dedd984e8d8dae17cfb6 gcc/testsuite/objc.dg/weak-1.m ! c6f92ed8e0845d4f49274791f11f8632 gcc/testsuite/objc.dg/zero-link-1.m ! 665cb537ffd18b494c34ac2bd13e3f52 gcc/testsuite/objc.dg/zero-link-2.m ! a86dde4579f2a917b3ba4488f0c82a58 gcc/testsuite/objc.dg/zero-link-3.m 0d71c48c831bf5882b80c4cd6ca9d9d8 gcc/testsuite/objc/compile/20011211-1.m 9b70591be7f91f15d0a53c89bdc94bf4 gcc/testsuite/objc/compile/20060406-1.m 14b501a57316e489de47619ffeb248fb gcc/testsuite/objc/compile/compile.exp *************** a57e521085412bbde60e78229ace4fd5 gcc/te *** 40774,40780 **** 54a6d2cba7abe35940ab031c9d8eb815 gcc/timevar.c ddfc8dbc3fdc96b2c360f95a1b568e77 gcc/timevar.def 43e3799388e60f928fb8d594a79403c4 gcc/timevar.h ! 3d85a720e77e6a99ef4ec4865bac6d42 gcc/tlink.c 8110305e47c9e8655e4c794c43c88172 gcc/toplev.c de685ac1ee5ba19d587d42762be0222e gcc/toplev.h 93364839572b99542c970d32ae4b367e gcc/tracer.c --- 40906,40912 ---- 54a6d2cba7abe35940ab031c9d8eb815 gcc/timevar.c ddfc8dbc3fdc96b2c360f95a1b568e77 gcc/timevar.def 43e3799388e60f928fb8d594a79403c4 gcc/timevar.h ! a7b9a92eb6e2531689c36062c44cb86c gcc/tlink.c 8110305e47c9e8655e4c794c43c88172 gcc/toplev.c de685ac1ee5ba19d587d42762be0222e gcc/toplev.h 93364839572b99542c970d32ae4b367e gcc/tracer.c *************** b5e27ca1db57d652abdc1094fcaee438 gcc/tr *** 40785,40807 **** ef4e4cc87f58062561f7dd077cf63c57 gcc/tree-browser.c dd88a1b79873f889a6b52130d6d947e4 gcc/tree-browser.def 7848ddace585540439f4e9656964239c gcc/tree-call-cdce.c ! 10be58bf8fe11baccb1521d8f3fe1a91 gcc/tree-cfg.c 449bb29903e4090b8afd0c1528cad449 gcc/tree-cfgcleanup.c eff69491b20a4148aa3bb4f4a49addd6 gcc/tree-chrec.c 8865ee1847d313f9f66ec82e5d26885c gcc/tree-chrec.h 309f3c1e670cf80396f0198d6e01f402 gcc/tree-complex.c b57a9656bbb3a539730a3bdb23d2da22 gcc/tree-data-ref.c a7818e5edbc9a20ce211d4dcfc6aec35 gcc/tree-data-ref.h ! 4379b6dc2e8a5fa12ae4726ce81cef7c gcc/tree-dfa.c 530ba9db13d7710f31417bb9d9eed966 gcc/tree-diagnostic.c 209d757a5fde51853942746146aa1e59 gcc/tree-diagnostic.h f44d5bc137dee40e1be2165a48971500 gcc/tree-dump.c f9aa72a463237a2774772830862d57ba gcc/tree-dump.h ! 6bdd8c04e22fb278d3fc9f783000f544 gcc/tree-eh.c c256cdb277e09c4486bac87f917430f8 gcc/tree-emutls.c 338093caa7524b3a95db967ce0c3a3e2 gcc/tree-flow-inline.h ! 4a97ac04528fdfc26a0da2f763264ce8 gcc/tree-flow.h ! fd9aef6c9b40bd0a991a5f81538def75 gcc/tree-if-conv.c ecb6f79c62c93a7b4c5154e3a3bc4db7 gcc/tree-inline.c 525f44d4d31a00387ff3a9160149f36a gcc/tree-inline.h c922b5f47cc3e8757ba5c7910adde71d gcc/tree-into-ssa.c --- 40917,40939 ---- ef4e4cc87f58062561f7dd077cf63c57 gcc/tree-browser.c dd88a1b79873f889a6b52130d6d947e4 gcc/tree-browser.def 7848ddace585540439f4e9656964239c gcc/tree-call-cdce.c ! 3889bb5593ec72368a806ac99ca8095f gcc/tree-cfg.c 449bb29903e4090b8afd0c1528cad449 gcc/tree-cfgcleanup.c eff69491b20a4148aa3bb4f4a49addd6 gcc/tree-chrec.c 8865ee1847d313f9f66ec82e5d26885c gcc/tree-chrec.h 309f3c1e670cf80396f0198d6e01f402 gcc/tree-complex.c b57a9656bbb3a539730a3bdb23d2da22 gcc/tree-data-ref.c a7818e5edbc9a20ce211d4dcfc6aec35 gcc/tree-data-ref.h ! 2d8b57f72cdcf67d6794f6d6d75b6e14 gcc/tree-dfa.c 530ba9db13d7710f31417bb9d9eed966 gcc/tree-diagnostic.c 209d757a5fde51853942746146aa1e59 gcc/tree-diagnostic.h f44d5bc137dee40e1be2165a48971500 gcc/tree-dump.c f9aa72a463237a2774772830862d57ba gcc/tree-dump.h ! 52581d1ddbc1c2ee00a66962042658fc gcc/tree-eh.c c256cdb277e09c4486bac87f917430f8 gcc/tree-emutls.c 338093caa7524b3a95db967ce0c3a3e2 gcc/tree-flow-inline.h ! 1c06a717ba741154bb4456432c1782b1 gcc/tree-flow.h ! 3e355b538a5e0e437a77c3e7665d8974 gcc/tree-if-conv.c ecb6f79c62c93a7b4c5154e3a3bc4db7 gcc/tree-inline.c 525f44d4d31a00387ff3a9160149f36a gcc/tree-inline.h c922b5f47cc3e8757ba5c7910adde71d gcc/tree-into-ssa.c *************** ff00adfab89525bf055d0ae5847ceefa gcc/tr *** 40819,40825 **** 31ac995fab7c6824461003b99b9b7d86 gcc/tree-parloops.c 81812c685738118dbd9764932dc9e5d6 gcc/tree-pass.h f7211f56015b355ab5722f0bcbf04527 gcc/tree-phinodes.c ! 95438e51a1d848544a4b83ef0b4e694b gcc/tree-predcom.c 2f56534dc971ac1ffc51d3fcb009f934 gcc/tree-pretty-print.c e21517fa9065ea5a475643d5686256e4 gcc/tree-pretty-print.h 7a490e5299fb69aeb945f01a5ec848be gcc/tree-profile.c --- 40951,40957 ---- 31ac995fab7c6824461003b99b9b7d86 gcc/tree-parloops.c 81812c685738118dbd9764932dc9e5d6 gcc/tree-pass.h f7211f56015b355ab5722f0bcbf04527 gcc/tree-phinodes.c ! fb477f07e0bee356bac4be6573d9bf37 gcc/tree-predcom.c 2f56534dc971ac1ffc51d3fcb009f934 gcc/tree-pretty-print.c e21517fa9065ea5a475643d5686256e4 gcc/tree-pretty-print.h 7a490e5299fb69aeb945f01a5ec848be gcc/tree-profile.c *************** d21d3d9892fbecd71d7f264150eb81f7 gcc/tr *** 40829,40839 **** 5820977b5a8b42eca25216387613cfc5 gcc/tree-ssa-address.c d05816cfc8f3543715042f255b8a72c6 gcc/tree-ssa-alias.c f57dbbcdfccf8c240f2045e780a7cbb1 gcc/tree-ssa-alias.h ! 59e42e7c43ff2112d614eb18f91b673c gcc/tree-ssa-ccp.c 4d9670cd5a270175f9b4b61cc38ddfb6 gcc/tree-ssa-coalesce.c 1c6fe2c360aeae7a5b3c9189214a9cac gcc/tree-ssa-copy.c 65bbecea3b3cc596a90031638343973d gcc/tree-ssa-copyrename.c ! 32d97184c0ab016377891e8ada924218 gcc/tree-ssa-dce.c 32f4bd94f4e0f9b28cabec8e8527bcef gcc/tree-ssa-dom.c 047b548e7cb6b43a7dbe59d02c7046ab gcc/tree-ssa-dse.c 18b5eced03b6df8b22e54ada669c1488 gcc/tree-ssa-forwprop.c --- 40961,40971 ---- 5820977b5a8b42eca25216387613cfc5 gcc/tree-ssa-address.c d05816cfc8f3543715042f255b8a72c6 gcc/tree-ssa-alias.c f57dbbcdfccf8c240f2045e780a7cbb1 gcc/tree-ssa-alias.h ! 1372b8ce0784b28c5da8f22616a30f1f gcc/tree-ssa-ccp.c 4d9670cd5a270175f9b4b61cc38ddfb6 gcc/tree-ssa-coalesce.c 1c6fe2c360aeae7a5b3c9189214a9cac gcc/tree-ssa-copy.c 65bbecea3b3cc596a90031638343973d gcc/tree-ssa-copyrename.c ! 54c474a48d060d6594ce0d6ae0503a73 gcc/tree-ssa-dce.c 32f4bd94f4e0f9b28cabec8e8527bcef gcc/tree-ssa-dom.c 047b548e7cb6b43a7dbe59d02c7046ab gcc/tree-ssa-dse.c 18b5eced03b6df8b22e54ada669c1488 gcc/tree-ssa-forwprop.c *************** a787f013c187a1993f1d7e1bbc394ca4 gcc/tr *** 40845,40851 **** c65fc9248540a68e77574d5f63377e71 gcc/tree-ssa-loop-ivcanon.c ad30d49b35d11fa1fccfd7a176bd4520 gcc/tree-ssa-loop-ivopts.c 098cb37d573831f3e5fe652de79b6ff8 gcc/tree-ssa-loop-manip.c ! 812eede7ec42c0f7349663d8db317587 gcc/tree-ssa-loop-niter.c cee6673399553a8f7bb66eddc421c015 gcc/tree-ssa-loop-prefetch.c 825cea012308837b0bd9c4f429f184d7 gcc/tree-ssa-loop-unswitch.c 676b2787aa7e4b4b27df7cc55205f508 gcc/tree-ssa-loop.c --- 40977,40983 ---- c65fc9248540a68e77574d5f63377e71 gcc/tree-ssa-loop-ivcanon.c ad30d49b35d11fa1fccfd7a176bd4520 gcc/tree-ssa-loop-ivopts.c 098cb37d573831f3e5fe652de79b6ff8 gcc/tree-ssa-loop-manip.c ! 461237c62a073d3898dc511861f72a77 gcc/tree-ssa-loop-niter.c cee6673399553a8f7bb66eddc421c015 gcc/tree-ssa-loop-prefetch.c 825cea012308837b0bd9c4f429f184d7 gcc/tree-ssa-loop-unswitch.c 676b2787aa7e4b4b27df7cc55205f508 gcc/tree-ssa-loop.c *************** cee6673399553a8f7bb66eddc421c015 gcc/tr *** 40853,40867 **** 0550583cced369e70f3305928c8733c2 gcc/tree-ssa-operands.c 21c01687846aaa8dd9b1e07475b897ac gcc/tree-ssa-operands.h fac1aeaa045d53c8ca88cf6b95bb13a5 gcc/tree-ssa-phiopt.c ! 964efb6961723e7e926483c80929b738 gcc/tree-ssa-phiprop.c ! 088ded86d8db257e3677d74a5e428d32 gcc/tree-ssa-pre.c 9e0e5a7278a4a55bf0727f781c900b17 gcc/tree-ssa-propagate.c f5c2824323e0f116bd6b7238024f47ca gcc/tree-ssa-propagate.h 741fac8a04ce2a5f250c8c74714d08e9 gcc/tree-ssa-reassoc.c ! 030d75e49f6971c48e78731682e433c4 gcc/tree-ssa-sccvn.c dd149fc53ce5db82a3497f6854631253 gcc/tree-ssa-sccvn.h ! 2122da801e6f3b876aba3f27337eeddd gcc/tree-ssa-sink.c ! 121245575604d1b10034dc58bab644a0 gcc/tree-ssa-strlen.c a5d3d486e04062a97eeaeb5a175f362e gcc/tree-ssa-structalias.c c612fcdd9673d5e8b3adf7b10eaf12fd gcc/tree-ssa-tail-merge.c fc2ef72126e1097cf44db86d2cd031ac gcc/tree-ssa-ter.c --- 40985,40999 ---- 0550583cced369e70f3305928c8733c2 gcc/tree-ssa-operands.c 21c01687846aaa8dd9b1e07475b897ac gcc/tree-ssa-operands.h fac1aeaa045d53c8ca88cf6b95bb13a5 gcc/tree-ssa-phiopt.c ! ef5d45feb16a3f4c0f5a3ddc12584ab5 gcc/tree-ssa-phiprop.c ! e532dad897f105d8e153dafd34b9b24d gcc/tree-ssa-pre.c 9e0e5a7278a4a55bf0727f781c900b17 gcc/tree-ssa-propagate.c f5c2824323e0f116bd6b7238024f47ca gcc/tree-ssa-propagate.h 741fac8a04ce2a5f250c8c74714d08e9 gcc/tree-ssa-reassoc.c ! d8d25220ea4d13d1ec7b6e4b1af6b9b2 gcc/tree-ssa-sccvn.c dd149fc53ce5db82a3497f6854631253 gcc/tree-ssa-sccvn.h ! 1bf6acba8fa6134c24ba588b579c523d gcc/tree-ssa-sink.c ! 247d72308fd28fa9cb25460adfaf9e69 gcc/tree-ssa-strlen.c a5d3d486e04062a97eeaeb5a175f362e gcc/tree-ssa-structalias.c c612fcdd9673d5e8b3adf7b10eaf12fd gcc/tree-ssa-tail-merge.c fc2ef72126e1097cf44db86d2cd031ac gcc/tree-ssa-ter.c *************** fc2ef72126e1097cf44db86d2cd031ac gcc/tr *** 40870,40894 **** 6b29ed6db92ee782efe073d71aea95cd gcc/tree-ssa-uncprop.c eb5905a0b57719892d5db7dc8901251c gcc/tree-ssa-uninit.c 9244eeadbbf6402388b950aa91c8fa10 gcc/tree-ssa.c ! bc61d12729c9e3537ea2645ebff9ec2e gcc/tree-ssanames.c 7544af5ab455970cb44e7a329c188fb1 gcc/tree-stdarg.c 9dc7ea806141e247f0061ebed82e5f57 gcc/tree-stdarg.h ! 892922d00bafd61da0ec10de06712365 gcc/tree-streamer-in.c 5eb1ba9047c5e89ea0ca515bf722e9ca gcc/tree-streamer-out.c d1ed2ffb36d5e7bdd4c3e4a38455d8ae gcc/tree-streamer.c 030a5c395cd6b585dcba689a06956ab5 gcc/tree-streamer.h 791af833b1c31b0e210d1e0499c9fa24 gcc/tree-switch-conversion.c ! 4023c7969a152f2f55d0efd29bfb91c6 gcc/tree-tailcall.c ! df183fcf3d7c6844ce69a953f18064ce gcc/tree-vect-data-refs.c 21a03b8a13b6f6559eaeda85017e94fb gcc/tree-vect-generic.c 88af55d8d3b34148be4a2a218f3855a9 gcc/tree-vect-loop-manip.c ! fa48d6ea9efafc1d61e2dde62611d177 gcc/tree-vect-loop.c 9fa2f300b7bc2a6d05e143621e1908db gcc/tree-vect-patterns.c 5dd86143dd7ec2ffa0e87692a7f0c451 gcc/tree-vect-slp.c ce3d8d70c1440f8baa41e0200e091fe0 gcc/tree-vect-stmts.c 4e670111b4f13ced146ced58d1f40774 gcc/tree-vectorizer.c 3977507e7158cf669883f0d974191f91 gcc/tree-vectorizer.h ! bbc3096293cceb7719558648aed7c551 gcc/tree-vrp.c 94521f650ef1437fbdca2d1f9a095f6a gcc/tree.c b616e359e9def01f3b38ca8d30f44415 gcc/tree.def 81cd421b07f33360f5b190b0fb7b526c gcc/tree.h --- 41002,41026 ---- 6b29ed6db92ee782efe073d71aea95cd gcc/tree-ssa-uncprop.c eb5905a0b57719892d5db7dc8901251c gcc/tree-ssa-uninit.c 9244eeadbbf6402388b950aa91c8fa10 gcc/tree-ssa.c ! a74151b7c62f6f3f0daf213747146e8f gcc/tree-ssanames.c 7544af5ab455970cb44e7a329c188fb1 gcc/tree-stdarg.c 9dc7ea806141e247f0061ebed82e5f57 gcc/tree-stdarg.h ! ccdcb64a72c86f224941c41392e8a5b7 gcc/tree-streamer-in.c 5eb1ba9047c5e89ea0ca515bf722e9ca gcc/tree-streamer-out.c d1ed2ffb36d5e7bdd4c3e4a38455d8ae gcc/tree-streamer.c 030a5c395cd6b585dcba689a06956ab5 gcc/tree-streamer.h 791af833b1c31b0e210d1e0499c9fa24 gcc/tree-switch-conversion.c ! 57574aa96f22f5579f12ea8db7e9998c gcc/tree-tailcall.c ! bc9a76840e23627dc4f83afc4b37fba5 gcc/tree-vect-data-refs.c 21a03b8a13b6f6559eaeda85017e94fb gcc/tree-vect-generic.c 88af55d8d3b34148be4a2a218f3855a9 gcc/tree-vect-loop-manip.c ! b7068db426adb30c4ba9572bf6927ad3 gcc/tree-vect-loop.c 9fa2f300b7bc2a6d05e143621e1908db gcc/tree-vect-patterns.c 5dd86143dd7ec2ffa0e87692a7f0c451 gcc/tree-vect-slp.c ce3d8d70c1440f8baa41e0200e091fe0 gcc/tree-vect-stmts.c 4e670111b4f13ced146ced58d1f40774 gcc/tree-vectorizer.c 3977507e7158cf669883f0d974191f91 gcc/tree-vectorizer.h ! a748deb3177e69b100fa00a3977c11db gcc/tree-vrp.c 94521f650ef1437fbdca2d1f9a095f6a gcc/tree.c b616e359e9def01f3b38ca8d30f44415 gcc/tree.def 81cd421b07f33360f5b190b0fb7b526c gcc/tree.h *************** c2de1cb759fa38dc50a8b54f23127437 gcc/we *** 40912,40924 **** e33f5fe4050a311c959ce9084a50c1fb gcc/xcoff.h c449f72b18bdb57edb68404ed0041e0f gcc/xcoffout.c 7cf371c2c977863af4254f2cfa6b86b3 gcc/xcoffout.h ! ceb42cd374e004e9bbab7f2a371ad12d gnattools/ChangeLog cee94c5f34069420d5b60536299278c5 gnattools/Makefile.in f883de34e13e5e07cd6f10b30a4f2e20 gnattools/configure b0d11555a361e877b3bc5b7e5de95cb6 gnattools/configure.ac 59530bdf33659b29e73d4adb9f9f6552 include/COPYING d32239bcb673463ab874e80d47fae504 include/COPYING3 ! 7a2377568d495cec5c046130fbe96e9e include/ChangeLog 4263432a72ff47ed8bf420208ee7eea5 include/ChangeLog-9103 c40ba6a2a63d615e632bdba97866cea5 include/ansidecl.h 5b2df72b3c122934ec1dce7f8ef4cf82 include/demangle.h --- 41044,41056 ---- e33f5fe4050a311c959ce9084a50c1fb gcc/xcoff.h c449f72b18bdb57edb68404ed0041e0f gcc/xcoffout.c 7cf371c2c977863af4254f2cfa6b86b3 gcc/xcoffout.h ! 051e9a758406e410741a3ac19e813e43 gnattools/ChangeLog cee94c5f34069420d5b60536299278c5 gnattools/Makefile.in f883de34e13e5e07cd6f10b30a4f2e20 gnattools/configure b0d11555a361e877b3bc5b7e5de95cb6 gnattools/configure.ac 59530bdf33659b29e73d4adb9f9f6552 include/COPYING d32239bcb673463ab874e80d47fae504 include/COPYING3 ! a323bdd15beb9e2cc6e88c6a48e06987 include/ChangeLog 4263432a72ff47ed8bf420208ee7eea5 include/ChangeLog-9103 c40ba6a2a63d615e632bdba97866cea5 include/ansidecl.h 5b2df72b3c122934ec1dce7f8ef4cf82 include/demangle.h *************** e34d525d7faceda0dd5cb3eae49c1548 includ *** 40948,40954 **** 0294cecbb1f66d640ccba3a5d862d05b include/xregex2.h f648a66ed08e079e26a24c4346a3ba03 include/xtensa-config.h 0afce91a3daa1fdc32ee36370c1129dd install-sh ! 7c61af928ce7ec172ce24903e6e2d31c intl/ChangeLog cad1d6fab2274517783de7433c0faa74 intl/Makefile.in 6ec998bb4716c744bf8185e607f69301 intl/README 76ca170a525d5b84d90f0478fe788931 intl/VERSION --- 41080,41086 ---- 0294cecbb1f66d640ccba3a5d862d05b include/xregex2.h f648a66ed08e079e26a24c4346a3ba03 include/xtensa-config.h 0afce91a3daa1fdc32ee36370c1129dd install-sh ! 25f0bc532d0e95045eef97e850de897c intl/ChangeLog cad1d6fab2274517783de7433c0faa74 intl/Makefile.in 6ec998bb4716c744bf8185e607f69301 intl/README 76ca170a525d5b84d90f0478fe788931 intl/VERSION *************** d50a8c6c5b41089930accbdce767d3c0 intl/p *** 40990,41000 **** b4758a0194e3e41362b939911472ce62 intl/relocatable.c bedade7bcfc3bc5eb09a2c6844f637f3 intl/relocatable.h 43f287d082528203fc85c1d2d81bf30d intl/textdomain.c ! dcf3ac29a82895724ea3a15f1e677fc1 libada/ChangeLog 444552e7722a9779a6ac485069fe0e8b libada/Makefile.in 1d3025570b3a47e06a8c08a1af035817 libada/configure 594a1a47f663192e6321a041c54ab2f5 libada/configure.ac ! 207c33f04a19e1d3cb591cde4ecf297b libcpp/ChangeLog ffa50c1da5557fb9e0cab171444651e2 libcpp/Makefile.in 7307c791a8de641ef6dada9a179ece57 libcpp/aclocal.m4 8c19150215f02148e487faba96509b8c libcpp/charset.c --- 41122,41132 ---- b4758a0194e3e41362b939911472ce62 intl/relocatable.c bedade7bcfc3bc5eb09a2c6844f637f3 intl/relocatable.h 43f287d082528203fc85c1d2d81bf30d intl/textdomain.c ! f77a5d85aee9afc4b75589e756dd1310 libada/ChangeLog 444552e7722a9779a6ac485069fe0e8b libada/Makefile.in 1d3025570b3a47e06a8c08a1af035817 libada/configure 594a1a47f663192e6321a041c54ab2f5 libada/configure.ac ! 1b5670fc72d49c11c1efe2ea452586f7 libcpp/ChangeLog ffa50c1da5557fb9e0cab171444651e2 libcpp/Makefile.in 7307c791a8de641ef6dada9a179ece57 libcpp/aclocal.m4 8c19150215f02148e487faba96509b8c libcpp/charset.c *************** d6b8f5e182d98da8b3e32ad7ee539419 libcpp *** 41020,41026 **** 2d45a726957f93e9ec053b644480b2e9 libcpp/makeucnid.c 8747a8bb83e52a8b835e1a790b998edd libcpp/mkdeps.c 9ef515de44e00a35322d5f59d2a3e476 libcpp/pch.c ! 4edd63cd1b7cfb83310f37cea62bee09 libcpp/po/ChangeLog af193dce92dd8c5af8fe72bdd6893476 libcpp/po/be.gmo 2c1793b3ff997ca241caedcdc510c4fb libcpp/po/be.po b58b7cc9e6dff1406a6fb47abb08f015 libcpp/po/ca.gmo --- 41152,41158 ---- 2d45a726957f93e9ec053b644480b2e9 libcpp/makeucnid.c 8747a8bb83e52a8b835e1a790b998edd libcpp/mkdeps.c 9ef515de44e00a35322d5f59d2a3e476 libcpp/pch.c ! 514dea6c3ef101b4eeca612bff9e5189 libcpp/po/ChangeLog af193dce92dd8c5af8fe72bdd6893476 libcpp/po/be.gmo 2c1793b3ff997ca241caedcdc510c4fb libcpp/po/be.po b58b7cc9e6dff1406a6fb47abb08f015 libcpp/po/ca.gmo *************** bce3234f2e7e15f369e9e9f7f6ce8632 libcpp *** 41068,41074 **** 11f204ddd01b33474c3de82de9192de4 libcpp/ucnid.h 524392c32703f6022427bf6bbdb833c8 libcpp/ucnid.tab a6c2b3de06c7424706b16f4c206396a1 libdecnumber/.gitignore ! b6ac1f19c08a283324a9b0350da957a7 libdecnumber/ChangeLog 86d8785bbc0f5bb23cfce8de566a3d5b libdecnumber/Makefile.in 2746a1155d319a2cda823ee5b58921ce libdecnumber/aclocal.m4 a0ecbc50fa8e505f88a951c3c294ecbc libdecnumber/bid/bid-dpd.h --- 41200,41206 ---- 11f204ddd01b33474c3de82de9192de4 libcpp/ucnid.h 524392c32703f6022427bf6bbdb833c8 libcpp/ucnid.tab a6c2b3de06c7424706b16f4c206396a1 libdecnumber/.gitignore ! 26adba6144fb49eaad1c260410a6e7f9 libdecnumber/ChangeLog 86d8785bbc0f5bb23cfce8de566a3d5b libdecnumber/Makefile.in 2746a1155d319a2cda823ee5b58921ce libdecnumber/aclocal.m4 a0ecbc50fa8e505f88a951c3c294ecbc libdecnumber/bid/bid-dpd.h *************** a97c47969dfc92a7666dfe3c2e1e1448 libdec *** 41130,41136 **** 74286c0df48b52d759e158d0137e326a libdecnumber/dpd/decimal64.c 7da680355032df2d570337d88c0694ad libdecnumber/dpd/decimal64.h 0f6db29710e7075c2fd62bc4478b3b8d libdecnumber/dpd/decimal64Symbols.h ! c48eba91aac681796b997df8d043d011 libffi/ChangeLog fbbc216bc25d759a72ea3e6d734af56b libffi/ChangeLog.libgcj d946d2b97454ad50a1dbfbf48923c5be libffi/ChangeLog.v1 085f9917800070e791f49bf4733e23fa libffi/LICENSE --- 41262,41268 ---- 74286c0df48b52d759e158d0137e326a libdecnumber/dpd/decimal64.c 7da680355032df2d570337d88c0694ad libdecnumber/dpd/decimal64.h 0f6db29710e7075c2fd62bc4478b3b8d libdecnumber/dpd/decimal64Symbols.h ! a4cc88c33b205fda15af4a4c5614d14f libffi/ChangeLog fbbc216bc25d759a72ea3e6d734af56b libffi/ChangeLog.libgcj d946d2b97454ad50a1dbfbf48923c5be libffi/ChangeLog.v1 085f9917800070e791f49bf4733e23fa libffi/LICENSE *************** d47c79b281339983862a8e52d8c73f0f libffi *** 41373,41381 **** 291be426192f460f6a07dfe1c96ab094 libffi/testsuite/libffi.special/special.exp 93fc3ea311b79f64004992807ce75d1e libffi/testsuite/libffi.special/unwindtest.cc 185d0795017fbbe253a13db8e34085f9 libffi/testsuite/libffi.special/unwindtest_ffi_call.cc ! 512edb1fc1eac04b1abf82f13ffd34dd libgcc/ChangeLog ! 8e9c5a42e0bd5bff4d54418e625741e1 libgcc/Makefile.in ! 2e1eb9de9db1d6c99302dd8a5a9c201c libgcc/config.host eaa470c97bd55676e6d80966007ba41e libgcc/config/alpha/crtfastmath.c 83c8da4c810799b854395aafde8e7c39 libgcc/config/alpha/gthr-posix.c 07faecc563137b07c7644a16356eeff5 libgcc/config/alpha/libgcc-alpha-ldbl.ver --- 41505,41513 ---- 291be426192f460f6a07dfe1c96ab094 libffi/testsuite/libffi.special/special.exp 93fc3ea311b79f64004992807ce75d1e libffi/testsuite/libffi.special/unwindtest.cc 185d0795017fbbe253a13db8e34085f9 libffi/testsuite/libffi.special/unwindtest_ffi_call.cc ! f81b4e8dae0f147c590c2da632b09e17 libgcc/ChangeLog ! 231177f49c08eeec411846acf89ae6bb libgcc/Makefile.in ! bf198f8c7bd0fe7049de1e8673dd5b11 libgcc/config.host eaa470c97bd55676e6d80966007ba41e libgcc/config/alpha/crtfastmath.c 83c8da4c810799b854395aafde8e7c39 libgcc/config/alpha/gthr-posix.c 07faecc563137b07c7644a16356eeff5 libgcc/config/alpha/libgcc-alpha-ldbl.ver *************** cf27ba2c5f28fd571a94a99d3f7932d8 libgcc *** 41406,41414 **** 64242a01be89a8dfac65ce47e3e599f8 libgcc/config/arm/libgcc-bpabi.ver bd1ab429b3c0798e43769e635e7384d0 libgcc/config/arm/libunwind.S c1e7b1fc98307de9f0537f396cad17c6 libgcc/config/arm/linux-atomic-64bit.c ! 928ea2875c1590c553c3e57aa8a7310d libgcc/config/arm/linux-atomic.c c4710245760a579f713dbd9efb90e010 libgcc/config/arm/pr-support.c ! 8078e9354b41d7533e0502e2cd3bee2b libgcc/config/arm/sfp-machine.h dc24df76158de2c5f1b47b47d989d2b7 libgcc/config/arm/symbian-lib.h 6f46bbbd9e7334a061e6dae05c1319b2 libgcc/config/arm/t-arm 1d5b0030dc84017981f297b41799991d libgcc/config/arm/t-bpabi --- 41538,41546 ---- 64242a01be89a8dfac65ce47e3e599f8 libgcc/config/arm/libgcc-bpabi.ver bd1ab429b3c0798e43769e635e7384d0 libgcc/config/arm/libunwind.S c1e7b1fc98307de9f0537f396cad17c6 libgcc/config/arm/linux-atomic-64bit.c ! d82fb99c12650cca576440638a27cbd1 libgcc/config/arm/linux-atomic.c c4710245760a579f713dbd9efb90e010 libgcc/config/arm/pr-support.c ! b9c1d1c5ac4ae7efd4dd57b4a69f8f4d libgcc/config/arm/sfp-machine.h dc24df76158de2c5f1b47b47d989d2b7 libgcc/config/arm/symbian-lib.h 6f46bbbd9e7334a061e6dae05c1319b2 libgcc/config/arm/t-arm 1d5b0030dc84017981f297b41799991d libgcc/config/arm/t-bpabi *************** b98f087b8ddb8d01ebd3f380960dc7d8 libgcc *** 41541,41547 **** 03f0dcb01aca6d2bb9490f628bb344ed libgcc/config/h8300/parityhi2.c c8a75852104a830a2aecd65d2de102fb libgcc/config/h8300/popcounthi2.c e002eff640bc32723d0216927bc99406 libgcc/config/h8300/t-h8300 ! 5e9541f994e7b2279295996ed235fb84 libgcc/config/i386/32/sfp-machine.h 8271562f1de2b3fa5b976454b83bfdc0 libgcc/config/i386/32/t-softfp 7d3267782d5f3311644fd10bddb44d11 libgcc/config/i386/32/tf-signs.c c823b0cff478388588a9aabedaa93068 libgcc/config/i386/64/_divtc3.c --- 41673,41679 ---- 03f0dcb01aca6d2bb9490f628bb344ed libgcc/config/h8300/parityhi2.c c8a75852104a830a2aecd65d2de102fb libgcc/config/h8300/popcounthi2.c e002eff640bc32723d0216927bc99406 libgcc/config/h8300/t-h8300 ! 64c02814d15a13379d07c6a13f503e92 libgcc/config/i386/32/sfp-machine.h 8271562f1de2b3fa5b976454b83bfdc0 libgcc/config/i386/32/t-softfp 7d3267782d5f3311644fd10bddb44d11 libgcc/config/i386/32/tf-signs.c c823b0cff478388588a9aabedaa93068 libgcc/config/i386/64/_divtc3.c *************** c823b0cff478388588a9aabedaa93068 libgcc *** 41550,41562 **** 7d5aec02242115dca9fe0000c4ca32f0 libgcc/config/i386/64/eqtf2.c b2bcf8b944f937cb4f3799c02670dcee libgcc/config/i386/64/getf2.c a92aa384cf96b81c0dbb642826200dd7 libgcc/config/i386/64/letf2.c ! 7a52fe481e618077a5ef20252db54b78 libgcc/config/i386/64/sfp-machine.h 498bbaf506a5bbdaa793f66399ece491 libgcc/config/i386/64/t-softfp-compat 8a6ca8b862aa68b4e5a896c455fc641f libgcc/config/i386/crtfastmath.c b2db80d7c4d333e6762d2981733e2de6 libgcc/config/i386/crti.S 9973e9d6737dfce5f9c382651c4ae6ef libgcc/config/i386/crtn.S 7ba449b1d6ba00bda5d570d7f697aeb8 libgcc/config/i386/crtprec.c ! 4c3dd0cbf39000f63c9a3ea94705bdec libgcc/config/i386/cygming-crtbegin.c c0cbc4f9e5283fe4a38c833517b62efb libgcc/config/i386/cygming-crtend.c 1e00aa3574fe5d474b96ba4e096766be libgcc/config/i386/cygwin.S f59d63f61009b2ab99f6f900bd1def40 libgcc/config/i386/darwin-lib.h --- 41682,41694 ---- 7d5aec02242115dca9fe0000c4ca32f0 libgcc/config/i386/64/eqtf2.c b2bcf8b944f937cb4f3799c02670dcee libgcc/config/i386/64/getf2.c a92aa384cf96b81c0dbb642826200dd7 libgcc/config/i386/64/letf2.c ! 340d1c5c20ba1d373c315eefaadc6821 libgcc/config/i386/64/sfp-machine.h 498bbaf506a5bbdaa793f66399ece491 libgcc/config/i386/64/t-softfp-compat 8a6ca8b862aa68b4e5a896c455fc641f libgcc/config/i386/crtfastmath.c b2db80d7c4d333e6762d2981733e2de6 libgcc/config/i386/crti.S 9973e9d6737dfce5f9c382651c4ae6ef libgcc/config/i386/crtn.S 7ba449b1d6ba00bda5d570d7f697aeb8 libgcc/config/i386/crtprec.c ! c066078ad43c28c18d2a0546395f096b libgcc/config/i386/cygming-crtbegin.c c0cbc4f9e5283fe4a38c833517b62efb libgcc/config/i386/cygming-crtend.c 1e00aa3574fe5d474b96ba4e096766be libgcc/config/i386/cygwin.S f59d63f61009b2ab99f6f900bd1def40 libgcc/config/i386/darwin-lib.h *************** bbd02bc575b39b813abb3651cde980d7 libgcc *** 41625,41636 **** 10cf422a4e8442851693a271ed3d95f9 libgcc/config/ia64/t-vms 45cb97bd14177f2d809994a800675ceb libgcc/config/ia64/tf-signs.c 47c47ba70af245c0ce96e4d86eb3c8b3 libgcc/config/ia64/unwind-ia64.c ! 4648f488028bedd7a57cd91106e85bee libgcc/config/ia64/unwind-ia64.h 1c6c59bc3f1f5f291819b97e05747a9d libgcc/config/ia64/vms-crtinit.S c5e966b27bfd296348375c119392b335 libgcc/config/ia64/vms-unwind.h d6833587bfeac39280bb51402b3c8642 libgcc/config/iq2000/lib2funcs.c 102f7dad8ad6b54434a1b8313d1e42c4 libgcc/config/iq2000/t-iq2000 ! bfa03c8d1352e9fcf3611dacce186ab8 libgcc/config/libbid/ChangeLog 86e150f40ebcb97e568366a5cb38cbbe libgcc/config/libbid/_addsub_dd.c ded9495633ce7c1e30d900eae5f9a599 libgcc/config/libbid/_addsub_sd.c d26f72ff45dfd7210a6a33a599274515 libgcc/config/libbid/_addsub_td.c --- 41757,41768 ---- 10cf422a4e8442851693a271ed3d95f9 libgcc/config/ia64/t-vms 45cb97bd14177f2d809994a800675ceb libgcc/config/ia64/tf-signs.c 47c47ba70af245c0ce96e4d86eb3c8b3 libgcc/config/ia64/unwind-ia64.c ! f4f606c3dea72b68fcb71ac7c7fb0f36 libgcc/config/ia64/unwind-ia64.h 1c6c59bc3f1f5f291819b97e05747a9d libgcc/config/ia64/vms-crtinit.S c5e966b27bfd296348375c119392b335 libgcc/config/ia64/vms-unwind.h d6833587bfeac39280bb51402b3c8642 libgcc/config/iq2000/lib2funcs.c 102f7dad8ad6b54434a1b8313d1e42c4 libgcc/config/iq2000/t-iq2000 ! 435c037202b510799e846982a90e7fbc libgcc/config/libbid/ChangeLog 86e150f40ebcb97e568366a5cb38cbbe libgcc/config/libbid/_addsub_dd.c ded9495633ce7c1e30d900eae5f9a599 libgcc/config/libbid/_addsub_sd.c d26f72ff45dfd7210a6a33a599274515 libgcc/config/libbid/_addsub_td.c *************** f75f4d18eb7ae2677787d98c39337a3d libgcc *** 41861,41867 **** 9a13cb272dc700481c452a2760ed0429 libgcc/config/mips/t-slibgcc-irix 5c0de0b169d03e1fbd60d32ce75e4118 libgcc/config/mips/t-tpbit 532a76f856d3755b780a19a91bdd1654 libgcc/config/mips/t-vr ! 0ee16cd0582255fb2d05117493a3417b libgcc/config/mips/vr4120-div.S b678f8e63a159484769aa845cce70d65 libgcc/config/mmix/crti.S 7686d72519ec3340fb6f7f5998ee3d37 libgcc/config/mmix/crtn.S 41478efd1b19b3c7c9426d8e843f3b39 libgcc/config/mmix/t-mmix --- 41993,41999 ---- 9a13cb272dc700481c452a2760ed0429 libgcc/config/mips/t-slibgcc-irix 5c0de0b169d03e1fbd60d32ce75e4118 libgcc/config/mips/t-tpbit 532a76f856d3755b780a19a91bdd1654 libgcc/config/mips/t-vr ! 7149c04ea18cabca3b9b062759ce07d7 libgcc/config/mips/vr4120-div.S b678f8e63a159484769aa845cce70d65 libgcc/config/mmix/crti.S 7686d72519ec3340fb6f7f5998ee3d37 libgcc/config/mmix/crtn.S 41478efd1b19b3c7c9426d8e843f3b39 libgcc/config/mmix/t-mmix *************** c8333fe1710212c68b89403f3fff701d libgcc *** 41956,41962 **** c03f0812473c50231c9face9b03742cd libgcc/config/rs6000/freebsd-unwind.h 7c37f400a98c24283dc0846682e33da0 libgcc/config/rs6000/gthr-aix.h 26bf9e8eef590c005f606af761607b74 libgcc/config/rs6000/ibm-ldouble-format ! 99b28e8fa923a65f68b54588e9a94d20 libgcc/config/rs6000/ibm-ldouble.c 95befaa4cc82728a8dd7c7a316fdfea2 libgcc/config/rs6000/libgcc-darwin.10.4.ver 12001bd5ae618f39cc997a73973267b5 libgcc/config/rs6000/libgcc-darwin.10.5.ver a06cfd4c956f4c6cd3248d228c74f167 libgcc/config/rs6000/libgcc-glibc.ver --- 42088,42094 ---- c03f0812473c50231c9face9b03742cd libgcc/config/rs6000/freebsd-unwind.h 7c37f400a98c24283dc0846682e33da0 libgcc/config/rs6000/gthr-aix.h 26bf9e8eef590c005f606af761607b74 libgcc/config/rs6000/ibm-ldouble-format ! 0fe875c8bb256edf4f7fbf3b25e612ef libgcc/config/rs6000/ibm-ldouble.c 95befaa4cc82728a8dd7c7a316fdfea2 libgcc/config/rs6000/libgcc-darwin.10.4.ver 12001bd5ae618f39cc997a73973267b5 libgcc/config/rs6000/libgcc-darwin.10.5.ver a06cfd4c956f4c6cd3248d228c74f167 libgcc/config/rs6000/libgcc-glibc.ver *************** f5fb690a7006c3237a8adededc5944a9 libgcc *** 42100,42107 **** 4927dec2e58bebc9fec4d0405177eaea libgcc/config/tilegx/t-crtstuff 5e2260f13769a960c8e1f24b0c9847e4 libgcc/config/tilegx/t-softfp 94fecaba2fa3fca31d038d5739e45e51 libgcc/config/tilegx/t-tilegx ! ec62178745610d392c902b6b1de2301f libgcc/config/tilepro/atomic.c ! e47e51668a0698fddeb82ff609d5e4c0 libgcc/config/tilepro/atomic.h 28bb0014d923ee23beffa73f9c1a96bf libgcc/config/tilepro/linux-unwind.h 861e6fdc8a21cc807126682f8474a6e9 libgcc/config/tilepro/sfp-machine.h 936ef396ad26fcb21789def4480989a1 libgcc/config/tilepro/softdivide.c --- 42232,42239 ---- 4927dec2e58bebc9fec4d0405177eaea libgcc/config/tilegx/t-crtstuff 5e2260f13769a960c8e1f24b0c9847e4 libgcc/config/tilegx/t-softfp 94fecaba2fa3fca31d038d5739e45e51 libgcc/config/tilegx/t-tilegx ! 60226a8ce6ccd4e63d84d46a46ff4dd2 libgcc/config/tilepro/atomic.c ! 6a1fdf7ebb19f9b5146c633d9cafcefc libgcc/config/tilepro/atomic.h 28bb0014d923ee23beffa73f9c1a96bf libgcc/config/tilepro/linux-unwind.h 861e6fdc8a21cc807126682f8474a6e9 libgcc/config/tilepro/sfp-machine.h 936ef396ad26fcb21789def4480989a1 libgcc/config/tilepro/softdivide.c *************** f480b301f31996707b7fe143db4f953d libgcc *** 42272,42278 **** 5c71e5bf75b8bda4c16eb0331bd2f82a libgcc/unwind-pe.h c73968ef1affd164f40382a75fe6b2ec libgcc/unwind-sjlj.c e7e914187b304d3f16ea2f05db0f3524 libgcc/unwind.inc ! 936877839b0ac2db942e27b4e4eebb62 libgfortran/ChangeLog 9aca36338382e5b4b730e7779170b24d libgfortran/ChangeLog-2002 80d3edc880c2da0b7a2beec2e2c4f774 libgfortran/ChangeLog-2003 9f0239429993a5e64ed793eb6c55a5c1 libgfortran/ChangeLog-2004 --- 42404,42410 ---- 5c71e5bf75b8bda4c16eb0331bd2f82a libgcc/unwind-pe.h c73968ef1affd164f40382a75fe6b2ec libgcc/unwind-sjlj.c e7e914187b304d3f16ea2f05db0f3524 libgcc/unwind.inc ! 037f9872333a9fdd1ba3096f0e3e2b7a libgfortran/ChangeLog 9aca36338382e5b4b730e7779170b24d libgfortran/ChangeLog-2002 80d3edc880c2da0b7a2beec2e2c4f774 libgfortran/ChangeLog-2003 9f0239429993a5e64ed793eb6c55a5c1 libgfortran/ChangeLog-2004 *************** aec9d2a343421d39d65807eaedbad078 libgfo *** 42292,42298 **** 403c97196021de6f204dd6b651336f1c libgfortran/caf/mpi.c fe945c97baf6e339f8adb0d859aaf08a libgfortran/caf/single.c 34ba0444f72738b27327ef9bda1ab341 libgfortran/config.h.in ! b0934ad177d1d725c13f942d681ffac0 libgfortran/config/fpu-387.h 77d8238aeefdc5f82aa8234f16e8b374 libgfortran/config/fpu-aix.h 3ea308ca7ff9f3cf4f5d3c14546cf86b libgfortran/config/fpu-generic.h 272d218427d53fcc9abc0fb095927b0e libgfortran/config/fpu-glibc.h --- 42424,42430 ---- 403c97196021de6f204dd6b651336f1c libgfortran/caf/mpi.c fe945c97baf6e339f8adb0d859aaf08a libgfortran/caf/single.c 34ba0444f72738b27327ef9bda1ab341 libgfortran/config.h.in ! e60041db0e860feffa818ceef6715364 libgfortran/config/fpu-387.h 77d8238aeefdc5f82aa8234f16e8b374 libgfortran/config/fpu-aix.h 3ea308ca7ff9f3cf4f5d3c14546cf86b libgfortran/config/fpu-generic.h 272d218427d53fcc9abc0fb095927b0e libgfortran/config/fpu-glibc.h *************** b00ec0a400b53f07764a151c66d33561 libgfo *** 42827,42833 **** 2916dabb6264df04a9b9a8dc9930a97d libgfortran/intrinsics/clock.c e53379497034aa8fbf584d011922e389 libgfortran/intrinsics/cpu_time.c b409b896ae9d59dc431b8dc28ec0666d libgfortran/intrinsics/cshift0.c ! ec879955f29d4e3f5fe00d1dd4106728 libgfortran/intrinsics/ctime.c 3242ba5cbfaeb5cc71dc2107ed2b40fb libgfortran/intrinsics/date_and_time.c 412c85ea79822c7458e458d04bf498a0 libgfortran/intrinsics/dprod_r8.f90 085667f4c4914ff5d46c8eadd36821db libgfortran/intrinsics/dtime.c --- 42959,42965 ---- 2916dabb6264df04a9b9a8dc9930a97d libgfortran/intrinsics/clock.c e53379497034aa8fbf584d011922e389 libgfortran/intrinsics/cpu_time.c b409b896ae9d59dc431b8dc28ec0666d libgfortran/intrinsics/cshift0.c ! b28f4dcc525b1ce615bdf6cb60bb6378 libgfortran/intrinsics/ctime.c 3242ba5cbfaeb5cc71dc2107ed2b40fb libgfortran/intrinsics/date_and_time.c 412c85ea79822c7458e458d04bf498a0 libgfortran/intrinsics/dprod_r8.f90 085667f4c4914ff5d46c8eadd36821db libgfortran/intrinsics/dtime.c *************** da3f9c7574670d80e518dd9f04b6ad6e libgfo *** 42873,42882 **** 54fea78534ebe955986bab366cd892af libgfortran/intrinsics/spread_generic.c b0e4ebb89b23c2e820c4ad99bd6f757f libgfortran/intrinsics/stat.c 1e5a7811c90e4d49bf9331a67098bc96 libgfortran/intrinsics/string_intrinsics.c ! 8442b8c5a948e16b705ebb81046767aa libgfortran/intrinsics/string_intrinsics_inc.c ea0b860a0befcbe6b45fae116825ed66 libgfortran/intrinsics/symlnk.c 04d1d96e6b5566b1afda73994adb460b libgfortran/intrinsics/system.c ! eecabc62208f891013e154ae5e36364c libgfortran/intrinsics/system_clock.c 0e2b7a113afa2b481453e4b79aa72c33 libgfortran/intrinsics/time.c 18ec8759f822370921f31205926491bc libgfortran/intrinsics/time_1.h b20f3ffe7796ac59ad43c3ef6434a298 libgfortran/intrinsics/transpose_generic.c --- 43005,43014 ---- 54fea78534ebe955986bab366cd892af libgfortran/intrinsics/spread_generic.c b0e4ebb89b23c2e820c4ad99bd6f757f libgfortran/intrinsics/stat.c 1e5a7811c90e4d49bf9331a67098bc96 libgfortran/intrinsics/string_intrinsics.c ! 9a71be70e82c9b249c7ca423a1f036ea libgfortran/intrinsics/string_intrinsics_inc.c ea0b860a0befcbe6b45fae116825ed66 libgfortran/intrinsics/symlnk.c 04d1d96e6b5566b1afda73994adb460b libgfortran/intrinsics/system.c ! 2a0d243744a806ec8ba1cbc384775101 libgfortran/intrinsics/system_clock.c 0e2b7a113afa2b481453e4b79aa72c33 libgfortran/intrinsics/time.c 18ec8759f822370921f31205926491bc libgfortran/intrinsics/time_1.h b20f3ffe7796ac59ad43c3ef6434a298 libgfortran/intrinsics/transpose_generic.c *************** a4b0e528876296d9944ab31621ef2408 libgfo *** 42892,42911 **** ac491bfcbb6d9e4bc85c743b0f5c2604 libgfortran/io/inquire.c 9ec39ff186f5c060594433ea19196097 libgfortran/io/intrinsics.c 1076173fd5b57e7b077c2a04bfa68c52 libgfortran/io/io.h ! d5c0a2282a39f18d265432a52b2478f4 libgfortran/io/list_read.c 8909e5a207dc229ca1fc1bbba3ae1551 libgfortran/io/lock.c adcb167bb4ee2647761f8498ae7e8901 libgfortran/io/open.c ! d22754390da496602359d7472e6dda27 libgfortran/io/read.c 040e81da2aa94c975d261ab697d7f2d1 libgfortran/io/size_from_kind.c ! 90a916893291ccff3753fc8c2f7e75ab libgfortran/io/transfer.c ecde535f1d7587ac6e0b49eeff85574d libgfortran/io/transfer128.c ! 3c03c3fcaa4cea6a1123e3b4367bb3bd libgfortran/io/unit.c ! f63c12acac2dfa84ed0453f35ed2b589 libgfortran/io/unix.c 2496d333f6ba3d7a8c1e2b3ebab3716f libgfortran/io/unix.h 0ae21d0cde93e1cfad75bd3d65b59240 libgfortran/io/write.c ! f5071b93f1a4bd679533e697fee1e9ca libgfortran/io/write_float.def 7b6f7f76a6270f017f2e16d7a8c5e1d6 libgfortran/kinds-override.h ! 2aaf13b4155c9ae37b5852d00a709415 libgfortran/libgfortran.h 2527bb19b82f08b34038b07b172d029d libgfortran/libgfortran.spec.in 25a776e70521ce48fb1bfdd7bfa1a646 libgfortran/libtool-version 574cd2179e013292083b4263d65b55e4 libgfortran/m4/all.m4 --- 43024,43043 ---- ac491bfcbb6d9e4bc85c743b0f5c2604 libgfortran/io/inquire.c 9ec39ff186f5c060594433ea19196097 libgfortran/io/intrinsics.c 1076173fd5b57e7b077c2a04bfa68c52 libgfortran/io/io.h ! 240e6e1f24d336854c0c399c054cf03e libgfortran/io/list_read.c 8909e5a207dc229ca1fc1bbba3ae1551 libgfortran/io/lock.c adcb167bb4ee2647761f8498ae7e8901 libgfortran/io/open.c ! 6bea3fedc65a953c1104ddbb3fc7b169 libgfortran/io/read.c 040e81da2aa94c975d261ab697d7f2d1 libgfortran/io/size_from_kind.c ! 59c54370bcda6cae4950ed341b98a917 libgfortran/io/transfer.c ecde535f1d7587ac6e0b49eeff85574d libgfortran/io/transfer128.c ! 5f6e2cfd59138cd6014accf8ed843abb libgfortran/io/unit.c ! f5e959d1de2ba1cea59b97e125fdc785 libgfortran/io/unix.c 2496d333f6ba3d7a8c1e2b3ebab3716f libgfortran/io/unix.h 0ae21d0cde93e1cfad75bd3d65b59240 libgfortran/io/write.c ! b533d60d08928622ff4a22c55471da41 libgfortran/io/write_float.def 7b6f7f76a6270f017f2e16d7a8c5e1d6 libgfortran/kinds-override.h ! e5688e6b589c862f2536b013dc1f3230 libgfortran/libgfortran.h 2527bb19b82f08b34038b07b172d029d libgfortran/libgfortran.spec.in 25a776e70521ce48fb1bfdd7bfa1a646 libgfortran/libtool-version 574cd2179e013292083b4263d65b55e4 libgfortran/m4/all.m4 *************** f7c3e69df5c809343815e9887a2ae94c libgo/ *** 44331,44337 **** 9330ee82302ed75dde8bc20ba6a4db12 libgo/testsuite/gotest 597b3ae1c086f6679d4cee693979bf65 libgo/testsuite/lib/libgo.exp 6df485581d2f02246f41b5ca46f5bb5d libgo/testsuite/libgo.testmain/testmain.exp ! 9adfbb6ff36e6c84fe2167e94872ece9 libgomp/ChangeLog 0d55aa862aee66efdc5f8d62c94ff8fb libgomp/ChangeLog.graphite 79e407d8620e08863da6142c9eed25be libgomp/Makefile.am e6e03766255f9acec1eaca053c845d7a libgomp/Makefile.in --- 44463,44469 ---- 9330ee82302ed75dde8bc20ba6a4db12 libgo/testsuite/gotest 597b3ae1c086f6679d4cee693979bf65 libgo/testsuite/lib/libgo.exp 6df485581d2f02246f41b5ca46f5bb5d libgo/testsuite/libgo.testmain/testmain.exp ! bdfbea89a1b2679fa0f0b2a2f44a13cc libgomp/ChangeLog 0d55aa862aee66efdc5f8d62c94ff8fb libgomp/ChangeLog.graphite 79e407d8620e08863da6142c9eed25be libgomp/Makefile.am e6e03766255f9acec1eaca053c845d7a libgomp/Makefile.in *************** b7b68d7a00bc358305a60344d627cd47 libgom *** 44345,44351 **** a9ceaf6adc9b6c1822ce3211efe9cdff libgomp/config/linux/alpha/futex.h 88f2e0618795fd233f8739ac10948dce libgomp/config/linux/bar.c 652be5537f2e723a8a78afd72d5aecd6 libgomp/config/linux/bar.h ! 1b1d64fcc303d408d9a5785ef4164ad3 libgomp/config/linux/futex.h 89e11751a084e4f6a5bdab8d359eeb3e libgomp/config/linux/ia64/futex.h 2d0d88c6d9c8baf3e8eaf83960baedf8 libgomp/config/linux/lock.c e161464cae693f481206087b4271c37e libgomp/config/linux/mips/futex.h --- 44477,44483 ---- a9ceaf6adc9b6c1822ce3211efe9cdff libgomp/config/linux/alpha/futex.h 88f2e0618795fd233f8739ac10948dce libgomp/config/linux/bar.c 652be5537f2e723a8a78afd72d5aecd6 libgomp/config/linux/bar.h ! c5223b91b1692c20c870aa1666d82d25 libgomp/config/linux/futex.h 89e11751a084e4f6a5bdab8d359eeb3e libgomp/config/linux/ia64/futex.h 2d0d88c6d9c8baf3e8eaf83960baedf8 libgomp/config/linux/lock.c e161464cae693f481206087b4271c37e libgomp/config/linux/mips/futex.h *************** edfcc0697ce21d05156951ac3fec5c65 libgom *** 44390,44396 **** 536091dd87cba3644f21452bee43c7ad libgomp/iter.c e4dc494ba582816684ad36830ac867ec libgomp/iter_ull.c 64d317c3727571a294145df35e5b5b18 libgomp/libgomp.h ! 6dd3ec40c0c12dd5ec504ba1409ccf96 libgomp/libgomp.info fde0d3b4fa91f0570fbc897a8cf8341d libgomp/libgomp.map 591ff20dfd2b81e3c919249b5db8a967 libgomp/libgomp.spec.in 5d5601d450a0f0df0eafea237d0b0aec libgomp/libgomp.texi --- 44522,44528 ---- 536091dd87cba3644f21452bee43c7ad libgomp/iter.c e4dc494ba582816684ad36830ac867ec libgomp/iter_ull.c 64d317c3727571a294145df35e5b5b18 libgomp/libgomp.h ! 01ab74e1c748e0377c315a4b53be04f4 libgomp/libgomp.info fde0d3b4fa91f0570fbc897a8cf8341d libgomp/libgomp.map 591ff20dfd2b81e3c919249b5db8a967 libgomp/libgomp.spec.in 5d5601d450a0f0df0eafea237d0b0aec libgomp/libgomp.texi *************** e1362c83d5ba73eb8768fbabff951667 libgom *** 44790,44796 **** 66ffa69cccfc856bc101f397c0632b69 libgomp/work.c 99c2e5e712b990ee07be10f53e41f3fb libiberty/.gitignore a916467b91076e631dd8edb7424769c7 libiberty/COPYING.LIB ! 830d423459f1101f63b4d5aed9359af2 libiberty/ChangeLog 361480b2ed2814aa843f0b743d09fa0d libiberty/Makefile.in c68dbf7834af4281ebd84caa3fd54680 libiberty/README 8797cb1a6faa84f3c7fe3d12164a4b13 libiberty/_doprnt.c --- 44922,44928 ---- 66ffa69cccfc856bc101f397c0632b69 libgomp/work.c 99c2e5e712b990ee07be10f53e41f3fb libiberty/.gitignore a916467b91076e631dd8edb7424769c7 libiberty/COPYING.LIB ! 6d9b79f6a36bd97d99112ddb9c9307f6 libiberty/ChangeLog 361480b2ed2814aa843f0b743d09fa0d libiberty/Makefile.in c68dbf7834af4281ebd84caa3fd54680 libiberty/README 8797cb1a6faa84f3c7fe3d12164a4b13 libiberty/_doprnt.c *************** a8391a5d7431a4e11f61be41386a3356 libibe *** 44819,44825 **** 42ed91dc8b7eca58495136bacf1e81bc libiberty/configure 5d9a5592c3884692916e7456817c0a72 libiberty/configure.ac 5824bd0f9be9f4fa74bb3bdc7fd9431c libiberty/configure.com ! a8959f1d1758eb14819753023f89d199 libiberty/copying-lib.texi fe053283d3559af3ec5cac45f8ead009 libiberty/copysign.c 6ecf8589070068147a1cb29bc7f9ebb9 libiberty/cp-demangle.c 4aaee5f46bac9e50f23fabebe62cded5 libiberty/cp-demangle.h --- 44951,44957 ---- 42ed91dc8b7eca58495136bacf1e81bc libiberty/configure 5d9a5592c3884692916e7456817c0a72 libiberty/configure.ac 5824bd0f9be9f4fa74bb3bdc7fd9431c libiberty/configure.com ! 32149e9d61d873be9c2950bee2ae7137 libiberty/copying-lib.texi fe053283d3559af3ec5cac45f8ead009 libiberty/copysign.c 6ecf8589070068147a1cb29bc7f9ebb9 libiberty/cp-demangle.c 4aaee5f46bac9e50f23fabebe62cded5 libiberty/cp-demangle.h *************** cdc140ce93944c5bb2ac62cd3dfd86d6 libibe *** 44938,44944 **** 4746095b1b67693ab6e78ed72ead1235 libiberty/xstrdup.c 6f774a92661ca4a067f1691a7925524b libiberty/xstrerror.c c6e7ef53b4ff115a136d917511222656 libiberty/xstrndup.c ! 222a59719f70d7a46b913f16f180e8df libitm/ChangeLog babf0aa268f489737739f16533cc22de libitm/Makefile.am 86266ae1bc0838d04162c98147dac3e0 libitm/Makefile.in 251e31c25ac44517c92bbeff54433435 libitm/aatree.cc --- 45070,45076 ---- 4746095b1b67693ab6e78ed72ead1235 libiberty/xstrdup.c 6f774a92661ca4a067f1691a7925524b libiberty/xstrerror.c c6e7ef53b4ff115a136d917511222656 libiberty/xstrndup.c ! 4072f1627b5ed0705ecde323b4a1ce46 libitm/ChangeLog babf0aa268f489737739f16533cc22de libitm/Makefile.am 86266ae1bc0838d04162c98147dac3e0 libitm/Makefile.in 251e31c25ac44517c92bbeff54433435 libitm/aatree.cc *************** ef1fa3967fbdf894d65f3093fbd406ed libitm *** 44961,44967 **** 138f4c53afc54d49912a673077d1894f libitm/config/arm/hwcap.h fae314a0c29738cdfe3e73f77ac15734 libitm/config/arm/sjlj.S 82815d775dc167b6bd7dd40c96914d34 libitm/config/arm/target.h ! 78613dfd5af73f26c85d164e5dd1833f libitm/config/generic/asmcfi.h ea3e01dbcbe820603a5d62f988ca5378 libitm/config/generic/cacheline.h 45a457da8b5b3108e80d0f2fd5fd63c5 libitm/config/generic/tls.cc c0b3e70bc9d9042f456d55994c1162e0 libitm/config/generic/tls.h --- 45093,45099 ---- 138f4c53afc54d49912a673077d1894f libitm/config/arm/hwcap.h fae314a0c29738cdfe3e73f77ac15734 libitm/config/arm/sjlj.S 82815d775dc167b6bd7dd40c96914d34 libitm/config/arm/target.h ! 6981a3d2e6538b61372b8f2133b9ed90 libitm/config/generic/asmcfi.h ea3e01dbcbe820603a5d62f988ca5378 libitm/config/generic/cacheline.h 45a457da8b5b3108e80d0f2fd5fd63c5 libitm/config/generic/tls.cc c0b3e70bc9d9042f456d55994c1162e0 libitm/config/generic/tls.h *************** bd9d58dae02cf5244dcf6322fe5f2bf1 libitm *** 44998,45004 **** 0655c790a8e129492774d99d07486d18 libitm/dispatch.h 60ba1319c362973f2635e0d4a3a614f6 libitm/eh_cpp.cc d7e6d99c5170735d2f2c170a8c420b21 libitm/libitm.h ! 4b6b0b634d7249359fc8fbaf829a6ed9 libitm/libitm.info 8d44f8cc119e5c7cbc20c558b551475b libitm/libitm.map ea467d7117853d139bb288ab75261139 libitm/libitm.spec.in a7bdd4faba671d8611ade76351553bb6 libitm/libitm.texi --- 45130,45136 ---- 0655c790a8e129492774d99d07486d18 libitm/dispatch.h 60ba1319c362973f2635e0d4a3a614f6 libitm/eh_cpp.cc d7e6d99c5170735d2f2c170a8c420b21 libitm/libitm.h ! 36e8c8a19665b1bd7293775e5c575138 libitm/libitm.info 8d44f8cc119e5c7cbc20c558b551475b libitm/libitm.map ea467d7117853d139bb288ab75261139 libitm/libitm.spec.in a7bdd4faba671d8611ade76351553bb6 libitm/libitm.texi *************** ef24198422c19f99b0c41be6a16f7081 libitm *** 45038,45044 **** e953cb3ae3df3aab188ddd291b93a0fd libitm/useraction.cc eb10feee6d07db55d0e12bec2726ab4a libitm/util.cc 94d55d512a9ba36caa9b7df079bae19f libjava/COPYING ! 2c74867a43486aa2e167487ad950a53d libjava/ChangeLog 03e1f38b916604fdf1470238201325f3 libjava/ChangeLog-1998 691acb61fbd6a2235826ff55db5578be libjava/ChangeLog-1999 b58c6701706771a02bf00a77666941ef libjava/ChangeLog-2000 --- 45170,45176 ---- e953cb3ae3df3aab188ddd291b93a0fd libitm/useraction.cc eb10feee6d07db55d0e12bec2726ab4a libitm/util.cc 94d55d512a9ba36caa9b7df079bae19f libjava/COPYING ! 863729c251025493f067307a39d4331f libjava/ChangeLog 03e1f38b916604fdf1470238201325f3 libjava/ChangeLog-1998 691acb61fbd6a2235826ff55db5578be libjava/ChangeLog-1999 b58c6701706771a02bf00a77666941ef libjava/ChangeLog-2000 *************** de54f80484e640306e109e785e4611c8 libjav *** 45077,45090 **** 880a25226e4e4e4c241663041d24f8dd libjava/classpath/AUTHORS efd97e0bb913655e0c8b16fa78bdded4 libjava/classpath/BUGS af0004801732bc4b20d90f351cf80510 libjava/classpath/COPYING ! 997d3cf6515e6a9e4a1b23599eef1c70 libjava/classpath/ChangeLog 3418fae58de967afe26d915a4b18d82c libjava/classpath/ChangeLog-2003 a5b72adb94a3c362738b0f52e57a82af libjava/classpath/ChangeLog-2004 61159c6e0802d0d2a92b3051003db5c5 libjava/classpath/ChangeLog-2005 0dba21f6ba7fe678d161f970a31cd505 libjava/classpath/ChangeLog-2006 50f13c3f8b33d5343320e6831fdd27df libjava/classpath/ChangeLog-2007 258dbd419342131b894f799a8090f76f libjava/classpath/ChangeLog-2008 ! 750388b245aad9a0cb97e0e5a9394b71 libjava/classpath/ChangeLog.gcj a09dff495a9043fcf7b463f0b5c4fdd6 libjava/classpath/ChangeLog.gnujaxp.1 3353fabfae7cca9e6c4f821919e4275c libjava/classpath/ChangeLog.gnujaxp.2 b35964059a02f01f39b05a95b401f586 libjava/classpath/ChangeLog.libxmlj --- 45209,45222 ---- 880a25226e4e4e4c241663041d24f8dd libjava/classpath/AUTHORS efd97e0bb913655e0c8b16fa78bdded4 libjava/classpath/BUGS af0004801732bc4b20d90f351cf80510 libjava/classpath/COPYING ! a4399303e25ebaba1640488949e7dc9e libjava/classpath/ChangeLog 3418fae58de967afe26d915a4b18d82c libjava/classpath/ChangeLog-2003 a5b72adb94a3c362738b0f52e57a82af libjava/classpath/ChangeLog-2004 61159c6e0802d0d2a92b3051003db5c5 libjava/classpath/ChangeLog-2005 0dba21f6ba7fe678d161f970a31cd505 libjava/classpath/ChangeLog-2006 50f13c3f8b33d5343320e6831fdd27df libjava/classpath/ChangeLog-2007 258dbd419342131b894f799a8090f76f libjava/classpath/ChangeLog-2008 ! c0d18773caeafce6665213572cff82d0 libjava/classpath/ChangeLog.gcj a09dff495a9043fcf7b463f0b5c4fdd6 libjava/classpath/ChangeLog.gnujaxp.1 3353fabfae7cca9e6c4f821919e4275c libjava/classpath/ChangeLog.gnujaxp.2 b35964059a02f01f39b05a95b401f586 libjava/classpath/ChangeLog.libxmlj *************** e85d96083a13e7a8130e6857c531aaab libjav *** 45115,45135 **** b343eec566430e85d1f95c21438aa4ee libjava/classpath/doc/api/Makefile.am 19edb5827739594e059bb413b4dac3d5 libjava/classpath/doc/api/Makefile.in 5ddd829b35fc94b0cdb119084089edb8 libjava/classpath/doc/cp-hacking.texinfo ! 3508934c2253cc61619e6adf664a474c libjava/classpath/doc/cp-tools.info bd0b452c48b32bc2b9e3023da6898eae libjava/classpath/doc/cp-tools.texinfo 3155d9bd9a7bf4aff2ff0dfe4a2cb878 libjava/classpath/doc/cp-vmintegration.texinfo ! e3ba4ee742635754144e29369677ed7f libjava/classpath/doc/gappletviewer.1 ! e576074b7c84913bd7f4f413e83c841d libjava/classpath/doc/gjar.1 ! dfcbd73d17a03c1efaa7afe7e01c87cf libjava/classpath/doc/gjarsigner.1 ! 5c6028093dd05988ef807c11ca977df3 libjava/classpath/doc/gjavah.1 ! 3047efdafce47cb7ca8817b1b69ac4f0 libjava/classpath/doc/gjdoc.1 ! 79901c8b506d4414b75db6b2b14c0978 libjava/classpath/doc/gkeytool.1 ! c9e0a97077911206f53f9f8fc89f3492 libjava/classpath/doc/gnative2ascii.1 ! d80129e7b5ccc0b9612552a4fe8e8892 libjava/classpath/doc/gorbd.1 ! 80295fd0afec0429af19265f24856ce8 libjava/classpath/doc/grmid.1 ! ca4df6a9ae3321bd84d027a06c9c85f1 libjava/classpath/doc/grmiregistry.1 ! d922e78f1301eae18a63535430e23241 libjava/classpath/doc/gserialver.1 ! 8f48eac0a8595b0d35d0c204f5bb4865 libjava/classpath/doc/gtnameserv.1 7e4e31659df1c7e815f9151958dceef2 libjava/classpath/doc/texi2pod.pl 01b23c87dcf82048a5958c8224653305 libjava/classpath/doc/texinfo.tex b1e0c0c30547d57d7a09b04d47c70b06 libjava/classpath/examples/.cvsignore --- 45247,45267 ---- b343eec566430e85d1f95c21438aa4ee libjava/classpath/doc/api/Makefile.am 19edb5827739594e059bb413b4dac3d5 libjava/classpath/doc/api/Makefile.in 5ddd829b35fc94b0cdb119084089edb8 libjava/classpath/doc/cp-hacking.texinfo ! f4a9e67c1ad17610477b6bc7be14bdd4 libjava/classpath/doc/cp-tools.info bd0b452c48b32bc2b9e3023da6898eae libjava/classpath/doc/cp-tools.texinfo 3155d9bd9a7bf4aff2ff0dfe4a2cb878 libjava/classpath/doc/cp-vmintegration.texinfo ! 07877a5a2180c76541acdf36dab0c0bf libjava/classpath/doc/gappletviewer.1 ! cb228d6c310838376527cfea0920e1a8 libjava/classpath/doc/gjar.1 ! 74a0933599abb1aad35e747f6a1c5b8a libjava/classpath/doc/gjarsigner.1 ! d96f3db830683f8bc7a7488086648f7b libjava/classpath/doc/gjavah.1 ! cf9c1561bcd560276fb7352ae9a7fcf9 libjava/classpath/doc/gjdoc.1 ! 4416f9bdb9d9df86fda07ec95a51f458 libjava/classpath/doc/gkeytool.1 ! bf1c6f471fe92d2de5042e2d6308e37c libjava/classpath/doc/gnative2ascii.1 ! 6fb6651236972c5cb6a4cddccd38da54 libjava/classpath/doc/gorbd.1 ! d4f853ae2ab667b59bc98b7ace4b4257 libjava/classpath/doc/grmid.1 ! f73073230bc9f5ae728ac16e11a2bcd8 libjava/classpath/doc/grmiregistry.1 ! 937dc3dad5574d8e721e6c5e3e7c4870 libjava/classpath/doc/gserialver.1 ! 4d9432c4fb35649678893f97241a6f8a libjava/classpath/doc/gtnameserv.1 7e4e31659df1c7e815f9151958dceef2 libjava/classpath/doc/texi2pod.pl 01b23c87dcf82048a5958c8224653305 libjava/classpath/doc/texinfo.tex b1e0c0c30547d57d7a09b04d47c70b06 libjava/classpath/examples/.cvsignore *************** d8d10c74e172ff2ef40b21e10914e3f6 libjav *** 57915,57922 **** 341ccadaf9bba9d9bc446635326950e2 libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c e9c4fd8541cfd89a3e5bdeb39c229778 libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c 153ada61ce28bb6b67e559b4bb516ea1 libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c ! 8053d243f8004897483b5f3f3d8e68bc libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c ! a6a9c0b9961e9c4a59573a80a7cdd320 libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c 376fa165f19fb26e5e249f6c52b9887e libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c 9370bc1eafb2adb549905ebcd241aa56 libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c 5d235723f63a7225e4e29cd76378a998 libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkRobotPeer.c --- 58047,58054 ---- 341ccadaf9bba9d9bc446635326950e2 libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c e9c4fd8541cfd89a3e5bdeb39c229778 libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c 153ada61ce28bb6b67e559b4bb516ea1 libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c ! 0a631ed21b7df9a4e52fa9e8a51a705c libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c ! 19b9c4bfd8e6ce4eb32b32e498da7ca8 libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c 376fa165f19fb26e5e249f6c52b9887e libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c 9370bc1eafb2adb549905ebcd241aa56 libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c 5d235723f63a7225e4e29cd76378a998 libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkRobotPeer.c *************** dd217172da39237791f66e9ea4b205a2 libjav *** 64200,64206 **** c41a894f10211ffd449acc8e308a717c libjava/java/lang/natClassLoader.cc 0428600f80b2d42232efa351faaad7ef libjava/java/lang/natEcosProcess.cc 38f692d64cb2de9c49202f41d4392825 libjava/java/lang/natMath.cc ! cd3a737f2db795fb827d767120fffa58 libjava/java/lang/natObject.cc b87604ae8576b8ce497e9dc051cd764e libjava/java/lang/natPosixProcess.cc f2c7421369552f1330283fe3ade709b0 libjava/java/lang/natRuntime.cc c0c7593d282ebd23f5deabd3a6843225 libjava/java/lang/natString.cc --- 64332,64338 ---- c41a894f10211ffd449acc8e308a717c libjava/java/lang/natClassLoader.cc 0428600f80b2d42232efa351faaad7ef libjava/java/lang/natEcosProcess.cc 38f692d64cb2de9c49202f41d4392825 libjava/java/lang/natMath.cc ! cfc03ddb152cd90794400aa413541878 libjava/java/lang/natObject.cc b87604ae8576b8ce497e9dc051cd764e libjava/java/lang/natPosixProcess.cc f2c7421369552f1330283fe3ade709b0 libjava/java/lang/natRuntime.cc c0c7593d282ebd23f5deabd3a6843225 libjava/java/lang/natString.cc *************** a40a8f1527e2703fe2f08bf7276d8591 libjav *** 67320,67326 **** 190bcad211f05f3f0cb0fe5db299d94e libjava/libgcj.ver 184718636f014ef2ca46d62ba8d6c3bf libjava/libgcj_bc.c e3eda01d9815f8d24aae2dbd89b68b06 libjava/libltdl/COPYING.LIB ! 307e57dc6482af590ec8e8fb6d7dbfa5 libjava/libltdl/ChangeLog 349267319e3d55dcf180a20f85394144 libjava/libltdl/Makefile.am 930c6383a37e6cc8e0625c9a281eda95 libjava/libltdl/Makefile.in 36da24f9facf00b349ea10dba3789d92 libjava/libltdl/README --- 67452,67458 ---- 190bcad211f05f3f0cb0fe5db299d94e libjava/libgcj.ver 184718636f014ef2ca46d62ba8d6c3bf libjava/libgcj_bc.c e3eda01d9815f8d24aae2dbd89b68b06 libjava/libltdl/COPYING.LIB ! c293ebd242688fd3be1d34cc40964d2c libjava/libltdl/ChangeLog 349267319e3d55dcf180a20f85394144 libjava/libltdl/Makefile.am 930c6383a37e6cc8e0625c9a281eda95 libjava/libltdl/Makefile.in 36da24f9facf00b349ea10dba3789d92 libjava/libltdl/README *************** d41d8cd98f00b204e9800998ecf8427e libjav *** 69013,69019 **** 434ac04eb066f5075299583492846410 libjava/verify.cc 355440a0c2fb5e16259d7ae381b37ed5 libjava/win32-threads.cc 434d5e5e91727dec004f0d1d1fab47ec libjava/win32.cc ! a150965395e59a2006347fd46e500dc4 libmudflap/ChangeLog 662781c9b6e72ed44b0aedce9d9524e0 libmudflap/Makefile.am 799a9b84a86476bbeff50297b7468483 libmudflap/Makefile.in 9883ed42b491d8aea83fdde90561cf2a libmudflap/acinclude.m4 --- 69145,69151 ---- 434ac04eb066f5075299583492846410 libjava/verify.cc 355440a0c2fb5e16259d7ae381b37ed5 libjava/win32-threads.cc 434d5e5e91727dec004f0d1d1fab47ec libjava/win32.cc ! bf589f467bf5c66d545c6bf73628b948 libmudflap/ChangeLog 662781c9b6e72ed44b0aedce9d9524e0 libmudflap/Makefile.am 799a9b84a86476bbeff50297b7468483 libmudflap/Makefile.in 9883ed42b491d8aea83fdde90561cf2a libmudflap/acinclude.m4 *************** a09323dfe6f2226c01aacc062220eaa1 libmud *** 69157,69163 **** 86b705472b17ac803b1be2e9048982f1 libmudflap/testsuite/libmudflap.cth/pass40-frag.c 725a94441658e42a6adf2add0a0a419d libmudflap/testsuite/libmudflap.cth/pass59-frag.c 60168171460c9277504005955b1ea1b8 libmudflap/testsuite/mfconfig.exp.in ! af34e8bcdd3b90396b13b790ac537460 libobjc/ChangeLog fce677f8c057e6fa2b5209250af9738d libobjc/Makefile.in e22f5980169af2600bcbde10f7f55855 libobjc/NXConstStr.m ebd4f0c403f8b4b1892a5aa3e7391192 libobjc/Object.m --- 69289,69295 ---- 86b705472b17ac803b1be2e9048982f1 libmudflap/testsuite/libmudflap.cth/pass40-frag.c 725a94441658e42a6adf2add0a0a419d libmudflap/testsuite/libmudflap.cth/pass59-frag.c 60168171460c9277504005955b1ea1b8 libmudflap/testsuite/mfconfig.exp.in ! 4dfd2d423cc1d4391e8fcebb2c79651a libobjc/ChangeLog fce677f8c057e6fa2b5209250af9738d libobjc/Makefile.in e22f5980169af2600bcbde10f7f55855 libobjc/NXConstStr.m ebd4f0c403f8b4b1892a5aa3e7391192 libobjc/Object.m *************** c89810c6ea3a03993cc1c5f22da1182b libobj *** 69215,69221 **** a81541e21652dbe712dc20c1ea737928 libobjc/sendmsg.c 0fe569ddc17d3743795232a33a84f4df libobjc/thr.c a916467b91076e631dd8edb7424769c7 libquadmath/COPYING.LIB ! 205d8dfc8be4da144c8fdb8fb230cb6c libquadmath/ChangeLog d7dbe0de939649d3db57b5ce9603d98a libquadmath/Makefile.am fe797182ebe0e18ac3aa279d6429e5c4 libquadmath/Makefile.in 9883ed42b491d8aea83fdde90561cf2a libquadmath/acinclude.m4 --- 69347,69353 ---- a81541e21652dbe712dc20c1ea737928 libobjc/sendmsg.c 0fe569ddc17d3743795232a33a84f4df libobjc/thr.c a916467b91076e631dd8edb7424769c7 libquadmath/COPYING.LIB ! 38a9c80978efee89acda032ab197e852 libquadmath/ChangeLog d7dbe0de939649d3db57b5ce9603d98a libquadmath/Makefile.am fe797182ebe0e18ac3aa279d6429e5c4 libquadmath/Makefile.in 9883ed42b491d8aea83fdde90561cf2a libquadmath/acinclude.m4 *************** aece970dd74d47d051257c4d4d1e91fa libqua *** 69223,69229 **** 74797a8a506b3e058beadc0eda9d122e libquadmath/config.h.in 1426f2b0802668139faa8c6d5a27287d libquadmath/configure a5f70e5a95e698cc9d0b1c8f1f16d8c5 libquadmath/configure.ac ! 1b47cdd1ea0aa57962a177a6c6a11c8b libquadmath/libquadmath.info ba3964c3553e5c57d4c9b5e03e931d47 libquadmath/libquadmath.texi 77280bb7ee423875e03d9c0d34527df6 libquadmath/libtool-version 8fcd0b1a8d6cee68dfc568a178af45fe libquadmath/math/acoshq.c --- 69355,69361 ---- 74797a8a506b3e058beadc0eda9d122e libquadmath/config.h.in 1426f2b0802668139faa8c6d5a27287d libquadmath/configure a5f70e5a95e698cc9d0b1c8f1f16d8c5 libquadmath/configure.ac ! 03ec49c358a7674311dd655ae883c6b4 libquadmath/libquadmath.info ba3964c3553e5c57d4c9b5e03e931d47 libquadmath/libquadmath.texi 77280bb7ee423875e03d9c0d34527df6 libquadmath/libtool-version 8fcd0b1a8d6cee68dfc568a178af45fe libquadmath/math/acoshq.c *************** e766022f8615b72cbc38335d262e9d3d libqua *** 69334,69340 **** 5172fac7061ec0ef8069183497c424c6 libquadmath/strtod/strtod_l.c da808e110fc09ebd41ebd405790a70df libquadmath/strtod/strtoflt128.c d15a18f7c46ba2add6148edc5b7563c0 libquadmath/strtod/tens_in_limb.c ! 1c5814e59c3238d10433ab489ee70ccb libssp/ChangeLog 01d9954c400db04da1b8705029e6d9d9 libssp/Makefile.am 6f9651cc4e77f9e7629b0142b05a90e0 libssp/Makefile.in 8b0dd0c2a8b446bf5577a8562ad19885 libssp/aclocal.m4 --- 69466,69472 ---- 5172fac7061ec0ef8069183497c424c6 libquadmath/strtod/strtod_l.c da808e110fc09ebd41ebd405790a70df libquadmath/strtod/strtoflt128.c d15a18f7c46ba2add6148edc5b7563c0 libquadmath/strtod/tens_in_limb.c ! b4e43c0280e38f5ef497c7d427ba1485 libssp/ChangeLog 01d9954c400db04da1b8705029e6d9d9 libssp/Makefile.am 6f9651cc4e77f9e7629b0142b05a90e0 libssp/Makefile.in 8b0dd0c2a8b446bf5577a8562ad19885 libssp/aclocal.m4 *************** aeb2f84c5e8ba3215469d507bd2efe57 libssp *** 69363,69369 **** e9ab923d2562bf5f5be6883dfb9f0184 libssp/strncpy-chk.c 5e0d8b8a766c31b12354baec1b7a159c libssp/vsnprintf-chk.c f56ab1f8922a16f7e9e4f5270ae1e34e libssp/vsprintf-chk.c ! f231e29775091df208a333e9767a13d1 libstdc++-v3/ChangeLog 0cda0576312959181333fb6113d11fca libstdc++-v3/ChangeLog-1998 7ff71dd25a4fdbb908c1bfffea126a10 libstdc++-v3/ChangeLog-1999 3c2968659337a7726b4d66af48d049b6 libstdc++-v3/ChangeLog-2000 --- 69495,69501 ---- e9ab923d2562bf5f5be6883dfb9f0184 libssp/strncpy-chk.c 5e0d8b8a766c31b12354baec1b7a159c libssp/vsnprintf-chk.c f56ab1f8922a16f7e9e4f5270ae1e34e libssp/vsprintf-chk.c ! e23746fd4272c5309586519999dc0b4b libstdc++-v3/ChangeLog 0cda0576312959181333fb6113d11fca libstdc++-v3/ChangeLog-1998 7ff71dd25a4fdbb908c1bfffea126a10 libstdc++-v3/ChangeLog-1999 3c2968659337a7726b4d66af48d049b6 libstdc++-v3/ChangeLog-2000 *************** ecff5773edf3673f17fbf3a3c23c9c3b libstd *** 69381,69387 **** 83dc613ee68ef0f16c1a11a3aaef0647 libstdc++-v3/Makefile.am 07e12dbc40e441f236779c1ca7cc2fd3 libstdc++-v3/Makefile.in f372af73db4ac0ad88e43199e1f29e08 libstdc++-v3/README ! 6eb84856d34812f47147976f9ce13f59 libstdc++-v3/acinclude.m4 8740082679d696cb8e212b6106b77cff libstdc++-v3/aclocal.m4 7a533bb461d23c71218abdf44c7fcade libstdc++-v3/config.h.in bd56661914aae00742fc51169de34d10 libstdc++-v3/config/abi/compatibility.h --- 69513,69519 ---- 83dc613ee68ef0f16c1a11a3aaef0647 libstdc++-v3/Makefile.am 07e12dbc40e441f236779c1ca7cc2fd3 libstdc++-v3/Makefile.in f372af73db4ac0ad88e43199e1f29e08 libstdc++-v3/README ! 8f89312bf83accc89635d931537de169 libstdc++-v3/acinclude.m4 8740082679d696cb8e212b6106b77cff libstdc++-v3/aclocal.m4 7a533bb461d23c71218abdf44c7fcade libstdc++-v3/config.h.in bd56661914aae00742fc51169de34d10 libstdc++-v3/config/abi/compatibility.h *************** f63ed9df202b75615d36fa19ccd6a209 libstd *** 69481,69487 **** 71cae73249dca08624693489a810de30 libstdc++-v3/config/os/bsd/darwin/ctype_base.h a2dedeb8b5a626e04a033d193c974f60 libstdc++-v3/config/os/bsd/darwin/ctype_configure_char.cc 333ef34aba7619ab2b2388691a22a567 libstdc++-v3/config/os/bsd/darwin/ctype_inline.h ! b05e342a2e816c8244ffb2b969ecf15a libstdc++-v3/config/os/bsd/darwin/os_defines.h 96acc6c320b15094b860bd727d99a90f libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver 5e8ade3138d5ab3070b71f0b13d5a433 libstdc++-v3/config/os/bsd/freebsd/ctype_base.h a2dedeb8b5a626e04a033d193c974f60 libstdc++-v3/config/os/bsd/freebsd/ctype_configure_char.cc --- 69613,69619 ---- 71cae73249dca08624693489a810de30 libstdc++-v3/config/os/bsd/darwin/ctype_base.h a2dedeb8b5a626e04a033d193c974f60 libstdc++-v3/config/os/bsd/darwin/ctype_configure_char.cc 333ef34aba7619ab2b2388691a22a567 libstdc++-v3/config/os/bsd/darwin/ctype_inline.h ! 18889d8e809d96ab217822f7432d04e4 libstdc++-v3/config/os/bsd/darwin/os_defines.h 96acc6c320b15094b860bd727d99a90f libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver 5e8ade3138d5ab3070b71f0b13d5a433 libstdc++-v3/config/os/bsd/freebsd/ctype_base.h a2dedeb8b5a626e04a033d193c974f60 libstdc++-v3/config/os/bsd/freebsd/ctype_configure_char.cc *************** aa6d26165c387eb170c6c7881ab70d59 libstd *** 69569,69581 **** 1273764cd133c402d2d3f22cf2913af5 libstdc++-v3/doc/doxygen/tables.html d61c9f4bb9d4359cfcd916d10e7773d6 libstdc++-v3/doc/doxygen/user.cfg.in 66e139590a163a3e9d632f33fbe1d1b3 libstdc++-v3/doc/html/README ! 2666ea13e7c42cc5b2bae5958b9bcfa3 libstdc++-v3/doc/html/api.html ! 1e17f94129ad16c6b316d73a456a8bca libstdc++-v3/doc/html/bk02.html ! 5722196f451e0f067266fb7d2b6d1a8e libstdc++-v3/doc/html/bk03.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 ! 8324d6539caf31eda0145527ee2d3447 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 --- 69701,69713 ---- 1273764cd133c402d2d3f22cf2913af5 libstdc++-v3/doc/doxygen/tables.html d61c9f4bb9d4359cfcd916d10e7773d6 libstdc++-v3/doc/doxygen/user.cfg.in 66e139590a163a3e9d632f33fbe1d1b3 libstdc++-v3/doc/html/README ! 8de8a67baf08b57c3f2948b36055a8d8 libstdc++-v3/doc/html/api.html ! c6ae6a6ab06d4e9e5995819d3228a716 libstdc++-v3/doc/html/bk02.html ! 8e3c470c78276cec7957200e486b9ac0 libstdc++-v3/doc/html/bk03.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 ! 60377ff04d8e1b9cf6592db00635373c 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 *************** d7249eb4d31bd107d0b09ea3c80cb723 libstd *** 69655,69768 **** 1d86b338a316806c80b250eb132ac6dd libstdc++-v3/doc/html/images/pbds_tree_text_lor_find.png 33bc39e8f2d47f3d490d7ca7d4832b43 libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png df705f3839120dcb896e9839cf3404d0 libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png ! 514b3dec1112aa1b64a6c3e0dc2f4802 libstdc++-v3/doc/html/index.html ! 72d070eb896b1731bd1a082d83191bcc libstdc++-v3/doc/html/manual/abi.html ! 5a205870e52a176aa89c80358375ac54 libstdc++-v3/doc/html/manual/algorithms.html ! 280276a2b4d7b4d7366b3ba6fe061693 libstdc++-v3/doc/html/manual/api.html ! 404c6c310d29b64d609ca938dbbe1ad2 libstdc++-v3/doc/html/manual/appendix_contributing.html ! ed64e710e452f4296809d9574997c32a libstdc++-v3/doc/html/manual/appendix_free.html ! d0641b18cd46a0ae060a8ca6d8894bff libstdc++-v3/doc/html/manual/appendix_gfdl.html ! 9c660db967b841c866ce46b154ee4430 libstdc++-v3/doc/html/manual/appendix_gpl.html ! a33478ebe06775e51228d7ed4a3d5d89 libstdc++-v3/doc/html/manual/appendix_porting.html ! 9def29ae314c0729165a917bfb4c173f libstdc++-v3/doc/html/manual/associative.html ! ed4df33f2a69ec4b08131c9bd2a12cc1 libstdc++-v3/doc/html/manual/atomics.html ! b562b2e8d071113a890dbc3133e7a719 libstdc++-v3/doc/html/manual/backwards.html ! aab2b31e46e0f2d338c1a1b4c668a2d5 libstdc++-v3/doc/html/manual/bitmap_allocator.html ! 84abd43150d829a5fa5302d7c55811ed libstdc++-v3/doc/html/manual/bk01pt02.html ! 0b66f49e7ada57df494277457abbe497 libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html ! a1cb050ebbd7b5702dc96dc6a6353b50 libstdc++-v3/doc/html/manual/bk01pt03ch17s02.html ! 0e8d5e00698fc2abd95898f812f5a1c7 libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html ! d81231be7e6fa051fe8722fcdb7425a7 libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html ! ad3cb40b14bda4b60bf4889cae625c15 libstdc++-v3/doc/html/manual/bk01pt03ch18s02.html ! f25673cf981edf41f75601b2c6bac28a libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html ! 60066d240c7b65b92413c6f387bde71b libstdc++-v3/doc/html/manual/bk01pt03ch18s04.html ! f7abb10f93e1d0aeec0131efcf13f430 libstdc++-v3/doc/html/manual/bk01pt03ch18s05.html ! a57cee8da525b4e174b980844e0161fd libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html ! 2f17b9cefe60ebd35ddc742b803d1849 libstdc++-v3/doc/html/manual/bk01pt03ch19s03.html ! 755230b464bcfeb2c2969867c60d31e3 libstdc++-v3/doc/html/manual/bk01pt03ch19s04.html ! 20445c42c3d1f1a8b3a3c59429985142 libstdc++-v3/doc/html/manual/bk01pt03ch19s05.html ! 3633afad5ab7efa0f755b11c9338664f libstdc++-v3/doc/html/manual/bk01pt03ch19s06.html ! 1654b0ca6e7abc62d4c8a4d3c04d560f libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html ! 2c3f525f9e4de3c45d2b065f51442611 libstdc++-v3/doc/html/manual/bk01pt03ch20s02.html ! 125499a1e81fb033d115ee2689cd4dcf libstdc++-v3/doc/html/manual/bk01pt03ch20s03.html ! 85c1546bd7b7ab8d2f1de3e38246c45e libstdc++-v3/doc/html/manual/bk01pt03ch20s04.html ! 3fe40638b93998e5f6c1340fe548a4a3 libstdc++-v3/doc/html/manual/bk01pt03ch20s05.html ! 278d6c98562e0f51de4187f63a709883 libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html ! 702bd998425934d7f051c6b5e9dceceb libstdc++-v3/doc/html/manual/bk01pt03ch23s02.html ! 34719f397d0dcc9a59c3373426101de0 libstdc++-v3/doc/html/manual/bk01pt03ch30s02.html ! 3f516efa31a7df6f44fc7bc80b9b62ea libstdc++-v3/doc/html/manual/bk01pt03ch30s03.html ! 7e8fd1ac6df4ff5638313d21f2512116 libstdc++-v3/doc/html/manual/bk01pt03pr01.html ! 50ddefdc255380b3397de0e81192d0cd libstdc++-v3/doc/html/manual/bk01pt04.html ! c9c6f40973b949ab9507cf2ea63a1ced libstdc++-v3/doc/html/manual/bugs.html ! b7e2bac18868d9b440768779659edb6c libstdc++-v3/doc/html/manual/concurrency.html ! cc655b789ef84c7d89da9198d864fa8c libstdc++-v3/doc/html/manual/configure.html ! 920aa19e887ca78b6924787b873cf42b libstdc++-v3/doc/html/manual/containers.html ! c2098a6ed23c8c5b0ee4744eaa97a139 libstdc++-v3/doc/html/manual/containers_and_c.html ! 8b1fbb27589d3da49c850a85e00b15e5 libstdc++-v3/doc/html/manual/debug.html ! 1ba4f8d73e070e364c937d5d03d27523 libstdc++-v3/doc/html/manual/debug_mode.html ! e148d0b4998d74c9921d5ac246ea4a2d libstdc++-v3/doc/html/manual/diagnostics.html ! 3385938f90f16b0904e0cdc627bc164b libstdc++-v3/doc/html/manual/documentation_hacking.html ! 8b7fecd8d64c2145135709bb96fc6b15 libstdc++-v3/doc/html/manual/dynamic_memory.html ! b0539b2b1bd8e7cfc3f92b64bd7c5c5f libstdc++-v3/doc/html/manual/ext_algorithms.html ! 22b331c15626c932347c1f08649941ed libstdc++-v3/doc/html/manual/ext_compile_checks.html ! 5d001b71d5be31423b306dff51582acd libstdc++-v3/doc/html/manual/ext_concurrency.html ! 3bd3e4f65676e39438ddbe4e6ffd49dc libstdc++-v3/doc/html/manual/ext_containers.html ! 4bc548a7c25b329c8b606e476a5a1a98 libstdc++-v3/doc/html/manual/ext_demangling.html ! c992125be3a2aab19a02a31064090c98 libstdc++-v3/doc/html/manual/ext_io.html ! 80874962efc850887230b10f442b8737 libstdc++-v3/doc/html/manual/ext_iterators.html ! 24bf2391952579070f5766b9d11957ff libstdc++-v3/doc/html/manual/ext_numerics.html ! 2319ed236d3cbfc57cb9ea9fcef9e322 libstdc++-v3/doc/html/manual/ext_utilities.html ! e542e8087275c05f5edec64c1d32cf1b libstdc++-v3/doc/html/manual/extensions.html ! 81e7788aaa01cb1064e3acbb053fd1a6 libstdc++-v3/doc/html/manual/facets.html ! 55c7486b897ffba6533665746dd25ccb libstdc++-v3/doc/html/manual/fstreams.html ! 0e2470926ae25bad3b5ed8f2103340bc libstdc++-v3/doc/html/manual/generalized_numeric_operations.html ! c78ae74963d92787ab89f8a9648ca5e4 libstdc++-v3/doc/html/manual/index.html ! 2062f6c4fa594ee137304901a1aa157a libstdc++-v3/doc/html/manual/internals.html ! 43712c08dd6e6bd45b3606bf2cf85a99 libstdc++-v3/doc/html/manual/intro.html ! 5699d3b81f34c003e351fcdce0a0e08f libstdc++-v3/doc/html/manual/io.html ! a5ff37d7f46f2c9092c171039352fd22 libstdc++-v3/doc/html/manual/io_and_c.html ! a04649ce57a82be2b7869e59b9a9b1d7 libstdc++-v3/doc/html/manual/iterators.html ! 358d1566d6c95505129f0f6bd08f9012 libstdc++-v3/doc/html/manual/license.html ! e4d179a9720ec683a29613fb8aa3ef12 libstdc++-v3/doc/html/manual/localization.html ! 607aa00d629810bdb0009196cf669667 libstdc++-v3/doc/html/manual/make.html ! bb5858a54a8c66c5d5a1fffb4c8a2457 libstdc++-v3/doc/html/manual/memory.html ! ffb07800391e4bbaa1bc8b77f9472d02 libstdc++-v3/doc/html/manual/mt_allocator.html ! ccd860d355053b0fdde0c893eeb71e27 libstdc++-v3/doc/html/manual/numerics.html ! 188b1506b35539cbc893063889b651f2 libstdc++-v3/doc/html/manual/numerics_and_c.html ! bbc3043a301723bd6f0f38dcea50849a libstdc++-v3/doc/html/manual/pairs.html ! 9facd2124427771505969bb632da3e75 libstdc++-v3/doc/html/manual/parallel_mode.html ! 19476f7ce3d8cb8000b087dc784edcc1 libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html ! 94ab038dd418770b1b24d3aba612255d libstdc++-v3/doc/html/manual/policy_data_structures.html ! 02164b95fe4c70754e46381f56839e2a libstdc++-v3/doc/html/manual/policy_data_structures_ack.html ! 84935dfb343e3b7fff3246194a438991 libstdc++-v3/doc/html/manual/policy_data_structures_design.html ! 6f3d90e35a1d5026771705e5c18db4fc libstdc++-v3/doc/html/manual/policy_data_structures_using.html ! b2d2dc9475f50d8cfa2ecf3dfa30a7eb libstdc++-v3/doc/html/manual/profile_mode.html ! a1c3d46bf5a8af6a484e74539326b1ce libstdc++-v3/doc/html/manual/setup.html ! a64c9d887190beb1ee7e8a0badce0a2e libstdc++-v3/doc/html/manual/source_code_style.html ! a9ce1ee05a70c5030405ba132a934672 libstdc++-v3/doc/html/manual/source_design_notes.html ! 90090dd3f13d987c4fc90238660d3ce2 libstdc++-v3/doc/html/manual/source_organization.html ! ea2f9d8b62e3f1fa4c2e6fb818948141 libstdc++-v3/doc/html/manual/status.html ! 6503a69c17254788ed9b3ff0b2ec74c3 libstdc++-v3/doc/html/manual/streambufs.html ! cf63991998c16966e4dde4f210079e3d libstdc++-v3/doc/html/manual/strings.html ! 3a843791eabc3995cc77d4ef18c74872 libstdc++-v3/doc/html/manual/stringstreams.html ! 0129ccd395dff57bef04fad61160d95d libstdc++-v3/doc/html/manual/support.html ! 3fdcfedf504872b64bc11513d3f61f1a libstdc++-v3/doc/html/manual/termination.html ! cca4c5cb1001cb2b5cedd04cc4919fae libstdc++-v3/doc/html/manual/test.html ! 3d3a2e658a275fab4db9172c56d0f902 libstdc++-v3/doc/html/manual/traits.html ! 1a34d1564ed6296d620d22164c2e2322 libstdc++-v3/doc/html/manual/using.html ! 80baf1201f81b9615a3e009b446fe9ab libstdc++-v3/doc/html/manual/using_concurrency.html ! 5b291e31eb1b7dd5d397245499f81ffd libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html ! 51c0ccf2ee0fcc71c6da5ca65d955eb8 libstdc++-v3/doc/html/manual/using_exceptions.html ! 13427caf6be86be7640f4356024cdf8a libstdc++-v3/doc/html/manual/using_headers.html ! 3b04c2ea51ceebded068363fd097628b libstdc++-v3/doc/html/manual/using_macros.html ! c2dfd68d388e3bfac3db5cf4bee29e02 libstdc++-v3/doc/html/manual/using_namespaces.html ! be65809fed7b0c6b6ba7002529a026a0 libstdc++-v3/doc/html/manual/utilities.html 02efc67c40519a69579fd7146ff1bbd2 libstdc++-v3/doc/xml/api.xml 0b177c199fb448ad3630d15bdc3cbb19 libstdc++-v3/doc/xml/authors.xml f5a41d4f7585b850b3182fc5f4888f93 libstdc++-v3/doc/xml/book.txml 62b664d76562440a469023d28dc776ed libstdc++-v3/doc/xml/chapter.txml a4a179169349707415ec9e4952a0a775 libstdc++-v3/doc/xml/class.txml ! dfb4ec77e78ac0ab967ee1ea26981c2f 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 --- 69787,69900 ---- 1d86b338a316806c80b250eb132ac6dd libstdc++-v3/doc/html/images/pbds_tree_text_lor_find.png 33bc39e8f2d47f3d490d7ca7d4832b43 libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png df705f3839120dcb896e9839cf3404d0 libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png ! efb6fbeae74a904c7ff810c179e12004 libstdc++-v3/doc/html/index.html ! a21c500220b2547f855c484fb4eb9e83 libstdc++-v3/doc/html/manual/abi.html ! d9ace747842ef059264c5e5dad563729 libstdc++-v3/doc/html/manual/algorithms.html ! 84cd083b9d540f4456e147eab41f0e24 libstdc++-v3/doc/html/manual/api.html ! 754fc8da0063c9f086142d23dc99ca34 libstdc++-v3/doc/html/manual/appendix_contributing.html ! dd669de65204596fed8479b866f3083c libstdc++-v3/doc/html/manual/appendix_free.html ! d4b73b9920c7c13eee3165e0dd762ab5 libstdc++-v3/doc/html/manual/appendix_gfdl.html ! 0edc0636da5d906dfb8b5e686dbb8369 libstdc++-v3/doc/html/manual/appendix_gpl.html ! 10c415d3be957821490da331eb0565df libstdc++-v3/doc/html/manual/appendix_porting.html ! f2e703b9d898a4f9971bdb8367dae48c libstdc++-v3/doc/html/manual/associative.html ! 90ca88f7fca0ed384d6557795514302a libstdc++-v3/doc/html/manual/atomics.html ! 1c13475a7a378c2409b3c59d74acb93e libstdc++-v3/doc/html/manual/backwards.html ! 4de0d59030bb781ebc9d5769b4374d06 libstdc++-v3/doc/html/manual/bitmap_allocator.html ! c7e8865457db536bc867e6ee84dff6b4 libstdc++-v3/doc/html/manual/bk01pt02.html ! c46012ad49b57fbd335bbd67aa43312c libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html ! ca76847ea6575adca1947e32e0073b21 libstdc++-v3/doc/html/manual/bk01pt03ch17s02.html ! cb9c7bb2f2f8ccf4c66ad695a7795cfd libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html ! 21a561fb665ce8cdc3cc49e4503ad5cc libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html ! c9738ba4643f6a36edd9bac8ae822ba6 libstdc++-v3/doc/html/manual/bk01pt03ch18s02.html ! 9555237bc959590fd41ee5f2e315703f libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html ! 84d76a4f18f40bab207bbdd51c10ca39 libstdc++-v3/doc/html/manual/bk01pt03ch18s04.html ! 7cd7f3f6f7af66371e2d5e54d009eb4e libstdc++-v3/doc/html/manual/bk01pt03ch18s05.html ! 4dd0d7fa8c1dfdce39ca2b3f4138103e libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html ! 398a3b8e80fff4244f562c8eed49651f libstdc++-v3/doc/html/manual/bk01pt03ch19s03.html ! 065a62f053738917bd2727f3c1cd780e libstdc++-v3/doc/html/manual/bk01pt03ch19s04.html ! 5c2bd74080a36614da23536837077365 libstdc++-v3/doc/html/manual/bk01pt03ch19s05.html ! 701f0c57cd93f08504477cf29eab3316 libstdc++-v3/doc/html/manual/bk01pt03ch19s06.html ! 5d6555d40f58765cb5b5ce84e84976c4 libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html ! 2287a344a5431d004fc73adb21d509fd libstdc++-v3/doc/html/manual/bk01pt03ch20s02.html ! f415ee514cdc1c7e0c490e74dcae05c7 libstdc++-v3/doc/html/manual/bk01pt03ch20s03.html ! 015b763e49e42d9b23fc1f521597229c libstdc++-v3/doc/html/manual/bk01pt03ch20s04.html ! fe6c2a933c241d6467562cf2db5f1bc1 libstdc++-v3/doc/html/manual/bk01pt03ch20s05.html ! ba83711fc92028793a605232b3bd7f66 libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html ! 2ae3444d25f8cf3b570ed964125fd3d8 libstdc++-v3/doc/html/manual/bk01pt03ch23s02.html ! d770f3e4129db850e7b51c89898119c2 libstdc++-v3/doc/html/manual/bk01pt03ch30s02.html ! bc4d9f349369948eb8f12fa119ac6468 libstdc++-v3/doc/html/manual/bk01pt03ch30s03.html ! 7d7a8c876372b92d479ebf3f15d97ca3 libstdc++-v3/doc/html/manual/bk01pt03pr01.html ! 7139a1e8be14c369f54b6926d9f79ddc libstdc++-v3/doc/html/manual/bk01pt04.html ! d51d2a43772a6c98052c0ab6efd487bf libstdc++-v3/doc/html/manual/bugs.html ! 4241c413db0378898638c9fc3cfad502 libstdc++-v3/doc/html/manual/concurrency.html ! b31d3e80888095b929d372971f5c47f8 libstdc++-v3/doc/html/manual/configure.html ! 05340f6d3252e587657d64367418d5a7 libstdc++-v3/doc/html/manual/containers.html ! ead4d68c4fb14bf45f117430154f9d3e libstdc++-v3/doc/html/manual/containers_and_c.html ! be0675f16454fdff0df663be5289529a libstdc++-v3/doc/html/manual/debug.html ! 8c1049dcbaa87f6076d1507c51ca5538 libstdc++-v3/doc/html/manual/debug_mode.html ! 18d48411b11548048682b4ed65317bec libstdc++-v3/doc/html/manual/diagnostics.html ! 3d028bff585a2080ebfabf4d3fe64dda libstdc++-v3/doc/html/manual/documentation_hacking.html ! cdf91228fbb22620d232d919e3f4453d libstdc++-v3/doc/html/manual/dynamic_memory.html ! c5bf6c1432a5a7c5b4310b84ef5ef82f libstdc++-v3/doc/html/manual/ext_algorithms.html ! 966d31fd7d28fa68197d702f60d13d2f libstdc++-v3/doc/html/manual/ext_compile_checks.html ! 0bd6227f5ed0650427d0d98412a82697 libstdc++-v3/doc/html/manual/ext_concurrency.html ! 6c32431b649a02386cd36cc0b3fdb328 libstdc++-v3/doc/html/manual/ext_containers.html ! 3794e5a38db09c38cdf2f5d186c0b1ad libstdc++-v3/doc/html/manual/ext_demangling.html ! 8f30628fb8d77ab76d09eaf59adcd258 libstdc++-v3/doc/html/manual/ext_io.html ! 376c0d35b96d2f71a1c0986ace51b6d4 libstdc++-v3/doc/html/manual/ext_iterators.html ! b78ccba01cc57d36ba4bb45d61f2d298 libstdc++-v3/doc/html/manual/ext_numerics.html ! 54b857004e68fa8f4aa4404142effc4e libstdc++-v3/doc/html/manual/ext_utilities.html ! 6212ea722f9a27c90c0de523f2eaa236 libstdc++-v3/doc/html/manual/extensions.html ! e719cef662b18ec64e293b933525af7d libstdc++-v3/doc/html/manual/facets.html ! 2cab59a8d3259341dccb0bb91c406bae libstdc++-v3/doc/html/manual/fstreams.html ! c8d919e48574cbe7dc23f8ea18e9dd63 libstdc++-v3/doc/html/manual/generalized_numeric_operations.html ! b74a2d813e8a94ac692e626e62664c96 libstdc++-v3/doc/html/manual/index.html ! 13142f0d96941fd9c81e46db9b8eed2e libstdc++-v3/doc/html/manual/internals.html ! 24511f44e5f2430e955ba7d729489178 libstdc++-v3/doc/html/manual/intro.html ! 5976a309ae97bf12064dcb0e3a91c19a libstdc++-v3/doc/html/manual/io.html ! 2a82d63509a5f37f20370c4afe6ac514 libstdc++-v3/doc/html/manual/io_and_c.html ! 21beb586fd98adedd4e077af734ed048 libstdc++-v3/doc/html/manual/iterators.html ! d3a3eb89d5e23a412dcf6294a2ad075c libstdc++-v3/doc/html/manual/license.html ! ee16cf52b6b5c4988db3ddd4b026e990 libstdc++-v3/doc/html/manual/localization.html ! a91ff1055bc6a79d6f1c7418c8b7e145 libstdc++-v3/doc/html/manual/make.html ! e3a340adf6c0a6d196de9152a18476e1 libstdc++-v3/doc/html/manual/memory.html ! 4d9dfb424499342d3068b4677012bd0f libstdc++-v3/doc/html/manual/mt_allocator.html ! 0916debe884f84e737655e0023f34efd libstdc++-v3/doc/html/manual/numerics.html ! 0f76d4c274be39950693de30cea68e4a libstdc++-v3/doc/html/manual/numerics_and_c.html ! 76f197b3007c33657c056b6e1c95941c libstdc++-v3/doc/html/manual/pairs.html ! 003587adf92b8ec008e6b6994090ed4f libstdc++-v3/doc/html/manual/parallel_mode.html ! ce2b0157cde13a4668cb98269cab158d libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html ! b31ec931aba8fcc3de72d740a72781e9 libstdc++-v3/doc/html/manual/policy_data_structures.html ! e644a4ec893e80cfb200eecb600155e9 libstdc++-v3/doc/html/manual/policy_data_structures_ack.html ! 37e8cff4e34c15b585776d9dacb91012 libstdc++-v3/doc/html/manual/policy_data_structures_design.html ! 4e8723cbebd0877987d39a335e94879f libstdc++-v3/doc/html/manual/policy_data_structures_using.html ! 1c68072bee6f2e77d44e7ebee5a36573 libstdc++-v3/doc/html/manual/profile_mode.html ! 7b2b01a7fcc90b06ea7482804f481ac5 libstdc++-v3/doc/html/manual/setup.html ! 3da06d7b55c640bfa9c4d267c238fc41 libstdc++-v3/doc/html/manual/source_code_style.html ! 2d44b6794eef1431709c4cffad31cdad libstdc++-v3/doc/html/manual/source_design_notes.html ! 7b7c420c321e506fab82c112700f6e2b libstdc++-v3/doc/html/manual/source_organization.html ! c04860e72cafc86cfbb652248b83ef0f libstdc++-v3/doc/html/manual/status.html ! 9224d7d9750eadbe9917fcf843c42e9d libstdc++-v3/doc/html/manual/streambufs.html ! fcc7371976dd8036dd056d0dad40e90a libstdc++-v3/doc/html/manual/strings.html ! 2c1d09a6147a1e1e9ff8ad9e2c7a3c2e libstdc++-v3/doc/html/manual/stringstreams.html ! 80e417cc8374458efb83804d8852ae44 libstdc++-v3/doc/html/manual/support.html ! cc61624afa6ac57241de4027cd162896 libstdc++-v3/doc/html/manual/termination.html ! 2fc762ddb3b1387f78fa02ec5470a868 libstdc++-v3/doc/html/manual/test.html ! 4fd1a31d7e8a9b5a669c9f40dd607d84 libstdc++-v3/doc/html/manual/traits.html ! 54799255392fe33ef1cd3b9caf6b590f libstdc++-v3/doc/html/manual/using.html ! 2dd69e789cd909a9a2da20b104cdd0f8 libstdc++-v3/doc/html/manual/using_concurrency.html ! 8ce156f74d9b17c43c62532fbe5239b7 libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html ! c12cdbd46ec9abf709acb104d381b7f5 libstdc++-v3/doc/html/manual/using_exceptions.html ! 0569df790af3009a19a707b5d5bc882a libstdc++-v3/doc/html/manual/using_headers.html ! cb08a75dd6d040ea0d5606e481df5c4d libstdc++-v3/doc/html/manual/using_macros.html ! 4b3013453c6fdc72df8125d84f0ccb36 libstdc++-v3/doc/html/manual/using_namespaces.html ! c8714235178eb2104bafc6e9834476b0 libstdc++-v3/doc/html/manual/utilities.html 02efc67c40519a69579fd7146ff1bbd2 libstdc++-v3/doc/xml/api.xml 0b177c199fb448ad3630d15bdc3cbb19 libstdc++-v3/doc/xml/authors.xml f5a41d4f7585b850b3182fc5f4888f93 libstdc++-v3/doc/xml/book.txml 62b664d76562440a469023d28dc776ed libstdc++-v3/doc/xml/chapter.txml a4a179169349707415ec9e4952a0a775 libstdc++-v3/doc/xml/class.txml ! 243cd36146e64e08c5ddbb70ccabb01f 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 *************** cd9d0070a54f5180beb42829c255932e libstd *** 69980,69988 **** f7bc7412650057dc85ae144078a7c41f libstdc++-v3/doc/xml/manual/prerequisites.xml ec0a2ab14fcb8bd2d18604964a56f3c7 libstdc++-v3/doc/xml/manual/profile_mode.xml 0013818156240fa2893715d92a32e393 libstdc++-v3/doc/xml/manual/shared_ptr.xml ! 42ce826f2f549873e77bb96753951c68 libstdc++-v3/doc/xml/manual/spine.xml 17eb20faf63562b3e616d64670e8fc4c libstdc++-v3/doc/xml/manual/status_cxx1998.xml ! d9e739f4b7f1819d3cd19f723c8c51d0 libstdc++-v3/doc/xml/manual/status_cxx2011.xml 3fae559d77037a93c34321e7d673ce5e libstdc++-v3/doc/xml/manual/status_cxxtr1.xml f55f4fbd212290011476e99087e1dc63 libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml 125dc7b3d683e974096ab374ce6c6121 libstdc++-v3/doc/xml/manual/strings.xml --- 70112,70120 ---- f7bc7412650057dc85ae144078a7c41f libstdc++-v3/doc/xml/manual/prerequisites.xml ec0a2ab14fcb8bd2d18604964a56f3c7 libstdc++-v3/doc/xml/manual/profile_mode.xml 0013818156240fa2893715d92a32e393 libstdc++-v3/doc/xml/manual/shared_ptr.xml ! 00ea9242d19f83efcce3f133f7bbb3a8 libstdc++-v3/doc/xml/manual/spine.xml 17eb20faf63562b3e616d64670e8fc4c libstdc++-v3/doc/xml/manual/status_cxx1998.xml ! 6b4e16ba0a0976e741eb05f883353883 libstdc++-v3/doc/xml/manual/status_cxx2011.xml 3fae559d77037a93c34321e7d673ce5e libstdc++-v3/doc/xml/manual/status_cxxtr1.xml f55f4fbd212290011476e99087e1dc63 libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml 125dc7b3d683e974096ab374ce6c6121 libstdc++-v3/doc/xml/manual/strings.xml *************** b16b680d77efaf03285048699d4b1c3f libstd *** 70008,70017 **** 11e7cd064ee1fcece52c002bec0fa8b2 libstdc++-v3/include/bits/algorithmfwd.h 4391e10ac8b393b36b542e8519f4c85e libstdc++-v3/include/bits/alloc_traits.h fd8b01aadff20bd962ac0e0a21b95d1d libstdc++-v3/include/bits/allocator.h ! 71ebe5bf53a0b0905f7efebb6f4d8fd7 libstdc++-v3/include/bits/atomic_base.h c9fe5874dd99704a1dbcde62297b4e0f libstdc++-v3/include/bits/basic_ios.h 5e008e8f2d0566075283ca632208f73a libstdc++-v3/include/bits/basic_ios.tcc ! 049697492776b27f4eabf9b6b5deb7c8 libstdc++-v3/include/bits/basic_string.h b93ecccfbbb912591cb242b452b4fa3e libstdc++-v3/include/bits/basic_string.tcc da93a47ddcf68d594191e3abd92bc98a libstdc++-v3/include/bits/boost_concept_check.h 9339c3e8109fdc59bae4a20d09b4d18d libstdc++-v3/include/bits/c++0x_warning.h --- 70140,70149 ---- 11e7cd064ee1fcece52c002bec0fa8b2 libstdc++-v3/include/bits/algorithmfwd.h 4391e10ac8b393b36b542e8519f4c85e libstdc++-v3/include/bits/alloc_traits.h fd8b01aadff20bd962ac0e0a21b95d1d libstdc++-v3/include/bits/allocator.h ! 0320ed137044da0a384c9469be3416b5 libstdc++-v3/include/bits/atomic_base.h c9fe5874dd99704a1dbcde62297b4e0f libstdc++-v3/include/bits/basic_ios.h 5e008e8f2d0566075283ca632208f73a libstdc++-v3/include/bits/basic_ios.tcc ! e875ef37fa513407bab6058f58fe2083 libstdc++-v3/include/bits/basic_string.h b93ecccfbbb912591cb242b452b4fa3e libstdc++-v3/include/bits/basic_string.tcc da93a47ddcf68d594191e3abd92bc98a libstdc++-v3/include/bits/boost_concept_check.h 9339c3e8109fdc59bae4a20d09b4d18d libstdc++-v3/include/bits/c++0x_warning.h *************** ac01b6ef7c65327582c3c8c887b5c9a8 libstd *** 70048,70054 **** bd4a0b2844e7a4586138ce759b31b253 libstdc++-v3/include/bits/postypes.h d13ee767acbb56fefd07f6f593a83959 libstdc++-v3/include/bits/ptr_traits.h 5e71448ee646d39ae960ea737fc4ebb4 libstdc++-v3/include/bits/random.h ! a8b23cbc8281adfc2df49d9307fd79bd libstdc++-v3/include/bits/random.tcc 739cef4aeeed63eab9a6fc0342b36e15 libstdc++-v3/include/bits/range_access.h 5b95d85ab17380fa80ea37dcbfa6245e libstdc++-v3/include/bits/regex.h b08d5b03566d19157124f07ef929f5e7 libstdc++-v3/include/bits/regex_compiler.h --- 70180,70186 ---- bd4a0b2844e7a4586138ce759b31b253 libstdc++-v3/include/bits/postypes.h d13ee767acbb56fefd07f6f593a83959 libstdc++-v3/include/bits/ptr_traits.h 5e71448ee646d39ae960ea737fc4ebb4 libstdc++-v3/include/bits/random.h ! e575d45ce2c129d85fdf8dde9e712440 libstdc++-v3/include/bits/random.tcc 739cef4aeeed63eab9a6fc0342b36e15 libstdc++-v3/include/bits/range_access.h 5b95d85ab17380fa80ea37dcbfa6245e libstdc++-v3/include/bits/regex.h b08d5b03566d19157124f07ef929f5e7 libstdc++-v3/include/bits/regex_compiler.h *************** f75d490066af5b513515e4cc3a1c9e09 libstd *** 70060,70069 **** b739cf6b8d1bf119a12ac7504f87549e libstdc++-v3/include/bits/regex_nfa.h 054cf2ec930ffcaf51e826035a261e9c libstdc++-v3/include/bits/regex_nfa.tcc 44506af06785c4063182cfe57def4c06 libstdc++-v3/include/bits/shared_ptr.h ! 6278369384ffd7f490c0e3846469c4ee libstdc++-v3/include/bits/shared_ptr_base.h 95dbe784e3cbdc49561afaba871841b5 libstdc++-v3/include/bits/slice_array.h 7c915d03311882c4d1cc470e180dd109 libstdc++-v3/include/bits/sstream.tcc ! 4647e3652a92b093dfc2851f1e036c2d libstdc++-v3/include/bits/stl_algo.h 9c836a2e57ce254a2d1ee34c6865bc8e libstdc++-v3/include/bits/stl_algobase.h 905771e84260ab353c7df9487d4834bb libstdc++-v3/include/bits/stl_bvector.h 3065009390af6f836992edf53adbb5f1 libstdc++-v3/include/bits/stl_construct.h --- 70192,70201 ---- b739cf6b8d1bf119a12ac7504f87549e libstdc++-v3/include/bits/regex_nfa.h 054cf2ec930ffcaf51e826035a261e9c libstdc++-v3/include/bits/regex_nfa.tcc 44506af06785c4063182cfe57def4c06 libstdc++-v3/include/bits/shared_ptr.h ! b5d245e9662d45c84705b090fa16d341 libstdc++-v3/include/bits/shared_ptr_base.h 95dbe784e3cbdc49561afaba871841b5 libstdc++-v3/include/bits/slice_array.h 7c915d03311882c4d1cc470e180dd109 libstdc++-v3/include/bits/sstream.tcc ! d2d516974f13e6f77ca5f9b617eef814 libstdc++-v3/include/bits/stl_algo.h 9c836a2e57ce254a2d1ee34c6865bc8e libstdc++-v3/include/bits/stl_algobase.h 905771e84260ab353c7df9487d4834bb libstdc++-v3/include/bits/stl_bvector.h 3065009390af6f836992edf53adbb5f1 libstdc++-v3/include/bits/stl_construct.h *************** b2f9a163d0b481979e83601f4d70a944 libstd *** 70584,70590 **** 3f4b18d6b6d42f21b3f6cec3b6f150a9 libstdc++-v3/include/std/forward_list 6f2bce4415726eb7ee67460235a5df91 libstdc++-v3/include/std/fstream 75aa281453607e150334621a4fa219a6 libstdc++-v3/include/std/functional ! faa0357865cdf1ca690a38571a7f2ffb libstdc++-v3/include/std/future 6b087103132607660ab346c68e6b762c libstdc++-v3/include/std/iomanip ba9833370cfabc24e791d9c0a26df206 libstdc++-v3/include/std/ios af315f2804a2999ea627e95f4c3def3e libstdc++-v3/include/std/iosfwd --- 70716,70722 ---- 3f4b18d6b6d42f21b3f6cec3b6f150a9 libstdc++-v3/include/std/forward_list 6f2bce4415726eb7ee67460235a5df91 libstdc++-v3/include/std/fstream 75aa281453607e150334621a4fa219a6 libstdc++-v3/include/std/functional ! 8e5a6c3a662a0c285b64e086a0469d5d libstdc++-v3/include/std/future 6b087103132607660ab346c68e6b762c libstdc++-v3/include/std/iomanip ba9833370cfabc24e791d9c0a26df206 libstdc++-v3/include/std/ios af315f2804a2999ea627e95f4c3def3e libstdc++-v3/include/std/iosfwd *************** addb6ab07ea2e7074d40b123779612ba libstd *** 70682,70688 **** dd5dc7878191b6c51b971b1389b816eb libstdc++-v3/include/tr1/utility f16bd90cdcae87258d27f03928ca0057 libstdc++-v3/include/tr1/wchar.h 75a34fede24aaa09f1eb03b14cfebe5e libstdc++-v3/include/tr1/wctype.h ! 9cc9d1b962508e4c6144af2f80f2f76e libstdc++-v3/include/tr2/bool_set 3aa9ec54185b55ecfac2432e55671875 libstdc++-v3/include/tr2/bool_set.tcc 3eb0a29850d720da87da7388e709384b libstdc++-v3/include/tr2/dynamic_bitset 67b1edebc6c0c271b15b5f78990ca4b0 libstdc++-v3/include/tr2/ratio --- 70814,70820 ---- dd5dc7878191b6c51b971b1389b816eb libstdc++-v3/include/tr1/utility f16bd90cdcae87258d27f03928ca0057 libstdc++-v3/include/tr1/wchar.h 75a34fede24aaa09f1eb03b14cfebe5e libstdc++-v3/include/tr1/wctype.h ! c19e1e900cb8d002060681d931c0b8ac libstdc++-v3/include/tr2/bool_set 3aa9ec54185b55ecfac2432e55671875 libstdc++-v3/include/tr2/bool_set.tcc 3eb0a29850d720da87da7388e709384b libstdc++-v3/include/tr2/dynamic_bitset 67b1edebc6c0c271b15b5f78990ca4b0 libstdc++-v3/include/tr2/ratio *************** da904e27c0eabe1978fa7199cbdb79b6 libstd *** 70703,70709 **** fbea74a6c6295e366cfc857a65da37b4 libstdc++-v3/libsupc++/del_opv.cc 92d61ac364c341a6cbe7451a9e21e42b libstdc++-v3/libsupc++/del_opvnt.cc 66a389a1d6acdab392f1b1fc97297ab8 libstdc++-v3/libsupc++/dyncast.cc ! 0e6b57bf2342383b7d6e1de817af2ecb libstdc++-v3/libsupc++/eh_alloc.cc 9ace9ea5a8f41dba327b9106bae26896 libstdc++-v3/libsupc++/eh_arm.cc d3d405c2178fd25a0c67e5279e6e32cf libstdc++-v3/libsupc++/eh_aux_runtime.cc 099317051061e077bde652146ac0b11d libstdc++-v3/libsupc++/eh_call.cc --- 70835,70841 ---- fbea74a6c6295e366cfc857a65da37b4 libstdc++-v3/libsupc++/del_opv.cc 92d61ac364c341a6cbe7451a9e21e42b libstdc++-v3/libsupc++/del_opvnt.cc 66a389a1d6acdab392f1b1fc97297ab8 libstdc++-v3/libsupc++/dyncast.cc ! 3cb38d9d128cc3d2f58e628e36238aec libstdc++-v3/libsupc++/eh_alloc.cc 9ace9ea5a8f41dba327b9106bae26896 libstdc++-v3/libsupc++/eh_arm.cc d3d405c2178fd25a0c67e5279e6e32cf libstdc++-v3/libsupc++/eh_aux_runtime.cc 099317051061e077bde652146ac0b11d libstdc++-v3/libsupc++/eh_call.cc *************** b6747deb6210d675d008b993fcf7c33c libstd *** 70714,70720 **** cc5344a1c7223b84003282eba7c71ec4 libstdc++-v3/libsupc++/eh_ptr.cc e689060a87b8da8c3906310383fccbd6 libstdc++-v3/libsupc++/eh_term_handler.cc dcd92243ce1ae5efbbba9831d3fa101c libstdc++-v3/libsupc++/eh_terminate.cc ! 4a07a2c33a957f3cb01a8cb1d9659933 libstdc++-v3/libsupc++/eh_throw.cc 947d2c6f86bbc8c64adc2cf1a270ff7e libstdc++-v3/libsupc++/eh_tm.cc 9a376298a113b8668f2e171c3163e652 libstdc++-v3/libsupc++/eh_type.cc c04ec59865dc7c550bb575559f7d1522 libstdc++-v3/libsupc++/eh_unex_handler.cc --- 70846,70852 ---- cc5344a1c7223b84003282eba7c71ec4 libstdc++-v3/libsupc++/eh_ptr.cc e689060a87b8da8c3906310383fccbd6 libstdc++-v3/libsupc++/eh_term_handler.cc dcd92243ce1ae5efbbba9831d3fa101c libstdc++-v3/libsupc++/eh_terminate.cc ! 59aa6d6cc06e1f9db28d5e3f18dc677a libstdc++-v3/libsupc++/eh_throw.cc 947d2c6f86bbc8c64adc2cf1a270ff7e libstdc++-v3/libsupc++/eh_tm.cc 9a376298a113b8668f2e171c3163e652 libstdc++-v3/libsupc++/eh_type.cc c04ec59865dc7c550bb575559f7d1522 libstdc++-v3/libsupc++/eh_unex_handler.cc *************** c05c9e170ab05bc84594f1f4fc950abc libstd *** 70774,70780 **** f1a84a17158780aaa37927191db4463a libstdc++-v3/scripts/gen_includers2.pl 12339b6ead78d7ddd0044dfd0f9f4f92 libstdc++-v3/scripts/make_exports.pl 80b6ff44b325c6b6d113435d8eea4b76 libstdc++-v3/scripts/make_graph.py ! bdea8a7c5ad9ea8d58e66b8a1da63be1 libstdc++-v3/scripts/run_doxygen df97516e6ab2a726dafb05ae23802e8b libstdc++-v3/scripts/testsuite_flags.in d90c623ee309966aafb6ba46363bb3eb libstdc++-v3/src/Makefile.am dff2bf9ab3655fe8fe8b562b8d9c29ae libstdc++-v3/src/Makefile.in --- 70906,70912 ---- f1a84a17158780aaa37927191db4463a libstdc++-v3/scripts/gen_includers2.pl 12339b6ead78d7ddd0044dfd0f9f4f92 libstdc++-v3/scripts/make_exports.pl 80b6ff44b325c6b6d113435d8eea4b76 libstdc++-v3/scripts/make_graph.py ! 3a3b78349346a9b6a44c704b21a7ff6c libstdc++-v3/scripts/run_doxygen df97516e6ab2a726dafb05ae23802e8b libstdc++-v3/scripts/testsuite_flags.in d90c623ee309966aafb6ba46363bb3eb libstdc++-v3/src/Makefile.am dff2bf9ab3655fe8fe8b562b8d9c29ae libstdc++-v3/src/Makefile.in *************** da96295b8844adcece61f9fb77bbe6bb libstd *** 70789,70795 **** b3e4ebf9312bea8bee73fc6acfbb7d3e libstdc++-v3/src/c++11/fstream-inst.cc 5af240f1abe2bd2835cba2f91401fd46 libstdc++-v3/src/c++11/functexcept.cc a4eb9b4fb835359b2b3345dd5a724d98 libstdc++-v3/src/c++11/functional.cc ! 6758752153534761548cb65f65befde0 libstdc++-v3/src/c++11/future.cc 96ed6c1bcf7d9a55fe8e205952d38bff libstdc++-v3/src/c++11/hash_c++0x.cc e5b7c55142f1dc987d21fbf47f1656a8 libstdc++-v3/src/c++11/hashtable_c++0x.cc e02be5189c064f0a6e1003060b51dcf5 libstdc++-v3/src/c++11/limits.cc --- 70921,70927 ---- b3e4ebf9312bea8bee73fc6acfbb7d3e libstdc++-v3/src/c++11/fstream-inst.cc 5af240f1abe2bd2835cba2f91401fd46 libstdc++-v3/src/c++11/functexcept.cc a4eb9b4fb835359b2b3345dd5a724d98 libstdc++-v3/src/c++11/functional.cc ! 78697c6176c590d356e2aa6de0022825 libstdc++-v3/src/c++11/future.cc 96ed6c1bcf7d9a55fe8e205952d38bff libstdc++-v3/src/c++11/hash_c++0x.cc e5b7c55142f1dc987d21fbf47f1656a8 libstdc++-v3/src/c++11/hashtable_c++0x.cc e02be5189c064f0a6e1003060b51dcf5 libstdc++-v3/src/c++11/limits.cc *************** e02be5189c064f0a6e1003060b51dcf5 libstd *** 70798,70804 **** 00ab7cff333812cf8ff3b1d3a8119817 libstdc++-v3/src/c++11/regex.cc 3b5a1a877147e92da00cd70229b98e68 libstdc++-v3/src/c++11/shared_ptr.cc 1b5251e814f66c0758532ec16b497155 libstdc++-v3/src/c++11/string-inst.cc ! 195cb0d032c8feddab73071c6166cd60 libstdc++-v3/src/c++11/system_error.cc 8dd966b250857c8e95b8755aa9cc87ce libstdc++-v3/src/c++11/thread.cc 6b0b176d13540f2f18399478fdfcb765 libstdc++-v3/src/c++11/wstring-inst.cc e4ddb42ef9c2750001c4026eab6deefd libstdc++-v3/src/c++98/Makefile.am --- 70930,70936 ---- 00ab7cff333812cf8ff3b1d3a8119817 libstdc++-v3/src/c++11/regex.cc 3b5a1a877147e92da00cd70229b98e68 libstdc++-v3/src/c++11/shared_ptr.cc 1b5251e814f66c0758532ec16b497155 libstdc++-v3/src/c++11/string-inst.cc ! 58e3944883b81b86e02e90b3d301d7b2 libstdc++-v3/src/c++11/system_error.cc 8dd966b250857c8e95b8755aa9cc87ce libstdc++-v3/src/c++11/thread.cc 6b0b176d13540f2f18399478fdfcb765 libstdc++-v3/src/c++11/wstring-inst.cc e4ddb42ef9c2750001c4026eab6deefd libstdc++-v3/src/c++98/Makefile.am *************** a4bd7b00e80635fe11a3b8a1e49dd7fb libstd *** 70813,70819 **** a1cb351b8383dea1f8d0a1a9cd839e55 libstdc++-v3/src/c++98/compatibility-list.cc 31bc97a862f3d384347b064666c2da52 libstdc++-v3/src/c++98/compatibility-parallel_list-2.cc c524e1e43d7d0da22b2602818a2d0277 libstdc++-v3/src/c++98/compatibility-parallel_list.cc ! be228087f0d7fe1f98d1bf5430ae856c libstdc++-v3/src/c++98/compatibility.cc e208aab4903bf2c63a46d7dd22ead423 libstdc++-v3/src/c++98/complex_io.cc 4ae5527f88b579e7b020367122de623e libstdc++-v3/src/c++98/concept-inst.cc d224bc4c7a9ea6e1ba05194855300f54 libstdc++-v3/src/c++98/ctype.cc --- 70945,70951 ---- a1cb351b8383dea1f8d0a1a9cd839e55 libstdc++-v3/src/c++98/compatibility-list.cc 31bc97a862f3d384347b064666c2da52 libstdc++-v3/src/c++98/compatibility-parallel_list-2.cc c524e1e43d7d0da22b2602818a2d0277 libstdc++-v3/src/c++98/compatibility-parallel_list.cc ! a875a44b81514e7b38c0061ddfb2b751 libstdc++-v3/src/c++98/compatibility.cc e208aab4903bf2c63a46d7dd22ead423 libstdc++-v3/src/c++98/complex_io.cc 4ae5527f88b579e7b020367122de623e libstdc++-v3/src/c++98/concept-inst.cc d224bc4c7a9ea6e1ba05194855300f54 libstdc++-v3/src/c++98/ctype.cc *************** da19f5338f28bcc9f202db43ce0e4b52 libstd *** 73395,73400 **** --- 73527,73533 ---- 4a0e381c1dc2c8f47856f25f525943f2 libstdc++-v3/testsuite/25_algorithms/nth_element/1.cc da5bd094b1bbcaf72e61af98b31338d1 libstdc++-v3/testsuite/25_algorithms/nth_element/2.cc 169d35d50792ca4f42ae859e8de5805e libstdc++-v3/testsuite/25_algorithms/nth_element/3.cc + 3941e2f44f7295ffaf9d8e0da8da86fe libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc 5c4b09edc08722989b6b0ca5ca107f47 libstdc++-v3/testsuite/25_algorithms/nth_element/check_type.cc e88fa15e55646904c428fee0cac31c18 libstdc++-v3/testsuite/25_algorithms/nth_element/moveable.cc 5b6955b4bdab13d2f4ace065a7c432f2 libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/2.cc *************** be06e4473bb4855d11a28ff413baeaa9 libstd *** 73789,73794 **** --- 73922,73928 ---- 08f5f3d58ec0bec7eb2b662d1ca2e94b libstdc++-v3/testsuite/26_numerics/random/mt19937_64.cc 33aec58a4c310fa2a7d529bbf5898723 libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc 71b54491d2380504b17ee75aa5ad8995 libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/cons/parms.cc + c9d379364d7bcd3229fa3d6ce4120758 libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc 0e2ad994c27897e3445227b18f0c7ff6 libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/equal.cc b64b974c4ae039e95df72b6228848ab4 libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/inequal.cc a2415390de186bef0948d475c8e179e9 libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/serialize.cc *************** dbd2b377e40dba2004d21b31c5daa215 libstd *** 74883,74888 **** --- 75017,75023 ---- a23ea2cba81b5661c8bb4c1f4992589a libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate.cc c1196b51a4af9c039fe07265b0ebb670 libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate_nocase.cc 445a5819d203442671da3bad55b77763 libstdc++-v3/testsuite/28_regex/traits/wchar_t/value.cc + 31003cd95731250071529ac38951d824 libstdc++-v3/testsuite/29_atomics/atomic/60658.cc eb1f5e4db657a414ad878cfedd0cfbcb libstdc++-v3/testsuite/29_atomics/atomic/cons/49445.cc 49a2a8545a10987c11841e137258d6ea libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc a6c775ca6fca1ce38e897b28f97e81dd libstdc++-v3/testsuite/29_atomics/atomic/cons/constexpr.cc *************** e59f92ec7c5a459c1b07fa076fc6a395 libstd *** 74944,74956 **** 2a11645a03af0582c93f9275255f9e4d libstdc++-v3/testsuite/30_threads/call_once/call_once1.cc fefb821282d95b32ff331a520ed170b8 libstdc++-v3/testsuite/30_threads/call_once/constexpr.cc 43128a5e0c7c74f4ed909d0971f93f6a libstdc++-v3/testsuite/30_threads/call_once/once_flag.cc ! 7283c49e935265371b22595f132ead9d libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc dcc9abe05a2192e5cc394d413115dc71 libstdc++-v3/testsuite/30_threads/condition_variable/cons/1.cc 7b217fa138e583d79bfc6482dcd36d90 libstdc++-v3/testsuite/30_threads/condition_variable/cons/assign_neg.cc a0899226a3915419b64612fe35f44a7f libstdc++-v3/testsuite/30_threads/condition_variable/cons/copy_neg.cc 18df2d439c30b6bf949263be80bd0ba9 libstdc++-v3/testsuite/30_threads/condition_variable/members/1.cc f19aaa6cb227493cd09399e30cf787d6 libstdc++-v3/testsuite/30_threads/condition_variable/members/2.cc ! aaf1bacac3be398168ee53bd5bd4448e libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc 6c15bcbab0824a8e12207ca95e4b01b3 libstdc++-v3/testsuite/30_threads/condition_variable/native_handle/typesizes.cc 3ec87885135bd78ac4ce271188a43e53 libstdc++-v3/testsuite/30_threads/condition_variable/requirements/standard_layout.cc 726980226da2a16a70a3848dfdc1749b libstdc++-v3/testsuite/30_threads/condition_variable/requirements/typedefs.cc --- 75079,75091 ---- 2a11645a03af0582c93f9275255f9e4d libstdc++-v3/testsuite/30_threads/call_once/call_once1.cc fefb821282d95b32ff331a520ed170b8 libstdc++-v3/testsuite/30_threads/call_once/constexpr.cc 43128a5e0c7c74f4ed909d0971f93f6a libstdc++-v3/testsuite/30_threads/call_once/once_flag.cc ! 3e69db7d9836bdc7f8c441936e94f7ff libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc dcc9abe05a2192e5cc394d413115dc71 libstdc++-v3/testsuite/30_threads/condition_variable/cons/1.cc 7b217fa138e583d79bfc6482dcd36d90 libstdc++-v3/testsuite/30_threads/condition_variable/cons/assign_neg.cc a0899226a3915419b64612fe35f44a7f libstdc++-v3/testsuite/30_threads/condition_variable/cons/copy_neg.cc 18df2d439c30b6bf949263be80bd0ba9 libstdc++-v3/testsuite/30_threads/condition_variable/members/1.cc f19aaa6cb227493cd09399e30cf787d6 libstdc++-v3/testsuite/30_threads/condition_variable/members/2.cc ! ba27028c48638c2c966336dd8ca7c113 libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc 6c15bcbab0824a8e12207ca95e4b01b3 libstdc++-v3/testsuite/30_threads/condition_variable/native_handle/typesizes.cc 3ec87885135bd78ac4ce271188a43e53 libstdc++-v3/testsuite/30_threads/condition_variable/requirements/standard_layout.cc 726980226da2a16a70a3848dfdc1749b libstdc++-v3/testsuite/30_threads/condition_variable/requirements/typedefs.cc *************** e03d3463dbc078b6f3d327e47aea4219 libstd *** 75588,75593 **** --- 75723,75731 ---- 64eb7c165a62563efcb41700f70235d1 libstdc++-v3/testsuite/performance/25_algorithms/lexicographical_compare.cc be742ce98d0b0f268f7f89b54227a97b libstdc++-v3/testsuite/performance/25_algorithms/nth_element_worst_case.cc b6820514a1f58547d48036990553bc46 libstdc++-v3/testsuite/performance/25_algorithms/search_n.cc + 864aa9e34d780091044cc45586f7144d libstdc++-v3/testsuite/performance/25_algorithms/sort.cc + 885ed66171e4d335347b605c76200a3d libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc + f7cc703b825680038bde13c126fc9906 libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc 29394653c2bb12e1d20401287554fd9e libstdc++-v3/testsuite/performance/26_numerics/complex_norm.cc 2b33aa570168668665c48d3cc29b2ac8 libstdc++-v3/testsuite/performance/26_numerics/valarray_gslice_to_index.cc 5f4849b3597c218b25babcc6a1e2b8ee libstdc++-v3/testsuite/performance/27_io/cout_insert_int.cc *************** e980c4d943ac2af18dcbc35297afbdc6 libstd *** 76329,76335 **** b9f3c47af2578b79556486a250abb2d6 libtool.m4 247597a3fcc5b5aa8bd923351c59d853 ltgcc.m4 01d0921596c9fa4d9a7add89fd6fc1f1 ltmain.sh ! 792b770260f9880e4e2a0951ecfcbc2e lto-plugin/ChangeLog 266147278cdeeab779ac75a4c3e2ee6d lto-plugin/Makefile.am db5afb8268c8a17e49d078936ef6fdbc lto-plugin/Makefile.in e0b6c77fa2326a08aa2d7a69e87e0f8c lto-plugin/aclocal.m4 --- 76467,76473 ---- b9f3c47af2578b79556486a250abb2d6 libtool.m4 247597a3fcc5b5aa8bd923351c59d853 ltgcc.m4 01d0921596c9fa4d9a7add89fd6fc1f1 ltmain.sh ! 1602f57326ba0346cb329e34a166bb0e lto-plugin/ChangeLog 266147278cdeeab779ac75a4c3e2ee6d lto-plugin/Makefile.am db5afb8268c8a17e49d078936ef6fdbc lto-plugin/Makefile.in e0b6c77fa2326a08aa2d7a69e87e0f8c lto-plugin/aclocal.m4 *************** dee72a6a60e99528b0d17bf3ff9a1e15 ltopti *** 76342,76348 **** bc2f6032c98896249eadb56177c7d357 ltsugar.m4 c30cd33c496505f13d9fbdb6970c7c33 ltversion.m4 293853a13b7e218e3a4342cf85fbbf25 lt~obsolete.m4 ! ca418fc2789fce20ba71873763311593 maintainer-scripts/ChangeLog 33c7bc2d2c55956dfac85a05d8a80eff maintainer-scripts/README 9da77d76af7c8671c3ba55aba271bef6 maintainer-scripts/crontab 8c8d4248e14c842a3c7f7e8f3bffbb0f maintainer-scripts/gcc_release --- 76480,76486 ---- bc2f6032c98896249eadb56177c7d357 ltsugar.m4 c30cd33c496505f13d9fbdb6970c7c33 ltversion.m4 293853a13b7e218e3a4342cf85fbbf25 lt~obsolete.m4 ! a56ad6747a676040bbb9c9a681d0a21b maintainer-scripts/ChangeLog 33c7bc2d2c55956dfac85a05d8a80eff maintainer-scripts/README 9da77d76af7c8671c3ba55aba271bef6 maintainer-scripts/crontab 8c8d4248e14c842a3c7f7e8f3bffbb0f maintainer-scripts/gcc_release *************** fbe2467afef81c41c166173adeb0ee20 mkdep *** 76356,76362 **** f1fff2ea196cbf6fe4634bc3edc5af4d move-if-change cf2baa0854f564a7785307e79f155efc symlink-tree 69678e72941d681665c3731bfb3044ab ylwrap ! b76404ae83c5284ee6a406bc8be87945 zlib/ChangeLog 4131513ea1209900aceccc89fe05ecc8 zlib/ChangeLog.gcj 2f46720fda5ab68a1e495009895d874c zlib/FAQ 8851ace55681b1664d97c045d71e339b zlib/INDEX --- 76494,76500 ---- f1fff2ea196cbf6fe4634bc3edc5af4d move-if-change cf2baa0854f564a7785307e79f155efc symlink-tree 69678e72941d681665c3731bfb3044ab ylwrap ! 71cc895b174400ab5464ba0a40e29fe8 zlib/ChangeLog 4131513ea1209900aceccc89fe05ecc8 zlib/ChangeLog.gcj 2f46720fda5ab68a1e495009895d874c zlib/FAQ 8851ace55681b1664d97c045d71e339b zlib/INDEX diff -Nrcpad gcc-4.7.3/NEWS gcc-4.7.4/NEWS *** gcc-4.7.3/NEWS Thu Apr 11 07:59:41 2013 --- gcc-4.7.4/NEWS Thu Jun 12 12:50:11 2014 *************** http://gcc.gnu.org/gcc-4.7/index.html *** 9,35 **** GCC 4.7 Release Series ! April 11, 2013 The [1]GNU project and the GCC developers are pleased to announce the ! release of GCC 4.7.3. This release is a bug-fix release, containing fixes for regressions in ! GCC 4.7.2 relative to previous releases of GCC. Release History GCC 4.7.3 ! April 11, 2013 ([2]changes, [3]documentation) GCC 4.7.2 ! September 20, 2012 ([4]changes, [5]documentation) GCC 4.7.1 ! June 14, 2012 ([6]changes, [7]documentation) GCC 4.7.0 ! March 22, 2012 ([8]changes, [9]documentation) References and Acknowledgements --- 9,38 ---- GCC 4.7 Release Series ! June 12, 2014 The [1]GNU project and the GCC developers are pleased to announce the ! release of GCC 4.7.4. This release is a bug-fix release, containing fixes for regressions in ! GCC 4.7.3 relative to previous releases of GCC. Release History + GCC 4.7.4 + June 12, 2014 ([2]changes, [3]documentation) + GCC 4.7.3 ! April 11, 2013 ([4]changes, [5]documentation) GCC 4.7.2 ! September 20, 2012 ([6]changes, [7]documentation) GCC 4.7.1 ! June 14, 2012 ([8]changes, [9]documentation) GCC 4.7.0 ! March 22, 2012 ([10]changes, [11]documentation) References and Acknowledgements *************** References and Acknowledgements *** 37,94 **** supports several other languages aside from C, it now stands for the GNU Compiler Collection. ! A list of [10]successful builds is updated as new information becomes available. The GCC developers would like to thank the numerous people that have contributed new features, improvements, bug fixes, and other changes as ! well as test results to GCC. This [11]amazing group of volunteers is what makes GCC successful. ! For additional information about GCC please refer to the [12]GCC ! project web site or contact the [13]GCC development mailing list. ! To obtain GCC please use [14]our mirror sites or [15]our SVN server. For questions related to the use of GCC, please consult these web ! pages and the [16]GCC manuals. If that fails, the ! [17]gcc-help@gcc.gnu.org mailing list might help. Comments on these web pages and the development of GCC are welcome on our developer ! list at [18]gcc@gcc.gnu.org. All of [19]our lists have public archives. ! Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! These pages are [21]maintained by the GCC team. Last modified ! 2013-04-11[22]. References 1. http://www.gnu.org/ 2. http://gcc.gnu.org/gcc-4.7/changes.html ! 3. http://gcc.gnu.org/onlinedocs/4.7.3/ 4. http://gcc.gnu.org/gcc-4.7/changes.html ! 5. http://gcc.gnu.org/onlinedocs/4.7.2/ 6. http://gcc.gnu.org/gcc-4.7/changes.html ! 7. http://gcc.gnu.org/onlinedocs/4.7.1/ 8. http://gcc.gnu.org/gcc-4.7/changes.html ! 9. http://gcc.gnu.org/onlinedocs/4.7.0/ ! 10. http://gcc.gnu.org/gcc-4.7/buildstat.html ! 11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html ! 12. http://gcc.gnu.org/index.html ! 13. mailto:gcc@gcc.gnu.org ! 14. http://gcc.gnu.org/mirrors.html ! 15. http://gcc.gnu.org/svn.html ! 16. http://gcc.gnu.org/onlinedocs/ ! 17. mailto:gcc-help@gcc.gnu.org ! 18. mailto:gcc@gcc.gnu.org ! 19. http://gcc.gnu.org/lists.html ! 20. http://www.fsf.org/ ! 21. http://gcc.gnu.org/about.html ! 22. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.7/changes.html --- 40,99 ---- supports several other languages aside from C, it now stands for the GNU Compiler Collection. ! A list of [12]successful builds is updated as new information becomes available. The GCC developers would like to thank the numerous people that have contributed new features, improvements, bug fixes, and other changes as ! well as test results to GCC. This [13]amazing group of volunteers is what makes GCC successful. ! For additional information about GCC please refer to the [14]GCC ! project web site or contact the [15]GCC development mailing list. ! To obtain GCC please use [16]our mirror sites or [17]our SVN server. For questions related to the use of GCC, please consult these web ! pages and the [18]GCC manuals. If that fails, the ! [19]gcc-help@gcc.gnu.org mailing list might help. Comments on these web pages and the development of GCC are welcome on our developer ! list at [20]gcc@gcc.gnu.org. All of [21]our lists have public archives. ! Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! These pages are [23]maintained by the GCC team. Last modified ! 2014-06-12[24]. References 1. http://www.gnu.org/ 2. http://gcc.gnu.org/gcc-4.7/changes.html ! 3. https://gcc.gnu.org/onlinedocs/4.7.4/ 4. http://gcc.gnu.org/gcc-4.7/changes.html ! 5. https://gcc.gnu.org/onlinedocs/4.7.3/ 6. http://gcc.gnu.org/gcc-4.7/changes.html ! 7. https://gcc.gnu.org/onlinedocs/4.7.2/ 8. http://gcc.gnu.org/gcc-4.7/changes.html ! 9. https://gcc.gnu.org/onlinedocs/4.7.1/ ! 10. http://gcc.gnu.org/gcc-4.7/changes.html ! 11. https://gcc.gnu.org/onlinedocs/4.7.0/ ! 12. http://gcc.gnu.org/gcc-4.7/buildstat.html ! 13. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html ! 14. http://gcc.gnu.org/index.html ! 15. mailto:gcc@gcc.gnu.org ! 16. http://gcc.gnu.org/mirrors.html ! 17. http://gcc.gnu.org/svn.html ! 18. https://gcc.gnu.org/onlinedocs/ ! 19. mailto:gcc-help@gcc.gnu.org ! 20. mailto:gcc@gcc.gnu.org ! 21. https://gcc.gnu.org/lists.html ! 22. http://www.fsf.org/ ! 23. https://gcc.gnu.org/about.html ! 24. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.7/changes.html *************** GCC 4.7.3 *** 863,966 **** not be complete (that is, it is possible that some PRs that have been fixed are not listed here). For questions related to the use of GCC, please consult these web ! pages and the [49]GCC manuals. If that fails, the ! [50]gcc-help@gcc.gnu.org mailing list might help. Comments on these web pages and the development of GCC are welcome on our developer ! list at [51]gcc@gcc.gnu.org. All of [52]our lists have public archives. ! Copyright (C) [53]Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! These pages are [54]maintained by the GCC team. Last modified ! 2013-04-11[55]. References ! 1. http://gcc.gnu.org/ml/gcc-patches/2011-03/msg01263.html 2. http://savannah.nongnu.org/bugs/?35407 ! 3. http://gcc.gnu.org/PR18145 ! 4. http://gcc.gnu.org/gcc-4.7/porting_to.html 5. http://openmp.org/wp/openmp-specifications/ ! 6. http://gcc.gnu.org/wiki/TransactionalMemory ! 7. http://gcc.gnu.org/wiki/Atomic/GCCMM 8. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html 9. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html 10. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html 11. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html 12. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html 13. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html ! 14. http://gcc.gnu.org/PR14258 ! 15. http://gcc.gnu.org/PR35688 ! 16. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/libstdc++/manual/manual/status.html#status.iso.2011 ! 17. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254 ! 18. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Optimize-Options.html#index-Ofast-689 ! 19. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfno-protect-parens_007d-270 ! 20. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254 ! 21. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfrontend-optimize_007d-275 ! 22. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWfunction-elimination_007d-170 ! 23. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270 ! 24. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149 ! 25. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html 26. http://msdn.microsoft.com/en-us/library/bb787181%28v=vs.85%29.aspx ! 27. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183 ! 28. http://gcc.gnu.org/wiki/Fortran2003Status ! 29. http://gcc.gnu.org/wiki/OOP ! 30. http://gcc.gnu.org/wiki/Fortran2008Status ! 31. http://gcc.gnu.org/wiki/Coarray ! 32. http://gcc.gnu.org/wiki/CoarrayLib ! 33. http://gcc.gnu.org/wiki/TS29113Status ! 34. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bstd_003d_007d_0040var_007bstd_007d-option-53 35. http://weekly.golang.org/doc/go1.html ! 36. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html 37. http://nongnu.org/avr-libc/ ! 38. http://gcc.gnu.org/PR54461 ! 39. http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built%5f002din-Functions.html 40. https://sites.google.com/site/x32abi/ 41. http://www.dwarfstd.org/ShowIssue.php?issue=100909.1 42. http://www.dwarfstd.org/ShowIssue.php?issue=100909.2 43. http://www.dwarfstd.org/doc/040408.1.html 44. http://www.dwarfstd.org/ShowIssue.php?issue=110722.1 ! 45. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.1 46. http://weekly.golang.org/doc/go1.html ! 47. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.2 ! 48. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.3 ! 49. http://gcc.gnu.org/onlinedocs/ ! 50. mailto:gcc-help@gcc.gnu.org ! 51. mailto:gcc@gcc.gnu.org ! 52. http://gcc.gnu.org/lists.html ! 53. http://www.fsf.org/ ! 54. http://gcc.gnu.org/about.html ! 55. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.6/index.html GCC 4.6 Release Series ! March 1, 2012 The [1]GNU project and the GCC developers are pleased to announce the ! release of GCC 4.6.3. This release is a bug-fix release, containing fixes for regressions in ! GCC 4.6.2 relative to previous releases of GCC. Release History GCC 4.6.3 ! March 1, 2012 ([2]changes, [3]documentation) GCC 4.6.2 ! October 26, 2011 ([4]changes, [5]documentation) GCC 4.6.1 ! June 27, 2011 ([6]changes, [7]documentation) GCC 4.6.0 ! March 25, 2011 ([8]changes, [9]documentation) References and Acknowledgements --- 868,982 ---- not be complete (that is, it is possible that some PRs that have been fixed are not listed here). + GCC 4.7.4 + + This is the [49]list of problem reports (PRs) from GCC's bug tracking + system that are known to be fixed in the 4.7.4 release. This list might + not be complete (that is, it is possible that some PRs that have been + fixed are not listed here). + For questions related to the use of GCC, please consult these web ! pages and the [50]GCC manuals. If that fails, the ! [51]gcc-help@gcc.gnu.org mailing list might help. Comments on these web pages and the development of GCC are welcome on our developer ! list at [52]gcc@gcc.gnu.org. All of [53]our lists have public archives. ! Copyright (C) [54]Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! These pages are [55]maintained by the GCC team. Last modified ! 2014-06-12[56]. References ! 1. https://gcc.gnu.org/ml/gcc-patches/2011-03/msg01263.html 2. http://savannah.nongnu.org/bugs/?35407 ! 3. https://gcc.gnu.org/PR18145 ! 4. https://gcc.gnu.org/gcc-4.7/porting_to.html 5. http://openmp.org/wp/openmp-specifications/ ! 6. https://gcc.gnu.org/wiki/TransactionalMemory ! 7. https://gcc.gnu.org/wiki/Atomic/GCCMM 8. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html 9. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html 10. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html 11. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html 12. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html 13. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html ! 14. https://gcc.gnu.org/PR14258 ! 15. https://gcc.gnu.org/PR35688 ! 16. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/libstdc++/manual/manual/status.html#status.iso.2011 ! 17. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254 ! 18. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Optimize-Options.html#index-Ofast-689 ! 19. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfno-protect-parens_007d-270 ! 20. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254 ! 21. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfrontend-optimize_007d-275 ! 22. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWfunction-elimination_007d-170 ! 23. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270 ! 24. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149 ! 25. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html 26. http://msdn.microsoft.com/en-us/library/bb787181%28v=vs.85%29.aspx ! 27. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183 ! 28. https://gcc.gnu.org/wiki/Fortran2003Status ! 29. https://gcc.gnu.org/wiki/OOP ! 30. https://gcc.gnu.org/wiki/Fortran2008Status ! 31. https://gcc.gnu.org/wiki/Coarray ! 32. https://gcc.gnu.org/wiki/CoarrayLib ! 33. https://gcc.gnu.org/wiki/TS29113Status ! 34. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bstd_003d_007d_0040var_007bstd_007d-option-53 35. http://weekly.golang.org/doc/go1.html ! 36. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html 37. http://nongnu.org/avr-libc/ ! 38. https://gcc.gnu.org/PR54461 ! 39. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built%5f002din-Functions.html 40. https://sites.google.com/site/x32abi/ 41. http://www.dwarfstd.org/ShowIssue.php?issue=100909.1 42. http://www.dwarfstd.org/ShowIssue.php?issue=100909.2 43. http://www.dwarfstd.org/doc/040408.1.html 44. http://www.dwarfstd.org/ShowIssue.php?issue=110722.1 ! 45. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.1 46. http://weekly.golang.org/doc/go1.html ! 47. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.2 ! 48. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.3 ! 49. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.4 ! 50. https://gcc.gnu.org/onlinedocs/ ! 51. mailto:gcc-help@gcc.gnu.org ! 52. mailto:gcc@gcc.gnu.org ! 53. https://gcc.gnu.org/lists.html ! 54. http://www.fsf.org/ ! 55. https://gcc.gnu.org/about.html ! 56. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.6/index.html GCC 4.6 Release Series ! April 12, 2013 The [1]GNU project and the GCC developers are pleased to announce the ! release of GCC 4.6.4. This release is a bug-fix release, containing fixes for regressions in ! GCC 4.6.3 relative to previous releases of GCC. Release History + GCC 4.6.4 + April 12, 2013 ([2]changes, [3]documentation) + GCC 4.6.3 ! March 1, 2012 ([4]changes, [5]documentation) GCC 4.6.2 ! October 26, 2011 ([6]changes, [7]documentation) GCC 4.6.1 ! June 27, 2011 ([8]changes, [9]documentation) GCC 4.6.0 ! March 25, 2011 ([10]changes, [11]documentation) References and Acknowledgements *************** References and Acknowledgements *** 968,1025 **** supports several other languages aside from C, it now stands for the GNU Compiler Collection. ! A list of [10]successful builds is updated as new information becomes available. The GCC developers would like to thank the numerous people that have contributed new features, improvements, bug fixes, and other changes as ! well as test results to GCC. This [11]amazing group of volunteers is what makes GCC successful. ! For additional information about GCC please refer to the [12]GCC ! project web site or contact the [13]GCC development mailing list. ! To obtain GCC please use [14]our mirror sites or [15]our SVN server. For questions related to the use of GCC, please consult these web ! pages and the [16]GCC manuals. If that fails, the ! [17]gcc-help@gcc.gnu.org mailing list might help. Comments on these web pages and the development of GCC are welcome on our developer ! list at [18]gcc@gcc.gnu.org. All of [19]our lists have public archives. ! Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! These pages are [21]maintained by the GCC team. Last modified ! 2013-02-20[22]. References 1. http://www.gnu.org/ 2. http://gcc.gnu.org/gcc-4.6/changes.html ! 3. http://gcc.gnu.org/onlinedocs/4.6.3/ 4. http://gcc.gnu.org/gcc-4.6/changes.html ! 5. http://gcc.gnu.org/onlinedocs/4.6.2/ 6. http://gcc.gnu.org/gcc-4.6/changes.html ! 7. http://gcc.gnu.org/onlinedocs/4.6.1/ 8. http://gcc.gnu.org/gcc-4.6/changes.html ! 9. http://gcc.gnu.org/onlinedocs/4.6.0/ ! 10. http://gcc.gnu.org/gcc-4.6/buildstat.html ! 11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html ! 12. http://gcc.gnu.org/index.html ! 13. mailto:gcc@gcc.gnu.org ! 14. http://gcc.gnu.org/mirrors.html ! 15. http://gcc.gnu.org/svn.html ! 16. http://gcc.gnu.org/onlinedocs/ ! 17. mailto:gcc-help@gcc.gnu.org ! 18. mailto:gcc@gcc.gnu.org ! 19. http://gcc.gnu.org/lists.html ! 20. http://www.fsf.org/ ! 21. http://gcc.gnu.org/about.html ! 22. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.6/changes.html --- 984,1043 ---- supports several other languages aside from C, it now stands for the GNU Compiler Collection. ! A list of [12]successful builds is updated as new information becomes available. The GCC developers would like to thank the numerous people that have contributed new features, improvements, bug fixes, and other changes as ! well as test results to GCC. This [13]amazing group of volunteers is what makes GCC successful. ! For additional information about GCC please refer to the [14]GCC ! project web site or contact the [15]GCC development mailing list. ! To obtain GCC please use [16]our mirror sites or [17]our SVN server. For questions related to the use of GCC, please consult these web ! pages and the [18]GCC manuals. If that fails, the ! [19]gcc-help@gcc.gnu.org mailing list might help. Comments on these web pages and the development of GCC are welcome on our developer ! list at [20]gcc@gcc.gnu.org. All of [21]our lists have public archives. ! Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! These pages are [23]maintained by the GCC team. Last modified ! 2014-06-12[24]. References 1. http://www.gnu.org/ 2. http://gcc.gnu.org/gcc-4.6/changes.html ! 3. http://gcc.gnu.org/onlinedocs/4.6.4/ 4. http://gcc.gnu.org/gcc-4.6/changes.html ! 5. http://gcc.gnu.org/onlinedocs/4.6.3/ 6. http://gcc.gnu.org/gcc-4.6/changes.html ! 7. http://gcc.gnu.org/onlinedocs/4.6.2/ 8. http://gcc.gnu.org/gcc-4.6/changes.html ! 9. http://gcc.gnu.org/onlinedocs/4.6.1/ ! 10. http://gcc.gnu.org/gcc-4.6/changes.html ! 11. http://gcc.gnu.org/onlinedocs/4.6.0/ ! 12. http://gcc.gnu.org/gcc-4.6/buildstat.html ! 13. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html ! 14. http://gcc.gnu.org/index.html ! 15. mailto:gcc@gcc.gnu.org ! 16. http://gcc.gnu.org/mirrors.html ! 17. http://gcc.gnu.org/svn.html ! 18. https://gcc.gnu.org/onlinedocs/ ! 19. mailto:gcc-help@gcc.gnu.org ! 20. mailto:gcc@gcc.gnu.org ! 21. https://gcc.gnu.org/lists.html ! 22. http://www.fsf.org/ ! 23. https://gcc.gnu.org/about.html ! 24. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.6/changes.html *************** GCC 4.6.3 *** 1897,1916 **** not be complete (that is, it is possible that some PRs that have been fixed are not listed here). For questions related to the use of GCC, please consult these web ! pages and the [23]GCC manuals. If that fails, the ! [24]gcc-help@gcc.gnu.org mailing list might help. Comments on these web pages and the development of GCC are welcome on our developer ! list at [25]gcc@gcc.gnu.org. All of [26]our lists have public archives. ! Copyright (C) [27]Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! These pages are [28]maintained by the GCC team. Last modified ! 2013-01-07[29]. References --- 1915,1941 ---- not be complete (that is, it is possible that some PRs that have been fixed are not listed here). + GCC 4.6.4 + + This is the [23]list of problem reports (PRs) from GCC's bug tracking + system that are known to be fixed in the 4.6.4 release. This list might + not be complete (that is, it is possible that some PRs that have been + fixed are not listed here). + For questions related to the use of GCC, please consult these web ! pages and the [24]GCC manuals. If that fails, the ! [25]gcc-help@gcc.gnu.org mailing list might help. Comments on these web pages and the development of GCC are welcome on our developer ! list at [26]gcc@gcc.gnu.org. All of [27]our lists have public archives. ! Copyright (C) [28]Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ! These pages are [29]maintained by the GCC team. Last modified ! 2014-06-12[30]. References *************** References *** 1936,1948 **** 20. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.1 21. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.2 22. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.3 ! 23. http://gcc.gnu.org/onlinedocs/ ! 24. mailto:gcc-help@gcc.gnu.org ! 25. mailto:gcc@gcc.gnu.org ! 26. http://gcc.gnu.org/lists.html ! 27. http://www.fsf.org/ ! 28. http://gcc.gnu.org/about.html ! 29. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.5/index.html --- 1961,1974 ---- 20. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.1 21. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.2 22. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.3 ! 23. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.4 ! 24. https://gcc.gnu.org/onlinedocs/ ! 25. mailto:gcc-help@gcc.gnu.org ! 26. mailto:gcc@gcc.gnu.org ! 27. https://gcc.gnu.org/lists.html ! 28. http://www.fsf.org/ ! 29. https://gcc.gnu.org/about.html ! 30. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.5/index.html *************** References and Acknowledgements *** 2005,2011 **** provided this notice is preserved. These pages are [18]maintained by the GCC team. Last modified ! 2012-11-02[19]. References --- 2031,2037 ---- provided this notice is preserved. These pages are [18]maintained by the GCC team. Last modified ! 2014-06-12[19]. References *************** References *** 2021,2032 **** 10. mailto:gcc@gcc.gnu.org 11. http://gcc.gnu.org/mirrors.html 12. http://gcc.gnu.org/svn.html ! 13. http://gcc.gnu.org/onlinedocs/ 14. mailto:gcc-help@gcc.gnu.org 15. mailto:gcc@gcc.gnu.org ! 16. http://gcc.gnu.org/lists.html 17. http://www.fsf.org/ ! 18. http://gcc.gnu.org/about.html 19. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.5/changes.html --- 2047,2058 ---- 10. mailto:gcc@gcc.gnu.org 11. http://gcc.gnu.org/mirrors.html 12. http://gcc.gnu.org/svn.html ! 13. https://gcc.gnu.org/onlinedocs/ 14. mailto:gcc-help@gcc.gnu.org 15. mailto:gcc@gcc.gnu.org ! 16. https://gcc.gnu.org/lists.html 17. http://www.fsf.org/ ! 18. https://gcc.gnu.org/about.html 19. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.5/changes.html *************** GCC 4.5.4 *** 2677,2683 **** provided this notice is preserved. These pages are [34]maintained by the GCC team. Last modified ! 2012-11-02[35]. References --- 2703,2709 ---- provided this notice is preserved. These pages are [34]maintained by the GCC team. Last modified ! 2014-06-12[35]. References *************** References *** 2709,2720 **** 26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2 27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3 28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4 ! 29. http://gcc.gnu.org/onlinedocs/ 30. mailto:gcc-help@gcc.gnu.org 31. mailto:gcc@gcc.gnu.org ! 32. http://gcc.gnu.org/lists.html 33. http://www.fsf.org/ ! 34. http://gcc.gnu.org/about.html 35. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.4/index.html --- 2735,2746 ---- 26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2 27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3 28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4 ! 29. https://gcc.gnu.org/onlinedocs/ 30. mailto:gcc-help@gcc.gnu.org 31. mailto:gcc@gcc.gnu.org ! 32. https://gcc.gnu.org/lists.html 33. http://www.fsf.org/ ! 34. https://gcc.gnu.org/about.html 35. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.4/index.html *************** References and Acknowledgements *** 2787,2793 **** provided this notice is preserved. These pages are [21]maintained by the GCC team. Last modified ! 2012-11-02[22]. References --- 2813,2819 ---- provided this notice is preserved. These pages are [21]maintained by the GCC team. Last modified ! 2014-06-12[22]. References *************** References *** 2806,2817 **** 13. mailto:gcc@gcc.gnu.org 14. http://gcc.gnu.org/mirrors.html 15. http://gcc.gnu.org/svn.html ! 16. http://gcc.gnu.org/onlinedocs/ 17. mailto:gcc-help@gcc.gnu.org 18. mailto:gcc@gcc.gnu.org ! 19. http://gcc.gnu.org/lists.html 20. http://www.fsf.org/ ! 21. http://gcc.gnu.org/about.html 22. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.4/changes.html --- 2832,2843 ---- 13. mailto:gcc@gcc.gnu.org 14. http://gcc.gnu.org/mirrors.html 15. http://gcc.gnu.org/svn.html ! 16. https://gcc.gnu.org/onlinedocs/ 17. mailto:gcc-help@gcc.gnu.org 18. mailto:gcc@gcc.gnu.org ! 19. https://gcc.gnu.org/lists.html 20. http://www.fsf.org/ ! 21. https://gcc.gnu.org/about.html 22. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.4/changes.html *************** GCC 4.4.7 *** 3418,3424 **** provided this notice is preserved. These pages are [25]maintained by the GCC team. Last modified ! 2012-11-02[26]. References --- 3444,3450 ---- provided this notice is preserved. These pages are [25]maintained by the GCC team. Last modified ! 2014-06-12[26]. References *************** References *** 3441,3452 **** 17. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.5 18. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.6 19. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.7 ! 20. http://gcc.gnu.org/onlinedocs/ 21. mailto:gcc-help@gcc.gnu.org 22. mailto:gcc@gcc.gnu.org ! 23. http://gcc.gnu.org/lists.html 24. http://www.fsf.org/ ! 25. http://gcc.gnu.org/about.html 26. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.3/index.html --- 3467,3478 ---- 17. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.5 18. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.6 19. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.7 ! 20. https://gcc.gnu.org/onlinedocs/ 21. mailto:gcc-help@gcc.gnu.org 22. mailto:gcc@gcc.gnu.org ! 23. https://gcc.gnu.org/lists.html 24. http://www.fsf.org/ ! 25. https://gcc.gnu.org/about.html 26. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.3/index.html *************** References and Acknowledgements *** 3516,3522 **** provided this notice is preserved. These pages are [20]maintained by the GCC team. Last modified ! 2012-11-02[21]. References --- 3542,3548 ---- provided this notice is preserved. These pages are [20]maintained by the GCC team. Last modified ! 2014-06-12[21]. References *************** References *** 3534,3545 **** 12. mailto:gcc@gcc.gnu.org 13. http://gcc.gnu.org/mirrors.html 14. http://gcc.gnu.org/svn.html ! 15. http://gcc.gnu.org/onlinedocs/ 16. mailto:gcc-help@gcc.gnu.org 17. mailto:gcc@gcc.gnu.org ! 18. http://gcc.gnu.org/lists.html 19. http://www.fsf.org/ ! 20. http://gcc.gnu.org/about.html 21. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.3/changes.html --- 3560,3571 ---- 12. mailto:gcc@gcc.gnu.org 13. http://gcc.gnu.org/mirrors.html 14. http://gcc.gnu.org/svn.html ! 15. https://gcc.gnu.org/onlinedocs/ 16. mailto:gcc-help@gcc.gnu.org 17. mailto:gcc@gcc.gnu.org ! 18. https://gcc.gnu.org/lists.html 19. http://www.fsf.org/ ! 20. https://gcc.gnu.org/about.html 21. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.3/changes.html *************** GCC 4.3.6 *** 4322,4328 **** provided this notice is preserved. These pages are [36]maintained by the GCC team. Last modified ! 2012-11-02[37]. References --- 4348,4354 ---- provided this notice is preserved. These pages are [36]maintained by the GCC team. Last modified ! 2014-06-12[37]. References *************** References *** 4356,4367 **** 28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4 29. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5 30. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6 ! 31. http://gcc.gnu.org/onlinedocs/ 32. mailto:gcc-help@gcc.gnu.org 33. mailto:gcc@gcc.gnu.org ! 34. http://gcc.gnu.org/lists.html 35. http://www.fsf.org/ ! 36. http://gcc.gnu.org/about.html 37. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.2/index.html --- 4382,4393 ---- 28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4 29. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5 30. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6 ! 31. https://gcc.gnu.org/onlinedocs/ 32. mailto:gcc-help@gcc.gnu.org 33. mailto:gcc@gcc.gnu.org ! 34. https://gcc.gnu.org/lists.html 35. http://www.fsf.org/ ! 36. https://gcc.gnu.org/about.html 37. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.2/index.html *************** References and Acknowledgements *** 4425,4431 **** provided this notice is preserved. These pages are [18]maintained by the GCC team. Last modified ! 2012-11-02[19]. References --- 4451,4457 ---- provided this notice is preserved. These pages are [18]maintained by the GCC team. Last modified ! 2014-06-12[19]. References *************** References *** 4441,4452 **** 10. mailto:gcc@gcc.gnu.org 11. http://gcc.gnu.org/mirrors.html 12. http://gcc.gnu.org/svn.html ! 13. http://gcc.gnu.org/onlinedocs/ 14. mailto:gcc-help@gcc.gnu.org 15. mailto:gcc@gcc.gnu.org ! 16. http://gcc.gnu.org/lists.html 17. http://www.fsf.org/ ! 18. http://gcc.gnu.org/about.html 19. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.2/changes.html --- 4467,4478 ---- 10. mailto:gcc@gcc.gnu.org 11. http://gcc.gnu.org/mirrors.html 12. http://gcc.gnu.org/svn.html ! 13. https://gcc.gnu.org/onlinedocs/ 14. mailto:gcc-help@gcc.gnu.org 15. mailto:gcc@gcc.gnu.org ! 16. https://gcc.gnu.org/lists.html 17. http://www.fsf.org/ ! 18. https://gcc.gnu.org/about.html 19. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.2/changes.html *************** Other significant improvements *** 4755,4761 **** provided this notice is preserved. These pages are [12]maintained by the GCC team. Last modified ! 2012-11-02[13]. References --- 4781,4787 ---- provided this notice is preserved. These pages are [12]maintained by the GCC team. Last modified ! 2014-06-12[13]. References *************** References *** 4765,4776 **** 4. http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html 5. http://gcc.gnu.org/onlinedocs/gfortran/Runtime-Options.html 6. http://gcc.gnu.org/wiki/Statically_linking_libgcj ! 7. http://gcc.gnu.org/onlinedocs/ 8. mailto:gcc-help@gcc.gnu.org 9. mailto:gcc@gcc.gnu.org ! 10. http://gcc.gnu.org/lists.html 11. http://www.fsf.org/ ! 12. http://gcc.gnu.org/about.html 13. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.1/index.html --- 4791,4802 ---- 4. http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html 5. http://gcc.gnu.org/onlinedocs/gfortran/Runtime-Options.html 6. http://gcc.gnu.org/wiki/Statically_linking_libgcj ! 7. https://gcc.gnu.org/onlinedocs/ 8. mailto:gcc-help@gcc.gnu.org 9. mailto:gcc@gcc.gnu.org ! 10. https://gcc.gnu.org/lists.html 11. http://www.fsf.org/ ! 12. https://gcc.gnu.org/about.html 13. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.1/index.html *************** References and Acknowledgements *** 4828,4834 **** provided this notice is preserved. These pages are [16]maintained by the GCC team. Last modified ! 2012-11-02[17]. References --- 4854,4860 ---- provided this notice is preserved. These pages are [16]maintained by the GCC team. Last modified ! 2014-06-12[17]. References *************** References *** 4842,4853 **** 8. mailto:gcc@gcc.gnu.org 9. http://gcc.gnu.org/mirrors.html 10. http://gcc.gnu.org/svn.html ! 11. http://gcc.gnu.org/onlinedocs/ 12. mailto:gcc-help@gcc.gnu.org 13. mailto:gcc@gcc.gnu.org ! 14. http://gcc.gnu.org/lists.html 15. http://www.fsf.org/ ! 16. http://gcc.gnu.org/about.html 17. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.1/changes.html --- 4868,4879 ---- 8. mailto:gcc@gcc.gnu.org 9. http://gcc.gnu.org/mirrors.html 10. http://gcc.gnu.org/svn.html ! 11. https://gcc.gnu.org/onlinedocs/ 12. mailto:gcc-help@gcc.gnu.org 13. mailto:gcc@gcc.gnu.org ! 14. https://gcc.gnu.org/lists.html 15. http://www.fsf.org/ ! 16. https://gcc.gnu.org/about.html 17. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.1/changes.html *************** GCC 4.1.2 *** 5392,5398 **** provided this notice is preserved. These pages are [12]maintained by the GCC team. Last modified ! 2012-11-02[13]. References --- 5418,5424 ---- provided this notice is preserved. These pages are [12]maintained by the GCC team. Last modified ! 2014-06-12[13]. References *************** References *** 5402,5413 **** 4. http://developer.classpath.org/doc/ 5. http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html 6. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.1.2 ! 7. http://gcc.gnu.org/onlinedocs/ 8. mailto:gcc-help@gcc.gnu.org 9. mailto:gcc@gcc.gnu.org ! 10. http://gcc.gnu.org/lists.html 11. http://www.fsf.org/ ! 12. http://gcc.gnu.org/about.html 13. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.0/index.html --- 5428,5439 ---- 4. http://developer.classpath.org/doc/ 5. http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html 6. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.1.2 ! 7. https://gcc.gnu.org/onlinedocs/ 8. mailto:gcc-help@gcc.gnu.org 9. mailto:gcc@gcc.gnu.org ! 10. https://gcc.gnu.org/lists.html 11. http://www.fsf.org/ ! 12. https://gcc.gnu.org/about.html 13. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.0/index.html *************** References and Acknowledgements *** 5471,5477 **** provided this notice is preserved. These pages are [18]maintained by the GCC team. Last modified ! 2012-11-02[19]. References --- 5497,5503 ---- provided this notice is preserved. These pages are [18]maintained by the GCC team. Last modified ! 2014-06-12[19]. References *************** References *** 5487,5498 **** 10. mailto:gcc@gcc.gnu.org 11. http://gcc.gnu.org/mirrors.html 12. http://gcc.gnu.org/svn.html ! 13. http://gcc.gnu.org/onlinedocs/ 14. mailto:gcc-help@gcc.gnu.org 15. mailto:gcc@gcc.gnu.org ! 16. http://gcc.gnu.org/lists.html 17. http://www.fsf.org/ ! 18. http://gcc.gnu.org/about.html 19. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.0/changes.html --- 5513,5524 ---- 10. mailto:gcc@gcc.gnu.org 11. http://gcc.gnu.org/mirrors.html 12. http://gcc.gnu.org/svn.html ! 13. https://gcc.gnu.org/onlinedocs/ 14. mailto:gcc-help@gcc.gnu.org 15. mailto:gcc@gcc.gnu.org ! 16. https://gcc.gnu.org/lists.html 17. http://www.fsf.org/ ! 18. https://gcc.gnu.org/about.html 19. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-4.0/changes.html *************** GCC 4.0.4 *** 5998,6004 **** provided this notice is preserved. These pages are [21]maintained by the GCC team. Last modified ! 2012-11-02[22]. References --- 6024,6030 ---- provided this notice is preserved. These pages are [21]maintained by the GCC team. Last modified ! 2014-06-12[22]. References *************** References *** 6017,6028 **** 13. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.2 14. http://gcc.gnu.org/ml/gcc-cvs/2005-09/msg00984.html 15. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.4 ! 16. http://gcc.gnu.org/onlinedocs/ 17. mailto:gcc-help@gcc.gnu.org 18. mailto:gcc@gcc.gnu.org ! 19. http://gcc.gnu.org/lists.html 20. http://www.fsf.org/ ! 21. http://gcc.gnu.org/about.html 22. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.4/index.html --- 6043,6054 ---- 13. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.2 14. http://gcc.gnu.org/ml/gcc-cvs/2005-09/msg00984.html 15. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.4 ! 16. https://gcc.gnu.org/onlinedocs/ 17. mailto:gcc-help@gcc.gnu.org 18. mailto:gcc@gcc.gnu.org ! 19. https://gcc.gnu.org/lists.html 20. http://www.fsf.org/ ! 21. https://gcc.gnu.org/about.html 22. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.4/index.html *************** References and Acknowledgements *** 6097,6103 **** provided this notice is preserved. These pages are [22]maintained by the GCC team. Last modified ! 2012-11-02[23]. References --- 6123,6129 ---- provided this notice is preserved. These pages are [22]maintained by the GCC team. Last modified ! 2014-06-12[23]. References *************** References *** 6117,6128 **** 14. mailto:gcc@gcc.gnu.org 15. http://gcc.gnu.org/mirrors.html 16. http://gcc.gnu.org/svn.html ! 17. http://gcc.gnu.org/onlinedocs/ 18. mailto:gcc-help@gcc.gnu.org 19. mailto:gcc@gcc.gnu.org ! 20. http://gcc.gnu.org/lists.html 21. http://www.fsf.org/ ! 22. http://gcc.gnu.org/about.html 23. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.4/changes.html --- 6143,6154 ---- 14. mailto:gcc@gcc.gnu.org 15. http://gcc.gnu.org/mirrors.html 16. http://gcc.gnu.org/svn.html ! 17. https://gcc.gnu.org/onlinedocs/ 18. mailto:gcc-help@gcc.gnu.org 19. mailto:gcc@gcc.gnu.org ! 20. https://gcc.gnu.org/lists.html 21. http://www.fsf.org/ ! 22. https://gcc.gnu.org/about.html 23. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.4/changes.html *************** GCC 3.4.6 *** 7886,7892 **** provided this notice is preserved. These pages are [417]maintained by the GCC team. Last modified ! 2012-11-02[418]. References --- 7912,7918 ---- provided this notice is preserved. These pages are [417]maintained by the GCC team. Last modified ! 2014-06-12[418]. References *************** References *** 8301,8312 **** 409. http://gcc.gnu.org/PR21716 410. http://gcc.gnu.org/PR24315 411. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.6 ! 412. http://gcc.gnu.org/onlinedocs/ 413. mailto:gcc-help@gcc.gnu.org 414. mailto:gcc@gcc.gnu.org ! 415. http://gcc.gnu.org/lists.html 416. http://www.fsf.org/ ! 417. http://gcc.gnu.org/about.html 418. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.3/index.html --- 8327,8338 ---- 409. http://gcc.gnu.org/PR21716 410. http://gcc.gnu.org/PR24315 411. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.6 ! 412. https://gcc.gnu.org/onlinedocs/ 413. mailto:gcc-help@gcc.gnu.org 414. mailto:gcc@gcc.gnu.org ! 415. https://gcc.gnu.org/lists.html 416. http://www.fsf.org/ ! 417. https://gcc.gnu.org/about.html 418. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.3/index.html *************** References and Acknowledgements *** 8382,8388 **** provided this notice is preserved. These pages are [21]maintained by the GCC team. Last modified ! 2012-11-02[22]. References --- 8408,8414 ---- provided this notice is preserved. These pages are [21]maintained by the GCC team. Last modified ! 2014-06-12[22]. References *************** References *** 8401,8412 **** 13. http://gcc.gnu.org/index.html 14. mailto:gcc@gcc.gnu.org 15. http://gcc.gnu.org/mirrors.html ! 16. http://gcc.gnu.org/onlinedocs/ 17. mailto:gcc-help@gcc.gnu.org 18. mailto:gcc@gcc.gnu.org ! 19. http://gcc.gnu.org/lists.html 20. http://www.fsf.org/ ! 21. http://gcc.gnu.org/about.html 22. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.3/changes.html --- 8427,8438 ---- 13. http://gcc.gnu.org/index.html 14. mailto:gcc@gcc.gnu.org 15. http://gcc.gnu.org/mirrors.html ! 16. https://gcc.gnu.org/onlinedocs/ 17. mailto:gcc-help@gcc.gnu.org 18. mailto:gcc@gcc.gnu.org ! 19. https://gcc.gnu.org/lists.html 20. http://www.fsf.org/ ! 21. https://gcc.gnu.org/about.html 22. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.3/changes.html *************** GCC 3.3.6 *** 9758,9764 **** provided this notice is preserved. These pages are [558]maintained by the GCC team. Last modified ! 2012-11-02[559]. References --- 9784,9790 ---- provided this notice is preserved. These pages are [558]maintained by the GCC team. Last modified ! 2014-06-12[559]. References *************** References *** 9767,9773 **** 3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems 4. http://gcc.gnu.org/gcc-3.3/changes.html#nonnull_attribute 5. http://gcc.gnu.org/news/dfa.html ! 6. http://gcc.gnu.org/gcc-3.3/c99status.html 7. http://gcc.gnu.org/onlinedocs/gcc-3.3.6/g77/News.html 8. http://gcc.gnu.org/PR10140 9. http://gcc.gnu.org/PR10198 --- 9793,9799 ---- 3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems 4. http://gcc.gnu.org/gcc-3.3/changes.html#nonnull_attribute 5. http://gcc.gnu.org/news/dfa.html ! 6. http://gcc.gnu.org/c99status.html 7. http://gcc.gnu.org/onlinedocs/gcc-3.3.6/g77/News.html 8. http://gcc.gnu.org/PR10140 9. http://gcc.gnu.org/PR10198 *************** References *** 10314,10325 **** 550. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.4 551. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.5 552. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.6 ! 553. http://gcc.gnu.org/onlinedocs/ 554. mailto:gcc-help@gcc.gnu.org 555. mailto:gcc@gcc.gnu.org ! 556. http://gcc.gnu.org/lists.html 557. http://www.fsf.org/ ! 558. http://gcc.gnu.org/about.html 559. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.2/index.html --- 10340,10351 ---- 550. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.4 551. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.5 552. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.6 ! 553. https://gcc.gnu.org/onlinedocs/ 554. mailto:gcc-help@gcc.gnu.org 555. mailto:gcc@gcc.gnu.org ! 556. https://gcc.gnu.org/lists.html 557. http://www.fsf.org/ ! 558. https://gcc.gnu.org/about.html 559. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.2/index.html *************** References and Acknowledgements *** 10389,10395 **** provided this notice is preserved. These pages are [17]maintained by the GCC team. Last modified ! 2012-11-02[18]. References --- 10415,10421 ---- provided this notice is preserved. These pages are [17]maintained by the GCC team. Last modified ! 2014-06-12[18]. References *************** References *** 10404,10415 **** 9. http://gcc.gnu.org/index.html 10. mailto:gcc@gcc.gnu.org 11. http://gcc.gnu.org/mirrors.html ! 12. http://gcc.gnu.org/onlinedocs/ 13. mailto:gcc-help@gcc.gnu.org 14. mailto:gcc@gcc.gnu.org ! 15. http://gcc.gnu.org/lists.html 16. http://www.fsf.org/ ! 17. http://gcc.gnu.org/about.html 18. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.2/changes.html --- 10430,10441 ---- 9. http://gcc.gnu.org/index.html 10. mailto:gcc@gcc.gnu.org 11. http://gcc.gnu.org/mirrors.html ! 12. https://gcc.gnu.org/onlinedocs/ 13. mailto:gcc-help@gcc.gnu.org 14. mailto:gcc@gcc.gnu.org ! 15. https://gcc.gnu.org/lists.html 16. http://www.fsf.org/ ! 17. https://gcc.gnu.org/about.html 18. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.2/changes.html *************** GCC 3.2 *** 11013,11019 **** provided this notice is preserved. These pages are [251]maintained by the GCC team. Last modified ! 2012-11-02[252]. References --- 11039,11045 ---- provided this notice is preserved. These pages are [251]maintained by the GCC team. Last modified ! 2014-06-12[252]. References *************** References *** 11262,11273 **** 243. http://gcc.gnu.org/PR7442 244. http://gcc.gnu.org/PR7445 245. http://gcc.gnu.org/PR7291 ! 246. http://gcc.gnu.org/onlinedocs/ 247. mailto:gcc-help@gcc.gnu.org 248. mailto:gcc@gcc.gnu.org ! 249. http://gcc.gnu.org/lists.html 250. http://www.fsf.org/ ! 251. http://gcc.gnu.org/about.html 252. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.1/index.html --- 11288,11299 ---- 243. http://gcc.gnu.org/PR7442 244. http://gcc.gnu.org/PR7445 245. http://gcc.gnu.org/PR7291 ! 246. https://gcc.gnu.org/onlinedocs/ 247. mailto:gcc-help@gcc.gnu.org 248. mailto:gcc@gcc.gnu.org ! 249. https://gcc.gnu.org/lists.html 250. http://www.fsf.org/ ! 251. https://gcc.gnu.org/about.html 252. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.1/index.html *************** http://gcc.gnu.org/gcc-3.1/index.html *** 11317,11323 **** provided this notice is preserved. These pages are [14]maintained by the GCC team. Last modified ! 2012-11-02[15]. References --- 11343,11349 ---- provided this notice is preserved. These pages are [14]maintained by the GCC team. Last modified ! 2014-06-12[15]. References *************** References *** 11329,11340 **** 6. http://gcc.gnu.org/index.html 7. mailto:gcc@gcc.gnu.org 8. http://gcc.gnu.org/mirrors.html ! 9. http://gcc.gnu.org/onlinedocs/ 10. mailto:gcc-help@gcc.gnu.org 11. mailto:gcc@gcc.gnu.org ! 12. http://gcc.gnu.org/lists.html 13. http://www.fsf.org/ ! 14. http://gcc.gnu.org/about.html 15. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.1/changes.html --- 11355,11366 ---- 6. http://gcc.gnu.org/index.html 7. mailto:gcc@gcc.gnu.org 8. http://gcc.gnu.org/mirrors.html ! 9. https://gcc.gnu.org/onlinedocs/ 10. mailto:gcc-help@gcc.gnu.org 11. mailto:gcc@gcc.gnu.org ! 12. https://gcc.gnu.org/lists.html 13. http://www.fsf.org/ ! 14. https://gcc.gnu.org/about.html 15. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.1/changes.html *************** Documentation improvements *** 11673,11686 **** provided this notice is preserved. These pages are [18]maintained by the GCC team. Last modified ! 2012-11-02[19]. References 1. http://gcc.gnu.org/ml/gcc/2002-07/msg01208.html 2. http://gcc.gnu.org/news/profiledriven.html 3. http://gcc.gnu.org/benchmarks/ ! 4. http://gcc.gnu.org/gcc-3.1/c99status.html 5. http://gcc.gnu.org/onlinedocs/libstdc++/faq.html 6. http://gcc.gnu.org/onlinedocs/gcc-3.1.1/g77/News.html 7. http://www.adacore.com/ --- 11699,11712 ---- provided this notice is preserved. These pages are [18]maintained by the GCC team. Last modified ! 2014-06-12[19]. References 1. http://gcc.gnu.org/ml/gcc/2002-07/msg01208.html 2. http://gcc.gnu.org/news/profiledriven.html 3. http://gcc.gnu.org/benchmarks/ ! 4. http://gcc.gnu.org/c99status.html 5. http://gcc.gnu.org/onlinedocs/libstdc++/faq.html 6. http://gcc.gnu.org/onlinedocs/gcc-3.1.1/g77/News.html 7. http://www.adacore.com/ *************** References *** 11689,11703 **** 10. http://developer.axis.com/ 11. http://www.superh.com/ 12. http://www.x86-64.org/ ! 13. http://gcc.gnu.org/onlinedocs/ 14. mailto:gcc-help@gcc.gnu.org 15. mailto:gcc@gcc.gnu.org ! 16. http://gcc.gnu.org/lists.html 17. http://www.fsf.org/ ! 18. http://gcc.gnu.org/about.html 19. http://validator.w3.org/check/referer ====================================================================== ! http://gcc.gnu.org/gcc-3.0/gcc-3.0.html GCC 3.0.4 --- 11715,11729 ---- 10. http://developer.axis.com/ 11. http://www.superh.com/ 12. http://www.x86-64.org/ ! 13. https://gcc.gnu.org/onlinedocs/ 14. mailto:gcc-help@gcc.gnu.org 15. mailto:gcc@gcc.gnu.org ! 16. https://gcc.gnu.org/lists.html 17. http://www.fsf.org/ ! 18. https://gcc.gnu.org/about.html 19. http://validator.w3.org/check/referer ====================================================================== ! http://gcc.gnu.org/gcc-3.0/index.html GCC 3.0.4 *************** Previous 3.0.x Releases *** 11751,11757 **** provided this notice is preserved. These pages are [14]maintained by the GCC team. Last modified ! 2012-11-02[15]. References --- 11777,11783 ---- provided this notice is preserved. These pages are [14]maintained by the GCC team. Last modified ! 2014-06-12[15]. References *************** References *** 11763,11774 **** 6. http://gcc.gnu.org/index.html 7. mailto:gcc@gcc.gnu.org 8. http://gcc.gnu.org/mirrors.html ! 9. http://gcc.gnu.org/onlinedocs/ 10. mailto:gcc-help@gcc.gnu.org 11. mailto:gcc@gcc.gnu.org ! 12. http://gcc.gnu.org/lists.html 13. http://www.fsf.org/ ! 14. http://gcc.gnu.org/about.html 15. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.0/features.html --- 11789,11800 ---- 6. http://gcc.gnu.org/index.html 7. mailto:gcc@gcc.gnu.org 8. http://gcc.gnu.org/mirrors.html ! 9. https://gcc.gnu.org/onlinedocs/ 10. mailto:gcc-help@gcc.gnu.org 11. mailto:gcc@gcc.gnu.org ! 12. https://gcc.gnu.org/lists.html 13. http://www.fsf.org/ ! 14. https://gcc.gnu.org/about.html 15. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.0/features.html *************** New Languages and Language specific impr *** 11872,11878 **** New Targets and Target Specific Improvements ! * New x86 back-end, generating much improved code. * Support for a generic i386-elf target contributed. * New option to emit x86 assembly code using Intel style syntax (-mintel-syntax). --- 11898,11904 ---- New Targets and Target Specific Improvements ! * New x86 back end, generating much improved code. * Support for a generic i386-elf target contributed. * New option to emit x86 assembly code using Intel style syntax (-mintel-syntax). *************** Other significant improvements *** 11943,11949 **** provided this notice is preserved. These pages are [19]maintained by the GCC team. Last modified ! 2012-11-02[20]. References --- 11969,11975 ---- provided this notice is preserved. These pages are [19]maintained by the GCC team. Last modified ! 2014-06-12[20]. References *************** References *** 11956,11971 **** 7. http://gcc.gnu.org/libstdc++/ 8. http://gcc.gnu.org/news/inlining.html 9. http://gcc.gnu.org/news/dependencies.html ! 10. http://gcc.gnu.org/gcc-3.0/c99status.html 11. http://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html 12. http://gcc.gnu.org/gcc-3.0/libgcc.html 13. http://gcc.gnu.org/gcc-2.95/features.html ! 14. http://gcc.gnu.org/onlinedocs/ 15. mailto:gcc-help@gcc.gnu.org 16. mailto:gcc@gcc.gnu.org ! 17. http://gcc.gnu.org/lists.html 18. http://www.fsf.org/ ! 19. http://gcc.gnu.org/about.html 20. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.0/caveats.html --- 11982,11997 ---- 7. http://gcc.gnu.org/libstdc++/ 8. http://gcc.gnu.org/news/inlining.html 9. http://gcc.gnu.org/news/dependencies.html ! 10. http://gcc.gnu.org/c99status.html 11. http://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html 12. http://gcc.gnu.org/gcc-3.0/libgcc.html 13. http://gcc.gnu.org/gcc-2.95/features.html ! 14. https://gcc.gnu.org/onlinedocs/ 15. mailto:gcc-help@gcc.gnu.org 16. mailto:gcc@gcc.gnu.org ! 17. https://gcc.gnu.org/lists.html 18. http://www.fsf.org/ ! 19. https://gcc.gnu.org/about.html 20. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-3.0/caveats.html *************** http://gcc.gnu.org/gcc-3.0/caveats.html *** 12016,12032 **** provided this notice is preserved. These pages are [7]maintained by the GCC team. Last modified ! 2012-11-02[8]. References 1. http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html ! 2. http://gcc.gnu.org/onlinedocs/ 3. mailto:gcc-help@gcc.gnu.org 4. mailto:gcc@gcc.gnu.org ! 5. http://gcc.gnu.org/lists.html 6. http://www.fsf.org/ ! 7. http://gcc.gnu.org/about.html 8. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-2.95/index.html --- 12042,12058 ---- provided this notice is preserved. These pages are [7]maintained by the GCC team. Last modified ! 2014-06-12[8]. References 1. http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html ! 2. https://gcc.gnu.org/onlinedocs/ 3. mailto:gcc-help@gcc.gnu.org 4. mailto:gcc@gcc.gnu.org ! 5. https://gcc.gnu.org/lists.html 6. http://www.fsf.org/ ! 7. https://gcc.gnu.org/about.html 8. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-2.95/index.html *************** References and Acknowledgements *** 12097,12103 **** provided this notice is preserved. These pages are [16]maintained by the GCC team. Last modified ! 2012-11-02[17]. References --- 12123,12129 ---- provided this notice is preserved. These pages are [16]maintained by the GCC team. Last modified ! 2014-06-12[17]. References *************** References *** 12111,12122 **** 8. http://gcc.gnu.org/mirrors.html 9. http://gcc.gnu.org/index.html 10. mailto:gcc@gcc.gnu.org ! 11. http://gcc.gnu.org/onlinedocs/ 12. mailto:gcc-help@gcc.gnu.org 13. mailto:gcc@gcc.gnu.org ! 14. http://gcc.gnu.org/lists.html 15. http://www.fsf.org/ ! 16. http://gcc.gnu.org/about.html 17. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-2.95/features.html --- 12137,12148 ---- 8. http://gcc.gnu.org/mirrors.html 9. http://gcc.gnu.org/index.html 10. mailto:gcc@gcc.gnu.org ! 11. https://gcc.gnu.org/onlinedocs/ 12. mailto:gcc-help@gcc.gnu.org 13. mailto:gcc@gcc.gnu.org ! 14. https://gcc.gnu.org/lists.html 15. http://www.fsf.org/ ! 16. https://gcc.gnu.org/about.html 17. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-2.95/features.html *************** Additional Changes in GCC 2.95.3 *** 12364,12370 **** provided this notice is preserved. These pages are [22]maintained by the GCC team. Last modified ! 2012-11-02[23]. References --- 12390,12396 ---- provided this notice is preserved. These pages are [22]maintained by the GCC team. Last modified ! 2014-06-12[23]. References *************** References *** 12384,12395 **** 14. http://gcc.gnu.org/news/sparc.html 15. http://gcc.gnu.org/news/egcs-vcg.html 16. http://gcc.gnu.org/egcs-1.0/features-2.8.html ! 17. http://gcc.gnu.org/onlinedocs/ 18. mailto:gcc-help@gcc.gnu.org 19. mailto:gcc@gcc.gnu.org ! 20. http://gcc.gnu.org/lists.html 21. http://www.fsf.org/ ! 22. http://gcc.gnu.org/about.html 23. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-2.95/caveats.html --- 12410,12421 ---- 14. http://gcc.gnu.org/news/sparc.html 15. http://gcc.gnu.org/news/egcs-vcg.html 16. http://gcc.gnu.org/egcs-1.0/features-2.8.html ! 17. https://gcc.gnu.org/onlinedocs/ 18. mailto:gcc-help@gcc.gnu.org 19. mailto:gcc@gcc.gnu.org ! 20. https://gcc.gnu.org/lists.html 21. http://www.fsf.org/ ! 22. https://gcc.gnu.org/about.html 23. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-2.95/caveats.html *************** http://gcc.gnu.org/gcc-2.95/caveats.html *** 12448,12464 **** provided this notice is preserved. These pages are [7]maintained by the GCC team. Last modified ! 2012-11-02[8]. References 1. ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz ! 2. http://gcc.gnu.org/onlinedocs/ 3. mailto:gcc-help@gcc.gnu.org 4. mailto:gcc@gcc.gnu.org ! 5. http://gcc.gnu.org/lists.html 6. http://www.fsf.org/ ! 7. http://gcc.gnu.org/about.html 8. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/egcs-1.1/index.html --- 12474,12490 ---- provided this notice is preserved. These pages are [7]maintained by the GCC team. Last modified ! 2014-06-12[8]. References 1. ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz ! 2. https://gcc.gnu.org/onlinedocs/ 3. mailto:gcc-help@gcc.gnu.org 4. mailto:gcc@gcc.gnu.org ! 5. https://gcc.gnu.org/lists.html 6. http://www.fsf.org/ ! 7. https://gcc.gnu.org/about.html 8. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/egcs-1.1/index.html *************** http://gcc.gnu.org/egcs-1.1/index.html *** 12670,12676 **** provided this notice is preserved. These pages are [16]maintained by the GCC team. Last modified ! 2012-11-02[17]. References --- 12696,12702 ---- provided this notice is preserved. These pages are [16]maintained by the GCC team. Last modified ! 2014-06-12[17]. References *************** References *** 12684,12695 **** 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 9. http://gcc.gnu.org/egcs-1.1/caveats.html 10. http://gcc.gnu.org/mirrors.html ! 11. http://gcc.gnu.org/onlinedocs/ 12. mailto:gcc-help@gcc.gnu.org 13. mailto:gcc@gcc.gnu.org ! 14. http://gcc.gnu.org/lists.html 15. http://www.fsf.org/ ! 16. http://gcc.gnu.org/about.html 17. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/egcs-1.1/features.html --- 12710,12721 ---- 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html 9. http://gcc.gnu.org/egcs-1.1/caveats.html 10. http://gcc.gnu.org/mirrors.html ! 11. https://gcc.gnu.org/onlinedocs/ 12. mailto:gcc-help@gcc.gnu.org 13. mailto:gcc@gcc.gnu.org ! 14. https://gcc.gnu.org/lists.html 15. http://www.fsf.org/ ! 16. https://gcc.gnu.org/about.html 17. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/egcs-1.1/features.html *************** http://gcc.gnu.org/egcs-1.1/features.htm *** 12771,12777 **** provided this notice is preserved. These pages are [10]maintained by the GCC team. Last modified ! 2012-11-02[11]. References --- 12797,12803 ---- provided this notice is preserved. These pages are [10]maintained by the GCC team. Last modified ! 2014-06-12[11]. References *************** References *** 12779,12790 **** 2. http://gcc.gnu.org/news/gcse.html 3. http://gcc.gnu.org/news/alias.html 4. http://gcc.gnu.org/egcs-1.0/features-2.8.html ! 5. http://gcc.gnu.org/onlinedocs/ 6. mailto:gcc-help@gcc.gnu.org 7. mailto:gcc@gcc.gnu.org ! 8. http://gcc.gnu.org/lists.html 9. http://www.fsf.org/ ! 10. http://gcc.gnu.org/about.html 11. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/egcs-1.1/caveats.html --- 12805,12816 ---- 2. http://gcc.gnu.org/news/gcse.html 3. http://gcc.gnu.org/news/alias.html 4. http://gcc.gnu.org/egcs-1.0/features-2.8.html ! 5. https://gcc.gnu.org/onlinedocs/ 6. mailto:gcc-help@gcc.gnu.org 7. mailto:gcc@gcc.gnu.org ! 8. https://gcc.gnu.org/lists.html 9. http://www.fsf.org/ ! 10. https://gcc.gnu.org/about.html 11. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/egcs-1.1/caveats.html *************** http://gcc.gnu.org/egcs-1.1/caveats.html *** 12826,12841 **** provided this notice is preserved. These pages are [6]maintained by the GCC team. Last modified ! 2012-11-02[7]. References ! 1. http://gcc.gnu.org/onlinedocs/ 2. mailto:gcc-help@gcc.gnu.org 3. mailto:gcc@gcc.gnu.org ! 4. http://gcc.gnu.org/lists.html 5. http://www.fsf.org/ ! 6. http://gcc.gnu.org/about.html 7. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/egcs-1.0/index.html --- 12852,12867 ---- provided this notice is preserved. These pages are [6]maintained by the GCC team. Last modified ! 2014-06-12[7]. References ! 1. https://gcc.gnu.org/onlinedocs/ 2. mailto:gcc-help@gcc.gnu.org 3. mailto:gcc@gcc.gnu.org ! 4. https://gcc.gnu.org/lists.html 5. http://www.fsf.org/ ! 6. https://gcc.gnu.org/about.html 7. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/egcs-1.0/index.html *************** http://gcc.gnu.org/egcs-1.0/index.html *** 12905,12911 **** "official", so to avoid future compatibility problems we recommend against distributing any shared libraries built by EGCS 1.0 that contain C++ code (upgrade to 1.0.1 and use that). ! * Various bugfixes in the x86, hppa, mips, and rs6000/ppc backends. The x86 changes fix code generation errors exposed when building glibc2 and the usual GNU/Linux dynamic linker (ld.so). The hppa change fixes a compiler abort when configured for use with --- 12931,12937 ---- "official", so to avoid future compatibility problems we recommend against distributing any shared libraries built by EGCS 1.0 that contain C++ code (upgrade to 1.0.1 and use that). ! * Various bugfixes in the x86, hppa, mips, and rs6000/ppc back ends. The x86 changes fix code generation errors exposed when building glibc2 and the usual GNU/Linux dynamic linker (ld.so). The hppa change fixes a compiler abort when configured for use with *************** http://gcc.gnu.org/egcs-1.0/index.html *** 13023,13029 **** provided this notice is preserved. These pages are [11]maintained by the GCC team. Last modified ! 2012-11-02[12]. References --- 13049,13055 ---- provided this notice is preserved. These pages are [11]maintained by the GCC team. Last modified ! 2014-06-12[12]. References *************** References *** 13032,13043 **** 3. http://gcc.gnu.org/egcs-1.0/buildstat.html 4. http://gcc.gnu.org/egcs-1.0/caveats.html 5. http://gcc.gnu.org/mirrors.html ! 6. http://gcc.gnu.org/onlinedocs/ 7. mailto:gcc-help@gcc.gnu.org 8. mailto:gcc@gcc.gnu.org ! 9. http://gcc.gnu.org/lists.html 10. http://www.fsf.org/ ! 11. http://gcc.gnu.org/about.html 12. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/egcs-1.0/features.html --- 13058,13069 ---- 3. http://gcc.gnu.org/egcs-1.0/buildstat.html 4. http://gcc.gnu.org/egcs-1.0/caveats.html 5. http://gcc.gnu.org/mirrors.html ! 6. https://gcc.gnu.org/onlinedocs/ 7. mailto:gcc-help@gcc.gnu.org 8. mailto:gcc@gcc.gnu.org ! 9. https://gcc.gnu.org/lists.html 10. http://www.fsf.org/ ! 11. https://gcc.gnu.org/about.html 12. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/egcs-1.0/features.html *************** http://gcc.gnu.org/egcs-1.0/features.htm *** 13091,13108 **** provided this notice is preserved. These pages are [8]maintained by the GCC team. Last modified ! 2012-11-02[9]. References 1. http://gcc.gnu.org/egcs-1.0/features-2.8.html 2. http://gcc.gnu.org/egcs-1.0/c++features.html ! 3. http://gcc.gnu.org/onlinedocs/ 4. mailto:gcc-help@gcc.gnu.org 5. mailto:gcc@gcc.gnu.org ! 6. http://gcc.gnu.org/lists.html 7. http://www.fsf.org/ ! 8. http://gcc.gnu.org/about.html 9. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/egcs-1.0/caveats.html --- 13117,13134 ---- provided this notice is preserved. These pages are [8]maintained by the GCC team. Last modified ! 2014-06-12[9]. References 1. http://gcc.gnu.org/egcs-1.0/features-2.8.html 2. http://gcc.gnu.org/egcs-1.0/c++features.html ! 3. https://gcc.gnu.org/onlinedocs/ 4. mailto:gcc-help@gcc.gnu.org 5. mailto:gcc@gcc.gnu.org ! 6. https://gcc.gnu.org/lists.html 7. http://www.fsf.org/ ! 8. https://gcc.gnu.org/about.html 9. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/egcs-1.0/caveats.html *************** http://gcc.gnu.org/egcs-1.0/caveats.html *** 13145,13159 **** provided this notice is preserved. These pages are [6]maintained by the GCC team. Last modified ! 2012-11-02[7]. References ! 1. http://gcc.gnu.org/onlinedocs/ 2. mailto:gcc-help@gcc.gnu.org 3. mailto:gcc@gcc.gnu.org ! 4. http://gcc.gnu.org/lists.html 5. http://www.fsf.org/ ! 6. http://gcc.gnu.org/about.html 7. http://validator.w3.org/check/referer ====================================================================== --- 13171,13185 ---- provided this notice is preserved. These pages are [6]maintained by the GCC team. Last modified ! 2014-06-12[7]. References ! 1. https://gcc.gnu.org/onlinedocs/ 2. mailto:gcc-help@gcc.gnu.org 3. mailto:gcc@gcc.gnu.org ! 4. https://gcc.gnu.org/lists.html 5. http://www.fsf.org/ ! 6. https://gcc.gnu.org/about.html 7. http://validator.w3.org/check/referer ====================================================================== diff -Nrcpad gcc-4.7.3/boehm-gc/ChangeLog gcc-4.7.4/boehm-gc/ChangeLog *** gcc-4.7.3/boehm-gc/ChangeLog Thu Apr 11 07:55:30 2013 --- gcc-4.7.4/boehm-gc/ChangeLog Thu Jun 12 12:06:08 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/config/ChangeLog gcc-4.7.4/config/ChangeLog *** gcc-4.7.3/config/ChangeLog Thu Apr 11 07:56:31 2013 --- gcc-4.7.4/config/ChangeLog Thu Jun 12 12:07:29 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/contrib/ChangeLog gcc-4.7.4/contrib/ChangeLog *** gcc-4.7.3/contrib/ChangeLog Thu Apr 11 07:54:30 2013 --- gcc-4.7.4/contrib/ChangeLog Thu Jun 12 12:05:02 2014 *************** *** 1,3 **** --- 1,14 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + + 2014-02-02 Uros Bizjak + + Backport from mainline + 2012-05-09 David Edelsohn + + * gcc_update: Use $GCC_SVN to retrieve branch and revision. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/contrib/gcc_update gcc-4.7.4/contrib/gcc_update *** gcc-4.7.3/contrib/gcc_update Wed Mar 28 09:04:11 2012 --- gcc-4.7.4/contrib/gcc_update Sun Feb 2 19:18:29 2014 *************** case $vcs_type in *** 367,374 **** exit 1 fi ! revision=`svn info | awk '/Revision:/ { print $2 }'` ! branch=`svn info | sed -ne "/URL:/ { s,.*/trunk,trunk, s,.*/branches/,, s,.*/tags/,, --- 367,374 ---- exit 1 fi ! revision=`$GCC_SVN info | awk '/Revision:/ { print $2 }'` ! branch=`$GCC_SVN info | sed -ne "/^URL:/ { s,.*/trunk,trunk, s,.*/branches/,, s,.*/tags/,, diff -Nrcpad gcc-4.7.3/contrib/reghunt/ChangeLog gcc-4.7.4/contrib/reghunt/ChangeLog *** gcc-4.7.3/contrib/reghunt/ChangeLog Thu Apr 11 07:54:35 2013 --- gcc-4.7.4/contrib/reghunt/ChangeLog Thu Jun 12 12:05:07 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/contrib/regression/ChangeLog gcc-4.7.4/contrib/regression/ChangeLog *** gcc-4.7.3/contrib/regression/ChangeLog Thu Apr 11 07:54:25 2013 --- gcc-4.7.4/contrib/regression/ChangeLog Thu Jun 12 12:04:57 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/fixincludes/ChangeLog gcc-4.7.4/fixincludes/ChangeLog *** gcc-4.7.3/fixincludes/ChangeLog Thu Apr 11 07:55:17 2013 --- gcc-4.7.4/fixincludes/ChangeLog Thu Jun 12 12:05:53 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/gcc/BASE-VER gcc-4.7.4/gcc/BASE-VER *** gcc-4.7.3/gcc/BASE-VER Thu Sep 20 09:39:50 2012 --- gcc-4.7.4/gcc/BASE-VER Thu Apr 11 08:08:12 2013 *************** *** 1 **** ! 4.7.3 --- 1 ---- ! 4.7.4 diff -Nrcpad gcc-4.7.3/gcc/ChangeLog gcc-4.7.4/gcc/ChangeLog *** gcc-4.7.3/gcc/ChangeLog Thu Apr 11 07:56:49 2013 --- gcc-4.7.4/gcc/ChangeLog Thu Jun 12 12:07:50 2014 *************** *** 1,3 **** --- 1,1238 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + + 2014-06-04 Richard Biener + + Backport from mainline + 2013-05-13 Jakub Jelinek + + PR tree-optimization/57230 + * tree-ssa-strlen.c (handle_char_store): Add missing integer_zerop + check. + + 2014-05-28 Georg-Johann Lay + + PR target/61044 + * doc/extend.texi (Local Labels): Note that label differences are + not supported for AVR. + + 2014-05-23 Richard Biener + + Backport from mainline + 2013-08-30 Richard Biener + + PR tree-optimization/58228 + * tree-vect-data-refs.c (vect_analyze_data_ref_access): Do not + allow invariant loads in nested loop vectorization. + + 2013-09-26 Richard Biener + + PR tree-optimization/58539 + * tree-vect-loop.c (vect_create_epilog_for_reduction): Honor + the fact that debug statements are not taking part in loop-closed + SSA construction. + + 2014-05-22 Richard Earnshaw + + PR target/61208 + * arm.md (arm_cmpdi_unsigned): Fix length calculation for Thumb2. + + 2014-05-20 Senthil Kumar Selvaraj + + Backport from mainline r210325 + 2014-05-12 Senthil Kumar Selvaraj + + PR target/60991 + * config/avr/avr.c (avr_out_store_psi): Use correct constant + to restore Y. + + 2014-05-13 Richard Biener + + Backport from mainline + 2014-03-04 Richard Biener + + PR tree-optimization/60382 + * tree-vect-loop.c (vect_is_simple_reduction_1): Do not consider + dead PHIs a reduction. + + 2014-05-09 Georg-Johann Lay + + Backport from 2014-05-09 trunk r210267 + + PR target/61055 + * config/avr/avr.md (cc): Add new attribute set_vzn. + (addqi3, 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 set cc0 to CC_CLOBBER. + + 2014-05-08 Charles Baylis + + Backport from mainline + 2014-04-07 Charles Baylis + + PR target/60609 + * config/arm/arm.h (ASM_OUTPUT_CASE_END): Remove. + (LABEL_ALIGN_AFTER_BARRIER): Align barriers which occur after + ADDR_DIFF_VEC. + + 2014-05-07 Jakub Jelinek + + Backported from mainline + 2013-10-21 Marek Polacek + + PR middle-end/58809 + * fold-const.c (fold_range_test): Return 0 if the type is not + an integral type. + + 2013-12-03 Jakub Jelinek + + PR middle-end/59011 + * gimplify.c (nonlocal_vla_vars): New variable. + (gimplify_var_or_parm_decl): Put VAR_DECLs for VLAs into + nonlocal_vla_vars chain. + (gimplify_body): Call declare_vars on nonlocal_vla_vars chain + if outer_bind has DECL_INITIAL (current_function_decl) block. + + 2013-11-26 Jakub Jelinek + + PR tree-optimization/59014 + * tree-vrp.c (register_edge_assert_for_1): Don't look + through conversions from non-integral types or through + narrowing conversions. + + 2013-11-14 Jakub Jelinek + Uros Bizjak + + PR target/59101 + * config/i386/i386.md (*anddi_2): Only allow CCZmode if + operands[2] satisfies_constraint_Z that might have bit 31 set. + + 2013-09-30 Jakub Jelinek + + PR middle-end/58564 + * fold-const.c (fold_ternary_loc): For A < 0 : : 0 + optimization, punt if sign_bit_p looked through any zero extension. + + 2013-09-10 Jakub Jelinek + + PR rtl-optimization/58365 + * cfgcleanup.c (merge_memattrs): Also clear MEM_READONLY_P + resp. MEM_NOTRAP_P if they differ, or set MEM_VOLATILE_P if + it differs. + + 2013-08-30 Jakub Jelinek + + PR tree-optimization/58277 + * tree-ssa-strlen.c (strlen_enter_block): If do_invalidate gave up + after seeing too many stmts with vdef in between dombb and current + bb, invalidate everything. + + 2013-08-23 Jakub Jelinek + + PR tree-optimization/58209 + * tree-tailcall.c (find_tail_calls): Give up for pointer result types + if m or a is non-NULL. + + 2013-07-03 Jakub Jelinek + + PR target/57777 + * config/i386/predicates.md (vsib_address_operand): Disallow + SYMBOL_REF or LABEL_REF in parts.disp if TARGET_64BIT && flag_pic. + + 2013-06-27 Jakub Jelinek + + PR target/57623 + * config/i386/i386.md (bmi_bextr_): Swap predicates and + constraints of operand 1 and 2. + + PR target/57623 + * config/i386/i386.md (bmi2_bzhi_3): Swap AND arguments + to match RTL canonicalization. Swap predicates and + constraints of operand 1 and 2. + + 2014-05-07 Richard Biener + + Backport from mainline + 2013-11-19 Richard Biener + + PR tree-optimization/59164 + * tree-vect-loop.c (vect_analyze_loop_operations): Adjust + check whether we can create an epilogue loop to reflect the + cases where we create one. + + 2014-05-07 Richard Biener + + Backport from mainline + 2013-11-29 Richard Biener + + PR tree-optimization/59334 + * tree-ssa-dce.c (eliminate_unnecessary_stmts): Fix bug + in previous commit. + + 2013-11-28 Richard Biener + + PR tree-optimization/59330 + * tree-ssa-dce.c (eliminate_unnecessary_stmts): Simplify + and fix delayed marking of free calls not necessary. + + 2014-01-09 Richard Biener + + PR tree-optimization/59715 + * tree-cfg.h (split_critical_edges): Declare. + * tree-cfg.c (split_critical_edges): Export. + * tree-ssa-sink.c (execute_sink_code): Split critical edges. + + 2014-05-07 Richard Biener + + PR tree-optimization/57864 + * tree-ssa-pre.c (phi_translate_1): Backport NAME case + simplification from mainline. Do not lookup the VN + value-number here. + + 2014-05-07 Richard Biener + + Backport from mainline + 2013-08-29 Richard Biener + + PR tree-optimization/58246 + * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Properly + handle the dominance check inside a basic-block. + + 2014-05-06 Richard Biener + + Backport from mainline + 2013-05-27 Richard Biener + + PR tree-optimization/57417 + * tree-ssa-sccvn.c (set_ssa_val_to): Compare addresses using + get_addr_base_and_unit_offset. + + 2014-04-25 Eric Botcazou + + PR target/60941 + * config/sparc/sparc.md (ashlsi3_extend): Delete. + + 2014-04-23 Uros Bizjak + + Backport from mainline + 2014-04-21 Uros Bizjak + + PR target/60909 + * config/i386/i386.c (ix86_expand_builtin) + : Use temporary + register for target RTX. + + 2014-04-07 Martin Jambor + + PR ipa/60640 + * ipa-cp.c (propagate_constants_accross_call): Do not propagate + accross thunks. + + 2014-04-07 Dominique d'Humieres + + Backport from mainline + 2013-09-14 Iain Sandoe + + PR target/48094 + * config/darwin.c (darwin_objc2_section): Note if ObjC Metadata + is seen. + (darwin_objc1_section): Likewise. + (darwin_file_end): Emit Image Info section when required. + + 2014-04-04 Richard Biener + + * tree-ssanames.c (make_ssa_name_fn): Fix assert. + + 2014-04-01 Richard Biener + + * gimple.h (struct gimple_statement_base): Align subcode to + 16 bits. + + 2014-04-01 Sebastian Huber + + * doc/invoke.texi (mapp-regs): Clarify. + + 2014-03-23 Eric Botcazou + + PR rtl-optimization/60601 + * bb-reorder.c (fix_up_fall_thru_edges): Test EDGE_FALLTHRU everywhere. + + 2014-03-20 Jakub Jelinek + + PR target/60568 + * config/i386/i386.c (x86_output_mi_thunk): Surround UNSPEC_GOT + into CONST, put pic register as first operand of PLUS. Use + gen_const_mem for both 32-bit and 64-bit PIC got loads. + + 2014-03-19 Eric Botcazou + + * tree-dfa.c (get_ref_base_and_extent) : Remove space. + + 2014-03-18 Kai Tietz + + PR rtl-optimization/56356 + * sdbout.c (sdbout_parms): Verify that parms' + incoming argument is valid. + (sdbout_reg_parms): Likewise. + + 2014-03-18 Richard Biener + + Backport from mainline + 2013-11-05 Richard Biener + + PR middle-end/58941 + * tree-dfa.c (get_ref_base_and_extent): Merge common code + in MEM_REF and TARGET_MEM_REF handling. Make sure to + process trailing array detection before diving into the + view-converted object (and possibly apply some extra offset). + + 2012-05-07 Eric Botcazou + + * tree-dfa.c (get_ref_base_and_extent) : Do the offset + computation using the precision of the index type. + + 2012-05-31 Eric Botcazou + + * tree-dfa.c (get_ref_base_and_extent): Compute the offset using + double ints throughout. + + 2014-03-18 Richard Biener + + Backport from mainline + 2013-08-27 Richard Biener + + PR tree-optimization/57521 + * tree-if-conv.c (if_convertible_bb_p): Verify that at least + one edge is non-critical. + (find_phi_replacement_condition): Make sure to use a non-critical + edge. Cleanup and remove old bug workarounds. + (bb_postdominates_preds): Remove. + (if_convertible_loop_p_1): Do not compute post-dominators. + (combine_blocks): Do not free post-dominators. + (main_tree_if_conversion): Likewise. + + 2013-09-03 Richard Biener + + PR middle-end/57656 + * fold-const.c (negate_expr_p): Fix division case. + (negate_expr): Likewise. + + 2013-11-19 Richard Biener + + PR tree-optimization/57517 + * tree-predcom.c (combinable_refs_p): Verify the combination + is always executed when the refs are. + + 2014-03-17 Richard Biener + + Backport from mainline + 2013-05-21 Richard Biener + + PR tree-optimization/57303 + * tree-ssa-sink.c (statement_sink_location): Properly handle + self-assignments. + + 2013-12-02 Richard Biener + + PR tree-optimization/59139 + * tree-ssa-loop-niter.c (chain_of_csts_start): Properly match + code in get_val_for. + (get_val_for): Use gcc_checking_asserts. + + 2014-02-14 Richard Biener + + PR tree-optimization/60183 + * tree-ssa-phiprop.c (propagate_with_phi): Avoid speculating + loads. + (tree_ssa_phiprop): Calculate and free post-dominators. + + 2014-03-14 Georg-Johann Lay + + Backport from 2014-03-14 trunk r208562. + + PR target/59396 + * config/avr/avr.c (avr_set_current_function): Pass function name + through default_strip_name_encoding before sanity checking instead + of skipping the first char of the assembler name. + + 2014-02-24 John David Anglin + + * config/pa/pa.c (pa_output_move_double): Don't valididate when + adjusting offsetable addresses. + + 2014-02-21 Uros Bizjak + + Backport from mainline + 2014-02-21 Jakub Jelinek + + * config/i386/i386.c (ix86_expand_vec_perm): Use V8SImode + mode for mask of V8SFmode permutation. + + Backport from 4.8 branch + 2014-02-20 Jakub Jelinek + + PR target/57896 + * config/i386/i386.c (expand_vec_perm_interleave2): Don't call + gen_reg_rtx if d->testing_p. + (expand_vec_perm_pshufb2, expand_vec_perm_even_odd_1, + expand_vec_perm_broadcast_1): Return early if d->testing_p and + we will certainly return true. + + 2014-02-20 Terry Guo + + Backport from mainline + 2014-02-08 Terry Guo + + * doc/invoke.texi: Document ARM -march=armv7e-m. + + 2014-02-19 H.J. Lu + + Backport from mainline + 2014-02-19 H.J. Lu + + PR target/60207 + * config/i386/i386.c (construct_container): Remove TFmode check + for X86_64_INTEGER_CLASS. + + 2014-02-18 Kai Tietz + + Backport from mainline + PR target/60193 + * config/i386/i386.c (ix86_expand_prologue): Use + rax register as displacement for restoring %r10, %rax. + Additional fix wrong offset for restoring both-registers. + + 2014-02-18 Eric Botcazou + + * ipa-prop.c (compute_complex_ancestor_jump_func): Replace overzealous + assertion with conditional return. + + 2014-02-18 Jakub Jelinek + Uros Bizjak + + PR driver/60233 + * config/i386/driver-i386.c (host_detect_local_cpu): If + YMM state is not saved by the OS, also clear has_f16c. Move + CPUID 0x80000001 handling before YMM state saving checking. + + 2014-02-13 Uros Bizjak + + Backport from mainline + 2014-02-13 Uros Bizjak + + * config/i386/sse.md (xop_vmfrcz2): Generate const0 in + operands[2], not operands[3]. + + 2014-02-12 H.J. Lu + + Backport from mainline + 2014-02-12 H.J. Lu + Uros Bizjak + + PR target/60151 + * configure.ac (HAVE_AS_GOTOFF_IN_DATA): Pass --32 to GNU assembler. + + 2014-02-05 James Greenhalgh + + * doc/invoke.texi: Fix thinko introduced by previous revision. + + 2014-02-05 James Greenhalgh + + Backport from mainline. + 2014-02-05 James Greenhalgh + + PR target/59718 + * doc/invoke.texi (-march): Clarify documentation for ARM. + (-mtune): Likewise. + (-mcpu): Likewise. + + 2014-02-04 Uros Bizjak + + Backport from mainline + 2014-02-02 Uros Bizjak + + PR target/60017 + * config/i386/i386.c (classify_argument): Fix handling of bit_offset + when calculating size of integer atomic types. + + 2014-02-02 Uros Bizjak + + Backport from mainline + 2014-01-30 Jakub Jelinek + + * config/i386/f16cintrin.h (_cvtsh_ss): Avoid -Wnarrowing warning. + + 2014-01-31 Richard Henderson + + PR middle-end/60004 + * tree-eh.c (lower_try_finally_switch): Delay lowering finally block + until after else_eh is processed. + + 2014-01-29 Markus Trippelsdorf + + Backport from mainline + 2012-12-13 Jakub Jelinek + + PR gcov-profile/55650 + * coverage.c (coverage_obj_init): Return false if no functions + are being emitted. + + 2014-01-25 Walter Lee + + Backport from mainline + 2014-01-25 Walter Lee + + * config/tilegx/sync.md (atomic_fetch_sub): Fix negation and + avoid clobbering a live register. + + 2014-01-25 Walter Lee + + Backport from mainline + 2014-01-25 Walter Lee + + * config/tilegx/tilegx-c.c (tilegx_cpu_cpp_builtins): + Define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2}. + * config/tilegx/tilepro-c.c (tilepro_cpu_cpp_builtins): + Define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2,4,8}. + + 2014-01-25 Walter Lee + + Backport from mainline + 2014-01-25 Walter Lee + + * config/tilegx/tilegx.c (tilegx_gen_bundles): Delete barrier + insns before bundling. + * config/tilegx/tilegx.md (tile_network_barrier): Update comment. + + 2014-01-25 Walter Lee + + Backport from mainline + 2014-01-25 Walter Lee + + * config/tilegx/tilegx.c (tilegx_expand_builtin): Set + PREFETCH_SCHEDULE_BARRIER_P to true for prefetches. + * config/tilepro/tilepro.c (tilepro_expand_builtin): Ditto. + + 2014-01-25 Walter Lee + + Backport from mainline + 2014-01-25 Walter Lee + + * config/tilepro/tilepro.md (ctzdi2): Use register_operand predicate. + (clzdi2): Ditto. + (ffsdi2): Ditto. + + 2014-01-25 Walter Lee + + Backport from mainline + 2014-01-25 Walter Lee + + * config/tilegx/tilegx.c (tilegx_expand_to_rtl_hook): New. + (TARGET_EXPAND_TO_RTL_HOOK): Define. + + 2014-01-22 Uros Bizjak + Jakub Jelinek + + PR target/59880 + * config/i386/i386.c (ix86_avoid_lea_for_addr): Return false + for SImode_address_operand operands. Return false + if operands[1] is a REG. + + 2014-01-21 Andrey Belevantsev + + Backport from mainline + 2013-12-23 Andrey Belevantsev + + PR rtl-optimization/57422 + * sel-sched.c (mark_unavailable_hard_regs): Fix typo when calling + add_to_hard_reg_set. + + 2014-01-19 John David Anglin + + * config/pa/pa.c (pa_attr_length_millicode_call): Correct length of + long non-pic millicode calls. + + 2014-01-17 John David Anglin + + * config/pa/pa.c (pa_attr_length_indirect_call): Don't output a short + call to $$dyncall when TARGET_LONG_CALLS is true. + + 2014-01-17 Charles Baylis + + Backport from mainline + 2013-12-19 Charles Baylis + + PR target/59142 + * config/arm/arm-ldmstm.ml: Use low_register_operand for Thumb + patterns. + * config/arm/ldmstm.md: Regenerate. + + 2013-12-19 Charles Baylis + + PR target/59142 + * config/arm/predicates.md (arm_hard_general_register_operand): + New predicate. + (arm_hard_register_operand): Remove. + * config/arm/arm-ldmstm.ml: Use arm_hard_general_register_operand + for all patterns. + * config/arm/ldmstm.md: Regenerate. + + 2014-01-16 Jakub Jelinek + + PR target/59839 + * config/i386/i386.c (ix86_expand_builtin): If target doesn't + satisfy operand 0 predicate for gathers, use a new pseudo as + subtarget. + + 2014-01-16 Richard Henderson + + PR debug/54694 + * reginfo.c (global_regs_decl): Globalize. + * rtl.h (global_regs_decl): Declare. + * ira.c (do_reload): Diagnose frame_pointer_needed and it + reserved via global_regs. + + 2014-01-16 Marek Polacek + + Backport from mainline + 2014-01-16 Marek Polacek + + PR middle-end/59827 + * gimple-low.c (gimple_check_call_args): Don't use DECL_ARG_TYPE if + it is error_mark_node. + + 2014-01-14 Uros Bizjak + + Revert: + 2014-01-08 Uros Bizjak + + * config/i386/i386.c (ix86_data_alignment): Calculate max_align + from prefetch_block tune setting. + + 2014-01-10 Richard Earnshaw + + PR rtl-optimization/54300 + * regcprop.c (copyprop_hardreg_forward_1): Ensure any unused + outputs in a single-set are killed from the value chains. + + 2014-01-10 Huacai Chen + + * config/mips/driver-native.c (host_detect_local_cpu): Handle new + kernel strings for Loongson-2E/2F/3A. + + 2014-01-08 Uros Bizjak + + Backport from mainline + 2014-01-05 Uros Bizjak + + * config/i386/i386.c (ix86_data_alignment): Calculate max_align + from prefetch_block tune setting. + (nocona_cost): Correct size of prefetch block to 64. + + 2013-12-28 Eric Botcazou + + * doc/invoke.texi (output file options): Add missing markers. + + 2013-12-11 Kai Tietz + + PR target/56807 + * config/i386/i386.c (ix86_expand_prologue): plus_constant + takes no mode-argument. + + 2013-12-10 Kai Tietz + + PR target/56807 + * config/i386/i386.c (ix86_expand_prologue): Address saved + registers stack-relative, not via frame-pointer. + + 2013-12-03 Marek Polacek + + Backport from mainline + 2013-12-03 Marek Polacek + + PR c/59351 + * c-decl.c (build_compound_literal): Allow compound literals with + empty initial value. + + 2013-12-01 Eric Botcazou + + * config/i386/winnt.c (i386_pe_asm_named_section): Be prepared for an + identifier node. + + 2013-11-28 Uros Bizjak + + Backport from mainline + 2013-11-23 Uros Bizjak + + PR target/56788 + * config/i386/i386.c (bdesc_multi_arg) : + Declare as MULTI_ARG_1_SF instruction. + : Decleare as MULTI_ARG_1_DF instruction. + * config/i386/sse.md (*xop_vmfrcz2): Rename + from *xop_vmfrcz_. + * config/i386/xopintrin.h (_mm_frcz_ss): Use __builtin_ia32_movss + to merge scalar result with __A. + (_mm_frcz_sd): Use __builtin_ia32_movsd to merge scalar + result with __A. + + 2013-11-19 Uros Bizjak + + Backport from mainline + 2013-11-18 Uros Bizjak + + * config/i386/i386.c (ix86_decompose_address): Use REG_P instead of + ix86_address_subreg_operand. Move subreg checks to + ix86_validate_address_register. Move address override check to + ix86_legitimate_address_p. + (ix86_validate_address_register): New function. + (ix86_legitimate_address_p): Call ix86_validate_address_register + to validate base and index registers. Add address override check + from ix86_decompose_address. + (ix86_decompose_address): Remove. + + Backport from mainline + 2013-11-17 Uros Bizjak + + PR target/59153 + * config/i386/i386.c (ix86_address_subreg_operand): Do not + reject non-integer subregs. + (ix86_decompose_address): Do not reject invalid CONST_INT RTXes. + Move check for invalid x32 constant addresses ... + (ix86_legitimate_address_p): ... here. + + Bacport from mainline + 2012-03-13 Uros Bizjak + + * config/i386/i386.c (ix86_decompose_address): Prevent %fs:(%reg) + addresses only when %reg is not in word mode. + + 2013-11-10 Karlson2k + Kai Tietz + + Merged from trunk + PR plugins/52872 + * configure.ac: Adding for exported symbols check + and for rdynamic-check executable-extension. + * configure: Regenerated. + + 2013-11-07 H.J. Lu + + PR target/59034 + * config/i386/i386.md (push peepholer/splitter): Use Pmode + with stack_pointer_rtx. + + 2013-11-05 Uros Bizjak + + * config/i386/t-rtems (MULTILIB_MATCHES): Fix option typos. + + 2013-10-26 Uros Bizjak + + Backport from mainline + 2013-10-22 Uros Bizjak + + PR target/58779 + * config/i386/i386.c (put_condition_code) : + Remove CCCmode handling. + : Return 'c' suffix for CCCmode. + : Return 'nc' suffix for CCCmode. + (ix86_cc_mode) : Do not generate overflow checks. + * config/i386/i386.md (*sub3_cconly_overflow): Remove. + (*sub3_cc_overflow): Ditto. + (*subsi3_zext_cc_overflow): Ditto. + + 2013-10-26 Uros Bizjak + + Backport from mainline + 2013-10-19 Uros Bizjak + + PR target/58792 + * config/i386/i386.c (ix86_function_value_regno): Add DX_REG, + ST1_REG and XMM1_REG for 32bit and 64bit targets. Also add DI_REG + and SI_REG for 64bit SYSV ABI targets. + + 2013-10-25 Richard Henderson + + PR rtl/58542 + * optabs.c (maybe_emit_atomic_exchange): Use create_input_operand + instead of create_convert_operand_to. + (maybe_emit_sync_lock_test_and_set): Likewise. + (expand_atomic_compare_and_swap): Likewise. + (maybe_emit_compare_and_swap_exchange_loop): Don't convert_modes. + + 2013-10-25 Eric Botcazou + + PR rtl-optimization/58831 + * alias.c (init_alias_analysis): At the beginning of each iteration, + set the reg_seen[N] flag if static_reg_base_value[N] is non-null. + + 2013-10-25 Eric Botcazou + + * recog.c (search_ofs): New static variable moved from... + (peep2_find_free_register): ...here. + (peephole2_optimize): Initialize it. + + 2013-10-02 John David Anglin + + * config.gcc (hppa*64*-*-linux*): Don't add pa/t-linux to tmake_file. + + 2013-09-23 Eric Botcazou + + * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Recurse on copy + assignment statements. + + 2013-09-20 John David Anglin + + * config/pa/pa.md: In "scc" insn patterns, change output template to + handle const0_rtx in reg_or_0_operand operands. + + 2013-09-18 Daniel Morris + Paolo Carlini + + PR c++/58458 + * doc/implement-cxx.texi: Fix references to the C++ standards. + + 2013-09-14 John David Anglin + + PR target/58382 + * config/pa/pa.c (pa_expand_prologue): Change mode in gen_rtx_POST_INC + calls to word_mode. + + 2013-09-12 Terry Guo + + Backport from mainline + 2012-09-17 Richard Guenther + + PR lto/54598 + * tree-streamer-in.c (unpack_ts_real_cst_value_fields): Use ggc'ed + FIXED_VALUE_TYPE instead of struct fixed_value. + + 2013-09-10 Richard Earnshaw + + PR target/58361 + * arm/vfp.md (combine_vcvt_f32_): Fix pattern to + support conditional execution. + (combine_vcvt_f64_): Likewise. + + 2013-09-01 Uros Bizjak + + Backport from mainline + 2013-08-31 Uros Bizjak + + * config/alpha/alpha.c (alpha_emit_conditional_move): Update + "cmp" RTX before signed_comparison_operator check to account + for "code" changes. + + 2013-09-01 John David Anglin + + * config/pa/pa.md: Allow "const 0" operand 1 in "scc" insns. + + 2013-09-01 Iain Sandoe + + Backported from 4.8 + 2012-06-19 Steven Bosscher + + * doc/tm.texi.in (TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE, + TARGET_OBJC_DECLARE_CLASS_DEFINITION): Add @hooks. + (ASM_DECLARE_CLASS_REFERENCE, ASM_DECLARE_UNRESOLVED_REFERENCE): + Remove. + * doc/tm.texi: Regenerate. + * config/darwin.h (ASM_OUTPUT_LABELREF): Remove special case for + .objc_class_name_*. + * config/darwin-c.c: Include target.h. + (darwin_objc_declare_unresolved_class_reference): New function. + (darwin_objc_declare_class_definition): New function. + (TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE): Define. + (TARGET_OBJC_DECLARE_CLASS_DEFINITION): Define. + + 2013-09-01 Iain Sandoe + + Backport from mainline: + 2013-07-22 Uros Bizjak + + * config/i386/i386.md (nonlocal_goto_receiver): Delete insn if + it is not needed after split. + + 2013-07-20 Iain Sandoe + + PR target/51784 + * config/i386/i386.c (output_set_got) [TARGET_MACHO]: Adjust to emit a + second label for nonlocal goto receivers. Don't output pic base labels + unless we're producing PIC; mark that action unreachable(). + (ix86_save_reg): If the function contains a nonlocal label, save the + PIC base reg. + * config/darwin-protos.h (machopic_should_output_picbase_label): New. + * gcc/config/darwin.c (emitted_pic_label_num): New GTY. + (update_pic_label_number_if_needed): New. + (machopic_output_function_base_name): Adjust for nonlocal receiver + case. + (machopic_should_output_picbase_label): New. + * config/i386/i386.md (enum unspecv): UNSPECV_NLGR: New. + (nonlocal_goto_receiver): New insn and split. + + 2013-08-28 Uros Bizjak + + Backport from mainline + 2013-08-27 Christian Widmer + + PR target/57927 + * config/i386/driver-i386.c (host_detect_local_cpu): Add detection + of Ivy Bridge processors. + + 2013-08-21 Richard Earnshaw + + PR target/56979 + * arm.c (aapcs_vfp_allocate): Decompose the argument if the + suggested mode for the assignment isn't compatible with the + registers required. + + 2013-08-17 Uros Bizjak + + Backport from mainline + 2013-08-12 Perez Read + + PR target/58132 + * config/i386/i386.md (*movabs_1): Add PTR before + operand 0 for intel asm alternative. + (*movabs_2): Ditto for operand 1. + + 2013-08-13 Marek Polacek + + Backport from 4.8: + 2013-0813 Marek Polacek + Jakub Jelinek + + PR tree-optimization/57980 + * tree-tailcall.c (process_assignment): Return false + when not dealing with integers or floats. + + 2013-08-12 David Edelsohn + + Backport from mainline + 2013-02-14 Steven Bosscher + + * collect2-aix.h: Define F_LOADONLY. + + 2013-08-02 Eric Botcazou + + * config/sparc/sparc.c (sparc_emit_membar_for_model) : Add + the implied StoreLoad barrier for atomic operations if before. + + 2013-07-11 Georg-Johann Lay + + Backport from 2013-07-11 trunk r200901. + + PR target/57631 + * config/avr/avr.c (avr_set_current_function): Sanity-check signal + name seen by assembler/linker if available. + + 2013-07-10 Georg-Johann Lay + + Backport from 2013-07-10 trunk r200872. + + PR target/57844 + * config/avr/avr.c (avr_prologue_setup_frame): Trunk -size to mode + of my_fp. + + 2013-07-10 Uros Bizjak + + Backport from mainline + 2013-07-06 Uros Bizjak + + * config/i386/sse.md (sse_movlhps): Change alternative 3 + of operand 2 to "m". + + 2013-07-09 Joseph Myers + + * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Only + adjust register size for TDmode and TFmode for VSX registers. + + 2013-07-08 Eric Botcazou + + * Makefile.in (tree-ssa-reassoc.o): Add dependency on $(PARAMS_H). + + 2013-07-08 Jakub Jelinek + + PR rtl-optimization/57829 + * simplify-rtx.c (simplify_binary_operation_1) : Ensure that + mask bits outside of mode are just sign-extension from mode to HWI. + + 2013-07-05 Uros Bizjak + + Backport from mainline + 2013-06-20 Uros Bizjak + + PR target/57655 + * config/i386/i386.c (construct_container): Report error if + long double is used with disabled x87 float returns. + + 2013-06-21 David Edelsohn + + Backport from mainline + 2013-06-19 David Edelsohn + + PR driver/57652 + * collect2.c (collect_atexit): New. + (collect_exit): Delete. + (main): Register collect_atexit with atexit. + (collect_wait): Change collect_exit to exit. + (do_wait): Same. + * collect2.h (collect_exit): Delete. + * tlink.c (do_tlink): Rename exit to ret. Change collect_exit to exit. + + 2013-06-07 Uros Bizjak + + Backport from mainline + 2013-06-10 Uros Bizjak + + * config/alpha/alpha.c (alpha_emit_xfloating_compare): Also use + cmp_code to construct REG_EQUAL note. + + Backport from mainline + 2013-06-05 Uros Bizjak + + * config/alpha/alpha.c (alpha_emit_conditional_move): Swap all + GE, GT, GEU and GTU compares, modulo DImode compares with zero. + + Backport from mainline + 2013-05-23 Uros Bizjak + + PR target/57379 + * config/alpha/alpha.md (unspec): Add UNSPEC_XFLT_COMPARE. + * config/alpha/alpha.c (alpha_emit_xfloating_compare): Construct + REG_EQUAL note as UNSPEC_XFLT_COMPARE unspec. + + 2013-06-09 Jakub Jelinek + + PR target/57568 + * config/i386/i386.md (TARGET_READ_MODIFY_WRITE peepholes): Ensure + that operands[2] doesn't overlap with operands[0]. + + 2013-05-22 Uros Bizjak + + PR target/57356 + * config/i386/i386.md (*movti_internal_rex64): Emit movaps/movups + for non-sse2 targets. Simplify mode attribute calculation. + + 2013-05-17 Uros Bizjak + + Backport from mainline + 2013-05-16 Uros Bizjak + + * config/i386/driver-i386.c (host_detect_local_cpu): Determine + cache parameters using detect_caches_amd also for CYRIX, + NSC and TM2 signatures. + + 2013-05-16 Uros Bizjak + Dzianis Kahanovich + + PR target/45359 + PR target/46396 + * config/i386/driver-i386.c (host_detect_local_cpu): Detect + VIA/Centaur processors and determine their cache parameters + using detect_caches_amd. + + 2013-05-15 Uros Bizjak + + * config/i386/i386.c (ix86_option_override_internal): Add + PTA_POPCNT to corei7 entry. + + 2013-05-14 Richard Biener + + PR gcov-profile/57269 + Backport from mainline + 2012-06-30 Nathan Sidwell + + * coverage.c (coverage_init): Read counts file before writing + graph header. + + 2013-05-13 Uros Bizjak + + PR target/57264 + Backport from mainline + 2013-01-22 Jakub Jelinek + + PR target/55686 + * config/i386/i386.md (UNSPEC_STOS): New. + (strset_singleop, *strsetdi_rex_1, *strsetsi_1, *strsethi_1, + *strsetqi_1): Add UNSPEC_STOS. + + 2013-05-10 Joey Ye + + Backport from mainline + 2012-11-29 Matthew Gretton-Dann + + PR target/54974 + * config/arm/arm.md (thumb2_pool_range, pool_range): Add comment on + Thumb pool ranges. + (thumb1_extendhisi2): Reduce Thumb pool range. + (arm_movdi): Likewise. + (thumb1_movdi_insn): Likewise. + (thumb1_movsi_insn): Likewise. + (pic_load_addr_unified): Likewise. + (pic_load_addr_32bit): Likewise. + (pic_load_addr_thumb1): Likewise. + (thumb1_movhf): Likewise. + (arm_movsf_soft_insn): Likewise. + (thumb1_movsf_soft_insn): Likewise. + (movdf_soft_insn): Likewise. + (thumb1_movdf_soft_insn): Likewise. + * config/arm/neon.md (*neon_mov): Likewise. + (*neon_mov): Likwise. + * config/arm/thumb2.md: (*thumb2_movsi_insn): Likewise. + (*thumb2_movhi_insn): Likewise. + (*thumb2_extendqisi_v6): Likewise. + (*thumb2_zero_extendqisi_v6): Likewise. + (*thumb2_zero_extendqisi2_v6): Likewise. + * config/arm/vfp.md: (*thumb2_movsi_vfp): Likewise. + (*movdi_vfp): Likewise. + (*movdi_vfp_cortexa8): Likewise. + (*thumb2_movsf_vfp): Likewise. + (*thumb2_movdf_vfp): Likewise. + + 2013-05-10 Sebastian Huber + + * config/arm/t-rtems-eabi: Remove mthumb/march=armv7 multilib. + Add mthumb/march=armv7-a multilib. + Add mthumb/march=armv7-r multilib. + Add mthumb/march=armv7-a/mfpu=neon/mfloat-abi=hard multilib. + + 2013-05-10 Ralf Corsépius + + PR target/57237 + * config/v850/t-rtems: Add more multilibs. + + 2013-05-07 Michael Meissner + + Backport from trunk + 2013-05-03 Michael Meissner + + PR target/57150 + * config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Use DFmode + to save TFmode registers and DImode to save TImode registers for + caller save operations. + (HARD_REGNO_CALL_PART_CLOBBERED): TFmode and TDmode do not need to + mark being partially clobbered since they only use the first + double word. + + * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): TFmode + and TDmode only use the upper 64-bits of each VSX register. + + 2013-05-03 Marek Polacek + + Backport from mainline + 2013-04-25 Marek Polacek + + PR tree-optimization/57066 + * builtins.c (fold_builtin_logb): Return +Inf for -Inf. + + 2013-04-30 Uros Bizjak + + Backport from mainline + 2013-04-29 Uros Bizjak + + PR target/44578 + * config/i386/i386.md (*zero_extendsidi2_rex64): Add "!" to m->?*y + alternative. + (*zero_extendsidi2): Ditto. + + Backport from mainline + 2013-04-29 Uros Bizjak + + PR target/57098 + * config/i386/i386.c (ix86_expand_vec_perm): Validize constant memory. + + 2013-04-29 Christian Bruel + + PR target/57108 + * sh.md (tstsi_t_zero_extract_eq): Set mode for operand 0. + + 2013-04-27 Jakub Jelinek + + PR target/56866 + * config/i386/sse.md (xop_rotr3): Fix up computation of + the immediate rotate count. + + 2013-04-21 Eric Botcazou + + * cfgexpand.c (avoid_complex_debug_insns): Fix C++ism. + + 2013-04-19 Matthias Klose + + PR middle-end/56848 + Re-apply + 2013-04-01 Andrey Belevantsev + + Backport from mainline + 2013-02-25 Andrey Belevantsev + Alexander Monakov + + PR middle-end/56077 + * sched-deps.c (sched_analyze_insn): When reg_pending_barrier, + flush pending lists also on non-jumps. Adjust comment. + + Backport from 4.8: + 2012-08-27 Maxim Kuvyrkov + + * sched-deps.c (add_dependence_list_and_free): Simplify. + (flush_pending_list_and_free): Fix a hack that was fixing a hack. Free + lists when add_dependence_list_and_free doesn't free them. + + 2013-04-19 Marek Polacek + + Backport from mainline + 2013-01-08 Steven Bosscher + Jakub Jelinek + + PR tree-optimization/48189 + * predict.c (predict_loops): If max is 0, don't call compare_tree_int. + If nitercst is 0, don't predict the exit edge. + + 2013-04-16 Jack Howarth + + Backport from mainline + 2012-05-29 Jack Howarth + * config/darwin.h (STARTFILE_SPEC): Use -no_new_main with -lgcrt1.o + on Darwin >= 12. + (DARWIN_CRT1_SPEC): Use -lcrt1.10.6.o when Darwin >= 10 and < 12. + + + 2012-05-29 Jack Howarth + PR debug/53453 + * doc/tm.texi: Update. + * doc/tm.texi.in (SDB and DWARF) : Add @hook. + * target.def (force_at_comp_dir): New hook. + * config/darwin.h (TARGET_FORCE_AT_COMP_DIR): Define. + * dwarf2out.c (dwarf2out_finish): Check targetm.force_at_comp_dir. + + 2013-04-15 Eric Botcazou + + PR target/56890 + * config/sparc/sparc.c (enum sparc_mode_class): Add H_MODE value. + (S_MODES): Set H_MODE bit. + (SF_MODES): Set only S_MODE and SF_MODE bits. + (DF_MODES): Set SF_MODES and only D_MODE and DF_MODE bits. + (sparc_init_modes) : Set H_MODE bit for sub-word modes. + : Do not set SF_MODE for sub-word modes. + : Likewise. + + 2013-04-13 John David Anglin + + Backport from mainline: + 2013-04-06 John David Anglin + + PR target/55487 + * config/pa/pa.c (legitimize_pic_address): Before incrementing label + nuses, make sure we have a label. + + 2013-04-11 Richard Biener + + * BASE-VER: Set to 4.7.4. + * DEV-PHASE: Set to prerelease. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/gcc/DATESTAMP gcc-4.7.4/gcc/DATESTAMP *** gcc-4.7.3/gcc/DATESTAMP Thu Apr 11 00:16:51 2013 --- gcc-4.7.4/gcc/DATESTAMP Thu Jun 12 00:16:37 2014 *************** *** 1 **** ! 20130411 --- 1 ---- ! 20140612 diff -Nrcpad gcc-4.7.3/gcc/Makefile.in gcc-4.7.4/gcc/Makefile.in *** gcc-4.7.3/gcc/Makefile.in Mon Apr 1 08:11:11 2013 --- gcc-4.7.4/gcc/Makefile.in Mon Jul 8 09:15:35 2013 *************** tree-ssa-reassoc.o : tree-ssa-reassoc.c *** 2570,2576 **** $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) \ tree-iterator.h $(BASIC_BLOCK_H) $(GIMPLE_H) $(TREE_INLINE_H) \ $(VEC_H) langhooks.h alloc-pool.h pointer-set.h $(CFGLOOP_H) \ ! tree-pretty-print.h gimple-pretty-print.h $(DIAGNOSTIC_CORE_H) tree-optimize.o : tree-optimize.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(TREE_H) $(TM_P_H) $(GGC_H) output.h \ $(DIAGNOSTIC_H) $(BASIC_BLOCK_H) $(FLAGS_H) $(TIMEVAR_H) $(TM_H) \ --- 2570,2576 ---- $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) \ tree-iterator.h $(BASIC_BLOCK_H) $(GIMPLE_H) $(TREE_INLINE_H) \ $(VEC_H) langhooks.h alloc-pool.h pointer-set.h $(CFGLOOP_H) \ ! tree-pretty-print.h gimple-pretty-print.h $(DIAGNOSTIC_CORE_H) $(PARAMS_H) tree-optimize.o : tree-optimize.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(TREE_H) $(TM_P_H) $(GGC_H) output.h \ $(DIAGNOSTIC_H) $(BASIC_BLOCK_H) $(FLAGS_H) $(TIMEVAR_H) $(TM_H) \ diff -Nrcpad gcc-4.7.3/gcc/ada/ChangeLog gcc-4.7.4/gcc/ada/ChangeLog *** gcc-4.7.3/gcc/ada/ChangeLog Thu Apr 11 07:56:35 2013 --- gcc-4.7.4/gcc/ada/ChangeLog Thu Jun 12 12:07:34 2014 *************** *** 1,3 **** --- 1,62 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + + 2014-03-30 Eric Botcazou + + PR ada/60703 + * system-linux-alpha.ads: Adjust for Ada 2005. + * system-linux-mips.ads: Likewise. + * system-linux-mips64el.ads: Likewise. + * system-linux-mipsel.ads: Likewise. + * system-linux-s390.ads: Likewise. + * system-linux-s390x.ads: Likewise. + * system-linux-sparc.ads: Likewise. + * system-linux-sparcv9.ads: Likewise. + * system-rtems.ads: Likewise. + * system-vxworks-arm.ads: Likewise. + + 2014-03-13 Eric Botcazou + + PR ada/51483 + * back_end.ads (Register_Type_Proc): Add 'precision' parameter. + * cstand.adb (Register_Float_Type): Add 'precision' parameter and use + it to set the RM size. Use directly 'size' for the Esize. + * gcc-interface/gigi.h (enumerate_modes): Add integer parameter. + * gcc-interface/misc.c (enumerate_modes): Likewise. Do not register + types for vector modes, pass the size in addition to the precision. + + 2014-01-12 Eric Botcazou + + PR ada/59772 + * gcc-interface/cuintp.c (build_cst_from_int): Use 32-bit integer type + as intermediate type. + (UI_To_gnu): Likewise. + + 2013-12-12 Eric Botcazou + + * gcc-interface/Make-lang.in (ada/doctools/xgnatugn): Use gnatmake. + + 2013-10-19 Eric Botcazou + + * gcc-interface/utils.c (gnat_set_type_context): New function. + (gnat_pushdecl): Use it to set the context of the type. + + 2013-09-18 Eric Botcazou + + * gcc-interface/trans.c (Subprogram_Body_to_gnu): Pop the stack of + return variables for subprograms using the CICO mechanism. + + 2013-08-13 Eric Botcazou + + * gcc-interface/trans.c (can_equal_min_or_max_val_p): Be prepared for + values outside of the range of the type. + + 2013-05-26 Eric Botcazou + + * gcc-interface/trans.c (Attribute_to_gnu) : Add kludge + to avoid generating an overflow for -1. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/gcc/ada/back_end.ads gcc-4.7.4/gcc/ada/back_end.ads *** gcc-4.7.3/gcc/ada/back_end.ads Thu Aug 4 08:33:14 2011 --- gcc-4.7.4/gcc/ada/back_end.ads Thu Mar 13 15:43:01 2014 *************** package Back_End is *** 55,60 **** --- 55,61 ---- Complex : Boolean; -- True iff type has real and imaginary parts Count : Natural; -- Number of elements in vector, 0 otherwise Float_Rep : Float_Rep_Kind; -- Representation used for fpt type + Precision : Positive; -- Precision of representation in bits Size : Positive; -- Size of representation in bits Alignment : Natural); -- Required alignment in bits pragma Convention (C, Register_Type_Proc); diff -Nrcpad gcc-4.7.3/gcc/ada/cstand.adb gcc-4.7.4/gcc/ada/cstand.adb *** gcc-4.7.3/gcc/ada/cstand.adb Mon Dec 12 10:30:49 2011 --- gcc-4.7.4/gcc/ada/cstand.adb Thu Mar 13 15:43:01 2014 *************** package body CStand is *** 151,156 **** --- 151,157 ---- Complex : Boolean; -- True iff type has real and imaginary parts Count : Natural; -- Number of elements in vector, 0 otherwise Float_Rep : Float_Rep_Kind; -- Representation used for fpt type + Precision : Positive; -- Precision of representation in bits Size : Positive; -- Size of representation in bits Alignment : Natural); -- Required alignment in bits pragma Convention (C, Register_Float_Type); *************** package body CStand is *** 2015,2020 **** --- 2016,2022 ---- Complex : Boolean; Count : Natural; Float_Rep : Float_Rep_Kind; + Precision : Positive; Size : Positive; Alignment : Natural) is *************** package body CStand is *** 2064,2076 **** else Write_Str ("mod 2**"); ! Write_Int (Int (Size / Positive'Max (1, Count))); Write_Line (";"); end if; ! Write_Str ("for " & T & "'Size use "); ! Write_Int (Int (Size)); ! Write_Line (";"); Write_Str ("for " & T & "'Alignment use "); Write_Int (Int (Alignment / 8)); --- 2066,2089 ---- else Write_Str ("mod 2**"); ! Write_Int (Int (Precision / Positive'Max (1, Count))); Write_Line (";"); end if; ! if Precision = Size then ! Write_Str ("for " & T (1 .. Last) & "'Size use "); ! Write_Int (Int (Size)); ! Write_Line (";"); ! ! else ! Write_Str ("for " & T (1 .. Last) & "'Value_Size use "); ! Write_Int (Int (Precision)); ! Write_Line (";"); ! ! Write_Str ("for " & T (1 .. Last) & "'Object_Size use "); ! Write_Int (Int (Size)); ! Write_Line (";"); ! end if; Write_Str ("for " & T & "'Alignment use "); Write_Int (Int (Alignment / 8)); *************** package body CStand is *** 2093,2107 **** if Digs > 0 and then not Complex and then Count = 0 then declare Ent : constant Entity_Id := New_Standard_Entity; - Esize : constant Pos := Pos ((Size + Alignment - 1) - / Alignment * Alignment); begin Set_Defining_Identifier (New_Node (N_Full_Type_Declaration, Stloc), Ent); Make_Name (Ent, T (1 .. Last)); Set_Scope (Ent, Standard_Standard); ! Build_Float_Type (Ent, Esize, Float_Rep, Pos (Digs)); ! Set_RM_Size (Ent, UI_From_Int (Int (Size))); Set_Alignment (Ent, UI_From_Int (Int (Alignment / 8))); if No (Back_End_Float_Types) then --- 2106,2118 ---- if Digs > 0 and then not Complex and then Count = 0 then declare Ent : constant Entity_Id := New_Standard_Entity; begin Set_Defining_Identifier (New_Node (N_Full_Type_Declaration, Stloc), Ent); Make_Name (Ent, T (1 .. Last)); Set_Scope (Ent, Standard_Standard); ! Build_Float_Type (Ent, Int (Size), Float_Rep, Pos (Digs)); ! Set_RM_Size (Ent, UI_From_Int (Int (Precision))); Set_Alignment (Ent, UI_From_Int (Int (Alignment / 8))); if No (Back_End_Float_Types) then diff -Nrcpad gcc-4.7.3/gcc/ada/gcc-interface/Make-lang.in gcc-4.7.4/gcc/ada/gcc-interface/Make-lang.in *** gcc-4.7.3/gcc/ada/gcc-interface/Make-lang.in Wed Feb 20 18:24:15 2013 --- gcc-4.7.4/gcc/ada/gcc-interface/Make-lang.in Fri Dec 13 09:20:09 2013 *************** ada.tags: force *** 660,666 **** ada/doctools/xgnatugn$(build_exeext): ada/xgnatugn.adb -$(MKDIR) ada/doctools $(CP) $^ ada/doctools ! cd ada/doctools && $(GNATMAKE) -q xgnatugn # Note that doc/gnat_ugn.texi and doc/projects.texi do not depend on # xgnatugn being built so we can distribute a pregenerated doc/gnat_ugn.info --- 660,666 ---- ada/doctools/xgnatugn$(build_exeext): ada/xgnatugn.adb -$(MKDIR) ada/doctools $(CP) $^ ada/doctools ! cd ada/doctools && gnatmake -q xgnatugn # Note that doc/gnat_ugn.texi and doc/projects.texi do not depend on # xgnatugn being built so we can distribute a pregenerated doc/gnat_ugn.info diff -Nrcpad gcc-4.7.3/gcc/ada/gcc-interface/cuintp.c gcc-4.7.4/gcc/ada/gcc-interface/cuintp.c *** gcc-4.7.3/gcc/ada/gcc-interface/cuintp.c Fri Apr 16 10:16:52 2010 --- gcc-4.7.4/gcc/ada/gcc-interface/cuintp.c Sun Jan 12 14:30:19 2014 *************** *** 6,12 **** * * * C Implementation File * * * ! * Copyright (C) 1992-2010, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * --- 6,12 ---- * * * C Implementation File * * * ! * Copyright (C) 1992-2014, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * *************** *** 59,66 **** static tree build_cst_from_int (tree type, HOST_WIDE_INT low) { ! if (TREE_CODE (type) == REAL_TYPE) ! return convert (type, build_int_cst (NULL_TREE, low)); else return build_int_cst_type (type, low); } --- 59,66 ---- static tree build_cst_from_int (tree type, HOST_WIDE_INT low) { ! if (SCALAR_FLOAT_TYPE_P (type)) ! return convert (type, build_int_cst (gnat_type_for_size (32, 0), low)); else return build_int_cst_type (type, low); } *************** UI_To_gnu (Uint Input, tree type) *** 99,117 **** gcc_assert (Length > 0); /* The computations we perform below always require a type at least as ! large as an integer not to overflow. REAL types are always fine, but INTEGER or ENUMERAL types we are handed may be too short. We use a base integer type node for the computations in this case and will ! convert the final result back to the incoming type later on. ! The base integer precision must be superior than 16. */ ! ! if (TREE_CODE (comp_type) != REAL_TYPE ! && TYPE_PRECISION (comp_type) ! < TYPE_PRECISION (long_integer_type_node)) ! { ! comp_type = long_integer_type_node; ! gcc_assert (TYPE_PRECISION (comp_type) > 16); ! } gnu_base = build_cst_from_int (comp_type, Base); --- 99,110 ---- gcc_assert (Length > 0); /* The computations we perform below always require a type at least as ! large as an integer not to overflow. FP types are always fine, but INTEGER or ENUMERAL types we are handed may be too short. We use a base integer type node for the computations in this case and will ! convert the final result back to the incoming type later on. */ ! if (!SCALAR_FLOAT_TYPE_P (comp_type) && TYPE_PRECISION (comp_type) < 32) ! comp_type = gnat_type_for_size (32, 0); gnu_base = build_cst_from_int (comp_type, Base); diff -Nrcpad gcc-4.7.3/gcc/ada/gcc-interface/gigi.h gcc-4.7.4/gcc/ada/gcc-interface/gigi.h *** gcc-4.7.3/gcc/ada/gcc-interface/gigi.h Mon Aug 6 14:34:27 2012 --- gcc-4.7.4/gcc/ada/gcc-interface/gigi.h Thu Mar 13 15:43:01 2014 *************** extern Nat get_target_double_scalar_alig *** 992,998 **** /* This function is called by the front-end to enumerate all the supported modes for the machine, as well as some predefined C types. */ extern void enumerate_modes (void (*f) (const char *, int, int, int, int, int, ! int)); #ifdef __cplusplus } --- 992,998 ---- /* This function is called by the front-end to enumerate all the supported modes for the machine, as well as some predefined C types. */ extern void enumerate_modes (void (*f) (const char *, int, int, int, int, int, ! int, int)); #ifdef __cplusplus } diff -Nrcpad gcc-4.7.3/gcc/ada/gcc-interface/misc.c gcc-4.7.4/gcc/ada/gcc-interface/misc.c *** gcc-4.7.3/gcc/ada/gcc-interface/misc.c Mon Feb 27 10:41:10 2012 --- gcc-4.7.4/gcc/ada/gcc-interface/misc.c Thu Mar 13 15:43:01 2014 *************** must_pass_by_ref (tree gnu_type) *** 632,638 **** /* This function is called by the front-end to enumerate all the supported modes for the machine, as well as some predefined C types. F is a function which is called back with the parameters as listed below, first a string, ! then six ints. The name is any arbitrary null-terminated string and has no particular significance, except for the case of predefined C types, where it should be the name of the C type. For integer types, only signed types should be listed, unsigned versions are assumed. The order of types should --- 632,638 ---- /* This function is called by the front-end to enumerate all the supported modes for the machine, as well as some predefined C types. F is a function which is called back with the parameters as listed below, first a string, ! then seven ints. The name is any arbitrary null-terminated string and has no particular significance, except for the case of predefined C types, where it should be the name of the C type. For integer types, only signed types should be listed, unsigned versions are assumed. The order of types should *************** must_pass_by_ref (tree gnu_type) *** 648,658 **** COMPLEX_P nonzero is this represents a complex mode COUNT count of number of items, nonzero for vector mode FLOAT_REP Float_Rep_Kind for FP, otherwise undefined ! SIZE number of bits used to store data ALIGN number of bits to which mode is aligned. */ void ! enumerate_modes (void (*f) (const char *, int, int, int, int, int, int)) { const tree c_types[] = { float_type_node, double_type_node, long_double_type_node }; --- 648,659 ---- COMPLEX_P nonzero is this represents a complex mode COUNT count of number of items, nonzero for vector mode FLOAT_REP Float_Rep_Kind for FP, otherwise undefined ! PRECISION number of bits used to store data ! SIZE number of bits occupied by the mode ALIGN number of bits to which mode is aligned. */ void ! enumerate_modes (void (*f) (const char *, int, int, int, int, int, int, int)) { const tree c_types[] = { float_type_node, double_type_node, long_double_type_node }; *************** enumerate_modes (void (*f) (const char * *** 726,753 **** /* First register any C types for this mode that the front end may need to know about, unless the mode should be skipped. */ ! ! if (!skip_p) for (nameloop = 0; nameloop < ARRAY_SIZE (c_types); nameloop++) { ! tree typ = c_types[nameloop]; ! const char *nam = c_names[nameloop]; ! if (TYPE_MODE (typ) == i) { ! f (nam, digs, complex_p, ! vector_p ? GET_MODE_NUNITS (i) : 0, float_rep, ! TYPE_PRECISION (typ), TYPE_ALIGN (typ)); skip_p = true; } } /* If no predefined C types were found, register the mode itself. */ - if (!skip_p) f (GET_MODE_NAME (i), digs, complex_p, vector_p ? GET_MODE_NUNITS (i) : 0, float_rep, ! GET_MODE_PRECISION (i), GET_MODE_ALIGNMENT (i)); } } --- 727,752 ---- /* First register any C types for this mode that the front end may need to know about, unless the mode should be skipped. */ ! if (!skip_p && !vector_p) for (nameloop = 0; nameloop < ARRAY_SIZE (c_types); nameloop++) { ! tree type = c_types[nameloop]; ! const char *name = c_names[nameloop]; ! if (TYPE_MODE (type) == i) { ! f (name, digs, complex_p, 0, float_rep, TYPE_PRECISION (type), ! TREE_INT_CST_LOW (TYPE_SIZE (type)), TYPE_ALIGN (type)); skip_p = true; } } /* If no predefined C types were found, register the mode itself. */ if (!skip_p) f (GET_MODE_NAME (i), digs, complex_p, vector_p ? GET_MODE_NUNITS (i) : 0, float_rep, ! GET_MODE_PRECISION (i), GET_MODE_BITSIZE (i), ! GET_MODE_ALIGNMENT (i)); } } diff -Nrcpad gcc-4.7.3/gcc/ada/gcc-interface/trans.c gcc-4.7.4/gcc/ada/gcc-interface/trans.c *** gcc-4.7.3/gcc/ada/gcc-interface/trans.c Mon Oct 22 08:23:01 2012 --- gcc-4.7.4/gcc/ada/gcc-interface/trans.c Wed Sep 18 10:25:44 2013 *************** Attribute_to_gnu (Node_Id gnat_node, tre *** 1901,1914 **** gnu_result = bitsize_int (bitpos % BITS_PER_UNIT); gnu_result = size_binop (PLUS_EXPR, gnu_result, TYPE_SIZE (TREE_TYPE (gnu_prefix))); ! gnu_result = size_binop (MINUS_EXPR, gnu_result, ! bitsize_one_node); break; case Attr_Bit_Position: gnu_result = gnu_field_bitpos; break; ! } /* If this has a PLACEHOLDER_EXPR, qualify it by the object we are handling. */ --- 1901,1919 ---- gnu_result = bitsize_int (bitpos % BITS_PER_UNIT); gnu_result = size_binop (PLUS_EXPR, gnu_result, TYPE_SIZE (TREE_TYPE (gnu_prefix))); ! /* ??? Avoid a large unsigned result that will overflow when ! converted to the signed universal_integer. */ ! if (integer_zerop (gnu_result)) ! gnu_result = integer_minus_one_node; ! else ! gnu_result ! = size_binop (MINUS_EXPR, gnu_result, bitsize_one_node); break; case Attr_Bit_Position: gnu_result = gnu_field_bitpos; break; ! } /* If this has a PLACEHOLDER_EXPR, qualify it by the object we are handling. */ *************** can_equal_min_or_max_val_p (tree val, tr *** 2227,2233 **** if (TREE_CODE (val) != INTEGER_CST) return true; ! return tree_int_cst_equal (val, min_or_max_val) == 1; } /* Return true if VAL (of type TYPE) can equal the minimum value of TYPE. --- 2232,2241 ---- if (TREE_CODE (val) != INTEGER_CST) return true; ! if (max) ! return tree_int_cst_lt (val, min_or_max_val) == 0; ! else ! return tree_int_cst_lt (min_or_max_val, val) == 0; } /* Return true if VAL (of type TYPE) can equal the minimum value of TYPE. *************** Subprogram_Body_to_gnu (Node_Id gnat_nod *** 3430,3435 **** --- 3438,3445 ---- { tree gnu_retval; + VEC_pop (tree, gnu_return_var_stack); + add_stmt (gnu_result); add_stmt (build1 (LABEL_EXPR, void_type_node, VEC_last (tree, gnu_return_label_stack))); diff -Nrcpad gcc-4.7.3/gcc/ada/gcc-interface/utils.c gcc-4.7.4/gcc/ada/gcc-interface/utils.c *** gcc-4.7.3/gcc/ada/gcc-interface/utils.c Mon Aug 6 14:34:27 2012 --- gcc-4.7.4/gcc/ada/gcc-interface/utils.c Sat Oct 19 10:57:08 2013 *************** gnat_zaplevel (void) *** 500,505 **** --- 500,521 ---- free_binding_level = level; } + /* Set the context of TYPE and its parallel types (if any) to CONTEXT. */ + + static void + gnat_set_type_context (tree type, tree context) + { + tree decl = TYPE_STUB_DECL (type); + + TYPE_CONTEXT (type) = context; + + while (decl && DECL_PARALLEL_TYPE (decl)) + { + TYPE_CONTEXT (DECL_PARALLEL_TYPE (decl)) = context; + decl = TYPE_STUB_DECL (DECL_PARALLEL_TYPE (decl)); + } + } + /* Record DECL as belonging to the current lexical scope and use GNAT_NODE for location information and flag propagation. */ *************** gnat_pushdecl (tree decl, Node_Id gnat_n *** 581,587 **** if (TREE_CODE (t) == POINTER_TYPE) TYPE_NEXT_PTR_TO (t) = tt; TYPE_NAME (tt) = DECL_NAME (decl); ! TYPE_CONTEXT (tt) = DECL_CONTEXT (decl); TYPE_STUB_DECL (tt) = TYPE_STUB_DECL (t); DECL_ORIGINAL_TYPE (decl) = tt; } --- 597,603 ---- if (TREE_CODE (t) == POINTER_TYPE) TYPE_NEXT_PTR_TO (t) = tt; TYPE_NAME (tt) = DECL_NAME (decl); ! gnat_set_type_context (tt, DECL_CONTEXT (decl)); TYPE_STUB_DECL (tt) = TYPE_STUB_DECL (t); DECL_ORIGINAL_TYPE (decl) = tt; } *************** gnat_pushdecl (tree decl, Node_Id gnat_n *** 591,597 **** /* We need a variant for the placeholder machinery to work. */ tree tt = build_variant_type_copy (t); TYPE_NAME (tt) = decl; ! TYPE_CONTEXT (tt) = DECL_CONTEXT (decl); TREE_USED (tt) = TREE_USED (t); TREE_TYPE (decl) = tt; if (DECL_ORIGINAL_TYPE (TYPE_NAME (t))) --- 607,613 ---- /* We need a variant for the placeholder machinery to work. */ tree tt = build_variant_type_copy (t); TYPE_NAME (tt) = decl; ! gnat_set_type_context (tt, DECL_CONTEXT (decl)); TREE_USED (tt) = TREE_USED (t); TREE_TYPE (decl) = tt; if (DECL_ORIGINAL_TYPE (TYPE_NAME (t))) *************** gnat_pushdecl (tree decl, Node_Id gnat_n *** 613,619 **** if (!(TYPE_NAME (t) && TREE_CODE (TYPE_NAME (t)) == TYPE_DECL)) { TYPE_NAME (t) = decl; ! TYPE_CONTEXT (t) = DECL_CONTEXT (decl); } } } --- 629,635 ---- if (!(TYPE_NAME (t) && TREE_CODE (TYPE_NAME (t)) == TYPE_DECL)) { TYPE_NAME (t) = decl; ! gnat_set_type_context (t, DECL_CONTEXT (decl)); } } } diff -Nrcpad gcc-4.7.3/gcc/ada/system-linux-alpha.ads gcc-4.7.4/gcc/ada/system-linux-alpha.ads *** gcc-4.7.3/gcc/ada/system-linux-alpha.ads Mon Aug 29 10:14:45 2011 --- gcc-4.7.4/gcc/ada/system-linux-alpha.ads Sun Mar 30 15:48:48 2014 *************** *** 35,43 **** ------------------------------------------------------------------------------ package System is ! pragma Pure (System); ! -- Note that we take advantage of the implementation permission to ! -- make this unit Pure instead of Preelaborable, see RM 13.7(36) type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; --- 35,44 ---- ------------------------------------------------------------------------------ package System is ! pragma Pure; ! -- Note that we take advantage of the implementation permission to make ! -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada ! -- 2005, this is Pure in any case (AI-362). type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; *************** pragma Pure (System); *** 61,66 **** --- 62,68 ---- -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff -Nrcpad gcc-4.7.3/gcc/ada/system-linux-mips.ads gcc-4.7.4/gcc/ada/system-linux-mips.ads *** gcc-4.7.3/gcc/ada/system-linux-mips.ads Tue Aug 30 16:49:06 2011 --- gcc-4.7.4/gcc/ada/system-linux-mips.ads Sun Mar 30 15:48:48 2014 *************** package System is *** 62,67 **** --- 62,68 ---- -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff -Nrcpad gcc-4.7.3/gcc/ada/system-linux-mips64el.ads gcc-4.7.4/gcc/ada/system-linux-mips64el.ads *** gcc-4.7.3/gcc/ada/system-linux-mips64el.ads Tue Aug 30 16:49:06 2011 --- gcc-4.7.4/gcc/ada/system-linux-mips64el.ads Sun Mar 30 15:48:48 2014 *************** package System is *** 62,67 **** --- 62,68 ---- -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff -Nrcpad gcc-4.7.3/gcc/ada/system-linux-mipsel.ads gcc-4.7.4/gcc/ada/system-linux-mipsel.ads *** gcc-4.7.3/gcc/ada/system-linux-mipsel.ads Tue Aug 30 16:49:06 2011 --- gcc-4.7.4/gcc/ada/system-linux-mipsel.ads Sun Mar 30 15:48:48 2014 *************** package System is *** 62,67 **** --- 62,68 ---- -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff -Nrcpad gcc-4.7.3/gcc/ada/system-linux-s390.ads gcc-4.7.4/gcc/ada/system-linux-s390.ads *** gcc-4.7.3/gcc/ada/system-linux-s390.ads Mon Aug 29 10:14:45 2011 --- gcc-4.7.4/gcc/ada/system-linux-s390.ads Sun Mar 30 15:48:48 2014 *************** *** 35,43 **** ------------------------------------------------------------------------------ package System is ! pragma Pure (System); ! -- Note that we take advantage of the implementation permission to ! -- make this unit Pure instead of Preelaborable, see RM 13.7(36) type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; --- 35,44 ---- ------------------------------------------------------------------------------ package System is ! pragma Pure; ! -- Note that we take advantage of the implementation permission to make ! -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada ! -- 2005, this is Pure in any case (AI-362). type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; *************** pragma Pure (System); *** 61,66 **** --- 62,68 ---- -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff -Nrcpad gcc-4.7.3/gcc/ada/system-linux-s390x.ads gcc-4.7.4/gcc/ada/system-linux-s390x.ads *** gcc-4.7.3/gcc/ada/system-linux-s390x.ads Mon Aug 29 10:14:45 2011 --- gcc-4.7.4/gcc/ada/system-linux-s390x.ads Sun Mar 30 15:48:48 2014 *************** *** 35,43 **** ------------------------------------------------------------------------------ package System is ! pragma Pure (System); ! -- Note that we take advantage of the implementation permission to ! -- make this unit Pure instead of Preelaborable, see RM 13.7(36) type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; --- 35,44 ---- ------------------------------------------------------------------------------ package System is ! pragma Pure; ! -- Note that we take advantage of the implementation permission to make ! -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada ! -- 2005, this is Pure in any case (AI-362). type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; *************** pragma Pure (System); *** 61,66 **** --- 62,68 ---- -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff -Nrcpad gcc-4.7.3/gcc/ada/system-linux-sparc.ads gcc-4.7.4/gcc/ada/system-linux-sparc.ads *** gcc-4.7.3/gcc/ada/system-linux-sparc.ads Mon Aug 29 10:14:45 2011 --- gcc-4.7.4/gcc/ada/system-linux-sparc.ads Sun Mar 30 15:48:48 2014 *************** *** 35,43 **** ------------------------------------------------------------------------------ package System is ! pragma Pure (System); ! -- Note that we take advantage of the implementation permission to ! -- make this unit Pure instead of Preelaborable, see RM 13.7(36) type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; --- 35,44 ---- ------------------------------------------------------------------------------ package System is ! pragma Pure; ! -- Note that we take advantage of the implementation permission to make ! -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada ! -- 2005, this is Pure in any case (AI-362). type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; *************** pragma Pure (System); *** 61,66 **** --- 62,68 ---- -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff -Nrcpad gcc-4.7.3/gcc/ada/system-linux-sparcv9.ads gcc-4.7.4/gcc/ada/system-linux-sparcv9.ads *** gcc-4.7.3/gcc/ada/system-linux-sparcv9.ads Tue Aug 30 16:49:06 2011 --- gcc-4.7.4/gcc/ada/system-linux-sparcv9.ads Sun Mar 30 15:48:48 2014 *************** *** 7,13 **** -- S p e c -- -- (GNU/Linux-SPARCV9 Version) -- -- -- ! -- Copyright (C) 1992-2011, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- --- 7,13 ---- -- S p e c -- -- (GNU/Linux-SPARCV9 Version) -- -- -- ! -- Copyright (C) 1992-2014, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- *************** *** 35,43 **** ------------------------------------------------------------------------------ package System is ! pragma Pure (System); ! -- Note that we take advantage of the implementation permission to ! -- make this unit Pure instead of Preelaborable, see RM 13.7(36) type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; --- 35,44 ---- ------------------------------------------------------------------------------ package System is ! pragma Pure; ! -- Note that we take advantage of the implementation permission to make ! -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada ! -- 2005, this is Pure in any case (AI-362). type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; *************** pragma Pure (System); *** 61,66 **** --- 62,68 ---- -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := 8; diff -Nrcpad gcc-4.7.3/gcc/ada/system-rtems.ads gcc-4.7.4/gcc/ada/system-rtems.ads *** gcc-4.7.3/gcc/ada/system-rtems.ads Tue Aug 30 16:49:06 2011 --- gcc-4.7.4/gcc/ada/system-rtems.ads Sun Mar 30 15:48:48 2014 *************** *** 7,13 **** -- S p e c -- -- (Compiler Version) -- -- -- ! -- Copyright (C) 1992-2011 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- --- 7,13 ---- -- S p e c -- -- (Compiler Version) -- -- -- ! -- Copyright (C) 1992-2014 Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- *************** *** 34,42 **** -- -- ------------------------------------------------------------------------------ ! -- This version of System is a RTEMS version that is used in building ! -- the compiler. This is based as closely as possible on the generic ! -- version with the following exceptions: -- + priority definitions package System is --- 34,41 ---- -- -- ------------------------------------------------------------------------------ ! -- This version is for RTEMS. It is based as closely as possible on the ! -- generic version with the following exceptions: -- + priority definitions package System is *************** package System is *** 67,72 **** --- 66,72 ---- -- Storage-related Declarations type Address is private; + pragma Preelaborable_Initialization (Address); Null_Address : constant Address; Storage_Unit : constant := Standard'Storage_Unit; diff -Nrcpad gcc-4.7.3/gcc/ada/system-vxworks-arm.ads gcc-4.7.4/gcc/ada/system-vxworks-arm.ads *** gcc-4.7.3/gcc/ada/system-vxworks-arm.ads Mon Aug 29 10:14:45 2011 --- gcc-4.7.4/gcc/ada/system-vxworks-arm.ads Sun Mar 30 15:48:48 2014 *************** *** 35,44 **** ------------------------------------------------------------------------------ package System is ! pragma Pure (System); ! -- Note that we take advantage of the implementation permission to make this ! -- unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada 2005, this is ! -- Pure in any case (AI-362). type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; --- 35,44 ---- ------------------------------------------------------------------------------ package System is ! pragma Pure; ! -- Note that we take advantage of the implementation permission to make ! -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada ! -- 2005, this is Pure in any case (AI-362). type Name is (SYSTEM_NAME_GNAT); System_Name : constant Name := SYSTEM_NAME_GNAT; diff -Nrcpad gcc-4.7.3/gcc/alias.c gcc-4.7.4/gcc/alias.c *** gcc-4.7.3/gcc/alias.c Tue Sep 4 18:17:54 2012 --- gcc-4.7.4/gcc/alias.c Fri Oct 25 11:16:59 2013 *************** init_alias_analysis (void) *** 2810,2825 **** /* Wipe the reg_seen array clean. */ memset (reg_seen, 0, maxreg); ! /* Mark all hard registers which may contain an address. ! The stack, frame and argument pointers may contain an address. ! An argument register which can hold a Pmode value may contain ! an address even if it is not in BASE_REGS. ! ! The address expression is VOIDmode for an argument and ! Pmode for other registers. */ ! ! memcpy (new_reg_base_value, static_reg_base_value, ! FIRST_PSEUDO_REGISTER * sizeof (rtx)); /* Walk the insns adding values to the new_reg_base_value array. */ for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) --- 2810,2822 ---- /* Wipe the reg_seen array clean. */ memset (reg_seen, 0, maxreg); ! /* Initialize the alias information for this pass. */ ! for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) ! if (static_reg_base_value[i]) ! { ! new_reg_base_value[i] = static_reg_base_value[i]; ! reg_seen[i] = 1; ! } /* Walk the insns adding values to the new_reg_base_value array. */ for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) diff -Nrcpad gcc-4.7.3/gcc/bb-reorder.c gcc-4.7.4/gcc/bb-reorder.c *** gcc-4.7.3/gcc/bb-reorder.c Fri Jan 6 22:05:03 2012 --- gcc-4.7.4/gcc/bb-reorder.c Sun Mar 23 11:31:36 2014 *************** fix_up_fall_thru_edges (void) *** 1478,1486 **** edge e; edge_iterator ei; - /* Find EDGE_CAN_FALLTHRU edge. */ FOR_EACH_EDGE (e, ei, cur_bb->succs) ! if (e->flags & EDGE_CAN_FALLTHRU) { fall_thru = e; break; --- 1478,1485 ---- edge e; edge_iterator ei; FOR_EACH_EDGE (e, ei, cur_bb->succs) ! if (e->flags & EDGE_FALLTHRU) { fall_thru = e; break; diff -Nrcpad gcc-4.7.3/gcc/builtins.c gcc-4.7.4/gcc/builtins.c *** gcc-4.7.3/gcc/builtins.c Fri Feb 1 14:00:12 2013 --- gcc-4.7.4/gcc/builtins.c Fri May 3 08:59:14 2013 *************** fold_builtin_logb (location_t loc, tree *** 9692,9698 **** case rvc_inf: /* If arg is Inf or NaN and we're logb, return it. */ if (TREE_CODE (rettype) == REAL_TYPE) ! return fold_convert_loc (loc, rettype, arg); /* Fall through... */ case rvc_zero: /* Zero may set errno and/or raise an exception for logb, also --- 9692,9707 ---- case rvc_inf: /* If arg is Inf or NaN and we're logb, return it. */ if (TREE_CODE (rettype) == REAL_TYPE) ! { ! /* For logb(-Inf) we have to return +Inf. */ ! if (real_isinf (value) && real_isneg (value)) ! { ! REAL_VALUE_TYPE tem; ! real_inf (&tem); ! return build_real (rettype, tem); ! } ! return fold_convert_loc (loc, rettype, arg); ! } /* Fall through... */ case rvc_zero: /* Zero may set errno and/or raise an exception for logb, also diff -Nrcpad gcc-4.7.3/gcc/c-decl.c gcc-4.7.4/gcc/c-decl.c *** gcc-4.7.3/gcc/c-decl.c Thu Feb 23 16:34:02 2012 --- gcc-4.7.4/gcc/c-decl.c Tue Dec 3 13:52:12 2013 *************** build_compound_literal (location_t loc, *** 4618,4624 **** { int failure = complete_array_type (&TREE_TYPE (decl), DECL_INITIAL (decl), true); ! gcc_assert (!failure); type = TREE_TYPE (decl); TREE_TYPE (DECL_INITIAL (decl)) = type; --- 4618,4626 ---- { int failure = complete_array_type (&TREE_TYPE (decl), DECL_INITIAL (decl), true); ! /* If complete_array_type returns 3, it means that the ! initial value of the compound literal is empty. Allow it. */ ! gcc_assert (failure == 0 || failure == 3); type = TREE_TYPE (decl); TREE_TYPE (DECL_INITIAL (decl)) = type; diff -Nrcpad gcc-4.7.3/gcc/c-family/ChangeLog gcc-4.7.4/gcc/c-family/ChangeLog *** gcc-4.7.3/gcc/c-family/ChangeLog Thu Apr 11 07:56:54 2013 --- gcc-4.7.4/gcc/c-family/ChangeLog Thu Jun 12 12:07:55 2014 *************** *** 1,3 **** --- 1,24 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + + 2014-04-07 Dominique d'Humieres + + Backport from mainline + 2013-09-14 Iain Sandoe + + PR target/48094 + * c.opt (fgnu-runtime, fnext-runtime, fobjc-abi-version, + fobjc-gc, freplace-objc-classes): Accept for LTO. + + 2013-09-01 Iain Sandoe + + Backported from 4.8 + 2012-06-19 Steven Bosscher + + * c-target.def (objc_declare_unresolved_class_reference, + objc_declare_class_definition): Add new hooks. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/gcc/c-family/c-target.def gcc-4.7.4/gcc/c-family/c-target.def *** gcc-4.7.3/gcc/c-family/c-target.def Wed Apr 6 11:08:17 2011 --- gcc-4.7.4/gcc/c-family/c-target.def Sun Sep 1 19:21:33 2013 *************** DEFHOOK *** 59,65 **** common-format string object when the target provides one.", tree, (tree string), NULL) ! DEFHOOK (string_object_ref_type_p, "If a target implements string objects then this hook should return\ --- 59,79 ---- common-format string object when the target provides one.", tree, (tree string), NULL) ! ! DEFHOOK ! (objc_declare_unresolved_class_reference, ! "Declare that Objective C class @var{classname} is referenced\ ! by the current TU.", ! void, (const char *classname), ! NULL) ! ! DEFHOOK ! (objc_declare_class_definition, ! "Declare that Objective C class @var{classname} is defined\ ! by the current TU.", ! void, (const char *classname), ! NULL) ! DEFHOOK (string_object_ref_type_p, "If a target implements string objects then this hook should return\ diff -Nrcpad gcc-4.7.3/gcc/c-family/c.opt gcc-4.7.4/gcc/c-family/c.opt *** gcc-4.7.3/gcc/c-family/c.opt Mon Feb 6 10:31:18 2012 --- gcc-4.7.4/gcc/c-family/c.opt Mon Apr 7 08:00:55 2014 *************** C++ ObjC++ Var(flag_no_gnu_keywords, 0) *** 814,820 **** Recognize GNU-defined keywords fgnu-runtime ! ObjC ObjC++ Report RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME) Generate code for GNU runtime environment fgnu89-inline --- 814,820 ---- Recognize GNU-defined keywords fgnu-runtime ! ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME) Generate code for GNU runtime environment fgnu89-inline *************** fnew-abi *** 888,894 **** C++ ObjC++ Ignore Warn(switch %qs is no longer supported) fnext-runtime ! ObjC ObjC++ Report RejectNegative Var(flag_next_runtime) Generate code for NeXT (Apple Mac OS X) runtime environment fnil-receivers --- 888,894 ---- C++ ObjC++ Ignore Warn(switch %qs is no longer supported) fnext-runtime ! ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime) Generate code for NeXT (Apple Mac OS X) runtime environment fnil-receivers *************** C++ ObjC++ Optimization Var(flag_nothrow *** 906,912 **** Treat a throw() exception specification as noexcept to improve code size fobjc-abi-version= ! ObjC ObjC++ Joined Report RejectNegative UInteger Var(flag_objc_abi) Specify which ABI to use for Objective-C family code and meta-data generation. ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods --- 906,912 ---- Treat a throw() exception specification as noexcept to improve code size fobjc-abi-version= ! ObjC ObjC++ LTO Joined Report RejectNegative UInteger Var(flag_objc_abi) Specify which ABI to use for Objective-C family code and meta-data generation. ; Generate special '- .cxx_construct' and '- .cxx_destruct' methods *************** ObjC ObjC++ Var(flag_objc_exceptions) *** 926,932 **** Enable Objective-C exception and synchronization syntax fobjc-gc ! ObjC ObjC++ Var(flag_objc_gc) Enable garbage collection (GC) in Objective-C/Objective-C++ programs fobjc-nilcheck --- 926,932 ---- Enable Objective-C exception and synchronization syntax fobjc-gc ! ObjC ObjC++ LTO Var(flag_objc_gc) Enable garbage collection (GC) in Objective-C/Objective-C++ programs fobjc-nilcheck *************** C++ ObjC++ Var(flag_pretty_templates) In *** 986,992 **** -fno-pretty-templates Do not pretty-print template specializations as the template signature followed by the arguments freplace-objc-classes ! ObjC ObjC++ Var(flag_replace_objc_classes) Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime frepo --- 986,992 ---- -fno-pretty-templates Do not pretty-print template specializations as the template signature followed by the arguments freplace-objc-classes ! ObjC ObjC++ LTO Var(flag_replace_objc_classes) Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime frepo diff -Nrcpad gcc-4.7.3/gcc/cfgcleanup.c gcc-4.7.4/gcc/cfgcleanup.c *** gcc-4.7.3/gcc/cfgcleanup.c Fri Feb 1 14:00:12 2013 --- gcc-4.7.4/gcc/cfgcleanup.c Wed May 7 16:04:44 2014 *************** merge_memattrs (rtx x, rtx y) *** 922,927 **** --- 922,945 ---- set_mem_align (y, MEM_ALIGN (x)); } } + if (code == MEM) + { + if (MEM_READONLY_P (x) != MEM_READONLY_P (y)) + { + MEM_READONLY_P (x) = 0; + MEM_READONLY_P (y) = 0; + } + if (MEM_NOTRAP_P (x) != MEM_NOTRAP_P (y)) + { + MEM_NOTRAP_P (x) = 0; + MEM_NOTRAP_P (y) = 0; + } + if (MEM_VOLATILE_P (x) != MEM_VOLATILE_P (y)) + { + MEM_VOLATILE_P (x) = 1; + MEM_VOLATILE_P (y) = 1; + } + } fmt = GET_RTX_FORMAT (code); for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--) diff -Nrcpad gcc-4.7.3/gcc/cfgexpand.c gcc-4.7.4/gcc/cfgexpand.c *** gcc-4.7.3/gcc/cfgexpand.c Wed Apr 3 08:19:56 2013 --- gcc-4.7.4/gcc/cfgexpand.c Tue Oct 29 09:13:12 2013 *************** static void *** 3646,3651 **** --- 3646,3653 ---- avoid_complex_debug_insns (rtx insn, rtx *exp_p, int depth) { rtx exp = *exp_p; + const char *format_ptr; + int i, j; if (exp == NULL_RTX) return; *************** avoid_complex_debug_insns (rtx insn, rtx *** 3668,3675 **** return; } ! const char *format_ptr = GET_RTX_FORMAT (GET_CODE (exp)); ! int i, j; for (i = 0; i < GET_RTX_LENGTH (GET_CODE (exp)); i++) switch (*format_ptr++) { --- 3670,3676 ---- return; } ! format_ptr = GET_RTX_FORMAT (GET_CODE (exp)); for (i = 0; i < GET_RTX_LENGTH (GET_CODE (exp)); i++) switch (*format_ptr++) { diff -Nrcpad gcc-4.7.3/gcc/collect2-aix.h gcc-4.7.4/gcc/collect2-aix.h *** gcc-4.7.3/gcc/collect2-aix.h Tue Jun 2 19:06:56 2009 --- gcc-4.7.4/gcc/collect2-aix.h Mon Aug 12 15:41:34 2013 *************** *** 1,5 **** /* AIX cross support for collect2. ! Copyright (C) 2009 Free Software Foundation, Inc. This file is part of GCC. --- 1,5 ---- /* AIX cross support for collect2. ! Copyright (C) 2009-2013 Free Software Foundation, Inc. This file is part of GCC. *************** along with GCC; see the file COPYING3. *** 29,35 **** Definitions adapted from bfd. (Fairly heavily adapted in some cases.) ------------------------------------------------------------------------- */ ! /* Compatiblity types for bfd. */ typedef unsigned HOST_WIDE_INT bfd_vma; /* The size of an archive's fl_magic field. */ --- 29,35 ---- Definitions adapted from bfd. (Fairly heavily adapted in some cases.) ------------------------------------------------------------------------- */ ! /* Compatibility types for bfd. */ typedef unsigned HOST_WIDE_INT bfd_vma; /* The size of an archive's fl_magic field. */ *************** struct external_filehdr_32 *** 135,141 **** /* The number of entries in the symbol table. */ char f_nsyms[4]; ! /* The size of the auxillary header. */ char f_opthdr[2]; /* Flags. */ --- 135,141 ---- /* The number of entries in the symbol table. */ char f_nsyms[4]; ! /* The size of the auxiliary header. */ char f_opthdr[2]; /* Flags. */ *************** struct external_filehdr_64 *** 157,163 **** /* The offset of the symbol table from the start of the file. */ char f_symptr[8]; ! /* The size of the auxillary header. */ char f_opthdr[2]; /* Flags. */ --- 157,163 ---- /* The offset of the symbol table from the start of the file. */ char f_symptr[8]; ! /* The size of the auxiliary header. */ char f_opthdr[2]; /* Flags. */ *************** struct external_syment *** 222,235 **** /* The class of symbol (a C_* value). */ char n_sclass[1]; ! /* The number of auxillary symbols attached to this entry. */ char n_numaux[1]; }; /* Definitions required by collect2. */ #define C_EXT 2 ! #define F_SHROBJ 0x2000 #define N_UNDEF ((short) 0) #define N_TMASK 060 --- 222,236 ---- /* The class of symbol (a C_* value). */ char n_sclass[1]; ! /* The number of auxiliary symbols attached to this entry. */ char n_numaux[1]; }; /* Definitions required by collect2. */ #define C_EXT 2 ! #define F_SHROBJ 0x2000 ! #define F_LOADONLY 0x4000 #define N_UNDEF ((short) 0) #define N_TMASK 060 diff -Nrcpad gcc-4.7.3/gcc/collect2.c gcc-4.7.4/gcc/collect2.c *** gcc-4.7.3/gcc/collect2.c Tue Feb 5 16:41:08 2013 --- gcc-4.7.4/gcc/collect2.c Fri Jun 21 15:14:23 2013 *************** *** 1,7 **** /* Collect static initialization info into data structures that can be traversed by C++ initialization and finalization routines. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, ! 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Contributed by Chris Smith (csmith@convex.com). Heavily modified by Michael Meissner (meissner@cygnus.com), --- 1,7 ---- /* Collect static initialization info into data structures that can be traversed by C++ initialization and finalization routines. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, ! 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2013 Free Software Foundation, Inc. Contributed by Chris Smith (csmith@convex.com). Heavily modified by Michael Meissner (meissner@cygnus.com), *************** static void scan_prog_file (const char * *** 384,391 **** /* Delete tempfiles and exit function. */ ! void ! collect_exit (int status) { if (c_file != 0 && c_file[0]) maybe_unlink (c_file); --- 384,391 ---- /* Delete tempfiles and exit function. */ ! static void ! collect_atexit (void) { if (c_file != 0 && c_file[0]) maybe_unlink (c_file); *************** collect_exit (int status) *** 413,425 **** maybe_unlink (lderrout); } - if (status != 0 && output_file != 0 && output_file[0]) - maybe_unlink (output_file); - if (response_file) maybe_unlink (response_file); - - exit (status); } --- 413,420 ---- *************** main (int argc, char **argv) *** 1132,1137 **** --- 1127,1135 ---- signal (SIGCHLD, SIG_DFL); #endif + if (atexit (collect_atexit) != 0) + fatal_error ("atexit failed"); + /* Unlock the stdio streams. */ unlock_std_streams (); *************** collect_wait (const char *prog, struct p *** 1973,1979 **** error ("%s terminated with signal %d [%s]%s", prog, sig, strsignal(sig), WCOREDUMP(status) ? ", core dumped" : ""); ! collect_exit (FATAL_EXIT_CODE); } if (WIFEXITED (status)) --- 1971,1977 ---- error ("%s terminated with signal %d [%s]%s", prog, sig, strsignal(sig), WCOREDUMP(status) ? ", core dumped" : ""); ! exit (FATAL_EXIT_CODE); } if (WIFEXITED (status)) *************** do_wait (const char *prog, struct pex_ob *** 1989,1995 **** if (ret != 0) { error ("%s returned %d exit status", prog, ret); ! collect_exit (ret); } if (response_file) --- 1987,1993 ---- if (ret != 0) { error ("%s returned %d exit status", prog, ret); ! exit (ret); } if (response_file) diff -Nrcpad gcc-4.7.3/gcc/collect2.h gcc-4.7.4/gcc/collect2.h *** gcc-4.7.3/gcc/collect2.h Thu May 19 16:25:12 2011 --- gcc-4.7.4/gcc/collect2.h Fri Jun 21 15:14:23 2013 *************** *** 1,5 **** /* Header file for collect/tlink routines. ! Copyright (C) 1998, 2003, 2004, 2005, 2007, 2010, 2011 Free Software Foundation, Inc. This file is part of GCC. --- 1,5 ---- /* Header file for collect/tlink routines. ! Copyright (C) 1998, 2003, 2004, 2005, 2007, 2010, 2011, 2013 Free Software Foundation, Inc. This file is part of GCC. *************** extern void do_tlink (char **, char **); *** 26,33 **** extern struct pex_obj *collect_execute (const char *, char **, const char *, const char *, int flags); - extern void collect_exit (int) ATTRIBUTE_NORETURN; - extern int collect_wait (const char *, struct pex_obj *); extern void dump_file (const char *, FILE *); --- 26,31 ---- diff -Nrcpad gcc-4.7.3/gcc/config/alpha/alpha.c gcc-4.7.4/gcc/config/alpha/alpha.c *** gcc-4.7.3/gcc/config/alpha/alpha.c Thu Aug 9 18:44:40 2012 --- gcc-4.7.4/gcc/config/alpha/alpha.c Mon Sep 2 17:00:25 2013 *************** alpha_emit_conditional_move (rtx cmp, en *** 2617,2622 **** --- 2617,2623 ---- cmp_mode = cmp_mode == DImode ? DFmode : DImode; op0 = gen_lowpart (cmp_mode, tem); op1 = CONST0_RTX (cmp_mode); + cmp = gen_rtx_fmt_ee (code, VOIDmode, op0, op1); local_fast_math = 1; } *************** alpha_emit_conditional_move (rtx cmp, en *** 2658,2669 **** break; case GE: case GT: case GEU: case GTU: ! /* These must be swapped. */ ! if (op1 != CONST0_RTX (cmp_mode)) ! { ! code = swap_condition (code); ! tem = op0, op0 = op1, op1 = tem; ! } break; default: --- 2659,2670 ---- break; case GE: case GT: case GEU: case GTU: ! /* These normally need swapping, but for integer zero we have ! special patterns that recognize swapped operands. */ ! if (cmp_mode == DImode && op1 == const0_rtx) ! break; ! code = swap_condition (code); ! tem = op0, op0 = op1, op1 = tem; break; default: *************** alpha_emit_xfloating_compare (enum rtx_c *** 3025,3036 **** operands[1] = op1; out = gen_reg_rtx (DImode); ! /* What's actually returned is -1,0,1, not a proper boolean value, ! so use an EXPR_LIST as with a generic libcall instead of a ! comparison type expression. */ ! note = gen_rtx_EXPR_LIST (VOIDmode, op1, NULL_RTX); ! note = gen_rtx_EXPR_LIST (VOIDmode, op0, note); ! note = gen_rtx_EXPR_LIST (VOIDmode, func, note); alpha_emit_xfloating_libcall (func, out, operands, 2, note); return out; --- 3026,3034 ---- operands[1] = op1; out = gen_reg_rtx (DImode); ! /* What's actually returned is -1,0,1, not a proper boolean value. */ ! note = gen_rtx_fmt_ee (cmp_code, VOIDmode, op0, op1); ! note = gen_rtx_UNSPEC (DImode, gen_rtvec (1, note), UNSPEC_XFLT_COMPARE); alpha_emit_xfloating_libcall (func, out, operands, 2, note); return out; diff -Nrcpad gcc-4.7.3/gcc/config/alpha/alpha.md gcc-4.7.4/gcc/config/alpha/alpha.md *** gcc-4.7.3/gcc/config/alpha/alpha.md Tue Nov 15 23:43:08 2011 --- gcc-4.7.4/gcc/config/alpha/alpha.md Mon Jun 10 18:45:02 2013 *************** *** 25,30 **** --- 25,31 ---- ;; Uses of UNSPEC in this file: (define_c_enum "unspec" [ + UNSPEC_XFLT_COMPARE UNSPEC_ARG_HOME UNSPEC_LDGP1 UNSPEC_INSXH diff -Nrcpad gcc-4.7.3/gcc/config/arm/arm-ldmstm.ml gcc-4.7.4/gcc/config/arm/arm-ldmstm.ml *** gcc-4.7.3/gcc/config/arm/arm-ldmstm.ml Tue Dec 21 09:18:49 2010 --- gcc-4.7.4/gcc/config/arm/arm-ldmstm.ml Fri Jan 17 11:57:02 2014 *************** let destreg nregs first op_type thumb = *** 67,76 **** Printf.sprintf ("(match_operand:SI %d \"s_register_operand\" \"%s%s\")") (nregs + 1) (inout_constr op_type) (constr thumb) let write_ldm_set thumb nregs offset opnr first = let indent = " " in Printf.printf "%s" (if first then " [" else indent); ! Printf.printf "(set (match_operand:SI %d \"arm_hard_register_operand\" \"\")\n" opnr; Printf.printf "%s (mem:SI " indent; begin if offset != 0 then Printf.printf "(plus:SI " end; Printf.printf "%s" (destreg nregs first IN thumb); --- 67,79 ---- Printf.sprintf ("(match_operand:SI %d \"s_register_operand\" \"%s%s\")") (nregs + 1) (inout_constr op_type) (constr thumb) + let reg_predicate thumb = + if thumb then "low_register_operand" else "arm_hard_general_register_operand" + let write_ldm_set thumb nregs offset opnr first = let indent = " " in Printf.printf "%s" (if first then " [" else indent); ! Printf.printf "(set (match_operand:SI %d \"%s\" \"\")\n" opnr (reg_predicate thumb); Printf.printf "%s (mem:SI " indent; begin if offset != 0 then Printf.printf "(plus:SI " end; Printf.printf "%s" (destreg nregs first IN thumb); *************** let write_stm_set thumb nregs offset opn *** 84,90 **** begin if offset != 0 then Printf.printf "(plus:SI " end; Printf.printf "%s" (destreg nregs first IN thumb); begin if offset != 0 then Printf.printf " (const_int %d))" offset end; ! Printf.printf ")\n%s (match_operand:SI %d \"arm_hard_register_operand\" \"\"))" indent opnr let write_ldm_peep_set extra_indent nregs opnr first = let indent = " " ^ extra_indent in --- 87,93 ---- begin if offset != 0 then Printf.printf "(plus:SI " end; Printf.printf "%s" (destreg nregs first IN thumb); begin if offset != 0 then Printf.printf " (const_int %d))" offset end; ! Printf.printf ")\n%s (match_operand:SI %d \"%s\" \"\"))" indent opnr (reg_predicate thumb) let write_ldm_peep_set extra_indent nregs opnr first = let indent = " " ^ extra_indent in diff -Nrcpad gcc-4.7.3/gcc/config/arm/arm.c gcc-4.7.4/gcc/config/arm/arm.c *** gcc-4.7.3/gcc/config/arm/arm.c Mon Mar 18 11:52:08 2013 --- gcc-4.7.4/gcc/config/arm/arm.c Wed Aug 21 16:21:04 2013 *************** aapcs_vfp_allocate (CUMULATIVE_ARGS *pcu *** 4355,4361 **** if (((pcum->aapcs_vfp_regs_free >> regno) & mask) == mask) { pcum->aapcs_vfp_reg_alloc = mask << regno; ! if (mode == BLKmode || (mode == TImode && !TARGET_NEON)) { int i; int rcount = pcum->aapcs_vfp_rcount; --- 4355,4363 ---- if (((pcum->aapcs_vfp_regs_free >> regno) & mask) == mask) { pcum->aapcs_vfp_reg_alloc = mask << regno; ! if (mode == BLKmode ! || (mode == TImode && ! TARGET_NEON) ! || ! arm_hard_regno_mode_ok (FIRST_VFP_REGNUM + regno, mode)) { int i; int rcount = pcum->aapcs_vfp_rcount; diff -Nrcpad gcc-4.7.3/gcc/config/arm/arm.h gcc-4.7.4/gcc/config/arm/arm.h *** gcc-4.7.3/gcc/config/arm/arm.h Thu Mar 14 18:52:18 2013 --- gcc-4.7.4/gcc/config/arm/arm.h Thu May 8 17:06:04 2014 *************** extern int making_const_table; *** 2051,2064 **** } \ while (0) ! /* Make sure subsequent insns are aligned after a TBB. */ ! #define ASM_OUTPUT_CASE_END(FILE, NUM, JUMPTABLE) \ ! do \ ! { \ ! if (GET_MODE (PATTERN (JUMPTABLE)) == QImode) \ ! ASM_OUTPUT_ALIGN (FILE, 1); \ ! } \ ! while (0) #define ARM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL) \ do \ --- 2051,2059 ---- } \ while (0) ! #define LABEL_ALIGN_AFTER_BARRIER(LABEL) \ ! (GET_CODE (PATTERN (prev_active_insn (LABEL))) == ADDR_DIFF_VEC \ ! ? 1 : 0) #define ARM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL) \ do \ diff -Nrcpad gcc-4.7.3/gcc/config/arm/arm.md gcc-4.7.4/gcc/config/arm/arm.md *** gcc-4.7.3/gcc/config/arm/arm.md Fri Feb 1 14:14:11 2013 --- gcc-4.7.4/gcc/config/arm/arm.md Thu May 22 15:56:34 2014 *************** *** 256,261 **** --- 256,264 ---- ; POOL_RANGE is how far away from a constant pool entry that this insn ; can be placed. If the distance is zero, then this insn will never ; reference the pool. + ; Note that for Thumb constant pools the PC value is rounded down to the + ; nearest multiple of four. Therefore, THUMB2_POOL_RANGE (and POOL_RANGE for + ; Thumb insns) should be set to - 2. ; NEG_POOL_RANGE is nonzero for insns that can reference a constant pool entry ; before its address. It is set to - (8 + ). (define_attr "arm_pool_range" "" (const_int 0)) *************** *** 4833,4839 **** (const_int 2) (const_int 4)) (const_int 4)]) (set_attr "type" "alu_shift,load_byte") ! (set_attr "pool_range" "*,1020")] ) ;; This pattern will only be used when ldsh is not available --- 4836,4842 ---- (const_int 2) (const_int 4)) (const_int 4)]) (set_attr "type" "alu_shift,load_byte") ! (set_attr "pool_range" "*,1018")] ) ;; This pattern will only be used when ldsh is not available *************** *** 5239,5245 **** (set_attr "type" "*,*,*,load2,store2") (set_attr "arm_pool_range" "*,*,*,1020,*") (set_attr "arm_neg_pool_range" "*,*,*,1004,*") ! (set_attr "thumb2_pool_range" "*,*,*,4096,*") (set_attr "thumb2_neg_pool_range" "*,*,*,0,*")] ) --- 5242,5248 ---- (set_attr "type" "*,*,*,load2,store2") (set_attr "arm_pool_range" "*,*,*,1020,*") (set_attr "arm_neg_pool_range" "*,*,*,1004,*") ! (set_attr "thumb2_pool_range" "*,*,*,4094,*") (set_attr "thumb2_neg_pool_range" "*,*,*,0,*")] ) *************** *** 5379,5385 **** [(set_attr "length" "4,4,6,2,2,6,4,4") (set_attr "type" "*,*,*,load2,store2,load2,store2,*") (set_attr "insn" "*,mov,*,*,*,*,*,mov") ! (set_attr "pool_range" "*,*,*,*,*,1020,*,*")] ) (define_expand "movsi" --- 5382,5388 ---- [(set_attr "length" "4,4,6,2,2,6,4,4") (set_attr "type" "*,*,*,load2,store2,load2,store2,*") (set_attr "insn" "*,mov,*,*,*,*,*,mov") ! (set_attr "pool_range" "*,*,*,*,*,1018,*,*")] ) (define_expand "movsi" *************** *** 5539,5545 **** mov\\t%0, %1" [(set_attr "length" "2,2,4,4,2,2,2,2,2") (set_attr "type" "*,*,*,*,load1,store1,load1,store1,*") ! (set_attr "pool_range" "*,*,*,*,*,*,1020,*,*") (set_attr "conds" "set,clob,*,*,nocond,nocond,nocond,nocond,nocond")]) (define_split --- 5542,5548 ---- mov\\t%0, %1" [(set_attr "length" "2,2,4,4,2,2,2,2,2") (set_attr "type" "*,*,*,*,load1,store1,load1,store1,*") ! (set_attr "pool_range" "*,*,*,*,*,*,1018,*,*") (set_attr "conds" "set,clob,*,*,nocond,nocond,nocond,nocond,nocond")]) (define_split *************** *** 5632,5638 **** (match_dup 2)] UNSPEC_PIC_BASE))] "operands[3] = TARGET_THUMB ? GEN_INT (4) : GEN_INT (8);" [(set_attr "type" "load1,load1,load1") ! (set_attr "pool_range" "4096,4096,1024") (set_attr "neg_pool_range" "4084,0,0") (set_attr "arch" "a,t2,t1") (set_attr "length" "8,6,4")] --- 5635,5641 ---- (match_dup 2)] UNSPEC_PIC_BASE))] "operands[3] = TARGET_THUMB ? GEN_INT (4) : GEN_INT (8);" [(set_attr "type" "load1,load1,load1") ! (set_attr "pool_range" "4096,4094,1022") (set_attr "neg_pool_range" "4084,0,0") (set_attr "arch" "a,t2,t1") (set_attr "length" "8,6,4")] *************** *** 5648,5654 **** "TARGET_32BIT && flag_pic" "ldr%?\\t%0, %1" [(set_attr "type" "load1") ! (set_attr "pool_range" "4096") (set (attr "neg_pool_range") (if_then_else (eq_attr "is_thumb" "no") (const_int 4084) --- 5651,5660 ---- "TARGET_32BIT && flag_pic" "ldr%?\\t%0, %1" [(set_attr "type" "load1") ! (set (attr "pool_range") ! (if_then_else (eq_attr "is_thumb" "no") ! (const_int 4096) ! (const_int 4094))) (set (attr "neg_pool_range") (if_then_else (eq_attr "is_thumb" "no") (const_int 4084) *************** *** 5661,5667 **** "TARGET_THUMB1 && flag_pic" "ldr\\t%0, %1" [(set_attr "type" "load1") ! (set (attr "pool_range") (const_int 1024))] ) (define_insn "pic_add_dot_plus_four" --- 5667,5673 ---- "TARGET_THUMB1 && flag_pic" "ldr\\t%0, %1" [(set_attr "type" "load1") ! (set (attr "pool_range") (const_int 1018))] ) (define_insn "pic_add_dot_plus_four" *************** *** 6456,6462 **** [(set_attr "length" "2") (set_attr "type" "*,load1,store1,*,*") (set_attr "insn" "mov,*,*,mov,mov") ! (set_attr "pool_range" "*,1020,*,*,*") (set_attr "conds" "clob,nocond,nocond,nocond,nocond")]) (define_expand "movsf" --- 6462,6468 ---- [(set_attr "length" "2") (set_attr "type" "*,load1,store1,*,*") (set_attr "insn" "mov,*,*,mov,mov") ! (set_attr "pool_range" "*,1018,*,*,*") (set_attr "conds" "clob,nocond,nocond,nocond,nocond")]) (define_expand "movsf" *************** *** 6511,6517 **** [(set_attr "predicable" "yes") (set_attr "type" "*,load1,store1") (set_attr "insn" "mov,*,*") ! (set_attr "pool_range" "*,4096,*") (set_attr "arm_neg_pool_range" "*,4084,*") (set_attr "thumb2_neg_pool_range" "*,0,*")] ) --- 6517,6524 ---- [(set_attr "predicable" "yes") (set_attr "type" "*,load1,store1") (set_attr "insn" "mov,*,*") ! (set_attr "arm_pool_range" "*,4096,*") ! (set_attr "thumb2_pool_range" "*,4094,*") (set_attr "arm_neg_pool_range" "*,4084,*") (set_attr "thumb2_neg_pool_range" "*,0,*")] ) *************** *** 6533,6539 **** mov\\t%0, %1" [(set_attr "length" "2") (set_attr "type" "*,load1,store1,load1,store1,*,*") ! (set_attr "pool_range" "*,*,*,1020,*,*,*") (set_attr "insn" "*,*,*,*,*,mov,mov") (set_attr "conds" "clob,nocond,nocond,nocond,nocond,nocond,nocond")] ) --- 6540,6546 ---- mov\\t%0, %1" [(set_attr "length" "2") (set_attr "type" "*,load1,store1,load1,store1,*,*") ! (set_attr "pool_range" "*,*,*,1018,*,*,*") (set_attr "insn" "*,*,*,*,*,mov,mov") (set_attr "conds" "clob,nocond,nocond,nocond,nocond,nocond,nocond")] ) *************** *** 6622,6628 **** " [(set_attr "length" "8,12,16,8,8") (set_attr "type" "*,*,*,load2,store2") ! (set_attr "pool_range" "*,*,*,1020,*") (set_attr "arm_neg_pool_range" "*,*,*,1004,*") (set_attr "thumb2_neg_pool_range" "*,*,*,0,*")] ) --- 6629,6636 ---- " [(set_attr "length" "8,12,16,8,8") (set_attr "type" "*,*,*,load2,store2") ! (set_attr "arm_pool_range" "*,*,*,1020,*") ! (set_attr "thumb2_pool_range" "*,*,*,1018,*") (set_attr "arm_neg_pool_range" "*,*,*,1004,*") (set_attr "thumb2_neg_pool_range" "*,*,*,0,*")] ) *************** *** 6665,6671 **** [(set_attr "length" "4,2,2,6,4,4") (set_attr "type" "*,load2,store2,load2,store2,*") (set_attr "insn" "*,*,*,*,*,mov") ! (set_attr "pool_range" "*,*,*,1020,*,*")] ) (define_expand "movxf" --- 6673,6679 ---- [(set_attr "length" "4,2,2,6,4,4") (set_attr "type" "*,load2,store2,load2,store2,*") (set_attr "insn" "*,*,*,*,*,mov") ! (set_attr "pool_range" "*,*,*,1018,*,*")] ) (define_expand "movxf" *************** *** 7561,7572 **** (define_insn "*arm_cmpdi_unsigned" [(set (reg:CC_CZ CC_REGNUM) ! (compare:CC_CZ (match_operand:DI 0 "s_register_operand" "r") ! (match_operand:DI 1 "arm_di_operand" "rDi")))] "TARGET_32BIT" "cmp\\t%R0, %R1\;it eq\;cmpeq\\t%Q0, %Q1" [(set_attr "conds" "set") ! (set_attr "length" "8")] ) (define_insn "*arm_cmpdi_zero" --- 7569,7581 ---- (define_insn "*arm_cmpdi_unsigned" [(set (reg:CC_CZ CC_REGNUM) ! (compare:CC_CZ (match_operand:DI 0 "s_register_operand" "r,r") ! (match_operand:DI 1 "arm_di_operand" "rDi,rDi")))] "TARGET_32BIT" "cmp\\t%R0, %R1\;it eq\;cmpeq\\t%Q0, %Q1" [(set_attr "conds" "set") ! (set_attr "arch" "a,t2") ! (set_attr "length" "8,10")] ) (define_insn "*arm_cmpdi_zero" diff -Nrcpad gcc-4.7.3/gcc/config/arm/ldmstm.md gcc-4.7.4/gcc/config/arm/ldmstm.md *** gcc-4.7.3/gcc/config/arm/ldmstm.md Thu Jun 16 13:51:17 2011 --- gcc-4.7.4/gcc/config/arm/ldmstm.md Fri Jan 17 11:57:02 2014 *************** *** 23,37 **** (define_insn "*ldm4_ia" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (match_operand:SI 5 "s_register_operand" "rk"))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) ! (set (match_operand:SI 4 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" --- 23,37 ---- (define_insn "*ldm4_ia" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_operand:SI 5 "s_register_operand" "rk"))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) ! (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" *************** *** 41,55 **** (define_insn "*thumb_ldm4_ia" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (match_operand:SI 5 "s_register_operand" "l"))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) ! (set (match_operand:SI 4 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4" --- 41,55 ---- (define_insn "*thumb_ldm4_ia" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "low_register_operand" "") (mem:SI (match_operand:SI 5 "s_register_operand" "l"))) ! (set (match_operand:SI 2 "low_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) ! (set (match_operand:SI 3 "low_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) ! (set (match_operand:SI 4 "low_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4" *************** *** 60,74 **** [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int 16))) ! (set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (match_dup 5))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) ! (set (match_operand:SI 4 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" --- 60,74 ---- [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int 16))) ! (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_dup 5))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) ! (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" *************** *** 80,94 **** [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&l") (plus:SI (match_dup 5) (const_int 16))) ! (set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (match_dup 5))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) ! (set (match_operand:SI 4 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5" --- 80,94 ---- [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&l") (plus:SI (match_dup 5) (const_int 16))) ! (set (match_operand:SI 1 "low_register_operand" "") (mem:SI (match_dup 5))) ! (set (match_operand:SI 2 "low_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) ! (set (match_operand:SI 3 "low_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) ! (set (match_operand:SI 4 "low_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5" *************** *** 98,110 **** (define_insn "*stm4_ia" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (match_operand:SI 5 "s_register_operand" "rk")) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 4))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) ! (match_operand:SI 3 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) ! (match_operand:SI 4 "arm_hard_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stm%(ia%)\t%5, {%1, %2, %3, %4}" [(set_attr "type" "store4") --- 98,110 ---- (define_insn "*stm4_ia" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (match_operand:SI 5 "s_register_operand" "rk")) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 4))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) ! (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) ! (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stm%(ia%)\t%5, {%1, %2, %3, %4}" [(set_attr "type" "store4") *************** *** 115,127 **** [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int 16))) (set (mem:SI (match_dup 5)) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 4))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) ! (match_operand:SI 3 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) ! (match_operand:SI 4 "arm_hard_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" "stm%(ia%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4") --- 115,127 ---- [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int 16))) (set (mem:SI (match_dup 5)) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 4))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) ! (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) ! (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" "stm%(ia%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4") *************** *** 132,160 **** [(set (match_operand:SI 5 "s_register_operand" "+&l") (plus:SI (match_dup 5) (const_int 16))) (set (mem:SI (match_dup 5)) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 4))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) ! (match_operand:SI 3 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) ! (match_operand:SI 4 "arm_hard_register_operand" ""))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5" "stm%(ia%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4")]) (define_insn "*ldm4_ib" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int 4)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12)))) ! (set (match_operand:SI 4 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 16))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" --- 132,160 ---- [(set (match_operand:SI 5 "s_register_operand" "+&l") (plus:SI (match_dup 5) (const_int 16))) (set (mem:SI (match_dup 5)) ! (match_operand:SI 1 "low_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 4))) ! (match_operand:SI 2 "low_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) ! (match_operand:SI 3 "low_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) ! (match_operand:SI 4 "low_register_operand" ""))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5" "stm%(ia%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4")]) (define_insn "*ldm4_ib" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int 4)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12)))) ! (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 16))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" *************** *** 166,181 **** [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int 16))) ! (set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12)))) ! (set (match_operand:SI 4 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 16))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" --- 166,181 ---- [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int 16))) ! (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 4)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 8)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 12)))) ! (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int 16))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" *************** *** 186,198 **** (define_insn "*stm4_ib" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int 4))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) ! (match_operand:SI 3 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 16))) ! (match_operand:SI 4 "arm_hard_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stm%(ib%)\t%5, {%1, %2, %3, %4}" [(set_attr "type" "store4") --- 186,198 ---- (define_insn "*stm4_ib" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int 4))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) ! (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 16))) ! (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stm%(ib%)\t%5, {%1, %2, %3, %4}" [(set_attr "type" "store4") *************** *** 203,215 **** [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int 16))) (set (mem:SI (plus:SI (match_dup 5) (const_int 4))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) ! (match_operand:SI 3 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 16))) ! (match_operand:SI 4 "arm_hard_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" "stm%(ib%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4") --- 203,215 ---- [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int 16))) (set (mem:SI (plus:SI (match_dup 5) (const_int 4))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 8))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 12))) ! (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int 16))) ! (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" "stm%(ib%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4") *************** *** 217,232 **** (define_insn "*ldm4_da" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int -12)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -8)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -4)))) ! (set (match_operand:SI 4 "arm_hard_register_operand" "") (mem:SI (match_dup 5)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "ldm%(da%)\t%5, {%1, %2, %3, %4}" --- 217,232 ---- (define_insn "*ldm4_da" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int -12)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -8)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -4)))) ! (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (match_dup 5)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "ldm%(da%)\t%5, {%1, %2, %3, %4}" *************** *** 237,252 **** [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int -16))) ! (set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -12)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -8)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -4)))) ! (set (match_operand:SI 4 "arm_hard_register_operand" "") (mem:SI (match_dup 5)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" "ldm%(da%)\t%5!, {%1, %2, %3, %4}" --- 237,252 ---- [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int -16))) ! (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -12)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -8)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -4)))) ! (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (match_dup 5)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" "ldm%(da%)\t%5!, {%1, %2, %3, %4}" *************** *** 256,268 **** (define_insn "*stm4_da" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int -12))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -8))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -4))) ! (match_operand:SI 3 "arm_hard_register_operand" "")) (set (mem:SI (match_dup 5)) ! (match_operand:SI 4 "arm_hard_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stm%(da%)\t%5, {%1, %2, %3, %4}" [(set_attr "type" "store4") --- 256,268 ---- (define_insn "*stm4_da" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int -12))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -8))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -4))) ! (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (match_dup 5)) ! (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stm%(da%)\t%5, {%1, %2, %3, %4}" [(set_attr "type" "store4") *************** *** 273,285 **** [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int -16))) (set (mem:SI (plus:SI (match_dup 5) (const_int -12))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -8))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -4))) ! (match_operand:SI 3 "arm_hard_register_operand" "")) (set (mem:SI (match_dup 5)) ! (match_operand:SI 4 "arm_hard_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" "stm%(da%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4") --- 273,285 ---- [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int -16))) (set (mem:SI (plus:SI (match_dup 5) (const_int -12))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -8))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -4))) ! (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (match_dup 5)) ! (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 5" "stm%(da%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4") *************** *** 287,302 **** (define_insn "*ldm4_db" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int -16)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -12)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -8)))) ! (set (match_operand:SI 4 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" --- 287,302 ---- (define_insn "*ldm4_db" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int -16)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -12)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -8)))) ! (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" *************** *** 308,323 **** [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int -16))) ! (set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -16)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -12)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -8)))) ! (set (match_operand:SI 4 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" --- 308,323 ---- [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int -16))) ! (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -16)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -12)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -8)))) ! (set (match_operand:SI 4 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 5) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" *************** *** 328,340 **** (define_insn "*stm4_db" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int -16))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -12))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -8))) ! (match_operand:SI 3 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -4))) ! (match_operand:SI 4 "arm_hard_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stm%(db%)\t%5, {%1, %2, %3, %4}" [(set_attr "type" "store4") --- 328,340 ---- (define_insn "*stm4_db" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 5 "s_register_operand" "rk") (const_int -16))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -12))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -8))) ! (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -4))) ! (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stm%(db%)\t%5, {%1, %2, %3, %4}" [(set_attr "type" "store4") *************** *** 345,357 **** [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int -16))) (set (mem:SI (plus:SI (match_dup 5) (const_int -16))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -12))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -8))) ! (match_operand:SI 3 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -4))) ! (match_operand:SI 4 "arm_hard_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" "stm%(db%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4") --- 345,357 ---- [(set (match_operand:SI 5 "s_register_operand" "+&rk") (plus:SI (match_dup 5) (const_int -16))) (set (mem:SI (plus:SI (match_dup 5) (const_int -16))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -12))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -8))) ! (match_operand:SI 3 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 5) (const_int -4))) ! (match_operand:SI 4 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 5" "stm%(db%)\t%5!, {%1, %2, %3, %4}" [(set_attr "type" "store4") *************** *** 466,477 **** (define_insn "*ldm3_ia" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (match_operand:SI 4 "s_register_operand" "rk"))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" --- 466,477 ---- (define_insn "*ldm3_ia" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_operand:SI 4 "s_register_operand" "rk"))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" *************** *** 481,492 **** (define_insn "*thumb_ldm3_ia" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (match_operand:SI 4 "s_register_operand" "l"))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3" --- 481,492 ---- (define_insn "*thumb_ldm3_ia" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "low_register_operand" "") (mem:SI (match_operand:SI 4 "s_register_operand" "l"))) ! (set (match_operand:SI 2 "low_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) ! (set (match_operand:SI 3 "low_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3" *************** *** 497,508 **** [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int 12))) ! (set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (match_dup 4))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" --- 497,508 ---- [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int 12))) ! (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_dup 4))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" *************** *** 514,525 **** [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&l") (plus:SI (match_dup 4) (const_int 12))) ! (set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (match_dup 4))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4" --- 514,525 ---- [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&l") (plus:SI (match_dup 4) (const_int 12))) ! (set (match_operand:SI 1 "low_register_operand" "") (mem:SI (match_dup 4))) ! (set (match_operand:SI 2 "low_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) ! (set (match_operand:SI 3 "low_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4" *************** *** 529,539 **** (define_insn "*stm3_ia" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (match_operand:SI 4 "s_register_operand" "rk")) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 4))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) ! (match_operand:SI 3 "arm_hard_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stm%(ia%)\t%4, {%1, %2, %3}" [(set_attr "type" "store3") --- 529,539 ---- (define_insn "*stm3_ia" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (match_operand:SI 4 "s_register_operand" "rk")) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 4))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) ! (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stm%(ia%)\t%4, {%1, %2, %3}" [(set_attr "type" "store3") *************** *** 544,554 **** [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int 12))) (set (mem:SI (match_dup 4)) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 4))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) ! (match_operand:SI 3 "arm_hard_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stm%(ia%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3") --- 544,554 ---- [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int 12))) (set (mem:SI (match_dup 4)) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 4))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) ! (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stm%(ia%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3") *************** *** 559,582 **** [(set (match_operand:SI 4 "s_register_operand" "+&l") (plus:SI (match_dup 4) (const_int 12))) (set (mem:SI (match_dup 4)) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 4))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) ! (match_operand:SI 3 "arm_hard_register_operand" ""))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4" "stm%(ia%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3")]) (define_insn "*ldm3_ib" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int 4)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 12))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" --- 559,582 ---- [(set (match_operand:SI 4 "s_register_operand" "+&l") (plus:SI (match_dup 4) (const_int 12))) (set (mem:SI (match_dup 4)) ! (match_operand:SI 1 "low_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 4))) ! (match_operand:SI 2 "low_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) ! (match_operand:SI 3 "low_register_operand" ""))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4" "stm%(ia%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3")]) (define_insn "*ldm3_ib" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int 4)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 12))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" *************** *** 588,600 **** [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int 12))) ! (set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 12))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" --- 588,600 ---- [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int 12))) ! (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 4)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 8)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int 12))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" *************** *** 605,615 **** (define_insn "*stm3_ib" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int 4))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 12))) ! (match_operand:SI 3 "arm_hard_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stm%(ib%)\t%4, {%1, %2, %3}" [(set_attr "type" "store3") --- 605,615 ---- (define_insn "*stm3_ib" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int 4))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 12))) ! (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stm%(ib%)\t%4, {%1, %2, %3}" [(set_attr "type" "store3") *************** *** 620,630 **** [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int 12))) (set (mem:SI (plus:SI (match_dup 4) (const_int 4))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 12))) ! (match_operand:SI 3 "arm_hard_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stm%(ib%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3") --- 620,630 ---- [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int 12))) (set (mem:SI (plus:SI (match_dup 4) (const_int 4))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 8))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int 12))) ! (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stm%(ib%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3") *************** *** 632,644 **** (define_insn "*ldm3_da" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int -8)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -4)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (match_dup 4)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "ldm%(da%)\t%4, {%1, %2, %3}" --- 632,644 ---- (define_insn "*ldm3_da" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int -8)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -4)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (match_dup 4)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "ldm%(da%)\t%4, {%1, %2, %3}" *************** *** 649,661 **** [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int -12))) ! (set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -8)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -4)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (match_dup 4)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "ldm%(da%)\t%4!, {%1, %2, %3}" --- 649,661 ---- [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int -12))) ! (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -8)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -4)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (match_dup 4)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "ldm%(da%)\t%4!, {%1, %2, %3}" *************** *** 665,675 **** (define_insn "*stm3_da" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int -8))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -4))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (match_dup 4)) ! (match_operand:SI 3 "arm_hard_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stm%(da%)\t%4, {%1, %2, %3}" [(set_attr "type" "store3") --- 665,675 ---- (define_insn "*stm3_da" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int -8))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -4))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (match_dup 4)) ! (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stm%(da%)\t%4, {%1, %2, %3}" [(set_attr "type" "store3") *************** *** 680,690 **** [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int -12))) (set (mem:SI (plus:SI (match_dup 4) (const_int -8))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -4))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (match_dup 4)) ! (match_operand:SI 3 "arm_hard_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stm%(da%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3") --- 680,690 ---- [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int -12))) (set (mem:SI (plus:SI (match_dup 4) (const_int -8))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -4))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (match_dup 4)) ! (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 4" "stm%(da%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3") *************** *** 692,704 **** (define_insn "*ldm3_db" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int -12)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -8)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" --- 692,704 ---- (define_insn "*ldm3_db" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int -12)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -8)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" *************** *** 710,722 **** [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int -12))) ! (set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -12)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -8)))) ! (set (match_operand:SI 3 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" --- 710,722 ---- [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int -12))) ! (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -12)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -8)))) ! (set (match_operand:SI 3 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 4) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" *************** *** 727,737 **** (define_insn "*stm3_db" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int -12))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -8))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -4))) ! (match_operand:SI 3 "arm_hard_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stm%(db%)\t%4, {%1, %2, %3}" [(set_attr "type" "store3") --- 727,737 ---- (define_insn "*stm3_db" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 4 "s_register_operand" "rk") (const_int -12))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -8))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -4))) ! (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stm%(db%)\t%4, {%1, %2, %3}" [(set_attr "type" "store3") *************** *** 742,752 **** [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int -12))) (set (mem:SI (plus:SI (match_dup 4) (const_int -12))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -8))) ! (match_operand:SI 2 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -4))) ! (match_operand:SI 3 "arm_hard_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stm%(db%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3") --- 742,752 ---- [(set (match_operand:SI 4 "s_register_operand" "+&rk") (plus:SI (match_dup 4) (const_int -12))) (set (mem:SI (plus:SI (match_dup 4) (const_int -12))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -8))) ! (match_operand:SI 2 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 4) (const_int -4))) ! (match_operand:SI 3 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 4" "stm%(db%)\t%4!, {%1, %2, %3}" [(set_attr "type" "store3") *************** *** 847,855 **** (define_insn "*ldm2_ia" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (match_operand:SI 3 "s_register_operand" "rk"))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" --- 847,855 ---- (define_insn "*ldm2_ia" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_operand:SI 3 "s_register_operand" "rk"))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" *************** *** 859,867 **** (define_insn "*thumb_ldm2_ia" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (match_operand:SI 3 "s_register_operand" "l"))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 2" --- 859,867 ---- (define_insn "*thumb_ldm2_ia" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "low_register_operand" "") (mem:SI (match_operand:SI 3 "s_register_operand" "l"))) ! (set (match_operand:SI 2 "low_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 2" *************** *** 872,880 **** [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int 8))) ! (set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (match_dup 3))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" --- 872,880 ---- [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int 8))) ! (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (match_dup 3))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" *************** *** 886,894 **** [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&l") (plus:SI (match_dup 3) (const_int 8))) ! (set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (match_dup 3))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3" --- 886,894 ---- [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&l") (plus:SI (match_dup 3) (const_int 8))) ! (set (match_operand:SI 1 "low_register_operand" "") (mem:SI (match_dup 3))) ! (set (match_operand:SI 2 "low_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4))))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3" *************** *** 898,906 **** (define_insn "*stm2_ia" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (match_operand:SI 3 "s_register_operand" "rk")) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 4))) ! (match_operand:SI 2 "arm_hard_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" "stm%(ia%)\t%3, {%1, %2}" [(set_attr "type" "store2") --- 898,906 ---- (define_insn "*stm2_ia" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (match_operand:SI 3 "s_register_operand" "rk")) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 4))) ! (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" "stm%(ia%)\t%3, {%1, %2}" [(set_attr "type" "store2") *************** *** 911,919 **** [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int 8))) (set (mem:SI (match_dup 3)) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 4))) ! (match_operand:SI 2 "arm_hard_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stm%(ia%)\t%3!, {%1, %2}" [(set_attr "type" "store2") --- 911,919 ---- [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int 8))) (set (mem:SI (match_dup 3)) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 4))) ! (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stm%(ia%)\t%3!, {%1, %2}" [(set_attr "type" "store2") *************** *** 924,942 **** [(set (match_operand:SI 3 "s_register_operand" "+&l") (plus:SI (match_dup 3) (const_int 8))) (set (mem:SI (match_dup 3)) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 4))) ! (match_operand:SI 2 "arm_hard_register_operand" ""))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3" "stm%(ia%)\t%3!, {%1, %2}" [(set_attr "type" "store2")]) (define_insn "*ldm2_ib" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int 4)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 8))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" --- 924,942 ---- [(set (match_operand:SI 3 "s_register_operand" "+&l") (plus:SI (match_dup 3) (const_int 8))) (set (mem:SI (match_dup 3)) ! (match_operand:SI 1 "low_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 4))) ! (match_operand:SI 2 "low_register_operand" ""))])] "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3" "stm%(ia%)\t%3!, {%1, %2}" [(set_attr "type" "store2")]) (define_insn "*ldm2_ib" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int 4)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 8))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" *************** *** 948,957 **** [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int 8))) ! (set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 8))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" --- 948,957 ---- [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int 8))) ! (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 4)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int 8))))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" *************** *** 962,970 **** (define_insn "*stm2_ib" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int 4))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 8))) ! (match_operand:SI 2 "arm_hard_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" "stm%(ib%)\t%3, {%1, %2}" [(set_attr "type" "store2") --- 962,970 ---- (define_insn "*stm2_ib" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int 4))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 8))) ! (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" "stm%(ib%)\t%3, {%1, %2}" [(set_attr "type" "store2") *************** *** 975,983 **** [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int 8))) (set (mem:SI (plus:SI (match_dup 3) (const_int 4))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 8))) ! (match_operand:SI 2 "arm_hard_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stm%(ib%)\t%3!, {%1, %2}" [(set_attr "type" "store2") --- 975,983 ---- [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int 8))) (set (mem:SI (plus:SI (match_dup 3) (const_int 4))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int 8))) ! (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stm%(ib%)\t%3!, {%1, %2}" [(set_attr "type" "store2") *************** *** 985,994 **** (define_insn "*ldm2_da" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int -4)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (match_dup 3)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" "ldm%(da%)\t%3, {%1, %2}" --- 985,994 ---- (define_insn "*ldm2_da" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int -4)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (match_dup 3)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" "ldm%(da%)\t%3, {%1, %2}" *************** *** 999,1008 **** [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int -8))) ! (set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int -4)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (match_dup 3)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "ldm%(da%)\t%3!, {%1, %2}" --- 999,1008 ---- [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int -8))) ! (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int -4)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (match_dup 3)))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "ldm%(da%)\t%3!, {%1, %2}" *************** *** 1012,1020 **** (define_insn "*stm2_da" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int -4))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (match_dup 3)) ! (match_operand:SI 2 "arm_hard_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" "stm%(da%)\t%3, {%1, %2}" [(set_attr "type" "store2") --- 1012,1020 ---- (define_insn "*stm2_da" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int -4))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (match_dup 3)) ! (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 2" "stm%(da%)\t%3, {%1, %2}" [(set_attr "type" "store2") *************** *** 1025,1033 **** [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int -8))) (set (mem:SI (plus:SI (match_dup 3) (const_int -4))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (match_dup 3)) ! (match_operand:SI 2 "arm_hard_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stm%(da%)\t%3!, {%1, %2}" [(set_attr "type" "store2") --- 1025,1033 ---- [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int -8))) (set (mem:SI (plus:SI (match_dup 3) (const_int -4))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (match_dup 3)) ! (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_ARM && XVECLEN (operands[0], 0) == 3" "stm%(da%)\t%3!, {%1, %2}" [(set_attr "type" "store2") *************** *** 1035,1044 **** (define_insn "*ldm2_db" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int -8)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" --- 1035,1044 ---- (define_insn "*ldm2_db" [(match_parallel 0 "load_multiple_operation" ! [(set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int -8)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" *************** *** 1050,1059 **** [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int -8))) ! (set (match_operand:SI 1 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int -8)))) ! (set (match_operand:SI 2 "arm_hard_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" --- 1050,1059 ---- [(match_parallel 0 "load_multiple_operation" [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int -8))) ! (set (match_operand:SI 1 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int -8)))) ! (set (match_operand:SI 2 "arm_hard_general_register_operand" "") (mem:SI (plus:SI (match_dup 3) (const_int -4))))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" *************** *** 1064,1072 **** (define_insn "*stm2_db" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int -8))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int -4))) ! (match_operand:SI 2 "arm_hard_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" "stm%(db%)\t%3, {%1, %2}" [(set_attr "type" "store2") --- 1064,1072 ---- (define_insn "*stm2_db" [(match_parallel 0 "store_multiple_operation" [(set (mem:SI (plus:SI (match_operand:SI 3 "s_register_operand" "rk") (const_int -8))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int -4))) ! (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 2" "stm%(db%)\t%3, {%1, %2}" [(set_attr "type" "store2") *************** *** 1077,1085 **** [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int -8))) (set (mem:SI (plus:SI (match_dup 3) (const_int -8))) ! (match_operand:SI 1 "arm_hard_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int -4))) ! (match_operand:SI 2 "arm_hard_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stm%(db%)\t%3!, {%1, %2}" [(set_attr "type" "store2") --- 1077,1085 ---- [(set (match_operand:SI 3 "s_register_operand" "+&rk") (plus:SI (match_dup 3) (const_int -8))) (set (mem:SI (plus:SI (match_dup 3) (const_int -8))) ! (match_operand:SI 1 "arm_hard_general_register_operand" "")) (set (mem:SI (plus:SI (match_dup 3) (const_int -4))) ! (match_operand:SI 2 "arm_hard_general_register_operand" ""))])] "TARGET_32BIT && XVECLEN (operands[0], 0) == 3" "stm%(db%)\t%3!, {%1, %2}" [(set_attr "type" "store2") diff -Nrcpad gcc-4.7.3/gcc/config/arm/neon.md gcc-4.7.4/gcc/config/arm/neon.md *** gcc-4.7.3/gcc/config/arm/neon.md Mon Aug 20 10:18:36 2012 --- gcc-4.7.4/gcc/config/arm/neon.md Fri May 10 15:27:15 2013 *************** *** 201,207 **** (set_attr "type" "*,f_stored,*,f_loadd,*,*,alu,load2,store2") (set_attr "insn" "*,*,*,*,*,*,mov,*,*") (set_attr "length" "4,4,4,4,4,4,8,8,8") ! (set_attr "pool_range" "*,*,*,1020,*,*,*,1020,*") (set_attr "neg_pool_range" "*,*,*,1004,*,*,*,1004,*")]) (define_insn "*neon_mov" --- 201,208 ---- (set_attr "type" "*,f_stored,*,f_loadd,*,*,alu,load2,store2") (set_attr "insn" "*,*,*,*,*,*,mov,*,*") (set_attr "length" "4,4,4,4,4,4,8,8,8") ! (set_attr "arm_pool_range" "*,*,*,1020,*,*,*,1020,*") ! (set_attr "thumb2_pool_range" "*,*,*,1018,*,*,*,1018,*") (set_attr "neg_pool_range" "*,*,*,1004,*,*,*,1004,*")]) (define_insn "*neon_mov" *************** *** 246,252 **** (set_attr "type" "*,*,*,*,*,*,alu,load4,store4") (set_attr "insn" "*,*,*,*,*,*,mov,*,*") (set_attr "length" "4,8,4,8,8,8,16,8,16") ! (set_attr "pool_range" "*,*,*,1020,*,*,*,1020,*") (set_attr "neg_pool_range" "*,*,*,996,*,*,*,996,*")]) (define_expand "movti" --- 247,254 ---- (set_attr "type" "*,*,*,*,*,*,alu,load4,store4") (set_attr "insn" "*,*,*,*,*,*,mov,*,*") (set_attr "length" "4,8,4,8,8,8,16,8,16") ! (set_attr "arm_pool_range" "*,*,*,1020,*,*,*,1020,*") ! (set_attr "thumb2_pool_range" "*,*,*,1018,*,*,*,1018,*") (set_attr "neg_pool_range" "*,*,*,996,*,*,*,996,*")]) (define_expand "movti" diff -Nrcpad gcc-4.7.3/gcc/config/arm/predicates.md gcc-4.7.4/gcc/config/arm/predicates.md *** gcc-4.7.3/gcc/config/arm/predicates.md Tue Jan 10 04:14:09 2012 --- gcc-4.7.4/gcc/config/arm/predicates.md Fri Jan 17 11:57:02 2014 *************** *** 31,41 **** || REGNO_REG_CLASS (REGNO (op)) != NO_REGS)); }) ! ;; Any hard register. ! (define_predicate "arm_hard_register_operand" (match_code "reg") { ! return REGNO (op) < FIRST_PSEUDO_REGISTER; }) ;; A low register. --- 31,41 ---- || REGNO_REG_CLASS (REGNO (op)) != NO_REGS)); }) ! ;; Any general register. ! (define_predicate "arm_hard_general_register_operand" (match_code "reg") { ! return REGNO (op) <= LAST_ARM_REGNUM; }) ;; A low register. diff -Nrcpad gcc-4.7.3/gcc/config/arm/t-rtems-eabi gcc-4.7.4/gcc/config/arm/t-rtems-eabi *** gcc-4.7.3/gcc/config/arm/t-rtems-eabi Mon Nov 7 03:21:19 2011 --- gcc-4.7.4/gcc/config/arm/t-rtems-eabi Fri May 10 15:08:42 2013 *************** *** 1,8 **** # Custom RTEMS EABI multilibs ! MULTILIB_OPTIONS = mthumb march=armv6-m/march=armv7/march=armv7-m ! MULTILIB_DIRNAMES = thumb armv6-m armv7 armv7-m ! MULTILIB_EXCEPTIONS = march=armv6-m march=armv7 march=armv7-m ! MULTILIB_MATCHES = ! MULTILIB_EXCLUSIONS = ! MULTILIB_OSDIRNAMES = --- 1,47 ---- # Custom RTEMS EABI multilibs ! MULTILIB_OPTIONS = mthumb march=armv6-m/march=armv7-a/march=armv7-r/march=armv7-m mfpu=neon mfloat-abi=hard ! MULTILIB_DIRNAMES = thumb armv6-m armv7-a armv7-r armv7-m neon hard ! ! # Enumeration of multilibs ! ! MULTILIB_EXCEPTIONS = ! MULTILIB_EXCEPTIONS += mthumb/march=armv6-m/mfpu=neon/mfloat-abi=hard ! MULTILIB_EXCEPTIONS += mthumb/march=armv6-m/mfpu=neon ! MULTILIB_EXCEPTIONS += mthumb/march=armv6-m/mfloat-abi=hard ! # MULTILIB_EXCEPTIONS += mthumb/march=armv6-m ! # MULTILIB_EXCEPTIONS += mthumb/march=armv7-a/mfpu=neon/mfloat-abi=hard ! MULTILIB_EXCEPTIONS += mthumb/march=armv7-a/mfpu=neon ! MULTILIB_EXCEPTIONS += mthumb/march=armv7-a/mfloat-abi=hard ! # MULTILIB_EXCEPTIONS += mthumb/march=armv7-a ! MULTILIB_EXCEPTIONS += mthumb/march=armv7-r/mfpu=neon/mfloat-abi=hard ! MULTILIB_EXCEPTIONS += mthumb/march=armv7-r/mfpu=neon ! MULTILIB_EXCEPTIONS += mthumb/march=armv7-r/mfloat-abi=hard ! # MULTILIB_EXCEPTIONS += mthumb/march=armv7-r ! MULTILIB_EXCEPTIONS += mthumb/march=armv7-m/mfpu=neon/mfloat-abi=hard ! MULTILIB_EXCEPTIONS += mthumb/march=armv7-m/mfpu=neon ! MULTILIB_EXCEPTIONS += mthumb/march=armv7-m/mfloat-abi=hard ! # MULTILIB_EXCEPTIONS += mthumb/march=armv7-m ! MULTILIB_EXCEPTIONS += mthumb/mfpu=neon/mfloat-abi=hard ! MULTILIB_EXCEPTIONS += mthumb/mfpu=neon ! MULTILIB_EXCEPTIONS += mthumb/mfloat-abi=hard ! # MULTILIB_EXCEPTIONS += mthumb ! MULTILIB_EXCEPTIONS += march=armv6-m/mfpu=neon/mfloat-abi=hard ! MULTILIB_EXCEPTIONS += march=armv6-m/mfpu=neon ! MULTILIB_EXCEPTIONS += march=armv6-m/mfloat-abi=hard ! MULTILIB_EXCEPTIONS += march=armv6-m ! MULTILIB_EXCEPTIONS += march=armv7-a/mfpu=neon/mfloat-abi=hard ! MULTILIB_EXCEPTIONS += march=armv7-a/mfpu=neon ! MULTILIB_EXCEPTIONS += march=armv7-a/mfloat-abi=hard ! MULTILIB_EXCEPTIONS += march=armv7-a ! MULTILIB_EXCEPTIONS += march=armv7-r/mfpu=neon/mfloat-abi=hard ! MULTILIB_EXCEPTIONS += march=armv7-r/mfpu=neon ! MULTILIB_EXCEPTIONS += march=armv7-r/mfloat-abi=hard ! MULTILIB_EXCEPTIONS += march=armv7-r ! MULTILIB_EXCEPTIONS += march=armv7-m/mfpu=neon/mfloat-abi=hard ! MULTILIB_EXCEPTIONS += march=armv7-m/mfpu=neon ! MULTILIB_EXCEPTIONS += march=armv7-m/mfloat-abi=hard ! MULTILIB_EXCEPTIONS += march=armv7-m ! MULTILIB_EXCEPTIONS += mfpu=neon/mfloat-abi=hard ! MULTILIB_EXCEPTIONS += mfpu=neon ! MULTILIB_EXCEPTIONS += mfloat-abi=hard diff -Nrcpad gcc-4.7.3/gcc/config/arm/thumb2.md gcc-4.7.4/gcc/config/arm/thumb2.md *** gcc-4.7.3/gcc/config/arm/thumb2.md Tue Feb 21 15:38:35 2012 --- gcc-4.7.4/gcc/config/arm/thumb2.md Fri May 10 15:27:15 2013 *************** *** 182,188 **** str%?\\t%1, %0" [(set_attr "type" "*,*,*,*,load1,load1,store1,store1") (set_attr "predicable" "yes") ! (set_attr "pool_range" "*,*,*,*,1020,4096,*,*") (set_attr "neg_pool_range" "*,*,*,*,0,0,*,*")] ) --- 182,188 ---- str%?\\t%1, %0" [(set_attr "type" "*,*,*,*,load1,load1,store1,store1") (set_attr "predicable" "yes") ! (set_attr "pool_range" "*,*,*,*,1018,4094,*,*") (set_attr "neg_pool_range" "*,*,*,*,0,0,*,*")] ) *************** *** 217,223 **** ldr%(h%)\\t%0, %1\\t%@ movhi" [(set_attr "type" "*,*,store1,load1") (set_attr "predicable" "yes") ! (set_attr "pool_range" "*,*,*,4096") (set_attr "neg_pool_range" "*,*,*,250")] ) --- 217,223 ---- ldr%(h%)\\t%0, %1\\t%@ movhi" [(set_attr "type" "*,*,store1,load1") (set_attr "predicable" "yes") ! (set_attr "pool_range" "*,*,*,4094") (set_attr "neg_pool_range" "*,*,*,250")] ) *************** *** 570,576 **** ldr%(sb%)\\t%0, %1" [(set_attr "type" "alu_shift,load_byte") (set_attr "predicable" "yes") ! (set_attr "pool_range" "*,4096") (set_attr "neg_pool_range" "*,250")] ) --- 570,576 ---- ldr%(sb%)\\t%0, %1" [(set_attr "type" "alu_shift,load_byte") (set_attr "predicable" "yes") ! (set_attr "pool_range" "*,4094") (set_attr "neg_pool_range" "*,250")] ) *************** *** 583,589 **** ldr%(h%)\\t%0, %1" [(set_attr "type" "alu_shift,load_byte") (set_attr "predicable" "yes") ! (set_attr "pool_range" "*,4096") (set_attr "neg_pool_range" "*,250")] ) --- 583,589 ---- ldr%(h%)\\t%0, %1" [(set_attr "type" "alu_shift,load_byte") (set_attr "predicable" "yes") ! (set_attr "pool_range" "*,4094") (set_attr "neg_pool_range" "*,250")] ) *************** *** 596,602 **** ldr%(b%)\\t%0, %1\\t%@ zero_extendqisi2" [(set_attr "type" "alu_shift,load_byte") (set_attr "predicable" "yes") ! (set_attr "pool_range" "*,4096") (set_attr "neg_pool_range" "*,250")] ) --- 596,602 ---- ldr%(b%)\\t%0, %1\\t%@ zero_extendqisi2" [(set_attr "type" "alu_shift,load_byte") (set_attr "predicable" "yes") ! (set_attr "pool_range" "*,4094") (set_attr "neg_pool_range" "*,250")] ) diff -Nrcpad gcc-4.7.3/gcc/config/arm/vfp.md gcc-4.7.4/gcc/config/arm/vfp.md *** gcc-4.7.3/gcc/config/arm/vfp.md Tue Dec 6 01:03:04 2011 --- gcc-4.7.4/gcc/config/arm/vfp.md Tue Sep 10 16:55:44 2013 *************** *** 126,132 **** [(set_attr "predicable" "yes") (set_attr "type" "*,*,*,*,load1,load1,store1,store1,r_2_f,f_2_r,fcpys,f_loads,f_stores") (set_attr "insn" "mov,mov,mvn,mov,*,*,*,*,*,*,*,*,*") ! (set_attr "pool_range" "*,*,*,*,1020,4096,*,*,*,*,*,1020,*") (set_attr "neg_pool_range" "*,*,*,*, 0, 0,*,*,*,*,*,1008,*")] ) --- 126,132 ---- [(set_attr "predicable" "yes") (set_attr "type" "*,*,*,*,load1,load1,store1,store1,r_2_f,f_2_r,fcpys,f_loads,f_stores") (set_attr "insn" "mov,mov,mvn,mov,*,*,*,*,*,*,*,*,*") ! (set_attr "pool_range" "*,*,*,*,1018,4094,*,*,*,*,*,1018,*") (set_attr "neg_pool_range" "*,*,*,*, 0, 0,*,*,*,*,*,1008,*")] ) *************** *** 177,183 **** (const_int 8) (const_int 4))] (const_int 4))) ! (set_attr "pool_range" "*,*,*,*,1020,4096,*,*,*,*,1020,*") (set_attr "neg_pool_range" "*,*,*,*,1004,0,*,*,*,*,1004,*") (set_attr "arch" "t2,any,any,any,a,t2,any,any,any,any,any,any")] ) --- 177,184 ---- (const_int 8) (const_int 4))] (const_int 4))) ! (set_attr "arm_pool_range" "*,*,*,*,1020,4096,*,*,*,*,1020,*") ! (set_attr "thumb2_pool_range" "*,*,*,*,1018,4094,*,*,*,*,1018,*") (set_attr "neg_pool_range" "*,*,*,*,1004,0,*,*,*,*,1004,*") (set_attr "arch" "t2,any,any,any,a,t2,any,any,any,any,any,any")] ) *************** *** 222,228 **** * 4")] (const_int 4))) (set_attr "predicable" "yes") ! (set_attr "pool_range" "*,*,*,*,1020,4096,*,*,*,*,1020,*") (set_attr "neg_pool_range" "*,*,*,*,1004,0,*,*,*,*,1004,*") (set (attr "ce_count") (symbol_ref "get_attr_length (insn) / 4")) --- 223,230 ---- * 4")] (const_int 4))) (set_attr "predicable" "yes") ! (set_attr "arm_pool_range" "*,*,*,*,1018,4094,*,*,*,*,1018,*") ! (set_attr "thumb2_pool_range" "*,*,*,*,1018,4094,*,*,*,*,1018,*") (set_attr "neg_pool_range" "*,*,*,*,1004,0,*,*,*,*,1004,*") (set (attr "ce_count") (symbol_ref "get_attr_length (insn) / 4")) *************** *** 409,415 **** (set_attr "type" "r_2_f,f_2_r,fconsts,f_loads,f_stores,load1,store1,fcpys,*") (set_attr "insn" "*,*,*,*,*,*,*,*,mov") ! (set_attr "pool_range" "*,*,*,1020,*,4092,*,*,*") (set_attr "neg_pool_range" "*,*,*,1008,*,0,*,*,*")] ) --- 411,417 ---- (set_attr "type" "r_2_f,f_2_r,fconsts,f_loads,f_stores,load1,store1,fcpys,*") (set_attr "insn" "*,*,*,*,*,*,*,*,mov") ! (set_attr "pool_range" "*,*,*,1018,*,4090,*,*,*") (set_attr "neg_pool_range" "*,*,*,1008,*,0,*,*,*")] ) *************** *** 501,507 **** (const_int 8) (const_int 4))] (const_int 4))) ! (set_attr "pool_range" "*,*,*,1020,*,4096,*,*,*") (set_attr "neg_pool_range" "*,*,*,1008,*,0,*,*,*")] ) --- 503,509 ---- (const_int 8) (const_int 4))] (const_int 4))) ! (set_attr "pool_range" "*,*,*,1018,*,4094,*,*,*") (set_attr "neg_pool_range" "*,*,*,1008,*,0,*,*,*")] ) *************** *** 1144,1161 **** (set_attr "type" "fcmpd")] ) ! ;; Fixed point to floating point conversions. (define_code_iterator FCVT [unsigned_float float]) (define_code_attr FCVTI32typename [(unsigned_float "u32") (float "s32")]) (define_insn "*combine_vcvt_f32_" [(set (match_operand:SF 0 "s_register_operand" "=t") (mult:SF (FCVT:SF (match_operand:SI 1 "s_register_operand" "0")) ! (match_operand 2 "const_double_vcvt_power_of_two_reciprocal" "Dt")))] "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP3 && !flag_rounding_math" ! "vcvt.f32.\\t%0, %1, %v2" ! [(set_attr "predicable" "no") (set_attr "type" "f_cvt")] ) --- 1146,1163 ---- (set_attr "type" "fcmpd")] ) ! ;; Fixed point to floating point conversions. (define_code_iterator FCVT [unsigned_float float]) (define_code_attr FCVTI32typename [(unsigned_float "u32") (float "s32")]) (define_insn "*combine_vcvt_f32_" [(set (match_operand:SF 0 "s_register_operand" "=t") (mult:SF (FCVT:SF (match_operand:SI 1 "s_register_operand" "0")) ! (match_operand 2 "const_double_vcvt_power_of_two_reciprocal" "Dt")))] "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP3 && !flag_rounding_math" ! "vcvt%?.f32.\\t%0, %1, %v2" ! [(set_attr "predicable" "yes") (set_attr "type" "f_cvt")] ) *************** *** 1164,1178 **** (define_insn "*combine_vcvt_f64_" [(set (match_operand:DF 0 "s_register_operand" "=x,x,w") (mult:DF (FCVT:DF (match_operand:SI 1 "s_register_operand" "r,t,r")) ! (match_operand 2 "const_double_vcvt_power_of_two_reciprocal" "Dt,Dt,Dt")))] ! "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP3 && !flag_rounding_math && !TARGET_VFP_SINGLE" "@ ! vmov.f32\\t%0, %1\;vcvt.f64.\\t%P0, %P0, %v2 ! vmov.f32\\t%0, %1\;vcvt.f64.\\t%P0, %P0, %v2 ! vmov.f64\\t%P0, %1, %1\;vcvt.f64.\\t%P0, %P0, %v2" ! [(set_attr "predicable" "no") (set_attr "type" "f_cvt") (set_attr "length" "8")] ) --- 1166,1181 ---- (define_insn "*combine_vcvt_f64_" [(set (match_operand:DF 0 "s_register_operand" "=x,x,w") (mult:DF (FCVT:DF (match_operand:SI 1 "s_register_operand" "r,t,r")) ! (match_operand 2 "const_double_vcvt_power_of_two_reciprocal" "Dt,Dt,Dt")))] ! "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP3 && !flag_rounding_math && !TARGET_VFP_SINGLE" "@ ! vmov%?.f32\\t%0, %1\;vcvt%?.f64.\\t%P0, %P0, %v2 ! vmov%?.f32\\t%0, %1\;vcvt%?.f64.\\t%P0, %P0, %v2 ! vmov%?.f64\\t%P0, %1, %1\;vcvt%?.f64.\\t%P0, %P0, %v2" ! [(set_attr "predicable" "yes") ! (set_attr "ce_count" "2") (set_attr "type" "f_cvt") (set_attr "length" "8")] ) diff -Nrcpad gcc-4.7.3/gcc/config/avr/avr.c gcc-4.7.4/gcc/config/avr/avr.c *** gcc-4.7.3/gcc/config/avr/avr.c Mon Jan 7 18:51:33 2013 --- gcc-4.7.4/gcc/config/avr/avr.c Tue May 20 08:37:50 2014 *************** avr_set_current_function (tree decl) *** 549,556 **** { tree args = TYPE_ARG_TYPES (TREE_TYPE (decl)); tree ret = TREE_TYPE (TREE_TYPE (decl)); ! const char *name = IDENTIFIER_POINTER (DECL_NAME (decl)); ! /* Silently ignore 'signal' if 'interrupt' is present. AVR-LibC startet using this when it switched from SIGNAL and INTERRUPT to ISR. */ --- 549,565 ---- { tree args = TYPE_ARG_TYPES (TREE_TYPE (decl)); tree ret = TREE_TYPE (TREE_TYPE (decl)); ! const char *name; ! ! name = DECL_ASSEMBLER_NAME_SET_P (decl) ! ? IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)) ! : IDENTIFIER_POINTER (DECL_NAME (decl)); ! ! /* Skip a leading '*' that might still prefix the assembler name, ! e.g. in non-LTO runs. */ ! ! name = default_strip_name_encoding (name); ! /* Silently ignore 'signal' if 'interrupt' is present. AVR-LibC startet using this when it switched from SIGNAL and INTERRUPT to ISR. */ *************** avr_prologue_setup_frame (HOST_WIDE_INT *** 1004,1010 **** leaf function and thus X has already been saved. */ int irq_state = -1; ! HOST_WIDE_INT size_cfa = size; rtx fp_plus_insns, fp, my_fp; gcc_assert (frame_pointer_needed --- 1013,1019 ---- leaf function and thus X has already been saved. */ int irq_state = -1; ! HOST_WIDE_INT size_cfa = size, neg_size; rtx fp_plus_insns, fp, my_fp; gcc_assert (frame_pointer_needed *************** avr_prologue_setup_frame (HOST_WIDE_INT *** 1043,1048 **** --- 1052,1058 ---- } size = trunc_int_for_mode (size, GET_MODE (my_fp)); + neg_size = trunc_int_for_mode (-size, GET_MODE (my_fp)); /************ Method 1: Adjust frame pointer ************/ *************** avr_prologue_setup_frame (HOST_WIDE_INT *** 1062,1068 **** gen_rtx_SET (VOIDmode, fp, stack_pointer_rtx)); } ! insn = emit_move_insn (my_fp, plus_constant (my_fp, -size)); if (frame_pointer_needed) { RTX_FRAME_RELATED_P (insn) = 1; --- 1072,1078 ---- gen_rtx_SET (VOIDmode, fp, stack_pointer_rtx)); } ! insn = emit_move_insn (my_fp, plus_constant (my_fp, neg_size)); if (frame_pointer_needed) { RTX_FRAME_RELATED_P (insn) = 1; *************** notice_update_cc (rtx body ATTRIBUTE_UNU *** 2165,2170 **** --- 2175,2186 ---- } 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 *************** avr_out_store_psi (rtx insn, rtx *op, in *** 3627,3633 **** "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); return avr_asm_len ("subi r28,lo8(-%o0)" CR_TAB "sbci r29,hi8(-%o0)" CR_TAB --- 3643,3649 ---- "std Y+61,%A1" CR_TAB "std Y+62,%B1" CR_TAB "std Y+63,%C1" CR_TAB ! "sbiw r28,%o0-61", op, plen, -5); return avr_asm_len ("subi r28,lo8(-%o0)" CR_TAB "sbci r29,hi8(-%o0)" CR_TAB *************** avr_out_plus_1 (rtx *xop, int *plen, enu *** 5939,5945 **** op, plen, 1); if (n_bytes == 2 && PLUS == code) ! *pcc = CC_SET_ZN; } i++; --- 5955,5961 ---- op, plen, 1); if (n_bytes == 2 && PLUS == code) ! *pcc = CC_SET_CZN; } i++; *************** avr_out_plus_1 (rtx *xop, int *plen, enu *** 5961,5966 **** --- 5977,5983 ---- { avr_asm_len ((code == PLUS) ^ (val8 == 1) ? "dec %0" : "inc %0", op, plen, 1); + *pcc = CC_CLOBBER; break; } diff -Nrcpad gcc-4.7.3/gcc/config/avr/avr.md gcc-4.7.4/gcc/config/avr/avr.md *** gcc-4.7.3/gcc/config/avr/avr.md Thu Mar 22 15:06:57 2012 --- gcc-4.7.4/gcc/config/avr/avr.md Fri May 9 11:34:46 2014 *************** *** 90,96 **** (include "constraints.md") ;; Condition code settings. ! (define_attr "cc" "none,set_czn,set_zn,set_n,compare,clobber, out_plus, out_plus_noclobber,ldi" (const_string "none")) --- 90,96 ---- (include "constraints.md") ;; Condition code settings. ! (define_attr "cc" "none,set_czn,set_vzn,set_zn,set_n,compare,clobber, out_plus, out_plus_noclobber,ldi" (const_string "none")) *************** *** 1056,1062 **** 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")]) (define_expand "addhi3" --- 1056,1062 ---- 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_vzn,set_vzn,set_vzn,set_vzn")]) (define_expand "addhi3" *************** *** 3876,3882 **** "" "neg %0" [(set_attr "length" "1") ! (set_attr "cc" "set_zn")]) (define_insn "*negqihi2" [(set (match_operand:HI 0 "register_operand" "=r") --- 3876,3882 ---- "" "neg %0" [(set_attr "length" "1") ! (set_attr "cc" "set_vzn")]) (define_insn "*negqihi2" [(set (match_operand:HI 0 "register_operand" "=r") diff -Nrcpad gcc-4.7.3/gcc/config/darwin-c.c gcc-4.7.4/gcc/config/darwin-c.c *** gcc-4.7.3/gcc/config/darwin-c.c Wed Apr 6 11:08:17 2011 --- gcc-4.7.4/gcc/config/darwin-c.c Sun Sep 1 19:21:33 2013 *************** along with GCC; see the file COPYING3. *** 25,30 **** --- 25,31 ---- #include "tm.h" #include "cpplib.h" #include "tree.h" + #include "target.h" #include "incpath.h" #include "c-family/c-common.h" #include "c-family/c-pragma.h" *************** along with GCC; see the file COPYING3. *** 36,41 **** --- 37,43 ---- #include "prefix.h" #include "c-family/c-target.h" #include "c-family/c-target-def.h" + #include "cgraph.h" /* Pragmas. */ *************** EXPORTED_CONST format_kind_info darwin_a *** 711,723 **** } }; ! #undef TARGET_HANDLE_C_OPTION #define TARGET_HANDLE_C_OPTION handle_c_option ! #undef TARGET_OBJC_CONSTRUCT_STRING_OBJECT #define TARGET_OBJC_CONSTRUCT_STRING_OBJECT darwin_objc_construct_string ! #undef TARGET_STRING_OBJECT_REF_TYPE_P #define TARGET_STRING_OBJECT_REF_TYPE_P darwin_cfstring_ref_p #undef TARGET_CHECK_STRING_OBJECT_FORMAT_ARG --- 713,772 ---- } }; ! ! /* Support routines to dump the class references for NeXT ABI v1, aka ! 32-bits ObjC-2.0, as top-level asms. ! The following two functions should only be called from ! objc/objc-next-runtime-abi-01.c. */ ! ! static void ! darwin_objc_declare_unresolved_class_reference (const char *name) ! { ! const char *lazy_reference = ".lazy_reference\t"; ! const char *hard_reference = ".reference\t"; ! const char *reference = MACHOPIC_INDIRECT ? lazy_reference : hard_reference; ! size_t len = strlen (reference) + strlen(name) + 2; ! char *buf = (char *) alloca (len); ! ! gcc_checking_assert (!strncmp (name, ".objc_class_name_", 17)); ! ! snprintf (buf, len, "%s%s", reference, name); ! cgraph_add_asm_node (build_string (strlen (buf), buf)); ! } ! ! static void ! darwin_objc_declare_class_definition (const char *name) ! { ! const char *xname = targetm.strip_name_encoding (name); ! size_t len = strlen (xname) + 7 + 5; ! char *buf = (char *) alloca (len); ! ! gcc_checking_assert (!strncmp (name, ".objc_class_name_", 17) ! || !strncmp (name, "*.objc_category_name_", 21)); ! ! /* Mimic default_globalize_label. */ ! snprintf (buf, len, ".globl\t%s", xname); ! cgraph_add_asm_node (build_string (strlen (buf), buf)); ! ! snprintf (buf, len, "%s = 0", xname); ! cgraph_add_asm_node (build_string (strlen (buf), buf)); ! } ! ! #undef TARGET_HANDLE_C_OPTION #define TARGET_HANDLE_C_OPTION handle_c_option ! #undef TARGET_OBJC_CONSTRUCT_STRING_OBJECT #define TARGET_OBJC_CONSTRUCT_STRING_OBJECT darwin_objc_construct_string ! #undef TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE ! #define TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE \ ! darwin_objc_declare_unresolved_class_reference ! ! #undef TARGET_OBJC_DECLARE_CLASS_DEFINITION ! #define TARGET_OBJC_DECLARE_CLASS_DEFINITION \ ! darwin_objc_declare_class_definition ! ! #undef TARGET_STRING_OBJECT_REF_TYPE_P #define TARGET_STRING_OBJECT_REF_TYPE_P darwin_cfstring_ref_p #undef TARGET_CHECK_STRING_OBJECT_FORMAT_ARG diff -Nrcpad gcc-4.7.3/gcc/config/darwin-protos.h gcc-4.7.4/gcc/config/darwin-protos.h *** gcc-4.7.3/gcc/config/darwin-protos.h Tue Nov 22 10:19:19 2011 --- gcc-4.7.4/gcc/config/darwin-protos.h Sun Sep 1 15:39:28 2013 *************** extern void machopic_validate_stub_or_no *** 26,31 **** --- 26,32 ---- extern void machopic_output_function_base_name (FILE *); extern const char *machopic_indirection_name (rtx, bool); extern const char *machopic_mcount_stub_name (void); + extern bool machopic_should_output_picbase_label (void); #ifdef RTX_CODE diff -Nrcpad gcc-4.7.3/gcc/config/darwin.c gcc-4.7.4/gcc/config/darwin.c *** gcc-4.7.3/gcc/config/darwin.c Mon Nov 12 23:00:53 2012 --- gcc-4.7.4/gcc/config/darwin.c Mon Apr 7 08:00:55 2014 *************** machopic_gen_offset (rtx orig) *** 362,375 **** static GTY(()) const char * function_base_func_name; static GTY(()) int current_pic_label_num; ! void ! machopic_output_function_base_name (FILE *file) { const char *current_name; - /* If dynamic-no-pic is on, we should not get here. */ - gcc_assert (!MACHO_DYNAMIC_NO_PIC_P); /* When we are generating _get_pc thunks within stubs, there is no current function. */ if (current_function_decl) --- 362,374 ---- static GTY(()) const char * function_base_func_name; static GTY(()) int current_pic_label_num; + static GTY(()) int emitted_pic_label_num; ! static void ! update_pic_label_number_if_needed (void) { const char *current_name; /* When we are generating _get_pc thunks within stubs, there is no current function. */ if (current_function_decl) *************** machopic_output_function_base_name (FILE *** 387,393 **** ++current_pic_label_num; function_base_func_name = "L_machopic_stub_dummy"; } ! fprintf (file, "L%011d$pb", current_pic_label_num); } /* The suffix attached to non-lazy pointer symbols. */ --- 386,413 ---- ++current_pic_label_num; function_base_func_name = "L_machopic_stub_dummy"; } ! } ! ! void ! machopic_output_function_base_name (FILE *file) ! { ! /* If dynamic-no-pic is on, we should not get here. */ ! gcc_assert (!MACHO_DYNAMIC_NO_PIC_P); ! ! update_pic_label_number_if_needed (); ! fprintf (file, "L%d$pb", current_pic_label_num); ! } ! ! bool ! machopic_should_output_picbase_label (void) ! { ! update_pic_label_number_if_needed (); ! ! if (current_pic_label_num == emitted_pic_label_num) ! return false; ! ! emitted_pic_label_num = current_pic_label_num; ! return true; } /* The suffix attached to non-lazy pointer symbols. */ *************** is_objc_metadata (tree decl) *** 1302,1307 **** --- 1322,1330 ---- return NULL_TREE; } + static int classes_seen; + static int objc_metadata_seen; + /* Return the section required for Objective C ABI 2 metadata. */ static section * darwin_objc2_section (tree decl ATTRIBUTE_UNUSED, tree meta, section * base) *************** darwin_objc2_section (tree decl ATTRIBUT *** 1311,1322 **** gcc_assert (TREE_CODE (ident) == IDENTIFIER_NODE); p = IDENTIFIER_POINTER (ident); ! /* If we are in LTO, then we don't know the state of flag_next_runtime ! or flag_objc_abi when the code was generated. We set these from the ! meta-data - which is needed to deal with const string constructors. */ ! flag_next_runtime = 1; ! flag_objc_abi = 2; if (base == data_section) base = darwin_sections[objc2_metadata_section]; --- 1334,1342 ---- gcc_assert (TREE_CODE (ident) == IDENTIFIER_NODE); p = IDENTIFIER_POINTER (ident); ! gcc_checking_assert (flag_next_runtime == 1 && flag_objc_abi == 2); ! objc_metadata_seen = 1; if (base == data_section) base = darwin_sections[objc2_metadata_section]; *************** darwin_objc2_section (tree decl ATTRIBUT *** 1339,1345 **** else if (!strncmp (p, "V2_NLCL", 7)) return darwin_sections[objc2_nonlazy_class_section]; else if (!strncmp (p, "V2_CLAB", 7)) ! return darwin_sections[objc2_classlist_section]; else if (!strncmp (p, "V2_SRFS", 7)) return darwin_sections[objc2_selector_refs_section]; else if (!strncmp (p, "V2_NLCA", 7)) --- 1359,1368 ---- else if (!strncmp (p, "V2_NLCL", 7)) return darwin_sections[objc2_nonlazy_class_section]; else if (!strncmp (p, "V2_CLAB", 7)) ! { ! classes_seen = 1; ! return darwin_sections[objc2_classlist_section]; ! } else if (!strncmp (p, "V2_SRFS", 7)) return darwin_sections[objc2_selector_refs_section]; else if (!strncmp (p, "V2_NLCA", 7)) *************** darwin_objc1_section (tree decl ATTRIBUT *** 1374,1385 **** gcc_assert (TREE_CODE (ident) == IDENTIFIER_NODE); p = IDENTIFIER_POINTER (ident); ! /* If we are in LTO, then we don't know the state of flag_next_runtime ! or flag_objc_abi when the code was generated. We set these from the ! meta-data - which is needed to deal with const string constructors. */ ! flag_next_runtime = 1; ! if (!global_options_set.x_flag_objc_abi) ! flag_objc_abi = 1; /* String sections first, cos there are lots of strings. */ if (!strncmp (p, "V1_STRG", 7)) --- 1397,1405 ---- gcc_assert (TREE_CODE (ident) == IDENTIFIER_NODE); p = IDENTIFIER_POINTER (ident); ! gcc_checking_assert (flag_next_runtime == 1 && flag_objc_abi < 2); ! ! objc_metadata_seen = 1; /* String sections first, cos there are lots of strings. */ if (!strncmp (p, "V1_STRG", 7)) *************** darwin_objc1_section (tree decl ATTRIBUT *** 1392,1398 **** return darwin_sections[objc_meth_var_types_section]; else if (!strncmp (p, "V1_CLAS", 7)) ! return darwin_sections[objc_class_section]; else if (!strncmp (p, "V1_META", 7)) return darwin_sections[objc_meta_class_section]; else if (!strncmp (p, "V1_CATG", 7)) --- 1412,1421 ---- return darwin_sections[objc_meth_var_types_section]; else if (!strncmp (p, "V1_CLAS", 7)) ! { ! classes_seen = 1; ! return darwin_sections[objc_class_section]; ! } else if (!strncmp (p, "V1_META", 7)) return darwin_sections[objc_meta_class_section]; else if (!strncmp (p, "V1_CATG", 7)) *************** machopic_select_section (tree decl, *** 1576,1583 **** if (TREE_CODE (name) == TYPE_DECL) name = DECL_NAME (name); - /* FIXME: This is unsatisfactory for LTO, since it relies on other - metadata determining the source FE. */ if (!strcmp (IDENTIFIER_POINTER (name), "__builtin_ObjCString")) { if (flag_next_runtime) --- 1599,1604 ---- *************** darwin_file_start (void) *** 2768,2773 **** --- 2789,2821 ---- void darwin_file_end (void) { + + /* If we are expecting to output NeXT ObjC meta-data, (and we actually see + some) then we output the fix-and-continue marker (Image Info). + This applies to Objective C, Objective C++ and LTO with either language + as part of the input. */ + if (flag_next_runtime && objc_metadata_seen) + { + unsigned int flags = 0; + if (flag_objc_abi >= 2) + { + flags = 16; + output_section_asm_op + (darwin_sections[objc2_image_info_section]->unnamed.data); + } + else + output_section_asm_op + (darwin_sections[objc_image_info_section]->unnamed.data); + + ASM_OUTPUT_ALIGN (asm_out_file, 2); + fputs ("L_OBJC_ImageInfo:\n", asm_out_file); + + flags |= (flag_replace_objc_classes && classes_seen) ? 1 : 0; + flags |= flag_objc_gc ? 2 : 0; + + fprintf (asm_out_file, "\t.long\t0\n\t.long\t%u\n", flags); + } + machopic_finish (asm_out_file); if (strcmp (lang_hooks.name, "GNU C++") == 0) { diff -Nrcpad gcc-4.7.3/gcc/config/darwin.h gcc-4.7.4/gcc/config/darwin.h *** gcc-4.7.3/gcc/config/darwin.h Thu Feb 16 08:21:46 2012 --- gcc-4.7.4/gcc/config/darwin.h Sun Sep 1 19:21:33 2013 *************** extern GTY(()) int darwin_ms_struct; *** 356,362 **** %{!Zbundle:%{pg:%{static:-lgcrt0.o} \ %{!static:%{object:-lgcrt0.o} \ %{!object:%{preload:-lgcrt0.o} \ ! %{!preload:-lgcrt1.o %(darwin_crt2)}}}} \ %{!pg:%{static:-lcrt0.o} \ %{!static:%{object:-lcrt0.o} \ %{!object:%{preload:-lcrt0.o} \ --- 356,364 ---- %{!Zbundle:%{pg:%{static:-lgcrt0.o} \ %{!static:%{object:-lgcrt0.o} \ %{!object:%{preload:-lgcrt0.o} \ ! %{!preload:-lgcrt1.o \ ! %:version-compare(>= 10.8 mmacosx-version-min= -no_new_main) \ ! %(darwin_crt2)}}}} \ %{!pg:%{static:-lcrt0.o} \ %{!static:%{object:-lcrt0.o} \ %{!object:%{preload:-lcrt0.o} \ *************** extern GTY(()) int darwin_ms_struct; *** 379,385 **** #define DARWIN_CRT1_SPEC \ "%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o) \ %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lcrt1.10.5.o) \ ! %:version-compare(>= 10.6 mmacosx-version-min= -lcrt1.10.6.o) \ %{fgnu-tm: -lcrttms.o}" /* Default Darwin ASM_SPEC, very simple. */ --- 381,387 ---- #define DARWIN_CRT1_SPEC \ "%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o) \ %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lcrt1.10.5.o) \ ! %:version-compare(>< 10.6 10.8 mmacosx-version-min= -lcrt1.10.6.o) \ %{fgnu-tm: -lcrttms.o}" /* Default Darwin ASM_SPEC, very simple. */ *************** extern GTY(()) int darwin_ms_struct; *** 414,419 **** --- 416,423 ---- #define TARGET_WANT_DEBUG_PUB_SECTIONS true + #define TARGET_FORCE_AT_COMP_DIR true + /* When generating stabs debugging, use N_BINCL entries. */ #define DBX_USE_BINCL *************** int darwin_label_is_anonymous_local_objc *** 612,619 **** fprintf (FILE, "\"%s\"", xname); \ else if (darwin_label_is_anonymous_local_objc_name (xname)) \ fprintf (FILE, "L%s", xname); \ - else if (!strncmp (xname, ".objc_class_name_", 17)) \ - fprintf (FILE, "%s", xname); \ else if (xname[0] != '"' && name_needs_quotes (xname)) \ asm_fprintf (FILE, "\"%U%s\"", xname); \ else \ --- 616,621 ---- *************** extern GTY(()) section * darwin_sections *** 696,724 **** #undef TARGET_ASM_RELOC_RW_MASK #define TARGET_ASM_RELOC_RW_MASK machopic_reloc_rw_mask - - #define ASM_DECLARE_UNRESOLVED_REFERENCE(FILE,NAME) \ - do { \ - if (FILE) { \ - if (MACHOPIC_INDIRECT) \ - fprintf (FILE, "\t.lazy_reference "); \ - else \ - fprintf (FILE, "\t.reference "); \ - assemble_name (FILE, NAME); \ - fprintf (FILE, "\n"); \ - } \ - } while (0) - - #define ASM_DECLARE_CLASS_REFERENCE(FILE,NAME) \ - do { \ - if (FILE) { \ - fprintf (FILE, "\t"); \ - assemble_name (FILE, NAME); \ - fprintf (FILE, "=0\n"); \ - (*targetm.asm_out.globalize_label) (FILE, NAME); \ - } \ - } while (0) - /* Globalizing directive for a label. */ #define GLOBAL_ASM_OP "\t.globl " #define TARGET_ASM_GLOBALIZE_LABEL darwin_globalize_label --- 698,703 ---- diff -Nrcpad gcc-4.7.3/gcc/config/i386/driver-i386.c gcc-4.7.4/gcc/config/i386/driver-i386.c *** gcc-4.7.3/gcc/config/i386/driver-i386.c Wed Oct 3 17:48:57 2012 --- gcc-4.7.4/gcc/config/i386/driver-i386.c Tue Feb 18 07:32:17 2014 *************** detect_caches_intel (bool xeon_mp, unsig *** 350,356 **** enum vendor_signatures { SIG_INTEL = 0x756e6547 /* Genu */, ! SIG_AMD = 0x68747541 /* Auth */ }; enum processor_signatures --- 350,359 ---- enum vendor_signatures { SIG_INTEL = 0x756e6547 /* Genu */, ! SIG_AMD = 0x68747541 /* Auth */, ! SIG_CENTAUR = 0x746e6543 /* Cent */, ! SIG_CYRIX = 0x69727943 /* Cyri */, ! SIG_NSC = 0x646f6547 /* Geod */ }; enum processor_signatures *************** const char *host_detect_local_cpu (int a *** 466,492 **** has_fsgsbase = ebx & bit_FSGSBASE; } - /* Get XCR_XFEATURE_ENABLED_MASK register with xgetbv. */ - #define XCR_XFEATURE_ENABLED_MASK 0x0 - #define XSTATE_FP 0x1 - #define XSTATE_SSE 0x2 - #define XSTATE_YMM 0x4 - if (has_osxsave) - asm (".byte 0x0f; .byte 0x01; .byte 0xd0" - : "=a" (eax), "=d" (edx) - : "c" (XCR_XFEATURE_ENABLED_MASK)); - - /* Check if SSE and YMM states are supported. */ - if (!has_osxsave - || (eax & (XSTATE_SSE | XSTATE_YMM)) != (XSTATE_SSE | XSTATE_YMM)) - { - has_avx = 0; - has_avx2 = 0; - has_fma = 0; - has_fma4 = 0; - has_xop = 0; - } - /* Check cpuid level of extended features. */ __cpuid (0x80000000, ext_level, ebx, ecx, edx); --- 469,474 ---- *************** const char *host_detect_local_cpu (int a *** 508,516 **** has_3dnow = edx & bit_3DNOW; } if (!arch) { ! if (vendor == SIG_AMD) cache = detect_caches_amd (ext_level); else if (vendor == SIG_INTEL) { --- 490,523 ---- has_3dnow = edx & bit_3DNOW; } + /* Get XCR_XFEATURE_ENABLED_MASK register with xgetbv. */ + #define XCR_XFEATURE_ENABLED_MASK 0x0 + #define XSTATE_FP 0x1 + #define XSTATE_SSE 0x2 + #define XSTATE_YMM 0x4 + if (has_osxsave) + asm (".byte 0x0f; .byte 0x01; .byte 0xd0" + : "=a" (eax), "=d" (edx) + : "c" (XCR_XFEATURE_ENABLED_MASK)); + + /* Check if SSE and YMM states are supported. */ + if (!has_osxsave + || (eax & (XSTATE_SSE | XSTATE_YMM)) != (XSTATE_SSE | XSTATE_YMM)) + { + has_avx = 0; + has_avx2 = 0; + has_fma = 0; + has_fma4 = 0; + has_f16c = 0; + has_xop = 0; + } + if (!arch) { ! if (vendor == SIG_AMD ! || vendor == SIG_CENTAUR ! || vendor == SIG_CYRIX ! || vendor == SIG_NSC) cache = detect_caches_amd (ext_level); else if (vendor == SIG_INTEL) { *************** const char *host_detect_local_cpu (int a *** 549,554 **** --- 556,592 ---- else processor = PROCESSOR_PENTIUM; } + else if (vendor == SIG_CENTAUR) + { + if (arch) + { + switch (family) + { + case 6: + if (model > 9) + /* Use the default detection procedure. */ + processor = PROCESSOR_GENERIC32; + else if (model == 9) + cpu = "c3-2"; + else if (model >= 6) + cpu = "c3"; + else + processor = PROCESSOR_GENERIC32; + break; + case 5: + if (has_3dnow) + cpu = "winchip2"; + else if (has_mmx) + cpu = "winchip2-c6"; + else + processor = PROCESSOR_GENERIC32; + break; + default: + /* We have no idea. */ + processor = PROCESSOR_GENERIC32; + } + } + } else { switch (family) *************** const char *host_detect_local_cpu (int a *** 593,605 **** /* Atom. */ cpu = "atom"; break; case 0x1a: case 0x1e: case 0x1f: case 0x2e: /* Nehalem. */ - cpu = "corei7"; - break; case 0x25: case 0x2c: case 0x2f: --- 631,648 ---- /* Atom. */ cpu = "atom"; break; + case 0x0f: + /* Merom. */ + case 0x17: + case 0x1d: + /* Penryn. */ + cpu = "core2"; + break; case 0x1a: case 0x1e: case 0x1f: case 0x2e: /* Nehalem. */ case 0x25: case 0x2c: case 0x2f: *************** const char *host_detect_local_cpu (int a *** 611,624 **** /* Sandy Bridge. */ cpu = "corei7-avx"; break; ! case 0x17: ! case 0x1d: ! /* Penryn. */ ! cpu = "core2"; ! break; ! case 0x0f: ! /* Merom. */ ! cpu = "core2"; break; default: if (arch) --- 654,663 ---- /* Sandy Bridge. */ cpu = "corei7-avx"; break; ! case 0x3a: ! case 0x3e: ! /* Ivy Bridge. */ ! cpu = "core-avx-i"; break; default: if (arch) diff -Nrcpad gcc-4.7.3/gcc/config/i386/f16cintrin.h gcc-4.7.4/gcc/config/i386/f16cintrin.h *** gcc-4.7.3/gcc/config/i386/f16cintrin.h Mon Nov 7 10:23:56 2011 --- gcc-4.7.4/gcc/config/i386/f16cintrin.h Sun Feb 2 10:59:09 2014 *************** *** 35,41 **** extern __inline float __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _cvtsh_ss (unsigned short __S) { ! __v8hi __H = __extension__ (__v8hi){ __S, 0, 0, 0, 0, 0, 0, 0 }; __v4sf __A = __builtin_ia32_vcvtph2ps (__H); return __builtin_ia32_vec_ext_v4sf (__A, 0); } --- 35,41 ---- extern __inline float __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _cvtsh_ss (unsigned short __S) { ! __v8hi __H = __extension__ (__v8hi){ (short) __S, 0, 0, 0, 0, 0, 0, 0 }; __v4sf __A = __builtin_ia32_vcvtph2ps (__H); return __builtin_ia32_vec_ext_v4sf (__A, 0); } diff -Nrcpad gcc-4.7.3/gcc/config/i386/i386.c gcc-4.7.4/gcc/config/i386/i386.c *** gcc-4.7.3/gcc/config/i386/i386.c Tue Apr 2 16:54:39 2013 --- gcc-4.7.4/gcc/config/i386/i386.c Wed Apr 23 19:05:33 2014 *************** struct processor_costs nocona_cost = { *** 1623,1629 **** 8, /* MMX or SSE register to integer */ 8, /* size of l1 cache. */ 1024, /* size of l2 cache. */ ! 128, /* size of prefetch block */ 8, /* number of parallel prefetches */ 1, /* Branch cost */ COSTS_N_INSNS (6), /* cost of FADD and FSUB insns. */ --- 1623,1629 ---- 8, /* MMX or SSE register to integer */ 8, /* size of l1 cache. */ 1024, /* size of l2 cache. */ ! 64, /* size of prefetch block */ 8, /* number of parallel prefetches */ 1, /* Branch cost */ COSTS_N_INSNS (6), /* cost of FADD and FSUB insns. */ *************** ix86_option_override_internal (bool main *** 2979,2985 **** | PTA_SSSE3 | PTA_CX16}, {"corei7", PROCESSOR_COREI7_64, CPU_COREI7, PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 ! | PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_CX16}, {"corei7-avx", PROCESSOR_COREI7_64, CPU_COREI7, PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_AVX --- 2979,2985 ---- | PTA_SSSE3 | PTA_CX16}, {"corei7", PROCESSOR_COREI7_64, CPU_COREI7, PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 ! | PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_CX16 | PTA_POPCNT}, {"corei7-avx", PROCESSOR_COREI7_64, CPU_COREI7, PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_AVX *************** classify_argument (enum machine_mode mod *** 6078,6102 **** case CHImode: case CQImode: { ! int size = (bit_offset % 64)+ (int) GET_MODE_BITSIZE (mode); ! if (size <= 32) { classes[0] = X86_64_INTEGERSI_CLASS; return 1; } ! else if (size <= 64) { classes[0] = X86_64_INTEGER_CLASS; return 1; } ! else if (size <= 64+32) { classes[0] = X86_64_INTEGER_CLASS; classes[1] = X86_64_INTEGERSI_CLASS; return 2; } ! else if (size <= 64+64) { classes[0] = classes[1] = X86_64_INTEGER_CLASS; return 2; --- 6078,6105 ---- case CHImode: case CQImode: { ! int size = bit_offset + (int) GET_MODE_BITSIZE (mode); ! /* Analyze last 128 bits only. */ ! size = (size - 1) & 0x7f; ! ! if (size < 32) { classes[0] = X86_64_INTEGERSI_CLASS; return 1; } ! else if (size < 64) { classes[0] = X86_64_INTEGER_CLASS; return 1; } ! else if (size < 64+32) { classes[0] = X86_64_INTEGER_CLASS; classes[1] = X86_64_INTEGERSI_CLASS; return 2; } ! else if (size < 64+64) { classes[0] = classes[1] = X86_64_INTEGER_CLASS; return 2; *************** construct_container (enum machine_mode m *** 6303,6309 **** /* Likewise, error if the ABI requires us to return values in the x87 registers and the user specified -mno-80387. */ ! if (!TARGET_80387 && in_return) for (i = 0; i < n; i++) if (regclass[i] == X86_64_X87_CLASS || regclass[i] == X86_64_X87UP_CLASS --- 6306,6312 ---- /* Likewise, error if the ABI requires us to return values in the x87 registers and the user specified -mno-80387. */ ! if (!TARGET_FLOAT_RETURNS_IN_80387 && in_return) for (i = 0; i < n; i++) if (regclass[i] == X86_64_X87_CLASS || regclass[i] == X86_64_X87UP_CLASS *************** construct_container (enum machine_mode m *** 6357,6363 **** return gen_rtx_REG (XFmode, FIRST_STACK_REG); if (n == 2 && regclass[0] == X86_64_INTEGER_CLASS && regclass[1] == X86_64_INTEGER_CLASS ! && (mode == CDImode || mode == TImode || mode == TFmode) && intreg[0] + 1 == intreg[1]) return gen_rtx_REG (mode, intreg[0]); --- 6360,6366 ---- return gen_rtx_REG (XFmode, FIRST_STACK_REG); if (n == 2 && regclass[0] == X86_64_INTEGER_CLASS && regclass[1] == X86_64_INTEGER_CLASS ! && (mode == CDImode || mode == TImode) && intreg[0] + 1 == intreg[1]) return gen_rtx_REG (mode, intreg[0]); *************** ix86_function_value_regno_p (const unsig *** 7129,7137 **** switch (regno) { case AX_REG: return true; ! case FIRST_FLOAT_REG: /* TODO: The function should depend on current function ABI but builtins.c would need updating then. Therefore we use the default ABI. */ --- 7132,7146 ---- switch (regno) { case AX_REG: + case DX_REG: return true; + case DI_REG: + case SI_REG: + return TARGET_64BIT && ix86_abi != MS_ABI; ! /* Complex values are returned in %st(0)/%st(1) pair. */ ! case ST0_REG: ! case ST1_REG: /* TODO: The function should depend on current function ABI but builtins.c would need updating then. Therefore we use the default ABI. */ *************** ix86_function_value_regno_p (const unsig *** 7139,7148 **** return false; return TARGET_FLOAT_RETURNS_IN_80387; ! case FIRST_SSE_REG: return TARGET_SSE; ! case FIRST_MMX_REG: if (TARGET_MACHO || TARGET_64BIT) return false; return TARGET_MMX; --- 7148,7159 ---- return false; return TARGET_FLOAT_RETURNS_IN_80387; ! /* Complex values are returned in %xmm0/%xmm1 pair. */ ! case XMM0_REG: ! case XMM1_REG: return TARGET_SSE; ! case MM0_REG: if (TARGET_MACHO || TARGET_64BIT) return false; return TARGET_MMX; *************** output_set_got (rtx dest, rtx label ATTR *** 8613,8629 **** if (!flag_pic) { ! xops[2] = gen_rtx_LABEL_REF (Pmode, label ? label : gen_label_rtx ()); output_asm_insn ("mov%z0\t{%2, %0|%0, %2}", xops); - - #if TARGET_MACHO - /* Output the Mach-O "canonical" label name ("Lxx$pb") here too. This - is what will be referenced by the Mach-O PIC subsystem. */ - if (!label) - ASM_OUTPUT_LABEL (asm_out_file, MACHOPIC_FUNCTION_BASE_NAME); - #endif - targetm.asm_out.internal_label (asm_out_file, "L", CODE_LABEL_NUMBER (XEXP (xops[2], 0))); } --- 8624,8635 ---- if (!flag_pic) { ! if (TARGET_MACHO) ! /* We don't need a pic base, we're not producing pic. */ ! gcc_unreachable (); + xops[2] = gen_rtx_LABEL_REF (Pmode, label ? label : gen_label_rtx ()); output_asm_insn ("mov%z0\t{%2, %0|%0, %2}", xops); targetm.asm_out.internal_label (asm_out_file, "L", CODE_LABEL_NUMBER (XEXP (xops[2], 0))); } *************** output_set_got (rtx dest, rtx label ATTR *** 8636,8647 **** xops[2] = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name)); xops[2] = gen_rtx_MEM (QImode, xops[2]); output_asm_insn ("call\t%X2", xops); ! /* Output the Mach-O "canonical" label name ("Lxx$pb") here too. This ! is what will be referenced by the Mach-O PIC subsystem. */ #if TARGET_MACHO ! if (!label) ASM_OUTPUT_LABEL (asm_out_file, MACHOPIC_FUNCTION_BASE_NAME); ! else targetm.asm_out.internal_label (asm_out_file, "L", CODE_LABEL_NUMBER (label)); #endif --- 8642,8659 ---- xops[2] = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name)); xops[2] = gen_rtx_MEM (QImode, xops[2]); output_asm_insn ("call\t%X2", xops); ! #if TARGET_MACHO ! /* Output the Mach-O "canonical" pic base label name ("Lxx$pb") here. ! This is what will be referenced by the Mach-O PIC subsystem. */ ! if (machopic_should_output_picbase_label () || !label) ASM_OUTPUT_LABEL (asm_out_file, MACHOPIC_FUNCTION_BASE_NAME); ! ! /* When we are restoring the pic base at the site of a nonlocal label, ! and we decided to emit the pic base above, we will still output a ! local label used for calculating the correction offset (even though ! the offset will be 0 in that case). */ ! if (label) targetm.asm_out.internal_label (asm_out_file, "L", CODE_LABEL_NUMBER (label)); #endif *************** ix86_save_reg (unsigned int regno, bool *** 8717,8723 **** && (df_regs_ever_live_p (REAL_PIC_OFFSET_TABLE_REGNUM) || crtl->profile || crtl->calls_eh_return ! || crtl->uses_const_pool)) return ix86_select_alt_pic_regnum () == INVALID_REGNUM; if (crtl->calls_eh_return && maybe_eh_return) --- 8729,8736 ---- && (df_regs_ever_live_p (REAL_PIC_OFFSET_TABLE_REGNUM) || crtl->profile || crtl->calls_eh_return ! || crtl->uses_const_pool ! || cfun->has_nonlocal_label)) return ix86_select_alt_pic_regnum () == INVALID_REGNUM; if (crtl->calls_eh_return && maybe_eh_return) *************** ix86_expand_prologue (void) *** 10421,10434 **** if (r10_live && eax_live) { ! t = choose_baseaddr (m->fs.sp_offset - allocate); emit_move_insn (r10, gen_frame_mem (Pmode, t)); ! t = choose_baseaddr (m->fs.sp_offset - allocate - UNITS_PER_WORD); emit_move_insn (eax, gen_frame_mem (Pmode, t)); } else if (eax_live || r10_live) { ! t = choose_baseaddr (m->fs.sp_offset - allocate); emit_move_insn ((eax_live ? eax : r10), gen_frame_mem (Pmode, t)); } } --- 10434,10447 ---- if (r10_live && eax_live) { ! t = gen_rtx_PLUS (Pmode, stack_pointer_rtx, eax); emit_move_insn (r10, gen_frame_mem (Pmode, t)); ! t = plus_constant (t, UNITS_PER_WORD); emit_move_insn (eax, gen_frame_mem (Pmode, t)); } else if (eax_live || r10_live) { ! t = gen_rtx_PLUS (Pmode, stack_pointer_rtx, eax); emit_move_insn ((eax_live ? eax : r10), gen_frame_mem (Pmode, t)); } } *************** ix86_live_on_entry (bitmap regs) *** 11424,11453 **** } } - /* Determine if op is suitable SUBREG RTX for address. */ - - static bool - ix86_address_subreg_operand (rtx op) - { - enum machine_mode mode; - - if (!REG_P (op)) - return false; - - mode = GET_MODE (op); - - if (GET_MODE_CLASS (mode) != MODE_INT) - return false; - - /* Don't allow SUBREGs that span more than a word. It can lead to spill - failures when the register is one word out of a two word structure. */ - if (GET_MODE_SIZE (mode) > UNITS_PER_WORD) - return false; - - /* Allow only SUBREGs of non-eliminable hard registers. */ - return register_no_elim_operand (op, mode); - } - /* Extract the parts of an RTL expression that is a valid memory address for an instruction. Return 0 if the structure of the address is grossly off. Return -1 if the address contains ASHIFT, so it is not --- 11437,11442 ---- *************** ix86_decompose_address (rtx addr, struct *** 11512,11518 **** base = addr; else if (GET_CODE (addr) == SUBREG) { ! if (ix86_address_subreg_operand (SUBREG_REG (addr))) base = addr; else return 0; --- 11501,11507 ---- base = addr; else if (GET_CODE (addr) == SUBREG) { ! if (REG_P (SUBREG_REG (addr))) base = addr; else return 0; *************** ix86_decompose_address (rtx addr, struct *** 11570,11576 **** break; case SUBREG: ! if (!ix86_address_subreg_operand (SUBREG_REG (op))) return 0; /* FALLTHRU */ --- 11559,11565 ---- break; case SUBREG: ! if (!REG_P (SUBREG_REG (op))) return 0; /* FALLTHRU */ *************** ix86_decompose_address (rtx addr, struct *** 11615,11633 **** scale = 1 << scale; retval = -1; } - else if (CONST_INT_P (addr)) - { - if (!x86_64_immediate_operand (addr, VOIDmode)) - return 0; - - /* Constant addresses are sign extended to 64bit, we have to - prevent addresses from 0x80000000 to 0xffffffff in x32 mode. */ - if (TARGET_X32 - && val_signbit_known_set_p (SImode, INTVAL (addr))) - return 0; - - disp = addr; - } else disp = addr; /* displacement */ --- 11604,11609 ---- *************** ix86_decompose_address (rtx addr, struct *** 11636,11642 **** if (REG_P (index)) ; else if (GET_CODE (index) == SUBREG ! && ix86_address_subreg_operand (SUBREG_REG (index))) ; else return 0; --- 11612,11618 ---- if (REG_P (index)) ; else if (GET_CODE (index) == SUBREG ! && REG_P (SUBREG_REG (index))) ; else return 0; *************** ix86_legitimize_reload_address (rtx x, *** 12115,12120 **** --- 12091,12135 ---- return false; } + /* Determine if op is suitable RTX for an address register. + Return naked register if a register or a register subreg is + found, otherwise return NULL_RTX. */ + + static rtx + ix86_validate_address_register (rtx op) + { + enum machine_mode mode = GET_MODE (op); + + /* Only SImode or DImode registers can form the address. */ + if (mode != SImode && mode != DImode) + return NULL_RTX; + + if (REG_P (op)) + return op; + else if (GET_CODE (op) == SUBREG) + { + rtx reg = SUBREG_REG (op); + + if (!REG_P (reg)) + return NULL_RTX; + + mode = GET_MODE (reg); + + /* Don't allow SUBREGs that span more than a word. It can + lead to spill failures when the register is one word out + of a two word structure. */ + if (GET_MODE_SIZE (mode) > UNITS_PER_WORD) + return NULL_RTX; + + /* Allow only SUBREGs of non-eliminable hard registers. */ + if (register_no_elim_operand (reg, mode)) + return reg; + } + + /* Op is not a register. */ + return NULL_RTX; + } + /* Recognizes RTL expressions that are valid memory addresses for an instruction. The MODE argument is the machine mode for the MEM expression that wants to use this address. *************** ix86_legitimate_address_p (enum machine_ *** 12130,12135 **** --- 12145,12151 ---- struct ix86_address parts; rtx base, index, disp; HOST_WIDE_INT scale; + enum ix86_address_seg seg; if (ix86_decompose_address (addr, &parts) <= 0) /* Decomposition failed. */ *************** ix86_legitimate_address_p (enum machine_ *** 12139,12159 **** index = parts.index; disp = parts.disp; scale = parts.scale; /* Validate base register. */ if (base) { ! rtx reg; ! ! if (REG_P (base)) ! reg = base; ! else if (GET_CODE (base) == SUBREG && REG_P (SUBREG_REG (base))) ! reg = SUBREG_REG (base); ! else ! /* Base is not a register. */ ! return false; ! if (GET_MODE (base) != SImode && GET_MODE (base) != DImode) return false; if ((strict && ! REG_OK_FOR_BASE_STRICT_P (reg)) --- 12155,12168 ---- index = parts.index; disp = parts.disp; scale = parts.scale; + seg = parts.seg; /* Validate base register. */ if (base) { ! rtx reg = ix86_validate_address_register (base); ! if (reg == NULL_RTX) return false; if ((strict && ! REG_OK_FOR_BASE_STRICT_P (reg)) *************** ix86_legitimate_address_p (enum machine_ *** 12165,12181 **** /* Validate index register. */ if (index) { ! rtx reg; ! ! if (REG_P (index)) ! reg = index; ! else if (GET_CODE (index) == SUBREG && REG_P (SUBREG_REG (index))) ! reg = SUBREG_REG (index); ! else ! /* Index is not a register. */ ! return false; ! if (GET_MODE (index) != SImode && GET_MODE (index) != DImode) return false; if ((strict && ! REG_OK_FOR_INDEX_STRICT_P (reg)) --- 12174,12182 ---- /* Validate index register. */ if (index) { ! rtx reg = ix86_validate_address_register (index); ! if (reg == NULL_RTX) return false; if ((strict && ! REG_OK_FOR_INDEX_STRICT_P (reg)) *************** ix86_legitimate_address_p (enum machine_ *** 12189,12194 **** --- 12190,12201 ---- && GET_MODE (base) != GET_MODE (index)) return false; + /* Address override works only on the (%reg) part of %fs:(%reg). */ + if (seg != SEG_DEFAULT + && ((base && GET_MODE (base) != word_mode) + || (index && GET_MODE (index) != word_mode))) + return false; + /* Validate scale factor. */ if (scale != 1) { *************** ix86_legitimate_address_p (enum machine_ *** 12310,12315 **** --- 12317,12328 ---- && !x86_64_immediate_operand (disp, VOIDmode)) /* Displacement is out of range. */ return false; + /* In x32 mode, constant addresses are sign extended to 64bit, so + we have to prevent addresses from 0x80000000 to 0xffffffff. */ + else if (TARGET_X32 && !(index || base) + && CONST_INT_P (disp) + && val_signbit_known_set_p (SImode, INTVAL (disp))) + return false; } /* Everything looks valid. */ *************** put_condition_code (enum rtx_code code, *** 13652,13659 **** Those same assemblers have the same but opposite lossage on cmov. */ if (mode == CCmode) suffix = fp ? "nbe" : "a"; - else if (mode == CCCmode) - suffix = "b"; else gcc_unreachable (); break; --- 13665,13670 ---- *************** put_condition_code (enum rtx_code code, *** 13675,13682 **** } break; case LTU: ! gcc_assert (mode == CCmode || mode == CCCmode); ! suffix = "b"; break; case GE: switch (mode) --- 13686,13697 ---- } break; case LTU: ! if (mode == CCmode) ! suffix = "b"; ! else if (mode == CCCmode) ! suffix = "c"; ! else ! gcc_unreachable (); break; case GE: switch (mode) *************** put_condition_code (enum rtx_code code, *** 13696,13715 **** } break; case GEU: ! /* ??? As above. */ ! gcc_assert (mode == CCmode || mode == CCCmode); ! suffix = fp ? "nb" : "ae"; break; case LE: gcc_assert (mode == CCmode || mode == CCGCmode || mode == CCNOmode); suffix = "le"; break; case LEU: - /* ??? As above. */ if (mode == CCmode) suffix = "be"; - else if (mode == CCCmode) - suffix = fp ? "nb" : "ae"; else gcc_unreachable (); break; --- 13711,13730 ---- } break; case GEU: ! if (mode == CCmode) ! suffix = fp ? "nb" : "ae"; ! else if (mode == CCCmode) ! suffix = "nc"; ! else ! gcc_unreachable (); break; case LE: gcc_assert (mode == CCmode || mode == CCGCmode || mode == CCNOmode); suffix = "le"; break; case LEU: if (mode == CCmode) suffix = "be"; else gcc_unreachable (); break; *************** ix86_avoid_lea_for_addr (rtx insn, rtx o *** 16973,16988 **** int ok; /* FIXME: Handle zero-extended addresses. */ ! if (GET_CODE (operands[1]) == ZERO_EXTEND ! || GET_CODE (operands[1]) == AND) return false; /* Check we need to optimize. */ if (!TARGET_OPT_AGU || optimize_function_for_size_p (cfun)) return false; ! /* Check it is correct to split here. */ ! if (!ix86_ok_to_clobber_flags(insn)) return false; ok = ix86_decompose_address (operands[1], &parts); --- 16988,17010 ---- int ok; /* FIXME: Handle zero-extended addresses. */ ! if (SImode_address_operand (operands[1], VOIDmode)) return false; /* Check we need to optimize. */ if (!TARGET_OPT_AGU || optimize_function_for_size_p (cfun)) return false; ! /* The "at least two components" test below might not catch simple ! move insns if parts.base is non-NULL and parts.disp is const0_rtx ! as the only components in the address, e.g. if the register is ! %rbp or %r13. As this test is much cheaper and moves are the ! common case, do this check first. */ ! if (REG_P (operands[1])) ! return false; ! ! /* Check if it is OK to split here. */ ! if (!ix86_ok_to_clobber_flags (insn)) return false; ok = ix86_decompose_address (operands[1], &parts); *************** ix86_cc_mode (enum rtx_code code, rtx op *** 18057,18068 **** return CCmode; case GTU: /* CF=0 & ZF=0 */ case LEU: /* CF=1 | ZF=1 */ ! /* Detect overflow checks. They need just the carry flag. */ ! if (GET_CODE (op0) == MINUS ! && rtx_equal_p (op1, XEXP (op0, 0))) ! return CCCmode; ! else ! return CCmode; /* Codes possibly doable only with sign flag when comparing against zero. */ case GE: /* SF=OF or SF=0 */ --- 18079,18085 ---- return CCmode; case GTU: /* CF=0 & ZF=0 */ case LEU: /* CF=1 | ZF=1 */ ! return CCmode; /* Codes possibly doable only with sign flag when comparing against zero. */ case GE: /* SF=OF or SF=0 */ *************** ix86_expand_vec_perm (rtx operands[]) *** 20026,20032 **** vec[i * 2 + 1] = const1_rtx; } vt = gen_rtx_CONST_VECTOR (maskmode, gen_rtvec_v (w, vec)); ! vt = force_const_mem (maskmode, vt); t1 = expand_simple_binop (maskmode, PLUS, t1, vt, t1, 1, OPTAB_DIRECT); --- 20043,20049 ---- vec[i * 2 + 1] = const1_rtx; } vt = gen_rtx_CONST_VECTOR (maskmode, gen_rtvec_v (w, vec)); ! vt = validize_mem (force_const_mem (maskmode, vt)); t1 = expand_simple_binop (maskmode, PLUS, t1, vt, t1, 1, OPTAB_DIRECT); *************** ix86_expand_vec_perm (rtx operands[]) *** 20056,20062 **** return; case V8SFmode: ! mask = gen_lowpart (V8SFmode, mask); if (one_operand_shuffle) emit_insn (gen_avx2_permvarv8sf (target, op0, mask)); else --- 20073,20079 ---- return; case V8SFmode: ! mask = gen_lowpart (V8SImode, mask); if (one_operand_shuffle) emit_insn (gen_avx2_permvarv8sf (target, op0, mask)); else *************** ix86_expand_vec_perm (rtx operands[]) *** 20223,20229 **** for (i = 0; i < 16; ++i) vec[i] = GEN_INT (i/e * e); vt = gen_rtx_CONST_VECTOR (V16QImode, gen_rtvec_v (16, vec)); ! vt = force_const_mem (V16QImode, vt); if (TARGET_XOP) emit_insn (gen_xop_pperm (mask, mask, mask, vt)); else --- 20240,20246 ---- for (i = 0; i < 16; ++i) vec[i] = GEN_INT (i/e * e); vt = gen_rtx_CONST_VECTOR (V16QImode, gen_rtvec_v (16, vec)); ! vt = validize_mem (force_const_mem (V16QImode, vt)); if (TARGET_XOP) emit_insn (gen_xop_pperm (mask, mask, mask, vt)); else *************** ix86_expand_vec_perm (rtx operands[]) *** 20234,20240 **** for (i = 0; i < 16; ++i) vec[i] = GEN_INT (i % e); vt = gen_rtx_CONST_VECTOR (V16QImode, gen_rtvec_v (16, vec)); ! vt = force_const_mem (V16QImode, vt); emit_insn (gen_addv16qi3 (mask, mask, vt)); } --- 20251,20257 ---- for (i = 0; i < 16; ++i) vec[i] = GEN_INT (i % e); vt = gen_rtx_CONST_VECTOR (V16QImode, gen_rtvec_v (16, vec)); ! vt = validize_mem (force_const_mem (V16QImode, vt)); emit_insn (gen_addv16qi3 (mask, mask, vt)); } *************** ix86_constant_alignment (tree exp, int a *** 24258,24264 **** int ix86_data_alignment (tree type, int align) { ! int max_align = optimize_size ? BITS_PER_WORD : MIN (256, MAX_OFILE_ALIGNMENT); if (AGGREGATE_TYPE_P (type) && TYPE_SIZE (type) --- 24275,24282 ---- int ix86_data_alignment (tree type, int align) { ! int max_align ! = optimize_size ? BITS_PER_WORD : MIN (256, MAX_OFILE_ALIGNMENT); if (AGGREGATE_TYPE_P (type) && TYPE_SIZE (type) *************** static const struct builtin_description *** 27199,27206 **** { OPTION_MASK_ISA_XOP, CODE_FOR_xop_shlv8hi3, "__builtin_ia32_vpshlw", IX86_BUILTIN_VPSHLW, UNKNOWN, (int)MULTI_ARG_2_HI }, { OPTION_MASK_ISA_XOP, CODE_FOR_xop_shlv16qi3, "__builtin_ia32_vpshlb", IX86_BUILTIN_VPSHLB, UNKNOWN, (int)MULTI_ARG_2_QI }, ! { OPTION_MASK_ISA_XOP, CODE_FOR_xop_vmfrczv4sf2, "__builtin_ia32_vfrczss", IX86_BUILTIN_VFRCZSS, UNKNOWN, (int)MULTI_ARG_2_SF }, ! { OPTION_MASK_ISA_XOP, CODE_FOR_xop_vmfrczv2df2, "__builtin_ia32_vfrczsd", IX86_BUILTIN_VFRCZSD, UNKNOWN, (int)MULTI_ARG_2_DF }, { OPTION_MASK_ISA_XOP, CODE_FOR_xop_frczv4sf2, "__builtin_ia32_vfrczps", IX86_BUILTIN_VFRCZPS, UNKNOWN, (int)MULTI_ARG_1_SF }, { OPTION_MASK_ISA_XOP, CODE_FOR_xop_frczv2df2, "__builtin_ia32_vfrczpd", IX86_BUILTIN_VFRCZPD, UNKNOWN, (int)MULTI_ARG_1_DF }, { OPTION_MASK_ISA_XOP, CODE_FOR_xop_frczv8sf2, "__builtin_ia32_vfrczps256", IX86_BUILTIN_VFRCZPS256, UNKNOWN, (int)MULTI_ARG_1_SF2 }, --- 27217,27224 ---- { OPTION_MASK_ISA_XOP, CODE_FOR_xop_shlv8hi3, "__builtin_ia32_vpshlw", IX86_BUILTIN_VPSHLW, UNKNOWN, (int)MULTI_ARG_2_HI }, { OPTION_MASK_ISA_XOP, CODE_FOR_xop_shlv16qi3, "__builtin_ia32_vpshlb", IX86_BUILTIN_VPSHLB, UNKNOWN, (int)MULTI_ARG_2_QI }, ! { OPTION_MASK_ISA_XOP, CODE_FOR_xop_vmfrczv4sf2, "__builtin_ia32_vfrczss", IX86_BUILTIN_VFRCZSS, UNKNOWN, (int)MULTI_ARG_1_SF }, ! { OPTION_MASK_ISA_XOP, CODE_FOR_xop_vmfrczv2df2, "__builtin_ia32_vfrczsd", IX86_BUILTIN_VFRCZSD, UNKNOWN, (int)MULTI_ARG_1_DF }, { OPTION_MASK_ISA_XOP, CODE_FOR_xop_frczv4sf2, "__builtin_ia32_vfrczps", IX86_BUILTIN_VFRCZPS, UNKNOWN, (int)MULTI_ARG_1_SF }, { OPTION_MASK_ISA_XOP, CODE_FOR_xop_frczv2df2, "__builtin_ia32_vfrczpd", IX86_BUILTIN_VFRCZPD, UNKNOWN, (int)MULTI_ARG_1_DF }, { OPTION_MASK_ISA_XOP, CODE_FOR_xop_frczv8sf2, "__builtin_ia32_vfrczps256", IX86_BUILTIN_VFRCZPS256, UNKNOWN, (int)MULTI_ARG_1_SF2 }, *************** rdrand_step: *** 29675,29681 **** else op2 = gen_rtx_SUBREG (SImode, op0, 0); ! if (target == 0) target = gen_reg_rtx (SImode); pat = gen_rtx_GEU (VOIDmode, gen_rtx_REG (CCCmode, FLAGS_REG), --- 29693,29700 ---- else op2 = gen_rtx_SUBREG (SImode, op0, 0); ! if (target == 0 ! || !register_operand (target, SImode)) target = gen_reg_rtx (SImode); pat = gen_rtx_GEU (VOIDmode, gen_rtx_REG (CCCmode, FLAGS_REG), *************** rdrand_step: *** 29763,29769 **** mode4 = insn_data[icode].operand[5].mode; if (target == NULL_RTX ! || GET_MODE (target) != insn_data[icode].operand[0].mode) subtarget = gen_reg_rtx (insn_data[icode].operand[0].mode); else subtarget = target; --- 29782,29790 ---- mode4 = insn_data[icode].operand[5].mode; if (target == NULL_RTX ! || GET_MODE (target) != insn_data[icode].operand[0].mode ! || !insn_data[icode].operand[0].predicate (target, ! GET_MODE (target))) subtarget = gen_reg_rtx (insn_data[icode].operand[0].mode); else subtarget = target; *************** x86_output_mi_thunk (FILE *file, *** 32386,32392 **** { tmp = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, fnaddr), UNSPEC_GOTPCREL); tmp = gen_rtx_CONST (Pmode, tmp); ! fnaddr = gen_rtx_MEM (Pmode, tmp); } } else --- 32407,32413 ---- { tmp = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, fnaddr), UNSPEC_GOTPCREL); tmp = gen_rtx_CONST (Pmode, tmp); ! fnaddr = gen_const_mem (Pmode, tmp); } } else *************** x86_output_mi_thunk (FILE *file, *** 32406,32413 **** output_set_got (tmp, NULL_RTX); fnaddr = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, fnaddr), UNSPEC_GOT); ! fnaddr = gen_rtx_PLUS (Pmode, fnaddr, tmp); ! fnaddr = gen_rtx_MEM (Pmode, fnaddr); } } --- 32427,32435 ---- output_set_got (tmp, NULL_RTX); fnaddr = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, fnaddr), UNSPEC_GOT); ! fnaddr = gen_rtx_CONST (Pmode, fnaddr); ! fnaddr = gen_rtx_PLUS (Pmode, tmp, fnaddr); ! fnaddr = gen_const_mem (Pmode, fnaddr); } } *************** expand_vec_perm_interleave2 (struct expa *** 36635,36641 **** else dfinal.perm[i] = e; } ! dfinal.op0 = gen_reg_rtx (dfinal.vmode); dfinal.op1 = dfinal.op0; dremap.target = dfinal.op0; --- 36657,36665 ---- else dfinal.perm[i] = e; } ! ! if (!d->testing_p) ! dfinal.op0 = gen_reg_rtx (dfinal.vmode); dfinal.op1 = dfinal.op0; dremap.target = dfinal.op0; *************** expand_vec_perm_pshufb2 (struct expand_v *** 36833,36838 **** --- 36857,36865 ---- return false; gcc_assert (d->op0 != d->op1); + if (d->testing_p) + return true; + nelt = d->nelt; eltsz = GET_MODE_SIZE (GET_MODE_INNER (d->vmode)); *************** expand_vec_perm_even_odd_1 (struct expan *** 37032,37037 **** --- 37059,37066 ---- switch (d->vmode) { case V4DFmode: + if (d->testing_p) + break; t1 = gen_reg_rtx (V4DFmode); t2 = gen_reg_rtx (V4DFmode); *************** expand_vec_perm_even_odd_1 (struct expan *** 37051,37056 **** --- 37080,37087 ---- { int mask = odd ? 0xdd : 0x88; + if (d->testing_p) + break; t1 = gen_reg_rtx (V8SFmode); t2 = gen_reg_rtx (V8SFmode); t3 = gen_reg_rtx (V8SFmode); *************** expand_vec_perm_even_odd_1 (struct expan *** 37092,37097 **** --- 37123,37130 ---- return expand_vec_perm_pshufb2 (d); else { + if (d->testing_p) + break; /* We need 2*log2(N)-1 operations to achieve odd/even with interleave. */ t1 = gen_reg_rtx (V8HImode); *************** expand_vec_perm_even_odd_1 (struct expan *** 37113,37118 **** --- 37146,37153 ---- return expand_vec_perm_pshufb2 (d); else { + if (d->testing_p) + break; t1 = gen_reg_rtx (V16QImode); t2 = gen_reg_rtx (V16QImode); t3 = gen_reg_rtx (V16QImode); *************** expand_vec_perm_even_odd_1 (struct expan *** 37145,37150 **** --- 37180,37188 ---- return expand_vec_perm_even_odd_1 (&d_copy, odd); } + if (d->testing_p) + break; + t1 = gen_reg_rtx (V4DImode); t2 = gen_reg_rtx (V4DImode); *************** expand_vec_perm_even_odd_1 (struct expan *** 37171,37176 **** --- 37209,37217 ---- return expand_vec_perm_even_odd_1 (&d_copy, odd); } + if (d->testing_p) + break; + t1 = gen_reg_rtx (V8SImode); t2 = gen_reg_rtx (V8SImode); *************** expand_vec_perm_broadcast_1 (struct expa *** 37263,37268 **** --- 37304,37311 ---- case V16QImode: /* These can be implemented via interleave. We save one insn by stopping once we have promoted to V4SImode and then use pshufd. */ + if (d->testing_p) + return true; do { rtx dest; diff -Nrcpad gcc-4.7.3/gcc/config/i386/i386.md gcc-4.7.4/gcc/config/i386/i386.md *** gcc-4.7.3/gcc/config/i386/i386.md Mon Apr 1 17:50:38 2013 --- gcc-4.7.4/gcc/config/i386/i386.md Wed May 7 16:07:21 2014 *************** *** 109,114 **** --- 109,115 ---- UNSPEC_CALL_NEEDS_VZEROUPPER UNSPEC_PAUSE UNSPEC_LEA_ADDR + UNSPEC_STOS ;; For SSE/MMX support: UNSPEC_FIX_NOTRUNC *************** *** 201,207 **** ;; For RDRAND support UNSPECV_RDRAND ! ]) ;; Constants to represent rounding modes in the ROUND instruction (define_constants --- 202,211 ---- ;; For RDRAND support UNSPECV_RDRAND ! ! ;; Non-local goto. ! UNSPECV_NLGR ! ]) ;; Constants to represent rounding modes in the ROUND instruction (define_constants *************** *** 1644,1650 **** split_double_mode (DImode, &operands[1], 1, &operands[2], &operands[3]); operands[1] = gen_lowpart (DImode, operands[2]); ! operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (DImode, stack_pointer_rtx, GEN_INT (4))); }) --- 1648,1654 ---- split_double_mode (DImode, &operands[1], 1, &operands[2], &operands[3]); operands[1] = gen_lowpart (DImode, operands[2]); ! operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (Pmode, stack_pointer_rtx, GEN_INT (4))); }) *************** *** 1661,1667 **** split_double_mode (DImode, &operands[1], 1, &operands[2], &operands[3]); operands[1] = gen_lowpart (DImode, operands[2]); ! operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (DImode, stack_pointer_rtx, GEN_INT (4))); }) --- 1665,1671 ---- split_double_mode (DImode, &operands[1], 1, &operands[2], &operands[3]); operands[1] = gen_lowpart (DImode, operands[2]); ! operands[2] = gen_rtx_MEM (SImode, gen_rtx_PLUS (Pmode, stack_pointer_rtx, GEN_INT (4))); }) *************** *** 1855,1872 **** [(set_attr "type" "*,*,sselog1,ssemov,ssemov") (set_attr "prefix" "*,*,maybe_vex,maybe_vex,maybe_vex") (set (attr "mode") ! (cond [(eq_attr "alternative" "2,3") ! (if_then_else ! (match_test "optimize_function_for_size_p (cfun)") ! (const_string "V4SF") ! (const_string "TI")) ! (eq_attr "alternative" "4") ! (if_then_else ! (ior (match_test "TARGET_SSE_TYPELESS_STORES") ! (match_test "optimize_function_for_size_p (cfun)")) ! (const_string "V4SF") ! (const_string "TI"))] ! (const_string "DI")))]) (define_split [(set (match_operand:TI 0 "nonimmediate_operand" "") --- 1859,1874 ---- [(set_attr "type" "*,*,sselog1,ssemov,ssemov") (set_attr "prefix" "*,*,maybe_vex,maybe_vex,maybe_vex") (set (attr "mode") ! (cond [(eq_attr "alternative" "0,1") ! (const_string "DI") ! (ior (not (match_test "TARGET_SSE2")) ! (match_test "optimize_function_for_size_p (cfun)")) ! (const_string "V4SF") ! (and (eq_attr "alternative" "4") ! (match_test "TARGET_SSE_TYPELESS_STORES")) ! (const_string "V4SF") ! ] ! (const_string "TI")))]) (define_split [(set (match_operand:TI 0 "nonimmediate_operand" "") *************** *** 2328,2334 **** "TARGET_LP64 && ix86_check_movabs (insn, 0)" "@ movabs{}\t{%1, %P0|[%P0], %1} ! mov{}\t{%1, %a0|%a0, %1}" [(set_attr "type" "imov") (set_attr "modrm" "0,*") (set_attr "length_address" "8,0") --- 2330,2336 ---- "TARGET_LP64 && ix86_check_movabs (insn, 0)" "@ movabs{}\t{%1, %P0|[%P0], %1} ! mov{}\t{%1, %a0| PTR %a0, %1}" [(set_attr "type" "imov") (set_attr "modrm" "0,*") (set_attr "length_address" "8,0") *************** *** 2342,2348 **** "TARGET_LP64 && ix86_check_movabs (insn, 1)" "@ movabs{}\t{%P1, %0|%0, [%P1]} ! mov{}\t{%a1, %0|%0, %a1}" [(set_attr "type" "imov") (set_attr "modrm" "0,*") (set_attr "length_address" "8,0") --- 2344,2350 ---- "TARGET_LP64 && ix86_check_movabs (insn, 1)" "@ movabs{}\t{%P1, %0|%0, [%P1]} ! mov{}\t{%a1, %0|%0, PTR %a1}" [(set_attr "type" "imov") (set_attr "modrm" "0,*") (set_attr "length_address" "8,0") *************** *** 3444,3452 **** }) (define_insn "*zero_extendsidi2_rex64" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o,?*Ym,?*y,?*Yi,*x") (zero_extend:DI ! (match_operand:SI 1 "nonimmediate_operand" "rm,0,r ,m ,r ,m")))] "TARGET_64BIT" "@ mov{l}\t{%1, %k0|%k0, %1} --- 3446,3454 ---- }) (define_insn "*zero_extendsidi2_rex64" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o,?*Ym,?!*y,?*Yi,*x") (zero_extend:DI ! (match_operand:SI 1 "nonimmediate_operand" "rm,0,r ,m ,r ,m")))] "TARGET_64BIT" "@ mov{l}\t{%1, %k0|%k0, %1} *************** *** 3469,3477 **** ;; %%% Kill me once multi-word ops are sane. (define_insn "zero_extendsidi2_1" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=r,?r,?o,?*Ym,?*y,?*Yi,*x") (zero_extend:DI ! (match_operand:SI 1 "nonimmediate_operand" "0,rm,r ,r ,m ,r ,m"))) (clobber (reg:CC FLAGS_REG))] "!TARGET_64BIT" "@ --- 3471,3479 ---- ;; %%% Kill me once multi-word ops are sane. (define_insn "zero_extendsidi2_1" ! [(set (match_operand:DI 0 "nonimmediate_operand" "=r,?r,?o,?*Ym,?!*y,?*Yi,*x") (zero_extend:DI ! (match_operand:SI 1 "nonimmediate_operand" "0,rm,r ,r ,m ,r ,m"))) (clobber (reg:CC FLAGS_REG))] "!TARGET_64BIT" "@ *************** *** 6553,6559 **** (set_attr "pent_pair" "pu") (set_attr "mode" "SI")]) ! ;; Overflow setting add and subtract instructions (define_insn "*add3_cconly_overflow" [(set (reg:CCC FLAGS_REG) --- 6555,6561 ---- (set_attr "pent_pair" "pu") (set_attr "mode" "SI")]) ! ;; Overflow setting add instructions (define_insn "*add3_cconly_overflow" [(set (reg:CCC FLAGS_REG) *************** *** 6568,6610 **** [(set_attr "type" "alu") (set_attr "mode" "")]) ! (define_insn "*sub3_cconly_overflow" ! [(set (reg:CCC FLAGS_REG) ! (compare:CCC ! (minus:SWI ! (match_operand:SWI 0 "nonimmediate_operand" "m,") ! (match_operand:SWI 1 "" ",m")) ! (match_dup 0)))] ! "" ! "cmp{}\t{%1, %0|%0, %1}" ! [(set_attr "type" "icmp") ! (set_attr "mode" "")]) ! ! (define_insn "*3_cc_overflow" [(set (reg:CCC FLAGS_REG) (compare:CCC ! (plusminus:SWI ! (match_operand:SWI 1 "nonimmediate_operand" "0,0") (match_operand:SWI 2 "" ",m")) (match_dup 1))) (set (match_operand:SWI 0 "nonimmediate_operand" "=m,") ! (plusminus:SWI (match_dup 1) (match_dup 2)))] ! "ix86_binary_operator_ok (, mode, operands)" ! "{}\t{%2, %0|%0, %2}" [(set_attr "type" "alu") (set_attr "mode" "")]) ! (define_insn "*si3_zext_cc_overflow" [(set (reg:CCC FLAGS_REG) (compare:CCC ! (plusminus:SI ! (match_operand:SI 1 "nonimmediate_operand" "0") (match_operand:SI 2 "x86_64_general_operand" "rme")) (match_dup 1))) (set (match_operand:DI 0 "register_operand" "=r") ! (zero_extend:DI (plusminus:SI (match_dup 1) (match_dup 2))))] ! "TARGET_64BIT && ix86_binary_operator_ok (, SImode, operands)" ! "{l}\t{%2, %k0|%k0, %2}" [(set_attr "type" "alu") (set_attr "mode" "SI")]) --- 6570,6600 ---- [(set_attr "type" "alu") (set_attr "mode" "")]) ! (define_insn "*add3_cc_overflow" [(set (reg:CCC FLAGS_REG) (compare:CCC ! (plus:SWI ! (match_operand:SWI 1 "nonimmediate_operand" "%0,0") (match_operand:SWI 2 "" ",m")) (match_dup 1))) (set (match_operand:SWI 0 "nonimmediate_operand" "=m,") ! (plus:SWI (match_dup 1) (match_dup 2)))] ! "ix86_binary_operator_ok (PLUS, mode, operands)" ! "add{}\t{%2, %0|%0, %2}" [(set_attr "type" "alu") (set_attr "mode" "")]) ! (define_insn "*addsi3_zext_cc_overflow" [(set (reg:CCC FLAGS_REG) (compare:CCC ! (plus:SI ! (match_operand:SI 1 "nonimmediate_operand" "%0") (match_operand:SI 2 "x86_64_general_operand" "rme")) (match_dup 1))) (set (match_operand:DI 0 "register_operand" "=r") ! (zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))] ! "TARGET_64BIT && ix86_binary_operator_ok (PLUS, SImode, operands)" ! "add{l}\t{%2, %k0|%k0, %2}" [(set_attr "type" "alu") (set_attr "mode" "SI")]) *************** *** 7933,7939 **** (const_int 0))) (set (match_operand:DI 0 "nonimmediate_operand" "=r,r,rm") (and:DI (match_dup 1) (match_dup 2)))] ! "TARGET_64BIT && ix86_match_ccmode (insn, CCNOmode) && ix86_binary_operator_ok (AND, DImode, operands)" "@ and{l}\t{%k2, %k0|%k0, %k2} --- 7923,7940 ---- (const_int 0))) (set (match_operand:DI 0 "nonimmediate_operand" "=r,r,rm") (and:DI (match_dup 1) (match_dup 2)))] ! "TARGET_64BIT ! && ix86_match_ccmode ! (insn, ! /* If we are going to emit andl instead of andq, and the operands[2] ! constant might have the SImode sign bit set, make sure the sign ! flag isn't tested, because the instruction will set the sign flag ! based on bit 31 rather than bit 63. If it isn't CONST_INT, ! conservatively assume it might have bit 31 set. */ ! (satisfies_constraint_Z (operands[2]) ! && (!CONST_INT_P (operands[2]) ! || val_signbit_known_set_p (SImode, INTVAL (operands[2])))) ! ? CCZmode : CCNOmode) && ix86_binary_operator_ok (AND, DImode, operands)" "@ and{l}\t{%k2, %k0|%k0, %k2} *************** *** 12087,12094 **** (define_insn "bmi_bextr_" [(set (match_operand:SWI48 0 "register_operand" "=r") ! (unspec:SWI48 [(match_operand:SWI48 1 "register_operand" "r") ! (match_operand:SWI48 2 "nonimmediate_operand" "rm")] UNSPEC_BEXTR)) (clobber (reg:CC FLAGS_REG))] "TARGET_BMI" --- 12088,12095 ---- (define_insn "bmi_bextr_" [(set (match_operand:SWI48 0 "register_operand" "=r") ! (unspec:SWI48 [(match_operand:SWI48 1 "nonimmediate_operand" "rm") ! (match_operand:SWI48 2 "register_operand" "r")] UNSPEC_BEXTR)) (clobber (reg:CC FLAGS_REG))] "TARGET_BMI" *************** *** 12137,12145 **** ;; BMI2 instructions. (define_insn "bmi2_bzhi_3" [(set (match_operand:SWI48 0 "register_operand" "=r") ! (and:SWI48 (match_operand:SWI48 1 "register_operand" "r") ! (lshiftrt:SWI48 (const_int -1) ! (match_operand:SWI48 2 "nonimmediate_operand" "rm")))) (clobber (reg:CC FLAGS_REG))] "TARGET_BMI2" "bzhi\t{%2, %1, %0|%0, %1, %2}" --- 12138,12146 ---- ;; BMI2 instructions. (define_insn "bmi2_bzhi_3" [(set (match_operand:SWI48 0 "register_operand" "=r") ! (and:SWI48 (lshiftrt:SWI48 (const_int -1) ! (match_operand:SWI48 2 "register_operand" "r")) ! (match_operand:SWI48 1 "nonimmediate_operand" "rm"))) (clobber (reg:CC FLAGS_REG))] "TARGET_BMI2" "bzhi\t{%2, %1, %0|%0, %1, %2}" *************** *** 15912,15918 **** [(parallel [(set (match_operand 1 "memory_operand" "") (match_operand 2 "register_operand" "")) (set (match_operand 0 "register_operand" "") ! (match_operand 3 "" ""))])] "" "ix86_current_function_needs_cld = 1;") --- 15913,15920 ---- [(parallel [(set (match_operand 1 "memory_operand" "") (match_operand 2 "register_operand" "")) (set (match_operand 0 "register_operand" "") ! (match_operand 3 "" "")) ! (unspec [(const_int 0)] UNSPEC_STOS)])] "" "ix86_current_function_needs_cld = 1;") *************** *** 15921,15927 **** (match_operand:DI 2 "register_operand" "a")) (set (match_operand:DI 0 "register_operand" "=D") (plus:DI (match_dup 1) ! (const_int 8)))] "TARGET_64BIT && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stosq" --- 15923,15930 ---- (match_operand:DI 2 "register_operand" "a")) (set (match_operand:DI 0 "register_operand" "=D") (plus:DI (match_dup 1) ! (const_int 8))) ! (unspec [(const_int 0)] UNSPEC_STOS)] "TARGET_64BIT && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stosq" *************** *** 15934,15940 **** (match_operand:SI 2 "register_operand" "a")) (set (match_operand:P 0 "register_operand" "=D") (plus:P (match_dup 1) ! (const_int 4)))] "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stos{l|d}" [(set_attr "type" "str") --- 15937,15944 ---- (match_operand:SI 2 "register_operand" "a")) (set (match_operand:P 0 "register_operand" "=D") (plus:P (match_dup 1) ! (const_int 4))) ! (unspec [(const_int 0)] UNSPEC_STOS)] "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stos{l|d}" [(set_attr "type" "str") *************** *** 15946,15952 **** (match_operand:HI 2 "register_operand" "a")) (set (match_operand:P 0 "register_operand" "=D") (plus:P (match_dup 1) ! (const_int 2)))] "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stosw" [(set_attr "type" "str") --- 15950,15957 ---- (match_operand:HI 2 "register_operand" "a")) (set (match_operand:P 0 "register_operand" "=D") (plus:P (match_dup 1) ! (const_int 2))) ! (unspec [(const_int 0)] UNSPEC_STOS)] "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stosw" [(set_attr "type" "str") *************** *** 15958,15964 **** (match_operand:QI 2 "register_operand" "a")) (set (match_operand:P 0 "register_operand" "=D") (plus:P (match_dup 1) ! (const_int 1)))] "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stosb" [(set_attr "type" "str") --- 15963,15970 ---- (match_operand:QI 2 "register_operand" "a")) (set (match_operand:P 0 "register_operand" "=D") (plus:P (match_dup 1) ! (const_int 1))) ! (unspec [(const_int 0)] UNSPEC_STOS)] "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])" "stosb" [(set_attr "type" "str") *************** *** 16797,16803 **** emit_insn (gen_set_got (pic_offset_table_rtx)); DONE; }) ! ;; Avoid redundant prefixes by splitting HImode arithmetic to SImode. (define_split --- 16803,16839 ---- emit_insn (gen_set_got (pic_offset_table_rtx)); DONE; }) ! ! (define_insn_and_split "nonlocal_goto_receiver" ! [(unspec_volatile [(const_int 0)] UNSPECV_NLGR)] ! "TARGET_MACHO && !TARGET_64BIT && flag_pic" ! "#" ! "&& reload_completed" ! [(const_int 0)] ! { ! if (crtl->uses_pic_offset_table) ! { ! rtx xops[3]; ! rtx label_rtx = gen_label_rtx (); ! rtx tmp; ! ! /* Get a new pic base. */ ! emit_insn (gen_set_got_labelled (pic_offset_table_rtx, label_rtx)); ! /* Correct this with the offset from the new to the old. */ ! xops[0] = xops[1] = pic_offset_table_rtx; ! label_rtx = gen_rtx_LABEL_REF (SImode, label_rtx); ! tmp = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, label_rtx), ! UNSPEC_MACHOPIC_OFFSET); ! xops[2] = gen_rtx_CONST (Pmode, tmp); ! ix86_expand_binary_operator (MINUS, SImode, xops); ! } ! else ! /* No pic reg restore needed. */ ! emit_note (NOTE_INSN_DELETED); ! ! DONE; ! }) ! ;; Avoid redundant prefixes by splitting HImode arithmetic to SImode. (define_split *************** *** 17190,17195 **** --- 17226,17232 ---- "(TARGET_READ_MODIFY_WRITE || optimize_insn_for_size_p ()) && peep2_reg_dead_p (4, operands[0]) && !reg_overlap_mentioned_p (operands[0], operands[1]) + && !reg_overlap_mentioned_p (operands[0], operands[2]) && (mode != QImode || immediate_operand (operands[2], QImode) || q_regs_operand (operands[2], QImode)) *************** *** 17254,17259 **** --- 17291,17297 ---- || immediate_operand (operands[2], SImode) || q_regs_operand (operands[2], SImode)) && !reg_overlap_mentioned_p (operands[0], operands[1]) + && !reg_overlap_mentioned_p (operands[0], operands[2]) && ix86_match_ccmode (peep2_next_insn (3), (GET_CODE (operands[3]) == PLUS || GET_CODE (operands[3]) == MINUS) diff -Nrcpad gcc-4.7.3/gcc/config/i386/predicates.md gcc-4.7.4/gcc/config/i386/predicates.md *** gcc-4.7.3/gcc/config/i386/predicates.md Wed Oct 24 15:27:47 2012 --- gcc-4.7.4/gcc/config/i386/predicates.md Wed May 7 15:59:37 2014 *************** *** 841,859 **** return false; /* VSIB addressing doesn't support (%rip). */ ! if (parts.disp && GET_CODE (parts.disp) == CONST) { ! disp = XEXP (parts.disp, 0); ! if (GET_CODE (disp) == PLUS) ! disp = XEXP (disp, 0); ! if (GET_CODE (disp) == UNSPEC) ! switch (XINT (disp, 1)) ! { ! case UNSPEC_GOTPCREL: ! case UNSPEC_PCREL: ! case UNSPEC_GOTNTPOFF: ! return false; ! } } return true; --- 841,868 ---- return false; /* VSIB addressing doesn't support (%rip). */ ! if (parts.disp) { ! disp = parts.disp; ! if (GET_CODE (disp) == CONST) ! { ! disp = XEXP (disp, 0); ! if (GET_CODE (disp) == PLUS) ! disp = XEXP (disp, 0); ! if (GET_CODE (disp) == UNSPEC) ! switch (XINT (disp, 1)) ! { ! case UNSPEC_GOTPCREL: ! case UNSPEC_PCREL: ! case UNSPEC_GOTNTPOFF: ! return false; ! } ! } ! if (TARGET_64BIT ! && flag_pic ! && (GET_CODE (disp) == SYMBOL_REF ! || GET_CODE (disp) == LABEL_REF)) ! return false; } return true; diff -Nrcpad gcc-4.7.3/gcc/config/i386/sse.md gcc-4.7.4/gcc/config/i386/sse.md *** gcc-4.7.3/gcc/config/i386/sse.md Sat Feb 9 06:58:54 2013 --- gcc-4.7.4/gcc/config/i386/sse.md Thu Feb 13 22:34:26 2014 *************** *** 3276,3282 **** (vec_select:V4SF (vec_concat:V8SF (match_operand:V4SF 1 "nonimmediate_operand" " 0,x,0,x,0") ! (match_operand:V4SF 2 "nonimmediate_operand" " x,x,m,x,x")) (parallel [(const_int 0) (const_int 1) (const_int 4) --- 3276,3282 ---- (vec_select:V4SF (vec_concat:V8SF (match_operand:V4SF 1 "nonimmediate_operand" " 0,x,0,x,0") ! (match_operand:V4SF 2 "nonimmediate_operand" " x,x,m,m,x")) (parallel [(const_int 0) (const_int 1) (const_int 4) *************** *** 11167,11173 **** (match_operand:SI 2 "const_0_to__operand" "n")))] "TARGET_XOP" { ! operands[3] = GEN_INT (( * 8) - INTVAL (operands[2])); return \"vprot\t{%3, %1, %0|%0, %1, %3}\"; } [(set_attr "type" "sseishft") --- 11167,11174 ---- (match_operand:SI 2 "const_0_to__operand" "n")))] "TARGET_XOP" { ! operands[3] ! = GEN_INT (GET_MODE_BITSIZE (mode) - INTVAL (operands[2])); return \"vprot\t{%3, %1, %0|%0, %1, %3}\"; } [(set_attr "type" "sseishft") *************** *** 11455,11475 **** [(set_attr "type" "ssecvt1") (set_attr "mode" "")]) - ;; scalar insns (define_expand "xop_vmfrcz2" [(set (match_operand:VF_128 0 "register_operand") (vec_merge:VF_128 (unspec:VF_128 [(match_operand:VF_128 1 "nonimmediate_operand")] UNSPEC_FRCZ) ! (match_dup 3) (const_int 1)))] "TARGET_XOP" ! { ! operands[3] = CONST0_RTX (mode); ! }) ! (define_insn "*xop_vmfrcz_" [(set (match_operand:VF_128 0 "register_operand" "=x") (vec_merge:VF_128 (unspec:VF_128 --- 11456,11473 ---- [(set_attr "type" "ssecvt1") (set_attr "mode" "")]) (define_expand "xop_vmfrcz2" [(set (match_operand:VF_128 0 "register_operand") (vec_merge:VF_128 (unspec:VF_128 [(match_operand:VF_128 1 "nonimmediate_operand")] UNSPEC_FRCZ) ! (match_dup 2) (const_int 1)))] "TARGET_XOP" ! "operands[2] = CONST0_RTX (mode);") ! (define_insn "*xop_vmfrcz2" [(set (match_operand:VF_128 0 "register_operand" "=x") (vec_merge:VF_128 (unspec:VF_128 diff -Nrcpad gcc-4.7.3/gcc/config/i386/t-rtems gcc-4.7.4/gcc/config/i386/t-rtems *** gcc-4.7.3/gcc/config/i386/t-rtems Wed Jun 1 14:39:17 2011 --- gcc-4.7.4/gcc/config/i386/t-rtems Tue Nov 5 18:53:42 2013 *************** *** 18,28 **** # . # ! MULTILIB_OPTIONS = mtune=i486/mtune=pentium/mtune=pentiumpro \ ! msoft-float MULTILIB_DIRNAMES= m486 mpentium mpentiumpro soft-float ! MULTILIB_MATCHES = msoft-float=mno-m80387 ! MULTILIB_MATCHES += mtune?pentium=mtune?k6 mtune?pentiumpro=mtune?mathlon MULTILIB_EXCEPTIONS = \ mtune=pentium/*msoft-float* \ mtune=pentiumpro/*msoft-float* --- 18,27 ---- # . # ! MULTILIB_OPTIONS = mtune=i486/mtune=pentium/mtune=pentiumpro msoft-float MULTILIB_DIRNAMES= m486 mpentium mpentiumpro soft-float ! MULTILIB_MATCHES = msoft-float=mno-80387 ! MULTILIB_MATCHES += mtune?pentium=mtune?k6 mtune?pentiumpro=mtune?athlon MULTILIB_EXCEPTIONS = \ mtune=pentium/*msoft-float* \ mtune=pentiumpro/*msoft-float* diff -Nrcpad gcc-4.7.3/gcc/config/i386/winnt.c gcc-4.7.4/gcc/config/i386/winnt.c *** gcc-4.7.3/gcc/config/i386/winnt.c Wed Jul 4 12:32:02 2012 --- gcc-4.7.4/gcc/config/i386/winnt.c Sun Dec 1 12:22:38 2013 *************** i386_pe_asm_named_section (const char *n *** 531,538 **** sets 'discard' characteristic, rather than telling linker to warn of size or content mismatch, so do the same. */ bool discard = (flags & SECTION_CODE) ! || lookup_attribute ("selectany", ! DECL_ATTRIBUTES (decl)); fprintf (asm_out_file, "\t.linkonce %s\n", (discard ? "discard" : "same_size")); } --- 531,539 ---- sets 'discard' characteristic, rather than telling linker to warn of size or content mismatch, so do the same. */ bool discard = (flags & SECTION_CODE) ! || (TREE_CODE (decl) != IDENTIFIER_NODE ! && lookup_attribute ("selectany", ! DECL_ATTRIBUTES (decl))); fprintf (asm_out_file, "\t.linkonce %s\n", (discard ? "discard" : "same_size")); } diff -Nrcpad gcc-4.7.3/gcc/config/i386/xopintrin.h gcc-4.7.4/gcc/config/i386/xopintrin.h *** gcc-4.7.3/gcc/config/i386/xopintrin.h Fri Apr 2 19:54:46 2010 --- gcc-4.7.4/gcc/config/i386/xopintrin.h Thu Nov 28 18:14:23 2013 *************** _mm_frcz_pd (__m128d __A) *** 745,757 **** extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_frcz_ss (__m128 __A, __m128 __B) { ! return (__m128) __builtin_ia32_vfrczss ((__v4sf)__A, (__v4sf)__B); } extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_frcz_sd (__m128d __A, __m128d __B) { ! return (__m128d) __builtin_ia32_vfrczsd ((__v2df)__A, (__v2df)__B); } extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) --- 745,761 ---- extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_frcz_ss (__m128 __A, __m128 __B) { ! return (__m128) __builtin_ia32_movss ((__v4sf)__A, ! (__v4sf) ! __builtin_ia32_vfrczss ((__v4sf)__B)); } extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_frcz_sd (__m128d __A, __m128d __B) { ! return (__m128d) __builtin_ia32_movsd ((__v2df)__A, ! (__v2df) ! __builtin_ia32_vfrczsd ((__v2df)__B)); } extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) diff -Nrcpad gcc-4.7.3/gcc/config/mips/driver-native.c gcc-4.7.4/gcc/config/mips/driver-native.c *** gcc-4.7.3/gcc/config/mips/driver-native.c Tue Dec 13 20:00:18 2011 --- gcc-4.7.4/gcc/config/mips/driver-native.c Fri Jan 10 08:54:42 2014 *************** host_detect_local_cpu (int argc, const c *** 116,126 **** if (strncmp (buf, "cpu model", sizeof ("cpu model") - 1) == 0) { if (strstr (buf, "Godson2 V0.2") != NULL ! || strstr (buf, "Loongson-2 V0.2") != NULL) cpu = "loongson2e"; else if (strstr (buf, "Godson2 V0.3") != NULL ! || strstr (buf, "Loongson-2 V0.3") != NULL) cpu = "loongson2f"; else if (strstr (buf, "SiByte SB1") != NULL) cpu = "sb1"; else if (strstr (buf, "R5000") != NULL) --- 116,132 ---- if (strncmp (buf, "cpu model", sizeof ("cpu model") - 1) == 0) { if (strstr (buf, "Godson2 V0.2") != NULL ! || strstr (buf, "Loongson-2 V0.2") != NULL ! || strstr (buf, "Loongson-2E") != NULL) cpu = "loongson2e"; else if (strstr (buf, "Godson2 V0.3") != NULL ! || strstr (buf, "Loongson-2 V0.3") != NULL ! || strstr (buf, "Loongson-2F") != NULL) cpu = "loongson2f"; + else if (strstr (buf, "Godson3 V0.5") != NULL + || strstr (buf, "Loongson-3 V0.5") != NULL + || strstr (buf, "Loongson-3A") != NULL) + cpu = "loongson3a"; else if (strstr (buf, "SiByte SB1") != NULL) cpu = "sb1"; else if (strstr (buf, "R5000") != NULL) diff -Nrcpad gcc-4.7.3/gcc/config/pa/pa.c gcc-4.7.4/gcc/config/pa/pa.c *** gcc-4.7.3/gcc/config/pa/pa.c Fri Jan 4 04:03:18 2013 --- gcc-4.7.4/gcc/config/pa/pa.c Tue Feb 25 00:54:41 2014 *************** legitimize_pic_address (rtx orig, enum m *** 790,796 **** /* Extract CODE_LABEL. */ orig = XEXP (orig, 0); add_reg_note (insn, REG_LABEL_OPERAND, orig); ! LABEL_NUSES (orig)++; } crtl->uses_pic_offset_table = 1; return reg; --- 790,798 ---- /* Extract CODE_LABEL. */ orig = XEXP (orig, 0); add_reg_note (insn, REG_LABEL_OPERAND, orig); ! /* Make sure we have label and not a note. */ ! if (LABEL_P (orig)) ! LABEL_NUSES (orig)++; } crtl->uses_pic_offset_table = 1; return reg; *************** pa_output_move_double (rtx *operands) *** 2583,2596 **** if (optype0 == REGOP) latehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else if (optype0 == OFFSOP) ! latehalf[0] = adjust_address (operands[0], SImode, 4); else latehalf[0] = operands[0]; if (optype1 == REGOP) latehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else if (optype1 == OFFSOP) ! latehalf[1] = adjust_address (operands[1], SImode, 4); else if (optype1 == CNSTOP) split_double (operands[1], &operands[1], &latehalf[1]); else --- 2585,2598 ---- if (optype0 == REGOP) latehalf[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else if (optype0 == OFFSOP) ! latehalf[0] = adjust_address_nv (operands[0], SImode, 4); else latehalf[0] = operands[0]; if (optype1 == REGOP) latehalf[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); else if (optype1 == OFFSOP) ! latehalf[1] = adjust_address_nv (operands[1], SImode, 4); else if (optype1 == CNSTOP) split_double (operands[1], &operands[1], &latehalf[1]); else *************** pa_expand_prologue (void) *** 4001,4007 **** || (! TARGET_64BIT && df_regs_ever_live_p (i + 1))) { rtx addr, insn, reg; ! addr = gen_rtx_MEM (DFmode, gen_rtx_POST_INC (DFmode, tmpreg)); reg = gen_rtx_REG (DFmode, i); insn = emit_move_insn (addr, reg); if (DO_FRAME_NOTES) --- 4003,4010 ---- || (! TARGET_64BIT && df_regs_ever_live_p (i + 1))) { rtx addr, insn, reg; ! addr = gen_rtx_MEM (DFmode, ! gen_rtx_POST_INC (word_mode, tmpreg)); reg = gen_rtx_REG (DFmode, i); insn = emit_move_insn (addr, reg); if (DO_FRAME_NOTES) *************** pa_expand_epilogue (void) *** 4291,4297 **** if (df_regs_ever_live_p (i) || (! TARGET_64BIT && df_regs_ever_live_p (i + 1))) { ! rtx src = gen_rtx_MEM (DFmode, gen_rtx_POST_INC (DFmode, tmpreg)); rtx dest = gen_rtx_REG (DFmode, i); emit_move_insn (dest, src); } --- 4294,4301 ---- if (df_regs_ever_live_p (i) || (! TARGET_64BIT && df_regs_ever_live_p (i + 1))) { ! rtx src = gen_rtx_MEM (DFmode, ! gen_rtx_POST_INC (word_mode, tmpreg)); rtx dest = gen_rtx_REG (DFmode, i); emit_move_insn (dest, src); } *************** pa_attr_length_millicode_call (rtx insn) *** 7471,7477 **** if (!TARGET_LONG_CALLS && distance < MAX_PCREL17F_OFFSET) return 8; ! if (TARGET_LONG_ABS_CALL && !flag_pic) return 12; return 24; --- 7475,7481 ---- if (!TARGET_LONG_CALLS && distance < MAX_PCREL17F_OFFSET) return 8; ! if (!flag_pic) return 12; return 24; *************** pa_attr_length_indirect_call (rtx insn) *** 8036,8042 **** return 12; if (TARGET_FAST_INDIRECT_CALLS ! || (!TARGET_PORTABLE_RUNTIME && ((TARGET_PA_20 && !TARGET_SOM && distance < 7600000) || distance < MAX_PCREL17F_OFFSET))) return 8; --- 8040,8047 ---- return 12; if (TARGET_FAST_INDIRECT_CALLS ! || (!TARGET_LONG_CALLS ! && !TARGET_PORTABLE_RUNTIME && ((TARGET_PA_20 && !TARGET_SOM && distance < 7600000) || distance < MAX_PCREL17F_OFFSET))) return 8; diff -Nrcpad gcc-4.7.3/gcc/config/pa/pa.md gcc-4.7.4/gcc/config/pa/pa.md *** gcc-4.7.3/gcc/config/pa/pa.md Fri Jan 4 04:03:18 2013 --- gcc-4.7.4/gcc/config/pa/pa.md Fri Sep 20 22:32:47 2013 *************** *** 730,775 **** (define_insn "scc" [(set (match_operand:SI 0 "register_operand" "=r") (match_operator:SI 3 "comparison_operator" ! [(match_operand:SI 1 "register_operand" "r") (match_operand:SI 2 "arith11_operand" "rI")]))] "" ! "{com%I2clr|cmp%I2clr},%B3 %2,%1,%0\;ldi 1,%0" [(set_attr "type" "binary") (set_attr "length" "8")]) (define_insn "" [(set (match_operand:DI 0 "register_operand" "=r") (match_operator:DI 3 "comparison_operator" ! [(match_operand:DI 1 "register_operand" "r") (match_operand:DI 2 "arith11_operand" "rI")]))] "TARGET_64BIT" ! "cmp%I2clr,*%B3 %2,%1,%0\;ldi 1,%0" [(set_attr "type" "binary") (set_attr "length" "8")]) (define_insn "iorscc" [(set (match_operand:SI 0 "register_operand" "=r") (ior:SI (match_operator:SI 3 "comparison_operator" ! [(match_operand:SI 1 "register_operand" "r") (match_operand:SI 2 "arith11_operand" "rI")]) (match_operator:SI 6 "comparison_operator" ! [(match_operand:SI 4 "register_operand" "r") (match_operand:SI 5 "arith11_operand" "rI")])))] "" ! "{com%I2clr|cmp%I2clr},%S3 %2,%1,%%r0\;{com%I5clr|cmp%I5clr},%B6 %5,%4,%0\;ldi 1,%0" [(set_attr "type" "binary") (set_attr "length" "12")]) (define_insn "" [(set (match_operand:DI 0 "register_operand" "=r") (ior:DI (match_operator:DI 3 "comparison_operator" ! [(match_operand:DI 1 "register_operand" "r") (match_operand:DI 2 "arith11_operand" "rI")]) (match_operator:DI 6 "comparison_operator" ! [(match_operand:DI 4 "register_operand" "r") (match_operand:DI 5 "arith11_operand" "rI")])))] "TARGET_64BIT" ! "cmp%I2clr,*%S3 %2,%1,%%r0\;cmp%I5clr,*%B6 %5,%4,%0\;ldi 1,%0" [(set_attr "type" "binary") (set_attr "length" "12")]) --- 730,775 ---- (define_insn "scc" [(set (match_operand:SI 0 "register_operand" "=r") (match_operator:SI 3 "comparison_operator" ! [(match_operand:SI 1 "reg_or_0_operand" "rM") (match_operand:SI 2 "arith11_operand" "rI")]))] "" ! "{com%I2clr|cmp%I2clr},%B3 %2,%r1,%0\;ldi 1,%0" [(set_attr "type" "binary") (set_attr "length" "8")]) (define_insn "" [(set (match_operand:DI 0 "register_operand" "=r") (match_operator:DI 3 "comparison_operator" ! [(match_operand:DI 1 "reg_or_0_operand" "rM") (match_operand:DI 2 "arith11_operand" "rI")]))] "TARGET_64BIT" ! "cmp%I2clr,*%B3 %2,%r1,%0\;ldi 1,%0" [(set_attr "type" "binary") (set_attr "length" "8")]) (define_insn "iorscc" [(set (match_operand:SI 0 "register_operand" "=r") (ior:SI (match_operator:SI 3 "comparison_operator" ! [(match_operand:SI 1 "reg_or_0_operand" "rM") (match_operand:SI 2 "arith11_operand" "rI")]) (match_operator:SI 6 "comparison_operator" ! [(match_operand:SI 4 "reg_or_0_operand" "rM") (match_operand:SI 5 "arith11_operand" "rI")])))] "" ! "{com%I2clr|cmp%I2clr},%S3 %2,%r1,%%r0\;{com%I5clr|cmp%I5clr},%B6 %5,%r4,%0\;ldi 1,%0" [(set_attr "type" "binary") (set_attr "length" "12")]) (define_insn "" [(set (match_operand:DI 0 "register_operand" "=r") (ior:DI (match_operator:DI 3 "comparison_operator" ! [(match_operand:DI 1 "reg_or_0_operand" "rM") (match_operand:DI 2 "arith11_operand" "rI")]) (match_operator:DI 6 "comparison_operator" ! [(match_operand:DI 4 "reg_or_0_operand" "rM") (match_operand:DI 5 "arith11_operand" "rI")])))] "TARGET_64BIT" ! "cmp%I2clr,*%S3 %2,%r1,%%r0\;cmp%I5clr,*%B6 %5,%r4,%0\;ldi 1,%0" [(set_attr "type" "binary") (set_attr "length" "12")]) *************** *** 778,797 **** (define_insn "negscc" [(set (match_operand:SI 0 "register_operand" "=r") (neg:SI (match_operator:SI 3 "comparison_operator" ! [(match_operand:SI 1 "register_operand" "r") (match_operand:SI 2 "arith11_operand" "rI")])))] "" ! "{com%I2clr|cmp%I2clr},%B3 %2,%1,%0\;ldi -1,%0" [(set_attr "type" "binary") (set_attr "length" "8")]) (define_insn "" [(set (match_operand:DI 0 "register_operand" "=r") (neg:DI (match_operator:DI 3 "comparison_operator" ! [(match_operand:DI 1 "register_operand" "r") (match_operand:DI 2 "arith11_operand" "rI")])))] "TARGET_64BIT" ! "cmp%I2clr,*%B3 %2,%1,%0\;ldi -1,%0" [(set_attr "type" "binary") (set_attr "length" "8")]) --- 778,797 ---- (define_insn "negscc" [(set (match_operand:SI 0 "register_operand" "=r") (neg:SI (match_operator:SI 3 "comparison_operator" ! [(match_operand:SI 1 "reg_or_0_operand" "rM") (match_operand:SI 2 "arith11_operand" "rI")])))] "" ! "{com%I2clr|cmp%I2clr},%B3 %2,%r1,%0\;ldi -1,%0" [(set_attr "type" "binary") (set_attr "length" "8")]) (define_insn "" [(set (match_operand:DI 0 "register_operand" "=r") (neg:DI (match_operator:DI 3 "comparison_operator" ! [(match_operand:DI 1 "reg_or_0_operand" "rM") (match_operand:DI 2 "arith11_operand" "rI")])))] "TARGET_64BIT" ! "cmp%I2clr,*%B3 %2,%r1,%0\;ldi -1,%0" [(set_attr "type" "binary") (set_attr "length" "8")]) diff -Nrcpad gcc-4.7.3/gcc/config/rs6000/rs6000.c gcc-4.7.4/gcc/config/rs6000/rs6000.c *** gcc-4.7.3/gcc/config/rs6000/rs6000.c Fri Feb 8 19:46:52 2013 --- gcc-4.7.4/gcc/config/rs6000/rs6000.c Tue Jul 9 22:37:30 2013 *************** rs6000_init_hard_regno_mode_ok (bool glo *** 2398,2405 **** reg_size = UNITS_PER_WORD; for (m = 0; m < NUM_MACHINE_MODES; ++m) ! rs6000_class_max_nregs[m][c] ! = (GET_MODE_SIZE (m) + reg_size - 1) / reg_size; } if (TARGET_E500_DOUBLE) --- 2398,2414 ---- reg_size = UNITS_PER_WORD; for (m = 0; m < NUM_MACHINE_MODES; ++m) ! { ! int reg_size2 = reg_size; ! ! /* TFmode/TDmode always takes 2 registers, even in VSX. */ ! if (TARGET_VSX && VSX_REG_CLASS_P (c) ! && (m == TDmode || m == TFmode)) ! reg_size2 = UNITS_PER_FP_WORD; ! ! rs6000_class_max_nregs[m][c] ! = (GET_MODE_SIZE (m) + reg_size2 - 1) / reg_size2; ! } } if (TARGET_E500_DOUBLE) diff -Nrcpad gcc-4.7.3/gcc/config/rs6000/rs6000.h gcc-4.7.4/gcc/config/rs6000/rs6000.h *** gcc-4.7.3/gcc/config/rs6000/rs6000.h Thu Apr 12 21:00:07 2012 --- gcc-4.7.4/gcc/config/rs6000/rs6000.h Tue May 7 17:58:02 2013 *************** extern unsigned rs6000_pointer_size; *** 1033,1044 **** #define HARD_REGNO_NREGS(REGNO, MODE) rs6000_hard_regno_nregs[(MODE)][(REGNO)] /* When setting up caller-save slots (MODE == VOIDmode) ensure we allocate ! enough space to account for vectors in FP regs. */ #define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \ (TARGET_VSX \ && ((MODE) == VOIDmode || ALTIVEC_OR_VSX_VECTOR_MODE (MODE)) \ ! && FP_REGNO_P (REGNO) \ ! ? V2DFmode \ : choose_hard_reg_mode ((REGNO), (NREGS), false)) #define HARD_REGNO_CALL_PART_CLOBBERED(REGNO, MODE) \ --- 1033,1049 ---- #define HARD_REGNO_NREGS(REGNO, MODE) rs6000_hard_regno_nregs[(MODE)][(REGNO)] /* When setting up caller-save slots (MODE == VOIDmode) ensure we allocate ! enough space to account for vectors in FP regs. However, TFmode/TDmode ! should not use VSX instructions to do a caller save. */ #define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \ (TARGET_VSX \ && ((MODE) == VOIDmode || ALTIVEC_OR_VSX_VECTOR_MODE (MODE)) \ ! && FP_REGNO_P (REGNO) \ ! ? V2DFmode \ ! : ((MODE) == TFmode && FP_REGNO_P (REGNO)) \ ! ? DFmode \ ! : ((MODE) == TDmode && FP_REGNO_P (REGNO)) \ ! ? DImode \ : choose_hard_reg_mode ((REGNO), (NREGS), false)) #define HARD_REGNO_CALL_PART_CLOBBERED(REGNO, MODE) \ *************** extern unsigned rs6000_pointer_size; *** 1046,1052 **** && (GET_MODE_SIZE (MODE) > 4) \ && INT_REGNO_P (REGNO)) ? 1 : 0) \ || (TARGET_VSX && FP_REGNO_P (REGNO) \ ! && GET_MODE_SIZE (MODE) > 8)) #define VSX_VECTOR_MODE(MODE) \ ((MODE) == V4SFmode \ --- 1051,1058 ---- && (GET_MODE_SIZE (MODE) > 4) \ && INT_REGNO_P (REGNO)) ? 1 : 0) \ || (TARGET_VSX && FP_REGNO_P (REGNO) \ ! && GET_MODE_SIZE (MODE) > 8 && ((MODE) != TDmode) \ ! && ((MODE) != TFmode))) #define VSX_VECTOR_MODE(MODE) \ ((MODE) == V4SFmode \ diff -Nrcpad gcc-4.7.3/gcc/config/sh/sh.md gcc-4.7.4/gcc/config/sh/sh.md *** gcc-4.7.3/gcc/config/sh/sh.md Mon Mar 25 22:55:56 2013 --- gcc-4.7.4/gcc/config/sh/sh.md Mon Apr 29 11:34:26 2013 *************** *** 654,660 **** (define_insn "tstsi_t_zero_extract_eq" [(set (reg:SI T_REG) ! (eq:SI (zero_extract:SI (match_operand 0 "logical_operand" "z") (match_operand:SI 1 "const_int_operand") (match_operand:SI 2 "const_int_operand")) (const_int 0)))] --- 654,660 ---- (define_insn "tstsi_t_zero_extract_eq" [(set (reg:SI T_REG) ! (eq:SI (zero_extract:SI (match_operand:SI 0 "logical_operand" "z") (match_operand:SI 1 "const_int_operand") (match_operand:SI 2 "const_int_operand")) (const_int 0)))] diff -Nrcpad gcc-4.7.3/gcc/config/sparc/sparc.c gcc-4.7.4/gcc/config/sparc/sparc.c *** gcc-4.7.3/gcc/config/sparc/sparc.c Sun Dec 16 10:26:08 2012 --- gcc-4.7.4/gcc/config/sparc/sparc.c Fri Aug 2 21:43:51 2013 *************** mem_min_alignment (rtx mem, int desired) *** 4207,4219 **** mapped into one sparc_mode_class mode. */ enum sparc_mode_class { ! S_MODE, D_MODE, T_MODE, O_MODE, SF_MODE, DF_MODE, TF_MODE, OF_MODE, CC_MODE, CCFP_MODE }; /* Modes for single-word and smaller quantities. */ ! #define S_MODES ((1 << (int) S_MODE) | (1 << (int) SF_MODE)) /* Modes for double-word and smaller quantities. */ #define D_MODES (S_MODES | (1 << (int) D_MODE) | (1 << DF_MODE)) --- 4207,4220 ---- mapped into one sparc_mode_class mode. */ enum sparc_mode_class { ! H_MODE, S_MODE, D_MODE, T_MODE, O_MODE, SF_MODE, DF_MODE, TF_MODE, OF_MODE, CC_MODE, CCFP_MODE }; /* Modes for single-word and smaller quantities. */ ! #define S_MODES \ ! ((1 << (int) H_MODE) | (1 << (int) S_MODE) | (1 << (int) SF_MODE)) /* Modes for double-word and smaller quantities. */ #define D_MODES (S_MODES | (1 << (int) D_MODE) | (1 << DF_MODE)) *************** enum sparc_mode_class { *** 4224,4236 **** /* Modes for 8-word and smaller quantities. */ #define O_MODES (T_MODES | (1 << (int) O_MODE) | (1 << (int) OF_MODE)) ! /* Modes for single-float quantities. We must allow any single word or ! smaller quantity. This is because the fix/float conversion instructions ! take integer inputs/outputs from the float registers. */ ! #define SF_MODES (S_MODES) /* Modes for double-float and smaller quantities. */ ! #define DF_MODES (D_MODES) /* Modes for quad-float and smaller quantities. */ #define TF_MODES (DF_MODES | (1 << (int) TF_MODE)) --- 4225,4235 ---- /* Modes for 8-word and smaller quantities. */ #define O_MODES (T_MODES | (1 << (int) O_MODE) | (1 << (int) OF_MODE)) ! /* Modes for single-float quantities. */ ! #define SF_MODES ((1 << (int) S_MODE) | (1 << (int) SF_MODE)) /* Modes for double-float and smaller quantities. */ ! #define DF_MODES (SF_MODES | (1 << (int) D_MODE) | (1 << DF_MODE)) /* Modes for quad-float and smaller quantities. */ #define TF_MODES (DF_MODES | (1 << (int) TF_MODE)) *************** sparc_init_modes (void) *** 4326,4332 **** case MODE_INT: case MODE_PARTIAL_INT: case MODE_COMPLEX_INT: ! if (GET_MODE_SIZE (i) <= 4) sparc_mode_class[i] = 1 << (int) S_MODE; else if (GET_MODE_SIZE (i) == 8) sparc_mode_class[i] = 1 << (int) D_MODE; --- 4325,4333 ---- case MODE_INT: case MODE_PARTIAL_INT: case MODE_COMPLEX_INT: ! if (GET_MODE_SIZE (i) < 4) ! sparc_mode_class[i] = 1 << (int) H_MODE; ! else if (GET_MODE_SIZE (i) == 4) sparc_mode_class[i] = 1 << (int) S_MODE; else if (GET_MODE_SIZE (i) == 8) sparc_mode_class[i] = 1 << (int) D_MODE; *************** sparc_init_modes (void) *** 4338,4351 **** sparc_mode_class[i] = 0; break; case MODE_VECTOR_INT: ! if (GET_MODE_SIZE (i) <= 4) ! sparc_mode_class[i] = 1 << (int)SF_MODE; else if (GET_MODE_SIZE (i) == 8) ! sparc_mode_class[i] = 1 << (int)DF_MODE; break; case MODE_FLOAT: case MODE_COMPLEX_FLOAT: ! if (GET_MODE_SIZE (i) <= 4) sparc_mode_class[i] = 1 << (int) SF_MODE; else if (GET_MODE_SIZE (i) == 8) sparc_mode_class[i] = 1 << (int) DF_MODE; --- 4339,4354 ---- sparc_mode_class[i] = 0; break; case MODE_VECTOR_INT: ! if (GET_MODE_SIZE (i) == 4) ! sparc_mode_class[i] = 1 << (int) SF_MODE; else if (GET_MODE_SIZE (i) == 8) ! sparc_mode_class[i] = 1 << (int) DF_MODE; ! else ! sparc_mode_class[i] = 0; break; case MODE_FLOAT: case MODE_COMPLEX_FLOAT: ! if (GET_MODE_SIZE (i) == 4) sparc_mode_class[i] = 1 << (int) SF_MODE; else if (GET_MODE_SIZE (i) == 8) sparc_mode_class[i] = 1 << (int) DF_MODE; *************** sparc_emit_membar_for_model (enum memmod *** 10926,10931 **** --- 10929,10939 ---- /* Total Store Ordering: all memory transactions with store semantics are followed by an implied StoreStore. */ implied |= StoreStore; + + /* If we're not looking for a raw barrer (before+after), then atomic + operations get the benefit of being both load and store. */ + if (load_store == 3 && before_after == 1) + implied |= StoreLoad; /* FALLTHRU */ case SMM_PSO: diff -Nrcpad gcc-4.7.3/gcc/config/sparc/sparc.md gcc-4.7.4/gcc/config/sparc/sparc.md *** gcc-4.7.3/gcc/config/sparc/sparc.md Tue Dec 11 18:44:48 2012 --- gcc-4.7.4/gcc/config/sparc/sparc.md Fri Apr 25 10:47:44 2014 *************** *** 5607,5625 **** } [(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") --- 5607,5612 ---- diff -Nrcpad gcc-4.7.3/gcc/config/tilegx/sync.md gcc-4.7.4/gcc/config/tilegx/sync.md *** gcc-4.7.3/gcc/config/tilegx/sync.md Mon Aug 27 17:39:19 2012 --- gcc-4.7.4/gcc/config/tilegx/sync.md Sat Jan 25 22:46:37 2014 *************** *** 151,165 **** (match_operand:SI 3 "const_int_operand" "")] ;; model "" { enum memmodel model = (enum memmodel) INTVAL (operands[3]); if (operands[2] != const0_rtx) ! emit_move_insn (operands[2], gen_rtx_NEG (mode, operands[2])); tilegx_pre_atomic_barrier (model); emit_insn (gen_atomic_fetch_add_bare (operands[0], operands[1], ! operands[2])); tilegx_post_atomic_barrier (model); DONE; }) --- 151,172 ---- (match_operand:SI 3 "const_int_operand" "")] ;; model "" { + rtx addend; enum memmodel model = (enum memmodel) INTVAL (operands[3]); if (operands[2] != const0_rtx) ! { ! addend = gen_reg_rtx (mode); ! emit_move_insn (addend, ! gen_rtx_MINUS (mode, const0_rtx, operands[2])); ! } ! else ! addend = operands[2]; tilegx_pre_atomic_barrier (model); emit_insn (gen_atomic_fetch_add_bare (operands[0], operands[1], ! addend)); tilegx_post_atomic_barrier (model); DONE; }) diff -Nrcpad gcc-4.7.3/gcc/config/tilegx/tilegx-c.c gcc-4.7.4/gcc/config/tilegx/tilegx-c.c *** gcc-4.7.3/gcc/config/tilegx/tilegx-c.c Tue Feb 14 10:02:21 2012 --- gcc-4.7.4/gcc/config/tilegx/tilegx-c.c Sat Jan 25 22:45:40 2014 *************** tilegx_cpu_cpp_builtins (struct cpp_read *** 48,53 **** --- 48,56 ---- if (TARGET_32BIT) builtin_define ("__tilegx32__"); + builtin_define ("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1"); + builtin_define ("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2"); + TILEGX_CPU_CPP_ENDIAN_BUILTINS (); GNU_USER_TARGET_OS_CPP_BUILTINS (); } diff -Nrcpad gcc-4.7.3/gcc/config/tilegx/tilegx.c gcc-4.7.4/gcc/config/tilegx/tilegx.c *** gcc-4.7.3/gcc/config/tilegx/tilegx.c Wed Mar 27 06:39:01 2013 --- gcc-4.7.4/gcc/config/tilegx/tilegx.c Sat Jan 25 22:44:41 2014 *************** tilegx_init_expanders (void) *** 678,683 **** --- 678,693 ---- } + /* Implement TARGET_EXPAND_TO_RTL_HOOK. */ + static void + tilegx_expand_to_rtl_hook (void) + { + /* Exclude earlier sets of crtl->uses_pic_offset_table, because we + only care about uses actually emitted. */ + crtl->uses_pic_offset_table = 0; + } + + /* Implement TARGET_SHIFT_TRUNCATION_MASK. DImode shifts use the mode matching insns and therefore guarantee that the shift count is modulo 64. SImode shifts sometimes use the 64 bit version so do *************** tilegx_expand_builtin (tree exp, *** 3490,3495 **** --- 3500,3511 ---- } if (!pat) return NULL_RTX; + + /* If we are generating a prefetch, tell the scheduler not to move + it around. */ + if (GET_CODE (pat) == PREFETCH) + PREFETCH_SCHEDULE_BARRIER_P (pat) = true; + emit_insn (pat); if (nonvoid) *************** tilegx_gen_bundles (void) *** 4317,4326 **** basic_block bb; FOR_EACH_BB (bb) { ! rtx insn, next; rtx end = NEXT_INSN (BB_END (bb)); ! for (insn = next_insn_to_bundle (BB_HEAD (bb), end); insn; insn = next) { next = next_insn_to_bundle (NEXT_INSN (insn), end); --- 4333,4344 ---- basic_block bb; FOR_EACH_BB (bb) { ! rtx insn, next, prev; rtx end = NEXT_INSN (BB_END (bb)); ! prev = NULL_RTX; ! for (insn = next_insn_to_bundle (BB_HEAD (bb), end); insn; ! prev = insn, insn = next) { next = next_insn_to_bundle (NEXT_INSN (insn), end); *************** tilegx_gen_bundles (void) *** 4345,4350 **** --- 4363,4380 ---- PUT_MODE (insn, SImode); } } + + /* Delete barrier insns, because they can mess up the + emitting of bundle braces. If it is end-of-bundle, then + the previous insn must be marked end-of-bundle. */ + if (get_attr_type (insn) == TYPE_NOTHING) { + if (GET_MODE (insn) == QImode && prev != NULL + && GET_MODE (prev) == SImode) + { + PUT_MODE (prev, QImode); + } + delete_insn (insn); + } } } } *************** tilegx_file_end (void) *** 5428,5433 **** --- 5458,5466 ---- #undef TARGET_RTX_COSTS #define TARGET_RTX_COSTS tilegx_rtx_costs + #undef TARGET_EXPAND_TO_RTL_HOOK + #define TARGET_EXPAND_TO_RTL_HOOK tilegx_expand_to_rtl_hook + #undef TARGET_SHIFT_TRUNCATION_MASK #define TARGET_SHIFT_TRUNCATION_MASK tilegx_shift_truncation_mask diff -Nrcpad gcc-4.7.3/gcc/config/tilegx/tilegx.md gcc-4.7.4/gcc/config/tilegx/tilegx.md *** gcc-4.7.3/gcc/config/tilegx/tilegx.md Wed Mar 27 06:37:39 2013 --- gcc-4.7.4/gcc/config/tilegx/tilegx.md Sat Jan 25 22:44:41 2014 *************** *** 4924,4933 **** ;; Network intrinsics ! ;; Note the "pseudo" text is handled specially by the ! ;; asm_output_opcode routine. If the output is an empty string, the ! ;; instruction would bypass the asm_output_opcode routine, bypassing ! ;; the bundle handling code. (define_insn "tilegx_network_barrier" [(unspec_volatile:SI [(const_int 0)] UNSPEC_NETWORK_BARRIER)] "" --- 4924,4931 ---- ;; Network intrinsics ! ;; Note the this barrier is of type "nothing," which is deleted after ! ;; the final scheduling pass so that nothing is emitted for it. (define_insn "tilegx_network_barrier" [(unspec_volatile:SI [(const_int 0)] UNSPEC_NETWORK_BARRIER)] "" diff -Nrcpad gcc-4.7.3/gcc/config/tilepro/tilepro-c.c gcc-4.7.4/gcc/config/tilepro/tilepro-c.c *** gcc-4.7.3/gcc/config/tilepro/tilepro-c.c Tue Feb 14 10:02:21 2012 --- gcc-4.7.4/gcc/config/tilepro/tilepro-c.c Sat Jan 25 22:45:40 2014 *************** tilepro_cpu_cpp_builtins (struct cpp_rea *** 45,50 **** --- 45,55 ---- builtin_define ("__tile_chip__=1"); builtin_define ("__tile_chip_rev__=0"); + builtin_define ("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1"); + builtin_define ("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2"); + builtin_define ("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4"); + builtin_define ("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8"); + TILEPRO_CPU_CPP_ENDIAN_BUILTINS (); GNU_USER_TARGET_OS_CPP_BUILTINS (); } diff -Nrcpad gcc-4.7.3/gcc/config/tilepro/tilepro.c gcc-4.7.4/gcc/config/tilepro/tilepro.c *** gcc-4.7.3/gcc/config/tilepro/tilepro.c Tue Mar 26 06:27:55 2013 --- gcc-4.7.4/gcc/config/tilepro/tilepro.c Sat Jan 25 22:43:56 2014 *************** tilepro_expand_builtin (tree exp, *** 3167,3172 **** --- 3167,3178 ---- } if (!pat) return NULL_RTX; + + /* If we are generating a prefetch, tell the scheduler not to move + it around. */ + if (GET_CODE (pat) == PREFETCH) + PREFETCH_SCHEDULE_BARRIER_P (pat) = true; + emit_insn (pat); if (nonvoid) diff -Nrcpad gcc-4.7.3/gcc/config/tilepro/tilepro.md gcc-4.7.4/gcc/config/tilepro/tilepro.md *** gcc-4.7.3/gcc/config/tilepro/tilepro.md Tue Feb 14 10:02:21 2012 --- gcc-4.7.4/gcc/config/tilepro/tilepro.md Sat Jan 25 22:43:15 2014 *************** *** 796,802 **** (define_expand "ctzdi2" [(set (match_operand:DI 0 "register_operand" "") ! (ctz:DI (match_operand:DI 1 "reg_or_0_operand" "")))] "" { rtx lo, hi, ctz_lo, ctz_hi, ctz_hi_plus_32, result; --- 796,802 ---- (define_expand "ctzdi2" [(set (match_operand:DI 0 "register_operand" "") ! (ctz:DI (match_operand:DI 1 "register_operand" "")))] "" { rtx lo, hi, ctz_lo, ctz_hi, ctz_hi_plus_32, result; *************** *** 824,830 **** (define_expand "clzdi2" [(set (match_operand:DI 0 "register_operand" "") ! (clz:DI (match_operand:DI 1 "reg_or_0_operand" "")))] "" { rtx lo, hi, clz_lo, clz_hi, clz_lo_plus_32, result; --- 824,830 ---- (define_expand "clzdi2" [(set (match_operand:DI 0 "register_operand" "") ! (clz:DI (match_operand:DI 1 "register_operand" "")))] "" { rtx lo, hi, clz_lo, clz_hi, clz_lo_plus_32, result; *************** *** 852,858 **** (define_expand "ffsdi2" [(set (match_operand:DI 0 "register_operand" "") ! (ffs:DI (match_operand:DI 1 "reg_or_0_operand" "")))] "" { rtx lo, hi, ctz_lo, ctz_hi, ctz_hi_plus_32, ctz, ctz_plus_1,ctz_cond; --- 852,858 ---- (define_expand "ffsdi2" [(set (match_operand:DI 0 "register_operand" "") ! (ffs:DI (match_operand:DI 1 "register_operand" "")))] "" { rtx lo, hi, ctz_lo, ctz_hi, ctz_hi_plus_32, ctz, ctz_plus_1,ctz_cond; diff -Nrcpad gcc-4.7.3/gcc/config/v850/t-rtems gcc-4.7.4/gcc/config/v850/t-rtems *** gcc-4.7.3/gcc/config/v850/t-rtems Wed Jul 18 15:34:46 2012 --- gcc-4.7.4/gcc/config/v850/t-rtems Fri May 10 15:03:40 2013 *************** *** 1,3 **** --- 1,7 ---- # Custom multilibs for RTEMS + MULTILIB_OPTIONS = mv850/mv850e/mv850e2/mv850e2v3 + MULTILIB_DIRNAMES = v850 v850e v850e2 v850e2v3 + MULTILIB_MATCHES = mv850e=mv850e1 + MULTILIB_MATCHES += mv850e=mv850es diff -Nrcpad gcc-4.7.3/gcc/config.gcc gcc-4.7.4/gcc/config.gcc *** gcc-4.7.3/gcc/config.gcc Wed Mar 6 22:54:11 2013 --- gcc-4.7.4/gcc/config.gcc Thu Oct 3 00:52:23 2013 *************** hppa*64*-*-linux*) *** 1064,1070 **** tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h gnu-user.h linux.h \ glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \ pa/pa64-linux.h" - tmake_file="${tmake_file} pa/t-linux" gas=yes gnu_ld=yes need_64bit_hwint=yes ;; --- 1064,1069 ---- diff -Nrcpad gcc-4.7.3/gcc/configure gcc-4.7.4/gcc/configure *** gcc-4.7.3/gcc/configure Wed Feb 6 15:23:55 2013 --- gcc-4.7.4/gcc/configure Wed Feb 12 16:43:47 2014 *************** fi *** 24878,24883 **** --- 24878,24887 ---- # These two are used unconditionally by i386.[ch]; it is to be defined # to 1 if the feature is present, 0 otherwise. + as_ix86_gotoff_in_data_opt= + if test x$gas = xyes; then + as_ix86_gotoff_in_data_opt="--32" + fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for GOTOFF in data" >&5 $as_echo_n "checking assembler for GOTOFF in data... " >&6; } if test "${gcc_cv_as_ix86_gotoff_in_data+set}" = set; then : *************** fi *** 24894,24900 **** nop .data .long .L0@GOTOFF' > conftest.s ! if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 (eval $ac_try) 2>&5 ac_status=$? --- 24898,24904 ---- nop .data .long .L0@GOTOFF' > conftest.s ! if { ac_try='$gcc_cv_as $gcc_cv_as_flags $as_ix86_gotoff_in_data_opt -o conftest.o conftest.s >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 (eval $ac_try) 2>&5 ac_status=$? *************** if test x"$enable_plugin" = x"yes"; then *** 27309,27316 **** $as_echo_n "checking for exported symbols... " >&6; } if test "x$export_sym_check" != x; then echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c ! ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1 ! if $export_sym_check conftest | grep foobar > /dev/null; then : # No need to use a flag { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } --- 27313,27320 ---- $as_echo_n "checking for exported symbols... " >&6; } if test "x$export_sym_check" != x; then echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c ! ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest$ac_exeext > /dev/null 2>&1 ! if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then : # No need to use a flag { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } *************** $as_echo "yes" >&6; } *** 27319,27326 **** $as_echo "yes" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -rdynamic" >&5 $as_echo_n "checking for -rdynamic... " >&6; } ! ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1 ! if $export_sym_check conftest | grep foobar > /dev/null; then plugin_rdynamic=yes pluginlibs="-rdynamic" else --- 27323,27330 ---- $as_echo "yes" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -rdynamic" >&5 $as_echo_n "checking for -rdynamic... " >&6; } ! ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest$ac_exeext > /dev/null 2>&1 ! if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then plugin_rdynamic=yes pluginlibs="-rdynamic" else diff -Nrcpad gcc-4.7.3/gcc/configure.ac gcc-4.7.4/gcc/configure.ac *** gcc-4.7.3/gcc/configure.ac Wed Feb 6 15:23:55 2013 --- gcc-4.7.4/gcc/configure.ac Wed Feb 12 16:43:47 2014 *************** foo: nop *** 3740,3747 **** # These two are used unconditionally by i386.[ch]; it is to be defined # to 1 if the feature is present, 0 otherwise. gcc_GAS_CHECK_FEATURE([GOTOFF in data], ! gcc_cv_as_ix86_gotoff_in_data, [2,11,0],, [ .text .L0: nop --- 3740,3752 ---- # These two are used unconditionally by i386.[ch]; it is to be defined # to 1 if the feature is present, 0 otherwise. + as_ix86_gotoff_in_data_opt= + if test x$gas = xyes; then + as_ix86_gotoff_in_data_opt="--32" + fi gcc_GAS_CHECK_FEATURE([GOTOFF in data], ! gcc_cv_as_ix86_gotoff_in_data, [2,11,0], ! [$as_ix86_gotoff_in_data_opt], [ .text .L0: nop *************** if test x"$enable_plugin" = x"yes"; then *** 5153,5167 **** AC_MSG_CHECKING([for exported symbols]) if test "x$export_sym_check" != x; then echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c ! ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1 ! if $export_sym_check conftest | grep foobar > /dev/null; then : # No need to use a flag AC_MSG_RESULT([yes]) else AC_MSG_RESULT([yes]) AC_MSG_CHECKING([for -rdynamic]) ! ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1 ! if $export_sym_check conftest | grep foobar > /dev/null; then plugin_rdynamic=yes pluginlibs="-rdynamic" else --- 5158,5172 ---- AC_MSG_CHECKING([for exported symbols]) if test "x$export_sym_check" != x; then echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c ! ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest$ac_exeext > /dev/null 2>&1 ! if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then : # No need to use a flag AC_MSG_RESULT([yes]) else AC_MSG_RESULT([yes]) AC_MSG_CHECKING([for -rdynamic]) ! ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest$ac_exeext > /dev/null 2>&1 ! if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then plugin_rdynamic=yes pluginlibs="-rdynamic" else diff -Nrcpad gcc-4.7.3/gcc/coverage.c gcc-4.7.4/gcc/coverage.c *** gcc-4.7.3/gcc/coverage.c Wed Feb 8 13:27:31 2012 --- gcc-4.7.4/gcc/coverage.c Wed Jan 29 18:36:42 2014 *************** coverage_obj_init (void) *** 988,993 **** --- 988,996 ---- /* The function is not being emitted, remove from list. */ *fn_prev = fn->next; + if (functions_head == NULL) + return false; + for (ix = 0; ix != GCOV_COUNTERS; ix++) if ((1u << ix) & prg_ctr_mask) n_counters++; *************** coverage_init (const char *filename) *** 1099,1104 **** --- 1102,1110 ---- memcpy (da_file_name + prefix_len, filename, len); strcpy (da_file_name + prefix_len + len, GCOV_DATA_SUFFIX); + if (flag_branch_probabilities) + read_counts_file (); + /* Name of bbg file. */ if (flag_test_coverage && !flag_compare_debug) { *************** coverage_init (const char *filename) *** 1118,1126 **** gcov_write_unsigned (local_tick); } } - - if (flag_branch_probabilities) - read_counts_file (); } /* Performs file-level cleanup. Close graph file, generate coverage --- 1124,1129 ---- diff -Nrcpad gcc-4.7.3/gcc/cp/ChangeLog gcc-4.7.4/gcc/cp/ChangeLog *** gcc-4.7.3/gcc/cp/ChangeLog Thu Apr 11 07:57:20 2013 --- gcc-4.7.4/gcc/cp/ChangeLog Thu Jun 12 12:08:26 2014 *************** *** 1,3 **** --- 1,143 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + + 2014-05-30 Jason Merrill + + PR c++/56947 + * pt.c (instantiate_decl): Don't defer instantiation of a nested + function. + + 2014-05-07 Jakub Jelinek + + Backported from mainline + 2013-11-28 Jakub Jelinek + + PR c++/59297 + * semantics.c (finish_omp_atomic): Call finish_expr_stmt + rather than add_stmt. + + 2013-09-09 Jakub Jelinek + + PR c++/58325 + * init.c (build_vec_delete): Call mark_rvalue_use on base. + + 2013-05-31 Jason Merrill + + PR c++/56930 + * semantics.c (potential_constant_expression_1): Handle OMP_ATOMIC*. + + 2014-02-26 Fabien Chêne + + PR c++/37140 + * parser.c (cp_parser_nonclass_name): Call strip_using_decl and + move the code handling dependent USING_DECLs... + * name-lookup.c (strip_using_decl): ...Here. + + 2014-02-21 Jason Merrill + + PR c++/60248 + * mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL. + + 2014-02-20 Kai Tietz + + PR c++/58873 + * parser.c (cp_parser_functional_cast): Treat NULL_TREE + valued type argument as error_mark_node. + + PR c++/58835 + * semantics.c (finish_fname): Handle error_mark_node. + + 2014-02-19 Jason Merrill + + PR c++/60046 + * pt.c (maybe_instantiate_noexcept): Don't instantiate exception + spec from template context. + + 2014-01-31 Jason Merrill + + PR c++/57043 + * pt.c (fn_type_unification): Don't do DEDUCE_EXACT check + during partial ordering. + + 2014-01-27 Jason Merrill + + PR c++/54652 + * decl.c (duplicate_decls): Always use oldtype for TYPE_DECL. + + PR c++/58639 + * call.c (build_aggr_conv): Reject value-initialization of reference. + + 2013-10-25 Tom de Vries + + PR c++/58282 + * except.c (build_must_not_throw_expr): Handle + flag_exceptions. + + 2013-10-16 Paolo Carlini + + PR c++/58633 + * parser.c (cp_parser_pseudo_destructor_name): Revert r174385 changes. + + 2013-09-13 Jason Merrill + + PR c++/58273 + * pt.c (any_type_dependent_elements_p): Actually check for + type-dependence, not value-dependence. + + 2013-08-20 Jason Merrill + + PR c++/58119 + * cp-tree.h (WILDCARD_TYPE_P): Split out from... + (MAYBE_CLASS_TYPE_P): ...here. + * cvt.c (build_expr_type_conversion): Don't complain about a + template that can't match the desired type category. + + 2012-12-03 Paolo Carlini + + PR c++/54170 + * cvt.c (cp_convert_to_pointer): Don't discard side-effects from + expressions of nullptr_t. + * typeck.c (build_ptrmemfunc): Likewise. + + 2013-07-09 Jason Merrill + + PR c++/57437 + * typeck.c (check_return_expr): Lambda proxies aren't eligible + for nrv or return by move. + + PR c++/57545 + * pt.c (convert_nontype_argument) [INTEGER_CST]: Force the + argument to have the exact type of the parameter. + + PR c++/57551 + * semantics.c (cxx_eval_indirect_ref): Don't try to look through + a POINTER_PLUS_EXPR for type punning diagnostic. + + PR c++/57831 + * pt.c (tsubst_copy): Handle USING_DECL. + + 2013-05-20 Jason Merrill + + PR c++/57325 + * tree.c (build_cplus_array_type): Copy layout info if element + type is complete. + + 2013-05-09 Jason Merrill + + PR c++/57047 + * semantics.c (cxx_fold_indirect_ref): Fix thinko. + + 2013-04-21 Eric Botcazou + + * parser.c (cp_parser_late_return_type_opt): Fix C++ism. + + 2013-04-15 Jason Merrill + + PR c++/56388 + * semantics.c (insert_capture_proxy): Just use index 1 in the + stmt_list_stack. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/gcc/cp/call.c gcc-4.7.4/gcc/cp/call.c *** gcc-4.7.3/gcc/cp/call.c Wed Jan 23 02:48:00 2013 --- gcc-4.7.4/gcc/cp/call.c Tue Jan 28 13:40:06 2014 *************** build_aggr_conv (tree type, tree ctor, i *** 894,899 **** --- 894,902 ---- if (i < CONSTRUCTOR_NELTS (ctor)) val = CONSTRUCTOR_ELT (ctor, i)->value; + else if (TREE_CODE (ftype) == REFERENCE_TYPE) + /* Value-initialization of reference is ill-formed. */ + return NULL; else { if (empty_ctor == NULL_TREE) diff -Nrcpad gcc-4.7.3/gcc/cp/cp-tree.h gcc-4.7.4/gcc/cp/cp-tree.h *** gcc-4.7.3/gcc/cp/cp-tree.h Sat Feb 9 20:47:24 2013 --- gcc-4.7.4/gcc/cp/cp-tree.h Tue Aug 20 12:59:24 2013 *************** enum languages { lang_c, lang_cplusplus, *** 1191,1207 **** /* The _DECL for this _TYPE. */ #define TYPE_MAIN_DECL(NODE) (TYPE_STUB_DECL (TYPE_MAIN_VARIANT (NODE))) ! /* Nonzero if T is a class (or struct or union) type. Also nonzero ! for template type parameters, typename types, and instantiated ! template template parameters. Keep these checks in ascending code ! order. */ ! #define MAYBE_CLASS_TYPE_P(T) \ (TREE_CODE (T) == TEMPLATE_TYPE_PARM \ || TREE_CODE (T) == TYPENAME_TYPE \ || TREE_CODE (T) == TYPEOF_TYPE \ || TREE_CODE (T) == BOUND_TEMPLATE_TEMPLATE_PARM \ ! || TREE_CODE (T) == DECLTYPE_TYPE \ ! || CLASS_TYPE_P (T)) /* Set CLASS_TYPE_P for T to VAL. T must be a class, struct, or union type. */ --- 1191,1210 ---- /* The _DECL for this _TYPE. */ #define TYPE_MAIN_DECL(NODE) (TYPE_STUB_DECL (TYPE_MAIN_VARIANT (NODE))) ! /* Nonzero if T is a type that could resolve to any kind of concrete type ! at instantiation time. */ ! #define WILDCARD_TYPE_P(T) \ (TREE_CODE (T) == TEMPLATE_TYPE_PARM \ || TREE_CODE (T) == TYPENAME_TYPE \ || TREE_CODE (T) == TYPEOF_TYPE \ || TREE_CODE (T) == BOUND_TEMPLATE_TEMPLATE_PARM \ ! || TREE_CODE (T) == DECLTYPE_TYPE) ! ! /* Nonzero if T is a class (or struct or union) type. Also nonzero ! for template type parameters, typename types, and instantiated ! template template parameters. Keep these checks in ascending code ! order. */ ! #define MAYBE_CLASS_TYPE_P(T) (WILDCARD_TYPE_P (T) || CLASS_TYPE_P (T)) /* Set CLASS_TYPE_P for T to VAL. T must be a class, struct, or union type. */ diff -Nrcpad gcc-4.7.3/gcc/cp/cvt.c gcc-4.7.4/gcc/cp/cvt.c *** gcc-4.7.3/gcc/cp/cvt.c Mon Feb 6 19:52:43 2012 --- gcc-4.7.4/gcc/cp/cvt.c Tue Aug 20 12:59:24 2013 *************** cp_convert_to_pointer (tree type, tree e *** 198,203 **** --- 198,205 ---- if (null_ptr_cst_p (expr)) { + tree val; + if (c_inhibit_evaluation_warnings == 0 && !NULLPTR_TYPE_P (TREE_TYPE (expr))) warning (OPT_Wzero_as_null_pointer_constant, *************** cp_convert_to_pointer (tree type, tree e *** 207,222 **** return build_ptrmemfunc (TYPE_PTRMEMFUNC_FN_TYPE (type), expr, 0, /*c_cast_p=*/false, tf_warning_or_error); ! if (TYPE_PTRMEM_P (type)) ! { ! /* A NULL pointer-to-member is represented by -1, not by ! zero. */ ! expr = build_int_cst_type (type, -1); ! } ! else ! expr = build_int_cst (type, 0); ! return expr; } else if (TYPE_PTR_TO_MEMBER_P (type) && INTEGRAL_CODE_P (form)) { --- 209,222 ---- return build_ptrmemfunc (TYPE_PTRMEMFUNC_FN_TYPE (type), expr, 0, /*c_cast_p=*/false, tf_warning_or_error); ! /* A NULL pointer-to-data-member is represented by -1, not by ! zero. */ ! val = (TYPE_PTRMEM_P (type) ! ? build_int_cst_type (type, -1) ! : build_int_cst (type, 0)); ! return (TREE_SIDE_EFFECTS (expr) ! ? build2 (COMPOUND_EXPR, type, expr, val) : val); } else if (TYPE_PTR_TO_MEMBER_P (type) && INTEGRAL_CODE_P (form)) { *************** build_expr_type_conversion (int desires, *** 1539,1555 **** if (DECL_NONCONVERTING_P (cand)) continue; - if (TREE_CODE (cand) == TEMPLATE_DECL) - { - if (complain) - { - error ("ambiguous default type conversion from %qT", - basetype); - error (" candidate conversions include %qD", cand); - } - return error_mark_node; - } - candidate = non_reference (TREE_TYPE (TREE_TYPE (cand))); switch (TREE_CODE (candidate)) --- 1539,1544 ---- *************** build_expr_type_conversion (int desires, *** 1583,1593 **** --- 1572,1594 ---- break; default: + /* A wildcard could be instantiated to match any desired + type, but we can't deduce the template argument. */ + if (WILDCARD_TYPE_P (candidate)) + win = true; break; } if (win) { + if (TREE_CODE (cand) == TEMPLATE_DECL) + { + if (complain) + error ("default type conversion can't deduce template" + " argument for %qD", cand); + return error_mark_node; + } + if (winner) { if (complain) diff -Nrcpad gcc-4.7.3/gcc/cp/decl.c gcc-4.7.4/gcc/cp/decl.c *** gcc-4.7.3/gcc/cp/decl.c Thu Mar 14 17:34:55 2013 --- gcc-4.7.4/gcc/cp/decl.c Tue Jan 28 13:51:15 2014 *************** duplicate_decls (tree newdecl, tree oldd *** 1815,1823 **** /* Merge the data types specified in the two decls. */ newtype = merge_types (TREE_TYPE (newdecl), TREE_TYPE (olddecl)); ! /* If merge_types produces a non-typedef type, just use the old type. */ ! if (TREE_CODE (newdecl) == TYPE_DECL ! && newtype == DECL_ORIGINAL_TYPE (newdecl)) newtype = oldtype; if (TREE_CODE (newdecl) == VAR_DECL) --- 1815,1823 ---- /* Merge the data types specified in the two decls. */ newtype = merge_types (TREE_TYPE (newdecl), TREE_TYPE (olddecl)); ! /* For typedefs use the old type, as the new type's DECL_NAME points ! at newdecl, which will be ggc_freed. */ ! if (TREE_CODE (newdecl) == TYPE_DECL) newtype = oldtype; if (TREE_CODE (newdecl) == VAR_DECL) diff -Nrcpad gcc-4.7.3/gcc/cp/except.c gcc-4.7.4/gcc/cp/except.c *** gcc-4.7.3/gcc/cp/except.c Fri Feb 1 14:05:42 2013 --- gcc-4.7.4/gcc/cp/except.c Fri Oct 25 14:20:06 2013 *************** build_must_not_throw_expr (tree body, tr *** 383,388 **** --- 383,391 ---- { tree type = body ? TREE_TYPE (body) : void_type_node; + if (!flag_exceptions) + return body; + if (cond && !value_dependent_expression_p (cond)) { cond = cxx_constant_value (cond); diff -Nrcpad gcc-4.7.3/gcc/cp/init.c gcc-4.7.4/gcc/cp/init.c *** gcc-4.7.3/gcc/cp/init.c Thu Mar 14 16:12:37 2013 --- gcc-4.7.4/gcc/cp/init.c Wed May 7 16:03:49 2014 *************** build_vec_delete (tree base, tree maxind *** 3915,3920 **** --- 3915,3921 ---- tree cookie_addr; tree size_ptr_type = build_pointer_type (sizetype); + base = mark_rvalue_use (base); if (TREE_SIDE_EFFECTS (base)) { base_init = get_target_expr (base); diff -Nrcpad gcc-4.7.3/gcc/cp/mangle.c gcc-4.7.4/gcc/cp/mangle.c *** gcc-4.7.3/gcc/cp/mangle.c Mon Aug 6 14:34:27 2012 --- gcc-4.7.4/gcc/cp/mangle.c Fri Feb 21 15:01:54 2014 *************** mangle_decl (const tree decl) *** 3378,3383 **** --- 3378,3384 ---- if (G.need_abi_warning /* Don't do this for a fake symbol we aren't going to emit anyway. */ + && TREE_CODE (decl) != TYPE_DECL && !DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (decl) && !DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (decl)) { diff -Nrcpad gcc-4.7.3/gcc/cp/name-lookup.c gcc-4.7.4/gcc/cp/name-lookup.c *** gcc-4.7.3/gcc/cp/name-lookup.c Fri Jan 4 16:51:02 2013 --- gcc-4.7.4/gcc/cp/name-lookup.c Wed Feb 26 21:16:15 2014 *************** pop_binding (tree id, tree decl) *** 399,405 **** } } ! /* Strip non dependent using declarations. */ tree strip_using_decl (tree decl) --- 399,406 ---- } } ! /* Strip non dependent using declarations. If DECL is dependent, ! surreptitiously create a typename_type and return it. */ tree strip_using_decl (tree decl) *************** strip_using_decl (tree decl) *** 409,414 **** --- 410,432 ---- while (TREE_CODE (decl) == USING_DECL && !DECL_DEPENDENT_P (decl)) decl = USING_DECL_DECLS (decl); + + if (TREE_CODE (decl) == USING_DECL && DECL_DEPENDENT_P (decl) + && USING_DECL_TYPENAME_P (decl)) + { + /* We have found a type introduced by a using + declaration at class scope that refers to a dependent + type. + + using typename :: [opt] nested-name-specifier unqualified-id ; + */ + decl = make_typename_type (TREE_TYPE (decl), + DECL_NAME (decl), + typename_type, tf_error); + if (decl != error_mark_node) + decl = TYPE_NAME (decl); + } + return decl; } diff -Nrcpad gcc-4.7.3/gcc/cp/parser.c gcc-4.7.4/gcc/cp/parser.c *** gcc-4.7.3/gcc/cp/parser.c Mon Apr 1 21:19:03 2013 --- gcc-4.7.4/gcc/cp/parser.c Wed Feb 26 21:16:15 2014 *************** cp_parser_pseudo_destructor_name (cp_par *** 6317,6326 **** /* Look for the `~'. */ cp_parser_require (parser, CPP_COMPL, RT_COMPL); - /* Once we see the ~, this has to be a pseudo-destructor. */ - if (!processing_template_decl && !cp_parser_error_occurred (parser)) - cp_parser_commit_to_tentative_parse (parser); - /* Look for the type-name again. We are not responsible for checking that it matches the first type-name. */ *type = cp_parser_nonclass_name (parser); --- 6317,6322 ---- *************** cp_parser_nonclass_name (cp_parser* pars *** 13850,13874 **** /* Look up the type-name. */ type_decl = cp_parser_lookup_name_simple (parser, identifier, token->location); ! if (TREE_CODE (type_decl) == USING_DECL) ! { ! if (!DECL_DEPENDENT_P (type_decl)) ! type_decl = strip_using_decl (type_decl); ! else if (USING_DECL_TYPENAME_P (type_decl)) ! { ! /* We have found a type introduced by a using ! declaration at class scope that refers to a dependent ! type. ! ! using typename :: [opt] nested-name-specifier unqualified-id ; ! */ ! type_decl = make_typename_type (TREE_TYPE (type_decl), ! DECL_NAME (type_decl), ! typename_type, tf_error); ! if (type_decl != error_mark_node) ! type_decl = TYPE_NAME (type_decl); ! } ! } if (TREE_CODE (type_decl) != TYPE_DECL && (objc_is_id (identifier) || objc_is_class_name (identifier))) --- 13846,13852 ---- /* Look up the type-name. */ type_decl = cp_parser_lookup_name_simple (parser, identifier, token->location); ! type_decl = strip_using_decl (type_decl); if (TREE_CODE (type_decl) != TYPE_DECL && (objc_is_id (identifier) || objc_is_class_name (identifier))) *************** static tree *** 16691,16697 **** cp_parser_late_return_type_opt (cp_parser* parser, cp_cv_quals quals) { cp_token *token; ! tree type; /* Peek at the next token. */ token = cp_lexer_peek_token (parser->lexer); --- 16669,16675 ---- cp_parser_late_return_type_opt (cp_parser* parser, cp_cv_quals quals) { cp_token *token; ! tree type, save_ccp, save_ccr; /* Peek at the next token. */ token = cp_lexer_peek_token (parser->lexer); *************** cp_parser_late_return_type_opt (cp_parse *** 16702,16709 **** /* Consume the ->. */ cp_lexer_consume_token (parser->lexer); ! tree save_ccp = current_class_ptr; ! tree save_ccr = current_class_ref; if (quals >= 0) { /* DR 1207: 'this' is in scope in the trailing return type. */ --- 16680,16687 ---- /* Consume the ->. */ cp_lexer_consume_token (parser->lexer); ! save_ccp = current_class_ptr; ! save_ccr = current_class_ref; if (quals >= 0) { /* DR 1207: 'this' is in scope in the trailing return type. */ *************** cp_parser_functional_cast (cp_parser* pa *** 21423,21428 **** --- 21401,21409 ---- tree cast; bool nonconst_p; + if (!type) + type = error_mark_node; + if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE)) { maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS); diff -Nrcpad gcc-4.7.3/gcc/cp/pt.c gcc-4.7.4/gcc/cp/pt.c *** gcc-4.7.3/gcc/cp/pt.c Fri Mar 29 18:59:35 2013 --- gcc-4.7.4/gcc/cp/pt.c Fri May 30 15:09:29 2014 *************** convert_nontype_argument (tree type, tre *** 5521,5526 **** --- 5521,5530 ---- else return NULL_TREE; } + + /* Avoid typedef problems. */ + if (TREE_TYPE (expr) != type) + expr = fold_convert (type, expr); } /* [temp.arg.nontype]/5, bullet 2 *************** tsubst_copy (tree t, tree args, tsubst_f *** 12214,12219 **** --- 12218,12226 ---- case TYPE_DECL: return tsubst (t, args, complain, in_decl); + case USING_DECL: + t = DECL_NAME (t); + /* Fall through. */ case IDENTIFIER_NODE: if (IDENTIFIER_TYPENAME_P (t)) { *************** fn_type_unification (tree fn, *** 14706,14713 **** /* If we're looking for an exact match, check that what we got is indeed an exact match. It might not be if some template ! parameters are used in non-deduced contexts. */ ! if (strict == DEDUCE_EXACT) { unsigned int i; --- 14713,14723 ---- /* If we're looking for an exact match, check that what we got is indeed an exact match. It might not be if some template ! parameters are used in non-deduced contexts. But don't check ! for an exact match if we have dependent template arguments; ! in that case we're doing partial ordering, and we already know ! that we have two candidates that will provide the actual type. */ ! if (strict == DEDUCE_EXACT && !any_dependent_template_arguments_p (targs)) { unsigned int i; *************** maybe_instantiate_noexcept (tree fn) *** 18083,18088 **** --- 18093,18102 ---- { tree fntype, spec, noex, clone; + /* Don't instantiate a noexcept-specification from template context. */ + if (processing_template_decl) + return; + if (DECL_CLONED_FUNCTION_P (fn)) fn = DECL_CLONED_FUNCTION (fn); fntype = TREE_TYPE (fn); *************** instantiate_decl (tree d, int defer_ok, *** 18177,18182 **** --- 18191,18197 ---- if the variable has a constant value the referring expression can take advantage of that fact. */ if (TREE_CODE (d) == VAR_DECL + || decl_function_context (d) || DECL_DECLARED_CONSTEXPR_P (d)) defer_ok = 0; *************** bool *** 19545,19551 **** any_type_dependent_elements_p (const_tree list) { for (; list; list = TREE_CHAIN (list)) ! if (value_dependent_expression_p (TREE_VALUE (list))) return true; return false; --- 19560,19566 ---- any_type_dependent_elements_p (const_tree list) { for (; list; list = TREE_CHAIN (list)) ! if (type_dependent_expression_p (TREE_VALUE (list))) return true; return false; diff -Nrcpad gcc-4.7.3/gcc/cp/semantics.c gcc-4.7.4/gcc/cp/semantics.c *** gcc-4.7.3/gcc/cp/semantics.c Sat Mar 23 16:55:50 2013 --- gcc-4.7.4/gcc/cp/semantics.c Wed May 7 16:09:41 2014 *************** finish_fname (tree id) *** 2430,2436 **** tree decl; decl = fname_decl (input_location, C_RID_CODE (id), id); ! if (processing_template_decl && current_function_decl) decl = DECL_NAME (decl); return decl; } --- 2430,2437 ---- tree decl; decl = fname_decl (input_location, C_RID_CODE (id), id); ! if (processing_template_decl && current_function_decl ! && decl != error_mark_node) decl = DECL_NAME (decl); return decl; } *************** finish_omp_atomic (enum tree_code code, *** 4976,4982 **** } stmt = build2 (OMP_ATOMIC, void_type_node, integer_zero_node, stmt); } ! add_stmt (stmt); } void --- 4977,4983 ---- } stmt = build2 (OMP_ATOMIC, void_type_node, integer_zero_node, stmt); } ! finish_expr_stmt (stmt); } void *************** cxx_fold_indirect_ref (location_t loc, t *** 7412,7426 **** } } } ! /* *(foo *)fooarrptreturn> (*fooarrptr)[0] */ else if (TREE_CODE (TREE_TYPE (subtype)) == ARRAY_TYPE && (same_type_ignoring_top_level_qualifiers_p (type, TREE_TYPE (TREE_TYPE (subtype))))) { tree type_domain; tree min_val = size_zero_node; ! sub = cxx_fold_indirect_ref (loc, TREE_TYPE (subtype), sub, NULL); ! if (!sub) sub = build1_loc (loc, INDIRECT_REF, TREE_TYPE (subtype), sub); type_domain = TYPE_DOMAIN (TREE_TYPE (sub)); if (type_domain && TYPE_MIN_VALUE (type_domain)) --- 7413,7429 ---- } } } ! /* *(foo *)fooarrptr => (*fooarrptr)[0] */ else if (TREE_CODE (TREE_TYPE (subtype)) == ARRAY_TYPE && (same_type_ignoring_top_level_qualifiers_p (type, TREE_TYPE (TREE_TYPE (subtype))))) { tree type_domain; tree min_val = size_zero_node; ! tree newsub = cxx_fold_indirect_ref (loc, TREE_TYPE (subtype), sub, NULL); ! if (newsub) ! sub = newsub; ! else sub = build1_loc (loc, INDIRECT_REF, TREE_TYPE (subtype), sub); type_domain = TYPE_DOMAIN (TREE_TYPE (sub)); if (type_domain && TYPE_MIN_VALUE (type_domain)) *************** cxx_eval_indirect_ref (const constexpr_c *** 7457,7467 **** { tree sub = op0; STRIP_NOPS (sub); - if (TREE_CODE (sub) == POINTER_PLUS_EXPR) - { - sub = TREE_OPERAND (sub, 0); - STRIP_NOPS (sub); - } if (TREE_CODE (sub) == ADDR_EXPR) { /* We couldn't fold to a constant value. Make sure it's not --- 7460,7465 ---- *************** potential_constant_expression_1 (tree t, *** 8596,8601 **** --- 8594,8605 ---- } return false; + case OMP_ATOMIC: + case OMP_ATOMIC_READ: + case OMP_ATOMIC_CAPTURE_OLD: + case OMP_ATOMIC_CAPTURE_NEW: + return false; + default: sorry ("unexpected AST of kind %s", tree_code_name[TREE_CODE (t)]); gcc_unreachable(); *************** void *** 8959,8971 **** insert_capture_proxy (tree var) { cp_binding_level *b; - int skip; tree stmt_list; /* Put the capture proxy in the extra body block so that it won't clash with a later local variable. */ b = current_binding_level; ! for (skip = 0; ; ++skip) { cp_binding_level *n = b->level_chain; if (n->kind == sk_function_parms) --- 8963,8974 ---- insert_capture_proxy (tree var) { cp_binding_level *b; tree stmt_list; /* Put the capture proxy in the extra body block so that it won't clash with a later local variable. */ b = current_binding_level; ! for (;;) { cp_binding_level *n = b->level_chain; if (n->kind == sk_function_parms) *************** insert_capture_proxy (tree var) *** 8976,8983 **** /* And put a DECL_EXPR in the STATEMENT_LIST for the same block. */ var = build_stmt (DECL_SOURCE_LOCATION (var), DECL_EXPR, var); ! stmt_list = VEC_index (tree, stmt_list_stack, ! VEC_length (tree, stmt_list_stack) - 1 - skip); gcc_assert (stmt_list); append_to_statement_list_force (var, &stmt_list); } --- 8979,8985 ---- /* And put a DECL_EXPR in the STATEMENT_LIST for the same block. */ var = build_stmt (DECL_SOURCE_LOCATION (var), DECL_EXPR, var); ! stmt_list = VEC_index (tree, stmt_list_stack, 1); gcc_assert (stmt_list); append_to_statement_list_force (var, &stmt_list); } diff -Nrcpad gcc-4.7.3/gcc/cp/tree.c gcc-4.7.4/gcc/cp/tree.c *** gcc-4.7.3/gcc/cp/tree.c Wed Apr 3 19:44:02 2013 --- gcc-4.7.4/gcc/cp/tree.c Mon May 20 17:01:01 2013 *************** build_cplus_array_type (tree elt_type, t *** 816,825 **** if (TYPE_MAIN_VARIANT (t) != m) { ! if (COMPLETE_TYPE_P (t) && !COMPLETE_TYPE_P (m)) { /* m was built before the element type was complete, so we ! also need to copy the layout info from t. */ tree size = TYPE_SIZE (t); tree size_unit = TYPE_SIZE_UNIT (t); unsigned int align = TYPE_ALIGN (t); --- 816,827 ---- if (TYPE_MAIN_VARIANT (t) != m) { ! if (COMPLETE_TYPE_P (TREE_TYPE (t)) && !COMPLETE_TYPE_P (m)) { /* m was built before the element type was complete, so we ! also need to copy the layout info from t. We might ! end up doing this multiple times if t is an array of ! unknown bound. */ tree size = TYPE_SIZE (t); tree size_unit = TYPE_SIZE_UNIT (t); unsigned int align = TYPE_ALIGN (t); diff -Nrcpad gcc-4.7.3/gcc/cp/typeck.c gcc-4.7.4/gcc/cp/typeck.c *** gcc-4.7.3/gcc/cp/typeck.c Fri Jan 25 20:26:46 2013 --- gcc-4.7.4/gcc/cp/typeck.c Wed Jul 10 05:53:45 2013 *************** build_ptrmemfunc (tree type, tree pfn, i *** 7246,7252 **** /* Handle null pointer to member function conversions. */ if (null_ptr_cst_p (pfn)) { ! pfn = build_c_cast (input_location, type, nullptr_node); return build_ptrmemfunc1 (to_type, integer_zero_node, pfn); --- 7246,7252 ---- /* Handle null pointer to member function conversions. */ if (null_ptr_cst_p (pfn)) { ! pfn = build_c_cast (input_location, type, pfn); return build_ptrmemfunc1 (to_type, integer_zero_node, pfn); *************** check_return_expr (tree retval, bool *no *** 7929,7935 **** && TREE_CODE (retval) == VAR_DECL && DECL_CONTEXT (retval) == current_function_decl && ! TREE_STATIC (retval) ! && ! DECL_ANON_UNION_VAR_P (retval) && (DECL_ALIGN (retval) >= DECL_ALIGN (DECL_RESULT (current_function_decl))) /* The cv-unqualified type of the returned value must be the --- 7929,7936 ---- && TREE_CODE (retval) == VAR_DECL && DECL_CONTEXT (retval) == current_function_decl && ! TREE_STATIC (retval) ! /* And not a lambda or anonymous union proxy. */ ! && !DECL_HAS_VALUE_EXPR_P (retval) && (DECL_ALIGN (retval) >= DECL_ALIGN (DECL_RESULT (current_function_decl))) /* The cv-unqualified type of the returned value must be the *************** check_return_expr (tree retval, bool *no *** 7978,7984 **** Note that these conditions are similar to, but not as strict as, the conditions for the named return value optimization. */ if ((cxx_dialect != cxx98) ! && (TREE_CODE (retval) == VAR_DECL || TREE_CODE (retval) == PARM_DECL) && DECL_CONTEXT (retval) == current_function_decl && !TREE_STATIC (retval) --- 7979,7986 ---- Note that these conditions are similar to, but not as strict as, the conditions for the named return value optimization. */ if ((cxx_dialect != cxx98) ! && ((TREE_CODE (retval) == VAR_DECL ! && !DECL_HAS_VALUE_EXPR_P (retval)) || TREE_CODE (retval) == PARM_DECL) && DECL_CONTEXT (retval) == current_function_decl && !TREE_STATIC (retval) diff -Nrcpad gcc-4.7.3/gcc/doc/aot-compile.1 gcc-4.7.4/gcc/doc/aot-compile.1 *** gcc-4.7.3/gcc/doc/aot-compile.1 Thu Apr 11 08:57:48 2013 --- gcc-4.7.4/gcc/doc/aot-compile.1 Thu Jun 12 14:09:29 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "AOT-COMPILE 1" ! .TH AOT-COMPILE 1 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "AOT-COMPILE 1" ! .TH AOT-COMPILE 1 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/gcc/doc/cpp.1 gcc-4.7.4/gcc/doc/cpp.1 *** gcc-4.7.3/gcc/doc/cpp.1 Thu Apr 11 08:08:33 2013 --- gcc-4.7.4/gcc/doc/cpp.1 Thu Jun 12 13:03:28 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "CPP 1" ! .TH CPP 1 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "CPP 1" ! .TH CPP 1 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/gcc/doc/cpp.info gcc-4.7.4/gcc/doc/cpp.info *** gcc-4.7.3/gcc/doc/cpp.info Thu Apr 11 08:57:38 2013 --- gcc-4.7.4/gcc/doc/cpp.info Thu Jun 12 14:09:18 2014 *************** *** 1,5 **** This is doc/cpp.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/doc/cpp.texi. Copyright (C) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, --- 1,5 ---- This is doc/cpp.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/doc/cpp.texi. Copyright (C) 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, diff -Nrcpad gcc-4.7.3/gcc/doc/cppinternals.info gcc-4.7.4/gcc/doc/cppinternals.info *** gcc-4.7.3/gcc/doc/cppinternals.info Thu Apr 11 08:57:45 2013 --- gcc-4.7.4/gcc/doc/cppinternals.info Thu Jun 12 14:09:26 2014 *************** *** 1,5 **** This is doc/cppinternals.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/doc/cppinternals.texi. INFO-DIR-SECTION Software development START-INFO-DIR-ENTRY --- 1,5 ---- This is doc/cppinternals.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/doc/cppinternals.texi. INFO-DIR-SECTION Software development START-INFO-DIR-ENTRY diff -Nrcpad gcc-4.7.3/gcc/doc/extend.texi gcc-4.7.4/gcc/doc/extend.texi *** gcc-4.7.3/gcc/doc/extend.texi Sat Mar 30 11:10:22 2013 --- gcc-4.7.4/gcc/doc/extend.texi Wed May 28 08:50:18 2014 *************** goto *(&&foo + array[i]); *** 375,380 **** --- 375,382 ---- This is more friendly to code living in shared libraries, as it reduces the number of dynamic relocations that are needed, and by consequence, allows the data to be read-only. + This alternative with label differences is not supported for the AVR target, + please use the first approach for AVR programs. The @code{&&foo} expressions for the same label might have different values if the containing function is inlined or cloned. If a program diff -Nrcpad gcc-4.7.3/gcc/doc/fsf-funding.7 gcc-4.7.4/gcc/doc/fsf-funding.7 *** gcc-4.7.3/gcc/doc/fsf-funding.7 Thu Apr 11 08:08:36 2013 --- gcc-4.7.4/gcc/doc/fsf-funding.7 Thu Jun 12 13:03:31 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "FSF-FUNDING 7" ! .TH FSF-FUNDING 7 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "FSF-FUNDING 7" ! .TH FSF-FUNDING 7 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/gcc/doc/g++.1 gcc-4.7.4/gcc/doc/g++.1 *** gcc-4.7.3/gcc/doc/g++.1 Thu Apr 11 08:57:48 2013 --- gcc-4.7.4/gcc/doc/g++.1 Thu Jun 12 14:09:29 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GCC 1" ! .TH GCC 1 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GCC 1" ! .TH GCC 1 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l *************** Define an argument called \fIkey\fR with *** 1432,1439 **** for the plugin called \fIname\fR. .IP "\fB\-fdump\-ada\-spec\fR[\fB\-slim\fR]" 4 .IX Item "-fdump-ada-spec[-slim]" ! For C and \*(C+ source and include files, generate corresponding Ada ! specs. .IP "\fB\-fdump\-go\-spec=\fR\fIfile\fR" 4 .IX Item "-fdump-go-spec=file" For input files in any language, generate corresponding Go --- 1432,1438 ---- for the plugin called \fIname\fR. .IP "\fB\-fdump\-ada\-spec\fR[\fB\-slim\fR]" 4 .IX Item "-fdump-ada-spec[-slim]" ! For C and \*(C+ source and include files, generate corresponding Ada specs. .IP "\fB\-fdump\-go\-spec=\fR\fIfile\fR" 4 .IX Item "-fdump-go-spec=file" For input files in any language, generate corresponding Go *************** order. That is, a byte order of the for *** 9901,9911 **** option should only be used if you require compatibility with code for big-endian \s-1ARM\s0 processors generated by versions of the compiler prior to 2.8. This option is now deprecated. ! .IP "\fB\-mcpu=\fR\fIname\fR" 4 ! .IX Item "-mcpu=name" ! This specifies the name of the target \s-1ARM\s0 processor. \s-1GCC\s0 uses this name ! to determine what kind of instructions it can emit when generating ! assembly code. Permissible names are: \fBarm2\fR, \fBarm250\fR, \&\fBarm3\fR, \fBarm6\fR, \fBarm60\fR, \fBarm600\fR, \fBarm610\fR, \&\fBarm620\fR, \fBarm7\fR, \fBarm7m\fR, \fBarm7d\fR, \fBarm7dm\fR, \&\fBarm7di\fR, \fBarm7dmi\fR, \fBarm70\fR, \fBarm700\fR, --- 9900,9929 ---- option should only be used if you require compatibility with code for big-endian \s-1ARM\s0 processors generated by versions of the compiler prior to 2.8. This option is now deprecated. ! .IP "\fB\-march=\fR\fIname\fR" 4 ! .IX Item "-march=name" ! This specifies the name of the target \s-1ARM\s0 architecture. \s-1GCC\s0 uses this ! name to determine what kind of instructions it can emit when generating ! assembly code. This option can be used in conjunction with or instead ! of the \fB\-mcpu=\fR option. Permissible names are: \fBarmv2\fR, ! \&\fBarmv2a\fR, \fBarmv3\fR, \fBarmv3m\fR, \fBarmv4\fR, \fBarmv4t\fR, ! \&\fBarmv5\fR, \fBarmv5t\fR, \fBarmv5e\fR, \fBarmv5te\fR, ! \&\fBarmv6\fR, \fBarmv6j\fR, ! \&\fBarmv6t2\fR, \fBarmv6z\fR, \fBarmv6zk\fR, \fBarmv6\-m\fR, ! \&\fBarmv7\fR, \fBarmv7\-a\fR, \fBarmv7\-r\fR, \fBarmv7\-m\fR, \fBarmv7e\-m\fR, ! \&\fBiwmmxt\fR, \fBiwmmxt2\fR, \fBep9312\fR. ! .Sp ! \&\fB\-march=native\fR causes the compiler to auto-detect the architecture ! of the build computer. At present, this feature is only supported on ! Linux, and not all architectures are recognized. If the auto-detect is ! unsuccessful the option has no effect. ! .IP "\fB\-mtune=\fR\fIname\fR" 4 ! .IX Item "-mtune=name" ! This option specifies the name of the target \s-1ARM\s0 processor for ! which \s-1GCC\s0 should tune the performance of the code. ! For some \s-1ARM\s0 implementations better performance can be obtained by using ! this option. ! Permissible names are: \fBarm2\fR, \fBarm250\fR, \&\fBarm3\fR, \fBarm6\fR, \fBarm60\fR, \fBarm600\fR, \fBarm610\fR, \&\fBarm620\fR, \fBarm7\fR, \fBarm7m\fR, \fBarm7d\fR, \fBarm7dm\fR, \&\fBarm7di\fR, \fBarm7dmi\fR, \fBarm70\fR, \fBarm700\fR, *************** assembly code. Permissible names are: \ *** 9931,9955 **** \&\fBfa526\fR, \fBfa626\fR, \&\fBfa606te\fR, \fBfa626te\fR, \fBfmp626\fR, \fBfa726te\fR. .Sp - \&\fB\-mcpu=generic\-\fR\fIarch\fR is also permissible, and is - equivalent to \fB\-march=\fR\fIarch\fR \fB\-mtune=generic\-\fR\fIarch\fR. - See \fB\-mtune\fR for more information. - .Sp - \&\fB\-mcpu=native\fR causes the compiler to auto-detect the \s-1CPU\s0 - of the build computer. At present, this feature is only supported on - Linux, and not all architectures are recognized. If the auto-detect is - unsuccessful the option has no effect. - .IP "\fB\-mtune=\fR\fIname\fR" 4 - .IX Item "-mtune=name" - This option is very similar to the \fB\-mcpu=\fR option, except that - instead of specifying the actual target processor type, and hence - restricting which instructions can be used, it specifies that \s-1GCC\s0 should - tune the performance of the code as if the target were of the type - specified in this option, but still choosing the instructions that it - will generate based on the \s-1CPU\s0 specified by a \fB\-mcpu=\fR option. - For some \s-1ARM\s0 implementations better performance can be obtained by using - this option. - .Sp \&\fB\-mtune=generic\-\fR\fIarch\fR specifies that \s-1GCC\s0 should tune the performance for a blend of processors within architecture \fIarch\fR. The aim is to generate code that run well on the current most popular --- 9949,9954 ---- *************** this option may change in future \s-1GCC *** 9961,9980 **** of the build computer. At present, this feature is only supported on Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. ! .IP "\fB\-march=\fR\fIname\fR" 4 ! .IX Item "-march=name" ! This specifies the name of the target \s-1ARM\s0 architecture. \s-1GCC\s0 uses this ! name to determine what kind of instructions it can emit when generating ! assembly code. This option can be used in conjunction with or instead ! of the \fB\-mcpu=\fR option. Permissible names are: \fBarmv2\fR, ! \&\fBarmv2a\fR, \fBarmv3\fR, \fBarmv3m\fR, \fBarmv4\fR, \fBarmv4t\fR, ! \&\fBarmv5\fR, \fBarmv5t\fR, \fBarmv5e\fR, \fBarmv5te\fR, ! \&\fBarmv6\fR, \fBarmv6j\fR, ! \&\fBarmv6t2\fR, \fBarmv6z\fR, \fBarmv6zk\fR, \fBarmv6\-m\fR, ! \&\fBarmv7\fR, \fBarmv7\-a\fR, \fBarmv7\-r\fR, \fBarmv7\-m\fR, ! \&\fBiwmmxt\fR, \fBiwmmxt2\fR, \fBep9312\fR. .Sp ! \&\fB\-march=native\fR causes the compiler to auto-detect the architecture of the build computer. At present, this feature is only supported on Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. --- 9960,9982 ---- of the build computer. At present, this feature is only supported on Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. ! .IP "\fB\-mcpu=\fR\fIname\fR" 4 ! .IX Item "-mcpu=name" ! This specifies the name of the target \s-1ARM\s0 processor. \s-1GCC\s0 uses this name ! to derive the name of the target \s-1ARM\s0 architecture (as if specified ! by \fB\-march\fR) and the \s-1ARM\s0 processor type for which to tune for ! performance (as if specified by \fB\-mtune\fR). Where this option ! is used in conjunction with \fB\-march\fR or \fB\-mtune\fR, ! those options take precedence over the appropriate part of this option. .Sp ! Permissible names for this option are the same as those for ! \&\fB\-mtune\fR. ! .Sp ! \&\fB\-mcpu=generic\-\fR\fIarch\fR is also permissible, and is ! equivalent to \fB\-march=\fR\fIarch\fR \fB\-mtune=generic\-\fR\fIarch\fR. ! See \fB\-mtune\fR for more information. ! .Sp ! \&\fB\-mcpu=native\fR causes the compiler to auto-detect the \s-1CPU\s0 of the build computer. At present, this feature is only supported on Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. *************** These \fB\-m\fR options are supported on *** 17239,17246 **** .IX Item "-mapp-regs" .PD Specify \fB\-mapp\-regs\fR to generate output using the global registers ! 2 through 4, which the \s-1SPARC\s0 \s-1SVR4\s0 \s-1ABI\s0 reserves for applications. This ! is the default. .Sp To be fully \s-1SVR4\s0 \s-1ABI\s0 compliant at the cost of some performance loss, specify \fB\-mno\-app\-regs\fR. You should compile libraries and system --- 17241,17249 ---- .IX Item "-mapp-regs" .PD Specify \fB\-mapp\-regs\fR to generate output using the global registers ! 2 through 4, which the \s-1SPARC\s0 \s-1SVR4\s0 \s-1ABI\s0 reserves for applications. Like the ! global register 1, each global register 2 through 4 is then treated as an ! allocable register that is clobbered by function calls. This is the default. .Sp To be fully \s-1SVR4\s0 \s-1ABI\s0 compliant at the cost of some performance loss, specify \fB\-mno\-app\-regs\fR. You should compile libraries and system diff -Nrcpad gcc-4.7.3/gcc/doc/gc-analyze.1 gcc-4.7.4/gcc/doc/gc-analyze.1 *** gcc-4.7.3/gcc/doc/gc-analyze.1 Thu Apr 11 08:46:35 2013 --- gcc-4.7.4/gcc/doc/gc-analyze.1 Thu Jun 12 13:54:52 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GC-ANALYZE 1" ! .TH GC-ANALYZE 1 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GC-ANALYZE 1" ! .TH GC-ANALYZE 1 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/gcc/doc/gcc.1 gcc-4.7.4/gcc/doc/gcc.1 *** gcc-4.7.3/gcc/doc/gcc.1 Thu Apr 11 08:57:48 2013 --- gcc-4.7.4/gcc/doc/gcc.1 Thu Jun 12 14:09:29 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GCC 1" ! .TH GCC 1 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GCC 1" ! .TH GCC 1 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l *************** Define an argument called \fIkey\fR with *** 1432,1439 **** for the plugin called \fIname\fR. .IP "\fB\-fdump\-ada\-spec\fR[\fB\-slim\fR]" 4 .IX Item "-fdump-ada-spec[-slim]" ! For C and \*(C+ source and include files, generate corresponding Ada ! specs. .IP "\fB\-fdump\-go\-spec=\fR\fIfile\fR" 4 .IX Item "-fdump-go-spec=file" For input files in any language, generate corresponding Go --- 1432,1438 ---- for the plugin called \fIname\fR. .IP "\fB\-fdump\-ada\-spec\fR[\fB\-slim\fR]" 4 .IX Item "-fdump-ada-spec[-slim]" ! For C and \*(C+ source and include files, generate corresponding Ada specs. .IP "\fB\-fdump\-go\-spec=\fR\fIfile\fR" 4 .IX Item "-fdump-go-spec=file" For input files in any language, generate corresponding Go *************** order. That is, a byte order of the for *** 9901,9911 **** option should only be used if you require compatibility with code for big-endian \s-1ARM\s0 processors generated by versions of the compiler prior to 2.8. This option is now deprecated. ! .IP "\fB\-mcpu=\fR\fIname\fR" 4 ! .IX Item "-mcpu=name" ! This specifies the name of the target \s-1ARM\s0 processor. \s-1GCC\s0 uses this name ! to determine what kind of instructions it can emit when generating ! assembly code. Permissible names are: \fBarm2\fR, \fBarm250\fR, \&\fBarm3\fR, \fBarm6\fR, \fBarm60\fR, \fBarm600\fR, \fBarm610\fR, \&\fBarm620\fR, \fBarm7\fR, \fBarm7m\fR, \fBarm7d\fR, \fBarm7dm\fR, \&\fBarm7di\fR, \fBarm7dmi\fR, \fBarm70\fR, \fBarm700\fR, --- 9900,9929 ---- option should only be used if you require compatibility with code for big-endian \s-1ARM\s0 processors generated by versions of the compiler prior to 2.8. This option is now deprecated. ! .IP "\fB\-march=\fR\fIname\fR" 4 ! .IX Item "-march=name" ! This specifies the name of the target \s-1ARM\s0 architecture. \s-1GCC\s0 uses this ! name to determine what kind of instructions it can emit when generating ! assembly code. This option can be used in conjunction with or instead ! of the \fB\-mcpu=\fR option. Permissible names are: \fBarmv2\fR, ! \&\fBarmv2a\fR, \fBarmv3\fR, \fBarmv3m\fR, \fBarmv4\fR, \fBarmv4t\fR, ! \&\fBarmv5\fR, \fBarmv5t\fR, \fBarmv5e\fR, \fBarmv5te\fR, ! \&\fBarmv6\fR, \fBarmv6j\fR, ! \&\fBarmv6t2\fR, \fBarmv6z\fR, \fBarmv6zk\fR, \fBarmv6\-m\fR, ! \&\fBarmv7\fR, \fBarmv7\-a\fR, \fBarmv7\-r\fR, \fBarmv7\-m\fR, \fBarmv7e\-m\fR, ! \&\fBiwmmxt\fR, \fBiwmmxt2\fR, \fBep9312\fR. ! .Sp ! \&\fB\-march=native\fR causes the compiler to auto-detect the architecture ! of the build computer. At present, this feature is only supported on ! Linux, and not all architectures are recognized. If the auto-detect is ! unsuccessful the option has no effect. ! .IP "\fB\-mtune=\fR\fIname\fR" 4 ! .IX Item "-mtune=name" ! This option specifies the name of the target \s-1ARM\s0 processor for ! which \s-1GCC\s0 should tune the performance of the code. ! For some \s-1ARM\s0 implementations better performance can be obtained by using ! this option. ! Permissible names are: \fBarm2\fR, \fBarm250\fR, \&\fBarm3\fR, \fBarm6\fR, \fBarm60\fR, \fBarm600\fR, \fBarm610\fR, \&\fBarm620\fR, \fBarm7\fR, \fBarm7m\fR, \fBarm7d\fR, \fBarm7dm\fR, \&\fBarm7di\fR, \fBarm7dmi\fR, \fBarm70\fR, \fBarm700\fR, *************** assembly code. Permissible names are: \ *** 9931,9955 **** \&\fBfa526\fR, \fBfa626\fR, \&\fBfa606te\fR, \fBfa626te\fR, \fBfmp626\fR, \fBfa726te\fR. .Sp - \&\fB\-mcpu=generic\-\fR\fIarch\fR is also permissible, and is - equivalent to \fB\-march=\fR\fIarch\fR \fB\-mtune=generic\-\fR\fIarch\fR. - See \fB\-mtune\fR for more information. - .Sp - \&\fB\-mcpu=native\fR causes the compiler to auto-detect the \s-1CPU\s0 - of the build computer. At present, this feature is only supported on - Linux, and not all architectures are recognized. If the auto-detect is - unsuccessful the option has no effect. - .IP "\fB\-mtune=\fR\fIname\fR" 4 - .IX Item "-mtune=name" - This option is very similar to the \fB\-mcpu=\fR option, except that - instead of specifying the actual target processor type, and hence - restricting which instructions can be used, it specifies that \s-1GCC\s0 should - tune the performance of the code as if the target were of the type - specified in this option, but still choosing the instructions that it - will generate based on the \s-1CPU\s0 specified by a \fB\-mcpu=\fR option. - For some \s-1ARM\s0 implementations better performance can be obtained by using - this option. - .Sp \&\fB\-mtune=generic\-\fR\fIarch\fR specifies that \s-1GCC\s0 should tune the performance for a blend of processors within architecture \fIarch\fR. The aim is to generate code that run well on the current most popular --- 9949,9954 ---- *************** this option may change in future \s-1GCC *** 9961,9980 **** of the build computer. At present, this feature is only supported on Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. ! .IP "\fB\-march=\fR\fIname\fR" 4 ! .IX Item "-march=name" ! This specifies the name of the target \s-1ARM\s0 architecture. \s-1GCC\s0 uses this ! name to determine what kind of instructions it can emit when generating ! assembly code. This option can be used in conjunction with or instead ! of the \fB\-mcpu=\fR option. Permissible names are: \fBarmv2\fR, ! \&\fBarmv2a\fR, \fBarmv3\fR, \fBarmv3m\fR, \fBarmv4\fR, \fBarmv4t\fR, ! \&\fBarmv5\fR, \fBarmv5t\fR, \fBarmv5e\fR, \fBarmv5te\fR, ! \&\fBarmv6\fR, \fBarmv6j\fR, ! \&\fBarmv6t2\fR, \fBarmv6z\fR, \fBarmv6zk\fR, \fBarmv6\-m\fR, ! \&\fBarmv7\fR, \fBarmv7\-a\fR, \fBarmv7\-r\fR, \fBarmv7\-m\fR, ! \&\fBiwmmxt\fR, \fBiwmmxt2\fR, \fBep9312\fR. .Sp ! \&\fB\-march=native\fR causes the compiler to auto-detect the architecture of the build computer. At present, this feature is only supported on Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. --- 9960,9982 ---- of the build computer. At present, this feature is only supported on Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. ! .IP "\fB\-mcpu=\fR\fIname\fR" 4 ! .IX Item "-mcpu=name" ! This specifies the name of the target \s-1ARM\s0 processor. \s-1GCC\s0 uses this name ! to derive the name of the target \s-1ARM\s0 architecture (as if specified ! by \fB\-march\fR) and the \s-1ARM\s0 processor type for which to tune for ! performance (as if specified by \fB\-mtune\fR). Where this option ! is used in conjunction with \fB\-march\fR or \fB\-mtune\fR, ! those options take precedence over the appropriate part of this option. .Sp ! Permissible names for this option are the same as those for ! \&\fB\-mtune\fR. ! .Sp ! \&\fB\-mcpu=generic\-\fR\fIarch\fR is also permissible, and is ! equivalent to \fB\-march=\fR\fIarch\fR \fB\-mtune=generic\-\fR\fIarch\fR. ! See \fB\-mtune\fR for more information. ! .Sp ! \&\fB\-mcpu=native\fR causes the compiler to auto-detect the \s-1CPU\s0 of the build computer. At present, this feature is only supported on Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. *************** These \fB\-m\fR options are supported on *** 17239,17246 **** .IX Item "-mapp-regs" .PD Specify \fB\-mapp\-regs\fR to generate output using the global registers ! 2 through 4, which the \s-1SPARC\s0 \s-1SVR4\s0 \s-1ABI\s0 reserves for applications. This ! is the default. .Sp To be fully \s-1SVR4\s0 \s-1ABI\s0 compliant at the cost of some performance loss, specify \fB\-mno\-app\-regs\fR. You should compile libraries and system --- 17241,17249 ---- .IX Item "-mapp-regs" .PD Specify \fB\-mapp\-regs\fR to generate output using the global registers ! 2 through 4, which the \s-1SPARC\s0 \s-1SVR4\s0 \s-1ABI\s0 reserves for applications. Like the ! global register 1, each global register 2 through 4 is then treated as an ! allocable register that is clobbered by function calls. This is the default. .Sp To be fully \s-1SVR4\s0 \s-1ABI\s0 compliant at the cost of some performance loss, specify \fB\-mno\-app\-regs\fR. You should compile libraries and system diff -Nrcpad gcc-4.7.3/gcc/doc/gcc.info gcc-4.7.4/gcc/doc/gcc.info *** gcc-4.7.3/gcc/doc/gcc.info Thu Apr 11 08:57:38 2013 --- gcc-4.7.4/gcc/doc/gcc.info Thu Jun 12 14:09:22 2014 *************** *** 1,5 **** This is doc/gcc.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/doc/gcc.texi. Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 --- 1,5 ---- This is doc/gcc.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/doc/gcc.texi. Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 *************** Introduction *** 61,67 **** This manual documents how to use the GNU compilers, as well as their features and incompatibilities, and how to report bugs. It corresponds ! to the compilers (GCC) version 4.7.3. The internals of the GNU compilers, including how to port them to new targets and some information about how to write front ends for new languages, are documented in a separate manual. *Note Introduction: (gccint)Top. --- 61,67 ---- This manual documents how to use the GNU compilers, as well as their features and incompatibilities, and how to report bugs. It corresponds ! to the compilers (GCC) version 4.7.4. The internals of the GNU compilers, including how to port them to new targets and some information about how to write front ends for new languages, are documented in a separate manual. *Note Introduction: (gccint)Top. *************** do nothing at all. *** 1680,1686 **** `-fdump-ada-spec[-slim]' For C and C++ source and include files, generate corresponding Ada ! specs. *Note Generating Ada Bindings for C and C++ headers: (gnat_ugn)Generating Ada Bindings for C and C++ headers, which provides detailed documentation on this feature. --- 1680,1686 ---- `-fdump-ada-spec[-slim]' For C and C++ source and include files, generate corresponding Ada ! specs. *Note Generating Ada Bindings for C and C++ headers: (gnat_ugn)Generating Ada Bindings for C and C++ headers, which provides detailed documentation on this feature. *************** architectures: *** 10584,10627 **** versions of the compiler prior to 2.8. This option is now deprecated. ! `-mcpu=NAME' ! This specifies the name of the target ARM processor. GCC uses this name to determine what kind of instructions it can emit when ! generating assembly code. Permissible names are: `arm2', `arm250', ! `arm3', `arm6', `arm60', `arm600', `arm610', `arm620', `arm7', ! `arm7m', `arm7d', `arm7dm', `arm7di', `arm7dmi', `arm70', `arm700', ! `arm700i', `arm710', `arm710c', `arm7100', `arm720', `arm7500', ! `arm7500fe', `arm7tdmi', `arm7tdmi-s', `arm710t', `arm720t', ! `arm740t', `strongarm', `strongarm110', `strongarm1100', ! `strongarm1110', `arm8', `arm810', `arm9', `arm9e', `arm920', ! `arm920t', `arm922t', `arm946e-s', `arm966e-s', `arm968e-s', ! `arm926ej-s', `arm940t', `arm9tdmi', `arm10tdmi', `arm1020t', ! `arm1026ej-s', `arm10e', `arm1020e', `arm1022e', `arm1136j-s', ! `arm1136jf-s', `mpcore', `mpcorenovfp', `arm1156t2-s', ! `arm1156t2f-s', `arm1176jz-s', `arm1176jzf-s', `cortex-a5', ! `cortex-a7', `cortex-a8', `cortex-a9', `cortex-a15', `cortex-r4', ! `cortex-r4f', `cortex-r5', `cortex-m4', `cortex-m3', `cortex-m1', ! `cortex-m0', `xscale', `iwmmxt', `iwmmxt2', `ep9312', `fa526', ! `fa626', `fa606te', `fa626te', `fmp626', `fa726te'. ! ! `-mcpu=generic-ARCH' is also permissible, and is equivalent to ! `-march=ARCH -mtune=generic-ARCH'. See `-mtune' for more ! information. ! `-mcpu=native' causes the compiler to auto-detect the CPU of the ! build computer. At present, this feature is only supported on ! Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. `-mtune=NAME' ! This option is very similar to the `-mcpu=' option, except that ! instead of specifying the actual target processor type, and hence ! restricting which instructions can be used, it specifies that GCC ! should tune the performance of the code as if the target were of ! the type specified in this option, but still choosing the ! instructions that it will generate based on the CPU specified by a ! `-mcpu=' option. For some ARM implementations better performance ! can be obtained by using this option. `-mtune=generic-ARCH' specifies that GCC should tune the performance for a blend of processors within architecture ARCH. --- 10584,10624 ---- versions of the compiler prior to 2.8. This option is now deprecated. ! `-march=NAME' ! This specifies the name of the target ARM architecture. GCC uses this name to determine what kind of instructions it can emit when ! generating assembly code. This option can be used in conjunction ! with or instead of the `-mcpu=' option. Permissible names are: ! `armv2', `armv2a', `armv3', `armv3m', `armv4', `armv4t', `armv5', ! `armv5t', `armv5e', `armv5te', `armv6', `armv6j', `armv6t2', ! `armv6z', `armv6zk', `armv6-m', `armv7', `armv7-a', `armv7-r', ! `armv7-m', `armv7e-m', `iwmmxt', `iwmmxt2', `ep9312'. ! `-march=native' causes the compiler to auto-detect the architecture ! of the build computer. At present, this feature is only supported ! on Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. `-mtune=NAME' ! This option specifies the name of the target ARM processor for ! which GCC should tune the performance of the code. For some ARM ! implementations better performance can be obtained by using this ! option. Permissible names are: `arm2', `arm250', `arm3', `arm6', ! `arm60', `arm600', `arm610', `arm620', `arm7', `arm7m', `arm7d', ! `arm7dm', `arm7di', `arm7dmi', `arm70', `arm700', `arm700i', ! `arm710', `arm710c', `arm7100', `arm720', `arm7500', `arm7500fe', ! `arm7tdmi', `arm7tdmi-s', `arm710t', `arm720t', `arm740t', ! `strongarm', `strongarm110', `strongarm1100', `strongarm1110', ! `arm8', `arm810', `arm9', `arm9e', `arm920', `arm920t', `arm922t', ! `arm946e-s', `arm966e-s', `arm968e-s', `arm926ej-s', `arm940t', ! `arm9tdmi', `arm10tdmi', `arm1020t', `arm1026ej-s', `arm10e', ! `arm1020e', `arm1022e', `arm1136j-s', `arm1136jf-s', `mpcore', ! `mpcorenovfp', `arm1156t2-s', `arm1156t2f-s', `arm1176jz-s', ! `arm1176jzf-s', `cortex-a5', `cortex-a7', `cortex-a8', `cortex-a9', ! `cortex-a15', `cortex-r4', `cortex-r4f', `cortex-r5', `cortex-m4', ! `cortex-m3', `cortex-m1', `cortex-m0', `xscale', `iwmmxt', ! `iwmmxt2', `ep9312', `fa526', `fa626', `fa606te', `fa626te', ! `fmp626', `fa726te'. `-mtune=generic-ARCH' specifies that GCC should tune the performance for a blend of processors within architecture ARCH. *************** architectures: *** 10636,10654 **** Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. ! `-march=NAME' ! This specifies the name of the target ARM architecture. GCC uses ! this name to determine what kind of instructions it can emit when ! generating assembly code. This option can be used in conjunction ! with or instead of the `-mcpu=' option. Permissible names are: ! `armv2', `armv2a', `armv3', `armv3m', `armv4', `armv4t', `armv5', ! `armv5t', `armv5e', `armv5te', `armv6', `armv6j', `armv6t2', ! `armv6z', `armv6zk', `armv6-m', `armv7', `armv7-a', `armv7-r', ! `armv7-m', `iwmmxt', `iwmmxt2', `ep9312'. ! `-march=native' causes the compiler to auto-detect the architecture ! of the build computer. At present, this feature is only supported ! on Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. `-mfpu=NAME' --- 10633,10656 ---- Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. ! `-mcpu=NAME' ! This specifies the name of the target ARM processor. GCC uses ! this name to derive the name of the target ARM architecture (as if ! specified by `-march') and the ARM processor type for which to ! tune for performance (as if specified by `-mtune'). Where this ! option is used in conjunction with `-march' or `-mtune', those ! options take precedence over the appropriate part of this option. ! Permissible names for this option are the same as those for ! `-mtune'. ! ! `-mcpu=generic-ARCH' is also permissible, and is equivalent to ! `-march=ARCH -mtune=generic-ARCH'. See `-mtune' for more ! information. ! ! `-mcpu=native' causes the compiler to auto-detect the CPU of the ! build computer. At present, this feature is only supported on ! Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. `-mfpu=NAME' *************** These `-m' options are supported on the *** 17177,17183 **** `-mapp-regs' Specify `-mapp-regs' to generate output using the global registers 2 through 4, which the SPARC SVR4 ABI reserves for applications. ! This is the default. To be fully SVR4 ABI compliant at the cost of some performance loss, specify `-mno-app-regs'. You should compile libraries and --- 17179,17187 ---- `-mapp-regs' Specify `-mapp-regs' to generate output using the global registers 2 through 4, which the SPARC SVR4 ABI reserves for applications. ! Like the global register 1, each global register 2 through 4 is ! then treated as an allocable register that is clobbered by ! function calls. This is the default. To be fully SVR4 ABI compliant at the cost of some performance loss, specify `-mno-app-regs'. You should compile libraries and *************** File: gcc.info, Node: C++ Implementatio *** 19378,19385 **** A conforming implementation of ISO C++ is required to document its choice of behavior in each of the areas that are designated "implementation defined". The following lists all such areas, along ! with the section numbers from the ISO/IEC 14822:1998 and ISO/IEC ! 14822:2003 standards. Some areas are only implementation-defined in one version of the standard. Some choices depend on the externally determined ABI for the platform --- 19382,19389 ---- A conforming implementation of ISO C++ is required to document its choice of behavior in each of the areas that are designated "implementation defined". The following lists all such areas, along ! with the section numbers from the ISO/IEC 14882:1998 and ISO/IEC ! 14882:2003 standards. Some areas are only implementation-defined in one version of the standard. Some choices depend on the externally determined ABI for the platform *************** and never pass it as an argument. *** 19749,19755 **** This is more friendly to code living in shared libraries, as it reduces the number of dynamic relocations that are needed, and by consequence, ! allows the data to be read-only. The `&&foo' expressions for the same label might have different values if the containing function is inlined or cloned. If a program relies --- 19753,19761 ---- This is more friendly to code living in shared libraries, as it reduces the number of dynamic relocations that are needed, and by consequence, ! allows the data to be read-only. This alternative with label ! differences is not supported for the AVR target, please use the first ! approach for AVR programs. The `&&foo' expressions for the same label might have different values if the containing function is inlined or cloned. If a program relies *************** look up both forms. *** 47042,47049 **** --- 47048,47057 ---- * fdollars-in-identifiers: Preprocessor Options. (line 483) * fdse: Optimize Options. (line 525) + * fdump-ada-spec: Overall Options. (line 366) * fdump-class-hierarchy: Debugging Options. (line 772) * fdump-final-insns: Debugging Options. (line 171) + * fdump-go-spec: Overall Options. (line 372) * fdump-ipa: Debugging Options. (line 780) * fdump-noaddr: Debugging Options. (line 745) * fdump-passes: Debugging Options. (line 798) *************** look up both forms. *** 47625,47631 **** (line 87) * m32 <1>: TILEPro Options. (line 13) * m32 <2>: TILE-Gx Options. (line 14) ! * m32 <3>: SPARC Options. (line 238) * m32 <4>: RS/6000 and PowerPC Options. (line 266) * m32: i386 and x86-64 Options. --- 47633,47639 ---- (line 87) * m32 <1>: TILEPro Options. (line 13) * m32 <2>: TILE-Gx Options. (line 14) ! * m32 <3>: SPARC Options. (line 240) * m32 <4>: RS/6000 and PowerPC Options. (line 266) * m32: i386 and x86-64 Options. *************** look up both forms. *** 47657,47663 **** * m5307: M680x0 Options. (line 163) * m5407: M680x0 Options. (line 167) * m64 <1>: TILE-Gx Options. (line 14) ! * m64 <2>: SPARC Options. (line 238) * m64 <3>: S/390 and zSeries Options. (line 87) * m64 <4>: RS/6000 and PowerPC Options. --- 47665,47671 ---- * m5307: M680x0 Options. (line 163) * m5407: M680x0 Options. (line 167) * m64 <1>: TILE-Gx Options. (line 14) ! * m64 <2>: SPARC Options. (line 240) * m64 <3>: S/390 and zSeries Options. (line 87) * m64 <4>: RS/6000 and PowerPC Options. *************** look up both forms. *** 47698,47704 **** * mabi=spe: RS/6000 and PowerPC Options. (line 583) * mabicalls: MIPS Options. (line 155) ! * mabort-on-noreturn: ARM Options. (line 186) * mabsdiff: MeP Options. (line 7) * mabshi: PDP-11 Options. (line 55) * mac0: PDP-11 Options. (line 16) --- 47706,47712 ---- * mabi=spe: RS/6000 and PowerPC Options. (line 583) * mabicalls: MIPS Options. (line 155) ! * mabort-on-noreturn: ARM Options. (line 188) * mabsdiff: MeP Options. (line 7) * mabshi: PDP-11 Options. (line 55) * mac0: PDP-11 Options. (line 16) *************** look up both forms. *** 47750,47757 **** * march <5>: HPPA Options. (line 9) * march <6>: CRIS Options. (line 10) * march <7>: C6X Options. (line 7) ! * march: ARM Options. (line 127) ! * marm: ARM Options. (line 258) * mas100-syntax: RX Options. (line 77) * masm=DIALECT: i386 and x86-64 Options. (line 243) --- 47758,47765 ---- * march <5>: HPPA Options. (line 9) * march <6>: CRIS Options. (line 10) * march <7>: C6X Options. (line 7) ! * march: ARM Options. (line 75) ! * marm: ARM Options. (line 260) * mas100-syntax: RX Options. (line 77) * masm=DIALECT: i386 and x86-64 Options. (line 243) *************** look up both forms. *** 47825,47843 **** (line 545) * mcall-sysv-noeabi: RS/6000 and PowerPC Options. (line 548) ! * mcallee-super-interworking: ARM Options. (line 276) ! * mcaller-super-interworking: ARM Options. (line 283) * mcallgraph-data: MCore Options. (line 31) * mcbranchdi: SH Options. (line 337) * mcc-init: CRIS Options. (line 41) * mcfv4e: M680x0 Options. (line 171) * mcheck-zero-division: MIPS Options. (line 427) ! * mcirrus-fix-invalid-insns: ARM Options. (line 226) * mcix: DEC Alpha Options. (line 171) * mcld: i386 and x86-64 Options. (line 528) * mclip: MeP Options. (line 35) ! * mcmodel: SPARC Options. (line 243) * mcmodel=kernel: i386 and x86-64 Options. (line 774) * mcmodel=large <1>: RS/6000 and PowerPC Options. --- 47833,47851 ---- (line 545) * mcall-sysv-noeabi: RS/6000 and PowerPC Options. (line 548) ! * mcallee-super-interworking: ARM Options. (line 278) ! * mcaller-super-interworking: ARM Options. (line 285) * mcallgraph-data: MCore Options. (line 31) * mcbranchdi: SH Options. (line 337) * mcc-init: CRIS Options. (line 41) * mcfv4e: M680x0 Options. (line 171) * mcheck-zero-division: MIPS Options. (line 427) ! * mcirrus-fix-invalid-insns: ARM Options. (line 228) * mcix: DEC Alpha Options. (line 171) * mcld: i386 and x86-64 Options. (line 528) * mclip: MeP Options. (line 35) ! * mcmodel: SPARC Options. (line 245) * mcmodel=kernel: i386 and x86-64 Options. (line 774) * mcmodel=large <1>: RS/6000 and PowerPC Options. *************** look up both forms. *** 47873,47879 **** * mcoreb: Blackfin Options. (line 156) * mcpu <1>: TILEPro Options. (line 9) * mcpu <2>: TILE-Gx Options. (line 9) ! * mcpu <3>: SPARC Options. (line 94) * mcpu <4>: RS/6000 and PowerPC Options. (line 119) * mcpu <5>: picoChip Options. (line 9) --- 47881,47887 ---- * mcoreb: Blackfin Options. (line 156) * mcpu <1>: TILEPro Options. (line 9) * mcpu <2>: TILE-Gx Options. (line 9) ! * mcpu <3>: SPARC Options. (line 96) * mcpu <4>: RS/6000 and PowerPC Options. (line 119) * mcpu <5>: picoChip Options. (line 9) *************** look up both forms. *** 47883,47889 **** * mcpu <8>: FRV Options. (line 212) * mcpu <9>: DEC Alpha Options. (line 223) * mcpu <10>: CRIS Options. (line 10) ! * mcpu: ARM Options. (line 75) * mcpu32: M680x0 Options. (line 137) * mcpu= <1>: MicroBlaze Options. (line 20) * mcpu= <2>: M32C Options. (line 7) --- 47891,47897 ---- * mcpu <8>: FRV Options. (line 212) * mcpu <9>: DEC Alpha Options. (line 223) * mcpu <10>: CRIS Options. (line 10) ! * mcpu: ARM Options. (line 124) * mcpu32: M680x0 Options. (line 137) * mcpu= <1>: MicroBlaze Options. (line 20) * mcpu= <2>: M32C Options. (line 7) *************** look up both forms. *** 47964,47978 **** (line 208) * mfast-fp: Blackfin Options. (line 129) * mfast-indirect-calls: HPPA Options. (line 51) ! * mfaster-structs: SPARC Options. (line 84) * mfdpic: FRV Options. (line 56) * mfentry: i386 and x86-64 Options. (line 725) * mfix: DEC Alpha Options. (line 171) * mfix-24k: MIPS Options. (line 484) * mfix-and-continue: Darwin Options. (line 106) ! * mfix-at697f: SPARC Options. (line 229) ! * mfix-cortex-m3-ldrd: ARM Options. (line 316) * mfix-r10000: MIPS Options. (line 511) * mfix-r4000: MIPS Options. (line 490) * mfix-r4400: MIPS Options. (line 504) --- 47972,47986 ---- (line 208) * mfast-fp: Blackfin Options. (line 129) * mfast-indirect-calls: HPPA Options. (line 51) ! * mfaster-structs: SPARC Options. (line 86) * mfdpic: FRV Options. (line 56) * mfentry: i386 and x86-64 Options. (line 725) * mfix: DEC Alpha Options. (line 171) * mfix-24k: MIPS Options. (line 484) * mfix-and-continue: Darwin Options. (line 106) ! * mfix-at697f: SPARC Options. (line 231) ! * mfix-cortex-m3-ldrd: ARM Options. (line 318) * mfix-r10000: MIPS Options. (line 511) * mfix-r4000: MIPS Options. (line 490) * mfix-r4400: MIPS Options. (line 504) *************** look up both forms. *** 47984,47990 **** * mfixed-range <2>: SH Options. (line 276) * mfixed-range <3>: IA-64 Options. (line 105) * mfixed-range: HPPA Options. (line 58) ! * mflat: SPARC Options. (line 20) * mflip-mips16: MIPS Options. (line 111) * mfloat-abi: ARM Options. (line 42) * mfloat-gprs: RS/6000 and PowerPC Options. --- 47992,47998 ---- * mfixed-range <2>: SH Options. (line 276) * mfixed-range <3>: IA-64 Options. (line 105) * mfixed-range: HPPA Options. (line 58) ! * mflat: SPARC Options. (line 22) * mflip-mips16: MIPS Options. (line 111) * mfloat-abi: ARM Options. (line 42) * mfloat-gprs: RS/6000 and PowerPC Options. *************** look up both forms. *** 47996,48015 **** * mflush-func: MIPS Options. (line 610) * mflush-func=NAME: M32R/D Options. (line 94) * mflush-trap=NUMBER: M32R/D Options. (line 87) ! * mfmaf: SPARC Options. (line 223) * mfmovd: SH Options. (line 97) * mforce-no-pic: Xtensa Options. (line 41) ! * mfp: ARM Options. (line 144) * mfp-exceptions: MIPS Options. (line 637) * mfp-mode: Adapteva Epiphany Options. (line 71) * mfp-reg: DEC Alpha Options. (line 25) * mfp-rounding-mode: DEC Alpha Options. (line 85) * mfp-trap-mode: DEC Alpha Options. (line 63) ! * mfp16-format: ARM Options. (line 165) * mfp32: MIPS Options. (line 221) * mfp64: MIPS Options. (line 224) ! * mfpe: ARM Options. (line 144) * mfpmath <1>: i386 and x86-64 Options. (line 194) * mfpmath: Optimize Options. (line 1855) --- 48004,48023 ---- * mflush-func: MIPS Options. (line 610) * mflush-func=NAME: M32R/D Options. (line 94) * mflush-trap=NUMBER: M32R/D Options. (line 87) ! * mfmaf: SPARC Options. (line 225) * mfmovd: SH Options. (line 97) * mforce-no-pic: Xtensa Options. (line 41) ! * mfp: ARM Options. (line 146) * mfp-exceptions: MIPS Options. (line 637) * mfp-mode: Adapteva Epiphany Options. (line 71) * mfp-reg: DEC Alpha Options. (line 25) * mfp-rounding-mode: DEC Alpha Options. (line 85) * mfp-trap-mode: DEC Alpha Options. (line 63) ! * mfp16-format: ARM Options. (line 167) * mfp32: MIPS Options. (line 221) * mfp64: MIPS Options. (line 224) ! * mfpe: ARM Options. (line 146) * mfpmath <1>: i386 and x86-64 Options. (line 194) * mfpmath: Optimize Options. (line 1855) *************** look up both forms. *** 48017,48027 **** * mfpr-64: FRV Options. (line 16) * mfprnd: RS/6000 and PowerPC Options. (line 33) ! * mfpu <1>: SPARC Options. (line 33) * mfpu <2>: RS/6000 and PowerPC Options. (line 369) * mfpu <3>: PDP-11 Options. (line 9) ! * mfpu: ARM Options. (line 144) * mfriz: RS/6000 and PowerPC Options. (line 822) * mfull-toc: RS/6000 and PowerPC Options. --- 48025,48035 ---- * mfpr-64: FRV Options. (line 16) * mfprnd: RS/6000 and PowerPC Options. (line 33) ! * mfpu <1>: SPARC Options. (line 35) * mfpu <2>: RS/6000 and PowerPC Options. (line 369) * mfpu <3>: PDP-11 Options. (line 9) ! * mfpu: ARM Options. (line 146) * mfriz: RS/6000 and PowerPC Options. (line 822) * mfull-toc: RS/6000 and PowerPC Options. *************** look up both forms. *** 48061,48067 **** (line 20) * mhard-dfp: RS/6000 and PowerPC Options. (line 33) ! * mhard-float <1>: SPARC Options. (line 33) * mhard-float <2>: S/390 and zSeries Options. (line 11) * mhard-float <3>: RS/6000 and PowerPC Options. --- 48069,48075 ---- (line 20) * mhard-dfp: RS/6000 and PowerPC Options. (line 33) ! * mhard-float <1>: SPARC Options. (line 35) * mhard-float <2>: S/390 and zSeries Options. (line 11) * mhard-float <3>: RS/6000 and PowerPC Options. *************** look up both forms. *** 48070,48076 **** * mhard-float <5>: MicroBlaze Options. (line 10) * mhard-float <6>: M680x0 Options. (line 196) * mhard-float: FRV Options. (line 19) ! * mhard-quad-float: SPARC Options. (line 54) * mhardlit: MCore Options. (line 10) * mhint-max-distance: SPU Options. (line 102) * mhint-max-nops: SPU Options. (line 96) --- 48078,48084 ---- * mhard-float <5>: MicroBlaze Options. (line 10) * mhard-float <6>: M680x0 Options. (line 196) * mhard-float: FRV Options. (line 19) ! * mhard-quad-float: SPARC Options. (line 56) * mhardlit: MCore Options. (line 10) * mhint-max-distance: SPU Options. (line 102) * mhint-max-nops: SPU Options. (line 96) *************** look up both forms. *** 48161,48167 **** * mlong-calls <2>: MIPS Options. (line 454) * mlong-calls <3>: FRV Options. (line 99) * mlong-calls <4>: Blackfin Options. (line 117) ! * mlong-calls <5>: ARM Options. (line 191) * mlong-calls: Adapteva Epiphany Options. (line 55) * mlong-double-128: S/390 and zSeries Options. --- 48169,48175 ---- * mlong-calls <2>: MIPS Options. (line 454) * mlong-calls <3>: FRV Options. (line 99) * mlong-calls <4>: Blackfin Options. (line 117) ! * mlong-calls <5>: ARM Options. (line 193) * mlong-calls: Adapteva Epiphany Options. (line 55) * mlong-double-128: S/390 and zSeries Options. *************** look up both forms. *** 48196,48202 **** * mmemcpy <1>: MIPS Options. (line 448) * mmemcpy: MicroBlaze Options. (line 13) * mmemory-latency: DEC Alpha Options. (line 276) ! * mmemory-model: SPARC Options. (line 271) * mmfcrf: RS/6000 and PowerPC Options. (line 33) * mmfpgpr: RS/6000 and PowerPC Options. --- 48204,48210 ---- * mmemcpy <1>: MIPS Options. (line 448) * mmemcpy: MicroBlaze Options. (line 13) * mmemory-latency: DEC Alpha Options. (line 276) ! * mmemory-model: SPARC Options. (line 273) * mmfcrf: RS/6000 and PowerPC Options. (line 33) * mmfpgpr: RS/6000 and PowerPC Options. *************** look up both forms. *** 48265,48271 **** * mno-bwx: DEC Alpha Options. (line 171) * mno-callgraph-data: MCore Options. (line 31) * mno-check-zero-division: MIPS Options. (line 427) ! * mno-cirrus-fix-invalid-insns: ARM Options. (line 226) * mno-cix: DEC Alpha Options. (line 171) * mno-clearbss: MicroBlaze Options. (line 16) * mno-cmpb: RS/6000 and PowerPC Options. --- 48273,48279 ---- * mno-bwx: DEC Alpha Options. (line 171) * mno-callgraph-data: MCore Options. (line 31) * mno-check-zero-division: MIPS Options. (line 427) ! * mno-cirrus-fix-invalid-insns: ARM Options. (line 228) * mno-cix: DEC Alpha Options. (line 171) * mno-clearbss: MicroBlaze Options. (line 16) * mno-cmpb: RS/6000 and PowerPC Options. *************** look up both forms. *** 48300,48317 **** * mno-extern-sdata: MIPS Options. (line 336) * mno-fancy-math-387: i386 and x86-64 Options. (line 276) ! * mno-faster-structs: SPARC Options. (line 84) * mno-fix: DEC Alpha Options. (line 171) * mno-fix-24k: MIPS Options. (line 484) * mno-fix-r10000: MIPS Options. (line 511) * mno-fix-r4000: MIPS Options. (line 490) * mno-fix-r4400: MIPS Options. (line 504) ! * mno-flat: SPARC Options. (line 20) * mno-float32: PDP-11 Options. (line 48) * mno-float64: PDP-11 Options. (line 52) * mno-flush-func: M32R/D Options. (line 99) * mno-flush-trap: M32R/D Options. (line 91) ! * mno-fmaf: SPARC Options. (line 223) * mno-fp-in-toc: RS/6000 and PowerPC Options. (line 277) * mno-fp-regs: DEC Alpha Options. (line 25) --- 48308,48325 ---- * mno-extern-sdata: MIPS Options. (line 336) * mno-fancy-math-387: i386 and x86-64 Options. (line 276) ! * mno-faster-structs: SPARC Options. (line 86) * mno-fix: DEC Alpha Options. (line 171) * mno-fix-24k: MIPS Options. (line 484) * mno-fix-r10000: MIPS Options. (line 511) * mno-fix-r4000: MIPS Options. (line 490) * mno-fix-r4400: MIPS Options. (line 504) ! * mno-flat: SPARC Options. (line 22) * mno-float32: PDP-11 Options. (line 48) * mno-float64: PDP-11 Options. (line 52) * mno-flush-func: M32R/D Options. (line 99) * mno-flush-trap: M32R/D Options. (line 91) ! * mno-fmaf: SPARC Options. (line 225) * mno-fp-in-toc: RS/6000 and PowerPC Options. (line 277) * mno-fp-regs: DEC Alpha Options. (line 25) *************** look up both forms. *** 48319,48325 **** (line 266) * mno-fprnd: RS/6000 and PowerPC Options. (line 33) ! * mno-fpu: SPARC Options. (line 38) * mno-fused-madd <1>: Xtensa Options. (line 19) * mno-fused-madd <2>: S/390 and zSeries Options. (line 137) --- 48327,48333 ---- (line 266) * mno-fprnd: RS/6000 and PowerPC Options. (line 33) ! * mno-fpu: SPARC Options. (line 40) * mno-fused-madd <1>: Xtensa Options. (line 19) * mno-fused-madd <2>: S/390 and zSeries Options. (line 137) *************** look up both forms. *** 48357,48363 **** * mno-long-calls <2>: MIPS Options. (line 454) * mno-long-calls <3>: HPPA Options. (line 135) * mno-long-calls <4>: Blackfin Options. (line 117) ! * mno-long-calls: ARM Options. (line 191) * mno-longcall: RS/6000 and PowerPC Options. (line 712) * mno-longcalls: Xtensa Options. (line 72) --- 48365,48371 ---- * mno-long-calls <2>: MIPS Options. (line 454) * mno-long-calls <3>: HPPA Options. (line 135) * mno-long-calls <4>: Blackfin Options. (line 117) ! * mno-long-calls: ARM Options. (line 193) * mno-longcall: RS/6000 and PowerPC Options. (line 712) * mno-longcalls: Xtensa Options. (line 72) *************** look up both forms. *** 48401,48407 **** * mno-pic: IA-64 Options. (line 26) * mno-pid: RX Options. (line 118) * mno-plt: MIPS Options. (line 182) ! * mno-popc: SPARC Options. (line 216) * mno-popcntb: RS/6000 and PowerPC Options. (line 33) * mno-popcntd: RS/6000 and PowerPC Options. --- 48409,48415 ---- * mno-pic: IA-64 Options. (line 26) * mno-pid: RX Options. (line 118) * mno-plt: MIPS Options. (line 182) ! * mno-popc: SPARC Options. (line 218) * mno-popcntb: RS/6000 and PowerPC Options. (line 33) * mno-popcntd: RS/6000 and PowerPC Options. *************** look up both forms. *** 48476,48482 **** * mno-sse: i386 and x86-64 Options. (line 504) * mno-stack-align: CRIS Options. (line 55) ! * mno-stack-bias: SPARC Options. (line 295) * mno-strict-align <1>: RS/6000 and PowerPC Options. (line 455) * mno-strict-align: M680x0 Options. (line 286) --- 48484,48490 ---- * mno-sse: i386 and x86-64 Options. (line 504) * mno-stack-align: CRIS Options. (line 55) ! * mno-stack-bias: SPARC Options. (line 297) * mno-strict-align <1>: RS/6000 and PowerPC Options. (line 455) * mno-strict-align: M680x0 Options. (line 286) *************** look up both forms. *** 48494,48510 **** * mno-toplevel-symbols: MMIX Options. (line 40) * mno-tpf-trace: S/390 and zSeries Options. (line 131) ! * mno-unaligned-access: ARM Options. (line 323) ! * mno-unaligned-doubles: SPARC Options. (line 72) * mno-uninit-const-in-rodata: MIPS Options. (line 382) * mno-update: RS/6000 and PowerPC Options. (line 402) ! * mno-v8plus: SPARC Options. (line 187) * mno-vect-double: Adapteva Epiphany Options. (line 117) ! * mno-vis: SPARC Options. (line 194) ! * mno-vis2: SPARC Options. (line 200) ! * mno-vis3: SPARC Options. (line 208) * mno-vliw-branch: FRV Options. (line 170) * mno-volatile-asm-stop: IA-64 Options. (line 32) * mno-vrsave: RS/6000 and PowerPC Options. --- 48502,48518 ---- * mno-toplevel-symbols: MMIX Options. (line 40) * mno-tpf-trace: S/390 and zSeries Options. (line 131) ! * mno-unaligned-access: ARM Options. (line 325) ! * mno-unaligned-doubles: SPARC Options. (line 74) * mno-uninit-const-in-rodata: MIPS Options. (line 382) * mno-update: RS/6000 and PowerPC Options. (line 402) ! * mno-v8plus: SPARC Options. (line 189) * mno-vect-double: Adapteva Epiphany Options. (line 117) ! * mno-vis: SPARC Options. (line 196) ! * mno-vis2: SPARC Options. (line 202) ! * mno-vis3: SPARC Options. (line 210) * mno-vliw-branch: FRV Options. (line 170) * mno-volatile-asm-stop: IA-64 Options. (line 32) * mno-vrsave: RS/6000 and PowerPC Options. *************** look up both forms. *** 48559,48571 **** (line 332) * mpe-aligned-commons: i386 and x86-64 Windows Options. (line 53) ! * mpic-register: ARM Options. (line 222) * mpid: RX Options. (line 118) * mplt: MIPS Options. (line 182) * mpointers-to-nested-functions: RS/6000 and PowerPC Options. (line 830) ! * mpoke-function-name: ARM Options. (line 236) ! * mpopc: SPARC Options. (line 216) * mpopcntb: RS/6000 and PowerPC Options. (line 33) * mpopcntd: RS/6000 and PowerPC Options. --- 48567,48579 ---- (line 332) * mpe-aligned-commons: i386 and x86-64 Windows Options. (line 53) ! * mpic-register: ARM Options. (line 224) * mpid: RX Options. (line 118) * mplt: MIPS Options. (line 182) * mpointers-to-nested-functions: RS/6000 and PowerPC Options. (line 830) ! * mpoke-function-name: ARM Options. (line 238) ! * mpopc: SPARC Options. (line 218) * mpopcntb: RS/6000 and PowerPC Options. (line 33) * mpopcntd: RS/6000 and PowerPC Options. *************** look up both forms. *** 48721,48727 **** * msingle-float: MIPS Options. (line 234) * msingle-pic-base <1>: RS/6000 and PowerPC Options. (line 503) ! * msingle-pic-base: ARM Options. (line 216) * msio: HPPA Options. (line 104) * mslow-bytes: MCore Options. (line 35) * msmall-data: DEC Alpha Options. (line 195) --- 48729,48735 ---- * msingle-float: MIPS Options. (line 234) * msingle-pic-base <1>: RS/6000 and PowerPC Options. (line 503) ! * msingle-pic-base: ARM Options. (line 218) * msio: HPPA Options. (line 104) * mslow-bytes: MCore Options. (line 35) * msmall-data: DEC Alpha Options. (line 195) *************** look up both forms. *** 48736,48742 **** (line 66) * msmartmips: MIPS Options. (line 270) * msoft-atomic: SH Options. (line 146) ! * msoft-float <1>: SPARC Options. (line 38) * msoft-float <2>: S/390 and zSeries Options. (line 11) * msoft-float <3>: RS/6000 and PowerPC Options. --- 48744,48750 ---- (line 66) * msmartmips: MIPS Options. (line 270) * msoft-atomic: SH Options. (line 146) ! * msoft-float <1>: SPARC Options. (line 40) * msoft-float <2>: S/390 and zSeries Options. (line 11) * msoft-float <3>: RS/6000 and PowerPC Options. *************** look up both forms. *** 48750,48756 **** * msoft-float <9>: HPPA Options. (line 90) * msoft-float <10>: FRV Options. (line 22) * msoft-float: DEC Alpha Options. (line 10) ! * msoft-quad-float: SPARC Options. (line 58) * msp8: AVR Options. (line 175) * mspace <1>: V850 Options. (line 30) * mspace: SH Options. (line 155) --- 48758,48764 ---- * msoft-float <9>: HPPA Options. (line 90) * msoft-float <10>: FRV Options. (line 22) * msoft-float: DEC Alpha Options. (line 10) ! * msoft-quad-float: SPARC Options. (line 60) * msp8: AVR Options. (line 175) * mspace <1>: V850 Options. (line 30) * mspace: SH Options. (line 155) *************** look up both forms. *** 48767,48773 **** * msseregparm: i386 and x86-64 Options. (line 369) * mstack-align: CRIS Options. (line 55) ! * mstack-bias: SPARC Options. (line 295) * mstack-check-l1: Blackfin Options. (line 73) * mstack-guard: S/390 and zSeries Options. (line 156) --- 48775,48781 ---- * msseregparm: i386 and x86-64 Options. (line 369) * mstack-align: CRIS Options. (line 55) ! * mstack-bias: SPARC Options. (line 297) * mstack-check-l1: Blackfin Options. (line 73) * mstack-guard: S/390 and zSeries Options. (line 156) *************** look up both forms. *** 48787,48793 **** (line 391) * mstringop-strategy=ALG: i386 and x86-64 Options. (line 694) ! * mstructure-size-boundary: ARM Options. (line 171) * msvr4-struct-return: RS/6000 and PowerPC Options. (line 574) * msym32: MIPS Options. (line 309) --- 48795,48801 ---- (line 391) * mstringop-strategy=ALG: i386 and x86-64 Options. (line 694) ! * mstructure-size-boundary: ARM Options. (line 173) * msvr4-struct-return: RS/6000 and PowerPC Options. (line 574) * msym32: MIPS Options. (line 309) *************** look up both forms. *** 48802,48808 **** (line 26) * mthreads: i386 and x86-64 Options. (line 670) ! * mthumb: ARM Options. (line 258) * mthumb-interwork: ARM Options. (line 25) * mtiny-stack: AVR Options. (line 202) * mtiny=: MeP Options. (line 125) --- 48810,48816 ---- (line 26) * mthreads: i386 and x86-64 Options. (line 670) ! * mthumb: ARM Options. (line 260) * mthumb-interwork: ARM Options. (line 25) * mtiny-stack: AVR Options. (line 202) * mtiny=: MeP Options. (line 125) *************** look up both forms. *** 48810,48816 **** * mTLS: FRV Options. (line 72) * mtls-dialect <1>: i386 and x86-64 Options. (line 648) ! * mtls-dialect: ARM Options. (line 299) * mtls-direct-seg-refs: i386 and x86-64 Options. (line 710) * mtls-markers: RS/6000 and PowerPC Options. --- 48818,48824 ---- * mTLS: FRV Options. (line 72) * mtls-dialect <1>: i386 and x86-64 Options. (line 648) ! * mtls-dialect: ARM Options. (line 301) * mtls-direct-seg-refs: i386 and x86-64 Options. (line 710) * mtls-markers: RS/6000 and PowerPC Options. *************** look up both forms. *** 48820,48832 **** (line 480) * mtomcat-stats: FRV Options. (line 209) * mtoplevel-symbols: MMIX Options. (line 40) ! * mtp: ARM Options. (line 291) ! * mtpcs-frame: ARM Options. (line 264) ! * mtpcs-leaf-frame: ARM Options. (line 270) * mtpf-trace: S/390 and zSeries Options. (line 131) * mtrap-precision: DEC Alpha Options. (line 109) ! * mtune <1>: SPARC Options. (line 173) * mtune <2>: S/390 and zSeries Options. (line 124) * mtune <3>: RS/6000 and PowerPC Options. --- 48828,48840 ---- (line 480) * mtomcat-stats: FRV Options. (line 209) * mtoplevel-symbols: MMIX Options. (line 40) ! * mtp: ARM Options. (line 293) ! * mtpcs-frame: ARM Options. (line 266) ! * mtpcs-leaf-frame: ARM Options. (line 272) * mtpf-trace: S/390 and zSeries Options. (line 131) * mtrap-precision: DEC Alpha Options. (line 109) ! * mtune <1>: SPARC Options. (line 175) * mtune <2>: S/390 and zSeries Options. (line 124) * mtune <3>: RS/6000 and PowerPC Options. *************** look up both forms. *** 48839,48845 **** (line 10) * mtune <9>: DEC Alpha Options. (line 267) * mtune <10>: CRIS Options. (line 16) ! * mtune: ARM Options. (line 104) * muclibc: GNU/Linux Options. (line 13) * muls: Score Options. (line 18) * multcost=NUMBER: SH Options. (line 168) --- 48847,48853 ---- (line 10) * mtune <9>: DEC Alpha Options. (line 267) * mtune <10>: CRIS Options. (line 16) ! * mtune: ARM Options. (line 90) * muclibc: GNU/Linux Options. (line 13) * muls: Score Options. (line 18) * multcost=NUMBER: SH Options. (line 168) *************** look up both forms. *** 48848,48855 **** * multiply-enabled: LM32 Options. (line 15) * multiply_defined: Darwin Options. (line 199) * multiply_defined_unused: Darwin Options. (line 199) ! * munaligned-access: ARM Options. (line 323) ! * munaligned-doubles: SPARC Options. (line 72) * municode: i386 and x86-64 Windows Options. (line 30) * muninit-const-in-rodata: MIPS Options. (line 382) --- 48856,48863 ---- * multiply-enabled: LM32 Options. (line 15) * multiply_defined: Darwin Options. (line 199) * multiply_defined_unused: Darwin Options. (line 199) ! * munaligned-access: ARM Options. (line 325) ! * munaligned-doubles: SPARC Options. (line 74) * municode: i386 and x86-64 Windows Options. (line 30) * muninit-const-in-rodata: MIPS Options. (line 382) *************** look up both forms. *** 48866,48881 **** * mv850e2: V850 Options. (line 69) * mv850e2v3: V850 Options. (line 64) * mv850es: V850 Options. (line 78) ! * mv8plus: SPARC Options. (line 187) * mveclibabi <1>: RS/6000 and PowerPC Options. (line 802) * mveclibabi: i386 and x86-64 Options. (line 618) * mvect8-ret-in-mem: i386 and x86-64 Options. (line 379) ! * mvis: SPARC Options. (line 194) ! * mvis2: SPARC Options. (line 200) ! * mvis3: SPARC Options. (line 208) * mvliw-branch: FRV Options. (line 164) * mvms-return-codes <1>: IA-64/VMS Options. (line 9) * mvms-return-codes: DEC Alpha/VMS Options. --- 48874,48889 ---- * mv850e2: V850 Options. (line 69) * mv850e2v3: V850 Options. (line 64) * mv850es: V850 Options. (line 78) ! * mv8plus: SPARC Options. (line 189) * mveclibabi <1>: RS/6000 and PowerPC Options. (line 802) * mveclibabi: i386 and x86-64 Options. (line 618) * mvect8-ret-in-mem: i386 and x86-64 Options. (line 379) ! * mvis: SPARC Options. (line 196) ! * mvis2: SPARC Options. (line 202) ! * mvis3: SPARC Options. (line 210) * mvliw-branch: FRV Options. (line 164) * mvms-return-codes <1>: IA-64/VMS Options. (line 9) * mvms-return-codes: DEC Alpha/VMS Options. *************** look up both forms. *** 48902,48908 **** (line 35) * mwindows: i386 and x86-64 Windows Options. (line 41) ! * mword-relocations: ARM Options. (line 310) * mwords-little-endian: ARM Options. (line 66) * mx32: i386 and x86-64 Options. (line 750) --- 48910,48916 ---- (line 35) * mwindows: i386 and x86-64 Windows Options. (line 41) ! * mword-relocations: ARM Options. (line 312) * mwords-little-endian: ARM Options. (line 66) * mx32: i386 and x86-64 Options. (line 750) *************** Node: Standards5935 *** 51160,51453 **** Node: Invoking GCC18432 Node: Option Summary22183 Node: Overall Options60571 ! Node: Invoking G++74849 ! Node: C Dialect Options76372 ! Node: C++ Dialect Options92132 ! Node: Objective-C and Objective-C++ Dialect Options118572 ! Node: Language Independent Options129112 ! Node: Warning Options131234 ! Node: Debugging Options197762 ! Node: Optimize Options249362 ! Ref: Type-punning306051 ! Node: Preprocessor Options383145 ! Ref: Wtrigraphs387242 ! Ref: dashMF391990 ! Ref: fdollars-in-identifiers402854 ! Node: Assembler Options412933 ! Node: Link Options413637 ! Ref: Link Options-Footnote-1423977 ! Node: Directory Options424311 ! Node: Spec Files430588 ! Node: Target Options452116 ! Node: Submodel Options452515 ! Node: Adapteva Epiphany Options454202 ! Node: ARM Options460135 ! Node: AVR Options476457 ! Node: Blackfin Options495696 ! Node: C6X Options503648 ! Node: CRIS Options505190 ! Node: CR16 Options508927 ! Node: Darwin Options509836 ! Node: DEC Alpha Options517328 ! Node: DEC Alpha/VMS Options529225 ! Node: FR30 Options529802 ! Node: FRV Options530376 ! Node: GNU/Linux Options537095 ! Node: H8/300 Options538356 ! Node: HPPA Options539423 ! Node: i386 and x86-64 Options548912 ! Node: i386 and x86-64 Windows Options582558 ! Node: IA-64 Options585106 ! Node: IA-64/VMS Options593124 ! Node: LM32 Options593680 ! Node: M32C Options594209 ! Node: M32R/D Options595499 ! Node: M680x0 Options599086 ! Node: MCore Options613089 ! Node: MeP Options614590 ! Node: MicroBlaze Options618563 ! Node: MIPS Options621134 ! Node: MMIX Options649271 ! Node: MN10300 Options651753 ! Node: PDP-11 Options654301 ! Node: picoChip Options655995 ! Node: PowerPC Options658192 ! Node: RL78 Options658413 ! Node: RS/6000 and PowerPC Options659075 ! Node: RX Options696782 ! Node: S/390 and zSeries Options703848 ! Node: Score Options711780 ! Node: SH Options712608 ! Node: Solaris 2 Options726843 ! Node: SPARC Options728078 ! Node: SPU Options740506 ! Node: System V Options745507 ! Node: TILE-Gx Options746333 ! Node: TILEPro Options746879 ! Node: V850 Options747383 ! Node: VAX Options751008 ! Node: VxWorks Options751556 ! Node: x86-64 Options752711 ! Node: Xstormy16 Options752929 ! Node: Xtensa Options753218 ! Node: zSeries Options757552 ! Node: Code Gen Options757748 ! Node: Environment Variables784283 ! Node: Precompiled Headers792375 ! Node: C Implementation798574 ! Node: Translation implementation800237 ! Node: Environment implementation800811 ! Node: Identifiers implementation801361 ! Node: Characters implementation802415 ! Node: Integers implementation805221 ! Node: Floating point implementation807046 ! Node: Arrays and pointers implementation809975 ! Ref: Arrays and pointers implementation-Footnote-1811410 ! Node: Hints implementation811534 ! Node: Structures unions enumerations and bit-fields implementation813000 ! Node: Qualifiers implementation814986 ! Node: Declarators implementation816758 ! Node: Statements implementation817100 ! Node: Preprocessing directives implementation817427 ! Node: Library functions implementation819532 ! Node: Architecture implementation820172 ! Node: Locale-specific behavior implementation820875 ! Node: C++ Implementation821180 ! Node: Conditionally-supported behavior822460 ! Node: Exception handling822970 ! Node: C Extensions823379 ! Node: Statement Exprs828290 ! Node: Local Labels832803 ! Node: Labels as Values835782 ! Ref: Labels as Values-Footnote-1838191 ! Node: Nested Functions838374 ! Node: Constructing Calls842307 ! Node: Typeof847038 ! Node: Conditionals850353 ! Node: __int128851244 ! Node: Long Long851764 ! Node: Complex853266 ! Node: Floating Types855837 ! Node: Half-Precision856975 ! Node: Decimal Float859157 ! Node: Hex Floats861024 ! Node: Fixed-Point862065 ! Node: Named Address Spaces865359 ! Ref: AVR Named Address Spaces866053 ! Node: Zero Length871423 ! Node: Empty Structures874710 ! Node: Variable Length875126 ! Node: Variadic Macros877779 ! Node: Escaped Newlines880161 ! Node: Subscripting881000 ! Node: Pointer Arith881723 ! Node: Initializers882291 ! Node: Compound Literals882787 ! Node: Designated Inits886149 ! Node: Case Ranges889804 ! Node: Cast to Union890487 ! Node: Mixed Declarations891583 ! Node: Function Attributes892089 ! Node: Attribute Syntax976266 ! Node: Function Prototypes986712 ! Node: C++ Comments988493 ! Node: Dollar Signs989012 ! Node: Character Escapes989477 ! Node: Variable Attributes989771 ! Ref: AVR Variable Attributes1003470 ! Ref: MeP Variable Attributes1006151 ! Ref: i386 Variable Attributes1008112 ! Node: Type Attributes1013805 ! Ref: MeP Type Attributes1027546 ! Ref: i386 Type Attributes1027820 ! Ref: PowerPC Type Attributes1028660 ! Ref: SPU Type Attributes1029522 ! Node: Alignment1029813 ! Node: Inline1031187 ! Node: Volatiles1036171 ! Node: Extended Asm1039066 ! Ref: Example of asm with clobbered asm reg1045155 ! Ref: Extended asm with goto1054922 ! Node: Constraints1062657 ! Node: Simple Constraints1063741 ! Node: Multi-Alternative1071062 ! Node: Modifiers1072779 ! Node: Machine Constraints1075673 ! Node: Asm Labels1123061 ! Node: Explicit Reg Vars1124737 ! Node: Global Reg Vars1126345 ! Node: Local Reg Vars1130895 ! Node: Alternate Keywords1133336 ! Node: Incomplete Enums1134822 ! Node: Function Names1135579 ! Node: Return Address1137741 ! Node: Vector Extensions1141294 ! Node: Offsetof1147473 ! Node: __sync Builtins1148287 ! Node: __atomic Builtins1153692 ! Node: Object Size Checking1164902 ! Node: Other Builtins1170332 ! Node: Target Builtins1198789 ! Node: Alpha Built-in Functions1199832 ! Node: ARM iWMMXt Built-in Functions1202831 ! Node: ARM NEON Intrinsics1209550 ! Node: AVR Built-in Functions1415745 ! Node: Blackfin Built-in Functions1418816 ! Node: FR-V Built-in Functions1419433 ! Node: Argument Types1420292 ! Node: Directly-mapped Integer Functions1422048 ! Node: Directly-mapped Media Functions1423130 ! Node: Raw read/write Functions1430162 ! Node: Other Built-in Functions1431074 ! Node: X86 Built-in Functions1432263 ! Node: MIPS DSP Built-in Functions1487086 ! Node: MIPS Paired-Single Support1499589 ! Node: MIPS Loongson Built-in Functions1501090 ! Node: Paired-Single Arithmetic1507610 ! Node: Paired-Single Built-in Functions1508558 ! Node: MIPS-3D Built-in Functions1511230 ! Node: picoChip Built-in Functions1516607 ! Node: Other MIPS Built-in Functions1517973 ! Node: PowerPC AltiVec/VSX Built-in Functions1518497 ! Node: RX Built-in Functions1629155 ! Node: SPARC VIS Built-in Functions1633165 ! Node: SPU Built-in Functions1638769 ! Node: TI C6X Built-in Functions1640585 ! Node: TILE-Gx Built-in Functions1641609 ! Node: TILEPro Built-in Functions1642729 ! Node: Target Format Checks1643800 ! Node: Solaris Format Checks1644232 ! Node: Darwin Format Checks1644658 ! Node: Pragmas1645485 ! Node: ARM Pragmas1646195 ! Node: M32C Pragmas1646798 ! Node: MeP Pragmas1647872 ! Node: RS/6000 and PowerPC Pragmas1649941 ! Node: Darwin Pragmas1650682 ! Node: Solaris Pragmas1651749 ! Node: Symbol-Renaming Pragmas1652910 ! Node: Structure-Packing Pragmas1655544 ! Node: Weak Pragmas1657194 ! Node: Diagnostic Pragmas1657928 ! Node: Visibility Pragmas1660956 ! Node: Push/Pop Macro Pragmas1661708 ! Node: Function Specific Option Pragmas1662681 ! Node: Unnamed Fields1664945 ! Node: Thread-Local1667183 ! Node: C99 Thread-Local Edits1669290 ! Node: C++98 Thread-Local Edits1671302 ! Node: Binary constants1674747 ! Node: C++ Extensions1675418 ! Node: C++ Volatiles1677066 ! Node: Restricted Pointers1679426 ! Node: Vague Linkage1681024 ! Node: C++ Interface1684686 ! Ref: C++ Interface-Footnote-11688983 ! Node: Template Instantiation1689120 ! Node: Bound member functions1696132 ! Node: C++ Attributes1697675 ! Node: Namespace Association1699333 ! Node: Type Traits1700747 ! Node: Java Exceptions1707232 ! Node: Deprecated Features1708629 ! Node: Backwards Compatibility1711594 ! Node: Objective-C1712952 ! Node: GNU Objective-C runtime API1713561 ! Node: Modern GNU Objective-C runtime API1714568 ! Node: Traditional GNU Objective-C runtime API1717005 ! Node: Executing code before main1717733 ! Node: What you can and what you cannot do in +load1720471 ! Node: Type encoding1722861 ! Node: Legacy type encoding1727937 ! Node: @encode1729028 ! Node: Method signatures1729569 ! Node: Garbage Collection1731564 ! Node: Constant string objects1734253 ! Node: compatibility_alias1736761 ! Node: Exceptions1737483 ! Node: Synchronization1740194 ! Node: Fast enumeration1741378 ! Node: Using fast enumeration1741690 ! Node: c99-like fast enumeration syntax1742901 ! Node: Fast enumeration details1743604 ! Node: Fast enumeration protocol1745945 ! Node: Messaging with the GNU Objective-C runtime1749097 ! Node: Dynamically registering methods1750468 ! Node: Forwarding hook1752159 ! Node: Compatibility1755198 ! Node: Gcov1761765 ! Node: Gcov Intro1762298 ! Node: Invoking Gcov1765016 ! Node: Gcov and Optimization1777927 ! Node: Gcov Data Files1780582 ! Node: Cross-profiling1781722 ! Node: Trouble1783573 ! Node: Actual Bugs1785058 ! Node: Cross-Compiler Problems1785514 ! Node: Interoperation1785934 ! Node: Incompatibilities1793071 ! Node: Fixed Headers1801222 ! Node: Standard Libraries1802885 ! Node: Disappointments1804257 ! Node: C++ Misunderstandings1808615 ! Node: Static Definitions1809426 ! Node: Name lookup1810479 ! Ref: Name lookup-Footnote-11815257 ! Node: Temporaries1815444 ! Node: Copy Assignment1817420 ! Node: Non-bugs1819227 ! Node: Warnings and Errors1829734 ! Node: Bugs1831498 ! Node: Bug Criteria1832062 ! Node: Bug Reporting1834272 ! Node: Service1834493 ! Node: Contributing1835312 ! Node: Funding1836052 ! Node: GNU Project1838541 ! Node: Copying1839187 ! Node: GNU Free Documentation License1876715 ! Node: Contributors1901852 ! Node: Option Index1939254 ! Node: Keyword Index2123257  End Tag Table --- 51168,51461 ---- Node: Invoking GCC18432 Node: Option Summary22183 Node: Overall Options60571 ! Node: Invoking G++74850 ! Node: C Dialect Options76373 ! Node: C++ Dialect Options92133 ! Node: Objective-C and Objective-C++ Dialect Options118573 ! Node: Language Independent Options129113 ! Node: Warning Options131235 ! Node: Debugging Options197763 ! Node: Optimize Options249363 ! Ref: Type-punning306052 ! Node: Preprocessor Options383146 ! Ref: Wtrigraphs387243 ! Ref: dashMF391991 ! Ref: fdollars-in-identifiers402855 ! Node: Assembler Options412934 ! Node: Link Options413638 ! Ref: Link Options-Footnote-1423978 ! Node: Directory Options424312 ! Node: Spec Files430589 ! Node: Target Options452117 ! Node: Submodel Options452516 ! Node: Adapteva Epiphany Options454203 ! Node: ARM Options460136 ! Node: AVR Options476488 ! Node: Blackfin Options495727 ! Node: C6X Options503679 ! Node: CRIS Options505221 ! Node: CR16 Options508958 ! Node: Darwin Options509867 ! Node: DEC Alpha Options517359 ! Node: DEC Alpha/VMS Options529256 ! Node: FR30 Options529833 ! Node: FRV Options530407 ! Node: GNU/Linux Options537126 ! Node: H8/300 Options538387 ! Node: HPPA Options539454 ! Node: i386 and x86-64 Options548943 ! Node: i386 and x86-64 Windows Options582589 ! Node: IA-64 Options585137 ! Node: IA-64/VMS Options593155 ! Node: LM32 Options593711 ! Node: M32C Options594240 ! Node: M32R/D Options595530 ! Node: M680x0 Options599117 ! Node: MCore Options613120 ! Node: MeP Options614621 ! Node: MicroBlaze Options618594 ! Node: MIPS Options621165 ! Node: MMIX Options649302 ! Node: MN10300 Options651784 ! Node: PDP-11 Options654332 ! Node: picoChip Options656026 ! Node: PowerPC Options658223 ! Node: RL78 Options658444 ! Node: RS/6000 and PowerPC Options659106 ! Node: RX Options696813 ! Node: S/390 and zSeries Options703879 ! Node: Score Options711811 ! Node: SH Options712639 ! Node: Solaris 2 Options726874 ! Node: SPARC Options728109 ! Node: SPU Options740687 ! Node: System V Options745688 ! Node: TILE-Gx Options746514 ! Node: TILEPro Options747060 ! Node: V850 Options747564 ! Node: VAX Options751189 ! Node: VxWorks Options751737 ! Node: x86-64 Options752892 ! Node: Xstormy16 Options753110 ! Node: Xtensa Options753399 ! Node: zSeries Options757733 ! Node: Code Gen Options757929 ! Node: Environment Variables784464 ! Node: Precompiled Headers792556 ! Node: C Implementation798755 ! Node: Translation implementation800418 ! Node: Environment implementation800992 ! Node: Identifiers implementation801542 ! Node: Characters implementation802596 ! Node: Integers implementation805402 ! Node: Floating point implementation807227 ! Node: Arrays and pointers implementation810156 ! Ref: Arrays and pointers implementation-Footnote-1811591 ! Node: Hints implementation811715 ! Node: Structures unions enumerations and bit-fields implementation813181 ! Node: Qualifiers implementation815167 ! Node: Declarators implementation816939 ! Node: Statements implementation817281 ! Node: Preprocessing directives implementation817608 ! Node: Library functions implementation819713 ! Node: Architecture implementation820353 ! Node: Locale-specific behavior implementation821056 ! Node: C++ Implementation821361 ! Node: Conditionally-supported behavior822641 ! Node: Exception handling823151 ! Node: C Extensions823560 ! Node: Statement Exprs828471 ! Node: Local Labels832984 ! Node: Labels as Values835963 ! Ref: Labels as Values-Footnote-1838498 ! Node: Nested Functions838681 ! Node: Constructing Calls842614 ! Node: Typeof847345 ! Node: Conditionals850660 ! Node: __int128851551 ! Node: Long Long852071 ! Node: Complex853573 ! Node: Floating Types856144 ! Node: Half-Precision857282 ! Node: Decimal Float859464 ! Node: Hex Floats861331 ! Node: Fixed-Point862372 ! Node: Named Address Spaces865666 ! Ref: AVR Named Address Spaces866360 ! Node: Zero Length871730 ! Node: Empty Structures875017 ! Node: Variable Length875433 ! Node: Variadic Macros878086 ! Node: Escaped Newlines880468 ! Node: Subscripting881307 ! Node: Pointer Arith882030 ! Node: Initializers882598 ! Node: Compound Literals883094 ! Node: Designated Inits886456 ! Node: Case Ranges890111 ! Node: Cast to Union890794 ! Node: Mixed Declarations891890 ! Node: Function Attributes892396 ! Node: Attribute Syntax976573 ! Node: Function Prototypes987019 ! Node: C++ Comments988800 ! Node: Dollar Signs989319 ! Node: Character Escapes989784 ! Node: Variable Attributes990078 ! Ref: AVR Variable Attributes1003777 ! Ref: MeP Variable Attributes1006458 ! Ref: i386 Variable Attributes1008419 ! Node: Type Attributes1014112 ! Ref: MeP Type Attributes1027853 ! Ref: i386 Type Attributes1028127 ! Ref: PowerPC Type Attributes1028967 ! Ref: SPU Type Attributes1029829 ! Node: Alignment1030120 ! Node: Inline1031494 ! Node: Volatiles1036478 ! Node: Extended Asm1039373 ! Ref: Example of asm with clobbered asm reg1045462 ! Ref: Extended asm with goto1055229 ! Node: Constraints1062964 ! Node: Simple Constraints1064048 ! Node: Multi-Alternative1071369 ! Node: Modifiers1073086 ! Node: Machine Constraints1075980 ! Node: Asm Labels1123368 ! Node: Explicit Reg Vars1125044 ! Node: Global Reg Vars1126652 ! Node: Local Reg Vars1131202 ! Node: Alternate Keywords1133643 ! Node: Incomplete Enums1135129 ! Node: Function Names1135886 ! Node: Return Address1138048 ! Node: Vector Extensions1141601 ! Node: Offsetof1147780 ! Node: __sync Builtins1148594 ! Node: __atomic Builtins1153999 ! Node: Object Size Checking1165209 ! Node: Other Builtins1170639 ! Node: Target Builtins1199096 ! Node: Alpha Built-in Functions1200139 ! Node: ARM iWMMXt Built-in Functions1203138 ! Node: ARM NEON Intrinsics1209857 ! Node: AVR Built-in Functions1416052 ! Node: Blackfin Built-in Functions1419123 ! Node: FR-V Built-in Functions1419740 ! Node: Argument Types1420599 ! Node: Directly-mapped Integer Functions1422355 ! Node: Directly-mapped Media Functions1423437 ! Node: Raw read/write Functions1430469 ! Node: Other Built-in Functions1431381 ! Node: X86 Built-in Functions1432570 ! Node: MIPS DSP Built-in Functions1487393 ! Node: MIPS Paired-Single Support1499896 ! Node: MIPS Loongson Built-in Functions1501397 ! Node: Paired-Single Arithmetic1507917 ! Node: Paired-Single Built-in Functions1508865 ! Node: MIPS-3D Built-in Functions1511537 ! Node: picoChip Built-in Functions1516914 ! Node: Other MIPS Built-in Functions1518280 ! Node: PowerPC AltiVec/VSX Built-in Functions1518804 ! Node: RX Built-in Functions1629462 ! Node: SPARC VIS Built-in Functions1633472 ! Node: SPU Built-in Functions1639076 ! Node: TI C6X Built-in Functions1640892 ! Node: TILE-Gx Built-in Functions1641916 ! Node: TILEPro Built-in Functions1643036 ! Node: Target Format Checks1644107 ! Node: Solaris Format Checks1644539 ! Node: Darwin Format Checks1644965 ! Node: Pragmas1645792 ! Node: ARM Pragmas1646502 ! Node: M32C Pragmas1647105 ! Node: MeP Pragmas1648179 ! Node: RS/6000 and PowerPC Pragmas1650248 ! Node: Darwin Pragmas1650989 ! Node: Solaris Pragmas1652056 ! Node: Symbol-Renaming Pragmas1653217 ! Node: Structure-Packing Pragmas1655851 ! Node: Weak Pragmas1657501 ! Node: Diagnostic Pragmas1658235 ! Node: Visibility Pragmas1661263 ! Node: Push/Pop Macro Pragmas1662015 ! Node: Function Specific Option Pragmas1662988 ! Node: Unnamed Fields1665252 ! Node: Thread-Local1667490 ! Node: C99 Thread-Local Edits1669597 ! Node: C++98 Thread-Local Edits1671609 ! Node: Binary constants1675054 ! Node: C++ Extensions1675725 ! Node: C++ Volatiles1677373 ! Node: Restricted Pointers1679733 ! Node: Vague Linkage1681331 ! Node: C++ Interface1684993 ! Ref: C++ Interface-Footnote-11689290 ! Node: Template Instantiation1689427 ! Node: Bound member functions1696439 ! Node: C++ Attributes1697982 ! Node: Namespace Association1699640 ! Node: Type Traits1701054 ! Node: Java Exceptions1707539 ! Node: Deprecated Features1708936 ! Node: Backwards Compatibility1711901 ! Node: Objective-C1713259 ! Node: GNU Objective-C runtime API1713868 ! Node: Modern GNU Objective-C runtime API1714875 ! Node: Traditional GNU Objective-C runtime API1717312 ! Node: Executing code before main1718040 ! Node: What you can and what you cannot do in +load1720778 ! Node: Type encoding1723168 ! Node: Legacy type encoding1728244 ! Node: @encode1729335 ! Node: Method signatures1729876 ! Node: Garbage Collection1731871 ! Node: Constant string objects1734560 ! Node: compatibility_alias1737068 ! Node: Exceptions1737790 ! Node: Synchronization1740501 ! Node: Fast enumeration1741685 ! Node: Using fast enumeration1741997 ! Node: c99-like fast enumeration syntax1743208 ! Node: Fast enumeration details1743911 ! Node: Fast enumeration protocol1746252 ! Node: Messaging with the GNU Objective-C runtime1749404 ! Node: Dynamically registering methods1750775 ! Node: Forwarding hook1752466 ! Node: Compatibility1755505 ! Node: Gcov1762072 ! Node: Gcov Intro1762605 ! Node: Invoking Gcov1765323 ! Node: Gcov and Optimization1778234 ! Node: Gcov Data Files1780889 ! Node: Cross-profiling1782029 ! Node: Trouble1783880 ! Node: Actual Bugs1785365 ! Node: Cross-Compiler Problems1785821 ! Node: Interoperation1786241 ! Node: Incompatibilities1793378 ! Node: Fixed Headers1801529 ! Node: Standard Libraries1803192 ! Node: Disappointments1804564 ! Node: C++ Misunderstandings1808922 ! Node: Static Definitions1809733 ! Node: Name lookup1810786 ! Ref: Name lookup-Footnote-11815564 ! Node: Temporaries1815751 ! Node: Copy Assignment1817727 ! Node: Non-bugs1819534 ! Node: Warnings and Errors1830041 ! Node: Bugs1831805 ! Node: Bug Criteria1832369 ! Node: Bug Reporting1834579 ! Node: Service1834800 ! Node: Contributing1835619 ! Node: Funding1836359 ! Node: GNU Project1838848 ! Node: Copying1839494 ! Node: GNU Free Documentation License1877022 ! Node: Contributors1902159 ! Node: Option Index1939561 ! Node: Keyword Index2123710  End Tag Table diff -Nrcpad gcc-4.7.3/gcc/doc/gccinstall.info gcc-4.7.4/gcc/doc/gccinstall.info *** gcc-4.7.3/gcc/doc/gccinstall.info Thu Apr 11 08:57:44 2013 --- gcc-4.7.4/gcc/doc/gccinstall.info Thu Jun 12 14:09:25 2014 *************** *** 1,5 **** This is doc/gccinstall.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/doc/install.texi. Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 --- 1,5 ---- This is doc/gccinstall.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/doc/install.texi. Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 diff -Nrcpad gcc-4.7.3/gcc/doc/gccint.info gcc-4.7.4/gcc/doc/gccint.info *** gcc-4.7.3/gcc/doc/gccint.info Thu Apr 11 08:57:43 2013 --- gcc-4.7.4/gcc/doc/gccint.info Thu Jun 12 14:09:25 2014 *************** *** 1,5 **** This is doc/gccint.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/doc/gccint.texi. Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 Free --- 1,5 ---- This is doc/gccint.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/doc/gccint.texi. Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 Free *************** Introduction *** 61,67 **** This manual documents the internals of the GNU compilers, including how to port them to new targets and some information about how to write front ends for new languages. It corresponds to the compilers ! (GCC) version 4.7.3. The use of the GNU compilers is documented in a separate manual. *Note Introduction: (gcc)Top. This manual is mainly a reference manual rather than a tutorial. It --- 61,67 ---- This manual documents the internals of the GNU compilers, including how to port them to new targets and some information about how to write front ends for new languages. It corresponds to the compilers ! (GCC) version 4.7.4. The use of the GNU compilers is documented in a separate manual. *Note Introduction: (gcc)Top. This manual is mainly a reference manual rather than a tutorial. It *************** Here are run-time target specifications. *** 26798,26803 **** --- 26798,26813 ---- Objective-C only, to obtain a common-format string object when the target provides one. + -- C Target Hook: void TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE + (const char *CLASSNAME) + Declare that Objective C class CLASSNAME is referenced by the + current TU. + + -- C Target Hook: void TARGET_OBJC_DECLARE_CLASS_DEFINITION (const + char *CLASSNAME) + Declare that Objective C class CLASSNAME is defined by the + current TU. + -- C Target Hook: bool TARGET_STRING_OBJECT_REF_TYPE_P (const_tree STRINGREF) If a target implements string objects then this hook should return *************** This is about outputting labels. *** 33971,33988 **** On systems where the assembler can handle quoted names, you can use this macro to provide more human-readable names. - -- Macro: ASM_DECLARE_CLASS_REFERENCE (STREAM, NAME) - A C statement (sans semicolon) to output to the stdio stream - STREAM commands to declare that the label NAME is an Objective-C - class reference. This is only needed for targets whose linkers - have special support for NeXT-style runtimes. - - -- Macro: ASM_DECLARE_UNRESOLVED_REFERENCE (STREAM, NAME) - A C statement (sans semicolon) to output to the stdio stream - STREAM commands to declare that the label NAME is an unresolved - Objective-C class reference. This is only needed for targets - whose linkers have special support for NeXT-style runtimes. -  File: gccint.info, Node: Initialization, Next: Macros for Initialization, Prev: Label Output, Up: Assembler Format --- 33981,33986 ---- *************** Here are macros for SDB and DWARF output *** 35123,35128 **** --- 35121,35131 ---- should be emitted. These sections are not used on most platforms, and in particular GDB does not use them. + -- Target Hook: bool TARGET_FORCE_AT_COMP_DIR + True if the `DW_AT_comp_dir' attribute should be emitted for each + compilation unit. This attribute is required for the darwin + linker to emit debug information. + -- Target Hook: bool TARGET_DELAY_SCHED2 True if sched2 is not to be run at its normal place. This usually means it will be run as part of machine-specific reorg. *************** Concept Index *** 44735,44746 **** * ASM_APP_OFF: File Framework. (line 78) * ASM_APP_ON: File Framework. (line 71) * ASM_COMMENT_START: File Framework. (line 66) - * ASM_DECLARE_CLASS_REFERENCE: Label Output. (line 465) * ASM_DECLARE_FUNCTION_NAME: Label Output. (line 99) * ASM_DECLARE_FUNCTION_SIZE: Label Output. (line 114) * ASM_DECLARE_OBJECT_NAME: Label Output. (line 127) * ASM_DECLARE_REGISTER_GLOBAL: Label Output. (line 156) - * ASM_DECLARE_UNRESOLVED_REFERENCE: Label Output. (line 471) * ASM_FINAL_SPEC: Driver. (line 82) * ASM_FINISH_DECLARE_OBJECT: Label Output. (line 164) * ASM_FORMAT_PRIVATE_NAME: Label Output. (line 383) --- 44738,44747 ---- *************** Concept Index *** 44771,44781 **** * ASM_OUTPUT_DEBUG_LABEL: Label Output. (line 355) * ASM_OUTPUT_DEF: Label Output. (line 404) * ASM_OUTPUT_DEF_FROM_DECLS: Label Output. (line 412) ! * ASM_OUTPUT_DWARF_DELTA: SDB and DWARF. (line 69) ! * ASM_OUTPUT_DWARF_OFFSET: SDB and DWARF. (line 78) ! * ASM_OUTPUT_DWARF_PCREL: SDB and DWARF. (line 84) ! * ASM_OUTPUT_DWARF_TABLE_REF: SDB and DWARF. (line 89) ! * ASM_OUTPUT_DWARF_VMS_DELTA: SDB and DWARF. (line 73) * ASM_OUTPUT_EXTERNAL: Label Output. (line 284) * ASM_OUTPUT_FDESC: Data Output. (line 60) * ASM_OUTPUT_FUNCTION_LABEL: Label Output. (line 17) --- 44772,44782 ---- * ASM_OUTPUT_DEBUG_LABEL: Label Output. (line 355) * ASM_OUTPUT_DEF: Label Output. (line 404) * ASM_OUTPUT_DEF_FROM_DECLS: Label Output. (line 412) ! * ASM_OUTPUT_DWARF_DELTA: SDB and DWARF. (line 74) ! * ASM_OUTPUT_DWARF_OFFSET: SDB and DWARF. (line 83) ! * ASM_OUTPUT_DWARF_PCREL: SDB and DWARF. (line 89) ! * ASM_OUTPUT_DWARF_TABLE_REF: SDB and DWARF. (line 94) ! * ASM_OUTPUT_DWARF_VMS_DELTA: SDB and DWARF. (line 78) * ASM_OUTPUT_EXTERNAL: Label Output. (line 284) * ASM_OUTPUT_FDESC: Data Output. (line 60) * ASM_OUTPUT_FUNCTION_LABEL: Label Output. (line 17) *************** Concept Index *** 44963,44969 **** * BYTES_BIG_ENDIAN, effect on subreg: Regs and Memory. (line 221) * C statements for assembler output: Output Statement. (line 6) * C99 math functions, implicit usage: Library Calls. (line 70) ! * C_COMMON_OVERRIDE_OPTIONS: Run-time Target. (line 127) * c_register_pragma: Misc. (line 404) * c_register_pragma_with_expansion: Misc. (line 406) * call <1>: Side Effects. (line 92) --- 44964,44970 ---- * BYTES_BIG_ENDIAN, effect on subreg: Regs and Memory. (line 221) * C statements for assembler output: Output Statement. (line 6) * C99 math functions, implicit usage: Library Calls. (line 70) ! * C_COMMON_OVERRIDE_OPTIONS: Run-time Target. (line 137) * c_register_pragma: Misc. (line 404) * c_register_pragma_with_expansion: Misc. (line 406) * call <1>: Side Effects. (line 92) *************** Concept Index *** 47026,47032 **** * PUT_CODE: RTL Objects. (line 47) * PUT_MODE: Machine Modes. (line 283) * PUT_REG_NOTE_KIND: Insns. (line 351) ! * PUT_SDB_: SDB and DWARF. (line 101) * QCmode: Machine Modes. (line 197) * QFmode: Machine Modes. (line 54) * QImode: Machine Modes. (line 25) --- 47027,47033 ---- * PUT_CODE: RTL Objects. (line 47) * PUT_MODE: Machine Modes. (line 283) * PUT_REG_NOTE_KIND: Insns. (line 351) ! * PUT_SDB_: SDB and DWARF. (line 106) * QCmode: Machine Modes. (line 197) * QFmode: Machine Modes. (line 54) * QImode: Machine Modes. (line 25) *************** Concept Index *** 47297,47307 **** * scratch_operand: Machine-Independent Predicates. (line 50) * SDATA_SECTION_ASM_OP: Sections. (line 58) ! * SDB_ALLOW_FORWARD_REFERENCES: SDB and DWARF. (line 119) ! * SDB_ALLOW_UNKNOWN_REFERENCES: SDB and DWARF. (line 114) * SDB_DEBUGGING_INFO: SDB and DWARF. (line 9) ! * SDB_DELIM: SDB and DWARF. (line 107) ! * SDB_OUTPUT_SOURCE_LINE: SDB and DWARF. (line 124) * SDmode: Machine Modes. (line 85) * sdot_prodM instruction pattern: Standard Names. (line 338) * search options: Including Patterns. (line 44) --- 47298,47308 ---- * scratch_operand: Machine-Independent Predicates. (line 50) * SDATA_SECTION_ASM_OP: Sections. (line 58) ! * SDB_ALLOW_FORWARD_REFERENCES: SDB and DWARF. (line 124) ! * SDB_ALLOW_UNKNOWN_REFERENCES: SDB and DWARF. (line 119) * SDB_DEBUGGING_INFO: SDB and DWARF. (line 9) ! * SDB_DELIM: SDB and DWARF. (line 112) ! * SDB_OUTPUT_SOURCE_LINE: SDB and DWARF. (line 129) * SDmode: Machine Modes. (line 85) * sdot_prodM instruction pattern: Standard Names. (line 338) * search options: Including Patterns. (line 44) *************** Concept Index *** 47498,47504 **** * SWITCH_BODY: Statements for C++. (line 6) * SWITCH_COND: Statements for C++. (line 6) * SWITCH_STMT: Statements for C++. (line 6) ! * SWITCHABLE_TARGET: Run-time Target. (line 155) * SYMBOL_FLAG_ANCHOR: Special Accessors. (line 120) * SYMBOL_FLAG_EXTERNAL: Special Accessors. (line 102) * SYMBOL_FLAG_FUNCTION: Special Accessors. (line 95) --- 47499,47505 ---- * SWITCH_BODY: Statements for C++. (line 6) * SWITCH_COND: Statements for C++. (line 6) * SWITCH_STMT: Statements for C++. (line 6) ! * SWITCHABLE_TARGET: Run-time Target. (line 165) * SYMBOL_FLAG_ANCHOR: Special Accessors. (line 120) * SYMBOL_FLAG_EXTERNAL: Special Accessors. (line 102) * SYMBOL_FLAG_FUNCTION: Special Accessors. (line 95) *************** Concept Index *** 47640,47646 **** * TARGET_ASM_OPEN_PAREN: Data Output. (line 130) * TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA: Data Output. (line 40) * TARGET_ASM_OUTPUT_ANCHOR: Anchored Addresses. (line 44) ! * TARGET_ASM_OUTPUT_DWARF_DTPREL: SDB and DWARF. (line 96) * TARGET_ASM_OUTPUT_MI_THUNK: Function Entry. (line 195) * TARGET_ASM_OUTPUT_SOURCE_FILENAME: File Framework. (line 94) * TARGET_ASM_RECORD_GCC_SWITCHES: File Framework. (line 164) --- 47641,47647 ---- * TARGET_ASM_OPEN_PAREN: Data Output. (line 130) * TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA: Data Output. (line 40) * TARGET_ASM_OUTPUT_ANCHOR: Anchored Addresses. (line 44) ! * TARGET_ASM_OUTPUT_DWARF_DTPREL: SDB and DWARF. (line 101) * TARGET_ASM_OUTPUT_MI_THUNK: Function Entry. (line 195) * TARGET_ASM_OUTPUT_SOURCE_FILENAME: File Framework. (line 94) * TARGET_ASM_RECORD_GCC_SWITCHES: File Framework. (line 164) *************** Concept Index *** 47680,47686 **** * TARGET_CC_MODES_COMPATIBLE: MODE_CC Condition Codes. (line 116) * TARGET_CHECK_PCH_TARGET_FLAGS: PCH Target. (line 28) ! * TARGET_CHECK_STRING_OBJECT_FORMAT_ARG: Run-time Target. (line 111) * TARGET_CLASS_LIKELY_SPILLED_P: Register Classes. (line 494) * TARGET_CLASS_MAX_NREGS: Register Classes. (line 513) * TARGET_COMMUTATIVE_P: Misc. (line 679) --- 47681,47687 ---- * TARGET_CC_MODES_COMPATIBLE: MODE_CC Condition Codes. (line 116) * TARGET_CHECK_PCH_TARGET_FLAGS: PCH Target. (line 28) ! * TARGET_CHECK_STRING_OBJECT_FORMAT_ARG: Run-time Target. (line 121) * TARGET_CLASS_LIKELY_SPILLED_P: Register Classes. (line 494) * TARGET_CLASS_MAX_NREGS: Register Classes. (line 513) * TARGET_COMMUTATIVE_P: Misc. (line 679) *************** Concept Index *** 47711,47718 **** * TARGET_DEFAULT_SHORT_ENUMS: Type Layout. (line 167) * TARGET_DEFAULT_TARGET_FLAGS: Run-time Target. (line 56) * TARGET_DEFERRED_OUTPUT_DEFS: Label Output. (line 422) ! * TARGET_DELAY_SCHED2: SDB and DWARF. (line 61) ! * TARGET_DELAY_VARTRACK: SDB and DWARF. (line 65) * TARGET_DELEGITIMIZE_ADDRESS: Addressing Modes. (line 238) * TARGET_DLLIMPORT_DECL_ATTRIBUTES: Target Attributes. (line 55) * TARGET_DWARF_CALLING_CONVENTION: SDB and DWARF. (line 18) --- 47712,47719 ---- * TARGET_DEFAULT_SHORT_ENUMS: Type Layout. (line 167) * TARGET_DEFAULT_TARGET_FLAGS: Run-time Target. (line 56) * TARGET_DEFERRED_OUTPUT_DEFS: Label Output. (line 422) ! * TARGET_DELAY_SCHED2: SDB and DWARF. (line 66) ! * TARGET_DELAY_VARTRACK: SDB and DWARF. (line 70) * TARGET_DELEGITIMIZE_ADDRESS: Addressing Modes. (line 238) * TARGET_DLLIMPORT_DECL_ATTRIBUTES: Target Attributes. (line 55) * TARGET_DWARF_CALLING_CONVENTION: SDB and DWARF. (line 18) *************** Concept Index *** 47754,47759 **** --- 47755,47761 ---- * TARGET_FLT_EVAL_METHOD: Type Layout. (line 148) * TARGET_FN_ABI_VA_LIST: Register Arguments. (line 289) * TARGET_FOLD_BUILTIN: Misc. (line 650) + * TARGET_FORCE_AT_COMP_DIR: SDB and DWARF. (line 61) * TARGET_FORMAT_TYPES: Misc. (line 850) * TARGET_FRAME_POINTER_REQUIRED: Elimination. (line 9) * TARGET_FUNCTION_ARG: Register Arguments. (line 12) *************** Concept Index *** 47829,47840 **** * TARGET_N_FORMAT_TYPES: Misc. (line 855) * TARGET_NARROW_VOLATILE_BITFIELD: Storage Layout. (line 404) * TARGET_OBJC_CONSTRUCT_STRING_OBJECT: Run-time Target. (line 90) * TARGET_OBJECT_SUFFIX: Misc. (line 731) * TARGET_OBJFMT_CPP_BUILTINS: Run-time Target. (line 46) * TARGET_OPTF: Misc. (line 837) ! * TARGET_OPTION_DEFAULT_PARAMS: Run-time Target. (line 151) ! * TARGET_OPTION_INIT_STRUCT: Run-time Target. (line 148) ! * TARGET_OPTION_OPTIMIZATION_TABLE: Run-time Target. (line 134) * TARGET_OPTION_OVERRIDE: Target Attributes. (line 137) * TARGET_OPTION_PRAGMA_PARSE: Target Attributes. (line 131) * TARGET_OPTION_PRINT: Target Attributes. (line 125) --- 47831,47845 ---- * TARGET_N_FORMAT_TYPES: Misc. (line 855) * TARGET_NARROW_VOLATILE_BITFIELD: Storage Layout. (line 404) * TARGET_OBJC_CONSTRUCT_STRING_OBJECT: Run-time Target. (line 90) + * TARGET_OBJC_DECLARE_CLASS_DEFINITION: Run-time Target. (line 111) + * TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE: Run-time Target. + (line 106) * TARGET_OBJECT_SUFFIX: Misc. (line 731) * TARGET_OBJFMT_CPP_BUILTINS: Run-time Target. (line 46) * TARGET_OPTF: Misc. (line 837) ! * TARGET_OPTION_DEFAULT_PARAMS: Run-time Target. (line 161) ! * TARGET_OPTION_INIT_STRUCT: Run-time Target. (line 158) ! * TARGET_OPTION_OPTIMIZATION_TABLE: Run-time Target. (line 144) * TARGET_OPTION_OVERRIDE: Target Attributes. (line 137) * TARGET_OPTION_PRAGMA_PARSE: Target Attributes. (line 131) * TARGET_OPTION_PRINT: Target Attributes. (line 125) *************** Concept Index *** 47842,47848 **** * TARGET_OPTION_SAVE: Target Attributes. (line 113) * TARGET_OPTION_VALID_ATTRIBUTE_P: Target Attributes. (line 102) * TARGET_OS_CPP_BUILTINS: Run-time Target. (line 42) ! * TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE: Run-time Target. (line 117) * TARGET_OVERRIDES_FORMAT_ATTRIBUTES: Misc. (line 859) * TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT: Misc. (line 865) * TARGET_OVERRIDES_FORMAT_INIT: Misc. (line 869) --- 47847,47853 ---- * TARGET_OPTION_SAVE: Target Attributes. (line 113) * TARGET_OPTION_VALID_ATTRIBUTE_P: Target Attributes. (line 102) * TARGET_OS_CPP_BUILTINS: Run-time Target. (line 42) ! * TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE: Run-time Target. (line 127) * TARGET_OVERRIDES_FORMAT_ATTRIBUTES: Misc. (line 859) * TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT: Misc. (line 865) * TARGET_OVERRIDES_FORMAT_INIT: Misc. (line 869) *************** Concept Index *** 47930,47936 **** (line 7) * TARGET_STATIC_CHAIN: Frame Registers. (line 92) * TARGET_STRICT_ARGUMENT_NAMING: Varargs. (line 112) ! * TARGET_STRING_OBJECT_REF_TYPE_P: Run-time Target. (line 106) * TARGET_STRIP_NAME_ENCODING: Sections. (line 290) * TARGET_STRUCT_VALUE_RTX: Aggregate Return. (line 45) * TARGET_SUPPORTS_SPLIT_STACK: Stack Smashing Protection. --- 47935,47941 ---- (line 7) * TARGET_STATIC_CHAIN: Frame Registers. (line 92) * TARGET_STRICT_ARGUMENT_NAMING: Varargs. (line 112) ! * TARGET_STRING_OBJECT_REF_TYPE_P: Run-time Target. (line 116) * TARGET_STRIP_NAME_ENCODING: Sections. (line 290) * TARGET_STRUCT_VALUE_RTX: Aggregate Return. (line 45) * TARGET_SUPPORTS_SPLIT_STACK: Stack Smashing Protection. *************** Node: Target Macros1097861 *** 48668,48764 **** Node: Target Structure1100949 Node: Driver1103064 Node: Run-time Target1122132 ! Node: Per-Function Data1130916 ! Node: Storage Layout1133681 ! Node: Type Layout1159689 ! Node: Registers1174571 ! Node: Register Basics1175545 ! Node: Allocation Order1181050 ! Node: Values in Registers1183496 ! Node: Leaf Functions1190985 ! Node: Stack Registers1193843 ! Node: Register Classes1195115 ! Node: Old Constraints1223729 ! Node: Stack and Calling1230881 ! Node: Frame Layout1231415 ! Node: Exception Handling1242295 ! Node: Stack Checking1248501 ! Node: Frame Registers1253314 ! Node: Elimination1261573 ! Node: Stack Arguments1265802 ! Node: Register Arguments1272699 ! Node: Scalar Return1293015 ! Node: Aggregate Return1299101 ! Node: Caller Saves1303311 ! Node: Function Entry1304489 ! Node: Profiling1317117 ! Node: Tail Calls1318816 ! Node: Stack Smashing Protection1320428 ! Node: Varargs1322060 ! Node: Trampolines1328756 ! Node: Library Calls1334799 ! Node: Addressing Modes1339738 ! Node: Anchored Addresses1359547 ! Node: Condition Code1362196 ! Node: CC0 Condition Codes1364325 ! Node: MODE_CC Condition Codes1367571 ! Node: Cond Exec Macros1373798 ! Node: Costs1374775 ! Node: Scheduling1391193 ! Node: Sections1410599 ! Node: PIC1426297 ! Node: Assembler Format1428357 ! Node: File Framework1429495 ! Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS1436391 ! Node: Data Output1439656 ! Node: Uninitialized Data1447432 ! Node: Label Output1452443 ! Node: Initialization1475515 ! Node: Macros for Initialization1481477 ! Node: Instruction Output1488200 ! Node: Dispatch Tables1498702 ! Node: Exception Region Output1503080 ! Node: Alignment Output1509438 ! Node: Debugging Info1513983 ! Node: All Debuggers1514653 ! Node: DBX Options1517508 ! Node: DBX Hooks1522957 ! Node: File Names and DBX1524883 ! Node: SDB and DWARF1526995 ! Node: VMS Debug1532842 ! Node: Floating Point1533429 ! Node: Mode Switching1538252 ! Node: Target Attributes1542178 ! Node: Emulated TLS1550090 ! Node: MIPS Coprocessors1553480 ! Node: PCH Target1555049 ! Node: C++ ABI1556891 ! Node: Named Address Spaces1561683 ! Node: Misc1566622 ! Ref: TARGET_SHIFT_TRUNCATION_MASK1574050 ! Node: Host Config1617172 ! Node: Host Common1618240 ! Node: Filesystem1620619 ! Node: Host Misc1624734 ! Node: Fragments1627183 ! Node: Target Fragment1628378 ! Node: Host Fragment1636328 ! Node: Collect21636568 ! Node: Header Dirs1639204 ! Node: Type Information1640627 ! Node: GTY Options1642984 ! Node: GGC Roots1656812 ! Node: Files1657532 ! Node: Invoking the garbage collector1660278 ! Node: Troubleshooting1661781 ! Node: Plugins1662857 ! Node: LTO1679735 ! Node: Funding1704781 ! Node: GNU Project1707264 ! Node: Copying1707913 ! Node: GNU Free Documentation License1745444 ! Node: Contributors1770584 ! Node: Option Index1807989 ! Node: Concept Index1808793  End Tag Table --- 48673,48769 ---- Node: Target Structure1100949 Node: Driver1103064 Node: Run-time Target1122132 ! Node: Per-Function Data1131285 ! Node: Storage Layout1134050 ! Node: Type Layout1160058 ! Node: Registers1174940 ! Node: Register Basics1175914 ! Node: Allocation Order1181419 ! Node: Values in Registers1183865 ! Node: Leaf Functions1191354 ! Node: Stack Registers1194212 ! Node: Register Classes1195484 ! Node: Old Constraints1224098 ! Node: Stack and Calling1231250 ! Node: Frame Layout1231784 ! Node: Exception Handling1242664 ! Node: Stack Checking1248870 ! Node: Frame Registers1253683 ! Node: Elimination1261942 ! Node: Stack Arguments1266171 ! Node: Register Arguments1273068 ! Node: Scalar Return1293384 ! Node: Aggregate Return1299470 ! Node: Caller Saves1303680 ! Node: Function Entry1304858 ! Node: Profiling1317486 ! Node: Tail Calls1319185 ! Node: Stack Smashing Protection1320797 ! Node: Varargs1322429 ! Node: Trampolines1329125 ! Node: Library Calls1335168 ! Node: Addressing Modes1340107 ! Node: Anchored Addresses1359916 ! Node: Condition Code1362565 ! Node: CC0 Condition Codes1364694 ! Node: MODE_CC Condition Codes1367940 ! Node: Cond Exec Macros1374167 ! Node: Costs1375144 ! Node: Scheduling1391562 ! Node: Sections1410968 ! Node: PIC1426666 ! Node: Assembler Format1428726 ! Node: File Framework1429864 ! Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS1436760 ! Node: Data Output1440025 ! Node: Uninitialized Data1447801 ! Node: Label Output1452812 ! Node: Initialization1475246 ! Node: Macros for Initialization1481208 ! Node: Instruction Output1487931 ! Node: Dispatch Tables1498433 ! Node: Exception Region Output1502811 ! Node: Alignment Output1509169 ! Node: Debugging Info1513714 ! Node: All Debuggers1514384 ! Node: DBX Options1517239 ! Node: DBX Hooks1522688 ! Node: File Names and DBX1524614 ! Node: SDB and DWARF1526726 ! Node: VMS Debug1532798 ! Node: Floating Point1533385 ! Node: Mode Switching1538208 ! Node: Target Attributes1542134 ! Node: Emulated TLS1550046 ! Node: MIPS Coprocessors1553436 ! Node: PCH Target1555005 ! Node: C++ ABI1556847 ! Node: Named Address Spaces1561639 ! Node: Misc1566578 ! Ref: TARGET_SHIFT_TRUNCATION_MASK1574006 ! Node: Host Config1617128 ! Node: Host Common1618196 ! Node: Filesystem1620575 ! Node: Host Misc1624690 ! Node: Fragments1627139 ! Node: Target Fragment1628334 ! Node: Host Fragment1636284 ! Node: Collect21636524 ! Node: Header Dirs1639160 ! Node: Type Information1640583 ! Node: GTY Options1642940 ! Node: GGC Roots1656768 ! Node: Files1657488 ! Node: Invoking the garbage collector1660234 ! Node: Troubleshooting1661737 ! Node: Plugins1662813 ! Node: LTO1679691 ! Node: Funding1704737 ! Node: GNU Project1707220 ! Node: Copying1707869 ! Node: GNU Free Documentation License1745400 ! Node: Contributors1770540 ! Node: Option Index1807945 ! Node: Concept Index1808749  End Tag Table diff -Nrcpad gcc-4.7.3/gcc/doc/gcj-dbtool.1 gcc-4.7.4/gcc/doc/gcj-dbtool.1 *** gcc-4.7.3/gcc/doc/gcj-dbtool.1 Thu Apr 11 08:46:35 2013 --- gcc-4.7.4/gcc/doc/gcj-dbtool.1 Thu Jun 12 13:54:52 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GCJ-DBTOOL 1" ! .TH GCJ-DBTOOL 1 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GCJ-DBTOOL 1" ! .TH GCJ-DBTOOL 1 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/gcc/doc/gcj.1 gcc-4.7.4/gcc/doc/gcj.1 *** gcc-4.7.3/gcc/doc/gcj.1 Thu Apr 11 08:46:35 2013 --- gcc-4.7.4/gcc/doc/gcj.1 Thu Jun 12 13:54:51 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GCJ 1" ! .TH GCJ 1 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GCJ 1" ! .TH GCJ 1 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/gcc/doc/gcj.info gcc-4.7.4/gcc/doc/gcj.info *** gcc-4.7.3/gcc/doc/gcj.info Thu Apr 11 08:57:46 2013 --- gcc-4.7.4/gcc/doc/gcj.info Thu Jun 12 14:09:26 2014 *************** *** 1,5 **** This is doc/gcj.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/java/gcj.texi. Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 Free Software Foundation, Inc. --- 1,5 ---- This is doc/gcj.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/java/gcj.texi. Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 Free Software Foundation, Inc. diff -Nrcpad gcc-4.7.3/gcc/doc/gcov.1 gcc-4.7.4/gcc/doc/gcov.1 *** gcc-4.7.3/gcc/doc/gcov.1 Thu Apr 11 08:08:33 2013 --- gcc-4.7.4/gcc/doc/gcov.1 Thu Jun 12 13:03:28 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GCOV 1" ! .TH GCOV 1 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GCOV 1" ! .TH GCOV 1 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/gcc/doc/gfdl.7 gcc-4.7.4/gcc/doc/gfdl.7 *** gcc-4.7.3/gcc/doc/gfdl.7 Thu Apr 11 08:08:35 2013 --- gcc-4.7.4/gcc/doc/gfdl.7 Thu Jun 12 13:03:31 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GFDL 7" ! .TH GFDL 7 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GFDL 7" ! .TH GFDL 7 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/gcc/doc/gfortran.1 gcc-4.7.4/gcc/doc/gfortran.1 *** gcc-4.7.3/gcc/doc/gfortran.1 Thu Apr 11 08:57:48 2013 --- gcc-4.7.4/gcc/doc/gfortran.1 Thu Jun 12 14:09:29 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GFORTRAN 1" ! .TH GFORTRAN 1 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GFORTRAN 1" ! .TH GFORTRAN 1 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l *************** either your program or the \s-1GNU\s0 Fo *** 807,817 **** Output the internal parse tree after translating the source program into internal representation. Only really useful for debugging the \&\s-1GNU\s0 Fortran compiler itself. ! .IP "\fB\-fdump\-optimized\-tree\fR" 4 ! .IX Item "-fdump-optimized-tree" Output the parse tree after front-end optimization. Only really useful for debugging the \s-1GNU\s0 Fortran compiler itself. ! .Sp Output the internal parse tree after translating the source program into internal representation. Only really useful for debugging the \&\s-1GNU\s0 Fortran compiler itself. This option is deprecated; use --- 807,818 ---- Output the internal parse tree after translating the source program into internal representation. Only really useful for debugging the \&\s-1GNU\s0 Fortran compiler itself. ! .IP "\fB\-fdump\-fortran\-optimized\fR" 4 ! .IX Item "-fdump-fortran-optimized" Output the parse tree after front-end optimization. Only really useful for debugging the \s-1GNU\s0 Fortran compiler itself. ! .IP "\fB\-fdump\-parse\-tree\fR" 4 ! .IX Item "-fdump-parse-tree" Output the internal parse tree after translating the source program into internal representation. Only really useful for debugging the \&\s-1GNU\s0 Fortran compiler itself. This option is deprecated; use diff -Nrcpad gcc-4.7.3/gcc/doc/gij.1 gcc-4.7.4/gcc/doc/gij.1 *** gcc-4.7.3/gcc/doc/gij.1 Thu Apr 11 08:46:35 2013 --- gcc-4.7.4/gcc/doc/gij.1 Thu Jun 12 13:54:52 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GIJ 1" ! .TH GIJ 1 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GIJ 1" ! .TH GIJ 1 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/gcc/doc/gpl.7 gcc-4.7.4/gcc/doc/gpl.7 *** gcc-4.7.3/gcc/doc/gpl.7 Thu Apr 11 08:57:48 2013 --- gcc-4.7.4/gcc/doc/gpl.7 Thu Jun 12 14:09:29 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GPL 7" ! .TH GPL 7 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GPL 7" ! .TH GPL 7 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/gcc/doc/grmic.1 gcc-4.7.4/gcc/doc/grmic.1 *** gcc-4.7.3/gcc/doc/grmic.1 Thu Apr 11 08:46:35 2013 --- gcc-4.7.4/gcc/doc/grmic.1 Thu Jun 12 13:54:52 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GRMIC 1" ! .TH GRMIC 1 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GRMIC 1" ! .TH GRMIC 1 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/gcc/doc/implement-cxx.texi gcc-4.7.4/gcc/doc/implement-cxx.texi *** gcc-4.7.3/gcc/doc/implement-cxx.texi Mon Jan 3 20:52:22 2011 --- gcc-4.7.4/gcc/doc/implement-cxx.texi Wed Sep 18 11:08:02 2013 *************** *** 10,17 **** A conforming implementation of ISO C++ is required to document its choice of behavior in each of the areas that are designated ``implementation defined''. The following lists all such areas, ! along with the section numbers from the ISO/IEC 14822:1998 and ISO/IEC ! 14822:2003 standards. Some areas are only implementation-defined in one version of the standard. Some choices depend on the externally determined ABI for the platform --- 10,17 ---- A conforming implementation of ISO C++ is required to document its choice of behavior in each of the areas that are designated ``implementation defined''. The following lists all such areas, ! along with the section numbers from the ISO/IEC 14882:1998 and ISO/IEC ! 14882:2003 standards. Some areas are only implementation-defined in one version of the standard. Some choices depend on the externally determined ABI for the platform diff -Nrcpad gcc-4.7.3/gcc/doc/invoke.texi gcc-4.7.4/gcc/doc/invoke.texi *** gcc-4.7.3/gcc/doc/invoke.texi Sat Mar 30 11:10:22 2013 --- gcc-4.7.4/gcc/doc/invoke.texi Tue Apr 1 08:26:10 2014 *************** Define an argument called @var{key} with *** 1429,1439 **** for the plugin called @var{name}. @item -fdump-ada-spec@r{[}-slim@r{]} ! For C and C++ source and include files, generate corresponding Ada ! specs. @xref{Generating Ada Bindings for C and C++ headers,,, gnat_ugn, GNAT User's Guide}, which provides detailed documentation on this feature. @item -fdump-go-spec=@var{file} For input files in any language, generate corresponding Go declarations in @var{file}. This generates Go @code{const}, @code{type}, @code{var}, and @code{func} declarations which may be a --- 1429,1441 ---- for the plugin called @var{name}. @item -fdump-ada-spec@r{[}-slim@r{]} ! @opindex fdump-ada-spec ! For C and C++ source and include files, generate corresponding Ada specs. ! @xref{Generating Ada Bindings for C and C++ headers,,, gnat_ugn, GNAT User's Guide}, which provides detailed documentation on this feature. @item -fdump-go-spec=@var{file} + @opindex fdump-go-spec For input files in any language, generate corresponding Go declarations in @var{file}. This generates Go @code{const}, @code{type}, @code{var}, and @code{func} declarations which may be a *************** option should only be used if you requir *** 10646,10656 **** big-endian ARM processors generated by versions of the compiler prior to 2.8. This option is now deprecated. ! @item -mcpu=@var{name} ! @opindex mcpu ! This specifies the name of the target ARM processor. GCC uses this name ! to determine what kind of instructions it can emit when generating ! assembly code. Permissible names are: @samp{arm2}, @samp{arm250}, @samp{arm3}, @samp{arm6}, @samp{arm60}, @samp{arm600}, @samp{arm610}, @samp{arm620}, @samp{arm7}, @samp{arm7m}, @samp{arm7d}, @samp{arm7dm}, @samp{arm7di}, @samp{arm7dmi}, @samp{arm70}, @samp{arm700}, --- 10648,10678 ---- big-endian ARM processors generated by versions of the compiler prior to 2.8. This option is now deprecated. ! @item -march=@var{name} ! @opindex march ! This specifies the name of the target ARM architecture. GCC uses this ! name to determine what kind of instructions it can emit when generating ! assembly code. This option can be used in conjunction with or instead ! of the @option{-mcpu=} option. Permissible names are: @samp{armv2}, ! @samp{armv2a}, @samp{armv3}, @samp{armv3m}, @samp{armv4}, @samp{armv4t}, ! @samp{armv5}, @samp{armv5t}, @samp{armv5e}, @samp{armv5te}, ! @samp{armv6}, @samp{armv6j}, ! @samp{armv6t2}, @samp{armv6z}, @samp{armv6zk}, @samp{armv6-m}, ! @samp{armv7}, @samp{armv7-a}, @samp{armv7-r}, @samp{armv7-m}, @samp{armv7e-m}, ! @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}. ! ! @option{-march=native} causes the compiler to auto-detect the architecture ! of the build computer. At present, this feature is only supported on ! Linux, and not all architectures are recognized. If the auto-detect is ! unsuccessful the option has no effect. ! ! @item -mtune=@var{name} ! @opindex mtune ! This option specifies the name of the target ARM processor for ! which GCC should tune the performance of the code. ! For some ARM implementations better performance can be obtained by using ! this option. ! Permissible names are: @samp{arm2}, @samp{arm250}, @samp{arm3}, @samp{arm6}, @samp{arm60}, @samp{arm600}, @samp{arm610}, @samp{arm620}, @samp{arm7}, @samp{arm7m}, @samp{arm7d}, @samp{arm7dm}, @samp{arm7di}, @samp{arm7dmi}, @samp{arm70}, @samp{arm700}, *************** assembly code. Permissible names are: @ *** 10676,10702 **** @samp{fa526}, @samp{fa626}, @samp{fa606te}, @samp{fa626te}, @samp{fmp626}, @samp{fa726te}. - - @option{-mcpu=generic-@var{arch}} is also permissible, and is - equivalent to @option{-march=@var{arch} -mtune=generic-@var{arch}}. - See @option{-mtune} for more information. - - @option{-mcpu=native} causes the compiler to auto-detect the CPU - of the build computer. At present, this feature is only supported on - Linux, and not all architectures are recognized. If the auto-detect is - unsuccessful the option has no effect. - - @item -mtune=@var{name} - @opindex mtune - This option is very similar to the @option{-mcpu=} option, except that - instead of specifying the actual target processor type, and hence - restricting which instructions can be used, it specifies that GCC should - tune the performance of the code as if the target were of the type - specified in this option, but still choosing the instructions that it - will generate based on the CPU specified by a @option{-mcpu=} option. - For some ARM implementations better performance can be obtained by using - this option. - @option{-mtune=generic-@var{arch}} specifies that GCC should tune the performance for a blend of processors within architecture @var{arch}. The aim is to generate code that run well on the current most popular --- 10698,10703 ---- *************** of the build computer. At present, this *** 10709,10728 **** Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. ! @item -march=@var{name} ! @opindex march ! This specifies the name of the target ARM architecture. GCC uses this ! name to determine what kind of instructions it can emit when generating ! assembly code. This option can be used in conjunction with or instead ! of the @option{-mcpu=} option. Permissible names are: @samp{armv2}, ! @samp{armv2a}, @samp{armv3}, @samp{armv3m}, @samp{armv4}, @samp{armv4t}, ! @samp{armv5}, @samp{armv5t}, @samp{armv5e}, @samp{armv5te}, ! @samp{armv6}, @samp{armv6j}, ! @samp{armv6t2}, @samp{armv6z}, @samp{armv6zk}, @samp{armv6-m}, ! @samp{armv7}, @samp{armv7-a}, @samp{armv7-r}, @samp{armv7-m}, ! @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}. ! @option{-march=native} causes the compiler to auto-detect the architecture of the build computer. At present, this feature is only supported on Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. --- 10710,10732 ---- Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. ! @item -mcpu=@var{name} ! @opindex mcpu ! This specifies the name of the target ARM processor. GCC uses this name ! to derive the name of the target ARM architecture (as if specified ! by @option{-march}) and the ARM processor type for which to tune for ! performance (as if specified by @option{-mtune}). Where this option ! is used in conjunction with @option{-march} or @option{-mtune}, ! those options take precedence over the appropriate part of this option. ! Permissible names for this option are the same as those for ! @option{-mtune}. ! ! @option{-mcpu=generic-@var{arch}} is also permissible, and is ! equivalent to @option{-march=@var{arch} -mtune=generic-@var{arch}}. ! See @option{-mtune} for more information. ! ! @option{-mcpu=native} causes the compiler to auto-detect the CPU of the build computer. At present, this feature is only supported on Linux, and not all architectures are recognized. If the auto-detect is unsuccessful the option has no effect. *************** These @samp{-m} options are supported on *** 18305,18312 **** @opindex mno-app-regs @opindex mapp-regs Specify @option{-mapp-regs} to generate output using the global registers ! 2 through 4, which the SPARC SVR4 ABI reserves for applications. This ! is the default. To be fully SVR4 ABI compliant at the cost of some performance loss, specify @option{-mno-app-regs}. You should compile libraries and system --- 18309,18317 ---- @opindex mno-app-regs @opindex mapp-regs Specify @option{-mapp-regs} to generate output using the global registers ! 2 through 4, which the SPARC SVR4 ABI reserves for applications. Like the ! global register 1, each global register 2 through 4 is then treated as an ! allocable register that is clobbered by function calls. This is the default. To be fully SVR4 ABI compliant at the cost of some performance loss, specify @option{-mno-app-regs}. You should compile libraries and system diff -Nrcpad gcc-4.7.3/gcc/doc/jcf-dump.1 gcc-4.7.4/gcc/doc/jcf-dump.1 *** gcc-4.7.3/gcc/doc/jcf-dump.1 Thu Apr 11 08:46:35 2013 --- gcc-4.7.4/gcc/doc/jcf-dump.1 Thu Jun 12 13:54:52 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "JCF-DUMP 1" ! .TH JCF-DUMP 1 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "JCF-DUMP 1" ! .TH JCF-DUMP 1 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/gcc/doc/jv-convert.1 gcc-4.7.4/gcc/doc/jv-convert.1 *** gcc-4.7.3/gcc/doc/jv-convert.1 Thu Apr 11 08:46:35 2013 --- gcc-4.7.4/gcc/doc/jv-convert.1 Thu Jun 12 13:54:52 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "JV-CONVERT 1" ! .TH JV-CONVERT 1 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "JV-CONVERT 1" ! .TH JV-CONVERT 1 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/gcc/doc/rebuild-gcj-db.1 gcc-4.7.4/gcc/doc/rebuild-gcj-db.1 *** gcc-4.7.3/gcc/doc/rebuild-gcj-db.1 Thu Apr 11 08:57:48 2013 --- gcc-4.7.4/gcc/doc/rebuild-gcj-db.1 Thu Jun 12 14:09:30 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "REBUILD-GCJ-DB 1" ! .TH REBUILD-GCJ-DB 1 "2013-04-11" "gcc-4.7.3" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "REBUILD-GCJ-DB 1" ! .TH REBUILD-GCJ-DB 1 "2014-06-12" "gcc-4.7.4" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/gcc/doc/tm.texi gcc-4.7.4/gcc/doc/tm.texi *** gcc-4.7.3/gcc/doc/tm.texi Fri Aug 10 13:21:31 2012 --- gcc-4.7.4/gcc/doc/tm.texi Sun Sep 1 19:21:33 2013 *************** should use @code{TARGET_HANDLE_C_OPTION} *** 700,705 **** --- 700,713 ---- Targets may provide a string object type that can be used within and between C, C++ and their respective Objective-C dialects. A string object might, for example, embed encoding and length information. These objects are considered opaque to the compiler and handled as references. An ideal implementation makes the composition of the string object match that of the Objective-C @code{NSString} (@code{NXString} for GNUStep), allowing efficient interworking between C-only and Objective-C code. If a target implements string objects then this hook should return a reference to such an object constructed from the normal `C' string representation provided in @var{string}. At present, the hook is used by Objective-C only, to obtain a common-format string object when the target provides one. @end deftypefn + @deftypefn {C Target Hook} void TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE (const char *@var{classname}) + Declare that Objective C class @var{classname} is referenced by the current TU. + @end deftypefn + + @deftypefn {C Target Hook} void TARGET_OBJC_DECLARE_CLASS_DEFINITION (const char *@var{classname}) + Declare that Objective C class @var{classname} is defined by the current TU. + @end deftypefn + @deftypefn {C Target Hook} bool TARGET_STRING_OBJECT_REF_TYPE_P (const_tree @var{stringref}) If a target implements string objects then this hook should return @code{true} if @var{stringref} is a valid reference to such an object. @end deftypefn *************** On systems where the assembler can handl *** 8258,8277 **** macro to provide more human-readable names. @end defmac - @defmac ASM_DECLARE_CLASS_REFERENCE (@var{stream}, @var{name}) - A C statement (sans semicolon) to output to the stdio stream - @var{stream} commands to declare that the label @var{name} is an - Objective-C class reference. This is only needed for targets whose - linkers have special support for NeXT-style runtimes. - @end defmac - - @defmac ASM_DECLARE_UNRESOLVED_REFERENCE (@var{stream}, @var{name}) - A C statement (sans semicolon) to output to the stdio stream - @var{stream} commands to declare that the label @var{name} is an - unresolved Objective-C class reference. This is only needed for targets - whose linkers have special support for NeXT-style runtimes. - @end defmac - @node Initialization @subsection How Initialization Functions Are Handled @cindex initialization routines --- 8266,8271 ---- *************** tables, and hence is desirable if it wor *** 9495,9500 **** --- 9489,9498 ---- True if the @code{.debug_pubtypes} and @code{.debug_pubnames} sections should be emitted. These sections are not used on most platforms, and in particular GDB does not use them. @end deftypevr + @deftypevr {Target Hook} bool TARGET_FORCE_AT_COMP_DIR + True if the @code{DW_AT_comp_dir} attribute should be emitted for each compilation unit. This attribute is required for the darwin linker to emit debug information. + @end deftypevr + @deftypevr {Target Hook} bool TARGET_DELAY_SCHED2 True if sched2 is not to be run at its normal place. This usually means it will be run as part of machine-specific reorg. @end deftypevr diff -Nrcpad gcc-4.7.3/gcc/doc/tm.texi.in gcc-4.7.4/gcc/doc/tm.texi.in *** gcc-4.7.3/gcc/doc/tm.texi.in Fri Aug 10 13:21:31 2012 --- gcc-4.7.4/gcc/doc/tm.texi.in Sun Sep 1 19:21:33 2013 *************** should use @code{TARGET_HANDLE_C_OPTION} *** 696,701 **** --- 696,705 ---- @hook TARGET_OBJC_CONSTRUCT_STRING_OBJECT + @hook TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE + + @hook TARGET_OBJC_DECLARE_CLASS_DEFINITION + @hook TARGET_STRING_OBJECT_REF_TYPE_P @hook TARGET_CHECK_STRING_OBJECT_FORMAT_ARG *************** On systems where the assembler can handl *** 8157,8176 **** macro to provide more human-readable names. @end defmac - @defmac ASM_DECLARE_CLASS_REFERENCE (@var{stream}, @var{name}) - A C statement (sans semicolon) to output to the stdio stream - @var{stream} commands to declare that the label @var{name} is an - Objective-C class reference. This is only needed for targets whose - linkers have special support for NeXT-style runtimes. - @end defmac - - @defmac ASM_DECLARE_UNRESOLVED_REFERENCE (@var{stream}, @var{name}) - A C statement (sans semicolon) to output to the stdio stream - @var{stream} commands to declare that the label @var{name} is an - unresolved Objective-C class reference. This is only needed for targets - whose linkers have special support for NeXT-style runtimes. - @end defmac - @node Initialization @subsection How Initialization Functions Are Handled @cindex initialization routines --- 8161,8166 ---- *************** tables, and hence is desirable if it wor *** 9388,9393 **** --- 9378,9385 ---- @hook TARGET_WANT_DEBUG_PUB_SECTIONS + @hook TARGET_FORCE_AT_COMP_DIR + @hook TARGET_DELAY_SCHED2 @hook TARGET_DELAY_VARTRACK diff -Nrcpad gcc-4.7.3/gcc/dwarf2out.c gcc-4.7.4/gcc/dwarf2out.c *** gcc-4.7.3/gcc/dwarf2out.c Thu Feb 7 23:42:03 2013 --- gcc-4.7.4/gcc/dwarf2out.c Tue Apr 16 17:09:14 2013 *************** dwarf2out_finish (const char *filename) *** 22538,22544 **** /* Add the name for the main input file now. We delayed this from dwarf2out_init to avoid complications with PCH. */ add_name_attribute (comp_unit_die (), remap_debug_filename (filename)); ! if (!IS_ABSOLUTE_PATH (filename)) add_comp_dir_attribute (comp_unit_die ()); else if (get_AT (comp_unit_die (), DW_AT_comp_dir) == NULL) { --- 22538,22544 ---- /* Add the name for the main input file now. We delayed this from dwarf2out_init to avoid complications with PCH. */ add_name_attribute (comp_unit_die (), remap_debug_filename (filename)); ! if (!IS_ABSOLUTE_PATH (filename) || targetm.force_at_comp_dir) add_comp_dir_attribute (comp_unit_die ()); else if (get_AT (comp_unit_die (), DW_AT_comp_dir) == NULL) { diff -Nrcpad gcc-4.7.3/gcc/fold-const.c gcc-4.7.4/gcc/fold-const.c *** gcc-4.7.3/gcc/fold-const.c Tue Feb 19 17:26:04 2013 --- gcc-4.7.4/gcc/fold-const.c Wed May 7 16:11:42 2014 *************** negate_expr_p (tree t) *** 486,496 **** and actually traps on some architectures. But if overflow is undefined, we can negate, because - (INT_MIN / 1) is an overflow. */ ! if (INTEGRAL_TYPE_P (TREE_TYPE (t)) ! && !TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (t))) ! break; ! return negate_expr_p (TREE_OPERAND (t, 1)) ! || negate_expr_p (TREE_OPERAND (t, 0)); case NOP_EXPR: /* Negate -((double)float) as (double)(-float). */ --- 486,509 ---- and actually traps on some architectures. But if overflow is undefined, we can negate, because - (INT_MIN / 1) is an overflow. */ ! if (INTEGRAL_TYPE_P (TREE_TYPE (t))) ! { ! if (!TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (t))) ! break; ! /* If overflow is undefined then we have to be careful because ! we ask whether it's ok to associate the negate with the ! division which is not ok for example for ! -((a - b) / c) where (-(a - b)) / c may invoke undefined ! overflow because of negating INT_MIN. So do not use ! negate_expr_p here but open-code the two important cases. */ ! if (TREE_CODE (TREE_OPERAND (t, 0)) == NEGATE_EXPR ! || (TREE_CODE (TREE_OPERAND (t, 0)) == INTEGER_CST ! && may_negate_without_overflow_p (TREE_OPERAND (t, 0)))) ! return true; ! } ! else if (negate_expr_p (TREE_OPERAND (t, 0))) ! return true; ! return negate_expr_p (TREE_OPERAND (t, 1)); case NOP_EXPR: /* Negate -((double)float) as (double)(-float). */ *************** fold_negate_expr (location_t loc, tree t *** 670,685 **** return fold_build2_loc (loc, TREE_CODE (t), type, TREE_OPERAND (t, 0), negate_expr (tem)); } tem = TREE_OPERAND (t, 0); ! if (negate_expr_p (tem)) ! { ! if (INTEGRAL_TYPE_P (type) ! && (TREE_CODE (tem) != INTEGER_CST ! || tree_int_cst_equal (tem, TYPE_MIN_VALUE (type)))) ! fold_overflow_warning (warnmsg, WARN_STRICT_OVERFLOW_MISC); ! return fold_build2_loc (loc, TREE_CODE (t), type, ! negate_expr (tem), TREE_OPERAND (t, 1)); ! } } break; --- 683,702 ---- return fold_build2_loc (loc, TREE_CODE (t), type, TREE_OPERAND (t, 0), negate_expr (tem)); } + /* If overflow is undefined then we have to be careful because + we ask whether it's ok to associate the negate with the + division which is not ok for example for + -((a - b) / c) where (-(a - b)) / c may invoke undefined + overflow because of negating INT_MIN. So do not use + negate_expr_p here but open-code the two important cases. */ tem = TREE_OPERAND (t, 0); ! if ((INTEGRAL_TYPE_P (type) ! && (TREE_CODE (tem) == NEGATE_EXPR ! || (TREE_CODE (tem) == INTEGER_CST ! && may_negate_without_overflow_p (tem)))) ! || !INTEGRAL_TYPE_P (type)) ! return fold_build2_loc (loc, TREE_CODE (t), type, ! negate_expr (tem), TREE_OPERAND (t, 1)); } break; *************** fold_range_test (location_t loc, enum tr *** 4862,4873 **** int in0_p, in1_p, in_p; tree low0, low1, low, high0, high1, high; bool strict_overflow_p = false; ! tree lhs = make_range (op0, &in0_p, &low0, &high0, &strict_overflow_p); ! tree rhs = make_range (op1, &in1_p, &low1, &high1, &strict_overflow_p); ! tree tem; const char * const warnmsg = G_("assuming signed overflow does not occur " "when simplifying range test"); /* If this is an OR operation, invert both sides; we will invert again at the end. */ if (or_op) --- 4879,4894 ---- int in0_p, in1_p, in_p; tree low0, low1, low, high0, high1, high; bool strict_overflow_p = false; ! tree tem, lhs, rhs; const char * const warnmsg = G_("assuming signed overflow does not occur " "when simplifying range test"); + if (!INTEGRAL_TYPE_P (type)) + return 0; + + lhs = make_range (op0, &in0_p, &low0, &high0, &strict_overflow_p); + rhs = make_range (op1, &in1_p, &low1, &high1, &strict_overflow_p); + /* If this is an OR operation, invert both sides; we will invert again at the end. */ if (or_op) *************** fold_ternary_loc (location_t loc, enum t *** 13832,13845 **** && integer_zerop (op2) && (tem = sign_bit_p (TREE_OPERAND (arg0, 0), arg1))) { /* sign_bit_p only checks ARG1 bits within A's precision. If has wider type than A, bits outside of A's precision in need to be checked. If they are all 0, this optimization needs to be done in unsigned A's type, if they are all 1 in signed A's type, otherwise this can't be done. */ ! if (TYPE_PRECISION (TREE_TYPE (tem)) ! < TYPE_PRECISION (TREE_TYPE (arg1)) && TYPE_PRECISION (TREE_TYPE (tem)) < TYPE_PRECISION (type)) { --- 13853,13881 ---- && integer_zerop (op2) && (tem = sign_bit_p (TREE_OPERAND (arg0, 0), arg1))) { + /* sign_bit_p looks through both zero and sign extensions, + but for this optimization only sign extensions are + usable. */ + tree tem2 = TREE_OPERAND (arg0, 0); + while (tem != tem2) + { + if (TREE_CODE (tem2) != NOP_EXPR + || TYPE_UNSIGNED (TREE_TYPE (TREE_OPERAND (tem2, 0)))) + { + tem = NULL_TREE; + break; + } + tem2 = TREE_OPERAND (tem2, 0); + } /* sign_bit_p only checks ARG1 bits within A's precision. If has wider type than A, bits outside of A's precision in need to be checked. If they are all 0, this optimization needs to be done in unsigned A's type, if they are all 1 in signed A's type, otherwise this can't be done. */ ! if (tem ! && TYPE_PRECISION (TREE_TYPE (tem)) ! < TYPE_PRECISION (TREE_TYPE (arg1)) && TYPE_PRECISION (TREE_TYPE (tem)) < TYPE_PRECISION (type)) { diff -Nrcpad gcc-4.7.3/gcc/fortran/ChangeLog gcc-4.7.4/gcc/fortran/ChangeLog *** gcc-4.7.3/gcc/fortran/ChangeLog Thu Apr 11 07:57:07 2013 --- gcc-4.7.4/gcc/fortran/ChangeLog Thu Jun 12 12:08:12 2014 *************** *** 1,3 **** --- 1,235 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + + 2014-05-26 Janne Blomqvist + + Backport from mainline + PR libfortran/61310 + * intrinsics.texi (CTIME): Remove mention of locale-dependent + behavior. + + 2014-05-24 Dominique d'Humieres + + Backport r195492 and r195815 + 2013-01-27 Paul Thomas + + PR fortran/55789 + PR fortran/56047 + * gfortran.h : Add associate_var to symbol_attr. + * resolve.c (resolve_assoc_var): Set associate_var attribute. + If the target class_ok is set, set it for the associate + variable. + * check.c (allocatable_check): Associate variables should not + have the allocatable attribute even if their symbols do. + * class.c (gfc_build_class_symbol): Symbols with associate_var + set will always have a good class container. + + 2013-02-06 Paul Thomas + + PR fortran/55789 + * trans-array.c (trans_array_constructor): Remove condition + 'dynamic' = true if the loop ubound is a VAR_DECL. + + 2014-03-29 Mikael Morin + + PR fortran/60677 + * trans-intrinsic.c (gfc_conv_intrinsic_ichar): Enlarge argument + list buffer. + + 2014-03-29 Thomas Koenig + + PR fortran/60522 + * frontend-passes.c (cfe_code): Do not walk subtrees + for WHERE. + + 2014-03-20 Tobias Burnus + + PR fortran/60543 + PR fortran/60283 + * gfortran.h (gfc_unset_implicit_pure): New prototype. + * resolve.c (gfc_unset_implicit_pure): New. + (resolve_structure_cons, resolve_function, + pure_subroutine, resolve_ordinary_assign): Use it. + * decl.c (match_old_style_init, gfc_match_data, + match_pointer_init, variable_decl): Ditto. + * expr.c (gfc_check_pointer_assign): Ditto. + * intrinsic.c (gfc_intrinsic_sub_interface): Ditto. + * io.c (match_vtag, gfc_match_open, gfc_match_close, + match_filepos, gfc_match_inquire, gfc_match_print, + gfc_match_wait, check_io_constraints): Ditto. + * match.c (gfc_match_critical, gfc_match_stopcode, + lock_unlock_statement, sync_statement, gfc_match_allocate, + gfc_match_deallocate): Ditto. + * parse.c (decode_omp_directive): Ditto. + * symbol.c (gfc_add_save): Ditto. + + 2014-03-09 Janus Weil + + Backport from 4.8 + 2014-03-08 Janus Weil + + PR fortran/60450 + * simplify.c (gfc_simplify_shape): Only clear shape if it was really + created successfully. + + 2014-03-02 Mikael Morin + + PR fortran/60341 + * frontend-passes.c (optimize_comparison): Guard two union accesses + with the corresponding tag checks. + + 2014-02-22 Mikael Morin + + PR fortran/59599 + * trans-intrinsic.c (gfc_conv_intrinsic_ichar): Calculate the + number of arguments. + + 2014-02-20 Janus Weil + + Backport from mainline + 2014-02-17 Janus Weil + + PR fortran/55907 + * resolve.c (build_default_init_expr): Don't initialize character + variable if -fno-automatic is given. + + 2014-02-08 Mikael Morin + + PR fortran/57033 + * primary.c (gfc_convert_to_structure_constructor): Avoid null pointer + dereference. + + 2014-02-08 Paul Thomas + + PR fortran/59906 + * trans-array.c (gfc_add_loop_ss_code): In the case of character + SS_REFERENCE, use gfc_conv_string_parameter to ensure that a + pointer to the string is stored. + * trans-expr.c (gfc_conv_expr_reference): Likewise, use + gfc_conv_string_parameter to ensure that a pointer to is passed + to the elemental function. + + 2014-02-03 Janus Weil + + PR fortran/59941 + * expr.c (replace_comp): Check for isym to avoid ICE. + + 2014-01-27 Mikael Morin + + PR fortran/58007 + * module.c (skip_list): Don't use default argument value. + (load_derived_extensions, read_module): Update callers. + + 2014-01-26 Mikael Morin + + PR fortran/58007 + * module.c (fp2, find_pointer2): Remove. + (mio_component_ref): Don't forcedfully set the containing derived type + symbol for loading. Remove unused argument. + (mio_ref): Update caller + (skip_list): New argument nest_level. Initialize level with the new + argument. + (read_module): Add forced pointer components association for derived + type symbols. + + 2014-01-11 Janus Weil + + Backport from mainline + 2013-12-29 Janus Weil + + PR fortran/59612 + PR fortran/57042 + * dump-parse-tree.c (show_typespec): Check for charlen. + * invoke.texi: Fix documentation of -fdump-fortran-optimized and + -fdump-parse-tree. + + 2013-11-17 Paul Thomas + + PR fortran/58771 + * trans-io.c (transfer_expr): If the backend_decl for a derived + type is missing, build it with gfc_typenode_for_spec. + + 2013-11-02 Janus Weil + + Backport from mainline + 2013-09-23 Janus Weil + + PR fortran/58355 + * decl.c (check_extended_derived_type): Prevent segfault, modify error + message. + + 2013-08-11 Janus Weil + + Backport from trunk: + 2013-08-09 Janus Weil + + PR fortran/58058 + * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Free the temporary + string, if necessary. + + 2013-07-08 Tobias Burnus + + PR fortran/57785 + * simplify.c (compute_dot_product): Complex conjugate for + dot_product. + (gfc_simplify_dot_product, gfc_simplify_matmul): Update call. + + 2013-06-06 Tobias Burnus + + Backport from mainline + 2012-08-27 Tobias Burnus + + PR fortran/54370 + * trans-stmt.c (gfc_trans_do_while): Don't change the logical + kind for negation of the condition. + + 2013-06-01 Janus Weil + Tobias Burnus + + PR fortran/57217 + * interface.c (check_dummy_characteristics): Symmetrize type check. + + 2013-05-22 Janne Blomqvist + + * intrinsic.texi (RANDOM_SEED): Improve example. + + 2013-05-07 Tobias Burnus + + Backport from mainline + 2013-05-02 Tobias Burnus + + PR fortran/57142 + * simplify.c (gfc_simplify_size): Renamed from + simplify_size; fix kind=8 handling. + (gfc_simplify_size): New function. + (gfc_simplify_shape): Add range check. + * resolve.c (resolve_function): Fix handling + for ISYM_SIZE. + + 2013-04-26 Janus Weil + + Backports from trunk: + + PR fortran/56968 + * expr.c (gfc_check_pointer_assign): Handle generic functions returning + procedure pointers. + + PR fortran/53685 + PR fortran/57022 + * check.c (gfc_calculate_transfer_sizes): Fix for array-valued SOURCE + expressions. + * target-memory.h (gfc_element_size): New prototype. + * target-memory.c (size_array): Remove. + (gfc_element_size): New function. + (gfc_target_expr_size): Modified to always return the full size of the + expression. + + 2013-04-18 Tobias Burnus + + PR fortran/56994 + * invoke.texi (NEAREST): S argument is not optional. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/gcc/fortran/check.c gcc-4.7.4/gcc/fortran/check.c *** gcc-4.7.3/gcc/fortran/check.c Sun Mar 10 18:34:24 2013 --- gcc-4.7.4/gcc/fortran/check.c Sat May 24 15:36:14 2014 *************** allocatable_check (gfc_expr *e, int n) *** 454,460 **** symbol_attribute attr; attr = gfc_variable_attr (e, NULL); ! if (!attr.allocatable) { gfc_error ("'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE", gfc_current_intrinsic_arg[n]->name, gfc_current_intrinsic, --- 454,460 ---- symbol_attribute attr; attr = gfc_variable_attr (e, NULL); ! if (!attr.allocatable || attr.associate_var) { gfc_error ("'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE", gfc_current_intrinsic_arg[n]->name, gfc_current_intrinsic, *************** gfc_calculate_transfer_sizes (gfc_expr * *** 3988,3995 **** size_t *result_length_p) { size_t result_elt_size; - mpz_t tmp; - gfc_expr *mold_element; if (source->expr_type == EXPR_FUNCTION) return FAILURE; --- 3988,3993 ---- *************** gfc_calculate_transfer_sizes (gfc_expr * *** 3998,4017 **** return FAILURE; /* Calculate the size of the source. */ - if (source->expr_type == EXPR_ARRAY - && gfc_array_size (source, &tmp) == FAILURE) - return FAILURE; - *source_size = gfc_target_expr_size (source); if (*source_size == 0) return FAILURE; - mold_element = mold->expr_type == EXPR_ARRAY - ? gfc_constructor_first (mold->value.constructor)->expr - : mold; - /* Determine the size of the element. */ ! result_elt_size = gfc_target_expr_size (mold_element); if (result_elt_size == 0) return FAILURE; --- 3996,4007 ---- return FAILURE; /* Calculate the size of the source. */ *source_size = gfc_target_expr_size (source); if (*source_size == 0) return FAILURE; /* Determine the size of the element. */ ! result_elt_size = gfc_element_size (mold); if (result_elt_size == 0) return FAILURE; diff -Nrcpad gcc-4.7.3/gcc/fortran/class.c gcc-4.7.4/gcc/fortran/class.c *** gcc-4.7.3/gcc/fortran/class.c Thu Jan 17 10:55:50 2013 --- gcc-4.7.4/gcc/fortran/class.c Sat May 24 15:36:14 2014 *************** gfc_build_class_symbol (gfc_typespec *ts *** 493,499 **** return SUCCESS; attr->class_ok = attr->dummy || attr->pointer || attr->allocatable ! || attr->select_type_temporary; if (!attr->class_ok) /* We can not build the class container yet. */ --- 493,499 ---- return SUCCESS; attr->class_ok = attr->dummy || attr->pointer || attr->allocatable ! || attr->select_type_temporary || attr->associate_var; if (!attr->class_ok) /* We can not build the class container yet. */ diff -Nrcpad gcc-4.7.3/gcc/fortran/decl.c gcc-4.7.4/gcc/fortran/decl.c *** gcc-4.7.3/gcc/fortran/decl.c Sun Feb 17 22:59:52 2013 --- gcc-4.7.4/gcc/fortran/decl.c Thu Mar 20 19:42:15 2014 *************** match_old_style_init (const char *name) *** 509,517 **** free (newdata); return MATCH_ERROR; } ! ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; /* Mark the variable as having appeared in a data statement. */ if (gfc_add_data (&sym->attr, sym->name, &sym->declared_at) == FAILURE) --- 509,515 ---- free (newdata); return MATCH_ERROR; } ! gfc_unset_implicit_pure (gfc_current_ns->proc_name); /* Mark the variable as having appeared in a data statement. */ if (gfc_add_data (&sym->attr, sym->name, &sym->declared_at) == FAILURE) *************** gfc_match_data (void) *** 570,578 **** gfc_error ("DATA statement at %C is not allowed in a PURE procedure"); return MATCH_ERROR; } ! ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; return MATCH_YES; --- 568,574 ---- gfc_error ("DATA statement at %C is not allowed in a PURE procedure"); return MATCH_ERROR; } ! gfc_unset_implicit_pure (gfc_current_ns->proc_name); return MATCH_YES; *************** match_pointer_init (gfc_expr **init, int *** 1730,1735 **** --- 1726,1732 ---- gfc_error ("Error in pointer initialization at %C"); return MATCH_ERROR; } + gfc_unset_implicit_pure (gfc_current_ns->proc_name); if (!procptr) gfc_resolve_expr (*init); *************** variable_decl (int elem) *** 2015,2020 **** --- 2012,2021 ---- m = MATCH_ERROR; } + if (current_attr.flavor != FL_PARAMETER + && gfc_state_stack->state != COMP_DERIVED) + gfc_unset_implicit_pure (gfc_current_ns->proc_name); + if (m != MATCH_YES) goto cleanup; } *************** syntax: *** 7301,7306 **** --- 7302,7308 ---- /* Check a derived type that is being extended. */ + static gfc_symbol* check_extended_derived_type (char *name) { *************** check_extended_derived_type (char *name) *** 7312,7325 **** return NULL; } if (!extended) { ! gfc_error ("No such symbol in TYPE definition at %C"); return NULL; } - extended = gfc_find_dt_in_generic (extended); - if (extended->attr.flavor != FL_DERIVED) { gfc_error ("'%s' in EXTENDS expression at %C is not a " --- 7314,7328 ---- return NULL; } + extended = gfc_find_dt_in_generic (extended); + + /* F08:C428. */ if (!extended) { ! gfc_error ("Symbol '%s' at %C has not been previously defined", name); return NULL; } if (extended->attr.flavor != FL_DERIVED) { gfc_error ("'%s' in EXTENDS expression at %C is not a " diff -Nrcpad gcc-4.7.3/gcc/fortran/dump-parse-tree.c gcc-4.7.4/gcc/fortran/dump-parse-tree.c *** gcc-4.7.3/gcc/fortran/dump-parse-tree.c Mon Jan 2 12:46:08 2012 --- gcc-4.7.4/gcc/fortran/dump-parse-tree.c Sat Jan 11 22:47:25 2014 *************** show_typespec (gfc_typespec *ts) *** 104,110 **** break; case BT_CHARACTER: ! show_expr (ts->u.cl->length); fprintf(dumpfile, " %d", ts->kind); break; --- 104,111 ---- break; case BT_CHARACTER: ! if (ts->u.cl) ! show_expr (ts->u.cl->length); fprintf(dumpfile, " %d", ts->kind); break; diff -Nrcpad gcc-4.7.3/gcc/fortran/expr.c gcc-4.7.4/gcc/fortran/expr.c *** gcc-4.7.3/gcc/fortran/expr.c Wed Mar 13 05:32:07 2013 --- gcc-4.7.4/gcc/fortran/expr.c Mon Feb 3 08:16:06 2014 *************** gfc_check_pointer_assign (gfc_expr *lval *** 3493,3500 **** } else if (rvalue->expr_type == EXPR_FUNCTION) { ! s2 = rvalue->symtree->n.sym->result; ! name = rvalue->symtree->n.sym->result->name; } else { --- 3493,3504 ---- } else if (rvalue->expr_type == EXPR_FUNCTION) { ! if (rvalue->value.function.esym) ! s2 = rvalue->value.function.esym->result; ! else ! s2 = rvalue->symtree->n.sym->result; ! ! name = s2->name; } else { *************** replace_comp (gfc_expr *expr, gfc_symbol *** 4191,4197 **** gfc_component *comp; comp = (gfc_component *)sym; if ((expr->expr_type == EXPR_VARIABLE ! || (expr->expr_type == EXPR_FUNCTION && !gfc_is_intrinsic (expr->symtree->n.sym, 0, expr->where))) && expr->symtree->n.sym->ns == comp->ts.interface->formal_ns) { --- 4195,4201 ---- gfc_component *comp; comp = (gfc_component *)sym; if ((expr->expr_type == EXPR_VARIABLE ! || (expr->expr_type == EXPR_FUNCTION && !expr->value.function.isym && !gfc_is_intrinsic (expr->symtree->n.sym, 0, expr->where))) && expr->symtree->n.sym->ns == comp->ts.interface->formal_ns) { diff -Nrcpad gcc-4.7.3/gcc/fortran/frontend-passes.c gcc-4.7.4/gcc/fortran/frontend-passes.c *** gcc-4.7.3/gcc/fortran/frontend-passes.c Mon Apr 30 19:31:13 2012 --- gcc-4.7.4/gcc/fortran/frontend-passes.c Sat Mar 29 11:51:17 2014 *************** cfe_expr_0 (gfc_expr **e, int *walk_subt *** 442,453 **** to insert statements as needed. */ static int ! cfe_code (gfc_code **c, int *walk_subtrees ATTRIBUTE_UNUSED, ! void *data ATTRIBUTE_UNUSED) { current_code = c; inserted_block = NULL; changed_statement = NULL; return 0; } --- 442,476 ---- to insert statements as needed. */ static int ! cfe_code (gfc_code **c, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) { current_code = c; inserted_block = NULL; changed_statement = NULL; + + /* Do not do anything inside a WHERE statement; scalar assignments, BLOCKs + and allocation on assigment are prohibited inside WHERE, and finally + masking an expression would lead to wrong-code when replacing + + WHERE (a>0) + b = sum(foo(a) + foo(a)) + END WHERE + + with + + WHERE (a > 0) + tmp = foo(a) + b = sum(tmp + tmp) + END WHERE + */ + + if ((*c)->op == EXEC_WHERE) + { + *walk_subtrees = 0; + return 0; + } + + return 0; } *************** optimize_comparison (gfc_expr *e, gfc_in *** 883,889 **** --- 906,914 ---- /* Replace A // B < A // C with B < C, and A // B < C // B with A < C. */ if (op1->ts.type == BT_CHARACTER && op2->ts.type == BT_CHARACTER + && op1->expr_type == EXPR_OP && op1->value.op.op == INTRINSIC_CONCAT + && op2->expr_type == EXPR_OP && op2->value.op.op == INTRINSIC_CONCAT) { gfc_expr *op1_left = op1->value.op.op1; diff -Nrcpad gcc-4.7.3/gcc/fortran/gfortran.h gcc-4.7.4/gcc/fortran/gfortran.h *** gcc-4.7.3/gcc/fortran/gfortran.h Mon Jan 7 19:11:04 2013 --- gcc-4.7.4/gcc/fortran/gfortran.h Sat May 24 15:36:14 2014 *************** typedef struct *** 786,793 **** unsigned alloc_comp:1, pointer_comp:1, proc_pointer_comp:1, private_comp:1, zero_comp:1, coarray_comp:1, lock_comp:1; ! /* This is a temporary selector for SELECT TYPE. */ ! unsigned select_type_temporary:1; /* Attributes set by compiler extensions (!GCC$ ATTRIBUTES). */ unsigned ext_attr:EXT_ATTR_NUM; --- 786,794 ---- unsigned alloc_comp:1, pointer_comp:1, proc_pointer_comp:1, private_comp:1, zero_comp:1, coarray_comp:1, lock_comp:1; ! /* This is a temporary selector for SELECT TYPE or an associate ! variable for SELECT_TYPE or ASSOCIATE. */ ! unsigned select_type_temporary:1, associate_var:1; /* Attributes set by compiler extensions (!GCC$ ATTRIBUTES). */ unsigned ext_attr:EXT_ATTR_NUM; *************** void gfc_resolve_blocks (gfc_code *, gfc *** 2795,2800 **** --- 2796,2802 ---- int gfc_impure_variable (gfc_symbol *); int gfc_pure (gfc_symbol *); int gfc_implicit_pure (gfc_symbol *); + void gfc_unset_implicit_pure (gfc_symbol *); int gfc_elemental (gfc_symbol *); gfc_try gfc_resolve_iterator (gfc_iterator *, bool); gfc_try find_forall_index (gfc_expr *, gfc_symbol *, int); diff -Nrcpad gcc-4.7.3/gcc/fortran/gfortran.info gcc-4.7.4/gcc/fortran/gfortran.info *** gcc-4.7.3/gcc/fortran/gfortran.info Thu Apr 11 08:57:46 2013 --- gcc-4.7.4/gcc/fortran/gfortran.info Thu Jun 12 14:09:26 2014 *************** *** 1,5 **** This is doc/gfortran.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/fortran/gfortran.texi. Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. --- 1,5 ---- This is doc/gfortran.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/fortran/gfortran.texi. Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. *************** either your program or the GNU Fortran c *** 1062,1071 **** into internal representation. Only really useful for debugging the GNU Fortran compiler itself. ! `-fdump-optimized-tree' Output the parse tree after front-end optimization. Only really useful for debugging the GNU Fortran compiler itself. Output the internal parse tree after translating the source program into internal representation. Only really useful for debugging the GNU Fortran compiler itself. This option is deprecated; use --- 1062,1072 ---- into internal representation. Only really useful for debugging the GNU Fortran compiler itself. ! `-fdump-fortran-optimized' Output the parse tree after front-end optimization. Only really useful for debugging the GNU Fortran compiler itself. + `-fdump-parse-tree' Output the internal parse tree after translating the source program into internal representation. Only really useful for debugging the GNU Fortran compiler itself. This option is deprecated; use *************** File: gfortran.info, Node: CTIME, Next *** 6592,6601 **** _Description_: `CTIME' converts a system time value, such as returned by `TIME8', ! to a string. Unless the application has called `setlocale', the ! output will be in the default locale, of length 24 and of the form ! `Sat Aug 19 18:13:14 1995'. In other locales, a longer string may ! result. This intrinsic is provided in both subroutine and function forms; however, only one form can be used in any given program unit. --- 6593,6600 ---- _Description_: `CTIME' converts a system time value, such as returned by `TIME8', ! to a string. The output will be of the form `Sat Aug 19 18:13:14 ! 1995'. This intrinsic is provided in both subroutine and function forms; however, only one form can be used in any given program unit. *************** _Syntax_: *** 11647,11654 **** _Arguments_: X Shall be of type `REAL'. ! S (Optional) shall be of type `REAL' and not ! equal to zero. _Return value_: The return value is of the same type as `X'. If `S' is positive, --- 11646,11652 ---- _Arguments_: X Shall be of type `REAL'. ! S Shall be of type `REAL' and not equal to zero. _Return value_: The return value is of the same type as `X'. If `S' is positive, *************** _Description_: *** 12423,12429 **** If `RANDOM_SEED' is called without arguments, it is initialized to a default state. The example below shows how to initialize the ! random seed based on the system's time. _Standard_: Fortran 95 and later --- 12421,12430 ---- If `RANDOM_SEED' is called without arguments, it is initialized to a default state. The example below shows how to initialize the ! random seed with a varying seed in order to ensure a different ! random number sequence for each invocation of the program. Note ! that setting any of the seed values to zero should be avoided as ! it can result in poor quality random numbers being generated. _Standard_: Fortran 95 and later *************** _Arguments_: *** 12451,12470 **** argument. _Example_: ! SUBROUTINE init_random_seed() ! INTEGER :: i, n, clock ! INTEGER, DIMENSION(:), ALLOCATABLE :: seed ! ! CALL RANDOM_SEED(size = n) ! ALLOCATE(seed(n)) ! ! CALL SYSTEM_CLOCK(COUNT=clock) ! ! seed = clock + 37 * (/ (i - 1, i = 1, n) /) ! CALL RANDOM_SEED(PUT = seed) ! DEALLOCATE(seed) ! END SUBROUTINE _See also_: *note RANDOM_NUMBER:: --- 12452,12504 ---- argument. _Example_: ! subroutine init_random_seed() ! implicit none ! integer, allocatable :: seed(:) ! integer :: i, n, un, istat, dt(8), pid, t(2), s ! integer(8) :: count, tms ! call random_seed(size = n) ! allocate(seed(n)) ! ! First try if the OS provides a random number generator ! open(newunit=un, file="/dev/urandom", access="stream", & ! form="unformatted", action="read", status="old", iostat=istat) ! if (istat == 0) then ! read(un) seed ! close(un) ! else ! ! Fallback to XOR:ing the current time and pid. The PID is ! ! useful in case one launches multiple instances of the same ! ! program in parallel. ! call system_clock(count) ! if (count /= 0) then ! t = transfer(count, t) ! else ! call date_and_time(values=dt) ! tms = (dt(1) - 1970) * 365_8 * 24 * 60 * 60 * 1000 & ! + dt(2) * 31_8 * 24 * 60 * 60 * 1000 & ! + dt(3) * 24 * 60 * 60 * 60 * 1000 & ! + dt(5) * 60 * 60 * 1000 & ! + dt(6) * 60 * 1000 + dt(7) * 1000 & ! + dt(8) ! t = transfer(tms, t) ! end if ! s = ieor(t(1), t(2)) ! pid = getpid() + 1099279 ! Add a prime ! s = ieor(s, pid) ! if (n >= 3) then ! seed(1) = t(1) + 36269 ! seed(2) = t(2) + 72551 ! seed(3) = pid ! if (n > 3) then ! seed(4:) = s + 37 * (/ (i, i = 0, n - 4) /) ! end if ! else ! seed = s + 37 * (/ (i, i = 0, n - 1 ) /) ! end if ! end if ! call random_seed(put=seed) ! end subroutine init_random_seed _See also_: *note RANDOM_NUMBER:: *************** look up both forms. *** 16545,16556 **** (line 54) * fdump-fortran-optimized: Debugging Options. (line 15) * fdump-fortran-original: Debugging Options. (line 10) ! * fdump-parse-tree: Debugging Options. (line 18) * fexternal-blas: Code Gen Options. (line 278) * ff2c: Code Gen Options. (line 25) * ffixed-line-length-N: Fortran Dialect Options. (line 77) ! * ffpe-trap=LIST: Debugging Options. (line 24) * ffree-form: Fortran Dialect Options. (line 11) * ffree-line-length-N: Fortran Dialect Options. --- 16579,16590 ---- (line 54) * fdump-fortran-optimized: Debugging Options. (line 15) * fdump-fortran-original: Debugging Options. (line 10) ! * fdump-parse-tree: Debugging Options. (line 19) * fexternal-blas: Code Gen Options. (line 278) * ff2c: Code Gen Options. (line 25) * ffixed-line-length-N: Fortran Dialect Options. (line 77) ! * ffpe-trap=LIST: Debugging Options. (line 25) * ffree-form: Fortran Dialect Options. (line 11) * ffree-line-length-N: Fortran Dialect Options. *************** look up both forms. *** 16575,16581 **** * fmodule-private: Fortran Dialect Options. (line 72) * fno-automatic: Code Gen Options. (line 15) ! * fno-backtrace: Debugging Options. (line 51) * fno-fixed-form: Fortran Dialect Options. (line 11) * fno-protect-parens: Code Gen Options. (line 346) --- 16609,16615 ---- * fmodule-private: Fortran Dialect Options. (line 72) * fno-automatic: Code Gen Options. (line 15) ! * fno-backtrace: Debugging Options. (line 52) * fno-fixed-form: Fortran Dialect Options. (line 11) * fno-protect-parens: Code Gen Options. (line 346) *************** Keyword Index *** 16838,16844 **** * Authors: Contributors. (line 6) * backslash: Fortran Dialect Options. (line 60) ! * backtrace: Debugging Options. (line 51) * base 10 logarithm function: LOG10. (line 6) * BESJ0: BESSEL_J0. (line 6) * BESJ1: BESSEL_J1. (line 6) --- 16872,16878 ---- * Authors: Contributors. (line 6) * backslash: Fortran Dialect Options. (line 60) ! * backtrace: Debugging Options. (line 52) * base 10 logarithm function: LOG10. (line 6) * BESJ0: BESSEL_J0. (line 6) * BESJ1: BESSEL_J1. (line 6) *************** Keyword Index *** 17720,17726 **** * TIME8: TIME8. (line 6) * TINY: TINY. (line 6) * TR 15581: Fortran 2003 status. (line 93) ! * trace: Debugging Options. (line 51) * TRAILZ: TRAILZ. (line 6) * TRANSFER: TRANSFER. (line 6) * transforming symbol names: Code Gen Options. (line 54) --- 17754,17760 ---- * TIME8: TIME8. (line 6) * TINY: TINY. (line 6) * TR 15581: Fortran 2003 status. (line 93) ! * trace: Debugging Options. (line 52) * TRAILZ: TRAILZ. (line 6) * TRANSFER: TRANSFER. (line 6) * transforming symbol names: Code Gen Options. (line 54) *************** Node: Fortran Dialect Options21615 *** 17834,18175 **** Node: Preprocessing Options30111 Node: Error and Warning Options38342 Node: Debugging Options46584 ! Node: Directory Options49567 ! Node: Link Options51002 ! Node: Runtime Options51626 ! Node: Code Gen Options53908 ! Node: Environment Variables70864 ! Node: Runtime71469 ! Node: GFORTRAN_STDIN_UNIT72580 ! Node: GFORTRAN_STDOUT_UNIT72947 ! Node: GFORTRAN_STDERR_UNIT73348 ! Node: GFORTRAN_TMPDIR73742 ! Node: GFORTRAN_UNBUFFERED_ALL74194 ! Node: GFORTRAN_UNBUFFERED_PRECONNECTED74720 ! Node: GFORTRAN_SHOW_LOCUS75364 ! Node: GFORTRAN_OPTIONAL_PLUS75860 ! Node: GFORTRAN_DEFAULT_RECL76336 ! Node: GFORTRAN_LIST_SEPARATOR76825 ! Node: GFORTRAN_CONVERT_UNIT77434 ! Node: GFORTRAN_ERROR_BACKTRACE80297 ! Node: Fortran 2003 and 2008 status80854 ! Node: Fortran 2003 status81114 ! Node: Fortran 2008 status86016 ! Node: TS 29113 status90801 ! Node: Compiler Characteristics91573 ! Node: KIND Type Parameters92125 ! Node: Internal representation of LOGICAL variables93375 ! Node: Thread-safety of the runtime library94732 ! Node: Data consistency and durability96159 ! Node: Extensions99201 ! Node: Extensions implemented in GNU Fortran99802 ! Node: Old-style kind specifications101160 ! Node: Old-style variable initialization102267 ! Node: Extensions to namelist103579 ! Node: X format descriptor without count field105576 ! Node: Commas in FORMAT specifications106103 ! Node: Missing period in FORMAT specifications106620 ! Node: I/O item lists107182 ! Node: `Q' exponent-letter107571 ! Node: BOZ literal constants108175 ! Node: Real array indices110750 ! Node: Unary operators111047 ! Node: Implicitly convert LOGICAL and INTEGER values111461 ! Node: Hollerith constants support112421 ! Node: Cray pointers114193 ! Node: CONVERT specifier119640 ! Node: OpenMP121638 ! Node: Argument list functions123889 ! Node: Extensions not implemented in GNU Fortran125495 ! Node: STRUCTURE and RECORD126417 ! Node: ENCODE and DECODE statements128475 ! Node: Variable FORMAT expressions129835 ! Node: Alternate complex function syntax130940 ! Node: Mixed-Language Programming131460 ! Node: Interoperability with C132004 ! Node: Intrinsic Types133342 ! Node: Derived Types and struct133857 ! Node: Interoperable Global Variables135213 ! Node: Interoperable Subroutines and Functions136489 ! Node: Working with Pointers140102 ! Node: Further Interoperability of Fortran with C144420 ! Node: GNU Fortran Compiler Directives145256 ! Node: Non-Fortran Main Program147448 ! Node: _gfortran_set_args149590 ! Node: _gfortran_set_options150525 ! Node: _gfortran_set_convert153401 ! Node: _gfortran_set_record_marker154265 ! Node: _gfortran_set_fpe155090 ! Node: _gfortran_set_max_subrecord_length156246 ! Node: Intrinsic Procedures157202 ! Node: Introduction to Intrinsics172625 ! Node: ABORT174977 ! Node: ABS175633 ! Node: ACCESS177250 ! Node: ACHAR179171 ! Node: ACOS180372 ! Node: ACOSH181609 ! Node: ADJUSTL182597 ! Node: ADJUSTR183538 ! Node: AIMAG184485 ! Node: AINT185866 ! Node: ALARM187453 ! Node: ALL189087 ! Node: ALLOCATED191005 ! Node: AND192142 ! Node: ANINT193439 ! Node: ANY194917 ! Node: ASIN196847 ! Node: ASINH198073 ! Node: ASSOCIATED199071 ! Node: ATAN202076 ! Node: ATAN2203495 ! Node: ATANH205267 ! Node: ATOMIC_DEFINE206267 ! Node: ATOMIC_REF207441 ! Node: BESSEL_J0208801 ! Node: BESSEL_J1209850 ! Node: BESSEL_JN210902 ! Node: BESSEL_Y0212784 ! Node: BESSEL_Y1213784 ! Node: BESSEL_YN214784 ! Node: BGE216616 ! Node: BGT217305 ! Node: BIT_SIZE217952 ! Node: BLE218773 ! Node: BLT219452 ! Node: BTEST220087 ! Node: C_ASSOCIATED220970 ! Node: C_FUNLOC222179 ! Node: C_F_PROCPOINTER223548 ! Node: C_F_POINTER225049 ! Node: C_LOC226467 ! Node: C_SIZEOF227744 ! Node: CEILING229154 ! Node: CHAR230159 ! Node: CHDIR231363 ! Node: CHMOD232531 ! Node: CMPLX234394 ! Node: COMMAND_ARGUMENT_COUNT235858 ! Node: COMPILER_OPTIONS236772 ! Node: COMPILER_VERSION237781 ! Node: COMPLEX238745 ! Node: CONJG239899 ! Node: COS240979 ! Node: COSH242425 ! Node: COUNT243590 ! Node: CPU_TIME245606 ! Node: CSHIFT246960 ! Node: CTIME248616 ! Node: DATE_AND_TIME250269 ! Node: DBLE252730 ! Node: DCMPLX253523 ! Node: DIGITS254717 ! Node: DIM255683 ! Node: DOT_PRODUCT256941 ! Node: DPROD258597 ! Node: DREAL259514 ! Node: DSHIFTL260180 ! Node: DSHIFTR261500 ! Node: DTIME262821 ! Node: EOSHIFT265624 ! Node: EPSILON267697 ! Node: ERF268423 ! Node: ERFC269197 ! Node: ERFC_SCALED270001 ! Node: ETIME270693 ! Node: EXECUTE_COMMAND_LINE272934 ! Node: EXIT275514 ! Node: EXP276388 ! Node: EXPONENT277661 ! Node: EXTENDS_TYPE_OF278421 ! Node: FDATE279274 ! Node: FGET280756 ! Node: FGETC282574 ! Node: FLOOR284373 ! Node: FLUSH285357 ! Node: FNUM287232 ! Node: FPUT287954 ! Node: FPUTC289579 ! Node: FRACTION291350 ! Node: FREE292251 ! Node: FSEEK293086 ! Node: FSTAT295380 ! Node: FTELL296460 ! Node: GAMMA297438 ! Node: GERROR298479 ! Node: GETARG299198 ! Node: GET_COMMAND300962 ! Node: GET_COMMAND_ARGUMENT302326 ! Node: GETCWD304360 ! Node: GETENV305334 ! Node: GET_ENVIRONMENT_VARIABLE306759 ! Node: GETGID308912 ! Node: GETLOG309449 ! Node: GETPID310309 ! Node: GETUID311039 ! Node: GMTIME311555 ! Node: HOSTNM313044 ! Node: HUGE313962 ! Node: HYPOT314683 ! Node: IACHAR315503 ! Node: IALL316683 ! Node: IAND318160 ! Node: IANY319144 ! Node: IARGC320630 ! Node: IBCLR321651 ! Node: IBITS322312 ! Node: IBSET323227 ! Node: ICHAR323883 ! Node: IDATE326055 ! Node: IEOR327082 ! Node: IERRNO327958 ! Node: IMAGE_INDEX328507 ! Node: INDEX intrinsic329531 ! Node: INT331072 ! Node: INT2332774 ! Node: INT8333539 ! Node: IOR334251 ! Node: IPARITY335103 ! Node: IRAND336627 ! Node: IS_IOSTAT_END337983 ! Node: IS_IOSTAT_EOR339080 ! Node: ISATTY340207 ! Node: ISHFT340990 ! Node: ISHFTC341970 ! Node: ISNAN343186 ! Node: ITIME343934 ! Node: KILL344959 ! Node: KIND345863 ! Node: LBOUND346708 ! Node: LCOBOUND348041 ! Node: LEADZ349171 ! Node: LEN350031 ! Node: LEN_TRIM351312 ! Node: LGE352294 ! Node: LGT353796 ! Node: LINK355263 ! Node: LLE356298 ! Node: LLT357792 ! Node: LNBLNK359252 ! Node: LOC360028 ! Node: LOG360759 ! Node: LOG10362162 ! Node: LOG_GAMMA363136 ! Node: LOGICAL364225 ! Node: LONG365033 ! Node: LSHIFT365789 ! Node: LSTAT366874 ! Node: LTIME368068 ! Node: MALLOC369479 ! Node: MASKL370938 ! Node: MASKR371701 ! Node: MATMUL372467 ! Node: MAX373556 ! Node: MAXEXPONENT375055 ! Node: MAXLOC375871 ! Node: MAXVAL377890 ! Node: MCLOCK379523 ! Node: MCLOCK8380547 ! Node: MERGE381780 ! Node: MERGE_BITS382529 ! Node: MIN383390 ! Node: MINEXPONENT384891 ! Node: MINLOC385521 ! Node: MINVAL387540 ! Node: MOD389192 ! Node: MODULO390799 ! Node: MOVE_ALLOC392013 ! Node: MVBITS393042 ! Node: NEAREST394101 ! Node: NEW_LINE395224 ! Node: NINT395995 ! Node: NORM2397398 ! Node: NOT398536 ! Node: NULL399120 ! Node: NUM_IMAGES400025 ! Node: OR400841 ! Node: PACK402125 ! Node: PARITY404117 ! Node: PERROR405332 ! Node: PRECISION405953 ! Node: POPCNT406839 ! Node: POPPAR407710 ! Node: PRESENT408761 ! Node: PRODUCT409867 ! Node: RADIX411392 ! Node: RAN412214 ! Node: RAND412669 ! Node: RANDOM_NUMBER414001 ! Node: RANDOM_SEED415719 ! Node: RANGE417604 ! Node: RANK418293 ! Node: REAL419073 ! Node: RENAME420847 ! Node: REPEAT421866 ! Node: RESHAPE422592 ! Node: RRSPACING424061 ! Node: RSHIFT424754 ! Node: SAME_TYPE_AS425892 ! Node: SCALE426722 ! Node: SCAN427502 ! Node: SECNDS429052 ! Node: SECOND430140 ! Node: SELECTED_CHAR_KIND431016 ! Node: SELECTED_INT_KIND432607 ! Node: SELECTED_REAL_KIND433782 ! Node: SET_EXPONENT436448 ! Node: SHAPE437444 ! Node: SHIFTA438859 ! Node: SHIFTL439820 ! Node: SHIFTR440655 ! Node: SIGN441491 ! Node: SIGNAL442775 ! Node: SIN444272 ! Node: SINH445370 ! Node: SIZE446366 ! Node: SIZEOF447674 ! Node: SLEEP449149 ! Node: SPACING449709 ! Node: SPREAD450722 ! Node: SQRT451867 ! Node: SRAND453221 ! Node: STAT454389 ! Node: STORAGE_SIZE457556 ! Node: SUM458435 ! Node: SYMLNK459918 ! Node: SYSTEM461050 ! Node: SYSTEM_CLOCK462301 ! Node: TAN464459 ! Node: TANH465431 ! Node: THIS_IMAGE466588 ! Node: TIME468080 ! Node: TIME8469205 ! Node: TINY470355 ! Node: TRAILZ470955 ! Node: TRANSFER471772 ! Node: TRANSPOSE473806 ! Node: TRIM474493 ! Node: TTYNAM475350 ! Node: UBOUND476265 ! Node: UCOBOUND477655 ! Node: UMASK478787 ! Node: UNLINK479465 ! Node: UNPACK480442 ! Node: VERIFY481730 ! Node: XOR483451 ! Node: Intrinsic Modules484823 ! Node: ISO_FORTRAN_ENV485066 ! Node: ISO_C_BINDING489218 ! Node: OpenMP Modules OMP_LIB and OMP_LIB_KINDS493329 ! Node: Contributing494615 ! Node: Contributors495469 ! Node: Projects497136 ! Node: Proposed Extensions497940 ! Node: Copying499951 ! Node: GNU Free Documentation License537515 ! Node: Funding562658 ! Node: Option Index565183 ! Node: Keyword Index579401  End Tag Table --- 17868,18209 ---- Node: Preprocessing Options30111 Node: Error and Warning Options38342 Node: Debugging Options46584 ! Node: Directory Options49590 ! Node: Link Options51025 ! Node: Runtime Options51649 ! Node: Code Gen Options53931 ! Node: Environment Variables70887 ! Node: Runtime71492 ! Node: GFORTRAN_STDIN_UNIT72603 ! Node: GFORTRAN_STDOUT_UNIT72970 ! Node: GFORTRAN_STDERR_UNIT73371 ! Node: GFORTRAN_TMPDIR73765 ! Node: GFORTRAN_UNBUFFERED_ALL74217 ! Node: GFORTRAN_UNBUFFERED_PRECONNECTED74743 ! Node: GFORTRAN_SHOW_LOCUS75387 ! Node: GFORTRAN_OPTIONAL_PLUS75883 ! Node: GFORTRAN_DEFAULT_RECL76359 ! Node: GFORTRAN_LIST_SEPARATOR76848 ! Node: GFORTRAN_CONVERT_UNIT77457 ! Node: GFORTRAN_ERROR_BACKTRACE80320 ! Node: Fortran 2003 and 2008 status80877 ! Node: Fortran 2003 status81137 ! Node: Fortran 2008 status86039 ! Node: TS 29113 status90824 ! Node: Compiler Characteristics91596 ! Node: KIND Type Parameters92148 ! Node: Internal representation of LOGICAL variables93398 ! Node: Thread-safety of the runtime library94755 ! Node: Data consistency and durability96182 ! Node: Extensions99224 ! Node: Extensions implemented in GNU Fortran99825 ! Node: Old-style kind specifications101183 ! Node: Old-style variable initialization102290 ! Node: Extensions to namelist103602 ! Node: X format descriptor without count field105599 ! Node: Commas in FORMAT specifications106126 ! Node: Missing period in FORMAT specifications106643 ! Node: I/O item lists107205 ! Node: `Q' exponent-letter107594 ! Node: BOZ literal constants108198 ! Node: Real array indices110773 ! Node: Unary operators111070 ! Node: Implicitly convert LOGICAL and INTEGER values111484 ! Node: Hollerith constants support112444 ! Node: Cray pointers114216 ! Node: CONVERT specifier119663 ! Node: OpenMP121661 ! Node: Argument list functions123912 ! Node: Extensions not implemented in GNU Fortran125518 ! Node: STRUCTURE and RECORD126440 ! Node: ENCODE and DECODE statements128498 ! Node: Variable FORMAT expressions129858 ! Node: Alternate complex function syntax130963 ! Node: Mixed-Language Programming131483 ! Node: Interoperability with C132027 ! Node: Intrinsic Types133365 ! Node: Derived Types and struct133880 ! Node: Interoperable Global Variables135236 ! Node: Interoperable Subroutines and Functions136512 ! Node: Working with Pointers140125 ! Node: Further Interoperability of Fortran with C144443 ! Node: GNU Fortran Compiler Directives145279 ! Node: Non-Fortran Main Program147471 ! Node: _gfortran_set_args149613 ! Node: _gfortran_set_options150548 ! Node: _gfortran_set_convert153424 ! Node: _gfortran_set_record_marker154288 ! Node: _gfortran_set_fpe155113 ! Node: _gfortran_set_max_subrecord_length156269 ! Node: Intrinsic Procedures157225 ! Node: Introduction to Intrinsics172648 ! Node: ABORT175000 ! Node: ABS175656 ! Node: ACCESS177273 ! Node: ACHAR179194 ! Node: ACOS180395 ! Node: ACOSH181632 ! Node: ADJUSTL182620 ! Node: ADJUSTR183561 ! Node: AIMAG184508 ! Node: AINT185889 ! Node: ALARM187476 ! Node: ALL189110 ! Node: ALLOCATED191028 ! Node: AND192165 ! Node: ANINT193462 ! Node: ANY194940 ! Node: ASIN196870 ! Node: ASINH198096 ! Node: ASSOCIATED199094 ! Node: ATAN202099 ! Node: ATAN2203518 ! Node: ATANH205290 ! Node: ATOMIC_DEFINE206290 ! Node: ATOMIC_REF207464 ! Node: BESSEL_J0208824 ! Node: BESSEL_J1209873 ! Node: BESSEL_JN210925 ! Node: BESSEL_Y0212807 ! Node: BESSEL_Y1213807 ! Node: BESSEL_YN214807 ! Node: BGE216639 ! Node: BGT217328 ! Node: BIT_SIZE217975 ! Node: BLE218796 ! Node: BLT219475 ! Node: BTEST220110 ! Node: C_ASSOCIATED220993 ! Node: C_FUNLOC222202 ! Node: C_F_PROCPOINTER223571 ! Node: C_F_POINTER225072 ! Node: C_LOC226490 ! Node: C_SIZEOF227767 ! Node: CEILING229177 ! Node: CHAR230182 ! Node: CHDIR231386 ! Node: CHMOD232554 ! Node: CMPLX234417 ! Node: COMMAND_ARGUMENT_COUNT235881 ! Node: COMPILER_OPTIONS236795 ! Node: COMPILER_VERSION237804 ! Node: COMPLEX238768 ! Node: CONJG239922 ! Node: COS241002 ! Node: COSH242448 ! Node: COUNT243613 ! Node: CPU_TIME245629 ! Node: CSHIFT246983 ! Node: CTIME248639 ! Node: DATE_AND_TIME250149 ! Node: DBLE252610 ! Node: DCMPLX253403 ! Node: DIGITS254597 ! Node: DIM255563 ! Node: DOT_PRODUCT256821 ! Node: DPROD258477 ! Node: DREAL259394 ! Node: DSHIFTL260060 ! Node: DSHIFTR261380 ! Node: DTIME262701 ! Node: EOSHIFT265504 ! Node: EPSILON267577 ! Node: ERF268303 ! Node: ERFC269077 ! Node: ERFC_SCALED269881 ! Node: ETIME270573 ! Node: EXECUTE_COMMAND_LINE272814 ! Node: EXIT275394 ! Node: EXP276268 ! Node: EXPONENT277541 ! Node: EXTENDS_TYPE_OF278301 ! Node: FDATE279154 ! Node: FGET280636 ! Node: FGETC282454 ! Node: FLOOR284253 ! Node: FLUSH285237 ! Node: FNUM287112 ! Node: FPUT287834 ! Node: FPUTC289459 ! Node: FRACTION291230 ! Node: FREE292131 ! Node: FSEEK292966 ! Node: FSTAT295260 ! Node: FTELL296340 ! Node: GAMMA297318 ! Node: GERROR298359 ! Node: GETARG299078 ! Node: GET_COMMAND300842 ! Node: GET_COMMAND_ARGUMENT302206 ! Node: GETCWD304240 ! Node: GETENV305214 ! Node: GET_ENVIRONMENT_VARIABLE306639 ! Node: GETGID308792 ! Node: GETLOG309329 ! Node: GETPID310189 ! Node: GETUID310919 ! Node: GMTIME311435 ! Node: HOSTNM312924 ! Node: HUGE313842 ! Node: HYPOT314563 ! Node: IACHAR315383 ! Node: IALL316563 ! Node: IAND318040 ! Node: IANY319024 ! Node: IARGC320510 ! Node: IBCLR321531 ! Node: IBITS322192 ! Node: IBSET323107 ! Node: ICHAR323763 ! Node: IDATE325935 ! Node: IEOR326962 ! Node: IERRNO327838 ! Node: IMAGE_INDEX328387 ! Node: INDEX intrinsic329411 ! Node: INT330952 ! Node: INT2332654 ! Node: INT8333419 ! Node: IOR334131 ! Node: IPARITY334983 ! Node: IRAND336507 ! Node: IS_IOSTAT_END337863 ! Node: IS_IOSTAT_EOR338960 ! Node: ISATTY340087 ! Node: ISHFT340870 ! Node: ISHFTC341850 ! Node: ISNAN343066 ! Node: ITIME343814 ! Node: KILL344839 ! Node: KIND345743 ! Node: LBOUND346588 ! Node: LCOBOUND347921 ! Node: LEADZ349051 ! Node: LEN349911 ! Node: LEN_TRIM351192 ! Node: LGE352174 ! Node: LGT353676 ! Node: LINK355143 ! Node: LLE356178 ! Node: LLT357672 ! Node: LNBLNK359132 ! Node: LOC359908 ! Node: LOG360639 ! Node: LOG10362042 ! Node: LOG_GAMMA363016 ! Node: LOGICAL364105 ! Node: LONG364913 ! Node: LSHIFT365669 ! Node: LSTAT366754 ! Node: LTIME367948 ! Node: MALLOC369359 ! Node: MASKL370818 ! Node: MASKR371581 ! Node: MATMUL372347 ! Node: MAX373436 ! Node: MAXEXPONENT374935 ! Node: MAXLOC375751 ! Node: MAXVAL377770 ! Node: MCLOCK379403 ! Node: MCLOCK8380427 ! Node: MERGE381660 ! Node: MERGE_BITS382409 ! Node: MIN383270 ! Node: MINEXPONENT384771 ! Node: MINLOC385401 ! Node: MINVAL387420 ! Node: MOD389072 ! Node: MODULO390679 ! Node: MOVE_ALLOC391893 ! Node: MVBITS392922 ! Node: NEAREST393981 ! Node: NEW_LINE395077 ! Node: NINT395848 ! Node: NORM2397251 ! Node: NOT398389 ! Node: NULL398973 ! Node: NUM_IMAGES399878 ! Node: OR400694 ! Node: PACK401978 ! Node: PARITY403970 ! Node: PERROR405185 ! Node: PRECISION405806 ! Node: POPCNT406692 ! Node: POPPAR407563 ! Node: PRESENT408614 ! Node: PRODUCT409720 ! Node: RADIX411245 ! Node: RAN412067 ! Node: RAND412522 ! Node: RANDOM_NUMBER413854 ! Node: RANDOM_SEED415572 ! Node: RANGE419249 ! Node: RANK419938 ! Node: REAL420718 ! Node: RENAME422492 ! Node: REPEAT423511 ! Node: RESHAPE424237 ! Node: RRSPACING425706 ! Node: RSHIFT426399 ! Node: SAME_TYPE_AS427537 ! Node: SCALE428367 ! Node: SCAN429147 ! Node: SECNDS430697 ! Node: SECOND431785 ! Node: SELECTED_CHAR_KIND432661 ! Node: SELECTED_INT_KIND434252 ! Node: SELECTED_REAL_KIND435427 ! Node: SET_EXPONENT438093 ! Node: SHAPE439089 ! Node: SHIFTA440504 ! Node: SHIFTL441465 ! Node: SHIFTR442300 ! Node: SIGN443136 ! Node: SIGNAL444420 ! Node: SIN445917 ! Node: SINH447015 ! Node: SIZE448011 ! Node: SIZEOF449319 ! Node: SLEEP450794 ! Node: SPACING451354 ! Node: SPREAD452367 ! Node: SQRT453512 ! Node: SRAND454866 ! Node: STAT456034 ! Node: STORAGE_SIZE459201 ! Node: SUM460080 ! Node: SYMLNK461563 ! Node: SYSTEM462695 ! Node: SYSTEM_CLOCK463946 ! Node: TAN466104 ! Node: TANH467076 ! Node: THIS_IMAGE468233 ! Node: TIME469725 ! Node: TIME8470850 ! Node: TINY472000 ! Node: TRAILZ472600 ! Node: TRANSFER473417 ! Node: TRANSPOSE475451 ! Node: TRIM476138 ! Node: TTYNAM476995 ! Node: UBOUND477910 ! Node: UCOBOUND479300 ! Node: UMASK480432 ! Node: UNLINK481110 ! Node: UNPACK482087 ! Node: VERIFY483375 ! Node: XOR485096 ! Node: Intrinsic Modules486468 ! Node: ISO_FORTRAN_ENV486711 ! Node: ISO_C_BINDING490863 ! Node: OpenMP Modules OMP_LIB and OMP_LIB_KINDS494974 ! Node: Contributing496260 ! Node: Contributors497114 ! Node: Projects498781 ! Node: Proposed Extensions499585 ! Node: Copying501596 ! Node: GNU Free Documentation License539160 ! Node: Funding564303 ! Node: Option Index566828 ! Node: Keyword Index581046  End Tag Table diff -Nrcpad gcc-4.7.3/gcc/fortran/interface.c gcc-4.7.4/gcc/fortran/interface.c *** gcc-4.7.3/gcc/fortran/interface.c Sat Feb 18 12:31:42 2012 --- gcc-4.7.4/gcc/fortran/interface.c Sat Jun 1 21:36:33 2013 *************** check_dummy_characteristics (gfc_symbol *** 987,993 **** bool type_must_agree, char *errmsg, int err_len) { /* Check type and rank. */ ! if (type_must_agree && !compare_type_rank (s2, s1)) { if (errmsg != NULL) snprintf (errmsg, err_len, "Type/rank mismatch in argument '%s'", --- 987,994 ---- bool type_must_agree, char *errmsg, int err_len) { /* Check type and rank. */ ! if (type_must_agree && ! (!compare_type_rank (s1, s2) || !compare_type_rank (s2, s1))) { if (errmsg != NULL) snprintf (errmsg, err_len, "Type/rank mismatch in argument '%s'", diff -Nrcpad gcc-4.7.3/gcc/fortran/intrinsic.c gcc-4.7.4/gcc/fortran/intrinsic.c *** gcc-4.7.3/gcc/fortran/intrinsic.c Wed Nov 9 09:41:17 2011 --- gcc-4.7.4/gcc/fortran/intrinsic.c Thu Mar 20 19:42:15 2014 *************** gfc_intrinsic_sub_interface (gfc_code *c *** 4217,4229 **** c->resolved_sym->attr.elemental = isym->elemental; } ! if (gfc_pure (NULL) && !isym->pure) { gfc_error ("Subroutine call to intrinsic '%s' at %L is not PURE", name, &c->loc); return MATCH_ERROR; } c->resolved_sym->attr.noreturn = isym->noreturn; return MATCH_YES; --- 4217,4232 ---- c->resolved_sym->attr.elemental = isym->elemental; } ! if (!isym->pure && gfc_pure (NULL)) { gfc_error ("Subroutine call to intrinsic '%s' at %L is not PURE", name, &c->loc); return MATCH_ERROR; } + if (!isym->pure) + gfc_unset_implicit_pure (NULL); + c->resolved_sym->attr.noreturn = isym->noreturn; return MATCH_YES; diff -Nrcpad gcc-4.7.3/gcc/fortran/intrinsic.texi gcc-4.7.4/gcc/fortran/intrinsic.texi *** gcc-4.7.3/gcc/fortran/intrinsic.texi Thu Jan 12 20:26:10 2012 --- gcc-4.7.4/gcc/fortran/intrinsic.texi Mon May 26 19:44:24 2014 *************** end program test_cshift *** 3314,3323 **** @table @asis @item @emph{Description}: @code{CTIME} converts a system time value, such as returned by ! @code{TIME8}, to a string. Unless the application has called ! @code{setlocale}, the output will be in the default locale, of length ! 24 and of the form @samp{Sat Aug 19 18:13:14 1995}. In other locales, ! a longer string may result. This intrinsic is provided in both subroutine and function forms; however, only one form can be used in any given program unit. --- 3314,3321 ---- @table @asis @item @emph{Description}: @code{CTIME} converts a system time value, such as returned by ! @code{TIME8}, to a string. The output will be of the form @samp{Sat ! Aug 19 18:13:14 1995}. This intrinsic is provided in both subroutine and function forms; however, only one form can be used in any given program unit. *************** Elemental function *** 9209,9215 **** @item @emph{Arguments}: @multitable @columnfractions .15 .70 @item @var{X} @tab Shall be of type @code{REAL}. ! @item @var{S} @tab (Optional) shall be of type @code{REAL} and not equal to zero. @end multitable --- 9207,9213 ---- @item @emph{Arguments}: @multitable @columnfractions .15 .70 @item @var{X} @tab Shall be of type @code{REAL}. ! @item @var{S} @tab Shall be of type @code{REAL} and not equal to zero. @end multitable *************** end program *** 10134,10142 **** Restarts or queries the state of the pseudorandom number generator used by @code{RANDOM_NUMBER}. ! If @code{RANDOM_SEED} is called without arguments, it is initialized to ! a default state. The example below shows how to initialize the random ! seed based on the system's time. @item @emph{Standard}: Fortran 95 and later --- 10132,10143 ---- Restarts or queries the state of the pseudorandom number generator used by @code{RANDOM_NUMBER}. ! If @code{RANDOM_SEED} is called without arguments, it is initialized ! to a default state. The example below shows how to initialize the ! random seed with a varying seed in order to ensure a different random ! number sequence for each invocation of the program. Note that setting ! any of the seed values to zero should be avoided as it can result in ! poor quality random numbers being generated. @item @emph{Standard}: Fortran 95 and later *************** the @var{SIZE} argument. *** 10164,10183 **** @item @emph{Example}: @smallexample ! SUBROUTINE init_random_seed() ! INTEGER :: i, n, clock ! INTEGER, DIMENSION(:), ALLOCATABLE :: seed ! ! CALL RANDOM_SEED(size = n) ! ALLOCATE(seed(n)) ! ! CALL SYSTEM_CLOCK(COUNT=clock) ! ! seed = clock + 37 * (/ (i - 1, i = 1, n) /) ! CALL RANDOM_SEED(PUT = seed) ! ! DEALLOCATE(seed) ! END SUBROUTINE @end smallexample @item @emph{See also}: --- 10165,10217 ---- @item @emph{Example}: @smallexample ! subroutine init_random_seed() ! implicit none ! integer, allocatable :: seed(:) ! integer :: i, n, un, istat, dt(8), pid, t(2), s ! integer(8) :: count, tms ! ! call random_seed(size = n) ! allocate(seed(n)) ! ! First try if the OS provides a random number generator ! open(newunit=un, file="/dev/urandom", access="stream", & ! form="unformatted", action="read", status="old", iostat=istat) ! if (istat == 0) then ! read(un) seed ! close(un) ! else ! ! Fallback to XOR:ing the current time and pid. The PID is ! ! useful in case one launches multiple instances of the same ! ! program in parallel. ! call system_clock(count) ! if (count /= 0) then ! t = transfer(count, t) ! else ! call date_and_time(values=dt) ! tms = (dt(1) - 1970) * 365_8 * 24 * 60 * 60 * 1000 & ! + dt(2) * 31_8 * 24 * 60 * 60 * 1000 & ! + dt(3) * 24 * 60 * 60 * 60 * 1000 & ! + dt(5) * 60 * 60 * 1000 & ! + dt(6) * 60 * 1000 + dt(7) * 1000 & ! + dt(8) ! t = transfer(tms, t) ! end if ! s = ieor(t(1), t(2)) ! pid = getpid() + 1099279 ! Add a prime ! s = ieor(s, pid) ! if (n >= 3) then ! seed(1) = t(1) + 36269 ! seed(2) = t(2) + 72551 ! seed(3) = pid ! if (n > 3) then ! seed(4:) = s + 37 * (/ (i, i = 0, n - 4) /) ! end if ! else ! seed = s + 37 * (/ (i, i = 0, n - 1 ) /) ! end if ! end if ! call random_seed(put=seed) ! end subroutine init_random_seed @end smallexample @item @emph{See also}: diff -Nrcpad gcc-4.7.3/gcc/fortran/invoke.texi gcc-4.7.4/gcc/fortran/invoke.texi *** gcc-4.7.3/gcc/fortran/invoke.texi Fri Feb 17 11:15:08 2012 --- gcc-4.7.4/gcc/fortran/invoke.texi Sat Jan 11 22:47:25 2014 *************** Output the internal parse tree after tra *** 940,950 **** into internal representation. Only really useful for debugging the GNU Fortran compiler itself. ! @item -fdump-optimized-tree @opindex @code{fdump-fortran-optimized} Output the parse tree after front-end optimization. Only really useful for debugging the GNU Fortran compiler itself. @opindex @code{fdump-parse-tree} Output the internal parse tree after translating the source program into internal representation. Only really useful for debugging the --- 940,951 ---- into internal representation. Only really useful for debugging the GNU Fortran compiler itself. ! @item -fdump-fortran-optimized @opindex @code{fdump-fortran-optimized} Output the parse tree after front-end optimization. Only really useful for debugging the GNU Fortran compiler itself. + @item -fdump-parse-tree @opindex @code{fdump-parse-tree} Output the internal parse tree after translating the source program into internal representation. Only really useful for debugging the diff -Nrcpad gcc-4.7.3/gcc/fortran/io.c gcc-4.7.4/gcc/fortran/io.c *** gcc-4.7.3/gcc/fortran/io.c Wed Feb 22 17:25:11 2012 --- gcc-4.7.4/gcc/fortran/io.c Thu Mar 20 19:42:15 2014 *************** match_vtag (const io_tag *tag, gfc_expr *** 1307,1313 **** return MATCH_ERROR; } ! if (gfc_pure (NULL) && gfc_impure_variable (result->symtree->n.sym)) { gfc_error ("Variable %s cannot be assigned in PURE procedure at %C", tag->name); --- 1307,1314 ---- return MATCH_ERROR; } ! bool impure = gfc_impure_variable (result->symtree->n.sym); ! if (impure && gfc_pure (NULL)) { gfc_error ("Variable %s cannot be assigned in PURE procedure at %C", tag->name); *************** match_vtag (const io_tag *tag, gfc_expr *** 1315,1322 **** return MATCH_ERROR; } ! if (gfc_implicit_pure (NULL) && gfc_impure_variable (result->symtree->n.sym)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; *v = result; return MATCH_YES; --- 1316,1323 ---- return MATCH_ERROR; } ! if (impure) ! gfc_unset_implicit_pure (NULL); *v = result; return MATCH_YES; *************** gfc_match_open (void) *** 1836,1843 **** goto cleanup; } ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; warn = (open->err || open->iostat) ? true : false; --- 1837,1843 ---- goto cleanup; } ! gfc_unset_implicit_pure (NULL); warn = (open->err || open->iostat) ? true : false; *************** gfc_match_close (void) *** 2249,2256 **** goto cleanup; } ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; warn = (close->iostat || close->err) ? true : false; --- 2249,2255 ---- goto cleanup; } ! gfc_unset_implicit_pure (NULL); warn = (close->iostat || close->err) ? true : false; *************** done: *** 2417,2424 **** goto cleanup; } ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; new_st.op = op; new_st.ext.filepos = fp; --- 2416,2422 ---- goto cleanup; } ! gfc_unset_implicit_pure (NULL); new_st.op = op; new_st.ext.filepos = fp; *************** if (condition) \ *** 3274,3282 **** "an internal file in a PURE procedure", io_kind_name (k)); ! if (gfc_implicit_pure (NULL) && (k == M_READ || k == M_WRITE)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; ! } if (k != M_READ) --- 3272,3279 ---- "an internal file in a PURE procedure", io_kind_name (k)); ! if (k == M_READ || k == M_WRITE) ! gfc_unset_implicit_pure (NULL); } if (k != M_READ) *************** gfc_match_print (void) *** 3807,3814 **** return MATCH_ERROR; } ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; return MATCH_YES; } --- 3804,3810 ---- return MATCH_ERROR; } ! gfc_unset_implicit_pure (NULL); return MATCH_YES; } *************** gfc_match_inquire (void) *** 3966,3973 **** return MATCH_ERROR; } ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; new_st.block = gfc_get_code (); new_st.block->op = EXEC_IOLENGTH; --- 3962,3968 ---- return MATCH_ERROR; } ! gfc_unset_implicit_pure (NULL); new_st.block = gfc_get_code (); new_st.block->op = EXEC_IOLENGTH; *************** gfc_match_inquire (void) *** 4020,4027 **** goto cleanup; } ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; if (inquire->id != NULL && inquire->pending == NULL) { --- 4015,4021 ---- goto cleanup; } ! gfc_unset_implicit_pure (NULL); if (inquire->id != NULL && inquire->pending == NULL) { *************** gfc_match_wait (void) *** 4206,4213 **** goto cleanup; } ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; new_st.op = EXEC_WAIT; new_st.ext.wait = wait; --- 4200,4206 ---- goto cleanup; } ! gfc_unset_implicit_pure (NULL); new_st.op = EXEC_WAIT; new_st.ext.wait = wait; diff -Nrcpad gcc-4.7.3/gcc/fortran/match.c gcc-4.7.4/gcc/fortran/match.c *** gcc-4.7.3/gcc/fortran/match.c Mon Sep 10 12:10:12 2012 --- gcc-4.7.4/gcc/fortran/match.c Thu Mar 20 19:42:15 2014 *************** gfc_match_critical (void) *** 1754,1761 **** return MATCH_ERROR; } ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: CRITICAL statement at %C") == FAILURE) --- 1754,1760 ---- return MATCH_ERROR; } ! gfc_unset_implicit_pure (NULL); if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: CRITICAL statement at %C") == FAILURE) *************** gfc_match_stopcode (gfc_statement st) *** 2684,2691 **** goto cleanup; } ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; if (st == ST_STOP && gfc_find_state (COMP_CRITICAL) == SUCCESS) { --- 2683,2689 ---- goto cleanup; } ! gfc_unset_implicit_pure (NULL); if (st == ST_STOP && gfc_find_state (COMP_CRITICAL) == SUCCESS) { *************** lock_unlock_statement (gfc_statement st) *** 2825,2832 **** return MATCH_ERROR; } ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; if (gfc_option.coarray == GFC_FCOARRAY_NONE) { --- 2823,2829 ---- return MATCH_ERROR; } ! gfc_unset_implicit_pure (NULL); if (gfc_option.coarray == GFC_FCOARRAY_NONE) { *************** sync_statement (gfc_statement st) *** 3017,3024 **** return MATCH_ERROR; } ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: SYNC statement at %C") == FAILURE) --- 3014,3020 ---- return MATCH_ERROR; } ! gfc_unset_implicit_pure (NULL); if (gfc_notify_std (GFC_STD_F2008, "Fortran 2008: SYNC statement at %C") == FAILURE) *************** gfc_match_allocate (void) *** 3493,3507 **** if (gfc_check_do_variable (tail->expr->symtree)) goto cleanup; ! if (gfc_pure (NULL) && gfc_impure_variable (tail->expr->symtree->n.sym)) { gfc_error ("Bad allocate-object at %C for a PURE procedure"); goto cleanup; } ! if (gfc_implicit_pure (NULL) ! && gfc_impure_variable (tail->expr->symtree->n.sym)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; if (tail->expr->ts.deferred) { --- 3489,3503 ---- if (gfc_check_do_variable (tail->expr->symtree)) goto cleanup; ! bool impure = gfc_impure_variable (tail->expr->symtree->n.sym); ! if (impure && gfc_pure (NULL)) { gfc_error ("Bad allocate-object at %C for a PURE procedure"); goto cleanup; } ! if (impure) ! gfc_unset_implicit_pure (NULL); if (tail->expr->ts.deferred) { *************** gfc_match_deallocate (void) *** 3868,3881 **** sym = tail->expr->symtree->n.sym; ! if (gfc_pure (NULL) && gfc_impure_variable (sym)) { gfc_error ("Illegal allocate-object at %C for a PURE procedure"); goto cleanup; } ! if (gfc_implicit_pure (NULL) && gfc_impure_variable (sym)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; if (gfc_is_coarray (tail->expr) && gfc_find_state (COMP_DO_CONCURRENT) == SUCCESS) --- 3864,3878 ---- sym = tail->expr->symtree->n.sym; ! bool impure = gfc_impure_variable (sym); ! if (impure && gfc_pure (NULL)) { gfc_error ("Illegal allocate-object at %C for a PURE procedure"); goto cleanup; } ! if (impure) ! gfc_unset_implicit_pure (NULL); if (gfc_is_coarray (tail->expr) && gfc_find_state (COMP_DO_CONCURRENT) == SUCCESS) diff -Nrcpad gcc-4.7.3/gcc/fortran/module.c gcc-4.7.4/gcc/fortran/module.c *** gcc-4.7.3/gcc/fortran/module.c Tue Jan 8 19:42:38 2013 --- gcc-4.7.4/gcc/fortran/module.c Mon Jan 27 21:23:16 2014 *************** get_integer (int integer) *** 387,423 **** } - /* Recursive function to find a pointer within a tree by brute force. */ - - static pointer_info * - fp2 (pointer_info *p, const void *target) - { - pointer_info *q; - - if (p == NULL) - return NULL; - - if (p->u.pointer == target) - return p; - - q = fp2 (p->left, target); - if (q != NULL) - return q; - - return fp2 (p->right, target); - } - - - /* During reading, find a pointer_info node from the pointer value. - This amounts to a brute-force search. */ - - static pointer_info * - find_pointer2 (void *p) - { - return fp2 (pi_root, p); - } - - /* Resolve any fixups using a known pointer. */ static void --- 387,392 ---- *************** mio_pointer_ref (void *gp) *** 2500,2544 **** the namespace and is not loaded again. */ static void ! mio_component_ref (gfc_component **cp, gfc_symbol *sym) { - char name[GFC_MAX_SYMBOL_LEN + 1]; - gfc_component *q; pointer_info *p; p = mio_pointer_ref (cp); if (p->type == P_UNKNOWN) p->type = P_COMPONENT; - - if (iomode == IO_OUTPUT) - mio_pool_string (&(*cp)->name); - else - { - mio_internal_string (name); - - if (sym && sym->attr.is_class) - sym = sym->components->ts.u.derived; - - /* It can happen that a component reference can be read before the - associated derived type symbol has been loaded. Return now and - wait for a later iteration of load_needed. */ - if (sym == NULL) - return; - - if (sym->components != NULL && p->u.pointer == NULL) - { - /* Symbol already loaded, so search by name. */ - q = gfc_find_component (sym, name, true, true); - - if (q) - associate_integer_pointer (p, q); - } - - /* Make sure this symbol will eventually be loaded. */ - p = find_pointer2 (sym); - if (p->u.rsym.state == UNUSED) - p->u.rsym.state = NEEDED; - } } --- 2469,2481 ---- the namespace and is not loaded again. */ static void ! mio_component_ref (gfc_component **cp) { pointer_info *p; p = mio_pointer_ref (cp); if (p->type == P_UNKNOWN) p->type = P_COMPONENT; } *************** mio_ref (gfc_ref **rp) *** 2920,2926 **** case REF_COMPONENT: mio_symbol_ref (&r->u.c.sym); ! mio_component_ref (&r->u.c.component, r->u.c.sym); break; case REF_SUBSTRING: --- 2857,2863 ---- case REF_COMPONENT: mio_symbol_ref (&r->u.c.sym); ! mio_component_ref (&r->u.c.component); break; case REF_SUBSTRING: *************** mio_full_f2k_derived (gfc_symbol *sym) *** 3775,3781 **** /* Unlike most other routines, the address of the symbol node is already ! fixed on input and the name/module has already been filled in. */ static void mio_symbol (gfc_symbol *sym) --- 3712,3720 ---- /* Unlike most other routines, the address of the symbol node is already ! fixed on input and the name/module has already been filled in. ! If you update the symbol format here, don't forget to update read_module ! as well (look for "seek to the symbol's component list"). */ static void mio_symbol (gfc_symbol *sym) *************** find_symbol (gfc_symtree *st, const char *** 3920,3933 **** } ! /* Skip a list between balanced left and right parens. */ static void ! skip_list (void) { int level; ! level = 0; do { switch (parse_atom ()) --- 3859,3875 ---- } ! /* Skip a list between balanced left and right parens. ! By setting NEST_LEVEL to a non-zero value one assumes that a number of ! NEST_LEVEL opening parens have been already parsed by hand, and the remaining ! of the content is to be skipped here. */ static void ! skip_list (int nest_level) { int level; ! level = nest_level; do { switch (parse_atom ()) *************** load_derived_extensions (void) *** 4286,4292 **** if (!info || !derived) { while (peek_atom () != ATOM_RPAREN) ! skip_list (); continue; } --- 4228,4234 ---- if (!info || !derived) { while (peek_atom () != ATOM_RPAREN) ! skip_list (0); continue; } *************** read_module (void) *** 4523,4540 **** gfc_symbol *sym; get_module_locus (&operator_interfaces); /* Skip these for now. */ ! skip_list (); get_module_locus (&user_operators); ! skip_list (); ! skip_list (); /* Skip commons, equivalences and derived type extensions for now. */ ! skip_list (); ! skip_list (); get_module_locus (&extensions); ! skip_list (); mio_lparen (); --- 4465,4482 ---- gfc_symbol *sym; get_module_locus (&operator_interfaces); /* Skip these for now. */ ! skip_list (0); get_module_locus (&user_operators); ! skip_list (0); ! skip_list (0); /* Skip commons, equivalences and derived type extensions for now. */ ! skip_list (0); ! skip_list (0); get_module_locus (&extensions); ! skip_list (0); mio_lparen (); *************** read_module (void) *** 4561,4567 **** info->u.rsym.ns = atom_int; get_module_locus (&info->u.rsym.where); - skip_list (); /* See if the symbol has already been loaded by a previous module. If so, we reference the existing symbol and prevent it from --- 4503,4508 ---- *************** read_module (void) *** 4572,4581 **** if (sym == NULL || (sym->attr.flavor == FL_VARIABLE && info->u.rsym.ns !=1)) ! continue; info->u.rsym.state = USED; info->u.rsym.sym = sym; /* Some symbols do not have a namespace (eg. formal arguments), so the automatic "unique symtree" mechanism must be suppressed --- 4513,4568 ---- if (sym == NULL || (sym->attr.flavor == FL_VARIABLE && info->u.rsym.ns !=1)) ! { ! skip_list (0); ! continue; ! } info->u.rsym.state = USED; info->u.rsym.sym = sym; + /* The current symbol has already been loaded, so we can avoid loading + it again. However, if it is a derived type, some of its components + can be used in expressions in the module. To avoid the module loading + failing, we need to associate the module's component pointer indexes + with the existing symbol's component pointers. */ + if (sym->attr.flavor == FL_DERIVED) + { + gfc_component *c; + + /* First seek to the symbol's component list. */ + mio_lparen (); /* symbol opening. */ + skip_list (0); /* skip symbol attribute. */ + skip_list (0); /* typespec. */ + require_atom (ATOM_INTEGER); /* namespace ref. */ + require_atom (ATOM_INTEGER); /* common ref. */ + skip_list (0); /* formal args. */ + /* no value. */ + skip_list (0); /* array_spec. */ + require_atom (ATOM_INTEGER); /* result. */ + /* not a cray pointer. */ + + mio_lparen (); /* component list opening. */ + for (c = sym->components; c; c = c->next) + { + pointer_info *p; + const char *comp_name; + int n; + + mio_lparen (); /* component opening. */ + mio_integer (&n); + p = get_integer (n); + if (p->u.pointer == NULL) + associate_integer_pointer (p, c); + mio_pool_string (&comp_name); + gcc_assert (comp_name == c->name); + skip_list (1); /* component end. */ + } + mio_rparen (); /* component list closing. */ + + skip_list (1); /* symbol end. */ + } + else + skip_list (0); /* Some symbols do not have a namespace (eg. formal arguments), so the automatic "unique symtree" mechanism must be suppressed *************** read_module (void) *** 4738,4744 **** if (u == NULL) { ! skip_list (); continue; } --- 4725,4731 ---- if (u == NULL) { ! skip_list (0); continue; } diff -Nrcpad gcc-4.7.3/gcc/fortran/parse.c gcc-4.7.4/gcc/fortran/parse.c *** gcc-4.7.3/gcc/fortran/parse.c Sat Feb 2 22:38:14 2013 --- gcc-4.7.4/gcc/fortran/parse.c Thu Mar 20 19:42:15 2014 *************** decode_omp_directive (void) *** 545,552 **** return ST_NONE; } ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; old_locus = gfc_current_locus; --- 545,551 ---- return ST_NONE; } ! gfc_unset_implicit_pure (NULL); old_locus = gfc_current_locus; diff -Nrcpad gcc-4.7.3/gcc/fortran/primary.c gcc-4.7.4/gcc/fortran/primary.c *** gcc-4.7.3/gcc/fortran/primary.c Fri Jan 27 13:08:52 2012 --- gcc-4.7.4/gcc/fortran/primary.c Sat Feb 8 20:51:01 2014 *************** gfc_convert_to_structure_constructor (gf *** 2525,2531 **** if (parent && !comp) break; ! actual = actual->next; } if (build_actual_constructor (&comp_head, &ctor_head, sym) == FAILURE) --- 2525,2532 ---- if (parent && !comp) break; ! if (actual) ! actual = actual->next; } if (build_actual_constructor (&comp_head, &ctor_head, sym) == FAILURE) diff -Nrcpad gcc-4.7.3/gcc/fortran/resolve.c gcc-4.7.4/gcc/fortran/resolve.c *** gcc-4.7.3/gcc/fortran/resolve.c Wed Mar 13 05:32:07 2013 --- gcc-4.7.4/gcc/fortran/resolve.c Sat May 24 15:36:14 2014 *************** resolve_structure_cons (gfc_expr *expr, *** 1193,1201 **** } /* F2003, C1272 (3). */ ! if (gfc_pure (NULL) && cons->expr->expr_type == EXPR_VARIABLE ! && (gfc_impure_variable (cons->expr->symtree->n.sym) ! || gfc_is_coindexed (cons->expr))) { t = FAILURE; gfc_error ("Invalid expression in the structure constructor for " --- 1193,1202 ---- } /* F2003, C1272 (3). */ ! bool impure = cons->expr->expr_type == EXPR_VARIABLE ! && (gfc_impure_variable (cons->expr->symtree->n.sym) ! || gfc_is_coindexed (cons->expr)); ! if (impure && gfc_pure (NULL)) { t = FAILURE; gfc_error ("Invalid expression in the structure constructor for " *************** resolve_structure_cons (gfc_expr *expr, *** 1203,1214 **** comp->name, &cons->expr->where); } ! if (gfc_implicit_pure (NULL) ! && cons->expr->expr_type == EXPR_VARIABLE ! && (gfc_impure_variable (cons->expr->symtree->n.sym) ! || gfc_is_coindexed (cons->expr))) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; ! } return t; --- 1204,1211 ---- comp->name, &cons->expr->where); } ! if (impure) ! gfc_unset_implicit_pure (NULL); } return t; *************** resolve_function (gfc_expr *expr) *** 3155,3160 **** --- 3152,3158 ---- for (arg = expr->value.function.actual; arg; arg = arg->next) { if ((GENERIC_ID == GFC_ISYM_UBOUND || GENERIC_ID == GFC_ISYM_SIZE) + && arg == expr->value.function.actual && arg->next != NULL && arg->next->expr) { if (arg->next->expr->expr_type != EXPR_CONSTANT) *************** resolve_function (gfc_expr *expr) *** 3202,3209 **** t = FAILURE; } ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; } /* Functions without the RECURSIVE attribution are not allowed to --- 3200,3206 ---- t = FAILURE; } ! gfc_unset_implicit_pure (NULL); } /* Functions without the RECURSIVE attribution are not allowed to *************** pure_subroutine (gfc_code *c, gfc_symbol *** 3268,3275 **** gfc_error ("Subroutine call to '%s' at %L is not PURE", sym->name, &c->loc); ! if (gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; } --- 3265,3271 ---- gfc_error ("Subroutine call to '%s' at %L is not PURE", sym->name, &c->loc); ! gfc_unset_implicit_pure (NULL); } *************** resolve_assoc_var (gfc_symbol* sym, bool *** 7995,8000 **** --- 7991,8003 ---- has no corank. */ sym->as->corank = 0; } + + /* Mark this as an associate variable. */ + sym->attr.associate_var = 1; + + /* If the target is a good class object, so is the associate variable. */ + if (sym->ts.type == BT_CLASS && gfc_expr_attr (target).class_ok) + sym->attr.class_ok = 1; } *************** resolve_ordinary_assign (gfc_code *code, *** 9223,9229 **** if (lhs->expr_type == EXPR_VARIABLE && lhs->symtree->n.sym != gfc_current_ns->proc_name && lhs->symtree->n.sym->ns != gfc_current_ns) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; if (lhs->ts.type == BT_DERIVED && lhs->expr_type == EXPR_VARIABLE --- 9226,9232 ---- if (lhs->expr_type == EXPR_VARIABLE && lhs->symtree->n.sym != gfc_current_ns->proc_name && lhs->symtree->n.sym->ns != gfc_current_ns) ! gfc_unset_implicit_pure (NULL); if (lhs->ts.type == BT_DERIVED && lhs->expr_type == EXPR_VARIABLE *************** resolve_ordinary_assign (gfc_code *code, *** 9231,9241 **** && rhs->expr_type == EXPR_VARIABLE && (gfc_impure_variable (rhs->symtree->n.sym) || gfc_is_coindexed (rhs))) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; /* Fortran 2008, C1283. */ if (gfc_is_coindexed (lhs)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; } /* F03:7.4.1.2. */ --- 9234,9244 ---- && rhs->expr_type == EXPR_VARIABLE && (gfc_impure_variable (rhs->symtree->n.sym) || gfc_is_coindexed (rhs))) ! gfc_unset_implicit_pure (NULL); /* Fortran 2008, C1283. */ if (gfc_is_coindexed (lhs)) ! gfc_unset_implicit_pure (NULL); } /* F03:7.4.1.2. */ *************** build_default_init_expr (gfc_symbol *sym *** 10166,10172 **** init_expr = NULL; } if (!init_expr && gfc_option.flag_init_character == GFC_INIT_CHARACTER_ON ! && sym->ts.u.cl->length) { gfc_actual_arglist *arg; init_expr = gfc_get_expr (); --- 10169,10175 ---- init_expr = NULL; } if (!init_expr && gfc_option.flag_init_character == GFC_INIT_CHARACTER_ON ! && sym->ts.u.cl->length && gfc_option.flag_max_stack_var_size != 0) { gfc_actual_arglist *arg; init_expr = gfc_get_expr (); *************** gfc_implicit_pure (gfc_symbol *sym) *** 13287,13292 **** --- 13290,13322 ---- } + void + gfc_unset_implicit_pure (gfc_symbol *sym) + { + gfc_namespace *ns; + + if (sym == NULL) + { + /* Check if the current procedure is implicit_pure. Walk up + the procedure list until we find a procedure. */ + for (ns = gfc_current_ns; ns; ns = ns->parent) + { + sym = ns->proc_name; + if (sym == NULL) + return; + + if (sym->attr.flavor == FL_PROCEDURE) + break; + } + } + + if (sym->attr.flavor == FL_PROCEDURE) + sym->attr.implicit_pure = 0; + else + sym->attr.pure = 0; + } + + /* Test whether the current procedure is elemental or not. */ int diff -Nrcpad gcc-4.7.3/gcc/fortran/simplify.c gcc-4.7.4/gcc/fortran/simplify.c *** gcc-4.7.3/gcc/fortran/simplify.c Fri Feb 15 14:20:22 2013 --- gcc-4.7.4/gcc/fortran/simplify.c Sun Mar 9 18:44:42 2014 *************** along with GCC; see the file COPYING3. *** 32,37 **** --- 32,39 ---- gfc_expr gfc_bad_expr; + static gfc_expr *simplify_size (gfc_expr *, gfc_expr *, int); + /* Note that 'simplification' is not just transforming expressions. For functions that are not simplified at compile time, range *************** init_result_expr (gfc_expr *e, int init, *** 330,342 **** } ! /* Helper function for gfc_simplify_dot_product() and gfc_simplify_matmul. */ static gfc_expr * compute_dot_product (gfc_expr *matrix_a, int stride_a, int offset_a, ! gfc_expr *matrix_b, int stride_b, int offset_b) { ! gfc_expr *result, *a, *b; result = gfc_get_constant_expr (matrix_a->ts.type, matrix_a->ts.kind, &matrix_a->where); --- 332,346 ---- } ! /* Helper function for gfc_simplify_dot_product() and gfc_simplify_matmul; ! if conj_a is true, the matrix_a is complex conjugated. */ static gfc_expr * compute_dot_product (gfc_expr *matrix_a, int stride_a, int offset_a, ! gfc_expr *matrix_b, int stride_b, int offset_b, ! bool conj_a) { ! gfc_expr *result, *a, *b, *c; result = gfc_get_constant_expr (matrix_a->ts.type, matrix_a->ts.kind, &matrix_a->where); *************** compute_dot_product (gfc_expr *matrix_a, *** 359,367 **** case BT_INTEGER: case BT_REAL: case BT_COMPLEX: ! result = gfc_add (result, ! gfc_multiply (gfc_copy_expr (a), ! gfc_copy_expr (b))); break; default: --- 363,373 ---- case BT_INTEGER: case BT_REAL: case BT_COMPLEX: ! if (conj_a && a->ts.type == BT_COMPLEX) ! c = gfc_simplify_conjg (a); ! else ! c = gfc_copy_expr (a); ! result = gfc_add (result, gfc_multiply (c, gfc_copy_expr (b))); break; default: *************** gfc_simplify_dot_product (gfc_expr *vect *** 1875,1881 **** gcc_assert (vector_b->rank == 1); gcc_assert (gfc_compare_types (&vector_a->ts, &vector_b->ts)); ! return compute_dot_product (vector_a, 1, 0, vector_b, 1, 0); } --- 1881,1887 ---- gcc_assert (vector_b->rank == 1); gcc_assert (gfc_compare_types (&vector_a->ts, &vector_b->ts)); ! return compute_dot_product (vector_a, 1, 0, vector_b, 1, 0, true); } *************** simplify_bound_dim (gfc_expr *array, gfc *** 3240,3246 **** gfc_expr* dim = result; mpz_set_si (dim->value.integer, d); ! result = gfc_simplify_size (array, dim, kind); gfc_free_expr (dim); if (!result) goto returnNull; --- 3246,3252 ---- gfc_expr* dim = result; mpz_set_si (dim->value.integer, d); ! result = simplify_size (array, dim, k); gfc_free_expr (dim); if (!result) goto returnNull; *************** gfc_simplify_matmul (gfc_expr *matrix_a, *** 3881,3887 **** for (row = 0; row < result_rows; ++row) { gfc_expr *e = compute_dot_product (matrix_a, stride_a, offset_a, ! matrix_b, 1, offset_b); gfc_constructor_append_expr (&result->value.constructor, e, NULL); --- 3887,3893 ---- for (row = 0; row < result_rows; ++row) { gfc_expr *e = compute_dot_product (matrix_a, stride_a, offset_a, ! matrix_b, 1, offset_b, false); gfc_constructor_append_expr (&result->value.constructor, e, NULL); *************** gfc_simplify_shape (gfc_expr *source, gf *** 5493,5507 **** e = gfc_get_constant_expr (BT_INTEGER, k, &source->where); if (t == SUCCESS) ! { ! mpz_set (e->value.integer, shape[n]); ! mpz_clear (shape[n]); ! } else { mpz_set_ui (e->value.integer, n + 1); ! f = gfc_simplify_size (source, e, NULL); gfc_free_expr (e); if (f == NULL) { --- 5499,5510 ---- e = gfc_get_constant_expr (BT_INTEGER, k, &source->where); if (t == SUCCESS) ! mpz_set (e->value.integer, shape[n]); else { mpz_set_ui (e->value.integer, n + 1); ! f = simplify_size (source, e, k); gfc_free_expr (e); if (f == NULL) { *************** gfc_simplify_shape (gfc_expr *source, gf *** 5512,5534 **** e = f; } gfc_constructor_append_expr (&result->value.constructor, e, NULL); } return result; } ! gfc_expr * ! gfc_simplify_size (gfc_expr *array, gfc_expr *dim, gfc_expr *kind) { mpz_t size; gfc_expr *return_value; int d; - int k = get_kind (BT_INTEGER, kind, "SIZE", gfc_default_integer_kind); - - if (k == -1) - return &gfc_bad_expr; /* For unary operations, the size of the result is given by the size of the operand. For binary ones, it's the size of the first operand --- 5515,5544 ---- e = f; } + if (e == &gfc_bad_expr || range_check (e, "SHAPE") == &gfc_bad_expr) + { + gfc_free_expr (result); + if (t == SUCCESS) + gfc_clear_shape (shape, source->rank); + return &gfc_bad_expr; + } + gfc_constructor_append_expr (&result->value.constructor, e, NULL); } + if (t == SUCCESS) + gfc_clear_shape (shape, source->rank); + return result; } ! static gfc_expr * ! simplify_size (gfc_expr *array, gfc_expr *dim, int k) { mpz_t size; gfc_expr *return_value; int d; /* For unary operations, the size of the result is given by the size of the operand. For binary ones, it's the size of the first operand *************** gfc_simplify_size (gfc_expr *array, gfc_ *** 5558,5564 **** replacement = array->value.op.op1; else { ! simplified = gfc_simplify_size (array->value.op.op1, dim, kind); if (simplified) return simplified; --- 5568,5574 ---- replacement = array->value.op.op1; else { ! simplified = simplify_size (array->value.op.op1, dim, k); if (simplified) return simplified; *************** gfc_simplify_size (gfc_expr *array, gfc_ *** 5568,5585 **** } /* Try to reduce it directly if possible. */ ! simplified = gfc_simplify_size (replacement, dim, kind); /* Otherwise, we build a new SIZE call. This is hopefully at least simpler than the original one. */ if (!simplified) ! simplified = gfc_build_intrinsic_call (gfc_current_ns, ! GFC_ISYM_SIZE, "size", ! array->where, 3, ! gfc_copy_expr (replacement), ! gfc_copy_expr (dim), ! gfc_copy_expr (kind)); ! return simplified; } --- 5578,5597 ---- } /* Try to reduce it directly if possible. */ ! simplified = simplify_size (replacement, dim, k); /* Otherwise, we build a new SIZE call. This is hopefully at least simpler than the original one. */ if (!simplified) ! { ! gfc_expr *kind = gfc_get_int_expr (gfc_default_integer_kind, NULL, k); ! simplified = gfc_build_intrinsic_call (gfc_current_ns, ! GFC_ISYM_SIZE, "size", ! array->where, 3, ! gfc_copy_expr (replacement), ! gfc_copy_expr (dim), ! kind); ! } return simplified; } *************** gfc_simplify_size (gfc_expr *array, gfc_ *** 5598,5609 **** return NULL; } ! return_value = gfc_get_int_expr (k, &array->where, mpz_get_si (size)); mpz_clear (size); return return_value; } gfc_expr * gfc_simplify_sign (gfc_expr *x, gfc_expr *y) { --- 5610,5640 ---- return NULL; } ! return_value = gfc_get_constant_expr (BT_INTEGER, k, &array->where); ! mpz_set (return_value->value.integer, size); mpz_clear (size); + return return_value; } + gfc_expr * + gfc_simplify_size (gfc_expr *array, gfc_expr *dim, gfc_expr *kind) + { + gfc_expr *result; + int k = get_kind (BT_INTEGER, kind, "SIZE", gfc_default_integer_kind); + + if (k == -1) + return &gfc_bad_expr; + + result = simplify_size (array, dim, k); + if (result == NULL || result == &gfc_bad_expr) + return result; + + return range_check (result, "SIZE"); + } + + gfc_expr * gfc_simplify_sign (gfc_expr *x, gfc_expr *y) { diff -Nrcpad gcc-4.7.3/gcc/fortran/symbol.c gcc-4.7.4/gcc/fortran/symbol.c *** gcc-4.7.3/gcc/fortran/symbol.c Sun Feb 17 22:59:52 2013 --- gcc-4.7.4/gcc/fortran/symbol.c Thu Mar 20 19:42:15 2014 *************** gfc_add_save (symbol_attribute *attr, sa *** 1121,1128 **** return FAILURE; } ! if (s == SAVE_EXPLICIT && gfc_implicit_pure (NULL)) ! gfc_current_ns->proc_name->attr.implicit_pure = 0; if (s == SAVE_EXPLICIT && attr->save == SAVE_EXPLICIT) { --- 1121,1128 ---- return FAILURE; } ! if (s == SAVE_EXPLICIT) ! gfc_unset_implicit_pure (NULL); if (s == SAVE_EXPLICIT && attr->save == SAVE_EXPLICIT) { diff -Nrcpad gcc-4.7.3/gcc/fortran/target-memory.c gcc-4.7.4/gcc/fortran/target-memory.c *** gcc-4.7.3/gcc/fortran/target-memory.c Tue Nov 6 22:44:47 2012 --- gcc-4.7.4/gcc/fortran/target-memory.c Fri Apr 26 22:26:02 2013 *************** along with GCC; see the file COPYING3. *** 35,50 **** /* --------------------------------------------------------------- */ /* Calculate the size of an expression. */ - static size_t - size_array (gfc_expr *e) - { - mpz_t array_size; - gfc_constructor *c = gfc_constructor_first (e->value.constructor); - size_t elt_size = gfc_target_expr_size (c->expr); - - gfc_array_size (e, &array_size); - return (size_t)mpz_get_ui (array_size) * elt_size; - } static size_t size_integer (int kind) --- 35,40 ---- *************** size_character (int length, int kind) *** 82,97 **** } size_t ! gfc_target_expr_size (gfc_expr *e) { tree type; - gcc_assert (e != NULL); - - if (e->expr_type == EXPR_ARRAY) - return size_array (e); - switch (e->ts.type) { case BT_INTEGER: --- 72,85 ---- } + /* Return the size of a single element of the given expression. + Identical to gfc_target_expr_size for scalars. */ + size_t ! gfc_element_size (gfc_expr *e) { tree type; switch (e->ts.type) { case BT_INTEGER: *************** gfc_target_expr_size (gfc_expr *e) *** 130,141 **** return int_size_in_bytes (type); } default: ! gfc_internal_error ("Invalid expression in gfc_target_expr_size."); return 0; } } /* The encode_* functions export a value into a buffer, and return the number of bytes of the buffer that have been used. */ --- 118,153 ---- return int_size_in_bytes (type); } default: ! gfc_internal_error ("Invalid expression in gfc_element_size."); return 0; } } + /* Return the size of an expression in its target representation. */ + + size_t + gfc_target_expr_size (gfc_expr *e) + { + mpz_t tmp; + size_t asz; + + gcc_assert (e != NULL); + + if (e->rank) + { + if (gfc_array_size (e, &tmp)) + asz = mpz_get_ui (tmp); + else + asz = 0; + } + else + asz = 1; + + return asz * gfc_element_size (e); + } + + /* The encode_* functions export a value into a buffer, and return the number of bytes of the buffer that have been used. */ diff -Nrcpad gcc-4.7.3/gcc/fortran/target-memory.h gcc-4.7.4/gcc/fortran/target-memory.h *** gcc-4.7.3/gcc/fortran/target-memory.h Fri Aug 5 21:51:59 2011 --- gcc-4.7.4/gcc/fortran/target-memory.h Fri Apr 26 22:26:02 2013 *************** along with GCC; see the file COPYING3. *** 25,31 **** /* Convert a BOZ to REAL or COMPLEX. */ bool gfc_convert_boz (gfc_expr *, gfc_typespec *); ! /* Return the size of an expression in its target representation. */ size_t gfc_target_expr_size (gfc_expr *); /* Write a constant expression in binary form to a target buffer. */ --- 25,31 ---- /* Convert a BOZ to REAL or COMPLEX. */ bool gfc_convert_boz (gfc_expr *, gfc_typespec *); ! size_t gfc_element_size (gfc_expr *); size_t gfc_target_expr_size (gfc_expr *); /* Write a constant expression in binary form to a target buffer. */ diff -Nrcpad gcc-4.7.3/gcc/fortran/trans-array.c gcc-4.7.4/gcc/fortran/trans-array.c *** gcc-4.7.3/gcc/fortran/trans-array.c Fri Feb 22 19:48:11 2013 --- gcc-4.7.4/gcc/fortran/trans-array.c Sat May 24 15:36:14 2014 *************** trans_array_constructor (gfc_ss * ss, lo *** 2282,2290 **** } } - if (TREE_CODE (*loop_ubound0) == VAR_DECL) - dynamic = true; - gfc_trans_create_temp_array (&outer_loop->pre, &outer_loop->post, ss, type, NULL_TREE, dynamic, true, false, where); --- 2282,2287 ---- *************** gfc_add_loop_ss_code (gfc_loopinfo * loo *** 2465,2470 **** --- 2462,2472 ---- a reference to the value. */ gfc_conv_expr (&se, expr); } + + /* Ensure that a pointer to the string is stored. */ + if (expr->ts.type == BT_CHARACTER) + gfc_conv_string_parameter (&se); + gfc_add_block_to_block (&outer_loop->pre, &se.pre); gfc_add_block_to_block (&outer_loop->post, &se.post); if (gfc_is_class_scalar_expr (expr)) diff -Nrcpad gcc-4.7.3/gcc/fortran/trans-expr.c gcc-4.7.4/gcc/fortran/trans-expr.c *** gcc-4.7.3/gcc/fortran/trans-expr.c Sun Jan 13 07:51:26 2013 --- gcc-4.7.4/gcc/fortran/trans-expr.c Fri Feb 7 23:29:44 2014 *************** gfc_conv_expr_reference (gfc_se * se, gf *** 5595,5601 **** /* Returns a reference to the scalar evaluated outside the loop for this case. */ gfc_conv_expr (se, expr); ! se->expr = gfc_build_addr_expr (NULL_TREE, se->expr); return; } --- 5595,5607 ---- /* Returns a reference to the scalar evaluated outside the loop for this case. */ gfc_conv_expr (se, expr); ! ! if (expr->ts.type == BT_CHARACTER ! && expr->expr_type != EXPR_FUNCTION) ! gfc_conv_string_parameter (se); ! else ! se->expr = gfc_build_addr_expr (NULL_TREE, se->expr); ! return; } diff -Nrcpad gcc-4.7.3/gcc/fortran/trans-intrinsic.c gcc-4.7.4/gcc/fortran/trans-intrinsic.c *** gcc-4.7.3/gcc/fortran/trans-intrinsic.c Fri Mar 15 12:05:45 2013 --- gcc-4.7.4/gcc/fortran/trans-intrinsic.c Sat Mar 29 12:14:41 2014 *************** gfc_conv_intrinsic_index_scan_verify (gf *** 4664,4672 **** static void gfc_conv_intrinsic_ichar (gfc_se * se, gfc_expr * expr) { ! tree args[2], type, pchartype; ! gfc_conv_intrinsic_function_args (se, expr, args, 2); gcc_assert (POINTER_TYPE_P (TREE_TYPE (args[1]))); pchartype = gfc_get_pchar_type (expr->value.function.actual->expr->ts.kind); args[1] = fold_build1_loc (input_location, NOP_EXPR, pchartype, args[1]); --- 4664,4674 ---- static void gfc_conv_intrinsic_ichar (gfc_se * se, gfc_expr * expr) { ! tree args[3], type, pchartype; ! int nargs; ! nargs = gfc_intrinsic_argument_list_length (expr); ! gfc_conv_intrinsic_function_args (se, expr, args, nargs); gcc_assert (POINTER_TYPE_P (TREE_TYPE (args[1]))); pchartype = gfc_get_pchar_type (expr->value.function.actual->expr->ts.kind); args[1] = fold_build1_loc (input_location, NOP_EXPR, pchartype, args[1]); *************** scalar_transfer: *** 5623,5630 **** if (expr->ts.type == BT_CHARACTER) { ! tree direct; ! tree indirect; ptr = convert (gfc_get_pchar_type (expr->ts.kind), source); tmpdecl = gfc_create_var (gfc_get_pchar_type (expr->ts.kind), --- 5625,5631 ---- if (expr->ts.type == BT_CHARACTER) { ! tree direct, indirect, free; ptr = convert (gfc_get_pchar_type (expr->ts.kind), source); tmpdecl = gfc_create_var (gfc_get_pchar_type (expr->ts.kind), *************** scalar_transfer: *** 5657,5662 **** --- 5658,5670 ---- tmp = build3_v (COND_EXPR, tmp, direct, indirect); gfc_add_expr_to_block (&se->pre, tmp); + /* Free the temporary string, if necessary. */ + free = gfc_call_free (tmpdecl); + tmp = fold_build2_loc (input_location, GT_EXPR, boolean_type_node, + dest_word_len, source_bytes); + tmp = build3_v (COND_EXPR, tmp, free, build_empty_stmt (input_location)); + gfc_add_expr_to_block (&se->post, tmp); + se->expr = tmpdecl; se->string_length = fold_convert (gfc_charlen_type_node, dest_word_len); } diff -Nrcpad gcc-4.7.3/gcc/fortran/trans-io.c gcc-4.7.4/gcc/fortran/trans-io.c *** gcc-4.7.3/gcc/fortran/trans-io.c Thu Nov 3 22:21:36 2011 --- gcc-4.7.4/gcc/fortran/trans-io.c Sun Nov 17 08:11:33 2013 *************** gfc_trans_io_runtime_check (tree cond, t *** 244,259 **** /* The code to generate the error. */ gfc_start_block (&block); ! arg1 = gfc_build_addr_expr (NULL_TREE, var); ! arg2 = build_int_cst (integer_type_node, error_code), ! asprintf (&message, "%s", _(msgid)); arg3 = gfc_build_addr_expr (pchar_type_node, gfc_build_localized_cstring_const (message)); free (message); ! tmp = build_call_expr_loc (input_location, gfor_fndecl_generate_error, 3, arg1, arg2, arg3); --- 244,259 ---- /* The code to generate the error. */ gfc_start_block (&block); ! arg1 = gfc_build_addr_expr (NULL_TREE, var); ! arg2 = build_int_cst (integer_type_node, error_code), ! asprintf (&message, "%s", _(msgid)); arg3 = gfc_build_addr_expr (pchar_type_node, gfc_build_localized_cstring_const (message)); free (message); ! tmp = build_call_expr_loc (input_location, gfor_fndecl_generate_error, 3, arg1, arg2, arg3); *************** set_parameter_value (stmtblock_t *block, *** 522,528 **** gfc_trans_io_runtime_check (cond, var, LIBERROR_BAD_UNIT, "Unit number in I/O statement too small", &se.pre); ! /* UNIT numbers should be less than the max. */ val = gfc_conv_mpz_to_tree (gfc_integer_kinds[i].huge, 4); cond = fold_build2_loc (input_location, GT_EXPR, boolean_type_node, --- 522,528 ---- gfc_trans_io_runtime_check (cond, var, LIBERROR_BAD_UNIT, "Unit number in I/O statement too small", &se.pre); ! /* UNIT numbers should be less than the max. */ val = gfc_conv_mpz_to_tree (gfc_integer_kinds[i].huge, 4); cond = fold_build2_loc (input_location, GT_EXPR, boolean_type_node, *************** gfc_trans_open (gfc_code * code) *** 1002,1008 **** if (p->convert) mask |= set_string (&block, &post_block, var, IOPARM_open_convert, p->convert); ! if (p->newunit) mask |= set_parameter_ref (&block, &post_block, var, IOPARM_open_newunit, p->newunit); --- 1002,1008 ---- if (p->convert) mask |= set_string (&block, &post_block, var, IOPARM_open_convert, p->convert); ! if (p->newunit) mask |= set_parameter_ref (&block, &post_block, var, IOPARM_open_newunit, p->newunit); *************** gfc_trans_inquire (gfc_code * code) *** 1236,1242 **** { mask |= set_parameter_ref (&block, &post_block, var, IOPARM_inquire_exist, p->exist); ! if (p->unit && !p->iostat) { p->iostat = create_dummy_iostat (); --- 1236,1242 ---- { mask |= set_parameter_ref (&block, &post_block, var, IOPARM_inquire_exist, p->exist); ! if (p->unit && !p->iostat) { p->iostat = create_dummy_iostat (); *************** gfc_trans_inquire (gfc_code * code) *** 1324,1330 **** if (p->pad) mask |= set_string (&block, &post_block, var, IOPARM_inquire_pad, p->pad); ! if (p->convert) mask |= set_string (&block, &post_block, var, IOPARM_inquire_convert, p->convert); --- 1324,1330 ---- if (p->pad) mask |= set_string (&block, &post_block, var, IOPARM_inquire_pad, p->pad); ! if (p->convert) mask |= set_string (&block, &post_block, var, IOPARM_inquire_convert, p->convert); *************** transfer_namelist_element (stmtblock_t * *** 1546,1552 **** tree dtype; tree dt_parm_addr; tree decl = NULL_TREE; ! int n_dim; int itype; int rank = 0; --- 1546,1552 ---- tree dtype; tree dt_parm_addr; tree decl = NULL_TREE; ! int n_dim; int itype; int rank = 0; *************** transfer_expr (gfc_se * se, gfc_typespec *** 2029,2035 **** if (gfc_notification_std (GFC_STD_GNU) != SILENT) { gfc_error_now ("Derived type '%s' at %L has PRIVATE components", ! ts->u.derived->name, code != NULL ? &(code->loc) : &gfc_current_locus); return; } --- 2029,2035 ---- if (gfc_notification_std (GFC_STD_GNU) != SILENT) { gfc_error_now ("Derived type '%s' at %L has PRIVATE components", ! ts->u.derived->name, code != NULL ? &(code->loc) : &gfc_current_locus); return; } *************** transfer_expr (gfc_se * se, gfc_typespec *** 2038,2044 **** ts->kind = ts->u.derived->ts.kind; ts->f90_type = ts->u.derived->ts.f90_type; } ! kind = ts->kind; function = NULL; arg2 = NULL; --- 2038,2044 ---- ts->kind = ts->u.derived->ts.kind; ts->f90_type = ts->u.derived->ts.f90_type; } ! kind = ts->kind; function = NULL; arg2 = NULL; *************** transfer_expr (gfc_se * se, gfc_typespec *** 2120,2126 **** function = iocall[IOCALL_X_CHARACTER_WIDE]; else function = iocall[IOCALL_X_CHARACTER_WIDE_WRITE]; ! tmp = gfc_build_addr_expr (NULL_TREE, dt_parm); tmp = build_call_expr_loc (input_location, function, 4, tmp, addr_expr, arg2, arg3); --- 2120,2126 ---- function = iocall[IOCALL_X_CHARACTER_WIDE]; else function = iocall[IOCALL_X_CHARACTER_WIDE_WRITE]; ! tmp = gfc_build_addr_expr (NULL_TREE, dt_parm); tmp = build_call_expr_loc (input_location, function, 4, tmp, addr_expr, arg2, arg3); *************** transfer_expr (gfc_se * se, gfc_typespec *** 2152,2157 **** --- 2152,2163 ---- expr = build_fold_indirect_ref_loc (input_location, expr); + /* Make sure that the derived type has been built. An external + function, if only referenced in an io statement requires this + check (see PR58771). */ + if (ts->u.derived->backend_decl == NULL_TREE) + tmp = gfc_typenode_for_spec (ts); + for (c = ts->u.derived->components; c; c = c->next) { field = c->backend_decl; *************** gfc_trans_transfer (gfc_code * code) *** 2287,2293 **** transfer_array_desc (&se, &expr->ts, tmp); goto finish_block_label; } ! /* Initialize the scalarizer. */ gfc_init_loopinfo (&loop); gfc_add_ss_to_loop (&loop, ss); --- 2293,2299 ---- transfer_array_desc (&se, &expr->ts, tmp); goto finish_block_label; } ! /* Initialize the scalarizer. */ gfc_init_loopinfo (&loop); gfc_add_ss_to_loop (&loop, ss); diff -Nrcpad gcc-4.7.3/gcc/fortran/trans-stmt.c gcc-4.7.4/gcc/fortran/trans-stmt.c *** gcc-4.7.3/gcc/fortran/trans-stmt.c Sun Oct 14 22:16:24 2012 --- gcc-4.7.4/gcc/fortran/trans-stmt.c Thu Jun 6 16:45:04 2013 *************** gfc_trans_do_while (gfc_code * code) *** 1743,1749 **** gfc_conv_expr_val (&cond, code->expr1); gfc_add_block_to_block (&block, &cond.pre); cond.expr = fold_build1_loc (code->expr1->where.lb->location, ! TRUTH_NOT_EXPR, boolean_type_node, cond.expr); /* Build "IF (! cond) GOTO exit_label". */ tmp = build1_v (GOTO_EXPR, exit_label); --- 1743,1749 ---- gfc_conv_expr_val (&cond, code->expr1); gfc_add_block_to_block (&block, &cond.pre); cond.expr = fold_build1_loc (code->expr1->where.lb->location, ! TRUTH_NOT_EXPR, TREE_TYPE (cond.expr), cond.expr); /* Build "IF (! cond) GOTO exit_label". */ tmp = build1_v (GOTO_EXPR, exit_label); diff -Nrcpad gcc-4.7.3/gcc/gengtype-lex.c gcc-4.7.4/gcc/gengtype-lex.c *** gcc-4.7.3/gcc/gengtype-lex.c Thu Apr 11 08:00:48 2013 --- gcc-4.7.4/gcc/gengtype-lex.c Thu Jun 12 12:53:26 2014 *************** int yy_flex_debug = 0; *** 942,948 **** #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; ! #line 1 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" /* -*- indented-text -*- */ /* Process source files and output type information. Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 --- 942,948 ---- #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; ! #line 1 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" /* -*- indented-text -*- */ /* Process source files and output type information. Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 *************** You should have received a copy of the G *** 964,970 **** along with GCC; see the file COPYING3. If not see . */ #define YY_NO_INPUT 1 ! #line 25 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" #ifdef GENERATOR_FILE #include "bconfig.h" #else --- 964,970 ---- along with GCC; see the file COPYING3. If not see . */ #define YY_NO_INPUT 1 ! #line 25 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" #ifdef GENERATOR_FILE #include "bconfig.h" #else *************** YY_DECL *** 1178,1184 **** register char *yy_cp, *yy_bp; register int yy_act; ! #line 63 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" /* Do this on entry to yylex(): */ *yylval = 0; --- 1178,1184 ---- register char *yy_cp, *yy_bp; register int yy_act; ! #line 63 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" /* Do this on entry to yylex(): */ *yylval = 0; *************** case 1: *** 1275,1281 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 74 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { BEGIN(in_struct); return TYPEDEF; --- 1275,1281 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 74 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { BEGIN(in_struct); return TYPEDEF; *************** case 2: *** 1287,1293 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 78 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { BEGIN(in_struct); return STRUCT; --- 1287,1293 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 78 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { BEGIN(in_struct); return STRUCT; *************** case 3: *** 1299,1305 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 82 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { BEGIN(in_struct); return UNION; --- 1299,1305 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 82 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { BEGIN(in_struct); return UNION; *************** case 4: *** 1311,1317 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 86 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { BEGIN(in_struct); return EXTERN; --- 1311,1317 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 86 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { BEGIN(in_struct); return EXTERN; *************** case 5: *** 1323,1329 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 90 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { BEGIN(in_struct); return STATIC; --- 1323,1329 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 90 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { BEGIN(in_struct); return STATIC; *************** case 6: *** 1335,1341 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 95 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { BEGIN(in_struct); return DEFVEC_OP; --- 1335,1341 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 95 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { BEGIN(in_struct); return DEFVEC_OP; *************** case 7: *** 1347,1353 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 99 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { BEGIN(in_struct); return DEFVEC_I; --- 1347,1353 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 99 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { BEGIN(in_struct); return DEFVEC_I; *************** case 8: *** 1359,1365 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 103 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { BEGIN(in_struct); return DEFVEC_ALLOC; --- 1359,1365 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 103 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { BEGIN(in_struct); return DEFVEC_ALLOC; *************** YY_RULE_SETUP *** 1369,1387 **** case 9: YY_RULE_SETUP ! #line 111 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { BEGIN(in_struct_comment); } YY_BREAK case 10: /* rule 10 can match eol */ YY_RULE_SETUP ! #line 113 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { update_lineno (yytext, yyleng); } YY_BREAK case 11: /* rule 11 can match eol */ YY_RULE_SETUP ! #line 114 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 12: --- 1369,1387 ---- case 9: YY_RULE_SETUP ! #line 111 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { BEGIN(in_struct_comment); } YY_BREAK case 10: /* rule 10 can match eol */ YY_RULE_SETUP ! #line 113 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { update_lineno (yytext, yyleng); } YY_BREAK case 11: /* rule 11 can match eol */ YY_RULE_SETUP ! #line 114 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 12: *************** case 12: *** 1390,1396 **** (yy_c_buf_p) = yy_cp = yy_bp + 5; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 116 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" /* don't care */ YY_BREAK case 13: --- 1390,1396 ---- (yy_c_buf_p) = yy_cp = yy_bp + 5; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 116 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" /* don't care */ YY_BREAK case 13: *************** case 13: *** 1399,1405 **** (yy_c_buf_p) = yy_cp = yy_bp + 3; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 117 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { return GTY_TOKEN; } YY_BREAK case 14: --- 1399,1405 ---- (yy_c_buf_p) = yy_cp = yy_bp + 3; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 117 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { return GTY_TOKEN; } YY_BREAK case 14: *************** case 14: *** 1408,1414 **** (yy_c_buf_p) = yy_cp = yy_bp + 3; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 118 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { return VEC_TOKEN; } YY_BREAK case 15: --- 1408,1414 ---- (yy_c_buf_p) = yy_cp = yy_bp + 3; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 118 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { return VEC_TOKEN; } YY_BREAK case 15: *************** case 15: *** 1417,1423 **** (yy_c_buf_p) = yy_cp = yy_bp + 5; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 119 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { return UNION; } YY_BREAK case 16: --- 1417,1423 ---- (yy_c_buf_p) = yy_cp = yy_bp + 5; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 119 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { return UNION; } YY_BREAK case 16: *************** case 16: *** 1426,1432 **** (yy_c_buf_p) = yy_cp = yy_bp + 6; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 120 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { return STRUCT; } YY_BREAK case 17: --- 1426,1432 ---- (yy_c_buf_p) = yy_cp = yy_bp + 6; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 120 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { return STRUCT; } YY_BREAK case 17: *************** case 17: *** 1435,1441 **** (yy_c_buf_p) = yy_cp = yy_bp + 4; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 121 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { return ENUM; } YY_BREAK case 18: --- 1435,1441 ---- (yy_c_buf_p) = yy_cp = yy_bp + 4; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 121 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { return ENUM; } YY_BREAK case 18: *************** case 18: *** 1444,1450 **** (yy_c_buf_p) = yy_cp = yy_bp + 9; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 122 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { return PTR_ALIAS; } YY_BREAK case 19: --- 1444,1450 ---- (yy_c_buf_p) = yy_cp = yy_bp + 9; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 122 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { return PTR_ALIAS; } YY_BREAK case 19: *************** case 19: *** 1453,1464 **** (yy_c_buf_p) = yy_cp = yy_bp + 10; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 123 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { return NESTED_PTR; } YY_BREAK case 20: YY_RULE_SETUP ! #line 124 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { return NUM; } YY_BREAK case 21: --- 1453,1464 ---- (yy_c_buf_p) = yy_cp = yy_bp + 10; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 123 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { return NESTED_PTR; } YY_BREAK case 20: YY_RULE_SETUP ! #line 124 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { return NUM; } YY_BREAK case 21: *************** case 21: *** 1467,1473 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 125 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1); return PARAM_IS; --- 1467,1473 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 125 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1); return PARAM_IS; *************** case 22: *** 1478,1488 **** *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ ! #line 131 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" case 23: /* rule 23 can match eol */ YY_RULE_SETUP ! #line 131 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { size_t len; --- 1478,1488 ---- *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ ! #line 131 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" case 23: /* rule 23 can match eol */ YY_RULE_SETUP ! #line 131 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { size_t len; *************** case 24: *** 1500,1506 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 143 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1); return ID; --- 1500,1506 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 143 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1); return ID; *************** YY_RULE_SETUP *** 1509,1515 **** case 25: /* rule 25 can match eol */ YY_RULE_SETUP ! #line 148 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1); return STRING; --- 1509,1515 ---- case 25: /* rule 25 can match eol */ YY_RULE_SETUP ! #line 148 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1); return STRING; *************** YY_RULE_SETUP *** 1519,1525 **** case 26: /* rule 26 can match eol */ YY_RULE_SETUP ! #line 153 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1); return ARRAY; --- 1519,1525 ---- case 26: /* rule 26 can match eol */ YY_RULE_SETUP ! #line 153 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1); return ARRAY; *************** YY_RULE_SETUP *** 1528,1534 **** case 27: /* rule 27 can match eol */ YY_RULE_SETUP ! #line 157 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng); return CHAR; --- 1528,1534 ---- case 27: /* rule 27 can match eol */ YY_RULE_SETUP ! #line 157 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng); return CHAR; *************** YY_RULE_SETUP *** 1536,1559 **** YY_BREAK case 28: YY_RULE_SETUP ! #line 162 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { return ELLIPSIS; } YY_BREAK case 29: YY_RULE_SETUP ! #line 163 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { return yytext[0]; } YY_BREAK /* ignore pp-directives */ case 30: /* rule 30 can match eol */ YY_RULE_SETUP ! #line 166 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" {lexer_line.line++;} YY_BREAK case 31: YY_RULE_SETUP ! #line 168 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { error_at_line (&lexer_line, "unexpected character `%s'", yytext); } --- 1536,1559 ---- YY_BREAK case 28: YY_RULE_SETUP ! #line 162 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { return ELLIPSIS; } YY_BREAK case 29: YY_RULE_SETUP ! #line 163 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { return yytext[0]; } YY_BREAK /* ignore pp-directives */ case 30: /* rule 30 can match eol */ YY_RULE_SETUP ! #line 166 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" {lexer_line.line++;} YY_BREAK case 31: YY_RULE_SETUP ! #line 168 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { error_at_line (&lexer_line, "unexpected character `%s'", yytext); } *************** YY_RULE_SETUP *** 1561,1590 **** case 32: YY_RULE_SETUP ! #line 173 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { BEGIN(in_comment); } YY_BREAK case 33: /* rule 33 can match eol */ YY_RULE_SETUP ! #line 174 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 34: ! #line 176 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" case 35: /* rule 35 can match eol */ ! #line 177 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" case 36: /* rule 36 can match eol */ YY_RULE_SETUP ! #line 177 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 37: /* rule 37 can match eol */ YY_RULE_SETUP ! #line 178 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { update_lineno (yytext, yyleng); } YY_BREAK case 38: --- 1561,1590 ---- case 32: YY_RULE_SETUP ! #line 173 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { BEGIN(in_comment); } YY_BREAK case 33: /* rule 33 can match eol */ YY_RULE_SETUP ! #line 174 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 34: ! #line 176 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" case 35: /* rule 35 can match eol */ ! #line 177 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" case 36: /* rule 36 can match eol */ YY_RULE_SETUP ! #line 177 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 37: /* rule 37 can match eol */ YY_RULE_SETUP ! #line 178 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { update_lineno (yytext, yyleng); } YY_BREAK case 38: *************** case 38: *** 1593,1613 **** (yy_c_buf_p) = yy_cp = yy_bp + 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 179 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 39: /* rule 39 can match eol */ YY_RULE_SETUP ! #line 182 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 40: ! #line 184 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" case 41: YY_RULE_SETUP ! #line 184 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 42: --- 1593,1613 ---- (yy_c_buf_p) = yy_cp = yy_bp + 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 179 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 39: /* rule 39 can match eol */ YY_RULE_SETUP ! #line 182 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 40: ! #line 184 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" case 41: YY_RULE_SETUP ! #line 184 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 42: *************** case 42: *** 1616,1640 **** (yy_c_buf_p) = yy_cp = yy_bp + 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 185 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 43: YY_RULE_SETUP ! #line 187 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { BEGIN(INITIAL); } YY_BREAK case 44: YY_RULE_SETUP ! #line 188 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { BEGIN(in_struct); } YY_BREAK case 45: ! #line 191 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" case 46: YY_RULE_SETUP ! #line 191 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" { error_at_line (&lexer_line, "unterminated comment or string; unexpected EOF"); --- 1616,1640 ---- (yy_c_buf_p) = yy_cp = yy_bp + 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 185 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 43: YY_RULE_SETUP ! #line 187 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { BEGIN(INITIAL); } YY_BREAK case 44: YY_RULE_SETUP ! #line 188 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { BEGIN(in_struct); } YY_BREAK case 45: ! #line 191 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" case 46: YY_RULE_SETUP ! #line 191 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" { error_at_line (&lexer_line, "unterminated comment or string; unexpected EOF"); *************** YY_RULE_SETUP *** 1643,1654 **** case 47: /* rule 47 can match eol */ YY_RULE_SETUP ! #line 196 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 48: YY_RULE_SETUP ! #line 198 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK #line 1654 "gengtype-lex.c" --- 1643,1654 ---- case 47: /* rule 47 can match eol */ YY_RULE_SETUP ! #line 196 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 48: YY_RULE_SETUP ! #line 198 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK #line 1654 "gengtype-lex.c" *************** void yyfree (void * ptr ) *** 2615,2621 **** #define YYTABLES_NAME "yytables" ! #line 198 "/space/rguenther/gcc-4.7.3/gcc-4.7.3/gcc/gengtype-lex.l" --- 2615,2621 ---- #define YYTABLES_NAME "yytables" ! #line 198 "/space/rguenther/gcc-4.7.4/gcc-4.7.4/gcc/gengtype-lex.l" diff -Nrcpad gcc-4.7.3/gcc/gimple-low.c gcc-4.7.4/gcc/gimple-low.c *** gcc-4.7.3/gcc/gimple-low.c Fri Mar 1 12:46:12 2013 --- gcc-4.7.4/gcc/gimple-low.c Thu Jan 16 14:59:46 2014 *************** gimple_check_call_args (gimple stmt, tre *** 249,254 **** --- 249,255 ---- break; arg = gimple_call_arg (stmt, i); if (p == error_mark_node + || DECL_ARG_TYPE (p) == error_mark_node || arg == error_mark_node || (!types_compatible_p (DECL_ARG_TYPE (p), TREE_TYPE (arg)) && !fold_convertible_p (DECL_ARG_TYPE (p), arg))) diff -Nrcpad gcc-4.7.3/gcc/gimple.h gcc-4.7.4/gcc/gimple.h *** gcc-4.7.3/gcc/gimple.h Mon Feb 4 12:04:35 2013 --- gcc-4.7.4/gcc/gimple.h Tue Apr 1 08:52:32 2014 *************** struct GTY(()) gimple_statement_base { *** 305,310 **** --- 305,313 ---- /* Nonzero if this statement contains volatile operands. */ unsigned has_volatile_ops : 1; + /* Padding to get subcode to 16 bit alignment. */ + unsigned pad : 1; + /* The SUBCODE field can be used for tuple-specific flags for tuples that do not require subcodes. Note that SUBCODE should be at least as wide as tree codes, as several tuples store tree codes diff -Nrcpad gcc-4.7.3/gcc/gimplify.c gcc-4.7.4/gcc/gimplify.c *** gcc-4.7.3/gcc/gimplify.c Mon Nov 5 15:09:28 2012 --- gcc-4.7.4/gcc/gimplify.c Wed May 7 16:10:35 2014 *************** gimplify_conversion (tree *expr_p) *** 1922,1927 **** --- 1922,1930 ---- /* Nonlocal VLAs seen in the current function. */ static struct pointer_set_t *nonlocal_vlas; + /* The VAR_DECLs created for nonlocal VLAs for debug info purposes. */ + static tree nonlocal_vla_vars; + /* Gimplify a VAR_DECL or PARM_DECL. Return GS_OK if we expanded a DECL_VALUE_EXPR, and it's worth re-examining things. */ *************** gimplify_var_or_parm_decl (tree *expr_p) *** 1968,1981 **** ctx = ctx->outer_context; if (!ctx && !pointer_set_insert (nonlocal_vlas, decl)) { ! tree copy = copy_node (decl), block; lang_hooks.dup_lang_specific_decl (copy); SET_DECL_RTL (copy, 0); TREE_USED (copy) = 1; ! block = DECL_INITIAL (current_function_decl); ! DECL_CHAIN (copy) = BLOCK_VARS (block); ! BLOCK_VARS (block) = copy; SET_DECL_VALUE_EXPR (copy, unshare_expr (value_expr)); DECL_HAS_VALUE_EXPR_P (copy) = 1; } --- 1971,1983 ---- ctx = ctx->outer_context; if (!ctx && !pointer_set_insert (nonlocal_vlas, decl)) { ! tree copy = copy_node (decl); lang_hooks.dup_lang_specific_decl (copy); SET_DECL_RTL (copy, 0); TREE_USED (copy) = 1; ! DECL_CHAIN (copy) = nonlocal_vla_vars; ! nonlocal_vla_vars = copy; SET_DECL_VALUE_EXPR (copy, unshare_expr (value_expr)); DECL_HAS_VALUE_EXPR_P (copy) = 1; } *************** gimplify_body (tree fndecl, bool do_parm *** 8057,8062 **** --- 8059,8079 ---- if (nonlocal_vlas) { + if (nonlocal_vla_vars) + { + /* tree-nested.c may later on call declare_vars (..., true); + which relies on BLOCK_VARS chain to be the tail of the + gimple_bind_vars chain. Ensure we don't violate that + assumption. */ + if (gimple_bind_block (outer_bind) + == DECL_INITIAL (current_function_decl)) + declare_vars (nonlocal_vla_vars, outer_bind, true); + else + BLOCK_VARS (DECL_INITIAL (current_function_decl)) + = chainon (BLOCK_VARS (DECL_INITIAL (current_function_decl)), + nonlocal_vla_vars); + nonlocal_vla_vars = NULL_TREE; + } pointer_set_destroy (nonlocal_vlas); nonlocal_vlas = NULL; } diff -Nrcpad gcc-4.7.3/gcc/go/ChangeLog gcc-4.7.4/gcc/go/ChangeLog *** gcc-4.7.3/gcc/go/ChangeLog Thu Apr 11 07:57:11 2013 --- gcc-4.7.4/gcc/go/ChangeLog Thu Jun 12 12:08:16 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/gcc/ipa-cp.c gcc-4.7.4/gcc/ipa-cp.c *** gcc-4.7.3/gcc/ipa-cp.c Tue May 1 06:23:13 2012 --- gcc-4.7.4/gcc/ipa-cp.c Mon Apr 7 09:54:55 2014 *************** propagate_constants_accross_call (struct *** 1063,1083 **** args_count = ipa_get_cs_argument_count (args); parms_count = ipa_get_param_count (callee_info); ! /* If this call goes through a thunk we must not propagate to the first (0th) ! parameter. However, we might need to uncover a thunk from below a series ! of aliases first. */ alias_or_thunk = cs->callee; while (alias_or_thunk->alias) alias_or_thunk = cgraph_alias_aliased_node (alias_or_thunk); if (alias_or_thunk->thunk.thunk_p) { ! ret |= set_lattice_contains_variable (ipa_get_lattice (callee_info, 0)); ! i = 1; } - else - i = 0; ! for (; (i < args_count) && (i < parms_count); i++) { struct ipa_jump_func *jump_func = ipa_get_ith_jump_func (args, i); struct ipcp_lattice *dest_lat = ipa_get_lattice (callee_info, i); --- 1063,1083 ---- args_count = ipa_get_cs_argument_count (args); parms_count = ipa_get_param_count (callee_info); ! /* If this call goes through a thunk we should not propagate because we ! cannot redirect edges to thunks. However, we might need to uncover a ! thunk from below a series of aliases first. */ alias_or_thunk = cs->callee; while (alias_or_thunk->alias) alias_or_thunk = cgraph_alias_aliased_node (alias_or_thunk); if (alias_or_thunk->thunk.thunk_p) { ! for (i = 0; i < parms_count; i++) ! ret |= set_lattice_contains_variable (ipa_get_lattice (callee_info, i)); ! ! return ret; } ! for (i = 0; (i < args_count) && (i < parms_count); i++) { struct ipa_jump_func *jump_func = ipa_get_ith_jump_func (args, i); struct ipcp_lattice *dest_lat = ipa_get_lattice (callee_info, i); diff -Nrcpad gcc-4.7.3/gcc/ipa-prop.c gcc-4.7.4/gcc/ipa-prop.c *** gcc-4.7.3/gcc/ipa-prop.c Mon Jul 2 15:43:56 2012 --- gcc-4.7.4/gcc/ipa-prop.c Tue Feb 18 11:15:04 2014 *************** compute_complex_ancestor_jump_func (stru *** 812,818 **** return; parm = TREE_OPERAND (expr, 0); index = ipa_get_param_decl_index (info, SSA_NAME_VAR (parm)); ! gcc_assert (index >= 0); cond_bb = single_pred (assign_bb); cond = last_stmt (cond_bb); --- 812,819 ---- return; parm = TREE_OPERAND (expr, 0); index = ipa_get_param_decl_index (info, SSA_NAME_VAR (parm)); ! if (index < 0) ! return; cond_bb = single_pred (assign_bb); cond = last_stmt (cond_bb); diff -Nrcpad gcc-4.7.3/gcc/ira.c gcc-4.7.4/gcc/ira.c *** gcc-4.7.3/gcc/ira.c Tue Feb 21 23:27:59 2012 --- gcc-4.7.4/gcc/ira.c Thu Jan 16 16:33:30 2014 *************** do_reload (void) *** 3788,3793 **** --- 3788,3805 ---- if (need_dce && optimize) run_fast_dce (); + /* Diagnose uses of the hard frame pointer when it is used as a global + register. Often we can get away with letting the user appropriate + the frame pointer, but we should let them know when code generation + makes that impossible. */ + if (global_regs[HARD_FRAME_POINTER_REGNUM] && frame_pointer_needed) + { + tree decl = global_regs_decl[HARD_FRAME_POINTER_REGNUM]; + error_at (DECL_SOURCE_LOCATION (current_function_decl), + "frame pointer required, but reserved"); + inform (DECL_SOURCE_LOCATION (decl), "for %qD", decl); + } + timevar_pop (TV_IRA); } diff -Nrcpad gcc-4.7.3/gcc/java/ChangeLog gcc-4.7.4/gcc/java/ChangeLog *** gcc-4.7.3/gcc/java/ChangeLog Thu Apr 11 07:56:40 2013 --- gcc-4.7.4/gcc/java/ChangeLog Thu Jun 12 12:07:40 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/gcc/lto/ChangeLog gcc-4.7.4/gcc/lto/ChangeLog *** gcc-4.7.3/gcc/lto/ChangeLog Thu Apr 11 07:57:02 2013 --- gcc-4.7.4/gcc/lto/ChangeLog Thu Jun 12 12:08:06 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/gcc/objc/ChangeLog gcc-4.7.4/gcc/objc/ChangeLog *** gcc-4.7.3/gcc/objc/ChangeLog Thu Apr 11 07:57:16 2013 --- gcc-4.7.4/gcc/objc/ChangeLog Thu Jun 12 12:08:21 2014 *************** *** 1,3 **** --- 1,29 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + + 2014-04-07 Dominique d'Humieres + + Backport from mainline + 2013-09-14 Iain Sandoe + + PR target/48094 + * objc-next-runtime-abi-01.c (generate_objc_image_info): Remove. + (objc_generate_v1_next_metadata): Remove generation of ImageInfo. + * objc-next-runtime-abi-02.c (generate_v2_objc_image_info): Remove. + (objc_generate_v2_next_metadata): Remove generation of ImageInfo. + + 2013-09-01 Iain Sandoe + + Backported from 4.8 + 2012-06-19 Steven Bosscher + + * objc-next-runtime-abi-01.c: Do not include tm.h and output.h. + Include c-family/c-target.h. + (handle_next_class_ref): Rewrite to emit top-level asm statements. + (handle_next_impent): Likewise. + * objc/Make-lang.in: Fix dependencies for objc-next-runtime-abi-01.o. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/gcc/objc/Make-lang.in gcc-4.7.4/gcc/objc/Make-lang.in *** gcc-4.7.3/gcc/objc/Make-lang.in Fri Oct 14 10:19:01 2011 --- gcc-4.7.4/gcc/objc/Make-lang.in Sun Sep 1 19:21:33 2013 *************** objc/objc-next-runtime-abi-01.o: objc/ob *** 106,112 **** gt-objc-objc-next-runtime-abi-01.h \ $(START_HDRS) \ $(GGC_H) $(DIAGNOSTIC_CORE_H) $(FLAGS_H) input.h \ ! $(TARGET_H) output.h \ objc/objc-encoding.h \ objc/objc-next-metadata-tags.h \ objc/objc-runtime-hooks.h \ --- 106,112 ---- gt-objc-objc-next-runtime-abi-01.h \ $(START_HDRS) \ $(GGC_H) $(DIAGNOSTIC_CORE_H) $(FLAGS_H) input.h \ ! $(TARGET_H) \ objc/objc-encoding.h \ objc/objc-next-metadata-tags.h \ objc/objc-runtime-hooks.h \ diff -Nrcpad gcc-4.7.3/gcc/objc/objc-next-runtime-abi-01.c gcc-4.7.4/gcc/objc/objc-next-runtime-abi-01.c *** gcc-4.7.3/gcc/objc/objc-next-runtime-abi-01.c Sat Nov 12 13:54:33 2011 --- gcc-4.7.4/gcc/objc/objc-next-runtime-abi-01.c Mon Apr 7 08:00:55 2014 *************** along with GCC; see the file COPYING3. *** 26,32 **** #include "config.h" #include "system.h" #include "coretypes.h" - #include "tm.h" #include "tree.h" #ifdef OBJCPLUS --- 26,31 ---- *************** along with GCC; see the file COPYING3. *** 49,55 **** #include "ggc.h" #include "target.h" ! #include "output.h" #include "tree-iterator.h" #include "objc-runtime-hooks.h" --- 48,54 ---- #include "ggc.h" #include "target.h" ! #include "c-family/c-target.h" #include "tree-iterator.h" #include "objc-runtime-hooks.h" *************** generate_objc_symtab_decl (void) *** 2268,2314 **** init_objc_symtab (TREE_TYPE (UOBJC_SYMBOLS_decl))); } static void ! handle_next_class_ref (tree chain) { ! const char *name = IDENTIFIER_POINTER (TREE_VALUE (chain)); ! char *string = (char *) alloca (strlen (name) + 30); ! ! sprintf (string, ".objc_class_name_%s", name); ! ! #ifdef ASM_DECLARE_UNRESOLVED_REFERENCE ! ASM_DECLARE_UNRESOLVED_REFERENCE (asm_out_file, string); ! #else ! return ; /* NULL build for targets other than Darwin. */ ! #endif } static void ! handle_next_impent (struct imp_entry *impent) { ! char buf[BUFSIZE]; ! ! switch (TREE_CODE (impent->imp_context)) { ! case CLASS_IMPLEMENTATION_TYPE: ! snprintf (buf, BUFSIZE, ".objc_class_name_%s", ! IDENTIFIER_POINTER (CLASS_NAME (impent->imp_context))); ! break; ! case CATEGORY_IMPLEMENTATION_TYPE: ! snprintf (buf, BUFSIZE, "*.objc_category_name_%s_%s", ! IDENTIFIER_POINTER (CLASS_NAME (impent->imp_context)), ! IDENTIFIER_POINTER (CLASS_SUPER_NAME (impent->imp_context))); ! break; ! default: ! return; ! } ! #ifdef ASM_DECLARE_CLASS_REFERENCE ! ASM_DECLARE_CLASS_REFERENCE (asm_out_file, buf); ! #else ! return ; /* NULL build for targets other than Darwin. */ ! #endif } static void --- 2267,2316 ---- init_objc_symtab (TREE_TYPE (UOBJC_SYMBOLS_decl))); } + /* Any target implementing NeXT ObjC m32 ABI has to ensure that objects + refer to, and define, symbols that enforce linkage of classes into the + executable image, preserving unix archive semantics. + + At present (4.8), the only targets implementing this are Darwin; these + use top level asms to implement a scheme (see config/darwin-c.c). The + latter method is a hack, but compatible with LTO see also PR48109 for + further discussion and other possible methods. */ static void ! handle_next_class_ref (tree chain ATTRIBUTE_UNUSED) { ! if (targetcm.objc_declare_unresolved_class_reference) ! { ! const char *name = IDENTIFIER_POINTER (TREE_VALUE (chain)); ! char *string = (char *) alloca (strlen (name) + 30); ! sprintf (string, ".objc_class_name_%s", name); ! targetcm.objc_declare_unresolved_class_reference (string); ! } } static void ! handle_next_impent (struct imp_entry *impent ATTRIBUTE_UNUSED) { ! if (targetcm.objc_declare_class_definition) { ! char buf[BUFSIZE]; ! switch (TREE_CODE (impent->imp_context)) ! { ! case CLASS_IMPLEMENTATION_TYPE: ! snprintf (buf, BUFSIZE, ".objc_class_name_%s", ! IDENTIFIER_POINTER (CLASS_NAME (impent->imp_context))); ! break; ! case CATEGORY_IMPLEMENTATION_TYPE: ! snprintf (buf, BUFSIZE, "*.objc_category_name_%s_%s", ! IDENTIFIER_POINTER (CLASS_NAME (impent->imp_context)), ! IDENTIFIER_POINTER (CLASS_SUPER_NAME (impent->imp_context))); ! break; ! default: ! return; ! } ! targetcm.objc_declare_class_definition (buf); ! } } static void *************** generate_classref_translation_entry (tre *** 2331,2365 **** } - /* The Fix-and-Continue functionality available in Mac OS X 10.3 and - later requires that ObjC translation units participating in F&C be - specially marked. The following routine accomplishes this. */ - - /* static int _OBJC_IMAGE_INFO[2] = { 0, 1 }; */ - - static void - generate_objc_image_info (void) - { - tree decl; - int flags - = ((flag_replace_objc_classes && imp_count ? 1 : 0) - | (flag_objc_gc ? 2 : 0)); - VEC(constructor_elt,gc) *v = NULL; - tree array_type; - - array_type = build_sized_array_type (integer_type_node, 2); - - decl = start_var_decl (array_type, "_OBJC_ImageInfo"); - - CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, integer_zero_node); - CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (integer_type_node, flags)); - /* The runtime wants this and refers to it in a manner hidden from the compiler. - So we must force the output. */ - DECL_PRESERVE_P (decl) = 1; - OBJCMETA (decl, objc_meta, meta_info); - finish_var_decl (decl, objc_build_constructor (TREE_TYPE (decl), v)); - } - static void objc_generate_v1_next_metadata (void) { --- 2333,2338 ---- *************** objc_generate_v1_next_metadata (void) *** 2410,2422 **** attr = build_tree_list (objc_meta, meta_modules); build_module_descriptor (vers, attr); - /* This conveys information on GC usage and zero-link. */ - generate_objc_image_info (); - /* Dump the class references. This forces the appropriate classes to be linked into the executable image, preserving unix archive ! semantics. This can be removed when we move to a more dynamically ! linked environment. */ for (chain = cls_ref_chain; chain; chain = TREE_CHAIN (chain)) { --- 2383,2391 ---- attr = build_tree_list (objc_meta, meta_modules); build_module_descriptor (vers, attr); /* Dump the class references. This forces the appropriate classes to be linked into the executable image, preserving unix archive ! semantics. */ for (chain = cls_ref_chain; chain; chain = TREE_CHAIN (chain)) { diff -Nrcpad gcc-4.7.3/gcc/objc/objc-next-runtime-abi-02.c gcc-4.7.4/gcc/objc/objc-next-runtime-abi-02.c *** gcc-4.7.3/gcc/objc/objc-next-runtime-abi-02.c Fri Oct 14 10:19:01 2011 --- gcc-4.7.4/gcc/objc/objc-next-runtime-abi-02.c Mon Apr 7 08:00:55 2014 *************** build_v2_ivar_offset_ref_table (void) *** 3341,3371 **** finish_var_decl (ref->decl, ref->offset); } - /* static int _OBJC_IMAGE_INFO[2] = { 0, 16 | flags }; */ - - static void - generate_v2_objc_image_info (void) - { - tree decl, array_type; - VEC(constructor_elt,gc) *v = NULL; - int flags = - ((flag_replace_objc_classes && imp_count ? 1 : 0) - | (flag_objc_gc ? 2 : 0)); - - flags |= 16; - - array_type = build_sized_array_type (integer_type_node, 2); - - decl = start_var_decl (array_type, "_OBJC_ImageInfo"); - - CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, integer_zero_node); - CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (integer_type_node, flags)); - /* The Runtime wants this. */ - DECL_PRESERVE_P (decl) = 1; - OBJCMETA (decl, objc_meta, meta_info); - finish_var_decl (decl, objc_build_constructor (TREE_TYPE (decl), v)); - } - static void objc_generate_v2_next_metadata (void) { --- 3341,3346 ---- *************** objc_generate_v2_next_metadata (void) *** 3417,3425 **** build_v2_address_table (nonlazy_category_list, "_OBJC_NonLazyCategoryList$", meta_label_nonlazy_categorylist); - /* This conveys information on GC usage and zero-link. */ - generate_v2_objc_image_info (); - /* Generate catch objects for eh, if any are needed. */ build_v2_eh_catch_objects (); --- 3392,3397 ---- diff -Nrcpad gcc-4.7.3/gcc/objcp/ChangeLog gcc-4.7.4/gcc/objcp/ChangeLog *** gcc-4.7.3/gcc/objcp/ChangeLog Thu Apr 11 07:57:24 2013 --- gcc-4.7.4/gcc/objcp/ChangeLog Thu Jun 12 12:08:31 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/gcc/optabs.c gcc-4.7.4/gcc/optabs.c *** gcc-4.7.3/gcc/optabs.c Fri Dec 14 16:26:17 2012 --- gcc-4.7.4/gcc/optabs.c Fri Oct 25 20:09:13 2013 *************** maybe_emit_atomic_exchange (rtx target, *** 7212,7219 **** create_output_operand (&ops[0], target, mode); create_fixed_operand (&ops[1], mem); ! /* VAL may have been promoted to a wider mode. Shrink it if so. */ ! create_convert_operand_to (&ops[2], val, mode, true); create_integer_operand (&ops[3], model); if (maybe_expand_insn (icode, 4, ops)) return ops[0].value; --- 7212,7218 ---- create_output_operand (&ops[0], target, mode); create_fixed_operand (&ops[1], mem); ! create_input_operand (&ops[2], val, mode); create_integer_operand (&ops[3], model); if (maybe_expand_insn (icode, 4, ops)) return ops[0].value; *************** maybe_emit_sync_lock_test_and_set (rtx t *** 7252,7259 **** struct expand_operand ops[3]; create_output_operand (&ops[0], target, mode); create_fixed_operand (&ops[1], mem); ! /* VAL may have been promoted to a wider mode. Shrink it if so. */ ! create_convert_operand_to (&ops[2], val, mode, true); if (maybe_expand_insn (icode, 3, ops)) return ops[0].value; } --- 7251,7257 ---- struct expand_operand ops[3]; create_output_operand (&ops[0], target, mode); create_fixed_operand (&ops[1], mem); ! create_input_operand (&ops[2], val, mode); if (maybe_expand_insn (icode, 3, ops)) return ops[0].value; } *************** maybe_emit_compare_and_swap_exchange_loo *** 7295,7302 **** { if (!target || !register_operand (target, mode)) target = gen_reg_rtx (mode); - if (GET_MODE (val) != VOIDmode && GET_MODE (val) != mode) - val = convert_modes (mode, GET_MODE (val), val, 1); if (expand_compare_and_swap_loop (mem, target, val, NULL_RTX)) return target; } --- 7293,7298 ---- *************** expand_atomic_compare_and_swap (rtx *pta *** 7508,7515 **** create_output_operand (&ops[0], target_bool, bool_mode); create_output_operand (&ops[1], target_oval, mode); create_fixed_operand (&ops[2], mem); ! create_convert_operand_to (&ops[3], expected, mode, true); ! create_convert_operand_to (&ops[4], desired, mode, true); create_integer_operand (&ops[5], is_weak); create_integer_operand (&ops[6], succ_model); create_integer_operand (&ops[7], fail_model); --- 7504,7511 ---- create_output_operand (&ops[0], target_bool, bool_mode); create_output_operand (&ops[1], target_oval, mode); create_fixed_operand (&ops[2], mem); ! create_input_operand (&ops[3], expected, mode); ! create_input_operand (&ops[4], desired, mode); create_integer_operand (&ops[5], is_weak); create_integer_operand (&ops[6], succ_model); create_integer_operand (&ops[7], fail_model); *************** expand_atomic_compare_and_swap (rtx *pta *** 7530,7537 **** create_output_operand (&ops[0], target_oval, mode); create_fixed_operand (&ops[1], mem); ! create_convert_operand_to (&ops[2], expected, mode, true); ! create_convert_operand_to (&ops[3], desired, mode, true); if (!maybe_expand_insn (icode, 4, ops)) return false; --- 7526,7533 ---- create_output_operand (&ops[0], target_oval, mode); create_fixed_operand (&ops[1], mem); ! create_input_operand (&ops[2], expected, mode); ! create_input_operand (&ops[3], desired, mode); if (!maybe_expand_insn (icode, 4, ops)) return false; diff -Nrcpad gcc-4.7.3/gcc/po/ChangeLog gcc-4.7.4/gcc/po/ChangeLog *** gcc-4.7.3/gcc/po/ChangeLog Thu Apr 11 07:56:45 2013 --- gcc-4.7.4/gcc/po/ChangeLog Thu Jun 12 12:07:45 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/gcc/predict.c gcc-4.7.4/gcc/predict.c *** gcc-4.7.3/gcc/predict.c Mon Feb 13 23:29:34 2012 --- gcc-4.7.4/gcc/predict.c Fri Apr 19 08:18:29 2013 *************** predict_loops (void) *** 983,989 **** if (TREE_CODE (niter) == INTEGER_CST) { if (host_integerp (niter, 1) ! && compare_tree_int (niter, max-1) == -1) nitercst = tree_low_cst (niter, 1) + 1; else nitercst = max; --- 983,990 ---- if (TREE_CODE (niter) == INTEGER_CST) { if (host_integerp (niter, 1) ! && max ! && compare_tree_int (niter, max - 1) == -1) nitercst = tree_low_cst (niter, 1) + 1; else nitercst = max; *************** predict_loops (void) *** 1005,1010 **** --- 1006,1016 ---- else continue; + /* If the prediction for number of iterations is zero, do not + predict the exit edges. */ + if (nitercst == 0) + continue; + probability = ((REG_BR_PROB_BASE + nitercst / 2) / nitercst); predict_edge (ex, predictor, probability); } diff -Nrcpad gcc-4.7.3/gcc/recog.c gcc-4.7.4/gcc/recog.c *** gcc-4.7.3/gcc/recog.c Fri May 4 11:13:20 2012 --- gcc-4.7.4/gcc/recog.c Fri Oct 25 08:57:06 2013 *************** peep2_reg_dead_p (int ofs, rtx reg) *** 3030,3035 **** --- 3030,3038 ---- return 1; } + /* Regno offset to be used in the register search. */ + static int search_ofs; + /* Try to find a hard register of mode MODE, matching the register class in CLASS_STR, which is available at the beginning of insn CURRENT_INSN and remains available until the end of LAST_INSN. LAST_INSN may be NULL_RTX, *************** rtx *** 3045,3051 **** peep2_find_free_register (int from, int to, const char *class_str, enum machine_mode mode, HARD_REG_SET *reg_set) { - static int search_ofs; enum reg_class cl; HARD_REG_SET live; df_ref *def_rec; --- 3048,3053 ---- *************** peephole2_optimize (void) *** 3488,3493 **** --- 3490,3496 ---- /* Initialize the regsets we're going to use. */ for (i = 0; i < MAX_INSNS_PER_PEEP2 + 1; ++i) peep2_insn_data[i].live_before = BITMAP_ALLOC (®_obstack); + search_ofs = 0; live = BITMAP_ALLOC (®_obstack); FOR_EACH_BB_REVERSE (bb) diff -Nrcpad gcc-4.7.3/gcc/regcprop.c gcc-4.7.4/gcc/regcprop.c *** gcc-4.7.3/gcc/regcprop.c Tue Nov 8 17:36:45 2011 --- gcc-4.7.4/gcc/regcprop.c Fri Jan 10 16:54:43 2014 *************** copyprop_hardreg_forward_1 (basic_block *** 741,746 **** --- 741,747 ---- int n_ops, i, alt, predicated; bool is_asm, any_replacements; rtx set; + rtx link; bool replaced[MAX_RECOG_OPERANDS]; bool changed = false; *************** copyprop_hardreg_forward_1 (basic_block *** 808,813 **** --- 809,831 ---- if (recog_op_alt[i][alt].earlyclobber) kill_value (recog_data.operand[i], vd); + /* If we have dead sets in the insn, then we need to note these as we + would clobbers. */ + for (link = REG_NOTES (insn); link; link = XEXP (link, 1)) + { + if (REG_NOTE_KIND (link) == REG_UNUSED) + { + kill_value (XEXP (link, 0), vd); + /* Furthermore, if the insn looked like a single-set, + but the dead store kills the source value of that + set, then we can no-longer use the plain move + special case below. */ + if (set + && reg_overlap_mentioned_p (XEXP (link, 0), SET_SRC (set))) + set = NULL; + } + } + /* Special-case plain move instructions, since we may well be able to do the move from a different register class. */ if (set && REG_P (SET_SRC (set))) diff -Nrcpad gcc-4.7.3/gcc/reginfo.c gcc-4.7.4/gcc/reginfo.c *** gcc-4.7.3/gcc/reginfo.c Tue Jan 31 19:11:00 2012 --- gcc-4.7.4/gcc/reginfo.c Thu Jan 16 16:33:30 2014 *************** static const char initial_call_really_us *** 88,94 **** char global_regs[FIRST_PSEUDO_REGISTER]; /* Declaration for the global register. */ ! static tree GTY(()) global_regs_decl[FIRST_PSEUDO_REGISTER]; /* Same information as REGS_INVALIDATED_BY_CALL but in regset form to be used in dataflow more conveniently. */ --- 88,94 ---- char global_regs[FIRST_PSEUDO_REGISTER]; /* Declaration for the global register. */ ! tree global_regs_decl[FIRST_PSEUDO_REGISTER]; /* Same information as REGS_INVALIDATED_BY_CALL but in regset form to be used in dataflow more conveniently. */ diff -Nrcpad gcc-4.7.3/gcc/rtl.h gcc-4.7.4/gcc/rtl.h *** gcc-4.7.3/gcc/rtl.h Tue Jan 24 19:06:38 2012 --- gcc-4.7.4/gcc/rtl.h Thu Jan 16 16:33:30 2014 *************** extern void _fatal_insn (const char *, c *** 2681,2686 **** --- 2681,2688 ---- #define fatal_insn_not_found(insn) \ _fatal_insn_not_found (insn, __FILE__, __LINE__, __FUNCTION__) + /* reginfo.c */ + extern tree GTY(()) global_regs_decl[FIRST_PSEUDO_REGISTER]; #endif /* ! GCC_RTL_H */ diff -Nrcpad gcc-4.7.3/gcc/sched-deps.c gcc-4.7.4/gcc/sched-deps.c *** gcc-4.7.3/gcc/sched-deps.c Fri Apr 5 21:17:40 2013 --- gcc-4.7.4/gcc/sched-deps.c Fri Apr 19 12:00:36 2013 *************** static void *** 1563,1586 **** add_dependence_list_and_free (struct deps_desc *deps, rtx insn, rtx *listp, int uncond, enum reg_note dep_type) { ! rtx list, next; /* We don't want to short-circuit dependencies involving debug insns, because they may cause actual dependencies to be disregarded. */ if (deps->readonly || DEBUG_INSN_P (insn)) ! { ! add_dependence_list (insn, *listp, uncond, dep_type); ! return; ! } ! for (list = *listp, *listp = NULL; list ; list = next) ! { ! next = XEXP (list, 1); ! if (uncond || ! sched_insns_conditions_mutex_p (insn, XEXP (list, 0))) ! add_dependence (insn, XEXP (list, 0), dep_type); ! free_INSN_LIST_node (list); ! } } /* Remove all occurences of INSN from LIST. Return the number of --- 1563,1577 ---- add_dependence_list_and_free (struct deps_desc *deps, rtx insn, rtx *listp, int uncond, enum reg_note dep_type) { ! add_dependence_list (insn, *listp, uncond, dep_type); /* We don't want to short-circuit dependencies involving debug insns, because they may cause actual dependencies to be disregarded. */ if (deps->readonly || DEBUG_INSN_P (insn)) ! return; ! free_INSN_LIST_list (listp); } /* Remove all occurences of INSN from LIST. Return the number of *************** flush_pending_lists (struct deps_desc *d *** 1764,1769 **** --- 1755,1769 ---- add_dependence_list_and_free (deps, insn, &deps->pending_jump_insns, 1, REG_DEP_ANTI); + if (DEBUG_INSN_P (insn)) + { + if (for_write) + free_INSN_LIST_list (&deps->pending_read_insns); + free_INSN_LIST_list (&deps->pending_write_insns); + free_INSN_LIST_list (&deps->last_pending_memory_flush); + free_INSN_LIST_list (&deps->pending_jump_insns); + } + if (!deps->readonly) { free_EXPR_LIST_list (&deps->pending_write_mems); *************** sched_analyze_insn (struct deps_desc *de *** 3262,3270 **** SET_REGNO_REG_SET (&deps->reg_last_in_use, i); } ! /* Flush pending lists on jumps, but not on speculative checks. */ ! if (JUMP_P (insn) && !(sel_sched_p () ! && sel_insn_is_speculation_check (insn))) flush_pending_lists (deps, insn, true, true); reg_pending_barrier = NOT_A_BARRIER; --- 3262,3270 ---- SET_REGNO_REG_SET (&deps->reg_last_in_use, i); } ! /* Don't flush pending lists on speculative checks for ! selective scheduling. */ ! if (!sel_sched_p () || !sel_insn_is_speculation_check (insn)) flush_pending_lists (deps, insn, true, true); reg_pending_barrier = NOT_A_BARRIER; diff -Nrcpad gcc-4.7.3/gcc/sdbout.c gcc-4.7.4/gcc/sdbout.c *** gcc-4.7.3/gcc/sdbout.c Wed Mar 16 08:40:07 2011 --- gcc-4.7.4/gcc/sdbout.c Tue Mar 18 20:08:03 2014 *************** static void *** 1264,1270 **** sdbout_parms (tree parms) { for (; parms; parms = TREE_CHAIN (parms)) ! if (DECL_NAME (parms)) { int current_sym_value = 0; const char *name = IDENTIFIER_POINTER (DECL_NAME (parms)); --- 1264,1273 ---- sdbout_parms (tree parms) { for (; parms; parms = TREE_CHAIN (parms)) ! if (DECL_NAME (parms) ! && TREE_TYPE (parms) != error_mark_node ! && DECL_RTL_SET_P (parms) ! && DECL_INCOMING_RTL (parms)) { int current_sym_value = 0; const char *name = IDENTIFIER_POINTER (DECL_NAME (parms)); *************** static void *** 1396,1402 **** sdbout_reg_parms (tree parms) { for (; parms; parms = TREE_CHAIN (parms)) ! if (DECL_NAME (parms)) { const char *name = IDENTIFIER_POINTER (DECL_NAME (parms)); --- 1399,1408 ---- sdbout_reg_parms (tree parms) { for (; parms; parms = TREE_CHAIN (parms)) ! if (DECL_NAME (parms) ! && TREE_TYPE (parms) != error_mark_node ! && DECL_RTL_SET_P (parms) ! && DECL_INCOMING_RTL (parms)) { const char *name = IDENTIFIER_POINTER (DECL_NAME (parms)); diff -Nrcpad gcc-4.7.3/gcc/sel-sched.c gcc-4.7.4/gcc/sel-sched.c *** gcc-4.7.3/gcc/sel-sched.c Mon Apr 1 08:11:11 2013 --- gcc-4.7.4/gcc/sel-sched.c Tue Jan 21 12:31:35 2014 *************** mark_unavailable_hard_regs (def_t def, s *** 1263,1269 **** if (!HARD_FRAME_POINTER_IS_FRAME_POINTER) add_to_hard_reg_set (®_rename_p->unavailable_hard_regs, ! Pmode, HARD_FRAME_POINTER_IS_FRAME_POINTER); } #ifdef STACK_REGS --- 1263,1269 ---- if (!HARD_FRAME_POINTER_IS_FRAME_POINTER) add_to_hard_reg_set (®_rename_p->unavailable_hard_regs, ! Pmode, HARD_FRAME_POINTER_REGNUM); } #ifdef STACK_REGS diff -Nrcpad gcc-4.7.3/gcc/simplify-rtx.c gcc-4.7.4/gcc/simplify-rtx.c *** gcc-4.7.3/gcc/simplify-rtx.c Mon Feb 11 17:27:30 2013 --- gcc-4.7.4/gcc/simplify-rtx.c Mon Jul 8 08:17:35 2013 *************** simplify_binary_operation_1 (enum rtx_co *** 2558,2563 **** --- 2558,2564 ---- HOST_WIDE_INT mask = INTVAL (trueop1) << count; if (mask >> count == INTVAL (trueop1) + && trunc_int_for_mode (mask, mode) == mask && (mask & nonzero_bits (XEXP (op0, 0), mode)) == 0) return simplify_gen_binary (ASHIFTRT, mode, plus_constant (XEXP (op0, 0), mask), diff -Nrcpad gcc-4.7.3/gcc/target.def gcc-4.7.4/gcc/target.def *** gcc-4.7.3/gcc/target.def Fri Aug 10 13:21:31 2012 --- gcc-4.7.4/gcc/target.def Tue Apr 16 17:09:14 2013 *************** DEFHOOKPOD *** 2758,2763 **** --- 2758,2770 ---- bool, false) DEFHOOKPOD + (force_at_comp_dir, + "True if the @code{DW_AT_comp_dir} attribute should be emitted for each \ + compilation unit. This attribute is required for the darwin linker \ + to emit debug information.", + bool, false) + + DEFHOOKPOD (delay_sched2, "True if sched2 is not to be run at its normal place. \ This usually means it will be run as part of machine-specific reorg.", bool, false) diff -Nrcpad gcc-4.7.3/gcc/testsuite/ChangeLog gcc-4.7.4/gcc/testsuite/ChangeLog *** gcc-4.7.3/gcc/testsuite/ChangeLog Thu Apr 11 07:56:58 2013 --- gcc-4.7.4/gcc/testsuite/ChangeLog Thu Jun 12 12:08:01 2014 *************** *** 1,3 **** --- 1,707 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + + 2014-06-04 Richard Biener + + Backport from mainline + 2013-05-13 Jakub Jelinek + + PR tree-optimization/57230 + * gcc.dg/strlenopt-23.c: New test. + + 2014-05-27 Eric Botcazou + + * gnat.dg/aliasing1.adb (dg-final): Robustify pattern matching. + + 2014-05-24 Dominique d'Humieres + + Backport r195492 and r195815 + 2013-01-27 Paul Thomas + + PR fortran/55789 + * gfortran.dg/associate_14.f90: New test. + + PR fortran/56047 + * gfortran.dg/associate_13.f90: New test. + + 2013-02-06 Paul Thomas + + PR fortran/55789 + * gfortran.dg/array_constructor_41.f90: New test. + + 2014-05-23 Richard Biener + + Backport from mainline + 2013-08-30 Richard Biener + + PR tree-optimization/58228 + * gcc.dg/torture/pr58228.c: New testcase. + + 2013-09-26 Richard Biener + + PR tree-optimization/58539 + * gcc.dg/torture/pr58539.c: New testcase. + + 2014-05-20 Senthil Kumar Selvaraj + + Backport from mainline r210325 + 2014-05-12 Senthil Kumar Selvaraj + + PR target/60991 + * gcc.target/avr/pr60991.c: New testcase. + + 2014-05-13 Richard Biener + + Backport from mainline + 2014-03-04 Richard Biener + + PR tree-optimization/60382 + * gcc.dg/vect/pr60382.c: New testcase. + + 2014-05-09 Georg-Johann Lay + + Backport from 2014-05-09 trunk r210267 + + PR target/61055 + * gcc.target/avr/torture/pr61055.c: New test. + + 2014-05-07 Jakub Jelinek + + Backported from mainline + 2013-10-21 Marek Polacek + + PR middle-end/58809 + * gcc.dg/gomp/pr58809.c: New test. + + 2013-12-03 Jakub Jelinek + + PR middle-end/59011 + * gcc.dg/pr59011.c: New test. + + 2013-11-28 Jakub Jelinek + + PR c++/59297 + * g++.dg/gomp/pr59297.C: New test. + + 2013-11-27 Jakub Jelinek + + PR tree-optimization/59014 + * gcc.c-torture/execute/pr59014-2.c: New test. + + 2013-11-26 Jakub Jelinek + + PR tree-optimization/59014 + * gcc.c-torture/execute/pr59014.c: New test. + + 2013-11-14 Jakub Jelinek + + PR target/59101 + * gcc.c-torture/execute/pr59101.c: New test. + + 2013-09-30 Jakub Jelinek + + PR middle-end/58564 + * gcc.c-torture/execute/pr58564.c: New test. + + 2013-09-10 Jakub Jelinek + + PR rtl-optimization/58365 + * gcc.c-torture/execute/pr58365.c: New test. + + 2013-09-09 Jakub Jelinek + + PR c++/58325 + * g++.dg/warn/Wunused-var-21.C: New test. + + 2013-08-30 Jakub Jelinek + + PR tree-optimization/58277 + * gcc.c-torture/execute/pr58277-1.c: New test. + * gcc.c-torture/execute/pr58277-2.c: New test. + + 2013-08-23 Jakub Jelinek + + PR tree-optimization/58209 + * gcc.c-torture/execute/pr58209.c: New test. + + 2013-07-03 Jakub Jelinek + + PR target/57777 + * gcc.target/i386/pr57777.c: New test. + + 2013-06-27 Jakub Jelinek + + PR target/57623 + * gcc.target/i386/bmi-bextr-3.c: New test. + + PR target/57623 + * gcc.target/i386/bmi2-bzhi-1.c: New test. + + 2014-05-07 Richard Biener + + Backport from mainline + 2013-11-19 Richard Biener + + PR tree-optimization/59164 + * gcc.dg/torture/pr59164.c: New testcase. + + 2014-05-07 Richard Biener + + Backport from mainline + 2013-11-28 Richard Biener + + PR tree-optimization/59330 + * gcc.dg/torture/pr59330.c: New testcase. + + 2014-01-09 Richard Biener + + PR tree-optimization/59715 + * gcc.dg/torture/pr59715.c: New testcase. + + 2014-05-07 Richard Biener + + PR tree-optimization/57864 + * gcc.dg/torture/pr57864.c: New testcase. + + 2014-05-07 Richard Biener + + Backport from mainline + 2013-08-29 Richard Biener + + PR tree-optimization/58246 + * gcc.dg/torture/pr58246.c: New testcase. + + 2014-05-06 Richard Biener + + Backport from mainline + 2013-05-27 Richard Biener + + PR tree-optimization/57417 + * gcc.dg/torture/pr57417.c: New testcase. + + 2014-04-25 Eric Botcazou + + * gcc.c-torture/execute/20140425-1.c: New test. + + 2014-04-23 Uros Bizjak + + Backport from mainline + 2014-04-21 Uros Bizjak + + PR target/60909 + * gcc.target/i386/pr60909.c: New test. + + 2014-04-12 Jerry DeLisle + + Backport from mainline + PR libfortran/60810 + * gfortran.dg/arrayio_13.f90: New test. + + 2014-04-07 Martin Jambor + + 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. + + 2014-04-06 Dominique d'Humieres + Iain Sandoe + + PR target/54083 + * gcc.dg/attr-weakref-1.c: Allow the test on darwin with + the additional options -Wl,-undefined,dynamic_lookup and + -Wl,-flat_namespace + * gcc.dg/torture/pr53922.c: Additional option + -Wl,-flat_namespace for darwin[89]. + + 2014-04-29 Thomas Koenig + + PR fortran/60522 + * gfortran.dg/where_4.f90: New test case. + + 2014-03-20 Tobias Burnus + + PR fortran/60543 + PR fortran/60283 + * gfortran.dg/implicit_pure_4.f90: New. + + 2014-03-18 Richard Biener + + Backport from mainline + 2013-11-05 Richard Biener + + PR middle-end/58941 + * gcc.dg/torture/pr58941.c: New testcase. + + 2014-03-18 Richard Biener + + Backport from mainline + 2013-08-27 Richard Biener + + PR tree-optimization/57521 + * gcc.dg/torture/pr57521.c: New testcase. + + 2013-09-03 Richard Biener + + PR middle-end/57656 + * gcc.dg/torture/pr57656.c: New testcase. + + 2013-11-19 Richard Biener + + PR tree-optimization/57517 + * gfortran.fortran-torture/compile/pr57517.f90: New testcase. + * gcc.dg/torture/pr57517.c: Likewise. + + 2014-03-17 Richard Biener + + Backport from mainline + 2013-05-21 Richard Biener + + PR tree-optimization/57303 + * gcc.dg/torture/pr57303.c: New testcase. + + 2013-12-02 Richard Biener + + PR tree-optimization/59139 + * gcc.dg/torture/pr59139.c: New testcase. + + 2014-02-14 Richard Biener + + PR tree-optimization/60183 + * gcc.dg/torture/pr60183.c: New testcase. + + 2014-03-15 Jerry DeLisle + + Backport from mainline + PR libfortran/58324 + * gfortran.dg/list_read_12.f90: New test. + + 2014-03-09 Janus Weil + + Backport from 4.8 + 2014-03-08 Janus Weil + + PR fortran/60450 + * gfortran.dg/shape_8.f90: New. + + 2014-03-02 Mikael Morin + + PR fortran/60341 + * gfortran.dg/str_comp_optimize_1.f90: New test. + + 2014-02-26 Fabien Chêne + + PR c++/37140 + * g++.dg/template/using27.C: New. + * g++.dg/template/using28.C: New. + * g++.dg/template/using29.C: New. + + 2014-02-22 Mikael Morin + + PR fortran/59599 + * gfortran.dg/ichar_3.f90: New test. + + 2014-02-20 Janus Weil + + Backport from mainline + 2014-02-17 Janus Weil + + PR fortran/55907 + * gfortran.dg/init_flag_12.f90: New. + + 2014-02-18 Kai Tietz + + PR target/60193 + * gcc.target/i386/nest-1.c: New testcase. + + 2014-02-18 Eric Botcazou + + * gnat.dg/opt32.adb: New test. + + 2014-02-15 Jerry DeLisle + Dominique d'Humieres + + Backport from mainline + PR libfortran/59771 + PR libfortran/59774 + PR libfortran/59836 + * gfortran.dg/fmt_g_1.f90: New test. + * gfortran.dg/round_3.f08: New cases added. + + 2014-02-08 Mikael Morin + + PR fortran/57033 + * gfortran.dg/default_initialization_7.f90: New test. + + 2014-02-08 Paul Thomas + + PR fortran/59906 + * gfortran.dg/elemental_subroutine_9.f90 : New test + + 2014-02-04 Uros Bizjak + + Backport from mainline + 2014-02-02 Uros Bizjak + + PR target/60017 + * gcc.c-torture/execute/pr60017.c: New test. + + 2014-02-03 Janus Weil + + PR fortran/59941 + * gfortran.dg/typebound_proc_26.f90: New. + + 2014-01-29 Markus Trippelsdorf + + Backport from mainline + 2012-12-13 Jakub Jelinek + + PR gcov-profile/55650 + * g++.dg/other/pr55650.C: New test. + * g++.dg/other/pr55650.cc: New file. + + 2014-01-26 Mikael Morin + + PR fortran/58007 + * gfortran.dg/unresolved_fixup_1.f90: New test. + * gfortran.dg/unresolved_fixup_2.f90: New test. + + 2014-01-16 Jakub Jelinek + + PR target/59839 + * gcc.target/i386/pr59839.c: New test. + + PR debug/54694 + * gcc.target/i386/pr9771-1.c (main): Rename to... + (real_main): ... this. Add __asm name "main". + (ASMNAME, ASMNAME2, STRING): Define. + + 2014-01-16 Marek Polacek + + Backport from mainline + 2014-01-16 Marek Polacek + + PR middle-end/59827 + * gcc.dg/pr59827.c: New test. + + 2014-01-10 Richard Earnshaw + + PR rtl-optimization/54300 + * gcc.target/arm/pr54300.C: New test. + + 2014-01-03 Joseph Myers + + * gcc.target/powerpc/rs6000-ldouble-3.c: New test. + + 2013-12-12 Uros Bizjak + + Backport from mainline + 2013-12-12 Ryan Mansfield + + PR testsuite/59442 + * gcc.target/i386/sse2-movapd-1.c: Fix alignment attributes. + * gcc.target/i386/sse2-movapd-2.c: Likewise. + * gcc.target/i386/avx-vmovapd-256-1.c: Likewise. + * gcc.target/i386/avx-vmovapd-256-2.c: Likewise. + + 2013-12-04 Marek Polacek + + PR c/59351 + * gcc.dg/pr59351.c: Use -pedantic instead of -Wpedantic. + + 2013-12-03 Marek Polacek + + Backport from mainline + 2013-12-03 Marek Polacek + + PR c/59351 + * gcc.dg/pr59351.c: New test. + + 2013-11-28 Uros Bizjak + + Backport from mainline + 2013-11-27 Uros Bizjak + Ganesh Gopalasubramanian + + PR target/56788 + * gcc.target/i386/xop-frczX.c: New test. + + 2013-11-25 Vidya Praveen + + Backport from mainline + 2013-10-21 Vidya Praveen + + * gcc.dg/20050922-1.c: Remove stdlib.h and declare abort(). + * gcc.dg/20050922-1.c: Remove stdlib.h and declare abort() and exit(). + + 2013-11-17 Paul Thomas + + PR fortran/58771 + * gfortran.dg/derived_external_function_1.f90 : New test + + 2013-11-02 Janus Weil + + Backport from mainline + 2013-09-23 Janus Weil + + PR fortran/58355 + * gfortran.dg/extends_15.f90: New. + + 2013-10-28 Tom de Vries + + * gcc.target/arm/require-pic-register-loc.c: New test. + + 2013-10-28 Tom de Vries + + * gcc.target/arm/require-pic-register-loc.c: New test. + + 2013-10-26 Uros Bizjak + + Backport from mainline + 2013-10-22 Uros Bizjak + + PR target/58779 + * gcc.target/i386/pr30315.c: Remove MINUSCC, DECCC, MINUSCCONLY + and MINUSCCZEXT defines. Update scan-assembler dg directive. + * gcc.dg/torture/pr58779.c: New test. + + 2013-10-25 Richard Henderson + + PR rtl/58542 + * gcc.dg/atomic-store-6.c: New. + + 2013-10-25 Tom de Vries + + PR c++/58282 + * g++.dg/tm/noexcept-6.C: New test. + + 2013-10-25 Eric Botcazou + + * gcc.c-torture/execute/pr58831.c: New test. + + 2013-10-16 Paolo Carlini + + PR c++/58633 + * g++.dg/cpp0x/decltype57.C: New. + * g++.dg/cpp0x/enum18.C: Revert r174385 changes. + + 2013-09-23 Eric Botcazou + + * gnat.dg/opt28.ad[sb]: New test. + * gnat.dg/opt28_pkg.ads: New helper. + + 2013-09-18 Eric Botcazou + + * gnat.dg/in_out_parameter4.adb: New test. + + 2013-08-13 Eric Botcazou + + * gnat.dg/loop_optimization16.adb: New test. + * gnat.dg/loop_optimization16_pkg.ad[sb]: New helper. + + 2013-08-13 Marek Polacek + + Backport from 4.8: + 2013-08-13 Marek Polacek + + PR tree-optimization/57980 + * gcc.dg/pr57980.c: New test. + + 2013-08-11 Janus Weil + + Backport from trunk: + 2013-08-09 Janus Weil + + PR fortran/58058 + * gfortran.dg/transfer_intrinsic_6.f90: New. + + 2013-07-16 Iain Sandoe + + PR target/55656 + PR target/55657 + * obj-c++.dg/cxx-ivars-3.mm: Use NSObject instead of Object. + * obj-c++.dg/strings/const-cfstring-5.mm: Likewise. + * obj-c++.dg/torture/strings/const-str-10.mm: Likewise. + * obj-c++.dg/torture/strings/const-str-9.mm: Likewise. + * objc.dg/image-info.m: Likewise. + * objc.dg/symtab-1.m: Likewise. + * objc.dg/torture/strings/const-str-10.m: Likewise. + * objc.dg/torture/strings/const-str-11.m: Likewise. + * objc.dg/torture/strings/const-str-9.m: Likewise. + * objc.dg/zero-link-1.m: Likewise. + * objc.dg/zero-link-2.m: Likewise. + * objc.dg/no-extra-load.m: Avoid Foundation.h. + * objc.dg/objc-foreach-4.m: Likewise. + * objc.dg/objc-foreach-5.m: Likewise. + * obj-c++.dg/proto-lossage-7.mm: Use NSObject instead of Object + (for Darwin). + * obj-c++.dg/strings/const-str-12.mm: Likewise. + * obj-c++.dg/syntax-error-1.mm: Likewise. + * objc.dg/method-6.m: Likewise. + * objc.dg/pr23214.m: Likewise. + * objc.dg/proto-lossage-7.m: Likewise. + * objc.dg/strings/const-str-12b.m: Likewise. + * objc.dg/zero-link-3.m: Likewise. + * obj-c++.dg/method-12.mm: Skip on Darwin versions without 'Object'. + * objc.dg/encode-7-next-64bit.m: Use NSObject instead of Object, + adjust headers, interfaces and encoded types to reflect current system + versions. Add FIXME and outputs from current system compiler for + reference. + + 2012-12-03 Paolo Carlini + + PR c++/54170 + * g++.dg/cpp0x/lambda/lambda-nullptr.C: New. + + 2013-07-08 Tobias Burnus + + PR fortran/57785 + * gfortran.dg/dot_product_2.f90: New. + + 2013-07-08 Jakub Jelinek + + PR rtl-optimization/57829 + * gcc.c-torture/execute/pr57829.c: New test. + + 2013-07-05 Uros Bizjak + + Backport from mainline + 2013-06-20 Uros Bizjak + + PR target/57655 + * gcc.target/i386/pr57655.c: New test. + + 2013-06-09 Jakub Jelinek + + PR target/57568 + * gcc.c-torture/execute/pr57568.c: New test. + + 2013-06-06 Tobias Burnus + + Backport from mainline + 2012-08-27 Tobias Burnus + + PR fortran/54370 + * gfortran.dg/do_5.f90: New. + + 2013-06-01 Janus Weil + Tobias Burnus + + PR fortran/57217 + * gfortran.dg/typebound_override_4.f90: New. + + 2013-05-26 Eric Botcazou + + * gnat.dg/specs/last_bit.ads: New test. + + 2013-05-13 Uros Bizjak + + PR target/57264 + * gcc.target/i386/pr57264.c: New test. + + 2013-05-07 Michael Meissner + + Backport from trunk + 2013-05-03 Michael Meissner + + PR target/57150 + * gcc.target/powerpc/pr57150.c: New file. + + 2013-05-07 Tobias Burnus + + Backport from mainline + 2013-05-02 Tobias Burnus + + PR fortran/57142 + * gfortran.dg/size_kind_2.f90: New. + * gfortran.dg/size_kind_3.f90: New. + + 2013-05-03 Marek Polacek + + Backport from mainline + 2013-04-25 Marek Polacek + + PR tree-optimization/57066 + * gcc.dg/torture/builtin-logb-1.c: Adjust testcase. + + 2013-04-30 Uros Bizjak + + Backport from mainline + 2013-04-29 Uros Bizjak + + PR target/44578 + * gcc.target/i386/pr44578.c: New test. + + Backport from mainline + 2013-04-29 Uros Bizjak + + PR target/57098 + * gcc.target/i386/pr57098.c: New test. + + 2013-04-29 Christian Bruel + + PR target/57108 + * gcc.target/sh/pr57108.c: New test. + + 2013-04-28 Jerry DeLisle + + Backport from trunk: + + PR fortran/51825 + * gfortran.dg/namelist_77.f90: New test. + * gfortran.dg/namelist_78.f90: New test. + + 2013-04-28 Jerry DeLisle + + Backport from trunk: + + PR fortran/56786 + * gfortran.dg/namelist_81.f90: New test. + + 2013-04-28 Jerry DeLisle + + Backport from trunk: + + PR fortran/52512 + * gfortran.dg/namelist_79.f90: New test. + + 2013-04-27 Jakub Jelinek + + PR target/56866 + * gcc.c-torture/execute/pr56866.c: New test. + * gcc.target/i386/pr56866.c: New test. + + 2013-04-26 Janus Weil + + Backports from trunk: + + PR fortran/56968 + * gfortran.dg/proc_ptr_41.f90: New. + + PR fortran/53685 + PR fortran/57022 + * gfortran.dg/transfer_check_4.f90: New. + + 2013-04-19 Marek Polacek + + Backport from mainline + 2013-01-08 Steven Bosscher + Jakub Jelinek + + PR tree-optimization/48189 + * gcc.dg/pr48189.c: New test. + + 2013-04-15 Rainer Orth + + * gcc.dg/torture/pr53922.c: Skip on alpha*-*-osf*. + Remove dg-skip-if default args. + + 2013-04-15 Eric Botcazou + + * gcc.dg/pr56890-1.c: New test. + * gcc.dg/pr56890-2.c: Likewise. + 2013-04-11 Release Manager * GCC 4.7.3 released. *************** *** 54,60 **** Backport from mainline 2013-02-27 Andrey Belevantsev ! PR middle-end/45472 * gcc.dg/pr45472.c: New test. --- 758,764 ---- Backport from mainline 2013-02-27 Andrey Belevantsev ! PR middle-end/45472 * gcc.dg/pr45472.c: New test. diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr8.C gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr8.C *** gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr8.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr8.C Fri May 10 14:34:24 2013 *************** *** 0 **** --- 1,54 ---- + // PR c++/57047 + // { dg-require-effective-target c++11 } + + template + struct A; + template + struct A + { + typedef T type; + }; + template + constexpr T && foo (typename A ::type & __t) noexcept + { + return static_cast (__t); + } + template + struct B + { + T1 t1; + T2 t2; + template + constexpr B (U && __x, const T2 & __y) : t1 (foo (__x)), t2 (__y) {} + }; + static inline constexpr bool + fn1 (const char c) + { + return ('0' <= c) && (c <= '9'); + } + static inline constexpr bool + fn2 (const char c) + { + return (('A' <= c) && (c <= 'Z')) || (('a' <= c) && (c <= 'z')); + } + static constexpr bool + fn3 (const char *const x) + { + return (x[1] == '\0' && x[0] == ']') ? true : (!fn1 (x[0])) ? false : fn3 (&x[1]); + } + static constexpr bool + fn4 (const char *const x) + { + return (x[0] == '\0') ? fn3 (&x[1]) : fn4 (&x[1]); + } + static inline constexpr bool + fn5 (const char *const x) + { + return fn2 (x[0]) ? fn4 (x) : false; + } + struct C final + { + constexpr C (const char *const t1) : c (fn5 (t1) ? 199 : 69) {} + unsigned c; + }; + B p ("a", "b"); diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/decltype57.C gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/decltype57.C *** gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/decltype57.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/decltype57.C Wed Oct 16 22:20:35 2013 *************** *** 0 **** --- 1,8 ---- + // PR c++/58633 + // { dg-do compile { target c++11 } } + + void foo(int i) + { + typedef int I; + decltype(i.I::~I())* p; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/enum18.C gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/enum18.C *** gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/enum18.C Sat May 28 22:01:28 2011 --- gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/enum18.C Wed Oct 16 22:20:35 2013 *************** *** 4,8 **** int main(void) { enum e {}; e ev; ! ev.e::~e_u(); // { dg-error "e_u. has not been declared" } } --- 4,8 ---- int main(void) { enum e {}; e ev; ! ev.e::~e_u(); // { dg-error "" } } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/initlist78.C gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/initlist78.C *** gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/initlist78.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/initlist78.C Tue Jan 28 13:40:06 2014 *************** *** 0 **** --- 1,12 ---- + // PR c++/58639 + // { dg-require-effective-target c++11 } + + struct node { + node &parent; + }; + + struct vector { + node n; + }; + + vector v({}); // { dg-error "" } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh3.C gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh3.C *** gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh3.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh3.C Tue Apr 16 20:29:22 2013 *************** *** 0 **** --- 1,14 ---- + // PR c++/56388 + // { dg-require-effective-target c++11 } + + int main() + { + bool /*const*/ condition = false; + + [&]{ + try{} + catch(...){ + if(condition){} + } + }(); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C *** gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C Wed Jul 10 05:53:45 2013 *************** *** 0 **** --- 1,47 ---- + // PR c++/54170 + // { dg-do run { target c++11 } } + + #include + + struct A; + typedef A* ptr; + typedef int (A::*pmf) (int); + typedef int (A::*pdm); + + int total; + + void add(int n) + { + total += n; + } + + template + RType Call(Callable native_func, int arg) + { + return native_func(arg); + } + + template + RType do_test(int delta) + { + return Call([=](int delta) { add(delta); return nullptr; }, delta); + } + + template + void test() + { + total = 0; + assert (!do_test(5)); + assert (total == 5); + assert (!do_test(20)); + assert (total == 25); + assert (!do_test(-256)); + assert (total == -231); + } + + int main() + { + test(); + test(); + test(); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-return1.C gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-return1.C *** gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-return1.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-return1.C Tue Jul 9 17:50:57 2013 *************** *** 0 **** --- 1,26 ---- + // PR c++/57437 + // { dg-require-effective-target c++11 } + + struct A { + int i; + + A(): i(42) {} + A(const A&) = default; + A(A&& a): i(a.i) { a.i = 0; } + }; + + int main() + { + A x; + + auto y = [x] () mutable { + x.i++; + return x; + }; + + if (y().i != 43) + __builtin_abort (); + + if (y().i != 44) + __builtin_abort (); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/noexcept22.C gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/noexcept22.C *** gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/noexcept22.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/noexcept22.C Wed Feb 19 19:59:09 2014 *************** *** 0 **** --- 1,21 ---- + // PR c++/60046 + // { dg-require-effective-target c++11 } + + constexpr bool foo () { return noexcept (true); } + template + struct V + { + void bar (V &) noexcept (foo ()) {} + }; + template + struct W : public V + { + void bar (W &x) { V ::bar (x); } + }; + + int + main () + { + W a, b; + a.bar (b); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/variadic149.C gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/variadic149.C *** gcc-4.7.3/gcc/testsuite/g++.dg/cpp0x/variadic149.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/cpp0x/variadic149.C Fri Feb 21 15:01:54 2014 *************** *** 0 **** --- 1,11 ---- + // PR c++/60248 + // { dg-options "-std=c++11 -g -fabi-version=2" } + + template struct A {}; + + template<> struct A<0> + { + typedef enum { e } B; + }; + + A<0> a; diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/debug/template2.C gcc-4.7.4/gcc/testsuite/g++.dg/debug/template2.C *** gcc-4.7.3/gcc/testsuite/g++.dg/debug/template2.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/debug/template2.C Tue Jul 9 17:50:44 2013 *************** *** 0 **** --- 1,14 ---- + // PR c++/57545 + + template + struct array { + T data[N]; + }; + + template + struct derived { + typedef long unsigned int size_type; + static const size_type n = 42; + + array a; + }; diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/eh/uncaught1.C gcc-4.7.4/gcc/testsuite/g++.dg/eh/uncaught1.C *** gcc-4.7.3/gcc/testsuite/g++.dg/eh/uncaught1.C Fri Feb 24 21:43:01 2006 --- gcc-4.7.4/gcc/testsuite/g++.dg/eh/uncaught1.C Tue Apr 1 17:28:29 2014 *************** struct Check { *** 13,19 **** static Check const data[] = { { 0, 0, false }, // construct [0] ! { 1, 0, true }, // [1] = [0] { 0, 0, true }, // destruct [0] { 2, 1, true }, // [2] = [1] { 2, 2, true }, // destruct [2] --- 13,19 ---- static Check const data[] = { { 0, 0, false }, // construct [0] ! { 1, 0, false }, // [1] = [0] { 0, 0, true }, // destruct [0] { 2, 1, true }, // [2] = [1] { 2, 2, true }, // destruct [2] diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/eh/uncaught4.C gcc-4.7.4/gcc/testsuite/g++.dg/eh/uncaught4.C *** gcc-4.7.3/gcc/testsuite/g++.dg/eh/uncaught4.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/eh/uncaught4.C Tue Apr 1 17:28:29 2014 *************** *** 0 **** --- 1,29 ---- + // PR c++/41174 + // { dg-do run } + + #include + + #define assert(E) if (!(E)) __builtin_abort(); + + struct e { + e() + { + assert( !std::uncaught_exception() ); + try { + throw 1; + } catch (int i) { + assert( !std::uncaught_exception() ); + throw; + } + } + }; + + int main() + { + try { + throw e(); + } catch (int i) { + assert( !std::uncaught_exception() ); + } + assert( !std::uncaught_exception() ); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/expr/const1.C gcc-4.7.4/gcc/testsuite/g++.dg/expr/const1.C *** gcc-4.7.3/gcc/testsuite/g++.dg/expr/const1.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/expr/const1.C Tue Jul 9 17:50:24 2013 *************** *** 0 **** --- 1,9 ---- + // PR c++/57551 + + extern unsigned long ADDR; + + unsigned long f(){ + const unsigned long* const var=&ADDR; + const unsigned long retval=var[1]; + return retval; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/ext/attrib48.C gcc-4.7.4/gcc/testsuite/g++.dg/ext/attrib48.C *** gcc-4.7.3/gcc/testsuite/g++.dg/ext/attrib48.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/ext/attrib48.C Tue Jan 28 13:51:15 2014 *************** *** 0 **** --- 1,6 ---- + // PR c++/54652 + + typedef unsigned L __attribute__ ((aligned)); + typedef unsigned L __attribute__ ((aligned)); + + L l; diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/gomp/pr59297.C gcc-4.7.4/gcc/testsuite/g++.dg/gomp/pr59297.C *** gcc-4.7.3/gcc/testsuite/g++.dg/gomp/pr59297.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/gomp/pr59297.C Wed May 7 16:09:41 2014 *************** *** 0 **** --- 1,25 ---- + // PR c++/59297 + // { dg-do compile } + // { dg-options "-fopenmp" } + + template + struct A + { + ~A (); + const T &operator[] (int) const; + }; + + struct B + { + int &operator () (A ); + }; + + void + foo (B &x, int &z) + { + A > y; + #pragma omp atomic + x (y[0]) += 1; + #pragma omp atomic + z += x(y[1]); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/ipa/pr60640-1.C gcc-4.7.4/gcc/testsuite/g++.dg/ipa/pr60640-1.C *** gcc-4.7.3/gcc/testsuite/g++.dg/ipa/pr60640-1.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/ipa/pr60640-1.C Mon Apr 7 09:54:55 2014 *************** *** 0 **** --- 1,50 ---- + // { dg-do compile } + // { dg-options "-O3" } + + class ASN1Object + { + public: + virtual ~ASN1Object (); + }; + class A + { + virtual unsigned m_fn1 () const; + }; + class B + { + public: + ASN1Object Element; + virtual unsigned m_fn1 (bool) const; + }; + template class C : public BASE + { + }; + + class D : ASN1Object, public B + { + }; + class G : public D + { + unsigned m_fn1 (bool) const {} + }; + class F : A + { + public: + F (A); + unsigned m_fn1 () const + { + int a; + a = m_fn2 ().m_fn1 (0); + return a; + } + const B &m_fn2 () const { return m_groupParameters; } + C m_groupParameters; + }; + template void BenchMarkKeyAgreement (int *, int *, int) + { + A f; + D d (f); + } + + void BenchmarkAll2 () { BenchMarkKeyAgreement(0, 0, 0); } + diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/ipa/pr60640-2.C gcc-4.7.4/gcc/testsuite/g++.dg/ipa/pr60640-2.C *** gcc-4.7.3/gcc/testsuite/g++.dg/ipa/pr60640-2.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/ipa/pr60640-2.C Mon Apr 7 09:54:55 2014 *************** *** 0 **** --- 1,15 ---- + // { dg-do compile } + // { dg-options "-O3" } + + struct B { virtual unsigned f () const; }; + struct C { virtual void f (); }; + struct F { virtual unsigned f (bool) const; ~F (); }; + struct J : C, F {}; + struct G : J { unsigned f (bool) const { return 0; } }; + struct H : B + { + H (int); + unsigned f () const { return ((const F &) h).f (0); } + G h; + }; + H h (0); diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/ipa/pr60640-3.C gcc-4.7.4/gcc/testsuite/g++.dg/ipa/pr60640-3.C *** gcc-4.7.3/gcc/testsuite/g++.dg/ipa/pr60640-3.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/ipa/pr60640-3.C Mon Apr 7 09:54:55 2014 *************** *** 0 **** --- 1,81 ---- + // { dg-do run } + // { dg-options "-O3" } + + struct Distraction + { + char fc[8]; + virtual Distraction * return_self () + { return this; } + }; + + namespace { + + struct A; + static A * __attribute__ ((noinline, noclone)) get_an_A (); + + static int go; + + struct A + { + int fi; + + A () : fi(777) {} + A (int pi) : fi (pi) {} + virtual A * foo (int p) = 0; + }; + + struct B; + static B * __attribute__ ((noinline, noclone)) get_a_B (); + + struct B : public Distraction, A + { + B () : Distraction(), A() { } + B (int pi) : Distraction (), A (pi) {} + virtual B * foo (int p) + { + int o = fi; + for (int i = 0; i < p; i++) + o += i + i * i; + go = o; + + return get_a_B (); + } + }; + + + struct B gb1 (1111), gb2 (2); + static B * __attribute__ ((noinline, noclone)) + get_a_B () + { + return &gb1; + } + + static A * __attribute__ ((noinline, noclone)) + get_an_A () + { + return &gb2; + } + + } + + static int __attribute__ ((noinline, noclone)) + get_a_number () + { + return 5; + } + + extern "C" void abort (void); + + int main (int argc, char *argv[]) + { + for (int i = 0; i < get_a_number (); i++) + { + struct A *p = get_an_A (); + struct A *r = p->foo (4); + if (r->fi != 1111) + abort (); + if (go != 22) + abort (); + } + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/other/pr55650.C gcc-4.7.4/gcc/testsuite/g++.dg/other/pr55650.C *** gcc-4.7.3/gcc/testsuite/g++.dg/other/pr55650.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/other/pr55650.C Wed Jan 29 18:36:42 2014 *************** *** 0 **** --- 1,21 ---- + // PR gcov-profile/55650 + // { dg-do link } + // { dg-options "-O2 -fprofile-generate" } + // { dg-additional-sources "pr55650.cc" } + + struct A + { + virtual void foo (); + }; + + struct B : public A + { + B (); + void foo () {} + }; + + inline A * + bar () + { + return new B; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/other/pr55650.cc gcc-4.7.4/gcc/testsuite/g++.dg/other/pr55650.cc *** gcc-4.7.3/gcc/testsuite/g++.dg/other/pr55650.cc Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/other/pr55650.cc Wed Jan 29 18:36:42 2014 *************** *** 0 **** --- 1,4 ---- + int + main () + { + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/template/array26.C gcc-4.7.4/gcc/testsuite/g++.dg/template/array26.C *** gcc-4.7.3/gcc/testsuite/g++.dg/template/array26.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/template/array26.C Mon May 20 17:01:01 2013 *************** *** 0 **** --- 1,40 ---- + // PR c++/57325 + + class valarray { int _M_data; }; + template < typename > struct SimpleJet { valarray partials; }; + + template < class C > struct scoped_ptr_impl + { + scoped_ptr_impl (C *):data_ () { } + struct Data + { + C ptr; + }; + Data data_; + }; + + template < class, class = int >struct scoped_ptr; + template < class C, class D > struct scoped_ptr + { + scoped_ptr ():impl_ (0) { } + scoped_ptr_impl < C > impl_; + }; + + template < typename JetsT > void + TestJets (JetsT *) + { + typedef typename JetsT::JetType JetT; + scoped_ptr < JetT[] > a; + } + + template < typename T > struct SimpleJets + { + typedef SimpleJet < T > JetType; + scoped_ptr < SimpleJet < T >[] > vars_; + }; + + void fn () + { + SimpleJets < double >b; + TestJets (&b); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/template/delete2.C gcc-4.7.4/gcc/testsuite/g++.dg/template/delete2.C *** gcc-4.7.3/gcc/testsuite/g++.dg/template/delete2.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/template/delete2.C Tue Aug 20 12:59:24 2013 *************** *** 0 **** --- 1,26 ---- + // PR c++/58119 + + template + struct A + { + operator T*(); + template + operator A(); + }; + + template + struct B + { + operator T*(); + template + operator A*(); + }; + + int main() + { + A a; + delete a; + + B b; + delete b; // { dg-error "template|delete" } + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/template/inherit9.C gcc-4.7.4/gcc/testsuite/g++.dg/template/inherit9.C *** gcc-4.7.3/gcc/testsuite/g++.dg/template/inherit9.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/template/inherit9.C Fri Sep 13 22:38:42 2013 *************** *** 0 **** --- 1,15 ---- + // PR c++/58273 + + class A {}; + class B + { + int goo(A); + }; + template + class D : public B + { + void foo(A t) + { + int const i(B::goo(t)); + } + }; diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/template/local8.C gcc-4.7.4/gcc/testsuite/g++.dg/template/local8.C *** gcc-4.7.3/gcc/testsuite/g++.dg/template/local8.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/template/local8.C Fri May 30 15:09:29 2014 *************** *** 0 **** --- 1,18 ---- + // PR c++/56947 + + struct A + { + A (int); + }; + + template < typename > + void Fn () + { + const int kCapacity = 0; + struct Q:A + { + Q ():A (kCapacity) { } + }; + Q q; + } + template void Fn < int >(); diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/template/partial15.C gcc-4.7.4/gcc/testsuite/g++.dg/template/partial15.C *** gcc-4.7.3/gcc/testsuite/g++.dg/template/partial15.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/template/partial15.C Fri Jan 31 15:55:46 2014 *************** *** 0 **** --- 1,19 ---- + // PR c++/57043 + // { dg-do link } + + template struct complex { }; + + template + complex + pow(const complex& x, const complex& y) { return complex(); } + + template + struct promote_2 { typedef T type; }; + + template + complex::type> + pow(const complex& x, const complex& y); + + complex (*powcc)(const complex&, const complex&) = pow; + + int main() {} diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/template/using23.C gcc-4.7.4/gcc/testsuite/g++.dg/template/using23.C *** gcc-4.7.3/gcc/testsuite/g++.dg/template/using23.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/template/using23.C Tue Jul 9 17:50:03 2013 *************** *** 0 **** --- 1,15 ---- + // PR c++/57831 + + struct A { + void f(); + }; + template struct B : T { + typedef T base; + using base::f; // If I write "using B::f" it's ok + void g( ) { + B::f(); // This is OK as expected + (this->*&T::f)(); // This is also OK + (this->*&B::f)(); // This causes error + } + }; + template struct B< A >; diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/template/using27.C gcc-4.7.4/gcc/testsuite/g++.dg/template/using27.C *** gcc-4.7.3/gcc/testsuite/g++.dg/template/using27.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/template/using27.C Wed Feb 26 21:16:15 2014 *************** *** 0 **** --- 1,33 ---- + // PR c++/37140 + + struct X + { + typedef int nested_type; + }; + + template + struct A + { + typedef X type; + }; + + template + struct B : A + { + using typename A::type; + typename type::nested_type x; + }; + + template + struct C : B + { + using typename B::type; + typename type::nested_type y; + }; + + struct D : C + { + using C::type; + type::nested_type z; + }; + diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/template/using28.C gcc-4.7.4/gcc/testsuite/g++.dg/template/using28.C *** gcc-4.7.3/gcc/testsuite/g++.dg/template/using28.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/template/using28.C Wed Feb 26 21:16:15 2014 *************** *** 0 **** --- 1,17 ---- + // PR c++/37140 + + struct C + { + static const int block_size = 1; + }; + + template struct A { + typedef C type; + }; + + template struct B : public A { + using typename A::type; + static const int block_size = type::block_size; + }; + + template class B; diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/template/using29.C gcc-4.7.4/gcc/testsuite/g++.dg/template/using29.C *** gcc-4.7.3/gcc/testsuite/g++.dg/template/using29.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/template/using29.C Wed Feb 26 21:16:15 2014 *************** *** 0 **** --- 1,21 ---- + // PR c++/58047 + + template + struct print_arg { }; + + struct const_holder { + static const int CONSTANT = 42; + }; + + template + struct identity { + typedef T type; + }; + + template + struct test_case : public identity { + using typename identity::type; + print_arg printer; + }; + + template struct test_case; diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/tm/noexcept-6.C gcc-4.7.4/gcc/testsuite/g++.dg/tm/noexcept-6.C *** gcc-4.7.3/gcc/testsuite/g++.dg/tm/noexcept-6.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/tm/noexcept-6.C Fri Oct 25 14:20:06 2013 *************** *** 0 **** --- 1,23 ---- + // { dg-do compile } + // { dg-options "-fno-exceptions -fgnu-tm -O -std=c++0x -fdump-tree-tmlower" } + + struct TrueFalse + { + static constexpr bool v() { return true; } + }; + + int global; + + template int foo() + { + return __transaction_atomic noexcept(T::v()) (global + 1); + } + + int f1() + { + return foo(); + } + + /* { dg-final { scan-tree-dump-times "eh_must_not_throw" 0 "tmlower" } } */ + /* { dg-final { scan-tree-dump-times "__transaction_atomic" 1 "tmlower" } } */ + /* { dg-final { cleanup-tree-dump "tmlower" } } */ diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/tm/pr60004.C gcc-4.7.4/gcc/testsuite/g++.dg/tm/pr60004.C *** gcc-4.7.3/gcc/testsuite/g++.dg/tm/pr60004.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/tm/pr60004.C Sat Feb 1 05:20:13 2014 *************** *** 0 **** --- 1,10 ---- + // { dg-do compile } + // { dg-options "-fgnu-tm" } + + int a; + int f() { + __transaction_atomic { + if (a == 5) + return 1; + } + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/torture/pr60609.C gcc-4.7.4/gcc/testsuite/g++.dg/torture/pr60609.C *** gcc-4.7.3/gcc/testsuite/g++.dg/torture/pr60609.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/torture/pr60609.C Thu May 8 17:06:04 2014 *************** *** 0 **** --- 1,252 ---- + /* { dg-do assemble } */ + + class exception + { + }; + class bad_alloc:exception + { + }; + class logic_error:exception + { + }; + class domain_error:logic_error + { + }; + class invalid_argument:logic_error + { + }; + class length_error:logic_error + { + }; + class overflow_error:exception + { + }; + typedef int mpz_t[]; + template < class > class __gmp_expr; + template <> class __gmp_expr < mpz_t > + { + ~__gmp_expr (); + }; + + class PIP_Solution_Node; + class internal_exception + { + ~internal_exception (); + }; + class not_an_integer:internal_exception + { + }; + class not_a_variable:internal_exception + { + }; + class not_an_optimization_mode:internal_exception + { + }; + class not_a_bounded_integer_type_width:internal_exception + { + }; + class not_a_bounded_integer_type_representation:internal_exception + { + }; + class not_a_bounded_integer_type_overflow:internal_exception + { + }; + class not_a_complexity_class:internal_exception + { + }; + class not_a_control_parameter_name:internal_exception + { + }; + class not_a_control_parameter_value:internal_exception + { + }; + class not_a_pip_problem_control_parameter_name:internal_exception + { + }; + class not_a_pip_problem_control_parameter_value:internal_exception + { + }; + class not_a_relation:internal_exception + { + }; + class ppl_handle_mismatch:internal_exception + { + }; + class timeout_exception + { + ~timeout_exception (); + }; + class deterministic_timeout_exception:timeout_exception + { + }; + void __assert_fail (const char *, const char *, int, int *) + __attribute__ ((__noreturn__)); + void PL_get_pointer (void *); + int Prolog_is_address (); + inline int + Prolog_get_address (void **p1) + { + Prolog_is_address ()? static_cast < + void >(0) : __assert_fail ("Prolog_is_address", "./swi_cfli.hh", 0, 0); + PL_get_pointer (p1); + return 0; + } + + class non_linear:internal_exception + { + }; + class not_unsigned_integer:internal_exception + { + }; + class not_universe_or_empty:internal_exception + { + }; + class not_a_nil_terminated_list:internal_exception + { + }; + class PPL_integer_out_of_range + { + __gmp_expr < mpz_t > n; + }; + void handle_exception (); + template < typename T > T * term_to_handle (int, const char *) + { + if (Prolog_is_address ()) + { + void *p; + Prolog_get_address (&p); + return static_cast < T * >(0); + } + throw; + } + + void + ppl_new_MIP_Problem_from_MIP_Problem () + try + { + term_to_handle < int >(0, "ppl_new_MIP_Problem_from_MIP_Problem/2"); + } + + catch (exception &) + { + } + + int + ppl_PIP_Tree_Node_parametric_values () + { + try + { + PIP_Solution_Node *a = term_to_handle < PIP_Solution_Node > (0, 0); + (void)a; + return 1; + } + catch (internal_exception &) + { + } + catch (not_unsigned_integer &) + { + handle_exception (); + } + catch (non_linear &) + { + handle_exception (); + } + catch (not_a_variable &) + { + handle_exception (); + } + catch (not_an_integer &) + { + handle_exception (); + } + catch (ppl_handle_mismatch &) + { + handle_exception (); + } + catch (not_an_optimization_mode &) + { + handle_exception (); + } + catch (not_a_complexity_class &) + { + handle_exception (); + } + catch (not_a_bounded_integer_type_width &) + { + handle_exception (); + } + catch (not_a_bounded_integer_type_representation &) + { + handle_exception (); + } + catch (not_a_bounded_integer_type_overflow &) + { + handle_exception (); + } + catch (not_a_control_parameter_name &) + { + handle_exception (); + } + catch (not_a_control_parameter_value &) + { + handle_exception (); + } + catch (not_a_pip_problem_control_parameter_name &) + { + handle_exception (); + } + catch (not_a_pip_problem_control_parameter_value &) + { + handle_exception (); + } + catch (not_universe_or_empty &) + { + handle_exception (); + } + catch (not_a_relation &) + { + handle_exception (); + } + catch (not_a_nil_terminated_list &) + { + handle_exception (); + } + catch (PPL_integer_out_of_range &) + { + handle_exception (); + } + catch (int &) + { + } catch (timeout_exception &) + { + handle_exception (); + } catch (deterministic_timeout_exception &) + { + handle_exception (); + } catch (overflow_error &) + { + handle_exception (); + } catch (domain_error &) + { + handle_exception (); + } catch (length_error &) + { + handle_exception (); + } catch (invalid_argument &) + { + handle_exception (); + } catch (logic_error &) + { + handle_exception (); + } catch (bad_alloc &) + { + handle_exception (); + } catch (exception &) + { + handle_exception (); + } catch ( ...) + { + handle_exception (); + } + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/g++.dg/warn/Wunused-var-21.C gcc-4.7.4/gcc/testsuite/g++.dg/warn/Wunused-var-21.C *** gcc-4.7.3/gcc/testsuite/g++.dg/warn/Wunused-var-21.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/g++.dg/warn/Wunused-var-21.C Wed May 7 16:03:49 2014 *************** *** 0 **** --- 1,31 ---- + // PR c++/58325 + // { dg-do compile } + // { dg-options "-Wunused" } + + void + f1 () + { + int *volatile a = new int[1]; + delete[] a; + } + + void + f2 () + { + int *b = new int[1]; + delete[] b; + } + + void + f3 () + { + int *volatile c = new int; + delete c; + } + + void + f4 () + { + int *d = new int; + delete d; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/20140425-1.c gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/20140425-1.c *** gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/20140425-1.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/20140425-1.c Fri Apr 25 10:47:44 2014 *************** *** 0 **** --- 1,23 ---- + /* PR target/60941 */ + /* Reported by Martin Husemann */ + + extern void abort (void); + + static void __attribute__((noinline)) + set (unsigned long *l) + { + *l = 31; + } + + int main (void) + { + unsigned long l; + int i; + + set (&l); + i = (int) l; + l = (unsigned long)(2U << i); + if (l != 0) + abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr56866.c gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr56866.c *** gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr56866.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr56866.c Sat Apr 27 12:28:45 2013 *************** *** 0 **** --- 1,45 ---- + /* PR target/56866 */ + + int + main () + { + #if __CHAR_BIT__ == 8 && __SIZEOF_LONG_LONG__ == 8 && __SIZEOF_INT__ == 4 && __SIZEOF_SHORT__ == 2 + unsigned long long wq[256], rq[256]; + unsigned int wi[256], ri[256]; + unsigned short ws[256], rs[256]; + unsigned char wc[256], rc[256]; + int t; + + __builtin_memset (wq, 0, sizeof wq); + __builtin_memset (wi, 0, sizeof wi); + __builtin_memset (ws, 0, sizeof ws); + __builtin_memset (wc, 0, sizeof wc); + wq[0] = 0x0123456789abcdefULL; + wi[0] = 0x01234567; + ws[0] = 0x4567; + wc[0] = 0x73; + + asm volatile ("" : : "g" (wq), "g" (wi), "g" (ws), "g" (wc) : "memory"); + + for (t = 0; t < 256; ++t) + rq[t] = (wq[t] >> 8) | (wq[t] << (sizeof (wq[0]) * __CHAR_BIT__ - 8)); + for (t = 0; t < 256; ++t) + ri[t] = (wi[t] >> 8) | (wi[t] << (sizeof (wi[0]) * __CHAR_BIT__ - 8)); + for (t = 0; t < 256; ++t) + rs[t] = (ws[t] >> 9) | (ws[t] << (sizeof (ws[0]) * __CHAR_BIT__ - 9)); + for (t = 0; t < 256; ++t) + rc[t] = (wc[t] >> 5) | (wc[t] << (sizeof (wc[0]) * __CHAR_BIT__ - 5)); + + asm volatile ("" : : "g" (rq), "g" (ri), "g" (rs), "g" (rc) : "memory"); + + if (rq[0] != 0xef0123456789abcdULL || rq[1]) + __builtin_abort (); + if (ri[0] != 0x67012345 || ri[1]) + __builtin_abort (); + if (rs[0] != 0xb3a2 || rs[1]) + __builtin_abort (); + if (rc[0] != 0x9b || rc[1]) + __builtin_abort (); + #endif + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr57568.c gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr57568.c *** gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr57568.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr57568.c Sun Jun 9 18:37:51 2013 *************** *** 0 **** --- 1,12 ---- + /* PR target/57568 */ + + extern void abort (void); + int a[6][9] = { }, b = 1, *c = &a[3][5]; + + int + main () + { + if (b && (*c = *c + *c)) + abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr57829.c gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr57829.c *** gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr57829.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr57829.c Mon Jul 8 08:17:35 2013 *************** *** 0 **** --- 1,31 ---- + /* PR rtl-optimization/57829 */ + + __attribute__((noinline, noclone)) + int + f1 (int k) + { + return 2 | ((k - 1) >> ((int) sizeof (int) * __CHAR_BIT__ - 1)); + } + + __attribute__((noinline, noclone)) + long int + f2 (long int k) + { + return 2L | ((k - 1L) >> ((int) sizeof (long int) * __CHAR_BIT__ - 1)); + } + + __attribute__((noinline, noclone)) + int + f3 (int k) + { + k &= 63; + return 4 | ((k + 2) >> 5); + } + + int + main () + { + if (f1 (1) != 2 || f2 (1L) != 2L || f3 (63) != 6 || f3 (1) != 4) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr58209.c gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr58209.c *** gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr58209.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr58209.c Wed May 7 16:00:33 2014 *************** *** 0 **** --- 1,32 ---- + /* PR tree-optimization/58209 */ + + extern void abort (void); + typedef __INTPTR_TYPE__ T; + T buf[1024]; + + T * + foo (T n) + { + if (n == 0) + return (T *) buf; + T s = (T) foo (n - 1); + return (T *) (s + sizeof (T)); + } + + T * + bar (T n) + { + if (n == 0) + return buf; + return foo (n - 1) + 1; + } + + int + main () + { + int i; + for (i = 0; i < 27; i++) + if (foo (i) != buf + i || bar (i) != buf + i) + abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr58277-1.c gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr58277-1.c *** gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr58277-1.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr58277-1.c Wed May 7 16:01:24 2014 *************** *** 0 **** --- 1,102 ---- + /* PR tree-optimization/58277 */ + + extern void abort (void); + static int a[2]; + int b, c, d, *e, f, g, h, **i = &e, k, l = 1, n, o, p; + static int **volatile j = &e; + const int m; + char u; + + int + bar () + { + u = 0; + return m; + } + + __attribute__((noinline, noclone)) void + baz () + { + asm (""); + } + + static int + foo () + { + int t1; + g = bar (); + if (l) + ; + else + for (;; h++) + { + *i = 0; + o = *e = 0; + if (p) + { + f = 0; + return 0; + } + for (;; k++) + { + int *t2 = 0; + int *const *t3[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, &t2, 0, 0, &t2, &t2, &t2, + &t2, &t2, 0, 0, 0, 0, 0, 0, 0, &t2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, &t2, 0, 0, 0, 0, 0, 0, 0, &t2, &t2, + &t2, &t2, &t2, 0, 0, 0, 0, 0, 0, 0, &t2, 0, 0, 0, + &t2, 0, 0, 0, &t2, 0, &t2, 0, 0, &t2, 0, 0, 0, 0, + 0, &t2, 0, 0, 0, 0, &t2, &t2, 0, 0, 0, 0, &t2, 0, + 0, 0, 0, 0, 0, 0, &t2, 0, 0, 0, 0, 0, &t2, 0, 0, 0, + &t2, &t2 + }; + int *const **t4[] = {&t3[0]}; + **i = 0; + if (**j) + break; + u = 0; + } + *i = *j; + t1 = 0; + for (; t1 < 5; t1++) + *i = *j; + } + *j = 0; + return 1; + } + + int + main () + { + int t5; + a[0] = 1; + { + int *t6[6] = {&d, &d}; + for (n = 1; n; n--) + if (foo()) + { + int *t7[] = {0}; + d = 0; + for (; u < 1; u++) + *i = *j; + *i = 0; + *i = 0; + int t8[5] = {0}; + *i = &t8[0]; + int *const *t9 = &t6[0]; + int *const **t10 = &t9; + *t10 = &t7[0]; + } + } + u = 0; + for (; b; b++) + for (t5 = 0; t5 < 10; t5++) + c = a[a[a[a[a[a[a[a[c]]]]]]]]; + + baz (); + + if (!a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[u]]]]]]]]]]]]]]]) + abort (); + + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr58277-2.c gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr58277-2.c *** gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr58277-2.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr58277-2.c Wed May 7 16:01:24 2014 *************** *** 0 **** --- 1,98 ---- + /* PR tree-optimization/58277 */ + + extern void abort (void); + static int a[1], b, c, e, i, j, k, m, q[] = { 1, 1 }, t; + int volatile d; + int **r; + static int ***volatile s = &r; + int f, g, o, x; + static int *volatile h = &f, *p; + char n; + + static void + fn1 () + { + b = a[a[a[a[a[a[a[a[b]]]]]]]]; + b = a[a[a[a[a[a[a[a[b]]]]]]]]; + b = a[a[b]]; + b = a[a[a[a[a[a[a[a[b]]]]]]]]; + b = a[a[a[a[a[a[a[a[b]]]]]]]]; + } + + static int + fn2 () + { + n = 0; + for (; g; t++) + { + for (;; m++) + { + d; + int *u; + int **v[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, &u, 0, 0, 0, 0, &u, &u, &u, &u, &u, &u, &u, 0, + &u, 0, &u, &u, &u, 0, &u, &u, 0, &u, &u, &u, &u, 0, &u, &u, &u, + &u, &u, 0, &u, &u, 0, &u, 0, &u, &u, 0, &u, &u, &u, &u, &u, 0, + &u, 0, 0, 0, &u, &u, &u, 0, 0, &u, &u, &u, 0, &u, 0, &u, &u + }; + int ***w[] = { &v[0] }; + if (*p) + break; + return 0; + } + *h = 0; + } + return 1; + } + + static void + fn3 () + { + int *y[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + for (; i; i++) + x = 0; + if (fn2 ()) + { + int *z[6] = { }; + for (; n < 1; n++) + *h = 0; + int t1[7]; + for (; c; c++) + o = t1[0]; + for (; e; e--) + { + int **t2 = &y[0]; + int ***t3 = &t2; + *t3 = &z[0]; + } + } + *s = 0; + for (n = 0;; n = 0) + { + int t4 = 0; + if (q[n]) + break; + *r = &t4; + } + } + + int + main () + { + for (; j; j--) + a[0] = 0; + fn3 (); + for (; k; k++) + fn1 (); + fn1 (); + + if (n) + abort (); + + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr58365.c gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr58365.c *** gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr58365.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr58365.c Wed May 7 16:04:44 2014 *************** *** 0 **** --- 1,35 ---- + /* PR rtl-optimization/58365 */ + + extern void abort (void); + + struct S + { + volatile int a; + int b, c, d, e; + } f; + static struct S g, h; + int i = 1; + + char + foo (void) + { + return i; + } + + static struct S + bar (void) + { + if (foo ()) + return f; + return g; + } + + int + main () + { + h = bar (); + f.b = 1; + if (h.b != 0) + abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr58564.c gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr58564.c *** gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr58564.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr58564.c Wed May 7 16:05:38 2014 *************** *** 0 **** --- 1,14 ---- + /* PR middle-end/58564 */ + + extern void abort (void); + int a, b; + short *c, **d = &c; + + int + main () + { + b = (0, 0 > ((&c == d) & (1 && (a ^ 1)))) | 0U; + if (b != 0) + abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr58831.c gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr58831.c *** gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr58831.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr58831.c Fri Oct 25 11:16:59 2013 *************** *** 0 **** --- 1,40 ---- + #include + + int a, *b, c, d, f, **i, p, q, *r; + short o, j; + + static int __attribute__((noinline, noclone)) + fn1 (int *p1, int **p2) + { + int **e = &b; + for (; p; p++) + *p1 = 1; + *e = *p2 = &d; + + assert (r); + + return c; + } + + static int ** __attribute__((noinline, noclone)) + fn2 (void) + { + for (f = 0; f != 42; f++) + { + int *g[3] = {0, 0, 0}; + for (o = 0; o; o--) + for (; a > 1;) + { + int **h[1] = { &g[2] }; + } + } + return &r; + } + + int + main (void) + { + i = fn2 (); + fn1 (b, i); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr59014-2.c gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr59014-2.c *** gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr59014-2.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr59014-2.c Wed May 7 16:08:28 2014 *************** *** 0 **** --- 1,23 ---- + /* PR tree-optimization/59014 */ + + __attribute__((noinline, noclone)) long long int + foo (long long int x, long long int y) + { + if (((int) x | (int) y) != 0) + return 6; + return x + y; + } + + int + main () + { + if (sizeof (long long) == sizeof (int)) + return 0; + int shift_half = sizeof (int) * __CHAR_BIT__ / 2; + long long int x = (3LL << shift_half) << shift_half; + long long int y = (5LL << shift_half) << shift_half; + long long int z = foo (x, y); + if (z != ((8LL << shift_half) << shift_half)) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr59014.c gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr59014.c *** gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr59014.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr59014.c Wed May 7 16:08:28 2014 *************** *** 0 **** --- 1,25 ---- + /* PR tree-optimization/59014 */ + + int a = 2, b, c, d; + + int + foo () + { + for (;; c++) + if ((b > 0) | (a & 1)) + ; + else + { + d = a; + return 0; + } + } + + int + main () + { + foo (); + if (d != 2) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr59101.c gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr59101.c *** gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr59101.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr59101.c Wed May 7 16:07:21 2014 *************** *** 0 **** --- 1,15 ---- + /* PR target/59101 */ + + __attribute__((noinline, noclone)) int + foo (int a) + { + return (~a & 4102790424LL) > 0 | 6; + } + + int + main () + { + if (foo (0) != 7) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr60017.c gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr60017.c *** gcc-4.7.3/gcc/testsuite/gcc.c-torture/execute/pr60017.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.c-torture/execute/pr60017.c Tue Feb 4 16:46:06 2014 *************** *** 0 **** --- 1,33 ---- + /* PR target/60017 */ + + extern void abort (void); + + struct S0 + { + short m0; + short m1; + }; + + struct S1 + { + unsigned m0:1; + char m1[2][2]; + struct S0 m2[2]; + }; + + struct S1 x = { 1, {{2, 3}, {4, 5}}, {{6, 7}, {8, 9}} }; + + struct S1 func (void) + { + return x; + } + + int main (void) + { + struct S1 ret = func (); + + if (ret.m2[1].m1 != 9) + abort (); + + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/20050922-1.c gcc-4.7.4/gcc/testsuite/gcc.dg/20050922-1.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/20050922-1.c Mon Oct 24 12:55:37 2005 --- gcc-4.7.4/gcc/testsuite/gcc.dg/20050922-1.c Mon Nov 25 11:57:01 2013 *************** *** 4,10 **** /* { dg-do run } */ /* { dg-options "-O1 -std=c99" } */ ! #include #if __INT_MAX__ == 2147483647 typedef unsigned int uint32_t; --- 4,10 ---- /* { dg-do run } */ /* { dg-options "-O1 -std=c99" } */ ! extern void abort (void); #if __INT_MAX__ == 2147483647 typedef unsigned int uint32_t; diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/20050922-2.c gcc-4.7.4/gcc/testsuite/gcc.dg/20050922-2.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/20050922-2.c Fri Nov 25 20:09:21 2005 --- gcc-4.7.4/gcc/testsuite/gcc.dg/20050922-2.c Mon Nov 25 11:57:01 2013 *************** *** 4,10 **** /* { dg-do run } */ /* { dg-options "-O1 -std=c99" } */ ! #include #if __INT_MAX__ == 2147483647 typedef unsigned int uint32_t; --- 4,11 ---- /* { dg-do run } */ /* { dg-options "-O1 -std=c99" } */ ! extern void abort (void); ! extern void exit (int); #if __INT_MAX__ == 2147483647 typedef unsigned int uint32_t; diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/atomic-store-6.c gcc-4.7.4/gcc/testsuite/gcc.dg/atomic-store-6.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/atomic-store-6.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/atomic-store-6.c Fri Oct 25 20:09:13 2013 *************** *** 0 **** --- 1,13 ---- + /* { dg-do run } */ + /* { dg-require-effective-target sync_int_128_runtime } */ + /* { dg-options "-mcx16" { target { i?86-*-* x86_64-*-* } } } */ + + __int128_t i; + + int main() + { + __atomic_store_16(&i, -1, 0); + if (i != -1) + __builtin_abort(); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/attr-weakref-1.c gcc-4.7.4/gcc/testsuite/gcc.dg/attr-weakref-1.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/attr-weakref-1.c Mon Aug 6 14:34:27 2012 --- gcc-4.7.4/gcc/testsuite/gcc.dg/attr-weakref-1.c Sun Apr 6 11:43:38 2014 *************** *** 5,16 **** // is not available on alpha*-dec-osf* and hppa*-*-hpux*. The test is // skipped rather than xfailed to suppress the warning that would otherwise // arise. ! // { dg-skip-if "" { "alpha*-dec-osf*" "*-*-darwin*" "hppa*-*-hpux*" } "*" { "" } } // For kernel modules and static RTPs, the loader treats undefined weak // symbols in the same way as undefined strong symbols. The test // therefore fails to load, so skip it. // { dg-skip-if "" { "*-*-vxworks*" && nonpic } "*" { "-non-static" } } // { dg-options "-O2" } // { dg-additional-sources "attr-weakref-1a.c" } // Copyright 2005 Free Software Foundation, Inc. --- 5,18 ---- // is not available on alpha*-dec-osf* and hppa*-*-hpux*. The test is // skipped rather than xfailed to suppress the warning that would otherwise // arise. ! // { dg-skip-if "" { "alpha*-dec-osf*" "hppa*-*-hpux*" } "*" { "" } } // For kernel modules and static RTPs, the loader treats undefined weak // symbols in the same way as undefined strong symbols. The test // therefore fails to load, so skip it. // { dg-skip-if "" { "*-*-vxworks*" && nonpic } "*" { "-non-static" } } // { dg-options "-O2" } + // { dg-additional-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } } + // { dg-additional-options "-Wl,-flat_namespace" { target *-*-darwin[89]* } } // { dg-additional-sources "attr-weakref-1a.c" } // Copyright 2005 Free Software Foundation, Inc. diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/gomp/pr58809.c gcc-4.7.4/gcc/testsuite/gcc.dg/gomp/pr58809.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/gomp/pr58809.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/gomp/pr58809.c Wed May 7 16:11:42 2014 *************** *** 0 **** --- 1,13 ---- + /* PR middle-end/58809 */ + /* { dg-do compile } */ + /* { dg-options "-fopenmp -O" } */ + + int i; + #pragma omp threadprivate (i) + + void foo() + { + _Complex int j; + #pragma omp parallel copyin (i) reduction (&&:j) + ; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/pr48189.c gcc-4.7.4/gcc/testsuite/gcc.dg/pr48189.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/pr48189.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/pr48189.c Fri Apr 19 08:18:29 2013 *************** *** 0 **** --- 1,13 ---- + /* PR tree-optimization/48189 */ + /* { dg-do compile } */ + /* { dg-options "-O --param max-predicted-iterations=0" } */ + + struct S { int s[8]; }; + + void + foo (int *x, struct S *y) + { + int i; + for (i = 0; y[i].s[i]; i++) + *x++ = y[i].s[i]; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/pr56890-1.c gcc-4.7.4/gcc/testsuite/gcc.dg/pr56890-1.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/pr56890-1.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/pr56890-1.c Mon Apr 15 08:33:56 2013 *************** *** 0 **** --- 1,15 ---- + /* PR target/56890 */ + /* Reported by Rainer Jung */ + + /* { dg-do assemble } */ + /* { dg-options "-O2" } */ + + unsigned int buggy(unsigned int min, unsigned int max) + { + if (max < 16384) { + unsigned short num16 = 0; + num16 = min + (long) ((double) (max - min + 1.0) * (num16 / (65535 + 1.0))); + return num16; + } + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/pr56890-2.c gcc-4.7.4/gcc/testsuite/gcc.dg/pr56890-2.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/pr56890-2.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/pr56890-2.c Mon Apr 15 08:33:56 2013 *************** *** 0 **** --- 1,19 ---- + /* PR target/56890 */ + /* Reported by Rainer Jung */ + + /* { dg-do assemble } */ + /* { dg-options "-O" } */ + + unsigned int buggy(unsigned int min, unsigned int max) + { + unsigned int number; + if (max < 16384) { + unsigned short num16; + num16 = min + (long) ((double) (max - min + 1.0) * (num16 / (65535 + 1.0))); + return num16; + } + else { + (number) = min + (long) ((double) (max - min + 1.0) * (number / (4294967295U + 1.0))); + } + return number; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/pr57980.c gcc-4.7.4/gcc/testsuite/gcc.dg/pr57980.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/pr57980.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/pr57980.c Tue Aug 13 13:42:28 2013 *************** *** 0 **** --- 1,19 ---- + /* PR tree-optimization/57980 */ + /* { dg-do compile } */ + /* { dg-options "-O -foptimize-sibling-calls -w" } */ + + typedef int V __attribute__ ((vector_size (2 * sizeof (int)))); + extern V f (void); + + V + bar (void) + { + return -f (); + } + + V + foo (void) + { + V v = { }; + return v - f (); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/pr59011.c gcc-4.7.4/gcc/testsuite/gcc.dg/pr59011.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/pr59011.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/pr59011.c Wed May 7 16:10:35 2014 *************** *** 0 **** --- 1,22 ---- + /* PR middle-end/59011 */ + /* { dg-do compile } */ + /* { dg-options "-std=gnu99" } */ + + void + foo (int m) + { + int a[m]; + void + bar (void) + { + { + int + baz (void) + { + return a[0]; + } + } + a[0] = 42; + } + bar (); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/pr59351.c gcc-4.7.4/gcc/testsuite/gcc.dg/pr59351.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/pr59351.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/pr59351.c Wed Dec 4 15:54:48 2013 *************** *** 0 **** --- 1,8 ---- + /* { dg-do compile } */ + /* { dg-options "-std=c99 -pedantic" } */ + + unsigned int + foo (void) + { + return sizeof ((int[]) {}); /* { dg-warning "ISO C forbids empty initializer braces" } */ + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/pr59827.c gcc-4.7.4/gcc/testsuite/gcc.dg/pr59827.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/pr59827.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/pr59827.c Thu Jan 16 14:59:46 2014 *************** *** 0 **** --- 1,15 ---- + /* PR middle-end/59827 */ + /* { dg-do compile } */ + + int + foo (int p[2][]) /* { dg-error "array type has incomplete element type" } */ + { + return p[0][0]; + } + + void + bar (void) + { + int p[2][1]; + foo (p); /* { dg-error "type of formal parameter 1 is incomplete" } */ + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/strlenopt-23.c gcc-4.7.4/gcc/testsuite/gcc.dg/strlenopt-23.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/strlenopt-23.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/strlenopt-23.c Wed Jun 4 11:59:45 2014 *************** *** 0 **** --- 1,15 ---- + /* PR tree-optimization/57230 */ + /* { dg-do run } */ + /* { dg-options "-O2" } */ + + #include "strlenopt.h" + + int + main () + { + char p[] = "hello world"; + p[0] = (char) (strlen (p) - 1); + if (strlen (p) != 11) + abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/builtin-logb-1.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/builtin-logb-1.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/builtin-logb-1.c Mon Aug 6 14:34:27 2012 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/builtin-logb-1.c Fri May 3 08:59:14 2013 *************** extern void link_error(int); *** 48,72 **** /* Test if FUNCRES(FUNC(NEG FUNCARG(ARGARG))) is false. Check the sign as well. */ #ifndef __SPU__ ! #define TESTIT3(FUNC,NEG,FUNCARG,ARGARG,FUNCRES) do { \ if (!__builtin_##FUNCRES##f(__builtin_##FUNC(NEG __builtin_##FUNCARG##f(ARGARG))) \ ! || CKSGN_F(__builtin_##FUNC##f(NEG __builtin_##FUNCARG##f(ARGARG)), NEG __builtin_##FUNCARG##f(ARGARG))) \ link_error(__LINE__); \ if (!__builtin_##FUNCRES(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG))) \ ! || CKSGN(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG)), NEG __builtin_##FUNCARG(ARGARG))) \ link_error(__LINE__); \ if (!__builtin_##FUNCRES##l(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG))) \ ! || CKSGN_L(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG)), NEG __builtin_##FUNCARG##l(ARGARG))) \ link_error(__LINE__); \ } while (0) #else ! #define TESTIT3(FUNC,NEG,FUNCARG,ARGARG,FUNCRES) do { \ /* SPU single-precision floating point format does not support Inf or Nan. */ \ if (!__builtin_##FUNCRES(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG))) \ ! || CKSGN(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG)), NEG __builtin_##FUNCARG(ARGARG))) \ link_error(__LINE__); \ if (!__builtin_##FUNCRES##l(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG))) \ ! || CKSGN_L(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG)), NEG __builtin_##FUNCARG##l(ARGARG))) \ link_error(__LINE__); \ } while (0) #endif --- 48,72 ---- /* Test if FUNCRES(FUNC(NEG FUNCARG(ARGARG))) is false. Check the sign as well. */ #ifndef __SPU__ ! #define TESTIT3(FUNC,NEG,FUNCARG,ARGARG,FUNCRES,NEG2) do { \ if (!__builtin_##FUNCRES##f(__builtin_##FUNC(NEG __builtin_##FUNCARG##f(ARGARG))) \ ! || CKSGN_F(__builtin_##FUNC##f(NEG __builtin_##FUNCARG##f(ARGARG)), NEG2 __builtin_##FUNCARG##f(ARGARG))) \ link_error(__LINE__); \ if (!__builtin_##FUNCRES(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG))) \ ! || CKSGN(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG)), NEG2 __builtin_##FUNCARG(ARGARG))) \ link_error(__LINE__); \ if (!__builtin_##FUNCRES##l(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG))) \ ! || CKSGN_L(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG)), NEG2 __builtin_##FUNCARG##l(ARGARG))) \ link_error(__LINE__); \ } while (0) #else ! #define TESTIT3(FUNC,NEG,FUNCARG,ARGARG,FUNCRES,NEG2) do { \ /* SPU single-precision floating point format does not support Inf or Nan. */ \ if (!__builtin_##FUNCRES(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG))) \ ! || CKSGN(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG)), NEG2 __builtin_##FUNCARG(ARGARG))) \ link_error(__LINE__); \ if (!__builtin_##FUNCRES##l(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG))) \ ! || CKSGN_L(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG)), NEG2 __builtin_##FUNCARG##l(ARGARG))) \ link_error(__LINE__); \ } while (0) #endif *************** foo(void) *** 173,187 **** /* Test for f(+-Inf) -> +-Inf and f(+-NaN) -> +-NaN, regardless of the radix. */ ! TESTIT3 (logb, ,inf, , isinf); ! TESTIT3 (logb, - ,inf, , isinf); ! TESTIT3 (logb, ,nan, "", isnan); ! TESTIT3 (logb, - ,nan, "", isnan); ! TESTIT3 (significand, ,inf, , isinf); ! TESTIT3 (significand, - ,inf, , isinf); ! TESTIT3 (significand, ,nan, "", isnan); ! TESTIT3 (significand, - ,nan, "", isnan); } int main() --- 173,187 ---- /* Test for f(+-Inf) -> +-Inf and f(+-NaN) -> +-NaN, regardless of the radix. */ ! TESTIT3 (logb, ,inf, , isinf, ); ! TESTIT3 (logb, - ,inf, , isinf, ); ! TESTIT3 (logb, ,nan, "", isnan, ); ! TESTIT3 (logb, - ,nan, "", isnan, -); ! TESTIT3 (significand, ,inf, , isinf, ); ! TESTIT3 (significand, - ,inf, , isinf, -); ! TESTIT3 (significand, ,nan, "", isnan, ); ! TESTIT3 (significand, - ,nan, "", isnan, -); } int main() diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr53922.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr53922.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr53922.c Sun Sep 30 17:44:04 2012 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr53922.c Sun Apr 6 11:43:38 2014 *************** *** 1,6 **** /* { dg-do run } */ /* { dg-require-weak "" } */ ! /* { dg-skip-if "No undefined weak" { hppa*-*-hpux* && { ! lp64 } } { "*" } { "" } } */ int x(int a) { --- 1,9 ---- /* { dg-do run } */ /* { dg-require-weak "" } */ ! /* { dg-skip-if "No undefined weak" { alpha*-*-osf* } } */ ! /* { dg-skip-if "No undefined weak" { hppa*-*-hpux* && { ! lp64 } } } */ ! /* { dg-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } } */ ! /* { dg-additional-options "-Wl,-flat_namespace" { target *-*-darwin[89]* } } */ int x(int a) { diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr57303.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr57303.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr57303.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr57303.c Mon Mar 17 14:38:55 2014 *************** *** 0 **** --- 1,33 ---- + /* { dg-do run } */ + + void abort (void); + + struct S0 + { + int f0; + }; + struct S1 + { + struct S0 f0; + }; + + struct S1 x = { {0} }; + struct S1 y = { {1} }; + + static void + foo (struct S0 p) + { + struct S0 *l = &y.f0; + *l = x.f0; + if (p.f0) + *l = *l; + } + + int + main () + { + foo(y.f0); + if (y.f0.f0 != 0) + abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr57417.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr57417.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr57417.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr57417.c Tue May 6 14:22:41 2014 *************** *** 0 **** --- 1,12 ---- + /* { dg-do compile } */ + + int a, b; + volatile int *c; + + void foo () + { + volatile int d[1]; + b = 0; + for (;; a--) + c = &d[b]; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr57517.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr57517.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr57517.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr57517.c Tue Mar 18 08:46:21 2014 *************** *** 0 **** --- 1,16 ---- + /* { dg-do compile } */ + + int x[1024], y[1024], z[1024], w[1024]; + void foo (void) + { + int i; + for (i = 1; i < 1024; ++i) + { + int a = x[i]; + int b = y[i]; + int c = x[i-1]; + int d = y[i-1]; + if (w[i]) + z[i] = (a + b) + (c + d); + } + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr57521.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr57521.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr57521.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr57521.c Tue Mar 18 08:46:21 2014 *************** *** 0 **** --- 1,51 ---- + /* { dg-do run } */ + /* { dg-options "-ftree-loop-if-convert" } */ + + void abort (void); + + int a, b, c, d, o = 1, p; + short e; + + int + fn1 (int * p1) + { + int f, g, h, j = 0, k = 0, l = 0; + unsigned int i; + int *m[1] = { &l }; + for (; b >= 0; b--) + { + if (*p1) + if (j >= 0) + { + int n = 1; + e = 1; + h = a ? a : 1 % n; + g = h > 0 ? 0 : h + 1; + k = c + g; + } + else + continue; + else + { + + f = d > 0 ? 0 : d + 1; + i = f; + j = 1 + i; + } + l++; + } + return k; + } + + int + main () + { + for (;; p++) + { + fn1 (&o); + break; + } + if (e != 1) + abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr57656.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr57656.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr57656.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr57656.c Tue Mar 18 08:46:21 2014 *************** *** 0 **** --- 1,13 ---- + /* { dg-do run } */ + /* { dg-options "-fstrict-overflow" } */ + + int main (void) + { + int a = -1; + int b = __INT_MAX__; + int c = 2; + int t = 1 - ((a - b) / c); // t = 1 - ( __INT_MIN__ / 2 ) + if (t != (1 - (-1 - __INT_MAX__) / 2)) + __builtin_abort(); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr57864.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr57864.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr57864.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr57864.c Wed May 7 08:05:57 2014 *************** *** 0 **** --- 1,37 ---- + /* { dg-do compile } */ + + union U { + double val; + union U *ptr; + }; + + union U *d; + double a; + int b; + int c; + + static void fn1(union U *p1, int p2, _Bool p3) + { + union U *e; + + if (p2 == 0) + a = ((union U*)((unsigned long)p1 & ~1))->val; + + if (b) { + e = p1; + } else if (c) { + e = ((union U*)((unsigned long)p1 & ~1))->ptr; + d = e; + } else { + e = 0; + d = ((union U*)0)->ptr; + } + + fn1 (e, 0, 0); + fn1 (0, 0, p3); + } + + void fn2 (void) + { + fn1 (0, 0, 0); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr58228.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr58228.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr58228.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr58228.c Fri May 23 09:46:18 2014 *************** *** 0 **** --- 1,15 ---- + /* { dg-do run } */ + + extern void abort (void); + int a[8][8] = {{1}}; + int b, c, d, e; + + int main () + { + for (c = 0; c < 8; c++) + for (b = 0; b < 2; b++) + a[b + 4][c] = a[c][0]; + if (a[4][4] != 1) + abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr58246.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr58246.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr58246.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr58246.c Wed May 7 07:59:26 2014 *************** *** 0 **** --- 1,21 ---- + /* { dg-do run } */ + + extern void abort (void); + + int a, b; + + int main () + { + int t[2] = {1,1}; + + for (a = 0; a < 2; a++) + { + b ^= t[a]; + t[a] = t[1] = 0; + } + + if (b != 1) + abort (); + + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr58539.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr58539.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr58539.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr58539.c Fri May 23 09:46:18 2014 *************** *** 0 **** --- 1,20 ---- + /* { dg-do compile } */ + /* { dg-options "-g" } */ + + int a, b; + + extern void baz (int); + + int foo (int p) + { + return p ? p : 1; + } + + void bar () + { + int *c = &a, *d = &a; + for (b = 0; b < 12; b++) + *d |= 1; + foo (*c); + baz (*c && 1); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr58779.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr58779.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr58779.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr58779.c Sat Oct 26 06:09:02 2013 *************** *** 0 **** --- 1,12 ---- + /* { dg-do run } */ + + int a, c; + + int main () + { + int e = -1; + short d = (c <= 0) ^ e; + if ((unsigned int) a - (a || d) <= (unsigned int) a) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr58941.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr58941.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr58941.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr58941.c Tue Mar 18 10:58:22 2014 *************** *** 0 **** --- 1,33 ---- + /* { dg-do run } */ + + extern void abort (void); + + typedef struct { + int msgLength; + unsigned char data[1000]; + } SMsg; + + typedef struct { + int dummy; + int d[0]; + } SData; + + int condition = 3; + + int main() + { + SMsg msg; + SData *pData = (SData*)(msg.data); + unsigned int i = 0; + for (i = 0; i < 1; i++) + { + pData->d[i] = 0; + if(condition & 1) + pData->d[i] |= 0x55; + if(condition & 2) + pData->d[i] |= 0xaa; + } + if (pData->d[0] != 0xff) + abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr59139.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr59139.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr59139.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr59139.c Mon Mar 17 14:38:55 2014 *************** *** 0 **** --- 1,20 ---- + /* { dg-do compile } */ + + int a, b, c, d, e; + int fn1(p1, p2) { return p2 == 0 ? p1 : 1 % p2; } + + void fn2() + { + c = 0; + for (;; c = (unsigned short)c) + { + b = 2; + for (; b; b = a) + { + e = fn1(2, c && 1); + d = c == 0 ? e : c; + if (d) + return; + } + } + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr59164.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr59164.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr59164.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr59164.c Wed May 7 11:51:36 2014 *************** *** 0 **** --- 1,21 ---- + /* { dg-do compile } */ + + int a, d, e; + long b[10]; + int c[10][8]; + + int fn1(p1) + { + return 1 >> p1; + } + + void fn2(void) + { + int f; + for (a=1; a <= 4; a++) + { + f = fn1(0 < c[a][0]); + if (f || d) + e = b[a] = 1; + } + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr59330.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr59330.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr59330.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr59330.c Wed May 7 10:01:36 2014 *************** *** 0 **** --- 1,17 ---- + /* { dg-do run } */ + + void free(void *ptr) + { + } + + void *foo(void) + { + return 0; + } + + int main(void) + { + void *p = foo(); + free(p); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr59715.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr59715.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr59715.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr59715.c Wed May 7 10:01:36 2014 *************** *** 0 **** --- 1,21 ---- + /* { dg-do run } */ + + extern void abort (void); + + int a = 2, b; + + int + main () + { + int c; + if (!b) + { + b = a; + c = a == 0 ? 1 : 1 % a; + if (c) + b = 0; + } + if (b != 0) + abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr60183.c gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr60183.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/torture/pr60183.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/torture/pr60183.c Mon Mar 17 14:38:55 2014 *************** *** 0 **** --- 1,39 ---- + /* { dg-do run } */ + /* { dg-require-effective-target size32plus } */ + + /* Large so an out-of-bound read will crash. */ + unsigned char c[0x30001] = { 1 }; + int j = 2; + + static void + foo (unsigned long *x, unsigned char *y) + { + int i; + unsigned long w = x[0]; + for (i = 0; i < j; i++) + { + w += *y; + y += 0x10000; + w += *y; + y += 0x10000; + } + x[1] = w; + } + + __attribute__ ((noinline, noclone)) void + bar (unsigned long *x) + { + foo (x, c); + } + + int + main () + { + unsigned long a[2] = { 0, -1UL }; + asm volatile (""::"r" (c):"memory"); + c[0] = 0; + bar (a); + if (a[1] != 0) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.dg/vect/pr60382.c gcc-4.7.4/gcc/testsuite/gcc.dg/vect/pr60382.c *** gcc-4.7.3/gcc/testsuite/gcc.dg/vect/pr60382.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.dg/vect/pr60382.c Tue May 13 13:21:47 2014 *************** *** 0 **** --- 1,32 ---- + #include "tree-vect.h" + + int a, b, c, e, f; + + void + foo () + { + for (b = 0; b < 3; b++) + if (e) + { + for (c = 0; c < 4; c++) + { + if (b) + continue; + f = 1; + for (a = 0; a < 2; a++) + f |= 1; + } + for (;;) + ; + } + } + + int + main () + { + check_vect (); + foo (); + return 0; + } + + /* { dg-final { cleanup-tree-dump "vect" } } */ diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/arm/pr54300.C gcc-4.7.4/gcc/testsuite/gcc.target/arm/pr54300.C *** gcc-4.7.3/gcc/testsuite/gcc.target/arm/pr54300.C Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/arm/pr54300.C Fri Jan 10 16:54:43 2014 *************** *** 0 **** --- 1,61 ---- + /* { dg-do run } */ + /* { dg-require-effective-target arm_neon } */ + /* { dg-options "-O2" } */ + /* { dg-add-options arm_neon } */ + + #include + #include + + struct __attribute__ ((aligned(8))) _v16u8_ { + uint8x16_t val; + _v16u8_( const int16x8_t &src) { val = vreinterpretq_u8_s16(src); } + operator int16x8_t () const { return vreinterpretq_s16_u8(val); } + }; + typedef struct _v16u8_ v16u8; + + struct __attribute__ ((aligned(4))) _v8u8_ { + uint8x8_t val; + _v8u8_( const uint8x8_t &src) { val = src; } + operator int16x4_t () const { return vreinterpret_s16_u8(val); } + }; + typedef struct _v8u8_ v8u8; + + typedef v16u8 v8i16; + typedef int32x4_t v4i32; + typedef const short cv1i16; + typedef const unsigned char cv1u8; + typedef const v8i16 cv8i16; + + static inline __attribute__((always_inline)) v8u8 zero_64(){ return vdup_n_u8( 0 ); } + + static inline __attribute__((always_inline)) v8i16 loadlo_8i16( cv8i16* p ){ + return vcombine_s16( vld1_s16( (cv1i16 *)p ), zero_64() ); + } + static inline __attribute__((always_inline)) v8i16 _loadlo_8i16( cv8i16* p, int offset ){ + return loadlo_8i16( (cv8i16*)(&((cv1u8*)p)[offset]) ); + } + + void __attribute__((noinline)) + test(unsigned short *_Inp, int32_t *_Out, + unsigned int s1v, unsigned int dv0, + unsigned int smask_v) + { + int32x4_t c = vdupq_n_s32(0); + + for(unsigned int sv=0 ; sv!=dv0 ; sv=(sv+s1v)&smask_v ) + { + int32x4_t s; + s = vmovl_s16( vget_low_s16( _loadlo_8i16( (cv8i16*) _Inp, sv ) ) ); + c = vaddq_s32( c, s ); + } + vst1q_s32( _Out, c ); + } + + main() + { + unsigned short a[4] = {1, 2, 3, 4}; + int32_t b[4] = {0, 0, 0, 0}; + test(a, b, 1, 1, ~0); + if (b[0] != 1 || b[1] != 2 || b[2] != 3 || b[3] != 4) + abort(); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/avr/pr60991.c gcc-4.7.4/gcc/testsuite/gcc.target/avr/pr60991.c *** gcc-4.7.3/gcc/testsuite/gcc.target/avr/pr60991.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/avr/pr60991.c Tue May 20 08:37:50 2014 *************** *** 0 **** --- 1,21 ---- + /* { dg-do run } */ + /* { dg-options "-O1" } */ + + /* This testcase (simplified from the original bug report) exposes + PR60991. The code generated for writing the __int24 value corrupts + the frame pointer if the offset is <= 63 + MAX_LD_OFFSET */ + + #include + + int main(void) + { + volatile char junk[62]; + junk[0] = 5; + volatile __int24 staticConfig = 0; + + if (junk[0] != 5) + abort(); + + exit(0); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/avr/torture/pr61055.c gcc-4.7.4/gcc/testsuite/gcc.target/avr/torture/pr61055.c *** gcc-4.7.3/gcc/testsuite/gcc.target/avr/torture/pr61055.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/avr/torture/pr61055.c Fri May 9 11:34:46 2014 *************** *** 0 **** --- 1,88 ---- + /* { dg-do run } */ + /* { dg-options { -fno-peephole2 } } */ + + #include + + typedef __UINT16_TYPE__ uint16_t; + typedef __INT16_TYPE__ int16_t; + typedef __UINT8_TYPE__ uint8_t; + + uint8_t __attribute__((noinline,noclone)) + fun_inc (uint8_t c0) + { + register uint8_t c asm ("r15") = c0; + + /* Force target value into R15 (lower register) */ + asm ("" : "+l" (c)); + + c++; + if (c >= 0x80) + c = 0; + + asm ("" : "+l" (c)); + + return c; + } + + uint8_t __attribute__((noinline,noclone)) + fun_dec (uint8_t c0) + { + register uint8_t c asm ("r15") = c0; + + /* Force target value into R15 (lower register) */ + asm ("" : "+l" (c)); + + c--; + if (c < 0x80) + c = 0; + + asm ("" : "+l" (c)); + + return c; + } + + + uint8_t __attribute__((noinline,noclone)) + fun_neg (uint8_t c0) + { + register uint8_t c asm ("r15") = c0; + + c = -c; + if (c >= 0x80) + c = 0; + + return c; + } + + uint16_t __attribute__((noinline,noclone)) + fun_adiw (uint16_t c0) + { + register uint16_t c asm ("r24") = c0; + + /* Force target value into R24 (for ADIW) */ + asm ("" : "+r" (c)); + + c += 2; + if (c >= 0x8000) + c = 0; + + asm ("" : "+r" (c)); + + return c; + } + + + int main() + { + if (fun_inc (0x7f) != 0) + abort(); + + if (fun_neg (0x80) != 0) + abort(); + + if (fun_adiw (0x7ffe) != 0) + abort(); + + exit (0); + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-1.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-1.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-1.c Thu Aug 28 19:36:58 2008 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-1.c Thu Dec 12 08:00:22 2013 *************** void static *** 15,21 **** avx_test (void) { union256d u; ! double e [4] __attribute__ ((aligned (8))) = {41124.234,2344.2354,8653.65635,856.43576}; u.x = test (e); --- 15,21 ---- avx_test (void) { union256d u; ! double e [4] __attribute__ ((aligned (32))) = {41124.234,2344.2354,8653.65635,856.43576}; u.x = test (e); diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-2.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-2.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-2.c Thu Aug 28 19:36:58 2008 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/avx-vmovapd-256-2.c Thu Dec 12 08:00:22 2013 *************** void static *** 15,21 **** avx_test (void) { union256d u; ! double e [4] __attribute__ ((aligned (8))) = {0.0}; u.x = _mm256_set_pd (39578.467285, 7856.342941, 85632.783567, 47563.234215); --- 15,21 ---- avx_test (void) { union256d u; ! double e [4] __attribute__ ((aligned (32))) = {0.0}; u.x = _mm256_set_pd (39578.467285, 7856.342941, 85632.783567, 47563.234215); diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/bmi-bextr-3.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/bmi-bextr-3.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/bmi-bextr-3.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/bmi-bextr-3.c Wed May 7 15:57:48 2014 *************** *** 0 **** --- 1,31 ---- + /* PR target/57623 */ + /* { dg-do assemble { target bmi } } */ + /* { dg-options "-O2 -mbmi" } */ + + #include + + unsigned int + f1 (unsigned int x, unsigned int *y) + { + return __bextr_u32 (x, *y); + } + + unsigned int + f2 (unsigned int *x, unsigned int y) + { + return __bextr_u32 (*x, y); + } + + #ifdef __x86_64__ + unsigned long long + f3 (unsigned long long x, unsigned long long *y) + { + return __bextr_u64 (x, *y); + } + + unsigned long long + f4 (unsigned long long *x, unsigned long long y) + { + return __bextr_u64 (*x, y); + } + #endif diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/bmi2-bzhi-1.c Wed May 7 15:54:34 2014 *************** *** 0 **** --- 1,31 ---- + /* PR target/57623 */ + /* { dg-do assemble { target bmi2 } } */ + /* { dg-options "-O2 -mbmi2" } */ + + #include + + unsigned int + f1 (unsigned int x, unsigned int *y) + { + return _bzhi_u32 (x, *y); + } + + unsigned int + f2 (unsigned int *x, unsigned int y) + { + return _bzhi_u32 (*x, y); + } + + #ifdef __x86_64__ + unsigned long long + f3 (unsigned long long x, unsigned long long *y) + { + return _bzhi_u64 (x, *y); + } + + unsigned long long + f4 (unsigned long long *x, unsigned long long y) + { + return _bzhi_u64 (*x, y); + } + #endif diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/nest-1.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/nest-1.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/nest-1.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/nest-1.c Tue Feb 18 13:46:38 2014 *************** *** 0 **** --- 1,14 ---- + /* { dg-do compile { target llp64 } } */ + /* { dg-options "" } */ + + void foo (int i) + { + void nested (void) + { + char arr[(1U << 31) + 4U]; + arr[i] = 0; + } + + nested (); + } + diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr30315.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr30315.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr30315.c Tue Aug 14 14:39:24 2007 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr30315.c Sat Oct 26 06:09:02 2013 *************** *** 1,6 **** /* { dg-do compile } */ /* { dg-options "-O2" } */ ! /* { dg-final { scan-assembler-times "cmp" 4 } } */ extern void abort (void); int c; --- 1,6 ---- /* { dg-do compile } */ /* { dg-options "-O2" } */ ! /* { dg-final { scan-assembler-not "cmp" } } */ extern void abort (void); int c; *************** void pluscconly##t##C (T a, T b) \ *** 34,72 **** } #define PLUSCCONLY(T, t) PLUSCCONLY1(T, t, a) PLUSCCONLY1(T, t, b) - #define MINUSCC(T, t) \ - T minuscc##t (T a, T b) \ - { \ - T difference = a - b; \ - if (difference > a) \ - abort (); \ - return difference; \ - } - - #define DECCC(T, t) \ - T deccc##t (T a, T b) \ - { \ - T difference = a - b; \ - if (difference > a) \ - c --; \ - return difference; \ - } - - #define MINUSCCONLY(T, t) \ - void minuscconly##t (T a, T b) \ - { \ - T difference = a - b; \ - if (difference > a) \ - abort (); \ - } - #define TEST(T, t) \ PLUSCC(T, t) \ PLUSCCONLY(T, t) \ ! INCCC(T, t) \ ! MINUSCC(T, t) \ ! MINUSCCONLY(T, t) \ ! DECCC(T, t) TEST (unsigned long, l) TEST (unsigned int, i) --- 34,43 ---- } #define PLUSCCONLY(T, t) PLUSCCONLY1(T, t, a) PLUSCCONLY1(T, t, b) #define TEST(T, t) \ PLUSCC(T, t) \ PLUSCCONLY(T, t) \ ! INCCC(T, t) TEST (unsigned long, l) TEST (unsigned int, i) *************** unsigned long pluscczext##C (unsigned in *** 84,97 **** PLUSCCZEXT(a) PLUSCCZEXT(b) - - #define MINUSCCZEXT \ - unsigned long minuscczext (unsigned int a, unsigned int b) \ - { \ - unsigned int difference = a - b; \ - if (difference > a) \ - abort (); \ - return difference; \ - } - - MINUSCCZEXT --- 55,57 ---- diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr44578.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr44578.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr44578.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr44578.c Tue Apr 30 05:30:20 2013 *************** *** 0 **** --- 1,31 ---- + /* { dg-do run } */ + /* { dg-options "-O2 -mtune=athlon64" } */ + + extern void abort (void); + + long double + __attribute__((noinline, noclone)) + test (float num) + { + unsigned int i; + + if (num < 0.0) + num = 0.0; + + __builtin_memcpy (&i, &num, sizeof(unsigned int)); + + return (long double)(unsigned long long) i; + } + + int + main () + { + long double x; + + x = test (0.0); + + if (x != 0.0) + abort (); + + return 0; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr54694.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr54694.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr54694.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr54694.c Thu Jan 16 16:33:30 2014 *************** *** 0 **** --- 1,11 ---- + /* { dg-do compile } */ + /* { dg-options "-O" } */ + + register void *hfp __asm__("%ebp"); /* { dg-message "note: for" } */ + + extern void g(void *); + + void f(int x) /* { dg-error "frame pointer required" } */ + { + g(__builtin_alloca(x)); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr56866.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr56866.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr56866.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr56866.c Sat Apr 27 12:28:45 2013 *************** *** 0 **** --- 1,16 ---- + /* PR target/56866 */ + /* { dg-do run } */ + /* { dg-require-effective-target xop } */ + /* { dg-options "-O3 -mxop" } */ + + #define main xop_test_main + #include "../../gcc.c-torture/execute/pr56866.c" + #undef main + + #include "xop-check.h" + + static void + xop_test (void) + { + xop_test_main (); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr57098.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr57098.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr57098.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr57098.c Tue Apr 30 05:30:20 2013 *************** *** 0 **** --- 1,10 ---- + /* { dg-do compile } */ + /* { dg-require-effective-target lp64 } */ + /* { dg-options "-msse4 -mcmodel=large" } */ + + typedef int V __attribute__((vector_size(16))); + + void foo (V *p, V *mask) + { + *p = __builtin_shuffle (*p, *mask); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr57264.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr57264.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr57264.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr57264.c Mon May 13 17:14:26 2013 *************** *** 0 **** --- 1,18 ---- + /* { dg-do compile } */ + /* { dg-options "-O1 -mcld" } */ + + void test (int x, int **pp) + { + while (x) + { + int *ip = *pp; + int *op = *pp; + while (*ip) + { + int v = *ip++; + *op++ = v + 1; + } + } + } + + /* { dg-final { scan-assembler-not "stosl" } } */ diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr57655.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr57655.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr57655.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr57655.c Fri Jul 5 14:04:26 2013 *************** *** 0 **** --- 1,10 ---- + /* { dg-do compile } */ + /* { dg-options "-mavx -mvzeroupper -mno-fp-ret-in-387" } + + /* { dg-error "x87 register return with x87 disabled" "" { target { ! ia32 } } 8 } */ + + long double + foo (long double x) + { + return __builtin_ilogbl (x); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr57777.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr57777.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr57777.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr57777.c Wed May 7 15:59:37 2014 *************** *** 0 **** --- 1,13 ---- + /* PR target/57777 */ + /* { dg-do assemble { target avx2 } } */ + /* { dg-options "-O3 -mavx2" } */ + /* { dg-additional-options "-fpic" { target fpic } } */ + + void + foo (unsigned long *x, int *y) + { + static unsigned long b[2] = { 0x0UL, 0x9908b0dfUL }; + int c; + for (c = 0; c < 512; c++) + x[c] = b[x[c] & 1UL]; + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr59839.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr59839.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr59839.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr59839.c Thu Jan 16 19:27:28 2014 *************** *** 0 **** --- 1,12 ---- + /* PR target/59839 */ + /* { dg-do compile } */ + /* { dg-options "-O0 -mavx2" } */ + + #include + + void + test (const float *x) + { + __m256i i = _mm256_set1_epi32 (1); + __m256 d = _mm256_i32gather_ps (x, i, 1); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr60909.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr60909.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr60909.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr60909.c Wed Apr 23 19:05:33 2014 *************** *** 0 **** --- 1,11 ---- + /* { dg-do compile } */ + /* { dg-options "-mrdrnd" } */ + + extern void bar (int); + + void + foo (unsigned *u) + { + int i = __builtin_ia32_rdrand32_step (u); + bar (i); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr9771-1.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr9771-1.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/pr9771-1.c Sat Jul 9 19:25:11 2011 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/pr9771-1.c Thu Jan 16 19:22:08 2014 *************** void test(void) *** 45,51 **** exit(0); } ! int main() { test(); return 0; --- 45,61 ---- exit(0); } ! /* main usually performs dynamic realignment of the stack in case ! _start would fail to properly align the stack, but for dynamic ! stack realignment we need frame pointer which is incompatible ! with -ffixed-ebp and the global register var. So, cheat here ! and hide from the compiler that main is really main. */ ! #define ASMNAME(cname) ASMNAME2 (__USER_LABEL_PREFIX__, cname) ! #define ASMNAME2(prefix, cname) STRING (prefix) cname ! #define STRING(x) #x ! int real_main() __asm (ASMNAME ("main")); ! ! int real_main() { test(); return 0; diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/sse2-movapd-1.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/sse2-movapd-1.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/sse2-movapd-1.c Wed May 19 16:10:05 2010 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/sse2-movapd-1.c Thu Dec 12 08:00:22 2013 *************** static void *** 25,31 **** TEST (void) { union128d u; ! double e[2] __attribute__ ((aligned (8))) = {2134.3343,1234.635654}; u.x = test (e); --- 25,31 ---- TEST (void) { union128d u; ! double e[2] __attribute__ ((aligned (16))) = {2134.3343,1234.635654}; u.x = test (e); diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/sse2-movapd-2.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/sse2-movapd-2.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/sse2-movapd-2.c Wed May 19 16:10:05 2010 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/sse2-movapd-2.c Thu Dec 12 08:00:22 2013 *************** static void *** 25,31 **** TEST (void) { union128d u; ! double e[2] __attribute__ ((aligned (8))) = {0.0}; u.x = _mm_set_pd (2134.3343,1234.635654); --- 25,31 ---- TEST (void) { union128d u; ! double e[2] __attribute__ ((aligned (16))) = {0.0}; u.x = _mm_set_pd (2134.3343,1234.635654); diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/i386/xop-frczX.c gcc-4.7.4/gcc/testsuite/gcc.target/i386/xop-frczX.c *** gcc-4.7.3/gcc/testsuite/gcc.target/i386/xop-frczX.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/i386/xop-frczX.c Thu Nov 28 18:14:23 2013 *************** *** 0 **** --- 1,60 ---- + /* { dg-do run } */ + /* { dg-require-effective-target xop } */ + /* { dg-options "-O2 -mxop" } */ + + #include "xop-check.h" + + #include + + void + check_mm_vmfrcz_sd (__m128d __A, __m128d __B) + { + union128d a, b, c; + double d[2]; + + a.x = __A; + b.x = __B; + c.x = _mm_frcz_sd (__A, __B); + d[0] = b.a[0] - (int)b.a[0] ; + d[1] = a.a[1]; + if (check_union128d (c, d)) + abort (); + } + + void + check_mm_vmfrcz_ss (__m128 __A, __m128 __B) + { + union128 a, b, c; + float f[4]; + + a.x = __A; + b.x = __B; + c.x = _mm_frcz_ss (__A, __B); + f[0] = b.a[0] - (int)b.a[0] ; + f[1] = a.a[1]; + f[2] = a.a[2]; + f[3] = a.a[3]; + if (check_union128 (c, f)) + abort (); + } + + static void + xop_test (void) + { + union128 a, b; + union128d c,d; + int i; + + for (i = 0; i < 4; i++) + { + a.a[i] = i + 3.5; + b.a[i] = i + 7.9; + } + for (i = 0; i < 2; i++) + { + c.a[i] = i + 3.5; + d.a[i] = i + 7.987654321; + } + check_mm_vmfrcz_ss (a.x, b.x); + check_mm_vmfrcz_sd (c.x, d.x); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/powerpc/pr57150.c gcc-4.7.4/gcc/testsuite/gcc.target/powerpc/pr57150.c *** gcc-4.7.3/gcc/testsuite/gcc.target/powerpc/pr57150.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/powerpc/pr57150.c Tue May 7 17:58:02 2013 *************** *** 0 **** --- 1,23 ---- + /* { dg-do compile { target { powerpc*-*-* } } } */ + /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ + /* { dg-require-effective-target powerpc_vsx_ok } */ + /* { dg-options "-O3 -mcpu=power7 -fcaller-saves" } */ + /* { dg-final { scan-assembler-not "lxvd2x" } } */ + /* { dg-final { scan-assembler-not "lxvw4x" } } */ + /* { dg-final { scan-assembler-not "lvx" } } */ + /* { dg-final { scan-assembler-not "stxvd2x" } } */ + /* { dg-final { scan-assembler-not "stxvw4x" } } */ + /* { dg-final { scan-assembler-not "stvx" } } */ + + /* Insure caller save on long double does not use VSX instructions. */ + + extern long double modify (long double); + + void + sum (long double *ptr, long double value, unsigned long n) + { + unsigned long i; + + for (i = 0; i < n; i++) + ptr[i] += modify (value); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c gcc-4.7.4/gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c *** gcc-4.7.3/gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c Fri Jan 3 15:54:24 2014 *************** *** 0 **** --- 1,21 ---- + /* Test accuracy of long double division (glibc bug 15396). */ + /* { dg-do run { target powerpc*-*-linux* powerpc*-*-darwin* powerpc*-*-aix* rs6000-*-* } } */ + /* { dg-options "-mlong-double-128" } */ + + extern void exit (int); + extern void abort (void); + + volatile long double a = 0x1p-1024L; + volatile long double b = 0x3p-53L; + volatile long double r; + volatile long double expected = 0x1.55555555555555555555555555p-973L; + + int + main (void) + { + r = a / b; + /* Allow error up to 2ulp. */ + if (__builtin_fabsl (r - expected) > 0x1p-1073L) + abort (); + exit (0); + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gcc.target/sh/pr57108.c gcc-4.7.4/gcc/testsuite/gcc.target/sh/pr57108.c *** gcc-4.7.3/gcc/testsuite/gcc.target/sh/pr57108.c Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gcc.target/sh/pr57108.c Mon Apr 29 11:34:26 2013 *************** *** 0 **** --- 1,19 ---- + /* { dg-do compile { target "sh*-*-*" } } */ + /* { dg-options "-O1" } */ + + void __assert_func (void) __attribute__ ((__noreturn__)) ; + + void ATATransfer (int num, int buffer) + { + int wordCount; + + while (num > 0) + { + wordCount = num * 512 / sizeof (int); + + ((0 == (buffer & 63)) ? (void)0 : __assert_func () ); + ((0 == (wordCount & 31)) ? (void)0 : __assert_func ()); + } + + + } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/array_constructor_41.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/array_constructor_41.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/array_constructor_41.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/array_constructor_41.f90 Sat May 24 15:45:02 2014 *************** *** 0 **** --- 1,33 ---- + ! { dg-do compile } + ! { dg-options "-fdump-tree-original" } + ! Test fix for PR55789 + ! + ! Contributed by Joost VandVandole + ! + MODULE M1 + CONTAINS + SUBROUTINE cp_1d_i4_sort(arr) + INTEGER(kind=4), DIMENSION(:), & + INTENT(inout) :: arr + arr = (/ (i, i = 1, SIZE(arr)) /) + END SUBROUTINE + END MODULE M1 + + PROGRAM TEST + USE M1 + INTEGER :: arr(1) + INTERFACE + SUBROUTINE mtrace() BIND(C,name="mtrace") + END SUBROUTINE + END INTERFACE + INTERFACE + SUBROUTINE muntrace() BIND(C,name="muntrace") + END SUBROUTINE + END INTERFACE + CALL mtrace() + CALL cp_1d_i4_sort(arr) + CALL muntrace() + END + + ! { dg-final { scan-tree-dump-times "realloc" 0 "original" } } + ! { dg-final { cleanup-tree-dump "original" } } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/arrayio_13.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/arrayio_13.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/arrayio_13.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/arrayio_13.f90 Sun Apr 13 02:05:02 2014 *************** *** 0 **** --- 1,14 ---- + ! { dg-do run } + ! PR60810 Bogus end-of-file + program readstrlist + character(len=80), dimension(2) :: ver + integer :: a, b, c + a = 1 + b = 2 + c = 3 + ver(1) = '285 383' + ver(2) = '985' + read( ver, *) a, b, c + if (a /= 285 .or. b /= 383 .or. c /= 985) call abort + !write ( *, *) a, b, c + end diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/associate_13.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/associate_13.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/associate_13.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/associate_13.f90 Sat May 24 15:45:02 2014 *************** *** 0 **** --- 1,21 ---- + ! { dg-do run } + ! + ! Tests the fix for PR56047. This is actually a development of + ! the test case of comment #10. + ! + ! Reported by Juergen Reuter + ! + implicit none + type :: process_variant_def_t + integer :: i + end type + type :: process_component_def_t + class(process_variant_def_t), allocatable :: variant_def + end type + type(process_component_def_t), dimension(1:2) :: initial + allocate (initial(1)%variant_def, source = process_variant_def_t (99)) + associate (template => initial(1)%variant_def) + template%i = 77 + end associate + if (initial(1)%variant_def%i .ne. 77) call abort + end diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/associate_14.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/associate_14.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/associate_14.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/associate_14.f90 Sat May 24 15:45:02 2014 *************** *** 0 **** --- 1,56 ---- + ! { dg-do compile } + ! Tests the fix for PR55984. + ! + ! Contributed by Sylwester Arabas + ! + module bcd_m + type, abstract :: bcd_t + contains + procedure(bcd_fill_halos), deferred :: fill_halos + end type + abstract interface + subroutine bcd_fill_halos(this) + import :: bcd_t + class(bcd_t ) :: this + end subroutine + end interface + end module + + module solver_m + use bcd_m + type, abstract :: solver_t + integer :: n, hlo + class(bcd_t), pointer :: bcx, bcy + contains + procedure(solver_advop), deferred :: advop + end type + abstract interface + subroutine solver_advop(this) + import solver_t + class(solver_t) :: this + end subroutine + end interface + contains + end module + + module solver_mpdata_m + use solver_m + type :: mpdata_t + class(bcd_t), pointer :: bcx, bcy + contains + procedure :: advop => mpdata_advop + end type + contains + subroutine mpdata_advop(this) + class(mpdata_t) :: this + associate ( bcx => this%bcx, bcy => this%bcy ) + call bcx%fill_halos() + end associate + end subroutine + end module + + use solver_mpdata_m + class(mpdata_t), allocatable :: that + call mpdata_advop (that) + end + diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/default_initialization_7.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/default_initialization_7.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/default_initialization_7.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/default_initialization_7.f90 Sat Feb 8 20:51:01 2014 *************** *** 0 **** --- 1,22 ---- + ! { dg-do compile } + ! + ! PR fortran/57033 + ! ICE on a structure constructor of an extended derived type whose parent + ! type last component has a default initializer + ! + ! Contributed by Tilo Schwarz + + program ice + + type m + integer i + logical :: f = .false. + end type m + + type, extends(m) :: me + end type me + + type(me) meo + + meo = me(1) ! ICE + end program ice diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/derived_external_function_1.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/derived_external_function_1.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/derived_external_function_1.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/derived_external_function_1.f90 Sun Nov 17 08:11:33 2013 *************** *** 0 **** --- 1,27 ---- + ! { dg-do run } + ! + ! PR fortran/58771 + ! + ! Contributed by Vittorio Secca + ! + ! ICEd on the write statement with f() because the derived type backend + ! declaration not built. + ! + module m + type t + integer(4) g + end type + end + + type(t) function f() result(ff) + use m + ff%g = 42 + end + + use m + character (20) :: line1, line2 + type(t) f + write (line1, *) f() + write (line2, *) 42_4 + if (line1 .ne. line2) call abort + end diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/do_5.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/do_5.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/do_5.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/do_5.f90 Thu Jun 6 16:45:04 2013 *************** *** 0 **** --- 1,29 ---- + ! { dg-do compile } + ! + ! PR fortran/54370 + ! + ! The following program was ICEing at tree-check time + ! "L()" was regarded as default-kind logical. + ! + ! Contributed by Kirill Chilikin + ! + MODULE M + CONTAINS + + LOGICAL(C_BOOL) FUNCTION L() BIND(C) + USE, INTRINSIC :: ISO_C_BINDING + L = .FALSE. + END FUNCTION + + LOGICAL(8) FUNCTION L2() BIND(C) ! { dg-warning "may not be a C interoperable kind but it is bind" } + L2 = .FALSE._8 + END FUNCTION + + SUBROUTINE S() + DO WHILE (L()) + ENDDO + DO WHILE (L2()) + ENDDO + END + + END diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/dot_product_2.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/dot_product_2.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/dot_product_2.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/dot_product_2.f90 Mon Jul 8 19:12:08 2013 *************** *** 0 **** --- 1,38 ---- + ! { dg-do compile } + ! { dg-options "-fdump-tree-original" } + ! + ! PR fortran/57785 + ! + ! Contributed by Kontantinos Anagnostopoulos + ! + ! The implicit complex conjugate was missing for DOT_PRODUCT + + + ! For the following, the compile-time simplification fails for SUM; + ! see PR fortran/56342. Hence, a manually expanded SUM is used. + + !if (DOT_PRODUCT ((/ (1.0, 2.0), (2.0, 3.0) /), (/ (1.0, 1.0), (1.0, 4.0) /)) & + ! /= SUM (CONJG ((/ (1.0, 2.0), (2.0, 3.0) /))*(/ (1.0, 1.0), (1.0, 4.0) /))) & + ! call abort () + ! + !if (ANY (MATMUL ((/ (1.0, 2.0), (2.0, 3.0) /), & + ! RESHAPE ((/ (1.0, 1.0), (1.0, 4.0) /),(/2, 1/))) /= & + ! SUM ((/ (1.0, 2.0), (2.0, 3.0) /)*(/ (1.0, 1.0), (1.0, 4.0) /)))) & + ! call abort () + + + if (DOT_PRODUCT ((/ (1.0, 2.0), (2.0, 3.0) /), (/ (1.0, 1.0), (1.0, 4.0) /)) & + /= CONJG (cmplx(1.0, 2.0)) * cmplx(1.0, 1.0) & + + CONJG (cmplx(2.0, 3.0)) * cmplx(1.0, 4.0)) & + call abort () + + if (ANY (MATMUL ((/ (1.0, 2.0), (2.0, 3.0) /), & + RESHAPE ((/ (1.0, 1.0), (1.0, 4.0) /),(/2, 1/))) & + /= cmplx(1.0, 2.0) * cmplx(1.0, 1.0) & + + cmplx(2.0, 3.0) * cmplx(1.0, 4.0))) & + call abort () + end + + + ! { dg-final { scan-tree-dump-not "abort" "original" } } + ! { dg-final { cleanup-tree-dump "original" } } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/elemental_subroutine_9.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/elemental_subroutine_9.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/elemental_subroutine_9.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/elemental_subroutine_9.f90 Fri Feb 7 23:29:44 2014 *************** *** 0 **** --- 1,39 ---- + ! { dg-do run } + ! + ! PR fortran/59906 + ! + ! Contributed by H Anlauf + ! + ! Failed generate character scalar for scalarized loop for elemantal call. + ! + program x + implicit none + call y('bbb') + contains + + subroutine y(str) + character(len=*), intent(in) :: str + character(len=len_trim(str)) :: str_aux + character(len=3) :: str3 = 'abc' + + str_aux = str + + ! Compiled but did not give correct result + if (any (str_cmp((/'aaa','bbb'/), str) .neqv. [.FALSE.,.TRUE.])) call abort + + ! Did not compile + if (any (str_cmp((/'bbb', 'aaa'/), str_aux) .neqv. [.TRUE.,.FALSE.])) call abort + + ! Verify patch + if (any (str_cmp((/'bbb', 'aaa'/), str3) .neqv. [.FALSE.,.FALSE.])) call abort + if (any (str_cmp((/'bbb', 'aaa'/), 'aaa') .neqv. [.FALSE.,.TRUE.])) call abort + + end subroutine y + + elemental logical function str_cmp(str1, str2) + character(len=*), intent(in) :: str1 + character(len=*), intent(in) :: str2 + str_cmp = (str1 == str2) + end function str_cmp + + end program x diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/extends_15.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/extends_15.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/extends_15.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/extends_15.f90 Sat Nov 2 15:56:35 2013 *************** *** 0 **** --- 1,16 ---- + ! { dg-do compile } + ! + ! PR 58355: [4.7/4.8/4.9 Regression] [F03] ICE with TYPE, EXTENDS before parent TYPE defined + ! + ! Contributed by Andrew Benson + + module ct + public :: t1 + + type, extends(t1) :: t2 ! { dg-error "has not been previously defined" } + + type :: t1 + end type + end + + ! { dg-final { cleanup-modules "ct" } } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/fmt_g_1.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/fmt_g_1.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/fmt_g_1.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/fmt_g_1.f90 Sat Feb 15 16:55:19 2014 *************** *** 0 **** --- 1,11 ---- + ! { dg-do run } + ! PR59771 Cleanup handling of Gw.0 and Gw.0Ee format + ! Test case prepared by Dominique d'Humieres + PROGRAM FOO + character(len=60) :: buffer, buffer1 + + write (buffer ,'(6(1X,1PG9.0e2))') 0.0, 0.04, 0.06, 0.4, 0.6, 243.0 + write (buffer1,'(6(1X,1PE9.0e2))') 0.0, 0.04, 0.06, 0.4, 0.6, 243.0 + + if (buffer /= buffer1) call abort + end diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/ichar_3.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/ichar_3.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/ichar_3.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/ichar_3.f90 Sat Feb 22 12:41:53 2014 *************** *** 0 **** --- 1,13 ---- + ! { dg-do compile } + ! + ! PR fortran/59599 + ! The call to ichar was triggering an ICE. + ! + ! Original testcase from Fran Martinez Fadrique + + character(1) cpk(2) + integer res(2) + cpk = 'a' + res = ichar( cpk, kind=1 ) + print *, ichar( cpk, kind=1 ) + end diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/implicit_pure_4.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/implicit_pure_4.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/implicit_pure_4.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/implicit_pure_4.f90 Thu Mar 20 19:42:15 2014 *************** *** 0 **** --- 1,22 ---- + ! { dg-do compile } + ! + ! PR fortran/60543 + ! PR fortran/60283 + ! + module m + contains + REAL(8) FUNCTION random() + CALL RANDOM_NUMBER(random) + END FUNCTION random + REAL(8) FUNCTION random2() + block + block + block + CALL RANDOM_NUMBER(random2) + end block + end block + end block + END FUNCTION random2 + end module m + + ! { dg-final { scan-module-absence "m" "IMPLICIT_PURE" } } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/init_flag_12.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/init_flag_12.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/init_flag_12.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/init_flag_12.f90 Thu Feb 20 08:00:48 2014 *************** *** 0 **** --- 1,13 ---- + ! { dg-do compile } + ! { dg-options "-fno-automatic -finit-local-zero" } + ! + ! PR 55907: [4.7/4.8/4.9 Regression] ICE with -fno-automatic -finit-local-zero + ! + ! Contributed by J.R. Garcia + + subroutine cchaine (i) + implicit none + integer :: i + character(len=i) :: chaine + write(*,*) chaine + end subroutine diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/list_read_12.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/list_read_12.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/list_read_12.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/list_read_12.f90 Sat Mar 15 23:06:44 2014 *************** *** 0 **** --- 1,11 ---- + ! { dg-do run } + ! PR58324 Bogus end of file condition + integer :: i, ios + open(99, access='stream', form='unformatted') + write(99) "5 a" + close(99) + + open(99, access='sequential', form='formatted') + read(99, *, iostat=ios) i + if (ios /= 0) call abort + end diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/namelist_77.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/namelist_77.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/namelist_77.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/namelist_77.f90 Mon Apr 29 01:25:43 2013 *************** *** 0 **** --- 1,49 ---- + ! { dg-do run } + ! + ! PR libfortran/51825 - Fortran runtime error: Cannot match namelist object name + ! Test case derived from PR. + + module local_mod + + type mytype1 + integer :: int1 + end type + + type mytype2 + integer :: n_x + integer :: n_px + end type + + type beam_init_struct + character(16) :: chars(1) = '' + type (mytype1) dummy + type (mytype2) grid(1) + end type + + end module + + program error_namelist + + use local_mod + + implicit none + + type (beam_init_struct) beam_init + + namelist / error_params / beam_init + + open (10, status='scratch') + write (10, '(a)') "&error_params" + write (10, '(a)') " beam_init%chars(1)='JUNK'" + write (10, '(a)') " beam_init%grid(1)%n_x=3" + write (10, '(a)') " beam_init%grid(1)%n_px=2" + write (10, '(a)') "/" + rewind(10) + read(10, nml=error_params) + close (10) + + if (beam_init%chars(1) /= 'JUNK') call abort + if (beam_init%grid(1)%n_x /= 3) call abort + if (beam_init%grid(1)%n_px /= 2) call abort + + end program diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/namelist_78.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/namelist_78.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/namelist_78.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/namelist_78.f90 Mon Apr 29 01:25:43 2013 *************** *** 0 **** --- 1,34 ---- + ! { dg-do run } + ! + ! PR libfortran/51825 + ! Test case regarding namelist problems with derived types + + program namelist + + type d1 + integer :: j = 0 + end type d1 + + type d2 + type(d1) k + end type d2 + + type d3 + type(d2) d(2) + end type d3 + + type(d3) der + namelist /nmlst/ der + + open (10, status='scratch') + write (10, '(a)') "&NMLST" + write (10, '(a)') " DER%D(1)%K%J = 1," + write (10, '(a)') " DER%D(2)%K%J = 2," + write (10, '(a)') "/" + rewind(10) + read(10, nml=nmlst) + close (10) + + if (der%d(1)%k%j /= 1) call abort + if (der%d(2)%k%j /= 2) call abort + end program namelist diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/namelist_79.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/namelist_79.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/namelist_79.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/namelist_79.f90 Sun Apr 28 16:50:19 2013 *************** *** 0 **** --- 1,43 ---- + ! { dg-do run } + ! PR libfortran/52512 - Cannot match namelist object name + ! Test case derived from PR. + + program testje + + implicit none + + integer :: getal, jn + type ptracer + character(len = 8) :: sname !: short name + logical :: lini !: read in a file or not + end type ptracer + type(ptracer) , dimension(3) :: tracer + namelist/namtoptrc/ getal,tracer + + ! standard values + getal = 9999 + do jn = 1, 3 + tracer(jn)%sname = 'default_name' + tracer(jn)%lini = .false. + end do + + open (10, status='scratch') + write (10, '(a)') "&namtoptrc" + write (10, '(a)') " getal = 7" + write (10, '(a)') " tracer(1) = 'DIC ', .true." + write (10, '(a)') " tracer(2) = 'Alkalini', .true." + write (10, '(a)') " tracer(3) = 'O2 ', .true." + write (10, '(a)') "/" + rewind(10) + read(10, nml=namtoptrc) + close (10) + + if (getal /= 7) call abort + if (tracer(1)%sname /= 'DIC ') call abort + if (tracer(2)%sname /= 'Alkalini') call abort + if (tracer(3)%sname /= 'O2 ') call abort + if (.not. tracer(1)%lini) call abort + if (.not. tracer(2)%lini) call abort + if (.not. tracer(3)%lini) call abort + + end program testje diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/namelist_81.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/namelist_81.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/namelist_81.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/namelist_81.f90 Sun Apr 28 17:20:06 2013 *************** *** 0 **** --- 1,43 ---- + ! { dg-do run } + ! PR56786 Error on embedded spaces + integer :: i(3) + namelist /nml/ i + + i = -42 + open(99,status='scratch') + write(99,'(a)') '&nml i(3 ) = 5 /' + rewind(99) + read(99,nml=nml) + close(99) + if (i(1)/=-42 .or. i(2)/=-42 .or. i(3)/=5) call abort() + + ! Shorten the file so the read hits EOF + + open(99,status='scratch') + write(99,'(a)') '&nml i(3 ) = 5 ' + rewind(99) + read(99,nml=nml, end=30) + call abort() + ! Shorten some more + 30 close(99) + open(99,status='scratch') + write(99,'(a)') '&nml i(3 ) =' + rewind(99) + read(99,nml=nml, end=40) + call abort() + ! Shorten some more + 40 close(99) + open(99,status='scratch') + write(99,'(a)') '&nml i(3 )' + rewind(99) + read(99,nml=nml, end=50) + call abort() + ! Shorten some more + 50 close(99) + open(99,status='scratch') + write(99,'(a)') '&nml i(3 ' + rewind(99) + read(99,nml=nml, end=60) + call abort() + 60 close(99) + end diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/proc_ptr_41.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/proc_ptr_41.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/proc_ptr_41.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/proc_ptr_41.f90 Fri Apr 26 22:26:02 2013 *************** *** 0 **** --- 1,37 ---- + ! { dg-do compile } + ! + ! PR 56968: [4.7/4.8/4.9 Regression] [F03] Issue with a procedure defined with a generic name returning procedure pointer + ! + ! Contributed by Samuel Debionne + + module test + + interface generic_name_get_proc_ptr + module procedure specific_name_get_proc_ptr + end interface + + abstract interface + double precision function foo(arg1) + real, intent(in) :: arg1 + end function + end interface + + contains + + function specific_name_get_proc_ptr() result(res) + procedure(foo), pointer :: res + end function + + end module test + + program crash_test + use :: test + + procedure(foo), pointer :: ptr + + ptr => specific_name_get_proc_ptr() + ptr => generic_name_get_proc_ptr() + + end program + + ! { dg-final { cleanup-modules "test" } } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/round_3.f08 gcc-4.7.4/gcc/testsuite/gfortran.dg/round_3.f08 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/round_3.f08 Thu May 5 01:23:46 2011 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/round_3.f08 Sat Feb 15 16:55:19 2014 *************** program pr48615 *** 16,34 **** call checkfmt("(RU,1P,G6.0E2)", 2.0, "2.E+00") call checkfmt("(RU,1P,G10.4E2)", 2.3456e5, "2.3456E+05") ! call checkfmt("(RU,F2.0)", 0.09, "1.") ! 0. call checkfmt("(RD,F3.0)", -0.09, "-1.") ! -0. ! call checkfmt("(RU,F2.0)", 2.0, "2.") ! 3. ! call checkfmt("(RD,F3.0)", -2.0, "-2.") ! -3. ! call checkfmt("(RU,F6.4)", 2.0, "2.0000") ! 2.0001 ! call checkfmt("(RD,F7.4)", -2.0, "-2.0000") ! -2.0001 ! call checkfmt("(RU,1P,E6.0E2)", 2.0, "2.E+00") ! 3.E+00 call checkfmt("(RD,1P,E7.0E2)", -2.0, "-2.E+00") ! -3.E+00 ! call checkfmt("(RU,1P,E7.1E2)", 2.5, "2.5E+00") ! 2.6E+00 call checkfmt("(RD,1P,E8.1E2)", -2.5, "-2.5E+00") ! -2.6E+00 call checkfmt("(RU,1P,E10.4E2)", 2.5, "2.5000E+00") ! 2.5001E+00 call checkfmt("(RD,1P,E11.4E2)", -2.5, "-2.5000E+00") ! -2.5001E+00 ! call checkfmt("(RU,1P,G6.0E2)", 2.0, "2.E+00") ! 3.E+00 call checkfmt("(RD,1P,G7.0E2)", -2.0, "-2.E+00") ! -3.E+00 call checkfmt("(RU,1P,G10.4E2)", 2.3456e5, "2.3456E+05") ! 2.3457E+05 call checkfmt("(RD,1P,G11.4E2)", -2.3456e5, "-2.3456E+05") ! -2.3457E+05 --- 16,59 ---- call checkfmt("(RU,1P,G6.0E2)", 2.0, "2.E+00") call checkfmt("(RU,1P,G10.4E2)", 2.3456e5, "2.3456E+05") ! call checkfmt("(RC,G10.2)", 99.5, " 0.10E+03") ! pr59774 ! call checkfmt("(RC,G10.2)", 995., " 0.10E+04") ! pr59774 ! call checkfmt("(RC,G10.3)", 999.5, " 0.100E+04") ! pr59774 ! call checkfmt("(RC,G10.3)", 9995., " 0.100E+05") ! pr59774 ! call checkfmt("(RU,G10.2)", .099, " 0.10 ") ! pr59774 ! call checkfmt("(RC,G10.1)", .095, " 0.1 ") ! pr59774 ! call checkfmt("(RU,G10.3)", .0999, " 0.100 ") ! pr59774 ! call checkfmt("(RC,G10.2)", .0995, " 0.10 ") ! pr59774 ! ! call checkfmt("(RU,G9.3)", 891.1, " 892.") ! pr59836 ! call checkfmt("(RD,G9.3)", -891.1, "-892.") ! pr59836 ! ! call checkfmt("(RU,F6.4)", 0.00006, "0.0001")! 0. ! call checkfmt("(RU,F5.3)", 0.0007, "0.001") ! 0. ! call checkfmt("(RU,F4.2)", 0.008, "0.01") ! 0. ! call checkfmt("(RU,F3.1)", 0.09, "0.1") ! 0. ! ! call checkfmt("(RU,F2.0)", 0.09, "1.") ! 0. call checkfmt("(RD,F3.0)", -0.09, "-1.") ! -0. ! call checkfmt("(RU,F2.0)", 0.9, "1.") ! pr59836 ! call checkfmt("(RC,F2.0)", 0.4, "0.") ! pr59836 ! call checkfmt("(RC,F2.0)", 0.5, "1.") ! pr59836 ! call checkfmt("(RC,F2.0)", 0.6, "1.") ! pr59836 ! call checkfmt("(RD,F3.0)", -0.9, "-1.") ! pr59836 ! call checkfmt("(RC,F3.0)", -0.4, "-0.") ! pr59836 ! call checkfmt("(RC,F3.0)", -0.5, "-1.") ! pr59836 ! call checkfmt("(RC,F3.0)", -0.6, "-1.") ! pr59836 ! call checkfmt("(RU,F2.0)", 2.0, "2.") ! 3. ! call checkfmt("(RD,F3.0)", -2.0, "-2.") ! -3. ! call checkfmt("(RU,F6.4)", 2.0, "2.0000") ! 2.0001 ! call checkfmt("(RD,F7.4)", -2.0, "-2.0000") ! -2.0001 ! call checkfmt("(RU,1P,E6.0E2)", 2.0, "2.E+00") ! 3.E+00 call checkfmt("(RD,1P,E7.0E2)", -2.0, "-2.E+00") ! -3.E+00 ! call checkfmt("(RU,1P,E7.1E2)", 2.5, "2.5E+00") ! 2.6E+00 call checkfmt("(RD,1P,E8.1E2)", -2.5, "-2.5E+00") ! -2.6E+00 call checkfmt("(RU,1P,E10.4E2)", 2.5, "2.5000E+00") ! 2.5001E+00 call checkfmt("(RD,1P,E11.4E2)", -2.5, "-2.5000E+00") ! -2.5001E+00 ! call checkfmt("(RU,1P,G6.0E2)", 2.0, "2.E+00") ! 3.E+00 call checkfmt("(RD,1P,G7.0E2)", -2.0, "-2.E+00") ! -3.E+00 call checkfmt("(RU,1P,G10.4E2)", 2.3456e5, "2.3456E+05") ! 2.3457E+05 call checkfmt("(RD,1P,G11.4E2)", -2.3456e5, "-2.3456E+05") ! -2.3457E+05 diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/shape_8.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/shape_8.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/shape_8.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/shape_8.f90 Sun Mar 9 18:44:42 2014 *************** *** 0 **** --- 1,10 ---- + ! { dg-do compile } + ! + ! PR 60450: [4.7/4.8 Regression] ICE with SHAPE intrinsic + ! + ! Contributed by Dave Allured + + real, allocatable :: x(:,:) + allocate (x(3,2), source=99.) + print *, shape (x / 10.0) + end diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/size_kind_2.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/size_kind_2.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/size_kind_2.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/size_kind_2.f90 Tue May 7 17:28:12 2013 *************** *** 0 **** --- 1,17 ---- + ! { dg-do compile } + ! { dg-options "-fdump-tree-original" } + ! + ! PR fortran/57142 + ! + integer :: B(huge(1)+3_8,2_8) + integer(8) :: var1(2), var2, var3 + + var1 = shape(B,kind=8) + var2 = size(B,kind=8) + var3 = size(B,dim=1,kind=8) + end + + ! { dg-final { scan-tree-dump "static integer.kind=8. A..\\\[2\\\] = \\\{2147483650, 2\\\};" "original" } } + ! { dg-final { scan-tree-dump "var2 = 4294967300;" "original" } } + ! { dg-final { scan-tree-dump "var3 = 2147483650;" "original" } } + ! { dg-final { cleanup-tree-dump "original" } } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/size_kind_3.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/size_kind_3.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/size_kind_3.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/size_kind_3.f90 Tue May 7 17:28:12 2013 *************** *** 0 **** --- 1,11 ---- + ! { dg-do compile } + ! + ! PR fortran/57142 + ! + integer :: B(huge(1)+3_8,2_8) + integer(8) :: var1(2), var2, var3 + + var1 = shape(B) ! { dg-error "SHAPE overflows its kind" } + var2 = size(B) ! { dg-error "SIZE overflows its kind" } + var3 = size(B,dim=1) ! { dg-error "SIZE overflows its kind" } + end diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/str_comp_optimize_1.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/str_comp_optimize_1.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/str_comp_optimize_1.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/str_comp_optimize_1.f90 Sun Mar 2 18:49:18 2014 *************** *** 0 **** --- 1,22 ---- + ! { dg-do compile } + ! { dg-options "-ffrontend-optimize" } + ! + ! PR fortran/60341 + ! An unguarded union access was wrongly enabling a frontend optimization on a + ! string comparison, leading to an ICE. + ! + ! Original testcase from Steve Chapel . + ! Reduced by Steven G. Kargl . + ! + + subroutine modelg(ncm) + implicit none + integer, parameter :: pc = 30, pm = pc - 1 + integer i + character*4 catt(pm,2) + integer ncm,iatt(pm,pc) + do i=1,ncm + if (catt(i,1)//catt(i,2).eq.'central') exit + end do + iatt(i,4)=1 + end diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/transfer_check_4.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/transfer_check_4.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/transfer_check_4.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/transfer_check_4.f90 Fri Apr 26 22:26:02 2013 *************** *** 0 **** --- 1,44 ---- + ! { dg-do compile } + ! { dg-options "-Wall" } + + ! PR 57022: [4.7/4.8/4.9 Regression] Inappropriate warning for use of TRANSFER with arrays + ! Contributed by William Clodius + + subroutine transfers (test) + + use, intrinsic :: iso_fortran_env + + integer, intent(in) :: test + + integer(int8) :: test8(8) = 0 + integer(int16) :: test16(4) = 0 + integer(int32) :: test32(2) = 0 + integer(int64) :: test64 = 0 + + select case(test) + case(0) + test64 = transfer(test8, test64) + case(1) + test64 = transfer(test16, test64) + case(2) + test64 = transfer(test32, test64) + case(3) + test8 = transfer(test64, test8, 8) + case(4) + test16 = transfer(test64, test16, 4) + case(5) + test32 = transfer(test64, test32, 2) + end select + + end subroutine + + + ! PR 53685: surprising warns about transfer with explicit character range + ! Contributed by Jos de Kloe + + subroutine mytest(byte_array,val) + integer, parameter :: r8_ = Selected_Real_Kind(15,307) ! = real*8 + character(len=1), dimension(16), intent(in) :: byte_array + real(r8_),intent(out) :: val + val = transfer(byte_array(1:8),val) + end subroutine diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/transfer_intrinsic_6.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/transfer_intrinsic_6.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/transfer_intrinsic_6.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/transfer_intrinsic_6.f90 Sun Aug 11 14:08:12 2013 *************** *** 0 **** --- 1,20 ---- + ! { dg-do compile } + ! { dg-options "-fdump-tree-original" } + ! + ! PR 58058: [4.7/4.8/4.9 Regression] Memory leak with transfer function + ! + ! Contributed by Thomas Jourdan + + implicit none + + integer, dimension(3) :: t1 + character(len=64) :: str + + t1 = (/1,2,3/) + + str = transfer(t1,str) + + end + + ! { dg-final { scan-tree-dump-times "__builtin_free" 1 "original" } } + ! { dg-final { cleanup-tree-dump "original" } } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/typebound_override_4.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/typebound_override_4.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/typebound_override_4.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/typebound_override_4.f90 Sat Jun 1 21:36:33 2013 *************** *** 0 **** --- 1,34 ---- + ! { dg-do compile } + ! + ! PR 57217: [4.7/4.8/4.9 Regression][OOP] Accepts invalid TBP overriding - lacking arguments check + ! + ! Contributed by Salvatore Filippone + + module base_mod + implicit none + type base_type + contains + procedure, pass(map) :: clone => base_clone + end type + contains + subroutine base_clone(map,mapout) + class(base_type) :: map + class(base_type) :: mapout + end subroutine + end module + + module r_mod + use base_mod + implicit none + type, extends(base_type) :: r_type + contains + procedure, pass(map) :: clone => r_clone ! { dg-error "Type/rank mismatch in argument" } + end type + contains + subroutine r_clone(map,mapout) + class(r_type) :: map + class(r_type) :: mapout + end subroutine + end module + + ! { dg-final { cleanup-modules "base_mod r_mod" } } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/typebound_proc_26.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/typebound_proc_26.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/typebound_proc_26.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/typebound_proc_26.f90 Mon Feb 3 08:16:06 2014 *************** *** 0 **** --- 1,38 ---- + ! { dg-do compile } + ! + ! PR 59941: [4.7 Regression] [OOP] ICE with polymorphic types + ! + ! Contributed by Jürgen Reuter + + module tao_random_numbers + integer, dimension(10), private :: s_buffer + integer, private :: s_buffer_end = size (s_buffer) + end module + + + module beam_structures + + private + + type :: beam_structure_t + integer, dimension(:), allocatable :: smatrix + contains + procedure :: get_smatrix + end type + + contains + + function get_smatrix (beam_structure) result (matrix) + class(beam_structure_t), intent(in) :: beam_structure + integer, dimension (size (beam_structure%smatrix)) :: matrix + end function + + end module + + + program p + use tao_random_numbers + use beam_structures + end + + ! { dg-final { cleanup-modules "tao_random_numbers beam_structures" } } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/unresolved_fixup_1.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/unresolved_fixup_1.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/unresolved_fixup_1.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/unresolved_fixup_1.f90 Sun Jan 26 14:49:47 2014 *************** *** 0 **** --- 1,44 ---- + ! { dg-do compile } + ! + ! PR fortran/58007 + ! Unresolved fixup while loading a module. + ! + ! This tests that the specification expression A%MAX_DEGREE in module BSR is + ! correctly loaded and resolved in program MAIN. + ! + ! Original testcase from Daniel Shapiro + ! Reduced by Tobias Burnus and Janus Weil + + module matrix + type :: sparse_matrix + integer :: max_degree + end type + contains + subroutine init_interface (A) + class(sparse_matrix), intent(in) :: A + end subroutine + real function get_value_interface() + end function + end module + + module ellpack + use matrix + end module + + module bsr + use matrix + type, extends(sparse_matrix) :: bsr_matrix + contains + procedure :: get_neighbors + end type + contains + function get_neighbors (A) + class(bsr_matrix), intent(in) :: A + integer :: get_neighbors(A%max_degree) + end function + end module + + program main + use ellpack + use bsr + end diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/unresolved_fixup_2.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/unresolved_fixup_2.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/unresolved_fixup_2.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/unresolved_fixup_2.f90 Sun Jan 26 14:49:47 2014 *************** *** 0 **** --- 1,36 ---- + ! { dg-do compile } + ! + ! PR fortran/58007 + ! Unresolved fiixup while loading a module. + ! + ! This tests that the specification expression A%MAX_DEGREE in module BSR is + ! correctly loaded and resolved in program MAIN. + ! + ! Original testcase from Daniel Shapiro + + module matrix + type :: sparse_matrix + integer :: max_degree + end type + end module + + module bsr + use matrix + + type, extends(sparse_matrix) :: bsr_matrix + end type + + integer :: i1 + integer :: i2 + integer :: i3 + contains + function get_neighbors (A) + type(bsr_matrix), intent(in) :: A + integer :: get_neighbors(A%max_degree) + end function + end module + + program main + use matrix + use bsr + end diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.dg/where_4.f90 gcc-4.7.4/gcc/testsuite/gfortran.dg/where_4.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.dg/where_4.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.dg/where_4.f90 Sat Mar 29 11:51:17 2014 *************** *** 0 **** --- 1,18 ---- + ! { dg-do compile } + ! PR 60522 - this used to ICE. + ! Original test case Roger Ferrer Ibanez + subroutine foo(a, b) + implicit none + integer, dimension(:), intent(inout) :: a + integer, dimension(:), intent(in) :: b + + where (b(:) > 0) + where (b(:) > 100) + a(lbound(a, 1):ubound(a, 1)) = b(lbound(b, 1):ubound(b, 1)) * b(lbound(b, 1):ubound(b, 1)) - 100 + elsewhere + a(lbound(a, 1):ubound(a, 1)) = b(lbound(b, 1):ubound(b, 1)) * b(lbound(b, 1):ubound(b, 1)) + end where + elsewhere + a(lbound(a, 1):ubound(a, 1)) = - b(lbound(b, 1):ubound(b, 1)) * b(lbound(b, 1):ubound(b, 1)) + end where + end subroutine foo diff -Nrcpad gcc-4.7.3/gcc/testsuite/gfortran.fortran-torture/compile/pr57517.f90 gcc-4.7.4/gcc/testsuite/gfortran.fortran-torture/compile/pr57517.f90 *** gcc-4.7.3/gcc/testsuite/gfortran.fortran-torture/compile/pr57517.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gfortran.fortran-torture/compile/pr57517.f90 Tue Mar 18 08:46:21 2014 *************** *** 0 **** --- 1,13 ---- + SUBROUTINE cal_helicity (uh, ph, phb, wavg, ims, ime, its, ite) + INTEGER, INTENT( IN ) :: ims, ime, its, ite + REAL, DIMENSION( ims:ime), INTENT( IN ) :: ph, phb, wavg + REAL, DIMENSION( ims:ime), INTENT( INOUT ) :: uh + INTEGER :: i + REAL :: zu + DO i = its, ite + zu = (ph(i ) + phb(i)) + (ph(i-1) + phb(i-1)) + IF (wavg(i) .GT. 0) THEN + uh(i) = uh(i) + zu + ENDIF + END DO + END SUBROUTINE cal_helicity diff -Nrcpad gcc-4.7.3/gcc/testsuite/gnat.dg/aliasing1.adb gcc-4.7.4/gcc/testsuite/gnat.dg/aliasing1.adb *** gcc-4.7.3/gcc/testsuite/gnat.dg/aliasing1.adb Sun Apr 26 19:35:04 2009 --- gcc-4.7.4/gcc/testsuite/gnat.dg/aliasing1.adb Tue May 27 20:39:22 2014 *************** package body Aliasing1 is *** 18,22 **** end Aliasing1; ! -- { dg-final { scan-tree-dump-not "__gnat_rcheck" "optimized" } } -- { dg-final { cleanup-tree-dump "optimized" } } --- 18,22 ---- end Aliasing1; ! -- { dg-final { scan-tree-dump-not "gnat_rcheck" "optimized" } } -- { dg-final { cleanup-tree-dump "optimized" } } diff -Nrcpad gcc-4.7.3/gcc/testsuite/gnat.dg/in_out_parameter4.adb gcc-4.7.4/gcc/testsuite/gnat.dg/in_out_parameter4.adb *** gcc-4.7.3/gcc/testsuite/gnat.dg/in_out_parameter4.adb Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gnat.dg/in_out_parameter4.adb Wed Sep 18 10:25:44 2013 *************** *** 0 **** --- 1,30 ---- + -- { dg-do run } + -- { dg-options "-gnat12 -gnatVa" } + + procedure In_Out_Parameter4 is + + type Enum is (E_Undetermined, E_Down, E_Up); + subtype Status_T is Enum range E_Down .. E_Up; + + function Recurse (Val : in out Integer) return Status_T is + + Result : Status_T; + + procedure Dummy (I : in out Integer) is begin null; end; + + begin + if Val > 500 then + Val := Val - 1; + Result := Recurse (Val); + return Result; + else + return E_UP; + end if; + end; + + Val : Integer := 501; + S : Status_T; + + begin + S := Recurse (Val); + end; diff -Nrcpad gcc-4.7.3/gcc/testsuite/gnat.dg/loop_optimization16.adb gcc-4.7.4/gcc/testsuite/gnat.dg/loop_optimization16.adb *** gcc-4.7.3/gcc/testsuite/gnat.dg/loop_optimization16.adb Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gnat.dg/loop_optimization16.adb Tue Aug 13 16:02:49 2013 *************** *** 0 **** --- 1,24 ---- + -- { dg-do run } + + with Loop_Optimization16_Pkg; use Loop_Optimization16_Pkg; + + procedure Loop_Optimization16 is + + Counter : Natural := 0; + + C : constant Natural := F; + + subtype Index_T is Index_Base range 1 .. Index_Base (C); + + begin + + for I in Index_T'First .. Index_T'Last loop + Counter := Counter + 1; + exit when Counter > 200; + end loop; + + if Counter > 200 then + raise Program_Error; + end if; + + end Loop_Optimization16; diff -Nrcpad gcc-4.7.3/gcc/testsuite/gnat.dg/loop_optimization16_pkg.adb gcc-4.7.4/gcc/testsuite/gnat.dg/loop_optimization16_pkg.adb *** gcc-4.7.3/gcc/testsuite/gnat.dg/loop_optimization16_pkg.adb Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gnat.dg/loop_optimization16_pkg.adb Tue Aug 13 16:02:49 2013 *************** *** 0 **** --- 1,8 ---- + package body Loop_Optimization16_Pkg is + + function F return Natural is + begin + return Natural (Index_Base'Last); + end; + + end Loop_Optimization16_Pkg; diff -Nrcpad gcc-4.7.3/gcc/testsuite/gnat.dg/loop_optimization16_pkg.ads gcc-4.7.4/gcc/testsuite/gnat.dg/loop_optimization16_pkg.ads *** gcc-4.7.3/gcc/testsuite/gnat.dg/loop_optimization16_pkg.ads Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gnat.dg/loop_optimization16_pkg.ads Tue Aug 13 16:02:49 2013 *************** *** 0 **** --- 1,7 ---- + package Loop_Optimization16_Pkg is + + type Index_Base is range 0 .. 127; + + function F return Natural; + + end Loop_Optimization16_Pkg; diff -Nrcpad gcc-4.7.3/gcc/testsuite/gnat.dg/opt28.adb gcc-4.7.4/gcc/testsuite/gnat.dg/opt28.adb *** gcc-4.7.3/gcc/testsuite/gnat.dg/opt28.adb Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gnat.dg/opt28.adb Mon Sep 23 16:16:41 2013 *************** *** 0 **** --- 1,31 ---- + with Opt28_Pkg; use Opt28_Pkg; + + package body Opt28 is + + function Full_Filename (Filename : String) return String is + Path : constant String := "PATH"; + Posix_Path : constant Posix_String := To_Posix (Path); + begin + + declare + M : constant Posix_String := Value_Of (Posix_Path); + N : constant Posix_String (1 .. M'Length) := M; + Var : constant String := To_String (Str => N); + Start_Pos : Natural := 1; + End_Pos : Natural := 1; + begin + while Start_Pos <= Var'Length loop + End_Pos := Position (Var (Start_Pos .. Var'Length)); + + if Is_File (To_Posix (Var (Start_Pos .. End_Pos - 1) & Filename)) then + return Var (Start_Pos .. End_Pos - 1) & Filename; + else + Start_Pos := End_Pos + 1; + end if; + end loop; + end; + + return ""; + end; + + end Opt28; diff -Nrcpad gcc-4.7.3/gcc/testsuite/gnat.dg/opt28.ads gcc-4.7.4/gcc/testsuite/gnat.dg/opt28.ads *** gcc-4.7.3/gcc/testsuite/gnat.dg/opt28.ads Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gnat.dg/opt28.ads Mon Sep 23 16:16:41 2013 *************** *** 0 **** --- 1,8 ---- + -- { dg-do compile } + -- { dg-options "-O2" } + + package Opt28 is + + function Full_Filename (Filename : String) return String; + + end Opt28; diff -Nrcpad gcc-4.7.3/gcc/testsuite/gnat.dg/opt28_pkg.ads gcc-4.7.4/gcc/testsuite/gnat.dg/opt28_pkg.ads *** gcc-4.7.3/gcc/testsuite/gnat.dg/opt28_pkg.ads Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gnat.dg/opt28_pkg.ads Mon Sep 23 16:16:41 2013 *************** *** 0 **** --- 1,11 ---- + package Opt28_Pkg is + + type Posix_String is array (Positive range <>) of aliased Character; + + function To_Posix (Str : String) return Posix_String; + function To_String (Str : Posix_String) return String; + function Is_File (Str : Posix_String) return Boolean; + function Value_Of (Name : Posix_String) return Posix_String; + function Position (In_Line : String) return Natural; + + end Opt28_Pkg; diff -Nrcpad gcc-4.7.3/gcc/testsuite/gnat.dg/opt32.adb gcc-4.7.4/gcc/testsuite/gnat.dg/opt32.adb *** gcc-4.7.3/gcc/testsuite/gnat.dg/opt32.adb Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gnat.dg/opt32.adb Tue Feb 18 11:15:04 2014 *************** *** 0 **** --- 1,37 ---- + -- { dg-do compile } + -- { dg-options "-O2" } + + with Ada.Containers; use Ada.Containers; + with Ada.Containers.Vectors; + + function Opt32 return Natural is + + package My_Vectors + is new Vectors (Index_Type => Natural, Element_Type => Integer); + use My_Vectors; + + V : Vector; + + function Sign_Changes return Natural is + Cur : Cursor := To_Cursor (V, 0); + R : Natural := 0; + Negative : Boolean; + begin + Negative := Element (Cur) < 0; + + loop + Cur := Next (Cur); + exit when R > 100; + + if (Element (Cur) < 0) /= Negative then + Negative := not Negative; + R := R + 1; + end if; + end loop; + + return R; + end; + + begin + return Sign_Changes; + end; diff -Nrcpad gcc-4.7.3/gcc/testsuite/gnat.dg/specs/last_bit.ads gcc-4.7.4/gcc/testsuite/gnat.dg/specs/last_bit.ads *** gcc-4.7.3/gcc/testsuite/gnat.dg/specs/last_bit.ads Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/gcc/testsuite/gnat.dg/specs/last_bit.ads Sun May 26 10:06:18 2013 *************** *** 0 **** --- 1,19 ---- + -- { dg-do compile } + + package Last_Bit is + + Max_Components : constant := 100; + type Count_Type is new Natural range 0 .. Max_Components; + subtype Index_Type is Count_Type range 1 .. Count_Type'Last; + + type List_Type is array (Index_Type range <>) of Integer; + + type Record_Type (Count : Count_Type := 0) is record + List : List_Type (1 .. Count); + end record; + + Null_Record : Record_Type (Count => 0); + + List_Last_Bit : Integer := Null_Record.List'Last_Bit; + + end Last_Bit; diff -Nrcpad gcc-4.7.3/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm gcc-4.7.4/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm *** gcc-4.7.3/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm Fri Jul 2 09:49:53 2010 --- gcc-4.7.4/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm Tue Jul 16 14:44:29 2013 *************** *** 2,13 **** // { dg-do run { target *-*-darwin* } } // { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } ! // { dg-options "-fobjc-call-cxx-cdtors -mmacosx-version-min=10.4" } // This test has no equivalent or meaning for m64/ABI V2 // { dg-xfail-run-if "No Test Avail" { *-*-darwin* && lp64 } { "-fnext-runtime" } { "" } } #include #include #define CHECK_IF(expr) if(!(expr)) abort() #ifndef CLS_HAS_CXX_STRUCTORS --- 2,16 ---- // { dg-do run { target *-*-darwin* } } // { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } ! // { dg-additional-options "-fobjc-call-cxx-cdtors -mmacosx-version-min=10.4 -framework Foundation" } // This test has no equivalent or meaning for m64/ABI V2 // { dg-xfail-run-if "No Test Avail" { *-*-darwin* && lp64 } { "-fnext-runtime" } { "" } } #include #include + #include + + //extern "C" { int printf(const char *,...); } #define CHECK_IF(expr) if(!(expr)) abort() #ifndef CLS_HAS_CXX_STRUCTORS *************** struct cxx_struct { *** 19,25 **** cxx_struct (void) { a = b = 55; } }; ! @interface Foo { int c; cxx_struct s; } --- 22,28 ---- cxx_struct (void) { a = b = 55; } }; ! @interface Foo: NSObject { int c; cxx_struct s; } *************** int main (void) *** 42,50 **** Class cls; cls = objc_getClass("Foo"); ! CHECK_IF(cls->info & CLS_HAS_CXX_STRUCTORS); cls = objc_getClass("Bar"); ! CHECK_IF(!(cls->info & CLS_HAS_CXX_STRUCTORS)); #else /* No test needed or available. */ --- 45,55 ---- Class cls; cls = objc_getClass("Foo"); ! // printf((const char *)"Foo info %lx\n",cls->info); ! CHECK_IF((cls->info & CLS_HAS_CXX_STRUCTORS) != 0); cls = objc_getClass("Bar"); ! // printf((const char *)"Bar info %lx\n",cls->info); ! CHECK_IF((cls->info & CLS_HAS_CXX_STRUCTORS) == 0); #else /* No test needed or available. */ diff -Nrcpad gcc-4.7.3/gcc/testsuite/obj-c++.dg/method-12.mm gcc-4.7.4/gcc/testsuite/obj-c++.dg/method-12.mm *** gcc-4.7.3/gcc/testsuite/obj-c++.dg/method-12.mm Mon Jun 6 22:46:58 2011 --- gcc-4.7.4/gcc/testsuite/obj-c++.dg/method-12.mm Tue Jul 16 14:44:29 2013 *************** *** 2,7 **** --- 2,8 ---- /* Author: Ziemowit Laski */ /* { dg-options "-Wstrict-selector-match" } */ /* { dg-do compile } */ + /* { dg-skip-if "Object interface removed" { *-*-darwin[1-2]* && { lp64 } } { "-fnext-runtime" } { "" } } */ #include *************** void foo(void) { *** 19,31 **** Class receiver; [receiver port]; /* { dg-warning "multiple methods named .\\+port. found" } */ ! /* { dg-message "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } 9 } */ ! /* { dg-message "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 14 } */ [receiver starboard]; /* { dg-warning "no .\\+starboard. method found" } */ ! /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 25 } */ ! /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 25 } */ ! /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 25 } */ [Class port]; /* { dg-error ".Class. is not an Objective\\-C class name or alias" } */ } --- 20,32 ---- Class receiver; [receiver port]; /* { dg-warning "multiple methods named .\\+port. found" } */ ! /* { dg-message "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } 10 } */ ! /* { dg-message "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 15 } */ [receiver starboard]; /* { dg-warning "no .\\+starboard. method found" } */ ! /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 26 } */ ! /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 26 } */ ! /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 26 } */ [Class port]; /* { dg-error ".Class. is not an Objective\\-C class name or alias" } */ } diff -Nrcpad gcc-4.7.3/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm gcc-4.7.4/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm *** gcc-4.7.3/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm Wed Sep 15 00:08:59 2010 --- gcc-4.7.4/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm Tue Jul 16 14:44:29 2013 *************** *** 1,12 **** /* Check that typedefs of ObjC classes preserve any @protocol qualifiers. */ /* { dg-do compile } */ #include @protocol CanDoStuff; ! typedef Object CanDoStuffType; ! typedef Object *CanDoStuffTypePtr; @protocol CanDoStuff - (int) dostuff; --- 1,19 ---- /* Check that typedefs of ObjC classes preserve any @protocol qualifiers. */ /* { dg-do compile } */ + + #ifdef __NEXT_RUNTIME__ + #include + #define OBJECT NSObject + #else #include + #define OBJECT Object + #endif @protocol CanDoStuff; ! typedef OBJECT CanDoStuffType; ! typedef OBJECT *CanDoStuffTypePtr; @protocol CanDoStuff - (int) dostuff; diff -Nrcpad gcc-4.7.3/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm gcc-4.7.4/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm *** gcc-4.7.3/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm Fri Oct 22 10:30:29 2010 --- gcc-4.7.4/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm Tue Jul 16 14:44:29 2013 *************** *** 6,21 **** /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mconstant-cfstrings" } */ ! #include ! @interface Foo: Object { char *cString; unsigned int len; } + (Foo *)description; @end ! @interface Bar: Object + (Foo *) getString: (int) which; @end --- 6,21 ---- /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mconstant-cfstrings" } */ ! #include ! @interface Foo: NSObject { char *cString; unsigned int len; } + (Foo *)description; @end ! @interface Bar: NSObject + (Foo *) getString: (int) which; @end diff -Nrcpad gcc-4.7.3/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm gcc-4.7.4/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm *** gcc-4.7.3/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm Mon Jun 6 22:46:58 2011 --- gcc-4.7.4/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm Tue Jul 16 14:44:29 2013 *************** *** 5,21 **** /* { dg-options "-fconstant-string-class=Foo" } */ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ #include #include "../../objc-obj-c++-shared/objc-test-suite-types.h" ! @interface Foo: Object { char *cString; unsigned int len; } + (id)description; @end ! @interface Bar: Object + (Foo *) getString: (int) which; @end --- 5,27 ---- /* { dg-options "-fconstant-string-class=Foo" } */ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ + #ifdef __NEXT_RUNTIME__ + #include + #define OBJECT NSObject + #else #include + #define OBJECT Object + #endif #include "../../objc-obj-c++-shared/objc-test-suite-types.h" ! @interface Foo: OBJECT { char *cString; unsigned int len; } + (id)description; @end ! @interface Bar: OBJECT + (Foo *) getString: (int) which; @end diff -Nrcpad gcc-4.7.3/gcc/testsuite/obj-c++.dg/syntax-error-1.mm gcc-4.7.4/gcc/testsuite/obj-c++.dg/syntax-error-1.mm *** gcc-4.7.3/gcc/testsuite/obj-c++.dg/syntax-error-1.mm Tue Oct 5 19:23:33 2010 --- gcc-4.7.4/gcc/testsuite/obj-c++.dg/syntax-error-1.mm Tue Jul 16 14:44:29 2013 *************** *** 1,7 **** --- 1,13 ---- /* Graceful handling of a syntax error. */ /* { dg-do compile } */ + #ifdef __NEXT_RUNTIME__ + #include + #define OBJECT NSObject + #else #include + #define OBJECT Object + #endif class foo { public: *************** class foo { *** 12,18 **** extern void NXLog(const char *, ...); ! @interface Test2 : Object { } - (void) foo2; @end --- 18,24 ---- extern void NXLog(const char *, ...); ! @interface Test2 : OBJECT { } - (void) foo2; @end *************** extern void NXLog(const char *, ...); *** 23,26 **** } /* { dg-error "stray .\}. between Objective\\-C\\+\\+ methods" } */ @end ! /* { dg-error "expected constructor, destructor, or type conversion before" "" { target *-*-* } 22 } */ --- 29,32 ---- } /* { dg-error "stray .\}. between Objective\\-C\\+\\+ methods" } */ @end ! /* { dg-error "expected constructor, destructor, or type conversion before" "" { target *-*-* } 28 } */ diff -Nrcpad gcc-4.7.3/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm gcc-4.7.4/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm *** gcc-4.7.3/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm Mon Jun 6 22:46:58 2011 --- gcc-4.7.4/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm Tue Jul 16 14:44:29 2013 *************** *** 6,15 **** /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ ! #include #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ ! @interface NSString: Object @end @interface NSSimpleCString : NSString { --- 6,15 ---- /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ ! #include #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ ! @interface NSString: NSObject @end @interface NSSimpleCString : NSString { diff -Nrcpad gcc-4.7.3/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm gcc-4.7.4/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm *** gcc-4.7.3/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm Mon Jun 6 22:46:58 2011 --- gcc-4.7.4/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm Tue Jul 16 14:44:29 2013 *************** *** 7,16 **** /* { dg-options "-fconstant-string-class=XStr" } */ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */ ! #include #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ ! @interface XString: Object { @protected char *bytes; } --- 7,16 ---- /* { dg-options "-fconstant-string-class=XStr" } */ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */ ! #include #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ ! @interface XString: NSObject { @protected char *bytes; } diff -Nrcpad gcc-4.7.3/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm gcc-4.7.4/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm *** gcc-4.7.3/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm Mon Jun 6 22:46:58 2011 --- gcc-4.7.4/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm Tue Jul 16 14:44:29 2013 *************** *** 5,14 **** /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ ! #include #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ ! @interface NSConstantString: Object { char *cString; unsigned int len; } --- 5,14 ---- /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ ! #include #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ ! @interface NSConstantString: NSObject { char *cString; unsigned int len; } diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/encode-7-next-64bit.m gcc-4.7.4/gcc/testsuite/objc.dg/encode-7-next-64bit.m *** gcc-4.7.3/gcc/testsuite/objc.dg/encode-7-next-64bit.m Mon Jun 6 22:46:58 2011 --- gcc-4.7.4/gcc/testsuite/objc.dg/encode-7-next-64bit.m Tue Jul 16 14:44:29 2013 *************** *** 4,27 **** /* { dg-require-effective-target lp64 } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ #include #include #include ! #include #include "../objc-obj-c++-shared/runtime.h" ! #define CHECK_IF(E) if (!(E)) abort () @class NSDictionary, NSFont, NSError, _NSATSTypesetterGuts, NSString, NSMenu, NSArray; - typedef unsigned char UInt8; - typedef const signed long OSStatus; - typedef unsigned long CFIndex; - typedef unsigned int UInt32; - typedef UInt32 FourCharCode; - typedef FourCharCode OSType; - struct FSRef { UInt8 hidden[80]; }; --- 4,28 ---- /* { dg-require-effective-target lp64 } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ + /* { dg-additional-options "-framework Foundation" } */ #include #include #include ! #include #include "../objc-obj-c++-shared/runtime.h" ! extern int printf(char *,...); ! void CHECK_IF(const char *s1, const char *s2) ! { ! if (strcmp(s1,s2) != 0) { ! printf ("'%s'\n'%s'\n",s1,s2); ! abort (); ! } ! } @class NSDictionary, NSFont, NSError, _NSATSTypesetterGuts, NSString, NSMenu, NSArray; struct FSRef { UInt8 hidden[80]; }; *************** typedef struct { *** 99,108 **** unsigned int parameterMask; } NSErrorUserInfoFormatter; ! typedef Object MyObj; ! typedef Object *MyPtr; ! @interface Foo: Object { NSATSGlyphStorageRun r; } - (NSError *)_errorWithOSStatus:(OSStatus)inOSStatus ref1:(const FSRef *)inRef1 ref2:(const struct FSRef *)inRef2 --- 100,109 ---- unsigned int parameterMask; } NSErrorUserInfoFormatter; ! typedef NSObject MyObj; ! typedef NSObject *MyPtr; ! @interface Foo: NSObject { NSATSGlyphStorageRun r; } - (NSError *)_errorWithOSStatus:(OSStatus)inOSStatus ref1:(const FSRef *)inRef1 ref2:(const struct FSRef *)inRef2 *************** typedef Object *MyPtr; *** 114,120 **** - (id)str1:(const char *)str1 str2:(char *)str2 str3:(char *const)str3 str4:(const char *const)str4; - (oneway void)foo1:(Foo *)foo1 foo2:(const Foo *)foo2 foo3:(Foo *const)foo3 foo4:(const Foo *const)foo4; - (in const char *)sel1:(const SEL)sel1 id1:(const id)id1; ! - (inout id)obj1:(const MyPtr)obj1 obj2:(Object *const)obj2 obj3:(MyObj *const)obj3; + (ComponentInstance)_defaultScriptingComponent; - (NSString *)_formatCocoaErrorString:(NSString *)formatString parameters:(const char *)parameters applicableFormatters:(NSErrorUserInfoFormatter **)formatters count:(int)numFormatters; --- 115,121 ---- - (id)str1:(const char *)str1 str2:(char *)str2 str3:(char *const)str3 str4:(const char *const)str4; - (oneway void)foo1:(Foo *)foo1 foo2:(const Foo *)foo2 foo3:(Foo *const)foo3 foo4:(const Foo *const)foo4; - (in const char *)sel1:(const SEL)sel1 id1:(const id)id1; ! - (inout id)obj1:(const MyPtr)obj1 obj2:(NSObject *const)obj2 obj3:(MyObj *const)obj3; + (ComponentInstance)_defaultScriptingComponent; - (NSString *)_formatCocoaErrorString:(NSString *)formatString parameters:(const char *)parameters applicableFormatters:(NSErrorUserInfoFormatter **)formatters count:(int)numFormatters; *************** NSRange globalRange; *** 156,162 **** - (in const char *)sel1:(const SEL)sel1 id1:(const id)id1 { return "Hello"; } ! - (inout id)obj1:(const MyPtr)obj1 obj2:(Object *const)obj2 obj3:(MyObj *const)obj3 { return self; } + (ComponentInstance)_defaultScriptingComponent { --- 157,163 ---- - (in const char *)sel1:(const SEL)sel1 id1:(const id)id1 { return "Hello"; } ! - (inout id)obj1:(const MyPtr)obj1 obj2:(NSObject *const)obj2 obj3:(MyObj *const)obj3 { return self; } + (ComponentInstance)_defaultScriptingComponent { *************** NSRange globalRange; *** 191,196 **** --- 192,199 ---- } @end + /* FIXME: we produce different output c.f. the system compiler on OSX10.6+ */ + int main(void) { Class fooClass = objc_getClass ("Foo"); Method meth; *************** int main(void) { *** 199,270 **** Ivar ivar; meth = class_getInstanceMethod (fooClass, @selector(_errorWithOSStatus:ref1:ref2:reading:)); ! CHECK_IF (!strcmp (method_getTypeEncoding(meth), "@44@0:8q16r^{FSRef=[80C]}24r^{FSRef=[80C]}32c40")); meth = class_getInstanceMethod (fooClass, @selector(_attributeRunForCharacterAtIndex:)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "r^{?=@@QQ^Qffff{_NSRect={_NSPoint=ff}{_NSSize=ff}}q^qQ^Q@@@:::****{?=b1b1b1b1b1b27}}24@0:8Q16")); meth = class_getInstanceMethod (fooClass, @selector(_getATSTypesetterGuts:)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "r@24@0:8r:16")); meth = class_getInstanceMethod (fooClass, @selector(resumeWithSuspensionID:and:)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "v32@0:8^{__NSAppleEventManagerSuspension=}16r^Q24")); meth = class_getInstanceMethod (fooClass, @selector(anotherMeth:and:and:)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "r@40@0:8r:16r@24r@32")); meth = class_getInstanceMethod (fooClass, @selector(str1:str2:str3:str4:)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "@48@0:8r*16*24*32r*40")); meth = class_getInstanceMethod (fooClass, @selector(foo1:foo2:foo3:foo4:)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "Vv48@0:8@16r@24@32r@40")); meth = class_getInstanceMethod (fooClass, @selector(sel1:id1:)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "rn*32@0:8r:16r@24")); meth = class_getInstanceMethod (fooClass, @selector(obj1:obj2:obj3:)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "N@40@0:8r@16@24^{Object=#}32")); meth = class_getClassMethod (fooClass, @selector(_defaultScriptingComponent)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "^{ComponentInstanceRecord=[1q]}16@0:8")); meth = class_getInstanceMethod (fooClass, @selector(_formatCocoaErrorString:parameters:applicableFormatters:count:)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "@44@0:8@16r*24^^{?}32i40")); meth = class_getInstanceMethod (fooClass, @selector(formatter_func:run:)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "^{?=^?@I}32@0:8@16r^^{?}24")); meth = class_getInstanceMethod (fooClass, @selector(_forgetWord:inDictionary:)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "c32@0:8nO@16nO@24")); meth = class_getInstanceMethod (fooClass, @selector(_registerServicesMenu:withSendTypes:andReturnTypes:addToList:)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "v44@0:8@16r^*24r^*32c40")); meth = class_getClassMethod (fooClass, @selector(_proxySharePointer)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "^^{__CFSet}16@0:8")); meth = class_getInstanceMethod (fooClass, @selector(_checkGrammarInString:language:details:)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "{_NSRange=II}40@0:8n@16nO@24oO^@32")); meth = class_getInstanceMethod (fooClass, @selector(_resolvePositionalStakeGlyphsForLineFragment:lineFragmentRect:minPosition:maxPosition:maxLineFragmentWidth:breakHint:)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "B60@0:8^{__CTLine=}16{_NSRect={_NSPoint=ff}{_NSSize=ff}}24f40f44f48^Q52")); meth = class_getClassMethod (fooClass, @selector(findVoiceByIdentifier:returningCreator:returningID:)); ! CHECK_IF (!strcmp (method_getTypeEncoding (meth), "c40@0:8@16^I24^I32")); ivars = class_copyIvarList (fooClass, &ivar_count); ! CHECK_IF (ivar_count == 1); ivar = ivars[0]; ! CHECK_IF (!strcmp (ivar_getName(ivar), "r")); ! CHECK_IF (!strcmp (ivar_getTypeEncoding(ivar), "{?=\"_attributes\"@\"NSDictionary\"\"_font\"@\"NSFont\"\"_characterLength\"" ! "Q\"_nominalGlyphLocation\"Q\"p\"^Q\"_defaultLineHeight\"f\"_defaultBaselineOffset\"" "f\"_horizExpansion\"f\"_baselineDelta\"f\"_attachmentBBox\"{_NSRect=\"origin\"" "{_NSPoint=\"x\"f\"y\"f}\"size\"{_NSSize=\"width\"f\"height\"f}}\"ll\"q\"llp\"^q\"ull\"" "Q\"ullp\"^Q\"a\"@\"a1\"@\"a2\"@\"b\":\"b1\":\"b2\":\"str1\"*\"str2\"*\"str3\"*\"str4\"" "*\"_rFlags\"{?=\"_isAttachmentRun\"b1\"_hasPositionalStake\"b1\"_isDefaultFace\"" ! "b1\"_hasCombiningMarks\"b1\"_isScreenFont\"b1\"_reserved\"b27}}")); ! return 0; } --- 202,277 ---- Ivar ivar; meth = class_getInstanceMethod (fooClass, @selector(_errorWithOSStatus:ref1:ref2:reading:)); ! CHECK_IF (method_getTypeEncoding(meth), "@40@0:8i16r^{FSRef=[80C]}20r^{FSRef=[80C]}28c36"); meth = class_getInstanceMethod (fooClass, @selector(_attributeRunForCharacterAtIndex:)); ! CHECK_IF (method_getTypeEncoding (meth), "r^{?=@@qq^qffff{_NSRect={_NSPoint=ff}{_NSSize=ff}}q^qQ^Q@@@:::****{?=b1b1b1b1b1b27}}24@0:8q16"); ! /* clang produces: r^{?=@@qq^qffff{_NSRect={_NSPoint=ff}{_NSSize=ff}}q^qQ^Q@@@::^{objc_selector}****{?=b1b1b1b1b1b27}}24@0:8q16 */ meth = class_getInstanceMethod (fooClass, @selector(_getATSTypesetterGuts:)); ! CHECK_IF (method_getTypeEncoding (meth), "r@24@0:8r:16"); ! /* "@24@0:8r^{objc_selector=}16" */ meth = class_getInstanceMethod (fooClass, @selector(resumeWithSuspensionID:and:)); ! CHECK_IF (method_getTypeEncoding (meth), "v32@0:8^{__NSAppleEventManagerSuspension=}16r^q24"); meth = class_getInstanceMethod (fooClass, @selector(anotherMeth:and:and:)); ! CHECK_IF (method_getTypeEncoding (meth), "r@40@0:8r:16r@24r@32"); meth = class_getInstanceMethod (fooClass, @selector(str1:str2:str3:str4:)); ! CHECK_IF (method_getTypeEncoding (meth), "@48@0:8r*16*24*32r*40"); meth = class_getInstanceMethod (fooClass, @selector(foo1:foo2:foo3:foo4:)); ! CHECK_IF (method_getTypeEncoding (meth), "Vv48@0:8@16r@24@32r@40"); meth = class_getInstanceMethod (fooClass, @selector(sel1:id1:)); ! CHECK_IF (method_getTypeEncoding (meth), "rn*32@0:8r:16r@24"); meth = class_getInstanceMethod (fooClass, @selector(obj1:obj2:obj3:)); ! CHECK_IF (method_getTypeEncoding (meth), "N@40@0:8r@16@24^{NSObject=#}32"); meth = class_getClassMethod (fooClass, @selector(_defaultScriptingComponent)); ! CHECK_IF (method_getTypeEncoding (meth), "^{ComponentInstanceRecord=[1q]}16@0:8"); meth = class_getInstanceMethod (fooClass, @selector(_formatCocoaErrorString:parameters:applicableFormatters:count:)); ! CHECK_IF (method_getTypeEncoding (meth), "@44@0:8@16r*24^^{?}32i40"); meth = class_getInstanceMethod (fooClass, @selector(formatter_func:run:)); ! CHECK_IF (method_getTypeEncoding (meth), "^{?=^?@I}32@0:8@16r^^{?}24"); meth = class_getInstanceMethod (fooClass, @selector(_forgetWord:inDictionary:)); ! CHECK_IF (method_getTypeEncoding (meth), "c32@0:8nO@16nO@24"); meth = class_getInstanceMethod (fooClass, @selector(_registerServicesMenu:withSendTypes:andReturnTypes:addToList:)); ! CHECK_IF (method_getTypeEncoding (meth), "v44@0:8@16r^*24r^*32c40"); meth = class_getClassMethod (fooClass, @selector(_proxySharePointer)); ! CHECK_IF (method_getTypeEncoding (meth), "^^{__CFSet}16@0:8"); meth = class_getInstanceMethod (fooClass, @selector(_checkGrammarInString:language:details:)); ! CHECK_IF (method_getTypeEncoding (meth), "{_NSRange=II}40@0:8n@16nO@24oO^@32"); meth = class_getInstanceMethod (fooClass, @selector(_resolvePositionalStakeGlyphsForLineFragment:lineFragmentRect:minPosition:maxPosition:maxLineFragmentWidth:breakHint:)); ! CHECK_IF (method_getTypeEncoding (meth), "B60@0:8^{__CTLine=}16{_NSRect={_NSPoint=ff}{_NSSize=ff}}24f40f44f48^q52"); meth = class_getClassMethod (fooClass, @selector(findVoiceByIdentifier:returningCreator:returningID:)); ! CHECK_IF (method_getTypeEncoding (meth), "c40@0:8@16^I24^I32"); ivars = class_copyIvarList (fooClass, &ivar_count); ! if (ivar_count != 1) { ! abort (); ! } ivar = ivars[0]; ! CHECK_IF (ivar_getName(ivar), "r"); ! CHECK_IF (ivar_getTypeEncoding(ivar), "{?=\"_attributes\"@\"NSDictionary\"\"_font\"@\"NSFont\"\"_characterLength\"" ! "q\"_nominalGlyphLocation\"q\"p\"^q\"_defaultLineHeight\"f\"_defaultBaselineOffset\"" "f\"_horizExpansion\"f\"_baselineDelta\"f\"_attachmentBBox\"{_NSRect=\"origin\"" "{_NSPoint=\"x\"f\"y\"f}\"size\"{_NSSize=\"width\"f\"height\"f}}\"ll\"q\"llp\"^q\"ull\"" "Q\"ullp\"^Q\"a\"@\"a1\"@\"a2\"@\"b\":\"b1\":\"b2\":\"str1\"*\"str2\"*\"str3\"*\"str4\"" "*\"_rFlags\"{?=\"_isAttachmentRun\"b1\"_hasPositionalStake\"b1\"_isDefaultFace\"" ! "b1\"_hasCombiningMarks\"b1\"_isScreenFont\"b1\"_reserved\"b27}}"); ! /*"{?=\"_attributes\"@\"NSDictionary\"\"_font\"@\"NSFont\"\"_characterLength\"q\"_nominalGlyphLocation\"q\"p\"^q\"_defaultLineHeight\"f\"_defaultBaselineOffset\"f\"_horizExpansion\"f\"_baselineDelta\"f\"_attachmentBBox\"{_NSRect=\"origin\"{_NSPoint=\"x\"f\"y\"f}\"size\"{_NSSize=\"width\"f\"height\"f}}\"ll\"q\"llp\"^q\"ull\"Q\"ullp\"^Q\"a\"@\"a1\"@\"a2\"@\"b\":\"b1\":\"b2\"^{objc_selector}\"str1\"*\"str2\"*\"str3\"*\"str4\"*\"_rFlags\"{?=\"_isAttachmentRun\"b1\"_hasPositionalStake\"b1\"_isDefaultFace\"b1\"_hasCombiningMarks\"b1\"_isScreenFont\"b1\"_reserved\"b27}}"*/ return 0; } diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/image-info.m gcc-4.7.4/gcc/testsuite/objc.dg/image-info.m *** gcc-4.7.3/gcc/testsuite/objc.dg/image-info.m Fri Feb 18 00:07:38 2011 --- gcc-4.7.4/gcc/testsuite/objc.dg/image-info.m Tue Jul 16 14:44:29 2013 *************** *** 7,26 **** /* { dg-skip-if "NeXT-only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-freplace-objc-classes" } */ ! #include ! #include extern void abort(void); #define CHECK_IF(expr) if(!(expr)) abort(); ! @interface Object (TEST_SUITE_C1) - init; @end ! @implementation Object (TEST_SUITE_C1) - init {return self;} @end ! @interface Base: Object { @public int a; float b; --- 7,25 ---- /* { dg-skip-if "NeXT-only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-freplace-objc-classes" } */ ! #include extern void abort(void); #define CHECK_IF(expr) if(!(expr)) abort(); ! @interface NSObject (TEST_SUITE_C1) - init; @end ! @implementation NSObject (TEST_SUITE_C1) - init {return self;} @end ! @interface Base: NSObject { @public int a; float b; diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/method-6.m gcc-4.7.4/gcc/testsuite/objc.dg/method-6.m *** gcc-4.7.3/gcc/testsuite/objc.dg/method-6.m Mon Jun 6 22:46:58 2011 --- gcc-4.7.4/gcc/testsuite/objc.dg/method-6.m Tue Jul 16 14:44:29 2013 *************** *** 4,17 **** /* { dg-do compile } */ /* { dg-options "-Wstrict-selector-match" } */ #include @interface Base - (unsigned)port; @end @interface Derived: Base ! - (Object *)port; + (Protocol *)port; - (id)starboard; @end --- 4,24 ---- /* { dg-do compile } */ /* { dg-options "-Wstrict-selector-match" } */ + #ifdef __NEXT_RUNTIME__ + #include + #define OBJECT NSObject + #else + #include #include + #define OBJECT Object + #endif @interface Base - (unsigned)port; @end @interface Derived: Base ! - (OBJECT *)port; + (Protocol *)port; - (id)starboard; @end *************** void foo(void) { *** 20,32 **** Class receiver; [receiver port]; /* { dg-warning "multiple methods named .\\+port. found" } */ ! /* { dg-message "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } 10 } */ ! /* { dg-message "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 15 } */ [receiver starboard]; /* { dg-warning "no .\\+starboard. method found" } */ ! /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 26 } */ ! /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 26 } */ ! /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 26 } */ [Class port]; /* { dg-error ".Class. is not an Objective\\-C class name or alias" } */ } --- 27,39 ---- Class receiver; [receiver port]; /* { dg-warning "multiple methods named .\\+port. found" } */ ! /* { dg-message "using .\\-\\(unsigned( int)?\\)port." "" { target *-*-* } 17 } */ ! /* { dg-message "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 22 } */ [receiver starboard]; /* { dg-warning "no .\\+starboard. method found" } */ ! /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 33 } */ ! /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 33 } */ ! /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 33 } */ [Class port]; /* { dg-error ".Class. is not an Objective\\-C class name or alias" } */ } diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/no-extra-load.m gcc-4.7.4/gcc/testsuite/objc.dg/no-extra-load.m *** gcc-4.7.3/gcc/testsuite/objc.dg/no-extra-load.m Thu Mar 25 22:25:05 2010 --- gcc-4.7.4/gcc/testsuite/objc.dg/no-extra-load.m Tue Jul 16 14:44:29 2013 *************** *** 1,7 **** /* { dg-do compile { target *-*-darwin* } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ ! #import main() { [NSObject new]; } /* { dg-final { scan-assembler-not "L_objc_msgSend\\\$non_lazy_ptr" } } */ --- 1,7 ---- /* { dg-do compile { target *-*-darwin* } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ ! #include main() { [NSObject new]; } /* { dg-final { scan-assembler-not "L_objc_msgSend\\\$non_lazy_ptr" } } */ diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/objc-foreach-4.m gcc-4.7.4/gcc/testsuite/objc.dg/objc-foreach-4.m *** gcc-4.7.3/gcc/testsuite/objc.dg/objc-foreach-4.m Sun Jan 9 16:24:46 2011 --- gcc-4.7.4/gcc/testsuite/objc.dg/objc-foreach-4.m Tue Jul 16 14:44:29 2013 *************** *** 1,17 **** /* Test for valid objc objects used in a for-each statement. */ /* FIXME: Run this test with the GNU runtime as well. */ ! /* { dg-do compile { target *-*-darwin* } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ ! #include ! #include ! ! #if defined (__NEXT_RUNTIME__) && defined (__LP64__) ! /* Fudge the class reference until we implement the compiler-side ! const strings. */ ! extern void *_NSConstantStringClassReference; ! #endif // gcc -o foo foo.m -framework Foundation --- 1,13 ---- /* Test for valid objc objects used in a for-each statement. */ /* FIXME: Run this test with the GNU runtime as well. */ ! /* { dg-do run { target *-*-darwin* } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ + /* { dg-additional-options "-framework Foundation" { target { *-*-darwin* } } } */ ! #include ! #include ! #include // gcc -o foo foo.m -framework Foundation diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/objc-foreach-5.m gcc-4.7.4/gcc/testsuite/objc.dg/objc-foreach-5.m *** gcc-4.7.3/gcc/testsuite/objc.dg/objc-foreach-5.m Sun Jan 9 16:24:46 2011 --- gcc-4.7.4/gcc/testsuite/objc.dg/objc-foreach-5.m Tue Jul 16 14:44:29 2013 *************** *** 2,9 **** /* { dg-do compile { target *-*-darwin* } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ ! #import NSArray * createTestVictim(unsigned capacity) { NSMutableArray * arr = [[NSMutableArray alloc] initWithCapacity:capacity]; --- 2,11 ---- /* { dg-do compile { target *-*-darwin* } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ + /* { dg-additional-options "-framework Foundation" { target { *-*-darwin* } } } */ ! #include ! #include NSArray * createTestVictim(unsigned capacity) { NSMutableArray * arr = [[NSMutableArray alloc] initWithCapacity:capacity]; diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/pr23214.m gcc-4.7.4/gcc/testsuite/objc.dg/pr23214.m *** gcc-4.7.3/gcc/testsuite/objc.dg/pr23214.m Mon Jun 6 22:46:58 2011 --- gcc-4.7.4/gcc/testsuite/objc.dg/pr23214.m Tue Jul 16 14:44:29 2013 *************** *** 3,16 **** /* { dg-do run } */ /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ #include ! ! @interface Object (TS_CAT) - test; @end ! @implementation Object (TS_CAT) - test { return self; } @end --- 3,26 ---- /* { dg-do run } */ /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ + /* { dg-additional-options "-framework Foundation" { target { { *-*-darwin* } && objc2 } } } */ + #if defined (__NEXT_RUNTIME__) && defined(__OBJC2__) \ + && defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) \ + && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1070 #include ! #define OBJECT NSObject ! #else ! #include ! #define OBJECT Object ! #include ! #endif ! ! @interface OBJECT (TS_CAT) - test; @end ! @implementation OBJECT (TS_CAT) - test { return self; } @end *************** *** 20,26 **** @protocol B @end ! @interface Dummy : Object @end int main () --- 30,36 ---- @protocol B @end ! @interface Dummy : OBJECT @end int main () diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/proto-lossage-7.m gcc-4.7.4/gcc/testsuite/objc.dg/proto-lossage-7.m *** gcc-4.7.3/gcc/testsuite/objc.dg/proto-lossage-7.m Wed Sep 15 00:08:59 2010 --- gcc-4.7.4/gcc/testsuite/objc.dg/proto-lossage-7.m Tue Jul 16 14:44:29 2013 *************** *** 1,12 **** /* Check that typedefs of ObjC classes preserve any @protocol qualifiers. */ /* { dg-do compile } */ #include @protocol CanDoStuff; ! typedef Object CanDoStuffType; ! typedef Object *CanDoStuffTypePtr; @protocol CanDoStuff - (int) dostuff; --- 1,19 ---- /* Check that typedefs of ObjC classes preserve any @protocol qualifiers. */ /* { dg-do compile } */ + + #ifdef __NEXT_RUNTIME__ + #include + #define OBJECT NSObject + #else #include + #define OBJECT Object + #endif @protocol CanDoStuff; ! typedef OBJECT CanDoStuffType; ! typedef OBJECT *CanDoStuffTypePtr; @protocol CanDoStuff - (int) dostuff; diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/strings/const-cfstring-5.m gcc-4.7.4/gcc/testsuite/objc.dg/strings/const-cfstring-5.m *** gcc-4.7.3/gcc/testsuite/objc.dg/strings/const-cfstring-5.m Fri Oct 22 10:30:29 2010 --- gcc-4.7.4/gcc/testsuite/objc.dg/strings/const-cfstring-5.m Tue Jul 16 14:44:29 2013 *************** *** 6,21 **** /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mconstant-cfstrings" } */ ! #include ! @interface Foo: Object { char *cString; unsigned int len; } + (Foo *)description; @end ! @interface Bar: Object + (Foo *) getString: (int) which; @end --- 6,21 ---- /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mconstant-cfstrings" } */ ! #include ! @interface Foo: NSObject { char *cString; unsigned int len; } + (Foo *)description; @end ! @interface Bar: NSObject + (Foo *) getString: (int) which; @end diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/strings/const-str-12b.m gcc-4.7.4/gcc/testsuite/objc.dg/strings/const-str-12b.m *** gcc-4.7.3/gcc/testsuite/objc.dg/strings/const-str-12b.m Tue Jan 11 10:14:48 2011 --- gcc-4.7.4/gcc/testsuite/objc.dg/strings/const-str-12b.m Tue Jul 16 14:44:29 2013 *************** *** 5,21 **** /* { dg-options "-fconstant-string-class=Foo" } */ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ #include #include "../../objc-obj-c++-shared/objc-test-suite-types.h" ! @interface Foo: Object { char *cString; unsigned int len; } + (id)description; @end ! @interface Bar: Object + (Foo *) getString: (int) which; @end --- 5,27 ---- /* { dg-options "-fconstant-string-class=Foo" } */ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ + #ifdef __NEXT_RUNTIME__ + #include + #define OBJECT NSObject + #else #include + #define OBJECT Object + #endif #include "../../objc-obj-c++-shared/objc-test-suite-types.h" ! @interface Foo: OBJECT { char *cString; unsigned int len; } + (id)description; @end ! @interface Bar: OBJECT + (Foo *) getString: (int) which; @end diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/symtab-1.m gcc-4.7.4/gcc/testsuite/objc.dg/symtab-1.m *** gcc-4.7.3/gcc/testsuite/objc.dg/symtab-1.m Fri Feb 18 00:07:38 2011 --- gcc-4.7.4/gcc/testsuite/objc.dg/symtab-1.m Tue Jul 16 14:44:29 2013 *************** *** 4,12 **** /* { dg-do compile { target { *-*-darwin* } } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ ! #include ! @interface Base: Object - (void)setValues; @end --- 4,12 ---- /* { dg-do compile { target { *-*-darwin* } } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ ! #include ! @interface Base: NSObject - (void)setValues; @end diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/torture/strings/const-str-10.m gcc-4.7.4/gcc/testsuite/objc.dg/torture/strings/const-str-10.m *** gcc-4.7.3/gcc/testsuite/objc.dg/torture/strings/const-str-10.m Mon Jun 6 22:46:58 2011 --- gcc-4.7.4/gcc/testsuite/objc.dg/torture/strings/const-str-10.m Tue Jul 16 14:44:29 2013 *************** *** 6,15 **** /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ ! #include #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ ! @interface NSString: Object @end @interface NSSimpleCString : NSString { --- 6,15 ---- /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ ! #include #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ ! @interface NSString: NSObject @end @interface NSSimpleCString : NSString { diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/torture/strings/const-str-11.m gcc-4.7.4/gcc/testsuite/objc.dg/torture/strings/const-str-11.m *** gcc-4.7.3/gcc/testsuite/objc.dg/torture/strings/const-str-11.m Mon Jun 6 22:46:58 2011 --- gcc-4.7.4/gcc/testsuite/objc.dg/torture/strings/const-str-11.m Tue Jul 16 14:44:29 2013 *************** *** 7,16 **** /* { dg-options "-fconstant-string-class=XStr" } */ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */ ! #include #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ ! @interface XString: Object { @protected char *bytes; } --- 7,16 ---- /* { dg-options "-fconstant-string-class=XStr" } */ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */ ! #include #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ ! @interface XString: NSObject { @protected char *bytes; } diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/torture/strings/const-str-9.m gcc-4.7.4/gcc/testsuite/objc.dg/torture/strings/const-str-9.m *** gcc-4.7.3/gcc/testsuite/objc.dg/torture/strings/const-str-9.m Mon Jun 6 22:46:58 2011 --- gcc-4.7.4/gcc/testsuite/objc.dg/torture/strings/const-str-9.m Tue Jul 16 14:44:29 2013 *************** *** 5,14 **** /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ ! #include #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ ! @interface NSConstantString: Object { char *cString; unsigned int len; } --- 5,14 ---- /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ ! #include #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ ! @interface NSConstantString: NSObject { char *cString; unsigned int len; } diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/zero-link-1.m gcc-4.7.4/gcc/testsuite/objc.dg/zero-link-1.m *** gcc-4.7.3/gcc/testsuite/objc.dg/zero-link-1.m Mon Jun 6 22:46:58 2011 --- gcc-4.7.4/gcc/testsuite/objc.dg/zero-link-1.m Tue Jul 16 14:44:29 2013 *************** *** 5,17 **** /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-fzero-link" } */ ! #include ! #include extern void abort(void); #define CHECK_IF(expr) if(!(expr)) abort(); ! @interface Base: Object + (int) getValue; @end --- 5,16 ---- /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-fzero-link" } */ ! #include extern void abort(void); #define CHECK_IF(expr) if(!(expr)) abort(); ! @interface Base: NSObject + (int) getValue; @end diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/zero-link-2.m gcc-4.7.4/gcc/testsuite/objc.dg/zero-link-2.m *** gcc-4.7.3/gcc/testsuite/objc.dg/zero-link-2.m Fri Feb 18 00:07:38 2011 --- gcc-4.7.4/gcc/testsuite/objc.dg/zero-link-2.m Tue Jul 16 14:44:29 2013 *************** *** 5,16 **** /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-fno-zero-link" } */ ! #include extern void abort(void); #define CHECK_IF(expr) if(!(expr)) abort(); ! @interface Base: Object + (int) getValue; @end --- 5,16 ---- /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-fno-zero-link" } */ ! #include extern void abort(void); #define CHECK_IF(expr) if(!(expr)) abort(); ! @interface Base: NSObject + (int) getValue; @end diff -Nrcpad gcc-4.7.3/gcc/testsuite/objc.dg/zero-link-3.m gcc-4.7.4/gcc/testsuite/objc.dg/zero-link-3.m *** gcc-4.7.3/gcc/testsuite/objc.dg/zero-link-3.m Mon Jun 6 22:46:58 2011 --- gcc-4.7.4/gcc/testsuite/objc.dg/zero-link-3.m Tue Jul 16 14:44:29 2013 *************** *** 2,16 **** /* Contributed by Ziemowit Laski . */ /* { dg-do run { target *-*-darwin* } } */ ! /* { dg-options "-fzero-link" } */ /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ #include extern void abort(void); #define CHECK_IF(expr) if(!(expr)) abort(); ! @interface Base: Object + (int) getValue; @end --- 2,24 ---- /* Contributed by Ziemowit Laski . */ /* { dg-do run { target *-*-darwin* } } */ ! /* { dg-additional-options "-fzero-link" } */ ! /* { dg-additional-options "-framework Foundation" { target { *-*-darwin* } } } */ /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ + #ifdef __NEXT_RUNTIME__ + #include + #define OBJECT NSObject + #else #include + #include + #define OBJECT Object + #endif extern void abort(void); #define CHECK_IF(expr) if(!(expr)) abort(); ! @interface Base: OBJECT + (int) getValue; @end diff -Nrcpad gcc-4.7.3/gcc/tlink.c gcc-4.7.4/gcc/tlink.c *** gcc-4.7.3/gcc/tlink.c Sat Feb 11 08:50:23 2012 --- gcc-4.7.4/gcc/tlink.c Fri Jun 21 15:14:23 2013 *************** *** 2,8 **** them. Copyright (C) 1995, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2007, 2008, ! 2009, 2010, 2011 Free Software Foundation, Inc. Contributed by Jason Merrill (jason@cygnus.com). This file is part of GCC. --- 2,8 ---- them. Copyright (C) 1995, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2007, 2008, ! 2009, 2010, 2011, 2013 Free Software Foundation, Inc. Contributed by Jason Merrill (jason@cygnus.com). This file is part of GCC. *************** scan_linker_output (const char *fname) *** 820,837 **** void do_tlink (char **ld_argv, char **object_lst ATTRIBUTE_UNUSED) { ! int exit = tlink_execute ("ld", ld_argv, ldout, lderrout); tlink_init (); ! if (exit) { int i = 0; /* Until collect does a better job of figuring out which are object files, assume that everything on the command line could be. */ if (read_repo_files (ld_argv)) ! while (exit && i++ < MAX_ITERATIONS) { if (tlink_verbose >= 3) { --- 820,837 ---- void do_tlink (char **ld_argv, char **object_lst ATTRIBUTE_UNUSED) { ! int ret = tlink_execute ("ld", ld_argv, ldout, lderrout); tlink_init (); ! if (ret) { int i = 0; /* Until collect does a better job of figuring out which are object files, assume that everything on the command line could be. */ if (read_repo_files (ld_argv)) ! while (ret && i++ < MAX_ITERATIONS) { if (tlink_verbose >= 3) { *************** do_tlink (char **ld_argv, char **object_ *** 846,852 **** break; if (tlink_verbose) fprintf (stderr, _("collect: relinking\n")); ! exit = tlink_execute ("ld", ld_argv, ldout, lderrout); } } --- 846,852 ---- break; if (tlink_verbose) fprintf (stderr, _("collect: relinking\n")); ! ret = tlink_execute ("ld", ld_argv, ldout, lderrout); } } *************** do_tlink (char **ld_argv, char **object_ *** 854,862 **** unlink (ldout); dump_file (lderrout, stderr); unlink (lderrout); ! if (exit) { ! error ("ld returned %d exit status", exit); ! collect_exit (exit); } } --- 854,862 ---- unlink (ldout); dump_file (lderrout, stderr); unlink (lderrout); ! if (ret) { ! error ("ld returned %d exit status", ret); ! exit (ret); } } diff -Nrcpad gcc-4.7.3/gcc/tree-cfg.c gcc-4.7.4/gcc/tree-cfg.c *** gcc-4.7.3/gcc/tree-cfg.c Sat Mar 31 17:25:10 2012 --- gcc-4.7.4/gcc/tree-cfg.c Wed May 7 10:01:36 2014 *************** static int locus_map_eq (const void *, c *** 109,115 **** static void assign_discriminator (location_t, basic_block); static edge gimple_redirect_edge_and_branch (edge, basic_block); static edge gimple_try_redirect_by_replacing_jump (edge, basic_block); - static unsigned int split_critical_edges (void); /* Various helpers. */ static inline bool stmt_starts_bb_p (gimple, gimple); --- 109,114 ---- *************** struct cfg_hooks gimple_cfg_hooks = { *** 7399,7405 **** /* Split all critical edges. */ ! static unsigned int split_critical_edges (void) { basic_block bb; --- 7398,7404 ---- /* Split all critical edges. */ ! unsigned int split_critical_edges (void) { basic_block bb; diff -Nrcpad gcc-4.7.3/gcc/tree-dfa.c gcc-4.7.4/gcc/tree-dfa.c *** gcc-4.7.3/gcc/tree-dfa.c Thu Oct 6 15:18:12 2011 --- gcc-4.7.4/gcc/tree-dfa.c Wed Mar 19 09:40:03 2014 *************** get_ref_base_and_extent (tree exp, HOST_ *** 713,721 **** HOST_WIDE_INT bitsize = -1; HOST_WIDE_INT maxsize = -1; tree size_tree = NULL_TREE; ! HOST_WIDE_INT bit_offset = 0; bool seen_variable_array_ref = false; - tree base_type; /* First get the final access size from just the outermost expression. */ if (TREE_CODE (exp) == COMPONENT_REF) --- 713,721 ---- HOST_WIDE_INT bitsize = -1; HOST_WIDE_INT maxsize = -1; tree size_tree = NULL_TREE; ! double_int bit_offset = double_int_zero; ! HOST_WIDE_INT hbit_offset; bool seen_variable_array_ref = false; /* First get the final access size from just the outermost expression. */ if (TREE_CODE (exp) == COMPONENT_REF) *************** get_ref_base_and_extent (tree exp, HOST_ *** 746,757 **** and find the ultimate containing object. */ while (1) { - base_type = TREE_TYPE (exp); - switch (TREE_CODE (exp)) { case BIT_FIELD_REF: ! bit_offset += TREE_INT_CST_LOW (TREE_OPERAND (exp, 2)); break; case COMPONENT_REF: --- 746,757 ---- and find the ultimate containing object. */ while (1) { switch (TREE_CODE (exp)) { case BIT_FIELD_REF: ! bit_offset ! = double_int_add (bit_offset, ! tree_to_double_int (TREE_OPERAND (exp, 2))); break; case COMPONENT_REF: *************** get_ref_base_and_extent (tree exp, HOST_ *** 759,780 **** tree field = TREE_OPERAND (exp, 1); tree this_offset = component_ref_field_offset (exp); ! if (this_offset ! && TREE_CODE (this_offset) == INTEGER_CST ! && host_integerp (this_offset, 0)) { ! HOST_WIDE_INT hthis_offset = TREE_INT_CST_LOW (this_offset); ! hthis_offset *= BITS_PER_UNIT; ! hthis_offset ! += TREE_INT_CST_LOW (DECL_FIELD_BIT_OFFSET (field)); ! bit_offset += hthis_offset; /* If we had seen a variable array ref already and we just referenced the last field of a struct or a union member then we have to adjust maxsize by the padding at the end of our field. */ ! if (seen_variable_array_ref ! && maxsize != -1) { tree stype = TREE_TYPE (TREE_OPERAND (exp, 0)); tree next = DECL_CHAIN (field); --- 759,781 ---- tree field = TREE_OPERAND (exp, 1); tree this_offset = component_ref_field_offset (exp); ! if (this_offset && TREE_CODE (this_offset) == INTEGER_CST) { ! double_int doffset = tree_to_double_int (this_offset); ! doffset = double_int_lshift (doffset, ! BITS_PER_UNIT == 8 ! ? 3 : exact_log2 (BITS_PER_UNIT), ! HOST_BITS_PER_DOUBLE_INT, true); ! doffset = double_int_add (doffset, ! tree_to_double_int ! (DECL_FIELD_BIT_OFFSET (field))); ! bit_offset = double_int_add (bit_offset, doffset); /* If we had seen a variable array ref already and we just referenced the last field of a struct or a union member then we have to adjust maxsize by the padding at the end of our field. */ ! if (seen_variable_array_ref && maxsize != -1) { tree stype = TREE_TYPE (TREE_OPERAND (exp, 0)); tree next = DECL_CHAIN (field); *************** get_ref_base_and_extent (tree exp, HOST_ *** 786,795 **** tree fsize = DECL_SIZE_UNIT (field); tree ssize = TYPE_SIZE_UNIT (stype); if (host_integerp (fsize, 0) ! && host_integerp (ssize, 0)) maxsize += ((TREE_INT_CST_LOW (ssize) - TREE_INT_CST_LOW (fsize)) ! * BITS_PER_UNIT - hthis_offset); else maxsize = -1; } --- 787,798 ---- tree fsize = DECL_SIZE_UNIT (field); tree ssize = TYPE_SIZE_UNIT (stype); if (host_integerp (fsize, 0) ! && host_integerp (ssize, 0) ! && double_int_fits_in_shwi_p (doffset)) maxsize += ((TREE_INT_CST_LOW (ssize) - TREE_INT_CST_LOW (fsize)) ! * BITS_PER_UNIT ! - double_int_to_shwi (doffset)); else maxsize = -1; } *************** get_ref_base_and_extent (tree exp, HOST_ *** 801,808 **** /* We need to adjust maxsize to the whole structure bitsize. But we can subtract any constant offset seen so far, because that would get us out of the structure otherwise. */ ! if (maxsize != -1 && csize && host_integerp (csize, 1)) ! maxsize = TREE_INT_CST_LOW (csize) - bit_offset; else maxsize = -1; } --- 804,815 ---- /* We need to adjust maxsize to the whole structure bitsize. But we can subtract any constant offset seen so far, because that would get us out of the structure otherwise. */ ! if (maxsize != -1 ! && csize ! && host_integerp (csize, 1) ! && double_int_fits_in_shwi_p (bit_offset)) ! maxsize = TREE_INT_CST_LOW (csize) ! - double_int_to_shwi (bit_offset); else maxsize = -1; } *************** get_ref_base_and_extent (tree exp, HOST_ *** 817,834 **** /* If the resulting bit-offset is constant, track it. */ if (TREE_CODE (index) == INTEGER_CST - && host_integerp (index, 0) && (low_bound = array_ref_low_bound (exp), ! host_integerp (low_bound, 0)) && (unit_size = array_ref_element_size (exp), ! host_integerp (unit_size, 1))) { ! HOST_WIDE_INT hindex = TREE_INT_CST_LOW (index); ! ! hindex -= TREE_INT_CST_LOW (low_bound); ! hindex *= TREE_INT_CST_LOW (unit_size); ! hindex *= BITS_PER_UNIT; ! bit_offset += hindex; /* An array ref with a constant index up in the structure hierarchy will constrain the size of any variable array ref --- 824,846 ---- /* If the resulting bit-offset is constant, track it. */ if (TREE_CODE (index) == INTEGER_CST && (low_bound = array_ref_low_bound (exp), ! TREE_CODE (low_bound) == INTEGER_CST) && (unit_size = array_ref_element_size (exp), ! TREE_CODE (unit_size) == INTEGER_CST)) { ! double_int doffset ! = double_int_sext ! (double_int_sub (TREE_INT_CST (index), ! TREE_INT_CST (low_bound)), ! TYPE_PRECISION (TREE_TYPE (index))); ! doffset = double_int_mul (doffset, ! tree_to_double_int (unit_size)); ! doffset = double_int_lshift (doffset, ! BITS_PER_UNIT == 8 ! ? 3 : exact_log2 (BITS_PER_UNIT), ! HOST_BITS_PER_DOUBLE_INT, true); ! bit_offset = double_int_add (bit_offset, doffset); /* An array ref with a constant index up in the structure hierarchy will constrain the size of any variable array ref *************** get_ref_base_and_extent (tree exp, HOST_ *** 841,848 **** /* We need to adjust maxsize to the whole array bitsize. But we can subtract any constant offset seen so far, because that would get us outside of the array otherwise. */ ! if (maxsize != -1 && asize && host_integerp (asize, 1)) ! maxsize = TREE_INT_CST_LOW (asize) - bit_offset; else maxsize = -1; --- 853,864 ---- /* We need to adjust maxsize to the whole array bitsize. But we can subtract any constant offset seen so far, because that would get us outside of the array otherwise. */ ! if (maxsize != -1 ! && asize ! && host_integerp (asize, 1) ! && double_int_fits_in_shwi_p (bit_offset)) ! maxsize = TREE_INT_CST_LOW (asize) ! - double_int_to_shwi (bit_offset); else maxsize = -1; *************** get_ref_base_and_extent (tree exp, HOST_ *** 857,869 **** break; case IMAGPART_EXPR: ! bit_offset += bitsize; break; case VIEW_CONVERT_EXPR: break; case MEM_REF: /* Hand back the decl for MEM[&decl, off]. */ if (TREE_CODE (TREE_OPERAND (exp, 0)) == ADDR_EXPR) { --- 873,917 ---- break; case IMAGPART_EXPR: ! bit_offset ! = double_int_add (bit_offset, uhwi_to_double_int (bitsize)); break; case VIEW_CONVERT_EXPR: break; + case TARGET_MEM_REF: + /* Via the variable index or index2 we can reach the + whole object. Still hand back the decl here. */ + if (TREE_CODE (TMR_BASE (exp)) == ADDR_EXPR + && (TMR_INDEX (exp) || TMR_INDEX2 (exp))) + { + exp = TREE_OPERAND (TMR_BASE (exp), 0); + bit_offset = double_int_zero; + maxsize = -1; + goto done; + } + /* Fallthru. */ case MEM_REF: + /* We need to deal with variable arrays ending structures such as + struct { int length; int a[1]; } x; x.a[d] + struct { struct { int a; int b; } a[1]; } x; x.a[d].a + struct { struct { int a[1]; } a[1]; } x; x.a[0][d], x.a[d][0] + struct { int len; union { int a[1]; struct X x; } u; } x; x.u.a[d] + where we do not know maxsize for variable index accesses to + the array. The simplest way to conservatively deal with this + is to punt in the case that offset + maxsize reaches the + base type boundary. This needs to include possible trailing + padding that is there for alignment purposes. */ + if (seen_variable_array_ref + && maxsize != -1 + && (!double_int_fits_in_shwi_p (bit_offset) + || !host_integerp (TYPE_SIZE (TREE_TYPE (exp)), 1) + || (double_int_to_shwi (bit_offset) + maxsize + == (HOST_WIDE_INT) TREE_INT_CST_LOW + (TYPE_SIZE (TREE_TYPE (exp)))))) + maxsize = -1; + /* Hand back the decl for MEM[&decl, off]. */ if (TREE_CODE (TREE_OPERAND (exp, 0)) == ADDR_EXPR) { *************** get_ref_base_and_extent (tree exp, HOST_ *** 876,949 **** BITS_PER_UNIT == 8 ? 3 : exact_log2 (BITS_PER_UNIT), HOST_BITS_PER_DOUBLE_INT, true); ! off = double_int_add (off, shwi_to_double_int (bit_offset)); if (double_int_fits_in_shwi_p (off)) { ! bit_offset = double_int_to_shwi (off); exp = TREE_OPERAND (TREE_OPERAND (exp, 0), 0); } } } goto done; - case TARGET_MEM_REF: - /* Hand back the decl for MEM[&decl, off]. */ - if (TREE_CODE (TMR_BASE (exp)) == ADDR_EXPR) - { - /* Via the variable index or index2 we can reach the - whole object. */ - if (TMR_INDEX (exp) || TMR_INDEX2 (exp)) - { - exp = TREE_OPERAND (TMR_BASE (exp), 0); - bit_offset = 0; - maxsize = -1; - goto done; - } - if (integer_zerop (TMR_OFFSET (exp))) - exp = TREE_OPERAND (TMR_BASE (exp), 0); - else - { - double_int off = mem_ref_offset (exp); - off = double_int_lshift (off, - BITS_PER_UNIT == 8 - ? 3 : exact_log2 (BITS_PER_UNIT), - HOST_BITS_PER_DOUBLE_INT, true); - off = double_int_add (off, shwi_to_double_int (bit_offset)); - if (double_int_fits_in_shwi_p (off)) - { - bit_offset = double_int_to_shwi (off); - exp = TREE_OPERAND (TMR_BASE (exp), 0); - } - } - } - goto done; - default: goto done; } exp = TREE_OPERAND (exp, 0); } - done: - - /* We need to deal with variable arrays ending structures such as - struct { int length; int a[1]; } x; x.a[d] - struct { struct { int a; int b; } a[1]; } x; x.a[d].a - struct { struct { int a[1]; } a[1]; } x; x.a[0][d], x.a[d][0] - struct { int len; union { int a[1]; struct X x; } u; } x; x.u.a[d] - where we do not know maxsize for variable index accesses to - the array. The simplest way to conservatively deal with this - is to punt in the case that offset + maxsize reaches the - base type boundary. This needs to include possible trailing padding - that is there for alignment purposes. */ if (seen_variable_array_ref && maxsize != -1 ! && (!host_integerp (TYPE_SIZE (base_type), 1) ! || (bit_offset + maxsize ! == (signed) TREE_INT_CST_LOW (TYPE_SIZE (base_type))))) maxsize = -1; /* In case of a decl or constant base object we can do better. */ if (DECL_P (exp)) --- 924,968 ---- BITS_PER_UNIT == 8 ? 3 : exact_log2 (BITS_PER_UNIT), HOST_BITS_PER_DOUBLE_INT, true); ! off = double_int_add (off, bit_offset); if (double_int_fits_in_shwi_p (off)) { ! bit_offset = off; exp = TREE_OPERAND (TREE_OPERAND (exp, 0), 0); } } } goto done; default: goto done; } exp = TREE_OPERAND (exp, 0); } + /* We need to deal with variable arrays ending structures. */ if (seen_variable_array_ref && maxsize != -1 ! && (!double_int_fits_in_shwi_p (bit_offset) ! || !host_integerp (TYPE_SIZE (TREE_TYPE (exp)), 1) ! || (double_int_to_shwi (bit_offset) + maxsize ! == (HOST_WIDE_INT) ! TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (exp)))))) maxsize = -1; + done: + if (!double_int_fits_in_shwi_p (bit_offset)) + { + *poffset = 0; + *psize = bitsize; + *pmax_size = -1; + + return exp; + } + + hbit_offset = double_int_to_shwi (bit_offset); + /* In case of a decl or constant base object we can do better. */ if (DECL_P (exp)) *************** get_ref_base_and_extent (tree exp, HOST_ *** 952,958 **** base decl. */ if (maxsize == -1 && host_integerp (DECL_SIZE (exp), 1)) ! maxsize = TREE_INT_CST_LOW (DECL_SIZE (exp)) - bit_offset; } else if (CONSTANT_CLASS_P (exp)) { --- 971,977 ---- base decl. */ if (maxsize == -1 && host_integerp (DECL_SIZE (exp), 1)) ! maxsize = TREE_INT_CST_LOW (DECL_SIZE (exp)) - hbit_offset; } else if (CONSTANT_CLASS_P (exp)) { *************** get_ref_base_and_extent (tree exp, HOST_ *** 960,972 **** base type constant. */ if (maxsize == -1 && host_integerp (TYPE_SIZE (TREE_TYPE (exp)), 1)) ! maxsize = TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (exp))) - bit_offset; } /* ??? Due to negative offsets in ARRAY_REF we can end up with negative bit_offset here. We might want to store a zero offset in this case. */ ! *poffset = bit_offset; *psize = bitsize; *pmax_size = maxsize; --- 979,991 ---- base type constant. */ if (maxsize == -1 && host_integerp (TYPE_SIZE (TREE_TYPE (exp)), 1)) ! maxsize = TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (exp))) - hbit_offset; } /* ??? Due to negative offsets in ARRAY_REF we can end up with negative bit_offset here. We might want to store a zero offset in this case. */ ! *poffset = hbit_offset; *psize = bitsize; *pmax_size = maxsize; diff -Nrcpad gcc-4.7.3/gcc/tree-eh.c gcc-4.7.4/gcc/tree-eh.c *** gcc-4.7.3/gcc/tree-eh.c Fri Jun 29 22:39:45 2012 --- gcc-4.7.4/gcc/tree-eh.c Sat Feb 1 05:20:13 2014 *************** lower_try_finally_switch (struct leh_sta *** 1328,1336 **** x = gimple_seq_last_stmt (finally); finally_loc = x ? gimple_location (x) : tf_loc; - /* Lower the finally block itself. */ - lower_eh_constructs_1 (state, finally); - /* Prepare for switch statement generation. */ nlabels = VEC_length (tree, tf->dest_array); return_index = nlabels; --- 1328,1333 ---- *************** lower_try_finally_switch (struct leh_sta *** 1414,1419 **** --- 1411,1417 ---- x = gimple_build_label (finally_label); gimple_seq_add_stmt (&tf->top_p_seq, x); + lower_eh_constructs_1 (state, finally); gimple_seq_add_seq (&tf->top_p_seq, finally); /* Redirect each incoming goto edge. */ diff -Nrcpad gcc-4.7.3/gcc/tree-flow.h gcc-4.7.4/gcc/tree-flow.h *** gcc-4.7.3/gcc/tree-flow.h Fri Feb 24 09:40:27 2012 --- gcc-4.7.4/gcc/tree-flow.h Wed May 7 10:07:09 2014 *************** extern basic_block move_sese_region_to_f *** 466,471 **** --- 466,472 ---- basic_block, tree); void remove_edge_and_dominated_blocks (edge); bool tree_node_can_be_shared (tree); + extern unsigned int split_critical_edges (void); /* In tree-cfgcleanup.c */ extern bitmap cfgcleanup_altered_bbs; diff -Nrcpad gcc-4.7.3/gcc/tree-if-conv.c gcc-4.7.4/gcc/tree-if-conv.c *** gcc-4.7.3/gcc/tree-if-conv.c Fri Apr 13 12:27:02 2012 --- gcc-4.7.4/gcc/tree-if-conv.c Tue Mar 18 08:46:21 2014 *************** if_convertible_stmt_p (gimple stmt, VEC *** 758,777 **** return true; } - /* Return true when BB post-dominates all its predecessors. */ - - static bool - bb_postdominates_preds (basic_block bb) - { - unsigned i; - - for (i = 0; i < EDGE_COUNT (bb->preds); i++) - if (!dominated_by_p (CDI_POST_DOMINATORS, EDGE_PRED (bb, i)->src, bb)) - return false; - - return true; - } - /* Return true when BB is if-convertible. This routine does not check basic block's statements and phis. --- 758,763 ---- *************** if_convertible_bb_p (struct loop *loop, *** 830,839 **** return false; } ! if (EDGE_COUNT (bb->preds) == 2 ! && bb != loop->header ! && !bb_postdominates_preds (bb)) ! return false; return true; } --- 816,838 ---- return false; } ! /* At least one incoming edge has to be non-critical as otherwise edge ! predicates are not equal to basic-block predicates of the edge ! source. */ ! if (EDGE_COUNT (bb->preds) > 1 ! && bb != loop->header) ! { ! bool found = false; ! FOR_EACH_EDGE (e, ei, bb->preds) ! if (EDGE_COUNT (e->src->succs) == 1) ! found = true; ! if (!found) ! { ! if (dump_file && (dump_flags & TDF_DETAILS)) ! fprintf (dump_file, "only critical predecessors\n"); ! return false; ! } ! } return true; } *************** if_convertible_loop_p_1 (struct loop *lo *** 1048,1054 **** return false; calculate_dominance_info (CDI_DOMINATORS); - calculate_dominance_info (CDI_POST_DOMINATORS); /* Allow statements that can be handled during if-conversion. */ ifc_bbs = get_loop_body_in_if_conv_order (loop); --- 1047,1052 ---- *************** if_convertible_loop_p (struct loop *loop *** 1184,1191 **** if-conversion. */ static basic_block ! find_phi_replacement_condition (struct loop *loop, ! basic_block bb, tree *cond, gimple_stmt_iterator *gsi) { edge first_edge, second_edge; --- 1182,1188 ---- if-conversion. */ static basic_block ! find_phi_replacement_condition (basic_block bb, tree *cond, gimple_stmt_iterator *gsi) { edge first_edge, second_edge; *************** find_phi_replacement_condition (struct l *** 1195,1228 **** first_edge = EDGE_PRED (bb, 0); second_edge = EDGE_PRED (bb, 1); ! /* Use condition based on following criteria: ! 1) ! S1: x = !c ? a : b; ! ! S2: x = c ? b : a; ! ! S2 is preferred over S1. Make 'b' first_bb and use its condition. ! ! 2) Do not make loop header first_bb. ! ! 3) ! S1: x = !(c == d)? a : b; ! ! S21: t1 = c == d; ! S22: x = t1 ? b : a; ! ! S3: x = (c == d) ? b : a; ! ! S3 is preferred over S1 and S2*, Make 'b' first_bb and use ! its condition. ! ! 4) If pred B is dominated by pred A then use pred B's condition. ! See PR23115. */ ! ! /* Select condition that is not TRUTH_NOT_EXPR. */ tmp_cond = bb_predicate (first_edge->src); gcc_assert (tmp_cond); - if (TREE_CODE (tmp_cond) == TRUTH_NOT_EXPR) { edge tmp_edge; --- 1192,1201 ---- first_edge = EDGE_PRED (bb, 0); second_edge = EDGE_PRED (bb, 1); ! /* Prefer an edge with a not negated predicate. ! ??? That's a very weak cost model. */ tmp_cond = bb_predicate (first_edge->src); gcc_assert (tmp_cond); if (TREE_CODE (tmp_cond) == TRUTH_NOT_EXPR) { edge tmp_edge; *************** find_phi_replacement_condition (struct l *** 1232,1242 **** second_edge = tmp_edge; } ! /* Check if FIRST_BB is loop header or not and make sure that ! FIRST_BB does not dominate SECOND_BB. */ ! if (first_edge->src == loop->header ! || dominated_by_p (CDI_DOMINATORS, ! second_edge->src, first_edge->src)) { *cond = bb_predicate (second_edge->src); --- 1205,1213 ---- second_edge = tmp_edge; } ! /* Check if the edge we take the condition from is not critical. ! We know that at least one non-critical edge exists. */ ! if (EDGE_COUNT (first_edge->src->succs) > 1) { *cond = bb_predicate (second_edge->src); *************** predicate_scalar_phi (gimple phi, tree c *** 1311,1319 **** arg_1 = gimple_phi_arg_def (phi, 1); } - gcc_checking_assert (bb == bb->loop_father->header - || bb_postdominates_preds (bb)); - /* Build new RHS using selected condition and arguments. */ rhs = build3 (COND_EXPR, TREE_TYPE (res), unshare_expr (cond), arg_0, arg_1); --- 1282,1287 ---- *************** predicate_all_scalar_phis (struct loop * *** 1359,1365 **** /* BB has two predecessors. Using predecessor's aux field, set appropriate condition for the PHI node replacement. */ gsi = gsi_after_labels (bb); ! true_bb = find_phi_replacement_condition (loop, bb, &cond, &gsi); while (!gsi_end_p (phi_gsi)) { --- 1327,1333 ---- /* BB has two predecessors. Using predecessor's aux field, set appropriate condition for the PHI node replacement. */ gsi = gsi_after_labels (bb); ! true_bb = find_phi_replacement_condition (bb, &cond, &gsi); while (!gsi_end_p (phi_gsi)) { *************** main_tree_if_conversion (void) *** 1791,1798 **** if (changed && flag_tree_loop_if_convert_stores) todo |= TODO_update_ssa_only_virtuals; - free_dominance_info (CDI_POST_DOMINATORS); - return todo; } --- 1759,1764 ---- diff -Nrcpad gcc-4.7.3/gcc/tree-predcom.c gcc-4.7.4/gcc/tree-predcom.c *** gcc-4.7.3/gcc/tree-predcom.c Thu May 3 10:19:29 2012 --- gcc-4.7.4/gcc/tree-predcom.c Tue Mar 18 08:46:21 2014 *************** combinable_refs_p (dref r1, dref r2, *** 2117,2123 **** stmt = find_common_use_stmt (&name1, &name2); ! if (!stmt) return false; acode = gimple_assign_rhs_code (stmt); --- 2117,2127 ---- stmt = find_common_use_stmt (&name1, &name2); ! if (!stmt ! /* A simple post-dominance check - make sure the combination ! is executed under the same condition as the references. */ ! || (gimple_bb (stmt) != gimple_bb (r1->stmt) ! && gimple_bb (stmt) != gimple_bb (r2->stmt))) return false; acode = gimple_assign_rhs_code (stmt); diff -Nrcpad gcc-4.7.3/gcc/tree-ssa-ccp.c gcc-4.7.4/gcc/tree-ssa-ccp.c *** gcc-4.7.3/gcc/tree-ssa-ccp.c Mon Feb 4 15:49:18 2013 --- gcc-4.7.4/gcc/tree-ssa-ccp.c Mon Sep 23 16:16:41 2013 *************** insert_clobber_before_stack_restore (tre *** 1744,1749 **** --- 1744,1752 ---- insert_clobber_before_stack_restore (gimple_phi_result (stmt), var, visited); } + else if (gimple_assign_ssa_name_copy_p (stmt)) + insert_clobber_before_stack_restore (gimple_assign_lhs (stmt), var, + visited); else gcc_assert (is_gimple_debug (stmt)); } diff -Nrcpad gcc-4.7.3/gcc/tree-ssa-dce.c gcc-4.7.4/gcc/tree-ssa-dce.c *** gcc-4.7.3/gcc/tree-ssa-dce.c Fri Feb 10 17:44:31 2012 --- gcc-4.7.4/gcc/tree-ssa-dce.c Wed May 7 10:01:36 2014 *************** mark_aliased_reaching_defs_necessary_1 ( *** 576,581 **** --- 576,586 ---- in the references (gcc.c-torture/execute/pr42142.c). The simplest way is to check if the kill dominates the use. */ + /* But when both are in the same block we cannot + easily tell whether we came from a backedge + unless we decide to compute stmt UIDs + (see PR58246). */ + && (basic_block) data != gimple_bb (def_stmt) && dominated_by_p (CDI_DOMINATORS, (basic_block) data, gimple_bb (def_stmt)) && operand_equal_p (ref->ref, lhs, 0)) *************** eliminate_unnecessary_stmts (void) *** 1305,1330 **** stats.total++; /* We can mark a call to free as not necessary if the ! defining statement of its argument is an allocation ! function and that is not necessary itself. */ ! if (gimple_call_builtin_p (stmt, BUILT_IN_FREE)) { tree ptr = gimple_call_arg (stmt, 0); ! tree callee2; ! gimple def_stmt; ! if (TREE_CODE (ptr) != SSA_NAME) ! continue; ! def_stmt = SSA_NAME_DEF_STMT (ptr); ! if (!is_gimple_call (def_stmt) ! || gimple_plf (def_stmt, STMT_NECESSARY)) ! continue; ! callee2 = gimple_call_fndecl (def_stmt); ! if (callee2 == NULL_TREE ! || DECL_BUILT_IN_CLASS (callee2) != BUILT_IN_NORMAL ! || (DECL_FUNCTION_CODE (callee2) != BUILT_IN_MALLOC ! && DECL_FUNCTION_CODE (callee2) != BUILT_IN_CALLOC)) ! continue; ! gimple_set_plf (stmt, STMT_NECESSARY, false); } /* If GSI is not necessary then remove it. */ --- 1310,1328 ---- stats.total++; /* We can mark a call to free as not necessary if the ! defining statement of its argument is not necessary ! (and thus is getting removed). */ ! if (gimple_plf (stmt, STMT_NECESSARY) ! && gimple_call_builtin_p (stmt, BUILT_IN_FREE)) { tree ptr = gimple_call_arg (stmt, 0); ! if (TREE_CODE (ptr) == SSA_NAME) ! { ! gimple def_stmt = SSA_NAME_DEF_STMT (ptr); ! if (!gimple_nop_p (def_stmt) ! && !gimple_plf (def_stmt, STMT_NECESSARY)) ! gimple_set_plf (stmt, STMT_NECESSARY, false); ! } } /* If GSI is not necessary then remove it. */ diff -Nrcpad gcc-4.7.3/gcc/tree-ssa-loop-niter.c gcc-4.7.4/gcc/tree-ssa-loop-niter.c *** gcc-4.7.3/gcc/tree-ssa-loop-niter.c Tue Aug 21 13:34:19 2012 --- gcc-4.7.4/gcc/tree-ssa-loop-niter.c Mon Mar 17 14:38:55 2014 *************** chain_of_csts_start (struct loop *loop, *** 2068,2074 **** return NULL; } ! if (gimple_code (stmt) != GIMPLE_ASSIGN) return NULL; code = gimple_assign_rhs_code (stmt); --- 2068,2075 ---- return NULL; } ! if (gimple_code (stmt) != GIMPLE_ASSIGN ! || gimple_assign_rhs_class (stmt) == GIMPLE_TERNARY_RHS) return NULL; code = gimple_assign_rhs_code (stmt); *************** get_val_for (tree x, tree base) *** 2136,2142 **** { gimple stmt; ! gcc_assert (is_gimple_min_invariant (base)); if (!x) return base; --- 2137,2143 ---- { gimple stmt; ! gcc_checking_assert (is_gimple_min_invariant (base)); if (!x) return base; *************** get_val_for (tree x, tree base) *** 2145,2151 **** if (gimple_code (stmt) == GIMPLE_PHI) return base; ! gcc_assert (is_gimple_assign (stmt)); /* STMT must be either an assignment of a single SSA name or an expression involving an SSA name and a constant. Try to fold that --- 2146,2152 ---- if (gimple_code (stmt) == GIMPLE_PHI) return base; ! gcc_checking_assert (is_gimple_assign (stmt)); /* STMT must be either an assignment of a single SSA name or an expression involving an SSA name and a constant. Try to fold that diff -Nrcpad gcc-4.7.3/gcc/tree-ssa-phiprop.c gcc-4.7.4/gcc/tree-ssa-phiprop.c *** gcc-4.7.3/gcc/tree-ssa-phiprop.c Tue Jun 14 19:39:36 2011 --- gcc-4.7.4/gcc/tree-ssa-phiprop.c Mon Mar 17 14:38:55 2014 *************** propagate_with_phi (basic_block bb, gimp *** 314,319 **** --- 314,325 ---- gimple def_stmt; tree vuse; + /* Only replace loads in blocks that post-dominate the PHI node. That + makes sure we don't end up speculating loads. */ + if (!dominated_by_p (CDI_POST_DOMINATORS, + bb, gimple_bb (use_stmt))) + continue; + /* Check whether this is a load of *ptr. */ if (!(is_gimple_assign (use_stmt) && TREE_CODE (gimple_assign_lhs (use_stmt)) == SSA_NAME *************** tree_ssa_phiprop (void) *** 385,390 **** --- 391,397 ---- size_t n; calculate_dominance_info (CDI_DOMINATORS); + calculate_dominance_info (CDI_POST_DOMINATORS); n = num_ssa_names; phivn = XCNEWVEC (struct phiprop_d, n); *************** tree_ssa_phiprop (void) *** 402,407 **** --- 409,416 ---- VEC_free (basic_block, heap, bbs); free (phivn); + free_dominance_info (CDI_POST_DOMINATORS); + return 0; } diff -Nrcpad gcc-4.7.3/gcc/tree-ssa-pre.c gcc-4.7.4/gcc/tree-ssa-pre.c *** gcc-4.7.3/gcc/tree-ssa-pre.c Tue Feb 19 17:28:11 2013 --- gcc-4.7.4/gcc/tree-ssa-pre.c Wed May 7 08:05:57 2014 *************** phi_translate_1 (pre_expr expr, bitmap_s *** 1756,1794 **** case NAME: { - gimple phi = NULL; - edge e; - gimple def_stmt; tree name = PRE_EXPR_NAME (expr); ! ! def_stmt = SSA_NAME_DEF_STMT (name); if (gimple_code (def_stmt) == GIMPLE_PHI && gimple_bb (def_stmt) == phiblock) - phi = def_stmt; - else - return expr; - - e = find_edge (pred, gimple_bb (phi)); - if (e) { ! tree def = PHI_ARG_DEF (phi, e->dest_idx); ! pre_expr newexpr; ! ! if (TREE_CODE (def) == SSA_NAME) ! def = VN_INFO (def)->valnum; /* Handle constant. */ if (is_gimple_min_invariant (def)) return get_or_alloc_expr_for_constant (def); ! if (TREE_CODE (def) == SSA_NAME && ssa_undefined_value_p (def)) ! return NULL; ! ! newexpr = get_or_alloc_expr_for_name (def); ! return newexpr; } } - return expr; default: gcc_unreachable (); --- 1756,1781 ---- case NAME: { tree name = PRE_EXPR_NAME (expr); ! gimple def_stmt = SSA_NAME_DEF_STMT (name); ! /* If the SSA name is defined by a PHI node in this block, ! translate it. */ if (gimple_code (def_stmt) == GIMPLE_PHI && gimple_bb (def_stmt) == phiblock) { ! edge e = find_edge (pred, gimple_bb (def_stmt)); ! tree def = PHI_ARG_DEF (def_stmt, e->dest_idx); /* Handle constant. */ if (is_gimple_min_invariant (def)) return get_or_alloc_expr_for_constant (def); ! return get_or_alloc_expr_for_name (def); } + /* Otherwise return it unchanged - it will get cleaned if its + value is not available in PREDs AVAIL_OUT set of expressions. */ + return expr; } default: gcc_unreachable (); diff -Nrcpad gcc-4.7.3/gcc/tree-ssa-sccvn.c gcc-4.7.4/gcc/tree-ssa-sccvn.c *** gcc-4.7.3/gcc/tree-ssa-sccvn.c Mon Dec 3 16:53:25 2012 --- gcc-4.7.4/gcc/tree-ssa-sccvn.c Tue May 6 14:22:41 2014 *************** static inline bool *** 2483,2488 **** --- 2483,2489 ---- set_ssa_val_to (tree from, tree to) { tree currval = SSA_VAL (from); + HOST_WIDE_INT toff, coff; if (from != to) { *************** set_ssa_val_to (tree from, tree to) *** 2518,2524 **** print_generic_expr (dump_file, to, 0); } ! if (currval != to && !operand_equal_p (currval, to, OEP_PURE_SAME)) { VN_INFO (from)->valnum = to; if (dump_file && (dump_flags & TDF_DETAILS)) --- 2519,2535 ---- print_generic_expr (dump_file, to, 0); } ! if (currval != to ! && !operand_equal_p (currval, to, OEP_PURE_SAME) ! /* ??? For addresses involving volatile objects or types operand_equal_p ! does not reliably detect ADDR_EXPRs as equal. We know we are only ! getting invariant gimple addresses here, so can use ! get_addr_base_and_unit_offset to do this comparison. */ ! && !(TREE_CODE (currval) == ADDR_EXPR ! && TREE_CODE (to) == ADDR_EXPR ! && (get_addr_base_and_unit_offset (TREE_OPERAND (currval, 0), &coff) ! == get_addr_base_and_unit_offset (TREE_OPERAND (to, 0), &toff)) ! && coff == toff)) { VN_INFO (from)->valnum = to; if (dump_file && (dump_flags & TDF_DETAILS)) diff -Nrcpad gcc-4.7.3/gcc/tree-ssa-sink.c gcc-4.7.4/gcc/tree-ssa-sink.c *** gcc-4.7.3/gcc/tree-ssa-sink.c Wed Oct 26 13:26:50 2011 --- gcc-4.7.4/gcc/tree-ssa-sink.c Wed May 7 10:01:36 2014 *************** statement_sink_location (gimple stmt, ba *** 412,418 **** && gimple_vdef (use_stmt) && operand_equal_p (gimple_assign_lhs (stmt), gimple_assign_lhs (use_stmt), 0)) ! continue; if (gimple_code (use_stmt) != GIMPLE_PHI) return false; --- 412,426 ---- && gimple_vdef (use_stmt) && operand_equal_p (gimple_assign_lhs (stmt), gimple_assign_lhs (use_stmt), 0)) ! { ! /* If use_stmt is or might be a nop assignment then USE_STMT ! acts as a use as well as definition. */ ! if (stmt != use_stmt ! && ref_maybe_used_by_stmt_p (use_stmt, ! gimple_assign_lhs (stmt))) ! return false; ! continue; ! } if (gimple_code (use_stmt) != GIMPLE_PHI) return false; *************** static void *** 628,634 **** execute_sink_code (void) { loop_optimizer_init (LOOPS_NORMAL); ! connect_infinite_loops_to_exit (); memset (&sink_stats, 0, sizeof (sink_stats)); calculate_dominance_info (CDI_DOMINATORS); --- 636,642 ---- execute_sink_code (void) { loop_optimizer_init (LOOPS_NORMAL); ! split_critical_edges (); connect_infinite_loops_to_exit (); memset (&sink_stats, 0, sizeof (sink_stats)); calculate_dominance_info (CDI_DOMINATORS); diff -Nrcpad gcc-4.7.3/gcc/tree-ssa-strlen.c gcc-4.7.4/gcc/tree-ssa-strlen.c *** gcc-4.7.3/gcc/tree-ssa-strlen.c Mon Feb 4 12:04:35 2013 --- gcc-4.7.4/gcc/tree-ssa-strlen.c Wed Jun 4 11:59:45 2014 *************** handle_char_store (gimple_stmt_iterator *** 1693,1699 **** its length may be decreased. */ adjust_last_stmt (si, stmt, false); } ! else if (si != NULL) { si = unshare_strinfo (si); si->length = build_int_cst (size_type_node, 0); --- 1693,1699 ---- its length may be decreased. */ adjust_last_stmt (si, stmt, false); } ! else if (si != NULL && integer_zerop (gimple_assign_rhs1 (stmt))) { si = unshare_strinfo (si); si->length = build_int_cst (size_type_node, 0); *************** strlen_enter_block (struct dom_walk_data *** 1896,1901 **** --- 1896,1924 ---- int count_vdef = 100; do_invalidate (dombb, phi, visited, &count_vdef); BITMAP_FREE (visited); + if (count_vdef == 0) + { + /* If there were too many vdefs in between immediate + dominator and current bb, invalidate everything. + If stridx_to_strinfo has been unshared, we need + to free it, otherwise just set it to NULL. */ + if (!strinfo_shared ()) + { + unsigned int i; + strinfo si; + + for (i = 1; + VEC_iterate (strinfo, stridx_to_strinfo, i, si); + ++i) + { + free_strinfo (si); + VEC_replace (strinfo, stridx_to_strinfo, + i, NULL); + } + } + else + stridx_to_strinfo = NULL; + } break; } } diff -Nrcpad gcc-4.7.3/gcc/tree-ssanames.c gcc-4.7.4/gcc/tree-ssanames.c *** gcc-4.7.3/gcc/tree-ssanames.c Tue Jun 14 19:39:36 2011 --- gcc-4.7.4/gcc/tree-ssanames.c Fri Apr 4 12:04:03 2014 *************** make_ssa_name_fn (struct function *fn, t *** 133,139 **** /* The node was cleared out when we put it on the free list, so there is no need to do so again here. */ ! gcc_assert (ssa_name (SSA_NAME_VERSION (t)) == NULL); VEC_replace (tree, SSANAMES (fn), SSA_NAME_VERSION (t), t); } else --- 133,139 ---- /* The node was cleared out when we put it on the free list, so there is no need to do so again here. */ ! gcc_assert (VEC_index (tree, SSANAMES (fn), SSA_NAME_VERSION (t)) == NULL); VEC_replace (tree, SSANAMES (fn), SSA_NAME_VERSION (t), t); } else diff -Nrcpad gcc-4.7.3/gcc/tree-streamer-in.c gcc-4.7.4/gcc/tree-streamer-in.c *** gcc-4.7.3/gcc/tree-streamer-in.c Mon Sep 24 10:27:45 2012 --- gcc-4.7.4/gcc/tree-streamer-in.c Fri Sep 13 05:26:32 2013 *************** unpack_ts_real_cst_value_fields (struct *** 172,183 **** static void unpack_ts_fixed_cst_value_fields (struct bitpack_d *bp, tree expr) { ! struct fixed_value fv; ! ! fv.mode = bp_unpack_enum (bp, machine_mode, MAX_MACHINE_MODE); ! fv.data.low = bp_unpack_var_len_int (bp); ! fv.data.high = bp_unpack_var_len_int (bp); ! TREE_FIXED_CST (expr) = fv; } --- 172,182 ---- static void unpack_ts_fixed_cst_value_fields (struct bitpack_d *bp, tree expr) { ! FIXED_VALUE_TYPE *fp = ggc_alloc_fixed_value (); ! fp->mode = bp_unpack_enum (bp, machine_mode, MAX_MACHINE_MODE); ! fp->data.low = bp_unpack_var_len_int (bp); ! fp->data.high = bp_unpack_var_len_int (bp); ! TREE_FIXED_CST_PTR (expr) = fp; } diff -Nrcpad gcc-4.7.3/gcc/tree-tailcall.c gcc-4.7.4/gcc/tree-tailcall.c *** gcc-4.7.3/gcc/tree-tailcall.c Wed Apr 3 08:22:12 2013 --- gcc-4.7.4/gcc/tree-tailcall.c Wed May 7 16:00:33 2014 *************** process_assignment (gimple stmt, gimple_ *** 329,336 **** case NEGATE_EXPR: if (FLOAT_TYPE_P (TREE_TYPE (op0))) *m = build_real (TREE_TYPE (op0), dconstm1); ! else *m = build_int_cst (TREE_TYPE (op0), -1); *ass_var = dest; return true; --- 329,338 ---- case NEGATE_EXPR: if (FLOAT_TYPE_P (TREE_TYPE (op0))) *m = build_real (TREE_TYPE (op0), dconstm1); ! else if (INTEGRAL_TYPE_P (TREE_TYPE (op0))) *m = build_int_cst (TREE_TYPE (op0), -1); + else + return false; *ass_var = dest; return true; *************** process_assignment (gimple stmt, gimple_ *** 342,349 **** { if (FLOAT_TYPE_P (TREE_TYPE (non_ass_var))) *m = build_real (TREE_TYPE (non_ass_var), dconstm1); ! else *m = build_int_cst (TREE_TYPE (non_ass_var), -1); *a = fold_build1 (NEGATE_EXPR, TREE_TYPE (non_ass_var), non_ass_var); } --- 344,353 ---- { if (FLOAT_TYPE_P (TREE_TYPE (non_ass_var))) *m = build_real (TREE_TYPE (non_ass_var), dconstm1); ! else if (INTEGRAL_TYPE_P (TREE_TYPE (non_ass_var))) *m = build_int_cst (TREE_TYPE (non_ass_var), -1); + else + return false; *a = fold_build1 (NEGATE_EXPR, TREE_TYPE (non_ass_var), non_ass_var); } *************** find_tail_calls (basic_block bb, struct *** 572,577 **** --- 576,586 ---- if (!tail_recursion && (m || a)) return; + /* For pointers don't allow additions or multiplications. */ + if ((m || a) + && POINTER_TYPE_P (TREE_TYPE (DECL_RESULT (current_function_decl)))) + return; + nw = XNEW (struct tailcall); nw->call_gsi = gsi; diff -Nrcpad gcc-4.7.3/gcc/tree-vect-data-refs.c gcc-4.7.4/gcc/tree-vect-data-refs.c *** gcc-4.7.3/gcc/tree-vect-data-refs.c Mon Jan 14 14:59:51 2013 --- gcc-4.7.4/gcc/tree-vect-data-refs.c Fri May 23 09:46:18 2014 *************** vect_analyze_data_ref_access (struct dat *** 2332,2337 **** --- 2332,2343 ---- if (loop_vinfo && dr_step == 0) { GROUP_FIRST_ELEMENT (vinfo_for_stmt (stmt)) = NULL; + if (nested_in_vect_loop_p (loop, stmt)) + { + if (vect_print_dump_info (REPORT_DETAILS)) + fprintf (vect_dump, "zero step in inner loop of nest"); + return false; + } return DR_IS_READ (dr); } diff -Nrcpad gcc-4.7.3/gcc/tree-vect-loop.c gcc-4.7.4/gcc/tree-vect-loop.c *** gcc-4.7.3/gcc/tree-vect-loop.c Tue Feb 19 17:30:27 2013 --- gcc-4.7.4/gcc/tree-vect-loop.c Fri May 23 09:46:18 2014 *************** vect_analyze_loop_operations (loop_vec_i *** 1466,1472 **** if (!LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo) || LOOP_VINFO_INT_NITERS (loop_vinfo) % vectorization_factor != 0 ! || LOOP_PEELING_FOR_ALIGNMENT (loop_vinfo)) { if (vect_print_dump_info (REPORT_DETAILS)) fprintf (vect_dump, "epilog loop required."); --- 1466,1472 ---- if (!LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo) || LOOP_VINFO_INT_NITERS (loop_vinfo) % vectorization_factor != 0 ! || LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo)) { if (vect_print_dump_info (REPORT_DETAILS)) fprintf (vect_dump, "epilog loop required."); *************** vect_is_simple_reduction_1 (loop_vec_inf *** 2009,2014 **** --- 2009,2020 ---- || (!check_reduction && flow_loop_nested_p (vect_loop, loop))); name = PHI_RESULT (phi); + /* ??? If there are no uses of the PHI result the inner loop reduction + won't be detected as possibly double-reduction by vectorizable_reduction + because that tries to walk the PHI arg from the preheader edge which + can be constant. See PR60382. */ + if (has_zero_uses (name)) + return NULL; nloop_uses = 0; FOR_EACH_IMM_USE_FAST (use_p, imm_iter, name) { *************** vect_finalize_reduction: *** 4158,4164 **** result. (The reduction result is expected to have two immediate uses - one at the latch block, and one at the loop exit). */ FOR_EACH_IMM_USE_FAST (use_p, imm_iter, scalar_dest) ! if (!flow_bb_inside_loop_p (loop, gimple_bb (USE_STMT (use_p)))) VEC_safe_push (gimple, heap, phis, USE_STMT (use_p)); /* We expect to have found an exit_phi because of loop-closed-ssa --- 4164,4171 ---- result. (The reduction result is expected to have two immediate uses - one at the latch block, and one at the loop exit). */ FOR_EACH_IMM_USE_FAST (use_p, imm_iter, scalar_dest) ! if (!flow_bb_inside_loop_p (loop, gimple_bb (USE_STMT (use_p))) ! && !is_gimple_debug (USE_STMT (use_p))) VEC_safe_push (gimple, heap, phis, USE_STMT (use_p)); /* We expect to have found an exit_phi because of loop-closed-ssa *************** vect_finalize_reduction: *** 4286,4292 **** FOR_EACH_IMM_USE_FAST (use_p, imm_iter, scalar_dest) { if (!flow_bb_inside_loop_p (loop, gimple_bb (USE_STMT (use_p)))) ! VEC_safe_push (gimple, heap, phis, USE_STMT (use_p)); else { if (double_reduc && gimple_code (USE_STMT (use_p)) == GIMPLE_PHI) --- 4293,4302 ---- FOR_EACH_IMM_USE_FAST (use_p, imm_iter, scalar_dest) { if (!flow_bb_inside_loop_p (loop, gimple_bb (USE_STMT (use_p)))) ! { ! if (!is_gimple_debug (USE_STMT (use_p))) ! VEC_safe_push (gimple, heap, phis, USE_STMT (use_p)); ! } else { if (double_reduc && gimple_code (USE_STMT (use_p)) == GIMPLE_PHI) *************** vect_finalize_reduction: *** 4296,4302 **** FOR_EACH_IMM_USE_FAST (phi_use_p, phi_imm_iter, phi_res) { if (!flow_bb_inside_loop_p (loop, ! gimple_bb (USE_STMT (phi_use_p)))) VEC_safe_push (gimple, heap, phis, USE_STMT (phi_use_p)); } --- 4306,4313 ---- FOR_EACH_IMM_USE_FAST (phi_use_p, phi_imm_iter, phi_res) { if (!flow_bb_inside_loop_p (loop, ! gimple_bb (USE_STMT (phi_use_p))) ! && !is_gimple_debug (USE_STMT (phi_use_p))) VEC_safe_push (gimple, heap, phis, USE_STMT (phi_use_p)); } diff -Nrcpad gcc-4.7.3/gcc/tree-vrp.c gcc-4.7.4/gcc/tree-vrp.c *** gcc-4.7.3/gcc/tree-vrp.c Tue Feb 5 12:54:12 2013 --- gcc-4.7.4/gcc/tree-vrp.c Wed May 7 16:08:28 2014 *************** register_edge_assert_for_1 (tree op, enu *** 4536,4544 **** } else if (CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (op_def))) { ! /* Recurse through the type conversion. */ ! retval |= register_edge_assert_for_1 (gimple_assign_rhs1 (op_def), ! code, e, bsi); } return retval; --- 4536,4548 ---- } else if (CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (op_def))) { ! /* Recurse through the type conversion, unless it is a narrowing ! conversion or conversion from non-integral type. */ ! tree rhs = gimple_assign_rhs1 (op_def); ! if (INTEGRAL_TYPE_P (TREE_TYPE (rhs)) ! && (TYPE_PRECISION (TREE_TYPE (rhs)) ! <= TYPE_PRECISION (TREE_TYPE (op)))) ! retval |= register_edge_assert_for_1 (rhs, code, e, bsi); } return retval; diff -Nrcpad gcc-4.7.3/gnattools/ChangeLog gcc-4.7.4/gnattools/ChangeLog *** gcc-4.7.3/gnattools/ChangeLog Thu Apr 11 07:54:52 2013 --- gcc-4.7.4/gnattools/ChangeLog Thu Jun 12 12:05:23 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/include/ChangeLog gcc-4.7.4/include/ChangeLog *** gcc-4.7.3/include/ChangeLog Thu Apr 11 07:55:13 2013 --- gcc-4.7.4/include/ChangeLog Thu Jun 12 12:05:48 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/intl/ChangeLog gcc-4.7.4/intl/ChangeLog *** gcc-4.7.3/intl/ChangeLog Thu Apr 11 07:54:56 2013 --- gcc-4.7.4/intl/ChangeLog Thu Jun 12 12:05:27 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libada/ChangeLog gcc-4.7.4/libada/ChangeLog *** gcc-4.7.3/libada/ChangeLog Thu Apr 11 07:55:42 2013 --- gcc-4.7.4/libada/ChangeLog Thu Jun 12 12:06:25 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libcpp/ChangeLog gcc-4.7.4/libcpp/ChangeLog *** gcc-4.7.3/libcpp/ChangeLog Thu Apr 11 07:55:38 2013 --- gcc-4.7.4/libcpp/ChangeLog Thu Jun 12 12:06:19 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libcpp/po/ChangeLog gcc-4.7.4/libcpp/po/ChangeLog *** gcc-4.7.3/libcpp/po/ChangeLog Thu Apr 11 07:55:34 2013 --- gcc-4.7.4/libcpp/po/ChangeLog Thu Jun 12 12:06:13 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libdecnumber/ChangeLog gcc-4.7.4/libdecnumber/ChangeLog *** gcc-4.7.3/libdecnumber/ChangeLog Thu Apr 11 07:54:20 2013 --- gcc-4.7.4/libdecnumber/ChangeLog Thu Jun 12 12:04:52 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libffi/ChangeLog gcc-4.7.4/libffi/ChangeLog *** gcc-4.7.3/libffi/ChangeLog Thu Apr 11 07:56:07 2013 --- gcc-4.7.4/libffi/ChangeLog Thu Jun 12 12:06:57 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libgcc/ChangeLog gcc-4.7.4/libgcc/ChangeLog *** gcc-4.7.3/libgcc/ChangeLog Thu Apr 11 07:56:23 2013 --- gcc-4.7.4/libgcc/ChangeLog Thu Jun 12 12:07:18 2014 *************** *** 1,3 **** --- 1,186 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + + 2014-03-20 Joel Sherrill + + * config.host (v850*-*-*): Add to tmake_file instead of resetting it. + + 2014-02-28 Joey Ye + + Backport from mainline r208229 + 2014-02-28 Joey Ye + + PR libgcc/60166 + * config/arm/sfp-machine.h (_FP_NANFRAC_H, + _FP_NANFRAC_S, _FP_NANFRAC_D, _FP_NANFRAC_Q): + Set to zero. + + 2014-01-25 Walter Lee + + Backport from mainline + 2014-01-25 Walter Lee + + * config/tilepro/atomic.c (pre_atomic_barrier): Mark inline. + (post_atomic_barrier): Ditto. + (__fetch_and_do): New macro. + (__atomic_fetch_and_do): Use __fetch_and_do. + (__sync_fetch_and_do): New macro. + (__sync_fetch_and_add_4): New function. + (__sync_fetch_and_sub_4): New function. + (__sync_fetch_and_or_4): New function. + (__sync_fetch_and_and_4): New function. + (__sync_fetch_and_xor_4): New function. + (__sync_fetch_and_nand_4): New function. + (__sync_fetch_and_add_8): New function. + (__sync_fetch_and_sub_8): New function. + (__sync_fetch_and_or_8): New function. + (__sync_fetch_and_and_8): New function. + (__sync_fetch_and_xor_8): New function. + (__sync_fetch_and_nand_8): New function. + (__do_and_fetch): New macro. + (__atomic_do_and_fetch): Use __do_and_fetch. + (__sync_do_and_fetch): New macro. + (__sync_add_and_fetch_4): New function. + (__sync_sub_and_fetch_4): New function. + (__sync_or_and_fetch_4): New function. + (__sync_and_and_fetch_4): New function. + (__sync_xor_and_fetch_4): New function. + (__sync_nand_and_fetch_4): New function. + (__sync_add_and_fetch_8): New function. + (__sync_sub_and_fetch_8): New function. + (__sync_or_and_fetch_8): New function. + (__sync_and_and_fetch_8): New function. + (__sync_xor_and_fetch_8): New function. + (__sync_nand_and_fetch_8): New function. + (__sync_exchange_methods): New macro. + (__sync_val_compare_and_swap_4): New function. + (__sync_bool_compare_and_swap_4): New function. + (__sync_lock_test_and_test_4): New function. + (__sync_val_compare_and_swap_8): New function. + (__sync_bool_compare_and_swap_8): New function. + (__sync_lock_test_and_test_8): New function. + (__subword_cmpxchg_body): New macro. + (__atomic_compare_exchange_1): Use __subword_cmpxchg_body. + (__atomic_compare_exchange_2): Ditto. + (__sync_subword_cmpxchg): New macro. + (__sync_val_compare_and_swap_1): New function. + (__sync_bool_compare_and_swap_1): New function. + (__sync_val_compare_and_swap_2): New function. + (__sync_bool_compare_and_swap_2): New function. + (__atomic_subword): Rename to ... + (__subword): ... New name. + (__atomic_subword_fetch): Use __subword. + (__sync_subword_fetch): New macro. + (__sync_fetch_and_add_1): New function. + (__sync_fetch_and_sub_1): New function. + (__sync_fetch_and_or_1): New function. + (__sync_fetch_and_and_1): New function. + (__sync_fetch_and_xor_1): New function. + (__sync_fetch_and_nand_1): New function. + (__sync_fetch_and_add_2): New function. + (__sync_fetch_and_sub_2): New function. + (__sync_fetch_and_or_2): New function. + (__sync_fetch_and_and_2): New function. + (__sync_fetch_and_xor_2): New function. + (__sync_fetch_and_nand_2): New function. + (__sync_add_and_fetch_1): New function. + (__sync_sub_and_fetch_1): New function. + (__sync_or_and_fetch_1): New function. + (__sync_and_and_fetch_1): New function. + (__sync_xor_and_fetch_1): New function. + (__sync_nand_and_fetch_1): New function. + (__sync_add_and_fetch_2): New function. + (__sync_sub_and_fetch_2): New function. + (__sync_or_and_fetch_2): New function. + (__sync_and_and_fetch_2): New function. + (__sync_xor_and_fetch_2): New function. + (__sync_nand_and_fetch_2): New function. + (__atomic_subword_lock): Use __subword. + (__sync_subword_lock): New macro. + (__sync_lock_test_and_set_1): New function. + (__sync_lock_test_and_set_2): New function. + + 2014-01-25 Walter Lee + + Backport from mainline + 2014-01-25 Walter Lee + + * config/tilepro/atomic.c (BIT_OFFSET): Define. + (__atomic_subword_cmpxchg): Use BIT_OFFSET. + (__atomic_subword): Ditto. + + 2014-01-25 Walter Lee + + Backport from mainline + 2014-01-25 Walter Lee + + * config/tilepro/atomic.c (__atomic_do_and_fetch): Add + a prefix op argument. + (__atomic_nand_fetch_4): Add prefix op. + (__atomic_nand_fetch_8): Ditto. + + 2014-01-21 Baruch Siach + + * config.host (tmake_file): add t-slibgcc-libgcc for xtensa*-*-linux*. + + 2014-01-03 Joseph Myers + + * config/rs6000/ibm-ldouble.c (__gcc_qdiv): Scale up arguments in + case of small numerator and finite nonzero result. + + 2013-11-10 Kai Tietz + + Back-merged from trunk + * config/i386/cygming-crtbegin.c (__gcc_register_frame): + Increment load-count on use of LIBGCC_SONAME DLL. + (hmod_libgcc): New static variable to hold handle of + LIBGCC_SONAME DLL. + (__gcc_deregister_frame): Decrement load-count of + LIBGCC_SONAME DLL. + + 2013-11-07 Uros Bizjak + + * config/i386/32/sfp-machine.c (FP_HANDLE_EXCEPTIONS): Handle + FP_EX_DENORM. + * config/i386/64/sfp-machine.c (FP_HANDLE_EXCEPTIONS): Ditto. + + 2013-08-01 Maxim Kuvyrkov + + Backport from trunk: Fix licenses on several libgcc files. + + * config/ia64/unwind-ia64.h, + * config/mips/vr4120-div.S: Fix license from GPL-3.0+ to + GPL-3.0-with-GCC-exception. + + 2013-06-08 Walter Lee + + Backport from mainline: + 2013-06-08 Walter Lee + + * config/tilepro/atomic.h: Don't include stdint.h or features.h. + Replace int64_t with long long. Add __extension__ where + appropriate. + + 2013-06-06 Douglas B Rupp + + * config.host (arm-wrs-vxworks): Configure with other soft float. + + 2013-05-20 Chung-Ju Wu + + Backport from mainline: + 2012-05-24 Olivier Hainque + + * Makefile.in (clean): Remove libgcc_tm.stamp as well. + Use a separate command for stamp removals. + + 2013-04-11 Julian Brown + + * config/arm/linux-atomic.c (SUBWORD_SYNC_OP, SUBWORD_VAL_CAS) + (SUBWORD_TEST_AND_SET): Use signed char/short types instead of + unsigned char/unsigned short. + (__sync_val_compare_and_swap_{1,2}): Handle signed argument. + 2013-04-11 Release Manager * GCC 4.7.3 released. *************** *** 14,20 **** PR target/49880 * config/sh/lib1funcs.S (sdivsi3_i4, udivsi3_i4): Enable for SH2A. ! (sdivsi3, udivsi3): Remove SH4 check and always compile these functions. 2013-03-06 Oleg Endo --- 197,204 ---- PR target/49880 * config/sh/lib1funcs.S (sdivsi3_i4, udivsi3_i4): Enable for SH2A. ! (sdivsi3, udivsi3): Remove SH4 check and always compile these ! functions. 2013-03-06 Oleg Endo diff -Nrcpad gcc-4.7.3/libgcc/Makefile.in gcc-4.7.4/libgcc/Makefile.in *** gcc-4.7.3/libgcc/Makefile.in Tue Dec 4 19:09:59 2012 --- gcc-4.7.4/libgcc/Makefile.in Mon May 20 03:52:11 2013 *************** installcheck: *** 121,127 **** .PHONY: all clean clean: ! -rm -f config.h libgcc_tm.h stamp-h stmp-ldirs libgcc.map -rm -f *$(objext) -rm -f *.dep -rm -f *.a --- 121,128 ---- .PHONY: all clean clean: ! -rm -f config.h libgcc_tm.h libgcc.map ! -rm -f libgcc_tm.stamp stamp-h stmp-ldirs -rm -f *$(objext) -rm -f *.dep -rm -f *.a diff -Nrcpad gcc-4.7.3/libgcc/config/arm/linux-atomic.c gcc-4.7.4/libgcc/config/arm/linux-atomic.c *** gcc-4.7.3/libgcc/config/arm/linux-atomic.c Wed Nov 2 15:23:48 2011 --- gcc-4.7.4/libgcc/config/arm/linux-atomic.c Thu Apr 11 16:26:48 2013 *************** FETCH_AND_OP_WORD (nand, ~, &) *** 97,115 **** return (RETURN & mask) >> shift; \ } ! SUBWORD_SYNC_OP (add, , +, unsigned short, 2, oldval) ! SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, oldval) ! SUBWORD_SYNC_OP (or, , |, unsigned short, 2, oldval) ! SUBWORD_SYNC_OP (and, , &, unsigned short, 2, oldval) ! SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, oldval) ! SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, oldval) ! SUBWORD_SYNC_OP (add, , +, unsigned char, 1, oldval) ! SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, oldval) ! SUBWORD_SYNC_OP (or, , |, unsigned char, 1, oldval) ! SUBWORD_SYNC_OP (and, , &, unsigned char, 1, oldval) ! SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, oldval) ! SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, oldval) #define OP_AND_FETCH_WORD(OP, PFX_OP, INF_OP) \ int HIDDEN \ --- 97,115 ---- return (RETURN & mask) >> shift; \ } ! SUBWORD_SYNC_OP (add, , +, short, 2, oldval) ! SUBWORD_SYNC_OP (sub, , -, short, 2, oldval) ! SUBWORD_SYNC_OP (or, , |, short, 2, oldval) ! SUBWORD_SYNC_OP (and, , &, short, 2, oldval) ! SUBWORD_SYNC_OP (xor, , ^, short, 2, oldval) ! SUBWORD_SYNC_OP (nand, ~, &, short, 2, oldval) ! SUBWORD_SYNC_OP (add, , +, signed char, 1, oldval) ! SUBWORD_SYNC_OP (sub, , -, signed char, 1, oldval) ! SUBWORD_SYNC_OP (or, , |, signed char, 1, oldval) ! SUBWORD_SYNC_OP (and, , &, signed char, 1, oldval) ! SUBWORD_SYNC_OP (xor, , ^, signed char, 1, oldval) ! SUBWORD_SYNC_OP (nand, ~, &, signed char, 1, oldval) #define OP_AND_FETCH_WORD(OP, PFX_OP, INF_OP) \ int HIDDEN \ *************** OP_AND_FETCH_WORD (and, , &) *** 132,150 **** OP_AND_FETCH_WORD (xor, , ^) OP_AND_FETCH_WORD (nand, ~, &) ! SUBWORD_SYNC_OP (add, , +, unsigned short, 2, newval) ! SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, newval) ! SUBWORD_SYNC_OP (or, , |, unsigned short, 2, newval) ! SUBWORD_SYNC_OP (and, , &, unsigned short, 2, newval) ! SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, newval) ! SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, newval) ! SUBWORD_SYNC_OP (add, , +, unsigned char, 1, newval) ! SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, newval) ! SUBWORD_SYNC_OP (or, , |, unsigned char, 1, newval) ! SUBWORD_SYNC_OP (and, , &, unsigned char, 1, newval) ! SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, newval) ! SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, newval) int HIDDEN __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval) --- 132,150 ---- OP_AND_FETCH_WORD (xor, , ^) OP_AND_FETCH_WORD (nand, ~, &) ! SUBWORD_SYNC_OP (add, , +, short, 2, newval) ! SUBWORD_SYNC_OP (sub, , -, short, 2, newval) ! SUBWORD_SYNC_OP (or, , |, short, 2, newval) ! SUBWORD_SYNC_OP (and, , &, short, 2, newval) ! SUBWORD_SYNC_OP (xor, , ^, short, 2, newval) ! SUBWORD_SYNC_OP (nand, ~, &, short, 2, newval) ! SUBWORD_SYNC_OP (add, , +, signed char, 1, newval) ! SUBWORD_SYNC_OP (sub, , -, signed char, 1, newval) ! SUBWORD_SYNC_OP (or, , |, signed char, 1, newval) ! SUBWORD_SYNC_OP (and, , &, signed char, 1, newval) ! SUBWORD_SYNC_OP (xor, , ^, signed char, 1, newval) ! SUBWORD_SYNC_OP (nand, ~, &, signed char, 1, newval) int HIDDEN __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval) *************** __sync_val_compare_and_swap_4 (int *ptr, *** 181,187 **** actual_oldval = *wordptr; \ \ if (__builtin_expect (((actual_oldval & mask) >> shift) != \ ! (unsigned int) oldval, 0)) \ return (actual_oldval & mask) >> shift; \ \ actual_newval = (actual_oldval & ~mask) \ --- 181,187 ---- actual_oldval = *wordptr; \ \ if (__builtin_expect (((actual_oldval & mask) >> shift) != \ ! ((unsigned int) oldval & MASK_##WIDTH), 0)) \ return (actual_oldval & mask) >> shift; \ \ actual_newval = (actual_oldval & ~mask) \ *************** __sync_val_compare_and_swap_4 (int *ptr, *** 195,202 **** } \ } ! SUBWORD_VAL_CAS (unsigned short, 2) ! SUBWORD_VAL_CAS (unsigned char, 1) typedef unsigned char bool; --- 195,202 ---- } \ } ! SUBWORD_VAL_CAS (short, 2) ! SUBWORD_VAL_CAS (signed char, 1) typedef unsigned char bool; *************** __sync_bool_compare_and_swap_4 (int *ptr *** 217,224 **** return (oldval == actual_oldval); \ } ! SUBWORD_BOOL_CAS (unsigned short, 2) ! SUBWORD_BOOL_CAS (unsigned char, 1) void HIDDEN __sync_synchronize (void) --- 217,224 ---- return (oldval == actual_oldval); \ } ! SUBWORD_BOOL_CAS (short, 2) ! SUBWORD_BOOL_CAS (signed char, 1) void HIDDEN __sync_synchronize (void) *************** __sync_lock_test_and_set_4 (int *ptr, in *** 260,267 **** return (oldval & mask) >> shift; \ } ! SUBWORD_TEST_AND_SET (unsigned short, 2) ! SUBWORD_TEST_AND_SET (unsigned char, 1) #define SYNC_LOCK_RELEASE(TYPE, WIDTH) \ void HIDDEN \ --- 260,267 ---- return (oldval & mask) >> shift; \ } ! SUBWORD_TEST_AND_SET (short, 2) ! SUBWORD_TEST_AND_SET (signed char, 1) #define SYNC_LOCK_RELEASE(TYPE, WIDTH) \ void HIDDEN \ diff -Nrcpad gcc-4.7.3/libgcc/config/arm/sfp-machine.h gcc-4.7.4/libgcc/config/arm/sfp-machine.h *** gcc-4.7.3/libgcc/config/arm/sfp-machine.h Fri Aug 5 15:13:48 2011 --- gcc-4.7.4/libgcc/config/arm/sfp-machine.h Fri Feb 28 22:05:13 2014 *************** typedef int __gcc_CMPtype __attribute__ *** 19,28 **** #define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) #define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) ! #define _FP_NANFRAC_H ((_FP_QNANBIT_H << 1) - 1) ! #define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1) ! #define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1 ! #define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1 #define _FP_NANSIGN_H 0 #define _FP_NANSIGN_S 0 #define _FP_NANSIGN_D 0 --- 19,30 ---- #define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) #define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) ! /* According to RTABI, QNAN is only with the most significant bit of the ! significand set, and all other significand bits zero. */ ! #define _FP_NANFRAC_H 0 ! #define _FP_NANFRAC_S 0 ! #define _FP_NANFRAC_D 0, 0 ! #define _FP_NANFRAC_Q 0, 0, 0, 0 #define _FP_NANSIGN_H 0 #define _FP_NANSIGN_S 0 #define _FP_NANSIGN_D 0 diff -Nrcpad gcc-4.7.3/libgcc/config/i386/32/sfp-machine.h gcc-4.7.4/libgcc/config/i386/32/sfp-machine.h *** gcc-4.7.3/libgcc/config/i386/32/sfp-machine.h Sun Nov 4 18:58:29 2012 --- gcc-4.7.4/libgcc/config/i386/32/sfp-machine.h Thu Nov 7 23:01:41 2013 *************** struct fenv *** 140,145 **** --- 140,153 ---- __asm__ __volatile__ ("fdiv {%y0, %0|%0, %y0}" : "+t" (f)); \ __asm__ __volatile__ ("fwait"); \ } \ + if (_fex & FP_EX_DENORM) \ + { \ + struct fenv temp; \ + __asm__ __volatile__ ("fnstenv %0" : "=m" (temp)); \ + temp.__status_word |= FP_EX_DENORM; \ + __asm__ __volatile__ ("fldenv %0" : : "m" (temp)); \ + __asm__ __volatile__ ("fwait"); \ + } \ if (_fex & FP_EX_DIVZERO) \ { \ float f = 1.0, g = 0.0; \ diff -Nrcpad gcc-4.7.3/libgcc/config/i386/64/sfp-machine.h gcc-4.7.4/libgcc/config/i386/64/sfp-machine.h *** gcc-4.7.3/libgcc/config/i386/64/sfp-machine.h Sun Nov 4 18:58:29 2012 --- gcc-4.7.4/libgcc/config/i386/64/sfp-machine.h Thu Nov 7 23:01:41 2013 *************** struct fenv *** 89,94 **** --- 89,102 ---- float f = 0.0; \ __asm__ __volatile__ (ASM_INVALID : : "x" (f)); \ } \ + if (_fex & FP_EX_DENORM) \ + { \ + struct fenv temp; \ + __asm__ __volatile__ ("fnstenv %0" : "=m" (temp)); \ + temp.__status_word |= FP_EX_DENORM; \ + __asm__ __volatile__ ("fldenv %0" : : "m" (temp)); \ + __asm__ __volatile__ ("fwait"); \ + } \ if (_fex & FP_EX_DIVZERO) \ { \ float f = 1.0, g = 0.0; \ diff -Nrcpad gcc-4.7.3/libgcc/config/i386/cygming-crtbegin.c gcc-4.7.4/libgcc/config/i386/cygming-crtbegin.c *** gcc-4.7.3/libgcc/config/i386/cygming-crtbegin.c Wed Nov 2 15:26:35 2011 --- gcc-4.7.4/libgcc/config/i386/cygming-crtbegin.c Sun Nov 10 11:52:54 2013 *************** *** 1,5 **** /* crtbegin object for windows32 targets. ! Copyright (C) 2007, 2009, 2010, 2011 Free Software Foundation, Inc. Contributed by Danny Smith --- 1,5 ---- /* crtbegin object for windows32 targets. ! Copyright (C) 2007, 2009-2011, 2013 Free Software Foundation, Inc. Contributed by Danny Smith *************** static EH_FRAME_SECTION_CONST char __EH_ *** 69,74 **** --- 69,77 ---- = { }; static struct object obj; + + /* Handle of libgcc's DLL reference. */ + HANDLE hmod_libgcc; #endif #if TARGET_USE_JCR_SECTION *************** __gcc_register_frame (void) *** 93,101 **** void (*register_frame_fn) (const void *, struct object *); HANDLE h = GetModuleHandle (LIBGCC_SONAME); if (h) ! register_frame_fn = (void (*) (const void *, struct object *)) ! GetProcAddress (h, "__register_frame_info"); else register_frame_fn = __register_frame_info; if (register_frame_fn) --- 96,109 ---- void (*register_frame_fn) (const void *, struct object *); HANDLE h = GetModuleHandle (LIBGCC_SONAME); + if (h) ! { ! /* Increasing the load-count of LIBGCC_SONAME DLL. */ ! hmod_libgcc = LoadLibrary (LIBGCC_SONAME); ! register_frame_fn = (void (*) (const void *, struct object *)) ! GetProcAddress (h, "__register_frame_info"); ! } else register_frame_fn = __register_frame_info; if (register_frame_fn) *************** __gcc_deregister_frame (void) *** 132,136 **** --- 140,146 ---- deregister_frame_fn = __deregister_frame_info; if (deregister_frame_fn) deregister_frame_fn (__EH_FRAME_BEGIN__); + if (hmod_libgcc) + FreeLibrary (hmod_libgcc); #endif } diff -Nrcpad gcc-4.7.3/libgcc/config/ia64/unwind-ia64.h gcc-4.7.4/libgcc/config/ia64/unwind-ia64.h *** gcc-4.7.3/libgcc/config/ia64/unwind-ia64.h Fri Aug 5 14:37:48 2011 --- gcc-4.7.4/libgcc/config/ia64/unwind-ia64.h Thu Aug 1 21:28:16 2013 *************** *** 2,22 **** Contributed by Andrew MacLeod Andrew Haley ! This file is part of GCC. ! GCC is free software; you can redistribute it and/or modify ! it under the terms of the GNU General Public License as published by ! the Free Software Foundation; either version 3, or (at your option) ! any later version. ! GCC is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! GNU General Public License for more details. ! You should have received a copy of the GNU General Public License ! along with GCC; see the file COPYING3. If not see ! . */ struct unw_table_entry { --- 2,27 ---- Contributed by Andrew MacLeod Andrew Haley ! This file is part of GCC. ! GCC is free software; you can redistribute it and/or modify it under ! the terms of the GNU General Public License as published by the Free ! Software Foundation; either version 3, or (at your option) any later ! version. ! GCC is distributed in the hope that it will be useful, but WITHOUT ANY ! WARRANTY; without even the implied warranty of MERCHANTABILITY or ! FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ! for more details. ! Under Section 7 of GPL version 3, you are granted additional ! permissions described in the GCC Runtime Library Exception, version ! 3.1, as published by the Free Software Foundation. ! ! You should have received a copy of the GNU General Public License and ! a copy of the GCC Runtime Library Exception along with this program; ! see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ! . */ struct unw_table_entry { diff -Nrcpad gcc-4.7.3/libgcc/config/libbid/ChangeLog gcc-4.7.4/libgcc/config/libbid/ChangeLog *** gcc-4.7.3/libgcc/config/libbid/ChangeLog Thu Apr 11 07:56:27 2013 --- gcc-4.7.4/libgcc/config/libbid/ChangeLog Thu Jun 12 12:07:23 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libgcc/config/mips/vr4120-div.S gcc-4.7.4/libgcc/config/mips/vr4120-div.S *** gcc-4.7.3/libgcc/config/mips/vr4120-div.S Wed Nov 2 15:23:48 2011 --- gcc-4.7.4/libgcc/config/mips/vr4120-div.S Thu Aug 1 21:28:16 2013 *************** *** 3,20 **** This file is part of GCC. ! GCC is free software; you can redistribute it and/or modify ! it under the terms of the GNU General Public License as published by ! the Free Software Foundation; either version 3, or (at your option) ! any later version. ! GCC is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! GNU General Public License for more details. ! You should have received a copy of the GNU General Public License ! along with GCC; see the file COPYING3. If not see . */ /* This file contains functions which implement divsi3 and modsi3 for --- 3,25 ---- This file is part of GCC. ! GCC is free software; you can redistribute it and/or modify it under ! the terms of the GNU General Public License as published by the Free ! Software Foundation; either version 3, or (at your option) any later ! version. ! GCC is distributed in the hope that it will be useful, but WITHOUT ANY ! WARRANTY; without even the implied warranty of MERCHANTABILITY or ! FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ! for more details. ! Under Section 7 of GPL version 3, you are granted additional ! permissions described in the GCC Runtime Library Exception, version ! 3.1, as published by the Free Software Foundation. ! ! You should have received a copy of the GNU General Public License and ! a copy of the GCC Runtime Library Exception along with this program; ! see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ /* This file contains functions which implement divsi3 and modsi3 for diff -Nrcpad gcc-4.7.3/libgcc/config/rs6000/ibm-ldouble.c gcc-4.7.4/libgcc/config/rs6000/ibm-ldouble.c *** gcc-4.7.3/libgcc/config/rs6000/ibm-ldouble.c Fri Aug 5 15:13:48 2011 --- gcc-4.7.4/libgcc/config/rs6000/ibm-ldouble.c Fri Jan 3 15:54:24 2014 *************** __gcc_qdiv (double a, double b, double c *** 189,195 **** || nonfinite (t)) return t; ! /* Finite nonzero result requires corrections to the highest order term. */ s = c * t; /* (s,sigma) = c*t exactly. */ w = -(-b + d * t); /* Written to get fnmsub for speed, but not --- 189,204 ---- || nonfinite (t)) return t; ! /* Finite nonzero result requires corrections to the highest order ! term. These corrections require the low part of c * t to be ! exactly represented in double. */ ! if (fabs (a) <= 0x1p-969) ! { ! a *= 0x1p106; ! b *= 0x1p106; ! c *= 0x1p106; ! d *= 0x1p106; ! } s = c * t; /* (s,sigma) = c*t exactly. */ w = -(-b + d * t); /* Written to get fnmsub for speed, but not diff -Nrcpad gcc-4.7.3/libgcc/config/tilepro/atomic.c gcc-4.7.4/libgcc/config/tilepro/atomic.c *** gcc-4.7.3/libgcc/config/tilepro/atomic.c Fri Apr 6 15:13:09 2012 --- gcc-4.7.4/libgcc/config/tilepro/atomic.c Sat Jan 25 22:49:41 2014 *************** *** 29,35 **** /* This code should be inlined by the compiler, but for now support it as out-of-line methods in libgcc. */ ! static void pre_atomic_barrier (int model) { switch ((enum memmodel) model) --- 29,35 ---- /* This code should be inlined by the compiler, but for now support it as out-of-line methods in libgcc. */ ! static inline void pre_atomic_barrier (int model) { switch ((enum memmodel) model) *************** pre_atomic_barrier (int model) *** 45,51 **** return; } ! static void post_atomic_barrier (int model) { switch ((enum memmodel) model) --- 45,51 ---- return; } ! static inline void post_atomic_barrier (int model) { switch ((enum memmodel) model) *************** post_atomic_barrier (int model) *** 63,78 **** #define __unused __attribute__((unused)) ! #define __atomic_fetch_and_do(type, size, opname) \ ! type \ ! __atomic_fetch_##opname##_##size(type* p, type i, int model) \ { \ ! pre_atomic_barrier(model); \ type rv = arch_atomic_##opname(p, i); \ ! post_atomic_barrier(model); \ return rv; \ } __atomic_fetch_and_do (int, 4, add) __atomic_fetch_and_do (int, 4, sub) __atomic_fetch_and_do (int, 4, or) --- 63,83 ---- #define __unused __attribute__((unused)) ! #define __fetch_and_do(proto, type, size, opname, top, bottom) \ ! proto \ { \ ! top; \ type rv = arch_atomic_##opname(p, i); \ ! bottom; \ return rv; \ } + #define __atomic_fetch_and_do(type, size, opname) \ + __fetch_and_do(type __atomic_fetch_##opname##_##size(type* p, type i, int model), \ + type, size, opname, \ + pre_atomic_barrier(model), \ + post_atomic_barrier(model)) \ + __atomic_fetch_and_do (int, 4, add) __atomic_fetch_and_do (int, 4, sub) __atomic_fetch_and_do (int, 4, or) *************** __atomic_fetch_and_do (long long, 8, or) *** 85,111 **** __atomic_fetch_and_do (long long, 8, and) __atomic_fetch_and_do (long long, 8, xor) __atomic_fetch_and_do (long long, 8, nand) ! #define __atomic_do_and_fetch(type, size, opname, op) \ ! type \ ! __atomic_##opname##_fetch_##size(type* p, type i, int model) \ ! { \ ! pre_atomic_barrier(model); \ ! type rv = arch_atomic_##opname(p, i) op i; \ ! post_atomic_barrier(model); \ ! return rv; \ } ! __atomic_do_and_fetch (int, 4, add, +) ! __atomic_do_and_fetch (int, 4, sub, -) ! __atomic_do_and_fetch (int, 4, or, |) ! __atomic_do_and_fetch (int, 4, and, &) ! __atomic_do_and_fetch (int, 4, xor, |) ! __atomic_do_and_fetch (int, 4, nand, &) ! __atomic_do_and_fetch (long long, 8, add, +) ! __atomic_do_and_fetch (long long, 8, sub, -) ! __atomic_do_and_fetch (long long, 8, or, |) ! __atomic_do_and_fetch (long long, 8, and, &) ! __atomic_do_and_fetch (long long, 8, xor, |) ! __atomic_do_and_fetch (long long, 8, nand, &) #define __atomic_exchange_methods(type, size) \ bool \ __atomic_compare_exchange_##size(volatile type* ptr, type* oldvalp, \ --- 90,162 ---- __atomic_fetch_and_do (long long, 8, and) __atomic_fetch_and_do (long long, 8, xor) __atomic_fetch_and_do (long long, 8, nand) ! ! #define __sync_fetch_and_do(type, size, opname) \ ! __fetch_and_do(type __sync_fetch_and_##opname##_##size(type* p, type i), \ ! type, size, opname, \ ! arch_atomic_write_barrier(), \ ! arch_atomic_read_barrier()) ! ! __sync_fetch_and_do (int, 4, add) ! __sync_fetch_and_do (int, 4, sub) ! __sync_fetch_and_do (int, 4, or) ! __sync_fetch_and_do (int, 4, and) ! __sync_fetch_and_do (int, 4, xor) ! __sync_fetch_and_do (int, 4, nand) ! __sync_fetch_and_do (long long, 8, add) ! __sync_fetch_and_do (long long, 8, sub) ! __sync_fetch_and_do (long long, 8, or) ! __sync_fetch_and_do (long long, 8, and) ! __sync_fetch_and_do (long long, 8, xor) ! __sync_fetch_and_do (long long, 8, nand) ! ! #define __do_and_fetch(proto, type, size, opname, op, op2, top, bottom) \ ! proto \ ! { \ ! top; \ ! type rv = op2 (arch_atomic_##opname(p, i) op i); \ ! bottom; \ ! return rv; \ } ! ! #define __atomic_do_and_fetch(type, size, opname, op, op2) \ ! __do_and_fetch(type __atomic_##opname##_fetch_##size(type* p, type i, int model), \ ! type, size, opname, op, op2, \ ! pre_atomic_barrier(model), \ ! post_atomic_barrier(model)) \ ! ! __atomic_do_and_fetch (int, 4, add, +, ) ! __atomic_do_and_fetch (int, 4, sub, -, ) ! __atomic_do_and_fetch (int, 4, or, |, ) ! __atomic_do_and_fetch (int, 4, and, &, ) ! __atomic_do_and_fetch (int, 4, xor, |, ) ! __atomic_do_and_fetch (int, 4, nand, &, ~) ! __atomic_do_and_fetch (long long, 8, add, +, ) ! __atomic_do_and_fetch (long long, 8, sub, -, ) ! __atomic_do_and_fetch (long long, 8, or, |, ) ! __atomic_do_and_fetch (long long, 8, and, &, ) ! __atomic_do_and_fetch (long long, 8, xor, |, ) ! __atomic_do_and_fetch (long long, 8, nand, &, ~) ! ! #define __sync_do_and_fetch(type, size, opname, op, op2) \ ! __do_and_fetch(type __sync_##opname##_and_fetch_##size(type* p, type i), \ ! type, size, opname, op, op2, \ ! arch_atomic_write_barrier(), \ ! arch_atomic_read_barrier()) \ ! ! __sync_do_and_fetch (int, 4, add, +, ) ! __sync_do_and_fetch (int, 4, sub, -, ) ! __sync_do_and_fetch (int, 4, or, |, ) ! __sync_do_and_fetch (int, 4, and, &, ) ! __sync_do_and_fetch (int, 4, xor, |, ) ! __sync_do_and_fetch (int, 4, nand, &, ~) ! __sync_do_and_fetch (long long, 8, add, +, ) ! __sync_do_and_fetch (long long, 8, sub, -, ) ! __sync_do_and_fetch (long long, 8, or, |, ) ! __sync_do_and_fetch (long long, 8, and, &, ) ! __sync_do_and_fetch (long long, 8, xor, |, ) ! __sync_do_and_fetch (long long, 8, nand, &, ~) ! #define __atomic_exchange_methods(type, size) \ bool \ __atomic_compare_exchange_##size(volatile type* ptr, type* oldvalp, \ *************** __atomic_exchange_##size(volatile type* *** 129,177 **** post_atomic_barrier(model); \ return retval; \ } __atomic_exchange_methods (int, 4) __atomic_exchange_methods (long long, 8) /* Subword methods require the same approach for both TILEPro and TILE-Gx. We load the background data for the word, insert the desired subword piece, then compare-and-exchange it into place. */ #define u8 unsigned char #define u16 unsigned short #define __atomic_subword_cmpxchg(type, size) \ \ bool \ ! __atomic_compare_exchange_##size(volatile type* ptr, type* guess, \ type val, bool weak __unused, int models, \ int modelf __unused) \ { \ pre_atomic_barrier(models); \ ! unsigned int *p = (unsigned int *)((unsigned long)ptr & ~3UL); \ ! const int shift = ((unsigned long)ptr & 3UL) * 8; \ ! const unsigned int valmask = (1 << (sizeof(type) * 8)) - 1; \ ! const unsigned int bgmask = ~(valmask << shift); \ ! unsigned int oldword = *p; \ ! type oldval = (oldword >> shift) & valmask; \ ! if (__builtin_expect((oldval == *guess), 1)) { \ ! unsigned int word = (oldword & bgmask) | ((val & valmask) << shift); \ ! oldword = arch_atomic_val_compare_and_exchange(p, oldword, word); \ ! oldval = (oldword >> shift) & valmask; \ ! } \ post_atomic_barrier(models); \ ! bool success = (oldval == *guess); \ ! *guess = oldval; \ return success; \ } __atomic_subword_cmpxchg (u8, 1) __atomic_subword_cmpxchg (u16, 2) /* For the atomic-update subword methods, we use the same approach as above, but we retry until we succeed if the compare-and-exchange fails. */ ! #define __atomic_subword(type, proto, top, expr, bottom) \ proto \ { \ top \ unsigned int *p = (unsigned int *)((unsigned long)ptr & ~3UL); \ ! const int shift = ((unsigned long)ptr & 3UL) * 8; \ const unsigned int valmask = (1 << (sizeof(type) * 8)) - 1; \ const unsigned int bgmask = ~(valmask << shift); \ unsigned int oldword, xword = *p; \ --- 180,296 ---- post_atomic_barrier(model); \ return retval; \ } + __atomic_exchange_methods (int, 4) __atomic_exchange_methods (long long, 8) + #define __sync_exchange_methods(type, size) \ + type \ + __sync_val_compare_and_swap_##size(type* ptr, type oldval, type newval) \ + { \ + arch_atomic_write_barrier(); \ + type retval = arch_atomic_val_compare_and_exchange(ptr, oldval, newval); \ + arch_atomic_read_barrier(); \ + return retval; \ + } \ + \ + bool \ + __sync_bool_compare_and_swap_##size(type* ptr, type oldval, type newval) \ + { \ + arch_atomic_write_barrier(); \ + bool retval = arch_atomic_bool_compare_and_exchange(ptr, oldval, newval); \ + arch_atomic_read_barrier(); \ + return retval; \ + } \ + \ + type \ + __sync_lock_test_and_set_##size(type* ptr, type val) \ + { \ + type retval = arch_atomic_exchange(ptr, val); \ + arch_atomic_acquire_barrier_value(retval); \ + return retval; \ + } + + __sync_exchange_methods (int, 4) + __sync_exchange_methods (long long, 8) + + #ifdef __LITTLE_ENDIAN__ + #define BIT_OFFSET(n, type) ((n) * 8) + #else + #define BIT_OFFSET(n, type) ((4 - sizeof(type) - (n)) * 8) + #endif + /* Subword methods require the same approach for both TILEPro and TILE-Gx. We load the background data for the word, insert the desired subword piece, then compare-and-exchange it into place. */ #define u8 unsigned char #define u16 unsigned short + + #define __subword_cmpxchg_body(type, size, ptr, guess, val) \ + ({ \ + unsigned int *p = (unsigned int *)((unsigned long)ptr & ~3UL); \ + const int shift = BIT_OFFSET((unsigned long)ptr & 3UL, type); \ + const unsigned int valmask = (1 << (sizeof(type) * 8)) - 1; \ + const unsigned int bgmask = ~(valmask << shift); \ + unsigned int oldword = *p; \ + type oldval = (oldword >> shift) & valmask; \ + if (__builtin_expect((oldval == guess), 1)) { \ + unsigned int word = (oldword & bgmask) | ((val & valmask) << shift); \ + oldword = arch_atomic_val_compare_and_exchange(p, oldword, word); \ + oldval = (oldword >> shift) & valmask; \ + } \ + oldval; \ + }) \ + #define __atomic_subword_cmpxchg(type, size) \ \ bool \ ! __atomic_compare_exchange_##size(volatile type* ptr, type* guess_ptr, \ type val, bool weak __unused, int models, \ int modelf __unused) \ { \ pre_atomic_barrier(models); \ ! type guess = *guess_ptr; \ ! type oldval = __subword_cmpxchg_body(type, size, ptr, guess, val); \ post_atomic_barrier(models); \ ! bool success = (oldval == guess); \ ! *guess_ptr = oldval; \ return success; \ } + __atomic_subword_cmpxchg (u8, 1) __atomic_subword_cmpxchg (u16, 2) + + #define __sync_subword_cmpxchg(type, size) \ + \ + type \ + __sync_val_compare_and_swap_##size(type* ptr, type guess, type val) \ + { \ + arch_atomic_write_barrier(); \ + type oldval = __subword_cmpxchg_body(type, size, ptr, guess, val); \ + arch_atomic_read_barrier(); \ + return oldval; \ + } \ + \ + bool \ + __sync_bool_compare_and_swap_##size(type* ptr, type guess, type val) \ + { \ + type oldval = __sync_val_compare_and_swap_##size(ptr, guess, val); \ + return oldval == guess; \ + } + + __sync_subword_cmpxchg (u8, 1) + __sync_subword_cmpxchg (u16, 2) + /* For the atomic-update subword methods, we use the same approach as above, but we retry until we succeed if the compare-and-exchange fails. */ ! #define __subword(type, proto, top, expr, bottom) \ proto \ { \ top \ unsigned int *p = (unsigned int *)((unsigned long)ptr & ~3UL); \ ! const int shift = BIT_OFFSET((unsigned long)ptr & 3UL, type); \ const unsigned int valmask = (1 << (sizeof(type) * 8)) - 1; \ const unsigned int bgmask = ~(valmask << shift); \ unsigned int oldword, xword = *p; \ *************** proto \ *** 185,226 **** } while (__builtin_expect(xword != oldword, 0)); \ bottom \ } #define __atomic_subword_fetch(type, funcname, expr, retval) \ ! __atomic_subword(type, \ ! type __atomic_ ## funcname(volatile type *ptr, type i, int model), \ ! pre_atomic_barrier(model);, \ ! expr, \ ! post_atomic_barrier(model); return retval;) __atomic_subword_fetch (u8, fetch_add_1, oldval + i, oldval) __atomic_subword_fetch (u8, fetch_sub_1, oldval - i, oldval) __atomic_subword_fetch (u8, fetch_or_1, oldval | i, oldval) __atomic_subword_fetch (u8, fetch_and_1, oldval & i, oldval) __atomic_subword_fetch (u8, fetch_xor_1, oldval ^ i, oldval) __atomic_subword_fetch (u8, fetch_nand_1, ~(oldval & i), oldval) __atomic_subword_fetch (u16, fetch_add_2, oldval + i, oldval) __atomic_subword_fetch (u16, fetch_sub_2, oldval - i, oldval) __atomic_subword_fetch (u16, fetch_or_2, oldval | i, oldval) __atomic_subword_fetch (u16, fetch_and_2, oldval & i, oldval) __atomic_subword_fetch (u16, fetch_xor_2, oldval ^ i, oldval) __atomic_subword_fetch (u16, fetch_nand_2, ~(oldval & i), oldval) __atomic_subword_fetch (u8, add_fetch_1, oldval + i, val) __atomic_subword_fetch (u8, sub_fetch_1, oldval - i, val) __atomic_subword_fetch (u8, or_fetch_1, oldval | i, val) __atomic_subword_fetch (u8, and_fetch_1, oldval & i, val) __atomic_subword_fetch (u8, xor_fetch_1, oldval ^ i, val) __atomic_subword_fetch (u8, nand_fetch_1, ~(oldval & i), val) __atomic_subword_fetch (u16, add_fetch_2, oldval + i, val) __atomic_subword_fetch (u16, sub_fetch_2, oldval - i, val) __atomic_subword_fetch (u16, or_fetch_2, oldval | i, val) __atomic_subword_fetch (u16, and_fetch_2, oldval & i, val) __atomic_subword_fetch (u16, xor_fetch_2, oldval ^ i, val) __atomic_subword_fetch (u16, nand_fetch_2, ~(oldval & i), val) #define __atomic_subword_lock(type, size) \ ! \ ! __atomic_subword(type, \ ! type __atomic_exchange_##size(volatile type* ptr, type nval, int model), \ ! pre_atomic_barrier(model);, \ ! nval, \ ! post_atomic_barrier(model); return oldval;) __atomic_subword_lock (u8, 1) __atomic_subword_lock (u16, 2) --- 304,396 ---- } while (__builtin_expect(xword != oldword, 0)); \ bottom \ } + #define __atomic_subword_fetch(type, funcname, expr, retval) \ ! __subword(type, \ ! type __atomic_ ## funcname(volatile type *ptr, type i, int model), \ ! pre_atomic_barrier(model);, \ ! expr, \ ! post_atomic_barrier(model); return retval;) ! __atomic_subword_fetch (u8, fetch_add_1, oldval + i, oldval) __atomic_subword_fetch (u8, fetch_sub_1, oldval - i, oldval) __atomic_subword_fetch (u8, fetch_or_1, oldval | i, oldval) __atomic_subword_fetch (u8, fetch_and_1, oldval & i, oldval) __atomic_subword_fetch (u8, fetch_xor_1, oldval ^ i, oldval) __atomic_subword_fetch (u8, fetch_nand_1, ~(oldval & i), oldval) + __atomic_subword_fetch (u16, fetch_add_2, oldval + i, oldval) __atomic_subword_fetch (u16, fetch_sub_2, oldval - i, oldval) __atomic_subword_fetch (u16, fetch_or_2, oldval | i, oldval) __atomic_subword_fetch (u16, fetch_and_2, oldval & i, oldval) __atomic_subword_fetch (u16, fetch_xor_2, oldval ^ i, oldval) __atomic_subword_fetch (u16, fetch_nand_2, ~(oldval & i), oldval) + __atomic_subword_fetch (u8, add_fetch_1, oldval + i, val) __atomic_subword_fetch (u8, sub_fetch_1, oldval - i, val) __atomic_subword_fetch (u8, or_fetch_1, oldval | i, val) __atomic_subword_fetch (u8, and_fetch_1, oldval & i, val) __atomic_subword_fetch (u8, xor_fetch_1, oldval ^ i, val) __atomic_subword_fetch (u8, nand_fetch_1, ~(oldval & i), val) + __atomic_subword_fetch (u16, add_fetch_2, oldval + i, val) __atomic_subword_fetch (u16, sub_fetch_2, oldval - i, val) __atomic_subword_fetch (u16, or_fetch_2, oldval | i, val) __atomic_subword_fetch (u16, and_fetch_2, oldval & i, val) __atomic_subword_fetch (u16, xor_fetch_2, oldval ^ i, val) __atomic_subword_fetch (u16, nand_fetch_2, ~(oldval & i), val) + + #define __sync_subword_fetch(type, funcname, expr, retval) \ + __subword(type, \ + type __sync_ ## funcname(type *ptr, type i), \ + arch_atomic_read_barrier();, \ + expr, \ + arch_atomic_write_barrier(); return retval;) + + __sync_subword_fetch (u8, fetch_and_add_1, oldval + i, oldval) + __sync_subword_fetch (u8, fetch_and_sub_1, oldval - i, oldval) + __sync_subword_fetch (u8, fetch_and_or_1, oldval | i, oldval) + __sync_subword_fetch (u8, fetch_and_and_1, oldval & i, oldval) + __sync_subword_fetch (u8, fetch_and_xor_1, oldval ^ i, oldval) + __sync_subword_fetch (u8, fetch_and_nand_1, ~(oldval & i), oldval) + + __sync_subword_fetch (u16, fetch_and_add_2, oldval + i, oldval) + __sync_subword_fetch (u16, fetch_and_sub_2, oldval - i, oldval) + __sync_subword_fetch (u16, fetch_and_or_2, oldval | i, oldval) + __sync_subword_fetch (u16, fetch_and_and_2, oldval & i, oldval) + __sync_subword_fetch (u16, fetch_and_xor_2, oldval ^ i, oldval) + __sync_subword_fetch (u16, fetch_and_nand_2, ~(oldval & i), oldval) + + __sync_subword_fetch (u8, add_and_fetch_1, oldval + i, val) + __sync_subword_fetch (u8, sub_and_fetch_1, oldval - i, val) + __sync_subword_fetch (u8, or_and_fetch_1, oldval | i, val) + __sync_subword_fetch (u8, and_and_fetch_1, oldval & i, val) + __sync_subword_fetch (u8, xor_and_fetch_1, oldval ^ i, val) + __sync_subword_fetch (u8, nand_and_fetch_1, ~(oldval & i), val) + + __sync_subword_fetch (u16, add_and_fetch_2, oldval + i, val) + __sync_subword_fetch (u16, sub_and_fetch_2, oldval - i, val) + __sync_subword_fetch (u16, or_and_fetch_2, oldval | i, val) + __sync_subword_fetch (u16, and_and_fetch_2, oldval & i, val) + __sync_subword_fetch (u16, xor_and_fetch_2, oldval ^ i, val) + __sync_subword_fetch (u16, nand_and_fetch_2, ~(oldval & i), val) + #define __atomic_subword_lock(type, size) \ ! __subword(type, \ ! type __atomic_exchange_##size(volatile type* ptr, type nval, int model), \ ! pre_atomic_barrier(model);, \ ! nval, \ ! post_atomic_barrier(model); return oldval;) ! __atomic_subword_lock (u8, 1) __atomic_subword_lock (u16, 2) + + #define __sync_subword_lock(type, size) \ + __subword(type, \ + type __sync_lock_test_and_set_##size(type* ptr, type nval), \ + , \ + nval, \ + arch_atomic_acquire_barrier_value(oldval); return oldval;) + + __sync_subword_lock (u8, 1) + __sync_subword_lock (u16, 2) diff -Nrcpad gcc-4.7.3/libgcc/config/tilepro/atomic.h gcc-4.7.4/libgcc/config/tilepro/atomic.h *** gcc-4.7.3/libgcc/config/tilepro/atomic.h Fri Apr 6 15:13:09 2012 --- gcc-4.7.4/libgcc/config/tilepro/atomic.h Sat Jun 8 16:33:14 2013 *************** *** 1,6 **** /* Macros for atomic functionality for tile. ! Copyright (C) 2011, 2012 ! Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is free software; you can redistribute it and/or modify it --- 1,5 ---- /* Macros for atomic functionality for tile. ! Copyright (C) 2011-2013 Free Software Foundation, Inc. Contributed by Walter Lee (walt@tilera.com) This file is free software; you can redistribute it and/or modify it *************** *** 93,100 **** compare-and-exchange routine, so may be potentially less efficient. */ #endif - #include - #include #ifdef __tilegx__ #include #else --- 92,97 ---- *************** static __inline __attribute__ ((always_i *** 123,131 **** /* 64-bit integer compare-and-exchange. */ static __inline __attribute__ ((always_inline)) ! int64_t arch_atomic_val_compare_and_exchange_8 (volatile int64_t * mem, ! int64_t oldval, ! int64_t newval) { #ifdef __tilegx__ __insn_mtspr (SPR_CMPEXCH_VALUE, oldval); --- 120,128 ---- /* 64-bit integer compare-and-exchange. */ static __inline __attribute__ ((always_inline)) ! long long arch_atomic_val_compare_and_exchange_8 (volatile long long ! *mem, long long oldval, ! long long newval) { #ifdef __tilegx__ __insn_mtspr (SPR_CMPEXCH_VALUE, oldval); *************** static __inline __attribute__ ((always_i *** 140,146 **** "R04" (newval_lo), "R05" (newval_hi), "m" (*mem):"r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", "r28", "r29", "memory"); ! return ((uint64_t) result_hi) << 32 | result_lo; #endif } --- 137,143 ---- "R04" (newval_lo), "R05" (newval_hi), "m" (*mem):"r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", "r28", "r29", "memory"); ! return ((long long) result_hi) << 32 | result_lo; #endif } *************** extern int __arch_atomic_error_bad_argum *** 151,161 **** #define arch_atomic_val_compare_and_exchange(mem, o, n) \ ! ({ \ (__typeof(*(mem)))(__typeof(*(mem)-*(mem))) \ ((sizeof(*(mem)) == 8) ? \ arch_atomic_val_compare_and_exchange_8( \ ! (volatile int64_t*)(mem), (__typeof((o)-(o)))(o), \ (__typeof((n)-(n)))(n)) : \ (sizeof(*(mem)) == 4) ? \ arch_atomic_val_compare_and_exchange_4( \ --- 148,158 ---- #define arch_atomic_val_compare_and_exchange(mem, o, n) \ ! __extension__ ({ \ (__typeof(*(mem)))(__typeof(*(mem)-*(mem))) \ ((sizeof(*(mem)) == 8) ? \ arch_atomic_val_compare_and_exchange_8( \ ! (volatile long long*)(mem), (__typeof((o)-(o)))(o), \ (__typeof((n)-(n)))(n)) : \ (sizeof(*(mem)) == 4) ? \ arch_atomic_val_compare_and_exchange_4( \ *************** extern int __arch_atomic_error_bad_argum *** 165,171 **** }) #define arch_atomic_bool_compare_and_exchange(mem, o, n) \ ! ({ \ __typeof(o) __o = (o); \ __builtin_expect( \ __o == arch_atomic_val_compare_and_exchange((mem), __o, (n)), 1); \ --- 162,168 ---- }) #define arch_atomic_bool_compare_and_exchange(mem, o, n) \ ! __extension__ ({ \ __typeof(o) __o = (o); \ __builtin_expect( \ __o == arch_atomic_val_compare_and_exchange((mem), __o, (n)), 1); \ *************** extern int __arch_atomic_error_bad_argum *** 175,181 **** /* Loop with compare_and_exchange until we guess the correct value. Normally "expr" will be an expression using __old and __value. */ #define __arch_atomic_update_cmpxchg(mem, value, expr) \ ! ({ \ __typeof(value) __value = (value); \ __typeof(*(mem)) *__mem = (mem), __old = *__mem, __guess; \ do { \ --- 172,178 ---- /* Loop with compare_and_exchange until we guess the correct value. Normally "expr" will be an expression using __old and __value. */ #define __arch_atomic_update_cmpxchg(mem, value, expr) \ ! __extension__ ({ \ __typeof(value) __value = (value); \ __typeof(*(mem)) *__mem = (mem), __old = *__mem, __guess; \ do { \ *************** extern int __arch_atomic_error_bad_argum *** 190,201 **** /* Generic atomic op with 8- or 4-byte variant. The _mask, _addend, and _expr arguments are ignored on tilegx. */ #define __arch_atomic_update(mem, value, op, _mask, _addend, _expr) \ ! ({ \ ((__typeof(*(mem))) \ ((sizeof(*(mem)) == 8) ? (__typeof(*(mem)-*(mem)))__insn_##op( \ ! (void *)(mem), (int64_t)(__typeof((value)-(value)))(value)) : \ (sizeof(*(mem)) == 4) ? (int)__insn_##op##4( \ ! (void *)(mem), (int32_t)(__typeof((value)-(value)))(value)) : \ __arch_atomic_error_bad_argument_size())); \ }) --- 187,200 ---- /* Generic atomic op with 8- or 4-byte variant. The _mask, _addend, and _expr arguments are ignored on tilegx. */ #define __arch_atomic_update(mem, value, op, _mask, _addend, _expr) \ ! __extension__ ({ \ ((__typeof(*(mem))) \ ((sizeof(*(mem)) == 8) ? (__typeof(*(mem)-*(mem)))__insn_##op( \ ! (volatile void *)(mem), \ ! (long long)(__typeof((value)-(value)))(value)) : \ (sizeof(*(mem)) == 4) ? (int)__insn_##op##4( \ ! (volatile void *)(mem), \ ! (int)(__typeof((value)-(value)))(value)) : \ __arch_atomic_error_bad_argument_size())); \ }) *************** static __inline __attribute__ ((always_i *** 225,231 **** /* Generic atomic op with 8- or 4-byte variant. The _op argument is ignored on tilepro. */ #define __arch_atomic_update(mem, value, _op, mask, addend, expr) \ ! ({ \ (__typeof(*(mem)))(__typeof(*(mem)-*(mem))) \ ((sizeof(*(mem)) == 8) ? \ __arch_atomic_update_cmpxchg((mem), (value), (expr)) : \ --- 224,230 ---- /* Generic atomic op with 8- or 4-byte variant. The _op argument is ignored on tilepro. */ #define __arch_atomic_update(mem, value, _op, mask, addend, expr) \ ! __extension__ ({ \ (__typeof(*(mem)))(__typeof(*(mem)-*(mem))) \ ((sizeof(*(mem)) == 8) ? \ __arch_atomic_update_cmpxchg((mem), (value), (expr)) : \ *************** static __inline __attribute__ ((always_i *** 264,276 **** __arch_atomic_update_cmpxchg(mem, mask, ~(__old & __value)) #define arch_atomic_bit_set(mem, bit) \ ! ({ \ __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit); \ __mask & arch_atomic_or((mem), __mask); \ }) #define arch_atomic_bit_clear(mem, bit) \ ! ({ \ __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit); \ __mask & arch_atomic_and((mem), ~__mask); \ }) --- 263,275 ---- __arch_atomic_update_cmpxchg(mem, mask, ~(__old & __value)) #define arch_atomic_bit_set(mem, bit) \ ! __extension__ ({ \ __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit); \ __mask & arch_atomic_or((mem), __mask); \ }) #define arch_atomic_bit_clear(mem, bit) \ ! __extension__ ({ \ __typeof(*(mem)) __mask = (__typeof(*(mem)))1 << (bit); \ __mask & arch_atomic_and((mem), ~__mask); \ }) diff -Nrcpad gcc-4.7.3/libgcc/config.host gcc-4.7.4/libgcc/config.host *** gcc-4.7.3/libgcc/config.host Wed Mar 6 17:42:45 2013 --- gcc-4.7.4/libgcc/config.host Thu Mar 20 16:13:10 2014 *************** alpha*-dec-*vms*) *** 315,321 **** md_unwind_header=alpha/vms-unwind.h ;; arm-wrs-vxworks) ! tmake_file="$tmake_file arm/t-arm arm/t-vxworks t-fdpbit" extra_parts="$extra_parts crti.o crtn.o" ;; arm*-*-freebsd*) --- 315,321 ---- md_unwind_header=alpha/vms-unwind.h ;; arm-wrs-vxworks) ! tmake_file="$tmake_file arm/t-arm arm/t-vxworks t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp" extra_parts="$extra_parts crti.o crtn.o" ;; arm*-*-freebsd*) *************** tilepro-*-linux*) *** 1110,1116 **** md_unwind_header=tilepro/linux-unwind.h ;; v850*-*-*) ! tmake_file="v850/t-v850 t-fdpbit" ;; vax-*-linux*) tmake_file="$tmake_file vax/t-linux" --- 1110,1116 ---- md_unwind_header=tilepro/linux-unwind.h ;; v850*-*-*) ! tmake_file="${tmake_file} v850/t-v850 t-fdpbit" ;; vax-*-linux*) tmake_file="$tmake_file vax/t-linux" *************** xtensa*-*-elf*) *** 1127,1133 **** extra_parts="$extra_parts crti.o crtn.o" ;; xtensa*-*-linux*) ! tmake_file="$tmake_file xtensa/t-xtensa xtensa/t-linux" md_unwind_header=xtensa/linux-unwind.h ;; am33_2.0-*-linux*) --- 1127,1133 ---- extra_parts="$extra_parts crti.o crtn.o" ;; xtensa*-*-linux*) ! tmake_file="$tmake_file xtensa/t-xtensa xtensa/t-linux t-slibgcc-libgcc" md_unwind_header=xtensa/linux-unwind.h ;; am33_2.0-*-linux*) diff -Nrcpad gcc-4.7.3/libgfortran/ChangeLog gcc-4.7.4/libgfortran/ChangeLog *** gcc-4.7.3/libgfortran/ChangeLog Thu Apr 11 07:54:46 2013 --- gcc-4.7.4/libgfortran/ChangeLog Thu Jun 12 12:05:18 2014 *************** *** 1,3 **** --- 1,122 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + + 2014-05-26 Janne Blomqvist + + Backport from mainline + PR libfortran/61310 + * intrinsics/ctime.c (strctime): Rename to gf_ctime, use snprintf + instead of strftime. + (fdate): Use gf_ctime. + (fdate_sub): Likewise. + (ctime): Likewise. + (ctime_sub): Likewise. + + 2014-05-16 Janne Blomqvist + + Backport from trunk: + PR libfortran/61187 + * io/unix.c (raw_close): Check if s->fd is -1. + (fd_to_stream): Check return value of fstat(), handle error. + + 2014-05-04 Janne Blomqvist + + Backport from 4.9 + PR libfortran/56919 + * intrinsics/system_clock.c (GF_CLOCK_MONOTONIC): Check + _POSIX_MONOTONIC_CLOCK as well. + + 2014-04-12 Jerry DeLisle + + Backport from mainline + PR libfortran/60810 + * io/unit.c (is_trim_ok): If internal unit is array, do not trim. + + 2014-03-15 Jerry DeLisle + + Backport from mainline + PR libfortran/58324 + PR libfortran/38199 + * intrinsics/string_intriniscs_inc.c (string_len_trim): + Remove prototypes for string_len_trim and move to... + * libgfortran.h (string_len_trim): ... here and + (string_len_trim_char4): ...here. + * io/list_read.c (finish_list_read): Read one character to check + for the end of the file. If it is the end, then issue the file + end error message. If not, use eat_line to reach the end + without giving error. The next attempt to read will then + issue the error as described above. + * io/read.c (read_decimal): Quickly skip spaces to avoid calls + to next_char. + * io/unit.c (is_trim_ok): New helper function to check various + conditions to see if its OK to trim the internal unit string. + (get_internal_unit): Use LEN_TRIM to shorten selected internal + unit strings for optimizing READ. Enable this optimization for + formatted READ. + + 2014-02-15 Jerry DeLisle + Dominique d'Humieres + + Backport from mainline + PR libfortran/59771 + PR libfortran/59774 + PR libfortran/59836 + * io/write_float.def (output_float): Fix wrong handling of the + Fw.0 format. + (output_float_FMT_G_): Fixes rounding issues with -m32. + + 2013-07-03 Uros Bizjak + + Backport from mainline + 2013-06-20 Uros Bizjak + + * config/fpu-387.h (_FPU_MASK_ALL): New. + (_FPU_EX_ALL): Ditto. + (set_fpu): Use fstcw to store x87 FPU control word. Use fnclex to + clear stalled exception flags. Correctly clear stalled SSE + exception flags. Simplify code. + + Backport from mainline + 2013-06-19 Uros Bizjak + + * config/fpu-387.h: Use __asm__ and __volatile__ consistently. + + 2013-04-28 Jerry DeLisle + + Backport from mainline: + 2013-03-20 Tilo Schwarz + + PR libfortran/51825 + * io/list_read.c (nml_read_obj): Don't end the component loop on a + nested derived type, but continue with the next loop iteration. + (nml_get_obj_data): Don't move the first_nl pointer further in the + list if a qualifier was found. + + 2013-04-28 Jerry DeLisle + + Backport from mainline: + + PR libfortran/56786 + * io/list_read.c (nml_parse_qualifier): Remove spurious next_char call + when checking for EOF. Use error return mechanism when EOF detected. + Do not return FAILURE unless parse_err_msg and parse_err_msg_size have + been set. Use hit_eof. + (nml_get_obj_data): Likewise use the correct error mechanism. + * io/transfer.c (hit_eof): Do not set AFTER_ENDFILE if in namelist + mode. + + 2013-04-28 Jerry DeLisle + + Backport from mainline: + 2013-03-25 Tilo Schwarz + + PR libfortran/52512 + * io/list_read.c (nml_parse_qualifier): To check for a derived type + don't use the namelist head element type but the current element type. + (nml_get_obj_data): Add current namelist element type to + nml_parse_qualifier call. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libgfortran/config/fpu-387.h gcc-4.7.4/libgfortran/config/fpu-387.h *** gcc-4.7.3/libgfortran/config/fpu-387.h Wed Sep 5 21:48:15 2012 --- gcc-4.7.4/libgfortran/config/fpu-387.h Wed Jul 3 09:59:55 2013 *************** has_sse (void) *** 73,79 **** /* We need a single SSE instruction here so the handler can safely skip over it. */ ! __asm__ volatile ("movaps %xmm0,%xmm0"); sigaction (SIGILL, &oact, NULL); --- 73,79 ---- /* We need a single SSE instruction here so the handler can safely skip over it. */ ! __asm__ __volatile__ ("movaps\t%xmm0,%xmm0"); sigaction (SIGILL, &oact, NULL); *************** has_sse (void) *** 95,136 **** #define _FPU_MASK_OM 0x08 #define _FPU_MASK_UM 0x10 #define _FPU_MASK_PM 0x20 void set_fpu (void) { unsigned short cw; ! asm volatile ("fnstcw %0" : "=m" (cw)); ! cw |= (_FPU_MASK_IM | _FPU_MASK_DM | _FPU_MASK_ZM | _FPU_MASK_OM ! | _FPU_MASK_UM | _FPU_MASK_PM); ! if (options.fpe & GFC_FPE_INVALID) cw &= ~_FPU_MASK_IM; ! if (options.fpe & GFC_FPE_DENORMAL) cw &= ~_FPU_MASK_DM; ! if (options.fpe & GFC_FPE_ZERO) cw &= ~_FPU_MASK_ZM; ! if (options.fpe & GFC_FPE_OVERFLOW) cw &= ~_FPU_MASK_OM; ! if (options.fpe & GFC_FPE_UNDERFLOW) cw &= ~_FPU_MASK_UM; ! if (options.fpe & GFC_FPE_INEXACT) cw &= ~_FPU_MASK_PM; ! asm volatile ("fldcw %0" : : "m" (cw)); if (has_sse()) { unsigned int cw_sse; ! asm volatile ("%vstmxcsr %0" : "=m" (cw_sse)); ! cw_sse &= 0xffff0000; ! cw_sse |= (_FPU_MASK_IM | _FPU_MASK_DM | _FPU_MASK_ZM | _FPU_MASK_OM ! | _FPU_MASK_UM | _FPU_MASK_PM ) << 7; ! if (options.fpe & GFC_FPE_INVALID) cw_sse &= ~(_FPU_MASK_IM << 7); ! if (options.fpe & GFC_FPE_DENORMAL) cw_sse &= ~(_FPU_MASK_DM << 7); ! if (options.fpe & GFC_FPE_ZERO) cw_sse &= ~(_FPU_MASK_ZM << 7); ! if (options.fpe & GFC_FPE_OVERFLOW) cw_sse &= ~(_FPU_MASK_OM << 7); ! if (options.fpe & GFC_FPE_UNDERFLOW) cw_sse &= ~(_FPU_MASK_UM << 7); ! if (options.fpe & GFC_FPE_INEXACT) cw_sse &= ~(_FPU_MASK_PM << 7); ! asm volatile ("%vldmxcsr %0" : : "m" (cw_sse)); } } --- 95,136 ---- #define _FPU_MASK_OM 0x08 #define _FPU_MASK_UM 0x10 #define _FPU_MASK_PM 0x20 + #define _FPU_MASK_ALL 0x3f + + #define _FPU_EX_ALL 0x3f void set_fpu (void) { + int excepts = 0; unsigned short cw; ! __asm__ __volatile__ ("fstcw\t%0" : "=m" (cw)); ! if (options.fpe & GFC_FPE_INVALID) excepts |= _FPU_MASK_IM; ! if (options.fpe & GFC_FPE_DENORMAL) excepts |= _FPU_MASK_DM; ! if (options.fpe & GFC_FPE_ZERO) excepts |= _FPU_MASK_ZM; ! if (options.fpe & GFC_FPE_OVERFLOW) excepts |= _FPU_MASK_OM; ! if (options.fpe & GFC_FPE_UNDERFLOW) excepts |= _FPU_MASK_UM; ! if (options.fpe & GFC_FPE_INEXACT) excepts |= _FPU_MASK_PM; ! cw |= _FPU_MASK_ALL; ! cw &= ~excepts; ! __asm__ __volatile__ ("fnclex\n\tfldcw\t%0" : : "m" (cw)); if (has_sse()) { unsigned int cw_sse; ! __asm__ __volatile__ ("%vstmxcsr\t%0" : "=m" (cw_sse)); ! /* The SSE exception masks are shifted by 7 bits. */ ! cw_sse |= _FPU_MASK_ALL << 7; ! cw_sse &= ~(excepts << 7); ! /* Clear stalled exception flags. */ ! cw_sse &= ~_FPU_EX_ALL; ! __asm__ __volatile__ ("%vldmxcsr\t%0" : : "m" (cw_sse)); } } diff -Nrcpad gcc-4.7.3/libgfortran/intrinsics/ctime.c gcc-4.7.4/libgfortran/intrinsics/ctime.c *** gcc-4.7.3/libgfortran/intrinsics/ctime.c Wed Nov 9 18:25:58 2011 --- gcc-4.7.4/libgfortran/intrinsics/ctime.c Mon May 26 19:44:24 2014 *************** *** 1,5 **** /* Implementation of the CTIME and FDATE g77 intrinsics. ! Copyright (C) 2005, 2007, 2009, 2011 Free Software Foundation, Inc. Contributed by François-Xavier Coudert This file is part of the GNU Fortran runtime library (libgfortran). --- 1,5 ---- /* Implementation of the CTIME and FDATE g77 intrinsics. ! Copyright (C) 2005-2013 Free Software Foundation, Inc. Contributed by François-Xavier Coudert This file is part of the GNU Fortran runtime library (libgfortran). *************** see the files COPYING3 and COPYING.RUNTI *** 31,61 **** #include ! /* strftime-like function that fills a C string with %c format which ! is identical to ctime in the default locale. As ctime and ctime_r ! are poorly specified and their usage not recommended, the ! implementation instead uses strftime. */ ! static size_t ! strctime (char *s, size_t max, const time_t *timep) { struct tm ltm; int failed; /* Some targets provide a localtime_r based on a draft of the POSIX standard where the return type is int rather than the standardized struct tm*. */ ! __builtin_choose_expr (__builtin_classify_type (localtime_r (timep, <m)) == 5, ! failed = localtime_r (timep, <m) == NULL, ! failed = localtime_r (timep, <m) != 0); if (failed) ! return 0; ! return strftime (s, max, "%c", <m); } - /* In the default locale, the date and time representation fits in 26 - bytes. However, other locales might need more space. */ - #define CSZ 100 extern void fdate (char **, gfc_charlen_type *); export_proto(fdate); --- 31,83 ---- #include ! /* Maximum space a ctime-like string might need. A "normal" ctime ! string is 26 bytes, and in our case 24 bytes as we don't include ! the trailing newline and null. However, the longest possible year ! number is -2,147,481,748 (1900 - 2,147,483,648, since tm_year is a ! 32-bit signed integer) so an extra 7 bytes are needed. */ ! #define CTIME_BUFSZ 31 ! ! /* Thread-safe ctime-like function that fills a Fortran ! string. ctime_r is a portability headache and marked as obsolescent ! in POSIX 2008, which recommends strftime in its place. However, ! strftime(..., "%c",...) doesn't produce ctime-like output on ! MinGW, so do it manually with snprintf. */ ! ! static int ! gf_ctime (char *s, size_t max, const time_t timev) { struct tm ltm; int failed; + char buf[CTIME_BUFSZ + 1]; /* Some targets provide a localtime_r based on a draft of the POSIX standard where the return type is int rather than the standardized struct tm*. */ ! __builtin_choose_expr (__builtin_classify_type (localtime_r (&timev, <m)) == 5, ! failed = localtime_r (&timev, <m) == NULL, ! failed = localtime_r (&timev, <m) != 0); if (failed) ! goto blank; ! int n = snprintf (buf, sizeof (buf), ! "%3.3s %3.3s%3d %.2d:%.2d:%.2d %d", ! "SunMonTueWedThuFriSat" + ltm.tm_wday * 3, ! "JanFebMarAprMayJunJulAugSepOctNovDec" + ltm.tm_mon * 3, ! ltm.tm_mday, ltm.tm_hour, ltm.tm_min, ltm.tm_sec, ! 1900 + ltm.tm_year); ! if (n < 0) ! goto blank; ! if ((size_t) n <= max) ! { ! cf_strcpy (s, max, buf); ! return n; ! } ! blank: ! memset (s, ' ', max); ! return 0; } extern void fdate (char **, gfc_charlen_type *); export_proto(fdate); *************** void *** 64,71 **** fdate (char ** date, gfc_charlen_type * date_len) { time_t now = time(NULL); ! *date = get_mem (CSZ); ! *date_len = strctime (*date, CSZ, &now); } --- 86,93 ---- fdate (char ** date, gfc_charlen_type * date_len) { time_t now = time(NULL); ! *date = get_mem (CTIME_BUFSZ); ! *date_len = gf_ctime (*date, CTIME_BUFSZ, now); } *************** void *** 76,85 **** fdate_sub (char * date, gfc_charlen_type date_len) { time_t now = time(NULL); ! char *s = get_mem (date_len + 1); ! size_t n = strctime (s, date_len + 1, &now); ! fstrcpy (date, date_len, s, n); ! free (s); } --- 98,104 ---- fdate_sub (char * date, gfc_charlen_type date_len) { time_t now = time(NULL); ! gf_ctime (date, date_len, now); } *************** void *** 91,98 **** PREFIX(ctime) (char ** date, gfc_charlen_type * date_len, GFC_INTEGER_8 t) { time_t now = t; ! *date = get_mem (CSZ); ! *date_len = strctime (*date, CSZ, &now); } --- 110,117 ---- PREFIX(ctime) (char ** date, gfc_charlen_type * date_len, GFC_INTEGER_8 t) { time_t now = t; ! *date = get_mem (CTIME_BUFSZ); ! *date_len = gf_ctime (*date, CTIME_BUFSZ, now); } *************** void *** 103,110 **** ctime_sub (GFC_INTEGER_8 * t, char * date, gfc_charlen_type date_len) { time_t now = *t; ! char *s = get_mem (date_len + 1); ! size_t n = strctime (s, date_len + 1, &now); ! fstrcpy (date, date_len, s, n); ! free (s); } --- 122,126 ---- ctime_sub (GFC_INTEGER_8 * t, char * date, gfc_charlen_type date_len) { time_t now = *t; ! gf_ctime (date, date_len, now); } diff -Nrcpad gcc-4.7.3/libgfortran/intrinsics/string_intrinsics_inc.c gcc-4.7.4/libgfortran/intrinsics/string_intrinsics_inc.c *** gcc-4.7.3/libgfortran/intrinsics/string_intrinsics_inc.c Mon Aug 29 09:05:11 2011 --- gcc-4.7.4/libgfortran/intrinsics/string_intrinsics_inc.c Sat Mar 15 23:06:44 2014 *************** extern void concat_string (gfc_charlen_t *** 44,52 **** gfc_charlen_type, const CHARTYPE *); export_proto(concat_string); - extern gfc_charlen_type string_len_trim (gfc_charlen_type, const CHARTYPE *); - export_proto(string_len_trim); - extern void adjustl (CHARTYPE *, gfc_charlen_type, const CHARTYPE *); export_proto(adjustl); --- 44,49 ---- diff -Nrcpad gcc-4.7.3/libgfortran/intrinsics/system_clock.c gcc-4.7.4/libgfortran/intrinsics/system_clock.c *** gcc-4.7.3/libgfortran/intrinsics/system_clock.c Thu Nov 10 17:08:24 2011 --- gcc-4.7.4/libgfortran/intrinsics/system_clock.c Sat May 3 21:03:10 2014 *************** see the files COPYING3 and COPYING.RUNTI *** 33,39 **** /* POSIX states that CLOCK_REALTIME must be present if clock_gettime is available, others are optional. */ #if defined(HAVE_CLOCK_GETTIME) || defined(HAVE_CLOCK_GETTIME_LIBRT) ! #ifdef CLOCK_MONOTONIC #define GF_CLOCK_MONOTONIC CLOCK_MONOTONIC #else #define GF_CLOCK_MONOTONIC CLOCK_REALTIME --- 33,40 ---- /* POSIX states that CLOCK_REALTIME must be present if clock_gettime is available, others are optional. */ #if defined(HAVE_CLOCK_GETTIME) || defined(HAVE_CLOCK_GETTIME_LIBRT) ! #if defined(CLOCK_MONOTONIC) && defined(_POSIX_MONOTONIC_CLOCK) \ ! && _POSIX_MONOTONIC_CLOCK >= 0 #define GF_CLOCK_MONOTONIC CLOCK_MONOTONIC #else #define GF_CLOCK_MONOTONIC CLOCK_REALTIME diff -Nrcpad gcc-4.7.3/libgfortran/io/list_read.c gcc-4.7.4/libgfortran/io/list_read.c *** gcc-4.7.3/libgfortran/io/list_read.c Wed Apr 3 09:52:06 2013 --- gcc-4.7.4/libgfortran/io/list_read.c Sat Mar 15 23:06:44 2014 *************** list_formatted_read (st_parameter_dt *dt *** 1985,1992 **** void finish_list_read (st_parameter_dt *dtp) { - int err; - free_saved (dtp); fbuf_flush (dtp->u.p.current_unit, dtp->u.p.mode); --- 1985,1990 ---- *************** finish_list_read (st_parameter_dt *dtp) *** 1997,2005 **** return; } ! err = eat_line (dtp); ! if (err == LIBERROR_END) ! hit_eof (dtp); } /* NAMELIST INPUT --- 1995,2016 ---- return; } ! if (!is_internal_unit (dtp)) ! { ! int c; ! c = next_char (dtp); ! if (c == EOF) ! { ! free_line (dtp); ! hit_eof (dtp); ! return; ! } ! if (c != '\n') ! eat_line (dtp); ! } ! ! free_line (dtp); ! } /* NAMELIST INPUT *************** calls: *** 2028,2035 **** static try nml_parse_qualifier (st_parameter_dt *dtp, descriptor_dimension *ad, ! array_loop_spec *ls, int rank, char *parse_err_msg, ! size_t parse_err_msg_size, int *parsed_rank) { int dim; --- 2039,2046 ---- static try nml_parse_qualifier (st_parameter_dt *dtp, descriptor_dimension *ad, ! array_loop_spec *ls, int rank, bt nml_elem_type, ! char *parse_err_msg, size_t parse_err_msg_size, int *parsed_rank) { int dim; *************** nml_parse_qualifier (st_parameter_dt *dt *** 2053,2059 **** /* The next character in the stream should be the '('. */ if ((c = next_char (dtp)) == EOF) ! return FAILURE; /* Process the qualifier, by dimension and triplet. */ --- 2064,2070 ---- /* The next character in the stream should be the '('. */ if ((c = next_char (dtp)) == EOF) ! goto err_ret; /* Process the qualifier, by dimension and triplet. */ *************** nml_parse_qualifier (st_parameter_dt *dt *** 2067,2073 **** /* Process a potential sign. */ if ((c = next_char (dtp)) == EOF) ! return FAILURE; switch (c) { case '-': --- 2078,2084 ---- /* Process a potential sign. */ if ((c = next_char (dtp)) == EOF) ! goto err_ret; switch (c) { case '-': *************** nml_parse_qualifier (st_parameter_dt *dt *** 2085,2095 **** /* Process characters up to the next ':' , ',' or ')'. */ for (;;) { ! if ((c = next_char (dtp)) == EOF) ! return FAILURE; ! switch (c) { case ':': is_array_section = 1; break; --- 2096,2107 ---- /* Process characters up to the next ':' , ',' or ')'. */ for (;;) { ! c = next_char (dtp); switch (c) { + case EOF: + goto err_ret; + case ':': is_array_section = 1; break; *************** nml_parse_qualifier (st_parameter_dt *dt *** 2112,2121 **** push_char (dtp, c); continue; ! case ' ': case '\t': eat_spaces (dtp); - if ((c = next_char (dtp) == EOF)) - return FAILURE; break; default: --- 2124,2131 ---- push_char (dtp, c); continue; ! case ' ': case '\t': case '\r': case '\n': eat_spaces (dtp); break; default: *************** nml_parse_qualifier (st_parameter_dt *dt *** 2204,2210 **** do not allow excess data to be processed. */ if (is_array_section == 1 || !(compile_options.allow_std & GFC_STD_GNU) ! || dtp->u.p.ionml->type == BT_DERIVED) ls[dim].end = ls[dim].start; else dtp->u.p.expanded_read = 1; --- 2214,2220 ---- do not allow excess data to be processed. */ if (is_array_section == 1 || !(compile_options.allow_std & GFC_STD_GNU) ! || nml_elem_type == BT_DERIVED) ls[dim].end = ls[dim].start; else dtp->u.p.expanded_read = 1; *************** nml_parse_qualifier (st_parameter_dt *dt *** 2257,2262 **** --- 2267,2281 ---- err_ret: + /* The EOF error message is issued by hit_eof. Return true so that the + caller does not use parse_err_msg and parse_err_msg_size to generate + an unrelated error message. */ + if (c == EOF) + { + hit_eof (dtp); + dtp->u.p.input_complete = 1; + return SUCCESS; + } return FAILURE; } *************** nml_read_obj (st_parameter_dt *dtp, name *** 2553,2569 **** since a single object can have multiple reads. */ dtp->u.p.expanded_read = 0; ! /* Now loop over the components. Update the component pointer ! with the return value from nml_write_obj. This loop jumps ! past nested derived types by testing if the potential ! component name contains '%'. */ for (cmp = nl->next; cmp && ! !strncmp (cmp->var_name, obj_name, obj_name_len) && ! !strchr (cmp->var_name + obj_name_len, '%'); cmp = cmp->next) { if (nml_read_obj (dtp, cmp, (index_type)(pdata - nl->mem_pos), pprev_nl, nml_err_msg, nml_err_msg_size, --- 2572,2588 ---- since a single object can have multiple reads. */ dtp->u.p.expanded_read = 0; ! /* Now loop over the components. */ for (cmp = nl->next; cmp && ! !strncmp (cmp->var_name, obj_name, obj_name_len); cmp = cmp->next) { + /* Jump over nested derived type by testing if the potential + component name contains '%'. */ + if (strchr (cmp->var_name + obj_name_len, '%')) + continue; if (nml_read_obj (dtp, cmp, (index_type)(pdata - nl->mem_pos), pprev_nl, nml_err_msg, nml_err_msg_size, *************** nml_get_obj_data (st_parameter_dt *dtp, *** 2726,2737 **** return SUCCESS; if ((c = next_char (dtp)) == EOF) ! return FAILURE; switch (c) { case '=': if ((c = next_char (dtp)) == EOF) ! return FAILURE; if (c != '?') { snprintf (nml_err_msg, nml_err_msg_size, --- 2745,2756 ---- return SUCCESS; if ((c = next_char (dtp)) == EOF) ! goto nml_err_ret; switch (c) { case '=': if ((c = next_char (dtp)) == EOF) ! goto nml_err_ret; if (c != '?') { snprintf (nml_err_msg, nml_err_msg_size, *************** get_name: *** 2781,2788 **** if (!is_separator (c)) push_char (dtp, tolower(c)); if ((c = next_char (dtp)) == EOF) ! return FAILURE; ! } while (!( c=='=' || c==' ' || c=='\t' || c =='(' || c =='%' )); unget_char (dtp, c); --- 2800,2808 ---- if (!is_separator (c)) push_char (dtp, tolower(c)); if ((c = next_char (dtp)) == EOF) ! goto nml_err_ret; ! } ! while (!( c=='=' || c==' ' || c=='\t' || c =='(' || c =='%' )); unget_char (dtp, c); *************** get_name: *** 2842,2848 **** { parsed_rank = 0; if (nml_parse_qualifier (dtp, nl->dim, nl->ls, nl->var_rank, ! nml_err_msg, nml_err_msg_size, &parsed_rank) == FAILURE) { char *nml_err_msg_end = strchr (nml_err_msg, '\0'); --- 2862,2868 ---- { parsed_rank = 0; if (nml_parse_qualifier (dtp, nl->dim, nl->ls, nl->var_rank, ! nl->type, nml_err_msg, nml_err_msg_size, &parsed_rank) == FAILURE) { char *nml_err_msg_end = strchr (nml_err_msg, '\0'); *************** get_name: *** 2857,2863 **** qualifier_flag = 1; if ((c = next_char (dtp)) == EOF) ! return FAILURE; unget_char (dtp, c); } else if (nl->var_rank > 0) --- 2877,2883 ---- qualifier_flag = 1; if ((c = next_char (dtp)) == EOF) ! goto nml_err_ret; unget_char (dtp, c); } else if (nl->var_rank > 0) *************** get_name: *** 2876,2889 **** goto nml_err_ret; } ! if (*pprev_nl == NULL || !component_flag) first_nl = nl; root_nl = nl; component_flag = 1; if ((c = next_char (dtp)) == EOF) ! return FAILURE; goto get_name; } --- 2896,2910 ---- goto nml_err_ret; } ! /* Don't move first_nl further in the list if a qualifier was found. */ ! if ((*pprev_nl == NULL && !qualifier_flag) || !component_flag) first_nl = nl; root_nl = nl; component_flag = 1; if ((c = next_char (dtp)) == EOF) ! goto nml_err_ret; goto get_name; } *************** get_name: *** 2898,2905 **** descriptor_dimension chd[1] = { {1, clow, nl->string_length} }; array_loop_spec ind[1] = { {1, clow, nl->string_length, 1} }; ! if (nml_parse_qualifier (dtp, chd, ind, -1, nml_err_msg, ! nml_err_msg_size, &parsed_rank) == FAILURE) { char *nml_err_msg_end = strchr (nml_err_msg, '\0'); --- 2919,2926 ---- descriptor_dimension chd[1] = { {1, clow, nl->string_length} }; array_loop_spec ind[1] = { {1, clow, nl->string_length, 1} }; ! if (nml_parse_qualifier (dtp, chd, ind, -1, nl->type, ! nml_err_msg, nml_err_msg_size, &parsed_rank) == FAILURE) { char *nml_err_msg_end = strchr (nml_err_msg, '\0'); *************** get_name: *** 2921,2927 **** } if ((c = next_char (dtp)) == EOF) ! return FAILURE; unget_char (dtp, c); } --- 2942,2948 ---- } if ((c = next_char (dtp)) == EOF) ! goto nml_err_ret; unget_char (dtp, c); } *************** get_name: *** 2961,2967 **** return SUCCESS; if ((c = next_char (dtp)) == EOF) ! return FAILURE; if (c != '=') { --- 2982,2988 ---- return SUCCESS; if ((c = next_char (dtp)) == EOF) ! goto nml_err_ret; if (c != '=') { *************** get_name: *** 2996,3001 **** --- 3017,3033 ---- nml_err_ret: + /* The EOF error message is issued by hit_eof. Return true so that the + caller does not use nml_err_msg and nml_err_msg_size to generate + an unrelated error message. */ + if (c == EOF) + { + dtp->u.p.input_complete = 1; + unget_char (dtp, c); + hit_eof (dtp); + return SUCCESS; + } + return FAILURE; } diff -Nrcpad gcc-4.7.3/libgfortran/io/read.c gcc-4.7.4/libgfortran/io/read.c *** gcc-4.7.3/libgfortran/io/read.c Sun May 29 08:59:44 2011 --- gcc-4.7.4/libgfortran/io/read.c Sat Mar 15 23:06:44 2014 *************** read_decimal (st_parameter_dt *dtp, cons *** 667,673 **** if (c == ' ') { ! if (dtp->u.p.blank_status == BLANK_NULL) continue; if (dtp->u.p.blank_status == BLANK_ZERO) c = '0'; } --- 667,679 ---- if (c == ' ') { ! if (dtp->u.p.blank_status == BLANK_NULL) ! { ! /* Skip spaces. */ ! for ( ; w > 0; p++, w--) ! if (*p != ' ') break; ! continue; ! } if (dtp->u.p.blank_status == BLANK_ZERO) c = '0'; } diff -Nrcpad gcc-4.7.3/libgfortran/io/transfer.c gcc-4.7.4/libgfortran/io/transfer.c *** gcc-4.7.3/libgfortran/io/transfer.c Thu Dec 8 19:00:55 2011 --- gcc-4.7.4/libgfortran/io/transfer.c Sun Apr 28 17:20:06 2013 *************** hit_eof (st_parameter_dt * dtp) *** 3748,3754 **** case NO_ENDFILE: case AT_ENDFILE: generate_error (&dtp->common, LIBERROR_END, NULL); ! if (!is_internal_unit (dtp)) { dtp->u.p.current_unit->endfile = AFTER_ENDFILE; dtp->u.p.current_unit->current_record = 0; --- 3748,3754 ---- case NO_ENDFILE: case AT_ENDFILE: generate_error (&dtp->common, LIBERROR_END, NULL); ! if (!is_internal_unit (dtp) && !dtp->u.p.namelist_mode) { dtp->u.p.current_unit->endfile = AFTER_ENDFILE; dtp->u.p.current_unit->current_record = 0; diff -Nrcpad gcc-4.7.3/libgfortran/io/unit.c gcc-4.7.4/libgfortran/io/unit.c *** gcc-4.7.3/libgfortran/io/unit.c Tue Nov 1 12:03:38 2011 --- gcc-4.7.4/libgfortran/io/unit.c Sun Apr 13 02:05:02 2014 *************** see the files COPYING3 and COPYING.RUNTI *** 30,35 **** --- 30,36 ---- #include "unix.h" #include #include + #include /* IO locking rules: *************** find_or_create_unit (int n) *** 377,382 **** --- 378,413 ---- } + /* Helper function to check rank, stride, format string, and namelist. + This is used for optimization. You can't trim out blanks or shorten + the string if trailing spaces are significant. */ + static bool + is_trim_ok (st_parameter_dt *dtp) + { + /* Check rank and stride. */ + if (dtp->internal_unit_desc) + return false; + /* Format strings can not have 'BZ' or '/'. */ + if (dtp->common.flags & IOPARM_DT_HAS_FORMAT) + { + char *p = dtp->format; + off_t i; + if (dtp->common.flags & IOPARM_DT_HAS_BLANK) + return false; + for (i = 0; i < dtp->format_len; i++) + { + if (p[i] == '/') return false; + if (p[i] == 'b' || p[i] == 'B') + if (p[i+1] == 'z' || p[i+1] == 'Z') + return false; + } + } + if (dtp->u.p.ionml) /* A namelist. */ + return false; + return true; + } + + gfc_unit * get_internal_unit (st_parameter_dt *dtp) { *************** get_internal_unit (st_parameter_dt *dtp) *** 410,415 **** --- 441,462 ---- some other file I/O unit. */ iunit->unit_number = -1; + /* As an optimization, adjust the unit record length to not + include trailing blanks. This will not work under certain conditions + where trailing blanks have significance. */ + if (dtp->u.p.mode == READING && is_trim_ok (dtp)) + { + int len; + if (dtp->common.unit == 0) + len = string_len_trim (dtp->internal_unit_len, + dtp->internal_unit); + else + len = string_len_trim_char4 (dtp->internal_unit_len, + (const gfc_char4_t*) dtp->internal_unit); + dtp->internal_unit_len = len; + iunit->recl = dtp->internal_unit_len; + } + /* Set up the looping specification from the array descriptor, if any. */ if (is_array_io (dtp)) diff -Nrcpad gcc-4.7.3/libgfortran/io/unix.c gcc-4.7.4/libgfortran/io/unix.c *** gcc-4.7.3/libgfortran/io/unix.c Thu Feb 21 20:13:04 2013 --- gcc-4.7.4/libgfortran/io/unix.c Fri May 16 20:42:56 2014 *************** raw_close (unix_stream * s) *** 392,398 **** { int retval; ! if (s->fd != STDOUT_FILENO && s->fd != STDERR_FILENO && s->fd != STDIN_FILENO) retval = close (s->fd); --- 392,400 ---- { int retval; ! if (s->fd == -1) ! retval = -1; ! else if (s->fd != STDOUT_FILENO && s->fd != STDERR_FILENO && s->fd != STDIN_FILENO) retval = close (s->fd); *************** fd_to_stream (int fd) *** 961,967 **** /* Get the current length of the file. */ ! fstat (fd, &statbuf); s->st_dev = statbuf.st_dev; s->st_ino = statbuf.st_ino; --- 963,977 ---- /* Get the current length of the file. */ ! if (fstat (fd, &statbuf) == -1) ! { ! s->st_dev = s->st_ino = -1; ! s->file_length = 0; ! if (errno == EBADF) ! s->fd = -1; ! raw_init (s); ! return (stream *) s; ! } s->st_dev = statbuf.st_dev; s->st_ino = statbuf.st_ino; diff -Nrcpad gcc-4.7.3/libgfortran/io/write_float.def gcc-4.7.4/libgfortran/io/write_float.def *** gcc-4.7.3/libgfortran/io/write_float.def Thu Nov 10 17:08:24 2011 --- gcc-4.7.4/libgfortran/io/write_float.def Sat Feb 15 16:53:07 2014 *************** output_float (st_parameter_dt *dtp, cons *** 273,279 **** updown: rchar = '0'; ! if (w > 0 && d == 0 && p == 0) nbefore = 1; /* Scan for trailing zeros to see if we really need to round it. */ for(i = nbefore + nafter; i < ndigits; i++) --- 273,279 ---- updown: rchar = '0'; ! if (ft != FMT_F && w > 0 && d == 0 && p == 0) nbefore = 1; /* Scan for trailing zeros to see if we really need to round it. */ for(i = nbefore + nafter; i < ndigits; i++) *************** output_float (st_parameter_dt *dtp, cons *** 288,298 **** if (nbefore + nafter == 0) { ndigits = 0; ! if (nzero_real == d && digits[0] >= rchar) { /* We rounded to zero but shouldn't have */ ! nzero--; ! nafter = 1; digits[0] = '1'; ndigits = 1; } --- 288,307 ---- if (nbefore + nafter == 0) { ndigits = 0; ! if ((d == 0 || nzero_real == d) && digits[0] >= rchar) { /* We rounded to zero but shouldn't have */ ! if (d != 0) ! { ! nzero--; ! nafter = 1; ! } ! else ! { ! /* Handle the case Fw.0 and value < 1.0 */ ! nbefore = 1; ! digits--; ! } digits[0] = '1'; ndigits = 1; } *************** output_float_FMT_G_ ## x (st_parameter_d *** 828,839 **** int d = f->u.real.d;\ int w = f->u.real.w;\ fnode *newf;\ ! GFC_REAL_ ## x rexp_d, r = 0.5;\ int low, high, mid;\ int ubound, lbound;\ char *p, pad = ' ';\ int save_scale_factor, nb = 0;\ try result;\ \ save_scale_factor = dtp->u.p.scale_factor;\ newf = (fnode *) get_mem (sizeof (fnode));\ --- 837,849 ---- int d = f->u.real.d;\ int w = f->u.real.w;\ fnode *newf;\ ! GFC_REAL_ ## x exp_d, r = 0.5, r_sc;\ int low, high, mid;\ int ubound, lbound;\ char *p, pad = ' ';\ int save_scale_factor, nb = 0;\ try result;\ + volatile GFC_REAL_ ## x temp;\ \ save_scale_factor = dtp->u.p.scale_factor;\ newf = (fnode *) get_mem (sizeof (fnode));\ *************** output_float_FMT_G_ ## x (st_parameter_d *** 853,862 **** break;\ }\ \ ! rexp_d = calculate_exp_ ## x (-d);\ ! if ((m > 0.0 && ((m < 0.1 - 0.1 * r * rexp_d) || (rexp_d * (m + r) >= 1.0)))\ || ((m == 0.0) && !(compile_options.allow_std\ ! & (GFC_STD_F2003 | GFC_STD_F2008))))\ { \ newf->format = FMT_E;\ newf->u.real.w = w;\ --- 863,875 ---- break;\ }\ \ ! exp_d = calculate_exp_ ## x (d);\ ! r_sc = (1 - r / exp_d);\ ! temp = 0.1 * r_sc;\ ! if ((m > 0.0 && ((m < temp) || (r >= (exp_d - m))))\ || ((m == 0.0) && !(compile_options.allow_std\ ! & (GFC_STD_F2003 | GFC_STD_F2008)))\ ! || d == 0)\ { \ newf->format = FMT_E;\ newf->u.real.w = w;\ *************** output_float_FMT_G_ ## x (st_parameter_d *** 874,883 **** \ while (low <= high)\ { \ - volatile GFC_REAL_ ## x temp;\ mid = (low + high) / 2;\ \ ! temp = (calculate_exp_ ## x (mid - 1) * (1 - r * rexp_d));\ \ if (m < temp)\ { \ --- 887,895 ---- \ while (low <= high)\ { \ mid = (low + high) / 2;\ \ ! temp = (calculate_exp_ ## x (mid - 1) * r_sc);\ \ if (m < temp)\ { \ diff -Nrcpad gcc-4.7.3/libgfortran/libgfortran.h gcc-4.7.4/libgfortran/libgfortran.h *** gcc-4.7.3/libgfortran/libgfortran.h Mon Aug 29 09:05:11 2011 --- gcc-4.7.4/libgfortran/libgfortran.h Sat Mar 15 23:06:44 2014 *************** internal_proto(fstrcpy); *** 788,793 **** --- 788,800 ---- extern gfc_charlen_type cf_strcpy (char *, gfc_charlen_type, const char *); internal_proto(cf_strcpy); + extern gfc_charlen_type string_len_trim (gfc_charlen_type, const char *); + export_proto(string_len_trim); + + extern gfc_charlen_type string_len_trim_char4 (gfc_charlen_type, + const gfc_char4_t *); + export_proto(string_len_trim_char4); + /* io/intrinsics.c */ extern void flush_all_units (void); diff -Nrcpad gcc-4.7.3/libgomp/ChangeLog gcc-4.7.4/libgomp/ChangeLog *** gcc-4.7.3/libgomp/ChangeLog Thu Apr 11 07:55:21 2013 --- gcc-4.7.4/libgomp/ChangeLog Thu Jun 12 12:05:57 2014 *************** *** 1,3 **** --- 1,12 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + + 2014-04-02 Richard Henderson + + * config/linux/futex.h (futex_wait): Get error value from errno. + (futex_wake): Likewise. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libgomp/config/linux/futex.h gcc-4.7.4/libgomp/config/linux/futex.h *** gcc-4.7.3/libgomp/config/linux/futex.h Fri Dec 2 10:54:02 2011 --- gcc-4.7.4/libgomp/config/linux/futex.h Wed Apr 2 20:30:55 2014 *************** *** 41,48 **** static inline void futex_wait (int *addr, int val) { ! long err = syscall (SYS_futex, addr, gomp_futex_wait, val, NULL); ! if (__builtin_expect (err == -ENOSYS, 0)) { gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG; gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG; --- 41,48 ---- static inline void futex_wait (int *addr, int val) { ! int err = syscall (SYS_futex, addr, gomp_futex_wait, val, NULL); ! if (__builtin_expect (err < 0 && errno == ENOSYS, 0)) { gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG; gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG; *************** futex_wait (int *addr, int val) *** 53,60 **** static inline void futex_wake (int *addr, int count) { ! long err = syscall (SYS_futex, addr, gomp_futex_wake, count); ! if (__builtin_expect (err == -ENOSYS, 0)) { gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG; gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG; --- 53,60 ---- static inline void futex_wake (int *addr, int count) { ! int err = syscall (SYS_futex, addr, gomp_futex_wake, count); ! if (__builtin_expect (err < 0 && errno == ENOSYS, 0)) { gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG; gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG; diff -Nrcpad gcc-4.7.3/libgomp/libgomp.info gcc-4.7.4/libgomp/libgomp.info *** gcc-4.7.3/libgomp/libgomp.info Thu Apr 11 08:59:37 2013 --- gcc-4.7.4/libgomp/libgomp.info Thu Jun 12 14:11:28 2014 *************** *** 1,5 **** This is libgomp.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.3/gcc-4.7.3/libgomp/libgomp.texi. Copyright (C) 2006, 2007, 2008, 2010, 2011 Free Software Foundation, Inc. --- 1,5 ---- This is libgomp.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.4/gcc-4.7.4/libgomp/libgomp.texi. Copyright (C) 2006, 2007, 2008, 2010, 2011 Free Software Foundation, Inc. diff -Nrcpad gcc-4.7.3/libiberty/ChangeLog gcc-4.7.4/libiberty/ChangeLog *** gcc-4.7.3/libiberty/ChangeLog Thu Apr 11 07:56:11 2013 --- gcc-4.7.4/libiberty/ChangeLog Thu Jun 12 12:07:02 2014 *************** *** 1,3 **** --- 1,15 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + + 2013-11-15 Joseph Myers + + Backport from mainline: + 2012-06-29 Andreas Schwab + + * copying-lib.texi (Library Copying): Don't use @heading inside + @enumerate. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libiberty/copying-lib.texi gcc-4.7.4/libiberty/copying-lib.texi *** gcc-4.7.3/libiberty/copying-lib.texi Mon Aug 6 14:34:27 2012 --- gcc-4.7.4/libiberty/copying-lib.texi Fri Nov 15 01:11:00 2013 *************** decision will be guided by the two goals *** 476,487 **** of all derivatives of our free software and of promoting the sharing and reuse of software generally. - @iftex - @heading NO WARRANTY - @end iftex - @ifinfo @center NO WARRANTY - @end ifinfo @item BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO --- 476,482 ---- diff -Nrcpad gcc-4.7.3/libitm/ChangeLog gcc-4.7.4/libitm/ChangeLog *** gcc-4.7.3/libitm/ChangeLog Thu Apr 11 07:55:26 2013 --- gcc-4.7.4/libitm/ChangeLog Thu Jun 12 12:06:02 2014 *************** *** 1,3 **** --- 1,12 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + + 2014-04-09 Rainer Orth + + * config/generic/asmcfi.h: Also check for + __GCC_HAVE_DWARF2_CFI_ASM. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libitm/config/generic/asmcfi.h gcc-4.7.4/libitm/config/generic/asmcfi.h *** gcc-4.7.3/libitm/config/generic/asmcfi.h Thu Jan 5 21:36:35 2012 --- gcc-4.7.4/libitm/config/generic/asmcfi.h Wed Apr 9 14:57:48 2014 *************** *** 24,30 **** #include "config.h" ! #ifdef HAVE_AS_CFI_PSEUDO_OP #define cfi_startproc .cfi_startproc #define cfi_endproc .cfi_endproc --- 24,30 ---- #include "config.h" ! #if defined(HAVE_AS_CFI_PSEUDO_OP) && defined(__GCC_HAVE_DWARF2_CFI_ASM) #define cfi_startproc .cfi_startproc #define cfi_endproc .cfi_endproc *************** *** 50,53 **** #define cfi_restore(r) #define cfi_undefined(r) ! #endif /* HAVE_AS_CFI_PSEUDO_OP */ --- 50,53 ---- #define cfi_restore(r) #define cfi_undefined(r) ! #endif /* HAVE_AS_CFI_PSEUDO_OP && __GCC_HAVE_DWARF2_CFI_ASM */ diff -Nrcpad gcc-4.7.3/libitm/libitm.info gcc-4.7.4/libitm/libitm.info *** gcc-4.7.3/libitm/libitm.info Thu Apr 11 09:12:07 2013 --- gcc-4.7.4/libitm/libitm.info Thu Jun 12 14:24:37 2014 *************** *** 1,5 **** This is libitm.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.3/gcc-4.7.3/libitm/libitm.texi. Copyright (C) 2011 Free Software Foundation, Inc. --- 1,5 ---- This is libitm.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.4/gcc-4.7.4/libitm/libitm.texi. Copyright (C) 2011 Free Software Foundation, Inc. diff -Nrcpad gcc-4.7.3/libjava/ChangeLog gcc-4.7.4/libjava/ChangeLog *** gcc-4.7.3/libjava/ChangeLog Thu Apr 11 07:55:47 2013 --- gcc-4.7.4/libjava/ChangeLog Thu Jun 12 12:06:30 2014 *************** *** 1,3 **** --- 1,12 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + + 2014-03-11 Uros Bizjak + + * java/lang/natObject.cc (_Jv_MonitorEnter): Add missing parenthesis + around comparison with (address | LOCKED) in JvAssert. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libjava/classpath/ChangeLog gcc-4.7.4/libjava/classpath/ChangeLog *** gcc-4.7.3/libjava/classpath/ChangeLog Thu Apr 11 07:55:51 2013 --- gcc-4.7.4/libjava/classpath/ChangeLog Thu Jun 12 12:06:35 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libjava/classpath/ChangeLog.gcj gcc-4.7.4/libjava/classpath/ChangeLog.gcj *** gcc-4.7.3/libjava/classpath/ChangeLog.gcj Thu Feb 21 09:42:39 2013 --- gcc-4.7.4/libjava/classpath/ChangeLog.gcj Fri Nov 29 16:57:12 2013 *************** *** 1,3 **** --- 1,9 ---- + 2013-11-29 Matthias Klose + + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c, + native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c: + Fix freetype includes. + 2013-02-21 Jakub Jelinek PR bootstrap/56258 diff -Nrcpad gcc-4.7.3/libjava/classpath/doc/cp-tools.info gcc-4.7.4/libjava/classpath/doc/cp-tools.info *** gcc-4.7.3/libjava/classpath/doc/cp-tools.info Thu Apr 11 09:04:29 2013 --- gcc-4.7.4/libjava/classpath/doc/cp-tools.info Thu Jun 12 14:16:25 2014 *************** *** 1,5 **** This is cp-tools.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.3/gcc-4.7.3/libjava/classpath/doc/cp-tools.texinfo. This file documents the Tools included in a standard distribution of the GNU Classpath project deliverables. --- 1,5 ---- This is cp-tools.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.4/gcc-4.7.4/libjava/classpath/doc/cp-tools.texinfo. This file documents the Tools included in a standard distribution of the GNU Classpath project deliverables. diff -Nrcpad gcc-4.7.3/libjava/classpath/doc/gappletviewer.1 gcc-4.7.4/libjava/classpath/doc/gappletviewer.1 *** gcc-4.7.3/libjava/classpath/doc/gappletviewer.1 Thu Apr 11 09:04:30 2013 --- gcc-4.7.4/libjava/classpath/doc/gappletviewer.1 Thu Jun 12 14:16:26 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GAPPLETVIEWER 1" ! .TH GAPPLETVIEWER 1 "2013-04-11" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GAPPLETVIEWER 1" ! .TH GAPPLETVIEWER 1 "2014-06-12" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/libjava/classpath/doc/gjar.1 gcc-4.7.4/libjava/classpath/doc/gjar.1 *** gcc-4.7.3/libjava/classpath/doc/gjar.1 Thu Apr 11 09:04:30 2013 --- gcc-4.7.4/libjava/classpath/doc/gjar.1 Thu Jun 12 14:16:26 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GJAR 1" ! .TH GJAR 1 "2013-04-11" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GJAR 1" ! .TH GJAR 1 "2014-06-12" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/libjava/classpath/doc/gjarsigner.1 gcc-4.7.4/libjava/classpath/doc/gjarsigner.1 *** gcc-4.7.3/libjava/classpath/doc/gjarsigner.1 Thu Apr 11 09:04:30 2013 --- gcc-4.7.4/libjava/classpath/doc/gjarsigner.1 Thu Jun 12 14:16:26 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GJARSIGNER 1" ! .TH GJARSIGNER 1 "2013-04-11" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GJARSIGNER 1" ! .TH GJARSIGNER 1 "2014-06-12" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/libjava/classpath/doc/gjavah.1 gcc-4.7.4/libjava/classpath/doc/gjavah.1 *** gcc-4.7.3/libjava/classpath/doc/gjavah.1 Thu Apr 11 09:04:30 2013 --- gcc-4.7.4/libjava/classpath/doc/gjavah.1 Thu Jun 12 14:16:26 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GJAVAH 1" ! .TH GJAVAH 1 "2013-04-11" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GJAVAH 1" ! .TH GJAVAH 1 "2014-06-12" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/libjava/classpath/doc/gjdoc.1 gcc-4.7.4/libjava/classpath/doc/gjdoc.1 *** gcc-4.7.3/libjava/classpath/doc/gjdoc.1 Thu Apr 11 09:04:31 2013 --- gcc-4.7.4/libjava/classpath/doc/gjdoc.1 Thu Jun 12 14:16:27 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GJDOC 1" ! .TH GJDOC 1 "2013-04-11" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GJDOC 1" ! .TH GJDOC 1 "2014-06-12" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/libjava/classpath/doc/gkeytool.1 gcc-4.7.4/libjava/classpath/doc/gkeytool.1 *** gcc-4.7.3/libjava/classpath/doc/gkeytool.1 Thu Apr 11 09:04:30 2013 --- gcc-4.7.4/libjava/classpath/doc/gkeytool.1 Thu Jun 12 14:16:26 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GKEYTOOL 1" ! .TH GKEYTOOL 1 "2013-04-11" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GKEYTOOL 1" ! .TH GKEYTOOL 1 "2014-06-12" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/libjava/classpath/doc/gnative2ascii.1 gcc-4.7.4/libjava/classpath/doc/gnative2ascii.1 *** gcc-4.7.3/libjava/classpath/doc/gnative2ascii.1 Thu Apr 11 09:04:30 2013 --- gcc-4.7.4/libjava/classpath/doc/gnative2ascii.1 Thu Jun 12 14:16:26 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GNATIVE2ASCII 1" ! .TH GNATIVE2ASCII 1 "2013-04-11" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GNATIVE2ASCII 1" ! .TH GNATIVE2ASCII 1 "2014-06-12" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/libjava/classpath/doc/gorbd.1 gcc-4.7.4/libjava/classpath/doc/gorbd.1 *** gcc-4.7.3/libjava/classpath/doc/gorbd.1 Thu Apr 11 09:04:30 2013 --- gcc-4.7.4/libjava/classpath/doc/gorbd.1 Thu Jun 12 14:16:26 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GORBD 1" ! .TH GORBD 1 "2013-04-11" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GORBD 1" ! .TH GORBD 1 "2014-06-12" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/libjava/classpath/doc/grmid.1 gcc-4.7.4/libjava/classpath/doc/grmid.1 *** gcc-4.7.3/libjava/classpath/doc/grmid.1 Thu Apr 11 09:04:30 2013 --- gcc-4.7.4/libjava/classpath/doc/grmid.1 Thu Jun 12 14:16:26 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GRMID 1" ! .TH GRMID 1 "2013-04-11" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GRMID 1" ! .TH GRMID 1 "2014-06-12" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/libjava/classpath/doc/grmiregistry.1 gcc-4.7.4/libjava/classpath/doc/grmiregistry.1 *** gcc-4.7.3/libjava/classpath/doc/grmiregistry.1 Thu Apr 11 09:04:30 2013 --- gcc-4.7.4/libjava/classpath/doc/grmiregistry.1 Thu Jun 12 14:16:26 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GRMIREGISTRY 1" ! .TH GRMIREGISTRY 1 "2013-04-11" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GRMIREGISTRY 1" ! .TH GRMIREGISTRY 1 "2014-06-12" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/libjava/classpath/doc/gserialver.1 gcc-4.7.4/libjava/classpath/doc/gserialver.1 *** gcc-4.7.3/libjava/classpath/doc/gserialver.1 Thu Apr 11 09:04:30 2013 --- gcc-4.7.4/libjava/classpath/doc/gserialver.1 Thu Jun 12 14:16:26 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GSERIALVER 1" ! .TH GSERIALVER 1 "2013-04-11" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GSERIALVER 1" ! .TH GSERIALVER 1 "2014-06-12" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/libjava/classpath/doc/gtnameserv.1 gcc-4.7.4/libjava/classpath/doc/gtnameserv.1 *** gcc-4.7.3/libjava/classpath/doc/gtnameserv.1 Thu Apr 11 09:04:30 2013 --- gcc-4.7.4/libjava/classpath/doc/gtnameserv.1 Thu Jun 12 14:16:26 2014 *************** *** 132,138 **** .\" ======================================================================== .\" .IX Title "GTNAMESERV 1" ! .TH GTNAMESERV 1 "2013-04-11" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 132,138 ---- .\" ======================================================================== .\" .IX Title "GTNAMESERV 1" ! .TH GTNAMESERV 1 "2014-06-12" "0.99-pre" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -Nrcpad gcc-4.7.3/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c gcc-4.7.4/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c *** gcc-4.7.3/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c Tue Jan 6 22:44:05 2009 --- gcc-4.7.4/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c Fri Nov 29 16:57:12 2013 *************** exception statement from your version. * *** 42,49 **** #include #include #include ! #include ! #include #include "jcl.h" #include "gdkfont.h" #include "gnu_java_awt_peer_gtk_FreetypeGlyphVector.h" --- 42,50 ---- #include #include #include ! #include ! #include FT_GLYPH_H ! #include FT_OUTLINE_H #include "jcl.h" #include "gdkfont.h" #include "gnu_java_awt_peer_gtk_FreetypeGlyphVector.h" diff -Nrcpad gcc-4.7.3/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c gcc-4.7.4/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c *** gcc-4.7.3/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c Sat Aug 4 10:53:49 2007 --- gcc-4.7.4/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c Fri Nov 29 16:57:12 2013 *************** *** 39,48 **** #include #include #include ! #include ! #include ! #include ! #include #include "gdkfont.h" #include "gtkpeer.h" #include "gnu_java_awt_peer_gtk_GdkFontPeer.h" --- 39,49 ---- #include #include #include ! #include ! #include FT_GLYPH_H ! #include FT_OUTLINE_H ! #include FT_TYPES_H ! #include FT_TRUETYPE_TABLES_H #include "gdkfont.h" #include "gtkpeer.h" #include "gnu_java_awt_peer_gtk_GdkFontPeer.h" diff -Nrcpad gcc-4.7.3/libjava/java/lang/natObject.cc gcc-4.7.4/libjava/java/lang/natObject.cc *** gcc-4.7.3/libjava/java/lang/natObject.cc Fri Aug 12 16:40:32 2005 --- gcc-4.7.4/libjava/java/lang/natObject.cc Tue Mar 11 18:58:16 2014 *************** retry: *** 929,935 **** // only be held by other threads waiting for conversion, and // they, like us, drop it quickly without blocking. _Jv_MutexLock(&(hl->si.mutex)); ! JvAssert(he -> address == address | LOCKED ); release_set(&(he -> address), (address | REQUEST_CONVERSION | HEAVY)); // release lock on he LOG(REQ_CONV, (address | REQUEST_CONVERSION | HEAVY), self); --- 929,935 ---- // only be held by other threads waiting for conversion, and // they, like us, drop it quickly without blocking. _Jv_MutexLock(&(hl->si.mutex)); ! JvAssert(he -> address == (address | LOCKED)); release_set(&(he -> address), (address | REQUEST_CONVERSION | HEAVY)); // release lock on he LOG(REQ_CONV, (address | REQUEST_CONVERSION | HEAVY), self); *************** retry: *** 961,967 **** } obj_addr_t was_heavy = (address & HEAVY); if ((address & LOCKED) || ! !compare_and_swap(&(he -> address), address, (address | LOCKED ))) { wait_unlocked(he); goto retry; --- 961,967 ---- } obj_addr_t was_heavy = (address & HEAVY); if ((address & LOCKED) || ! !compare_and_swap(&(he -> address), address, address | LOCKED )) { wait_unlocked(he); goto retry; diff -Nrcpad gcc-4.7.3/libjava/libltdl/ChangeLog gcc-4.7.4/libjava/libltdl/ChangeLog *** gcc-4.7.3/libjava/libltdl/ChangeLog Thu Apr 11 07:55:55 2013 --- gcc-4.7.4/libjava/libltdl/ChangeLog Thu Jun 12 12:06:42 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libmudflap/ChangeLog gcc-4.7.4/libmudflap/ChangeLog *** gcc-4.7.3/libmudflap/ChangeLog Thu Apr 11 07:56:15 2013 --- gcc-4.7.4/libmudflap/ChangeLog Thu Jun 12 12:07:09 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libobjc/ChangeLog gcc-4.7.4/libobjc/ChangeLog *** gcc-4.7.3/libobjc/ChangeLog Thu Apr 11 07:55:09 2013 --- gcc-4.7.4/libobjc/ChangeLog Thu Jun 12 12:05:42 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libquadmath/ChangeLog gcc-4.7.4/libquadmath/ChangeLog *** gcc-4.7.3/libquadmath/ChangeLog Thu Apr 11 07:54:16 2013 --- gcc-4.7.4/libquadmath/ChangeLog Thu Jun 12 12:04:46 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libquadmath/libquadmath.info gcc-4.7.4/libquadmath/libquadmath.info *** gcc-4.7.3/libquadmath/libquadmath.info Thu Apr 11 09:00:17 2013 --- gcc-4.7.4/libquadmath/libquadmath.info Thu Jun 12 14:12:08 2014 *************** *** 1,5 **** This is libquadmath.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.3/gcc-4.7.3/libquadmath/libquadmath.texi. Copyright (C) 2010 Free Software Foundation, Inc. --- 1,5 ---- This is libquadmath.info, produced by makeinfo version 4.12 from ! /space/rguenther/gcc-4.7.4/gcc-4.7.4/libquadmath/libquadmath.texi. Copyright (C) 2010 Free Software Foundation, Inc. diff -Nrcpad gcc-4.7.3/libssp/ChangeLog gcc-4.7.4/libssp/ChangeLog *** gcc-4.7.3/libssp/ChangeLog Thu Apr 11 07:56:19 2013 --- gcc-4.7.4/libssp/ChangeLog Thu Jun 12 12:07:13 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libstdc++-v3/ChangeLog gcc-4.7.4/libstdc++-v3/ChangeLog *** gcc-4.7.3/libstdc++-v3/ChangeLog Thu Apr 11 07:55:01 2013 --- gcc-4.7.4/libstdc++-v3/ChangeLog Thu Jun 12 12:05:33 2014 *************** *** 1,3 **** --- 1,126 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + + 2014-05-29 Jonathan Wakely + + * include/tr2/bool_set: Use UTF-8 for accented characters. + * scripts/run_doxygen: Handle Doxygen 1.8.x change. + + 2014-05-08 Joshua Gay + + PR libstdc++/61117 + * doc/xml/faq.xml (faq.license.what_restrictions): Replace "open + source" with "free software". + * doc/html/faq.html: Likewise. + + 2012-04-05 Dominique d'Humieres + Jack Howarth + + PR target/54407 + * 30_threads/condition_variable/54185.cc: Skip for darwin < 11. + + 2014-04-01 Jason Merrill + + Core DR 475 + PR c++/41174 + PR c++/59224 + * libsupc++/eh_throw.cc (__cxa_throw): Set uncaughtExceptions. + * libsupc++/eh_alloc.cc (__cxa_allocate_dependent_exception) + (__cxa_allocate_exception): Don't set it here. + + 2014-03-25 Jonathan Wakely + + PR libstdc++/60658 + * include/bits/atomic_base.h (__atomic_base<_PTp*>::is_lock_free()): + Use sizeof pointer type not the element type. + * testsuite/29_atomics/atomic/60658.cc: New. + + 2013-11-05 Jonathan Wakely + + * doc/xml/manual/status_cxx2011.xml: Document aligned_union as + missing. + * doc/xml/manual/spine.xml: Update copyright years. + * doc/html/*: Regenerate. + + 2013-10-30 Chris Studholme + + PR libstdc++/58912 + * include/bits/shared_ptr_base.h (_Sp_counted_ptr_inplace): Remove + unnecessary initialization of storage buffer. + + 2013-10-20 Chris Jefferson + Paolo Carlini + + PR libstdc++/58800 + * include/bits/stl_algo.h (__unguarded_partition_pivot): Change + __last - 2 to __last - 1. + * testsuite/25_algorithms/nth_element/58800.cc: New + + 2013-09-30 Chris Jefferson + + PR libstdc++/58437 + * include/bits/stl_algo.h (__move_median_first): Rename to + __move_median_to_first, change to take an addition argument. + (__unguarded_partition_pivot): Adjust. + * testsuite/performance/25_algorithms/sort.cc: New. + * testsuite/performance/25_algorithms/sort_heap.cc: Likewise. + * testsuite/performance/25_algorithms/stable_sort.cc: Likewise. + + 2013-09-26 Jonathan Wakely + + Backport from mainline + + 2013-01-19 Jonathan Wakely + + PR libstdc++/55861 + * include/std/future (_State_base::_S_check(const shared_ptr&)): + Fix return type. + + 2013-09-03 Paolo Carlini + + PR libstdc++/58302 + * include/bits/random.tcc (negative_binomial_distribution<>:: + operator()(_UniformRandomNumberGenerator&, const param_type&): + Fix typo in template argument. + * testsuite/26_numerics/random/negative_binomial_distribution/ + operators/58302.cc: New. + + 2013-08-17 Uros Bizjak + + * src/c++98/compatibility.cc (_ZTIe): Use + reinterpret_cast to avoid -Wcast-qual warnings. + (_ZTIPe): Ditto. + (ZTIPKe): Ditto. + + 2013-05-15 Jonathan Wakely + + * include/bits/basic_string.h (getline): Fix doxygen comments. + + 2013-05-14 Evgeniy Stepanov + + * src/c++11/system_error.cc (generic_category_instance): Add + initializer. + (system_category_instance): Likewise. + * src/c++11/future.cc (__fec): Likewise. + + 2013-04-15 Jack Howarth + + Backport from mainline + + 2012-10-10 Jack Howarth + Jonathan Wakely + + PR libstdc++/54847 + * config/os/bsd/darwin/os_defines.h: Define _GLIBCXX_USE_NANOSLEEP + and _GLIBCXX_USE_SCHED_YIELD. + * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Add comment. + + 2013-04-15 Rainer Orth + + * testsuite/30_threads/condition_variable/members/53841.cc: Add + -std=gnu++0x -pthread on alpha*-*-osf*, mips-sgi-irix6*. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/libstdc++-v3/acinclude.m4 gcc-4.7.4/libstdc++-v3/acinclude.m4 *** gcc-4.7.3/libstdc++-v3/acinclude.m4 Fri Oct 12 11:00:44 2012 --- gcc-4.7.4/libstdc++-v3/acinclude.m4 Tue Apr 16 17:03:33 2013 *************** dnl --enable-libstdcxx-time=no *** 1132,1137 **** --- 1132,1142 ---- dnl --disable-libstdcxx-time dnl disables the checks completely dnl + dnl N.B. Darwin provides nanosleep but doesn't support the whole POSIX + dnl Timers option, so doesn't define _POSIX_TIMERS. Because the test + dnl below fails Darwin unconditionally defines _GLIBCXX_USE_NANOSLEEP in + dnl os_defines.h and also defines _GLIBCXX_USE_SCHED_YIELD. + dnl AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [ AC_MSG_CHECKING([for clock_gettime, nanosleep and sched_yield]) diff -Nrcpad gcc-4.7.3/libstdc++-v3/config/os/bsd/darwin/os_defines.h gcc-4.7.4/libstdc++-v3/config/os/bsd/darwin/os_defines.h *** gcc-4.7.3/libstdc++-v3/config/os/bsd/darwin/os_defines.h Tue Feb 7 09:19:27 2012 --- gcc-4.7.4/libstdc++-v3/config/os/bsd/darwin/os_defines.h Tue Apr 16 17:03:33 2013 *************** *** 42,45 **** --- 42,50 ---- // Static initializer macro is buggy in darwin, see libstdc++/51906 #define _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC + // Configure checks for nanosleep fail on Darwin, but nanosleep and + // sched_yield are always available, so use them. + #define _GLIBCXX_USE_NANOSLEEP 1 + #define _GLIBCXX_USE_SCHED_YIELD 1 + #endif diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/api.html gcc-4.7.4/libstdc++-v3/doc/html/api.html *** gcc-4.7.3/libstdc++-v3/doc/html/api.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/api.html Tue Nov 5 21:26:53 2013 *************** *** 1,13 **** ! ! The GNU C++ Library API Reference

The GNU C++ Library API Reference


--- 1,12 ---- ! The GNU C++ Library API Reference

The GNU C++ Library API Reference


*************** *** 20,26 **** particular include file, looking at inheritance diagrams, etc.

The API documentation, rendered into HTML, can be viewed online: !

  • for the 3.4 release

  • --- 19,25 ---- particular include file, looking at inheritance diagrams, etc.

    The API documentation, rendered into HTML, can be viewed online: !

    • for the 3.4 release

    • *************** *** 56,59 ****

      In addition, a rendered set of man pages are available in the same location specified above. Start with C++Intro(3). !

    --- 55,58 ----

    In addition, a rendered set of man pages are available in the same location specified above. Start with C++Intro(3). !

\ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/bk02.html gcc-4.7.4/libstdc++-v3/doc/html/bk02.html *** gcc-4.7.3/libstdc++-v3/doc/html/bk02.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/bk02.html Tue Nov 5 21:26:53 2013 *************** *** 1,3 **** ! ! --- 1,2 ---- ! \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/bk03.html gcc-4.7.4/libstdc++-v3/doc/html/bk03.html *** gcc-4.7.3/libstdc++-v3/doc/html/bk03.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/bk03.html Tue Nov 5 21:26:53 2013 *************** *** 1,3 **** ! ! --- 1,2 ---- ! \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/faq.html gcc-4.7.4/libstdc++-v3/doc/html/faq.html *** gcc-4.7.3/libstdc++-v3/doc/html/faq.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/faq.html Thu May 8 19:57:06 2014 *************** *** 1,10 **** ! ! Frequently Asked Questions

Frequently Asked Questions


1.1. What is libstdc++?
1.2. Why should I use libstdc++? --- 1,9 ---- ! Frequently Asked Questions

Frequently Asked Questions


1.1. What is libstdc++?
1.2. Why should I use libstdc++? *************** *** 91,97 **** What's an ABI and why is it so messy?
7.8. How do I make std::vector<T>::capacity() == std::vector<T>::size? !
1.1. What is libstdc++?
1.2. Why should I use libstdc++? --- 90,96 ---- What's an ABI and why is it so messy?
7.8. How do I make std::vector<T>::capacity() == std::vector<T>::size? !
1.1. What is libstdc++?
1.2. Why should I use libstdc++? *************** *** 105,111 **** What happened to the older libg++? I need that!
1.7. What if I have more questions? !

1.1.

What is libstdc++?

The GNU Standard C++ Library v3 is an ongoing project to --- 104,110 ---- What happened to the older libg++? I need that!

1.7. What if I have more questions? !

1.1.

What is libstdc++?

The GNU Standard C++ Library v3 is an ongoing project to *************** *** 115,121 **** bleeding-edge code, the up-to-date source is available over anonymous SVN, and can even be browsed over the web. !

1.2.

Why should I use libstdc++?

The completion of the ISO C++ standardization gave the C++ --- 114,120 ---- bleeding-edge code, the up-to-date source is available over anonymous SVN, and can even be browsed over the web. !

1.2.

Why should I use libstdc++?

The completion of the ISO C++ standardization gave the C++ *************** *** 141,147 **** vector<>, iostreams, and algorithms.) Programmers will no longer need to roll their own nor be worried about platform-specific incompatibilities. !

1.3.

Who's in charge of it?

The libstdc++ project is contributed to by several developers --- 140,146 ---- vector<>, iostreams, and algorithms.) Programmers will no longer need to roll their own nor be worried about platform-specific incompatibilities. !

1.3.

Who's in charge of it?

The libstdc++ project is contributed to by several developers *************** *** 155,167 **** archives, is open to everyone. You can read instructions for doing so on the homepage. If you have questions, ideas, code, or are just curious, sign up! !

1.4.

When is libstdc++ going to be finished?

Nathan Myers gave the best of all possible answers, responding to a Usenet article asking this question: Sooner, if you help. !

1.5.

How do I contribute to the effort?

Here is a page devoted to --- 154,166 ---- archives, is open to everyone. You can read instructions for doing so on the homepage. If you have questions, ideas, code, or are just curious, sign up! !

1.4.

When is libstdc++ going to be finished?

Nathan Myers gave the best of all possible answers, responding to a Usenet article asking this question: Sooner, if you help. !

1.5.

How do I contribute to the effort?

Here is a page devoted to *************** *** 172,178 **** anybody who is willing to help write documentation, for example, or has found a bug in code that we all thought was working and is willing to provide details, is more than welcome! !

1.6.

What happened to the older libg++? I need that!

The most recent libg++ README states that libg++ is no longer --- 171,177 ---- anybody who is willing to help write documentation, for example, or has found a bug in code that we all thought was working and is willing to provide details, is more than welcome! !

1.6.

What happened to the older libg++? I need that!

The most recent libg++ README states that libg++ is no longer *************** *** 180,186 **** projects, and is only being kicked along to support older code.

More information in the backwards compatibility documentation !

1.7.

What if I have more questions?

If you have read the README file, and your question remains --- 179,185 ---- projects, and is only being kicked along to support older code.

More information in the backwards compatibility documentation !

1.7.

What if I have more questions?

If you have read the README file, and your question remains *************** *** 201,217 **** How is that different from the GNU {Lesser,Library} GPL?

2.4. I see. So, what restrictions are there on programs that use the library? !

2.1.

What are the license terms for libstdc++?

See our license description for these and related questions. !

2.2.

So any program which uses libstdc++ falls under the GPL?

No. The special exception permits use of the library in proprietary applications. !

2.3.

How is that different from the GNU {Lesser,Library} GPL?

The LGPL requires that users be able to replace the LGPL code with a --- 200,216 ---- How is that different from the GNU {Lesser,Library} GPL?

2.4. I see. So, what restrictions are there on programs that use the library? !

2.1.

What are the license terms for libstdc++?

See our license description for these and related questions. !

2.2.

So any program which uses libstdc++ falls under the GPL?

No. The special exception permits use of the library in proprietary applications. !

2.3.

How is that different from the GNU {Lesser,Library} GPL?

The LGPL requires that users be able to replace the LGPL code with a *************** *** 221,230 **** are expanded inside the code that uses the library. So to allow people to replace the library code, someone using the library would have to distribute their own source, rendering the LGPL equivalent to the GPL. !

2.4.

I see. So, what restrictions are there on programs that use the library?

! None. We encourage such programs to be released as open source, but we won't punish you or sue you if you choose otherwise.

3.1. How do I install libstdc++?
3.2. How does one get current libstdc++ sources? --- 220,229 ---- are expanded inside the code that uses the library. So to allow people to replace the library code, someone using the library would have to distribute their own source, rendering the LGPL equivalent to the GPL. !

2.4.

I see. So, what restrictions are there on programs that use the library?

! None. We encourage such programs to be released as free software, but we won't punish you or sue you if you choose otherwise.

3.1. How do I install libstdc++?
3.2. How does one get current libstdc++ sources? *************** *** 234,240 **** What's libsupc++?
3.6. This library is HUGE! !

3.1.

How do I install libstdc++?

Often libstdc++ comes pre-installed as an integral part of many existing GNU/Linux and Unix systems, as well as many embedded --- 233,239 ---- What's libsupc++?

3.6. This library is HUGE! !

3.1.

How do I install libstdc++?

Often libstdc++ comes pre-installed as an integral part of many existing GNU/Linux and Unix systems, as well as many embedded *************** *** 247,253 **** documentation for detailed instructions. You may wish to browse those files ahead of time to get a feel for what's required. !

3.2.

How does one get current libstdc++ sources?

Libstdc++ sources for all official releases can be obtained as part of the GCC sources, available from various sites and --- 246,252 ---- documentation for detailed instructions. You may wish to browse those files ahead of time to get a feel for what's required. !

3.2.

How does one get current libstdc++ sources?

Libstdc++ sources for all official releases can be obtained as part of the GCC sources, available from various sites and *************** *** 272,278 **** For more information see SVN details. !

3.3.

How do I know if it works?

Libstdc++ comes with its own validation testsuite, which includes conformance testing, regression testing, ABI testing, and --- 271,277 ---- For more information see SVN details. !

3.3.

How do I know if it works?

Libstdc++ comes with its own validation testsuite, which includes conformance testing, regression testing, ABI testing, and *************** *** 283,289 **** If you find bugs in the testsuite programs themselves, or if you think of a new test program that should be added to the suite, please write up your idea and send it to the list! !

3.4.

How do I insure that the dynamically linked library will be found?

Depending on your platform and library version, the error message might be similar to one of the following: --- 282,288 ---- If you find bugs in the testsuite programs themselves, or if you think of a new test program that should be added to the suite, please write up your idea and send it to the list! !

3.4.

How do I insure that the dynamically linked library will be found?

Depending on your platform and library version, the error message might be similar to one of the following: *************** *** 318,324 ****

Using LD_LIBRARY_PATH is not always the best solution, Finding Dynamic or Shared Libraries in the manual gives some alternatives. !

3.5.

What's libsupc++?

If the only functions from libstdc++.a --- 317,323 ----

Using LD_LIBRARY_PATH is not always the best solution, Finding Dynamic or Shared Libraries in the manual gives some alternatives. !

3.5.

What's libsupc++?

If the only functions from libstdc++.a *************** *** 335,341 **** using anything from the rest of the library, such as IOStreams or vectors, then you'll still need pieces from libstdc++.a. !

3.6.

This library is HUGE!

Usually the size of libraries on disk isn't noticeable. When a --- 334,340 ---- using anything from the rest of the library, such as IOStreams or vectors, then you'll still need pieces from libstdc++.a. !

3.6.

This library is HUGE!

Usually the size of libraries on disk isn't noticeable. When a *************** *** 382,388 **** Recent GNU/Linux glibc required?

4.8. Can't use wchar_t/wstring on FreeBSD !

4.1.

Can libstdc++ be used with non-GNU compilers?

Perhaps. --- 381,387 ---- Recent GNU/Linux glibc required?

4.8. Can't use wchar_t/wstring on FreeBSD !

4.1.

Can libstdc++ be used with non-GNU compilers?

Perhaps. *************** *** 402,408 **** been known to work with versions of the EDG C++ compiler, and vendor-specific proprietary C++ compilers such as the Intel ICC C++ compiler. !

4.2.

No 'long long' type on Solaris?

By default we try to support the C99 long long type. --- 401,407 ---- been known to work with versions of the EDG C++ compiler, and vendor-specific proprietary C++ compilers such as the Intel ICC C++ compiler. !

4.2.

No 'long long' type on Solaris?

By default we try to support the C99 long long type. *************** *** 414,420 **** commonly reported platform affected was Solaris.

This has been fixed for libstdc++ releases greater than 3.0.3. !

4.3.

_XOPEN_SOURCE and _GNU_SOURCE are always defined?

On Solaris, g++ (but not gcc) always defines the preprocessor macro _XOPEN_SOURCE. On GNU/Linux, the same happens --- 413,419 ---- commonly reported platform affected was Solaris.

This has been fixed for libstdc++ releases greater than 3.0.3. !

4.3.

_XOPEN_SOURCE and _GNU_SOURCE are always defined?

On Solaris, g++ (but not gcc) always defines the preprocessor macro _XOPEN_SOURCE. On GNU/Linux, the same happens *************** *** 443,455 **** quite a bit.

This method is something of a wart. We'd like to find a cleaner solution, but nobody yet has contributed the time. !

4.4.

Mac OS X ctype.h is broken! How can I fix it?

This is a long-standing bug in the OS X support. Fortunately, the patch is quite simple, and well-known. Here's a link to the solution. !

4.5.

Threading is broken on i386?

Support for atomic integer operations is/was broken on i386 --- 442,454 ---- quite a bit.

This method is something of a wart. We'd like to find a cleaner solution, but nobody yet has contributed the time. !

4.4.

Mac OS X ctype.h is broken! How can I fix it?

This is a long-standing bug in the OS X support. Fortunately, the patch is quite simple, and well-known. Here's a link to the solution. !

4.5.

Threading is broken on i386?

Support for atomic integer operations is/was broken on i386 *************** *** 459,465 **** on an i686, then you would encounter no problems. Only when actually running the code on a i386 will the problem appear.

This is fixed in 3.2.2. !

4.6.

MIPS atomic operations

The atomic locking routines for MIPS targets requires MIPS II --- 458,464 ---- on an i686, then you would encounter no problems. Only when actually running the code on a i386 will the problem appear.

This is fixed in 3.2.2. !

4.6.

MIPS atomic operations

The atomic locking routines for MIPS targets requires MIPS II *************** *** 469,475 ****

The mips*-*-linux* port continues to use the MIPS II routines, and more work in this area is expected. !

4.7.

Recent GNU/Linux glibc required?

When running on GNU/Linux, libstdc++ 3.2.1 (shared library version 5.0.1) and later uses localization and formatting code from the system --- 468,474 ----

The mips*-*-linux* port continues to use the MIPS II routines, and more work in this area is expected. !

4.7.

Recent GNU/Linux glibc required?

When running on GNU/Linux, libstdc++ 3.2.1 (shared library version 5.0.1) and later uses localization and formatting code from the system *************** *** 480,486 ****

The guideline is simple: the more recent the C++ library, the more recent the C library. (This is also documented in the main GCC installation instructions.) !

4.8.

Can't use wchar_t/wstring on FreeBSD

Older versions of FreeBSD's C library do not have sufficient --- 479,485 ----

The guideline is simple: the more recent the C++ library, the more recent the C library. (This is also documented in the main GCC installation instructions.) !

4.8.

Can't use wchar_t/wstring on FreeBSD

Older versions of FreeBSD's C library do not have sufficient *************** *** 499,505 **** Bugs in the ISO C++ language or library specification

5.3. Bugs in the compiler (gcc/g++) and not libstdc++ !

5.1.

What works already?

Short answer: Pretty much everything works --- 498,504 ---- Bugs in the ISO C++ language or library specification

5.3. Bugs in the compiler (gcc/g++) and not libstdc++ !

5.1.

What works already?

Short answer: Pretty much everything works *************** *** 513,519 **** C++98, TR1, and C++11. !

5.2.

Bugs in the ISO C++ language or library specification

Unfortunately, there are some. --- 512,518 ---- C++98, TR1, and C++11. !

5.2.

Bugs in the ISO C++ language or library specification

Unfortunately, there are some. *************** *** 528,534 **** If you think you've discovered a new bug that is not listed, please post a message describing your problem to the author of the library issues list or the Usenet group comp.lang.c++.moderated. !

5.3.

Bugs in the compiler (gcc/g++) and not libstdc++

On occasion, the compiler is wrong. Please be advised that this --- 527,533 ---- If you think you've discovered a new bug that is not listed, please post a message describing your problem to the author of the library issues list or the Usenet group comp.lang.c++.moderated. !

5.3.

Bugs in the compiler (gcc/g++) and not libstdc++

On occasion, the compiler is wrong. Please be advised that this *************** *** 563,569 **** list::size() is O(n)!

6.9. Aw, that's easy to fix! !

6.1.

Reopening a stream fails

One of the most-reported non-bug reports. Executing a sequence like: --- 562,568 ---- list::size() is O(n)!

6.9. Aw, that's easy to fix! !

6.1.

Reopening a stream fails

One of the most-reported non-bug reports. Executing a sequence like: *************** *** 590,596 **** Update: for GCC 4.0 we implemented the resolution of DR #409 and open() now calls clear() on success! !

6.2.

-Weffc++ complains too much

Many warnings are emitted when -Weffc++ is used. Making --- 589,595 ---- Update: for GCC 4.0 we implemented the resolution of DR #409 and open() now calls clear() on success! !

6.2.

-Weffc++ complains too much

Many warnings are emitted when -Weffc++ is used. Making *************** *** 602,608 **** We do, however, try to have libstdc++ sources as clean as possible. If you see some simple changes that pacify -Weffc++ without other drawbacks, send us a patch. !

6.3.

Ambiguous overloads after including an old-style header

Another problem is the rel_ops namespace and the template --- 601,607 ---- We do, however, try to have libstdc++ sources as clean as possible. If you see some simple changes that pacify -Weffc++ without other drawbacks, send us a patch. !

6.3.

Ambiguous overloads after including an old-style header

Another problem is the rel_ops namespace and the template *************** *** 614,620 **** sums things up here. The collisions with vector/string iterator types have been fixed for 3.1. !

6.4.

The g++-3 headers are not ours

If you are using headers in --- 613,619 ---- sums things up here. The collisions with vector/string iterator types have been fixed for 3.1. !

6.4.

The g++-3 headers are not ours

If you are using headers in *************** *** 630,636 **** 'v'?). Starting with version 3.2 the headers are installed in ${prefix}/include/c++/${version} as this prevents headers from previous versions being found by mistake. !

6.5.

Errors about *Concept and constraints in the STL

--- 629,635 ---- 'v'?). Starting with version 3.2 the headers are installed in ${prefix}/include/c++/${version} as this prevents headers from previous versions being found by mistake. !

6.5.

Errors about *Concept and constraints in the STL

*************** *** 647,653 **** checks, is available in the Diagnostics. chapter of the manual. !

6.6.

Program crashes when using library code in a dynamically-loaded library

--- 646,652 ---- checks, is available in the Diagnostics. chapter of the manual. !

6.6.

Program crashes when using library code in a dynamically-loaded library

*************** *** 666,672 ****
    // link the executable
    g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl
!     

6.7.

Memory leaks in containers

A few people have reported that the standard containers appear --- 665,671 ----
    // link the executable
    g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl
!     

6.7.

Memory leaks in containers

A few people have reported that the standard containers appear *************** *** 679,691 **** want to test the library for memory leaks please read Tips for memory leak hunting first. !

6.8.

list::size() is O(n)!

See the Containers chapter. !

6.9.

Aw, that's easy to fix!

If you have found a bug in the library and you think you have --- 678,690 ---- want to test the library for memory leaks please read Tips for memory leak hunting first. !

6.8.

list::size() is O(n)!

See the Containers chapter. !

6.9.

Aw, that's easy to fix!

If you have found a bug in the library and you think you have *************** *** 718,724 **** What's an ABI and why is it so messy?

7.8. How do I make std::vector<T>::capacity() == std::vector<T>::size? !

7.1.

string::iterator is not char*; vector<T>::iterator is not T*

If you have code that depends on container<T> iterators --- 717,723 ---- What's an ABI and why is it so messy?

7.8. How do I make std::vector<T>::capacity() == std::vector<T>::size? !

7.1.

string::iterator is not char*; vector<T>::iterator is not T*

If you have code that depends on container<T> iterators *************** *** 737,743 **** certain expressions to &*i. Future revisions of the Standard are expected to bless this usage for vector<> (but not for basic_string<>). !

7.2.

What's next after libstdc++?

Hopefully, not much. The goal of libstdc++ is to produce a --- 736,742 ---- certain expressions to &*i. Future revisions of the Standard are expected to bless this usage for vector<> (but not for basic_string<>). !

7.2.

What's next after libstdc++?

Hopefully, not much. The goal of libstdc++ is to produce a *************** *** 750,756 **** this effort is described in The C++ Library Technical Report 1. !

7.3.

What about the STL from SGI?

The STL from SGI, --- 749,755 ---- this effort is described in The C++ Library Technical Report 1. !

7.3.

What about the STL from SGI?

The STL from SGI, *************** *** 773,783 ****

The FAQ for SGI's STL (one jump off of their main page) is still recommended reading. !

7.4.

Extensions and Backward Compatibility

See the link on backwards compatibility and link on evolution. !

7.5.

Does libstdc++ support TR1?

Yes. --- 772,782 ----

The FAQ for SGI's STL (one jump off of their main page) is still recommended reading. !

7.4.

Extensions and Backward Compatibility

See the link on backwards compatibility and link on evolution. !

7.5.

Does libstdc++ support TR1?

Yes. *************** *** 789,795 ****

The implementation status of TR1 in libstdc++ can be tracked on the TR1 status page. !

7.6.

How do I get a copy of the ISO C++ Standard?

Copies of the full ISO 14882 standard are available on line via the ISO mirror site for committee members. Non-members, or those --- 788,794 ----

The implementation status of TR1 in libstdc++ can be tracked on the TR1 status page. !

7.6.

How do I get a copy of the ISO C++ Standard?

Copies of the full ISO 14882 standard are available on line via the ISO mirror site for committee members. Non-members, or those *************** *** 808,814 ****

The 2003 version of the standard (the 1998 version plus TC1) is available in print, ISBN 0-470-84674-7. !

7.7.

What's an ABI and why is it so messy?

ABI stands for Application Binary --- 807,813 ----

The 2003 version of the standard (the 1998 version plus TC1) is available in print, ISBN 0-470-84674-7. !

7.7.

What's an ABI and why is it so messy?

ABI stands for Application Binary *************** *** 856,862 **** so they may later be changed. Deciding which, and implementing the decisions, must happen before you can reasonably document a candidate C++ ABI that encompasses the standard library. !

7.8.

How do I make std::vector<T>::capacity() == std::vector<T>::size?

The standard idiom for deallocating a vector<T>'s --- 855,861 ---- so they may later be changed. Deciding which, and implementing the decisions, must happen before you can reasonably document a candidate C++ ABI that encompasses the standard library. !

7.8.

How do I make std::vector<T>::capacity() == std::vector<T>::size?

The standard idiom for deallocating a vector<T>'s *************** *** 869,872 ****

See Shrink-to-fit strings for a similar solution for strings. !

--- 868,871 ----

See Shrink-to-fit strings for a similar solution for strings. !

\ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/index.html gcc-4.7.4/libstdc++-v3/doc/html/index.html *** gcc-4.7.3/libstdc++-v3/doc/html/index.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/index.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! The GNU C++ Library

The GNU C++ Library

Short Contents

Copyright 2008, 2009, 2011 FSF --- 1,5 ---- ! The GNU C++ Library


Table of Contents

The GNU C++ Library Manual
I. Introduction
1. Status
Implementation Status
C++ 1998/2003
Implementation Status
Implementation Specific Behavior
C++ 2011
Implementation Specific Behavior
C++ TR1
Implementation Specific Behavior
C++ TR 24733
License
The Code: GPL
The Documentation: GPL, FDL
Bugs
Implementation Bugs
Standard Bugs
2. Setup
Prerequisites
Configure
Make
3. Using
Command Options
Headers
Header Files
Mixing Headers
The C Headers and namespace std
Precompiled Headers
Macros
Namespaces
Available Namespaces
namespace std
Using Namespace Composition
Linking
Almost Nothing
Finding Dynamic or Shared Libraries
Concurrency
Prerequisites
Thread Safety
Atomics
IO
Structure
Defaults
Future
Alternatives
Containers
Exceptions
Exception Safety
Exception Neutrality
Doing without
Compatibility
With C
With POSIX thread cancellation
Debugging Support
Using g++
Debug Versions of Library Binary Files
Memory Leak Hunting
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
Profile-based Performance Analysis
II. *************** *** 35,47 ****
Exceptions
API Reference
Adding Data to exception
Concept Checking
6. Utilities !
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. Strings
String Classes
Simple Transformations
Case Sensitivity
Arbitrary Character Types
Tokenizing
Shrink to Fit
CString (MFC)
8. Localization !
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. Containers
Sequences
list
list::size() is O(n)
vector
Space Overhead Management
Associative
Insertion Hints
bitset
Size Variable
Type String
Interacting with C
Containers vs. Arrays
10. --- 34,46 ----
Exceptions
API Reference
Adding Data to exception
Concept Checking
6. Utilities !
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. Strings
String Classes
Simple Transformations
Case Sensitivity
Arbitrary Character Types
Tokenizing
Shrink to Fit
CString (MFC)
8. Localization !
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. Containers
Sequences
list
list::size() is O(n)
vector
Space Overhead Management
Associative
Insertion Hints
bitset
Size Variable
Type String
Interacting with C
Containers vs. Arrays
10. *************** Support for C++11 dialect. *** 163,166 ****
D. GNU General Public License version 3 !
E. GNU Free Documentation License
The GNU C++ Library API Reference
Frequently Asked Questions
--- 162,165 ----
D. GNU General Public License version 3 !
E. GNU Free Documentation License
The GNU C++ Library API Reference
Frequently Asked Questions
\ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/abi.html gcc-4.7.4/libstdc++-v3/doc/html/manual/abi.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/abi.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/abi.html Tue Nov 5 21:26:53 2013 *************** *** 1,10 **** ! ! ABI Policy and Guidelines

ABI Policy and Guidelines

!

The C++ Interface

C++ applications often depend on specific language support routines, say for throwing exceptions, or catching exceptions, and perhaps also depend on features in the C++ Standard Library. --- 1,9 ---- ! ABI Policy and Guidelines

ABI Policy and Guidelines

!

The C++ Interface

C++ applications often depend on specific language support routines, say for throwing exceptions, or catching exceptions, and perhaps also depend on features in the C++ Standard Library. *************** given compiler ABI. In a nutshell: *** 58,67 **** To use a specific version of the C++ ABI, one must use a corresponding GNU C++ toolchain (i.e., g++ and libstdc++) that implements the C++ ABI in question. !

Versioning

The C++ interface has evolved throughout the history of the GNU C++ toolchain. With each release, various details have been changed so as to give distinct versions to the C++ interface. !

Goals

Extending existing, stable ABIs. Versioning gives subsequent releases of library binaries the ability to add new symbols and add functionality, all the while retaining compatibility with the previous releases in the series. Thus, program binaries linked with the initial --- 57,66 ---- To use a specific version of the C++ ABI, one must use a corresponding GNU C++ toolchain (i.e., g++ and libstdc++) that implements the C++ ABI in question. !

Versioning

The C++ interface has evolved throughout the history of the GNU C++ toolchain. With each release, various details have been changed so as to give distinct versions to the C++ interface. !

Goals

Extending existing, stable ABIs. Versioning gives subsequent releases of library binaries the ability to add new symbols and add functionality, all the while retaining compatibility with the previous releases in the series. Thus, program binaries linked with the initial *************** binary in a release series (with additio *** 75,81 **** in the initial release of the library binary, and remain link compatible.

Allows multiple, incompatible ABIs to coexist at the same time. !

History

How can this complexity be managed? What does C++ versioning mean? Because library and compiler changes often make binaries compiled with one version of the GNU tools incompatible with binaries --- 74,80 ---- in the initial release of the library binary, and remain link compatible.

Allows multiple, incompatible ABIs to coexist at the same time. !

History

How can this complexity be managed? What does C++ versioning mean? Because library and compiler changes often make binaries compiled with one version of the GNU tools incompatible with binaries *************** compatible. *** 87,95 ****

  1. Release versioning on the libgcc_s.so binary.

    This is implemented via file names and the ELF DT_SONAME mechanism (at least on ELF systems). It is versioned as follows: !

    • GCC 3.x: libgcc_s.so.1

    • GCC 4.x: libgcc_s.so.1

    For m68k-linux the versions differ as follows:

    • GCC 3.4, GCC 4.x: libgcc_s.so.1 when configuring --with-sjlj-exceptions, or ! libgcc_s.so.2

    For hppa-linux the versions differ as follows:

    • GCC 3.4, GCC 4.[0-1]: either libgcc_s.so.1 when configuring --with-sjlj-exceptions, or libgcc_s.so.2

    • GCC 4.[2-7]: either libgcc_s.so.3 when configuring --with-sjlj-exceptions) or libgcc_s.so.4 --- 86,94 ----

      1. Release versioning on the libgcc_s.so binary.

        This is implemented via file names and the ELF DT_SONAME mechanism (at least on ELF systems). It is versioned as follows: !

        • GCC 3.x: libgcc_s.so.1

        • GCC 4.x: libgcc_s.so.1

        For m68k-linux the versions differ as follows:

        • GCC 3.4, GCC 4.x: libgcc_s.so.1 when configuring --with-sjlj-exceptions, or ! libgcc_s.so.2

        For hppa-linux the versions differ as follows:

        • GCC 3.4, GCC 4.[0-1]: either libgcc_s.so.1 when configuring --with-sjlj-exceptions, or libgcc_s.so.2

        • GCC 4.[2-7]: either libgcc_s.so.3 when configuring --with-sjlj-exceptions) or libgcc_s.so.4 *************** compatible. *** 97,103 **** definitions, where the version definition is the maximum for a particular release. Labels are cumulative. If a particular release is not listed, it has the same version labels as the preceding ! release.

          This corresponds to the mapfile: gcc/libgcc-std.ver

          • GCC 3.0.0: GCC_3.0

          • GCC 3.3.0: GCC_3.3

          • GCC 3.3.1: GCC_3.3.1

          • GCC 3.3.2: GCC_3.3.2

          • GCC 3.3.4: GCC_3.3.4

          • GCC 3.4.0: GCC_3.4

          • GCC 3.4.2: GCC_3.4.2

          • GCC 3.4.4: GCC_3.4.4

          • GCC 4.0.0: GCC_4.0.0

          • GCC 4.1.0: GCC_4.1.0

          • GCC 4.2.0: GCC_4.2.0

          • GCC 4.3.0: GCC_4.3.0

          • GCC 4.4.0: GCC_4.4.0

          • GCC 4.5.0: GCC_4.5.0

          • GCC 4.6.0: GCC_4.6.0

          • GCC 4.7.0: GCC_4.7.0

        • Release versioning on the libstdc++.so binary, implemented in the same way as the libgcc_s.so binary above. Listed is the filename: DT_SONAME can be deduced from --- 96,102 ---- definitions, where the version definition is the maximum for a particular release. Labels are cumulative. If a particular release is not listed, it has the same version labels as the preceding ! release.

          This corresponds to the mapfile: gcc/libgcc-std.ver

          • GCC 3.0.0: GCC_3.0

          • GCC 3.3.0: GCC_3.3

          • GCC 3.3.1: GCC_3.3.1

          • GCC 3.3.2: GCC_3.3.2

          • GCC 3.3.4: GCC_3.3.4

          • GCC 3.4.0: GCC_3.4

          • GCC 3.4.2: GCC_3.4.2

          • GCC 3.4.4: GCC_3.4.4

          • GCC 4.0.0: GCC_4.0.0

          • GCC 4.1.0: GCC_4.1.0

          • GCC 4.2.0: GCC_4.2.0

          • GCC 4.3.0: GCC_4.3.0

          • GCC 4.4.0: GCC_4.4.0

          • GCC 4.5.0: GCC_4.5.0

          • GCC 4.6.0: GCC_4.6.0

          • GCC 4.7.0: GCC_4.7.0

        • Release versioning on the libstdc++.so binary, implemented in the same way as the libgcc_s.so binary above. Listed is the filename: DT_SONAME can be deduced from *************** compatible. *** 112,118 **** has the same filename and DT_SONAME as the preceding release.

          It is versioned as follows: !

          • GCC 3.0.0: libstdc++.so.3.0.0

          • GCC 3.0.1: libstdc++.so.3.0.1

          • GCC 3.0.2: libstdc++.so.3.0.2

          • GCC 3.0.3: libstdc++.so.3.0.2 (See Note 1)

          • GCC 3.0.4: libstdc++.so.3.0.4

          • GCC 3.1.0: libstdc++.so.4.0.0 (Incompatible with previous)

          • GCC 3.1.1: libstdc++.so.4.0.1

          • GCC 3.2.0: libstdc++.so.5.0.0 (Incompatible with previous)

          • GCC 3.2.1: libstdc++.so.5.0.1

          • GCC 3.2.2: libstdc++.so.5.0.2

          • GCC 3.2.3: libstdc++.so.5.0.3 (See Note 2)

          • GCC 3.3.0: libstdc++.so.5.0.4

          • GCC 3.3.1: libstdc++.so.5.0.5

          • GCC 3.4.0: libstdc++.so.6.0.0 (Incompatible with previous)

          • GCC 3.4.1: libstdc++.so.6.0.1

          • GCC 3.4.2: libstdc++.so.6.0.2

          • GCC 3.4.3: libstdc++.so.6.0.3

          • GCC 4.0.0: libstdc++.so.6.0.4

          • GCC 4.0.1: libstdc++.so.6.0.5

          • GCC 4.0.2: libstdc++.so.6.0.6

          • GCC 4.0.3: libstdc++.so.6.0.7

          • GCC 4.1.0: libstdc++.so.6.0.7

          • GCC 4.1.1: libstdc++.so.6.0.8

          • GCC 4.2.0: libstdc++.so.6.0.9

          • GCC 4.2.1: libstdc++.so.6.0.9 (See Note 3)

          • GCC 4.2.2: libstdc++.so.6.0.9

          • GCC 4.3.0: libstdc++.so.6.0.10

          • GCC 4.4.0: libstdc++.so.6.0.11

          • GCC 4.4.1: libstdc++.so.6.0.12

          • GCC 4.4.2: libstdc++.so.6.0.13

          • GCC 4.5.0: libstdc++.so.6.0.14

          • GCC 4.6.0: libstdc++.so.6.0.15

          • GCC 4.6.1: libstdc++.so.6.0.16

          Note 1: Error should be libstdc++.so.3.0.3.

          Note 2: Not strictly required. --- 111,117 ---- has the same filename and DT_SONAME as the preceding release.

          It is versioned as follows: !

          • GCC 3.0.0: libstdc++.so.3.0.0

          • GCC 3.0.1: libstdc++.so.3.0.1

          • GCC 3.0.2: libstdc++.so.3.0.2

          • GCC 3.0.3: libstdc++.so.3.0.2 (See Note 1)

          • GCC 3.0.4: libstdc++.so.3.0.4

          • GCC 3.1.0: libstdc++.so.4.0.0 (Incompatible with previous)

          • GCC 3.1.1: libstdc++.so.4.0.1

          • GCC 3.2.0: libstdc++.so.5.0.0 (Incompatible with previous)

          • GCC 3.2.1: libstdc++.so.5.0.1

          • GCC 3.2.2: libstdc++.so.5.0.2

          • GCC 3.2.3: libstdc++.so.5.0.3 (See Note 2)

          • GCC 3.3.0: libstdc++.so.5.0.4

          • GCC 3.3.1: libstdc++.so.5.0.5

          • GCC 3.4.0: libstdc++.so.6.0.0 (Incompatible with previous)

          • GCC 3.4.1: libstdc++.so.6.0.1

          • GCC 3.4.2: libstdc++.so.6.0.2

          • GCC 3.4.3: libstdc++.so.6.0.3

          • GCC 4.0.0: libstdc++.so.6.0.4

          • GCC 4.0.1: libstdc++.so.6.0.5

          • GCC 4.0.2: libstdc++.so.6.0.6

          • GCC 4.0.3: libstdc++.so.6.0.7

          • GCC 4.1.0: libstdc++.so.6.0.7

          • GCC 4.1.1: libstdc++.so.6.0.8

          • GCC 4.2.0: libstdc++.so.6.0.9

          • GCC 4.2.1: libstdc++.so.6.0.9 (See Note 3)

          • GCC 4.2.2: libstdc++.so.6.0.9

          • GCC 4.3.0: libstdc++.so.6.0.10

          • GCC 4.4.0: libstdc++.so.6.0.11

          • GCC 4.4.1: libstdc++.so.6.0.12

          • GCC 4.4.2: libstdc++.so.6.0.13

          • GCC 4.5.0: libstdc++.so.6.0.14

          • GCC 4.6.0: libstdc++.so.6.0.15

          • GCC 4.6.1: libstdc++.so.6.0.16

          • GCC 4.7.0: libstdc++.so.6.0.17

          Note 1: Error should be libstdc++.so.3.0.3.

          Note 2: Not strictly required. *************** compatible. *** 130,136 **** GLIBCPP_3.2 for symbols that were introduced in the GCC 3.2.0 release.) If a particular release is not listed, it has the same version labels as the preceding release. !

          • GCC 3.0.0: (Error, not versioned)

          • GCC 3.0.1: (Error, not versioned)

          • GCC 3.0.2: (Error, not versioned)

          • GCC 3.0.3: (Error, not versioned)

          • GCC 3.0.4: (Error, not versioned)

          • GCC 3.1.0: GLIBCPP_3.1, CXXABI_1

          • GCC 3.1.1: GLIBCPP_3.1, CXXABI_1

          • GCC 3.2.0: GLIBCPP_3.2, CXXABI_1.2

          • GCC 3.2.1: GLIBCPP_3.2.1, CXXABI_1.2

          • GCC 3.2.2: GLIBCPP_3.2.2, CXXABI_1.2

          • GCC 3.2.3: GLIBCPP_3.2.2, CXXABI_1.2

          • GCC 3.3.0: GLIBCPP_3.2.2, CXXABI_1.2.1

          • GCC 3.3.1: GLIBCPP_3.2.3, CXXABI_1.2.1

          • GCC 3.3.2: GLIBCPP_3.2.3, CXXABI_1.2.1

          • GCC 3.3.3: GLIBCPP_3.2.3, CXXABI_1.2.1

          • GCC 3.4.0: GLIBCXX_3.4, CXXABI_1.3

          • GCC 3.4.1: GLIBCXX_3.4.1, CXXABI_1.3

          • GCC 3.4.2: GLIBCXX_3.4.2

          • GCC 3.4.3: GLIBCXX_3.4.3

          • GCC 4.0.0: GLIBCXX_3.4.4, CXXABI_1.3.1

          • GCC 4.0.1: GLIBCXX_3.4.5

          • GCC 4.0.2: GLIBCXX_3.4.6

          • GCC 4.0.3: GLIBCXX_3.4.7

          • GCC 4.1.1: GLIBCXX_3.4.8

          • GCC 4.2.0: GLIBCXX_3.4.9

          • GCC 4.3.0: GLIBCXX_3.4.10, CXXABI_1.3.2

          • GCC 4.4.0: GLIBCXX_3.4.11, CXXABI_1.3.3

          • GCC 4.4.1: GLIBCXX_3.4.12, CXXABI_1.3.3

          • GCC 4.4.2: GLIBCXX_3.4.13, CXXABI_1.3.3

          • GCC 4.5.0: GLIBCXX_3.4.14, CXXABI_1.3.4

          • GCC 4.6.0: GLIBCXX_3.4.15, CXXABI_1.3.5

          • GCC 4.6.1: GLIBCXX_3.4.16, CXXABI_1.3.5

        • Incremental bumping of a compiler pre-defined macro, __GXX_ABI_VERSION. This macro is defined as the version of the compiler v3 ABI, with g++ 3.0 being version 100. This macro will be automatically defined whenever g++ is used (the curious can --- 129,135 ---- GLIBCPP_3.2 for symbols that were introduced in the GCC 3.2.0 release.) If a particular release is not listed, it has the same version labels as the preceding release. !

          • GCC 3.0.0: (Error, not versioned)

          • GCC 3.0.1: (Error, not versioned)

          • GCC 3.0.2: (Error, not versioned)

          • GCC 3.0.3: (Error, not versioned)

          • GCC 3.0.4: (Error, not versioned)

          • GCC 3.1.0: GLIBCPP_3.1, CXXABI_1

          • GCC 3.1.1: GLIBCPP_3.1, CXXABI_1

          • GCC 3.2.0: GLIBCPP_3.2, CXXABI_1.2

          • GCC 3.2.1: GLIBCPP_3.2.1, CXXABI_1.2

          • GCC 3.2.2: GLIBCPP_3.2.2, CXXABI_1.2

          • GCC 3.2.3: GLIBCPP_3.2.2, CXXABI_1.2

          • GCC 3.3.0: GLIBCPP_3.2.2, CXXABI_1.2.1

          • GCC 3.3.1: GLIBCPP_3.2.3, CXXABI_1.2.1

          • GCC 3.3.2: GLIBCPP_3.2.3, CXXABI_1.2.1

          • GCC 3.3.3: GLIBCPP_3.2.3, CXXABI_1.2.1

          • GCC 3.4.0: GLIBCXX_3.4, CXXABI_1.3

          • GCC 3.4.1: GLIBCXX_3.4.1, CXXABI_1.3

          • GCC 3.4.2: GLIBCXX_3.4.2

          • GCC 3.4.3: GLIBCXX_3.4.3

          • GCC 4.0.0: GLIBCXX_3.4.4, CXXABI_1.3.1

          • GCC 4.0.1: GLIBCXX_3.4.5

          • GCC 4.0.2: GLIBCXX_3.4.6

          • GCC 4.0.3: GLIBCXX_3.4.7

          • GCC 4.1.1: GLIBCXX_3.4.8

          • GCC 4.2.0: GLIBCXX_3.4.9

          • GCC 4.3.0: GLIBCXX_3.4.10, CXXABI_1.3.2

          • GCC 4.4.0: GLIBCXX_3.4.11, CXXABI_1.3.3

          • GCC 4.4.1: GLIBCXX_3.4.12, CXXABI_1.3.3

          • GCC 4.4.2: GLIBCXX_3.4.13, CXXABI_1.3.3

          • GCC 4.5.0: GLIBCXX_3.4.14, CXXABI_1.3.4

          • GCC 4.6.0: GLIBCXX_3.4.15, CXXABI_1.3.5

          • GCC 4.6.1: GLIBCXX_3.4.16, CXXABI_1.3.5

          • GCC 4.7.0: GLIBCXX_3.4.17, CXXABI_1.3.6

        • Incremental bumping of a compiler pre-defined macro, __GXX_ABI_VERSION. This macro is defined as the version of the compiler v3 ABI, with g++ 3.0 being version 100. This macro will be automatically defined whenever g++ is used (the curious can *************** compatible. *** 142,152 **** '-fabi-version' command line option.

          It is versioned as follows, where 'n' is given by '-fabi-version=n': !

          • GCC 3.0: 100

          • GCC 3.1: 100 (Error, should be 101)

          • GCC 3.2: 102

          • GCC 3.3: 102

          • GCC 3.4, GCC 4.x: 102 (when n=1)

          • GCC 3.4, GCC 4.x: 1000 + n (when n>1)

          • GCC 3.4, GCC 4.x: 999999 (when n=0)

        • Changes to the default compiler option for -fabi-version.

          It is versioned as follows: !

          • GCC 3.0: (Error, not versioned)

          • GCC 3.1: (Error, not versioned)

          • GCC 3.2: -fabi-version=1

          • GCC 3.3: -fabi-version=1

          • GCC 3.4, GCC 4.x: -fabi-version=2 (Incompatible with previous)

        • Incremental bumping of a library pre-defined macro. For releases before 3.4.0, the macro is __GLIBCPP__. For later releases, it's __GLIBCXX__. (The libstdc++ project generously changed from CPP to CXX throughout its source to allow the "C" pre-processor the CPP --- 141,151 ---- '-fabi-version' command line option.

          It is versioned as follows, where 'n' is given by '-fabi-version=n': !

          • GCC 3.0: 100

          • GCC 3.1: 100 (Error, should be 101)

          • GCC 3.2: 102

          • GCC 3.3: 102

          • GCC 3.4, GCC 4.x: 102 (when n=1)

          • GCC 3.4, GCC 4.x: 1000 + n (when n>1)

          • GCC 3.4, GCC 4.x: 999999 (when n=0)

        • Changes to the default compiler option for -fabi-version.

          It is versioned as follows: !

          • GCC 3.0: (Error, not versioned)

          • GCC 3.1: (Error, not versioned)

          • GCC 3.2: -fabi-version=1

          • GCC 3.3: -fabi-version=1

          • GCC 3.4, GCC 4.x: -fabi-version=2 (Incompatible with previous)

        • Incremental bumping of a library pre-defined macro. For releases before 3.4.0, the macro is __GLIBCPP__. For later releases, it's __GLIBCXX__. (The libstdc++ project generously changed from CPP to CXX throughout its source to allow the "C" pre-processor the CPP *************** compatible. *** 159,165 **** the same value as gcc/DATESTAMP.)

          It is versioned as follows: !

          • GCC 3.0.0: 20010615

          • GCC 3.0.1: 20010819

          • GCC 3.0.2: 20011023

          • GCC 3.0.3: 20011220

          • GCC 3.0.4: 20020220

          • GCC 3.1.0: 20020514

          • GCC 3.1.1: 20020725

          • GCC 3.2.0: 20020814

          • GCC 3.2.1: 20021119

          • GCC 3.2.2: 20030205

          • GCC 3.2.3: 20030422

          • GCC 3.3.0: 20030513

          • GCC 3.3.1: 20030804

          • GCC 3.3.2: 20031016

          • GCC 3.3.3: 20040214

          • GCC 3.4.0: 20040419

          • GCC 3.4.1: 20040701

          • GCC 3.4.2: 20040906

          • GCC 3.4.3: 20041105

          • GCC 3.4.4: 20050519

          • GCC 3.4.5: 20051201

          • GCC 3.4.6: 20060306

          • GCC 4.0.0: 20050421

          • GCC 4.0.1: 20050707

          • GCC 4.0.2: 20050921

          • GCC 4.0.3: 20060309

          • GCC 4.1.0: 20060228

          • GCC 4.1.1: 20060524

          • GCC 4.1.2: 20070214

          • GCC 4.2.0: 20070514

          • GCC 4.2.1: 20070719

          • GCC 4.2.2: 20071007

          • GCC 4.2.3: 20080201

          • GCC 4.2.4: 20080519

          • GCC 4.3.0: 20080306

          • GCC 4.3.1: 20080606

          • GCC 4.3.2: 20080827

          • GCC 4.3.3: 20090124

          • GCC 4.3.4: 20090804

          • GCC 4.3.5: 20100522

          • GCC 4.3.6: 20110627

          • GCC 4.4.0: 20090421

          • GCC 4.4.1: 20090722

          • GCC 4.4.2: 20091015

          • GCC 4.4.3: 20100121

          • GCC 4.4.4: 20100429

          • GCC 4.4.5: 20101001

          • GCC 4.4.6: 20110416

          • GCC 4.5.0: 20100414

          • GCC 4.5.1: 20100731

          • GCC 4.5.2: 20101216

          • GCC 4.5.3: 20110428

          • GCC 4.6.0: 20110325

          • GCC 4.6.1: 20110627

          • GCC 4.6.2: 20111026

        • Incremental bumping of a library pre-defined macro, _GLIBCPP_VERSION. This macro is defined as the released version of the library, as a string literal. This is only implemented in --- 158,164 ---- the same value as gcc/DATESTAMP.)

          It is versioned as follows: !

          • GCC 3.0.0: 20010615

          • GCC 3.0.1: 20010819

          • GCC 3.0.2: 20011023

          • GCC 3.0.3: 20011220

          • GCC 3.0.4: 20020220

          • GCC 3.1.0: 20020514

          • GCC 3.1.1: 20020725

          • GCC 3.2.0: 20020814

          • GCC 3.2.1: 20021119

          • GCC 3.2.2: 20030205

          • GCC 3.2.3: 20030422

          • GCC 3.3.0: 20030513

          • GCC 3.3.1: 20030804

          • GCC 3.3.2: 20031016

          • GCC 3.3.3: 20040214

          • GCC 3.4.0: 20040419

          • GCC 3.4.1: 20040701

          • GCC 3.4.2: 20040906

          • GCC 3.4.3: 20041105

          • GCC 3.4.4: 20050519

          • GCC 3.4.5: 20051201

          • GCC 3.4.6: 20060306

          • GCC 4.0.0: 20050421

          • GCC 4.0.1: 20050707

          • GCC 4.0.2: 20050921

          • GCC 4.0.3: 20060309

          • GCC 4.1.0: 20060228

          • GCC 4.1.1: 20060524

          • GCC 4.1.2: 20070214

          • GCC 4.2.0: 20070514

          • GCC 4.2.1: 20070719

          • GCC 4.2.2: 20071007

          • GCC 4.2.3: 20080201

          • GCC 4.2.4: 20080519

          • GCC 4.3.0: 20080306

          • GCC 4.3.1: 20080606

          • GCC 4.3.2: 20080827

          • GCC 4.3.3: 20090124

          • GCC 4.3.4: 20090804

          • GCC 4.3.5: 20100522

          • GCC 4.3.6: 20110627

          • GCC 4.4.0: 20090421

          • GCC 4.4.1: 20090722

          • GCC 4.4.2: 20091015

          • GCC 4.4.3: 20100121

          • GCC 4.4.4: 20100429

          • GCC 4.4.5: 20101001

          • GCC 4.4.6: 20110416

          • GCC 4.4.7: 20120313

          • GCC 4.5.0: 20100414

          • GCC 4.5.1: 20100731

          • GCC 4.5.2: 20101216

          • GCC 4.5.3: 20110428

          • GCC 4.5.4: 20120702

          • GCC 4.6.0: 20110325

          • GCC 4.6.1: 20110627

          • GCC 4.6.2: 20111026

          • GCC 4.6.3: 20120301

          • GCC 4.7.0: 20120322

          • GCC 4.7.1: 20120614

          • GCC 4.7.2: 20120920

        • Incremental bumping of a library pre-defined macro, _GLIBCPP_VERSION. This macro is defined as the released version of the library, as a string literal. This is only implemented in *************** compatible. *** 172,178 **** of config.h.

          It is versioned as follows: !

          • GCC 3.0.0: "3.0.0"

          • GCC 3.0.1: "3.0.0" (Error, should be "3.0.1")

          • GCC 3.0.2: "3.0.0" (Error, should be "3.0.2")

          • GCC 3.0.3: "3.0.0" (Error, should be "3.0.3")

          • GCC 3.0.4: "3.0.0" (Error, should be "3.0.4")

          • GCC 3.1.0: "3.1.0"

          • GCC 3.1.1: "3.1.1"

          • GCC 3.2.0: "3.2"

          • GCC 3.2.1: "3.2.1"

          • GCC 3.2.2: "3.2.2"

          • GCC 3.2.3: "3.2.3"

          • GCC 3.3.0: "3.3"

          • GCC 3.3.1: "3.3.1"

          • GCC 3.3.2: "3.3.2"

          • GCC 3.3.3: "3.3.3"

          • GCC 3.4: "version-unused"

          • GCC 4.x: "version-unused"

        • Matching each specific C++ compiler release to a specific set of C++ include files. This is only implemented in GCC 3.1.1 releases and higher. --- 171,177 ---- of config.h.

          It is versioned as follows: !

          • GCC 3.0.0: "3.0.0"

          • GCC 3.0.1: "3.0.0" (Error, should be "3.0.1")

          • GCC 3.0.2: "3.0.0" (Error, should be "3.0.2")

          • GCC 3.0.3: "3.0.0" (Error, should be "3.0.3")

          • GCC 3.0.4: "3.0.0" (Error, should be "3.0.4")

          • GCC 3.1.0: "3.1.0"

          • GCC 3.1.1: "3.1.1"

          • GCC 3.2.0: "3.2"

          • GCC 3.2.1: "3.2.1"

          • GCC 3.2.2: "3.2.2"

          • GCC 3.2.3: "3.2.3"

          • GCC 3.3.0: "3.3"

          • GCC 3.3.1: "3.3.1"

          • GCC 3.3.2: "3.3.2"

          • GCC 3.3.3: "3.3.3"

          • GCC 3.4: "version-unused"

          • GCC 4.x: "version-unused"

        • Matching each specific C++ compiler release to a specific set of C++ include files. This is only implemented in GCC 3.1.1 releases and higher. *************** compatible. *** 185,197 **** file's macro GLIBCXX_CONFIGURE (GLIBCPP_CONFIGURE before GCC 3.4.0).

          C++ includes are versioned as follows: !

          • GCC 3.0.0: include/g++-v3

          • GCC 3.0.1: include/g++-v3

          • GCC 3.0.2: include/g++-v3

          • GCC 3.0.3: include/g++-v3

          • GCC 3.0.4: include/g++-v3

          • GCC 3.1.0: include/g++-v3

          • GCC 3.1.1: include/c++/3.1.1

          • GCC 3.2.0: include/c++/3.2

          • GCC 3.2.1: include/c++/3.2.1

          • GCC 3.2.2: include/c++/3.2.2

          • GCC 3.2.3: include/c++/3.2.3

          • GCC 3.3.0: include/c++/3.3

          • GCC 3.3.1: include/c++/3.3.1

          • GCC 3.3.2: include/c++/3.3.2

          • GCC 3.3.3: include/c++/3.3.3

          • GCC 3.4.x: include/c++/3.4.x

          • GCC 4.x.y: include/c++/4.x.y

      Taken together, these techniques can accurately specify interface and implementation changes in the GNU C++ tools themselves. Used properly, they allow both the GNU C++ tools implementation, and programs using them, an evolving yet controlled development that maintains backward compatibility. !

    Prerequisites

    Minimum environment that supports a versioned ABI: A supported dynamic linker, a GNU linker of sufficient vintage to understand demangled C++ name globbing (ld) or the Sun linker, a shared --- 184,196 ---- file's macro GLIBCXX_CONFIGURE (GLIBCPP_CONFIGURE before GCC 3.4.0).

    C++ includes are versioned as follows: !

    • GCC 3.0.0: include/g++-v3

    • GCC 3.0.1: include/g++-v3

    • GCC 3.0.2: include/g++-v3

    • GCC 3.0.3: include/g++-v3

    • GCC 3.0.4: include/g++-v3

    • GCC 3.1.0: include/g++-v3

    • GCC 3.1.1: include/c++/3.1.1

    • GCC 3.2.0: include/c++/3.2

    • GCC 3.2.1: include/c++/3.2.1

    • GCC 3.2.2: include/c++/3.2.2

    • GCC 3.2.3: include/c++/3.2.3

    • GCC 3.3.0: include/c++/3.3

    • GCC 3.3.1: include/c++/3.3.1

    • GCC 3.3.2: include/c++/3.3.2

    • GCC 3.3.3: include/c++/3.3.3

    • GCC 3.4.x: include/c++/3.4.x

    • GCC 4.x.y: include/c++/4.x.y

Taken together, these techniques can accurately specify interface and implementation changes in the GNU C++ tools themselves. Used properly, they allow both the GNU C++ tools implementation, and programs using them, an evolving yet controlled development that maintains backward compatibility. !

Prerequisites

Minimum environment that supports a versioned ABI: A supported dynamic linker, a GNU linker of sufficient vintage to understand demangled C++ name globbing (ld) or the Sun linker, a shared *************** compatible. *** 206,212 **** Most modern GNU/Linux and BSD versions, particularly ones using GCC 3.1 and later, will meet the requirements above, as does Solaris 2.5 and up. !

Configuring

It turns out that most of the configure options that change default behavior will impact the mangled names of exported symbols, and thus impact versioning and compatibility. --- 205,211 ---- Most modern GNU/Linux and BSD versions, particularly ones using GCC 3.1 and later, will meet the requirements above, as does Solaris 2.5 and up. !

Configuring

It turns out that most of the configure options that change default behavior will impact the mangled names of exported symbols, and thus impact versioning and compatibility. *************** compatible. *** 224,230 **** attempts to make sure that all the requirement for symbol versioning are in place. For more information, please consult acinclude.m4. !

Checking Active

When the GNU C++ library is being built with symbol versioning on, you should see the following at configure time for libstdc++: --- 223,229 ---- attempts to make sure that all the requirement for symbol versioning are in place. For more information, please consult acinclude.m4. !

Checking Active

When the GNU C++ library is being built with symbol versioning on, you should see the following at configure time for libstdc++: *************** On Solaris 2, you can use ldd -v works too, but is very verbose. !

Allowed Changes

The following will cause the library minor version number to increase, say from "libstdc++.so.3.0.4" to "libstdc++.so.3.0.5".

  1. Adding an exported global or static data member

  2. Adding an exported function, static or non-virtual member function

  3. Adding an exported symbol or symbols by additional instantiations

Other allowed changes are possible. !

Prohibited Changes

The following non-exhaustive list will cause the library major version number to increase, say from "libstdc++.so.3.0.4" to "libstdc++.so.4.0.0". --- 271,282 ---- libc.so.1 (SUNWprivate_1.1, SYSVABI_1.3);

ldd -v works too, but is very verbose. !

Allowed Changes

The following will cause the library minor version number to increase, say from "libstdc++.so.3.0.4" to "libstdc++.so.3.0.5".

  1. Adding an exported global or static data member

  2. Adding an exported function, static or non-virtual member function

  3. Adding an exported symbol or symbols by additional instantiations

Other allowed changes are possible. !

Prohibited Changes

The following non-exhaustive list will cause the library major version number to increase, say from "libstdc++.so.3.0.4" to "libstdc++.so.4.0.0". *************** class in registers, the compiler will be *** 296,308 **** section on Function Calling Conventions and APIs of the C++ ABI documentation for further details. !

Implementation

  1. Separation of interface and implementation

    This is accomplished by two techniques that separate the API from the ABI: forcing undefined references to link against a library binary for definitions. !

    Include files have declarations, source files have defines

    For non-templatized types, such as much of class locale, the appropriate standard C++ include, say locale, can contain full declarations, while --- 295,307 ---- section on Function Calling Conventions and APIs of the C++ ABI documentation for further details. !

Implementation

  1. Separation of interface and implementation

    This is accomplished by two techniques that separate the API from the ABI: forcing undefined references to link against a library binary for definitions. !

    Include files have declarations, source files have defines

    For non-templatized types, such as much of class locale, the appropriate standard C++ include, say locale, can contain full declarations, while *************** Calling Conventions and APIs *** 336,342 **** performance by the underlying dynamic loading mechanism. In addition, they have the possibility of changing without impacting ABI compatibility. !

    The following namespaces are transformed by the mapfile:

    namespace std

    Defaults to exporting all symbols in label GLIBCXX that do not begin with an underscore, i.e., __test_func would not be exported by default. Select exceptional symbols are allowed to be visible.

    namespace __gnu_cxx

    Defaults to not exporting any symbols in label --- 335,341 ---- performance by the underlying dynamic loading mechanism. In addition, they have the possibility of changing without impacting ABI compatibility. !

    The following namespaces are transformed by the mapfile:

    namespace std

    Defaults to exporting all symbols in label GLIBCXX that do not begin with an underscore, i.e., __test_func would not be exported by default. Select exceptional symbols are allowed to be visible.

    namespace __gnu_cxx

    Defaults to not exporting any symbols in label *************** exceptional symbols are allowed to be vi *** 344,350 **** CXXABI, select items are allowed to be visible.

  2. Freezing the API

    Disallowed changes, as above, are not made on a stable release branch. Enforcement tends to be less strict with GNU extensions that ! standard includes.

Testing

Single ABI Testing

Testing for GNU C++ ABI changes is composed of two distinct areas: testing the C++ compiler (g++) for compiler changes, and testing the C++ library (libstdc++) for library changes. --- 343,349 ---- CXXABI, select items are allowed to be visible.

  • Freezing the API

    Disallowed changes, as above, are not made on a stable release branch. Enforcement tends to be less strict with GNU extensions that ! standard includes.

  • Testing

    Single ABI Testing

    Testing for GNU C++ ABI changes is composed of two distinct areas: testing the C++ compiler (g++) for compiler changes, and testing the C++ library (libstdc++) for library changes. *************** and other detailed data is not displayed *** 410,416 ****

    Perhaps there are other C++ ABI checkers. If so, please notify us. We'd like to know about them! !

    Multiple ABI Testing

    A "C" application, dynamically linked to two shared libraries, liba, libb. The dependent library liba is a C++ shared library compiled with GCC 3.3, and uses io, exceptions, locale, etc. The dependent library --- 409,415 ----

    Perhaps there are other C++ ABI checkers. If so, please notify us. We'd like to know about them! !

    Multiple ABI Testing

    A "C" application, dynamically linked to two shared libraries, liba, libb. The dependent library liba is a C++ shared library compiled with GCC 3.3, and uses io, exceptions, locale, etc. The dependent library *************** gcc test.c -g -O2 -L. -lone -ltwo /usr/l *** 473,479 **** This resulting binary, when executed, will be able to safely use code from both liba, and the dependent libstdc++.so.6, and libb, with the dependent libstdc++.so.5. !

    Outstanding Issues

    Some features in the C++ language make versioning especially difficult. In particular, compiler generated constructs such as implicit instantiations for templates, typeinfo information, and --- 472,478 ---- This resulting binary, when executed, will be able to safely use code from both liba, and the dependent libstdc++.so.6, and libb, with the dependent libstdc++.so.5. !

    Outstanding Issues

    Some features in the C++ language make versioning especially difficult. In particular, compiler generated constructs such as implicit instantiations for templates, typeinfo information, and *************** gcc test.c -g -O2 -L. -lone -ltwo /usr/l *** 486,536 **** 24660: versioning weak symbols in libstdc++

    19664: libstdc++ headers should have pop/push of the visibility around the declarations !

    --- 485,535 ---- 24660: versioning weak symbols in libstdc++

    19664: libstdc++ headers should have pop/push of the visibility around the declarations !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/algorithms.html gcc-4.7.4/libstdc++-v3/doc/html/manual/algorithms.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/algorithms.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/algorithms.html Tue Nov 5 21:26:53 2013 *************** *** 1,14 **** ! ! Chapter 11.  Algorithms

    Chapter 11.  Algorithms ! !

    The neatest accomplishment of the algorithms section is that all the work is done via iterators, not containers directly. This means two important things: --- 1,13 ---- ! Chapter 11.  Algorithms

    Chapter 11.  Algorithms ! !

    The neatest accomplishment of the algorithms section is that all the work is done via iterators, not containers directly. This means two important things: *************** *** 42,48 **** to cause so much confusion. Once you get range into your head (it's not that hard, honest!), then the algorithms are a cakewalk. !

    Mutating

    swap

    Specializations

    If you call std::swap(x,y); where x and y are standard containers, then the call will automatically be replaced by a call to x.swap(y); instead.

    This allows member functions of each container class to take over, and --- 41,47 ---- to cause so much confusion. Once you get range into your head (it's not that hard, honest!), then the algorithms are a cakewalk. !

    Mutating

    swap

    Specializations

    If you call std::swap(x,y); where x and y are standard containers, then the call will automatically be replaced by a call to x.swap(y); instead.

    This allows member functions of each container class to take over, and *************** *** 58,61 ****  Home Chapter 12.  Numerics !

    --- 57,60 ----  Home Chapter 12.  Numerics !
    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/api.html gcc-4.7.4/libstdc++-v3/doc/html/manual/api.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/api.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/api.html Tue Nov 5 21:26:53 2013 *************** *** 1,11 **** ! ! API Evolution and Deprecation History

    API Evolution and Deprecation History

    A list of user-visible changes, in chronological order !

    3.0

    Extensions moved to include/ext.

    Include files from the SGI/HP sources that pre-date the ISO standard --- 1,10 ---- ! API Evolution and Deprecation History

    API Evolution and Deprecation History

    A list of user-visible changes, in chronological order !

    3.0

    Extensions moved to include/ext.

    Include files from the SGI/HP sources that pre-date the ISO standard *************** the include/backw *** 14,20 **** is added that notifies on inclusion (-Wno-deprecated deactivates the warning.)

    Deprecated include backward/strstream added.

    Removal of include builtinbuf.h, indstream.h, parsestream.h, PlotFile.h, SFile.h, stdiostream.h, and stream.h. !

    3.1

    Extensions from SGI/HP moved from namespace std to namespace __gnu_cxx. As part of this, the following --- 13,19 ---- is added that notifies on inclusion (-Wno-deprecated deactivates the warning.)

    Deprecated include backward/strstream added.

    Removal of include builtinbuf.h, indstream.h, parsestream.h, PlotFile.h, SFile.h, stdiostream.h, and stream.h. !

    3.1

    Extensions from SGI/HP moved from namespace std to namespace __gnu_cxx. As part of this, the following *************** Extensions to basic_f *** 26,40 **** Extensions to tree data structures added in ext/rb_tree.

    Removal of ext/tree, moved to backward/tree.h. !

    3.2

    Symbol versioning introduced for shared library.

    Removal of include backward/strstream.h.

    Allocator changes. Change __malloc_alloc to malloc_allocator and __new_alloc to new_allocator.

    For GCC releases from 2.95 through the 3.1 series, defining __USE_MALLOC on the gcc command line would change the default allocation strategy to instead use malloc and free. (This same functionality is now spelled _GLIBCXX_FORCE_NEW, see this page for details. !

    Error handling in iostreams cleaned up, made consistent.

    3.3

    !

    3.4

    Large file support.

    Extensions for generic characters and char_traits added in ext/pod_char_traits.h. --- 25,39 ---- Extensions to tree data structures added in ext/rb_tree.

    Removal of ext/tree, moved to backward/tree.h. !

    3.2

    Symbol versioning introduced for shared library.

    Removal of include backward/strstream.h.

    Allocator changes. Change __malloc_alloc to malloc_allocator and __new_alloc to new_allocator.

    For GCC releases from 2.95 through the 3.1 series, defining __USE_MALLOC on the gcc command line would change the default allocation strategy to instead use malloc and free. (This same functionality is now spelled _GLIBCXX_FORCE_NEW, see this page for details. !

    Error handling in iostreams cleaned up, made consistent.

    3.3

    !

    3.4

    Large file support.

    Extensions for generic characters and char_traits added in ext/pod_char_traits.h. *************** _Alloc_traits have been removed. *** 75,85 **** __alloc to select an underlying allocator that satisfied memory allocation requests. The selection of this underlying allocator was not user-configurable. !

    Table B.6. Extension Allocators

    Allocator (3.4)Header (3.4)Allocator (3.[0-3])Header (3.[0-3])
    __gnu_cxx::new_allocator<T>ext/new_allocator.hstd::__new_allocmemory
    __gnu_cxx::malloc_allocator<T>ext/malloc_allocator.hstd::__malloc_alloc_template<int>memory
    __gnu_cxx::debug_allocator<T>ext/debug_allocator.hstd::debug_alloc<T>memory
    __gnu_cxx::__pool_alloc<T>ext/pool_allocator.hstd::__default_alloc_template<bool,int>memory
    __gnu_cxx::__mt_alloc<T>ext/mt_allocator.h
    __gnu_cxx::bitmap_allocator<T>ext/bitmap_allocator.h

    Releases after gcc-3.4 have continued to add to the collection of available allocators. All of these new allocators are standard-style. The following table includes details, along with the first released version of GCC that included the extension allocator. !

    Table B.7. Extension Allocators Continued

    AllocatorIncludeVersion
    __gnu_cxx::array_allocator<T>ext/array_allocator.h4.0.0
    __gnu_cxx::throw_allocator<T>ext/throw_allocator.h4.2.0

    Debug mode first appears.

    Precompiled header support PCH support. --- 74,84 ---- __alloc to select an underlying allocator that satisfied memory allocation requests. The selection of this underlying allocator was not user-configurable. !

    Table B.6. Extension Allocators

    Allocator (3.4)Header (3.4)Allocator (3.[0-3])Header (3.[0-3])
    __gnu_cxx::new_allocator<T>ext/new_allocator.hstd::__new_allocmemory
    __gnu_cxx::malloc_allocator<T>ext/malloc_allocator.hstd::__malloc_alloc_template<int>memory
    __gnu_cxx::debug_allocator<T>ext/debug_allocator.hstd::debug_alloc<T>memory
    __gnu_cxx::__pool_alloc<T>ext/pool_allocator.hstd::__default_alloc_template<bool,int>memory
    __gnu_cxx::__mt_alloc<T>ext/mt_allocator.h
    __gnu_cxx::bitmap_allocator<T>ext/bitmap_allocator.h

    Releases after gcc-3.4 have continued to add to the collection of available allocators. All of these new allocators are standard-style. The following table includes details, along with the first released version of GCC that included the extension allocator. !

    Table B.7. Extension Allocators Continued

    AllocatorIncludeVersion
    __gnu_cxx::array_allocator<T>ext/array_allocator.h4.0.0
    __gnu_cxx::throw_allocator<T>ext/throw_allocator.h4.2.0

    Debug mode first appears.

    Precompiled header support PCH support. *************** Macro guard for changed, from ext/stdio_sync_filebuf.h added.

    Extension ext/demangle.h added. !

    4.0

    TR1 features first appear.

    --- 88,94 ---- Extension ext/stdio_sync_filebuf.h added.

    Extension ext/demangle.h added. !

    4.0

    TR1 features first appear.

    *************** Extension allocator codecvt specializations moved to ext/codecvt_specializations.h.

    Removal of ext/demangle.h. !

    4.1

    Removal of cassert from all standard headers: now has to be explicitly included for std::assert calls.

    Extensions for policy-based data structures first added. New includes, types, namespace pb_assoc.

    Extensions for typelists added in ext/typelist.h.

    Extension for policy-based basic_string first added: __gnu_cxx::__versa_string in ext/vstring.h. !

    4.2

    Default visibility attributes applied to namespace std. Support for -fvisibility.

    TR1 random, complex, and C compatibility headers added.

    Extensions for concurrent programming consolidated into ext/concurrence.h and ext/atomicity.h, --- 97,110 ---- Extension codecvt specializations moved to ext/codecvt_specializations.h.

    Removal of ext/demangle.h. !

    4.1

    Removal of cassert from all standard headers: now has to be explicitly included for std::assert calls.

    Extensions for policy-based data structures first added. New includes, types, namespace pb_assoc.

    Extensions for typelists added in ext/typelist.h.

    Extension for policy-based basic_string first added: __gnu_cxx::__versa_string in ext/vstring.h. !

    4.2

    Default visibility attributes applied to namespace std. Support for -fvisibility.

    TR1 random, complex, and C compatibility headers added.

    Extensions for concurrent programming consolidated into ext/concurrence.h and ext/atomicity.h, *************** types, namespace moved to namespace __gnu_cxx::__debug.

    Extensions added: ext/typelist.h and ext/throw_allocator.h. !

    4.3

    C++0X features first appear.

    TR1 regex and cmath's mathematical special function added.

    Backward include edit. !

    • Removed

      algobase.h algo.h alloc.h bvector.h complex.h defalloc.h deque.h fstream.h function.h hash_map.h hash_set.h hashtable.h heap.h iomanip.h iostream.h istream.h iterator.h --- 119,131 ---- std::__debug and extensions in namespace __gnu_cxx::__debug.

      Extensions added: ext/typelist.h and ext/throw_allocator.h. !

    4.3

    C++0X features first appear.

    TR1 regex and cmath's mathematical special function added.

    Backward include edit. !

    • Removed

      algobase.h algo.h alloc.h bvector.h complex.h defalloc.h deque.h fstream.h function.h hash_map.h hash_set.h hashtable.h heap.h iomanip.h iostream.h istream.h iterator.h *************** Backward include edit. *** 138,144 **** auto_ptr.h and binders.h

    Header dependency streamlining. !

    • algorithm no longer includes climits, cstring, or iosfwd

    • bitset no longer includes istream or ostream, adds iosfwd

    • functional no longer includes cstddef

    • iomanip no longer includes istream, istream, or functional, adds ioswd

    • numeric no longer includes iterator

    • string no longer includes algorithm or memory

    • valarray no longer includes numeric or cstdlib

    • tr1/hashtable no longer includes memory or functional

    • tr1/memory no longer includes algorithm

    • tr1/random no longer includes algorithm or fstream

    Debug mode for unordered_map and unordered_set.

    Parallel mode first appears. --- 137,143 ---- auto_ptr.h and binders.h

    Header dependency streamlining. !

    • algorithm no longer includes climits, cstring, or iosfwd

    • bitset no longer includes istream or ostream, adds iosfwd

    • functional no longer includes cstddef

    • iomanip no longer includes istream, istream, or functional, adds ioswd

    • numeric no longer includes iterator

    • string no longer includes algorithm or memory

    • valarray no longer includes numeric or cstdlib

    • tr1/hashtable no longer includes memory or functional

    • tr1/memory no longer includes algorithm

    • tr1/random no longer includes algorithm or fstream

    Debug mode for unordered_map and unordered_set.

    Parallel mode first appears. *************** Parallel mode first appears. *** 152,161 **** PCH binary files no longer installed. Instead, the source files are installed.

    Namespace pb_ds moved to __gnu_pb_ds. !

    4.4

    C++0X features. !

    • Added.

      atomic, --- 151,160 ---- PCH binary files no longer installed. Instead, the source files are installed.

      Namespace pb_ds moved to __gnu_pb_ds. !

    4.4

    C++0X features. !

    • Added.

      atomic, *************** and ext/extptr_al *** 207,216 **** for non-standard pointer types has been added to vector and forward_list. !

    4.5

    C++0X features. !

    • Added.

      functional, --- 206,215 ---- for non-standard pointer types has been added to vector and forward_list. !

    4.5

    C++0X features. !

    • Added.

      functional, *************** The default behavior for comparing typei *** 237,240 **** in typeinfo, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.

      Extensions modified: ext/throw_allocator.h. !

    --- 236,239 ---- in typeinfo, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.

    Extensions modified: ext/throw_allocator.h. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/appendix_contributing.html gcc-4.7.4/libstdc++-v3/doc/html/manual/appendix_contributing.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/appendix_contributing.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/appendix_contributing.html Tue Nov 5 21:26:53 2013 *************** *** 1,19 **** ! ! Appendix A.  Contributing

    Contributing ! !

    The GNU C++ Library follows an open development model. Active contributors are assigned maintainer-ship responsibility, and given write access to the source repository. First time contributors should follow this procedure: !

    Contributor Checklist

    Reading

    • Get and read the relevant sections of the C++ language specification. Copies of the full ISO 14882 standard are available on line via the ISO mirror site for committee --- 1,18 ---- ! Appendix A.  Contributing

      Contributing ! !

      The GNU C++ Library follows an open development model. Active contributors are assigned maintainer-ship responsibility, and given write access to the source repository. First time contributors should follow this procedure: !

      Contributor Checklist

      Reading

      • Get and read the relevant sections of the C++ language specification. Copies of the full ISO 14882 standard are available on line via the ISO mirror site for committee *************** *** 37,43 **** for this group is quite useful.

      • Peruse ! the GNU Coding Standards, and chuckle when you hit the part about Using Languages Other Than C.

      • --- 36,42 ---- for this group is quite useful.

      • Peruse ! the GNU Coding Standards, and chuckle when you hit the part about Using Languages Other Than C.

      • *************** *** 48,54 **** And last but certainly not least, read the library-specific information found in Porting and Maintenance. !

      Assignment

      Small changes can be accepted without a copyright assignment form on file. New code and additions to the library need completed copyright assignment form on file at the FSF. Note: your employer may be required --- 47,53 ---- And last but certainly not least, read the library-specific information found in Porting and Maintenance. !

    Assignment

    Small changes can be accepted without a copyright assignment form on file. New code and additions to the library need completed copyright assignment form on file at the FSF. Note: your employer may be required *************** *** 75,88 **** requesting an assignment form from , please cc the libstdc++ maintainer above so that progress can be monitored. !

    Submitting Patches

    Every patch must have several pieces of information before it can be properly evaluated. Ideally (and to ensure the fastest possible response from the maintainers) it would have all of these pieces: !

    • A description of the bug and how your patch fixes this bug. For new features a description of the feature and your implementation. --- 74,87 ---- requesting an assignment form from , please cc the libstdc++ maintainer above so that progress can be monitored. !

    Submitting Patches

    Every patch must have several pieces of information before it can be properly evaluated. Ideally (and to ensure the fastest possible response from the maintainers) it would have all of these pieces: !

    • A description of the bug and how your patch fixes this bug. For new features a description of the feature and your implementation. *************** *** 113,116 **** libstdc++ mailing list.

    --- 112,115 ---- libstdc++ mailing list.

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/appendix_free.html gcc-4.7.4/libstdc++-v3/doc/html/manual/appendix_free.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/appendix_free.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/appendix_free.html Tue Nov 5 21:26:53 2013 *************** *** 1,13 **** ! ! Appendix C.  Free Software Needs Free Documentation

    Free Software Needs Free Documentation !

    The biggest deficiency in free operating systems is not in the software--it is the lack of good free manuals that we can include in --- 1,12 ---- ! Appendix C.  Free Software Needs Free Documentation

    Free Software Needs Free Documentation !

    The biggest deficiency in free operating systems is not in the software--it is the lack of good free manuals that we can include in *************** that lists free books available from oth *** 123,126 **** permitted worldwide, without royalty, in any medium, provided this notice is preserved.

    Report any problems or suggestions to .

    --- 122,125 ---- permitted worldwide, without royalty, in any medium, provided this notice is preserved.

    Report any problems or suggestions to .

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/appendix_gfdl.html gcc-4.7.4/libstdc++-v3/doc/html/manual/appendix_gfdl.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/appendix_gfdl.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/appendix_gfdl.html Tue Nov 5 21:26:53 2013 *************** *** 1,8 **** ! ! Appendix E. GNU Free Documentation License

    GNU Free Documentation License

    Version 1.3, 3 November 2008

    Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.

    --- 1,7 ---- ! Appendix E. GNU Free Documentation License

    GNU Free Documentation License

    Version 1.3, 3 November 2008

    Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.

    *************** being LIST, and with the Back-Cover Text *** 446,449 **** use in free software.

    --- 445,448 ---- use in free software.

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/appendix_gpl.html gcc-4.7.4/libstdc++-v3/doc/html/manual/appendix_gpl.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/appendix_gpl.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/appendix_gpl.html Tue Nov 5 21:26:53 2013 *************** *** 1,10 **** ! ! Appendix D.  GNU General Public License version 3

    GNU General Public License version 3

    Version 3, 29 June 2007 --- 1,9 ---- ! Appendix D.  GNU General Public License version 3

    GNU General Public License version 3

    Version 3, 29 June 2007 *************** *** 78,84 ****

    The precise terms and conditions for copying, distribution and modification follow. !

    TERMS AND CONDITIONS

    0. Definitions. --- 77,83 ----

    The precise terms and conditions for copying, distribution and modification follow. !

    TERMS AND CONDITIONS

    0. Definitions. *************** *** 619,625 **** waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. !

    END OF TERMS AND CONDITIONS

    How to Apply These Terms to Your New Programs --- 618,624 ---- waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. !

    END OF TERMS AND CONDITIONS

    How to Apply These Terms to Your New Programs *************** under certain conditions; type ‘

    --- 679,682 ----

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/appendix_porting.html gcc-4.7.4/libstdc++-v3/doc/html/manual/appendix_porting.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/appendix_porting.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/appendix_porting.html Tue Nov 5 21:26:53 2013 *************** *** 1,14 **** ! ! Appendix B.  Porting and Maintenance

    Porting and Maintenance ! !

    Table of Contents

    Configure and Build Hacking
    Prerequisites
    Overview
    General Process
    What Comes from Where
    Configure
    Storing Information in non-AC files (like configure.host)
    Coding and Commenting Conventions
    The acinclude.m4 layout
    GLIBCXX_ENABLE, the --enable maker
    Make
    Writing and Generating Documentation
    Introduction
    Generating Documentation
    Doxygen
    Prerequisites
    Generating the Doxygen Files
    Debugging Generation
    Markup
    Docbook
    Prerequisites
    Generating the DocBook Files
    Debugging Generation
    Editing and Validation
    File Organization and Basics
    Markup By Example
    Porting to New Hardware or Operating Systems
    Operating System
    CPU
    Character Types
    Thread Safety
    Numeric Limits
    Libtool
    Test
    Organization
    Directory Layout
    Naming Conventions
    Running the Testsuite
    Basic
    Variations
    Permutations
    Writing a new test case
    Test Harness and Utilities
    Dejagnu Harness Details
    Utilities
    Special Topics
    Qualifying Exception Safety Guarantees
    Overview
    --- 1,13 ---- ! Appendix B.  Porting and Maintenance
    Container::iterator_type is not necessarily Container::value_type* !

    Configure and Build Hacking

    Prerequisites

    As noted previously, certain other tools are necessary for hacking on files that control configure (configure.ac, *************** Support for C++11 dialect. *** 41,47 **** in GCC try to stay in sync with each other in terms of versions of the auto-tools used, so please try to play nicely with the neighbors. !

    Overview

    General Process

    The configure process begins the act of building libstdc++, and is started via:

    --- 40,46 ----
          in GCC try to stay in sync with each other in terms of versions of
          the auto-tools used, so please try to play nicely with the
          neighbors.
    !   

    Overview

    General Process

    The configure process begins the act of building libstdc++, and is started via:

    *************** make all
    *** 62,72 ****
      in the build directory starts the build process. The all target comes from the Makefile file, which is  generated via configure from the Makefile.in file, which is in turn generated (via
      automake) from the file
      Makefile.am.
    ! 

    What Comes from Where

    Figure B.1. Configure and Build File Dependencies

    Dependency Graph for Configure and Build Files

    Regenerate all generated files by using the command autoreconf at the top level of the libstdc++ source directory. !

    Configure

    Storing Information in non-AC files (like configure.host)

    Until that glorious day when we can use AC_TRY_LINK with a cross-compiler, we have to hardcode the results of what the tests would have shown if they could be run. So we have an inflexible --- 61,71 ---- in the build directory starts the build process. The all target comes from the Makefile file, which is generated via configure from the Makefile.in file, which is in turn generated (via automake) from the file Makefile.am. !

    What Comes from Where

    Figure B.1. Configure and Build File Dependencies

    Dependency Graph for Configure and Build Files

    Regenerate all generated files by using the command autoreconf at the top level of the libstdc++ source directory. !

    Configure

    Storing Information in non-AC files (like configure.host)

    Until that glorious day when we can use AC_TRY_LINK with a cross-compiler, we have to hardcode the results of what the tests would have shown if they could be run. So we have an inflexible *************** in the build directory starts the build *** 88,94 **** for instance, but then we would need arguments to aclocal/autoconf to properly find them all when generating configure. I would discourage that. !

    Coding and Commenting Conventions

    Most comments should use {octothorpes, shibboleths, hash marks, pound signs, whatever} rather than "dnl". Nearly all comments in configure.ac should. Comments inside macros written in ancilliary --- 87,93 ---- for instance, but then we would need arguments to aclocal/autoconf to properly find them all when generating configure. I would discourage that. !

    Coding and Commenting Conventions

    Most comments should use {octothorpes, shibboleths, hash marks, pound signs, whatever} rather than "dnl". Nearly all comments in configure.ac should. Comments inside macros written in ancilliary *************** in the build directory starts the build *** 105,111 **** Do not use any $target* variables, such as $target_alias. The single exception is in configure.ac, for automake+dejagnu's sake. !

    The acinclude.m4 layout

    The nice thing about acinclude.m4/aclocal.m4 is that macros aren't actually performed/called/expanded/whatever here, just loaded. So we can arrange the contents however we like. As of this writing, --- 104,110 ---- Do not use any $target* variables, such as $target_alias. The single exception is in configure.ac, for automake+dejagnu's sake. !

    The acinclude.m4 layout

    The nice thing about acinclude.m4/aclocal.m4 is that macros aren't actually performed/called/expanded/whatever here, just loaded. So we can arrange the contents however we like. As of this writing, *************** in the build directory starts the build *** 176,182 ****

    Things which we don't seem to use directly, but just has to be present otherwise stuff magically goes wonky. !

    GLIBCXX_ENABLE, the --enable maker

    All the GLIBCXX_ENABLE_FOO macros use a common helper, GLIBCXX_ENABLE. (You don't have to use it, but it's easy.) The helper does two things for us: --- 175,181 ----

    Things which we don't seem to use directly, but just has to be present otherwise stuff magically goes wonky. !

    GLIBCXX_ENABLE, the --enable maker

    All the GLIBCXX_ENABLE_FOO macros use a common helper, GLIBCXX_ENABLE. (You don't have to use it, but it's easy.) The helper does two things for us: *************** in the build directory starts the build *** 205,211 **** GLIBCXX_ENABLE (FEATURE, DEFAULT, HELP-ARG, HELP-STRING) GLIBCXX_ENABLE (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, permit a|b|c) GLIBCXX_ENABLE (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, SHELL-CODE-HANDLER) !

    • FEATURE is the string that follows --enable. The results of the test (such as it is) will be in the variable $enable_FEATURE, where FEATURE has been squashed. Example: --- 204,210 ---- GLIBCXX_ENABLE (FEATURE, DEFAULT, HELP-ARG, HELP-STRING) GLIBCXX_ENABLE (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, permit a|b|c) GLIBCXX_ENABLE (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, SHELL-CODE-HANDLER) !

      • FEATURE is the string that follows --enable. The results of the test (such as it is) will be in the variable $enable_FEATURE, where FEATURE has been squashed. Example: *************** in the build directory starts the build *** 264,270 **** argument checking at all is done in this signature. See GLIBCXX_ENABLE_CXX_FLAGS for an example of handling, and an error message. !

    Make

    The build process has to make all of object files needed for static or shared libraries, but first it has to generate some include files. The general order is as follows: --- 263,269 ---- argument checking at all is done in this signature. See GLIBCXX_ENABLE_CXX_FLAGS for an example of handling, and an error message. !

    Make

    The build process has to make all of object files needed for static or shared libraries, but first it has to generate some include files. The general order is as follows: *************** in the build directory starts the build *** 307,310 **** any required compatibility objects, and creates the final shared and static libraries: libstdc++.so and libstdc++.a. !

    --- 306,309 ---- any required compatibility objects, and creates the final shared and static libraries: libstdc++.so and libstdc++.a. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/associative.html gcc-4.7.4/libstdc++-v3/doc/html/manual/associative.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/associative.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/associative.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Associative

    Associative

    Insertion Hints

    Section [23.1.2], Table 69, of the C++ standard lists this function for all of the associative containers (map, set, etc):

    --- 1,8 ----
      
    ! Associative

    Associative

    Insertion Hints

    Section [23.1.2], Table 69, of the C++ standard lists this function for all of the associative containers (map, set, etc):

    ***************
    *** 39,45 ****
           paragraph.  *grin*
         

    If the hint parameter ('p' above) is equivalent to: !

    • begin(), then the item being inserted should have a key less than all the other keys in the container. The item will be inserted at the beginning of the container, --- 38,44 ---- paragraph. *grin*

      If the hint parameter ('p' above) is equivalent to: !

      • begin(), then the item being inserted should have a key less than all the other keys in the container. The item will be inserted at the beginning of the container, *************** *** 84,90 **** the new item would in fact belong there. If the hint does not point to the correct place, then no further local searching is done; the search begins from scratch in logarithmic time. !

      bitset

      Size Variable

      No, you cannot write code of the form

              #include <bitset>
      --- 83,89 ----
             the new item would in fact belong there.  If the hint does not
             point to the correct place, then no further local searching is
             done; the search begins from scratch in logarithmic time.
      !    

      bitset

      Size Variable

      No, you cannot write code of the form

              #include <bitset>
      ***************
      *** 102,108 ****
             There are a couple of ways to handle this kind of thing.  Please
             consider all of them before passing judgement.  They include, in
             no chaptericular order:
      !    

      • A very large N in bitset<N>.

      • A container<bool>.

      • Extremely weird solutions.

      A very large N in bitset<N>.   It has been pointed out a few times in newsgroups that N bits only takes up --- 101,107 ---- There are a couple of ways to handle this kind of thing. Please consider all of them before passing judgement. They include, in no chaptericular order: !

      • A very large N in bitset<N>.

      • A container<bool>.

      • Extremely weird solutions.

      A very large N in bitset<N>.   It has been pointed out a few times in newsgroups that N bits only takes up *************** *** 169,175 ****

      Also note that the implementation of bitset used in libstdc++ has some extensions. !

      Type String

      Bitmasks do not take char* nor const char* arguments in their constructors. This is something of an accident, but you can read --- 168,174 ----

      Also note that the implementation of bitset used in libstdc++ has some extensions. !

      Type String

      Bitmasks do not take char* nor const char* arguments in their constructors. This is something of an accident, but you can read *************** *** 189,192 ****

    --- 188,191 ----
    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/atomics.html gcc-4.7.4/libstdc++-v3/doc/html/manual/atomics.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/atomics.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/atomics.html Tue Nov 5 21:26:53 2013 *************** *** 1,16 **** ! ! Chapter 14.  Atomics

    Chapter 14.  Atomics ! !

    Table of Contents

    API Reference

    Facilities for atomic operations. !

    API Reference

    All items are declared in the standard header file atomic.

    --- 1,15 ---- ! Chapter 14.  Atomics

    Chapter 14.  Atomics ! !

    Table of Contents

    API Reference

    Facilities for atomic operations. !

    API Reference

    All items are declared in the standard header file atomic.

    *************** *** 28,31 ****

    --- 27,30 ----

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/backwards.html gcc-4.7.4/libstdc++-v3/doc/html/manual/backwards.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/backwards.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/backwards.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Backwards Compatibility

    Backwards Compatibility

    First

    The first generation GNU C++ library was called libg++. It was a separate GNU project, although reliably paired with GCC. Rumors imply that it had a working relationship with at least two kinds of dinosaur. --- 1,8 ---- ! Backwards Compatibility

    Backwards Compatibility

    First

    The first generation GNU C++ library was called libg++. It was a separate GNU project, although reliably paired with GCC. Rumors imply that it had a working relationship with at least two kinds of dinosaur. *************** ISO Standard (e.g., statistical analysis *** 17,24 **** really useful things that are used by a lot of people, the Standards Committee couldn't include everything, and so a lot of those obvious classes didn't get included. !

    Known Issues include many of the limitations of its immediate ancestor.

    Portability notes and known implementation limitations are as follows.

    No ios_base

    At least some older implementations don't have std::ios_base, so you should use std::ios::badbit, std::ios::failbit and std::ios::eofbit and std::ios::goodbit. !

    No cout in <ostream.h>, no cin in <istream.h>

    In earlier versions of the standard, <fstream.h>, <ostream.h> --- 16,23 ---- really useful things that are used by a lot of people, the Standards Committee couldn't include everything, and so a lot of those obvious classes didn't get included. !

    Known Issues include many of the limitations of its immediate ancestor.

    Portability notes and known implementation limitations are as follows.

    No ios_base

    At least some older implementations don't have std::ios_base, so you should use std::ios::badbit, std::ios::failbit and std::ios::eofbit and std::ios::goodbit. !

    No cout in <ostream.h>, no cin in <istream.h>

    In earlier versions of the standard, <fstream.h>, <ostream.h> *************** archived. For the desperate, *** 32,38 **** the GCC extensions page describes where to find the last libg++ source. The code is considered replaced and rewritten. !

    Second

    The second generation GNU C++ library was called libstdc++, or libstdc++-v2. It spans the time between libg++ and pre-ISO C++ standardization and is usually associated with the following GCC --- 31,37 ---- the GCC extensions page describes where to find the last libg++ source. The code is considered replaced and rewritten. !

    Second

    The second generation GNU C++ library was called libstdc++, or libstdc++-v2. It spans the time between libg++ and pre-ISO C++ standardization and is usually associated with the following GCC *************** considered replaced and rewritten. *** 44,50 **** archived. The code is considered replaced and rewritten.

    Portability notes and known implementation limitations are as follows. !

    Namespace std:: not supported

    Some care is required to support C++ compiler and or library implementation that do not have the standard library in namespace std. --- 43,49 ---- archived. The code is considered replaced and rewritten.

    Portability notes and known implementation limitations are as follows. !

    Namespace std:: not supported

    Some care is required to support C++ compiler and or library implementation that do not have the standard library in namespace std. *************** AC_DEFUN([AC_CXX_NAMESPACE_STD], [ *** 108,117 **** AC_DEFINE(HAVE_NAMESPACE_STD,,[Define if g++ supports namespace std. ]) fi ]) !

    Illegal iterator usage

    The following illustrate implementation-allowed illegal iterator use, and then correct use. !

    • you cannot do ostream::operator<<(iterator) to print the address of the iterator => use operator<< &*iterator instead --- 107,116 ---- AC_DEFINE(HAVE_NAMESPACE_STD,,[Define if g++ supports namespace std. ]) fi ]) !

    Illegal iterator usage

    The following illustrate implementation-allowed illegal iterator use, and then correct use. !

    • you cannot do ostream::operator<<(iterator) to print the address of the iterator => use operator<< &*iterator instead *************** AC_DEFUN([AC_CXX_NAMESPACE_STD], [ *** 121,127 ****

    • if (iterator) won't work any more => use if (iterator != iterator_type()) !

    isspace from <cctype> is a macro

    Glibc 2.0.x and 2.1.x define <ctype.h> functionality as macros (isspace, isalpha etc.). --- 120,126 ----

  • if (iterator) won't work any more => use if (iterator != iterator_type()) !

  • isspace from <cctype> is a macro

    Glibc 2.0.x and 2.1.x define <ctype.h> functionality as macros (isspace, isalpha etc.). *************** std:: (__ctype_b[(int) ( ( 'X' ) )] & *** 155,161 **** (<ctype.h>) and the definitions in namespace std:: (<cctype>). !

    No vector::at, deque::at, string::at

    One solution is to add an autoconf-test for this:

      AC_MSG_CHECKING(for container::at)
    --- 154,160 ----
        (<ctype.h>) and the
        definitions in namespace std::
        (<cctype>).
    ! 

    No vector::at, deque::at, string::at

    One solution is to add an autoconf-test for this:

      AC_MSG_CHECKING(for container::at)
    *************** AC_DEFINE(HAVE_CONTAINER_AT)],
    *** 181,187 ****
      

    If you are using other (non-GNU) compilers it might be a good idea to check for string::at separately. !

    No std::char_traits<char>::eof

    Use some kind of autoconf test, plus this:

      #ifdef HAVE_CHAR_TRAITS
    --- 180,186 ----
      

    If you are using other (non-GNU) compilers it might be a good idea to check for string::at separately. !

    No std::char_traits<char>::eof

    Use some kind of autoconf test, plus this:

      #ifdef HAVE_CHAR_TRAITS
    *************** AC_DEFINE(HAVE_CONTAINER_AT)],
    *** 189,195 ****
      #else
      #define CPP_EOF EOF
      #endif
    ! 

    No string::clear

    There are two functions for deleting the contents of a string: clear and erase (the latter returns the string). --- 188,194 ---- #else #define CPP_EOF EOF #endif !

    No string::clear

    There are two functions for deleting the contents of a string: clear and erase (the latter returns the string). *************** erase(size_type __pos = 0, size_type __n *** 207,224 **** Unfortunately, clear is not implemented in this version, so you should use erase (which is probably faster than operator=(charT*)). !

    Removal of ostream::form and istream::scan extensions

    These are no longer supported. Please use stringstreams instead. !

    No basic_stringbuf, basic_stringstream

    Although the ISO standard i/ostringstream-classes are provided, (<sstream>), for compatibility with older implementations the pre-ISO i/ostrstream (<strstream>) interface is also provided, with these caveats: !

    • strstream is considered to be deprecated

    • strstream is limited to char --- 206,223 ---- Unfortunately, clear is not implemented in this version, so you should use erase (which is probably faster than operator=(charT*)). !

    Removal of ostream::form and istream::scan extensions

    These are no longer supported. Please use stringstreams instead. !

    No basic_stringbuf, basic_stringstream

    Although the ISO standard i/ostringstream-classes are provided, (<sstream>), for compatibility with older implementations the pre-ISO i/ostrstream (<strstream>) interface is also provided, with these caveats: !

    • strstream is considered to be deprecated

    • strstream is limited to char *************** any = temp; *** 300,313 **** Another example of using stringstreams is in this howto.

      There is additional information in the libstdc++-v2 info files, in particular info iostream. !

    Little or no wide character support

    Classes wstring and char_traits<wchar_t> are not supported. !

    No templatized iostreams

    Classes wfilebuf and wstringstream are not supported. !

    Thread safety issues

    Earlier GCC releases had a somewhat different approach to threading configuration and proper compilation. Before GCC 3.0, configuration of the threading model was dictated by compiler --- 299,312 ---- Another example of using stringstreams is in this howto.

    There is additional information in the libstdc++-v2 info files, in particular info iostream. !

    Little or no wide character support

    Classes wstring and char_traits<wchar_t> are not supported. !

    No templatized iostreams

    Classes wfilebuf and wstringstream are not supported. !

    Thread safety issues

    Earlier GCC releases had a somewhat different approach to threading configuration and proper compilation. Before GCC 3.0, configuration of the threading model was dictated by compiler *************** particular

    • Our threading expert Loren gives a breakdown of the six situations involving threads for the 3.0 release series. --- 342,348 ---- first relevant message in the thread; from there you can use "Thread Next" to move down the thread. This farm is in latest-to-oldest order. !

    Third

    The third generation GNU C++ library is called libstdc++, or libstdc++-v3.

    The subset commonly known as the Standard Template Library (chapters 23 through 25, mostly) is adapted from the final release of the SGI STL (version 3.3), with extensive changes.

    A more formal description of the V3 goals can be found in the official design document. !

    Portability notes and known implementation limitations are as follows.

    Pre-ISO headers moved to backwards or removed

    The pre-ISO C++ headers (<iostream.h>, <defalloc.h> etc.) are available, unlike previous libstdc++ versions, but inclusion --- 357,370 ---- few people with access to the backup tapes have been too swamped with work to restore them. Many of the points have been superseded anyhow.) !

    Third

    The third generation GNU C++ library is called libstdc++, or libstdc++-v3.

    The subset commonly known as the Standard Template Library (chapters 23 through 25, mostly) is adapted from the final release of the SGI STL (version 3.3), with extensive changes.

    A more formal description of the V3 goals can be found in the official design document. !

    Portability notes and known implementation limitations are as follows.

    Pre-ISO headers moved to backwards or removed

    The pre-ISO C++ headers (<iostream.h>, <defalloc.h> etc.) are available, unlike previous libstdc++ versions, but inclusion *************** like <vector.h *** 438,444 **** directive using namespace std; can be put at the global scope. This should be enough to get this code compiling, assuming the other usage is correct. !

    Extension headers hash_map, hash_set moved to ext or backwards

    At this time most of the features of the SGI STL extension have been replaced by standardized libraries. In particular, the unordered_map and unordered_set containers of TR1 and C++ 2011 --- 437,443 ---- directive using namespace std; can be put at the global scope. This should be enough to get this code compiling, assuming the other usage is correct. !

    Extension headers hash_map, hash_set moved to ext or backwards

    At this time most of the features of the SGI STL extension have been replaced by standardized libraries. In particular, the unordered_map and unordered_set containers of TR1 and C++ 2011 *************** AC_DEFUN([AC_HEADER_EXT_HASH_SET], [ *** 512,518 **** AC_DEFINE(HAVE_EXT_HASH_SET,,[Define if ext/hash_set is present. ]) fi ]) !

    No ios::nocreate/ios::noreplace.

    The existence of ios::nocreate being used for input-streams has been confirmed, most probably because the author thought it would be more correct to specify nocreate explicitly. So --- 511,517 ---- AC_DEFINE(HAVE_EXT_HASH_SET,,[Define if ext/hash_set is present. ]) fi ]) !

    No ios::nocreate/ios::noreplace.

    The existence of ios::nocreate being used for input-streams has been confirmed, most probably because the author thought it would be more correct to specify nocreate explicitly. So *************** open the file for reading, check if it h *** 523,529 **** decide whether you want to create/replace or not. To my knowledge, even older implementations support app, ate and trunc (except for app ?). !

    No stream::attach(int fd)

    Phil Edwards writes: It was considered and rejected for the ISO --- 522,528 ---- decide whether you want to create/replace or not. To my knowledge, even older implementations support app, ate and trunc (except for app ?). !

    No stream::attach(int fd)

    Phil Edwards writes: It was considered and rejected for the ISO *************** No stream::attach(int *** 546,552 **** For another example of this, refer to fdstream example by Nicolai Josuttis. !

    Support for C++98 dialect.

    Check for complete library coverage of the C++1998/2003 standard.

    --- 545,551 ----
       For another example of this, refer to
            fdstream example
            by Nicolai Josuttis.
    ! 

    Support for C++98 dialect.

    Check for complete library coverage of the C++1998/2003 standard.

    *************** AC_DEFUN([AC_HEADER_STDCXX_98], [
    *** 614,620 ****
          AC_DEFINE(STDCXX_98_HEADERS,,[Define if ISO C++ 1998 header files are present. ])
        fi
      ])
    ! 

    Support for C++TR1 dialect.

    Check for library coverage of the TR1 standard.

    --- 613,619 ----
          AC_DEFINE(STDCXX_98_HEADERS,,[Define if ISO C++ 1998 header files are present. ])
        fi
      ])
    ! 

    Support for C++TR1 dialect.

    Check for library coverage of the TR1 standard.

    *************** AC_DEFUN([AC_HEADER_TR1_UNORDERED_SET],
    *** 691,697 ****
          AC_DEFINE(HAVE_TR1_UNORDERED_SET,,[Define if tr1/unordered_set is present. ])
        fi
      ])
    ! 

    Support for C++11 dialect.

    Check for baseline language coverage in the compiler for the C++11 standard.

    --- 690,696 ----
          AC_DEFINE(HAVE_TR1_UNORDERED_SET,,[Define if tr1/unordered_set is present. ])
        fi
      ])
    ! 

    Support for C++11 dialect.

    Check for baseline language coverage in the compiler for the C++11 standard.

    *************** AC_DEFUN([AC_HEADER_UNORDERED_SET], [
    *** 935,959 ****
        but the autoconf checks above could be extended to test for incomplete
        C++11 support with -std=c++0x and
        -std=gnu++0x.
    ! 

    Container::iterator_type is not necessarily Container::value_type*

    This is a change in behavior from older versions. Now, most iterator_type typedefs in container classes are POD objects, not value_type pointers. !

    --- 934,958 ---- but the autoconf checks above could be extended to test for incomplete C++11 support with -std=c++0x and -std=gnu++0x. !

    Container::iterator_type is not necessarily Container::value_type*

    This is a change in behavior from older versions. Now, most iterator_type typedefs in container classes are POD objects, not value_type pointers. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bitmap_allocator.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bitmap_allocator.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bitmap_allocator.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bitmap_allocator.html Tue Nov 5 21:26:53 2013 *************** *** 1,10 **** ! ! Chapter 21. The bitmap_allocator

    Chapter 21. The bitmap_allocator

    !

    Design

    As this name suggests, this allocator uses a bit-map to keep track of the used and unused memory locations for its book-keeping purposes. --- 1,9 ---- ! Chapter 21. The bitmap_allocator

    Chapter 21. The bitmap_allocator

    !

    Design

    As this name suggests, this allocator uses a bit-map to keep track of the used and unused memory locations for its book-keeping purposes. *************** *** 30,33 **** Mutex Protection around every allocation/deallocation. The state of the macro is picked up automatically from the gthr abstraction layer. !

    --- 29,32 ---- Mutex Protection around every allocation/deallocation. The state of the macro is picked up automatically from the gthr abstraction layer. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt02.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt02.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt02.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt02.html Tue Nov 5 21:26:53 2013 *************** *** 1,10 **** ! ! Part II.  Standard Contents

    Part II.  Standard Contents !

    Table of Contents

    4. Support
    Types
    Fundamental Types
    Numeric Properties
    NULL
    Dynamic Memory
    Termination
    Termination Handlers
    Verbose Terminate Handler
    5. --- 1,9 ---- ! Part II.  Standard Contents

    Part II.  Standard Contents !

    Table of Contents

    4. Support
    Types
    Fundamental Types
    Numeric Properties
    NULL
    Dynamic Memory
    Termination
    Termination Handlers
    Verbose Terminate Handler
    5. *************** *** 13,25 ****
    Exceptions
    API Reference
    Adding Data to exception
    Concept Checking
    6. Utilities !
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. Strings
    String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    8. Localization !
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. Containers
    Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    Interacting with C
    Containers vs. Arrays
    10. --- 12,24 ----
    Exceptions
    API Reference
    Adding Data to exception
    Concept Checking
    6. Utilities !
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. Strings
    String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    8. Localization !
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. Containers
    Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    Interacting with C
    Containers vs. Arrays
    10. *************** *** 43,46 ****
    API Reference
    --- 42,45 ----
    API Reference
    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Concept Checking

    Concept Checking

    In 1999, SGI added concept checkers to their implementation of the STL: code which checked the template parameters of instantiated pieces of the STL, in order to insure --- 1,8 ---- ! Concept Checking

    Concept Checking

    In 1999, SGI added concept checkers to their implementation of the STL: code which checked the template parameters of instantiated pieces of the STL, in order to insure *************** *** 47,50 ****  Home Chapter 6.  Utilities !

    --- 46,49 ----  Home Chapter 6.  Utilities !
    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch17s02.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch17s02.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch17s02.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch17s02.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Semantics

    Semantics

    A program that uses the C++ standard library correctly will maintain the same semantics under debug mode as it had with the normal (release) library. All functional and exception-handling --- 1,5 ---- ! Semantics

    Semantics

    A program that uses the C++ standard library correctly will maintain the same semantics under debug mode as it had with the normal (release) library. All functional and exception-handling *************** *** 36,42 **** (N.B. In GCC 3.4.x and 4.0.0, due to a bug, -D_GLIBXX_DEBUG_PEDANTIC was also needed. The problem has been fixed in GCC 4.0.1 and later versions.)

    The following library components provide extra debugging ! capabilities in debug mode:

    • std::basic_string (no safe iterators and see note below)

    • std::bitset

    • std::deque

    • std::list

    • std::map

    • std::multimap

    • std::multiset

    • std::set

    • std::vector

    • std::unordered_map

    • std::unordered_multimap

    • std::unordered_set

    • std::unordered_multiset

    N.B. although there are precondition checks for some string operations, e.g. operator[], they will not always be run when using the char and wchar_t specialisations (std::string and --- 35,41 ---- (N.B. In GCC 3.4.x and 4.0.0, due to a bug, -D_GLIBXX_DEBUG_PEDANTIC was also needed. The problem has been fixed in GCC 4.0.1 and later versions.)

    The following library components provide extra debugging ! capabilities in debug mode:

    • std::basic_string (no safe iterators and see note below)

    • std::bitset

    • std::deque

    • std::list

    • std::map

    • std::multimap

    • std::multiset

    • std::set

    • std::vector

    • std::unordered_map

    • std::unordered_multimap

    • std::unordered_set

    • std::unordered_multiset

    N.B. although there are precondition checks for some string operations, e.g. operator[], they will not always be run when using the char and wchar_t specialisations (std::string and *************** with the debug-mode checks included, but *** 52,55 **** guaranteed to work. For full debug-mode support you can use the __gnu_debug::basic_string debugging container directly, which always works correctly. !

    --- 51,54 ---- guaranteed to work. For full debug-mode support you can use the __gnu_debug::basic_string debugging container directly, which always works correctly. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html Tue Nov 5 21:26:53 2013 *************** *** 1,7 **** ! ! Using

    Using

    !

    Using the Debug Mode

    To use the libstdc++ debug mode, compile your application with the compiler flag -D_GLIBCXX_DEBUG. Note that this flag changes the sizes and behavior of standard class templates such as std::vector, and therefore you can only link code --- 1,6 ---- ! Using

    Using

    !

    Using the Debug Mode

    To use the libstdc++ debug mode, compile your application with the compiler flag -D_GLIBCXX_DEBUG. Note that this flag changes the sizes and behavior of standard class templates such as std::vector, and therefore you can only link code *************** *** 10,16 **** units.

    By default, error messages are formatted to fit on lines of about 78 characters. The environment variable GLIBCXX_DEBUG_MESSAGE_LENGTH can be used to request a ! different length.

    Using a Specific Debug Container

    When it is not feasible to recompile your entire application, or only specific containers need checking, debugging containers are available as GNU extensions. These debugging containers are functionally equivalent to the standard drop-in containers used in --- 9,15 ---- units.

    By default, error messages are formatted to fit on lines of about 78 characters. The environment variable GLIBCXX_DEBUG_MESSAGE_LENGTH can be used to request a ! different length.

    Using a Specific Debug Container

    When it is not feasible to recompile your entire application, or only specific containers need checking, debugging containers are available as GNU extensions. These debugging containers are functionally equivalent to the standard drop-in containers used in *************** *** 19,24 **** mode or with debug mode. The following table provides the names and headers of the debugging containers: !

    Table 17.1. Debugging Containers

    ContainerHeaderDebug containerDebug header
    std::bitsetbitset__gnu_debug::bitset<debug/bitset>
    std::dequedeque__gnu_debug::deque<debug/deque>
    std::listlist__gnu_debug::list<debug/list>
    std::mapmap__gnu_debug::map<debug/map>
    std::multimapmap__gnu_debug::multimap<debug/map>
    std::multisetset__gnu_debug::multiset<debug/set>
    std::setset__gnu_debug::set<debug/set>
    std::stringstring__gnu_debug::string<debug/string>
    std::wstringstring__gnu_debug::wstring<debug/string>
    std::basic_stringstring__gnu_debug::basic_string<debug/string>
    std::vectorvector__gnu_debug::vector<debug/vector>

    In addition, when compiling in C++11 mode, these additional containers have additional debug capability. !

    Table 17.2. Debugging Containers C++11

    ContainerHeaderDebug containerDebug header
    std::unordered_mapunordered_map__gnu_debug::unordered_map<debug/unordered_map>
    std::unordered_multimapunordered_map__gnu_debug::unordered_multimap<debug/unordered_map>
    std::unordered_setunordered_set__gnu_debug::unordered_set<debug/unordered_set>
    std::unordered_multisetunordered_set__gnu_debug::unordered_multiset<debug/unordered_set>

    --- 18,23 ---- mode or with debug mode. The following table provides the names and headers of the debugging containers: !

    Table 17.1. Debugging Containers

    ContainerHeaderDebug containerDebug header
    std::bitsetbitset__gnu_debug::bitset<debug/bitset>
    std::dequedeque__gnu_debug::deque<debug/deque>
    std::listlist__gnu_debug::list<debug/list>
    std::mapmap__gnu_debug::map<debug/map>
    std::multimapmap__gnu_debug::multimap<debug/map>
    std::multisetset__gnu_debug::multiset<debug/set>
    std::setset__gnu_debug::set<debug/set>
    std::stringstring__gnu_debug::string<debug/string>
    std::wstringstring__gnu_debug::wstring<debug/string>
    std::basic_stringstring__gnu_debug::basic_string<debug/string>
    std::vectorvector__gnu_debug::vector<debug/vector>

    In addition, when compiling in C++11 mode, these additional containers have additional debug capability. !

    Table 17.2. Debugging Containers C++11

    ContainerHeaderDebug containerDebug header
    std::unordered_mapunordered_map__gnu_debug::unordered_map<debug/unordered_map>
    std::unordered_multimapunordered_map__gnu_debug::unordered_multimap<debug/unordered_map>
    std::unordered_setunordered_set__gnu_debug::unordered_set<debug/unordered_set>
    std::unordered_multisetunordered_set__gnu_debug::unordered_multiset<debug/unordered_set>

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html Tue Nov 5 21:26:53 2013 *************** *** 1,11 **** ! ! Design

    Design

    !

    Goals

    The libstdc++ debug mode replaces unsafe (but efficient) standard containers and iterators with semantically equivalent safe standard containers and iterators to aid in debugging user programs. The ! following goals directed the design of the libstdc++ debug mode:

    • Correctness: the libstdc++ debug mode must not change the semantics of the standard library for all cases specified in the ANSI/ISO C++ standard. The essence of this constraint is that any valid C++ program should behave in the same manner regardless --- 1,10 ---- ! Design

      Design

      !

      Goals

      The libstdc++ debug mode replaces unsafe (but efficient) standard containers and iterators with semantically equivalent safe standard containers and iterators to aid in debugging user programs. The ! following goals directed the design of the libstdc++ debug mode:

      • Correctness: the libstdc++ debug mode must not change the semantics of the standard library for all cases specified in the ANSI/ISO C++ standard. The essence of this constraint is that any valid C++ program should behave in the same manner regardless *************** *** 89,98 **** (performance regression) or allocating extra memory associated with each iterator with new (changes the program semantics).

      !

    Methods

    This section provides an overall view of the design of the libstdc++ debug mode and details the relationship between design ! decisions and the stated design goals.

    The Wrapper Model

    The libstdc++ debug mode uses a wrapper model where the debugging versions of library components (e.g., iterators and containers) form a layer on top of the release versions of the library components. The debugging components first verify that the --- 88,97 ---- (performance regression) or allocating extra memory associated with each iterator with new (changes the program semantics).

    !

    Methods

    This section provides an overall view of the design of the libstdc++ debug mode and details the relationship between design ! decisions and the stated design goals.

    The Wrapper Model

    The libstdc++ debug mode uses a wrapper model where the debugging versions of library components (e.g., iterators and containers) form a layer on top of the release versions of the library components. The debugging components first verify that the *************** *** 109,127 **** their associated containers, which are necessary to detect certain types of standard library usage errors such as dereferencing past-the-end iterators or inserting into a container using an ! iterator from a different container.

    Safe Iterators

    Iterator wrappers provide a debugging layer over any iterator that is attached to a particular container, and will manage the information detailing the iterator's state (singular, dereferenceable, etc.) and tracking the container to which the iterator is attached. Because iterators have a well-defined, common interface the iterator wrapper is implemented with the iterator adaptor class template __gnu_debug::_Safe_iterator, ! which takes two template parameters:

    • Iterator: The underlying iterator type, which must be either the iterator or const_iterator typedef from the sequence type this iterator can reference.

    • Sequence: The type of sequence that this iterator references. This sequence must be a safe sequence (discussed below) whose iterator or const_iterator typedef ! is the type of the safe iterator.

    Safe Sequences (Containers)

    Container wrappers provide a debugging layer over a particular container type. Because containers vary greatly in the member functions they support and the semantics of those member functions (especially in the area of iterator invalidation), container --- 108,126 ---- their associated containers, which are necessary to detect certain types of standard library usage errors such as dereferencing past-the-end iterators or inserting into a container using an ! iterator from a different container.

    Safe Iterators

    Iterator wrappers provide a debugging layer over any iterator that is attached to a particular container, and will manage the information detailing the iterator's state (singular, dereferenceable, etc.) and tracking the container to which the iterator is attached. Because iterators have a well-defined, common interface the iterator wrapper is implemented with the iterator adaptor class template __gnu_debug::_Safe_iterator, ! which takes two template parameters:

    • Iterator: The underlying iterator type, which must be either the iterator or const_iterator typedef from the sequence type this iterator can reference.

    • Sequence: The type of sequence that this iterator references. This sequence must be a safe sequence (discussed below) whose iterator or const_iterator typedef ! is the type of the safe iterator.

    Safe Sequences (Containers)

    Container wrappers provide a debugging layer over a particular container type. Because containers vary greatly in the member functions they support and the semantics of those member functions (especially in the area of iterator invalidation), container *************** template<typename _Tp, typename _Allo *** 157,163 **** // duplicate std::list interface with debugging semantics }; !

    Precondition Checking

    The debug mode operates primarily by checking the preconditions of all standard library operations that it supports. Preconditions that are always checked (regardless of whether or not we are in debug mode) are checked via the __check_xxx macros defined --- 156,162 ---- // duplicate std::list interface with debugging semantics }; !

    Precondition Checking

    The debug mode operates primarily by checking the preconditions of all standard library operations that it supports. Preconditions that are always checked (regardless of whether or not we are in debug mode) are checked via the __check_xxx macros defined *************** template<typename _Tp, typename _Allo *** 184,190 **** cousin _GLIBCXX_DEBUG_PEDASSERT, or the assertion check macro that supports more advance formulation of error messages, _GLIBCXX_DEBUG_VERIFY. These macros are ! documented more thoroughly in the debug mode source code.

    Release- and debug-mode coexistence

    The libstdc++ debug mode is the first debug mode we know of that is able to provide the "Per-use recompilation" (4) guarantee, that allows release-compiled and debug-compiled code to be linked and executed together without causing unpredictable behavior. This --- 183,189 ---- cousin _GLIBCXX_DEBUG_PEDASSERT, or the assertion check macro that supports more advance formulation of error messages, _GLIBCXX_DEBUG_VERIFY. These macros are ! documented more thoroughly in the debug mode source code.

    Release- and debug-mode coexistence

    The libstdc++ debug mode is the first debug mode we know of that is able to provide the "Per-use recompilation" (4) guarantee, that allows release-compiled and debug-compiled code to be linked and executed together without causing unpredictable behavior. This *************** template<typename _Tp, typename _Allo *** 200,206 **** recompilation but have had to give up some checking of the std::basic_string class template (namely, safe iterators). !

    Compile-time coexistence of release- and debug-mode components

    Both the release-mode components and the debug-mode components need to exist within a single translation unit so that the debug versions can wrap the release versions. However, only one of these components should be user-visible at any particular --- 199,205 ---- recompilation but have had to give up some checking of the std::basic_string class template (namely, safe iterators). !

    Compile-time coexistence of release- and debug-mode components

    Both the release-mode components and the debug-mode components need to exist within a single translation unit so that the debug versions can wrap the release versions. However, only one of these components should be user-visible at any particular *************** namespace std *** 254,260 **** // namespace __debug __attribute__ ((strong)); inline namespace __debug { } } !

    Link- and run-time coexistence of release- and debug-mode components

    Because each component has a distinct and separate release and debug implementation, there is no issue with link-time coexistence: the separate namespaces result in different mangled --- 253,259 ---- // namespace __debug __attribute__ ((strong)); inline namespace __debug { } } !

    Link- and run-time coexistence of release- and debug-mode components

    Because each component has a distinct and separate release and debug implementation, there is no issue with link-time coexistence: the separate namespaces result in different mangled *************** test02() *** 316,325 **** changes. The effect on users is expected to be minimal, as there are simple alternatives (e.g., __gnu_debug::basic_string), and the usability benefit we gain from the ability to mix debug- and ! release-compiled translation units is enormous.

    Alternatives for Coexistence

    The coexistence scheme above was chosen over many alternatives, including language-only solutions and solutions that also required extensions to the C++ front end. The following is a partial list of ! solutions, with justifications for our rejection of each.

    • Completely separate debug/release libraries: This is by far the simplest implementation option, where we do not allow any coexistence of debug- and release-compiled translation units in a program. This solution has an extreme negative affect on usability, --- 315,324 ---- changes. The effect on users is expected to be minimal, as there are simple alternatives (e.g., __gnu_debug::basic_string), and the usability benefit we gain from the ability to mix debug- and ! release-compiled translation units is enormous.

    Alternatives for Coexistence

    The coexistence scheme above was chosen over many alternatives, including language-only solutions and solutions that also required extensions to the C++ front end. The following is a partial list of ! solutions, with justifications for our rejection of each.

    • Completely separate debug/release libraries: This is by far the simplest implementation option, where we do not allow any coexistence of debug- and release-compiled translation units in a program. This solution has an extreme negative affect on usability, *************** test02() *** 388,398 **** that breaks user specialization), and additional testcases will be added as we are able to identify other typical problem cases. These test cases will serve as a benchmark by which we can compare debug ! mode implementations.

    Other Implementations

    There are several existing implementations of debug modes for C++ standard library implementations, although none of them directly supports debugging for programs using libstdc++. The existing ! implementations include:

    • SafeSTL: SafeSTL was the original debugging version of the Standard Template Library (STL), implemented by Cay S. Horstmann on top of the Hewlett-Packard STL. Though it inspired much work in this area, it --- 387,397 ---- that breaks user specialization), and additional testcases will be added as we are able to identify other typical problem cases. These test cases will serve as a benchmark by which we can compare debug ! mode implementations.

    Other Implementations

    There are several existing implementations of debug modes for C++ standard library implementations, although none of them directly supports debugging for programs using libstdc++. The existing ! implementations include:

    • SafeSTL: SafeSTL was the original debugging version of the Standard Template Library (STL), implemented by Cay S. Horstmann on top of the Hewlett-Packard STL. Though it inspired much work in this area, it *************** test02() *** 409,412 **** a full debug-mode implementation (including debugging for CodeWarrior extensions) and is easy to use, although it meets only the "Full recompilation" (1) recompilation ! guarantee.

    --- 408,411 ---- a full debug-mode implementation (including debugging for CodeWarrior extensions) and is easy to use, although it meets only the "Full recompilation" (1) recompilation ! guarantee.

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch18s02.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch18s02.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch18s02.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch18s02.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Semantics

    Semantics

    The parallel mode STL algorithms are currently not exception-safe, i.e. user-defined functors must not throw exceptions. Also, the order of execution is not guaranteed for some functions, of course. Therefore, user-defined functors should not have any concurrent side effects. --- 1,5 ---- ! Semantics

    Semantics

    The parallel mode STL algorithms are currently not exception-safe, i.e. user-defined functors must not throw exceptions. Also, the order of execution is not guaranteed for some functions, of course. Therefore, user-defined functors should not have any concurrent side effects. *************** Therefore, user-defined functors should *** 8,11 **** OpenMP parallel regions in concurrent threads, it is not possible to call parallel STL algorithm in concurrent threads, either. ! It might work with other compilers, though.

    --- 7,10 ---- OpenMP parallel regions in concurrent threads, it is not possible to call parallel STL algorithm in concurrent threads, either. ! It might work with other compilers, though.

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Using

    Using

    Prerequisite Compiler Flags

    Any use of parallel functionality requires additional compiler and runtime support, in particular support for OpenMP. Adding this support is not difficult: just compile your application with the compiler --- 1,5 ---- ! Using

    Using

    Prerequisite Compiler Flags

    Any use of parallel functionality requires additional compiler and runtime support, in particular support for OpenMP. Adding this support is not difficult: just compile your application with the compiler *************** In addition, hardware that supports atom *** 17,23 **** as -march=i686, -march=native or -mcpu=v9. See the GCC manual for more information. !

    Using Parallel Mode

    To use the libstdc++ parallel mode, compile your application with the prerequisite flags as detailed above, and in addition add -D_GLIBCXX_PARALLEL. This will convert all --- 16,22 ---- as -march=i686, -march=native or -mcpu=v9. See the GCC manual for more information. !

    Using Parallel Mode

    To use the libstdc++ parallel mode, compile your application with the prerequisite flags as detailed above, and in addition add -D_GLIBCXX_PARALLEL. This will convert all *************** In addition, hardware that supports atom *** 34,40 **** if no instantiation of a container is passed between the two translation units. Parallel mode functionality has distinct linkage, and cannot be confused with normal mode symbols. !

    Using Specific Parallel Components

    When it is not feasible to recompile your entire application, or only specific algorithms need to be parallel-aware, individual parallel algorithms can be made available explicitly. These parallel algorithms are functionally equivalent to the standard --- 33,39 ---- if no instantiation of a container is passed between the two translation units. Parallel mode functionality has distinct linkage, and cannot be confused with normal mode symbols. !

    Using Specific Parallel Components

    When it is not feasible to recompile your entire application, or only specific algorithms need to be parallel-aware, individual parallel algorithms can be made available explicitly. These parallel algorithms are functionally equivalent to the standard *************** Then compile this code with the prerequi *** 63,66 **** flags for atomic operations.)

    The following table provides the names and headers of all the parallel algorithms that can be used in a similar manner: !

    Table 18.1. Parallel Algorithms

    AlgorithmHeaderParallel algorithmParallel header
    std::accumulatenumeric__gnu_parallel::accumulateparallel/numeric
    std::adjacent_differencenumeric__gnu_parallel::adjacent_differenceparallel/numeric
    std::inner_productnumeric__gnu_parallel::inner_productparallel/numeric
    std::partial_sumnumeric__gnu_parallel::partial_sumparallel/numeric
    std::adjacent_findalgorithm__gnu_parallel::adjacent_findparallel/algorithm
    std::countalgorithm__gnu_parallel::countparallel/algorithm
    std::count_ifalgorithm__gnu_parallel::count_ifparallel/algorithm
    std::equalalgorithm__gnu_parallel::equalparallel/algorithm
    std::findalgorithm__gnu_parallel::findparallel/algorithm
    std::find_ifalgorithm__gnu_parallel::find_ifparallel/algorithm
    std::find_first_ofalgorithm__gnu_parallel::find_first_ofparallel/algorithm
    std::for_eachalgorithm__gnu_parallel::for_eachparallel/algorithm
    std::generatealgorithm__gnu_parallel::generateparallel/algorithm
    std::generate_nalgorithm__gnu_parallel::generate_nparallel/algorithm
    std::lexicographical_comparealgorithm__gnu_parallel::lexicographical_compareparallel/algorithm
    std::mismatchalgorithm__gnu_parallel::mismatchparallel/algorithm
    std::searchalgorithm__gnu_parallel::searchparallel/algorithm
    std::search_nalgorithm__gnu_parallel::search_nparallel/algorithm
    std::transformalgorithm__gnu_parallel::transformparallel/algorithm
    std::replacealgorithm__gnu_parallel::replaceparallel/algorithm
    std::replace_ifalgorithm__gnu_parallel::replace_ifparallel/algorithm
    std::max_elementalgorithm__gnu_parallel::max_elementparallel/algorithm
    std::mergealgorithm__gnu_parallel::mergeparallel/algorithm
    std::min_elementalgorithm__gnu_parallel::min_elementparallel/algorithm
    std::nth_elementalgorithm__gnu_parallel::nth_elementparallel/algorithm
    std::partial_sortalgorithm__gnu_parallel::partial_sortparallel/algorithm
    std::partitionalgorithm__gnu_parallel::partitionparallel/algorithm
    std::random_shufflealgorithm__gnu_parallel::random_shuffleparallel/algorithm
    std::set_unionalgorithm__gnu_parallel::set_unionparallel/algorithm
    std::set_intersectionalgorithm__gnu_parallel::set_intersectionparallel/algorithm
    std::set_symmetric_differencealgorithm__gnu_parallel::set_symmetric_differenceparallel/algorithm
    std::set_differencealgorithm__gnu_parallel::set_differenceparallel/algorithm
    std::sortalgorithm__gnu_parallel::sortparallel/algorithm
    std::stable_sortalgorithm__gnu_parallel::stable_sortparallel/algorithm
    std::unique_copyalgorithm__gnu_parallel::unique_copyparallel/algorithm

    --- 62,65 ---- flags for atomic operations.)

    The following table provides the names and headers of all the parallel algorithms that can be used in a similar manner: !

    Table 18.1. Parallel Algorithms

    AlgorithmHeaderParallel algorithmParallel header
    std::accumulatenumeric__gnu_parallel::accumulateparallel/numeric
    std::adjacent_differencenumeric__gnu_parallel::adjacent_differenceparallel/numeric
    std::inner_productnumeric__gnu_parallel::inner_productparallel/numeric
    std::partial_sumnumeric__gnu_parallel::partial_sumparallel/numeric
    std::adjacent_findalgorithm__gnu_parallel::adjacent_findparallel/algorithm
    std::countalgorithm__gnu_parallel::countparallel/algorithm
    std::count_ifalgorithm__gnu_parallel::count_ifparallel/algorithm
    std::equalalgorithm__gnu_parallel::equalparallel/algorithm
    std::findalgorithm__gnu_parallel::findparallel/algorithm
    std::find_ifalgorithm__gnu_parallel::find_ifparallel/algorithm
    std::find_first_ofalgorithm__gnu_parallel::find_first_ofparallel/algorithm
    std::for_eachalgorithm__gnu_parallel::for_eachparallel/algorithm
    std::generatealgorithm__gnu_parallel::generateparallel/algorithm
    std::generate_nalgorithm__gnu_parallel::generate_nparallel/algorithm
    std::lexicographical_comparealgorithm__gnu_parallel::lexicographical_compareparallel/algorithm
    std::mismatchalgorithm__gnu_parallel::mismatchparallel/algorithm
    std::searchalgorithm__gnu_parallel::searchparallel/algorithm
    std::search_nalgorithm__gnu_parallel::search_nparallel/algorithm
    std::transformalgorithm__gnu_parallel::transformparallel/algorithm
    std::replacealgorithm__gnu_parallel::replaceparallel/algorithm
    std::replace_ifalgorithm__gnu_parallel::replace_ifparallel/algorithm
    std::max_elementalgorithm__gnu_parallel::max_elementparallel/algorithm
    std::mergealgorithm__gnu_parallel::mergeparallel/algorithm
    std::min_elementalgorithm__gnu_parallel::min_elementparallel/algorithm
    std::nth_elementalgorithm__gnu_parallel::nth_elementparallel/algorithm
    std::partial_sortalgorithm__gnu_parallel::partial_sortparallel/algorithm
    std::partitionalgorithm__gnu_parallel::partitionparallel/algorithm
    std::random_shufflealgorithm__gnu_parallel::random_shuffleparallel/algorithm
    std::set_unionalgorithm__gnu_parallel::set_unionparallel/algorithm
    std::set_intersectionalgorithm__gnu_parallel::set_intersectionparallel/algorithm
    std::set_symmetric_differencealgorithm__gnu_parallel::set_symmetric_differenceparallel/algorithm
    std::set_differencealgorithm__gnu_parallel::set_differenceparallel/algorithm
    std::sortalgorithm__gnu_parallel::sortparallel/algorithm
    std::stable_sortalgorithm__gnu_parallel::stable_sortparallel/algorithm
    std::unique_copyalgorithm__gnu_parallel::unique_copyparallel/algorithm

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch18s04.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch18s04.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch18s04.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch18s04.html Tue Nov 5 21:26:53 2013 *************** *** 1,7 **** ! ! Design

    Design

    !

    Interface Basics

    All parallel algorithms are intended to have signatures that are equivalent to the ISO C++ algorithms replaced. For instance, the std::adjacent_find function is declared as: --- 1,6 ---- ! Design

    Design

    !

    Interface Basics

    All parallel algorithms are intended to have signatures that are equivalent to the ISO C++ algorithms replaced. For instance, the std::adjacent_find function is declared as: *************** function, if no parallel functions are d *** 36,48 **** compile-time or run-time conditions.

    The available signature options are specific for the different algorithms/algorithm classes.

    The general view of overloads for the parallel algorithms look like this: !

    • ISO C++ signature

    • ISO C++ signature + sequential_tag argument

    • ISO C++ signature + algorithm-specific tag type (several signatures)

    Please note that the implementation may use additional functions (designated with the _switch suffix) to dispatch from the ISO C++ signature to the correct parallel version. Also, some of the algorithms do not have support for run-time conditions, so the last overload is therefore missing. !

    Configuration and Tuning

    Setting up the OpenMP Environment

    Several aspects of the overall runtime environment can be manipulated by standard OpenMP function calls.

    --- 35,47 ---- compile-time or run-time conditions.

    The available signature options are specific for the different algorithms/algorithm classes.

    The general view of overloads for the parallel algorithms look like this: !

    • ISO C++ signature

    • ISO C++ signature + sequential_tag argument

    • ISO C++ signature + algorithm-specific tag type (several signatures)

    Please note that the implementation may use additional functions (designated with the _switch suffix) to dispatch from the ISO C++ signature to the correct parallel version. Also, some of the algorithms do not have support for run-time conditions, so the last overload is therefore missing. !

    Configuration and Tuning

    Setting up the OpenMP Environment

    Several aspects of the overall runtime environment can be manipulated by standard OpenMP function calls.

    *************** Other parts of the runtime environment a *** 72,78 **** nested parallelism (omp_set_nested), schedule kind (omp_set_schedule), and others. See the OpenMP documentation for more information. !

    Compile Time Switches

    To force an algorithm to execute sequentially, even though parallelism is switched on in general via the macro _GLIBCXX_PARALLEL, add __gnu_parallel::sequential_tag() to the end --- 71,77 ---- nested parallelism (omp_set_nested), schedule kind (omp_set_schedule), and others. See the OpenMP documentation for more information. !

    Compile Time Switches

    To force an algorithm to execute sequentially, even though parallelism is switched on in general via the macro _GLIBCXX_PARALLEL, add __gnu_parallel::sequential_tag() to the end *************** several additional choices, namely *** 126,132 **** __gnu_parallel::balanced_quicksort_tag. Multiway mergesort comes with the two splitting strategies for multi-way merging. The quicksort options cannot be used for stable_sort. !

    Run Time Settings and Defaults

    The default parallelization strategy, the choice of specific algorithm strategy, the minimum threshold limits for individual parallel algorithms, and aspects of the underlying hardware can be specified as --- 125,131 ---- __gnu_parallel::balanced_quicksort_tag. Multiway mergesort comes with the two splitting strategies for multi-way merging. The quicksort options cannot be used for stable_sort. !

    Run Time Settings and Defaults

    The default parallelization strategy, the choice of specific algorithm strategy, the minimum threshold limits for individual parallel algorithms, and aspects of the underlying hardware can be specified as *************** int main() *** 194,200 **** return 0; } !

    Implementation Namespaces

    One namespace contain versions of code that are always explicitly sequential: __gnu_serial.

    Two namespaces contain the parallel mode: --- 193,199 ---- return 0; } !

    Implementation Namespaces

    One namespace contain versions of code that are always explicitly sequential: __gnu_serial.

    Two namespaces contain the parallel mode: *************** __gnu_parallel. *** 210,213 ****

    More information, and an organized index of types and functions related to the parallel mode on a per-namespace basis, can be found in the generated source documentation. !

    --- 209,212 ----

    More information, and an organized index of types and functions related to the parallel mode on a per-namespace basis, can be found in the generated source documentation. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch18s05.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch18s05.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch18s05.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch18s05.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Testing

    Testing

    Both the normal conformance and regression tests and the supplemental performance tests work.

    --- 1,5 ---- ! Testing

    Testing

    Both the normal conformance and regression tests and the supplemental performance tests work.

    *************** *** 23,26 **** additional software dependencies than the usual bare-boned text file, and can be generated by using the make doc-performance rule in the testsuite's Makefile. !

    --- 22,25 ---- additional software dependencies than the usual bare-boned text file, and can be generated by using the make doc-performance rule in the testsuite's Makefile. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html Tue Nov 5 21:26:53 2013 *************** *** 1,10 **** ! ! Design

    Design

    !

    Table 19.1. Profile Code Location

    Code LocationUse
    libstdc++-v3/include/std/*Preprocessor code to redirect to profile extension headers.
    libstdc++-v3/include/profile/*Profile extension public headers (map, vector, ...).
    libstdc++-v3/include/profile/impl/*Profile extension internals. Implementation files are only included from impl/profiler.h, which is the only file included from the public headers.

    !

    Wrapper Model

    In order to get our instrumented library version included instead of the release one, we use the same wrapper model as the debug mode. --- 1,9 ---- ! Design

    Design

    !

    Table 19.1. Profile Code Location

    Code LocationUse
    libstdc++-v3/include/std/*Preprocessor code to redirect to profile extension headers.
    libstdc++-v3/include/profile/*Profile extension public headers (map, vector, ...).
    libstdc++-v3/include/profile/impl/*Profile extension internals. Implementation files are only included from impl/profiler.h, which is the only file included from the public headers.

    !

    Wrapper Model

    In order to get our instrumented library version included instead of the release one, we use the same wrapper model as the debug mode. *************** *** 25,31 **** Currently, mixing the profile mode with debug and parallel extensions is not allowed. Mixing them at compile time will result in preprocessor errors. Mixing them at link time is undefined. !

    Instrumentation

    Instead of instrumenting every public entry and exit point, we chose to add instrumentation on demand, as needed by individual diagnostics. --- 24,30 ---- Currently, mixing the profile mode with debug and parallel extensions is not allowed. Mixing them at compile time will result in preprocessor errors. Mixing them at link time is undefined. !

    Instrumentation

    Instead of instrumenting every public entry and exit point, we chose to add instrumentation on demand, as needed by individual diagnostics. *************** *** 44,50 ****

    All the instrumentation on/off compile time switches live in include/profile/profiler.h. !

    Run Time Behavior

    For practical reasons, the instrumentation library processes the trace partially rather than dumping it to disk in raw form. Each event is processed when --- 43,49 ----

    All the instrumentation on/off compile time switches live in include/profile/profiler.h. !

    Run Time Behavior

    For practical reasons, the instrumentation library processes the trace partially rather than dumping it to disk in raw form. Each event is processed when *************** *** 63,80 **** For details, see paper presented at CGO 2009. !

    Analysis and Diagnostics

    Final analysis takes place offline, and it is based entirely on the generated trace and debugging info in the application binary. See section Diagnostics for a list of analysis types that we plan to support.

    The input to the analysis is a table indexed by profile type and call stack. The data type for each entry depends on the profile type. !

    Cost Model

    While it is likely that cost models become complex as we get into more sophisticated analysis, we will try to follow a simple set of rules at the beginning. !

    • Relative benefit estimation: The idea is to estimate or measure the cost of all operations in the original scenario versus the scenario we advise to switch to. For instance, when advising to change a vector to a list, an occurrence --- 62,79 ---- For details, see paper presented at CGO 2009. !

    Analysis and Diagnostics

    Final analysis takes place offline, and it is based entirely on the generated trace and debugging info in the application binary. See section Diagnostics for a list of analysis types that we plan to support.

    The input to the analysis is a table indexed by profile type and call stack. The data type for each entry depends on the profile type. !

    Cost Model

    While it is likely that cost models become complex as we get into more sophisticated analysis, we will try to follow a simple set of rules at the beginning. !

    • Relative benefit estimation: The idea is to estimate or measure the cost of all operations in the original scenario versus the scenario we advise to switch to. For instance, when advising to change a vector to a list, an occurrence *************** *** 98,104 **** For instance, when considering switching from set to unordered_set, if we detect use of operator ++, we will simply not issue the advice, since this could signal that the use ! care require a sorted container.

    Reports

    There are two types of reports. First, if we recognize a pattern for which we have a substitute that is likely to give better performance, we print the advice and estimated performance gain. The advice is usually associated --- 97,103 ---- For instance, when considering switching from set to unordered_set, if we detect use of operator ++, we will simply not issue the advice, since this could signal that the use ! care require a sorted container.

    Reports

    There are two types of reports. First, if we recognize a pattern for which we have a substitute that is likely to give better performance, we print the advice and estimated performance gain. The advice is usually associated *************** the top 10 multimap

    Testing

    First, we want to make sure we preserve the behavior of the release mode. You can just type "make check-profile", which builds and runs the whole test suite in profile mode. --- 109,115 ---- which have the worst data locality in actual traversals. Although this does not offer a solution, it helps the user focus on the key problems and ignore the uninteresting ones. !

    Testing

    First, we want to make sure we preserve the behavior of the release mode. You can just type "make check-profile", which builds and runs the whole test suite in profile mode. *************** it helps the user focus on the key probl *** 119,122 **** We created a profile directory in the test suite. Each diagnostic must come with at least two tests, one for false positives and one for false negatives. !

    --- 118,121 ---- We created a profile directory in the test suite. Each diagnostic must come with at least two tests, one for false positives and one for false negatives. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch19s03.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch19s03.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch19s03.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch19s03.html Tue Nov 5 21:26:53 2013 *************** *** 1,10 **** ! ! Extensions for Custom Containers

    Extensions for Custom Containers

    Many large projects use their own data structures instead of the ones in the standard library. If these data structures are similar in functionality to the standard library, they can be instrumented with the same hooks that are used to instrument the standard library. The instrumentation API is exposed in file profiler.h (look for "Instrumentation hooks"). !

    --- 1,9 ---- ! Extensions for Custom Containers

    Extensions for Custom Containers

    Many large projects use their own data structures instead of the ones in the standard library. If these data structures are similar in functionality to the standard library, they can be instrumented with the same hooks that are used to instrument the standard library. The instrumentation API is exposed in file profiler.h (look for "Instrumentation hooks"). !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch19s04.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch19s04.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch19s04.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch19s04.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Empirical Cost Model

    Empirical Cost Model

    Currently, the cost model uses formulas with predefined relative weights for alternative containers or container implementations. For instance, iterating through a vector is X times faster than iterating through a list. --- 1,5 ---- ! Empirical Cost Model

    Empirical Cost Model

    Currently, the cost model uses formulas with predefined relative weights for alternative containers or container implementations. For instance, iterating through a vector is X times faster than iterating through a list. *************** *** 15,18 **** filled in either by hand or by an automated training mechanism. The analysis module will then use this database instead of the built in. generic parameters. !

    --- 14,17 ---- filled in either by hand or by an automated training mechanism. The analysis module will then use this database instead of the built in. generic parameters. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch19s05.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch19s05.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch19s05.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch19s05.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Implementation Issues

    Implementation Issues

    Stack Traces

    Accurate stack traces are needed during profiling since we group events by call context and dynamic instance. Without accurate traces, diagnostics may be hard to interpret. For instance, when giving advice to the user --- 1,5 ---- ! Implementation Issues

    Implementation Issues

    Stack Traces

    Accurate stack traces are needed during profiling since we group events by call context and dynamic instance. Without accurate traces, diagnostics may be hard to interpret. For instance, when giving advice to the user *************** *** 11,34 **** _GLIBCXX_PROFILE_STACK_DEPTH can be set to 0 if you are willing to give up call context information, or to a small positive value to reduce run time overhead. !

    Symbolization of Instruction Addresses

    The profiling and analysis phases use only instruction addresses. An external utility such as addr2line is needed to postprocess the result. We do not plan to add symbolization support in the profile extension. This would require access to symbol tables, debug information tables, external programs or libraries and other system dependent information. !

    Concurrency

    Our current model is simplistic, but precise. We cannot afford to approximate because some of our diagnostics require precise matching of operations to container instance and call context. During profiling, we keep a single information table per diagnostic. There is a single lock per information table. !

    Using the Standard Library in the Instrumentation Implementation

    As much as we would like to avoid uses of libstdc++ within our instrumentation library, containers such as unordered_map are very appealing. We plan to use them as long as they are named properly to avoid ambiguity. !

    Malloc Hooks

    User applications/libraries can provide malloc hooks. When the implementation of the malloc hooks uses stdlibc++, there can be an infinite cycle between the profile mode instrumentation and the --- 10,33 ---- _GLIBCXX_PROFILE_STACK_DEPTH can be set to 0 if you are willing to give up call context information, or to a small positive value to reduce run time overhead. !

    Symbolization of Instruction Addresses

    The profiling and analysis phases use only instruction addresses. An external utility such as addr2line is needed to postprocess the result. We do not plan to add symbolization support in the profile extension. This would require access to symbol tables, debug information tables, external programs or libraries and other system dependent information. !

    Concurrency

    Our current model is simplistic, but precise. We cannot afford to approximate because some of our diagnostics require precise matching of operations to container instance and call context. During profiling, we keep a single information table per diagnostic. There is a single lock per information table. !

    Using the Standard Library in the Instrumentation Implementation

    As much as we would like to avoid uses of libstdc++ within our instrumentation library, containers such as unordered_map are very appealing. We plan to use them as long as they are named properly to avoid ambiguity. !

    Malloc Hooks

    User applications/libraries can provide malloc hooks. When the implementation of the malloc hooks uses stdlibc++, there can be an infinite cycle between the profile mode instrumentation and the *************** *** 42,51 **** uses non-recursive locks. XXX: A definitive solution to this problem would be for the profile extension to use a custom allocator internally, and perhaps not to use libstdc++. !

    Construction and Destruction of Global Objects

    The profiling library state is initialized at the first call to a profiling method. This allows us to record the construction of all global objects. However, we cannot do the same at destruction time. The trace is written by a function registered by atexit, thus invoked by exit. !

    --- 41,50 ---- uses non-recursive locks. XXX: A definitive solution to this problem would be for the profile extension to use a custom allocator internally, and perhaps not to use libstdc++. !

    Construction and Destruction of Global Objects

    The profiling library state is initialized at the first call to a profiling method. This allows us to record the construction of all global objects. However, we cannot do the same at destruction time. The trace is written by a function registered by atexit, thus invoked by exit. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch19s06.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch19s06.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch19s06.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch19s06.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Developer Information

    Developer Information

    Big Picture

    The profile mode headers are included with -D_GLIBCXX_PROFILE through preprocessor directives in include/std/*.

    Instrumented implementations are provided in --- 1,5 ---- ! Developer Information

    Developer Information

    Big Picture

    The profile mode headers are included with -D_GLIBCXX_PROFILE through preprocessor directives in include/std/*.

    Instrumented implementations are provided in *************** *** 14,20 **** must ensure (1) that the call is guarded against reentrance and (2) that the call can be turned off at compile time using a -D_GLIBCXX_PROFILE_... compiler option. !

    How To Add A Diagnostic

    Let's say the diagnostic name is "magic".

    If you need to instrument a header not already under include/profile/*, first edit the corresponding header under include/std/ and add a preprocessor directive such --- 13,19 ---- must ensure (1) that the call is guarded against reentrance and (2) that the call can be turned off at compile time using a -D_GLIBCXX_PROFILE_... compiler option. !

    How To Add A Diagnostic

    Let's say the diagnostic name is "magic".

    If you need to instrument a header not already under include/profile/*, first edit the corresponding header under include/std/ and add a preprocessor directive such *************** *** 42,48 **** All names of methods in namespace __gnu_profile called from profiler.h must start with __trace_magic_.

    Add the implementation of the diagnostic. !

    • Create new file include/profile/impl/profiler_magic.h.

    • Define class __magic_info: public __object_info_base. --- 41,47 ---- All names of methods in namespace __gnu_profile called from profiler.h must start with __trace_magic_.

      Add the implementation of the diagnostic. !

      • Create new file include/profile/impl/profiler_magic.h.

      • Define class __magic_info: public __object_info_base. *************** *** 65,68 **** include/profile/impl/profiler_trace.h. Use __trace_vector_to_list as an example.

        Add documentation in file doc/xml/manual/profile_mode.xml. !

    --- 64,67 ---- include/profile/impl/profiler_trace.h. Use __trace_vector_to_list as an example.

    Add documentation in file doc/xml/manual/profile_mode.xml. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Diagnostics

    Diagnostics

    The table below presents all the diagnostics we intend to implement. Each diagnostic has a corresponding compile time switch -D_GLIBCXX_PROFILE_<diagnostic>. --- 1,5 ---- ! Diagnostics

    Diagnostics

    The table below presents all the diagnostics we intend to implement. Each diagnostic has a corresponding compile time switch -D_GLIBCXX_PROFILE_<diagnostic>. *************** *** 18,24 **** A high accuracy means that the diagnostic is unlikely to be wrong. These grades are not perfect. They are just meant to guide users with specific needs or time budgets. !

    Table 19.2. Profile Diagnostics

    GroupFlagBenefitCostFreq.Implemented 
    CONTAINERS HASHTABLE_TOO_SMALL101 10yes
      HASHTABLE_TOO_LARGE51 10yes
      --- 17,23 ---- A high accuracy means that the diagnostic is unlikely to be wrong. These grades are not perfect. They are just meant to guide users with specific needs or time budgets. !

    Table 19.2. Profile Diagnostics


    Diagnostic Template

    • Switch: _GLIBCXX_PROFILE_<diagnostic>.

    • Goal: What problem will it diagnose?

    • Fundamentals:. --- 34,40 ---- LOCALITY

    SOFTWARE_PREFETCH88 5no
      RBTREE_LOCALITY48 5no
      ! FALSE_SHARING810 10no

    Diagnostic Template

    • Switch: _GLIBCXX_PROFILE_<diagnostic>.

    • Goal: What problem will it diagnose?

    • Fundamentals:. *************** program code *** 52,61 **** ... advice sample

      !

    Containers

    Switch: _GLIBCXX_PROFILE_CONTAINERS. !

    Hashtable Too Small

    • Switch: _GLIBCXX_PROFILE_HASHTABLE_TOO_SMALL.

    • Goal: Detect hashtables with many rehash operations, small construction size and large destruction size. --- 51,60 ---- ... advice sample

      !

    Containers

    Switch: _GLIBCXX_PROFILE_CONTAINERS. !

    Hashtable Too Small

    • Switch: _GLIBCXX_PROFILE_HASHTABLE_TOO_SMALL.

    • Goal: Detect hashtables with many rehash operations, small construction size and large destruction size. *************** advice sample *** 81,87 **** foo.cc:1: advice: Changing initial unordered_set size from 10 to 1000000 saves 1025530 rehash operations.

      !

    Hashtable Too Large

    • Switch: _GLIBCXX_PROFILE_HASHTABLE_TOO_LARGE.

    • Goal: Detect hashtables which are never filled up because fewer elements than reserved are ever --- 80,86 ---- foo.cc:1: advice: Changing initial unordered_set size from 10 to 1000000 saves 1025530 rehash operations.

      !

    Hashtable Too Large

    • Switch: _GLIBCXX_PROFILE_HASHTABLE_TOO_LARGE.

    • Goal: Detect hashtables which are never filled up because fewer elements than reserved are ever *************** foo.cc:1: advice: Changing initial unord *** 110,116 **** foo.cc:1: advice: Changing initial unordered_set size from 100 to 10 saves N bytes of memory and M iteration steps.

      !

    Inefficient Hash

    • Switch: _GLIBCXX_PROFILE_INEFFICIENT_HASH.

    • Goal: Detect hashtables with polarized distribution. --- 109,115 ---- foo.cc:1: advice: Changing initial unordered_set size from 100 to 10 saves N bytes of memory and M iteration steps.

      !

    Inefficient Hash

    • Switch: _GLIBCXX_PROFILE_INEFFICIENT_HASH.

    • Goal: Detect hashtables with polarized distribution. *************** class dumb_hash { *** 141,147 **** hs.find(i); }

      !

    Vector Too Small

    • Switch: _GLIBCXX_PROFILE_VECTOR_TOO_SMALL.

    • Goal:Detect vectors with many resize operations, small construction size and large destruction size.. --- 140,146 ---- hs.find(i); }

      !

    Vector Too Small

    • Switch: _GLIBCXX_PROFILE_VECTOR_TOO_SMALL.

    • Goal:Detect vectors with many resize operations, small construction size and large destruction size.. *************** class dumb_hash { *** 166,172 **** foo.cc:1: advice: Changing initial vector size from 10 to 1000000 saves copying 4000000 bytes and 20 memory allocations and deallocations.

      !

    Vector Too Large

    • Switch: _GLIBCXX_PROFILE_VECTOR_TOO_LARGE

    • Goal:Detect vectors which are never filled up because fewer elements than reserved are ever --- 165,171 ---- foo.cc:1: advice: Changing initial vector size from 10 to 1000000 saves copying 4000000 bytes and 20 memory allocations and deallocations.

      !

    Vector Too Large

    • Switch: _GLIBCXX_PROFILE_VECTOR_TOO_LARGE

    • Goal:Detect vectors which are never filled up because fewer elements than reserved are ever *************** copying 4000000 bytes and 20 memory allo *** 192,198 **** foo.cc:1: advice: Changing initial vector size from 100 to 10 saves N bytes of memory and may reduce the number of cache and TLB misses.

      !

    Vector to Hashtable

    • Switch: _GLIBCXX_PROFILE_VECTOR_TO_HASHTABLE.

    • Goal: Detect uses of vector that can be substituted with unordered_set --- 191,197 ---- foo.cc:1: advice: Changing initial vector size from 100 to 10 saves N bytes of memory and may reduce the number of cache and TLB misses.

      !

    Vector to Hashtable

    • Switch: _GLIBCXX_PROFILE_VECTOR_TO_HASHTABLE.

    • Goal: Detect uses of vector that can be substituted with unordered_set *************** bytes of memory and may reduce the numbe *** 223,229 **** foo.cc:1: advice: Changing "vector" to "unordered_set" will save about 500,000 comparisons.

      !

    Hashtable to Vector

    • Switch: _GLIBCXX_PROFILE_HASHTABLE_TO_VECTOR.

    • Goal: Detect uses of unordered_set that can be substituted with vector --- 222,228 ---- foo.cc:1: advice: Changing "vector" to "unordered_set" will save about 500,000 comparisons.

      !

    Hashtable to Vector

    • Switch: _GLIBCXX_PROFILE_HASHTABLE_TO_VECTOR.

    • Goal: Detect uses of unordered_set that can be substituted with vector *************** comparisons. *** 252,258 **** foo.cc:1: advice: Changing "unordered_set" to "vector" will save about N indirections and may achieve better data locality.

      !

    Vector to List

    • Switch: _GLIBCXX_PROFILE_VECTOR_TO_LIST.

    • Goal: Detect cases where vector could be substituted with list for --- 251,257 ---- foo.cc:1: advice: Changing "unordered_set" to "vector" will save about N indirections and may achieve better data locality.

      !

    Vector to List

    • Switch: _GLIBCXX_PROFILE_VECTOR_TO_LIST.

    • Goal: Detect cases where vector could be substituted with list for *************** indirections and may achieve better data *** 282,288 **** foo.cc:1: advice: Changing "vector" to "list" will save about 5,000,000 operations.

      !

    List to Vector

    • Switch: _GLIBCXX_PROFILE_LIST_TO_VECTOR.

    • Goal: Detect cases where list could be substituted with vector for --- 281,287 ---- foo.cc:1: advice: Changing "vector" to "list" will save about 5,000,000 operations.

      !

    List to Vector

    • Switch: _GLIBCXX_PROFILE_LIST_TO_VECTOR.

    • Goal: Detect cases where list could be substituted with vector for *************** operations. *** 309,315 **** foo.cc:1: advice: Changing "list" to "vector" will save about 1000000 indirect memory references.

      !

    List to Forward List (Slist)

    • Switch: _GLIBCXX_PROFILE_LIST_TO_SLIST.

    • Goal: Detect cases where list could be substituted with forward_list for --- 308,314 ---- foo.cc:1: advice: Changing "list" to "vector" will save about 1000000 indirect memory references.

      !

    List to Forward List (Slist)

    • Switch: _GLIBCXX_PROFILE_LIST_TO_SLIST.

    • Goal: Detect cases where list could be substituted with forward_list for *************** memory references. *** 339,345 **** foo.cc:1: advice: Change "list" to "forward_list".

      !

    Ordered to Unordered Associative Container

    • Switch: _GLIBCXX_PROFILE_ORDERED_TO_UNORDERED.

    • Goal: Detect cases where ordered associative containers can be replaced with unordered ones. --- 338,344 ---- foo.cc:1: advice: Change "list" to "forward_list".

      !

    Ordered to Unordered Associative Container

    • Switch: _GLIBCXX_PROFILE_ORDERED_TO_UNORDERED.

    • Goal: Detect cases where ordered associative containers can be replaced with unordered ones. *************** foo.cc:1: advice: Change "list" to "forw *** 366,381 **** 7 sum += *s.find(i); 8 }

      !

    Algorithms

    Switch: _GLIBCXX_PROFILE_ALGORITHMS. !

    Sort Algorithm Performance

    Algorithms

    Switch: _GLIBCXX_PROFILE_ALGORITHMS. !

    Sort Algorithm Performance

    Data Locality

    Switch: _GLIBCXX_PROFILE_LOCALITY. !

    Need Software Prefetch

    • Switch: _GLIBCXX_PROFILE_SOFTWARE_PREFETCH.

    • Goal: Discover sequences of indirect memory accesses that are not regular, thus cannot be predicted by --- 388,396 ---- Runtime(algo) for algo in [radix, quick, merge, ...]

    • Example:

        

      !

    Data Locality

    Switch: _GLIBCXX_PROFILE_LOCALITY. !

    Need Software Prefetch

    • Switch: _GLIBCXX_PROFILE_SOFTWARE_PREFETCH.

    • Goal: Discover sequences of indirect memory accesses that are not regular, thus cannot be predicted by *************** foo.cc:1: advice: Change "list" to "forw *** 434,440 **** foo.cc:7: advice: Insert prefetch instruction.

      !

    Linked Structure Locality

    • Switch: _GLIBCXX_PROFILE_RBTREE_LOCALITY.

    • Goal: Give measure of locality of objects stored in linked structures (lists, red-black trees and hashtables) --- 433,439 ---- foo.cc:7: advice: Insert prefetch instruction.

      !

    Linked Structure Locality

    • Switch: _GLIBCXX_PROFILE_RBTREE_LOCALITY.

    • Goal: Give measure of locality of objects stored in linked structures (lists, red-black trees and hashtables) *************** foo.cc:7: advice: Insert prefetch instru *** 479,491 **** foo.cc:5: advice: High scatter score NNN for set built here. Consider changing the allocation sequence or switching to a structure conscious allocator.

      !

    Multithreaded Data Access

    The diagnostics in this group are not meant to be implemented short term. They require compiler support to know when container elements are written to. Instrumentation can only tell us when elements are referenced.

    Switch: _GLIBCXX_PROFILE_MULTITHREADED. !

    Data Dependence Violations at Container Level

    • Switch: _GLIBCXX_PROFILE_DDTEST.

    • Goal: Detect container elements that are referenced from multiple threads in the parallel region or --- 478,490 ---- foo.cc:5: advice: High scatter score NNN for set built here. Consider changing the allocation sequence or switching to a structure conscious allocator.

      !

    Multithreaded Data Access

    The diagnostics in this group are not meant to be implemented short term. They require compiler support to know when container elements are written to. Instrumentation can only tell us when elements are referenced.

    Switch: _GLIBCXX_PROFILE_MULTITHREADED. !

    Data Dependence Violations at Container Level

    False Sharing

    • Switch: _GLIBCXX_PROFILE_FALSE_SHARING.

    • Goal: Detect elements in the same container which share a cache line, are written by at least one --- 508,514 ----

    • Example:

        

      !

    False Sharing

    • Switch: _GLIBCXX_PROFILE_FALSE_SHARING.

    • Goal: Detect elements in the same container which share a cache line, are written by at least one *************** OMP_NUM_THREADS=2 ./a.out *** 542,548 **** foo.cc:1: advice: Change container structure or padding to avoid false sharing in multithreaded access at foo.cc:4. Detected N shared cache lines.

      !

    Statistics

    Switch: _GLIBCXX_PROFILE_STATISTICS.

    --- 541,547 ---- foo.cc:1: advice: Change container structure or padding to avoid false sharing in multithreaded access at foo.cc:4. Detected N shared cache lines.

    !

    Statistics

    Switch: _GLIBCXX_PROFILE_STATISTICS.

    *************** sharing in multithreaded access at foo.c *** 555,558 **** This diagnostic will not issue any advice, but it will print statistics for each container construction site. The statistics will contain the cost of each operation actually performed on the container. !

    --- 554,557 ---- This diagnostic will not issue any advice, but it will print statistics for each container construction site. The statistics will contain the cost of each operation actually performed on the container. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch20s02.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch20s02.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch20s02.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch20s02.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Design Issues

    Design Issues

    Overview

    There are three general components to the allocator: a datum describing the characteristics of the memory pool, a policy class containing this pool that links instantiation types to common or individual pools, and a class inheriting from the policy class that is --- 1,5 ---- ! Design Issues

    Design Issues

    Overview

    There are three general components to the allocator: a datum describing the characteristics of the memory pool, a policy class containing this pool that links instantiation types to common or individual pools, and a class inheriting from the policy class that is *************** tuning, for instance. *** 36,39 ****

    This class has the interface required for standard library allocator classes, namely member functions allocate and deallocate, plus others. !

    --- 35,38 ----

    This class has the interface required for standard library allocator classes, namely member functions allocate and deallocate, plus others. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch20s03.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch20s03.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch20s03.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch20s03.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Implementation

    Implementation

    Tunable Parameters

    Certain allocation parameters can be modified, or tuned. There exists a nested struct __pool_base::_Tune that contains all these parameters, which include settings for !

    • Alignment

    • Maximum bytes before calling ::operator new directly

    • Minimum bytes

    • Size of underlying global allocations

    • Maximum number of supported threads

    • Migration of deallocations to the global free list

    • Shunt for global new and delete

    Adjusting parameters for a given instance of an allocator can only happen before any allocations take place, when the allocator itself is initialized. For instance:

    --- 1,8 ----
      
    ! Implementation

    Implementation

    Tunable Parameters

    Certain allocation parameters can be modified, or tuned. There exists a nested struct __pool_base::_Tune that contains all these parameters, which include settings for !

    • Alignment

    • Maximum bytes before calling ::operator new directly

    • Minimum bytes

    • Size of underlying global allocations

    • Maximum number of supported threads

    • Migration of deallocations to the global free list

    • Shunt for global new and delete

    Adjusting parameters for a given instance of an allocator can only happen before any allocations take place, when the allocator itself is initialized. For instance:

    *************** int main()
    *** 39,45 ****
      
        return 0;
      }
    ! 

    Initialization

    The static variables (pointers to freelists, tuning parameters etc) are initialized as above, or are set to the global defaults.

    --- 38,44 ---- return 0; } !

    Initialization

    The static variables (pointers to freelists, tuning parameters etc) are initialized as above, or are set to the global defaults.

    *************** The _S_initialize() function: *** 131,137 **** for this specific bin. This only occurs when a number of blocks are grabbed from the global list to a thread specific list or when a thread decides to return some blocks to the global freelist. !

    Deallocation Notes

    Notes about deallocation. This allocator does not explicitly release memory. Because of this, memory debugging programs like valgrind or purify may notice leaks: sorry about this inconvenience. Operating systems will reclaim allocated memory at --- 130,136 ---- for this specific bin. This only occurs when a number of blocks are grabbed from the global list to a thread specific list or when a thread decides to return some blocks to the global freelist. !

    Deallocation Notes

    Notes about deallocation. This allocator does not explicitly release memory. Because of this, memory debugging programs like valgrind or purify may notice leaks: sorry about this inconvenience. Operating systems will reclaim allocated memory at *************** implementation-specific, and subject to *** 158,161 **** pool that frees memory, see the following example. !

    --- 157,160 ---- pool that frees memory, see the following example. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch20s04.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch20s04.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch20s04.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch20s04.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Single Thread Example

    Single Thread Example

    Let's start by describing how the data on a freelist is laid out in memory. This is the first two blocks in freelist for thread id 3 in bin 3 (8 bytes):

    --- 1,5 ----
      
    ! Single Thread Example

    Single Thread Example

    Let's start by describing how the data on a freelist is laid out in memory. This is the first two blocks in freelist for thread id 3 in bin 3 (8 bytes):

    *************** of the global freelist and update the po
    *** 76,79 ****
      The decision to add deallocated blocks to the front of the freelist was made
      after a set of performance measurements that showed that this is roughly 10%
      faster than maintaining a set of "last pointers" as well.
    ! 

    --- 75,78 ---- The decision to add deallocated blocks to the front of the freelist was made after a set of performance measurements that showed that this is roughly 10% faster than maintaining a set of "last pointers" as well. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch20s05.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch20s05.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch20s05.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch20s05.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Multiple Thread Example

    Multiple Thread Example

    In the ST example we never used the thread_id variable present in each block. Let's start by explaining the purpose of this in a MT application.

    --- 1,5 ---- ! Multiple Thread Example

    Multiple Thread Example

    In the ST example we never used the thread_id variable present in each block. Let's start by explaining the purpose of this in a MT application.

    *************** mutex to be locked) this operation is al *** 104,107 **** a threads freelist mentioned above). The "formula" used can probably be improved to further reduce the risk of blocks being "bounced back and forth" between freelists. !

    --- 103,106 ---- a threads freelist mentioned above). The "formula" used can probably be improved to further reduce the risk of blocks being "bounced back and forth" between freelists. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Implementation

    Implementation

    Free List Store

    The Free List Store (referred to as FLS for the remaining part of this document) is the Global memory pool that is shared by all instances of the bitmapped allocator instantiated for any type. This maintains a --- 1,5 ---- ! Implementation

    Implementation

    Free List Store

    The Free List Store (referred to as FLS for the remaining part of this document) is the Global memory pool that is shared by all instances of the bitmapped allocator instantiated for any type. This maintains a *************** by a percentage of less than some THRESH *** 48,54 **** else return false.

    Currently, (3) is being used with a value of 36% Maximum wastage per Super Block. !

    Super Block

    A super block is the block of memory acquired from the FLS from which the bitmap allocator carves out memory for single objects and satisfies the user's requests. These super blocks come in --- 47,53 ---- else return false.

    Currently, (3) is being used with a value of 36% Maximum wastage per Super Block. !

    Super Block

    A super block is the block of memory acquired from the FLS from which the bitmap allocator carves out memory for single objects and satisfies the user's requests. These super blocks come in *************** else return false.

    Super Block Data Layout

    Each Super Block will be of some size that is a multiple of the number of Bits Per Block. Typically, this value is chosen as Bits_Per_Byte x sizeof(size_t). On an x86 system, this gives the --- 62,68 ---- The super block is contained in the FLS, and the FLS is responsible for getting / returning Super Bocks to and from the OS using operator new as defined by the C++ standard. !

    Super Block Data Layout

    Each Super Block will be of some size that is a multiple of the number of Bits Per Block. Typically, this value is chosen as Bits_Per_Byte x sizeof(size_t). On an x86 system, this gives the *************** else return false.

    Consider a block of size 64 ints. In memory, it would look like this: (assume a 32-bit system where, size_t is a 32-bit entity). !

    Table 21.1. Bitmap Allocator Memory Map

    268042949672954294967295Data -> Space for 64 ints

    The first Column(268) represents the size of the Block in bytes as seen by the Bitmap Allocator. Internally, a global free list is used to keep track of the free blocks used and given back by the --- 75,81 ----

    Consider a block of size 64 ints. In memory, it would look like this: (assume a 32-bit system where, size_t is a 32-bit entity). !

    Table 21.1. Bitmap Allocator Memory Map

    268042949672954294967295Data -> Space for 64 ints

    The first Column(268) represents the size of the Block in bytes as seen by the Bitmap Allocator. Internally, a global free list is used to keep track of the free blocks used and given back by the *************** else return false.

    Maximum Wasted Percentage

    This has nothing to do with the algorithm per-se, only with some vales that must be chosen correctly to ensure that the allocator performs well in a real word scenario, and maintains a good --- 102,108 ---- The 3rd 4x2 is size of the bitmap itself, which is the size of 32-bits x 2, which is 8-bytes, or 2 x sizeof(size_t). !

    Maximum Wasted Percentage

    This has nothing to do with the algorithm per-se, only with some vales that must be chosen correctly to ensure that the allocator performs well in a real word scenario, and maintains a good *************** For map/multimap: k = 12, and c = 4 (int *** 128,134 ****

    Thus, knowing these values, and based on the sizeof(value_type), we may create a function that returns the Max_Wastage_Percentage for us to use. !

    allocate

    The allocate function is specialized for single object allocation ONLY. Thus, ONLY if n == 1, will the bitmap_allocator's specialized algorithm be used. Otherwise, the request is satisfied --- 127,133 ----

    Thus, knowing these values, and based on the sizeof(value_type), we may create a function that returns the Max_Wastage_Percentage for us to use. !

    allocate

    The allocate function is specialized for single object allocation ONLY. Thus, ONLY if n == 1, will the bitmap_allocator's specialized algorithm be used. Otherwise, the request is satisfied *************** For map/multimap: k = 12, and c = 4 (int *** 148,154 ****

  • Is there any block in whatever region of memory that we own free? This is done by checking !

    • The use count for each super block, and if that fails then

    • The individual bit-maps for each super block. --- 147,153 ----

    • Is there any block in whatever region of memory that we own free? This is done by checking !

      • The use count for each super block, and if that fails then

      • The individual bit-maps for each super block. *************** For map/multimap: k = 12, and c = 4 (int *** 163,169 **** This process involves Refilling the internal exponentially growing memory pool. The said effect is achieved by calling _S_refill_pool which does the following: !

        • Gets more memory from the Global Free List of the Required size.

        • --- 162,168 ---- This process involves Refilling the internal exponentially growing memory pool. The said effect is achieved by calling _S_refill_pool which does the following: !

          • Gets more memory from the Global Free List of the Required size.

          • *************** For map/multimap: k = 12, and c = 4 (int *** 183,189 **** Thus, you can clearly see that the allocate function is nothing but a combination of the next-fit and first-fit algorithm optimized ONLY for single object allocations. !

          deallocate

          The deallocate function again is specialized for single objects ONLY. For all n belonging to > 1, the operator delete is called without further ado, and the deallocate function returns. --- 182,188 ---- Thus, you can clearly see that the allocate function is nothing but a combination of the next-fit and first-fit algorithm optimized ONLY for single object allocations. !

          deallocate

          The deallocate function again is specialized for single objects ONLY. For all n belonging to > 1, the operator delete is called without further ado, and the deallocate function returns. *************** single object allocations. *** 214,220 **** the vector. While doing this, we also make sure that the basic invariant is maintained by making sure that _S_last_request and _S_last_dealloc_index point to valid locations within the vector. !

          Questions

          1

          Q1) The "Data Layout" section is cryptic. I have no idea of what you are trying to say. Layout of what? The free-list? Each bitmap? The Super Block? --- 213,219 ---- the vector. While doing this, we also make sure that the basic invariant is maintained by making sure that _S_last_request and _S_last_dealloc_index point to valid locations within the vector. !

          Questions

          1

          Q1) The "Data Layout" section is cryptic. I have no idea of what you are trying to say. Layout of what? The free-list? Each bitmap? The Super Block? *************** size. In the example, a super block of s *** 224,230 **** general formula for calculating the size of a super block is 32 x sizeof(value_type) x 2^n, where n ranges from 0 to 32 for 32-bit systems. !

          2

          And since I just mentioned the term `each bitmap', what in the world is meant by it? What does each bitmap manage? How does it relate to the super block? Is the Super --- 223,229 ---- general formula for calculating the size of a super block is 32 x sizeof(value_type) x 2^n, where n ranges from 0 to 32 for 32-bit systems. !

          2

          And since I just mentioned the term `each bitmap', what in the world is meant by it? What does each bitmap manage? How does it relate to the super block? Is the Super *************** Block a bitmap as well? *** 241,247 **** blocks' status. Each bit-map is made up of a number of size_t, whose exact number for a super-block of a given size I have just mentioned. !

          3

          How do the allocate and deallocate functions work in regard to bitmaps?

          --- 240,246 ---- blocks' status. Each bit-map is made up of a number of size_t, whose exact number for a super-block of a given size I have just mentioned. !

          3

          How do the allocate and deallocate functions work in regard to bitmaps?

          *************** Block a bitmap as well? *** 270,276 ****

          The bit-map now looks like this: 1111111111111111111111111111111111111111111111111111111111111110 !

          Locality

          Another issue would be whether to keep the all bitmaps in a separate area in memory, or to keep them near the actual blocks that will be given out or allocated for the client. After some --- 269,275 ----

          The bit-map now looks like this: 1111111111111111111111111111111111111111111111111111111111111110 !

          Locality

          Another issue would be whether to keep the all bitmaps in a separate area in memory, or to keep them near the actual blocks that will be given out or allocated for the client. After some *************** equivalent.

        Overhead and Grow Policy

        Expected overhead per block would be 1 bit in memory. Also, once the address of the free list has been found, the cost for allocation/deallocation would be negligible, and is supposed to be --- 286,292 ---- new_allocator's book keeping overhead is too much for small objects and single object allocations, though it preserves the locality of blocks very well when they are returned back to the allocator. !

        Overhead and Grow Policy

        Expected overhead per block would be 1 bit in memory. Also, once the address of the free list has been found, the cost for allocation/deallocation would be negligible, and is supposed to be *************** equivalent.

    --- 309,312 ---- sizeof(size_t) x 8 which is the number of bits in an integer, which can fit exactly in a CPU register. Hence, the term given is exponential growth of the internal pool. !

  • \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch23s02.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch23s02.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch23s02.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch23s02.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Deprecated

    Deprecated

    The SGI hashing classes hash_set and hash_set have been deprecated by the unordered_set, unordered_multiset, unordered_map, --- 1,5 ---- ! Deprecated

    Deprecated

    The SGI hashing classes hash_set and hash_set have been deprecated by the unordered_set, unordered_multiset, unordered_map, *************** *** 56,59 **** associative containers defined in the ISO C++ 2011 standard in the headers <unordered_map> and <unordered_set>. !

    --- 55,58 ---- associative containers defined in the ISO C++ 2011 standard in the headers <unordered_map> and <unordered_set>. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch30s02.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch30s02.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch30s02.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch30s02.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Implementation

    Implementation

    Using Builtin Atomic Functions

    The functions for atomic operations described above are either implemented via compiler intrinsics (if the underlying host is capable) or by library fallbacks.

    Compiler intrinsics (builtins) are always preferred. However, as the compiler builtins for atomics are not universally implemented, --- 1,5 ---- ! Implementation

    Implementation

    Using Builtin Atomic Functions

    The functions for atomic operations described above are either implemented via compiler intrinsics (if the underlying host is capable) or by library fallbacks.

    Compiler intrinsics (builtins) are always preferred. However, as the compiler builtins for atomics are not universally implemented, *************** If builtins are possible for bool-sized *** 22,35 **** If builtins are possible for int-sized integral types, ATOMIC_INT_LOCK_FREE will be defined.

    For the following hosts, intrinsics are enabled by default. !

    • alpha

    • ia64

    • powerpc

    • s390

    For others, some form of -march may work. On non-ancient x86 hardware, -march=native usually does the trick.

    For hosts without compiler intrinsics, but with capable hardware, hand-crafted assembly is selected. This is the case for the following hosts: !

    • cris

    • hppa

    • i386

    • i486

    • m48k

    • mips

    • sparc

    And for the rest, a simulated atomic lock via pthreads.

    Detailed information about compiler intrinsics for atomic operations can be found in the GCC documentation.

    More details on the library fallbacks from the porting section. !

    Thread Abstraction

    A thin layer above IEEE 1003.1 (i.e. pthreads) is used to abstract the thread interface for GCC. This layer is called "gthread," and is comprised of one header file that wraps the host's default thread layer with a POSIX-like interface. --- 21,34 ---- If builtins are possible for int-sized integral types, ATOMIC_INT_LOCK_FREE will be defined.

    For the following hosts, intrinsics are enabled by default. !

    • alpha

    • ia64

    • powerpc

    • s390

    For others, some form of -march may work. On non-ancient x86 hardware, -march=native usually does the trick.

    For hosts without compiler intrinsics, but with capable hardware, hand-crafted assembly is selected. This is the case for the following hosts: !

    • cris

    • hppa

    • i386

    • i486

    • m48k

    • mips

    • sparc

    And for the rest, a simulated atomic lock via pthreads.

    Detailed information about compiler intrinsics for atomic operations can be found in the GCC documentation.

    More details on the library fallbacks from the porting section. !

    Thread Abstraction

    A thin layer above IEEE 1003.1 (i.e. pthreads) is used to abstract the thread interface for GCC. This layer is called "gthread," and is comprised of one header file that wraps the host's default thread layer with a POSIX-like interface. *************** use this layer. More detail as to the sp *** 42,45 **** functions, and usage found in the usual <pthread.h> file, including pthread_t, pthread_once_t, pthread_create, etc. !

    --- 41,44 ---- functions, and usage found in the usual <pthread.h> file, including pthread_t, pthread_once_t, pthread_create, etc. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch30s03.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch30s03.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03ch30s03.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03ch30s03.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Use

    Use

    Typical usage of the last two constructs is demonstrated as follows:

      #include <ext/concurrence.h>
      
    --- 1,5 ----
      
    ! Use

    Use

    Typical usage of the last two constructs is demonstrated as follows:

      #include <ext/concurrence.h>
      
    *************** are: __concurrence_lo
    *** 33,36 ****
      and __concurrence_broadcast_error.
      

    --- 32,35 ---- and __concurrence_broadcast_error.

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03pr01.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03pr01.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt03pr01.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt03pr01.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! !

    Here we will make an attempt at describing the non-Standard extensions to the library. Some of these are from older versions of standard library components, namely SGI's STL, and some of these are --- 1,8 ---- !

    Here we will make an attempt at describing the non-Standard extensions to the library. Some of these are from older versions of standard library components, namely SGI's STL, and some of these are *************** extensions, be aware of two things: *** 24,27 ****

    --- 23,26 ----

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt04.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt04.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bk01pt04.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bk01pt04.html Tue Nov 5 21:26:53 2013 *************** *** 1,10 **** ! ! Part IV.  Appendices \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/bugs.html gcc-4.7.4/libstdc++-v3/doc/html/manual/bugs.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/bugs.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/bugs.html Tue Nov 5 21:26:53 2013 *************** *** 1,10 **** ! ! Bugs

    Bugs

    Implementation Bugs

    Information on known bugs, details on efforts to fix them, and fixed bugs are all available as part of the GCC bug tracking system, with the category set to libstdc++. !

    Standard Bugs

    Everybody's got issues. Even the C++ Standard Library.

    The Library Working Group, or LWG, is the ISO subcommittee responsible --- 1,9 ---- ! Bugs

    Bugs

    Implementation Bugs

    Information on known bugs, details on efforts to fix them, and fixed bugs are all available as part of the GCC bug tracking system, with the category set to libstdc++. !

    Standard Bugs

    Everybody's got issues. Even the C++ Standard Library.

    The Library Working Group, or LWG, is the ISO subcommittee responsible *************** *** 35,41 **** _GLIBCXX_RESOLVE_LIB_DEFECTS for examples of style. Note that we usually do not make changes to the code until an issue has reached DR status. !

    5: string::compare specification questionable

    This should be two overloaded functions rather than a single function.

    17: --- 34,40 ---- _GLIBCXX_RESOLVE_LIB_DEFECTS for examples of style. Note that we usually do not make changes to the code until an issue has reached DR status. !

    5: string::compare specification questionable

    This should be two overloaded functions rather than a single function.

    17: *************** *** 349,352 **** More algorithms that throw away information

    The traditional HP / SGI return type and value is blessed by the resolution of the DR. !

    --- 348,351 ---- More algorithms that throw away information

    The traditional HP / SGI return type and value is blessed by the resolution of the DR. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/concurrency.html gcc-4.7.4/libstdc++-v3/doc/html/manual/concurrency.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/concurrency.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/concurrency.html Tue Nov 5 21:26:53 2013 *************** *** 1,16 **** ! ! Chapter 15.  Concurrency

    Chapter 15.  Concurrency ! !

    Table of Contents

    API Reference

    Facilities for concurrent operation, and control thereof. !

    API Reference

    All items are declared in one of four standard header files.

    In header mutex, class --- 1,15 ---- ! Chapter 15.  Concurrency

    Chapter 15.  Concurrency ! !

    Table of Contents

    API Reference

    Facilities for concurrent operation, and control thereof. !

    API Reference

    All items are declared in one of four standard header files.

    In header mutex, class *************** *** 39,42 ****  Home Part III.  Extensions !

    --- 38,41 ----  Home Part III.  Extensions !
    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/configure.html gcc-4.7.4/libstdc++-v3/doc/html/manual/configure.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/configure.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/configure.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Configure

    Configure

    When configuring libstdc++, you'll have to configure the entire gccsrcdir directory. Consider using the toplevel gcc configuration option --- 1,5 ---- ! Configure

    Configure

    When configuring libstdc++, you'll have to configure the entire gccsrcdir directory. Consider using the toplevel gcc configuration option *************** *** 18,24 ****

    The canonical way to find out the configure options that are available for a given set of libstdc++ sources is to go to the source directory and then type:./configure --help. !

    --enable-multilib[default]

    This is part of the generic multilib support for building cross compilers. As such, targets like "powerpc-elf" will have libstdc++ built many different ways: "-msoft-float" and not, etc. A different libstdc++ will be built for each of --- 17,23 ----

    The canonical way to find out the configure options that are available for a given set of libstdc++ sources is to go to the source directory and then type:./configure --help. !

    --enable-multilib[default]

    This is part of the generic multilib support for building cross compilers. As such, targets like "powerpc-elf" will have libstdc++ built many different ways: "-msoft-float" and not, etc. A different libstdc++ will be built for each of *************** *** 215,218 **** freestanding environment, in which only a minimal set of headers are provided. This option builds such an environment. !

    --- 214,217 ---- freestanding environment, in which only a minimal set of headers are provided. This option builds such an environment. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/containers.html gcc-4.7.4/libstdc++-v3/doc/html/manual/containers.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/containers.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/containers.html Tue Nov 5 21:26:53 2013 *************** *** 1,14 **** ! ! Chapter 9.  Containers

    Chapter 9.  Containers ! !

    Sequences

    list

    list::size() is O(n)

    Yes it is, and that's okay. This is a decision that we preserved when we imported SGI's STL implementation. The following is quoted from their FAQ: --- 1,13 ---- ! Chapter 9.  Containers

    Chapter 9.  Containers ! !

    Sequences

    list

    list::size() is O(n)

    Yes it is, and that's okay. This is a decision that we preserved when we imported SGI's STL implementation. The following is quoted from their FAQ: *************** *** 42,49 ****

      	 if (L.empty())
      	     ...
    ! 	 

    vector

    !

    Space Overhead Management

    In this message to the list, Daniel Kostecky announced work on an alternate form of std::vector that would support --- 41,48 ----

      	 if (L.empty())
      	     ...
    ! 	 

    vector

    !

    Space Overhead Management

    In this message to the list, Daniel Kostecky announced work on an alternate form of std::vector that would support *************** *** 52,55 ****

    The first two alpha releases were announced here and here. !

    --- 51,54 ----

    The first two alpha releases were announced here and here. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/containers_and_c.html gcc-4.7.4/libstdc++-v3/doc/html/manual/containers_and_c.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/containers_and_c.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/containers_and_c.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Interacting with C

    Interacting with C

    Containers vs. Arrays

    You're writing some code and can't decide whether to use builtin arrays or some kind of container. There are compelling reasons to use one of the container classes, but you're afraid that --- 1,8 ---- ! Interacting with C

    Interacting with C

    Containers vs. Arrays

    You're writing some code and can't decide whether to use builtin arrays or some kind of container. There are compelling reasons to use one of the container classes, but you're afraid that *************** template<typename T, unsigned int sz& *** 87,90 ****

    --- 86,89 ----

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/debug.html gcc-4.7.4/libstdc++-v3/doc/html/manual/debug.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/debug.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/debug.html Tue Nov 5 21:26:53 2013 *************** *** 1,10 **** ! ! Debugging Support

    Debugging Support

    There are numerous things that can be done to improve the ease with which C++ binaries are debugged when using the GNU tool chain. Here are some of them. !

    Using g++

    Compiler flags determine how debug information is transmitted between compilation and debug or analysis tools.

    --- 1,9 ---- ! Debugging Support

    Debugging Support

    There are numerous things that can be done to improve the ease with which C++ binaries are debugged when using the GNU tool chain. Here are some of them. !

    Using g++

    Compiler flags determine how debug information is transmitted between compilation and debug or analysis tools.

    *************** *** 31,37 **** Many other options are available: please see "Options for Debugging Your Program" in Using the GNU Compiler Collection (GCC) for a complete list. !

    Debug Versions of Library Binary Files

    If you would like debug symbols in libstdc++, there are two ways to build libstdc++ with debug flags. The first is to run make from the toplevel in a freshly-configured tree with --- 30,36 ---- Many other options are available: please see "Options for Debugging Your Program" in Using the GNU Compiler Collection (GCC) for a complete list. !

    Debug Versions of Library Binary Files

    If you would like debug symbols in libstdc++, there are two ways to build libstdc++ with debug flags. The first is to run make from the toplevel in a freshly-configured tree with *************** *** 52,58 ****

    This quick and dirty approach is often sufficient for quick debugging tasks, when you cannot or don't want to recompile your ! application to use the debug mode.

    Memory Leak Hunting

    There are various third party memory tracing and debug utilities that can be used to provide detailed memory allocation information about C++ code. An exhaustive list of tools is not going to be --- 51,57 ----

    This quick and dirty approach is often sufficient for quick debugging tasks, when you cannot or don't want to recompile your ! application to use the debug mode.

    Memory Leak Hunting

    There are various third party memory tracing and debug utilities that can be used to provide detailed memory allocation information about C++ code. An exhaustive list of tools is not going to be *************** *** 121,127 **** up the runtime environment, library, and test file, might be:

         valgrind -v --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes a.out
    ! 

    Data Race Hunting

    All synchronization primitives used in the library internals need to be understood by race detectors so that they do not produce false reports.

    --- 120,126 ---- up the runtime environment, library, and test file, might be:

         valgrind -v --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes a.out
    ! 

    Data Race Hunting

    All synchronization primitives used in the library internals need to be understood by race detectors so that they do not produce false reports.

    *************** *** 161,167 **** DRD, Helgrind, and ! ThreadSanitizer.

    With DRD, Helgrind and ThreadSanitizer you will need to define --- 160,166 ---- DRD, Helgrind, and ! ThreadSanitizer.

    With DRD, Helgrind and ThreadSanitizer you will need to define *************** *** 171,177 **** #define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) ANNOTATE_HAPPENS_AFTER(A)

    Refer to the documentation of each particular tool for details. !

    Using gdb

    Many options are available for GDB itself: please see "GDB features for C++" in the GDB documentation. Also --- 170,176 ---- #define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) ANNOTATE_HAPPENS_AFTER(A)

    Refer to the documentation of each particular tool for details. !

    Using gdb

    Many options are available for GDB itself: please see "GDB features for C++" in the GDB documentation. Also *************** *** 224,241 **** on-line versions of the GDB user manual in GDB's homepage, at "GDB: The GNU Project Debugger" . !

    Tracking uncaught exceptions

    The verbose termination handler gives information about uncaught exceptions which are killing the program. It is described in the linked-to page. !

    Debug Mode

    The Debug Mode has compile and run-time checks for many containers. !

    Compile Time Checking

    The Compile-Time Checks Extension has compile-time checks for many algorithms. !

    Profile-based Performance Analysis

    The Profile-based Performance Analysis Extension has performance checks for many algorithms.

    --- 223,240 ---- on-line versions of the GDB user manual in GDB's homepage, at "GDB: The GNU Project Debugger" . !

    Tracking uncaught exceptions

    The verbose termination handler gives information about uncaught exceptions which are killing the program. It is described in the linked-to page. !

    Debug Mode

    The Debug Mode has compile and run-time checks for many containers. !

    Compile Time Checking

    The Compile-Time Checks Extension has compile-time checks for many algorithms. !

    Profile-based Performance Analysis

    The Profile-based Performance Analysis Extension has performance checks for many algorithms.

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/debug_mode.html gcc-4.7.4/libstdc++-v3/doc/html/manual/debug_mode.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/debug_mode.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/debug_mode.html Tue Nov 5 21:26:53 2013 *************** *** 1,10 **** ! ! Chapter 17. Debug Mode

    Chapter 17. Debug Mode

    Intro

    By default, libstdc++ is built with efficiency in mind, and therefore performs little or no error checking that is not required by the C++ standard. This means that programs that --- 1,9 ---- ! Chapter 17. Debug Mode

    Chapter 17. Debug Mode

    Intro

    By default, libstdc++ is built with efficiency in mind, and therefore performs little or no error checking that is not required by the C++ standard. This means that programs that *************** *** 21,27 **** The libstdc++ debug mode performs checking for many areas of the C++ standard, but the focus is on checking interactions among standard iterators, containers, and algorithms, including: !

    • Safe iterators: Iterators keep track of the container whose elements they reference, so errors such as incrementing a past-the-end iterator or dereferencing an iterator that points to a container that has been destructed are diagnosed --- 20,26 ---- The libstdc++ debug mode performs checking for many areas of the C++ standard, but the focus is on checking interactions among standard iterators, containers, and algorithms, including: !

      • Safe iterators: Iterators keep track of the container whose elements they reference, so errors such as incrementing a past-the-end iterator or dereferencing an iterator that points to a container that has been destructed are diagnosed *************** *** 35,38 **** the same predicate that was passed to set_intersection; the libstdc++ debug mode will detect an error if the sequence is not sorted or was sorted by a ! different predicate.

    --- 34,37 ---- the same predicate that was passed to set_intersection; the libstdc++ debug mode will detect an error if the sequence is not sorted or was sorted by a ! different predicate.

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/diagnostics.html gcc-4.7.4/libstdc++-v3/doc/html/manual/diagnostics.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/diagnostics.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/diagnostics.html Tue Nov 5 21:26:53 2013 *************** *** 1,14 **** ! ! Chapter 5.  Diagnostics

    Chapter 5.  Diagnostics ! !

    Exceptions

    API Reference

    All exception objects are defined in one of the standard header files: exception, stdexcept, new, and --- 1,13 ---- ! Chapter 5.  Diagnostics

    Chapter 5.  Diagnostics ! !

    Exceptions

    API Reference

    All exception objects are defined in one of the standard header files: exception, stdexcept, new, and *************** *** 23,29 **** found in the source documentation.

    Full API details. !

    Adding Data to exception

    The standard exception classes carry with them a single string as data (usually describing what went wrong or where the 'throw' took place). It's good to remember that you can add your own data to --- 22,28 ---- found in the source documentation.

    Full API details. !

    Adding Data to exception

    The standard exception classes carry with them a single string as data (usually describing what went wrong or where the 'throw' took place). It's good to remember that you can add your own data to *************** *** 40,43 **** int e; DBID id; // some user-defined type }; !

    --- 39,42 ---- int e; DBID id; // some user-defined type }; !
    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/documentation_hacking.html gcc-4.7.4/libstdc++-v3/doc/html/manual/documentation_hacking.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/documentation_hacking.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/documentation_hacking.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Writing and Generating Documentation

    Writing and Generating Documentation

    Introduction

    Documentation for the GNU C++ Library is created from three independent sources: a manual, a FAQ, and an API reference.

    --- 1,8 ---- ! Writing and Generating Documentation

    Writing and Generating Documentation

    Introduction

    Documentation for the GNU C++ Library is created from three independent sources: a manual, a FAQ, and an API reference.

    *************** *** 27,33 **** as per GNU Manuals. !

    Generating Documentation

    Certain Makefile rules are required by the GNU Coding Standards. These standard rules generate HTML, PDF, XML, or man files. For each of the generative rules, there is an additional --- 26,32 ---- as per GNU Manuals. !

    Generating Documentation

    Certain Makefile rules are required by the GNU Coding Standards. These standard rules generate HTML, PDF, XML, or man files. For each of the generative rules, there is an additional *************** *** 53,59 **** BUILD_PDF, and BUILD_EPUB.

    Supported Makefile rules: !

    make html , make install-html --- 52,58 ---- BUILD_PDF, and BUILD_EPUB.

    Supported Makefile rules: !

    make html , make install-html *************** *** 113,119 **** supported, and are always aliased to dummy rules. These unsupported formats are: info, ps, and dvi. !

    Doxygen

    Prerequisites

    Table B.1. Doxygen Prerequisites

    ToolVersionRequired By
    coreutils8.5all
    bash4.1all
    doxygen1.7.6.1all
    graphviz2.26graphical hierarchies
    pdflatex2007-59pdf output

    Prerequisite tools are Bash 2.0 or later, Doxygen, and the GNU --- 112,118 ---- supported, and are always aliased to dummy rules. These unsupported formats are: info, ps, and dvi. !

    Doxygen

    Prerequisites

    Table B.1. Doxygen Prerequisites

    ToolVersionRequired By
    coreutils8.5all
    bash4.1all
    doxygen1.7.6.1all
    graphviz2.26graphical hierarchies
    pdflatex2007-59pdf output

    Prerequisite tools are Bash 2.0 or later, Doxygen, and the GNU *************** *** 135,141 **** capacity. Specifically, the pool_size variable in the configuration file texmf.cnf may need to be increased by a minimum factor of two. !

    Generating the Doxygen Files

    The following Makefile rules run Doxygen to generate HTML docs, XML docs, XML docs as a single file, PDF docs, and the man pages. These rules are not conditional! If the required --- 134,140 ---- capacity. Specifically, the pool_size variable in the configuration file texmf.cnf may need to be increased by a minimum factor of two. !

    Generating the Doxygen Files

    The following Makefile rules run Doxygen to generate HTML docs, XML docs, XML docs as a single file, PDF docs, and the man pages. These rules are not conditional! If the required *************** *** 167,173 **** If you wish to tweak the Doxygen settings, do so by editing doc/doxygen/user.cfg.in. Notes to fellow library hackers are written in triple-# comments. !

    Debugging Generation

    Sometimes, mis-configuration of the pre-requisite tools can lead to errors when attempting to build the documentation. Here are some of the obvious errors, and ways --- 166,172 ---- If you wish to tweak the Doxygen settings, do so by editing doc/doxygen/user.cfg.in. Notes to fellow library hackers are written in triple-# comments. !

    Debugging Generation

    Sometimes, mis-configuration of the pre-requisite tools can lead to errors when attempting to build the documentation. Here are some of the obvious errors, and ways *************** *** 182,188 **** contents of the following build directory: build/target/libstdc++-v3/doc/doxygen/latex. Pay attention to three files enclosed within, annotated as follows. !

    • refman.tex

      The actual latex file, or partial latex file. This is generated --- 181,187 ---- contents of the following build directory: build/target/libstdc++-v3/doc/doxygen/latex. Pay attention to three files enclosed within, annotated as follows. !

      • refman.tex

        The actual latex file, or partial latex file. This is generated *************** *** 211,217 **** directories of header files, until the offending header is identified. Then, read the latex log files to try and find surround text, and look for that in the offending header. !

      Markup

      In general, libstdc++ files should be formatted according to the rules found in the Coding Standard. Before --- 210,216 ---- directories of header files, until the offending header is identified. Then, read the latex log files to try and find surround text, and look for that in the offending header. !

      Markup

      In general, libstdc++ files should be formatted according to the rules found in the Coding Standard. Before *************** *** 233,241 **** member functions.

      Some commentary to accompany ! the first list in the Special ! Documentation Blocks section of ! the Doxygen manual:

      1. For longer comments, use the Javadoc style...

      2. ...not the Qt style. The intermediate *'s are preferred.

      3. --- 232,239 ---- member functions.

        Some commentary to accompany ! the first list in the Special ! Documentation Blocks section of the Doxygen manual:

        1. For longer comments, use the Javadoc style...

        2. ...not the Qt style. The intermediate *'s are preferred.

        3. *************** *** 311,317 **** writing Doxygen comments. Single and double quotes, and separators in filenames are two common trouble spots. When in doubt, consult the following table. !

          Table B.2. HTML to Doxygen Markup Comparison

          HTMLDoxygen
          \\\
          "\"
          '\'
          <i>@a word
          <b>@b word
          <code>@c word
          <em>@a word
          <em><em>two words or more</em>

      Docbook

      Prerequisites

      Table B.3. Docbook Prerequisites

      ToolVersionRequired By
      docbook5-style-xsl1.76.1all
      xsltproc1.1.26all
      xmllint2.7.7validation
      dblatex0.3pdf output
      pdflatex2007-59pdf output
      docbook2X0.8.8info output
      epub3 stylesheetsb3epub output

      Editing the DocBook sources requires an XML editor. Many exist: some notable options include emacs, Kate, --- 309,315 ---- writing Doxygen comments. Single and double quotes, and separators in filenames are two common trouble spots. When in doubt, consult the following table. !

      Table B.2. HTML to Doxygen Markup Comparison

      HTMLDoxygen
      \\\
      "\"
      '\'
      <i>@a word
      <b>@b word
      <code>@c word
      <em>@a word
      <em><em>two words or more</em>

      Docbook

      Prerequisites

      Table B.3. Docbook Prerequisites

      ToolVersionRequired By
      docbook5-style-xsl1.76.1all
      xsltproc1.1.26all
      xmllint2.7.7validation
      dblatex0.3pdf output
      pdflatex2007-59pdf output
      docbook2X0.8.8info output
      epub3 stylesheetsb3epub output

      Editing the DocBook sources requires an XML editor. Many exist: some notable options include emacs, Kate, *************** *** 358,364 **** XML to Texinfo is required. The default choice is docbook2X.

      For epub output, the stylesheets for EPUB3 are required. These stylesheets are still in development. To validate the created file, epubcheck is necessary. !

      Generating the DocBook Files

      The following Makefile rules generate (in order): an HTML version of all the DocBook documentation, a PDF version of the same, and a single XML document. These rules are not --- 356,362 ---- XML to Texinfo is required. The default choice is docbook2X.

      For epub output, the stylesheets for EPUB3 are required. These stylesheets are still in development. To validate the created file, epubcheck is necessary. !

      Generating the DocBook Files

      The following Makefile rules generate (in order): an HTML version of all the DocBook documentation, a PDF version of the same, and a single XML document. These rules are not *************** *** 383,389 **** make XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwalsh" doc-html-docbook !

      Debugging Generation

      Sometimes, mis-configuration of the pre-requisite tools can lead to errors when attempting to build the documentation. Here are some of the obvious errors, and ways --- 381,387 ---- make XSL_STYLE_DIR="/usr/share/xml/docbook/stylesheet/nwalsh" doc-html-docbook !

      Debugging Generation

      Sometimes, mis-configuration of the pre-requisite tools can lead to errors when attempting to build the documentation. Here are some of the obvious errors, and ways *************** make XSL_STYLE_DIR *** 398,404 **** contents of the following build directory: build/target/libstdc++-v3/doc/docbook/latex. Pay attention to three files enclosed within, annotated as follows. !

      • spine.tex

        The actual latex file, or partial latex file. This is generated --- 396,402 ---- contents of the following build directory: build/target/libstdc++-v3/doc/docbook/latex. Pay attention to three files enclosed within, annotated as follows. !

        • spine.tex

          The actual latex file, or partial latex file. This is generated *************** make XSL_STYLE_DIR *** 435,441 **** commenting out each of the largest parts of the spine.xml file, section by section, until the offending section is identified. !

        Editing and Validation

        After editing the xml sources, please make sure that the XML documentation and markup is still valid. This can be done easily, with the following validation rule: --- 433,439 ---- commenting out each of the largest parts of the spine.xml file, section by section, until the offending section is identified. !

        Editing and Validation

        After editing the xml sources, please make sure that the XML documentation and markup is still valid. This can be done easily, with the following validation rule: *************** make XSL_STYLE_DIR *** 455,461 **** validation on the entire manual fails.

        All Docbook xml sources should always validate. No excuses! !

        File Organization and Basics


              Which files are important

              All Docbook files are in the directory
        --- 453,459 ---- validation on the entire manual fails.

        All Docbook xml sources should always validate. No excuses! !

        File Organization and Basics


              Which files are important

              All Docbook files are in the directory
        *************** make XSL_STYLE_DIR *** 515,531 ****       </book>

              </set>
        !     

        Markup By Example

        Complete details on Docbook markup can be found in the DocBook Element Reference, online. An incomplete reference for HTML to Docbook conversion is detailed in the table below. !

        Table B.4. HTML to Docbook XML Markup Comparison

        HTMLDocbook
        <p><para>
        <pre><computeroutput>, <programlisting>, <literallayout>
        <ul><itemizedlist>
        <ol><orderedlist>
        <il><listitem>
        <dl><variablelist>
        <dt><term>
        <dd><listitem>
        <a href=""><ulink url="">
        <code><literal>, <programlisting>
        <strong><emphasis>
        <em><emphasis>
        "<quote>

        And examples of detailed markup for which there are no real HTML equivalents are listed in the table below. !

        Table B.5. Docbook XML Element Use

        ElementUse
        <structname><structname>char_traits</structname>
        <classname><classname>string</classname>
        <function>

        <function>clear()</function>

        <function>fs.clear()</function>

        <type><type>long long</type>
        <varname><varname>fs</varname>
        <literal> --- 513,529 ----       </book>

              </set>
        !     

        Markup By Example

        Complete details on Docbook markup can be found in the DocBook Element Reference, online. An incomplete reference for HTML to Docbook conversion is detailed in the table below. !

        Table B.4. HTML to Docbook XML Markup Comparison

        HTMLDocbook
        <p><para>
        <pre><computeroutput>, <programlisting>, <literallayout>
        <ul><itemizedlist>
        <ol><orderedlist>
        <il><listitem>
        <dl><variablelist>
        <dt><term>
        <dd><listitem>
        <a href=""><ulink url="">
        <code><literal>, <programlisting>
        <strong><emphasis>
        <em><emphasis>
        "<quote>

        And examples of detailed markup for which there are no real HTML equivalents are listed in the table below. !

        Table B.5. Docbook XML Element Use

        ElementUse
        <structname><structname>char_traits</structname>
        <classname><classname>string</classname>
        <function>

        <function>clear()</function>

        <function>fs.clear()</function>

        <type><type>long long</type>
        <varname><varname>fs</varname>
        <literal> *************** make XSL_STYLE_DIR *** 541,544 ****

        --- 539,542 ----

      \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/dynamic_memory.html gcc-4.7.4/libstdc++-v3/doc/html/manual/dynamic_memory.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/dynamic_memory.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/dynamic_memory.html Tue Nov 5 21:26:53 2013 *************** *** 1,13 **** ! ! Dynamic Memory

      Dynamic Memory

      There are six flavors each of new and delete, so make certain that you're using the right ones. Here are quickie descriptions of new: !

    Text modify Down !
    Observations
    Associative
    Priority_Queue
    Acknowledgments
    Bibliography
    23. HP/SGI Extensions
    Backwards Compatibility
    Deprecated
    24. Utilities
    25. Algorithms
    26. Numerics
    27. Iterators
    28. Input and Output
    Derived filebufs
    29. Demangling
    30. Concurrency
    Design
    Interface to Locks and Mutexes
    Interface to Atomic Functions
    Implementation
    Using Builtin Atomic Functions
    Thread Abstraction
    Use
    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/facets.html gcc-4.7.4/libstdc++-v3/doc/html/manual/facets.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/facets.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/facets.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Facets

    Facets

    ctype

    Implementation

    Specializations

    For the required specialization codecvt<wchar_t, char, mbstate_t> , conversions are made between the internal character set (always UCS4 on GNU/Linux) and whatever the currently selected locale for the --- 1,8 ---- ! Facets

    Facets

    ctype

    Implementation

    Specializations

    For the required specialization codecvt<wchar_t, char, mbstate_t> , conversions are made between the internal character set (always UCS4 on GNU/Linux) and whatever the currently selected locale for the *************** to wchar_t and wcsrtombs for conversions *** 28,34 ****

    Neither of these two required specializations deals with Unicode characters. !

    Future

    • How to deal with the global locale issue?

    • How to deal with different types than char, wchar_t?

    • --- 27,33 ----

      Neither of these two required specializations deals with Unicode characters. !

    Future

    • How to deal with the global locale issue?

    • How to deal with different types than char, wchar_t?

    • *************** characters. *** 50,79 ****

    • Rename abstract base class. See if just smash-overriding is a better approach. Clarify, add sanity to naming. !

    Bibliography

    The GNU C Library ! . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    Correspondence ! . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ ! . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C ! . Copyright © 1999 ISO.

    The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004) . Copyright © 1999 ! The Open Group/The Institute of Electrical and Electronics Engineers, Inc..

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley ! .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference . Angelika Langer. Klaus Kreft. Copyright © 2000 Addison Wesley Longman, Inc.. Addison Wesley Longman ! .

    codecvt

    The standard class codecvt attempts to address conversions between different character encoding schemes. In particular, the standard attempts to detail conversions between the implementation-defined wide --- 49,78 ----

  • Rename abstract base class. See if just smash-overriding is a better approach. Clarify, add sanity to naming. !

  • Bibliography

    The GNU C Library ! . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    Correspondence ! . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ ! . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C ! . Copyright © 1999 ISO.

    The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004) . Copyright © 1999 ! The Open Group/The Institute of Electrical and Electronics Engineers, Inc..

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley ! .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference . Angelika Langer. Klaus Kreft. Copyright © 2000 Addison Wesley Longman, Inc.. Addison Wesley Longman ! .

    codecvt

    The standard class codecvt attempts to address conversions between different character encoding schemes. In particular, the standard attempts to detail conversions between the implementation-defined wide *************** including Unicode and UTF8. Design issue *** 87,93 **** addressed, and examples of correct usage for both the required specializations for wide and narrow characters and the implementation-provided extended functionality are given. !

    Requirements

    Around page 425 of the C++ Standard, this charming heading comes into view:

    22.2.1.5 - Template class codecvt --- 86,92 ---- addressed, and examples of correct usage for both the required specializations for wide and narrow characters and the implementation-provided extended functionality are given. !

    Requirements

    Around page 425 of the C++ Standard, this charming heading comes into view:

    22.2.1.5 - Template class codecvt *************** third template parameter, stateT.

    *** 133,139 **** Two: The required conversions, by specifying mbstate_t as the third template parameter, imply an implementation strategy that is mostly (or wholly) based on the underlying C library, and the functions ! mcsrtombs and wcsrtombs in particular.

    Design

    wchar_t Size

    The simple implementation detail of wchar_t's size seems to repeatedly confound people. Many systems use a two byte, unsigned integral type to represent wide characters, and use an --- 132,138 ---- Two: The required conversions, by specifying mbstate_t as the third template parameter, imply an implementation strategy that is mostly (or wholly) based on the underlying C library, and the functions ! mcsrtombs and wcsrtombs in particular.

    Design

    wchar_t Size

    The simple implementation detail of wchar_t's size seems to repeatedly confound people. Many systems use a two byte, unsigned integral type to represent wide characters, and use an *************** mcsrtombs and wcsrtombs in particular.

    Thus, portable C++ code cannot assume a byte size (or endianness) either. !

    Support for Unicode

    Probably the most frequently asked question about code conversion is: "So dudes, what's the deal with Unicode strings?" The dude part is optional, but apparently the usefulness of --- 144,150 ---- size for the type wchar_t.

    Thus, portable C++ code cannot assume a byte size (or endianness) either. !

    Support for Unicode

    Probably the most frequently asked question about code conversion is: "So dudes, what's the deal with Unicode strings?" The dude part is optional, but apparently the usefulness of *************** mcsrtombs and wcsrtombs in particular.

    • Identifiers for each of the codesets involved in the conversion. For example, using the iconv family of functions from the Single Unix Specification (what used to be called --- 161,167 ---- needed is some kind of generalized type that accounts for the issues that abstract encodings will need. The minimum information that is required includes: !

      • Identifiers for each of the codesets involved in the conversion. For example, using the iconv family of functions from the Single Unix Specification (what used to be called *************** mechanism may be required. *** 213,219 **** Some way to enforce strict type checking on the internal and external types. As part of this, the size of the internal and external types will need to be known. !

    Other Issues

    In addition, multi-threaded and multi-locale environments also impact the design and requirements for code conversions. In particular, they affect the required specialization codecvt<wchar_t, char, mbstate_t> --- 212,218 ---- Some way to enforce strict type checking on the internal and external types. As part of this, the size of the internal and external types will need to be known. !

    Other Issues

    In addition, multi-threaded and multi-locale environments also impact the design and requirements for code conversions. In particular, they affect the required specialization codecvt<wchar_t, char, mbstate_t> *************** For the required specialization codecvt& *** 245,251 **** conversions are made between the internal character set (always UCS4 on GNU/Linux) and whatever the currently selected locale for the LC_CTYPE category implements. !

    Implementation

    The two required specializations are implemented as follows:

    --- 244,250 ---- conversions are made between the internal character set (always UCS4 on GNU/Linux) and whatever the currently selected locale for the LC_CTYPE category implements. !

    Implementation

    The two required specializations are implemented as follows:

    *************** Definitions for all the required codecvt *** 347,353 **** for this specialization, and usage of codecvt<internal character type, external character type, encoding_state> is consistent with other codecvt usage. !

    Use

    A conversions involving string literal.

        typedef codecvt_base::result                  result;
        typedef unsigned short                        unicode_t;
        typedef unicode_t                             int_type;
    --- 346,352 ----
      for this specialization, and usage of codecvt<internal character type,
      external character type, encoding_state> is consistent with other
      codecvt usage.
    ! 

    Use

    A conversions involving string literal.

        typedef codecvt_base::result                  result;
        typedef unsigned short                        unicode_t;
        typedef unicode_t                             int_type;
    *************** codecvt usage.
    *** 384,397 ****
        VERIFY( !int_traits::compare(i_arr, i_lit, size) );
        VERIFY( efrom_next == e_lit + size );
        VERIFY( ito_next == i_arr + size );
    ! 

    Future

    • a. things that are sketchy, or remain unimplemented: do_encoding, max_length and length member functions are only weakly implemented. I have no idea how to do this correctly, and in a generic manner. Nathan?

    • b. conversions involving std::string !

      • how should operators != and == work for string of different/same encoding?

      • --- 383,396 ---- VERIFY( !int_traits::compare(i_arr, i_lit, size) ); VERIFY( efrom_next == e_lit + size ); VERIFY( ito_next == i_arr + size ); !

      Future

      • a. things that are sketchy, or remain unimplemented: do_encoding, max_length and length member functions are only weakly implemented. I have no idea how to do this correctly, and in a generic manner. Nathan?

      • b. conversions involving std::string !

        • how should operators != and == work for string of different/same encoding?

        • *************** codecvt usage. *** 401,407 **** conversions between narrow, wide, and unicode strings

      • c. conversions involving std::filebuf and std::ostream !

        • how to initialize the state object in a standards-conformant manner?

        • --- 400,406 ---- conversions between narrow, wide, and unicode strings

      • c. conversions involving std::filebuf and std::ostream !

        • how to initialize the state object in a standards-conformant manner?

        • *************** codecvt usage. *** 410,459 ****

        • wchar_t/char internal buffers and conversions between internal/external buffers? !

      Bibliography

      The GNU C Library . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization ! .

      Correspondence ! . Ulrich Drepper. Copyright © 2002 .

      ISO/IEC 14882:1998 Programming languages - C++ ! . Copyright © 1998 ISO.

      ISO/IEC 9899:1999 Programming languages - C ! . Copyright © 1999 ISO.

      System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. ! .

      The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley ! .

      Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference . Angelika Langer. Klaus Kreft. Copyright © 2000 Addison Wesley Longman, Inc.. Addison Wesley Longman ! .

      A brief description of Normative Addendum 1 ! . Clive Feather. Extended Character Sets.

      The Unicode HOWTO ! . Bruno Haible.

    messages

    The std::messages facet implements message retrieval functionality equivalent to Java's java.text.MessageFormat .using either GNU gettext or IEEE 1003.1-200 functions. !

    Requirements

    The std::messages facet is probably the most vaguely defined facet in the standard library. It's assumed that this facility was built into the standard library in order to convert string literals from one --- 409,458 ----

  • wchar_t/char internal buffers and conversions between internal/external buffers? !

  • Bibliography

    The GNU C Library . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization ! .

    Correspondence ! . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ ! . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C ! . Copyright © 1999 ISO.

    System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. ! .

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley ! .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference . Angelika Langer. Klaus Kreft. Copyright © 2000 Addison Wesley Longman, Inc.. Addison Wesley Longman ! .

    A brief description of Normative Addendum 1 ! . Clive Feather. Extended Character Sets.

    The Unicode HOWTO ! . Bruno Haible.

    messages

    The std::messages facet implements message retrieval functionality equivalent to Java's java.text.MessageFormat .using either GNU gettext or IEEE 1003.1-200 functions. !

    Requirements

    The std::messages facet is probably the most vaguely defined facet in the standard library. It's assumed that this facility was built into the standard library in order to convert string literals from one *************** be found, returns dfault. *** 502,508 **** -6- Effects: Releases unspecified resources associated with cat. -7- Notes: The limit on such resources, if any, is implementation-defined. !

    Design

    A couple of notes on the standard.

    First, why is messages_base::catalog specified as a typedef --- 501,507 ---- -6- Effects: Releases unspecified resources associated with cat. -7- Notes: The limit on such resources, if any, is implementation-defined. !

    Design

    A couple of notes on the standard.

    First, why is messages_base::catalog specified as a typedef *************** It is implicitly assumed that the locale *** 535,541 **** string in 'get' is in the "C" locale. Thus, all source code is assumed to be written in English, so translations are always from "en_US" to other, explicitly named locales. !

    Implementation

    Models

    This is a relatively simple class, on the face of it. The standard specifies very little in concrete terms, so generic implementations that are conforming yet do very little are the --- 534,540 ---- string in 'get' is in the "C" locale. Thus, all source code is assumed to be written in English, so translations are always from "en_US" to other, explicitly named locales. !

    Implementation

    Models

    This is a relatively simple class, on the face of it. The standard specifies very little in concrete terms, so generic implementations that are conforming yet do very little are the *************** other, explicitly named locales. *** 546,552 ****

    Three different mechanisms have been provided, selectable via configure flags: !

    • generic

      This model does very little, and is what is used by default. --- 545,551 ----

      Three different mechanisms have been provided, selectable via configure flags: !

      • generic

        This model does very little, and is what is used by default. *************** A new, standards-conformant non-virtual *** 576,582 **** added for 'open' so that a directory could be specified with a given message catalog. This simplifies calling conventions for the gnu model. !

      The GNU Model

      The messages facet, because it is retrieving and converting between characters sets, depends on the ctype and perhaps the codecvt facet in a given locale. In addition, underlying "C" --- 575,581 ---- added for 'open' so that a directory could be specified with a given message catalog. This simplifies calling conventions for the gnu model. !

      The GNU Model

      The messages facet, because it is retrieving and converting between characters sets, depends on the ctype and perhaps the codecvt facet in a given locale. In addition, underlying "C" *************** model. *** 588,594 **** Making the message catalogs can be initially tricky, but become quite simple with practice. For complete info, see the gettext documentation. Here's an idea of what is required: !

      • Make a source file with the required string literals that need to be translated. See intl/string_literals.cc for an example. --- 587,593 ---- Making the message catalogs can be initially tricky, but become quite simple with practice. For complete info, see the gettext documentation. Here's an idea of what is required: !

        • Make a source file with the required string literals that need to be translated. See intl/string_literals.cc for an example. *************** model. *** 619,625 **** use_facet<messages<char> >(loc_de).open("libstdc++", locale(), dir); !

      Use

      A simple example using the GNU model of message conversion.

        #include <iostream>
      --- 618,624 ----
           
           use_facet<messages<char> >(loc_de).open("libstdc++", locale(), dir);
           
      !    

    Use

    A simple example using the GNU model of message conversion.

      #include <iostream>
    *************** void test01()
    *** 641,649 ****
        cout << "thank you in german:" << s02 << '\n';
        mssg_de.close(cat_de);
      }
    ! 

    Future

    • Things that are sketchy, or remain unimplemented: !

      • _M_convert_from_char, _M_convert_to_char are in flux, depending on how the library ends up doing character set conversions. It might not be possible to do a real character --- 640,648 ---- cout << "thank you in german:" << s02 << '\n'; mssg_de.close(cat_de); } !

      Future

      • Things that are sketchy, or remain unimplemented: !

        • _M_convert_from_char, _M_convert_to_char are in flux, depending on how the library ends up doing character set conversions. It might not be possible to do a real character *************** void test01() *** 691,729 **** model. As of this writing, it is unknown how to query to see if a specified message catalog exists using the gettext package. !

      Bibliography

      The GNU C Library . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling, and 7 Locales and Internationalization ! .

      Correspondence ! . Ulrich Drepper. Copyright © 2002 .

      ISO/IEC 14882:1998 Programming languages - C++ ! . Copyright © 1998 ISO.

      ISO/IEC 9899:1999 Programming languages - C ! . Copyright © 1999 ISO.

      System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. ! .

      The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley ! .

      Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference . Angelika Langer. Klaus Kreft. Copyright © 2000 Addison Wesley Longman, Inc.. Addison Wesley Longman ! .

      ! API Specifications, Java Platform . java.util.Properties, java.text.MessageFormat, java.util.Locale, java.util.ResourceBundle ! .

    Bibliography

    The GNU C Library . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling, and 7 Locales and Internationalization ! .

    Correspondence ! . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ ! . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C ! . Copyright © 1999 ISO.

    System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. ! .

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley ! .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference . Angelika Langer. Klaus Kreft. Copyright © 2000 Addison Wesley Longman, Inc.. Addison Wesley Longman ! .

    ! API Specifications, Java Platform . java.util.Properties, java.text.MessageFormat, java.util.Locale, java.util.ResourceBundle ! .

    --- 733,736 ----  Home Chapter 9.  Containers !
    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/fstreams.html gcc-4.7.4/libstdc++-v3/doc/html/manual/fstreams.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/fstreams.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/fstreams.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! File Based Streams

    File Based Streams

    Copying a File

    So you want to copy a file quickly and easily, and most important, completely portably. And since this is C++, you have an open ifstream (call it IN) and an open ofstream (call it OUT): --- 1,8 ---- ! File Based Streams

    File Based Streams

    Copying a File

    So you want to copy a file quickly and easily, and most important, completely portably. And since this is C++, you have an open ifstream (call it IN) and an open ofstream (call it OUT): *************** *** 49,55 **** The operators shown above are all defined in the parent basic_ostream class and are therefore available with all possible descendants. !

    Binary Input and Output

    The first and most important thing to remember about binary I/O is that opening a file with ios::binary is not, repeat not, the only thing you have to do. It is not a silver --- 48,54 ---- The operators shown above are all defined in the parent basic_ostream class and are therefore available with all possible descendants. !

    Binary Input and Output

    The first and most important thing to remember about binary I/O is that opening a file with ios::binary is not, repeat not, the only thing you have to do. It is not a silver *************** *** 87,93 **** of formatting functions and classes to perform something which requires that formatting not be done? There are a seemingly infinite number of solutions, and a few are listed here: !

    • Derive your own fstream-type classes and write your own <</>> operators to do binary I/O on whatever data types you're using.

      --- 86,92 ---- of formatting functions and classes to perform something which requires that formatting not be done? There are a seemingly infinite number of solutions, and a few are listed here: !

      • Derive your own fstream-type classes and write your own <</>> operators to do binary I/O on whatever data types you're using.

        *************** *** 147,150 **** between arbitrary programs, or across a network, or from one invocation of a program to another invocation of the same program on a different platform, etc. !

    --- 146,149 ---- between arbitrary programs, or across a network, or from one invocation of a program to another invocation of the same program on a different platform, etc. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html gcc-4.7.4/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html Tue Nov 5 21:26:53 2013 *************** *** 1,15 **** ! ! Generalized Operations

    Generalized Operations

    There are four generalized functions in the <numeric> header that follow the same conventions as those in <algorithm>. Each of them is overloaded: one signature for common default operations, and a second for fully general operations. Their names are self-explanatory to anyone who works with numerics on a regular basis: !

    • accumulate

    • inner_product

    • chapterial_sum

    • adjacent_difference

    Here is a simple example of the two forms of accumulate.

         int   ar[50];
         int   someval = somefunction();
    --- 1,14 ----
      
    ! Generalized Operations

    Generalized Operations

    There are four generalized functions in the <numeric> header that follow the same conventions as those in <algorithm>. Each of them is overloaded: one signature for common default operations, and a second for fully general operations. Their names are self-explanatory to anyone who works with numerics on a regular basis: !

    • accumulate

    • inner_product

    • chapterial_sum

    • adjacent_difference

    Here is a simple example of the two forms of accumulate.

         int   ar[50];
         int   someval = somefunction();
    ***************
    *** 29,32 ****
         

    --- 28,31 ----

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/index.html gcc-4.7.4/libstdc++-v3/doc/html/manual/index.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/index.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/index.html Tue Nov 5 21:26:53 2013 *************** *** 1,8 **** ! ! The GNU C++ Library Manual

    The GNU C++ Library Manual

    Paolo Carlini

    Phil Edwards

    Doug Gregor

    Benjamin Kosnik

    Dhruv Matani

    Jason Merrill

    Mark Mitchell

    Nathan Myers

    Felix Natter

    Stefan Olsson

    Silvius Rus

    Johannes Singler

    Ami Tavory

    Jonathan Wakely


    Table of Contents

    I. Introduction
    1. Status
    Implementation Status
    C++ 1998/2003
    Implementation Status
    Implementation Specific Behavior
    C++ 2011
    Implementation Specific Behavior
    C++ TR1
    Implementation Specific Behavior
    C++ TR 24733
    License
    The Code: GPL
    The Documentation: GPL, FDL
    Bugs
    Implementation Bugs
    Standard Bugs
    2. Setup
    Prerequisites
    Configure
    Make
    3. Using
    Command Options
    Headers
    Header Files
    Mixing Headers
    The C Headers and namespace std
    Precompiled Headers
    Macros
    Namespaces
    Available Namespaces
    namespace std
    Using Namespace Composition
    Linking
    Almost Nothing
    Finding Dynamic or Shared Libraries
    Concurrency
    Prerequisites
    Thread Safety
    Atomics
    IO
    Structure
    Defaults
    Future
    Alternatives
    Containers
    Exceptions
    Exception Safety
    Exception Neutrality
    Doing without
    Compatibility
    With C
    With POSIX thread cancellation
    Debugging Support
    Using g++
    Debug Versions of Library Binary Files
    Memory Leak Hunting
    Data Race Hunting
    Using gdb
    Tracking uncaught exceptions
    Debug Mode
    Compile Time Checking
    Profile-based Performance Analysis
    II. --- 1,7 ---- ! The GNU C++ Library Manual

    The GNU C++ Library Manual

    Paolo Carlini

    Phil Edwards

    Doug Gregor

    Benjamin Kosnik

    Dhruv Matani

    Jason Merrill

    Mark Mitchell

    Nathan Myers

    Felix Natter

    Stefan Olsson

    Silvius Rus

    Johannes Singler

    Ami Tavory

    Jonathan Wakely


    Table of Contents

    I. Introduction
    1. Status
    Implementation Status
    C++ 1998/2003
    Implementation Status
    Implementation Specific Behavior
    C++ 2011
    Implementation Specific Behavior
    C++ TR1
    Implementation Specific Behavior
    C++ TR 24733
    License
    The Code: GPL
    The Documentation: GPL, FDL
    Bugs
    Implementation Bugs
    Standard Bugs
    2. Setup
    Prerequisites
    Configure
    Make
    3. Using
    Command Options
    Headers
    Header Files
    Mixing Headers
    The C Headers and namespace std
    Precompiled Headers
    Macros
    Namespaces
    Available Namespaces
    namespace std
    Using Namespace Composition
    Linking
    Almost Nothing
    Finding Dynamic or Shared Libraries
    Concurrency
    Prerequisites
    Thread Safety
    Atomics
    IO
    Structure
    Defaults
    Future
    Alternatives
    Containers
    Exceptions
    Exception Safety
    Exception Neutrality
    Doing without
    Compatibility
    With C
    With POSIX thread cancellation
    Debugging Support
    Using g++
    Debug Versions of Library Binary Files
    Memory Leak Hunting
    Data Race Hunting
    Using gdb
    Tracking uncaught exceptions
    Debug Mode
    Compile Time Checking
    Profile-based Performance Analysis
    II. *************** *** 16,28 ****
    Exceptions
    API Reference
    Adding Data to exception
    Concept Checking
    6. Utilities !
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. Strings
    String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    8. Localization !
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. Containers
    Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    Interacting with C
    Containers vs. Arrays
    10. --- 15,27 ----
    Exceptions
    API Reference
    Adding Data to exception
    Concept Checking
    6. Utilities !
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. Strings
    String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    8. Localization !
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. Containers
    Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    Interacting with C
    Containers vs. Arrays
    10. *************** Support for C++11 dialect. *** 144,164 ****
    D. GNU General Public License version 3 !
    E. GNU Free Documentation License
    --- 143,163 ----
    D. GNU General Public License version 3 !
    E. GNU Free Documentation License
    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/internals.html gcc-4.7.4/libstdc++-v3/doc/html/manual/internals.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/internals.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/internals.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Porting to New Hardware or Operating Systems

    Porting to New Hardware or Operating Systems

    This document explains how to port libstdc++ (the GNU C++ library) to a new target.

    In order to make the GNU C++ library (libstdc++) work with a new --- 1,8 ---- ! Porting to New Hardware or Operating Systems

    Porting to New Hardware or Operating Systems

    This document explains how to port libstdc++ (the GNU C++ library) to a new target.

    In order to make the GNU C++ library (libstdc++) work with a new *************** works. It is difficult to test the C++ *** 20,26 **** library, but you should at least try some minimal test cases.

    (Note that what we think of as a "target," the library refers to as a "host." The comment at the top of configure.ac explains why.) !

    Operating System

    If you are porting to a new operating system (as opposed to a new chip using an existing operating system), you will need to create a new directory in the config/os hierarchy. For example, the IRIX configuration files are all in config/os/irix. There is no set --- 19,25 ---- library, but you should at least try some minimal test cases.

    (Note that what we think of as a "target," the library refers to as a "host." The comment at the top of configure.ac explains why.) !

    Operating System

    If you are porting to a new operating system (as opposed to a new chip using an existing operating system), you will need to create a new directory in the config/os hierarchy. For example, the IRIX configuration files are all in config/os/irix. There is no set *************** this: *** 99,105 **** #endif

    We recommend copying an existing os_defines.h to use as a starting point. !

    CPU

    If you are porting to a new chip (as opposed to a new operating system running on an existing chip), you will need to create a new directory in the config/cpu hierarchy. Much like the Operating system setup, there are no strict rules on how to organize the CPU configuration --- 98,104 ---- #endif

    We recommend copying an existing os_defines.h to use as a starting point. !

    CPU

    If you are porting to a new chip (as opposed to a new operating system running on an existing chip), you will need to create a new directory in the config/cpu hierarchy. Much like the Operating system setup, there are no strict rules on how to organize the CPU configuration *************** example, alpha *** 117,123 ****

    The cpu_include_dir sets default locations for the files controlling Thread safety and Numeric limits, if the defaults are not appropriate for your chip. !

    Character Types

    The library requires that you provide three header files to implement character classification, analogous to that provided by the C libraries <ctype.h> header. You can model these on the files provided in config/os/generic. However, these files will almost --- 116,122 ----

    The cpu_include_dir sets default locations for the files controlling Thread safety and Numeric limits, if the defaults are not appropriate for your chip. !

    Character Types

    The library requires that you provide three header files to implement character classification, analogous to that provided by the C libraries <ctype.h> header. You can model these on the files provided in config/os/generic. However, these files will almost *************** from __low up *** 276,282 **** ++__low; return __low; } !

    Thread Safety

    The C++ library string functionality requires a couple of atomic operations to provide thread-safety. If you don't take any special action, the library will use stub versions of these functions that are not thread-safe. They will work fine, unless your applications are --- 275,281 ---- ++__low; return __low; } !

    Thread Safety

    The C++ library string functionality requires a couple of atomic operations to provide thread-safety. If you don't take any special action, the library will use stub versions of these functions that are not thread-safe. They will work fine, unless your applications are *************** must be equivalent to those provided her *** 331,337 **** { *__mem += __val; } !

    Numeric Limits

    The C++ library requires information about the fundamental data types, such as the minimum and maximum representable values of each type. You can define each of these values individually, but it is usually easiest just to indicate how many bits are used in each of the data --- 330,336 ---- { *__mem += __val; } !

    Numeric Limits

    The C++ library requires information about the fundamental data types, such as the minimum and maximum representable values of each type. You can define each of these values individually, but it is usually easiest just to indicate how many bits are used in each of the data *************** same values, you can provide a CPU-speci *** 343,349 **** do not have to provide the same definitions for each operating system. To take that approach, create a new file called cpu_limits.h in your CPU configuration directory (see CPU). !

    Libtool

    The C++ library is compiled, archived and linked with libtool. Explaining the full workings of libtool is beyond the scope of this document, but there are a few, particular bits that are necessary for porting. --- 342,348 ---- do not have to provide the same definitions for each operating system. To take that approach, create a new file called cpu_limits.h in your CPU configuration directory (see CPU). !

    Libtool

    The C++ library is compiled, archived and linked with libtool. Explaining the full workings of libtool is beyond the scope of this document, but there are a few, particular bits that are necessary for porting. *************** do this is to build the library using ltcf-c.sh in the top-level directory. Find the switch statement that sets archive_cmds. Here, adjust the setting for your operating system. !

    --- 364,367 ---- ltcf-c.sh in the top-level directory. Find the switch statement that sets archive_cmds. Here, adjust the setting for your operating system. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/intro.html gcc-4.7.4/libstdc++-v3/doc/html/manual/intro.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/intro.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/intro.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Part I.  Introduction --- 1,8 ---- ! Part I.  Introduction \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/io.html gcc-4.7.4/libstdc++-v3/doc/html/manual/io.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/io.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/io.html Tue Nov 5 21:26:53 2013 *************** *** 1,14 **** ! ! Chapter 13.  Input and Output

    Chapter 13.  Input and Output ! !

    Iostream Objects

    To minimize the time you have to wait on the compiler, it's good to only include the headers you really need. Many people simply include <iostream> when they don't need to -- and that can penalize your runtime as well. Here are some tips on which header to use --- 1,13 ---- ! Chapter 13.  Input and Output

    Chapter 13.  Input and Output ! !

    Iostream Objects

    To minimize the time you have to wait on the compiler, it's good to only include the headers you really need. Many people simply include <iostream> when they don't need to -- and that can penalize your runtime as well. Here are some tips on which header to use *************** *** 118,121 **** the standard objects in that source file; you'll pay less startup time. Only include the header files you need to in general; your compile times will go down when there's less parsing work to do. !

    --- 117,120 ---- the standard objects in that source file; you'll pay less startup time. Only include the header files you need to in general; your compile times will go down when there's less parsing work to do. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/io_and_c.html gcc-4.7.4/libstdc++-v3/doc/html/manual/io_and_c.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/io_and_c.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/io_and_c.html Tue Nov 5 21:26:53 2013 *************** *** 1,14 **** ! ! Interacting with C

    Interacting with C

    Using FILE* and file descriptors

    See the extensions for using FILE and file descriptors with ofstream and ifstream. !

    Performance

    Pathetic Performance? Ditch C.

    It sounds like a flame on C, but it isn't. Really. Calm down. I'm just saying it to get your attention. --- 1,13 ---- ! Interacting with C

    Interacting with C

    Using FILE* and file descriptors

    See the extensions for using FILE and file descriptors with ofstream and ifstream. !

    Performance

    Pathetic Performance? Ditch C.

    It sounds like a flame on C, but it isn't. Really. Calm down. I'm just saying it to get your attention. *************** *** 54,57 ****

    --- 53,56 ----

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/iterators.html gcc-4.7.4/libstdc++-v3/doc/html/manual/iterators.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/iterators.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/iterators.html Tue Nov 5 21:26:53 2013 *************** *** 1,14 **** ! ! Chapter 10.  Iterators

    Chapter 10.  Iterators ! !

    Predefined

    Iterators vs. Pointers

    The following FAQ entry points out that iterators are not implemented as pointers. They are a generalization --- 1,13 ---- ! Chapter 10.  Iterators

    Chapter 10.  Iterators ! !

    Predefined

    Iterators vs. Pointers

    The following FAQ entry points out that iterators are not implemented as pointers. They are a generalization *************** classes. *** 44,50 **** down through inheritance, so while the compiler has to do work looking up all the names, your runtime code does not. (This has been a prime concern from the beginning.) !

    One Past the End

    This starts off sounding complicated, but is actually very easy, especially towards the end. Trust me.

    Beginners usually have a little trouble understand the whole 'past-the-end' thing, until they remember their early algebra classes --- 43,49 ---- down through inheritance, so while the compiler has to do work looking up all the names, your runtime code does not. (This has been a prime concern from the beginning.) !

    One Past the End

    This starts off sounding complicated, but is actually very easy, especially towards the end. Trust me.

    Beginners usually have a little trouble understand the whole 'past-the-end' thing, until they remember their early algebra classes *************** classes. *** 127,130 ****

    --- 126,129 ----

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/license.html gcc-4.7.4/libstdc++-v3/doc/html/manual/license.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/license.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/license.html Tue Nov 5 21:26:53 2013 *************** *** 1,12 **** ! ! License

    License

    There are two licenses affecting GNU libstdc++: one for the code, and one for the documentation.

    There is a license section in the FAQ regarding common questions. If you have more questions, ask the FSF or the gcc mailing list. !

    The Code: GPL

    The source code is distributed under the GNU General Public License version 3, with the addition under section 7 of an exception described in the GCC Runtime Library Exception, version 3.1 --- 1,11 ---- ! License

    License

    There are two licenses affecting GNU libstdc++: one for the code, and one for the documentation.

    There is a license section in the FAQ regarding common questions. If you have more questions, ask the FSF or the gcc mailing list. !

    The Code: GPL

    The source code is distributed under the GNU General Public License version 3, with the addition under section 7 of an exception described in the GCC Runtime Library Exception, version 3.1 *************** requirements of the license of GCC. *** 87,93 ****     

    Hopefully that text is self-explanatory. If it isn't, you need to speak to your lawyer, or the Free Software Foundation. !

    The Documentation: GPL, FDL

    The documentation shipped with the library and made available over the web, excluding the pages generated from source comments, are copyrighted by the Free Software Foundation, and placed under the --- 86,92 ----     

    Hopefully that text is self-explanatory. If it isn't, you need to speak to your lawyer, or the Free Software Foundation. !

    The Documentation: GPL, FDL

    The documentation shipped with the library and made available over the web, excluding the pages generated from source comments, are copyrighted by the Free Software Foundation, and placed under the *************** requirements of the license of GCC. *** 102,105 ****

    If you plan on making copies of the documentation, please let us know. We can probably offer suggestions. !

    --- 101,104 ----

    If you plan on making copies of the documentation, please let us know. We can probably offer suggestions. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/localization.html gcc-4.7.4/libstdc++-v3/doc/html/manual/localization.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/localization.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/localization.html Tue Nov 5 21:26:53 2013 *************** *** 1,18 **** ! ! Chapter 8.  Localization

    Chapter 8.  Localization ! !

    Locales

    locale

    Describes the basic locale object, including nested classes id, facet, and the reference-counted implementation object, class _Impl. !

    Requirements

    Class locale is non-templatized and has two distinct types nested inside of it:

    --- 1,17 ---- ! Chapter 8.  Localization

    Chapter 8.  Localization ! !

    Locales

    locale

    Describes the basic locale object, including nested classes id, facet, and the reference-counted implementation object, class _Impl. !

    Requirements

    Class locale is non-templatized and has two distinct types nested inside of it:

    *************** called numpunct is the data object that *** 26,32 **** thousands separator in the locale.

    Literally, a facet is strictly defined: !

    • Containing the following public data member:

      static locale::id id; --- 25,31 ---- thousands separator in the locale.

      Literally, a facet is strictly defined: !

      • Containing the following public data member:

        static locale::id id; *************** class id *** 48,61 ****

    Provides an index for looking up specific facets. !

    Design

    The major design challenge is fitting an object-orientated and non-global locale design on top of POSIX and other relevant standards, which include the Single Unix (nee X/Open.)

    Because C and earlier versions of POSIX fall down so completely, portability is an issue. !

    Implementation

    Interacting with "C" locales
    • `locale -a` displays available locales.

        af_ZA
      --- 47,60 ----
        
        

      Provides an index for looking up specific facets. !

    Design

    The major design challenge is fitting an object-orientated and non-global locale design on top of POSIX and other relevant standards, which include the Single Unix (nee X/Open.)

    Because C and earlier versions of POSIX fall down so completely, portability is an issue. !

    Implementation

    Interacting with "C" locales
    • `locale -a` displays available locales.

        af_ZA
      *************** global locale" (emphasis Paolo), that is
      *** 385,391 ****
          particular on the working of locale(""), which constructs the locale
          object from the environment of the running program, that is, in
          practice, the set of LC_ALL, LANG, etc. variable of the shell.
      ! 

    Future

    • Locale initialization: at what point does _S_classic, _S_global get initialized? Can named locales assume this initialization has already taken place? --- 384,390 ---- particular on the working of locale(""), which constructs the locale object from the environment of the running program, that is, in practice, the set of LC_ALL, LANG, etc. variable of the shell. !

    Future

    • Locale initialization: at what point does _S_classic, _S_global get initialized? Can named locales assume this initialization has already taken place? *************** global locale" (emphasis Paolo), that is *** 403,431 **** What should non-required facet instantiations do? If the generic implementation is provided, then how to end-users provide specializations? !

    Bibliography

    The GNU C Library . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization ! .

    Correspondence ! . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ ! . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C ! . Copyright © 1999 ISO.

    System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. ! .

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley ! .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference --- 402,430 ---- What should non-required facet instantiations do? If the generic implementation is provided, then how to end-users provide specializations? !

    Bibliography

    The GNU C Library . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization ! .

    Correspondence ! . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ ! . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C ! . Copyright © 1999 ISO.

    System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. ! .

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley ! .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference *************** global locale" (emphasis Paolo), that is *** 434,437 **** .

    --- 433,436 ---- .

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/make.html gcc-4.7.4/libstdc++-v3/doc/html/manual/make.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/make.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/make.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Make

    Make

    If you have never done this before, you should read the basic GCC Installation Instructions first. Read all of them. Twice.

    Then type: make, and congratulations, you've started to build. !

    --- 1,8 ---- ! Make

    Make

    If you have never done this before, you should read the basic GCC Installation Instructions first. Read all of them. Twice.

    Then type: make, and congratulations, you've started to build. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/memory.html gcc-4.7.4/libstdc++-v3/doc/html/manual/memory.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/memory.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/memory.html Tue Nov 5 21:26:53 2013 *************** *** 1,15 **** ! ! Memory

    Memory

    Memory contains three general areas. First, function and operator calls via new and delete operator or member function calls. Second, allocation via allocator. And finally, smart pointer and intelligent pointer abstractions. !

    Allocators

    Memory management for Standard Library entities is encapsulated in a class template called allocator. The allocator abstraction is used throughout the --- 1,14 ---- ! Memory

    Memory

    Memory contains three general areas. First, function and operator calls via new and delete operator or member function calls. Second, allocation via allocator. And finally, smart pointer and intelligent pointer abstractions. !

    Allocators

    Memory management for Standard Library entities is encapsulated in a class template called allocator. The allocator abstraction is used throughout the *************** *** 17,25 **** algorithms, and parts of iostreams. This class, and base classes of it, are the superset of available free store (heap) management classes. !

    Requirements

    The C++ standard only gives a few directives in this area: !

    • When you add elements to a container, and the container must allocate more memory to hold them, the container makes the request via its Allocator template --- 16,24 ---- algorithms, and parts of iostreams. This class, and base classes of it, are the superset of available free store (heap) management classes. !

      Requirements

      The C++ standard only gives a few directives in this area: !

      • When you add elements to a container, and the container must allocate more memory to hold them, the container makes the request via its Allocator template *************** *** 54,60 ****

      Complete details can be found in the C++ standard, look in [20.4 Memory]. !

      Design Issues

      The easiest way of fulfilling the requirements is to call operator new each time a container needs memory, and to call operator delete each time --- 53,59 ----

    Complete details can be found in the C++ standard, look in [20.4 Memory]. !

    Design Issues

    The easiest way of fulfilling the requirements is to call operator new each time a container needs memory, and to call operator delete each time *************** *** 93,99 **** or loading and unloading shared objects in memory. As such, using caching allocators on systems that do not support abi::__cxa_atexit is not recommended. !

    Implementation

    Interface Design

    The only allocator interface that is supported is the standard C++ interface. As such, all STL containers have been adjusted, and all external allocators have --- 92,98 ---- or loading and unloading shared objects in memory. As such, using caching allocators on systems that do not support abi::__cxa_atexit is not recommended. !

    Implementation

    Interface Design

    The only allocator interface that is supported is the standard C++ interface. As such, all STL containers have been adjusted, and all external allocators have *************** *** 106,112 ****

    The base class that allocator is derived from may not be user-configurable. !

    Selecting Default Allocation Policy

    It's difficult to pick an allocation strategy that will provide maximum utility, without excessively penalizing some behavior. In fact, it's difficult just deciding which typical actions to measure --- 105,111 ----

    The base class that allocator is derived from may not be user-configurable. !

    Selecting Default Allocation Policy

    It's difficult to pick an allocation strategy that will provide maximum utility, without excessively penalizing some behavior. In fact, it's difficult just deciding which typical actions to measure *************** *** 143,149 **** The current default choice for allocator is __gnu_cxx::new_allocator. !

    Disabling Memory Caching

    In use, allocator may allocate and deallocate using implementation-specified strategies and heuristics. Because of this, every call to an allocator object's --- 142,148 ---- The current default choice for allocator is __gnu_cxx::new_allocator. !

    Disabling Memory Caching

    In use, allocator may allocate and deallocate using implementation-specified strategies and heuristics. Because of this, every call to an allocator object's *************** *** 179,185 **** environment, it likely means that you linked against objects built against the older library (objects which might still using the cached allocations...). !

    Using a Specific Allocator

    You can specify different memory management schemes on a per-container basis, by overriding the default Allocator template parameter. For example, an easy --- 178,184 ---- environment, it likely means that you linked against objects built against the older library (objects which might still using the cached allocations...). !

    Using a Specific Allocator

    You can specify different memory management schemes on a per-container basis, by overriding the default Allocator template parameter. For example, an easy *************** *** 190,196 **** Likewise, a debugging form of whichever allocator is currently in use:

          std::deque <int, __gnu_cxx::debug_allocator<std::allocator<int> > >  debug_deque;
    !       

    Custom Allocators

    Writing a portable C++ allocator would dictate that the interface would look much like the one specified for allocator. Additional member functions, but --- 189,195 ---- Likewise, a debugging form of whichever allocator is currently in use:

          std::deque <int, __gnu_cxx::debug_allocator<std::allocator<int> > >  debug_deque;
    !       

    Custom Allocators

    Writing a portable C++ allocator would dictate that the interface would look much like the one specified for allocator. Additional member functions, but *************** *** 199,205 **** Probably the best place to start would be to copy one of the extension allocators: say a simple one like new_allocator. !

    Extension Allocators

    Several other allocators are provided as part of this implementation. The location of the extension allocators and their names have changed, but in all cases, functionality is --- 198,204 ---- Probably the best place to start would be to copy one of the extension allocators: say a simple one like new_allocator. !

    Extension Allocators

    Several other allocators are provided as part of this implementation. The location of the extension allocators and their names have changed, but in all cases, functionality is *************** *** 308,340 **** A high-performance allocator that uses a bit-map to keep track of the used and unused memory locations. It has its own documentation, found here. !

    Bibliography

    ISO/IEC 14882:1998 Programming languages - C++ . isoc++_1998 ! 20.4 Memory.

    ! The Standard Librarian: What Are Allocators Good For? . Matt Austern. C/C++ Users Journal ! .

    Reconsidering Custom Memory Allocation ! . Emery Berger. Ben Zorn. Kathryn McKinley. Copyright © 2002 OOPSLA.

    Allocator Types . Klaus Kreft. Angelika Langer. C/C++ Users Journal ! .

    The C++ Programming Language. Bjarne Stroustrup. Copyright © 2000 . 19.4 Allocators. Addison Wesley ! .

    Yalloc: A Recycling C++ Allocator. Felix Yen.

    auto_ptr

    Limitations

    Explaining all of the fun and delicious things that can happen with misuse of the auto_ptr class template (called AP here) would take some time. Suffice it to say that the use of AP --- 307,339 ---- A high-performance allocator that uses a bit-map to keep track of the used and unused memory locations. It has its own documentation, found here. !

    Bibliography

    ISO/IEC 14882:1998 Programming languages - C++ . isoc++_1998 ! 20.4 Memory.

    ! The Standard Librarian: What Are Allocators Good For? . Matt Austern. C/C++ Users Journal ! .

    Reconsidering Custom Memory Allocation ! . Emery Berger. Ben Zorn. Kathryn McKinley. Copyright © 2002 OOPSLA.

    Allocator Types . Klaus Kreft. Angelika Langer. C/C++ Users Journal ! .

    The C++ Programming Language. Bjarne Stroustrup. Copyright © 2000 . 19.4 Allocators. Addison Wesley ! .

    Yalloc: A Recycling C++ Allocator. Felix Yen.

    auto_ptr

    Limitations

    Explaining all of the fun and delicious things that can happen with misuse of the auto_ptr class template (called AP here) would take some time. Suffice it to say that the use of AP *************** *** 385,391 **** to die. AP is trivial to write, however, so you could write your own auto_array_ptr for that situation (in fact, this has been done many times; check the mailing lists, Usenet, Boost, etc). !

    Use in Containers

    All of the containers described in the standard library require their contained types to have, among other things, a copy constructor like this: --- 384,390 ---- to die. AP is trivial to write, however, so you could write your own auto_array_ptr for that situation (in fact, this has been done many times; check the mailing lists, Usenet, Boost, etc). !

    Use in Containers

    All of the containers described in the standard library require their contained types to have, among other things, a copy constructor like this: *************** *** 421,436 **** }

    Should you try this with the checks enabled, you will see an error. !

    shared_ptr

    The shared_ptr class template stores a pointer, usually obtained via new, and implements shared ownership semantics. !

    Requirements

    The standard deliberately doesn't require a reference-counted implementation, allowing other techniques such as a circular-linked-list.

    !

    Design Issues

    The shared_ptr code is kindly donated to GCC by the Boost project and the original authors of the code. The basic design and algorithms are from Boost, the notes below describe details specific to --- 420,435 ---- }

    Should you try this with the checks enabled, you will see an error. !

    shared_ptr

    The shared_ptr class template stores a pointer, usually obtained via new, and implements shared ownership semantics. !

    Requirements

    The standard deliberately doesn't require a reference-counted implementation, allowing other techniques such as a circular-linked-list.

    !

    Design Issues

    The shared_ptr code is kindly donated to GCC by the Boost project and the original authors of the code. The basic design and algorithms are from Boost, the notes below describe details specific to *************** drops to zero. *** 444,457 **** Derived classes override those functions to destroy resources in a context where the correct dynamic type is known. This is an application of the technique known as type erasure. !

    Implementation

    Class Hierarchy

    A shared_ptr<T> contains a pointer of type T* and an object of type __shared_count. The shared_count contains a pointer of type _Sp_counted_base* which points to the object that maintains the reference-counts and destroys the managed resource. !

    _Sp_counted_base<Lp>

    The base of the hierarchy is parameterized on the lock policy (see below.) _Sp_counted_base doesn't depend on the type of pointer being managed, it only maintains the reference counts and calls virtual functions when --- 443,456 ---- Derived classes override those functions to destroy resources in a context where the correct dynamic type is known. This is an application of the technique known as type erasure. !

    Implementation

    Class Hierarchy

    A shared_ptr<T> contains a pointer of type T* and an object of type __shared_count. The shared_count contains a pointer of type _Sp_counted_base* which points to the object that maintains the reference-counts and destroys the managed resource. !

    _Sp_counted_base<Lp>

    The base of the hierarchy is parameterized on the lock policy (see below.) _Sp_counted_base doesn't depend on the type of pointer being managed, it only maintains the reference counts and calls virtual functions when *************** C++11-only features are: rvalue-ref/move *** 491,499 **** aliasing constructor, make_shared & allocate_shared. Additionally, the constructors taking auto_ptr parameters are deprecated in C++11 mode. !

    Thread Safety

    The ! Thread Safety section of the Boost shared_ptr documentation says "shared_ptr objects offer the same level of thread safety as built-in types." The implementation must ensure that concurrent updates to separate shared_ptr --- 490,498 ---- aliasing constructor, make_shared & allocate_shared. Additionally, the constructors taking auto_ptr parameters are deprecated in C++11 mode. !

    Thread Safety

    The ! Thread Safety section of the Boost shared_ptr documentation says "shared_ptr objects offer the same level of thread safety as built-in types." The implementation must ensure that concurrent updates to separate shared_ptr *************** compiler, standard library, platform etc *** 536,542 **** shared_ptr in libstdc++ the compiler and library are fixed, which makes things much simpler: we have an atomic CAS or we don't, see Lock Policy below for details. !

    Selecting Lock Policy

    There is a single _Sp_counted_base class, which is a template parameterized on the enum --- 535,541 ---- shared_ptr in libstdc++ the compiler and library are fixed, which makes things much simpler: we have an atomic CAS or we don't, see Lock Policy below for details. !

    Selecting Lock Policy

    There is a single _Sp_counted_base class, which is a template parameterized on the enum *************** used when libstdc++ is built without ext/atomicity.h, which detect if the program is multi-threaded. If only one thread of execution exists in the program then less expensive non-atomic operations are used. !

    Related functions and classes
    dynamic_pointer_cast, static_pointer_cast, const_pointer_cast

    As noted in N2351, these functions can be implemented non-intrusively using the alias constructor. However the aliasing constructor is only available --- 576,582 ---- ext/atomicity.h, which detect if the program is multi-threaded. If only one thread of execution exists in the program then less expensive non-atomic operations are used. !

    Related functions and classes
    dynamic_pointer_cast, static_pointer_cast, const_pointer_cast

    As noted in N2351, these functions can be implemented non-intrusively using the alias constructor. However the aliasing constructor is only available *************** is called. Users should not try to use *** 610,622 **** As well as the extra constructors, this implementation also needs some members of _Sp_counted_deleter to be protected where they could otherwise be private. !

    Use

    Examples

    Examples of use can be found in the testsuite, under testsuite/tr1/2_general_utilities/shared_ptr, testsuite/20_util/shared_ptr and testsuite/20_util/weak_ptr. !

    Unresolved Issues

    The shared_ptr atomic access clause in the C++11 standard is not implemented in GCC.

    --- 609,621 ---- As well as the extra constructors, this implementation also needs some members of _Sp_counted_deleter to be protected where they could otherwise be private. !

    Use

    Examples

    Examples of use can be found in the testsuite, under testsuite/tr1/2_general_utilities/shared_ptr, testsuite/20_util/shared_ptr and testsuite/20_util/weak_ptr. !

    Unresolved Issues

    The shared_ptr atomic access clause in the C++11 standard is not implemented in GCC.

    *************** be private. *** 652,684 ****

    tr1::_Sp_deleter could be a private member of tr1::__shared_count but it would alter the ABI. !

    Acknowledgments

    The original authors of the Boost shared_ptr, which is really nice code to work with, Peter Dimov in particular for his help and invaluable advice on thread safety. Phillip Jordan and Paolo Carlini for the lock policy implementation. !

    --- 651,683 ----

    tr1::_Sp_deleter could be a private member of tr1::__shared_count but it would alter the ABI. !

    Acknowledgments

    The original authors of the Boost shared_ptr, which is really nice code to work with, Peter Dimov in particular for his help and invaluable advice on thread safety. Phillip Jordan and Paolo Carlini for the lock policy implementation. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/mt_allocator.html gcc-4.7.4/libstdc++-v3/doc/html/manual/mt_allocator.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/mt_allocator.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/mt_allocator.html Tue Nov 5 21:26:53 2013 *************** *** 1,10 **** ! ! Chapter 20. The mt_allocator

    Chapter 20. The mt_allocator

    !

    Intro

    The mt allocator [hereinafter referred to simply as "the allocator"] is a fixed size (power of two) allocator that was initially developed specifically to suit the needs of multi threaded --- 1,9 ---- ! Chapter 20. The mt_allocator

    Chapter 20. The mt_allocator

    !

    Intro

    The mt allocator [hereinafter referred to simply as "the allocator"] is a fixed size (power of two) allocator that was initially developed specifically to suit the needs of multi threaded *************** *** 20,23 ****

    The aim of this document is to describe - from an application point of view - the "inner workings" of the allocator. !

    --- 19,22 ----

    The aim of this document is to describe - from an application point of view - the "inner workings" of the allocator. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/numerics.html gcc-4.7.4/libstdc++-v3/doc/html/manual/numerics.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/numerics.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/numerics.html Tue Nov 5 21:26:53 2013 *************** *** 1,15 **** ! ! Chapter 12.  Numerics

    Chapter 12.  Numerics ! !

    Complex

    !

    complex Processing

    Using complex<> becomes even more comple- er, sorry, complicated, with the not-quite-gratuitously-incompatible addition of complex types to the C language. David Tribble has --- 1,14 ---- ! Chapter 12.  Numerics

    Chapter 12.  Numerics ! !

    Complex

    !

    complex Processing

    Using complex<> becomes even more comple- er, sorry, complicated, with the not-quite-gratuitously-incompatible addition of complex types to the C language. David Tribble has *************** *** 27,30 ****

    --- 26,29 ----

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/numerics_and_c.html gcc-4.7.4/libstdc++-v3/doc/html/manual/numerics_and_c.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/numerics_and_c.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/numerics_and_c.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Interacting with C

    Interacting with C

    Numerics vs. Arrays

    One of the major reasons why FORTRAN can chew through numbers so well is that it is defined to be free of pointer aliasing, an assumption that C89 is not allowed to make, and neither is C++98. C99 adds a new keyword, restrict, to apply to individual pointers. The --- 1,8 ---- ! Interacting with C

    Interacting with C

    Numerics vs. Arrays

    One of the major reasons why FORTRAN can chew through numbers so well is that it is defined to be free of pointer aliasing, an assumption that C89 is not allowed to make, and neither is C++98. C99 adds a new keyword, restrict, to apply to individual pointers. The *************** *** 18,24 **** speaking this is only one of the five template classes, and they are designed to be familiar to people who have worked with the BLAS libraries before. !

    C99

    In addition to the other topics on this page, we'll note here some of the C99 features that appear in libstdc++.

    The C99 features depend on the --enable-c99 configure flag. This flag is already on by default, but it can be disabled by the --- 17,23 ---- speaking this is only one of the five template classes, and they are designed to be familiar to people who have worked with the BLAS libraries before. !

    C99

    In addition to the other topics on this page, we'll note here some of the C99 features that appear in libstdc++.

    The C99 features depend on the --enable-c99 configure flag. This flag is already on by default, but it can be disabled by the *************** *** 34,37 ****

    --- 33,36 ----

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/pairs.html gcc-4.7.4/libstdc++-v3/doc/html/manual/pairs.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/pairs.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/pairs.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Pairs

    Pairs

    The pair<T1,T2> is a simple and handy way to carry around a pair of objects. One is of type T1, and another of type T2; they may be the same type, but you don't get anything extra if they are. The two members can be accessed directly, as --- 1,8 ---- ! Pairs

    Pairs

    The pair<T1,T2> is a simple and handy way to carry around a pair of objects. One is of type T1, and another of type T2; they may be the same type, but you don't get anything extra if they are. The two members can be accessed directly, as *************** *** 41,44 ****

    --- 40,43 ----
    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/parallel_mode.html gcc-4.7.4/libstdc++-v3/doc/html/manual/parallel_mode.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/parallel_mode.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/parallel_mode.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Chapter 18. Parallel Mode

    Chapter 18. Parallel Mode

    The libstdc++ parallel mode is an experimental parallel implementation of many algorithms the C++ Standard Library.

    Several of the standard algorithms, for instance --- 1,8 ---- ! Chapter 18. Parallel Mode

    Chapter 18. Parallel Mode

    The libstdc++ parallel mode is an experimental parallel implementation of many algorithms the C++ Standard Library.

    Several of the standard algorithms, for instance *************** Several of the standard algorithms, for *** 11,24 **** annotations. These parallel mode constructs and can be invoked by explicit source declaration or by compiling existing sources with a specific compiler flag. !

    Intro

    The following library components in the include ! numeric are included in the parallel mode:

    • std::accumulate

    • std::adjacent_difference

    • std::inner_product

    • std::partial_sum

    The following library components in the include ! algorithm are included in the parallel mode:

    • std::adjacent_find

    • std::count

    • std::count_if

    • std::equal

    • std::find

    • std::find_if

    • std::find_first_of

    • std::for_each

    • std::generate

    • std::generate_n

    • std::lexicographical_compare

    • std::mismatch

    • std::search

    • std::search_n

    • std::transform

    • std::replace

    • std::replace_if

    • std::max_element

    • std::merge

    • std::min_element

    • std::nth_element

    • std::partial_sort

    • std::partition

    • std::random_shuffle

    • std::set_union

    • std::set_intersection

    • std::set_symmetric_difference

    • std::set_difference

    • std::sort

    • std::stable_sort

    • std::unique_copy

    Bibliography

    Parallelization of Bulk Operations for STL Dictionaries . Johannes Singler. Leonor Frias. Copyright © 2007 . Workshop on Highly Parallel Processing on a Chip (HPPC) 2007. (LNCS) ! .

    The Multi-Core Standard Template Library . Johannes Singler. Peter Sanders. Felix Putze. Copyright © 2007 . Euro-Par 2007: Parallel Processing. (LNCS 4641) ! .

    --- 10,23 ---- annotations. These parallel mode constructs and can be invoked by explicit source declaration or by compiling existing sources with a specific compiler flag. !

    Intro

    The following library components in the include ! numeric are included in the parallel mode:

    • std::accumulate

    • std::adjacent_difference

    • std::inner_product

    • std::partial_sum

    The following library components in the include ! algorithm are included in the parallel mode:

    • std::adjacent_find

    • std::count

    • std::count_if

    • std::equal

    • std::find

    • std::find_if

    • std::find_first_of

    • std::for_each

    • std::generate

    • std::generate_n

    • std::lexicographical_compare

    • std::mismatch

    • std::search

    • std::search_n

    • std::transform

    • std::replace

    • std::replace_if

    • std::max_element

    • std::merge

    • std::min_element

    • std::nth_element

    • std::partial_sort

    • std::partition

    • std::random_shuffle

    • std::set_union

    • std::set_intersection

    • std::set_symmetric_difference

    • std::set_difference

    • std::sort

    • std::stable_sort

    • std::unique_copy

    Bibliography

    Parallelization of Bulk Operations for STL Dictionaries . Johannes Singler. Leonor Frias. Copyright © 2007 . Workshop on Highly Parallel Processing on a Chip (HPPC) 2007. (LNCS) ! .

    The Multi-Core Standard Template Library . Johannes Singler. Peter Sanders. Felix Putze. Copyright © 2007 . Euro-Par 2007: Parallel Processing. (LNCS 4641) ! .

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html gcc-4.7.4/libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Testing

    Testing

    Regression

    The library contains a single comprehensive regression test. For a given container type in this library, the test creates an object of the container type and an object of the corresponding standard type (e.g., std::set). It --- 1,5 ---- ! Testing

    Testing

    Regression

    The library contains a single comprehensive regression test. For a given container type in this library, the test creates an object of the container type and an object of the corresponding standard type (e.g., std::set). It *************** *** 23,31 **** configured to use this allocator.

    For granularity, the test is split into the several sources, each checking only some containers.

    For more details, consult the files in testsuite/ext/pb_ds/regression. !

    Performance

    Hash-Based

    Text find !

    Description

    This test inserts a number of values with keys from an --- 22,30 ---- configured to use this allocator.

    For granularity, the test is split into the several sources, each checking only some containers.

    For more details, consult the files in testsuite/ext/pb_ds/regression. !

    Performance

    Hash-Based

    Text find !

    Description

    This test inserts a number of values with keys from an *************** *** 41,47 **** filethirty_years_among_the_dead_preproc.txt

    The test checks the effect of different range-hashing functions, trigger policies, and cache-hashing policies. !

    Results

    The graphic below show the results for the native and collision-chaining hash types the the function --- 40,46 ---- filethirty_years_among_the_dead_preproc.txt

    The test checks the effect of different range-hashing functions, trigger policies, and cache-hashing policies. !

    Results

    The graphic below show the results for the native and collision-chaining hash types the the function *************** *** 144,150 **** hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    In this setting, the range-hashing scheme affects performance more than other policies. As the results show, containers using --- 143,149 ---- hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    In this setting, the range-hashing scheme affects performance more than other policies. As the results show, containers using *************** *** 159,167 **** library's implementation. (Unfortunately, it was not possible to run the tests with std::tr1::unordered_map 's cache_hash_code = true , as it appeared to ! malfuntion.)

    Integer find !

    Description

    This test inserts a number of values with uniform integer keys into a container, then performs a series of finds --- 158,166 ---- library's implementation. (Unfortunately, it was not possible to run the tests with std::tr1::unordered_map 's cache_hash_code = true , as it appeared to ! malfuntion.)

    Integer find !

    Description

    This test inserts a number of values with uniform integer keys into a container, then performs a series of finds *************** *** 172,178 **** performance/ext/pb_ds/random_int_find_timing.cc

    The test checks the effect of different underlying hash-tables, ! range-hashing functions, and trigger policies.

    Results

    There are two sets of results for this type, one for --- 171,177 ---- performance/ext/pb_ds/random_int_find_timing.cc

    The test checks the effect of different underlying hash-tables, ! range-hashing functions, and trigger policies.

    Results

    There are two sets of results for this type, one for *************** *** 345,351 **** hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    In this setting, the choice of underlying hash-table affects performance most, then the range-hashing scheme and, only finally, --- 344,350 ---- hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    In this setting, the choice of underlying hash-table affects performance most, then the range-hashing scheme and, only finally, *************** *** 361,369 **** above graphics should be noted that std::tr1::unordered_map are hard-wired currently to mod-based schemes. !

    Integer Subscript find !

    Description

    This test inserts a number of values with uniform integer keys into a container, then performs a series of finds --- 360,368 ---- above graphics should be noted that std::tr1::unordered_map are hard-wired currently to mod-based schemes. !

    Integer Subscript find !

    Description

    This test inserts a number of values with uniform integer keys into a container, then performs a series of finds *************** *** 373,379 **** It uses the test file: performance/ext/pb_ds/random_int_subscript_find_timing.cc

    The test checks the effect of different underlying ! hash-tables, range-hashing functions, and trigger policies.

    Results

    There are two sets of results for this type, one for --- 372,378 ---- It uses the test file: performance/ext/pb_ds/random_int_subscript_find_timing.cc

    The test checks the effect of different underlying ! hash-tables, range-hashing functions, and trigger policies.

    Results

    There are two sets of results for this type, one for *************** *** 545,556 **** hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    This test shows similar results to Hash-Based ! Integer find Find Timing test.

    Integer Subscript insert !

    Description

    This test inserts a number of values with uniform i.i.d. integer keys into a container, using --- 544,555 ---- hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    This test shows similar results to Hash-Based ! Integer find Find Timing test.

    Integer Subscript insert !

    Description

    This test inserts a number of values with uniform i.i.d. integer keys into a container, using *************** *** 560,566 **** It uses the test file: performance/ext/pb_ds/random_int_subscript_insert_timing.cc

    The test checks the effect of different underlying ! hash-tables.

    Results

    There are two sets of results for this type, one for --- 559,565 ---- It uses the test file: performance/ext/pb_ds/random_int_subscript_insert_timing.cc

    The test checks the effect of different underlying ! hash-tables.

    Results

    There are two sets of results for this type, one for *************** *** 732,738 **** hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    In this setting, as in Hash-Based Text find Find Timing test and Hash-Based --- 731,737 ---- hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    In this setting, as in Hash-Based Text find Find Timing test and Hash-Based *************** *** 761,769 **** find Find Timing Test and Hash-Based Integer find Find Timing Test. Unsurprisingly, however, containers with lower αmax perform worse in this case, ! since more re-hashes are performed.

    Integer find with Skewed-Distribution !

    Description

    This test inserts a number of values with a markedly non-uniform integer keys into a container, then performs --- 760,768 ---- find Find Timing Test and Hash-Based Integer find Find Timing Test. Unsurprisingly, however, containers with lower αmax perform worse in this case, ! since more re-hashes are performed.

    Integer find with Skewed-Distribution !

    Description

    This test inserts a number of values with a markedly non-uniform integer keys into a container, then performs *************** *** 774,780 **** It uses the test file: performance/ext/pb_ds/hash_zlob_random_int_find_timing.cc

    The test checks the effect of different range-hashing ! functions and trigger policies.

    Results

    The graphic below show the results for the native, collision-chaining, and general-probing hash types.

    --- 773,779 ---- It uses the test file: performance/ext/pb_ds/hash_zlob_random_int_find_timing.cc

    The test checks the effect of different range-hashing ! functions and trigger policies.

    Results

    The graphic below show the results for the native, collision-chaining, and general-probing hash types.

    *************** *** 857,863 **** hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    In this setting, the distribution of keys is so skewed that the underlying hash-table type affects performance marginally. --- 856,862 ---- hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    In this setting, the distribution of keys is so skewed that the underlying hash-table type affects performance marginally. *************** *** 884,892 **** performance is bad, a χ2 test can be used to check how to transform it into a more uniform distribution.

    For this reason, this library's default range-hashing ! function is mask-based.

    Erase Memory Use !

    Description

    This test inserts a number of uniform integer keys into a container, then erases all keys except one. It measures --- 883,891 ---- performance is bad, a χ2 test can be used to check how to transform it into a more uniform distribution.

    For this reason, this library's default range-hashing ! function is mask-based.

    Erase Memory Use !

    Description

    This test inserts a number of uniform integer keys into a container, then erases all keys except one. It measures *************** *** 894,900 **** It uses the test file: performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc

    The test checks how containers adjust internally as their ! logical size decreases.

    Results

    The graphic below show the results for the native, collision-chaining, and general-probing hash types.

    --- 893,899 ---- It uses the test file: performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc

    The test checks how containers adjust internally as their ! logical size decreases.

    Results

    The graphic below show the results for the native, collision-chaining, and general-probing hash types.

    *************** *** 977,983 **** hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    The standard's hash-based containers act very differently than trees in this respect. When erasing numerous keys from an standard --- 976,982 ---- hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    The standard's hash-based containers act very differently than trees in this respect. When erasing numerous keys from an standard *************** *** 985,993 **** depending on whether the container is tree-based or hash-based. This is a fundamental consequence of the standard's interface for associative containers, and it is not due to a specific ! implementation.

    Branch-Based

    Text insert !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into a container --- 984,992 ---- depending on whether the container is tree-based or hash-based. This is a fundamental consequence of the standard's interface for associative containers, and it is not due to a specific ! implementation.

    Branch-Based

    Text insert !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into a container *************** *** 997,1003 **** data structures.

    It uses the test file: performance/ext/pb_ds/tree_text_insert_timing.cc !

    Results

    The three graphics below show the results for the native tree and this library's node-based trees, the native tree and --- 996,1002 ---- data structures.

    It uses the test file: performance/ext/pb_ds/tree_text_insert_timing.cc !

    Results

    The three graphics below show the results for the native tree and this library's node-based trees, the native tree and *************** *** 1078,1084 **** Node_update null_node_update !

    Observations

    Observing the first graphic implies that for this setting, a splay tree (tree with Tag --- 1077,1083 ---- Node_update null_node_update !

    Observations

    Observing the first graphic implies that for this setting, a splay tree (tree with Tag *************** *** 1098,1106 **** encountered, a new "hash-table" is built A large fan-out PATRICIA trie, however, doe does well in look-ups (see Branch-Based Text find Find Timing Test). It may be ! beneficial in semi-static settings.

    Text find !

    Description

    This test inserts a number of values with keys from an arbitrary text ([wickland96thirty]) into --- 1097,1105 ---- encountered, a new "hash-table" is built A large fan-out PATRICIA trie, however, doe does well in look-ups (see Branch-Based Text find Find Timing Test). It may be ! beneficial in semi-static settings.

    Text find !

    Description

    This test inserts a number of values with keys from an arbitrary text ([wickland96thirty]) into *************** *** 1111,1117 **** It uses the test file: performance/ext/pb_ds/text_find_timing.cc

    The test checks the effect of different underlying ! data structures.

    Results

    The graphic immediately below shows the results for the native tree type and several other tree types. --- 1110,1116 ---- It uses the test file: performance/ext/pb_ds/text_find_timing.cc

    The test checks the effect of different underlying ! data structures.

    Results

    The graphic immediately below shows the results for the native tree type and several other tree types. *************** *** 1170,1176 **** Node_Update null_node_update !

    Observations

    For this setting, a splay tree (tree with Tag --- 1169,1175 ---- Node_Update null_node_update !

    Observations

    For this setting, a splay tree (tree with Tag *************** *** 1203,1211 **** by a sub-trie. A large-fan-out PATRICIA trie does not do well on modifications (see Tree-Based and Trie-Based Text Insert Timing Test). Therefore, it is possibly beneficial in ! semi-static settings.

    Text find with Locality-of-Reference !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into --- 1202,1210 ---- by a sub-trie. A large-fan-out PATRICIA trie does not do well on modifications (see Tree-Based and Trie-Based Text Insert Timing Test). Therefore, it is possibly beneficial in ! semi-static settings.

    Text find with Locality-of-Reference !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into *************** *** 1219,1225 **** It uses the test file: performance/ext/pb_ds/tree_text_lor_find_timing.cc

    The test checks the effect of different underlying ! data structures in a locality-of-reference setting.

    Results

    The graphic immediately below shows the results for the native tree type and several other tree types. --- 1218,1224 ---- It uses the test file: performance/ext/pb_ds/tree_text_lor_find_timing.cc

    The test checks the effect of different underlying ! data structures in a locality-of-reference setting.

    Results

    The graphic immediately below shows the results for the native tree type and several other tree types. *************** *** 1278,1284 **** Node_Update null_node_update !

    Observations

    For this setting, an ordered-vector tree (tree with Tag --- 1277,1283 ---- Node_Update null_node_update !

    Observations

    For this setting, an ordered-vector tree (tree with Tag *************** *** 1288,1296 **** tree all share approximately the same performance.

    A splay tree (tree with Tag = splay_tree_tag) does much better, since each (successful) find "bubbles" the ! corresponding node to the root of the tree.

    split and join !

    Description

    This test a container, inserts into a number of values, splits the container at the median, and joins the two containers. (If the --- 1287,1295 ---- tree all share approximately the same performance.

    A splay tree (tree with Tag = splay_tree_tag) does much better, since each (successful) find "bubbles" the ! corresponding node to the root of the tree.

    split and join !

    Description

    This test a container, inserts into a number of values, splits the container at the median, and joins the two containers. (If the *************** *** 1307,1313 **** implication, this test checks the most efficient way to erase a sub-sequence from a tree-like-based container, since this can always be performed by a small sequence of splits and joins. !

    Results

    The graphic immediately below shows the results for the native tree type and several other tree types. --- 1306,1312 ---- implication, this test checks the most efficient way to erase a sub-sequence from a tree-like-based container, since this can always be performed by a small sequence of splits and joins. !

    Results

    The graphic immediately below shows the results for the native tree type and several other tree types. *************** *** 1366,1372 **** Node_Update null_node_update !

    Observations

    In this test, the native red-black trees must be split and joined externally, through a sequence of erase and --- 1365,1371 ---- Node_Update null_node_update !

    Observations

    In this test, the native red-black trees must be split and joined externally, through a sequence of erase and *************** *** 1393,1401 **** via container_traits).

    It is important to note that split and join are not esoteric methods - they are the most efficient means of erasing a contiguous range of values from a ! tree based container.

    Order-Statistics !

    Description

    This test creates a container, inserts random integers into the the container, and then checks the order-statistics of the --- 1392,1400 ---- via container_traits).

    It is important to note that split and join are not esoteric methods - they are the most efficient means of erasing a contiguous range of values from a ! tree based container.

    Order-Statistics !

    Description

    This test creates a container, inserts random integers into the the container, and then checks the order-statistics of the *************** *** 1410,1416 **** It uses the test file: performance/ext/pb_ds/tree_order_statistics_timing.cc

    The test checks the performance difference of policies based ! on node-invariant as opposed to a external functions.

    Results

    The graphic immediately below shows the results for the native tree type and several other tree types. --- 1409,1415 ---- It uses the test file: performance/ext/pb_ds/tree_order_statistics_timing.cc

    The test checks the performance difference of policies based ! on node-invariant as opposed to a external functions.

    Results

    The graphic immediately below shows the results for the native tree type and several other tree types. *************** *** 1445,1451 **** Node_Update tree_order_statistics_node_update !

    Observations

    In this test, the native red-black tree can support order-statistics queries only externally, by performing a --- 1444,1450 ---- Node_Update tree_order_statistics_node_update !

    Observations

    In this test, the native red-black tree can support order-statistics queries only externally, by performing a *************** *** 1462,1470 **** tree (tree with Tag = rb_tree_tag ) is logarithmic in the number of elements. Consequently, the splay ! tree has worse performance than the red-black tree.

    Multimap

    Text find with Small Secondary-to-Primary Key Ratios !

    Description

    This test inserts a number of pairs into a container. The first item of each pair is a string from an arbitrary text --- 1461,1469 ---- tree (tree with Tag = rb_tree_tag ) is logarithmic in the number of elements. Consequently, the splay ! tree has worse performance than the red-black tree.

    Multimap

    Text find with Small Secondary-to-Primary Key Ratios !

    Description

    This test inserts a number of pairs into a container. The first item of each pair is a string from an arbitrary text *************** *** 1483,1489 **** It uses the test file: performance/ext/pb_ds/multimap_text_find_timing_small.cc

    The test checks the find-time scalability of different ! "multimap" designs.

    Results

    The graphic below show the results for "multimaps" which use a tree-based container for primary keys. --- 1482,1488 ---- It uses the test file: performance/ext/pb_ds/multimap_text_find_timing_small.cc

    The test checks the find-time scalability of different ! "multimap" designs.

    Results

    The graphic below show the results for "multimaps" which use a tree-based container for primary keys. *************** *** 1631,1642 **** hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    See Observations::Mapping-Semantics ! Considerations.

    Text find with Large Secondary-to-Primary Key Ratios !

    Description

    This test inserts a number of pairs into a container. The first item of each pair is a string from an arbitrary text --- 1630,1641 ---- hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    See Observations::Mapping-Semantics ! Considerations.

    Text find with Large Secondary-to-Primary Key Ratios !

    Description

    This test inserts a number of pairs into a container. The first item of each pair is a string from an arbitrary text *************** *** 1654,1660 **** It uses the test file: performance/ext/pb_ds/multimap_text_find_timing_large.cc

    The test checks the find-time scalability of different ! "multimap" designs.

    Results

    The graphic below show the results for "multimaps" which use a tree-based container for primary keys. --- 1653,1659 ---- It uses the test file: performance/ext/pb_ds/multimap_text_find_timing_large.cc

    The test checks the find-time scalability of different ! "multimap" designs.

    Results

    The graphic below show the results for "multimaps" which use a tree-based container for primary keys. *************** *** 1802,1814 **** hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    See Observations::Mapping-Semantics ! Considerations.

    Text insert with Small Secondary-to-Primary Key Ratios !

    Description

    This test inserts a number of pairs into a container. The first item of each pair is a string from an arbitrary text --- 1801,1813 ---- hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    See Observations::Mapping-Semantics ! Considerations.

    Text insert with Small Secondary-to-Primary Key Ratios !

    Description

    This test inserts a number of pairs into a container. The first item of each pair is a string from an arbitrary text *************** *** 1828,1834 **** It uses the test file: performance/ext/pb_ds/multimap_text_insert_timing_small.cc

    The test checks the insert-time scalability of different ! "multimap" designs.

    Results

    The graphic below show the results for "multimaps" which use a tree-based container for primary keys. --- 1827,1833 ---- It uses the test file: performance/ext/pb_ds/multimap_text_insert_timing_small.cc

    The test checks the insert-time scalability of different ! "multimap" designs.

    Results

    The graphic below show the results for "multimaps" which use a tree-based container for primary keys. *************** *** 1976,1988 **** hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    See Observations::Mapping-Semantics ! Considerations.

    Text insert with Small Secondary-to-Primary Key Ratios !

    Description

    This test inserts a number of pairs into a container. The first item of each pair is a string from an arbitrary text --- 1975,1987 ---- hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    See Observations::Mapping-Semantics ! Considerations.

    Text insert with Small Secondary-to-Primary Key Ratios !

    Description

    This test inserts a number of pairs into a container. The first item of each pair is a string from an arbitrary text *************** *** 2002,2008 **** It uses the test file: performance/ext/pb_ds/multimap_text_insert_timing_large.cc

    The test checks the insert-time scalability of different ! "multimap" designs.

    Results

    The graphic below show the results for "multimaps" which use a tree-based container for primary keys. --- 2001,2007 ---- It uses the test file: performance/ext/pb_ds/multimap_text_insert_timing_large.cc

    The test checks the insert-time scalability of different ! "multimap" designs.

    Results

    The graphic below show the results for "multimaps" which use a tree-based container for primary keys. *************** *** 2150,2162 **** hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    See Observations::Mapping-Semantics ! Considerations.

    Text insert with Small Secondary-to-Primary Key Ratios Memory Use !

    Description

    This test inserts a number of pairs into a container. The first item of each pair is a string from an arbitrary text --- 2149,2161 ---- hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    See Observations::Mapping-Semantics ! Considerations.

    Text insert with Small Secondary-to-Primary Key Ratios Memory Use !

    Description

    This test inserts a number of pairs into a container. The first item of each pair is a string from an arbitrary text *************** *** 2171,2177 **** It uses the test file: performance/ext/pb_ds/multimap_text_insert_mem_usage_small.cc

    The test checks the memory scalability of different ! "multimap" designs.

    Results

    The graphic below show the results for "multimaps" which use a tree-based container for primary keys. --- 2170,2176 ---- It uses the test file: performance/ext/pb_ds/multimap_text_insert_mem_usage_small.cc

    The test checks the memory scalability of different ! "multimap" designs.

    Results

    The graphic below show the results for "multimaps" which use a tree-based container for primary keys. *************** *** 2319,2331 **** hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    See Observations::Mapping-Semantics ! Considerations.

    Text insert with Small Secondary-to-Primary Key Ratios Memory Use !

    Description

    This test inserts a number of pairs into a container. The first item of each pair is a string from an arbitrary text --- 2318,2330 ---- hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    See Observations::Mapping-Semantics ! Considerations.

    Text insert with Small Secondary-to-Primary Key Ratios Memory Use !

    Description

    This test inserts a number of pairs into a container. The first item of each pair is a string from an arbitrary text *************** *** 2340,2346 **** It uses the test file: performance/ext/pb_ds/multimap_text_insert_mem_usage_large.cc

    The test checks the memory scalability of different ! "multimap" designs.

    Results

    The graphic below show the results for "multimaps" which use a tree-based container for primary keys. --- 2339,2345 ---- It uses the test file: performance/ext/pb_ds/multimap_text_insert_mem_usage_large.cc

    The test checks the memory scalability of different ! "multimap" designs.

    Results

    The graphic below show the results for "multimaps" which use a tree-based container for primary keys. *************** *** 2488,2499 **** hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    See Observations::Mapping-Semantics ! Considerations.

    Priority Queue

    Text push !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into --- 2487,2498 ---- hash_load_check_resize_trigger with αmin = 1/8 and αmax = 1/2 !

    Observations

    See Observations::Mapping-Semantics ! Considerations.

    Priority Queue

    Text push !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into *************** *** 2504,2510 **** performance/ext/pb_ds/priority_queue_text_push_timing.cc

    The test checks the effect of different underlying data structures. !

    Results

    The two graphics below show the results for the native priority_queues and this library's priority_queues. --- 2503,2509 ---- performance/ext/pb_ds/priority_queue_text_push_timing.cc

    The test checks the effect of different underlying data structures. !

    Results

    The two graphics below show the results for the native priority_queues and this library's priority_queues. *************** *** 2609,2615 **** Tag pairing_heap_tag !

    Observations

    Pairing heaps (priority_queue with Tag = pairing_heap_tag) --- 2608,2614 ---- Tag pairing_heap_tag !

    Observations

    Pairing heaps (priority_queue with Tag = pairing_heap_tag) *************** *** 2627,2635 **** operation, and the deque implementation is possibly hampered by its need to manipulate a relatively-complex type (deques support a O(1) push_front, even though it is ! not used by std::priority_queue.)

    Text push and pop !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into --- 2626,2634 ---- operation, and the deque implementation is possibly hampered by its need to manipulate a relatively-complex type (deques support a O(1) push_front, even though it is ! not used by std::priority_queue.)

    Text push and pop !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into *************** *** 2640,2646 **** performance/ext/pb_ds/priority_queue_text_push_pop_timing.cc

    The test checks the effect of different underlying data structures. !

    Results

    The two graphics below show the results for the native priority_queues and this library's priority_queues. --- 2639,2645 ---- performance/ext/pb_ds/priority_queue_text_push_pop_timing.cc

    The test checks the effect of different underlying data structures. !

    Results

    The two graphics below show the results for the native priority_queues and this library's priority_queues. *************** *** 2737,2743 **** Tag pairing_heap_tag !

    Observations

    These results are very similar to Priority Queue Text push Timing Test. As stated there, pairing heaps --- 2736,2742 ---- Tag pairing_heap_tag !

    Observations

    These results are very similar to Priority Queue Text push Timing Test. As stated there, pairing heaps *************** *** 2757,2765 **** of push operations, pairing heaps are better in this case. See Priority Queue Random Integer push and pop ! Timing Test for a case which is different.

    Integer push !

    Description

    This test inserts a number of values with integer keys into a container using push. It --- 2756,2764 ---- of push operations, pairing heaps are better in this case. See Priority Queue Random Integer push and pop ! Timing Test for a case which is different.

    Integer push !

    Description

    This test inserts a number of values with integer keys into a container using push. It *************** *** 2769,2775 **** performance/ext/pb_ds/priority_queue_random_int_push_timing.cc

    The test checks the effect of different underlying data structures. !

    Results

    The two graphics below show the results for the native priority_queues and this library's priority_queues. --- 2768,2774 ---- performance/ext/pb_ds/priority_queue_random_int_push_timing.cc

    The test checks the effect of different underlying data structures. !

    Results

    The two graphics below show the results for the native priority_queues and this library's priority_queues. *************** *** 2866,2872 **** Tag binary_heap_tag !

    Observations

    Binary heaps are the most suited for sequences of push and pop operations of primitive types --- 2865,2871 ---- Tag binary_heap_tag !

    Observations

    Binary heaps are the most suited for sequences of push and pop operations of primitive types *************** *** 2875,2883 **** such types in arrays, they outperform even pairing heaps. (See Priority Queue Text push Timing Test for the case of ! non-primitive types.)

    Integer push !

    Description

    This test inserts a number of values with integer keys into a container using push , then removes them --- 2874,2882 ---- such types in arrays, they outperform even pairing heaps. (See Priority Queue Text push Timing Test for the case of ! non-primitive types.)

    Integer push !

    Description

    This test inserts a number of values with integer keys into a container using push , then removes them *************** *** 2888,2894 **** performance/ext/pb_ds/priority_queue_random_int_push_pop_timing.cc

    The test checks the effect of different underlying data structures. !

    Results

    The graphic immediately below shows the results for the native priority_queue type instantiated with different underlying --- 2887,2893 ---- performance/ext/pb_ds/priority_queue_random_int_push_pop_timing.cc

    The test checks the effect of different underlying data structures. !

    Results

    The graphic immediately below shows the results for the native priority_queue type instantiated with different underlying *************** *** 2953,2959 **** Tag pairing_heap_tag !

    Observations

    Binary heaps are the most suited for sequences of push and pop operations of primitive types --- 2952,2958 ---- Tag pairing_heap_tag !

    Observations

    Binary heaps are the most suited for sequences of push and pop operations of primitive types *************** *** 2975,2983 **** the number of pop operations is at most that of push operations, the test here is the "best" for the standard's ! priority queue.

    Text pop Memory Use !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into --- 2974,2982 ---- the number of pop operations is at most that of push operations, the test here is the "best" for the standard's ! priority queue.

    Text pop Memory Use !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into *************** *** 2988,2994 **** performance/ext/pb_ds/priority_queue_text_pop_mem_usage.cc

    The test checks the effect of different underlying data structures. !

    Results

    The graphic immediately below shows the results for the native priority_queue type instantiated with different underlying --- 2987,2993 ---- performance/ext/pb_ds/priority_queue_text_pop_mem_usage.cc

    The test checks the effect of different underlying data structures. !

    Results

    The graphic immediately below shows the results for the native priority_queue type instantiated with different underlying *************** *** 3053,3059 **** Tag pairing_heap_tag !

    Observations

    The priority queue implementations (excluding the standard's) use memory proportionally to the number of values they hold: --- 3052,3058 ---- Tag pairing_heap_tag !

    Observations

    The priority queue implementations (excluding the standard's) use memory proportionally to the number of values they hold: *************** *** 3066,3074 **** impede performance compared to the standard's priority queues.

    See Hash-Based Erase Memory Use Test for a similar phenomenon regarding priority ! queues.

    Text join !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into --- 3065,3073 ---- impede performance compared to the standard's priority queues.

    See Hash-Based Erase Memory Use Test for a similar phenomenon regarding priority ! queues.

    Text join !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into *************** *** 3081,3087 **** performance/ext/pb_ds/priority_queue_text_join_timing.cc

    The test checks the effect of different underlying data structures. !

    Results

    The graphic immediately below shows the results for the native priority_queue type instantiated with different underlying --- 3080,3086 ---- performance/ext/pb_ds/priority_queue_text_join_timing.cc

    The test checks the effect of different underlying data structures. !

    Results

    The graphic immediately below shows the results for the native priority_queue type instantiated with different underlying *************** *** 3146,3152 **** Tag pairing_heap_tag !

    Observations

    In this test the node-based heaps perform join in either logarithmic or constant time. The binary heap requires --- 3145,3151 ---- Tag pairing_heap_tag !

    Observations

    In this test the node-based heaps perform join in either logarithmic or constant time. The binary heap requires *************** *** 3158,3166 **** and size() (since they are enough to expose the underlying array), but this is impossible for a std::deque-based standard priority queue. ! Without heapify, the cost is super-linear.

    Text modify Up !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into --- 3157,3165 ---- and size() (since they are enough to expose the underlying array), but this is impossible for a std::deque-based standard priority queue. ! Without heapify, the cost is super-linear.

    Text modify Up !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into *************** *** 3178,3184 **** arbitrary value larger (in the sense of the priority queue's comparison functor) corresponds to decrease-key in standard graph algorithms [clrs2001]. !

    Results

    The two graphics below show the results for the native priority_queues and this library's priority_queues. --- 3177,3183 ---- arbitrary value larger (in the sense of the priority queue's comparison functor) corresponds to decrease-key in standard graph algorithms [clrs2001]. !

    Results

    The two graphics below show the results for the native priority_queues and this library's priority_queues. *************** *** 3267,3273 **** Tag pairing_heap_tag !

    Observations

    As noted above, increasing an arbitrary value (in the sense of the priority queue's comparison functor) is very common in --- 3266,3272 ---- Tag pairing_heap_tag !

    Observations

    As noted above, increasing an arbitrary value (in the sense of the priority queue's comparison functor) is very common in *************** *** 3295,3303 **** finding the appropriate value, then use the range-type iterator for the modify operation.

    The explanation for the standard's priority queues' performance is similar to that in Priority Queue Text ! join Timing Test.

    Text modify Down !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into --- 3294,3302 ---- finding the appropriate value, then use the range-type iterator for the modify operation.

    The explanation for the standard's priority queues' performance is similar to that in Priority Queue Text ! join Timing Test.

    Text modify Down !

    Description

    This test inserts a number of values with keys from an arbitrary text ([ wickland96thirty ]) into *************** *** 3311,3317 **** It uses the test file: performance/ext/pb_ds/priority_queue_text_modify_down_timing.cc

    The main purpose of this test is to contrast Priority Queue ! Text modify Up Timing Test.

    Results

    The two graphics below show the results for the native priority_queues and this library's priority_queues. --- 3310,3316 ---- It uses the test file: performance/ext/pb_ds/priority_queue_text_modify_down_timing.cc

    The main purpose of this test is to contrast Priority Queue ! Text modify Up Timing Test.

    Results

    The two graphics below show the results for the native priority_queues and this library's priority_queues. *************** *** 3400,3406 **** Tag pairing_heap_tag !

    Observations

    Most points in these results are similar to Priority Queue Text modify Up Timing Test.

    It is interesting to note, however, that as opposed to that --- 3399,3405 ---- Tag pairing_heap_tag !

    Observations

    Most points in these results are similar to Priority Queue Text modify Up Timing Test.

    It is interesting to note, however, that as opposed to that *************** *** 3415,3421 **** (in the sense of the priority queue's comparison functor), and so Priority Queue Text modify Up Timing Test - is more interesting ! than this test.

    Observations

    Associative
    Underlying Data-Structure Families

    In general, hash-based containers have better timing performance than containers based on different underlying-data structures. The --- 3414,3420 ---- (in the sense of the priority queue's comparison functor), and so Priority Queue Text modify Up Timing Test - is more interesting ! than this test.

    Observations

    Associative
    Underlying Data-Structure Families

    In general, hash-based containers have better timing performance than containers based on different underlying-data structures. The *************** *** 3424,3430 **** order-preservation, or the ability to utilize node invariants. If memory-use is the major factor, an ordered-vector tree gives optimal results (albeit with high modificiation costs), and a ! list-based container gives reasonable results.

    Hash-Based Containers

    Hash-based containers are typically either collision chaining or probing. Collision-chaining --- 3423,3429 ---- order-preservation, or the ability to utilize node invariants. If memory-use is the major factor, an ordered-vector tree gives optimal results (albeit with high modificiation costs), and a ! list-based container gives reasonable results.

    Hash-Based Containers

    Hash-based containers are typically either collision chaining or probing. Collision-chaining *************** *** 3439,3445 **** useful also in multithreaded applications where each thread manipulates a hash-based container: in the standard, allocators have class-wise semantics (see [meyers96more] - Item 10); a ! probing container might incur less contention in this case.

    Hash Policies

    In hash-based containers, the range-hashing scheme seems to affect performance more than other considerations. In most --- 3438,3444 ---- useful also in multithreaded applications where each thread manipulates a hash-based container: in the standard, allocators have class-wise semantics (see [meyers96more] - Item 10); a ! probing container might incur less contention in this case.

    Hash Policies

    In hash-based containers, the range-hashing scheme seems to affect performance more than other considerations. In most *************** *** 3458,3464 **** function.

    An orthogonal consideration is the trigger policy. This presents difficult tradeoffs. E.g., different load factors in a load-check trigger policy yield a ! space/amortized-cost tradeoff.

    Branch-Based Containers

    In general, there are several families of tree-based underlying data structures: balanced node-based trees --- 3457,3463 ---- function.

    An orthogonal consideration is the trigger policy. This presents difficult tradeoffs. E.g., different load factors in a load-check trigger policy yield a ! space/amortized-cost tradeoff.

    Branch-Based Containers

    In general, there are several families of tree-based underlying data structures: balanced node-based trees *************** *** 3505,3511 **** maintaining such trees is higher than that of balanced trees. Moderate-fan-out trees might be useful for sequences where each element has a limited number of choices, e.g., DNA ! strings.

    Mapping-Semantics

    Different mapping semantics were discussed in the introduction and design sections.Here the focus will be on the case where a keys can be composed into --- 3504,3510 ---- maintaining such trees is higher than that of balanced trees. Moderate-fan-out trees might be useful for sequences where each element has a limited number of choices, e.g., DNA ! strings.

    Mapping-Semantics

    Different mapping semantics were discussed in the introduction and design sections.Here the focus will be on the case where a keys can be composed into *************** *** 3585,3591 **** but with very high constants; using 1 with a tree-based container, the cost is Θ(nlog(mn)). Using 2, 3, and 4, the expected cost is Θ(n), but typically ! with far lower costs than 1. 5 is similar to 1.

    Priority_Queue
    Complexity

    The following table shows the complexities of the different underlying data structures in terms of orders of growth. It is interesting to note that this table implies something about the constants of the operations as well (see Amortized push --- 3584,3590 ---- but with very high constants; using 1 with a tree-based container, the cost is Θ(nlog(mn)). Using 2, 3, and 4, the expected cost is Θ(n), but typically ! with far lower costs than 1. 5 is similar to 1.

    Priority_Queue
    Complexity

    The following table shows the complexities of the different underlying data structures in terms of orders of growth. It is interesting to note that this table implies something about the constants of the operations as well (see Amortized push *************** *** 3709,3715 **** of the priority queue's comparison functor), then the amortized time is O(1), but if II) it decreases it, then the amortized time is the same as the worst case time. Note that ! for most algorithms, I) is important and II) is not.

    Amortized push and pop operations

    In many cases, a priority queue is needed primarily for --- 3708,3714 ---- of the priority queue's comparison functor), then the amortized time is O(1), but if II) it decreases it, then the amortized time is the same as the worst case time. Note that ! for most algorithms, I) is important and II) is not.

    Amortized push and pop operations

    In many cases, a priority queue is needed primarily for *************** *** 3739,3745 **** Queue Random Integer push Timing Test and Priority Queue Random Integer push and pop Timing ! Test.

    Graph Algorithms

    In some graph algorithms, a decrease-key operation is required [clrs2001]; --- 3738,3744 ---- Queue Random Integer push Timing Test and Priority Queue Random Integer push and pop Timing ! Test.

    Graph Algorithms

    In some graph algorithms, a decrease-key operation is required [clrs2001]; *************** *** 3759,3762 **** as well. It is difficult to find an a-priori characterization of graphs in which the actual number of modify operations will dwarf the number of push and ! pop operations.

    --- 3758,3761 ---- as well. It is difficult to find an a-priori characterization of graphs in which the actual number of modify operations will dwarf the number of push and ! pop operations.

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/policy_data_structures.html gcc-4.7.4/libstdc++-v3/doc/html/manual/policy_data_structures.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/policy_data_structures.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/policy_data_structures.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Chapter 22. Policy-Based Data Structures

    Chapter 22. Policy-Based Data Structures

    Intro

    This is a library of policy-based elementary data structures: associative containers and priority queues. It is designed for high-performance, flexibility, semantic safety, and conformance to --- 64,70 ---- Text modify Up

    Text modify Down !
    Observations
    Associative
    Priority_Queue
    Acknowledgments
    Bibliography

    Intro

    This is a library of policy-based elementary data structures: associative containers and priority queues. It is designed for high-performance, flexibility, semantic safety, and conformance to *************** *** 73,79 **** std::tr1 (except for some points where it differs by design).

    !

    Performance Issues

    An attempt is made to categorize the wide variety of possible container designs in terms of performance-impacting factors. These --- 72,78 ---- std::tr1 (except for some points where it differs by design).

    !

    Performance Issues

    An attempt is made to categorize the wide variety of possible container designs in terms of performance-impacting factors. These *************** *** 93,99 ****

    Specific issues found while unraveling performance factors in the design of associative containers and priority queues follow. !

    Associative

    Associative containers depend on their composite policies to a very large extent. Implicitly hard-wiring policies can hamper their performance and limit their functionality. An efficient hash-based --- 92,98 ----

    Specific issues found while unraveling performance factors in the design of associative containers and priority queues follow. !

    Associative

    Associative containers depend on their composite policies to a very large extent. Implicitly hard-wiring policies can hamper their performance and limit their functionality. An efficient hash-based *************** *** 134,140 **** is a red-black tree, then splitting a reference to the container is exception-free; if it is an ordered-vector tree, exceptions can be thrown. !

    Priority Que

    Priority queues are useful when one needs to efficiently access a minimum (or maximum) value as the set of values changes.

    --- 133,139 ---- is a red-black tree, then splitting a reference to the container is exception-free; if it is an ordered-vector tree, exceptions can be thrown. !

    Priority Que

    Priority queues are useful when one needs to efficiently access a minimum (or maximum) value as the set of values changes.

    *************** *** 176,182 **** expense of more difference in the the kinds of operations that the underlying data structure can support. These differences pose a challenge when creating a uniform interface for priority queues. !

    Goals

    Many fine associative-container libraries were already written, most notably, the C++ standard's associative containers. Why then write another library? This section shows some possible --- 175,181 ---- expense of more difference in the the kinds of operations that the underlying data structure can support. These differences pose a challenge when creating a uniform interface for priority queues. !

    Goals

    Many fine associative-container libraries were already written, most notably, the C++ standard's associative containers. Why then write another library? This section shows some possible *************** *** 187,194 **** only then adding hash-based containers, which are fundamentally different), did not standardize priority queues as containers, and (in our opinion) overloads the iterator concept. !

    Associative

    !

    Policy Choices

    Associative containers require a relatively large number of policies to function efficiently in various settings. In some cases this is needed for making their common operations more --- 186,193 ---- only then adding hash-based containers, which are fundamentally different), did not standardize priority queues as containers, and (in our opinion) overloads the iterator concept. !

    Associative

    !

    Policy Choices

    Associative containers require a relatively large number of policies to function efficiently in various settings. In some cases this is needed for making their common operations more *************** *** 249,255 **** these invariants, one must supply some policy that is aware of these changes. Without this, it would be better to use a linked list (in itself very efficient for these purposes). !

    Figure 22.1. Node Invariants

    Node Invariants

    Underlying Data Structures

    The standard C++ library contains associative containers based on red-black trees and collision-chaining hash tables. These are very useful, but they are not ideal for all types of --- 248,254 ---- these invariants, one must supply some policy that is aware of these changes. Without this, it would be better to use a linked list (in itself very efficient for these purposes). !

    Figure 22.1. Node Invariants

    Node Invariants

    Underlying Data Structures

    The standard C++ library contains associative containers based on red-black trees and collision-chaining hash tables. These are very useful, but they are not ideal for all types of *************** *** 257,263 ****

    The figure below shows the different underlying data structures currently supported in this library. !

    Figure 22.2. Underlying Associative Data Structures

    Underlying Associative Data Structures

    A shows a collision-chaining hash-table, B shows a probing hash-table, C shows a red-black tree, D shows a splay tree, E shows a tree based on an ordered vector(implicit in the order of the --- 256,262 ----

    The figure below shows the different underlying data structures currently supported in this library. !

    Figure 22.2. Underlying Associative Data Structures

    Underlying Associative Data Structures

    A shows a collision-chaining hash-table, B shows a probing hash-table, C shows a red-black tree, D shows a splay tree, E shows a tree based on an ordered vector(implicit in the order of the *************** *** 334,340 **** library iterators, for example) can ease generic manipulation of associative containers based on different underlying data structures. !

    Iterators

    Iterators are centric to the design of the standard library containers, because of the container/algorithm/iterator decomposition that allows an algorithm to operate on a range --- 333,339 ---- library iterators, for example) can ease generic manipulation of associative containers based on different underlying data structures. !

    Iterators

    Iterators are centric to the design of the standard library containers, because of the container/algorithm/iterator decomposition that allows an algorithm to operate on a range *************** *** 359,365 **** "ds_gen.html#find_range">Design::Associative Containers::Data-Structure Genericity::Point-Type and Range-Type Methods. !

    Using Point Iterators for Range Operations

    Suppose cntnr is some associative container, and say c is an object of type cntnr. Then what will be the outcome --- 358,364 ---- "ds_gen.html#find_range">Design::Associative Containers::Data-Structure Genericity::Point-Type and Range-Type Methods. !

    Using Point Iterators for Range Operations

    Suppose cntnr is some associative container, and say c is an object of type cntnr. Then what will be the outcome *************** *** 376,382 **** no guarantee that the elements traversed will coincide with the logical elements between 1 and 5, as in label B. !

    Figure 22.3. Range Iteration in Different Data Structures

    Node Invariants

    In our opinion, this problem is not caused just because red-black trees are order preserving while collision-chaining hash tables are (generally) not - it --- 375,381 ---- no guarantee that the elements traversed will coincide with the logical elements between 1 and 5, as in label B. !

    Figure 22.3. Range Iteration in Different Data Structures

    Node Invariants

    In our opinion, this problem is not caused just because red-black trees are order preserving while collision-chaining hash tables are (generally) not - it *************** *** 397,403 **** Consequently, applying an algorithm to a sequence obtained from most containers may or may not make sense, but applying it to a sub-sequence of a self-organizing container does not. !

    Cost to Point Iterators to Enable Range Operations

    Suppose c is some collision-chaining hash-based container object, and one calls

    c.find(3)

    --- 396,402 ---- Consequently, applying an algorithm to a sequence obtained from most containers may or may not make sense, but applying it to a sub-sequence of a self-organizing container does not. !

    Cost to Point Iterators to Enable Range Operations

    Suppose c is some collision-chaining hash-based container object, and one calls

    c.find(3)

    *************** *** 427,437 **** list, as in the graphic below, label B. Here the iterators are as light as can be, but the hash-table's operations are more complicated. !

    Figure 22.4. Point Iteration in Hash Data Structures

    Point Iteration in Hash Data Structures

    It should be noted that containers based on collision-chaining hash-tables are not the only ones with this type of behavior; many other self-organizing data structures display it as well. !

    Invalidation Guarantees

    Consider the following snippet:

      	      it = c.find(3);
      	      c.erase(5);
      	    

    --- 426,436 ---- list, as in the graphic below, label B. Here the iterators are as light as can be, but the hash-table's operations are more complicated. !

    Figure 22.4. Point Iteration in Hash Data Structures

    Point Iteration in Hash Data Structures

    It should be noted that containers based on collision-chaining hash-tables are not the only ones with this type of behavior; many other self-organizing data structures display it as well. !

    Invalidation Guarantees

    Consider the following snippet:

      	      it = c.find(3);
      	      c.erase(5);
      	    

    *************** *** 443,449 **** container. The graphic below shows three cases: A1 and A2 show a red-black tree; B1 and B2 show a probing hash-table; C1 and C2 show a collision-chaining hash table. !

    Figure 22.5. Effect of erase in different underlying data structures

    Effect of erase in different underlying data structures

    1. Erasing 5 from A1 yields A2. Clearly, an iterator to 3 can be de-referenced and incremented. The sequence of iterators changed, but in a way that is well-defined by the interface. --- 442,448 ---- container. The graphic below shows three cases: A1 and A2 show a red-black tree; B1 and B2 show a probing hash-table; C1 and C2 show a collision-chaining hash table. !

      Figure 22.5. Effect of erase in different underlying data structures

      Effect of erase in different underlying data structures

      1. Erasing 5 from A1 yields A2. Clearly, an iterator to 3 can be de-referenced and incremented. The sequence of iterators changed, but in a way that is well-defined by the interface. *************** *** 465,471 **** to express whether it is valid or not. This is true also for insert. Again, the iterator concept seems overloaded. !

    Functional

    The design of the functional overlay to the underlying data structures differs slightly from some of the conventions used in --- 464,470 ---- to express whether it is valid or not. This is true also for insert. Again, the iterator concept seems overloaded. !

    Functional

    The design of the functional overlay to the underlying data structures differs slightly from some of the conventions used in *************** *** 476,482 **** rubric, the standard associative containers lack some useful methods, and provide other methods which would be better removed. !

    erase
    1. Order-preserving standard associative containers provide the method

      --- 475,481 ----
        	    rubric, the standard associative containers lack some useful
        	    methods, and provide other methods which would be better
        	    removed.
      ! 	  

      erase
      1. Order-preserving standard associative containers provide the method

        ***************
        *** 548,554 ****
          		  is almost certain to do something
          		  different than erasing all elements whose keys are between 2
          		  and 5, and is likely to produce other undefined behavior.
        ! 		

      split and join

      It is well-known that tree-based and trie-based container --- 547,553 ---- is almost certain to do something different than erasing all elements whose keys are between 2 and 5, and is likely to produce other undefined behavior. !

    split and join

    It is well-known that tree-based and trie-based container *************** *** 559,565 **** choices for tree-based container methods, especially, since as noted just before, they are efficient replacements for erasing sub-sequences. !

    insert

    The standard associative containers provide methods of the form --- 558,564 ---- choices for tree-based container methods, especially, since as noted just before, they are efficient replacements for erasing sub-sequences. !

    insert

    The standard associative containers provide methods of the form *************** *** 575,581 **** similar to constructors taking a range given by a pair of iterators; the constructors, however, are transactional, whereas the insert methods are not; this is possibly confusing. !

    operator== and operator<=

    Associative containers are parametrized by policies allowing to --- 574,580 ---- similar to constructors taking a range given by a pair of iterators; the constructors, however, are transactional, whereas the insert methods are not; this is possibly confusing. !

    operator== and operator<=

    Associative containers are parametrized by policies allowing to *************** *** 595,601 **** equivalence; also, are two containers considered equivalent if they store the same values in different order? this is an arbitrary decision. !

    Priority Queues

    Policy Choices

    Priority queues are containers that allow efficiently inserting values and accessing the maximal value (in the sense of the container's comparison functor). Their interface --- 594,600 ---- equivalence; also, are two containers considered equivalent if they store the same values in different order? this is an arbitrary decision. !

    Priority Queues

    Policy Choices

    Priority queues are containers that allow efficiently inserting values and accessing the maximal value (in the sense of the container's comparison functor). Their interface *************** *** 672,685 **** comparing the iterator returned by find to the iterator returned by end, and not by comparing a pointer returned by find to NULL. !

    Underlying Data Structures

    There are three main implementations of priority queues: the first employs a binary heap, typically one which uses a sequence; the second uses a tree (or forest of trees), which is typically less structured than an associative container's tree; the third simply uses an associative container. These are shown in the figure below with labels A1 and A2, B, and C. !

    Figure 22.6. Underlying Priority Queue Data Structures

    Underlying Priority Queue Data Structures

    No single implementation can completely replace any of the others. Some have better push and pop amortized performance, some have --- 671,684 ---- comparing the iterator returned by find to the iterator returned by end, and not by comparing a pointer returned by find to NULL. !

    Underlying Data Structures

    There are three main implementations of priority queues: the first employs a binary heap, typically one which uses a sequence; the second uses a tree (or forest of trees), which is typically less structured than an associative container's tree; the third simply uses an associative container. These are shown in the figure below with labels A1 and A2, B, and C. !

    Figure 22.6. Underlying Priority Queue Data Structures

    Underlying Priority Queue Data Structures

    No single implementation can completely replace any of the others. Some have better push and pop amortized performance, some have *************** *** 694,700 **** important for priority queues, since the invalidation guarantees of one of the most useful data structures - binary heaps - is markedly different than those of most of the others. !

    Binary Heaps

    Binary heaps are one of the most useful underlying data structures for priority queues. They are very efficient in terms of memory (since they don't require per-value structure --- 693,699 ---- important for priority queues, since the invalidation guarantees of one of the most useful data structures - binary heaps - is markedly different than those of most of the others. !

    Binary Heaps

    Binary heaps are one of the most useful underlying data structures for priority queues. They are very efficient in terms of memory (since they don't require per-value structure *************** *** 771,777 **** std::priority_queue, however, this will generally change the order of growth of the entire sequence of operations. !

    Bibliography

    [biblio.abrahams97exception] STL Exception Handling Contract --- 770,776 ---- std::priority_queue, however, this will generally change the order of growth of the entire sequence of operations. !

    Bibliography

    [biblio.abrahams97exception] STL Exception Handling Contract *************** *** 781,787 **** Abrahams . ISO SC22/WG21 ! .

    [biblio.alexandrescu01modern] Modern C++ Design: Generic Programming and Design Patterns Applied . 2001 --- 780,786 ---- Abrahams . ISO SC22/WG21 ! .

    [biblio.alexandrescu01modern] Modern C++ Design: Generic Programming and Design Patterns Applied . 2001 *************** *** 791,797 **** Alexandrescu . Addison-Wesley Publishing Company ! .

    [biblio.andrew04mtf] MTF, Bit, and COMB: A Guide to Deterministic and Randomized Algorithms for the List Update Problem . --- 790,796 ---- Alexandrescu . Addison-Wesley Publishing Company ! .

    [biblio.andrew04mtf] MTF, Bit, and COMB: A Guide to Deterministic and Randomized Algorithms for the List Update Problem . *************** *** 802,808 **** D. Gleich ! .

    [biblio.austern00noset] Why You Shouldn't Use set - and What You Should Use Instead . April, 2000 --- 801,807 ---- D. Gleich ! .

    [biblio.austern00noset] Why You Shouldn't Use set - and What You Should Use Instead . April, 2000 *************** *** 812,818 **** Austern . C++ Report ! .

    [biblio.austern01htprop] A Proposal to Add Hashtables to the Standard Library --- 811,817 ---- Austern . C++ Report ! .

    [biblio.austern01htprop] A Proposal to Add Hashtables to the Standard Library *************** *** 824,830 **** Austern . ISO SC22/WG21 ! .

    [biblio.austern98segmentedit] Segmented iterators and hierarchical algorithms . April, 1998 --- 823,829 ---- Austern . ISO SC22/WG21 ! .

    [biblio.austern98segmentedit] Segmented iterators and hierarchical algorithms . April, 1998 *************** *** 834,840 **** Austern . Generic Programming ! .

    [biblio.dawestimer] Boost Timer Library --- 833,839 ---- Austern . Generic Programming ! .

    [biblio.dawestimer] Boost Timer Library *************** *** 844,850 **** Dawes . Boost ! .

    [biblio.clearypool] Boost Pool Library --- 843,849 ---- Dawes . Boost ! .

    [biblio.clearypool] Boost Pool Library *************** *** 854,860 **** Cleary . Boost ! .

    [biblio.maddocktraits] Boost Type Traits Library --- 853,859 ---- Cleary . Boost ! .

    [biblio.maddocktraits] Boost Type Traits Library *************** *** 868,874 **** Cleary . Boost ! .

    [biblio.brodal96priority] Worst-case efficient priority queues --- 867,873 ---- Cleary . Boost ! .

    [biblio.brodal96priority] Worst-case efficient priority queues *************** *** 876,882 **** Gerth Stolting Brodal ! .

    [biblio.bulkamayheweff] Efficient C++ Programming Techniques . 1997 --- 875,881 ---- Gerth Stolting Brodal ! .

    [biblio.bulkamayheweff] Efficient C++ Programming Techniques . 1997 *************** *** 890,896 **** Mayhew . Addison-Wesley Publishing Company ! .

    [biblio.clrs2001] Introduction to Algorithms, 2nd edition . 2001 --- 889,895 ---- Mayhew . Addison-Wesley Publishing Company ! .

    [biblio.clrs2001] Introduction to Algorithms, 2nd edition . 2001 *************** *** 912,918 **** Stein . MIT Press ! .

    [biblio.dubhashi98neg] Balls and bins: A study in negative dependence . 1998 --- 911,917 ---- Stein . MIT Press ! .

    [biblio.dubhashi98neg] Balls and bins: A study in negative dependence . 1998 *************** *** 926,932 **** Ranjan . Random Structures and Algorithms 13 ! .

    [biblio.fagin79extendible] Extendible hashing - a fast access method for dynamic files . 1979 --- 925,931 ---- Ranjan . Random Structures and Algorithms 13 ! .

    [biblio.fagin79extendible] Extendible hashing - a fast access method for dynamic files . 1979 *************** *** 948,954 **** Strong . ACM Trans. Database Syst. 4 ! .

    [biblio.filliatre2000ptset] Ptset: Sets of integers implemented as Patricia trees --- 947,953 ---- Strong . ACM Trans. Database Syst. 4 ! .

    [biblio.filliatre2000ptset] Ptset: Sets of integers implemented as Patricia trees *************** *** 958,964 **** Jean-Christophe Filliatre ! .

    [biblio.fredman86pairing] The pairing heap: a new form of self-adjusting heap --- 957,963 ---- Jean-Christophe Filliatre ! .

    [biblio.fredman86pairing] The pairing heap: a new form of self-adjusting heap *************** *** 980,986 **** R. E. Tarjan ! .

    [biblio.gof] Design Patterns - Elements of Reusable Object-Oriented Software . 1995 --- 979,985 ---- R. E. Tarjan ! .

    [biblio.gof] Design Patterns - Elements of Reusable Object-Oriented Software . 1995 *************** *** 1002,1008 **** Vlissides . Addison-Wesley Publishing Company ! .

    [biblio.garg86order] Order-preserving key transformations . 1986 --- 1001,1007 ---- Vlissides . Addison-Wesley Publishing Company ! .

    [biblio.garg86order] Order-preserving key transformations . 1986 *************** *** 1016,1022 **** Gotlieb . Trans. Database Syst. 11 ! .

    [biblio.hyslop02making] Making a real hash of things . May 2002 --- 1015,1021 ---- Gotlieb . Trans. Database Syst. 11 ! .

    [biblio.hyslop02making] Making a real hash of things . May 2002 *************** *** 1030,1036 **** Sutter . C++ Report ! .

    [biblio.jossutis01stl] The C++ Standard Library - A Tutorial and Reference . 2001 --- 1029,1035 ---- Sutter . C++ Report ! .

    [biblio.jossutis01stl] The C++ Standard Library - A Tutorial and Reference . 2001 *************** *** 1040,1046 **** Jossutis . Addison-Wesley Publishing Company ! .

    [biblio.kt99fat_heaps] New Heap Data Structures --- 1039,1045 ---- Jossutis . Addison-Wesley Publishing Company ! .

    [biblio.kt99fat_heaps] New Heap Data Structures *************** *** 1054,1060 **** Robert E. Tarjan ! .

    [biblio.kleft00sets] Are Set Iterators Mutable or Immutable? . October 2000 --- 1053,1059 ---- Robert E. Tarjan ! .

    [biblio.kleft00sets] Are Set Iterators Mutable or Immutable? . October 2000 *************** *** 1068,1074 **** Kleft . C/C++ Users Jornal ! .

    [biblio.knuth98sorting] The Art of Computer Programming - Sorting and Searching . 1998 --- 1067,1073 ---- Kleft . C/C++ Users Jornal ! .

    [biblio.knuth98sorting] The Art of Computer Programming - Sorting and Searching . 1998 *************** *** 1078,1084 **** Knuth . Addison-Wesley Publishing Company ! .

    [biblio.liskov98data] Data abstraction and hierarchy . May 1998 --- 1077,1083 ---- Knuth . Addison-Wesley Publishing Company ! .

    [biblio.liskov98data] Data abstraction and hierarchy . May 1998 *************** *** 1088,1094 **** Liskov . SIGPLAN Notices 23 ! .

    [biblio.litwin80lh] Linear hashing: A new tool for file and table addressing . June 1980 --- 1087,1093 ---- Liskov . SIGPLAN Notices 23 ! .

    [biblio.litwin80lh] Linear hashing: A new tool for file and table addressing . June 1980 *************** *** 1098,1105 **** Litwin . Proceedings of International Conference on Very Large Data Bases ! .

    [biblio.maverik_lowerbounds] ! Deamortization - Part 2: Binomial Heaps . --- 1097,1104 ---- Litwin . Proceedings of International Conference on Very Large Data Bases ! .

    [biblio.maverik_lowerbounds] ! Deamortization - Part 2: Binomial Heaps . *************** *** 1108,1114 **** Maverik Woo ! .

    [biblio.meyers96more] More Effective C++: 35 New Ways to Improve Your Programs and Designs . 1996 --- 1107,1113 ---- Maverik Woo ! .

    [biblio.meyers96more] More Effective C++: 35 New Ways to Improve Your Programs and Designs . 1996 *************** *** 1118,1124 **** Meyers . Addison-Wesley Publishing Company ! .

    [biblio.meyers00nonmember] How Non-Member Functions Improve Encapsulation . 2000 --- 1117,1123 ---- Meyers . Addison-Wesley Publishing Company ! .

    [biblio.meyers00nonmember] How Non-Member Functions Improve Encapsulation . 2000 *************** *** 1128,1134 **** Meyers . C/C++ Users Journal ! .

    [biblio.meyers01stl] Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library . 2001 --- 1127,1133 ---- Meyers . C/C++ Users Journal ! .

    [biblio.meyers01stl] Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library . 2001 *************** *** 1138,1144 **** Meyers . Addison-Wesley Publishing Company ! .

    [biblio.meyers02both] Class Template, Member Template - or Both? . 2003 --- 1137,1143 ---- Meyers . Addison-Wesley Publishing Company ! .

    [biblio.meyers02both] Class Template, Member Template - or Both? . 2003 *************** *** 1148,1154 **** Meyers . C/C++ Users Journal ! .

    [biblio.motwani95random] Randomized Algorithms . 2003 --- 1147,1153 ---- Meyers . C/C++ Users Journal ! .

    [biblio.motwani95random] Randomized Algorithms . 2003 *************** *** 1162,1174 **** Raghavan . Cambridge University Press ! .

    [biblio.mscom] COM: Component Model Object Technologies . Microsoft ! .

    [biblio.musser95rationale] Rationale for Adding Hash Tables to the C++ Standard Template Library . 1995 --- 1161,1173 ---- Raghavan . Cambridge University Press ! .

    [biblio.mscom] COM: Component Model Object Technologies . Microsoft ! .

    [biblio.musser95rationale] Rationale for Adding Hash Tables to the C++ Standard Template Library . 1995 *************** *** 1176,1182 **** David R. Musser ! .

    [biblio.musser96stltutorial] STL Tutorial and Reference Guide . 1996 --- 1175,1181 ---- David R. Musser ! .

    [biblio.musser96stltutorial] STL Tutorial and Reference Guide . 1996 *************** *** 1190,1197 **** Saini . Addison-Wesley Publishing Company ! .

    [biblio.nelson96stlpq] ! Priority Queues and the STL . January 1996 --- 1189,1196 ---- Saini . Addison-Wesley Publishing Company ! .

    [biblio.nelson96stlpq] ! Priority Queues and the STL . January 1996 *************** *** 1201,1207 **** Nelson . Dr. Dobbs Journal ! .

    [biblio.okasaki98mereable] Fast mergeable integer maps . September 1998 --- 1200,1206 ---- Nelson . Dr. Dobbs Journal ! .

    [biblio.okasaki98mereable] Fast mergeable integer maps . September 1998 *************** *** 1215,1221 **** Gill . In Workshop on ML ! .

    [biblio.sgi_stl] Standard Template Library Programmer's Guide --- 1214,1220 ---- Gill . In Workshop on ML ! .

    [biblio.sgi_stl] Standard Template Library Programmer's Guide *************** *** 1225,1235 **** Austern . SGI ! .

    [biblio.select_man] select ! .

    [biblio.sleator84amortized] Amortized Efficiency of List Update Problems . 1984 --- 1224,1234 ---- Austern . SGI ! .

    [biblio.select_man] select ! .

    [biblio.sleator84amortized] Amortized Efficiency of List Update Problems . 1984 *************** *** 1243,1249 **** Tarjan . ACM Symposium on Theory of Computing ! .

    [biblio.sleator85self] Self-Adjusting Binary Search Trees . 1985 --- 1242,1248 ---- Tarjan . ACM Symposium on Theory of Computing ! .

    [biblio.sleator85self] Self-Adjusting Binary Search Trees . 1985 *************** *** 1257,1263 **** Tarjan . ACM Symposium on Theory of Computing ! .

    [biblio.stepanov94standard] The Standard Template Library . 1984 --- 1256,1262 ---- Tarjan . ACM Symposium on Theory of Computing ! .

    [biblio.stepanov94standard] The Standard Template Library . 1984 *************** *** 1269,1275 **** M. Lee ! .

    [biblio.stroustrup97cpp] The C++ Programming Langugage . 1997 --- 1268,1274 ---- M. Lee ! .

    [biblio.stroustrup97cpp] The C++ Programming Langugage . 1997 *************** *** 1279,1285 **** Stroustrup . Addison-Wesley Publishing Company ! .

    [biblio.vandevoorde2002cpptemplates] C++ Templates: The Complete Guide . 2002 --- 1278,1284 ---- Stroustrup . Addison-Wesley Publishing Company ! .

    [biblio.vandevoorde2002cpptemplates] C++ Templates: The Complete Guide . 2002 *************** *** 1293,1299 **** Josuttis . Addison-Wesley Publishing Company ! .

    [biblio.wickland96thirty] Thirty Years Among the Dead --- 1292,1298 ---- Josuttis . Addison-Wesley Publishing Company ! .

    [biblio.wickland96thirty] Thirty Years Among the Dead *************** *** 1305,1308 **** Wickland . National Psychological Institute ! .

    --- 1304,1307 ---- Wickland . National Psychological Institute ! .

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/policy_data_structures_ack.html gcc-4.7.4/libstdc++-v3/doc/html/manual/policy_data_structures_ack.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/policy_data_structures_ack.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/policy_data_structures_ack.html Tue Nov 5 21:26:53 2013 *************** *** 1,11 **** ! ! Acknowledgments

    Acknowledgments

    Written by Ami Tavory and Vladimir Dreizin (IBM Haifa Research Laboratories), and Benjamin Kosnik (Red Hat).

    ! This library was partially written at ! IBM's Haifa Research Labs. It is based heavily on policy-based design and uses many useful techniques from Modern C++ Design: Generic Programming and Design Patterns Applied by Andrei Alexandrescu. --- 1,9 ---- ! Acknowledgments

    Acknowledgments

    Written by Ami Tavory and Vladimir Dreizin (IBM Haifa Research Laboratories), and Benjamin Kosnik (Red Hat).

    ! This library was partially written at IBM's Haifa Research Labs. It is based heavily on policy-based design and uses many useful techniques from Modern C++ Design: Generic Programming and Design Patterns Applied by Andrei Alexandrescu. *************** *** 26,29 **** attributing to him any flaws in the design or implementation of the library).

    We would like to thank Matt Austern for the suggestion to ! include tries.

    --- 24,27 ---- attributing to him any flaws in the design or implementation of the library).

    We would like to thank Matt Austern for the suggestion to ! include tries.

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/policy_data_structures_design.html gcc-4.7.4/libstdc++-v3/doc/html/manual/policy_data_structures_design.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/policy_data_structures_design.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/policy_data_structures_design.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Design

    Design

    Concepts

    Null Policy Classes

    Associative containers are typically parametrized by various policies. For example, a hash-based associative container is parametrized by a hash-functor, transforming each key into an --- 1,5 ---- ! Design

    Design

    Concepts

    Null Policy Classes

    Associative containers are typically parametrized by various policies. For example, a hash-based associative container is parametrized by a hash-functor, transforming each key into an *************** *** 27,33 **** places simplifications are made possible with this technique include node updates in tree and trie data structures, and hash and probe functions for hash data structures. !

    Map and Set Semantics

    Distinguishing Between Maps and Sets

    Anyone familiar with the standard knows that there are four kinds --- 26,32 ---- places simplifications are made possible with this technique include node updates in tree and trie data structures, and hash and probe functions for hash data structures. !

    Map and Set Semantics

    Distinguishing Between Maps and Sets

    Anyone familiar with the standard knows that there are four kinds *************** *** 93,99 ****

    When one uses a "multimap," one should choose with care the type of container used for secondary keys. !

    Alternatives to std::multiset and std::multimap

    Brace onself: this library does not contain containers like std::multimap or std::multiset. Instead, these data --- 92,98 ----

    When one uses a "multimap," one should choose with care the type of container used for secondary keys. !

    Alternatives to std::multiset and std::multimap

    Brace onself: this library does not contain containers like std::multimap or std::multiset. Instead, these data *************** *** 171,177 **** naturally; collision-chaining hash tables (label B) store equivalent-key values in the same bucket, the bucket can be arranged so that equivalent-key values are consecutive. !

    Figure 22.8. Non-unique Mapping Standard Containers

    Non-unique Mapping Standard Containers

    Put differently, the standards' non-unique mapping associative-containers are associative containers that map primary keys to linked lists that are embedded into the --- 170,176 ---- naturally; collision-chaining hash tables (label B) store equivalent-key values in the same bucket, the bucket can be arranged so that equivalent-key values are consecutive. !

    Figure 22.8. Non-unique Mapping Standard Containers

    Non-unique Mapping Standard Containers

    Put differently, the standards' non-unique mapping associative-containers are associative containers that map primary keys to linked lists that are embedded into the *************** *** 253,259 **** first graphic above. Labels A and B, respectively. Each shaded box represents some size-type or secondary associative-container. !

    Figure 22.10. Non-unique Mapping Containers

    Non-unique Mapping Containers

    In the first example above, then, one would use an associative container mapping each user to an associative container which maps each application id to a start time (see --- 252,258 ---- first graphic above. Labels A and B, respectively. Each shaded box represents some size-type or secondary associative-container. !

    Figure 22.10. Non-unique Mapping Containers

    Non-unique Mapping Containers

    In the first example above, then, one would use an associative container mapping each user to an associative container which maps each application id to a start time (see *************** *** 265,271 ****

    See the discussion in list-based container types for containers especially suited as secondary associative-containers. !

    Iterator Semantics

    Point and Range Iterators

    Iterator concepts are bifurcated in this design, and are comprised of point-type and range-type iteration.

    --- 264,270 ----

    See the discussion in list-based container types for containers especially suited as secondary associative-containers. !

    Iterator Semantics

    Point and Range Iterators

    Iterator concepts are bifurcated in this design, and are comprised of point-type and range-type iteration.

    *************** *** 286,292 **** implementation, including that of C++ standard library components), but in this design, it is made explicit. They are distinct types. !

    Distinguishing Point and Range Iterators

    When using this library, is necessary to differentiate between two types of methods and iterators: point-type methods and iterators, and range-type methods and iterators. Each associative container's interface includes the methods:

    --- 285,291 ----
      	implementation, including that of C++ standard library
      	components), but in this design, it is made explicit. They are
      	distinct types.
    ! 	

    Distinguishing Point and Range Iterators

    When using this library, is necessary to differentiate between two types of methods and iterators: point-type methods and iterators, and range-type methods and iterators. Each associative container's interface includes the methods:

    ***************
    *** 306,312 ****
      	shows invariants for order-preserving containers: point-type
      	iterators are synonymous with range-type iterators.
      	Orthogonally,  Cshows invariants for "set"
    ! 	containers: iterators are synonymous with const iterators.

    Figure 22.11. Point Iterator Hierarchy

    Point Iterator Hierarchy

    Note that point-type iterators in self-organizing containers (hash-based associative containers) lack movement operators, such as operator++ - in fact, this is the reason why this library differentiates from the standard C++ librarys --- 305,311 ---- shows invariants for order-preserving containers: point-type iterators are synonymous with range-type iterators. Orthogonally, Cshows invariants for "set" ! containers: iterators are synonymous with const iterators.

    Figure 22.11. Point Iterator Hierarchy

    Point Iterator Hierarchy

    Note that point-type iterators in self-organizing containers (hash-based associative containers) lack movement operators, such as operator++ - in fact, this is the reason why this library differentiates from the standard C++ librarys *************** *** 322,328 **** a concept in C++ standardese, which is the category of iterators with no movement capabilities.) All other standard C++ library tags, such as forward_iterator_tag retain their ! common use.

    Invalidation Guarantees

    If one manipulates a container object, then iterators previously obtained from it can be invalidated. In some cases a previously-obtained iterator cannot be de-referenced; in other cases, --- 321,327 ---- a concept in C++ standardese, which is the category of iterators with no movement capabilities.) All other standard C++ library tags, such as forward_iterator_tag retain their ! common use.

    Invalidation Guarantees

    If one manipulates a container object, then iterators previously obtained from it can be invalidated. In some cases a previously-obtained iterator cannot be de-referenced; in other cases, *************** *** 345,351 **** to the question of whether point-type iterators and range-type iterators are valid. The graphic below shows tags corresponding to different types of invalidation guarantees. !

    Figure 22.12. Invalidation Guarantee Tags Hierarchy

    Invalidation Guarantee Tags Hierarchy

    • basic_invalidation_guarantee corresponds to a basic guarantee that a point-type iterator, a found pointer, or a found reference, remains valid as long --- 344,350 ---- to the question of whether point-type iterators and range-type iterators are valid. The graphic below shows tags corresponding to different types of invalidation guarantees. !

      Figure 22.12. Invalidation Guarantee Tags Hierarchy

      Invalidation Guarantee Tags Hierarchy

      • basic_invalidation_guarantee corresponds to a basic guarantee that a point-type iterator, a found pointer, or a found reference, remains valid as long *************** *** 376,382 **** our opinion, an invalidation-guarantee hierarchy would solve these problems in all container types - not just associative containers. !

    Genericity

    The design attempts to address the following problem of data-structure genericity. When writing a function manipulating a generic container object, what is the behavior of the object? --- 375,381 ---- our opinion, an invalidation-guarantee hierarchy would solve these problems in all container types - not just associative containers. !

    Genericity

    The design attempts to address the following problem of data-structure genericity. When writing a function manipulating a generic container object, what is the behavior of the object? *************** *** 391,397 ****

    then one needs to address the following questions in the body of some_op_sequence: !

    • Which types and methods does Cntnr support? Containers based on hash tables can be queries for the hash-functor type and object; this is meaningless for tree-based --- 390,396 ----

      then one needs to address the following questions in the body of some_op_sequence: !

      • Which types and methods does Cntnr support? Containers based on hash tables can be queries for the hash-functor type and object; this is meaningless for tree-based *************** *** 418,424 **** capabilities? What is the relationship between two different data structures, if anything?

      The remainder of this section explains these issues in ! detail.

      Tag

      Tags are very useful for manipulating generic types. For example, if It is an iterator class, then typename It::iterator_category or typename --- 417,423 ---- capabilities? What is the relationship between two different data structures, if anything?

    The remainder of this section explains these issues in ! detail.

    Tag

    Tags are very useful for manipulating generic types. For example, if It is an iterator class, then typename It::iterator_category or typename *************** *** 429,439 ****

    This library contains a container tag hierarchy corresponding to the diagram below. !

    Figure 22.13. Container Tag Hierarchy

    Container Tag Hierarchy

    Given any container Cntnr, the tag of the underlying data structure can be found via typename Cntnr::container_category. !

    Traits

    Additionally, a traits mechanism can be used to query a container type for its attributes. Given any container Cntnr, then <Cntnr> is a traits class identifying the properties of the --- 428,438 ----

    This library contains a container tag hierarchy corresponding to the diagram below. !

    Figure 22.13. Container Tag Hierarchy

    Container Tag Hierarchy

    Given any container Cntnr, the tag of the underlying data structure can be found via typename Cntnr::container_category. !

    Traits

    Additionally, a traits mechanism can be used to query a container type for its attributes. Given any container Cntnr, then <Cntnr> is a traits class identifying the properties of the *************** *** 453,459 **** otherwise container_traits<Cntnr>::split_join_can_throw will yield a compilation error. (This is somewhat similar to a compile-time version of the COM model). !

    By Container

    hash

    Interface

    The collision-chaining hash-based container has the following declaration.

      	  template<
    --- 452,458 ----
      	  otherwise container_traits<Cntnr>::split_join_can_throw
      	  will yield a compilation error. (This is somewhat similar to a
      	  compile-time version of the COM model).
    ! 	

    By Container

    hash

    Interface

    The collision-chaining hash-based container has the following declaration.

      	  template<
    ***************
    *** 487,494 ****
      	

    The parameters are identical to those of the collision-chaining container, except for the following.

    1. Comb_Probe_Fn describes how to transform a probe sequence into a sequence of positions within the table.

    2. Probe_Fn describes a probe sequence policy.

    Some of the default template values depend on the values of ! other parameters, and are explained below.

    Details
    Hash Policies
    General

    Following is an explanation of some functions which hashing ! involves. The graphic below illustrates the discussion.

    Figure 22.14. Hash functions, ranged-hash functions, and range-hashing functions

    Hash functions, ranged-hash functions, and range-hashing functions

    Let U be a domain (e.g., the integers, or the strings of 3 characters). A hash-table algorithm needs to map elements of U "uniformly" into the range [0,..., m - --- 486,493 ----

    The parameters are identical to those of the collision-chaining container, except for the following.

    1. Comb_Probe_Fn describes how to transform a probe sequence into a sequence of positions within the table.

    2. Probe_Fn describes a probe sequence policy.

    Some of the default template values depend on the values of ! other parameters, and are explained below.

    Details
    Hash Policies
    General

    Following is an explanation of some functions which hashing ! involves. The graphic below illustrates the discussion.

    Figure 22.14. Hash functions, ranged-hash functions, and range-hashing functions

    Hash functions, ranged-hash functions, and range-hashing functions

    Let U be a domain (e.g., the integers, or the strings of 3 characters). A hash-table algorithm needs to map elements of U "uniformly" into the range [0,..., m - *************** *** 505,511 **** Z+,

    which maps a non-negative hash value, and a non-negative range upper-bound into a non-negative integral in the range between 0 (inclusive) and the range upper bound (exclusive), ! i.e., for any r in Z+,

    0 ≤ g(r, m) ≤ m - 1

    The resulting ranged-hash function, is

    Equation 22.1. Ranged Hash Function

    f(u , m) = g(h(u), m)

    From the above, it is obvious that given g and h, f can always be composed (however the converse --- 504,510 ---- Z+,

    which maps a non-negative hash value, and a non-negative range upper-bound into a non-negative integral in the range between 0 (inclusive) and the range upper bound (exclusive), ! i.e., for any r in Z+,

    0 ≤ g(r, m) ≤ m - 1

    The resulting ranged-hash function, is

    Equation 22.1. Ranged Hash Function

    f(u , m) = g(h(u), m)

    From the above, it is obvious that given g and h, f can always be composed (however the converse *************** *** 523,531 **** probe function transforming the hash value into a sequence of hash values, and a range-hashing function transforming the sequence of hash values into a sequence of ! positions.

    Range Hashing

    Some common choices for range-hashing functions are the division, multiplication, and middle-square methods ([biblio.knuth98sorting]), defined ! as

    Equation 22.2. Range-Hashing, Division Method

    g(r, m) = r mod m

    g(r, m) = ⌈ u/v ( a r mod v ) ⌉

    and

    g(r, m) = ⌈ u/v ( r2 mod v ) ⌉

    respectively, for some positive integrals u and v (typically powers of 2), and some a. Each of --- 522,530 ---- probe function transforming the hash value into a sequence of hash values, and a range-hashing function transforming the sequence of hash values into a sequence of ! positions.

    Range Hashing

    Some common choices for range-hashing functions are the division, multiplication, and middle-square methods ([biblio.knuth98sorting]), defined ! as

    Equation 22.2. Range-Hashing, Division Method

    g(r, m) = r mod m

    g(r, m) = ⌈ u/v ( a r mod v ) ⌉

    and

    g(r, m) = ⌈ u/v ( r2 mod v ) ⌉

    respectively, for some positive integrals u and v (typically powers of 2), and some a. Each of *************** *** 536,544 **** implement using the low level % (modulo) operation (for any m), or the low level & (bit-mask) operation (for the case where ! m is a power of 2), i.e.,

    Equation 22.3. Division via Prime Modulo

    g(r, m) = r % m !

    and

    Equation 22.4. Division via Bit Mask

    g(r, m) = r & m - 1, (with m = 2k for some k)

    respectively.

    The % (modulo) implementation has the advantage that for --- 535,543 ---- implement using the low level % (modulo) operation (for any m), or the low level & (bit-mask) operation (for the case where ! m is a power of 2), i.e.,

    Equation 22.3. Division via Prime Modulo

    g(r, m) = r % m !

    and

    Equation 22.4. Division via Bit Mask

    g(r, m) = r & m - 1, (with m = 2k for some k)

    respectively.

    The % (modulo) implementation has the advantage that for *************** *** 550,556 **** relying on the fast bit-wise and operation. It has the disadvantage that for g(r, m) is affected only by the low order bits of r. This method is hard-wired into ! Dinkumware's implementation.

    Ranged Hash

    In cases it is beneficial to allow the client to directly specify a ranged-hash hash function. It is true, that the writer of the ranged-hash function cannot rely on the values of m having specific numerical properties --- 549,555 ---- relying on the fast bit-wise and operation. It has the disadvantage that for g(r, m) is affected only by the low order bits of r. This method is hard-wired into ! Dinkumware's implementation.

    Ranged Hash

    In cases it is beneficial to allow the client to directly specify a ranged-hash hash function. It is true, that the writer of the ranged-hash function cannot rely on the values of m having specific numerical properties *************** *** 564,570 **** s = [ s0,..., st - 1]

    be a string of t characters, each of which is from domain S. Consider the following ranged-hash ! function:

    Equation 22.5.  A Standard String Hash Function

    f1(s, m) = ∑ i = --- 563,569 ---- s = [ s0,..., st - 1]

    be a string of t characters, each of which is from domain S. Consider the following ranged-hash ! function:

    Equation 22.5.  A Standard String Hash Function

    f1(s, m) = ∑ i = *************** *** 576,582 **** of a long DNA sequence (and so S = {'A', 'C', 'G', 'T'}). In this case, scanning the entire string might be prohibitively expensive. A possible alternative might be to use ! only the first k characters of the string, where

    |S|k ≥ m ,

    i.e., using the hash function

    Equation 22.6.  Only k String DNA Hash

    f2(s, m) = ∑ i --- 575,581 ---- of a long DNA sequence (and so S = {'A', 'C', 'G', 'T'}). In this case, scanning the entire string might be prohibitively expensive. A possible alternative might be to use ! only the first k characters of the string, where

    |S|k ≥ m ,

    i.e., using the hash function

    Equation 22.6.  Only k String DNA Hash

    f2(s, m) = ∑ i *************** *** 590,601 **** 1 sri ari mod m ,

    respectively, for r0,..., rk-1 each in the (inclusive) range [0,...,t-1].

    It should be noted that the above functions cannot be ! decomposed as per a ranged hash composed of hash and range hashing.

    Implementation

    This sub-subsection describes the implementation of the above in this library. It first explains range-hashing functions in collision-chaining tables, then ranged-hash functions in collision-chaining tables, then probing-based tables, and finally lists the relevant classes in this ! library.

    Range-Hashing and Ranged-Hashes in Collision-Chaining Tables

    cc_hash_table is parametrized by Hash_Fn and Comb_Hash_Fn, a --- 589,600 ---- 1 sri ari mod m ,

    respectively, for r0,..., rk-1 each in the (inclusive) range [0,...,t-1].

    It should be noted that the above functions cannot be ! decomposed as per a ranged hash composed of hash and range hashing.

    Implementation

    This sub-subsection describes the implementation of the above in this library. It first explains range-hashing functions in collision-chaining tables, then ranged-hash functions in collision-chaining tables, then probing-based tables, and finally lists the relevant classes in this ! library.

    Range-Hashing and Ranged-Hashes in Collision-Chaining Tables

    cc_hash_table is parametrized by Hash_Fn and Comb_Hash_Fn, a *************** *** 607,618 **** the container transforms the key into a non-negative integral using the hash functor (points B and C), and transforms the result into a position using the combining functor (points D ! and E).

    Figure 22.15. Insert hash sequence diagram

    Insert hash sequence diagram

    If cc_hash_table's hash-functor, Hash_Fn is instantiated by null_type , then Comb_Hash_Fn is taken to be a ranged-hash function. The graphic below shows an insert sequence diagram. The user inserts an element (point A), the container transforms the key into a position using the combining functor ! (points B and C).

    Figure 22.16. Insert hash sequence diagram with a null policy

    Insert hash sequence diagram with a null policy

    Probing tables

    gp_hash_table is parametrized by Hash_Fn, Probe_Fn, --- 606,617 ---- the container transforms the key into a non-negative integral using the hash functor (points B and C), and transforms the result into a position using the combining functor (points D ! and E).

    Figure 22.15. Insert hash sequence diagram

    Insert hash sequence diagram

    If cc_hash_table's hash-functor, Hash_Fn is instantiated by null_type , then Comb_Hash_Fn is taken to be a ranged-hash function. The graphic below shows an insert sequence diagram. The user inserts an element (point A), the container transforms the key into a position using the combining functor ! (points B and C).

    Figure 22.16. Insert hash sequence diagram with a null policy

    Insert hash sequence diagram with a null policy

    Probing tables

    gp_hash_table is parametrized by Hash_Fn, Probe_Fn, *************** *** 624,630 **** functor, Probe_Fn is a functor for offsets from a hash value, and Comb_Probe_Fn transforms a probe sequence into a sequence of positions within ! the table.

    Pre-Defined Policies

    This library contains some pre-defined classes implementing range-hashing and probing functions:

    1. direct_mask_range_hashing --- 623,629 ---- functor, Probe_Fn is a functor for offsets from a hash value, and Comb_Probe_Fn transforms a probe sequence into a sequence of positions within ! the table.

    Pre-Defined Policies

    This library contains some pre-defined classes implementing range-hashing and probing functions:

    1. direct_mask_range_hashing *************** *** 635,648 **** a linear probe and a quadratic probe function, respectively.

    The graphic below shows the relationships. !

    Figure 22.17. Hash policy class diagram

    Hash policy class diagram

    Resize Policies
    General

    Hash-tables, as opposed to trees, do not naturally grow or shrink. It is necessary to specify policies to determine how and when a hash table should change its size. Usually, resize policies can be decomposed into orthogonal policies:

    1. A size policy indicating how a hash table should grow (e.g., it should multiply by powers of 2).

    2. A trigger policy indicating when a hash table should grow (e.g., a load factor is ! exceeded).

    Size Policies

    Size policies determine how a hash table changes size. These policies are simple, and there are relatively few sensible options. An exponential-size policy (with the initial size and growth factors both powers of 2) works well with a mask-based --- 634,647 ---- a linear probe and a quadratic probe function, respectively.

    The graphic below shows the relationships. !

    Figure 22.17. Hash policy class diagram

    Hash policy class diagram

    Resize Policies
    General

    Hash-tables, as opposed to trees, do not naturally grow or shrink. It is necessary to specify policies to determine how and when a hash table should change its size. Usually, resize policies can be decomposed into orthogonal policies:

    1. A size policy indicating how a hash table should grow (e.g., it should multiply by powers of 2).

    2. A trigger policy indicating when a hash table should grow (e.g., a load factor is ! exceeded).

    Size Policies

    Size policies determine how a hash table changes size. These policies are simple, and there are relatively few sensible options. An exponential-size policy (with the initial size and growth factors both powers of 2) works well with a mask-based *************** *** 650,656 **** hard-wired policy used by Dinkumware. A prime-list based policy works well with a modulo-prime range hashing function and is the hard-wired policy used by SGI's ! implementation.

    Trigger Policies

    Trigger policies determine when a hash table changes size. Following is a description of two policies: load-check policies, and collision-check policies.

    Load-check policies are straightforward. The user specifies two factors, Αmin and --- 649,655 ---- hard-wired policy used by Dinkumware. A prime-list based policy works well with a modulo-prime range hashing function and is the hard-wired policy used by SGI's ! implementation.

    Trigger Policies

    Trigger policies determine when a hash table changes size. Following is a description of two policies: load-check policies, and collision-check policies.

    Load-check policies are straightforward. The user specifies two factors, Αmin and *************** *** 668,677 **** and some load factor be denoted by Α. We would like to calculate the minimal length of k, such that if there were Α m elements in the hash table, a probe sequence of length k would ! be found with probability at most 1/m.

    Figure 22.18. Balls and bins

    Balls and bins

    Denote the probability that a probe sequence of length k appears in bin i by pi, the length of the probe sequence of bin i by ! li, and assume uniform distribution. Then

    Equation 22.7.  Probability of Probe Sequence of Length k

    p1 = --- 667,676 ---- and some load factor be denoted by Α. We would like to calculate the minimal length of k, such that if there were Α m elements in the hash table, a probe sequence of length k would ! be found with probability at most 1/m.

    Figure 22.18. Balls and bins

    Balls and bins

    Denote the probability that a probe sequence of length k appears in bin i by pi, the length of the probe sequence of bin i by ! li, and assume uniform distribution. Then

    Equation 22.7.  Probability of Probe Sequence of Length k

    p1 = *************** *** 685,691 **** li are negatively-dependent ([biblio.dubhashi98neg]) . Let ! I(.) denote the indicator function. Then

    Equation 22.8.  Probability Probe Sequence in Some Bin

    P( existsi li ≥ k ) = --- 684,690 ---- li are negatively-dependent ([biblio.dubhashi98neg]) . Let ! I(.) denote the indicator function. Then

    Equation 22.8.  Probability Probe Sequence in Some Bin

    P( existsi li ≥ k ) = *************** *** 697,707 **** be applied to negatively-dependent variables ([biblio.dubhashi98neg]). Inserting the first probability equation into the second one, and equating with 1/m, we obtain

    k ~ √ ( 2 α ln 2 m ln(m) ) ! ) .

    Implementation

    This sub-subsection describes the implementation of the above in this library. It first describes resize policies and their decomposition into trigger and size policies, then describes pre-defined classes, and finally discusses controlled ! access the policies' internals.

    Decomposition

    Each hash-based container is parametrized by a Resize_Policy parameter; the container derives publicly from Resize_Policy. For example:

    --- 696,706 ----
      	    be applied to negatively-dependent variables ([biblio.dubhashi98neg]). Inserting the first probability
      	    equation into the second one, and equating with 1/m, we
      	    obtain

    k ~ √ ( 2 α ln 2 m ln(m) ) ! ) .

    Implementation

    This sub-subsection describes the implementation of the above in this library. It first describes resize policies and their decomposition into trigger and size policies, then describes pre-defined classes, and finally discusses controlled ! access the policies' internals.

    Decomposition

    Each hash-based container is parametrized by a Resize_Policy parameter; the container derives publicly from Resize_Policy. For example:

    ***************
    *** 724,730 ****
      	      a resize is needed, and if so, what is the new size (points D
      	      to G); following the resize, it notifies the policy that a
      	      resize has completed (point H); finally, the element is
    ! 	      inserted, and the policy notified (point I).

    Figure 22.19. Insert resize sequence diagram

    Insert resize sequence diagram

    In practice, a resize policy can be usually orthogonally decomposed to a size policy and a trigger policy. Consequently, the library contains a single class for instantiating a resize policy: hash_standard_resize_policy --- 723,729 ---- a resize is needed, and if so, what is the new size (points D to G); following the resize, it notifies the policy that a resize has completed (point H); finally, the element is ! inserted, and the policy notified (point I).

    Figure 22.19. Insert resize sequence diagram

    Insert resize sequence diagram

    In practice, a resize policy can be usually orthogonally decomposed to a size policy and a trigger policy. Consequently, the library contains a single class for instantiating a resize policy: hash_standard_resize_policy *************** *** 733,741 **** both, and acts as a standard delegate ([biblio.gof]) to these policies.

    The two graphics immediately below show sequence diagrams illustrating the interaction between the standard resize policy ! and its trigger and size policies, respectively.

    Figure 22.20. Standard resize policy trigger sequence ! diagram

    Standard resize policy trigger sequence diagram

    Figure 22.21. Standard resize policy size sequence ! diagram

    Standard resize policy size sequence diagram

    Predefined Policies

    The library includes the following instantiations of size and trigger policies:

    1. hash_load_check_resize_trigger implements a load check trigger policy.

    2. cc_hash_max_collision_check_resize_trigger implements a collision check trigger policy.

    3. hash_exponential_size_policy --- 732,740 ---- both, and acts as a standard delegate ([biblio.gof]) to these policies.

      The two graphics immediately below show sequence diagrams illustrating the interaction between the standard resize policy ! and its trigger and size policies, respectively.

      Figure 22.20. Standard resize policy trigger sequence ! diagram

      Standard resize policy trigger sequence diagram

      Figure 22.21. Standard resize policy size sequence ! diagram

      Standard resize policy size sequence diagram

    Predefined Policies

    The library includes the following instantiations of size and trigger policies:

    1. hash_load_check_resize_trigger implements a load check trigger policy.

    2. cc_hash_max_collision_check_resize_trigger implements a collision check trigger policy.

    3. hash_exponential_size_policy *************** *** 753,759 **** instantiated by hash_load_check_resize_trigger, or cc_hash_max_collision_check_resize_trigger; Size_Policy is instantiated by hash_exponential_size_policy, ! or hash_prime_size_policy.

    Controling Access to Internals

    There are cases where (controlled) access to resize policies' internals is beneficial. E.g., it is sometimes useful to query a hash-table for the table's actual size (as opposed to its size() - the number of values it --- 752,758 ---- instantiated by hash_load_check_resize_trigger, or cc_hash_max_collision_check_resize_trigger; Size_Policy is instantiated by hash_exponential_size_policy, ! or hash_prime_size_policy.

    Controling Access to Internals

    There are cases where (controlled) access to resize policies' internals is beneficial. E.g., it is sometimes useful to query a hash-table for the table's actual size (as opposed to its size() - the number of values it *************** *** 798,808 ****

    which resizes the container. Implementations of Resize_Policy can export public methods for resizing the container externally; these methods internally call ! do_resize to resize the table.

    Policy Interactions

    Hash-tables are unfortunately especially susceptible to choice of policies. One of the more complicated aspects of this is that poor combinations of good policies can form a poor ! container. Following are some considerations.

    probe/size/trigger

    Some combinations do not work well for probing containers. For example, combining a quadratic probe policy with an exponential size policy can yield a poor container: when an element is inserted, a trigger policy might decide that there --- 797,807 ----

    which resizes the container. Implementations of Resize_Policy can export public methods for resizing the container externally; these methods internally call ! do_resize to resize the table.

    Policy Interactions

    Hash-tables are unfortunately especially susceptible to choice of policies. One of the more complicated aspects of this is that poor combinations of good policies can form a poor ! container. Following are some considerations.

    probe/size/trigger

    Some combinations do not work well for probing containers. For example, combining a quadratic probe policy with an exponential size policy can yield a poor container: when an element is inserted, a trigger policy might decide that there *************** *** 811,823 **** the unused entries.

    Unfortunately, this library cannot detect such problems at compilation (they are halting reducible). It therefore defines an exception class insert_error to throw an ! exception in this case.

    hash/trigger

    Some trigger policies are especially susceptible to poor hash functions. Suppose, as an extreme case, that the hash function transforms each key to the same hash value. After some inserts, a collision detecting policy will always indicate that the container needs to grow.

    The library, therefore, by design, limits each operation to one resize. For each insert, for example, it queries ! only once whether a resize is needed.

    equivalence functors/storing hash values/hash

    cc_hash_table and gp_hash_table are parametrized by an equivalence functor and by a Store_Hash parameter. If the latter parameter is --- 810,822 ---- the unused entries.

    Unfortunately, this library cannot detect such problems at compilation (they are halting reducible). It therefore defines an exception class insert_error to throw an ! exception in this case.

    hash/trigger

    Some trigger policies are especially susceptible to poor hash functions. Suppose, as an extreme case, that the hash function transforms each key to the same hash value. After some inserts, a collision detecting policy will always indicate that the container needs to grow.

    The library, therefore, by design, limits each operation to one resize. For each insert, for example, it queries ! only once whether a resize is needed.

    equivalence functors/storing hash values/hash

    cc_hash_table and gp_hash_table are parametrized by an equivalence functor and by a Store_Hash parameter. If the latter parameter is *************** *** 828,834 **** collisions for other types.

    If a ranged-hash function or ranged probe function is directly supplied, however, then it makes no sense to store the hash value with each entry. This library's container will ! fail at compilation, by design, if this is attempted.

    size/load-check trigger

    Assume a size policy issues an increasing sequence of sizes a, a q, a q1, a q2, ... For example, an exponential size policy might issue the sequence of sizes 8, 16, 32, 64, ...

    If a load-check trigger policy is used, with loads --- 827,833 ---- collisions for other types.

    If a ranged-hash function or ranged probe function is directly supplied, however, then it makes no sense to store the hash value with each entry. This library's container will ! fail at compilation, by design, if this is attempted.

    size/load-check trigger

    Assume a size policy issues an increasing sequence of sizes a, a q, a q1, a q2, ... For example, an exponential size policy might issue the sequence of sizes 8, 16, 32, 64, ...

    If a load-check trigger policy is used, with loads *************** *** 836,842 **** respectively, then it is a good idea to have:

    1. αmax ~ 1 / q

    2. αmin < 1 / (2 q)

    This will ensure that the amortized hash cost of each modifying operation is at most approximately 3.

    αmin ~ αmax is, in any case, a bad choice, and αmin > ! α max is horrendous.

    tree

    Interface

    The tree-based container has the following declaration:

      	  template<
      	  typename Key,
      	  typename Mapped,
    --- 835,841 ----
      	    respectively, then it is a good idea to have:

    1. αmax ~ 1 / q

    2. αmin < 1 / (2 q)

    This will ensure that the amortized hash cost of each modifying operation is at most approximately 3.

    αmin ~ αmax is, in any case, a bad choice, and αmin > ! α max is horrendous.

    tree

    Interface

    The tree-based container has the following declaration:

      	  template<
      	  typename Key,
      	  typename Mapped,
    ***************
    *** 861,867 ****
      	Note that containers based on the former two contain more types
      	and methods than the latter (e.g.,
      	reverse_iterator and rbegin), and different
    ! 	exception and invalidation guarantees.

    Details
    Node Invariants

    Consider the two trees in the graphic below, labels A and B. The first is a tree of floats; the second is a tree of pairs, each signifying a geometric line interval. Each element in a tree is refered to as a node of the tree. Of course, each of these trees can support the usual queries: the first can easily --- 860,866 ---- Note that containers based on the former two contain more types and methods than the latter (e.g., reverse_iterator and rbegin), and different ! exception and invalidation guarantees.

    Details
    Node Invariants

    Consider the two trees in the graphic below, labels A and B. The first is a tree of floats; the second is a tree of pairs, each signifying a geometric line interval. Each element in a tree is refered to as a node of the tree. Of course, each of these trees can support the usual queries: the first can easily *************** *** 877,883 **** each node, and maintains node invariants (see [biblio.clrs2001].) The first stores in each node the size of the sub-tree rooted at the node; the second stores at each node the maximal endpoint of the ! intervals at the sub-tree rooted at the node.

    Figure 22.22. Tree node invariants

    Tree node invariants

    Supporting such trees is difficult for a number of reasons:

    1. There must be a way to specify what a node's metadata should be (if any).

    2. Various operations can invalidate node invariants. The graphic below shows how a right rotation, --- 876,882 ---- each node, and maintains node invariants (see [biblio.clrs2001].) The first stores in each node the size of the sub-tree rooted at the node; the second stores at each node the maximal endpoint of the ! intervals at the sub-tree rooted at the node.

      Figure 22.22. Tree node invariants

      Tree node invariants

      Supporting such trees is difficult for a number of reasons:

      1. There must be a way to specify what a node's metadata should be (if any).

      2. Various operations can invalidate node invariants. The graphic below shows how a right rotation, *************** *** 891,899 **** metadata.

      3. It is not feasible to know in advance which methods trees can support. Besides the usual find method, the first tree can support a find_by_order method, while ! the second can support an overlaps method.

      Figure 22.23. Tree node invalidation

      Tree node invalidation

      These problems are solved by a combination of two means: node iterators, and template-template node updater ! parameters.

      Node Iterators

      Each tree-based container defines two additional iterator types, const_node_iterator and node_iterator. These iterators allow descending from a node to one of its --- 890,898 ---- metadata.

    3. It is not feasible to know in advance which methods trees can support. Besides the usual find method, the first tree can support a find_by_order method, while ! the second can support an overlaps method.

    Figure 22.23. Tree node invalidation

    Tree node invalidation

    These problems are solved by a combination of two means: node iterators, and template-template node updater ! parameters.

    Node Iterators

    Each tree-based container defines two additional iterator types, const_node_iterator and node_iterator. These iterators allow descending from a node to one of its *************** *** 913,926 **** node_end();

    The first pairs return node iterators corresponding to the root node of the tree; the latter pair returns node iterators ! corresponding to a just-after-leaf node.

    Node Updator

    The tree-based containers are parametrized by a Node_Update template-template parameter. A tree-based container instantiates Node_Update to some node_update class, and publicly subclasses node_update. The graphic below shows this scheme, as well as some predefined policies (which are explained ! below).

    Figure 22.24. A tree and its update policy

    A tree and its update policy

    node_update (an instantiation of Node_Update) must define metadata_type as the type of metadata it requires. For order statistics, e.g., metadata_type might be size_t. --- 912,925 ---- node_end();

    The first pairs return node iterators corresponding to the root node of the tree; the latter pair returns node iterators ! corresponding to a just-after-leaf node.

    Node Updator

    The tree-based containers are parametrized by a Node_Update template-template parameter. A tree-based container instantiates Node_Update to some node_update class, and publicly subclasses node_update. The graphic below shows this scheme, as well as some predefined policies (which are explained ! below).

    Figure 22.24. A tree and its update policy

    A tree and its update policy

    node_update (an instantiation of Node_Update) must define metadata_type as the type of metadata it requires. For order statistics, e.g., metadata_type might be size_t. *************** *** 939,945 **** nd_it. For example, say node x in the graphic below label A has an invalid invariant, but its' children, y and z have valid invariants. After the invocation, all three ! nodes should have valid invariants, as in label B.

    Figure 22.25. Restoring node invariants

    Restoring node invariants

    When a tree operation might invalidate some node invariant, it invokes this method in its node_update base to restore the invariant. For example, the graphic below shows an insert operation (point A); the tree performs some --- 938,944 ---- nd_it. For example, say node x in the graphic below label A has an invalid invariant, but its' children, y and z have valid invariants. After the invocation, all three ! nodes should have valid invariants, as in label B.

    Figure 22.25. Restoring node invariants

    Restoring node invariants

    When a tree operation might invalidate some node invariant, it invokes this method in its node_update base to restore the invariant. For example, the graphic below shows an insert operation (point A); the tree performs some *************** *** 947,953 **** C, and D). (It is well known that any insert, erase, split or join, can restore all node invariants by a small number of node invariant updates ([biblio.clrs2001]) ! .

    Figure 22.26. Insert update sequence

    Insert update sequence

    To complete the description of the scheme, three questions need to be answered:

    1. How can a tree which supports order statistics define a method such as find_by_order?

    2. How can the node updater base access methods of the tree?

    3. How can the following cyclic dependency be resolved? --- 946,952 ---- C, and D). (It is well known that any insert, erase, split or join, can restore all node invariants by a small number of node invariant updates ([biblio.clrs2001]) ! .

      Figure 22.26. Insert update sequence

      Insert update sequence

      To complete the description of the scheme, three questions need to be answered:

      1. How can a tree which supports order statistics define a method such as find_by_order?

      2. How can the node updater base access methods of the tree?

      3. How can the following cyclic dependency be resolved? *************** *** 989,997 **** node's metadata (this is halting reducible). In the graphic below, assume the shaded node is inserted. The tree would have to traverse the useless path shown to the root, applying ! redundant updates all the way.

      Figure 22.27. Useless update path

      Useless update path

      A null policy class, null_node_update solves both these problems. The tree detects that node ! invariants are irrelevant, and defines all accordingly.

    Split and Join

    Tree-based containers support split and join methods. It is possible to split a tree so that it passes all nodes with keys larger than a given key to a different tree. These methods have the following advantages over the --- 988,996 ---- node's metadata (this is halting reducible). In the graphic below, assume the shaded node is inserted. The tree would have to traverse the useless path shown to the root, applying ! redundant updates all the way.

    Figure 22.27. Useless update path

    Useless update path

    A null policy class, null_node_update solves both these problems. The tree detects that node ! invariants are irrelevant, and defines all accordingly.

    Split and Join

    Tree-based containers support split and join methods. It is possible to split a tree so that it passes all nodes with keys larger than a given key to a different tree. These methods have the following advantages over the *************** *** 1001,1007 **** trees are split and joined at linear complexity. The alternatives have super-linear complexity.

  • Aside from orders of growth, these operations perform few allocations and de-allocations. For red-black trees, allocations are not performed, ! and the methods are exception-free.

  • Trie

    Interface

    The trie-based container has the following declaration:

      	  template<typename Key,
      	  typename Mapped,
      	  typename Cmp_Fn = std::less<Key>,
    --- 1000,1006 ----
      	    trees are split and joined at linear complexity. The
      	    alternatives have super-linear complexity.

  • Aside from orders of growth, these operations perform few allocations and de-allocations. For red-black trees, allocations are not performed, ! and the methods are exception-free.

  • Trie

    Interface

    The trie-based container has the following declaration:

      	  template<typename Key,
      	  typename Mapped,
      	  typename Cmp_Fn = std::less<Key>,
    ***************
    *** 1035,1041 ****
      	  complexity and size).

  • It works well for common-prefix keys.

  • It can support efficiently queries such as which keys match a certain prefix. This is sometimes useful in file systems and routers, and for "type-ahead" aka predictive text matching ! on mobile devices.

  • Details
    Element Access Traits

    A trie inherently views its keys as sequences of elements. For example, a trie can view a string as a sequence of characters. A trie needs to map each of n elements to a number in {0, n - 1}. For example, a trie can map a --- 1034,1040 ---- complexity and size).

  • It works well for common-prefix keys.

  • It can support efficiently queries such as which keys match a certain prefix. This is sometimes useful in file systems and routers, and for "type-ahead" aka predictive text matching ! on mobile devices.

  • Details
    Element Access Traits

    A trie inherently views its keys as sequences of elements. For example, a trie can view a string as a sequence of characters. A trie needs to map each of n elements to a number in {0, n - 1}. For example, a trie can map a *************** *** 1072,1078 **** sub-tree with leafs "a" and "as". The maximal common prefix is "a". The internal node contains, consequently, to const iterators, one pointing to 'a', and the other to ! 's'.

    Figure 22.28. A PATRICIA trie

    A PATRICIA trie

    Node Invariants

    Trie-based containers support node invariants, as do tree-based containers. There are two minor differences, though, which, unfortunately, thwart sharing them sharing the same node-updating policies:

    1. A trie's Node_Update template-template --- 1071,1077 ---- sub-tree with leafs "a" and "as". The maximal common prefix is "a". The internal node contains, consequently, to const iterators, one pointing to 'a', and the other to ! 's'.

      Figure 22.28. A PATRICIA trie

      A PATRICIA trie

    Node Invariants

    Trie-based containers support node invariants, as do tree-based containers. There are two minor differences, though, which, unfortunately, thwart sharing them sharing the same node-updating policies:

    1. A trie's Node_Update template-template *************** *** 1081,1095 **** parametrized by Cmp_Fn.

    2. Tree-based containers store values in all nodes, while trie-based containers (at least in this implementation) store values in leafs.

    The graphic below shows the scheme, as well as some predefined ! policies (which are explained below).

    Figure 22.29. A trie and its update policy

    A trie and its update policy

    This library offers the following pre-defined trie node updating policies:

    1. trie_order_statistics_node_update supports order statistics.

    2. trie_prefix_search_node_update supports searching for ranges that match a given prefix.

    3. null_node_update ! is the null node updater.

    Split and Join

    Trie-based containers support split and join methods; the rationale is equal to that of tree-based containers supporting ! these methods.

    List

    Interface

    The list-based container has the following declaration:

      	  template<typename Key,
      	  typename Mapped,
      	  typename Eq_Fn = std::equal_to<Key>,
    --- 1080,1094 ----
      	    parametrized by Cmp_Fn.

  • Tree-based containers store values in all nodes, while trie-based containers (at least in this implementation) store values in leafs.

  • The graphic below shows the scheme, as well as some predefined ! policies (which are explained below).

    Figure 22.29. A trie and its update policy

    A trie and its update policy

    This library offers the following pre-defined trie node updating policies:

    1. trie_order_statistics_node_update supports order statistics.

    2. trie_prefix_search_node_update supports searching for ranges that match a given prefix.

    3. null_node_update ! is the null node updater.

    Split and Join

    Trie-based containers support split and join methods; the rationale is equal to that of tree-based containers supporting ! these methods.

    List

    Interface

    The list-based container has the following declaration:

      	  template<typename Key,
      	  typename Mapped,
      	  typename Eq_Fn = std::equal_to<Key>,
    ***************
    *** 1124,1135 ****
      	useful manner? Remarkably, many on-line competitive
      	algorithms exist for reordering lists to reflect access
      	prediction. (See [biblio.motwani95random] and [biblio.andrew04mtf]).
    ! 	

    Details

    !

    Underlying Data Structure

    The graphic below shows a simple list of integer keys. If we search for the integer 6, we are paying an overhead: the link with key 6 is only the fifth link; if it were the first link, it could be accessed ! faster.

    Figure 22.30. A simple list

    A simple list

    List-update algorithms reorder lists as elements are accessed. They try to determine, by the access history, which keys to move to the front of the list. Some of these algorithms require adding some metadata alongside each entry.

    For example, in the graphic below label A shows the counter --- 1123,1134 ---- useful manner? Remarkably, many on-line competitive algorithms exist for reordering lists to reflect access prediction. (See [biblio.motwani95random] and [biblio.andrew04mtf]). !

    Details

    !

    Underlying Data Structure

    The graphic below shows a simple list of integer keys. If we search for the integer 6, we are paying an overhead: the link with key 6 is only the fifth link; if it were the first link, it could be accessed ! faster.

    Figure 22.30. A simple list

    A simple list

    List-update algorithms reorder lists as elements are accessed. They try to determine, by the access history, which keys to move to the front of the list. Some of these algorithms require adding some metadata alongside each entry.

    For example, in the graphic below label A shows the counter *************** *** 1139,1145 **** predetermined value, say 10, as shown in label C, the count is set to 0 and the node is moved to the front of the list, as in label D. !

    Figure 22.31. The counter algorithm

    The counter algorithm

    Policies

    this library allows instantiating lists with policies implementing any algorithm moving nodes to the front of the list (policies implementing algorithms interchanging nodes are unsupported).

    Associative containers based on lists are parametrized by a --- 1138,1144 ---- predetermined value, say 10, as shown in label C, the count is set to 0 and the node is moved to the front of the list, as in label D. !

    Figure 22.31. The counter algorithm

    The counter algorithm

    Policies

    this library allows instantiating lists with policies implementing any algorithm moving nodes to the front of the list (policies implementing algorithms interchanging nodes are unsupported).

    Associative containers based on lists are parametrized by a *************** *** 1174,1180 **** the list. The latter type is very useful in this library, since there is no need to associate metadata with each element. (See [biblio.andrew04mtf] !

    Use in Multimaps

    In this library, there are no equivalents for the standard's multimaps and multisets; instead one uses an associative container mapping primary keys to secondary keys.

    List-based containers are especially useful as associative containers for secondary keys. In fact, they are implemented --- 1173,1179 ---- the list. The latter type is very useful in this library, since there is no need to associate metadata with each element. (See [biblio.andrew04mtf] !

    Use in Multimaps

    In this library, there are no equivalents for the standard's multimaps and multisets; instead one uses an associative container mapping primary keys to secondary keys.

    List-based containers are especially useful as associative containers for secondary keys. In fact, they are implemented *************** *** 1203,1209 **** object (a hash-based container object holds a hash functor). List-based containers, conversely, only have class-wide policy objects. !

    Priority Queue

    Interface

    The priority queue container has the following declaration:

      	  template<typename  Value_Type,
    --- 1202,1208 ----
      		object (a hash-based container object holds a
      		hash functor). List-based containers, conversely, only have
      		class-wide policy objects.
    ! 	      

    Priority Queue

    Interface

    The priority queue container has the following declaration:

      	  template<typename  Value_Type,
    ***************
    *** 1239,1245 ****
      	insufficient for manipulating priority-queues. 

    Different settings require different priority-queue implementations which are described in later; see traits discusses ways to differentiate between the different traits of ! different implementations.

    Details
    Iterators

    There are many different underlying-data structures for implementing priority queues. Unfortunately, most such structures are oriented towards making push and top efficient, and consequently don't allow efficient --- 1238,1244 ---- insufficient for manipulating priority-queues.

    Different settings require different priority-queue implementations which are described in later; see traits discusses ways to differentiate between the different traits of ! different implementations.

    Details
    Iterators

    There are many different underlying-data structures for implementing priority queues. Unfortunately, most such structures are oriented towards making push and top efficient, and consequently don't allow efficient *************** *** 1306,1317 **** this data and a priority queue's iterator. Using the embedded method would need to use two associative containers. Similar problems might arise in cases where a value can reside ! simultaneously in many priority queues.

    Underlying Data Structure

    There are three main implementations of priority queues: the first employs a binary heap, typically one which uses a sequence; the second uses a tree (or forest of trees), which is typically less structured than an associative container's tree; the third simply uses an associative container. These are ! shown in the graphic below, in labels A1 and A2, label B, and label C.

    Figure 22.32. Underlying Priority-Queue Data-Structures.

    Underlying Priority-Queue Data-Structures.

    Roughly speaking, any value that is both pushed and popped from a priority queue must incur a logarithmic expense (in the amortized sense). Any priority queue implementation that would avoid this, would violate known bounds on comparison-based --- 1305,1316 ---- this data and a priority queue's iterator. Using the embedded method would need to use two associative containers. Similar problems might arise in cases where a value can reside ! simultaneously in many priority queues.

    Underlying Data Structure

    There are three main implementations of priority queues: the first employs a binary heap, typically one which uses a sequence; the second uses a tree (or forest of trees), which is typically less structured than an associative container's tree; the third simply uses an associative container. These are ! shown in the graphic below, in labels A1 and A2, label B, and label C.

    Figure 22.32. Underlying Priority-Queue Data-Structures.

    Underlying Priority-Queue Data-Structures.

    Roughly speaking, any value that is both pushed and popped from a priority queue must incur a logarithmic expense (in the amortized sense). Any priority queue implementation that would avoid this, would violate known bounds on comparison-based *************** *** 1381,1387 **** at all; the priority queue itself is an associative container. Most associative containers are too structured to compete with priority queues in terms of push and pop ! performance.

    Traits

    It would be nice if all priority queues could share exactly the same behavior regardless of implementation. Sadly, this is not possible. Just one for instance is in join operations: joining two binary heaps might throw an exception (not corrupt any of the heaps on which it operates), but joining two pairing --- 1380,1386 ---- at all; the priority queue itself is an associative container. Most associative containers are too structured to compete with priority queues in terms of push and pop ! performance.

    Traits

    It would be nice if all priority queues could share exactly the same behavior regardless of implementation. Sadly, this is not possible. Just one for instance is in join operations: joining two binary heaps might throw an exception (not corrupt any of the heaps on which it operates), but joining two pairing *************** *** 1391,1397 **** container Cntnr, the tag of the underlying data structure can be found via typename Cntnr::container_category; this is one of the possible tags shown in the graphic below. !

    Figure 22.33. Priority-Queue Data-Structure Tags.

    Priority-Queue Data-Structure Tags.

    Additionally, a traits mechanism can be used to query a container type for its attributes. Given any container Cntnr, then

    __gnu_pbds::container_traits<Cntnr>

    is a traits class identifying the properties of the --- 1390,1396 ---- container Cntnr, the tag of the underlying data structure can be found via typename Cntnr::container_category; this is one of the possible tags shown in the graphic below. !

    Figure 22.33. Priority-Queue Data-Structure Tags.

    Priority-Queue Data-Structure Tags.

    Additionally, a traits mechanism can be used to query a container type for its attributes. Given any container Cntnr, then

    __gnu_pbds::container_traits<Cntnr>

    is a traits class identifying the properties of the *************** *** 1427,1430 **** erase operations is non-negligible (say super-logarithmic in the total sequence of operations) - binary heaps will perform badly. !

    --- 1426,1429 ---- erase operations is non-negligible (say super-logarithmic in the total sequence of operations) - binary heaps will perform badly. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/policy_data_structures_using.html gcc-4.7.4/libstdc++-v3/doc/html/manual/policy_data_structures_using.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/policy_data_structures_using.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/policy_data_structures_using.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Using

    Using

    Prerequisites

    The library contains only header files, and does not require any other libraries except the standard C++ library . All classes are defined in namespace __gnu_pbds. The library internally uses macros beginning with PB_DS, but --- 1,5 ---- ! Using

    Using

    Prerequisites

    The library contains only header files, and does not require any other libraries except the standard C++ library . All classes are defined in namespace __gnu_pbds. The library internally uses macros beginning with PB_DS, but *************** *** 11,21 **** Further dependencies are necessary to create the visual output for the performance tests. To create these graphs, an additional package is needed: pychart. !

    Organization

    The various data structures are organized as follows. !

    • Branch-Based !

      • basic_branch is an abstract base class for branched-based associative-containers --- 10,20 ---- Further dependencies are necessary to create the visual output for the performance tests. To create these graphs, an additional package is needed: pychart. !

      Organization

      The various data structures are organized as follows. !

      • Branch-Based !

        • basic_branch is an abstract base class for branched-based associative-containers *************** *** 29,35 **** associative-containers

      • Hash-Based !

        • basic_hash_table is an abstract base class for hash-based associative-containers --- 28,34 ---- associative-containers

      • Hash-Based !

        • basic_hash_table is an abstract base class for hash-based associative-containers *************** *** 43,54 **** associative-containers

      • List-Based !

        • list_update list-based update-policy associative container

      • Heap-Based !

        • priority_queue A priority queue.

      --- 42,53 ---- associative-containers

  • List-Based !

    • list_update list-based update-policy associative container

  • Heap-Based !

    • priority_queue A priority queue.

  • *************** *** 62,68 **** In addition, there are the following diagnostics classes, used to report errors specific to this library's data structures. !

    Figure 22.7. Exception Hierarchy

    Exception Hierarchy

    Tutorial

    Basic Use

    For the most part, the policy-based containers containers in namespace __gnu_pbds have the same interface as the equivalent containers in the standard C++ library, except for --- 61,67 ---- In addition, there are the following diagnostics classes, used to report errors specific to this library's data structures. !

    Figure 22.7. Exception Hierarchy

    Exception Hierarchy

    Tutorial

    Basic Use

    For the most part, the policy-based containers containers in namespace __gnu_pbds have the same interface as the equivalent containers in the standard C++ library, except for *************** *** 186,192 ****

    so all hash-based associative containers inherit the same hash-functor accessor methods. !

    Configuring via Template Parameters

    In general, each of this library's containers is --- 185,191 ----

    so all hash-based associative containers inherit the same hash-functor accessor methods. !

    Configuring via Template Parameters

    In general, each of this library's containers is *************** *** 240,246 **** by one of them.

    Note that as opposed to the std::priority_queue, __gnu_pbds::priority_queue is not a ! sequence-adapter; it is a regular container.

    Querying Container Attributes

    A containers underlying data structure affect their performance; Unfortunately, they can also affect --- 239,245 ---- by one of them.

    Note that as opposed to the std::priority_queue, __gnu_pbds::priority_queue is not a ! sequence-adapter; it is a regular container.

    Querying Container Attributes

    A containers underlying data structure affect their performance; Unfortunately, they can also affect *************** *** 278,284 ****

    is the container's invalidation guarantee. Invalidation guarantees are especially important regarding priority queues, since in this library's design, iterators are practically the ! only way to manipulate them.

    Point and Range Iteration

    This library differentiates between two types of methods and iterators: point-type, and range-type. For example, --- 277,283 ----

    is the container's invalidation guarantee. Invalidation guarantees are especially important regarding priority queues, since in this library's design, iterators are practically the ! only way to manipulate them.

    Point and Range Iteration

    This library differentiates between two types of methods and iterators: point-type, and range-type. For example, *************** *** 377,387 ****

    gives one of three pre-determined types that answer this query. !

    Examples

    Additional code examples are provided in the source distribution, as part of the regression and performance testsuite. !

    Intermediate Use

    • Basic use of maps: basic_map.cc

    • --- 376,386 ----

      gives one of three pre-determined types that answer this query. !

    Examples

    Additional code examples are provided in the source distribution, as part of the regression and performance testsuite. !

    Intermediate Use

    • Basic use of maps: basic_map.cc

    • *************** *** 405,411 ****

    • Conditionally erasing values from a priority queue: priority_queue_erase_if.cc !

    Querying with container_traits

    • Using container_traits to query about underlying data structure behavior: assoc_container_traits.cc --- 404,410 ----

    • Conditionally erasing values from a priority queue: priority_queue_erase_if.cc !

    Querying with container_traits

    • Using container_traits to query about underlying data structure behavior: assoc_container_traits.cc *************** *** 416,422 **** Using container_traits to query about underlying data structure behavior: priority_queue_container_traits.cc !

    By Container Method

    Hash-Based
    size Related
    • Setting the initial size of a hash-based container object: hash_initial_size.cc --- 415,421 ---- Using container_traits to query about underlying data structure behavior: priority_queue_container_traits.cc !

    By Container Method

    Hash-Based
    size Related
    • Setting the initial size of a hash-based container object: hash_initial_size.cc *************** *** 434,440 ****

    • Changing the load factors of a hash-based container object: hash_load_set_change.cc !

    Hashing Function Related

    • Using a modulo range-hashing function for the case of an unknown skewed key distribution: hash_mod.cc --- 433,439 ----

    • Changing the load factors of a hash-based container object: hash_load_set_change.cc !

    Hashing Function Related

    • Using a modulo range-hashing function for the case of an unknown skewed key distribution: hash_mod.cc *************** *** 448,454 ****

    • Writing a ranged-hash functor: ranged_hash.cc !

    Branch-Based
    split or join Related
    • Joining two tree-based container objects: tree_join.cc

    • --- 447,453 ----

    • Writing a ranged-hash functor: ranged_hash.cc !

    Branch-Based
    split or join Related
    • Joining two tree-based container objects: tree_join.cc

    • *************** *** 458,478 **** Order statistics while joining two tree-based container objects: tree_order_statistics_join.cc !

    Node Invariants
    • Using trees for order statistics: tree_order_statistics.cc

    • Augmenting trees to support operations on line intervals: tree_intervals.cc !

    trie
    • Using a PATRICIA trie for DNA strings: trie_dna.cc

    • Using a PATRICIA trie for finding all entries whose key matches a given prefix: trie_prefix_search.cc !

    Priority Queues
    • Cross referencing an associative container and a priority queue: priority_queue_xref.cc

    • --- 457,477 ---- Order statistics while joining two tree-based container objects: tree_order_statistics_join.cc !

    Node Invariants
    • Using trees for order statistics: tree_order_statistics.cc

    • Augmenting trees to support operations on line intervals: tree_intervals.cc !

    trie
    • Using a PATRICIA trie for DNA strings: trie_dna.cc

    • Using a PATRICIA trie for finding all entries whose key matches a given prefix: trie_prefix_search.cc !

    Priority Queues
    • Cross referencing an associative container and a priority queue: priority_queue_xref.cc

    • *************** *** 480,483 **** very simple version of Dijkstra's shortest path algorithm: priority_queue_dijkstra.cc !

    --- 479,482 ---- very simple version of Dijkstra's shortest path algorithm: priority_queue_dijkstra.cc !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/profile_mode.html gcc-4.7.4/libstdc++-v3/doc/html/manual/profile_mode.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/profile_mode.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/profile_mode.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Chapter 19. Profile Mode

    Chapter 19. Profile Mode

    Intro

    Goal: Give performance improvement advice based on recognition of suboptimal usage patterns of the standard library.

    --- 1,8 ---- ! Chapter 19. Profile Mode

    Chapter 19. Profile Mode

    Intro

    Goal: Give performance improvement advice based on recognition of suboptimal usage patterns of the standard library.

    *************** *** 16,22 **** CGO 2009.

    Strengths: !

    • Unintrusive solution. The application code does not require any modification.

    • The advice is call context sensitive, thus capable of --- 15,21 ---- CGO 2009.

      Strengths: !

      • Unintrusive solution. The application code does not require any modification.

      • The advice is call context sensitive, thus capable of *************** *** 27,40 ****

      Drawbacks: !

      • You must recompile the application code with custom options.

      • You must run the application on representative input. The advice is input dependent.

      • The execution time will increase, in some cases by factors.

      !

      Using the Profile Mode

      This is the anticipated common workflow for program foo.cc:

        $ cat foo.cc
      --- 26,39 ----
          

    Drawbacks: !

    • You must recompile the application code with custom options.

    • You must run the application on representative input. The advice is input dependent.

    • The execution time will increase, in some cases by factors.

    !

    Using the Profile Mode

    This is the anticipated common workflow for program foo.cc:

      $ cat foo.cc
    *************** vector-size: improvement = 3: call stack
    *** 54,60 ****
      

    Anatomy of a warning: !

    • Warning id. This is a short descriptive string for the class that this warning belongs to. E.g., "vector-to-list".

    • --- 53,59 ----

      Anatomy of a warning: !

      • Warning id. This is a short descriptive string for the class that this warning belongs to. E.g., "vector-to-list".

      • *************** vector-size: improvement = 3: call stack *** 94,104 **** We believe such warnings can help users understand the performance behavior of their application better, which can lead to changes at a higher abstraction level. !

      Tuning the Profile Mode

      Compile time switches and environment variables (see also file profiler.h). Unless specified otherwise, they can be set at compile time using -D_<name> or by setting variable <name> in the environment where the program is run, before starting execution. !

      • _GLIBCXX_PROFILE_NO_<diagnostic>: disable specific diagnostics. See section Diagnostics for possible values. --- 93,103 ---- We believe such warnings can help users understand the performance behavior of their application better, which can lead to changes at a higher abstraction level. !

      Tuning the Profile Mode

      Compile time switches and environment variables (see also file profiler.h). Unless specified otherwise, they can be set at compile time using -D_<name> or by setting variable <name> in the environment where the program is run, before starting execution. !

      • _GLIBCXX_PROFILE_NO_<diagnostic>: disable specific diagnostics. See section Diagnostics for possible values. *************** vector-size: improvement = 3: call stack *** 138,146 **** call context. (Environment variable not supported.)

      !

      Bibliography

      Perflint: A Context Sensitive Performance Advisor for C++ Programs . Lixia Liu. Silvius Rus. Copyright © 2009 . Proceedings of the 2009 International Symposium on Code Generation and Optimization ! .

    --- 137,145 ---- call context. (Environment variable not supported.)

    !

    Bibliography

    Perflint: A Context Sensitive Performance Advisor for C++ Programs . Lixia Liu. Silvius Rus. Copyright © 2009 . Proceedings of the 2009 International Symposium on Code Generation and Optimization ! .

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/setup.html gcc-4.7.4/libstdc++-v3/doc/html/manual/setup.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/setup.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/setup.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Chapter 2. Setup

    Chapter 2. Setup

    To transform libstdc++ sources into installed include files and properly built binaries useful for linking to other software is a multi-step process. Steps include getting the sources, configuring and building the sources, testing, and installation. --- 1,8 ---- ! Chapter 2. Setup

    Chapter 2. Setup

    To transform libstdc++ sources into installed include files and properly built binaries useful for linking to other software is a multi-step process. Steps include getting the sources, configuring and building the sources, testing, and installation. *************** *** 19,25 **** make install

    Each step is described in more detail in the following sections. !

    Prerequisites

    Because libstdc++ is part of GCC, the primary source for installation instructions is the GCC install page. --- 18,24 ---- make install

    Each step is described in more detail in the following sections. !

    Prerequisites

    Because libstdc++ is part of GCC, the primary source for installation instructions is the GCC install page. *************** *** 45,51 **** Hacking in the appendix for full details.

    Finally, a few system-specific requirements: !

    linux

    If GCC 3.1.0 or later on is being used on GNU/Linux, an attempt will be made to use "C" library functionality necessary for C++ named locale support. For GCC 4.6.0 and later, this --- 44,50 ---- Hacking in the appendix for full details.

    Finally, a few system-specific requirements: !

    linux

    If GCC 3.1.0 or later on is being used on GNU/Linux, an attempt will be made to use "C" library functionality necessary for C++ named locale support. For GCC 4.6.0 and later, this *************** zh_TW BIG5 *** 87,93 **** libstdc++ after "C" locales are installed is not necessary.

    To install support for locales, do only one of the following: !

    • install all locales

    • install just the necessary locales

      • with Debian GNU/Linux:

        Add the above list, as shown, to the file /etc/locale.gen

        run /usr/sbin/locale-gen

      • on most Unix-like operating systems:

        localedef -i de_DE -f ISO-8859-1 de_DE

        (repeat for each entry in the above list)

      • Instructions for other operating systems solicited. !

    --- 86,92 ---- libstdc++ after "C" locales are installed is not necessary.

    To install support for locales, do only one of the following: !

    • install all locales

    • install just the necessary locales

      • with Debian GNU/Linux:

        Add the above list, as shown, to the file /etc/locale.gen

        run /usr/sbin/locale-gen

      • on most Unix-like operating systems:

        localedef -i de_DE -f ISO-8859-1 de_DE

        (repeat for each entry in the above list)

      • Instructions for other operating systems solicited. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/source_code_style.html gcc-4.7.4/libstdc++-v3/doc/html/manual/source_code_style.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/source_code_style.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/source_code_style.html Tue Nov 5 21:26:53 2013 *************** *** 1,10 **** ! ! Coding Style

    Coding Style

    !

    Bad Identifiers

    Identifiers that conflict and should be avoided.


          This is the list of names reserved to the
    --- 1,9 ---- ! Coding Style

    Coding Style

    !

    Bad Identifiers

    Identifiers that conflict and should be avoided.


          This is the list of names reserved to the
    *************** *** 192,198 ****       // long double conversion members mangled as __opr
          // http://gcc.gnu.org/ml/libstdc++/1999-q4/msg00060.html
          __opr
    !     

    By Example


          This library is written to appropriate C++ coding standards. As such,
          it is intended to precede the recommendations of the GNU Coding
          Standard, which can be referenced in full here:
    --- 191,197 ----       // long double conversion members mangled as __opr
          // http://gcc.gnu.org/ml/libstdc++/1999-q4/msg00060.html
          __opr
    !     

    By Example


          This library is written to appropriate C++ coding standards. As such,
          it is intended to precede the recommendations of the GNU Coding
          Standard, which can be referenced in full here:
    *************** *** 617,620 ****         }
          } // namespace std
          
    !     

    --- 616,619 ----         }
          } // namespace std
          

    !     

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/source_design_notes.html gcc-4.7.4/libstdc++-v3/doc/html/manual/source_design_notes.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/source_design_notes.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/source_design_notes.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Design Notes

    Design Notes



        The Library
    --- 1,8 ---- ! Design Notes

    Design Notes



        The Library
    *************** *** 860,863 ****   

    --- 859,862 ----   

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/source_organization.html gcc-4.7.4/libstdc++-v3/doc/html/manual/source_organization.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/source_organization.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/source_organization.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Directory Layout and Source Conventions

    Directory Layout and Source Conventions

    The unpacked source directory of libstdc++ contains the files needed to create the GNU C++ Library.


    --- 1,8 ---- ! Directory Layout and Source Conventions

    Directory Layout and Source Conventions

    The unpacked source directory of libstdc++ contains the files needed to create the GNU C++ Library.


    *************** indicate a place that may require  *** 94,97 ****   

    --- 93,96 ----   

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/status.html gcc-4.7.4/libstdc++-v3/doc/html/manual/status.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/status.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/status.html Tue Nov 5 21:26:53 2013 *************** *** 1,14 **** ! ! Chapter 1. Status

    Chapter 1. Status

    Implementation Status

    C++ 1998/2003

    Implementation Status

    This status table is based on the table of contents of ISO/IEC 14882:2003.

    This page describes the C++ support in mainline GCC SVN, not in any particular release. !

    Table 1.1. C++ 1998/2003 Implementation Status

    SectionDescriptionStatusComments
    18 Language support --- 1,13 ---- ! Chapter 1. Status

    Chapter 1. Status

    Implementation Status

    C++ 1998/2003

    Implementation Status

    This status table is based on the table of contents of ISO/IEC 14882:2003.

    This page describes the C++ support in mainline GCC SVN, not in any particular release. !

    Table 1.1. C++ 1998/2003 Implementation Status

    SectionDescriptionStatusComments
    18 Language support *************** particular release. *** 52,60 **** Appendix D Compatibility features !
    D.1Increment operator with bool operand  
    D.2static keyword  
    D.3Access declarations  
    D.4Implicit conversion from const strings  
    D.5C standard library headers  
    D.6Old iostreams members  
    D.7char* streams  

    Implementation Specific Behavior

    The ISO standard defines the following phrase: !

    [1.3.5] implementation-defined behavior

    Behavior, for a well-formed program construct and correct data, that --- 51,59 ---- Appendix D

    Compatibility features !
    D.1Increment operator with bool operand  
    D.2static keyword  
    D.3Access declarations  
    D.4Implicit conversion from const strings  
    D.5C standard library headers  
    D.6Old iostreams members  
    D.7char* streams  

    Implementation Specific Behavior

    The ISO standard defines the following phrase: !

    [1.3.5] implementation-defined behavior

    Behavior, for a well-formed program construct and correct data, that *************** particular release. *** 142,148 **** in this chapter.

    [27.8.1.4]/16 Calling fstream::sync when a get area exists will... whatever fflush() does, I think. !

    C++ 2011

    This table is based on the table of contents of ISO/IEC JTC1 SC22 WG21 Doc No: N3290 Date: 2011-04-11 --- 141,147 ---- in this chapter.

    [27.8.1.4]/16 Calling fstream::sync when a get area exists will... whatever fflush() does, I think. !

    C++ 2011

    This table is based on the table of contents of ISO/IEC JTC1 SC22 WG21 Doc No: N3290 Date: 2011-04-11 *************** presence of the required flag. *** 158,168 ****

    This page describes the C++11 support in mainline GCC SVN, not in any particular release. !

    Table 1.2. C++ 2011 Implementation Status

    SectionDescriptionStatusComments
    18 Language support !
    18.1GeneralY 
    18.2TypesPartialMissing offsetof, max_align_t
    18.3Implementation properties  
    18.3.2Numeric Limits  
    18.3.2.3Class template numeric_limitsY 
    18.3.2.4numeric_limits membersY 
    18.3.2.5float_round_styleN 
    18.3.2.6float_denorm_styleN 
    18.3.2.7numeric_limits specializationsY 
    18.3.3C LibraryY 
    18.4Integer types  
    18.4.1Header <cstdint> synopsisY 
    18.5Start and terminationPartialC library dependency for quick_exit, at_quick_exit
    18.6Dynamic memory managementY 
    18.7Type identification  
    18.7.1Class type_infoY 
    18.7.2Class bad_castY 
    18.7.3Class bad_typeidY 
    18.8Exception handling  
    18.8.1Class exceptionY 
    18.8.2Class bad_exceptionY 
    18.8.3Abnormal terminationY 
    18.8.4uncaught_exceptionY 
    18.8.5Exception PropagationY 
    18.8.6nested_exceptionY 
    18.9Initializer lists  
    18.9.1Initializer list constructorsY 
    18.9.2Initializer list accessY 
    18.9.3Initializer list range accessY 
    18.10Other runtime supportY 
    19 Diagnostics --- 157,171 ----

    This page describes the C++11 support in mainline GCC SVN, not in any particular release. !

    Table 1.2. C++ 2011 Implementation Status

    SectionDescriptionStatusComments
    18 Language support !
    18.1GeneralY 
    18.2TypesPartialMissing offsetof, max_align_t
    18.3Implementation properties  
    18.3.2Numeric Limits  
    18.3.2.3Class template numeric_limitsY 
    18.3.2.4numeric_limits membersY 
    18.3.2.5float_round_styleN 
    18.3.2.6float_denorm_styleN 
    18.3.2.7numeric_limits specializationsY 
    18.3.3C LibraryY 
    18.4Integer types  
    18.4.1Header <cstdint> synopsisY 
    18.5Start and terminationPartialC library dependency for quick_exit, at_quick_exit
    18.6Dynamic memory managementPartialMissing get_new_handler. ! set_new_handler is not thread-safe. !
    18.7Type identification  
    18.7.1Class type_infoY 
    18.7.2Class bad_castY 
    18.7.3Class bad_typeidY 
    18.8Exception handling  
    18.8.1Class exceptionY 
    18.8.2Class bad_exceptionY 
    18.8.3Abnormal terminationPartialMissing get_terminate. ! set_terminate is not thread-safe. !
    18.8.4uncaught_exceptionY 
    18.8.5Exception PropagationY 
    18.8.6nested_exceptionY 
    18.9Initializer lists  
    18.9.1Initializer list constructorsY 
    18.9.2Initializer list accessY 
    18.9.3Initializer list range accessY 
    18.10Other runtime supportY 
    19 Diagnostics *************** particular release. *** 185,191 **** is_nothrow_assignable, is_nothrow_copy_assignable, is_nothrow_move_assignable, is_nothrow_destructible !
    20.9.5Type property queriesY 
    20.9.6Relationships between typesY 
    20.9.7Transformations between types  
    20.9.7.1Const-volatile modificationsY 
    20.9.7.2Reference modificationsY 
    20.9.7.3Sign modificationsY 
    20.9.7.4Array modificationsY 
    20.9.7.5Pointer modificationsY 
    20.9.7.6Other transformationsY 
    20.10Compile-time rational arithmetic  
    20.10.1In general  
    20.10.2Header <ratio> synopsis  
    20.10.3Class template ratioY 
    20.10.4Arithmetic on ratiosY 
    20.10.5Comparison of ratiosY 
    20.10.6SI types for ratioY 
    20.11Time utilities  
    20.11.3Clock requirementsY 
    20.11.4Time-related traits  
    20.11.4.1treat_as_floating_pointY 
    20.11.4.2duration_valuesY 
    20.11.4.3Specializations of common_typeY 
    20.11.5Class template durationPartialMissing constexpr for non-member arithmetic operations
    20.11.6Class template time_pointY 
    20.11.7Clocks  
    20.11.7.1Class system_clockY 
    20.11.7.2Class steady_clockY 
    20.11.7.3Class high_resolution_clockY 
    20.11.8Date and time functionsY 
    20.12Scoped allocator adaptorPartial 
    20.12.1Header <scoped_allocator> synopsis  
    20.12.2Scoped allocator adaptor member typesY 
    20.12.3Scoped allocator adaptor constructorsY 
    20.12.4Scoped allocator adaptor membersPartial 
    20.12.5Scoped allocator operatorsY 
    20.13Class type_indexY 
    21 Strings --- 188,194 ---- is_nothrow_assignable, is_nothrow_copy_assignable, is_nothrow_move_assignable, is_nothrow_destructible !
    20.9.5Type property queriesY 
    20.9.6Relationships between typesY 
    20.9.7Transformations between types  
    20.9.7.1Const-volatile modificationsY 
    20.9.7.2Reference modificationsY 
    20.9.7.3Sign modificationsY 
    20.9.7.4Array modificationsY 
    20.9.7.5Pointer modificationsY 
    20.9.7.6Other transformationsPartialMissing aligned_union.
    20.10Compile-time rational arithmetic  
    20.10.1In general  
    20.10.2Header <ratio> synopsis  
    20.10.3Class template ratioY 
    20.10.4Arithmetic on ratiosY 
    20.10.5Comparison of ratiosY 
    20.10.6SI types for ratioY 
    20.11Time utilities  
    20.11.3Clock requirementsY 
    20.11.4Time-related traits  
    20.11.4.1treat_as_floating_pointY 
    20.11.4.2duration_valuesY 
    20.11.4.3Specializations of common_typeY 
    20.11.5Class template durationPartialMissing constexpr for non-member arithmetic operations
    20.11.6Class template time_pointY 
    20.11.7Clocks  
    20.11.7.1Class system_clockY 
    20.11.7.2Class steady_clockY 
    20.11.7.3Class high_resolution_clockY 
    20.11.8Date and time functionsY 
    20.12Scoped allocator adaptorPartial 
    20.12.1Header <scoped_allocator> synopsis  
    20.12.2Scoped allocator adaptor member typesY 
    20.12.3Scoped allocator adaptor constructorsY 
    20.12.4Scoped allocator adaptor membersPartial 
    20.12.5Scoped allocator operatorsY 
    20.13Class type_indexY 
    21 Strings *************** particular release. *** 237,243 **** Appendix D Compatibility features !
    D.1Increment operator with bool operand  
    D.2register keyword  
    D.3Implicit declaration of copy functions  
    D.4Dynamic exception specifications  
    D.5C standard library headers  
    D.6Old iostreams members  
    D.7char* streams  
    D.8Function objects  
    D.9Binders  
    D.10auto_ptr  
    D.11Violating exception-specifications  

    Implementation Specific Behavior

    For behaviour which is also specified by the 1998 and 2003 standards, see C++ 1998/2003 Implementation Specific Behavior. This section only documents behaviour which is new in the 2011 standard. --- 240,248 ---- Appendix D

    Compatibility features !
    D.1Increment operator with bool operand  
    D.2register keyword  
    D.3Implicit declaration of copy functions  
    D.4Dynamic exception specifications  
    D.5C standard library headers  
    D.6Old iostreams members  
    D.7char* streams  
    D.8Function objects  
    D.9Binders  
    D.10auto_ptr  
    D.11Violating exception-specificationsPartialMissing get_unexpected. ! set_unexpected is not thread-safe. !

    Implementation Specific Behavior

    For behaviour which is also specified by the 1998 and 2003 standards, see C++ 1998/2003 Implementation Specific Behavior. This section only documents behaviour which is new in the 2011 standard. *************** particular release. *** 250,256 **** native_handle_type and native_handle are provided. The handle types are defined in terms of the Gthreads abstraction layer. !

    • thread: The native handle type is a typedef for __gthread_t i.e. pthread_t when GCC is configured with the posix thread model. The value of the native handle is undefined for a thread --- 255,261 ---- native_handle_type and native_handle are provided. The handle types are defined in terms of the Gthreads abstraction layer. !

      • thread: The native handle type is a typedef for __gthread_t i.e. pthread_t when GCC is configured with the posix thread model. The value of the native handle is undefined for a thread *************** particular release. *** 275,281 **** launch is a scoped enumeration type with overloaded operators to support bitmask operations. There are no additional bitmask elements defined. !

    C++ TR1

    This table is based on the table of contents of ISO/IEC DTR 19768 Doc No: N1836=05-0096 Date: 2005-06-24 Draft Technical Report on C++ Library Extensions --- 280,286 ---- launch is a scoped enumeration type with overloaded operators to support bitmask operations. There are no additional bitmask elements defined. !

    C++ TR1

    This table is based on the table of contents of ISO/IEC DTR 19768 Doc No: N1836=05-0096 Date: 2005-06-24 Draft Technical Report on C++ Library Extensions *************** In this implementation the header names *** 286,297 ****

    This page describes the TR1 support in mainline GCC SVN, not in any particular release. !

    Table 1.3. C++ TR1 Implementation Status

    SectionDescriptionStatusComments
    2General Utilities
    2.1Reference wrappers  
    2.1.1Additions to header <functional> synopsisY 
    2.1.2Class template reference_wrapper  
    2.1.2.1reference_wrapper construct/copy/destroyY 
    2.1.2.2reference_wrapper assignmentY 
    2.1.2.3reference_wrapper accessY 
    2.1.2.4reference_wrapper invocationY 
    2.1.2.5reference_wrapper helper functionsY 
    2.2Smart pointers  
    2.2.1Additions to header <memory> synopsisY 
    2.2.2Class bad_weak_ptrY 
    2.2.3Class template shared_ptr 

    Uses code from boost::shared_ptr.

    !
    2.2.3.1shared_ptr constructorsY 
    2.2.3.2shared_ptr destructorY 
    2.2.3.3shared_ptr assignmentY 
    2.2.3.4shared_ptr modifiersY 
    2.2.3.5shared_ptr observersY 
    2.2.3.6shared_ptr comparisonY 
    2.2.3.7shared_ptr I/OY 
    2.2.3.8shared_ptr specialized algorithmsY 
    2.2.3.9shared_ptr castsY 
    2.2.3.10get_deleterY 
    2.2.4Class template weak_ptr  
    2.2.4.1weak_ptr constructorsY 
    2.2.4.2weak_ptr destructorY 
    2.2.4.3weak_ptr assignmentY 
    2.2.4.4weak_ptr modifiersY 
    2.2.4.5weak_ptr observersY 
    2.2.4.6weak_ptr comparisonY 
    2.2.4.7weak_ptr specialized algorithmsY 
    2.2.5Class template enable_shared_from_thisY 
    3Function Objects
    3.1DefinitionsY 
    3.2Additions to <functional> synopsisY 
    3.3RequirementsY 
    3.4Function return typesY 
    3.5Function template mem_fnY 
    3.6Function object binders  
    3.6.1Class template is_bind_expressionY 
    3.6.2Class template is_placeholderY 
    3.6.3Function template bindY 
    3.6.4PlaceholdersY 
    3.7Polymorphic function wrappers  
    3.7.1Class bad_function_callY 
    3.7.1.1bad_function_call constructorY 
    3.7.2Class template function  
    3.7.2.1function construct/copy/destroyY 
    3.7.2.2function modifiersY 
    3.7.2.3function capacityY 
    3.7.2.4function invocationY 
    3.7.2.5function target accessY 
    3.7.2.6undefined operatorsY 
    3.7.2.7null pointer comparison operatorsY 
    3.7.2.8specialized algorithmsY 
    4Metaprogramming and type traits
    4.1RequirementsY 
    4.2Header <type_traits> synopsisY 
    4.3Helper classesY 
    4.4General RequirementsY 
    4.5Unary Type Traits  
    4.5.1Primary Type CategoriesY 
    4.5.2Composite type traitsY 
    4.5.3Type propertiesY 
    4.6Relationships between typesY 
    4.7Transformations between types  
    4.7.1Const-volatile modificationsY 
    4.7.2Reference modificationsY 
    4.7.3Array modificationsY 
    4.7.4Pointer modificationsY 
    4.8Other transformationsY 
    4.9Implementation requirementsY 
    5Numerical Facilities
    5.1Random number generation  
    5.1.1RequirementsY 
    5.1.2Header <random> synopsisY 
    5.1.3Class template variate_generatorY 
    5.1.4Random number engine class templatesY 
    5.1.4.1Class template linear_congruentialY 
    5.1.4.2Class template mersenne_twisterY 
    5.1.4.3Class template subtract_with_carryY 
    5.1.4.4Class template subtract_with_carry_01Y 
    5.1.4.5Class template discard_blockY 
    5.1.4.6Class template xor_combineYoperator()() per N2079
    5.1.5Engines with predefined parametersY 
    5.1.6Class random_deviceY 
    5.1.7Random distribution class templatesY 
    5.1.7.1Class template uniform_intY 
    5.1.7.2Class bernoulli_distributionY 
    5.1.7.3Class template geometric_distributionY 
    5.1.7.4Class template poisson_distributionY 
    5.1.7.5Class template binomial_distributionY 
    5.1.7.6Class template uniform_realY 
    5.1.7.7Class template exponential_distributionY 
    5.1.7.8Class template normal_distributionY 
    5.1.7.9Class template gamma_distributionY 
    5.2Mathematical special functionsY 
    5.2.1Additions to header <cmath> synopsisY 
    5.2.1.1associated Laguerre polynomialsY 
    5.2.1.2associated Legendre functionsY 
    5.2.1.3beta functionY 
    5.2.1.4(complete) elliptic integral of the first kindY 
    5.2.1.5(complete) elliptic integral of the second kindY 
    5.2.1.6(complete) elliptic integral of the third kindY 
    5.2.1.7confluent hypergeometric functionsY 
    5.2.1.8regular modified cylindrical Bessel functionsY 
    5.2.1.9cylindrical Bessel functions (of the first kind)Y 
    5.2.1.10irregular modified cylindrical Bessel functionsY 
    5.2.1.11cylindrical Neumann functionsY 
    5.2.1.12(incomplete) elliptic integral of the first kindY 
    5.2.1.13(incomplete) elliptic integral of the second kindY 
    5.2.1.14(incomplete) elliptic integral of the third kindY 
    5.2.1.15exponential integralY 
    5.2.1.16Hermite polynomialsY 
    5.2.1.17hypergeometric functionsY 
    5.2.1.18Laguerre polynomialsY 
    5.2.1.19Legendre polynomialsY 
    5.2.1.20Riemann zeta functionY 
    5.2.1.21spherical Bessel functions (of the first kind)Y 
    5.2.1.22spherical associated Legendre functionsY 
    5.2.1.23spherical Neumann functionsY 
    5.2.2Additions to header <math.h> synopsisY 
    6Containers
    6.1Tuple typesY 
    6.1.1Header <tuple> synopsisY 
    6.1.2Additions to header <utility> synopsisY 
    6.1.3Class template tupleY 
    6.1.3.1ConstructionY 
    6.1.3.2Tuple creation functionsY 
    6.1.3.3Tuple helper classesY 
    6.1.3.4Element accessY 
    6.1.3.5Relational operatorsY 
    6.1.4PairsY 
    6.2Fixed size arrayY 
    6.2.1Header <array> synopsisY 
    6.2.2Class template arrayY 
    6.2.2.1array constructors, copy, and assignmentY 
    6.2.2.2array specialized algorithmsY 
    6.2.2.3array sizeY 
    6.2.2.4Zero sized arraysY 
    6.2.2.5Tuple interface to class template arrayY 
    6.3Unordered associative containersY 
    6.3.1Unordered associative container requirementsY 
    6.3.1.1Exception safety guaranteesY 
    6.3.2Additions to header <functional> synopsisY 
    6.3.3Class template hashY 
    6.3.4Unordered associative container classesY 
    6.3.4.1Header <unordered_set> synopsisY 
    6.3.4.2Header <unordered_map> synopsisY 
    6.3.4.3Class template unordered_setY 
    6.3.4.3.1unordered_set constructorsY 
    6.3.4.3.2unordered_set swapY 
    6.3.4.4Class template unordered_mapY 
    6.3.4.4.1unordered_map constructorsY 
    6.3.4.4.2unordered_map element accessY 
    6.3.4.4.3unordered_map swapY 
    6.3.4.5Class template unordered_multisetY 
    6.3.4.5.1unordered_multiset constructorsY 
    6.3.4.5.2unordered_multiset swapY 
    6.3.4.6Class template unordered_multimapY 
    6.3.4.6.1unordered_multimap constructorsY 
    6.3.4.6.2unordered_multimap swapY 
    7Regular Expressions
    7.1DefinitionsN 
    7.2RequirementsN 
    7.3Regular expressions summaryN 
    7.4Header <regex> synopsisN 
    7.5Namespace tr1::regex_constantsN 
    7.5.1Bitmask Type syntax_option_typeN 
    7.5.2Bitmask Type regex_constants::match_flag_typeN 
    7.5.3Implementation defined error_typeN 
    7.6Class regex_errorN 
    7.7Class template regex_traitsN 
    7.8Class template basic_regexN 
    7.8.1basic_regex constantsN 
    7.8.2basic_regex constructorsN 
    7.8.3basic_regex assignN 
    7.8.4basic_regex constant operationsN 
    7.8.5basic_regex localeN 
    7.8.6basic_regex swapN 
    7.8.7basic_regex non-member functionsN 
    7.8.7.1basic_regex non-member swapN 
    7.9Class template sub_matchN 
    7.9.1sub_match membersN 
    7.9.2sub_match non-member operatorsN 
    7.10Class template match_resultsN 
    7.10.1match_results constructorsN 
    7.10.2match_results sizeN 
    7.10.3match_results element accessN 
    7.10.4match_results formattingN 
    7.10.5match_results allocatorN 
    7.10.6match_results swapN 
    7.11Regular expression algorithmsN 
    7.11.1exceptionsN 
    7.11.2regex_matchN 
    7.11.3regex_searchN 
    7.11.4regex_replaceN 
    7.12Regular expression IteratorsN 
    7.12.1Class template regex_iteratorN 
    7.12.1.1regex_iterator constructorsN 
    7.12.1.2regex_iterator comparisonsN 
    7.12.1.3regex_iterator dereferenceN 
    7.12.1.4regex_iterator incrementN 
    7.12.2Class template regex_token_iteratorN 
    7.12.2.1regex_token_iterator constructorsN 
    7.12.2.2regex_token_iterator comparisonsN 
    7.12.2.3regex_token_iterator dereferenceN 
    7.12.2.4regex_token_iterator incrementN 
    7.13Modified ECMAScript regular expression grammarN 
    8C Compatibility
    8.1Additions to header <complex>Y 
    8.1.1SynopsisY 
    8.1.2Function acosY 
    8.1.3Function asinY 
    8.1.4Function atanY 
    8.1.5Function acoshY 
    8.1.6Function asinhY 
    8.1.7Function atanhY 
    8.1.8Function fabsY 
    8.1.9Additional OverloadsY 
    8.2Header <ccomplex>NDR 551
    8.3Header <complex.h>NDR 551
    8.4Additions to header <cctype>Y 
    8.4.1SynopsisY 
    8.4.2Function isblankY 
    8.5Additions to header <ctype.h>Y 
    8.6Header <cfenv>Y 
    8.6.1SynopsisY 
    8.6.2DefinitionsY 
    8.7Header <fenv.h>Y 
    8.8Additions to header <cfloat>Y 
    8.9Additions to header <float.h>Y 
    8.10Additions to header <ios>N 
    8.10.1SynopsisN 
    8.10.2Function hexfloatN 
    8.11Header <cinttypes>Y 
    8.11.1SynopsisYDR 557
    8.11.2DefinitionsY 
    8.12Header <inttypes.h>Y 
    8.13Additions to header <climits>Y 
    8.14Additions to header <limits.h>Y 
    8.15Additions to header <locale>N 
    8.16Additions to header <cmath>Y 
    8.16.1SynopsisY 
    8.16.2DefinitionsY 
    8.16.3Function template definitionsY 
    8.16.4Additional overloadsYDR 568; DR 550
    8.17Additions to header <math.h>Y 
    8.18Additions to header <cstdarg>Y 
    8.19Additions to header <stdarg.h>Y 
    8.20The header <cstdbool>Y 
    8.21The header <stdbool.h>Y 
    8.22The header <cstdint>Y 
    8.22.1SynopsisY 
    8.22.2DefinitionsY 
    8.23The header <stdint.h>Y 
    8.24Additions to header <cstdio>Y 
    8.24.1SynopsisY 
    8.24.2DefinitionsY 
    8.24.3Additional format specifiersYC library dependency
    8.24.4Additions to header <stdio.h>Y 
    8.25Additions to header <cstdlib>Y 
    8.25.1SynopsisY 
    8.25.2DefinitionsY 
    8.25.3Function absY 
    8.25.4Function divY 
    8.26Additions to header <stdlib.h>Y 
    8.27Header <ctgmath>YDR 551
    8.28Header <tgmath.h>YDR 551
    8.29Additions to header <ctime>YC library dependency
    8.30Additions to header <cwchar>Y 
    8.30.1SynopsisY 
    8.30.2DefinitionsY 
    8.30.3Additional wide format specifiersYC library dependency
    8.31Additions to header <wchar.h>Y 
    8.32Additions to header <cwctype>Y 
    8.32.1SynopsisY 
    8.32.2Function iswblankY 
    8.33Additions to header <wctype.h>Y 

    Implementation Specific Behavior

    For behaviour which is specified by the 1998 and 2003 standards, see C++ 1998/2003 Implementation Specific Behavior. This section documents behaviour which is required by TR1. --- 291,302 ----

    This page describes the TR1 support in mainline GCC SVN, not in any particular release. !

    Table 1.3. C++ TR1 Implementation Status

    SectionDescriptionStatusComments
    2General Utilities
    2.1Reference wrappers  
    2.1.1Additions to header <functional> synopsisY 
    2.1.2Class template reference_wrapper  
    2.1.2.1reference_wrapper construct/copy/destroyY 
    2.1.2.2reference_wrapper assignmentY 
    2.1.2.3reference_wrapper accessY 
    2.1.2.4reference_wrapper invocationY 
    2.1.2.5reference_wrapper helper functionsY 
    2.2Smart pointers  
    2.2.1Additions to header <memory> synopsisY 
    2.2.2Class bad_weak_ptrY 
    2.2.3Class template shared_ptr 

    Uses code from boost::shared_ptr.

    !
    2.2.3.1shared_ptr constructorsY 
    2.2.3.2shared_ptr destructorY 
    2.2.3.3shared_ptr assignmentY 
    2.2.3.4shared_ptr modifiersY 
    2.2.3.5shared_ptr observersY 
    2.2.3.6shared_ptr comparisonY 
    2.2.3.7shared_ptr I/OY 
    2.2.3.8shared_ptr specialized algorithmsY 
    2.2.3.9shared_ptr castsY 
    2.2.3.10get_deleterY 
    2.2.4Class template weak_ptr  
    2.2.4.1weak_ptr constructorsY 
    2.2.4.2weak_ptr destructorY 
    2.2.4.3weak_ptr assignmentY 
    2.2.4.4weak_ptr modifiersY 
    2.2.4.5weak_ptr observersY 
    2.2.4.6weak_ptr comparisonY 
    2.2.4.7weak_ptr specialized algorithmsY 
    2.2.5Class template enable_shared_from_thisY 
    3Function Objects
    3.1DefinitionsY 
    3.2Additions to <functional> synopsisY 
    3.3RequirementsY 
    3.4Function return typesY 
    3.5Function template mem_fnY 
    3.6Function object binders  
    3.6.1Class template is_bind_expressionY 
    3.6.2Class template is_placeholderY 
    3.6.3Function template bindY 
    3.6.4PlaceholdersY 
    3.7Polymorphic function wrappers  
    3.7.1Class bad_function_callY 
    3.7.1.1bad_function_call constructorY 
    3.7.2Class template function  
    3.7.2.1function construct/copy/destroyY 
    3.7.2.2function modifiersY 
    3.7.2.3function capacityY 
    3.7.2.4function invocationY 
    3.7.2.5function target accessY 
    3.7.2.6undefined operatorsY 
    3.7.2.7null pointer comparison operatorsY 
    3.7.2.8specialized algorithmsY 
    4Metaprogramming and type traits
    4.1RequirementsY 
    4.2Header <type_traits> synopsisY 
    4.3Helper classesY 
    4.4General RequirementsY 
    4.5Unary Type Traits  
    4.5.1Primary Type CategoriesY 
    4.5.2Composite type traitsY 
    4.5.3Type propertiesY 
    4.6Relationships between typesY 
    4.7Transformations between types  
    4.7.1Const-volatile modificationsY 
    4.7.2Reference modificationsY 
    4.7.3Array modificationsY 
    4.7.4Pointer modificationsY 
    4.8Other transformationsY 
    4.9Implementation requirementsY 
    5Numerical Facilities
    5.1Random number generation  
    5.1.1RequirementsY 
    5.1.2Header <random> synopsisY 
    5.1.3Class template variate_generatorY 
    5.1.4Random number engine class templatesY 
    5.1.4.1Class template linear_congruentialY 
    5.1.4.2Class template mersenne_twisterY 
    5.1.4.3Class template subtract_with_carryY 
    5.1.4.4Class template subtract_with_carry_01Y 
    5.1.4.5Class template discard_blockY 
    5.1.4.6Class template xor_combineYoperator()() per N2079
    5.1.5Engines with predefined parametersY 
    5.1.6Class random_deviceY 
    5.1.7Random distribution class templatesY 
    5.1.7.1Class template uniform_intY 
    5.1.7.2Class bernoulli_distributionY 
    5.1.7.3Class template geometric_distributionY 
    5.1.7.4Class template poisson_distributionY 
    5.1.7.5Class template binomial_distributionY 
    5.1.7.6Class template uniform_realY 
    5.1.7.7Class template exponential_distributionY 
    5.1.7.8Class template normal_distributionY 
    5.1.7.9Class template gamma_distributionY 
    5.2Mathematical special functionsY 
    5.2.1Additions to header <cmath> synopsisY 
    5.2.1.1associated Laguerre polynomialsY 
    5.2.1.2associated Legendre functionsY 
    5.2.1.3beta functionY 
    5.2.1.4(complete) elliptic integral of the first kindY 
    5.2.1.5(complete) elliptic integral of the second kindY 
    5.2.1.6(complete) elliptic integral of the third kindY 
    5.2.1.7confluent hypergeometric functionsY 
    5.2.1.8regular modified cylindrical Bessel functionsY 
    5.2.1.9cylindrical Bessel functions (of the first kind)Y 
    5.2.1.10irregular modified cylindrical Bessel functionsY 
    5.2.1.11cylindrical Neumann functionsY 
    5.2.1.12(incomplete) elliptic integral of the first kindY 
    5.2.1.13(incomplete) elliptic integral of the second kindY 
    5.2.1.14(incomplete) elliptic integral of the third kindY 
    5.2.1.15exponential integralY 
    5.2.1.16Hermite polynomialsY 
    5.2.1.17hypergeometric functionsY 
    5.2.1.18Laguerre polynomialsY 
    5.2.1.19Legendre polynomialsY 
    5.2.1.20Riemann zeta functionY 
    5.2.1.21spherical Bessel functions (of the first kind)Y 
    5.2.1.22spherical associated Legendre functionsY 
    5.2.1.23spherical Neumann functionsY 
    5.2.2Additions to header <math.h> synopsisY 
    6Containers
    6.1Tuple typesY 
    6.1.1Header <tuple> synopsisY 
    6.1.2Additions to header <utility> synopsisY 
    6.1.3Class template tupleY 
    6.1.3.1ConstructionY 
    6.1.3.2Tuple creation functionsY 
    6.1.3.3Tuple helper classesY 
    6.1.3.4Element accessY 
    6.1.3.5Relational operatorsY 
    6.1.4PairsY 
    6.2Fixed size arrayY 
    6.2.1Header <array> synopsisY 
    6.2.2Class template arrayY 
    6.2.2.1array constructors, copy, and assignmentY 
    6.2.2.2array specialized algorithmsY 
    6.2.2.3array sizeY 
    6.2.2.4Zero sized arraysY 
    6.2.2.5Tuple interface to class template arrayY 
    6.3Unordered associative containersY 
    6.3.1Unordered associative container requirementsY 
    6.3.1.1Exception safety guaranteesY 
    6.3.2Additions to header <functional> synopsisY 
    6.3.3Class template hashY 
    6.3.4Unordered associative container classesY 
    6.3.4.1Header <unordered_set> synopsisY 
    6.3.4.2Header <unordered_map> synopsisY 
    6.3.4.3Class template unordered_setY 
    6.3.4.3.1unordered_set constructorsY 
    6.3.4.3.2unordered_set swapY 
    6.3.4.4Class template unordered_mapY 
    6.3.4.4.1unordered_map constructorsY 
    6.3.4.4.2unordered_map element accessY 
    6.3.4.4.3unordered_map swapY 
    6.3.4.5Class template unordered_multisetY 
    6.3.4.5.1unordered_multiset constructorsY 
    6.3.4.5.2unordered_multiset swapY 
    6.3.4.6Class template unordered_multimapY 
    6.3.4.6.1unordered_multimap constructorsY 
    6.3.4.6.2unordered_multimap swapY 
    7Regular Expressions
    7.1DefinitionsN 
    7.2RequirementsN 
    7.3Regular expressions summaryN 
    7.4Header <regex> synopsisN 
    7.5Namespace tr1::regex_constantsN 
    7.5.1Bitmask Type syntax_option_typeN 
    7.5.2Bitmask Type regex_constants::match_flag_typeN 
    7.5.3Implementation defined error_typeN 
    7.6Class regex_errorN 
    7.7Class template regex_traitsN 
    7.8Class template basic_regexN 
    7.8.1basic_regex constantsN 
    7.8.2basic_regex constructorsN 
    7.8.3basic_regex assignN 
    7.8.4basic_regex constant operationsN 
    7.8.5basic_regex localeN 
    7.8.6basic_regex swapN 
    7.8.7basic_regex non-member functionsN 
    7.8.7.1basic_regex non-member swapN 
    7.9Class template sub_matchN 
    7.9.1sub_match membersN 
    7.9.2sub_match non-member operatorsN 
    7.10Class template match_resultsN 
    7.10.1match_results constructorsN 
    7.10.2match_results sizeN 
    7.10.3match_results element accessN 
    7.10.4match_results formattingN 
    7.10.5match_results allocatorN 
    7.10.6match_results swapN 
    7.11Regular expression algorithmsN 
    7.11.1exceptionsN 
    7.11.2regex_matchN 
    7.11.3regex_searchN 
    7.11.4regex_replaceN 
    7.12Regular expression IteratorsN 
    7.12.1Class template regex_iteratorN 
    7.12.1.1regex_iterator constructorsN 
    7.12.1.2regex_iterator comparisonsN 
    7.12.1.3regex_iterator dereferenceN 
    7.12.1.4regex_iterator incrementN 
    7.12.2Class template regex_token_iteratorN 
    7.12.2.1regex_token_iterator constructorsN 
    7.12.2.2regex_token_iterator comparisonsN 
    7.12.2.3regex_token_iterator dereferenceN 
    7.12.2.4regex_token_iterator incrementN 
    7.13Modified ECMAScript regular expression grammarN 
    8C Compatibility
    8.1Additions to header <complex>Y 
    8.1.1SynopsisY 
    8.1.2Function acosY 
    8.1.3Function asinY 
    8.1.4Function atanY 
    8.1.5Function acoshY 
    8.1.6Function asinhY 
    8.1.7Function atanhY 
    8.1.8Function fabsY 
    8.1.9Additional OverloadsY 
    8.2Header <ccomplex>NDR 551
    8.3Header <complex.h>NDR 551
    8.4Additions to header <cctype>Y 
    8.4.1SynopsisY 
    8.4.2Function isblankY 
    8.5Additions to header <ctype.h>Y 
    8.6Header <cfenv>Y 
    8.6.1SynopsisY 
    8.6.2DefinitionsY 
    8.7Header <fenv.h>Y 
    8.8Additions to header <cfloat>Y 
    8.9Additions to header <float.h>Y 
    8.10Additions to header <ios>N 
    8.10.1SynopsisN 
    8.10.2Function hexfloatN 
    8.11Header <cinttypes>Y 
    8.11.1SynopsisYDR 557
    8.11.2DefinitionsY 
    8.12Header <inttypes.h>Y 
    8.13Additions to header <climits>Y 
    8.14Additions to header <limits.h>Y 
    8.15Additions to header <locale>N 
    8.16Additions to header <cmath>Y 
    8.16.1SynopsisY 
    8.16.2DefinitionsY 
    8.16.3Function template definitionsY 
    8.16.4Additional overloadsYDR 568; DR 550
    8.17Additions to header <math.h>Y 
    8.18Additions to header <cstdarg>Y 
    8.19Additions to header <stdarg.h>Y 
    8.20The header <cstdbool>Y 
    8.21The header <stdbool.h>Y 
    8.22The header <cstdint>Y 
    8.22.1SynopsisY 
    8.22.2DefinitionsY 
    8.23The header <stdint.h>Y 
    8.24Additions to header <cstdio>Y 
    8.24.1SynopsisY 
    8.24.2DefinitionsY 
    8.24.3Additional format specifiersYC library dependency
    8.24.4Additions to header <stdio.h>Y 
    8.25Additions to header <cstdlib>Y 
    8.25.1SynopsisY 
    8.25.2DefinitionsY 
    8.25.3Function absY 
    8.25.4Function divY 
    8.26Additions to header <stdlib.h>Y 
    8.27Header <ctgmath>YDR 551
    8.28Header <tgmath.h>YDR 551
    8.29Additions to header <ctime>YC library dependency
    8.30Additions to header <cwchar>Y 
    8.30.1SynopsisY 
    8.30.2DefinitionsY 
    8.30.3Additional wide format specifiersYC library dependency
    8.31Additions to header <wchar.h>Y 
    8.32Additions to header <cwctype>Y 
    8.32.1SynopsisY 
    8.32.2Function iswblankY 
    8.33Additions to header <wctype.h>Y 

    Implementation Specific Behavior

    For behaviour which is specified by the 1998 and 2003 standards, see C++ 1998/2003 Implementation Specific Behavior. This section documents behaviour which is required by TR1. *************** release. *** 299,305 **** 3.6.4 [tr.func.bind.place]/1 There are 29 placeholders defined and the placeholder types are Assignable. !

    C++ TR 24733

    This table is based on the table of contents of ISO/IEC TR 24733 Date: 2009-08-28 Extension for the programming language C++ to support --- 304,310 ---- 3.6.4 [tr.func.bind.place]/1 There are 29 placeholders defined and the placeholder types are Assignable. !

    C++ TR 24733

    This table is based on the table of contents of ISO/IEC TR 24733 Date: 2009-08-28 Extension for the programming language C++ to support *************** decimal floating-point arithmetic *** 307,313 ****

    This page describes the TR 24733 support in mainline GCC SVN, not in any particular release. !

    Table 1.4. C++ TR 24733 Implementation Status

    SectionDescriptionStatusComments
    0 Introduction --- 312,318 ----

    This page describes the TR 24733 support in mainline GCC SVN, not in any particular release. !

    Table 1.4. C++ TR 24733 Implementation Status

    SectionDescriptionStatusComments
    0 Introduction *************** particular release. *** 330,333 ****

    --- 335,338 ----

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/streambufs.html gcc-4.7.4/libstdc++-v3/doc/html/manual/streambufs.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/streambufs.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/streambufs.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Stream Buffers

    Stream Buffers

    Derived streambuf Classes

    Creating your own stream buffers for I/O can be remarkably easy. If you are interested in doing so, we highly recommend two very excellent books: --- 1,8 ---- ! Stream Buffers

    Stream Buffers

    Derived streambuf Classes

    Creating your own stream buffers for I/O can be remarkably easy. If you are interested in doing so, we highly recommend two very excellent books: *************** *** 57,63 **** include/ext/*_filebuf.h, and in this article by James Kanze: Filtering Streambufs. !

    Buffering

    First, are you sure that you understand buffering? Particularly the fact that C++ may not, in fact, have anything to do with it?

    The rules for buffering can be a little odd, but they aren't any different from those of C. (Maybe that's why they can be a bit --- 56,62 ---- include/ext/*_filebuf.h, and in this article by James Kanze: Filtering Streambufs. !

    Buffering

    First, are you sure that you understand buffering? Particularly the fact that C++ may not, in fact, have anything to do with it?

    The rules for buffering can be a little odd, but they aren't any different from those of C. (Maybe that's why they can be a bit *************** *** 134,137 ****

    --- 133,136 ----

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/strings.html gcc-4.7.4/libstdc++-v3/doc/html/manual/strings.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/strings.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/strings.html Tue Nov 5 21:26:53 2013 *************** *** 1,14 **** ! ! Chapter 7.  Strings

    Chapter 7.  Strings ! !

    String Classes

    Simple Transformations

    Here are Standard, simple, and portable ways to perform common transformations on a string instance, such as "convert to all upper case." The word transformations --- 1,13 ---- ! Chapter 7.  Strings

    Chapter 7.  Strings ! !

    String Classes

    Simple Transformations

    Here are Standard, simple, and portable ways to perform common transformations on a string instance, such as "convert to all upper case." The word transformations *************** *** 89,95 **** str.erase(notwhite+1);

    Obviously, the calls to find could be inserted directly into the calls to erase, in case your compiler does not optimize named temporaries out of existence. !

    Case Sensitivity

    The well-known-and-if-it-isn't-well-known-it-ought-to-be Guru of the Week discussions held on Usenet covered this topic in January of 1998. --- 88,94 ---- str.erase(notwhite+1);

    Obviously, the calls to find could be inserted directly into the calls to erase, in case your compiler does not optimize named temporaries out of existence. !

    Case Sensitivity

    The well-known-and-if-it-isn't-well-known-it-ought-to-be Guru of the Week discussions held on Usenet covered this topic in January of 1998. *************** *** 126,132 **** Unicode Technical Report discussing case handling, which provides some very good information. !

    Arbitrary Character Types

    The std::basic_string is tantalizingly general, in that it is parameterized on the type of the characters which it holds. In theory, you could whip up a Unicode character class and instantiate --- 125,131 ---- Unicode Technical Report discussing case handling, which provides some very good information. !

    Arbitrary Character Types

    The std::basic_string is tantalizingly general, in that it is parameterized on the type of the characters which it holds. In theory, you could whip up a Unicode character class and instantiate *************** *** 180,186 **** nice-looking first attempt turned out to not be conforming C++, due to the rule that CharT must be a POD. (See how tricky this is?) !

    Tokenizing

    The Standard C (and C++) function strtok() leaves a lot to be desired in terms of user-friendliness. It's unintuitive, it destroys the character string on which it operates, and it requires --- 179,185 ---- nice-looking first attempt turned out to not be conforming C++, due to the rule that CharT must be a POD. (See how tricky this is?) !

    Tokenizing

    The Standard C (and C++) function strtok() leaves a lot to be desired in terms of user-friendliness. It's unintuitive, it destroys the character string on which it operates, and it requires *************** stringtok(Container &container, stri *** 256,262 **** tokenizing as well. Build an istringstream from the input text, and then use std::getline with varying delimiters (the three-argument signature) to extract tokens into a string. !

    Shrink to Fit

    From GCC 3.4 calling s.reserve(res) on a string s with res < s.capacity() will reduce the string's capacity to std::max(s.size(), res). --- 255,261 ---- tokenizing as well. Build an istringstream from the input text, and then use std::getline with varying delimiters (the three-argument signature) to extract tokens into a string. !

    Shrink to Fit

    From GCC 3.4 calling s.reserve(res) on a string s with res < s.capacity() will reduce the string's capacity to std::max(s.size(), res). *************** stringtok(Container &container, stri *** 272,278 ****

    In C++11 mode you can call s.shrink_to_fit() to achieve the same effect as s.reserve(s.size()). !

    CString (MFC)

    A common lament seen in various newsgroups deals with the Standard string class as opposed to the Microsoft Foundation Class called CString. Often programmers realize that a standard portable --- 271,277 ----

    In C++11 mode you can call s.shrink_to_fit() to achieve the same effect as s.reserve(s.size()). !

    CString (MFC)

    A common lament seen in various newsgroups deals with the Standard string class as opposed to the Microsoft Foundation Class called CString. Often programmers realize that a standard portable *************** stringtok(Container &container, stri *** 282,288 ****

    Things are not as bad as they seem. In this message, Joe Buck points out a few very important things: !

    • The Standard string supports all the operations that CString does, with three exceptions.

    • Two of those exceptions (whitespace trimming and case conversion) are trivial to implement. In fact, we do so --- 281,287 ----

      Things are not as bad as they seem. In this message, Joe Buck points out a few very important things: !

      • The Standard string supports all the operations that CString does, with three exceptions.

      • Two of those exceptions (whitespace trimming and case conversion) are trivial to implement. In fact, we do so *************** stringtok(Container &container, stri *** 340,346 **** performance is O(n).

        Joe Buck also pointed out some other things to keep in mind when comparing CString and the Standard string class: !

        • CString permits access to its internal representation; coders who exploited that may have problems moving to string.

        • Microsoft ships the source to CString (in the files MFC\SRC\Str{core,ex}.cpp), so you could fix the allocation --- 339,345 ---- performance is O(n).

          Joe Buck also pointed out some other things to keep in mind when comparing CString and the Standard string class: !

          • CString permits access to its internal representation; coders who exploited that may have problems moving to string.

          • Microsoft ships the source to CString (in the files MFC\SRC\Str{core,ex}.cpp), so you could fix the allocation *************** stringtok(Container &container, stri *** 363,366 ****

    --- 362,365 ----

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/stringstreams.html gcc-4.7.4/libstdc++-v3/doc/html/manual/stringstreams.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/stringstreams.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/stringstreams.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Memory Based Streams

    Memory Based Streams

    Compatibility With strstream

    Stringstreams (defined in the header <sstream>) are in this author's opinion one of the coolest things since sliced time. An example of their use is in the Received Wisdom --- 1,8 ---- ! Memory Based Streams

    Memory Based Streams

    Compatibility With strstream

    Stringstreams (defined in the header <sstream>) are in this author's opinion one of the coolest things since sliced time. An example of their use is in the Received Wisdom *************** *** 34,37 **** memory yourself. The strstreams have been officially deprecated, which means that 1) future revisions of the C++ Standard won't support them, and 2) if you use them, people will laugh at you. !

    --- 33,36 ---- memory yourself. The strstreams have been officially deprecated, which means that 1) future revisions of the C++ Standard won't support them, and 2) if you use them, people will laugh at you. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/support.html gcc-4.7.4/libstdc++-v3/doc/html/manual/support.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/support.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/support.html Tue Nov 5 21:26:53 2013 *************** *** 1,14 **** ! ! Chapter 4.  Support

    Chapter 4.  Support ! !

    This part deals with the functions called and objects created automatically during the course of a program's existence.

    --- 1,13 ---- ! Chapter 4.  Support

    Chapter 4.  Support ! !

    This part deals with the functions called and objects created automatically during the course of a program's existence.

    *************** *** 16,24 **** need to get your own copy from your nation's member body; see our homepage for help), we can mention a couple of changes in what kind of support a C++ program gets from the Standard Library. !

    Types

    Fundamental Types

    C++ has the following builtin types: !

    • char

    • signed char --- 15,23 ---- need to get your own copy from your nation's member body; see our homepage for help), we can mention a couple of changes in what kind of support a C++ program gets from the Standard Library. !

      Types

      Fundamental Types

      C++ has the following builtin types: !

      • char

      • signed char *************** *** 53,59 ****

        Specializing parts of the library on these types is prohibited: instead, use a POD. !

      Numeric Properties

      The header limits defines traits classes to give access to various implementation defined-aspects of the fundamental types. The traits classes -- --- 52,58 ----

      Specializing parts of the library on these types is prohibited: instead, use a POD. !

      Numeric Properties

      The header limits defines traits classes to give access to various implementation defined-aspects of the fundamental types. The traits classes -- *************** *** 99,105 **** static const bool tinyness_before; static const float_round_style round_style; }; !

      NULL

      The only change that might affect people is the type of NULL: while it is required to be a macro, the definition of that macro is not allowed --- 98,104 ---- static const bool tinyness_before; static const float_round_style round_style; }; !

      NULL

      The only change that might affect people is the type of NULL: while it is required to be a macro, the definition of that macro is not allowed *************** *** 127,130 **** Effective C++ CD example

      --- 126,129 ---- Effective C++ CD example

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/termination.html gcc-4.7.4/libstdc++-v3/doc/html/manual/termination.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/termination.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/termination.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Termination

    Termination

    Termination Handlers

    Not many changes here to cstdlib. You should note that the abort() function does not call the destructors of automatic nor static objects, so if you're --- 1,8 ---- ! Termination

    Termination

    Termination Handlers

    Not many changes here to cstdlib. You should note that the abort() function does not call the destructors of automatic nor static objects, so if you're *************** *** 45,51 **** functions, and the compiler/library might already be using some of those slots. If you think you may run out, we recommend using the xatexit/xexit combination from libiberty, which has no such limit. !

    Verbose Terminate Handler

    If you are having difficulty with uncaught exceptions and want a little bit of help debugging the causes of the core dumps, you can make use of a GNU extension, the verbose terminate handler. --- 44,50 ---- functions, and the compiler/library might already be using some of those slots. If you think you may run out, we recommend using the xatexit/xexit combination from libiberty, which has no such limit. !

    Verbose Terminate Handler

    If you are having difficulty with uncaught exceptions and want a little bit of help debugging the causes of the core dumps, you can make use of a GNU extension, the verbose terminate handler. *************** int main(int argc) *** 121,124 ****

    --- 120,123 ----

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/test.html gcc-4.7.4/libstdc++-v3/doc/html/manual/test.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/test.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/test.html Tue Nov 5 21:26:53 2013 *************** *** 1,12 **** ! ! Test

    Test

    The libstdc++ testsuite includes testing for standard conformance, regressions, ABI, and performance. !

    Organization

    Directory Layout

    The directory libsrcdir/testsuite contains the individual test cases organized in sub-directories corresponding to chapters of the C++ standard (detailed below), the dejagnu test --- 1,11 ---- ! Test

    Test

    The libstdc++ testsuite includes testing for standard conformance, regressions, ABI, and performance. !

    Organization

    Directory Layout

    The directory libsrcdir/testsuite contains the individual test cases organized in sub-directories corresponding to chapters of the C++ standard (detailed below), the dejagnu test *************** util Files for libtestc++, utilities *** 77,87 ****

    All new tests should be written with the policy of one test case, one file in mind. !

    Naming Conventions

    In addition, there are some special names and suffixes that are used within the testsuite to designate particular kinds of tests. !

    • _xin.cc

      This test case expects some kind of interactive input in order --- 76,86 ----

      All new tests should be written with the policy of one test case, one file in mind. !

    Naming Conventions

    In addition, there are some special names and suffixes that are used within the testsuite to designate particular kinds of tests. !

    • _xin.cc

      This test case expects some kind of interactive input in order *************** cat 27_io/objects/char/3_xin.in | a.out *** 131,137 **** analyze runtime performance, for performance regression testing, or for other optimization related analysis. At the moment, these test cases are not run by default. !

    Running the Testsuite

    Basic

    You can check the status of the build without installing it using the dejagnu harness, much like the rest of the gcc tools.

     make check

    in the libbuilddir directory.

    or

     make check-target-libstdc++-v3

    in the gccbuilddir directory. --- 130,136 ---- analyze runtime performance, for performance regression testing, or for other optimization related analysis. At the moment, these test cases are not run by default. !

    Running the Testsuite

    Basic

    You can check the status of the build without installing it using the dejagnu harness, much like the rest of the gcc tools.

     make check

    in the libbuilddir directory.

    or

     make check-target-libstdc++-v3

    in the gccbuilddir directory. *************** cat 27_io/objects/char/3_xin.in | a.out *** 151,157 **** archived on a daily basis on the gcc-testresults mailing list. Please check either of these places for a similar combination of source version, operating system, and host CPU. !

    Variations

    There are several options for running tests, including testing the regression tests, testing a subset of the regression tests, testing the performance tests, testing just compilation, testing --- 150,156 ---- archived on a daily basis on the gcc-testresults mailing list. Please check either of these places for a similar combination of source version, operating system, and host CPU. !

    Variations

    There are several options for running tests, including testing the regression tests, testing a subset of the regression tests, testing the performance tests, testing just compilation, testing *************** runtest --tool libstdc++ --srcdir=/path/ *** 222,228 ****

    Five files are generated that determine what test files are run. These files are: !

    • testsuite_files

      This is a list of all the test cases that will be run. Each --- 221,227 ----

      Five files are generated that determine what test files are run. These files are: !

      • testsuite_files

        This is a list of all the test cases that will be run. Each *************** runtest --tool libstdc++ --srcdir=/path/ *** 277,283 **** We are interested in any strange failures of the testsuite; please email the main libstdc++ mailing list if you see something odd or have questions. !

      Permutations

      To run the libstdc++ test suite under the debug mode, edit libstdc++-v3/scripts/testsuite_flags to add the compile-time flag -D_GLIBCXX_DEBUG to the --- 276,282 ---- We are interested in any strange failures of the testsuite; please email the main libstdc++ mailing list if you see something odd or have questions. !

      Permutations

      To run the libstdc++ test suite under the debug mode, edit libstdc++-v3/scripts/testsuite_flags to add the compile-time flag -D_GLIBCXX_DEBUG to the *************** runtest --tool libstdc++ --srcdir=/path/ *** 297,303 **** Or, just run the testsuites with CXXFLAGS set to -D_GLIBCXX_DEBUG or -D_GLIBCXX_PARALLEL. !

    Writing a new test case

    The first step in making a new test case is to choose the correct directory and file name, given the organization as previously described. --- 296,302 ---- Or, just run the testsuites with CXXFLAGS set to -D_GLIBCXX_DEBUG or -D_GLIBCXX_PARALLEL. !

    Writing a new test case

    The first step in making a new test case is to choose the correct directory and file name, given the organization as previously described. *************** up in the normal.exp file. *** 408,414 **** // { dg-options "-O0" { target *-*-* } }

    More examples can be found in the libstdc++-v3/testsuite/*/*.cc files. !

    Test Harness and Utilities

    Dejagnu Harness Details

    Underlying details of testing for conformance and regressions are abstracted via the GNU Dejagnu package. This is similar to the rest of GCC. --- 407,413 ---- // { dg-options "-O0" { target *-*-* } }

    More examples can be found in the libstdc++-v3/testsuite/*/*.cc files. !

    Test Harness and Utilities

    Dejagnu Harness Details

    Underlying details of testing for conformance and regressions are abstracted via the GNU Dejagnu package. This is similar to the rest of GCC. *************** callbacks loaded from the support librar *** 435,441 ****

    The config directory is searched for any particular "target board" information unique to this library. This is currently unused and sets only default variables. !

    Utilities

    The testsuite directory also contains some files that implement functionality that is intended to make writing test cases easier, --- 434,440 ----

    The config directory is searched for any particular "target board" information unique to this library. This is currently unused and sets only default variables. !

    Utilities

    The testsuite directory also contains some files that implement functionality that is intended to make writing test cases easier, *************** only default variables. *** 447,453 **** during testing.

    These files include the following functionality: !

    • testsuite_abi.h, testsuite_abi.cc, testsuite_abi_check.cc --- 446,452 ---- during testing.

      These files include the following functionality: !

      • testsuite_abi.h, testsuite_abi.cc, testsuite_abi_check.cc *************** only default variables. *** 477,483 **** testsuite_hooks.cc

        A large number of utilities, including: !

        • VERIFY

        • set_memory_limits

        • verify_demangle

        • run_tests_wrapped_locale

        • run_tests_wrapped_env

        • try_named_locale

        • try_mkfifo

        • func_callback

        • counter

        • copy_tracker

        • copy_constructor

        • assignment_operator

        • destructor

        • pod_char, pod_int and associated char_traits specializations

      • testsuite_io.h

        Error, exception, and constraint checking for --- 476,482 ---- testsuite_hooks.cc

        A large number of utilities, including: !

        • VERIFY

        • set_memory_limits

        • verify_demangle

        • run_tests_wrapped_locale

        • run_tests_wrapped_env

        • try_named_locale

        • try_mkfifo

        • func_callback

        • counter

        • copy_tracker

        • copy_constructor

        • assignment_operator

        • destructor

        • pod_char, pod_int and associated char_traits specializations

      • testsuite_io.h

        Error, exception, and constraint checking for *************** only default variables. *** 491,500 ****

        A number of class abstractions for performance counters, and reporting functions including: !

        • time_counter

        • resource_counter

        • report_performance

    Special Topics

    Qualifying Exception Safety Guarantees ! !

    Overview

    Testing is composed of running a particular test sequence, and looking at what happens to the surrounding code when exceptions are thrown. Each test is composed of measuring --- 490,499 ----

    A number of class abstractions for performance counters, and reporting functions including: !

    • time_counter

    • resource_counter

    • report_performance

    Special Topics

    Qualifying Exception Safety Guarantees ! !

    Overview

    Testing is composed of running a particular test sequence, and looking at what happens to the surrounding code when exceptions are thrown. Each test is composed of measuring *************** only default variables. *** 524,532 **** completes without an exception being thrown, assume all potential error paths have been exercised in a sequential manner. !

    Existing tests !
    • Ad Hoc

      For example, --- 523,531 ---- completes without an exception being thrown, assume all potential error paths have been exercised in a sequential manner. !

    Existing tests !
    • Ad Hoc

      For example, *************** as the allocator type. *** 563,571 **** instrumentation to iterator and const_iterator types that throw conditionally on iterator operations. !

    C++11 Requirements Test Sequence Descriptions !
    • Basic

      Basic consistency on exception propagation tests. For --- 562,570 ---- instrumentation to iterator and const_iterator types that throw conditionally on iterator operations. !

    C++11 Requirements Test Sequence Descriptions !
    • Basic

      Basic consistency on exception propagation tests. For *************** C++11 Requirements Test Sequence Descrip *** 636,639 **** The general form demonstrated in testsuite/23_containers/list/requirements/exception/propagation_coherent.cc . The instantiating test object is __gnu_test::propagation_coherent and is detailed in testsuite/util/exception/safety.h. !

    --- 635,638 ---- The general form demonstrated in testsuite/23_containers/list/requirements/exception/propagation_coherent.cc . The instantiating test object is __gnu_test::propagation_coherent and is detailed in testsuite/util/exception/safety.h. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/traits.html gcc-4.7.4/libstdc++-v3/doc/html/manual/traits.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/traits.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/traits.html Tue Nov 5 21:26:53 2013 *************** *** 1,10 **** ! ! Traits

    Traits

    --- 1,9 ---- ! Traits

    Traits

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/using.html gcc-4.7.4/libstdc++-v3/doc/html/manual/using.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/using.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/using.html Tue Nov 5 21:26:53 2013 *************** *** 1,9 **** ! ! Chapter 3. Using

    Chapter 3. Using

    Command Options

    The set of features available in the GNU C++ library is shaped by several GCC --- 1,8 ---- ! Chapter 3. Using

    --- 10,14 ---- enumerated and detailed in the table below.

    By default, g++ is equivalent to g++ -std=gnu++98. The standard library also defaults to this dialect. !

    Table 3.1. C++ Command Options

    Option FlagsDescription
    -std=c++98Use the 1998 ISO C++ standard plus amendments.
    -std=gnu++98As directly above, with GNU extensions.
    -std=c++11Use the 2011 ISO C++ standard.
    -std=gnu++11As directly above, with GNU extensions.
    -fexceptionsSee exception-free dialect
    -frttiAs above, but RTTI-free dialect.
    -pthread or -pthreadsFor ISO C++11 <thread>, <future>, ! <mutex>, or <condition_variable>.
    -fopenmpFor parallel mode.

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/using_concurrency.html gcc-4.7.4/libstdc++-v3/doc/html/manual/using_concurrency.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/using_concurrency.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/using_concurrency.html Tue Nov 5 21:26:53 2013 *************** *** 1,10 **** ! ! Concurrency

    Concurrency

    This section discusses issues surrounding the proper compilation of multithreaded applications which use the Standard C++ library. This information is GCC-specific since the C++ standard does not address matters of multithreaded applications. !

    Prerequisites

    All normal disclaimers aside, multithreaded C++ application are only supported when libstdc++ and all user code was built with compilers which report (via gcc/g++ -v ) the same thread model and that model is not single. As long as your --- 1,9 ---- ! Concurrency

    Concurrency

    This section discusses issues surrounding the proper compilation of multithreaded applications which use the Standard C++ library. This information is GCC-specific since the C++ standard does not address matters of multithreaded applications. !

    Prerequisites

    All normal disclaimers aside, multithreaded C++ application are only supported when libstdc++ and all user code was built with compilers which report (via gcc/g++ -v ) the same thread model and that model is not single. As long as your *************** *** 33,39 **** -pthread is honored. Some other ports use other switches. AFAIK, none of this is properly documented anywhere other than in ``gcc -dumpspecs'' (look at lib and cpp entries). !

    Thread Safety

    In the terms of the 2011 C++ standard a thread-safe program is one which does not perform any conflicting non-atomic operations on memory locations and so does not contain any data races. --- 32,38 ---- -pthread is honored. Some other ports use other switches. AFAIK, none of this is properly documented anywhere other than in ``gcc -dumpspecs'' (look at lib and cpp entries). !

    Thread Safety

    In the terms of the 2011 C++ standard a thread-safe program is one which does not perform any conflicting non-atomic operations on memory locations and so does not contain any data races. *************** of the

    • The system's libc is itself thread-safe,

    • The compiler in use reports a thread model other than 'single'. This can be tested via output from gcc --- 44,50 ---- prior to the 2011 standard.

      The library strives to be thread-safe when all of the following conditions are met: !

      Atomics

      !

      IO

      This gets a bit tricky. Please read carefully, and bear with me. !

      Structure

      A wrapper type called __basic_file provides our abstraction layer for the std::filebuf classes. Nearly all decisions dealing with actual input and output must be made in __basic_file. --- 155,163 ---- Threads and memory model for C++ pages, particularly the introduction and FAQ. !

      Atomics

      !

      IO

      This gets a bit tricky. Please read carefully, and bear with me. !

      Structure

      A wrapper type called __basic_file provides our abstraction layer for the std::filebuf classes. Nearly all decisions dealing with actual input and output must be made in __basic_file. *************** gcc version 4.1.2 20070925 (Red Hat 4.1. *** 166,172 **** but is not used in the current code. Providing locking at any higher level is akin to providing locking within containers, and is not done for the same reasons (see the links above). !

      Defaults

      The __basic_file type is simply a collection of small wrappers around the C stdio layer (again, see the link under Structure). We do no locking ourselves, but simply pass through to calls to fopen, fwrite, and so forth. --- 165,171 ---- but is not used in the current code. Providing locking at any higher level is akin to providing locking within containers, and is not done for the same reasons (see the links above). !

      Defaults

      The __basic_file type is simply a collection of small wrappers around the C stdio layer (again, see the link under Structure). We do no locking ourselves, but simply pass through to calls to fopen, fwrite, and so forth. *************** gcc version 4.1.2 20070925 (Red Hat 4.1. *** 188,194 **** contained in the stream formatting classes (e.g., setting up callbacks inside an std::ofstream), you need to guard such accesses like any other critical shared resource. !

      Future

      A second choice may be available for I/O implementations: libio. This is disabled by default, and in fact will not currently work due to other issues. It will be revisited, however. --- 187,193 ---- contained in the stream formatting classes (e.g., setting up callbacks inside an std::ofstream), you need to guard such accesses like any other critical shared resource. !

      Future

      A second choice may be available for I/O implementations: libio. This is disabled by default, and in fact will not currently work due to other issues. It will be revisited, however. *************** gcc version 4.1.2 20070925 (Red Hat 4.1. *** 213,222 **** version will see calls from libstdc++ directly into the glibc already installed. For other platforms, a copy of the libio subsection will be built and included in libstdc++. !

      Alternatives

      Don't forget that other cstdio implementations are possible. You could easily write one to perform your own forms of locking, to solve your "interesting" problems. !

      Containers

      This section discusses issues surrounding the design of multithreaded applications which use Standard C++ containers. All information in this section is current as of the gcc 3.0 release and all later point releases. Although earlier gcc --- 212,221 ---- version will see calls from libstdc++ directly into the glibc already installed. For other platforms, a copy of the libio subsection will be built and included in libstdc++. !

      Alternatives

      Don't forget that other cstdio implementations are possible. You could easily write one to perform your own forms of locking, to solve your "interesting" problems. !

      Containers

      This section discusses issues surrounding the design of multithreaded applications which use Standard C++ containers. All information in this section is current as of the gcc 3.0 release and all later point releases. Although earlier gcc *************** gcc version 4.1.2 20070925 (Red Hat 4.1. *** 269,272 **** useful are details on allocator options and capabilities. !

    --- 268,271 ---- useful are details on allocator options and capabilities. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html gcc-4.7.4/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html Tue Nov 5 21:26:53 2013 *************** *** 1,10 **** ! ! Linking

    Linking

    Almost Nothing

    Or as close as it gets: freestanding. This is a minimal configuration, with only partial support for the standard library. Assume only the following header files can be used: !

    • cstdarg

    • cstddef --- 1,9 ---- ! Linking

      Linking

      Almost Nothing

      Or as close as it gets: freestanding. This is a minimal configuration, with only partial support for the standard library. Assume only the following header files can be used: !

      • cstdarg

      • cstddef *************** *** 22,33 **** typeinfo

      In addition, throw in !

      • cxxabi.h.

      In the C++11 dialect add !

      • initializer_list

      • type_traits --- 21,32 ---- typeinfo

      In addition, throw in !

      • cxxabi.h.

      In the C++11 dialect add !

      • initializer_list

      • type_traits *************** *** 40,46 **** No attempt is made to verify that only the minimal subset identified above is actually used at compile time. Violations are diagnosed as undefined symbols at link time. !

      Finding Dynamic or Shared Libraries

      If the only library built is the static library (libstdc++.a), or if specifying static linking, this section is can be skipped. But --- 39,45 ---- No attempt is made to verify that only the minimal subset identified above is actually used at compile time. Violations are diagnosed as undefined symbols at link time. !

      Finding Dynamic or Shared Libraries

      If the only library built is the static library (libstdc++.a), or if specifying static linking, this section is can be skipped. But *************** A quick read of the relevant part of the *** 63,69 ****

      Methods vary for different platforms and different styles, and are printed to the screen during installation. To summarize: !

      • At runtime set LD_LIBRARY_PATH in your environment correctly, so that the shared library for libstdc++ can be found and loaded. Be certain that you --- 62,68 ----

        Methods vary for different platforms and different styles, and are printed to the screen during installation. To summarize: !

        • At runtime set LD_LIBRARY_PATH in your environment correctly, so that the shared library for libstdc++ can be found and loaded. Be certain that you *************** A quick read of the relevant part of the *** 75,81 **** g++, which will in turn pass them on to the linker. The exact format of the options is dependent on which linker you use: !

          • GNU ld (default on GNU/Linux): -Wl,-rpath,destdir/lib

          • --- 74,80 ---- g++, which will in turn pass them on to the linker. The exact format of the options is dependent on which linker you use: !

            • GNU ld (default on GNU/Linux): -Wl,-rpath,destdir/lib

            • *************** A quick read of the relevant part of the *** 106,109 **** also installed, for use with Libtool. If you use Libtool to create your executables, these details are taken care of for you. !

          --- 105,108 ---- also installed, for use with Libtool. If you use Libtool to create your executables, these details are taken care of for you. !

      \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/using_exceptions.html gcc-4.7.4/libstdc++-v3/doc/html/manual/using_exceptions.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/using_exceptions.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/using_exceptions.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Exceptions

      Exceptions

      The C++ language provides language support for stack unwinding with try and catch blocks and the throw keyword. --- 1,5 ---- ! Exceptions

      Exceptions

      The C++ language provides language support for stack unwinding with try and catch blocks and the throw keyword. *************** exceptional circumstances. *** 12,18 ****

      Two general topics of discussion follow: exception neutrality and exception safety. !

      Exception Safety

      What is exception-safe code?

      Will define this as reasonable and well-defined behavior by classes --- 11,17 ----

      Two general topics of discussion follow: exception neutrality and exception safety. !

      Exception Safety

      What is exception-safe code?

      Will define this as reasonable and well-defined behavior by classes *************** exception neutrality and exception safet *** 27,33 **** Using the layered approach from Abrahams, can classify library components as providing set levels of safety. These will be called exception guarantees, and can be divided into three categories. !

      • One. Don't throw.

        As specified in 23.2.1 general container requirements. Applicable --- 26,32 ---- Using the layered approach from Abrahams, can classify library components as providing set levels of safety. These will be called exception guarantees, and can be divided into three categories. !

        • One. Don't throw.

          As specified in 23.2.1 general container requirements. Applicable *************** exception neutrality and exception safet *** 51,57 **** Member functions insert of a single element, push_back, push_front, and rehash. !

      Exception Neutrality

      Simply put, once thrown an exception object should continue in flight unless handled explicitly. In practice, this means propagating exceptions should not be swallowed in --- 50,56 ---- Member functions insert of a single element, push_back, push_front, and rehash. !

    Exception Neutrality

    Simply put, once thrown an exception object should continue in flight unless handled explicitly. In practice, this means propagating exceptions should not be swallowed in *************** exception neutrality and exception safet *** 75,81 **** Unfortunately, this tends to be more of a guideline than a strict rule as applied to the standard library. As such, the following is a list of known problem areas where exceptions are not propagated. !

    • Input/Output

      The destructor ios_base::Init::~Init() --- 74,80 ---- Unfortunately, this tends to be more of a guideline than a strict rule as applied to the standard library. As such, the following is a list of known problem areas where exceptions are not propagated. !

      • Input/Output

        The destructor ios_base::Init::~Init() *************** exception neutrality and exception safet *** 101,107 **** The constructors of thread that take a callable function argument swallow all exceptions resulting from executing the function argument. !

    Doing without

    C++ is a language that strives to be as efficient as is possible in delivering features. As such, considerable care is used by both language implementer and designers to make sure unused features --- 100,106 ---- The constructors of thread that take a callable function argument swallow all exceptions resulting from executing the function argument. !

    Doing without

    C++ is a language that strives to be as efficient as is possible in delivering features. As such, considerable care is used by both language implementer and designers to make sure unused features *************** exception neutrality and exception safet *** 220,226 **** substitution of the C language keyword const with the uglified doppelganger __const. !

    Compatibility

    With C

    C language code that is expecting to interoperate with C++ should be compiled with -fexceptions. This will make debugging a C language function called as part of C++-induced stack --- 219,225 ---- substitution of the C language keyword const with the uglified doppelganger __const. !

    Compatibility

    With C

    C language code that is expecting to interoperate with C++ should be compiled with -fexceptions. This will make debugging a C language function called as part of C++-induced stack *************** is called. *** 235,241 **** getting these details right. For GNU systems, all appropriate parts of the GNU C library are already compiled with -fexceptions. !

    With POSIX thread cancellation

    GNU systems re-use some of the exception handling mechanisms to track control flow for POSIX thread cancellation.

    --- 234,240 ---- getting these details right. For GNU systems, all appropriate parts of the GNU C library are already compiled with -fexceptions. !

    With POSIX thread cancellation

    GNU systems re-use some of the exception handling mechanisms to track control flow for POSIX thread cancellation.

    *************** is called. *** 266,272 **** } catch(...) { this->_M_setstate(ios_base::badbit); } !

    Bibliography

    System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) --- 265,271 ---- } catch(...) { this->_M_setstate(ios_base::badbit); } !

    Bibliography

    System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) *************** is called. *** 275,314 **** . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. ! .

    Error and Exception Handling . David Abrahams . Boost ! .

    Exception-Safety in Generic Components . David Abrahams. Boost ! .

    Standard Library Exception Policy . Matt Austern. WG21 N1077 ! .

    ia64 c++ abi exception handling . Richard Henderson. GNU ! .

    Exceptional C++ . Exception-Safety Issues and Techniques ! . Herb Sutter.

    --- 274,313 ---- . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. ! .

    Error and Exception Handling . David Abrahams . Boost ! .

    Exception-Safety in Generic Components . David Abrahams. Boost ! .

    Standard Library Exception Policy . Matt Austern. WG21 N1077 ! .

    ia64 c++ abi exception handling . Richard Henderson. GNU ! .

    Exceptional C++ . Exception-Safety Issues and Techniques ! . Herb Sutter.

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/using_headers.html gcc-4.7.4/libstdc++-v3/doc/html/manual/using_headers.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/using_headers.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/using_headers.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Headers

    Headers

    Header Files

    The C++ standard specifies the entire set of header files that must be available to all hosted implementations. Actually, the word "files" is a misnomer, since the contents of the --- 1,5 ---- ! Headers

    Headers

    Header Files

    The C++ standard specifies the entire set of header files that must be available to all hosted implementations. Actually, the word "files" is a misnomer, since the contents of the *************** *** 19,37 **** the 1998 standard as updated for 2003, and the current 2011 standard.

    C++98/03 include files. These are available in the default compilation mode, i.e. -std=c++98 or -std=gnu++98. !

    Table 3.2. C++ 1998 Library Headers

    algorithmbitsetcomplexdequeexception
    fstreamfunctionaliomanipiosiosfwd
    iostreamistreamiteratorlimitslist
    localemapmemorynewnumeric
    ostreamqueuesetsstreamstack
    stdexceptstreambufstringutilitytypeinfo
    valarrayvector   

    Table 3.3. C++ 1998 Library Headers for C Library Facilities

    cassertcerrnocctypecfloatciso646
    climitsclocalecmathcsetjmpcsignal
    cstdargcstddefcstdiocstdlibcstring
    ctimecwcharcwctype  

    C++11 include files. These are only available in C++11 compilation mode, i.e. -std=c++11 or -std=gnu++11. !

    Table 3.4. C++ 2011 Library Headers

    algorithmarraybitsetchronocomplex
    condition_variabledequeexceptionforward_listfstream
    functionalfutureinitalizer_listiomanipios
    iosfwdiostreamistreamiteratorlimits
    listlocalemapmemorymutex
    newnumericostreamqueuerandom
    ratioregexsetsstreamstack
    stdexceptstreambufstringsystem_errorthread
    tupletype_traitstypeinfounordered_mapunordered_set
    utilityvalarrayvector  

    Table 3.5. C++ 2011 Library Headers for C Library Facilities

    cassertccomplexcctypecerrnocfenv
    cfloatcinttypesciso646climitsclocale
    cmathcsetjmpcsignalcstdargcstdbool
    cstddefcstdintcstdlibcstdiocstring
    ctgmathctimecucharcwcharcwctype

    In addition, TR1 includes as: !

    Table 3.6. C++ TR 1 Library Headers

    tr1/arraytr1/complextr1/memorytr1/functionaltr1/random
    tr1/regextr1/tupletr1/type_traitstr1/unordered_maptr1/unordered_set
    tr1/utility    

    Table 3.7. C++ TR 1 Library Headers for C Library Facilities

    tr1/ccomplextr1/cfenvtr1/cfloattr1/cmathtr1/cinttypes
    tr1/climitstr1/cstdargtr1/cstdbooltr1/cstdinttr1/cstdio
    tr1/cstdlibtr1/ctgmathtr1/ctimetr1/cwchartr1/cwctype

    Decimal floating-point arithmetic is available if the C++ compiler supports scalar decimal floating-point types defined via __attribute__((mode(SD|DD|LD))). !

    Table 3.8. C++ TR 24733 Decimal Floating-Point Header

    decimal/decimal

    Also included are files for the C++ ABI interface: !

    Table 3.9. C++ ABI Headers

    cxxabi.hcxxabi_forced.h

    And a large variety of extensions. !

    Table 3.10. Extension Headers

    ext/algorithmext/atomicity.hext/array_allocator.hext/bitmap_allocator.hext/cast.h
    ext/codecvt_specializations.hext/concurrence.hext/debug_allocator.hext/enc_filebuf.hext/extptr_allocator.h
    ext/functionalext/iteratorext/malloc_allocator.hext/memoryext/mt_allocator.h
    ext/new_allocator.hext/numericext/numeric_traits.hext/pb_ds/assoc_container.hext/pb_ds/priority_queue.h
    ext/pod_char_traits.hext/pool_allocator.hext/rb_treeext/ropeext/slist
    ext/stdio_filebuf.hext/stdio_sync_filebuf.hext/throw_allocator.hext/typelist.hext/type_traits.h
    ext/vstring.h    

    Table 3.11. Extension Debug Headers

    debug/bitsetdebug/dequedebug/listdebug/mapdebug/set
    debug/stringdebug/unordered_mapdebug/unordered_setdebug/vector 

    Table 3.12. Extension Profile Headers

    profile/bitsetprofile/dequeprofile/listprofile/map
    profile/setprofile/unordered_mapprofile/unordered_setprofile/vector

    Table 3.13. Extension Parallel Headers

    parallel/algorithmparallel/numeric

    Mixing Headers

    A few simple rules.

    First, mixing different dialects of the standard headers is not possible. It's an all-or-nothing affair. Thus, code like

    --- 18,36 ----
           the 1998 standard as updated for 2003, and the current 2011 standard.
         

    C++98/03 include files. These are available in the default compilation mode, i.e. -std=c++98 or -std=gnu++98. !

    Table 3.2. C++ 1998 Library Headers

    algorithmbitsetcomplexdequeexception
    fstreamfunctionaliomanipiosiosfwd
    iostreamistreamiteratorlimitslist
    localemapmemorynewnumeric
    ostreamqueuesetsstreamstack
    stdexceptstreambufstringutilitytypeinfo
    valarrayvector   

    Table 3.3. C++ 1998 Library Headers for C Library Facilities

    cassertcerrnocctypecfloatciso646
    climitsclocalecmathcsetjmpcsignal
    cstdargcstddefcstdiocstdlibcstring
    ctimecwcharcwctype  

    C++11 include files. These are only available in C++11 compilation mode, i.e. -std=c++11 or -std=gnu++11. !

    Table 3.4. C++ 2011 Library Headers

    algorithmarraybitsetchronocomplex
    condition_variabledequeexceptionforward_listfstream
    functionalfutureinitalizer_listiomanipios
    iosfwdiostreamistreamiteratorlimits
    listlocalemapmemorymutex
    newnumericostreamqueuerandom
    ratioregexsetsstreamstack
    stdexceptstreambufstringsystem_errorthread
    tupletype_traitstypeinfounordered_mapunordered_set
    utilityvalarrayvector  

    Table 3.5. C++ 2011 Library Headers for C Library Facilities

    cassertccomplexcctypecerrnocfenv
    cfloatcinttypesciso646climitsclocale
    cmathcsetjmpcsignalcstdargcstdbool
    cstddefcstdintcstdlibcstdiocstring
    ctgmathctimecucharcwcharcwctype

    In addition, TR1 includes as: !

    Table 3.6. C++ TR 1 Library Headers

    tr1/arraytr1/complextr1/memorytr1/functionaltr1/random
    tr1/regextr1/tupletr1/type_traitstr1/unordered_maptr1/unordered_set
    tr1/utility    

    Table 3.7. C++ TR 1 Library Headers for C Library Facilities

    tr1/ccomplextr1/cfenvtr1/cfloattr1/cmathtr1/cinttypes
    tr1/climitstr1/cstdargtr1/cstdbooltr1/cstdinttr1/cstdio
    tr1/cstdlibtr1/ctgmathtr1/ctimetr1/cwchartr1/cwctype

    Decimal floating-point arithmetic is available if the C++ compiler supports scalar decimal floating-point types defined via __attribute__((mode(SD|DD|LD))). !

    Table 3.8. C++ TR 24733 Decimal Floating-Point Header

    decimal/decimal

    Also included are files for the C++ ABI interface: !

    Table 3.9. C++ ABI Headers

    cxxabi.hcxxabi_forced.h

    And a large variety of extensions. !

    Table 3.10. Extension Headers

    ext/algorithmext/atomicity.hext/array_allocator.hext/bitmap_allocator.hext/cast.h
    ext/codecvt_specializations.hext/concurrence.hext/debug_allocator.hext/enc_filebuf.hext/extptr_allocator.h
    ext/functionalext/iteratorext/malloc_allocator.hext/memoryext/mt_allocator.h
    ext/new_allocator.hext/numericext/numeric_traits.hext/pb_ds/assoc_container.hext/pb_ds/priority_queue.h
    ext/pod_char_traits.hext/pool_allocator.hext/rb_treeext/ropeext/slist
    ext/stdio_filebuf.hext/stdio_sync_filebuf.hext/throw_allocator.hext/typelist.hext/type_traits.h
    ext/vstring.h    

    Table 3.11. Extension Debug Headers

    debug/bitsetdebug/dequedebug/listdebug/mapdebug/set
    debug/stringdebug/unordered_mapdebug/unordered_setdebug/vector 

    Table 3.12. Extension Profile Headers

    profile/bitsetprofile/dequeprofile/listprofile/map
    profile/setprofile/unordered_mapprofile/unordered_setprofile/vector

    Table 3.13. Extension Parallel Headers

    parallel/algorithmparallel/numeric

    Mixing Headers

    A few simple rules.

    First, mixing different dialects of the standard headers is not possible. It's an all-or-nothing affair. Thus, code like

    *************** same translation unit:
    *** 54,60 ****
      #include <tr1/type_traits>
      #include <type_traits>
      

    Several parts of C++11 diverge quite substantially from TR1 predecessors. !

    The C Headers and namespace std

    The standard specifies that if one includes the C-style header (<math.h> in this case), the symbols will be available in the global namespace and perhaps in --- 53,59 ---- #include <tr1/type_traits> #include <type_traits>

    Several parts of C++11 diverge quite substantially from TR1 predecessors. !

    The C Headers and namespace std

    The standard specifies that if one includes the C-style header (<math.h> in this case), the symbols will be available in the global namespace and perhaps in *************** floating-point types. This means that std::sinf, std::sin, and std::sinl. !

    Precompiled Headers

    There are three base header files that are provided. They can be used to precompile the standard headers and extensions into binary files that may the be used to speed compiles that use these headers. !

    • stdc++.h

      Includes all standard headers. Actual content varies depending on language dialect.

    • stdtr1c++.h

      Includes all of <stdc++.h>, and adds all the TR1 headers.

    • extc++.h

      Includes all of <stdtr1c++.h>, and adds all the Extension headers. --- 72,81 ---- used uniformly, instead of a combination of std::sinf, std::sin, and std::sinl. !

    Precompiled Headers

    There are three base header files that are provided. They can be used to precompile the standard headers and extensions into binary files that may the be used to speed compiles that use these headers. !

    • stdc++.h

      Includes all standard headers. Actual content varies depending on language dialect.

    • stdtr1c++.h

      Includes all of <stdc++.h>, and adds all the TR1 headers.

    • extc++.h

      Includes all of <stdtr1c++.h>, and adds all the Extension headers. *************** g++ -Winvalid-pch -I. -include stdc++.h *** 100,103 **** . /mnt/share/bld/H-x86-gcc.20071201/include/c++/4.3.0/iostream . /mnt/share/bld/H-x86-gcc.20071201include/c++/4.3.0/string

      The exclamation point to the left of the stdc++.h.gch listing means that the generated PCH file was used, and thus the

      Detailed information about creating precompiled header files can be found in the GCC documentation. !

    --- 99,102 ---- . /mnt/share/bld/H-x86-gcc.20071201/include/c++/4.3.0/iostream . /mnt/share/bld/H-x86-gcc.20071201include/c++/4.3.0/string

    The exclamation point to the left of the stdc++.h.gch listing means that the generated PCH file was used, and thus the

    Detailed information about creating precompiled header files can be found in the GCC documentation. !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/using_macros.html gcc-4.7.4/libstdc++-v3/doc/html/manual/using_macros.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/using_macros.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/using_macros.html Tue Nov 5 21:26:53 2013 *************** *** 1,6 **** ! ! Macros

    Macros

    All library macros begin with _GLIBCXX_.

    Furthermore, all pre-processor macros, switches, and --- 1,5 ---- ! Macros

    Macros

    All library macros begin with _GLIBCXX_.

    Furthermore, all pre-processor macros, switches, and *************** *** 18,24 **** those macros listed below are offered for consideration by the general public.

    Below is the macro which users may check for library version ! information.

    __GLIBCXX__

    The current version of libstdc++ in compressed ISO date format, form of an unsigned long. For details on the value of this particular macro for a particular release, please consult this --- 17,23 ---- those macros listed below are offered for consideration by the general public.

    Below is the macro which users may check for library version ! information.

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/using_namespaces.html gcc-4.7.4/libstdc++-v3/doc/html/manual/using_namespaces.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/using_namespaces.html Fri Sep 21 06:29:32 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/using_namespaces.html Tue Nov 5 21:26:53 2013 *************** *** 1,7 **** ! ! Namespaces

    Namespaces

    Available Namespaces

    There are three main namespaces. !

    • std

      The ISO C++ standards specify that "all library entities are defined within namespace std." This includes namespaces nested within namespace std, such as namespace std::tr1. --- 1,6 ---- ! Namespaces

      Namespaces

      Available Namespaces

      There are three main namespaces. !

      • std

        The ISO C++ standards specify that "all library entities are defined within namespace std." This includes namespaces nested within namespace std, such as namespace std::tr1. *************** but necessary for interoperability. *** 12,22 **** include __gnu_cxx, __gnu_debug, __gnu_parallel, and __gnu_pbds.

      A complete list of implementation namespaces (including namespace contents) is available in the generated source documentation. !

      namespace std

      One standard requirement is that the library components are defined in namespace std::. Thus, in order to use these types or functions, one must do one of two things: !

      • put a kind of using-declaration in your source (either using namespace std; or i.e. using std::string;) This approach works well for individual source files, but should not be used in a global context, like header files. --- 11,21 ---- include __gnu_cxx, __gnu_debug, __gnu_parallel, and __gnu_pbds.

      A complete list of implementation namespaces (including namespace contents) is available in the generated source documentation. !

      namespace std

      One standard requirement is that the library components are defined in namespace std::. Thus, in order to use these types or functions, one must do one of two things: !

      • put a kind of using-declaration in your source (either using namespace std; or i.e. using std::string;) This approach works well for individual source files, but should not be used in a global context, like header files. *************** qualified name for each libr *** 25,31 **** (i.e. std::string, std::cout) Always can be used, and usually enhanced, by strategic use of typedefs. (In the cases where the qualified verbiage becomes unwieldy.) !

      Using Namespace Composition

      Best practice in programming suggests sequestering new data or functionality in a sanely-named, unique namespace whenever possible. This is considered an advantage over dumping everything in --- 24,30 ---- (i.e. std::string, std::cout) Always can be used, and usually enhanced, by strategic use of typedefs. (In the cases where the qualified verbiage becomes unwieldy.) !

    Using Namespace Composition

    Best practice in programming suggests sequestering new data or functionality in a sanely-named, unique namespace whenever possible. This is considered an advantage over dumping everything in *************** namespace gtk *** 58,61 **** std::string; (depending on whether the system has libstdc++ in std:: or not). (ideas from Llewelly and Karl Nelson) !

    --- 57,60 ---- std::string; (depending on whether the system has libstdc++ in std:: or not). (ideas from Llewelly and Karl Nelson) !

    \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/html/manual/utilities.html gcc-4.7.4/libstdc++-v3/doc/html/manual/utilities.html *** gcc-4.7.3/libstdc++-v3/doc/html/manual/utilities.html Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/html/manual/utilities.html Tue Nov 5 21:26:53 2013 *************** *** 1,17 **** ! ! Chapter 6.  Utilities --- 1,16 ---- ! Chapter 6.  Utilities \ No newline at end of file diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/xml/faq.xml gcc-4.7.4/libstdc++-v3/doc/xml/faq.xml *** gcc-4.7.3/libstdc++-v3/doc/xml/faq.xml Sun Nov 20 19:56:48 2011 --- gcc-4.7.4/libstdc++-v3/doc/xml/faq.xml Thu May 8 19:57:06 2014 *************** *** 241,247 **** ! None. We encourage such programs to be released as open source, but we won't punish you or sue you if you choose otherwise. --- 241,247 ---- ! None. We encourage such programs to be released as free software, but we won't punish you or sue you if you choose otherwise. diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/xml/manual/spine.xml gcc-4.7.4/libstdc++-v3/doc/xml/manual/spine.xml *** gcc-4.7.3/libstdc++-v3/doc/xml/manual/spine.xml Tue Dec 18 12:15:43 2012 --- gcc-4.7.4/libstdc++-v3/doc/xml/manual/spine.xml Tue Nov 5 21:26:53 2013 *************** *** 20,25 **** --- 20,26 ---- 2010 2011 2012 + 2013 FSF diff -Nrcpad gcc-4.7.3/libstdc++-v3/doc/xml/manual/status_cxx2011.xml gcc-4.7.4/libstdc++-v3/doc/xml/manual/status_cxx2011.xml *** gcc-4.7.3/libstdc++-v3/doc/xml/manual/status_cxx2011.xml Tue Jan 8 21:32:57 2013 --- gcc-4.7.4/libstdc++-v3/doc/xml/manual/status_cxx2011.xml Tue Nov 5 21:26:53 2013 *************** particular release. *** 885,894 **** 20.9.7.6 Other transformations ! Y ! 20.10 --- 885,895 ---- + 20.9.7.6 Other transformations ! Partial ! Missing aligned_union. 20.10 diff -Nrcpad gcc-4.7.3/libstdc++-v3/include/bits/atomic_base.h gcc-4.7.4/libstdc++-v3/include/bits/atomic_base.h *** gcc-4.7.3/libstdc++-v3/include/bits/atomic_base.h Wed Feb 27 00:57:36 2013 --- gcc-4.7.4/libstdc++-v3/include/bits/atomic_base.h Tue Mar 25 20:40:17 2014 *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 722,732 **** bool is_lock_free() const noexcept ! { return __atomic_is_lock_free(_M_type_size(1), &_M_p); } bool is_lock_free() const volatile noexcept ! { return __atomic_is_lock_free(_M_type_size(1), &_M_p); } void store(__pointer_type __p, --- 722,732 ---- bool is_lock_free() const noexcept ! { return __atomic_is_lock_free(sizeof(__pointer_type), &_M_p); } bool is_lock_free() const volatile noexcept ! { return __atomic_is_lock_free(sizeof(__pointer_type), &_M_p); } void store(__pointer_type __p, diff -Nrcpad gcc-4.7.3/libstdc++-v3/include/bits/basic_string.h gcc-4.7.4/libstdc++-v3/include/bits/basic_string.h *** gcc-4.7.3/libstdc++-v3/include/bits/basic_string.h Fri Nov 18 12:37:06 2011 --- gcc-4.7.4/libstdc++-v3/include/bits/basic_string.h Wed May 15 22:34:22 2013 *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 2764,2773 **** * * Stores characters from @a __is into @a __str until @a __delim is * found, the end of the stream is encountered, or str.max_size() ! * is reached. If is.width() is non-zero, that is the limit on the ! * number of characters stored into @a __str. Any previous ! * contents of @a __str are erased. If @a __delim was encountered, ! * it is extracted but not stored into @a __str. */ template basic_istream<_CharT, _Traits>& --- 2764,2772 ---- * * Stores characters from @a __is into @a __str until @a __delim is * found, the end of the stream is encountered, or str.max_size() ! * is reached. Any previous contents of @a __str are erased. If ! * @a __delim is encountered, it is extracted but not stored into ! * @a __str. */ template basic_istream<_CharT, _Traits>& *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 2782,2791 **** * * Stores characters from is into @a __str until '\n' is * found, the end of the stream is encountered, or str.max_size() ! * is reached. If __is.width() is non-zero, that is the limit on ! * the number of characters stored into @a __str. Any previous ! * contents of @a __str are erased. If end of line was ! * encountered, it is extracted but not stored into @a __str. */ template inline basic_istream<_CharT, _Traits>& --- 2781,2789 ---- * * Stores characters from is into @a __str until '\n' is * found, the end of the stream is encountered, or str.max_size() ! * is reached. Any previous contents of @a __str are erased. If ! * end of line is encountered, it is extracted but not stored into ! * @a __str. */ template inline basic_istream<_CharT, _Traits>& diff -Nrcpad gcc-4.7.3/libstdc++-v3/include/bits/random.tcc gcc-4.7.4/libstdc++-v3/include/bits/random.tcc *** gcc-4.7.3/libstdc++-v3/include/bits/random.tcc Mon Nov 5 20:11:32 2012 --- gcc-4.7.4/libstdc++-v3/include/bits/random.tcc Tue Sep 3 10:19:16 2013 *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 1125,1131 **** operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p) { ! typedef typename std::gamma_distribution::param_type param_type; const double __y = --- 1125,1131 ---- operator()(_UniformRandomNumberGenerator& __urng, const param_type& __p) { ! typedef typename std::gamma_distribution::param_type param_type; const double __y = diff -Nrcpad gcc-4.7.3/libstdc++-v3/include/bits/shared_ptr_base.h gcc-4.7.4/libstdc++-v3/include/bits/shared_ptr_base.h *** gcc-4.7.3/libstdc++-v3/include/bits/shared_ptr_base.h Mon Oct 29 21:56:12 2012 --- gcc-4.7.4/libstdc++-v3/include/bits/shared_ptr_base.h Wed Oct 30 18:26:53 2013 *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 394,400 **** public: template _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args) ! : _M_impl(__a), _M_storage() { _M_impl._M_ptr = static_cast<_Tp*>(static_cast(&_M_storage)); // _GLIBCXX_RESOLVE_LIB_DEFECTS --- 394,400 ---- public: template _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args) ! : _M_impl(__a) { _M_impl._M_ptr = static_cast<_Tp*>(static_cast(&_M_storage)); // _GLIBCXX_RESOLVE_LIB_DEFECTS diff -Nrcpad gcc-4.7.3/libstdc++-v3/include/bits/stl_algo.h gcc-4.7.4/libstdc++-v3/include/bits/stl_algo.h *** gcc-4.7.3/libstdc++-v3/include/bits/stl_algo.h Thu Apr 12 21:41:55 2012 --- gcc-4.7.4/libstdc++-v3/include/bits/stl_algo.h Sun Oct 20 09:08:26 2013 *************** namespace std _GLIBCXX_VISIBILITY(defaul *** 74,83 **** { _GLIBCXX_BEGIN_NAMESPACE_VERSION ! /// Swaps the median value of *__a, *__b and *__c to *__a template void ! __move_median_first(_Iterator __a, _Iterator __b, _Iterator __c) { // concept requirements __glibcxx_function_requires(_LessThanComparableConcept< --- 74,84 ---- { _GLIBCXX_BEGIN_NAMESPACE_VERSION ! /// Swaps the median value of *__a, *__b and *__c to *__result template void ! __move_median_to_first(_Iterator __result, _Iterator __a, ! _Iterator __b, _Iterator __c) { // concept requirements __glibcxx_function_requires(_LessThanComparableConcept< *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 86,108 **** if (*__a < *__b) { if (*__b < *__c) ! std::iter_swap(__a, __b); else if (*__a < *__c) ! std::iter_swap(__a, __c); } else if (*__a < *__c) ! return; else if (*__b < *__c) ! std::iter_swap(__a, __c); else ! std::iter_swap(__a, __b); } ! /// Swaps the median value of *__a, *__b and *__c under __comp to *__a template void ! __move_median_first(_Iterator __a, _Iterator __b, _Iterator __c, ! _Compare __comp) { // concept requirements __glibcxx_function_requires(_BinaryFunctionConcept<_Compare, bool, --- 87,112 ---- if (*__a < *__b) { if (*__b < *__c) ! std::iter_swap(__result, __b); else if (*__a < *__c) ! std::iter_swap(__result, __c); ! else ! std::iter_swap(__result, __a); } else if (*__a < *__c) ! std::iter_swap(__result, __a); else if (*__b < *__c) ! std::iter_swap(__result, __c); else ! std::iter_swap(__result, __b); } ! /// Swaps the median value of *__a, *__b and *__c under __comp to *__result template void ! __move_median_to_first(_Iterator __result, _Iterator __a, ! _Iterator __b, _Iterator __c, ! _Compare __comp) { // concept requirements __glibcxx_function_requires(_BinaryFunctionConcept<_Compare, bool, *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 112,127 **** if (__comp(*__a, *__b)) { if (__comp(*__b, *__c)) ! std::iter_swap(__a, __b); else if (__comp(*__a, *__c)) ! std::iter_swap(__a, __c); } else if (__comp(*__a, *__c)) ! return; else if (__comp(*__b, *__c)) ! std::iter_swap(__a, __c); else ! std::iter_swap(__a, __b); } // for_each --- 116,133 ---- if (__comp(*__a, *__b)) { if (__comp(*__b, *__c)) ! std::iter_swap(__result, __b); else if (__comp(*__a, *__c)) ! std::iter_swap(__result, __c); ! else ! std::iter_swap(__result, __a); } else if (__comp(*__a, *__c)) ! std::iter_swap(__result, __a); else if (__comp(*__b, *__c)) ! std::iter_swap(__result, __c); else ! std::iter_swap(__result, __b); } // for_each *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 2305,2311 **** _RandomAccessIterator __last) { _RandomAccessIterator __mid = __first + (__last - __first) / 2; ! std::__move_median_first(__first, __mid, (__last - 1)); return std::__unguarded_partition(__first + 1, __last, *__first); } --- 2311,2317 ---- _RandomAccessIterator __last) { _RandomAccessIterator __mid = __first + (__last - __first) / 2; ! std::__move_median_to_first(__first, __first + 1, __mid, __last - 1); return std::__unguarded_partition(__first + 1, __last, *__first); } *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 2317,2323 **** _RandomAccessIterator __last, _Compare __comp) { _RandomAccessIterator __mid = __first + (__last - __first) / 2; ! std::__move_median_first(__first, __mid, (__last - 1), __comp); return std::__unguarded_partition(__first + 1, __last, *__first, __comp); } --- 2323,2330 ---- _RandomAccessIterator __last, _Compare __comp) { _RandomAccessIterator __mid = __first + (__last - __first) / 2; ! std::__move_median_to_first(__first, __first + 1, __mid, __last - 1, ! __comp); return std::__unguarded_partition(__first + 1, __last, *__first, __comp); } diff -Nrcpad gcc-4.7.3/libstdc++-v3/include/std/future gcc-4.7.4/libstdc++-v3/include/std/future *** gcc-4.7.3/libstdc++-v3/include/std/future Mon Nov 12 23:56:22 2012 --- gcc-4.7.4/libstdc++-v3/include/std/future Thu Sep 26 19:04:04 2013 *************** *** 1,6 **** // -*- C++ -*- ! // Copyright (C) 2009, 2010, 2011, 2012 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the --- 1,6 ---- // -*- C++ -*- ! // Copyright (C) 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 456,462 **** __setter(promise* __prom); template ! static bool _S_check(const shared_ptr<_Tp>& __p) { if (!static_cast(__p)) --- 456,462 ---- __setter(promise* __prom); template ! static void _S_check(const shared_ptr<_Tp>& __p) { if (!static_cast(__p)) diff -Nrcpad gcc-4.7.3/libstdc++-v3/include/tr2/bool_set gcc-4.7.4/libstdc++-v3/include/tr2/bool_set *** gcc-4.7.3/libstdc++-v3/include/tr2/bool_set Thu Nov 3 22:23:35 2011 --- gcc-4.7.4/libstdc++-v3/include/tr2/bool_set Thu May 29 14:54:42 2014 *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 44,50 **** * bool_set * * See N2136, Bool_set: multi-valued logic ! * by Herv Brnnimann, Guillaume Melquiond, Sylvain Pion. * * The implicit conversion to bool is slippery! I may use the new * explicit conversion. This has been specialized in the language --- 44,50 ---- * bool_set * * See N2136, Bool_set: multi-valued logic ! * by Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion. * * The implicit conversion to bool is slippery! I may use the new * explicit conversion. This has been specialized in the language diff -Nrcpad gcc-4.7.3/libstdc++-v3/libsupc++/eh_alloc.cc gcc-4.7.4/libstdc++-v3/libsupc++/eh_alloc.cc *** gcc-4.7.3/libstdc++-v3/libsupc++/eh_alloc.cc Mon Oct 10 19:03:39 2011 --- gcc-4.7.4/libstdc++-v3/libsupc++/eh_alloc.cc Tue Apr 1 17:28:29 2014 *************** __cxxabiv1::__cxa_allocate_exception(std *** 126,137 **** std::terminate (); } - // We have an uncaught exception as soon as we allocate memory. This - // yields uncaught_exception() true during the copy-constructor that - // initializes the exception object. See Issue 475. - __cxa_eh_globals *globals = __cxa_get_globals (); - globals->uncaughtExceptions += 1; - memset (ret, 0, sizeof (__cxa_refcounted_exception)); return (void *)((char *)ret + sizeof (__cxa_refcounted_exception)); --- 126,131 ---- *************** __cxxabiv1::__cxa_allocate_dependent_exc *** 188,199 **** std::terminate (); } - // We have an uncaught exception as soon as we allocate memory. This - // yields uncaught_exception() true during the copy-constructor that - // initializes the exception object. See Issue 475. - __cxa_eh_globals *globals = __cxa_get_globals (); - globals->uncaughtExceptions += 1; - memset (ret, 0, sizeof (__cxa_dependent_exception)); return ret; --- 182,187 ---- diff -Nrcpad gcc-4.7.3/libstdc++-v3/libsupc++/eh_throw.cc gcc-4.7.4/libstdc++-v3/libsupc++/eh_throw.cc *** gcc-4.7.3/libstdc++-v3/libsupc++/eh_throw.cc Fri Feb 10 18:20:43 2012 --- gcc-4.7.4/libstdc++-v3/libsupc++/eh_throw.cc Tue Apr 1 17:28:29 2014 *************** extern "C" void *** 61,66 **** --- 61,69 ---- __cxxabiv1::__cxa_throw (void *obj, std::type_info *tinfo, void (_GLIBCXX_CDTOR_CALLABI *dest) (void *)) { + __cxa_eh_globals *globals = __cxa_get_globals (); + globals->uncaughtExceptions += 1; + // Definitely a primary. __cxa_refcounted_exception *header = __get_refcounted_exception_header_from_obj (obj); diff -Nrcpad gcc-4.7.3/libstdc++-v3/scripts/run_doxygen gcc-4.7.4/libstdc++-v3/scripts/run_doxygen *** gcc-4.7.3/libstdc++-v3/scripts/run_doxygen Sat Dec 10 15:33:06 2011 --- gcc-4.7.4/libstdc++-v3/scripts/run_doxygen Thu May 29 14:54:42 2014 *************** fi *** 194,201 **** if $do_latex; then cd ${outdir}/${mode} ! # Also drop in the header file and style sheet ! doxygen -w latex header.tex doxygen.sty echo :: echo :: LaTeX pages begin with --- 194,208 ---- if $do_latex; then cd ${outdir}/${mode} ! # Grrr, Doxygen 1.8.x changed the -w latex options. ! need_footer=`doxygen -h | sed -n -e '/-w latex/s=.*footer.*=true=p'` ! ! # Also drop in the header file (maybe footer file) and style sheet ! if $need_footer; then ! doxygen -w latex header.tex footer.tex doxygen.sty ! else ! doxygen -w latex header.tex doxygen.sty ! fi echo :: echo :: LaTeX pages begin with diff -Nrcpad gcc-4.7.3/libstdc++-v3/src/c++11/future.cc gcc-4.7.4/libstdc++-v3/src/c++11/future.cc *** gcc-4.7.3/libstdc++-v3/src/c++11/future.cc Sun Aug 26 14:09:12 2012 --- gcc-4.7.4/libstdc++-v3/src/c++11/future.cc Tue May 14 23:05:40 2013 *************** namespace *** 60,66 **** const future_error_category& __future_category_instance() noexcept { ! static const future_error_category __fec; return __fec; } } --- 60,66 ---- const future_error_category& __future_category_instance() noexcept { ! static const future_error_category __fec{}; return __fec; } } diff -Nrcpad gcc-4.7.3/libstdc++-v3/src/c++11/system_error.cc gcc-4.7.4/libstdc++-v3/src/c++11/system_error.cc *** gcc-4.7.3/libstdc++-v3/src/c++11/system_error.cc Mon Jan 23 23:12:01 2012 --- gcc-4.7.4/libstdc++-v3/src/c++11/system_error.cc Tue May 14 23:05:40 2013 *************** namespace *** 62,69 **** } }; ! const generic_error_category generic_category_instance; ! const system_error_category system_category_instance; } namespace std _GLIBCXX_VISIBILITY(default) --- 62,69 ---- } }; ! const generic_error_category generic_category_instance{}; ! const system_error_category system_category_instance{}; } namespace std _GLIBCXX_VISIBILITY(default) diff -Nrcpad gcc-4.7.3/libstdc++-v3/src/c++98/compatibility.cc gcc-4.7.4/libstdc++-v3/src/c++98/compatibility.cc *** gcc-4.7.3/libstdc++-v3/src/c++98/compatibility.cc Mon Nov 5 23:42:32 2012 --- gcc-4.7.4/libstdc++-v3/src/c++98/compatibility.cc Sat Aug 17 10:23:41 2013 *************** extern __attribute__((used, weak)) const *** 518,531 **** extern __attribute__((used, weak)) const char _ZTSPe[3] = "Pe"; extern __attribute__((used, weak)) const char _ZTSPKe[4] = "PKe"; extern __attribute__((used, weak)) const void * const _ZTIe[2] ! = { (void *) &_ZTVN10__cxxabiv123__fundamental_type_infoE[2], ! (void *) _ZTSe }; extern __attribute__((used, weak)) const void * const _ZTIPe[4] ! = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2], ! (void *) _ZTSPe, (void *) 0L, (void *) _ZTIe }; extern __attribute__((used, weak)) const void * const _ZTIPKe[4] ! = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2], ! (void *) _ZTSPKe, (void *) 1L, (void *) _ZTIe }; #endif // _GLIBCXX_LONG_DOUBLE_COMPAT #ifdef _GLIBCXX_SYMVER_DARWIN --- 518,538 ---- extern __attribute__((used, weak)) const char _ZTSPe[3] = "Pe"; extern __attribute__((used, weak)) const char _ZTSPKe[4] = "PKe"; extern __attribute__((used, weak)) const void * const _ZTIe[2] ! = { reinterpret_cast ! (&_ZTVN10__cxxabiv123__fundamental_type_infoE[2]), ! reinterpret_cast(_ZTSe) }; extern __attribute__((used, weak)) const void * const _ZTIPe[4] ! = { reinterpret_cast ! (&_ZTVN10__cxxabiv119__pointer_type_infoE[2]), ! reinterpret_cast(_ZTSPe), ! reinterpret_cast(0L), ! reinterpret_cast(_ZTIe) }; extern __attribute__((used, weak)) const void * const _ZTIPKe[4] ! = { reinterpret_cast ! (&_ZTVN10__cxxabiv119__pointer_type_infoE[2]), ! reinterpret_cast(_ZTSPKe), ! reinterpret_cast(1L), ! reinterpret_cast(_ZTIe) }; #endif // _GLIBCXX_LONG_DOUBLE_COMPAT #ifdef _GLIBCXX_SYMVER_DARWIN diff -Nrcpad gcc-4.7.3/libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc gcc-4.7.4/libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc *** gcc-4.7.3/libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc Sun Oct 20 09:08:26 2013 *************** *** 0 **** --- 1,52 ---- + // Copyright (C) 2013 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + // 25.3.2 [lib.alg.nth.element] + + // { dg-options "-std=gnu++11" } + + #include + #include + #include + + using __gnu_test::test_container; + using __gnu_test::random_access_iterator_wrapper; + + typedef test_container Container; + + void test01() + { + std::vector v = { + 207089, + 202585, + 180067, + 157549, + 211592, + 216096, + 207089 + }; + + Container con(v.data(), v.data() + 7); + + std::nth_element(con.begin(), con.begin() + 3, con.end()); + } + + int main() + { + test01(); + return 0; + } diff -Nrcpad gcc-4.7.3/libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc gcc-4.7.4/libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc *** gcc-4.7.3/libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc Tue Sep 3 10:19:16 2013 *************** *** 0 **** --- 1,34 ---- + // { dg-do compile } + // { dg-options "-std=gnu++11" } + // { dg-require-cstdint "" } + // + // Copyright (C) 2013 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + // + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + #include + + void test01() + { + typedef std::negative_binomial_distribution<> dist_type; + + std::default_random_engine engine; + + dist_type dist; + dist_type::param_type param(3, 0.5); + + dist(engine, param); // compile error! + } diff -Nrcpad gcc-4.7.3/libstdc++-v3/testsuite/29_atomics/atomic/60658.cc gcc-4.7.4/libstdc++-v3/testsuite/29_atomics/atomic/60658.cc *** gcc-4.7.3/libstdc++-v3/testsuite/29_atomics/atomic/60658.cc Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/libstdc++-v3/testsuite/29_atomics/atomic/60658.cc Tue Mar 25 20:40:17 2014 *************** *** 0 **** --- 1,43 ---- + // { dg-require-atomic-builtins "" } + // { dg-options "-std=gnu++11" } + + // Copyright (C) 2014 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + #include + #include + + // libstdc++/60658 + + struct Foo { + char buf[1]; + }; + + struct Bar { + char buf[100]; + }; + + int + main () + { + bool test __attribute__((unused)) = true; + + std::atomic a; + std::atomic b; + + VERIFY (a.is_lock_free() == b.is_lock_free()); + } diff -Nrcpad gcc-4.7.3/libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc gcc-4.7.4/libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc *** gcc-4.7.3/libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc Mon Aug 13 19:57:31 2012 --- gcc-4.7.4/libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc Sat Apr 5 12:29:27 2014 *************** *** 1,11 **** ! // { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* powerpc-ibm-aix* } } ! // { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* powerpc-ibm-aix* } } // { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } } // { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } } // { dg-require-cstdint "" } // { dg-require-gthreads "" } ! // Copyright (C) 2012 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the --- 1,11 ---- ! // { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-gnu* *-*-solaris* *-*-cygwin *-*-darwin1[1-9]* powerpc-ibm-aix* } } ! // { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-gnu* powerpc-ibm-aix* } } // { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } } // { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } } // { dg-require-cstdint "" } // { dg-require-gthreads "" } ! // Copyright (C) 2012-2014 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the diff -Nrcpad gcc-4.7.3/libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc gcc-4.7.4/libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc *** gcc-4.7.3/libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc Sat Dec 1 19:20:39 2012 --- gcc-4.7.4/libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc Mon Apr 15 14:55:01 2013 *************** *** 1,5 **** // { dg-do compile } ! // { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* powerpc-ibm-aix* hppa*-hp-hpux11* } } // { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } } // { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } } // { dg-require-cstdint "" } --- 1,5 ---- // { dg-do compile } ! // { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* alpha*-*-osf* mips-sgi-irix6* powerpc-ibm-aix* hppa*-hp-hpux11* } } // { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } } // { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } } // { dg-require-cstdint "" } diff -Nrcpad gcc-4.7.3/libstdc++-v3/testsuite/performance/25_algorithms/sort.cc gcc-4.7.4/libstdc++-v3/testsuite/performance/25_algorithms/sort.cc *** gcc-4.7.3/libstdc++-v3/testsuite/performance/25_algorithms/sort.cc Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/libstdc++-v3/testsuite/performance/25_algorithms/sort.cc Mon Sep 30 17:43:05 2013 *************** *** 0 **** --- 1,65 ---- + // Copyright (C) 2013 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + #include + #include + #include + + int main() + { + using namespace __gnu_test; + + time_counter time; + resource_counter resource; + + const int max_size = 10000000; + + std::vector v(max_size); + + for (int i = 0; i < max_size; ++i) + v[i] = -i; + + start_counters(time, resource); + std::sort(v.begin(), v.end()); + stop_counters(time, resource); + + report_performance(__FILE__, "reverse", time, resource); + clear_counters(time, resource); + + for (int i = 0; i < max_size; ++i) + v[i] = i; + + start_counters(time, resource); + std::sort(v.begin(), v.end()); + stop_counters(time, resource); + + report_performance(__FILE__, "forwards", time, resource); + clear_counters(time, resource); + + // a simple psuedo-random series which does not rely on rand() and friends + v[0] = 0; + for (int i = 1; i < max_size; ++i) + v[i] = (v[i-1] + 110211473) * 745988807; + + start_counters(time, resource); + std::sort(v.begin(), v.end()); + stop_counters(time, resource); + + report_performance(__FILE__, "random", time, resource); + + return 0; + } diff -Nrcpad gcc-4.7.3/libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc gcc-4.7.4/libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc *** gcc-4.7.3/libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc Mon Sep 30 17:43:05 2013 *************** *** 0 **** --- 1,73 ---- + // Copyright (C) 2013 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + #include + #include + #include + + int main() + { + using namespace __gnu_test; + + time_counter time; + resource_counter resource; + + const int max_size = 10000000; + + std::vector v(max_size); + + for (int i = 0; i < max_size; ++i) + v[i] = -i; + + start_counters(time, resource); + std::make_heap(v.begin(), v.end()); + stop_counters(time, resource); + + report_performance(__FILE__, "make_heap_reverse", time, resource); + clear_counters(time, resource); + + for (int i = 0; i < max_size; ++i) + v[i] = i; + + start_counters(time, resource); + std::make_heap(v.begin(), v.end()); + stop_counters(time, resource); + + report_performance(__FILE__, "make_heap_forwards", time, resource); + clear_counters(time, resource); + + // a simple psuedo-random series which does not rely on rand() and friends + v[0] = 0; + for (int i = 1; i < max_size; ++i) + v[i] = (v[i-1] + 110211473) * 745988807; + + start_counters(time, resource); + std::make_heap(v.begin(), v.end()); + stop_counters(time, resource); + + report_performance(__FILE__, "make_heap_random", time, resource); + + + start_counters(time, resource); + std::sort_heap(v.begin(), v.end()); + stop_counters(time, resource); + + report_performance(__FILE__, "sort_heap", time, resource); + clear_counters(time, resource); + + return 0; + } diff -Nrcpad gcc-4.7.3/libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc gcc-4.7.4/libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc *** gcc-4.7.3/libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc Thu Jan 1 00:00:00 1970 --- gcc-4.7.4/libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc Mon Sep 30 17:43:05 2013 *************** *** 0 **** --- 1,65 ---- + // Copyright (C) 2013 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + #include + #include + #include + + int main() + { + using namespace __gnu_test; + + time_counter time; + resource_counter resource; + + const int max_size = 10000000; + + std::vector v(max_size); + + for (int i = 0; i < max_size; ++i) + v[i] = -i; + + start_counters(time, resource); + std::stable_sort(v.begin(), v.end()); + stop_counters(time, resource); + + report_performance(__FILE__, "reverse", time, resource); + clear_counters(time, resource); + + for (int i = 0; i < max_size; ++i) + v[i] = i; + + start_counters(time, resource); + std::stable_sort(v.begin(), v.end()); + stop_counters(time, resource); + + report_performance(__FILE__, "forwards", time, resource); + clear_counters(time, resource); + + // a simple psuedo-random series which does not rely on rand() and friends + v[0] = 0; + for (int i = 1; i < max_size; ++i) + v[i] = (v[i-1] + 110211473) * 745988807; + + start_counters(time, resource); + std::stable_sort(v.begin(), v.end()); + stop_counters(time, resource); + + report_performance(__FILE__, "random", time, resource); + + return 0; + } diff -Nrcpad gcc-4.7.3/lto-plugin/ChangeLog gcc-4.7.4/lto-plugin/ChangeLog *** gcc-4.7.3/lto-plugin/ChangeLog Thu Apr 11 07:55:59 2013 --- gcc-4.7.4/lto-plugin/ChangeLog Thu Jun 12 12:06:47 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/maintainer-scripts/ChangeLog gcc-4.7.4/maintainer-scripts/ChangeLog *** gcc-4.7.3/maintainer-scripts/ChangeLog Thu Apr 11 07:55:05 2013 --- gcc-4.7.4/maintainer-scripts/ChangeLog Thu Jun 12 12:05:37 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released. diff -Nrcpad gcc-4.7.3/zlib/ChangeLog gcc-4.7.4/zlib/ChangeLog *** gcc-4.7.3/zlib/ChangeLog Thu Apr 11 07:56:03 2013 --- gcc-4.7.4/zlib/ChangeLog Thu Jun 12 12:06:52 2014 *************** *** 1,3 **** --- 1,7 ---- + 2014-06-12 Release Manager + + * GCC 4.7.4 released. + 2013-04-11 Release Manager * GCC 4.7.3 released.