diff -Nrcpad gcc-7.4.0/ChangeLog gcc-7.5.0/ChangeLog *** gcc-7.4.0/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/LAST_UPDATED gcc-7.5.0/LAST_UPDATED *** gcc-7.4.0/LAST_UPDATED Thu Dec 6 09:58:52 2018 --- gcc-7.5.0/LAST_UPDATED Thu Nov 14 07:35:26 2019 *************** *** 1 **** ! Obtained from SVN: tags/gcc_7_4_0_release revision 266845 --- 1 ---- ! Obtained from SVN: tags/gcc_7_5_0_release revision 278198 diff -Nrcpad gcc-7.4.0/MD5SUMS gcc-7.5.0/MD5SUMS *** gcc-7.4.0/MD5SUMS Thu Dec 6 10:29:18 2018 --- gcc-7.5.0/MD5SUMS Thu Nov 14 08:05:45 2019 *************** *** 1,5 **** # This file contains the MD5 checksums of the files in the ! # gcc-7.4.0.tar.xz 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-7.5.0.tar.xz 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 *************** e399c6eed967a5699498feb798da61ee .gitat *** 17,23 **** fe60d87048567d4fe8c8a0ed2448bcc8 COPYING.RUNTIME d32239bcb673463ab874e80d47fae504 COPYING3 6a6a8e020838b23406c81b19c1d46df6 COPYING3.LIB ! a540de7eadb239c3d21732cb8ba5fa36 ChangeLog fd4ecdf5d672efe2b0e409aca9cf9446 ChangeLog.jit 09538b708302f1735f6fa05b622ecf5e ChangeLog.tree-ssa 24ab760126489e69436a43185dc3d202 INSTALL/README --- 17,23 ---- fe60d87048567d4fe8c8a0ed2448bcc8 COPYING.RUNTIME d32239bcb673463ab874e80d47fae504 COPYING3 6a6a8e020838b23406c81b19c1d46df6 COPYING3.LIB ! 35405b60d374b1150ae2f0779a9cb719 ChangeLog fd4ecdf5d672efe2b0e409aca9cf9446 ChangeLog.jit 09538b708302f1735f6fa05b622ecf5e ChangeLog.tree-ssa 24ab760126489e69436a43185dc3d202 INSTALL/README *************** c006991610497e0d1e2eb3ddbae3abc0 INSTAL *** 32,50 **** af9fd8189c1230a90586b250985c4b4b INSTALL/prerequisites.html ff15921cf6f71394f0914436e66ce60e INSTALL/specific.html 46d726564091e71e397f3cb6cf879bac INSTALL/test.html ! 10bc0bb7b3d1fa0d8795967100e1511e LAST_UPDATED b7046438c5076ff5c22da3f713c55819 MAINTAINERS cf9f2757ce84b3623a2c25cd96e2630f Makefile.def 38d4e84f45aef7dc5e4cce9befc6252d Makefile.in 2233eb495f622e1cbca6f0e111f96048 Makefile.tpl ! 42dd5797be3c496ba7c40c52af9611c4 NEWS 80d26bc3b1ad4f6969a96a24c9181bf5 README 500b9244caa7a7ab23ece1db37efa76d compile cb74b6c8a93f1e46388212f44c60afed config-ml.in 07fc7c2000154cc8d5bd1211bad7a65b config.guess 040359150cf11493f973a46d8a25b06b config.rpath 3e5a5bd82d324a14f895209750e785b8 config.sub ! 253265a782dde7eed42ef4acd7c7eea0 config/ChangeLog 0fcd4badfe2a2191778bdf5ab94aa40c config/acinclude.m4 2ea0edfde0ce5ce69b49317a5650f048 config/acx.m4 6b030f5cf640bdd401ea739f54a667f8 config/asmcfi.m4 --- 32,50 ---- af9fd8189c1230a90586b250985c4b4b INSTALL/prerequisites.html ff15921cf6f71394f0914436e66ce60e INSTALL/specific.html 46d726564091e71e397f3cb6cf879bac INSTALL/test.html ! e28c149a0001969594c5f66a7543de5f LAST_UPDATED b7046438c5076ff5c22da3f713c55819 MAINTAINERS cf9f2757ce84b3623a2c25cd96e2630f Makefile.def 38d4e84f45aef7dc5e4cce9befc6252d Makefile.in 2233eb495f622e1cbca6f0e111f96048 Makefile.tpl ! f46adf9fa95ae6f83b14baeffa72eda8 NEWS 80d26bc3b1ad4f6969a96a24c9181bf5 README 500b9244caa7a7ab23ece1db37efa76d compile cb74b6c8a93f1e46388212f44c60afed config-ml.in 07fc7c2000154cc8d5bd1211bad7a65b config.guess 040359150cf11493f973a46d8a25b06b config.rpath 3e5a5bd82d324a14f895209750e785b8 config.sub ! 5e32021026fa18c587904a65c45c69f9 config/ChangeLog 0fcd4badfe2a2191778bdf5ab94aa40c config/acinclude.m4 2ea0edfde0ce5ce69b49317a5650f048 config/acx.m4 6b030f5cf640bdd401ea739f54a667f8 config/asmcfi.m4 *************** e2dc6b4fd62b77bff96b7951ef74f78f config *** 136,142 **** 0163b672c888aaf1c8ad3e867a0ec9f1 config/zlib.m4 728d4754bbbb8d58ed827b3bd2cef682 configure 278ffc6b756f6d7bbb6520b724a3a37d configure.ac ! 791261548b91feb90e49a492524e575b contrib/ChangeLog 5fc435c7928f858246df931ea3f3ece7 contrib/ChangeLog.jit 7af8d2979bf1a7cfa88e30d05fa22be2 contrib/ChangeLog.tree-ssa 41c532dfc353377dce9eb2fbaa3179fd contrib/analyze_brprob.py --- 136,142 ---- 0163b672c888aaf1c8ad3e867a0ec9f1 config/zlib.m4 728d4754bbbb8d58ed827b3bd2cef682 configure 278ffc6b756f6d7bbb6520b724a3a37d configure.ac ! 1fabda912ea880fe8860dcbc66bd391d contrib/ChangeLog 5fc435c7928f858246df931ea3f3ece7 contrib/ChangeLog.jit 7af8d2979bf1a7cfa88e30d05fa22be2 contrib/ChangeLog.tree-ssa 41c532dfc353377dce9eb2fbaa3179fd contrib/analyze_brprob.py *************** db03e57377f9eb202b7b783eb81fe40d contri *** 166,172 **** 8d5fd6a30a05940f4fb9383e2ea15a97 contrib/gennews 2d35f147fc45f270eb169156cf7550e0 contrib/gimple.vim 59304fc08afa489baa6b920cc76dc625 contrib/gthr_supp_vxw_5x.c ! 901f6b00cd1375bbbe1e0b342ff57d1d contrib/header-tools/ChangeLog 1ba821a1e480c2f8ac33b68ca1097770 contrib/header-tools/README 05ef7fb87e90ba93ee04659be072a357 contrib/header-tools/count-headers ba0485a3c721bce9e32407ef996d2a9d contrib/header-tools/gcc-order-headers --- 166,172 ---- 8d5fd6a30a05940f4fb9383e2ea15a97 contrib/gennews 2d35f147fc45f270eb169156cf7550e0 contrib/gimple.vim 59304fc08afa489baa6b920cc76dc625 contrib/gthr_supp_vxw_5x.c ! bb820933f3b565ed8f067fca4809aa71 contrib/header-tools/ChangeLog 1ba821a1e480c2f8ac33b68ca1097770 contrib/header-tools/README 05ef7fb87e90ba93ee04659be072a357 contrib/header-tools/count-headers ba0485a3c721bce9e32407ef996d2a9d contrib/header-tools/gcc-order-headers *************** a34668cfad9dec733354503fbc67fb24 contri *** 188,194 **** 87a19b40fbd220938cf6c23c42c255e2 contrib/prepare_patch.sh 959cb8ef692d41f5b4e0bb200810e0c6 contrib/prerequisites.md5 422c59c5fe9228a3dec0f7c819d63fc1 contrib/prerequisites.sha512 ! f91cd26398ed949c546b4a753b8c292f contrib/reghunt/ChangeLog cf247a580e49d212518de409793db0a8 contrib/reghunt/bin/gcc-build-full 724e70ea3e80f87f2a201bbe2f1eef37 contrib/reghunt/bin/gcc-build-simple 3f2318bae7562a4ad1639e686916a545 contrib/reghunt/bin/gcc-cleanup --- 188,194 ---- 87a19b40fbd220938cf6c23c42c255e2 contrib/prepare_patch.sh 959cb8ef692d41f5b4e0bb200810e0c6 contrib/prerequisites.md5 422c59c5fe9228a3dec0f7c819d63fc1 contrib/prerequisites.sha512 ! e4efbcf34d9a4f598ee83a6d0f9fb49e 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 *** 247,253 **** e2829fc4af4f433a6a328a62d5ce8066 contrib/reghunt/examples/reg-watch afd863c2ec84c906e20f9b9787b1f0fe contrib/reghunt/examples/reg-watch.awk 8955535523d4b5f48006bcb851ba9b4b contrib/reghunt/examples/testall ! 4a3f4c19ed6e543d2524ab242b4ca7d0 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 --- 247,253 ---- e2829fc4af4f433a6a328a62d5ce8066 contrib/reghunt/examples/reg-watch afd863c2ec84c906e20f9b9787b1f0fe contrib/reghunt/examples/reg-watch.awk 8955535523d4b5f48006bcb851ba9b4b contrib/reghunt/examples/testall ! ab220c432a489636dae351ebcdaf022a 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 *************** dc562ddb86567c65e82953825713dc4b contri *** 263,269 **** 7f6418948396f8250447e3e6182322d8 contrib/repro_fail 39442479834f1c02d6ce11eab6889b6e contrib/test_installed 2c2a06a23394c548bb4afba3c25aacce contrib/test_recheck ! c619e84bad79c6103190d13e243e923e contrib/test_summary 45bd745cf293127fa6b729c7b58cf11f contrib/testsuite-management/validate_failures.py 0202e4875fa43ec09cf5e8442c873a56 contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail 2c5264fb1400a0a2408fd44a4e345fc6 contrib/texi2pod.pl --- 263,269 ---- 7f6418948396f8250447e3e6182322d8 contrib/repro_fail 39442479834f1c02d6ce11eab6889b6e contrib/test_installed 2c2a06a23394c548bb4afba3c25aacce contrib/test_recheck ! bda1a942935ac26d7854354f9ce9c0c8 contrib/test_summary 45bd745cf293127fa6b729c7b58cf11f contrib/testsuite-management/validate_failures.py 0202e4875fa43ec09cf5e8442c873a56 contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail 2c5264fb1400a0a2408fd44a4e345fc6 contrib/texi2pod.pl *************** db934a41ee73c66dbdde7290d85e547d contri *** 272,278 **** 45d4839f2ac702761b88d502311d47ef contrib/vimrc 52ed3669ef691d1606b2d8849f05cc6e contrib/warn_summary 8b59f0d0a2dcdced14765c514fbad719 depcomp ! 794be9d0cee39dd3bd68ec46d5f7fe3a fixincludes/ChangeLog 6de190723745dc3f75080144dfa2215e fixincludes/Makefile.in b6e3f4950abc6e254b467063381f6473 fixincludes/README 455903ad4ff71fa5c5340ef7ae41a0e6 fixincludes/README-fixinc --- 272,278 ---- 45d4839f2ac702761b88d502311d47ef contrib/vimrc 52ed3669ef691d1606b2d8849f05cc6e contrib/warn_summary 8b59f0d0a2dcdced14765c514fbad719 depcomp ! 9e71e3bd9131691a6b143d692ea87d75 fixincludes/ChangeLog 6de190723745dc3f75080144dfa2215e fixincludes/Makefile.in b6e3f4950abc6e254b467063381f6473 fixincludes/README 455903ad4ff71fa5c5340ef7ae41a0e6 fixincludes/README-fixinc *************** a047119816700b0c31847ca6f4f52aab fixinc *** 285,297 **** 7aba8b93c5233bc3247ff32e0e7cfe03 fixincludes/fixinc.in 1582ffd94ecc91318eebfb3b81e0bcb1 fixincludes/fixincl.c adf245e3714f799eafba40af16be8eb5 fixincludes/fixincl.tpl ! c5143fb72444bda3dfd3d044d2465eac fixincludes/fixincl.x 545875b4fe1c26bc3e1befc75b34e9f5 fixincludes/fixlib.c 620c770139fc32c75b975b614d3156e8 fixincludes/fixlib.h 5b2c1fd3ef9d44fb6beb1a0d45ddd533 fixincludes/fixopts.c ed1415e9dbc8f421fd9288bde0d90ad1 fixincludes/fixtests.c 6df145c7cea1e2099cf97a0d83564aca fixincludes/genfixes ! e9bd4e9ed0967747e932abfab34c8f48 fixincludes/inclhack.def 44bfe955e0fad29af749b16cd12fa743 fixincludes/mkfixinc.sh 5f9960cfe65b2e6bef658f770e52dfef fixincludes/mkheaders.in 3aa0563cd682ee61ecd9eb6eea0b0bce fixincludes/procopen.c --- 285,297 ---- 7aba8b93c5233bc3247ff32e0e7cfe03 fixincludes/fixinc.in 1582ffd94ecc91318eebfb3b81e0bcb1 fixincludes/fixincl.c adf245e3714f799eafba40af16be8eb5 fixincludes/fixincl.tpl ! 404ea5de2a11e772e23db570f97578bf fixincludes/fixincl.x 545875b4fe1c26bc3e1befc75b34e9f5 fixincludes/fixlib.c 620c770139fc32c75b975b614d3156e8 fixincludes/fixlib.h 5b2c1fd3ef9d44fb6beb1a0d45ddd533 fixincludes/fixopts.c ed1415e9dbc8f421fd9288bde0d90ad1 fixincludes/fixtests.c 6df145c7cea1e2099cf97a0d83564aca fixincludes/genfixes ! 06cc39c30bc68a76015b0cf6c6133373 fixincludes/inclhack.def 44bfe955e0fad29af749b16cd12fa743 fixincludes/mkfixinc.sh 5f9960cfe65b2e6bef658f770e52dfef fixincludes/mkheaders.in 3aa0563cd682ee61ecd9eb6eea0b0bce fixincludes/procopen.c *************** ce39eed82f08475e7b77ba8f3cbd9e41 fixinc *** 308,314 **** 1345522e326f071aeb69b1c490fc8fc2 fixincludes/tests/base/ansi/math.h fb543bca7c73da85f944600810ef2171 fixincludes/tests/base/ansi/stdlib.h d6a40f191014042c3a1bf44086be6773 fixincludes/tests/base/arch/i960/archI960.h ! 7dc3902a9952707702003021370a1cc7 fixincludes/tests/base/architecture/ppc/math.h 0344107d793447f3bd08f341f61633af fixincludes/tests/base/assert.h 0d12f925a64c4fbfb164737569788298 fixincludes/tests/base/bits/fenv.h 06f1aca4509b42c45b0fcbe0042b88a8 fixincludes/tests/base/bits/huge_val.h --- 308,314 ---- 1345522e326f071aeb69b1c490fc8fc2 fixincludes/tests/base/ansi/math.h fb543bca7c73da85f944600810ef2171 fixincludes/tests/base/ansi/stdlib.h d6a40f191014042c3a1bf44086be6773 fixincludes/tests/base/arch/i960/archI960.h ! 08a0e30001bbbf762503a3ac7b0f1ea1 fixincludes/tests/base/architecture/ppc/math.h 0344107d793447f3bd08f341f61633af fixincludes/tests/base/assert.h 0d12f925a64c4fbfb164737569788298 fixincludes/tests/base/bits/fenv.h 06f1aca4509b42c45b0fcbe0042b88a8 fixincludes/tests/base/bits/huge_val.h *************** f067e3903c09c98db57bd84f7eaf8df5 fixinc *** 320,325 **** --- 320,326 ---- 69f7247dd4e4cf4af4aff6d92ae29999 fixincludes/tests/base/ctrl-quotes-def-1.h f1160d24e4253643c441ba3a4b227e43 fixincludes/tests/base/ctype.h 7664d896c62ce0ef7874adff4ba21c96 fixincludes/tests/base/curses.h + 339892e95a87af44aed61c0cd1f7beb9 fixincludes/tests/base/dispatch/object.h 1c654a39cf9704389beaac48967e4217 fixincludes/tests/base/errno.h 099987dd3e705438dc51edcc5a202f45 fixincludes/tests/base/fcntl.h 31a666eaf86d15fa19e6d1834f15ec38 fixincludes/tests/base/features.h *************** a911f5fbb127353024e77149fcf90596 fixinc *** 347,352 **** --- 348,355 ---- f690db296a82aeefa0bfe9ad74a2b71c fixincludes/tests/base/netinet/in.h 2649ccca3396541aeb5e612d4b4a3141 fixincludes/tests/base/netinet/ip.h f4a72388e98f34c098a3467dce9aa4e1 fixincludes/tests/base/obstack.h + c213736f179d8de08a09a9278e048d91 fixincludes/tests/base/os/availability.h + c3da2b1720112f2adb1c2bbf65563364 fixincludes/tests/base/os/base.h 294cd5d0b36b2fc66737cc43cd46ed69 fixincludes/tests/base/os/trace.h c24d1be3b5afd871e9f78e1a67b9cb82 fixincludes/tests/base/pixrect/memvar.h 1501a200fb392ae040545c7591f79498 fixincludes/tests/base/pthread.h *************** a5e817d35ded04a0fb03999b50c0e89e fixinc *** 409,420 **** 955462b555900ecd3934223c64e21fa7 fixincludes/tests/base/types/vxTypesBase.h c78e762f2c91f2af991feda7d3d7f4b2 fixincludes/tests/base/unistd.h fe8b9c2159f95655fcb76d514f36eaf1 gcc/ABOUT-GCC-NLS ! 535f32c053fc1b4bc9f288da470157b8 gcc/BASE-VER 59530bdf33659b29e73d4adb9f9f6552 gcc/COPYING a916467b91076e631dd8edb7424769c7 gcc/COPYING.LIB d32239bcb673463ab874e80d47fae504 gcc/COPYING3 6a6a8e020838b23406c81b19c1d46df6 gcc/COPYING3.LIB ! 61132dfedd2f94df367418261d794a0c gcc/ChangeLog a3b63c675afa7a655cc2bfa8a907af79 gcc/ChangeLog-1997 d9a88529352a010253c2e8fb1ed6023b gcc/ChangeLog-1998 240f08f81cb4699e8b49347db38233db gcc/ChangeLog-1999 --- 412,423 ---- 955462b555900ecd3934223c64e21fa7 fixincludes/tests/base/types/vxTypesBase.h c78e762f2c91f2af991feda7d3d7f4b2 fixincludes/tests/base/unistd.h fe8b9c2159f95655fcb76d514f36eaf1 gcc/ABOUT-GCC-NLS ! 6d47b483e8e0abe204ed3ead9cde3551 gcc/BASE-VER 59530bdf33659b29e73d4adb9f9f6552 gcc/COPYING a916467b91076e631dd8edb7424769c7 gcc/COPYING.LIB d32239bcb673463ab874e80d47fae504 gcc/COPYING3 6a6a8e020838b23406c81b19c1d46df6 gcc/COPYING3.LIB ! 68216750fea704cdb7a535d8601cb489 gcc/ChangeLog a3b63c675afa7a655cc2bfa8a907af79 gcc/ChangeLog-1997 d9a88529352a010253c2e8fb1ed6023b gcc/ChangeLog-1998 240f08f81cb4699e8b49347db38233db gcc/ChangeLog-1999 *************** fb3fadb88e1d2b3b640cfaaa5ff11780 gcc/Ch *** 443,449 **** 3eb07e0b2e542409bf73d359f7f65609 gcc/ChangeLog.ptr e13638e26743ba41e6011b76cc00d9a9 gcc/ChangeLog.tree-ssa 739ab47f6425bcea1d05e4fc0542de54 gcc/ChangeLog.tuples ! fcc7817295a29e207aadd04f920e31ce gcc/DATESTAMP d41d8cd98f00b204e9800998ecf8427e gcc/DEV-PHASE eb92e1ff5e982ca07e173e0eb286d243 gcc/FSFChangeLog 30e1e33411566388b3164558482dc5e6 gcc/FSFChangeLog.10 --- 446,452 ---- 3eb07e0b2e542409bf73d359f7f65609 gcc/ChangeLog.ptr e13638e26743ba41e6011b76cc00d9a9 gcc/ChangeLog.tree-ssa 739ab47f6425bcea1d05e4fc0542de54 gcc/ChangeLog.tuples ! b129e40956654501ad5e1da02627220c gcc/DATESTAMP d41d8cd98f00b204e9800998ecf8427e gcc/DEV-PHASE eb92e1ff5e982ca07e173e0eb286d243 gcc/FSFChangeLog 30e1e33411566388b3164558482dc5e6 gcc/FSFChangeLog.10 *************** e582560d0bf728d88aed7e8d4a281453 gcc/RE *** 455,461 **** 3aab1d8a09402a2cfff7275fdfb6a31e gcc/acinclude.m4 9545fe83576dc99e441c64e268711730 gcc/aclocal.m4 9063d23e571fcde20283b9f34d5e3422 gcc/ada/9drpc.adb ! 9485ffd3390c9f2b090bbcc5d76179f4 gcc/ada/ChangeLog 683be0b07dc4f64f118fd5e8ae9cb30d gcc/ada/ChangeLog-2001 7aff25efb203be4136b8776cdc812956 gcc/ada/ChangeLog-2002 cd2379152000f40157d349018fb9364d gcc/ada/ChangeLog-2003 --- 458,464 ---- 3aab1d8a09402a2cfff7275fdfb6a31e gcc/acinclude.m4 9545fe83576dc99e441c64e268711730 gcc/aclocal.m4 9063d23e571fcde20283b9f34d5e3422 gcc/ada/9drpc.adb ! ce62c448a52186935fb1f0e1f6973eba gcc/ada/ChangeLog 683be0b07dc4f64f118fd5e8ae9cb30d gcc/ada/ChangeLog-2001 7aff25efb203be4136b8776cdc812956 gcc/ada/ChangeLog-2002 cd2379152000f40157d349018fb9364d gcc/ada/ChangeLog-2003 *************** e187997138ad030fe8b97464559009fd gcc/ad *** 1056,1062 **** dc7fa6c2738b8e726e9cb4c8fd75f505 gcc/ada/adabkend.ads cfdc319ef3cac7d05d6e055b6d57b965 gcc/ada/adadecode.c f24eddc6e6b6955059731ac35c3ecc39 gcc/ada/adadecode.h ! c572e573bb19c8a99dc70b7ec7e30f18 gcc/ada/adaint.c 2ba7ea4535dc44da0d10df6dc8f45963 gcc/ada/adaint.h 013e861f617d7421fd534f705d9e0bcc gcc/ada/affinity.c 08ae3c97ba4d8154c279431725d7eb22 gcc/ada/ali-util.adb --- 1059,1065 ---- dc7fa6c2738b8e726e9cb4c8fd75f505 gcc/ada/adabkend.ads cfdc319ef3cac7d05d6e055b6d57b965 gcc/ada/adadecode.c f24eddc6e6b6955059731ac35c3ecc39 gcc/ada/adadecode.h ! 478b75978e2c1232c4b9870f4295103a gcc/ada/adaint.c 2ba7ea4535dc44da0d10df6dc8f45963 gcc/ada/adaint.h 013e861f617d7421fd534f705d9e0bcc gcc/ada/affinity.c 08ae3c97ba4d8154c279431725d7eb22 gcc/ada/ali-util.adb *************** d0515cdb4252eb70d972b70426c649ac gcc/ad *** 1192,1198 **** e5d12abbc5b0b1ed7f257c85b2414be3 gcc/ada/exp_ch4.ads 002da4e43860c01d6f39e49ca2efb0a4 gcc/ada/exp_ch5.adb 467bebd2c76c4fd5a500f3e53e9b6b4a gcc/ada/exp_ch5.ads ! de5c9eda2654f978cd49c9042a718857 gcc/ada/exp_ch6.adb 4b1071b03ddc151660c032228db0615c gcc/ada/exp_ch6.ads ce1c6a9c150476cc1e2171b4c937a3ae gcc/ada/exp_ch7.adb 59398e070dd9896a33e08a26df85b3de gcc/ada/exp_ch7.ads --- 1195,1201 ---- e5d12abbc5b0b1ed7f257c85b2414be3 gcc/ada/exp_ch4.ads 002da4e43860c01d6f39e49ca2efb0a4 gcc/ada/exp_ch5.adb 467bebd2c76c4fd5a500f3e53e9b6b4a gcc/ada/exp_ch5.ads ! a9578a65dfb3faad69bce2c386952276 gcc/ada/exp_ch6.adb 4b1071b03ddc151660c032228db0615c gcc/ada/exp_ch6.ads ce1c6a9c150476cc1e2171b4c937a3ae gcc/ada/exp_ch7.adb 59398e070dd9896a33e08a26df85b3de gcc/ada/exp_ch7.ads *************** d7eca93022b3adc8f4a61dbe910e95d2 gcc/ad *** 1466,1485 **** b45654446bc74bb68ae4adef78906e9b gcc/ada/g-zspche.ads c97edf7ce39a908dcaec55eb49d0abee gcc/ada/g-zstspl.ads 03f505d0c5a108b347698645d923a2bb gcc/ada/gcc-interface/Make-lang.in ! 37713abed9b24827fc5c3c88349b1e03 gcc/ada/gcc-interface/Makefile.in 055be3d11fa6ccb53ffe7f8970a005ce gcc/ada/gcc-interface/ada-tree.def 2d594695e9e82d9067cabf385b6ab32a gcc/ada/gcc-interface/ada-tree.h 51c95420b5900990141d2e5705582197 gcc/ada/gcc-interface/ada.h 4cbfd794461da0feb1b8661ec623b6c6 gcc/ada/gcc-interface/config-lang.in 9779c4debc13c6f1cfa1e4e6a6e6c638 gcc/ada/gcc-interface/cuintp.c ! 0c2160a96cc5519f26a62c2acf5daec7 gcc/ada/gcc-interface/decl.c c413d4d50e9563859f4d751a4404b705 gcc/ada/gcc-interface/gadaint.h 325e2eb81b1eac6225dcb381a4db7160 gcc/ada/gcc-interface/gigi.h f2528ece7aa7e2ed8123de8fe434252a gcc/ada/gcc-interface/lang-specs.h 1bba4d8f118cd8b82ada60fb44393339 gcc/ada/gcc-interface/lang.opt 9b194bf83bd32a42a54a2f873ae9b41e gcc/ada/gcc-interface/misc.c 7bd3630f35c5ac7b5c6cfaf8b16e5723 gcc/ada/gcc-interface/targtyps.c ! 73a1a1319d45fcc07793e6ff068cafe6 gcc/ada/gcc-interface/trans.c 072131c2f65294a4764eca4e7ea36080 gcc/ada/gcc-interface/utils.c d550c79030f34117a03a70132b6afe32 gcc/ada/gcc-interface/utils2.c 7441478a743eff5837846723eca81135 gcc/ada/get_scos.adb --- 1469,1488 ---- b45654446bc74bb68ae4adef78906e9b gcc/ada/g-zspche.ads c97edf7ce39a908dcaec55eb49d0abee gcc/ada/g-zstspl.ads 03f505d0c5a108b347698645d923a2bb gcc/ada/gcc-interface/Make-lang.in ! a7a8ea35b57de0aa6e222f3c24cfe55c gcc/ada/gcc-interface/Makefile.in 055be3d11fa6ccb53ffe7f8970a005ce gcc/ada/gcc-interface/ada-tree.def 2d594695e9e82d9067cabf385b6ab32a gcc/ada/gcc-interface/ada-tree.h 51c95420b5900990141d2e5705582197 gcc/ada/gcc-interface/ada.h 4cbfd794461da0feb1b8661ec623b6c6 gcc/ada/gcc-interface/config-lang.in 9779c4debc13c6f1cfa1e4e6a6e6c638 gcc/ada/gcc-interface/cuintp.c ! cb97374588e27435da6f5c0188726e87 gcc/ada/gcc-interface/decl.c c413d4d50e9563859f4d751a4404b705 gcc/ada/gcc-interface/gadaint.h 325e2eb81b1eac6225dcb381a4db7160 gcc/ada/gcc-interface/gigi.h f2528ece7aa7e2ed8123de8fe434252a gcc/ada/gcc-interface/lang-specs.h 1bba4d8f118cd8b82ada60fb44393339 gcc/ada/gcc-interface/lang.opt 9b194bf83bd32a42a54a2f873ae9b41e gcc/ada/gcc-interface/misc.c 7bd3630f35c5ac7b5c6cfaf8b16e5723 gcc/ada/gcc-interface/targtyps.c ! ada331f999ca6201b2d8589ef26c78b6 gcc/ada/gcc-interface/trans.c 072131c2f65294a4764eca4e7ea36080 gcc/ada/gcc-interface/utils.c d550c79030f34117a03a70132b6afe32 gcc/ada/gcc-interface/utils2.c 7441478a743eff5837846723eca81135 gcc/ada/get_scos.adb *************** be6a6eeb976a7f3190c6061c1cc2fc22 gcc/ad *** 1507,1513 **** 670cd3e724c6b64c7b322c6e75a0e7c4 gcc/ada/gnathtml.pl 667d7cc541b70b2b4632bc5d0ff6846c gcc/ada/gnatkr.adb 2428e9de656711a7c02be62a174ad769 gcc/ada/gnatkr.ads ! df5a85bb6f16b35569dcee8bff51edb3 gcc/ada/gnatlink.adb 21b97ef81d719d883e1fafb414a00dbe gcc/ada/gnatlink.ads 947b78aada64b34e6431dbc66c14d896 gcc/ada/gnatls.adb c823c85d34148eeef9296d1dee1ad846 gcc/ada/gnatls.ads --- 1510,1516 ---- 670cd3e724c6b64c7b322c6e75a0e7c4 gcc/ada/gnathtml.pl 667d7cc541b70b2b4632bc5d0ff6846c gcc/ada/gnatkr.adb 2428e9de656711a7c02be62a174ad769 gcc/ada/gnatkr.ads ! a0ca904e4b63a7b2fb0d4e1311510277 gcc/ada/gnatlink.adb 21b97ef81d719d883e1fafb414a00dbe gcc/ada/gnatlink.ads 947b78aada64b34e6431dbc66c14d896 gcc/ada/gnatls.adb c823c85d34148eeef9296d1dee1ad846 gcc/ada/gnatls.ads *************** cb7e225d6dd83d801079332a53919040 gcc/ad *** 1638,1645 **** 5fccc37a875a7cda3822c5408778ccef gcc/ada/osint-l.ads 72eadf47beb55b211d557f61f4f4c6f0 gcc/ada/osint-m.adb 764b020a10bbfa6b544f12e767719130 gcc/ada/osint-m.ads ! 577236834b9c567ed5bdd68877682106 gcc/ada/osint.adb ! 196d24696300077855b1f5b9061ebae3 gcc/ada/osint.ads 78dd2c9f47fbf63a2a1199e5704af844 gcc/ada/output.adb ad1c741fe7869e13ac4c619c22638f85 gcc/ada/output.ads 61d7df958e5bed246fefeb33eeb76cb7 gcc/ada/par-ch10.adb --- 1641,1648 ---- 5fccc37a875a7cda3822c5408778ccef gcc/ada/osint-l.ads 72eadf47beb55b211d557f61f4f4c6f0 gcc/ada/osint-m.adb 764b020a10bbfa6b544f12e767719130 gcc/ada/osint-m.ads ! 8c18d5530b7a267479d9a46866124638 gcc/ada/osint.adb ! 5a8af6afeaf6d607b7383cb153db56ac gcc/ada/osint.ads 78dd2c9f47fbf63a2a1199e5704af844 gcc/ada/output.adb ad1c741fe7869e13ac4c619c22638f85 gcc/ada/output.ads 61d7df958e5bed246fefeb33eeb76cb7 gcc/ada/par-ch10.adb *************** dac9f15c34e718440504f6a84e3b90fe gcc/ad *** 1916,1922 **** 36ed71acd5fef67cce98e342a56efe17 gcc/ada/s-linux-android.ads 75c59fbe8f8b14c3d4aad6210dbb0950 gcc/ada/s-linux-hppa.ads 6adfef17ec8f141f5ec054c8534db88f gcc/ada/s-linux-mips.ads ! cd8b1ba1c36bffad664702deac69f614 gcc/ada/s-linux-sparc.ads d6aa080ae00db52b752a7f3b55073bb5 gcc/ada/s-linux-x32.ads 3417549515728ff263f2a244d0fc942c gcc/ada/s-linux.ads 9b3fc2492706d5faf1b6da45c05be453 gcc/ada/s-llflex.ads --- 1919,1925 ---- 36ed71acd5fef67cce98e342a56efe17 gcc/ada/s-linux-android.ads 75c59fbe8f8b14c3d4aad6210dbb0950 gcc/ada/s-linux-hppa.ads 6adfef17ec8f141f5ec054c8534db88f gcc/ada/s-linux-mips.ads ! 40c1a8f85f7929121b7669bf818928be gcc/ada/s-linux-sparc.ads d6aa080ae00db52b752a7f3b55073bb5 gcc/ada/s-linux-x32.ads 3417549515728ff263f2a244d0fc942c gcc/ada/s-linux.ads 9b3fc2492706d5faf1b6da45c05be453 gcc/ada/s-llflex.ads *************** f49fb908b3e1b95e51b603504d1bfa24 gcc/ad *** 2416,2423 **** 88bf0e6b791759354e8ae81ef7507ff9 gcc/ada/sem_smem.ads ef47f0af7fa11e2fce10a7fb20c98511 gcc/ada/sem_type.adb 9176639d909025d92b4e8912af77b041 gcc/ada/sem_type.ads ! 36d2e90b172ff0febb7c32072363cea8 gcc/ada/sem_util.adb ! 0339d45576425b8235f546296887dcc1 gcc/ada/sem_util.ads 1db799c9a140af9fb155a327f3a6e49b gcc/ada/sem_warn.adb 1b7d4036a641085606704eb68e9e7557 gcc/ada/sem_warn.ads b4fdbe835ffe56d072094daac548065e gcc/ada/sequenio.ads --- 2419,2426 ---- 88bf0e6b791759354e8ae81ef7507ff9 gcc/ada/sem_smem.ads ef47f0af7fa11e2fce10a7fb20c98511 gcc/ada/sem_type.adb 9176639d909025d92b4e8912af77b041 gcc/ada/sem_type.ads ! d8467da1a84cc0e02cf6a357da3f1c90 gcc/ada/sem_util.adb ! fa500e23d190ef539c92e780217960d3 gcc/ada/sem_util.ads 1db799c9a140af9fb155a327f3a6e49b gcc/ada/sem_warn.adb 1b7d4036a641085606704eb68e9e7557 gcc/ada/sem_warn.ads b4fdbe835ffe56d072094daac548065e gcc/ada/sequenio.ads *************** d36e0605a7f68f541648e49af4e5d6ef gcc/ad *** 2477,2483 **** 0ca0b7f7e7cd60b6a255f096abaac886 gcc/ada/sysdep.c 7a47a8649f22534b1b04aba2637f1f6f gcc/ada/system-aix.ads 99b95c46db21c0b39ab2eecb4f0ef1b2 gcc/ada/system-darwin-arm.ads ! fbca9c41faf338a0943d70dc66018cf4 gcc/ada/system-darwin-ppc.ads a99459ca9e7f8c2f8138819b0c12dad1 gcc/ada/system-darwin-x86.ads 45100986a7c499055374837259a70dbd gcc/ada/system-djgpp.ads f3529cf7e308b1c2f88769fece799df1 gcc/ada/system-dragonfly-x86_64.ads --- 2480,2486 ---- 0ca0b7f7e7cd60b6a255f096abaac886 gcc/ada/sysdep.c 7a47a8649f22534b1b04aba2637f1f6f gcc/ada/system-aix.ads 99b95c46db21c0b39ab2eecb4f0ef1b2 gcc/ada/system-darwin-arm.ads ! c7bddf88a63f2499ff1f3bf2e9402f49 gcc/ada/system-darwin-ppc.ads a99459ca9e7f8c2f8138819b0c12dad1 gcc/ada/system-darwin-x86.ads 45100986a7c499055374837259a70dbd gcc/ada/system-djgpp.ads f3529cf7e308b1c2f88769fece799df1 gcc/ada/system-dragonfly-x86_64.ads *************** e011891e7101cbf08438851847b50380 gcc/bb *** 2586,2592 **** 4f13f945a546e96933494f65cd937763 gcc/bitmap.c 87a6abe81f5dcb21d241c1b9166c420d gcc/bitmap.h a3e1bd92ba9bdedb8c7153c6e72090c4 gcc/brig-builtins.def ! 338fbcec39521451f2ff7f22c9be2548 gcc/brig/ChangeLog 1cf71f0ca99819490615a7a573a5d699 gcc/brig/Make-lang.in ee6dd4618f856ac83d7067ce9254d85e gcc/brig/brig-builtins.h 729008055685d12fc1ca05008df01aef gcc/brig/brig-c.h --- 2589,2595 ---- 4f13f945a546e96933494f65cd937763 gcc/bitmap.c 87a6abe81f5dcb21d241c1b9166c420d gcc/bitmap.h a3e1bd92ba9bdedb8c7153c6e72090c4 gcc/brig-builtins.def ! 3cba5fb855e843c0a22a31c3f8bb80a4 gcc/brig/ChangeLog 1cf71f0ca99819490615a7a573a5d699 gcc/brig/Make-lang.in ee6dd4618f856ac83d7067ce9254d85e gcc/brig/brig-builtins.h 729008055685d12fc1ca05008df01aef gcc/brig/brig-c.h *************** bee513b2167c326e657a757cafd956dc gcc/br *** 2629,2645 **** f47f3a5be286bb97d5b3ded0c77a7fc8 gcc/bt-load.c dbcb21d679fd944b98405b15f3e90057 gcc/builtin-attrs.def 57157f190b35a47dd4b683d398e513d6 gcc/builtin-types.def ! 11bff0dc3adcca805e015a4d558f1d84 gcc/builtins.c a97a907640298b1073edbcf6a02fe334 gcc/builtins.def afb31ef0129abddff28f552ef1c65626 gcc/builtins.h ! 668bf8f9cb6b1a9cfec235ed374ccaf0 gcc/c-family/ChangeLog ea3fa1f4d7390a105fa3caab4f79aaf7 gcc/c-family/ChangeLog.gimple-classes 181b99ff0153386a9f37e991e4b564f0 gcc/c-family/array-notation-common.c ! 3750c2b07473ca2dc6e49f0032885798 gcc/c-family/c-ada-spec.c c6bcfcd3eaa0f226f1b049b0baf0927d gcc/c-family/c-ada-spec.h 296ec2c0af128cc96ed7b508af99f62a gcc/c-family/c-attribs.c 61fca19f206b15614354104326f63123 gcc/c-family/c-cilkplus.c ! 8378308b4dd9d1b7d068a44a3c9d93e4 gcc/c-family/c-common.c b68399180567cc41ebcb0458faf3cd81 gcc/c-family/c-common.def 350a8b8a29846b6271ffa4d8a141531a gcc/c-family/c-common.h 05a9984543e05f0c063c5a831a80238e gcc/c-family/c-cppbuiltin.c --- 2632,2648 ---- f47f3a5be286bb97d5b3ded0c77a7fc8 gcc/bt-load.c dbcb21d679fd944b98405b15f3e90057 gcc/builtin-attrs.def 57157f190b35a47dd4b683d398e513d6 gcc/builtin-types.def ! 2e90c03ec2a19dbd1083e73bb7c14770 gcc/builtins.c a97a907640298b1073edbcf6a02fe334 gcc/builtins.def afb31ef0129abddff28f552ef1c65626 gcc/builtins.h ! 264336fb1f9bea945fc1ba92218822a4 gcc/c-family/ChangeLog ea3fa1f4d7390a105fa3caab4f79aaf7 gcc/c-family/ChangeLog.gimple-classes 181b99ff0153386a9f37e991e4b564f0 gcc/c-family/array-notation-common.c ! f0401cc24e93f51ceff4567514898c9a gcc/c-family/c-ada-spec.c c6bcfcd3eaa0f226f1b049b0baf0927d gcc/c-family/c-ada-spec.h 296ec2c0af128cc96ed7b508af99f62a gcc/c-family/c-attribs.c 61fca19f206b15614354104326f63123 gcc/c-family/c-cilkplus.c ! e1318256269d57924b0984f56a0a6dcc gcc/c-family/c-common.c b68399180567cc41ebcb0458faf3cd81 gcc/c-family/c-common.def 350a8b8a29846b6271ffa4d8a141531a gcc/c-family/c-common.h 05a9984543e05f0c063c5a831a80238e gcc/c-family/c-cppbuiltin.c *************** b68399180567cc41ebcb0458faf3cd81 gcc/c- *** 2649,2657 **** 74b0fe24ef6875b92dc45c5023f75106 gcc/c-family/c-gimplify.c bdad430142d2d171b7e0ff950149b1f4 gcc/c-family/c-indentation.c b62245f957f1827f7b297664d5990121 gcc/c-family/c-indentation.h ! 0f4bfa70fe388beb66af314607b99b51 gcc/c-family/c-lex.c 30c2e467779eff504f1b83a1652e9234 gcc/c-family/c-objc.h ! 9f05965c65d98677c1ecd0eca36b9a44 gcc/c-family/c-omp.c 888bce9474894d8263924b464cd6ae49 gcc/c-family/c-opts.c 2427ba79f7f92bcf1a9869e8f7feda00 gcc/c-family/c-pch.c 1c58be1245dc21a8b0fdb511ee8536cd gcc/c-family/c-ppoutput.c --- 2652,2660 ---- 74b0fe24ef6875b92dc45c5023f75106 gcc/c-family/c-gimplify.c bdad430142d2d171b7e0ff950149b1f4 gcc/c-family/c-indentation.c b62245f957f1827f7b297664d5990121 gcc/c-family/c-indentation.h ! 8df2ade13a56a7cf638e7c11959139cd gcc/c-family/c-lex.c 30c2e467779eff504f1b83a1652e9234 gcc/c-family/c-objc.h ! 5f09647445c9b3728d258cbd31e8326a gcc/c-family/c-omp.c 888bce9474894d8263924b464cd6ae49 gcc/c-family/c-opts.c 2427ba79f7f92bcf1a9869e8f7feda00 gcc/c-family/c-pch.c 1c58be1245dc21a8b0fdb511ee8536cd gcc/c-family/c-ppoutput.c *************** fe4c5f6b4662d6fc36d84a1f19c8fa16 gcc/c- *** 2670,2697 **** 3e076faabcb0bb95377ef8f357eced38 gcc/c-family/cilk.c 8916e2707114e23b2dccbbc6bc001a97 gcc/c-family/cppspec.c 82e6854ad3f227c85d7f08a6196d6f70 gcc/c-family/stub-objc.c ! 4b4a952fddf3f427e288d5cae75ad582 gcc/c/ChangeLog 0caf43c9d9c18279169e7f43ad0c19b6 gcc/c/Make-lang.in 5e6eb0dd85447b36231477f9e3e4b5c0 gcc/c/c-array-notation.c a8003032dc7218cccd4aff44dede772d gcc/c/c-aux-info.c e2a3330e4218f15575ab43d04deaeb26 gcc/c/c-convert.c ! 85406841cb0c62a68382f1fed1e4eee8 gcc/c/c-decl.c c714615507e2f0981003d338ff5abc8a gcc/c/c-errors.c a397c0b456aff137a4e136b66fbd0cd6 gcc/c/c-fold.c f3cb7d70adefcf45917f39f56bad0180 gcc/c/c-lang.c fa65b6fcb253804c399bd8d1d14b079f gcc/c/c-lang.h 2c444e8873646b1237057e728c0cf46b gcc/c/c-objc-common.c 658c3e81020fbec498195f368198c7a7 gcc/c/c-objc-common.h ! 91488846efba891fa43f8ab34a7bf2a0 gcc/c/c-parser.c 2b62fc38332a49a6e5e8c09fb1afcef8 gcc/c/c-parser.h ! 67191d1deea476b99b33dab25437bb17 gcc/c/c-tree.h ! 64ea1f9865b9cf38383e3a91e69eca42 gcc/c/c-typeck.c 4d84ee6bcba7c90929c18ce81304349c gcc/c/config-lang.in e9ca602eaa8766cf8ac30f86c84ead30 gcc/c/gccspec.c acb5ca82086acf009acea002766ece25 gcc/c/gimple-parser.c 8b7596ca25fb10eb5fb2576c3693786f gcc/c/gimple-parser.h 275667cbf114b5ac38093284c7c10051 gcc/caller-save.c ! 289e6895f00648ac98236f82b9aba6dd gcc/calls.c 35a3f0d9b1c58a5d06adb4e8d1d9439e gcc/calls.h 356f998e062811877195df2f08ba60ad gcc/ccmp.c 3b6db7d568f86900dcff15eabd20f2fb gcc/ccmp.h --- 2673,2700 ---- 3e076faabcb0bb95377ef8f357eced38 gcc/c-family/cilk.c 8916e2707114e23b2dccbbc6bc001a97 gcc/c-family/cppspec.c 82e6854ad3f227c85d7f08a6196d6f70 gcc/c-family/stub-objc.c ! 03757cb8faf410bc931fc0c9a772ef3e gcc/c/ChangeLog 0caf43c9d9c18279169e7f43ad0c19b6 gcc/c/Make-lang.in 5e6eb0dd85447b36231477f9e3e4b5c0 gcc/c/c-array-notation.c a8003032dc7218cccd4aff44dede772d gcc/c/c-aux-info.c e2a3330e4218f15575ab43d04deaeb26 gcc/c/c-convert.c ! 69941dfe1d6129adc686f76c470eb229 gcc/c/c-decl.c c714615507e2f0981003d338ff5abc8a gcc/c/c-errors.c a397c0b456aff137a4e136b66fbd0cd6 gcc/c/c-fold.c f3cb7d70adefcf45917f39f56bad0180 gcc/c/c-lang.c fa65b6fcb253804c399bd8d1d14b079f gcc/c/c-lang.h 2c444e8873646b1237057e728c0cf46b gcc/c/c-objc-common.c 658c3e81020fbec498195f368198c7a7 gcc/c/c-objc-common.h ! 4eab8db410935f64e70e1128b53e4c69 gcc/c/c-parser.c 2b62fc38332a49a6e5e8c09fb1afcef8 gcc/c/c-parser.h ! 50e2fbc1713269aef283b43158ca621b gcc/c/c-tree.h ! 8fc5190b6b09c6e4bedcade84e2dc2e8 gcc/c/c-typeck.c 4d84ee6bcba7c90929c18ce81304349c gcc/c/config-lang.in e9ca602eaa8766cf8ac30f86c84ead30 gcc/c/gccspec.c acb5ca82086acf009acea002766ece25 gcc/c/gimple-parser.c 8b7596ca25fb10eb5fb2576c3693786f gcc/c/gimple-parser.h 275667cbf114b5ac38093284c7c10051 gcc/caller-save.c ! ca0d5bc2ab79d877803cf5670be75a2a gcc/calls.c 35a3f0d9b1c58a5d06adb4e8d1d9439e gcc/calls.h 356f998e062811877195df2f08ba60ad gcc/ccmp.c 3b6db7d568f86900dcff15eabd20f2fb gcc/ccmp.h *************** f2a3f561ff6a49bb0ecc811ec6512d3b gcc/cf *** 2702,2719 **** cac33857c3d0eefa09bf0986ab7427ca gcc/cfganal.h 5618a7a96d31e6d07af20a0a0fd0b453 gcc/cfgbuild.c a73f90584530bcb1b885fd43355d274e gcc/cfgbuild.h ! 6fa961e30423e314c23201638fea498a gcc/cfgcleanup.c a0c5d611e8d6e95f00ae5b4b63785d88 gcc/cfgcleanup.h 0c8df01eaa2cb3bff12411beccdfd264 gcc/cfgexpand.c 2896de1d1de317927f1fd7ef47720163 gcc/cfgexpand.h ! 98a9a74183a281c3e70f469edcdb04fc gcc/cfghooks.c ! 6e4c878dc845eb2cc277b094af0aec76 gcc/cfghooks.h 4e9b85f96d06a7583bf6983e8770f010 gcc/cfgloop.c ! 0dd354c560fe64209c350ea54b4e0041 gcc/cfgloop.h 219f05d9984823c68ab76e19c309b156 gcc/cfgloopanal.c ! 55922f3bde8bb3dcbea5f03a5c9344d6 gcc/cfgloopmanip.c 0ba518027b3b1192d34ce4e3df414309 gcc/cfgloopmanip.h ! a1354db5bf8c1fb78a9871c75eee5580 gcc/cfgrtl.c 3ec8969e6ab20b3d4ce26552909629a0 gcc/cfgrtl.h 8a1684de97893f6d8c81a3abb1b05a4e gcc/cgraph.c d5ca5c12646fd21ab3b7f09c90df649f gcc/cgraph.h --- 2705,2722 ---- cac33857c3d0eefa09bf0986ab7427ca gcc/cfganal.h 5618a7a96d31e6d07af20a0a0fd0b453 gcc/cfgbuild.c a73f90584530bcb1b885fd43355d274e gcc/cfgbuild.h ! b91c797b94d680f2522fa61cdf6e14ab gcc/cfgcleanup.c a0c5d611e8d6e95f00ae5b4b63785d88 gcc/cfgcleanup.h 0c8df01eaa2cb3bff12411beccdfd264 gcc/cfgexpand.c 2896de1d1de317927f1fd7ef47720163 gcc/cfgexpand.h ! 4514a94a0565fabdce2a30486310f641 gcc/cfghooks.c ! 9d3af52f1a91e6f260dbf9018b40d7da gcc/cfghooks.h 4e9b85f96d06a7583bf6983e8770f010 gcc/cfgloop.c ! 2f00bba1d6bcbdb02def76397d4f1b24 gcc/cfgloop.h 219f05d9984823c68ab76e19c309b156 gcc/cfgloopanal.c ! d2df0a906e505ee670d43cde722f7cc1 gcc/cfgloopmanip.c 0ba518027b3b1192d34ce4e3df414309 gcc/cfgloopmanip.h ! 367dcefcc4fd242d0d19d9d67b282924 gcc/cfgrtl.c 3ec8969e6ab20b3d4ce26552909629a0 gcc/cfgrtl.h 8a1684de97893f6d8c81a3abb1b05a4e gcc/cgraph.c d5ca5c12646fd21ab3b7f09c90df649f gcc/cgraph.h *************** f2ef0b7a04a3fb57b185556cf3c47432 gcc/co *** 2733,2739 **** 033be0715255c7aa7b5fc1c1fc9b04bb gcc/collect2.c 68f9782519956a31e5010bdeb531abac gcc/collect2.h 5c20f36eb198b4f82e0a6a10a6232468 gcc/combine-stack-adj.c ! 24b39c0d166fbda964415884b2c889f9 gcc/combine.c 68373a9634c81023ca3245072f1cc05d gcc/common.md 57b6709b50ab53883091e6546b464a2f gcc/common.opt eeb9d016bece096753f8a59a733ee114 gcc/common/common-target-def.h --- 2736,2742 ---- 033be0715255c7aa7b5fc1c1fc9b04bb gcc/collect2.c 68f9782519956a31e5010bdeb531abac gcc/collect2.h 5c20f36eb198b4f82e0a6a10a6232468 gcc/combine-stack-adj.c ! 999f1c0966360c8632c3da43eb20fa0a gcc/combine.c 68373a9634c81023ca3245072f1cc05d gcc/common.md 57b6709b50ab53883091e6546b464a2f gcc/common.opt eeb9d016bece096753f8a59a733ee114 gcc/common/common-target-def.h *************** b0c22a32616d64c099ef851ddf261b23 gcc/co *** 2789,2801 **** 0d28f0ed0102c01397140daaf2614e83 gcc/compare-elim.c e7193667066e1926cc342fa433d763b4 gcc/conditions.h 452e1826a3cf7c2cfa4bfa44b511cb77 gcc/config.build ! d8d6834da2bd3873ad3ea17564393556 gcc/config.gcc dc4da52535cb76a4fa50c43fdea4ad61 gcc/config.host f2bce35bd9333a67114b7fbcb937af31 gcc/config.in 8e697813dc96ca90f5d0f4c196efe2cc gcc/config/README 3d4a14b8dc018b17cce2ea4585f41b55 gcc/config/aarch64/aarch64-arches.def c8327f0a78ae111247d01aa8b7076386 gcc/config/aarch64/aarch64-builtins.c ! 6557e3cc247d5d577c91bfdcdc753c76 gcc/config/aarch64/aarch64-c.c 74bec66163a554a0553a367cc947ee3d gcc/config/aarch64/aarch64-cores.def 5134dfc28e546cd69e75fd9e68f6ccac gcc/config/aarch64/aarch64-cost-tables.h c71b8ebda07ac7ffc59588249415e60a gcc/config/aarch64/aarch64-elf-raw.h --- 2792,2804 ---- 0d28f0ed0102c01397140daaf2614e83 gcc/compare-elim.c e7193667066e1926cc342fa433d763b4 gcc/conditions.h 452e1826a3cf7c2cfa4bfa44b511cb77 gcc/config.build ! f94dac4ac965e6cf4710f40f2c312ea3 gcc/config.gcc dc4da52535cb76a4fa50c43fdea4ad61 gcc/config.host f2bce35bd9333a67114b7fbcb937af31 gcc/config.in 8e697813dc96ca90f5d0f4c196efe2cc gcc/config/README 3d4a14b8dc018b17cce2ea4585f41b55 gcc/config/aarch64/aarch64-arches.def c8327f0a78ae111247d01aa8b7076386 gcc/config/aarch64/aarch64-builtins.c ! 73c224bc41d6c6c6b6423315f475d097 gcc/config/aarch64/aarch64-c.c 74bec66163a554a0553a367cc947ee3d gcc/config/aarch64/aarch64-cores.def 5134dfc28e546cd69e75fd9e68f6ccac gcc/config/aarch64/aarch64-cost-tables.h c71b8ebda07ac7ffc59588249415e60a gcc/config/aarch64/aarch64-elf-raw.h *************** fbc9d22ea16726e8c5404ba63b95fbe6 gcc/co *** 2816,2822 **** 415934c7a49166288d8a84565c8cb662 gcc/config/aarch64/aarch64-tuning-flags.def b31cf3f2c26c021e4397b2b2258d7120 gcc/config/aarch64/aarch64.c d780ca920c8a599fde40e0b93088a64b gcc/config/aarch64/aarch64.h ! 41d07c95bb8d8ccad5874a105f294ca1 gcc/config/aarch64/aarch64.md 46f1fa1446f50465ca061865c266d649 gcc/config/aarch64/aarch64.opt d72956fc0e5700efa6411099266daa61 gcc/config/aarch64/arm_acle.h e3714cfb03cb0cc67153b18a56b70fb9 gcc/config/aarch64/arm_fp16.h --- 2819,2825 ---- 415934c7a49166288d8a84565c8cb662 gcc/config/aarch64/aarch64-tuning-flags.def b31cf3f2c26c021e4397b2b2258d7120 gcc/config/aarch64/aarch64.c d780ca920c8a599fde40e0b93088a64b gcc/config/aarch64/aarch64.h ! 907fd6f0bbcca012d420685f742fc54f gcc/config/aarch64/aarch64.md 46f1fa1446f50465ca061865c266d649 gcc/config/aarch64/aarch64.opt d72956fc0e5700efa6411099266daa61 gcc/config/aarch64/arm_acle.h e3714cfb03cb0cc67153b18a56b70fb9 gcc/config/aarch64/arm_fp16.h *************** e3714cfb03cb0cc67153b18a56b70fb9 gcc/co *** 2825,2835 **** 632d0d3a05731c4cf2402d75c66874c6 gcc/config/aarch64/biarchilp32.h 99fe31aa198c89dcf315521d31181507 gcc/config/aarch64/biarchlp64.h 679259c60a96d361ba6507e0ca8d5341 gcc/config/aarch64/constraints.md ! 9d522374c3a50d409fa8ee710d7eb013 gcc/config/aarch64/cortex-a57-fma-steering.c 39fe2e7252888d355e17b84cb84058de gcc/config/aarch64/driver-aarch64.c 9b66fdb3ecb5aa5807621bc85a313c31 gcc/config/aarch64/geniterators.sh d039909a32343a370a779c05475fde10 gcc/config/aarch64/gentune.sh ! 677e2b2d13f885d12d53a52eda1e830b gcc/config/aarch64/iterators.md 8e624d2cc2d41dc33908bb4638c3a91f gcc/config/aarch64/predicates.md 2fe3615af21214e60e300791ade96a8a gcc/config/aarch64/rtems.h 4e14eab4bea8de0a9a549bafadf4d0dd gcc/config/aarch64/t-aarch64 --- 2828,2838 ---- 632d0d3a05731c4cf2402d75c66874c6 gcc/config/aarch64/biarchilp32.h 99fe31aa198c89dcf315521d31181507 gcc/config/aarch64/biarchlp64.h 679259c60a96d361ba6507e0ca8d5341 gcc/config/aarch64/constraints.md ! 615162037346ae5876691d896edca80b gcc/config/aarch64/cortex-a57-fma-steering.c 39fe2e7252888d355e17b84cb84058de gcc/config/aarch64/driver-aarch64.c 9b66fdb3ecb5aa5807621bc85a313c31 gcc/config/aarch64/geniterators.sh d039909a32343a370a779c05475fde10 gcc/config/aarch64/gentune.sh ! 33d3891050db0035addfe9ca614c7592 gcc/config/aarch64/iterators.md 8e624d2cc2d41dc33908bb4638c3a91f gcc/config/aarch64/predicates.md 2fe3615af21214e60e300791ade96a8a gcc/config/aarch64/rtems.h 4e14eab4bea8de0a9a549bafadf4d0dd gcc/config/aarch64/t-aarch64 *************** e031a28eab206d4b53d4b26c206c7814 gcc/co *** 2841,2847 **** 142d74b958b77819754a86f22ec262c9 gcc/config/alpha/alpha-modes.def 91ae6e87d45c468297b61a2fd5c22f17 gcc/config/alpha/alpha-passes.def f33be94fa0f75c3f386a7cbe19e29c53 gcc/config/alpha/alpha-protos.h ! 816e538b11b3cdf9c6afc9afc09dbce1 gcc/config/alpha/alpha.c 4a740bb1133406c1582bbf646f54a28a gcc/config/alpha/alpha.h 60f1df1f7ddb018859c8a4d7d42491ab gcc/config/alpha/alpha.md 36e48c7783afb4c7537a33dad0d9734d gcc/config/alpha/alpha.opt --- 2844,2850 ---- 142d74b958b77819754a86f22ec262c9 gcc/config/alpha/alpha-modes.def 91ae6e87d45c468297b61a2fd5c22f17 gcc/config/alpha/alpha-passes.def f33be94fa0f75c3f386a7cbe19e29c53 gcc/config/alpha/alpha-protos.h ! 79b819ff46984172d1b3edcdb372fee1 gcc/config/alpha/alpha.c 4a740bb1133406c1582bbf646f54a28a gcc/config/alpha/alpha.h 60f1df1f7ddb018859c8a4d7d42491ab gcc/config/alpha/alpha.md 36e48c7783afb4c7537a33dad0d9734d gcc/config/alpha/alpha.opt *************** d0f4a8e84b903577fdc4b4c653595682 gcc/co *** 2920,2928 **** 9fc296c38dbb9315478bd6a567c72cf7 gcc/config/arm/arm-simd-builtin-types.def d7ce5229b2c13c9f817d2b467a8fa208 gcc/config/arm/arm-tables.opt 632479ba42ec730b66ece345a4b6fa69 gcc/config/arm/arm-tune.md ! 5be03d4f2ed503721802f9cdfd595f6c gcc/config/arm/arm.c ! d7aafc338dc8d9b7504f02b7163d7e6d gcc/config/arm/arm.h ! c29542a20a344bdff1f8f19daf21dca1 gcc/config/arm/arm.md 402607c37d1e8d5a3d9559e6079f902d gcc/config/arm/arm.opt 24f38580cc601b8d52e906038d175b22 gcc/config/arm/arm1020e.md ef11d6991cb00c5691ac3dd69e916725 gcc/config/arm/arm1026ejs.md --- 2923,2931 ---- 9fc296c38dbb9315478bd6a567c72cf7 gcc/config/arm/arm-simd-builtin-types.def d7ce5229b2c13c9f817d2b467a8fa208 gcc/config/arm/arm-tables.opt 632479ba42ec730b66ece345a4b6fa69 gcc/config/arm/arm-tune.md ! 5cd1fb1b2dd0a1c453218ec00cd9c6dd gcc/config/arm/arm.c ! e110c1addabd384fa491ee830d10d1ae gcc/config/arm/arm.h ! eddeb694633bd265727ec2c48547d9d8 gcc/config/arm/arm.md 402607c37d1e8d5a3d9559e6079f902d gcc/config/arm/arm.opt 24f38580cc601b8d52e906038d175b22 gcc/config/arm/arm1020e.md ef11d6991cb00c5691ac3dd69e916725 gcc/config/arm/arm1026ejs.md *************** b824c88f58431b50ebd0dce7cbead65f gcc/co *** 2936,2942 **** 4afdde754ee1a54e42e255422b6372ab gcc/config/arm/arm_neon_builtins.def 5b29dea4bb7c4a0916cc671e8c79e749 gcc/config/arm/arm_vfp_builtins.def a67036a0ecfa194787e9c9e9907f903e gcc/config/arm/bpabi.h ! b5ac0f5a764fb8f45065cc86be7cdcec gcc/config/arm/constraints.md 51aeda377b0022e7a615de7c3ab9c356 gcc/config/arm/cortex-a15-neon.md 91c92202094678c0824439a69d7d89ad gcc/config/arm/cortex-a15.md 244bcf796f744cb938e7b277c620a0a6 gcc/config/arm/cortex-a17-neon.md --- 2939,2945 ---- 4afdde754ee1a54e42e255422b6372ab gcc/config/arm/arm_neon_builtins.def 5b29dea4bb7c4a0916cc671e8c79e749 gcc/config/arm/arm_vfp_builtins.def a67036a0ecfa194787e9c9e9907f903e gcc/config/arm/bpabi.h ! a4ba9872a54fe35944765158c6497a4c gcc/config/arm/constraints.md 51aeda377b0022e7a615de7c3ab9c356 gcc/config/arm/cortex-a15-neon.md 91c92202094678c0824439a69d7d89ad gcc/config/arm/cortex-a15.md 244bcf796f744cb938e7b277c620a0a6 gcc/config/arm/cortex-a17-neon.md *************** b904d27c5271b122a49d456478249b63 gcc/co *** 2977,2983 **** ae7f63fcc1707b4a22775f5ef6b4bc30 gcc/config/arm/marvell-f-iwmmxt.md 23c5005c8404d6b49376e62ddb72464b gcc/config/arm/marvell-pj4.md e7bd025c0a8b6c147154451f2ac26962 gcc/config/arm/mmintrin.h ! e887dc81918b533d672380a120386e23 gcc/config/arm/neon.md 272ea0edb113be6f1106776f9d26af46 gcc/config/arm/netbsd-elf.h 4ca7f197762ae09faad8ee458dee5091 gcc/config/arm/parsecpu.awk 1238b1cb0060064bcc0aaf1f32c91a26 gcc/config/arm/predicates.md --- 2980,2986 ---- ae7f63fcc1707b4a22775f5ef6b4bc30 gcc/config/arm/marvell-f-iwmmxt.md 23c5005c8404d6b49376e62ddb72464b gcc/config/arm/marvell-pj4.md e7bd025c0a8b6c147154451f2ac26962 gcc/config/arm/mmintrin.h ! fe71f7acf0827a1a23a71e8235af01d4 gcc/config/arm/neon.md 272ea0edb113be6f1106776f9d26af46 gcc/config/arm/netbsd-elf.h 4ca7f197762ae09faad8ee458dee5091 gcc/config/arm/parsecpu.awk 1238b1cb0060064bcc0aaf1f32c91a26 gcc/config/arm/predicates.md *************** e3950ec6bd159734835f8f8fb143efc6 gcc/co *** 2993,2999 **** f65e32ade75647d28299317c685923d9 gcc/config/arm/t-linux-eabi 6563e710a3fd04730093adc7eb149568 gcc/config/arm/t-phoenix 378df15e3883554c3dfce4f23692c31c gcc/config/arm/t-rmprofile ! 7635e6786e20753798ce1cd1cda5ff17 gcc/config/arm/t-rtems 4943fbef522585ab850f79aba907546d gcc/config/arm/t-symbian 9f0145d02d3aa24832a9dab5809c90e8 gcc/config/arm/t-vxworks 1ccbb3a35ced4f3fd933a078bc385319 gcc/config/arm/thumb1.md --- 2996,3002 ---- f65e32ade75647d28299317c685923d9 gcc/config/arm/t-linux-eabi 6563e710a3fd04730093adc7eb149568 gcc/config/arm/t-phoenix 378df15e3883554c3dfce4f23692c31c gcc/config/arm/t-rmprofile ! 173f950f345bd9bfe10a47a126fe31a2 gcc/config/arm/t-rtems 4943fbef522585ab850f79aba907546d gcc/config/arm/t-symbian 9f0145d02d3aa24832a9dab5809c90e8 gcc/config/arm/t-vxworks 1ccbb3a35ced4f3fd933a078bc385319 gcc/config/arm/thumb1.md *************** a8b0daa164f32ba1e8276cf787899c6c gcc/co *** 3021,3027 **** 5b3a9cfaad388c30ccb64f8c22ae8434 gcc/config/avr/avr-passes.def d058fa65ae6b3fa1bca9d75e9afd3df6 gcc/config/avr/avr-protos.h 3425f429a345e1eecd51bcad4d3ab1bd gcc/config/avr/avr-stdint.h ! 4cce7957a71f16ac576e7aa68e790fb1 gcc/config/avr/avr.c 5df8fc1981af85bddf054216217ff9e1 gcc/config/avr/avr.h afb18156319b3897dfb240f9678f0cc7 gcc/config/avr/avr.md 3be9837418a7860773b4a1a189853b1c gcc/config/avr/avr.opt --- 3024,3030 ---- 5b3a9cfaad388c30ccb64f8c22ae8434 gcc/config/avr/avr-passes.def d058fa65ae6b3fa1bca9d75e9afd3df6 gcc/config/avr/avr-protos.h 3425f429a345e1eecd51bcad4d3ab1bd gcc/config/avr/avr-stdint.h ! fd7462f659967a430a99bcb21ce5d01a gcc/config/avr/avr.c 5df8fc1981af85bddf054216217ff9e1 gcc/config/avr/avr.h afb18156319b3897dfb240f9678f0cc7 gcc/config/avr/avr.md 3be9837418a7860773b4a1a189853b1c gcc/config/avr/avr.opt *************** b04e5c20797e72eedf069e05e435d9d1 gcc/co *** 3105,3122 **** a9b0f21667fd1395c9d1ba7a25d64ef0 gcc/config/cris/t-cris 05528bc8bd9dc14ca45cc8af478acc93 gcc/config/cris/t-elfmulti 5657034355d2720466dad6b98f794a8f gcc/config/cris/t-linux ! 3c50e8169741e2ca3edd4ac90756e1f8 gcc/config/darwin-c.c ! 296a294042c185964ef738edd9af6508 gcc/config/darwin-driver.c 4b4dd81e2edf3c6062378c2c342e070a gcc/config/darwin-f.c ff8874544a9c5e305c4592eeaa0ca02d gcc/config/darwin-ppc-ldouble-patch.def ! d6acd429ff1600c49ccc0b3aceb4247e gcc/config/darwin-protos.h 5cb72a6936fb3c9254091b5cc7639be5 gcc/config/darwin-sections.def ! 10e71b91575e69235cd275579ea80640 gcc/config/darwin.c ! e3bd28a2da95b02fb20bb075383724f3 gcc/config/darwin.h ! 8b9419092068348e657dcae282a6a3f7 gcc/config/darwin.opt ! 101024c77063e77198ed701f9f28e16a gcc/config/darwin10.h 36fb2780494fc147291656b8ded57bf3 gcc/config/darwin12.h ! efa44741c3bd8204720f8980452d3b20 gcc/config/darwin9.h 37caa63015b7c98ec9ffeda384e9e869 gcc/config/dbx.h e2e1cb01e0cf4853349146b0e45c5dad gcc/config/dbxcoff.h 96cf4c3121f2e418fd757787edfa8e41 gcc/config/dbxelf.h --- 3108,3125 ---- a9b0f21667fd1395c9d1ba7a25d64ef0 gcc/config/cris/t-cris 05528bc8bd9dc14ca45cc8af478acc93 gcc/config/cris/t-elfmulti 5657034355d2720466dad6b98f794a8f gcc/config/cris/t-linux ! cef25ced79c44888d49089d190c29bee gcc/config/darwin-c.c ! 51f1269f58ce54d50d2d45726359b9a8 gcc/config/darwin-driver.c 4b4dd81e2edf3c6062378c2c342e070a gcc/config/darwin-f.c ff8874544a9c5e305c4592eeaa0ca02d gcc/config/darwin-ppc-ldouble-patch.def ! 53785fbad66238d7cdc37aeefd23c847 gcc/config/darwin-protos.h 5cb72a6936fb3c9254091b5cc7639be5 gcc/config/darwin-sections.def ! 15e902a893c11ba7d756116675521dd5 gcc/config/darwin.c ! 7daa9b1a546f24cfefb35a1aab49c6ce gcc/config/darwin.h ! 1d27b83e3ff69e3bd790b8af23c19523 gcc/config/darwin.opt ! bbbddb58c3c36404e308920201b0dc6c gcc/config/darwin10.h 36fb2780494fc147291656b8ded57bf3 gcc/config/darwin12.h ! a5533a3b6e0988a2fd44a04d9c0a62e8 gcc/config/darwin9.h 37caa63015b7c98ec9ffeda384e9e869 gcc/config/dbx.h e2e1cb01e0cf4853349146b0e45c5dad gcc/config/dbxcoff.h 96cf4c3121f2e418fd757787edfa8e41 gcc/config/dbxelf.h *************** e115a0990f79835bb8dbf2365b78df76 gcc/co *** 3207,3213 **** 23b680d8385994e8046590bd5f06750d gcc/config/i386/athlon.md 74385587c3e4f5d94833643091ecfccc gcc/config/i386/atom.md 180209868729c893ee8304e2fbe152a3 gcc/config/i386/att.h ! bc7981d211a35635d4d9239eb87bc009 gcc/config/i386/avx2intrin.h 750be139720f8920d23f30f421c5601f gcc/config/i386/avx5124fmapsintrin.h 4b98522ce733b50b13c082cc7adea669 gcc/config/i386/avx5124vnniwintrin.h b60ce9f5056a8b2d3e02be7709099937 gcc/config/i386/avx512bwintrin.h --- 3210,3216 ---- 23b680d8385994e8046590bd5f06750d gcc/config/i386/athlon.md 74385587c3e4f5d94833643091ecfccc gcc/config/i386/atom.md 180209868729c893ee8304e2fbe152a3 gcc/config/i386/att.h ! 8a32b6998915b0ff03832d6f7964af54 gcc/config/i386/avx2intrin.h 750be139720f8920d23f30f421c5601f gcc/config/i386/avx5124fmapsintrin.h 4b98522ce733b50b13c082cc7adea669 gcc/config/i386/avx5124vnniwintrin.h b60ce9f5056a8b2d3e02be7709099937 gcc/config/i386/avx512bwintrin.h *************** cb658ab64800dc93ff9d5f2808f958ae gcc/co *** 3224,3230 **** 0703bacc33f4079c87c52eb336565c95 gcc/config/i386/avx512vldqintrin.h c7f0f4a467f7cbc02f89646cf63c1895 gcc/config/i386/avx512vlintrin.h 0e25fd1bd9e4a1b6101596cc480db933 gcc/config/i386/avx512vpopcntdqintrin.h ! 09eeee007c733ce05e205ae1af926882 gcc/config/i386/avxintrin.h 3044158b72545cd77bdaf0af75d23cc4 gcc/config/i386/avxmath.h 0c049f8ce11f381b7df0c79dc3d358f5 gcc/config/i386/bdver1.md 813e599df64196c20812ebfdbd3d145a gcc/config/i386/bdver3.md --- 3227,3233 ---- 0703bacc33f4079c87c52eb336565c95 gcc/config/i386/avx512vldqintrin.h c7f0f4a467f7cbc02f89646cf63c1895 gcc/config/i386/avx512vlintrin.h 0e25fd1bd9e4a1b6101596cc480db933 gcc/config/i386/avx512vpopcntdqintrin.h ! 8cad976e21b1cb5b9af690c187dd491d gcc/config/i386/avxintrin.h 3044158b72545cd77bdaf0af75d23cc4 gcc/config/i386/avxmath.h 0c049f8ce11f381b7df0c79dc3d358f5 gcc/config/i386/bdver1.md 813e599df64196c20812ebfdbd3d145a gcc/config/i386/bdver3.md *************** e5755082352ee97d90427b199539c657 gcc/co *** 3240,3246 **** f275e0cb1c06e9be383ee2830742eabc gcc/config/i386/clzerointrin.h 7ee8c7a80d13ed5edc3e2ce7a101f690 gcc/config/i386/constraints.md 51916b5cfd29cd81ccf6e9e61c1f668d gcc/config/i386/core2.md ! 4c008dd80df596b0deae5e181737543c gcc/config/i386/cpuid.h 3005ca522302d379f11519de60d8f8fa gcc/config/i386/cross-stdarg.h 27869bbc83c2dadbf6eda2d3c15245c9 gcc/config/i386/crtdll.h d11d93fb59f31ce43308a3ce2b80bfed gcc/config/i386/cygming.h --- 3243,3249 ---- f275e0cb1c06e9be383ee2830742eabc gcc/config/i386/clzerointrin.h 7ee8c7a80d13ed5edc3e2ce7a101f690 gcc/config/i386/constraints.md 51916b5cfd29cd81ccf6e9e61c1f668d gcc/config/i386/core2.md ! c7551ed76a45fdbeeb30a09e93d9049a gcc/config/i386/cpuid.h 3005ca522302d379f11519de60d8f8fa gcc/config/i386/cross-stdarg.h 27869bbc83c2dadbf6eda2d3c15245c9 gcc/config/i386/crtdll.h d11d93fb59f31ce43308a3ce2b80bfed gcc/config/i386/cygming.h *************** ed7bac240af8b09916271be40230256d gcc/co *** 3249,3263 **** 1342de078b9ef883588f75f5aed134e9 gcc/config/i386/cygwin-w64.h e8234781b4c21eb0988db82e86cc7267 gcc/config/i386/cygwin.h 849a37486371a7ea92478c1bd902a1d8 gcc/config/i386/cygwin.opt ! ea04c4d56142d8ba8867b531f3c57ac6 gcc/config/i386/darwin.h ! b63a31daedb78da6857de5dc44890ac5 gcc/config/i386/darwin64.h 5628990ccbc26c3d8a83cab8c8eea3b9 gcc/config/i386/djgpp-stdint.h 737dede75d620d8918f97e224f27b465 gcc/config/i386/djgpp.c 49544a59d3358fdb338ca2b49921e43b gcc/config/i386/djgpp.h 2b7e4c6815831e8c7031184e02f30c83 gcc/config/i386/djgpp.opt e643535bf612674f78a8ccba59bfe7f2 gcc/config/i386/dragonfly.h 541053d78505778d82a708fb43be377b gcc/config/i386/driver-i386.c ! 6a5cfd69b1065c7a9f46bed11c8700d2 gcc/config/i386/emmintrin.h 6f09fa82ef1421be137d2767fdcc7f2c gcc/config/i386/f16cintrin.h 67e8f732c8aab028c2667fee5cd0b42e gcc/config/i386/fma4intrin.h 8f861c333b4f4e35c0345c56295b8567 gcc/config/i386/fmaintrin.h --- 3252,3267 ---- 1342de078b9ef883588f75f5aed134e9 gcc/config/i386/cygwin-w64.h e8234781b4c21eb0988db82e86cc7267 gcc/config/i386/cygwin.h 849a37486371a7ea92478c1bd902a1d8 gcc/config/i386/cygwin.opt ! fdd5f70d619db615830ddc9c01e471c5 gcc/config/i386/darwin.h ! 8256997a20c204a0527b521ac183cfc2 gcc/config/i386/darwin32-biarch.h ! cf642b6e9bac4617209f4bf91245d902 gcc/config/i386/darwin64-biarch.h 5628990ccbc26c3d8a83cab8c8eea3b9 gcc/config/i386/djgpp-stdint.h 737dede75d620d8918f97e224f27b465 gcc/config/i386/djgpp.c 49544a59d3358fdb338ca2b49921e43b gcc/config/i386/djgpp.h 2b7e4c6815831e8c7031184e02f30c83 gcc/config/i386/djgpp.opt e643535bf612674f78a8ccba59bfe7f2 gcc/config/i386/dragonfly.h 541053d78505778d82a708fb43be377b gcc/config/i386/driver-i386.c ! 5f12b62ba5618031fe0d2115118bf402 gcc/config/i386/emmintrin.h 6f09fa82ef1421be137d2767fdcc7f2c gcc/config/i386/f16cintrin.h 67e8f732c8aab028c2667fee5cd0b42e gcc/config/i386/fma4intrin.h 8f861c333b4f4e35c0345c56295b8567 gcc/config/i386/fmaintrin.h *************** f23d8a342d218fda7a0259450202ee9b gcc/co *** 3279,3293 **** a2a96ce7ed0be4a979baf51b72a4e1ed gcc/config/i386/host-mingw32.c 323aab772ea45dd79401d5317da8bc0f gcc/config/i386/i386-builtin-types.awk d5238835384061cdbddd924882e89c6e gcc/config/i386/i386-builtin-types.def ! 679fe751d3a24897f72395532f0220be gcc/config/i386/i386-builtin.def 54c767a1819a987fb859eaa5b1e265b2 gcc/config/i386/i386-c.c 79f95578ad42bafa17a9a1f3c09514c3 gcc/config/i386/i386-modes.def fd4a0dcde60c7daf09fe3b9ef6b3ee08 gcc/config/i386/i386-opts.h 80b43deb5c1fc5fc0938a942fd33af10 gcc/config/i386/i386-passes.def 1530f3e07f04b9e5cc5d194b8ebcd21d gcc/config/i386/i386-protos.h ! 9901bb649b4526fb879a85a063134531 gcc/config/i386/i386.c ! 5ccb756977456f01ded62c23e28f3251 gcc/config/i386/i386.h ! d9ad68d1359a77d59d1eb2b760dcdb40 gcc/config/i386/i386.md ca0d03ffdb381f643e5cf347dd93191b gcc/config/i386/i386.opt 7ba0fe66f8e16b1b88672d1a6a6214e4 gcc/config/i386/i386elf.h 5d53d7bc9e564ebfaa7161e7fbb38fe8 gcc/config/i386/ia32intrin.h --- 3283,3297 ---- a2a96ce7ed0be4a979baf51b72a4e1ed gcc/config/i386/host-mingw32.c 323aab772ea45dd79401d5317da8bc0f gcc/config/i386/i386-builtin-types.awk d5238835384061cdbddd924882e89c6e gcc/config/i386/i386-builtin-types.def ! 6ced65456ffa518c444888fcb834cc8b gcc/config/i386/i386-builtin.def 54c767a1819a987fb859eaa5b1e265b2 gcc/config/i386/i386-c.c 79f95578ad42bafa17a9a1f3c09514c3 gcc/config/i386/i386-modes.def fd4a0dcde60c7daf09fe3b9ef6b3ee08 gcc/config/i386/i386-opts.h 80b43deb5c1fc5fc0938a942fd33af10 gcc/config/i386/i386-passes.def 1530f3e07f04b9e5cc5d194b8ebcd21d gcc/config/i386/i386-protos.h ! 686c3e9a5942052fefe938db43e51e4b gcc/config/i386/i386.c ! 6e37ac5621a664baeb007f371b1f1b57 gcc/config/i386/i386.h ! 029fbddaa66b10ea0325a9cba5834bb9 gcc/config/i386/i386.md ca0d03ffdb381f643e5cf347dd93191b gcc/config/i386/i386.opt 7ba0fe66f8e16b1b88672d1a6a6214e4 gcc/config/i386/i386elf.h 5d53d7bc9e564ebfaa7161e7fbb38fe8 gcc/config/i386/ia32intrin.h *************** a8aed88b8bbf38fdb6166cf2d0051cf1 gcc/co *** 3341,3347 **** 8be24cf09776d77cfca4a86b3442fbce gcc/config/i386/slm.md 655421e4471519d6655c892afcec20c5 gcc/config/i386/smmintrin.h b5bce0d903bc159066cd8fefe933e6af gcc/config/i386/sol2.h ! 3baf3ed14a3bddd6dff79e16deae0d38 gcc/config/i386/sse.md 18427fe6cb074752acb8f48048eaf104 gcc/config/i386/ssemath.h aed767217d43c89b3e9f7ba6f4c213a2 gcc/config/i386/stringop.def 6d07cea9e3242e05941de0140745843b gcc/config/i386/subst.md --- 3345,3351 ---- 8be24cf09776d77cfca4a86b3442fbce gcc/config/i386/slm.md 655421e4471519d6655c892afcec20c5 gcc/config/i386/smmintrin.h b5bce0d903bc159066cd8fefe933e6af gcc/config/i386/sol2.h ! aeda682f4ca085ea1b0ef7cd0e96faf0 gcc/config/i386/sse.md 18427fe6cb074752acb8f48048eaf104 gcc/config/i386/ssemath.h aed767217d43c89b3e9f7ba6f4c213a2 gcc/config/i386/stringop.def 6d07cea9e3242e05941de0140745843b gcc/config/i386/subst.md *************** a3f25e79f8f7d67dc93801fe6004c715 gcc/co *** 3349,3356 **** 138a11dfc6cd317eb9e6ce0126d15287 gcc/config/i386/sysv4.h 3012f8fe17631be71507b44d3733ffa9 gcc/config/i386/t-cygming d5339d6e5a09a02383903f617230e19e gcc/config/i386/t-cygwin-w64 ! 98d94861be252f8541038afee279417f gcc/config/i386/t-darwin ! 8f92133cb94c59e2939cd65dc5fc8cb4 gcc/config/i386/t-darwin64 4c5d6e2fe993d41a182cdd83904065d4 gcc/config/i386/t-djgpp 3a1c0dac7740fd9ef48c7bdf5f313c9d gcc/config/i386/t-gmm_malloc d5939c6bccbf8957206c63308ce628a6 gcc/config/i386/t-gnu --- 3353,3360 ---- 138a11dfc6cd317eb9e6ce0126d15287 gcc/config/i386/sysv4.h 3012f8fe17631be71507b44d3733ffa9 gcc/config/i386/t-cygming d5339d6e5a09a02383903f617230e19e gcc/config/i386/t-cygwin-w64 ! 98d94861be252f8541038afee279417f gcc/config/i386/t-darwin32-biarch ! 8f92133cb94c59e2939cd65dc5fc8cb4 gcc/config/i386/t-darwin64-biarch 4c5d6e2fe993d41a182cdd83904065d4 gcc/config/i386/t-djgpp 3a1c0dac7740fd9ef48c7bdf5f313c9d gcc/config/i386/t-gmm_malloc d5939c6bccbf8957206c63308ce628a6 gcc/config/i386/t-gnu *************** bbccdcf812f8a0570b91878c40a1ac35 gcc/co *** 3736,3742 **** d835d08884a2846e70bef505767bd3f1 gcc/config/nios2/t-rtems 1a77021617fa509b4193a0173cc0db80 gcc/config/nvptx/mkoffload.c 0528c01cacf3d6d78c2d572ddce1acd2 gcc/config/nvptx/nvptx-protos.h ! 2ed794702f6558a54ac7fdfbdd9ad65e gcc/config/nvptx/nvptx.c eb1454b59c8b5e977859ef9a164f30d7 gcc/config/nvptx/nvptx.h 33ff98eff43db716166e6eb7701d7444 gcc/config/nvptx/nvptx.md 581897eccb2823f57fe3e4d7f48dfc99 gcc/config/nvptx/nvptx.opt --- 3740,3746 ---- d835d08884a2846e70bef505767bd3f1 gcc/config/nios2/t-rtems 1a77021617fa509b4193a0173cc0db80 gcc/config/nvptx/mkoffload.c 0528c01cacf3d6d78c2d572ddce1acd2 gcc/config/nvptx/nvptx-protos.h ! fa12c70da4e2f9da7e503bcf43434de8 gcc/config/nvptx/nvptx.c eb1454b59c8b5e977859ef9a164f30d7 gcc/config/nvptx/nvptx.h 33ff98eff43db716166e6eb7701d7444 gcc/config/nvptx/nvptx.md 581897eccb2823f57fe3e4d7f48dfc99 gcc/config/nvptx/nvptx.opt *************** f9eb8215e990039206aca7d2674044dd gcc/co *** 3765,3773 **** d4df9eb3c1cf138edc94444846091689 gcc/config/pa/pa-openbsd.h 7bc5229cf1c43545830a2c4703b2368e gcc/config/pa/pa-opts.h 946b59b66fba818b8c8b48d21d19f78c gcc/config/pa/pa-protos.h ! 76cfeea06fd4a3cfe605d528f067ec30 gcc/config/pa/pa.c 667dae285606b1eee390c1f129a4db34 gcc/config/pa/pa.h ! 1cc618c4bb255d4616021f152bb0f9ad gcc/config/pa/pa.md 8bd9cf9ffd45cd39f633111f1c7a35c2 gcc/config/pa/pa.opt 5493a9bfa5ffeddf45cfff961109b642 gcc/config/pa/pa32-linux.h eb52a472e9a1cd97e8c83b89c65a6b84 gcc/config/pa/pa32-openbsd.h --- 3769,3777 ---- d4df9eb3c1cf138edc94444846091689 gcc/config/pa/pa-openbsd.h 7bc5229cf1c43545830a2c4703b2368e gcc/config/pa/pa-opts.h 946b59b66fba818b8c8b48d21d19f78c gcc/config/pa/pa-protos.h ! 6ae61358d8357ae9bff5ddf170b6f516 gcc/config/pa/pa.c 667dae285606b1eee390c1f129a4db34 gcc/config/pa/pa.h ! f743b7417dd15bb05789c3f327006ce8 gcc/config/pa/pa.md 8bd9cf9ffd45cd39f633111f1c7a35c2 gcc/config/pa/pa.opt 5493a9bfa5ffeddf45cfff961109b642 gcc/config/pa/pa32-linux.h eb52a472e9a1cd97e8c83b89c65a6b84 gcc/config/pa/pa32-openbsd.h *************** d13c2da4db56aa2b22d164716edf47d9 gcc/co *** 3853,3869 **** c1fd5ce3265227f742dd7b50a4d4e860 gcc/config/rs6000/aix61.h c04eafaf5bcb98ef729029677f468111 gcc/config/rs6000/aix64.opt 9e37dfb2cfc128801986fe38da434059 gcc/config/rs6000/aix71.h ! 567a005d0999c88ffad5ca2e2a3cfffc gcc/config/rs6000/altivec.h ! e270d6caa1d3b80245971cb57960cc63 gcc/config/rs6000/altivec.md d93efc51b48185e307aea24e46c4eff1 gcc/config/rs6000/biarch64.h 03512609c1d7d657e1fa9d336feaf3f2 gcc/config/rs6000/cell.md aae8b48d17c545633f55e8f1f6eb9152 gcc/config/rs6000/constraints.md ! ed845034a74aa76eba70cf51c5fbbe69 gcc/config/rs6000/crypto.md ! 8797ca2bcbcf839761b9d3259b4a6eaa gcc/config/rs6000/darwin.h ! be03b51e2a326cffe7f46ad456aca0b2 gcc/config/rs6000/darwin.md 3a653fa4deb3dbcf0c18f756e27d0229 gcc/config/rs6000/darwin.opt ! 06cbeeac6e757925c70f07f04770bd9f gcc/config/rs6000/darwin64.h ! efec264b3f79ef8045fa9c62522b81b5 gcc/config/rs6000/darwin7.h c5d09b685dc06366de0472e5ed5fa397 gcc/config/rs6000/darwin8.h eced47c9f0f77449e1dfd44057cd5d0f gcc/config/rs6000/default64.h af67d5fc20f3c5695c275e364482816c gcc/config/rs6000/dfp.md --- 3857,3874 ---- c1fd5ce3265227f742dd7b50a4d4e860 gcc/config/rs6000/aix61.h c04eafaf5bcb98ef729029677f468111 gcc/config/rs6000/aix64.opt 9e37dfb2cfc128801986fe38da434059 gcc/config/rs6000/aix71.h ! 6b745fba9cdd32dceedac947b9546281 gcc/config/rs6000/altivec.h ! 3fff5ec90e694e6322e5cbd11c88868e gcc/config/rs6000/altivec.md d93efc51b48185e307aea24e46c4eff1 gcc/config/rs6000/biarch64.h 03512609c1d7d657e1fa9d336feaf3f2 gcc/config/rs6000/cell.md aae8b48d17c545633f55e8f1f6eb9152 gcc/config/rs6000/constraints.md ! bbce05d01c6708b34dfd6f7763dde111 gcc/config/rs6000/crypto.md ! fa6f89a584692f6318e31757ec1fed23 gcc/config/rs6000/darwin.h ! a8cd8165741189f4db452f79084aa690 gcc/config/rs6000/darwin.md 3a653fa4deb3dbcf0c18f756e27d0229 gcc/config/rs6000/darwin.opt ! e2442f7a7d39c650b30c87274f59db87 gcc/config/rs6000/darwin32-biarch.h ! 3aeaaf4c43f3df11b4fac94ff932c8c1 gcc/config/rs6000/darwin64-biarch.h ! ee8492cf2fad0f5e2848d0ef2b95024a gcc/config/rs6000/darwin7.h c5d09b685dc06366de0472e5ed5fa397 gcc/config/rs6000/darwin8.h eced47c9f0f77449e1dfd44057cd5d0f gcc/config/rs6000/default64.h af67d5fc20f3c5695c275e364482816c gcc/config/rs6000/dfp.md *************** d72d32ce10b6b2d9d2b6c5c805ed926f gcc/co *** 3908,3915 **** b5f65d5db893cf3ca33e181b35cae0f3 gcc/config/rs6000/ppc-auxv.h 526c8b9296818a28a1cd31ac9a1aa109 gcc/config/rs6000/ppu_intrinsics.h 877eecd9e05889835e11ba836a13b124 gcc/config/rs6000/predicates.md ! 77d0f1b473496014853d8b243efb869a gcc/config/rs6000/rs6000-builtin.def ! 5fa2869a5a2a2b01d1e57802e59845a0 gcc/config/rs6000/rs6000-c.c 9c6ba7f9ee5978eee63cfee9d7ee9c3a gcc/config/rs6000/rs6000-cpus.def a46ae50924a00ed57cfdf730ebdb4237 gcc/config/rs6000/rs6000-linux.c 2824bf79a0d9619e1952e8d0a90aef04 gcc/config/rs6000/rs6000-modes.def --- 3913,3920 ---- b5f65d5db893cf3ca33e181b35cae0f3 gcc/config/rs6000/ppc-auxv.h 526c8b9296818a28a1cd31ac9a1aa109 gcc/config/rs6000/ppu_intrinsics.h 877eecd9e05889835e11ba836a13b124 gcc/config/rs6000/predicates.md ! 993fb6262c166abbdde3170f8df85f8f gcc/config/rs6000/rs6000-builtin.def ! 14a775bb19acc60b7d0ab79f3d45ad29 gcc/config/rs6000/rs6000-c.c 9c6ba7f9ee5978eee63cfee9d7ee9c3a gcc/config/rs6000/rs6000-cpus.def a46ae50924a00ed57cfdf730ebdb4237 gcc/config/rs6000/rs6000-linux.c 2824bf79a0d9619e1952e8d0a90aef04 gcc/config/rs6000/rs6000-modes.def *************** f69e381c5811309d05da2313dfcec4de gcc/co *** 3917,3925 **** 845709f631fc1fa80de2bbaf192bff40 gcc/config/rs6000/rs6000-passes.def 2dd4af2b037f4e173cfe54b25e845852 gcc/config/rs6000/rs6000-protos.h 914f1dcbd8cea8da94281c72be417b47 gcc/config/rs6000/rs6000-tables.opt ! 72e943266acddce29b27e9983a0e634a gcc/config/rs6000/rs6000.c 9a08a3de8ba2ff32d2468a62795b5d2a gcc/config/rs6000/rs6000.h ! 14846ea0650f5a9b5ef3a5d25fa0141e gcc/config/rs6000/rs6000.md afd7ce6de7b3cecc76e6b46016989da4 gcc/config/rs6000/rs6000.opt 77b278cec2d9c926b955ebfc7075c240 gcc/config/rs6000/rs64.md d83c81edf739619fad01bf4449b95fcf gcc/config/rs6000/rtems.h --- 3922,3930 ---- 845709f631fc1fa80de2bbaf192bff40 gcc/config/rs6000/rs6000-passes.def 2dd4af2b037f4e173cfe54b25e845852 gcc/config/rs6000/rs6000-protos.h 914f1dcbd8cea8da94281c72be417b47 gcc/config/rs6000/rs6000-tables.opt ! 321aa98a64260cf18c33bce5b486c566 gcc/config/rs6000/rs6000.c 9a08a3de8ba2ff32d2468a62795b5d2a gcc/config/rs6000/rs6000.h ! 92a1756be3243a12b94ceeea1336ed69 gcc/config/rs6000/rs6000.md afd7ce6de7b3cecc76e6b46016989da4 gcc/config/rs6000/rs6000.opt 77b278cec2d9c926b955ebfc7075c240 gcc/config/rs6000/rs64.md d83c81edf739619fad01bf4449b95fcf gcc/config/rs6000/rtems.h *************** f0d3ce5c965f201707fb1215fd46f23f gcc/co *** 3935,3945 **** f0120a33d63c5afb74adb0c42642ac8d gcc/config/rs6000/sysv4le.h 3b0a83e6efece3becf37788b124982fa gcc/config/rs6000/t-aix43 4e5e62fc9ca79e8be6334a36d02423cd gcc/config/rs6000/t-aix52 ! f3250b9720d1149346f1ef8e21b52ea9 gcc/config/rs6000/t-darwin64 ! 636250eb91fc5dada4804efcd525fc02 gcc/config/rs6000/t-darwin8 ed7a0e6c85b878f7685d4bb2622fd76f gcc/config/rs6000/t-fprules 9ca620cc07b70b3e81304b66589f5916 gcc/config/rs6000/t-freebsd64 ! 91ab90cceeb86332e94d0767b0e4d5f7 gcc/config/rs6000/t-linux 4cf21115558f0f90c10db918b0981b67 gcc/config/rs6000/t-linux64 71c0a0470047f0171a3bb4c483eb2b72 gcc/config/rs6000/t-linux64bele 489699b655594f05bae0b429fd261edb gcc/config/rs6000/t-linux64le --- 3940,3950 ---- f0120a33d63c5afb74adb0c42642ac8d gcc/config/rs6000/sysv4le.h 3b0a83e6efece3becf37788b124982fa gcc/config/rs6000/t-aix43 4e5e62fc9ca79e8be6334a36d02423cd gcc/config/rs6000/t-aix52 ! 636250eb91fc5dada4804efcd525fc02 gcc/config/rs6000/t-darwin32-biarch ! f3250b9720d1149346f1ef8e21b52ea9 gcc/config/rs6000/t-darwin64-biarch ed7a0e6c85b878f7685d4bb2622fd76f gcc/config/rs6000/t-fprules 9ca620cc07b70b3e81304b66589f5916 gcc/config/rs6000/t-freebsd64 ! bad7ed97afdd49511250c5559228423b gcc/config/rs6000/t-linux 4cf21115558f0f90c10db918b0981b67 gcc/config/rs6000/t-linux64 71c0a0470047f0171a3bb4c483eb2b72 gcc/config/rs6000/t-linux64bele 489699b655594f05bae0b429fd261edb gcc/config/rs6000/t-linux64le *************** f11925c88524d2fd457bf77944da1302 gcc/co *** 3960,3966 **** bf04bdab00faa0daebcc1114606fa4d3 gcc/config/rs6000/titan.md 245d1070b026f6c6557c6c7a5cca5166 gcc/config/rs6000/vec_types.h b9a97bdfc0788fafe96cf53e1dc6822e gcc/config/rs6000/vector.md ! 333fd1d5a46433bc2211d018e48dae1d gcc/config/rs6000/vsx.md 58217d7c0d865013cdfc9ca30ba14670 gcc/config/rs6000/vxworks.h bf3883463c961f7b50a8f9809b6244ee gcc/config/rs6000/vxworksae.h f0bd85bb4b12651513a250e3a8b690bc gcc/config/rs6000/vxworksmils.h --- 3965,3971 ---- bf04bdab00faa0daebcc1114606fa4d3 gcc/config/rs6000/titan.md 245d1070b026f6c6557c6c7a5cca5166 gcc/config/rs6000/vec_types.h b9a97bdfc0788fafe96cf53e1dc6822e gcc/config/rs6000/vector.md ! 0cb67274c51bf699091a3d63389160ee gcc/config/rs6000/vsx.md 58217d7c0d865013cdfc9ca30ba14670 gcc/config/rs6000/vxworks.h bf3883463c961f7b50a8f9809b6244ee gcc/config/rs6000/vxworksae.h f0bd85bb4b12651513a250e3a8b690bc gcc/config/rs6000/vxworksmils.h *************** e2667ed5190f6c4cb2e2350ab53a3cad gcc/co *** 3999,4013 **** e36e51db72c306ef71e637f4e421160a gcc/config/s390/linux.h 2aabb23688b1bb372881fa33dac4bade gcc/config/s390/predicates.md e0584a92b8babb042aec5f0e005b829a gcc/config/s390/s390-builtin-types.def ! 397c727772d8460c9e31ba67f43c1fac gcc/config/s390/s390-builtins.def f86d5ba68c64df7a6369bb3154996154 gcc/config/s390/s390-builtins.h 7c0e57ec187dda594a17e31ae79e98a3 gcc/config/s390/s390-c.c 4029a4a0e90624e1410585d6c8779c73 gcc/config/s390/s390-modes.def 77d0d63703092dc1d1a4d53ac140a588 gcc/config/s390/s390-opts.h f434d3136deeee756a6b76f409b3307b gcc/config/s390/s390-protos.h ! c51495a9dd54a63d742a7eec70bca575 gcc/config/s390/s390.c 1e70e0e6fbcc65aae7749686f7d1904b gcc/config/s390/s390.h ! fa0786eecd80b1bf2ba97ada4989f18a gcc/config/s390/s390.md f8a78ea45721ef9286697422e53c9fe1 gcc/config/s390/s390.opt e580143b15c5efe0617806579ed04d21 gcc/config/s390/s390intrin.h 5d6d963c9d4546945dca3d4a0d7b346a gcc/config/s390/s390x.h --- 4004,4018 ---- e36e51db72c306ef71e637f4e421160a gcc/config/s390/linux.h 2aabb23688b1bb372881fa33dac4bade gcc/config/s390/predicates.md e0584a92b8babb042aec5f0e005b829a gcc/config/s390/s390-builtin-types.def ! 06e74ae9d240c03ec692ca488c9668bd gcc/config/s390/s390-builtins.def f86d5ba68c64df7a6369bb3154996154 gcc/config/s390/s390-builtins.h 7c0e57ec187dda594a17e31ae79e98a3 gcc/config/s390/s390-c.c 4029a4a0e90624e1410585d6c8779c73 gcc/config/s390/s390-modes.def 77d0d63703092dc1d1a4d53ac140a588 gcc/config/s390/s390-opts.h f434d3136deeee756a6b76f409b3307b gcc/config/s390/s390-protos.h ! 3c8f90bcbe066cc173d2f3c04d6b8166 gcc/config/s390/s390.c 1e70e0e6fbcc65aae7749686f7d1904b gcc/config/s390/s390.h ! cd3adae07fd199ba690dd832510c7a3d gcc/config/s390/s390.md f8a78ea45721ef9286697422e53c9fe1 gcc/config/s390/s390.opt e580143b15c5efe0617806579ed04d21 gcc/config/s390/s390intrin.h 5d6d963c9d4546945dca3d4a0d7b346a gcc/config/s390/s390x.h *************** ffe46eb25789e819383f7056319db192 gcc/co *** 4018,4025 **** aa1f20f0bdb28e082598bf25da60508a gcc/config/s390/tpf.md a873487658859e09e9e2e0ac52066baa gcc/config/s390/tpf.opt 52b26b411e453a64d4e9020f558e55d6 gcc/config/s390/vecintrin.h ! c5d231958d155be87b6d3eab27d7dc70 gcc/config/s390/vector.md ! 686cc4ff3834a715aebc60686c6bb2d2 gcc/config/s390/vx-builtins.md 19876f77a242921272972ac5b8bd32d0 gcc/config/s390/x-native a7b4d1de0afdeb90c5b326f9cd36c92b gcc/config/sh/constraints.md ead9ac841ca8c61008b97e54b028e0b5 gcc/config/sh/divcost-analysis --- 4023,4030 ---- aa1f20f0bdb28e082598bf25da60508a gcc/config/s390/tpf.md a873487658859e09e9e2e0ac52066baa gcc/config/s390/tpf.opt 52b26b411e453a64d4e9020f558e55d6 gcc/config/s390/vecintrin.h ! 792049d383ce2fb46f999feda4f355b4 gcc/config/s390/vector.md ! b74ccd1aef76c1da3fee04c7a734e329 gcc/config/s390/vx-builtins.md 19876f77a242921272972ac5b8bd32d0 gcc/config/s390/x-native a7b4d1de0afdeb90c5b326f9cd36c92b gcc/config/sh/constraints.md ead9ac841ca8c61008b97e54b028e0b5 gcc/config/sh/divcost-analysis *************** c31ffac63b4400ac8631d00e76f00896 gcc/co *** 4040,4048 **** d6df61b65eb3b34c88a763b504b2f797 gcc/config/sh/sh-mem.cc b042490c8fd0ce0aa1a3023af990b37e gcc/config/sh/sh-modes.def bc92a4402e9ac7d9b1698969038d5794 gcc/config/sh/sh-protos.h ! 22c3feaa663686845f0f718699785b52 gcc/config/sh/sh.c ! cf0ad69c78666c14af5fce0f52f58e26 gcc/config/sh/sh.h ! f2278c4d2452cfad51aeffea01dc6888 gcc/config/sh/sh.md e2e257f666c9bf9ff1b7e5e0d2ccf358 gcc/config/sh/sh.opt e3c3a7d65ca18d2dc6c6316e6934bffa gcc/config/sh/sh1.md f83ceb056a0ff31082e63450847a0a02 gcc/config/sh/sh4-300.md --- 4045,4053 ---- d6df61b65eb3b34c88a763b504b2f797 gcc/config/sh/sh-mem.cc b042490c8fd0ce0aa1a3023af990b37e gcc/config/sh/sh-modes.def bc92a4402e9ac7d9b1698969038d5794 gcc/config/sh/sh-protos.h ! aa157e9b14d1ca529d4658ce2b5473ff gcc/config/sh/sh.c ! 471150dc08055fd7694be8f075c82e74 gcc/config/sh/sh.h ! 8acb033448d300cf4d5475c98b363882 gcc/config/sh/sh.md e2e257f666c9bf9ff1b7e5e0d2ccf358 gcc/config/sh/sh.opt e3c3a7d65ca18d2dc6c6316e6934bffa gcc/config/sh/sh1.md f83ceb056a0ff31082e63450847a0a02 gcc/config/sh/sh4-300.md *************** ebbdcebbe1adce348931a4c7274c7c51 gcc/co *** 4096,4104 **** 8716c31870255b84a448762c1c3f81c7 gcc/config/sparc/sparc-opts.h f7b50c68732f0e443b61cc30aafcdf2b gcc/config/sparc/sparc-passes.def c9f7a8357767f05db3064cf1cc649b67 gcc/config/sparc/sparc-protos.h ! 2c9270fc7468e6ef504268245f554fba gcc/config/sparc/sparc.c d22b6f70252e19940f3fdf0364e2c312 gcc/config/sparc/sparc.h ! 2722d8527e98c03af8fe4d1229f7fbee gcc/config/sparc/sparc.md 7ed2f6fc79160fe9d611d2b3b0c23d1a gcc/config/sparc/sparc.opt 0ce5501d01413f5bf8569648d53f026b gcc/config/sparc/sparclet.md 7b3ac0af0debfa3fc3e038c25d775e49 gcc/config/sparc/supersparc.md --- 4101,4109 ---- 8716c31870255b84a448762c1c3f81c7 gcc/config/sparc/sparc-opts.h f7b50c68732f0e443b61cc30aafcdf2b gcc/config/sparc/sparc-passes.def c9f7a8357767f05db3064cf1cc649b67 gcc/config/sparc/sparc-protos.h ! 9047931426b3e6cc87a46e3a2124c42f gcc/config/sparc/sparc.c d22b6f70252e19940f3fdf0364e2c312 gcc/config/sparc/sparc.h ! 28c535e4c50036d5df8a76cffb23dd88 gcc/config/sparc/sparc.md 7ed2f6fc79160fe9d611d2b3b0c23d1a gcc/config/sparc/sparc.opt 0ce5501d01413f5bf8569648d53f026b gcc/config/sparc/sparclet.md 7b3ac0af0debfa3fc3e038c25d775e49 gcc/config/sparc/supersparc.md *************** ec846689d23cece17a1e173a290d1bc2 gcc/co *** 4279,4285 **** 79614c6b589cc6a149f809cc6503fb10 gcc/config/xtensa/uclinux.h 19c527eb9ebf583239c86ce3bf541dec gcc/config/xtensa/uclinux.opt db7ecf40e8ff19197f922f4f71de8864 gcc/config/xtensa/xtensa-protos.h ! 27bd469398aa2a0b18d27c22a3c5d162 gcc/config/xtensa/xtensa.c 93e6af33ce49627c14b7a69098b99cd7 gcc/config/xtensa/xtensa.h db001e36ef357c65df228681df018103 gcc/config/xtensa/xtensa.md 1e4b738829612b4836067eb92c840ee7 gcc/config/xtensa/xtensa.opt --- 4284,4290 ---- 79614c6b589cc6a149f809cc6503fb10 gcc/config/xtensa/uclinux.h 19c527eb9ebf583239c86ce3bf541dec gcc/config/xtensa/uclinux.opt db7ecf40e8ff19197f922f4f71de8864 gcc/config/xtensa/xtensa-protos.h ! 9dd7ce799925b9c68e61a5d3a60bf40b gcc/config/xtensa/xtensa.c 93e6af33ce49627c14b7a69098b99cd7 gcc/config/xtensa/xtensa.h db001e36ef357c65df228681df018103 gcc/config/xtensa/xtensa.md 1e4b738829612b4836067eb92c840ee7 gcc/config/xtensa/xtensa.opt *************** d923c48745acfb4f5a776afd53e56885 gcc/co *** 4287,4298 **** df6eddd781169692fd8f2353fedb02c1 gcc/configure.ac 75059ca0d9a4c904710ca39560b641e9 gcc/context.c 9544972a69766328e0ef70c98997c4e7 gcc/context.h ! 9b619bc52057ca0815749b39e7204101 gcc/convert.c 7af1b46eb0a148348d5903c595cfb58b gcc/convert.h 5e83fce2aab1937b6e6565f1c0262e8e gcc/coretypes.h 26c55904a2afbcf2aa43236db5fddcb8 gcc/coverage.c 1078685a2ff587f89142f3c631f04c82 gcc/coverage.h ! 7c69ce58a4c4d73c862f97522bdda3bc gcc/cp/ChangeLog d271e3663538ba1f3281cab3838e92cd gcc/cp/ChangeLog-1993 f5a44adbc05521162350ca409d1d95ce gcc/cp/ChangeLog-1994 ac55db48d964cb5469ff03c1cd3ee04d gcc/cp/ChangeLog-1995 --- 4292,4303 ---- df6eddd781169692fd8f2353fedb02c1 gcc/configure.ac 75059ca0d9a4c904710ca39560b641e9 gcc/context.c 9544972a69766328e0ef70c98997c4e7 gcc/context.h ! fbda33003331f83eae3d17a153b5e304 gcc/convert.c 7af1b46eb0a148348d5903c595cfb58b gcc/convert.h 5e83fce2aab1937b6e6565f1c0262e8e gcc/coretypes.h 26c55904a2afbcf2aa43236db5fddcb8 gcc/coverage.c 1078685a2ff587f89142f3c631f04c82 gcc/coverage.h ! b52f1cd3b7ada3bd9be12e2d7e8f63b0 gcc/cp/ChangeLog d271e3663538ba1f3281cab3838e92cd gcc/cp/ChangeLog-1993 f5a44adbc05521162350ca409d1d95ce gcc/cp/ChangeLog-1994 ac55db48d964cb5469ff03c1cd3ee04d gcc/cp/ChangeLog-1995 *************** c1c7801b9b0f379e702a4f6cb83972e7 gcc/cp *** 4321,4332 **** 9aa3cd9f75c785de9f51446e3f295515 gcc/cp/ChangeLog.tree-ssa 52380899f9da4a59c3b99da38218f81a gcc/cp/Make-lang.in a664e5da3668f808636e156b4e59d16c gcc/cp/NEWS ! f150f73813cfbc6bd449f41ba06e6207 gcc/cp/call.c e370fe34672df8201043ba1a2e1104b6 gcc/cp/cfns.gperf c4d6f3b7d0a505fbe74e29774d11cfe9 gcc/cp/cfns.h ! a89bcadf0531da57730a450b69e8cab3 gcc/cp/class.c ! d7ab06410b296f55856425add1bfd26d gcc/cp/config-lang.in ! 27b3af808c59f72a8f5de9da034d8666 gcc/cp/constexpr.c 307f99a8e6084326c45980647f02b7e1 gcc/cp/constraint.cc 56aa0140f84f897feeb4ce54bd6e6f46 gcc/cp/cp-array-notation.c 38146ed098d4c26f2e487034266adf13 gcc/cp/cp-cilkplus.c --- 4326,4337 ---- 9aa3cd9f75c785de9f51446e3f295515 gcc/cp/ChangeLog.tree-ssa 52380899f9da4a59c3b99da38218f81a gcc/cp/Make-lang.in a664e5da3668f808636e156b4e59d16c gcc/cp/NEWS ! 955c423a1afc710e2eb578368af020d0 gcc/cp/call.c e370fe34672df8201043ba1a2e1104b6 gcc/cp/cfns.gperf c4d6f3b7d0a505fbe74e29774d11cfe9 gcc/cp/cfns.h ! b3038015851d6de1b411b40135062074 gcc/cp/class.c ! afd0867fa97825df798b71323901a097 gcc/cp/config-lang.in ! ac78f918ff2852383dd0cc7a3dab2b4b gcc/cp/constexpr.c 307f99a8e6084326c45980647f02b7e1 gcc/cp/constraint.cc 56aa0140f84f897feeb4ce54bd6e6f46 gcc/cp/cp-array-notation.c 38146ed098d4c26f2e487034266adf13 gcc/cp/cp-cilkplus.c *************** c6462a1b73c2a072af8c94f300264afc gcc/cp *** 4336,4357 **** 4b50cb9e09af605dfd2618a77668ba27 gcc/cp/cp-objcp-common.c 329495300d80f28020460da01bd495f3 gcc/cp/cp-objcp-common.h aa36e3e3dbb56aa91e4c9c7b03774b50 gcc/cp/cp-tree.def ! bb96b5349553a59bd3b539b06de1a825 gcc/cp/cp-tree.h 41d94f2c081c6ecf6c7c7780b061d7ce gcc/cp/cp-ubsan.c f7eded6aa12ab22c0f3f38614463c9e6 gcc/cp/cvt.c ffc3a23e271c5e11d25ac613e8d2f152 gcc/cp/cxx-pretty-print.c 546dc862de2fc3919db2d2985e101844 gcc/cp/cxx-pretty-print.h ! 25bab9a9459378b1073f636450fc019e gcc/cp/decl.c c6b416fb9f920b607825dba7ef8d1a48 gcc/cp/decl.h ! 34de997aceb01b5338836749b7527e63 gcc/cp/decl2.c aa98548ee09751a5b70c5eb31f1c6417 gcc/cp/dump.c 8cc7a32adc714359c29ef8ce38f806a7 gcc/cp/error.c f1a3a5d0ae01ff65e207eb645987e3d4 gcc/cp/except.c 64d885b72c1c50ab9956e994bd7157a4 gcc/cp/expr.c da79ddc6be4fafc84a957cfd070a5c24 gcc/cp/friend.c 21ab402dce77246d6a7766b067b429c8 gcc/cp/g++spec.c ! c933a38f7ed1e601d2cb68170970995a gcc/cp/init.c ! 531818193041efe08db8fffe794090ea gcc/cp/lambda.c bca5f8c2bd65c2ffd939d16f089e49dc gcc/cp/lang-specs.h 78263a37da49248fcffe573ed7d84534 gcc/cp/lex.c fbfb6bc61d27f625485f113193c8bc76 gcc/cp/logic.cc --- 4341,4362 ---- 4b50cb9e09af605dfd2618a77668ba27 gcc/cp/cp-objcp-common.c 329495300d80f28020460da01bd495f3 gcc/cp/cp-objcp-common.h aa36e3e3dbb56aa91e4c9c7b03774b50 gcc/cp/cp-tree.def ! 05b78f1e2a2a0e55e4ad94c507eca104 gcc/cp/cp-tree.h 41d94f2c081c6ecf6c7c7780b061d7ce gcc/cp/cp-ubsan.c f7eded6aa12ab22c0f3f38614463c9e6 gcc/cp/cvt.c ffc3a23e271c5e11d25ac613e8d2f152 gcc/cp/cxx-pretty-print.c 546dc862de2fc3919db2d2985e101844 gcc/cp/cxx-pretty-print.h ! 3e1932e1a28f1002716d52532420157f gcc/cp/decl.c c6b416fb9f920b607825dba7ef8d1a48 gcc/cp/decl.h ! 19f786fbb3706848f41774b7def19233 gcc/cp/decl2.c aa98548ee09751a5b70c5eb31f1c6417 gcc/cp/dump.c 8cc7a32adc714359c29ef8ce38f806a7 gcc/cp/error.c f1a3a5d0ae01ff65e207eb645987e3d4 gcc/cp/except.c 64d885b72c1c50ab9956e994bd7157a4 gcc/cp/expr.c da79ddc6be4fafc84a957cfd070a5c24 gcc/cp/friend.c 21ab402dce77246d6a7766b067b429c8 gcc/cp/g++spec.c ! 2c93e8240af80c61c156670dc2cb47b2 gcc/cp/init.c ! 8f521043c08398097dd0862e6bf38be6 gcc/cp/lambda.c bca5f8c2bd65c2ffd939d16f089e49dc gcc/cp/lang-specs.h 78263a37da49248fcffe573ed7d84534 gcc/cp/lex.c fbfb6bc61d27f625485f113193c8bc76 gcc/cp/logic.cc *************** c8cdc512b8cfd0e21fed9cc8723ccf5f gcc/cp *** 4360,4379 **** f53a410cd2295879d7e1ac68f771fd6e gcc/cp/name-lookup.c 3c91f835c3688bb59986de0664d535eb gcc/cp/name-lookup.h f0eccfb2b6cc10b6838fc80d7d6cd1e4 gcc/cp/operators.def ! a3fa9e7864e7529742617cefea0ff8d9 gcc/cp/optimize.c ! df23b954d2973099e6aced491b56ae29 gcc/cp/parser.c 80b4f9350fbe5bd90898e0758266098c gcc/cp/parser.h ! cae697862fdef8100c6f96aa3546be63 gcc/cp/pt.c ee5df732d6ad1d51078b5d0f67a784b9 gcc/cp/ptree.c db936b1b0b3f9a6d128c05631887c312 gcc/cp/repo.c b78204514ca7ae7bce11a6af84ab55ce gcc/cp/rtti.c 2310595b3287a46745ac14c9a226f3f0 gcc/cp/search.c ! bcfe32c47f509aca54fe1e49d54df2c9 gcc/cp/semantics.c bf627e0cc08313ab3599ceff80a80316 gcc/cp/tree.c 9e5151a4798c91f91d0e0b4415324a77 gcc/cp/type-utils.h ! 4f41af2b364e55156052ca5aaeb60ec4 gcc/cp/typeck.c 32e5c31100b95a8eba4fc199787ad510 gcc/cp/typeck2.c ! c706912cef452d7ab9a54976efc128e5 gcc/cp/vtable-class-hierarchy.c b51155275074539477f71e8e53c46d2d gcc/cppbuiltin.c a55eaea7c2160d3b2cb87ad7366a67b6 gcc/cppbuiltin.h 68b7c81784975dda5f426be9dcd17b45 gcc/cppdefault.c --- 4365,4384 ---- f53a410cd2295879d7e1ac68f771fd6e gcc/cp/name-lookup.c 3c91f835c3688bb59986de0664d535eb gcc/cp/name-lookup.h f0eccfb2b6cc10b6838fc80d7d6cd1e4 gcc/cp/operators.def ! 51b3b4e7a963b00e95f39c3051a5e2f5 gcc/cp/optimize.c ! 8e71ee52e697641e0e9de5f1187cc83a gcc/cp/parser.c 80b4f9350fbe5bd90898e0758266098c gcc/cp/parser.h ! d2f66f064c1637e58b661099c88c7c63 gcc/cp/pt.c ee5df732d6ad1d51078b5d0f67a784b9 gcc/cp/ptree.c db936b1b0b3f9a6d128c05631887c312 gcc/cp/repo.c b78204514ca7ae7bce11a6af84ab55ce gcc/cp/rtti.c 2310595b3287a46745ac14c9a226f3f0 gcc/cp/search.c ! c741a3ea061a10ad8497c7703ecb4641 gcc/cp/semantics.c bf627e0cc08313ab3599ceff80a80316 gcc/cp/tree.c 9e5151a4798c91f91d0e0b4415324a77 gcc/cp/type-utils.h ! cdcf74576ae3cfa695734b9f55e4f01f gcc/cp/typeck.c 32e5c31100b95a8eba4fc199787ad510 gcc/cp/typeck2.c ! 00b3ca36dab6cef85225430714305ab0 gcc/cp/vtable-class-hierarchy.c b51155275074539477f71e8e53c46d2d gcc/cppbuiltin.c a55eaea7c2160d3b2cb87ad7366a67b6 gcc/cppbuiltin.h 68b7c81784975dda5f426be9dcd17b45 gcc/cppdefault.c *************** afeedee11208d03a5103efee41fb41b2 gcc/db *** 4392,4405 **** e353eaa0cbb9c1669a29d1c1b1f87b1e gcc/dbgcnt.h 26e8fcbaefe1467cb976012b7cf29983 gcc/dbxout.c 37f4371fdda11b2c37dc0497b272a958 gcc/dbxout.h ! 2f77b1763af6d6cc3e3c953b23c85e35 gcc/dce.c 0da8020721677130afbad8bd7cb89e79 gcc/dce.h f780bb3b9b6deac46cc975873edef47e gcc/ddg.c f8909b74975d73c1a18507a15c0c2384 gcc/ddg.h c3268c71b43e48a8d40f7d5bd251ae36 gcc/debug.c 1729dad25a1ad59fb6a0a5c9dfb1eb47 gcc/debug.h 6f45ae58d7c9f3dfa61ea12d76962163 gcc/defaults.h ! 484f1feceb510df735d12cec5df4df44 gcc/df-core.c 94a63ea3deeac1bd2bceebcdafe5e7ca gcc/df-problems.c efd8fee823a721c81494884cc7fcd474 gcc/df-scan.c 89a96926ab1cc41d1a07ab739a9d3e92 gcc/df.h --- 4397,4410 ---- e353eaa0cbb9c1669a29d1c1b1f87b1e gcc/dbgcnt.h 26e8fcbaefe1467cb976012b7cf29983 gcc/dbxout.c 37f4371fdda11b2c37dc0497b272a958 gcc/dbxout.h ! c2417e088c2241482f4705a1d4851c49 gcc/dce.c 0da8020721677130afbad8bd7cb89e79 gcc/dce.h f780bb3b9b6deac46cc975873edef47e gcc/ddg.c f8909b74975d73c1a18507a15c0c2384 gcc/ddg.h c3268c71b43e48a8d40f7d5bd251ae36 gcc/debug.c 1729dad25a1ad59fb6a0a5c9dfb1eb47 gcc/debug.h 6f45ae58d7c9f3dfa61ea12d76962163 gcc/defaults.h ! f771929546d497d82e6f7e98ce3bc607 gcc/df-core.c 94a63ea3deeac1bd2bceebcdafe5e7ca gcc/df-problems.c efd8fee823a721c81494884cc7fcd474 gcc/df-scan.c 89a96926ab1cc41d1a07ab739a9d3e92 gcc/df.h *************** ebc01257daa0725663692c5283f9066d gcc/do *** 4421,4458 **** 0e9464bec47974f6c152e2f7fcdd7c54 gcc/doc/configterms.texi 4d2e260f57c2a56aab4b7539aa8ea7a9 gcc/doc/contrib.texi d2ab741503a5629e8b4a70a0e5335637 gcc/doc/contribute.texi ! d8562ae8507e7c41eb2422ce4c3ab647 gcc/doc/cpp.1 ! c193703b3bfb9ee1eb895c01532834b2 gcc/doc/cpp.info 265e1f73a91ecf4f8c0fec7d753f3a5d gcc/doc/cpp.texi e260807f252068741e2ebfdaa0e84349 gcc/doc/cppdiropts.texi 35e9afd06835a4037daf73de3e364d81 gcc/doc/cppenv.texi ! cafab9418d86782eabd03ce5a4768fe0 gcc/doc/cppinternals.info 1f296e408d348921b3ca6959d5cdfe5b gcc/doc/cppinternals.texi 3229dc0c44fab51cc291566148d79e6e gcc/doc/cppopts.texi 13eb634c50488bcf40424e0890a26326 gcc/doc/cppwarnopts.texi ! 3bfea55f2fef6a6bbf7caf3a917bb81f gcc/doc/extend.texi 198def664e7cfe4a4cc79c8cae55175d gcc/doc/fragments.texi 0f2077f3962ccb1d6c5c55cac48e1695 gcc/doc/frontends.texi ! 3528e8b8718e81125053d23737cfe415 gcc/doc/fsf-funding.7 ! 77de42a9819d8c6c6ce1985b2e6bfacd gcc/doc/g++.1 ! 77de42a9819d8c6c6ce1985b2e6bfacd gcc/doc/gcc.1 ! d7f7d75a9183cd2fa479b27edfcc0fbc gcc/doc/gcc.info 82943cac2e651592a301c2081eda9666 gcc/doc/gcc.texi ! 4d37bb8b4bbe15bbe3d159b35fb2326c gcc/doc/gccinstall.info ! 872a983b3f939df674b423dfffbb9c6a gcc/doc/gccint.info 1baadd71cb074eb858078e79360a7f7a gcc/doc/gccint.texi ! 09f1bbffa196b6dbd6cd5a6f81e180f9 gcc/doc/gcov-dump.1 b8d24f76649917a88a4a7b21cd032a0f gcc/doc/gcov-dump.texi ! 3ba0b94ec38377edb2fc1ca75df56cb8 gcc/doc/gcov-tool.1 800ae82031d4de3b2a6fd13cb2b0a48e gcc/doc/gcov-tool.texi ! 42d545c1d21c2bb21e9734e59b08a8ec gcc/doc/gcov.1 4125c70e12ee6d409b4bba1cf2eef2e9 gcc/doc/gcov.texi 43a3b8154dcc4ca459ea567f9060b4d4 gcc/doc/generic.texi ! 1b64bda7be5f28f725d8f6ab5d8bdf22 gcc/doc/gfdl.7 ! 697d36e4b477875eae3b3b5e098307c3 gcc/doc/gfortran.1 30559f39145bc73dde9cee3dd7ac9d3d gcc/doc/gimple.texi 290370669f02bef1502ada9273e5261f gcc/doc/gnu.texi ! 1ae33237ea5618396295ce9a51a060a0 gcc/doc/gpl.7 2581b3abd7f482fed6c88e2989a1339d gcc/doc/gty.texi aedde02cf24a26a69cabaf5846321364 gcc/doc/headerdirs.texi f197b98dd6f8c45086532f4a26a50328 gcc/doc/hostconfig.texi --- 4426,4463 ---- 0e9464bec47974f6c152e2f7fcdd7c54 gcc/doc/configterms.texi 4d2e260f57c2a56aab4b7539aa8ea7a9 gcc/doc/contrib.texi d2ab741503a5629e8b4a70a0e5335637 gcc/doc/contribute.texi ! f9dd70f8e777ebeb5f4af5385cd59959 gcc/doc/cpp.1 ! e58b3df4d4ad956836194a5bd01ae1fb gcc/doc/cpp.info 265e1f73a91ecf4f8c0fec7d753f3a5d gcc/doc/cpp.texi e260807f252068741e2ebfdaa0e84349 gcc/doc/cppdiropts.texi 35e9afd06835a4037daf73de3e364d81 gcc/doc/cppenv.texi ! 66fd3bb37bc56ecbbad599d9c60658d2 gcc/doc/cppinternals.info 1f296e408d348921b3ca6959d5cdfe5b gcc/doc/cppinternals.texi 3229dc0c44fab51cc291566148d79e6e gcc/doc/cppopts.texi 13eb634c50488bcf40424e0890a26326 gcc/doc/cppwarnopts.texi ! c7f04565eb0d9ee88db1c2ff932e5e0c gcc/doc/extend.texi 198def664e7cfe4a4cc79c8cae55175d gcc/doc/fragments.texi 0f2077f3962ccb1d6c5c55cac48e1695 gcc/doc/frontends.texi ! 90ec81158fedea9ae709aafe21954a70 gcc/doc/fsf-funding.7 ! e2d82b2e2af692bdc91b57c4d69e3a18 gcc/doc/g++.1 ! e2d82b2e2af692bdc91b57c4d69e3a18 gcc/doc/gcc.1 ! 11b696ff03c8291e280b1fa8e556034a gcc/doc/gcc.info 82943cac2e651592a301c2081eda9666 gcc/doc/gcc.texi ! 9241526e8a39388a753c437d1ed53ede gcc/doc/gccinstall.info ! 7580bf1e6a3c6e7128271be197333f84 gcc/doc/gccint.info 1baadd71cb074eb858078e79360a7f7a gcc/doc/gccint.texi ! a193e94aecc3c555c164e6da0f905335 gcc/doc/gcov-dump.1 b8d24f76649917a88a4a7b21cd032a0f gcc/doc/gcov-dump.texi ! b2144a86255edd45901279acc0f1923f gcc/doc/gcov-tool.1 800ae82031d4de3b2a6fd13cb2b0a48e gcc/doc/gcov-tool.texi ! 7238cfdebb3bf1ef876b7b176be674da gcc/doc/gcov.1 4125c70e12ee6d409b4bba1cf2eef2e9 gcc/doc/gcov.texi 43a3b8154dcc4ca459ea567f9060b4d4 gcc/doc/generic.texi ! b56c98ff65c9a38d01f7543910cf51a1 gcc/doc/gfdl.7 ! 6d4bcb6a2de54f812e5410c2843ce801 gcc/doc/gfortran.1 30559f39145bc73dde9cee3dd7ac9d3d gcc/doc/gimple.texi 290370669f02bef1502ada9273e5261f gcc/doc/gnu.texi ! 2f2f0f3b6eeedfdc363a9e5a2fe35669 gcc/doc/gpl.7 2581b3abd7f482fed6c88e2989a1339d gcc/doc/gty.texi aedde02cf24a26a69cabaf5846321364 gcc/doc/headerdirs.texi f197b98dd6f8c45086532f4a26a50328 gcc/doc/hostconfig.texi *************** b82b1143f78f373e3c76f6958d830869 gcc/do *** 4467,4473 **** ca9e57f076db155a030af10d129119f7 gcc/doc/install.texi aceb2e24bb637b8669329aa6ddc2c80e gcc/doc/install.texi2html 8742acc0c4a46ac5075fbd7d6e95db10 gcc/doc/interface.texi ! 1b4d64407e259415f7c15adff8171d93 gcc/doc/invoke.texi 90ac7735caa268a14f96ad68d78372aa gcc/doc/languages.texi 084981d596106acaf75844a1d5d7d3a0 gcc/doc/libgcc.texi 67bc388db0ea8fcd11e555283d08546a gcc/doc/loop.texi --- 4472,4478 ---- ca9e57f076db155a030af10d129119f7 gcc/doc/install.texi aceb2e24bb637b8669329aa6ddc2c80e gcc/doc/install.texi2html 8742acc0c4a46ac5075fbd7d6e95db10 gcc/doc/interface.texi ! 7cbd502a787d253aac2f63f7b725cd5c gcc/doc/invoke.texi 90ac7735caa268a14f96ad68d78372aa gcc/doc/languages.texi 084981d596106acaf75844a1d5d7d3a0 gcc/doc/libgcc.texi 67bc388db0ea8fcd11e555283d08546a gcc/doc/loop.texi *************** b4c05b523f1b3f1736e962a6224a007e gcc/do *** 4483,4489 **** b96e0a15eff3d07f71b395d59f799798 gcc/doc/portability.texi 34d324bf360cff3f772929e924837575 gcc/doc/rtl.texi fad65170a3811a78b6146dd2d3f6e93c gcc/doc/service.texi ! c6c1fabb7733f32f532abad39f392b4b gcc/doc/sourcebuild.texi 415434ff17f5a40c97dc2202dbc0d5aa gcc/doc/standards.texi fb7bd577c982f8349ba88f35bf440ac8 gcc/doc/tm.texi 03af348b233c83daed381e9fcc683008 gcc/doc/tm.texi.in --- 4488,4494 ---- b96e0a15eff3d07f71b395d59f799798 gcc/doc/portability.texi 34d324bf360cff3f772929e924837575 gcc/doc/rtl.texi fad65170a3811a78b6146dd2d3f6e93c gcc/doc/service.texi ! 97375d4bef458ee48f936a9a838c10de gcc/doc/sourcebuild.texi 415434ff17f5a40c97dc2202dbc0d5aa gcc/doc/standards.texi fb7bd577c982f8349ba88f35bf440ac8 gcc/doc/tm.texi 03af348b233c83daed381e9fcc683008 gcc/doc/tm.texi.in *************** d38fa1e575d131ba18493ab2b1a17386 gcc/do *** 4497,4509 **** c9c017c1a6d182db465e420a401dc5e4 gcc/domwalk.h fc595b2b68f9d9e19805b1a15e37c623 gcc/double-int.c d3c114e68e1cb29ad92ba50115cb0882 gcc/double-int.h ! 90c03ab1cd8657e0f4526acfe0738b43 gcc/dse.c 46a8e04aace8f43c10dc450d21d70288 gcc/dumpfile.c 746d14943c5f560f556cc6ba9aaf7715 gcc/dumpfile.h b22eec93f2e186efa3c5621fd80c304d gcc/dwarf2asm.c f7caa5023e329cc7eb3c06fd9ceb9bed gcc/dwarf2asm.h 6cddd6e1d295b0dab3d3303ce424838b gcc/dwarf2cfi.c ! 74a8b7044153f1e48f7254f7a81945ad gcc/dwarf2out.c 3759ab65f22dade947ac51b51aeda4b3 gcc/dwarf2out.h efca4a45c30ac633725951382e487ebb gcc/edit-context.c 7f9fbe6415299ef034385a7ab3cfabd3 gcc/edit-context.h --- 4502,4514 ---- c9c017c1a6d182db465e420a401dc5e4 gcc/domwalk.h fc595b2b68f9d9e19805b1a15e37c623 gcc/double-int.c d3c114e68e1cb29ad92ba50115cb0882 gcc/double-int.h ! 879ee3ec9d83f1815303d0f168f9420e gcc/dse.c 46a8e04aace8f43c10dc450d21d70288 gcc/dumpfile.c 746d14943c5f560f556cc6ba9aaf7715 gcc/dumpfile.h b22eec93f2e186efa3c5621fd80c304d gcc/dwarf2asm.c f7caa5023e329cc7eb3c06fd9ceb9bed gcc/dwarf2asm.h 6cddd6e1d295b0dab3d3303ce424838b gcc/dwarf2cfi.c ! d745da814319fb2b4d17ae5b68056381 gcc/dwarf2out.c 3759ab65f22dade947ac51b51aeda4b3 gcc/dwarf2out.h efca4a45c30ac633725951382e487ebb gcc/edit-context.c 7f9fbe6415299ef034385a7ab3cfabd3 gcc/edit-context.h *************** c6494bf2336d8b5422b05e5d60b01369 gcc/em *** 4513,4541 **** cf1e025818ca472f9a1c116e67ef4cc3 gcc/errors.h 4e6a38bef0b4a58dcbba54f83aa33877 gcc/et-forest.c 1e361eb1654178076a228080dd608bb6 gcc/et-forest.h ! ded527f19a4233b5404c3d551f9d29e2 gcc/except.c d0a7dc02daccbdcdd63a1d0f877c6af5 gcc/except.h 2ea49737d7b49d3ecee03ec6ba2dfd2e gcc/exec-tool.in ! f20130a1d04970609f42de8b3c8aed6a gcc/explow.c d252cd5dd9657304bdc0002539b65a19 gcc/explow.h ! 3085b2296b51d824f0f15a390bbf09e7 gcc/expmed.c b583afc565dc4b1f111f4cc1731bef2a gcc/expmed.h ! e756ec7157b0a11506b167ac5c9d0622 gcc/expr.c c86cc2531fcf8b1ada0373572b1b7acf gcc/expr.h f6f78aeb7c8ce93cfb147c8f3168a779 gcc/fibonacci_heap.c 3ade009fde9a4924090332142873a749 gcc/fibonacci_heap.h 1b56f5236cd854fd307e3ded0653ddab gcc/file-find.c 895775a7ab087cc00a99bc0b23c6ec6d gcc/file-find.h ! e698bd2ce1a738797b133ec36fad6048 gcc/final.c 4d6d0d3ed9459bd59fb8b34e3f732bd7 gcc/fixed-value.c 719b77e854e9ffae1cb86430cd68de4e gcc/fixed-value.h 397b3c43b5f2649a6c9ca5816cb18f4a gcc/flag-types.h cd76e0eb7ed6b4f0486461f0d1948045 gcc/flags.h 6927943dca40ac5f7ae356c063919105 gcc/fold-const-call.c 0da9f50d2a25c495dd6e295346612b51 gcc/fold-const-call.h ! a9d62bc95f4b8d15071d8cfcb9841b14 gcc/fold-const.c 3dee9f07878a132cee302c04066982f0 gcc/fold-const.h ! 7094687903296b6c0f9060a33cfd23b5 gcc/fortran/ChangeLog 3330102ad3a0217cba963be6b5eefd58 gcc/fortran/ChangeLog-2002 d000ab985b1eeb1ad5749f98b8fef99f gcc/fortran/ChangeLog-2003 bf42f94f0c51dcc7d8051cc7fda1efdc gcc/fortran/ChangeLog-2004 --- 4518,4546 ---- cf1e025818ca472f9a1c116e67ef4cc3 gcc/errors.h 4e6a38bef0b4a58dcbba54f83aa33877 gcc/et-forest.c 1e361eb1654178076a228080dd608bb6 gcc/et-forest.h ! 281be659a65ffe28bda718c5a6fb86cb gcc/except.c d0a7dc02daccbdcdd63a1d0f877c6af5 gcc/except.h 2ea49737d7b49d3ecee03ec6ba2dfd2e gcc/exec-tool.in ! 53ee5b809af77821cc48b74afadbae15 gcc/explow.c d252cd5dd9657304bdc0002539b65a19 gcc/explow.h ! 2aa701f89f8a5c689359b68a2f8be7a2 gcc/expmed.c b583afc565dc4b1f111f4cc1731bef2a gcc/expmed.h ! 564ebbd9865c8f922774fe99cd846607 gcc/expr.c c86cc2531fcf8b1ada0373572b1b7acf gcc/expr.h f6f78aeb7c8ce93cfb147c8f3168a779 gcc/fibonacci_heap.c 3ade009fde9a4924090332142873a749 gcc/fibonacci_heap.h 1b56f5236cd854fd307e3ded0653ddab gcc/file-find.c 895775a7ab087cc00a99bc0b23c6ec6d gcc/file-find.h ! afa3e97d350419d057e75559da608e75 gcc/final.c 4d6d0d3ed9459bd59fb8b34e3f732bd7 gcc/fixed-value.c 719b77e854e9ffae1cb86430cd68de4e gcc/fixed-value.h 397b3c43b5f2649a6c9ca5816cb18f4a gcc/flag-types.h cd76e0eb7ed6b4f0486461f0d1948045 gcc/flags.h 6927943dca40ac5f7ae356c063919105 gcc/fold-const-call.c 0da9f50d2a25c495dd6e295346612b51 gcc/fold-const-call.h ! da03916b2e506764391a7837a66ecd18 gcc/fold-const.c 3dee9f07878a132cee302c04066982f0 gcc/fold-const.h ! c7667356749a3c64600ed821654edf0b gcc/fortran/ChangeLog 3330102ad3a0217cba963be6b5eefd58 gcc/fortran/ChangeLog-2002 d000ab985b1eeb1ad5749f98b8fef99f gcc/fortran/ChangeLog-2003 bf42f94f0c51dcc7d8051cc7fda1efdc gcc/fortran/ChangeLog-2004 *************** a71efd3e199a80ee07c7f350cc8fcf91 gcc/fo *** 4553,4564 **** 87a1607d67d7b571432a0e83b1e4aabf gcc/fortran/ChangeLog-2016 9e0636f92243fb9b3480e27cefc96749 gcc/fortran/ChangeLog.ptr f118c66e409492da0bfe1c57a83276c2 gcc/fortran/Make-lang.in ! ae3ae134fa3c8c1fd24c6a2c6f5dbb86 gcc/fortran/arith.c 9e52ef7b47604fcff001ed312efc53b5 gcc/fortran/arith.h b46c616c84cd264971322a53adeb07f2 gcc/fortran/array.c f32f20357bba1a9cc926911dc98c1cfc gcc/fortran/bbt.c ! 0f0534c9b10be1b122cc5176e6bb866f gcc/fortran/check.c ! 132d0ed0514568cbb856ba1f5a68317e gcc/fortran/class.c bb0ee5873d155869e95ebb483458cb8e gcc/fortran/config-lang.in 1ed808fc4a4d991803dfde347ddce84a gcc/fortran/constructor.c 1593dbd0a6495b5ebd71396758aacf2b gcc/fortran/constructor.h --- 4558,4569 ---- 87a1607d67d7b571432a0e83b1e4aabf gcc/fortran/ChangeLog-2016 9e0636f92243fb9b3480e27cefc96749 gcc/fortran/ChangeLog.ptr f118c66e409492da0bfe1c57a83276c2 gcc/fortran/Make-lang.in ! 078a6e89514296d592001d5bc3b20008 gcc/fortran/arith.c 9e52ef7b47604fcff001ed312efc53b5 gcc/fortran/arith.h b46c616c84cd264971322a53adeb07f2 gcc/fortran/array.c f32f20357bba1a9cc926911dc98c1cfc gcc/fortran/bbt.c ! 154495690830d56e6cdc9d218bc4360a gcc/fortran/check.c ! 0d7976186a788bb18e350cf007227b59 gcc/fortran/class.c bb0ee5873d155869e95ebb483458cb8e gcc/fortran/config-lang.in 1ed808fc4a4d991803dfde347ddce84a gcc/fortran/constructor.c 1593dbd0a6495b5ebd71396758aacf2b gcc/fortran/constructor.h *************** bb0ee5873d155869e95ebb483458cb8e gcc/fo *** 4567,4638 **** fa144458c4bca9ea098fcc49e69c20cc gcc/fortran/cpp.h 37ef55690b7643959b9d6ad02500a84c gcc/fortran/data.c 5d6574d0968f27afb4f3f41972e5f971 gcc/fortran/data.h ! 571b32a223e3f78fde99777de8f47019 gcc/fortran/decl.c f8486e9dde69b3b606bbc76192b374ab gcc/fortran/dependency.c 6933dfd689c80beb5bb29d30026a34a1 gcc/fortran/dependency.h c3fed47839886fe87dd3656caa11c7e5 gcc/fortran/dump-parse-tree.c 14ccfb214cc78c6632e78ebc5d43e4f2 gcc/fortran/error.c ! 8007b5ce5cf7a755dc04ef605ee0a6e7 gcc/fortran/expr.c 05f704e72952b3ef3b591809d8bb33cd gcc/fortran/f95-lang.c ! cff55b11ddb846a7bac0a92cd82035d5 gcc/fortran/frontend-passes.c 1aa4f0a9593c4082dfc8a446a8021662 gcc/fortran/gfc-diagnostic.def ae757ab385911de35e92e949d47d76d9 gcc/fortran/gfc-internals.texi ! 0670d0873d2e6537d744b15d180b29b3 gcc/fortran/gfortran.h ! 38e3959295c211641f5f132d94f3e940 gcc/fortran/gfortran.info 2c8f2a8e4a156cc2c60a93eed11d1a78 gcc/fortran/gfortran.texi 258ff078d7fd588b1db5276e388b42d3 gcc/fortran/gfortranspec.c ! b52e6da89148dbd5946757db4b5a2662 gcc/fortran/interface.c ! 81504f550fc73cbddec9f7ce09c9db54 gcc/fortran/intrinsic.c f5a621f4d92bd975f19fa58c09b9e6db gcc/fortran/intrinsic.h ba1407cb79153040295068873f19ccc1 gcc/fortran/intrinsic.texi ! a349d8cead3c7c976d6e938e97cf3c66 gcc/fortran/invoke.texi ! 276b063b9f15c5fdde418b089100ba90 gcc/fortran/io.c b75de9ab8d416c7abd953e5b7b3f3993 gcc/fortran/ioparm.def ! 2188c509e492d35bc0022016b1e92f20 gcc/fortran/iresolve.c 8093b2b38a01c2e488976f991dd1f954 gcc/fortran/iso-c-binding.def a84b351eca744eb4326cdcf48ed2d447 gcc/fortran/iso-fortran-env.def b6a48d929dc4bab485565b69477b39ba gcc/fortran/lang-specs.h ! 143689d60ddc29b5aceba7f734381371 gcc/fortran/lang.opt 645bd6455816a65c53807b5362dfec6f gcc/fortran/libgfortran.h ! 072c3d442dbb3ab21fcc48490405974a gcc/fortran/match.c 00a03b372a4378e1c07376ecf0602940 gcc/fortran/match.h d7e915937eda00d735c03407c30c147a gcc/fortran/matchexp.c 87a743f124dd99426032cc7ad19284bb gcc/fortran/mathbuiltins.def 9d431851867d6a83a9328224ab69473f gcc/fortran/misc.c ! bbb98eaa398cd9ec8b02b01252a2ef93 gcc/fortran/module.c ! d6bb732ba1b9062cba0f41c00ab132b2 gcc/fortran/openmp.c e8210239d0ae38ef26cbcec563bb173a gcc/fortran/options.c ! cd92ca4dfa37306a53dad87d839f8d6e gcc/fortran/parse.c e19e43330242c8950da01afa94a4f04b gcc/fortran/parse.h ! 74c55605612339acc2b2d8086b78e295 gcc/fortran/primary.c ! 2529fa4732aeaf414437793d751171b6 gcc/fortran/resolve.c 7ada4167f5cb66e95dc80a102e6c3b7a gcc/fortran/scanner.c 6761df883b8094d737206a8ba1c9f089 gcc/fortran/scanner.h 024bffdaa3734adc0e16653b61d7ef3f gcc/fortran/simplify.c 764d2fa05e4399ec39d47288d3bf78be gcc/fortran/st.c ! eee2f6e10a6e07b0fa4798ff189a943c gcc/fortran/symbol.c ! 04454a5aa04e742aa88cf053d40e0357 gcc/fortran/target-memory.c 1a603863c873416a3e2a080510768dd2 gcc/fortran/target-memory.h ! 5d2dab0589513e2edb8f772b2b3d41a5 gcc/fortran/trans-array.c ab7472b590e1c49b9167f2f0516f3aea gcc/fortran/trans-array.h f982772425e7d9a65cbb819062be79e3 gcc/fortran/trans-common.c a2301830f80d9a2d2fa804e044559cf1 gcc/fortran/trans-const.c f3cd9953e1d7b41f8b4340256b01d9db gcc/fortran/trans-const.h ! 545e0bb2822d685b876b5037da863ab5 gcc/fortran/trans-decl.c ! e680dc7f472d290c1c7f73e67239e526 gcc/fortran/trans-expr.c 5d28be65aabcc80b9cc4fb37ef0bfead gcc/fortran/trans-intrinsic.c 251588ca98b69f855c4d78fdbc92a5ce gcc/fortran/trans-io.c ! 485c083b6489b61b96e929a9ecd7d57f gcc/fortran/trans-openmp.c e3d6d3d4db3df36de93602bb0032fdb5 gcc/fortran/trans-stmt.c 09ff062ad8cb2da1edf2aefc8fec0dd0 gcc/fortran/trans-stmt.h ! cef4d7858e073c27ef4335abd4c725fe gcc/fortran/trans-types.c ! 8afb8a4ba30f131571e5bbd641342396 gcc/fortran/trans-types.h 530cdb5146a0273fc8d75438e976c9d5 gcc/fortran/trans.c ! 0f4c243b56b9732e80c5fe6707464692 gcc/fortran/trans.h 9d4b686857ace1c80925708b17d45124 gcc/fortran/types.def 35369c9f7b73348c0b6b15b8bc83e317 gcc/fp-test.c 4283b513d2c30438a7f09915c9a82423 gcc/function-tests.c ! f3d74b7b0d34cd8011ddbc425fc3fc41 gcc/function.c dd500d77758f3dca71ae1b2251bfcd63 gcc/function.h 06a221444dd61295a4de421f6bde7091 gcc/fwprop.c a3f2a611478af96e6ff01e90ca40e114 gcc/gcc-ar.c --- 4572,4643 ---- fa144458c4bca9ea098fcc49e69c20cc gcc/fortran/cpp.h 37ef55690b7643959b9d6ad02500a84c gcc/fortran/data.c 5d6574d0968f27afb4f3f41972e5f971 gcc/fortran/data.h ! 97da64641fd02533aa178eaa57ecce7c gcc/fortran/decl.c f8486e9dde69b3b606bbc76192b374ab gcc/fortran/dependency.c 6933dfd689c80beb5bb29d30026a34a1 gcc/fortran/dependency.h c3fed47839886fe87dd3656caa11c7e5 gcc/fortran/dump-parse-tree.c 14ccfb214cc78c6632e78ebc5d43e4f2 gcc/fortran/error.c ! ddab65a5d036996f307b49385028feff gcc/fortran/expr.c 05f704e72952b3ef3b591809d8bb33cd gcc/fortran/f95-lang.c ! 0250b35eabe35e2ae608e29d5c0d224c gcc/fortran/frontend-passes.c 1aa4f0a9593c4082dfc8a446a8021662 gcc/fortran/gfc-diagnostic.def ae757ab385911de35e92e949d47d76d9 gcc/fortran/gfc-internals.texi ! f3e19c691c2536dc2b06c288a9fce1dd gcc/fortran/gfortran.h ! 6386032c12433d75183176eb2d26f90c gcc/fortran/gfortran.info 2c8f2a8e4a156cc2c60a93eed11d1a78 gcc/fortran/gfortran.texi 258ff078d7fd588b1db5276e388b42d3 gcc/fortran/gfortranspec.c ! 97ee518be71604fba678c8f78d53737e gcc/fortran/interface.c ! 3cefbe4ee5b3df8d3c5ad1111ef82398 gcc/fortran/intrinsic.c f5a621f4d92bd975f19fa58c09b9e6db gcc/fortran/intrinsic.h ba1407cb79153040295068873f19ccc1 gcc/fortran/intrinsic.texi ! cfd4b4d8070efaa828c7d74987890e35 gcc/fortran/invoke.texi ! 676a632312c18d5d57240b479bf81334 gcc/fortran/io.c b75de9ab8d416c7abd953e5b7b3f3993 gcc/fortran/ioparm.def ! 21ce70b91a6ea875417611b7cf9be468 gcc/fortran/iresolve.c 8093b2b38a01c2e488976f991dd1f954 gcc/fortran/iso-c-binding.def a84b351eca744eb4326cdcf48ed2d447 gcc/fortran/iso-fortran-env.def b6a48d929dc4bab485565b69477b39ba gcc/fortran/lang-specs.h ! d3a095b7c3f51abc233cb0960dd32c23 gcc/fortran/lang.opt 645bd6455816a65c53807b5362dfec6f gcc/fortran/libgfortran.h ! 035d09edc1f438869c86e04aea894643 gcc/fortran/match.c 00a03b372a4378e1c07376ecf0602940 gcc/fortran/match.h d7e915937eda00d735c03407c30c147a gcc/fortran/matchexp.c 87a743f124dd99426032cc7ad19284bb gcc/fortran/mathbuiltins.def 9d431851867d6a83a9328224ab69473f gcc/fortran/misc.c ! ef1e1edea78450f040211e3ed2353f37 gcc/fortran/module.c ! e10639dea0456640476ac8d98e98b94a gcc/fortran/openmp.c e8210239d0ae38ef26cbcec563bb173a gcc/fortran/options.c ! 4e90f7cb6efe39ed9d8834e56166de11 gcc/fortran/parse.c e19e43330242c8950da01afa94a4f04b gcc/fortran/parse.h ! 7ca24341c793db4f2cece64f9b2eb017 gcc/fortran/primary.c ! dab5163af4104ab9f1b6037535b2f950 gcc/fortran/resolve.c 7ada4167f5cb66e95dc80a102e6c3b7a gcc/fortran/scanner.c 6761df883b8094d737206a8ba1c9f089 gcc/fortran/scanner.h 024bffdaa3734adc0e16653b61d7ef3f gcc/fortran/simplify.c 764d2fa05e4399ec39d47288d3bf78be gcc/fortran/st.c ! 06859f3e27f881ba1352caf102f43437 gcc/fortran/symbol.c ! 3b03840906d368ba6701e8f16c9e5884 gcc/fortran/target-memory.c 1a603863c873416a3e2a080510768dd2 gcc/fortran/target-memory.h ! db0fdc0116058b10fe58c049e19d8e6f gcc/fortran/trans-array.c ab7472b590e1c49b9167f2f0516f3aea gcc/fortran/trans-array.h f982772425e7d9a65cbb819062be79e3 gcc/fortran/trans-common.c a2301830f80d9a2d2fa804e044559cf1 gcc/fortran/trans-const.c f3cd9953e1d7b41f8b4340256b01d9db gcc/fortran/trans-const.h ! e96076c18f4b6b077407b2e111e19654 gcc/fortran/trans-decl.c ! fbe821795bea962654fb9404ae936396 gcc/fortran/trans-expr.c 5d28be65aabcc80b9cc4fb37ef0bfead gcc/fortran/trans-intrinsic.c 251588ca98b69f855c4d78fdbc92a5ce gcc/fortran/trans-io.c ! 499e07c83f13302325a07a6fa12a33e9 gcc/fortran/trans-openmp.c e3d6d3d4db3df36de93602bb0032fdb5 gcc/fortran/trans-stmt.c 09ff062ad8cb2da1edf2aefc8fec0dd0 gcc/fortran/trans-stmt.h ! fb2a6e322109cb0bdee8fb2133f18476 gcc/fortran/trans-types.c ! ee1385272d719912885173ec60732b8d gcc/fortran/trans-types.h 530cdb5146a0273fc8d75438e976c9d5 gcc/fortran/trans.c ! 049c22ca6ff45a245347448e50a0e65d gcc/fortran/trans.h 9d4b686857ace1c80925708b17d45124 gcc/fortran/types.def 35369c9f7b73348c0b6b15b8bc83e317 gcc/fp-test.c 4283b513d2c30438a7f09915c9a82423 gcc/function-tests.c ! 04aaf91bec3b0e0f6304b4de6a892594 gcc/function.c dd500d77758f3dca71ae1b2251bfcd63 gcc/function.h 06a221444dd61295a4de421f6bde7091 gcc/fwprop.c a3f2a611478af96e6ff01e90ca40e114 gcc/gcc-ar.c *************** c82adc9702c2427ee9c9b43ed895690b gcc/gc *** 4652,4658 **** 009a5588d34d2c697e51557671a52207 gcc/gcov.c ce19b5288593648402ea8145810d6048 gcc/gcse-common.c d50367250c6353a0bd6adad0c572f209 gcc/gcse-common.h ! 3cf1e474b24bd138960a515e216a4920 gcc/gcse.c 3906cc4c5e98688892893c74860cb0c7 gcc/gcse.h af83e4b4719ee065872080b713d24c2f gcc/gdbasan.in de6f9b8eed02e4d50b470ca2c9888e68 gcc/gdbhooks.py --- 4657,4663 ---- 009a5588d34d2c697e51557671a52207 gcc/gcov.c ce19b5288593648402ea8145810d6048 gcc/gcse-common.c d50367250c6353a0bd6adad0c572f209 gcc/gcse-common.h ! 3bda6df7b0ae3b9b065b93311dfdd9f7 gcc/gcse.c 3906cc4c5e98688892893c74860cb0c7 gcc/gcse.h af83e4b4719ee065872080b713d24c2f gcc/gdbasan.in de6f9b8eed02e4d50b470ca2c9888e68 gcc/gdbhooks.py *************** b017f09085f160e6758c885175c13f1a gcc/ge *** 4676,4682 **** 731a497572872b12a5e3033eae88f526 gcc/genextract.c 7981be4a9ace01c934486bb5c1e95cc0 gcc/genflags.c 28e8319538fae25e84df456e12da4263 gcc/gengenrtl.c ! a9e059e366f31df73b1ba68f8ffef8fe gcc/gengtype-lex.c 1dce49f1d97b1589c77b1b1da4da18b1 gcc/gengtype-lex.l bfc1a73017fd55933f7d460769140fc4 gcc/gengtype-parse.c b838ec3819011b0b60e60df47a827ffb gcc/gengtype-state.c --- 4681,4687 ---- 731a497572872b12a5e3033eae88f526 gcc/genextract.c 7981be4a9ace01c934486bb5c1e95cc0 gcc/genflags.c 28e8319538fae25e84df456e12da4263 gcc/gengenrtl.c ! a480d9852d76a78bb898d4039770bec9 gcc/gengtype-lex.c 1dce49f1d97b1589c77b1b1da4da18b1 gcc/gengtype-lex.l bfc1a73017fd55933f7d460769140fc4 gcc/gengtype-parse.c b838ec3819011b0b60e60df47a827ffb gcc/gengtype-state.c *************** c24f9caff3845aa4a3440de7cd21c2e4 gcc/ge *** 4699,4712 **** 9cbea8781c62395cff613f4ea5209892 gcc/ggc-common.c f7cb56e2b894ce112c7d922775b20ed7 gcc/ggc-internal.h c8adee440c05c0f377828e736f4e897a gcc/ggc-none.c ! 5727d7ef4e582d6398c2a06d8fa7fcf4 gcc/ggc-page.c aab5e8605b6acfd5563fd8fb857c475d gcc/ggc-tests.c cfab7b96bd884f95292f1774f45e4a59 gcc/ggc.h 2a14701570fbcd746ae6fa4486a6b26b gcc/gimple-builder.c ff046f8e9938dae0178a152ed191e19a gcc/gimple-builder.h c2d0730fb01b5369cf897eccf86f847a gcc/gimple-expr.c 98d8920ea5059b3d165e57222d891ccd gcc/gimple-expr.h ! 27ce61d208c576b518d1a85a08d12ec4 gcc/gimple-fold.c ee21230993c156d1d5cb56fc92916e7d gcc/gimple-fold.h a283a81bd4a03a8d46ce24a68e29ad46 gcc/gimple-iterator.c 37f5e8d0d297bd9e9f53fa013dbd7dfb gcc/gimple-iterator.h --- 4704,4717 ---- 9cbea8781c62395cff613f4ea5209892 gcc/ggc-common.c f7cb56e2b894ce112c7d922775b20ed7 gcc/ggc-internal.h c8adee440c05c0f377828e736f4e897a gcc/ggc-none.c ! 7fdf691e651983b52587d6419e1d3ac8 gcc/ggc-page.c aab5e8605b6acfd5563fd8fb857c475d gcc/ggc-tests.c cfab7b96bd884f95292f1774f45e4a59 gcc/ggc.h 2a14701570fbcd746ae6fa4486a6b26b gcc/gimple-builder.c ff046f8e9938dae0178a152ed191e19a gcc/gimple-builder.h c2d0730fb01b5369cf897eccf86f847a gcc/gimple-expr.c 98d8920ea5059b3d165e57222d891ccd gcc/gimple-expr.h ! c2b68cf33e1618f381ec0ed6a379c8a3 gcc/gimple-fold.c ee21230993c156d1d5cb56fc92916e7d gcc/gimple-fold.h a283a81bd4a03a8d46ce24a68e29ad46 gcc/gimple-iterator.c 37f5e8d0d297bd9e9f53fa013dbd7dfb gcc/gimple-iterator.h *************** b98da5beedf98696ea9fec7256a9a4d7 gcc/gi *** 4716,4730 **** d1ece51d7fcf4872310827e230b1a2eb gcc/gimple-match-head.c 344986053544f24eadf6b22cd9cbed69 gcc/gimple-match.h 50a983e0d86c88e7d0a035949d68d5e4 gcc/gimple-predict.h ! 018c91dec808cde7ac4152f806fff9b8 gcc/gimple-pretty-print.c e216dc6f5e58a21dcbbfba370d8afc7c gcc/gimple-pretty-print.h 08e46029894a69a6eb9a64baaa310990 gcc/gimple-ssa-backprop.c 4cb92049e81898a878aeed277acf78c4 gcc/gimple-ssa-isolate-paths.c a67525d6b8a482efd66447bd638e8dd0 gcc/gimple-ssa-nonnull-compare.c 177901a9b94a05ea75be63da13c83847 gcc/gimple-ssa-split-paths.c ! 1334430abaa2d5de56780eb997026e2c gcc/gimple-ssa-sprintf.c e3b2785355127c8c332f27c0570d37d4 gcc/gimple-ssa-store-merging.c ! 3cf19838bd314680d6eb279f49cac9b3 gcc/gimple-ssa-strength-reduction.c c56b2f9074833a8c8795067b1f5aea14 gcc/gimple-ssa-warn-alloca.c 4eb4658c5c649ef8a222e5ce7169fafd gcc/gimple-ssa.h 8f1fc05fa70d62ef0550eb40f55e141e gcc/gimple-streamer-in.c --- 4721,4735 ---- d1ece51d7fcf4872310827e230b1a2eb gcc/gimple-match-head.c 344986053544f24eadf6b22cd9cbed69 gcc/gimple-match.h 50a983e0d86c88e7d0a035949d68d5e4 gcc/gimple-predict.h ! 6173699580960334a694c0da60eab0ae gcc/gimple-pretty-print.c e216dc6f5e58a21dcbbfba370d8afc7c gcc/gimple-pretty-print.h 08e46029894a69a6eb9a64baaa310990 gcc/gimple-ssa-backprop.c 4cb92049e81898a878aeed277acf78c4 gcc/gimple-ssa-isolate-paths.c a67525d6b8a482efd66447bd638e8dd0 gcc/gimple-ssa-nonnull-compare.c 177901a9b94a05ea75be63da13c83847 gcc/gimple-ssa-split-paths.c ! a7def8c41fe3cc91825bedcb071ee51a gcc/gimple-ssa-sprintf.c e3b2785355127c8c332f27c0570d37d4 gcc/gimple-ssa-store-merging.c ! 1bf8ec226769d1f2ad218f63eab16a92 gcc/gimple-ssa-strength-reduction.c c56b2f9074833a8c8795067b1f5aea14 gcc/gimple-ssa-warn-alloca.c 4eb4658c5c649ef8a222e5ce7169fafd gcc/gimple-ssa.h 8f1fc05fa70d62ef0550eb40f55e141e gcc/gimple-streamer-in.c *************** c56b2f9074833a8c8795067b1f5aea14 gcc/gi *** 4732,4743 **** 6149b34a9b8dc9a3ac22452cfd258211 gcc/gimple-streamer.h a2c9a435958195c47f7a7ff098a5c002 gcc/gimple-walk.c e2faae5a93c606b2a7b67703c796e0ac gcc/gimple-walk.h ! 0f87653a3855d5db7af3632500bf286b gcc/gimple.c f7247836b1345633d1912927939e811c gcc/gimple.def ! 25418f3de22a04a9d3a4bce8ea7f8233 gcc/gimple.h 3226b367822a6cecd929bc8d88435e00 gcc/gimplify-me.c 0614c0dbeca81e25b0e2a8ec8670bfdf gcc/gimplify-me.h ! 85b0c7066811028f1ffd2630bde0f131 gcc/gimplify.c 0d655a1b36bd393358a60ae37468a057 gcc/gimplify.h 8a65435af2eced0ca67f6f9271c997ad gcc/ginclude/float.h b9721cc1f3c6349bcfe9d162a36d0eb9 gcc/ginclude/iso646.h --- 4737,4748 ---- 6149b34a9b8dc9a3ac22452cfd258211 gcc/gimple-streamer.h a2c9a435958195c47f7a7ff098a5c002 gcc/gimple-walk.c e2faae5a93c606b2a7b67703c796e0ac gcc/gimple-walk.h ! 0c4c3405ec275d9647161016f59938ee gcc/gimple.c f7247836b1345633d1912927939e811c gcc/gimple.def ! 078dd321c112f34c7c981e904c162933 gcc/gimple.h 3226b367822a6cecd929bc8d88435e00 gcc/gimplify-me.c 0614c0dbeca81e25b0e2a8ec8670bfdf gcc/gimplify-me.h ! b4723eddecd7c782f4acb092547fcfc5 gcc/gimplify.c 0d655a1b36bd393358a60ae37468a057 gcc/gimplify.h 8a65435af2eced0ca67f6f9271c997ad gcc/ginclude/float.h b9721cc1f3c6349bcfe9d162a36d0eb9 gcc/ginclude/iso646.h *************** a21c48eb0ebeb4a73c0889fd3f42e12b gcc/gi *** 4754,4760 **** e67de778552fcefca7289ac8daa55fe9 gcc/ginclude/unwind-arm-common.h 8d9ecf0d6ef93c79623ce1d27a32a2cb gcc/ginclude/varargs.h 39fd87607b25c8f948dcf70c2f36b206 gcc/glimits.h ! eed3060f02db783d006d87b2959b8bd0 gcc/go/ChangeLog 4ff99cd3f2073d7c092cb2d42ca47e44 gcc/go/Make-lang.in 60ea054548c83c7f66170073f9f3e74c gcc/go/README.gcc 4b9cbe6a30dbc7039c55993611934ad7 gcc/go/config-lang.in --- 4759,4765 ---- e67de778552fcefca7289ac8daa55fe9 gcc/ginclude/unwind-arm-common.h 8d9ecf0d6ef93c79623ce1d27a32a2cb gcc/ginclude/varargs.h 39fd87607b25c8f948dcf70c2f36b206 gcc/glimits.h ! 125d72169bd53c199f065022bad8b2f6 gcc/go/ChangeLog 4ff99cd3f2073d7c092cb2d42ca47e44 gcc/go/Make-lang.in 60ea054548c83c7f66170073f9f3e74c gcc/go/README.gcc 4b9cbe6a30dbc7039c55993611934ad7 gcc/go/config-lang.in *************** d1fc3f168d944e64ca6b0f0a8927b301 gcc/gr *** 4824,4830 **** 7484de7d78a34c5f3717af71957b2ccf gcc/graphite-isl-ast-to-gimple.c dc7486b5ffc901f582556a20dd651c1b gcc/graphite-optimize-isl.c ee94063780779dbd8f397ba53e5b3cb7 gcc/graphite-poly.c ! a53fc55fef65985e128c29c719a48eab gcc/graphite-scop-detection.c 08fcd67515ab1b26b0760c7d824be781 gcc/graphite-sese-to-poly.c 311105d7f1fe56dba43e194502491cd8 gcc/graphite.c e7e3fdece960283c76901871ddcc6399 gcc/graphite.h --- 4829,4835 ---- 7484de7d78a34c5f3717af71957b2ccf gcc/graphite-isl-ast-to-gimple.c dc7486b5ffc901f582556a20dd651c1b gcc/graphite-optimize-isl.c ee94063780779dbd8f397ba53e5b3cb7 gcc/graphite-poly.c ! 0703b4c687802af02174db893779a249 gcc/graphite-scop-detection.c 08fcd67515ab1b26b0760c7d824be781 gcc/graphite-sese-to-poly.c 311105d7f1fe56dba43e194502491cd8 gcc/graphite.c e7e3fdece960283c76901871ddcc6399 gcc/graphite.h *************** d08a41c44b2057a601ca472d8d7aba83 gcc/in *** 4868,4908 **** 6c700f907711db07006eaae3c698e48d gcc/incpath.c d9cd763073cfcc84a261cc22db84e3c5 gcc/incpath.h 391837c132e851e7c7c1bbeebb516c90 gcc/init-regs.c ! 090822c8cc7cb44eeeb8114deab64d45 gcc/input.c 3afe31ad8024a1a3fa2ef613bf72aeaf gcc/input.h 2014e898d755c5f081f63cab42dba047 gcc/insn-addr.h b5b40a72ca0dc9c233b0a85133cf9023 gcc/insn-notes.def ! 8f9b42bec7f5e0256d074ab679e88d00 gcc/internal-fn.c 4da4cd5d23e7edda93fdf5fde7294840 gcc/internal-fn.def ! 9ce613eef2e1b9c6f221cbc1bb973967 gcc/internal-fn.h fdf64d7f98647f8f0d1bcf3b8a828aa8 gcc/intl.c 6255901e73c6bc2c71a2703cdacfd77f gcc/intl.h 48525c51108ac26cb1d6058cb495d847 gcc/ipa-chkp.c e54d40e1ec53e0400607ff09c2a536dc gcc/ipa-chkp.h f1b7ee4df60044997d39d57d6c22993c gcc/ipa-comdats.c ! bf41bf8b54f64671bd7f354dcb70ddd1 gcc/ipa-cp.c 1064a31b99908c2eb12cd8eddb4fbfb2 gcc/ipa-devirt.c d13a7631f21372dd7785d58258d8653a gcc/ipa-hsa.c ! 2e220ffa1afa788d5e90c334c992320b gcc/ipa-icf-gimple.c 73e820ad96c398d3c582d46305f4a886 gcc/ipa-icf-gimple.h 6e694368aeb063a7108a13e82e01d2a7 gcc/ipa-icf.c 63f295725de31704e48d6c9bb3e1b72d gcc/ipa-icf.h 56741052fd5a89044ea5a5f7bc52ad3b gcc/ipa-inline-analysis.c 13c7778f9a4420ca43a2b5935fc2f296 gcc/ipa-inline-transform.c ! 43bc648e0d42b9b3f0eff01c7f8ca5a0 gcc/ipa-inline.c 91c2b100a6c4c5566296ce9bdeea1246 gcc/ipa-inline.h a77ae1d6734f2e873ab6390a3a330a48 gcc/ipa-polymorphic-call.c 20726f67378e6ff4631de06b111579c8 gcc/ipa-profile.c ! 778693b710ff5a6be15afb00cb24d847 gcc/ipa-prop.c f8fe111b3871fed63edbfc32fdb0e203 gcc/ipa-prop.h ! 5116913d55547de6de68fbf22b19d80d gcc/ipa-pure-const.c 5b0dd9b55d2b0ea9cb7f0ca4549e1a10 gcc/ipa-ref.c 2bf874519c2c4adedbc9d9f704713620 gcc/ipa-ref.h ! 38233da4b2ac3fb60647e29ae3bfdbc3 gcc/ipa-reference.c e0da2ee6910ab8686a5910bc4a76afe0 gcc/ipa-reference.h 4407b063d08bdd9fd0725de1c0e12486 gcc/ipa-split.c ! 90c6cc2241bc4dbaa5a6a76da34aa93c gcc/ipa-utils.c ! 658313d4d5d2feb69ed6f69a2c3cf571 gcc/ipa-utils.h 02f4b9ae1b45439a547f909b5361d4d5 gcc/ipa-visibility.c ef56d9ed82e1d34beae03896413d206e gcc/ipa.c 543028744e2f9e24cb5293e3a38b4013 gcc/ira-build.c --- 4873,4913 ---- 6c700f907711db07006eaae3c698e48d gcc/incpath.c d9cd763073cfcc84a261cc22db84e3c5 gcc/incpath.h 391837c132e851e7c7c1bbeebb516c90 gcc/init-regs.c ! 5554fecd6de4f5c51152051d7bd357b1 gcc/input.c 3afe31ad8024a1a3fa2ef613bf72aeaf gcc/input.h 2014e898d755c5f081f63cab42dba047 gcc/insn-addr.h b5b40a72ca0dc9c233b0a85133cf9023 gcc/insn-notes.def ! 0b043492640c5a60df1d88c2fc6ada70 gcc/internal-fn.c 4da4cd5d23e7edda93fdf5fde7294840 gcc/internal-fn.def ! 3a539e48391f330448cb016d7d2b1211 gcc/internal-fn.h fdf64d7f98647f8f0d1bcf3b8a828aa8 gcc/intl.c 6255901e73c6bc2c71a2703cdacfd77f gcc/intl.h 48525c51108ac26cb1d6058cb495d847 gcc/ipa-chkp.c e54d40e1ec53e0400607ff09c2a536dc gcc/ipa-chkp.h f1b7ee4df60044997d39d57d6c22993c gcc/ipa-comdats.c ! 7fbe0688059a58cc3cb84b571e86d77c gcc/ipa-cp.c 1064a31b99908c2eb12cd8eddb4fbfb2 gcc/ipa-devirt.c d13a7631f21372dd7785d58258d8653a gcc/ipa-hsa.c ! 87143ae3f029fdfad370a0e4c24739bd gcc/ipa-icf-gimple.c 73e820ad96c398d3c582d46305f4a886 gcc/ipa-icf-gimple.h 6e694368aeb063a7108a13e82e01d2a7 gcc/ipa-icf.c 63f295725de31704e48d6c9bb3e1b72d gcc/ipa-icf.h 56741052fd5a89044ea5a5f7bc52ad3b gcc/ipa-inline-analysis.c 13c7778f9a4420ca43a2b5935fc2f296 gcc/ipa-inline-transform.c ! 6049b5d54320e05864195fa476c7c6d9 gcc/ipa-inline.c 91c2b100a6c4c5566296ce9bdeea1246 gcc/ipa-inline.h a77ae1d6734f2e873ab6390a3a330a48 gcc/ipa-polymorphic-call.c 20726f67378e6ff4631de06b111579c8 gcc/ipa-profile.c ! feeb08d42ee80bbdf97cd03972b0feaf gcc/ipa-prop.c f8fe111b3871fed63edbfc32fdb0e203 gcc/ipa-prop.h ! 1f4e212ca05cbb3db5737085fe6f7409 gcc/ipa-pure-const.c 5b0dd9b55d2b0ea9cb7f0ca4549e1a10 gcc/ipa-ref.c 2bf874519c2c4adedbc9d9f704713620 gcc/ipa-ref.h ! 1c536cfdcc1cfed7fbb300884087881f gcc/ipa-reference.c e0da2ee6910ab8686a5910bc4a76afe0 gcc/ipa-reference.h 4407b063d08bdd9fd0725de1c0e12486 gcc/ipa-split.c ! 2d5043ea63dd3e2c51616f4597343928 gcc/ipa-utils.c ! a37e3657f0f85d1d070ff0af4a451dc6 gcc/ipa-utils.h 02f4b9ae1b45439a547f909b5361d4d5 gcc/ipa-visibility.c ef56d9ed82e1d34beae03896413d206e gcc/ipa.c 543028744e2f9e24cb5293e3a38b4013 gcc/ira-build.c *************** a19ba21929bb5efca3651c1bd91d0556 gcc/ir *** 4912,4921 **** 0cc90612f655f9553234b41c691dd045 gcc/ira-emit.c de81556308e4a1f61a5d691b42a31a77 gcc/ira-int.h 44c6dac0c625045cb04076642e5b0c66 gcc/ira-lives.c ! caacb2e7c13ccab0fb6efa70d96bbab3 gcc/ira.c 0e98da5359d5b8452a426452b3166e5e gcc/ira.h 98d0dd78e50aed7d6d4f69e533b99340 gcc/is-a.h ! 44abb42695eafdb08be63357f29654a2 gcc/jit/ChangeLog 6071bdf04fb356c5ac99a99ec00c9a12 gcc/jit/ChangeLog.jit 2415ade78b2b648edf37df515cc36c21 gcc/jit/Make-lang.in fd0d76b6467c987f813d430a35d4760a gcc/jit/TODO.rst --- 4917,4926 ---- 0cc90612f655f9553234b41c691dd045 gcc/ira-emit.c de81556308e4a1f61a5d691b42a31a77 gcc/ira-int.h 44c6dac0c625045cb04076642e5b0c66 gcc/ira-lives.c ! 668199d740457c7ff75ae3dc647d22ce gcc/ira.c 0e98da5359d5b8452a426452b3166e5e gcc/ira.h 98d0dd78e50aed7d6d4f69e533b99340 gcc/is-a.h ! 7ae8fd58c0fcc63e0db0cc385ca15672 gcc/jit/ChangeLog 6071bdf04fb356c5ac99a99ec00c9a12 gcc/jit/ChangeLog.jit 2415ade78b2b648edf37df515cc36c21 gcc/jit/Make-lang.in fd0d76b6467c987f813d430a35d4760a gcc/jit/TODO.rst *************** e6c027362553eaf5c6f46fc4f69db21e gcc/lc *** 5011,5029 **** 85dc07e9f0cd6bf7ca0391b3439fd9f7 gcc/loop-init.c 6960cfbb5f2f0ece41b0fb024292fc56 gcc/loop-invariant.c d00eb3c22c3d758014a13a9c09849822 gcc/loop-iv.c ! 72f5792447ce1e528eeef241eb76ffcc gcc/loop-unroll.c 952e6c6741e7cc74734d8f7e375d0ce7 gcc/loop-unroll.h b6a5401525ed766b4b2c000673e8e2de gcc/lower-subreg.c baa6304ac17d60ea1de9cd389561fbc6 gcc/lower-subreg.h 968303eba3eb836c06ffcc0c51525814 gcc/lra-assigns.c 09ce513b6a920eb59b5e4f682f9ed312 gcc/lra-coalesce.c ! 0b033e9413f60be8d2bd5eb35de0b92a gcc/lra-constraints.c 5ce61045cbbf438ace78d082bcdde15e gcc/lra-eliminations.c e681e998d6c0fdedc7d28c23ef7c1265 gcc/lra-int.h 939605de7727d037bffbf96535ac7cfa gcc/lra-lives.c a99263cf5a04d19dfbf3b8602665a19c gcc/lra-remat.c 0df6a0cfaee4f70007971a435d7cf831 gcc/lra-spills.c ! c39f83c028412f494556e41777fdfac3 gcc/lra.c 1bfb8d5c5c3f87c38b435e60129e5025 gcc/lra.h a0b668d25b2b3a5038eb0b1489b34ffb gcc/lto-cgraph.c 87ee293171e06e77ed29cc7e1e4df966 gcc/lto-compress.c --- 5016,5034 ---- 85dc07e9f0cd6bf7ca0391b3439fd9f7 gcc/loop-init.c 6960cfbb5f2f0ece41b0fb024292fc56 gcc/loop-invariant.c d00eb3c22c3d758014a13a9c09849822 gcc/loop-iv.c ! 3fa9f56b9ec4a19dcf6537f6140bcf4f gcc/loop-unroll.c 952e6c6741e7cc74734d8f7e375d0ce7 gcc/loop-unroll.h b6a5401525ed766b4b2c000673e8e2de gcc/lower-subreg.c baa6304ac17d60ea1de9cd389561fbc6 gcc/lower-subreg.h 968303eba3eb836c06ffcc0c51525814 gcc/lra-assigns.c 09ce513b6a920eb59b5e4f682f9ed312 gcc/lra-coalesce.c ! 7792afeb8cea93044545a83295d81984 gcc/lra-constraints.c 5ce61045cbbf438ace78d082bcdde15e gcc/lra-eliminations.c e681e998d6c0fdedc7d28c23ef7c1265 gcc/lra-int.h 939605de7727d037bffbf96535ac7cfa gcc/lra-lives.c a99263cf5a04d19dfbf3b8602665a19c gcc/lra-remat.c 0df6a0cfaee4f70007971a435d7cf831 gcc/lra-spills.c ! 48b9f093f239f6ef5f79d06dab600a4f gcc/lra.c 1bfb8d5c5c3f87c38b435e60129e5025 gcc/lra.h a0b668d25b2b3a5038eb0b1489b34ffb gcc/lto-cgraph.c 87ee293171e06e77ed29cc7e1e4df966 gcc/lto-compress.c *************** bdb839d1119e305569cc0381b49171ef gcc/lt *** 5032,5043 **** 23f5d4b3f3519ea92d0ea4ff7651f2c6 gcc/lto-section-in.c bf0ddd1d4c06ede718cd6c9d68d66a79 gcc/lto-section-names.h 1dfeb5b8bc8b8ef92eeaf44f80f4e6d7 gcc/lto-section-out.c ! cb0e052e6d99847359297ec3639e7494 gcc/lto-streamer-in.c ! 540e6a93c8890b8c9d3f073d3181f327 gcc/lto-streamer-out.c f7413cc95127c24fbfbca57399cc405e gcc/lto-streamer.c ! ac5af855d3af9e53bc7934819d845353 gcc/lto-streamer.h ! 32646f4b325ab40e02065344c8179008 gcc/lto-wrapper.c ! 63b2e68e355903720bbcef77adf41ff1 gcc/lto/ChangeLog ced02ce6ebb471e6f0707b1098d059f9 gcc/lto/Make-lang.in 4df36a5baf5c564626eda96177fa5c33 gcc/lto/common.c dc83390218daebe5ba0cc15e5d0ef4f2 gcc/lto/common.h --- 5037,5048 ---- 23f5d4b3f3519ea92d0ea4ff7651f2c6 gcc/lto-section-in.c bf0ddd1d4c06ede718cd6c9d68d66a79 gcc/lto-section-names.h 1dfeb5b8bc8b8ef92eeaf44f80f4e6d7 gcc/lto-section-out.c ! 55a66815969ef85831a6dd30de2116ec gcc/lto-streamer-in.c ! 01b16356638e13c0f582d23189139e36 gcc/lto-streamer-out.c f7413cc95127c24fbfbca57399cc405e gcc/lto-streamer.c ! de5dc207e0fce2b71b40d23bf5633e93 gcc/lto-streamer.h ! fd56c65c4405675aa827d395e750ae85 gcc/lto-wrapper.c ! a39d3249cade7d0620dd3af62056b4fe gcc/lto/ChangeLog ced02ce6ebb471e6f0707b1098d059f9 gcc/lto/Make-lang.in 4df36a5baf5c564626eda96177fa5c33 gcc/lto/common.c dc83390218daebe5ba0cc15e5d0ef4f2 gcc/lto/common.h *************** e647bcb6f853f2020a69bd125fba4c2d gcc/lt *** 5056,5062 **** 002d86ffe05da917cfd80bbb511cf0eb gcc/machmode.def f7ad77889393cf493f1262771d70d953 gcc/machmode.h 4ceeedac880cc5287574b380950589b2 gcc/main.c ! 556923984747eafe525152e5af24aa1e gcc/match.pd 18e3456c1e7d2132e422198943304c3b gcc/mcf.c c281c4f8369da7724070f49c9fe97512 gcc/mem-stats-traits.h 0588309a92b9b0bc147e0e3f8977dcad gcc/mem-stats.h --- 5061,5067 ---- 002d86ffe05da917cfd80bbb511cf0eb gcc/machmode.def f7ad77889393cf493f1262771d70d953 gcc/machmode.h 4ceeedac880cc5287574b380950589b2 gcc/main.c ! 3846ac589f783cdf50a059911935b38e gcc/match.pd 18e3456c1e7d2132e422198943304c3b gcc/mcf.c c281c4f8369da7724070f49c9fe97512 gcc/mem-stats-traits.h 0588309a92b9b0bc147e0e3f8977dcad gcc/mem-stats.h *************** ac2a441b236321b828165bc61f84e45a gcc/mk *** 5068,5079 **** f3bb81dc9fe0c7b25dbb89202fb9fedb gcc/mode-switching.c 8b38296cb48aac7025e957d0eb2e0beb gcc/modulo-sched.c ab99ec689b35d3782d0d6c9673e8a80c gcc/multiple_target.c ! 99b70018a0a547c3874986bb760d4abe gcc/objc/ChangeLog 52fb9c112577eef989bc43e36f696692 gcc/objc/Make-lang.in 07963422f6222392a9f1d56d0cbc53ae gcc/objc/config-lang.in cf8e0bb9d548e2c3d720f5c4ebc5bb9c gcc/objc/lang-specs.h ! 6497ac77d7736d6d98f9c5723745511c gcc/objc/objc-act.c ! a25092d4f4fe28a245de31f2f1511ff4 gcc/objc/objc-act.h 7ee25cf44832e5313ee3fc7db192be9c gcc/objc/objc-encoding.c b163ce4192cb6eb54634165d0ac4af49 gcc/objc/objc-encoding.h a8773d77127fbc00fe25eff818943e6d gcc/objc/objc-gnu-runtime-abi-01.c --- 5073,5084 ---- f3bb81dc9fe0c7b25dbb89202fb9fedb gcc/mode-switching.c 8b38296cb48aac7025e957d0eb2e0beb gcc/modulo-sched.c ab99ec689b35d3782d0d6c9673e8a80c gcc/multiple_target.c ! 3ddb557bc95eae5f1f709b2f3c1f8f65 gcc/objc/ChangeLog 52fb9c112577eef989bc43e36f696692 gcc/objc/Make-lang.in 07963422f6222392a9f1d56d0cbc53ae gcc/objc/config-lang.in cf8e0bb9d548e2c3d720f5c4ebc5bb9c gcc/objc/lang-specs.h ! 13dbd9b1d978d400271d31e9c67d93a5 gcc/objc/objc-act.c ! 9aedf9a604a0d5c28128a603b5eef7bc gcc/objc/objc-act.h 7ee25cf44832e5313ee3fc7db192be9c gcc/objc/objc-encoding.c b163ce4192cb6eb54634165d0ac4af49 gcc/objc/objc-encoding.h a8773d77127fbc00fe25eff818943e6d gcc/objc/objc-gnu-runtime-abi-01.c *************** c14acf8a1dab7d0c2adef37ade287b05 gcc/ob *** 5087,5111 **** 796e40d4a426f2ba961cb7b03597697b gcc/objc/objc-runtime-shared-support.c cc66abe3f07d32de5c77248e82f02dbe gcc/objc/objc-runtime-shared-support.h ef63c61988d20447a799378fa1f25022 gcc/objc/objc-tree.def ! eee7962269acb763acf9598c019e57b4 gcc/objcp/ChangeLog afdfeea4c2028aa5b15e0355f8cade93 gcc/objcp/Make-lang.in ! c74e423b803cf4446b16c17243b63e5a gcc/objcp/config-lang.in eef32d7df29581d83432d58d9cb2cd94 gcc/objcp/lang-specs.h b8840e5f3e0b48eef202eebe67f8506d gcc/objcp/objcp-decl.c db17a97fa0c8d9e96cf691936d987f01 gcc/objcp/objcp-decl.h 8edee735611b099133f17e56cef4dc46 gcc/objcp/objcp-lang.c b4f4aff7ed47834bd4bfcf2dfba20395 gcc/omp-builtins.def ! 6975a19ed0cef03b57fff8f942cf74f3 gcc/omp-expand.c d177ce89d1052ec1caeecdc3b6376077 gcc/omp-expand.h 101508bef954bca7004e675270e17636 gcc/omp-general.c f5c582e7b207e6818eb3ba0c0b992872 gcc/omp-general.h 8cba34fb20f0481e5ffbfb4e1694a907 gcc/omp-grid.c fc6b582c9cf11cb29fcf672e5b78c7ba gcc/omp-grid.h ! bc242b798227bd2a9791e3089d865321 gcc/omp-low.c d68f234609f652e17b2b917374726838 gcc/omp-low.h c3c2cd5ff8c4eadd8d9e432e16cf092c gcc/omp-offload.c cf7b95c9f21a4b2fa6826b529e3ce596 gcc/omp-offload.h ! 4be4d81923461b377d0bb0bef5b0749c gcc/omp-simd-clone.c d41de71d486a8be28201d75094263299 gcc/opt-functions.awk 141229a2685dddd4b6da38f50de9d465 gcc/opt-gather.awk 7a11f4a94c0bd345d3423bb0cef7c896 gcc/opt-include.awk --- 5092,5116 ---- 796e40d4a426f2ba961cb7b03597697b gcc/objc/objc-runtime-shared-support.c cc66abe3f07d32de5c77248e82f02dbe gcc/objc/objc-runtime-shared-support.h ef63c61988d20447a799378fa1f25022 gcc/objc/objc-tree.def ! ade22da37a181559a77e46aa355616f3 gcc/objcp/ChangeLog afdfeea4c2028aa5b15e0355f8cade93 gcc/objcp/Make-lang.in ! ad26fe2b6dae22b0ab8ab22c390382f3 gcc/objcp/config-lang.in eef32d7df29581d83432d58d9cb2cd94 gcc/objcp/lang-specs.h b8840e5f3e0b48eef202eebe67f8506d gcc/objcp/objcp-decl.c db17a97fa0c8d9e96cf691936d987f01 gcc/objcp/objcp-decl.h 8edee735611b099133f17e56cef4dc46 gcc/objcp/objcp-lang.c b4f4aff7ed47834bd4bfcf2dfba20395 gcc/omp-builtins.def ! f1c4f053335ce9fb1eac8ff10dac00fd gcc/omp-expand.c d177ce89d1052ec1caeecdc3b6376077 gcc/omp-expand.h 101508bef954bca7004e675270e17636 gcc/omp-general.c f5c582e7b207e6818eb3ba0c0b992872 gcc/omp-general.h 8cba34fb20f0481e5ffbfb4e1694a907 gcc/omp-grid.c fc6b582c9cf11cb29fcf672e5b78c7ba gcc/omp-grid.h ! bfccb994e5abc83622b487018098b6b7 gcc/omp-low.c d68f234609f652e17b2b917374726838 gcc/omp-low.h c3c2cd5ff8c4eadd8d9e432e16cf092c gcc/omp-offload.c cf7b95c9f21a4b2fa6826b529e3ce596 gcc/omp-offload.h ! 6c1b899dc08ecf853730ec83ef996d15 gcc/omp-simd-clone.c d41de71d486a8be28201d75094263299 gcc/opt-functions.awk 141229a2685dddd4b6da38f50de9d465 gcc/opt-gather.awk 7a11f4a94c0bd345d3423bb0cef7c896 gcc/opt-include.awk *************** b028c7a9c90208c6a41c251a754a8b18 gcc/op *** 5116,5131 **** d3cedc015b66305d40274f90a8e197cc gcc/optabs-query.h 3d905dc67e605c37e0eedb76c5caef04 gcc/optabs-tree.c 3e6875e4d6f2dbe3ed60c448551f5e86 gcc/optabs-tree.h ! 576cb3dd4dff3a861d2641868a5b8985 gcc/optabs.c 4e124c742e2a5d3ee49599f3e9b976dc gcc/optabs.def ad27afe318db2ba35c962089be2a6753 gcc/optabs.h 12965c68fb5394ce2ff713f9a02ce532 gcc/optc-gen.awk ! 3334035d4ed123a15511a538ff552d38 gcc/optc-save-gen.awk ! b36f15821f233758c3731307d8f6245f gcc/opth-gen.awk ! 39c48c6db3bf6ad12a2ceac33cf9a4b1 gcc/opts-common.c dceccf26e9f4521217455d25b4df27b7 gcc/opts-diagnostic.h ! 62023174447e1a21cc36cd138c59eb03 gcc/opts-global.c ! debbff247b2c2ff666c32dc0674f4b3f gcc/opts.c f93e8648abf396fa77c25dcdd03f9869 gcc/opts.h ff7abf43af46428f2896e4b55240035b gcc/output.h 389afec912a480acd35b8d978ee26f92 gcc/params-enum.h --- 5121,5136 ---- d3cedc015b66305d40274f90a8e197cc gcc/optabs-query.h 3d905dc67e605c37e0eedb76c5caef04 gcc/optabs-tree.c 3e6875e4d6f2dbe3ed60c448551f5e86 gcc/optabs-tree.h ! 02730ccd744a7945790608a6b03d96f8 gcc/optabs.c 4e124c742e2a5d3ee49599f3e9b976dc gcc/optabs.def ad27afe318db2ba35c962089be2a6753 gcc/optabs.h 12965c68fb5394ce2ff713f9a02ce532 gcc/optc-gen.awk ! a555843fa35cac6108b92b537afd8b57 gcc/optc-save-gen.awk ! f0ff869d803f4772a4c344590c5f1988 gcc/opth-gen.awk ! c3afd120c7d239971274c77f1c87ddab gcc/opts-common.c dceccf26e9f4521217455d25b4df27b7 gcc/opts-diagnostic.h ! 9875203aad3ab8b2dd93b9ce16d0ed23 gcc/opts-global.c ! 15cf13354ec58d6f28bda866b6bbbb49 gcc/opts.c f93e8648abf396fa77c25dcdd03f9869 gcc/opts.h ff7abf43af46428f2896e4b55240035b gcc/output.h 389afec912a480acd35b8d978ee26f92 gcc/params-enum.h *************** c2783219174c8fa71e584ddcd27d47fb gcc/pa *** 5140,5146 **** 5398ce30fca85a2ac1d00ce91b14f146 gcc/plugin.c 2746c4de7c7d517bb42a495e1dd8740d gcc/plugin.def 6940e44bf30362e059cceb844a043e4f gcc/plugin.h ! 324980796e704ee96be8865cc07dca07 gcc/po/ChangeLog 28b130f4b67c51e48b2b431b12ee9bc3 gcc/po/EXCLUDES 91c634ac61c253e979dd99a24560ca02 gcc/po/be.gmo 77877776122e6719ab1d793423a871c2 gcc/po/be.po --- 5145,5151 ---- 5398ce30fca85a2ac1d00ce91b14f146 gcc/plugin.c 2746c4de7c7d517bb42a495e1dd8740d gcc/plugin.def 6940e44bf30362e059cceb844a043e4f gcc/plugin.h ! 07b73c7acd915c5e2e588549c1a9b9f5 gcc/po/ChangeLog 28b130f4b67c51e48b2b431b12ee9bc3 gcc/po/EXCLUDES 91c634ac61c253e979dd99a24560ca02 gcc/po/be.gmo 77877776122e6719ab1d793423a871c2 gcc/po/be.po *************** dd41c821b8625e4697bf17679a151555 gcc/re *** 5224,5230 **** ac60869ad50176108b2582f282b56d68 gcc/reload.h 0103c2cc15d45b633b0f4ff2fce69c43 gcc/reload1.c e3f93c413a58cfeec53f2747ae1dce8f gcc/reorg.c ! 90997bd67acc28dbd0956e47a4be7d0e gcc/resource.c 012e3a805df645a90a2453dd0b9b37d3 gcc/resource.h 4c5f8660ff1d2252d0b26c1f2d988d43 gcc/rtl-chkp.c ce51ae5d10f5cb8b145a4ff0699046e2 gcc/rtl-chkp.h --- 5229,5235 ---- ac60869ad50176108b2582f282b56d68 gcc/reload.h 0103c2cc15d45b633b0f4ff2fce69c43 gcc/reload1.c e3f93c413a58cfeec53f2747ae1dce8f gcc/reorg.c ! 3a8ff2ff704b6efdf5c9fa842b41ff14 gcc/resource.c 012e3a805df645a90a2453dd0b9b37d3 gcc/resource.h 4c5f8660ff1d2252d0b26c1f2d988d43 gcc/rtl-chkp.c ce51ae5d10f5cb8b145a4ff0699046e2 gcc/rtl-chkp.h *************** d76ca39349983cb0b54c6ad134f61920 gcc/rt *** 5234,5241 **** d2bb5073ea343a1ae4939771412b63e0 gcc/rtl-tests.c 908701aba46db9a1a44393e99d07c6e6 gcc/rtl.c 7e78287e5749d4be4bc0c862b05f140c gcc/rtl.def ! 6b94bb5d689ef5236a6376ff8fad4eeb gcc/rtl.h ! ec5bc18a4cf3f9021e4092ce068fdc16 gcc/rtlanal.c 5c77db4ff466d7c8384d3007c09e56d0 gcc/rtlhash.c cb5fb683f24857f0ab9551a7e86100f2 gcc/rtlhash.h f541ab154aeea10a302aeac4bb8a22b1 gcc/rtlhooks-def.h --- 5239,5246 ---- d2bb5073ea343a1ae4939771412b63e0 gcc/rtl-tests.c 908701aba46db9a1a44393e99d07c6e6 gcc/rtl.c 7e78287e5749d4be4bc0c862b05f140c gcc/rtl.def ! d7975b6bca38a8642361e8b9cd97a5ac gcc/rtl.h ! 5004dc8e36ae16da96d005dbeb2be92a gcc/rtlanal.c 5c77db4ff466d7c8384d3007c09e56d0 gcc/rtlhash.c cb5fb683f24857f0ab9551a7e86100f2 gcc/rtlhash.h f541ab154aeea10a302aeac4bb8a22b1 gcc/rtlhooks-def.h *************** acfd89a99214448406e007b8b47be709 gcc/st *** 5288,5294 **** 6241bf746244c38ee2b5bb2f50700720 gcc/stmt.h dd8689c93f1877a7a663963f004790a7 gcc/stor-layout.c 1c7daba8028822e5b94a2153155ad602 gcc/stor-layout.h ! 8e1d62fd4e94be5e6ca36846b1aa8c50 gcc/store-motion.c f8d66329a1a49cc3f918ca0cc8dabe29 gcc/streamer-hooks.c 44fc77a08ef845e26d7b98a41e81567d gcc/streamer-hooks.h 99939e3eae08d6ec0e2ee9a8efefdeca gcc/stringpool.c --- 5293,5299 ---- 6241bf746244c38ee2b5bb2f50700720 gcc/stmt.h dd8689c93f1877a7a663963f004790a7 gcc/stor-layout.c 1c7daba8028822e5b94a2153155ad602 gcc/stor-layout.h ! 9f99a37c7e71c377704ba7f2bd6e9b7d gcc/store-motion.c f8d66329a1a49cc3f918ca0cc8dabe29 gcc/streamer-hooks.c 44fc77a08ef845e26d7b98a41e81567d gcc/streamer-hooks.h 99939e3eae08d6ec0e2ee9a8efefdeca gcc/stringpool.c *************** f8d66329a1a49cc3f918ca0cc8dabe29 gcc/st *** 5296,5302 **** 363bf9610ccd5a07e44e4a6f3eb6dc71 gcc/substring-locations.c 9878badb619687340998bcf3640b3cbd gcc/substring-locations.h b7b5a00a031835983125f2937db4804a gcc/symbol-summary.h ! 30129bff70c8649dddc3d8c9586a0d6f gcc/symtab.c bd271aa5ad96d6349cf5b502f6c1f5c4 gcc/sync-builtins.def 4b3a7a754c52da9ef683b6f7294a8617 gcc/system.h 08334c3b5c7914017c1b60360c0a1ff3 gcc/target-def.h --- 5301,5307 ---- 363bf9610ccd5a07e44e4a6f3eb6dc71 gcc/substring-locations.c 9878badb619687340998bcf3640b3cbd gcc/substring-locations.h b7b5a00a031835983125f2937db4804a gcc/symbol-summary.h ! 2c6b27b4c768e03cbffb6e20964b44f8 gcc/symtab.c bd271aa5ad96d6349cf5b502f6c1f5c4 gcc/sync-builtins.def 4b3a7a754c52da9ef683b6f7294a8617 gcc/system.h 08334c3b5c7914017c1b60360c0a1ff3 gcc/target-def.h *************** a05a444f8043177dc60812bbde449eda gcc/ta *** 5309,5315 **** 130ded7300d8bd75644b06dd136911c9 gcc/targhooks.c 0aab1bb3e79d26285582376c20aeb077 gcc/targhooks.h f39fcaa8197187283ccfed40107b426d gcc/testsuite/.gitattributes ! f3e8db809086f15907ea959fb6897bc2 gcc/testsuite/ChangeLog 862f04afbd87da2cc6bc432c3f28430f gcc/testsuite/ChangeLog-1993-2007 029a5d8dacd25eb5d4711452ac448e5b gcc/testsuite/ChangeLog-2008 13ac28c41d51b66b4ec40dba6bd50f39 gcc/testsuite/ChangeLog-2009 --- 5314,5320 ---- 130ded7300d8bd75644b06dd136911c9 gcc/targhooks.c 0aab1bb3e79d26285582376c20aeb077 gcc/targhooks.h f39fcaa8197187283ccfed40107b426d gcc/testsuite/.gitattributes ! 9089c93c4197f3e646b20badd9cea7bd gcc/testsuite/ChangeLog 862f04afbd87da2cc6bc432c3f28430f gcc/testsuite/ChangeLog-1993-2007 029a5d8dacd25eb5d4711452ac448e5b gcc/testsuite/ChangeLog-2008 13ac28c41d51b66b4ec40dba6bd50f39 gcc/testsuite/ChangeLog-2009 *************** b2ce89f1ba635f8d6701308583cd4759 gcc/te *** 8549,8554 **** --- 8554,8560 ---- 99033a31ad0844a80bb561d39f21bc2c gcc/testsuite/c-c++-common/gomp/atomic-8.c a6583e4cf6c5bb3b1a46172a0635d197 gcc/testsuite/c-c++-common/gomp/atomic-9.c 2549b3ee367b2011758b46cca97eecbe gcc/testsuite/c-c++-common/gomp/cancel-1.c + a3db48f5141f35b798f8eb198176c58a gcc/testsuite/c-c++-common/gomp/cancel-2.c 4643decfdedb2843b4b2903c5f686d54 gcc/testsuite/c-c++-common/gomp/clauses-1.c 91184268a02254af5f18494d3321de38 gcc/testsuite/c-c++-common/gomp/clauses-2.c 657094047e2432f3bc3c5cafde1eafcd gcc/testsuite/c-c++-common/gomp/clauses-3.c *************** f65cd3e2b7713964176e994c1aab473e gcc/te *** 8561,8566 **** --- 8567,8573 ---- 685c37a890fe3f63baeef038dca54d42 gcc/testsuite/c-c++-common/gomp/depend-4.c 389475c8477c859e20aa20be1676dbd0 gcc/testsuite/c-c++-common/gomp/distribute-1.c b0b92f325dfe971970390ef3edd85743 gcc/testsuite/c-c++-common/gomp/doacross-1.c + f0e8744f81b4bd363089960ae8a6bbb6 gcc/testsuite/c-c++-common/gomp/doacross-2.c 5a70f931f3d1911a210ec6155240d4dc gcc/testsuite/c-c++-common/gomp/element-1.c 52e6c91a76e14e06cc40b81b362ebe34 gcc/testsuite/c-c++-common/gomp/gridify-1.c c24725037d3fce70e48f0d8904037cee gcc/testsuite/c-c++-common/gomp/gridify-2.c *************** a1d1201800784f60e84899ae25155f9b gcc/te *** 8627,8636 **** 5c98b968b8b8fa3dcda75ece1f760d12 gcc/testsuite/c-c++-common/gomp/pr84341.c fb9e5ede5d43a206c572fa77be49ff02 gcc/testsuite/c-c++-common/gomp/pr85696.c 62a0e309912895235f385cc84af32654 gcc/testsuite/c-c++-common/gomp/pr86025.c 5d522e2f1f7455bc45f6c1f230d5a5b0 gcc/testsuite/c-c++-common/gomp/priority-1.c 1dc7bbbafb91e179ac43fa3959ab125f gcc/testsuite/c-c++-common/gomp/reduction-1.c 8af1ef16f27f56d5d687ed958b671d57 gcc/testsuite/c-c++-common/gomp/schedule-1.c ! a73d7c3b3886856e6621c6e5854c3333 gcc/testsuite/c-c++-common/gomp/schedule-modifiers-1.c 0ec2e2f575568924dc191f53badc3e5d gcc/testsuite/c-c++-common/gomp/schedule-simd-1.c 328147f679f9eac26be960bf85acb2e8 gcc/testsuite/c-c++-common/gomp/sections1.c c7cb982e272572b3d42948b23c3c6229 gcc/testsuite/c-c++-common/gomp/simd1.c --- 8634,8645 ---- 5c98b968b8b8fa3dcda75ece1f760d12 gcc/testsuite/c-c++-common/gomp/pr84341.c fb9e5ede5d43a206c572fa77be49ff02 gcc/testsuite/c-c++-common/gomp/pr85696.c 62a0e309912895235f385cc84af32654 gcc/testsuite/c-c++-common/gomp/pr86025.c + 0e989c3d25d634c553662814c966233e gcc/testsuite/c-c++-common/gomp/pr88588.c + 61ca8b866c491c9064a5bbfddd90f421 gcc/testsuite/c-c++-common/gomp/pr90954.c 5d522e2f1f7455bc45f6c1f230d5a5b0 gcc/testsuite/c-c++-common/gomp/priority-1.c 1dc7bbbafb91e179ac43fa3959ab125f gcc/testsuite/c-c++-common/gomp/reduction-1.c 8af1ef16f27f56d5d687ed958b671d57 gcc/testsuite/c-c++-common/gomp/schedule-1.c ! 5d7ebe38e36cae232e0504c4d3f42f44 gcc/testsuite/c-c++-common/gomp/schedule-modifiers-1.c 0ec2e2f575568924dc191f53badc3e5d gcc/testsuite/c-c++-common/gomp/schedule-simd-1.c 328147f679f9eac26be960bf85acb2e8 gcc/testsuite/c-c++-common/gomp/sections1.c c7cb982e272572b3d42948b23c3c6229 gcc/testsuite/c-c++-common/gomp/simd1.c *************** dee5af747bd0ddc9371dcb5f4acebedc gcc/te *** 8642,8648 **** 4763c84e6c50d72fa161297e3be84c0c gcc/testsuite/c-c++-common/gomp/single1.c 61d98a13d45cbac048b37277817470a0 gcc/testsuite/c-c++-common/gomp/sink-1.c 1c82cae2e7ce3866f8094c1dd264cbae gcc/testsuite/c-c++-common/gomp/sink-2.c ! ee53749fe1ce6195a2d3af75b4e8d7fb gcc/testsuite/c-c++-common/gomp/sink-3.c 0c93f7b88c30539ace084df2f4c7f5ae gcc/testsuite/c-c++-common/gomp/sink-4.c a8435825c61a8dc6ab7b5b8cda3dd35d gcc/testsuite/c-c++-common/gomp/target-teams-1.c 5e0762ad9f0a708e2bb91ebe98e91915 gcc/testsuite/c-c++-common/gomp/udr-1.c --- 8651,8657 ---- 4763c84e6c50d72fa161297e3be84c0c gcc/testsuite/c-c++-common/gomp/single1.c 61d98a13d45cbac048b37277817470a0 gcc/testsuite/c-c++-common/gomp/sink-1.c 1c82cae2e7ce3866f8094c1dd264cbae gcc/testsuite/c-c++-common/gomp/sink-2.c ! 5da781fbb8445e840fae91d1a209f84a gcc/testsuite/c-c++-common/gomp/sink-3.c 0c93f7b88c30539ace084df2f4c7f5ae gcc/testsuite/c-c++-common/gomp/sink-4.c a8435825c61a8dc6ab7b5b8cda3dd35d gcc/testsuite/c-c++-common/gomp/target-teams-1.c 5e0762ad9f0a708e2bb91ebe98e91915 gcc/testsuite/c-c++-common/gomp/udr-1.c *************** ee387176acb2650d09f446c7722b79b9 gcc/te *** 8789,8794 **** --- 8798,8805 ---- 21015038ab7179791a8c873570bdcb3c gcc/testsuite/c-c++-common/pr83059.c 9dba97555bca18ab93f6efcd421e0a52 gcc/testsuite/c-c++-common/pr84873.c 2f717264a94f69b645aabceb21aa58e5 gcc/testsuite/c-c++-common/pr84999.c + 3631e7a853bf47afcc4f5db428d630ff gcc/testsuite/c-c++-common/pr89933.c + 6b55a407d08d3d9c405be8cf45164944 gcc/testsuite/c-c++-common/pr90108.c b0ba836310044e7b419ef679f0b48d6f gcc/testsuite/c-c++-common/raw-string-1.c 554e7071d2525351de28445762633866 gcc/testsuite/c-c++-common/raw-string-10.c fc54e7227094f307fa566b3a8cd0ba9a gcc/testsuite/c-c++-common/raw-string-11.c *************** e1bf0eadfe0faa636f8ac8a16f0eeccd gcc/te *** 8856,8861 **** --- 8867,8873 ---- 7bca2da5972cb85245dd77174723b039 gcc/testsuite/c-c++-common/tm/wrap-1.c c1e50a7071b6999a8895b383c899231c gcc/testsuite/c-c++-common/torture/aarch64-vect-lane-1.c 1edeec204eca5114343b0dd1c1b0540e gcc/testsuite/c-c++-common/torture/aarch64-vect-lane-2.c + a10b02fb3b2593b2641dfd572427f365 gcc/testsuite/c-c++-common/torture/asm-inline.c 44b670d0aec741e3503143d1fd81cfa5 gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-1.c 465154bc8a7a51c9299788073fd630ec gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-1.h 070fcd634c88f93e465c85d1f83bd66a gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-10.c *************** a86987a20e9cedd0388c3b5602a4458c gcc/te *** 9469,9474 **** --- 9481,9489 ---- c97655a29a37d7897f9edc7f3201eab3 gcc/testsuite/g++.dg/asan/use-after-scope-types-4.C d2d4ea16490b45388c168c416c6640d5 gcc/testsuite/g++.dg/asan/use-after-scope-types-5.C e20a12eb6455f420adb919299f6e8991 gcc/testsuite/g++.dg/asan/use-after-scope-types.h + 01499301a7233f3e3e0bac80890e7dea gcc/testsuite/g++.dg/asm-qual-1.C + 0a7cdd480ff9677cd742fad1ef91da3a gcc/testsuite/g++.dg/asm-qual-2.C + f09dff4e126233e185c2284fca8e9cfa gcc/testsuite/g++.dg/asm-qual-3.C 2b91ca979d1cd0ba3142812068d73796 gcc/testsuite/g++.dg/bprob/bprob.exp 232269dc2a9b913c19e49f1e7a29bf08 gcc/testsuite/g++.dg/bprob/g++-bprob-1.C 91292dc36de1287d9de59661dd0c8c78 gcc/testsuite/g++.dg/bprob/g++-bprob-2.C *************** afb210848d078a6555666048b75692fb gcc/te *** 10142,10147 **** --- 10157,10163 ---- 8a9f91865ab6d92e00b1d78f32c26682 gcc/testsuite/g++.dg/cpp0x/constexpr-79822.C 1e7c8ba8ab02820df5254f7b652cafd5 gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C c5c31ddd271a1ea41e1cc0115e3e4305 gcc/testsuite/g++.dg/cpp0x/constexpr-84463.C + b9007290e56f8c058df6fc2174bc755b gcc/testsuite/g++.dg/cpp0x/constexpr-87506.C 6aa74413b4ef74580a0a5da7abf23914 gcc/testsuite/g++.dg/cpp0x/constexpr-98.C 1bc1c995533b047ed8df6f6f24905cd1 gcc/testsuite/g++.dg/cpp0x/constexpr-99.C 3ccc1912e7827aae6b55936a3bf3bb24 gcc/testsuite/g++.dg/cpp0x/constexpr-__func__.C *************** fab23eb9efdcf1b8c0f8393aa5ad7913 gcc/te *** 10848,10853 **** --- 10864,10871 ---- 93763afe3eb7edb5553f76daf0ed0de3 gcc/testsuite/g++.dg/cpp0x/initlist-vect.C bc81668e2b4c77a6a8c52350eb5f9bc7 gcc/testsuite/g++.dg/cpp0x/initlist1.C 56eb446b9a79a3e01433eed6090a0b6d gcc/testsuite/g++.dg/cpp0x/initlist10.C + 4332c7fdfb0318d5053e58202a4cfb1d gcc/testsuite/g++.dg/cpp0x/initlist105.C + cc1c5e5e24fb9bef8d00a876df016ada gcc/testsuite/g++.dg/cpp0x/initlist106.C f787403dc64b99be9c0c9b763121c4d7 gcc/testsuite/g++.dg/cpp0x/initlist11.C 540183723223acf529878183682623fb gcc/testsuite/g++.dg/cpp0x/initlist12.C a5e64985a46db12492fa03d5e7dfd347 gcc/testsuite/g++.dg/cpp0x/initlist13.C *************** b0aef9b4e29c1c639c49513dd20eddaa gcc/te *** 11459,11464 **** --- 11477,11483 ---- 22640f58e38b3f775918e32eb89ae1c5 gcc/testsuite/g++.dg/cpp0x/pr83556.C 0e513eaf320aa9c504e7cd59d73bb3ea gcc/testsuite/g++.dg/cpp0x/pr83824.C e220051a1789469e32d70224f27f40f1 gcc/testsuite/g++.dg/cpp0x/pr85147.C + af1a15e45c3cc6236ceb323ed17dc3d7 gcc/testsuite/g++.dg/cpp0x/pr89403.C 53428f69a6d0153074c9b06ee9fbe9e7 gcc/testsuite/g++.dg/cpp0x/ptrmem-cst-arg1.C 6e8e648c26d9bf237cc152180e88c2c2 gcc/testsuite/g++.dg/cpp0x/range-for1.C 5c7a98d8ca2f0f427c081bf6902aa831 gcc/testsuite/g++.dg/cpp0x/range-for10.C *************** db69e4e0631892725d99d48517e599d5 gcc/te *** 11528,11533 **** --- 11547,11553 ---- 06f5ab84d35793554cbac00bc5cbd06a gcc/testsuite/g++.dg/cpp0x/rv-cast5.C ccba3040ed86b5ffae7d72b18f556d1c gcc/testsuite/g++.dg/cpp0x/rv-cond1.C 682309935142019cb21a9df2c35d9a5c gcc/testsuite/g++.dg/cpp0x/rv-cond2.C + 3a02f68ebc48112a74f31983fd72c639 gcc/testsuite/g++.dg/cpp0x/rv-cond3.C 4d78acdd9f4b8ae8afa532ceaf0c07c4 gcc/testsuite/g++.dg/cpp0x/rv-conv1.C 889a7002f4d78b4abd44856da792f8dc gcc/testsuite/g++.dg/cpp0x/rv-copy1.C de88aaa56b0d394bd02f079bb0f4dddf gcc/testsuite/g++.dg/cpp0x/rv-deduce.C *************** fe118321a9f7ae6d0b7db3dea8fea392 gcc/te *** 12198,12203 **** --- 12218,12225 ---- fabb2b807c750e9106c4bf0957c73eb5 gcc/testsuite/g++.dg/cpp1y/lambda-init14.C ca7e8735db99f7f5fd14ba8748118d88 gcc/testsuite/g++.dg/cpp1y/lambda-init15.C 94541d9e486223ed3e08f03421566a99 gcc/testsuite/g++.dg/cpp1y/lambda-init15a.C + 5fe011c8566939194cd3e0837e9e34c0 gcc/testsuite/g++.dg/cpp1y/lambda-init18.C + 958fe0b6d46088167932b1f19e7a6780 gcc/testsuite/g++.dg/cpp1y/lambda-init19.C 8ed9afde76486ea02c03ca491cadf017 gcc/testsuite/g++.dg/cpp1y/lambda-init2.C 2cd05217a3f9f694b94c428a478c4d15 gcc/testsuite/g++.dg/cpp1y/lambda-init3.C f2fd3b3d96f31c07233bb82ba0c0f2f5 gcc/testsuite/g++.dg/cpp1y/lambda-init4.C *************** dbace3f995d674f58bab880f12a9759b gcc/te *** 12311,12316 **** --- 12333,12339 ---- 940fc182569446c043306bfa0393ad5d gcc/testsuite/g++.dg/cpp1y/pr84558.C aea4fd5f8c777c7f1bfde6284bf03cfa gcc/testsuite/g++.dg/cpp1y/pr84662.C 11abcca649e7c260d96b20dd2bb71bc7 gcc/testsuite/g++.dg/cpp1y/pr85076.C + 76d3c8355d513d753398e1184e4c4ece gcc/testsuite/g++.dg/cpp1y/pr89767.C ac3a3cc471361b1fc9f3e55ad12dd7a8 gcc/testsuite/g++.dg/cpp1y/regress1.C 9a759de4b7ac375d3c274acdf73c4fbe gcc/testsuite/g++.dg/cpp1y/sized-dealloc1.C aeb199bf9a897359b6d538b5bce4e5ef gcc/testsuite/g++.dg/cpp1y/sized-dealloc2.C *************** f47aed01d0a8d51c841d31adce366f2f gcc/te *** 12383,12388 **** --- 12406,12412 ---- 2d80dca3b1754f5129c41c3e12947ca9 gcc/testsuite/g++.dg/cpp1y/var-templ58a.C d02a4d5b691aff1357a5f77cf5774190 gcc/testsuite/g++.dg/cpp1y/var-templ59.C 46f96806c3f041172407dd6ff7943dc8 gcc/testsuite/g++.dg/cpp1y/var-templ6.C + d40d9f43eb7820281681023bed02f7ce gcc/testsuite/g++.dg/cpp1y/var-templ61.C 3c670164f1a7f8f91ef1db2f80526182 gcc/testsuite/g++.dg/cpp1y/var-templ7.C 7490ba7f2bf9511118a48f52e8c4ceed gcc/testsuite/g++.dg/cpp1y/var-templ8.C c62c3c5ce4dabfb077ffd26896b1d204 gcc/testsuite/g++.dg/cpp1y/var-templ9.C *************** a0b1b80cd241f9f881d8620db4841d7b gcc/te *** 12528,12533 **** --- 12552,12558 ---- c3be5debcaadeed1590bfa9d901b6b4a gcc/testsuite/g++.dg/cpp1z/decomp4.C eb9f8718288112ad5ebd15a4550540bf gcc/testsuite/g++.dg/cpp1z/decomp41.C 1d5ef27ba1bc0d334fdace775bcca4de gcc/testsuite/g++.dg/cpp1z/decomp42.C + be58a05c982a80cf0c6b4457f2ee655c gcc/testsuite/g++.dg/cpp1z/decomp49.C f98a9feae4ead80bf6fea589d0978072 gcc/testsuite/g++.dg/cpp1z/decomp5.C 94932c496662eac8e1fca1974af2185e gcc/testsuite/g++.dg/cpp1z/decomp6.C 6d3336af679ac74615e17a984a46d36e gcc/testsuite/g++.dg/cpp1z/decomp7.C *************** bed8d123852d255e811f9196daf3eaba gcc/te *** 12772,12779 **** --- 12797,12806 ---- c97b36f101808a4d1b88e966d08df228 gcc/testsuite/g++.dg/debug/dwarf2/pr79129.C 3ab0da15d5f47d7a8b827b5c7757e2f0 gcc/testsuite/g++.dg/debug/dwarf2/pr80234-1.C 97746fde88b3156e4e9704f6bad8eb65 gcc/testsuite/g++.dg/debug/dwarf2/pr80234-2.C + 0f874907f5857287c313bccd53771ee0 gcc/testsuite/g++.dg/debug/dwarf2/pr85550.C a6b0d9b886cd92ee869a01fd967f123e gcc/testsuite/g++.dg/debug/dwarf2/pr87462.C eb8df2f4b1148c5f6b77553d91cb7877 gcc/testsuite/g++.dg/debug/dwarf2/pr88006.C + 1f426b6d87ce5765a45728a91f7e3337 gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C 48e69b012a6da8a3f37c0eea7d671389 gcc/testsuite/g++.dg/debug/dwarf2/ptrdmem-1.C 5d8f03fa19703b37b960eccf4cdd64b6 gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C 69071f2ae478f0d1d78f2bcbfbd97e32 gcc/testsuite/g++.dg/debug/dwarf2/pubnames-2.C *************** ccda43f2f659360264083e64ebc66d22 gcc/te *** 12863,12868 **** --- 12890,12896 ---- cbfed194d2ff10e85931bbec759ed626 gcc/testsuite/g++.dg/debug/pr71432.C 271f75e481615831453a65f49baedcd5 gcc/testsuite/g++.dg/debug/pr72808.C 5199aaaf442cc3d08fba7ecd3483d537 gcc/testsuite/g++.dg/debug/pr80461.C + ff81bad5bdaf6ebdf3b91953ac3a3e83 gcc/testsuite/g++.dg/debug/pr88181.C a5e8d546d53a780cc3eb41574ea9f263 gcc/testsuite/g++.dg/debug/ra1.C c3f392076ad11f8768ef0321b89abd5f gcc/testsuite/g++.dg/debug/static1.C 7e13d86d33b17cfb7cdf61b7b8cca961 gcc/testsuite/g++.dg/debug/template1.C *************** b7f5975e22585a2f3d80be63f70dccc8 gcc/te *** 13164,13170 **** 8086207ba3911ed58a971e642fbfdd29 gcc/testsuite/g++.dg/ext/align1.C 9b72806f0ff8dd6bff6e2ef84f0ce102 gcc/testsuite/g++.dg/ext/align2.C ae6df71fd3bee2754f2c1b710ca23b88 gcc/testsuite/g++.dg/ext/alignof1.C ! e151939f5adf47a2bc58124b53a4606f gcc/testsuite/g++.dg/ext/alignof2.C f94bcd708feb1a029065a7503b545f54 gcc/testsuite/g++.dg/ext/altivec-1.C 11c64f0deba1e4621429dc584ee88ae4 gcc/testsuite/g++.dg/ext/altivec-10.C 11e05978299d38b5d2b835ef7303988d gcc/testsuite/g++.dg/ext/altivec-11.C --- 13192,13198 ---- 8086207ba3911ed58a971e642fbfdd29 gcc/testsuite/g++.dg/ext/align1.C 9b72806f0ff8dd6bff6e2ef84f0ce102 gcc/testsuite/g++.dg/ext/align2.C ae6df71fd3bee2754f2c1b710ca23b88 gcc/testsuite/g++.dg/ext/alignof1.C ! c193f1254c92080bca2fd5ab48c1e175 gcc/testsuite/g++.dg/ext/alignof2.C f94bcd708feb1a029065a7503b545f54 gcc/testsuite/g++.dg/ext/altivec-1.C 11c64f0deba1e4621429dc584ee88ae4 gcc/testsuite/g++.dg/ext/altivec-10.C 11e05978299d38b5d2b835ef7303988d gcc/testsuite/g++.dg/ext/altivec-11.C *************** d377fb4f9ef6d1ed2029c1551ddf7e3b gcc/te *** 13226,13233 **** e44c9c980378260d4b601d86e9cc1197 gcc/testsuite/g++.dg/ext/asm12.C 0262e403551bf2b3da1b5f7349d74e00 gcc/testsuite/g++.dg/ext/asm13.C b03656b1cd67c4e115686cb70664ee3b gcc/testsuite/g++.dg/ext/asm14.C ! d0cdfeb86cc1bd5048bc8a6eccd22158 gcc/testsuite/g++.dg/ext/asm15.C ! 6d4d89936aae31f929753c3c6fbe416c gcc/testsuite/g++.dg/ext/asm16.C 80a3695697c7262c931be9b1380fa283 gcc/testsuite/g++.dg/ext/asm2.C d79d3809a45ef739f741819f3a0e3979 gcc/testsuite/g++.dg/ext/asm3.C f8da779ccf232ebdb2dee94530a1bf48 gcc/testsuite/g++.dg/ext/asm4.C --- 13254,13262 ---- e44c9c980378260d4b601d86e9cc1197 gcc/testsuite/g++.dg/ext/asm12.C 0262e403551bf2b3da1b5f7349d74e00 gcc/testsuite/g++.dg/ext/asm13.C b03656b1cd67c4e115686cb70664ee3b gcc/testsuite/g++.dg/ext/asm14.C ! be1c80dcae5cbae6a8e240931f3c0271 gcc/testsuite/g++.dg/ext/asm15.C ! 2135f9ca8816461a01d6402d135aadb3 gcc/testsuite/g++.dg/ext/asm16.C ! 883f7391e5262e580b7d6560610b3012 gcc/testsuite/g++.dg/ext/asm17.C 80a3695697c7262c931be9b1380fa283 gcc/testsuite/g++.dg/ext/asm2.C d79d3809a45ef739f741819f3a0e3979 gcc/testsuite/g++.dg/ext/asm3.C f8da779ccf232ebdb2dee94530a1bf48 gcc/testsuite/g++.dg/ext/asm4.C *************** fa0fdbfe242e37c8962c867f656e7e36 gcc/te *** 13453,13458 **** --- 13482,13488 ---- f1c4a8c29985318295579ac9077ee176 gcc/testsuite/g++.dg/ext/flexary23.C 799928c572de3a0a1d8c1318932df135 gcc/testsuite/g++.dg/ext/flexary24.C 21926590c31816347bbb7ba438127f63 gcc/testsuite/g++.dg/ext/flexary3.C + b2c60991d5b6f21b7202a6d5a7c81412 gcc/testsuite/g++.dg/ext/flexary34.C 3d3772048887cc532cac316c5dfc3727 gcc/testsuite/g++.dg/ext/flexary4.C 0cdb8ed93bc6d926326dda41fc92d614 gcc/testsuite/g++.dg/ext/flexary5.C 57643e50a930f6d1e7ea68411e707a26 gcc/testsuite/g++.dg/ext/flexary6.C *************** a24f991beb2c5296f2e8144630b7bb1a gcc/te *** 13500,13506 **** 04cb5500126619139ae126fdc51c8a1f gcc/testsuite/g++.dg/ext/injected-ttp.C f2cf0baaaf489aa15f22210e07d052d1 gcc/testsuite/g++.dg/ext/inline1.C 6cfdb6711dd7c538f7c4411216e0cc5b gcc/testsuite/g++.dg/ext/instantiate1.C ! 5e54f0ef2e625e228e1d382cd9aa24b3 gcc/testsuite/g++.dg/ext/instantiate2.C 561bb7137df38a016a786156224c9769 gcc/testsuite/g++.dg/ext/instantiate3.C 64c2566bddee53ad391dac93f9ac20f8 gcc/testsuite/g++.dg/ext/int128-1.C 32e47d9edd5e9de41660e6f8d0faa6c8 gcc/testsuite/g++.dg/ext/int128-2.C --- 13530,13536 ---- 04cb5500126619139ae126fdc51c8a1f gcc/testsuite/g++.dg/ext/injected-ttp.C f2cf0baaaf489aa15f22210e07d052d1 gcc/testsuite/g++.dg/ext/inline1.C 6cfdb6711dd7c538f7c4411216e0cc5b gcc/testsuite/g++.dg/ext/instantiate1.C ! 34f12a4e88c7d91723528bbca194ce29 gcc/testsuite/g++.dg/ext/instantiate2.C 561bb7137df38a016a786156224c9769 gcc/testsuite/g++.dg/ext/instantiate3.C 64c2566bddee53ad391dac93f9ac20f8 gcc/testsuite/g++.dg/ext/int128-1.C 32e47d9edd5e9de41660e6f8d0faa6c8 gcc/testsuite/g++.dg/ext/int128-2.C *************** de012dba14bc48d236b469793d5ca899 gcc/te *** 13676,13682 **** e4a78d4631d98dda8d34b1baf828c158 gcc/testsuite/g++.dg/ext/sync-1.C 7d2ab13d9258d8fc570367eacc626bf6 gcc/testsuite/g++.dg/ext/sync-2.C 96d325d0b1cb729ac3fd1b3d32a6b67b gcc/testsuite/g++.dg/ext/sync-3.C ! 25e688901e0b995b22374a4e20633531 gcc/testsuite/g++.dg/ext/sync-4.C f9fa49961395404e1860aeb9a8b78208 gcc/testsuite/g++.dg/ext/timevar1.C 01c68a4ad6501d5104065731b3cf67c4 gcc/testsuite/g++.dg/ext/timevar2.C b0c4b5418bbb0cea1304a888bae68465 gcc/testsuite/g++.dg/ext/tmplattr1.C --- 13706,13712 ---- e4a78d4631d98dda8d34b1baf828c158 gcc/testsuite/g++.dg/ext/sync-1.C 7d2ab13d9258d8fc570367eacc626bf6 gcc/testsuite/g++.dg/ext/sync-2.C 96d325d0b1cb729ac3fd1b3d32a6b67b gcc/testsuite/g++.dg/ext/sync-3.C ! 46eb991a03413f1965a4192b07913b9f gcc/testsuite/g++.dg/ext/sync-4.C f9fa49961395404e1860aeb9a8b78208 gcc/testsuite/g++.dg/ext/timevar1.C 01c68a4ad6501d5104065731b3cf67c4 gcc/testsuite/g++.dg/ext/timevar2.C b0c4b5418bbb0cea1304a888bae68465 gcc/testsuite/g++.dg/ext/tmplattr1.C *************** abdeb34b11f4d994523c72c30c39e053 gcc/te *** 13781,13786 **** --- 13811,13817 ---- c3b38049951f0b2eddec58e423441ed3 gcc/testsuite/g++.dg/ext/vector31.C f2e6795ff798b5625687e21de0a778df gcc/testsuite/g++.dg/ext/vector32.C f2e6795ff798b5625687e21de0a778df gcc/testsuite/g++.dg/ext/vector32a.C + abeb7f1800f1c5a18e83e13fb0f1d304 gcc/testsuite/g++.dg/ext/vector36.C 1d6b45dce331a414b31b64c5104ab383 gcc/testsuite/g++.dg/ext/vector4.C 3231264b4b96091ab8a2351e76707e8d gcc/testsuite/g++.dg/ext/vector5.C 9dca9632e59d179ee1b85a181a34cae7 gcc/testsuite/g++.dg/ext/vector6.C *************** d1eae0fc9007ab702478f6de3cc99b0b gcc/te *** 13909,13915 **** 831e98c6ca97a4a3897a673f4bab9b09 gcc/testsuite/g++.dg/gcov/gcov.exp 28167c93ffea74cb328ff3cd087d643a gcc/testsuite/g++.dg/gcov/gcovpart-12b.C 7d9eee67c3f8041f2ddace387e1df1c2 gcc/testsuite/g++.dg/gcov/pr16855-priority.C ! 6a00a42444ecfc55fcc35215a85e8a01 gcc/testsuite/g++.dg/gcov/pr16855.C eb61f760d343ff5c713477f9b4bd1edd gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp 480677ba2b0c1444ca7f51a2bf4efd71 gcc/testsuite/g++.dg/goacc/data-1.C 2b70bd2b15144e92ee104c07a8e2bc13 gcc/testsuite/g++.dg/goacc/deviceptr-1.C --- 13940,13946 ---- 831e98c6ca97a4a3897a673f4bab9b09 gcc/testsuite/g++.dg/gcov/gcov.exp 28167c93ffea74cb328ff3cd087d643a gcc/testsuite/g++.dg/gcov/gcovpart-12b.C 7d9eee67c3f8041f2ddace387e1df1c2 gcc/testsuite/g++.dg/gcov/pr16855-priority.C ! 0e2959a120e9dabe4dc820b1236a1579 gcc/testsuite/g++.dg/gcov/pr16855.C eb61f760d343ff5c713477f9b4bd1edd gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp 480677ba2b0c1444ca7f51a2bf4efd71 gcc/testsuite/g++.dg/goacc/data-1.C 2b70bd2b15144e92ee104c07a8e2bc13 gcc/testsuite/g++.dg/goacc/deviceptr-1.C *************** c3c132c63e769145d5869a1e0c14f686 gcc/te *** 13937,13942 **** --- 13968,13976 ---- 21fde38c324f474c2251280d6cd9a190 gcc/testsuite/g++.dg/gomp/block-7.C a2fa0bd0c20ee3b75edbfece640cf607 gcc/testsuite/g++.dg/gomp/block-8.C cbb7791c1d34b472a8662c5d203ff28c gcc/testsuite/g++.dg/gomp/block-9.C + a734cd9ac4c7933b7e53991e05b0aed5 gcc/testsuite/g++.dg/gomp/cancel-1.C + 1ded075e5504b0cdb4b01214eb33c7af gcc/testsuite/g++.dg/gomp/cancel-2.C + 4d9ae441343c49335159712e6d78736c gcc/testsuite/g++.dg/gomp/cancel-3.C 229a4e7a48a56c0cf19c162f2a33f7f1 gcc/testsuite/g++.dg/gomp/clause-1.C 58ada034a21b7734739e966345d25fac gcc/testsuite/g++.dg/gomp/clause-2.C 451cdb5a4d9b3f55c9dfdb9bea6c4cfc gcc/testsuite/g++.dg/gomp/clause-3.C *************** bcce5f289dacd7e032453729bf06e161 gcc/te *** 13977,13982 **** --- 14011,14017 ---- d9604d99f8b1a6974afc5a3cab2765b3 gcc/testsuite/g++.dg/gomp/for-8.C 34eb86e893e0bd796aad8d236b5bc215 gcc/testsuite/g++.dg/gomp/for-9.C e6be88782f0e60ae056fe40845979bf7 gcc/testsuite/g++.dg/gomp/gomp.exp + eb763d050fd680e1a3302fbda441475d gcc/testsuite/g++.dg/gomp/lastprivate-1.C 7f682781cd88149270eb73eb44f419f7 gcc/testsuite/g++.dg/gomp/linear-1.C 2fe09fbd7df28122d262deb35faa2ae9 gcc/testsuite/g++.dg/gomp/linear-2.C 6dcaf2b099c377baab33fe0ad0e0e268 gcc/testsuite/g++.dg/gomp/loop-1.C *************** ba547a4dc52e5fa57b7cf7b21dfac263 gcc/te *** 14107,14112 **** --- 14142,14149 ---- d43c7636f8d004a836e8c8543a39d4aa gcc/testsuite/g++.dg/gomp/pr84556.C 509552ea6a4e3381b95cf49447f0217f gcc/testsuite/g++.dg/gomp/pr84557.C f4af350e7c840b674d4df142d3432e80 gcc/testsuite/g++.dg/gomp/pr84791.C + 4b42a7fda8d3ea41699780101b9c6384 gcc/testsuite/g++.dg/gomp/pr88949.C + c1464987d35d87dd8f66e42e5434dd87 gcc/testsuite/g++.dg/gomp/pr89796.C adbfca0228fdb71a91ae227ecc88afab gcc/testsuite/g++.dg/gomp/predetermined-1.C edac71d2b358ecd6e646fece69c5426d gcc/testsuite/g++.dg/gomp/private-1.C d447246d410ae61ed9f733998e77b958 gcc/testsuite/g++.dg/gomp/reference-1.C *************** e9a3cd760e81664690da407f52b34364 gcc/te *** 14778,14783 **** --- 14815,14821 ---- 05592a0935fec817a7688eb12baa50c2 gcc/testsuite/g++.dg/ipa/pr82801.C a6ea68da40fdbc3c5627d8fd52058c74 gcc/testsuite/g++.dg/ipa/pr83549.C d31daabe5d2bb29c818c1bbbe31a5a4b gcc/testsuite/g++.dg/ipa/pr84658.C + 09c0ea9b37840a41bc30204d7af8c1ef gcc/testsuite/g++.dg/ipa/pr89009.C 33a70012ed132fa7937f4953a4dc0f17 gcc/testsuite/g++.dg/ipa/pure-const-1.C c5bddc0233cbf24a8f75d96eb5685658 gcc/testsuite/g++.dg/ipa/pure-const-2.C b98de12e73f586f35f30ed6bf46a1463 gcc/testsuite/g++.dg/ipa/pure-const-3.C *************** f73a831dbfcd6430b723ed4198037c98 gcc/te *** 14921,14926 **** --- 14959,14965 ---- 326caa0ef916da51fec348c662a91f18 gcc/testsuite/g++.dg/lookup/ns3.C b16d2b44bfa0aeed86e99a04f412703d gcc/testsuite/g++.dg/lookup/ns4.C 2ddc73877ee8726480b98b6b881569b6 gcc/testsuite/g++.dg/lookup/pr21802.C + 2378e813c805e961b5f594f4a76ec56d gcc/testsuite/g++.dg/lookup/pr60994.C 6133d93b9e3d1477d5f921d386c406a0 gcc/testsuite/g++.dg/lookup/pr6936.C 3717c2026453719d4d718f3e8061ba28 gcc/testsuite/g++.dg/lookup/pr70205.C c3e7ce4b437773eaeeb6bf033add6ae5 gcc/testsuite/g++.dg/lookup/pr77549.C *************** b8ca536d41e8477bd6c838e3069600de gcc/te *** 15548,15554 **** --- 15587,15598 ---- 51275b1dfdc4bd6a07a6ff88ac8d81c3 gcc/testsuite/g++.dg/opt/pr83084.C ef14b1c0d0459097940d563471958957 gcc/testsuite/g++.dg/opt/pr83608.C 58b650e9e9104f63b1cccbbef63a1887 gcc/testsuite/g++.dg/opt/pr83609.C + b1f567104f98b61d3068d7b7f076ad11 gcc/testsuite/g++.dg/opt/pr84272.C ca10d6d09de6260347893fccdabd81a8 gcc/testsuite/g++.dg/opt/pr85196.C + dd4b362edbe19cdf29a47f7bb90e6e2a gcc/testsuite/g++.dg/opt/pr89187.C + eea9eb29aff452d80dae491fa69bef1b gcc/testsuite/g++.dg/opt/pr89188.C + 7842f073118719d55d2d03e047ef75de gcc/testsuite/g++.dg/opt/pr90090.C + 6a8ecb5087f6e681c993119a988900ef gcc/testsuite/g++.dg/opt/pr90187.C 1451eba24eea82cbd0c1ab87885c0f77 gcc/testsuite/g++.dg/opt/preinc1.C 0841088f825be785d32663d712ecf675 gcc/testsuite/g++.dg/opt/ptrintsum1.C 8ceccf2f02b3f64f372600e32148e146 gcc/testsuite/g++.dg/opt/ptrmem1.C *************** edba4dc64424b99c4e6984f1aa7e9507 gcc/te *** 15863,15868 **** --- 15907,15914 ---- 76ee0895897247483e60443661edeb22 gcc/testsuite/g++.dg/other/pr80423.C 1c00accbdd570039dad5f6ca97899478 gcc/testsuite/g++.dg/other/pr80534-1.C 0a2126b949cb2478421893594c7f8cf4 gcc/testsuite/g++.dg/other/pr80534-2.C + 13c0075f5c1ed3cc04f6b8285a72ad36 gcc/testsuite/g++.dg/other/pr86669.C + e716b31d86bef260a0d00fd877fbc9cf gcc/testsuite/g++.dg/other/pr88568.C 2b96e0cda3aaa703c284fca6a0dd72c9 gcc/testsuite/g++.dg/other/pragma-re-1.C bdec0c9208af6ee3a9ab1f2c07d3ba19 gcc/testsuite/g++.dg/other/pragma-re-2.C f804e6064a0c7cd94d73f58ba8f6e5e0 gcc/testsuite/g++.dg/other/profile1.C *************** d41d8cd98f00b204e9800998ecf8427e gcc/te *** 16529,16534 **** --- 16575,16582 ---- a42f209088bbce8d3650be5966861b6b gcc/testsuite/g++.dg/pch/pch.C 95603c8965412870090ed14011f4b123 gcc/testsuite/g++.dg/pch/pch.Hs 537b8069528dfb3dbf4d571c45b9d36e gcc/testsuite/g++.dg/pch/pch.exp + a79b4c14973bc580e45325abf4c19b72 gcc/testsuite/g++.dg/pch/pr90326.C + 8733db8bb02cf7abd5d7d07601acc332 gcc/testsuite/g++.dg/pch/pr90326.Hs 956a76bba7ed55fcdd73d80efdfa4c90 gcc/testsuite/g++.dg/pch/static-1.C 4aaad0cfa4436b8cd8b37b1bf218edc8 gcc/testsuite/g++.dg/pch/static-1.Hs a5379c2bad433698a01b3bc2d5473a2e gcc/testsuite/g++.dg/pch/system-1.C *************** dd5b895f9e8e377b3fc861eecf9bdbf7 gcc/te *** 16668,16674 **** ee53985be6eef8ab3747c18a09b14caa gcc/testsuite/g++.dg/pr71624.C 09cad9312be77f437ead53868ad169ac gcc/testsuite/g++.dg/pr71633.C 8756c72da60c2ac8cdddc20291df82e3 gcc/testsuite/g++.dg/pr71655.C ! 3af641d9468be57e76fd08c60c6f9412 gcc/testsuite/g++.dg/pr71694.C 1202ce040862ab92e1f0e7f8da8f372a gcc/testsuite/g++.dg/pr71973-1.C 4d7bbea7ad49c81e67fcd756ddcfd12f gcc/testsuite/g++.dg/pr71973-2.C 77a4316445a154cba3284882042820df gcc/testsuite/g++.dg/pr71973-3.C --- 16716,16722 ---- ee53985be6eef8ab3747c18a09b14caa gcc/testsuite/g++.dg/pr71624.C 09cad9312be77f437ead53868ad169ac gcc/testsuite/g++.dg/pr71633.C 8756c72da60c2ac8cdddc20291df82e3 gcc/testsuite/g++.dg/pr71655.C ! 70040a9303642cd08929d6db08a0cc2d gcc/testsuite/g++.dg/pr71694.C 1202ce040862ab92e1f0e7f8da8f372a gcc/testsuite/g++.dg/pr71973-1.C 4d7bbea7ad49c81e67fcd756ddcfd12f gcc/testsuite/g++.dg/pr71973-2.C 77a4316445a154cba3284882042820df gcc/testsuite/g++.dg/pr71973-3.C *************** b5452fdc9af692c5acb4d9af45519954 gcc/te *** 16698,16703 **** --- 16746,16752 ---- 0776b7a6a5995c6b17c86a9c10abbdb2 gcc/testsuite/g++.dg/pr82155.C da4464f64c7ae819c4a0629cfaf7095e gcc/testsuite/g++.dg/pr84279.C e4a1820535e55911e89f64e30d107b90 gcc/testsuite/g++.dg/pr85026.C + f44929163adaa17a52ef23e11535a9dd gcc/testsuite/g++.dg/pr88998.C 80e57549741422847fb3acbd80e38ea8 gcc/testsuite/g++.dg/predict-loop-exit-1.C b6e066cc704bbace8cbfa3d84d6416c9 gcc/testsuite/g++.dg/predict-loop-exit-2.C 2ee9d3e34345a096b88c9c1968c037c7 gcc/testsuite/g++.dg/predict-loop-exit-3.C *************** ec6c7e65d57e2a70cb1a6852131a0f16 gcc/te *** 18045,18051 **** abcd9d688bd97352cf2201ae04eb0bcd gcc/testsuite/g++.dg/tls/pr66808.C 5b67d09a03c0a87ddd8fb4065b354311 gcc/testsuite/g++.dg/tls/pr69000.C f4ebaa2e9bc5b065a4c81b1ec15efe2c gcc/testsuite/g++.dg/tls/pr77285-1.C ! e0fc234d5008e949006f7c1d2462ab2d gcc/testsuite/g++.dg/tls/pr77285-2.C 98121ea9f83550dc4f25814e30c3a21d gcc/testsuite/g++.dg/tls/pr79288.C a9720fe58f11ddd0e2a21ab5df5a77bf gcc/testsuite/g++.dg/tls/static-1.C 29ba155db4cb83d5330b9a806c2cd296 gcc/testsuite/g++.dg/tls/static-1a.cc --- 18094,18100 ---- abcd9d688bd97352cf2201ae04eb0bcd gcc/testsuite/g++.dg/tls/pr66808.C 5b67d09a03c0a87ddd8fb4065b354311 gcc/testsuite/g++.dg/tls/pr69000.C f4ebaa2e9bc5b065a4c81b1ec15efe2c gcc/testsuite/g++.dg/tls/pr77285-1.C ! 2cbcc4da79d109e544b95de73592684e gcc/testsuite/g++.dg/tls/pr77285-2.C 98121ea9f83550dc4f25814e30c3a21d gcc/testsuite/g++.dg/tls/pr79288.C a9720fe58f11ddd0e2a21ab5df5a77bf gcc/testsuite/g++.dg/tls/static-1.C 29ba155db4cb83d5330b9a806c2cd296 gcc/testsuite/g++.dg/tls/static-1a.cc *************** e4cfba8fd55d0168821bd21efa0237d8 gcc/te *** 18063,18068 **** --- 18112,18132 ---- 99dccd364a36e6a92aff0c835b1005ec gcc/testsuite/g++.dg/tls/thread_local-wrap4.C 29af05035afeff433899afc9dd95e242 gcc/testsuite/g++.dg/tls/thread_local1.C 8c04798ad83e68ad71e341845cf0aeea gcc/testsuite/g++.dg/tls/thread_local10.C + d51480fe7dc0200fc725bf275a051cb5 gcc/testsuite/g++.dg/tls/thread_local11.C + 8d34f091643f50841b92580e83aa27fb gcc/testsuite/g++.dg/tls/thread_local11.h + 9ba00c6b2ff009c3c09ac3dc8f87325b gcc/testsuite/g++.dg/tls/thread_local11a.C + 4ee3a501daaa3f91b5a4941105652046 gcc/testsuite/g++.dg/tls/thread_local12a.C + 07a03169e8eaaa6a65499c38ca8154a8 gcc/testsuite/g++.dg/tls/thread_local12b.C + cfa272153ce2e8b87bddf23c6c971e83 gcc/testsuite/g++.dg/tls/thread_local12c.C + 7d539c2fee82717ebf1ad60ba091e890 gcc/testsuite/g++.dg/tls/thread_local12d.C + 2f53ea521803b3719811b517b1071942 gcc/testsuite/g++.dg/tls/thread_local12e.C + b10c9b604da95af284abb90c70bbe962 gcc/testsuite/g++.dg/tls/thread_local12f.C + 2852fc0e74cee314c443e70cb6a4dbf0 gcc/testsuite/g++.dg/tls/thread_local12g.C + eec5b49db7ec33fc099a967e0568bb60 gcc/testsuite/g++.dg/tls/thread_local12h.C + f7e4853292654f0af6a0a460b8924add gcc/testsuite/g++.dg/tls/thread_local12i.C + 6e16acccf0c9f3e11f613dd140679e49 gcc/testsuite/g++.dg/tls/thread_local12j.C + 9eb8b3d800f83f9d7d869d484abd19e6 gcc/testsuite/g++.dg/tls/thread_local12k.C + b6d15debf41ad15b105889629ec239cc gcc/testsuite/g++.dg/tls/thread_local12l.C 24b7dce2c6b463d883c54b5a853ce0ad gcc/testsuite/g++.dg/tls/thread_local2.C 6c980c168dd76bd2823f2ec310b5f47b gcc/testsuite/g++.dg/tls/thread_local2g.C 8961fdb81f19276885d5cbcb01b4aa9f gcc/testsuite/g++.dg/tls/thread_local3.C *************** a9183140f924e2b97b58b04769243a15 gcc/te *** 18288,18294 **** 2719444d1d7a7d86ae85daae86a66833 gcc/testsuite/g++.dg/torture/pr44069.C e5fc7e96fce391069c98fe8b6a6e48eb gcc/testsuite/g++.dg/torture/pr44148.C 21914f1786b649768c65385d18cbda0c gcc/testsuite/g++.dg/torture/pr44206.C ! 61a1cfe01bbf4dc4b73d344cd112a208 gcc/testsuite/g++.dg/torture/pr44295.C 7063a1d0e2e7d10ebad128af0ec171f1 gcc/testsuite/g++.dg/torture/pr44357.C 1be5987e0648f5a325798384c799425c gcc/testsuite/g++.dg/torture/pr44492.C a33cbb24fc74fe5e413c5ca21e00db9d gcc/testsuite/g++.dg/torture/pr44535.C --- 18352,18358 ---- 2719444d1d7a7d86ae85daae86a66833 gcc/testsuite/g++.dg/torture/pr44069.C e5fc7e96fce391069c98fe8b6a6e48eb gcc/testsuite/g++.dg/torture/pr44148.C 21914f1786b649768c65385d18cbda0c gcc/testsuite/g++.dg/torture/pr44206.C ! db2fd8e2b4b769db6007f9091e0777d7 gcc/testsuite/g++.dg/torture/pr44295.C 7063a1d0e2e7d10ebad128af0ec171f1 gcc/testsuite/g++.dg/torture/pr44357.C 1be5987e0648f5a325798384c799425c gcc/testsuite/g++.dg/torture/pr44492.C a33cbb24fc74fe5e413c5ca21e00db9d gcc/testsuite/g++.dg/torture/pr44535.C *************** dea7b576a4c2e4d3fcde36a40bb8ba54 gcc/te *** 18538,18543 **** --- 18602,18612 ---- cbc6cd52e3c07bb0cbd331817134fe42 gcc/testsuite/g++.dg/torture/pr85496.C c004bb94adc4b3e0994cc5b6d5ebfb2c gcc/testsuite/g++.dg/torture/pr86763.C 7f01f3aa3a86678c9ff69f4ecb09c5c8 gcc/testsuite/g++.dg/torture/pr87014.C + dbe58e15424b476b932c58cb5bc16046 gcc/testsuite/g++.dg/torture/pr88149.C + cf4f053f829cc77941d9499636dba788 gcc/testsuite/g++.dg/torture/pr88861.C + 28251f0199f94a1606cac696e1db484b gcc/testsuite/g++.dg/torture/pr89303.C + 6295f2521ee059610fe7d8e12800e20b gcc/testsuite/g++.dg/torture/pr89698.C + 922274fa2bea46eb7cee843b1f139ab8 gcc/testsuite/g++.dg/torture/pr90194.C 389892c1f2e87d69449479d1b053c70c gcc/testsuite/g++.dg/torture/predcom-1.C d28910105d9c9253d94d70eacd5e19d4 gcc/testsuite/g++.dg/torture/pushpop_macro.C a1b47b9c3e69d79d1895ebc4fd11032b gcc/testsuite/g++.dg/torture/stackalign/check.h *************** e8bc9d8d25d9976d39a6ac63446f8a90 gcc/te *** 18855,18860 **** --- 18924,18930 ---- 9d4cf2cbb1dc2baf567abd24e6896123 gcc/testsuite/g++.dg/ubsan/pr81929.C 1e73d2818207263906c21f51263036de gcc/testsuite/g++.dg/ubsan/pr83987-2.C 18c06ad656504d030053c0f32b2e5da2 gcc/testsuite/g++.dg/ubsan/pr83987.C + b418b9ea8faf4e227b8682929711cea2 gcc/testsuite/g++.dg/ubsan/pr89234.C 23b03c04f7b3df05a2e3c261dbfbc91d gcc/testsuite/g++.dg/ubsan/return-1.C c729687b59770dc8f9e0991370cb1879 gcc/testsuite/g++.dg/ubsan/return-2.C 40257a16173db28137a5538f88bfea0e gcc/testsuite/g++.dg/ubsan/return-3.C *************** bbd48a1573bd960959a8345bfc55d5db gcc/te *** 18871,18876 **** --- 18941,18947 ---- 5217088a7dd4248f6e9f0170ee0f262b gcc/testsuite/g++.dg/ubsan/vptr-1.C 5de2b1282f667edcca7c8b102d137b0d gcc/testsuite/g++.dg/ubsan/vptr-10.C 7871fdd28f8d26bc692ef38fd24d6573 gcc/testsuite/g++.dg/ubsan/vptr-11.C + eb65a43bfca2604f5a8b2e2f09212f46 gcc/testsuite/g++.dg/ubsan/vptr-14.C cef046f562c0a23eb331cea94cd5b44f gcc/testsuite/g++.dg/ubsan/vptr-2.C 729147822cd9bf5bf718456c1dbff28d gcc/testsuite/g++.dg/ubsan/vptr-3.C 6d748dbe9831f330d94427b44994cd9f gcc/testsuite/g++.dg/ubsan/vptr-4.C *************** c471f7c58d47cda3d9bff2cd6b0b4a01 gcc/te *** 24279,24284 **** --- 24350,24356 ---- d47f5879509ae9dfb39ea1ee1063230e gcc/testsuite/gcc.c-torture/compile/pr70355.c 86500b6aaf9f75325f0cad332855ed1b gcc/testsuite/gcc.c-torture/compile/pr70633.c 6aa2a7d0fe94be24238130841efe702b gcc/testsuite/gcc.c-torture/compile/pr70916.c + 5a1019493cad94310cfe0d0eea9fbcb0 gcc/testsuite/gcc.c-torture/compile/pr71109.c 329f204bcd03c83da441493cb753c554 gcc/testsuite/gcc.c-torture/compile/pr71112.c 25ea11998401d4aac4c189df9a53715b gcc/testsuite/gcc.c-torture/compile/pr71272.c 5dd5f6724944ca1e08ed8793f7052be3 gcc/testsuite/gcc.c-torture/compile/pr71295.c *************** d2abfdabdbeb6670f7a517aaa74714b3 gcc/te *** 24290,24296 **** 231fb44a71ba7441d73d3169fe8d727a gcc/testsuite/gcc.c-torture/compile/pr72742.c 4804583cdbcf43906c92312b12f102ec gcc/testsuite/gcc.c-torture/compile/pr72749.c 05499a956abf0168b43207b10ff55b6f gcc/testsuite/gcc.c-torture/compile/pr72771.c ! bd9f10a73e289f0fdac2ce08641816f0 gcc/testsuite/gcc.c-torture/compile/pr72802.c 69f131eecfe2e8d743fa8534acd3d542 gcc/testsuite/gcc.c-torture/compile/pr77901.c 1b4de683f3cdcab42ba24cd8b0866196 gcc/testsuite/gcc.c-torture/compile/pr77929.c aadd21b68c00eaa36b449d0c7b5c4a14 gcc/testsuite/gcc.c-torture/compile/pr78162.c --- 24362,24368 ---- 231fb44a71ba7441d73d3169fe8d727a gcc/testsuite/gcc.c-torture/compile/pr72742.c 4804583cdbcf43906c92312b12f102ec gcc/testsuite/gcc.c-torture/compile/pr72749.c 05499a956abf0168b43207b10ff55b6f gcc/testsuite/gcc.c-torture/compile/pr72771.c ! cc75623377210ae96adbf2222955e9c4 gcc/testsuite/gcc.c-torture/compile/pr72802.c 69f131eecfe2e8d743fa8534acd3d542 gcc/testsuite/gcc.c-torture/compile/pr77901.c 1b4de683f3cdcab42ba24cd8b0866196 gcc/testsuite/gcc.c-torture/compile/pr77929.c aadd21b68c00eaa36b449d0c7b5c4a14 gcc/testsuite/gcc.c-torture/compile/pr78162.c *************** d2821401144573975d9f5852f6fc676b gcc/te *** 24321,24331 **** --- 24393,24413 ---- c66006d27d9a3bb3a5e84e943d10d273 gcc/testsuite/gcc.c-torture/compile/pr82096.c 196daa7de18c0a8ecd7788d3e482cc7b gcc/testsuite/gcc.c-torture/compile/pr82337.c 793a4f5f0940ddfbb7bf0f7247486342 gcc/testsuite/gcc.c-torture/compile/pr82549.c + a08af5da6dce88ef7b897f14c7b60b04 gcc/testsuite/gcc.c-torture/compile/pr82564.c e7f459c4af5a8e616ac0225605a4c7c0 gcc/testsuite/gcc.c-torture/compile/pr83448.c 88a8aece4f21f4a06af4abec9669bc53 gcc/testsuite/gcc.c-torture/compile/pr84425.c 1e2f6944d3ccc384e22d3ecf9dd66f9e gcc/testsuite/gcc.c-torture/compile/pr84860.c 46a9146c4c4cdf7759a366c4deb686dd gcc/testsuite/gcc.c-torture/compile/pr85945.c c07cb6bbf144841ec62369603efc6e0b gcc/testsuite/gcc.c-torture/compile/pr87473.c + 7bb746aff7daab01a69c68ac718afce2 gcc/testsuite/gcc.c-torture/compile/pr87647.c + d16a0436ee4e7c019d745cad343ff18b gcc/testsuite/gcc.c-torture/compile/pr89412.c + fc86c5909e9a80383dab6366a0f8648d gcc/testsuite/gcc.c-torture/compile/pr89663-1.c + 4179c42c98ca2dbabe246deb1ea1ad0e gcc/testsuite/gcc.c-torture/compile/pr89663-2.c + 85c74cdcb2f35d038f3606a817979061 gcc/testsuite/gcc.c-torture/compile/pr89703-1.c + 834bb0f0fe637b3f72cd75082e139b0a gcc/testsuite/gcc.c-torture/compile/pr89703-2.c + 9e0af4f9e229aa8a0151b863c40f3072 gcc/testsuite/gcc.c-torture/compile/pr89998-1.c + 28107e4eddc0810b8c90657b7cca7ab0 gcc/testsuite/gcc.c-torture/compile/pr89998-2.c + 99639c63132deca7d94430de65a54739 gcc/testsuite/gcc.c-torture/compile/pr90139.c 9611ffa8936d9c80d0a9ccde8dd093b2 gcc/testsuite/gcc.c-torture/compile/pret-arg.c b9e6ce52b90320c1c3803c25113844c5 gcc/testsuite/gcc.c-torture/compile/pta-1.c ed716c1d1727fc2c748162e0cbc4ee47 gcc/testsuite/gcc.c-torture/compile/ptr-conv-1.c *************** f8b802f2d501bc5da713d9ae58a70c11 gcc/te *** 24906,24911 **** --- 24988,24995 ---- c498b868df794aac4975b6925c3f0d24 gcc/testsuite/gcc.c-torture/execute/20180131-1.c a024382373a506e7761148108043c429 gcc/testsuite/gcc.c-torture/execute/20180226-1.c 03e6abf4c7580822fb8fcbb32c3bb34a gcc/testsuite/gcc.c-torture/execute/20181120-1.c + 7150fff7ca016cb22dde70648cd5b481 gcc/testsuite/gcc.c-torture/execute/20190820-1.c + 2e368329bfad3d99e406eade7d55032d gcc/testsuite/gcc.c-torture/execute/20191023-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 *************** caa74354806f94b1777d3d438547d909 gcc/te *** 25242,25248 **** d7d9ce89ee3d3fe0e8938f62790f051e gcc/testsuite/gcc.c-torture/execute/builtins/abs-2.c 1dda6f7a5d9ce23a5db5f59c430ae29e gcc/testsuite/gcc.c-torture/execute/builtins/abs-3-lib.c 8784d3bd9b264b3c2abfb7b7ea25ccb6 gcc/testsuite/gcc.c-torture/execute/builtins/abs-3.c ! 0e3e56a5232485824e68deda49cd59dd gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp 82dc8c0cc07405b06eb5eee9b43cb713 gcc/testsuite/gcc.c-torture/execute/builtins/chk.h f36e146a2aececdc84d9199d53a363ec gcc/testsuite/gcc.c-torture/execute/builtins/complex-1-lib.c 8b5a662c0134cd00115a5866e1c0b6c9 gcc/testsuite/gcc.c-torture/execute/builtins/complex-1.c --- 25326,25332 ---- d7d9ce89ee3d3fe0e8938f62790f051e gcc/testsuite/gcc.c-torture/execute/builtins/abs-2.c 1dda6f7a5d9ce23a5db5f59c430ae29e gcc/testsuite/gcc.c-torture/execute/builtins/abs-3-lib.c 8784d3bd9b264b3c2abfb7b7ea25ccb6 gcc/testsuite/gcc.c-torture/execute/builtins/abs-3.c ! dd3837d08a72b59f37168df4881ac453 gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp 82dc8c0cc07405b06eb5eee9b43cb713 gcc/testsuite/gcc.c-torture/execute/builtins/chk.h f36e146a2aececdc84d9199d53a363ec gcc/testsuite/gcc.c-torture/execute/builtins/complex-1-lib.c 8b5a662c0134cd00115a5866e1c0b6c9 gcc/testsuite/gcc.c-torture/execute/builtins/complex-1.c *************** ebba06cada42b66940cf9eb3e3d99c95 gcc/te *** 26040,26045 **** --- 26124,26133 ---- 7ef8799b809624e5fa67184df448ee45 gcc/testsuite/gcc.c-torture/execute/pr85529-2.c 3ab7b8879941a2bdaa3491b532cd4a8d gcc/testsuite/gcc.c-torture/execute/pr86231.c be5244d3595e8650a26f33594260da75 gcc/testsuite/gcc.c-torture/execute/pr87623.c + 02748f1c49306654aaf30f2433dce5e7 gcc/testsuite/gcc.c-torture/execute/pr88739.c + f864350b54f06af7e11f09f29c9e0976 gcc/testsuite/gcc.c-torture/execute/pr89195.c + 5235b3e2d6dd776b53d6a44ba5933a8a gcc/testsuite/gcc.c-torture/execute/pr90949.c + 7f239d011b9e98943acdc8e3437ed19c gcc/testsuite/gcc.c-torture/execute/pr91137.c 85441b3599a9d20a4ede0f10c54a4e6b gcc/testsuite/gcc.c-torture/execute/printf-1.c 54f80bf321bfe46d44040493d9821a03 gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c f397d221ccf3a7ce631cf42078dfadb5 gcc/testsuite/gcc.c-torture/execute/pta-field-1.c *************** eb5b0c5d1ba0f0b26668b834ca04262c gcc/te *** 26755,26761 **** f79fea549fa19de730b00d37d3282778 gcc/testsuite/gcc.dg/asan/pr80659.c 643d751ee068e33d234d5fd6b48ee720 gcc/testsuite/gcc.dg/asan/pr81186.c d53f314be67b41e00cd6234bc47d1a8f gcc/testsuite/gcc.dg/asan/pr81224.c ! 668c2f9b583b3061bd97cdf975229771 gcc/testsuite/gcc.dg/asan/pr81923.c 650fc3032a7e08987ca619b55b3a366b gcc/testsuite/gcc.dg/asan/pr82545.c da89dc3f01ef08b35253f1daef462bec gcc/testsuite/gcc.dg/asan/sancov-1.c a765628a82a2516225ae1dd368e4c8fb gcc/testsuite/gcc.dg/asan/use-after-scope-1.c --- 26843,26849 ---- f79fea549fa19de730b00d37d3282778 gcc/testsuite/gcc.dg/asan/pr80659.c 643d751ee068e33d234d5fd6b48ee720 gcc/testsuite/gcc.dg/asan/pr81186.c d53f314be67b41e00cd6234bc47d1a8f gcc/testsuite/gcc.dg/asan/pr81224.c ! db5432c9efc7dc40270438aeee76eb69 gcc/testsuite/gcc.dg/asan/pr81923.c 650fc3032a7e08987ca619b55b3a366b gcc/testsuite/gcc.dg/asan/pr82545.c da89dc3f01ef08b35253f1daef462bec gcc/testsuite/gcc.dg/asan/sancov-1.c a765628a82a2516225ae1dd368e4c8fb gcc/testsuite/gcc.dg/asan/use-after-scope-1.c *************** bcbbadd260cb26dea44e22620dc945b0 gcc/te *** 26788,26794 **** e370903640e76bf4ef407aafe0286689 gcc/testsuite/gcc.dg/asm-fs-1.c 6c3cba24c3d3fbf660605697935b9be5 gcc/testsuite/gcc.dg/asm-names.c 9c3b7de14ce6ac49627b91e2808376e5 gcc/testsuite/gcc.dg/asm-pr24146.c ! 30c0db8f2dbd87c0958f9d1f061177a1 gcc/testsuite/gcc.dg/asm-qual-1.c db0a8e014eddd1da9a78a03ddc2cf187 gcc/testsuite/gcc.dg/asm-wide-1.c 085c27a754d9d7ab0376729bd31a4ffe gcc/testsuite/gcc.dg/asr_div1.c 24f7a4c97b8b88d8299ad100f545b5bf gcc/testsuite/gcc.dg/assign-warn-1.c --- 26876,26884 ---- e370903640e76bf4ef407aafe0286689 gcc/testsuite/gcc.dg/asm-fs-1.c 6c3cba24c3d3fbf660605697935b9be5 gcc/testsuite/gcc.dg/asm-names.c 9c3b7de14ce6ac49627b91e2808376e5 gcc/testsuite/gcc.dg/asm-pr24146.c ! 72dcca850f2740e706c397896bf108ae gcc/testsuite/gcc.dg/asm-qual-1.c ! dca9a54735325b919335c863e6e479ea gcc/testsuite/gcc.dg/asm-qual-2.c ! 3319a351e393bcc9ae1fa119f0f275af gcc/testsuite/gcc.dg/asm-qual-3.c db0a8e014eddd1da9a78a03ddc2cf187 gcc/testsuite/gcc.dg/asm-wide-1.c 085c27a754d9d7ab0376729bd31a4ffe gcc/testsuite/gcc.dg/asr_div1.c 24f7a4c97b8b88d8299ad100f545b5bf gcc/testsuite/gcc.dg/assign-warn-1.c *************** a345c8424d097325ceddaefa74a387d5 gcc/te *** 26970,26975 **** --- 27060,27066 ---- 35bf77a6f395ee231591b83871e4d57c gcc/testsuite/gcc.dg/autopar/pr69109.c d4c6704efcf13b06e8298878fac4997e gcc/testsuite/gcc.dg/autopar/pr69110.c 0a5194faeff35d018f0826c0ededa45b gcc/testsuite/gcc.dg/autopar/pr69426.c + 3d4c01d8ebd6016af606107bc5ba65f5 gcc/testsuite/gcc.dg/autopar/pr91162.c cfcabb1d73fb9955200dafe2f7cd4eda gcc/testsuite/gcc.dg/autopar/reduc-1.c bd8dcababb2b878b4b2e6a7b44270723 gcc/testsuite/gcc.dg/autopar/reduc-1char.c faacb19babd5a7b53cfd57e60279fa11 gcc/testsuite/gcc.dg/autopar/reduc-1short.c *************** fefb3e35a8a1d6bc164a6eb33d7fdbb6 gcc/te *** 27949,27955 **** 99a74985c69613ac4a42ee34fb74051f gcc/testsuite/gcc.dg/cpp/include5.c 407474d1770120e01043176212576177 gcc/testsuite/gcc.dg/cpp/include6.c b169efc722fc4f26173ce092c4172e89 gcc/testsuite/gcc.dg/cpp/include7.c ! 10a60705ad3a511b1b8d4078bd299c37 gcc/testsuite/gcc.dg/cpp/isysroot-1.c d2356c14719220729fca6a1807576fd6 gcc/testsuite/gcc.dg/cpp/isysroot-2.c 6aec7ee07d2c4b1e4dbca7996c29c33d gcc/testsuite/gcc.dg/cpp/lexident.c ed521ab2015dc11905c0db0f47732ede gcc/testsuite/gcc.dg/cpp/lexnum.c --- 28040,28046 ---- 99a74985c69613ac4a42ee34fb74051f gcc/testsuite/gcc.dg/cpp/include5.c 407474d1770120e01043176212576177 gcc/testsuite/gcc.dg/cpp/include6.c b169efc722fc4f26173ce092c4172e89 gcc/testsuite/gcc.dg/cpp/include7.c ! d5a926e3d208d77f347b69e459787e36 gcc/testsuite/gcc.dg/cpp/isysroot-1.c d2356c14719220729fca6a1807576fd6 gcc/testsuite/gcc.dg/cpp/isysroot-2.c 6aec7ee07d2c4b1e4dbca7996c29c33d gcc/testsuite/gcc.dg/cpp/lexident.c ed521ab2015dc11905c0db0f47732ede gcc/testsuite/gcc.dg/cpp/lexnum.c *************** fe82f155f148a27e0e5e22f4daa9c8a9 gcc/te *** 28261,28267 **** ceabc2be17934f64bed1ff4d748cd44a gcc/testsuite/gcc.dg/cpp/unc4.c 34fc89f1d246197a5b7c09184e223c2d gcc/testsuite/gcc.dg/cpp/undef-opt-1.c a4a59949f81e7c481a6a71d7bf69ce8a gcc/testsuite/gcc.dg/cpp/undef2.c ! b580fc14655d151bc7323c9844094653 gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h b2573d118970340cf652e946e2f42a3c gcc/testsuite/gcc.dg/cpp/utf8-5byte-1.c 2adb7d5686ff190b39e11527a9b2fece gcc/testsuite/gcc.dg/cpp/vararg1.c 7d4c3e4f46665b8a19524995ee62bdf7 gcc/testsuite/gcc.dg/cpp/vararg2.c --- 28352,28358 ---- ceabc2be17934f64bed1ff4d748cd44a gcc/testsuite/gcc.dg/cpp/unc4.c 34fc89f1d246197a5b7c09184e223c2d gcc/testsuite/gcc.dg/cpp/undef-opt-1.c a4a59949f81e7c481a6a71d7bf69ce8a gcc/testsuite/gcc.dg/cpp/undef2.c ! b580fc14655d151bc7323c9844094653 gcc/testsuite/gcc.dg/cpp/usr/include/example.h b2573d118970340cf652e946e2f42a3c gcc/testsuite/gcc.dg/cpp/utf8-5byte-1.c 2adb7d5686ff190b39e11527a9b2fece gcc/testsuite/gcc.dg/cpp/vararg1.c 7d4c3e4f46665b8a19524995ee62bdf7 gcc/testsuite/gcc.dg/cpp/vararg2.c *************** c9fb88e0f1b5c073a2385125ee506c3d gcc/te *** 28318,28328 **** fb5a1322bd685744938894a0d61c31cd gcc/testsuite/gcc.dg/darwin-ld-3.c 9403f2a573873e69a5f66d792f2002b9 gcc/testsuite/gcc.dg/darwin-ld-4.c ac166dddd60ee5e26796af85796e8ce4 gcc/testsuite/gcc.dg/darwin-ld-5.c ! fe43be65e311390f6095588e6e663238 gcc/testsuite/gcc.dg/darwin-minversion-1.c 8d9b0ae7630ed3e5ea62d8f528be9535 gcc/testsuite/gcc.dg/darwin-minversion-10.c 2710c165e530b0df4195d645b6818a14 gcc/testsuite/gcc.dg/darwin-minversion-11.c a83187c00bd86f2436c9e84b40b88937 gcc/testsuite/gcc.dg/darwin-minversion-12.c ! 944161eec9e0dffb752119544a188705 gcc/testsuite/gcc.dg/darwin-minversion-2.c 7f95fd24b4c6320826303eb18bf069e5 gcc/testsuite/gcc.dg/darwin-minversion-3.c 6397e1571ab9acb562272433e8b604f5 gcc/testsuite/gcc.dg/darwin-minversion-4.c f82c26e49414aa09e3346f397544e64e gcc/testsuite/gcc.dg/darwin-minversion-5.c --- 28409,28419 ---- fb5a1322bd685744938894a0d61c31cd gcc/testsuite/gcc.dg/darwin-ld-3.c 9403f2a573873e69a5f66d792f2002b9 gcc/testsuite/gcc.dg/darwin-ld-4.c ac166dddd60ee5e26796af85796e8ce4 gcc/testsuite/gcc.dg/darwin-ld-5.c ! f88d22acd71cc3219834b77615cedbc8 gcc/testsuite/gcc.dg/darwin-minversion-1.c 8d9b0ae7630ed3e5ea62d8f528be9535 gcc/testsuite/gcc.dg/darwin-minversion-10.c 2710c165e530b0df4195d645b6818a14 gcc/testsuite/gcc.dg/darwin-minversion-11.c a83187c00bd86f2436c9e84b40b88937 gcc/testsuite/gcc.dg/darwin-minversion-12.c ! 0ee0b5bc033ff95d344923707892a0f3 gcc/testsuite/gcc.dg/darwin-minversion-2.c 7f95fd24b4c6320826303eb18bf069e5 gcc/testsuite/gcc.dg/darwin-minversion-3.c 6397e1571ab9acb562272433e8b604f5 gcc/testsuite/gcc.dg/darwin-minversion-4.c f82c26e49414aa09e3346f397544e64e gcc/testsuite/gcc.dg/darwin-minversion-5.c *************** ee94511375797117140ca777fd1695b1 gcc/te *** 28330,28341 **** 704c9a2dca0a451cca6e5855f7f2347f gcc/testsuite/gcc.dg/darwin-minversion-7.c 5a8b775f8ce1e0cafb8782fbc39b58e4 gcc/testsuite/gcc.dg/darwin-minversion-8.c aa9dfa39c42ef65a88c0a708412fb842 gcc/testsuite/gcc.dg/darwin-minversion-9.c 333be43e38c5b8f9c8bde5d01493902a gcc/testsuite/gcc.dg/darwin-sections.c 3cfa6daebed9a12884613012f50433e4 gcc/testsuite/gcc.dg/darwin-segaddr.c c9bd4478d375a6bea777dcc7c9667d5a gcc/testsuite/gcc.dg/darwin-version-1.c 9145b589b54240035dacb7540309d62e gcc/testsuite/gcc.dg/darwin-weakimport-1.c bda7de2e2fd6472aa3ffe7873407e58d gcc/testsuite/gcc.dg/darwin-weakimport-2.c ! 17dc761b8be4e29841270d6ef57c59a7 gcc/testsuite/gcc.dg/darwin-weakimport-3.c d8aef0c8953934ea061fdce6e985cdf1 gcc/testsuite/gcc.dg/darwin-weakref-1.c 4e2720fdf9f84481a42dcd33f4b6d7a5 gcc/testsuite/gcc.dg/debug/20000503-1.c eeacdefaf2f5fad28609bc9a156918cb gcc/testsuite/gcc.dg/debug/20010207-1.c --- 28421,28433 ---- 704c9a2dca0a451cca6e5855f7f2347f gcc/testsuite/gcc.dg/darwin-minversion-7.c 5a8b775f8ce1e0cafb8782fbc39b58e4 gcc/testsuite/gcc.dg/darwin-minversion-8.c aa9dfa39c42ef65a88c0a708412fb842 gcc/testsuite/gcc.dg/darwin-minversion-9.c + 5ca3ca317094442241bdcaf1320473d2 gcc/testsuite/gcc.dg/darwin-minversion-link.c 333be43e38c5b8f9c8bde5d01493902a gcc/testsuite/gcc.dg/darwin-sections.c 3cfa6daebed9a12884613012f50433e4 gcc/testsuite/gcc.dg/darwin-segaddr.c c9bd4478d375a6bea777dcc7c9667d5a gcc/testsuite/gcc.dg/darwin-version-1.c 9145b589b54240035dacb7540309d62e gcc/testsuite/gcc.dg/darwin-weakimport-1.c bda7de2e2fd6472aa3ffe7873407e58d gcc/testsuite/gcc.dg/darwin-weakimport-2.c ! 616f3eafcf2947e4dd54e569654c0721 gcc/testsuite/gcc.dg/darwin-weakimport-3.c d8aef0c8953934ea061fdce6e985cdf1 gcc/testsuite/gcc.dg/darwin-weakref-1.c 4e2720fdf9f84481a42dcd33f4b6d7a5 gcc/testsuite/gcc.dg/debug/20000503-1.c eeacdefaf2f5fad28609bc9a156918cb gcc/testsuite/gcc.dg/debug/20010207-1.c *************** f3585dc62ae648c6def8f07287ea7b86 gcc/te *** 28450,28455 **** --- 28542,28548 ---- eb3e8d32cc98a65b9bf903f485425719 gcc/testsuite/gcc.dg/debug/dwarf2/pr66482.c f03dc9944066917662e80164971b7db3 gcc/testsuite/gcc.dg/debug/dwarf2/pr71855.c adcb04100f301278ba60a4cc3b3966e4 gcc/testsuite/gcc.dg/debug/dwarf2/pr80263.c + 3fe83570daf6a275058d5254e5811a58 gcc/testsuite/gcc.dg/debug/dwarf2/pr88644.c 04ed708ea8db6a152acb5ebe98de283b gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c 84c94e8435cec0cb1a4a8e83a9c3633d gcc/testsuite/gcc.dg/debug/dwarf2/short-circuit.c fd5753c0c85e2e3c862b46c2f851ad80 gcc/testsuite/gcc.dg/debug/dwarf2/sso.c *************** f04843ea87c9c55accf161e9ee241f15 gcc/te *** 28498,28503 **** --- 28591,28597 ---- 1a1a5a16846e5e1f309692815729ce1d gcc/testsuite/gcc.dg/debug/pr78587.c 2444e8441e19d7a1f14287f247114ea3 gcc/testsuite/gcc.dg/debug/pr80321.c 240d53072f9b064ae6ea8d4d1b72f427 gcc/testsuite/gcc.dg/debug/pr85252.c + a9e9af5e94d12834ec3ce411c747df0d gcc/testsuite/gcc.dg/debug/pr89704.c e39702ba4ac8cdf1b4d7895fa15c394f gcc/testsuite/gcc.dg/debug/redecl-1.c 60c3f3165dda429cbc7646a06969d16c gcc/testsuite/gcc.dg/debug/redecl-2.c 175fa916ededdb94d71518eecbe6fa1a gcc/testsuite/gcc.dg/debug/redecl-3.c *************** c810b7347465014e305c14700d42a85b gcc/te *** 29198,29203 **** --- 29292,29298 ---- 17f7da7684b46a98f721a4c305549405 gcc/testsuite/gcc.dg/gomp/block-7.c 9d8e30eba0019473bc7e43fcdc6b48c1 gcc/testsuite/gcc.dg/gomp/block-8.c 79682352a0c94e668e3de0e2a7fa1c22 gcc/testsuite/gcc.dg/gomp/block-9.c + 4910624b952a49e6626cc2f12abebbbf gcc/testsuite/gcc.dg/gomp/cancel-1.c f4006970812013ba6dd58f3ad04c03c6 gcc/testsuite/gcc.dg/gomp/clause-1.c 69b3c6d02d10bc53d283c974ed1e7ec6 gcc/testsuite/gcc.dg/gomp/clause-2.c 5ac08c2b4cafd06b9d0ecc5295b58bc9 gcc/testsuite/gcc.dg/gomp/collapse-1.c *************** a85b0288fea2d86fdb34d6e61c8fb5c4 gcc/te *** 29333,29340 **** --- 29428,29450 ---- bc9fedcf7d4ab83a9eac1b425a07e995 gcc/testsuite/gcc.dg/gomp/pr68128-2.c b6e412b1e41464bf3c6ad63059710985 gcc/testsuite/gcc.dg/gomp/pr68640.c 94d52afbc97b558472c16b172f9755e9 gcc/testsuite/gcc.dg/gomp/pr72781.c + 789ef66f070336e211866c3e5ec1dc53 gcc/testsuite/gcc.dg/gomp/pr78884.c 3dfa5450530e68792fc799c17f83fc46 gcc/testsuite/gcc.dg/gomp/pr81768-1.c 43bccc2e99a04235390798e75d04c6d1 gcc/testsuite/gcc.dg/gomp/pr81768-2.c + c2238ef3622834a9d2e9a1dd614ede1c gcc/testsuite/gcc.dg/gomp/pr85594.c + 42a7faa8338896e947caadf259df6c7f gcc/testsuite/gcc.dg/gomp/pr87887-1.c + 5f387fcdd6742ba35feb45a289816ad9 gcc/testsuite/gcc.dg/gomp/pr87887-2.c + 213f498fc1d5c80eea0bfc72166e91cf gcc/testsuite/gcc.dg/gomp/pr87895-1.c + 1b395b6db340a30b301bd0c04cdd4e04 gcc/testsuite/gcc.dg/gomp/pr87895-2.c + b462e4f21233e920632f7d3698a11d53 gcc/testsuite/gcc.dg/gomp/pr87895-3.c + e5b0e398ad8cc5330e9e79662a929b72 gcc/testsuite/gcc.dg/gomp/pr88105.c + 522ead0f43ee7eaed965b981a599f4b0 gcc/testsuite/gcc.dg/gomp/pr88107.c + 48e095ec77c345c13667bb35f1e78fa7 gcc/testsuite/gcc.dg/gomp/pr88415.c + d7416cac7d67876a0d0d2ddd8b64c9d9 gcc/testsuite/gcc.dg/gomp/pr88553.c + 5562aec5b8ddedbdc4184f8c90685937 gcc/testsuite/gcc.dg/gomp/pr89104.c + 0c7376f88d06747513e9db1619206c72 gcc/testsuite/gcc.dg/gomp/pr89246-1.c + c60bd6d06d92414ccd01870addd85132 gcc/testsuite/gcc.dg/gomp/pr89246-2.c + ef3626bfd9a01c1b3e4b0d6ca7d55c1a gcc/testsuite/gcc.dg/gomp/pr89796.c 32d1b4709fce01c7b0f596da5c040f2a gcc/testsuite/gcc.dg/gomp/preprocess-1.c 5a96f232ac76ad6d8182f67c3f3a4acf gcc/testsuite/gcc.dg/gomp/reduction-1.c 536359d59fc418a1570a6d8574a66ca1 gcc/testsuite/gcc.dg/gomp/sections-1.c *************** febbd295db57a2123e78312360a0adee gcc/te *** 29562,29567 **** --- 29672,29678 ---- 1b9515edc4478a8ec28b75c7088351fc gcc/testsuite/gcc.dg/graphite/pr79977.c bb10feccbec2eee90b555fb13034016d gcc/testsuite/gcc.dg/graphite/pr80167.c 33c3065b57699d5f72a22e77ad90ad1b gcc/testsuite/gcc.dg/graphite/pr80906.c + 6e5ed82f12c16fde0ef98df0e521f12e gcc/testsuite/gcc.dg/graphite/pr84552.c 16574d3df752f79e2361bed11b712e31 gcc/testsuite/gcc.dg/graphite/run-id-1.c 69c11dc302a921c92977db519167bec1 gcc/testsuite/gcc.dg/graphite/run-id-2.c 84a75a861553ce658d85018a3ced0a6b gcc/testsuite/gcc.dg/graphite/run-id-3.c *************** e9cb995bb14a5d52b9213cdc06457285 gcc/te *** 29790,29795 **** --- 29901,29908 ---- 74f4a8ee94b6280cdb6f8d9dfe9cdd8f gcc/testsuite/gcc.dg/inline-38.c 6f71bec20367f7ca38fe893953d25024 gcc/testsuite/gcc.dg/inline-39.c 2eed98dfcc022044e610af32e1c937c1 gcc/testsuite/gcc.dg/inline-4.c + b1da3859103cd524b6f06a987437986c gcc/testsuite/gcc.dg/inline-40.c + 11fe410fd32445cd4e9ec94bae8bef30 gcc/testsuite/gcc.dg/inline-41.c 7fc691c96ff167ea4acaf530fdfd717a gcc/testsuite/gcc.dg/inline-5.c 96b467a4117442b64211f4f3411003a4 gcc/testsuite/gcc.dg/inline-6.c ba66b4f621efcd9fab8ee6d7a3de2f82 gcc/testsuite/gcc.dg/inline-7.c *************** be5489532ad8117e567e1ea5c8ad4b6a gcc/te *** 29915,29920 **** --- 30028,30034 ---- c6293a456f4127b16f05d471e3cecb9e gcc/testsuite/gcc.dg/ipa/ipcp-2.c 2b28e86ef61a2946185db1daab03a644 gcc/testsuite/gcc.dg/ipa/ipcp-3.c 5204e6cd28c18692d9b78b4d46f02179 gcc/testsuite/gcc.dg/ipa/ipcp-4.c + 1d6188a3ce8385221389a004eb653357 gcc/testsuite/gcc.dg/ipa/ipcp-5.c 869bd19c205f2ccf580f8b640709d232 gcc/testsuite/gcc.dg/ipa/ipcp-agg-1.c c71233f7e2ddb4a8889ca1fe57ea62cc gcc/testsuite/gcc.dg/ipa/ipcp-agg-2.c b30637ee2dfddd2f33e1f6f41de2efa3 gcc/testsuite/gcc.dg/ipa/ipcp-agg-3.c *************** fa8ddbcc7285d68bc45e806fa10c5aa5 gcc/te *** 29970,29975 **** --- 30084,30090 ---- e7fc4be7576352c4cd0c02e049c49640 gcc/testsuite/gcc.dg/ipa/pr81696.c e69e8e71bc18aee250eb3863dee58b57 gcc/testsuite/gcc.dg/ipa/pr82001.c c5a982844b74e3d73d7511fd2cb5ce36 gcc/testsuite/gcc.dg/ipa/pr82808.c + 4d2a385eed9a0157f2820e93f227f411 gcc/testsuite/gcc.dg/ipa/pr88214.c 8294157f7e95bf0310146944166a33f7 gcc/testsuite/gcc.dg/ipa/propalign-1.c 60d5533330395d9f80d7f318856ba6ab gcc/testsuite/gcc.dg/ipa/propalign-2.c b3c9ac7648ec0372964326c8ec24be99 gcc/testsuite/gcc.dg/ipa/propalign-3.c *************** e9ff238723b78ce9df572712d231be5f gcc/te *** 30301,30307 **** 4f9eacf4c94ac2a58a8d84f093e2c490 gcc/testsuite/gcc.dg/lto/pr83954.h 197d1eb297bc02eb3d0ed7634f1bcdf5 gcc/testsuite/gcc.dg/lto/pr83954_0.c 9a2072fdcc9f631ef319beead5326f1d gcc/testsuite/gcc.dg/lto/pr83954_1.c ! 6428e1d34804348de4f0ff99845fa0ba gcc/testsuite/gcc.dg/lto/pr85248_0.c 4656266c7db0c0e6a9f9b406df75deda gcc/testsuite/gcc.dg/lto/pr85248_1.c 260506c568e35bc49112021166edf8f2 gcc/testsuite/gcc.dg/lto/resolutions_0.c 1084184a9b11a84eee39ef130211f70b gcc/testsuite/gcc.dg/lto/save-temps_0.c --- 30416,30422 ---- 4f9eacf4c94ac2a58a8d84f093e2c490 gcc/testsuite/gcc.dg/lto/pr83954.h 197d1eb297bc02eb3d0ed7634f1bcdf5 gcc/testsuite/gcc.dg/lto/pr83954_0.c 9a2072fdcc9f631ef319beead5326f1d gcc/testsuite/gcc.dg/lto/pr83954_1.c ! 8162c65a97b9ede53ca0cc0684a3d0db gcc/testsuite/gcc.dg/lto/pr85248_0.c 4656266c7db0c0e6a9f9b406df75deda gcc/testsuite/gcc.dg/lto/pr85248_1.c 260506c568e35bc49112021166edf8f2 gcc/testsuite/gcc.dg/lto/resolutions_0.c 1084184a9b11a84eee39ef130211f70b gcc/testsuite/gcc.dg/lto/save-temps_0.c *************** aef6b45460d36ff8c438fc57d0f23e58 gcc/te *** 30327,30333 **** 5fffcdfefb3c530e1b472e8397d647cb gcc/testsuite/gcc.dg/march.c 797c5b8279b119e196b60ddd82ff6200 gcc/testsuite/gcc.dg/max-1.c 1a4cdf01852ee814e663ce4a12f81332 gcc/testsuite/gcc.dg/max.c ! ea69a7c6dfdbc300054dbb534113d27c gcc/testsuite/gcc.dg/memcmp-1.c 27c87483c7fcbea0947ee744dcfb316a gcc/testsuite/gcc.dg/memcpy-1.c 4faafb8a22b962ececd697ba35218789 gcc/testsuite/gcc.dg/memcpy-2.c d2e1206d26231777e76c9f21d67f4425 gcc/testsuite/gcc.dg/memcpy-3.c --- 30442,30448 ---- 5fffcdfefb3c530e1b472e8397d647cb gcc/testsuite/gcc.dg/march.c 797c5b8279b119e196b60ddd82ff6200 gcc/testsuite/gcc.dg/max-1.c 1a4cdf01852ee814e663ce4a12f81332 gcc/testsuite/gcc.dg/max.c ! 8f3a6ea1a3e641f5fa27bb7492fe305e gcc/testsuite/gcc.dg/memcmp-1.c 27c87483c7fcbea0947ee744dcfb316a gcc/testsuite/gcc.dg/memcpy-1.c 4faafb8a22b962ececd697ba35218789 gcc/testsuite/gcc.dg/memcpy-2.c d2e1206d26231777e76c9f21d67f4425 gcc/testsuite/gcc.dg/memcpy-3.c *************** e493111d21e55c655eba6eaa3ebdda47 gcc/te *** 30362,30367 **** --- 30477,30483 ---- d07d9c82b2a97d45b09c04346a5ac493 gcc/testsuite/gcc.dg/nested-func-1.c b290d4b46f9b4f3b547af34fc6d6102c gcc/testsuite/gcc.dg/nested-func-10.c a267c54ded564d4503609c4e3b0c06d5 gcc/testsuite/gcc.dg/nested-func-11.c + 3d5fe1b30c5d0cca6b06e3dfa5f9a18c gcc/testsuite/gcc.dg/nested-func-12.c 09b5bf76a67802372892a2a1af9d82b2 gcc/testsuite/gcc.dg/nested-func-2.c dc2268399923a1dc34a044ba5a9fc3c6 gcc/testsuite/gcc.dg/nested-func-3.c 4bc44650c99364fa62ff8683492dcb8f gcc/testsuite/gcc.dg/nested-func-4.c *************** cd48e0546e5f7e9d101ff76d0ac20137 gcc/te *** 32151,32158 **** --- 32267,32296 ---- 1eccee440762e525a97556576c144d1f gcc/testsuite/gcc.dg/pr87024.c 8b7d73da2d5d78000716492365a85d5a gcc/testsuite/gcc.dg/pr8715.c 45a1003c5d24f4875b1c3a5d4f9569fe gcc/testsuite/gcc.dg/pr8788-1.c + 0cb1263d58005e7943ed8e4e7280590d gcc/testsuite/gcc.dg/pr87929.c + b3735ce491eeb75e002c4d0e33f03f4c gcc/testsuite/gcc.dg/pr88074-2.c + b4a69f8a95ed49f8ce827cea184da075 gcc/testsuite/gcc.dg/pr88074.c be04382a35ebb1cfae1b2168f1693a94 gcc/testsuite/gcc.dg/pr8835-1.c + ca44df045802a83545871c2e454164d1 gcc/testsuite/gcc.dg/pr88563.c + 9bc22a141d09239c0b7e4cda9f0c7526 gcc/testsuite/gcc.dg/pr88568.c + 3d03b712ec5ddcf1011a2e3ad2937fab gcc/testsuite/gcc.dg/pr88594.c + 9831a0e405bbc2e4df9d1b9d1d88b7f0 gcc/testsuite/gcc.dg/pr88870.c + b6a6442523e13cc8d22cef6d9b29643f gcc/testsuite/gcc.dg/pr89037.c 6d86fe504f8715d8b161e54c57b05401 gcc/testsuite/gcc.dg/pr8927-1.c + 805c3b6133ae2a2da39e43c108f2cb04 gcc/testsuite/gcc.dg/pr89278.c + e30bce51f7105571806672d1430b4476 gcc/testsuite/gcc.dg/pr89314.c + e0bb97c06584dce3955740a9322025ef gcc/testsuite/gcc.dg/pr89342.c + a4e32f5a03dcacccfc28bcac31a3aa45 gcc/testsuite/gcc.dg/pr89354.c + 60832e2a572601eeddf23c8b9641b3ce gcc/testsuite/gcc.dg/pr89520-1.c + a5f05c4ad343f3e9f77908f5e61b8319 gcc/testsuite/gcc.dg/pr89520-2.c + 257d6cccc19ffd7b76dfd92523ef410e gcc/testsuite/gcc.dg/pr89521-1.c + 2c9315db914b2d546cfa5ba3a8d5d492 gcc/testsuite/gcc.dg/pr89521-2.c + 37d9958e568bd455cf03bd403e5d9560 gcc/testsuite/gcc.dg/pr89590.c + 7e94f0d5a822303e0339481ee07ad796 gcc/testsuite/gcc.dg/pr89679.c + e6faf0945d1f5f965c65759fe557a7d4 gcc/testsuite/gcc.dg/pr89734.c + 0a4f5fe719bf1ce6ae61fc33e03adf0f gcc/testsuite/gcc.dg/pr90082.c + 7c81184e9f0f9dead0859125d7a01a19 gcc/testsuite/gcc.dg/pr90756.c + a5cf54d159902a526ee7923257cf4b92 gcc/testsuite/gcc.dg/pr90760.c 3825638bdc3a2a004aba9b3d95352327 gcc/testsuite/gcc.dg/pr9365-1.c ec1830becced622760bda688ca2bb126 gcc/testsuite/gcc.dg/pr9814-1.c 38d740dd13641c97d4f565dcd6338d23 gcc/testsuite/gcc.dg/pragma-align-2.c *************** f4259274e626508e8351a9fdc0a89800 gcc/te *** 32207,32215 **** e5a739c8627718a467c9f8b2d8469181 gcc/testsuite/gcc.dg/pthread-init-2.c 1e43eff6196cdabcccbabb483e4e5469 gcc/testsuite/gcc.dg/pthread-init-common.h e01cd721e30903c5500537cd55e71685 gcc/testsuite/gcc.dg/pubtypes-1.c ! 54e6ff98ad272c592c094a060a5e2c87 gcc/testsuite/gcc.dg/pubtypes-2.c ! 9585dc1d00f2aeba94313c4b4a6cf636 gcc/testsuite/gcc.dg/pubtypes-3.c ! c6fd093efdaca04d3b1d686091ac9373 gcc/testsuite/gcc.dg/pubtypes-4.c e91f166b4de92c03f81d916150bf3333 gcc/testsuite/gcc.dg/pure-1.c 701b9d5c2eec087c414cba620038d0a6 gcc/testsuite/gcc.dg/pure-2.c 131d7728e0baca355ff811d6c48cc2c2 gcc/testsuite/gcc.dg/qual-component-1.c --- 32345,32353 ---- e5a739c8627718a467c9f8b2d8469181 gcc/testsuite/gcc.dg/pthread-init-2.c 1e43eff6196cdabcccbabb483e4e5469 gcc/testsuite/gcc.dg/pthread-init-common.h e01cd721e30903c5500537cd55e71685 gcc/testsuite/gcc.dg/pubtypes-1.c ! 3072533c594b8d475515566f8170216f gcc/testsuite/gcc.dg/pubtypes-2.c ! e85fea48928a08676475b37086816e7a gcc/testsuite/gcc.dg/pubtypes-3.c ! fffd1bf953242ead14b539c407d690cc gcc/testsuite/gcc.dg/pubtypes-4.c e91f166b4de92c03f81d916150bf3333 gcc/testsuite/gcc.dg/pure-1.c 701b9d5c2eec087c414cba620038d0a6 gcc/testsuite/gcc.dg/pure-2.c 131d7728e0baca355ff811d6c48cc2c2 gcc/testsuite/gcc.dg/qual-component-1.c *************** e18294d3404279a1f70b16e5f321d933 gcc/te *** 32912,32917 **** --- 33050,33056 ---- 33f2d5a949f3be0de5e28e8cf8bec90f gcc/testsuite/gcc.dg/torture/mips-div-1.c 4e40647acd4c0b0f635e3e9be60ce610 gcc/testsuite/gcc.dg/torture/mips-hilo-2.c d07ecd707fac97fa40042e04a59d4b1e gcc/testsuite/gcc.dg/torture/mips-sdata-1.c + f509ceab15e52f50f8b11d7cacc6447f gcc/testsuite/gcc.dg/torture/neon-immediate-timode.c ba222bffc08c28a180298a0d4c6d6aea gcc/testsuite/gcc.dg/torture/nested-fn-1.c 4ac07881b7842f59c3aeffe74b35a881 gcc/testsuite/gcc.dg/torture/parm-coalesce.c ded4330fd1cd52783bd9b1761db038ef gcc/testsuite/gcc.dg/torture/pr16104-1.c *************** afbc98302fa1cb47c152b4f482be2590 gcc/te *** 33467,33475 **** 87c918e158e3ccc3b026108203a1e1ab gcc/testsuite/gcc.dg/torture/pr67953.c 47ff79c68173fd64e216bdb58e6b86e4 gcc/testsuite/gcc.dg/torture/pr68017.c c2e62c5e0ede18699d8172e562ea2a7e gcc/testsuite/gcc.dg/torture/pr68031.c ! a43c7648f03aa051e2d27dac74da598c gcc/testsuite/gcc.dg/torture/pr68037-1.c ! 6d5f77e609e71f1eab3c2325ebebbc78 gcc/testsuite/gcc.dg/torture/pr68037-2.c ! fc417a9d2c3313eed85196c844b37e8f gcc/testsuite/gcc.dg/torture/pr68037-3.c 020e97f08f15594913d5d03292dd388b gcc/testsuite/gcc.dg/torture/pr68060-1.c 1f12518a49562090042d01b5bd7a8743 gcc/testsuite/gcc.dg/torture/pr68060-2.c 153cf921cf7c7ad9b124f36403e29853 gcc/testsuite/gcc.dg/torture/pr68067-1.c --- 33606,33614 ---- 87c918e158e3ccc3b026108203a1e1ab gcc/testsuite/gcc.dg/torture/pr67953.c 47ff79c68173fd64e216bdb58e6b86e4 gcc/testsuite/gcc.dg/torture/pr68017.c c2e62c5e0ede18699d8172e562ea2a7e gcc/testsuite/gcc.dg/torture/pr68031.c ! 37b7fbb665fc7b0b9b6103cd27edc798 gcc/testsuite/gcc.dg/torture/pr68037-1.c ! f2294906a6476231e2b12ff68137ab65 gcc/testsuite/gcc.dg/torture/pr68037-2.c ! 399eb13ce044e42f33e89416e8d43dae gcc/testsuite/gcc.dg/torture/pr68037-3.c 020e97f08f15594913d5d03292dd388b gcc/testsuite/gcc.dg/torture/pr68060-1.c 1f12518a49562090042d01b5bd7a8743 gcc/testsuite/gcc.dg/torture/pr68060-2.c 153cf921cf7c7ad9b124f36403e29853 gcc/testsuite/gcc.dg/torture/pr68067-1.c *************** ba6a8318799042eb31dcfd6ff1f850d0 gcc/te *** 33478,33484 **** 008a31a5e5c41eb7c5a60f3c0b6ee396 gcc/testsuite/gcc.dg/torture/pr68104.c 393863972c6ca6b4f6cb098bd55f868e gcc/testsuite/gcc.dg/torture/pr68240.c cc9c8592efb6deac1cef42effd1a86b6 gcc/testsuite/gcc.dg/torture/pr68248.c ! 23973fc1b122e4dfc5b1d94885428451 gcc/testsuite/gcc.dg/torture/pr68264.c a51a547efd2608066695ab7bae57b97a gcc/testsuite/gcc.dg/torture/pr68379.c 087e8b6be4668a1d43c1b1b5f5ca4ba4 gcc/testsuite/gcc.dg/torture/pr68517.c d97bda1e2b9d4a1a15d587e807ffaba1 gcc/testsuite/gcc.dg/torture/pr68528.c --- 33617,33623 ---- 008a31a5e5c41eb7c5a60f3c0b6ee396 gcc/testsuite/gcc.dg/torture/pr68104.c 393863972c6ca6b4f6cb098bd55f868e gcc/testsuite/gcc.dg/torture/pr68240.c cc9c8592efb6deac1cef42effd1a86b6 gcc/testsuite/gcc.dg/torture/pr68248.c ! 528fea938c3e659f599e826e1fcc189f gcc/testsuite/gcc.dg/torture/pr68264.c a51a547efd2608066695ab7bae57b97a gcc/testsuite/gcc.dg/torture/pr68379.c 087e8b6be4668a1d43c1b1b5f5ca4ba4 gcc/testsuite/gcc.dg/torture/pr68517.c d97bda1e2b9d4a1a15d587e807ffaba1 gcc/testsuite/gcc.dg/torture/pr68528.c *************** e7da68ecb5c3ee758ea96fc820f3665b gcc/te *** 33693,33700 **** --- 33832,33856 ---- 84582e6576b1677bf5e7a5707e957a38 gcc/testsuite/gcc.dg/torture/pr85588.c d85ac821c4f08b30a3a217a09f4b7f83 gcc/testsuite/gcc.dg/torture/pr85989.c 327321c3c176f377b100524879fff77a gcc/testsuite/gcc.dg/torture/pr86505.c + 998ddd79301599888e0d3e0e2d923f8c gcc/testsuite/gcc.dg/torture/pr86554-1.c + 261fd75c0cdfae9be61da923aaa9d608 gcc/testsuite/gcc.dg/torture/pr86554-2.c 81a3b9b7d7f1325b323debfc6a0661f1 gcc/testsuite/gcc.dg/torture/pr87645.c 6a8a30446e8686e53d5eabab08339206 gcc/testsuite/gcc.dg/torture/pr87665.c + 6e9fc245efc4c9fc3b6ac670e231ccc2 gcc/testsuite/gcc.dg/torture/pr89008.c + deaf9ef54f621df69db3af8cdd9248d8 gcc/testsuite/gcc.dg/torture/pr89091.c + a7a8227fb7312ecb3e13fbd0ae9a51c6 gcc/testsuite/gcc.dg/torture/pr89135.c + bc5bedb53a5031564816c911cd9f7bd1 gcc/testsuite/gcc.dg/torture/pr89223.c + 5027d01e012944eed6e57508cf5efccf gcc/testsuite/gcc.dg/torture/pr89505.c + 67023595cda810dfd27ab63686f32e54 gcc/testsuite/gcc.dg/torture/pr89572.c + 66e6d1d850f181ba202147d0c255aafa gcc/testsuite/gcc.dg/torture/pr89677.c + 3ebff6f9fdd08ad83f1b108d52ed3515 gcc/testsuite/gcc.dg/torture/pr89710.c + 03ff50043fe9b066d5d9805c81aeed55 gcc/testsuite/gcc.dg/torture/pr90020.c + f13f8d9bb577a47a3c6edb46c6c340b5 gcc/testsuite/gcc.dg/torture/pr90071.c + 00e6f1395499e5956a1821ce97b809c7 gcc/testsuite/gcc.dg/torture/pr90278.c + 4ef9a08d45ac674212e3da254667abc1 gcc/testsuite/gcc.dg/torture/pr90328.c + 6658d6f5893b06f49b107ca7db0f19e3 gcc/testsuite/gcc.dg/torture/pr91126.c + 9a517e2a6fabc62383485f161c86b5df gcc/testsuite/gcc.dg/torture/pr91200.c + e398c88cb4160ec78fc9362787569fe9 gcc/testsuite/gcc.dg/torture/pr91812.c d086c3946230ba05df33a45be4862730 gcc/testsuite/gcc.dg/torture/pta-callused-1.c 39620328710fd9ff170741766805e426 gcc/testsuite/gcc.dg/torture/pta-escape-1.c f50cbae53561b1267140f574974f7fc0 gcc/testsuite/gcc.dg/torture/pta-ptrarith-1.c *************** b82f09e52f40b5e142ca17a69421bfad gcc/te *** 33708,33713 **** --- 33864,33870 ---- 5e4ed3eeb940f3f8f5de9b8951123bec gcc/testsuite/gcc.dg/torture/restrict-4.c 9bedd7550914e2e483d55e47c44723e3 gcc/testsuite/gcc.dg/torture/restrict-5.c b4bc986eae683153ce2c232320c5bd27 gcc/testsuite/gcc.dg/torture/restrict-6.c + 568321b2b1eea2f97749015ca7f0b1b0 gcc/testsuite/gcc.dg/torture/restrict-7.c ae4bd16210e8a183a5a9c10baeb4171c gcc/testsuite/gcc.dg/torture/ssa-pta-fn-1.c fed60676d191957175e5d7d91ce11f0b gcc/testsuite/gcc.dg/torture/stackalign/alloca-1.c 2d416072232dd69f1b2a756bbb4d1dfd gcc/testsuite/gcc.dg/torture/stackalign/alloca-2.c *************** fa7217b4e402db46b1d64ca38eb6f212 gcc/te *** 33840,33848 **** d5100edb99fb878f5b24f4d8457b2ad6 gcc/testsuite/gcc.dg/tree-prof/pr66295.c 41f2b0f1caac2c21616dfe0830cd87fe gcc/testsuite/gcc.dg/tree-prof/pr79587.c 6326a041bce19e077fb8352676c53447 gcc/testsuite/gcc.dg/tree-prof/prof-robust-1.c ! f1aee3218249eb01a8ccf255141e26bb gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c ! 221cdfc15a54be42d4e3e364000d440a gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c ! cca4eabbfbcccd4665538ceb02d85d15 gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c c2122329768fbed2958f52176f4808a7 gcc/testsuite/gcc.dg/tree-prof/stringop-1.c fd15880f8aec6477baedf3e207a6f1b5 gcc/testsuite/gcc.dg/tree-prof/stringop-2.c a3e14a90c2fe02c076dd64c26c51f57b gcc/testsuite/gcc.dg/tree-prof/switch-case-1.c --- 33997,34005 ---- d5100edb99fb878f5b24f4d8457b2ad6 gcc/testsuite/gcc.dg/tree-prof/pr66295.c 41f2b0f1caac2c21616dfe0830cd87fe gcc/testsuite/gcc.dg/tree-prof/pr79587.c 6326a041bce19e077fb8352676c53447 gcc/testsuite/gcc.dg/tree-prof/prof-robust-1.c ! d90de338620a9a2e0a53410e2d8ac25b gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c ! 5efd0d2523540c7533883445f52205e4 gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c ! a19d2afb91074d3b5a1cf1231a3bf50b gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c c2122329768fbed2958f52176f4808a7 gcc/testsuite/gcc.dg/tree-prof/stringop-1.c fd15880f8aec6477baedf3e207a6f1b5 gcc/testsuite/gcc.dg/tree-prof/stringop-2.c a3e14a90c2fe02c076dd64c26c51f57b gcc/testsuite/gcc.dg/tree-prof/switch-case-1.c *************** d33f4213b2023b5f7798fbdda71e4dce gcc/te *** 34712,34717 **** --- 34869,34875 ---- f46e92172b945f661bae1ab06ce7f4ac gcc/testsuite/gcc.dg/tree-ssa/pr82340.c 75141932aa922f32bbb87834cd9630ad gcc/testsuite/gcc.dg/tree-ssa/pr82726.c f807ed0961b01a668364922fd655af81 gcc/testsuite/gcc.dg/tree-ssa/pr83198.c + e9230122742d9f2e19bb99dcd54db233 gcc/testsuite/gcc.dg/tree-ssa/pr89872.c e6c9f2dd9d7405dee4bfd5d6d0fc455f gcc/testsuite/gcc.dg/tree-ssa/pred-1.c 90c3c1a872e4566cc043c50e818ef036 gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c ec45787b9b781da6181e7960a8cb76f0 gcc/testsuite/gcc.dg/tree-ssa/predcom-2.c *************** dbcccd12dda553ecb5a906b8fe24ab00 gcc/te *** 35286,35291 **** --- 35444,35451 ---- 1de3cdbef0251dc14d21f1fc5e419d05 gcc/testsuite/gcc.dg/tree-ssa/wnull-dereference.c 016029e7b08dbc8fe1d266551df2fdd3 gcc/testsuite/gcc.dg/tree-ssa/writeonly.c 22eb0b8eeae794a6956326b2c9383fb2 gcc/testsuite/gcc.dg/trunc-1.c + dcc8ff133faffd3fe561dfe431569a07 gcc/testsuite/gcc.dg/tsan/pr88030.c + 65ac9eca3bcd49137d096a4f2573e2e2 gcc/testsuite/gcc.dg/tsan/pr90208-2.c 6193757156510ad2bdd1315e65f0d5df gcc/testsuite/gcc.dg/tsan/tsan.exp 19bcece84455539263b66ec6c2bfaa0c gcc/testsuite/gcc.dg/two-types-1.c 95ad9b7c791f67ee2f4be1bd942e6718 gcc/testsuite/gcc.dg/two-types-10.c *************** c611b4ad3ec4bad367027a6ab1ef6505 gcc/te *** 35372,35378 **** c47999a5663fbe110a3d4134c92050c2 gcc/testsuite/gcc.dg/uninit-17-O0.c 728401b250e40769899aeaa5eb3c4f2e gcc/testsuite/gcc.dg/uninit-17.c 997ae4c527f3facdc5684123c0d1cddb gcc/testsuite/gcc.dg/uninit-18.c ! 11f48b9181cccb47d0906280c4cf5c5a gcc/testsuite/gcc.dg/uninit-19.c 668c58e2312b2988b8c85c02786bdbeb gcc/testsuite/gcc.dg/uninit-2-O0.c e7bbbf0090661e8a065ace2511f8f195 gcc/testsuite/gcc.dg/uninit-2.c ddfc3a41edab799f26758dadfa5a4d09 gcc/testsuite/gcc.dg/uninit-20.c --- 35532,35538 ---- c47999a5663fbe110a3d4134c92050c2 gcc/testsuite/gcc.dg/uninit-17-O0.c 728401b250e40769899aeaa5eb3c4f2e gcc/testsuite/gcc.dg/uninit-17.c 997ae4c527f3facdc5684123c0d1cddb gcc/testsuite/gcc.dg/uninit-18.c ! fc736ac0b669fa8623b74bbf61326dd4 gcc/testsuite/gcc.dg/uninit-19.c 668c58e2312b2988b8c85c02786bdbeb gcc/testsuite/gcc.dg/uninit-2-O0.c e7bbbf0090661e8a065ace2511f8f195 gcc/testsuite/gcc.dg/uninit-2.c ddfc3a41edab799f26758dadfa5a4d09 gcc/testsuite/gcc.dg/uninit-20.c *************** fb7fb911814f67c58846323d51173f98 gcc/te *** 35415,35420 **** --- 35575,35581 ---- e821794f64a67239864ede698d50f620 gcc/testsuite/gcc.dg/uninit-pr78295.c e5914ec194abe834db8656483a92fcdc gcc/testsuite/gcc.dg/uninit-pr78548.c e37d87bcbc2425be943ff59a8baa223d gcc/testsuite/gcc.dg/uninit-pr81782.c + bc12979aeecbec0cc9fe92fcb51c30b9 gcc/testsuite/gcc.dg/uninit-pr89296.c 2e2b2ca64d1c3db87c75755a21b4bc06 gcc/testsuite/gcc.dg/uninit-pred-2_a.c 7d67cd7432d67994c6642a61e0020d9e gcc/testsuite/gcc.dg/uninit-pred-2_b.c dc20b95e0c82e7593d7e562b3b1e5aaf gcc/testsuite/gcc.dg/uninit-pred-2_c.c *************** f746ae3bf44586fbe281fa0651586662 gcc/te *** 35580,35585 **** --- 35741,35747 ---- 423921ccfb9c50e7945533d3786afd5a gcc/testsuite/gcc.dg/vect/bb-slp-pr69907.c 4381bb16caa660fbf909762342d1ebaf gcc/testsuite/gcc.dg/vect/bb-slp-pr78205.c 7bde18f16db8ba76291d8ca502888f3e gcc/testsuite/gcc.dg/vect/bb-slp-pr80705.c + a689d9ca07b59620e68b3c142ebeb12e gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c 5428e4471ece92d28564b1d30192ed87 gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-1.c 892d0604340291572dec6ee6deee1f79 gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-2.c ac97f8715430e9981d35fdaf30359bcb gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c *************** ad63fdd3c21a22619dd1f66e5e9a7410 gcc/te *** 35988,35997 **** --- 36150,36163 ---- dd369fee4b54f132a1e62f5f6bd24627 gcc/testsuite/gcc.dg/vect/pr80631-2.c ab01171ee6ad27ca13cbc3085178f4b6 gcc/testsuite/gcc.dg/vect/pr81410.c 3b59a28d58088fb3cfd4756b716a52cb gcc/testsuite/gcc.dg/vect/pr81633.c + 29c150b7cf40ec651f6b59e757f2e5f6 gcc/testsuite/gcc.dg/vect/pr81740-1.c + 1002dc6ff6f56a42e9d25daf4509b973 gcc/testsuite/gcc.dg/vect/pr81740-2.c 7b87a8f59e1bd5262c259ee074d8f12a gcc/testsuite/gcc.dg/vect/pr82108.c e14263baf37160b7fe78dcea65251c62 gcc/testsuite/gcc.dg/vect/pr82436.c 8a0a2f34f0be9c53f74aefbc7f6e8f97 gcc/testsuite/gcc.dg/vect/pr84485.c b9935cee50a5b2b9496865c653bad56a gcc/testsuite/gcc.dg/vect/pr85597.c + 706ffeb725a655c10c3af015fa40d1ea gcc/testsuite/gcc.dg/vect/pr88903-1.c + 3fa6b0486dc4b237da9bc2ffa11dd19e gcc/testsuite/gcc.dg/vect/pr88903-2.c 32d06c886c85516fbdce4ca1bd516496 gcc/testsuite/gcc.dg/vect/section-anchors-pr27770.c 00b8b4e778221f5bedb59cfc69f6c9d7 gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c 218f2e2bcfb33c838c80a2ae8c302759 gcc/testsuite/gcc.dg/vect/slp-1.c *************** aa2dfd18bc6784e0bc7ee00c3ef8561a gcc/te *** 37718,37723 **** --- 37884,37890 ---- 61509ec6c4ac78da70369f76797f43be gcc/testsuite/gcc.target/aarch64/pr81647.c 1d033f86e944555bbda9ca32ec2cb181 gcc/testsuite/gcc.target/aarch64/pr83370.c 438fbd8d80e583c9dd8e4b6f03d561d9 gcc/testsuite/gcc.target/aarch64/pr87511.c + 476fb6d37ab03368b4eead6712633cd2 gcc/testsuite/gcc.target/aarch64/pr90075.c d3e6defa85b5cd4bb506306377e59a53 gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1.c 1f95766b4ed5bfb5f2cf1f168a607a8d gcc/testsuite/gcc.target/aarch64/predefine_large.c d38e476730748c653068e7cb2d8d6ca6 gcc/testsuite/gcc.target/aarch64/predefine_small.c *************** d721a88ae72a8be261b58663490fc7ee gcc/te *** 38755,38760 **** --- 38922,38928 ---- 14c1154266333682f985fe7c6c6e3911 gcc/testsuite/gcc.target/arm/eliminate.c 35daa2bef7020b26f98b70184aa411d4 gcc/testsuite/gcc.target/arm/empty_fiq_handler.c 78487646e9710e62b0d506909e9588a8 gcc/testsuite/gcc.target/arm/epilog-1.c + 98721ddb43f41d55892aac39cc051828 gcc/testsuite/gcc.target/arm/f16_f64_conv_no_dp.c af1ccf2d19987a11d4e08cd9cccf8a69 gcc/testsuite/gcc.target/arm/fixed-point-exec.c 30d8dad9a97da5758da204e1f71d1aa1 gcc/testsuite/gcc.target/arm/fixed_float_conversion.c 6619cf7c22b0ec3c6ca6626d69a8f826 gcc/testsuite/gcc.target/arm/flip-thumb.c *************** e9273f96fab761cd7ea5079114cf850a gcc/te *** 39145,39150 **** --- 39313,39322 ---- 433157273902c9544461f755ababe38e gcc/testsuite/gcc.target/arm/pr82989.c c3c03d98bf1110fec6902ef64b984fde gcc/testsuite/gcc.target/arm/pr83687.c 3c9cf24fda1d77cb6ade61e736cb8056 gcc/testsuite/gcc.target/arm/pr84826.c + 13b419ece183c8289f8cd381a21bd825 gcc/testsuite/gcc.target/arm/pr88167-1.c + 061a3fd61673c5c82f24f6000121e426 gcc/testsuite/gcc.target/arm/pr88167-2.c + c11a83f6e8e6cfecb2d201bb9832efb3 gcc/testsuite/gcc.target/arm/pr88648-asm-syntax-unified.c + 7e118390a8f6adc60508c71323d3a526 gcc/testsuite/gcc.target/arm/pr89222.c 321232597c3b16471c510b972ad557b4 gcc/testsuite/gcc.target/arm/pragma_attribute.c cdf14fd079c2cd544c152c39ceb8ac66 gcc/testsuite/gcc.target/arm/pragma_cpp_fma.c 5b1a9414b404b74eb5cf36760730cf83 gcc/testsuite/gcc.target/arm/pure-code/ffunction-sections.c *************** d5c8fd29fb9b2ff9d36bac3d01f75b13 gcc/te *** 39480,39485 **** --- 39652,39658 ---- 2ed1f0bc4da53e9763c2d91642fbe089 gcc/testsuite/gcc.target/avr/pr71676.c 859b3836a035473a6251a77102bbe16d gcc/testsuite/gcc.target/avr/pr71678.c f91d8c4774a3ac3e49934378e0629b52 gcc/testsuite/gcc.target/avr/pr71873.c + 675750e3e482b5f5103d79510bfe2e28 gcc/testsuite/gcc.target/avr/pr88253.c 881cb1836ddfc3105e0aacacc481aa09 gcc/testsuite/gcc.target/avr/progmem-error-1.c 2eb3f167ae58b534e25afc1b94617746 gcc/testsuite/gcc.target/avr/progmem-error-1.cpp 56de611fd29076ce9da389a853476819 gcc/testsuite/gcc.target/avr/progmem-warning-1.c *************** bce67b236520c561f93006d5bd66eea1 gcc/te *** 41045,41050 **** --- 41218,41224 ---- 923b4b67baacfc2aedf431c5989f2d6e gcc/testsuite/gcc.target/i386/avx512bw-pr70509.c acddcdfbf1c37bd8a7c7778c2c6eeea1 gcc/testsuite/gcc.target/i386/avx512bw-pr77476.c a27fb111df1b083f6396bafe5a66337b gcc/testsuite/gcc.target/i386/avx512bw-pr84524.c + e044a1a48fbcb95582405a16937eeaaa gcc/testsuite/gcc.target/i386/avx512bw-pr91150.c 186b4d26f65c47b5b328795efe473c71 gcc/testsuite/gcc.target/i386/avx512bw-vdbpsadbw-1.c aa76e419ea439da7ae72280b04d232b8 gcc/testsuite/gcc.target/i386/avx512bw-vdbpsadbw-2.c c8ba4cce715fd7698d0bd8d7cc7eca78 gcc/testsuite/gcc.target/i386/avx512bw-vmovdqu16-1.c *************** cd96f3da4c2192b767b58d01e5f08cd4 gcc/te *** 42236,42241 **** --- 42410,42417 ---- 994c768ea6f011cb5852de30a104bd2e gcc/testsuite/gcc.target/i386/avx512vl-pack-2.c 1ce70da2226efd6f3d5d92c101fb79d9 gcc/testsuite/gcc.target/i386/avx512vl-pr79299-1.c e3cc31b3308cdb56423451f2cd8c2a00 gcc/testsuite/gcc.target/i386/avx512vl-pr79299-2.c + 3ac53657ab626d7c8b5b6aecd274e654 gcc/testsuite/gcc.target/i386/avx512vl-pr87214-1.c + 0281545da64a3bf0c393627c047b8f06 gcc/testsuite/gcc.target/i386/avx512vl-pr87214-2.c a7e85788730f7acc7e5174c636d29676 gcc/testsuite/gcc.target/i386/avx512vl-vaddpd-1.c 2b0c748a58e54ffa4102710cc467b33b gcc/testsuite/gcc.target/i386/avx512vl-vaddpd-2.c df4c1c2e223dab18c858a16ca0d5bb83 gcc/testsuite/gcc.target/i386/avx512vl-vaddps-1.c *************** a9b1dee6ec200856939709d32118cf4d gcc/te *** 42974,42980 **** c8f91a97e3f4734a3595572bab26a3e7 gcc/testsuite/gcc.target/i386/builtin-unreachable.c ca53333fb98c69aa04d16fd2bf6b671c gcc/testsuite/gcc.target/i386/builtin_target.c 4278b9cf349a82b327a03ec6fb2f2b43 gcc/testsuite/gcc.target/i386/cadd.c ! 371f18813dae88e704517a2270da2fa7 gcc/testsuite/gcc.target/i386/call-1.c 3985d85760cf959bc3eddfd3b26016b9 gcc/testsuite/gcc.target/i386/chkp-always_inline.c a21a66b279b0f3c13d2cdaa11daf5d10 gcc/testsuite/gcc.target/i386/chkp-bndret.c 5161c68e74b6e01ef0ef925b81edb747 gcc/testsuite/gcc.target/i386/chkp-builtins-1.c --- 43150,43157 ---- c8f91a97e3f4734a3595572bab26a3e7 gcc/testsuite/gcc.target/i386/builtin-unreachable.c ca53333fb98c69aa04d16fd2bf6b671c gcc/testsuite/gcc.target/i386/builtin_target.c 4278b9cf349a82b327a03ec6fb2f2b43 gcc/testsuite/gcc.target/i386/cadd.c ! bcb496f917fb6dad4ebb0207c1334471 gcc/testsuite/gcc.target/i386/call-1.c ! 56af436898c3b3f6cada29e8343591ed gcc/testsuite/gcc.target/i386/call-2.c 3985d85760cf959bc3eddfd3b26016b9 gcc/testsuite/gcc.target/i386/chkp-always_inline.c a21a66b279b0f3c13d2cdaa11daf5d10 gcc/testsuite/gcc.target/i386/chkp-bndret.c 5161c68e74b6e01ef0ef925b81edb747 gcc/testsuite/gcc.target/i386/chkp-builtins-1.c *************** a8f61a3e9626bdd65b4e124dbc719d3e gcc/te *** 43159,43165 **** 41b53063e22afc0a435659c465424d74 gcc/testsuite/gcc.target/i386/fpcvt-2.c fc83f958b3df91c520e859127c479d26 gcc/testsuite/gcc.target/i386/fpcvt-3.c f4728a5ddd8f5b7d2932dd853b2fc88f gcc/testsuite/gcc.target/i386/fpcvt-4.c ! de21850aa1ee59ff7fed86c89e17eb4a gcc/testsuite/gcc.target/i386/fpprec-1.c c7969e1cd5d8b5cc915431d457857508 gcc/testsuite/gcc.target/i386/funcspec-1.c 6806422c170b295fd8ff09ca22b12150 gcc/testsuite/gcc.target/i386/funcspec-10.c c1320fd604803bc04257c984f1e3ba77 gcc/testsuite/gcc.target/i386/funcspec-11.c --- 43336,43342 ---- 41b53063e22afc0a435659c465424d74 gcc/testsuite/gcc.target/i386/fpcvt-2.c fc83f958b3df91c520e859127c479d26 gcc/testsuite/gcc.target/i386/fpcvt-3.c f4728a5ddd8f5b7d2932dd853b2fc88f gcc/testsuite/gcc.target/i386/fpcvt-4.c ! 7b2c5d3679acd1583e1591dbf6d4c2e5 gcc/testsuite/gcc.target/i386/fpprec-1.c c7969e1cd5d8b5cc915431d457857508 gcc/testsuite/gcc.target/i386/funcspec-1.c 6806422c170b295fd8ff09ca22b12150 gcc/testsuite/gcc.target/i386/funcspec-10.c c1320fd604803bc04257c984f1e3ba77 gcc/testsuite/gcc.target/i386/funcspec-11.c *************** bb2e4a2d9494cb7c0124220a190caff5 gcc/te *** 43172,43181 **** 35655de5c9348f2a36254312a8d17908 gcc/testsuite/gcc.target/i386/funcspec-7.c c5cbddeb1b01f35a7fa7f281fb2acdb4 gcc/testsuite/gcc.target/i386/funcspec-8.c 98162f894173cc3f53a1739d65f4341d gcc/testsuite/gcc.target/i386/funcspec-9.c ! a01d3229673b2eb02bbfb6d1191f0b4a gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c b24def76cda5e6910ee6d0acbaa240e6 gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm-run.c ! d9dbff8ba7e41565da26487dba05d168 gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c ! 2d33bd1acc40ca1c46ab6778a9ee92ac gcc/testsuite/gcc.target/i386/fuse-caller-save.c 374b8a1c71832c58fa214de004488fce gcc/testsuite/gcc.target/i386/fxrstor-1.c 4ba171e5929e217bf7404c8b2936f4dd gcc/testsuite/gcc.target/i386/fxrstor64-1.c 997710cd1065bc38da6deb8c74781d45 gcc/testsuite/gcc.target/i386/fxsave-1.c --- 43349,43358 ---- 35655de5c9348f2a36254312a8d17908 gcc/testsuite/gcc.target/i386/funcspec-7.c c5cbddeb1b01f35a7fa7f281fb2acdb4 gcc/testsuite/gcc.target/i386/funcspec-8.c 98162f894173cc3f53a1739d65f4341d gcc/testsuite/gcc.target/i386/funcspec-9.c ! 3a08303eb38d70d9bd8e13a2c173ac97 gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c b24def76cda5e6910ee6d0acbaa240e6 gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm-run.c ! bf2ba8b379ebd6007b1d051966393d53 gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c ! 2b0fb9cbf57f10cb2e97ffa7daa9ca55 gcc/testsuite/gcc.target/i386/fuse-caller-save.c 374b8a1c71832c58fa214de004488fce gcc/testsuite/gcc.target/i386/fxrstor-1.c 4ba171e5929e217bf7404c8b2936f4dd gcc/testsuite/gcc.target/i386/fxrstor64-1.c 997710cd1065bc38da6deb8c74781d45 gcc/testsuite/gcc.target/i386/fxsave-1.c *************** b56cbb83f01d0feeec0ec874e60a703c gcc/te *** 43246,43294 **** cdd25f9aac1f47c227bf3e42b258efa9 gcc/testsuite/gcc.target/i386/incoming-7.c 74e35cf742c4e2fe9ce50213ed289958 gcc/testsuite/gcc.target/i386/incoming-8.c 9be1a58062ffa2d8454af884da1b9f81 gcc/testsuite/gcc.target/i386/incoming-9.c ! 05d3ff7fd6d107eff7cfa9af54aed600 gcc/testsuite/gcc.target/i386/indirect-thunk-1.c 20988adf9b08c4b293517a2c73863343 gcc/testsuite/gcc.target/i386/indirect-thunk-10.c ! d5a10c340aca1e4c1b2116dc0bc19ebe gcc/testsuite/gcc.target/i386/indirect-thunk-2.c ! bfa68ec42c5a8e83f24ab6be88127029 gcc/testsuite/gcc.target/i386/indirect-thunk-3.c ! e893e88ca56cb471d1d2aef3d0750402 gcc/testsuite/gcc.target/i386/indirect-thunk-4.c 76b5340f3d1cae758f7f24f209df6970 gcc/testsuite/gcc.target/i386/indirect-thunk-5.c f337c4677a3c1c6729fe81c061d9d002 gcc/testsuite/gcc.target/i386/indirect-thunk-6.c ! 63f3f75fb9218c46a8907df2585e5a34 gcc/testsuite/gcc.target/i386/indirect-thunk-7.c 136c6b3bb1163a3077d4207bfc4e5275 gcc/testsuite/gcc.target/i386/indirect-thunk-8.c c6d529ddda0429e0c528b2de3c8384d4 gcc/testsuite/gcc.target/i386/indirect-thunk-9.c ! e506d2eeeb5b8b6b43de5c106e80ef80 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c b346e03904cb1d652c2c4820cca183ee gcc/testsuite/gcc.target/i386/indirect-thunk-attr-10.c 4bdf208508a160ea7a3791b56b304575 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-11.c ! ea5b37cade05b968b2f5aae50077c1c3 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c ! ee3b180c37ee9f060fe5b24fbacc428f gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c ! e852a496ae80ad82a0595c6f008a2722 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c ! 3c36cf61aba8f95f05132704b4b0c8eb gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c ! 0bf52c88118e706a56766cfe59df0852 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c ! b5359c757d218de412eb45871137cbee gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c ! 867bd0927104666fdf41c8c325a2553d gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c f062bd94d2bcc6229905c541b481a03c gcc/testsuite/gcc.target/i386/indirect-thunk-attr-9.c ! 77b1a8e1b258b90e1edbf0d45372c0eb gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c ! d58705acef59a328f4fd1bbe1a065bac gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c 6b017ce0cbb85638db969dbc3bd5bf0e gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c 03f873271ded2e06b27882e045268f8d gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c ! 14cc4f9a9b2dd94edd821f84af94c611 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c ! 4a1f3c4792dd58316fcbf552deda210a gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c ! 1bbe5649136f8a47208ce67e71058493 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c ! 8995ae15651c704262997baa0032794a gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c d60595421b98710f0053736975cb92fb gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c 159efa6bc07479836c1f52e007ec64f0 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c ! 1821b816a47c91c728ca25d527e6eef6 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c ! d908699f85e4c95b098f3d81dbba9a45 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c ! 4b8df590855bc29c6f9a503d85024db8 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c ! 2942c6699b3b2e99c37686f596473393 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c ! 8c08ad924ba0e02e7ff6522ade53773b gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c 22d3ec31148d7eb42f889f412e80b98e gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c 4bb39d2b0069f6a250bb165c0280899d gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c ! 097bfd363392d403f5385d77cbb64786 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c ! 1a18d20db658bd8f06db72e826e24451 gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c ! 2f7b88c05e6f84c135d8684048b1ddfb gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c ! 0f53eb2f8dd4745fc0d56597a3a5cc39 gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c ! cc84faa83bbaff46af08a97446ceeeb8 gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c ee5ee3c3feb8c1952691f98991ee7be3 gcc/testsuite/gcc.target/i386/indjmp-1.c aa8a4b5daac0c21a379120ce3ab4e865 gcc/testsuite/gcc.target/i386/inline-mcpy.c e72f30e619db24586870d8d3878cd987 gcc/testsuite/gcc.target/i386/inline_error.c --- 43423,43471 ---- cdd25f9aac1f47c227bf3e42b258efa9 gcc/testsuite/gcc.target/i386/incoming-7.c 74e35cf742c4e2fe9ce50213ed289958 gcc/testsuite/gcc.target/i386/incoming-8.c 9be1a58062ffa2d8454af884da1b9f81 gcc/testsuite/gcc.target/i386/incoming-9.c ! adb09d5162a99729c58768a1bbd44763 gcc/testsuite/gcc.target/i386/indirect-thunk-1.c 20988adf9b08c4b293517a2c73863343 gcc/testsuite/gcc.target/i386/indirect-thunk-10.c ! c95e46383fd5a4501004a0bc1f5d9d21 gcc/testsuite/gcc.target/i386/indirect-thunk-2.c ! 39789750ec26c1198ac2729a8223576c gcc/testsuite/gcc.target/i386/indirect-thunk-3.c ! ec33ad460f56b421c34b43146b548d48 gcc/testsuite/gcc.target/i386/indirect-thunk-4.c 76b5340f3d1cae758f7f24f209df6970 gcc/testsuite/gcc.target/i386/indirect-thunk-5.c f337c4677a3c1c6729fe81c061d9d002 gcc/testsuite/gcc.target/i386/indirect-thunk-6.c ! cd9517f2fb2890df6ac085a32cef6533 gcc/testsuite/gcc.target/i386/indirect-thunk-7.c 136c6b3bb1163a3077d4207bfc4e5275 gcc/testsuite/gcc.target/i386/indirect-thunk-8.c c6d529ddda0429e0c528b2de3c8384d4 gcc/testsuite/gcc.target/i386/indirect-thunk-9.c ! 5f543478181e42734efbd6110e7a3598 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c b346e03904cb1d652c2c4820cca183ee gcc/testsuite/gcc.target/i386/indirect-thunk-attr-10.c 4bdf208508a160ea7a3791b56b304575 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-11.c ! 266256bf9c72b3811751520548dcdf0e gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c ! 7ad61ec0982e9eba391693dbb5e52d1c gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c ! 7acc4f7264d2475c20aeb874707181ee gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c ! b97ad0329e6caafdacfeb7480b4b75cc gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c ! c27b27ac0212566fd3133978c6ad8edf gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c ! 471f2dfce9f65df08f6b6ed7390f1781 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c ! 1a3da150db1b16fc41bda9bbd7ca308e gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c f062bd94d2bcc6229905c541b481a03c gcc/testsuite/gcc.target/i386/indirect-thunk-attr-9.c ! 248485e93728454351ce9e7bd278b507 gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c ! c2a04a6c09ea9da2269bab141681c226 gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c 6b017ce0cbb85638db969dbc3bd5bf0e gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c 03f873271ded2e06b27882e045268f8d gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c ! b56dd85b92863436bb371da8d9f1a9b8 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c ! 2965e739e22d2a2f074cf21684e44d79 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c ! 642fe8dc37b80cd5a23db87f2790d7da gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c ! a7eb6eedf20a23f9562103441bfe762e gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c d60595421b98710f0053736975cb92fb gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c 159efa6bc07479836c1f52e007ec64f0 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c ! 65751ba34bb1b454afdd924216d7f71a gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c ! dc38272c2c77f004e9b1432854810cc0 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c ! 3647393dca68e3247168db40d40dfddc gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c ! c0f49c5ea58f441879a0a937ede627ef gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c ! 577426cf82a5f996238328bf79562260 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c 22d3ec31148d7eb42f889f412e80b98e gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c 4bb39d2b0069f6a250bb165c0280899d gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c ! 9b18301c6819350bef178c74ce5003b1 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c ! efda0af05107f5f099c13c03e1157e44 gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c ! a09ada0e82af6f6e6522d77d6b3e549d gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c ! 995443abdd47a45dcd059145549ffe13 gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c ! 2589f31cac8d58723b7156ade58d680a gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c ee5ee3c3feb8c1952691f98991ee7be3 gcc/testsuite/gcc.target/i386/indjmp-1.c aa8a4b5daac0c21a379120ce3ab4e865 gcc/testsuite/gcc.target/i386/inline-mcpy.c e72f30e619db24586870d8d3878cd987 gcc/testsuite/gcc.target/i386/inline_error.c *************** cda0d89452347311cc45a79be2d8f0fc gcc/te *** 43462,43473 **** 536862ceddae932e3d7da830f0866d31 gcc/testsuite/gcc.target/i386/memcpy-3.c 410707f31f232fcc090c3b9edf6509de gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c 77bdb8cca8e868330213fec62f92dbbf gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c ! 36eea93d2314b17dabcb2b0a81e809d9 gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c 6e857b4eb94b8707c380e73efcbc5a51 gcc/testsuite/gcc.target/i386/memcpy-strategy-4.c 3339e7064ffdc160acaf1274e183706d gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c c84ec8a2cd4608e33d447c561108ce97 gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c 40cce91585f47cde61390171cd489668 gcc/testsuite/gcc.target/i386/memset-1.c ! 8dc0b20158a4bbdad650a8874321918c gcc/testsuite/gcc.target/i386/memset-strategy-1.c e34fc4954adf255e63dd959604f68e95 gcc/testsuite/gcc.target/i386/memset-strategy-2.c abacd2e1491b7c40915d4be18c0229b4 gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c 87dbca58e427b20c0f83b7a2aefbd38a gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c --- 43639,43650 ---- 536862ceddae932e3d7da830f0866d31 gcc/testsuite/gcc.target/i386/memcpy-3.c 410707f31f232fcc090c3b9edf6509de gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c 77bdb8cca8e868330213fec62f92dbbf gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c ! 9724a363e64e9b37caa5ac0cf2159afd gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c 6e857b4eb94b8707c380e73efcbc5a51 gcc/testsuite/gcc.target/i386/memcpy-strategy-4.c 3339e7064ffdc160acaf1274e183706d gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c c84ec8a2cd4608e33d447c561108ce97 gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c 40cce91585f47cde61390171cd489668 gcc/testsuite/gcc.target/i386/memset-1.c ! 5d42d8053ea9c0f90ccef1a5662638be gcc/testsuite/gcc.target/i386/memset-strategy-1.c e34fc4954adf255e63dd959604f68e95 gcc/testsuite/gcc.target/i386/memset-strategy-2.c abacd2e1491b7c40915d4be18c0229b4 gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c 87dbca58e427b20c0f83b7a2aefbd38a gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c *************** e8b5b0802fdf96fc410ecd02fd9f6c85 gcc/te *** 43889,43895 **** fdacb6b61a5d36e161500b14166654ae gcc/testsuite/gcc.target/i386/pr21101.c 6043d0b4998dd913e2d9e533a24f6a55 gcc/testsuite/gcc.target/i386/pr21291.c 95f61d1360614e076d6888229ba0588f gcc/testsuite/gcc.target/i386/pr21518.c ! b905c216d478c5dc8bb6646ee9d631e2 gcc/testsuite/gcc.target/i386/pr22076.c 7c75138083b8282a0a6352ac179a89b4 gcc/testsuite/gcc.target/i386/pr22141.c 8f2b174cc8f2156d82ca023e56a0b480 gcc/testsuite/gcc.target/i386/pr22152.c 8ba2071af1172c3cd6d8259c589bc794 gcc/testsuite/gcc.target/i386/pr22362.c --- 44066,44072 ---- fdacb6b61a5d36e161500b14166654ae gcc/testsuite/gcc.target/i386/pr21101.c 6043d0b4998dd913e2d9e533a24f6a55 gcc/testsuite/gcc.target/i386/pr21291.c 95f61d1360614e076d6888229ba0588f gcc/testsuite/gcc.target/i386/pr21518.c ! 873aea068e102b2d11c7796945eba0e6 gcc/testsuite/gcc.target/i386/pr22076.c 7c75138083b8282a0a6352ac179a89b4 gcc/testsuite/gcc.target/i386/pr22141.c 8f2b174cc8f2156d82ca023e56a0b480 gcc/testsuite/gcc.target/i386/pr22152.c 8ba2071af1172c3cd6d8259c589bc794 gcc/testsuite/gcc.target/i386/pr22362.c *************** e99eb064d503f38b5a9c419915b38ae9 gcc/te *** 43906,43912 **** d0e5cc510ff9f517c83e2f7086ecb411 gcc/testsuite/gcc.target/i386/pr24178.c 7757504bdc3b5bd70de1a5960fb48a38 gcc/testsuite/gcc.target/i386/pr24306.c 32fe0462a1b53d3fc2901ef49c868f00 gcc/testsuite/gcc.target/i386/pr24315.c ! 9e228011509a5ea1e0aa6c774b08d522 gcc/testsuite/gcc.target/i386/pr24414.c 7374a381241b2f4065e5ce84cfc03f77 gcc/testsuite/gcc.target/i386/pr25196.c e2e1fa15682cd42c52206538adc05f64 gcc/testsuite/gcc.target/i386/pr25254.c 303aec7f9e7bd15228b804c19e082f1e gcc/testsuite/gcc.target/i386/pr25293.c --- 44083,44089 ---- d0e5cc510ff9f517c83e2f7086ecb411 gcc/testsuite/gcc.target/i386/pr24178.c 7757504bdc3b5bd70de1a5960fb48a38 gcc/testsuite/gcc.target/i386/pr24306.c 32fe0462a1b53d3fc2901ef49c868f00 gcc/testsuite/gcc.target/i386/pr24315.c ! 0f58cd327f51c6024b5baa09e289c4e1 gcc/testsuite/gcc.target/i386/pr24414.c 7374a381241b2f4065e5ce84cfc03f77 gcc/testsuite/gcc.target/i386/pr25196.c e2e1fa15682cd42c52206538adc05f64 gcc/testsuite/gcc.target/i386/pr25254.c 303aec7f9e7bd15228b804c19e082f1e gcc/testsuite/gcc.target/i386/pr25293.c *************** b5578714e28fde60a2ebba4b56c2fe6b gcc/te *** 43941,43954 **** 9b916b67c68cce873259ce7198b6593b gcc/testsuite/gcc.target/i386/pr32065-1.c 694842da5eb4c5254d8b4bfe1dc8c111 gcc/testsuite/gcc.target/i386/pr32065-2.c 1f9ce93e6d6ec25c764294b90cdb8d4a gcc/testsuite/gcc.target/i386/pr32191.c ! 22203c7ad5e43b79eb21de05c3452845 gcc/testsuite/gcc.target/i386/pr32219-1.c ! 55289efe9ecdd9f86bee8fb362351170 gcc/testsuite/gcc.target/i386/pr32219-2.c ! 78624072da7312f0eb3cca7f219f416a gcc/testsuite/gcc.target/i386/pr32219-3.c ! 3300f67245e33576cce58d6bc96e779c gcc/testsuite/gcc.target/i386/pr32219-4.c ! 8ea5bd47a0cead9c4356e12ff6b5dcef gcc/testsuite/gcc.target/i386/pr32219-5.c ! efa58ffb44f624da36aeac4c205d0d78 gcc/testsuite/gcc.target/i386/pr32219-6.c ! a63c6aefa093092a5201851c6a0ebc55 gcc/testsuite/gcc.target/i386/pr32219-7.c ! 07c126afe0aa2853ccc8538da083fd19 gcc/testsuite/gcc.target/i386/pr32219-8.c 0d754f3296fed9daf149740a268d8931 gcc/testsuite/gcc.target/i386/pr32219-9.c d165bed09148366aaa31f611e7089751 gcc/testsuite/gcc.target/i386/pr32268.c 23769d8ea259071995070dc88b8cefc7 gcc/testsuite/gcc.target/i386/pr32280-1.c --- 44118,44131 ---- 9b916b67c68cce873259ce7198b6593b gcc/testsuite/gcc.target/i386/pr32065-1.c 694842da5eb4c5254d8b4bfe1dc8c111 gcc/testsuite/gcc.target/i386/pr32065-2.c 1f9ce93e6d6ec25c764294b90cdb8d4a gcc/testsuite/gcc.target/i386/pr32191.c ! 3ef466a500bee78557e9f8543d11be2f gcc/testsuite/gcc.target/i386/pr32219-1.c ! 79a2e189766746b2f0f07d4459e83e18 gcc/testsuite/gcc.target/i386/pr32219-2.c ! 324eb5d6acff05e4f8056c7dbee9683c gcc/testsuite/gcc.target/i386/pr32219-3.c ! 31e1ff1e1dea7eb33b16e3b0e7b51cc1 gcc/testsuite/gcc.target/i386/pr32219-4.c ! b4936c47ad27f5cfcac7ada484a24cac gcc/testsuite/gcc.target/i386/pr32219-5.c ! 786db7c45dc2a6ae29200eac1b80c7d3 gcc/testsuite/gcc.target/i386/pr32219-6.c ! 89fc6d77f9488a3112b71f1d23bc8864 gcc/testsuite/gcc.target/i386/pr32219-7.c ! 51cdace97592cf8fb6a08aa60c3eb253 gcc/testsuite/gcc.target/i386/pr32219-8.c 0d754f3296fed9daf149740a268d8931 gcc/testsuite/gcc.target/i386/pr32219-9.c d165bed09148366aaa31f611e7089751 gcc/testsuite/gcc.target/i386/pr32268.c 23769d8ea259071995070dc88b8cefc7 gcc/testsuite/gcc.target/i386/pr32280-1.c *************** b17093c3bfb7dce01e2961b9007a74f1 gcc/te *** 44023,44030 **** 302fd577a2a020db1af8817a3e4168ac gcc/testsuite/gcc.target/i386/pr38824.c cc52fb6e855215f99580b9fa0002669f gcc/testsuite/gcc.target/i386/pr38931.c 776dfcacbe92f325df29c325a1a39d91 gcc/testsuite/gcc.target/i386/pr38988.c ! c8d1ff9429ba4604dabba902390d2bb7 gcc/testsuite/gcc.target/i386/pr39013-1.c ! 209afdf599b8ee30768436785833894b gcc/testsuite/gcc.target/i386/pr39013-2.c 1441ac15d0d7e61256bb4a348e29d6cf gcc/testsuite/gcc.target/i386/pr39058.c b11c8e619e3aa58383c3682c25436e38 gcc/testsuite/gcc.target/i386/pr39082-1.c 94f116f1e5835fc4ff466f7510f151e4 gcc/testsuite/gcc.target/i386/pr39139.c --- 44200,44207 ---- 302fd577a2a020db1af8817a3e4168ac gcc/testsuite/gcc.target/i386/pr38824.c cc52fb6e855215f99580b9fa0002669f gcc/testsuite/gcc.target/i386/pr38931.c 776dfcacbe92f325df29c325a1a39d91 gcc/testsuite/gcc.target/i386/pr38988.c ! 139b8a82970c0216c2382ef1c3fafd48 gcc/testsuite/gcc.target/i386/pr39013-1.c ! 8ed5e3e1acfe24d9701317573d9c1a1b gcc/testsuite/gcc.target/i386/pr39013-2.c 1441ac15d0d7e61256bb4a348e29d6cf gcc/testsuite/gcc.target/i386/pr39058.c b11c8e619e3aa58383c3682c25436e38 gcc/testsuite/gcc.target/i386/pr39082-1.c 94f116f1e5835fc4ff466f7510f151e4 gcc/testsuite/gcc.target/i386/pr39139.c *************** e4cb1df2af54fb838523220e3c4c3720 gcc/te *** 44188,44194 **** d6e516d1e403892d4cc4985025b0655a gcc/testsuite/gcc.target/i386/pr49715-1.c f2fc960bed4e328a5f9df7a309ea139d gcc/testsuite/gcc.target/i386/pr49715-2.c f7ab73a2fd4f6a3dd974d04abb4a16b0 gcc/testsuite/gcc.target/i386/pr49781-1.c ! a507190570770ea7556f6f0f98836c16 gcc/testsuite/gcc.target/i386/pr49866.c f6f60a959460e8b78dd6402b43af4809 gcc/testsuite/gcc.target/i386/pr49920.c 4e2731d8a8d0fba23d5859b02be21702 gcc/testsuite/gcc.target/i386/pr49927.c 4e15899cf7cde94f403bc044accb5f22 gcc/testsuite/gcc.target/i386/pr50038.c --- 44365,44371 ---- d6e516d1e403892d4cc4985025b0655a gcc/testsuite/gcc.target/i386/pr49715-1.c f2fc960bed4e328a5f9df7a309ea139d gcc/testsuite/gcc.target/i386/pr49715-2.c f7ab73a2fd4f6a3dd974d04abb4a16b0 gcc/testsuite/gcc.target/i386/pr49781-1.c ! 60f4b57b6b6a4d210042d2f56e1d33cf gcc/testsuite/gcc.target/i386/pr49866.c f6f60a959460e8b78dd6402b43af4809 gcc/testsuite/gcc.target/i386/pr49920.c 4e2731d8a8d0fba23d5859b02be21702 gcc/testsuite/gcc.target/i386/pr49927.c 4e15899cf7cde94f403bc044accb5f22 gcc/testsuite/gcc.target/i386/pr50038.c *************** aff7074250516571a07457eace3f2639 gcc/te *** 44204,44220 **** e2c5c9c01d62f181543c46c15e625efc gcc/testsuite/gcc.target/i386/pr51236.c cc3feb019a23f31f22f8d90ea35306a2 gcc/testsuite/gcc.target/i386/pr51393.c feae34d686df3d5dc6348f1e08292d5f gcc/testsuite/gcc.target/i386/pr51987.c ! 9e2c6dc3ff1a53066110e22a1b8878fa gcc/testsuite/gcc.target/i386/pr52146.c fa01242d5badde4691345c598d6cad72 gcc/testsuite/gcc.target/i386/pr52171.c ef886cc6e383e494a854c7e9478d4347 gcc/testsuite/gcc.target/i386/pr52252-atom.c 66960d383ca0ec04f2cfc2ce546d9746 gcc/testsuite/gcc.target/i386/pr52252-core.c e90dc7f0b1e6d26c11b5224430e328db gcc/testsuite/gcc.target/i386/pr52330.c ! 663a04de8e14ab888ac539e83abb3848 gcc/testsuite/gcc.target/i386/pr52698.c 0c3fdc1f40423ab5e185c0b1d9df7215 gcc/testsuite/gcc.target/i386/pr52736.c d5747936af421343d3d26320d8dd18a6 gcc/testsuite/gcc.target/i386/pr52754.c ! f3734af93c1735fb407310153bbcc265 gcc/testsuite/gcc.target/i386/pr52857-1.c ! 3c73c51d0b4edd63528474f20107a721 gcc/testsuite/gcc.target/i386/pr52857-2.c ! 381f8bdb2c5734137664263510de70fe gcc/testsuite/gcc.target/i386/pr52876.c ae96f2a6ec3876560fe977282760bda7 gcc/testsuite/gcc.target/i386/pr52882.c 908f895d749fbe4b41db70b705b92270 gcc/testsuite/gcc.target/i386/pr52883.c 7cd607f59acbf5495f51e7f583bdfaaf gcc/testsuite/gcc.target/i386/pr53249.c --- 44381,44397 ---- e2c5c9c01d62f181543c46c15e625efc gcc/testsuite/gcc.target/i386/pr51236.c cc3feb019a23f31f22f8d90ea35306a2 gcc/testsuite/gcc.target/i386/pr51393.c feae34d686df3d5dc6348f1e08292d5f gcc/testsuite/gcc.target/i386/pr51987.c ! 28bbe8fb8e03847360d72e655a04541c gcc/testsuite/gcc.target/i386/pr52146.c fa01242d5badde4691345c598d6cad72 gcc/testsuite/gcc.target/i386/pr52171.c ef886cc6e383e494a854c7e9478d4347 gcc/testsuite/gcc.target/i386/pr52252-atom.c 66960d383ca0ec04f2cfc2ce546d9746 gcc/testsuite/gcc.target/i386/pr52252-core.c e90dc7f0b1e6d26c11b5224430e328db gcc/testsuite/gcc.target/i386/pr52330.c ! c48d1106f891da8cb9f2181a389e01b7 gcc/testsuite/gcc.target/i386/pr52698.c 0c3fdc1f40423ab5e185c0b1d9df7215 gcc/testsuite/gcc.target/i386/pr52736.c d5747936af421343d3d26320d8dd18a6 gcc/testsuite/gcc.target/i386/pr52754.c ! 517bbfb07279a94cd6901ed62f114aa9 gcc/testsuite/gcc.target/i386/pr52857-1.c ! 2d8dc92c147e4d0bcabd8dc699be03f3 gcc/testsuite/gcc.target/i386/pr52857-2.c ! 67c8a8851a7e43ad299c6d011f62094a gcc/testsuite/gcc.target/i386/pr52876.c ae96f2a6ec3876560fe977282760bda7 gcc/testsuite/gcc.target/i386/pr52882.c 908f895d749fbe4b41db70b705b92270 gcc/testsuite/gcc.target/i386/pr52883.c 7cd607f59acbf5495f51e7f583bdfaaf gcc/testsuite/gcc.target/i386/pr53249.c *************** fd40b61a82fba3ab0c6bb50cfedfb117 gcc/te *** 44230,44240 **** 438890bd8588325bfdd31602ae74f65c gcc/testsuite/gcc.target/i386/pr53425-1.c 384ba022d2854e096a4ab0f145961c51 gcc/testsuite/gcc.target/i386/pr53425-2.c b39743561f1aade37b33835b241fb062 gcc/testsuite/gcc.target/i386/pr53623.c ! fab0d7a06b537344b89206ac0118ede7 gcc/testsuite/gcc.target/i386/pr53698.c 7a5c747070caa41b5e773ef449165641 gcc/testsuite/gcc.target/i386/pr53712.c a9790955f72731a48e8cc07e79081c86 gcc/testsuite/gcc.target/i386/pr53759.c b845585001d3aa1599603bf8f8438393 gcc/testsuite/gcc.target/i386/pr53907.c ! a1bce0d57b6fd35c2faf04c2f80d6550 gcc/testsuite/gcc.target/i386/pr54157.c dba42c939904ce7e33213ea822d41659 gcc/testsuite/gcc.target/i386/pr54400.c 414b8adf659b6e0fae2493215e4c8e43 gcc/testsuite/gcc.target/i386/pr54445-1.c f69bb6692a438b6c4c3ae59e8151f9e5 gcc/testsuite/gcc.target/i386/pr54445-2.c --- 44407,44417 ---- 438890bd8588325bfdd31602ae74f65c gcc/testsuite/gcc.target/i386/pr53425-1.c 384ba022d2854e096a4ab0f145961c51 gcc/testsuite/gcc.target/i386/pr53425-2.c b39743561f1aade37b33835b241fb062 gcc/testsuite/gcc.target/i386/pr53623.c ! 179de2cb7520586109384b9edf5a9b30 gcc/testsuite/gcc.target/i386/pr53698.c 7a5c747070caa41b5e773ef449165641 gcc/testsuite/gcc.target/i386/pr53712.c a9790955f72731a48e8cc07e79081c86 gcc/testsuite/gcc.target/i386/pr53759.c b845585001d3aa1599603bf8f8438393 gcc/testsuite/gcc.target/i386/pr53907.c ! c6b9296a558aaf5187a02addf73c05d0 gcc/testsuite/gcc.target/i386/pr54157.c dba42c939904ce7e33213ea822d41659 gcc/testsuite/gcc.target/i386/pr54400.c 414b8adf659b6e0fae2493215e4c8e43 gcc/testsuite/gcc.target/i386/pr54445-1.c f69bb6692a438b6c4c3ae59e8151f9e5 gcc/testsuite/gcc.target/i386/pr54445-2.c *************** f69bb6692a438b6c4c3ae59e8151f9e5 gcc/te *** 44242,44251 **** 49bc157be86e0960ae4e4637c5986069 gcc/testsuite/gcc.target/i386/pr54592.c 6d7b053bbb28bb9e1a4e8c1967a60835 gcc/testsuite/gcc.target/i386/pr54694.c c502c143bfe08e286784446e3a530233 gcc/testsuite/gcc.target/i386/pr54703.c ! 94c3ae931dcc50fe3b4806ac10d8b49d gcc/testsuite/gcc.target/i386/pr55049-1.c ! e64fab110c29e7a7dac4eab53a510cd4 gcc/testsuite/gcc.target/i386/pr55093.c ! 971529c1cb0a306601d8a61d4df7716c gcc/testsuite/gcc.target/i386/pr55116-1.c ! 9fa9c0c5f09f31e76035778e3bf46b4f gcc/testsuite/gcc.target/i386/pr55116-2.c 850e83f914a40f18a2e5580f476368ec gcc/testsuite/gcc.target/i386/pr55130.c 815f3e59894f23400b8f65f47018b0a6 gcc/testsuite/gcc.target/i386/pr55141.c f87cf0427662776b6b805de195141d67 gcc/testsuite/gcc.target/i386/pr55142-1.c --- 44419,44428 ---- 49bc157be86e0960ae4e4637c5986069 gcc/testsuite/gcc.target/i386/pr54592.c 6d7b053bbb28bb9e1a4e8c1967a60835 gcc/testsuite/gcc.target/i386/pr54694.c c502c143bfe08e286784446e3a530233 gcc/testsuite/gcc.target/i386/pr54703.c ! f9b778e3b98dfbae81a8d9edc0e6e7f0 gcc/testsuite/gcc.target/i386/pr55049-1.c ! 2d60942307fe4e7e807550a8a784f351 gcc/testsuite/gcc.target/i386/pr55093.c ! 65f2fe2ece7ea124fb44ac3412f502b0 gcc/testsuite/gcc.target/i386/pr55116-1.c ! daa42859823476fca1b35a79f1daabe0 gcc/testsuite/gcc.target/i386/pr55116-2.c 850e83f914a40f18a2e5580f476368ec gcc/testsuite/gcc.target/i386/pr55130.c 815f3e59894f23400b8f65f47018b0a6 gcc/testsuite/gcc.target/i386/pr55141.c f87cf0427662776b6b805de195141d67 gcc/testsuite/gcc.target/i386/pr55142-1.c *************** b4fb0c886229835ec55bd681f831812b gcc/te *** 44267,44273 **** 2d3d0716987d79a9b2427e2e7237c420 gcc/testsuite/gcc.target/i386/pr55512-4.c ed1ba8dd30b6e7d0c41497405b5c6d08 gcc/testsuite/gcc.target/i386/pr55590-1.c f36e5b68f83ad7f55d170085ad4c4fff gcc/testsuite/gcc.target/i386/pr55590-2.c ! 3a737ef7a5b3519c35502247ffe7f87c gcc/testsuite/gcc.target/i386/pr55597.c e5a8b0266c09bde63ddb64aa7cacdf75 gcc/testsuite/gcc.target/i386/pr55672.c f10a165430aeef45c61d11278003318d gcc/testsuite/gcc.target/i386/pr55686.c 12194a8a936bb0fdc429c4ad3ad689df gcc/testsuite/gcc.target/i386/pr55775.c --- 44444,44450 ---- 2d3d0716987d79a9b2427e2e7237c420 gcc/testsuite/gcc.target/i386/pr55512-4.c ed1ba8dd30b6e7d0c41497405b5c6d08 gcc/testsuite/gcc.target/i386/pr55590-1.c f36e5b68f83ad7f55d170085ad4c4fff gcc/testsuite/gcc.target/i386/pr55590-2.c ! bdfd75705a8ed1ae370d0e6397e89e61 gcc/testsuite/gcc.target/i386/pr55597.c e5a8b0266c09bde63ddb64aa7cacdf75 gcc/testsuite/gcc.target/i386/pr55672.c f10a165430aeef45c61d11278003318d gcc/testsuite/gcc.target/i386/pr55686.c 12194a8a936bb0fdc429c4ad3ad689df gcc/testsuite/gcc.target/i386/pr55775.c *************** af5df137e86c7cfd11e8d68f07c8d25c gcc/te *** 44368,44377 **** 0c2d582f00adc7472660160cba8ba19b gcc/testsuite/gcc.target/i386/pr59839.c d1a0e61387e72001b140b22cec7d1a93 gcc/testsuite/gcc.target/i386/pr59874-1.c 5e70c91e6aef9c124836dbc1d66c0bdc gcc/testsuite/gcc.target/i386/pr59874-2.c ! 2ec6baf4aeb86d68a84163d2477d428e gcc/testsuite/gcc.target/i386/pr59874-3.c 918053d5181acfecc88c708f27f8f436 gcc/testsuite/gcc.target/i386/pr59880.c b87fe1f8e7496a37c4723f6e51a2ea39 gcc/testsuite/gcc.target/i386/pr59927.c ! ef5e7cf22fd8cf05d21ba509a8796cae gcc/testsuite/gcc.target/i386/pr59929.c fb96b888f73b2dddf89b41b3dbc9da0e gcc/testsuite/gcc.target/i386/pr60077-1.c 87f9b9773ac7d3c76e952ed8199c7a7c gcc/testsuite/gcc.target/i386/pr60077-2.c ca6424ec4af0910766ce85dcf738c0c9 gcc/testsuite/gcc.target/i386/pr60205-1.c --- 44545,44554 ---- 0c2d582f00adc7472660160cba8ba19b gcc/testsuite/gcc.target/i386/pr59839.c d1a0e61387e72001b140b22cec7d1a93 gcc/testsuite/gcc.target/i386/pr59874-1.c 5e70c91e6aef9c124836dbc1d66c0bdc gcc/testsuite/gcc.target/i386/pr59874-2.c ! aeab82c6005d256c58b161b65c623187 gcc/testsuite/gcc.target/i386/pr59874-3.c 918053d5181acfecc88c708f27f8f436 gcc/testsuite/gcc.target/i386/pr59880.c b87fe1f8e7496a37c4723f6e51a2ea39 gcc/testsuite/gcc.target/i386/pr59927.c ! 3dfeef977e468af129b5ad1907b7cbcf gcc/testsuite/gcc.target/i386/pr59929.c fb96b888f73b2dddf89b41b3dbc9da0e gcc/testsuite/gcc.target/i386/pr60077-1.c 87f9b9773ac7d3c76e952ed8199c7a7c gcc/testsuite/gcc.target/i386/pr60077-2.c ca6424ec4af0910766ce85dcf738c0c9 gcc/testsuite/gcc.target/i386/pr60205-1.c *************** b30c0b8f6df46552067659d00c2b413f gcc/te *** 44400,44406 **** c2ad80ced67848aa724c64790fae16e7 gcc/testsuite/gcc.target/i386/pr61423.c 2e681bb97b6870c8edb1514a2edad73a gcc/testsuite/gcc.target/i386/pr61446.c 41c81c5a9c11d9139ad858d341f4ab52 gcc/testsuite/gcc.target/i386/pr61572.c ! 3f4cbdecf1917a066aa3efa5412627d9 gcc/testsuite/gcc.target/i386/pr61599-1.c 15c0ecfbbb1821976c91e66b75baac53 gcc/testsuite/gcc.target/i386/pr61599-2.c 2ee0efa258974320c9447d777ed0cd1e gcc/testsuite/gcc.target/i386/pr61794.c 0af95498db628ce9ab87f06bcc3818c2 gcc/testsuite/gcc.target/i386/pr61801.c --- 44577,44583 ---- c2ad80ced67848aa724c64790fae16e7 gcc/testsuite/gcc.target/i386/pr61423.c 2e681bb97b6870c8edb1514a2edad73a gcc/testsuite/gcc.target/i386/pr61446.c 41c81c5a9c11d9139ad858d341f4ab52 gcc/testsuite/gcc.target/i386/pr61572.c ! 051e752e6f5f3b5c6c426d1626da2a1e gcc/testsuite/gcc.target/i386/pr61599-1.c 15c0ecfbbb1821976c91e66b75baac53 gcc/testsuite/gcc.target/i386/pr61599-2.c 2ee0efa258974320c9447d777ed0cd1e gcc/testsuite/gcc.target/i386/pr61794.c 0af95498db628ce9ab87f06bcc3818c2 gcc/testsuite/gcc.target/i386/pr61801.c *************** c401b2b80062c0d9567f773adca682d1 gcc/te *** 44416,44422 **** c5d5a6e45cbe795c19e3ccb075e2c353 gcc/testsuite/gcc.target/i386/pr63495.c d411131829e4182bcd0f01c491669453 gcc/testsuite/gcc.target/i386/pr63527.c 50ea06065d2e674f38033361f71fea26 gcc/testsuite/gcc.target/i386/pr63534.c ! b94984e7c628f56d531f92149504a0ed gcc/testsuite/gcc.target/i386/pr63538.c 561aeb698494e71bb2a1de5b9848f5f5 gcc/testsuite/gcc.target/i386/pr63542-1.c c2179fbbe68a40ce1e3486b98db6a47f gcc/testsuite/gcc.target/i386/pr63542-2.c 9c17e1a161d05dcffaa896376c5ecc02 gcc/testsuite/gcc.target/i386/pr63563.c --- 44593,44599 ---- c5d5a6e45cbe795c19e3ccb075e2c353 gcc/testsuite/gcc.target/i386/pr63495.c d411131829e4182bcd0f01c491669453 gcc/testsuite/gcc.target/i386/pr63527.c 50ea06065d2e674f38033361f71fea26 gcc/testsuite/gcc.target/i386/pr63534.c ! 30aaae44143ac2a44f16e0db0cec0af6 gcc/testsuite/gcc.target/i386/pr63538.c 561aeb698494e71bb2a1de5b9848f5f5 gcc/testsuite/gcc.target/i386/pr63542-1.c c2179fbbe68a40ce1e3486b98db6a47f gcc/testsuite/gcc.target/i386/pr63542-2.c 9c17e1a161d05dcffaa896376c5ecc02 gcc/testsuite/gcc.target/i386/pr63563.c *************** e70e8eb63cff3610044e38fdad89e34b gcc/te *** 44438,44444 **** 516133a673f4f174a446f2fc7a80e412 gcc/testsuite/gcc.target/i386/pr64114.c 06cb0e7a72d6bb5683ff9652a80c6ae9 gcc/testsuite/gcc.target/i386/pr64291-1.c 2b7674a20e784b4cf390cb695a576dfe gcc/testsuite/gcc.target/i386/pr64291-2.c ! 49608ce01a9e0d30d5e69f3723ac732a gcc/testsuite/gcc.target/i386/pr64317.c 062641897c1f576f8e34f6685a28feab gcc/testsuite/gcc.target/i386/pr64386.c 4ab995a39be1d9f6ab51bed74868b4d9 gcc/testsuite/gcc.target/i386/pr64387.c 7f461e790905a6a59c18169efe63b087 gcc/testsuite/gcc.target/i386/pr64393.c --- 44615,44621 ---- 516133a673f4f174a446f2fc7a80e412 gcc/testsuite/gcc.target/i386/pr64114.c 06cb0e7a72d6bb5683ff9652a80c6ae9 gcc/testsuite/gcc.target/i386/pr64291-1.c 2b7674a20e784b4cf390cb695a576dfe gcc/testsuite/gcc.target/i386/pr64291-2.c ! e05ae6facbbbf26826893a785e206bc4 gcc/testsuite/gcc.target/i386/pr64317.c 062641897c1f576f8e34f6685a28feab gcc/testsuite/gcc.target/i386/pr64386.c 4ab995a39be1d9f6ab51bed74868b4d9 gcc/testsuite/gcc.target/i386/pr64387.c 7f461e790905a6a59c18169efe63b087 gcc/testsuite/gcc.target/i386/pr64393.c *************** eba9fc2cd96c68428c1d78d35c3f7e05 gcc/te *** 44507,44513 **** 9691b9fb2206de681ed083de689c89c7 gcc/testsuite/gcc.target/i386/pr66334.c 7e1d59ce8293eee1a626a8693fdb6e4f gcc/testsuite/gcc.target/i386/pr66412.c bbcc4bad6e85470b150a7b32458d3e35 gcc/testsuite/gcc.target/i386/pr66424.c ! a15e6d4602a8708a08f7528489b4c898 gcc/testsuite/gcc.target/i386/pr66470.c adcb62c54481141a24a282aa3efd51eb gcc/testsuite/gcc.target/i386/pr66473.c a90810efc19810051c42bbf05fc2f72b gcc/testsuite/gcc.target/i386/pr66560-1.c e67da57ff2aa6286b42715d71c873ffa gcc/testsuite/gcc.target/i386/pr66560-2.c --- 44684,44690 ---- 9691b9fb2206de681ed083de689c89c7 gcc/testsuite/gcc.target/i386/pr66334.c 7e1d59ce8293eee1a626a8693fdb6e4f gcc/testsuite/gcc.target/i386/pr66412.c bbcc4bad6e85470b150a7b32458d3e35 gcc/testsuite/gcc.target/i386/pr66424.c ! 19bb97a482a9e3d01f67c4fe65bfdb96 gcc/testsuite/gcc.target/i386/pr66470.c adcb62c54481141a24a282aa3efd51eb gcc/testsuite/gcc.target/i386/pr66473.c a90810efc19810051c42bbf05fc2f72b gcc/testsuite/gcc.target/i386/pr66560-1.c e67da57ff2aa6286b42715d71c873ffa gcc/testsuite/gcc.target/i386/pr66560-2.c *************** ab260630154714d6a92fa264356ec077 gcc/te *** 44529,44536 **** 2736f559d9ed3001d877f7450d819853 gcc/testsuite/gcc.target/i386/pr66818.c 3a8525427a2c06a8b1267e82570c0b32 gcc/testsuite/gcc.target/i386/pr66819-1.c 706dbaecc1d6996b81f72c1443d9709e gcc/testsuite/gcc.target/i386/pr66819-2.c ! 3b93308bdecf42fb2c2176aa9e4b5b1e gcc/testsuite/gcc.target/i386/pr66819-3.c ! c775a183cd78571eb1b5fb056475ab2a gcc/testsuite/gcc.target/i386/pr66819-4.c a085a03f3e2cb2efe81768c469c38448 gcc/testsuite/gcc.target/i386/pr66819-5.c 977ca8ebf3373ba11feedebeb69aea2c gcc/testsuite/gcc.target/i386/pr66821.c 32a7bc9b1156780a17e61321fa5d0b20 gcc/testsuite/gcc.target/i386/pr66824.c --- 44706,44713 ---- 2736f559d9ed3001d877f7450d819853 gcc/testsuite/gcc.target/i386/pr66818.c 3a8525427a2c06a8b1267e82570c0b32 gcc/testsuite/gcc.target/i386/pr66819-1.c 706dbaecc1d6996b81f72c1443d9709e gcc/testsuite/gcc.target/i386/pr66819-2.c ! 84d18626653364c4aeae9aa54f1304e1 gcc/testsuite/gcc.target/i386/pr66819-3.c ! 6f5c7f70b4c803c33e6e9c040c4e1d69 gcc/testsuite/gcc.target/i386/pr66819-4.c a085a03f3e2cb2efe81768c469c38448 gcc/testsuite/gcc.target/i386/pr66819-5.c 977ca8ebf3373ba11feedebeb69aea2c gcc/testsuite/gcc.target/i386/pr66821.c 32a7bc9b1156780a17e61321fa5d0b20 gcc/testsuite/gcc.target/i386/pr66824.c *************** bea583c8259434a6a826cd2c30638802 gcc/te *** 44566,44572 **** 20023d24d21d62dd6789da2589104070 gcc/testsuite/gcc.target/i386/pr67963-2.c 139b1bdb98e3296f9ddee0838954fe94 gcc/testsuite/gcc.target/i386/pr67963-3.c 1821cb97402be7ffe7bdc5f23f8e3199 gcc/testsuite/gcc.target/i386/pr67985-1.c ! 4212d7a5843c1b880161949554647739 gcc/testsuite/gcc.target/i386/pr67985-2.c 4f7ff503d6a736a2ea199675c6262322 gcc/testsuite/gcc.target/i386/pr67985-3.c 4f8f5573505d9b60bab0ee48c5fe922f gcc/testsuite/gcc.target/i386/pr67995-1.c e5e29507fd1dff3f68bf471a7ebabe04 gcc/testsuite/gcc.target/i386/pr67995-2.c --- 44743,44749 ---- 20023d24d21d62dd6789da2589104070 gcc/testsuite/gcc.target/i386/pr67963-2.c 139b1bdb98e3296f9ddee0838954fe94 gcc/testsuite/gcc.target/i386/pr67963-3.c 1821cb97402be7ffe7bdc5f23f8e3199 gcc/testsuite/gcc.target/i386/pr67985-1.c ! dd5ee7ef74ea9dfe9ed9da3e757be1a2 gcc/testsuite/gcc.target/i386/pr67985-2.c 4f7ff503d6a736a2ea199675c6262322 gcc/testsuite/gcc.target/i386/pr67985-3.c 4f8f5573505d9b60bab0ee48c5fe922f gcc/testsuite/gcc.target/i386/pr67995-1.c e5e29507fd1dff3f68bf471a7ebabe04 gcc/testsuite/gcc.target/i386/pr67995-2.c *************** fb74d73535ae13841ad274eed8746e1d gcc/te *** 44705,44711 **** 1b44db35f8df9b2763028de6125de9e3 gcc/testsuite/gcc.target/i386/pr70738-4.c 61eaf57653733d78911ae6debba297f3 gcc/testsuite/gcc.target/i386/pr70738-5.c 2c2031d1591def6dc255c3c4e1b5ea98 gcc/testsuite/gcc.target/i386/pr70738-6.c ! a12202905bd4ab853068b48a260a39fc gcc/testsuite/gcc.target/i386/pr70738-7.c 3a1ef414c243d704288672ae2ed719ae gcc/testsuite/gcc.target/i386/pr70738-8.c b79c0bcdf58f6e1bba3f6620fefa6f0f gcc/testsuite/gcc.target/i386/pr70738-9.c 0adbcabe255b36ad14e5fced66fe8a7c gcc/testsuite/gcc.target/i386/pr70750-1.c --- 44882,44888 ---- 1b44db35f8df9b2763028de6125de9e3 gcc/testsuite/gcc.target/i386/pr70738-4.c 61eaf57653733d78911ae6debba297f3 gcc/testsuite/gcc.target/i386/pr70738-5.c 2c2031d1591def6dc255c3c4e1b5ea98 gcc/testsuite/gcc.target/i386/pr70738-6.c ! 234057751bd4af4434ba4b09c32e7465 gcc/testsuite/gcc.target/i386/pr70738-7.c 3a1ef414c243d704288672ae2ed719ae gcc/testsuite/gcc.target/i386/pr70738-8.c b79c0bcdf58f6e1bba3f6620fefa6f0f gcc/testsuite/gcc.target/i386/pr70738-9.c 0adbcabe255b36ad14e5fced66fe8a7c gcc/testsuite/gcc.target/i386/pr70750-1.c *************** c912bb68571e4d5714afa27a8a0bbfbb gcc/te *** 44749,44755 **** 6b0d02fbe2f46273848e2a4f2e1562cb gcc/testsuite/gcc.target/i386/pr77761.c e24e16431564ae1db7f06ba62681abaa gcc/testsuite/gcc.target/i386/pr77833.c e5be6cf6d0060be81cbbeb24d1b45ac8 gcc/testsuite/gcc.target/i386/pr77856.c ! ddcb7f5cb340f4cab23fd0392eed65ce gcc/testsuite/gcc.target/i386/pr77881.c ebdf78610e5253029e5305e68875b6c9 gcc/testsuite/gcc.target/i386/pr77991.c e92468cd3d6db284b41cbd24c3b82524 gcc/testsuite/gcc.target/i386/pr78035.c a0f1a716d3aa44f2dbe260d265da5118 gcc/testsuite/gcc.target/i386/pr78037.c --- 44926,44932 ---- 6b0d02fbe2f46273848e2a4f2e1562cb gcc/testsuite/gcc.target/i386/pr77761.c e24e16431564ae1db7f06ba62681abaa gcc/testsuite/gcc.target/i386/pr77833.c e5be6cf6d0060be81cbbeb24d1b45ac8 gcc/testsuite/gcc.target/i386/pr77856.c ! 93e914077bc0a0fec60293774cf1fb84 gcc/testsuite/gcc.target/i386/pr77881.c ebdf78610e5253029e5305e68875b6c9 gcc/testsuite/gcc.target/i386/pr77991.c e92468cd3d6db284b41cbd24c3b82524 gcc/testsuite/gcc.target/i386/pr78035.c a0f1a716d3aa44f2dbe260d265da5118 gcc/testsuite/gcc.target/i386/pr78037.c *************** b7f2c0b3d382bb72b6dc274a9b8ae5cf gcc/te *** 44860,44870 **** --- 45037,45070 ---- 240d163e1ad4d0cb25ce82ae3b980872 gcc/testsuite/gcc.target/i386/pr85095-1.c da8dddf5375beef8a5899951924780ea gcc/testsuite/gcc.target/i386/pr85095-2.c 2c9fa20db8db57984e210a776424e3aa gcc/testsuite/gcc.target/i386/pr85193.c + e89855e4afbc8be3009567aa4b7ef483 gcc/testsuite/gcc.target/i386/pr86334.c 4302cd96928c315422f2c1fd5d5e767e gcc/testsuite/gcc.target/i386/pr86627.c + c5292926a0f6c5a61e62910d3331aa2f gcc/testsuite/gcc.target/i386/pr86952.c 7300b3d2e6c51732192703b00e1633eb gcc/testsuite/gcc.target/i386/pr87065.c 4bcf1f2404bf83c2e402690653adf2bc gcc/testsuite/gcc.target/i386/pr87370.c 640f95ee3bcfcdd3ddddf350e70a219e gcc/testsuite/gcc.target/i386/pr87550.c + b91162801f7d0d6af855bd692e22ab63 gcc/testsuite/gcc.target/i386/pr87853.c 4b54801016bc4b3cc228ac7dd70de407 gcc/testsuite/gcc.target/i386/pr87928.c + 8aa15a462c33644313684b33656a3512 gcc/testsuite/gcc.target/i386/pr88416.c + 561c19e980c43266fc4b3d3a28fe8bc2 gcc/testsuite/gcc.target/i386/pr88418.c + 40a7ef6fb3bcabb2e6a14793769e9983 gcc/testsuite/gcc.target/i386/pr88470.c + 44f18856f00f48988a17b6c2f08502ed gcc/testsuite/gcc.target/i386/pr88906.c + f32a1aef3d374a5b4ad42047396a3805 gcc/testsuite/gcc.target/i386/pr88938.c + 141169b2e8ff64bdba2208ca1feb4a7c gcc/testsuite/gcc.target/i386/pr88948.c + 741d1c44cbb9ba8dfdfc363a84b46d20 gcc/testsuite/gcc.target/i386/pr89523-1a.c + bcb8ff722b8b594bcfd9075d37eaff6f gcc/testsuite/gcc.target/i386/pr89523-1b.c + 1a7b71dea5f1b81b4c20d53bd27d1604 gcc/testsuite/gcc.target/i386/pr89523-2.c + c477d7333d280aa9ba0232f363826175 gcc/testsuite/gcc.target/i386/pr89523-3.c + 37d95d0f23ac1bfc04510b1a7b4a0ed7 gcc/testsuite/gcc.target/i386/pr89523-4.c + b9dc216c8935f73126bb07b75ef58c82 gcc/testsuite/gcc.target/i386/pr89523-5.c + 21b4d2c258f9255ac099efdcceba396c gcc/testsuite/gcc.target/i386/pr89523-6.c + 104a2416e74048f45915a5e09656c2aa gcc/testsuite/gcc.target/i386/pr89523-7.c + fa633632e627d7c0fcb34ba2673e196b gcc/testsuite/gcc.target/i386/pr89523-8.c + aab7cb035d0456e2d0bf25f7f53cfd30 gcc/testsuite/gcc.target/i386/pr89523-9.c + f529a8c1dee59aa4275d01977b57a0f2 gcc/testsuite/gcc.target/i386/pr89945.c + 71daed2fce58de22bfa193c1d29d8205 gcc/testsuite/gcc.target/i386/pr90547.c + 214e297c0a7eb9cbfdb0fe5aaefdfaa2 gcc/testsuite/gcc.target/i386/pr91131.c + acc82a5b459bf1433e5f0d6d4849c00a gcc/testsuite/gcc.target/i386/pr91704.c 849234c7a569c1e86023244bc5561263 gcc/testsuite/gcc.target/i386/pr9771-1.c 24ceb6d5f3f5cde4b9d852839bdb98ae gcc/testsuite/gcc.target/i386/prefetchw-1.c f11f4731c396f099373c033ab016a64f gcc/testsuite/gcc.target/i386/prefetchwt1-1.c *************** e2839913fadc6a00676c8f02deb3f59e gcc/te *** 44893,44924 **** 27b94da412b0e514a304cb667a1125f1 gcc/testsuite/gcc.target/i386/regparm-stdcall.c f460909450afd8b803c32061496a4d75 gcc/testsuite/gcc.target/i386/regparm.c e47bbd1acfd37236fccff011d4c82e82 gcc/testsuite/gcc.target/i386/reload-1.c ! e7bdddab413e9342ceea674dcc11efa9 gcc/testsuite/gcc.target/i386/ret-thunk-1.c ! 6e20f7a638ba67005154ba64a205629f gcc/testsuite/gcc.target/i386/ret-thunk-10.c ! 75f06d0b0b8a0aa78cbafd8eb7ac2ac3 gcc/testsuite/gcc.target/i386/ret-thunk-11.c ! 09edc45a2c857d7bf5d35a27ba84d494 gcc/testsuite/gcc.target/i386/ret-thunk-12.c ! c7716ba4d15d568304b3d15fa4dd1efa gcc/testsuite/gcc.target/i386/ret-thunk-13.c ! a115b1a64b3d2e61e179f8cb9c41c216 gcc/testsuite/gcc.target/i386/ret-thunk-14.c ! 305b2b3bbf8f5059edc1a6cd5d289c9f gcc/testsuite/gcc.target/i386/ret-thunk-15.c ! eab910bbf14695323d54cd2754f6c13c gcc/testsuite/gcc.target/i386/ret-thunk-16.c cc34b9f508b9c8334f3288b096cb78f7 gcc/testsuite/gcc.target/i386/ret-thunk-17.c 7d462469a74829644f625dfd13e56245 gcc/testsuite/gcc.target/i386/ret-thunk-18.c 43b59ba2c7eee4d8d807697e3b13092c gcc/testsuite/gcc.target/i386/ret-thunk-19.c ! dd35d0e1f55e30827da00a7a3b72f2fc gcc/testsuite/gcc.target/i386/ret-thunk-2.c f3573edd139415913734286a945036c2 gcc/testsuite/gcc.target/i386/ret-thunk-20.c b2806d5288ed6597c93c3c78b98f8d80 gcc/testsuite/gcc.target/i386/ret-thunk-21.c ! 2c5f8484e1fe3ff717433984bd9e430e gcc/testsuite/gcc.target/i386/ret-thunk-22.c ! 224c4a6a3890adb17f39118b19a33a3b gcc/testsuite/gcc.target/i386/ret-thunk-23.c ! 0ec08e1985573ff0205c8a7332d5f386 gcc/testsuite/gcc.target/i386/ret-thunk-24.c ! 97183e70692a615a0923a028c6a93205 gcc/testsuite/gcc.target/i386/ret-thunk-25.c 8322bb75badb0a22b6e9d839deed11ee gcc/testsuite/gcc.target/i386/ret-thunk-26.c ! fd5c5e9bb01a2b8dc7c5f900d1d87998 gcc/testsuite/gcc.target/i386/ret-thunk-3.c ! ca53ce2b9665ac27d11a2ef828928360 gcc/testsuite/gcc.target/i386/ret-thunk-4.c ! b0ef8962f326b0e0b7e4311f2dc69a16 gcc/testsuite/gcc.target/i386/ret-thunk-5.c ! c7853edb1c95703c93c35ebe12f833be gcc/testsuite/gcc.target/i386/ret-thunk-6.c ! b51e205421f10208d462405cedb0f344 gcc/testsuite/gcc.target/i386/ret-thunk-7.c ! 848e6463fd3be83bbddee8c7c6dbfdf3 gcc/testsuite/gcc.target/i386/ret-thunk-8.c ! a5919d44210b1a316a9c96379d2a234c gcc/testsuite/gcc.target/i386/ret-thunk-9.c fe7ee8a9110596ef272c4f9b6ad8adad gcc/testsuite/gcc.target/i386/retarg.c 7a1e62697051aa68ade1f41fac61f6f8 gcc/testsuite/gcc.target/i386/rop1.c 63bd489c03ce382cdba38349c30041ad gcc/testsuite/gcc.target/i386/rotate-1.c --- 45093,45124 ---- 27b94da412b0e514a304cb667a1125f1 gcc/testsuite/gcc.target/i386/regparm-stdcall.c f460909450afd8b803c32061496a4d75 gcc/testsuite/gcc.target/i386/regparm.c e47bbd1acfd37236fccff011d4c82e82 gcc/testsuite/gcc.target/i386/reload-1.c ! 9205036382fb9371e714bf429d4a169a gcc/testsuite/gcc.target/i386/ret-thunk-1.c ! 6971ab1d9b2e25035613d9da2ff831ea gcc/testsuite/gcc.target/i386/ret-thunk-10.c ! 45844628ad39226fa04f338031bc35ff gcc/testsuite/gcc.target/i386/ret-thunk-11.c ! 07476edeb4edea2a4b3fdf830978b54a gcc/testsuite/gcc.target/i386/ret-thunk-12.c ! 14d89c82cb35544a32336240ef58c500 gcc/testsuite/gcc.target/i386/ret-thunk-13.c ! 8165c1fc58be1608397622f39d926c07 gcc/testsuite/gcc.target/i386/ret-thunk-14.c ! 98a375b3b373296dc9ba7870c9c50d32 gcc/testsuite/gcc.target/i386/ret-thunk-15.c ! 18e90525f1abe3c52128427f9fb39b3e gcc/testsuite/gcc.target/i386/ret-thunk-16.c cc34b9f508b9c8334f3288b096cb78f7 gcc/testsuite/gcc.target/i386/ret-thunk-17.c 7d462469a74829644f625dfd13e56245 gcc/testsuite/gcc.target/i386/ret-thunk-18.c 43b59ba2c7eee4d8d807697e3b13092c gcc/testsuite/gcc.target/i386/ret-thunk-19.c ! a1802923debe6064d056b780f4ee6111 gcc/testsuite/gcc.target/i386/ret-thunk-2.c f3573edd139415913734286a945036c2 gcc/testsuite/gcc.target/i386/ret-thunk-20.c b2806d5288ed6597c93c3c78b98f8d80 gcc/testsuite/gcc.target/i386/ret-thunk-21.c ! 29d69e15cf5da161b7801ded9cd2d41c gcc/testsuite/gcc.target/i386/ret-thunk-22.c ! 4b91204f1e7fb9ce122819bf38a258c0 gcc/testsuite/gcc.target/i386/ret-thunk-23.c ! 80f22614da15e0c6c503229e825594bb gcc/testsuite/gcc.target/i386/ret-thunk-24.c ! 3fbc6374d7bea54c795b6b7f151f22ae gcc/testsuite/gcc.target/i386/ret-thunk-25.c 8322bb75badb0a22b6e9d839deed11ee gcc/testsuite/gcc.target/i386/ret-thunk-26.c ! 32bd7ac2d14f8f3a3b38d58c04171c4f gcc/testsuite/gcc.target/i386/ret-thunk-3.c ! c0e1cf033713f4d9f46705d898afe08a gcc/testsuite/gcc.target/i386/ret-thunk-4.c ! 3eaad5daa9f6529dc9f4448e224a4c08 gcc/testsuite/gcc.target/i386/ret-thunk-5.c ! d51fd9f2d7e7069d77886270f69d0f12 gcc/testsuite/gcc.target/i386/ret-thunk-6.c ! 4234854200abfc91e34d2fc53f42eff3 gcc/testsuite/gcc.target/i386/ret-thunk-7.c ! 6f9c6a5223282b22bc65105d4a0e7e53 gcc/testsuite/gcc.target/i386/ret-thunk-8.c ! 3b6dbe45cc864be4f9eaf860348ad4da gcc/testsuite/gcc.target/i386/ret-thunk-9.c fe7ee8a9110596ef272c4f9b6ad8adad gcc/testsuite/gcc.target/i386/retarg.c 7a1e62697051aa68ade1f41fac61f6f8 gcc/testsuite/gcc.target/i386/rop1.c 63bd489c03ce382cdba38349c30041ad gcc/testsuite/gcc.target/i386/rotate-1.c *************** c441836462a082b52b8df4f3644b8ee1 gcc/te *** 46501,46507 **** 7594d13b6afbb5788fd3ff108fa1798d gcc/testsuite/gcc.target/powerpc/altivec-10.c 87921f986b2e966c18eb11c96891c323 gcc/testsuite/gcc.target/powerpc/altivec-11.c 42750be666c33639ff6fcf929f5593ed gcc/testsuite/gcc.target/powerpc/altivec-12.c ! 1e8231a30a3c22fd4174ccfbc4bf8117 gcc/testsuite/gcc.target/powerpc/altivec-13.c 0b9bf01e28c861e640e6a5a50df72d04 gcc/testsuite/gcc.target/powerpc/altivec-14.c 7d113615ba33f8f305ca3d6dbaf84dd3 gcc/testsuite/gcc.target/powerpc/altivec-15.c 11c64f0deba1e4621429dc584ee88ae4 gcc/testsuite/gcc.target/powerpc/altivec-16.c --- 46701,46707 ---- 7594d13b6afbb5788fd3ff108fa1798d gcc/testsuite/gcc.target/powerpc/altivec-10.c 87921f986b2e966c18eb11c96891c323 gcc/testsuite/gcc.target/powerpc/altivec-11.c 42750be666c33639ff6fcf929f5593ed gcc/testsuite/gcc.target/powerpc/altivec-12.c ! 21f4460e010cad4fdac5158dd8484518 gcc/testsuite/gcc.target/powerpc/altivec-13.c 0b9bf01e28c861e640e6a5a50df72d04 gcc/testsuite/gcc.target/powerpc/altivec-14.c 7d113615ba33f8f305ca3d6dbaf84dd3 gcc/testsuite/gcc.target/powerpc/altivec-15.c 11c64f0deba1e4621429dc584ee88ae4 gcc/testsuite/gcc.target/powerpc/altivec-16.c *************** d4d40fb333f645bfba7d5f95d447bb27 gcc/te *** 46530,46536 **** a007efc316dcfa1327d38adb2feca1d8 gcc/testsuite/gcc.target/powerpc/altivec-4.c 2586491d3f0993007b6292363a62437c gcc/testsuite/gcc.target/powerpc/altivec-5.c 9304d8abe305f6069344f238eecabcc1 gcc/testsuite/gcc.target/powerpc/altivec-6.c ! 341295c259d8ac5d502dca5fea643bf9 gcc/testsuite/gcc.target/powerpc/altivec-7.c 3b775cfada4a412a8209544bafd90f12 gcc/testsuite/gcc.target/powerpc/altivec-8.c 344ee7e5df617a76788873f981090de7 gcc/testsuite/gcc.target/powerpc/altivec-9.c a6cf4dfc1e0f3ea252ad2bc0e93a9c65 gcc/testsuite/gcc.target/powerpc/altivec-cell-1.c --- 46730,46736 ---- a007efc316dcfa1327d38adb2feca1d8 gcc/testsuite/gcc.target/powerpc/altivec-4.c 2586491d3f0993007b6292363a62437c gcc/testsuite/gcc.target/powerpc/altivec-5.c 9304d8abe305f6069344f238eecabcc1 gcc/testsuite/gcc.target/powerpc/altivec-6.c ! cbd0203ee0c15e549c54fd05af0bb9ec gcc/testsuite/gcc.target/powerpc/altivec-7.h 3b775cfada4a412a8209544bafd90f12 gcc/testsuite/gcc.target/powerpc/altivec-8.c 344ee7e5df617a76788873f981090de7 gcc/testsuite/gcc.target/powerpc/altivec-9.c a6cf4dfc1e0f3ea252ad2bc0e93a9c65 gcc/testsuite/gcc.target/powerpc/altivec-cell-1.c *************** f33508c9e3523762dc11271c9a92ede6 gcc/te *** 46556,46561 **** --- 46756,46763 ---- 4295f24ac801b25ff384e9c0059dc3f0 gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c f12268642caf2b8f80bf48e0b7f5bd87 gcc/testsuite/gcc.target/powerpc/altivec-vec-merge.c c1ad5df368bf78f67f3b4c15cbe1c757 gcc/testsuite/gcc.target/powerpc/altivec-volatile.c + 541dc69590a0abf3cefd6043e9b408fe gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-1.c + 70f3b3f2a0f6da1f6a9709a6730b94e1 gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-2.c f92704c5f7f462e7f0b0f7a56209b9c1 gcc/testsuite/gcc.target/powerpc/asm-es-1.c ab233b59d18c7aa71a26292124ceae27 gcc/testsuite/gcc.target/powerpc/asm-es-2.c f1f6a9ec080c7f1554b538d5701c21e2 gcc/testsuite/gcc.target/powerpc/asm-y.c *************** f7e7c3525d555350473e6eaeb20a763c gcc/te *** 46566,46572 **** 8ab84785c1c977598d1e8a4da5840d01 gcc/testsuite/gcc.target/powerpc/bcd-1.c 8527d886bfcfacf285ed77737269e96d gcc/testsuite/gcc.target/powerpc/bcd-2.c e3c5cf48f1ba6a92d77572167cd142a8 gcc/testsuite/gcc.target/powerpc/bcd-3.c ! c0e5b1d38588a8004b42aa28e765606d gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp 50b9b13be56cde20a9deafd8957022cb gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-0.c ed537806770a6bd863695dc3c1c6db97 gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-1.c bd78b4043653e615210457352f190cb9 gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c --- 46768,46774 ---- 8ab84785c1c977598d1e8a4da5840d01 gcc/testsuite/gcc.target/powerpc/bcd-1.c 8527d886bfcfacf285ed77737269e96d gcc/testsuite/gcc.target/powerpc/bcd-2.c e3c5cf48f1ba6a92d77572167cd142a8 gcc/testsuite/gcc.target/powerpc/bcd-3.c ! 798b92b860d8f2856bfc7af42dac46e9 gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp 50b9b13be56cde20a9deafd8957022cb gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-0.c ed537806770a6bd863695dc3c1c6db97 gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-1.c bd78b4043653e615210457352f190cb9 gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c *************** caf01994c96172dac156c3da29317823 gcc/te *** 46647,46656 **** 931398e0111335374a570dab11f94aba gcc/testsuite/gcc.target/powerpc/bswap64-3.c 37c12fff6f77333d7cb7d787bbb7f908 gcc/testsuite/gcc.target/powerpc/bswap64-4.c 5d7722a5bfe7fbb9896a1eb4f88e022d gcc/testsuite/gcc.target/powerpc/builtins-1.c ! fc8793b521e1298ab0e99e4fb318b34b gcc/testsuite/gcc.target/powerpc/builtins-2.c ! b46abca6c4cd08a5de1d13f33c9a9ef6 gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c 492ac089419f0bb359f220419b9dd912 gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c ! 87b0fefa6c0cfed1e213437588c52b0d gcc/testsuite/gcc.target/powerpc/builtins-3.c 152da1e6a5994b32721d906034b3265b gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c 7f35a56e8dea223eabe96fb48dba06ed gcc/testsuite/gcc.target/powerpc/byte-in-either-range-0.c ffc28a6e3572df02a4e4068818687d49 gcc/testsuite/gcc.target/powerpc/byte-in-either-range-1.c --- 46849,46859 ---- 931398e0111335374a570dab11f94aba gcc/testsuite/gcc.target/powerpc/bswap64-3.c 37c12fff6f77333d7cb7d787bbb7f908 gcc/testsuite/gcc.target/powerpc/bswap64-4.c 5d7722a5bfe7fbb9896a1eb4f88e022d gcc/testsuite/gcc.target/powerpc/builtins-1.c ! 8774005798929f576a8fdff946576421 gcc/testsuite/gcc.target/powerpc/builtins-2.c ! 2105a866339dec7c2679e3b6be1b635e gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c ! a0d756ecde56337c3f89c8c8c37abe60 gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c 492ac089419f0bb359f220419b9dd912 gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c ! e1af92c4195273ca93ed3d7d666b5a48 gcc/testsuite/gcc.target/powerpc/builtins-3.c 152da1e6a5994b32721d906034b3265b gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c 7f35a56e8dea223eabe96fb48dba06ed gcc/testsuite/gcc.target/powerpc/byte-in-either-range-0.c ffc28a6e3572df02a4e4068818687d49 gcc/testsuite/gcc.target/powerpc/byte-in-either-range-1.c *************** caf3aba39c0565b4369f2e0263b16af5 gcc/te *** 46674,46680 **** 4b60a8662648a73cedee85dd08e278eb gcc/testsuite/gcc.target/powerpc/cprophard.c ceee196d52c1e634069b5d122f09e1ae gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c 30020a956cfba3e60bd9193370a7c3b8 gcc/testsuite/gcc.target/powerpc/crypto-builtin-1-runnable.c ! 1fb2215d04b688ce2fdb0faccd58b012 gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c 14fe4a3bc84df2b97d9440c94d7c8339 gcc/testsuite/gcc.target/powerpc/crypto-builtin-2.c 4e3992362b37b544083ac6eaeaa1acca gcc/testsuite/gcc.target/powerpc/ctz-1.c 9266181f224f779baa6b98a2f3b171e8 gcc/testsuite/gcc.target/powerpc/ctz-2.c --- 46877,46883 ---- 4b60a8662648a73cedee85dd08e278eb gcc/testsuite/gcc.target/powerpc/cprophard.c ceee196d52c1e634069b5d122f09e1ae gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c 30020a956cfba3e60bd9193370a7c3b8 gcc/testsuite/gcc.target/powerpc/crypto-builtin-1-runnable.c ! 16426344a1170bd3e605af23630e86d3 gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c 14fe4a3bc84df2b97d9440c94d7c8339 gcc/testsuite/gcc.target/powerpc/crypto-builtin-2.c 4e3992362b37b544083ac6eaeaa1acca gcc/testsuite/gcc.target/powerpc/ctz-1.c 9266181f224f779baa6b98a2f3b171e8 gcc/testsuite/gcc.target/powerpc/ctz-2.c *************** dcd67b030ac5a36c48772f45c9311a7a gcc/te *** 46683,46688 **** --- 46886,46892 ---- dff00811bdc4a0d32afb132f16084b8c gcc/testsuite/gcc.target/powerpc/darn-0.c a3b7e0d3cc77ae3e0b0aea94e91b58e5 gcc/testsuite/gcc.target/powerpc/darn-1.c 3a484a34727d320db4da25fdd45adeeb gcc/testsuite/gcc.target/powerpc/darn-2.c + 7f5ef611c24ec8821112bbf698514fe7 gcc/testsuite/gcc.target/powerpc/darn-3.c 965986b227062a2b8c664c916a71ad45 gcc/testsuite/gcc.target/powerpc/darwin-abi-1.c 9a0e4836781f28669ddca26eb214c2b2 gcc/testsuite/gcc.target/powerpc/darwin-abi-10.c 66e5cfd1b7491e37c0ef258d09b6634d gcc/testsuite/gcc.target/powerpc/darwin-abi-11.c *************** dc2cf23b07f8ee916ff7449cc8184804 gcc/te *** 46695,46701 **** 077c78cf99209d89283cbb5bddc4cb00 gcc/testsuite/gcc.target/powerpc/darwin-abi-7.c fbafe20fb642af275b59d470cbb84ac9 gcc/testsuite/gcc.target/powerpc/darwin-abi-8.c 0f82424f87427f46ef95b80a9c04784a gcc/testsuite/gcc.target/powerpc/darwin-abi-9.c ! f8920aee2833fd404308e7134a58361a gcc/testsuite/gcc.target/powerpc/darwin-bool-1.c d898994d2dd12e123fcb756d46aed2c4 gcc/testsuite/gcc.target/powerpc/darwin-bool-2.c 4d1a56e3fa08f8cd9ab9a96132d6f7a7 gcc/testsuite/gcc.target/powerpc/darwin-ehreturn-1.c e5a3f954e535f339c4a0f35fc50c6302 gcc/testsuite/gcc.target/powerpc/darwin-longdouble.c --- 46899,46905 ---- 077c78cf99209d89283cbb5bddc4cb00 gcc/testsuite/gcc.target/powerpc/darwin-abi-7.c fbafe20fb642af275b59d470cbb84ac9 gcc/testsuite/gcc.target/powerpc/darwin-abi-8.c 0f82424f87427f46ef95b80a9c04784a gcc/testsuite/gcc.target/powerpc/darwin-abi-9.c ! 42da5af8a68c5b53856fefe7531c3a1f gcc/testsuite/gcc.target/powerpc/darwin-bool-1.c d898994d2dd12e123fcb756d46aed2c4 gcc/testsuite/gcc.target/powerpc/darwin-bool-2.c 4d1a56e3fa08f8cd9ab9a96132d6f7a7 gcc/testsuite/gcc.target/powerpc/darwin-ehreturn-1.c e5a3f954e535f339c4a0f35fc50c6302 gcc/testsuite/gcc.target/powerpc/darwin-longdouble.c *************** edc590c61b2a5fd6c1f8da5e10b52099 gcc/te *** 46715,46721 **** 918f43d2707c381ec6a3c8f95d06ba7a gcc/testsuite/gcc.target/powerpc/dfp-td-2.c d29a538f7ef7ada44a91b35380ca809c gcc/testsuite/gcc.target/powerpc/dfp-td-3.c f99e26532b9bfe0b24631290281df325 gcc/testsuite/gcc.target/powerpc/dfp-td.c ! bdcc34a514465c46140fce3b10a28b9a gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp 03cc7e47a4479ec2055b9af5a2055522 gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-0.c 6959ef5cd0438cde997e2af826ef2d8d gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-1.c 8f82047dd5d13bd7808101a6cae2f96a gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-10.c --- 46919,46925 ---- 918f43d2707c381ec6a3c8f95d06ba7a gcc/testsuite/gcc.target/powerpc/dfp-td-2.c d29a538f7ef7ada44a91b35380ca809c gcc/testsuite/gcc.target/powerpc/dfp-td-3.c f99e26532b9bfe0b24631290281df325 gcc/testsuite/gcc.target/powerpc/dfp-td.c ! 4636147efb530baa2ed1a66c7ac87be8 gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp 03cc7e47a4479ec2055b9af5a2055522 gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-0.c 6959ef5cd0438cde997e2af826ef2d8d gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-1.c 8f82047dd5d13bd7808101a6cae2f96a gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-10.c *************** d0a7757fdd02514672979d273c5dff0d gcc/te *** 46894,46900 **** 582d7bb7e4106b5cb9134d552025a68e gcc/testsuite/gcc.target/powerpc/outofline_rnreg.c bac0e7d390854f0c869cf6ae4b52c773 gcc/testsuite/gcc.target/powerpc/p8-vec-xl-xst.c d07905c4fe68bcbc9f8aef973a7a039b gcc/testsuite/gcc.target/powerpc/p8vector-builtin-1.c ! c9275a719128041f0bdbd96336d20f9c gcc/testsuite/gcc.target/powerpc/p8vector-builtin-2.c 330fc5c1657a0c9c682e64e1710acc46 gcc/testsuite/gcc.target/powerpc/p8vector-builtin-3.c 497c5a8f053f0aae3fa4eca733f05158 gcc/testsuite/gcc.target/powerpc/p8vector-builtin-4.c 48adc5108e19edfebefa832c19e1c869 gcc/testsuite/gcc.target/powerpc/p8vector-builtin-5.c --- 47098,47104 ---- 582d7bb7e4106b5cb9134d552025a68e gcc/testsuite/gcc.target/powerpc/outofline_rnreg.c bac0e7d390854f0c869cf6ae4b52c773 gcc/testsuite/gcc.target/powerpc/p8-vec-xl-xst.c d07905c4fe68bcbc9f8aef973a7a039b gcc/testsuite/gcc.target/powerpc/p8vector-builtin-1.c ! c99728a7f482ebf0c869dd88ece62a1d gcc/testsuite/gcc.target/powerpc/p8vector-builtin-2.c 330fc5c1657a0c9c682e64e1710acc46 gcc/testsuite/gcc.target/powerpc/p8vector-builtin-3.c 497c5a8f053f0aae3fa4eca733f05158 gcc/testsuite/gcc.target/powerpc/p8vector-builtin-4.c 48adc5108e19edfebefa832c19e1c869 gcc/testsuite/gcc.target/powerpc/p8vector-builtin-5.c *************** f0e0420e02de20b6842edd31ee31ee10 gcc/te *** 46970,46976 **** 384725f498b861af6f8bed0530eeac73 gcc/testsuite/gcc.target/powerpc/ppc-fmadd-1.c b49bfc8892e32ccd4715b924f41106d6 gcc/testsuite/gcc.target/powerpc/ppc-fmadd-2.c 90d042fffee10d77e01ab7cf9fcbb7c1 gcc/testsuite/gcc.target/powerpc/ppc-fmadd-3.c ! c9f9c3ba98632df0c5de87ebce48fce4 gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp 637bdb830638aea14574ce31ff970381 gcc/testsuite/gcc.target/powerpc/ppc-fortran/pr80108-1.f90 c5fa5fe79895d06f5f65590d9082f47a gcc/testsuite/gcc.target/powerpc/ppc-fpconv-1.c 399cb515c37318fe2c759d53e77324fb gcc/testsuite/gcc.target/powerpc/ppc-fpconv-10.c --- 47174,47180 ---- 384725f498b861af6f8bed0530eeac73 gcc/testsuite/gcc.target/powerpc/ppc-fmadd-1.c b49bfc8892e32ccd4715b924f41106d6 gcc/testsuite/gcc.target/powerpc/ppc-fmadd-2.c 90d042fffee10d77e01ab7cf9fcbb7c1 gcc/testsuite/gcc.target/powerpc/ppc-fmadd-3.c ! 786746f093ad6105362e3aa48d05b3cd gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp 637bdb830638aea14574ce31ff970381 gcc/testsuite/gcc.target/powerpc/ppc-fortran/pr80108-1.f90 c5fa5fe79895d06f5f65590d9082f47a gcc/testsuite/gcc.target/powerpc/ppc-fpconv-1.c 399cb515c37318fe2c759d53e77324fb gcc/testsuite/gcc.target/powerpc/ppc-fpconv-10.c *************** b5f67a5154b009c6dec03e4ced76145b gcc/te *** 47100,47106 **** 90631e1f2929b792894198b96774c9fc gcc/testsuite/gcc.target/powerpc/pr63354.c 79cc2b3def17722aafab5508449b1c68 gcc/testsuite/gcc.target/powerpc/pr63491.c d007c804b52c9e1198491a05a600186a gcc/testsuite/gcc.target/powerpc/pr64019.c ! 727b62309f1ecf81c78b3199ad86a8cb gcc/testsuite/gcc.target/powerpc/pr64205.c 888b7bff8991c2ede1c7e198bc2a05bf gcc/testsuite/gcc.target/powerpc/pr64505.c 564b9b7942b8363816b2ed8864ac1b7a gcc/testsuite/gcc.target/powerpc/pr65058.c a284d0dacfcd6f771fef90d01d3a6372 gcc/testsuite/gcc.target/powerpc/pr65456.c --- 47304,47310 ---- 90631e1f2929b792894198b96774c9fc gcc/testsuite/gcc.target/powerpc/pr63354.c 79cc2b3def17722aafab5508449b1c68 gcc/testsuite/gcc.target/powerpc/pr63491.c d007c804b52c9e1198491a05a600186a gcc/testsuite/gcc.target/powerpc/pr64019.c ! b046ef8139fb2996a14da78fc4d5d49a gcc/testsuite/gcc.target/powerpc/pr64205.c 888b7bff8991c2ede1c7e198bc2a05bf gcc/testsuite/gcc.target/powerpc/pr64505.c 564b9b7942b8363816b2ed8864ac1b7a gcc/testsuite/gcc.target/powerpc/pr65058.c a284d0dacfcd6f771fef90d01d3a6372 gcc/testsuite/gcc.target/powerpc/pr65456.c *************** aff8492d29822aab5bcc6408a127993c gcc/te *** 47140,47146 **** 9d1ceb34ff4072b9b15ceedc2d7a4618 gcc/testsuite/gcc.target/powerpc/pr71698.c 6eff11fe03297bc9b383cc7e57a4fa46 gcc/testsuite/gcc.target/powerpc/pr71720.c d9ccfe0048f3d64bbe5861c9aea6294f gcc/testsuite/gcc.target/powerpc/pr71763.c ! a1a29a276bb3f6f8436c361b1ef31e74 gcc/testsuite/gcc.target/powerpc/pr71785.c 743729f568d85b4bd156413e92dea820 gcc/testsuite/gcc.target/powerpc/pr71805.c c9d28f12142b7a930625854f8a516817 gcc/testsuite/gcc.target/powerpc/pr71977-1.c dbd0e190ff3cfe7ee4d447cd76f56dc0 gcc/testsuite/gcc.target/powerpc/pr71977-2.c --- 47344,47350 ---- 9d1ceb34ff4072b9b15ceedc2d7a4618 gcc/testsuite/gcc.target/powerpc/pr71698.c 6eff11fe03297bc9b383cc7e57a4fa46 gcc/testsuite/gcc.target/powerpc/pr71720.c d9ccfe0048f3d64bbe5861c9aea6294f gcc/testsuite/gcc.target/powerpc/pr71763.c ! 1a2ab1b5ac9370a9c043f60e7d47c0b8 gcc/testsuite/gcc.target/powerpc/pr71785.c 743729f568d85b4bd156413e92dea820 gcc/testsuite/gcc.target/powerpc/pr71805.c c9d28f12142b7a930625854f8a516817 gcc/testsuite/gcc.target/powerpc/pr71977-1.c dbd0e190ff3cfe7ee4d447cd76f56dc0 gcc/testsuite/gcc.target/powerpc/pr71977-2.c *************** e16e95e49a068e3c198ca05f1f517f27 gcc/te *** 47179,47185 **** 467b382b65b1ebbac6326ad8455010b0 gcc/testsuite/gcc.target/powerpc/pr79799-4.c 6fb3807ef298bd1214fdd2135b1c617a gcc/testsuite/gcc.target/powerpc/pr79799-5.c 193063767498ad5eeaed2c356a368d0f gcc/testsuite/gcc.target/powerpc/pr79907.c ! 642c9f1dcfbb4e02caa3fdaa9add4539 gcc/testsuite/gcc.target/powerpc/pr79909.c c4116b75f2059a7e1bab2e403b724598 gcc/testsuite/gcc.target/powerpc/pr79947.c 8fe70e669118bfd74ac64bf553741d89 gcc/testsuite/gcc.target/powerpc/pr79951.c 1224dd35ef12806b3401158f5e60cb18 gcc/testsuite/gcc.target/powerpc/pr80098-1.c --- 47383,47389 ---- 467b382b65b1ebbac6326ad8455010b0 gcc/testsuite/gcc.target/powerpc/pr79799-4.c 6fb3807ef298bd1214fdd2135b1c617a gcc/testsuite/gcc.target/powerpc/pr79799-5.c 193063767498ad5eeaed2c356a368d0f gcc/testsuite/gcc.target/powerpc/pr79907.c ! 208f87119e5c5894a646fa100ba6605f gcc/testsuite/gcc.target/powerpc/pr79909.c c4116b75f2059a7e1bab2e403b724598 gcc/testsuite/gcc.target/powerpc/pr79947.c 8fe70e669118bfd74ac64bf553741d89 gcc/testsuite/gcc.target/powerpc/pr79951.c 1224dd35ef12806b3401158f5e60cb18 gcc/testsuite/gcc.target/powerpc/pr80098-1.c *************** f836e066bf7362a4c98962931153e731 gcc/te *** 47193,47199 **** 641c02efa8079ef3086b94358b04dbbe gcc/testsuite/gcc.target/powerpc/pr80099-5.c e3724d1b8faf6dcacb8d047defe64496 gcc/testsuite/gcc.target/powerpc/pr80101-1.c a63b5847eb3daabd4a56b649ab602f4c gcc/testsuite/gcc.target/powerpc/pr80103-1.c ! 66ae7647dd692b6ddc6355ddda4f0fa6 gcc/testsuite/gcc.target/powerpc/pr80125.c 0c08f4c83d90538f2c1ff74965ce6a2b gcc/testsuite/gcc.target/powerpc/pr80210-2.c 32dc6ec7c4a1a3cefe2efbb3b602ef2c gcc/testsuite/gcc.target/powerpc/pr80210.c c74100b0e24e645cbd51ff8d93f11730 gcc/testsuite/gcc.target/powerpc/pr80246.c --- 47397,47403 ---- 641c02efa8079ef3086b94358b04dbbe gcc/testsuite/gcc.target/powerpc/pr80099-5.c e3724d1b8faf6dcacb8d047defe64496 gcc/testsuite/gcc.target/powerpc/pr80101-1.c a63b5847eb3daabd4a56b649ab602f4c gcc/testsuite/gcc.target/powerpc/pr80103-1.c ! d898a03a0134d7a17ff89a9859557dc9 gcc/testsuite/gcc.target/powerpc/pr80125.c 0c08f4c83d90538f2c1ff74965ce6a2b gcc/testsuite/gcc.target/powerpc/pr80210-2.c 32dc6ec7c4a1a3cefe2efbb3b602ef2c gcc/testsuite/gcc.target/powerpc/pr80210.c c74100b0e24e645cbd51ff8d93f11730 gcc/testsuite/gcc.target/powerpc/pr80246.c *************** f933cd0da11eebb48da12afacd0c1f1b gcc/te *** 47228,47233 **** --- 47432,47445 ---- 48d76dd15431a54c280ce4fa945acb55 gcc/testsuite/gcc.target/powerpc/pr85698.c a350423ed93def71f8b093f25456d889 gcc/testsuite/gcc.target/powerpc/pr85755.c d86d5375cd27e7c265ce5093d761b62e gcc/testsuite/gcc.target/powerpc/pr87033.c + aee1daf1d9bcf717ca4f522da06e6367 gcc/testsuite/gcc.target/powerpc/pr87496-1.c + c9cbb61f1f9d670e00d6618835784a6c gcc/testsuite/gcc.target/powerpc/pr87496-2.c + 665a6a746b1a2aad357624853b871c54 gcc/testsuite/gcc.target/powerpc/pr87496-3.c + a3fcebbcc49f4e8e80184966262e4f7c gcc/testsuite/gcc.target/powerpc/pr87532-mc.c + 5fd4bcc0443a583aade647593b461bf0 gcc/testsuite/gcc.target/powerpc/pr87532.c + c37f43ea14b9c2771195287a84b61d7f gcc/testsuite/gcc.target/powerpc/pr89424-0.c + 641d52f8caa1635a7b47a9370f9b19ed gcc/testsuite/gcc.target/powerpc/pr89765-mc.c + 212a3d50b8d112a6d4111e1f90023028 gcc/testsuite/gcc.target/powerpc/pr91275.c 17f878b62dd2e08735d53fce64232a47 gcc/testsuite/gcc.target/powerpc/quad-atomic.c 171a411d14f30e8450dc3f2ef38b1bd7 gcc/testsuite/gcc.target/powerpc/recip-1.c 6b7c4920c070e84f6819377bcdb90c0d gcc/testsuite/gcc.target/powerpc/recip-2.c *************** bf385d7310a8dab90ee44f86832aa03b gcc/te *** 47268,47280 **** 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 ! e8409a903c25e73258a07cc7263f0fff gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c 15bd7d0b1c9766ac9c14300c015d5793 gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c fecbca1485084d70d917631126a31ef1 gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c 440a279cd4b54a0d56f1725ad5e57d55 gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-4.c ef8eb7cbf624be95837254f86c894d5b gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c 24a2f6cdda4929c5eaa245cc358ce7c6 gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-6.c ! ca1b282ad40b24683e13c46737288d7e gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c f66a7c7a9b7cdd49a6b9860dbb16d90a gcc/testsuite/gcc.target/powerpc/savres.c 98a0676ba42103cce9e60b2313f8b2ef gcc/testsuite/gcc.target/powerpc/sd-pwr6.c 65a53924a48d5df99017fa40a01962f4 gcc/testsuite/gcc.target/powerpc/sd-vsx.c --- 47480,47492 ---- 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 ! 117d3bda48a47bac18d3fc69aafa9bc5 gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c 15bd7d0b1c9766ac9c14300c015d5793 gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c fecbca1485084d70d917631126a31ef1 gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c 440a279cd4b54a0d56f1725ad5e57d55 gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-4.c ef8eb7cbf624be95837254f86c894d5b gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c 24a2f6cdda4929c5eaa245cc358ce7c6 gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-6.c ! 97459dfff65ecd5b32b5428b110a3cbb gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c f66a7c7a9b7cdd49a6b9860dbb16d90a gcc/testsuite/gcc.target/powerpc/savres.c 98a0676ba42103cce9e60b2313f8b2ef gcc/testsuite/gcc.target/powerpc/sd-pwr6.c 65a53924a48d5df99017fa40a01962f4 gcc/testsuite/gcc.target/powerpc/sd-vsx.c *************** aefbc9c117b311a9394883e9c890efb9 gcc/te *** 47295,47301 **** 32bb5e201dd78c548aed0cdf044779ec gcc/testsuite/gcc.target/powerpc/spe1.c c4da621e2f792bd21112c40ff73a206d gcc/testsuite/gcc.target/powerpc/ssp-1.c 28df2b90767c1ab9ffd06127b47b30f9 gcc/testsuite/gcc.target/powerpc/ssp-2.c ! c9be7e0cc9ba390460928b1de506fa70 gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c ab241355ba77c8e163b05eb81f33d1c5 gcc/testsuite/gcc.target/powerpc/stack-limit.c a59ee456442fb848ede07589c0a6bb6e gcc/testsuite/gcc.target/powerpc/swaps-p8-1.c f9cfd48e5324b92443f64a93e5c47140 gcc/testsuite/gcc.target/powerpc/swaps-p8-10.c --- 47507,47513 ---- 32bb5e201dd78c548aed0cdf044779ec gcc/testsuite/gcc.target/powerpc/spe1.c c4da621e2f792bd21112c40ff73a206d gcc/testsuite/gcc.target/powerpc/ssp-1.c 28df2b90767c1ab9ffd06127b47b30f9 gcc/testsuite/gcc.target/powerpc/ssp-2.c ! 13c6ee4934b094179a2336371362f10d gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c ab241355ba77c8e163b05eb81f33d1c5 gcc/testsuite/gcc.target/powerpc/stack-limit.c a59ee456442fb848ede07589c0a6bb6e gcc/testsuite/gcc.target/powerpc/swaps-p8-1.c f9cfd48e5324b92443f64a93e5c47140 gcc/testsuite/gcc.target/powerpc/swaps-p8-10.c *************** e1d0f48ef3f5ad5024aa68b2846ceab4 gcc/te *** 47363,47371 **** --- 47575,47596 ---- 2d50edc7d6c2af7c695bdafc06d15556 gcc/testsuite/gcc.target/powerpc/vec-extract-7.c e3fefbaf3ebb589e2ccc28b73788df22 gcc/testsuite/gcc.target/powerpc/vec-extract-8.c fca76fdfa8cd69914a318fb873bc4e4a gcc/testsuite/gcc.target/powerpc/vec-extract-9.c + 6fa3a78094c3ff7dd26f5dae36baf3bc gcc/testsuite/gcc.target/powerpc/vec-extract-schar-1.c + ad1e5ca02f2dc123d7723bfab022c19e gcc/testsuite/gcc.target/powerpc/vec-extract-sint-1.c + e8d7f9d9cb6382edc26e551480efd645 gcc/testsuite/gcc.target/powerpc/vec-extract-sint128-1.c + 2e039bdf4ca2e6d944dbd8a121a97e8e gcc/testsuite/gcc.target/powerpc/vec-extract-slong-1.c + 39d3cf7341f519f7e0ec53700774cbad gcc/testsuite/gcc.target/powerpc/vec-extract-sshort-1.c + a427b05e8b9ef68507dd6fe235562170 gcc/testsuite/gcc.target/powerpc/vec-extract-uchar-1.c + 5124becf3bbc38028f271b2a6410fb02 gcc/testsuite/gcc.target/powerpc/vec-extract-uint-1.c + ff639434947505aeedf0da741f8f729f gcc/testsuite/gcc.target/powerpc/vec-extract-uint128-1.c + 57f8458519011f3e52a4f54d87e894c1 gcc/testsuite/gcc.target/powerpc/vec-extract-ulong-1.c + c896734b9eeb5426643c95d554b3c537 gcc/testsuite/gcc.target/powerpc/vec-extract-ushort-1.c 54b4e79e3e68990bbb35785a9baebefe gcc/testsuite/gcc.target/powerpc/vec-extract-v16qi-df.c 17dc541115d43f98928aa98aec2e8966 gcc/testsuite/gcc.target/powerpc/vec-extract-v16qi.c fa4d484cedb3e830a8c4ed23fcac60f1 gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-df.c + 715dd2ff2b925703cee51c3591a11a39 gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h + 1642c9c56d8fc26c4a00e52271e9aa62 gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2a.c + fa2b56f4604687d4c40b1dc0dcaf0a93 gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2b.c 0cf0efad9beb904fc660081db1e08b5b gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu.c 3e12eaa72b1a5951659db6fa313cc678 gcc/testsuite/gcc.target/powerpc/vec-extract-v2df.c ed5d771bd86a170ce802a098b04be68b gcc/testsuite/gcc.target/powerpc/vec-extract-v2di.c *************** f0528163d3f2787ef58fd1e06a0e2bbd gcc/te *** 47519,47532 **** --- 47744,47807 ---- 415232ff7d42d45b489b5968120ad4cc gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-8.c 96ef4a5ea4fce11b1b86e842a4455ebd gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-9.c c0e5b1d38588a8004b42aa28e765606d gcc/testsuite/gcc.target/powerpc/vsu/vsu.exp + aaeb960a2e271bc474363e9917aecb51 gcc/testsuite/gcc.target/powerpc/vsx-13.c + dda33ad7be60f57b58ed431fa32786d2 gcc/testsuite/gcc.target/powerpc/vsx-7.h 4ceb6855c2485b8644bf41d0692dce88 gcc/testsuite/gcc.target/powerpc/vsx-builtin-1.c + 746a6949d77db46dfd9f2e1e8fec69ae gcc/testsuite/gcc.target/powerpc/vsx-builtin-10a.c + ee3ef7928ea6e74901f53131d408b023 gcc/testsuite/gcc.target/powerpc/vsx-builtin-10b.c + 9d682d5a5fd031d3e41611dbc8838f10 gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c + 3dc8ccf65d4614d0c682d9459a4b1620 gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c + 1bdbd00004403d369e96bc57687fe65b gcc/testsuite/gcc.target/powerpc/vsx-builtin-11a.c + 4d688d6cc30f1fc3c08737845ddab784 gcc/testsuite/gcc.target/powerpc/vsx-builtin-11b.c + d8de4a1238d67cb93380cea219a1c4a1 gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c + f6cbf8e71f48a7a75897e540e89b4fd2 gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c + 1ebbfe9fa476b355b9e13099e7b50ec7 gcc/testsuite/gcc.target/powerpc/vsx-builtin-12a.c + d7651b4972f66a6d7723f6db28e98dd4 gcc/testsuite/gcc.target/powerpc/vsx-builtin-12b.c + 14caae2cbbe03ad25daed350e6b3a6dd gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c + 44033307838f447152183070116da9ec gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c + 538d3cf96986b862419784127e5e291d gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c + 0b7e8c580b33ced4e69da2f49d78a4b9 gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c + 70521d0c42ddccdf8e09cdeed533bdec gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c + 429c38af99dff70d9a830a4de4ecac6d gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c + f78214f727e056cb438aa1dc4f19c735 gcc/testsuite/gcc.target/powerpc/vsx-builtin-14a.c + 6d407c44e65dacb9f32753308a3fc6e8 gcc/testsuite/gcc.target/powerpc/vsx-builtin-14b.c + 8444014ba0811419ad1dc54a94835cc3 gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c + f8ff6fdf4e4d9c21651204401d90dbb6 gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c + f6fa5f193712221d9f11af0ddc252276 gcc/testsuite/gcc.target/powerpc/vsx-builtin-15a.c + da132fcd19023e902814c2c6c3d3e728 gcc/testsuite/gcc.target/powerpc/vsx-builtin-15b.c + 7ff64276f648cac42ab55f4a33abc049 gcc/testsuite/gcc.target/powerpc/vsx-builtin-15c.c + 04ac76b0b1f69b6e2d06d182954ee632 gcc/testsuite/gcc.target/powerpc/vsx-builtin-15d.c + 0df772c46c802870a93dbc5b775249bf gcc/testsuite/gcc.target/powerpc/vsx-builtin-16a.c + c9315e5014dc595cb7bb80a684e77d47 gcc/testsuite/gcc.target/powerpc/vsx-builtin-16b.c + 555d256392e00f41da27e30bfb6b2140 gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c + 99f7a0d1d3d3f422c095ece91811cf66 gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c + 5c7ef9406c168be4ac15c2543a1475cb gcc/testsuite/gcc.target/powerpc/vsx-builtin-17a.c + 7ddf389b2cf068432671b0739b2b8457 gcc/testsuite/gcc.target/powerpc/vsx-builtin-17b.c + efc4c39d238a4eb46e670b94cdfc9834 gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c + efc4c39d238a4eb46e670b94cdfc9834 gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c + a114b00aa5a1b18273f1299e1fc08afe gcc/testsuite/gcc.target/powerpc/vsx-builtin-18a.c + 23c41691997a3ea06df29aef360ae13b gcc/testsuite/gcc.target/powerpc/vsx-builtin-18b.c + ee3bc99955a32918aed1906ad772e2c9 gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c + ac19be27b979d134fa38e21eff9da1d5 gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c + 6576ab9009c0a3a1175ff644b5490d1d gcc/testsuite/gcc.target/powerpc/vsx-builtin-19a.c + 5d3014e34a036f0024487d6be5274ab0 gcc/testsuite/gcc.target/powerpc/vsx-builtin-19b.c + ef6577fd84945078b4cef14e99d50716 gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c + eb41712c0a85d75f7ad259f45c035835 gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c 9e3c77c5253ece30391881a511c37067 gcc/testsuite/gcc.target/powerpc/vsx-builtin-2.c + d128b18a20f2a55978e519508f48f1ae gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c + 462d58bd5e0209dd5d6550bfae0c2311 gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c + 6481e7c45c6c95a23feaca3286bf3c1d gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c + 42b7bc847179c4ef1e6e7142bb27bf11 gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c d6aef2cc5b6d426a696fad3f9bd0cf2c gcc/testsuite/gcc.target/powerpc/vsx-builtin-3.c 6246ea29025c11b1b9f4c6b8d036cbc3 gcc/testsuite/gcc.target/powerpc/vsx-builtin-4.c acf95bd1a1e2b9b14c0640b45f2e75f5 gcc/testsuite/gcc.target/powerpc/vsx-builtin-5.c 0b61a376e7164778a523a0766df4ce6e gcc/testsuite/gcc.target/powerpc/vsx-builtin-6.c aec0aad4ad9d1a50c30d68081c0f2184 gcc/testsuite/gcc.target/powerpc/vsx-builtin-7.c 88cd9f4d3675a8897d01117429ae8094 gcc/testsuite/gcc.target/powerpc/vsx-builtin-8.c + 33633751eb0bfabbb2951a0070770508 gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c + 2e9c4b2355be46611bfe42e4a9f8d1f3 gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c + 1e35ead3525b068deff65ea3783111ee gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c + 2d6ebc881e5a0f8f968a2999b0706911 gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c 29415c0ab3cf79b03ca4a55fa764901b gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c ad77cf7854ac810c73e5ad0184232f20 gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c e4ac7f141f61cf4cf8934fe3ee7cf407 gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c *************** af342c50defde2d3bc67d77ec6beb0aa gcc/te *** 47551,47557 **** 4a05f2cb2b0a410f90bff4713a58165f gcc/testsuite/gcc.target/powerpc/vsx-vector-3.c 4ddb7eeffe7b9f8698918a3dbe8154ac gcc/testsuite/gcc.target/powerpc/vsx-vector-4.c a7b9c04e0f20eab9e51d1bdd023d94af gcc/testsuite/gcc.target/powerpc/vsx-vector-5.c ! a2072ad74a24ce30e97fe2d798e82f17 gcc/testsuite/gcc.target/powerpc/vsx-vector-6.c 5c438f6c6002a682ed88deac9a40303f gcc/testsuite/gcc.target/powerpc/vsx-vector-7.c 9c09a9e1fbe05972f2c7ae287e8beb97 gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c d10764d77e5bf498f053a1dcc3189476 gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c --- 47826,47835 ---- 4a05f2cb2b0a410f90bff4713a58165f gcc/testsuite/gcc.target/powerpc/vsx-vector-3.c 4ddb7eeffe7b9f8698918a3dbe8154ac gcc/testsuite/gcc.target/powerpc/vsx-vector-4.c a7b9c04e0f20eab9e51d1bdd023d94af gcc/testsuite/gcc.target/powerpc/vsx-vector-5.c ! c5c0edec217c4bbb824f5252329761e9 gcc/testsuite/gcc.target/powerpc/vsx-vector-6.h ! bf76f30d8022c3cac5aed18805423226 gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p7.c ! 65f3b776fee1322f9c3203314637f612 gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p8.c ! 6b6c31e560eca4f580a5ce505bc92de4 gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p9.c 5c438f6c6002a682ed88deac9a40303f gcc/testsuite/gcc.target/powerpc/vsx-vector-7.c 9c09a9e1fbe05972f2c7ae287e8beb97 gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c d10764d77e5bf498f053a1dcc3189476 gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c *************** f6942a3fba9c800bffade3bb79196479 gcc/te *** 47870,47875 **** --- 48148,48154 ---- 3f0e273f04c5175b1fdb100976e981c6 gcc/testsuite/gcc.target/s390/vector/vec-nopeel-1.c 03ba06d58e7f65b8e47eace2aff32bda gcc/testsuite/gcc.target/s390/vector/vec-scalar-cmp-1.c 8de36944e18edbbcc735c9baad533f52 gcc/testsuite/gcc.target/s390/vector/vec-shift-1.c + 0f81f716920700cba16fc05e47df6d56 gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c cea49877a5895e80cb13491b6cdfa2a2 gcc/testsuite/gcc.target/s390/vector/vec-sub-1.c db4e2b1f6b0441e2f2f64b6e141245cd gcc/testsuite/gcc.target/s390/vector/vec-vcond-1.c 3820ec0689c3262f947212e6f357e08c gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c *************** dc95f2902df894907c8cd4f00960f509 gcc/te *** 47882,47887 **** --- 48161,48168 ---- 6924d62f235015dbe0a12e676b094f6d gcc/testsuite/gcc.target/s390/zvector/vec-cmp-1.c bb894f21fe3b3c694eb81f45bc0b0bba gcc/testsuite/gcc.target/s390/zvector/vec-cmp-2.c ccdf3c2d3031ce42906139030ba856e1 gcc/testsuite/gcc.target/s390/zvector/vec-dbl-math-compile-1.c + 99a4d9d376b39be880dd323c2ff0e424 gcc/testsuite/gcc.target/s390/zvector/vec-double-1.c + 49a1b950a9fdcff9d3d01ebb3d53e342 gcc/testsuite/gcc.target/s390/zvector/vec-double-2.c f42e228f92a8dfb9e1ded9cb20bc6622 gcc/testsuite/gcc.target/s390/zvector/vec-elem-1.c a7f2bd9fee8c03add8265ce21e47cb8f gcc/testsuite/gcc.target/s390/zvector/vec-genbytemask-1.c f0adb63cec7e7cc8928e697e9eb9fc6c gcc/testsuite/gcc.target/s390/zvector/vec-genmask-1.c *************** ffba4a644f6c776dd608a5285349bff8 gcc/te *** 48121,48127 **** a67458660c2ef2010f128fdaa4faaa86 gcc/testsuite/gcc.target/sparc/20160104-1.c 22f916e859ece29a91c18dffaca9e14b gcc/testsuite/gcc.target/sparc/20160104-2.c 3d69d4562d0fbb323ff101a9d3271e9a gcc/testsuite/gcc.target/sparc/20160229-1.c ! f105a9c71ffd58f541747bfe25ebdc89 gcc/testsuite/gcc.target/sparc/20161111-1.c 5b34d024151ffbbd5c3b91733a663c88 gcc/testsuite/gcc.target/sparc/20170205-1.c e470b0a0d1a056b60c3915a6dfcfd4ae gcc/testsuite/gcc.target/sparc/20170228-1.c 44373c57181608413fc07f3ec0e2ad6e gcc/testsuite/gcc.target/sparc/align.c --- 48402,48408 ---- a67458660c2ef2010f128fdaa4faaa86 gcc/testsuite/gcc.target/sparc/20160104-1.c 22f916e859ece29a91c18dffaca9e14b gcc/testsuite/gcc.target/sparc/20160104-2.c 3d69d4562d0fbb323ff101a9d3271e9a gcc/testsuite/gcc.target/sparc/20160229-1.c ! 5b143c3e46fe04901dc0f5da126d1e44 gcc/testsuite/gcc.target/sparc/20161111-1.c 5b34d024151ffbbd5c3b91733a663c88 gcc/testsuite/gcc.target/sparc/20170205-1.c e470b0a0d1a056b60c3915a6dfcfd4ae gcc/testsuite/gcc.target/sparc/20170228-1.c 44373c57181608413fc07f3ec0e2ad6e gcc/testsuite/gcc.target/sparc/align.c *************** eb9fea9eb3ccdd5fb4d85ac011c10dc5 gcc/te *** 48227,48234 **** 96ac755e92338efd01e188e2e94bbf8f gcc/testsuite/gcc.target/sparc/sparc-ret-3.c 1943f3e1f1253e644f6fe445637c2dec gcc/testsuite/gcc.target/sparc/sparc-trap-1.c 91441cf444e7cb6158d5e4a48e88a6f9 gcc/testsuite/gcc.target/sparc/sparc.exp ! 9d0e2b5fe42dfe4e33a910954d24877b gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c 8e13d07524eb18b1e933aa690c21a993 gcc/testsuite/gcc.target/sparc/struct-ret-check-2.c 25b3fbaad3a2016e2d2b3cdf5fea854d gcc/testsuite/gcc.target/sparc/ultrasp1.c d6162326dc1d13ceac299feecb9623b5 gcc/testsuite/gcc.target/sparc/ultrasp10.c ce12e4f274007d914a57153cf148abad gcc/testsuite/gcc.target/sparc/ultrasp11.c --- 48508,48522 ---- 96ac755e92338efd01e188e2e94bbf8f gcc/testsuite/gcc.target/sparc/sparc-ret-3.c 1943f3e1f1253e644f6fe445637c2dec gcc/testsuite/gcc.target/sparc/sparc-trap-1.c 91441cf444e7cb6158d5e4a48e88a6f9 gcc/testsuite/gcc.target/sparc/sparc.exp ! 36ce6bf50327f9b2f6c9980aea9830d2 gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c 8e13d07524eb18b1e933aa690c21a993 gcc/testsuite/gcc.target/sparc/struct-ret-check-2.c + 29c9104d23f7983b691da600e79c9cf0 gcc/testsuite/gcc.target/sparc/tls-ld-int16.c + 68666324197bd5951b494840eeaf90ee gcc/testsuite/gcc.target/sparc/tls-ld-int32.c + 2e3b09054a27c6d44a334e642e027c91 gcc/testsuite/gcc.target/sparc/tls-ld-int64.c + dae737220e93a16f50e7becc25baf844 gcc/testsuite/gcc.target/sparc/tls-ld-int8.c + 8cc25e4e4e726efbb76ac206a2b3e225 gcc/testsuite/gcc.target/sparc/tls-ld-uint16.c + 27f99d07ba15d650eeb6b80cdb3b7913 gcc/testsuite/gcc.target/sparc/tls-ld-uint32.c + de1289d9d1103ff86463c136e374c48d gcc/testsuite/gcc.target/sparc/tls-ld-uint8.c 25b3fbaad3a2016e2d2b3cdf5fea854d gcc/testsuite/gcc.target/sparc/ultrasp1.c d6162326dc1d13ceac299feecb9623b5 gcc/testsuite/gcc.target/sparc/ultrasp10.c ce12e4f274007d914a57153cf148abad gcc/testsuite/gcc.target/sparc/ultrasp11.c *************** fa804286199303928e807b43822a9e6e gcc/te *** 48345,48358 **** 3003646df75711be87357346568aa8b2 gcc/testsuite/gcc.target/x86_64/abi/asm-support.S 93e2be6e941082bc6be7ef4044f4e8f0 gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp f559d61e72669fec3c7c3bb1345a001f gcc/testsuite/gcc.target/x86_64/abi/avx/args.h 2ab990bb306a8a9c1f146095795ed0bb gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support.S 4061363418adffdceb4cff80966eaf32 gcc/testsuite/gcc.target/x86_64/abi/avx/avx-check.h d3c71d269c1b4265e86c5ace1089e848 gcc/testsuite/gcc.target/x86_64/abi/avx/test_m256_returning.c b43e5e8d171dcdbec5cac42b0b9a298c gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_m256.c ff732b27c9bb0c5b99ccccb31d12d3ea gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_structs.c d02989c16f0d1cd0951fe435483c550e gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_unions.c ! a571e2595a04525bc92ee6892034d8d3 gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp 2cf03d73572ce81dab43dcceeeacf5c4 gcc/testsuite/gcc.target/x86_64/abi/avx512f/args.h 341c91bf54efad299e2f11e9329738fa gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support.S 1c4dc628c680a1d3ad4767c3a1455499 gcc/testsuite/gcc.target/x86_64/abi/avx512f/avx512f-check.h 75a0b911edb2a39978caadbf2c750015 gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_m512_returning.c --- 48633,48648 ---- 3003646df75711be87357346568aa8b2 gcc/testsuite/gcc.target/x86_64/abi/asm-support.S 93e2be6e941082bc6be7ef4044f4e8f0 gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp f559d61e72669fec3c7c3bb1345a001f gcc/testsuite/gcc.target/x86_64/abi/avx/args.h + c85a8ff66d503afba32af980c3b1b620 gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support-darwin.s 2ab990bb306a8a9c1f146095795ed0bb gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support.S 4061363418adffdceb4cff80966eaf32 gcc/testsuite/gcc.target/x86_64/abi/avx/avx-check.h d3c71d269c1b4265e86c5ace1089e848 gcc/testsuite/gcc.target/x86_64/abi/avx/test_m256_returning.c b43e5e8d171dcdbec5cac42b0b9a298c gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_m256.c ff732b27c9bb0c5b99ccccb31d12d3ea gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_structs.c d02989c16f0d1cd0951fe435483c550e gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_unions.c ! 3481ac41e0dec20b58a9a2c4678d62c8 gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp 2cf03d73572ce81dab43dcceeeacf5c4 gcc/testsuite/gcc.target/x86_64/abi/avx512f/args.h + c79ac297933c3dae25e3f797420d1814 gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s 341c91bf54efad299e2f11e9329738fa gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support.S 1c4dc628c680a1d3ad4767c3a1455499 gcc/testsuite/gcc.target/x86_64/abi/avx512f/avx512f-check.h 75a0b911edb2a39978caadbf2c750015 gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_m512_returning.c *************** dc5bd15d39629bdb9c6791eb1b939d2b gcc/te *** 48726,48731 **** --- 49016,49022 ---- 1d2cf79427b4c041f17470d0205af957 gcc/testsuite/gfortran.dg/alloc_comp_assign_13.f08 ce3c5ae7cd8e4635a87d230d5d263ab0 gcc/testsuite/gfortran.dg/alloc_comp_assign_14.f08 a7d3d47dae489c27b136ee114e9cb610 gcc/testsuite/gfortran.dg/alloc_comp_assign_15.f03 + ae9a8153879a562e6eaad8b096b2f86b gcc/testsuite/gfortran.dg/alloc_comp_assign_16.f03 d3cc31f30dcc8ad53b212e34a4909874 gcc/testsuite/gfortran.dg/alloc_comp_assign_2.f90 afdc1d937c6fbd1b064165c9325fa117 gcc/testsuite/gfortran.dg/alloc_comp_assign_3.f90 4177396dbf37d479cedf198fee04fbe1 gcc/testsuite/gfortran.dg/alloc_comp_assign_4.f90 *************** b852529cec3b92b7d12cc9eec0f3559f gcc/te *** 48889,48894 **** --- 49180,49187 ---- 9b31f9f4ca2bcd7c062e04bc30721dc3 gcc/testsuite/gfortran.dg/altreturn_6.f90 6a910b032025fe47523df7cd010b4a31 gcc/testsuite/gfortran.dg/altreturn_7.f90 233eef9f00992461977dfc6c8ec80c9f gcc/testsuite/gfortran.dg/altreturn_8.f90 + 14f153f4930c4715ce36663b7f2859d1 gcc/testsuite/gfortran.dg/altreturn_9_0.f90 + 3c92d543d83475baecb2a7bac4775a08 gcc/testsuite/gfortran.dg/altreturn_9_1.f90 5efcafe8829b585812ac42002ce9079c gcc/testsuite/gfortran.dg/ambiguous_reference_1.f90 407349fe5dc0dd80df43de2e773a4cab gcc/testsuite/gfortran.dg/ambiguous_reference_2.f90 4a2d243fa69596ed5111843ecb20b347 gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90 *************** a665074c9d37da1eeb1d261fe4259056 gcc/te *** 49009,49015 **** 3afaa99751f4b884afdb193178002cf8 gcc/testsuite/gfortran.dg/array_function_2.f90 784dbde53c3024a9ece796b66df76ad0 gcc/testsuite/gfortran.dg/array_function_3.f90 299c77bc10af8aa7d4d3369c9802de55 gcc/testsuite/gfortran.dg/array_function_4.f90 ! 0b943a7b1268dc0f7948d9697c3bfe44 gcc/testsuite/gfortran.dg/array_function_5.f90 8f75e90f6ecbefe7ac0df22a21373888 gcc/testsuite/gfortran.dg/array_function_6.f90 f7deaa09f12d6b0d7167e9ea3c764992 gcc/testsuite/gfortran.dg/array_initializer_1.f90 f089112961eb27984a439266fde9cf16 gcc/testsuite/gfortran.dg/array_initializer_2.f90 --- 49302,49308 ---- 3afaa99751f4b884afdb193178002cf8 gcc/testsuite/gfortran.dg/array_function_2.f90 784dbde53c3024a9ece796b66df76ad0 gcc/testsuite/gfortran.dg/array_function_3.f90 299c77bc10af8aa7d4d3369c9802de55 gcc/testsuite/gfortran.dg/array_function_4.f90 ! a4c64b685de9c02c56f36e2092db0045 gcc/testsuite/gfortran.dg/array_function_5.f90 8f75e90f6ecbefe7ac0df22a21373888 gcc/testsuite/gfortran.dg/array_function_6.f90 f7deaa09f12d6b0d7167e9ea3c764992 gcc/testsuite/gfortran.dg/array_initializer_1.f90 f089112961eb27984a439266fde9cf16 gcc/testsuite/gfortran.dg/array_initializer_2.f90 *************** ada9a3758cef9c8c02a55f1139c4f13b gcc/te *** 49091,49096 **** --- 49384,49390 ---- 6eab1bfbc8235d8fcf743d9f5635aea3 gcc/testsuite/gfortran.dg/associate_30.f90 4143f553bd13a860954e31145b26bcba gcc/testsuite/gfortran.dg/associate_33.f03 a1f5f0d8423367d45fe9382b407ce7e9 gcc/testsuite/gfortran.dg/associate_4.f08 + 9a37c444f19b419083ffbbdcc1e8eb59 gcc/testsuite/gfortran.dg/associate_44.f90 6143ba2a228800dde0bd37f3665e0994 gcc/testsuite/gfortran.dg/associate_46.f90 5dfaf5e9c3d8b8b8f835046ca42ccbf4 gcc/testsuite/gfortran.dg/associate_5.f03 b9a80d4815a13a74f89c8e64782f5c16 gcc/testsuite/gfortran.dg/associate_6.f03 *************** cdbd174fba27a1cc2fe42d6e10b97afd gcc/te *** 49158,49164 **** 8bf64bb3c49e7fe58c386a66c599504b gcc/testsuite/gfortran.dg/assumed_size_refs_3.f90 3e96e44672f88b56bd72f233716f03cd gcc/testsuite/gfortran.dg/assumed_size_refs_4.f90 6637ca606075a490a8af76882f9b6797 gcc/testsuite/gfortran.dg/assumed_type_1.f90 ! 64d76b59391d15dc8c8c058b9862973a gcc/testsuite/gfortran.dg/assumed_type_2.f90 27b0b5ad82abb1d06990db9025f0c992 gcc/testsuite/gfortran.dg/assumed_type_3.f90 efe423227b9fdac2ac81898e5770a7d9 gcc/testsuite/gfortran.dg/assumed_type_4.f90 4700aa6f851cace7a18c8476fe6d6872 gcc/testsuite/gfortran.dg/assumed_type_5.f90 --- 49452,49458 ---- 8bf64bb3c49e7fe58c386a66c599504b gcc/testsuite/gfortran.dg/assumed_size_refs_3.f90 3e96e44672f88b56bd72f233716f03cd gcc/testsuite/gfortran.dg/assumed_size_refs_4.f90 6637ca606075a490a8af76882f9b6797 gcc/testsuite/gfortran.dg/assumed_type_1.f90 ! 02512575a252aa05aa0c66b6f2f63ef1 gcc/testsuite/gfortran.dg/assumed_type_2.f90 27b0b5ad82abb1d06990db9025f0c992 gcc/testsuite/gfortran.dg/assumed_type_3.f90 efe423227b9fdac2ac81898e5770a7d9 gcc/testsuite/gfortran.dg/assumed_type_4.f90 4700aa6f851cace7a18c8476fe6d6872 gcc/testsuite/gfortran.dg/assumed_type_5.f90 *************** ec29931f9b3f84e65c0addc59ccb39bf gcc/te *** 49291,49296 **** --- 49585,49594 ---- 524014cc930fc384a29d75d9885c914f gcc/testsuite/gfortran.dg/binding_label_tests_26b.f90 9dfb6e19dab1724fd7bc6c7ddd36dfeb gcc/testsuite/gfortran.dg/binding_label_tests_27.f90 3da0c43e404ea44650ab9a963fa41bee gcc/testsuite/gfortran.dg/binding_label_tests_3.f03 + e9eb0ce619abe6c5f23f938496878cff gcc/testsuite/gfortran.dg/binding_label_tests_30.f90 + c0d788f5fa3898fea232e169e1b1fbd0 gcc/testsuite/gfortran.dg/binding_label_tests_31.f90 + d2102c94673affc257d3e7376d873240 gcc/testsuite/gfortran.dg/binding_label_tests_32.f90 + 71cba30c6667a8dc0eed115b1e1f658d gcc/testsuite/gfortran.dg/binding_label_tests_33.f90 3013bc9de3bacac5bf462e52231abf50 gcc/testsuite/gfortran.dg/binding_label_tests_4.f03 27695dee78547e7050f28a42fe933cf4 gcc/testsuite/gfortran.dg/binding_label_tests_5.f03 430fa43d0c3ae8503b805e49e562838a gcc/testsuite/gfortran.dg/binding_label_tests_6.f03 *************** bd6eb17303abbc4e9007d3120de885aa gcc/te *** 49318,49323 **** --- 49616,49622 ---- 467e3192431dc9f382e940356a5e9e31 gcc/testsuite/gfortran.dg/block_name_1.f90 af3c12f2a878273c530d8127f9dea7fb gcc/testsuite/gfortran.dg/block_name_2.f90 ad949a7d41c107c01e619cb4276aa8e5 gcc/testsuite/gfortran.dg/blockdata_1.f90 + 7dd308b3ba190467e90bfb36452b2778 gcc/testsuite/gfortran.dg/blockdata_11.f90 d7ced503ea09a16752521a1f4b1fddc8 gcc/testsuite/gfortran.dg/blockdata_2.f90 8f473f427228b27b02d4863c73894c8b gcc/testsuite/gfortran.dg/blockdata_3.f90 e8876e93b76b208250265dc7c4145e96 gcc/testsuite/gfortran.dg/blockdata_4.f90 *************** f15e935d03dbafa7dc6f2f16a6745eaf gcc/te *** 49452,49457 **** --- 49751,49758 ---- cd3aad9da106691903e91c9c088f78a8 gcc/testsuite/gfortran.dg/c_funloc_tests_6.f90 50f4b315c9bd0e25bc32f9dd348dd475 gcc/testsuite/gfortran.dg/c_funloc_tests_7.f90 59490e9c85587d64c753922197bc3806 gcc/testsuite/gfortran.dg/c_funloc_tests_8.f90 + f8f8342ffbfc860b3fd25bf3bb1a89b1 gcc/testsuite/gfortran.dg/c_funptr_1.f90 + 3fc97d796867c00b63bcdccb04232885 gcc/testsuite/gfortran.dg/c_funptr_1_mod.f90 4b6d52265411683cdb8530282a8dff39 gcc/testsuite/gfortran.dg/c_kind_int128_test1.f03 0733118e389e1606ac84d84f59389db8 gcc/testsuite/gfortran.dg/c_kind_int128_test2.f03 a4cc3575cb70912e0c1e8f6d5f3ba75a gcc/testsuite/gfortran.dg/c_kind_params.f90 *************** d1999f6a0eaf5632d582305034467208 gcc/te *** 49494,49499 **** --- 49795,49801 ---- ef5c9b71cfe2a7ae0c7eda3f4213cb68 gcc/testsuite/gfortran.dg/c_ptr_tests_16.f90 ac91e127e05ae13da7cec3fc1053a789 gcc/testsuite/gfortran.dg/c_ptr_tests_17.f90 7a873f03774fb774534f537314416225 gcc/testsuite/gfortran.dg/c_ptr_tests_18.f90 + 98fb1fadfe2e07ccdc842d472fd09e95 gcc/testsuite/gfortran.dg/c_ptr_tests_19.f90 19526fb6a19b0628fb7a70b634ebe98d gcc/testsuite/gfortran.dg/c_ptr_tests_5.f03 f6be312d40aa69afff5a2130cf70acb9 gcc/testsuite/gfortran.dg/c_ptr_tests_7.f03 7aa5685a7f16644136d0f0d20953db0f gcc/testsuite/gfortran.dg/c_ptr_tests_7_driver.c *************** aa76a700f1775b4615f5bc59e6a6f86f gcc/te *** 49586,49591 **** --- 49888,49894 ---- 2c012b25be62885e19ecb346e3e0b8c0 gcc/testsuite/gfortran.dg/char_result_15.f90 a8c885ea4e0c6bc88f0ace8c9441b54c gcc/testsuite/gfortran.dg/char_result_16.f90 c57ff1e13c323e08a3d7e31aaad2177d gcc/testsuite/gfortran.dg/char_result_18.f90 + c23be0d92be5574c5c53b96a89405886 gcc/testsuite/gfortran.dg/char_result_19.f90 addbd6613662098935525e2467474eb4 gcc/testsuite/gfortran.dg/char_result_2.f90 7aca40512679e7e9da0693bc91c40364 gcc/testsuite/gfortran.dg/char_result_3.f90 1d3114221c526ae44bd098b162824d82 gcc/testsuite/gfortran.dg/char_result_4.f90 *************** f7d230606b53d7b328f30f5b3d6608dc gcc/te *** 49594,49599 **** --- 49897,49903 ---- 2cc1cffa8dca181a520ddcb6d337aff1 gcc/testsuite/gfortran.dg/char_result_7.f90 72e3b4aefed542507d5abe9256ee067f gcc/testsuite/gfortran.dg/char_result_8.f90 5093ae73a32a476b807d4a5128b4ed80 gcc/testsuite/gfortran.dg/char_result_9.f90 + 1ced3da36308e54e5d306659bf14b653 gcc/testsuite/gfortran.dg/char_result_mod_19.f90 db8a40e5c81b6bb7faee95d2cfe924a8 gcc/testsuite/gfortran.dg/char_spread_1.f90 97538021b1b31ffd7b7c9f1f6dc0e49f gcc/testsuite/gfortran.dg/char_transpose_1.f90 282e86050baa24c488dcf2d912a3b1ac gcc/testsuite/gfortran.dg/char_type_len.f90 *************** f3d0c2f9dd3430fcde70c063f5f1f609 gcc/te *** 49625,49630 **** --- 49929,49935 ---- a172ca937d7924e5b9285065ca6b21dd gcc/testsuite/gfortran.dg/charlen_14.f90 2206de0890f2534a89c4aae24ad16449 gcc/testsuite/gfortran.dg/charlen_15.f90 02d6fd55abf3af692a9be6039454369c gcc/testsuite/gfortran.dg/charlen_16.f90 + 6789f241b90393509e933466d0ce37dd gcc/testsuite/gfortran.dg/charlen_17.f90 e17d3a2ee93edbc78761cd7b4bc7a07b gcc/testsuite/gfortran.dg/chkbits.f90 3878b20ca157f84a63efc3ed7d107f76 gcc/testsuite/gfortran.dg/chmod_1.f90 8734b41ae39408708165754bbf06ee09 gcc/testsuite/gfortran.dg/chmod_2.f90 *************** e8904afb9adfeb76555179cf83d18504 gcc/te *** 49693,49699 **** 96edfbbf02b9106a48eb73f24d4ea360 gcc/testsuite/gfortran.dg/class_63.f90 0ce4624d38091f6542bcf6fab4486b51 gcc/testsuite/gfortran.dg/class_64.f90 123e8fdbca935f6b90c89e509f0a97f7 gcc/testsuite/gfortran.dg/class_65.f90 ! 6cc892c72c07b16501f3fb172d19f06e gcc/testsuite/gfortran.dg/class_66.f90 21a5ae6531304c6748be745ba95ac961 gcc/testsuite/gfortran.dg/class_67.f90 cc0c048415b8d0593fe7e5b164763dc7 gcc/testsuite/gfortran.dg/class_7.f03 765b5ae237d318aee8909def266c457e gcc/testsuite/gfortran.dg/class_8.f03 --- 49998,50004 ---- 96edfbbf02b9106a48eb73f24d4ea360 gcc/testsuite/gfortran.dg/class_63.f90 0ce4624d38091f6542bcf6fab4486b51 gcc/testsuite/gfortran.dg/class_64.f90 123e8fdbca935f6b90c89e509f0a97f7 gcc/testsuite/gfortran.dg/class_65.f90 ! 39af4a53bf77c8d015f34092be1c57c7 gcc/testsuite/gfortran.dg/class_66.f90 21a5ae6531304c6748be745ba95ac961 gcc/testsuite/gfortran.dg/class_67.f90 cc0c048415b8d0593fe7e5b164763dc7 gcc/testsuite/gfortran.dg/class_7.f03 765b5ae237d318aee8909def266c457e gcc/testsuite/gfortran.dg/class_8.f03 *************** b51c285d2aa337ba9d51a48947b0788a gcc/te *** 49776,49782 **** afecbef3bd5f68f4872a7ed414762932 gcc/testsuite/gfortran.dg/coarray/allocate_errgmsg.f90 77a59a37262e649592960648d8f49884 gcc/testsuite/gfortran.dg/coarray/atomic_1.f90 66a73e153495da5e9139cb83e979ea52 gcc/testsuite/gfortran.dg/coarray/atomic_2.f90 ! 4465280c9d8af39d0e631134b63fe18d gcc/testsuite/gfortran.dg/coarray/caf.exp bc1ad7d1140827fd94c615e483ec80a0 gcc/testsuite/gfortran.dg/coarray/codimension.f90 5458460c74c7764eb6fc6ca41f3520cb gcc/testsuite/gfortran.dg/coarray/codimension_2.f90 9604ece34279ee35811c44344503ca51 gcc/testsuite/gfortran.dg/coarray/codimension_2a.f90 --- 50081,50087 ---- afecbef3bd5f68f4872a7ed414762932 gcc/testsuite/gfortran.dg/coarray/allocate_errgmsg.f90 77a59a37262e649592960648d8f49884 gcc/testsuite/gfortran.dg/coarray/atomic_1.f90 66a73e153495da5e9139cb83e979ea52 gcc/testsuite/gfortran.dg/coarray/atomic_2.f90 ! a1876958fad12f17e2a0cb6c5e06d27f gcc/testsuite/gfortran.dg/coarray/caf.exp bc1ad7d1140827fd94c615e483ec80a0 gcc/testsuite/gfortran.dg/coarray/codimension.f90 5458460c74c7764eb6fc6ca41f3520cb gcc/testsuite/gfortran.dg/coarray/codimension_2.f90 9604ece34279ee35811c44344503ca51 gcc/testsuite/gfortran.dg/coarray/codimension_2a.f90 *************** bc2e49396148d7be346be065b8879d1b gcc/te *** 49791,49797 **** 393c735e4ed3573f46d59b6be8dfe555 gcc/testsuite/gfortran.dg/coarray/dummy_1.f90 145d35dc06fc9f1f4dedae6e06844cc4 gcc/testsuite/gfortran.dg/coarray/event_1.f90 82478fce64f3e0b6eabec854f96800c2 gcc/testsuite/gfortran.dg/coarray/event_2.f90 ! 7bdec35df5c34a10372c7a54a6b5ab8f gcc/testsuite/gfortran.dg/coarray/event_3.f08 69e67a47c4572bb8954e710fb63e1241 gcc/testsuite/gfortran.dg/coarray/event_4.f08 d5151e59e2e1e14dc716281be617a2b7 gcc/testsuite/gfortran.dg/coarray/fail_image_1.f08 f2e0d8eab800c2440470c47e27dbc818 gcc/testsuite/gfortran.dg/coarray/fail_image_2.f08 --- 50096,50102 ---- 393c735e4ed3573f46d59b6be8dfe555 gcc/testsuite/gfortran.dg/coarray/dummy_1.f90 145d35dc06fc9f1f4dedae6e06844cc4 gcc/testsuite/gfortran.dg/coarray/event_1.f90 82478fce64f3e0b6eabec854f96800c2 gcc/testsuite/gfortran.dg/coarray/event_2.f90 ! adfbd63a82cb07a5f08fcfc37965d57e gcc/testsuite/gfortran.dg/coarray/event_3.f08 69e67a47c4572bb8954e710fb63e1241 gcc/testsuite/gfortran.dg/coarray/event_4.f08 d5151e59e2e1e14dc716281be617a2b7 gcc/testsuite/gfortran.dg/coarray/fail_image_1.f08 f2e0d8eab800c2440470c47e27dbc818 gcc/testsuite/gfortran.dg/coarray/fail_image_2.f08 *************** fd555c460e9a2fe3d73c2849790b7206 gcc/te *** 49884,49889 **** --- 50189,50195 ---- eda6cad3c6c6f004e3137cf3e30aedf1 gcc/testsuite/gfortran.dg/coarray_alloc_with_implicit_sync_2.f90 964249eae6cd40820f1f28256a0bf3aa gcc/testsuite/gfortran.dg/coarray_allocate_1.f90 7f7ada77f8ccf2a006c41d9c27523532 gcc/testsuite/gfortran.dg/coarray_allocate_10.f08 + 89da7a5247ec226a9d595e4ee6bbbab8 gcc/testsuite/gfortran.dg/coarray_allocate_11.f90 285b5b3c2c36332e70a6fca024996fbd gcc/testsuite/gfortran.dg/coarray_allocate_2.f08 978bd13bbc4b2c95d2299d14606fb122 gcc/testsuite/gfortran.dg/coarray_allocate_3.f08 d990f539ac9bc71eee9dd4cc02f84412 gcc/testsuite/gfortran.dg/coarray_allocate_4.f08 *************** d8b0925104e27edfd7554327aec7e656 gcc/te *** 49918,49923 **** --- 50224,50230 ---- 3868ecdad997c64216510129983de4eb gcc/testsuite/gfortran.dg/coarray_collectives_8.f90 e7f7c38c4530db86c8bf560b1800b017 gcc/testsuite/gfortran.dg/coarray_collectives_9.f90 967c97a8edd55b3e24d9f53bacf51ab2 gcc/testsuite/gfortran.dg/coarray_critical_1.f90 + f24b69052d445ea075f93eefed61e789 gcc/testsuite/gfortran.dg/coarray_data_1.f90 9548b18ea57c3895468bd270375183d8 gcc/testsuite/gfortran.dg/coarray_dependency_1.f90 ae24a8ba632b111617b5af3d9ec9ed23 gcc/testsuite/gfortran.dg/coarray_event_1.f08 a863774927689ef296949ebaa242ffb2 gcc/testsuite/gfortran.dg/coarray_fail_st.f90 *************** bb8d56d19a9b76a2194076b6f5de055f gcc/te *** 49942,49948 **** c132dbfa1738d526e8055c025c1641e0 gcc/testsuite/gfortran.dg/coarray_lock_4.f90 074eddb0df81baa8fa98afe087fec459 gcc/testsuite/gfortran.dg/coarray_lock_5.f90 5a1674540bf58193c6febb71d5f4b58b gcc/testsuite/gfortran.dg/coarray_lock_6.f90 ! 10b44fa37903d9e34e858ef9b0fc9218 gcc/testsuite/gfortran.dg/coarray_lock_7.f90 363f712216477dd98bef29eaa7b022e7 gcc/testsuite/gfortran.dg/coarray_poly_1.f90 be78a9a8d107997dfb6a26a694e767f6 gcc/testsuite/gfortran.dg/coarray_poly_2.f90 7c19739bc10d458b120fb0ab4ca4dbf2 gcc/testsuite/gfortran.dg/coarray_poly_3.f90 --- 50249,50255 ---- c132dbfa1738d526e8055c025c1641e0 gcc/testsuite/gfortran.dg/coarray_lock_4.f90 074eddb0df81baa8fa98afe087fec459 gcc/testsuite/gfortran.dg/coarray_lock_5.f90 5a1674540bf58193c6febb71d5f4b58b gcc/testsuite/gfortran.dg/coarray_lock_6.f90 ! 3515a00d26fca44fbf66f64e625e8482 gcc/testsuite/gfortran.dg/coarray_lock_7.f90 363f712216477dd98bef29eaa7b022e7 gcc/testsuite/gfortran.dg/coarray_poly_1.f90 be78a9a8d107997dfb6a26a694e767f6 gcc/testsuite/gfortran.dg/coarray_poly_2.f90 7c19739bc10d458b120fb0ab4ca4dbf2 gcc/testsuite/gfortran.dg/coarray_poly_3.f90 *************** adf3e611b5d9dd41324a93faee4fe2c9 gcc/te *** 50124,50130 **** e62cb07af37a3023dea48cda7bae2544 gcc/testsuite/gfortran.dg/deallocate_stat_2.f90 1f6d173ba353df6282857ed63520cb21 gcc/testsuite/gfortran.dg/debug/debug.exp c8fe955f02d446b949b45194c7d29caf gcc/testsuite/gfortran.dg/debug/pr35154-dwarf2.f ! 2eac2116b9d52581b9b5d185acecd1e2 gcc/testsuite/gfortran.dg/debug/pr35154-stabs.f 67306648e7f17b3880c7c867fad9e0c9 gcc/testsuite/gfortran.dg/debug/pr37738.f 788a70497a0a2ddba0abf97330a47c01 gcc/testsuite/gfortran.dg/debug/pr43166.f f49bca9d2dccbedebe34c595e7e099d0 gcc/testsuite/gfortran.dg/debug/pr46756.f --- 50431,50437 ---- e62cb07af37a3023dea48cda7bae2544 gcc/testsuite/gfortran.dg/deallocate_stat_2.f90 1f6d173ba353df6282857ed63520cb21 gcc/testsuite/gfortran.dg/debug/debug.exp c8fe955f02d446b949b45194c7d29caf gcc/testsuite/gfortran.dg/debug/pr35154-dwarf2.f ! 4ca72322789f14d749b67a8810c9f243 gcc/testsuite/gfortran.dg/debug/pr35154-stabs.f 67306648e7f17b3880c7c867fad9e0c9 gcc/testsuite/gfortran.dg/debug/pr37738.f 788a70497a0a2ddba0abf97330a47c01 gcc/testsuite/gfortran.dg/debug/pr43166.f f49bca9d2dccbedebe34c595e7e099d0 gcc/testsuite/gfortran.dg/debug/pr46756.f *************** b5027dd480b5ebe7e0147828f05aed61 gcc/te *** 50166,50175 **** 299b547bcb6b486a2e1f3e6ff0e387b8 gcc/testsuite/gfortran.dg/dec_structure_1.f90 facc0d311d19c38571f70f8db13044bc gcc/testsuite/gfortran.dg/dec_structure_10.f90 bebb7b5cba927374343e4d102d6bdef2 gcc/testsuite/gfortran.dg/dec_structure_11.f90 ! c7371f966fa8fe05eb7f3540fda3af92 gcc/testsuite/gfortran.dg/dec_structure_12.f90 f49f855af4f970d26d54c898d689cf45 gcc/testsuite/gfortran.dg/dec_structure_13.f90 ! 5420066ea47f8652a0c02abc68b7c185 gcc/testsuite/gfortran.dg/dec_structure_14.f90 ! a72e275582cc00af9666fcd65f11856b gcc/testsuite/gfortran.dg/dec_structure_15.f90 0c2deddf183b1829738b6c015b933f07 gcc/testsuite/gfortran.dg/dec_structure_16.f90 6609d701473c6ac18cb7eaf33f217448 gcc/testsuite/gfortran.dg/dec_structure_17.f90 c065ec9eab467c19e2503ea2b5ec35f6 gcc/testsuite/gfortran.dg/dec_structure_2.f90 --- 50473,50482 ---- 299b547bcb6b486a2e1f3e6ff0e387b8 gcc/testsuite/gfortran.dg/dec_structure_1.f90 facc0d311d19c38571f70f8db13044bc gcc/testsuite/gfortran.dg/dec_structure_10.f90 bebb7b5cba927374343e4d102d6bdef2 gcc/testsuite/gfortran.dg/dec_structure_11.f90 ! cc7923e03cd538e563c645138bbb901c gcc/testsuite/gfortran.dg/dec_structure_12.f90 f49f855af4f970d26d54c898d689cf45 gcc/testsuite/gfortran.dg/dec_structure_13.f90 ! 14efd07f9de8042ea9476e559c133981 gcc/testsuite/gfortran.dg/dec_structure_14.f90 ! ebba8043478aa96038ef334b3246bf71 gcc/testsuite/gfortran.dg/dec_structure_15.f90 0c2deddf183b1829738b6c015b933f07 gcc/testsuite/gfortran.dg/dec_structure_16.f90 6609d701473c6ac18cb7eaf33f217448 gcc/testsuite/gfortran.dg/dec_structure_17.f90 c065ec9eab467c19e2503ea2b5ec35f6 gcc/testsuite/gfortran.dg/dec_structure_2.f90 *************** c2d3fe3d7d640f7941cc2bc632a62dae gcc/te *** 50219,50224 **** --- 50526,50532 ---- 1a26e360dc164c3593384827ba0ea576 gcc/testsuite/gfortran.dg/deferred_character_18.f90 0065ab4e114bfcdbbb2b3374d1ffdc63 gcc/testsuite/gfortran.dg/deferred_character_2.f90 dfd1a256ace2833d668ae709e8f43f9e gcc/testsuite/gfortran.dg/deferred_character_3.f90 + f405c538ee221b34e2094a843f78c12a gcc/testsuite/gfortran.dg/deferred_character_32.f90 1d0633419cdd140f8ca51872f6219b2d gcc/testsuite/gfortran.dg/deferred_character_4.f90 b90b86dcee8b12dac9cb174a3177fc66 gcc/testsuite/gfortran.dg/deferred_character_5.f90 8f0e0ad0341dea63051e52e1afc7a198 gcc/testsuite/gfortran.dg/deferred_character_6.f90 *************** dca63cf93efe22616e44d9f46b5b1933 gcc/te *** 50296,50301 **** --- 50604,50610 ---- 0b500dcd3858e049021939919e789ac4 gcc/testsuite/gfortran.dg/dependency_48.f90 c9817191c2bb4937bf557342ac314361 gcc/testsuite/gfortran.dg/dependency_49.f90 590a99c4ec44cc37aa92b225e93d6e87 gcc/testsuite/gfortran.dg/dependency_5.f90 + 4e12ffe31088cb1a780ebbce0ec059ef gcc/testsuite/gfortran.dg/dependency_53.f90 03218919538313b26e09fa1b8f0efda0 gcc/testsuite/gfortran.dg/dependency_6.f90 699f1378f5c1fcdc54eb21fdb4a59be1 gcc/testsuite/gfortran.dg/dependency_7.f90 89a3206dfabae1e31ea62ec7fa264ee6 gcc/testsuite/gfortran.dg/dependency_8.f90 *************** dd5ecf2c74eaa6c3f2c981a9dcb2caa3 gcc/te *** 50351,50357 **** b522fadd1464db48d2fe8165d2a66e70 gcc/testsuite/gfortran.dg/derived_sub.f90 adbce17b40220bfd236ee3eae3f70a9d gcc/testsuite/gfortran.dg/dev_null.F90 d655f69be703cce0cf887b416272ea61 gcc/testsuite/gfortran.dg/dfloat_1.f90 ! c9f9c3ba98632df0c5de87ebce48fce4 gcc/testsuite/gfortran.dg/dg.exp cf9206e8c02e17079f63e1e6860bdb3b gcc/testsuite/gfortran.dg/dim_range_1.f90 ea4b46f100a2bfd145edbb489c0084b0 gcc/testsuite/gfortran.dg/direct_io_1.f90 2a1539169ac7a352e0c4d17620d0cc9a gcc/testsuite/gfortran.dg/direct_io_10.f --- 50660,50666 ---- b522fadd1464db48d2fe8165d2a66e70 gcc/testsuite/gfortran.dg/derived_sub.f90 adbce17b40220bfd236ee3eae3f70a9d gcc/testsuite/gfortran.dg/dev_null.F90 d655f69be703cce0cf887b416272ea61 gcc/testsuite/gfortran.dg/dfloat_1.f90 ! 786746f093ad6105362e3aa48d05b3cd gcc/testsuite/gfortran.dg/dg.exp cf9206e8c02e17079f63e1e6860bdb3b gcc/testsuite/gfortran.dg/dim_range_1.f90 ea4b46f100a2bfd145edbb489c0084b0 gcc/testsuite/gfortran.dg/direct_io_1.f90 2a1539169ac7a352e0c4d17620d0cc9a gcc/testsuite/gfortran.dg/direct_io_10.f *************** a0b74fda00f9c5255be3c14e5cade4fb gcc/te *** 50629,50635 **** 67b1a5f1fc1b03b37fe0ddb31db8314f gcc/testsuite/gfortran.dg/extended_char_comparison_1.f 2a20ea5b0c45c04aee1ab3cbf795ad69 gcc/testsuite/gfortran.dg/extends_1.f03 0e44b2eb2c1a529f05be5d12105a377a gcc/testsuite/gfortran.dg/extends_10.f03 ! 6334ad8fcee8d591255fc679d233c894 gcc/testsuite/gfortran.dg/extends_11.f03 b7e2413270f6481d88fa6592dfc294f5 gcc/testsuite/gfortran.dg/extends_12.f03 d4e27af6507d9c4c9757a560f61cf4b0 gcc/testsuite/gfortran.dg/extends_13.f03 47fb1ab6628d7320424113485c1be2c0 gcc/testsuite/gfortran.dg/extends_14.f03 --- 50938,50944 ---- 67b1a5f1fc1b03b37fe0ddb31db8314f gcc/testsuite/gfortran.dg/extended_char_comparison_1.f 2a20ea5b0c45c04aee1ab3cbf795ad69 gcc/testsuite/gfortran.dg/extends_1.f03 0e44b2eb2c1a529f05be5d12105a377a gcc/testsuite/gfortran.dg/extends_10.f03 ! 3d68eda9ecc156089a6d87ab7de8a1f2 gcc/testsuite/gfortran.dg/extends_11.f03 b7e2413270f6481d88fa6592dfc294f5 gcc/testsuite/gfortran.dg/extends_12.f03 d4e27af6507d9c4c9757a560f61cf4b0 gcc/testsuite/gfortran.dg/extends_13.f03 47fb1ab6628d7320424113485c1be2c0 gcc/testsuite/gfortran.dg/extends_14.f03 *************** d88c4f69c4e8abbcf539c35db1c38c47 gcc/te *** 50697,50707 **** 7777e7da27f0f204cb380c5791769371 gcc/testsuite/gfortran.dg/finalize_24.f90 9d8695ba5d9b84a617601b19fbc15f3e gcc/testsuite/gfortran.dg/finalize_25.f90 41d2ab1f1acf2bfddbbdceb10c9ae399 gcc/testsuite/gfortran.dg/finalize_27.f90 ! efc9cd9348a3f56180139e80d960002c gcc/testsuite/gfortran.dg/finalize_28.f90 b0b40e9272a3a3ddc92029a3f499ef91 gcc/testsuite/gfortran.dg/finalize_29.f08 fd6f56591cff43978fb9e37af994eec0 gcc/testsuite/gfortran.dg/finalize_3.f03 e100c711627c65e22ec895f123885efe gcc/testsuite/gfortran.dg/finalize_30.f90 5df1306fb500720b7f7dafdb58f4a46d gcc/testsuite/gfortran.dg/finalize_31.f90 92b4ca27645d88cb11543d720382b004 gcc/testsuite/gfortran.dg/finalize_4.f03 ce817f495edb0ac306d6ae1052014e67 gcc/testsuite/gfortran.dg/finalize_5.f03 00394d3b18b9e094a6751225fef04a51 gcc/testsuite/gfortran.dg/finalize_6.f90 --- 51006,51017 ---- 7777e7da27f0f204cb380c5791769371 gcc/testsuite/gfortran.dg/finalize_24.f90 9d8695ba5d9b84a617601b19fbc15f3e gcc/testsuite/gfortran.dg/finalize_25.f90 41d2ab1f1acf2bfddbbdceb10c9ae399 gcc/testsuite/gfortran.dg/finalize_27.f90 ! d30e2b4888cd7deaa0b011ec6dc2730a gcc/testsuite/gfortran.dg/finalize_28.f90 b0b40e9272a3a3ddc92029a3f499ef91 gcc/testsuite/gfortran.dg/finalize_29.f08 fd6f56591cff43978fb9e37af994eec0 gcc/testsuite/gfortran.dg/finalize_3.f03 e100c711627c65e22ec895f123885efe gcc/testsuite/gfortran.dg/finalize_30.f90 5df1306fb500720b7f7dafdb58f4a46d gcc/testsuite/gfortran.dg/finalize_31.f90 + bf28fc2ddb1347b5d4cd2aac68cccbc5 gcc/testsuite/gfortran.dg/finalize_34.f90 92b4ca27645d88cb11543d720382b004 gcc/testsuite/gfortran.dg/finalize_4.f03 ce817f495edb0ac306d6ae1052014e67 gcc/testsuite/gfortran.dg/finalize_5.f03 00394d3b18b9e094a6751225fef04a51 gcc/testsuite/gfortran.dg/finalize_6.f90 *************** eaa9f5415777a4aa8e9cb87901c13910 gcc/te *** 51297,51308 **** --- 51607,51623 ---- 13b62b43e8c430a8a748b9782ee8d3d1 gcc/testsuite/gfortran.dg/gomp/pr83977.f90 28b8381f9a6407f3fbdf2a45fe796f66 gcc/testsuite/gfortran.dg/gomp/pr84116.f90 900e29bb957f49d5b8cee27818655396 gcc/testsuite/gfortran.dg/gomp/pr85313.f90 + 474faa53ddfedb432c4594b4df78d3f3 gcc/testsuite/gfortran.dg/gomp/pr88377.f90 + 5ec5bffb9591a9ffd391899e3384e8c4 gcc/testsuite/gfortran.dg/gomp/pr89621.f90 + 6399dd6d481972c65426ae5a0fe674a2 gcc/testsuite/gfortran.dg/gomp/pr89651.f90 b4be3f9de7631846875a711ae9b67293 gcc/testsuite/gfortran.dg/gomp/proc_ptr_1.f90 87885556568e657ef4c936c53e1c7305 gcc/testsuite/gfortran.dg/gomp/proc_ptr_2.f90 59e444df8ec8f5ea9859b5aef4d75865 gcc/testsuite/gfortran.dg/gomp/reduction1.f90 02484261b0434dbaf2709c34db58cd4d gcc/testsuite/gfortran.dg/gomp/reduction2.f90 a2addf1a691db784ba87841fe1cf8f23 gcc/testsuite/gfortran.dg/gomp/reduction3.f90 96b7be608b1727fa1e3fc8a9c0185d70 gcc/testsuite/gfortran.dg/gomp/schedule-1.f90 + c525cee40cfdc1d7f1dda5cf299fdde9 gcc/testsuite/gfortran.dg/gomp/schedule-modifiers-1.f90 + 8ad2e6ddba3c3e3e8fd13e26a2cb7c46 gcc/testsuite/gfortran.dg/gomp/schedule-modifiers-2.f90 9f419935560eeba38800fbec9faa6990 gcc/testsuite/gfortran.dg/gomp/sharing-1.f90 bb19e54aafc9016401c4797e4cb0d75d gcc/testsuite/gfortran.dg/gomp/sharing-2.f90 31d6e090f7c514b28f2656086d853df7 gcc/testsuite/gfortran.dg/gomp/sharing-3.f90 *************** e6c37a9def09433a6a2f8bc1d9220133 gcc/te *** 51467,51473 **** e75d952c59fd79d136d9f20ac5f9d493 gcc/testsuite/gfortran.dg/ichar_1.f90 9f00cdde2669030be42ca86f95884598 gcc/testsuite/gfortran.dg/ichar_2.f90 b614ce421f97fb4ab6fa10f1f1c47ab0 gcc/testsuite/gfortran.dg/ichar_3.f90 ! 61a90a701bdb712772bc39dc480bf8d1 gcc/testsuite/gfortran.dg/ieee/ieee.exp d4e79f3d59da8bf78ed9abd64e14a66e gcc/testsuite/gfortran.dg/ieee/ieee_1.F90 c160ba4534ede110d46792244ef13084 gcc/testsuite/gfortran.dg/ieee/ieee_2.f90 11531bb40c1766300ca1cb9d0343c12c gcc/testsuite/gfortran.dg/ieee/ieee_3.f90 --- 51782,51788 ---- e75d952c59fd79d136d9f20ac5f9d493 gcc/testsuite/gfortran.dg/ichar_1.f90 9f00cdde2669030be42ca86f95884598 gcc/testsuite/gfortran.dg/ichar_2.f90 b614ce421f97fb4ab6fa10f1f1c47ab0 gcc/testsuite/gfortran.dg/ichar_3.f90 ! 7ec907ceded29e9a82126a233eb13f85 gcc/testsuite/gfortran.dg/ieee/ieee.exp d4e79f3d59da8bf78ed9abd64e14a66e gcc/testsuite/gfortran.dg/ieee/ieee_1.F90 c160ba4534ede110d46792244ef13084 gcc/testsuite/gfortran.dg/ieee/ieee_2.f90 11531bb40c1766300ca1cb9d0343c12c gcc/testsuite/gfortran.dg/ieee/ieee_3.f90 *************** b4d472d28fc0ac004218dc87eb241306 gcc/te *** 51710,51715 **** --- 52025,52031 ---- b3de2cdb7dfd995e8d4a97fabcc29a38 gcc/testsuite/gfortran.dg/interface_abstract_2.f90 e797a26594e33f4316a85af1fe223cbc gcc/testsuite/gfortran.dg/interface_abstract_3.f90 a30d85d2601e16438a18162122cbc190 gcc/testsuite/gfortran.dg/interface_abstract_4.f90 + bb1e6a032a10a9e1ff7d9a5d79c13aa6 gcc/testsuite/gfortran.dg/interface_abstract_5.f90 b5ce20e569dd18b2200d162ba545aaa9 gcc/testsuite/gfortran.dg/interface_assignment_1.f90 2fc809c732294a8d3020830bc126420d gcc/testsuite/gfortran.dg/interface_assignment_2.f90 91f77567fb0079c826db40c2ce9296c0 gcc/testsuite/gfortran.dg/interface_assignment_3.f90 *************** a50aae7296164245305033ac9ad76f9e gcc/te *** 51945,51953 **** cce764967a53580b4da5528603b77e0c gcc/testsuite/gfortran.dg/lto/20091015-1_1.f b15d12ceedaec19ba0c3dccda0ff8ff3 gcc/testsuite/gfortran.dg/lto/20091015-1_2.f 22260f45e69e095269c5ce9ffd573fdd gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90 ! 4f2edde20f8cc5e9648cbd641c65f4b0 gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90 3347d22ad57680bea0046ec09834ace3 gcc/testsuite/gfortran.dg/lto/20091028-1_1.c ! 4f2edde20f8cc5e9648cbd641c65f4b0 gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90 132111f4eb309b2a60ee09bdd249ad57 gcc/testsuite/gfortran.dg/lto/20091028-2_1.c a712ac9ff8597986399f0e39238ae03d gcc/testsuite/gfortran.dg/lto/20100110-1_0.f90 a359cbb68407bfc3d0394abe1fbff589 gcc/testsuite/gfortran.dg/lto/20100222-1_0.f03 --- 52261,52269 ---- cce764967a53580b4da5528603b77e0c gcc/testsuite/gfortran.dg/lto/20091015-1_1.f b15d12ceedaec19ba0c3dccda0ff8ff3 gcc/testsuite/gfortran.dg/lto/20091015-1_2.f 22260f45e69e095269c5ce9ffd573fdd gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90 ! f485672dc63fa62c9200ae105fae2521 gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90 3347d22ad57680bea0046ec09834ace3 gcc/testsuite/gfortran.dg/lto/20091028-1_1.c ! f485672dc63fa62c9200ae105fae2521 gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90 132111f4eb309b2a60ee09bdd249ad57 gcc/testsuite/gfortran.dg/lto/20091028-2_1.c a712ac9ff8597986399f0e39238ae03d gcc/testsuite/gfortran.dg/lto/20100110-1_0.f90 a359cbb68407bfc3d0394abe1fbff589 gcc/testsuite/gfortran.dg/lto/20100222-1_0.f03 *************** f388840da10adfc224269f398590a10a gcc/te *** 51989,51994 **** --- 52305,52313 ---- a9d014274eb56078098dae3d4f9a8fe7 gcc/testsuite/gfortran.dg/lto/pr60635_0.f90 a8ba679c6307cb7e937915e91616c861 gcc/testsuite/gfortran.dg/lto/pr60635_1.c f4d0f3a9eea039a45f8f40d5a4d52efb gcc/testsuite/gfortran.dg/lto/pr79108_0.f90 + ba08aed6efe11198caa459b3c16a5ccd gcc/testsuite/gfortran.dg/lto/pr87689_0.f + a05a13a27c2b09cdc9cd3c6a8b7bf7a4 gcc/testsuite/gfortran.dg/lto/pr87689_1.f + f5272c5b4153fa5ce60b4c526701d273 gcc/testsuite/gfortran.dg/lto/pr89084_0.f90 90434c89063bd3bdc5d9a8c4eee70ada gcc/testsuite/gfortran.dg/make_unit.f90 b49070ec831f64c85f249772acd9a59f gcc/testsuite/gfortran.dg/malloc_free_1.f90 fac981decf60a31ee9a61ded4eff6076 gcc/testsuite/gfortran.dg/mapping_1.f90 *************** cf1aadbb18d5e6f8399c252ebc5de0bf gcc/te *** 52304,52310 **** 13d28611ec12cad2c98a2b98760c1cfa gcc/testsuite/gfortran.dg/nint_2.f90 f867bd2d1caf94b8344ac3386b825ea1 gcc/testsuite/gfortran.dg/nint_p7.f90 03b84fc5eca43cc5d1a0b1a93937da73 gcc/testsuite/gfortran.dg/no_arg_check_1.f90 ! 303a890b2110e8215f31f06f3296a575 gcc/testsuite/gfortran.dg/no_arg_check_2.f90 b737c11615e1c006ec919afcf954359a gcc/testsuite/gfortran.dg/no_arg_check_3.f90 b8ed55f3a0b0c5b3a0d9e46a8d126422 gcc/testsuite/gfortran.dg/no_range_check_1.f90 10ba36a54e4167012d313c9d133e2697 gcc/testsuite/gfortran.dg/no_range_check_2.f90 --- 52623,52629 ---- 13d28611ec12cad2c98a2b98760c1cfa gcc/testsuite/gfortran.dg/nint_2.f90 f867bd2d1caf94b8344ac3386b825ea1 gcc/testsuite/gfortran.dg/nint_p7.f90 03b84fc5eca43cc5d1a0b1a93937da73 gcc/testsuite/gfortran.dg/no_arg_check_1.f90 ! 82f3ab9b8a10f2f7823510a3b555339a gcc/testsuite/gfortran.dg/no_arg_check_2.f90 b737c11615e1c006ec919afcf954359a gcc/testsuite/gfortran.dg/no_arg_check_3.f90 b8ed55f3a0b0c5b3a0d9e46a8d126422 gcc/testsuite/gfortran.dg/no_range_check_1.f90 10ba36a54e4167012d313c9d133e2697 gcc/testsuite/gfortran.dg/no_range_check_2.f90 *************** b2823ca785899e4525f0fc17a220141f gcc/te *** 52323,52328 **** --- 52642,52648 ---- 91353d61f3211c7a23b612772e08fd95 gcc/testsuite/gfortran.dg/nosigned_zero_3.f90 159e718b6cdc3ab81ad5a1d7d7784a9e gcc/testsuite/gfortran.dg/null1.f90 3fb21e1a3ab7abb4fda4c7de5e911da6 gcc/testsuite/gfortran.dg/null_1.f90 + e49574cae7efd91e2d92bce10b9d46ec gcc/testsuite/gfortran.dg/null_10.f90 395e8ab85b617da87692d07766c92d12 gcc/testsuite/gfortran.dg/null_2.f90 4a039c37a090768395179ad5abf300cc gcc/testsuite/gfortran.dg/null_3.f90 e5fa40276b7e0de18f35bf0ad1ffb8bc gcc/testsuite/gfortran.dg/null_4.f90 *************** f054254e454828510bea70958afa02a8 gcc/te *** 52455,52467 **** 53df30aa4d33665f06dffc149edb1acc gcc/testsuite/gfortran.dg/pointer_function_actual_2.f90 ca3502e61ad4ad83ad0d8c0bd4258847 gcc/testsuite/gfortran.dg/pointer_function_result_1.f90 b8411fe9cca01b5165020fe5db99ea7f gcc/testsuite/gfortran.dg/pointer_init_1.f90 ! d65add36c892fbd171b2a6230e3df47a gcc/testsuite/gfortran.dg/pointer_init_2.f90 420bfb631f3b55335367be5626fee801 gcc/testsuite/gfortran.dg/pointer_init_3.f90 4d72723b2b5af10ed43643040e25b44a gcc/testsuite/gfortran.dg/pointer_init_4.f90 453ecb034e724f36fa5bedfa34421eb7 gcc/testsuite/gfortran.dg/pointer_init_5.f90 ! d72c5595a92cdc30ae5c763e89917fad gcc/testsuite/gfortran.dg/pointer_init_6.f90 04a911b96a459127d681989557ce10aa gcc/testsuite/gfortran.dg/pointer_init_7.f90 3207d3004ca83ffbdfb378e718c43744 gcc/testsuite/gfortran.dg/pointer_init_8.f90 ea510da8f62c8fefcddeee09623cb9e9 gcc/testsuite/gfortran.dg/pointer_intent_1.f90 df45593ceab569302723dbccf3cd63de gcc/testsuite/gfortran.dg/pointer_intent_2.f90 9bb45e748921409aa8ed658c7f890789 gcc/testsuite/gfortran.dg/pointer_intent_3.f90 --- 52775,52788 ---- 53df30aa4d33665f06dffc149edb1acc gcc/testsuite/gfortran.dg/pointer_function_actual_2.f90 ca3502e61ad4ad83ad0d8c0bd4258847 gcc/testsuite/gfortran.dg/pointer_function_result_1.f90 b8411fe9cca01b5165020fe5db99ea7f gcc/testsuite/gfortran.dg/pointer_init_1.f90 ! 172ad5baa7baf2ab310a7cbce0cfaf13 gcc/testsuite/gfortran.dg/pointer_init_2.f90 420bfb631f3b55335367be5626fee801 gcc/testsuite/gfortran.dg/pointer_init_3.f90 4d72723b2b5af10ed43643040e25b44a gcc/testsuite/gfortran.dg/pointer_init_4.f90 453ecb034e724f36fa5bedfa34421eb7 gcc/testsuite/gfortran.dg/pointer_init_5.f90 ! 859dd7c2364c1c9047201cb2598f2828 gcc/testsuite/gfortran.dg/pointer_init_6.f90 04a911b96a459127d681989557ce10aa gcc/testsuite/gfortran.dg/pointer_init_7.f90 3207d3004ca83ffbdfb378e718c43744 gcc/testsuite/gfortran.dg/pointer_init_8.f90 + ae06d6761f5e36e2c2e46067aa089b8e gcc/testsuite/gfortran.dg/pointer_init_9.f90 ea510da8f62c8fefcddeee09623cb9e9 gcc/testsuite/gfortran.dg/pointer_intent_1.f90 df45593ceab569302723dbccf3cd63de gcc/testsuite/gfortran.dg/pointer_intent_2.f90 9bb45e748921409aa8ed658c7f890789 gcc/testsuite/gfortran.dg/pointer_intent_3.f90 *************** c47875bcd653c4574e99444029c51b62 gcc/te *** 52493,52498 **** --- 52814,52820 ---- c90f7e25726cc6898d590f98aee096d5 gcc/testsuite/gfortran.dg/power_4.f90 9a44d42654a526adbe450d1ef2d6f771 gcc/testsuite/gfortran.dg/power_5.f90 a3ab8fbef738997039cfd45f350461a3 gcc/testsuite/gfortran.dg/power_6.f90 + 77eca811eac1f80edb0f33c68ac0c4d3 gcc/testsuite/gfortran.dg/power_7.f90 41cf415c6e21f209054052055d3b27e2 gcc/testsuite/gfortran.dg/pr12884.f f2f5d37f01f228930742b800f664a82b gcc/testsuite/gfortran.dg/pr15129.f90 84a2259df58a58af62b88732f4acd394 gcc/testsuite/gfortran.dg/pr15140.f90 *************** c22c5fcb7376badaea646e51947b3b9d gcc/te *** 52577,52582 **** --- 52899,52905 ---- a5e0103722a22ee4318dbc6a09066b4b gcc/testsuite/gfortran.dg/pr33646.f90 f37aff73f33e31695d9a33c68e406840 gcc/testsuite/gfortran.dg/pr33794.f90 ff7d6bedf25daa2dd953d19c3f530ec4 gcc/testsuite/gfortran.dg/pr34163.f90 + 6bd9bb75002c6474d2b042bddf5d54a5 gcc/testsuite/gfortran.dg/pr35031.f90 3d101411c99362e8f11666e807ec7bc0 gcc/testsuite/gfortran.dg/pr35662.f90 6b74d1849a69dc7a1ded9d0ae64797e1 gcc/testsuite/gfortran.dg/pr35849.f90 c3d8d9d591ce2602aec62d28145126dc gcc/testsuite/gfortran.dg/pr35944-1.f90 *************** f687c2bae87e50ac2773852543037742 gcc/te *** 52673,52679 **** 58ef52a5a164af942250c1ed58c78a9d gcc/testsuite/gfortran.dg/pr50069_2.f90 baba316baa03ee3527448735c40da508 gcc/testsuite/gfortran.dg/pr50769.f90 6d40b8b2b18fefbafaa1495c64dc7b65 gcc/testsuite/gfortran.dg/pr50875.f90 ! 106b6d8b2bc880f0a9cd862194a6c34e gcc/testsuite/gfortran.dg/pr51434.f90 392a9020525f62a719dfb6ec68012809 gcc/testsuite/gfortran.dg/pr51993.f90 bb7add9250612f62914277baa59b409c gcc/testsuite/gfortran.dg/pr52370.f90 d427f4eb6f044237726ce98aa1dc9754 gcc/testsuite/gfortran.dg/pr52608.f90 --- 52996,53002 ---- 58ef52a5a164af942250c1ed58c78a9d gcc/testsuite/gfortran.dg/pr50069_2.f90 baba316baa03ee3527448735c40da508 gcc/testsuite/gfortran.dg/pr50769.f90 6d40b8b2b18fefbafaa1495c64dc7b65 gcc/testsuite/gfortran.dg/pr50875.f90 ! 8ba23b49a86151ea9987a2845a260bb9 gcc/testsuite/gfortran.dg/pr51434.f90 392a9020525f62a719dfb6ec68012809 gcc/testsuite/gfortran.dg/pr51993.f90 bb7add9250612f62914277baa59b409c gcc/testsuite/gfortran.dg/pr52370.f90 d427f4eb6f044237726ce98aa1dc9754 gcc/testsuite/gfortran.dg/pr52608.f90 *************** a3fc06fbb8d6c53a22462ce8a5fade30 gcc/te *** 52705,52711 **** 81f4e8de062c12971e225844fc9fdd90 gcc/testsuite/gfortran.dg/pr58027.f90 1ca63f28ae284979c3b2b1c01dc88abf gcc/testsuite/gfortran.dg/pr58290.f90 d09d9e61d93384cc4510957f1243b371 gcc/testsuite/gfortran.dg/pr58484.f ! 129350cb378300c375a01369309e31b6 gcc/testsuite/gfortran.dg/pr58968.f 54642dc29547df928c052d04531cae6f gcc/testsuite/gfortran.dg/pr59440-1.f90 29517347731146172a1733a27581daa9 gcc/testsuite/gfortran.dg/pr59440-2.f90 f5878abe544570f500d4148c17a74cc4 gcc/testsuite/gfortran.dg/pr59440-3.f90 --- 53028,53034 ---- 81f4e8de062c12971e225844fc9fdd90 gcc/testsuite/gfortran.dg/pr58027.f90 1ca63f28ae284979c3b2b1c01dc88abf gcc/testsuite/gfortran.dg/pr58290.f90 d09d9e61d93384cc4510957f1243b371 gcc/testsuite/gfortran.dg/pr58484.f ! 756af060f4f83f1c7fac64450555d67c gcc/testsuite/gfortran.dg/pr58968.f 54642dc29547df928c052d04531cae6f gcc/testsuite/gfortran.dg/pr59440-1.f90 29517347731146172a1733a27581daa9 gcc/testsuite/gfortran.dg/pr59440-2.f90 f5878abe544570f500d4148c17a74cc4 gcc/testsuite/gfortran.dg/pr59440-3.f90 *************** c0ada255b8d4b02a2bf3f62ec3fd9223 gcc/te *** 52783,52789 **** 4239cbc5229572dbb1b8db5b9e534c59 gcc/testsuite/gfortran.dg/pr68227.f90 9b3855eb7267f08dfbb31622bb7ccd2f gcc/testsuite/gfortran.dg/pr68251.f90 62de51c227f08efdca419f1251a72597 gcc/testsuite/gfortran.dg/pr68283.f90 ! 53367d2d1c3060e4cca1dbeebef89967 gcc/testsuite/gfortran.dg/pr68318_1.f90 b3ef2aaf4796b96c50079acc822669c9 gcc/testsuite/gfortran.dg/pr68318_2.f90 94426d6f9de03e56102a32084142c32c gcc/testsuite/gfortran.dg/pr68319.f90 72efb9f6fc6b90e2038662cf5300c2b9 gcc/testsuite/gfortran.dg/pr68379-1.f90 --- 53106,53112 ---- 4239cbc5229572dbb1b8db5b9e534c59 gcc/testsuite/gfortran.dg/pr68227.f90 9b3855eb7267f08dfbb31622bb7ccd2f gcc/testsuite/gfortran.dg/pr68251.f90 62de51c227f08efdca419f1251a72597 gcc/testsuite/gfortran.dg/pr68283.f90 ! 698bcf6aa622bf31c97dfd828d0975f7 gcc/testsuite/gfortran.dg/pr68318_1.f90 b3ef2aaf4796b96c50079acc822669c9 gcc/testsuite/gfortran.dg/pr68318_2.f90 94426d6f9de03e56102a32084142c32c gcc/testsuite/gfortran.dg/pr68319.f90 72efb9f6fc6b90e2038662cf5300c2b9 gcc/testsuite/gfortran.dg/pr68379-1.f90 *************** eea87284cbfbd1719101caddb4ac38a8 gcc/te *** 52795,52800 **** --- 53118,53125 ---- 08ac83e05f38ebf756a253414d9f87b0 gcc/testsuite/gfortran.dg/pr68864.f90 b9749045f7e8d01ce770bef143077398 gcc/testsuite/gfortran.dg/pr69055.f90 4dfe5b03dbae8d8845caac4e7f7c0a89 gcc/testsuite/gfortran.dg/pr69155.f90 + 76138edfc2f50c95b9776fd1ddbf7633 gcc/testsuite/gfortran.dg/pr69455_1.f90 + 4888552ee29a6b2e46e1b22d0f8a8483 gcc/testsuite/gfortran.dg/pr69455_2.f90 af40f4dedd6541b74e692dc2ab3d113d gcc/testsuite/gfortran.dg/pr69514_1.f90 a76232d35f35517cbd958d99d1ca3975 gcc/testsuite/gfortran.dg/pr69514_2.f90 f0a6995f73ec38a5c8e24e5d968a365b gcc/testsuite/gfortran.dg/pr69554-1.F90 *************** c718be52c08cbfe5941dc1bb7a50bcb5 gcc/te *** 52810,52816 **** aa6073708fcde459f6b44a5e294fd6b0 gcc/testsuite/gfortran.dg/pr70409.f90 23dc11b0707086a8168e76c17d13d620 gcc/testsuite/gfortran.dg/pr70673.f90 b476378eb8250b54f4b3b5f63d128940 gcc/testsuite/gfortran.dg/pr70754.f90 ! 859e303d3e720c33547f3996d66d7637 gcc/testsuite/gfortran.dg/pr70870_1.f90 0e424f05f2fdeb786b877ace2617112d gcc/testsuite/gfortran.dg/pr70931.f90 768e159c79aa0aa1e1ae6e13122ed1b2 gcc/testsuite/gfortran.dg/pr70937.f90 a16162b0759105febc1efc1311184688 gcc/testsuite/gfortran.dg/pr71047.f08 --- 53135,53141 ---- aa6073708fcde459f6b44a5e294fd6b0 gcc/testsuite/gfortran.dg/pr70409.f90 23dc11b0707086a8168e76c17d13d620 gcc/testsuite/gfortran.dg/pr70673.f90 b476378eb8250b54f4b3b5f63d128940 gcc/testsuite/gfortran.dg/pr70754.f90 ! 386c85829c4e2571e0db7949c25f5113 gcc/testsuite/gfortran.dg/pr70870_1.f90 0e424f05f2fdeb786b877ace2617112d gcc/testsuite/gfortran.dg/pr70931.f90 768e159c79aa0aa1e1ae6e13122ed1b2 gcc/testsuite/gfortran.dg/pr70937.f90 a16162b0759105febc1efc1311184688 gcc/testsuite/gfortran.dg/pr71047.f08 *************** d085febf0a75173f181533e5b551f555 gcc/te *** 52850,52855 **** --- 53175,53181 ---- b41dce20e2213fb234886325f924905e gcc/testsuite/gfortran.dg/pr77460.f90 6762f5900b24ec775d86ad379332cdf0 gcc/testsuite/gfortran.dg/pr77498.f 7ac13d0d1a6ccb282debcd0ac4bf69fd gcc/testsuite/gfortran.dg/pr77506.f90 + ad1a51ce4bd4b4e49f9cb40f0178b2ad gcc/testsuite/gfortran.dg/pr77583.f90 a99d6d5592ea6b962b6a45223a22a17f gcc/testsuite/gfortran.dg/pr77612.f90 a0e0cbaff470d13a9247b4f6f66572d6 gcc/testsuite/gfortran.dg/pr77694.f90 f55a4e8f8a1e79f11c9cd9ad6d9eca57 gcc/testsuite/gfortran.dg/pr77719.f90 *************** a997ec96c9e5b5703664c90f0b844fe1 gcc/te *** 52862,52868 **** 8a24e4a427745cf896bba391a3e4cc60 gcc/testsuite/gfortran.dg/pr78033.f90 e54adfde54f7051d2c213313e32967ac gcc/testsuite/gfortran.dg/pr78061.f 6701f92b9541522f589f8caf4f94fe71 gcc/testsuite/gfortran.dg/pr78092.f90 ! 46b05b28d9c2a5643e5c9999f913781a gcc/testsuite/gfortran.dg/pr78259.f90 fadb08b8fc33159559b83dbbbb0cff19 gcc/testsuite/gfortran.dg/pr78278.f90 38417bf1cb92bb7d70724f9be2c325ca gcc/testsuite/gfortran.dg/pr78279.f90 c8893a59741e05d503a560b19c9684a9 gcc/testsuite/gfortran.dg/pr78297.f90 --- 53188,53194 ---- 8a24e4a427745cf896bba391a3e4cc60 gcc/testsuite/gfortran.dg/pr78033.f90 e54adfde54f7051d2c213313e32967ac gcc/testsuite/gfortran.dg/pr78061.f 6701f92b9541522f589f8caf4f94fe71 gcc/testsuite/gfortran.dg/pr78092.f90 ! 442fc2f549bd7836f1a873a0e879aee2 gcc/testsuite/gfortran.dg/pr78259.f90 fadb08b8fc33159559b83dbbbb0cff19 gcc/testsuite/gfortran.dg/pr78278.f90 38417bf1cb92bb7d70724f9be2c325ca gcc/testsuite/gfortran.dg/pr78279.f90 c8893a59741e05d503a560b19c9684a9 gcc/testsuite/gfortran.dg/pr78297.f90 *************** ee35970003b8954b57c5ce45c7fd506c gcc/te *** 52877,52887 **** --- 53203,53215 ---- d6ba5de6e97cfb946328be25aba5d7db gcc/testsuite/gfortran.dg/pr81175.f ff48bac9fecdd1e7a7054b92e1959192 gcc/testsuite/gfortran.dg/pr81723.f d1aef01880835db4a541fe2fb5d9b4b4 gcc/testsuite/gfortran.dg/pr81735.f90 + 3d04193562d7393f12434c7773605d75 gcc/testsuite/gfortran.dg/pr81849.f90 b6ff04901e3aee18765a74bf65804e38 gcc/testsuite/gfortran.dg/pr82253.f90 3efdf6eef62b5bb55c7bd5d6342e1943 gcc/testsuite/gfortran.dg/pr83149.f90 b7e5bb91d4ee23a891d1d4b6fb4ad916 gcc/testsuite/gfortran.dg/pr83149_1.f90 a0d91b3e4bc44943398d32213588392c gcc/testsuite/gfortran.dg/pr83149_a.f90 b7a2ebc3f20996032962acc5e26b8851 gcc/testsuite/gfortran.dg/pr83149_b.f90 + fd7937a762c5733d3533bba0d9b05a6e gcc/testsuite/gfortran.dg/pr83246.f90 3e5e2dd987641b643ea03f228e33bc00 gcc/testsuite/gfortran.dg/pr83864.f90 34ffb26eca5fadb11dd891f51b3e475e gcc/testsuite/gfortran.dg/pr83874.f90 3d847069ff4f87a831062ece033f3bf1 gcc/testsuite/gfortran.dg/pr83939.f90 *************** b0eb41d6d5e0aa8384db509e9ccf6109 gcc/te *** 52899,52909 **** --- 53227,53255 ---- cf956ba7ea568a1ec1e49d5d32949c70 gcc/testsuite/gfortran.dg/pr85779_2.f90 bc3e0be49dbdfdfc634c8f0f2c908763 gcc/testsuite/gfortran.dg/pr85779_3.f90 e09a0ecad84cbee49613c16f8e8538ce gcc/testsuite/gfortran.dg/pr85780.f90 + 725e595013765639d219c2012948cd9d gcc/testsuite/gfortran.dg/pr85797.f90 + e85019fafc2465365ffe52752040d464 gcc/testsuite/gfortran.dg/pr85798.f90 052b31eec86fd95fce096fa3b0045dd3 gcc/testsuite/gfortran.dg/pr85895.f90 38e09a1ffde1bb73657e9c54235df44e gcc/testsuite/gfortran.dg/pr85996.f90 47fbecd6ce7dba0a6b21dadaec06da18 gcc/testsuite/gfortran.dg/pr86045.f90 a1e635c44207be5bef0583d4e95b9b59 gcc/testsuite/gfortran.dg/pr86059.f90 2546ce0ab701ca0a37f0ee8ef6e3ef0e gcc/testsuite/gfortran.dg/pr86110.f90 + be7a22a80bb839c5c9daab757b152b75 gcc/testsuite/gfortran.dg/pr88138.f90 + a554e5d57f7bc7a8d1b99acfd01fdaa9 gcc/testsuite/gfortran.dg/pr88155.f90 + 86722bed377c20abe3aeeff940fd433d gcc/testsuite/gfortran.dg/pr88169_1.f90 + 539c0b69ccf536a06ed2d47fa7cb4290 gcc/testsuite/gfortran.dg/pr88169_2.f90 + 9d4321ee93a0450d7c863fa8a1ef7a78 gcc/testsuite/gfortran.dg/pr88169_3.f90 + f869901e299fbf4e6f33c18ce815c592 gcc/testsuite/gfortran.dg/pr88205.f90 + 9d3ee3388f9a6f3475d3ca6ecb957595 gcc/testsuite/gfortran.dg/pr88206.f90 + d146cb10030ff5567e3df552e1bd60a4 gcc/testsuite/gfortran.dg/pr88228.f90 + ffb8d9ff34082ead6726f89479443062 gcc/testsuite/gfortran.dg/pr88249.f90 + 4dd42b9875f04e7bc7994da3c131e6f7 gcc/testsuite/gfortran.dg/pr88269.f90 + ed9d93ecae79fa041852ef045ccc680f gcc/testsuite/gfortran.dg/pr88902.f90 + d0e021239a321dbde0c39d7f370068c8 gcc/testsuite/gfortran.dg/pr89077.f90 + a2461a16a54c67eb1031deda70d3c512 gcc/testsuite/gfortran.dg/pr89084.f90 + be4f5532cbaa58d083d822b627ffe5de gcc/testsuite/gfortran.dg/pr89253.f + 2c2748104acadb0d86e6d05dfa5960d1 gcc/testsuite/gfortran.dg/pr90344.f90 + 1fa961354220c898ac6a00ceef4152de gcc/testsuite/gfortran.dg/pr91686.f90 6ff99f4b0021f30bee039a61db7cba9d gcc/testsuite/gfortran.dg/predcom-1.f 20a411a7e5a57891297c4c6a96d92009 gcc/testsuite/gfortran.dg/predcom-2.f 93166017899716f4c3742eda5aaf4087 gcc/testsuite/gfortran.dg/predict-1.f90 *************** fbfcfdd0751320bb90e2488052dfe7de gcc/te *** 53009,53014 **** --- 53355,53361 ---- a50ed014f3fd628f8e8e8e09f44f8c0f gcc/testsuite/gfortran.dg/proc_ptr_49.f90 8315cc72db332168e57edf018a4b8f1f gcc/testsuite/gfortran.dg/proc_ptr_5.f90 43ca301c170d61a34b8db85b8fcd1d84 gcc/testsuite/gfortran.dg/proc_ptr_50.f90 + 2bdbfb5616cc946bcc711233f9deb135 gcc/testsuite/gfortran.dg/proc_ptr_51.f90 2e1358865c3ec02c3c45568f5eebb128 gcc/testsuite/gfortran.dg/proc_ptr_6.f90 3648c097522ae5858550c7d7776afd28 gcc/testsuite/gfortran.dg/proc_ptr_7.c 03be7ba134a9b19dcfa3ec09f4064fc4 gcc/testsuite/gfortran.dg/proc_ptr_7.f90 *************** b1af3996950def8fd6459e855d42bd47 gcc/te *** 53105,53111 **** --- 53452,53460 ---- bece3bdd29dea9f82fad8f5e6162aa5d gcc/testsuite/gfortran.dg/ptr_func_assign_2.f08 3ba73ea19eff54d63f7d39eed191abc3 gcc/testsuite/gfortran.dg/ptr_func_assign_3.f08 389e953b7230302dc01a242926959fa7 gcc/testsuite/gfortran.dg/ptr_func_assign_4.f08 + 8610f62acf79505ce9c955532780ae20 gcc/testsuite/gfortran.dg/ptr_func_assign_5.f08 1bdd54ec3c3cda30429d4442e8a439e5 gcc/testsuite/gfortran.dg/public_private_module.f90 + 23cd71f83283e2da0ce59ea093161e45 gcc/testsuite/gfortran.dg/public_private_module_10.f90 53bfb4bd5468c34fc1b1a819ebc75855 gcc/testsuite/gfortran.dg/public_private_module_2.f90 d103e889cb7d81b0f6805dbfc1c68c26 gcc/testsuite/gfortran.dg/public_private_module_3.f90 84ea34192deaf0c1463e5796a16847a2 gcc/testsuite/gfortran.dg/public_private_module_4.f90 *************** ec40f6628038f9f6e9ba16e588a9b8c2 gcc/te *** 53381,53386 **** --- 53730,53737 ---- e89fd7896cb639b6f282d37cefd8c3be gcc/testsuite/gfortran.dg/select_type_40.f90 3040c1e84327028f026493d2815ce052 gcc/testsuite/gfortran.dg/select_type_41.f90 c3b4456f67768c5c49eeccb9868aae56 gcc/testsuite/gfortran.dg/select_type_42.f90 + 037694f7a50336b18699b176fea4d569 gcc/testsuite/gfortran.dg/select_type_45.f90 + cd8c016f6ead596119f334940e6d58e4 gcc/testsuite/gfortran.dg/select_type_46.f90 3ab901522e5a6c2930daa42a08c5a4c3 gcc/testsuite/gfortran.dg/select_type_5.f03 08871f191c3a23bf7de4d00e2c1959a3 gcc/testsuite/gfortran.dg/select_type_6.f03 2ba60576db34ceefab51c78da10da0b6 gcc/testsuite/gfortran.dg/select_type_7.f03 *************** e1ecc346f86103555c66ea6afae29102 gcc/te *** 53555,53560 **** --- 53906,53912 ---- d1663fd4e1368341812629ea5580dde9 gcc/testsuite/gfortran.dg/submodule_28.f08 147400141f6bbfa5c2a66612b85d0557 gcc/testsuite/gfortran.dg/submodule_29.f08 aa943f2bec85bb461999d2cb2adfc73a gcc/testsuite/gfortran.dg/submodule_3.f08 + 1150b8f6fefdb0cd92bc1b1145ca90bd gcc/testsuite/gfortran.dg/submodule_30.f08 701cab3628ee98dbcccc1d64e72d4ed6 gcc/testsuite/gfortran.dg/submodule_31.f08 68f9f70d888318a31160ba732171726f gcc/testsuite/gfortran.dg/submodule_4.f08 1fbed56af4313e533e45631365afe8d6 gcc/testsuite/gfortran.dg/submodule_5.f08 *************** fe3aeafe60d9d200fe6d6bde4f1ddd73 gcc/te *** 54022,54027 **** --- 54374,54380 ---- 4b2cb0b83786fd0b9880b55165c7abd6 gcc/testsuite/gfortran.dg/warn_align_commons.f90 91b6dafb4a727778bd7d500662b812df gcc/testsuite/gfortran.dg/warn_argument_mismatch_1.f90 660f5862b298d573d0321c73779e592e gcc/testsuite/gfortran.dg/warn_conversion.f90 + 00a4641c6351986a62b8f159ce6f9439 gcc/testsuite/gfortran.dg/warn_conversion_10.f90 f0b0e40083e166f0ec356c0f059cdb13 gcc/testsuite/gfortran.dg/warn_conversion_2.f90 fb059aee8dd3ce08978867270c115969 gcc/testsuite/gfortran.dg/warn_conversion_3.f90 a6384af219923cae21fd5bb664966ed6 gcc/testsuite/gfortran.dg/warn_conversion_4.f90 *************** c3ddd813e72b606d44cdfd47616fff95 gcc/te *** 54041,54050 **** --- 54394,54405 ---- 10c0140b52dfb08b0d4c05279aec231b gcc/testsuite/gfortran.dg/warn_target_lifetime_2.f90 be7f18f8b43ef70b7585a74284446e57 gcc/testsuite/gfortran.dg/warn_target_lifetime_3.f90 2ece2210488f4ed099be674644f83ed0 gcc/testsuite/gfortran.dg/warn_target_lifetime_4.f90 + e9308a20aa0e1201f3b57212461b01a3 gcc/testsuite/gfortran.dg/warn_undefined_1.f90 faef1baec47674d096569b4803422d64 gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_1.f90 9cdfca84c19b8b4bfd5f9be4a921f068 gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_2.f90 62c8995bb923620e3509b9bd179b618c gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_3.f90 fa2d697a6cf010eb6e082b1cf14cfb0a gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_4.f90 + 1d37c013db4796b65d121229b6e04f40 gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90 5ed4aed6865b1e3f49698db244b646ef gcc/testsuite/gfortran.dg/warn_unused_function.f90 1b3805c8c508498bff44d111ee962eb7 gcc/testsuite/gfortran.dg/warn_unused_function_2.f90 ae95981491a9741922c27b078d9a628c gcc/testsuite/gfortran.dg/warn_unused_function_3.f90 *************** bf1a2c9b961f9dff5a53f9a8809384a9 gcc/te *** 54638,54643 **** --- 54993,54999 ---- 6381cf13892c66012106a3857a1718e7 gcc/testsuite/gnat.dg/array29.adb 3a2c1f6c7601fe3e7eaeb46c064bfb44 gcc/testsuite/gnat.dg/array29.ads ce95a40ed45efc9a52f92f6d4700acb5 gcc/testsuite/gnat.dg/array3.adb + 3a714231941c40b5b190f2c2ef886e94 gcc/testsuite/gnat.dg/array34.adb b1368ee1737ab5c2b00482e137e1a378 gcc/testsuite/gnat.dg/array4.adb 3d29182d58b83e2662df3d9534b80184 gcc/testsuite/gnat.dg/array5.adb a9a0725729c4b56fd51ac830fd3cdc3a gcc/testsuite/gnat.dg/array6.adb *************** fa4c27f02bb3b9657f76e2ed18da2f02 gcc/te *** 55397,55405 **** --- 55753,55768 ---- ecc4c6c9f42f03d3d6a69b2ab6a2f13c gcc/testsuite/gnat.dg/opt69.adb a441d166cc0d4b34342468308b350060 gcc/testsuite/gnat.dg/opt7.adb 8ea613067c21d3bbf860fb8bb4013c79 gcc/testsuite/gnat.dg/opt7.ads + d16b401f2569252322b029a9d9d46660 gcc/testsuite/gnat.dg/opt73.adb 7b50ee2703cb5b6f1cc1351cf5ac13ca gcc/testsuite/gnat.dg/opt74.adb 28261fe08e53f03084939ac1513087d2 gcc/testsuite/gnat.dg/opt74_pkg.adb 806487ea35207410d066e54a00127ca2 gcc/testsuite/gnat.dg/opt74_pkg.ads + 4d5f2af64d07513479ba9eff37085e56 gcc/testsuite/gnat.dg/opt75.adb + 171652ff2445bf77470aad3b1813c128 gcc/testsuite/gnat.dg/opt75_pkg.adb + 9e51efca60984c35df4c64350a47bff5 gcc/testsuite/gnat.dg/opt75_pkg.ads + 90baaf4f1b57f6747f43b4610fe3607e gcc/testsuite/gnat.dg/opt76.adb + 28f8a31ef39e342b6fe77d5ca75e672a gcc/testsuite/gnat.dg/opt79.adb + fe74354507a5e664cd6533def9371a61 gcc/testsuite/gnat.dg/opt79.ads 81951fc84d3d36131be8aca4f80c113b gcc/testsuite/gnat.dg/opt7_pkg.ads 9df643a09a85f1f88656c303fed9ef56 gcc/testsuite/gnat.dg/opt8.adb 328d673eb1b44dc8fd4fcd430ebc2ddf gcc/testsuite/gnat.dg/opt8.ads *************** d6a9ca756a1aa49d715b8cddbb455bc9 gcc/te *** 57372,57378 **** 3b3f36e96e89e5aaa2ffc3b3e75eea8a gcc/testsuite/lib/scantree.exp b1df537fb91fd69120df252f52b27873 gcc/testsuite/lib/target-libpath.exp e079de022f07dc380fbd4e8490136cd1 gcc/testsuite/lib/target-supports-dg.exp ! f408569441cc19674385448bcc094cba gcc/testsuite/lib/target-supports.exp d064f4e641d32cc8ccbe1f2853cc502c gcc/testsuite/lib/target-utils.exp b96a73aab1d3f546b8911126a60bec69 gcc/testsuite/lib/timeout-dg.exp 31892baa0052b423e00975b658dcfd9f gcc/testsuite/lib/timeout.exp --- 57735,57741 ---- 3b3f36e96e89e5aaa2ffc3b3e75eea8a gcc/testsuite/lib/scantree.exp b1df537fb91fd69120df252f52b27873 gcc/testsuite/lib/target-libpath.exp e079de022f07dc380fbd4e8490136cd1 gcc/testsuite/lib/target-supports-dg.exp ! 2735278af161ea6022b65a9333f6c884 gcc/testsuite/lib/target-supports.exp d064f4e641d32cc8ccbe1f2853cc502c gcc/testsuite/lib/target-utils.exp b96a73aab1d3f546b8911126a60bec69 gcc/testsuite/lib/timeout-dg.exp 31892baa0052b423e00975b658dcfd9f gcc/testsuite/lib/timeout.exp *************** ac0b35dcfcf72480c040349b2b8a874b gcc/te *** 57435,57441 **** f6a135d669303e10360f4a9e17664aa7 gcc/testsuite/obj-c++.dg/cxx-class-1.mm 7a5a474af4c3ae26683ee29295314d7b 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 --- 57798,57804 ---- f6a135d669303e10360f4a9e17664aa7 gcc/testsuite/obj-c++.dg/cxx-class-1.mm 7a5a474af4c3ae26683ee29295314d7b gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm 2dd2f7dd6f655732fc606d8c85af825b gcc/testsuite/obj-c++.dg/cxx-ivars-2.mm ! 4e97c54d7299a5d421e1a64c670f075c 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 *************** b93884370065d3c94f7fc005e43f7756 gcc/te *** 57492,57498 **** 000a9198807c2e4ce1ba284e1a6e79ed gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm a19c2dad4a197a57d5e1bd9cd0135705 gcc/testsuite/obj-c++.dg/invalid-method-2.mm 310ccda91f187af52d2e650cf1e5222f gcc/testsuite/obj-c++.dg/invalid-type-1.mm ! f8e8a6e463c96943e1055a954a109c82 gcc/testsuite/obj-c++.dg/isa-field-1.mm de4ec57b2d55fc5567fd5f9b20445ea0 gcc/testsuite/obj-c++.dg/ivar-invalid-type-1.mm e9e1c689bbfe17a7c0ca833caf159485 gcc/testsuite/obj-c++.dg/ivar-list-semi.mm 866b783936346966eabc68e8d5f4e78f gcc/testsuite/obj-c++.dg/ivar-problem-1.mm --- 57855,57861 ---- 000a9198807c2e4ce1ba284e1a6e79ed gcc/testsuite/obj-c++.dg/gnu-runtime-3.mm a19c2dad4a197a57d5e1bd9cd0135705 gcc/testsuite/obj-c++.dg/invalid-method-2.mm 310ccda91f187af52d2e650cf1e5222f gcc/testsuite/obj-c++.dg/invalid-type-1.mm ! 9aa795d86a9b5053208440819dc1082c gcc/testsuite/obj-c++.dg/isa-field-1.mm de4ec57b2d55fc5567fd5f9b20445ea0 gcc/testsuite/obj-c++.dg/ivar-invalid-type-1.mm e9e1c689bbfe17a7c0ca833caf159485 gcc/testsuite/obj-c++.dg/ivar-list-semi.mm 866b783936346966eabc68e8d5f4e78f gcc/testsuite/obj-c++.dg/ivar-problem-1.mm *************** b6a4bff612a08ec461838ac1b3bd23f1 gcc/te *** 57542,57548 **** ae0cb1e1f2ed9485ab1abd0d8669c498 gcc/testsuite/obj-c++.dg/naming-3.mm dcb5ecceff49837d638a19ab2eabd0ad gcc/testsuite/obj-c++.dg/naming-4.mm bb8ccf448c201adbf05356ac551899fb gcc/testsuite/obj-c++.dg/no-extra-load.mm ! e415aeb15f15e2eedb7356be8f6a959e gcc/testsuite/obj-c++.dg/objc-gc-3.mm bd3b42583db47ebcc7fac037f85f00ed gcc/testsuite/obj-c++.dg/overload-1.mm 1cfb07f2eb35f604a99dcbe63a567416 gcc/testsuite/obj-c++.dg/plugin/diagnostic-test-expressions-1.mm 3745702e02a6aac99619afba6111b2d7 gcc/testsuite/obj-c++.dg/plugin/plugin.exp --- 57905,57911 ---- ae0cb1e1f2ed9485ab1abd0d8669c498 gcc/testsuite/obj-c++.dg/naming-3.mm dcb5ecceff49837d638a19ab2eabd0ad gcc/testsuite/obj-c++.dg/naming-4.mm bb8ccf448c201adbf05356ac551899fb gcc/testsuite/obj-c++.dg/no-extra-load.mm ! 89a8d8bbc4cfd9231f6b6ff845399672 gcc/testsuite/obj-c++.dg/objc-gc-3.mm bd3b42583db47ebcc7fac037f85f00ed gcc/testsuite/obj-c++.dg/overload-1.mm 1cfb07f2eb35f604a99dcbe63a567416 gcc/testsuite/obj-c++.dg/plugin/diagnostic-test-expressions-1.mm 3745702e02a6aac99619afba6111b2d7 gcc/testsuite/obj-c++.dg/plugin/plugin.exp *************** e9acacfeddf9f5b3fcc7bd49ae2063e8 gcc/te *** 57649,57655 **** 1dc4342beadfe6f7bc0c6e08dd15ce24 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 --- 58012,58018 ---- 1dc4342beadfe6f7bc0c6e08dd15ce24 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 ! eae4cc9bd17a2b79453bdeeec666557b 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 *************** c195a9190c5975a66c572dbe3742474d gcc/te *** 57658,57664 **** 5e94c540e8c80f67f410219fbbb8290c gcc/testsuite/obj-c++.dg/protocol-optional-1.mm 92402d5d0ed140a870d7d3438040c1fa gcc/testsuite/obj-c++.dg/protocol-qualifier-1.mm 3acfbf9e5283f39582515ae6ee0f8bcc gcc/testsuite/obj-c++.dg/protocol-qualifier-2.mm ! b9c660822a38aa2cdfe0b52e7d3afeca gcc/testsuite/obj-c++.dg/qual-types-1.mm 1a1c40979049410f20a8586a0ba7d7bd gcc/testsuite/obj-c++.dg/selector-1.mm 9279cef4a3631f9e5ab0c052ea83de89 gcc/testsuite/obj-c++.dg/selector-2.mm daf831313c6bd7f1fd5054f723b79a65 gcc/testsuite/obj-c++.dg/selector-3.mm --- 58021,58027 ---- 5e94c540e8c80f67f410219fbbb8290c gcc/testsuite/obj-c++.dg/protocol-optional-1.mm 92402d5d0ed140a870d7d3438040c1fa gcc/testsuite/obj-c++.dg/protocol-qualifier-1.mm 3acfbf9e5283f39582515ae6ee0f8bcc gcc/testsuite/obj-c++.dg/protocol-qualifier-2.mm ! 6e84ef17eb796596422af8c47eab548d gcc/testsuite/obj-c++.dg/qual-types-1.mm 1a1c40979049410f20a8586a0ba7d7bd gcc/testsuite/obj-c++.dg/selector-1.mm 9279cef4a3631f9e5ab0c052ea83de89 gcc/testsuite/obj-c++.dg/selector-2.mm daf831313c6bd7f1fd5054f723b79a65 gcc/testsuite/obj-c++.dg/selector-3.mm *************** c7256230d1e3f8e9c93d3614935b69bc gcc/te *** 57668,57692 **** 9359d93417f401fddd8bdbb1bd3bae20 gcc/testsuite/obj-c++.dg/selector-warn-1.mm d2caa0c9e2ed2954ba9e33d87f726293 gcc/testsuite/obj-c++.dg/set-not-used-1.mm f0ce3863165308c6c7b05b1e48b6231d gcc/testsuite/obj-c++.dg/standard-headers.mm ! 4c5901302ebb869ad2843e5bd9b59f85 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 4a89061dc402adc311f94d3659a6eaa2 gcc/testsuite/obj-c++.dg/strings/strings-1.mm acda44b06216ac119f6bf3a2e4b8cb98 gcc/testsuite/obj-c++.dg/strings/strings-2.mm 94fde91caef514d313cb940969a79838 gcc/testsuite/obj-c++.dg/strings/strings.exp ! 581ec601f0a03f162804a727e94271f1 gcc/testsuite/obj-c++.dg/stubify-1.mm ! 7158cf8b003c2491d8aaa20750064528 gcc/testsuite/obj-c++.dg/stubify-2.mm ce13a192bc01f6b2a54070a80cd8622d gcc/testsuite/obj-c++.dg/super-class-1.mm 348dead166b98af1745eea549652a4e0 gcc/testsuite/obj-c++.dg/super-class-2.mm 5f7cf7eb1290cd0ac7cc810aca461fcb gcc/testsuite/obj-c++.dg/super-dealloc-1.mm 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 --- 58031,58055 ---- 9359d93417f401fddd8bdbb1bd3bae20 gcc/testsuite/obj-c++.dg/selector-warn-1.mm d2caa0c9e2ed2954ba9e33d87f726293 gcc/testsuite/obj-c++.dg/set-not-used-1.mm f0ce3863165308c6c7b05b1e48b6231d gcc/testsuite/obj-c++.dg/standard-headers.mm ! 7e38b7f41e74e8e27b3445e6b2742b38 gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm ! 0c2da165989aa0dcb159a4c853f22f0c gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm 21b76d31bad8ab2bce32ce3f5fceff78 gcc/testsuite/obj-c++.dg/strings/const-str-1.mm ! 9219f4c10d317f25c9ea0169dd8103d3 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 4a89061dc402adc311f94d3659a6eaa2 gcc/testsuite/obj-c++.dg/strings/strings-1.mm acda44b06216ac119f6bf3a2e4b8cb98 gcc/testsuite/obj-c++.dg/strings/strings-2.mm 94fde91caef514d313cb940969a79838 gcc/testsuite/obj-c++.dg/strings/strings.exp ! 77426326d413411fe15686e04c58b88c gcc/testsuite/obj-c++.dg/stubify-1.mm ! d9ea7be373ad2e19f1f7e7abad8598f0 gcc/testsuite/obj-c++.dg/stubify-2.mm ce13a192bc01f6b2a54070a80cd8622d gcc/testsuite/obj-c++.dg/super-class-1.mm 348dead166b98af1745eea549652a4e0 gcc/testsuite/obj-c++.dg/super-class-2.mm 5f7cf7eb1290cd0ac7cc810aca461fcb gcc/testsuite/obj-c++.dg/super-dealloc-1.mm 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 ! 4f9421ade77fc4ad7e98a4ea67a185cb 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 *** 57718,57733 **** 7212556766805451a098e554a8ab648e gcc/testsuite/obj-c++.dg/tls/trivial.m 1131c9137e46b5311c2d803288f2e4d0 gcc/testsuite/obj-c++.dg/too-many-args.mm f597ed597da282f891b8ffceb585991a gcc/testsuite/obj-c++.dg/torture/dg-torture.exp ! 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 2216d810b119e15f12b654334284f817 gcc/testsuite/obj-c++.dg/torture/strings/strings.exp 6f6356dbcb53d22602416e8919a2b428 gcc/testsuite/obj-c++.dg/torture/tls/diag-1.mm --- 58081,58096 ---- 7212556766805451a098e554a8ab648e gcc/testsuite/obj-c++.dg/tls/trivial.m 1131c9137e46b5311c2d803288f2e4d0 gcc/testsuite/obj-c++.dg/too-many-args.mm f597ed597da282f891b8ffceb585991a gcc/testsuite/obj-c++.dg/torture/dg-torture.exp ! 18512c71e6c59489aec1ea811d7b29ca 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 ! 541efcfce4c4c1d5e4fd413e651be954 gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm ! 6bbd83dc19102b02dff97c3c7b8e0b1f 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 ! a826eb6d88698556688b1008a86574a6 gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm 38bba22e495d1876db60c1ae29146fbe gcc/testsuite/obj-c++.dg/torture/strings/string1.mm 2216d810b119e15f12b654334284f817 gcc/testsuite/obj-c++.dg/torture/strings/strings.exp 6f6356dbcb53d22602416e8919a2b428 gcc/testsuite/obj-c++.dg/torture/tls/diag-1.mm *************** f1f7032c657f1d2102a3760375786139 gcc/te *** 57737,57743 **** 15c44338c7d7fb6b44ce86f191a67e0b gcc/testsuite/obj-c++.dg/torture/tls/tls.exp 7212556766805451a098e554a8ab648e gcc/testsuite/obj-c++.dg/torture/tls/trivial.mm 94ba53b983b1168f471db7bb452a1c0f gcc/testsuite/obj-c++.dg/torture/trivial.mm ! 0ee0a10f43d74ab7a6dd476560668484 gcc/testsuite/obj-c++.dg/try-catch-1.mm 49889360a17310a94a0d85c87ca03271 gcc/testsuite/obj-c++.dg/try-catch-10.mm 65b30ce3fa7e707247f859f7235dcc28 gcc/testsuite/obj-c++.dg/try-catch-11.mm 0547cf34f9cf4f3a578623b4ceb22a99 gcc/testsuite/obj-c++.dg/try-catch-12.mm --- 58100,58106 ---- 15c44338c7d7fb6b44ce86f191a67e0b gcc/testsuite/obj-c++.dg/torture/tls/tls.exp 7212556766805451a098e554a8ab648e gcc/testsuite/obj-c++.dg/torture/tls/trivial.mm 94ba53b983b1168f471db7bb452a1c0f gcc/testsuite/obj-c++.dg/torture/trivial.mm ! d12d35759dcf7e68cf1f2f74be5f250e gcc/testsuite/obj-c++.dg/try-catch-1.mm 49889360a17310a94a0d85c87ca03271 gcc/testsuite/obj-c++.dg/try-catch-10.mm 65b30ce3fa7e707247f859f7235dcc28 gcc/testsuite/obj-c++.dg/try-catch-11.mm 0547cf34f9cf4f3a578623b4ceb22a99 gcc/testsuite/obj-c++.dg/try-catch-12.mm *************** a594dfeb4c4795ca2b4b60c69a953dbb gcc/te *** 57747,57753 **** 749123fd933ccbf7d2de0ef981fa5ab2 gcc/testsuite/obj-c++.dg/try-catch-16.mm 58a893072e046f31600a1fb4411b6288 gcc/testsuite/obj-c++.dg/try-catch-17.mm 59ff3d087e1f9cb2e8a2e8509e556580 gcc/testsuite/obj-c++.dg/try-catch-2.mm ! 43b5b40eade6043d78005dfce2cdc085 gcc/testsuite/obj-c++.dg/try-catch-3.mm ab26c644da07ff6820be7567e0d98660 gcc/testsuite/obj-c++.dg/try-catch-4.mm f80dc47b629cb94d0cd311a6a7f315f1 gcc/testsuite/obj-c++.dg/try-catch-5.mm f4f1fe6c960ffa81d0cccc1460f1b58a gcc/testsuite/obj-c++.dg/try-catch-6.mm --- 58110,58116 ---- 749123fd933ccbf7d2de0ef981fa5ab2 gcc/testsuite/obj-c++.dg/try-catch-16.mm 58a893072e046f31600a1fb4411b6288 gcc/testsuite/obj-c++.dg/try-catch-17.mm 59ff3d087e1f9cb2e8a2e8509e556580 gcc/testsuite/obj-c++.dg/try-catch-2.mm ! eef49412ec0a3bd9b5061e48b0699ddc gcc/testsuite/obj-c++.dg/try-catch-3.mm ab26c644da07ff6820be7567e0d98660 gcc/testsuite/obj-c++.dg/try-catch-4.mm f80dc47b629cb94d0cd311a6a7f315f1 gcc/testsuite/obj-c++.dg/try-catch-5.mm f4f1fe6c960ffa81d0cccc1460f1b58a gcc/testsuite/obj-c++.dg/try-catch-6.mm *************** cbd8c5394b3188c8a0b698fffb29e761 gcc/te *** 57759,57764 **** --- 58122,58162 ---- 5748db698f0b8ee6bafe285e6df3dc32 gcc/testsuite/obj-c++.dg/warn5.mm 677e021d0f4c6a2c24627bc9093ea7d6 gcc/testsuite/obj-c++.dg/warn6.mm cf1e5660ee1cd060f1bf1da012306d6b gcc/testsuite/obj-c++.dg/warn7.mm + acc13fee5a886f5ea6ca2841da59effe gcc/testsuite/objc-obj-c++-shared/CF-CFString.h + 11d92670c2906d6a6ff898a559b8b9fc gcc/testsuite/objc-obj-c++-shared/F-NSArray.h + d7fcf22c3ed31b17539b9acb07183a26 gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h + 8f45c73e7c5775b1214ade32c069ffb4 gcc/testsuite/objc-obj-c++-shared/F-NSObject.h + 6fe1b4da0d636ea9e7ff339f5d788f5c gcc/testsuite/objc-obj-c++-shared/F-NSString.h + 81d7286975fc4f7945939a6f5f27727f gcc/testsuite/objc-obj-c++-shared/F-NSValue.h + f5cd47052262fe168dc6074f5baa871d gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h + df22b832fd1cc14252d6af54be4e2abb gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h + f6312f509cfa047b5f10bffa0664b5f8 gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h + ff366f1b6f27a24776e1b04ef8575c79 gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h + b93796d43374fb75c98817ab2d070c2a gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h + bb366f8c5324fa271b2faf2780fc3d89 gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h + d99c4c5f8d9ddf7f2c9f6ab6e25a2a9b gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h + 1edd852f3dddf0434acf9cba8ded4136 gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h + 6f8cd6c02cece30d49c0e12ff9cfa0a9 gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h + e16387e01018d3d54a2f32822682dac1 gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h + 4f3dd54a0c640d2b15ee1f79a8f18369 gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h + 54ffd1bfa79cf5dc99b3df101a7cd2e6 gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h + 68c1d47ef6919edabb48b6f50f1a237d gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h + dc1b5416df768725686ab6df95dc7a40 gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h + 5696d61d4f4781658d55b84d5095e034 gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h + 6b38d99bc66484db832fe9f58f7b8c5b gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h + b029cb9e81a51e8cdb7b9fbfdd1644a8 gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h + 2ced4f29467fa9b3b9c6fbcd7bba5d7d gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h + d8cf0532b45f771bf4dad006de162370 gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h + fc876a83da2209b2d6ac280c346f3b68 gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h + 441214db918256e063a2835c335a0c7d gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h + e27796bdadfcc590ea14bdfd2593ce1b gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h + 705b21cf4d531ccad6b716a5c3de0c38 gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h + dc8c5ec7b9abe64c54eabc2d60a81066 gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h + 3dbb9411c2d6b397d1b9f1da3c06eb09 gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h + 5932e7455edfc6960112ad2ac6d02b71 gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h + 4ab4e247b27f5d3d833cd13973c34222 gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h + a08e081524ab6799e394768da76968d3 gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h + ce8c053d2554352e55b35ae330cd5126 gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h 1aca10b408347876905ccdeb2ec47665 gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.h 76c24a679d6d0f7e05fe9008a647d03c gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m ac76ddcf9ed6ab3c92c31559244da096 gcc/testsuite/objc-obj-c++-shared/next-abi.h *************** d41bdbf8fd720cd2fb1c999d1e580ba5 gcc/te *** 57847,57853 **** 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 --- 58245,58251 ---- 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 ! ef255acbd6a15fb634d112de0566ec86 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 *************** fa1ab496151791f4ef05043e7c0b673c gcc/te *** 57906,57919 **** 75cc55de841b4de6d06a46e13f5f7bfe gcc/testsuite/objc.dg/gnu-runtime-1.m a10c57561f5023d1bc5813fb62b15e8f gcc/testsuite/objc.dg/gnu-runtime-2.m 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 cfd869df9840f625e801db2e67f1e182 gcc/testsuite/objc.dg/invalid-type-1.m ! f8e8a6e463c96943e1055a954a109c82 gcc/testsuite/objc.dg/isa-field-1.m 55075563ae55f61bfee5e587702549a9 gcc/testsuite/objc.dg/ivar-extra-semicolon.m 27b57b11e7787adb45c687e6d7a063bc gcc/testsuite/objc.dg/ivar-invalid-type-1.m 642cb67d94deb494988c902d20ef41d6 gcc/testsuite/objc.dg/ivar-problem-1.m --- 58304,58318 ---- 75cc55de841b4de6d06a46e13f5f7bfe gcc/testsuite/objc.dg/gnu-runtime-1.m a10c57561f5023d1bc5813fb62b15e8f gcc/testsuite/objc.dg/gnu-runtime-2.m cf495a272fe911f953544354d7af49e2 gcc/testsuite/objc.dg/gnu-runtime-3.m ! 6610c198e68db214bca9de5a0f6cfdec gcc/testsuite/objc.dg/headers.m f1920dcb3d447ac1425163a2d1e6c0d2 gcc/testsuite/objc.dg/id-1.m ! 697c9889104dbd42200e3eaeb739692d gcc/testsuite/objc.dg/image-info.m f642d96cba4255caca5622eae71014c4 gcc/testsuite/objc.dg/incomplete-type-1.m + aa8ef11d7fa1e8fe899b665ebe7a4f23 gcc/testsuite/objc.dg/instancetype-0.m 7965f2dab76d401f8398a30bcae85653 gcc/testsuite/objc.dg/invalid-method-1.m 172bebf6092a27228381556a110f96cb gcc/testsuite/objc.dg/invalid-method-2.m cfd869df9840f625e801db2e67f1e182 gcc/testsuite/objc.dg/invalid-type-1.m ! 9ad91bf3e53fa36e2556a5ddd4eb378e gcc/testsuite/objc.dg/isa-field-1.m 55075563ae55f61bfee5e587702549a9 gcc/testsuite/objc.dg/ivar-extra-semicolon.m 27b57b11e7787adb45c687e6d7a063bc gcc/testsuite/objc.dg/ivar-invalid-type-1.m 642cb67d94deb494988c902d20ef41d6 gcc/testsuite/objc.dg/ivar-problem-1.m *************** a0a34ff20eea5cde5cc34cb5d51d4e4f gcc/te *** 57954,57960 **** 9153d82237cc99af905bfcb58426980b gcc/testsuite/objc.dg/method-3.m 1857e378233cbdb0ef09315d0ee04fc9 gcc/testsuite/objc.dg/method-4.m 8f76938d87b469c207104bcf02c7f39b gcc/testsuite/objc.dg/method-5.m ! 67e16adf190ff1faf7208cf4868c0501 gcc/testsuite/objc.dg/method-6.m 18a0c6f46fc24f7061fe0cf1144950f3 gcc/testsuite/objc.dg/method-7.m 172164daa5b2292983d23e0e5d5a94eb gcc/testsuite/objc.dg/method-8.m a0e99708ed21408889158b47d71b2a1c gcc/testsuite/objc.dg/method-9.m --- 58353,58359 ---- 9153d82237cc99af905bfcb58426980b gcc/testsuite/objc.dg/method-3.m 1857e378233cbdb0ef09315d0ee04fc9 gcc/testsuite/objc.dg/method-4.m 8f76938d87b469c207104bcf02c7f39b gcc/testsuite/objc.dg/method-5.m ! ee426a4031bb00b898368cc9770d7dcf gcc/testsuite/objc.dg/method-6.m 18a0c6f46fc24f7061fe0cf1144950f3 gcc/testsuite/objc.dg/method-7.m 172164daa5b2292983d23e0e5d5a94eb gcc/testsuite/objc.dg/method-8.m a0e99708ed21408889158b47d71b2a1c gcc/testsuite/objc.dg/method-9.m *************** ba9c85f123a269332f97289544f0c272 gcc/te *** 57975,57988 **** 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 8c15bc469e56fdb17a7b24540bf21491 gcc/testsuite/objc.dg/pch/interface-1.hs --- 58374,58387 ---- 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 ! 46857bb9920377daaab90747aabd7ff3 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 ! d6bb76e151385d5dcc0bccac5e79fa6e gcc/testsuite/objc.dg/objc-foreach-4.m ! 7aa5deeefbee0740247f45a83aea37f4 gcc/testsuite/objc.dg/objc-foreach-5.m ! b4dd9e0cb9ae65f4f31c256f03bc08df 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 8c15bc469e56fdb17a7b24540bf21491 gcc/testsuite/objc.dg/pch/interface-1.hs *************** d165610dbbfad82f6af91eab9b66d300 gcc/te *** 58098,58104 **** 613e0d9387f50f78866c315391b5550b 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 --- 58497,58503 ---- 613e0d9387f50f78866c315391b5550b 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 ! 43743498fb7683ea796ffd482ace42c9 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 *************** e435b5f971ceb7adfd4ad4a826e98257 gcc/te *** 58133,58158 **** 44c850eb724ab694c1eea579910821bd gcc/testsuite/objc.dg/static-1.m 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 4a89061dc402adc311f94d3659a6eaa2 gcc/testsuite/objc.dg/strings/strings-1.m 5406714e0710bd54d86b2186d1cb98fa gcc/testsuite/objc.dg/strings/strings-2.m 026e018ea0fbcf9b695d9c38992b48a4 gcc/testsuite/objc.dg/strings/strings.exp ! e725bc4ca7d60a0fa96e088c77b44ba3 gcc/testsuite/objc.dg/stubify-1.m ! b9a053b6534bf53cd94aa5a5ae0b528c gcc/testsuite/objc.dg/stubify-2.m 7e68d7fe39ddc6065769f26089764fd6 gcc/testsuite/objc.dg/super-class-1.m ba3105737585d465268d9bf41481fa06 gcc/testsuite/objc.dg/super-class-2.m a1b0dd9c9fb200a066255256ef572225 gcc/testsuite/objc.dg/super-class-3.m 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 --- 58532,58557 ---- 44c850eb724ab694c1eea579910821bd gcc/testsuite/objc.dg/static-1.m 911d824641cc5460f0bb8428edcd155b gcc/testsuite/objc.dg/stret-1.m 581f8e860f7f1e705a6b0235823fa173 gcc/testsuite/objc.dg/stret-2.m ! d14e2bc0e149efd8ad9b13c9f1e48081 gcc/testsuite/objc.dg/strings/const-cfstring-2.m ! 0c2da165989aa0dcb159a4c853f22f0c 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 ! 3cb4e420b65ce84056d2b8bd0ebe50d5 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 4a89061dc402adc311f94d3659a6eaa2 gcc/testsuite/objc.dg/strings/strings-1.m 5406714e0710bd54d86b2186d1cb98fa gcc/testsuite/objc.dg/strings/strings-2.m 026e018ea0fbcf9b695d9c38992b48a4 gcc/testsuite/objc.dg/strings/strings.exp ! 9a0e770521f8272a8a946079a7e291bf gcc/testsuite/objc.dg/stubify-1.m ! ab5fcd53b75a1af232218857721ebdf1 gcc/testsuite/objc.dg/stubify-2.m 7e68d7fe39ddc6065769f26089764fd6 gcc/testsuite/objc.dg/super-class-1.m ba3105737585d465268d9bf41481fa06 gcc/testsuite/objc.dg/super-class-2.m a1b0dd9c9fb200a066255256ef572225 gcc/testsuite/objc.dg/super-class-3.m 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 ! 0005d93b4fc8f12225545818fc4dfcec 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 *************** d91e4283788de5085566af47d25f5008 gcc/te *** 58167,58182 **** 1131c9137e46b5311c2d803288f2e4d0 gcc/testsuite/objc.dg/too-many-args.m 83b83c80f3982d5e93c47bed6dd2a88a gcc/testsuite/objc.dg/torture/dg-torture.exp be65f96db9eb7870d002772ea73b79da gcc/testsuite/objc.dg/torture/forward-1.m ! 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 --- 58566,58581 ---- 1131c9137e46b5311c2d803288f2e4d0 gcc/testsuite/objc.dg/too-many-args.m 83b83c80f3982d5e93c47bed6dd2a88a gcc/testsuite/objc.dg/torture/dg-torture.exp be65f96db9eb7870d002772ea73b79da gcc/testsuite/objc.dg/torture/forward-1.m ! 4f20d39a7f1dfacf39a8a1b732ad2c1c 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 ! c59ca8cb9643a4bd47ad25eacc428bee gcc/testsuite/objc.dg/torture/strings/const-str-10.m ! 3931c6df3b0f09e852f74dc856992284 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 ! d1d93c13e62106809a456f06ea348f2d 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 *** 58210,58218 **** 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 f9121cfae0f96307949de6b1503ddeac gcc/testsuite/objc/compile/compile.exp --- 58609,58617 ---- 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 ! f0a85fb06bc40a59b3b67e37b68bf8a9 gcc/testsuite/objc.dg/zero-link-1.m ! 19e680c142e29f8a7a584e91ac7b7056 gcc/testsuite/objc.dg/zero-link-2.m ! af0fd8f33da4a0b997aa6096000deff3 gcc/testsuite/objc.dg/zero-link-3.m 0d71c48c831bf5882b80c4cd6ca9d9d8 gcc/testsuite/objc/compile/20011211-1.m 9b70591be7f91f15d0a53c89bdc94bf4 gcc/testsuite/objc/compile/20060406-1.m f9121cfae0f96307949de6b1503ddeac gcc/testsuite/objc/compile/compile.exp *************** e42076aeff1c5ac155a88db5b1993d38 gcc/te *** 58348,58354 **** a6e36faf2adc39e4bd4947d8fb693069 gcc/timevar.def 5cf8f98404e08ab29130ca1a202ef8e8 gcc/timevar.h f6b27d32bbcd5170a02e9787e6f5484e gcc/tlink.c ! 3044cf6e2d7286f0f1bb0676ef1675c3 gcc/toplev.c 60ecb3eee8840237e7cbeee4f717acee gcc/toplev.h 3ed6e4b64889eeac8078f80defb280e4 gcc/tracer.c 536d5f5c3a36295b251cd838717dd68f gcc/tracer.h --- 58747,58753 ---- a6e36faf2adc39e4bd4947d8fb693069 gcc/timevar.def 5cf8f98404e08ab29130ca1a202ef8e8 gcc/timevar.h f6b27d32bbcd5170a02e9787e6f5484e gcc/tlink.c ! a6da97f9d61e069b685875daa7a9ab56 gcc/toplev.c 60ecb3eee8840237e7cbeee4f717acee gcc/toplev.h 3ed6e4b64889eeac8078f80defb280e4 gcc/tracer.c 536d5f5c3a36295b251cd838717dd68f gcc/tracer.h *************** f6b27d32bbcd5170a02e9787e6f5484e gcc/tl *** 58357,58363 **** bf1ca0c8d6f7aa3ec077ca07f81fb48d gcc/tree-affine.c 284126de2a59b6236d8ac9c724fb0fc1 gcc/tree-affine.h 3603e3d075155f4470364e64801460b9 gcc/tree-call-cdce.c ! 7acc81add1062e825901c4e7a66c51bd gcc/tree-cfg.c 44a714fe5a2bb4ca8dd0f32aa310c7f7 gcc/tree-cfg.h 907aeb3baac97f2aff5fcaf76bccac85 gcc/tree-cfgcleanup.c 8158974f8a5252ada87cd6fa950cb1bf gcc/tree-cfgcleanup.h --- 58756,58762 ---- bf1ca0c8d6f7aa3ec077ca07f81fb48d gcc/tree-affine.c 284126de2a59b6236d8ac9c724fb0fc1 gcc/tree-affine.h 3603e3d075155f4470364e64801460b9 gcc/tree-call-cdce.c ! 1943295fcde62d498fe148aace425ea2 gcc/tree-cfg.c 44a714fe5a2bb4ca8dd0f32aa310c7f7 gcc/tree-cfg.h 907aeb3baac97f2aff5fcaf76bccac85 gcc/tree-cfgcleanup.c 8158974f8a5252ada87cd6fa950cb1bf gcc/tree-cfgcleanup.h *************** bf1ca0c8d6f7aa3ec077ca07f81fb48d gcc/tr *** 58366,58375 **** e30b9695c5cc0f195e5fc0ae04029306 gcc/tree-chkp.h d3b531c744233e39c8d1680d100db262 gcc/tree-chrec.c 561ccb6dc10b34beacb8dbc925d6c08e gcc/tree-chrec.h ! 58c34bac40cd180f4f67c63c55f83339 gcc/tree-complex.c ! 8474bb7c121b2597050f38a2eb42c634 gcc/tree-core.h ! 7d78717aa6a0f789a43aa1ba33be3da9 gcc/tree-data-ref.c ! 0e39400878554545caaf195808c5126a gcc/tree-data-ref.h 9f44b98bc5691e316c5d5455663bdf99 gcc/tree-dfa.c 67a9e2efaa9690ae165df4c23ebef3fa gcc/tree-dfa.h 051fa8613d33abf3756316de9fa9f30f gcc/tree-diagnostic.c --- 58765,58774 ---- e30b9695c5cc0f195e5fc0ae04029306 gcc/tree-chkp.h d3b531c744233e39c8d1680d100db262 gcc/tree-chrec.c 561ccb6dc10b34beacb8dbc925d6c08e gcc/tree-chrec.h ! cf80e5e0cd61474451faa4bc32667cc6 gcc/tree-complex.c ! e4ca66616534a8d03c4cdc0906d34437 gcc/tree-core.h ! daab1158a6443e2f7e233ce45e513c24 gcc/tree-data-ref.c ! 9655373cce32a7987b22e40a74991f8d gcc/tree-data-ref.h 9f44b98bc5691e316c5d5455663bdf99 gcc/tree-dfa.c 67a9e2efaa9690ae165df4c23ebef3fa gcc/tree-dfa.h 051fa8613d33abf3756316de9fa9f30f gcc/tree-diagnostic.c *************** c6c6e56ccc550a7826b1cdb5ca62f4e8 gcc/tr *** 58383,58401 **** fbd4781af8861fb55dcdcdd79809a1ed gcc/tree-hasher.h 000bfe93e33763e5b1b3ba7b5c079abb gcc/tree-if-conv.c 26f079f6fb72717b74fd761099b24329 gcc/tree-if-conv.h ! 945f23f96b4aa570c2fee6b960ac210a gcc/tree-inline.c ! 5b5c7e160316ca96ead85364ab90c2fc gcc/tree-inline.h bc9d14687fd8689e05b55f0db6b61b64 gcc/tree-into-ssa.c 514b25ed7303f88e6212e1467ef200c7 gcc/tree-into-ssa.h 5db9595a7abc4022f5d19147cd5062f4 gcc/tree-iterator.c ab133fc7fbc83e7d29268492f52749b6 gcc/tree-iterator.h ! 0756bf9990a411f1afa9f11ff88ece95 gcc/tree-loop-distribution.c a5e0b9750390cf52a6a7ecbb3471065e gcc/tree-nested.c 72ca8dc800ffbbff1e54e359ddfe785e gcc/tree-nested.h cab3ca8e14ee509fb6e8147d9944cd6e gcc/tree-nrv.c 2d79e7d9f9e55daf22483cb05e161335 gcc/tree-object-size.c 679a50dd021eb9ba20205cb9c70b9af5 gcc/tree-object-size.h ! d24150d4f8760056afd561808434af7c gcc/tree-outof-ssa.c d146d6b43c7f778dbf6a630a055a1e43 gcc/tree-outof-ssa.h a73b531cee0ddd9dd1f93d8dbe97139b gcc/tree-parloops.c de93f2c155c4a1e3b4e95604993815fb gcc/tree-parloops.h --- 58782,58800 ---- fbd4781af8861fb55dcdcdd79809a1ed gcc/tree-hasher.h 000bfe93e33763e5b1b3ba7b5c079abb gcc/tree-if-conv.c 26f079f6fb72717b74fd761099b24329 gcc/tree-if-conv.h ! 4500887cab3b34f914c0c92b04f6aae9 gcc/tree-inline.c ! e3bee68d143f7764f8293c30befe571d gcc/tree-inline.h bc9d14687fd8689e05b55f0db6b61b64 gcc/tree-into-ssa.c 514b25ed7303f88e6212e1467ef200c7 gcc/tree-into-ssa.h 5db9595a7abc4022f5d19147cd5062f4 gcc/tree-iterator.c ab133fc7fbc83e7d29268492f52749b6 gcc/tree-iterator.h ! e34d3165c385b96c69bd8dc712476f51 gcc/tree-loop-distribution.c a5e0b9750390cf52a6a7ecbb3471065e gcc/tree-nested.c 72ca8dc800ffbbff1e54e359ddfe785e gcc/tree-nested.h cab3ca8e14ee509fb6e8147d9944cd6e gcc/tree-nrv.c 2d79e7d9f9e55daf22483cb05e161335 gcc/tree-object-size.c 679a50dd021eb9ba20205cb9c70b9af5 gcc/tree-object-size.h ! 8777bbdd91ffae96da69edb5a6182ab7 gcc/tree-outof-ssa.c d146d6b43c7f778dbf6a630a055a1e43 gcc/tree-outof-ssa.h a73b531cee0ddd9dd1f93d8dbe97139b gcc/tree-parloops.c de93f2c155c4a1e3b4e95604993815fb gcc/tree-parloops.h *************** ec29076445192fd88ec553290cde1704 gcc/tr *** 58406,58414 **** 62586f938f5cd2aa42d284277760013f gcc/tree-pretty-print.c 8edf9c8f71a9679705eefd4273eb3c6e gcc/tree-pretty-print.h ad8ba88c167af34a585819fe74d00c8b gcc/tree-profile.c ! 473621df97cbf00e502a5e815d90636a gcc/tree-scalar-evolution.c 1b02e05670920c8792f7c76edbe076c4 gcc/tree-scalar-evolution.h ! 2b2454b4960b00caf6fcd817050f19f5 gcc/tree-sra.c 68e463ff24e74c8bb36fc91cf7ea35d1 gcc/tree-ssa-address.c 4f144c99892514a4414ffeb8afcf8113 gcc/tree-ssa-address.h 668322898a2a53ae391a2f4ea217a384 gcc/tree-ssa-alias.c --- 58805,58813 ---- 62586f938f5cd2aa42d284277760013f gcc/tree-pretty-print.c 8edf9c8f71a9679705eefd4273eb3c6e gcc/tree-pretty-print.h ad8ba88c167af34a585819fe74d00c8b gcc/tree-profile.c ! f30437da13778825e45f51bc90aa29ff gcc/tree-scalar-evolution.c 1b02e05670920c8792f7c76edbe076c4 gcc/tree-scalar-evolution.h ! 665eca90db9f3b72e96ed7da485e2021 gcc/tree-sra.c 68e463ff24e74c8bb36fc91cf7ea35d1 gcc/tree-ssa-address.c 4f144c99892514a4414ffeb8afcf8113 gcc/tree-ssa-address.h 668322898a2a53ae391a2f4ea217a384 gcc/tree-ssa-alias.c *************** e9658082cc9e989af0d0b066205bff03 gcc/tr *** 58417,58462 **** ca3aa63e717a70af149945d4ee9d8b7f gcc/tree-ssa-ccp.h faab3dc9502edbab7409dd8797fd94af gcc/tree-ssa-coalesce.c 317ddaf9aa0104dddd20233e702e01ab gcc/tree-ssa-coalesce.h ! 3252dc3a1fadf7ca3634cbe87932e24f gcc/tree-ssa-copy.c 582a150658a512e1f066b33ea03d6c91 gcc/tree-ssa-dce.c ! b7109254a84860974b0d55d580b68626 gcc/tree-ssa-dom.c 9c38d0bc9dbb2e6e2a080d94ffbb3730 gcc/tree-ssa-dom.h 55e322cd8dc0b29e6e44dd929e7ded51 gcc/tree-ssa-dse.c ! 29bf730fe691bd967a0837089bd59a07 gcc/tree-ssa-forwprop.c 389cb071722144f72ebf78289ec82965 gcc/tree-ssa-ifcombine.c 2747af87035e55b411af1a2dfd1982ed gcc/tree-ssa-live.c 27f182c46da4e0babeb83f0dc3a6fe44 gcc/tree-ssa-live.h ! 90b99cc4468369588273c4caa0978199 gcc/tree-ssa-loop-ch.c f56c3e2b82fb07bf466feff827a22669 gcc/tree-ssa-loop-im.c ! 40a1e1211106ff6d7c6147330a4f2277 gcc/tree-ssa-loop-ivcanon.c ! f198a805f2cdb8b1498286e1269fb2bf gcc/tree-ssa-loop-ivopts.c 8e29657be03c1b4a6b31bb0f3c04532d gcc/tree-ssa-loop-ivopts.h 9235efdadb6242e3ec1be0a1f77a8bd2 gcc/tree-ssa-loop-manip.c bd52a938042a3d9ee70f78865379c60c gcc/tree-ssa-loop-manip.h e4139d58162c526de253f2ea8977df22 gcc/tree-ssa-loop-niter.c a53387a05fd56f1c0a7b258041d09524 gcc/tree-ssa-loop-niter.h 4dbfc3b9f8f9c989a279e20ebed7411c gcc/tree-ssa-loop-prefetch.c ! 7bb19ef1c822c0df63d1d066943cf499 gcc/tree-ssa-loop-split.c 01b379e1106a6dfd62ccf26fa40e1207 gcc/tree-ssa-loop-unswitch.c 134e4686a91b6b14309cd423625de906 gcc/tree-ssa-loop.c 7c883977ae5ca8f99c7baef499ec819d gcc/tree-ssa-loop.h ! 4773e8d0e06dc739c64840ae3ff866d9 gcc/tree-ssa-math-opts.c f3a1ba8cdac9b155fe4b3d2bfd7c0e04 gcc/tree-ssa-operands.c faf546a32913cc858b6e35a17288bf4a gcc/tree-ssa-operands.h 8886d357d83d57390c1f023dfd8d3d04 gcc/tree-ssa-phionlycprop.c ! 3111ecbd2dc501cbece38863c5588190 gcc/tree-ssa-phiopt.c ! 9d7306e718598b3e9d0fae302523f99d gcc/tree-ssa-phiprop.c ! 2abc4316e81a84b7e2a8469af9882876 gcc/tree-ssa-pre.c 236253ad5db25fc718d0c974ebca50f6 gcc/tree-ssa-propagate.c 3e37daab7057d09f238f1b5a1107d339 gcc/tree-ssa-propagate.h ! 20a322b9080487295afc3c1629d1685a gcc/tree-ssa-reassoc.c ! ef3951621d58993778d3716e963946e2 gcc/tree-ssa-sccvn.c ! 855a6a94016da8307d4a7f81ac586a02 gcc/tree-ssa-sccvn.h 52aad650c67052f4d0fb05119b5b33d2 gcc/tree-ssa-scopedtables.c f7c97819a8d6cd14e1ba52ff42f9519b gcc/tree-ssa-scopedtables.h ! 26212a5bd2bf0ebc8b5eb1d44ffedfbd gcc/tree-ssa-sink.c ! e9fbcbbd081eef6ddecc218bb001fa4e gcc/tree-ssa-strlen.c ! f3c5e79d1904eecb1143e768ecca2cdf gcc/tree-ssa-structalias.c 22b107f85a2b67e04443d79b0000ff67 gcc/tree-ssa-tail-merge.c 983e049bd2b8555cefd79a1857036f27 gcc/tree-ssa-ter.c 629b1346e41d0eaf7999d9273d12343b gcc/tree-ssa-ter.h --- 58816,58861 ---- ca3aa63e717a70af149945d4ee9d8b7f gcc/tree-ssa-ccp.h faab3dc9502edbab7409dd8797fd94af gcc/tree-ssa-coalesce.c 317ddaf9aa0104dddd20233e702e01ab gcc/tree-ssa-coalesce.h ! 4c3fe225d8aa9a45e58ec8834892c2dc gcc/tree-ssa-copy.c 582a150658a512e1f066b33ea03d6c91 gcc/tree-ssa-dce.c ! 87b40122401d41dfefc2e633446e42e8 gcc/tree-ssa-dom.c 9c38d0bc9dbb2e6e2a080d94ffbb3730 gcc/tree-ssa-dom.h 55e322cd8dc0b29e6e44dd929e7ded51 gcc/tree-ssa-dse.c ! b9e850ea52829f825270cd2655fd9ff9 gcc/tree-ssa-forwprop.c 389cb071722144f72ebf78289ec82965 gcc/tree-ssa-ifcombine.c 2747af87035e55b411af1a2dfd1982ed gcc/tree-ssa-live.c 27f182c46da4e0babeb83f0dc3a6fe44 gcc/tree-ssa-live.h ! dc6dd90577862358c2ff4cca55b31f37 gcc/tree-ssa-loop-ch.c f56c3e2b82fb07bf466feff827a22669 gcc/tree-ssa-loop-im.c ! 388a7e79bf1ae8baf861659cc9d75078 gcc/tree-ssa-loop-ivcanon.c ! 5da66fbfcf7e6e05b2829678c1824e4f gcc/tree-ssa-loop-ivopts.c 8e29657be03c1b4a6b31bb0f3c04532d gcc/tree-ssa-loop-ivopts.h 9235efdadb6242e3ec1be0a1f77a8bd2 gcc/tree-ssa-loop-manip.c bd52a938042a3d9ee70f78865379c60c gcc/tree-ssa-loop-manip.h e4139d58162c526de253f2ea8977df22 gcc/tree-ssa-loop-niter.c a53387a05fd56f1c0a7b258041d09524 gcc/tree-ssa-loop-niter.h 4dbfc3b9f8f9c989a279e20ebed7411c gcc/tree-ssa-loop-prefetch.c ! 222b64b0249c33b5d0cea9972bacef4d gcc/tree-ssa-loop-split.c 01b379e1106a6dfd62ccf26fa40e1207 gcc/tree-ssa-loop-unswitch.c 134e4686a91b6b14309cd423625de906 gcc/tree-ssa-loop.c 7c883977ae5ca8f99c7baef499ec819d gcc/tree-ssa-loop.h ! 789ab81dbaadc9629510953c6bed0391 gcc/tree-ssa-math-opts.c f3a1ba8cdac9b155fe4b3d2bfd7c0e04 gcc/tree-ssa-operands.c faf546a32913cc858b6e35a17288bf4a gcc/tree-ssa-operands.h 8886d357d83d57390c1f023dfd8d3d04 gcc/tree-ssa-phionlycprop.c ! 4c7d974eaba6a899a3e6f8a6db050b15 gcc/tree-ssa-phiopt.c ! 17e1b566c8d14453a2157b5abe7aaa3d gcc/tree-ssa-phiprop.c ! 0b24aa8cfe2d3e3ea998e3ce25f4e51b gcc/tree-ssa-pre.c 236253ad5db25fc718d0c974ebca50f6 gcc/tree-ssa-propagate.c 3e37daab7057d09f238f1b5a1107d339 gcc/tree-ssa-propagate.h ! 1b85b2777449fcf547efe9072d53c388 gcc/tree-ssa-reassoc.c ! b8a1d6bbf15ab9d53828539d3b98f534 gcc/tree-ssa-sccvn.c ! 12ee39ca4f138560aea18f6ccad221f0 gcc/tree-ssa-sccvn.h 52aad650c67052f4d0fb05119b5b33d2 gcc/tree-ssa-scopedtables.c f7c97819a8d6cd14e1ba52ff42f9519b gcc/tree-ssa-scopedtables.h ! 94f8e997450f455ff998838f3d63f4ff gcc/tree-ssa-sink.c ! 3967d70bf4eabb5a483024484f5d5546 gcc/tree-ssa-strlen.c ! 2c75f0397243af822024136c897defd4 gcc/tree-ssa-structalias.c 22b107f85a2b67e04443d79b0000ff67 gcc/tree-ssa-tail-merge.c 983e049bd2b8555cefd79a1857036f27 gcc/tree-ssa-ter.c 629b1346e41d0eaf7999d9273d12343b gcc/tree-ssa-ter.h *************** a1c75828ecf8fd1c6eaf74c6ec6ff367 gcc/tr *** 58470,58499 **** 8352e9f09efc638da2e95e7caedde2df gcc/tree-ssa-uninit.c 72099748fefd16515175796f4b856ff7 gcc/tree-ssa.c 40537e4def470af52fd09e8f581a87a4 gcc/tree-ssa.h ! a4ec23ea5dc99ee2c0f433cc4380cf71 gcc/tree-ssanames.c 7b878704c463f54f6e5169fc3e4e0e11 gcc/tree-ssanames.h 7532580926e6ea62c157bfde93eabc3e gcc/tree-stdarg.c f074a5b3661311f44cd97298ce2721c8 gcc/tree-stdarg.h ! 2d7ba2551388b812856087b1b11a9636 gcc/tree-streamer-in.c ! 43dd2170e9247f738b555038efc4a743 gcc/tree-streamer-out.c 258742a6a20e3226f6a1bb968e470187 gcc/tree-streamer.c ddb2dd33dea05630b1bcaf17cf1e6fe6 gcc/tree-streamer.h 1dae91fc5487d137906e2984f737b2fc gcc/tree-switch-conversion.c 1890ec2660cfa4e8fafa1d34129ff83b gcc/tree-tailcall.c ! 18fecfbd93d600e754a1060cfe7e58aa gcc/tree-vect-data-refs.c c64e840e80fd120d32993735457bf2d6 gcc/tree-vect-generic.c de2a4509a3f3fdf59c0e96c1fb5d368c gcc/tree-vect-loop-manip.c 2c358fa9d8bc50f0913bbad67796ad24 gcc/tree-vect-loop.c 13b9ab9878d38fbb5b9ab9e2a3b9fc3e gcc/tree-vect-patterns.c ! f197c7c8e99de5214d384509ebb6944f gcc/tree-vect-slp.c ! e9f2fa40a822f816a451abbb7f6cfc9e gcc/tree-vect-stmts.c 6491d8028906ba909a4fd71f061f338f gcc/tree-vectorizer.c ad5f7e1f1671334e24e59845598f4d8d gcc/tree-vectorizer.h ! 7a7fb7be9e501636d61df18b9187b09b gcc/tree-vrp.c d0b07570d4815d6988ff91b7d96f35c1 gcc/tree-vrp.h ! aa21e8039f824750ba20ae6087f30496 gcc/tree.c c54cff3017739446f22655474c5be4d4 gcc/tree.def ! 223a81503038013bef7ce9d880566d21 gcc/tree.h f8aeb637e24e2147a52ec643e9c28aef gcc/treestruct.def 920500c599697836ec34d26fcdc64054 gcc/tsan.c 4a8b8b62b3cda63b7ce4273fb84b74fa gcc/tsan.h --- 58869,58898 ---- 8352e9f09efc638da2e95e7caedde2df gcc/tree-ssa-uninit.c 72099748fefd16515175796f4b856ff7 gcc/tree-ssa.c 40537e4def470af52fd09e8f581a87a4 gcc/tree-ssa.h ! 2b0c2c868d164d388ba750ba93e22375 gcc/tree-ssanames.c 7b878704c463f54f6e5169fc3e4e0e11 gcc/tree-ssanames.h 7532580926e6ea62c157bfde93eabc3e gcc/tree-stdarg.c f074a5b3661311f44cd97298ce2721c8 gcc/tree-stdarg.h ! 62a303ca15ceca09cd63d85bd88dd0e7 gcc/tree-streamer-in.c ! fcabe1e7caffd67c85e6d728b3b35112 gcc/tree-streamer-out.c 258742a6a20e3226f6a1bb968e470187 gcc/tree-streamer.c ddb2dd33dea05630b1bcaf17cf1e6fe6 gcc/tree-streamer.h 1dae91fc5487d137906e2984f737b2fc gcc/tree-switch-conversion.c 1890ec2660cfa4e8fafa1d34129ff83b gcc/tree-tailcall.c ! a87a6e2bca817244bca0fce4d1b747a9 gcc/tree-vect-data-refs.c c64e840e80fd120d32993735457bf2d6 gcc/tree-vect-generic.c de2a4509a3f3fdf59c0e96c1fb5d368c gcc/tree-vect-loop-manip.c 2c358fa9d8bc50f0913bbad67796ad24 gcc/tree-vect-loop.c 13b9ab9878d38fbb5b9ab9e2a3b9fc3e gcc/tree-vect-patterns.c ! c69ac13b77d5f865c30b838e50d44568 gcc/tree-vect-slp.c ! b3cb1b55a71f71f9e8acaf8dcd3374b3 gcc/tree-vect-stmts.c 6491d8028906ba909a4fd71f061f338f gcc/tree-vectorizer.c ad5f7e1f1671334e24e59845598f4d8d gcc/tree-vectorizer.h ! 09d56026fed80064d36269f6fe676de4 gcc/tree-vrp.c d0b07570d4815d6988ff91b7d96f35c1 gcc/tree-vrp.h ! 5e906e9f4eab121c2eccddf776ca2c20 gcc/tree.c c54cff3017739446f22655474c5be4d4 gcc/tree.def ! 73ba18c80551740216f8d5171cce2377 gcc/tree.h f8aeb637e24e2147a52ec643e9c28aef gcc/treestruct.def 920500c599697836ec34d26fcdc64054 gcc/tsan.c 4a8b8b62b3cda63b7ce4273fb84b74fa gcc/tsan.h *************** aab19944e5d4ede282dca320f8ad2758 gcc/ty *** 58503,58514 **** 8546cfccd93736ce37e8356167a8c8d3 gcc/typed-splay-tree.h 37dab9d9536027628de494391d84137a gcc/ubsan.c abd69325eb08fa62d523a28ffb55a64c gcc/ubsan.h ! c8b43ae28a594feb1a7832ffcf1ff166 gcc/valtrack.c fe46b58c2d968098a9ae6e7a7445cae3 gcc/valtrack.h 98fdc9a291306955c55665ff6b44c42b gcc/value-prof.c ac107bcf2a6f3e451007922fe6c8da2a gcc/value-prof.h 08bf2c7378d10540c4ebbbdf57a90827 gcc/var-tracking.c ! e5e07d507d78369a67a61e6f57822bdf gcc/varasm.c 3075dcabae19eef70790c35d5576a237 gcc/varasm.h a1e741d53ddf1d949ec51b34ae13e6d5 gcc/varpool.c c77ffc837d830d397f3be14b28431037 gcc/vec.c --- 58902,58913 ---- 8546cfccd93736ce37e8356167a8c8d3 gcc/typed-splay-tree.h 37dab9d9536027628de494391d84137a gcc/ubsan.c abd69325eb08fa62d523a28ffb55a64c gcc/ubsan.h ! a1b38624cdd9376c9140f56deacde28e gcc/valtrack.c fe46b58c2d968098a9ae6e7a7445cae3 gcc/valtrack.h 98fdc9a291306955c55665ff6b44c42b gcc/value-prof.c ac107bcf2a6f3e451007922fe6c8da2a gcc/value-prof.h 08bf2c7378d10540c4ebbbdf57a90827 gcc/var-tracking.c ! 715171fecb882a8a6fb7f7442fc0b344 gcc/varasm.c 3075dcabae19eef70790c35d5576a237 gcc/varasm.h a1e741d53ddf1d949ec51b34ae13e6d5 gcc/varpool.c c77ffc837d830d397f3be14b28431037 gcc/vec.c *************** ae2494df80e1f4593b6b693054302d08 gcc/wi *** 58525,58537 **** af685becb5c1a01e42a76fc820bdeb91 gcc/wide-int.cc e48b954d508e3167f06f4a8d82ea5cd8 gcc/wide-int.h 4610af587f4dc950fe9a6ef2235dfff9 gcc/xcoff.h ! d7feb10b49afbc551ef8ef0e7c8b382a gcc/xcoffout.c ! 8ac0a7cac3c2354f43d17230a00549ee gcc/xcoffout.h ! 1f928523b785c5846d658a95331a6ef9 gnattools/ChangeLog aaa671ca98fa9f94bfedd0ab395c5505 gnattools/Makefile.in c59f18e88cbf4b04095185094daf9a84 gnattools/configure eb3f980bf11ec11e25ddc6f29983830a gnattools/configure.ac ! f59a86e836317441e4eb489d359c7667 gotools/ChangeLog 240cdfac222bad04b3c6c59b6e33224f gotools/Makefile.am b135327a9b19851bf704c9bdac3735cf gotools/Makefile.in 7e23031e2e274aaa07b61c1e8f18dc99 gotools/README --- 58924,58936 ---- af685becb5c1a01e42a76fc820bdeb91 gcc/wide-int.cc e48b954d508e3167f06f4a8d82ea5cd8 gcc/wide-int.h 4610af587f4dc950fe9a6ef2235dfff9 gcc/xcoff.h ! 2667b1c781ca46d17823626c18f96e64 gcc/xcoffout.c ! 8fde3b3adcd57fbf1ef961ef567999e0 gcc/xcoffout.h ! 265106a289b5562973de81a9a9bb83c6 gnattools/ChangeLog aaa671ca98fa9f94bfedd0ab395c5505 gnattools/Makefile.in c59f18e88cbf4b04095185094daf9a84 gnattools/configure eb3f980bf11ec11e25ddc6f29983830a gnattools/configure.ac ! 1168a31521697d691a2f1457cd5ae17f gotools/ChangeLog 240cdfac222bad04b3c6c59b6e33224f gotools/Makefile.am b135327a9b19851bf704c9bdac3735cf gotools/Makefile.in 7e23031e2e274aaa07b61c1e8f18dc99 gotools/README *************** c4e8176c1964a5ebe0a55900f2141299 gotool *** 58543,58549 **** eb2aeb3a6cffe7b26a8f1c8a2da23dcd gotools/gofmt.1 59530bdf33659b29e73d4adb9f9f6552 include/COPYING d32239bcb673463ab874e80d47fae504 include/COPYING3 ! 683918215667178552bf5822bf46a40e include/ChangeLog 4263432a72ff47ed8bf420208ee7eea5 include/ChangeLog-9103 a43d76108493b20da790f953f829c6a5 include/ChangeLog.jit f5224d917e0ec7656fa5c368c93b1c13 include/ansidecl.h --- 58942,58948 ---- eb2aeb3a6cffe7b26a8f1c8a2da23dcd gotools/gofmt.1 59530bdf33659b29e73d4adb9f9f6552 include/COPYING d32239bcb673463ab874e80d47fae504 include/COPYING3 ! 37c5d753c42903f94943a3a2f3be6b45 include/ChangeLog 4263432a72ff47ed8bf420208ee7eea5 include/ChangeLog-9103 a43d76108493b20da790f953f829c6a5 include/ChangeLog.jit f5224d917e0ec7656fa5c368c93b1c13 include/ansidecl.h *************** a2c2be56ed85992d72e0a1e16388ce83 includ *** 58587,58593 **** a3809e336de193fa8866271870dd0443 include/xregex2.h 323e072fba874802e42a3a1a6468b335 include/xtensa-config.h 361482dd6b5b5eb7090fff3986fba68a install-sh ! 143cd1d06179ecca146e618e89e286f7 intl/ChangeLog cad1d6fab2274517783de7433c0faa74 intl/Makefile.in 6ec998bb4716c744bf8185e607f69301 intl/README 76ca170a525d5b84d90f0478fe788931 intl/VERSION --- 58986,58992 ---- a3809e336de193fa8866271870dd0443 include/xregex2.h 323e072fba874802e42a3a1a6468b335 include/xtensa-config.h 361482dd6b5b5eb7090fff3986fba68a install-sh ! 7745f224cc7b044c2f02bcd8cfc50494 intl/ChangeLog cad1d6fab2274517783de7433c0faa74 intl/Makefile.in 6ec998bb4716c744bf8185e607f69301 intl/README 76ca170a525d5b84d90f0478fe788931 intl/VERSION *************** d50a8c6c5b41089930accbdce767d3c0 intl/p *** 58629,58640 **** b4758a0194e3e41362b939911472ce62 intl/relocatable.c bedade7bcfc3bc5eb09a2c6844f637f3 intl/relocatable.h 43f287d082528203fc85c1d2d81bf30d intl/textdomain.c ! 4bc4920d212a4212b4197fa90b1fc83d libada/ChangeLog 85a2c02d6be7c7bbef19b47329e3f001 libada/Makefile.in 554be3385e4af61bda0453b864b0bd82 libada/configure e29be9defcc56c307519b82f9be9bf6b libada/configure.ac 46d3fe6da7a771cc2d5420c4137a6861 libatomic/.gitignore ! 61aed21b6250191b571f2b74dd609091 libatomic/ChangeLog 0e2617e8dd9c8750a069dec0be5238aa libatomic/Makefile.am a4b4277b02f2c77ee920b5da5684fc9f libatomic/Makefile.in 361fca640a8f8ae0534948c6464cd031 libatomic/acinclude.m4 --- 59028,59039 ---- b4758a0194e3e41362b939911472ce62 intl/relocatable.c bedade7bcfc3bc5eb09a2c6844f637f3 intl/relocatable.h 43f287d082528203fc85c1d2d81bf30d intl/textdomain.c ! 8795a0c629836b34b811fdb453dcc52d libada/ChangeLog 85a2c02d6be7c7bbef19b47329e3f001 libada/Makefile.in 554be3385e4af61bda0453b864b0bd82 libada/configure e29be9defcc56c307519b82f9be9bf6b libada/configure.ac 46d3fe6da7a771cc2d5420c4137a6861 libatomic/.gitignore ! f044b436548355815e4c16d1785c43c6 libatomic/ChangeLog 0e2617e8dd9c8750a069dec0be5238aa libatomic/Makefile.am a4b4277b02f2c77ee920b5da5684fc9f libatomic/Makefile.in 361fca640a8f8ae0534948c6464cd031 libatomic/acinclude.m4 *************** c03a072efac9b30f8f8429ac52fd246b libato *** 58719,58725 **** 8a7308fda7ed1543cb9e3be0f8e47bce libatomic/testsuite/libatomic.c/atomic-store-5.c 40618200985a15bcba64f871863da498 libatomic/testsuite/libatomic.c/c.exp 97b0c9cdfcb733664bdf4efe0f5dc449 libatomic/testsuite/libatomic.c/generic-2.c ! 95f93b85242f7475a4547170a17abd61 libbacktrace/ChangeLog eb3a88b53140eb234a99a4b3a55e56bf libbacktrace/ChangeLog.jit be5cf12569500d943e2cb547bdf7a602 libbacktrace/Makefile.am d470ca14200db6955e2aa4b9e0bdb4ad libbacktrace/Makefile.in --- 59118,59124 ---- 8a7308fda7ed1543cb9e3be0f8e47bce libatomic/testsuite/libatomic.c/atomic-store-5.c 40618200985a15bcba64f871863da498 libatomic/testsuite/libatomic.c/c.exp 97b0c9cdfcb733664bdf4efe0f5dc449 libatomic/testsuite/libatomic.c/generic-2.c ! 15242a27de23627c248ae9855d87a69f libbacktrace/ChangeLog eb3a88b53140eb234a99a4b3a55e56bf libbacktrace/ChangeLog.jit be5cf12569500d943e2cb547bdf7a602 libbacktrace/Makefile.am d470ca14200db6955e2aa4b9e0bdb4ad libbacktrace/Makefile.in *************** ba2412bc59c92c67dbc379a84dd9f9e8 libbac *** 58751,58757 **** 2fbbbd9fd16e0d40ff744a53d93672f4 libbacktrace/state.c 2659132b1c1fb664296bed58947a1327 libbacktrace/stest.c 0c34f70856e684a5a2d88cef4d26a433 libbacktrace/unknown.c ! 11f1fb164dc58b7e4a79af3180c0ea03 libcc1/ChangeLog a046123da46f45ef05c23464bda5ea4c libcc1/Makefile.am 3b8fea7df7b2debbea080163365ba6ae libcc1/Makefile.in 5f253fc15bb29a40419f12ce42f92147 libcc1/aclocal.m4 --- 59150,59156 ---- 2fbbbd9fd16e0d40ff744a53d93672f4 libbacktrace/state.c 2659132b1c1fb664296bed58947a1327 libbacktrace/stest.c 0c34f70856e684a5a2d88cef4d26a433 libbacktrace/unknown.c ! bf981185785f957300247343596cb953 libcc1/ChangeLog a046123da46f45ef05c23464bda5ea4c libcc1/Makefile.am 3b8fea7df7b2debbea080163365ba6ae libcc1/Makefile.in 5f253fc15bb29a40419f12ce42f92147 libcc1/aclocal.m4 *************** adf6e179394cf6ed80e1c2c7fcf92d1f libcc1 *** 58779,58785 **** c66f2f1d1887d636535fd09532a98f2f libcc1/names.hh 4e2e588c20bbaefa4ce3a333e0ba9a98 libcc1/rpc.hh e0b03ce59463dc7215bdec25060a78fe libcc1/status.hh ! b2b874a17c2f91ecf96671c010473823 libcilkrts/ChangeLog c60cb24ed9572dea78562531f0136e1d libcilkrts/Makefile.am 6e9956a8b6e5fc457cc5ddb53701d8ca libcilkrts/Makefile.in ec72a9778565ec08ebbe13cb95aa7245 libcilkrts/README --- 59178,59184 ---- c66f2f1d1887d636535fd09532a98f2f libcc1/names.hh 4e2e588c20bbaefa4ce3a333e0ba9a98 libcc1/rpc.hh e0b03ce59463dc7215bdec25060a78fe libcc1/status.hh ! db03f3c8ed11063623a8bf2c303f6ca5 libcilkrts/ChangeLog c60cb24ed9572dea78562531f0136e1d libcilkrts/Makefile.am 6e9956a8b6e5fc457cc5ddb53701d8ca libcilkrts/Makefile.in ec72a9778565ec08ebbe13cb95aa7245 libcilkrts/README *************** ed7c4b18a37a9956d38cc2de890d5c0f libcil *** 58908,58914 **** 0c426f98ab2644f7789533e26a81622e libcilkrts/runtime/sysdep.h 2c3a3b2209bf4b41ad77b803856dc02a libcilkrts/runtime/worker_mutex.c ef828695a2adb12b2c20e35ffae8e0c8 libcilkrts/runtime/worker_mutex.h ! 8fbe8ad50a227c9edd8ff75f2e27d02c libcpp/ChangeLog 2bd831b17997584e38305782cebe6948 libcpp/ChangeLog.jit 09398b05cc9619875b188b5b9b5fb8a0 libcpp/Makefile.in efb9decde4743620252ededfe7310a3d libcpp/aclocal.m4 --- 59307,59313 ---- 0c426f98ab2644f7789533e26a81622e libcilkrts/runtime/sysdep.h 2c3a3b2209bf4b41ad77b803856dc02a libcilkrts/runtime/worker_mutex.c ef828695a2adb12b2c20e35ffae8e0c8 libcilkrts/runtime/worker_mutex.h ! 0332dab85c7c9826dc116485a38f6218 libcpp/ChangeLog 2bd831b17997584e38305782cebe6948 libcpp/ChangeLog.jit 09398b05cc9619875b188b5b9b5fb8a0 libcpp/Makefile.in efb9decde4743620252ededfe7310a3d libcpp/aclocal.m4 *************** ed5ae555e8b77d54908f99c283c3c9e3 libcpp *** 58930,58942 **** 97ee7d4a3afe6532296b07ebbb2b15f9 libcpp/init.c b618c6ecc923dab6711dc34f8ed6881f libcpp/internal.h 6f3c6af04c81b64e118e3a181133c25b libcpp/lex.c ! f74674c346dfa1c3fbd08fa9869f6a48 libcpp/line-map.c eba197e195fb1c007bf0724c8bed75ea libcpp/location-example.txt c5c375af513d7883fd2eb47dfc975855 libcpp/macro.c 5bd25c7374dce6b4204276b21cdfa31d libcpp/makeucnid.c e70c5326d8d9cbbf9ca5ae4ca2dc1370 libcpp/mkdeps.c 9f76d47dc04496af0317d5a8d0a1bcbd libcpp/pch.c ! 40e031924505cb4372e1850ac59ad034 libcpp/po/ChangeLog 17a463bdc4264f83ff6f5deb2fc0b3a6 libcpp/po/be.gmo 674a2819e662ae2d8bfbb6285a7ad2c4 libcpp/po/be.po c4f0b21d10c51c5c842d92f8c6bd1e2b libcpp/po/ca.gmo --- 59329,59341 ---- 97ee7d4a3afe6532296b07ebbb2b15f9 libcpp/init.c b618c6ecc923dab6711dc34f8ed6881f libcpp/internal.h 6f3c6af04c81b64e118e3a181133c25b libcpp/lex.c ! c2024363e2b83654e6db8cbd8c9645e6 libcpp/line-map.c eba197e195fb1c007bf0724c8bed75ea libcpp/location-example.txt c5c375af513d7883fd2eb47dfc975855 libcpp/macro.c 5bd25c7374dce6b4204276b21cdfa31d libcpp/makeucnid.c e70c5326d8d9cbbf9ca5ae4ca2dc1370 libcpp/mkdeps.c 9f76d47dc04496af0317d5a8d0a1bcbd libcpp/pch.c ! 4e81fc49b69f06c83e09e4cfa681dcda libcpp/po/ChangeLog 17a463bdc4264f83ff6f5deb2fc0b3a6 libcpp/po/be.gmo 674a2819e662ae2d8bfbb6285a7ad2c4 libcpp/po/be.po c4f0b21d10c51c5c842d92f8c6bd1e2b libcpp/po/ca.gmo *************** e21ce279a54dc038acab0eb2424f760b libcpp *** 58986,58992 **** a62eb585eca6fd68a7bbe8b9294972d4 libcpp/ucnid.h 29a3c2eb1562ff70daad7253fabaeffb libcpp/ucnid.tab a6c2b3de06c7424706b16f4c206396a1 libdecnumber/.gitignore ! 8c0e97f067efaca06804994d875a0117 libdecnumber/ChangeLog 2bd831b17997584e38305782cebe6948 libdecnumber/ChangeLog.jit 1a6bde55e34f3c983baa5211a6400cba libdecnumber/Makefile.in b9ab907f769f0664ed31991a9c9bf3bb libdecnumber/aclocal.m4 --- 59385,59391 ---- a62eb585eca6fd68a7bbe8b9294972d4 libcpp/ucnid.h 29a3c2eb1562ff70daad7253fabaeffb libcpp/ucnid.tab a6c2b3de06c7424706b16f4c206396a1 libdecnumber/.gitignore ! 4154ca305821a922c20efa023c7d1ece libdecnumber/ChangeLog 2bd831b17997584e38305782cebe6948 libdecnumber/ChangeLog.jit 1a6bde55e34f3c983baa5211a6400cba libdecnumber/Makefile.in b9ab907f769f0664ed31991a9c9bf3bb libdecnumber/aclocal.m4 *************** a97c47969dfc92a7666dfe3c2e1e1448 libdec *** 59049,59055 **** f8f385e8ac437b3cec6d5d257a8ca92b libdecnumber/dpd/decimal64.c c44ad1b41c2725fb70917c5f60b033d2 libdecnumber/dpd/decimal64.h 0f6db29710e7075c2fd62bc4478b3b8d libdecnumber/dpd/decimal64Symbols.h ! 82e5c5024e6874b49d775117d9a6a0af libffi/ChangeLog ba66fc19311348d373ec271be939a659 libffi/ChangeLog.libffi fbbc216bc25d759a72ea3e6d734af56b libffi/ChangeLog.libgcj d946d2b97454ad50a1dbfbf48923c5be libffi/ChangeLog.v1 --- 59448,59454 ---- f8f385e8ac437b3cec6d5d257a8ca92b libdecnumber/dpd/decimal64.c c44ad1b41c2725fb70917c5f60b033d2 libdecnumber/dpd/decimal64.h 0f6db29710e7075c2fd62bc4478b3b8d libdecnumber/dpd/decimal64Symbols.h ! 8c1a80c9ed102a438005b2b1351c97f4 libffi/ChangeLog ba66fc19311348d373ec271be939a659 libffi/ChangeLog.libffi fbbc216bc25d759a72ea3e6d734af56b libffi/ChangeLog.libgcj d946d2b97454ad50a1dbfbf48923c5be libffi/ChangeLog.v1 *************** d47c79b281339983862a8e52d8c73f0f libffi *** 59406,59414 **** 291be426192f460f6a07dfe1c96ab094 libffi/testsuite/libffi.special/special.exp 93fc3ea311b79f64004992807ce75d1e libffi/testsuite/libffi.special/unwindtest.cc 185d0795017fbbe253a13db8e34085f9 libffi/testsuite/libffi.special/unwindtest_ffi_call.cc ! 3bdbfba25943e3697535aacfe13f6987 libgcc/ChangeLog 14791b3aecdd572b8a4ecb3ea32778db libgcc/Makefile.in ! 186f54217a4d7fe1af46a0228b0997b4 libgcc/config.host d379c1b8013b8714e8c9b01110f0ceb9 libgcc/config.in 0ec94edef92736a572f23163aecddb69 libgcc/config/aarch64/aarch64-unwind.h 0f24438599446b7705f90a715e825b26 libgcc/config/aarch64/crtfastmath.c --- 59805,59813 ---- 291be426192f460f6a07dfe1c96ab094 libffi/testsuite/libffi.special/special.exp 93fc3ea311b79f64004992807ce75d1e libffi/testsuite/libffi.special/unwindtest.cc 185d0795017fbbe253a13db8e34085f9 libffi/testsuite/libffi.special/unwindtest_ffi_call.cc ! 80954b3bdcda77d41ea6614422a8b0ec libgcc/ChangeLog 14791b3aecdd572b8a4ecb3ea32778db libgcc/Makefile.in ! 281d98467cf568c17a2ab8a31de827b0 libgcc/config.host d379c1b8013b8714e8c9b01110f0ceb9 libgcc/config.in 0ec94edef92736a572f23163aecddb69 libgcc/config/aarch64/aarch64-unwind.h 0f24438599446b7705f90a715e825b26 libgcc/config/aarch64/crtfastmath.c *************** e8ba4116276e7713f582c7b0193fac3f libgcc *** 59752,59758 **** 19e293667c8b673f1c0e2284b85f9b99 libgcc/config/ia64/vms-unwind.h 57c6f8e50666a31bd88fbbebfbd77725 libgcc/config/iq2000/lib2funcs.c 102f7dad8ad6b54434a1b8313d1e42c4 libgcc/config/iq2000/t-iq2000 ! 38d3b79d795a63b678bf69587f30c0fd libgcc/config/libbid/ChangeLog bf92e3d9d8c85d16491b46e9b705e9d6 libgcc/config/libbid/_addsub_dd.c 07fb00a8e3903086b062319087bfd206 libgcc/config/libbid/_addsub_sd.c 7ae95dbcf6a647ed194b9156e261646f libgcc/config/libbid/_addsub_td.c --- 60151,60157 ---- 19e293667c8b673f1c0e2284b85f9b99 libgcc/config/ia64/vms-unwind.h 57c6f8e50666a31bd88fbbebfbd77725 libgcc/config/iq2000/lib2funcs.c 102f7dad8ad6b54434a1b8313d1e42c4 libgcc/config/iq2000/t-iq2000 ! 582fe749d6adc08cc4e65c459b99114d libgcc/config/libbid/ChangeLog bf92e3d9d8c85d16491b46e9b705e9d6 libgcc/config/libbid/_addsub_dd.c 07fb00a8e3903086b062319087bfd206 libgcc/config/libbid/_addsub_sd.c 7ae95dbcf6a647ed194b9156e261646f libgcc/config/libbid/_addsub_td.c *************** d705890648b8556099f61b657262240c libgcc *** 60357,60363 **** 50c2a76718166ba7ec3f398a328ebc67 libgcc/config/rs6000/darwin-gpsave.S b6d19f8ec7cf590254ef0dbaba05760e libgcc/config/rs6000/darwin-tramp.S c15911bafd756a989c9ffe27b9ca9d2d libgcc/config/rs6000/darwin-unwind.h ! 9d46f8b1e68f378ac4032f9ad5056b5a libgcc/config/rs6000/darwin-vecsave.S 165bf1ad817dd1aee3a1300247c4be5e libgcc/config/rs6000/darwin-world.S 3c56874b1d495be6a4d8492de83b0fa5 libgcc/config/rs6000/e500crtres32gpr.S 1c94e8b00dbee9251b657132125ae2cf libgcc/config/rs6000/e500crtres64gpr.S --- 60756,60762 ---- 50c2a76718166ba7ec3f398a328ebc67 libgcc/config/rs6000/darwin-gpsave.S b6d19f8ec7cf590254ef0dbaba05760e libgcc/config/rs6000/darwin-tramp.S c15911bafd756a989c9ffe27b9ca9d2d libgcc/config/rs6000/darwin-unwind.h ! a58ce1f1841a9292a8edb0655b67ad20 libgcc/config/rs6000/darwin-vecsave.S 165bf1ad817dd1aee3a1300247c4be5e libgcc/config/rs6000/darwin-world.S 3c56874b1d495be6a4d8492de83b0fa5 libgcc/config/rs6000/e500crtres32gpr.S 1c94e8b00dbee9251b657132125ae2cf libgcc/config/rs6000/e500crtres64gpr.S *************** a9b9d96b82d427f3ff98d6e29cd30bdd libgcc *** 60405,60412 **** 17dbf83b86e21f858dc18d7aaed5d66e libgcc/config/rs6000/sol-cn.S 8e65197842ba39fd658038728475e572 libgcc/config/rs6000/t-aix-cxa 3c3fc29e8ce89e9bbebf4cfbd71a6b54 libgcc/config/rs6000/t-crtstuff ! fbf232aa523ca2f4bcf139e827eba2da libgcc/config/rs6000/t-darwin ! d7cdc73d7a8e658f872ea07474837bc2 libgcc/config/rs6000/t-darwin64 46fe69a2a0410b862f850e0f02b9cfe0 libgcc/config/rs6000/t-e500v1-fp a8a0ffa08b5571d31c438e772a671c39 libgcc/config/rs6000/t-e500v2-fp b9b0914220774c0a3a5958018b9adf0d libgcc/config/rs6000/t-float128 --- 60804,60811 ---- 17dbf83b86e21f858dc18d7aaed5d66e libgcc/config/rs6000/sol-cn.S 8e65197842ba39fd658038728475e572 libgcc/config/rs6000/t-aix-cxa 3c3fc29e8ce89e9bbebf4cfbd71a6b54 libgcc/config/rs6000/t-crtstuff ! bc91baf0523c8475334ca80d6ff265c4 libgcc/config/rs6000/t-darwin ! a0014912b4b08cfbe887d9945460e370 libgcc/config/rs6000/t-darwin64 46fe69a2a0410b862f850e0f02b9cfe0 libgcc/config/rs6000/t-e500v1-fp a8a0ffa08b5571d31c438e772a671c39 libgcc/config/rs6000/t-e500v2-fp b9b0914220774c0a3a5958018b9adf0d libgcc/config/rs6000/t-float128 *************** ada9a39786da3b2e999f7440a17a1ed7 libgcc *** 60513,60519 **** 7f567bcd22705a965e07f79e8f68ebaa libgcc/config/stormy16/umodsi3.c f199b38114ce849b77b38bd475d72cff libgcc/config/t-crtfm 060a49bb5c4a53a2125123d4cbd571de libgcc/config/t-crtstuff-pic ! d642b4a8c7de2f18dad59fd567c521f0 libgcc/config/t-darwin ee7ad6460936fc6f3f89ecb711376477 libgcc/config/t-dfprules d747115cbcc2bd56b6b4f73c350c2ae3 libgcc/config/t-eh-dw2-dip b9d08c1cbead9131f216accd515ec32c libgcc/config/t-fdpbit --- 60912,60918 ---- 7f567bcd22705a965e07f79e8f68ebaa libgcc/config/stormy16/umodsi3.c f199b38114ce849b77b38bd475d72cff libgcc/config/t-crtfm 060a49bb5c4a53a2125123d4cbd571de libgcc/config/t-crtstuff-pic ! 4062850a39423731508ce332c6f06273 libgcc/config/t-darwin ee7ad6460936fc6f3f89ecb711376477 libgcc/config/t-dfprules d747115cbcc2bd56b6b4f73c350c2ae3 libgcc/config/t-eh-dw2-dip b9d08c1cbead9131f216accd515ec32c libgcc/config/t-fdpbit *************** def8eb8348b4ef12e5f4f6b14c9c79b8 libgcc *** 60761,60767 **** 85a736ad90e4160d44daa22a1ee856e0 libgcc/vtv_end_preinit.c fc4b471f8466a3e259cd068859f264ed libgcc/vtv_start.c 9f844965cec8eed0fa3ddc704bfb5262 libgcc/vtv_start_preinit.c ! b8334c7c78c5793d0fb1dc633fcb444f libgfortran/ChangeLog 9aca36338382e5b4b730e7779170b24d libgfortran/ChangeLog-2002 80d3edc880c2da0b7a2beec2e2c4f774 libgfortran/ChangeLog-2003 9f0239429993a5e64ed793eb6c55a5c1 libgfortran/ChangeLog-2004 --- 61160,61166 ---- 85a736ad90e4160d44daa22a1ee856e0 libgcc/vtv_end_preinit.c fc4b471f8466a3e259cd068859f264ed libgcc/vtv_start.c 9f844965cec8eed0fa3ddc704bfb5262 libgcc/vtv_start_preinit.c ! 340257c2c93b6857825c845e1acfdf05 libgfortran/ChangeLog 9aca36338382e5b4b730e7779170b24d libgfortran/ChangeLog-2002 80d3edc880c2da0b7a2beec2e2c4f774 libgfortran/ChangeLog-2003 9f0239429993a5e64ed793eb6c55a5c1 libgfortran/ChangeLog-2004 *************** ea0a33a5c0ae0cffffdca91c87f49241 libgfo *** 60789,60795 **** 539332e692144a2b2294faa5d63b0dbd libgfortran/config/fpu-387.h 67eb396c95f535ced6391995968f036c libgfortran/config/fpu-aix.h 5868cacfd4c9ed84c5d0d1fc576e500a libgfortran/config/fpu-generic.h ! ddc8a754f84f3720f8e6e61fd97a3072 libgfortran/config/fpu-glibc.h 0a21f9e003e23203ed2bcec2bb3ab547 libgfortran/config/fpu-sysv.h 52c9f367ef10a9be039a0d9244d763ea libgfortran/configure 17fde774fca767004246c3356516a1dd libgfortran/configure.ac --- 61188,61194 ---- 539332e692144a2b2294faa5d63b0dbd libgfortran/config/fpu-387.h 67eb396c95f535ced6391995968f036c libgfortran/config/fpu-aix.h 5868cacfd4c9ed84c5d0d1fc576e500a libgfortran/config/fpu-generic.h ! 5ccce69694be2c5ac95e876469e2a81f libgfortran/config/fpu-glibc.h 0a21f9e003e23203ed2bcec2bb3ab547 libgfortran/config/fpu-sysv.h 52c9f367ef10a9be039a0d9244d763ea libgfortran/configure 17fde774fca767004246c3356516a1dd libgfortran/configure.ac *************** e1e47a4933e8cc465c4d32cce0d04e0a libgfo *** 61350,61358 **** 90cec54bd94497b006b00584256aad6f libgfortran/io/inquire.c 354cc9a41c9be8fc58337ee054842616 libgfortran/io/intrinsics.c 45793601b3127f64e8988f7cf1a82ea4 libgfortran/io/io.h ! 3ee5e675423e68221227de63841b3b78 libgfortran/io/list_read.c aeb36c8b750c3ab57c7d50774a26e33a libgfortran/io/lock.c ! b33b5e02e59f46d957995c354c77f4c9 libgfortran/io/open.c 840308a2421c73db0a7e6ad265f3177e libgfortran/io/read.c 622a2a1592ced0d5e333d7d3735be2ee libgfortran/io/size_from_kind.c ebd48bae0d2273e7a8220632073ebf99 libgfortran/io/transfer.c --- 61749,61757 ---- 90cec54bd94497b006b00584256aad6f libgfortran/io/inquire.c 354cc9a41c9be8fc58337ee054842616 libgfortran/io/intrinsics.c 45793601b3127f64e8988f7cf1a82ea4 libgfortran/io/io.h ! 8d855d6628037f4e8429e8c2fab91a8b libgfortran/io/list_read.c aeb36c8b750c3ab57c7d50774a26e33a libgfortran/io/lock.c ! 540a8669e212e97d9e6a4975b62792b7 libgfortran/io/open.c 840308a2421c73db0a7e6ad265f3177e libgfortran/io/read.c 622a2a1592ced0d5e333d7d3735be2ee libgfortran/io/size_from_kind.c ebd48bae0d2273e7a8220632073ebf99 libgfortran/io/transfer.c *************** e4c9061ab7a41f4935f0b0ad09a288ce libgfo *** 61361,61367 **** 3d16c2399a70dc65e4e1fdfcddceeb89 libgfortran/io/unix.c 3aca9110d24b2377aff7692c40f8d4c0 libgfortran/io/unix.h 6778a59a605e3d177e1a8442b5f79aaf libgfortran/io/write.c ! 4d897f58649cf64a5a1e3ee7f6b5d1b5 libgfortran/io/write_float.def 2d7080a94650ac19727c9b138db44765 libgfortran/kinds-override.h 92ef6b7697422b2ad083fa00fb93d763 libgfortran/libgfortran.h 2527bb19b82f08b34038b07b172d029d libgfortran/libgfortran.spec.in --- 61760,61766 ---- 3d16c2399a70dc65e4e1fdfcddceeb89 libgfortran/io/unix.c 3aca9110d24b2377aff7692c40f8d4c0 libgfortran/io/unix.h 6778a59a605e3d177e1a8442b5f79aaf libgfortran/io/write.c ! 811c8a5efc373e1fb999194e80991899 libgfortran/io/write_float.def 2d7080a94650ac19727c9b138db44765 libgfortran/kinds-override.h 92ef6b7697422b2ad083fa00fb93d763 libgfortran/libgfortran.h 2527bb19b82f08b34038b07b172d029d libgfortran/libgfortran.spec.in *************** f53e7864169abcd13c87797406f8b981 libgfo *** 61411,61417 **** cef25b7bceffde6fc5728a173e842a62 libgfortran/mk-kinds-h.sh 764579ddc54916182288fc40bdf0e544 libgfortran/mk-sik-inc.sh f81db480cbfdc2b1d2291623c6cadb5f libgfortran/mk-srk-inc.sh ! 199d7d444fc282ef629d26f6d1232a15 libgfortran/runtime/backtrace.c c88e7ed76a15e57bb7ed9b8595c50fae libgfortran/runtime/bounds.c 64e508edf262ebdb62d2ebccb1c14baa libgfortran/runtime/compile_options.c 1a88ad180dd7e38c2ac0a3e9c7abc699 libgfortran/runtime/convert_char.c --- 61810,61816 ---- cef25b7bceffde6fc5728a173e842a62 libgfortran/mk-kinds-h.sh 764579ddc54916182288fc40bdf0e544 libgfortran/mk-sik-inc.sh f81db480cbfdc2b1d2291623c6cadb5f libgfortran/mk-srk-inc.sh ! 122700fc44748c2bd192eb60b596fd83 libgfortran/runtime/backtrace.c c88e7ed76a15e57bb7ed9b8595c50fae libgfortran/runtime/bounds.c 64e508edf262ebdb62d2ebccb1c14baa libgfortran/runtime/compile_options.c 1a88ad180dd7e38c2ac0a3e9c7abc699 libgfortran/runtime/convert_char.c *************** f1f0917f45d626d15a5f129fef3d81e2 libgo/ *** 64078,64084 **** 4b7af0d38c597a7b2a6f9cb460b1428c libgo/testsuite/gotest ead4e721beb57b319fcd7da8ddf10705 libgo/testsuite/lib/libgo.exp 6df485581d2f02246f41b5ca46f5bb5d libgo/testsuite/libgo.testmain/testmain.exp ! a7b9ae5f0a31dd29fb00721b844449a5 libgomp/ChangeLog 0d55aa862aee66efdc5f8d62c94ff8fb libgomp/ChangeLog.graphite 55534454ed4bb50459c2c58ed02cad59 libgomp/Makefile.am ac2f853393abd4fc51886e45bfd8a4c5 libgomp/Makefile.in --- 64477,64483 ---- 4b7af0d38c597a7b2a6f9cb460b1428c libgo/testsuite/gotest ead4e721beb57b319fcd7da8ddf10705 libgo/testsuite/lib/libgo.exp 6df485581d2f02246f41b5ca46f5bb5d libgo/testsuite/libgo.testmain/testmain.exp ! bbaaf2b29d10c5ca2275ba89104b70c5 libgomp/ChangeLog 0d55aa862aee66efdc5f8d62c94ff8fb libgomp/ChangeLog.graphite 55534454ed4bb50459c2c58ed02cad59 libgomp/Makefile.am ac2f853393abd4fc51886e45bfd8a4c5 libgomp/Makefile.in *************** fd519093dc23e7e1ba374de5c783a5d3 libgom *** 64189,64195 **** baa1c2b75501adfb0908cb243d1945bf libgomp/libgomp-plugin.c c1cee0b720173c688c10b339a6bb8ff2 libgomp/libgomp-plugin.h a6f176f84802a193085fe268e0371f27 libgomp/libgomp.h ! 3e295ee24e52e18f097cc6532c91d035 libgomp/libgomp.info 9a1ab09c02391af1c95e6d63cb8eb499 libgomp/libgomp.map 8b2aa50aecad82171348a6918309afd6 libgomp/libgomp.spec.in c2311b843993357e9da9e17fa98bc7dd libgomp/libgomp.texi --- 64588,64594 ---- baa1c2b75501adfb0908cb243d1945bf libgomp/libgomp-plugin.c c1cee0b720173c688c10b339a6bb8ff2 libgomp/libgomp-plugin.h a6f176f84802a193085fe268e0371f27 libgomp/libgomp.h ! 585afefcde8db8866e83275b5a325aea libgomp/libgomp.info 9a1ab09c02391af1c95e6d63cb8eb499 libgomp/libgomp.map 8b2aa50aecad82171348a6918309afd6 libgomp/libgomp.spec.in c2311b843993357e9da9e17fa98bc7dd libgomp/libgomp.texi *************** e866d28412e4eb8408a01327be2efe3f libgom *** 64219,64225 **** 585b8f6e8c5649c47c6df61e68218f14 libgomp/plugin/configfrag.ac 06d950c946f31440d506d7242c8c2166 libgomp/plugin/cuda/cuda.h 2e6f32c299188c79ff21617d8251ffec libgomp/plugin/hsa_ext_finalize.h ! c1ea9583b7bded7b803e2bc09a89a9f1 libgomp/plugin/plugin-hsa.c 447a1c3df31de266ea9028e832508571 libgomp/plugin/plugin-nvptx.c 4747da336287d1456993122f81ae7d49 libgomp/priority_queue.c 7bf260df8b8d17b4787b66d4ea1be588 libgomp/priority_queue.h --- 64618,64624 ---- 585b8f6e8c5649c47c6df61e68218f14 libgomp/plugin/configfrag.ac 06d950c946f31440d506d7242c8c2166 libgomp/plugin/cuda/cuda.h 2e6f32c299188c79ff21617d8251ffec libgomp/plugin/hsa_ext_finalize.h ! be3f3de8c9228e2bec42c3411f1d94a0 libgomp/plugin/plugin-hsa.c 447a1c3df31de266ea9028e832508571 libgomp/plugin/plugin-nvptx.c 4747da336287d1456993122f81ae7d49 libgomp/priority_queue.c 7bf260df8b8d17b4787b66d4ea1be588 libgomp/priority_queue.h *************** e768743d2af95f59780e3418077b7e1e libgom *** 64728,64733 **** --- 65127,65134 ---- 5996dc15da52a000b77c153bb70588f6 libgomp/testsuite/libgomp.c/pr81687-2.c 4066b4a4600721101ac384b659311782 libgomp/testsuite/libgomp.c/pr81875.c ed00c0e197dcbbf46f44ea320b473f78 libgomp/testsuite/libgomp.c/pr86660.c + 98b922b1cdf2f28ae03ab1ce3c81629a libgomp/testsuite/libgomp.c/pr89002.c + c809670e9df5e9371adcd7582c352fe5 libgomp/testsuite/libgomp.c/pr90811.c 2a0a447db3ae892c0c62b0136b00360e libgomp/testsuite/libgomp.c/priority.c ea7c9e74bda402b1663a903b26400fab libgomp/testsuite/libgomp.c/private-1.c a594cebdf052900dd0c8792068e14d85 libgomp/testsuite/libgomp.c/reduction-1.c *************** d2feeae17acfcc522ce8d197f56a5e6c libgom *** 65478,65484 **** d3f9f8b453576b8a24f3f2db4ad0cbe2 libgomp/testsuite/libgomp.oacc-fortran/subarrays-2.f90 97895ee7fdb38ab486cfd464bb975de0 libgomp/testsuite/libgomp.oacc-fortran/update-1.f90 5e70f54ed74527f5e04379413bff932f libgomp/work.c ! 6e4d2f59b12b0afc2924796f2114c235 libhsail-rt/ChangeLog 9147b482b39962a71e580b4a8265285e libhsail-rt/Makefile.am a38674477ad0a784b375b84f710eb630 libhsail-rt/Makefile.in de97a355fadb5753d182cbcf06b1b33a libhsail-rt/README --- 65879,65885 ---- d3f9f8b453576b8a24f3f2db4ad0cbe2 libgomp/testsuite/libgomp.oacc-fortran/subarrays-2.f90 97895ee7fdb38ab486cfd464bb975de0 libgomp/testsuite/libgomp.oacc-fortran/update-1.f90 5e70f54ed74527f5e04379413bff932f libgomp/work.c ! 34bbb9ba9b445bc5afa5c8c532a052a8 libhsail-rt/ChangeLog 9147b482b39962a71e580b4a8265285e libhsail-rt/Makefile.am a38674477ad0a784b375b84f710eb630 libhsail-rt/Makefile.in de97a355fadb5753d182cbcf06b1b33a libhsail-rt/README *************** b8290f5231ea78d8acee7c12d03f21e2 libhsa *** 65505,65511 **** ef9f05873915c22cae79ef5545355353 libhsail-rt/target-config.h.in 99c2e5e712b990ee07be10f53e41f3fb libiberty/.gitignore a916467b91076e631dd8edb7424769c7 libiberty/COPYING.LIB ! 7e7083fd345acc00708158f3d4b9cf54 libiberty/ChangeLog 347c31392973de6a4872d540c1718dc1 libiberty/ChangeLog.jit 989d73ea8d6c7734f2cd7fc2f6a08ee9 libiberty/Makefile.in c68dbf7834af4281ebd84caa3fd54680 libiberty/README --- 65906,65912 ---- ef9f05873915c22cae79ef5545355353 libhsail-rt/target-config.h.in 99c2e5e712b990ee07be10f53e41f3fb libiberty/.gitignore a916467b91076e631dd8edb7424769c7 libiberty/COPYING.LIB ! 421f0938f922c4dcf4983cbac9dfacd3 libiberty/ChangeLog 347c31392973de6a4872d540c1718dc1 libiberty/ChangeLog.jit 989d73ea8d6c7734f2cd7fc2f6a08ee9 libiberty/Makefile.in c68dbf7834af4281ebd84caa3fd54680 libiberty/README *************** f6765318368cab39cc79c18f62fa33e9 libibe *** 65610,65616 **** 284bb7a096480b355b75c337086220a2 libiberty/sigsetmask.c 2763235b9bd9c1668e1e0d33aff2a9ad libiberty/simple-object-coff.c 548a3abc3aada0669844c73c5dd81a43 libiberty/simple-object-common.h ! 0546f7eb030a4e020eb090d2654f40d3 libiberty/simple-object-elf.c 71e5a45dff3b38310e4589e7632e129b libiberty/simple-object-mach-o.c 641fa953d98254c3ce582eb2751c02a9 libiberty/simple-object-xcoff.c 7775c4c6cb8717ea02fe1ff30b592efd libiberty/simple-object.c --- 66011,66017 ---- 284bb7a096480b355b75c337086220a2 libiberty/sigsetmask.c 2763235b9bd9c1668e1e0d33aff2a9ad libiberty/simple-object-coff.c 548a3abc3aada0669844c73c5dd81a43 libiberty/simple-object-common.h ! 2025014cbd0261595757d948a55e364f libiberty/simple-object-elf.c 71e5a45dff3b38310e4589e7632e129b libiberty/simple-object-mach-o.c 641fa953d98254c3ce582eb2751c02a9 libiberty/simple-object-xcoff.c 7775c4c6cb8717ea02fe1ff30b592efd libiberty/simple-object.c *************** b2c289eb14e9197dcad172f3acba12b7 libibe *** 65669,65675 **** 6f774a92661ca4a067f1691a7925524b libiberty/xstrerror.c 1fba1d2c7e578bb603294d1d38b15e6e libiberty/xstrndup.c 5b461b93e0d400569656cf150a9458e8 libiberty/xvasprintf.c ! ac65bd69b0d397400c79a60ca6cff1c6 libitm/ChangeLog f0841cbe677cca223ebc3864c6840fb3 libitm/Makefile.am e134b04c0dc26da6f5a6948763a388a8 libitm/Makefile.in 02cde8e370b6e6440c462cbdb510ad9c libitm/aatree.cc --- 66070,66076 ---- 6f774a92661ca4a067f1691a7925524b libiberty/xstrerror.c 1fba1d2c7e578bb603294d1d38b15e6e libiberty/xstrndup.c 5b461b93e0d400569656cf150a9458e8 libiberty/xvasprintf.c ! d6e4db17857c0262dc82cccf3f6ee5c3 libitm/ChangeLog f0841cbe677cca223ebc3864c6840fb3 libitm/Makefile.am e134b04c0dc26da6f5a6948763a388a8 libitm/Makefile.in 02cde8e370b6e6440c462cbdb510ad9c libitm/aatree.cc *************** f67878f396134c91a4c632f1be972ce9 libitm *** 65709,65718 **** efbdb4f85982b32e8e582c7c497e8d76 libitm/config/posix/rwlock.cc 5cecaaca1be7dc9b55d6ae92bb98cb42 libitm/config/posix/rwlock.h 8c9c5d864fc9222b47a384c7f5dbf42d libitm/config/powerpc/sjlj.S ! fe0057e50840b9bd142b6c7c449177d3 libitm/config/powerpc/target.h e6dd7887eca324b33ce352a484dcb529 libitm/config/s390/sjlj.S febc41fa9e5ca40ebce8f814dea87987 libitm/config/s390/target.h ! 67d6fd1fc2c51312b0d9976cab5a1c5c libitm/config/sh/sjlj.S 91a7e4dba153bf2da8cd626b8d7f941e libitm/config/sh/target.h dc45f4a866a45871133f3247e618bc3e libitm/config/sparc/sjlj.S efede9a1ebe50031d7f84845f28058b5 libitm/config/sparc/target.h --- 66110,66119 ---- efbdb4f85982b32e8e582c7c497e8d76 libitm/config/posix/rwlock.cc 5cecaaca1be7dc9b55d6ae92bb98cb42 libitm/config/posix/rwlock.h 8c9c5d864fc9222b47a384c7f5dbf42d libitm/config/powerpc/sjlj.S ! 964f1bfb5c11e3334198ac752f5467cf libitm/config/powerpc/target.h e6dd7887eca324b33ce352a484dcb529 libitm/config/s390/sjlj.S febc41fa9e5ca40ebce8f814dea87987 libitm/config/s390/target.h ! 3b4b56d089822ad1956b2e7af0529b5e libitm/config/sh/sjlj.S 91a7e4dba153bf2da8cd626b8d7f941e libitm/config/sh/target.h dc45f4a866a45871133f3247e618bc3e libitm/config/sparc/sjlj.S efede9a1ebe50031d7f84845f28058b5 libitm/config/sparc/target.h *************** cdbde62e85c45821e7d0e7542ea9e4b5 libitm *** 65727,65733 **** 92c8aa2e676e6aad3b45ee3c79ce4f48 libitm/dispatch.h ce09bec8584efd1948a6896224aaff53 libitm/eh_cpp.cc ced7d40fe3094446e51c1b8cf40d0f0a libitm/libitm.h ! 12701d0a1ec002ae98c30c688e2ae201 libitm/libitm.info 0c43820b921ecdbe9d98f068100e716a libitm/libitm.map ea467d7117853d139bb288ab75261139 libitm/libitm.spec.in dc401c868192cd583b6851a8f33879d8 libitm/libitm.texi --- 66128,66134 ---- 92c8aa2e676e6aad3b45ee3c79ce4f48 libitm/dispatch.h ce09bec8584efd1948a6896224aaff53 libitm/eh_cpp.cc ced7d40fe3094446e51c1b8cf40d0f0a libitm/libitm.h ! 0ff24b6df5a5e60f482a159d1c564714 libitm/libitm.info 0c43820b921ecdbe9d98f068100e716a libitm/libitm.map ea467d7117853d139bb288ab75261139 libitm/libitm.spec.in dc401c868192cd583b6851a8f33879d8 libitm/libitm.texi *************** b4e503ecfdccc9f13da8f73eeb6f23a9 libitm *** 65772,65778 **** ef24198422c19f99b0c41be6a16f7081 libitm/testsuite/libitm.c/txrelease.c 2fde3d4b9799cb5c947aa18d56b45a58 libitm/useraction.cc 800898e382995b27db1e8e5415e383d5 libitm/util.cc ! deab9acfa7782ee31714ba4273fa4c36 libmpx/ChangeLog 08c39b0de69ded1b0ec0d079e8ffa278 libmpx/Makefile.am d0a1d026cd869756809cfc7e163653fb libmpx/Makefile.in 9883ed42b491d8aea83fdde90561cf2a libmpx/acinclude.m4 --- 66173,66179 ---- ef24198422c19f99b0c41be6a16f7081 libitm/testsuite/libitm.c/txrelease.c 2fde3d4b9799cb5c947aa18d56b45a58 libitm/useraction.cc 800898e382995b27db1e8e5415e383d5 libitm/util.cc ! 179c2b3e6112aabd2cc9d8424ea6c31f libmpx/ChangeLog 08c39b0de69ded1b0ec0d079e8ffa278 libmpx/Makefile.am d0a1d026cd869756809cfc7e163653fb libmpx/Makefile.in 9883ed42b491d8aea83fdde90561cf2a libmpx/acinclude.m4 *************** abb9c0882fb921e70c77607151719c9d libmpx *** 65795,65801 **** e7c62aca341ea472234d7cb0bc4af328 libmpx/mpxwrap/libmpxwrappers.map 240daa7f37ceeb22e331595ac7363fe8 libmpx/mpxwrap/libtool-version 84b2ae6cc72d1bc6af32bbf75fdf747b libmpx/mpxwrap/mpx_wrappers.c ! a17f0703ce95c504322bc1c6b553c813 libobjc/ChangeLog b2cf3adfbdbae80e35d96ff569e9f93a libobjc/Makefile.in ca9308f2e96106ba49c888b75644c31a libobjc/NXConstStr.m 8b730dbe3083b0ce8de23dba63e4345d libobjc/Object.m --- 66196,66202 ---- e7c62aca341ea472234d7cb0bc4af328 libmpx/mpxwrap/libmpxwrappers.map 240daa7f37ceeb22e331595ac7363fe8 libmpx/mpxwrap/libtool-version 84b2ae6cc72d1bc6af32bbf75fdf747b libmpx/mpxwrap/mpx_wrappers.c ! bbb0baa907f4386d5933d635072584ea libobjc/ChangeLog b2cf3adfbdbae80e35d96ff569e9f93a libobjc/Makefile.in ca9308f2e96106ba49c888b75644c31a libobjc/NXConstStr.m 8b730dbe3083b0ce8de23dba63e4345d libobjc/Object.m *************** ed8e260d84d74bdae710d754280f305d libobj *** 65852,65858 **** b5a7e82ec7b4fc9af8de51779c12430b libobjc/selector.c 031774b1d0af62af9c73b941c33256c5 libobjc/sendmsg.c 471a0873da510e7cdaf8924b3babf10c libobjc/thr.c ! 94f5babdcc766274127622166c72c65c liboffloadmic/ChangeLog 04abd6719c66f08c91fbd9f04b69d3f5 liboffloadmic/Makefile.am 30b43aa8aba9a4769f58028e2f0424f7 liboffloadmic/Makefile.in 49cb389d7dff64b95e25b4d7e85c7ecf liboffloadmic/aclocal.m4 --- 66253,66259 ---- b5a7e82ec7b4fc9af8de51779c12430b libobjc/selector.c 031774b1d0af62af9c73b941c33256c5 libobjc/sendmsg.c 471a0873da510e7cdaf8924b3babf10c libobjc/thr.c ! 0ce26b1e042656df20c6b6f26938ec20 liboffloadmic/ChangeLog 04abd6719c66f08c91fbd9f04b69d3f5 liboffloadmic/Makefile.am 30b43aa8aba9a4769f58028e2f0424f7 liboffloadmic/Makefile.in 49cb389d7dff64b95e25b4d7e85c7ecf liboffloadmic/aclocal.m4 *************** b1def68202639bd452fb59aea3371fe4 liboff *** 65941,65947 **** cc603cdf253cc686bfcee192bb7630df liboffloadmic/runtime/orsl-lite/lib/orsl-lite.c dff5c8575c49d6aa71e549b0fa021479 liboffloadmic/runtime/orsl-lite/version.txt a916467b91076e631dd8edb7424769c7 libquadmath/COPYING.LIB ! 26f5ac4572b0a31003c8855fa9e897f6 libquadmath/ChangeLog e1106736861aae37a68244254f00f3fd libquadmath/Makefile.am 089aca42b8f31c3920925f611462bc81 libquadmath/Makefile.in 4c8b4478a1031d129e7cc6b341876b99 libquadmath/acinclude.m4 --- 66342,66348 ---- cc603cdf253cc686bfcee192bb7630df liboffloadmic/runtime/orsl-lite/lib/orsl-lite.c dff5c8575c49d6aa71e549b0fa021479 liboffloadmic/runtime/orsl-lite/version.txt a916467b91076e631dd8edb7424769c7 libquadmath/COPYING.LIB ! cf3b26e58bf5bb8f0235543172bab769 libquadmath/ChangeLog e1106736861aae37a68244254f00f3fd libquadmath/Makefile.am 089aca42b8f31c3920925f611462bc81 libquadmath/Makefile.in 4c8b4478a1031d129e7cc6b341876b99 libquadmath/acinclude.m4 *************** b575232932aeb139e780664720bc8695 libqua *** 65949,65955 **** bf09ede5c6d78e3d132bde0f933590d8 libquadmath/config.h.in a9e3bede07e3cdcf6cfc1898f3da490d libquadmath/configure 84f1e84be7df00cfbeab19204eaf8dd5 libquadmath/configure.ac ! 47b4fc073416da02541f6a7ea96820bd libquadmath/libquadmath.info 2cb034bf3212dff9fd07056661589189 libquadmath/libquadmath.texi 77280bb7ee423875e03d9c0d34527df6 libquadmath/libtool-version f44065462735b4699d44588271a5f09a libquadmath/math/acoshq.c --- 66350,66356 ---- bf09ede5c6d78e3d132bde0f933590d8 libquadmath/config.h.in a9e3bede07e3cdcf6cfc1898f3da490d libquadmath/configure 84f1e84be7df00cfbeab19204eaf8dd5 libquadmath/configure.ac ! 1e6225b75c519fcdfb898f7fb38bf14d libquadmath/libquadmath.info 2cb034bf3212dff9fd07056661589189 libquadmath/libquadmath.texi 77280bb7ee423875e03d9c0d34527df6 libquadmath/libtool-version f44065462735b4699d44588271a5f09a libquadmath/math/acoshq.c *************** e766022f8615b72cbc38335d262e9d3d libqua *** 66073,66079 **** a81cc82679e80c86cfbd5575867450d0 libquadmath/strtod/strtod_l.c da808e110fc09ebd41ebd405790a70df libquadmath/strtod/strtoflt128.c d15a18f7c46ba2add6148edc5b7563c0 libquadmath/strtod/tens_in_limb.c ! c0619b5cd664726a4af7facbfc639c49 libsanitizer/ChangeLog c5b0b63dd90ad073654139697e69d009 libsanitizer/HOWTO_MERGE 0249c37748936faf5b1efd5789587909 libsanitizer/LICENSE.TXT f11d8e68ccf5dbd2281333342f0cea86 libsanitizer/LOCAL_PATCHES --- 66474,66480 ---- a81cc82679e80c86cfbd5575867450d0 libquadmath/strtod/strtod_l.c da808e110fc09ebd41ebd405790a70df libquadmath/strtod/strtoflt128.c d15a18f7c46ba2add6148edc5b7563c0 libquadmath/strtod/tens_in_limb.c ! 5b207b765e2d166459a3ebecde945573 libsanitizer/ChangeLog c5b0b63dd90ad073654139697e69d009 libsanitizer/HOWTO_MERGE 0249c37748936faf5b1efd5789587909 libsanitizer/LICENSE.TXT f11d8e68ccf5dbd2281333342f0cea86 libsanitizer/LOCAL_PATCHES *************** f07ab1da60e7fd7f3d27a1960d25e06c libsan *** 66392,66398 **** 0f33fad437a0fa30b1527f8f957011d6 libsanitizer/ubsan/ubsan_type_hash_win.cc 8b063f15d2aa59cd7d3a2c835729e42d libsanitizer/ubsan/ubsan_value.cc 735246869fac0a1e63b5d9c72143e63a libsanitizer/ubsan/ubsan_value.h ! c8d1e6752587c62775e6e19686b63ede libssp/ChangeLog 776e0645b365526b37a8934f921f91b6 libssp/Makefile.am 4ca3c95d4bc6b9edac706fca73c37993 libssp/Makefile.in b0548e1d34696c0fb30573ffde20c761 libssp/aclocal.m4 --- 66793,66799 ---- 0f33fad437a0fa30b1527f8f957011d6 libsanitizer/ubsan/ubsan_type_hash_win.cc 8b063f15d2aa59cd7d3a2c835729e42d libsanitizer/ubsan/ubsan_value.cc 735246869fac0a1e63b5d9c72143e63a libsanitizer/ubsan/ubsan_value.h ! 602260d75553d47a2590df0f9ccfac6c libssp/ChangeLog 776e0645b365526b37a8934f921f91b6 libssp/Makefile.am 4ca3c95d4bc6b9edac706fca73c37993 libssp/Makefile.in b0548e1d34696c0fb30573ffde20c761 libssp/aclocal.m4 *************** b1831173424b3bacbedae40d56213c53 libssp *** 66421,66427 **** 4849bcc282291903a5ab2633972a6f59 libssp/strncpy-chk.c 8f39faa199e6457e41dd4673ab8fa2b5 libssp/vsnprintf-chk.c b432716a66578ff7c5e7f9c92bc30e25 libssp/vsprintf-chk.c ! 1370feea2f2bd78c85c899607b484a4e libstdc++-v3/ChangeLog 7aa6c40440a44fcf5ec94c066160c2f8 libstdc++-v3/ChangeLog-1998 7aff86600b6a1ed3fa87305075a92db0 libstdc++-v3/ChangeLog-1999 a6f28e8fc9bb07696a9e068b439a3a87 libstdc++-v3/ChangeLog-2000 --- 66822,66828 ---- 4849bcc282291903a5ab2633972a6f59 libssp/strncpy-chk.c 8f39faa199e6457e41dd4673ab8fa2b5 libssp/vsnprintf-chk.c b432716a66578ff7c5e7f9c92bc30e25 libssp/vsprintf-chk.c ! 241f532a2780f964ed16c2cbcef0f646 libstdc++-v3/ChangeLog 7aa6c40440a44fcf5ec94c066160c2f8 libstdc++-v3/ChangeLog-1998 7aff86600b6a1ed3fa87305075a92db0 libstdc++-v3/ChangeLog-1999 a6f28e8fc9bb07696a9e068b439a3a87 libstdc++-v3/ChangeLog-2000 *************** b331fae97e334afde1bd5fa125610458 libstd *** 66442,66450 **** 8a8f082302e2eb659ac02e5036cccc4a libstdc++-v3/ChangeLog-2015 7bafaec51877b01c0fa5a1c20b004559 libstdc++-v3/ChangeLog-2016 d2f55cdfcfc41eedd57e16a617c4775f libstdc++-v3/Makefile.am ! 9a8bbe5f81bba136c3ff5f5aedfb43a4 libstdc++-v3/Makefile.in f372af73db4ac0ad88e43199e1f29e08 libstdc++-v3/README ! 38c293579652d3f2db3c58ff6cada591 libstdc++-v3/acinclude.m4 2a88f1fcc47abc6e54fb44954da2919a libstdc++-v3/aclocal.m4 5274c5690532e1702c242c0788829b35 libstdc++-v3/config.h.in 1c93b343ca452ad7c87f5c1352794032 libstdc++-v3/config/abi/compatibility.h --- 66843,66851 ---- 8a8f082302e2eb659ac02e5036cccc4a libstdc++-v3/ChangeLog-2015 7bafaec51877b01c0fa5a1c20b004559 libstdc++-v3/ChangeLog-2016 d2f55cdfcfc41eedd57e16a617c4775f libstdc++-v3/Makefile.am ! 5c69abb94b9cb34786e65a1c591ea650 libstdc++-v3/Makefile.in f372af73db4ac0ad88e43199e1f29e08 libstdc++-v3/README ! 5f19a70f16abc54057bc514426d73a70 libstdc++-v3/acinclude.m4 2a88f1fcc47abc6e54fb44954da2919a libstdc++-v3/aclocal.m4 5274c5690532e1702c242c0788829b35 libstdc++-v3/config.h.in 1c93b343ca452ad7c87f5c1352794032 libstdc++-v3/config/abi/compatibility.h *************** c7c82b7fdf11e423ccdc173143db93aa libstd *** 66634,66645 **** 7edc1c806579bdda295225b37ff9482c libstdc++-v3/config/os/vxworks/ctype_configure_char.cc 276389a68a2b7b1262605789e5edfa63 libstdc++-v3/config/os/vxworks/ctype_inline.h 70166bc357cec0c671f1d0fb63e68735 libstdc++-v3/config/os/vxworks/os_defines.h ! e10d6b6f24c57de7dd53d5f192f365a0 libstdc++-v3/configure ! 071c824e5b111bdbcec7810c1f50b3e9 libstdc++-v3/configure.ac ! e711fd9f625040036e12e7ec93b06781 libstdc++-v3/configure.host 4ec68ff92a9155b87ed9001a405eead5 libstdc++-v3/crossconfig.m4 ! 4cc1da5a760f3aa03a2af01fa56d6d80 libstdc++-v3/doc/Makefile.am ! 74b2c2379a63ef007e3b81ca6e5ef284 libstdc++-v3/doc/Makefile.in 3f7ff07f68cc7610addc1921bc125548 libstdc++-v3/doc/doxygen/Intro.3 e221bfb1fc340e034b28617e561f131d libstdc++-v3/doc/doxygen/doxygroups.cc 520db39aef0e2a59418132af88b897ed libstdc++-v3/doc/doxygen/mainpage.html --- 67035,67046 ---- 7edc1c806579bdda295225b37ff9482c libstdc++-v3/config/os/vxworks/ctype_configure_char.cc 276389a68a2b7b1262605789e5edfa63 libstdc++-v3/config/os/vxworks/ctype_inline.h 70166bc357cec0c671f1d0fb63e68735 libstdc++-v3/config/os/vxworks/os_defines.h ! a13dc3a205682f6994b50afdf5db3b26 libstdc++-v3/configure ! 70747dca8d89bb5b249304ae14c38bc1 libstdc++-v3/configure.ac ! 011a5e201f8d9c1d58f79a6e76f94900 libstdc++-v3/configure.host 4ec68ff92a9155b87ed9001a405eead5 libstdc++-v3/crossconfig.m4 ! 15c08275d1c3cec487c853edcc66536d libstdc++-v3/doc/Makefile.am ! 44b4485e1ecae56a115ad99652001ee6 libstdc++-v3/doc/Makefile.in 3f7ff07f68cc7610addc1921bc125548 libstdc++-v3/doc/doxygen/Intro.3 e221bfb1fc340e034b28617e561f131d libstdc++-v3/doc/doxygen/doxygroups.cc 520db39aef0e2a59418132af88b897ed libstdc++-v3/doc/doxygen/mainpage.html *************** c7e40c1085e414b3b4d5896db4013205 libstd *** 66757,66763 **** fc2f4ac9d9c05ca8c4dce6b46e259f97 libstdc++-v3/doc/html/manual/debug_mode_semantics.html 33325138d9fa5d5628cdb1dd11cdef77 libstdc++-v3/doc/html/manual/debug_mode_using.html 7bcc35e818f9360d10ecfe70e4dedcc0 libstdc++-v3/doc/html/manual/diagnostics.html ! a9912c2e6de072fc1b2f1794a1b8cd00 libstdc++-v3/doc/html/manual/documentation_hacking.html c472d3d333cea10a613a5177af5b053a libstdc++-v3/doc/html/manual/dynamic_memory.html 55666dfa05ec7aae2596d6968f6fdb38 libstdc++-v3/doc/html/manual/errno.html f5df2458b52ebaa400811787cbf348fa libstdc++-v3/doc/html/manual/ext_algorithms.html --- 67158,67164 ---- fc2f4ac9d9c05ca8c4dce6b46e259f97 libstdc++-v3/doc/html/manual/debug_mode_semantics.html 33325138d9fa5d5628cdb1dd11cdef77 libstdc++-v3/doc/html/manual/debug_mode_using.html 7bcc35e818f9360d10ecfe70e4dedcc0 libstdc++-v3/doc/html/manual/diagnostics.html ! 3ac228300d0a7aab327d6bc17b623c9c libstdc++-v3/doc/html/manual/documentation_hacking.html c472d3d333cea10a613a5177af5b053a libstdc++-v3/doc/html/manual/dynamic_memory.html 55666dfa05ec7aae2596d6968f6fdb38 libstdc++-v3/doc/html/manual/errno.html f5df2458b52ebaa400811787cbf348fa libstdc++-v3/doc/html/manual/ext_algorithms.html *************** c7ffc4ff6594f9e3dfeec284f8f782bd libstd *** 66786,66792 **** 8ec7c1b7fc36b72f1bb9ddc0e939bb26 libstdc++-v3/doc/html/manual/license.html 69cfb7ea1d69c38e3d673ba9f4a7c3ba libstdc++-v3/doc/html/manual/localization.html 9d7282a3a92209b987a91b15973414af libstdc++-v3/doc/html/manual/make.html ! 5130ed24a3f0230b3b8300ed3de960cc libstdc++-v3/doc/html/manual/memory.html 4970f8a0270bd70ee4f48d19c4782afc libstdc++-v3/doc/html/manual/mt_allocator.html 0ade9da6c1a80afa0f9e498caea2faf9 libstdc++-v3/doc/html/manual/mt_allocator_design.html 6cedc0933aa9ffe31dbea517db997b9e libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html --- 67187,67193 ---- 8ec7c1b7fc36b72f1bb9ddc0e939bb26 libstdc++-v3/doc/html/manual/license.html 69cfb7ea1d69c38e3d673ba9f4a7c3ba libstdc++-v3/doc/html/manual/localization.html 9d7282a3a92209b987a91b15973414af libstdc++-v3/doc/html/manual/make.html ! c3177ad892394c3c73d9031f9dfdf2de libstdc++-v3/doc/html/manual/memory.html 4970f8a0270bd70ee4f48d19c4782afc libstdc++-v3/doc/html/manual/mt_allocator.html 0ade9da6c1a80afa0f9e498caea2faf9 libstdc++-v3/doc/html/manual/mt_allocator_design.html 6cedc0933aa9ffe31dbea517db997b9e libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html *************** dc012f6bbeb24332ca023dc15d6da9cf libstd *** 66816,66822 **** 94a606d009c84c4160e2b0557563c305 libstdc++-v3/doc/html/manual/source_code_style.html f875f3f4cddfe4fee6aff2308ccb4563 libstdc++-v3/doc/html/manual/source_design_notes.html f87298c8974ee33f2519348430b786ae libstdc++-v3/doc/html/manual/source_organization.html ! 9d77bbb369aed37360de00b460c173f0 libstdc++-v3/doc/html/manual/status.html 9e6cce6bed38f62648e12eb77363d1fc libstdc++-v3/doc/html/manual/std_contents.html dbb5f81a9e8864374fbb835eaa4e8b0d libstdc++-v3/doc/html/manual/streambufs.html 2eddc447009e3c845b6489be7dc2a11a libstdc++-v3/doc/html/manual/strings.html --- 67217,67223 ---- 94a606d009c84c4160e2b0557563c305 libstdc++-v3/doc/html/manual/source_code_style.html f875f3f4cddfe4fee6aff2308ccb4563 libstdc++-v3/doc/html/manual/source_design_notes.html f87298c8974ee33f2519348430b786ae libstdc++-v3/doc/html/manual/source_organization.html ! 5cfe5301b165e9e2062264cbf661475a libstdc++-v3/doc/html/manual/status.html 9e6cce6bed38f62648e12eb77363d1fc libstdc++-v3/doc/html/manual/std_contents.html dbb5f81a9e8864374fbb835eaa4e8b0d libstdc++-v3/doc/html/manual/streambufs.html 2eddc447009e3c845b6489be7dc2a11a libstdc++-v3/doc/html/manual/strings.html *************** f63bfdc03ba2b82c74864f02206d7c52 libstd *** 67022,67028 **** df705f3839120dcb896e9839cf3404d0 libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png 59673c4ec83a73f635bf37dd02ad3ae1 libstdc++-v3/doc/xml/manual/abi.xml 6a68f07a8b8abd9e65846432ed52d646 libstdc++-v3/doc/xml/manual/algorithms.xml ! 832fb85e9dd8e40662f3abe5b0f7b070 libstdc++-v3/doc/xml/manual/allocator.xml b06c7d4934846623f43ca218d68492c7 libstdc++-v3/doc/xml/manual/appendix_contributing.xml 074e722c08588c6474b7eb1dc527bd89 libstdc++-v3/doc/xml/manual/appendix_free.xml fddfbac311009ebd3056c4edd7ee522a libstdc++-v3/doc/xml/manual/appendix_porting.xml --- 67423,67429 ---- df705f3839120dcb896e9839cf3404d0 libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png 59673c4ec83a73f635bf37dd02ad3ae1 libstdc++-v3/doc/xml/manual/abi.xml 6a68f07a8b8abd9e65846432ed52d646 libstdc++-v3/doc/xml/manual/algorithms.xml ! 982605b324ce3fea88249425bd91cb27 libstdc++-v3/doc/xml/manual/allocator.xml b06c7d4934846623f43ca218d68492c7 libstdc++-v3/doc/xml/manual/appendix_contributing.xml 074e722c08588c6474b7eb1dc527bd89 libstdc++-v3/doc/xml/manual/appendix_free.xml fddfbac311009ebd3056c4edd7ee522a libstdc++-v3/doc/xml/manual/appendix_porting.xml *************** f13297d479322bdb5fffc34f5fb1c5c8 libstd *** 67040,67046 **** e7a9590bfa29f2842a602c7d9281e8df libstdc++-v3/doc/xml/manual/debug.xml 4ed2cb587373d3029a0d949ce37ae1f2 libstdc++-v3/doc/xml/manual/debug_mode.xml f0323e43ff8fc1ca28dcdfae61b6cb19 libstdc++-v3/doc/xml/manual/diagnostics.xml ! 099bda8905d39fc07d87152927c32492 libstdc++-v3/doc/xml/manual/documentation_hacking.xml beaf7f0a49ee4f9a868913839fb3e8b4 libstdc++-v3/doc/xml/manual/evolution.xml d700263acf88b675c68d1cbe9dadea6b libstdc++-v3/doc/xml/manual/extensions.xml 26083dec441281888a23365de5567180 libstdc++-v3/doc/xml/manual/internals.xml --- 67441,67447 ---- e7a9590bfa29f2842a602c7d9281e8df libstdc++-v3/doc/xml/manual/debug.xml 4ed2cb587373d3029a0d949ce37ae1f2 libstdc++-v3/doc/xml/manual/debug_mode.xml f0323e43ff8fc1ca28dcdfae61b6cb19 libstdc++-v3/doc/xml/manual/diagnostics.xml ! f7808f72b29cb498dbea75728cfb394f libstdc++-v3/doc/xml/manual/documentation_hacking.xml beaf7f0a49ee4f9a868913839fb3e8b4 libstdc++-v3/doc/xml/manual/evolution.xml d700263acf88b675c68d1cbe9dadea6b libstdc++-v3/doc/xml/manual/extensions.xml 26083dec441281888a23365de5567180 libstdc++-v3/doc/xml/manual/internals.xml *************** e2b6426957c60c385c84e7b5143089ce libstd *** 67057,67068 **** 507d70152c09c65d4d3ef641eb13a6cb libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml 4e49a8e041ae187579c7683d4b840fc4 libstdc++-v3/doc/xml/manual/prerequisites.xml 5cca2fce9e94a0243e546e0c59792f87 libstdc++-v3/doc/xml/manual/profile_mode.xml ! d86ab4ddaebc9752d3a71f23cc8879cb libstdc++-v3/doc/xml/manual/shared_ptr.xml 8b2ba528aeefb3571a63fba077b46ee1 libstdc++-v3/doc/xml/manual/spine.xml c6484730208a3a65702e6f804f7d9e61 libstdc++-v3/doc/xml/manual/status_cxx1998.xml a9d987cf0583e51ad9eb6ac589ca5e8e libstdc++-v3/doc/xml/manual/status_cxx2011.xml 72b9bc0f2799920c3d2caf7a550686f5 libstdc++-v3/doc/xml/manual/status_cxx2014.xml ! 7e9469d9ecdca33ba1c50fd701a52a19 libstdc++-v3/doc/xml/manual/status_cxx2017.xml 3c72998c4574690fac280c058a0db757 libstdc++-v3/doc/xml/manual/status_cxxis29124.xml 6edaab9973b0acf56c2b1cd715448e0f libstdc++-v3/doc/xml/manual/status_cxxtr1.xml 0acb29d13accb1b483e4f108b5a96714 libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml --- 67458,67469 ---- 507d70152c09c65d4d3ef641eb13a6cb libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml 4e49a8e041ae187579c7683d4b840fc4 libstdc++-v3/doc/xml/manual/prerequisites.xml 5cca2fce9e94a0243e546e0c59792f87 libstdc++-v3/doc/xml/manual/profile_mode.xml ! d006612b2e21ab181c25bc88697b4543 libstdc++-v3/doc/xml/manual/shared_ptr.xml 8b2ba528aeefb3571a63fba077b46ee1 libstdc++-v3/doc/xml/manual/spine.xml c6484730208a3a65702e6f804f7d9e61 libstdc++-v3/doc/xml/manual/status_cxx1998.xml a9d987cf0583e51ad9eb6ac589ca5e8e libstdc++-v3/doc/xml/manual/status_cxx2011.xml 72b9bc0f2799920c3d2caf7a550686f5 libstdc++-v3/doc/xml/manual/status_cxx2014.xml ! 7b430ac3d51cee008f9955501098344c libstdc++-v3/doc/xml/manual/status_cxx2017.xml 3c72998c4574690fac280c058a0db757 libstdc++-v3/doc/xml/manual/status_cxxis29124.xml 6edaab9973b0acf56c2b1cd715448e0f libstdc++-v3/doc/xml/manual/status_cxxtr1.xml 0acb29d13accb1b483e4f108b5a96714 libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml *************** a209e7576dd578adf52c10796b53c14d libstd *** 67077,67083 **** bd966b4a0df6f2a84f9770525581d45c libstdc++-v3/doc/xsl/customization.xsl.in fa0fbb589f8e3959f474ba45b0758902 libstdc++-v3/fragment.am dbe4925d500ce2e2b22b91ff47f2bc26 libstdc++-v3/include/Makefile.am ! eff13182e73257d5f1f1e2c2aa9f9143 libstdc++-v3/include/Makefile.in fe6c4f9e05006cf7f39ed3b88343c143 libstdc++-v3/include/backward/auto_ptr.h fe61c64d9cd7f5c6403522bb61a6cd7e libstdc++-v3/include/backward/backward_warning.h b6eebaca0721deccbcade8b6a7b3ab28 libstdc++-v3/include/backward/binders.h --- 67478,67484 ---- bd966b4a0df6f2a84f9770525581d45c libstdc++-v3/doc/xsl/customization.xsl.in fa0fbb589f8e3959f474ba45b0758902 libstdc++-v3/fragment.am dbe4925d500ce2e2b22b91ff47f2bc26 libstdc++-v3/include/Makefile.am ! 2546dc0b25cf3cfb711e36ec18d71bfb libstdc++-v3/include/Makefile.in fe6c4f9e05006cf7f39ed3b88343c143 libstdc++-v3/include/backward/auto_ptr.h fe61c64d9cd7f5c6403522bb61a6cd7e libstdc++-v3/include/backward/backward_warning.h b6eebaca0721deccbcade8b6a7b3ab28 libstdc++-v3/include/backward/binders.h *************** c0ad9c1c2e4c5c9d8d0fc56d18d002e5 libstd *** 67099,67112 **** 2f06e59656664c29ba7c61ca91cf1c80 libstdc++-v3/include/bits/boost_concept_check.h 658da65d0ca3addc0639468aa85028e3 libstdc++-v3/include/bits/c++0x_warning.h e5bc0cbeb00714bda8828155b581d299 libstdc++-v3/include/bits/c++config ! b72dad47f655b92d27958e38d076337e libstdc++-v3/include/bits/char_traits.h 4c0d0e0c253cebe08e42643de57ee529 libstdc++-v3/include/bits/codecvt.h fa1dc211040365ce32fb8072dc02a0a6 libstdc++-v3/include/bits/concept_check.h fa188d4b243b1dfce32f81944d80d51d libstdc++-v3/include/bits/cpp_type_traits.h f4addcde213357ae315222fa5aa91686 libstdc++-v3/include/bits/deque.tcc dafd3fc465c26d7ac6cd93a13cb74d4b libstdc++-v3/include/bits/enable_special_members.h bb35bb9eec11f014bff80cd9f4892179 libstdc++-v3/include/bits/forward_list.h ! 7ac7985a1cd1f3d550e52ca1152c1c94 libstdc++-v3/include/bits/forward_list.tcc b47d9c26945986d4fbda1e63c96e7145 libstdc++-v3/include/bits/fstream.tcc f7737ba0b208be376f9d35eb9a375ba5 libstdc++-v3/include/bits/functexcept.h d43a4b92ed291afa6650c89ad083189d libstdc++-v3/include/bits/functional_hash.h --- 67500,67513 ---- 2f06e59656664c29ba7c61ca91cf1c80 libstdc++-v3/include/bits/boost_concept_check.h 658da65d0ca3addc0639468aa85028e3 libstdc++-v3/include/bits/c++0x_warning.h e5bc0cbeb00714bda8828155b581d299 libstdc++-v3/include/bits/c++config ! ffb56a85bfb66a2b11d071117ba2987a libstdc++-v3/include/bits/char_traits.h 4c0d0e0c253cebe08e42643de57ee529 libstdc++-v3/include/bits/codecvt.h fa1dc211040365ce32fb8072dc02a0a6 libstdc++-v3/include/bits/concept_check.h fa188d4b243b1dfce32f81944d80d51d libstdc++-v3/include/bits/cpp_type_traits.h f4addcde213357ae315222fa5aa91686 libstdc++-v3/include/bits/deque.tcc dafd3fc465c26d7ac6cd93a13cb74d4b libstdc++-v3/include/bits/enable_special_members.h bb35bb9eec11f014bff80cd9f4892179 libstdc++-v3/include/bits/forward_list.h ! c091e0bad68dbaf1d25ee2a3ae185ccc libstdc++-v3/include/bits/forward_list.tcc b47d9c26945986d4fbda1e63c96e7145 libstdc++-v3/include/bits/fstream.tcc f7737ba0b208be376f9d35eb9a375ba5 libstdc++-v3/include/bits/functexcept.h d43a4b92ed291afa6650c89ad083189d libstdc++-v3/include/bits/functional_hash.h *************** acbf67f70070c595cc00146e36a0470b libstd *** 67138,67144 **** 5f05adbf6e5443fe09c49513ee53b002 libstdc++-v3/include/bits/predefined_ops.h 7630ce3c939921f65df86d1f0ec8821b libstdc++-v3/include/bits/ptr_traits.h 60e94258f562f81fd5c6853c88584ca3 libstdc++-v3/include/bits/quoted_string.h ! 757d3f223222860e22a69ef508412767 libstdc++-v3/include/bits/random.h 7084b1b66ae4da40a8a444143f7e34bc libstdc++-v3/include/bits/random.tcc f9d10b7496885a8dc97c4235f55aa1fb libstdc++-v3/include/bits/range_access.h 5cce56c9f8def1ffeef357b636554760 libstdc++-v3/include/bits/refwrap.h --- 67539,67545 ---- 5f05adbf6e5443fe09c49513ee53b002 libstdc++-v3/include/bits/predefined_ops.h 7630ce3c939921f65df86d1f0ec8821b libstdc++-v3/include/bits/ptr_traits.h 60e94258f562f81fd5c6853c88584ca3 libstdc++-v3/include/bits/quoted_string.h ! 66f09cf5fb41848606dc74bf787656bc libstdc++-v3/include/bits/random.h 7084b1b66ae4da40a8a444143f7e34bc libstdc++-v3/include/bits/random.tcc f9d10b7496885a8dc97c4235f55aa1fb libstdc++-v3/include/bits/range_access.h 5cce56c9f8def1ffeef357b636554760 libstdc++-v3/include/bits/refwrap.h *************** a2281962b74d61def007f879af3c8f69 libstd *** 67186,67192 **** 2152f683e9aeecb07aa00a6caf0b1efc libstdc++-v3/include/bits/stl_stack.h 06de465b8a7d35370f41ae1af74fc23e libstdc++-v3/include/bits/stl_tempbuf.h 42ec8a81a6cb63b1c0901a86eb7aa05e libstdc++-v3/include/bits/stl_tree.h ! 94fea59d2dd4a97df7c9e729cee69336 libstdc++-v3/include/bits/stl_uninitialized.h 6d0eb254a15a019bb9b09fb2184aae47 libstdc++-v3/include/bits/stl_vector.h 5c8d4f347b1ad81182650cafa36c86a3 libstdc++-v3/include/bits/stream_iterator.h 713b1e5bdcb6ef6d464c3ea068dd957a libstdc++-v3/include/bits/streambuf.tcc --- 67587,67593 ---- 2152f683e9aeecb07aa00a6caf0b1efc libstdc++-v3/include/bits/stl_stack.h 06de465b8a7d35370f41ae1af74fc23e libstdc++-v3/include/bits/stl_tempbuf.h 42ec8a81a6cb63b1c0901a86eb7aa05e libstdc++-v3/include/bits/stl_tree.h ! 8e1cc4effc533c7d9eb6b61f25d0b56f libstdc++-v3/include/bits/stl_uninitialized.h 6d0eb254a15a019bb9b09fb2184aae47 libstdc++-v3/include/bits/stl_vector.h 5c8d4f347b1ad81182650cafa36c86a3 libstdc++-v3/include/bits/stream_iterator.h 713b1e5bdcb6ef6d464c3ea068dd957a libstdc++-v3/include/bits/streambuf.tcc *************** a2281962b74d61def007f879af3c8f69 libstd *** 67194,67200 **** cb8a83c5ea9472d09da0e5010086c772 libstdc++-v3/include/bits/string_view.tcc 5c0c6b845b6e38ab5e22e418aeaee1b0 libstdc++-v3/include/bits/stringfwd.h a9fa84f93a12d008d690fb6c49d037ba libstdc++-v3/include/bits/uniform_int_dist.h ! adba5f5607ae7280594446d19d343436 libstdc++-v3/include/bits/unique_ptr.h 9fdeefdfb754cee8ddf9f72938e83619 libstdc++-v3/include/bits/unordered_map.h 251035abb110ee7968c8eb6fcef6c57a libstdc++-v3/include/bits/unordered_set.h 06758d4fd4602a6706aecc3087b34290 libstdc++-v3/include/bits/uses_allocator.h --- 67595,67601 ---- cb8a83c5ea9472d09da0e5010086c772 libstdc++-v3/include/bits/string_view.tcc 5c0c6b845b6e38ab5e22e418aeaee1b0 libstdc++-v3/include/bits/stringfwd.h a9fa84f93a12d008d690fb6c49d037ba libstdc++-v3/include/bits/uniform_int_dist.h ! f1e853d23c23d1b85239b4155b60f018 libstdc++-v3/include/bits/unique_ptr.h 9fdeefdfb754cee8ddf9f72938e83619 libstdc++-v3/include/bits/unordered_map.h 251035abb110ee7968c8eb6fcef6c57a libstdc++-v3/include/bits/unordered_set.h 06758d4fd4602a6706aecc3087b34290 libstdc++-v3/include/bits/uses_allocator.h *************** ba36c45972020046e49921dfbecb5fcf libstd *** 67328,67340 **** a0c64ece84833a489daf0599b8c12bde libstdc++-v3/include/decimal/decimal 5fee6bc050dadf0c18b268666cda2299 libstdc++-v3/include/decimal/decimal.h c6af188ac637ee68342206a20b2ecade libstdc++-v3/include/experimental/algorithm ! 3e86743b0fd5b23ec322be057ca1977d libstdc++-v3/include/experimental/any 97ef87034a82d57ce1e041bda1af44f2 libstdc++-v3/include/experimental/array 8b92264b24185ec530677d54d3582fef libstdc++-v3/include/experimental/bits/erase_if.h e490c2aee0f90a78bec2ef2aecb879e8 libstdc++-v3/include/experimental/bits/fs_dir.h 7642f1f8c8f75a4735190cddb44dfd35 libstdc++-v3/include/experimental/bits/fs_fwd.h be0ce778892c4b03eb34d95a395c9372 libstdc++-v3/include/experimental/bits/fs_ops.h ! 6d9d6185c37190bf0772ef6d6bbf6fcb libstdc++-v3/include/experimental/bits/fs_path.h 1070337cfcaf12abe63b00de20da0953 libstdc++-v3/include/experimental/bits/lfts_config.h e56a52fe8ef5573cf7a80cf57c16704e libstdc++-v3/include/experimental/bits/shared_ptr.h e1ced563ee42440edddd51bc80d2c982 libstdc++-v3/include/experimental/bits/string_view.tcc --- 67729,67741 ---- a0c64ece84833a489daf0599b8c12bde libstdc++-v3/include/decimal/decimal 5fee6bc050dadf0c18b268666cda2299 libstdc++-v3/include/decimal/decimal.h c6af188ac637ee68342206a20b2ecade libstdc++-v3/include/experimental/algorithm ! 3aece68a3f8a150d85a06199e1b19c10 libstdc++-v3/include/experimental/any 97ef87034a82d57ce1e041bda1af44f2 libstdc++-v3/include/experimental/array 8b92264b24185ec530677d54d3582fef libstdc++-v3/include/experimental/bits/erase_if.h e490c2aee0f90a78bec2ef2aecb879e8 libstdc++-v3/include/experimental/bits/fs_dir.h 7642f1f8c8f75a4735190cddb44dfd35 libstdc++-v3/include/experimental/bits/fs_fwd.h be0ce778892c4b03eb34d95a395c9372 libstdc++-v3/include/experimental/bits/fs_ops.h ! ad5fd4f58a14f7f63c97796b2f909ae3 libstdc++-v3/include/experimental/bits/fs_path.h 1070337cfcaf12abe63b00de20da0953 libstdc++-v3/include/experimental/bits/lfts_config.h e56a52fe8ef5573cf7a80cf57c16704e libstdc++-v3/include/experimental/bits/shared_ptr.h e1ced563ee42440edddd51bc80d2c982 libstdc++-v3/include/experimental/bits/string_view.tcc *************** e16db8de38cec244e86c98697b486c67 libstd *** 67360,67366 **** c47b8aab2dedf84e028483489a15bf3f libstdc++-v3/include/experimental/string_view b58431501fd742d4746f706f1f216690 libstdc++-v3/include/experimental/system_error 2fcf247a9917631383ce599abc9e54c2 libstdc++-v3/include/experimental/tuple ! 4047f7383537106a63265c931c1a9e8f libstdc++-v3/include/experimental/type_traits 8fe8262ce24af317300b0a0b7f7eeb19 libstdc++-v3/include/experimental/unordered_map a989f67f3e125816d1d1c6c383f7c7eb libstdc++-v3/include/experimental/unordered_set 6a5eca317f55b6e477f8f5b0db337890 libstdc++-v3/include/experimental/utility --- 67761,67767 ---- c47b8aab2dedf84e028483489a15bf3f libstdc++-v3/include/experimental/string_view b58431501fd742d4746f706f1f216690 libstdc++-v3/include/experimental/system_error 2fcf247a9917631383ce599abc9e54c2 libstdc++-v3/include/experimental/tuple ! 8c05424c1d13412367547748a6fef7e3 libstdc++-v3/include/experimental/type_traits 8fe8262ce24af317300b0a0b7f7eeb19 libstdc++-v3/include/experimental/unordered_map a989f67f3e125816d1d1c6c383f7c7eb libstdc++-v3/include/experimental/unordered_set 6a5eca317f55b6e477f8f5b0db337890 libstdc++-v3/include/experimental/utility *************** a4dbaed45302898059965a2536fa70f6 libstd *** 67729,67735 **** da95e16cd816137a117a75edcdfa7edb libstdc++-v3/include/profile/unordered_set 77784a11757398ad33c59f0b97deb272 libstdc++-v3/include/profile/vector 6888850646b32f4cf5d7acbcdf814e62 libstdc++-v3/include/std/algorithm ! 29899d90d2ab2ab031ca73de4f61f1a9 libstdc++-v3/include/std/any 2fd954e55939b25cd70cd8e2ba3bcb61 libstdc++-v3/include/std/array 3b19e6f709a310e8cb3fb34a67cb2564 libstdc++-v3/include/std/atomic 6b7c7fb7392b2a53b55c6c59aea6e9a1 libstdc++-v3/include/std/bitset --- 68130,68136 ---- da95e16cd816137a117a75edcdfa7edb libstdc++-v3/include/profile/unordered_set 77784a11757398ad33c59f0b97deb272 libstdc++-v3/include/profile/vector 6888850646b32f4cf5d7acbcdf814e62 libstdc++-v3/include/std/algorithm ! 368c115ae6c38c55b58db2d722f8d1d6 libstdc++-v3/include/std/any 2fd954e55939b25cd70cd8e2ba3bcb61 libstdc++-v3/include/std/array 3b19e6f709a310e8cb3fb34a67cb2564 libstdc++-v3/include/std/atomic 6b7c7fb7392b2a53b55c6c59aea6e9a1 libstdc++-v3/include/std/bitset *************** f5721edd39e212a96236797133280047 libstd *** 67755,67761 **** f008669ae0b0683f54f6fb3135dfffde libstdc++-v3/include/std/memory 492670925934aa0869810da0ba3f5a59 libstdc++-v3/include/std/mutex ddc3090928c84bc8608da7a8498d1384 libstdc++-v3/include/std/numeric ! 06067ab3ead834bc5749d0a9c59ba770 libstdc++-v3/include/std/optional 3e01bf72cb649a8b3219a4c1bf2abbc5 libstdc++-v3/include/std/ostream 8b030f58e9dc4ecea8b2eb241b8d36cc libstdc++-v3/include/std/queue aea8e691c1eda6992a5759bda4f88948 libstdc++-v3/include/std/random --- 68156,68162 ---- f008669ae0b0683f54f6fb3135dfffde libstdc++-v3/include/std/memory 492670925934aa0869810da0ba3f5a59 libstdc++-v3/include/std/mutex ddc3090928c84bc8608da7a8498d1384 libstdc++-v3/include/std/numeric ! 59d8fe05fa6ea813a41acc1da762c915 libstdc++-v3/include/std/optional 3e01bf72cb649a8b3219a4c1bf2abbc5 libstdc++-v3/include/std/ostream 8b030f58e9dc4ecea8b2eb241b8d36cc libstdc++-v3/include/std/queue aea8e691c1eda6992a5759bda4f88948 libstdc++-v3/include/std/random *************** f6db2f6c313ce30896ebd0ef7fdcd816 libstd *** 67779,67785 **** 40af560d2f7d91fbc5ddfe9099e959ec libstdc++-v3/include/std/unordered_set f6e088d93d066b0d8fdee3e9b7fa8850 libstdc++-v3/include/std/utility 9dc6c211c3503697170d85aec9d3ef37 libstdc++-v3/include/std/valarray ! 46bb1595e23d34bd14d4e22e6fe39c00 libstdc++-v3/include/std/variant 524416117d96559514029824ea8182fc libstdc++-v3/include/std/vector 98a03c40ae073a2c2bdc2b7b42c65bc4 libstdc++-v3/include/tr1/array ac8f2f0647f302709bfae97d9408d6fe libstdc++-v3/include/tr1/bessel_function.tcc --- 68180,68186 ---- 40af560d2f7d91fbc5ddfe9099e959ec libstdc++-v3/include/std/unordered_set f6e088d93d066b0d8fdee3e9b7fa8850 libstdc++-v3/include/std/utility 9dc6c211c3503697170d85aec9d3ef37 libstdc++-v3/include/std/valarray ! 14f0eaa48fa7ef086e669f0d7cc2990b libstdc++-v3/include/std/variant 524416117d96559514029824ea8182fc libstdc++-v3/include/std/vector 98a03c40ae073a2c2bdc2b7b42c65bc4 libstdc++-v3/include/tr1/array ac8f2f0647f302709bfae97d9408d6fe libstdc++-v3/include/tr1/bessel_function.tcc *************** b97ac31049b18ccb4b749148328f6f78 libstd *** 67850,67856 **** de52ff045b1be2a0dab2527cce246ee8 libstdc++-v3/include/tr2/ratio fcf46daf9cbfb79e56df4b39b512ad2d libstdc++-v3/include/tr2/type_traits 9cab2eebc32de8a4e098ece111da25b0 libstdc++-v3/libsupc++/Makefile.am ! cd9f4b8c02c86260ddcdfe8ef2de11a8 libstdc++-v3/libsupc++/Makefile.in 0bff5f9241a348b4e5102023300123eb libstdc++-v3/libsupc++/array_type_info.cc f7910c2b2e8b7712760dd0d9a9c35279 libstdc++-v3/libsupc++/atexit_arm.cc 8985ce1d0236496e19acd04d27b2ae5d libstdc++-v3/libsupc++/atexit_thread.cc --- 68251,68257 ---- de52ff045b1be2a0dab2527cce246ee8 libstdc++-v3/include/tr2/ratio fcf46daf9cbfb79e56df4b39b512ad2d libstdc++-v3/include/tr2/type_traits 9cab2eebc32de8a4e098ece111da25b0 libstdc++-v3/libsupc++/Makefile.am ! e6b3cf90b7bbcb5d85d66bc867aabab1 libstdc++-v3/libsupc++/Makefile.in 0bff5f9241a348b4e5102023300123eb libstdc++-v3/libsupc++/array_type_info.cc f7910c2b2e8b7712760dd0d9a9c35279 libstdc++-v3/libsupc++/atexit_arm.cc 8985ce1d0236496e19acd04d27b2ae5d libstdc++-v3/libsupc++/atexit_thread.cc *************** cf6842fa4dcad6fe5f6ae75491a85408 libstd *** 67861,67867 **** 2f3f9d1d57869c7aa4896d0a48fcdee1 libstdc++-v3/libsupc++/bad_cast.cc 1e2fa9b2a26073271a74ccf5ef349dfc libstdc++-v3/libsupc++/bad_typeid.cc 41dcf2edb2b119ee834ae1e65ce5277a libstdc++-v3/libsupc++/class_type_info.cc ! ef8f8200f041873163ec35e6e49757af libstdc++-v3/libsupc++/cxxabi.h 014e0058e7fc59771a9024655b0f7c2e libstdc++-v3/libsupc++/cxxabi_forced.h 48db33ce6880f2e94bfb19f6968005ea libstdc++-v3/libsupc++/cxxabi_init_exception.h 157788849745463dfb2ae186c33de61f libstdc++-v3/libsupc++/del_op.cc --- 68262,68268 ---- 2f3f9d1d57869c7aa4896d0a48fcdee1 libstdc++-v3/libsupc++/bad_cast.cc 1e2fa9b2a26073271a74ccf5ef349dfc libstdc++-v3/libsupc++/bad_typeid.cc 41dcf2edb2b119ee834ae1e65ce5277a libstdc++-v3/libsupc++/class_type_info.cc ! 0b0f21d43ffd1ddceefe31ca0905ed2f libstdc++-v3/libsupc++/cxxabi.h 014e0058e7fc59771a9024655b0f7c2e libstdc++-v3/libsupc++/cxxabi_forced.h 48db33ce6880f2e94bfb19f6968005ea libstdc++-v3/libsupc++/cxxabi_init_exception.h 157788849745463dfb2ae186c33de61f libstdc++-v3/libsupc++/del_op.cc *************** bde4f68c170f4beff56dc31f7decb918 libstd *** 67901,67908 **** 58090c5d9b0e17a29e8fa979d4541c9e libstdc++-v3/libsupc++/function_type_info.cc 8c3bfbd6c3190f6837dfd1deda603ca5 libstdc++-v3/libsupc++/fundamental_type_info.cc 83d3dba8df558bf22d43525906846ec3 libstdc++-v3/libsupc++/guard.cc ! 5007de2ca089f5ae9039ebe2642029b2 libstdc++-v3/libsupc++/guard_error.cc ! 604d5d4ca6a7235ffd00e86cc980f7aa libstdc++-v3/libsupc++/hash_bytes.cc 722619e46e2f37590d20dd631d23e496 libstdc++-v3/libsupc++/hash_bytes.h 09bcac0edee877df1e87c7ac046f5813 libstdc++-v3/libsupc++/initializer_list d81ddfb1e28692d8ef2c2135dae7fa78 libstdc++-v3/libsupc++/nested_exception.cc --- 68302,68309 ---- 58090c5d9b0e17a29e8fa979d4541c9e libstdc++-v3/libsupc++/function_type_info.cc 8c3bfbd6c3190f6837dfd1deda603ca5 libstdc++-v3/libsupc++/fundamental_type_info.cc 83d3dba8df558bf22d43525906846ec3 libstdc++-v3/libsupc++/guard.cc ! f4a4540342b8d86e21c1630ca015fd2b libstdc++-v3/libsupc++/guard_error.cc ! 3482c04b98ac443dc2b171c54ec6a1cf libstdc++-v3/libsupc++/hash_bytes.cc 722619e46e2f37590d20dd631d23e496 libstdc++-v3/libsupc++/hash_bytes.h 09bcac0edee877df1e87c7ac046f5813 libstdc++-v3/libsupc++/initializer_list d81ddfb1e28692d8ef2c2135dae7fa78 libstdc++-v3/libsupc++/nested_exception.cc *************** d81ddfb1e28692d8ef2c2135dae7fa78 libstd *** 67910,67916 **** bd99c0d8a06d268e563134d529a2c45e libstdc++-v3/libsupc++/new 283037887fc60ebb7ddfa5e91d9a7d87 libstdc++-v3/libsupc++/new_handler.cc 1a4b29528e2f169a99c67aaf0f88270d libstdc++-v3/libsupc++/new_op.cc ! 4a8d35bd946bd8492b475709ba25a0ca libstdc++-v3/libsupc++/new_opa.cc fc2a500a9e1465fc1cf3f4f9a12ac866 libstdc++-v3/libsupc++/new_opant.cc 364346ae155d03bc02a25397b28c37f2 libstdc++-v3/libsupc++/new_opnt.cc eaa47a7a65f377d212527d243afa4bab libstdc++-v3/libsupc++/new_opv.cc --- 68311,68317 ---- bd99c0d8a06d268e563134d529a2c45e libstdc++-v3/libsupc++/new 283037887fc60ebb7ddfa5e91d9a7d87 libstdc++-v3/libsupc++/new_handler.cc 1a4b29528e2f169a99c67aaf0f88270d libstdc++-v3/libsupc++/new_op.cc ! 1e4ab43ff34ccd776c6d81c3dc5151b6 libstdc++-v3/libsupc++/new_opa.cc fc2a500a9e1465fc1cf3f4f9a12ac866 libstdc++-v3/libsupc++/new_opant.cc 364346ae155d03bc02a25397b28c37f2 libstdc++-v3/libsupc++/new_opnt.cc eaa47a7a65f377d212527d243afa4bab libstdc++-v3/libsupc++/new_opv.cc *************** fb15e2e2a2b7ed98cd6094027fc92773 libstd *** 67933,67951 **** 256478324744e0bad0b30aa6f3220d7c libstdc++-v3/libsupc++/vtv_stubs.cc 6e1809e9ac8f237378ab1ebc1b99fb6a libstdc++-v3/linkage.m4 b21c98545e0cb8ef6921957a89bdd5d1 libstdc++-v3/po/Makefile.am ! edcf1b2d9366e1af609192745421de9a libstdc++-v3/po/Makefile.in 62813ea213f423fcbab32768df955789 libstdc++-v3/po/POTFILES.in c0f612fd0ae5fc91df3c3f7dfb03180c libstdc++-v3/po/de.po 9be3fcc3afce9703367890d09fc6f0e5 libstdc++-v3/po/fr.po c96dc8fff746211523e74f1e605fb697 libstdc++-v3/po/libstdc++.pot f32955df5c4047bbde966cf582b0f9f9 libstdc++-v3/po/string_literals.cc 7bbd960e3eaf3704f4a4955c9f06d83f libstdc++-v3/python/Makefile.am ! e74a6fa1d9d5837ff23ea763eeed7bee libstdc++-v3/python/Makefile.in f539df133567379ad0f1f9c3cb9a7981 libstdc++-v3/python/hook.in 68b329da9893e34099c7d8ad5cb9c940 libstdc++-v3/python/libstdcxx/__init__.py 42eba6becf26fb9be17456c725ee075c libstdc++-v3/python/libstdcxx/v6/__init__.py badb8b9f16784b299ed63c3a595877c1 libstdc++-v3/python/libstdcxx/v6/printers.py ! b890a88bda6bbf1918279d8fa2e0dc31 libstdc++-v3/python/libstdcxx/v6/xmethods.py b1441422cec6381d9285b7681b666124 libstdc++-v3/scripts/check_compile 533e594add6e79910b0e557ba690fac6 libstdc++-v3/scripts/check_performance f480e111db2d50194a3e1f7014c9f422 libstdc++-v3/scripts/create_testsuite_files --- 68334,68352 ---- 256478324744e0bad0b30aa6f3220d7c libstdc++-v3/libsupc++/vtv_stubs.cc 6e1809e9ac8f237378ab1ebc1b99fb6a libstdc++-v3/linkage.m4 b21c98545e0cb8ef6921957a89bdd5d1 libstdc++-v3/po/Makefile.am ! 0c708fad82e020110c4baaa5126a5c12 libstdc++-v3/po/Makefile.in 62813ea213f423fcbab32768df955789 libstdc++-v3/po/POTFILES.in c0f612fd0ae5fc91df3c3f7dfb03180c libstdc++-v3/po/de.po 9be3fcc3afce9703367890d09fc6f0e5 libstdc++-v3/po/fr.po c96dc8fff746211523e74f1e605fb697 libstdc++-v3/po/libstdc++.pot f32955df5c4047bbde966cf582b0f9f9 libstdc++-v3/po/string_literals.cc 7bbd960e3eaf3704f4a4955c9f06d83f libstdc++-v3/python/Makefile.am ! cf6dd6cdd59390750cc921bb9679ab5f libstdc++-v3/python/Makefile.in f539df133567379ad0f1f9c3cb9a7981 libstdc++-v3/python/hook.in 68b329da9893e34099c7d8ad5cb9c940 libstdc++-v3/python/libstdcxx/__init__.py 42eba6becf26fb9be17456c725ee075c libstdc++-v3/python/libstdcxx/v6/__init__.py badb8b9f16784b299ed63c3a595877c1 libstdc++-v3/python/libstdcxx/v6/printers.py ! 8d7b5cb1d89dc6ce7c857f3a23ae0c90 libstdc++-v3/python/libstdcxx/v6/xmethods.py b1441422cec6381d9285b7681b666124 libstdc++-v3/scripts/check_compile 533e594add6e79910b0e557ba690fac6 libstdc++-v3/scripts/check_performance f480e111db2d50194a3e1f7014c9f422 libstdc++-v3/scripts/create_testsuite_files *************** f480e111db2d50194a3e1f7014c9f422 libstd *** 67954,67967 **** 755b77f929d926f07f3257df2e802f2e libstdc++-v3/scripts/gen_bind_includers.pl 85378fa65bc3dc46ffe255374b304560 libstdc++-v3/scripts/gen_includers.pl f1a84a17158780aaa37927191db4463a libstdc++-v3/scripts/gen_includers2.pl ! 12339b6ead78d7ddd0044dfd0f9f4f92 libstdc++-v3/scripts/make_exports.pl 80b6ff44b325c6b6d113435d8eea4b76 libstdc++-v3/scripts/make_graph.py 85cf38645711b5fc8a857a7868dd2990 libstdc++-v3/scripts/run_doxygen 7579350b0ac0412cb42e9c354485ebd9 libstdc++-v3/scripts/testsuite_flags.in ! 9e9f0243554b1721cc068bb43de27f4d libstdc++-v3/src/Makefile.am ! 17ee027fa28e0fbb74e9d7a61c9f8c79 libstdc++-v3/src/Makefile.in 7ce761e22fdebc3f0a63df3233308d6a libstdc++-v3/src/c++11/Makefile.am ! 5042f0104c422e5fd31dadc37530fa72 libstdc++-v3/src/c++11/Makefile.in be1262939a9149c8d5b9884c8d64150f libstdc++-v3/src/c++11/chrono.cc ddb91a0a0bd166376ac31a87bca529b6 libstdc++-v3/src/c++11/codecvt.cc 5d79a0dca046349bb089967f46eaa4de libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc --- 68355,68368 ---- 755b77f929d926f07f3257df2e802f2e libstdc++-v3/scripts/gen_bind_includers.pl 85378fa65bc3dc46ffe255374b304560 libstdc++-v3/scripts/gen_includers.pl f1a84a17158780aaa37927191db4463a libstdc++-v3/scripts/gen_includers2.pl ! e8e7773bc629a008b2813ee507a0dab6 libstdc++-v3/scripts/make_exports.pl 80b6ff44b325c6b6d113435d8eea4b76 libstdc++-v3/scripts/make_graph.py 85cf38645711b5fc8a857a7868dd2990 libstdc++-v3/scripts/run_doxygen 7579350b0ac0412cb42e9c354485ebd9 libstdc++-v3/scripts/testsuite_flags.in ! e0115e34b4ea3ebe6e287632149d6f6c libstdc++-v3/src/Makefile.am ! 0a2a06de6150e2000dfa0d3bc57b1e02 libstdc++-v3/src/Makefile.in 7ce761e22fdebc3f0a63df3233308d6a libstdc++-v3/src/c++11/Makefile.am ! 989318073d7e57b510fc98972fb5adc2 libstdc++-v3/src/c++11/Makefile.in be1262939a9149c8d5b9884c8d64150f libstdc++-v3/src/c++11/chrono.cc ddb91a0a0bd166376ac31a87bca529b6 libstdc++-v3/src/c++11/codecvt.cc 5d79a0dca046349bb089967f46eaa4de libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc *************** d416f4f2c3cbb648bcb5ce3002f009fe libstd *** 68019,68026 **** 30ae62296480af830508a84e779c9d1a libstdc++-v3/src/c++11/wlocale-inst.cc d769f7cbde4ecb0c32864dab96056b93 libstdc++-v3/src/c++11/wstring-inst.cc 47bbd968170f15f4f14fbdcfd6c26005 libstdc++-v3/src/c++11/wstring-io-inst.cc 984c694c83939f9eecfc9bbe4d20bf96 libstdc++-v3/src/c++98/Makefile.am ! 9d081b01192db532401baddc9c24efb5 libstdc++-v3/src/c++98/Makefile.in 077c5bc24ea732944e61a543e6abfcbc libstdc++-v3/src/c++98/allocator-inst.cc 200dd019c9eb07a842fe667b5b40a87e libstdc++-v3/src/c++98/bitmap_allocator.cc 985a839cfbbe62d9f69de9ef2b064bcd libstdc++-v3/src/c++98/codecvt.cc --- 68420,68428 ---- 30ae62296480af830508a84e779c9d1a libstdc++-v3/src/c++11/wlocale-inst.cc d769f7cbde4ecb0c32864dab96056b93 libstdc++-v3/src/c++11/wstring-inst.cc 47bbd968170f15f4f14fbdcfd6c26005 libstdc++-v3/src/c++11/wstring-io-inst.cc + 9cca3cfd93f43b9ff610bb85aa008108 libstdc++-v3/src/c++17/Makefile.in 984c694c83939f9eecfc9bbe4d20bf96 libstdc++-v3/src/c++98/Makefile.am ! 418b9e9d64364fbe012f017898481088 libstdc++-v3/src/c++98/Makefile.in 077c5bc24ea732944e61a543e6abfcbc libstdc++-v3/src/c++98/allocator-inst.cc 200dd019c9eb07a842fe667b5b40a87e libstdc++-v3/src/c++98/bitmap_allocator.cc 985a839cfbbe62d9f69de9ef2b064bcd libstdc++-v3/src/c++98/codecvt.cc *************** c76551b9096322431a61d83b32e293aa libstd *** 68062,68079 **** 8be7815a7497aafffd91fe32b172522b libstdc++-v3/src/c++98/tree.cc dd649fc13e846dc2adaab14214405ea3 libstdc++-v3/src/c++98/valarray.cc cfd4e11cf722301804fd27e2cc10e50e libstdc++-v3/src/filesystem/Makefile.am ! 55e84e2e1dcf499a3a634389991fc497 libstdc++-v3/src/filesystem/Makefile.in f73fdf94a017dc421c3bdb1ca09ef1a1 libstdc++-v3/src/filesystem/cow-dir.cc 5aecc6c41de6a04ff2cd492babba1f04 libstdc++-v3/src/filesystem/cow-ops.cc ce1d40dd59bfb48cea6af1fdc01e7ab6 libstdc++-v3/src/filesystem/cow-path.cc 1933a4a539101653c6295fd6d8161483 libstdc++-v3/src/filesystem/dir.cc 22ee86ac2744265d7b3b466c85a3d348 libstdc++-v3/src/filesystem/ops.cc ! 1ea70560cb4013b899fb1b527be35030 libstdc++-v3/src/filesystem/path.cc 3ab250976eb86f0ac1edc8b3f35b3449 libstdc++-v3/src/shared/hashtable-aux.cc eff68d13ec5ad1d4a63320b78a36a8b2 libstdc++-v3/testsuite/17_intro/freestanding.cc ecc1a8271661151328b926fdfb899424 libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc 9875dd58d5e4d9e16ee0b834a989b6ea libstdc++-v3/testsuite/17_intro/headers/c++1998/all.cc ! 78f616b0408f72ad73c80fac5970bfa5 libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc d6d61376a0c20515d1db17516f2750b1 libstdc++-v3/testsuite/17_intro/headers/c++1998/all_c++200x_compatibility.cc 45c40a65b1950cc85e051d2bdeac1d8e libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_exceptions.cc 79ffebfc8bc1dcbda2905ab7e2fe6efc libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_rtti.cc --- 68464,68481 ---- 8be7815a7497aafffd91fe32b172522b libstdc++-v3/src/c++98/tree.cc dd649fc13e846dc2adaab14214405ea3 libstdc++-v3/src/c++98/valarray.cc cfd4e11cf722301804fd27e2cc10e50e libstdc++-v3/src/filesystem/Makefile.am ! 7ba7a0a0304fc3719d0902ea498d2ee4 libstdc++-v3/src/filesystem/Makefile.in f73fdf94a017dc421c3bdb1ca09ef1a1 libstdc++-v3/src/filesystem/cow-dir.cc 5aecc6c41de6a04ff2cd492babba1f04 libstdc++-v3/src/filesystem/cow-ops.cc ce1d40dd59bfb48cea6af1fdc01e7ab6 libstdc++-v3/src/filesystem/cow-path.cc 1933a4a539101653c6295fd6d8161483 libstdc++-v3/src/filesystem/dir.cc 22ee86ac2744265d7b3b466c85a3d348 libstdc++-v3/src/filesystem/ops.cc ! f0a5be3b74559ac219367c2a6b29c937 libstdc++-v3/src/filesystem/path.cc 3ab250976eb86f0ac1edc8b3f35b3449 libstdc++-v3/src/shared/hashtable-aux.cc eff68d13ec5ad1d4a63320b78a36a8b2 libstdc++-v3/testsuite/17_intro/freestanding.cc ecc1a8271661151328b926fdfb899424 libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc 9875dd58d5e4d9e16ee0b834a989b6ea libstdc++-v3/testsuite/17_intro/headers/c++1998/all.cc ! 02a5fb14b5e2571cee10356768df703b libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc d6d61376a0c20515d1db17516f2750b1 libstdc++-v3/testsuite/17_intro/headers/c++1998/all_c++200x_compatibility.cc 45c40a65b1950cc85e051d2bdeac1d8e libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_exceptions.cc 79ffebfc8bc1dcbda2905ab7e2fe6efc libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_rtti.cc *************** c6f0514dd3114d6852e1ac10ac317cea libstd *** 68085,68091 **** d50c23af9d1145cddd8294f81f54ebf1 libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_multiple_inclusion.cc aff0f9d4ddff6ead1b66cf632e3a0421 libstdc++-v3/testsuite/17_intro/headers/c++2011/42319.cc b183ab1d45bac0d208de456104de20bc libstdc++-v3/testsuite/17_intro/headers/c++2011/67309.cc ! 8d61df8a910aebfe70e13a1f7cab83ba libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc 7622be2c36c715bc1e47a5d3a6ab27ed libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_exceptions.cc 1d1536ef2352318473f6d77a141df41d libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_rtti.cc ce41f9daba4aa55e17c599b27e534a14 libstdc++-v3/testsuite/17_intro/headers/c++2011/all_pedantic_errors.cc --- 68487,68493 ---- d50c23af9d1145cddd8294f81f54ebf1 libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_multiple_inclusion.cc aff0f9d4ddff6ead1b66cf632e3a0421 libstdc++-v3/testsuite/17_intro/headers/c++2011/42319.cc b183ab1d45bac0d208de456104de20bc libstdc++-v3/testsuite/17_intro/headers/c++2011/67309.cc ! f71ed9c149f97709bc776c3d26b5adbf libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc 7622be2c36c715bc1e47a5d3a6ab27ed libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_exceptions.cc 1d1536ef2352318473f6d77a141df41d libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_rtti.cc ce41f9daba4aa55e17c599b27e534a14 libstdc++-v3/testsuite/17_intro/headers/c++2011/all_pedantic_errors.cc *************** ce41f9daba4aa55e17c599b27e534a14 libstd *** 68093,68106 **** 764420d7acebf8df71e878516a302eb5 libstdc++-v3/testsuite/17_intro/headers/c++2011/operator_names.cc 89bfd85d26dca171d11829da624a73fc libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc e901dfd8fa31dfb18f801d52a32af56a libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc ! 5b2bd539bc31493221422f354d5368fe libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc cec11c27a08be8f68c3f189cff87ff26 libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_exceptions.cc a05741b50f736591adc069c7244a103e libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_rtti.cc 592e29c5ad8a96a8dbd4e8e22e9de080 libstdc++-v3/testsuite/17_intro/headers/c++2014/all_pedantic_errors.cc 05d1bb38b57c5303ede5a827deb320b5 libstdc++-v3/testsuite/17_intro/headers/c++2014/operator_names.cc 918303f7d111e8bee6afecfb607bc488 libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc 01aee116ab8b6ebe7ff6358cf8bf2394 libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc ! 11e813bd6abc664901d439a6e0bfe10a libstdc++-v3/testsuite/17_intro/names.cc 69376f9eebb6b3e66f3bbe5501e56017 libstdc++-v3/testsuite/17_intro/shared_with_static_deps.cc 4a79b3b2a6b5d7a3e4c35ee9ab270376 libstdc++-v3/testsuite/17_intro/static.cc 8c893a06f3284d0f487c3b47ff0aa9ff libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc --- 68495,68508 ---- 764420d7acebf8df71e878516a302eb5 libstdc++-v3/testsuite/17_intro/headers/c++2011/operator_names.cc 89bfd85d26dca171d11829da624a73fc libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc e901dfd8fa31dfb18f801d52a32af56a libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc ! c3f836bfffbfba2e5765b720b08e7a61 libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc cec11c27a08be8f68c3f189cff87ff26 libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_exceptions.cc a05741b50f736591adc069c7244a103e libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_rtti.cc 592e29c5ad8a96a8dbd4e8e22e9de080 libstdc++-v3/testsuite/17_intro/headers/c++2014/all_pedantic_errors.cc 05d1bb38b57c5303ede5a827deb320b5 libstdc++-v3/testsuite/17_intro/headers/c++2014/operator_names.cc 918303f7d111e8bee6afecfb607bc488 libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc 01aee116ab8b6ebe7ff6358cf8bf2394 libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc ! 2cf9d0082430a8109b4c0efb917ba310 libstdc++-v3/testsuite/17_intro/names.cc 69376f9eebb6b3e66f3bbe5501e56017 libstdc++-v3/testsuite/17_intro/shared_with_static_deps.cc 4a79b3b2a6b5d7a3e4c35ee9ab270376 libstdc++-v3/testsuite/17_intro/static.cc 8c893a06f3284d0f487c3b47ff0aa9ff libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc *************** a05741b50f736591adc069c7244a103e libstd *** 68108,68113 **** --- 68510,68516 ---- 8f2b580803b18ee679e34ee888753f21 libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc d68387ff0847a1819d716f6f13e011cf libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc 81ae9cc366ec1e08e14922ae6ed58093 libstdc++-v3/testsuite/18_support/50594.cc + 2f87c47ecadaa7e8377f15d2db944354 libstdc++-v3/testsuite/18_support/51333.cc e7b627512e533ba71656029c1be3f386 libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc a0aa80ca698f9e46814ff0429ec44921 libstdc++-v3/testsuite/18_support/bad_alloc/cons_virtual_derivation.cc 4bbd46b813c0fc3fb2b370345304c9ac libstdc++-v3/testsuite/18_support/bad_alloc/what.cc *************** df4fa8ef010d4fca972064a6e83e4db8 libstd *** 68335,68341 **** 410ec35828c3a71425f54b223b3bb51c libstdc++-v3/testsuite/20_util/any/cons/in_place.cc 6eb14dec3ecc152f576979da6c084904 libstdc++-v3/testsuite/20_util/any/cons/nontrivial.cc 136c33cb00218360857886d5e07f386f libstdc++-v3/testsuite/20_util/any/make_any.cc ! 8d87e9a40ff5af1f9bde5a93888f33f1 libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc 767380f2ed0fed356e05bd83627f2451 libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc f47538cfe0f5fe3ca0c9b220558925d3 libstdc++-v3/testsuite/20_util/any/misc/any_cast_no_rtti.cc 7ad55da7bbd6a46d3c6202b3051bba6c libstdc++-v3/testsuite/20_util/any/misc/swap.cc --- 68738,68744 ---- 410ec35828c3a71425f54b223b3bb51c libstdc++-v3/testsuite/20_util/any/cons/in_place.cc 6eb14dec3ecc152f576979da6c084904 libstdc++-v3/testsuite/20_util/any/cons/nontrivial.cc 136c33cb00218360857886d5e07f386f libstdc++-v3/testsuite/20_util/any/make_any.cc ! fb618368f6349ea57e9f7470fbda974d libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc 767380f2ed0fed356e05bd83627f2451 libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc f47538cfe0f5fe3ca0c9b220558925d3 libstdc++-v3/testsuite/20_util/any/misc/any_cast_no_rtti.cc 7ad55da7bbd6a46d3c6202b3051bba6c libstdc++-v3/testsuite/20_util/any/misc/swap.cc *************** b25437bf4feabc355d0f15d75780d8a9 libstd *** 68441,68446 **** --- 68844,68850 ---- 468a2d0c445aa90983491aa38c340a8c libstdc++-v3/testsuite/20_util/enable_if/requirements/typedefs.cc 6b25fa5aa8feb22cc33639556537c21a libstdc++-v3/testsuite/20_util/enable_if/requirements/typedefs_neg.cc a0b2cd382a67269f6784e9a92775ed89 libstdc++-v3/testsuite/20_util/enable_shared_from_this/56383.cc + ee1c332aa27e594d135fb4984431eb3f libstdc++-v3/testsuite/20_util/enable_shared_from_this/89303.cc 094c11c1ade6b8e8b3b4348e36e34535 libstdc++-v3/testsuite/20_util/enable_shared_from_this/cons/constexpr.cc 5f329f1bff01d939f0cfe727b9714186 libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/assign.cc d38906336cd181e8af40647671dcbbf0 libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/const.cc *************** c4c0928af94c8d4861358027300ed38c libstd *** 68523,68528 **** --- 68927,68933 ---- 40e88b2214cb93945c3eb42786f3803c libstdc++-v3/testsuite/20_util/has_virtual_destructor/value.cc 1ae2c9530ba77b9255c45abe5c4dd946 libstdc++-v3/testsuite/20_util/hash/52931.cc f9c0219be474f886caae6dbb3050d23a libstdc++-v3/testsuite/20_util/hash/60970.cc + 4eaefc7af2963267cf693a946b55afe9 libstdc++-v3/testsuite/20_util/hash/89629.cc ce939b5d121728a1244f095cc02d56b5 libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_flip_set.cc 1a69b1da2430454e96314879314f0edd libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_string_set.cc c862e5af9d439a006f45873e3e423404 libstdc++-v3/testsuite/20_util/hash/chi2_q_document_words.cc *************** e29a8e3020c1e7a384893232edb5d9ea libstd *** 69174,69180 **** d3078ae84c4c4a660d43973332f9ee23 libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-2.cc 6f18ca36ef8b4e04b4dd114d83863ca0 libstdc++-v3/testsuite/20_util/unique_ptr/54351.cc 695aac41a2e8bfbb93a4fd36c007b250 libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635.cc ! ae6395d133479f5abddb8ddf0db9d136 libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc e16018c88229234f4bde9f910d616673 libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc a9dca44591fcc31b467607bd0d7effd6 libstdc++-v3/testsuite/20_util/unique_ptr/assign/cv_qual.cc 7287e1bd9d25ac220b05c0be8065197e libstdc++-v3/testsuite/20_util/unique_ptr/assign/move.cc --- 69579,69586 ---- d3078ae84c4c4a660d43973332f9ee23 libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-2.cc 6f18ca36ef8b4e04b4dd114d83863ca0 libstdc++-v3/testsuite/20_util/unique_ptr/54351.cc 695aac41a2e8bfbb93a4fd36c007b250 libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635.cc ! ef2648652b9d68ecb726965e28aeee1c libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc ! 8fb0f2007f9a8170e29b505990a47cf0 libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc e16018c88229234f4bde9f910d616673 libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc a9dca44591fcc31b467607bd0d7effd6 libstdc++-v3/testsuite/20_util/unique_ptr/assign/cv_qual.cc 7287e1bd9d25ac220b05c0be8065197e libstdc++-v3/testsuite/20_util/unique_ptr/assign/move.cc *************** eac937d427af84501c9ea72cddc3c29e libstd *** 69189,69195 **** 5dc436dc2fffd2cab284aa79eee70732 libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr.cc bbeb0262e8fc3021525962c586df84ba libstdc++-v3/testsuite/20_util/unique_ptr/cons/convertible_neg.cc 778a4da95002a92aeaef688b44e5b664 libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual.cc ! 82633c3d74050bc4fb78de5159e0aae6 libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc 80c4859db1f103d32ee165bcf3efd68d libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc 625a84ce4b90079054b81c60886122df libstdc++-v3/testsuite/20_util/unique_ptr/cons/default.cc bee7be33cdf693573fffc08c157838b9 libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc --- 69595,69601 ---- 5dc436dc2fffd2cab284aa79eee70732 libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr.cc bbeb0262e8fc3021525962c586df84ba libstdc++-v3/testsuite/20_util/unique_ptr/cons/convertible_neg.cc 778a4da95002a92aeaef688b44e5b664 libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual.cc ! a3cc018fafaa5fa847f1ac52fe9d16c6 libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc 80c4859db1f103d32ee165bcf3efd68d libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc 625a84ce4b90079054b81c60886122df libstdc++-v3/testsuite/20_util/unique_ptr/cons/default.cc bee7be33cdf693573fffc08c157838b9 libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc *************** ca81a48619b78d25db0d67d261cded7f libstd *** 69537,69542 **** --- 69943,69949 ---- 43fe83b5a96bda0bc9df150f3c47e0ba libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char/1.cc 71638fb4ac0f80b78387519750158eb9 libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc 7104cca52c6c6a9076122af255b6f67f libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/2.cc + f309f190d4d1b8faf95f31a4714a7fd4 libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc 2ab97edf19c09c17314ae78467413026 libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc c55e12bad78c344a1ca62c49d297153d libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc a6f49ca62b781914f628c01bf48fccf7 libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc *************** c6b20dad7dab04356b2ccff38941f054 libstd *** 70370,70376 **** 8ebcd9150bb64bea5bef314db97b9a20 libstdc++-v3/testsuite/23_containers/forward_list/allocator/swap.cc d5801af7ff547530aff50b573299edca libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc 6f1606d773fe7422060929eac6a57c7a libstdc++-v3/testsuite/23_containers/forward_list/capacity/resize_size.cc ! 3be81132822bf133a94852ad1b8f18f7 libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc 7099d4baa79d45b330d0916ade555ad9 libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc c7ded4abef28f6c038b50dd3b12a40ef libstdc++-v3/testsuite/23_containers/forward_list/cons/10.cc ea7076e9e1a48e649d718092d4b92ff3 libstdc++-v3/testsuite/23_containers/forward_list/cons/11.cc --- 70777,70783 ---- 8ebcd9150bb64bea5bef314db97b9a20 libstdc++-v3/testsuite/23_containers/forward_list/allocator/swap.cc d5801af7ff547530aff50b573299edca libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc 6f1606d773fe7422060929eac6a57c7a libstdc++-v3/testsuite/23_containers/forward_list/capacity/resize_size.cc ! 5118ce558aff33c609fc1683597fae0e libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc 7099d4baa79d45b330d0916ade555ad9 libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc c7ded4abef28f6c038b50dd3b12a40ef libstdc++-v3/testsuite/23_containers/forward_list/cons/10.cc ea7076e9e1a48e649d718092d4b92ff3 libstdc++-v3/testsuite/23_containers/forward_list/cons/11.cc *************** ce2869bd9b6d50f8b27e7e41fc3201d1 libstd *** 70436,70441 **** --- 70843,70849 ---- 380d09852cdcf5b1be797f3621185d04 libstdc++-v3/testsuite/23_containers/forward_list/operations/5.cc 1c900f4a094eca035562fe65f550f5ac libstdc++-v3/testsuite/23_containers/forward_list/operations/6.cc 9c5e1f39ff6d5d76d2891b7e6f5690d6 libstdc++-v3/testsuite/23_containers/forward_list/operations/7.cc + 2582009bfec0cfdae2cbb12d5e9d1425 libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc aa7d45fa0aea8f2bc702c21364164db8 libstdc++-v3/testsuite/23_containers/forward_list/operations/remove_freed.cc 4142604b961afb1cfd399981d981a620 libstdc++-v3/testsuite/23_containers/forward_list/range_access.cc 503d59839ca02e30fceb412b9a7b22e2 libstdc++-v3/testsuite/23_containers/forward_list/requirements/citerators.cc *************** c562377ead8438d94903a9f791af2973 libstd *** 73768,73774 **** 01924deb38d26b5572b9d6606eddb865 libstdc++-v3/testsuite/30_threads/unique_lock/requirements/explicit_instantiation.cc ba180fc82cdb01fbcfa75128486ba936 libstdc++-v3/testsuite/30_threads/unique_lock/requirements/typedefs.cc c2e593cd92bdba8b5a20b351f7387410 libstdc++-v3/testsuite/Makefile.am ! 865af2aa0b305bd39ca62071775d2bbf libstdc++-v3/testsuite/Makefile.in 197f1c6ac1cc489647cc12c718778a3c libstdc++-v3/testsuite/abi/30586.cc 1162bb8775b2aa998db7c40ce2a7e110 libstdc++-v3/testsuite/abi/cxx_runtime_only_linkage.cc 8435c67d31b35c215c59464d225c7f12 libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc --- 74176,74182 ---- 01924deb38d26b5572b9d6606eddb865 libstdc++-v3/testsuite/30_threads/unique_lock/requirements/explicit_instantiation.cc ba180fc82cdb01fbcfa75128486ba936 libstdc++-v3/testsuite/30_threads/unique_lock/requirements/typedefs.cc c2e593cd92bdba8b5a20b351f7387410 libstdc++-v3/testsuite/Makefile.am ! d3997e9c2527bf5c19e108ff9c16a2ad libstdc++-v3/testsuite/Makefile.in 197f1c6ac1cc489647cc12c718778a3c libstdc++-v3/testsuite/abi/30586.cc 1162bb8775b2aa998db7c40ce2a7e110 libstdc++-v3/testsuite/abi/cxx_runtime_only_linkage.cc 8435c67d31b35c215c59464d225c7f12 libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc *************** aebeef13fe0ded6e91305cc09ad8d48a libstd *** 73943,73950 **** 7285e8a7d97e92f5251d32b46c4b5762 libstdc++-v3/testsuite/experimental/any/cons/2.cc 25b556ebfd34357f964ab02de11f8fc3 libstdc++-v3/testsuite/experimental/any/cons/aligned.cc bc2267c79c7db5cae0d9450e338e714a libstdc++-v3/testsuite/experimental/any/cons/nontrivial.cc ! f07604fccc570f95ea130f8889734d92 libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc ! d1ce452221433cce9f78ad729189beb9 libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc 7581ece498e2323f89f69a9ebf7b7b6b libstdc++-v3/testsuite/experimental/any/misc/any_cast_no_rtti.cc fb7d818e3689f68fbc8be4dbd38e3b25 libstdc++-v3/testsuite/experimental/any/misc/swap.cc e5cac4e9683d2796e2423d7c962c52d0 libstdc++-v3/testsuite/experimental/any/modifiers/1.cc --- 74351,74358 ---- 7285e8a7d97e92f5251d32b46c4b5762 libstdc++-v3/testsuite/experimental/any/cons/2.cc 25b556ebfd34357f964ab02de11f8fc3 libstdc++-v3/testsuite/experimental/any/cons/aligned.cc bc2267c79c7db5cae0d9450e338e714a libstdc++-v3/testsuite/experimental/any/cons/nontrivial.cc ! cc7a330af5dce1a44091f54137ccb03b libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc ! 3ac7daa05ce7281b6d2662f259dbe2c0 libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc 7581ece498e2323f89f69a9ebf7b7b6b libstdc++-v3/testsuite/experimental/any/misc/any_cast_no_rtti.cc fb7d818e3689f68fbc8be4dbd38e3b25 libstdc++-v3/testsuite/experimental/any/misc/swap.cc e5cac4e9683d2796e2423d7c962c52d0 libstdc++-v3/testsuite/experimental/any/modifiers/1.cc *************** d1d1d7ad18f3ef72922ea190a4564f64 libstd *** 73987,73992 **** --- 74395,74401 ---- 2040d682b44f8756e7a9210d46f6069b libstdc++-v3/testsuite/experimental/filesystem/path/compare/strings.cc 80bafbf13f8c3f2b6c4ca7e88b732a50 libstdc++-v3/testsuite/experimental/filesystem/path/concat/path.cc df1aee485cfaa2a0d9c3979b4e5759df libstdc++-v3/testsuite/experimental/filesystem/path/concat/strings.cc + 4415abf9e4df4ee3452d0b32f2b7b994 libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc 6fbfa14708154012468c7335af563b41 libstdc++-v3/testsuite/experimental/filesystem/path/construct/copy.cc 41ad19ed6c563d982f835a7ca14274a1 libstdc++-v3/testsuite/experimental/filesystem/path/construct/default.cc fafe4b2c3a422ff8b58a9e1593c63ed5 libstdc++-v3/testsuite/experimental/filesystem/path/construct/locale.cc *************** d29cd708aa7a3631c5609769981ea24c libstd *** 74065,74070 **** --- 74474,74480 ---- 53d343d6ffb01123f090bc970ed1488c libstdc++-v3/testsuite/experimental/memory_resource/70966.cc 6411e7e2eb5d28ea505b455ec075c5db libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc e5c68086b3dfcc81fd40b2fd47087b85 libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc + fe61dde57dd62aeded86017a49baf89b libstdc++-v3/testsuite/experimental/names.cc 6ffb7a2ced2a3c8b93406e76ab761edc libstdc++-v3/testsuite/experimental/numeric/77801.cc b10dadd0aaf21af8fc2424241f710e00 libstdc++-v3/testsuite/experimental/numeric/gcd.cc af50993803ab949c47cea2c641c55919 libstdc++-v3/testsuite/experimental/numeric/lcm.cc *************** cd6c8f1130990a2ad276c58a9e75d692 libstd *** 75484,75490 **** ff05985e45aaa715c0e56af56bc93b72 libstdc++-v3/testsuite/util/testsuite_fs.h 3c1d334e524777a594413f9c47af37f5 libstdc++-v3/testsuite/util/testsuite_greedy_ops.h 897056d3840a4c98b7f3a54fec263601 libstdc++-v3/testsuite/util/testsuite_hooks.cc ! 61a4eb6f425486a4eab62b43f6a09930 libstdc++-v3/testsuite/util/testsuite_hooks.h 3de4adc73cde73a76dcad47a2a8d6103 libstdc++-v3/testsuite/util/testsuite_io.h ae4f6b785cfba28c4bd3f25020e2e3fc libstdc++-v3/testsuite/util/testsuite_iterators.h 070dce43e6c025fd8a05dcab8d49d5ad libstdc++-v3/testsuite/util/testsuite_new_operators.h --- 75894,75900 ---- ff05985e45aaa715c0e56af56bc93b72 libstdc++-v3/testsuite/util/testsuite_fs.h 3c1d334e524777a594413f9c47af37f5 libstdc++-v3/testsuite/util/testsuite_greedy_ops.h 897056d3840a4c98b7f3a54fec263601 libstdc++-v3/testsuite/util/testsuite_hooks.cc ! d941482fff1b22424902f824006ca7c0 libstdc++-v3/testsuite/util/testsuite_hooks.h 3de4adc73cde73a76dcad47a2a8d6103 libstdc++-v3/testsuite/util/testsuite_io.h ae4f6b785cfba28c4bd3f25020e2e3fc libstdc++-v3/testsuite/util/testsuite_iterators.h 070dce43e6c025fd8a05dcab8d49d5ad libstdc++-v3/testsuite/util/testsuite_new_operators.h *************** ead7378c068848783ee20a8f22dfa62b libstd *** 75498,75504 **** 534d202f4467aac0499eab3ddb5a842a libstdc++-v3/testsuite/util/thread/all.h b950d655469c477755252b1e18009596 libtool-ldflags 7a2b83d2d625a4022b9213ceb75f5897 libtool.m4 ! 54812e37c1a7dc1c3d11c80cc562052e libvtv/ChangeLog 2e04be12600367e07451f404a7fc1fa3 libvtv/Makefile.am b025f16ebe06ec16aa2957e5003533a0 libvtv/Makefile.in 4ce86f8604e6c86211a4cb2025ffc53e libvtv/acinclude.m4 --- 75908,75914 ---- 534d202f4467aac0499eab3ddb5a842a libstdc++-v3/testsuite/util/thread/all.h b950d655469c477755252b1e18009596 libtool-ldflags 7a2b83d2d625a4022b9213ceb75f5897 libtool.m4 ! d60890b2c5f7a91d51ebaacebc830777 libvtv/ChangeLog 2e04be12600367e07451f404a7fc1fa3 libvtv/Makefile.am b025f16ebe06ec16aa2957e5003533a0 libvtv/Makefile.in 4ce86f8604e6c86211a4cb2025ffc53e libvtv/acinclude.m4 *************** cd997674ad70ed883d545f2687b35af2 libvtv *** 75581,75587 **** 8f1b5ecc552ea50355dedd9334c68ffb libvtv/vtv_utils.h 247597a3fcc5b5aa8bd923351c59d853 ltgcc.m4 4e65f2f6a05f5eca82ba79c6363aa3db ltmain.sh ! 66d7cc36273b19c0436f528560659379 lto-plugin/ChangeLog 1d51b0f01f4db0f88d302ab0d691514e lto-plugin/Makefile.am 3bd8be597a6d5934a69399816aec878a lto-plugin/Makefile.in b8a21afb1f79664ea28d8892b4907746 lto-plugin/aclocal.m4 --- 75991,75997 ---- 8f1b5ecc552ea50355dedd9334c68ffb libvtv/vtv_utils.h 247597a3fcc5b5aa8bd923351c59d853 ltgcc.m4 4e65f2f6a05f5eca82ba79c6363aa3db ltmain.sh ! 2b05b388010c43e76781ee377eb43ec6 lto-plugin/ChangeLog 1d51b0f01f4db0f88d302ab0d691514e lto-plugin/Makefile.am 3bd8be597a6d5934a69399816aec878a lto-plugin/Makefile.in b8a21afb1f79664ea28d8892b4907746 lto-plugin/aclocal.m4 *************** dee72a6a60e99528b0d17bf3ff9a1e15 ltopti *** 75594,75600 **** bc2f6032c98896249eadb56177c7d357 ltsugar.m4 c30cd33c496505f13d9fbdb6970c7c33 ltversion.m4 293853a13b7e218e3a4342cf85fbbf25 lt~obsolete.m4 ! 7a98102cec1c886ca1316585d17457ce maintainer-scripts/ChangeLog 33c7bc2d2c55956dfac85a05d8a80eff maintainer-scripts/README e70ffb6559f8817db41ee1e69bc60287 maintainer-scripts/branch_changer.py 36a1c429023c0a0c2f90889e6cf87125 maintainer-scripts/crontab --- 76004,76010 ---- bc2f6032c98896249eadb56177c7d357 ltsugar.m4 c30cd33c496505f13d9fbdb6970c7c33 ltversion.m4 293853a13b7e218e3a4342cf85fbbf25 lt~obsolete.m4 ! 802652283f8a7cee67f2ce55916d2c76 maintainer-scripts/ChangeLog 33c7bc2d2c55956dfac85a05d8a80eff maintainer-scripts/README e70ffb6559f8817db41ee1e69bc60287 maintainer-scripts/branch_changer.py 36a1c429023c0a0c2f90889e6cf87125 maintainer-scripts/crontab *************** fbe2467afef81c41c166173adeb0ee20 mkdep *** 75611,75617 **** cf2baa0854f564a7785307e79f155efc symlink-tree cb06c1be6a41d68b0a65e0c1a91752bc ylwrap 03bf3ba8089f4bf475ef4035cf316a47 zlib/CMakeLists.txt ! 4bce06b51c5b0b5d0974a04869e2a515 zlib/ChangeLog 2effeeacadeab8edd2c3c4ae856f019d zlib/ChangeLog.gcj 0e9a37be8e3b85cc0ccf60504064c297 zlib/ChangeLog.jit b7a1991f01daea3efe108a215c5514a5 zlib/FAQ --- 76021,76027 ---- cf2baa0854f564a7785307e79f155efc symlink-tree cb06c1be6a41d68b0a65e0c1a91752bc ylwrap 03bf3ba8089f4bf475ef4035cf316a47 zlib/CMakeLists.txt ! ce9974c2de8d2ee92ee4b5880c26a107 zlib/ChangeLog 2effeeacadeab8edd2c3c4ae856f019d zlib/ChangeLog.gcj 0e9a37be8e3b85cc0ccf60504064c297 zlib/ChangeLog.jit b7a1991f01daea3efe108a215c5514a5 zlib/FAQ diff -Nrcpad gcc-7.4.0/NEWS gcc-7.5.0/NEWS *** gcc-7.4.0/NEWS Thu Dec 6 09:59:16 2018 --- gcc-7.5.0/NEWS Thu Nov 14 07:35:46 2019 *************** http://gcc.gnu.org/gcc-7/index.html *** 9,35 **** GCC 7 Release Series ! Dec 6, 2018 The [1]GNU project and the GCC developers are pleased to announce the ! release of GCC 7.4. This release is a bug-fix release, containing fixes for regressions in ! GCC 7.3 relative to previous releases of GCC. Release History GCC 7.4 ! Dec 6, 2018 ([2]changes, [3]documentation) GCC 7.3 ! Jan 25, 2018 ([4]changes, [5]documentation) GCC 7.2 ! Aug 14, 2017 ([6]changes, [7]documentation) GCC 7.1 ! May 2, 2017 ([8]changes, [9]documentation) References and Acknowledgements --- 9,38 ---- GCC 7 Release Series ! Nov 14, 2019 The [1]GNU project and the GCC developers are pleased to announce the ! release of GCC 7.5. This release is a bug-fix release, containing fixes for regressions in ! GCC 7.4 relative to previous releases of GCC. Release History + GCC 7.5 + Nov 14, 2019 ([2]changes, [3]documentation) + GCC 7.4 ! Dec 6, 2018 ([4]changes, [5]documentation) GCC 7.3 ! Jan 25, 2018 ([6]changes, [7]documentation) GCC 7.2 ! Aug 14, 2017 ([8]changes, [9]documentation) GCC 7.1 ! May 2, 2017 ([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 ! 2018-12-06[22]. References 1. http://www.gnu.org/ 2. http://gcc.gnu.org/gcc-7/changes.html ! 3. http://gcc.gnu.org/onlinedocs/7.4.0/ 4. http://gcc.gnu.org/gcc-7/changes.html ! 5. http://gcc.gnu.org/onlinedocs/7.3.0/ 6. http://gcc.gnu.org/gcc-7/changes.html ! 7. http://gcc.gnu.org/onlinedocs/7.2.0/ 8. http://gcc.gnu.org/gcc-7/changes.html ! 9. http://gcc.gnu.org/onlinedocs/7.1.0/ ! 10. http://gcc.gnu.org/gcc-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. 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. https://www.fsf.org/ ! 21. https://gcc.gnu.org/about.html ! 22. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-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 ! 2019-11-14[24]. References 1. http://www.gnu.org/ 2. http://gcc.gnu.org/gcc-7/changes.html ! 3. http://gcc.gnu.org/onlinedocs/7.5.0/ 4. http://gcc.gnu.org/gcc-7/changes.html ! 5. http://gcc.gnu.org/onlinedocs/7.4.0/ 6. http://gcc.gnu.org/gcc-7/changes.html ! 7. http://gcc.gnu.org/onlinedocs/7.3.0/ 8. http://gcc.gnu.org/gcc-7/changes.html ! 9. http://gcc.gnu.org/onlinedocs/7.2.0/ ! 10. http://gcc.gnu.org/gcc-7/changes.html ! 11. http://gcc.gnu.org/onlinedocs/7.1.0/ ! 12. http://gcc.gnu.org/gcc-7/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. https://www.fsf.org/ ! 23. https://gcc.gnu.org/about.html ! 24. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-7/changes.html *************** GCC 7.4 *** 1139,1158 **** 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 [28]GCC manuals. If that fails, the ! [29]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 [30]gcc@gcc.gnu.org. All of [31]our lists have public archives. ! Copyright (C) [32]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 [33]maintained by the GCC team. Last modified ! 2018-12-06[34]. References --- 1144,1170 ---- not be complete (that is, it is possible that some PRs that have been fixed are not listed here). + GCC 7.5 + + This is the [28]list of problem reports (PRs) from GCC's bug tracking + system that are known to be fixed in the 7.5 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 [29]GCC manuals. If that fails, the ! [30]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 [31]gcc@gcc.gnu.org. All of [32]our lists have public archives. ! Copyright (C) [33]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 [34]maintained by the GCC team. Last modified ! 2019-11-14[35]. References *************** References *** 1183,1200 **** 25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.3 26. https://www.gaisler.com/index.php/information/app-tech-notes 27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.4 ! 28. https://gcc.gnu.org/onlinedocs/ ! 29. mailto:gcc-help@gcc.gnu.org ! 30. mailto:gcc@gcc.gnu.org ! 31. https://gcc.gnu.org/lists.html ! 32. https://www.fsf.org/ ! 33. https://gcc.gnu.org/about.html ! 34. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-6/index.html GCC 6 Release Series October 26, 2018 The [1]GNU project and the GCC developers are pleased to announce the --- 1195,1215 ---- 25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.3 26. https://www.gaisler.com/index.php/information/app-tech-notes 27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.4 ! 28. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.5 ! 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. https://www.fsf.org/ ! 34. https://gcc.gnu.org/about.html ! 35. http://validator.w3.org/check/referer ====================================================================== http://gcc.gnu.org/gcc-6/index.html GCC 6 Release Series + (This release series is no longer supported.) + October 26, 2018 The [1]GNU project and the GCC developers are pleased to announce the *************** References and Acknowledgements *** 1252,1258 **** provided this notice is preserved. These pages are [23]maintained by the GCC team. Last modified ! 2018-10-26[24]. References --- 1267,1273 ---- provided this notice is preserved. These pages are [23]maintained by the GCC team. Last modified ! 2019-06-09[24]. References *************** http://gcc.gnu.org/gcc-5/index.html *** 2033,2038 **** --- 2048,2055 ---- GCC 5 Release Series + (This release series is no longer supported.) + October 10, 2017 The [1]GNU project and the GCC developers are pleased to announce the *************** References and Acknowledgements *** 2090,2096 **** provided this notice is preserved. These pages are [23]maintained by the GCC team. Last modified ! 2018-09-30[24]. References --- 2107,2113 ---- provided this notice is preserved. These pages are [23]maintained by the GCC team. Last modified ! 2019-06-09[24]. References *************** http://gcc.gnu.org/gcc-4.9/index.html *** 3062,3067 **** --- 3079,3086 ---- GCC 4.9 Release Series + (This release series is no longer supported.) + Aug 3, 2016 The [1]GNU project and the GCC developers are pleased to announce the *************** http://gcc.gnu.org/gcc-4.9/index.html *** 3070,3077 **** This release is a bug-fix release, containing fixes for regressions in GCC 4.9.3 relative to previous releases of GCC. - This release series is no longer maintained. - Release History GCC 4.9.4 --- 3089,3094 ---- *************** References and Acknowledgements *** 3121,3127 **** provided this notice is preserved. These pages are [23]maintained by the GCC team. Last modified ! 2018-09-30[24]. References --- 3138,3144 ---- provided this notice is preserved. These pages are [23]maintained by the GCC team. Last modified ! 2019-06-09[24]. References *************** http://gcc.gnu.org/gcc-4.8/index.html *** 3805,3810 **** --- 3822,3829 ---- GCC 4.8 Release Series + (This release series is no longer supported.) + June 23, 2015 The [1]GNU project and the GCC developers are pleased to announce the *************** http://gcc.gnu.org/gcc-4.8/index.html *** 3813,3820 **** This release is a bug-fix release, containing fixes for regressions in GCC 4.8.4 relative to previous releases of GCC. - This release series is no longer maintained. - Release History GCC 4.8.5 --- 3832,3837 ---- *************** References and Acknowledgements *** 3867,3873 **** provided this notice is preserved. These pages are [25]maintained by the GCC team. Last modified ! 2018-09-30[26]. References --- 3884,3890 ---- provided this notice is preserved. These pages are [25]maintained by the GCC team. Last modified ! 2019-06-09[26]. References *************** http://gcc.gnu.org/gcc-4.7/index.html *** 4676,4681 **** --- 4693,4700 ---- GCC 4.7 Release Series + (This release series is no longer supported.) + June 12, 2014 The [1]GNU project and the GCC developers are pleased to announce the *************** http://gcc.gnu.org/gcc-4.7/index.html *** 4684,4691 **** This release is a bug-fix release, containing fixes for regressions in GCC 4.7.3 relative to previous releases of GCC. - This release series is no longer maintained. - Release History GCC 4.7.4 --- 4703,4708 ---- *************** References and Acknowledgements *** 4735,4741 **** provided this notice is preserved. These pages are [23]maintained by the GCC team. Last modified ! 2018-09-30[24]. References --- 4752,4758 ---- provided this notice is preserved. These pages are [23]maintained by the GCC team. Last modified ! 2019-06-09[24]. References *************** void foo (char *a, const char *b, const *** 4977,4984 **** New Languages and Language specific improvements ! * Version 3.1 of the [5]OpenMP specification is now supported for the ! C, C++, and Fortran compilers. Ada --- 4994,5001 ---- New Languages and Language specific improvements ! * Version 3.1 of the OpenMP specification is now supported for the C, ! C++, and Fortran compilers. Ada *************** New Languages and Language specific impr *** 5005,5011 **** constructs, use the -fgnu-tm option. Support is currently available for Alpha, ARM, PowerPC, SH, SPARC, and 32-bit/64-bit x86 platforms. ! For more details on transactional memory see [6]the GCC WiKi. * Support for atomic operations specifying the C++11/C11 memory model has been added. These new __atomic routines replace the existing __sync built-in routines. --- 5022,5028 ---- constructs, use the -fgnu-tm option. Support is currently available for Alpha, ARM, PowerPC, SH, SPARC, and 32-bit/64-bit x86 platforms. ! For more details on transactional memory see [5]the GCC WiKi. * Support for atomic operations specifying the C++11/C11 memory model has been added. These new __atomic routines replace the existing __sync built-in routines. *************** New Languages and Language specific impr *** 5016,5022 **** library functions is available on the GCC atomic wiki in the "External Atomics Library" section. For more details on the memory models and features, see the ! [7]atomic wiki. * When a binary operation is performed on vector types and one of the operands is a uniform vector, it is possible to replace the vector with the generating element. For example: --- 5033,5039 ---- library functions is available on the GCC atomic wiki in the "External Atomics Library" section. For more details on the memory models and features, see the ! [6]atomic wiki. * When a binary operation is performed on vector types and one of the operands is a uniform vector, it is possible to replace the vector with the generating element. For example: *************** res = a - x; /* means a - {x,x,x,x} */ *** 5046,5052 **** * G++ now accepts the -std=c++11, -std=gnu++11, and -Wc++11-compat options, which are equivalent to -std=c++0x, -std=gnu++0x, and -Wc++0x-compat, respectively. ! * G++ now implements [8]C++11 extended friend syntax: template class Q --- 5063,5069 ---- * G++ now accepts the -std=c++11, -std=gnu++11, and -Wc++11-compat options, which are equivalent to -std=c++0x, -std=gnu++0x, and -Wc++0x-compat, respectively. ! * G++ now implements [7]C++11 extended friend syntax: template class Q *************** struct B *** 5061,5067 **** int ar[Q::I]; }; ! * Thanks to Ville Voutilainen, G++ now implements [9]C++11 explicit override control. struct B { --- 5078,5084 ---- int ar[Q::I]; }; ! * Thanks to Ville Voutilainen, G++ now implements [8]C++11 explicit override control. struct B { *************** struct D : B { *** 5078,5103 **** struct E final { }; struct F: E { }; // error: deriving from final class ! * G++ now implements [10]C++11 non-static data member initializers. struct A { int i = 42; } a; // initializes a.i to 42 ! * Thanks to Ed Smith-Rowland, G++ now implements [11]C++11 user-defined literals. // Not actually a good approximation. :) constexpr long double operator"" _degrees (long double d) { return d * 0.0175; } long double pi = 180.0_degrees; ! * G++ now implements [12]C++11 alias-declarations. template using Ptr = T*; Ptr ip; // decltype(ip) is int* * Thanks to Ville Voutilainen and Pedro Lamarao, G++ now implements ! [13]C++11 delegating constructors. struct A { A(int); --- 5095,5120 ---- struct E final { }; struct F: E { }; // error: deriving from final class ! * G++ now implements [9]C++11 non-static data member initializers. struct A { int i = 42; } a; // initializes a.i to 42 ! * Thanks to Ed Smith-Rowland, G++ now implements [10]C++11 user-defined literals. // Not actually a good approximation. :) constexpr long double operator"" _degrees (long double d) { return d * 0.0175; } long double pi = 180.0_degrees; ! * G++ now implements [11]C++11 alias-declarations. template using Ptr = T*; Ptr ip; // decltype(ip) is int* * Thanks to Ville Voutilainen and Pedro Lamarao, G++ now implements ! [12]C++11 delegating constructors. struct A { A(int); *************** const int &y = f(2); *** 5176,5189 **** Using-declarations are to be used instead. Furthermore, some efforts have been made to improve the support of class scope using-declarations. In particular, using-declarations referring to ! a dependent type now work as expected ([14]bug c++/14258). * The ELF symbol visibility of a template instantiation is now properly constrained by the visibility of its template arguments ! ([15]bug c++/35688). Runtime Library (libstdc++) ! * [16]Improved experimental support for the new ISO C++ standard, C++11, including: + using noexcept in most of the library; + implementations of pointer_traits, allocator_traits and --- 5193,5206 ---- Using-declarations are to be used instead. Furthermore, some efforts have been made to improve the support of class scope using-declarations. In particular, using-declarations referring to ! a dependent type now work as expected ([13]bug c++/14258). * The ELF symbol visibility of a template instantiation is now properly constrained by the visibility of its template arguments ! ([14]bug c++/35688). Runtime Library (libstdc++) ! * [15]Improved experimental support for the new ISO C++ standard, C++11, including: + using noexcept in most of the library; + implementations of pointer_traits, allocator_traits and *************** const int &y = f(2); *** 5199,5225 **** Fortran ! * The compile flag [17]-fstack-arrays has been added, which causes all local arrays to be put on stack memory. For some programs this will improve the performance significantly. If your program uses very large local arrays, it is possible that you will have to extend your runtime limits for stack memory. ! * The [18]-Ofast flag now also implies [19]-fno-protect-parens and ! [20]-fstack-arrays. * Front-end optimizations can now be selected by the ! [21]-ffrontend-optimize option and deselected by the -fno-frontend-optimize option. * When front-end optimization removes a function call, ! [22]-Wfunction-elimination warns about that. * When performing front-end-optimization, the ! [23]-faggressive-function-elimination option allows the removal of duplicate function calls even for impure functions. ! * The flag [24]-Wreal-q-constant has been added, which warns if floating-point literals have been specified using q (such as 1.0q0); the q marker is now supported as a vendor extension to denote quad precision (REAL(16) or, if not available, REAL(10)). Consider using a kind parameter (such as in 1.0_qp) instead, which ! can be obtained via [25]SELECTED_REAL_KIND. * The GFORTRAN_USE_STDERR environment variable has been removed. GNU Fortran now always prints error messages to standard error. If you wish to redirect standard error, please consult the manual for your --- 5216,5242 ---- Fortran ! * The compile flag [16]-fstack-arrays has been added, which causes all local arrays to be put on stack memory. For some programs this will improve the performance significantly. If your program uses very large local arrays, it is possible that you will have to extend your runtime limits for stack memory. ! * The [17]-Ofast flag now also implies [18]-fno-protect-parens and ! [19]-fstack-arrays. * Front-end optimizations can now be selected by the ! [20]-ffrontend-optimize option and deselected by the -fno-frontend-optimize option. * When front-end optimization removes a function call, ! [21]-Wfunction-elimination warns about that. * When performing front-end-optimization, the ! [22]-faggressive-function-elimination option allows the removal of duplicate function calls even for impure functions. ! * The flag [23]-Wreal-q-constant has been added, which warns if floating-point literals have been specified using q (such as 1.0q0); the q marker is now supported as a vendor extension to denote quad precision (REAL(16) or, if not available, REAL(10)). Consider using a kind parameter (such as in 1.0_qp) instead, which ! can be obtained via [24]SELECTED_REAL_KIND. * The GFORTRAN_USE_STDERR environment variable has been removed. GNU Fortran now always prints error messages to standard error. If you wish to redirect standard error, please consult the manual for your *************** const int &y = f(2); *** 5229,5260 **** gfortran will now always abort the program. Whether a core dump is generated depends on the user environment settings; see the ulimit -c setting for POSIX shells, limit coredumpsize for C shells, and ! the [26]WER user-mode dumps settings on Windows. ! * The [27]-fbacktrace option is now enabled by default. When encountering a fatal error, gfortran will attempt to print a backtrace to standard error before aborting. It can be disabled with -fno-backtrace. Note: On POSIX targets with the addr2line utility from GNU binutils, GNU Fortran can print a backtrace with function name, file name, line number information in addition to the addresses; otherwise only the addresses are printed. ! * [28]Fortran 2003: + Generic interface names which have the same name as derived types are now supported, which allows to write constructor functions. Note that Fortran does not support static constructor functions; only default initialization or an explicit structure-constructor initialization are available. ! + [29]Polymorphic (class) arrays are now supported. ! * [30]Fortran 2008: + Support for the DO CONCURRENT construct has been added, which allows the user to specify that individual loop iterations have no interdependencies. ! + [31]Coarrays: Full single-image support except for polymorphic coarrays. Additionally, preliminary support for multiple ! images via an MPI-based [32]coarray communication library has been added. Note: The library version is not yet usable as remote coarray access is not yet possible. ! * [33]TS 29113: ! + New flag [34]-std=f2008ts permits programs that are expected to conform to the Fortran 2008 standard and the draft Technical Specification (TS) 29113 on Further Interoperability of Fortran with C. --- 5246,5277 ---- gfortran will now always abort the program. Whether a core dump is generated depends on the user environment settings; see the ulimit -c setting for POSIX shells, limit coredumpsize for C shells, and ! the [25]WER user-mode dumps settings on Windows. ! * The [26]-fbacktrace option is now enabled by default. When encountering a fatal error, gfortran will attempt to print a backtrace to standard error before aborting. It can be disabled with -fno-backtrace. Note: On POSIX targets with the addr2line utility from GNU binutils, GNU Fortran can print a backtrace with function name, file name, line number information in addition to the addresses; otherwise only the addresses are printed. ! * [27]Fortran 2003: + Generic interface names which have the same name as derived types are now supported, which allows to write constructor functions. Note that Fortran does not support static constructor functions; only default initialization or an explicit structure-constructor initialization are available. ! + [28]Polymorphic (class) arrays are now supported. ! * [29]Fortran 2008: + Support for the DO CONCURRENT construct has been added, which allows the user to specify that individual loop iterations have no interdependencies. ! + [30]Coarrays: Full single-image support except for polymorphic coarrays. Additionally, preliminary support for multiple ! images via an MPI-based [31]coarray communication library has been added. Note: The library version is not yet usable as remote coarray access is not yet possible. ! * [32]TS 29113: ! + New flag [33]-std=f2008ts permits programs that are expected to conform to the Fortran 2008 standard and the draft Technical Specification (TS) 29113 on Further Interoperability of Fortran with C. *************** const int &y = f(2); *** 5267,5273 **** Go ! * GCC 4.7 implements the [35]Go 1 language standard. The library support in 4.7.0 is not quite complete, due to release timing. Release 4.7.1 includes complete support for Go 1. The Go library is from the Go 1.0.1 release. --- 5284,5290 ---- Go ! * GCC 4.7 implements the [34]Go 1 language standard. The library support in 4.7.0 is not quite complete, due to release timing. Release 4.7.1 includes complete support for Go 1. The Go library is from the Go 1.0.1 release. *************** New Targets and Target Specific Improvem *** 5290,5296 **** * GCC now supports the XMEGA architecture. This requires GNU binutils 2.22 or later. ! * Support for the [36]named address spaces __flash, __flash1, ..., __flash5 and __memx has been added. These address spaces locate read-only data in flash memory and allow reading from flash memory by means of ordinary C code, i.e. without the need of (inline) --- 5307,5313 ---- * GCC now supports the XMEGA architecture. This requires GNU binutils 2.22 or later. ! * Support for the [35]named address spaces __flash, __flash1, ..., __flash5 and __memx has been added. These address spaces locate read-only data in flash memory and allow reading from flash memory by means of ordinary C code, i.e. without the need of (inline) *************** int add_values (const __flash int *p, in *** 5305,5316 **** * Support has been added for the AVR-specific configure option --with-avrlibc=yes in order to arrange for better integration of ! [37]AVR-Libc. This configure option is supported in avr-gcc 4.7.2 and newer and will only take effect in non-RTEMS configurations. If avr-gcc is configured for RTEMS, the option will be ignored which ! is the same as specifying --with-avrlibc=no. See [38]PR54461 for more technical details. ! * Support for AVR-specific [39]built-in functions has been added. * Support has been added for the signed and unsigned 24-bit scalar integer types __int24 and __uint24. * New command-line options -maccumulate-args, -mbranch-cost=cost and --- 5322,5333 ---- * Support has been added for the AVR-specific configure option --with-avrlibc=yes in order to arrange for better integration of ! [36]AVR-Libc. This configure option is supported in avr-gcc 4.7.2 and newer and will only take effect in non-RTEMS configurations. If avr-gcc is configured for RTEMS, the option will be ignored which ! is the same as specifying --with-avrlibc=no. See [37]PR54461 for more technical details. ! * Support for AVR-specific [38]built-in functions has been added. * Support has been added for the signed and unsigned 24-bit scalar integer types __int24 and __uint24. * New command-line options -maccumulate-args, -mbranch-cost=cost and *************** void set_portb (uint8_t value) *** 5392,5398 **** FMA, BMI, BMI2, LZCNT is available through -march=core-avx2. * Support for new AMD family 15h processors (Piledriver core) is now available through -march=bdver2 and -mtune=bdver2 options. ! * Support for [40]the x32 psABI is now available through the -mx32 option. * Windows mingw targets are using the -mms-bitfields option by default. --- 5409,5415 ---- FMA, BMI, BMI2, LZCNT is available through -march=core-avx2. * Support for new AMD family 15h processors (Piledriver core) is now available through -march=bdver2 and -mtune=bdver2 options. ! * Support for [39]the x32 psABI is now available through the -mx32 option. * Windows mingw targets are using the -mms-bitfields option by default. *************** Other significant improvements *** 5507,5563 **** the DW_AT_producer attribute string in the DWARF debugging information. * GCC now supports various new GNU extensions to the DWARF debugging ! information format, like [41]entry value and [42]call site ! information, [43]typed DWARF stack or [44]a more compact macro representation. Support for these extensions has been added to GDB 7.4. They can be disabled through the -gstrict-dwarf command-line option. GCC 4.7.1 ! This is the [45]list of problem reports (PRs) from GCC's bug tracking system that are known to be fixed in the 4.7.1 release. This list might not be complete (that is, it is possible that some PRs that have been fixed are not listed here). ! The Go front end in the 4.7.1 release fully supports the [46]Go 1 language standard. GCC 4.7.2 ! This is the [47]list of problem reports (PRs) from GCC's bug tracking system that are known to be fixed in the 4.7.2 release. This list might not be complete (that is, it is possible that some PRs that have been fixed are not listed here). GCC 4.7.3 ! This is the [48]list of problem reports (PRs) from GCC's bug tracking system that are known to be fixed in the 4.7.3 release. This list might 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 ! 2018-09-30[56]. References --- 5524,5580 ---- the DW_AT_producer attribute string in the DWARF debugging information. * GCC now supports various new GNU extensions to the DWARF debugging ! information format, like [40]entry value and [41]call site ! information, [42]typed DWARF stack or [43]a more compact macro representation. Support for these extensions has been added to GDB 7.4. They can be disabled through the -gstrict-dwarf command-line option. GCC 4.7.1 ! This is the [44]list of problem reports (PRs) from GCC's bug tracking system that are known to be fixed in the 4.7.1 release. This list might not be complete (that is, it is possible that some PRs that have been fixed are not listed here). ! The Go front end in the 4.7.1 release fully supports the [45]Go 1 language standard. GCC 4.7.2 ! This is the [46]list of problem reports (PRs) from GCC's bug tracking system that are known to be fixed in the 4.7.2 release. This list might not be complete (that is, it is possible that some PRs that have been fixed are not listed here). GCC 4.7.3 ! This is the [47]list of problem reports (PRs) from GCC's bug tracking system that are known to be fixed in the 4.7.3 release. This list might 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 [48]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 [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 ! 2019-07-10[55]. References *************** References *** 5565,5627 **** 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://www.openmp.org/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.4/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. https://docs.microsoft.com/en-us/windows/desktop/wer/collecting-user-mode-dumps ! 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. https://golang.org/doc/go1 ! 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/ShowIssue.php?issue=140425.1 ! 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. https://golang.org/doc/go1 ! 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. https://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 --- 5582,5645 ---- 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. https://gcc.gnu.org/wiki/TransactionalMemory ! 6. https://gcc.gnu.org/wiki/Atomic/GCCMM ! 7. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html 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. https://gcc.gnu.org/PR14258 ! 14. https://gcc.gnu.org/PR35688 ! 15. https://gcc.gnu.org/onlinedocs/gcc-4.7.4/libstdc++/manual/manual/status.html#status.iso.2011 ! 16. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254 ! 17. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Optimize-Options.html#index-Ofast-689 ! 18. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfno-protect-parens_007d-270 ! 19. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254 ! 20. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfrontend-optimize_007d-275 ! 21. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWfunction-elimination_007d-170 ! 22. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270 ! 23. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149 ! 24. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html ! 25. https://docs.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps ! 26. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183 ! 27. https://gcc.gnu.org/wiki/Fortran2003Status ! 28. https://gcc.gnu.org/wiki/OOP ! 29. https://gcc.gnu.org/wiki/Fortran2008Status ! 30. https://gcc.gnu.org/wiki/Coarray ! 31. https://gcc.gnu.org/wiki/CoarrayLib ! 32. https://gcc.gnu.org/wiki/TS29113Status ! 33. 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 ! 34. https://golang.org/doc/go1 ! 35. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html ! 36. http://nongnu.org/avr-libc/ ! 37. https://gcc.gnu.org/PR54461 ! 38. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built%5f002din-Functions.html ! 39. https://sites.google.com/site/x32abi/ ! 40. http://www.dwarfstd.org/ShowIssue.php?issue=100909.1 ! 41. http://www.dwarfstd.org/ShowIssue.php?issue=100909.2 ! 42. http://www.dwarfstd.org/ShowIssue.php?issue=140425.1 ! 43. http://www.dwarfstd.org/ShowIssue.php?issue=110722.1 ! 44. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.1 ! 45. https://golang.org/doc/go1 ! 46. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.2 ! 47. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.3 ! 48. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.4 ! 49. https://gcc.gnu.org/onlinedocs/ ! 50. mailto:gcc-help@gcc.gnu.org ! 51. mailto:gcc@gcc.gnu.org ! 52. https://gcc.gnu.org/lists.html ! 53. https://www.fsf.org/ ! 54. https://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 + (This release series is no longer supported.) + April 12, 2013 The [1]GNU project and the GCC developers are pleased to announce the *************** http://gcc.gnu.org/gcc-4.6/index.html *** 5630,5637 **** This release is a bug-fix release, containing fixes for regressions in GCC 4.6.3 relative to previous releases of GCC. - This release series is no longer maintained. - Release History GCC 4.6.4 --- 5648,5653 ---- *************** References and Acknowledgements *** 5681,5687 **** provided this notice is preserved. These pages are [23]maintained by the GCC team. Last modified ! 2018-09-30[24]. References --- 5697,5703 ---- provided this notice is preserved. These pages are [23]maintained by the GCC team. Last modified ! 2019-06-09[24]. References *************** http://gcc.gnu.org/gcc-4.5/index.html *** 6645,6650 **** --- 6661,6668 ---- GCC 4.5 Release Series + (This release series is no longer supported.) + Jul 2, 2012 The [1]GNU project and the GCC developers are pleased to announce the *************** http://gcc.gnu.org/gcc-4.5/index.html *** 6653,6660 **** This release is a bug-fix release, containing fixes for regressions in GCC 4.5.3 relative to previous releases of GCC. - This release series is no longer maintained. - Release History GCC 4.5.4 --- 6671,6676 ---- *************** References and Acknowledgements *** 6704,6710 **** provided this notice is preserved. These pages are [18]maintained by the GCC team. Last modified ! 2018-09-30[19]. References --- 6720,6726 ---- provided this notice is preserved. These pages are [18]maintained by the GCC team. Last modified ! 2019-06-09[19]. References *************** http://gcc.gnu.org/gcc-4.4/index.html *** 7419,7424 **** --- 7435,7442 ---- GCC 4.4 Release Series + This release series is no longer maintained. + March 13, 2012 The [1]GNU project and the GCC developers are pleased to announce the *************** http://gcc.gnu.org/gcc-4.4/index.html *** 7427,7434 **** This release is a bug-fix release, containing fixes for regressions in GCC 4.4.6 relative to previous releases of GCC. - This release series is no longer maintained. - Release History GCC 4.4.7 --- 7445,7450 ---- *************** References and Acknowledgements *** 7487,7493 **** provided this notice is preserved. These pages are [21]maintained by the GCC team. Last modified ! 2018-09-30[22]. References --- 7503,7509 ---- provided this notice is preserved. These pages are [21]maintained by the GCC team. Last modified ! 2019-06-09[22]. References *************** http://gcc.gnu.org/gcc-4.3/index.html *** 8151,8156 **** --- 8167,8174 ---- GCC 4.3 Release Series + (This release series is no longer supported.) + Jun 27, 2011 The [1]GNU project and the GCC developers are pleased to announce the *************** http://gcc.gnu.org/gcc-4.3/index.html *** 8159,8166 **** This release is a bug-fix release, containing fixes for regressions in GCC 4.3.5 relative to previous releases of GCC. - This release series is no longer maintained. - Release History GCC 4.3.6 --- 8177,8182 ---- *************** References and Acknowledgements *** 8216,8222 **** provided this notice is preserved. These pages are [20]maintained by the GCC team. Last modified ! 2018-09-30[21]. References --- 8232,8238 ---- provided this notice is preserved. These pages are [20]maintained by the GCC team. Last modified ! 2019-06-09[21]. References *************** http://gcc.gnu.org/gcc-4.2/index.html *** 9062,9067 **** --- 9078,9085 ---- GCC 4.2 Release Series + (This release series is no longer supported.) + May 19, 2008 The [1]GNU project and the GCC developers are pleased to announce the *************** http://gcc.gnu.org/gcc-4.2/index.html *** 9070,9077 **** This release is a bug-fix release, containing fixes for regressions in GCC 4.2.3 relative to previous releases of GCC. - This release series is no longer maintained. - Release History GCC 4.2.4 --- 9088,9093 ---- *************** References and Acknowledgements *** 9121,9127 **** provided this notice is preserved. These pages are [18]maintained by the GCC team. Last modified ! 2018-09-30[19]. References --- 9137,9143 ---- provided this notice is preserved. These pages are [18]maintained by the GCC team. Last modified ! 2019-06-09[19]. References *************** http://gcc.gnu.org/gcc-4.1/index.html *** 9471,9476 **** --- 9487,9494 ---- GCC 4.1 Release Series + (This release series is no longer supported.) + February 13, 2007 The [1]GNU project and the GCC developers are pleased to announce the *************** http://gcc.gnu.org/gcc-4.1/index.html *** 9479,9486 **** This release is a bug-fix release, containing fixes for regressions in GCC 4.1.1 relative to previous releases of GCC. - This release series is no longer maintained. - Release History GCC 4.1.2 --- 9497,9502 ---- *************** References and Acknowledgements *** 9524,9530 **** provided this notice is preserved. These pages are [16]maintained by the GCC team. Last modified ! 2018-09-30[17]. References --- 9540,9546 ---- provided this notice is preserved. These pages are [16]maintained by the GCC team. Last modified ! 2019-06-09[17]. References *************** http://gcc.gnu.org/gcc-4.0/index.html *** 10110,10115 **** --- 10126,10133 ---- GCC 4.0 Release Series + (This release series is no longer supported.) + January 31, 2007 The [1]GNU project and the GCC developers are pleased to announce the *************** http://gcc.gnu.org/gcc-4.0/index.html *** 10118,10125 **** This release is a bug-fix release, containing fixes for regressions in GCC 4.0.3 relative to previous releases of GCC. - This release series is no longer maintained. - Release History GCC 4.0.4 --- 10136,10141 ---- *************** References and Acknowledgements *** 10169,10175 **** provided this notice is preserved. These pages are [18]maintained by the GCC team. Last modified ! 2018-09-30[19]. References --- 10185,10191 ---- provided this notice is preserved. These pages are [18]maintained by the GCC team. Last modified ! 2019-06-09[19]. References *************** http://gcc.gnu.org/gcc-3.4/index.html *** 10727,10732 **** --- 10743,10750 ---- GCC 3.4 Release Series + (This release series is no longer supported.) + May 26, 2006 The [1]GNU project and the GCC developers are pleased to announce the *************** http://gcc.gnu.org/gcc-3.4/index.html *** 10740,10747 **** improvements, bug fixes, and other changes, thanks to an [3]amazing group of volunteers. - This release series is no longer maintained. - Release History GCC 3.4.6 --- 10758,10763 ---- *************** References and Acknowledgements *** 10797,10803 **** provided this notice is preserved. These pages are [22]maintained by the GCC team. Last modified ! 2018-09-30[23]. References --- 10813,10819 ---- provided this notice is preserved. These pages are [22]maintained by the GCC team. Last modified ! 2019-06-09[23]. References *************** http://gcc.gnu.org/gcc-3.3/index.html *** 13012,13017 **** --- 13028,13035 ---- GCC 3.3 Release Series + (This release series is no longer supported.) + May 03, 2005 The [1]GNU project and the GCC developers are pleased to announce the *************** http://gcc.gnu.org/gcc-3.3/index.html *** 13026,13033 **** improvements, bug fixes, and other changes, thanks to an [3]amazing group of volunteers. - This release series is no longer maintained. - Release History GCC 3.3.6 --- 13044,13049 ---- *************** References and Acknowledgements *** 13083,13089 **** provided this notice is preserved. These pages are [21]maintained by the GCC team. Last modified ! 2018-09-30[22]. References --- 13099,13105 ---- provided this notice is preserved. These pages are [21]maintained by the GCC team. Last modified ! 2019-06-09[22]. References *************** http://gcc.gnu.org/gcc-3.2/index.html *** 15025,15030 **** --- 15041,15048 ---- GCC 3.2 Release Series + (This release series is no longer supported.) + April 25, 2003 The [1]GNU project and the GCC developers are pleased to announce the *************** http://gcc.gnu.org/gcc-3.2/index.html *** 15042,15049 **** Please refer to our [2]detailed list of news, caveats, and bug-fixes for further information. - This release series is no longer maintained. - Release History GCC 3.2.3 --- 15060,15065 ---- *************** References and Acknowledgements *** 15090,15096 **** provided this notice is preserved. These pages are [17]maintained by the GCC team. Last modified ! 2018-09-30[18]. References --- 15106,15112 ---- provided this notice is preserved. These pages are [17]maintained by the GCC team. Last modified ! 2019-06-09[18]. References *************** http://gcc.gnu.org/gcc-3.1/index.html *** 15975,15980 **** --- 15991,15998 ---- GCC 3.1 + (This release series is no longer supported.) + July 27, 2002 The [1]GNU project and the GCC developers are pleased to announce the *************** http://gcc.gnu.org/gcc-3.1/index.html *** 15982,15989 **** The links below still apply to GCC 3.1.1. - This release series is no longer maintained. - May 15, 2002 The [2]GNU project and the GCC developers are pleased to announce the --- 16000,16005 ---- *************** http://gcc.gnu.org/gcc-3.1/index.html *** 16020,16026 **** provided this notice is preserved. These pages are [14]maintained by the GCC team. Last modified ! 2018-09-30[15]. References --- 16036,16042 ---- provided this notice is preserved. These pages are [14]maintained by the GCC team. Last modified ! 2019-06-09[15]. References *************** http://gcc.gnu.org/gcc-3.0/index.html *** 16398,16411 **** GCC 3.0.4 February 20, 2002 The [1]GNU project and the GCC developers are pleased to announce the release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0 series. - This release series is no longer maintained. - GCC used to stand for the GNU C Compiler, but since the compiler supports several other languages aside from C, it now stands for the GNU Compiler Collection. --- 16414,16427 ---- GCC 3.0.4 + (This release series is no longer supported.) + February 20, 2002 The [1]GNU project and the GCC developers are pleased to announce the release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0 series. GCC used to stand for the GNU C Compiler, but since the compiler supports several other languages aside from C, it now stands for the GNU Compiler Collection. *************** Previous 3.0.x Releases *** 16450,16456 **** provided this notice is preserved. These pages are [14]maintained by the GCC team. Last modified ! 2018-09-30[15]. References --- 16466,16472 ---- provided this notice is preserved. These pages are [14]maintained by the GCC team. Last modified ! 2019-06-09[15]. References *************** http://gcc.gnu.org/gcc-2.95/index.html *** 16731,16741 **** GCC 2.95 March 16, 2001: The GNU project and the GCC developers are pleased to announce the release of GCC version 2.95.3. - This release is no longer maintained. - Release History GCC 2.95.3 --- 16747,16757 ---- GCC 2.95 + (This release series is no longer supported.) + March 16, 2001: The GNU project and the GCC developers are pleased to announce the release of GCC version 2.95.3. Release History GCC 2.95.3 *************** References and Acknowledgements *** 16797,16803 **** provided this notice is preserved. These pages are [15]maintained by the GCC team. Last modified ! 2018-09-30[16]. References --- 16813,16819 ---- provided this notice is preserved. These pages are [15]maintained by the GCC team. Last modified ! 2019-06-09[16]. References diff -Nrcpad gcc-7.4.0/config/ChangeLog gcc-7.5.0/config/ChangeLog *** gcc-7.4.0/config/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/config/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/contrib/ChangeLog gcc-7.5.0/contrib/ChangeLog *** gcc-7.4.0/contrib/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/contrib/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,11 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-08-16 Uros Bizjak + + * test_summary: Do not escape "=". + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/contrib/header-tools/ChangeLog gcc-7.5.0/contrib/header-tools/ChangeLog *** gcc-7.4.0/contrib/header-tools/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/contrib/header-tools/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/contrib/reghunt/ChangeLog gcc-7.5.0/contrib/reghunt/ChangeLog *** gcc-7.4.0/contrib/reghunt/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/contrib/reghunt/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/contrib/regression/ChangeLog gcc-7.5.0/contrib/regression/ChangeLog *** gcc-7.4.0/contrib/regression/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/contrib/regression/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/contrib/test_summary gcc-7.5.0/contrib/test_summary *** gcc-7.4.0/contrib/test_summary Fri Jun 4 14:01:22 2010 --- gcc-7.5.0/contrib/test_summary Fri Aug 16 12:08:27 2019 *************** NR == 1 { *** 126,132 **** if (lang == "") lang = " "$2" "; else lang = " "; } $2 == "version" { save = $0; $1 = ""; $2 = ""; version = $0; gsub(/^ */, "", version); gsub(/\r$/, "", version); $0 = save; } ! /\===.*Summary/ { print ""; print; blanks=1; } /tests ===/ || /^(Target|Host|Native)/ || $2 == "version" { print; blanks=1; } /^(XPASS|FAIL|UNRESOLVED|WARNING|ERROR|# of )/ { sub ("\r", ""); print; } /^using:/ { print ""; print; print ""; } --- 126,132 ---- if (lang == "") lang = " "$2" "; else lang = " "; } $2 == "version" { save = $0; $1 = ""; $2 = ""; version = $0; gsub(/^ */, "", version); gsub(/\r$/, "", version); $0 = save; } ! /===.*Summary/ { print ""; print; blanks=1; } /tests ===/ || /^(Target|Host|Native)/ || $2 == "version" { print; blanks=1; } /^(XPASS|FAIL|UNRESOLVED|WARNING|ERROR|# of )/ { sub ("\r", ""); print; } /^using:/ { print ""; print; print ""; } diff -Nrcpad gcc-7.4.0/fixincludes/ChangeLog gcc-7.5.0/fixincludes/ChangeLog *** gcc-7.4.0/fixincludes/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/fixincludes/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,64 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-09-04 Iain Sandoe + + Backport from mainline. + 2019-08-18 C.G. Dogan + Iain Sandoe + + PR target/83531 + * inclhack.def (darwin_api_availability): New; strip leading + underscores from API_XXXX defines. + * fixincl.x: Regenerate. + * tests/base/os/availability.h: New file. + + 2019-09-04 Iain Sandoe + + Backport from mainline. + 2019-06-21 Iain Sandoe + + * inclhack.def: Replace the complex test using __STRICT_ANSI__ and + __STDC_VERSION__ with a test using __DARWIN_NO_LONG_LONG. + Ensure that the top level math.h uses <> to wrap included headers + rather than "". + * fixincl.x: Regenerated. + * tests/base/architecture/ppc/math.h: Update test to include the + __DARWIN_NO_LONG_LONG case. + + 2019-09-04 Iain Sandoe + + Backport from mainline. + 2019-06-21 Iain Sandoe + + * inclhack.def: Guard __has_attribute and __has_extension in + os/base.h. + Guard Apple blocks syntax in dispatch/object.h. + * fixincl.x: Regenerate. + * tests/base/dispatch/object.h: New file. + * tests/base/os/base.h: New file. + + 2019-06-03 Iain Sandoe + + Backport from mainline. + 2019-05-11 Iain Sandoe + + PR bootstrap/89864 + * inclhack.def (darwin_ucred__Atomic): Do not supply test_text + for wrap fixes. + * fixincl.x: Regenerated. + + Backport from mainline. + 2019-04-18 Erik Schnetter + Jakub Jelinek + Iain Sandoe + + PR bootstrap/89864 + * inclhack.def (darwin_ucred__Atomic): New, work around _Atomic keyword + use in headers included by C++. + * fixincl.x: Regenerated. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/fixincludes/fixincl.x gcc-7.5.0/fixincludes/fixincl.x *** gcc-7.4.0/fixincludes/fixincl.x Sat Feb 25 20:29:39 2017 --- gcc-7.5.0/fixincludes/fixincl.x Wed Sep 4 19:11:08 2019 *************** *** 1,12 **** /* -*- buffer-read-only: t -*- vi: set ro: ! * * DO NOT EDIT THIS FILE (fixincl.x) ! * ! * It has been AutoGen-ed Saturday February 25, 2017 at 03:25:44 PM EST * From the definitions inclhack.def * and the template file fixincl */ ! /* DO NOT SVN-MERGE THIS FILE, EITHER Sat 25 Feb 2017 15:25:44 EST * * You must regenerate it. Use the ./genfixes script. * --- 1,12 ---- /* -*- buffer-read-only: t -*- vi: set ro: ! * * DO NOT EDIT THIS FILE (fixincl.x) ! * ! * It has been AutoGen-ed August 29, 2019 at 12:25:44 AM by AutoGen 5.17.4 * From the definitions inclhack.def * and the template file fixincl */ ! /* DO NOT SVN-MERGE THIS FILE, EITHER Thu Aug 29 00:25:44 BST 2019 * * You must regenerate it. Use the ./genfixes script. * *************** *** 15,21 **** * certain ANSI-incompatible system header files which are fixed to work * correctly with ANSI C and placed in a directory that GNU C will search. * ! * This file contains 248 fixup descriptions. * * See README for more information. * --- 15,21 ---- * certain ANSI-incompatible system header files which are fixed to work * correctly with ANSI C and placed in a directory that GNU C will search. * ! * This file contains 253 fixup descriptions. * * See README for more information. * *************** static const char* apzAab_Darwin7_9_Long *** 269,274 **** --- 269,324 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Darwin_Api_Availability fix + */ + tSCC zDarwin_Api_AvailabilityName[] = + "darwin_api_availability"; + + /* + * File name selection pattern + */ + tSCC zDarwin_Api_AvailabilityList[] = + "os/availability.h\0"; + /* + * Machine/OS name selection pattern + */ + tSCC* apzDarwin_Api_AvailabilityMachs[] = { + "*-*-darwin*", + (const char*)NULL }; + + /* + * content selection pattern - do fix if pattern found + */ + tSCC zDarwin_Api_AvailabilitySelect0[] = + " *#define __API_AVAILABLE.*\n\ + *#define __API_DEPRECATED.*\n\ + *#define __API_DEPRECATED_WITH_REPLACEMENT.*\n\ + *#define __API_UNAVAILABLE.*\n"; + + /* + * content bypass pattern - skip fix if pattern found + */ + tSCC zDarwin_Api_AvailabilityBypass0[] = + "__IPHONE_OS_VERSION_MIN_REQUIRED"; + + #define DARWIN_API_AVAILABILITY_TEST_CT 2 + static tTestDesc aDarwin_Api_AvailabilityTests[] = { + { TT_NEGREP, zDarwin_Api_AvailabilityBypass0, (regex_t*)NULL }, + { TT_EGREP, zDarwin_Api_AvailabilitySelect0, (regex_t*)NULL }, }; + + /* + * Fix Command Arguments for Darwin_Api_Availability + */ + static const char* apzDarwin_Api_AvailabilityPatch[] = { + "format", + " #define API_AVAILABLE(...)\n\ + #define API_DEPRECATED(...)\n\ + #define API_DEPRECATED_WITH_REPLACEMENT(...)\n\ + #define API_UNAVAILABLE(...)\n", + (char*)NULL }; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Aab_Fd_Zero_Asm_Posix_Types_H fix */ tSCC zAab_Fd_Zero_Asm_Posix_Types_HName[] = *************** tSCC zDarwin_9_Long_Double_Funcs_2List[] *** 2638,2644 **** * Machine/OS name selection pattern */ tSCC* apzDarwin_9_Long_Double_Funcs_2Machs[] = { ! "*-*-darwin7.9*", (const char*)NULL }; /* --- 2688,2694 ---- * Machine/OS name selection pattern */ tSCC* apzDarwin_9_Long_Double_Funcs_2Machs[] = { ! "*-*-darwin*", (const char*)NULL }; /* *************** static const char* apzDarwin_Gcc4_Breaka *** 2744,2749 **** --- 2794,2835 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Darwin_Ll_Funcs_Avail fix + */ + tSCC zDarwin_Ll_Funcs_AvailName[] = + "darwin_ll_funcs_avail"; + + /* + * File name selection pattern + */ + tSCC zDarwin_Ll_Funcs_AvailList[] = + "architecture/ppc/math.h\0architecture/i386/math.h\0"; + /* + * Machine/OS name selection pattern + */ + tSCC* apzDarwin_Ll_Funcs_AvailMachs[] = { + "*-*-darwin*", + (const char*)NULL }; + + /* + * content selection pattern - do fix if pattern found + */ + tSCC zDarwin_Ll_Funcs_AvailSelect0[] = + "#if[^_]*__STDC_VERSION__[^_]*__STDC_VERSION__[^1]*199901L[^_]*__STRICT_ANSI__[^_]*__GNUC__[^)]*"; + + #define DARWIN_LL_FUNCS_AVAIL_TEST_CT 1 + static tTestDesc aDarwin_Ll_Funcs_AvailTests[] = { + { TT_EGREP, zDarwin_Ll_Funcs_AvailSelect0, (regex_t*)NULL }, }; + + /* + * Fix Command Arguments for Darwin_Ll_Funcs_Avail + */ + static const char* apzDarwin_Ll_Funcs_AvailPatch[] = { sed_cmd_z, + "-e", "s/#if[^_]*__STDC_VERSION__[^_]*__STDC_VERSION__[^_]*199901L[^_]*__STRICT_ANSI__[^_]*__GNUC__[^\\)]*)/#if !(__DARWIN_NO_LONG_LONG)/", + (char*)NULL }; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Darwin_Longjmp_Noreturn fix */ tSCC zDarwin_Longjmp_NoreturnName[] = *************** static const char* apzDarwin_Os_Trace_3P *** 2906,2911 **** --- 2992,3077 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Darwin_Os_Base_1 fix + */ + tSCC zDarwin_Os_Base_1Name[] = + "darwin_os_base_1"; + + /* + * File name selection pattern + */ + tSCC zDarwin_Os_Base_1List[] = + "os/base.h\0"; + /* + * Machine/OS name selection pattern + */ + tSCC* apzDarwin_Os_Base_1Machs[] = { + "*-*-darwin*", + (const char*)NULL }; + + /* + * content selection pattern - do fix if pattern found + */ + tSCC zDarwin_Os_Base_1Select0[] = + "#define __has_attribute.*\n\ + #endif"; + + #define DARWIN_OS_BASE_1_TEST_CT 1 + static tTestDesc aDarwin_Os_Base_1Tests[] = { + { TT_EGREP, zDarwin_Os_Base_1Select0, (regex_t*)NULL }, }; + + /* + * Fix Command Arguments for Darwin_Os_Base_1 + */ + static const char* apzDarwin_Os_Base_1Patch[] = { + "format", + "%0\n\ + #ifndef __has_extension\n\ + #define __has_extension(x) 0\n\ + #endif", + (char*)NULL }; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Darwin_Dispatch_Object_1 fix + */ + tSCC zDarwin_Dispatch_Object_1Name[] = + "darwin_dispatch_object_1"; + + /* + * File name selection pattern + */ + tSCC zDarwin_Dispatch_Object_1List[] = + "dispatch/object.h\0"; + /* + * Machine/OS name selection pattern + */ + tSCC* apzDarwin_Dispatch_Object_1Machs[] = { + "*-*-darwin*", + (const char*)NULL }; + + /* + * content selection pattern - do fix if pattern found + */ + tSCC zDarwin_Dispatch_Object_1Select0[] = + "typedef void.*\\^dispatch_block_t.*"; + + #define DARWIN_DISPATCH_OBJECT_1_TEST_CT 1 + static tTestDesc aDarwin_Dispatch_Object_1Tests[] = { + { TT_EGREP, zDarwin_Dispatch_Object_1Select0, (regex_t*)NULL }, }; + + /* + * Fix Command Arguments for Darwin_Dispatch_Object_1 + */ + static const char* apzDarwin_Dispatch_Object_1Patch[] = { + "format", + "#if __BLOCKS__\n\ + %0\n\ + #endif", + (char*)NULL }; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Darwin_Private_Extern fix */ tSCC zDarwin_Private_ExternName[] = *************** static const char* apzDarwin_Stdint_7Pat *** 3262,3267 **** --- 3428,3475 ---- /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Darwin_Ucred__Atomic fix + */ + tSCC zDarwin_Ucred__AtomicName[] = + "darwin_ucred__Atomic"; + + /* + * File name selection pattern + */ + tSCC zDarwin_Ucred__AtomicList[] = + "sys/ucred.h\0"; + /* + * Machine/OS name selection pattern + */ + tSCC* apzDarwin_Ucred__AtomicMachs[] = { + "*-*-darwin*", + (const char*)NULL }; + + /* + * content selection pattern - do fix if pattern found + */ + tSCC zDarwin_Ucred__AtomicSelect0[] = + "_Atomic"; + + #define DARWIN_UCRED__ATOMIC_TEST_CT 1 + static tTestDesc aDarwin_Ucred__AtomicTests[] = { + { TT_EGREP, zDarwin_Ucred__AtomicSelect0, (regex_t*)NULL }, }; + + /* + * Fix Command Arguments for Darwin_Ucred__Atomic + */ + static const char* apzDarwin_Ucred__AtomicPatch[] = { + "wrap", + "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n\ + # define _Atomic volatile\n\ + #endif\n", + "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n\ + # undef _Atomic\n\ + #endif\n", + (char*)NULL }; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Dec_Intern_Asm fix */ tSCC zDec_Intern_AsmName[] = *************** static const char* apzX11_SprintfPatch[] *** 10139,10147 **** * * List of all fixes */ ! #define REGEX_COUNT 285 #define MACH_LIST_SIZE_LIMIT 187 ! #define FIX_COUNT 248 /* * Enumerate the fixes --- 10347,10355 ---- * * List of all fixes */ ! #define REGEX_COUNT 291 #define MACH_LIST_SIZE_LIMIT 187 ! #define FIX_COUNT 253 /* * Enumerate the fixes *************** typedef enum { *** 10150,10155 **** --- 10358,10364 ---- AAB_AIX_STDIO_FIXIDX, AAB_AIX_FCNTL_FIXIDX, AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_FIXIDX, + DARWIN_API_AVAILABILITY_FIXIDX, AAB_FD_ZERO_ASM_POSIX_TYPES_H_FIXIDX, AAB_FD_ZERO_GNU_TYPES_H_FIXIDX, AAB_FD_ZERO_SELECTBITS_H_FIXIDX, *************** typedef enum { *** 10210,10219 **** --- 10419,10431 ---- DARWIN_9_LONG_DOUBLE_FUNCS_2_FIXIDX, DARWIN_EXTERNC_FIXIDX, DARWIN_GCC4_BREAKAGE_FIXIDX, + DARWIN_LL_FUNCS_AVAIL_FIXIDX, DARWIN_LONGJMP_NORETURN_FIXIDX, DARWIN_OS_TRACE_1_FIXIDX, DARWIN_OS_TRACE_2_FIXIDX, DARWIN_OS_TRACE_3_FIXIDX, + DARWIN_OS_BASE_1_FIXIDX, + DARWIN_DISPATCH_OBJECT_1_FIXIDX, DARWIN_PRIVATE_EXTERN_FIXIDX, DARWIN_STDINT_1_FIXIDX, DARWIN_STDINT_2_FIXIDX, *************** typedef enum { *** 10222,10227 **** --- 10434,10440 ---- DARWIN_STDINT_5_FIXIDX, DARWIN_STDINT_6_FIXIDX, DARWIN_STDINT_7_FIXIDX, + DARWIN_UCRED__ATOMIC_FIXIDX, DEC_INTERN_ASM_FIXIDX, DJGPP_WCHAR_H_FIXIDX, ECD_CURSOR_FIXIDX, *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 10413,10418 **** --- 10626,10636 ---- AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, aAab_Darwin7_9_Long_Double_FuncsTests, apzAab_Darwin7_9_Long_Double_FuncsPatch, 0 }, + { zDarwin_Api_AvailabilityName, zDarwin_Api_AvailabilityList, + apzDarwin_Api_AvailabilityMachs, + DARWIN_API_AVAILABILITY_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Api_AvailabilityTests, apzDarwin_Api_AvailabilityPatch, 0 }, + { zAab_Fd_Zero_Asm_Posix_Types_HName, zAab_Fd_Zero_Asm_Posix_Types_HList, apzAab_Fd_Zero_Asm_Posix_Types_HMachs, AAB_FD_ZERO_ASM_POSIX_TYPES_H_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 10713,10718 **** --- 10931,10941 ---- DARWIN_GCC4_BREAKAGE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aDarwin_Gcc4_BreakageTests, apzDarwin_Gcc4_BreakagePatch, 0 }, + { zDarwin_Ll_Funcs_AvailName, zDarwin_Ll_Funcs_AvailList, + apzDarwin_Ll_Funcs_AvailMachs, + DARWIN_LL_FUNCS_AVAIL_TEST_CT, FD_MACH_ONLY, + aDarwin_Ll_Funcs_AvailTests, apzDarwin_Ll_Funcs_AvailPatch, 0 }, + { zDarwin_Longjmp_NoreturnName, zDarwin_Longjmp_NoreturnList, apzDarwin_Longjmp_NoreturnMachs, DARWIN_LONGJMP_NORETURN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 10733,10738 **** --- 10956,10971 ---- DARWIN_OS_TRACE_3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aDarwin_Os_Trace_3Tests, apzDarwin_Os_Trace_3Patch, 0 }, + { zDarwin_Os_Base_1Name, zDarwin_Os_Base_1List, + apzDarwin_Os_Base_1Machs, + DARWIN_OS_BASE_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Os_Base_1Tests, apzDarwin_Os_Base_1Patch, 0 }, + + { zDarwin_Dispatch_Object_1Name, zDarwin_Dispatch_Object_1List, + apzDarwin_Dispatch_Object_1Machs, + DARWIN_DISPATCH_OBJECT_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Dispatch_Object_1Tests, apzDarwin_Dispatch_Object_1Patch, 0 }, + { zDarwin_Private_ExternName, zDarwin_Private_ExternList, apzDarwin_Private_ExternMachs, DARWIN_PRIVATE_EXTERN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, *************** tFixDesc fixDescList[ FIX_COUNT ] = { *** 10773,10778 **** --- 11006,11016 ---- DARWIN_STDINT_7_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aDarwin_Stdint_7Tests, apzDarwin_Stdint_7Patch, 0 }, + { zDarwin_Ucred__AtomicName, zDarwin_Ucred__AtomicList, + apzDarwin_Ucred__AtomicMachs, + DARWIN_UCRED__ATOMIC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Ucred__AtomicTests, apzDarwin_Ucred__AtomicPatch, 0 }, + { zDec_Intern_AsmName, zDec_Intern_AsmList, apzDec_Intern_AsmMachs, DEC_INTERN_ASM_TEST_CT, FD_MACH_ONLY, diff -Nrcpad gcc-7.4.0/fixincludes/inclhack.def gcc-7.5.0/fixincludes/inclhack.def *** gcc-7.4.0/fixincludes/inclhack.def Sat Feb 25 20:29:39 2017 --- gcc-7.5.0/fixincludes/inclhack.def Wed Sep 4 19:11:08 2019 *************** fix = { *** 195,200 **** --- 195,227 ---- }; /* + * SDKs for 10.13 and 10.14 omit the definitions for API_AVAILABLE where + * __attribute__((availability)) is not supported. + */ + fix = { + hackname = darwin_api_availability; + mach = "*-*-darwin*"; + files = os/availability.h; + bypass = "__IPHONE_OS_VERSION_MIN_REQUIRED"; + select = + " *#define __API_AVAILABLE.*\n" + " *#define __API_DEPRECATED.*\n" + " *#define __API_DEPRECATED_WITH_REPLACEMENT.*\n" + " *#define __API_UNAVAILABLE.*\n"; + c_fix = format; + c_fix_arg = + " #define API_AVAILABLE(...)\n" + " #define API_DEPRECATED(...)\n" + " #define API_DEPRECATED_WITH_REPLACEMENT(...)\n" + " #define API_UNAVAILABLE(...)\n"; + test_text = + "#define __API_AVAILABLE(...)\n" + "#define __API_DEPRECATED(...)\n" + "#define __API_DEPRECATED_WITH_REPLACEMENT(...)\n" + "#define __API_UNAVAILABLE(...)\n"; + }; + + /* * This fixes __FD_ZERO bug for linux 2.x.y (x <= 2 && y <= some n) */ fix = { *************** fix = { *** 1364,1375 **** }; /* ! * For the AAB_darwin7_9_long_double_funcs fix to be useful, ! * you have to not use "" includes. */ fix = { hackname = darwin_9_long_double_funcs_2; ! mach = "*-*-darwin7.9*"; files = math.h; select = '#include[ \t]+\"'; c_fix = format; --- 1391,1402 ---- }; /* ! * For the AAB_darwin7_9_long_double_funcs fix (and later fixes for long long) ! * to be useful, the main math.h must use <> and not "" includes. */ fix = { hackname = darwin_9_long_double_funcs_2; ! mach = "*-*-darwin*"; files = math.h; select = '#include[ \t]+\"'; c_fix = format; *************** fix = { *** 1377,1383 **** c_fix_arg = '([ \t]*#[ \t]*include[ \t]+)"([a-z0-9/]+)\.h"'; ! test_text = '#include "architecture/ppc/math.h"'; }; /* --- 1404,1410 ---- c_fix_arg = '([ \t]*#[ \t]*include[ \t]+)"([a-z0-9/]+)\.h"'; ! test_text = '#include '; }; /* *************** fix = { *** 1421,1426 **** --- 1448,1469 ---- }; /* + * math.h hides the long long functions that are available on the system for + * 10.5 and 10.6 SDKs, we expect to use them in G++ without specifying a value + * for __STDC_VERSION__, or switching __STRICT_ANSI__ off. + */ + fix = { + hackname = darwin_ll_funcs_avail; + mach = "*-*-darwin*"; + files = architecture/ppc/math.h, architecture/i386/math.h; + select = "#if[^_]*__STDC_VERSION__[^_]*__STDC_VERSION__[^1]*199901L[^_]*" + "__STRICT_ANSI__[^_]*__GNUC__[^\)]*"; + sed = "s/#if[^_]*__STDC_VERSION__[^_]*__STDC_VERSION__[^_]*199901L[^_]*" + "__STRICT_ANSI__[^_]*__GNUC__[^\\)]*\)/#if\ !\(__DARWIN_NO_LONG_LONG\)/"; + test_text = "#if\ !(__DARWIN_NO_LONG_LONG)"; + }; + + /* * Before Mac OS X 10.8 doesn't mark longjump noreturn. */ fix = { *************** fix = { *** 1492,1497 **** --- 1535,1583 ---- }; /* + * In macOS 10.10 , doesn't have __has_extension guarded. + */ + fix = { + hackname = darwin_os_base_1; + mach = "*-*-darwin*"; + files = os/base.h; + select = <<- OS_BASE_1_SEL + #define __has_attribute.* + #endif + OS_BASE_1_SEL; + c_fix = format; + c_fix_arg = <<- OS_BASE_1_FIX + %0 + #ifndef __has_extension + #define __has_extension(x) 0 + #endif + OS_BASE_1_FIX; + test_text = <<- OS_BASE_1_TEST + #define __has_attribute(x) 0 + #endif + + #if __GNUC__ + OS_BASE_1_TEST; + }; + + /* + * In macOS 10.10 , has unguarded block syntax. + */ + fix = { + hackname = darwin_dispatch_object_1; + mach = "*-*-darwin*"; + files = dispatch/object.h; + select = "typedef void.*\\^dispatch_block_t.*"; + c_fix = format; + c_fix_arg = "#if __BLOCKS__\n%0\n#endif"; + test_text = <<- DISPATCH_OBJECT_1_TEST + typedef void (^dispatch_block_t)(void); + + __BEGIN_DECLS + DISPATCH_OBJECT_1_TEST; + }; + + /* * __private_extern__ doesn't exist in FSF GCC. Even if it did, * why would you ever put it in a system header file? */ *************** fix = { *** 1688,1693 **** --- 1774,1798 ---- "#define UINTMAX_C(v) (v ## ULL)"; }; + /* The SDK included with XCode 10.2 has the file that uses the + C11 _Atomic keyword (exposing it to C++ code). The work-around here follows + the header in declaring the entity volatile when _Atomic is not available. + */ + fix = { + hackname = darwin_ucred__Atomic; + mach = "*-*-darwin*"; + files = sys/ucred.h; + select = "_Atomic"; + c_fix = wrap; + c_fix_arg = "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n" + "# define _Atomic volatile\n" + "#endif\n"; + c_fix_arg = "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n" + "# undef _Atomic\n" + "#endif\n"; + test_text = ""; /* Don't provide this for wrap fixes. */ + }; + /* * Fix on Digital UNIX V4.0: * It contains a prototype for a DEC C internal asm() function, diff -Nrcpad gcc-7.4.0/fixincludes/tests/base/architecture/ppc/math.h gcc-7.5.0/fixincludes/tests/base/architecture/ppc/math.h *** gcc-7.4.0/fixincludes/tests/base/architecture/ppc/math.h Mon Oct 29 16:44:34 2012 --- gcc-7.5.0/fixincludes/tests/base/architecture/ppc/math.h Wed Sep 4 19:06:36 2019 *************** *** 12,14 **** --- 12,19 ---- #if defined( BROKEN_NAN_CHECK ) #if 1 #endif /* BROKEN_NAN_CHECK */ + + + #if defined( DARWIN_LL_FUNCS_AVAIL_CHECK ) + #if !(__DARWIN_NO_LONG_LONG) + #endif /* DARWIN_LL_FUNCS_AVAIL_CHECK */ diff -Nrcpad gcc-7.4.0/fixincludes/tests/base/dispatch/object.h gcc-7.5.0/fixincludes/tests/base/dispatch/object.h *** gcc-7.4.0/fixincludes/tests/base/dispatch/object.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/fixincludes/tests/base/dispatch/object.h Wed Sep 4 19:01:49 2019 *************** *** 0 **** --- 1,18 ---- + /* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/dispatch/object.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + + #if defined( DARWIN_DISPATCH_OBJECT_1_CHECK ) + #if __BLOCKS__ + typedef void (^dispatch_block_t)(void); + #endif + + __BEGIN_DECLS + #endif /* DARWIN_DISPATCH_OBJECT_1_CHECK */ diff -Nrcpad gcc-7.4.0/fixincludes/tests/base/os/availability.h gcc-7.5.0/fixincludes/tests/base/os/availability.h *** gcc-7.4.0/fixincludes/tests/base/os/availability.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/fixincludes/tests/base/os/availability.h Wed Sep 4 19:11:08 2019 *************** *** 0 **** --- 1,18 ---- + /* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/os/availability.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + + #if defined( DARWIN_API_AVAILABILITY_CHECK ) + #define API_AVAILABLE(...) + #define API_DEPRECATED(...) + #define API_DEPRECATED_WITH_REPLACEMENT(...) + #define API_UNAVAILABLE(...) + + #endif /* DARWIN_API_AVAILABILITY_CHECK */ diff -Nrcpad gcc-7.4.0/fixincludes/tests/base/os/base.h gcc-7.5.0/fixincludes/tests/base/os/base.h *** gcc-7.4.0/fixincludes/tests/base/os/base.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/fixincludes/tests/base/os/base.h Wed Sep 4 19:01:49 2019 *************** *** 0 **** --- 1,20 ---- + /* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/os/base.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + + #if defined( DARWIN_OS_BASE_1_CHECK ) + #define __has_attribute(x) 0 + #endif + #ifndef __has_extension + #define __has_extension(x) 0 + #endif + + #if __GNUC__ + #endif /* DARWIN_OS_BASE_1_CHECK */ diff -Nrcpad gcc-7.4.0/gcc/BASE-VER gcc-7.5.0/gcc/BASE-VER *** gcc-7.4.0/gcc/BASE-VER Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gcc/BASE-VER Thu Nov 14 07:40:39 2019 *************** *** 1 **** ! 7.4.0 --- 1 ---- ! 7.5.0 diff -Nrcpad gcc-7.4.0/gcc/ChangeLog gcc-7.5.0/gcc/ChangeLog *** gcc-7.4.0/gcc/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gcc/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,2276 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-11-01 Iain Sandoe + + Backport from mainline + 2019-10-13 Iain Sandoe + + * config/darwin.c (machopic_indirection_name): Rework the + function to emit linker-visible symbols only for indirections + in the data section. Clean up the code and update comments. + + 2019-11-01 Iain Sandoe + + Backport from mainline + 2019-10-09 Iain Sandoe + + * config/darwin.c (darwin_override_options): Make the check for + Objective-C ABI version more specific for 64bit code. + + Backport from mainline + 2019-10-06 Iain Sandoe + + * config/darwin.c (darwin_override_options): Adjust objective-c + ABI version error messages to avoid punctuation and contracted + negations. + + 2019-11-01 Iain Sandoe + + Backport from mainline + 2019-07-03 Iain Sandoe + + * config/darwin.h (REAL_LIBGCC_SPEC): Adjust for earlier Darwin. + (STARTFILE_SPEC): Split crt3 into a separate spec. + (DARWIN_EXTRA_SPECS): Add crt2 and crt3 spec. + (DARWIN_CRT2_SPEC): New. + (DARWIN_CRT3_SPEC): New. + (MIN_LD64_OMIT_STUBS): Revise to 62.1. + * config/rs6000/darwin.h (DARWIN_CRT2_SPEC): Revise conditions. + (DARWIN_CRT3_SPEC): New. + + 2019-11-01 Iain Sandoe + + Backport from mainline + 2019-06-27 Iain Sandoe + + * config/rs6000/darwin.h (ENDFILE_SPEC): Correct whitespace in the + spec. + + Backport from mainline + 2019-06-25 Iain Sandoe + + * config/rs6000/darwin.h (ENDFILE_SPEC): New. + + 2019-11-01 Iain Sandoe + + Backport from mainline + 2019-06-18 Iain Sandoe + + * config/darwin.c (darwin_emit_unwind_label): New default to false. + (darwin_override_options): Set darwin_emit_unwind_label as needed. + + 2019-11-01 Iain Sandoe + + Backport from mainline + 2019-08-13 Iain Sandoe + + * config/darwin.c (machopic_indirect_call_target): Rename symbol stub + flag. + (darwin_override_options): Likewise. + * config/darwin.h: Likewise. + * config/darwin.opt: Likewise. + * config/i386/i386.c (output_pic_addr_const): Likewise. + * config/rs6000/darwin.h: Likewise. + * config/rs6000/rs6000.c (rs6000_call_darwin_1): Likewise. + * config/i386/darwin.h (TARGET_MACHO_PICSYM_STUBS): Rename to ... + ... this TARGET_MACHO_SYMBOL_STUBS. + (FUNCTION_PROFILER):Likewise. + * config/i386/i386.h: Likewise. + + Backport from mainline + 2019-06-16 Iain Sandoe + + * config/darwin.c (machopic_indirect_call_target): Use renamed + darwin_picsymbol_stubs to decide on output. + (darwin_override_options): Handle darwin_picsymbol_stubs. + * config/darwin.h (MIN_LD64_OMIT_STUBS): New. + (LD64_VERSION): Revise default. + * config/darwin.opt: (mpic-symbol-stubs): New option. + (darwin_picsymbol_stubs): New variable. + * config/i386/darwin.h (TARGET_MACHO_BRANCH_ISLANDS): + rename to TARGET_MACHO_PICSYM_STUBS. + * config/i386/i386.c (output_pic_addr_const): Likewise. + * config/i386/i386.h Likewise. + * config/rs6000/darwin.h: Likewise. + * config/rs6000/rs6000.c (rs6000_call_darwin_1): Use renamed + darwin_picsymbol_stubs. + + 2019-11-01 Iain Sandoe + + Backport from mainline + 2019-06-28 Iain Sandoe + + * config.gcc (powerpc-*-darwin*, powerpc64-*-darwin*): Remove + override on extra_headers. + + 2019-11-01 Iain Sandoe + + Backport from mainline + 2019-06-27 Iain Sandoe + + * config/rs6000/rs6000.c (darwin_rs6000_override_options): Honour + user-specified float mode choice for kernel mode code. + + 2019-11-01 Iain Sandoe + + Backport from mainline + 2019-06-23 Iain Sandoe + + * config/rs6000/darwin.h: Handle GCC target pragma. + + 2019-10-29 Iain Sandoe + + Backport from mainline + 2019-10-17 Iain Sandoe + + PR target/65342 + * config/rs6000/darwin.md (movdi_low, movsi_low_st): Delete. + (movdi_low_st): Delete. + * config/rs6000/rs6000.c + (darwin_rs6000_legitimate_lo_sum_const_p): New. + (mem_operand_gpr): Validate Mach-O LO_SUM cases separately. + * config/rs6000/rs6000.md (movsi_low): Delete. + + 2019-10-29 Iain Sandoe + + Backport from mainline + 2019-10-12 Iain Sandoe + + PR target/67183 + * config/darwin.c (machopic_indirection): New field to flag + non-lazy-symbol-pointers in the data section. + (machopic_indirection_name): Compute if an indirection should + appear in the data section. + (machopic_output_data_section_indirection): New callback split + from machopic_output_indirection. + (machopic_output_stub_indirection): Likewise. + (machopic_output_indirection): Retain the code for non-lazy + symbol pointers in their regular section. + (machopic_finish): Use the new callbacks to order the indirection + output. + + 2019-10-29 Iain Sandoe + + Backport from mainline + 2019-10-12 Iain Sandoe + + * config/darwin-protos.h (machopic_finish): Delete. + * config/darwin.c (machopic_finish): Make static. + + Backport from mainline + 2019-10-09 Iain Sandoe + + * config/darwin.c (machopic_indirect_data_reference): Set flag to + indicate that the new symbol is an indirection. + (machopic_indirect_call_target): Likewise. + * config/darwin.h (MACHO_SYMBOL_FLAG_INDIRECTION): New. + (MACHO_SYMBOL_INDIRECTION_P): New. + (MACHO_SYMBOL_FLAG_STATIC): Adjust bit number. + + Backport from mainline + 2019-10-08 Iain Sandoe + + * config/darwin.c (machopic_indirect_data_reference): Check for + required indirections before making direct access to defined + values. + (machopic_output_indirection): Place the indirected pointes for + required indirections into the non-lazy symbol pointers section. + (darwin_encode_section_info): + * config/darwin.h (MACHO_SYMBOL_FLAG_MUST_INDIRECT): New. + (MACHO_SYMBOL_MUST_INDIRECT_P): New. + + Backport from mainline + 2019-10-07 Iain Sandoe + + * config/darwin.c (machopic_output_indirection): Don't put + hidden symbol indirections into the .data section, use the + non-lazy symbol pointers section as normal. + (darwin_encode_section_info): Record if a symbol is hidden. + * config/darwin.h (MACHO_SYMBOL_FLAG_HIDDEN_VIS): New. + (MACHO_SYMBOL_HIDDEN_VIS_P): New. + + Backport from mainline + 2019-10-07 Iain Sandoe + + * config/darwin.c (machopic_symbol_defined_p): Use symbol flag + predicates instead of accessing bits directly. + (machopic_indirect_call_target): Likewise. + (machopic_output_indirection): Likewise. + (darwin_encode_section_info): Improve description. Use renamed + symbol flags. Use predicate macros for variables and functions. + * config/darwin.h: + Rename MACHO_SYMBOL_VARIABLE to MACHO_SYMBOL_FLAG_VARIABLE. + Rename MACHO_SYMBOL_DEFINED to MACHO_SYMBOL_FLAG_DEFINED. + Rename MACHO_SYMBOL_STATIC to MACHO_SYMBOL_FLAG_STATIC. + (MACHO_SYMBOL_VARIABLE_P): New. + (MACHO_SYMBOL_DEFINED_P):New. + (MACHO_SYMBOL_STATIC_P): New. + * config/i386/darwin.h (MACHO_SYMBOL_FLAG_VARIABLE): Delete. + (SYMBOL_FLAG_SUBT_DEP): New. + * config/rs6000/darwin.h (SYMBOL_FLAG_SUBT_DEP): New. + + 2019-10-29 Iain Sandoe + + Backport from mainline + 2019-10-05 Iain Sandoe + + PR target/59888 + * config/darwin.c (darwin_rodata_section): Add relocation flag, + choose const_data section for constants with relocations. + (machopic_select_section): Pass relocation flag to + darwin_rodata_section (). + + 2019-10-29 Iain Sandoe + + Backport from mainline + 2019-09-21 Iain Sandoe + + * config/darwin.c (machopic_legitimize_pic_address): Check + for lra, rather than reload. + + 2019-10-29 Iain Sandoe + + Backport from mainline + 2019-10-03 Iain Sandoe + + PR target/87243 + * config/darwin-driver.c (maybe_get_sysroot_from_sdkroot): New. + (darwin_driver_init): Use the sysroot provided by SDKROOT when that + is available and the user has not set one on the command line. + + 2019-10-29 Iain Sandoe + + Backport from mainline + 2019-07-03 Iain Sandoe + + * config/darwin.h (DRIVER_SELF_SPECS): Remove the linker cases. + (RDYNAMIC): Rename to, DARWIN_RDYNAMIC. + (DARWIN_PIE_SPEC, DARWIN_NOPIE_SPEC): Adjust to remove the Xlinker + clauses. + (LINK_COMMAND_SPEC_A): Add DARWIN_RDYNAMIC, DARWIN_PIE_SPEC and + DARWIN_NOPIE_SPEC. + + Backport from mainline + 2019-06-19 Iain Sandoe + + * config/darwin.h (DRIVER_SELF_SPECS): Add RDYNAMIC, DARWIN_PIE_SPEC + and DARWIN_NOPIE_SPEC. + (RDYNAMIC): New, modified from DARWIN_EXPORT_DYNAMIC. + (DARWIN_PIE_SPEC): Collate from darwin.h and darwin9.h. + (DARWIN_NOPIE_SPEC): Collate from darwin10.h. + (DARWIN_NOCOMPACT_UNWIND): New from darwin10.h + (DARWIN_EXPORT_DYNAMIC): Delete. + * config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Move no_compact_unwind + and pie options processing to darwin.h. + * config/darwin9.h (DARWIN_PIE_SPEC): Move pie processing to darwin.h + + 2019-10-25 Richard Earnshaw + + Backport from mainline + 2019-05-08 Mihail Ionescu + Richard Earnshaw + PR target/88167 + * config/arm/arm.c (thumb1_prologue_unused_call_clobbered_lo_regs): New + function. + (thumb1_epilogue_unused_call_clobbered_lo_regs): New function. + (thumb1_compute_save_core_reg_mask): Don't force a spare work + register if both the epilogue and prologue can use call-clobbered + regs. + (thumb1_unexpanded_epilogue): Use + thumb1_epilogue_unused_call_clobbered_lo_regs. Reverse the logic for + picking temporaries for restoring high regs to match that of the + prologue where possible. + (thumb1_expand_prologue): Add any usable call-clobbered low registers to + the list of work registers. Detect if the return address is still live + at the end of the prologue and avoid using it for a work register if so. + If the return address is not live, add LR to the list of pushable regs + after the first pass. + + 2019-10-24 Richard Biener + + Backport from mainline + 2019-10-17 Richard Biener + + PR debug/91887 + * dwarf2out.c (gen_formal_parameter_die): Also try to match + context_die against a DW_TAG_GNU_formal_parameter_pack parent. + + 2019-09-19 Richard Biener + + PR tree-optimization/91812 + * tree-ssa-phiprop.c (propagate_with_phi): Do not replace + volatile loads. + + 2019-10-23 Eric Botcazou + + PR tree-optimization/92131 + * tree-vrp.c (extract_range_from_plus_minus_expr): If the resulting + range would be symbolic, drop to varying for any explicit overflow + in the constant part or if neither range is a singleton. + + 2019-10-18 Georg-Johann Lay + + Backport from trunk + 2019-10-18 Georg-Johann Lay + + PR target/86040 + * config/avr/avr.c (avr_out_lpm): Do not shortcut-return. + + 2019-10-17 Segher Boessenkool + + Backport from trunk + 2019-03-15 Segher Boessenkool + + PR rtl-optimization/89721 + * lra-constraints (invariant_p): Return false if side_effects_p holds. + + 2019-10-17 Richard Earnshaw + + Backport from mainline + 2019-05-03 Richard Earnshaw + + PR target/89400 + * config/arm/arm.md (unaligned_loadsi): Add variant for thumb1. + Restrict 'all' variant to 32-bit configurations. + (unaligned_loadhiu): Likewise. + (unaligned_storehi): Likewise. + (unaligned_storesi): Likewise. + (unaligned_loadhis): Disable when compiling for thumb1. + + 2019-10-16 Peter Bergner + + Backport from mainline + 2019-10-08 Tulio Magno Quites Machado Filho + + * config.gcc: Move -L usage from LINK_OS_EXTRA_SPEC32 and + LINK_OS_EXTRA_SPEC64 to MD_STARTFILE_PREFIX and + MD_STARTFILE_PREFIX_1 when using --with-advance-toolchain. + + 2019-10-11 Oleg Endo + + Backport from mainline + 2019-10-10 Oleg Endo + + PR target/88630 + * config/sh/sh.h (TARGET_FPU_SH4_300): New macro. + * config/sh/sh.c (sh_option_override): Enable fsca and fsrra insns + also for TARGET_FPU_SH4_300. + (sh_emit_mode_set): Check for TARGET_FPU_SH4_300 instead of + TARGET_SH4_300. + * config/sh/sh.md (toggle_pr): Add TARGET_FPU_SH4_300 condition. + (negsf2): Expand to either negsf2_fpscr or negsf2_no_fpscr. + (*negsf2_i): Split into ... + (negsf2_fpscr, negsf2_no_fpscr): ... these new patterns. + (abssf2): Expand to either abssf2_fpsc or abssf2_no_fpsc. + (**abssf2_i): Split into ... + (abssf2_fpscr, abssf2_no_fpscr): ... these new patterns. + (negdf2): Expand to either negdf2_fpscr or negdf2_no_fpscr. + (*negdf2_i): Split into ... + (negdf2_fpscr, negdf2_no_fpscr): ... these new patterns. + (absdf2): Expand to either absdf2_fpscr or absdf2_no_fpsc. + (**abssf2_i): Split into ... + (absdf2_fpscr, absdf2_no_fpscr): ... these new patterns. + + 2019-10-07 Bill Schmidt + + Backport from mainline + 2019-10-01 Bill Schmidt + + PR target/91275 + * config/rs6000/rs6000.c (rtx_is_swappable_p): Don't swap + vpmsumd. + + 2019-10-01 Oleg Endo + + Backport from mainline + + 2019-10-01 Oleg Endo + + PR target/88562 + * config/sh/sh.c (sh_extending_set_of_reg::use_as_extended_reg): Use + sh_check_add_incdec_notes to preserve REG_INC notes when replacing + a memory access insn. + + 2019-09-28 Iain Sandoe + + Backport from mainline. + 2019-05-12 Iain Sandoe + + PR target/82920 + * config/i386/darwin.h (CC1_SPEC): Report -mx32 as an error for + Darwin. + + 2019-09-28 Iain Sandoe + + Backport from mainline. + 2019-05-12 Iain Sandoe + + PR target/82920 + * config/i386/i386.c (ix86_output_jmp_thunk_or_indirect): New. + (ix86_output_indirect_branch_via_reg): Use output mechanism + accounting for __USER_LABEL_PREFIX__. + (ix86_output_indirect_branch_via_push): Likewise. + (ix86_output_function_return): Likewise. + (ix86_output_indirect_function_return): Likewise. + + 2019-09-28 Oleg Endo + + Backport from mainline + 2019-09-28 Oleg Endo + + PR target/80672 + * config/sh/sh.c (parse_validate_atomic_model_option): Use + std::string::compare instead of std::string::find. + + 2019-09-28 Oleg Endo + + Backport from mainline + 2018-07-15 Jeff Law + + PR target/85993 + * config/sh/sh.c (output_mi_thunk): Remove dead conditional + block. + + 2019-09-27 Iain Sandoe + + Backport from mainline + 2019-06-16 Iain Sandoe + + * config/darwin.opt (prebind, noprebind, seglinkedit, + noseglinkedit): Add RejectNegative. + + Backport from mainline + 2019-06-14 Iain Sandoe + + * config/darwin.opt: Add RejectNegative where needed, reorder + and add minimal functional descriptions. + + 2019-09-23 Max Filippov + + Backport from mainline + 2019-06-18 Max Filippov + + * config/xtensa/xtensa.c (xtensa_expand_prologue): Add stack + pointer adjustment for the case of no callee-saved registers and + stack frame bigger than 128 bytes. + + 2019-09-20 John David Anglin + + * config/pa/pa.c (pa_trampoline_init): Remove spurious extended + characters. + + 2019-09-20 Andreas Krebbel + + Backport from mainline + 2019-06-06 Andreas Krebbel + + PR rtl-optimization/88751 + * ira.c (ira): Use the number of the actually referenced registers + when calculating the threshold. + + 2019-09-11 Eric Botcazou + + PR rtl-optimization/89795 + * rtlanal.c (nonzero_bits1) : Do not propagate results from + inner REGs to paradoxical SUBREGs if WORD_REGISTER_OPERATIONS is set. + + 2019-09-09 Jakub Jelinek + + PR target/87853 + * config/i386/emmintrin.h (_mm_cmpeq_epi8): Use casts to __v16qi + instead of __v16qs. + + PR target/91704 + * config/i386/avxintrin.h (__v32qs): New typedef. + * config/i386/avx2intrin.h (_mm256_cmpgt_epi8): Use casts to __v32qs + instead of __v32qi. + + 2019-09-08 Iain Sandoe + + Backport from mainline + 2018-12-23 Iain Sandoe + + * config/i386/darwin.h (TARGET_ASM_OUTPUT_IDENT): New. + + 2019-08-22 Iain Sandoe + + Backport from mainline + 2019-05-31 Iain Sandoe + + * config/i386/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): New. + + 2019-09-05 Iain Sandoe + + Backport from mainline + 2019-08-18 Iain Sandoe + + * config/rs6000/darwin.h (TARGET_OS_CPP_BUILTINS): Add asserts + for cpu and machine. Factor 64/32b builtins. + + Backport from mainline + 2019-06-23 Iain Sandoe + + * config/rs6000/darwin.h: (__PPC__, __PPC64__): New. + + 2019-09-05 Iain Sandoe + + Backport from mainline + 2019-08-23 Iain Sandoe + + PR pch/61250 + * ggc-page.c (ggc_pch_read): Read the ggc_pch_ondisk structure + and issue any diagnostics needed before collecting the pre-PCH + state. + + 2019-09-05 Iain Sandoe + + Backport from mainline + 2019-07-24 Iain Sandoe + + PR bootstrap/87030 + * config/i386/darwin.h (REAL_LIBGCC_SPEC): Revert change from r273749. + + PR bootstrap/87030 + * config/i386/darwin.h (REAL_LIBGCC_SPEC): Move from here... + * config/i386/darwin32-biarch.h .. to here. + * config/i386/darwin64-biarch.h: Adjust comments. + * config/rs6000/darwin32-biarch.h: Likewise. + * config/rs6000/darwin64-biarch.h: Likewise. + * config.gcc: Missed commit from r273746 + (*-*-darwin*): Don't include CPU t-darwin here. + (i[34567]86-*-darwin*): Adjust to use biarch files. Produce + an error message if i686-darwin configuration is attempted for + Darwin >= 18. + + Backport from mainline + 2019-07-23 Iain Sandoe + + PR bootstrap/87030 + * config.gcc (*-*-darwin*): Don't include CPU t-darwin here. + (i[34567]86-*-darwin*): Adjust to use biarch files. Produce + an error message if i686-darwin configuration is attempted for + Darwin >= 18. + (x86_64-*-darwin*): Switch to single multilib for Darwin >= 18. + (powerpc-*-darwin*): Use biarch files where needed. + (powerpc64-*-darwin*): Likewise. + * config/i386/darwin.h (REAL_LIBGCC_SPEC): Move to new biarch file. + (DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single + arch case. + * config/i386/darwin32-biarch.h: New. + * config/i386/darwin64.h: Rename. + * gcc/config/i386/darwin64-biarch.h: To this. + * config/i386/t-darwin: Rename. + * gcc/config/i386/t-darwin32-biarch: To this. + * config/i386/t-darwin64: Rename. + * gcc/config/i386/t-darwin64-biarch: To this. + * config/rs6000/darwin32-biarch.h: New. + * config/rs6000/darwin64.h: Rename. + * config/rs6000/darwin64-biarch.h: To this. + (DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single + arch case. + * config/rs6000/t-darwin8: Rename. + * config/rs6000/t-darwin32-biarch: To this. + * config/rs6000/t-darwin64 Rename. + * config/rs6000/t-darwin64-biarch: To this. + + 2019-09-05 Richard Biener + + * lto-streamer.h (LTO_minor_version): Bump. + + Backport from mainline + 2019-05-06 Richard Biener + + PR tree-optimization/90328 + * tree-data-ref.h (dr_may_alias_p): Pass in the actual loop nest. + * tree-data-ref.c (dr_may_alias_p): Check whether the clique + is valid in the loop nest before using it. + (initialize_data_dependence_relation): Adjust. + * graphite-scop-detection.c (build_alias_set): Pass the SCOP enclosing + loop as loop-nest to dr_may_alias_p. + + 2019-03-08 Richard Biener + + PR middle-end/89578 + * cfgloop.h (struct loop): Add owned_clique field. + * cfgloopmanip.c (copy_loop_info): Copy it. + * tree-cfg.c (gimple_duplicate_bb): Do not remap owned_clique + cliques. + * tree-inline.c (copy_loops): Remap owned_clique. + * lto-streamer-in.c (input_cfg): Stream owned_clique. + * lto-streamer-out.c (output_cfg): Likewise. + + 2019-02-22 Richard Biener + + PR tree-optimization/87609 + * tree-cfg.c (gimple_duplicate_bb): Only remap inlined cliques. + + 2019-02-22 Richard Biener + + PR middle-end/87609 + * cfghooks.h (dependence_hash): New typedef. + (struct copy_bb_data): New type. + (cfg_hooks::duplicate_block): Adjust to take a copy_bb_data argument. + (duplicate_block): Likewise. + * cfghooks.c (duplicate_block): Pass down copy_bb_data. + (copy_bbs): Create and pass down copy_bb_data. + * cfgrtl.c (cfg_layout_duplicate_bb): Adjust. + (rtl_duplicate_bb): Likewise. + * tree-cfg.c (gimple_duplicate_bb): If the copy_bb_data arg is not NULL + remap dependence info. + + 2019-02-22 Richard Biener + + PR tree-optimization/87609 + * tree-core.h (tree_base): Document special clique values. + * tree-inline.c (remap_dependence_clique): Do not use the + special clique value of one. + (maybe_set_dependence_info): Use clique one. + (clear_dependence_clique): New callback. + (compute_dependence_clique): Clear clique one from all refs + before assigning it (again). + + 2019-08-27 Iain Sandoe + + Backport from mainline + 2019-07-07 Iain Sandoe + + * config/darwin.c (darwin_override_options): Make a final check on PIC + options. + + 2019-09-04 Iain Sandoe + + Backport from mainline + 2019-07-07 Iain Sandoe + * config/darwin.c (darwin_override_options): Don't jam symbol stubs + on for kernel code. + + 2019-09-04 Iain Sandoe + + Backport from mainline + 2019-06-27 Iain Sandoe + + * config/rs6000/rs6000.c (darwin_rs6000_override_options): Do not + use longcall for 64b code. + + 2019-09-04 Iain Sandoe + + Backport from mainline + 2019-06-19 Iain Sandoe + + * config/darwin-driver.c (darwin_driver_init): Fix off-by-one errors + in computing the number of options to be moved. + + Backport from mainline + 2019-06-13 Iain Sandoe + + * config/darwin-driver.c (validate_macosx_version_min): New. + (darwin_default_min_version): Cleanup and validate supplied version. + (darwin_driver_init): Likewise and push cleaned version into opts. + + 2019-09-04 Richard Biener + + Backport from mainline + 2019-03-26 Bin Cheng + + PR tree-optimization/81740 + * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): + In case of outer loop vectorization, check for backward dependence + at the inner loop if outer loop dependence is reversed. + + 2019-09-04 Richard Biener + + Backport from mainline + 2018-11-23 Richard Biener + + PR tree-optimization/88149 + * tree-vect-slp.c (vect_slp_analyze_node_operations): Detect + the case where there are two different def types for the + same operand at different operand position in the same stmt. + + 2019-09-04 Richard Biener + + Backport from mainline + 2019-04-09 Richard Sandiford + + * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Always + use gimple_expr_type for load and store calls. Skip over the + condition argument in a conditional internal function. + Protect use of TREE_INT_CST_LOW. + + 2019-04-08 Richard Biener + + PR tree-optimization/90006 + * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Handle + calls like lrint. + + 2019-03-14 Richard Biener + + PR middle-end/89698 + * fold-const.c (operand_equal_p): For INDIRECT_REF check + that the access types are similar. + + 2019-01-18 Richard Biener + + PR tree-optimization/88903 + * tree-vect-stmts.c (vectorizable_shift): Verify we see all + scalar stmts a SLP shift amount is composed of when detecting + shifts by scalars. + + 2018-12-11 Richard Biener + + PR middle-end/88448 + PR middle-end/88415 + * tree-complex.c (update_complex_assignment): Properly transfer + or clean EH info around gimple_assign_set_rhs_with_ops. + + 2018-11-15 Richard Biener + + PR tree-optimization/88030 + * tree-complex.c (need_eh_cleanup): New global. + (update_complex_assignment): Mark blocks that need EH update. + (expand_complex_comparison): Likewise. + (tree_lower_complex): Allocate and deallocate need_eh_cleanup, + perform EH cleanup and schedule CFG cleanup if that did anything. + + 2018-11-08 Richard Biener + + PR tree-optimization/87929 + * tree-complex.c (expand_complex_comparison): Clean EH. + + 2017-07-25 Eric Botcazou + + * gimple.c (gimple_assign_set_rhs_with_ops): Do not ask gsi_replace + to update EH info here. + + 2019-09-03 Iain Sandoe + + Backport from mainline + 2019-05-18 Iain Sandoe + + * config/darwin-c.c (darwin_register_objc_includes): Do not + prepend the sysroot when building gnu-runtime header search + paths. + + 2019-09-03 Iain Sandoe + + Backport from mainline + 2019-05-18 Iain Sandoe + + * config/darwin.c (darwin_file_end): Use switch_to_section () + instead of direct output of the asm. + + 2019-09-03 Iain Sandoe + + Backport from mainline + 2018-08-22 Iain Sandoe + + * config/darwin.h (LINK_COMMAND_SPEC_A): Update lto options + to match gcc/gcc.c. + + 2019-09-02 Richard Biener + + Backport from mainline + 2019-03-14 Richard Biener + + PR tree-optimization/89710 + * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Use + safe_dyn_cast. + + 2019-03-14 Richard Biener + + PR middle-end/89572 + * tree-scalar-evolution.c (get_loop_exit_condition): Use + safe_dyn_cast. + * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables): + Use gimple_location_safe. + + 2019-02-18 Richard Biener + + PR tree-optimization/89296 + * tree-ssa-loop-ch.c (ch_base::copy_headers): Restrict setting + of no-warning flag to cases that might emit the bogus warning. + + 2019-01-31 Richard Biener + + PR tree-optimization/89135 + * tree-ssa-phiprop.c (pass_phiprop::execute): Skip blocks + with abnormal preds. + + 2019-09-02 Richard Biener + + Backport from mainline + 2019-07-19 Richard Biener + + PR tree-optimization/91200 + * tree-ssa-phiopt.c (cond_store_replacement): Check we have + no PHI nodes in middle-bb. + + 2019-07-15 Richard Biener + + PR middle-end/91162 + * tree-cfg.c (move_block_to_fn): When releasing a virtual PHI + node make sure to replace all uses with something valid. + + 2019-07-11 Richard Biener + + PR middle-end/91131 + * gimplify.c (gimplify_compound_literal_expr): Force a temporary + when the object is volatile and we have not cleared it even though + there are no nonzero elements. + + 2019-07-10 Richard Biener + + PR tree-optimization/91126 + * tree-ssa-sccvn.c (n_walk_cb_data::push_partial_def): Adjust + native encoding offset for BYTES_BIG_ENDIAN. + (vn_reference_lookup_3): Likewise. + + 2019-07-10 Richard Biener + + PR tree-optimization/91126 + * tree-ssa-sccvn.c (vn_reference_lookup_3): Adjust + native encoding offset for BYTES_BIG_ENDIAN. + + 2019-04-29 Richard Biener + + PR tree-optimization/90278 + * tree-ssa-forwprop.c (pass_forwprop::execute): Transfer/clean + EH on comparison simplification. + + 2019-04-11 Richard Biener + + PR tree-optimization/90020 + * tree-ssa-sccvn.c (vn_reference_may_trap): New function. + * tree-ssa-sccvn.h (vn_reference_may_trap): Declare. + * tree-ssa-pre.c (compute_avail): Use it to not put + possibly trapping references after a call that might not + return into EXP_GEN. + * gcse.c (compute_hash_table_work): Do not elide + marking a block containing a call if the call might not + return. + + 2019-09-02 Bin Cheng + + Backport from mainline + 2019-07-18 Bin Cheng + + PR tree-optimization/91137 + * tree-ssa-loop-ivopts.c (struct ivopts_data): New field. + (tree_ssa_iv_optimize_init, alloc_iv, tree_ssa_iv_optimize_finalize): + Init, use and fini the above new field. + (determine_base_object_1): New function. + (determine_base_object): Reimplement using walk_tree. + + 2019-08-30 Richard Biener + + Backport from mainline + 2019-05-27 Richard Biener + + PR tree-optimization/90637 + * tree-ssa-sink.c (statement_sink_location): Honor the + computed sink location for single-uses. + + * gcc.dg/gomp/pr90637.c: New testcase. + + 2019-06-21 Richard Biener + + PR tree-optimization/90930 + * tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Set visited + flag on new stmts to avoid re-processing them. + + 2019-04-25 Richard Biener + + PR middle-end/90194 + * match.pd: Add pattern to simplify view-conversion of an + empty constructor. + + 2019-04-24 Richard Biener + + PR middle-end/90213 + * gimple-fold.c (fold_const_aggregate_ref_1): Do multiplication + by size and BITS_PER_UNIT on poly-wide-ints. + + 2019-04-15 Richard Biener + + PR tree-optimization/90071 + * tree-ssa-reassoc.c (init_range_entry): Do not pick up + abnormal operands from def stmts. + + 2019-03-13 Richard Biener + + PR middle-end/89677 + * tree-scalar-evolution.c (simplify_peeled_chrec): Do not + throw FP expressions at tree-affine. + + 2019-08-30 Segher Boessenkool + + Backport from trunk + 2019-08-22 Segher Boessenkool + + PR target/91481 + * config/rs6000/rs6000.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32, + and UNSPEC_DARN_RAW. + (unspecv): New enumerator values UNSPECV_DARN, UNSPECV_DARN_32, and + UNSPECV_DARN_RAW. + (darn_32): Use an unspec_volatile, and UNSPECV_DARN_32. + (darn_raw): Use an unspec_volatile, and UNSPECV_DARN_RAW. + (darn): Use an unspec_volatile, and UNSPECV_DARN. + + 2019-08-30 Segher Boessenkool + + Backport from trunk + 2019-08-22 Segher Boessenkool + + * config/rs6000/altivec.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32, + UNSPEC_DARN_RAW, UNSPEC_CMPRB, UNSPEC_CMPRB2, UNSPEC_CMPEQB; move to... + * config/rs6000/rs6000.md (unspec): ... here. + * config/rs6000/altivec.md (darn_32, darn_raw, darn, cmprb, + *cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal, + cmpeqb, *cmpeqb_internal): Delete, move to... + * config/rs6000/rs6000.md (darn_32, darn_raw, darn, cmprb, + *cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal, + cmpeqb, *cmpeqb_internal): ... here. + + 2019-08-30 Jakub Jelinek + + Backported from mainline + 2019-07-30 Jakub Jelinek + + PR target/91150 + * config/i386/i386.c (expand_vec_perm_blend): Change mask type + from unsigned to unsigned HOST_WIDE_INT. For E_V64QImode cast + comparison to unsigned HOST_WIDE_INT before shifting it left. + + 2019-07-04 Jakub Jelinek + + PR middle-end/78884 + * gimplify.c (struct gimplify_omp_ctx): Add add_safelen1 member. + (gimplify_bind_expr): If seeing TREE_ADDRESSABLE VLA inside of simd + loop body, set ctx->add_safelen1 instead of making it GOVD_PRIVATE. + (gimplify_adjust_omp_clauses): Add safelen (1) clause if + ctx->add_safelen1 is set. + + PR rtl-optimization/90756 + * explow.c (promote_ssa_mode): Always use TYPE_MODE, don't bypass it + for VECTOR_TYPE_P. + + 2019-06-12 Jakub Jelinek + + PR c/90760 + * symtab.c (symtab_node::set_section): Allow being called on aliases + as long as they aren't analyzed yet. + + 2019-04-19 Jakub Jelinek + + PR middle-end/90139 + * tree-outof-ssa.c (get_temp_reg): If reg_mode is BLKmode, return + assign_temp instead of gen_reg_rtx. + + 2019-06-11 Jakub Jelinek + + PR target/90811 + * config/nvptx/nvptx.c (nvptx_output_softstack_switch): Use and.b%d + instead of and.u%d. + + 2019-05-29 Jakub Jelinek + + PR fortran/90329 + * lto-streamer.h (LTO_minor_version): Bump to 1. + + 2019-05-16 Jakub Jelinek + + PR fortran/90329 + * tree-core.h (struct tree_decl_common): Document + decl_nonshareable_flag for PARM_DECLs. + * tree.h (DECL_HIDDEN_STRING_LENGTH): Define. + * calls.c (expand_call): Don't try tail call if caller + has any DECL_HIDDEN_STRING_LENGTH PARM_DECLs that are or might be + passed on the stack and callee needs to pass any arguments on the + stack. + * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Use + else if instead of series of mutually exclusive ifs. Handle + DECL_HIDDEN_STRING_LENGTH for PARM_DECLs. + * tree-streamer-out.c (pack_ts_decl_common_value_fields): Likewise. + + 2019-04-24 Jakub Jelinek + + PR target/90187 + * config/i386/i386.c (ix86_expand_sse_fp_minmax): Force if_true into + a register if both if_true and if_false are MEMs. + + PR tree-optimization/90208 + * tree-cfg.c (remove_bb): Move forced labels from removed bbs + after labels of new_bb, not before them. + + 2019-04-16 Jakub Jelinek + + PR rtl-optimization/90082 + * dce.c (can_delete_call): New function. + (deletable_insn_p, mark_insn): Use it. + + PR tree-optimization/90090 + * tree-ssa-math-opts.c (is_division_by): Ignore divisions that can + throw internally. + + 2019-04-09 Jakub Jelinek + + PR tree-optimization/89998 + * gimple-ssa-sprintf.c (try_substitute_return_value): Use lhs type + instead of integer_type_node if possible, don't add ranges if return + type is not compatible with int. + * gimple-fold.c (gimple_fold_builtin_sprintf, + gimple_fold_builtin_snprintf): Use lhs type instead of hardcoded + integer_type_node. + + 2019-03-29 Jakub Jelinek + + PR c/89872 + * gimplify.c (gimplify_compound_literal_expr): Don't optimize a + non-addressable complit into its initializer if it is volatile. + + 2019-03-28 Jakub Jelinek + + PR middle-end/89621 + * tree-inline.h (struct copy_body_data): Add + dont_remap_vla_if_no_change flag. + * tree-inline.c (remap_type_3, remap_type_2): New functions. + (remap_type): Don't remap vla types if id->dont_remap_vla_if_no_change + and remap_type_2 returns false. + * omp-low.c (new_omp_context): Set ctx->cb.dont_remap_vla_if_no_change. + + 2019-03-20 Jakub Jelinek + + PR target/89752 + * lra-constraints.c (process_alt_operands) : For BLKmode, don't + update this_alternative nor this_alternative_set. + + 2019-03-19 Jakub Jelinek + + PR rtl-optimization/89768 + * loop-unroll.c (unroll_loop_constant_iterations): Use gen_int_mode + instead of GEN_INT. + (unroll_loop_runtime_iterations): Likewise. + + PR target/89752 + * gimplify.c (gimplify_asm_expr): For output argument with + TREE_ADDRESSABLE type, clear allows_reg if it allows memory, otherwise + diagnose error. + + PR target/89726 + * config/i386/i386.c (ix86_expand_floorceildf_32): In ceil + compensation use x2 += 1 instead of x2 -= -1 and when honoring + signed zeros, do another copysign after the compensation. + + 2019-03-15 Jakub Jelinek + + PR debug/89704 + * dwarf2out.c (add_const_value_attribute): Return false for MINUS, + SIGN_EXTEND and ZERO_EXTEND. + + 2019-03-14 Jakub Jelinek + + PR rtl-optimization/89679 + * expmed.c (expand_mult_const): Don't add a REG_EQUAL note if it + would contain a paradoxical SUBREG. + + PR tree-optimization/89703 + * tree-ssa-strlen.c (valid_builtin_call): Punt if stmt call types + aren't compatible also with builtin_decl_explicit. Check pure + or non-pure status of BUILT_IN_STR{{,N}CMP,N{LEN,{CAT,CPY}{,_CHK}}} + and BUILT_IN_STPNCPY{,_CHK}. + + 2019-03-13 Jakub Jelinek + + PR middle-end/88588 + * omp-simd-clone.c (ipa_simd_modify_stmt_ops): Handle PHI args. + (ipa_simd_modify_function_body): Handle PHIs. + + 2019-03-12 Jakub Jelinek + + PR middle-end/89663 + * builtins.c (expand_builtin_int_roundingfn, + expand_builtin_int_roundingfn_2): Return NULL_RTX instead of + gcc_unreachable if validate_arglist fails. + + 2019-03-09 Jakub Jelinek + + PR c/88568 + * tree.c (handle_dll_attribute): Don't clear TREE_STATIC for + dllimport on VAR_DECLs with RECORD_TYPE or UNION_TYPE DECL_CONTEXT. + + 2019-03-05 Jakub Jelinek + + PR target/89587 + * config/rs6000/t-linux (MULTIARCH_DIRNAME): Set to non-empty only + if_multiarch. + + PR middle-end/89590 + * builtins.c (maybe_emit_free_warning): Punt if free doesn't have + exactly one argument. + + 2019-02-28 Jakub Jelinek + + PR c/89520 + * convert.c (convert_to_real_1, convert_to_integer_1): Punt for + builtins if they don't have a single scalar floating point argument. + Formatting fixes. + + 2019-02-20 Jakub Jelinek + + PR middle-end/89412 + * expr.c (expand_assignment): If result is a MEM, use change_address + instead of simplify_gen_subreg. + + 2019-02-20 Jakub Jelinek + David Malcolm + + PR middle-end/89091 + * fold-const.c (decode_field_reference): Return NULL_TREE if + lang_hooks.types.type_for_size returns NULL. Check it before + overwriting *exp_. Use return NULL_TREE instead of return 0. + + 2019-02-20 Jakub Jelinek + + PR middle-end/88074 + PR middle-end/89415 + * toplev.c (do_compile): Double the emin/emax exponents to workaround + buggy mpc_norm. + + 2019-02-19 Richard Biener + + PR middle-end/88074 + * toplev.c (do_compile): Initialize mpfr's exponent range + based on available float modes. + + 2019-02-18 Jakub Jelinek + + PR target/89361 + * config/s390/s390.c (s390_indirect_branch_attrvalue, + s390_indirect_branch_settings): Define unconditionally. + (s390_set_current_function): Likewise, but guard the whole body except + the s390_indirect_branch_settings call with + #if S390_USE_TARGET_ATTRIBUTE. + (TARGET_SET_CURRENT_FUNCTION): Redefine unconditionally. + + 2019-02-15 Richard Biener + Jakub Jelinek + + PR tree-optimization/89278 + * tree-loop-distribution.c: Include tree-eh.h. + (generate_memset_builtin, generate_memcpy_builtin): Call + rewrite_to_non_trapping_overflow on builtin->size before passing it + to force_gimple_operand_gsi. + + 2019-02-15 Jakub Jelinek + + PR other/89342 + * optc-save-gen.awk: Handle optimize_fast like optimize_size or + optimize_debug. + * opth-gen.awk: Likewise. + + 2019-02-14 Jakub Jelinek + + PR rtl-optimization/89354 + * combine.c (make_extraction): Punt if extraction_mode is narrower + than len bits. + + PR tree-optimization/89314 + * fold-const.c (fold_binary_loc): Cast strlen argument to + const char * before dereferencing it. Formatting fixes. + + 2019-02-13 Jakub Jelinek + + PR middle-end/89303 + * tree-ssa-structalias.c (set_uids_in_ptset): Or in vi->is_heap_var + into pt->vars_contains_escaped_heap instead of setting + pt->vars_contains_escaped_heap to it. + + PR middle-end/89281 + * optabs.c (prepare_cmp_insn): Use UINTVAL (size) instead of + INTVAL (size), compare it to GET_MODE_MASK instead of + 1 << GET_MODE_BITSIZE. + + 2019-02-09 Jakub Jelinek + + PR middle-end/89246 + * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): + If !node->definition and TYPE_ARG_TYPES is non-NULL, use + TYPE_ARG_TYPES instead of DECL_ARGUMENTS. + + 2019-01-16 David Malcolm + + PR target/88861 + * combine.c (delete_noop_moves): Convert to "bool" return, + returning true if any edges are eliminated. + (combine_instructions): Also return true if delete_noop_moves + returns true. + + 2019-02-08 Jakub Jelinek + + PR rtl-optimization/89234 + * except.c (copy_reg_eh_region_note_forward): Return if note_or_insn + is a NOTE, CODE_LABEL etc. - rtx_insn * other than INSN_P. + (copy_reg_eh_region_note_backward): Likewise. + + 2019-02-05 Jakub Jelinek + + PR target/89188 + * dce.c (delete_unmarked_insns): Don't remove no-op moves if they + can throw, non-call exceptions are enabled and we can't delete + dead exceptions or alter cfg. Set must_clean if + delete_insn_and_edges returns true, don't set it blindly for calls. + + PR rtl-optimization/89195 + * combine.c (make_extraction): For MEMs, don't extract bytes outside + of the original MEM. + + PR target/89186 + * optabs.c (prepare_cmp_insn): Pass x and y to + emit_block_comp_via_libcall rather than XEXP (x, 0) and XEXP (y, 0). + + 2019-02-02 Jakub Jelinek + + PR middle-end/87887 + * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): + Punt with warning on aggregate return or argument types. Ignore + type/mode checking for uniform arguments. + + 2019-02-01 Jakub Jelinek + + PR tree-optimization/88107 + * tree-cfg.c (find_outermost_region_in_block): Add ALL argument, + instead of assertion that eh_region_outermost is non-NULL, if it + is NULL, set *ALL to true and return NULL. + (move_sese_region_to_fn): Adjust caller, if all is set, call + duplicate_eh_regions with NULL region. + + 2019-01-29 Jakub Jelinek + + PR c++/66676 + PR ipa/89104 + * omp-simd-clone.c (simd_clone_clauses_extract) + : Ignore clauses with NULL + OMP_CLAUSE_ALIGNED_ALIGNMENT. + + 2019-01-28 Jakub Jelinek + + PR middle-end/89002 + * gimplify.c (gimplify_omp_for): When adding OMP_CLAUSE_*_GIMPLE_SEQ + for lastprivate/linear IV, push gimplify context around gimplify_assign + and, if it needed any temporaries, pop it into a gimple bind around the + sequence. + + 2019-01-27 Jakub Jelinek + + PR target/87214 + * config/i386/sse.md + (avx512dq_shuf_64x2_1, + avx512f_shuf_64x2_1): Ensure the + first constants in pairs are multiples of 2. Formatting fixes. + (avx512vl_shuf_32x4_1, + avx512vl_shuf_32x4_1): Ensure the + first constants in each quadruple are multiples of 4. Formatting fixes. + + 2019-01-22 Jakub Jelinek + + PR rtl-optimization/49429 + PR target/49454 + PR rtl-optimization/86334 + PR target/88906 + * expr.c (emit_block_move_hints): Move marking of MEM_EXPRs + addressable from here... + (emit_block_op_via_libcall): ... to here. + + 2019-01-17 Jakub Jelinek + + PR rtl-optimization/88870 + * dce.c (deletable_insn_p): Never delete const/pure calls that can + throw if we can't alter the cfg or delete dead exceptions. + (mark_insn): Don't call find_call_stack_args for such calls. + + 2019-01-10 Jakub Jelinek + + PR c/88568 + * tree.c (handle_dll_attribute): Clear TREE_STATIC after setting + DECL_EXTERNAL. + + 2019-01-05 Jakub Jelinek + + PR middle-end/82564 + PR target/88620 + * expr.c (expand_assignment): For calls returning VLA structures + if to_rtx is not a MEM, force it into a stack temporary. + + 2019-01-04 Jakub Jelinek + + PR target/88594 + * config/i386/i386.c (ix86_expand_divmod_libfunc): Use mode instead + of GET_MODE (opN) as modes of the libcall arguments. + + 2019-01-03 Jakub Jelinek + + PR debug/88644 + * dwarf2out.c (modified_type_die): If type is equal to sizetype, + change it to qualified_type. + + 2018-12-21 Jakub Jelinek + + PR middle-end/85594 + PR middle-end/88553 + * omp-expand.c (extract_omp_for_update_vars): Regimplify the condition + if needed. + (expand_omp_for_generic): Don't clobber t temporary for ordered loops. + + PR rtl-optimization/88563 + * expr.c (expand_expr_real_2) : Swap innermode + and mode arguments to convert_modes. Likewise swap mode and word_mode + arguments. Handle both arguments with VOIDmode before convert_modes + of one of them. Formatting fixes. + + 2018-12-13 Jakub Jelinek + + PR rtl-optimization/88470 + * cfgcleanup.c (outgoing_edges_match): If the function is + shrink-wrapped and bb1 ends with a JUMP_INSN with a single fake + edge to EXIT, return false. + + PR rtl-optimization/88416 + * valtrack.c (cleanup_auto_inc_dec): Handle pre/post-inc/dec/modify + even if !AUTO_INC_DEC. + + 2018-12-07 Jakub Jelinek + + PR target/85593 + * final.c (rest_of_handle_final): Don't call collect_fn_hard_reg_usage + for functions with naked attribute. + + 2018-11-20 Jakub Jelinek + + PR tree-optimization/87895 + * omp-simd-clone.c (ipa_simd_modify_function_body): When removing + or replacing GIMPLE_RETURN, set EDGE_FALLTHRU on the edge to EXIT. + (simd_clone_adjust): Don't set EDGE_FALLTHRU here. In a loop that + redirects edges to EXIT to edges to incr_bb, iterate while EXIT + has any preds and always use EDGE_PRED (, 0). + + 2018-10-20 Jakub Jelinek + + PR middle-end/87647 + * varasm.c (decode_addr_const): Handle COMPOUND_LITERAL_EXPR. + + 2018-10-19 Jakub Jelinek + + PR middle-end/85488 + PR middle-end/87649 + * omp-low.c (check_omp_nesting_restrictions): Diagnose ordered without + depend closely nested inside of loop with ordered clause with + a parameter. + + 2019-08-25 Uroš Bizjak + + PR target/91533 + Backport from mainline + 2019-06-30 Uroš Bizjak + + * config/i386/sse.md (ssse3_abs2): Rename from abs2. + * config/i386/i386-builtin.def (__builtin_ia32_pabsb): + Use CODE_FOR_ssse3_absv8qi2. + (__builtin_ia32_pabsw): Use CODE_FOR_ssse3_absv4hi2. + (__builtin_ia32_pabsd): Use CODE_FOR_ssse3_absv2si2. + + 2019-08-21 Richard Biener + + PR tree-optimization/91510 + Backport from mainline + 2017-09-26 Martin Jambor + + * tree-sra.c (compare_access_positions): Put integral types first, + stabilize sorting of integral types, remove conditions putting + non-full-precision integers last. + (sort_and_splice_var_accesses): Disable scalarization if a + non-integert would be represented by a non-full-precision integer. + + 2019-08-20 Eric Botcazou + + PR rtl-optimization/91347 + * dse.c (scan_insn): Call add_wild_read for non-const/memset tail calls + before reload if HARD_FRAME_POINTER_IS_ARG_POINTER. + + 2019-07-22 Martin Liska + + Backport from mainline + 2019-07-22 Martin Liska + + PR driver/91172 + * opts-common.c (decode_cmdline_option): Decode + argument of -Werror and check it for a wrong language. + * opts-global.c (complain_wrong_lang): Remove such case. + + 2019-07-16 Wilco Dijkstra + + Backport from mainline + 2019-03-05 Wilco Dijkstra + + PR target/89222 + * config/arm/arm.md (movsi): Use targetm.cannot_force_const_mem + to decide when to split off a non-zero offset from a symbol. + * config/arm/arm.c (arm_cannot_force_const_mem): Disallow offsets + in function symbols. + + 2019-07-15 Andreas Krebbel + + Backport from mainline + 2019-07-01 Andreas Krebbel + + * config/s390/vector.md: Fix shift count operand printing. + + 2019-07-12 Eric Botcazou + + PR rtl-optimization/91136 + * df-core.c (ACCESSING REFS): Fix typos in comment. + * resource.c (mark_target_live_reg): Add artificial defs that occur at + the beginning of the block to the initial set of live registers. + + 2019-06-28 Jeff Law + + Backport from mainline + 2019-06-21 Jeff Law + + PR tree-optimization/90949 + * tree-ssa-copy.c (fini_copy_prop): Use reset_flow_sensitive_info. + * tree-ssanames.c (reset_flow_sensitive_info): Reset non-null state. + + 2019-06-27 Martin Jambor + + Backport from mainline + 2019-06-25 Martin Jambor + + PR ipa/90939 + * ipa-cp.c (ipcp_bits_lattice::meet_with): Remove assert. + + 2019-06-16 John David Anglin + + PR middle-end/64242 + * config/pa/pa.md (nonlocal_goto): Restore frame pointer last. Add + frame clobbers and schedule block. + (builtin_longjmp): Likewise. + + 2019-05-24 John David Anglin + + PR target/90530 + * config/pa/pa.c (pa_cannot_change_mode_class): Accept mode changes + from DImode to SImode in floating-point registers on 64-bit target. + * config/pa/pa.md (umulsidi3): Change nonimmediate_operand to + register_operand in xmpyu patterns. + + 2019-05-23 Uroš Bizjak + + Backported from mainline + 2019-05-21 Uroš Bizjak + + * config/i386/cpuid.h (__cpuid): For 32bit targets, zero + %ebx and %ecx bafore calling cpuid with leaf 1 or + non-constant leaf argument. + + 2019-05-21 Uroš Bizjak + + PR target/90547 + * config/i386/i386.md (anddi_1 to andsi_1_zext splitter): + Avoid calling gen_lowpart with CONST operand. + + 2019-05-20 Kelvin Nilsen + + Backport from mainline. + 2019-05-07 Kelvin Nilsen + + PR target/89765 + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): + In handling of ALTIVEC_BUILTIN_VEC_INSERT, use modular arithmetic + to compute vector element selector for both constant and variable + operands. + + 2019-01-03 Iain Sandoe + + PR target/86215 + Backport from mainline + 2017-09-25 Iain Sandoe + + PR target/80556 + * config/i386/darwin.h (REAL_LIB_SPEC): New; put libSystem ahead + of libgcc_eh for m64. + * config/i386/darwin64.h: Likewise. + + 2019-05-15 David Edelsohn + + Backport from mainline + 2019-04-11 David Edelsohn + * xcoffout.h (xcoff_private_rodata_section_name): Declare. + * xcoffout.c (xcoff_private_rodata_section_name): Define. + * config/rs6000/rs6000.c (rs6000_xcoff_asm_init_sections): Create + read_only_private_data_section using coff_private_rodata_section_name. + (rs6000_xcoff_file_start): Generate coff_private_rodata_section_name. + + 2018-12-04 David Edelsohn + 2018-12-13 David Edelsohn + PR target/61976 + * config/rs6000/rs6000.c (rs6000_function_arg): Don't pass aggregates + in FPRs on AIX. Ensure type is non-NULL. + (rs6000_arg_partial_bytes): Same. + + 2019-05-15 Sebastian Huber + + * config/arm/t-rtems: Replace -march=armv7-m multilibs with + -mcpu=cortex-m3 and -mcpu=cortex-m4 multilibs. + + 2019-05-13 Kelvin Nilsen + + Backport from mainline. + 2019-05-06 Kelvin Nilsen + + PR target/89424 + * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Add + handling of V1TImode. + + 2019-05-07 Richard Sandiford + + Backport from mainline: + 2019-01-25 Richard Sandiford + + PR middle-end/89037 + * varasm.c (output_constructor_bitfield): Use wi::extract_uhwi + instead of accessing TREE_INT_CST_ELT directly. + + 2019-05-01 Ramana Radhakrishnan + + Backport from mainline. + 2019-04-30 Ramana Radhakrishnan + PR target/86538 + * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): + Define __ARM_FEATURE_ATOMICS + + 2019-04-30 Srinath Parvathaneni + + PR target/90075 + * config/aarch64/iterators.md (V_INT_EQUIV): Add mode for + integer equivalent of floating point values. + + Backport from mainline + 2018-12-11 Richard Earnshaw + PR target/37369 + * config/aarch64/iterators.md (sizem1): Add sizes for + SFmode and DFmode. + (Vbtype): Add SFmode mapping. + * config/aarch64/aarch64.md (copysigndf3, copysignsf3): Delete. + (copysign3): New expand pattern. + (copysign3_insn): New insn pattern. + + 2019-04-22 Kelvin Nilsen + + Backport from mainline + 2019-03-15 Kelvin Nilsen + + PR target/87532 + * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): + When handling vec_extract, use modular arithmetic to allow + constant selectors greater than vector length. + * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Allow + V1TImode vectors to have constant selector values greater than 0. + Use modular arithmetic to compute vector index. + (rs6000_split_vec_extract_var): Use modular arithmetic to compute + index for in-memory vectors. Correct code generation for + in-register vectors. Use inner mode of vector rather than mode of + destination for move instruction. + (altivec_expand_vec_ext_builtin): Use modular arithmetic to + compute index. + + 2019-04-12 Kelvin Nilsen + + PR target/87532 + * config/rs6000/vsx.md (*vsx_extract__mode_var): + Use QI inner mode with V16QI vector mode. + + 2019-04-19 Xiong Hu Luo + + Backport from trunk + 2018-05-23 Segher Boessenkool + + * doc/sourcebuild.texi (Endianness): New subsubsection. + + 2019-04-11 Martin Liska + + Backport from mainline + 2019-03-08 Martin Liska + + PR target/86952 + * config/i386/i386.c (ix86_option_override_internal): Disable + jump tables when retpolines are used. + + 2019-04-10 Matthew Malcomson + + PR target/90024 + * config/arm/arm.c (neon_valid_immediate): Disallow VOIDmode parameter. + * config/arm/constraints.md (Dm, DN, Dn): Split previous Dn constraint + into three. + * config/arm/neon.md (*neon_mov): Account for TImode and DImode + differences directly. + (*smax3_neon, vashl3, vashr3_imm): Use Dm constraint. + + 2019-04-07 Uroš Bizjak + + PR target/89945 + * config/i386/i386.md (anddi_1 to andsi_1_zext splitter): + Avoid calling gen_lowpart with SYMBOL_REF and LABEL_REF operand. + + 2019-04-06 Eric Botcazou + + Backport from mainline + 2019-02-19 Eric Botcazou + + * rtlanal.c (get_initial_register_offset): Fall back to the estimate + as long as the epilogue isn't completed. + + 2019-04-03 Richard Biener + + PR lto/89896 + * lto-wrapper.c (run_gcc): Avoid implicit rules making + the all target phony. + + 2019-04-02 Xiong Hu Luo + + Backport from trunk r250477. + + 2017-07-24 Carl Love + + * config/rs6000/rs6000-c.c: Add support for built-in functions + vector float vec_extract_fp32_from_shorth (vector unsigned short); + vector float vec_extract_fp32_from_shortl (vector unsigned short); + * config/rs6000/altivec.h (vec_extract_fp_from_shorth, + vec_extract_fp_from_shortl): Add defines for the two builtins. + * config/rs6000/rs6000-builtin.def (VEXTRACT_FP_FROM_SHORTH, + VEXTRACT_FP_FROM_SHORTL): Add BU_P9V_OVERLOAD_1 and BU_P9V_VSX_1 + new builtins. + * config/rs6000/vsx.md vsx_xvcvhpsp): Add define_insn. + (vextract_fp_from_shorth, vextract_fp_from_shortl): Add define_expands. + * doc/extend.texi: Update the built-in documentation file for the + new built-in function. + + Backport from trunk r255555. + + 2017-12-11 Carl Love + + * config/rs6000/altivec.h (vec_extract_fp32_from_shorth, + vec_extract_fp32_from_shortl]): Add #defines. + * config/rs6000/rs6000-builtin.def (VSLDOI_2DI): Add macro expansion. + * config/rs6000/rs6000-c.c (ALTIVEC_BUILTIN_VEC_UNPACKH, + ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VEC_AND, + ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SRL, + ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VEC_SLD, + ALTIVEC_BUILTIN_VEC_SLL): Add expansions. + * doc/extend.texi: Add documentation for the added builtins. + + 2019-03-28 Martin Liska + + Backport from mainline + 2018-11-05 Martin Liska + + PR web/87829 + * doc/invoke.texi: Remove options that are + not disabled with -Os. + + 2019-02-26 Richard Biener + + Backport from mainline + 2019-02-12 Richard Biener + + PR tree-optimization/89253 + * tree-ssa-loop-split.c (tree_ssa_split_loops): Check we can + duplicate the loop. + + 2019-02-08 Richard Biener + + PR middle-end/89223 + * tree-data-ref.c (initialize_matrix_A): Fail if constant + doesn't fit in HWI. + (analyze_subscript_affine_affine): Handle failure from + initialize_matrix_A. + + 2019-01-28 Richard Biener + + PR tree-optimization/88739 + * tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid generating + BIT_FIELD_REFs of non-mode-precision integral operands. + + 2019-03-26 Richard Biener + + Backport from mainline + 2019-01-08 Richard Biener + + PR tree-optimization/86554 + * tree-ssa-sccvn.c (visit_nary_op): When value-numbering to + expressions with different overflow behavior make sure there's an + available expression on the path. + + 2018-11-20 Richard Biener + + PR tree-optimization/88105 + * tree-ssa-dom.c (pass_dominator::execute): Do not walk + backedges. + + 2018-03-08 Richard Biener + + PR middle-end/84552 + * tree-scalar-evolution.c: Include tree-into-ssa.h. + (follow_copies_to_constant): Do not follow SSA names registered + for update. + + 2019-03-21 Bill Schmidt + + * config/rs6000/rs6000.c (rs6000_analyze_swaps): Rebuild + ud- and du-chains between phases. + + 2019-03-21 Matthias Klose + + Backport from mainline + 2019-02-26 Richard Biener + + PR tree-optimization/89505 + * tree-ssa-structalias.c (compute_dependence_clique): Make sure + to handle restrict pointed-to vars with multiple subvars + correctly. + + 2019-03-17 H.J. Lu + + Backport from mainline + 2019-03-14 H.J. Lu + + PR target/89523 + * config/i386/i386.c (ix86_print_operand): Handle 'M' to add + addr32 prefix to VSIB address for X32. + * config/i386/sse.md (*avx512pf_gatherpfsf_mask): Prepend + "%M2" to opcode. + (*avx512pf_gatherpfdf_mask): Likewise. + (*avx512pf_scatterpfsf_mask): Likewise. + (*avx512pf_scatterpfdf_mask): Likewise. + (*avx2_gathersi): Prepend "%M3" to opcode. + (*avx2_gathersi_2): Prepend "%M2" to opcode. + (*avx2_gatherdi): Prepend "%M3" to opcode. + (*avx2_gatherdi_2): Prepend "%M2" to opcode. + (*avx2_gatherdi_3): Prepend "%M3" to opcode. + (*avx2_gatherdi_4): Prepend "%M2" to opcode.` + (*avx512f_gathersi): Prepend "%M4" to opcode. + (*avx512f_gathersi_2): Prepend "%M3" to opcode. + (*avx512f_gatherdi): Prepend "%M4" to opcode. + (*avx512f_gatherdi_2): Prepend "%M3" to opcode. + (*avx512f_scattersi): Prepend "%M0" to opcode. + (*avx512f_scatterdi): Likewise. + + 2019-03-14 Martin Jambor + + Backport from mainline + 2019-03-07 Martin Jambor + + PR lto/87525 + * ipa-cp.c (perform_estimation_of_a_value): Account zero time benefit + for extern inline functions. + + 2019-03-14 Richard Biener + + Backport from mainline + 2018-02-16 Jakub Jelinek + + PR target/84272 + * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest): + Use ++iter rather than iter++ for std::list iterators. + (func_fma_steering::dfs): Likewise. Don't delete nodes right away, + defer deleting them until all nodes in the forest are processed. Do + free even leaf nodes. Change to_process into auto_vec. + + 2019-03-13 Andre Vieira + + Backport from mainline + 2019-03-08 Andre Vieira + + * config/arm/arm.h (TARGET_FP16_TO_DOUBLE): Add TARGET_VFP_DOUBLE + requirement. + + 2019-03-11 Martin Liska + + Backport from mainline + 2019-02-11 David Malcolm + + PR lto/88147 + * input.c (selftest::test_line_offset_overflow): New selftest. + (selftest::input_c_tests): Call it. + + 2019-03-07 Xiong Hu Luo + + Backport of r268834 from mainline to gcc-7-branch. + 2019-02-13 Xiong Hu Luo + + * config/rs6000/altivec.h (vec_sbox_be, vec_cipher_be, + vec_cipherlast_be, vec_ncipher_be, vec_ncipherlast_be): New #defines. + * config/rs6000/crypto.md (CR_vqdi): New define_mode_iterator. + (crypto_vsbox_, crypto__): New define_insns. + * config/rs6000/rs6000-builtin.def (VSBOX_BE): New BU_CRYPTO_1. + (VCIPHER_BE, VCIPHERLAST_BE, VNCIPHER_BE, VNCIPHERLAST_BE): + New BU_CRYPTO_2. + * config/rs6000/rs6000.c (builtin_function_type) + : New switch options. + * doc/extend.texi (vec_sbox_be, vec_cipher_be, vec_cipherlast_be, + vec_ncipher_be, vec_ncipherlast_be): New builtin functions. + + 2019-02-27 Uroš Bizjak + + PR target/89397 + * config/i386/i386.c (ix86_atomic_assign_expand_fenv): Check + TARGET_SSE in addition to TARGET_SSE_MATH. + + (ix86_excess_precision): Ditto. + (ix86_float_exceptions_rounding_supported_p): Ditto. + (use_rsqrt_p): Ditto. + * config/i386/sse.md (rsqrt2): Ditto. + + 2019-02-15 Martin Liska + + Backport from mainline + 2019-02-14 Martin Liska + + PR rtl-optimization/89242 + * dce.c (delete_unmarked_insns): Call free_dominance_info we + process a transformation. + + 2019-02-15 Martin Liska + + Backport from mainline + 2019-02-11 Martin Liska + + PR ipa/89009 + * ipa-cp.c (build_toporder_info): Remove usage of a param. + * ipa-inline.c (inline_small_functions): Likewise. + * ipa-pure-const.c (propagate_pure_const): Likewise. + (propagate_nothrow): Likewise. + * ipa-reference.c (propagate): Likewise. + * ipa-utils.c (struct searchc_env): Remove unused field. + (searchc): Always search across AVAIL_INTERPOSABLE. + (ipa_reduced_postorder): Always allow AVAIL_INTERPOSABLE as + the only called IPA pure const can properly not propagate + across interposable boundary. + * ipa-utils.h (ipa_reduced_postorder): Remove param. + + 2019-02-11 Stefan Agner + + Backport from mainline. + 2019-01-10 Stefan Agner + + PR target/88648 + * config/arm/arm.c (arm_option_override_internal): Force + opts->x_inline_asm_unified to true only if TARGET_THUMB2_P. + + 2019-02-09 Alan Modra + + PR target/88343 + * config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p): Match + logic in rs6000_emit_prologue emitting pic_offset_table setup. + + 2019-02-08 Eric Botcazou + + Backport from mainline + 2018-06-11 Segher Boessenkool + + PR target/85755 + * config/rs6000/rs6000.md (*movdi_internal32): Put constraint modifiers + on the correct operand. + (*movdi_internal64): Ditto. + + 2019-02-06 Kelvin Nilsen + + Backport from mainline. + 2019-01-30 Kelvin Nilsen + * config/rs6000/rs6000-c.c (altivec-resolve_overloaded_builtin): + Change handling of ALTIVEC_BUILTIN_VEC_EXTRACT. Coerce result to + type of vector element when vec_extract is implemented by direct + move. + + 2019-02-06 Eric Botcazou + + * config/i386/i386.c (ix86_expand_prologue): Emit a memory blockage + after restoring registers saved to allocate the frame on Windows. + + 2019-02-05 Andreas Krebbel + + Backport from mainline + 2019-02-05 Andreas Krebbel + + PR target/88856 + * config/s390/s390.md: Remove load and test FP splitter. + + 2019-02-04 Bill Schmidt + + PR target/87064 + Backport from mainline + + 2019-01-30 Bill Schmidt + + PR target/87064 + * config/rs6000/vsx.md (*vsx_reduc__v4sf_scalar): + Disable for little-endian. + + 2019-01-22 Jakub Jelinek + + PR target/87064 + * config/rs6000/vsx.md (*vsx_reduc__v2df_scalar): + Disable for little endian. + + 2018-01-31 Bill Schmidt + + Backport from mainline + 2018-01-31 Bill Schmidt + + PR tree-optimization/89008 + * gimple-ssa-strength-reduction.c (slsr_process_mul): Don't + process anything of the form X * 0. + + 2019-01-31 Richard Biener + + Backport from mainline + 2019-01-31 Richard Biener + + PR rtl-optimization/89115 + * lra.c (lra_rtx_hash): Properly hash CONST_INT values. + + 2019-01-30 Richard Biener + + PR rtl-optimization/89115 + * opts.c (default_options_optimization): Reduce + PARAM_MAX_DSE_ACTIVE_LOCAL_STORES by a factor of 10 at -O1. + Make PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP reduction relative + to the default. + + 2019-01-30 Kewen Lin + + Backport from mainline. + 2019-01-17 Kewen Lin + + * doc/extend.texi: Add four new prototypes for vec_ld and seven new + prototypes for vec_st. + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add entries + for scalar address type variants of altivec_vec_ld/altivec_vec_st, + mainly on signed/unsigned long long and double. + + 2019-01-27 Uroš Bizjak + + PR target/88948 + * rtl.h (prepare_copy_insn): New prototype. + * gcse.c (prepare_copy_insn): New function, split out from + process_insert_insn. + (process_insert_insn): Use prepare_copy_insn. + * store-motion.c (replace_store_insn): Use prepare_copy_insn + instead of gen_move_insn. + + 2019-01-24 Uroš Bizjak + + PR target/88998 + * config/i386/sse.md (sse2_cvtpi2pd): Add SSE alternatives. + Disparage MMX alternative. + (sse2_cvtpd2pi): Ditto. + (sse2_cvttpd2pi): Ditto. + + 2019-01-24 Richard Biener + + Backport from mainline + 2019-01-23 Richard Biener + + PR tree-optimization/89008 + * tree-ssa-reassoc.c (eliminate_using_constants): For * 0 do + not leave another stray operand. + + 2019-01-22 Uroš Bizjak + + PR target/88938 + * config/i386/i386.c (ix86_expand_builtin) [case IX86_BUILTIN_BEXTRI32, + case IX86_BUILTIN_BEXTRI64]: Sanitize operands. + + 2019-01-18 Uroš Bizjak + + * config/alpha/alpha.c (alpha_gimplify_va_arg): + Handle split indirect COMPLEX_TYPE arguments. + + 2019-01-16 Martin Jambor + + Backported from mainline + 2018-12-10 Martin Jambor + + PR ipa/88214 + * ipa-prop.c (determine_locally_known_aggregate_parts): Make sure + we check pointers against pointers. + + 2019-01-09 Eric Botcazou + James Clarke + + PR target/84010 + * config/sparc/sparc.c (sparc_legitimize_tls_address): Only use Pmode + consistently in TLS address generation and adjust code to the renaming + of patterns. Mark calls to __tls_get_addr as const. + * config/sparc/sparc.md (tgd_hi22): Turn into... + (tgd_hi22): ...this and use Pmode throughout. + (tgd_lo10): Turn into... + (tgd_lo10): ...this and use Pmode throughout. + (tgd_add32): Merge into... + (tgd_add64): Likewise. + (tgd_add): ...this and use Pmode throughout. + (tldm_hi22): Turn into... + (tldm_hi22): ...this and use Pmode throughout. + (tldm_lo10): Turn into... + (tldm_lo10): ...this and use Pmode throughout. + (tldm_add32): Merge into... + (tldm_add64): Likewise. + (tldm_add): ...this and use Pmode throughout. + (tldm_call32): Merge into... + (tldm_call64): Likewise. + (tldm_call): ...this and use Pmode throughout. + (tldo_hix22): Turn into... + (tldo_hix22): ...this and use Pmode throughout. + (tldo_lox10): Turn into... + (tldo_lox10): ...this and use Pmode throughout. + (tldo_add32): Merge into... + (tldo_add64): Likewise. + (tldo_add): ...this and use Pmode throughout. + (tie_hi22): Turn into... + (tie_hi22): ...this and use Pmode throughout. + (tie_lo10): Turn into... + (tie_lo10): ...this and use Pmode throughout. + (tie_ld64): Use DImode throughout. + (tie_add32): Merge into... + (tie_add64): Likewise. + (tie_add): ...this and use Pmode throughout. + (tle_hix22_sp32): Merge into... + (tle_hix22_sp64): Likewise. + (tle_hix22): ...this and use Pmode throughout. + (tle_lox22_sp32): Merge into... + (tle_lox22_sp64): Likewise. + (tle_lox22): ...this and use Pmode throughout. + (*tldo_ldub_sp32): Merge into... + (*tldo_ldub_sp64): Likewise. + (*tldo_ldub): ...this and use Pmode throughout. + (*tldo_ldub1_sp32): Merge into... + (*tldo_ldub1_sp64): Likewise. + (*tldo_ldub1): ...this and use Pmode throughout. + (*tldo_ldub2_sp32): Merge into... + (*tldo_ldub2_sp64): Likewise. + (*tldo_ldub2): ...this and use Pmode throughout. + (*tldo_ldsb1_sp32): Merge into... + (*tldo_ldsb1_sp64): Likewise. + (*tldo_ldsb1): ...this and use Pmode throughout. + (*tldo_ldsb2_sp32): Merge into... + (*tldo_ldsb2_sp64): Likewise. + (*tldo_ldsb2): ...this and use Pmode throughout. + (*tldo_ldub3_sp64): Use DImode throughout. + (*tldo_ldsb3_sp64): Likewise. + (*tldo_lduh_sp32): Merge into... + (*tldo_lduh_sp64): Likewise. + (*tldo_lduh): ...this and use Pmode throughout. + (*tldo_lduh1_sp32): Merge into... + (*tldo_lduh1_sp64): Likewise. + (*tldo_lduh1): ...this and use Pmode throughout. + (*tldo_ldsh1_sp32): Merge into... + (*tldo_ldsh1_sp64): Likewise. + (*tldo_ldsh1): ...this and use Pmode throughout. + (*tldo_lduh2_sp64): Use DImode throughout. + (*tldo_ldsh2_sp64): Likewise. + (*tldo_lduw_sp32): Merge into... + (*tldo_lduw_sp64): Likewise. + (*tldo_lduw): ...this and use Pmode throughout. + (*tldo_lduw1_sp64): Use DImode throughout. + (*tldo_ldsw1_sp64): Likewise. + (*tldo_ldx_sp64): Likewise. + (*tldo_stb_sp32): Merge into... + (*tldo_stb_sp64): Likewise. + (*tldo_stb): ...this and use Pmode throughout. + (*tldo_sth_sp32): Merge into... + (*tldo_sth_sp64): Likewise. + (*tldo_sth): ...this and use Pmode throughout. + (*tldo_stw_sp32): Merge into... + (*tldo_stw_sp64): Likewise. + (*tldo_stw): ...this and use Pmode throughout. + (*tldo_stx_sp64): Use DImode throughout. + + 2019-01-09 Eric Botcazou + + * doc/invoke.texi (-Os): Add reference to -finline-functions. + (-finline-small-functions): Add references to -O3 and -Os. + (-findirect-inlining): Likewise. + (-finline-functions): Add references to -Os, -fprofile-use and + -fauto-profile. + + 2019-01-03 Iain Sandoe + + revert: + 2018-12-30 Iain Sandoe + + backport from mainline. + 2018-12-12 Segher Boessenkool + Iain Sandoe + + PR target/88343 + * config/rs6000/rs6000.c (save_reg_p): Do not save the picbase reg + unless it has been used. + (first_reg_to_save): Remove dead code. + + 2019-01-02 Segher Boessenkool + + Backport from trunk + 2018-12-06 Segher Boessenkool + + PR inline-asm/55681 + * doc/extend.texi (Basic Asm): Update grammar. + (Extended Asm): Update grammar. + + Backport from trunk + 2018-12-06 Segher Boessenkool + + * doc/extend.texi (Using Assembly Language with C): Document asm inline. + (Size of an asm): Fix typo. Document asm inline. + * gimple-pretty-print.c (dump_gimple_asm): Handle asm inline. + * gimple.h (enum gf_mask): Add GF_ASM_INLINE. + (gimple_asm_set_volatile): Fix typo. + (gimple_asm_inline_p): New. + (gimple_asm_set_inline): New. + * gimplify.c (gimplify_asm_expr): Propagate the asm inline flag from + tree to gimple. + * ipa-icf-gimple.c (func_checker::compare_gimple_asm): Compare the + gimple_asm_inline_p flag, too. + * tree-core.h (tree_base): Document that protected_flag is ASM_INLINE_P + in an ASM_EXPR. + * tree-inline.c (estimate_num_insns): If gimple_asm_inline_p return + a minimum size for an asm. + * tree.h (ASM_INLINE_P): New. + + 2018-12-30 Iain Sandoe + + backport from mainline. + 2018-12-12 Segher Boessenkool + Iain Sandoe + + PR target/88343 + * config/rs6000/rs6000.c (save_reg_p): Do not save the picbase reg + unless it has been used. + (first_reg_to_save): Remove dead code. + + 2018-12-24 Iain Sandoe + + Backport from mainline + 2018-12-06 Iain Sandoe + + PR c++/87380 + * config/darwin.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC) Remove, use the + default. + * config/rs6000/darwin7.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC): New. + + 2018-12-24 Iain Sandoe + + Backport from mainline + 2018-12-06 Iain Sandoe + + PR target/78444 + * config/i386/darwin.h (STACK_BOUNDARY): Remove macro. + * config/i386/i386.c (ix86_compute_frame_layout): Ensure at least 128b + stack alignment in non-leaf functions. + + 2018-12-24 Iain Sandoe + + Backport from mainline + 2018-08-15 Iain Sandoe + + PR target/81685 + * config/darwin.h: (DEBUG_STR_OFFSETS_SECTION, DEBUG_LOCLISTS_SECTION, + DEBUG_RNGLISTS_SECTION) new macros. (DEBUG_PUBNAMES_SECTION, + DEBUG_PUBTYPES_SECTION) update to include GNU variant. + + 2018-12-21 Uros Bizjak + + Backport from mainline + 2018-12-10 Uros Bizjak + + PR target/88418 + * config/i386/i386.c (ix86_expand_sse_cmp): For vector modes, + check operand 1 with vector_operand predicate. + (ix86_expand_sse_movcc): For vector modes, check op_true with + vector_operand, not nonimmediate_operand. + + 2018-12-19 Bill Schmidt + + Backport from mainline + 2018-12-18 Bill Schmidt + + * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions): + Describe when a typedef name can be used as the type specifier for + a vector type, and when it cannot. + + 2018-12-19 Segher Boessenkool + + Backport from trunk + 2018-12-19 Segher Boessenkool + + PR target/88213 + * config/rs6000/vsx.md (*vsx_extract___load): + Require TARGET_POWERPC64. + + 2018-12-17 Senthil Kumar Selvaraj + + Backport from trunk + 2018-12-17 Senthil Kumar Selvaraj + + PR rtl-optimization/88253 + * combine.c (combine_simplify_rtx): Test for side-effects before + substituting by zero. + + 2018-12-15 Segher Boessenkool + + Backport from trunk + 2018-12-14 Segher Boessenkool + + PR rtl-optimization/88001 + * function.c (match_asm_constraints_1): Don't invalidly share RTL. + + 2018-12-13 Andreas Krebbel + + Backport from mainline + 2018-12-13 Andreas Krebbel + + * config/s390/s390-builtins.def (s390_vec_double_s64): Map to + s390_vec_double_s64 instead of s390_vcdgb. + (s390_vec_double_u64): Map to s390_vec_double_u64 instead of + s390_vcdlgb. + + 2018-12-13 Andreas Krebbel + + Backport from mainline + 2018-12-13 Andreas Krebbel + + * config/s390/vx-builtins.md ("vec_ctd_s64", "vec_ctd_u64") + ("vec_ctsl", "vec_ctul"): Replace 0 with VEC_NOINEXACT. + ("vec_double_s64", "vec_double_u64"): Replace 4 with VEC_INEXACT. + + 2018-12-12 Peter Bergner + + Backport from mainline + 2018-12-07 Peter Bergner + + PR target/87496 + * config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow + -mabi=ieeelongdouble and -mabi=ibmlongdouble without -mlong-double-128. + Do not error for -mabi=ibmlongdouble and no ISA 2.06 support. + * doc/invoke.texi: Document -mabi=ibmlongdouble and -mabi=ieeelongdouble + require -mlong-double-128. + + 2018-12-06 Richard Biener + + * BASE-VER: Increment to 7.4.1. + 2018-12-06 Release Manager * GCC 7.4.0 released. *************** *** 19,31 **** * gcc/dwarf2out.c (FUNC_SECOND_SECT_LABEL): New. (dwarf2out_switch_text_section): Generate a local label for the second function sub-section and apply it as the second FDE start label. ! * gcc/final.c (final_scan_insn_1): Emit second FDE label after the second ! sub-section start. 2018-11-26 Iain Sandoe 2018-08-15 Iain Sandoe ! * config/darwin.c (darwin_function_switched_text_sections): Delete. * gcc/config/darwin.h --- 2292,2304 ---- * gcc/dwarf2out.c (FUNC_SECOND_SECT_LABEL): New. (dwarf2out_switch_text_section): Generate a local label for the second function sub-section and apply it as the second FDE start label. ! * gcc/final.c (final_scan_insn_1): Emit second FDE label after the ! second sub-section start. 2018-11-26 Iain Sandoe 2018-08-15 Iain Sandoe ! * config/darwin.c (darwin_function_switched_text_sections): Delete. * gcc/config/darwin.h diff -Nrcpad gcc-7.4.0/gcc/DATESTAMP gcc-7.5.0/gcc/DATESTAMP *** gcc-7.4.0/gcc/DATESTAMP Thu Dec 6 00:16:14 2018 --- gcc-7.5.0/gcc/DATESTAMP Thu Nov 14 00:16:05 2019 *************** *** 1 **** ! 20181206 --- 1 ---- ! 20191114 diff -Nrcpad gcc-7.4.0/gcc/ada/ChangeLog gcc-7.5.0/gcc/ada/ChangeLog *** gcc-7.4.0/gcc/ada/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gcc/ada/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,143 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-10-12 Eric Botcazou + + PR ada/91995 + * sem_util.ads (Defining_Entity): Remove 2nd and 3th parameters. + * sem_util.adb (Defining_Entity): Remove 2nd and 3th parameters, + and adjust accordingly. + + 2019-10-11 Eric Botcazou + + * gcc-interface/decl.c (annotate_value) : Really test the + sign of the value when deciding to build a NEGATE_EXPR. + : Remove redundant line. + : Do the negation here. + + 2019-09-23 Eric Botcazou + + * gcc-interface/trans.c (Attribute_to_gnu): Test Can_Use_Internal_Rep + on the underlying type of the node. + (Call_to_gnu): Likewise with the type of the prefix. + + 2019-09-06 Iain Sandoe + + Backport from mainline. + 2019-07-02 Iain Sandoe + + * system-darwin-ppc.ads: Set Stack_Check_Probes True for + PPC Darwin. + + 2019-09-06 Iain Sandoe + + Backport from mainline. + 2019-06-30 Iain Sandoe + + * gnatlink.adb (Link_Step): Push -shared-libgcc explicitly, when it + is the target default (unless overidden by the static flag). + When the user has put an instance of shared/static-libgcc do not push + a duplicate of this. + + 2019-06-29 Eric Botcazou + + * gcc-interface/trans.c (mark_visited_r): Set TYPE_SIZES_GIMPLIFIED on + the main variant of a type, if any. + + 2019-06-29 Eric Botcazou + + * gcc-interface/decl.c (set_nonaliased_component_on_array_type): Add + missing guard for the presence of TYPE_CANONICAL. + (set_reverse_storage_order_on_array_type): Likewise. + + 2019-05-28 Eric Botcazou + + * gcc-interface/trans.c (walk_nesting_tree): New static function. + (finalize_nrv): Use it to walk the entire nesting tree. + + 2019-05-07 Rainer Orth + + * gcc-interface/Makefile.in (install-gcc-specs): Use foreach. + Honor DESTDIR. + + 2019-02-26 Eric Botcazou + + PR ada/81956 + Backport from mainline + 2017-09-06 Ed Schonberg + + * exp_ch6.adb (Expand_Call_Helper): Do not optimize calls to + null procedures when GNAT coverage is used, so that their (empty) + bodies are properly covered. + + 2017-09-06 Ed Schonberg + + * exp_ch6.adb (Expand_Call_Helper): Replace call to null + procedure by a single null statement, after evaluating the + actuals that require it. + + 2019-02-23 Eric Botcazou + + PR ada/89349 + Backport from mainline + 2018-05-25 Arnaud Charlet + + * osint.ads (Unknown_Attributes): No longer pretend this is a constant. + (No_File_Info_Cache): Initialize separately. + * osint.adb (No_File_Info_Cache): Update initializer. + + 2019-02-08 Eric Botcazou + + * gcc-interface/trans.c (Loop_Statement_to_gnu): Replace tests on + individual flag_unswitch_loops and flag_tree_loop_vectorize switches + with test on global optimize switch. + (Raise_Error_to_gnu): Likewise. + + 2019-02-07 Eric Botcazou + + * s-linux-sparc.ads (ETIMEDOUT): Set to correct value. + + 2019-02-06 Eric Botcazou + + Backport from mainline + 2017-09-05 Eric Botcazou + + * gcc-interface/decl.c (annotate_value): Tidy up. + : Set TCODE instead of recursing. + : Set TCODE instead of calling Create_Node manually. + : Fold conversions into inner operations. + : Adjust. + : Do not fall through. + + 2019-01-27 Eric Botcazou + + * gcc-interface/decl.c (array_type_has_nonaliased_component): Return + the same value for every dimension of a multidimensional array type. + + 2019-01-26 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu) : Use + DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT for the size to be assigned + by a call to memset if the LHS is a DECL. + + 2019-01-26 Eric Botcazou + + * gcc-interface/trans.c (struct loop_info_d): Remove artificial field. + (Loop_Statement_to_gnu): Do not set it. + + 2019-01-26 Eric Botcazou + + * gcc-interface/decl.c (annotate_value) : Use test on + the sign bit instead of on the sign of the value. + : Turn addition of negative constant into subtraction. + : Simplify. + + 2018-12-24 Iain Sandoe + + * adaint.c [__APPLE__] (__gnat_lwp_self): Ensure that the system + interface used is available on the target. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/gcc/ada/adaint.c gcc-7.5.0/gcc/ada/adaint.c *** gcc-7.4.0/gcc/ada/adaint.c Wed Feb 1 21:36:09 2017 --- gcc-7.5.0/gcc/ada/adaint.c Mon Dec 24 13:35:32 2018 *************** __gnat_lwp_self (void) *** 3174,3182 **** #endif #if defined (__APPLE__) ! #include ! #include ! #include /* System-wide thread identifier. Note it could be truncated on 32 bit hosts. --- 3174,3186 ---- #endif #if defined (__APPLE__) ! # if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1060 ! # include ! # include ! # include ! # else ! # include ! # endif /* System-wide thread identifier. Note it could be truncated on 32 bit hosts. *************** __gnat_lwp_self (void) *** 3184,3189 **** --- 3188,3194 ---- void * __gnat_lwp_self (void) { + #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1060 thread_identifier_info_data_t data; mach_msg_type_number_t count = THREAD_IDENTIFIER_INFO_COUNT; kern_return_t kret; *************** __gnat_lwp_self (void) *** 3194,3199 **** --- 3199,3207 ---- return (void *)(uintptr_t)data.thread_id; else return 0; + #else + return (void *)pthread_mach_thread_np (pthread_self ()); + #endif } #endif diff -Nrcpad gcc-7.4.0/gcc/ada/exp_ch6.adb gcc-7.5.0/gcc/ada/exp_ch6.adb *** gcc-7.4.0/gcc/ada/exp_ch6.adb Mon Jan 23 13:24:47 2017 --- gcc-7.5.0/gcc/ada/exp_ch6.adb Tue Feb 26 08:12:21 2019 *************** package body Exp_Ch6 is *** 3937,3942 **** --- 3937,3959 ---- Unchecked_Convert_To (RTE (RE_Address), Relocate_Node (First_Actual (Call_Node)))); return; + + -- A call to a null procedure is replaced by a null statement, but we + -- are not allowed to ignore possible side effects of the call, so we + -- make sure that actuals are evaluated. + -- We also suppress this optimization for GNATCoverage. + + elsif Is_Null_Procedure (Subp) + and then not Opt.Suppress_Control_Flow_Optimizations + then + Actual := First_Actual (Call_Node); + while Present (Actual) loop + Remove_Side_Effects (Actual); + Next_Actual (Actual); + end loop; + + Rewrite (Call_Node, Make_Null_Statement (Loc)); + return; end if; -- Handle inlining. No action needed if the subprogram is not inlined diff -Nrcpad gcc-7.4.0/gcc/ada/gcc-interface/Makefile.in gcc-7.5.0/gcc/ada/gcc-interface/Makefile.in *** gcc-7.4.0/gcc/ada/gcc-interface/Makefile.in Thu Apr 12 11:08:35 2018 --- gcc-7.5.0/gcc/ada/gcc-interface/Makefile.in Tue May 7 15:24:43 2019 *************** gnatlink-re: ../stamp-tools gnatmake-re *** 2660,2668 **** install-gcc-specs: # Install all the requested GCC spec files. ! for f in $(GCC_SPEC_FILES); do \ ! $(INSTALL_DATA_DATE) $(srcdir)/ada/$$f $(libsubdir)/; \ ! done install-gnatlib: ../stamp-gnatlib-$(RTSDIR) install-gcc-specs $(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR) --- 2660,2667 ---- install-gcc-specs: # Install all the requested GCC spec files. ! $(foreach f,$(GCC_SPEC_FILES), \ ! $(INSTALL_DATA_DATE) $(srcdir)/ada/$(f) $(DESTDIR)$(libsubdir)/;) install-gnatlib: ../stamp-gnatlib-$(RTSDIR) install-gcc-specs $(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR) diff -Nrcpad gcc-7.4.0/gcc/ada/gcc-interface/decl.c gcc-7.5.0/gcc/ada/gcc-interface/decl.c *** gcc-7.4.0/gcc/ada/gcc-interface/decl.c Tue Jul 17 10:12:02 2018 --- gcc-7.5.0/gcc/ada/gcc-interface/decl.c Fri Oct 11 08:57:58 2019 *************** static void *** 6307,6313 **** set_nonaliased_component_on_array_type (tree type) { TYPE_NONALIASED_COMPONENT (type) = 1; ! TYPE_NONALIASED_COMPONENT (TYPE_CANONICAL (type)) = 1; } /* Set TYPE_REVERSE_STORAGE_ORDER on an array type built by means of --- 6307,6314 ---- set_nonaliased_component_on_array_type (tree type) { TYPE_NONALIASED_COMPONENT (type) = 1; ! if (TYPE_CANONICAL (type)) ! TYPE_NONALIASED_COMPONENT (TYPE_CANONICAL (type)) = 1; } /* Set TYPE_REVERSE_STORAGE_ORDER on an array type built by means of *************** static void *** 6317,6323 **** set_reverse_storage_order_on_array_type (tree type) { TYPE_REVERSE_STORAGE_ORDER (type) = 1; ! TYPE_REVERSE_STORAGE_ORDER (TYPE_CANONICAL (type)) = 1; } /* Return true if DISCR1 and DISCR2 represent the same discriminant. */ --- 6318,6325 ---- set_reverse_storage_order_on_array_type (tree type) { TYPE_REVERSE_STORAGE_ORDER (type) = 1; ! if (TYPE_CANONICAL (type)) ! TYPE_REVERSE_STORAGE_ORDER (TYPE_CANONICAL (type)) = 1; } /* Return true if DISCR1 and DISCR2 represent the same discriminant. */ *************** same_discriminant_p (Entity_Id discr1, E *** 6341,6352 **** static bool array_type_has_nonaliased_component (tree gnu_type, Entity_Id gnat_type) { - /* If the array type is not the innermost dimension of the GNAT type, - then it has a non-aliased component. */ - if (TREE_CODE (TREE_TYPE (gnu_type)) == ARRAY_TYPE - && TYPE_MULTI_ARRAY_P (TREE_TYPE (gnu_type))) - return true; - /* If the array type has an aliased component in the front-end sense, then it also has an aliased component in the back-end sense. */ if (Has_Aliased_Components (gnat_type)) --- 6343,6348 ---- *************** array_type_has_nonaliased_component (tre *** 6357,6371 **** if (Is_Derived_Type (gnat_type)) { tree gnu_parent_type = gnat_to_gnu_type (Etype (gnat_type)); - int index; if (TREE_CODE (gnu_parent_type) == UNCONSTRAINED_ARRAY_TYPE) gnu_parent_type = TREE_TYPE (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (gnu_parent_type)))); - for (index = Number_Dimensions (gnat_type) - 1; index > 0; index--) - gnu_parent_type = TREE_TYPE (gnu_parent_type); return TYPE_NONALIASED_COMPONENT (gnu_parent_type); } /* Otherwise, rely exclusively on properties of the element type. */ return type_for_nonaliased_component_p (TREE_TYPE (gnu_type)); } --- 6353,6369 ---- if (Is_Derived_Type (gnat_type)) { tree gnu_parent_type = gnat_to_gnu_type (Etype (gnat_type)); if (TREE_CODE (gnu_parent_type) == UNCONSTRAINED_ARRAY_TYPE) gnu_parent_type = TREE_TYPE (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (gnu_parent_type)))); return TYPE_NONALIASED_COMPONENT (gnu_parent_type); } + /* For a multi-dimensional array type, find the component type. */ + while (TREE_CODE (TREE_TYPE (gnu_type)) == ARRAY_TYPE + && TYPE_MULTI_ARRAY_P (TREE_TYPE (gnu_type))) + gnu_type = TREE_TYPE (gnu_type); + /* Otherwise, rely exclusively on properties of the element type. */ return type_for_nonaliased_component_p (TREE_TYPE (gnu_type)); } *************** static Uint *** 8052,8060 **** annotate_value (tree gnu_size) { TCode tcode; ! Node_Ref_Or_Val ops[3], ret, pre_op1 = No_Uint; struct tree_int_map in; - int i; /* See if we've already saved the value for this node. */ if (EXPR_P (gnu_size)) --- 8050,8057 ---- annotate_value (tree gnu_size) { TCode tcode; ! Node_Ref_Or_Val ops[3] = { No_Uint, No_Uint, No_Uint }; struct tree_int_map in; /* See if we've already saved the value for this node. */ if (EXPR_P (gnu_size)) *************** annotate_value (tree gnu_size) *** 8071,8079 **** in.base.from = NULL_TREE; /* If we do not return inside this switch, TCODE will be set to the ! code to use for a Create_Node operand and LEN (set above) will be ! the number of recursive calls for us to make. */ ! switch (TREE_CODE (gnu_size)) { case INTEGER_CST: --- 8068,8074 ---- in.base.from = NULL_TREE; /* If we do not return inside this switch, TCODE will be set to the ! code to be used in a call to Create_Node. */ switch (TREE_CODE (gnu_size)) { case INTEGER_CST: *************** annotate_value (tree gnu_size) *** 8082,8119 **** if (tree_int_cst_sgn (gnu_size) < 0) { tree t = wide_int_to_tree (sizetype, wi::neg (gnu_size)); ! return annotate_value (build1 (NEGATE_EXPR, sizetype, t)); } ! ! return TREE_OVERFLOW (gnu_size) ? No_Uint : UI_From_gnu (gnu_size); case COMPONENT_REF: /* The only case we handle here is a simple discriminant reference. */ if (DECL_DISCRIMINANT_NUMBER (TREE_OPERAND (gnu_size, 1))) { ! tree n = DECL_DISCRIMINANT_NUMBER (TREE_OPERAND (gnu_size, 1)); /* Climb up the chain of successive extensions, if any. */ ! while (TREE_CODE (TREE_OPERAND (gnu_size, 0)) == COMPONENT_REF ! && DECL_NAME (TREE_OPERAND (TREE_OPERAND (gnu_size, 0), 1)) == parent_name_id) ! gnu_size = TREE_OPERAND (gnu_size, 0); ! if (TREE_CODE (TREE_OPERAND (gnu_size, 0)) == PLACEHOLDER_EXPR) ! return ! Create_Node (Discrim_Val, annotate_value (n), No_Uint, No_Uint); } ! return No_Uint; ! ! CASE_CONVERT: case NON_LVALUE_EXPR: return annotate_value (TREE_OPERAND (gnu_size, 0)); /* Now just list the operations we handle. */ case COND_EXPR: tcode = Cond_Expr; break; - case PLUS_EXPR: tcode = Plus_Expr; break; case MINUS_EXPR: tcode = Minus_Expr; break; - case MULT_EXPR: tcode = Mult_Expr; break; case TRUNC_DIV_EXPR: tcode = Trunc_Div_Expr; break; case CEIL_DIV_EXPR: tcode = Ceil_Div_Expr; break; case FLOOR_DIV_EXPR: tcode = Floor_Div_Expr; break; --- 8077,8122 ---- if (tree_int_cst_sgn (gnu_size) < 0) { tree t = wide_int_to_tree (sizetype, wi::neg (gnu_size)); ! tcode = Negate_Expr; ! ops[0] = UI_From_gnu (t); } ! else ! return TREE_OVERFLOW (gnu_size) ? No_Uint : UI_From_gnu (gnu_size); ! break; case COMPONENT_REF: /* The only case we handle here is a simple discriminant reference. */ if (DECL_DISCRIMINANT_NUMBER (TREE_OPERAND (gnu_size, 1))) { ! tree ref = gnu_size; ! gnu_size = TREE_OPERAND (ref, 1); /* Climb up the chain of successive extensions, if any. */ ! while (TREE_CODE (TREE_OPERAND (ref, 0)) == COMPONENT_REF ! && DECL_NAME (TREE_OPERAND (TREE_OPERAND (ref, 0), 1)) == parent_name_id) ! ref = TREE_OPERAND (ref, 0); ! if (TREE_CODE (TREE_OPERAND (ref, 0)) == PLACEHOLDER_EXPR) ! { ! /* Fall through to common processing as a FIELD_DECL. */ ! tcode = Discrim_Val; ! ops[0] = UI_From_gnu (DECL_DISCRIMINANT_NUMBER (gnu_size)); ! } ! else ! return No_Uint; } + else + return No_Uint; + break; ! CASE_CONVERT: ! case NON_LVALUE_EXPR: return annotate_value (TREE_OPERAND (gnu_size, 0)); /* Now just list the operations we handle. */ case COND_EXPR: tcode = Cond_Expr; break; case MINUS_EXPR: tcode = Minus_Expr; break; case TRUNC_DIV_EXPR: tcode = Trunc_Div_Expr; break; case CEIL_DIV_EXPR: tcode = Ceil_Div_Expr; break; case FLOOR_DIV_EXPR: tcode = Floor_Div_Expr; break; *************** annotate_value (tree gnu_size) *** 8138,8157 **** case EQ_EXPR: tcode = Eq_Expr; break; case NE_EXPR: tcode = Ne_Expr; break; case BIT_AND_EXPR: tcode = Bit_And_Expr; /* For negative values in sizetype, build NEGATE_EXPR of the opposite. ! Such values appear in expressions with aligning patterns. Note that, ! since sizetype is unsigned, we have to jump through some hoops. */ if (TREE_CODE (TREE_OPERAND (gnu_size, 1)) == INTEGER_CST) { ! tree op1 = TREE_OPERAND (gnu_size, 1); ! wide_int signed_op1 = wi::sext (op1, TYPE_PRECISION (sizetype)); ! if (wi::neg_p (signed_op1)) ! { ! op1 = wide_int_to_tree (sizetype, wi::neg (signed_op1)); ! pre_op1 = annotate_value (build1 (NEGATE_EXPR, sizetype, op1)); ! } } break; --- 8141,8195 ---- case EQ_EXPR: tcode = Eq_Expr; break; case NE_EXPR: tcode = Ne_Expr; break; + case PLUS_EXPR: + /* Turn addition of negative constant into subtraction. */ + if (TREE_CODE (TREE_OPERAND (gnu_size, 1)) == INTEGER_CST + && tree_int_cst_sign_bit (TREE_OPERAND (gnu_size, 1))) + { + tcode = Minus_Expr; + wide_int wop1 = wi::neg (TREE_OPERAND (gnu_size, 1)); + ops[1] = annotate_value (wide_int_to_tree (sizetype, wop1)); + break; + } + + /* ... fall through ... */ + + case MULT_EXPR: + tcode = (TREE_CODE (gnu_size) == MULT_EXPR ? Mult_Expr : Plus_Expr); + /* Fold conversions from bytes to bits into inner operations. */ + if (TREE_CODE (TREE_OPERAND (gnu_size, 1)) == INTEGER_CST + && CONVERT_EXPR_P (TREE_OPERAND (gnu_size, 0))) + { + tree inner_op = TREE_OPERAND (TREE_OPERAND (gnu_size, 0), 0); + if (TREE_CODE (inner_op) == TREE_CODE (gnu_size) + && TREE_CODE (TREE_OPERAND (inner_op, 1)) == INTEGER_CST) + { + ops[0] = annotate_value (TREE_OPERAND (inner_op, 0)); + tree inner_op_op1 = TREE_OPERAND (inner_op, 1); + tree gnu_size_op1 = TREE_OPERAND (gnu_size, 1); + wide_int op1; + if (TREE_CODE (gnu_size) == MULT_EXPR) + op1 = wi::mul (inner_op_op1, gnu_size_op1); + else + { + op1 = wi::add (inner_op_op1, gnu_size_op1); + if (wi::zext (op1, TYPE_PRECISION (sizetype)) == 0) + return ops[0]; + } + ops[1] = annotate_value (wide_int_to_tree (sizetype, op1)); + } + } + break; + case BIT_AND_EXPR: tcode = Bit_And_Expr; /* For negative values in sizetype, build NEGATE_EXPR of the opposite. ! Such values can appear in expressions with aligning patterns. */ if (TREE_CODE (TREE_OPERAND (gnu_size, 1)) == INTEGER_CST) { ! wide_int wop1 = wi::neg (TREE_OPERAND (gnu_size, 1)); ! tree op1 = wide_int_to_tree (sizetype, wop1); ! ops[1] = annotate_value (build1 (NEGATE_EXPR, sizetype, op1)); } break; *************** annotate_value (tree gnu_size) *** 8162,8195 **** if (List_Representation_Info == 3 || type_annotate_only) { tree t = maybe_inline_call_in_expr (gnu_size); ! if (t) ! return annotate_value (t); } else return Uint_Minus_1; - /* Fall through... */ - default: return No_Uint; } /* Now get each of the operands that's relevant for this code. If any cannot be expressed as a repinfo node, say we can't. */ ! for (i = 0; i < 3; i++) ! ops[i] = No_Uint; ! ! for (i = 0; i < TREE_CODE_LENGTH (TREE_CODE (gnu_size)); i++) ! { ! if (i == 1 && pre_op1 != No_Uint) ! ops[i] = pre_op1; ! else ops[i] = annotate_value (TREE_OPERAND (gnu_size, i)); ! if (ops[i] == No_Uint) ! return No_Uint; ! } ! ret = Create_Node (tcode, ops[0], ops[1], ops[2]); /* Save the result in the cache. */ if (in.base.from) --- 8200,8225 ---- if (List_Representation_Info == 3 || type_annotate_only) { tree t = maybe_inline_call_in_expr (gnu_size); ! return t ? annotate_value (t) : No_Uint; } else return Uint_Minus_1; default: return No_Uint; } /* Now get each of the operands that's relevant for this code. If any cannot be expressed as a repinfo node, say we can't. */ ! for (int i = 0; i < TREE_CODE_LENGTH (TREE_CODE (gnu_size)); i++) ! if (ops[i] == No_Uint) ! { ops[i] = annotate_value (TREE_OPERAND (gnu_size, i)); ! if (ops[i] == No_Uint) ! return No_Uint; ! } ! Node_Ref_Or_Val ret = Create_Node (tcode, ops[0], ops[1], ops[2]); /* Save the result in the cache. */ if (in.base.from) *************** annotate_value (tree gnu_size) *** 8202,8208 **** h = annotate_value_cache->find_slot (&in, INSERT); gcc_assert (!*h); *h = ggc_alloc (); ! (*h)->base.from = gnu_size; (*h)->to = ret; } --- 8232,8238 ---- h = annotate_value_cache->find_slot (&in, INSERT); gcc_assert (!*h); *h = ggc_alloc (); ! (*h)->base.from = in.base.from; (*h)->to = ret; } diff -Nrcpad gcc-7.4.0/gcc/ada/gcc-interface/trans.c gcc-7.5.0/gcc/ada/gcc-interface/trans.c *** gcc-7.4.0/gcc/ada/gcc-interface/trans.c Thu Nov 8 15:58:16 2018 --- gcc-7.5.0/gcc/ada/gcc-interface/trans.c Mon Sep 23 08:10:03 2019 *************** struct GTY(()) loop_info_d { *** 197,203 **** tree low_bound; tree high_bound; vec *checks; - bool artificial; }; typedef struct loop_info_d *loop_info; --- 197,202 ---- *************** Attribute_to_gnu (Node_Id gnat_node, tre *** 1707,1738 **** /* For other address attributes applied to a nested function, find an inner ADDR_EXPR and annotate it so that we can issue a useful warning with -Wtrampolines. */ ! else if (TREE_CODE (TREE_TYPE (gnu_prefix)) == FUNCTION_TYPE) { ! gnu_expr = remove_conversions (gnu_result, false); ! ! if (TREE_CODE (gnu_expr) == ADDR_EXPR ! && decl_function_context (TREE_OPERAND (gnu_expr, 0))) ! { ! set_expr_location_from_node (gnu_expr, gnat_node); ! /* Also check the inlining status. */ ! check_inlining_for_nested_subprog (TREE_OPERAND (gnu_expr, 0)); ! /* Moreover, for 'Access or 'Unrestricted_Access with non- ! foreign-compatible representation, mark the ADDR_EXPR so ! that we can build a descriptor instead of a trampoline. */ ! if ((attribute == Attr_Access ! || attribute == Attr_Unrestricted_Access) ! && targetm.calls.custom_function_descriptors > 0 ! && Can_Use_Internal_Rep (Etype (gnat_node))) ! FUNC_ADDR_BY_DESCRIPTOR (gnu_expr) = 1; ! /* Otherwise, we need to check that we are not violating the ! No_Implicit_Dynamic_Code restriction. */ ! else if (targetm.calls.custom_function_descriptors != 0) ! Check_Implicit_Dynamic_Code_Allowed (gnat_node); ! } } break; --- 1706,1734 ---- /* For other address attributes applied to a nested function, find an inner ADDR_EXPR and annotate it so that we can issue a useful warning with -Wtrampolines. */ ! else if (TREE_CODE (TREE_TYPE (gnu_prefix)) == FUNCTION_TYPE ! && (gnu_expr = remove_conversions (gnu_result, false)) ! && TREE_CODE (gnu_expr) == ADDR_EXPR ! && decl_function_context (TREE_OPERAND (gnu_expr, 0))) { ! set_expr_location_from_node (gnu_expr, gnat_node); ! /* Also check the inlining status. */ ! check_inlining_for_nested_subprog (TREE_OPERAND (gnu_expr, 0)); ! /* Moreover, for 'Access or 'Unrestricted_Access with non- ! foreign-compatible representation, mark the ADDR_EXPR so ! that we can build a descriptor instead of a trampoline. */ ! if ((attribute == Attr_Access ! || attribute == Attr_Unrestricted_Access) ! && targetm.calls.custom_function_descriptors > 0 ! && Can_Use_Internal_Rep (Underlying_Type (Etype (gnat_node)))) ! FUNC_ADDR_BY_DESCRIPTOR (gnu_expr) = 1; ! /* Otherwise, we need to check that we are not violating the ! No_Implicit_Dynamic_Code restriction. */ ! else if (targetm.calls.custom_function_descriptors != 0) ! Check_Implicit_Dynamic_Code_Allowed (gnat_node); } break; *************** Loop_Statement_to_gnu (Node_Id gnat_node *** 2841,2847 **** /* Save the statement for later reuse. */ gnu_loop_info->stmt = gnu_loop_stmt; - gnu_loop_info->artificial = !Comes_From_Source (gnat_node); /* Set the condition under which the loop must keep going. For the case "LOOP .... END LOOP;" the condition is always true. */ --- 2837,2842 ---- *************** Loop_Statement_to_gnu (Node_Id gnat_node *** 3104,3110 **** unswitching is enabled, do not require the loop bounds to be also invariant, as their evaluation will still be ahead of the loop. */ if (vec_safe_length (gnu_loop_info->checks) > 0 ! && (make_invariant (&gnu_low, &gnu_high) || flag_unswitch_loops)) { struct range_check_info_d *rci; unsigned int i, n_remaining_checks = 0; --- 3099,3105 ---- unswitching is enabled, do not require the loop bounds to be also invariant, as their evaluation will still be ahead of the loop. */ if (vec_safe_length (gnu_loop_info->checks) > 0 ! && (make_invariant (&gnu_low, &gnu_high) || optimize >= 3)) { struct range_check_info_d *rci; unsigned int i, n_remaining_checks = 0; *************** Loop_Statement_to_gnu (Node_Id gnat_node *** 3156,3177 **** /* Note that loop unswitching can only be applied a small number of times to a given loop (PARAM_MAX_UNSWITCH_LEVEL default to 3). */ ! if (0 < n_remaining_checks && n_remaining_checks <= 3 ! && optimize > 1 && !optimize_size) FOR_EACH_VEC_ELT (*gnu_loop_info->checks, i, rci) if (rci->invariant_cond != boolean_false_node) { TREE_OPERAND (rci->inserted_cond, 0) = rci->invariant_cond; ! if (flag_unswitch_loops) add_stmt_with_node_force (rci->inserted_cond, gnat_node); } } /* Second, if loop vectorization is enabled and the iterations of the loop can easily be proved as independent, mark the loop. */ ! if (optimize ! && flag_tree_loop_vectorize && independent_iterations_p (LOOP_STMT_BODY (gnu_loop_stmt))) LOOP_STMT_IVDEP (gnu_loop_stmt) = 1; --- 3151,3172 ---- /* Note that loop unswitching can only be applied a small number of times to a given loop (PARAM_MAX_UNSWITCH_LEVEL default to 3). */ ! if (IN_RANGE (n_remaining_checks, 1, 3) ! && optimize >= 2 ! && !optimize_size) FOR_EACH_VEC_ELT (*gnu_loop_info->checks, i, rci) if (rci->invariant_cond != boolean_false_node) { TREE_OPERAND (rci->inserted_cond, 0) = rci->invariant_cond; ! if (optimize >= 3) add_stmt_with_node_force (rci->inserted_cond, gnat_node); } } /* Second, if loop vectorization is enabled and the iterations of the loop can easily be proved as independent, mark the loop. */ ! if (optimize >= 3 && independent_iterations_p (LOOP_STMT_BODY (gnu_loop_stmt))) LOOP_STMT_IVDEP (gnu_loop_stmt) = 1; *************** finalize_nrv_unc_r (tree *tp, int *walk_ *** 3521,3526 **** --- 3516,3535 ---- return NULL_TREE; } + /* Apply FUNC to all the sub-trees of nested functions in NODE. FUNC is called + with the DATA and the address of each sub-tree. If FUNC returns a non-NULL + value, the traversal is stopped. */ + + static void + walk_nesting_tree (struct cgraph_node *node, walk_tree_fn func, void *data) + { + for (node = node->nested; node; node = node->next_nested) + { + walk_tree_without_duplicates (&DECL_SAVED_TREE (node->decl), func, data); + walk_nesting_tree (node, func, data); + } + } + /* Finalize the Named Return Value optimization for FNDECL. The NRV bitmap contains the candidates for Named Return Value and OTHER is a list of the other return values. GNAT_RET is a representative return node. */ *************** finalize_nrv_unc_r (tree *tp, int *walk_ *** 3528,3534 **** static void finalize_nrv (tree fndecl, bitmap nrv, vec *other, Node_Id gnat_ret) { - struct cgraph_node *node; struct nrv_data data; walk_tree_fn func; unsigned int i; --- 3537,3542 ---- *************** finalize_nrv (tree fndecl, bitmap nrv, v *** 3549,3558 **** return; /* Prune also the candidates that are referenced by nested functions. */ ! node = cgraph_node::get_create (fndecl); ! for (node = node->nested; node; node = node->next_nested) ! walk_tree_without_duplicates (&DECL_SAVED_TREE (node->decl), prune_nrv_r, ! &data); if (bitmap_empty_p (nrv)) return; --- 3557,3563 ---- return; /* Prune also the candidates that are referenced by nested functions. */ ! walk_nesting_tree (cgraph_node::get_create (fndecl), prune_nrv_r, &data); if (bitmap_empty_p (nrv)) return; *************** Call_to_gnu (Node_Id gnat_node, tree *gn *** 4282,4288 **** /* If the access type doesn't require foreign-compatible representation, be prepared for descriptors. */ if (targetm.calls.custom_function_descriptors > 0 ! && Can_Use_Internal_Rep (Etype (Prefix (Name (gnat_node))))) by_descriptor = true; } else if (Nkind (Name (gnat_node)) == N_Attribute_Reference) --- 4287,4294 ---- /* If the access type doesn't require foreign-compatible representation, be prepared for descriptors. */ if (targetm.calls.custom_function_descriptors > 0 ! && Can_Use_Internal_Rep ! (Underlying_Type (Etype (Prefix (Name (gnat_node)))))) by_descriptor = true; } else if (Nkind (Name (gnat_node)) == N_Attribute_Reference) *************** Raise_Error_to_gnu (Node_Id gnat_node, t *** 5639,5645 **** = build1 (SAVE_EXPR, boolean_type_node, boolean_true_node); vec_safe_push (loop->checks, rci); gnu_cond = build_noreturn_cond (gnat_to_gnu (gnat_cond)); ! if (flag_unswitch_loops) gnu_cond = build_binary_op (TRUTH_ANDIF_EXPR, boolean_type_node, rci->inserted_cond, --- 5645,5651 ---- = build1 (SAVE_EXPR, boolean_type_node, boolean_true_node); vec_safe_push (loop->checks, rci); gnu_cond = build_noreturn_cond (gnat_to_gnu (gnat_cond)); ! if (optimize >= 3) gnu_cond = build_binary_op (TRUTH_ANDIF_EXPR, boolean_type_node, rci->inserted_cond, *************** gnat_to_gnu (Node_Id gnat_node) *** 6906,6926 **** /* Or else, use memset when the conditions are met. */ else if (use_memset_p) { ! tree value = fold_convert (integer_type_node, gnu_rhs); ! tree to = gnu_lhs; ! tree type = TREE_TYPE (to); ! tree size ! = SUBSTITUTE_PLACEHOLDER_IN_EXPR (TYPE_SIZE_UNIT (type), to); ! tree to_ptr = build_fold_addr_expr (to); tree t = builtin_decl_explicit (BUILT_IN_MEMSET); ! if (TREE_CODE (value) == INTEGER_CST) { tree mask = build_int_cst (integer_type_node, ((HOST_WIDE_INT) 1 << BITS_PER_UNIT) - 1); value = int_const_binop (BIT_AND_EXPR, value, mask); } ! gnu_result = build_call_expr (t, 3, to_ptr, value, size); } /* Otherwise build a regular assignment. */ --- 6912,6940 ---- /* Or else, use memset when the conditions are met. */ else if (use_memset_p) { ! tree value ! = real_zerop (gnu_rhs) ! ? integer_zero_node ! : fold_convert (integer_type_node, gnu_rhs); ! tree dest = build_fold_addr_expr (gnu_lhs); tree t = builtin_decl_explicit (BUILT_IN_MEMSET); ! /* Be extra careful not to write too much data. */ ! tree size; ! if (TREE_CODE (gnu_lhs) == COMPONENT_REF) ! size = DECL_SIZE_UNIT (TREE_OPERAND (gnu_lhs, 1)); ! else if (DECL_P (gnu_lhs)) ! size = DECL_SIZE_UNIT (gnu_lhs); ! else ! size = TYPE_SIZE_UNIT (TREE_TYPE (gnu_lhs)); ! size = SUBSTITUTE_PLACEHOLDER_IN_EXPR (size, gnu_lhs); ! if (TREE_CODE (value) == INTEGER_CST && !integer_zerop (value)) { tree mask = build_int_cst (integer_type_node, ((HOST_WIDE_INT) 1 << BITS_PER_UNIT) - 1); value = int_const_binop (BIT_AND_EXPR, value, mask); } ! gnu_result = build_call_expr (t, 3, dest, value, size); } /* Otherwise build a regular assignment. */ *************** mark_visited_r (tree *tp, int *walk_subt *** 8084,8091 **** else if (!TYPE_IS_DUMMY_P (t)) TREE_VISITED (t) = 1; if (TYPE_P (t)) ! TYPE_SIZES_GIMPLIFIED (t) = 1; return NULL_TREE; } --- 8098,8106 ---- else if (!TYPE_IS_DUMMY_P (t)) TREE_VISITED (t) = 1; + /* The test in gimplify_type_sizes is on the main variant. */ if (TYPE_P (t)) ! TYPE_SIZES_GIMPLIFIED (TYPE_MAIN_VARIANT (t)) = 1; return NULL_TREE; } diff -Nrcpad gcc-7.4.0/gcc/ada/gnatlink.adb gcc-7.5.0/gcc/ada/gnatlink.adb *** gcc-7.4.0/gcc/ada/gnatlink.adb Mon May 2 09:11:03 2016 --- gcc-7.5.0/gcc/ada/gnatlink.adb Fri Sep 6 16:08:08 2019 *************** begin *** 1888,1893 **** --- 1888,1894 ---- Clean_Link_Option_Set : declare J : Natural; Shared_Libgcc_Seen : Boolean := False; + Static_Libgcc_Seen : Boolean := False; begin J := Linker_Options.First; *************** begin *** 1909,1915 **** end if; end if; ! -- Remove duplicate -shared-libgcc switch if Linker_Options.Table (J).all = Shared_Libgcc_String then if Shared_Libgcc_Seen then --- 1910,1916 ---- end if; end if; ! -- Remove duplicate -shared-libgcc switches if Linker_Options.Table (J).all = Shared_Libgcc_String then if Shared_Libgcc_Seen then *************** begin *** 1923,1928 **** --- 1924,1943 ---- end if; end if; + -- Remove duplicate -static-libgcc switches + + if Linker_Options.Table (J).all = Static_Libgcc_String then + if Static_Libgcc_Seen then + Linker_Options.Table (J .. Linker_Options.Last - 1) := + Linker_Options.Table (J + 1 .. Linker_Options.Last); + Linker_Options.Decrement_Last; + Num_Args := Num_Args - 1; + + else + Static_Libgcc_Seen := True; + end if; + end if; + -- Here we just check for a canonical form that matches the -- pragma Linker_Options set in the NT runtime. *************** begin *** 1954,1967 **** --- 1969,1995 ---- -- libgcc, if gcc is not called with -shared-libgcc, call it -- with -static-libgcc, as there are some platforms where one -- of these two switches is compulsory to link. + -- Don't push extra switches if we already saw one. if Shared_Libgcc_Default = 'T' and then not Shared_Libgcc_Seen + and then not Static_Libgcc_Seen then Linker_Options.Increment_Last; Linker_Options.Table (Linker_Options.Last) := Static_Libgcc; Num_Args := Num_Args + 1; end if; + + -- Likewise, the reverse. + + if Shared_Libgcc_Default = 'H' + and then not Static_Libgcc_Seen + and then not Shared_Libgcc_Seen + then + Linker_Options.Increment_Last; + Linker_Options.Table (Linker_Options.Last) := Shared_Libgcc; + Num_Args := Num_Args + 1; + end if; end if; end Clean_Link_Option_Set; diff -Nrcpad gcc-7.4.0/gcc/ada/osint.adb gcc-7.5.0/gcc/ada/osint.adb *** gcc-7.4.0/gcc/ada/osint.adb Fri Jan 13 10:19:19 2017 --- gcc-7.5.0/gcc/ada/osint.adb Sat Feb 23 10:04:41 2019 *************** package body Osint is *** 250,257 **** Attr : aliased File_Attributes; end record; ! No_File_Info_Cache : constant File_Info_Cache := ! (No_File, Unknown_Attributes); package File_Name_Hash_Table is new GNAT.HTable.Simple_HTable ( Header_Num => File_Hash_Num, --- 250,256 ---- Attr : aliased File_Attributes; end record; ! No_File_Info_Cache : constant File_Info_Cache := (No_File, (others => 0)); package File_Name_Hash_Table is new GNAT.HTable.Simple_HTable ( Header_Num => File_Hash_Num, diff -Nrcpad gcc-7.4.0/gcc/ada/osint.ads gcc-7.5.0/gcc/ada/osint.ads *** gcc-7.4.0/gcc/ada/osint.ads Tue Apr 19 12:59:27 2016 --- gcc-7.5.0/gcc/ada/osint.ads Sat Feb 23 10:04:41 2019 *************** package Osint is *** 273,282 **** -- from the disk and then cached in the File_Attributes parameter (possibly -- along with other values). ! type File_Attributes is private; ! Unknown_Attributes : constant File_Attributes; -- A cache for various attributes for a file (length, accessibility,...) ! -- This must be initialized to Unknown_Attributes prior to the first call. function Is_Directory (Name : C_File_Name; --- 273,298 ---- -- from the disk and then cached in the File_Attributes parameter (possibly -- along with other values). ! File_Attributes_Size : constant Natural := 32; ! -- This should be big enough to fit a "struct file_attributes" on any ! -- system. It doesn't cause any malfunction if it is too big (which avoids ! -- the need for either mapping the struct exactly or importing the sizeof ! -- from C, which would result in dynamic code). However, it does waste ! -- space (e.g. when a component of this type appears in a record, if it is ! -- unnecessarily large). Note: for runtime units, use System.OS_Constants. ! -- SIZEOF_struct_file_attributes instead, which has the exact value. ! ! type File_Attributes is ! array (1 .. File_Attributes_Size) ! of System.Storage_Elements.Storage_Element; ! for File_Attributes'Alignment use Standard'Maximum_Alignment; ! ! Unknown_Attributes : File_Attributes; -- A cache for various attributes for a file (length, accessibility,...) ! -- Will be initialized properly at elaboration (for efficiency later on, ! -- avoid function calls every time we want to reset the attributes) prior ! -- to the first usage. We cannot make it constant since the compiler may ! -- put it in a read-only section. function Is_Directory (Name : C_File_Name; *************** private *** 769,790 **** -- detected, the file being written is deleted, and a fatal error is -- signalled. - File_Attributes_Size : constant Natural := 32; - -- This should be big enough to fit a "struct file_attributes" on any - -- system. It doesn't cause any malfunction if it is too big (which avoids - -- the need for either mapping the struct exactly or importing the sizeof - -- from C, which would result in dynamic code). However, it does waste - -- space (e.g. when a component of this type appears in a record, if it is - -- unnecessarily large). Note: for runtime units, use System.OS_Constants. - -- SIZEOF_struct_file_attributes instead, which has the exact value. - - type File_Attributes is - array (1 .. File_Attributes_Size) - of System.Storage_Elements.Storage_Element; - for File_Attributes'Alignment use Standard'Maximum_Alignment; - - Unknown_Attributes : constant File_Attributes := (others => 0); - -- Will be initialized properly at elaboration (for efficiency later on, - -- avoid function calls every time we want to reset the attributes). - end Osint; --- 785,788 ---- diff -Nrcpad gcc-7.4.0/gcc/ada/s-linux-sparc.ads gcc-7.5.0/gcc/ada/s-linux-sparc.ads *** gcc-7.4.0/gcc/ada/s-linux-sparc.ads Wed Jan 7 10:12:03 2015 --- gcc-7.5.0/gcc/ada/s-linux-sparc.ads Thu Feb 7 16:29:48 2019 *************** package System.Linux is *** 70,76 **** EINVAL : constant := 22; ENOMEM : constant := 12; EPERM : constant := 1; ! ETIMEDOUT : constant := 110; ------------- -- Signals -- --- 70,76 ---- EINVAL : constant := 22; ENOMEM : constant := 12; EPERM : constant := 1; ! ETIMEDOUT : constant := 60; ------------- -- Signals -- diff -Nrcpad gcc-7.4.0/gcc/ada/sem_util.adb gcc-7.5.0/gcc/ada/sem_util.adb *** gcc-7.4.0/gcc/ada/sem_util.adb Sat Sep 9 12:06:48 2017 --- gcc-7.5.0/gcc/ada/sem_util.adb Sat Oct 12 14:51:26 2019 *************** package body Sem_Util is *** 5203,5212 **** -- Defining_Entity -- --------------------- ! function Defining_Entity ! (N : Node_Id; ! Empty_On_Errors : Boolean := False) return Entity_Id ! is Err : Entity_Id := Empty; begin --- 5203,5209 ---- -- Defining_Entity -- --------------------- ! function Defining_Entity (N : Node_Id) return Entity_Id is Err : Entity_Id := Empty; begin *************** package body Sem_Util is *** 5285,5298 **** -- can continue semantic analysis. elsif Nam = Error then ! if Empty_On_Errors then ! return Empty; ! else ! Err := Make_Temporary (Sloc (N), 'T'); ! Set_Defining_Unit_Name (N, Err); ! return Err; ! end if; -- If not an entity, get defining identifier --- 5282,5291 ---- -- can continue semantic analysis. elsif Nam = Error then ! Err := Make_Temporary (Sloc (N), 'T'); ! Set_Defining_Unit_Name (N, Err); ! return Err; -- If not an entity, get defining identifier *************** package body Sem_Util is *** 5307,5317 **** return Entity (Identifier (N)); when others => ! if Empty_On_Errors then ! return Empty; ! else ! raise Program_Error; ! end if; end case; end Defining_Entity; --- 5300,5306 ---- return Entity (Identifier (N)); when others => ! raise Program_Error; end case; end Defining_Entity; diff -Nrcpad gcc-7.4.0/gcc/ada/sem_util.ads gcc-7.5.0/gcc/ada/sem_util.ads *** gcc-7.4.0/gcc/ada/sem_util.ads Sat Sep 9 12:06:48 2017 --- gcc-7.5.0/gcc/ada/sem_util.ads Sat Oct 12 14:51:26 2019 *************** package Sem_Util is *** 474,482 **** -- in the case of a descendant of a generic formal type (returns Int'Last -- instead of 0). ! function Defining_Entity ! (N : Node_Id; ! Empty_On_Errors : Boolean := False) return Entity_Id; -- Given a declaration N, returns the associated defining entity. If the -- declaration has a specification, the entity is obtained from the -- specification. If the declaration has a defining unit name, then the --- 474,480 ---- -- in the case of a descendant of a generic formal type (returns Int'Last -- instead of 0). ! function Defining_Entity (N : Node_Id) return Entity_Id; -- Given a declaration N, returns the associated defining entity. If the -- declaration has a specification, the entity is obtained from the -- specification. If the declaration has a defining unit name, then the *************** package Sem_Util is *** 487,505 **** -- local entities declared during loop expansion. These entities need -- debugging information, generated through Qualify_Entity_Names, and -- the loop declaration must be placed in the table Name_Qualify_Units. - -- - -- Set flag Empty_On_Error to change the behavior of this routine as - -- follows: - -- - -- * True - A declaration that lacks a defining entity returns Empty. - -- A node that does not allow for a defining entity returns Empty. - -- - -- * False - A declaration that lacks a defining entity is given a new - -- internally generated entity which is subsequently returned. A node - -- that does not allow for a defining entity raises Program_Error. - -- - -- The former semantics is appropriate for the back end; the latter - -- semantics is appropriate for the front end. function Denotes_Discriminant (N : Node_Id; --- 485,490 ---- diff -Nrcpad gcc-7.4.0/gcc/ada/system-darwin-ppc.ads gcc-7.5.0/gcc/ada/system-darwin-ppc.ads *** gcc-7.4.0/gcc/ada/system-darwin-ppc.ads Mon Dec 5 11:15:17 2016 --- gcc-7.5.0/gcc/ada/system-darwin-ppc.ads Fri Sep 6 16:11:09 2019 *************** private *** 158,164 **** Preallocated_Stacks : constant Boolean := False; Signed_Zeros : constant Boolean := True; Stack_Check_Default : constant Boolean := False; ! Stack_Check_Probes : constant Boolean := False; Stack_Check_Limits : constant Boolean := False; Support_Aggregates : constant Boolean := True; Support_Atomic_Primitives : constant Boolean := Word_Size = 64; --- 158,164 ---- Preallocated_Stacks : constant Boolean := False; Signed_Zeros : constant Boolean := True; Stack_Check_Default : constant Boolean := False; ! Stack_Check_Probes : constant Boolean := True; Stack_Check_Limits : constant Boolean := False; Support_Aggregates : constant Boolean := True; Support_Atomic_Primitives : constant Boolean := Word_Size = 64; diff -Nrcpad gcc-7.4.0/gcc/brig/ChangeLog gcc-7.5.0/gcc/brig/ChangeLog *** gcc-7.4.0/gcc/brig/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gcc/brig/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/gcc/builtins.c gcc-7.5.0/gcc/builtins.c *** gcc-7.4.0/gcc/builtins.c Fri Jun 22 20:52:44 2018 --- gcc-7.5.0/gcc/builtins.c Fri Aug 30 12:16:43 2019 *************** expand_builtin_int_roundingfn (tree exp, *** 2508,2514 **** tree arg; if (!validate_arglist (exp, REAL_TYPE, VOID_TYPE)) ! gcc_unreachable (); arg = CALL_EXPR_ARG (exp, 0); --- 2508,2514 ---- tree arg; if (!validate_arglist (exp, REAL_TYPE, VOID_TYPE)) ! return NULL_RTX; arg = CALL_EXPR_ARG (exp, 0); *************** expand_builtin_int_roundingfn_2 (tree ex *** 2644,2650 **** enum built_in_function fallback_fn = BUILT_IN_NONE; if (!validate_arglist (exp, REAL_TYPE, VOID_TYPE)) ! gcc_unreachable (); arg = CALL_EXPR_ARG (exp, 0); --- 2644,2650 ---- enum built_in_function fallback_fn = BUILT_IN_NONE; if (!validate_arglist (exp, REAL_TYPE, VOID_TYPE)) ! return NULL_RTX; arg = CALL_EXPR_ARG (exp, 0); *************** maybe_emit_sprintf_chk_warning (tree exp *** 9774,9779 **** --- 9774,9782 ---- static void maybe_emit_free_warning (tree exp) { + if (call_expr_nargs (exp) != 1) + return; + tree arg = CALL_EXPR_ARG (exp, 0); STRIP_NOPS (arg); diff -Nrcpad gcc-7.4.0/gcc/c/ChangeLog gcc-7.5.0/gcc/c/ChangeLog *** gcc-7.4.0/gcc/c/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gcc/c/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,104 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-09-05 Iain Sandoe + + Backport from mainline. + 2019-08-23 Iain Sandoe + + PR pch/61250 + * c-parser.c (c_parse_file): Call c_common_no_more_pch () + after determining that the first token is not + PRAGMA_GCC_PCH_PREPROCESS. + + 2019-08-30 Jakub Jelinek + + Backported from mainline + 2019-04-19 Jakub Jelinek + + PR c++/90108 + * c-decl.c (merge_decls): If remove is main variant and + DECL_ORIGINAL_TYPE is some other type, remove a DECL_ORIGINAL_TYPE + variant that has newdecl as TYPE_NAME if any. + + 2019-04-12 Jakub Jelinek + + PR c/89933 + * c-decl.c (merge_decls): When newdecl's type is its main variant, + don't try to remove it from the variant list, but instead assert + it has no variants. + + 2019-03-19 Jakub Jelinek + + PR c/89734 + * c-decl.c (grokdeclarator): Call c_build_qualified_type on function + return type even if quals_used is 0. Formatting fixes. + + 2019-01-16 Joseph Myers + + Backport from mainline + 2019-01-07 Joseph Myers + + PR c/88720 + PR c/88726 + * c-decl.c (pop_scope): Use TREE_PUBLIC and b->nested to determine + whether a function is nested, not DECL_EXTERNAL. Diagnose inline + functions declared but never defined only for external scope, not + for other scopes. + + 2018-01-02 Segher Boessenkool + + Backport from trunk + 2018-12-06 Segher Boessenkool + + PR inline-asm/55681 + * c-parser.c (c_parser_asm_statement): Update grammar. Allow any + combination of volatile and goto, in any order, without repetitions. + + Backport from trunk + 2018-12-06 Segher Boessenkool + + * c-parser.c (c_parser_asm_statement): Detect the inline keyword + after asm. Pass a flag for it to build_asm_expr. + * c-tree.h (build_asm_expr): Update declaration. + * c-typeck.c (build_asm_stmt): Add is_inline parameter. Use it to + set ASM_INLINE_P. + + Backport from trunk + 2018-12-08 Segher Boessenkool + + * c-parser (c_parser_asm_statement) [RID_INLINE]: Delete stray line + setting "quals". + + Backport from trunk + 2018-12-19 Segher Boessenkool + + * c-parser.c (c_parser_asm_statement): Rewrite the loop to work without + "done" boolean variable. + + Backport from trunk + 2018-12-19 Segher Boessenkool + + * c-parser.c (c_parser_asm_statement): Keep track of the location each + asm qualifier is first seen; use that to give nicer "duplicate asm + qualifier" messages. Delete 'quals" variable, instead pass the + "is_volatile_ flag to build_asm_stmt directly. + * c-tree.h (build_asm_stmt): Make the first arg bool instead of tree. + * c-typeck.c (build_asm_stmt): Ditto; adjust. + + Backport from trunk + 2018-12-19 Segher Boessenkool + + * c-parser.c (c_parser_asm_statement) : Give + a more specific error message (instead of just falling through). + + And extra for the backport + 2019-01-02 Segher Boessenkool + + * c-parser.c (c_parser_asm_statement): Output a warning instead of an + error for const and restrict. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/gcc/c/c-decl.c gcc-7.5.0/gcc/c/c-decl.c *** gcc-7.4.0/gcc/c/c-decl.c Fri Dec 22 18:12:15 2017 --- gcc-7.5.0/gcc/c/c-decl.c Fri Aug 30 12:38:31 2019 *************** pop_scope (void) *** 1235,1242 **** && DECL_ABSTRACT_ORIGIN (p) != 0 && DECL_ABSTRACT_ORIGIN (p) != p) TREE_ADDRESSABLE (DECL_ABSTRACT_ORIGIN (p)) = 1; ! if (!DECL_EXTERNAL (p) && !DECL_INITIAL (p) && scope != file_scope && scope != external_scope) { --- 1235,1243 ---- && DECL_ABSTRACT_ORIGIN (p) != 0 && DECL_ABSTRACT_ORIGIN (p) != p) TREE_ADDRESSABLE (DECL_ABSTRACT_ORIGIN (p)) = 1; ! if (!TREE_PUBLIC (p) && !DECL_INITIAL (p) + && !b->nested && scope != file_scope && scope != external_scope) { *************** pop_scope (void) *** 1252,1258 **** in the same translation unit." */ if (!flag_gnu89_inline && !lookup_attribute ("gnu_inline", DECL_ATTRIBUTES (p)) ! && scope != external_scope) pedwarn (input_location, 0, "inline function %q+D declared but never defined", p); DECL_EXTERNAL (p) = 1; --- 1253,1259 ---- in the same translation unit." */ if (!flag_gnu89_inline && !lookup_attribute ("gnu_inline", DECL_ATTRIBUTES (p)) ! && scope == external_scope) pedwarn (input_location, 0, "inline function %q+D declared but never defined", p); DECL_EXTERNAL (p) = 1; *************** merge_decls (tree newdecl, tree olddecl, *** 2347,2359 **** if (TYPE_NAME (TREE_TYPE (newdecl)) == newdecl) { tree remove = TREE_TYPE (newdecl); ! for (tree t = TYPE_MAIN_VARIANT (remove); ; ! t = TYPE_NEXT_VARIANT (t)) ! if (TYPE_NEXT_VARIANT (t) == remove) ! { ! TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (remove); ! break; ! } } } --- 2348,2380 ---- if (TYPE_NAME (TREE_TYPE (newdecl)) == newdecl) { tree remove = TREE_TYPE (newdecl); ! if (TYPE_MAIN_VARIANT (remove) == remove) ! { ! gcc_assert (TYPE_NEXT_VARIANT (remove) == NULL_TREE); ! /* If remove is the main variant, no need to remove that ! from the list. One of the DECL_ORIGINAL_TYPE ! variants, e.g. created for aligned attribute, might still ! refer to the newdecl TYPE_DECL though, so remove that one ! in that case. */ ! if (DECL_ORIGINAL_TYPE (newdecl) ! && DECL_ORIGINAL_TYPE (newdecl) != remove) ! for (tree t = TYPE_MAIN_VARIANT (DECL_ORIGINAL_TYPE (newdecl)); ! t; t = TYPE_MAIN_VARIANT (t)) ! if (TYPE_NAME (TYPE_NEXT_VARIANT (t)) == newdecl) ! { ! TYPE_NEXT_VARIANT (t) ! = TYPE_NEXT_VARIANT (TYPE_NEXT_VARIANT (t)); ! break; ! } ! } ! else ! for (tree t = TYPE_MAIN_VARIANT (remove); ; ! t = TYPE_NEXT_VARIANT (t)) ! if (TYPE_NEXT_VARIANT (t) == remove) ! { ! TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (remove); ! break; ! } } } *************** grokdeclarator (const struct c_declarato *** 6360,6369 **** quals_used &= TYPE_QUAL_ATOMIC; if (quals_used && VOID_TYPE_P (type) && really_funcdef) pedwarn (specs_loc, 0, ! "function definition has qualified void return type"); else warning_at (specs_loc, OPT_Wignored_qualifiers, ! "type qualifiers ignored on function return type"); /* Ensure an error for restrict on invalid types; the DR#423 resolution is not entirely clear about --- 6381,6392 ---- quals_used &= TYPE_QUAL_ATOMIC; if (quals_used && VOID_TYPE_P (type) && really_funcdef) pedwarn (specs_loc, 0, ! "function definition has qualified void " ! "return type"); else warning_at (specs_loc, OPT_Wignored_qualifiers, ! "type qualifiers ignored on function " ! "return type"); /* Ensure an error for restrict on invalid types; the DR#423 resolution is not entirely clear about *************** grokdeclarator (const struct c_declarato *** 6373,6380 **** && (!POINTER_TYPE_P (type) || !C_TYPE_OBJECT_OR_INCOMPLETE_P (TREE_TYPE (type)))) error_at (loc, "invalid use of %"); ! if (quals_used) ! type = c_build_qualified_type (type, quals_used); } type_quals = TYPE_UNQUALIFIED; --- 6396,6402 ---- && (!POINTER_TYPE_P (type) || !C_TYPE_OBJECT_OR_INCOMPLETE_P (TREE_TYPE (type)))) error_at (loc, "invalid use of %"); ! type = c_build_qualified_type (type, quals_used); } type_quals = TYPE_UNQUALIFIED; diff -Nrcpad gcc-7.4.0/gcc/c/c-parser.c gcc-7.5.0/gcc/c/c-parser.c *** gcc-7.4.0/gcc/c/c-parser.c Sun Dec 10 20:52:54 2017 --- gcc-7.5.0/gcc/c/c-parser.c Thu Sep 5 19:27:31 2019 *************** c_parser_for_statement (c_parser *parser *** 6089,6149 **** } /* Parse an asm statement, a GNU extension. This is a full-blown asm ! statement with inputs, outputs, clobbers, and volatile tag ! allowed. asm-statement: ! asm type-qualifier[opt] ( asm-argument ) ; ! asm type-qualifier[opt] goto ( asm-goto-argument ) ; asm-argument: asm-string-literal asm-string-literal : asm-operands[opt] asm-string-literal : asm-operands[opt] : asm-operands[opt] ! asm-string-literal : asm-operands[opt] : asm-operands[opt] : asm-clobbers[opt] ! ! asm-goto-argument: asm-string-literal : : asm-operands[opt] : asm-clobbers[opt] \ : asm-goto-operands ! Qualifiers other than volatile are accepted in the syntax but ! warned for. */ static tree c_parser_asm_statement (c_parser *parser) { ! tree quals, str, outputs, inputs, clobbers, labels, ret; ! bool simple, is_goto; location_t asm_loc = c_parser_peek_token (parser)->location; int section, nsections; gcc_assert (c_parser_next_token_is_keyword (parser, RID_ASM)); c_parser_consume_token (parser); - if (c_parser_next_token_is_keyword (parser, RID_VOLATILE)) - { - quals = c_parser_peek_token (parser)->value; - c_parser_consume_token (parser); - } - else if (c_parser_next_token_is_keyword (parser, RID_CONST) - || c_parser_next_token_is_keyword (parser, RID_RESTRICT)) - { - warning_at (c_parser_peek_token (parser)->location, - 0, - "%E qualifier ignored on asm", - c_parser_peek_token (parser)->value); - quals = NULL_TREE; - c_parser_consume_token (parser); - } - else - quals = NULL_TREE; ! is_goto = false; ! if (c_parser_next_token_is_keyword (parser, RID_GOTO)) { ! c_parser_consume_token (parser); ! is_goto = true; } /* ??? Follow the C++ parser rather than using the lex_untranslated_string kludge. */ parser->lex_untranslated_string = true; --- 6089,6192 ---- } /* Parse an asm statement, a GNU extension. This is a full-blown asm ! statement with inputs, outputs, clobbers, and volatile, inline, and goto ! tags allowed. ! ! asm-qualifier: ! volatile ! inline ! goto ! ! asm-qualifier-list: ! asm-qualifier-list asm-qualifier ! asm-qualifier asm-statement: ! asm asm-qualifier-list[opt] ( asm-argument ) ; asm-argument: asm-string-literal asm-string-literal : asm-operands[opt] asm-string-literal : asm-operands[opt] : asm-operands[opt] ! asm-string-literal : asm-operands[opt] : asm-operands[opt] \ ! : asm-clobbers[opt] asm-string-literal : : asm-operands[opt] : asm-clobbers[opt] \ : asm-goto-operands ! The form with asm-goto-operands is valid if and only if the ! asm-qualifier-list contains goto, and is the only allowed form in that case. ! Duplicate asm-qualifiers are not allowed. */ static tree c_parser_asm_statement (c_parser *parser) { ! tree str, outputs, inputs, clobbers, labels, ret; ! bool simple; location_t asm_loc = c_parser_peek_token (parser)->location; int section, nsections; gcc_assert (c_parser_next_token_is_keyword (parser, RID_ASM)); c_parser_consume_token (parser); ! /* Handle the asm-qualifier-list. */ ! location_t volatile_loc = UNKNOWN_LOCATION; ! location_t inline_loc = UNKNOWN_LOCATION; ! location_t goto_loc = UNKNOWN_LOCATION; ! for (;;) { ! c_token *token = c_parser_peek_token (parser); ! location_t loc = token->location; ! switch (token->keyword) ! { ! case RID_VOLATILE: ! if (volatile_loc) ! { ! error_at (loc, "duplicate asm qualifier %qE", token->value); ! inform (volatile_loc, "first seen here"); ! } ! else ! volatile_loc = loc; ! c_parser_consume_token (parser); ! continue; ! ! case RID_INLINE: ! if (inline_loc) ! { ! error_at (loc, "duplicate asm qualifier %qE", token->value); ! inform (inline_loc, "first seen here"); ! } ! else ! inline_loc = loc; ! c_parser_consume_token (parser); ! continue; ! ! case RID_GOTO: ! if (goto_loc) ! { ! error_at (loc, "duplicate asm qualifier %qE", token->value); ! inform (goto_loc, "first seen here"); ! } ! else ! goto_loc = loc; ! c_parser_consume_token (parser); ! continue; ! ! case RID_CONST: ! case RID_RESTRICT: ! warning_at (loc, 0, "%qE is not an asm qualifier", token->value); ! c_parser_consume_token (parser); ! continue; ! ! default: ! break; ! } ! break; } + bool is_volatile = (volatile_loc != UNKNOWN_LOCATION); + bool is_inline = (inline_loc != UNKNOWN_LOCATION); + bool is_goto = (goto_loc != UNKNOWN_LOCATION); + /* ??? Follow the C++ parser rather than using the lex_untranslated_string kludge. */ parser->lex_untranslated_string = true; *************** c_parser_asm_statement (c_parser *parser *** 6216,6223 **** if (!c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>")) c_parser_skip_to_end_of_block_or_statement (parser); ! ret = build_asm_stmt (quals, build_asm_expr (asm_loc, str, outputs, inputs, ! clobbers, labels, simple)); error: parser->lex_untranslated_string = false; --- 6259,6267 ---- if (!c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>")) c_parser_skip_to_end_of_block_or_statement (parser); ! ret = build_asm_stmt (is_volatile, ! build_asm_expr (asm_loc, str, outputs, inputs, ! clobbers, labels, simple, is_inline)); error: parser->lex_untranslated_string = false; *************** c_parse_file (void) *** 18170,18175 **** --- 18214,18221 ---- if (c_parser_peek_token (&tparser)->pragma_kind == PRAGMA_GCC_PCH_PREPROCESS) c_parser_pragma_pch_preprocess (&tparser); + else + c_common_no_more_pch (); the_parser = ggc_alloc (); *the_parser = tparser; diff -Nrcpad gcc-7.4.0/gcc/c/c-tree.h gcc-7.5.0/gcc/c/c-tree.h *** gcc-7.4.0/gcc/c/c-tree.h Mon Mar 27 21:07:21 2017 --- gcc-7.5.0/gcc/c/c-tree.h Wed Jan 2 22:49:04 2019 *************** extern tree build_compound_literal (loca *** 659,666 **** extern void check_compound_literal_type (location_t, struct c_type_name *); extern tree c_start_case (location_t, location_t, tree, bool); extern void c_finish_case (tree, tree); ! extern tree build_asm_expr (location_t, tree, tree, tree, tree, tree, bool); ! extern tree build_asm_stmt (tree, tree); extern int c_types_compatible_p (tree, tree); extern tree c_begin_compound_stmt (bool); extern tree c_end_compound_stmt (location_t, tree, bool); --- 659,667 ---- extern void check_compound_literal_type (location_t, struct c_type_name *); extern tree c_start_case (location_t, location_t, tree, bool); extern void c_finish_case (tree, tree); ! extern tree build_asm_expr (location_t, tree, tree, tree, tree, tree, bool, ! bool); ! extern tree build_asm_stmt (bool, tree); extern int c_types_compatible_p (tree, tree); extern tree c_begin_compound_stmt (bool); extern tree c_end_compound_stmt (location_t, tree, bool); diff -Nrcpad gcc-7.4.0/gcc/c/c-typeck.c gcc-7.5.0/gcc/c/c-typeck.c *** gcc-7.4.0/gcc/c/c-typeck.c Fri Jun 22 21:25:04 2018 --- gcc-7.5.0/gcc/c/c-typeck.c Wed Jan 2 22:49:04 2019 *************** process_init_element (location_t loc, st *** 9669,9677 **** (guaranteed to be 'volatile' or null) and ARGS (represented using an ASM_EXPR node). */ tree ! build_asm_stmt (tree cv_qualifier, tree args) { ! if (!ASM_VOLATILE_P (args) && cv_qualifier) ASM_VOLATILE_P (args) = 1; return add_stmt (args); } --- 9669,9677 ---- (guaranteed to be 'volatile' or null) and ARGS (represented using an ASM_EXPR node). */ tree ! build_asm_stmt (bool is_volatile, tree args) { ! if (is_volatile) ASM_VOLATILE_P (args) = 1; return add_stmt (args); } *************** build_asm_stmt (tree cv_qualifier, tree *** 9680,9689 **** some INPUTS, and some CLOBBERS. The latter three may be NULL. SIMPLE indicates whether there was anything at all after the string in the asm expression -- asm("blah") and asm("blah" : ) ! are subtly different. We use a ASM_EXPR node to represent this. */ tree build_asm_expr (location_t loc, tree string, tree outputs, tree inputs, ! tree clobbers, tree labels, bool simple) { tree tail; tree args; --- 9680,9691 ---- some INPUTS, and some CLOBBERS. The latter three may be NULL. SIMPLE indicates whether there was anything at all after the string in the asm expression -- asm("blah") and asm("blah" : ) ! are subtly different. We use a ASM_EXPR node to represent this. ! LOC is the location of the asm, and IS_INLINE says whether this ! is asm inline. */ tree build_asm_expr (location_t loc, tree string, tree outputs, tree inputs, ! tree clobbers, tree labels, bool simple, bool is_inline) { tree tail; tree args; *************** build_asm_expr (location_t loc, tree str *** 9801,9806 **** --- 9803,9809 ---- as volatile. */ ASM_INPUT_P (args) = simple; ASM_VOLATILE_P (args) = (noutputs == 0); + ASM_INLINE_P (args) = is_inline; return args; } diff -Nrcpad gcc-7.4.0/gcc/c-family/ChangeLog gcc-7.5.0/gcc/c-family/ChangeLog *** gcc-7.4.0/gcc/c-family/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gcc/c-family/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,40 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-09-05 Iain Sandoe + + Backport from mainline + 2019-08-23 Iain Sandoe + + PR pch/61250 + * c-lex.c (c_lex_with_flags): Don't call + c_common_no_more_pch () from here. + + 2019-08-30 Richard Biener + + Backport from mainline + 2019-05-15 Richard Biener + + PR c/90474 + * c-common.c (c_common_mark_addressable_vec): Also mark + a COMPOUND_LITERAL_EXPR_DECL addressable similar to + c_mark_addressable. + + 2019-08-30 Jakub Jelinek + + Backported from mainline + 2019-06-25 Jakub Jelinek + + PR sanitizer/90954 + * c-omp.c (c_finish_omp_atomic): Allow tree_invariant_p in addition + to SAVE_EXPR in first operand of a COMPOUND_EXPR. + + 2019-04-09 Eric Botcazou + + * c-ada-spec.c (print_destructor): Deal with deleting destructors. + (dump_ada_declaration) : Likewise. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/gcc/c-family/c-ada-spec.c gcc-7.5.0/gcc/c-family/c-ada-spec.c *** gcc-7.4.0/gcc/c-family/c-ada-spec.c Thu Mar 9 09:20:59 2017 --- gcc-7.5.0/gcc/c-family/c-ada-spec.c Tue Apr 9 19:30:57 2019 *************** print_destructor (pretty_printer *buffer *** 2663,2668 **** --- 2663,2670 ---- tree decl_name = DECL_NAME (DECL_ORIGIN (t)); pp_string (buffer, "Delete_"); + if (strncmp (IDENTIFIER_POINTER (DECL_NAME (t)), "__del", 5) == 0) + pp_string (buffer, "And_Free_"); pp_ada_tree_identifier (buffer, decl_name, t, false); } *************** print_ada_declaration (pretty_printer *b *** 2915,2922 **** if (DECL_ARTIFICIAL (t)) return 0; ! /* Only consider constructors/destructors for complete objects. */ ! if (strncmp (IDENTIFIER_POINTER (decl_name), "__comp", 6) != 0) return 0; } --- 2917,2925 ---- if (DECL_ARTIFICIAL (t)) return 0; ! /* Only consider complete constructors and deleting destructors. */ ! if (strncmp (IDENTIFIER_POINTER (decl_name), "__comp", 6) != 0 ! && strncmp (IDENTIFIER_POINTER (decl_name), "__del", 5) != 0) return 0; } diff -Nrcpad gcc-7.4.0/gcc/c-family/c-common.c gcc-7.5.0/gcc/c-family/c-common.c *** gcc-7.4.0/gcc/c-family/c-common.c Fri Jun 22 21:33:58 2018 --- gcc-7.5.0/gcc/c-family/c-common.c Fri Aug 30 16:44:17 2019 *************** c_common_mark_addressable_vec (tree t) *** 6529,6534 **** --- 6529,6536 ---- return; if (!VAR_P (t) || !DECL_HARD_REGISTER (t)) TREE_ADDRESSABLE (t) = 1; + if (TREE_CODE (t) == COMPOUND_LITERAL_EXPR) + TREE_ADDRESSABLE (COMPOUND_LITERAL_EXPR_DECL (t)) = 1; } diff -Nrcpad gcc-7.4.0/gcc/c-family/c-lex.c gcc-7.5.0/gcc/c-family/c-lex.c *** gcc-7.4.0/gcc/c-family/c-lex.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/c-family/c-lex.c Thu Sep 5 19:27:31 2019 *************** enum cpp_ttype *** 387,393 **** c_lex_with_flags (tree *value, location_t *loc, unsigned char *cpp_flags, int lex_flags) { - static bool no_more_pch; const cpp_token *tok; enum cpp_ttype type; unsigned char add_flags = 0; --- 387,392 ---- *************** c_lex_with_flags (tree *value, location_ *** 621,632 **** if (cpp_flags) *cpp_flags = tok->flags | add_flags; - if (!no_more_pch) - { - no_more_pch = true; - c_common_no_more_pch (); - } - timevar_pop (TV_CPP); return type; --- 620,625 ---- diff -Nrcpad gcc-7.4.0/gcc/c-family/c-omp.c gcc-7.5.0/gcc/c-family/c-omp.c *** gcc-7.4.0/gcc/c-family/c-omp.c Fri Jun 22 21:25:04 2018 --- gcc-7.5.0/gcc/c-family/c-omp.c Fri Aug 30 12:47:28 2019 *************** c_finish_omp_atomic (location_t loc, enu *** 256,262 **** if (TREE_CODE (x) == COMPOUND_EXPR) { pre = TREE_OPERAND (x, 0); ! gcc_assert (TREE_CODE (pre) == SAVE_EXPR); x = TREE_OPERAND (x, 1); } gcc_assert (TREE_CODE (x) == MODIFY_EXPR); --- 256,262 ---- if (TREE_CODE (x) == COMPOUND_EXPR) { pre = TREE_OPERAND (x, 0); ! gcc_assert (TREE_CODE (pre) == SAVE_EXPR || tree_invariant_p (pre)); x = TREE_OPERAND (x, 1); } gcc_assert (TREE_CODE (x) == MODIFY_EXPR); diff -Nrcpad gcc-7.4.0/gcc/calls.c gcc-7.5.0/gcc/calls.c *** gcc-7.4.0/gcc/calls.c Fri Jun 22 20:43:53 2018 --- gcc-7.5.0/gcc/calls.c Fri Aug 30 12:41:43 2019 *************** expand_call (tree exp, rtx target, int i *** 3333,3338 **** --- 3333,3360 ---- || dbg_cnt (tail_call) == false) try_tail_call = 0; + /* Workaround buggy C/C++ wrappers around Fortran routines with + character(len=constant) arguments if the hidden string length arguments + are passed on the stack; if the callers forget to pass those arguments, + attempting to tail call in such routines leads to stack corruption. + Avoid tail calls in functions where at least one such hidden string + length argument is passed (partially or fully) on the stack in the + caller and the callee needs to pass any arguments on the stack. + See PR90329. */ + if (try_tail_call && args_size.constant != 0) + for (tree arg = DECL_ARGUMENTS (current_function_decl); + arg; arg = DECL_CHAIN (arg)) + if (DECL_HIDDEN_STRING_LENGTH (arg) && DECL_INCOMING_RTL (arg)) + { + subrtx_iterator::array_type array; + FOR_EACH_SUBRTX (iter, array, DECL_INCOMING_RTL (arg), NONCONST) + if (MEM_P (*iter)) + { + try_tail_call = 0; + break; + } + } + /* If the user has marked the function as requiring tail-call optimization, attempt it. */ if (must_tail_call) diff -Nrcpad gcc-7.4.0/gcc/cfgcleanup.c gcc-7.5.0/gcc/cfgcleanup.c *** gcc-7.4.0/gcc/cfgcleanup.c Tue Apr 18 17:31:30 2017 --- gcc-7.5.0/gcc/cfgcleanup.c Fri Aug 30 11:21:45 2019 *************** outgoing_edges_match (int mode, basic_bl *** 1620,1629 **** if (crtl->shrink_wrapped && single_succ_p (bb1) && single_succ (bb1) == EXIT_BLOCK_PTR_FOR_FN (cfun) ! && !JUMP_P (BB_END (bb1)) && !(CALL_P (BB_END (bb1)) && SIBLING_CALL_P (BB_END (bb1)))) return false; ! /* If BB1 has only one successor, we may be looking at either an unconditional jump, or a fake edge to exit. */ if (single_succ_p (bb1) --- 1620,1632 ---- if (crtl->shrink_wrapped && single_succ_p (bb1) && single_succ (bb1) == EXIT_BLOCK_PTR_FOR_FN (cfun) ! && (!JUMP_P (BB_END (bb1)) ! /* Punt if the only successor is a fake edge to exit, the jump ! must be some weird one. */ ! || (single_succ_edge (bb1)->flags & EDGE_FAKE) != 0) && !(CALL_P (BB_END (bb1)) && SIBLING_CALL_P (BB_END (bb1)))) return false; ! /* If BB1 has only one successor, we may be looking at either an unconditional jump, or a fake edge to exit. */ if (single_succ_p (bb1) diff -Nrcpad gcc-7.4.0/gcc/cfghooks.c gcc-7.5.0/gcc/cfghooks.c *** gcc-7.4.0/gcc/cfghooks.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/cfghooks.c Thu Sep 5 12:11:52 2019 *************** can_duplicate_block_p (const_basic_block *** 1067,1073 **** AFTER. */ basic_block ! duplicate_block (basic_block bb, edge e, basic_block after) { edge s, n; basic_block new_bb; --- 1067,1073 ---- AFTER. */ basic_block ! duplicate_block (basic_block bb, edge e, basic_block after, copy_bb_data *id) { edge s, n; basic_block new_bb; *************** duplicate_block (basic_block bb, edge e, *** 1083,1089 **** gcc_checking_assert (can_duplicate_block_p (bb)); ! new_bb = cfg_hooks->duplicate_block (bb); if (after) move_block_after (new_bb, after); --- 1083,1089 ---- gcc_checking_assert (can_duplicate_block_p (bb)); ! new_bb = cfg_hooks->duplicate_block (bb, id); if (after) move_block_after (new_bb, after); *************** copy_bbs (basic_block *bbs, unsigned n, *** 1355,1367 **** unsigned i, j; basic_block bb, new_bb, dom_bb; edge e; /* Duplicate bbs, update dominators, assign bbs to loops. */ for (i = 0; i < n; i++) { /* Duplicate. */ bb = bbs[i]; ! new_bb = new_bbs[i] = duplicate_block (bb, NULL, after); after = new_bb; bb->flags |= BB_DUPLICATED; if (bb->loop_father) --- 1355,1368 ---- unsigned i, j; basic_block bb, new_bb, dom_bb; edge e; + copy_bb_data id; /* Duplicate bbs, update dominators, assign bbs to loops. */ for (i = 0; i < n; i++) { /* Duplicate. */ bb = bbs[i]; ! new_bb = new_bbs[i] = duplicate_block (bb, NULL, after, &id); after = new_bb; bb->flags |= BB_DUPLICATED; if (bb->loop_father) diff -Nrcpad gcc-7.4.0/gcc/cfghooks.h gcc-7.5.0/gcc/cfghooks.h *** gcc-7.4.0/gcc/cfghooks.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/cfghooks.h Thu Sep 5 12:11:52 2019 *************** struct profile_record *** 54,59 **** --- 54,72 ---- bool run; }; + typedef int_hash dependence_hash; + + /* Optional data for duplicate_block. */ + + struct copy_bb_data + { + copy_bb_data() : dependence_map (NULL) {} + ~copy_bb_data () { delete dependence_map; } + + /* A map from the copied BBs dependence info cliques to + equivalents in the BBs duplicated to. */ + hash_map *dependence_map; + }; struct cfg_hooks { *************** struct cfg_hooks *** 112,118 **** bool (*can_duplicate_block_p) (const_basic_block a); /* Duplicate block A. */ ! basic_block (*duplicate_block) (basic_block a); /* Higher level functions representable by primitive operations above if we didn't have some oddities in RTL and Tree representations. */ --- 125,131 ---- bool (*can_duplicate_block_p) (const_basic_block a); /* Duplicate block A. */ ! basic_block (*duplicate_block) (basic_block a, copy_bb_data *); /* Higher level functions representable by primitive operations above if we didn't have some oddities in RTL and Tree representations. */ *************** extern void tidy_fallthru_edges (void); *** 227,233 **** extern void predict_edge (edge e, enum br_predictor predictor, int probability); extern bool predicted_by_p (const_basic_block bb, enum br_predictor predictor); extern bool can_duplicate_block_p (const_basic_block); ! extern basic_block duplicate_block (basic_block, edge, basic_block); extern bool block_ends_with_call_p (basic_block bb); extern bool empty_block_p (basic_block); extern basic_block split_block_before_cond_jump (basic_block); --- 240,247 ---- extern void predict_edge (edge e, enum br_predictor predictor, int probability); extern bool predicted_by_p (const_basic_block bb, enum br_predictor predictor); extern bool can_duplicate_block_p (const_basic_block); ! extern basic_block duplicate_block (basic_block, edge, basic_block, ! copy_bb_data * = NULL); extern bool block_ends_with_call_p (basic_block bb); extern bool empty_block_p (basic_block); extern basic_block split_block_before_cond_jump (basic_block); diff -Nrcpad gcc-7.4.0/gcc/cfgloop.h gcc-7.5.0/gcc/cfgloop.h *** gcc-7.4.0/gcc/cfgloop.h Tue Mar 14 12:47:42 2017 --- gcc-7.5.0/gcc/cfgloop.h Thu Sep 5 12:11:52 2019 *************** struct GTY ((chain_next ("%h.next"))) lo *** 220,225 **** --- 220,229 ---- /* True if the loop is part of an oacc kernels region. */ unsigned in_oacc_kernels_region : 1; + /* If this loop was inlined the main clique of the callee which does + not need remapping when copying the loop body. */ + unsigned short owned_clique; + /* For SIMD loops, this is a unique identifier of the loop, referenced by IFN_GOMP_SIMD_VF, IFN_GOMP_SIMD_LANE and IFN_GOMP_SIMD_LAST_LANE builtins. */ diff -Nrcpad gcc-7.4.0/gcc/cfgloopmanip.c gcc-7.5.0/gcc/cfgloopmanip.c *** gcc-7.4.0/gcc/cfgloopmanip.c Tue Feb 21 15:37:18 2017 --- gcc-7.5.0/gcc/cfgloopmanip.c Thu Sep 5 12:11:52 2019 *************** copy_loop_info (struct loop *loop, struc *** 1023,1028 **** --- 1023,1029 ---- target->warned_aggressive_loop_optimizations |= loop->warned_aggressive_loop_optimizations; target->in_oacc_kernels_region = loop->in_oacc_kernels_region; + target->owned_clique = loop->owned_clique; } /* Copies copy of LOOP as subloop of TARGET loop, placing newly diff -Nrcpad gcc-7.4.0/gcc/cfgrtl.c gcc-7.5.0/gcc/cfgrtl.c *** gcc-7.4.0/gcc/cfgrtl.c Fri Dec 22 08:53:37 2017 --- gcc-7.5.0/gcc/cfgrtl.c Thu Sep 5 12:11:52 2019 *************** duplicate_insn_chain (rtx_insn *from, rt *** 4204,4210 **** /* Create a duplicate of the basic block BB. */ static basic_block ! cfg_layout_duplicate_bb (basic_block bb) { rtx_insn *insn; basic_block new_bb; --- 4204,4210 ---- /* Create a duplicate of the basic block BB. */ static basic_block ! cfg_layout_duplicate_bb (basic_block bb, copy_bb_data *) { rtx_insn *insn; basic_block new_bb; *************** rtl_can_remove_branch_p (const_edge e) *** 5013,5021 **** } static basic_block ! rtl_duplicate_bb (basic_block bb) { ! bb = cfg_layout_duplicate_bb (bb); bb->aux = NULL; return bb; } --- 5013,5021 ---- } static basic_block ! rtl_duplicate_bb (basic_block bb, copy_bb_data *id) { ! bb = cfg_layout_duplicate_bb (bb, id); bb->aux = NULL; return bb; } diff -Nrcpad gcc-7.4.0/gcc/combine.c gcc-7.5.0/gcc/combine.c *** gcc-7.4.0/gcc/combine.c Tue Nov 20 09:04:12 2018 --- gcc-7.5.0/gcc/combine.c Fri Aug 30 11:59:10 2019 *************** combine_validate_cost (rtx_insn *i0, rtx *** 962,975 **** } ! /* Delete any insns that copy a register to itself. */ ! static void delete_noop_moves (void) { rtx_insn *insn, *next; basic_block bb; FOR_EACH_BB_FN (bb, cfun) { for (insn = BB_HEAD (bb); insn != NEXT_INSN (BB_END (bb)); insn = next) --- 962,978 ---- } ! /* Delete any insns that copy a register to itself. ! Return true if the CFG was changed. */ ! static bool delete_noop_moves (void) { rtx_insn *insn, *next; basic_block bb; + bool edges_deleted = false; + FOR_EACH_BB_FN (bb, cfun) { for (insn = BB_HEAD (bb); insn != NEXT_INSN (BB_END (bb)); insn = next) *************** delete_noop_moves (void) *** 980,989 **** if (dump_file) fprintf (dump_file, "deleting noop move %d\n", INSN_UID (insn)); ! delete_insn_and_edges (insn); } } } } --- 983,994 ---- if (dump_file) fprintf (dump_file, "deleting noop move %d\n", INSN_UID (insn)); ! edges_deleted |= delete_insn_and_edges (insn); } } } + + return edges_deleted; } *************** insn_a_feeds_b (rtx_insn *a, rtx_insn *b *** 1122,1129 **** /* Main entry point for combiner. F is the first insn of the function. NREGS is the first unused pseudo-reg number. ! Return nonzero if the combiner has turned an indirect jump ! instruction into a direct jump. */ static int combine_instructions (rtx_insn *f, unsigned int nregs) { --- 1127,1134 ---- /* Main entry point for combiner. F is the first insn of the function. NREGS is the first unused pseudo-reg number. ! Return nonzero if the CFG was changed (e.g. if the combiner has ! turned an indirect jump instruction into a direct jump). */ static int combine_instructions (rtx_insn *f, unsigned int nregs) { *************** retry: *** 1501,1507 **** default_rtl_profile (); clear_bb_flags (); new_direct_jump_p |= purge_all_dead_edges (); ! delete_noop_moves (); /* Clean up. */ obstack_free (&insn_link_obstack, NULL); --- 1506,1512 ---- default_rtl_profile (); clear_bb_flags (); new_direct_jump_p |= purge_all_dead_edges (); ! new_direct_jump_p |= delete_noop_moves (); /* Clean up. */ obstack_free (&insn_link_obstack, NULL); *************** combine_simplify_rtx (rtx x, machine_mod *** 5807,5814 **** && GET_MODE_PRECISION (mode) < GET_MODE_PRECISION (op0_mode) && subreg_lowpart_offset (mode, op0_mode) == SUBREG_BYTE (x) && HWI_COMPUTABLE_MODE_P (op0_mode) ! && (nonzero_bits (SUBREG_REG (x), op0_mode) ! & GET_MODE_MASK (mode)) == 0) return CONST0_RTX (mode); } --- 5812,5820 ---- && GET_MODE_PRECISION (mode) < GET_MODE_PRECISION (op0_mode) && subreg_lowpart_offset (mode, op0_mode) == SUBREG_BYTE (x) && HWI_COMPUTABLE_MODE_P (op0_mode) ! && ((nonzero_bits (SUBREG_REG (x), op0_mode) ! & GET_MODE_MASK (mode)) == 0) ! && !side_effects_p (SUBREG_REG (x))) return CONST0_RTX (mode); } *************** make_extraction (machine_mode mode, rtx *** 7480,7485 **** --- 7486,7492 ---- /* We can't do this if we are widening INNER_MODE (it may not be aligned, for one thing). */ && GET_MODE_PRECISION (inner_mode) >= GET_MODE_PRECISION (tmode) + && pos + len <= GET_MODE_PRECISION (is_mode) && (inner_mode == tmode || (! mode_dependent_address_p (XEXP (inner, 0), MEM_ADDR_SPACE (inner)) *************** make_extraction (machine_mode mode, rtx *** 7631,7636 **** --- 7638,7647 ---- && GET_MODE_SIZE (extraction_mode) < GET_MODE_SIZE (mode)) extraction_mode = mode; + /* Punt if len is too large for extraction_mode. */ + if (len > GET_MODE_PRECISION (extraction_mode)) + return NULL_RTX; + if (!MEM_P (inner)) wanted_inner_mode = wanted_inner_reg_mode; else diff -Nrcpad gcc-7.4.0/gcc/config/aarch64/aarch64-c.c gcc-7.5.0/gcc/config/aarch64/aarch64-c.c *** gcc-7.4.0/gcc/config/aarch64/aarch64-c.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/config/aarch64/aarch64-c.c Wed May 1 15:27:40 2019 *************** aarch64_update_cpp_builtins (cpp_reader *** 134,139 **** --- 134,141 ---- aarch64_def_or_undef (TARGET_CRYPTO, "__ARM_FEATURE_CRYPTO", pfile); aarch64_def_or_undef (TARGET_SIMD_RDMA, "__ARM_FEATURE_QRDMX", pfile); + aarch64_def_or_undef (TARGET_LSE, "__ARM_FEATURE_ATOMICS", pfile); + /* Not for ACLE, but required to keep "float.h" correct if we switch target between implementations that do or do not support ARMv8.2-A 16-bit floating-point extensions. */ diff -Nrcpad gcc-7.4.0/gcc/config/aarch64/aarch64.md gcc-7.5.0/gcc/config/aarch64/aarch64.md *** gcc-7.4.0/gcc/config/aarch64/aarch64.md Tue Apr 10 12:59:08 2018 --- gcc-7.5.0/gcc/config/aarch64/aarch64.md Tue Apr 30 09:31:04 2019 *************** *** 140,145 **** --- 140,146 ---- UNSPEC_RSQRTS UNSPEC_NZCV UNSPEC_XPACLRI + UNSPEC_COPYSIGN ]) (define_c_enum "unspecv" [ *************** *** 5003,5047 **** ;; LDR d2, #(1 << 63) ;; BSL v2.8b, [y], [x] ;; ! ;; or another, equivalent, sequence using one of BSL/BIT/BIF. ! ;; aarch64_simd_bsldf will select the best suited of these instructions ! ;; to generate based on register allocation, and knows how to partially ! ;; constant fold based on the values of X and Y, so expand through that. ! (define_expand "copysigndf3" ! [(match_operand:DF 0 "register_operand") ! (match_operand:DF 1 "register_operand") ! (match_operand:DF 2 "register_operand")] "TARGET_FLOAT && TARGET_SIMD" { ! rtx mask = gen_reg_rtx (DImode); ! emit_move_insn (mask, GEN_INT (HOST_WIDE_INT_1U << 63)); ! emit_insn (gen_aarch64_simd_bsldf (operands[0], mask, ! operands[2], operands[1])); DONE; } ) ! ;; As above, but we must first get to a 64-bit value if we wish to use ! ;; aarch64_simd_bslv2sf. ! ! (define_expand "copysignsf3" ! [(match_operand:SF 0 "register_operand") ! (match_operand:SF 1 "register_operand") ! (match_operand:SF 2 "register_operand")] "TARGET_FLOAT && TARGET_SIMD" ! { ! rtx mask = gen_reg_rtx (DImode); ! ! /* Juggle modes to get us in to a vector mode for BSL. */ ! rtx op1 = lowpart_subreg (V2SFmode, operands[1], SFmode); ! rtx op2 = lowpart_subreg (V2SFmode, operands[2], SFmode); ! rtx tmp = gen_reg_rtx (V2SFmode); ! emit_move_insn (mask, GEN_INT (HOST_WIDE_INT_1U << 31)); ! emit_insn (gen_aarch64_simd_bslv2sf (tmp, mask, op2, op1)); ! emit_move_insn (operands[0], lowpart_subreg (SFmode, tmp, V2SFmode)); ! DONE; ! } ) ;; ------------------------------------------------------------------- --- 5004,5048 ---- ;; LDR d2, #(1 << 63) ;; BSL v2.8b, [y], [x] ;; ! ;; or another, equivalent, sequence using one of BSL/BIT/BIF. Because ! ;; we expect these operations to nearly always operate on ! ;; floating-point values, we do not want the operation to be ! ;; simplified into a bit-field insert operation that operates on the ! ;; integer side, since typically that would involve three inter-bank ! ;; register copies. As we do not expect copysign to be followed by ! ;; other logical operations on the result, it seems preferable to keep ! ;; this as an unspec operation, rather than exposing the underlying ! ;; logic to the compiler. ! (define_expand "copysign3" ! [(match_operand:GPF 0 "register_operand") ! (match_operand:GPF 1 "register_operand") ! (match_operand:GPF 2 "register_operand")] "TARGET_FLOAT && TARGET_SIMD" { ! rtx bitmask = gen_reg_rtx (mode); ! emit_move_insn (bitmask, GEN_INT (HOST_WIDE_INT_M1U ! << (GET_MODE_BITSIZE (mode) - 1))); ! emit_insn (gen_copysign3_insn (operands[0], operands[1], operands[2], ! bitmask)); DONE; } ) ! (define_insn "copysign3_insn" ! [(set (match_operand:GPF 0 "register_operand" "=w,w,w,r") ! (unspec:GPF [(match_operand:GPF 1 "register_operand" "w,0,w,r") ! (match_operand:GPF 2 "register_operand" "w,w,0,0") ! (match_operand: 3 "register_operand" ! "0,w,w,X")] ! UNSPEC_COPYSIGN))] "TARGET_FLOAT && TARGET_SIMD" ! "@ ! bsl\\t%0., %2., %1. ! bit\\t%0., %2., %3. ! bif\\t%0., %1., %3. ! bfxil\\t%0, %1, #0, " ! [(set_attr "type" "neon_bsl,neon_bsl,neon_bsl,bfm")] ) ;; ------------------------------------------------------------------- diff -Nrcpad gcc-7.4.0/gcc/config/aarch64/cortex-a57-fma-steering.c gcc-7.5.0/gcc/config/aarch64/cortex-a57-fma-steering.c *** gcc-7.4.0/gcc/config/aarch64/cortex-a57-fma-steering.c Fri Jul 28 11:13:45 2017 --- gcc-7.5.0/gcc/config/aarch64/cortex-a57-fma-steering.c Thu Mar 14 09:18:07 2019 *************** fma_forest::merge_forest (fma_forest *ot *** 404,410 **** /* Update root nodes' pointer to forest. */ for (other_root_iter = other_roots->begin (); ! other_root_iter != other_roots->end (); other_root_iter++) (*other_root_iter)->set_forest (this); /* Remove other_forest from the list of forests and move its tree roots in --- 404,410 ---- /* Update root nodes' pointer to forest. */ for (other_root_iter = other_roots->begin (); ! other_root_iter != other_roots->end (); ++other_root_iter) (*other_root_iter)->set_forest (this); /* Remove other_forest from the list of forests and move its tree roots in *************** func_fma_steering::dfs (void (*process_f *** 845,858 **** void (*process_node) (fma_forest *, fma_node *), bool free) { ! vec to_process; std::list::iterator forest_iter; - to_process.create (0); - /* For each forest. */ for (forest_iter = this->m_fma_forests.begin (); ! forest_iter != this->m_fma_forests.end (); forest_iter++) { std::list::iterator root_iter; --- 845,857 ---- void (*process_node) (fma_forest *, fma_node *), bool free) { ! auto_vec to_process; ! auto_vec to_free; std::list::iterator forest_iter; /* For each forest. */ for (forest_iter = this->m_fma_forests.begin (); ! forest_iter != this->m_fma_forests.end (); ++forest_iter) { std::list::iterator root_iter; *************** func_fma_steering::dfs (void (*process_f *** 861,867 **** /* For each tree root in this forest. */ for (root_iter = (*forest_iter)->get_roots ()->begin (); ! root_iter != (*forest_iter)->get_roots ()->end (); root_iter++) { if (process_root) process_root (*forest_iter, *root_iter); --- 860,866 ---- /* For each tree root in this forest. */ for (root_iter = (*forest_iter)->get_roots ()->begin (); ! root_iter != (*forest_iter)->get_roots ()->end (); ++root_iter) { if (process_root) process_root (*forest_iter, *root_iter); *************** func_fma_steering::dfs (void (*process_f *** 879,906 **** if (process_node) process_node (*forest_iter, node); - /* Absence of children might indicate an alternate root of a *chain*. - It's ok to skip it here as the chain will be renamed when - processing the canonical root for that chain. */ - if (node->get_children ()->empty ()) - continue; - for (child_iter = node->get_children ()->begin (); ! child_iter != node->get_children ()->end (); child_iter++) to_process.safe_push (*child_iter); if (free) { if (node->root_p ()) delete static_cast (node); else delete node; } } - if (free) - delete *forest_iter; } - - to_process.release (); } /* Build the dependency trees of FMUL and FMADD/FMSUB instructions. */ --- 878,907 ---- if (process_node) process_node (*forest_iter, node); for (child_iter = node->get_children ()->begin (); ! child_iter != node->get_children ()->end (); ++child_iter) to_process.safe_push (*child_iter); + + /* Defer freeing so that the process_node callback can access the + parent and children of the node being processed. */ if (free) + to_free.safe_push (node); + } + + if (free) + { + delete *forest_iter; + + while (!to_free.is_empty ()) { + fma_node *node = to_free.pop (); if (node->root_p ()) delete static_cast (node); else delete node; } } } } /* Build the dependency trees of FMUL and FMADD/FMSUB instructions. */ diff -Nrcpad gcc-7.4.0/gcc/config/aarch64/iterators.md gcc-7.5.0/gcc/config/aarch64/iterators.md *** gcc-7.4.0/gcc/config/aarch64/iterators.md Thu Mar 16 10:03:11 2017 --- gcc-7.5.0/gcc/config/aarch64/iterators.md Tue Apr 30 09:31:04 2019 *************** *** 438,444 **** (define_mode_attr sizen [(QI "8") (HI "16") (SI "32") (DI "64")]) ;; Give the ordinal of the MSB in the mode ! (define_mode_attr sizem1 [(QI "#7") (HI "#15") (SI "#31") (DI "#63")]) ;; Attribute to describe constants acceptable in logical operations (define_mode_attr lconst [(SI "K") (DI "L")]) --- 438,445 ---- (define_mode_attr sizen [(QI "8") (HI "16") (SI "32") (DI "64")]) ;; Give the ordinal of the MSB in the mode ! (define_mode_attr sizem1 [(QI "#7") (HI "#15") (SI "#31") (DI "#63") ! (HF "#15") (SF "#31") (DF "#63")]) ;; Attribute to describe constants acceptable in logical operations (define_mode_attr lconst [(SI "K") (DI "L")]) *************** *** 507,513 **** (V8HF "16b") (V2SF "8b") (V4SF "16b") (V2DF "16b") (DI "8b") (DF "8b") ! (SI "8b")]) ;; Define element mode for each vector mode. (define_mode_attr VEL [(V8QI "QI") (V16QI "QI") --- 508,514 ---- (V8HF "16b") (V2SF "8b") (V4SF "16b") (V2DF "16b") (DI "8b") (DF "8b") ! (SI "8b") (SF "8b")]) ;; Define element mode for each vector mode. (define_mode_attr VEL [(V8QI "QI") (V16QI "QI") *************** *** 648,653 **** --- 649,657 ---- ;; Double vector types for ALLX. (define_mode_attr Vallxd [(QI "8b") (HI "4h") (SI "2s")]) + ;; Mode with floating-point values replaced by like-sized integers. + (define_mode_attr V_INT_EQUIV [(DF "DI") (SF "SI")]) + ;; Mode of result of comparison operations. (define_mode_attr V_cmp_result [(V8QI "V8QI") (V16QI "V16QI") (V4HI "V4HI") (V8HI "V8HI") diff -Nrcpad gcc-7.4.0/gcc/config/alpha/alpha.c gcc-7.5.0/gcc/config/alpha/alpha.c *** gcc-7.4.0/gcc/config/alpha/alpha.c Wed Apr 11 18:36:37 2018 --- gcc-7.5.0/gcc/config/alpha/alpha.c Fri Jan 18 16:46:47 2019 *************** alpha_gimplify_va_arg (tree valist, tree *** 6357,6364 **** offset = get_initialized_tmp_var (t, pre_p, NULL); indirect = pass_by_reference (NULL, TYPE_MODE (type), type, false); if (indirect) ! type = build_pointer_type_for_mode (type, ptr_mode, true); /* Find the value. Note that this will be a stable indirection, or a composite of stable indirections in the case of complex. */ --- 6357,6396 ---- offset = get_initialized_tmp_var (t, pre_p, NULL); indirect = pass_by_reference (NULL, TYPE_MODE (type), type, false); + if (indirect) ! { ! if (TREE_CODE (type) == COMPLEX_TYPE ! && targetm.calls.split_complex_arg (type)) ! { ! tree real_part, imag_part, real_temp; ! ! tree ptr_type = build_pointer_type_for_mode (TREE_TYPE (type), ! ptr_mode, true); ! ! real_part = alpha_gimplify_va_arg_1 (ptr_type, base, ! offset, pre_p); ! real_part = build_va_arg_indirect_ref (real_part); ! ! /* Copy the value into a new temporary, lest the formal temporary ! be reused out from under us. */ ! real_temp = get_initialized_tmp_var (real_part, pre_p, NULL); ! ! imag_part = alpha_gimplify_va_arg_1 (ptr_type, base, ! offset, pre_p); ! imag_part = build_va_arg_indirect_ref (imag_part); ! ! r = build2 (COMPLEX_EXPR, type, real_temp, imag_part); ! ! /* Stuff the offset temporary back into its field. */ ! gimplify_assign (unshare_expr (offset_field), ! fold_convert (TREE_TYPE (offset_field), offset), ! pre_p); ! return r; ! } ! else ! type = build_pointer_type_for_mode (type, ptr_mode, true); ! } /* Find the value. Note that this will be a stable indirection, or a composite of stable indirections in the case of complex. */ diff -Nrcpad gcc-7.4.0/gcc/config/arm/arm.c gcc-7.5.0/gcc/config/arm/arm.c *** gcc-7.4.0/gcc/config/arm/arm.c Wed Nov 21 16:50:37 2018 --- gcc-7.5.0/gcc/config/arm/arm.c Fri Oct 25 14:39:06 2019 *************** arm_option_override_internal (struct gcc *** 3001,3007 **** /* Thumb2 inline assembly code should always use unified syntax. This will apply to ARM and Thumb1 eventually. */ ! opts->x_inline_asm_unified = TARGET_THUMB2_P (opts->x_target_flags); #ifdef SUBTARGET_OVERRIDE_INTERNAL_OPTIONS SUBTARGET_OVERRIDE_INTERNAL_OPTIONS; --- 3001,3008 ---- /* Thumb2 inline assembly code should always use unified syntax. This will apply to ARM and Thumb1 eventually. */ ! if (TARGET_THUMB2_P (opts->x_target_flags)) ! opts->x_inline_asm_unified = true; #ifdef SUBTARGET_OVERRIDE_INTERNAL_OPTIONS SUBTARGET_OVERRIDE_INTERNAL_OPTIONS; *************** static bool *** 8711,8721 **** arm_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x) { rtx base, offset; ! if (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P) { ! split_const (x, &base, &offset); ! if (GET_CODE (base) == SYMBOL_REF && !offset_within_block_p (base, INTVAL (offset))) return true; } --- 8712,8727 ---- arm_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x) { rtx base, offset; + split_const (x, &base, &offset); ! if (SYMBOL_REF_P (base)) { ! /* Function symbols cannot have an offset due to the Thumb bit. */ ! if ((SYMBOL_REF_FLAGS (base) & SYMBOL_FLAG_FUNCTION) ! && INTVAL (offset) != 0) ! return true; ! ! if (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P && !offset_within_block_p (base, INTVAL (offset))) return true; } *************** neon_valid_immediate (rtx op, machine_mo *** 11695,11702 **** else { n_elts = 1; ! if (mode == VOIDmode) ! mode = DImode; } innersize = GET_MODE_UNIT_SIZE (mode); --- 11701,11707 ---- else { n_elts = 1; ! gcc_assert (mode != VOIDmode); } innersize = GET_MODE_UNIT_SIZE (mode); *************** arm_compute_save_reg_mask (void) *** 19211,19217 **** return save_reg_mask; } ! /* Compute a bit mask of which registers need to be saved on the stack for the current function. */ static unsigned long thumb1_compute_save_reg_mask (void) --- 19216,19251 ---- return save_reg_mask; } ! /* Return a mask for the call-clobbered low registers that are unused ! at the end of the prologue. */ ! static unsigned long ! thumb1_prologue_unused_call_clobbered_lo_regs (void) ! { ! unsigned long mask = 0; ! ! for (int reg = 0; reg <= LAST_LO_REGNUM; reg++) ! if (!callee_saved_reg_p (reg) ! && !REGNO_REG_SET_P (df_get_live_out (ENTRY_BLOCK_PTR_FOR_FN (cfun)), ! reg)) ! mask |= 1 << reg; ! return mask; ! } ! ! /* Similarly for the start of the epilogue. */ ! static unsigned long ! thumb1_epilogue_unused_call_clobbered_lo_regs (void) ! { ! unsigned long mask = 0; ! ! for (int reg = 0; reg <= LAST_LO_REGNUM; reg++) ! if (!callee_saved_reg_p (reg) ! && !REGNO_REG_SET_P (df_get_live_in (EXIT_BLOCK_PTR_FOR_FN (cfun)), ! reg)) ! mask |= 1 << reg; ! return mask; ! } ! ! /* Compute a bit mask of which core registers need to be saved on the stack for the current function. */ static unsigned long thumb1_compute_save_reg_mask (void) *************** thumb1_compute_save_reg_mask (void) *** 19242,19251 **** if (mask & 0xff || thumb_force_lr_save ()) mask |= (1 << LR_REGNUM); ! /* Make sure we have a low work register if we need one. ! We will need one if we are going to push a high register, ! but we are not currently intending to push a low register. */ if ((mask & 0xff) == 0 && ((mask & 0x0f00) || TARGET_BACKTRACE)) { /* Use thumb_find_work_register to choose which register --- 19276,19294 ---- if (mask & 0xff || thumb_force_lr_save ()) mask |= (1 << LR_REGNUM); ! bool call_clobbered_scratch ! = (thumb1_prologue_unused_call_clobbered_lo_regs () ! && thumb1_epilogue_unused_call_clobbered_lo_regs ()); ! ! /* Make sure we have a low work register if we need one. We will ! need one if we are going to push a high register, but we are not ! currently intending to push a low register. However if both the ! prologue and epilogue have a spare call-clobbered low register, ! then we won't need to find an additional work register. It does ! not need to be the same register in the prologue and ! epilogue. */ if ((mask & 0xff) == 0 + && !call_clobbered_scratch && ((mask & 0x0f00) || TARGET_BACKTRACE)) { /* Use thumb_find_work_register to choose which register *************** thumb1_unexpanded_epilogue (void) *** 24434,24445 **** unsigned long mask = live_regs_mask & 0xff; int next_hi_reg; ! /* The available low registers depend on the size of the value we are ! returning. */ ! if (size <= 12) ! mask |= 1 << 3; ! if (size <= 8) ! mask |= 1 << 2; if (mask == 0) /* Oh dear! We have no low registers into which we can pop --- 24477,24483 ---- unsigned long mask = live_regs_mask & 0xff; int next_hi_reg; ! mask |= thumb1_epilogue_unused_call_clobbered_lo_regs (); if (mask == 0) /* Oh dear! We have no low registers into which we can pop *************** thumb1_unexpanded_epilogue (void) *** 24447,24453 **** internal_error ("no low registers available for popping high registers"); ! for (next_hi_reg = 8; next_hi_reg < 13; next_hi_reg++) if (live_regs_mask & (1 << next_hi_reg)) break; --- 24485,24491 ---- internal_error ("no low registers available for popping high registers"); ! for (next_hi_reg = 12; next_hi_reg > LAST_LO_REGNUM; next_hi_reg--) if (live_regs_mask & (1 << next_hi_reg)) break; *************** thumb1_unexpanded_epilogue (void) *** 24455,24461 **** { /* Find lo register(s) into which the high register(s) can be popped. */ ! for (regno = 0; regno <= LAST_LO_REGNUM; regno++) { if (mask & (1 << regno)) high_regs_pushed--; --- 24493,24499 ---- { /* Find lo register(s) into which the high register(s) can be popped. */ ! for (regno = LAST_LO_REGNUM; regno >= 0; regno--) { if (mask & (1 << regno)) high_regs_pushed--; *************** thumb1_unexpanded_epilogue (void) *** 24463,24482 **** break; } ! mask &= (2 << regno) - 1; /* A noop if regno == 8 */ /* Pop the values into the low register(s). */ thumb_pop (asm_out_file, mask); /* Move the value(s) into the high registers. */ ! for (regno = 0; regno <= LAST_LO_REGNUM; regno++) { if (mask & (1 << regno)) { asm_fprintf (asm_out_file, "\tmov\t%r, %r\n", next_hi_reg, regno); ! for (next_hi_reg++; next_hi_reg < 13; next_hi_reg++) if (live_regs_mask & (1 << next_hi_reg)) break; } --- 24501,24522 ---- break; } ! if (high_regs_pushed == 0 && regno >= 0) ! mask &= ~((1 << regno) - 1); /* Pop the values into the low register(s). */ thumb_pop (asm_out_file, mask); /* Move the value(s) into the high registers. */ ! for (regno = LAST_LO_REGNUM; regno >= 0; regno--) { if (mask & (1 << regno)) { asm_fprintf (asm_out_file, "\tmov\t%r, %r\n", next_hi_reg, regno); ! for (next_hi_reg--; next_hi_reg > LAST_LO_REGNUM; ! next_hi_reg--) if (live_regs_mask & (1 << next_hi_reg)) break; } *************** thumb1_expand_prologue (void) *** 24858,24867 **** break; /* Here we need to mask out registers used for passing arguments ! even if they can be pushed. This is to avoid using them to stash the high ! registers. Such kind of stash may clobber the use of arguments. */ pushable_regs = l_mask & (~arg_regs_mask); ! if (lr_needs_saving) pushable_regs &= ~(1 << LR_REGNUM); if (pushable_regs == 0) --- 24898,24917 ---- break; /* Here we need to mask out registers used for passing arguments ! even if they can be pushed. This is to avoid using them to ! stash the high registers. Such kind of stash may clobber the ! use of arguments. */ pushable_regs = l_mask & (~arg_regs_mask); ! pushable_regs |= thumb1_prologue_unused_call_clobbered_lo_regs (); ! ! /* Normally, LR can be used as a scratch register once it has been ! saved; but if the function examines its own return address then ! the value is still live and we need to avoid using it. */ ! bool return_addr_live ! = REGNO_REG_SET_P (df_get_live_out (ENTRY_BLOCK_PTR_FOR_FN (cfun)), ! LR_REGNUM); ! ! if (lr_needs_saving || return_addr_live) pushable_regs &= ~(1 << LR_REGNUM); if (pushable_regs == 0) *************** thumb1_expand_prologue (void) *** 24902,24907 **** --- 24952,24962 ---- push_mask |= 1 << LR_REGNUM; real_regs_mask |= 1 << LR_REGNUM; lr_needs_saving = false; + /* If the return address is not live at this point, we + can add LR to the list of registers that we can use + for pushes. */ + if (!return_addr_live) + pushable_regs |= 1 << LR_REGNUM; } insn = thumb1_emit_multi_reg_push (push_mask, real_regs_mask); diff -Nrcpad gcc-7.4.0/gcc/config/arm/arm.h gcc-7.5.0/gcc/config/arm/arm.h *** gcc-7.4.0/gcc/config/arm/arm.h Thu Mar 29 09:19:45 2018 --- gcc-7.5.0/gcc/config/arm/arm.h Wed Mar 13 11:46:56 2019 *************** extern tree arm_fp16_type_node; *** 186,192 **** /* FPU supports converting between HFmode and DFmode in a single hardware step. */ #define TARGET_FP16_TO_DOUBLE \ ! (TARGET_HARD_FLOAT && (TARGET_FP16 && TARGET_VFP5)) /* FPU supports fused-multiply-add operations. */ #define TARGET_FMA (bitmap_bit_p (arm_active_target.isa, isa_bit_VFPv4)) --- 186,192 ---- /* FPU supports converting between HFmode and DFmode in a single hardware step. */ #define TARGET_FP16_TO_DOUBLE \ ! (TARGET_HARD_FLOAT && TARGET_FP16 && TARGET_VFP5 && TARGET_VFP_DOUBLE) /* FPU supports fused-multiply-add operations. */ #define TARGET_FMA (bitmap_bit_p (arm_active_target.isa, isa_bit_VFPv4)) diff -Nrcpad gcc-7.4.0/gcc/config/arm/arm.md gcc-7.5.0/gcc/config/arm/arm.md *** gcc-7.4.0/gcc/config/arm/arm.md Wed Mar 28 09:20:22 2018 --- gcc-7.5.0/gcc/config/arm/arm.md Thu Oct 17 16:48:39 2019 *************** *** 4486,4547 **** ; ARMv6+ unaligned load/store instructions (used for packed structure accesses). (define_insn "unaligned_loadsi" ! [(set (match_operand:SI 0 "s_register_operand" "=l,r") ! (unspec:SI [(match_operand:SI 1 "memory_operand" "Uw,m")] UNSPEC_UNALIGNED_LOAD))] "unaligned_access" ! "ldr%?\t%0, %1\t@ unaligned" ! [(set_attr "arch" "t2,any") ! (set_attr "length" "2,4") ! (set_attr "predicable" "yes") ! (set_attr "predicable_short_it" "yes,no") (set_attr "type" "load1")]) (define_insn "unaligned_loadhis" [(set (match_operand:SI 0 "s_register_operand" "=r") (sign_extend:SI (unspec:HI [(match_operand:HI 1 "memory_operand" "Uh")] UNSPEC_UNALIGNED_LOAD)))] ! "unaligned_access" "ldrsh%?\t%0, %1\t@ unaligned" [(set_attr "predicable" "yes") (set_attr "type" "load_byte")]) (define_insn "unaligned_loadhiu" ! [(set (match_operand:SI 0 "s_register_operand" "=l,r") (zero_extend:SI ! (unspec:HI [(match_operand:HI 1 "memory_operand" "Uw,m")] UNSPEC_UNALIGNED_LOAD)))] "unaligned_access" ! "ldrh%?\t%0, %1\t@ unaligned" ! [(set_attr "arch" "t2,any") ! (set_attr "length" "2,4") ! (set_attr "predicable" "yes") ! (set_attr "predicable_short_it" "yes,no") (set_attr "type" "load_byte")]) (define_insn "unaligned_storesi" ! [(set (match_operand:SI 0 "memory_operand" "=Uw,m") ! (unspec:SI [(match_operand:SI 1 "s_register_operand" "l,r")] UNSPEC_UNALIGNED_STORE))] "unaligned_access" ! "str%?\t%1, %0\t@ unaligned" ! [(set_attr "arch" "t2,any") ! (set_attr "length" "2,4") ! (set_attr "predicable" "yes") ! (set_attr "predicable_short_it" "yes,no") (set_attr "type" "store1")]) (define_insn "unaligned_storehi" ! [(set (match_operand:HI 0 "memory_operand" "=Uw,m") ! (unspec:HI [(match_operand:HI 1 "s_register_operand" "l,r")] UNSPEC_UNALIGNED_STORE))] "unaligned_access" ! "strh%?\t%1, %0\t@ unaligned" ! [(set_attr "arch" "t2,any") ! (set_attr "length" "2,4") ! (set_attr "predicable" "yes") ! (set_attr "predicable_short_it" "yes,no") (set_attr "type" "store1")]) --- 4486,4563 ---- ; ARMv6+ unaligned load/store instructions (used for packed structure accesses). (define_insn "unaligned_loadsi" ! [(set (match_operand:SI 0 "s_register_operand" "=l,l,r") ! (unspec:SI [(match_operand:SI 1 "memory_operand" "m,Uw,m")] UNSPEC_UNALIGNED_LOAD))] "unaligned_access" ! "@ ! ldr\t%0, %1\t@ unaligned ! ldr%?\t%0, %1\t@ unaligned ! ldr%?\t%0, %1\t@ unaligned" ! [(set_attr "arch" "t1,t2,32") ! (set_attr "length" "2,2,4") ! (set_attr "predicable" "no,yes,yes") ! (set_attr "predicable_short_it" "no,yes,no") (set_attr "type" "load1")]) + ;; The 16-bit Thumb1 variant of ldrsh requires two registers in the + ;; address (there's no immediate format). That's tricky to support + ;; here and we don't really need this pattern for that case, so only + ;; enable for 32-bit ISAs. (define_insn "unaligned_loadhis" [(set (match_operand:SI 0 "s_register_operand" "=r") (sign_extend:SI (unspec:HI [(match_operand:HI 1 "memory_operand" "Uh")] UNSPEC_UNALIGNED_LOAD)))] ! "unaligned_access && TARGET_32BIT" "ldrsh%?\t%0, %1\t@ unaligned" [(set_attr "predicable" "yes") (set_attr "type" "load_byte")]) (define_insn "unaligned_loadhiu" ! [(set (match_operand:SI 0 "s_register_operand" "=l,l,r") (zero_extend:SI ! (unspec:HI [(match_operand:HI 1 "memory_operand" "m,Uw,m")] UNSPEC_UNALIGNED_LOAD)))] "unaligned_access" ! "@ ! ldrh\t%0, %1\t@ unaligned ! ldrh%?\t%0, %1\t@ unaligned ! ldrh%?\t%0, %1\t@ unaligned" ! [(set_attr "arch" "t1,t2,32") ! (set_attr "length" "2,2,4") ! (set_attr "predicable" "no,yes,yes") ! (set_attr "predicable_short_it" "no,yes,no") (set_attr "type" "load_byte")]) (define_insn "unaligned_storesi" ! [(set (match_operand:SI 0 "memory_operand" "=m,Uw,m") ! (unspec:SI [(match_operand:SI 1 "s_register_operand" "l,l,r")] UNSPEC_UNALIGNED_STORE))] "unaligned_access" ! "@ ! str\t%1, %0\t@ unaligned ! str%?\t%1, %0\t@ unaligned ! str%?\t%1, %0\t@ unaligned" ! [(set_attr "arch" "t1,t2,32") ! (set_attr "length" "2,2,4") ! (set_attr "predicable" "no,yes,yes") ! (set_attr "predicable_short_it" "no,yes,no") (set_attr "type" "store1")]) (define_insn "unaligned_storehi" ! [(set (match_operand:HI 0 "memory_operand" "=m,Uw,m") ! (unspec:HI [(match_operand:HI 1 "s_register_operand" "l,l,r")] UNSPEC_UNALIGNED_STORE))] "unaligned_access" ! "@ ! strh\t%1, %0\t@ unaligned ! strh%?\t%1, %0\t@ unaligned ! strh%?\t%1, %0\t@ unaligned" ! [(set_attr "arch" "t1,t2,32") ! (set_attr "length" "2,2,4") ! (set_attr "predicable" "no,yes,yes") ! (set_attr "predicable_short_it" "no,yes,no") (set_attr "type" "store1")]) *************** *** 5999,6050 **** } } ! if (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P) { ! split_const (operands[1], &base, &offset); ! if (GET_CODE (base) == SYMBOL_REF ! && !offset_within_block_p (base, INTVAL (offset))) ! { ! tmp = can_create_pseudo_p () ? gen_reg_rtx (SImode) : operands[0]; ! emit_move_insn (tmp, base); ! emit_insn (gen_addsi3 (operands[0], tmp, offset)); ! DONE; ! } } /* Recognize the case where operand[1] is a reference to thread-local ! data and load its address to a register. */ if (arm_tls_referenced_p (operands[1])) ! { ! rtx tmp = operands[1]; ! rtx addend = NULL; ! ! if (GET_CODE (tmp) == CONST && GET_CODE (XEXP (tmp, 0)) == PLUS) ! { ! addend = XEXP (XEXP (tmp, 0), 1); ! tmp = XEXP (XEXP (tmp, 0), 0); ! } ! ! gcc_assert (GET_CODE (tmp) == SYMBOL_REF); ! gcc_assert (SYMBOL_REF_TLS_MODEL (tmp) != 0); ! ! tmp = legitimize_tls_address (tmp, ! !can_create_pseudo_p () ? operands[0] : 0); ! if (addend) ! { ! tmp = gen_rtx_PLUS (SImode, tmp, addend); ! tmp = force_operand (tmp, operands[0]); ! } ! operands[1] = tmp; ! } else if (flag_pic && (CONSTANT_P (operands[1]) || symbol_mentioned_p (operands[1]) || label_mentioned_p (operands[1]))) ! operands[1] = legitimize_pic_address (operands[1], SImode, ! (!can_create_pseudo_p () ! ? operands[0] ! : 0)); } " ) --- 6015,6043 ---- } } ! split_const (operands[1], &base, &offset); ! if (INTVAL (offset) != 0 ! && targetm.cannot_force_const_mem (SImode, operands[1])) { ! tmp = can_create_pseudo_p () ? gen_reg_rtx (SImode) : operands[0]; ! emit_move_insn (tmp, base); ! emit_insn (gen_addsi3 (operands[0], tmp, offset)); ! DONE; } + tmp = can_create_pseudo_p () ? NULL_RTX : operands[0]; + /* Recognize the case where operand[1] is a reference to thread-local ! data and load its address to a register. Offsets have been split off ! already. */ if (arm_tls_referenced_p (operands[1])) ! operands[1] = legitimize_tls_address (operands[1], tmp); else if (flag_pic && (CONSTANT_P (operands[1]) || symbol_mentioned_p (operands[1]) || label_mentioned_p (operands[1]))) ! operands[1] = ! legitimize_pic_address (operands[1], SImode, tmp); } " ) diff -Nrcpad gcc-7.4.0/gcc/config/arm/constraints.md gcc-7.5.0/gcc/config/arm/constraints.md *** gcc-7.4.0/gcc/config/arm/constraints.md Fri Jan 6 17:37:39 2017 --- gcc-7.5.0/gcc/config/arm/constraints.md Wed Apr 10 13:34:54 2019 *************** *** 31,37 **** ;; 'H' was previously used for FPA. ;; The following multi-letter normal constraints have been used: ! ;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, Dl, DL, Do, Dv, Dy, Di, Dt, Dp, Dz ;; in Thumb-1 state: Pa, Pb, Pc, Pd, Pe ;; in Thumb-2 state: Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py ;; in all states: Pf --- 31,38 ---- ;; 'H' was previously used for FPA. ;; The following multi-letter normal constraints have been used: ! ;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, DN, Dm, Dl, DL, Do, Dv, Dy, Di, ! ;; Dt, Dp, Dz ;; in Thumb-1 state: Pa, Pb, Pc, Pd, Pe ;; in Thumb-2 state: Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py ;; in all states: Pf *************** *** 294,307 **** (and (match_code "const_double,const_int") (match_test "TARGET_32BIT && arm_const_double_by_immediates (op)"))) ! (define_constraint "Dn" "@internal ! In ARM/Thumb-2 state a const_vector or const_int which can be loaded with a ! Neon vmov immediate instruction." ! (and (match_code "const_vector,const_int") (match_test "TARGET_32BIT && imm_for_neon_mov_operand (op, GET_MODE (op))"))) (define_constraint "Dl" "@internal In ARM/Thumb-2 state a const_vector which can be used with a Neon vorr or --- 295,322 ---- (and (match_code "const_double,const_int") (match_test "TARGET_32BIT && arm_const_double_by_immediates (op)"))) ! (define_constraint "Dm" "@internal ! In ARM/Thumb-2 state a const_vector which can be loaded with a Neon vmov ! immediate instruction." ! (and (match_code "const_vector") (match_test "TARGET_32BIT && imm_for_neon_mov_operand (op, GET_MODE (op))"))) + (define_constraint "Dn" + "@internal + In ARM/Thumb-2 state a DImode const_int which can be loaded with a Neon vmov + immediate instruction." + (and (match_code "const_int") + (match_test "TARGET_32BIT && imm_for_neon_mov_operand (op, DImode)"))) + + (define_constraint "DN" + "@internal + In ARM/Thumb-2 state a TImode const_int which can be loaded with a Neon vmov + immediate instruction." + (and (match_code "const_int") + (match_test "TARGET_32BIT && imm_for_neon_mov_operand (op, TImode)"))) + (define_constraint "Dl" "@internal In ARM/Thumb-2 state a const_vector which can be used with a Neon vorr or diff -Nrcpad gcc-7.4.0/gcc/config/arm/neon.md gcc-7.5.0/gcc/config/arm/neon.md *** gcc-7.4.0/gcc/config/arm/neon.md Tue Mar 27 13:26:56 2018 --- gcc-7.5.0/gcc/config/arm/neon.md Wed Apr 10 13:34:54 2019 *************** *** 25,38 **** (define_insn "*neon_mov" [(set (match_operand:VDX 0 "nonimmediate_operand" ! "=w,Un,w, w, ?r,?w,?r,?r, ?Us") (match_operand:VDX 1 "general_operand" ! " w,w, Dn,Uni, w, r, r, Usi,r"))] "TARGET_NEON && (register_operand (operands[0], mode) || register_operand (operands[1], mode))" { ! if (which_alternative == 2) { int width, is_valid; static char templ[40]; --- 25,38 ---- (define_insn "*neon_mov" [(set (match_operand:VDX 0 "nonimmediate_operand" ! "=w,Un,w, w, w, ?r,?w,?r,?r, ?Us") (match_operand:VDX 1 "general_operand" ! " w,w, Dm,Dn,Uni, w, r, r, Usi,r"))] "TARGET_NEON && (register_operand (operands[0], mode) || register_operand (operands[1], mode))" { ! if (which_alternative == 2 || which_alternative == 3) { int width, is_valid; static char templ[40]; *************** *** 53,83 **** switch (which_alternative) { case 0: return "vmov\t%P0, %P1 @ "; ! case 1: case 3: return output_move_neon (operands); ! case 2: gcc_unreachable (); ! case 4: return "vmov\t%Q0, %R0, %P1 @ "; ! case 5: return "vmov\t%P0, %Q1, %R1 @ "; default: return output_move_double (operands, true, NULL); } } [(set_attr "type" "neon_move,neon_store1_1reg,neon_move,\ ! neon_load1_1reg, neon_to_gp,neon_from_gp,mov_reg,\ ! neon_load1_2reg, neon_store1_2reg") ! (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" [(set (match_operand:VQXMOV 0 "nonimmediate_operand" ! "=w,Un,w, w, ?r,?w,?r,?r, ?Us") (match_operand:VQXMOV 1 "general_operand" ! " w,w, Dn,Uni, w, r, r, Usi, r"))] "TARGET_NEON && (register_operand (operands[0], mode) || register_operand (operands[1], mode))" { ! if (which_alternative == 2) { int width, is_valid; static char templ[40]; --- 53,84 ---- switch (which_alternative) { case 0: return "vmov\t%P0, %P1 @ "; ! case 1: case 4: return output_move_neon (operands); ! case 2: case 3: gcc_unreachable (); ! case 5: return "vmov\t%Q0, %R0, %P1 @ "; ! case 6: return "vmov\t%P0, %Q1, %R1 @ "; default: return output_move_double (operands, true, NULL); } } [(set_attr "type" "neon_move,neon_store1_1reg,neon_move,\ ! neon_move,neon_load1_1reg, neon_to_gp,\ ! neon_from_gp,mov_reg,neon_load1_2reg,\ ! neon_store1_2reg") ! (set_attr "length" "4,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" [(set (match_operand:VQXMOV 0 "nonimmediate_operand" ! "=w,Un,w, w, w, ?r,?w,?r,?r, ?Us") (match_operand:VQXMOV 1 "general_operand" ! " w,w, Dm,DN,Uni, w, r, r, Usi, r"))] "TARGET_NEON && (register_operand (operands[0], mode) || register_operand (operands[1], mode))" { ! if (which_alternative == 2 || which_alternative == 3) { int width, is_valid; static char templ[40]; *************** *** 98,117 **** switch (which_alternative) { case 0: return "vmov\t%q0, %q1 @ "; ! case 1: case 3: return output_move_neon (operands); ! case 2: gcc_unreachable (); ! case 4: return "vmov\t%Q0, %R0, %e1 @ \;vmov\t%J0, %K0, %f1"; ! case 5: return "vmov\t%e0, %Q1, %R1 @ \;vmov\t%f0, %J1, %K1"; default: return output_move_quad (operands); } } [(set_attr "type" "neon_move_q,neon_store2_2reg_q,neon_move_q,\ ! neon_load2_2reg_q,neon_to_gp_q,neon_from_gp_q,\ ! mov_reg,neon_load1_4reg,neon_store1_4reg") ! (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" [(set (match_operand:TI 0 "nonimmediate_operand" "") --- 99,118 ---- switch (which_alternative) { case 0: return "vmov\t%q0, %q1 @ "; ! case 1: case 4: return output_move_neon (operands); ! case 2: case 3: gcc_unreachable (); ! case 5: return "vmov\t%Q0, %R0, %e1 @ \;vmov\t%J0, %K0, %f1"; ! case 6: return "vmov\t%e0, %Q1, %R1 @ \;vmov\t%f0, %J1, %K1"; default: return output_move_quad (operands); } } [(set_attr "type" "neon_move_q,neon_store2_2reg_q,neon_move_q,\ ! neon_move_q,neon_load2_2reg_q,neon_to_gp_q,\ ! neon_from_gp_q,mov_reg,neon_load1_4reg,neon_store1_4reg") ! (set_attr "length" "4,8,4,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" [(set (match_operand:TI 0 "nonimmediate_operand" "") *************** *** 1007,1013 **** (define_insn "vashl3" [(set (match_operand:VDQIW 0 "s_register_operand" "=w,w") (ashift:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w,w") ! (match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "w,Dn")))] "TARGET_NEON" { switch (which_alternative) --- 1008,1014 ---- (define_insn "vashl3" [(set (match_operand:VDQIW 0 "s_register_operand" "=w,w") (ashift:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w,w") ! (match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "w,Dm")))] "TARGET_NEON" { switch (which_alternative) *************** *** 1026,1032 **** (define_insn "vashr3_imm" [(set (match_operand:VDQIW 0 "s_register_operand" "=w") (ashiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w") ! (match_operand:VDQIW 2 "imm_for_neon_rshift_operand" "Dn")))] "TARGET_NEON" { return neon_output_shift_immediate ("vshr", 's', &operands[2], --- 1027,1033 ---- (define_insn "vashr3_imm" [(set (match_operand:VDQIW 0 "s_register_operand" "=w") (ashiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w") ! (match_operand:VDQIW 2 "imm_for_neon_rshift_operand" "Dm")))] "TARGET_NEON" { return neon_output_shift_immediate ("vshr", 's', &operands[2], *************** *** 1039,1045 **** (define_insn "vlshr3_imm" [(set (match_operand:VDQIW 0 "s_register_operand" "=w") (lshiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w") ! (match_operand:VDQIW 2 "imm_for_neon_rshift_operand" "Dn")))] "TARGET_NEON" { return neon_output_shift_immediate ("vshr", 'u', &operands[2], --- 1040,1046 ---- (define_insn "vlshr3_imm" [(set (match_operand:VDQIW 0 "s_register_operand" "=w") (lshiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w") ! (match_operand:VDQIW 2 "imm_for_neon_rshift_operand" "Dm")))] "TARGET_NEON" { return neon_output_shift_immediate ("vshr", 'u', &operands[2], diff -Nrcpad gcc-7.4.0/gcc/config/arm/t-rtems gcc-7.5.0/gcc/config/arm/t-rtems *** gcc-7.4.0/gcc/config/arm/t-rtems Wed Aug 24 06:05:04 2016 --- gcc-7.5.0/gcc/config/arm/t-rtems Tue May 14 05:15:38 2019 *************** *** 1,7 **** # Custom RTEMS multilibs for ARM ! MULTILIB_OPTIONS = mbig-endian mthumb march=armv6-m/march=armv7-a/march=armv7-r/march=armv7-m/mcpu=cortex-m7 mfpu=neon/mfpu=vfp/mfpu=vfpv3-d16/mfpu=fpv4-sp-d16/mfpu=fpv5-d16 mfloat-abi=hard ! MULTILIB_DIRNAMES = eb thumb armv6-m armv7-a armv7-r armv7-m cortex-m7 neon vfp vfpv3-d16 fpv4-sp-d16 fpv5-d16 hard # Enumeration of multilibs --- 1,7 ---- # Custom RTEMS multilibs for ARM ! MULTILIB_OPTIONS = mbig-endian mthumb march=armv6-m/march=armv7-a/march=armv7-r/mcpu=cortex-m3/mcpu=cortex-m4/mcpu=cortex-m7 mfpu=neon/mfpu=vfp/mfpu=vfpv3-d16/mfpu=fpv4-sp-d16/mfpu=fpv5-d16 mfloat-abi=hard ! MULTILIB_DIRNAMES = eb thumb armv6-m armv7-a armv7-r cortex-m3 cortex-m4 cortex-m7 neon vfp vfpv3-d16 fpv4-sp-d16 fpv5-d16 hard # Enumeration of multilibs *************** MULTILIB_REQUIRED += mthumb/march=armv7- *** 16,22 **** MULTILIB_REQUIRED += mthumb/march=armv7-a MULTILIB_REQUIRED += mthumb/march=armv7-r/mfpu=vfpv3-d16/mfloat-abi=hard MULTILIB_REQUIRED += mthumb/march=armv7-r ! MULTILIB_REQUIRED += mthumb/march=armv7-m/mfpu=fpv4-sp-d16/mfloat-abi=hard MULTILIB_REQUIRED += mthumb/mcpu=cortex-m7/mfpu=fpv5-d16/mfloat-abi=hard - MULTILIB_REQUIRED += mthumb/march=armv7-m MULTILIB_REQUIRED += mthumb --- 16,23 ---- MULTILIB_REQUIRED += mthumb/march=armv7-a MULTILIB_REQUIRED += mthumb/march=armv7-r/mfpu=vfpv3-d16/mfloat-abi=hard MULTILIB_REQUIRED += mthumb/march=armv7-r ! MULTILIB_REQUIRED += mthumb/mcpu=cortex-m3 ! MULTILIB_REQUIRED += mthumb/mcpu=cortex-m4 ! MULTILIB_REQUIRED += mthumb/mcpu=cortex-m4/mfpu=fpv4-sp-d16/mfloat-abi=hard MULTILIB_REQUIRED += mthumb/mcpu=cortex-m7/mfpu=fpv5-d16/mfloat-abi=hard MULTILIB_REQUIRED += mthumb diff -Nrcpad gcc-7.4.0/gcc/config/avr/avr.c gcc-7.5.0/gcc/config/avr/avr.c *** gcc-7.4.0/gcc/config/avr/avr.c Tue Aug 22 07:55:34 2017 --- gcc-7.5.0/gcc/config/avr/avr.c Fri Oct 18 09:16:16 2019 *************** avr_out_lpm (rtx_insn *insn, rtx *op, in *** 3579,3591 **** gcc_unreachable(); case 1: ! return avr_asm_len ("%4lpm %0,%a2", xop, plen, 1); case 2: if (REGNO (dest) == REG_Z) ! return avr_asm_len ("%4lpm %5,%a2+" CR_TAB ! "%4lpm %B0,%a2" CR_TAB ! "mov %A0,%5", xop, plen, 3); else { avr_asm_len ("%4lpm %A0,%a2+" CR_TAB --- 3579,3592 ---- gcc_unreachable(); case 1: ! avr_asm_len ("%4lpm %0,%a2", xop, plen, 1); ! break; case 2: if (REGNO (dest) == REG_Z) ! avr_asm_len ("%4lpm %5,%a2+" CR_TAB ! "%4lpm %B0,%a2" CR_TAB ! "mov %A0,%5", xop, plen, 3); else { avr_asm_len ("%4lpm %A0,%a2+" CR_TAB *************** avr_out_lpm (rtx_insn *insn, rtx *op, in *** 3614,3622 **** "%4lpm %B0,%a2+", xop, plen, 2); if (REGNO (dest) == REG_Z - 2) ! return avr_asm_len ("%4lpm %5,%a2+" CR_TAB ! "%4lpm %C0,%a2" CR_TAB ! "mov %D0,%5", xop, plen, 3); else { avr_asm_len ("%4lpm %C0,%a2+" CR_TAB --- 3615,3623 ---- "%4lpm %B0,%a2+", xop, plen, 2); if (REGNO (dest) == REG_Z - 2) ! avr_asm_len ("%4lpm %5,%a2+" CR_TAB ! "%4lpm %C0,%a2" CR_TAB ! "mov %D0,%5", xop, plen, 3); else { avr_asm_len ("%4lpm %C0,%a2+" CR_TAB diff -Nrcpad gcc-7.4.0/gcc/config/darwin-c.c gcc-7.5.0/gcc/config/darwin-c.c *** gcc-7.4.0/gcc/config/darwin-c.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/config/darwin-c.c Tue Sep 3 19:18:30 2019 *************** static const char *framework_defaults [] *** 463,503 **** /* Register the GNU objective-C runtime include path if STDINC. */ void ! darwin_register_objc_includes (const char *sysroot, const char *iprefix, ! int stdinc) { ! const char *fname; ! size_t len; ! /* We do not do anything if we do not want the standard includes. */ ! if (!stdinc) ! return; ! ! fname = GCC_INCLUDE_DIR "-gnu-runtime"; ! ! /* Register the GNU OBJC runtime include path if we are compiling OBJC ! with GNU-runtime. */ ! if (c_dialect_objc () && !flag_next_runtime) { char *str; ! /* See if our directory starts with the standard prefix. "Translate" them, i.e. replace /usr/local/lib/gcc... with IPREFIX and search them first. */ ! if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0 && !sysroot && !strncmp (fname, cpp_GCC_INCLUDE_DIR, len)) { str = concat (iprefix, fname + len, NULL); ! /* FIXME: wrap the headers for C++awareness. */ ! add_path (str, SYSTEM, /*c++aware=*/false, false); } ! /* Should this directory start with the sysroot? */ ! if (sysroot) ! str = concat (sysroot, fname, NULL); ! else ! str = update_path (fname, ""); ! ! add_path (str, SYSTEM, /*c++aware=*/false, false); } } --- 463,494 ---- /* Register the GNU objective-C runtime include path if STDINC. */ void ! darwin_register_objc_includes (const char *sysroot ATTRIBUTE_UNUSED, ! const char *iprefix, int stdinc) { ! /* If we want standard includes; Register the GNU OBJC runtime include ! path if we are compiling OBJC with GNU-runtime. ! This path is compiler-relative, we don't want to prepend the sysroot ! since it's not expected to find the headers there. */ ! if (stdinc && c_dialect_objc () && !flag_next_runtime) { + const char *fname = GCC_INCLUDE_DIR "-gnu-runtime"; char *str; ! size_t len; ! ! /* See if our directory starts with the standard prefix. "Translate" them, i.e. replace /usr/local/lib/gcc... with IPREFIX and search them first. */ ! if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0 && !strncmp (fname, cpp_GCC_INCLUDE_DIR, len)) { str = concat (iprefix, fname + len, NULL); ! add_path (str, SYSTEM, /*c++aware=*/true, false); } ! str = update_path (fname, ""); ! add_path (str, SYSTEM, /*c++aware=*/true, false); } } diff -Nrcpad gcc-7.4.0/gcc/config/darwin-driver.c gcc-7.5.0/gcc/config/darwin-driver.c *** gcc-7.4.0/gcc/config/darwin-driver.c Tue Jan 3 05:36:40 2017 --- gcc-7.5.0/gcc/config/darwin-driver.c Tue Oct 29 19:52:20 2019 *************** along with GCC; see the file COPYING3. *** 26,31 **** --- 26,116 ---- #include "opts.h" #include "diagnostic-core.h" + /* Validate a version string (either given on the command line or, perhaps + as MACOSX_DEPLOYMENT_TARGET). + + The specs %version-compare() function doesn't accept leading '0' on + numbers so strip them out. Do sanity checking here too. + + Return: + * original string means it was OK and we didn't want to change it. + * new string means it was OK but we rewrote it to avoid possible format + problems. + * NULL means we didn't like what we saw. + */ + + static const char * + validate_macosx_version_min (const char *version_str) + { + size_t version_len; + unsigned long major, minor, tiny = 0; + char *end; + const char *old_version = version_str; + bool need_rewrite = false; + + version_len = strlen (version_str); + if (version_len < 4) /* The minimum would be 10.x */ + return NULL; + + /* Version string must consist of digits and periods only. */ + if (strspn (version_str, "0123456789.") != version_len) + return NULL; + + if (!ISDIGIT (version_str[0]) || !ISDIGIT (version_str[version_len - 1])) + return NULL; + + if (version_str[0] == '0') + need_rewrite = true; + + major = strtoul (version_str, &end, 10); + version_str = end + ((*end == '.') ? 1 : 0); + + if (major != 10) /* So far .. all MacOS 10 ... */ + return NULL; + + /* Version string components must be present and numeric. */ + if (!ISDIGIT (version_str[0])) + return NULL; + + /* If we have one or more leading zeros on a component, then rewrite the + version string. */ + if (version_str[0] == '0' && version_str[1] != '\0' + && version_str[1] != '.') + need_rewrite = true; + + minor = strtoul (version_str, &end, 10); + version_str = end + ((*end == '.') ? 1 : 0); + if (minor > 99) + return NULL; + + /* If 'tiny' is present it must be numeric. */ + if (*end != '\0' && !ISDIGIT (version_str[0])) + return NULL; + + /* If we have one or more leading zeros on a component, then rewrite the + version string. */ + if (*end != '\0' && version_str[0] == '0' + && version_str[1] != '\0') + need_rewrite = true; + + tiny = strtoul (version_str, &end, 10); + if (tiny > 99) + return NULL; + + /* Version string must contain no more than three tokens. */ + if (*end != '\0') + return NULL; + + if (need_rewrite) + { + char *new_version; + asprintf (&new_version, "10.%lu.%lu", minor, tiny); + return new_version; + } + + return old_version; + } + #ifndef CROSS_DIRECTORY_STRUCTURE #include #include "xregex.h" *************** darwin_default_min_version (void) *** 120,135 **** if (new_flag != NULL) { ! size_t len = strlen (new_flag); ! if (len > 128) { /* Arbitrary limit, number should be like xx.yy.zz */ ! warning (0, "couldn%'t understand version %s\n", new_flag); ! return NULL; ! } ! new_flag = xstrndup (new_flag, len); } return new_flag; } /* Translate -filelist and -framework options in *DECODED_OPTIONS (size *DECODED_OPTIONS_COUNT) to use -Xlinker so that they are considered to be linker inputs in the case that no other inputs are --- 205,243 ---- if (new_flag != NULL) { ! const char *checked = validate_macosx_version_min (new_flag); ! if (checked == NULL) ! { ! warning (0, "couldn%'t understand version %s\n", new_flag); ! return NULL; ! } ! new_flag = xstrndup (checked, strlen (checked)); } return new_flag; } + /* See if we can find the sysroot from the SDKROOT environment variable. */ + + static const char * + maybe_get_sysroot_from_sdkroot () + { + const char *maybe_sysroot = getenv ("SDKROOT"); + + /* We'll use the same rules as the clang driver, for compatibility. + 1) The path must be absolute + 2) Ignore "/", that is the default anyway and we do not want the + sysroot semantics to be applied to it. + 3) It must exist (actually, we'll check it's readable too). */ + + if (maybe_sysroot == NULL + || *maybe_sysroot != '/' + || strlen (maybe_sysroot) == 1 + || access (maybe_sysroot, R_OK) == -1) + return NULL; + + return xstrndup (maybe_sysroot, strlen (maybe_sysroot)); + } + /* Translate -filelist and -framework options in *DECODED_OPTIONS (size *DECODED_OPTIONS_COUNT) to use -Xlinker so that they are considered to be linker inputs in the case that no other inputs are *************** darwin_driver_init (unsigned int *decode *** 154,159 **** --- 262,268 ---- bool appendM64 = false; const char *vers_string = NULL; bool seen_version_min = false; + bool seen_sysroot_p = false; for (i = 1; i < *decoded_options_count; i++) { *************** darwin_driver_init (unsigned int *decode *** 181,187 **** if (*decoded_options_count > i) { memmove (*decoded_options + i, *decoded_options + i + 1, ! ((*decoded_options_count - i) * sizeof (struct cl_decoded_option))); } --i; --- 290,296 ---- if (*decoded_options_count > i) { memmove (*decoded_options + i, *decoded_options + i + 1, ! ((*decoded_options_count - i - 1) * sizeof (struct cl_decoded_option))); } --i; *************** darwin_driver_init (unsigned int *decode *** 215,221 **** case OPT_mmacosx_version_min_: seen_version_min = true; ! vers_string = xstrndup ((*decoded_options)[i].arg, 32); default: break; --- 324,352 ---- case OPT_mmacosx_version_min_: seen_version_min = true; ! vers_string = ! validate_macosx_version_min ((*decoded_options)[i].arg); ! if (vers_string == NULL) ! warning (0, "%qs is not valid for %\n", ! (*decoded_options)[i].arg); ! else if (vers_string == (*decoded_options)[i].arg) ! vers_string = xstrndup ((*decoded_options)[i].arg, 32); ! /* Now we've examined it, and verified/re-written, put it to ! one side and append later. */ ! if (*decoded_options_count > i) { ! memmove (*decoded_options + i, ! *decoded_options + i + 1, ! ((*decoded_options_count - i - 1) ! * sizeof (struct cl_decoded_option))); ! } ! --i; ! --*decoded_options_count; ! break; ! ! case OPT__sysroot_: ! case OPT_isysroot: ! seen_sysroot_p = true; ! break; default: break; *************** darwin_driver_init (unsigned int *decode *** 278,303 **** &(*decoded_options)[*decoded_options_count - 1]); } ! /* We will need to know the OS X version we're trying to build for here ! so that we can figure out the mechanism and source for the sysroot to ! be used. */ ! if (! seen_version_min && *decoded_options_count > 1) { ! /* Not set by the User, try to figure it out. */ ! vers_string = darwin_default_min_version (); ! if (vers_string != NULL) { ++*decoded_options_count; *decoded_options = XRESIZEVEC (struct cl_decoded_option, *decoded_options, *decoded_options_count); ! generate_option (OPT_mmacosx_version_min_, vers_string, 1, CL_DRIVER, ! &(*decoded_options)[*decoded_options_count - 1]); } } ! /* Create and push the major version for assemblers that need it. */ if (vers_string != NULL) { char *asm_major = NULL; const char *first_period = strchr(vers_string, '.'); if (first_period != NULL) --- 409,448 ---- &(*decoded_options)[*decoded_options_count - 1]); } ! if (! seen_sysroot_p) { ! /* We will pick up an SDKROOT if we didn't specify a sysroot and treat ! it as overriding any configure-time --with-sysroot. */ ! const char *sdkroot = maybe_get_sysroot_from_sdkroot (); ! if (sdkroot) { ++*decoded_options_count; *decoded_options = XRESIZEVEC (struct cl_decoded_option, *decoded_options, *decoded_options_count); ! generate_option (OPT__sysroot_, sdkroot, 1, CL_DRIVER, ! &(*decoded_options)[*decoded_options_count - 1]); } } ! ! /* We will need to know the OS X version we're trying to build for here ! so that we can figure out the mechanism and source for the sysroot to ! be used. */ ! if (! seen_version_min && *decoded_options_count > 1) ! /* Not set by the User, try to figure it out. */ ! vers_string = darwin_default_min_version (); ! ! /* Create and push a cleaned up version, plus the major version for ! assemblers and other cases that need it. */ if (vers_string != NULL) { + ++*decoded_options_count; + *decoded_options = XRESIZEVEC (struct cl_decoded_option, + *decoded_options, + *decoded_options_count); + generate_option (OPT_mmacosx_version_min_, vers_string, 1, CL_DRIVER, + &(*decoded_options)[*decoded_options_count - 1]); + char *asm_major = NULL; const char *first_period = strchr(vers_string, '.'); if (first_period != NULL) diff -Nrcpad gcc-7.4.0/gcc/config/darwin-protos.h gcc-7.5.0/gcc/config/darwin-protos.h *** gcc-7.4.0/gcc/config/darwin-protos.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/config/darwin-protos.h Tue Oct 29 20:13:06 2019 *************** extern void darwin_set_default_type_attr *** 53,60 **** #endif /* TREE_CODE */ - extern void machopic_finish (FILE *); - extern int machopic_reloc_rw_mask (void); extern section *machopic_select_section (tree, int, unsigned HOST_WIDE_INT); --- 53,58 ---- diff -Nrcpad gcc-7.4.0/gcc/config/darwin.c gcc-7.5.0/gcc/config/darwin.c *** gcc-7.4.0/gcc/config/darwin.c Mon Nov 26 19:46:24 2018 --- gcc-7.5.0/gcc/config/darwin.c Fri Nov 1 20:52:21 2019 *************** along with GCC; see the file COPYING3. *** 71,85 **** setting the second word in the .non_lazy_symbol_pointer data structure to symbol. See indirect_data for the code that handles the extra indirection, and machopic_output_indirection and its use ! of MACHO_SYMBOL_STATIC for the code that handles @code{static} symbol indirection. */ - /* For darwin >= 9 (OSX 10.5) the linker is capable of making the necessary - branch islands and we no longer need to emit darwin stubs. - However, if we are generating code for earlier systems (or for use in the - kernel) the stubs might still be required, and this will be set true. */ - int darwin_emit_branch_islands = false; - typedef struct GTY(()) cdtor_record { rtx symbol; int priority; /* [con/de]structor priority */ --- 71,79 ---- setting the second word in the .non_lazy_symbol_pointer data structure to symbol. See indirect_data for the code that handles the extra indirection, and machopic_output_indirection and its use ! of MACHO_SYMBOL_FLAG_STATIC for the code that handles @code{static} symbol indirection. */ typedef struct GTY(()) cdtor_record { rtx symbol; int priority; /* [con/de]structor priority */ *************** int generating_for_darwin_version ; *** 101,106 **** --- 95,104 ---- for weak or single-definition items. */ static bool ld_uses_coal_sects = false; + /* Very old (ld_classic) linkers need a symbol to mark the start of + each FDE. */ + static bool ld_needs_eh_markers = false; + /* Section names. */ section * darwin_sections[NUM_DARWIN_SECTIONS]; *************** name_needs_quotes (const char *name) *** 246,252 **** int machopic_symbol_defined_p (rtx sym_ref) { ! if (SYMBOL_REF_FLAGS (sym_ref) & MACHO_SYMBOL_FLAG_DEFINED) return true; /* If a symbol references local and is not an extern to this --- 244,250 ---- int machopic_symbol_defined_p (rtx sym_ref) { ! if (MACHO_SYMBOL_DEFINED_P (sym_ref)) return true; /* If a symbol references local and is not an extern to this *************** machopic_symbol_defined_p (rtx sym_ref) *** 255,261 **** { /* If the symbol references a variable and the variable is a common symbol, then this symbol is not defined. */ ! if (SYMBOL_REF_FLAGS (sym_ref) & MACHO_SYMBOL_FLAG_VARIABLE) { tree decl = SYMBOL_REF_DECL (sym_ref); if (!decl) --- 253,259 ---- { /* If the symbol references a variable and the variable is a common symbol, then this symbol is not defined. */ ! if (MACHO_SYMBOL_VARIABLE_P (sym_ref)) { tree decl = SYMBOL_REF_DECL (sym_ref); if (!decl) *************** typedef struct GTY ((for_user)) machopic *** 451,456 **** --- 449,461 ---- bool stub_p; /* True iff this stub or pointer has been referenced. */ bool used; + /* True iff a non-lazy symbol pointer should be emitted into the .data + section, rather than the non-lazy symbol pointers section. The cases + for which this occurred seem to have been unintentional, and later + toolchains emit all of the indirections to the 'usual' section. We + are keeping this in case it is necessary to preserve compatibility with + older toolchains. */ + bool nlsp_in_data_section; } machopic_indirection; struct indirection_hasher : ggc_ptr_hash *************** indirection_hasher::equal (machopic_indi *** 485,491 **** /* Return the name of the non-lazy pointer (if STUB_P is false) or stub (if STUB_B is true) corresponding to the given name. ! If we have a situation like: global_weak_symbol: .... --- 490,496 ---- /* Return the name of the non-lazy pointer (if STUB_P is false) or stub (if STUB_B is true) corresponding to the given name. ! PR71767 - If we have a situation like: global_weak_symbol: .... *************** Lnon_weak_local: *** 494,529 **** ld64 will be unable to split this into two atoms (because the "L" makes the second symbol 'invisible'). This means that legitimate direct accesses ! to the second symbol will appear to be non-allowed direct accesses to an ! atom of type weak, global which are not allowed. ! ! To avoid this, we make the indirections have a leading 'l' (lower-case L) ! which has a special meaning: linker can see this and use it to determine ! atoms, but it is not placed into the final symbol table. ! The implementation here is somewhat heavy-handed in that it will also mark ! indirections to the __IMPORT,__pointers section the same way which is ! really unnecessary, since ld64 _can_ split those into atoms as they are ! fixed size. FIXME: determine if this is a penalty worth extra code to ! fix. */ const char * machopic_indirection_name (rtx sym_ref, bool stub_p) { - char *buffer; const char *name = XSTR (sym_ref, 0); ! size_t namelen = strlen (name); ! machopic_indirection *p; ! bool needs_quotes; ! const char *suffix; ! char L_or_l = 'L'; ! const char *prefix = user_label_prefix; ! const char *quote = ""; ! tree id; ! ! id = maybe_get_identifier (name); if (id) { tree id_orig = id; --- 499,520 ---- ld64 will be unable to split this into two atoms (because the "L" makes the second symbol 'invisible'). This means that legitimate direct accesses ! to the second symbol will appear to be direct accesses to an atom of type ! weak, global which are not allowed. ! To avoid this, we make any data-section indirections have a leading 'l' ! (lower-case L) which has a special meaning: linker can see this and use ! it to determine atoms, but it is not placed into the final symbol table. + Symbols in the non-lazy symbol pointers section (or stubs) do not have this + problem because ld64 already knows the size of each entry. */ const char * machopic_indirection_name (rtx sym_ref, bool stub_p) { const char *name = XSTR (sym_ref, 0); ! tree id = maybe_get_identifier (name); if (id) { tree id_orig = id; *************** machopic_indirection_name (rtx sym_ref, *** 531,573 **** while (IDENTIFIER_TRANSPARENT_ALIAS (id)) id = TREE_CHAIN (id); if (id != id_orig) ! { ! name = IDENTIFIER_POINTER (id); ! namelen = strlen (name); ! } } if (name[0] == '*') { prefix = ""; ++name; - --namelen; - } - - needs_quotes = name_needs_quotes (name); - if (needs_quotes) - { - quote = "\""; } ! if (stub_p) ! suffix = STUB_SUFFIX; ! else ! { ! suffix = NON_LAZY_POINTER_SUFFIX; ! /* Let the linker see this. */ ! L_or_l = 'l'; ! } ! buffer = XALLOCAVEC (char, 2 /* strlen ("&L") or ("&l") */ ! + strlen (prefix) ! + namelen ! + strlen (suffix) ! + 2 * strlen (quote) ! + 1 /* '\0' */); /* Construct the name of the non-lazy pointer or stub. */ ! sprintf (buffer, "&%s%c%s%s%s%s", quote, L_or_l, prefix, name, suffix, quote); if (!machopic_indirections) machopic_indirections = hash_table::create_ggc (37); --- 522,568 ---- while (IDENTIFIER_TRANSPARENT_ALIAS (id)) id = TREE_CHAIN (id); if (id != id_orig) ! name = IDENTIFIER_POINTER (id); } + const char *prefix = user_label_prefix; + /* If we are emitting the label 'verbatim' then omit the U_L_P and count + the name without the leading '*'. */ if (name[0] == '*') { prefix = ""; ++name; } ! /* Here we are undoing a number of causes that placed some indirections ! (apparently erroneously) into the .data section. Specifically, some ! symbols that are ABI mandated indirections and some hidden symbols ! were being placed there - which cause difficulties with later ! versions of ld64. Iff (after these checks) some symbol still gets an ! indirection in the data section, we want to adjust the indirection ! name to be linker visible to deal with PR71767 (notes above). */ ! bool nlsp_in_data_section = ! ! MACHO_SYMBOL_MUST_INDIRECT_P (sym_ref) ! && ! MACHO_SYMBOL_HIDDEN_VIS_P (sym_ref) ! && (machopic_symbol_defined_p (sym_ref) || SYMBOL_REF_LOCAL_P (sym_ref)) ! && ! indirect_data (sym_ref); ! const char *suffix = stub_p ? STUB_SUFFIX : NON_LAZY_POINTER_SUFFIX; ! /* If the indirection is in the data section, let the linker see it. */ ! char L_or_l = (!stub_p && nlsp_in_data_section) ? 'l' : 'L'; ! /* We have mangled symbols with spaces and punctuation which typically ! need surrounding in quotes for the assembler to consume them. */ ! const char *quote = name_needs_quotes (name) ? "\"" : ""; ! char *buffer = XALLOCAVEC (char, 2 /* strlen ("&L") or ("&l") */ ! + strlen (prefix) ! + strlen (name) ! + strlen (suffix) ! + 2 * strlen (quote) ! + 1 /* '\0' */); /* Construct the name of the non-lazy pointer or stub. */ ! sprintf (buffer, "&%s%c%s%s%s%s", quote, L_or_l, prefix, name, ! suffix, quote); if (!machopic_indirections) machopic_indirections = hash_table::create_ggc (37); *************** machopic_indirection_name (rtx sym_ref, *** 576,585 **** = machopic_indirections->find_slot_with_hash (buffer, htab_hash_string (buffer), INSERT); if (*slot) ! { ! p = *slot; ! } else { p = ggc_alloc (); --- 571,579 ---- = machopic_indirections->find_slot_with_hash (buffer, htab_hash_string (buffer), INSERT); + machopic_indirection *p; if (*slot) ! p = *slot; else { p = ggc_alloc (); *************** machopic_indirection_name (rtx sym_ref, *** 587,592 **** --- 581,587 ---- p->ptr_name = xstrdup (buffer); p->stub_p = stub_p; p->used = false; + p->nlsp_in_data_section = nlsp_in_data_section; *slot = p; } *************** machopic_indirect_data_reference (rtx or *** 662,668 **** /* some other cpu -- writeme! */ gcc_unreachable (); } ! else if (defined) { rtx offset = NULL; if (DARWIN_PPC || HAVE_lo_sum) --- 657,663 ---- /* some other cpu -- writeme! */ gcc_unreachable (); } ! else if (defined && ! MACHO_SYMBOL_MUST_INDIRECT_P (orig)) { rtx offset = NULL; if (DARWIN_PPC || HAVE_lo_sum) *************** machopic_indirect_data_reference (rtx or *** 704,709 **** --- 699,705 ---- machopic_indirection_name (orig, /*stub_p=*/false))); SYMBOL_REF_DATA (ptr_ref) = SYMBOL_REF_DATA (orig); + SYMBOL_REF_FLAGS (ptr_ref) |= MACHO_SYMBOL_FLAG_INDIRECTION; ptr_ref = gen_const_mem (Pmode, ptr_ref); machopic_define_symbol (ptr_ref); *************** machopic_indirect_data_reference (rtx or *** 786,792 **** rtx machopic_indirect_call_target (rtx target) { ! if (! darwin_emit_branch_islands) return target; if (GET_CODE (target) != MEM) --- 782,788 ---- rtx machopic_indirect_call_target (rtx target) { ! if (! darwin_symbol_stubs) return target; if (GET_CODE (target) != MEM) *************** machopic_indirect_call_target (rtx targe *** 794,801 **** if (MACHOPIC_INDIRECT && GET_CODE (XEXP (target, 0)) == SYMBOL_REF ! && !(SYMBOL_REF_FLAGS (XEXP (target, 0)) ! & MACHO_SYMBOL_FLAG_DEFINED)) { rtx sym_ref = XEXP (target, 0); const char *stub_name = machopic_indirection_name (sym_ref, --- 790,796 ---- if (MACHOPIC_INDIRECT && GET_CODE (XEXP (target, 0)) == SYMBOL_REF ! && ! MACHO_SYMBOL_DEFINED_P (XEXP (target, 0))) { rtx sym_ref = XEXP (target, 0); const char *stub_name = machopic_indirection_name (sym_ref, *************** machopic_indirect_call_target (rtx targe *** 804,809 **** --- 799,805 ---- XEXP (target, 0) = gen_rtx_SYMBOL_REF (mode, stub_name); SYMBOL_REF_DATA (XEXP (target, 0)) = SYMBOL_REF_DATA (sym_ref); + SYMBOL_REF_FLAGS (XEXP (target, 0)) |= MACHO_SYMBOL_FLAG_INDIRECTION; MEM_READONLY_P (target) = 1; MEM_NOTRAP_P (target) = 1; } *************** machopic_legitimize_pic_address (rtx ori *** 841,847 **** { if (reg == 0) { ! gcc_assert (!reload_in_progress); reg = gen_reg_rtx (Pmode); } --- 837,843 ---- { if (reg == 0) { ! gcc_assert (!lra_in_progress); reg = gen_reg_rtx (Pmode); } *************** machopic_legitimize_pic_address (rtx ori *** 925,931 **** emit_use (gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM)); #endif ! if (reload_in_progress) df_set_regs_ever_live (REGNO (pic), true); pic_ref = gen_rtx_PLUS (Pmode, pic, machopic_gen_offset (XEXP (orig, 0))); --- 921,927 ---- emit_use (gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM)); #endif ! if (lra_in_progress) df_set_regs_ever_live (REGNO (pic), true); pic_ref = gen_rtx_PLUS (Pmode, pic, machopic_gen_offset (XEXP (orig, 0))); *************** machopic_legitimize_pic_address (rtx ori *** 949,955 **** if (reg == 0) { ! gcc_assert (!reload_in_progress); reg = gen_reg_rtx (Pmode); } --- 945,951 ---- if (reg == 0) { ! gcc_assert (!lra_in_progress); reg = gen_reg_rtx (Pmode); } *************** machopic_legitimize_pic_address (rtx ori *** 995,1001 **** #if 0 emit_use (pic_offset_table_rtx); #endif ! if (reload_in_progress) df_set_regs_ever_live (REGNO (pic), true); pic_ref = gen_rtx_PLUS (Pmode, pic, --- 991,997 ---- #if 0 emit_use (pic_offset_table_rtx); #endif ! if (lra_in_progress) df_set_regs_ever_live (REGNO (pic), true); pic_ref = gen_rtx_PLUS (Pmode, pic, *************** machopic_legitimize_pic_address (rtx ori *** 1072,1200 **** return pic_ref; } ! /* Output the stub or non-lazy pointer in *SLOT, if it has been used. ! DATA is the FILE* for assembly output. Called from ! htab_traverse. */ int ! machopic_output_indirection (machopic_indirection **slot, FILE *asm_out_file) { machopic_indirection *p = *slot; - rtx symbol; - const char *sym_name; - const char *ptr_name; ! if (!p->used) return 1; ! symbol = p->symbol; ! sym_name = XSTR (symbol, 0); ! ptr_name = p->ptr_name; ! if (p->stub_p) ! { ! char *sym; ! char *stub; ! tree id; ! id = maybe_get_identifier (sym_name); ! if (id) ! { ! tree id_orig = id; ! while (IDENTIFIER_TRANSPARENT_ALIAS (id)) ! id = TREE_CHAIN (id); ! if (id != id_orig) ! sym_name = IDENTIFIER_POINTER (id); ! } ! sym = XALLOCAVEC (char, strlen (sym_name) + 2); ! if (sym_name[0] == '*' || sym_name[0] == '&') ! strcpy (sym, sym_name + 1); ! else if (sym_name[0] == '-' || sym_name[0] == '+') ! strcpy (sym, sym_name); ! else ! sprintf (sym, "%s%s", user_label_prefix, sym_name); ! stub = XALLOCAVEC (char, strlen (ptr_name) + 2); ! if (ptr_name[0] == '*' || ptr_name[0] == '&') ! strcpy (stub, ptr_name + 1); ! else ! sprintf (stub, "%s%s", user_label_prefix, ptr_name); ! machopic_output_stub (asm_out_file, sym, stub); ! } ! else if (! indirect_data (symbol) ! && (machopic_symbol_defined_p (symbol) ! || SYMBOL_REF_LOCAL_P (symbol))) { ! switch_to_section (data_section); ! assemble_align (GET_MODE_ALIGNMENT (Pmode)); ! assemble_label (asm_out_file, ptr_name); ! assemble_integer (gen_rtx_SYMBOL_REF (Pmode, sym_name), ! GET_MODE_SIZE (Pmode), ! GET_MODE_ALIGNMENT (Pmode), 1); } else ! { ! rtx init = const0_rtx; ! switch_to_section (darwin_sections[machopic_nl_symbol_ptr_section]); ! /* Mach-O symbols are passed around in code through indirect ! references and the original symbol_ref hasn't passed through ! the generic handling and reference-catching in ! output_operand, so we need to manually mark weak references ! as such. */ ! if (SYMBOL_REF_WEAK (symbol)) ! { ! tree decl = SYMBOL_REF_DECL (symbol); ! gcc_assert (DECL_P (decl)); ! if (decl != NULL_TREE ! && DECL_EXTERNAL (decl) && TREE_PUBLIC (decl) ! /* Handle only actual external-only definitions, not ! e.g. extern inline code or variables for which ! storage has been allocated. */ ! && !TREE_STATIC (decl)) ! { ! fputs ("\t.weak_reference ", asm_out_file); ! assemble_name (asm_out_file, sym_name); ! fputc ('\n', asm_out_file); ! } ! } ! assemble_name (asm_out_file, ptr_name); ! fprintf (asm_out_file, ":\n"); ! fprintf (asm_out_file, "\t.indirect_symbol "); ! assemble_name (asm_out_file, sym_name); ! fprintf (asm_out_file, "\n"); ! /* Variables that are marked with MACHO_SYMBOL_STATIC need to ! have their symbol name instead of 0 in the second entry of ! the non-lazy symbol pointer data structure when they are ! defined. This allows the runtime to rebind newer instances ! of the translation unit with the original instance of the ! symbol. */ ! if ((SYMBOL_REF_FLAGS (symbol) & MACHO_SYMBOL_STATIC) ! && machopic_symbol_defined_p (symbol)) ! init = gen_rtx_SYMBOL_REF (Pmode, sym_name); ! assemble_integer (init, GET_MODE_SIZE (Pmode), ! GET_MODE_ALIGNMENT (Pmode), 1); } return 1; } ! void machopic_finish (FILE *asm_out_file) { ! if (machopic_indirections) ! machopic_indirections ! ->traverse_noresize (asm_out_file); } int --- 1068,1227 ---- return pic_ref; } ! /* Callbacks to output the stub or non-lazy pointers. ! Each works on the item in *SLOT,if it has been used. ! DATA is the FILE* for assembly output. ! Called from htab_traverses, invoked from machopic_finish(). */ int ! machopic_output_data_section_indirection (machopic_indirection **slot, ! FILE *asm_out_file) { machopic_indirection *p = *slot; ! if (!p->used || !p->nlsp_in_data_section) return 1; ! rtx symbol = p->symbol; ! /* The original symbol name. */ ! const char *sym_name = XSTR (symbol, 0); ! /* The name of the indirection symbol. */ ! const char *ptr_name = p->ptr_name; ! switch_to_section (data_section); ! assemble_align (GET_MODE_ALIGNMENT (Pmode)); ! assemble_label (asm_out_file, ptr_name); ! assemble_integer (gen_rtx_SYMBOL_REF (Pmode, sym_name), ! GET_MODE_SIZE (Pmode), ! GET_MODE_ALIGNMENT (Pmode), 1); ! return 1; ! } ! int ! machopic_output_stub_indirection (machopic_indirection **slot, ! FILE *asm_out_file) ! { ! machopic_indirection *p = *slot; ! if (!p->used || !p->stub_p) ! return 1; ! rtx symbol = p->symbol; ! /* The original symbol name. */ ! const char *sym_name = XSTR (symbol, 0); ! /* The name of the stub symbol. */ ! const char *ptr_name = p->ptr_name; ! tree id = maybe_get_identifier (sym_name); ! if (id) { ! tree id_orig = id; ! ! while (IDENTIFIER_TRANSPARENT_ALIAS (id)) ! id = TREE_CHAIN (id); ! if (id != id_orig) ! sym_name = IDENTIFIER_POINTER (id); } + + char *sym = XALLOCAVEC (char, strlen (sym_name) + 2); + if (sym_name[0] == '*' || sym_name[0] == '&') + strcpy (sym, sym_name + 1); + else if (sym_name[0] == '-' || sym_name[0] == '+') + strcpy (sym, sym_name); else ! sprintf (sym, "%s%s", user_label_prefix, sym_name); ! char *stub = XALLOCAVEC (char, strlen (ptr_name) + 2); ! if (ptr_name[0] == '*' || ptr_name[0] == '&') ! strcpy (stub, ptr_name + 1); ! else ! sprintf (stub, "%s%s", user_label_prefix, ptr_name); ! machopic_output_stub (asm_out_file, sym, stub); ! return 1; ! } ! int ! machopic_output_indirection (machopic_indirection **slot, FILE *asm_out_file) ! { ! machopic_indirection *p = *slot; ! if (!p->used || p->stub_p || p->nlsp_in_data_section) ! return 1; ! rtx symbol = p->symbol; ! /* The original symbol name. */ ! const char *sym_name = XSTR (symbol, 0); ! /* The nonlazy-stub symbol name. */ ! const char *ptr_name = p->ptr_name; ! switch_to_section (darwin_sections[machopic_nl_symbol_ptr_section]); ! /* Mach-O symbols are passed around in code through indirect references and ! the original symbol_ref hasn't passed through the generic handling and ! reference-catching in output_operand, so we need to manually mark weak ! references as such. */ ! ! if (SYMBOL_REF_WEAK (symbol)) ! { ! tree decl = SYMBOL_REF_DECL (symbol); ! gcc_checking_assert (DECL_P (decl)); ! ! if (decl != NULL_TREE ! && DECL_EXTERNAL (decl) && TREE_PUBLIC (decl) ! /* Handle only actual external-only definitions, not ! e.g. extern inline code or variables for which ! storage has been allocated. */ ! && !TREE_STATIC (decl)) ! { ! fputs ("\t.weak_reference ", asm_out_file); ! assemble_name (asm_out_file, sym_name); ! fputc ('\n', asm_out_file); ! } } + assemble_name (asm_out_file, ptr_name); + fprintf (asm_out_file, ":\n"); + + fprintf (asm_out_file, "\t.indirect_symbol "); + assemble_name (asm_out_file, sym_name); + fprintf (asm_out_file, "\n"); + + /* Variables that are marked with MACHO_SYMBOL_FLAG_STATIC need to + have their symbol name instead of 0 in the second entry of + the non-lazy symbol pointer data structure when they are + defined. This allows the runtime to rebind newer instances + of the translation unit with the original instance of the + symbol. */ + + rtx init = const0_rtx; + if (MACHO_SYMBOL_STATIC_P (symbol) && machopic_symbol_defined_p (symbol)) + init = gen_rtx_SYMBOL_REF (Pmode, sym_name); + + assemble_integer (init, GET_MODE_SIZE (Pmode), + GET_MODE_ALIGNMENT (Pmode), 1); + return 1; } ! static void machopic_finish (FILE *asm_out_file) { ! if (!machopic_indirections) ! return; ! ! /* First output an symbol indirections that have been placed into .data ! (we don't expect these now). */ ! machopic_indirections->traverse_noresize ! (asm_out_file); ! ! machopic_indirections->traverse_noresize ! (asm_out_file); ! ! machopic_indirections->traverse_noresize ! (asm_out_file); } int *************** machopic_operand_p (rtx op) *** 1209,1233 **** && XINT (XEXP (op, 0), 1) == UNSPEC_MACHOPIC_OFFSET); } ! /* This function records whether a given name corresponds to a defined ! or undefined function or variable, for machopic_classify_ident to ! use later. */ void ! darwin_encode_section_info (tree decl, rtx rtl, int first ATTRIBUTE_UNUSED) { ! rtx sym_ref; ! /* Do the standard encoding things first. */ default_encode_section_info (decl, rtl, first); ! if (TREE_CODE (decl) != FUNCTION_DECL && TREE_CODE (decl) != VAR_DECL) return; ! sym_ref = XEXP (rtl, 0); ! if (TREE_CODE (decl) == VAR_DECL) SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_VARIABLE; if (!DECL_EXTERNAL (decl) && (!TREE_PUBLIC (decl) || !DECL_WEAK (decl)) && ! lookup_attribute ("weakref", DECL_ATTRIBUTES (decl)) --- 1236,1286 ---- && XINT (XEXP (op, 0), 1) == UNSPEC_MACHOPIC_OFFSET); } ! /* This function: ! computes and caches a series of flags that characterise the symbol's ! properties that affect Mach-O code gen (including accidental cases ! from older toolchains). ! ! TODO: ! Here we also need to do enough analysis to determine if a symbol's ! name needs to be made linker-visible. This is more tricky - since ! it depends on whether we've previously seen a global weak definition ! in the same section. ! */ void ! darwin_encode_section_info (tree decl, rtx rtl, int first) { ! /* Careful not to prod global register variables. */ ! if (!MEM_P (rtl)) ! return; ! /* Do the standard encoding things first; this sets: ! SYMBOL_FLAG_FUNCTION, ! SYMBOL_FLAG_LOCAL, (binds_local_p) ! TLS_MODEL, SYMBOL_FLAG_SMALL ! SYMBOL_FLAG_EXTERNAL. */ default_encode_section_info (decl, rtl, first); ! if (! VAR_OR_FUNCTION_DECL_P (decl)) return; ! rtx sym_ref = XEXP (rtl, 0); ! if (VAR_P (decl)) SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_VARIABLE; + /* Only really common if there's no initialiser. */ + bool really_common_p = (DECL_COMMON (decl) + && (DECL_INITIAL (decl) == NULL + || (!in_lto_p + && DECL_INITIAL (decl) == error_mark_node))); + + /* For Darwin, if we have specified visibility and it's not the default + that's counted 'hidden'. */ + if (DECL_VISIBILITY_SPECIFIED (decl) + && DECL_VISIBILITY (decl) != VISIBILITY_DEFAULT) + SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_HIDDEN_VIS; + if (!DECL_EXTERNAL (decl) && (!TREE_PUBLIC (decl) || !DECL_WEAK (decl)) && ! lookup_attribute ("weakref", DECL_ATTRIBUTES (decl)) *************** darwin_encode_section_info (tree decl, r *** 1238,1244 **** SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_DEFINED; if (! TREE_PUBLIC (decl)) ! SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_STATIC; } void --- 1291,1303 ---- SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_DEFINED; if (! TREE_PUBLIC (decl)) ! SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_STATIC; ! ! /* Short cut check for Darwin 'must indirect' rules. */ ! if (really_common_p ! || (DECL_WEAK (decl) && ! MACHO_SYMBOL_HIDDEN_VIS_P (sym_ref)) ! || lookup_attribute ("weakref", DECL_ATTRIBUTES (decl))) ! SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_MUST_INDIRECT; } void *************** darwin_mark_decl_preserved (const char * *** 1255,1266 **** } static section * ! darwin_rodata_section (int use_coal, bool zsize) { return (use_coal ? darwin_sections[const_coal_section] : (zsize ? darwin_sections[zobj_const_section] ! : darwin_sections[const_section])); } static section * --- 1314,1326 ---- } static section * ! darwin_rodata_section (int use_coal, bool zsize, int reloc) { return (use_coal ? darwin_sections[const_coal_section] : (zsize ? darwin_sections[zobj_const_section] ! : reloc ? darwin_sections[const_data_section] ! : darwin_sections[const_section])); } static section * *************** machopic_select_section (tree decl, *** 1553,1559 **** case SECCAT_RODATA: case SECCAT_SRODATA: ! base_section = darwin_rodata_section (use_coal, zsize); break; case SECCAT_RODATA_MERGE_STR: --- 1613,1619 ---- case SECCAT_RODATA: case SECCAT_SRODATA: ! base_section = darwin_rodata_section (use_coal, zsize, reloc); break; case SECCAT_RODATA_MERGE_STR: *************** darwin_emit_unwind_label (FILE *file, tr *** 2082,2092 **** static int invok_count = 0; static tree last_fun_decl = NULL_TREE; ! /* We use the linker to emit the .eh labels for Darwin 9 and above. */ ! if (! for_eh || generating_for_darwin_version >= 9) return; ! /* FIXME: This only works when the eh for all sections of a function is emitted at the same time. If that changes, we would need to use a lookup table of some form to determine what to do. Also, we should emit the unadorned label for the partition containing the public label for a --- 2142,2152 ---- static int invok_count = 0; static tree last_fun_decl = NULL_TREE; ! /* Modern linkers can produce distinct FDEs without compiler support. */ ! if (! for_eh || ! ld_needs_eh_markers) return; ! /* FIXME: This only works when the eh for all sections of a function are emitted at the same time. If that changes, we would need to use a lookup table of some form to determine what to do. Also, we should emit the unadorned label for the partition containing the public label for a *************** darwin_file_end (void) *** 2908,2919 **** 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); --- 2968,2977 ---- if (flag_objc_abi >= 2) { flags = 16; ! switch_to_section (darwin_sections[objc2_image_info_section]); } else ! switch_to_section (darwin_sections[objc_image_info_section]); ASM_OUTPUT_ALIGN (asm_out_file, 2); fputs ("L_OBJC_ImageInfo:\n", asm_out_file); *************** darwin_override_options (void) *** 3119,3135 **** : (generating_for_darwin_version >= 9) ? 1 : 0); - /* Objective-C family ABI 2 is only valid for next/m64 at present. */ if (global_options_set.x_flag_objc_abi && flag_next_runtime) { ! if (TARGET_64BIT && global_options.x_flag_objc_abi < 2) ! error_at (UNKNOWN_LOCATION, "%<-fobjc-abi-version%> >= 2 must be" ! " used for %<-m64%> targets with" ! " %<-fnext-runtime%>"); ! if (!TARGET_64BIT && global_options.x_flag_objc_abi >= 2) ! error_at (UNKNOWN_LOCATION, "%<-fobjc-abi-version%> >= 2 is not" ! " supported on %<-m32%> targets with" ! " %<-fnext-runtime%>"); } /* Don't emit DWARF3/4 unless specifically selected. This is a --- 3177,3195 ---- : (generating_for_darwin_version >= 9) ? 1 : 0); if (global_options_set.x_flag_objc_abi && flag_next_runtime) { ! if (TARGET_64BIT && global_options.x_flag_objc_abi != 2) ! /* The Objective-C family ABI 2 is the only valid version NeXT/m64. */ ! error_at (UNKNOWN_LOCATION, ! "%<-fobjc-abi-version%> 2 must be used for 64 bit targets" ! " with %<-fnext-runtime%>"); ! else if (!TARGET_64BIT && global_options.x_flag_objc_abi >= 2) ! /* ABI versions 0 and 1 are the only valid versions NeXT/m32. */ ! error_at (UNKNOWN_LOCATION, ! "%<-fobjc-abi-version%> %d is not supported for 32 bit" ! " targets with %<-fnext-runtime%>", ! global_options.x_flag_objc_abi); } /* Don't emit DWARF3/4 unless specifically selected. This is a *************** darwin_override_options (void) *** 3197,3204 **** /* so no tables either.. */ flag_unwind_tables = 0; flag_asynchronous_unwind_tables = 0; - /* We still need to emit branch islands for kernel context. */ - darwin_emit_branch_islands = true; } if (flag_var_tracking_uninit == 0 --- 3257,3262 ---- *************** darwin_override_options (void) *** 3208,3213 **** --- 3266,3273 ---- && write_symbols == DWARF2_DEBUG) flag_var_tracking_uninit = flag_var_tracking; + /* Final check on PCI options; for Darwin these are not dependent on the PIE + ones, although PIE does require PIC to support it. */ if (MACHO_DYNAMIC_NO_PIC_P) { if (flag_pic) *************** darwin_override_options (void) *** 3216,3232 **** " %<-fpie%> or %<-fPIE%>"); flag_pic = 0; } ! else if (flag_pic == 1) { ! /* Darwin's -fpic is -fPIC. */ flag_pic = 2; } ! /* It is assumed that branch island stubs are needed for earlier systems. */ ! if (generating_for_darwin_version < 9) ! darwin_emit_branch_islands = true; ! else ! emit_aligned_common = true; /* Later systems can support aligned common. */ /* The c_dialect...() macros are not available to us here. */ darwin_running_cxx = (strstr (lang_hooks.name, "C++") != 0); --- 3276,3327 ---- " %<-fpie%> or %<-fPIE%>"); flag_pic = 0; } ! else if (flag_pic == 1 ! || (flag_pic == 0 && !(flag_mkernel || flag_apple_kext))) { ! /* Darwin's -fpic is -fPIC. ! We only support "static" code in the kernel and kernel exts. */ flag_pic = 2; } ! /* Linkers >= ld64-62.1 (at least) are capable of making the necessary PIC ! indirections and we no longer need to emit pic symbol stubs. ! However, if we are generating code for earlier ones (or for use in the ! kernel) the stubs might still be required, and this will be set true. ! If the user sets it on or off - then that takes precedence. ! ! Linkers that don't need stubs, don't need the EH symbol markers either. ! */ ! ! if (!global_options_set.x_darwin_symbol_stubs) ! { ! if (darwin_target_linker) ! { ! if (strverscmp (darwin_target_linker, MIN_LD64_OMIT_STUBS) < 0) ! { ! darwin_symbol_stubs = true; ! ld_needs_eh_markers = true; ! } ! } ! else if (generating_for_darwin_version < 9) ! { ! /* If we don't know the linker version and we're targeting an old ! system, we know no better than to assume the use of an earlier ! linker. */ ! darwin_symbol_stubs = true; ! ld_needs_eh_markers = true; ! } ! } ! else if (DARWIN_X86 && darwin_symbol_stubs && TARGET_64BIT) ! { ! inform (input_location, ! "%<-msymbol-stubs%> is not required for 64b code (ignored)"); ! darwin_symbol_stubs = false; ! } ! ! if (generating_for_darwin_version >= 9) ! /* Later systems can support aligned common. */ ! emit_aligned_common = true; /* The c_dialect...() macros are not available to us here. */ darwin_running_cxx = (strstr (lang_hooks.name, "C++") != 0); diff -Nrcpad gcc-7.4.0/gcc/config/darwin.h gcc-7.5.0/gcc/config/darwin.h *** gcc-7.4.0/gcc/config/darwin.h Mon Nov 26 19:46:24 2018 --- gcc-7.5.0/gcc/config/darwin.h Fri Nov 1 20:44:32 2019 *************** extern GTY(()) int darwin_ms_struct; *** 127,132 **** --- 127,150 ---- "%{fapple-kext|mkernel:-static}", \ "%{shared:-Zdynamiclib} %= 10.5 mmacosx-version-min= -pie) }} " + + #define DARWIN_NOPIE_SPEC \ + "%{no-pie|fno-pie|fno-PIE: \ + %:version-compare(>= 10.7 mmacosx-version-min= -no_pie) }" + #define DARWIN_CC1_SPEC \ "%{findirect-virtual-calls: -fapple-kext} %= 10.6 mmacosx-version-min= -no_compact_unwind) " ! ! /* In Darwin linker specs we can put -lcrt0.o and ld will search the library ! path for crt0.o or -lcrtx.a and it will search for for libcrtx.a. As for ! other ports, we can also put xxx.{o,a}%s and get the appropriate complete ! startfile absolute directory. This latter point is important when we want ! to override ld's rule of .dylib being found ahead of .a and the user wants ! the convenience library to be linked. */ ! ! /* The LINK_COMMAND spec is mostly a clone of the standard LINK_COMMAND_SPEC, ! plus precomp, libtool, and fat build additions. In general, random Darwin linker flags should go into LINK_SPEC instead of LINK_COMMAND_SPEC. The command spec is better for specifying the handling of options understood by generic Unix linkers, and for positional arguments like libraries. */ #define LINK_COMMAND_SPEC_A \ "%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\ %(linker)" \ LINK_PLUGIN_SPEC \ "%{flto*:% 10.5 mmacosx-version-min= -lgcc_s.10.4) \ %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ ! %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ -lgcc ; \ :%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \ %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ ! %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ -lgcc }" ! /* We specify crt0.o as -lcrt0.o so that ld will search the library path. ! ! crt3.o provides __cxa_atexit on systems that don't have it. Since ! it's only used with C++, which requires passing -shared-libgcc, key ! off that to avoid unnecessarily adding a destructor to every ! powerpc program built. */ #undef STARTFILE_SPEC #define STARTFILE_SPEC \ ! "%{Zdynamiclib: %(darwin_dylib1) %{fgnu-tm: -lcrttms.o}} \ ! %{!Zdynamiclib:%{Zbundle:%{!static: \ %:version-compare(< 10.6 mmacosx-version-min= -lbundle1.o) \ %{fgnu-tm: -lcrttms.o}}} \ %{!Zbundle:%{pg:%{static:-lgcrt0.o} \ --- 359,400 ---- /* Support -mmacosx-version-min by supplying different (stub) libgcc_s.dylib libraries to link against, and by not linking against libgcc_s on ! earlier-than-10.3.9. If we need exceptions, prior to 10.3.9, then we have ! to link the static eh lib, since there's no shared version on the system. ! Note that by default, except as above, -lgcc_eh is not linked against. ! This is because,in general, we need to unwind through system libraries that ! are linked with the shared unwinder in libunwind (or libgcc_s for 10.4/5). ! The static version of the current libgcc unwinder (which differs from the ! implementation in libunwind.dylib on systems Darwin10 [10.6]+) can be used ! by specifying -static-libgcc. ! ! If libgcc_eh is linked against, it has to be before -lgcc, because it might need symbols from -lgcc. */ + #undef REAL_LIBGCC_SPEC #define REAL_LIBGCC_SPEC \ "%{static-libgcc|static: -lgcc_eh -lgcc; \ ! shared-libgcc|fexceptions|fobjc-exceptions|fgnu-runtime: \ ! %:version-compare(!> 10.3.9 mmacosx-version-min= -lgcc_eh) \ ! %:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \ %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ ! %:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ -lgcc ; \ :%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \ %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ ! %:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ -lgcc }" ! /* We specify crt0.o as -lcrt0.o so that ld will search the library path. */ #undef STARTFILE_SPEC #define STARTFILE_SPEC \ ! "%{Zdynamiclib: %(darwin_dylib1) %{fgnu-tm: -lcrttms.o}} \ ! %{!Zdynamiclib:%{Zbundle:%{!static: \ %:version-compare(< 10.6 mmacosx-version-min= -lbundle1.o) \ %{fgnu-tm: -lcrttms.o}}} \ %{!Zbundle:%{pg:%{static:-lgcrt0.o} \ *************** extern GTY(()) int darwin_ms_struct; *** 379,385 **** %{!object:%{preload:-lcrt0.o} \ %{!preload: %(darwin_crt1) \ %(darwin_crt2)}}}}}} \ ! %{shared-libgcc:%:version-compare(< 10.5 mmacosx-version-min= crt3.o%s)}" /* We want a destructor last in the list. */ #define TM_DESTRUCTOR "%{fgnu-tm: -lcrttme.o}" --- 408,414 ---- %{!object:%{preload:-lcrt0.o} \ %{!preload: %(darwin_crt1) \ %(darwin_crt2)}}}}}} \ ! %(darwin_crt3)" /* We want a destructor last in the list. */ #define TM_DESTRUCTOR "%{fgnu-tm: -lcrttme.o}" *************** extern GTY(()) int darwin_ms_struct; *** 387,404 **** #define DARWIN_EXTRA_SPECS \ { "darwin_crt1", DARWIN_CRT1_SPEC }, \ { "darwin_dylib1", DARWIN_DYLIB1_SPEC }, - #define DARWIN_DYLIB1_SPEC \ - "%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o) \ - %:version-compare(>< 10.5 10.6 mmacosx-version-min= -ldylib1.10.5.o)" - #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}" #ifdef HAVE_AS_MMACOSX_VERSION_MIN_OPTION /* Emit macosx version (but only major). */ #define ASM_MMACOSX_VERSION_MIN_SPEC \ --- 416,445 ---- #define DARWIN_EXTRA_SPECS \ { "darwin_crt1", DARWIN_CRT1_SPEC }, \ + { "darwin_crt2", DARWIN_CRT2_SPEC }, \ + { "darwin_crt3", DARWIN_CRT3_SPEC }, \ { "darwin_dylib1", DARWIN_DYLIB1_SPEC }, #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}" + #define DARWIN_CRT2_SPEC "" + + /* crt3.o provides __cxa_atexit on systems that don't have it (and a fix + up for faulty versions on 10.4). Since it's only used with C++, which + requires passing -shared-libgcc, key off that to avoid unnecessarily + adding a destructor to every program built for 10.4 or earlier. */ + + #define DARWIN_CRT3_SPEC \ + "%{shared-libgcc:%:version-compare(< 10.5 mmacosx-version-min= crt3.o%s)}" + + #define DARWIN_DYLIB1_SPEC \ + "%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o) \ + %:version-compare(>< 10.5 10.6 mmacosx-version-min= -ldylib1.10.5.o)" + #ifdef HAVE_AS_MMACOSX_VERSION_MIN_OPTION /* Emit macosx version (but only major). */ #define ASM_MMACOSX_VERSION_MIN_SPEC \ *************** extern GTY(()) int darwin_ms_struct; *** 434,453 **** #define DWARF2_DEBUGGING_INFO 1 ! #define DEBUG_FRAME_SECTION "__DWARF,__debug_frame,regular,debug" ! #define DEBUG_INFO_SECTION "__DWARF,__debug_info,regular,debug" ! #define DEBUG_ABBREV_SECTION "__DWARF,__debug_abbrev,regular,debug" ! #define DEBUG_ARANGES_SECTION "__DWARF,__debug_aranges,regular,debug" ! #define DEBUG_MACINFO_SECTION "__DWARF,__debug_macinfo,regular,debug" ! #define DEBUG_LINE_SECTION "__DWARF,__debug_line,regular,debug" ! #define DEBUG_LOC_SECTION "__DWARF,__debug_loc,regular,debug" ! #define DEBUG_PUBNAMES_SECTION "__DWARF,__debug_pubnames,regular,debug" ! #define DEBUG_PUBTYPES_SECTION "__DWARF,__debug_pubtypes,regular,debug" ! #define DEBUG_STR_SECTION "__DWARF,__debug_str,regular,debug" ! #define DEBUG_RANGES_SECTION "__DWARF,__debug_ranges,regular,debug" ! #define DEBUG_MACRO_SECTION "__DWARF,__debug_macro,regular,debug" #define TARGET_WANT_DEBUG_PUB_SECTIONS true /* When generating stabs debugging, use N_BINCL entries. */ --- 475,503 ---- #define DWARF2_DEBUGGING_INFO 1 ! #define DEBUG_FRAME_SECTION "__DWARF,__debug_frame,regular,debug" ! #define DEBUG_INFO_SECTION "__DWARF,__debug_info,regular,debug" ! #define DEBUG_ABBREV_SECTION "__DWARF,__debug_abbrev,regular,debug" ! #define DEBUG_ARANGES_SECTION "__DWARF,__debug_aranges,regular,debug" ! #define DEBUG_MACINFO_SECTION "__DWARF,__debug_macinfo,regular,debug" ! #define DEBUG_LINE_SECTION "__DWARF,__debug_line,regular,debug" ! #define DEBUG_LOC_SECTION "__DWARF,__debug_loc,regular,debug" ! #define DEBUG_LOCLISTS_SECTION "__DWARF,__debug_loclists,regular,debug" ! ! #define DEBUG_STR_SECTION "__DWARF,__debug_str,regular,debug" ! #define DEBUG_STR_OFFSETS_SECTION "__DWARF,__debug_str_offs,regular,debug" ! #define DEBUG_RANGES_SECTION "__DWARF,__debug_ranges,regular,debug" ! #define DEBUG_RNGLISTS_SECTION "__DWARF,__debug_rnglists,regular,debug" ! #define DEBUG_MACRO_SECTION "__DWARF,__debug_macro,regular,debug" #define TARGET_WANT_DEBUG_PUB_SECTIONS true + #define DEBUG_PUBNAMES_SECTION ((debug_generate_pub_sections == 2) \ + ? "__DWARF,__debug_gnu_pubn,regular,debug" \ + : "__DWARF,__debug_pubnames,regular,debug") + + #define DEBUG_PUBTYPES_SECTION ((debug_generate_pub_sections == 2) \ + ? "__DWARF,__debug_gnu_pubt,regular,debug" \ + : "__DWARF,__debug_pubtypes,regular,debug") /* When generating stabs debugging, use N_BINCL entries. */ *************** extern GTY(()) int darwin_ms_struct; *** 495,505 **** links to, so there's no need for weak-ness for that. */ #define GTHREAD_USE_WEAK 0 - /* The Darwin linker doesn't want coalesced symbols to appear in - a static archive's table of contents. */ - #undef TARGET_WEAK_NOT_IN_ARCHIVE_TOC - #define TARGET_WEAK_NOT_IN_ARCHIVE_TOC 1 - /* On Darwin, we don't (at the time of writing) have linkonce sections with names, so it's safe to make the class data not comdat. */ #define TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT hook_bool_void_false --- 545,550 ---- *************** extern GTY(()) section * darwin_sections *** 751,771 **** #undef TARGET_ASM_MARK_DECL_PRESERVED #define TARGET_ASM_MARK_DECL_PRESERVED darwin_mark_decl_preserved ! /* Set on a symbol with SYMBOL_FLAG_FUNCTION or ! MACHO_SYMBOL_FLAG_VARIABLE to indicate that the function or ! variable has been defined in this translation unit. ! When porting Mach-O to new architectures you need to make ! sure these aren't clobbered by the backend. */ ! #define MACHO_SYMBOL_FLAG_VARIABLE (SYMBOL_FLAG_MACH_DEP) ! #define MACHO_SYMBOL_FLAG_DEFINED ((SYMBOL_FLAG_MACH_DEP) << 1) /* Set on a symbol to indicate when fix-and-continue style code generation is being used and the symbol refers to a static symbol that should be rebound from new instances of a translation unit to the original instance of the data. */ ! #define MACHO_SYMBOL_STATIC ((SYMBOL_FLAG_MACH_DEP) << 2) /* Symbolic names for various things we might know about a symbol. */ --- 796,847 ---- #undef TARGET_ASM_MARK_DECL_PRESERVED #define TARGET_ASM_MARK_DECL_PRESERVED darwin_mark_decl_preserved ! /* Any port using this header needs to define the first available ! subtarget symbol bit: SYMBOL_FLAG_SUBT_DEP. */ ! /* Is a variable. */ ! #define MACHO_SYMBOL_FLAG_VARIABLE (SYMBOL_FLAG_SUBT_DEP) ! #define MACHO_SYMBOL_VARIABLE_P(RTX) \ ! ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_VARIABLE) != 0) ! ! /* Set on a symbol that must be indirected, even when there is a ! definition in the TU. The ABI mandates that common symbols are so ! indirected, as are weak. If 'fix-and-continue' is operational then ! data symbols might also be. */ ! ! #define MACHO_SYMBOL_FLAG_MUST_INDIRECT ((SYMBOL_FLAG_SUBT_DEP) << 1) ! #define MACHO_SYMBOL_MUST_INDIRECT_P(RTX) \ ! ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_MUST_INDIRECT) != 0) ! ! /* Set on a symbol with SYMBOL_FLAG_FUNCTION or MACHO_SYMBOL_FLAG_VARIABLE ! to indicate that the function or variable is considered defined in this ! translation unit. */ ! ! #define MACHO_SYMBOL_FLAG_DEFINED ((SYMBOL_FLAG_SUBT_DEP) << 2) ! #define MACHO_SYMBOL_DEFINED_P(RTX) \ ! ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_DEFINED) != 0) ! ! /* Set on a symbol that has specified non-default visibility. */ ! ! #define MACHO_SYMBOL_FLAG_HIDDEN_VIS ((SYMBOL_FLAG_SUBT_DEP) << 3) ! #define MACHO_SYMBOL_HIDDEN_VIS_P(RTX) \ ! ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_HIDDEN_VIS) != 0) ! ! /* Set on a symbol that is a pic stub or symbol indirection (i.e. the ! L_xxxxx${stub,non_lazy_ptr,lazy_ptr}. */ ! ! #define MACHO_SYMBOL_FLAG_INDIRECTION ((SYMBOL_FLAG_SUBT_DEP) << 5) ! #define MACHO_SYMBOL_INDIRECTION_P(RTX) \ ! ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_INDIRECTION) != 0) /* Set on a symbol to indicate when fix-and-continue style code generation is being used and the symbol refers to a static symbol that should be rebound from new instances of a translation unit to the original instance of the data. */ ! #define MACHO_SYMBOL_FLAG_STATIC ((SYMBOL_FLAG_SUBT_DEP) << 6) ! #define MACHO_SYMBOL_STATIC_P(RTX) \ ! ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_STATIC) != 0) /* Symbolic names for various things we might know about a symbol. */ *************** extern void darwin_driver_init (unsigned *** 958,965 **** _tested_ version known to support this so far. */ #define MIN_LD64_NO_COAL_SECTS "236.4" #ifndef LD64_VERSION ! #define LD64_VERSION "85.2" #else #define DEF_LD64 LD64_VERSION #endif --- 1034,1045 ---- _tested_ version known to support this so far. */ #define MIN_LD64_NO_COAL_SECTS "236.4" + /* From at least version 62.1, ld64 can build symbol indirection stubs as + needed, and there is no need for the compiler to emit them. */ + #define MIN_LD64_OMIT_STUBS "85.2" + #ifndef LD64_VERSION ! #define LD64_VERSION "62.1" #else #define DEF_LD64 LD64_VERSION #endif diff -Nrcpad gcc-7.4.0/gcc/config/darwin.opt gcc-7.5.0/gcc/config/darwin.opt *** gcc-7.4.0/gcc/config/darwin.opt Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/config/darwin.opt Fri Nov 1 20:30:26 2019 *************** *** 18,257 **** ; along with GCC; see the file COPYING3. If not see ; . ! ; Various linker options have a -Z added so that they can get to specs ! ; processing without interference. Note that an option name with a ! ; prefix that matches another option name, that also takes an ! ; argument, being mapped to a -Z linker option, needs to be modified ! ; so the prefix is different, otherwise a '*' after the shorter option ! ; will match with the longer one. all_load ! Driver Alias(Zall_load) allowable_client ! Driver Separate Alias(Zallowable_client) arch Driver RejectNegative Separate arch_errors_fatal ! Driver Alias(Zarch_errors_fatal) asm_macosx_version_min= Driver RejectNegative Joined bind_at_load ! Driver Alias(Zbind_at_load) bundle ! Driver Alias(Zbundle) bundle_loader ! Driver Separate Alias(Zbundle_loader) ! dead_strip ! Driver Alias(Zdead_strip) ! dependency-file ! C ObjC C++ ObjC++ Separate Alias(MF) MissingArgError(missing filename after %qs) dylib_file Driver Separate Alias(Zdylib_file) dylinker ! Driver dynamic ! Driver Alias(Zdynamic) dynamiclib ! Driver Alias(Zdynamiclib) exported_symbols_list ! Driver Separate Alias(Zexported_symbols_list) filelist Driver RejectNegative Separate findirect-virtual-calls Driver RejectNegative flat_namespace Driver RejectNegative Alias(Zflat_namespace) force_cpusubtype_ALL Driver RejectNegative Alias(Zforce_cpusubtype_ALL) force_flat_namespace Driver RejectNegative Alias(Zforce_flat_namespace) framework Driver RejectNegative Separate fterminated-vtables Driver RejectNegative gfull Driver gused ! Driver headerpad_max_install_names ! Driver image_base ! Driver Separate Alias(Zimage_base) init ! Driver Separate Alias(Zinit) install_name ! Driver Separate Alias(Zinstall_name) keep_private_externs ! Driver ! ! mconstant-cfstrings ! Target Report Var(darwin_constant_cfstrings) Init(1) ! Generate compile-time CFString objects. multi_module Driver RejectNegative Alias(Zmulti_module) multiply_defined Driver RejectNegative Separate Alias(Zmultiply_defined) multiply_defined_unused Driver RejectNegative Separate Alias(Zmultiplydefinedunused) no_dead_strip_inits_and_terms ! Driver Alias(Zno_dead_strip_inits_and_terms) nofixprebinding ! Driver nomultidefs ! Driver noprebind ! Driver noseglinkedit ! Driver object ! Driver prebind ! Driver prebind_all_twolevel_modules ! Driver preload ! Driver private_bundle ! Driver pthread ! Driver rdynamic ! Driver seg_addr_table ! Driver Separate Alias(Zseg_addr_table) seg_addr_table_filename ! Driver Separate Alias(Zfn_seg_addr_table_filename) segaddr ! Driver Separate Args(2) Alias(Zsegaddr) seglinkedit ! Driver segs_read_only_addr ! Driver Separate Alias(Zsegs_read_only_addr) segs_read_write_addr ! Driver Separate Alias(Zsegs_read_write_addr) single_module ! Driver Alias(Zsingle_module) twolevel_namespace ! Driver twolevel_namespace_hints ! Driver umbrella ! Driver Separate Alias(Zumbrella) unexported_symbols_list ! Driver Separate Alias(Zunexported_symbols_list) weak_reference_mismatches ! Driver Separate Alias(Zweak_reference_mismatches) whatsloaded ! Driver whyload ! Driver y ! Driver Joined Mach ! Driver ! ! Wnonportable-cfstrings ! Target Report Var(darwin_warn_nonportable_cfstrings) Init(1) Warning ! Warn if constant CFString objects contain non-portable characters. ! ! ; Use new-style pic stubs if this is true, x86 only so far. ! matt-stubs ! Target Report Var(darwin_macho_att_stub) Init(1) ! Generate AT&T-style stubs for Mach-O. ! ! mdynamic-no-pic ! Target Common Report Mask(MACHO_DYNAMIC_NO_PIC) ! Generate code suitable for executables (NOT shared libs). ! ! mfix-and-continue ! Target Report Var(darwin_fix_and_continue) ! Generate code suitable for fast turn around debugging. ! ! ; The Init here is for the convenience of GCC developers, so that cc1 ! ; and cc1plus don't crash if no -mmacosx-version-min is passed. The ! ; driver will always pass a -mmacosx-version-min, so in normal use the ! ; Init is never used. ! mmacosx-version-min= ! Target Joined Report Var(darwin_macosx_version_min) Init(DEF_MIN_OSX_VERSION) ! The earliest MacOS X version on which this program will run. ! ! mone-byte-bool ! Target RejectNegative Report Var(darwin_one_byte_bool) ! Set sizeof(bool) to 1. ! ! fapple-kext ! Target Report C++ Var(flag_apple_kext) ! Generate code for darwin loadable kernel extensions. ! ! mkernel ! Target Report Var(flag_mkernel) ! Generate code for the kernel or loadable kernel extensions. ! ! iframework ! Target RejectNegative C ObjC C++ ObjC++ Joined Separate ! -iframework Add to the end of the system framework include path. ! X ! Driver Zall_load Driver --- 18,399 ---- ; along with GCC; see the file COPYING3. If not see ; . ! ; We have a lot of Driver options, many of which are obsolete or very very ! ; rarely used so, to keep this file easier to manage: ! ! ; Please place all Non-driver options first (in alphabetical order), followed ! ; by Driver-only options. ! ! ; Non-driver options. ! ! dependency-file ! C ObjC C++ ObjC++ Separate Alias(MF) MissingArgError(missing filename after %qs) ! ! fapple-kext ! Target Report C++ Var(flag_apple_kext) ! Generate code for darwin loadable kernel extensions. ! ! iframework ! Target RejectNegative C ObjC C++ ObjC++ Joined Separate ! -iframework Add to the end of the system framework include path. ! ! mconstant-cfstrings ! Target Report Var(darwin_constant_cfstrings) Init(1) ! Generate compile-time CFString objects. ! ! Wnonportable-cfstrings ! Target Report Var(darwin_warn_nonportable_cfstrings) Init(1) Warning ! Warn if constant CFString objects contain non-portable characters. ! ! ; Use new-style pic stubs if this is true, x86 only so far. ! matt-stubs ! Target Report Var(darwin_macho_att_stub) Init(1) ! Generate AT&T-style stubs for Mach-O. ! ! mdynamic-no-pic ! Target Common Report Mask(MACHO_DYNAMIC_NO_PIC) ! Generate code suitable for executables (NOT shared libs). ! ! mfix-and-continue ! Target Report Var(darwin_fix_and_continue) ! Generate code suitable for fast turn around debugging. ! ! mkernel ! Target Report Var(flag_mkernel) ! Generate code for the kernel or loadable kernel extensions. ! ! ; The Init here is for the convenience of GCC developers, so that cc1 ! ; and cc1plus don't crash if no -mmacosx-version-min is passed. The ! ; driver will always pass a -mmacosx-version-min, so in normal use the ! ; Init is never used. ! mmacosx-version-min= ! Target RejectNegative Joined Report Var(darwin_macosx_version_min) Init(DEF_MIN_OSX_VERSION) ! The earliest MacOS X version on which this program will run. ! ! ; Really, only relevant to PowerPC which has a 4 byte bool by default. ! mone-byte-bool ! Target RejectNegative Report Var(darwin_one_byte_bool) ! Set sizeof(bool) to 1. ! ! msymbol-stubs ! Target Report Var(darwin_symbol_stubs) Init(0) ! Force generation of external symbol indirection stubs. ! ! ; Some code-gen may be improved / adjusted if the linker is sufficiently modern. ! mtarget-linker= ! Target RejectNegative Joined Report Alias(mtarget-linker) ! ! mtarget-linker ! Target RejectNegative Joined Separate Report Var(darwin_target_linker) Init(LD64_VERSION) ! The version of ld64 in use for this toolchain. ! ! ; Driver options. all_load ! Driver RejectNegative Alias(Zall_load) ! Loads all members of archive libraries allowable_client ! Driver RejectNegative Separate Alias(Zallowable_client) ! -allowable_client The output dylib is private to the client(s) named arch Driver RejectNegative Separate + -arch Specify that the output file should be generated for architecture \"name\" arch_errors_fatal ! Driver RejectNegative Alias(Zarch_errors_fatal) ! Mismatches between file architecture and the \"-arch\" are errors instead of warnings asm_macosx_version_min= Driver RejectNegative Joined + The earliest MacOS X version on which this program will run (formatted for the assembler) bind_at_load ! Driver RejectNegative Alias(Zbind_at_load) ! Produce an output file that will bind symbols on load, rather than lazily. bundle ! Driver RejectNegative Alias(Zbundle) ! Produce a Mach-O bundle (file type MH_BUNDLE) bundle_loader ! Driver RejectNegative Separate Alias(Zbundle_loader) ! -bundle_loader Treat \"executable\" (that will be loading this bundle) as if it was one of the dynamic libraries the bundle is linked against for symbol resolution ! client_name ! Driver RejectNegative Separate ! -client_name Enable the executable being built to link against a private dylib (using allowable_client) ! compatibility_version ! Driver RejectNegative Separate ! -compatibility_version Set the minimum version for the client interface. Clients must record a greater number than this or the binding will fail at runtime ! ! current_version ! Driver RejectNegative Separate ! -current_version Set the current version for the library. ! ! dead_strip ! Driver RejectNegative Alias(Zdead_strip) ! Remove code and data that is unreachable from any exported symbol (including the entry point) dylib_file Driver Separate Alias(Zdylib_file) dylinker ! Driver RejectNegative ! Produce a Mach-O dylinker (file type MH_DYLINKER), only used for building dyld. ! ! dylinker_install_name ! Driver RejectNegative Separate ! -dylinker_install_name Only used for building dyld. dynamic ! Driver RejectNegative Alias(Zdynamic) ! The default (and opposite of -static), implied by user mode executables, shared libraries and bundles. dynamiclib ! Driver RejectNegative Alias(Zdynamiclib) ! Produce a Mach-O shared library (file type MH_DYLIB), synonym for -shared exported_symbols_list ! Driver RejectNegative Separate Alias(Zexported_symbols_list) ! -exported_symbols_list Global symbols in \"filename\" will be exported from the linked output file, any symbols not mentioned will be treated as hidden. filelist Driver RejectNegative Separate + Supply a list of objects to be linked from a file, rather than the command line findirect-virtual-calls Driver RejectNegative + Used for generating code for some older kernel revisions. flat_namespace Driver RejectNegative Alias(Zflat_namespace) + Ignore the normal two-level namespace; resolve symbols in command line order and do not record which library provided the resolved symbol. force_cpusubtype_ALL Driver RejectNegative Alias(Zforce_cpusubtype_ALL) + For the assembler (and linker) permit any architecture sub-variant to be used without error. force_flat_namespace Driver RejectNegative Alias(Zforce_flat_namespace) + Set the output object such that, on loading, dyld will ignore any two-level information and resolve symbols in the discovery order for loaded libs. framework Driver RejectNegative Separate + -framework The linker should search for the named framework in the framework search path. fterminated-vtables Driver RejectNegative + Used for generating code for some older kernel revisions. gfull Driver + Abbreviation for \"-g -fno-eliminate-unused-debug-symbols\" gused ! Driver RejectNegative ! Abbreviation for \"-g -feliminate-unused-debug-symbols\" headerpad_max_install_names ! Driver RejectNegative ! Automatically adds space for longer path names in load commands (up to MAXPATHLEN) image_base ! Driver RejectNegative Separate Alias(Zimage_base) ! -image_base
Choose a base address for a dylib or bundle. init ! Driver RejectNegative Separate Alias(Zinit) ! -init The symbol \"symbol_name\" will be used as the first initialiser for a dylib. install_name ! Driver RejectNegative Separate Alias(Zinstall_name) ! -install_name Set the install name for a dylib. keep_private_externs ! Driver RejectNegative ! Usually \"private extern\" (hidden) symbols are made local when linking, this command suppresses that such that they remain exported. multi_module Driver RejectNegative Alias(Zmulti_module) + (Obsolete after 10.4) Multi modules are ignored at runtime since MacOS 10.4 multiply_defined Driver RejectNegative Separate Alias(Zmultiply_defined) + (Obsolete after 10.4) -multiply_defined Provided a mechanism for warning about symbols defined in multiple dylibs. multiply_defined_unused Driver RejectNegative Separate Alias(Zmultiplydefinedunused) + (Obsolete after 10.4) -multiply_defined_unused Provided a mechanism for warning about symbols defined in the current executable also being defined in linked dylibs. no_dead_strip_inits_and_terms ! Driver RejectNegative Alias(Zno_dead_strip_inits_and_terms) ! (Obsolete) The linker never dead strips these items, so the option is not needed. nofixprebinding ! Driver RejectNegative ! (Obsolete after 10.3.9) Set MH_NOPREFIXBINDING, in an exectuable. nomultidefs ! Driver RejectNegative ! (Obsolete after 10.4) Set MH_NOMULTIDEFS in an umbrella framework. noprebind ! Driver RejectNegative Negative(prebind) ! (Obsolete) LD_PREBIND is no longer supported. noseglinkedit ! Driver RejectNegative Negative(seglinkedit) ! (Obsolete) This is the default. object ! Driver RejectNegative ! ! pagezero_size ! Driver RejectNegative Separate ! -pagezero_size size Allows setting the page 0 size to 4kb for certain special cases. prebind ! Driver RejectNegative Negative(noprebind) ! (Obsolete) LD_PREBIND is no longer supported. prebind_all_twolevel_modules ! Driver RejectNegative ! (Obsolete) LD_PREBIND is no longer supported. preload ! Driver RejectNegative ! Produces a Mach-O file suitable for embedded/ROM use. private_bundle ! Driver RejectNegative ! (Obsolete) Allowed linking to proceed with \"-flat_namespace\" when a linked bundle contained a symbol also exported from the main executable. pthread ! Driver RejectNegative rdynamic ! Driver RejectNegative ! Synonym for \"-export-dynamic\" for linker versions that support it. ! ! read_only_relocs ! Driver RejectNegative Separate ! -read_only_relocs This will allow relocs in read-only pages (not advisable). ! ! sectalign ! Driver RejectNegative Separate Args(3) ! -sectalign Set section \"sectname\" in segment \"segname\" to have alignment \"value\" which must be an integral power of two expressed in hexadecimal form. ! ! sectcreate ! Driver RejectNegative Separate Args(3) ! -sectcreate Create section \"sectname\" in segment \"segname\" from the contents of \"file\". ! ! sectobjectsymbols ! Driver RejectNegative Separate Args(2) ! (Obsolete) -sectobjectsymbols Setting a local symbol at the start of a section is no longer supported. ! ! sectorder ! Driver RejectNegative Separate Args(3) ! (Obsolete) -sectorder orderfile Replaced by a more general option \"-order_file\". seg_addr_table ! Driver RejectNegative Separate Alias(Zseg_addr_table) ! -seg_addr_table Specify the base addresses for dynamic libraries, \"file\" contains a line for each library. + ; This is only usable by the ld_classic linker. seg_addr_table_filename ! Driver RejectNegative Separate Alias(Zfn_seg_addr_table_filename) ! (Obsolete, ld_classic only) -seg_addr_table_filename ! ! seg1addr ! Driver RejectNegative Separate ! Synonym for \"image_base\" segaddr ! Driver RejectNegative Separate Args(2) Alias(Zsegaddr) ! -segaddr
Set the base address of segment \"name\" to \"address\" which must be aligned to a page boundary (currently 4kb). ! ! ; This is only usable by the ld_classic linker. ! segcreate ! Driver RejectNegative Separate Args(3) ! (Obsolete, ld_classic only) -sectcreate segname sectname file seglinkedit ! Driver RejectNegative Negative(noseglinkedit) ! (Obsolete) Object files with LINKEDIT sections are no longer supported. ! ! segprot ! Driver RejectNegative Separate Args(3) ! -segprot max_prot init_prot The protection values are \"r\", \"w\", \"x\" or \"-\" the latter meaning \"no access\". segs_read_only_addr ! Driver RejectNegative Separate Alias(Zsegs_read_only_addr) ! -segs_read_only_addr address Allows specifying the address of the read only portion of a dylib. segs_read_write_addr ! Driver RejectNegative Separate Alias(Zsegs_read_write_addr) ! -segs_read_write_addr address Allows specifying the address of the read/write portion of a dylib. single_module ! Driver RejectNegative Alias(Zsingle_module) ! (Obsolete) This is the default. ! ! sub_library ! Driver RejectNegative Separate ! -sub_library Library named \"name\" will be re-exported (only useful for dylibs). ! ! sub_umbrella ! Driver RejectNegative Separate ! -sub_umbrella Framework named \"name\" will be re-exported (only useful for dylibs). twolevel_namespace ! Driver RejectNegative ! This is the default twolevel_namespace_hints ! Driver RejectNegative ! Specifies content that can speed up dynamic loading when the binaries are unchanged. umbrella ! Driver RejectNegative Separate Alias(Zumbrella) ! -umbrella The specified framework will be re-exported. ! ! undefined ! Driver RejectNegative Separate ! -undefined Specify the handling for undefined symbols (default is error). unexported_symbols_list ! Driver RejectNegative Separate Alias(Zunexported_symbols_list) ! -unexported_symbols_list Don't export global symbols listed in filename. weak_reference_mismatches ! Driver RejectNegative Separate Alias(Zweak_reference_mismatches) ! -weak_reference_mismatches Specifies what to do if a symbol import conflicts between file (weak in one and not in another) the default is to treat the symbol as non-weak. whatsloaded ! Driver RejectNegative ! Logs the object files the linker loads whyload ! Driver RejectNegative ! Logs which symbol(s) caused an object to be loaded. ! ! ;(Obsolete, ignored) Strip symbols starting with "L", this is the default. ! X ! Driver RejectNegative y ! Driver RejectNegative Joined ! (Obsolete, ignored) Old support similar to whyload. Mach ! Driver RejectNegative ! (Obsolete and unhandled by ld64, ignored) ld should produce an executable (only handled by ld_classic). ! ;; These are not "real" options, but placeholders used to hide the real options ! ;; from generic options processing... FIXME: they can be eliminated now. Zall_load Driver *************** Driver Separate *** 343,404 **** Zweak_reference_mismatches Driver Separate - client_name - Driver Separate - - compatibility_version - Driver Separate - - current_version - Driver Separate - - dylinker_install_name - Driver Separate - - pagezero_size - Driver Separate - - read_only_relocs - Driver Separate - - sectalign - Driver Separate Args(3) - - sectcreate - Driver Separate Args(3) - - sectobjectsymbols - Driver Separate Args(2) - - sectorder - Driver Separate Args(3) - - seg1addr - Driver Separate - - segcreate - Driver Separate Args(3) - - segprot - Driver Separate Args(3) - - segs_read_only_addr - Driver Separate - - segs_read_write_addr - Driver Separate - - sub_library - Driver Separate - - sub_umbrella - Driver Separate - - ; Certain aspects of code-gen may be improved / adjusted if the version of ld64 - ; is sufficiently modern. - mtarget-linker - Target RejectNegative Joined Separate Report Var(darwin_target_linker) Init(LD64_VERSION) - The version of ld64 in use for this toolchain. - - undefined - Driver Separate --- 485,487 ---- diff -Nrcpad gcc-7.4.0/gcc/config/darwin10.h gcc-7.5.0/gcc/config/darwin10.h *** gcc-7.4.0/gcc/config/darwin10.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/config/darwin10.h Tue Oct 29 19:46:05 2019 *************** You should have received a copy of the G *** 18,34 **** along with GCC; see the file COPYING3. If not see . */ ! /* Fix PR41260 by passing -no_compact_unwind on darwin10 and later until ! unwinder in libSystem is fixed to digest new epilog unwinding notes. - Fix PR47558 by linking against libSystem ahead of libgcc_ext. */ #undef LINK_GCC_C_SEQUENCE_SPEC #define LINK_GCC_C_SEQUENCE_SPEC \ ! "%:version-compare(>= 10.6 mmacosx-version-min= -no_compact_unwind) \ ! %{!static:%{!static-libgcc: \ ! %:version-compare(>= 10.6 mmacosx-version-min= -lSystem) } } \ ! %{fno-pic|fno-PIC|fno-pie|fno-PIE|fapple-kext|mkernel|static|mdynamic-no-pic: \ ! %:version-compare(>= 10.7 mmacosx-version-min= -no_pie) } %G %L" #undef DEF_MIN_OSX_VERSION #define DEF_MIN_OSX_VERSION "10.6" --- 18,30 ---- along with GCC; see the file COPYING3. If not see . */ ! /* Fix PR47558 by linking against libSystem ahead of libgcc_ext. */ #undef LINK_GCC_C_SEQUENCE_SPEC #define LINK_GCC_C_SEQUENCE_SPEC \ ! "%{!static:%{!static-libgcc: \ ! %:version-compare(>= 10.6 mmacosx-version-min= -lSystem) } } \ ! %G %L" #undef DEF_MIN_OSX_VERSION #define DEF_MIN_OSX_VERSION "10.6" diff -Nrcpad gcc-7.4.0/gcc/config/darwin9.h gcc-7.5.0/gcc/config/darwin9.h *** gcc-7.4.0/gcc/config/darwin9.h Mon Jan 16 21:33:07 2017 --- gcc-7.5.0/gcc/config/darwin9.h Tue Oct 29 19:46:05 2019 *************** along with GCC; see the file COPYING3. *** 35,46 **** /* Tell collect2 to run dsymutil for us as necessary. */ #define COLLECT_RUN_DSYMUTIL 1 - #undef DARWIN_PIE_SPEC - #define DARWIN_PIE_SPEC \ - "%{fpie|pie|fPIE: \ - %{mdynamic-no-pic: %n'-mdynamic-no-pic' overrides '-pie', '-fpie' or '-fPIE'; \ - :-pie}}" - /* Only ask as for debug data if the debug style is stabs (since as doesn't yet generate dwarf.) */ --- 35,40 ---- diff -Nrcpad gcc-7.4.0/gcc/config/i386/avx2intrin.h gcc-7.5.0/gcc/config/i386/avx2intrin.h *** gcc-7.4.0/gcc/config/i386/avx2intrin.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/config/i386/avx2intrin.h Mon Sep 9 11:43:08 2019 *************** extern __inline __m256i *** 258,264 **** __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm256_cmpgt_epi8 (__m256i __A, __m256i __B) { ! return (__m256i) ((__v32qi)__A > (__v32qi)__B); } extern __inline __m256i --- 258,264 ---- __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm256_cmpgt_epi8 (__m256i __A, __m256i __B) { ! return (__m256i) ((__v32qs)__A > (__v32qs)__B); } extern __inline __m256i diff -Nrcpad gcc-7.4.0/gcc/config/i386/avxintrin.h gcc-7.5.0/gcc/config/i386/avxintrin.h *** gcc-7.4.0/gcc/config/i386/avxintrin.h Fri Apr 7 19:22:00 2017 --- gcc-7.5.0/gcc/config/i386/avxintrin.h Mon Sep 9 11:43:08 2019 *************** typedef unsigned int __v8su __attribute_ *** 47,52 **** --- 47,53 ---- typedef short __v16hi __attribute__ ((__vector_size__ (32))); typedef unsigned short __v16hu __attribute__ ((__vector_size__ (32))); typedef char __v32qi __attribute__ ((__vector_size__ (32))); + typedef signed char __v32qs __attribute__ ((__vector_size__ (32))); typedef unsigned char __v32qu __attribute__ ((__vector_size__ (32))); /* The Intel API is flexible enough that we must allow aliasing with other diff -Nrcpad gcc-7.4.0/gcc/config/i386/cpuid.h gcc-7.5.0/gcc/config/i386/cpuid.h *** gcc-7.4.0/gcc/config/i386/cpuid.h Thu Jun 22 11:40:43 2017 --- gcc-7.5.0/gcc/config/i386/cpuid.h Thu May 23 04:55:40 2019 *************** *** 167,176 **** --- 167,193 ---- #define signature_VORTEX_ecx 0x436f5320 #define signature_VORTEX_edx 0x36387865 + #ifndef __x86_64__ + /* At least one cpu (Winchip 2) does not set %ebx and %ecx + for cpuid leaf 1. Forcibly zero the two registers before + calling cpuid as a precaution. */ + #define __cpuid(level, a, b, c, d) \ + do { \ + if (__builtin_constant_p (level) && (level) != 1) \ + __asm__ ("cpuid\n\t" \ + : "=a" (a), "=b" (b), "=c" (c), "=d" (d) \ + : "0" (level)); \ + else \ + __asm__ ("cpuid\n\t" \ + : "=a" (a), "=b" (b), "=c" (c), "=d" (d) \ + : "0" (level), "1" (0), "2" (0)); \ + } while (0) + #else #define __cpuid(level, a, b, c, d) \ __asm__ ("cpuid\n\t" \ : "=a" (a), "=b" (b), "=c" (c), "=d" (d) \ : "0" (level)) + #endif #define __cpuid_count(level, count, a, b, c, d) \ __asm__ ("cpuid\n\t" \ diff -Nrcpad gcc-7.4.0/gcc/config/i386/darwin.h gcc-7.5.0/gcc/config/i386/darwin.h *** gcc-7.4.0/gcc/config/i386/darwin.h Sun Nov 18 21:36:30 2018 --- gcc-7.5.0/gcc/config/i386/darwin.h Fri Nov 1 20:30:26 2019 *************** along with GCC; see the file COPYING3. *** 39,44 **** --- 39,71 ---- #endif #endif + /* WORKAROUND pr80556: + For x86_64 Darwin10 and later, the unwinder is in libunwind (redirected + from libSystem). This doesn't use the keymgr (see keymgr.c) and therefore + the calls that libgcc makes to obtain the KEYMGR_GCC3_DW2_OBJ_LIST are not + updated to include new images, and might not even be valid for a single + image. + Therefore, for 64b exes at least, we must use the libunwind implementation, + even when static-libgcc is specified. We put libSystem first so that + unwinder symbols are satisfied from there. + We default to 64b for single-arch builds, so apply this unconditionally. */ + #undef REAL_LIBGCC_SPEC + #define REAL_LIBGCC_SPEC \ + "%{static-libgcc|static: \ + %:version-compare(>= 10.6 mmacosx-version-min= -lSystem) \ + -lgcc_eh -lgcc; \ + shared-libgcc|fexceptions|fgnu-runtime: \ + %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_s.10.4) \ + %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ + %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ + %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ + -lgcc ; \ + :%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \ + %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ + %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ + %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ + -lgcc }" + /* Size of the Obj-C jump buffer. */ #define OBJC_JBLEN ((TARGET_64BIT) ? ((9 * 2) + 3 + 16) : (18)) *************** along with GCC; see the file COPYING3. *** 62,75 **** #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE 32 ! /* Generate branch islands stubs if this is true. */ ! extern int darwin_emit_branch_islands; ! ! #undef TARGET_MACHO_BRANCH_ISLANDS ! #define TARGET_MACHO_BRANCH_ISLANDS darwin_emit_branch_islands /* For compatibility with OSX system tools, use the new style of pic stub ! if this is set. */ #undef MACHOPIC_ATT_STUB #define MACHOPIC_ATT_STUB (darwin_macho_att_stub) --- 89,100 ---- #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE 32 ! /* Generate pic symbol indirection stubs if this is true. */ ! #undef TARGET_MACHO_SYMBOL_STUBS ! #define TARGET_MACHO_SYMBOL_STUBS (darwin_symbol_stubs) /* For compatibility with OSX system tools, use the new style of pic stub ! if this is set (default). */ #undef MACHOPIC_ATT_STUB #define MACHOPIC_ATT_STUB (darwin_macho_att_stub) *************** extern int darwin_emit_branch_islands; *** 85,93 **** /* On Darwin, the stack is 128-bit aligned at the point of every call. Failure to ensure this will lead to a crash in the system libraries or dynamic loader. */ - #undef STACK_BOUNDARY - #define STACK_BOUNDARY \ - ((profile_flag || TARGET_64BIT_MS_ABI) ? 128 : BITS_PER_WORD) #undef MAIN_STACK_BOUNDARY #define MAIN_STACK_BOUNDARY 128 --- 110,115 ---- *************** extern int darwin_emit_branch_islands; *** 107,113 **** #undef CC1_SPEC #define CC1_SPEC "%(cc1_cpu) \ %{!mkernel:%{!static:%{!mdynamic-no-pic:-fPIC}}} \ ! %{g: %{!fno-eliminate-unused-debug-symbols: -feliminate-unused-debug-symbols }} " \ DARWIN_CC1_SPEC #undef ASM_SPEC --- 129,136 ---- #undef CC1_SPEC #define CC1_SPEC "%(cc1_cpu) \ %{!mkernel:%{!static:%{!mdynamic-no-pic:-fPIC}}} \ ! %{g: %{!fno-eliminate-unused-debug-symbols: -feliminate-unused-debug-symbols }} \ ! %{mx32:%eDarwin is not an mx32 platform}" \ DARWIN_CC1_SPEC #undef ASM_SPEC *************** extern int darwin_emit_branch_islands; *** 115,123 **** " ASM_OPTIONS " -force_cpusubtype_ALL \ %{static}" ASM_MMACOSX_VERSION_MIN_SPEC - #define DARWIN_ARCH_SPEC "%{m64:x86_64;:i386}" - #define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC - #undef ENDFILE_SPEC #define ENDFILE_SPEC \ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \ --- 138,143 ---- *************** extern int darwin_emit_branch_islands; *** 125,136 **** %{mpc64:crtprec64.o%s} \ %{mpc80:crtprec80.o%s}" TM_DESTRUCTOR #undef SUBTARGET_EXTRA_SPECS #define SUBTARGET_EXTRA_SPECS \ DARWIN_EXTRA_SPECS \ ! { "darwin_arch", DARWIN_ARCH_SPEC }, \ { "darwin_crt2", "" }, \ ! { "darwin_subarch", DARWIN_SUBARCH_SPEC }, /* The Darwin assembler mostly follows AT&T syntax. */ #undef ASSEMBLER_DIALECT --- 145,159 ---- %{mpc64:crtprec64.o%s} \ %{mpc80:crtprec80.o%s}" TM_DESTRUCTOR + /* We default to x86_64 for single-arch builds, bi-arch overrides. */ + #define DARWIN_ARCH_SPEC "x86_64" + #undef SUBTARGET_EXTRA_SPECS #define SUBTARGET_EXTRA_SPECS \ DARWIN_EXTRA_SPECS \ ! { "darwin_arch", DARWIN_ARCH_SPEC }, \ { "darwin_crt2", "" }, \ ! { "darwin_subarch", DARWIN_ARCH_SPEC }, /* The Darwin assembler mostly follows AT&T syntax. */ #undef ASSEMBLER_DIALECT *************** extern int darwin_emit_branch_islands; *** 196,214 **** } \ } while (0) /* Darwin profiling -- call mcount. */ #undef FUNCTION_PROFILER #define FUNCTION_PROFILER(FILE, LABELNO) \ ! do { \ ! if (TARGET_MACHO_BRANCH_ISLANDS \ ! && MACHOPIC_INDIRECT && !TARGET_64BIT) \ ! { \ ! const char *name = machopic_mcount_stub_name (); \ ! fprintf (FILE, "\tcall %s\n", name+1); /* skip '&' */ \ ! machopic_validate_stub_or_non_lazy_ptr (name); \ ! } \ ! else fprintf (FILE, "\tcall mcount\n"); \ ! } while (0) #define C_COMMON_OVERRIDE_OPTIONS \ do { \ --- 219,254 ---- } \ } while (0) + #ifdef HAVE_GAS_MAX_SKIP_P2ALIGN + #define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \ + do { \ + if ((LOG) != 0) { \ + if ((MAX_SKIP) == 0 || (MAX_SKIP) >= (1 << (LOG)) - 1) \ + fprintf ((FILE), "\t.p2align %d\n", (LOG)); \ + else \ + fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \ + } \ + } while (0) + #endif + + /* Darwin x86 assemblers support the .ident directive. */ + + #undef TARGET_ASM_OUTPUT_IDENT + #define TARGET_ASM_OUTPUT_IDENT default_asm_output_ident_directive + /* Darwin profiling -- call mcount. */ #undef FUNCTION_PROFILER #define FUNCTION_PROFILER(FILE, LABELNO) \ ! do { \ ! if (TARGET_MACHO_SYMBOL_STUBS \ ! && MACHOPIC_INDIRECT && !TARGET_64BIT) \ ! { \ ! const char *name = machopic_mcount_stub_name (); \ ! fprintf (FILE, "\tcall %s\n", name+1); /* skip '&' */ \ ! machopic_validate_stub_or_non_lazy_ptr (name); \ ! } \ ! else fprintf (FILE, "\tcall mcount\n"); \ ! } while (0) #define C_COMMON_OVERRIDE_OPTIONS \ do { \ *************** do { \ *** 281,290 **** } \ } ! /* This needs to move since i386 uses the first flag and other flags are ! used in Mach-O. */ ! #undef MACHO_SYMBOL_FLAG_VARIABLE ! #define MACHO_SYMBOL_FLAG_VARIABLE ((SYMBOL_FLAG_MACH_DEP) << 3) #undef MACHOPIC_NL_SYMBOL_PTR_SECTION #define MACHOPIC_NL_SYMBOL_PTR_SECTION \ --- 321,328 ---- } \ } ! /* First available SYMBOL flag bit for use by subtargets. */ ! #define SYMBOL_FLAG_SUBT_DEP (SYMBOL_FLAG_MACH_DEP << 5) #undef MACHOPIC_NL_SYMBOL_PTR_SECTION #define MACHOPIC_NL_SYMBOL_PTR_SECTION \ diff -Nrcpad gcc-7.4.0/gcc/config/i386/darwin32-biarch.h gcc-7.5.0/gcc/config/i386/darwin32-biarch.h *** gcc-7.4.0/gcc/config/i386/darwin32-biarch.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/config/i386/darwin32-biarch.h Thu Sep 5 19:14:35 2019 *************** *** 0 **** --- 1,58 ---- + /* Target definitions for i386 running Darwin with a 32b host and supporting + a 64b multilib. + Copyright (C) 2019 Free Software Foundation, Inc. + + 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 + . */ + + #undef DARWIN_ARCH_SPEC + #define DARWIN_ARCH_SPEC "%{m64:x86_64;:i386}" + + /* WORKAROUND pr80556: + For x86_64 Darwin10 and later, the unwinder is in libunwind (redirected + from libSystem). This doesn't use the keymgr (see keymgr.c) and therefore + the calls that libgcc makes to obtain the KEYMGR_GCC3_DW2_OBJ_LIST are not + updated to include new images, and might not even be valid for a single + image. + Therefore, for 64b exes at least, we must use the libunwind implementation, + even when static-libgcc is specified. We put libSystem first so that + unwinder symbols are satisfied from there. */ + #undef REAL_LIBGCC_SPEC + #define REAL_LIBGCC_SPEC \ + "%{static-libgcc|static: \ + %{m64:%:version-compare(>= 10.6 mmacosx-version-min= -lSystem)} \ + -lgcc_eh -lgcc; \ + shared-libgcc|fexceptions|fgnu-runtime: \ + %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_s.10.4) \ + %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ + %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ + %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ + -lgcc ; \ + :%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \ + %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ + %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ + %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ + -lgcc }" + + #undef DARWIN_SUBARCH_SPEC + #define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC + + #undef SUBTARGET_EXTRA_SPECS + #define SUBTARGET_EXTRA_SPECS \ + DARWIN_EXTRA_SPECS \ + { "darwin_arch", DARWIN_ARCH_SPEC }, \ + { "darwin_crt2", "" }, \ + { "darwin_subarch", DARWIN_SUBARCH_SPEC }, diff -Nrcpad gcc-7.4.0/gcc/config/i386/darwin64-biarch.h gcc-7.5.0/gcc/config/i386/darwin64-biarch.h *** gcc-7.4.0/gcc/config/i386/darwin64-biarch.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/config/i386/darwin64-biarch.h Thu Sep 5 19:14:35 2019 *************** *** 0 **** --- 1,59 ---- + /* Target definitions for x86_64 running Darwin with a 64b host supporting a + 32b multilib. + Copyright (C) 2006-2019 Free Software Foundation, Inc. + Contributed by Apple Computer Inc. + + 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 + . */ + + #undef DARWIN_ARCH_SPEC + #define DARWIN_ARCH_SPEC "%{m32:i386;:x86_64}" + + /* WORKAROUND pr80556: + For x86_64 Darwin10 and later, the unwinder is in libunwind (redirected + from libSystem). This doesn't use the keymgr (see keymgr.c) and therefore + the calls that libgcc makes to obtain the KEYMGR_GCC3_DW2_OBJ_LIST are not + updated to include new images, and might not even be valid for a single + image. + Therefore, for 64b exes at least, we must use the libunwind implementation, + even when static-libgcc is specified. We put libSystem first so that + unwinder symbols are satisfied from there. */ + #undef REAL_LIBGCC_SPEC + #define REAL_LIBGCC_SPEC \ + "%{static-libgcc|static: \ + %{!m32:%:version-compare(>= 10.6 mmacosx-version-min= -lSystem)} \ + -lgcc_eh -lgcc; \ + shared-libgcc|fexceptions|fgnu-runtime: \ + %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_s.10.4) \ + %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ + %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ + %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ + -lgcc ; \ + :%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \ + %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ + %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ + %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ + -lgcc }" + + #undef DARWIN_SUBARCH_SPEC + #define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC + + #undef SUBTARGET_EXTRA_SPECS + #define SUBTARGET_EXTRA_SPECS \ + DARWIN_EXTRA_SPECS \ + { "darwin_arch", DARWIN_ARCH_SPEC }, \ + { "darwin_crt2", "" }, \ + { "darwin_subarch", DARWIN_SUBARCH_SPEC }, diff -Nrcpad gcc-7.4.0/gcc/config/i386/darwin64.h gcc-7.5.0/gcc/config/i386/darwin64.h *** gcc-7.4.0/gcc/config/i386/darwin64.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/config/i386/darwin64.h Thu Jan 1 00:00:00 1970 *************** *** 1,32 **** - /* Target definitions for x86_64 running Darwin. - Copyright (C) 2006-2017 Free Software Foundation, Inc. - Contributed by Apple Computer Inc. - - 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 - . */ - - #undef DARWIN_ARCH_SPEC - #define DARWIN_ARCH_SPEC "%{m32:i386;:x86_64}" - - #undef DARWIN_SUBARCH_SPEC - #define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC - - #undef SUBTARGET_EXTRA_SPECS - #define SUBTARGET_EXTRA_SPECS \ - DARWIN_EXTRA_SPECS \ - { "darwin_arch", DARWIN_ARCH_SPEC }, \ - { "darwin_crt2", "" }, \ - { "darwin_subarch", DARWIN_SUBARCH_SPEC }, --- 0 ---- diff -Nrcpad gcc-7.4.0/gcc/config/i386/emmintrin.h gcc-7.5.0/gcc/config/i386/emmintrin.h *** gcc-7.4.0/gcc/config/i386/emmintrin.h Tue Nov 20 14:35:43 2018 --- gcc-7.5.0/gcc/config/i386/emmintrin.h Mon Sep 9 11:44:17 2019 *************** _mm_xor_si128 (__m128i __A, __m128i __B) *** 1296,1302 **** extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_cmpeq_epi8 (__m128i __A, __m128i __B) { ! return (__m128i) ((__v16qs)__A == (__v16qs)__B); } extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) --- 1296,1302 ---- extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_cmpeq_epi8 (__m128i __A, __m128i __B) { ! return (__m128i) ((__v16qi)__A == (__v16qi)__B); } extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) diff -Nrcpad gcc-7.4.0/gcc/config/i386/i386-builtin.def gcc-7.5.0/gcc/config/i386/i386-builtin.def *** gcc-7.4.0/gcc/config/i386/i386-builtin.def Fri Oct 12 14:55:17 2018 --- gcc-7.5.0/gcc/config/i386/i386-builtin.def Sun Aug 25 19:51:45 2019 *************** BDESC (OPTION_MASK_ISA_SSE3, CODE_FOR_ss *** 766,776 **** /* SSSE3 */ BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv16qi2, "__builtin_ia32_pabsb128", IX86_BUILTIN_PABSB128, UNKNOWN, (int) V16QI_FTYPE_V16QI) ! BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv8qi2, "__builtin_ia32_pabsb", IX86_BUILTIN_PABSB, UNKNOWN, (int) V8QI_FTYPE_V8QI) BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv8hi2, "__builtin_ia32_pabsw128", IX86_BUILTIN_PABSW128, UNKNOWN, (int) V8HI_FTYPE_V8HI) ! BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv4hi2, "__builtin_ia32_pabsw", IX86_BUILTIN_PABSW, UNKNOWN, (int) V4HI_FTYPE_V4HI) BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv4si2, "__builtin_ia32_pabsd128", IX86_BUILTIN_PABSD128, UNKNOWN, (int) V4SI_FTYPE_V4SI) ! BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv2si2, "__builtin_ia32_pabsd", IX86_BUILTIN_PABSD, UNKNOWN, (int) V2SI_FTYPE_V2SI) BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phaddwv8hi3, "__builtin_ia32_phaddw128", IX86_BUILTIN_PHADDW128, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI) BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phaddwv4hi3, "__builtin_ia32_phaddw", IX86_BUILTIN_PHADDW, UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI) --- 766,776 ---- /* SSSE3 */ BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv16qi2, "__builtin_ia32_pabsb128", IX86_BUILTIN_PABSB128, UNKNOWN, (int) V16QI_FTYPE_V16QI) ! BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_absv8qi2, "__builtin_ia32_pabsb", IX86_BUILTIN_PABSB, UNKNOWN, (int) V8QI_FTYPE_V8QI) BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv8hi2, "__builtin_ia32_pabsw128", IX86_BUILTIN_PABSW128, UNKNOWN, (int) V8HI_FTYPE_V8HI) ! BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_absv4hi2, "__builtin_ia32_pabsw", IX86_BUILTIN_PABSW, UNKNOWN, (int) V4HI_FTYPE_V4HI) BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv4si2, "__builtin_ia32_pabsd128", IX86_BUILTIN_PABSD128, UNKNOWN, (int) V4SI_FTYPE_V4SI) ! BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_absv2si2, "__builtin_ia32_pabsd", IX86_BUILTIN_PABSD, UNKNOWN, (int) V2SI_FTYPE_V2SI) BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phaddwv8hi3, "__builtin_ia32_phaddw128", IX86_BUILTIN_PHADDW128, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI) BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phaddwv4hi3, "__builtin_ia32_phaddw", IX86_BUILTIN_PHADDW, UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI) diff -Nrcpad gcc-7.4.0/gcc/config/i386/i386.c gcc-7.5.0/gcc/config/i386/i386.c *** gcc-7.4.0/gcc/config/i386/i386.c Tue Oct 9 17:23:06 2018 --- gcc-7.5.0/gcc/config/i386/i386.c Fri Nov 1 20:30:26 2019 *************** ix86_option_override_internal (bool main *** 6282,6287 **** --- 6282,6293 ---- target_option_default_node = target_option_current_node = build_target_option_node (opts); + /* PR86952: jump table usage with retpolines is slow. + The PR provides some numbers about the slowness. */ + if (ix86_indirect_branch != indirect_branch_keep + && !opts_set->x_flag_jump_tables) + opts->x_flag_jump_tables = 0; + return true; } *************** ix86_compute_frame_layout (void) *** 12788,12797 **** /* 64-bit MS ABI seem to require stack alignment to be always 16, except for function prologues, leaf functions and when the defult incoming stack boundary is overriden at command line or via ! force_align_arg_pointer attribute. */ ! if ((TARGET_64BIT_MS_ABI && crtl->preferred_stack_boundary < 128) && (!crtl->is_leaf || cfun->calls_alloca != 0 || ix86_current_function_calls_tls_descriptor || ix86_incoming_stack_boundary < 128)) { crtl->preferred_stack_boundary = 128; --- 12794,12809 ---- /* 64-bit MS ABI seem to require stack alignment to be always 16, except for function prologues, leaf functions and when the defult incoming stack boundary is overriden at command line or via ! force_align_arg_pointer attribute. ! ! Darwin's ABI specifies 128b alignment for both 32 and 64 bit variants ! at call sites, including profile function calls. ! */ ! if (((TARGET_64BIT_MS_ABI || TARGET_MACHO) ! && crtl->preferred_stack_boundary < 128) && (!crtl->is_leaf || cfun->calls_alloca != 0 || ix86_current_function_calls_tls_descriptor + || (TARGET_MACHO && crtl->profile) || ix86_incoming_stack_boundary < 128)) { crtl->preferred_stack_boundary = 128; *************** ix86_expand_prologue (void) *** 14493,14500 **** } m->fs.sp_offset += allocate; ! /* Use stack_pointer_rtx for relative addressing so that code ! works for realigned stack, too. */ if (r10_live && eax_live) { t = gen_rtx_PLUS (Pmode, stack_pointer_rtx, eax); --- 14505,14513 ---- } m->fs.sp_offset += allocate; ! /* Use stack_pointer_rtx for relative addressing so that code works for ! realigned stack. But this means that we need a blockage to prevent ! stores based on the frame pointer from being scheduled before. */ if (r10_live && eax_live) { t = gen_rtx_PLUS (Pmode, stack_pointer_rtx, eax); *************** ix86_expand_prologue (void) *** 14503,14508 **** --- 14516,14522 ---- t = plus_constant (Pmode, t, UNITS_PER_WORD); emit_move_insn (gen_rtx_REG (word_mode, AX_REG), gen_frame_mem (word_mode, t)); + emit_insn (gen_memory_blockage ()); } else if (eax_live || r10_live) { *************** ix86_expand_prologue (void) *** 14510,14515 **** --- 14524,14530 ---- emit_move_insn (gen_rtx_REG (word_mode, (eax_live ? AX_REG : R10_REG)), gen_frame_mem (word_mode, t)); + emit_insn (gen_memory_blockage ()); } } gcc_assert (m->fs.sp_offset == frame.stack_pointer_offset); *************** output_pic_addr_const (FILE *file, rtx x *** 17379,17385 **** break; case SYMBOL_REF: ! if (TARGET_64BIT || ! TARGET_MACHO_BRANCH_ISLANDS) output_addr_const (file, x); else { --- 17394,17400 ---- break; case SYMBOL_REF: ! if (TARGET_64BIT || ! TARGET_MACHO_SYMBOL_STUBS) output_addr_const (file, x); else { *************** print_reg (rtx x, int code, FILE *file) *** 18164,18169 **** --- 18179,18185 ---- ~ -- print "i" if TARGET_AVX2, "f" otherwise. @ -- print a segment register of thread base pointer load ^ -- print addr32 prefix if TARGET_64BIT and Pmode != word_mode + M -- print addr32 prefix for TARGET_X32 with VSIB address. ! -- print MPX prefix for jxx/call/ret instructions if required. */ *************** ix86_print_operand (FILE *file, rtx x, i *** 18723,18728 **** --- 18739,18764 ---- putc (TARGET_AVX2 ? 'i' : 'f', file); return; + case 'M': + if (TARGET_X32) + { + /* NB: 32-bit indices in VSIB address are sign-extended + to 64 bits. In x32, if 32-bit address 0xf7fa3010 is + sign-extended to 0xfffffffff7fa3010 which is invalid + address. Add addr32 prefix if there is no base + register nor symbol. */ + bool ok; + struct ix86_address parts; + ok = ix86_decompose_address (x, &parts); + gcc_assert (ok && parts.index == NULL_RTX); + if (parts.base == NULL_RTX + && (parts.disp == NULL_RTX + || !symbolic_operand (parts.disp, + GET_MODE (parts.disp)))) + fputs ("addr32 ", file); + } + return; + case '^': if (TARGET_64BIT && Pmode != word_mode) fputs ("addr32 ", file); *************** ix86_expand_sse_fp_minmax (rtx dest, enu *** 24111,24116 **** --- 24147,24154 ---- else { code = is_min ? SMIN : SMAX; + if (MEM_P (if_true) && MEM_P (if_false)) + if_true = force_reg (mode, if_true); tmp = gen_rtx_fmt_ee (code, mode, if_true, if_false); } *************** ix86_expand_sse_fp_minmax (rtx dest, enu *** 24118,24124 **** return true; } ! /* Expand an sse vector comparison. Return the register with the result. */ static rtx ix86_expand_sse_cmp (rtx dest, enum rtx_code code, rtx cmp_op0, rtx cmp_op1, --- 24156,24162 ---- return true; } ! /* Expand an SSE comparison. Return the register with the result. */ static rtx ix86_expand_sse_cmp (rtx dest, enum rtx_code code, rtx cmp_op0, rtx cmp_op1, *************** ix86_expand_sse_cmp (rtx dest, enum rtx_ *** 24144,24152 **** else cmp_mode = cmp_ops_mode; - cmp_op0 = force_reg (cmp_ops_mode, cmp_op0); ! if (!nonimmediate_operand (cmp_op1, cmp_ops_mode)) cmp_op1 = force_reg (cmp_ops_mode, cmp_op1); if (optimize --- 24182,24193 ---- else cmp_mode = cmp_ops_mode; cmp_op0 = force_reg (cmp_ops_mode, cmp_op0); ! ! int (*op1_predicate)(rtx, machine_mode) ! = VECTOR_MODE_P (cmp_ops_mode) ? vector_operand : nonimmediate_operand; ! ! if (!op1_predicate (cmp_op1, cmp_ops_mode)) cmp_op1 = force_reg (cmp_ops_mode, cmp_op1); if (optimize *************** ix86_expand_sse_movcc (rtx dest, rtx cmp *** 24266,24272 **** rtx (*gen) (rtx, rtx, rtx, rtx) = NULL; rtx d = dest; ! if (!nonimmediate_operand (op_true, mode)) op_true = force_reg (mode, op_true); op_false = force_reg (mode, op_false); --- 24307,24313 ---- rtx (*gen) (rtx, rtx, rtx, rtx) = NULL; rtx d = dest; ! if (!vector_operand (op_true, mode)) op_true = force_reg (mode, op_true); op_false = force_reg (mode, op_false); *************** ix86_nopic_noplt_attribute_p (rtx call_o *** 28821,28826 **** --- 28862,28886 ---- return false; } + /* Helper to output the jmp/call. */ + static void + ix86_output_jmp_thunk_or_indirect (const char *thunk_name, + bool need_bnd_p, + const int regno) + { + if (thunk_name != NULL) + { + if (need_bnd_p) + fprintf (asm_out_file, "\tbnd jmp\t"); + else + fprintf (asm_out_file, "\tjmp\t"); + assemble_name (asm_out_file, thunk_name); + putc ('\n', asm_out_file); + } + else + output_indirect_thunk (need_bnd_p, regno); + } + /* Output indirect branch via a call and return thunk. CALL_OP is a register which contains the branch target. XASM is the assembly template for CALL_OP. Branch is a tail call if SIBCALL_P is true. *************** ix86_output_indirect_branch_via_reg (rtx *** 28861,28885 **** thunk_name = NULL; if (sibcall_p) ! { ! if (thunk_name != NULL) ! { ! if (need_bnd_p) ! fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); ! else ! fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); ! } ! else ! output_indirect_thunk (need_bnd_p, regno); ! } else { if (thunk_name != NULL) { if (need_bnd_p) ! fprintf (asm_out_file, "\tbnd call\t%s\n", thunk_name); else ! fprintf (asm_out_file, "\tcall\t%s\n", thunk_name); return; } --- 28921,28937 ---- thunk_name = NULL; if (sibcall_p) ! ix86_output_jmp_thunk_or_indirect (thunk_name, need_bnd_p, regno); else { if (thunk_name != NULL) { if (need_bnd_p) ! fprintf (asm_out_file, "\tbnd call\t"); else ! fprintf (asm_out_file, "\tcall\t"); ! assemble_name (asm_out_file, thunk_name); ! putc ('\n', asm_out_file); return; } *************** ix86_output_indirect_branch_via_reg (rtx *** 28903,28917 **** ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel1); ! if (thunk_name != NULL) ! { ! if (need_bnd_p) ! fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); ! else ! fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); ! } ! else ! output_indirect_thunk (need_bnd_p, regno); ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2); --- 28955,28961 ---- ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel1); ! ix86_output_jmp_thunk_or_indirect (thunk_name, need_bnd_p, regno); ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2); *************** ix86_output_indirect_branch_via_push (rt *** 28975,28989 **** if (sibcall_p) { output_asm_insn (push_buf, &call_op); ! if (thunk_name != NULL) ! { ! if (need_bnd_p) ! fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); ! else ! fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); ! } ! else ! output_indirect_thunk (need_bnd_p, regno); } else { --- 29019,29025 ---- if (sibcall_p) { output_asm_insn (push_buf, &call_op); ! ix86_output_jmp_thunk_or_indirect (thunk_name, need_bnd_p, regno); } else { *************** ix86_output_indirect_branch_via_push (rt *** 29042,29056 **** output_asm_insn (push_buf, &call_op); ! if (thunk_name != NULL) ! { ! if (need_bnd_p) ! fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); ! else ! fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); ! } ! else ! output_indirect_thunk (need_bnd_p, regno); ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2); --- 29078,29084 ---- output_asm_insn (push_buf, &call_op); ! ix86_output_jmp_thunk_or_indirect (thunk_name, need_bnd_p, regno); ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2); *************** ix86_output_function_return (bool long_p *** 29118,29130 **** if (need_bnd_p) { indirect_return_bnd_needed |= need_thunk; ! fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); } else { indirect_return_needed |= need_thunk; ! fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); } } else output_indirect_thunk (need_bnd_p, INVALID_REGNUM); --- 29146,29160 ---- if (need_bnd_p) { indirect_return_bnd_needed |= need_thunk; ! fprintf (asm_out_file, "\tbnd jmp\t"); } else { indirect_return_needed |= need_thunk; ! fprintf (asm_out_file, "\tjmp\t"); } + assemble_name (asm_out_file, thunk_name); + putc ('\n', asm_out_file); } else output_indirect_thunk (need_bnd_p, INVALID_REGNUM); *************** ix86_output_indirect_function_return (rt *** 29164,29170 **** indirect_return_via_cx_bnd = true; indirect_thunks_bnd_used |= 1 << CX_REG; } ! fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); } else { --- 29194,29200 ---- indirect_return_via_cx_bnd = true; indirect_thunks_bnd_used |= 1 << CX_REG; } ! fprintf (asm_out_file, "\tbnd jmp\t"); } else { *************** ix86_output_indirect_function_return (rt *** 29173,29180 **** indirect_return_via_cx = true; indirect_thunks_used |= 1 << CX_REG; } ! fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); } } else output_indirect_thunk (need_bnd_p, regno); --- 29203,29212 ---- indirect_return_via_cx = true; indirect_thunks_used |= 1 << CX_REG; } ! fprintf (asm_out_file, "\tjmp\t"); } + assemble_name (asm_out_file, thunk_name); + putc ('\n', asm_out_file); } else output_indirect_thunk (need_bnd_p, regno); *************** ix86_expand_builtin (tree exp, rtx targe *** 38388,38393 **** --- 38420,38435 ---- unsigned char lsb_index = INTVAL (op1) & 0xFF; op1 = GEN_INT (length); op2 = GEN_INT (lsb_index); + + mode1 = insn_data[icode].operand[1].mode; + if (!insn_data[icode].operand[1].predicate (op0, mode1)) + op0 = copy_to_mode_reg (mode1, op0); + + mode0 = insn_data[icode].operand[0].mode; + if (target == 0 + || !register_operand (target, mode0)) + target = gen_reg_rtx (mode0); + pat = GEN_FCN (icode) (target, op0, op1, op2); if (pat) emit_insn (pat); *************** ix86_vectorize_builtin_scatter (const_tr *** 40478,40484 **** static bool use_rsqrt_p () { ! return (TARGET_SSE_MATH && flag_finite_math_only && !flag_trapping_math && flag_unsafe_math_optimizations); --- 40520,40526 ---- static bool use_rsqrt_p () { ! return (TARGET_SSE && TARGET_SSE_MATH && flag_finite_math_only && !flag_trapping_math && flag_unsafe_math_optimizations); *************** ix86_expand_floorceildf_32 (rtx operand0 *** 46176,46183 **** x2 -= 1; Compensate. Ceil: if (x2 < x) ! x2 -= -1; ! return x2; */ machine_mode mode = GET_MODE (operand0); rtx xa, TWO52, tmp, one, res, mask; --- 46218,46227 ---- x2 -= 1; Compensate. Ceil: if (x2 < x) ! x2 += 1; ! if (HONOR_SIGNED_ZEROS (mode)) ! x2 = copysign (x2, x); ! return x2; */ machine_mode mode = GET_MODE (operand0); rtx xa, TWO52, tmp, one, res, mask; *************** ix86_expand_floorceildf_32 (rtx operand0 *** 46203,46219 **** /* xa = copysign (xa, operand1) */ ix86_sse_copysign_to_positive (xa, xa, res, mask); ! /* generate 1.0 or -1.0 */ ! one = force_reg (mode, ! const_double_from_real_value (do_floor ! ? dconst1 : dconstm1, mode)); /* Compensate: xa = xa - (xa > operand1 ? 1 : 0) */ tmp = ix86_expand_sse_compare_mask (UNGT, xa, res, !do_floor); emit_insn (gen_rtx_SET (tmp, gen_rtx_AND (mode, one, tmp))); ! /* We always need to subtract here to preserve signed zero. */ ! tmp = expand_simple_binop (mode, MINUS, xa, tmp, NULL_RTX, 0, OPTAB_DIRECT); emit_move_insn (res, tmp); emit_label (label); --- 46247,46262 ---- /* xa = copysign (xa, operand1) */ ix86_sse_copysign_to_positive (xa, xa, res, mask); ! /* generate 1.0 */ ! one = force_reg (mode, const_double_from_real_value (dconst1, mode)); /* Compensate: xa = xa - (xa > operand1 ? 1 : 0) */ tmp = ix86_expand_sse_compare_mask (UNGT, xa, res, !do_floor); emit_insn (gen_rtx_SET (tmp, gen_rtx_AND (mode, one, tmp))); ! tmp = expand_simple_binop (mode, do_floor ? MINUS : PLUS, xa, tmp, NULL_RTX, 0, OPTAB_DIRECT); + if (!do_floor && HONOR_SIGNED_ZEROS (mode)) + ix86_sse_copysign_to_positive (tmp, tmp, res, mask); emit_move_insn (res, tmp); emit_label (label); *************** static bool *** 46772,46778 **** expand_vec_perm_blend (struct expand_vec_perm_d *d) { machine_mode mmode, vmode = d->vmode; ! unsigned i, mask, nelt = d->nelt; rtx target, op0, op1, maskop, x; rtx rperm[32], vperm; --- 46815,46822 ---- expand_vec_perm_blend (struct expand_vec_perm_d *d) { machine_mode mmode, vmode = d->vmode; ! unsigned i, nelt = d->nelt; ! unsigned HOST_WIDE_INT mask; rtx target, op0, op1, maskop, x; rtx rperm[32], vperm; *************** expand_vec_perm_blend (struct expand_vec *** 46826,46832 **** case V16SImode: case V8DImode: for (i = 0; i < nelt; ++i) ! mask |= (d->perm[i] >= nelt) << i; break; case V2DImode: --- 46870,46876 ---- case V16SImode: case V8DImode: for (i = 0; i < nelt; ++i) ! mask |= ((unsigned HOST_WIDE_INT) (d->perm[i] >= nelt)) << i; break; case V2DImode: *************** ix86_simd_clone_compute_vecsize_and_simd *** 51694,51700 **** case DFmode: /* case SCmode: */ /* case DCmode: */ ! break; default: warning_at (DECL_SOURCE_LOCATION (node->decl), 0, "unsupported return type %qT for simd\n", ret_type); --- 51738,51746 ---- case DFmode: /* case SCmode: */ /* case DCmode: */ ! if (!AGGREGATE_TYPE_P (ret_type)) ! break; ! /* FALLTHRU */ default: warning_at (DECL_SOURCE_LOCATION (node->decl), 0, "unsupported return type %qT for simd\n", ret_type); *************** ix86_simd_clone_compute_vecsize_and_simd *** 51703,51727 **** tree t; int i; ! for (t = DECL_ARGUMENTS (node->decl), i = 0; t; t = DECL_CHAIN (t), i++) ! /* FIXME: Shouldn't we allow such arguments if they are uniform? */ ! switch (TYPE_MODE (TREE_TYPE (t))) ! { ! case QImode: ! case HImode: ! case SImode: ! case DImode: ! case SFmode: ! case DFmode: ! /* case SCmode: */ ! /* case DCmode: */ ! break; ! default: ! warning_at (DECL_SOURCE_LOCATION (node->decl), 0, ! "unsupported argument type %qT for simd\n", TREE_TYPE (t)); ! return 0; ! } if (clonei->cilk_elemental) { --- 51749,51782 ---- tree t; int i; + tree type_arg_types = TYPE_ARG_TYPES (TREE_TYPE (node->decl)); + bool decl_arg_p = (node->definition || type_arg_types == NULL_TREE); ! for (t = (decl_arg_p ? DECL_ARGUMENTS (node->decl) : type_arg_types), i = 0; ! t && t != void_list_node; t = TREE_CHAIN (t), i++) ! { ! tree arg_type = decl_arg_p ? TREE_TYPE (t) : TREE_VALUE (t); ! switch (TYPE_MODE (arg_type)) ! { ! case QImode: ! case HImode: ! case SImode: ! case DImode: ! case SFmode: ! case DFmode: ! /* case SCmode: */ ! /* case DCmode: */ ! if (!AGGREGATE_TYPE_P (arg_type)) ! break; ! /* FALLTHRU */ ! default: ! if (clonei->args[i].arg_type == SIMD_CLONE_ARG_TYPE_UNIFORM) ! break; ! warning_at (DECL_SOURCE_LOCATION (node->decl), 0, ! "unsupported argument type %qT for simd\n", arg_type); ! return 0; ! } ! } if (clonei->cilk_elemental) { *************** ix86_float_exceptions_rounding_supported *** 51933,51939 **** there is no adddf3 pattern (since x87 floating point only has XFmode operations) so the default hook implementation gets this wrong. */ ! return TARGET_80387 || TARGET_SSE_MATH; } /* Implement TARGET_ATOMIC_ASSIGN_EXPAND_FENV. */ --- 51988,51994 ---- there is no adddf3 pattern (since x87 floating point only has XFmode operations) so the default hook implementation gets this wrong. */ ! return TARGET_80387 || (TARGET_SSE && TARGET_SSE_MATH); } /* Implement TARGET_ATOMIC_ASSIGN_EXPAND_FENV. */ *************** ix86_float_exceptions_rounding_supported *** 51941,51947 **** static void ix86_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) { ! if (!TARGET_80387 && !TARGET_SSE_MATH) return; tree exceptions_var = create_tmp_var_raw (integer_type_node); if (TARGET_80387) --- 51996,52002 ---- static void ix86_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) { ! if (!TARGET_80387 && !(TARGET_SSE && TARGET_SSE_MATH)) return; tree exceptions_var = create_tmp_var_raw (integer_type_node); if (TARGET_80387) *************** ix86_atomic_assign_expand_fenv (tree *ho *** 51976,51982 **** tree update_fldenv = build_call_expr (fldenv, 1, fenv_addr); *update = build2 (COMPOUND_EXPR, void_type_node, *update, update_fldenv); } ! if (TARGET_SSE_MATH) { tree mxcsr_orig_var = create_tmp_var_raw (unsigned_type_node); tree mxcsr_mod_var = create_tmp_var_raw (unsigned_type_node); --- 52031,52037 ---- tree update_fldenv = build_call_expr (fldenv, 1, fenv_addr); *update = build2 (COMPOUND_EXPR, void_type_node, *update, update_fldenv); } ! if (TARGET_SSE && TARGET_SSE_MATH) { tree mxcsr_orig_var = create_tmp_var_raw (unsigned_type_node); tree mxcsr_mod_var = create_tmp_var_raw (unsigned_type_node); *************** ix86_expand_divmod_libfunc (rtx libfunc, *** 52301,52310 **** rtx rem = assign_386_stack_local (mode, SLOT_TEMP); rtx quot = emit_library_call_value (libfunc, NULL_RTX, LCT_NORMAL, ! mode, 3, ! op0, GET_MODE (op0), ! op1, GET_MODE (op1), ! XEXP (rem, 0), Pmode); *quot_p = quot; *rem_p = rem; } --- 52356,52363 ---- rtx rem = assign_386_stack_local (mode, SLOT_TEMP); rtx quot = emit_library_call_value (libfunc, NULL_RTX, LCT_NORMAL, ! mode, 3, op0, mode, op1, mode, ! XEXP (rem, 0), Pmode); *quot_p = quot; *rem_p = rem; } *************** ix86_excess_precision (enum excess_preci *** 52335,52341 **** return FLT_EVAL_METHOD_PROMOTE_TO_FLOAT; else if (!TARGET_MIX_SSE_I387) { ! if (!TARGET_SSE_MATH) return FLT_EVAL_METHOD_PROMOTE_TO_LONG_DOUBLE; else if (TARGET_SSE2) return FLT_EVAL_METHOD_PROMOTE_TO_FLOAT; --- 52388,52394 ---- return FLT_EVAL_METHOD_PROMOTE_TO_FLOAT; else if (!TARGET_MIX_SSE_I387) { ! if (!(TARGET_SSE && TARGET_SSE_MATH)) return FLT_EVAL_METHOD_PROMOTE_TO_LONG_DOUBLE; else if (TARGET_SSE2) return FLT_EVAL_METHOD_PROMOTE_TO_FLOAT; diff -Nrcpad gcc-7.4.0/gcc/config/i386/i386.h gcc-7.5.0/gcc/config/i386/i386.h *** gcc-7.4.0/gcc/config/i386/i386.h Sun Nov 18 21:36:30 2018 --- gcc-7.5.0/gcc/config/i386/i386.h Fri Nov 1 20:30:26 2019 *************** extern tree x86_mfence; *** 590,596 **** /* Replace MACH-O, ifdefs by in-line tests, where possible. (a) Macros defined in config/i386/darwin.h */ #define TARGET_MACHO 0 ! #define TARGET_MACHO_BRANCH_ISLANDS 0 #define MACHOPIC_ATT_STUB 0 /* (b) Macros defined in config/darwin.h */ #define MACHO_DYNAMIC_NO_PIC_P 0 --- 590,596 ---- /* Replace MACH-O, ifdefs by in-line tests, where possible. (a) Macros defined in config/i386/darwin.h */ #define TARGET_MACHO 0 ! #define TARGET_MACHO_SYMBOL_STUBS 0 #define MACHOPIC_ATT_STUB 0 /* (b) Macros defined in config/darwin.h */ #define MACHO_DYNAMIC_NO_PIC_P 0 diff -Nrcpad gcc-7.4.0/gcc/config/i386/i386.md gcc-7.5.0/gcc/config/i386/i386.md *** gcc-7.4.0/gcc/config/i386/i386.md Tue Aug 21 16:27:22 2018 --- gcc-7.5.0/gcc/config/i386/i386.md Thu May 23 04:55:40 2019 *************** *** 8268,8274 **** [(parallel [(set (match_dup 0) (zero_extend:DI (and:SI (match_dup 1) (match_dup 2)))) (clobber (reg:CC FLAGS_REG))])] ! "operands[2] = gen_lowpart (SImode, operands[2]);") ;; See comment for addsi_1_zext why we do use nonimmediate_operand (define_insn "*andsi_1_zext" --- 8268,8291 ---- [(parallel [(set (match_dup 0) (zero_extend:DI (and:SI (match_dup 1) (match_dup 2)))) (clobber (reg:CC FLAGS_REG))])] ! { ! if (GET_CODE (operands[2]) == SYMBOL_REF ! || GET_CODE (operands[2]) == LABEL_REF) ! { ! operands[2] = shallow_copy_rtx (operands[2]); ! PUT_MODE (operands[2], SImode); ! } ! else if (GET_CODE (operands[2]) == CONST) ! { ! /* (const:DI (plus:DI (symbol_ref:DI ("...")) (const_int N))) */ ! operands[2] = copy_rtx (operands[2]); ! PUT_MODE (operands[2], SImode); ! PUT_MODE (XEXP (operands[2], 0), SImode); ! PUT_MODE (XEXP (XEXP (operands[2], 0), 0), SImode); ! } ! else ! operands[2] = gen_lowpart (SImode, operands[2]); ! }) ;; See comment for addsi_1_zext why we do use nonimmediate_operand (define_insn "*andsi_1_zext" diff -Nrcpad gcc-7.4.0/gcc/config/i386/sse.md gcc-7.5.0/gcc/config/i386/sse.md *** gcc-7.4.0/gcc/config/i386/sse.md Thu Nov 22 22:46:54 2018 --- gcc-7.5.0/gcc/config/i386/sse.md Fri Aug 30 11:32:15 2019 *************** *** 1777,1783 **** [(set (match_operand:VF1_128_256 0 "register_operand") (unspec:VF1_128_256 [(match_operand:VF1_128_256 1 "vector_operand")] UNSPEC_RSQRT))] ! "TARGET_SSE_MATH" { ix86_emit_swsqrtsf (operands[0], operands[1], mode, true); DONE; --- 1777,1783 ---- [(set (match_operand:VF1_128_256 0 "register_operand") (unspec:VF1_128_256 [(match_operand:VF1_128_256 1 "vector_operand")] UNSPEC_RSQRT))] ! "TARGET_SSE && TARGET_SSE_MATH" { ix86_emit_swsqrtsf (operands[0], operands[1], mode, true); DONE; *************** *** 4601,4637 **** ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define_insn "sse2_cvtpi2pd" ! [(set (match_operand:V2DF 0 "register_operand" "=x,x") ! (float:V2DF (match_operand:V2SI 1 "nonimmediate_operand" "y,m")))] "TARGET_SSE2" ! "cvtpi2pd\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") ! (set_attr "unit" "mmx,*") ! (set_attr "prefix_data16" "1,*") (set_attr "mode" "V2DF")]) (define_insn "sse2_cvtpd2pi" ! [(set (match_operand:V2SI 0 "register_operand" "=y") ! (unspec:V2SI [(match_operand:V2DF 1 "nonimmediate_operand" "xm")] UNSPEC_FIX_NOTRUNC))] "TARGET_SSE2" ! "cvtpd2pi\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") ! (set_attr "unit" "mmx") (set_attr "bdver1_decode" "double") ! (set_attr "btver2_decode" "direct") ! (set_attr "prefix_data16" "1") ! (set_attr "mode" "DI")]) (define_insn "sse2_cvttpd2pi" ! [(set (match_operand:V2SI 0 "register_operand" "=y") ! (fix:V2SI (match_operand:V2DF 1 "nonimmediate_operand" "xm")))] "TARGET_SSE2" ! "cvttpd2pi\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") ! (set_attr "unit" "mmx") (set_attr "bdver1_decode" "double") ! (set_attr "prefix_data16" "1") (set_attr "mode" "TI")]) (define_insn "sse2_cvtsi2sd" --- 4601,4649 ---- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define_insn "sse2_cvtpi2pd" ! [(set (match_operand:V2DF 0 "register_operand" "=v,x") ! (float:V2DF (match_operand:V2SI 1 "nonimmediate_operand" "vBm,?!y")))] "TARGET_SSE2" ! "@ ! %vcvtdq2pd\t{%1, %0|%0, %1} ! cvtpi2pd\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") ! (set_attr "unit" "*,mmx") ! (set_attr "prefix_data16" "*,1") ! (set_attr "prefix" "maybe_vex,*") (set_attr "mode" "V2DF")]) (define_insn "sse2_cvtpd2pi" ! [(set (match_operand:V2SI 0 "register_operand" "=v,?!y") ! (unspec:V2SI [(match_operand:V2DF 1 "nonimmediate_operand" "vBm,xm")] UNSPEC_FIX_NOTRUNC))] "TARGET_SSE2" ! "@ ! * return TARGET_AVX ? \"vcvtpd2dq{x}\t{%1, %0|%0, %1}\" : \"cvtpd2dq\t{%1, %0|%0, %1}\"; ! cvtpd2pi\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") ! (set_attr "unit" "*,mmx") ! (set_attr "amdfam10_decode" "double") ! (set_attr "athlon_decode" "vector") (set_attr "bdver1_decode" "double") ! (set_attr "prefix_data16" "*,1") ! (set_attr "prefix" "maybe_vex,*") ! (set_attr "mode" "TI")]) (define_insn "sse2_cvttpd2pi" ! [(set (match_operand:V2SI 0 "register_operand" "=v,?!y") ! (fix:V2SI (match_operand:V2DF 1 "nonimmediate_operand" "vBm,xm")))] "TARGET_SSE2" ! "@ ! * return TARGET_AVX ? \"vcvttpd2dq{x}\t{%1, %0|%0, %1}\" : \"cvttpd2dq\t{%1, %0|%0, %1}\"; ! cvttpd2pi\t{%1, %0|%0, %1}" [(set_attr "type" "ssecvt") ! (set_attr "unit" "*,mmx") ! (set_attr "amdfam10_decode" "double") ! (set_attr "athlon_decode" "vector") (set_attr "bdver1_decode" "double") ! (set_attr "prefix_data16" "*,1") ! (set_attr "prefix" "maybe_vex,*") (set_attr "mode" "TI")]) (define_insn "sse2_cvtsi2sd" *************** *** 12684,12696 **** (vec_concat: (match_operand:VI8F_256 1 "register_operand" "v") (match_operand:VI8F_256 2 "nonimmediate_operand" "vm")) ! (parallel [(match_operand 3 "const_0_to_3_operand") ! (match_operand 4 "const_0_to_3_operand") ! (match_operand 5 "const_4_to_7_operand") ! (match_operand 6 "const_4_to_7_operand")])))] "TARGET_AVX512VL ! && (INTVAL (operands[3]) == (INTVAL (operands[4]) - 1) ! && INTVAL (operands[5]) == (INTVAL (operands[6]) - 1))" { int mask; mask = INTVAL (operands[3]) / 2; --- 12696,12710 ---- (vec_concat: (match_operand:VI8F_256 1 "register_operand" "v") (match_operand:VI8F_256 2 "nonimmediate_operand" "vm")) ! (parallel [(match_operand 3 "const_0_to_3_operand") ! (match_operand 4 "const_0_to_3_operand") ! (match_operand 5 "const_4_to_7_operand") ! (match_operand 6 "const_4_to_7_operand")])))] "TARGET_AVX512VL ! && (INTVAL (operands[3]) & 1) == 0 ! && INTVAL (operands[3]) == INTVAL (operands[4]) - 1 ! && (INTVAL (operands[5]) & 1) == 0 ! && INTVAL (operands[5]) == INTVAL (operands[6]) - 1" { int mask; mask = INTVAL (operands[3]) / 2; *************** *** 12733,12751 **** (vec_concat: (match_operand:V8FI 1 "register_operand" "v") (match_operand:V8FI 2 "nonimmediate_operand" "vm")) ! (parallel [(match_operand 3 "const_0_to_7_operand") ! (match_operand 4 "const_0_to_7_operand") ! (match_operand 5 "const_0_to_7_operand") ! (match_operand 6 "const_0_to_7_operand") ! (match_operand 7 "const_8_to_15_operand") ! (match_operand 8 "const_8_to_15_operand") ! (match_operand 9 "const_8_to_15_operand") ! (match_operand 10 "const_8_to_15_operand")])))] "TARGET_AVX512F ! && (INTVAL (operands[3]) == (INTVAL (operands[4]) - 1) ! && INTVAL (operands[5]) == (INTVAL (operands[6]) - 1) ! && INTVAL (operands[7]) == (INTVAL (operands[8]) - 1) ! && INTVAL (operands[9]) == (INTVAL (operands[10]) - 1))" { int mask; mask = INTVAL (operands[3]) / 2; --- 12747,12769 ---- (vec_concat: (match_operand:V8FI 1 "register_operand" "v") (match_operand:V8FI 2 "nonimmediate_operand" "vm")) ! (parallel [(match_operand 3 "const_0_to_7_operand") ! (match_operand 4 "const_0_to_7_operand") ! (match_operand 5 "const_0_to_7_operand") ! (match_operand 6 "const_0_to_7_operand") ! (match_operand 7 "const_8_to_15_operand") ! (match_operand 8 "const_8_to_15_operand") ! (match_operand 9 "const_8_to_15_operand") ! (match_operand 10 "const_8_to_15_operand")])))] "TARGET_AVX512F ! && (INTVAL (operands[3]) & 1) == 0 ! && INTVAL (operands[3]) == INTVAL (operands[4]) - 1 ! && (INTVAL (operands[5]) & 1) == 0 ! && INTVAL (operands[5]) == INTVAL (operands[6]) - 1 ! && (INTVAL (operands[7]) & 1) == 0 ! && INTVAL (operands[7]) == INTVAL (operands[8]) - 1 ! && (INTVAL (operands[9]) & 1) == 0 ! && INTVAL (operands[9]) == INTVAL (operands[10]) - 1" { int mask; mask = INTVAL (operands[3]) / 2; *************** *** 12791,12811 **** (vec_concat: (match_operand:VI4F_256 1 "register_operand" "v") (match_operand:VI4F_256 2 "nonimmediate_operand" "vm")) ! (parallel [(match_operand 3 "const_0_to_7_operand") ! (match_operand 4 "const_0_to_7_operand") ! (match_operand 5 "const_0_to_7_operand") ! (match_operand 6 "const_0_to_7_operand") ! (match_operand 7 "const_8_to_15_operand") ! (match_operand 8 "const_8_to_15_operand") ! (match_operand 9 "const_8_to_15_operand") (match_operand 10 "const_8_to_15_operand")])))] "TARGET_AVX512VL ! && (INTVAL (operands[3]) == (INTVAL (operands[4]) - 1) ! && INTVAL (operands[3]) == (INTVAL (operands[5]) - 2) ! && INTVAL (operands[3]) == (INTVAL (operands[6]) - 3) ! && INTVAL (operands[7]) == (INTVAL (operands[8]) - 1) ! && INTVAL (operands[7]) == (INTVAL (operands[9]) - 2) ! && INTVAL (operands[7]) == (INTVAL (operands[10]) - 3))" { int mask; mask = INTVAL (operands[3]) / 4; --- 12809,12831 ---- (vec_concat: (match_operand:VI4F_256 1 "register_operand" "v") (match_operand:VI4F_256 2 "nonimmediate_operand" "vm")) ! (parallel [(match_operand 3 "const_0_to_7_operand") ! (match_operand 4 "const_0_to_7_operand") ! (match_operand 5 "const_0_to_7_operand") ! (match_operand 6 "const_0_to_7_operand") ! (match_operand 7 "const_8_to_15_operand") ! (match_operand 8 "const_8_to_15_operand") ! (match_operand 9 "const_8_to_15_operand") (match_operand 10 "const_8_to_15_operand")])))] "TARGET_AVX512VL ! && (INTVAL (operands[3]) & 3) == 0 ! && INTVAL (operands[3]) == INTVAL (operands[4]) - 1 ! && INTVAL (operands[3]) == INTVAL (operands[5]) - 2 ! && INTVAL (operands[3]) == INTVAL (operands[6]) - 3 ! && (INTVAL (operands[7]) & 3) == 0 ! && INTVAL (operands[7]) == INTVAL (operands[8]) - 1 ! && INTVAL (operands[7]) == INTVAL (operands[9]) - 2 ! && INTVAL (operands[7]) == INTVAL (operands[10]) - 3" { int mask; mask = INTVAL (operands[3]) / 4; *************** *** 12857,12891 **** (vec_concat: (match_operand:V16FI 1 "register_operand" "v") (match_operand:V16FI 2 "nonimmediate_operand" "vm")) ! (parallel [(match_operand 3 "const_0_to_15_operand") ! (match_operand 4 "const_0_to_15_operand") ! (match_operand 5 "const_0_to_15_operand") ! (match_operand 6 "const_0_to_15_operand") ! (match_operand 7 "const_0_to_15_operand") ! (match_operand 8 "const_0_to_15_operand") ! (match_operand 9 "const_0_to_15_operand") ! (match_operand 10 "const_0_to_15_operand") ! (match_operand 11 "const_16_to_31_operand") ! (match_operand 12 "const_16_to_31_operand") ! (match_operand 13 "const_16_to_31_operand") ! (match_operand 14 "const_16_to_31_operand") ! (match_operand 15 "const_16_to_31_operand") ! (match_operand 16 "const_16_to_31_operand") ! (match_operand 17 "const_16_to_31_operand") ! (match_operand 18 "const_16_to_31_operand")])))] "TARGET_AVX512F ! && (INTVAL (operands[3]) == (INTVAL (operands[4]) - 1) ! && INTVAL (operands[3]) == (INTVAL (operands[5]) - 2) ! && INTVAL (operands[3]) == (INTVAL (operands[6]) - 3) ! && INTVAL (operands[7]) == (INTVAL (operands[8]) - 1) ! && INTVAL (operands[7]) == (INTVAL (operands[9]) - 2) ! && INTVAL (operands[7]) == (INTVAL (operands[10]) - 3) ! && INTVAL (operands[11]) == (INTVAL (operands[12]) - 1) ! && INTVAL (operands[11]) == (INTVAL (operands[13]) - 2) ! && INTVAL (operands[11]) == (INTVAL (operands[14]) - 3) ! && INTVAL (operands[15]) == (INTVAL (operands[16]) - 1) ! && INTVAL (operands[15]) == (INTVAL (operands[17]) - 2) ! && INTVAL (operands[15]) == (INTVAL (operands[18]) - 3))" { int mask; mask = INTVAL (operands[3]) / 4; --- 12877,12915 ---- (vec_concat: (match_operand:V16FI 1 "register_operand" "v") (match_operand:V16FI 2 "nonimmediate_operand" "vm")) ! (parallel [(match_operand 3 "const_0_to_15_operand") ! (match_operand 4 "const_0_to_15_operand") ! (match_operand 5 "const_0_to_15_operand") ! (match_operand 6 "const_0_to_15_operand") ! (match_operand 7 "const_0_to_15_operand") ! (match_operand 8 "const_0_to_15_operand") ! (match_operand 9 "const_0_to_15_operand") ! (match_operand 10 "const_0_to_15_operand") ! (match_operand 11 "const_16_to_31_operand") ! (match_operand 12 "const_16_to_31_operand") ! (match_operand 13 "const_16_to_31_operand") ! (match_operand 14 "const_16_to_31_operand") ! (match_operand 15 "const_16_to_31_operand") ! (match_operand 16 "const_16_to_31_operand") ! (match_operand 17 "const_16_to_31_operand") ! (match_operand 18 "const_16_to_31_operand")])))] "TARGET_AVX512F ! && (INTVAL (operands[3]) & 3) == 0 ! && INTVAL (operands[3]) == INTVAL (operands[4]) - 1 ! && INTVAL (operands[3]) == INTVAL (operands[5]) - 2 ! && INTVAL (operands[3]) == INTVAL (operands[6]) - 3 ! && (INTVAL (operands[7]) & 3) == 0 ! && INTVAL (operands[7]) == INTVAL (operands[8]) - 1 ! && INTVAL (operands[7]) == INTVAL (operands[9]) - 2 ! && INTVAL (operands[7]) == INTVAL (operands[10]) - 3 ! && (INTVAL (operands[11]) & 3) == 0 ! && INTVAL (operands[11]) == INTVAL (operands[12]) - 1 ! && INTVAL (operands[11]) == INTVAL (operands[13]) - 2 ! && INTVAL (operands[11]) == INTVAL (operands[14]) - 3 ! && (INTVAL (operands[15]) & 3) == 0 ! && INTVAL (operands[15]) == INTVAL (operands[16]) - 1 ! && INTVAL (operands[15]) == INTVAL (operands[17]) - 2 ! && INTVAL (operands[15]) == INTVAL (operands[18]) - 3" { int mask; mask = INTVAL (operands[3]) / 4; *************** *** 14918,14924 **** } }) ! (define_insn "abs2" [(set (match_operand:MMXMODEI 0 "register_operand" "=y") (abs:MMXMODEI (match_operand:MMXMODEI 1 "nonimmediate_operand" "ym")))] --- 14942,14948 ---- } }) ! (define_insn "ssse3_abs2" [(set (match_operand:MMXMODEI 0 "register_operand" "=y") (abs:MMXMODEI (match_operand:MMXMODEI 1 "nonimmediate_operand" "ym")))] *************** *** 16015,16023 **** switch (INTVAL (operands[4])) { case 3: ! return "vgatherpf0ps\t{%5%{%0%}|%5%{%0%}}"; case 2: ! return "vgatherpf1ps\t{%5%{%0%}|%5%{%0%}}"; default: gcc_unreachable (); } --- 16039,16047 ---- switch (INTVAL (operands[4])) { case 3: ! return "%M2vgatherpf0ps\t{%5%{%0%}|%5%{%0%}}"; case 2: ! return "%M2vgatherpf1ps\t{%5%{%0%}|%5%{%0%}}"; default: gcc_unreachable (); } *************** *** 16060,16068 **** switch (INTVAL (operands[4])) { case 3: ! return "vgatherpf0pd\t{%5%{%0%}|%5%{%0%}}"; case 2: ! return "vgatherpf1pd\t{%5%{%0%}|%5%{%0%}}"; default: gcc_unreachable (); } --- 16084,16092 ---- switch (INTVAL (operands[4])) { case 3: ! return "%M2vgatherpf0pd\t{%5%{%0%}|%5%{%0%}}"; case 2: ! return "%M2vgatherpf1pd\t{%5%{%0%}|%5%{%0%}}"; default: gcc_unreachable (); } *************** *** 16106,16115 **** { case 3: case 7: ! return "vscatterpf0ps\t{%5%{%0%}|%5%{%0%}}"; case 2: case 6: ! return "vscatterpf1ps\t{%5%{%0%}|%5%{%0%}}"; default: gcc_unreachable (); } --- 16130,16139 ---- { case 3: case 7: ! return "%M2vscatterpf0ps\t{%5%{%0%}|%5%{%0%}}"; case 2: case 6: ! return "%M2vscatterpf1ps\t{%5%{%0%}|%5%{%0%}}"; default: gcc_unreachable (); } *************** *** 16153,16162 **** { case 3: case 7: ! return "vscatterpf0pd\t{%5%{%0%}|%5%{%0%}}"; case 2: case 6: ! return "vscatterpf1pd\t{%5%{%0%}|%5%{%0%}}"; default: gcc_unreachable (); } --- 16177,16186 ---- { case 3: case 7: ! return "%M2vscatterpf0pd\t{%5%{%0%}|%5%{%0%}}"; case 2: case 6: ! return "%M2vscatterpf1pd\t{%5%{%0%}|%5%{%0%}}"; default: gcc_unreachable (); } *************** *** 19020,19026 **** UNSPEC_GATHER)) (clobber (match_scratch:VEC_GATHER_MODE 1 "=&x"))] "TARGET_AVX2" ! "vgatherd\t{%1, %7, %0|%0, %7, %1}" [(set_attr "type" "ssemov") (set_attr "prefix" "vex") (set_attr "mode" "")]) --- 19044,19050 ---- UNSPEC_GATHER)) (clobber (match_scratch:VEC_GATHER_MODE 1 "=&x"))] "TARGET_AVX2" ! "%M3vgatherd\t{%1, %7, %0|%0, %7, %1}" [(set_attr "type" "ssemov") (set_attr "prefix" "vex") (set_attr "mode" "")]) *************** *** 19040,19046 **** UNSPEC_GATHER)) (clobber (match_scratch:VEC_GATHER_MODE 1 "=&x"))] "TARGET_AVX2" ! "vgatherd\t{%1, %6, %0|%0, %6, %1}" [(set_attr "type" "ssemov") (set_attr "prefix" "vex") (set_attr "mode" "")]) --- 19064,19070 ---- UNSPEC_GATHER)) (clobber (match_scratch:VEC_GATHER_MODE 1 "=&x"))] "TARGET_AVX2" ! "%M2vgatherd\t{%1, %6, %0|%0, %6, %1}" [(set_attr "type" "ssemov") (set_attr "prefix" "vex") (set_attr "mode" "")]) *************** *** 19081,19087 **** UNSPEC_GATHER)) (clobber (match_scratch:VEC_GATHER_MODE 1 "=&x"))] "TARGET_AVX2" ! "vgatherq\t{%5, %7, %2|%2, %7, %5}" [(set_attr "type" "ssemov") (set_attr "prefix" "vex") (set_attr "mode" "")]) --- 19105,19111 ---- UNSPEC_GATHER)) (clobber (match_scratch:VEC_GATHER_MODE 1 "=&x"))] "TARGET_AVX2" ! "%M3vgatherq\t{%5, %7, %2|%2, %7, %5}" [(set_attr "type" "ssemov") (set_attr "prefix" "vex") (set_attr "mode" "")]) *************** *** 19103,19110 **** "TARGET_AVX2" { if (mode != mode) ! return "vgatherq\t{%4, %6, %x0|%x0, %6, %4}"; ! return "vgatherq\t{%4, %6, %0|%0, %6, %4}"; } [(set_attr "type" "ssemov") (set_attr "prefix" "vex") --- 19127,19134 ---- "TARGET_AVX2" { if (mode != mode) ! return "%M2vgatherq\t{%4, %6, %x0|%x0, %6, %4}"; ! return "%M2vgatherq\t{%4, %6, %0|%0, %6, %4}"; } [(set_attr "type" "ssemov") (set_attr "prefix" "vex") *************** *** 19128,19134 **** (const_int 2) (const_int 3)]))) (clobber (match_scratch:VI4F_256 1 "=&x"))] "TARGET_AVX2" ! "vgatherq\t{%5, %7, %0|%0, %7, %5}" [(set_attr "type" "ssemov") (set_attr "prefix" "vex") (set_attr "mode" "")]) --- 19152,19158 ---- (const_int 2) (const_int 3)]))) (clobber (match_scratch:VI4F_256 1 "=&x"))] "TARGET_AVX2" ! "%M3vgatherq\t{%5, %7, %0|%0, %7, %5}" [(set_attr "type" "ssemov") (set_attr "prefix" "vex") (set_attr "mode" "")]) *************** *** 19151,19157 **** (const_int 2) (const_int 3)]))) (clobber (match_scratch:VI4F_256 1 "=&x"))] "TARGET_AVX2" ! "vgatherq\t{%4, %6, %0|%0, %6, %4}" [(set_attr "type" "ssemov") (set_attr "prefix" "vex") (set_attr "mode" "")]) --- 19175,19181 ---- (const_int 2) (const_int 3)]))) (clobber (match_scratch:VI4F_256 1 "=&x"))] "TARGET_AVX2" ! "%M2vgatherq\t{%4, %6, %0|%0, %6, %4}" [(set_attr "type" "ssemov") (set_attr "prefix" "vex") (set_attr "mode" "")]) *************** *** 19195,19201 **** UNSPEC_GATHER)) (clobber (match_scratch: 2 "=&Yk"))] "TARGET_AVX512F" ! "vgatherd\t{%6, %0%{%2%}|%0%{%2%}, %6}" [(set_attr "type" "ssemov") (set_attr "prefix" "evex") (set_attr "mode" "")]) --- 19219,19225 ---- UNSPEC_GATHER)) (clobber (match_scratch: 2 "=&Yk"))] "TARGET_AVX512F" ! "%M4vgatherd\t{%6, %0%{%2%}|%0%{%2%}, %6}" [(set_attr "type" "ssemov") (set_attr "prefix" "evex") (set_attr "mode" "")]) *************** *** 19214,19220 **** UNSPEC_GATHER)) (clobber (match_scratch: 1 "=&Yk"))] "TARGET_AVX512F" ! "vgatherd\t{%5, %0%{%1%}|%0%{%1%}, %5}" [(set_attr "type" "ssemov") (set_attr "prefix" "evex") (set_attr "mode" "")]) --- 19238,19244 ---- UNSPEC_GATHER)) (clobber (match_scratch: 1 "=&Yk"))] "TARGET_AVX512F" ! "%M3vgatherd\t{%5, %0%{%1%}|%0%{%1%}, %5}" [(set_attr "type" "ssemov") (set_attr "prefix" "evex") (set_attr "mode" "")]) *************** *** 19254,19260 **** (clobber (match_scratch:QI 2 "=&Yk"))] "TARGET_AVX512F" { ! return "vgatherq\t{%6, %1%{%2%}|%1%{%2%}, %6}"; } [(set_attr "type" "ssemov") (set_attr "prefix" "evex") --- 19278,19284 ---- (clobber (match_scratch:QI 2 "=&Yk"))] "TARGET_AVX512F" { ! return "%M4vgatherq\t{%6, %1%{%2%}|%1%{%2%}, %6}"; } [(set_attr "type" "ssemov") (set_attr "prefix" "evex") *************** *** 19278,19288 **** if (mode != mode) { if ( != 64) ! return "vgatherq\t{%5, %x0%{%1%}|%x0%{%1%}, %5}"; else ! return "vgatherq\t{%5, %t0%{%1%}|%t0%{%1%}, %t5}"; } ! return "vgatherq\t{%5, %0%{%1%}|%0%{%1%}, %5}"; } [(set_attr "type" "ssemov") (set_attr "prefix" "evex") --- 19302,19312 ---- if (mode != mode) { if ( != 64) ! return "%M3vgatherq\t{%5, %x0%{%1%}|%x0%{%1%}, %5}"; else ! return "%M3vgatherq\t{%5, %t0%{%1%}|%t0%{%1%}, %t5}"; } ! return "%M3vgatherq\t{%5, %0%{%1%}|%0%{%1%}, %5}"; } [(set_attr "type" "ssemov") (set_attr "prefix" "evex") *************** *** 19319,19325 **** UNSPEC_SCATTER)) (clobber (match_scratch: 1 "=&Yk"))] "TARGET_AVX512F" ! "vscatterd\t{%3, %5%{%1%}|%5%{%1%}, %3}" [(set_attr "type" "ssemov") (set_attr "prefix" "evex") (set_attr "mode" "")]) --- 19343,19349 ---- UNSPEC_SCATTER)) (clobber (match_scratch: 1 "=&Yk"))] "TARGET_AVX512F" ! "%M0vscatterd\t{%3, %5%{%1%}|%5%{%1%}, %3}" [(set_attr "type" "ssemov") (set_attr "prefix" "evex") (set_attr "mode" "")]) *************** *** 19357,19364 **** "TARGET_AVX512F" { if (GET_MODE_SIZE (GET_MODE_INNER (mode)) == 8) ! return "vscatterq\t{%3, %5%{%1%}|%5%{%1%}, %3}"; ! return "vscatterq\t{%3, %5%{%1%}|%t5%{%1%}, %3}"; } [(set_attr "type" "ssemov") (set_attr "prefix" "evex") --- 19381,19388 ---- "TARGET_AVX512F" { if (GET_MODE_SIZE (GET_MODE_INNER (mode)) == 8) ! return "%M0vscatterq\t{%3, %5%{%1%}|%5%{%1%}, %3}"; ! return "%M0vscatterq\t{%3, %5%{%1%}|%t5%{%1%}, %3}"; } [(set_attr "type" "ssemov") (set_attr "prefix" "evex") diff -Nrcpad gcc-7.4.0/gcc/config/i386/t-darwin gcc-7.5.0/gcc/config/i386/t-darwin *** gcc-7.4.0/gcc/config/i386/t-darwin Wed Nov 2 15:23:48 2011 --- gcc-7.5.0/gcc/config/i386/t-darwin Thu Jan 1 00:00:00 1970 *************** *** 1,2 **** - MULTILIB_OPTIONS = m64 - MULTILIB_DIRNAMES = x86_64 --- 0 ---- diff -Nrcpad gcc-7.4.0/gcc/config/i386/t-darwin32-biarch gcc-7.5.0/gcc/config/i386/t-darwin32-biarch *** gcc-7.4.0/gcc/config/i386/t-darwin32-biarch Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/config/i386/t-darwin32-biarch Thu Sep 5 19:14:35 2019 *************** *** 0 **** --- 1,2 ---- + MULTILIB_OPTIONS = m64 + MULTILIB_DIRNAMES = x86_64 diff -Nrcpad gcc-7.4.0/gcc/config/i386/t-darwin64 gcc-7.5.0/gcc/config/i386/t-darwin64 *** gcc-7.4.0/gcc/config/i386/t-darwin64 Wed Nov 2 15:23:48 2011 --- gcc-7.5.0/gcc/config/i386/t-darwin64 Thu Jan 1 00:00:00 1970 *************** *** 1,2 **** - MULTILIB_OPTIONS = m32 - MULTILIB_DIRNAMES = i386 --- 0 ---- diff -Nrcpad gcc-7.4.0/gcc/config/i386/t-darwin64-biarch gcc-7.5.0/gcc/config/i386/t-darwin64-biarch *** gcc-7.4.0/gcc/config/i386/t-darwin64-biarch Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/config/i386/t-darwin64-biarch Thu Sep 5 19:14:35 2019 *************** *** 0 **** --- 1,2 ---- + MULTILIB_OPTIONS = m32 + MULTILIB_DIRNAMES = i386 diff -Nrcpad gcc-7.4.0/gcc/config/nvptx/nvptx.c gcc-7.5.0/gcc/config/nvptx/nvptx.c *** gcc-7.4.0/gcc/config/nvptx/nvptx.c Tue Apr 3 14:04:22 2018 --- gcc-7.5.0/gcc/config/nvptx/nvptx.c Fri Aug 30 12:43:04 2019 *************** nvptx_output_softstack_switch (FILE *fil *** 1354,1360 **** fputs (";\n", file); if (!CONST_INT_P (size) || UINTVAL (align) > GET_MODE_SIZE (DImode)) fprintf (file, ! "\t\tand.u%d %%r%d, %%r%d, -" HOST_WIDE_INT_PRINT_DEC ";\n", bits, regno, regno, UINTVAL (align)); } if (cfun->machine->has_softstack) --- 1354,1360 ---- fputs (";\n", file); if (!CONST_INT_P (size) || UINTVAL (align) > GET_MODE_SIZE (DImode)) fprintf (file, ! "\t\tand.b%d %%r%d, %%r%d, -" HOST_WIDE_INT_PRINT_DEC ";\n", bits, regno, regno, UINTVAL (align)); } if (cfun->machine->has_softstack) diff -Nrcpad gcc-7.4.0/gcc/config/pa/pa.c gcc-7.5.0/gcc/config/pa/pa.c *** gcc-7.4.0/gcc/config/pa/pa.c Sun Jul 29 16:03:58 2018 --- gcc-7.5.0/gcc/config/pa/pa.c Fri Sep 20 22:03:40 2019 *************** pa_cannot_change_mode_class (machine_mod *** 10001,10010 **** /* There is no way to load QImode or HImode values directly from memory to a FP register. SImode loads to the FP registers are not zero extended. On the 64-bit target, this conflicts with the definition ! of LOAD_EXTEND_OP. Thus, we can't allow changing between modes with ! different sizes in the floating-point registers. */ if (MAYBE_FP_REG_CLASS_P (rclass)) ! return true; /* HARD_REGNO_MODE_OK places modes with sizes larger than a word in specific sets of registers. Thus, we cannot allow changing --- 10001,10011 ---- /* There is no way to load QImode or HImode values directly from memory to a FP register. SImode loads to the FP registers are not zero extended. On the 64-bit target, this conflicts with the definition ! of LOAD_EXTEND_OP. Thus, we reject all mode changes in the FP registers ! except for DImode to SImode on the 64-bit target. It is handled by ! register renaming in pa_print_operand. */ if (MAYBE_FP_REG_CLASS_P (rclass)) ! return !(TARGET_64BIT && from == DImode && to == SImode); /* HARD_REGNO_MODE_OK places modes with sizes larger than a word in specific sets of registers. Thus, we cannot allow changing *************** pa_trampoline_init (rtx m_tramp, tree fn *** 10199,10206 **** } #ifdef HAVE_ENABLE_EXECUTE_STACK !  emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"), !      LCT_NORMAL, VOIDmode, 1, XEXP (m_tramp, 0), Pmode); #endif } --- 10200,10207 ---- } #ifdef HAVE_ENABLE_EXECUTE_STACK ! emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"), ! LCT_NORMAL, VOIDmode, 1, XEXP (m_tramp, 0), Pmode); #endif } diff -Nrcpad gcc-7.4.0/gcc/config/pa/pa.md gcc-7.5.0/gcc/config/pa/pa.md *** gcc-7.4.0/gcc/config/pa/pa.md Thu Sep 20 01:10:47 2018 --- gcc-7.5.0/gcc/config/pa/pa.md Sun Jun 16 21:49:19 2019 *************** *** 5319,5326 **** (define_insn "umulsidi3" [(set (match_operand:DI 0 "register_operand" "=f") ! (mult:DI (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "f")) ! (zero_extend:DI (match_operand:SI 2 "nonimmediate_operand" "f"))))] "TARGET_PA_11 && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT" "xmpyu %1,%2,%0" [(set_attr "type" "fpmuldbl") --- 5319,5326 ---- (define_insn "umulsidi3" [(set (match_operand:DI 0 "register_operand" "=f") ! (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "f")) ! (zero_extend:DI (match_operand:SI 2 "register_operand" "f"))))] "TARGET_PA_11 && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT" "xmpyu %1,%2,%0" [(set_attr "type" "fpmuldbl") *************** *** 5328,5334 **** (define_insn "" [(set (match_operand:DI 0 "register_operand" "=f") ! (mult:DI (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "f")) (match_operand:DI 2 "uint32_operand" "f")))] "TARGET_PA_11 && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT && !TARGET_64BIT" "xmpyu %1,%R2,%0" --- 5328,5334 ---- (define_insn "" [(set (match_operand:DI 0 "register_operand" "=f") ! (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "f")) (match_operand:DI 2 "uint32_operand" "f")))] "TARGET_PA_11 && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT && !TARGET_64BIT" "xmpyu %1,%R2,%0" *************** *** 5337,5343 **** (define_insn "" [(set (match_operand:DI 0 "register_operand" "=f") ! (mult:DI (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "f")) (match_operand:DI 2 "uint32_operand" "f")))] "TARGET_PA_11 && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT && TARGET_64BIT" "xmpyu %1,%2R,%0" --- 5337,5343 ---- (define_insn "" [(set (match_operand:DI 0 "register_operand" "=f") ! (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "f")) (match_operand:DI 2 "uint32_operand" "f")))] "TARGET_PA_11 && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT && TARGET_64BIT" "xmpyu %1,%2R,%0" *************** *** 6904,6924 **** rtx stack = operands[2]; rtx fp = operands[3]; - lab = copy_to_reg (lab); - emit_clobber (gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (VOIDmode))); emit_clobber (gen_rtx_MEM (BLKmode, hard_frame_pointer_rtx)); ! /* Restore the frame pointer. The virtual_stack_vars_rtx is saved ! instead of the hard_frame_pointer_rtx in the save area. As a ! result, an extra instruction is needed to adjust for the offset ! of the virtual stack variables and the hard frame pointer. */ ! if (GET_CODE (fp) != REG) ! fp = force_reg (Pmode, fp); ! emit_move_insn (hard_frame_pointer_rtx, plus_constant (Pmode, fp, -8)); emit_stack_restore (SAVE_NONLOCAL, stack); emit_use (hard_frame_pointer_rtx); emit_use (stack_pointer_rtx); --- 6904,6927 ---- rtx stack = operands[2]; rtx fp = operands[3]; emit_clobber (gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (VOIDmode))); emit_clobber (gen_rtx_MEM (BLKmode, hard_frame_pointer_rtx)); ! lab = copy_to_reg (lab); + /* Restore the stack and frame pointers. The virtual_stack_vars_rtx + is saved instead of the hard_frame_pointer_rtx in the save area. + As a result, an extra instruction is needed to adjust for the offset + of the virtual stack variables and the hard frame pointer. */ + fp = copy_to_reg (fp); emit_stack_restore (SAVE_NONLOCAL, stack); + /* Ensure the frame pointer move is not optimized. */ + emit_insn (gen_blockage ()); + emit_clobber (hard_frame_pointer_rtx); + emit_clobber (frame_pointer_rtx); + emit_move_insn (hard_frame_pointer_rtx, plus_constant (Pmode, fp, -8)); + emit_use (hard_frame_pointer_rtx); emit_use (stack_pointer_rtx); *************** add,l %2,%3,%3\;bv,n %%r0(%3)" *** 8695,8717 **** emit_clobber (gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (VOIDmode))); emit_clobber (gen_rtx_MEM (BLKmode, hard_frame_pointer_rtx)); - /* Restore the frame pointer. The virtual_stack_vars_rtx is saved - instead of the hard_frame_pointer_rtx in the save area. We need - to adjust for the offset between these two values. */ - if (GET_CODE (fp) != REG) - fp = force_reg (Pmode, fp); - emit_move_insn (hard_frame_pointer_rtx, plus_constant (Pmode, fp, -8)); - - /* This bit is the same as expand_builtin_longjmp. */ - emit_stack_restore (SAVE_NONLOCAL, stack); - emit_use (hard_frame_pointer_rtx); - emit_use (stack_pointer_rtx); - /* Load the label we are jumping through into r1 so that we know where to look for it when we get back to setjmp's function for restoring the gp. */ emit_move_insn (pv, lab); /* Prevent the insns above from being scheduled into the delay slot of the interspace jump because the space register could change. */ emit_insn (gen_blockage ()); --- 8698,8723 ---- emit_clobber (gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (VOIDmode))); emit_clobber (gen_rtx_MEM (BLKmode, hard_frame_pointer_rtx)); /* Load the label we are jumping through into r1 so that we know where to look for it when we get back to setjmp's function for restoring the gp. */ emit_move_insn (pv, lab); + /* Restore the stack and frame pointers. The virtual_stack_vars_rtx + is saved instead of the hard_frame_pointer_rtx in the save area. + We need to adjust for the offset between these two values. */ + fp = copy_to_reg (fp); + emit_stack_restore (SAVE_NONLOCAL, stack); + + /* Ensure the frame pointer move is not optimized. */ + emit_insn (gen_blockage ()); + emit_clobber (hard_frame_pointer_rtx); + emit_clobber (frame_pointer_rtx); + emit_move_insn (hard_frame_pointer_rtx, plus_constant (Pmode, fp, -8)); + + emit_use (hard_frame_pointer_rtx); + emit_use (stack_pointer_rtx); + /* Prevent the insns above from being scheduled into the delay slot of the interspace jump because the space register could change. */ emit_insn (gen_blockage ()); diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/altivec.h gcc-7.5.0/gcc/config/rs6000/altivec.h *** gcc-7.4.0/gcc/config/rs6000/altivec.h Tue Mar 6 23:52:59 2018 --- gcc-7.5.0/gcc/config/rs6000/altivec.h Tue Apr 2 01:08:31 2019 *************** *** 388,393 **** --- 388,398 ---- #define vec_vsubuqm __builtin_vec_vsubuqm #define vec_vupkhsw __builtin_vec_vupkhsw #define vec_vupklsw __builtin_vec_vupklsw + #define vec_sbox_be __builtin_crypto_vsbox_be + #define vec_cipher_be __builtin_crypto_vcipher_be + #define vec_cipherlast_be __builtin_crypto_vcipherlast_be + #define vec_ncipher_be __builtin_crypto_vncipher_be + #define vec_ncipherlast_be __builtin_crypto_vncipherlast_be #endif #ifdef __POWER9_VECTOR__ *************** *** 421,426 **** --- 426,436 ---- #define vec_insert_exp __builtin_vec_insert_exp #define vec_test_data_class __builtin_vec_test_data_class + #define vec_extract_fp_from_shorth __builtin_vec_vextract_fp_from_shorth + #define vec_extract_fp_from_shortl __builtin_vec_vextract_fp_from_shortl + #define vec_extract_fp32_from_shorth __builtin_vec_vextract_fp_from_shorth + #define vec_extract_fp32_from_shortl __builtin_vec_vextract_fp_from_shortl + #define scalar_extract_exp __builtin_vec_scalar_extract_exp #define scalar_extract_sig __builtin_vec_scalar_extract_sig #define scalar_insert_exp __builtin_vec_scalar_insert_exp diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/altivec.md gcc-7.5.0/gcc/config/rs6000/altivec.md *** gcc-7.4.0/gcc/config/rs6000/altivec.md Fri Mar 23 17:48:58 2018 --- gcc-7.5.0/gcc/config/rs6000/altivec.md Fri Aug 30 14:22:48 2019 *************** *** 154,162 **** UNSPEC_BCDADD UNSPEC_BCDSUB UNSPEC_BCD_OVERFLOW - UNSPEC_CMPRB - UNSPEC_CMPRB2 - UNSPEC_CMPEQB UNSPEC_VRLMI UNSPEC_VRLNM ]) --- 154,159 ---- *************** *** 3787,4009 **** [(set_attr "length" "4") (set_attr "type" "vecsimple")]) - (define_insn "darn_32" - [(set (match_operand:SI 0 "register_operand" "=r") - (unspec:SI [(const_int 0)] UNSPEC_DARN_32))] - "TARGET_P9_MISC" - "darn %0,0" - [(set_attr "type" "integer")]) - - (define_insn "darn_raw" - [(set (match_operand:DI 0 "register_operand" "=r") - (unspec:DI [(const_int 0)] UNSPEC_DARN_RAW))] - "TARGET_P9_MISC && TARGET_64BIT" - "darn %0,2" - [(set_attr "type" "integer")]) - - (define_insn "darn" - [(set (match_operand:DI 0 "register_operand" "=r") - (unspec:DI [(const_int 0)] UNSPEC_DARN))] - "TARGET_P9_MISC && TARGET_64BIT" - "darn %0,1" - [(set_attr "type" "integer")]) - - ;; Test byte within range. - ;; - ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx - ;; represents a byte whose value is ignored in this context and - ;; vv, the least significant byte, holds the byte value that is to - ;; be tested for membership within the range specified by operand 2. - ;; The bytes of operand 2 are organized as xx:xx:hi:lo. - ;; - ;; Return in target register operand 0 a value of 1 if lo <= vv and - ;; vv <= hi. Otherwise, set register operand 0 to 0. - ;; - ;; Though the instructions to which this expansion maps operate on - ;; 64-bit registers, the current implementation only operates on - ;; SI-mode operands as the high-order bits provide no information - ;; that is not already available in the low-order bits. To avoid the - ;; costs of data widening operations, future enhancements might allow - ;; DI mode for operand 0 and/or might allow operand 1 to be QI mode. - (define_expand "cmprb" - [(set (match_dup 3) - (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") - (match_operand:SI 2 "gpc_reg_operand" "r")] - UNSPEC_CMPRB)) - (set (match_operand:SI 0 "gpc_reg_operand" "=r") - (if_then_else:SI (lt (match_dup 3) - (const_int 0)) - (const_int -1) - (if_then_else (gt (match_dup 3) - (const_int 0)) - (const_int 1) - (const_int 0))))] - "TARGET_P9_MISC" - { - operands[3] = gen_reg_rtx (CCmode); - }) - - ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx - ;; represents a byte whose value is ignored in this context and - ;; vv, the least significant byte, holds the byte value that is to - ;; be tested for membership within the range specified by operand 2. - ;; The bytes of operand 2 are organized as xx:xx:hi:lo. - ;; - ;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if - ;; lo <= vv and vv <= hi. Otherwise, set the GT bit to 0. The other - ;; 3 bits of the target CR register are all set to 0. - (define_insn "*cmprb_internal" - [(set (match_operand:CC 0 "cc_reg_operand" "=y") - (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") - (match_operand:SI 2 "gpc_reg_operand" "r")] - UNSPEC_CMPRB))] - "TARGET_P9_MISC" - "cmprb %0,0,%1,%2" - [(set_attr "type" "logical")]) - - ;; Set operand 0 register to -1 if the LT bit (0x8) of condition - ;; register operand 1 is on. Otherwise, set operand 0 register to 1 - ;; if the GT bit (0x4) of condition register operand 1 is on. - ;; Otherwise, set operand 0 to 0. Note that the result stored into - ;; register operand 0 is non-zero iff either the LT or GT bits are on - ;; within condition register operand 1. - (define_insn "setb_signed" - [(set (match_operand:SI 0 "gpc_reg_operand" "=r") - (if_then_else:SI (lt (match_operand:CC 1 "cc_reg_operand" "y") - (const_int 0)) - (const_int -1) - (if_then_else (gt (match_dup 1) - (const_int 0)) - (const_int 1) - (const_int 0))))] - "TARGET_P9_MISC" - "setb %0,%1" - [(set_attr "type" "logical")]) - - (define_insn "setb_unsigned" - [(set (match_operand:SI 0 "gpc_reg_operand" "=r") - (if_then_else:SI (ltu (match_operand:CCUNS 1 "cc_reg_operand" "y") - (const_int 0)) - (const_int -1) - (if_then_else (gtu (match_dup 1) - (const_int 0)) - (const_int 1) - (const_int 0))))] - "TARGET_P9_MISC" - "setb %0,%1" - [(set_attr "type" "logical")]) - - ;; Test byte within two ranges. - ;; - ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx - ;; represents a byte whose value is ignored in this context and - ;; vv, the least significant byte, holds the byte value that is to - ;; be tested for membership within the range specified by operand 2. - ;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2. - ;; - ;; Return in target register operand 0 a value of 1 if (lo_1 <= vv and - ;; vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2). Otherwise, set register - ;; operand 0 to 0. - ;; - ;; Though the instructions to which this expansion maps operate on - ;; 64-bit registers, the current implementation only operates on - ;; SI-mode operands as the high-order bits provide no information - ;; that is not already available in the low-order bits. To avoid the - ;; costs of data widening operations, future enhancements might allow - ;; DI mode for operand 0 and/or might allow operand 1 to be QI mode. - (define_expand "cmprb2" - [(set (match_dup 3) - (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") - (match_operand:SI 2 "gpc_reg_operand" "r")] - UNSPEC_CMPRB2)) - (set (match_operand:SI 0 "gpc_reg_operand" "=r") - (if_then_else:SI (lt (match_dup 3) - (const_int 0)) - (const_int -1) - (if_then_else (gt (match_dup 3) - (const_int 0)) - (const_int 1) - (const_int 0))))] - "TARGET_P9_MISC" - { - operands[3] = gen_reg_rtx (CCmode); - }) - - ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx - ;; represents a byte whose value is ignored in this context and - ;; vv, the least significant byte, holds the byte value that is to - ;; be tested for membership within the ranges specified by operand 2. - ;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2. - ;; - ;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if - ;; (lo_1 <= vv and vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2). - ;; Otherwise, set the GT bit to 0. The other 3 bits of the target - ;; CR register are all set to 0. - (define_insn "*cmprb2_internal" - [(set (match_operand:CC 0 "cc_reg_operand" "=y") - (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") - (match_operand:SI 2 "gpc_reg_operand" "r")] - UNSPEC_CMPRB2))] - "TARGET_P9_MISC" - "cmprb %0,1,%1,%2" - [(set_attr "type" "logical")]) - - ;; Test byte membership within set of 8 bytes. - ;; - ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx - ;; represents a byte whose value is ignored in this context and - ;; vv, the least significant byte, holds the byte value that is to - ;; be tested for membership within the set specified by operand 2. - ;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7. - ;; - ;; Return in target register operand 0 a value of 1 if vv equals one - ;; of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise, set - ;; register operand 0 to 0. Note that the 8 byte values held within - ;; operand 2 need not be unique. - ;; - ;; Though the instructions to which this expansion maps operate on - ;; 64-bit registers, the current implementation requires that operands - ;; 0 and 1 have mode SI as the high-order bits provide no information - ;; that is not already available in the low-order bits. To avoid the - ;; costs of data widening operations, future enhancements might allow - ;; DI mode for operand 0 and/or might allow operand 1 to be QI mode. - (define_expand "cmpeqb" - [(set (match_dup 3) - (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") - (match_operand:DI 2 "gpc_reg_operand" "r")] - UNSPEC_CMPEQB)) - (set (match_operand:SI 0 "gpc_reg_operand" "=r") - (if_then_else:SI (lt (match_dup 3) - (const_int 0)) - (const_int -1) - (if_then_else (gt (match_dup 3) - (const_int 0)) - (const_int 1) - (const_int 0))))] - "TARGET_P9_MISC && TARGET_64BIT" - { - operands[3] = gen_reg_rtx (CCmode); - }) - - ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx - ;; represents a byte whose value is ignored in this context and - ;; vv, the least significant byte, holds the byte value that is to - ;; be tested for membership within the set specified by operand 2. - ;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7. - ;; - ;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if vv - ;; equals one of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise, - ;; set the GT bit to zero. The other 3 bits of the target CR register - ;; are all set to 0. - (define_insn "*cmpeqb_internal" - [(set (match_operand:CC 0 "cc_reg_operand" "=y") - (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") - (match_operand:DI 2 "gpc_reg_operand" "r")] - UNSPEC_CMPEQB))] - "TARGET_P9_MISC && TARGET_64BIT" - "cmpeqb %0,%1,%2" - [(set_attr "type" "logical")]) - (define_expand "bcd_" [(parallel [(set (reg:CCFP CR6_REGNO) (compare:CCFP --- 3784,3789 ---- diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/crypto.md gcc-7.5.0/gcc/config/rs6000/crypto.md *** gcc-7.4.0/gcc/config/rs6000/crypto.md Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/config/rs6000/crypto.md Thu Mar 7 01:54:46 2019 *************** *** 48,53 **** --- 48,56 ---- ;; Iterator for VSHASIGMAD/VSHASIGMAW (define_mode_iterator CR_hash [V4SI V2DI]) + ;; Iterator for VSBOX/VCIPHER/VNCIPHER/VCIPHERLAST/VNCIPHERLAST + (define_mode_iterator CR_vqdi [V16QI V2DI]) + ;; Iterator for the other crypto functions (define_int_iterator CR_code [UNSPEC_VCIPHER UNSPEC_VNCIPHER *************** *** 60,69 **** (UNSPEC_VNCIPHERLAST "vncipherlast")]) ;; 2 operand crypto instructions ! (define_insn "crypto_" ! [(set (match_operand:V2DI 0 "register_operand" "=v") ! (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "v") ! (match_operand:V2DI 2 "register_operand" "v")] CR_code))] "TARGET_CRYPTO" " %0,%1,%2" --- 63,72 ---- (UNSPEC_VNCIPHERLAST "vncipherlast")]) ;; 2 operand crypto instructions ! (define_insn "crypto__" ! [(set (match_operand:CR_vqdi 0 "register_operand" "=v") ! (unspec:CR_vqdi [(match_operand:CR_vqdi 1 "register_operand" "v") ! (match_operand:CR_vqdi 2 "register_operand" "v")] CR_code))] "TARGET_CRYPTO" " %0,%1,%2" *************** *** 90,98 **** [(set_attr "type" "vecperm")]) ;; 1 operand crypto instruction ! (define_insn "crypto_vsbox" ! [(set (match_operand:V2DI 0 "register_operand" "=v") ! (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "v")] UNSPEC_VSBOX))] "TARGET_CRYPTO" "vsbox %0,%1" --- 93,101 ---- [(set_attr "type" "vecperm")]) ;; 1 operand crypto instruction ! (define_insn "crypto_vsbox_" ! [(set (match_operand:CR_vqdi 0 "register_operand" "=v") ! (unspec:CR_vqdi [(match_operand:CR_vqdi 1 "register_operand" "v")] UNSPEC_VSBOX))] "TARGET_CRYPTO" "vsbox %0,%1" diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/darwin.h gcc-7.5.0/gcc/config/rs6000/darwin.h *** gcc-7.4.0/gcc/config/rs6000/darwin.h Tue Feb 7 11:29:06 2017 --- gcc-7.5.0/gcc/config/rs6000/darwin.h Fri Nov 1 20:44:32 2019 *************** *** 53,69 **** #define TARGET_OS_CPP_BUILTINS() \ do \ { \ - if (!TARGET_64BIT) builtin_define ("__ppc__"); \ - if (TARGET_64BIT) builtin_define ("__ppc64__"); \ builtin_define ("__POWERPC__"); \ builtin_define ("__NATURAL_ALIGNMENT__"); \ darwin_cpp_builtins (pfile); \ } \ while (0) - /* Generate branch islands stubs if this is true. */ - extern int darwin_emit_branch_islands; - #define SUBTARGET_OVERRIDE_OPTIONS darwin_rs6000_override_options () #define C_COMMON_OVERRIDE_OPTIONS do { \ --- 53,80 ---- #define TARGET_OS_CPP_BUILTINS() \ do \ { \ builtin_define ("__POWERPC__"); \ + builtin_define ("__PPC__"); \ + if (TARGET_64BIT) \ + { \ + builtin_define ("__ppc64__"); \ + builtin_define ("__PPC64__"); \ + builtin_define ("__powerpc64__"); \ + builtin_assert ("cpu=powerpc64"); \ + builtin_assert ("machine=powerpc64"); \ + } \ + else \ + { \ + builtin_define ("__ppc__"); \ + builtin_define_std ("PPC"); \ + builtin_assert ("cpu=powerpc"); \ + builtin_assert ("machine=powerpc"); \ + } \ builtin_define ("__NATURAL_ALIGNMENT__"); \ darwin_cpp_builtins (pfile); \ } \ while (0) #define SUBTARGET_OVERRIDE_OPTIONS darwin_rs6000_override_options () #define C_COMMON_OVERRIDE_OPTIONS do { \ *************** extern int darwin_emit_branch_islands; *** 98,108 **** % 10.4 mmacosx-version-min= crt2.o%s)}" #undef SUBTARGET_EXTRA_SPECS #define SUBTARGET_EXTRA_SPECS \ --- 127,165 ---- mcpu=970:ppc970; \ mcpu=power4:ppc970; \ mcpu=G5:ppc970; \ ! :ppc}" ! /* We need to jam the crt to 10.5 for 10.6 (Rosetta) use. */ ! #undef DARWIN_CRT1_SPEC ! #define DARWIN_CRT1_SPEC \ ! "%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o) \ ! %:version-compare(>< 10.5 10.7 mmacosx-version-min= -lcrt1.10.5.o) \ ! %{fgnu-tm: -lcrttms.o}" ! ! /* crt2.o is at least partially required for 10.3.x and earlier. ! It deals with registration of the unwind frames, where this is not ! automatically provided by the system. So we need it for any case that ! might use exceptions. */ ! #undef DARWIN_CRT2_SPEC #define DARWIN_CRT2_SPEC \ ! "%{!m64:%{shared-libgcc|static-libstdc++|fexceptions|fobjc-exceptions|fgnu-runtime: \ ! %:version-compare(!> 10.4 mmacosx-version-min= crt2.o%s) \ ! }}" ! ! /* crt3 deals with providing cxa_atexit on earlier systems (or fixing it up, ! for broken versions). It's only needed for c++ code, so we can make it ! conditional on shared-libgcc since that's forced on for c++. */ ! #undef DARWIN_CRT3_SPEC ! #define DARWIN_CRT3_SPEC \ ! "%{!m64:%{shared-libgcc|static-libstdc++: \ ! %:version-compare(>< 10.4 10.5 mmacosx-version-min= crt3.o%s) \ ! %:version-compare(!> 10.4 mmacosx-version-min= crt3_2.o%s) \ ! }}" ! ! /* The PPC regs save/restore functions are leaves and could, conceivably ! be used by the tm destructor. */ ! #undef ENDFILE_SPEC ! #define ENDFILE_SPEC TM_DESTRUCTOR " -lef_ppc" #undef SUBTARGET_EXTRA_SPECS #define SUBTARGET_EXTRA_SPECS \ *************** extern int darwin_emit_branch_islands; *** 244,252 **** /* This is supported in cctools 465 and later. The macro test above prevents using it in earlier build environments. */ #define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \ ! if ((LOG) != 0) \ { \ ! if ((MAX_SKIP) == 0) \ fprintf ((FILE), "\t.p2align %d\n", (LOG)); \ else \ fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \ --- 282,290 ---- /* This is supported in cctools 465 and later. The macro test above prevents using it in earlier build environments. */ #define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \ ! if ((LOG) > 0) \ { \ ! if ((MAX_SKIP) <= 0) \ fprintf ((FILE), "\t.p2align %d\n", (LOG)); \ else \ fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \ *************** extern int darwin_emit_branch_islands; *** 358,363 **** --- 396,402 ---- do \ { \ DARWIN_REGISTER_TARGET_PRAGMAS(); \ + targetm.target_option.pragma_parse = rs6000_pragma_target_parse; \ targetm.resolve_overloaded_builtin = altivec_resolve_overloaded_builtin; \ } \ while (0) *************** do { \ *** 417,422 **** --- 456,464 ---- this will need to be modified similar to the x86 case. */ #define TARGET_FOLD_BUILTIN SUBTARGET_FOLD_BUILTIN + /* First available SYMBOL flag bit for use by subtargets. */ + #define SYMBOL_FLAG_SUBT_DEP (SYMBOL_FLAG_MACH_DEP) + /* Use standard DWARF numbering for DWARF debugging information. */ #define RS6000_USE_DWARF_NUMBERING diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/darwin.md gcc-7.5.0/gcc/config/rs6000/darwin.md *** gcc-7.4.0/gcc/config/rs6000/darwin.md Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/config/rs6000/darwin.md Tue Oct 29 20:20:23 2019 *************** You should have received a copy of the G *** 139,176 **** [(set_attr "type" "store") (set_attr "length" "4")]) - ;; 64-bit MachO load/store support - (define_insn "movdi_low" - [(set (match_operand:DI 0 "gpc_reg_operand" "=r,*!d") - (mem:DI (lo_sum:DI (match_operand:DI 1 "gpc_reg_operand" "b,b") - (match_operand 2 "" ""))))] - "TARGET_MACHO && TARGET_64BIT" - "@ - ld %0,lo16(%2)(%1) - lfd %0,lo16(%2)(%1)" - [(set_attr "type" "load") - (set_attr "length" "4")]) - - (define_insn "movsi_low_st" - [(set (mem:SI (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b") - (match_operand 2 "" ""))) - (match_operand:SI 0 "gpc_reg_operand" "r"))] - "TARGET_MACHO && ! TARGET_64BIT" - "stw %0,lo16(%2)(%1)" - [(set_attr "type" "store") - (set_attr "length" "4")]) - - (define_insn "movdi_low_st" - [(set (mem:DI (lo_sum:DI (match_operand:DI 1 "gpc_reg_operand" "b,b") - (match_operand 2 "" ""))) - (match_operand:DI 0 "gpc_reg_operand" "r,*!d"))] - "TARGET_MACHO && TARGET_64BIT" - "@ - std %0,lo16(%2)(%1) - stfd %0,lo16(%2)(%1)" - [(set_attr "type" "store") - (set_attr "length" "4")]) - ;; Mach-O PIC trickery. (define_expand "macho_high" [(set (match_operand 0 "" "") --- 139,144 ---- diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/darwin32-biarch.h gcc-7.5.0/gcc/config/rs6000/darwin32-biarch.h *** gcc-7.4.0/gcc/config/rs6000/darwin32-biarch.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/config/rs6000/darwin32-biarch.h Thu Sep 5 19:14:35 2019 *************** *** 0 **** --- 1,49 ---- + /* Target definitions for PowerPC running Darwin (Mac OS X) for a 32b host + with a 64b miultilib. + Copyright (C) 2019 Free Software Foundation, Inc. + + 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 + . */ + + #undef DARWIN_ARCH_SPEC + #define DARWIN_ARCH_SPEC "%{m64:ppc64;:ppc}" + + #undef DARWIN_SUBARCH_SPEC + #define DARWIN_SUBARCH_SPEC " \ + %{m64: ppc64} \ + %{!m64: \ + %{mcpu=601:ppc601; \ + mcpu=603:ppc603; \ + mcpu=603e:ppc603; \ + mcpu=604:ppc604; \ + mcpu=604e:ppc604e; \ + mcpu=740:ppc750; \ + mcpu=750:ppc750; \ + mcpu=G3:ppc750; \ + mcpu=7400:ppc7400; \ + mcpu=G4:ppc7400; \ + mcpu=7450:ppc7450; \ + mcpu=970:ppc970; \ + mcpu=power4:ppc970; \ + mcpu=G5:ppc970; \ + :ppc}}" + + #undef SUBTARGET_EXTRA_SPECS + #define SUBTARGET_EXTRA_SPECS \ + DARWIN_EXTRA_SPECS \ + { "darwin_arch", DARWIN_ARCH_SPEC }, \ + { "darwin_crt2", DARWIN_CRT2_SPEC }, \ + { "darwin_subarch", DARWIN_SUBARCH_SPEC }, diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/darwin64-biarch.h gcc-7.5.0/gcc/config/rs6000/darwin64-biarch.h *** gcc-7.4.0/gcc/config/rs6000/darwin64-biarch.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/config/rs6000/darwin64-biarch.h Thu Sep 5 19:14:35 2019 *************** *** 0 **** --- 1,38 ---- + /* Target definitions for PowerPC64 running Darwin (Mac OS X) for a 64b host + supporting a 32b multilib. + Copyright (C) 2006-2019 Free Software Foundation, Inc. + Contributed by Apple Computer Inc. + + 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 + . */ + + #undef TARGET_DEFAULT + #define TARGET_DEFAULT (MASK_POWERPC64 | MASK_64BIT \ + | MASK_MULTIPLE | MASK_PPC_GFXOPT) + + #undef DARWIN_ARCH_SPEC + #define DARWIN_ARCH_SPEC "%{m32:ppc;:ppc64}" + + /* Actually, there's really only 970 as an active option. */ + #undef DARWIN_SUBARCH_SPEC + #define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC + + #undef SUBTARGET_EXTRA_SPECS + #define SUBTARGET_EXTRA_SPECS \ + DARWIN_EXTRA_SPECS \ + { "darwin_arch", DARWIN_ARCH_SPEC }, \ + { "darwin_crt2", "" }, \ + { "darwin_subarch", DARWIN_SUBARCH_SPEC }, diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/darwin64.h gcc-7.5.0/gcc/config/rs6000/darwin64.h *** gcc-7.4.0/gcc/config/rs6000/darwin64.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/config/rs6000/darwin64.h Thu Jan 1 00:00:00 1970 *************** *** 1,32 **** - /* Target definitions for PowerPC running Darwin (Mac OS X). - Copyright (C) 2006-2017 Free Software Foundation, Inc. - Contributed by Apple Computer Inc. - - 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 - . */ - - #undef TARGET_DEFAULT - #define TARGET_DEFAULT (MASK_POWERPC64 | MASK_64BIT \ - | MASK_MULTIPLE | MASK_PPC_GFXOPT) - - #undef DARWIN_ARCH_SPEC - #define DARWIN_ARCH_SPEC "%{m32:ppc;:ppc64}" - - #undef DARWIN_SUBARCH_SPEC - #define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC - - #undef DARWIN_CRT2_SPEC - #define DARWIN_CRT2_SPEC "" --- 0 ---- diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/darwin7.h gcc-7.5.0/gcc/config/rs6000/darwin7.h *** gcc-7.4.0/gcc/config/rs6000/darwin7.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/config/rs6000/darwin7.h Mon Dec 24 13:17:28 2018 *************** along with GCC; see the file COPYING3. *** 28,32 **** --- 28,37 ---- %:version-compare(!< 10.3 mmacosx-version-min= -lmx)\ -lSystem}" + /* This generation of tools (specifically the archive tool) did not + export weak symbols from the TOC. */ + #undef TARGET_WEAK_NOT_IN_ARCHIVE_TOC + #define TARGET_WEAK_NOT_IN_ARCHIVE_TOC 1 + #undef DEF_MIN_OSX_VERSION #define DEF_MIN_OSX_VERSION "10.3.9" diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/rs6000-builtin.def gcc-7.5.0/gcc/config/rs6000/rs6000-builtin.def *** gcc-7.4.0/gcc/config/rs6000/rs6000-builtin.def Mon Apr 2 19:19:37 2018 --- gcc-7.5.0/gcc/config/rs6000/rs6000-builtin.def Tue Apr 2 01:08:31 2019 *************** BU_ALTIVEC_3 (VSEL_1TI_UNS, "vsel_1ti_ *** 1000,1005 **** --- 1000,1006 ---- BU_ALTIVEC_3 (VSLDOI_16QI, "vsldoi_16qi", CONST, altivec_vsldoi_v16qi) BU_ALTIVEC_3 (VSLDOI_8HI, "vsldoi_8hi", CONST, altivec_vsldoi_v8hi) BU_ALTIVEC_3 (VSLDOI_4SI, "vsldoi_4si", CONST, altivec_vsldoi_v4si) + BU_ALTIVEC_3 (VSLDOI_2DI, "vsldoi_2di", CONST, altivec_vsldoi_v2di) BU_ALTIVEC_3 (VSLDOI_4SF, "vsldoi_4sf", CONST, altivec_vsldoi_v4sf) BU_ALTIVEC_3 (VSLDOI_2DF, "vsldoi_2df", CONST, altivec_vsldoi_v2df) *************** BU_P9V_OVERLOAD_1 (VSTDCNSP, "scalar_tes *** 1988,1993 **** --- 1989,1997 ---- BU_P9V_OVERLOAD_1 (REVB, "revb") + BU_P9V_OVERLOAD_1 (VEXTRACT_FP_FROM_SHORTH, "vextract_fp_from_shorth") + BU_P9V_OVERLOAD_1 (VEXTRACT_FP_FROM_SHORTL, "vextract_fp_from_shortl") + /* ISA 3.0 vector scalar overloaded 2 argument functions. */ BU_P9V_OVERLOAD_2 (VSIEDP, "scalar_insert_exp") *************** BU_P9V_VSX_1 (VEEDP, "extract_exp_dp", C *** 2005,2010 **** --- 2009,2016 ---- BU_P9V_VSX_1 (VEESP, "extract_exp_sp", CONST, xvxexpsp) BU_P9V_VSX_1 (VESDP, "extract_sig_dp", CONST, xvxsigdp) BU_P9V_VSX_1 (VESSP, "extract_sig_sp", CONST, xvxsigsp) + BU_P9V_VSX_1 (VEXTRACT_FP_FROM_SHORTH, "vextract_fp_from_shorth", CONST, vextract_fp_from_shorth) + BU_P9V_VSX_1 (VEXTRACT_FP_FROM_SHORTL, "vextract_fp_from_shortl", CONST, vextract_fp_from_shortl) /* 2 argument vsx vector functions added in ISA 3.0 (power9). */ BU_P9V_VSX_2 (VIEDP, "insert_exp_dp", CONST, xviexpdp) *************** BU_FLOAT128_1 (FABSQ, "fabsq", CO *** 2233,2245 **** BU_FLOAT128_2 (COPYSIGNQ, "copysignq", CONST, copysignkf3) /* 1 argument crypto functions. */ ! BU_CRYPTO_1 (VSBOX, "vsbox", CONST, crypto_vsbox) /* 2 argument crypto functions. */ ! BU_CRYPTO_2 (VCIPHER, "vcipher", CONST, crypto_vcipher) ! BU_CRYPTO_2 (VCIPHERLAST, "vcipherlast", CONST, crypto_vcipherlast) ! BU_CRYPTO_2 (VNCIPHER, "vncipher", CONST, crypto_vncipher) ! BU_CRYPTO_2 (VNCIPHERLAST, "vncipherlast", CONST, crypto_vncipherlast) BU_CRYPTO_2A (VPMSUMB, "vpmsumb", CONST, crypto_vpmsumb) BU_CRYPTO_2A (VPMSUMH, "vpmsumh", CONST, crypto_vpmsumh) BU_CRYPTO_2A (VPMSUMW, "vpmsumw", CONST, crypto_vpmsumw) --- 2239,2260 ---- BU_FLOAT128_2 (COPYSIGNQ, "copysignq", CONST, copysignkf3) /* 1 argument crypto functions. */ ! BU_CRYPTO_1 (VSBOX, "vsbox", CONST, crypto_vsbox_v2di) ! BU_CRYPTO_1 (VSBOX_BE, "vsbox_be", CONST, crypto_vsbox_v16qi) /* 2 argument crypto functions. */ ! BU_CRYPTO_2 (VCIPHER, "vcipher", CONST, crypto_vcipher_v2di) ! BU_CRYPTO_2 (VCIPHER_BE, "vcipher_be", CONST, crypto_vcipher_v16qi) ! BU_CRYPTO_2 (VCIPHERLAST, "vcipherlast", ! CONST, crypto_vcipherlast_v2di) ! BU_CRYPTO_2 (VCIPHERLAST_BE, "vcipherlast_be", ! CONST, crypto_vcipherlast_v16qi) ! BU_CRYPTO_2 (VNCIPHER, "vncipher", CONST, crypto_vncipher_v2di) ! BU_CRYPTO_2 (VNCIPHER_BE, "vncipher_be", CONST, crypto_vncipher_v16qi) ! BU_CRYPTO_2 (VNCIPHERLAST, "vncipherlast", ! CONST, crypto_vncipherlast_v2di) ! BU_CRYPTO_2 (VNCIPHERLAST_BE, "vncipherlast_be", ! CONST, crypto_vncipherlast_v16qi) BU_CRYPTO_2A (VPMSUMB, "vpmsumb", CONST, crypto_vpmsumb) BU_CRYPTO_2A (VPMSUMH, "vpmsumh", CONST, crypto_vpmsumh) BU_CRYPTO_2A (VPMSUMW, "vpmsumw", CONST, crypto_vpmsumw) diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/rs6000-c.c gcc-7.5.0/gcc/config/rs6000/rs6000-c.c *** gcc-7.4.0/gcc/config/rs6000/rs6000-c.c Tue Jun 26 19:45:01 2018 --- gcc-7.5.0/gcc/config/rs6000/rs6000-c.c Mon May 20 20:07:12 2019 *************** const struct altivec_builtin_types altiv *** 910,915 **** --- 910,917 ---- RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V4SI, 0, 0 }, { ALTIVEC_BUILTIN_VEC_UNPACKH, ALTIVEC_BUILTIN_VUPKHPX, RS6000_BTI_unsigned_V4SI, RS6000_BTI_pixel_V8HI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_UNPACKH, ALTIVEC_BUILTIN_VUPKHPX, + RS6000_BTI_V2DF, RS6000_BTI_V4SF, 0, 0 }, { ALTIVEC_BUILTIN_VEC_VUPKHSH, ALTIVEC_BUILTIN_VUPKHSH, RS6000_BTI_V4SI, RS6000_BTI_V8HI, 0, 0 }, { ALTIVEC_BUILTIN_VEC_VUPKHSH, ALTIVEC_BUILTIN_VUPKHSH, *************** const struct altivec_builtin_types altiv *** 940,945 **** --- 942,949 ---- RS6000_BTI_V2DI, RS6000_BTI_V4SI, 0, 0 }, { ALTIVEC_BUILTIN_VEC_UNPACKL, P8V_BUILTIN_VUPKLSW, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V4SI, 0, 0 }, + { ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VUPKLPX, + RS6000_BTI_V2DF, RS6000_BTI_V4SF, 0, 0 }, { ALTIVEC_BUILTIN_VEC_VUPKLPX, ALTIVEC_BUILTIN_VUPKLPX, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, 0, 0 }, { ALTIVEC_BUILTIN_VEC_VUPKLPX, ALTIVEC_BUILTIN_VUPKLPX, *************** const struct altivec_builtin_types altiv *** 1185,1190 **** --- 1189,1196 ---- { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, RS6000_BTI_unsigned_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 }, { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, + RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, 0 }, + { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_bool_V4SI, 0 }, { ALTIVEC_BUILTIN_VEC_AND, ALTIVEC_BUILTIN_VAND, RS6000_BTI_V4SI, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SI, 0 }, *************** const struct altivec_builtin_types altiv *** 1518,1529 **** --- 1524,1542 ---- RS6000_BTI_V2DF, RS6000_BTI_unsigned_V2DI, 0, 0 }, { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V2DF, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V2DF, + RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_double, 0 }, { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V2DI, RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI, 0 }, { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V2DI, + RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_long_long, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V2DI, 0 }, { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V2DI, + RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, + ~RS6000_BTI_unsigned_long_long, 0 }, + { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V2DI, 0 }, { ALTIVEC_BUILTIN_VEC_LD, ALTIVEC_BUILTIN_LVX_V4SF, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF, 0 }, *************** const struct altivec_builtin_types altiv *** 2535,2540 **** --- 2548,2565 ---- RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V8HI, 0 }, { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V2DI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLL, ALTIVEC_BUILTIN_VSL, + RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_unsigned_V8HI, 0 }, + { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V16QI, 0 }, { ALTIVEC_BUILTIN_VEC_SLO, ALTIVEC_BUILTIN_VSLO, *************** const struct altivec_builtin_types altiv *** 2735,2740 **** --- 2760,2769 ---- RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V8HI, 0 }, { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRL, ALTIVEC_BUILTIN_VSR, + RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V16QI, 0 }, { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_V16QI, 0 }, { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, *************** const struct altivec_builtin_types altiv *** 2767,2772 **** --- 2796,2810 ---- RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_V16QI, 0 }, { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VSRO, + RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V16QI, 0 }, + { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUBM, RS6000_BTI_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_V16QI, 0 }, { ALTIVEC_BUILTIN_VEC_SUB, ALTIVEC_BUILTIN_VSUBUBM, *************** const struct altivec_builtin_types altiv *** 3438,3453 **** --- 3476,3511 ---- RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_bool_V16QI, RS6000_BTI_NOT_OPAQUE }, { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_NOT_OPAQUE }, + { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_2DI, + RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_bool_V2DI, RS6000_BTI_NOT_OPAQUE }, + { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_2DI, + RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_NOT_OPAQUE }, + { ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VSLDOI_2DI, + RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_NOT_OPAQUE }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DF, RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_V2DF }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DF, + RS6000_BTI_void, RS6000_BTI_V2DF, RS6000_BTI_INTSI, ~RS6000_BTI_double }, { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI, RS6000_BTI_void, RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_V2DI }, { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI, + RS6000_BTI_void, RS6000_BTI_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_long_long }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI, RS6000_BTI_void, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_unsigned_V2DI }, { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI, + RS6000_BTI_void, RS6000_BTI_unsigned_V2DI, RS6000_BTI_INTSI, + ~RS6000_BTI_unsigned_long_long }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI, RS6000_BTI_void, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI, ~RS6000_BTI_bool_V2DI }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI, + RS6000_BTI_void, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI, + ~RS6000_BTI_long_long }, + { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V2DI, + RS6000_BTI_void, RS6000_BTI_bool_V2DI, RS6000_BTI_INTSI, + ~RS6000_BTI_unsigned_long_long }, { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V4SF, RS6000_BTI_void, RS6000_BTI_V4SF, RS6000_BTI_INTSI, ~RS6000_BTI_V4SF }, { ALTIVEC_BUILTIN_VEC_ST, ALTIVEC_BUILTIN_STVX_V4SF, *************** const struct altivec_builtin_types altiv *** 5050,5055 **** --- 5108,5118 ---- { P9V_BUILTIN_VEC_EXTRACT4B, P9V_BUILTIN_EXTRACT4B, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, 0 }, + { P9V_BUILTIN_VEC_VEXTRACT_FP_FROM_SHORTH, P9V_BUILTIN_VEXTRACT_FP_FROM_SHORTH, + RS6000_BTI_V4SF, RS6000_BTI_unsigned_V8HI, 0, 0 }, + { P9V_BUILTIN_VEC_VEXTRACT_FP_FROM_SHORTL, P9V_BUILTIN_VEXTRACT_FP_FROM_SHORTL, + RS6000_BTI_V4SF, RS6000_BTI_unsigned_V8HI, 0, 0 }, + { P9V_BUILTIN_VEC_VEXTULX, P9V_BUILTIN_VEXTUBLX, RS6000_BTI_INTQI, RS6000_BTI_UINTSI, RS6000_BTI_V16QI, 0 }, *************** altivec_resolve_overloaded_builtin (loca *** 5958,5968 **** tree call = NULL_TREE; int nunits = GET_MODE_NUNITS (mode); ! /* If the second argument is an integer constant, if the value is in ! the expected range, generate the built-in code if we can. We need ! 64-bit and direct move to extract the small integer vectors. */ ! if (TREE_CODE (arg2) == INTEGER_CST && wi::ltu_p (arg2, nunits)) { switch (mode) { default: --- 6021,6035 ---- tree call = NULL_TREE; int nunits = GET_MODE_NUNITS (mode); ! /* If the second argument is an integer constant, generate ! the built-in code if we can. We need 64-bit and direct ! move to extract the small integer vectors. */ ! if (TREE_CODE (arg2) == INTEGER_CST) { + wide_int selector + = wi::to_wide (arg2, TYPE_PRECISION (TREE_TYPE (arg2))); + selector = wi::umod_trunc (selector, nunits); + arg2 = wide_int_to_tree (TREE_TYPE (arg2), selector); switch (mode) { default: *************** altivec_resolve_overloaded_builtin (loca *** 6037,6043 **** } if (call) ! return build_call_expr (call, 2, arg1, arg2); } /* Build *(((arg1_inner_type*)&(vector type){arg1})+arg2). */ --- 6104,6116 ---- } if (call) ! { ! tree result = build_call_expr (call, 2, arg1, arg2); ! /* Coerce the result to vector element type. May be no-op. */ ! arg1_inner_type = TREE_TYPE (arg1_type); ! result = fold_convert (arg1_inner_type, result); ! return result; ! } } /* Build *(((arg1_inner_type*)&(vector type){arg1})+arg2). */ *************** altivec_resolve_overloaded_builtin (loca *** 6131,6141 **** /* If we can use the VSX xxpermdi instruction, use that for insert. */ mode = TYPE_MODE (arg1_type); if ((mode == V2DFmode || mode == V2DImode) && VECTOR_UNIT_VSX_P (mode) ! && TREE_CODE (arg2) == INTEGER_CST ! && wi::ltu_p (arg2, 2)) { tree call = NULL_TREE; if (mode == V2DFmode) call = rs6000_builtin_decls[VSX_BUILTIN_VEC_SET_V2DF]; else if (mode == V2DImode) --- 6204,6217 ---- /* If we can use the VSX xxpermdi instruction, use that for insert. */ mode = TYPE_MODE (arg1_type); if ((mode == V2DFmode || mode == V2DImode) && VECTOR_UNIT_VSX_P (mode) ! && TREE_CODE (arg2) == INTEGER_CST) { + wide_int selector + = wi::to_wide (arg2, TYPE_PRECISION (TREE_TYPE (arg2))); + selector = wi::umod_trunc (selector, 2); tree call = NULL_TREE; + arg2 = wide_int_to_tree (TREE_TYPE (arg2), selector); if (mode == V2DFmode) call = rs6000_builtin_decls[VSX_BUILTIN_VEC_SET_V2DF]; else if (mode == V2DImode) *************** altivec_resolve_overloaded_builtin (loca *** 6147,6157 **** return build_call_expr (call, 3, arg1, arg0, arg2); } else if (mode == V1TImode && VECTOR_UNIT_VSX_P (mode) ! && TREE_CODE (arg2) == INTEGER_CST ! && wi::eq_p (arg2, 0)) { tree call = rs6000_builtin_decls[VSX_BUILTIN_VEC_SET_V1TI]; /* Note, __builtin_vec_insert_ has vector and scalar types reversed. */ return build_call_expr (call, 3, arg1, arg0, arg2); --- 6223,6234 ---- return build_call_expr (call, 3, arg1, arg0, arg2); } else if (mode == V1TImode && VECTOR_UNIT_VSX_P (mode) ! && TREE_CODE (arg2) == INTEGER_CST) { tree call = rs6000_builtin_decls[VSX_BUILTIN_VEC_SET_V1TI]; + wide_int selector = wi::zero(32); + arg2 = wide_int_to_tree (TREE_TYPE (arg2), selector); /* Note, __builtin_vec_insert_ has vector and scalar types reversed. */ return build_call_expr (call, 3, arg1, arg0, arg2); *************** altivec_resolve_overloaded_builtin (loca *** 6159,6168 **** /* Build *(((arg1_inner_type*)&(vector type){arg1})+arg2) = arg0. */ arg1_inner_type = TREE_TYPE (arg1_type); ! arg2 = build_binary_op (loc, BIT_AND_EXPR, arg2, ! build_int_cst (TREE_TYPE (arg2), ! TYPE_VECTOR_SUBPARTS (arg1_type) ! - 1), 0); decl = build_decl (loc, VAR_DECL, NULL_TREE, arg1_type); DECL_EXTERNAL (decl) = 0; TREE_PUBLIC (decl) = 0; --- 6236,6248 ---- /* Build *(((arg1_inner_type*)&(vector type){arg1})+arg2) = arg0. */ arg1_inner_type = TREE_TYPE (arg1_type); ! if (TYPE_VECTOR_SUBPARTS (arg1_type) == 1) ! arg2 = build_int_cst (TREE_TYPE (arg2), 0); ! else ! arg2 = build_binary_op (loc, BIT_AND_EXPR, arg2, ! build_int_cst (TREE_TYPE (arg2), ! TYPE_VECTOR_SUBPARTS (arg1_type) ! - 1), 0); decl = build_decl (loc, VAR_DECL, NULL_TREE, arg1_type); DECL_EXTERNAL (decl) = 0; TREE_PUBLIC (decl) = 0; diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/rs6000.c gcc-7.5.0/gcc/config/rs6000/rs6000.c *** gcc-7.4.0/gcc/config/rs6000/rs6000.c Fri Sep 21 10:06:25 2018 --- gcc-7.5.0/gcc/config/rs6000/rs6000.c Fri Nov 1 20:30:26 2019 *************** darwin_rs6000_override_options (void) *** 3834,3843 **** rs6000_isa_flags |= OPTION_MASK_POWERPC64; warning (0, "-m64 requires PowerPC64 architecture, enabling"); } if (flag_mkernel) { rs6000_default_long_calls = 1; ! rs6000_isa_flags |= OPTION_MASK_SOFT_FLOAT; } /* Make -m64 imply -maltivec. Darwin's 64-bit ABI includes --- 3834,3855 ---- rs6000_isa_flags |= OPTION_MASK_POWERPC64; warning (0, "-m64 requires PowerPC64 architecture, enabling"); } + + /* The linkers [ld64] that support 64Bit do not need the JBSR longcall + optimisation, and will not work with the most generic case (where the + symbol is undefined external, but there is no symbl stub). */ + if (TARGET_64BIT) + rs6000_default_long_calls = 0; + + /* ld_classic is (so far) still used for kernel (static) code, and supports + the JBSR longcall / branch islands. */ if (flag_mkernel) { rs6000_default_long_calls = 1; ! ! /* Allow a kext author to do -mkernel -mhard-float. */ ! if (! (rs6000_isa_flags_explicit & OPTION_MASK_SOFT_FLOAT)) ! rs6000_isa_flags |= OPTION_MASK_SOFT_FLOAT; } /* Make -m64 imply -maltivec. Darwin's 64-bit ABI includes *************** rs6000_option_override_internal (bool gl *** 4829,4834 **** --- 4841,4853 ---- else rs6000_long_double_type_size = RS6000_DEFAULT_LONG_DOUBLE_SIZE; } + else if (global_options_set.x_rs6000_ieeequad) + { + if (global_options.x_rs6000_ieeequad) + error ("%qs requires %qs", "-mabi=ieeelongdouble", "-mlong-double-128"); + else + error ("%qs requires %qs", "-mabi=ibmlongdouble", "-mlong-double-128"); + } /* Set -mabi=ieeelongdouble on some old targets. Note, AIX and Darwin explicitly redefine TARGET_IEEEQUAD to 0, so those systems will not *************** rs6000_option_override_internal (bool gl *** 4838,4843 **** --- 4857,4867 ---- rs6000_ieeequad = 1; #endif + if (global_options_set.x_rs6000_ieeequad + && global_options.x_rs6000_ieeequad + && (!TARGET_POPCNTD || !TARGET_VSX)) + error ("%qs requires full ISA 2.06 support", "-mabi=ieeelongdouble"); + /* Enable the default support for IEEE 128-bit floating point on Linux VSX sytems, but don't enable the __float128 keyword. */ if (TARGET_VSX && TARGET_LONG_DOUBLE_128 *************** rs6000_expand_vector_extract (rtx target *** 7643,7649 **** default: break; case V1TImode: - gcc_assert (INTVAL (elt) == 0 && inner_mode == TImode); emit_move_insn (target, gen_lowpart (TImode, vec)); break; case V2DFmode: --- 7667,7672 ---- *************** rs6000_expand_vector_extract (rtx target *** 7694,7699 **** --- 7717,7726 ---- switch (mode) { + case V1TImode: + emit_move_insn (target, gen_lowpart (TImode, vec)); + return; + case V2DFmode: emit_insn (gen_vsx_extract_v2df_var (target, vec, elt)); return; *************** rs6000_expand_vector_extract (rtx target *** 7723,7740 **** } } - gcc_assert (CONST_INT_P (elt)); - /* Allocate mode-sized buffer. */ mem = assign_stack_temp (mode, GET_MODE_SIZE (mode)); emit_move_insn (mem, vec); ! /* Add offset to field within buffer matching vector element. */ ! mem = adjust_address_nv (mem, inner_mode, ! INTVAL (elt) * GET_MODE_SIZE (inner_mode)); ! emit_move_insn (target, adjust_address_nv (mem, inner_mode, 0)); } /* Helper function to return the register number of a RTX. */ --- 7750,7781 ---- } } /* Allocate mode-sized buffer. */ mem = assign_stack_temp (mode, GET_MODE_SIZE (mode)); emit_move_insn (mem, vec); + if (CONST_INT_P (elt)) + { + int modulo_elt = INTVAL (elt) % GET_MODE_NUNITS (mode); ! /* Add offset to field within buffer matching vector element. */ ! mem = adjust_address_nv (mem, inner_mode, ! modulo_elt * GET_MODE_SIZE (inner_mode)); ! emit_move_insn (target, adjust_address_nv (mem, inner_mode, 0)); ! } ! else ! { ! unsigned int ele_size = GET_MODE_SIZE (inner_mode); ! rtx num_ele_m1 = GEN_INT (GET_MODE_NUNITS (mode) - 1); ! rtx new_addr = gen_reg_rtx (Pmode); ! elt = gen_rtx_AND (Pmode, elt, num_ele_m1); ! if (ele_size > 1) ! elt = gen_rtx_MULT (Pmode, elt, GEN_INT (ele_size)); ! new_addr = gen_rtx_PLUS (Pmode, XEXP (mem, 0), elt); ! new_addr = change_address (mem, inner_mode, new_addr); ! emit_move_insn (target, new_addr); ! } } /* Helper function to return the register number of a RTX. */ *************** rs6000_split_vec_extract_var (rtx dest, *** 7915,7921 **** rtx tmp_altivec) { machine_mode mode = GET_MODE (src); ! machine_mode scalar_mode = GET_MODE (dest); unsigned scalar_size = GET_MODE_SIZE (scalar_mode); int byte_shift = exact_log2 (scalar_size); --- 7956,7962 ---- rtx tmp_altivec) { machine_mode mode = GET_MODE (src); ! machine_mode scalar_mode = GET_MODE_INNER (GET_MODE (src)); unsigned scalar_size = GET_MODE_SIZE (scalar_mode); int byte_shift = exact_log2 (scalar_size); *************** rs6000_split_vec_extract_var (rtx dest, *** 7926,7931 **** --- 7967,7976 ---- systems. */ if (MEM_P (src)) { + int num_elements = GET_MODE_NUNITS (mode); + rtx num_ele_m1 = GEN_INT (num_elements - 1); + + emit_insn (gen_anddi3 (element, element, num_ele_m1)); gcc_assert (REG_P (tmp_gpr)); emit_move_insn (dest, rs6000_adjust_vec_address (dest, src, element, tmp_gpr, scalar_mode)); *************** rs6000_split_vec_extract_var (rtx dest, *** 7934,7940 **** else if (REG_P (src) || SUBREG_P (src)) { ! int bit_shift = byte_shift + 3; rtx element2; int dest_regno = regno_or_subregno (dest); int src_regno = regno_or_subregno (src); --- 7979,7987 ---- else if (REG_P (src) || SUBREG_P (src)) { ! int num_elements = GET_MODE_NUNITS (mode); ! int bits_in_element = GET_MODE_BITSIZE (GET_MODE_INNER (mode)); ! int bit_shift = 7 - exact_log2 (num_elements); rtx element2; int dest_regno = regno_or_subregno (dest); int src_regno = regno_or_subregno (src); *************** rs6000_split_vec_extract_var (rtx dest, *** 8010,8016 **** { if (!VECTOR_ELT_ORDER_BIG) { ! rtx num_ele_m1 = GEN_INT (GET_MODE_NUNITS (mode) - 1); emit_insn (gen_anddi3 (tmp_gpr, element, num_ele_m1)); emit_insn (gen_subdi3 (tmp_gpr, num_ele_m1, tmp_gpr)); --- 8057,8063 ---- { if (!VECTOR_ELT_ORDER_BIG) { ! rtx num_ele_m1 = GEN_INT (num_elements - 1); emit_insn (gen_anddi3 (tmp_gpr, element, num_ele_m1)); emit_insn (gen_subdi3 (tmp_gpr, num_ele_m1, tmp_gpr)); *************** rs6000_split_vec_extract_var (rtx dest, *** 8068,8075 **** emit_insn (gen_vsx_vslo_v2di (tmp_altivec_di, src_v2di, tmp_altivec)); emit_move_insn (tmp_gpr_di, tmp_altivec_di); ! emit_insn (gen_ashrdi3 (tmp_gpr_di, tmp_gpr_di, ! GEN_INT (64 - (8 * scalar_size)))); return; } --- 8115,8122 ---- emit_insn (gen_vsx_vslo_v2di (tmp_altivec_di, src_v2di, tmp_altivec)); emit_move_insn (tmp_gpr_di, tmp_altivec_di); ! emit_insn (gen_lshrdi3 (tmp_gpr_di, tmp_gpr_di, ! GEN_INT (64 - bits_in_element))); return; } *************** address_offset (rtx op) *** 8538,8543 **** --- 8585,8685 ---- return NULL_RTX; } + /* This tests that a lo_sum {constant, symbol, symbol+offset} is valid for + the mode. If we can't find (or don't know) the alignment of the symbol + we assume (optimistically) that it's sufficiently aligned [??? maybe we + should be pessimistic]. Offsets are validated in the same way as for + reg + offset. */ + static bool + darwin_rs6000_legitimate_lo_sum_const_p (rtx x, machine_mode mode) + { + if (GET_CODE (x) == CONST) + x = XEXP (x, 0); + + if (GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_MACHOPIC_OFFSET) + x = XVECEXP (x, 0, 0); + + rtx sym = NULL_RTX; + unsigned HOST_WIDE_INT offset = 0; + + if (GET_CODE (x) == PLUS) + { + sym = XEXP (x, 0); + if (! SYMBOL_REF_P (sym)) + return false; + if (!CONST_INT_P (XEXP (x, 1))) + return false; + offset = INTVAL (XEXP (x, 1)); + } + else if (SYMBOL_REF_P (x)) + sym = x; + else if (CONST_INT_P (x)) + offset = INTVAL (x); + else if (GET_CODE (x) == LABEL_REF) + offset = 0; // We assume code labels are Pmode aligned + else + return false; // not sure what we have here. + + /* If we don't know the alignment of the thing to which the symbol refers, + we assume optimistically it is "enough". + ??? maybe we should be pessimistic instead. */ + unsigned align = 0; + + if (sym) + { + tree decl = SYMBOL_REF_DECL (sym); + #if TARGET_MACHO + if (MACHO_SYMBOL_INDIRECTION_P (sym)) + /* The decl in an indirection symbol is the original one, which might + be less aligned than the indirection. Our indirections are always + pointer-aligned. */ + ; + else + #endif + if (decl && DECL_ALIGN (decl)) + align = DECL_ALIGN_UNIT (decl); + } + + unsigned int extra = 0; + switch (mode) + { + case DFmode: + case DDmode: + case DImode: + /* If we are using VSX scalar loads, restrict ourselves to reg+reg + addressing. */ + if (VECTOR_MEM_VSX_P (mode)) + return false; + + if (!TARGET_POWERPC64) + extra = 4; + else if ((offset & 3) || (align & 3)) + return false; + break; + + case TFmode: + case IFmode: + case KFmode: + case TDmode: + case TImode: + case PTImode: + extra = 8; + if (!TARGET_POWERPC64) + extra = 12; + else if ((offset & 3) || (align & 3)) + return false; + break; + + default: + break; + } + + /* We only care if the access(es) would cause a change to the high part. */ + offset = ((offset & 0xffff) ^ 0x8000) - 0x8000; + return IN_RANGE (offset, -(HOST_WIDE_INT_1 << 15), + (HOST_WIDE_INT_1 << 15) - 1 - extra); + } + /* Return true if the MEM operand is a memory operand suitable for use with a (full width, possibly multiple) gpr load/store. On powerpc64 this means the offset must be divisible by 4. *************** mem_operand_gpr (rtx op, machine_mode mo *** 8572,8578 **** && legitimate_indirect_address_p (XEXP (addr, 0), false)) return true; ! /* Don't allow non-offsettable addresses. See PRs 83969 and 84279. */ if (!rs6000_offsettable_memref_p (op, mode, false)) return false; --- 8714,8726 ---- && legitimate_indirect_address_p (XEXP (addr, 0), false)) return true; ! /* We need to look through Mach-O PIC unspecs to determine if a lo_sum is ! really OK. Doing this early avoids teaching all the other machinery ! about them. */ ! if (TARGET_MACHO && GET_CODE (addr) == LO_SUM) ! return darwin_rs6000_legitimate_lo_sum_const_p (XEXP (addr, 1), mode); ! ! /* Only allow offsettable addresses. See PRs 83969 and 84279. */ if (!rs6000_offsettable_memref_p (op, mode, false)) return false; *************** rs6000_function_arg (cumulative_args_t c *** 13109,13115 **** if (elt_mode == TDmode && (cum->fregno % 2) == 1) cum->fregno++; ! if (USE_FP_FOR_ARG_P (cum, elt_mode)) { rtx rvec[GP_ARG_NUM_REG + AGGR_ARG_NUM_REG + 1]; rtx r, off; --- 13257,13265 ---- if (elt_mode == TDmode && (cum->fregno % 2) == 1) cum->fregno++; ! if (USE_FP_FOR_ARG_P (cum, elt_mode) ! && !(TARGET_AIX && !TARGET_ELF ! && type != NULL && AGGREGATE_TYPE_P (type))) { rtx rvec[GP_ARG_NUM_REG + AGGR_ARG_NUM_REG + 1]; rtx r, off; *************** rs6000_arg_partial_bytes (cumulative_arg *** 13245,13251 **** align_words = rs6000_parm_start (mode, type, cum->words); ! if (USE_FP_FOR_ARG_P (cum, elt_mode)) { unsigned long n_fpreg = (GET_MODE_SIZE (elt_mode) + 7) >> 3; --- 13395,13403 ---- align_words = rs6000_parm_start (mode, type, cum->words); ! if (USE_FP_FOR_ARG_P (cum, elt_mode) ! && !(TARGET_AIX && !TARGET_ELF ! && type != NULL && AGGREGATE_TYPE_P (type))) { unsigned long n_fpreg = (GET_MODE_SIZE (elt_mode) + 7) >> 3; *************** altivec_expand_vec_ext_builtin (tree exp *** 16146,16154 **** op0 = expand_normal (arg0); op1 = expand_normal (arg1); - /* Call get_element_number to validate arg1 if it is a constant. */ if (TREE_CODE (arg1) == INTEGER_CST) ! (void) get_element_number (TREE_TYPE (arg0), arg1); tmode = TYPE_MODE (TREE_TYPE (TREE_TYPE (arg0))); mode0 = TYPE_MODE (TREE_TYPE (arg0)); --- 16298,16314 ---- op0 = expand_normal (arg0); op1 = expand_normal (arg1); if (TREE_CODE (arg1) == INTEGER_CST) ! { ! unsigned HOST_WIDE_INT elt; ! unsigned HOST_WIDE_INT size = TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg0)); ! unsigned int truncated_selector; ! /* Even if !tree_fits_uhwi_p (arg1)), TREE_INT_CST_LOW (arg0) ! returns low-order bits of INTEGER_CST for modulo indexing. */ ! elt = TREE_INT_CST_LOW (arg1); ! truncated_selector = elt % size; ! op1 = GEN_INT (truncated_selector); ! } tmode = TYPE_MODE (TREE_TYPE (TREE_TYPE (arg0))); mode0 = TYPE_MODE (TREE_TYPE (arg0)); *************** builtin_function_type (machine_mode mode *** 18806,18811 **** --- 18966,18972 ---- { /* unsigned 1 argument functions. */ case CRYPTO_BUILTIN_VSBOX: + case CRYPTO_BUILTIN_VSBOX_BE: case P8V_BUILTIN_VGBBD: case MISC_BUILTIN_CDTBCD: case MISC_BUILTIN_CBCDTD: *************** builtin_function_type (machine_mode mode *** 18819,18827 **** --- 18980,18992 ---- case ALTIVEC_BUILTIN_VMULOUB: case ALTIVEC_BUILTIN_VMULOUH: case CRYPTO_BUILTIN_VCIPHER: + case CRYPTO_BUILTIN_VCIPHER_BE: case CRYPTO_BUILTIN_VCIPHERLAST: + case CRYPTO_BUILTIN_VCIPHERLAST_BE: case CRYPTO_BUILTIN_VNCIPHER: + case CRYPTO_BUILTIN_VNCIPHER_BE: case CRYPTO_BUILTIN_VNCIPHERLAST: + case CRYPTO_BUILTIN_VNCIPHERLAST_BE: case CRYPTO_BUILTIN_VPMSUMB: case CRYPTO_BUILTIN_VPMSUMH: case CRYPTO_BUILTIN_VPMSUMW: *************** print_operand (FILE *file, rtx x, int co *** 23931,23937 **** { const char *name = XSTR (x, 0); #if TARGET_MACHO ! if (darwin_emit_branch_islands && MACHOPIC_INDIRECT && machopic_classify_symbol (x) == MACHOPIC_UNDEFINED_FUNCTION) name = machopic_indirection_name (x, /*stub_p=*/true); --- 24096,24102 ---- { const char *name = XSTR (x, 0); #if TARGET_MACHO ! if (darwin_symbol_stubs && MACHOPIC_INDIRECT && machopic_classify_symbol (x) == MACHOPIC_UNDEFINED_FUNCTION) name = machopic_indirection_name (x, /*stub_p=*/true); *************** save_reg_p (int r) *** 26714,26740 **** static bool rs6000_reg_live_or_pic_offset_p (int reg) { - /* We need to mark the PIC offset register live for the same conditions - as it is set up, or otherwise it won't be saved before we clobber it. */ - if (reg == RS6000_PIC_OFFSET_TABLE_REGNUM && !TARGET_SINGLE_PIC_BASE) { if (TARGET_TOC && TARGET_MINIMAL_TOC ! && (crtl->calls_eh_return ! || df_regs_ever_live_p (reg) ! || !constant_pool_empty_p ())) return true; ! if ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN) ! && flag_pic) return true; - } ! /* If the function calls eh_return, claim used all the registers that would ! be checked for liveness otherwise. */ ! return ((crtl->calls_eh_return || df_regs_ever_live_p (reg)) ! && !call_used_regs[reg]); } /* Return the first fixed-point register that is required to be --- 26879,26913 ---- static bool rs6000_reg_live_or_pic_offset_p (int reg) { if (reg == RS6000_PIC_OFFSET_TABLE_REGNUM && !TARGET_SINGLE_PIC_BASE) { + /* When calling eh_return, we must return true for all the cases + where conditional_register_usage marks the PIC offset reg + call used or fixed. */ + if (crtl->calls_eh_return + && ((DEFAULT_ABI == ABI_V4 && flag_pic) + || (DEFAULT_ABI == ABI_DARWIN && flag_pic) + || (TARGET_TOC && TARGET_MINIMAL_TOC))) + return true; + + /* We need to mark the PIC offset register live for the same + conditions as it is set up in rs6000_emit_prologue, or + otherwise it won't be saved before we clobber it. */ if (TARGET_TOC && TARGET_MINIMAL_TOC ! && !constant_pool_empty_p ()) return true; ! if (DEFAULT_ABI == ABI_V4 ! && (flag_pic == 1 || (flag_pic && TARGET_SECURE_PLT)) ! && df_regs_ever_live_p (RS6000_PIC_OFFSET_TABLE_REGNUM)) return true; ! if (DEFAULT_ABI == ABI_DARWIN ! && flag_pic && crtl->uses_pic_offset_table) ! return true; ! } ! return !call_used_regs[reg] && df_regs_ever_live_p (reg); } /* Return the first fixed-point register that is required to be *************** output_call (rtx_insn *insn, rtx *operan *** 35852,35858 **** int cookie_operand_number) { static char buf[256]; ! if (darwin_emit_branch_islands && GET_CODE (operands[dest_operand_number]) == SYMBOL_REF && (INTVAL (operands[cookie_operand_number]) & CALL_LONG)) { --- 36025,36031 ---- int cookie_operand_number) { static char buf[256]; ! if (darwin_symbol_stubs && GET_CODE (operands[dest_operand_number]) == SYMBOL_REF && (INTVAL (operands[cookie_operand_number]) & CALL_LONG)) { *************** rs6000_xcoff_asm_init_sections (void) *** 36409,36414 **** --- 36582,36591 ---- rs6000_xcoff_output_readwrite_section_asm_op, &xcoff_private_data_section_name); + read_only_private_data_section + = get_unnamed_section (0, rs6000_xcoff_output_readonly_section_asm_op, + &xcoff_private_rodata_section_name); + tls_data_section = get_unnamed_section (SECTION_TLS, rs6000_xcoff_output_tls_section_asm_op, *************** rs6000_xcoff_asm_init_sections (void) *** 36419,36428 **** rs6000_xcoff_output_tls_section_asm_op, &xcoff_private_data_section_name); - read_only_private_data_section - = get_unnamed_section (0, rs6000_xcoff_output_readonly_section_asm_op, - &xcoff_private_data_section_name); - toc_section = get_unnamed_section (0, rs6000_xcoff_output_toc_section_asm_op, NULL); --- 36596,36601 ---- *************** rs6000_xcoff_file_start (void) *** 36603,36608 **** --- 36776,36783 ---- main_input_filename, ".bss_"); rs6000_gen_section_name (&xcoff_private_data_section_name, main_input_filename, ".rw_"); + rs6000_gen_section_name (&xcoff_private_rodata_section_name, + main_input_filename, ".rop_"); rs6000_gen_section_name (&xcoff_read_only_section_name, main_input_filename, ".ro_"); rs6000_gen_section_name (&xcoff_tls_data_section_name, *************** rtx_is_swappable_p (rtx op, unsigned int *** 41934,41939 **** --- 42109,42119 ---- case UNSPEC_REDUC_PLUS: case UNSPEC_REDUC: return 1; + case UNSPEC_VPMSUM: + /* vpmsumd is not swappable, but vpmsum[bhw] are. */ + if (GET_MODE (op) == V2DImode) + return 0; + break; } } *************** rs6000_analyze_swaps (function *fun) *** 43013,43018 **** --- 43193,43206 ---- /* Pre-pass to recombine lvx and stvx patterns so we don't lose info. */ recombine_lvx_stvx_patterns (fun); + /* Rebuild ud- and du-chains. */ + df_remove_problem (df_chain); + df_process_deferred_rescans (); + df_set_flags (DF_RD_PRUNE_DEAD_DEFS); + df_chain_add_problem (DF_DU_CHAIN | DF_UD_CHAIN); + df_analyze (); + df_set_flags (DF_DEFER_INSN_RESCAN); + /* Allocate structure to represent webs of insns. */ insn_entry = XCNEWVEC (swap_web_entry, get_max_uid ()); diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/rs6000.md gcc-7.5.0/gcc/config/rs6000/rs6000.md *** gcc-7.4.0/gcc/config/rs6000/rs6000.md Fri Sep 28 00:32:46 2018 --- gcc-7.5.0/gcc/config/rs6000/rs6000.md Tue Oct 29 20:20:23 2019 *************** *** 141,146 **** --- 141,149 ---- UNSPEC_LSQ UNSPEC_FUSION_GPR UNSPEC_STACK_CHECK + UNSPEC_CMPRB + UNSPEC_CMPRB2 + UNSPEC_CMPEQB UNSPEC_FUSION_P9 UNSPEC_FUSION_ADDIS UNSPEC_ROUND_TO_ODD *************** *** 161,166 **** --- 164,172 ---- UNSPECV_EH_RR ; eh_reg_restore UNSPECV_ISYNC ; isync instruction UNSPECV_MFTB ; move from time base + UNSPECV_DARN ; darn 1 (deliver a random number) + UNSPECV_DARN_32 ; darn 2 + UNSPECV_DARN_RAW ; darn 0 UNSPECV_NLGR ; non-local goto receiver UNSPECV_MFFS ; Move from FPSCR UNSPECV_MTFSF ; Move to FPSCR Fields *************** *** 6740,6753 **** ;; do the load 16-bits at a time. We could do this by loading from memory, ;; and this is even supposed to be faster, but it is simpler not to get ;; integers in the TOC. - (define_insn "movsi_low" - [(set (match_operand:SI 0 "gpc_reg_operand" "=r") - (mem:SI (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b") - (match_operand 2 "" ""))))] - "TARGET_MACHO && ! TARGET_64BIT" - "lwz %0,lo16(%2)(%1)" - [(set_attr "type" "load") - (set_attr "length" "4")]) ;; MR LA LWZ LFIWZX LXSIWZX ;; STW STFIWX STXSIWX LI LIS --- 6746,6751 ---- *************** *** 8564,8579 **** (define_insn "*movdi_internal32" [(set (match_operand:DI 0 "rs6000_nonimmediate_operand" ! "=Y, r, r, ^m, ^d, ^d, ! r, ^wY, $Z, ^wb, $wv, ^wi, *wo, *wo, *wv, *wi, *wi, *wv, *wv") (match_operand:DI 1 "input_operand" ! "r, Y, r, d, m, d, ! IJKnGHF, wb, wv, wY, Z, wi, ! Oj, wM, OjwM, Oj, wM, wS, ! wB"))] "! TARGET_POWERPC64 && (gpc_reg_operand (operands[0], DImode) --- 8562,8577 ---- (define_insn "*movdi_internal32" [(set (match_operand:DI 0 "rs6000_nonimmediate_operand" ! "=Y, r, r, m, ^d, ^d, ! r, wY, Z, ^wb, $wv, ^wi, *wo, *wo, *wv, *wi, *wi, *wv, *wv") (match_operand:DI 1 "input_operand" ! "r, Y, r, ^d, m, ^d, ! IJKnGHF, ^wb, $wv, wY, Z, ^wi, ! Oj, wM, OjwM, Oj, wM, wS, ! wB"))] "! TARGET_POWERPC64 && (gpc_reg_operand (operands[0], DImode) *************** *** 8641,8657 **** (define_insn "*movdi_internal64" [(set (match_operand:DI 0 "nonimmediate_operand" "=YZ, r, r, r, r, r, ! ^m, ^d, ^d, ^wY, $Z, $wb, $wv, ^wi, *wo, *wo, *wv, *wi, *wi, *wv, *wv, r, *h, *h, ?*r, ?*wg, ?*r, ?*wj") (match_operand:DI 1 "input_operand" ! "r, YZ, r, I, L, nF, ! d, m, d, wb, wv, wY, ! Z, wi, Oj, wM, OjwM, Oj, ! wM, wS, wB, *h, r, 0, ! wg, r, wj, r"))] "TARGET_POWERPC64 && (gpc_reg_operand (operands[0], DImode) --- 8639,8655 ---- (define_insn "*movdi_internal64" [(set (match_operand:DI 0 "nonimmediate_operand" "=YZ, r, r, r, r, r, ! m, ^d, ^d, wY, Z, $wb, $wv, ^wi, *wo, *wo, *wv, *wi, *wi, *wv, *wv, r, *h, *h, ?*r, ?*wg, ?*r, ?*wj") (match_operand:DI 1 "input_operand" ! "r, YZ, r, I, L, nF, ! ^d, m, ^d, ^wb, $wv, wY, ! Z, ^wi, Oj, wM, OjwM, Oj, ! wM, wS, wB, *h, r, 0, ! wg, r, wj, r"))] "TARGET_POWERPC64 && (gpc_reg_operand (operands[0], DImode) *************** *** 14945,14951 **** --- 14943,15167 ---- "xscmpuqp %0,%1,%2" [(set_attr "type" "veccmp") (set_attr "size" "128")]) + + ;; Miscellaneous ISA 3.0 (power9) instructions + + (define_insn "darn_32" + [(set (match_operand:SI 0 "register_operand" "=r") + (unspec_volatile:SI [(const_int 0)] UNSPECV_DARN_32))] + "TARGET_P9_MISC" + "darn %0,0" + [(set_attr "type" "integer")]) + + (define_insn "darn_raw" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec_volatile:DI [(const_int 0)] UNSPECV_DARN_RAW))] + "TARGET_P9_MISC && TARGET_64BIT" + "darn %0,2" + [(set_attr "type" "integer")]) + + (define_insn "darn" + [(set (match_operand:DI 0 "register_operand" "=r") + (unspec_volatile:DI [(const_int 0)] UNSPECV_DARN))] + "TARGET_P9_MISC && TARGET_64BIT" + "darn %0,1" + [(set_attr "type" "integer")]) + + ;; Test byte within range. + ;; + ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx + ;; represents a byte whose value is ignored in this context and + ;; vv, the least significant byte, holds the byte value that is to + ;; be tested for membership within the range specified by operand 2. + ;; The bytes of operand 2 are organized as xx:xx:hi:lo. + ;; + ;; Return in target register operand 0 a value of 1 if lo <= vv and + ;; vv <= hi. Otherwise, set register operand 0 to 0. + ;; + ;; Though the instructions to which this expansion maps operate on + ;; 64-bit registers, the current implementation only operates on + ;; SI-mode operands as the high-order bits provide no information + ;; that is not already available in the low-order bits. To avoid the + ;; costs of data widening operations, future enhancements might allow + ;; DI mode for operand 0 and/or might allow operand 1 to be QI mode. + (define_expand "cmprb" + [(set (match_dup 3) + (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") + (match_operand:SI 2 "gpc_reg_operand" "r")] + UNSPEC_CMPRB)) + (set (match_operand:SI 0 "gpc_reg_operand" "=r") + (if_then_else:SI (lt (match_dup 3) + (const_int 0)) + (const_int -1) + (if_then_else (gt (match_dup 3) + (const_int 0)) + (const_int 1) + (const_int 0))))] + "TARGET_P9_MISC" + { + operands[3] = gen_reg_rtx (CCmode); + }) + + ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx + ;; represents a byte whose value is ignored in this context and + ;; vv, the least significant byte, holds the byte value that is to + ;; be tested for membership within the range specified by operand 2. + ;; The bytes of operand 2 are organized as xx:xx:hi:lo. + ;; + ;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if + ;; lo <= vv and vv <= hi. Otherwise, set the GT bit to 0. The other + ;; 3 bits of the target CR register are all set to 0. + (define_insn "*cmprb_internal" + [(set (match_operand:CC 0 "cc_reg_operand" "=y") + (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") + (match_operand:SI 2 "gpc_reg_operand" "r")] + UNSPEC_CMPRB))] + "TARGET_P9_MISC" + "cmprb %0,0,%1,%2" + [(set_attr "type" "logical")]) + + ;; Set operand 0 register to -1 if the LT bit (0x8) of condition + ;; register operand 1 is on. Otherwise, set operand 0 register to 1 + ;; if the GT bit (0x4) of condition register operand 1 is on. + ;; Otherwise, set operand 0 to 0. Note that the result stored into + ;; register operand 0 is non-zero iff either the LT or GT bits are on + ;; within condition register operand 1. + (define_insn "setb_signed" + [(set (match_operand:SI 0 "gpc_reg_operand" "=r") + (if_then_else:SI (lt (match_operand:CC 1 "cc_reg_operand" "y") + (const_int 0)) + (const_int -1) + (if_then_else (gt (match_dup 1) + (const_int 0)) + (const_int 1) + (const_int 0))))] + "TARGET_P9_MISC" + "setb %0,%1" + [(set_attr "type" "logical")]) + + (define_insn "setb_unsigned" + [(set (match_operand:SI 0 "gpc_reg_operand" "=r") + (if_then_else:SI (ltu (match_operand:CCUNS 1 "cc_reg_operand" "y") + (const_int 0)) + (const_int -1) + (if_then_else (gtu (match_dup 1) + (const_int 0)) + (const_int 1) + (const_int 0))))] + "TARGET_P9_MISC" + "setb %0,%1" + [(set_attr "type" "logical")]) + + ;; Test byte within two ranges. + ;; + ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx + ;; represents a byte whose value is ignored in this context and + ;; vv, the least significant byte, holds the byte value that is to + ;; be tested for membership within the range specified by operand 2. + ;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2. + ;; + ;; Return in target register operand 0 a value of 1 if (lo_1 <= vv and + ;; vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2). Otherwise, set register + ;; operand 0 to 0. + ;; + ;; Though the instructions to which this expansion maps operate on + ;; 64-bit registers, the current implementation only operates on + ;; SI-mode operands as the high-order bits provide no information + ;; that is not already available in the low-order bits. To avoid the + ;; costs of data widening operations, future enhancements might allow + ;; DI mode for operand 0 and/or might allow operand 1 to be QI mode. + (define_expand "cmprb2" + [(set (match_dup 3) + (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") + (match_operand:SI 2 "gpc_reg_operand" "r")] + UNSPEC_CMPRB2)) + (set (match_operand:SI 0 "gpc_reg_operand" "=r") + (if_then_else:SI (lt (match_dup 3) + (const_int 0)) + (const_int -1) + (if_then_else (gt (match_dup 3) + (const_int 0)) + (const_int 1) + (const_int 0))))] + "TARGET_P9_MISC" + { + operands[3] = gen_reg_rtx (CCmode); + }) + + ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx + ;; represents a byte whose value is ignored in this context and + ;; vv, the least significant byte, holds the byte value that is to + ;; be tested for membership within the ranges specified by operand 2. + ;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2. + ;; + ;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if + ;; (lo_1 <= vv and vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2). + ;; Otherwise, set the GT bit to 0. The other 3 bits of the target + ;; CR register are all set to 0. + (define_insn "*cmprb2_internal" + [(set (match_operand:CC 0 "cc_reg_operand" "=y") + (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") + (match_operand:SI 2 "gpc_reg_operand" "r")] + UNSPEC_CMPRB2))] + "TARGET_P9_MISC" + "cmprb %0,1,%1,%2" + [(set_attr "type" "logical")]) + + ;; Test byte membership within set of 8 bytes. + ;; + ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx + ;; represents a byte whose value is ignored in this context and + ;; vv, the least significant byte, holds the byte value that is to + ;; be tested for membership within the set specified by operand 2. + ;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7. + ;; + ;; Return in target register operand 0 a value of 1 if vv equals one + ;; of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise, set + ;; register operand 0 to 0. Note that the 8 byte values held within + ;; operand 2 need not be unique. + ;; + ;; Though the instructions to which this expansion maps operate on + ;; 64-bit registers, the current implementation requires that operands + ;; 0 and 1 have mode SI as the high-order bits provide no information + ;; that is not already available in the low-order bits. To avoid the + ;; costs of data widening operations, future enhancements might allow + ;; DI mode for operand 0 and/or might allow operand 1 to be QI mode. + (define_expand "cmpeqb" + [(set (match_dup 3) + (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") + (match_operand:DI 2 "gpc_reg_operand" "r")] + UNSPEC_CMPEQB)) + (set (match_operand:SI 0 "gpc_reg_operand" "=r") + (if_then_else:SI (lt (match_dup 3) + (const_int 0)) + (const_int -1) + (if_then_else (gt (match_dup 3) + (const_int 0)) + (const_int 1) + (const_int 0))))] + "TARGET_P9_MISC && TARGET_64BIT" + { + operands[3] = gen_reg_rtx (CCmode); + }) + ;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx + ;; represents a byte whose value is ignored in this context and + ;; vv, the least significant byte, holds the byte value that is to + ;; be tested for membership within the set specified by operand 2. + ;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7. + ;; + ;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if vv + ;; equals one of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise, + ;; set the GT bit to zero. The other 3 bits of the target CR register + ;; are all set to 0. + (define_insn "*cmpeqb_internal" + [(set (match_operand:CC 0 "cc_reg_operand" "=y") + (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") + (match_operand:DI 2 "gpc_reg_operand" "r")] + UNSPEC_CMPEQB))] + "TARGET_P9_MISC && TARGET_64BIT" + "cmpeqb %0,%1,%2" + [(set_attr "type" "logical")]) (include "sync.md") diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/t-darwin32-biarch gcc-7.5.0/gcc/config/rs6000/t-darwin32-biarch *** gcc-7.4.0/gcc/config/rs6000/t-darwin32-biarch Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/config/rs6000/t-darwin32-biarch Thu Sep 5 19:14:35 2019 *************** *** 0 **** --- 1,3 ---- + # 64-bit libraries can only be built in Darwin 8.x or later. + MULTILIB_OPTIONS = m64 + MULTILIB_DIRNAMES = ppc64 diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/t-darwin64 gcc-7.5.0/gcc/config/rs6000/t-darwin64 *** gcc-7.4.0/gcc/config/rs6000/t-darwin64 Wed Nov 2 15:23:48 2011 --- gcc-7.5.0/gcc/config/rs6000/t-darwin64 Thu Jan 1 00:00:00 1970 *************** *** 1,2 **** - MULTILIB_OPTIONS = m32 - MULTILIB_DIRNAMES = ppc --- 0 ---- diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/t-darwin64-biarch gcc-7.5.0/gcc/config/rs6000/t-darwin64-biarch *** gcc-7.4.0/gcc/config/rs6000/t-darwin64-biarch Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/config/rs6000/t-darwin64-biarch Thu Sep 5 19:14:35 2019 *************** *** 0 **** --- 1,2 ---- + MULTILIB_OPTIONS = m32 + MULTILIB_DIRNAMES = ppc diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/t-darwin8 gcc-7.5.0/gcc/config/rs6000/t-darwin8 *** gcc-7.4.0/gcc/config/rs6000/t-darwin8 Thu Sep 29 00:42:21 2005 --- gcc-7.5.0/gcc/config/rs6000/t-darwin8 Thu Jan 1 00:00:00 1970 *************** *** 1,3 **** - # 64-bit libraries can only be built in Darwin 8.x or later. - MULTILIB_OPTIONS = m64 - MULTILIB_DIRNAMES = ppc64 --- 0 ---- diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/t-linux gcc-7.5.0/gcc/config/rs6000/t-linux *** gcc-7.4.0/gcc/config/rs6000/t-linux Tue Mar 10 13:43:44 2015 --- gcc-7.5.0/gcc/config/rs6000/t-linux Fri Aug 30 12:12:56 2019 *************** ifneq (,$(findstring powerpc64,$(target) *** 5,13 **** MULTILIB_OSDIRNAMES := .=../lib64$(call if_multiarch,:powerpc64-linux-gnu) else ifneq (,$(findstring spe,$(target))) ! MULTIARCH_DIRNAME := powerpc-linux-gnuspe$(if $(findstring 8548,$(with_cpu)),,v1) else ! MULTIARCH_DIRNAME := powerpc-linux-gnu endif endif ifneq (,$(findstring powerpcle,$(target))) --- 5,13 ---- MULTILIB_OSDIRNAMES := .=../lib64$(call if_multiarch,:powerpc64-linux-gnu) else ifneq (,$(findstring spe,$(target))) ! MULTIARCH_DIRNAME := $(call if_multiarch,powerpc-linux-gnuspe$(if $(findstring 8548,$(with_cpu)),,v1)) else ! MULTIARCH_DIRNAME := $(call if_multiarch,powerpc-linux-gnu) endif endif ifneq (,$(findstring powerpcle,$(target))) diff -Nrcpad gcc-7.4.0/gcc/config/rs6000/vsx.md gcc-7.5.0/gcc/config/rs6000/vsx.md *** gcc-7.4.0/gcc/config/rs6000/vsx.md Tue Jul 10 17:33:40 2018 --- gcc-7.5.0/gcc/config/rs6000/vsx.md Mon Apr 22 16:09:13 2019 *************** *** 339,344 **** --- 339,345 ---- UNSPEC_VSX_CVDPSXWS UNSPEC_VSX_CVDPUXWS UNSPEC_VSX_CVSPDP + UNSPEC_VSX_CVHPSP UNSPEC_VSX_CVSPDPN UNSPEC_VSX_CVDPSPN UNSPEC_VSX_CVSXWDP *************** *** 353,358 **** --- 354,361 ---- UNSPEC_VSX_ROUND_I UNSPEC_VSX_ROUND_IC UNSPEC_VSX_SLDWI + UNSPEC_VSX_XXPERM + UNSPEC_VSX_XXSPLTW UNSPEC_VSX_XXSPLTD UNSPEC_VSX_DIVSD *************** *** 370,375 **** --- 373,380 ---- UNSPEC_VSX_SIEXPDP UNSPEC_VSX_SCMPEXPDP UNSPEC_VSX_STSTDC + UNSPEC_VSX_VEXTRACT_FP_FROM_SHORTH + UNSPEC_VSX_VEXTRACT_FP_FROM_SHORTL UNSPEC_VSX_VXEXP UNSPEC_VSX_VXSIG UNSPEC_VSX_VIEXP *************** *** 1779,1784 **** --- 1784,1798 ---- "xscvspdp %x0,%x1" [(set_attr "type" "fp")]) + ;; Generate xvcvhpsp instruction + (define_insn "vsx_xvcvhpsp" + [(set (match_operand:V4SF 0 "vsx_register_operand" "=wa") + (unspec:V4SF [(match_operand: V16QI 1 "vsx_register_operand" "wa")] + UNSPEC_VSX_CVHPSP))] + "TARGET_P9_VECTOR" + "xvcvhpsp %x0,%x1" + [(set_attr "type" "vecfloat")]) + ;; xscvdpsp used for splat'ing a scalar to V4SF, knowing that the internal SF ;; format of scalars is actually DF. (define_insn "vsx_xscvdpsp_scalar" *************** *** 2438,2444 **** (match_operand:VSX_D 1 "memory_operand" "m,m") (parallel [(match_operand:QI 2 "const_0_to_1_operand" "n,n")]))) (clobber (match_scratch:P 3 "=&b,&b"))] ! "VECTOR_MEM_VSX_P (mode)" "#" "&& reload_completed" [(set (match_dup 0) (match_dup 4))] --- 2452,2458 ---- (match_operand:VSX_D 1 "memory_operand" "m,m") (parallel [(match_operand:QI 2 "const_0_to_1_operand" "n,n")]))) (clobber (match_scratch:P 3 "=&b,&b"))] ! "TARGET_POWERPC64 && VECTOR_MEM_VSX_P (mode)" "#" "&& reload_completed" [(set (match_dup 0) (match_dup 4))] *************** *** 2947,2955 **** DONE; }) ! (define_insn_and_split "*vsx_extract___var" ! [(set (match_operand:SDI 0 "gpc_reg_operand" "=r,r,r") ! (zero_extend:SDI (unspec: [(match_operand:VSX_EXTRACT_I 1 "input_operand" "wK,v,m") (match_operand:DI 2 "gpc_reg_operand" "r,r,r")] --- 2961,2969 ---- DONE; }) ! (define_insn_and_split "*vsx_extract__mode_var" ! [(set (match_operand: 0 "gpc_reg_operand" "=r,r,r") ! (zero_extend: (unspec: [(match_operand:VSX_EXTRACT_I 1 "input_operand" "wK,v,m") (match_operand:DI 2 "gpc_reg_operand" "r,r,r")] *************** *** 2961,2967 **** "&& reload_completed" [(const_int 0)] { ! machine_mode smode = mode; rs6000_split_vec_extract_var (gen_rtx_REG (smode, REGNO (operands[0])), operands[1], operands[2], operands[3], operands[4]); --- 2975,2981 ---- "&& reload_completed" [(const_int 0)] { ! machine_mode smode = mode; rs6000_split_vec_extract_var (gen_rtx_REG (smode, REGNO (operands[0])), operands[1], operands[2], operands[3], operands[4]); *************** *** 3585,3591 **** (match_dup 1)) (parallel [(const_int 1)]))) (clobber (match_scratch:DF 2 "=0,0,&wd,&wa"))] ! "VECTOR_UNIT_VSX_P (V2DFmode)" "#" "" [(const_int 0)] --- 3599,3605 ---- (match_dup 1)) (parallel [(const_int 1)]))) (clobber (match_scratch:DF 2 "=0,0,&wd,&wa"))] ! "BYTES_BIG_ENDIAN && VECTOR_UNIT_VSX_P (V2DFmode)" "#" "" [(const_int 0)] *************** *** 3613,3619 **** (clobber (match_scratch:V4SF 2 "=&wf,&wa")) (clobber (match_scratch:V4SF 3 "=&wf,&wa")) (clobber (match_scratch:V4SF 4 "=0,0"))] ! "VECTOR_UNIT_VSX_P (V4SFmode)" "#" "" [(const_int 0)] --- 3627,3633 ---- (clobber (match_scratch:V4SF 2 "=&wf,&wa")) (clobber (match_scratch:V4SF 3 "=&wf,&wa")) (clobber (match_scratch:V4SF 4 "=0,0"))] ! "BYTES_BIG_ENDIAN && VECTOR_UNIT_VSX_P (V4SFmode)" "#" "" [(const_int 0)] *************** *** 4180,4186 **** } [(set_attr "type" "vecperm")]) ! ;; Support for ISA 3.0 vector byte reverse ;; Swap all bytes with in a vector --- 4194,4258 ---- } [(set_attr "type" "vecperm")]) ! ;; Generate vector extract four float 32 values from left four elements ! ;; of eight element vector of float 16 values. ! (define_expand "vextract_fp_from_shorth" ! [(set (match_operand:V4SF 0 "register_operand" "=wa") ! (unspec:V4SF [(match_operand:V8HI 1 "register_operand" "wa")] ! UNSPEC_VSX_VEXTRACT_FP_FROM_SHORTH))] ! "TARGET_P9_VECTOR" ! { ! int vals[16] = {15, 14, 0, 0, 13, 12, 0, 0, 11, 10, 0, 0, 9, 8, 0, 0}; ! int i; ! ! rtx rvals[16]; ! rtx mask = gen_reg_rtx (V16QImode); ! rtx tmp = gen_reg_rtx (V16QImode); ! rtvec v; ! ! for (i = 0; i < 16; i++) ! rvals[i] = GEN_INT (vals[i]); ! ! /* xvcvhpsp - vector convert F16 to vector F32 requires the four F16 ! inputs in half words 1,3,5,7 (IBM numbering). Use xxperm to move ! src half words 0,1,2,3 for the conversion instruction. */ ! v = gen_rtvec_v (16, rvals); ! emit_insn (gen_vec_initv16qi (mask, gen_rtx_PARALLEL (V16QImode, v))); ! emit_insn (gen_altivec_vperm_v8hiv16qi (tmp, operands[1], ! operands[1], mask)); ! emit_insn (gen_vsx_xvcvhpsp (operands[0], tmp)); ! DONE; ! }) ! ! ;; Generate vector extract four float 32 values from right four elements ! ;; of eight element vector of float 16 values. ! (define_expand "vextract_fp_from_shortl" ! [(set (match_operand:V4SF 0 "register_operand" "=wa") ! (unspec:V4SF [(match_operand:V8HI 1 "register_operand" "wa")] ! UNSPEC_VSX_VEXTRACT_FP_FROM_SHORTL))] ! "TARGET_P9_VECTOR" ! { ! int vals[16] = {7, 6, 0, 0, 5, 4, 0, 0, 3, 2, 0, 0, 1, 0, 0, 0}; ! int i; ! rtx rvals[16]; ! rtx mask = gen_reg_rtx (V16QImode); ! rtx tmp = gen_reg_rtx (V16QImode); ! rtvec v; ! ! for (i = 0; i < 16; i++) ! rvals[i] = GEN_INT (vals[i]); ! ! /* xvcvhpsp - vector convert F16 to vector F32 requires the four F16 ! inputs in half words 1,3,5,7 (IBM numbering). Use xxperm to move ! src half words 4,5,6,7 for the conversion instruction. */ ! v = gen_rtvec_v (16, rvals); ! emit_insn (gen_vec_initv16qi (mask, gen_rtx_PARALLEL (V16QImode, v))); ! emit_insn (gen_altivec_vperm_v8hiv16qi (tmp, operands[1], ! operands[1], mask)); ! emit_insn (gen_vsx_xvcvhpsp (operands[0], tmp)); ! DONE; ! }) ! ;; Support for ISA 3.0 vector byte reverse ;; Swap all bytes with in a vector diff -Nrcpad gcc-7.4.0/gcc/config/s390/s390-builtins.def gcc-7.5.0/gcc/config/s390/s390-builtins.def *** gcc-7.4.0/gcc/config/s390/s390-builtins.def Tue Jun 5 08:21:57 2018 --- gcc-7.5.0/gcc/config/s390/s390-builtins.def Thu Dec 13 12:07:58 2018 *************** B_DEF (s390_vfsqsb, *** 2804,2811 **** B_DEF (s390_vfsqdb, sqrtv2df2, 0, B_VX, 0, BT_FN_V2DF_V2DF) OB_DEF (s390_vec_double, s390_vec_double_s64,s390_vec_double_u64,B_VX, BT_FN_OV4SI_OV4SI) ! OB_DEF_VAR (s390_vec_double_s64, s390_vcdgb, 0, 0, BT_OV_V2DF_V2DI) ! OB_DEF_VAR (s390_vec_double_u64, s390_vcdlgb, 0, 0, BT_OV_V2DF_UV2DI) B_DEF (s390_vec_double_s64, vec_double_s64, 0, B_INT | B_VX, 0, BT_FN_V2DF_V2DI) /* vcdgb */ B_DEF (s390_vec_double_u64, vec_double_u64, 0, B_INT | B_VX, 0, BT_FN_V2DF_UV2DI) /* vcdlgb */ --- 2804,2811 ---- B_DEF (s390_vfsqdb, sqrtv2df2, 0, B_VX, 0, BT_FN_V2DF_V2DF) OB_DEF (s390_vec_double, s390_vec_double_s64,s390_vec_double_u64,B_VX, BT_FN_OV4SI_OV4SI) ! OB_DEF_VAR (s390_vec_double_s64, s390_vec_double_s64,0, 0, BT_OV_V2DF_V2DI) ! OB_DEF_VAR (s390_vec_double_u64, s390_vec_double_u64,0, 0, BT_OV_V2DF_UV2DI) B_DEF (s390_vec_double_s64, vec_double_s64, 0, B_INT | B_VX, 0, BT_FN_V2DF_V2DI) /* vcdgb */ B_DEF (s390_vec_double_u64, vec_double_u64, 0, B_INT | B_VX, 0, BT_FN_V2DF_UV2DI) /* vcdlgb */ diff -Nrcpad gcc-7.4.0/gcc/config/s390/s390.c gcc-7.5.0/gcc/config/s390/s390.c *** gcc-7.4.0/gcc/config/s390/s390.c Fri Oct 19 08:55:27 2018 --- gcc-7.5.0/gcc/config/s390/s390.c Fri Aug 30 12:05:07 2019 *************** s390_valid_target_attribute_p (tree fnde *** 15498,15503 **** --- 15498,15504 ---- } return ret; } + #endif /* Set VAL to correct enum value according to the indirect-branch or function-return attribute in ATTR. */ *************** s390_indirect_branch_settings (tree fnde *** 15572,15577 **** --- 15573,15579 ---- } + #if S390_USE_TARGET_ATTRIBUTE /* Restore targets globals from NEW_TREE and invalidate s390_previous_fndecl cache. */ *************** s390_activate_target_options (tree new_t *** 15587,15592 **** --- 15589,15595 ---- TREE_TARGET_GLOBALS (new_tree) = save_target_globals_default_opts (); s390_previous_fndecl = NULL_TREE; } + #endif /* Establish appropriate back-end context for processing the function FNDECL. The argument might be NULL to indicate processing at top *************** s390_activate_target_options (tree new_t *** 15594,15599 **** --- 15597,15603 ---- static void s390_set_current_function (tree fndecl) { + #if S390_USE_TARGET_ATTRIBUTE /* Only change the context if the function changes. This hook is called several times in the course of compiling a function, and we don't want to slow things down too much or call target_reinit when it isn't safe. */ *************** s390_set_current_function (tree fndecl) *** 15625,15634 **** if (old_tree != new_tree) s390_activate_target_options (new_tree); s390_previous_fndecl = fndecl; ! s390_indirect_branch_settings (fndecl); } - #endif /* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P. */ --- 15629,15637 ---- if (old_tree != new_tree) s390_activate_target_options (new_tree); s390_previous_fndecl = fndecl; ! #endif s390_indirect_branch_settings (fndecl); } /* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P. */ *************** s390_case_values_threshold (void) *** 16333,16342 **** #undef TARGET_ASM_FILE_END #define TARGET_ASM_FILE_END s390_asm_file_end - #if S390_USE_TARGET_ATTRIBUTE #undef TARGET_SET_CURRENT_FUNCTION #define TARGET_SET_CURRENT_FUNCTION s390_set_current_function #undef TARGET_OPTION_VALID_ATTRIBUTE_P #define TARGET_OPTION_VALID_ATTRIBUTE_P s390_valid_target_attribute_p #endif --- 16336,16345 ---- #undef TARGET_ASM_FILE_END #define TARGET_ASM_FILE_END s390_asm_file_end #undef TARGET_SET_CURRENT_FUNCTION #define TARGET_SET_CURRENT_FUNCTION s390_set_current_function + #if S390_USE_TARGET_ATTRIBUTE #undef TARGET_OPTION_VALID_ATTRIBUTE_P #define TARGET_OPTION_VALID_ATTRIBUTE_P s390_valid_target_attribute_p #endif diff -Nrcpad gcc-7.4.0/gcc/config/s390/s390.md gcc-7.5.0/gcc/config/s390/s390.md *** gcc-7.4.0/gcc/config/s390/s390.md Mon Nov 26 15:29:27 2018 --- gcc-7.5.0/gcc/config/s390/s390.md Tue Feb 5 17:19:26 2019 *************** *** 1332,1341 **** ; (TF|DF|SF|TD|DD|SD) instructions ! ; load and test instructions turn SNaN into QNaN what is not ; acceptable if the target will be used afterwards. On the other hand ; they are quite convenient for implementing comparisons with 0.0. So ! ; try to enable them via splitter if the value isn't needed anymore. ; ltxbr, ltdbr, ltebr, ltxtr, ltdtr (define_insn "*cmp_ccs_0" --- 1332,1342 ---- ; (TF|DF|SF|TD|DD|SD) instructions ! ; FIXME: load and test instructions turn SNaN into QNaN what is not ; acceptable if the target will be used afterwards. On the other hand ; they are quite convenient for implementing comparisons with 0.0. So ! ; try to enable them via splitter/peephole if the value isn't needed anymore. ! ; See testcases: load-and-test-fp-1.c and load-and-test-fp-2.c ; ltxbr, ltdbr, ltebr, ltxtr, ltdtr (define_insn "*cmp_ccs_0" *************** *** 1348,1369 **** [(set_attr "op_type" "RRE") (set_attr "type" "fsimp")]) - (define_split - [(set (match_operand 0 "cc_reg_operand") - (compare (match_operand:FP 1 "register_operand") - (match_operand:FP 2 "const0_operand")))] - "TARGET_HARD_FLOAT && REG_P (operands[1]) && dead_or_set_p (insn, operands[1])" - [(parallel - [(set (match_dup 0) (match_dup 3)) - (clobber (match_dup 1))])] - { - /* s390_match_ccmode requires the compare to have the same CC mode - as the CC destination register. */ - operands[3] = gen_rtx_COMPARE (GET_MODE (operands[0]), - operands[1], operands[2]); - }) - - ; VX: TFmode in FPR pairs: use cxbr instead of wfcxb ; cxtr, cdtr, cxbr, cdbr, cebr, cdb, ceb, wfcsb, wfcdb (define_insn "*cmp_ccs" --- 1349,1354 ---- diff -Nrcpad gcc-7.4.0/gcc/config/s390/vector.md gcc-7.5.0/gcc/config/s390/vector.md *** gcc-7.4.0/gcc/config/s390/vector.md Tue Apr 25 11:18:52 2017 --- gcc-7.5.0/gcc/config/s390/vector.md Mon Jul 15 14:31:37 2019 *************** *** 933,939 **** (VEC_SHIFTS:VI (match_operand:VI 1 "register_operand" "v") (match_operand:SI 2 "nonmemory_operand" "an")))] "TARGET_VX" ! "\t%v0,%v1,%Y2" [(set_attr "op_type" "VRS")]) ; Shift each element by corresponding vector element --- 933,939 ---- (VEC_SHIFTS:VI (match_operand:VI 1 "register_operand" "v") (match_operand:SI 2 "nonmemory_operand" "an")))] "TARGET_VX" ! "\t%v0,%v1," [(set_attr "op_type" "VRS")]) ; Shift each element by corresponding vector element diff -Nrcpad gcc-7.4.0/gcc/config/s390/vx-builtins.md gcc-7.5.0/gcc/config/s390/vx-builtins.md *** gcc-7.4.0/gcc/config/s390/vx-builtins.md Fri Mar 24 14:04:12 2017 --- gcc-7.5.0/gcc/config/s390/vx-builtins.md Thu Dec 13 12:06:40 2018 *************** *** 1607,1613 **** (define_expand "vec_ctd_s64" [(set (match_operand:V2DF 0 "register_operand" "") (unspec:V2DF [(match_operand:V2DI 1 "register_operand" "") ! (const_int 4) ; inexact suppressed (const_int VEC_RND_CURRENT)] UNSPEC_VEC_VCDGB)) (use (match_operand:QI 2 "const_int_operand" "")) --- 1607,1613 ---- (define_expand "vec_ctd_s64" [(set (match_operand:V2DF 0 "register_operand" "") (unspec:V2DF [(match_operand:V2DI 1 "register_operand" "") ! (const_int VEC_NOINEXACT) (const_int VEC_RND_CURRENT)] UNSPEC_VEC_VCDGB)) (use (match_operand:QI 2 "const_int_operand" "")) *************** *** 1638,1644 **** (define_expand "vec_ctd_u64" [(set (match_operand:V2DF 0 "register_operand" "") (unspec:V2DF [(match_operand:V2DI 1 "register_operand" "") ! (const_int 4) ; inexact suppressed (const_int VEC_RND_CURRENT)] UNSPEC_VEC_VCDLGB)) (use (match_operand:QI 2 "const_int_operand" "")) --- 1638,1644 ---- (define_expand "vec_ctd_u64" [(set (match_operand:V2DF 0 "register_operand" "") (unspec:V2DF [(match_operand:V2DI 1 "register_operand" "") ! (const_int VEC_NOINEXACT) (const_int VEC_RND_CURRENT)] UNSPEC_VEC_VCDLGB)) (use (match_operand:QI 2 "const_int_operand" "")) *************** *** 1672,1678 **** (match_dup 3))) (set (match_operand:V2DI 0 "register_operand" "") (unspec:V2DI [(match_dup 4) ! (const_int 4) ; inexact suppressed (const_int VEC_RND_CURRENT)] UNSPEC_VEC_VCGDB))] "TARGET_VX" --- 1672,1678 ---- (match_dup 3))) (set (match_operand:V2DI 0 "register_operand" "") (unspec:V2DI [(match_dup 4) ! (const_int VEC_NOINEXACT) (const_int VEC_RND_CURRENT)] UNSPEC_VEC_VCGDB))] "TARGET_VX" *************** *** 1705,1711 **** (match_dup 3))) (set (match_operand:V2DI 0 "register_operand" "") (unspec:V2DI [(match_dup 4) ! (const_int 4) ; inexact suppressed (const_int VEC_RND_CURRENT)] UNSPEC_VEC_VCLGDB))] "TARGET_VX" --- 1705,1711 ---- (match_dup 3))) (set (match_operand:V2DI 0 "register_operand" "") (unspec:V2DI [(match_dup 4) ! (const_int VEC_NOINEXACT) (const_int VEC_RND_CURRENT)] UNSPEC_VEC_VCLGDB))] "TARGET_VX" *************** *** 2026,2032 **** (define_expand "vec_double_s64" [(set (match_operand:V2DF 0 "register_operand") (unspec:V2DF [(match_operand:V2DI 1 "register_operand") ! (const_int 0) ; inexact suppression disabled (const_int VEC_RND_CURRENT)] UNSPEC_VEC_VCDGB))] "TARGET_VX") --- 2026,2032 ---- (define_expand "vec_double_s64" [(set (match_operand:V2DF 0 "register_operand") (unspec:V2DF [(match_operand:V2DI 1 "register_operand") ! (const_int VEC_INEXACT) (const_int VEC_RND_CURRENT)] UNSPEC_VEC_VCDGB))] "TARGET_VX") *************** *** 2034,2040 **** (define_expand "vec_double_u64" [(set (match_operand:V2DF 0 "register_operand") (unspec:V2DF [(match_operand:V2DI 1 "register_operand") ! (const_int 0) ; inexact suppression disabled (const_int VEC_RND_CURRENT)] UNSPEC_VEC_VCDLGB))] "TARGET_VX") --- 2034,2040 ---- (define_expand "vec_double_u64" [(set (match_operand:V2DF 0 "register_operand") (unspec:V2DF [(match_operand:V2DI 1 "register_operand") ! (const_int VEC_INEXACT) (const_int VEC_RND_CURRENT)] UNSPEC_VEC_VCDLGB))] "TARGET_VX") diff -Nrcpad gcc-7.4.0/gcc/config/sh/sh.c gcc-7.5.0/gcc/config/sh/sh.c *** gcc-7.4.0/gcc/config/sh/sh.c Mon Apr 3 22:30:56 2017 --- gcc-7.5.0/gcc/config/sh/sh.c Fri Oct 11 11:12:28 2019 *************** got_mode_name:; *** 713,719 **** { if (tokens[i] == "strict") ret.strict = true; ! else if (tokens[i].find ("gbr-offset=") == 0) { std::string offset_str = tokens[i].substr (strlen ("gbr-offset=")); ret.tcb_gbr_offset = integral_argument (offset_str.c_str ()); --- 713,719 ---- { if (tokens[i] == "strict") ret.strict = true; ! else if (!tokens[i].compare (0, strlen ("gbr-offset="), "gbr-offset=")) { std::string offset_str = tokens[i].substr (strlen ("gbr-offset=")); ret.tcb_gbr_offset = integral_argument (offset_str.c_str ()); *************** sh_option_override (void) *** 934,944 **** if (flag_unsafe_math_optimizations) { /* Enable fsca insn for SH4A if not otherwise specified by the user. */ ! if (global_options_set.x_TARGET_FSCA == 0 && TARGET_SH4A_FP) TARGET_FSCA = 1; /* Enable fsrra insn for SH4A if not otherwise specified by the user. */ ! if (global_options_set.x_TARGET_FSRRA == 0 && TARGET_SH4A_FP) TARGET_FSRRA = 1; } --- 934,946 ---- if (flag_unsafe_math_optimizations) { /* Enable fsca insn for SH4A if not otherwise specified by the user. */ ! if (global_options_set.x_TARGET_FSCA == 0 ! && (TARGET_SH4A_FP || TARGET_FPU_SH4_300)) TARGET_FSCA = 1; /* Enable fsrra insn for SH4A if not otherwise specified by the user. */ ! if (global_options_set.x_TARGET_FSRRA == 0 ! && (TARGET_SH4A_FP || TARGET_FPU_SH4_300)) TARGET_FSRRA = 1; } *************** sh_output_mi_thunk (FILE *file, tree thu *** 10814,10825 **** emit_insn (gen_add2_insn (scratch0, GEN_INT (vcall_offset))); offset_addr = scratch0; } - else if (scratch0 != scratch1) - { - emit_move_insn (scratch1, GEN_INT (vcall_offset)); - emit_insn (gen_add2_insn (scratch0, scratch1)); - offset_addr = scratch0; - } else gcc_unreachable (); /* FIXME */ emit_load_ptr (scratch0, offset_addr); --- 10816,10821 ---- *************** sh_extending_set_of_reg::use_as_extended *** 12014,12022 **** rtx r = gen_reg_rtx (SImode); rtx_insn* i0; if (from_mode == QImode) ! i0 = emit_insn_after (gen_extendqisi2 (r, set_src), insn); else if (from_mode == HImode) ! i0 = emit_insn_after (gen_extendhisi2 (r, set_src), insn); else gcc_unreachable (); --- 12010,12020 ---- rtx r = gen_reg_rtx (SImode); rtx_insn* i0; if (from_mode == QImode) ! i0 = sh_check_add_incdec_notes ( ! emit_insn_after (gen_extendqisi2 (r, set_src), insn)); else if (from_mode == HImode) ! i0 = sh_check_add_incdec_notes ( ! emit_insn_after (gen_extendhisi2 (r, set_src), insn)); else gcc_unreachable (); *************** static void *** 12434,12440 **** sh_emit_mode_set (int entity ATTRIBUTE_UNUSED, int mode, int prev_mode, HARD_REG_SET regs_live ATTRIBUTE_UNUSED) { ! if ((TARGET_SH4A_FP || TARGET_SH4_300) && prev_mode != FP_MODE_NONE && prev_mode != mode) { emit_insn (gen_toggle_pr ()); --- 12432,12438 ---- sh_emit_mode_set (int entity ATTRIBUTE_UNUSED, int mode, int prev_mode, HARD_REG_SET regs_live ATTRIBUTE_UNUSED) { ! if ((TARGET_SH4A_FP || TARGET_FPU_SH4_300) && prev_mode != FP_MODE_NONE && prev_mode != mode) { emit_insn (gen_toggle_pr ()); diff -Nrcpad gcc-7.4.0/gcc/config/sh/sh.h gcc-7.5.0/gcc/config/sh/sh.h *** gcc-7.4.0/gcc/config/sh/sh.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/config/sh/sh.h Fri Oct 11 11:12:28 2019 *************** extern int code_for_indirect_jump_scratc *** 69,74 **** --- 69,76 ---- FPU is disabled (which makes it compatible with SH4al-dsp). */ #define TARGET_SH4A_FP (TARGET_SH4A && TARGET_FPU_ANY) + /* True if the FPU is a SH4-300 variant. */ + #define TARGET_FPU_SH4_300 (TARGET_FPU_ANY && TARGET_SH4_300) /* This is not used by the SH2E calling convention */ #define TARGET_VARARGS_PRETEND_ARGS(FUN_DECL) \ diff -Nrcpad gcc-7.4.0/gcc/config/sh/sh.md gcc-7.5.0/gcc/config/sh/sh.md *** gcc-7.4.0/gcc/config/sh/sh.md Thu Nov 23 14:08:12 2017 --- gcc-7.5.0/gcc/config/sh/sh.md Fri Oct 11 11:12:28 2019 *************** *** 9161,9167 **** (xor:SI (reg:SI FPSCR_REG) (const_int FPSCR_PR))) (set (reg:SI FPSCR_MODES_REG) (unspec_volatile:SI [(const_int 0)] UNSPECV_FPSCR_MODES))] ! "TARGET_SH4A_FP" "fpchg" [(set_attr "type" "fpscr_toggle")]) --- 9161,9167 ---- (xor:SI (reg:SI FPSCR_REG) (const_int FPSCR_PR))) (set (reg:SI FPSCR_MODES_REG) (unspec_volatile:SI [(const_int 0)] UNSPECV_FPSCR_MODES))] ! "TARGET_SH4A_FP || TARGET_FPU_SH4_300" "fpchg" [(set_attr "type" "fpscr_toggle")]) *************** *** 9389,9403 **** (define_expand "negsf2" [(set (match_operand:SF 0 "fp_arith_reg_operand") (neg:SF (match_operand:SF 1 "fp_arith_reg_operand")))] ! "TARGET_SH2E") ! (define_insn "*negsf2_i" [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") (neg:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))] ! "TARGET_SH2E" "fneg %0" [(set_attr "type" "fmove")]) (define_expand "sqrtsf2" [(set (match_operand:SF 0 "fp_arith_reg_operand" "") (sqrt:SF (match_operand:SF 1 "fp_arith_reg_operand" "")))] --- 9389,9419 ---- (define_expand "negsf2" [(set (match_operand:SF 0 "fp_arith_reg_operand") (neg:SF (match_operand:SF 1 "fp_arith_reg_operand")))] ! "TARGET_FPU_ANY" ! { ! if (TARGET_FPU_SH4_300) ! emit_insn (gen_negsf2_fpscr (operands[0], operands[1])); ! else ! emit_insn (gen_negsf2_no_fpscr (operands[0], operands[1])); ! DONE; ! }) ! (define_insn "negsf2_no_fpscr" [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") (neg:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))] ! "TARGET_FPU_ANY && !TARGET_FPU_SH4_300" "fneg %0" [(set_attr "type" "fmove")]) + (define_insn "negsf2_fpscr" + [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") + (neg:SF (match_operand:SF 1 "fp_arith_reg_operand" "0"))) + (use (reg:SI FPSCR_MODES_REG))] + "TARGET_FPU_SH4_300" + "fneg %0" + [(set_attr "type" "fmove") + (set_attr "fp_mode" "single")]) + (define_expand "sqrtsf2" [(set (match_operand:SF 0 "fp_arith_reg_operand" "") (sqrt:SF (match_operand:SF 1 "fp_arith_reg_operand" "")))] *************** *** 9487,9501 **** (define_expand "abssf2" [(set (match_operand:SF 0 "fp_arith_reg_operand") (abs:SF (match_operand:SF 1 "fp_arith_reg_operand")))] ! "TARGET_SH2E") ! (define_insn "*abssf2_i" [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") (abs:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))] ! "TARGET_SH2E" "fabs %0" [(set_attr "type" "fmove")]) (define_expand "adddf3" [(set (match_operand:DF 0 "fp_arith_reg_operand" "") (plus:DF (match_operand:DF 1 "fp_arith_reg_operand" "") --- 9503,9533 ---- (define_expand "abssf2" [(set (match_operand:SF 0 "fp_arith_reg_operand") (abs:SF (match_operand:SF 1 "fp_arith_reg_operand")))] ! "TARGET_FPU_ANY" ! { ! if (TARGET_FPU_SH4_300) ! emit_insn (gen_abssf2_fpscr (operands[0], operands[1])); ! else ! emit_insn (gen_abssf2_no_fpscr (operands[0], operands[1])); ! DONE; ! }) ! (define_insn "abssf2_no_fpscr" [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") (abs:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))] ! "TARGET_FPU_ANY && !TARGET_FPU_SH4_300" "fabs %0" [(set_attr "type" "fmove")]) + (define_insn "abssf2_fpscr" + [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") + (abs:SF (match_operand:SF 1 "fp_arith_reg_operand" "0"))) + (use (reg:SI FPSCR_MODES_REG))] + "TARGET_FPU_SH4_300" + "fabs %0" + [(set_attr "type" "fmove") + (set_attr "fp_mode" "single")]) + (define_expand "adddf3" [(set (match_operand:DF 0 "fp_arith_reg_operand" "") (plus:DF (match_operand:DF 1 "fp_arith_reg_operand" "") *************** *** 9671,9682 **** (define_expand "negdf2" [(set (match_operand:DF 0 "fp_arith_reg_operand") (neg:DF (match_operand:DF 1 "fp_arith_reg_operand")))] ! "TARGET_FPU_DOUBLE") ! (define_insn "*negdf2_i" [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") (neg:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))] ! "TARGET_FPU_DOUBLE" "fneg %0" [(set_attr "type" "fmove")]) --- 9703,9730 ---- (define_expand "negdf2" [(set (match_operand:DF 0 "fp_arith_reg_operand") (neg:DF (match_operand:DF 1 "fp_arith_reg_operand")))] ! "TARGET_FPU_DOUBLE" ! { ! if (TARGET_FPU_SH4_300) ! emit_insn (gen_negdf2_fpscr (operands[0], operands[1])); ! else ! emit_insn (gen_negdf2_no_fpscr (operands[0], operands[1])); ! DONE; ! }) ! (define_insn "negdf2_fpscr" ! [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") ! (neg:DF (match_operand:DF 1 "fp_arith_reg_operand" "0"))) ! (use (reg:SI FPSCR_MODES_REG))] ! "TARGET_FPU_SH4_300" ! "fneg %0" ! [(set_attr "type" "fmove") ! (set_attr "fp_mode" "double")]) ! ! (define_insn "negdf2_no_fpscr" [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") (neg:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))] ! "TARGET_FPU_DOUBLE && !TARGET_FPU_SH4_300" "fneg %0" [(set_attr "type" "fmove")]) *************** *** 9702,9716 **** (define_expand "absdf2" [(set (match_operand:DF 0 "fp_arith_reg_operand") (abs:DF (match_operand:DF 1 "fp_arith_reg_operand")))] ! "TARGET_FPU_DOUBLE") ! (define_insn "*absdf2_i" [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") (abs:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))] ! "TARGET_FPU_DOUBLE" "fabs %0" [(set_attr "type" "fmove")]) (define_expand "extendsfdf2" [(set (match_operand:DF 0 "fp_arith_reg_operand" "") (float_extend:DF (match_operand:SF 1 "fpul_operand" "")))] --- 9750,9780 ---- (define_expand "absdf2" [(set (match_operand:DF 0 "fp_arith_reg_operand") (abs:DF (match_operand:DF 1 "fp_arith_reg_operand")))] ! "TARGET_FPU_DOUBLE" ! { ! if (TARGET_FPU_SH4_300) ! emit_insn (gen_absdf2_fpscr (operands[0], operands[1])); ! else ! emit_insn (gen_absdf2_no_fpscr (operands[0], operands[1])); ! DONE; ! }) ! (define_insn "absdf2_no_fpscr" [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") (abs:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))] ! "TARGET_FPU_DOUBLE && !TARGET_FPU_SH4_300" "fabs %0" [(set_attr "type" "fmove")]) + (define_insn "absdf2_fpscr" + [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") + (abs:DF (match_operand:DF 1 "fp_arith_reg_operand" "0"))) + (use (reg:SI FPSCR_MODES_REG))] + "TARGET_FPU_SH4_300" + "fabs %0" + [(set_attr "type" "fmove") + (set_attr "fp_mode" "double")]) + (define_expand "extendsfdf2" [(set (match_operand:DF 0 "fp_arith_reg_operand" "") (float_extend:DF (match_operand:SF 1 "fpul_operand" "")))] diff -Nrcpad gcc-7.4.0/gcc/config/sparc/sparc.c gcc-7.5.0/gcc/config/sparc/sparc.c *** gcc-7.4.0/gcc/config/sparc/sparc.c Fri Apr 6 22:32:39 2018 --- gcc-7.5.0/gcc/config/sparc/sparc.c Wed Jan 9 14:41:55 2019 *************** sparc_legitimize_tls_address (rtx addr) *** 4531,4560 **** gcc_assert (can_create_pseudo_p ()); if (GET_CODE (addr) == SYMBOL_REF) switch (SYMBOL_REF_TLS_MODEL (addr)) { case TLS_MODEL_GLOBAL_DYNAMIC: start_sequence (); ! temp1 = gen_reg_rtx (SImode); ! temp2 = gen_reg_rtx (SImode); ret = gen_reg_rtx (Pmode); o0 = gen_rtx_REG (Pmode, 8); got = sparc_tls_got (); - emit_insn (gen_tgd_hi22 (temp1, addr)); - emit_insn (gen_tgd_lo10 (temp2, temp1, addr)); if (TARGET_ARCH32) { ! emit_insn (gen_tgd_add32 (o0, got, temp2, addr)); ! insn = emit_call_insn (gen_tgd_call32 (o0, sparc_tls_get_addr (), addr, const1_rtx)); } else { ! emit_insn (gen_tgd_add64 (o0, got, temp2, addr)); ! insn = emit_call_insn (gen_tgd_call64 (o0, sparc_tls_get_addr (), addr, const1_rtx)); } use_reg (&CALL_INSN_FUNCTION_USAGE (insn), o0); insn = get_insns (); end_sequence (); emit_libcall_block (insn, ret, o0, addr); --- 4531,4568 ---- gcc_assert (can_create_pseudo_p ()); if (GET_CODE (addr) == SYMBOL_REF) + /* Although the various sethi/or sequences generate SImode values, many of + them can be transformed by the linker when relaxing and, if relaxing to + local-exec, will become a sethi/xor pair, which is signed and therefore + a full DImode value in 64-bit mode. Thus we must use Pmode, lest these + values be spilled onto the stack in 64-bit mode. */ switch (SYMBOL_REF_TLS_MODEL (addr)) { case TLS_MODEL_GLOBAL_DYNAMIC: start_sequence (); ! temp1 = gen_reg_rtx (Pmode); ! temp2 = gen_reg_rtx (Pmode); ret = gen_reg_rtx (Pmode); o0 = gen_rtx_REG (Pmode, 8); got = sparc_tls_got (); if (TARGET_ARCH32) { ! emit_insn (gen_tgd_hi22si (temp1, addr)); ! emit_insn (gen_tgd_lo10si (temp2, temp1, addr)); ! emit_insn (gen_tgd_addsi (o0, got, temp2, addr)); ! insn = emit_call_insn (gen_tgd_callsi (o0, sparc_tls_get_addr (), addr, const1_rtx)); } else { ! emit_insn (gen_tgd_hi22di (temp1, addr)); ! emit_insn (gen_tgd_lo10di (temp2, temp1, addr)); ! emit_insn (gen_tgd_adddi (o0, got, temp2, addr)); ! insn = emit_call_insn (gen_tgd_calldi (o0, sparc_tls_get_addr (), addr, const1_rtx)); } use_reg (&CALL_INSN_FUNCTION_USAGE (insn), o0); + RTL_CONST_CALL_P (insn) = 1; insn = get_insns (); end_sequence (); emit_libcall_block (insn, ret, o0, addr); *************** sparc_legitimize_tls_address (rtx addr) *** 4562,4622 **** case TLS_MODEL_LOCAL_DYNAMIC: start_sequence (); ! temp1 = gen_reg_rtx (SImode); ! temp2 = gen_reg_rtx (SImode); temp3 = gen_reg_rtx (Pmode); ret = gen_reg_rtx (Pmode); o0 = gen_rtx_REG (Pmode, 8); got = sparc_tls_got (); - emit_insn (gen_tldm_hi22 (temp1)); - emit_insn (gen_tldm_lo10 (temp2, temp1)); if (TARGET_ARCH32) { ! emit_insn (gen_tldm_add32 (o0, got, temp2)); ! insn = emit_call_insn (gen_tldm_call32 (o0, sparc_tls_get_addr (), const1_rtx)); } else { ! emit_insn (gen_tldm_add64 (o0, got, temp2)); ! insn = emit_call_insn (gen_tldm_call64 (o0, sparc_tls_get_addr (), const1_rtx)); } use_reg (&CALL_INSN_FUNCTION_USAGE (insn), o0); insn = get_insns (); end_sequence (); emit_libcall_block (insn, temp3, o0, gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx), UNSPEC_TLSLD_BASE)); ! temp1 = gen_reg_rtx (SImode); ! temp2 = gen_reg_rtx (SImode); ! emit_insn (gen_tldo_hix22 (temp1, addr)); ! emit_insn (gen_tldo_lox10 (temp2, temp1, addr)); if (TARGET_ARCH32) ! emit_insn (gen_tldo_add32 (ret, temp3, temp2, addr)); else ! emit_insn (gen_tldo_add64 (ret, temp3, temp2, addr)); break; case TLS_MODEL_INITIAL_EXEC: ! temp1 = gen_reg_rtx (SImode); ! temp2 = gen_reg_rtx (SImode); temp3 = gen_reg_rtx (Pmode); got = sparc_tls_got (); - emit_insn (gen_tie_hi22 (temp1, addr)); - emit_insn (gen_tie_lo10 (temp2, temp1, addr)); if (TARGET_ARCH32) ! emit_insn (gen_tie_ld32 (temp3, got, temp2, addr)); else ! emit_insn (gen_tie_ld64 (temp3, got, temp2, addr)); if (TARGET_SUN_TLS) { ret = gen_reg_rtx (Pmode); if (TARGET_ARCH32) ! emit_insn (gen_tie_add32 (ret, gen_rtx_REG (Pmode, 7), temp3, addr)); else ! emit_insn (gen_tie_add64 (ret, gen_rtx_REG (Pmode, 7), temp3, addr)); } else --- 4570,4647 ---- case TLS_MODEL_LOCAL_DYNAMIC: start_sequence (); ! temp1 = gen_reg_rtx (Pmode); ! temp2 = gen_reg_rtx (Pmode); temp3 = gen_reg_rtx (Pmode); ret = gen_reg_rtx (Pmode); o0 = gen_rtx_REG (Pmode, 8); got = sparc_tls_got (); if (TARGET_ARCH32) { ! emit_insn (gen_tldm_hi22si (temp1)); ! emit_insn (gen_tldm_lo10si (temp2, temp1)); ! emit_insn (gen_tldm_addsi (o0, got, temp2)); ! insn = emit_call_insn (gen_tldm_callsi (o0, sparc_tls_get_addr (), const1_rtx)); } else { ! emit_insn (gen_tldm_hi22di (temp1)); ! emit_insn (gen_tldm_lo10di (temp2, temp1)); ! emit_insn (gen_tldm_adddi (o0, got, temp2)); ! insn = emit_call_insn (gen_tldm_calldi (o0, sparc_tls_get_addr (), const1_rtx)); } use_reg (&CALL_INSN_FUNCTION_USAGE (insn), o0); + RTL_CONST_CALL_P (insn) = 1; insn = get_insns (); end_sequence (); + /* Attach a unique REG_EQUAL, to allow the RTL optimizers to + share the LD_BASE result with other LD model accesses. */ emit_libcall_block (insn, temp3, o0, gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx), UNSPEC_TLSLD_BASE)); ! temp1 = gen_reg_rtx (Pmode); ! temp2 = gen_reg_rtx (Pmode); if (TARGET_ARCH32) ! { ! emit_insn (gen_tldo_hix22si (temp1, addr)); ! emit_insn (gen_tldo_lox10si (temp2, temp1, addr)); ! emit_insn (gen_tldo_addsi (ret, temp3, temp2, addr)); ! } else ! { ! emit_insn (gen_tldo_hix22di (temp1, addr)); ! emit_insn (gen_tldo_lox10di (temp2, temp1, addr)); ! emit_insn (gen_tldo_adddi (ret, temp3, temp2, addr)); ! } break; case TLS_MODEL_INITIAL_EXEC: ! temp1 = gen_reg_rtx (Pmode); ! temp2 = gen_reg_rtx (Pmode); temp3 = gen_reg_rtx (Pmode); got = sparc_tls_got (); if (TARGET_ARCH32) ! { ! emit_insn (gen_tie_hi22si (temp1, addr)); ! emit_insn (gen_tie_lo10si (temp2, temp1, addr)); ! emit_insn (gen_tie_ld32 (temp3, got, temp2, addr)); ! } else ! { ! emit_insn (gen_tie_hi22di (temp1, addr)); ! emit_insn (gen_tie_lo10di (temp2, temp1, addr)); ! emit_insn (gen_tie_ld64 (temp3, got, temp2, addr)); ! } if (TARGET_SUN_TLS) { ret = gen_reg_rtx (Pmode); if (TARGET_ARCH32) ! emit_insn (gen_tie_addsi (ret, gen_rtx_REG (Pmode, 7), temp3, addr)); else ! emit_insn (gen_tie_adddi (ret, gen_rtx_REG (Pmode, 7), temp3, addr)); } else *************** sparc_legitimize_tls_address (rtx addr) *** 4628,4640 **** temp2 = gen_reg_rtx (Pmode); if (TARGET_ARCH32) { ! emit_insn (gen_tle_hix22_sp32 (temp1, addr)); ! emit_insn (gen_tle_lox10_sp32 (temp2, temp1, addr)); } else { ! emit_insn (gen_tle_hix22_sp64 (temp1, addr)); ! emit_insn (gen_tle_lox10_sp64 (temp2, temp1, addr)); } ret = gen_rtx_PLUS (Pmode, gen_rtx_REG (Pmode, 7), temp2); break; --- 4653,4665 ---- temp2 = gen_reg_rtx (Pmode); if (TARGET_ARCH32) { ! emit_insn (gen_tle_hix22si (temp1, addr)); ! emit_insn (gen_tle_lox10si (temp2, temp1, addr)); } else { ! emit_insn (gen_tle_hix22di (temp1, addr)); ! emit_insn (gen_tle_lox10di (temp2, temp1, addr)); } ret = gen_rtx_PLUS (Pmode, gen_rtx_REG (Pmode, 7), temp2); break; diff -Nrcpad gcc-7.4.0/gcc/config/sparc/sparc.md gcc-7.5.0/gcc/config/sparc/sparc.md *** gcc-7.4.0/gcc/config/sparc/sparc.md Fri Apr 6 22:32:39 2018 --- gcc-7.5.0/gcc/config/sparc/sparc.md Wed Jan 9 14:41:55 2019 *************** visl") *** 7961,8118 **** ;; TLS support instructions. ! (define_insn "tgd_hi22" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (high:SI (unspec:SI [(match_operand 1 "tgd_symbolic_operand" "")] ! UNSPEC_TLSGD)))] "TARGET_TLS" "sethi\\t%%tgd_hi22(%a1), %0") ! (define_insn "tgd_lo10" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (lo_sum:SI (match_operand:SI 1 "register_operand" "r") ! (unspec:SI [(match_operand 2 "tgd_symbolic_operand" "")] ! UNSPEC_TLSGD)))] "TARGET_TLS" "add\\t%1, %%tgd_lo10(%a2), %0") ! (define_insn "tgd_add32" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (plus:SI (match_operand:SI 1 "register_operand" "r") ! (unspec:SI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tgd_symbolic_operand" "")] ! UNSPEC_TLSGD)))] ! "TARGET_TLS && TARGET_ARCH32" ! "add\\t%1, %2, %0, %%tgd_add(%a3)") ! ! (define_insn "tgd_add64" ! [(set (match_operand:DI 0 "register_operand" "=r") ! (plus:DI (match_operand:DI 1 "register_operand" "r") ! (unspec:DI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tgd_symbolic_operand" "")] ! UNSPEC_TLSGD)))] ! "TARGET_TLS && TARGET_ARCH64" "add\\t%1, %2, %0, %%tgd_add(%a3)") ! (define_insn "tgd_call32" ! [(set (match_operand 0 "register_operand" "=r") ! (call (mem:SI (unspec:SI [(match_operand:SI 1 "symbolic_operand" "s") ! (match_operand 2 "tgd_symbolic_operand" "")] ! UNSPEC_TLSGD)) ! (match_operand 3 "" ""))) ! (clobber (reg:SI O7_REG))] ! "TARGET_TLS && TARGET_ARCH32" ! "call\t%a1, %%tgd_call(%a2)%#" ! [(set_attr "type" "call")]) ! ! (define_insn "tgd_call64" [(set (match_operand 0 "register_operand" "=r") ! (call (mem:DI (unspec:DI [(match_operand:DI 1 "symbolic_operand" "s") ! (match_operand 2 "tgd_symbolic_operand" "")] ! UNSPEC_TLSGD)) (match_operand 3 "" ""))) ! (clobber (reg:DI O7_REG))] ! "TARGET_TLS && TARGET_ARCH64" "call\t%a1, %%tgd_call(%a2)%#" [(set_attr "type" "call")]) ! (define_insn "tldm_hi22" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (high:SI (unspec:SI [(const_int 0)] UNSPEC_TLSLDM)))] "TARGET_TLS" "sethi\\t%%tldm_hi22(%&), %0") ! (define_insn "tldm_lo10" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (lo_sum:SI (match_operand:SI 1 "register_operand" "r") ! (unspec:SI [(const_int 0)] UNSPEC_TLSLDM)))] "TARGET_TLS" "add\\t%1, %%tldm_lo10(%&), %0") ! (define_insn "tldm_add32" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (plus:SI (match_operand:SI 1 "register_operand" "r") ! (unspec:SI [(match_operand:SI 2 "register_operand" "r")] ! UNSPEC_TLSLDM)))] ! "TARGET_TLS && TARGET_ARCH32" ! "add\\t%1, %2, %0, %%tldm_add(%&)") ! ! (define_insn "tldm_add64" ! [(set (match_operand:DI 0 "register_operand" "=r") ! (plus:DI (match_operand:DI 1 "register_operand" "r") ! (unspec:DI [(match_operand:SI 2 "register_operand" "r")] ! UNSPEC_TLSLDM)))] ! "TARGET_TLS && TARGET_ARCH64" "add\\t%1, %2, %0, %%tldm_add(%&)") ! (define_insn "tldm_call32" ! [(set (match_operand 0 "register_operand" "=r") ! (call (mem:SI (unspec:SI [(match_operand:SI 1 "symbolic_operand" "s")] ! UNSPEC_TLSLDM)) ! (match_operand 2 "" ""))) ! (clobber (reg:SI O7_REG))] ! "TARGET_TLS && TARGET_ARCH32" ! "call\t%a1, %%tldm_call(%&)%#" ! [(set_attr "type" "call")]) ! ! (define_insn "tldm_call64" [(set (match_operand 0 "register_operand" "=r") ! (call (mem:DI (unspec:DI [(match_operand:DI 1 "symbolic_operand" "s")] ! UNSPEC_TLSLDM)) (match_operand 2 "" ""))) ! (clobber (reg:DI O7_REG))] ! "TARGET_TLS && TARGET_ARCH64" "call\t%a1, %%tldm_call(%&)%#" [(set_attr "type" "call")]) ! (define_insn "tldo_hix22" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (high:SI (unspec:SI [(match_operand 1 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO)))] "TARGET_TLS" "sethi\\t%%tldo_hix22(%a1), %0") ! (define_insn "tldo_lox10" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (lo_sum:SI (match_operand:SI 1 "register_operand" "r") ! (unspec:SI [(match_operand 2 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO)))] "TARGET_TLS" "xor\\t%1, %%tldo_lox10(%a2), %0") ! (define_insn "tldo_add32" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (plus:SI (match_operand:SI 1 "register_operand" "r") ! (unspec:SI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO)))] ! "TARGET_TLS && TARGET_ARCH32" ! "add\\t%1, %2, %0, %%tldo_add(%a3)") ! ! (define_insn "tldo_add64" ! [(set (match_operand:DI 0 "register_operand" "=r") ! (plus:DI (match_operand:DI 1 "register_operand" "r") ! (unspec:DI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO)))] ! "TARGET_TLS && TARGET_ARCH64" "add\\t%1, %2, %0, %%tldo_add(%a3)") ! (define_insn "tie_hi22" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (high:SI (unspec:SI [(match_operand 1 "tie_symbolic_operand" "")] ! UNSPEC_TLSIE)))] "TARGET_TLS" "sethi\\t%%tie_hi22(%a1), %0") ! (define_insn "tie_lo10" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (lo_sum:SI (match_operand:SI 1 "register_operand" "r") ! (unspec:SI [(match_operand 2 "tie_symbolic_operand" "")] ! UNSPEC_TLSIE)))] "TARGET_TLS" "add\\t%1, %%tie_lo10(%a2), %0") (define_insn "tie_ld32" [(set (match_operand:SI 0 "register_operand" "=r") (unspec:SI [(match_operand:SI 1 "register_operand" "r") --- 7961,8072 ---- ;; TLS support instructions. ! (define_insn "tgd_hi22" ! [(set (match_operand:P 0 "register_operand" "=r") ! (high:P (unspec:P [(match_operand 1 "tgd_symbolic_operand" "")] ! UNSPEC_TLSGD)))] "TARGET_TLS" "sethi\\t%%tgd_hi22(%a1), %0") ! (define_insn "tgd_lo10" ! [(set (match_operand:P 0 "register_operand" "=r") ! (lo_sum:P (match_operand:P 1 "register_operand" "r") ! (unspec:P [(match_operand 2 "tgd_symbolic_operand" "")] ! UNSPEC_TLSGD)))] "TARGET_TLS" "add\\t%1, %%tgd_lo10(%a2), %0") ! (define_insn "tgd_add" ! [(set (match_operand:P 0 "register_operand" "=r") ! (plus:P (match_operand:P 1 "register_operand" "r") ! (unspec:P [(match_operand:P 2 "register_operand" "r") ! (match_operand 3 "tgd_symbolic_operand" "")] ! UNSPEC_TLSGD)))] ! "TARGET_TLS" "add\\t%1, %2, %0, %%tgd_add(%a3)") ! (define_insn "tgd_call" [(set (match_operand 0 "register_operand" "=r") ! (call (mem:P (unspec:P [(match_operand:P 1 "symbolic_operand" "s") ! (match_operand 2 "tgd_symbolic_operand" "")] ! UNSPEC_TLSGD)) (match_operand 3 "" ""))) ! (clobber (reg:P O7_REG))] ! "TARGET_TLS" "call\t%a1, %%tgd_call(%a2)%#" [(set_attr "type" "call")]) ! (define_insn "tldm_hi22" ! [(set (match_operand:P 0 "register_operand" "=r") ! (high:P (unspec:P [(const_int 0)] UNSPEC_TLSLDM)))] "TARGET_TLS" "sethi\\t%%tldm_hi22(%&), %0") ! (define_insn "tldm_lo10" ! [(set (match_operand:P 0 "register_operand" "=r") ! (lo_sum:P (match_operand:P 1 "register_operand" "r") ! (unspec:P [(const_int 0)] UNSPEC_TLSLDM)))] "TARGET_TLS" "add\\t%1, %%tldm_lo10(%&), %0") ! (define_insn "tldm_add" ! [(set (match_operand:P 0 "register_operand" "=r") ! (plus:P (match_operand:P 1 "register_operand" "r") ! (unspec:P [(match_operand:P 2 "register_operand" "r")] ! UNSPEC_TLSLDM)))] ! "TARGET_TLS" "add\\t%1, %2, %0, %%tldm_add(%&)") ! (define_insn "tldm_call" [(set (match_operand 0 "register_operand" "=r") ! (call (mem:P (unspec:P [(match_operand:P 1 "symbolic_operand" "s")] ! UNSPEC_TLSLDM)) (match_operand 2 "" ""))) ! (clobber (reg:P O7_REG))] ! "TARGET_TLS" "call\t%a1, %%tldm_call(%&)%#" [(set_attr "type" "call")]) ! (define_insn "tldo_hix22" ! [(set (match_operand:P 0 "register_operand" "=r") ! (high:P (unspec:P [(match_operand 1 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO)))] "TARGET_TLS" "sethi\\t%%tldo_hix22(%a1), %0") ! (define_insn "tldo_lox10" ! [(set (match_operand:P 0 "register_operand" "=r") ! (lo_sum:P (match_operand:P 1 "register_operand" "r") ! (unspec:P [(match_operand 2 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO)))] "TARGET_TLS" "xor\\t%1, %%tldo_lox10(%a2), %0") ! (define_insn "tldo_add" ! [(set (match_operand:P 0 "register_operand" "=r") ! (plus:P (match_operand:P 1 "register_operand" "r") ! (unspec:P [(match_operand:P 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO)))] ! "TARGET_TLS" "add\\t%1, %2, %0, %%tldo_add(%a3)") ! (define_insn "tie_hi22" ! [(set (match_operand:P 0 "register_operand" "=r") ! (high:P (unspec:P [(match_operand 1 "tie_symbolic_operand" "")] ! UNSPEC_TLSIE)))] "TARGET_TLS" "sethi\\t%%tie_hi22(%a1), %0") ! (define_insn "tie_lo10" ! [(set (match_operand:P 0 "register_operand" "=r") ! (lo_sum:P (match_operand:P 1 "register_operand" "r") ! (unspec:P [(match_operand 2 "tie_symbolic_operand" "")] ! UNSPEC_TLSIE)))] "TARGET_TLS" "add\\t%1, %%tie_lo10(%a2), %0") + ; Note the %%tie_ld operator (define_insn "tie_ld32" [(set (match_operand:SI 0 "register_operand" "=r") (unspec:SI [(match_operand:SI 1 "register_operand" "r") *************** visl") *** 8124,8133 **** [(set_attr "type" "load") (set_attr "subtype" "regular")]) (define_insn "tie_ld64" [(set (match_operand:DI 0 "register_operand" "=r") (unspec:DI [(match_operand:DI 1 "register_operand" "r") ! (match_operand:SI 2 "register_operand" "r") (match_operand 3 "tie_symbolic_operand" "")] UNSPEC_TLSIE))] "TARGET_TLS && TARGET_ARCH64" --- 8078,8088 ---- [(set_attr "type" "load") (set_attr "subtype" "regular")]) + ; Note the %%tie_ldx operator (define_insn "tie_ld64" [(set (match_operand:DI 0 "register_operand" "=r") (unspec:DI [(match_operand:DI 1 "register_operand" "r") ! (match_operand:DI 2 "register_operand" "r") (match_operand 3 "tie_symbolic_operand" "")] UNSPEC_TLSIE))] "TARGET_TLS && TARGET_ARCH64" *************** visl") *** 8135,8293 **** [(set_attr "type" "load") (set_attr "subtype" "regular")]) ! (define_insn "tie_add32" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (plus:SI (match_operand:SI 1 "register_operand" "r") ! (unspec:SI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tie_symbolic_operand" "")] ! UNSPEC_TLSIE)))] ! "TARGET_SUN_TLS && TARGET_ARCH32" ! "add\\t%1, %2, %0, %%tie_add(%a3)") ! ! (define_insn "tie_add64" ! [(set (match_operand:DI 0 "register_operand" "=r") ! (plus:DI (match_operand:DI 1 "register_operand" "r") ! (unspec:DI [(match_operand:DI 2 "register_operand" "r") ! (match_operand 3 "tie_symbolic_operand" "")] ! UNSPEC_TLSIE)))] ! "TARGET_SUN_TLS && TARGET_ARCH64" "add\\t%1, %2, %0, %%tie_add(%a3)") ! (define_insn "tle_hix22_sp32" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (high:SI (unspec:SI [(match_operand 1 "tle_symbolic_operand" "")] ! UNSPEC_TLSLE)))] ! "TARGET_TLS && TARGET_ARCH32" "sethi\\t%%tle_hix22(%a1), %0") ! (define_insn "tle_lox10_sp32" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (lo_sum:SI (match_operand:SI 1 "register_operand" "r") ! (unspec:SI [(match_operand 2 "tle_symbolic_operand" "")] ! UNSPEC_TLSLE)))] ! "TARGET_TLS && TARGET_ARCH32" ! "xor\\t%1, %%tle_lox10(%a2), %0") ! ! (define_insn "tle_hix22_sp64" ! [(set (match_operand:DI 0 "register_operand" "=r") ! (high:DI (unspec:DI [(match_operand 1 "tle_symbolic_operand" "")] UNSPEC_TLSLE)))] ! "TARGET_TLS && TARGET_ARCH64" ! "sethi\\t%%tle_hix22(%a1), %0") ! ! (define_insn "tle_lox10_sp64" ! [(set (match_operand:DI 0 "register_operand" "=r") ! (lo_sum:DI (match_operand:DI 1 "register_operand" "r") ! (unspec:DI [(match_operand 2 "tle_symbolic_operand" "")] ! UNSPEC_TLSLE)))] ! "TARGET_TLS && TARGET_ARCH64" "xor\\t%1, %%tle_lox10(%a2), %0") ! ;; Now patterns combining tldo_add{32,64} with some integer loads or stores ! (define_insn "*tldo_ldub_sp32" [(set (match_operand:QI 0 "register_operand" "=r") ! (mem:QI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:SI 1 "register_operand" "r"))))] ! "TARGET_TLS && TARGET_ARCH32" "ldub\t[%1 + %2], %0, %%tldo_add(%3)" [(set_attr "type" "load") (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_ldub1_sp32" [(set (match_operand:HI 0 "register_operand" "=r") (zero_extend:HI ! (mem:QI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:SI 1 "register_operand" "r")))))] ! "TARGET_TLS && TARGET_ARCH32" "ldub\t[%1 + %2], %0, %%tldo_add(%3)" [(set_attr "type" "load") (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_ldub2_sp32" [(set (match_operand:SI 0 "register_operand" "=r") (zero_extend:SI ! (mem:QI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:SI 1 "register_operand" "r")))))] ! "TARGET_TLS && TARGET_ARCH32" "ldub\t[%1 + %2], %0, %%tldo_add(%3)" [(set_attr "type" "load") (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_ldsb1_sp32" [(set (match_operand:HI 0 "register_operand" "=r") (sign_extend:HI ! (mem:QI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:SI 1 "register_operand" "r")))))] ! "TARGET_TLS && TARGET_ARCH32" "ldsb\t[%1 + %2], %0, %%tldo_add(%3)" [(set_attr "type" "sload") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_ldsb2_sp32" [(set (match_operand:SI 0 "register_operand" "=r") (sign_extend:SI ! (mem:QI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:SI 1 "register_operand" "r")))))] ! "TARGET_TLS && TARGET_ARCH32" ! "ldsb\t[%1 + %2], %0, %%tldo_add(%3)" ! [(set_attr "type" "sload") ! (set_attr "us3load_type" "3cycle")]) ! ! (define_insn "*tldo_ldub_sp64" ! [(set (match_operand:QI 0 "register_operand" "=r") ! (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) ! (match_operand:DI 1 "register_operand" "r"))))] ! "TARGET_TLS && TARGET_ARCH64" ! "ldub\t[%1 + %2], %0, %%tldo_add(%3)" ! [(set_attr "type" "load") ! (set_attr "subtype" "regular") ! (set_attr "us3load_type" "3cycle")]) ! ! (define_insn "*tldo_ldub1_sp64" ! [(set (match_operand:HI 0 "register_operand" "=r") ! (zero_extend:HI ! (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:DI 1 "register_operand" "r")))))] ! "TARGET_TLS && TARGET_ARCH64" ! "ldub\t[%1 + %2], %0, %%tldo_add(%3)" ! [(set_attr "type" "load") ! (set_attr "subtype" "regular") ! (set_attr "us3load_type" "3cycle")]) ! ! (define_insn "*tldo_ldub2_sp64" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (zero_extend:SI ! (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:DI 1 "register_operand" "r")))))] ! "TARGET_TLS && TARGET_ARCH64" ! "ldub\t[%1 + %2], %0, %%tldo_add(%3)" ! [(set_attr "type" "load") ! (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) (define_insn "*tldo_ldub3_sp64" [(set (match_operand:DI 0 "register_operand" "=r") (zero_extend:DI ! (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r")))))] --- 8090,8186 ---- [(set_attr "type" "load") (set_attr "subtype" "regular")]) ! (define_insn "tie_add" ! [(set (match_operand:P 0 "register_operand" "=r") ! (plus:P (match_operand:P 1 "register_operand" "r") ! (unspec:P [(match_operand:P 2 "register_operand" "r") ! (match_operand 3 "tie_symbolic_operand" "")] ! UNSPEC_TLSIE)))] ! "TARGET_SUN_TLS" "add\\t%1, %2, %0, %%tie_add(%a3)") ! (define_insn "tle_hix22" ! [(set (match_operand:P 0 "register_operand" "=r") ! (high:P (unspec:P [(match_operand 1 "tle_symbolic_operand" "")] ! UNSPEC_TLSLE)))] ! "TARGET_TLS" "sethi\\t%%tle_hix22(%a1), %0") ! (define_insn "tle_lox10" ! [(set (match_operand:P 0 "register_operand" "=r") ! (lo_sum:P (match_operand:P 1 "register_operand" "r") ! (unspec:P [(match_operand 2 "tle_symbolic_operand" "")] UNSPEC_TLSLE)))] ! "TARGET_TLS" "xor\\t%1, %%tle_lox10(%a2), %0") ! ;; Now patterns combining tldo_add with some integer loads or stores ! (define_insn "*tldo_ldub" [(set (match_operand:QI 0 "register_operand" "=r") ! (mem:QI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:P 1 "register_operand" "r"))))] ! "TARGET_TLS" "ldub\t[%1 + %2], %0, %%tldo_add(%3)" [(set_attr "type" "load") (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_ldub1" [(set (match_operand:HI 0 "register_operand" "=r") (zero_extend:HI ! (mem:QI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:P 1 "register_operand" "r")))))] ! "TARGET_TLS" "ldub\t[%1 + %2], %0, %%tldo_add(%3)" [(set_attr "type" "load") (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_ldub2" [(set (match_operand:SI 0 "register_operand" "=r") (zero_extend:SI ! (mem:QI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:P 1 "register_operand" "r")))))] ! "TARGET_TLS" "ldub\t[%1 + %2], %0, %%tldo_add(%3)" [(set_attr "type" "load") (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_ldsb1" [(set (match_operand:HI 0 "register_operand" "=r") (sign_extend:HI ! (mem:QI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:P 1 "register_operand" "r")))))] ! "TARGET_TLS" "ldsb\t[%1 + %2], %0, %%tldo_add(%3)" [(set_attr "type" "sload") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_ldsb2" [(set (match_operand:SI 0 "register_operand" "=r") (sign_extend:SI ! (mem:QI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) ! (match_operand:P 1 "register_operand" "r")))))] ! "TARGET_TLS" ! "ldsb\t[%1 + %2], %0, %%tldo_add(%3)" ! [(set_attr "type" "sload") (set_attr "us3load_type" "3cycle")]) (define_insn "*tldo_ldub3_sp64" [(set (match_operand:DI 0 "register_operand" "=r") (zero_extend:DI ! (mem:QI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r")))))] *************** visl") *** 8297,8330 **** (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) - (define_insn "*tldo_ldsb1_sp64" - [(set (match_operand:HI 0 "register_operand" "=r") - (sign_extend:HI - (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") - (match_operand 3 "tld_symbolic_operand" "")] - UNSPEC_TLSLDO) - (match_operand:DI 1 "register_operand" "r")))))] - "TARGET_TLS && TARGET_ARCH64" - "ldsb\t[%1 + %2], %0, %%tldo_add(%3)" - [(set_attr "type" "sload") - (set_attr "us3load_type" "3cycle")]) - - (define_insn "*tldo_ldsb2_sp64" - [(set (match_operand:SI 0 "register_operand" "=r") - (sign_extend:SI - (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") - (match_operand 3 "tld_symbolic_operand" "")] - UNSPEC_TLSLDO) - (match_operand:DI 1 "register_operand" "r")))))] - "TARGET_TLS && TARGET_ARCH64" - "ldsb\t[%1 + %2], %0, %%tldo_add(%3)" - [(set_attr "type" "sload") - (set_attr "us3load_type" "3cycle")]) - (define_insn "*tldo_ldsb3_sp64" [(set (match_operand:DI 0 "register_operand" "=r") (sign_extend:DI ! (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r")))))] --- 8190,8199 ---- (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) (define_insn "*tldo_ldsb3_sp64" [(set (match_operand:DI 0 "register_operand" "=r") (sign_extend:DI ! (mem:QI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r")))))] *************** visl") *** 8333,8404 **** [(set_attr "type" "sload") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_lduh_sp32" [(set (match_operand:HI 0 "register_operand" "=r") ! (mem:HI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:SI 1 "register_operand" "r"))))] ! "TARGET_TLS && TARGET_ARCH32" "lduh\t[%1 + %2], %0, %%tldo_add(%3)" [(set_attr "type" "load") (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_lduh1_sp32" [(set (match_operand:SI 0 "register_operand" "=r") (zero_extend:SI ! (mem:HI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:SI 1 "register_operand" "r")))))] ! "TARGET_TLS && TARGET_ARCH32" "lduh\t[%1 + %2], %0, %%tldo_add(%3)" [(set_attr "type" "load") (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_ldsh1_sp32" [(set (match_operand:SI 0 "register_operand" "=r") (sign_extend:SI ! (mem:HI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:SI 1 "register_operand" "r")))))] ! "TARGET_TLS && TARGET_ARCH32" ! "ldsh\t[%1 + %2], %0, %%tldo_add(%3)" ! [(set_attr "type" "sload") ! (set_attr "us3load_type" "3cycle")]) ! ! (define_insn "*tldo_lduh_sp64" ! [(set (match_operand:HI 0 "register_operand" "=r") ! (mem:HI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) ! (match_operand:DI 1 "register_operand" "r"))))] ! "TARGET_TLS && TARGET_ARCH64" ! "lduh\t[%1 + %2], %0, %%tldo_add(%3)" ! [(set_attr "type" "load") ! (set_attr "subtype" "regular") ! (set_attr "us3load_type" "3cycle")]) ! ! (define_insn "*tldo_lduh1_sp64" ! [(set (match_operand:SI 0 "register_operand" "=r") ! (zero_extend:SI ! (mem:HI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:DI 1 "register_operand" "r")))))] ! "TARGET_TLS && TARGET_ARCH64" ! "lduh\t[%1 + %2], %0, %%tldo_add(%3)" ! [(set_attr "type" "load") ! (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) (define_insn "*tldo_lduh2_sp64" [(set (match_operand:DI 0 "register_operand" "=r") (zero_extend:DI ! (mem:HI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r")))))] --- 8202,8248 ---- [(set_attr "type" "sload") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_lduh" [(set (match_operand:HI 0 "register_operand" "=r") ! (mem:HI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:P 1 "register_operand" "r"))))] ! "TARGET_TLS" "lduh\t[%1 + %2], %0, %%tldo_add(%3)" [(set_attr "type" "load") (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_lduh1" [(set (match_operand:SI 0 "register_operand" "=r") (zero_extend:SI ! (mem:HI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:P 1 "register_operand" "r")))))] ! "TARGET_TLS" "lduh\t[%1 + %2], %0, %%tldo_add(%3)" [(set_attr "type" "load") (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_ldsh1" [(set (match_operand:SI 0 "register_operand" "=r") (sign_extend:SI ! (mem:HI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) ! (match_operand:P 1 "register_operand" "r")))))] ! "TARGET_TLS" ! "ldsh\t[%1 + %2], %0, %%tldo_add(%3)" ! [(set_attr "type" "sload") (set_attr "us3load_type" "3cycle")]) (define_insn "*tldo_lduh2_sp64" [(set (match_operand:DI 0 "register_operand" "=r") (zero_extend:DI ! (mem:HI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r")))))] *************** visl") *** 8408,8429 **** (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) - (define_insn "*tldo_ldsh1_sp64" - [(set (match_operand:SI 0 "register_operand" "=r") - (sign_extend:SI - (mem:HI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") - (match_operand 3 "tld_symbolic_operand" "")] - UNSPEC_TLSLDO) - (match_operand:DI 1 "register_operand" "r")))))] - "TARGET_TLS && TARGET_ARCH64" - "ldsh\t[%1 + %2], %0, %%tldo_add(%3)" - [(set_attr "type" "sload") - (set_attr "us3load_type" "3cycle")]) - (define_insn "*tldo_ldsh2_sp64" [(set (match_operand:DI 0 "register_operand" "=r") (sign_extend:DI ! (mem:HI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r")))))] --- 8252,8261 ---- (set_attr "subtype" "regular") (set_attr "us3load_type" "3cycle")]) (define_insn "*tldo_ldsh2_sp64" [(set (match_operand:DI 0 "register_operand" "=r") (sign_extend:DI ! (mem:HI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r")))))] *************** visl") *** 8432,8463 **** [(set_attr "type" "sload") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_lduw_sp32" [(set (match_operand:SI 0 "register_operand" "=r") ! (mem:SI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:SI 1 "register_operand" "r"))))] ! "TARGET_TLS && TARGET_ARCH32" "ld\t[%1 + %2], %0, %%tldo_add(%3)" [(set_attr "type" "load") (set_attr "subtype" "regular")]) - (define_insn "*tldo_lduw_sp64" - [(set (match_operand:SI 0 "register_operand" "=r") - (mem:SI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") - (match_operand 3 "tld_symbolic_operand" "")] - UNSPEC_TLSLDO) - (match_operand:DI 1 "register_operand" "r"))))] - "TARGET_TLS && TARGET_ARCH64" - "lduw\t[%1 + %2], %0, %%tldo_add(%3)" - [(set_attr "type" "load") - (set_attr "subtype" "regular")]) - (define_insn "*tldo_lduw1_sp64" [(set (match_operand:DI 0 "register_operand" "=r") (zero_extend:DI ! (mem:SI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r")))))] --- 8264,8284 ---- [(set_attr "type" "sload") (set_attr "us3load_type" "3cycle")]) ! (define_insn "*tldo_lduw" [(set (match_operand:SI 0 "register_operand" "=r") ! (mem:SI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:P 1 "register_operand" "r"))))] ! "TARGET_TLS" "ld\t[%1 + %2], %0, %%tldo_add(%3)" [(set_attr "type" "load") (set_attr "subtype" "regular")]) (define_insn "*tldo_lduw1_sp64" [(set (match_operand:DI 0 "register_operand" "=r") (zero_extend:DI ! (mem:SI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r")))))] *************** visl") *** 8469,8476 **** (define_insn "*tldo_ldsw1_sp64" [(set (match_operand:DI 0 "register_operand" "=r") (sign_extend:DI ! (mem:SI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r")))))] "TARGET_TLS && TARGET_ARCH64" --- 8290,8297 ---- (define_insn "*tldo_ldsw1_sp64" [(set (match_operand:DI 0 "register_operand" "=r") (sign_extend:DI ! (mem:SI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r")))))] "TARGET_TLS && TARGET_ARCH64" *************** visl") *** 8480,8486 **** (define_insn "*tldo_ldx_sp64" [(set (match_operand:DI 0 "register_operand" "=r") ! (mem:DI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r"))))] --- 8301,8307 ---- (define_insn "*tldo_ldx_sp64" [(set (match_operand:DI 0 "register_operand" "=r") ! (mem:DI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r"))))] *************** visl") *** 8489,8556 **** [(set_attr "type" "load") (set_attr "subtype" "regular")]) ! (define_insn "*tldo_stb_sp32" ! [(set (mem:QI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:SI 1 "register_operand" "r"))) ! (match_operand:QI 0 "register_operand" "r"))] ! "TARGET_TLS && TARGET_ARCH32" ! "stb\t%0, [%1 + %2], %%tldo_add(%3)" ! [(set_attr "type" "store")]) ! ! (define_insn "*tldo_stb_sp64" ! [(set (mem:QI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:DI 1 "register_operand" "r"))) (match_operand:QI 0 "register_operand" "r"))] ! "TARGET_TLS && TARGET_ARCH64" "stb\t%0, [%1 + %2], %%tldo_add(%3)" [(set_attr "type" "store")]) ! (define_insn "*tldo_sth_sp32" ! [(set (mem:HI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:SI 1 "register_operand" "r"))) ! (match_operand:HI 0 "register_operand" "r"))] ! "TARGET_TLS && TARGET_ARCH32" ! "sth\t%0, [%1 + %2], %%tldo_add(%3)" ! [(set_attr "type" "store")]) ! ! (define_insn "*tldo_sth_sp64" ! [(set (mem:HI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:DI 1 "register_operand" "r"))) (match_operand:HI 0 "register_operand" "r"))] ! "TARGET_TLS && TARGET_ARCH64" "sth\t%0, [%1 + %2], %%tldo_add(%3)" [(set_attr "type" "store")]) ! (define_insn "*tldo_stw_sp32" ! [(set (mem:SI (plus:SI (unspec:SI [(match_operand:SI 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:SI 1 "register_operand" "r"))) (match_operand:SI 0 "register_operand" "r"))] ! "TARGET_TLS && TARGET_ARCH32" "st\t%0, [%1 + %2], %%tldo_add(%3)" [(set_attr "type" "store")]) - (define_insn "*tldo_stw_sp64" - [(set (mem:SI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") - (match_operand 3 "tld_symbolic_operand" "")] - UNSPEC_TLSLDO) - (match_operand:DI 1 "register_operand" "r"))) - (match_operand:SI 0 "register_operand" "r"))] - "TARGET_TLS && TARGET_ARCH64" - "stw\t%0, [%1 + %2], %%tldo_add(%3)" - [(set_attr "type" "store")]) - (define_insn "*tldo_stx_sp64" ! [(set (mem:DI (plus:DI (unspec:DI [(match_operand:SI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r"))) --- 8310,8347 ---- [(set_attr "type" "load") (set_attr "subtype" "regular")]) ! (define_insn "*tldo_stb" ! [(set (mem:QI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:P 1 "register_operand" "r"))) (match_operand:QI 0 "register_operand" "r"))] ! "TARGET_TLS" "stb\t%0, [%1 + %2], %%tldo_add(%3)" [(set_attr "type" "store")]) ! (define_insn "*tldo_sth" ! [(set (mem:HI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:P 1 "register_operand" "r"))) (match_operand:HI 0 "register_operand" "r"))] ! "TARGET_TLS" "sth\t%0, [%1 + %2], %%tldo_add(%3)" [(set_attr "type" "store")]) ! (define_insn "*tldo_stw" ! [(set (mem:SI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r") ! (match_operand 3 "tld_symbolic_operand" "")] ! UNSPEC_TLSLDO) ! (match_operand:P 1 "register_operand" "r"))) (match_operand:SI 0 "register_operand" "r"))] ! "TARGET_TLS" "st\t%0, [%1 + %2], %%tldo_add(%3)" [(set_attr "type" "store")]) (define_insn "*tldo_stx_sp64" ! [(set (mem:DI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r") (match_operand 3 "tld_symbolic_operand" "")] UNSPEC_TLSLDO) (match_operand:DI 1 "register_operand" "r"))) diff -Nrcpad gcc-7.4.0/gcc/config/xtensa/xtensa.c gcc-7.5.0/gcc/config/xtensa/xtensa.c *** gcc-7.4.0/gcc/config/xtensa/xtensa.c Tue Sep 4 17:59:04 2018 --- gcc-7.5.0/gcc/config/xtensa/xtensa.c Mon Sep 23 07:50:40 2019 *************** xtensa_expand_prologue (void) *** 2802,2808 **** gen_rtx_SET (mem, reg)); } } ! if (total_size > 1024) { rtx tmp_reg = gen_rtx_REG (Pmode, A9_REG); emit_move_insn (tmp_reg, GEN_INT (total_size - --- 2802,2809 ---- gen_rtx_SET (mem, reg)); } } ! if (total_size > 1024 ! || (!callee_save_size && total_size > 128)) { rtx tmp_reg = gen_rtx_REG (Pmode, A9_REG); emit_move_insn (tmp_reg, GEN_INT (total_size - diff -Nrcpad gcc-7.4.0/gcc/config.gcc gcc-7.5.0/gcc/config.gcc *** gcc-7.4.0/gcc/config.gcc Thu Jun 21 09:36:40 2018 --- gcc-7.5.0/gcc/config.gcc Fri Nov 1 20:20:47 2019 *************** x86_cpus="generic intel" *** 616,622 **** # Common parts for widely ported systems. case ${target} in *-*-darwin*) ! tmake_file="t-darwin ${cpu_type}/t-darwin" tm_file="${tm_file} darwin.h" case ${target} in *-*-darwin9*) --- 616,622 ---- # Common parts for widely ported systems. case ${target} in *-*-darwin*) ! tmake_file="t-darwin " tm_file="${tm_file} darwin.h" case ${target} in *-*-darwin9*) *************** hppa[12]*-*-hpux11*) *** 1440,1455 **** dwarf2=no fi ;; i[34567]86-*-darwin*) need_64bit_isa=yes # Baseline choice for a machine that allows m64 support. with_cpu=${with_cpu:-core2} tmake_file="${tmake_file} t-slibgcc" ;; x86_64-*-darwin*) with_cpu=${with_cpu:-core2} ! tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc" ! tm_file="${tm_file} ${cpu_type}/darwin64.h" ;; i[34567]86-*-elfiamcu) tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/iamcu.h" --- 1440,1464 ---- dwarf2=no fi ;; + i[34567]86-*-darwin1[89]*) + echo "Error: 32bit target is not supported after Darwin17" 1>&2 + ;; i[34567]86-*-darwin*) need_64bit_isa=yes # Baseline choice for a machine that allows m64 support. with_cpu=${with_cpu:-core2} + tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc" + tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h" + ;; + x86_64-*-darwin1[89]* | x86_64-*-darwin2[01]*) + # Only 64b from now + with_cpu=${with_cpu:-core2} tmake_file="${tmake_file} t-slibgcc" ;; x86_64-*-darwin*) with_cpu=${with_cpu:-core2} ! tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc" ! tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h" ;; i[34567]86-*-elfiamcu) tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/iamcu.h" *************** pdp11-*-*) *** 2346,2371 **** # extra_headers= # ;; powerpc-*-darwin*) ! extra_options="${extra_options} rs6000/darwin.opt" case ${target} in ! *-darwin1[0-9]* | *-darwin[8-9]*) ! tmake_file="${tmake_file} rs6000/t-darwin8" ! tm_file="${tm_file} rs6000/darwin8.h" ;; *-darwin7*) ! tm_file="${tm_file} rs6000/darwin7.h" ;; ! *-darwin[0-6]*) ;; esac tmake_file="${tmake_file} t-slibgcc" - extra_headers=altivec.h ;; powerpc64-*-darwin*) extra_options="${extra_options} ${cpu_type}/darwin.opt" ! tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc" ! tm_file="${tm_file} ${cpu_type}/darwin8.h ${cpu_type}/darwin64.h" ! extra_headers=altivec.h ;; powerpc*-*-freebsd*) tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} rs6000/sysv4.h" --- 2355,2385 ---- # extra_headers= # ;; powerpc-*-darwin*) ! extra_options="${extra_options} ${cpu_type}/darwin.opt" case ${target} in ! *-darwin1[0-9]* | *-darwin9*) ! tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch" ! tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h" ! ;; ! *-darwin8*) ! tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch" ! tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h" ! tm_file="${tm_file} ${cpu_type}/darwin8.h" ;; *-darwin7*) ! tm_file="${tm_file} ${cpu_type}/darwin7.h" ;; ! *-darwin[456]*) ! # Earlier - single arch, with 32b only ! # OS X 10.0, the first edition is Darwin4 ;; esac tmake_file="${tmake_file} t-slibgcc" ;; powerpc64-*-darwin*) extra_options="${extra_options} ${cpu_type}/darwin.opt" ! tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc" ! tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h" ;; powerpc*-*-freebsd*) tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} rs6000/sysv4.h" *************** case "${target}" in *** 4316,4329 **** echo "#undef LINK_OS_EXTRA_SPEC32" echo "#define LINK_OS_EXTRA_SPEC32" \ "\"%(link_os_new_dtags)" \ ! "-rpath $prefix/lib -rpath $at/lib" \ ! "-L $prefix/lib -L $at/lib\"" echo echo "#undef LINK_OS_EXTRA_SPEC64" echo "#define LINK_OS_EXTRA_SPEC64" \ "\"%(link_os_new_dtags)" \ ! "-rpath $prefix/lib64 -rpath $at/lib64" \ ! "-L $prefix/lib64 -L $at/lib64\"" echo echo "#undef LINK_OS_NEW_DTAGS_SPEC" echo "#define LINK_OS_NEW_DTAGS_SPEC" \ --- 4330,4341 ---- echo "#undef LINK_OS_EXTRA_SPEC32" echo "#define LINK_OS_EXTRA_SPEC32" \ "\"%(link_os_new_dtags)" \ ! "-rpath $prefix/lib -rpath $at/lib\"" echo echo "#undef LINK_OS_EXTRA_SPEC64" echo "#define LINK_OS_EXTRA_SPEC64" \ "\"%(link_os_new_dtags)" \ ! "-rpath $prefix/lib64 -rpath $at/lib64\"" echo echo "#undef LINK_OS_NEW_DTAGS_SPEC" echo "#define LINK_OS_NEW_DTAGS_SPEC" \ *************** case "${target}" in *** 4336,4342 **** echo "#define MD_EXEC_PREFIX \"$at/bin/\"" echo echo "#undef MD_STARTFILE_PREFIX" ! echo "#define MD_STARTFILE_PREFIX \"$at/lib/\"") \ > advance-toolchain.h else echo "Unknown advance-toolchain $with_advance_toolchain" --- 4348,4357 ---- echo "#define MD_EXEC_PREFIX \"$at/bin/\"" echo echo "#undef MD_STARTFILE_PREFIX" ! echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\"" ! echo ! echo "#undef MD_STARTFILE_PREFIX_1" ! echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \ > advance-toolchain.h else echo "Unknown advance-toolchain $with_advance_toolchain" diff -Nrcpad gcc-7.4.0/gcc/convert.c gcc-7.5.0/gcc/convert.c *** gcc-7.4.0/gcc/convert.c Tue Jan 9 08:53:14 2018 --- gcc-7.5.0/gcc/convert.c Fri Aug 30 12:11:06 2019 *************** convert_to_real_1 (tree type, tree expr, *** 190,201 **** CASE_MATHFN (FABS) CASE_MATHFN (LOGB) #undef CASE_MATHFN { tree arg0 = strip_float_extensions (CALL_EXPR_ARG (expr, 0)); tree newtype = type; ! /* We have (outertype)sqrt((innertype)x). Choose the wider mode from ! the both as the safe type for operation. */ if (TYPE_PRECISION (TREE_TYPE (arg0)) > TYPE_PRECISION (type)) newtype = TREE_TYPE (arg0); --- 190,204 ---- CASE_MATHFN (FABS) CASE_MATHFN (LOGB) #undef CASE_MATHFN + if (call_expr_nargs (expr) != 1 + || !SCALAR_FLOAT_TYPE_P (TREE_TYPE (CALL_EXPR_ARG (expr, 0)))) + break; { tree arg0 = strip_float_extensions (CALL_EXPR_ARG (expr, 0)); tree newtype = type; ! /* We have (outertype)sqrt((innertype)x). Choose the wider mode ! from the both as the safe type for operation. */ if (TYPE_PRECISION (TREE_TYPE (arg0)) > TYPE_PRECISION (type)) newtype = TREE_TYPE (arg0); *************** convert_to_integer_1 (tree type, tree ex *** 579,585 **** CASE_FLT_FN (BUILT_IN_ROUND): /* Only convert in ISO C99 mode and with -fno-math-errno. */ ! if (!targetm.libc_has_function (function_c99_misc) || flag_errno_math) break; if (outprec < TYPE_PRECISION (integer_type_node) || (outprec == TYPE_PRECISION (integer_type_node) --- 582,589 ---- CASE_FLT_FN (BUILT_IN_ROUND): /* Only convert in ISO C99 mode and with -fno-math-errno. */ ! if (!targetm.libc_has_function (function_c99_misc) ! || flag_errno_math) break; if (outprec < TYPE_PRECISION (integer_type_node) || (outprec == TYPE_PRECISION (integer_type_node) *************** convert_to_integer_1 (tree type, tree ex *** 600,606 **** gcc_fallthrough (); CASE_FLT_FN (BUILT_IN_RINT): /* Only convert in ISO C99 mode and with -fno-math-errno. */ ! if (!targetm.libc_has_function (function_c99_misc) || flag_errno_math) break; if (outprec < TYPE_PRECISION (integer_type_node) || (outprec == TYPE_PRECISION (integer_type_node) --- 604,611 ---- gcc_fallthrough (); CASE_FLT_FN (BUILT_IN_RINT): /* Only convert in ISO C99 mode and with -fno-math-errno. */ ! if (!targetm.libc_has_function (function_c99_misc) ! || flag_errno_math) break; if (outprec < TYPE_PRECISION (integer_type_node) || (outprec == TYPE_PRECISION (integer_type_node) *************** convert_to_integer_1 (tree type, tree ex *** 615,627 **** break; CASE_FLT_FN (BUILT_IN_TRUNC): ! return convert_to_integer_1 (type, CALL_EXPR_ARG (s_expr, 0), dofold); default: break; } ! if (fn) { tree newexpr = build_call_expr (fn, 1, CALL_EXPR_ARG (s_expr, 0)); return convert_to_integer_1 (type, newexpr, dofold); --- 620,638 ---- break; CASE_FLT_FN (BUILT_IN_TRUNC): ! if (call_expr_nargs (s_expr) != 1 ! || !SCALAR_FLOAT_TYPE_P (TREE_TYPE (CALL_EXPR_ARG (s_expr, 0)))) ! break; ! return convert_to_integer_1 (type, CALL_EXPR_ARG (s_expr, 0), ! dofold); default: break; } ! if (fn ! && call_expr_nargs (s_expr) == 1 ! && SCALAR_FLOAT_TYPE_P (TREE_TYPE (CALL_EXPR_ARG (s_expr, 0)))) { tree newexpr = build_call_expr (fn, 1, CALL_EXPR_ARG (s_expr, 0)); return convert_to_integer_1 (type, newexpr, dofold); *************** convert_to_integer_1 (tree type, tree ex *** 652,658 **** break; } ! if (fn) { tree newexpr = build_call_expr (fn, 1, CALL_EXPR_ARG (s_expr, 0)); return convert_to_integer_1 (type, newexpr, dofold); --- 663,671 ---- break; } ! if (fn ! && call_expr_nargs (s_expr) == 1 ! && SCALAR_FLOAT_TYPE_P (TREE_TYPE (CALL_EXPR_ARG (s_expr, 0)))) { tree newexpr = build_call_expr (fn, 1, CALL_EXPR_ARG (s_expr, 0)); return convert_to_integer_1 (type, newexpr, dofold); diff -Nrcpad gcc-7.4.0/gcc/cp/ChangeLog gcc-7.5.0/gcc/cp/ChangeLog *** gcc-7.4.0/gcc/cp/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gcc/cp/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,202 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-09-05 Iain Sandoe + + Backported from mainline + 2019-08-23 Iain Sandoe + + PR pch/61250 + * parser.c (cp_parser_initial_pragma): Call c_common_no_more_pch () + after determining that the first token is not + PRAGMA_GCC_PCH_PREPROCESS. + + 2019-09-02 Richard Biener + + Backport from mainline + 2019-02-21 Richard Biener + + PR middle-end/89392 + * vtable-class-hierarchy.c (vtv_generate_init_routine): Do not + make symtab process new functions here. + + 2019-08-30 Jakub Jelinek + + Backported from mainline + 2019-06-21 Jakub Jelinek + + PR c++/90950 + * semantics.c (finish_omp_clauses): Don't reject references to + incomplete types if processing_template_decl. + + 2019-05-10 Jakub Jelinek + + PR pch/90326 + * config-lang.in (gtfiles): Remove c-family/c-lex.c, add + c-family/c-cppbuiltin.c. + + 2019-04-19 Jakub Jelinek + + PR c++/90108 + * decl.c (duplicate_decls): If remove is main variant and + DECL_ORIGINAL_TYPE is some other type, remove a DECL_ORIGINAL_TYPE + variant that has newdecl as TYPE_NAME if any. + + 2019-04-12 Jakub Jelinek + + PR c/89933 + * decl.c (duplicate_decls): When newdecl's type is its main variant, + don't try to remove it from the variant list, but instead assert + it has no variants. + + 2019-03-29 Jakub Jelinek + + PR sanitizer/89869 + * typeck.c: Include gimplify.h. + (cp_build_modify_expr) : Unshare rhs before using it + for second time. Formatting fixes. + + 2019-03-26 Jakub Jelinek + + PR c++/89796 + * semantics.c (finish_omp_atomic): Add warning_sentinel for + -Wunused-value around finish_expr_stmt call. + + 2019-03-22 Jakub Jelinek + + PR c++/60702 + * cp-tree.h (get_tls_wrapper_fn): Remove declaration. + (maybe_get_tls_wrapper_call): Declare. + * decl2.c (get_tls_wrapper_fn): Make static. + (maybe_get_tls_wrapper_call): New function. + * typeck.c (build_class_member_access_expr): Handle accesses to TLS + variables. + * semantics.c (finish_qualified_id_expr): Likewise. + (finish_id_expression_1): Use maybe_get_tls_wrapper_call. + * pt.c (tsubst_copy_and_build): Likewise. + + 2019-03-21 Jakub Jelinek + + PR c++/89767 + * parser.c (cp_parser_lambda_introducer): Add ids and first_capture_id + variables, check for duplicates in this function. + * lambda.c (add_capture): Don't check for duplicates nor use + IDENTIFIER_MARKED. + (register_capture_members): Don't clear IDENTIFIER_MARKED here. + + 2019-03-14 Jakub Jelinek + + PR c++/89512 + * semantics.c (finish_qualified_id_expr): Reject variable templates. + + 2019-03-06 Jakub Jelinek + + PR c++/87148 + * init.c (build_value_init_noctor): Ignore flexible array members. + + 2019-02-20 Jakub Jelinek + + PR c++/89403 + * decl2.c (c_parse_final_cleanups): Move TREE_ASM_WRITTEN setting + for flag_syntax_only from here... + * semantics.c (expand_or_defer_fn_1): ... here. + + 2019-02-05 Jakub Jelinek + + PR c++/89187 + * optimize.c (maybe_thunk_body): Clear TREE_ADDRESSABLE on + PARM_DECLs of the thunk. + * lambda.c (maybe_add_lambda_conv_op): Likewise. + + 2019-01-24 Jakub Jelinek + + PR c++/88976 + * semantics.c (finish_omp_cancel): Use maybe_convert_cond when not in + template or build_x_binary_op otherwise. + + 2019-01-21 Jakub Jelinek + + PR c++/88949 + * optimize.c (cxx_copy_decl): New function. + (clone_body): Use it instead of copy_decl_no_change. + + 2018-12-07 Jakub Jelinek + + PR c++/86669 + * call.c (make_temporary_var_for_ref_to_temp): Call pushdecl even for + automatic vars. + + PR c++/87506 + * constexpr.c (adjust_temp_type): Handle EMPTY_CLASS_EXPR. + + 2018-12-04 Jakub Jelinek + + PR c++/88103 + * typeck.c (build_class_member_access_expr): If unary_complex_lvalue + turned xvalue_p into non-xvalue_p, call move on it. + + 2018-11-27 Jakub Jelinek + + PR c++/88181 + * class.c (fixup_attribute_variants): Also propagate TYPE_PACKED + to variants. + + 2019-04-10 Matthias Klose + + Backport from the gcc-8 branch + 2019-03-07 Jakub Jelinek + + PR c++/89585 + * parser.c (cp_parser_asm_definition): Parse asm qualifiers even + at toplevel, but diagnose them. + + 2018-01-02 Segher Boessenkool + + Backport from trunk + 2018-12-06 Segher Boessenkool + + PR inline-asm/55681 + * parser.c (cp_parser_asm_definition): Update grammar. Allow any + combination of volatile and goto, in any order, without repetitions. + + Backport from trunk + 2018-12-06 Segher Boessenkool + + * cp-tree.h (finish_asm_stmt): Update declaration. + * parser.c (cp_parser_asm_definition): Detect the inline keyword + after asm. Pass a flag for it to finish_asm_stmt. + * pt.c (tsubst_expr): Pass the ASM_INLINE_P flag to finish_asm_stmt. + * semantics.c (finish_asm_stmt): Add inline_p parameter. Use it to + set ASM_INLINE_P. + + Backport from trunk + 2018-12-19 Segher Boessenkool + + * parser.c (cp_parser_asm_definition): Rewrite the loop to work without + "done" boolean variable. + + Backport from trunk + 2018-12-19 Segher Boessenkool + + * parser.c (cp_parser_asm_definition): Rewrite the loop to work without + "done" boolean variable. + * parser.c (cp_parser_asm_definition): Keep track of the location each + asm qualifier is first seen; use that to give nicer "duplicate asm + qualifier" messages. + + Backport from trunk + 2018-12-19 Segher Boessenkool + + * parser.c (cp_parser_asm_definition) : Give + a more specific error message (instead of just falling through). + + Backport from trunk + 2018-12-10 Segher Boessenkool + + * parser.c (cp_parser_asm_definition): Do not allow any asm qualifiers + on top-level asm. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/gcc/cp/call.c gcc-7.5.0/gcc/cp/call.c *** gcc-7.4.0/gcc/cp/call.c Fri Jun 22 20:34:33 2018 --- gcc-7.5.0/gcc/cp/call.c Fri Aug 30 11:20:08 2019 *************** make_temporary_var_for_ref_to_temp (tree *** 10301,10308 **** var = pushdecl_top_level (var); } else ! /* Create a new cleanup level if necessary. */ ! maybe_push_cleanup_level (type); return var; } --- 10301,10311 ---- var = pushdecl_top_level (var); } else ! { ! /* Create a new cleanup level if necessary. */ ! maybe_push_cleanup_level (type); ! var = pushdecl (var); ! } return var; } diff -Nrcpad gcc-7.4.0/gcc/cp/class.c gcc-7.5.0/gcc/cp/class.c *** gcc-7.4.0/gcc/cp/class.c Fri Aug 17 14:17:10 2018 --- gcc-7.5.0/gcc/cp/class.c Fri Aug 30 11:14:56 2019 *************** fixup_attribute_variants (tree t) *** 2088,2093 **** --- 2088,2094 ---- unsigned align = TYPE_ALIGN (t); bool user_align = TYPE_USER_ALIGN (t); bool may_alias = lookup_attribute ("may_alias", attrs); + bool packed = TYPE_PACKED (t); if (may_alias) fixup_may_alias (t); *************** fixup_attribute_variants (tree t) *** 2105,2110 **** --- 2106,2112 ---- else TYPE_USER_ALIGN (variants) = user_align; SET_TYPE_ALIGN (variants, valign); + TYPE_PACKED (variants) = packed; if (may_alias) fixup_may_alias (variants); } diff -Nrcpad gcc-7.4.0/gcc/cp/config-lang.in gcc-7.5.0/gcc/cp/config-lang.in *** gcc-7.4.0/gcc/cp/config-lang.in Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/cp/config-lang.in Fri Aug 30 12:45:01 2019 *************** compilers="cc1plus\$(exeext)" *** 29,32 **** target_libs="target-libstdc++-v3" ! gtfiles="\$(srcdir)/cp/rtti.c \$(srcdir)/cp/mangle.c \$(srcdir)/cp/name-lookup.h \$(srcdir)/cp/name-lookup.c \$(srcdir)/cp/cp-tree.h \$(srcdir)/cp/decl.h \$(srcdir)/cp/call.c \$(srcdir)/cp/decl.c \$(srcdir)/cp/decl2.c \$(srcdir)/cp/pt.c \$(srcdir)/cp/repo.c \$(srcdir)/cp/semantics.c \$(srcdir)/cp/tree.c \$(srcdir)/cp/parser.h \$(srcdir)/cp/parser.c \$(srcdir)/cp/method.c \$(srcdir)/cp/typeck2.c \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-common.h \$(srcdir)/c-family/c-objc.h \$(srcdir)/c-family/c-lex.c \$(srcdir)/c-family/c-pragma.h \$(srcdir)/c-family/c-pragma.c \$(srcdir)/cp/class.c \$(srcdir)/cp/cp-objcp-common.c \$(srcdir)/cp/cp-lang.c \$(srcdir)/cp/except.c \$(srcdir)/cp/vtable-class-hierarchy.c \$(srcdir)/cp/constexpr.c \$(srcdir)/cp/cp-gimplify.c" --- 29,32 ---- target_libs="target-libstdc++-v3" ! gtfiles="\$(srcdir)/cp/rtti.c \$(srcdir)/cp/mangle.c \$(srcdir)/cp/name-lookup.h \$(srcdir)/cp/name-lookup.c \$(srcdir)/cp/cp-tree.h \$(srcdir)/cp/decl.h \$(srcdir)/cp/call.c \$(srcdir)/cp/decl.c \$(srcdir)/cp/decl2.c \$(srcdir)/cp/pt.c \$(srcdir)/cp/repo.c \$(srcdir)/cp/semantics.c \$(srcdir)/cp/tree.c \$(srcdir)/cp/parser.h \$(srcdir)/cp/parser.c \$(srcdir)/cp/method.c \$(srcdir)/cp/typeck2.c \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-common.h \$(srcdir)/c-family/c-objc.h \$(srcdir)/c-family/c-cppbuiltin.c \$(srcdir)/c-family/c-pragma.h \$(srcdir)/c-family/c-pragma.c \$(srcdir)/cp/class.c \$(srcdir)/cp/cp-objcp-common.c \$(srcdir)/cp/cp-lang.c \$(srcdir)/cp/except.c \$(srcdir)/cp/vtable-class-hierarchy.c \$(srcdir)/cp/constexpr.c \$(srcdir)/cp/cp-gimplify.c" diff -Nrcpad gcc-7.4.0/gcc/cp/constexpr.c gcc-7.5.0/gcc/cp/constexpr.c *** gcc-7.4.0/gcc/cp/constexpr.c Mon Nov 26 15:53:48 2018 --- gcc-7.5.0/gcc/cp/constexpr.c Fri Aug 30 11:17:41 2019 *************** adjust_temp_type (tree type, tree temp) *** 1212,1217 **** --- 1212,1219 ---- /* Avoid wrapping an aggregate value in a NOP_EXPR. */ if (TREE_CODE (temp) == CONSTRUCTOR) return build_constructor (type, CONSTRUCTOR_ELTS (temp)); + if (TREE_CODE (temp) == EMPTY_CLASS_EXPR) + return build0 (EMPTY_CLASS_EXPR, type); gcc_assert (scalarish_type_p (type)); return cp_fold_convert (type, temp); } diff -Nrcpad gcc-7.4.0/gcc/cp/cp-tree.h gcc-7.5.0/gcc/cp/cp-tree.h *** gcc-7.4.0/gcc/cp/cp-tree.h Fri Jun 22 21:25:04 2018 --- gcc-7.5.0/gcc/cp/cp-tree.h Fri Aug 30 12:30:48 2019 *************** extern tree cp_build_parm_decl (tree, *** 5962,5968 **** extern tree get_guard (tree); extern tree get_guard_cond (tree, bool); extern tree set_guard (tree); ! extern tree get_tls_wrapper_fn (tree); extern void mark_needed (tree); extern bool decl_needed_p (tree); extern void note_vague_linkage_fn (tree); --- 5962,5968 ---- extern tree get_guard (tree); extern tree get_guard_cond (tree, bool); extern tree set_guard (tree); ! extern tree maybe_get_tls_wrapper_call (tree); extern void mark_needed (tree); extern bool decl_needed_p (tree); extern void note_vague_linkage_fn (tree); *************** extern tree begin_compound_stmt (unsig *** 6455,6461 **** extern void finish_compound_stmt (tree); extern tree finish_asm_stmt (int, tree, tree, tree, tree, ! tree); extern tree finish_label_stmt (tree); extern void finish_label_decl (tree); extern cp_expr finish_parenthesized_expr (cp_expr); --- 6455,6461 ---- extern void finish_compound_stmt (tree); extern tree finish_asm_stmt (int, tree, tree, tree, tree, ! tree, bool); extern tree finish_label_stmt (tree); extern void finish_label_decl (tree); extern cp_expr finish_parenthesized_expr (cp_expr); diff -Nrcpad gcc-7.4.0/gcc/cp/decl.c gcc-7.5.0/gcc/cp/decl.c *** gcc-7.4.0/gcc/cp/decl.c Fri Jun 22 21:06:41 2018 --- gcc-7.5.0/gcc/cp/decl.c Fri Aug 30 12:38:31 2019 *************** duplicate_decls (tree newdecl, tree oldd *** 2130,2142 **** if (TYPE_NAME (TREE_TYPE (newdecl)) == newdecl) { tree remove = TREE_TYPE (newdecl); ! for (tree t = TYPE_MAIN_VARIANT (remove); ; ! t = TYPE_NEXT_VARIANT (t)) ! if (TYPE_NEXT_VARIANT (t) == remove) ! { ! TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (remove); ! break; ! } } } else --- 2130,2162 ---- if (TYPE_NAME (TREE_TYPE (newdecl)) == newdecl) { tree remove = TREE_TYPE (newdecl); ! if (TYPE_MAIN_VARIANT (remove) == remove) ! { ! gcc_assert (TYPE_NEXT_VARIANT (remove) == NULL_TREE); ! /* If remove is the main variant, no need to remove that ! from the list. One of the DECL_ORIGINAL_TYPE ! variants, e.g. created for aligned attribute, might still ! refer to the newdecl TYPE_DECL though, so remove that one ! in that case. */ ! if (tree orig = DECL_ORIGINAL_TYPE (newdecl)) ! if (orig != remove) ! for (tree t = TYPE_MAIN_VARIANT (orig); t; ! t = TYPE_MAIN_VARIANT (t)) ! if (TYPE_NAME (TYPE_NEXT_VARIANT (t)) == newdecl) ! { ! TYPE_NEXT_VARIANT (t) ! = TYPE_NEXT_VARIANT (TYPE_NEXT_VARIANT (t)); ! break; ! } ! } ! else ! for (tree t = TYPE_MAIN_VARIANT (remove); ; ! t = TYPE_NEXT_VARIANT (t)) ! if (TYPE_NEXT_VARIANT (t) == remove) ! { ! TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (remove); ! break; ! } } } else diff -Nrcpad gcc-7.4.0/gcc/cp/decl2.c gcc-7.5.0/gcc/cp/decl2.c *** gcc-7.4.0/gcc/cp/decl2.c Wed May 9 02:34:03 2018 --- gcc-7.5.0/gcc/cp/decl2.c Fri Aug 30 12:30:48 2019 *************** get_tls_init_fn (tree var) *** 3255,3261 **** VAR and then returns a reference to VAR. The wrapper function is used in place of VAR everywhere VAR is mentioned. */ ! tree get_tls_wrapper_fn (tree var) { /* Only C++11 TLS vars need this wrapper fn. */ --- 3255,3261 ---- VAR and then returns a reference to VAR. The wrapper function is used in place of VAR everywhere VAR is mentioned. */ ! static tree get_tls_wrapper_fn (tree var) { /* Only C++11 TLS vars need this wrapper fn. */ *************** get_tls_wrapper_fn (tree var) *** 3307,3312 **** --- 3307,3328 ---- return fn; } + /* If EXPR is a thread_local variable that should be wrapped by init + wrapper function, return a call to that function, otherwise return + NULL. */ + + tree + maybe_get_tls_wrapper_call (tree expr) + { + if (VAR_P (expr) + && !processing_template_decl + && !cp_unevaluated_operand + && CP_DECL_THREAD_LOCAL_P (expr)) + if (tree wrap = get_tls_wrapper_fn (expr)) + return build_cxx_call (wrap, 0, NULL, tf_warning_or_error); + return NULL; + } + /* At EOF, generate the definition for the TLS wrapper function FN: T& var_wrapper() { *************** c_parse_final_cleanups (void) *** 4725,4735 **** /* Generate RTL for this function now that we know we need it. */ expand_or_defer_fn (decl); - /* If we're compiling -fsyntax-only pretend that this - function has been written out so that we don't try to - expand it again. */ - if (flag_syntax_only) - TREE_ASM_WRITTEN (decl) = 1; reconsider = true; } } --- 4741,4746 ---- diff -Nrcpad gcc-7.4.0/gcc/cp/init.c gcc-7.5.0/gcc/cp/init.c *** gcc-7.4.0/gcc/cp/init.c Fri Jun 22 21:27:41 2018 --- gcc-7.5.0/gcc/cp/init.c Fri Aug 30 12:13:40 2019 *************** build_value_init_noctor (tree type, tsub *** 409,414 **** --- 409,423 ---- if (ftype == error_mark_node) continue; + /* Ignore flexible array members for value initialization. */ + if (TREE_CODE (ftype) == ARRAY_TYPE + && !COMPLETE_TYPE_P (ftype) + && !TYPE_DOMAIN (ftype) + && COMPLETE_TYPE_P (TREE_TYPE (ftype)) + && (next_initializable_field (DECL_CHAIN (field)) + == NULL_TREE)) + continue; + /* We could skip vfields and fields of types with user-defined constructors, but I think that won't improve performance at all; it should be simpler in general just diff -Nrcpad gcc-7.4.0/gcc/cp/lambda.c gcc-7.5.0/gcc/cp/lambda.c *** gcc-7.4.0/gcc/cp/lambda.c Tue Feb 27 02:47:25 2018 --- gcc-7.5.0/gcc/cp/lambda.c Fri Aug 30 12:29:13 2019 *************** add_capture (tree lambda, tree id, tree *** 567,585 **** IDENTIFIER_LENGTH (id) + 1); name = get_identifier (buf); - /* If TREE_TYPE isn't set, we're still in the introducer, so check - for duplicates. */ - if (!LAMBDA_EXPR_CLOSURE (lambda)) - { - if (IDENTIFIER_MARKED (name)) - { - pedwarn (input_location, 0, - "already captured %qD in lambda expression", id); - return NULL_TREE; - } - IDENTIFIER_MARKED (name) = true; - } - if (variadic) type = make_pack_expansion (type); --- 567,572 ---- *************** register_capture_members (tree captures) *** 634,641 **** if (PACK_EXPANSION_P (field)) field = PACK_EXPANSION_PATTERN (field); - /* We set this in add_capture to avoid duplicates. */ - IDENTIFIER_MARKED (DECL_NAME (field)) = false; finish_member_declaration (field); } --- 621,626 ---- *************** maybe_add_lambda_conv_op (tree type) *** 1045,1050 **** --- 1030,1038 ---- { tree new_node = copy_node (src); + /* Clear TREE_ADDRESSABLE on thunk arguments. */ + TREE_ADDRESSABLE (new_node) = 0; + if (!fn_args) fn_args = tgt = new_node; else diff -Nrcpad gcc-7.4.0/gcc/cp/optimize.c gcc-7.5.0/gcc/cp/optimize.c *** gcc-7.4.0/gcc/cp/optimize.c Tue Oct 23 15:06:17 2018 --- gcc-7.5.0/gcc/cp/optimize.c Fri Aug 30 11:43:53 2019 *************** update_cloned_parm (tree parm, tree clon *** 61,66 **** --- 61,85 ---- DECL_GIMPLE_REG_P (cloned_parm) = DECL_GIMPLE_REG_P (parm); } + /* Like copy_decl_no_change, but handle DECL_OMP_PRIVATIZED_MEMBER + properly. */ + + static tree + cxx_copy_decl (tree decl, copy_body_data *id) + { + tree copy = copy_decl_no_change (decl, id); + if (VAR_P (decl) + && DECL_HAS_VALUE_EXPR_P (decl) + && DECL_ARTIFICIAL (decl) + && DECL_LANG_SPECIFIC (decl) + && DECL_OMP_PRIVATIZED_MEMBER (decl)) + { + tree expr = DECL_VALUE_EXPR (copy); + walk_tree (&expr, copy_tree_body_r, id, NULL); + SET_DECL_VALUE_EXPR (copy, expr); + } + return copy; + } /* FN is a function in High GIMPLE form that has a complete body and no CFG. CLONE is a function whose body is to be set to a copy of FN, *************** clone_body (tree clone, tree fn, void *a *** 80,86 **** id.src_cfun = DECL_STRUCT_FUNCTION (fn); id.decl_map = static_cast *> (arg_map); ! id.copy_decl = copy_decl_no_change; id.transform_call_graph_edges = CB_CGE_DUPLICATE; id.transform_new_cfg = true; id.transform_return_to_modify = false; --- 99,105 ---- id.src_cfun = DECL_STRUCT_FUNCTION (fn); id.decl_map = static_cast *> (arg_map); ! id.copy_decl = cxx_copy_decl; id.transform_call_graph_edges = CB_CGE_DUPLICATE; id.transform_new_cfg = true; id.transform_return_to_modify = false; *************** maybe_thunk_body (tree fn, bool force) *** 384,389 **** --- 403,410 ---- gcc_assert (clone_parm); DECL_ABSTRACT_ORIGIN (clone_parm) = NULL; args[parmno] = clone_parm; + /* Clear TREE_ADDRESSABLE on thunk arguments. */ + TREE_ADDRESSABLE (clone_parm) = 0; clone_parm = TREE_CHAIN (clone_parm); } if (fn_parm_typelist) diff -Nrcpad gcc-7.4.0/gcc/cp/parser.c gcc-7.5.0/gcc/cp/parser.c *** gcc-7.4.0/gcc/cp/parser.c Sat Aug 11 11:02:22 2018 --- gcc-7.5.0/gcc/cp/parser.c Thu Sep 5 19:27:31 2019 *************** cp_parser_lambda_introducer (cp_parser* *** 10010,10015 **** --- 10010,10020 ---- first = false; } + hash_set *ids = NULL; + #if GCC_VERSION >= 7000 + char ids_buf[sizeof (hash_set) + __alignof__ (hash_set) - 1]; + #endif + tree first_capture_id = NULL_TREE; while (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_SQUARE)) { cp_token* capture_token; *************** cp_parser_lambda_introducer (cp_parser* *** 10044,10054 **** pedwarn (loc, 0, "explicit by-copy capture of % redundant " "with by-copy capture default"); cp_lexer_consume_token (parser->lexer); ! add_capture (lambda_expr, ! /*id=*/this_identifier, ! /*initializer=*/finish_this_expr (), ! /*by_reference_p=*/true, ! explicit_init_p); continue; } --- 10049,10062 ---- pedwarn (loc, 0, "explicit by-copy capture of % redundant " "with by-copy capture default"); cp_lexer_consume_token (parser->lexer); ! if (LAMBDA_EXPR_THIS_CAPTURE (lambda_expr)) ! pedwarn (input_location, 0, ! "already captured %qD in lambda expression", ! this_identifier); ! else ! add_capture (lambda_expr, /*id=*/this_identifier, ! /*initializer=*/finish_this_expr (), ! /*by_reference_p=*/true, explicit_init_p); continue; } *************** cp_parser_lambda_introducer (cp_parser* *** 10062,10072 **** "-std=c++1z or -std=gnu++1z"); cp_lexer_consume_token (parser->lexer); cp_lexer_consume_token (parser->lexer); ! add_capture (lambda_expr, ! /*id=*/this_identifier, ! /*initializer=*/finish_this_expr (), ! /*by_reference_p=*/false, ! explicit_init_p); continue; } --- 10070,10083 ---- "-std=c++1z or -std=gnu++1z"); cp_lexer_consume_token (parser->lexer); cp_lexer_consume_token (parser->lexer); ! if (LAMBDA_EXPR_THIS_CAPTURE (lambda_expr)) ! pedwarn (input_location, 0, ! "already captured %qD in lambda expression", ! this_identifier); ! else ! add_capture (lambda_expr, /*id=*/this_identifier, ! /*initializer=*/finish_this_expr (), ! /*by_reference_p=*/false, explicit_init_p); continue; } *************** cp_parser_lambda_introducer (cp_parser* *** 10190,10202 **** "default", capture_id); } ! add_capture (lambda_expr, ! capture_id, ! capture_init_expr, ! /*by_reference_p=*/capture_kind == BY_REFERENCE, ! explicit_init_p); } cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE); } --- 10201,10244 ---- "default", capture_id); } ! /* Check for duplicates. ! Optimize for the zero or one explicit captures cases and only create ! the hash_set after adding second capture. */ ! bool found = false; ! if (ids && ids->elements ()) ! found = ids->add (capture_id); ! else if (first_capture_id == NULL_TREE) ! first_capture_id = capture_id; ! else if (capture_id == first_capture_id) ! found = true; ! else ! { ! #if GCC_VERSION >= 7000 ! ids = new (ids_buf ! + (-(uintptr_t) ids_buf ! & (__alignof__ (hash_set ) - 1))) hash_set ; ! #else ! ids = new hash_set ; ! #endif ! ids->add (first_capture_id); ! ids->add (capture_id); ! } ! if (found) ! pedwarn (input_location, 0, ! "already captured %qD in lambda expression", capture_id); ! else ! add_capture (lambda_expr, capture_id, capture_init_expr, ! /*by_reference_p=*/capture_kind == BY_REFERENCE, ! explicit_init_p); } + if (ids) + #if GCC_VERSION >= 7000 + ids->~hash_set (); + #else + delete ids; + #endif + cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE); } *************** cp_parser_using_directive (cp_parser* pa *** 18789,18810 **** /* Parse an asm-definition. asm-definition: asm ( string-literal ) ; GNU Extension: asm-definition: ! asm volatile [opt] ( string-literal ) ; ! asm volatile [opt] ( string-literal : asm-operand-list [opt] ) ; ! asm volatile [opt] ( string-literal : asm-operand-list [opt] ! : asm-operand-list [opt] ) ; ! asm volatile [opt] ( string-literal : asm-operand-list [opt] ! : asm-operand-list [opt] : asm-clobber-list [opt] ) ; ! asm volatile [opt] goto ( string-literal : : asm-operand-list [opt] ! : asm-clobber-list [opt] ! : asm-goto-list ) ; */ static void cp_parser_asm_definition (cp_parser* parser) --- 18831,18865 ---- /* Parse an asm-definition. + asm-qualifier: + volatile + inline + goto + + asm-qualifier-list: + asm-qualifier + asm-qualifier-list asm-qualifier + asm-definition: asm ( string-literal ) ; GNU Extension: asm-definition: ! asm asm-qualifier-list [opt] ( string-literal ) ; ! asm asm-qualifier-list [opt] ( string-literal : asm-operand-list [opt] ) ; ! asm asm-qualifier-list [opt] ( string-literal : asm-operand-list [opt] ! : asm-operand-list [opt] ) ; ! asm asm-qualifier-list [opt] ( string-literal : asm-operand-list [opt] ! : asm-operand-list [opt] : asm-clobber-list [opt] ) ; ! asm asm-qualifier-list [opt] ( string-literal : : asm-operand-list [opt] ! : asm-clobber-list [opt] ! : asm-goto-list ) ; ! ! The form with asm-goto-list is valid if and only if the asm-qualifier-list ! contains goto, and is the only allowed form in that case. No duplicates are ! allowed in an asm-qualifier-list. */ static void cp_parser_asm_definition (cp_parser* parser) *************** cp_parser_asm_definition (cp_parser* par *** 18815,18825 **** tree clobbers = NULL_TREE; tree labels = NULL_TREE; tree asm_stmt; - bool volatile_p = false; bool extended_p = false; bool invalid_inputs_p = false; bool invalid_outputs_p = false; - bool goto_p = false; required_token missing = RT_NONE; /* Look for the `asm' keyword. */ --- 18870,18878 ---- *************** cp_parser_asm_definition (cp_parser* par *** 18832,18855 **** cp_function_chain->invalid_constexpr = true; } ! /* See if the next token is `volatile'. */ ! if (cp_parser_allow_gnu_extensions_p (parser) ! && cp_lexer_next_token_is_keyword (parser->lexer, RID_VOLATILE)) ! { ! /* Remember that we saw the `volatile' keyword. */ ! volatile_p = true; ! /* Consume the token. */ ! cp_lexer_consume_token (parser->lexer); ! } ! if (cp_parser_allow_gnu_extensions_p (parser) ! && parser->in_function_body ! && cp_lexer_next_token_is_keyword (parser->lexer, RID_GOTO)) { ! /* Remember that we saw the `goto' keyword. */ ! goto_p = true; ! /* Consume the token. */ ! cp_lexer_consume_token (parser->lexer); } /* Look for the opening `('. */ if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) return; --- 18885,18962 ---- cp_function_chain->invalid_constexpr = true; } ! /* Handle the asm-qualifier-list. */ ! location_t volatile_loc = UNKNOWN_LOCATION; ! location_t inline_loc = UNKNOWN_LOCATION; ! location_t goto_loc = UNKNOWN_LOCATION; ! location_t first_loc = UNKNOWN_LOCATION; ! ! if (cp_parser_allow_gnu_extensions_p (parser)) ! for (;;) ! { ! cp_token *token = cp_lexer_peek_token (parser->lexer); ! location_t loc = token->location; ! switch (cp_lexer_peek_token (parser->lexer)->keyword) ! { ! case RID_VOLATILE: ! if (volatile_loc) ! { ! error_at (loc, "duplicate asm qualifier %qT", token->u.value); ! inform (volatile_loc, "first seen here"); ! } ! else ! volatile_loc = loc; ! cp_lexer_consume_token (parser->lexer); ! continue; ! ! case RID_INLINE: ! if (inline_loc) ! { ! error_at (loc, "duplicate asm qualifier %qT", token->u.value); ! inform (inline_loc, "first seen here"); ! } ! else ! inline_loc = loc; ! if (!first_loc) ! first_loc = loc; ! cp_lexer_consume_token (parser->lexer); ! continue; ! ! case RID_GOTO: ! if (goto_loc) ! { ! error_at (loc, "duplicate asm qualifier %qT", token->u.value); ! inform (goto_loc, "first seen here"); ! } ! else ! goto_loc = loc; ! if (!first_loc) ! first_loc = loc; ! cp_lexer_consume_token (parser->lexer); ! continue; ! ! case RID_CONST: ! case RID_RESTRICT: ! error_at (loc, "%qT is not an asm qualifier", token->u.value); ! cp_lexer_consume_token (parser->lexer); ! continue; ! ! default: ! break; ! } ! break; ! } ! ! bool volatile_p = (volatile_loc != UNKNOWN_LOCATION); ! bool inline_p = (inline_loc != UNKNOWN_LOCATION); ! bool goto_p = (goto_loc != UNKNOWN_LOCATION); ! ! if (!parser->in_function_body && (inline_p || goto_p)) { ! error_at (first_loc, "asm qualifier outside of function body"); ! inline_p = goto_p = false; } + /* Look for the opening `('. */ if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) return; *************** cp_parser_asm_definition (cp_parser* par *** 18941,18948 **** CPP_CLOSE_PAREN)) clobbers = cp_parser_asm_clobber_list (parser); } ! else if (goto_p ! && cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) /* The labels are coming next. */ labels_p = true; --- 19048,19054 ---- CPP_CLOSE_PAREN)) clobbers = cp_parser_asm_clobber_list (parser); } ! else if (goto_p && cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) /* The labels are coming next. */ labels_p = true; *************** cp_parser_asm_definition (cp_parser* par *** 18976,18982 **** if (parser->in_function_body) { asm_stmt = finish_asm_stmt (volatile_p, string, outputs, ! inputs, clobbers, labels); /* If the extended syntax was not used, mark the ASM_EXPR. */ if (!extended_p) { --- 19082,19088 ---- if (parser->in_function_body) { asm_stmt = finish_asm_stmt (volatile_p, string, outputs, ! inputs, clobbers, labels, inline_p); /* If the extended syntax was not used, mark the ASM_EXPR. */ if (!extended_p) { *************** cp_parser_initial_pragma (cp_token *firs *** 38126,38132 **** cp_lexer_get_preprocessor_token (NULL, first_token); if (cp_parser_pragma_kind (first_token) != PRAGMA_GCC_PCH_PREPROCESS) ! return; cp_lexer_get_preprocessor_token (NULL, first_token); if (first_token->type == CPP_STRING) --- 38232,38241 ---- cp_lexer_get_preprocessor_token (NULL, first_token); if (cp_parser_pragma_kind (first_token) != PRAGMA_GCC_PCH_PREPROCESS) ! { ! c_common_no_more_pch (); ! return; ! } cp_lexer_get_preprocessor_token (NULL, first_token); if (first_token->type == CPP_STRING) diff -Nrcpad gcc-7.4.0/gcc/cp/pt.c gcc-7.5.0/gcc/cp/pt.c *** gcc-7.4.0/gcc/cp/pt.c Thu Jun 28 00:25:21 2018 --- gcc-7.5.0/gcc/cp/pt.c Fri Aug 30 12:30:48 2019 *************** tsubst_expr (tree t, tree args, tsubst_f *** 16159,16165 **** tree labels = tsubst_copy_asm_operands (ASM_LABELS (t), args, complain, in_decl); tmp = finish_asm_stmt (ASM_VOLATILE_P (t), string, outputs, inputs, ! clobbers, labels); tree asm_expr = tmp; if (TREE_CODE (asm_expr) == CLEANUP_POINT_EXPR) asm_expr = TREE_OPERAND (asm_expr, 0); --- 16159,16165 ---- tree labels = tsubst_copy_asm_operands (ASM_LABELS (t), args, complain, in_decl); tmp = finish_asm_stmt (ASM_VOLATILE_P (t), string, outputs, inputs, ! clobbers, labels, ASM_INLINE_P (t)); tree asm_expr = tmp; if (TREE_CODE (asm_expr) == CLEANUP_POINT_EXPR) asm_expr = TREE_OPERAND (asm_expr, 0); *************** tsubst_copy_and_build (tree t, *** 17897,17913 **** { tree r = tsubst_copy (t, args, complain, in_decl); /* ??? We're doing a subset of finish_id_expression here. */ ! if (VAR_P (r) ! && !processing_template_decl ! && !cp_unevaluated_operand ! && (TREE_STATIC (r) || DECL_EXTERNAL (r)) ! && CP_DECL_THREAD_LOCAL_P (r)) ! { ! if (tree wrap = get_tls_wrapper_fn (r)) ! /* Replace an evaluated use of the thread_local variable with ! a call to its wrapper. */ ! r = build_cxx_call (wrap, 0, NULL, tf_warning_or_error); ! } else if (outer_automatic_var_p (r)) { r = process_outer_var_ref (r, complain); --- 17897,17906 ---- { tree r = tsubst_copy (t, args, complain, in_decl); /* ??? We're doing a subset of finish_id_expression here. */ ! if (tree wrap = maybe_get_tls_wrapper_call (r)) ! /* Replace an evaluated use of the thread_local variable with ! a call to its wrapper. */ ! r = wrap; else if (outer_automatic_var_p (r)) { r = process_outer_var_ref (r, complain); diff -Nrcpad gcc-7.4.0/gcc/cp/semantics.c gcc-7.5.0/gcc/cp/semantics.c *** gcc-7.4.0/gcc/cp/semantics.c Fri Jun 22 21:25:04 2018 --- gcc-7.5.0/gcc/cp/semantics.c Fri Aug 30 12:46:52 2019 *************** finish_compound_stmt (tree stmt) *** 1429,1439 **** /* Finish an asm-statement, whose components are a STRING, some OUTPUT_OPERANDS, some INPUT_OPERANDS, some CLOBBERS and some LABELS. Also note whether the asm-statement should be ! considered volatile. */ tree finish_asm_stmt (int volatile_p, tree string, tree output_operands, ! tree input_operands, tree clobbers, tree labels) { tree r; tree t; --- 1429,1439 ---- /* Finish an asm-statement, whose components are a STRING, some OUTPUT_OPERANDS, some INPUT_OPERANDS, some CLOBBERS and some LABELS. Also note whether the asm-statement should be ! considered volatile, and whether it is asm inline. */ tree finish_asm_stmt (int volatile_p, tree string, tree output_operands, ! tree input_operands, tree clobbers, tree labels, bool inline_p) { tree r; tree t; *************** finish_asm_stmt (int volatile_p, tree st *** 1587,1592 **** --- 1587,1593 ---- output_operands, input_operands, clobbers, labels); ASM_VOLATILE_P (r) = volatile_p || noutputs == 0; + ASM_INLINE_P (r) = inline_p; r = maybe_cleanup_point_expr_void (r); return add_stmt (r); } *************** finish_qualified_id_expr (tree qualifyin *** 2066,2071 **** --- 2067,2080 ---- } else if (BASELINK_P (expr)) ; + else if (!template_p + && TREE_CODE (expr) == TEMPLATE_DECL + && !DECL_FUNCTION_TEMPLATE_P (expr)) + { + if (complain & tf_error) + error ("%qE missing template arguments", expr); + return error_mark_node; + } else { /* In a template, return a SCOPE_REF for most qualified-ids *************** finish_qualified_id_expr (tree qualifyin *** 2078,2083 **** --- 2087,2094 ---- expr = build_qualified_name (TREE_TYPE (expr), qualifying_class, expr, template_p); + else if (tree wrap = maybe_get_tls_wrapper_call (expr)) + expr = wrap; expr = convert_from_reference (expr); } *************** finish_id_expression (tree id_expression *** 3737,3754 **** *non_integral_constant_expression_p = true; } ! tree wrap; ! if (VAR_P (decl) ! && !cp_unevaluated_operand ! && !processing_template_decl ! && (TREE_STATIC (decl) || DECL_EXTERNAL (decl)) ! && CP_DECL_THREAD_LOCAL_P (decl) ! && (wrap = get_tls_wrapper_fn (decl))) ! { ! /* Replace an evaluated use of the thread_local variable with ! a call to its wrapper. */ ! decl = build_cxx_call (wrap, 0, NULL, tf_warning_or_error); ! } else if (TREE_CODE (decl) == TEMPLATE_ID_EXPR && variable_template_p (TREE_OPERAND (decl, 0))) { --- 3748,3757 ---- *non_integral_constant_expression_p = true; } ! if (tree wrap = maybe_get_tls_wrapper_call (decl)) ! /* Replace an evaluated use of the thread_local variable with ! a call to its wrapper. */ ! decl = wrap; else if (TREE_CODE (decl) == TEMPLATE_ID_EXPR && variable_template_p (TREE_OPERAND (decl, 0))) { *************** expand_or_defer_fn_1 (tree fn) *** 4297,4303 **** /* There's no reason to do any of the work here if we're only doing semantic analysis; this code just generates RTL. */ if (flag_syntax_only) ! return false; return true; } --- 4300,4311 ---- /* There's no reason to do any of the work here if we're only doing semantic analysis; this code just generates RTL. */ if (flag_syntax_only) ! { ! /* Pretend that this function has been written out so that we don't try ! to expand it again. */ ! TREE_ASM_WRITTEN (fn) = 1; ! return false; ! } return true; } *************** finish_omp_clauses (tree clauses, enum c *** 7361,7367 **** t = require_complete_type (t); if (t == error_mark_node) remove = true; ! else if (TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE && !complete_type_or_else (TREE_TYPE (TREE_TYPE (t)), t)) remove = true; } --- 7369,7376 ---- t = require_complete_type (t); if (t == error_mark_node) remove = true; ! else if (!processing_template_decl ! && TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE && !complete_type_or_else (TREE_TYPE (TREE_TYPE (t)), t)) remove = true; } *************** finish_omp_atomic (enum tree_code code, *** 8624,8629 **** --- 8633,8643 ---- stmt = build2 (OMP_ATOMIC, void_type_node, integer_zero_node, stmt); OMP_ATOMIC_SEQ_CST (stmt) = seq_cst; } + + /* Avoid -Wunused-value warnings here, the whole construct has side-effects + and even if it might be wrapped from fold-const.c or c-omp.c wrapped + in some tree that appears to be unused, the value is not unused. */ + warning_sentinel w (warn_unused_value); finish_expr_stmt (stmt); } *************** finish_omp_cancel (tree clauses) *** 8690,8699 **** tree ifc = omp_find_clause (clauses, OMP_CLAUSE_IF); if (ifc != NULL_TREE) { ! tree type = TREE_TYPE (OMP_CLAUSE_IF_EXPR (ifc)); ! ifc = fold_build2_loc (OMP_CLAUSE_LOCATION (ifc), NE_EXPR, ! boolean_type_node, OMP_CLAUSE_IF_EXPR (ifc), ! build_zero_cst (type)); } else ifc = boolean_true_node; --- 8704,8716 ---- tree ifc = omp_find_clause (clauses, OMP_CLAUSE_IF); if (ifc != NULL_TREE) { ! if (!processing_template_decl) ! ifc = maybe_convert_cond (OMP_CLAUSE_IF_EXPR (ifc)); ! else ! ifc = build_x_binary_op (OMP_CLAUSE_LOCATION (ifc), NE_EXPR, ! OMP_CLAUSE_IF_EXPR (ifc), ERROR_MARK, ! integer_zero_node, ERROR_MARK, ! NULL, tf_warning_or_error); } else ifc = boolean_true_node; diff -Nrcpad gcc-7.4.0/gcc/cp/typeck.c gcc-7.5.0/gcc/cp/typeck.c *** gcc-7.4.0/gcc/cp/typeck.c Fri Jun 22 21:12:32 2018 --- gcc-7.5.0/gcc/cp/typeck.c Fri Aug 30 12:34:19 2019 *************** along with GCC; see the file COPYING3. *** 37,42 **** --- 37,43 ---- #include "c-family/c-ubsan.h" #include "params.h" #include "gcc-rich-location.h" + #include "gimplify.h" static tree cp_build_addr_expr_strict (tree, tsubst_flags_t); static tree cp_build_function_call (tree, tree, tsubst_flags_t); *************** build_class_member_access_expr (cp_expr *** 2362,2368 **** { tree temp = unary_complex_lvalue (ADDR_EXPR, object); if (temp) ! object = cp_build_indirect_ref (temp, RO_NULL, complain); } /* In [expr.ref], there is an explicit list of the valid choices for --- 2363,2375 ---- { tree temp = unary_complex_lvalue (ADDR_EXPR, object); if (temp) ! { ! temp = cp_build_indirect_ref (temp, RO_NULL, complain); ! if (xvalue_p (object) && !xvalue_p (temp)) ! /* Preserve xvalue kind. */ ! temp = move (temp); ! object = temp; ! } } /* In [expr.ref], there is an explicit list of the valid choices for *************** build_class_member_access_expr (cp_expr *** 2372,2377 **** --- 2379,2390 ---- /* A static data member. */ result = member; mark_exp_read (object); + + if (tree wrap = maybe_get_tls_wrapper_call (result)) + /* Replace an evaluated use of the thread_local variable with + a call to its wrapper. */ + result = wrap; + /* If OBJECT has side-effects, they are supposed to occur. */ if (TREE_SIDE_EFFECTS (object)) result = build2 (COMPOUND_EXPR, TREE_TYPE (result), object, result); *************** cp_build_modify_expr (location_t loc, tr *** 7664,7671 **** /* Produce (a ? (b = rhs) : (c = rhs)) except that the RHS goes through a save-expr so the code to compute it is only emitted once. */ - tree cond; - if (VOID_TYPE_P (TREE_TYPE (rhs))) { if (complain & tf_error) --- 7677,7682 ---- *************** cp_build_modify_expr (location_t loc, tr *** 7680,7692 **** if (!lvalue_or_else (lhs, lv_assign, complain)) return error_mark_node; ! cond = build_conditional_expr ! (input_location, TREE_OPERAND (lhs, 0), ! cp_build_modify_expr (loc, TREE_OPERAND (lhs, 1), ! modifycode, rhs, complain), ! cp_build_modify_expr (loc, TREE_OPERAND (lhs, 2), ! modifycode, rhs, complain), ! complain); if (cond == error_mark_node) return cond; --- 7691,7710 ---- if (!lvalue_or_else (lhs, lv_assign, complain)) return error_mark_node; ! tree op1 = cp_build_modify_expr (loc, TREE_OPERAND (lhs, 1), ! modifycode, rhs, complain); ! /* When sanitizing undefined behavior, even when rhs doesn't need ! stabilization at this point, the sanitization might add extra ! SAVE_EXPRs in there and so make sure there is no tree sharing ! in the rhs, otherwise those SAVE_EXPRs will have initialization ! only in one of the two branches. */ ! if (flag_sanitize & (SANITIZE_UNDEFINED | SANITIZE_NONDEFAULT)) ! rhs = unshare_expr (rhs); ! tree op2 = cp_build_modify_expr (loc, TREE_OPERAND (lhs, 2), ! modifycode, rhs, complain); ! tree cond = build_conditional_expr (input_location, ! TREE_OPERAND (lhs, 0), op1, op2, ! complain); if (cond == error_mark_node) return cond; diff -Nrcpad gcc-7.4.0/gcc/cp/vtable-class-hierarchy.c gcc-7.5.0/gcc/cp/vtable-class-hierarchy.c *** gcc-7.4.0/gcc/cp/vtable-class-hierarchy.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/cp/vtable-class-hierarchy.c Mon Sep 2 14:14:14 2019 *************** vtv_generate_init_routine (void) *** 1191,1198 **** gimplify_function_tree (vtv_fndecl); cgraph_node::add_new_function (vtv_fndecl, false); - symtab->process_new_functions (); - if (flag_vtable_verify == VTV_PREINIT_PRIORITY && !TARGET_PECOFF) assemble_vtv_preinit_initializer (vtv_fndecl); --- 1191,1196 ---- diff -Nrcpad gcc-7.4.0/gcc/dce.c gcc-7.5.0/gcc/dce.c *** gcc-7.4.0/gcc/dce.c Fri Jun 22 20:53:41 2018 --- gcc-7.5.0/gcc/dce.c Fri Aug 30 12:37:28 2019 *************** deletable_insn_p_1 (rtx body) *** 86,91 **** --- 86,117 ---- } } + /* Don't delete calls that may throw if we cannot do so. */ + + static bool + can_delete_call (rtx_insn *insn) + { + if (cfun->can_delete_dead_exceptions && can_alter_cfg) + return true; + if (!insn_nothrow_p (insn)) + return false; + if (can_alter_cfg) + return true; + /* If we can't alter cfg, even when the call can't throw exceptions, it + might have EDGE_ABNORMAL_CALL edges and so we shouldn't delete such + calls. */ + gcc_assert (CALL_P (insn)); + if (BLOCK_FOR_INSN (insn) && BB_END (BLOCK_FOR_INSN (insn)) == insn) + { + edge e; + edge_iterator ei; + + FOR_EACH_EDGE (e, ei, BLOCK_FOR_INSN (insn)->succs) + if ((e->flags & EDGE_ABNORMAL_CALL) != 0) + return false; + } + return true; + } /* Return true if INSN is a normal instruction that can be deleted by the DCE pass. */ *************** deletable_insn_p (rtx_insn *insn, bool f *** 108,114 **** /* We can delete dead const or pure calls as long as they do not infinite loop. */ && (RTL_CONST_OR_PURE_CALL_P (insn) ! && !RTL_LOOPING_CONST_OR_PURE_CALL_P (insn))) return find_call_stack_args (as_a (insn), false, fast, arg_stores); --- 134,142 ---- /* We can delete dead const or pure calls as long as they do not infinite loop. */ && (RTL_CONST_OR_PURE_CALL_P (insn) ! && !RTL_LOOPING_CONST_OR_PURE_CALL_P (insn)) ! /* Don't delete calls that may throw if we cannot do so. */ ! && can_delete_call (insn)) return find_call_stack_args (as_a (insn), false, fast, arg_stores); *************** mark_insn (rtx_insn *insn, bool fast) *** 200,206 **** && !df_in_progress && !SIBLING_CALL_P (insn) && (RTL_CONST_OR_PURE_CALL_P (insn) ! && !RTL_LOOPING_CONST_OR_PURE_CALL_P (insn))) find_call_stack_args (as_a (insn), true, fast, NULL); } } --- 228,235 ---- && !df_in_progress && !SIBLING_CALL_P (insn) && (RTL_CONST_OR_PURE_CALL_P (insn) ! && !RTL_LOOPING_CONST_OR_PURE_CALL_P (insn)) ! && can_delete_call (insn)) find_call_stack_args (as_a (insn), true, fast, NULL); } } *************** delete_unmarked_insns (void) *** 569,575 **** rtx turn_into_use = NULL_RTX; /* Always delete no-op moves. */ ! if (noop_move_p (insn)) { if (RTX_FRAME_RELATED_P (insn)) turn_into_use --- 598,609 ---- rtx turn_into_use = NULL_RTX; /* Always delete no-op moves. */ ! if (noop_move_p (insn) ! /* Unless the no-op move can throw and we are not allowed ! to alter cfg. */ ! && (!cfun->can_throw_non_call_exceptions ! || (cfun->can_delete_dead_exceptions && can_alter_cfg) ! || insn_nothrow_p (insn))) { if (RTX_FRAME_RELATED_P (insn)) turn_into_use *************** delete_unmarked_insns (void) *** 612,623 **** for the destination regs in order to avoid dangling notes. */ remove_reg_equal_equiv_notes_for_defs (insn); - /* If a pure or const call is deleted, this may make the cfg - have unreachable blocks. We rememeber this and call - delete_unreachable_blocks at the end. */ - if (CALL_P (insn)) - must_clean = true; - if (turn_into_use) { /* Don't remove frame related noop moves if they cary --- 646,651 ---- *************** delete_unmarked_insns (void) *** 630,641 **** } else /* Now delete the insn. */ ! delete_insn_and_edges (insn); } /* Deleted a pure or const call. */ if (must_clean) ! delete_unreachable_blocks (); } --- 658,672 ---- } else /* Now delete the insn. */ ! must_clean |= delete_insn_and_edges (insn); } /* Deleted a pure or const call. */ if (must_clean) ! { ! delete_unreachable_blocks (); ! free_dominance_info (CDI_DOMINATORS); ! } } diff -Nrcpad gcc-7.4.0/gcc/df-core.c gcc-7.5.0/gcc/df-core.c *** gcc-7.4.0/gcc/df-core.c Mon Feb 13 21:56:13 2017 --- gcc-7.5.0/gcc/df-core.c Fri Jul 12 10:17:42 2019 *************** There are 4 ways to obtain access to ref *** 298,309 **** Artificial defs and uses occur both at the beginning and ends of blocks. ! For blocks that area at the destination of eh edges, the artificial uses and defs occur at the beginning. The defs relate to the registers specified in EH_RETURN_DATA_REGNO and the uses ! relate to the registers specified in ED_USES. Logically these defs and uses should really occur along the eh edge, but there is ! no convenient way to do this. Artificial edges that occur at the beginning of the block have the DF_REF_AT_TOP flag set. Artificial uses occur at the end of all blocks. These arise from --- 298,309 ---- Artificial defs and uses occur both at the beginning and ends of blocks. ! For blocks that are at the destination of eh edges, the artificial uses and defs occur at the beginning. The defs relate to the registers specified in EH_RETURN_DATA_REGNO and the uses ! relate to the registers specified in EH_USES. Logically these defs and uses should really occur along the eh edge, but there is ! no convenient way to do this. Artificial defs that occur at the beginning of the block have the DF_REF_AT_TOP flag set. Artificial uses occur at the end of all blocks. These arise from diff -Nrcpad gcc-7.4.0/gcc/doc/cpp.1 gcc-7.5.0/gcc/doc/cpp.1 *** gcc-7.4.0/gcc/doc/cpp.1 Thu Dec 6 09:59:45 2018 --- gcc-7.5.0/gcc/doc/cpp.1 Thu Nov 14 07:36:16 2019 *************** *** 133,139 **** .\" ======================================================================== .\" .IX Title "CPP 1" ! .TH CPP 1 "2018-12-06" "gcc-7.4.0" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 133,139 ---- .\" ======================================================================== .\" .IX Title "CPP 1" ! .TH CPP 1 "2019-11-14" "gcc-7.5.0" "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-7.4.0/gcc/doc/cpp.info gcc-7.5.0/gcc/doc/cpp.info *** gcc-7.4.0/gcc/doc/cpp.info Thu Dec 6 10:20:52 2018 --- gcc-7.5.0/gcc/doc/cpp.info Thu Nov 14 07:57:25 2019 *************** *** 1,5 **** This is doc/cpp.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/doc/cpp.texi. Copyright (C) 1987-2017 Free Software Foundation, Inc. --- 1,5 ---- This is doc/cpp.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/doc/cpp.texi. Copyright (C) 1987-2017 Free Software Foundation, Inc. diff -Nrcpad gcc-7.4.0/gcc/doc/cppinternals.info gcc-7.5.0/gcc/doc/cppinternals.info *** gcc-7.4.0/gcc/doc/cppinternals.info Thu Dec 6 10:20:52 2018 --- gcc-7.5.0/gcc/doc/cppinternals.info Thu Nov 14 07:57:25 2019 *************** *** 1,5 **** This is doc/cppinternals.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.4.0/gcc-7.4.0/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.13 from ! /space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/doc/cppinternals.texi. INFO-DIR-SECTION Software development START-INFO-DIR-ENTRY diff -Nrcpad gcc-7.4.0/gcc/doc/extend.texi gcc-7.5.0/gcc/doc/extend.texi *** gcc-7.4.0/gcc/doc/extend.texi Mon Apr 2 19:19:37 2018 --- gcc-7.5.0/gcc/doc/extend.texi Tue Apr 2 01:08:31 2019 *************** for a C symbol, or to place a C variable *** 7710,7716 **** A basic @code{asm} statement has the following syntax: @example ! asm @r{[} volatile @r{]} ( @var{AssemblerInstructions} ) @end example The @code{asm} keyword is a GNU extension. --- 7710,7716 ---- A basic @code{asm} statement has the following syntax: @example ! asm @var{asm-qualifiers} ( @var{AssemblerInstructions} ) @end example The @code{asm} keyword is a GNU extension. *************** various @option{-std} options, use @code *** 7723,7728 **** --- 7723,7732 ---- @item volatile The optional @code{volatile} qualifier has no effect. All basic @code{asm} blocks are implicitly volatile. + + @item inline + If you use the @code{inline} qualifier, then for inlining purposes the size + of the asm is taken as the smallest size possible (@pxref{Size of an asm}). @end table @subsubheading Parameters *************** Extended @code{asm} syntax uses colons ( *** 7838,7854 **** the operand parameters after the assembler template: @example ! asm @r{[}volatile@r{]} ( @var{AssemblerTemplate} : @var{OutputOperands} @r{[} : @var{InputOperands} @r{[} : @var{Clobbers} @r{]} @r{]}) ! asm @r{[}volatile@r{]} goto ( @var{AssemblerTemplate} : : @var{InputOperands} : @var{Clobbers} : @var{GotoLabels}) @end example The @code{asm} keyword is a GNU extension. When writing code that can be compiled with @option{-ansi} and the --- 7842,7860 ---- the operand parameters after the assembler template: @example ! asm @var{asm-qualifiers} ( @var{AssemblerTemplate} : @var{OutputOperands} @r{[} : @var{InputOperands} @r{[} : @var{Clobbers} @r{]} @r{]}) ! asm @var{asm-qualifiers} ( @var{AssemblerTemplate} : : @var{InputOperands} : @var{Clobbers} : @var{GotoLabels}) @end example + where in the last form, @var{asm-qualifiers} contains @code{goto} (and in the + first form, not). The @code{asm} keyword is a GNU extension. When writing code that can be compiled with @option{-ansi} and the *************** values to produce output values. However *** 7864,7869 **** --- 7870,7879 ---- also produce side effects. If so, you may need to use the @code{volatile} qualifier to disable certain optimizations. @xref{Volatile}. + @item inline + If you use the @code{inline} qualifier, then for inlining purposes the size + of the asm is taken as the smallest size possible (@pxref{Size of an asm}). + @item goto This qualifier informs the compiler that the @code{asm} statement may perform a jump to one of the labels listed in the @var{GotoLabels}. *************** does this by counting the number of inst *** 9146,9152 **** @code{asm} and multiplying that by the length of the longest instruction supported by that processor. (When working out the number of instructions, it assumes that any occurrence of a newline or of ! whatever statement separator character is supported by the assembler -- typically @samp{;} --- indicates the end of an instruction.) Normally, GCC's estimate is adequate to ensure that correct --- 9156,9162 ---- @code{asm} and multiplying that by the length of the longest instruction supported by that processor. (When working out the number of instructions, it assumes that any occurrence of a newline or of ! whatever statement separator character is supported by the assembler --- typically @samp{;} --- indicates the end of an instruction.) Normally, GCC's estimate is adequate to ensure that correct *************** space in the object file than is needed *** 9157,9162 **** --- 9167,9177 ---- If this happens then the assembler may produce a diagnostic saying that a label is unreachable. + @cindex @code{asm inline} + This size is also used for inlining decisions. If you use @code{asm inline} + instead of just @code{asm}, then for inlining purposes the size of the asm + is taken as the minimum size, ignoring how many instructions GCC thinks it is. + @node Alternate Keywords @section Alternate Keywords @cindex alternate keywords *************** disabled. To use them, you must include *** 15566,15572 **** @item GCC allows using a @code{typedef} name as the type specifier for a ! vector type. @item For C, overloaded functions are implemented with macros so the following --- 15581,15610 ---- @item GCC allows using a @code{typedef} name as the type specifier for a ! vector type, but only under the following circumstances: ! ! @itemize @bullet ! ! @item ! When using @code{__vector} instead of @code{vector}; for example, ! ! @smallexample ! typedef signed short int16; ! __vector int16 data; ! @end smallexample ! ! @item ! When using @code{vector} in keyword-and-predefine mode; for example, ! ! @smallexample ! typedef signed short int16; ! vector int16 data; ! @end smallexample ! ! Note that keyword-and-predefine mode is enabled by disabling GNU ! extensions (e.g., by using @code{-std=c11}) and including ! @code{}. ! @end itemize @item For C, overloaded functions are implemented with macros so the following *************** vector unsigned char vec_vaddubs (vector *** 15734,15739 **** --- 15772,15779 ---- vector float vec_and (vector float, vector float); vector float vec_and (vector float, vector bool int); vector float vec_and (vector bool int, vector float); + vector bool long long vec_and (vector bool long long int, + vector bool long long); vector bool int vec_and (vector bool int, vector bool int); vector signed int vec_and (vector bool int, vector signed int); vector signed int vec_and (vector signed int, vector bool int); *************** vector unsigned char vec_sld (vector uns *** 16663,16668 **** --- 16703,16715 ---- vector bool char vec_sld (vector bool char, vector bool char, const int); + vector bool long long int vec_sld (vector bool long long int, + vector bool long long int, const int); + vector long long int vec_sld (vector long long int, + vector long long int, const int); + vector unsigned long long int vec_sld (vector unsigned long long int, + vector unsigned long long int, + const int); vector signed int vec_sll (vector signed int, vector unsigned int); *************** vector unsigned short vec_sll (vector un *** 16694,16699 **** --- 16741,16750 ---- vector unsigned short); vector unsigned short vec_sll (vector unsigned short, vector unsigned char); + vector long long int vec_sll (vector long long int, + vector unsigned char); + vector unsigned long long int vec_sll (vector unsigned long long int, + vector unsigned char); vector bool short vec_sll (vector bool short, vector unsigned int); vector bool short vec_sll (vector bool short, vector unsigned short); vector bool short vec_sll (vector bool short, vector unsigned char); *************** vector unsigned short vec_srl (vector un *** 16846,16851 **** --- 16897,16906 ---- vector unsigned short); vector unsigned short vec_srl (vector unsigned short, vector unsigned char); + vector long long int vec_srl (vector long long int, + vector unsigned char); + vector unsigned long long int vec_srl (vector unsigned long long int, + vector unsigned char); vector bool short vec_srl (vector bool short, vector unsigned int); vector bool short vec_srl (vector bool short, vector unsigned short); vector bool short vec_srl (vector bool short, vector unsigned char); *************** vector unsigned short vec_sro (vector un *** 16877,16882 **** --- 16932,16945 ---- vector signed char); vector unsigned short vec_sro (vector unsigned short, vector unsigned char); + vector long long int vec_sro (vector long long int, + vector char); + vector long long int vec_sro (vector long long int, + vector unsigned char); + vector unsigned long long int vec_sro (vector unsigned long long int, + vector char); + vector unsigned long long int vec_sro (vector unsigned long long int, + vector unsigned char); vector pixel vec_sro (vector pixel, vector signed char); vector pixel vec_sro (vector pixel, vector unsigned char); vector signed char vec_sro (vector signed char, vector signed char); *************** vector bool short vec_unpackh (vector bo *** 17112,17117 **** --- 17175,17181 ---- vector signed int vec_unpackh (vector signed short); vector bool int vec_unpackh (vector bool short); vector unsigned int vec_unpackh (vector pixel); + vector double vec_unpackh (vector float); vector bool int vec_vupkhsh (vector bool short); vector signed int vec_vupkhsh (vector signed short); *************** vector bool short vec_unpackl (vector bo *** 17126,17131 **** --- 17190,17196 ---- vector unsigned int vec_unpackl (vector pixel); vector signed int vec_unpackl (vector signed short); vector bool int vec_unpackl (vector bool short); + vector double vec_unpackl (vector float); vector unsigned int vec_vupklpx (vector pixel); *************** vector double vec_div (vector double, ve *** 17485,17490 **** --- 17550,17559 ---- vector long vec_div (vector long, vector long); vector unsigned long vec_div (vector unsigned long, vector unsigned long); vector double vec_floor (vector double); + vector signed long long vec_ld (int, const vector signed long long *); + vector signed long long vec_ld (int, const signed long long *); + vector unsigned long long vec_ld (int, const vector unsigned long long *); + vector unsigned long long vec_ld (int, const unsigned long long *); vector double vec_ld (int, const vector double *); vector double vec_ld (int, const double *); vector double vec_ldl (int, const vector double *); *************** vector signed long vec_splats (signed lo *** 17557,17562 **** --- 17626,17638 ---- vector unsigned long vec_splats (unsigned long); vector float vec_sqrt (vector float); vector double vec_sqrt (vector double); + void vec_st (vector signed long long, int, vector signed long long *); + void vec_st (vector signed long long, int, signed long long *); + void vec_st (vector unsigned long long, int, vector unsigned long long *); + void vec_st (vector unsigned long long, int, unsigned long long *); + void vec_st (vector bool long long, int, vector bool long long *); + void vec_st (vector bool long long, int, signed long long *); + void vec_st (vector bool long long, int, unsigned long long *); void vec_st (vector double, int, vector double *); void vec_st (vector double, int, double *); vector double vec_sub (vector double, vector double); *************** vector int vec_packs (vector long long, *** 17874,17882 **** --- 17950,17967 ---- vector unsigned int vec_packs (vector unsigned long long, vector unsigned long long); + test_vsi_packsu_vssi_vssi (vector signed short x, + + vector unsigned char vec_packsu (vector signed short, vector signed short ) + vector unsigned char vec_packsu (vector unsigned short, vector unsigned short ) + vector unsigned short int vec_packsu (vector signed int, vector signed int); + vector unsigned short int vec_packsu (vector unsigned int, + vector unsigned int); vector unsigned int vec_packsu (vector long long, vector long long); vector unsigned int vec_packsu (vector unsigned long long, vector unsigned long long); + vector unsigned int vec_packsu (vector signed long long, + vector signed long long); vector long long vec_rl (vector long long, vector unsigned long long); *************** vector unsigned long long vec_bperm (vec *** 18094,18102 **** vector unsigned char); vector bool char vec_cmpne (vector bool char, vector bool char); ! vector bool short vec_cmpne (vector bool short, vector bool short); vector bool int vec_cmpne (vector bool int, vector bool int); vector bool long long vec_cmpne (vector bool long long, vector bool long long); vector long long vec_vctz (vector long long); vector unsigned long long vec_vctz (vector unsigned long long); --- 18179,18202 ---- vector unsigned char); vector bool char vec_cmpne (vector bool char, vector bool char); ! vector bool char vec_cmpne (vector signed char, vector signed char); ! vector bool char vec_cmpne (vector unsigned char, vector unsigned char); vector bool int vec_cmpne (vector bool int, vector bool int); + vector bool int vec_cmpne (vector signed int, vector signed int); + vector bool int vec_cmpne (vector unsigned int, vector unsigned int); vector bool long long vec_cmpne (vector bool long long, vector bool long long); + vector bool long long vec_cmpne (vector signed long long, + vector signed long long); + vector bool long long vec_cmpne (vector unsigned long long, + vector unsigned long long); + vector bool short vec_cmpne (vector bool short, vector bool short); + vector bool short vec_cmpne (vector signed short, vector signed short); + vector bool short vec_cmpne (vector unsigned short, vector unsigned short); + vector bool long long vec_cmpne (vector double, vector double); + vector bool int vec_cmpne (vector float, vector float); + + vector float vec_extract_fp32_from_shorth (vector unsigned short); + vector float vec_extract_fp32_from_shortl (vector unsigned short); vector long long vec_vctz (vector long long); vector unsigned long long vec_vctz (vector unsigned long long); *************** If the cryptographic instructions are en *** 18371,18390 **** --- 18471,18503 ---- @smallexample vector unsigned long long __builtin_crypto_vsbox (vector unsigned long long); + vector unsigned char vec_sbox_be (vector unsigned char); + vector unsigned long long __builtin_crypto_vcipher (vector unsigned long long, vector unsigned long long); + vector unsigned char vec_cipher_be (vector unsigned char, vector unsigned char); + vector unsigned long long __builtin_crypto_vcipherlast (vector unsigned long long, vector unsigned long long); + vector unsigned char vec_cipherlast_be (vector unsigned char, + vector unsigned char); + vector unsigned long long __builtin_crypto_vncipher (vector unsigned long long, vector unsigned long long); + vector unsigned char vec_ncipher_be (vector unsigned char, + vector unsigned char); + vector unsigned long long __builtin_crypto_vncipherlast (vector unsigned long long, vector unsigned long long); + vector unsigned char vec_ncipherlast_be (vector unsigned char, + vector unsigned char); + vector unsigned char __builtin_crypto_vpermxor (vector unsigned char, vector unsigned char, vector unsigned char); diff -Nrcpad gcc-7.4.0/gcc/doc/fsf-funding.7 gcc-7.5.0/gcc/doc/fsf-funding.7 *** gcc-7.4.0/gcc/doc/fsf-funding.7 Thu Dec 6 09:59:45 2018 --- gcc-7.5.0/gcc/doc/fsf-funding.7 Thu Nov 14 07:36:16 2019 *************** *** 133,139 **** .\" ======================================================================== .\" .IX Title "FSF-FUNDING 7" ! .TH FSF-FUNDING 7 "2018-12-06" "gcc-7.4.0" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 133,139 ---- .\" ======================================================================== .\" .IX Title "FSF-FUNDING 7" ! .TH FSF-FUNDING 7 "2019-11-14" "gcc-7.5.0" "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-7.4.0/gcc/doc/g++.1 gcc-7.5.0/gcc/doc/g++.1 *** gcc-7.4.0/gcc/doc/g++.1 Thu Dec 6 10:20:56 2018 --- gcc-7.5.0/gcc/doc/g++.1 Thu Nov 14 07:57:29 2019 *************** *** 133,139 **** .\" ======================================================================== .\" .IX Title "GCC 1" ! .TH GCC 1 "2018-12-06" "gcc-7.4.0" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 133,139 ---- .\" ======================================================================== .\" .IX Title "GCC 1" ! .TH GCC 1 "2019-11-14" "gcc-7.5.0" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l *************** results. This is the default. *** 6611,6623 **** .IP "\fB\-Os\fR" 4 .IX Item "-Os" Optimize for size. \fB\-Os\fR enables all \fB\-O2\fR optimizations that ! do not typically increase code size. It also performs further ! optimizations designed to reduce code size. .Sp \&\fB\-Os\fR disables the following optimization flags: \&\fB\-falign\-functions \-falign\-jumps \-falign\-loops ! \&\-falign\-labels \-freorder\-blocks \-freorder\-blocks\-algorithm=stc ! \&\-freorder\-blocks\-and\-partition \-fprefetch\-loop\-arrays\fR .IP "\fB\-Ofast\fR" 4 .IX Item "-Ofast" Disregard strict standards compliance. \fB\-Ofast\fR enables all --- 6611,6625 ---- .IP "\fB\-Os\fR" 4 .IX Item "-Os" Optimize for size. \fB\-Os\fR enables all \fB\-O2\fR optimizations that ! do not typically increase code size. .Sp \&\fB\-Os\fR disables the following optimization flags: \&\fB\-falign\-functions \-falign\-jumps \-falign\-loops ! \&\-falign\-labels \-fprefetch\-loop\-arrays\fR ! .Sp ! It also enables \fB\-finline\-functions\fR, causes the compiler to tune for ! code size rather than execution speed, and performs further optimizations ! designed to reduce code size. .IP "\fB\-Ofast\fR" 4 .IX Item "-Ofast" Disregard strict standards compliance. \fB\-Ofast\fR enables all *************** heuristically decides which functions ar *** 6723,6729 **** in this way. This inlining applies to all functions, even those not declared inline. .Sp ! Enabled at level \fB\-O2\fR. .IP "\fB\-findirect\-inlining\fR" 4 .IX Item "-findirect-inlining" Inline also indirect calls that are discovered to be known at compile --- 6725,6731 ---- in this way. This inlining applies to all functions, even those not declared inline. .Sp ! Enabled at level \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR. .IP "\fB\-findirect\-inlining\fR" 4 .IX Item "-findirect-inlining" Inline also indirect calls that are discovered to be known at compile *************** time thanks to previous inlining. This *** 6731,6737 **** when inlining itself is turned on by the \fB\-finline\-functions\fR or \fB\-finline\-small\-functions\fR options. .Sp ! Enabled at level \fB\-O2\fR. .IP "\fB\-finline\-functions\fR" 4 .IX Item "-finline-functions" Consider all functions for inlining, even if they are not declared inline. --- 6733,6739 ---- when inlining itself is turned on by the \fB\-finline\-functions\fR or \fB\-finline\-small\-functions\fR options. .Sp ! Enabled at level \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR. .IP "\fB\-finline\-functions\fR" 4 .IX Item "-finline-functions" Consider all functions for inlining, even if they are not declared inline. *************** If all calls to a given function are int *** 6742,6748 **** declared \f(CW\*(C`static\*(C'\fR, then the function is normally not output as assembler code in its own right. .Sp ! Enabled at level \fB\-O3\fR. .IP "\fB\-finline\-functions\-called\-once\fR" 4 .IX Item "-finline-functions-called-once" Consider all \f(CW\*(C`static\*(C'\fR functions called once for inlining into their --- 6744,6751 ---- declared \f(CW\*(C`static\*(C'\fR, then the function is normally not output as assembler code in its own right. .Sp ! Enabled at levels \fB\-O3\fR, \fB\-Os\fR. Also enabled ! by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR. .IP "\fB\-finline\-functions\-called\-once\fR" 4 .IX Item "-finline-functions-called-once" Consider all \f(CW\*(C`static\*(C'\fR functions called once for inlining into their *************** Disable Book-E \s-1SPE ABI\s0 extensions *** 21037,21047 **** .IP "\fB\-mabi=ibmlongdouble\fR" 4 .IX Item "-mabi=ibmlongdouble" Change the current \s-1ABI\s0 to use \s-1IBM\s0 extended-precision long double. ! This is a PowerPC 32\-bit \s-1SYSV ABI\s0 option. .IP "\fB\-mabi=ieeelongdouble\fR" 4 .IX Item "-mabi=ieeelongdouble" Change the current \s-1ABI\s0 to use \s-1IEEE\s0 extended-precision long double. ! This is a PowerPC 32\-bit Linux \s-1ABI\s0 option. .IP "\fB\-mabi=elfv1\fR" 4 .IX Item "-mabi=elfv1" Change the current \s-1ABI\s0 to use the ELFv1 \s-1ABI.\s0 --- 21040,21052 ---- .IP "\fB\-mabi=ibmlongdouble\fR" 4 .IX Item "-mabi=ibmlongdouble" Change the current \s-1ABI\s0 to use \s-1IBM\s0 extended-precision long double. ! This is a PowerPC 32\-bit \s-1SYSV ABI\s0 option. Requires \fB\-mlong\-double\-128\fR ! to be enabled. .IP "\fB\-mabi=ieeelongdouble\fR" 4 .IX Item "-mabi=ieeelongdouble" Change the current \s-1ABI\s0 to use \s-1IEEE\s0 extended-precision long double. ! This is a PowerPC 32\-bit Linux \s-1ABI\s0 option. Requires \fB\-mlong\-double\-128\fR ! to be enabled. .IP "\fB\-mabi=elfv1\fR" 4 .IX Item "-mabi=elfv1" Change the current \s-1ABI\s0 to use the ELFv1 \s-1ABI.\s0 diff -Nrcpad gcc-7.4.0/gcc/doc/gcc.1 gcc-7.5.0/gcc/doc/gcc.1 *** gcc-7.4.0/gcc/doc/gcc.1 Thu Dec 6 10:20:55 2018 --- gcc-7.5.0/gcc/doc/gcc.1 Thu Nov 14 07:57:28 2019 *************** *** 133,139 **** .\" ======================================================================== .\" .IX Title "GCC 1" ! .TH GCC 1 "2018-12-06" "gcc-7.4.0" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 133,139 ---- .\" ======================================================================== .\" .IX Title "GCC 1" ! .TH GCC 1 "2019-11-14" "gcc-7.5.0" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l *************** results. This is the default. *** 6611,6623 **** .IP "\fB\-Os\fR" 4 .IX Item "-Os" Optimize for size. \fB\-Os\fR enables all \fB\-O2\fR optimizations that ! do not typically increase code size. It also performs further ! optimizations designed to reduce code size. .Sp \&\fB\-Os\fR disables the following optimization flags: \&\fB\-falign\-functions \-falign\-jumps \-falign\-loops ! \&\-falign\-labels \-freorder\-blocks \-freorder\-blocks\-algorithm=stc ! \&\-freorder\-blocks\-and\-partition \-fprefetch\-loop\-arrays\fR .IP "\fB\-Ofast\fR" 4 .IX Item "-Ofast" Disregard strict standards compliance. \fB\-Ofast\fR enables all --- 6611,6625 ---- .IP "\fB\-Os\fR" 4 .IX Item "-Os" Optimize for size. \fB\-Os\fR enables all \fB\-O2\fR optimizations that ! do not typically increase code size. .Sp \&\fB\-Os\fR disables the following optimization flags: \&\fB\-falign\-functions \-falign\-jumps \-falign\-loops ! \&\-falign\-labels \-fprefetch\-loop\-arrays\fR ! .Sp ! It also enables \fB\-finline\-functions\fR, causes the compiler to tune for ! code size rather than execution speed, and performs further optimizations ! designed to reduce code size. .IP "\fB\-Ofast\fR" 4 .IX Item "-Ofast" Disregard strict standards compliance. \fB\-Ofast\fR enables all *************** heuristically decides which functions ar *** 6723,6729 **** in this way. This inlining applies to all functions, even those not declared inline. .Sp ! Enabled at level \fB\-O2\fR. .IP "\fB\-findirect\-inlining\fR" 4 .IX Item "-findirect-inlining" Inline also indirect calls that are discovered to be known at compile --- 6725,6731 ---- in this way. This inlining applies to all functions, even those not declared inline. .Sp ! Enabled at level \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR. .IP "\fB\-findirect\-inlining\fR" 4 .IX Item "-findirect-inlining" Inline also indirect calls that are discovered to be known at compile *************** time thanks to previous inlining. This *** 6731,6737 **** when inlining itself is turned on by the \fB\-finline\-functions\fR or \fB\-finline\-small\-functions\fR options. .Sp ! Enabled at level \fB\-O2\fR. .IP "\fB\-finline\-functions\fR" 4 .IX Item "-finline-functions" Consider all functions for inlining, even if they are not declared inline. --- 6733,6739 ---- when inlining itself is turned on by the \fB\-finline\-functions\fR or \fB\-finline\-small\-functions\fR options. .Sp ! Enabled at level \fB\-O2\fR, \fB\-O3\fR, \fB\-Os\fR. .IP "\fB\-finline\-functions\fR" 4 .IX Item "-finline-functions" Consider all functions for inlining, even if they are not declared inline. *************** If all calls to a given function are int *** 6742,6748 **** declared \f(CW\*(C`static\*(C'\fR, then the function is normally not output as assembler code in its own right. .Sp ! Enabled at level \fB\-O3\fR. .IP "\fB\-finline\-functions\-called\-once\fR" 4 .IX Item "-finline-functions-called-once" Consider all \f(CW\*(C`static\*(C'\fR functions called once for inlining into their --- 6744,6751 ---- declared \f(CW\*(C`static\*(C'\fR, then the function is normally not output as assembler code in its own right. .Sp ! Enabled at levels \fB\-O3\fR, \fB\-Os\fR. Also enabled ! by \fB\-fprofile\-use\fR and \fB\-fauto\-profile\fR. .IP "\fB\-finline\-functions\-called\-once\fR" 4 .IX Item "-finline-functions-called-once" Consider all \f(CW\*(C`static\*(C'\fR functions called once for inlining into their *************** Disable Book-E \s-1SPE ABI\s0 extensions *** 21037,21047 **** .IP "\fB\-mabi=ibmlongdouble\fR" 4 .IX Item "-mabi=ibmlongdouble" Change the current \s-1ABI\s0 to use \s-1IBM\s0 extended-precision long double. ! This is a PowerPC 32\-bit \s-1SYSV ABI\s0 option. .IP "\fB\-mabi=ieeelongdouble\fR" 4 .IX Item "-mabi=ieeelongdouble" Change the current \s-1ABI\s0 to use \s-1IEEE\s0 extended-precision long double. ! This is a PowerPC 32\-bit Linux \s-1ABI\s0 option. .IP "\fB\-mabi=elfv1\fR" 4 .IX Item "-mabi=elfv1" Change the current \s-1ABI\s0 to use the ELFv1 \s-1ABI.\s0 --- 21040,21052 ---- .IP "\fB\-mabi=ibmlongdouble\fR" 4 .IX Item "-mabi=ibmlongdouble" Change the current \s-1ABI\s0 to use \s-1IBM\s0 extended-precision long double. ! This is a PowerPC 32\-bit \s-1SYSV ABI\s0 option. Requires \fB\-mlong\-double\-128\fR ! to be enabled. .IP "\fB\-mabi=ieeelongdouble\fR" 4 .IX Item "-mabi=ieeelongdouble" Change the current \s-1ABI\s0 to use \s-1IEEE\s0 extended-precision long double. ! This is a PowerPC 32\-bit Linux \s-1ABI\s0 option. Requires \fB\-mlong\-double\-128\fR ! to be enabled. .IP "\fB\-mabi=elfv1\fR" 4 .IX Item "-mabi=elfv1" Change the current \s-1ABI\s0 to use the ELFv1 \s-1ABI.\s0 diff -Nrcpad gcc-7.4.0/gcc/doc/gcc.info gcc-7.5.0/gcc/doc/gcc.info *** gcc-7.4.0/gcc/doc/gcc.info Thu Dec 6 10:20:52 2018 --- gcc-7.5.0/gcc/doc/gcc.info Thu Nov 14 07:57:25 2019 *************** *** 1,5 **** This is doc/gcc.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/doc/gcc.texi. Copyright (C) 1988-2017 Free Software Foundation, Inc. --- 1,5 ---- This is doc/gcc.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/doc/gcc.texi. Copyright (C) 1988-2017 Free Software Foundation, Inc. *************** Introduction *** 60,66 **** 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 7.4.0. 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. --- 60,66 ---- 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 7.5.0. 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. *************** find out the exact set of optimizations *** 6636,6648 **** `-Os' Optimize for size. `-Os' enables all `-O2' optimizations that do ! not typically increase code size. It also performs further ! optimizations designed to reduce code size. `-Os' disables the following optimization flags: -falign-functions -falign-jumps -falign-loops ! -falign-labels -freorder-blocks -freorder-blocks-algorithm=stc ! -freorder-blocks-and-partition -fprefetch-loop-arrays `-Ofast' Disregard strict standards compliance. `-Ofast' enables all `-O3' --- 6636,6650 ---- `-Os' Optimize for size. `-Os' enables all `-O2' optimizations that do ! not typically increase code size. `-Os' disables the following optimization flags: -falign-functions -falign-jumps -falign-loops ! -falign-labels -fprefetch-loop-arrays ! ! It also enables `-finline-functions', causes the compiler to tune ! for code size rather than execution speed, and performs further ! optimizations designed to reduce code size. `-Ofast' Disregard strict standards compliance. `-Ofast' enables all `-O3' *************** optimizations to be performed is desired *** 6748,6754 **** simple enough to be worth integrating in this way. This inlining applies to all functions, even those not declared inline. ! Enabled at level `-O2'. `-findirect-inlining' Inline also indirect calls that are discovered to be known at --- 6750,6756 ---- simple enough to be worth integrating in this way. This inlining applies to all functions, even those not declared inline. ! Enabled at level `-O2', `-O3', `-Os'. `-findirect-inlining' Inline also indirect calls that are discovered to be known at *************** optimizations to be performed is desired *** 6756,6762 **** effect only when inlining itself is turned on by the `-finline-functions' or `-finline-small-functions' options. ! Enabled at level `-O2'. `-finline-functions' Consider all functions for inlining, even if they are not declared --- 6758,6764 ---- effect only when inlining itself is turned on by the `-finline-functions' or `-finline-small-functions' options. ! Enabled at level `-O2', `-O3', `-Os'. `-finline-functions' Consider all functions for inlining, even if they are not declared *************** optimizations to be performed is desired *** 6767,6773 **** is declared `static', then the function is normally not output as assembler code in its own right. ! Enabled at level `-O3'. `-finline-functions-called-once' Consider all `static' functions called once for inlining into their --- 6769,6776 ---- is declared `static', then the function is normally not output as assembler code in its own right. ! Enabled at levels `-O3', `-Os'. Also enabled by `-fprofile-use' ! and `-fauto-profile'. `-finline-functions-called-once' Consider all `static' functions called once for inlining into their *************** These `-m' options are defined for the I *** 20283,20293 **** `-mabi=ibmlongdouble' Change the current ABI to use IBM extended-precision long double. ! This is a PowerPC 32-bit SYSV ABI option. `-mabi=ieeelongdouble' Change the current ABI to use IEEE extended-precision long double. ! This is a PowerPC 32-bit Linux ABI option. `-mabi=elfv1' Change the current ABI to use the ELFv1 ABI. This is the default --- 20286,20298 ---- `-mabi=ibmlongdouble' Change the current ABI to use IBM extended-precision long double. ! This is a PowerPC 32-bit SYSV ABI option. Requires ! `-mlong-double-128' to be enabled. `-mabi=ieeelongdouble' Change the current ABI to use IEEE extended-precision long double. ! This is a PowerPC 32-bit Linux ABI option. Requires ! `-mlong-double-128' to be enabled. `-mabi=elfv1' Change the current ABI to use the ELFv1 ABI. This is the default *************** File: gcc.info, Node: Basic Asm, Next: *** 32203,32209 **** A basic `asm' statement has the following syntax: ! asm [ volatile ] ( ASSEMBLERINSTRUCTIONS ) The `asm' keyword is a GNU extension. When writing code that can be compiled with `-ansi' and the various `-std' options, use `__asm__' --- 32208,32214 ---- A basic `asm' statement has the following syntax: ! asm ASM-QUALIFIERS ( ASSEMBLERINSTRUCTIONS ) The `asm' keyword is a GNU extension. When writing code that can be compiled with `-ansi' and the various `-std' options, use `__asm__' *************** Qualifiers *** 32216,32221 **** --- 32221,32231 ---- The optional `volatile' qualifier has no effect. All basic `asm' blocks are implicitly volatile. + `inline' + If you use the `inline' qualifier, then for inlining purposes the + size of the asm is taken as the smallest size possible (*note Size + of an asm::). + Parameters .......... *************** and perform jumps from assembler code to *** 32322,32337 **** syntax uses colons (`:') to delimit the operand parameters after the assembler template: ! asm [volatile] ( ASSEMBLERTEMPLATE : OUTPUTOPERANDS [ : INPUTOPERANDS [ : CLOBBERS ] ]) ! asm [volatile] goto ( ASSEMBLERTEMPLATE : : INPUTOPERANDS : CLOBBERS : GOTOLABELS) The `asm' keyword is a GNU extension. When writing code that can be compiled with `-ansi' and the various `-std' options, use `__asm__' --- 32332,32349 ---- syntax uses colons (`:') to delimit the operand parameters after the assembler template: ! asm ASM-QUALIFIERS ( ASSEMBLERTEMPLATE : OUTPUTOPERANDS [ : INPUTOPERANDS [ : CLOBBERS ] ]) ! asm ASM-QUALIFIERS ( ASSEMBLERTEMPLATE : : INPUTOPERANDS : CLOBBERS : GOTOLABELS) + where in the last form, ASM-QUALIFIERS contains `goto' (and in the + first form, not). The `asm' keyword is a GNU extension. When writing code that can be compiled with `-ansi' and the various `-std' options, use `__asm__' *************** Qualifiers *** 32347,32352 **** --- 32359,32369 ---- `volatile' qualifier to disable certain optimizations. *Note Volatile::. + `inline' + If you use the `inline' qualifier, then for inlining purposes the + size of the asm is taken as the smallest size possible (*note Size + of an asm::). + `goto' This qualifier informs the compiler that the `asm' statement may perform a jump to one of the labels listed in the GOTOLABELS. *************** counting the number of instructions in t *** 36299,36305 **** multiplying that by the length of the longest instruction supported by that processor. (When working out the number of instructions, it assumes that any occurrence of a newline or of whatever statement ! separator character is supported by the assembler - typically `;' -- indicates the end of an instruction.) Normally, GCC's estimate is adequate to ensure that correct code is --- 36316,36322 ---- multiplying that by the length of the longest instruction supported by that processor. (When working out the number of instructions, it assumes that any occurrence of a newline or of whatever statement ! separator character is supported by the assembler -- typically `;' -- indicates the end of an instruction.) Normally, GCC's estimate is adequate to ensure that correct code is *************** space in the object file than is needed *** 36310,36315 **** --- 36327,36337 ---- this happens then the assembler may produce a diagnostic saying that a label is unreachable. + This size is also used for inlining decisions. If you use `asm inline' + instead of just `asm', then for inlining purposes the size of the asm + is taken as the minimum size, ignoring how many instructions GCC thinks + it is. +  File: gcc.info, Node: Alternate Keywords, Next: Incomplete Enums, Prev: Using Assembly Language with C, Up: C Extensions *************** ways. *** 41797,41803 **** `' instead. * GCC allows using a `typedef' name as the type specifier for a ! vector type. * For C, overloaded functions are implemented with macros so the following does not work: --- 41819,41840 ---- `' instead. * GCC allows using a `typedef' name as the type specifier for a ! vector type, but only under the following circumstances: ! ! * When using `__vector' instead of `vector'; for example, ! ! typedef signed short int16; ! __vector int16 data; ! ! * When using `vector' in keyword-and-predefine mode; for ! example, ! ! typedef signed short int16; ! vector int16 data; ! ! Note that keyword-and-predefine mode is enabled by disabling ! GNU extensions (e.g., by using `-std=c11') and including ! `'. * For C, overloaded functions are implemented with macros so the following does not work: *************** values within the range required for tha *** 41959,41964 **** --- 41996,42003 ---- vector float vec_and (vector float, vector float); vector float vec_and (vector float, vector bool int); vector float vec_and (vector bool int, vector float); + vector bool long long vec_and (vector bool long long int, + vector bool long long); vector bool int vec_and (vector bool int, vector bool int); vector signed int vec_and (vector bool int, vector signed int); vector signed int vec_and (vector signed int, vector bool int); *************** values within the range required for tha *** 42888,42893 **** --- 42927,42939 ---- vector bool char vec_sld (vector bool char, vector bool char, const int); + vector bool long long int vec_sld (vector bool long long int, + vector bool long long int, const int); + vector long long int vec_sld (vector long long int, + vector long long int, const int); + vector unsigned long long int vec_sld (vector unsigned long long int, + vector unsigned long long int, + const int); vector signed int vec_sll (vector signed int, vector unsigned int); *************** values within the range required for tha *** 42919,42924 **** --- 42965,42974 ---- vector unsigned short); vector unsigned short vec_sll (vector unsigned short, vector unsigned char); + vector long long int vec_sll (vector long long int, + vector unsigned char); + vector unsigned long long int vec_sll (vector unsigned long long int, + vector unsigned char); vector bool short vec_sll (vector bool short, vector unsigned int); vector bool short vec_sll (vector bool short, vector unsigned short); vector bool short vec_sll (vector bool short, vector unsigned char); *************** values within the range required for tha *** 43071,43076 **** --- 43121,43130 ---- vector unsigned short); vector unsigned short vec_srl (vector unsigned short, vector unsigned char); + vector long long int vec_srl (vector long long int, + vector unsigned char); + vector unsigned long long int vec_srl (vector unsigned long long int, + vector unsigned char); vector bool short vec_srl (vector bool short, vector unsigned int); vector bool short vec_srl (vector bool short, vector unsigned short); vector bool short vec_srl (vector bool short, vector unsigned char); *************** values within the range required for tha *** 43102,43107 **** --- 43156,43169 ---- vector signed char); vector unsigned short vec_sro (vector unsigned short, vector unsigned char); + vector long long int vec_sro (vector long long int, + vector char); + vector long long int vec_sro (vector long long int, + vector unsigned char); + vector unsigned long long int vec_sro (vector unsigned long long int, + vector char); + vector unsigned long long int vec_sro (vector unsigned long long int, + vector unsigned char); vector pixel vec_sro (vector pixel, vector signed char); vector pixel vec_sro (vector pixel, vector unsigned char); vector signed char vec_sro (vector signed char, vector signed char); *************** values within the range required for tha *** 43337,43342 **** --- 43399,43405 ---- vector signed int vec_unpackh (vector signed short); vector bool int vec_unpackh (vector bool short); vector unsigned int vec_unpackh (vector pixel); + vector double vec_unpackh (vector float); vector bool int vec_vupkhsh (vector bool short); vector signed int vec_vupkhsh (vector signed short); *************** values within the range required for tha *** 43351,43356 **** --- 43414,43420 ---- vector unsigned int vec_unpackl (vector pixel); vector signed int vec_unpackl (vector signed short); vector bool int vec_unpackl (vector bool short); + vector double vec_unpackl (vector float); vector unsigned int vec_vupklpx (vector pixel); *************** additional functions are available: *** 43708,43713 **** --- 43772,43781 ---- vector long vec_div (vector long, vector long); vector unsigned long vec_div (vector unsigned long, vector unsigned long); vector double vec_floor (vector double); + vector signed long long vec_ld (int, const vector signed long long *); + vector signed long long vec_ld (int, const signed long long *); + vector unsigned long long vec_ld (int, const vector unsigned long long *); + vector unsigned long long vec_ld (int, const unsigned long long *); vector double vec_ld (int, const vector double *); vector double vec_ld (int, const double *); vector double vec_ldl (int, const vector double *); *************** additional functions are available: *** 43780,43785 **** --- 43848,43860 ---- vector unsigned long vec_splats (unsigned long); vector float vec_sqrt (vector float); vector double vec_sqrt (vector double); + void vec_st (vector signed long long, int, vector signed long long *); + void vec_st (vector signed long long, int, signed long long *); + void vec_st (vector unsigned long long, int, vector unsigned long long *); + void vec_st (vector unsigned long long, int, unsigned long long *); + void vec_st (vector bool long long, int, vector bool long long *); + void vec_st (vector bool long long, int, signed long long *); + void vec_st (vector bool long long, int, unsigned long long *); void vec_st (vector double, int, vector double *); void vec_st (vector double, int, double *); vector double vec_sub (vector double, vector double); *************** VECTOR UNSIGNED LONG LONG. *** 44095,44103 **** --- 44170,44187 ---- vector unsigned int vec_packs (vector unsigned long long, vector unsigned long long); + test_vsi_packsu_vssi_vssi (vector signed short x, + + vector unsigned char vec_packsu (vector signed short, vector signed short ) + vector unsigned char vec_packsu (vector unsigned short, vector unsigned short ) + vector unsigned short int vec_packsu (vector signed int, vector signed int); + vector unsigned short int vec_packsu (vector unsigned int, + vector unsigned int); vector unsigned int vec_packsu (vector long long, vector long long); vector unsigned int vec_packsu (vector unsigned long long, vector unsigned long long); + vector unsigned int vec_packsu (vector signed long long, + vector signed long long); vector long long vec_rl (vector long long, vector unsigned long long); *************** available: *** 44309,44317 **** vector unsigned char); vector bool char vec_cmpne (vector bool char, vector bool char); ! vector bool short vec_cmpne (vector bool short, vector bool short); vector bool int vec_cmpne (vector bool int, vector bool int); vector bool long long vec_cmpne (vector bool long long, vector bool long long); vector long long vec_vctz (vector long long); vector unsigned long long vec_vctz (vector unsigned long long); --- 44393,44416 ---- vector unsigned char); vector bool char vec_cmpne (vector bool char, vector bool char); ! vector bool char vec_cmpne (vector signed char, vector signed char); ! vector bool char vec_cmpne (vector unsigned char, vector unsigned char); vector bool int vec_cmpne (vector bool int, vector bool int); + vector bool int vec_cmpne (vector signed int, vector signed int); + vector bool int vec_cmpne (vector unsigned int, vector unsigned int); vector bool long long vec_cmpne (vector bool long long, vector bool long long); + vector bool long long vec_cmpne (vector signed long long, + vector signed long long); + vector bool long long vec_cmpne (vector unsigned long long, + vector unsigned long long); + vector bool short vec_cmpne (vector bool short, vector bool short); + vector bool short vec_cmpne (vector signed short, vector signed short); + vector bool short vec_cmpne (vector unsigned short, vector unsigned short); + vector bool long long vec_cmpne (vector double, vector double); + vector bool int vec_cmpne (vector float, vector float); + + vector float vec_extract_fp32_from_shorth (vector unsigned short); + vector float vec_extract_fp32_from_shortl (vector unsigned short); vector long long vec_vctz (vector long long); vector unsigned long long vec_vctz (vector unsigned long long); *************** char' reverses the bytes in the whole wo *** 44553,44572 **** --- 44652,44684 ---- vector unsigned long long __builtin_crypto_vsbox (vector unsigned long long); + vector unsigned char vec_sbox_be (vector unsigned char); + vector unsigned long long __builtin_crypto_vcipher (vector unsigned long long, vector unsigned long long); + vector unsigned char vec_cipher_be (vector unsigned char, vector unsigned char); + vector unsigned long long __builtin_crypto_vcipherlast (vector unsigned long long, vector unsigned long long); + vector unsigned char vec_cipherlast_be (vector unsigned char, + vector unsigned char); + vector unsigned long long __builtin_crypto_vncipher (vector unsigned long long, vector unsigned long long); + vector unsigned char vec_ncipher_be (vector unsigned char, + vector unsigned char); + vector unsigned long long __builtin_crypto_vncipherlast (vector unsigned long long, vector unsigned long long); + vector unsigned char vec_ncipherlast_be (vector unsigned char, + vector unsigned char); + vector unsigned char __builtin_crypto_vpermxor (vector unsigned char, vector unsigned char, vector unsigned char); *************** look up both forms. *** 54488,54495 **** * Menu: * ###: Overall Options. (line 204) ! * -fipa-bit-cp: Optimize Options. (line 1023) ! * -fipa-vrp: Optimize Options. (line 1028) * -mfunction-return: x86 Options. (line 1203) * -mindirect-branch: x86 Options. (line 1189) * -mindirect-branch-register: x86 Options. (line 1217) --- 54600,54607 ---- * Menu: * ###: Overall Options. (line 204) ! * -fipa-bit-cp: Optimize Options. (line 1026) ! * -fipa-vrp: Optimize Options. (line 1031) * -mfunction-return: x86 Options. (line 1203) * -mindirect-branch: x86 Options. (line 1189) * -mindirect-branch-register: x86 Options. (line 1217) *************** look up both forms. *** 54574,54603 **** * fabi-version: C++ Dialect Options. (line 24) * fada-spec-parent: Overall Options. (line 377) ! * faggressive-loop-optimizations: Optimize Options. (line 520) ! * falign-functions: Optimize Options. (line 1544) ! * falign-jumps: Optimize Options. (line 1602) ! * falign-labels: Optimize Options. (line 1569) ! * falign-loops: Optimize Options. (line 1588) * faligned-new: C++ Dialect Options. (line 96) * fallow-parameterless-variadic-functions: C Dialect Options. (line 213) * fasan-shadow-offset: Instrumentation Options. (line 325) ! * fassociative-math: Optimize Options. (line 2082) * fasynchronous-unwind-tables: Code Gen Options. (line 146) ! * fauto-inc-dec: Optimize Options. (line 542) ! * fauto-profile: Optimize Options. (line 1962) * fbounds-check: Instrumentation Options. (line 386) ! * fbranch-probabilities: Optimize Options. (line 2226) ! * fbranch-target-load-optimize: Optimize Options. (line 2352) ! * fbranch-target-load-optimize2: Optimize Options. (line 2358) ! * fbtr-bb-exclusive: Optimize Options. (line 2362) * fcall-saved: Code Gen Options. (line 446) * fcall-used: Code Gen Options. (line 432) ! * fcaller-saves: Optimize Options. (line 901) * fcheck-new: C++ Dialect Options. (line 104) * fcheck-pointer-bounds: Instrumentation Options. --- 54686,54715 ---- * fabi-version: C++ Dialect Options. (line 24) * fada-spec-parent: Overall Options. (line 377) ! * faggressive-loop-optimizations: Optimize Options. (line 523) ! * falign-functions: Optimize Options. (line 1547) ! * falign-jumps: Optimize Options. (line 1605) ! * falign-labels: Optimize Options. (line 1572) ! * falign-loops: Optimize Options. (line 1591) * faligned-new: C++ Dialect Options. (line 96) * fallow-parameterless-variadic-functions: C Dialect Options. (line 213) * fasan-shadow-offset: Instrumentation Options. (line 325) ! * fassociative-math: Optimize Options. (line 2085) * fasynchronous-unwind-tables: Code Gen Options. (line 146) ! * fauto-inc-dec: Optimize Options. (line 545) ! * fauto-profile: Optimize Options. (line 1965) * fbounds-check: Instrumentation Options. (line 386) ! * fbranch-probabilities: Optimize Options. (line 2229) ! * fbranch-target-load-optimize: Optimize Options. (line 2355) ! * fbranch-target-load-optimize2: Optimize Options. (line 2361) ! * fbtr-bb-exclusive: Optimize Options. (line 2365) * fcall-saved: Code Gen Options. (line 446) * fcall-used: Code Gen Options. (line 432) ! * fcaller-saves: Optimize Options. (line 904) * fcheck-new: C++ Dialect Options. (line 104) * fcheck-pointer-bounds: Instrumentation Options. *************** look up both forms. *** 54638,54683 **** * fchkp-use-wrappers: Instrumentation Options. (line 507) * fcilkplus: C Dialect Options. (line 316) ! * fcode-hoisting: Optimize Options. (line 942) ! * fcombine-stack-adjustments: Optimize Options. (line 913) * fcommon: Common Variable Attributes. (line 90) * fcompare-debug: Developer Options. (line 750) * fcompare-debug-second: Developer Options. (line 776) ! * fcompare-elim: Optimize Options. (line 1915) * fconcepts: C++ Dialect Options. (line 114) * fcond-mismatch: C Dialect Options. (line 369) ! * fconserve-stack: Optimize Options. (line 932) * fconstant-string-class: Objective-C and Objective-C++ Dialect Options. (line 30) * fconstexpr-depth: C++ Dialect Options. (line 121) * fconstexpr-loop-limit: C++ Dialect Options. (line 127) ! * fcprop-registers: Optimize Options. (line 1927) ! * fcrossjumping: Optimize Options. (line 535) ! * fcse-follow-jumps: Optimize Options. (line 456) ! * fcse-skip-blocks: Optimize Options. (line 465) ! * fcx-fortran-rules: Optimize Options. (line 2212) ! * fcx-limited-range: Optimize Options. (line 2200) ! * fdata-sections: Optimize Options. (line 2333) * fdbg-cnt: Developer Options. (line 889) * fdbg-cnt-list: Developer Options. (line 886) ! * fdce: Optimize Options. (line 548) * fdebug-cpp: Preprocessor Options. (line 438) * fdebug-prefix-map: Debugging Options. (line 145) * fdebug-types-section: Debugging Options. (line 185) ! * fdeclone-ctor-dtor: Optimize Options. (line 571) * fdeduce-init-list: C++ Dialect Options. (line 132) ! * fdelayed-branch: Optimize Options. (line 725) * fdelete-dead-exceptions: Code Gen Options. (line 131) ! * fdelete-null-pointer-checks: Optimize Options. (line 582) ! * fdevirtualize: Optimize Options. (line 603) ! * fdevirtualize-at-ltrans: Optimize Options. (line 620) ! * fdevirtualize-speculatively: Optimize Options. (line 610) * fdiagnostics-color: Diagnostic Message Formatting Options. (line 35) * fdiagnostics-generate-patch: Diagnostic Message Formatting Options. --- 54750,54795 ---- * fchkp-use-wrappers: Instrumentation Options. (line 507) * fcilkplus: C Dialect Options. (line 316) ! * fcode-hoisting: Optimize Options. (line 945) ! * fcombine-stack-adjustments: Optimize Options. (line 916) * fcommon: Common Variable Attributes. (line 90) * fcompare-debug: Developer Options. (line 750) * fcompare-debug-second: Developer Options. (line 776) ! * fcompare-elim: Optimize Options. (line 1918) * fconcepts: C++ Dialect Options. (line 114) * fcond-mismatch: C Dialect Options. (line 369) ! * fconserve-stack: Optimize Options. (line 935) * fconstant-string-class: Objective-C and Objective-C++ Dialect Options. (line 30) * fconstexpr-depth: C++ Dialect Options. (line 121) * fconstexpr-loop-limit: C++ Dialect Options. (line 127) ! * fcprop-registers: Optimize Options. (line 1930) ! * fcrossjumping: Optimize Options. (line 538) ! * fcse-follow-jumps: Optimize Options. (line 459) ! * fcse-skip-blocks: Optimize Options. (line 468) ! * fcx-fortran-rules: Optimize Options. (line 2215) ! * fcx-limited-range: Optimize Options. (line 2203) ! * fdata-sections: Optimize Options. (line 2336) * fdbg-cnt: Developer Options. (line 889) * fdbg-cnt-list: Developer Options. (line 886) ! * fdce: Optimize Options. (line 551) * fdebug-cpp: Preprocessor Options. (line 438) * fdebug-prefix-map: Debugging Options. (line 145) * fdebug-types-section: Debugging Options. (line 185) ! * fdeclone-ctor-dtor: Optimize Options. (line 574) * fdeduce-init-list: C++ Dialect Options. (line 132) ! * fdelayed-branch: Optimize Options. (line 728) * fdelete-dead-exceptions: Code Gen Options. (line 131) ! * fdelete-null-pointer-checks: Optimize Options. (line 585) ! * fdevirtualize: Optimize Options. (line 606) ! * fdevirtualize-at-ltrans: Optimize Options. (line 623) ! * fdevirtualize-speculatively: Optimize Options. (line 613) * fdiagnostics-color: Diagnostic Message Formatting Options. (line 35) * fdiagnostics-generate-patch: Diagnostic Message Formatting Options. *************** look up both forms. *** 54697,54703 **** * fdollars-in-identifiers: Preprocessor Options. (line 220) * fdpic: SH Options. (line 393) ! * fdse: Optimize Options. (line 552) * fdump-ada-spec: Overall Options. (line 371) * fdump-class-hierarchy: Developer Options. (line 283) * fdump-final-insns: Developer Options. (line 744) --- 54809,54815 ---- * fdollars-in-identifiers: Preprocessor Options. (line 220) * fdpic: SH Options. (line 393) ! * fdse: Optimize Options. (line 555) * fdump-ada-spec: Overall Options. (line 371) * fdump-class-hierarchy: Developer Options. (line 283) * fdump-final-insns: Developer Options. (line 744) *************** look up both forms. *** 54779,54785 **** * fdump-unnumbered: Developer Options. (line 262) * fdump-unnumbered-links: Developer Options. (line 268) * fdwarf2-cfi-asm: Debugging Options. (line 307) ! * fearly-inlining: Optimize Options. (line 299) * feliminate-dwarf2-dups: Debugging Options. (line 233) * feliminate-unused-debug-symbols: Debugging Options. (line 126) * feliminate-unused-debug-types: Debugging Options. (line 311) --- 54891,54897 ---- * fdump-unnumbered: Developer Options. (line 262) * fdump-unnumbered-links: Developer Options. (line 268) * fdwarf2-cfi-asm: Debugging Options. (line 307) ! * fearly-inlining: Optimize Options. (line 302) * feliminate-dwarf2-dups: Debugging Options. (line 233) * feliminate-unused-debug-symbols: Debugging Options. (line 126) * feliminate-unused-debug-types: Debugging Options. (line 311) *************** look up both forms. *** 54789,54815 **** * femit-struct-debug-reduced: Debugging Options. (line 251) * fenable-: Developer Options. (line 588) * fexceptions: Code Gen Options. (line 108) ! * fexcess-precision: Optimize Options. (line 2009) * fexec-charset: Preprocessor Options. (line 254) ! * fexpensive-optimizations: Optimize Options. (line 627) * fext-numeric-literals: C++ Dialect Options. (line 665) * fextended-identifiers: Preprocessor Options. (line 223) * fextern-tls-init: C++ Dialect Options. (line 187) ! * ffast-math: Optimize Options. (line 2033) ! * ffat-lto-objects: Optimize Options. (line 1896) ! * ffinite-math-only: Optimize Options. (line 2107) * ffix-and-continue: Darwin Options. (line 104) * ffixed: Code Gen Options. (line 420) * ffloat-store <1>: Disappointments. (line 77) ! * ffloat-store: Optimize Options. (line 1995) * ffor-scope: C++ Dialect Options. (line 208) ! * fforward-propagate: Optimize Options. (line 202) ! * ffp-contract: Optimize Options. (line 211) * ffreestanding <1>: Common Function Attributes. (line 276) * ffreestanding <2>: Warning Options. (line 290) --- 54901,54927 ---- * femit-struct-debug-reduced: Debugging Options. (line 251) * fenable-: Developer Options. (line 588) * fexceptions: Code Gen Options. (line 108) ! * fexcess-precision: Optimize Options. (line 2012) * fexec-charset: Preprocessor Options. (line 254) ! * fexpensive-optimizations: Optimize Options. (line 630) * fext-numeric-literals: C++ Dialect Options. (line 665) * fextended-identifiers: Preprocessor Options. (line 223) * fextern-tls-init: C++ Dialect Options. (line 187) ! * ffast-math: Optimize Options. (line 2036) ! * ffat-lto-objects: Optimize Options. (line 1899) ! * ffinite-math-only: Optimize Options. (line 2110) * ffix-and-continue: Darwin Options. (line 104) * ffixed: Code Gen Options. (line 420) * ffloat-store <1>: Disappointments. (line 77) ! * ffloat-store: Optimize Options. (line 1998) * ffor-scope: C++ Dialect Options. (line 208) ! * fforward-propagate: Optimize Options. (line 204) ! * ffp-contract: Optimize Options. (line 213) * ffreestanding <1>: Common Function Attributes. (line 276) * ffreestanding <2>: Warning Options. (line 290) *************** look up both forms. *** 54817,54846 **** * ffreestanding: Standards. (line 91) * ffriend-injection: C++ Dialect Options. (line 153) ! * ffunction-sections: Optimize Options. (line 2333) ! * fgcse: Optimize Options. (line 479) ! * fgcse-after-reload: Optimize Options. (line 515) ! * fgcse-las: Optimize Options. (line 508) ! * fgcse-lm: Optimize Options. (line 490) ! * fgcse-sm: Optimize Options. (line 499) * fgimple: C Dialect Options. (line 268) * fgnu-runtime: Objective-C and Objective-C++ Dialect Options. (line 39) * fgnu-tm: C Dialect Options. (line 326) * fgnu89-inline: C Dialect Options. (line 158) ! * fgraphite-identity: Optimize Options. (line 1146) ! * fhoist-adjacent-loads: Optimize Options. (line 972) * fhosted: C Dialect Options. (line 273) ! * fif-conversion: Optimize Options. (line 556) ! * fif-conversion2: Optimize Options. (line 565) * filelist: Darwin Options. (line 196) * findirect-data: Darwin Options. (line 104) ! * findirect-inlining: Optimize Options. (line 272) * finhibit-size-directive: Code Gen Options. (line 251) ! * finline-functions: Optimize Options. (line 280) ! * finline-functions-called-once: Optimize Options. (line 291) ! * finline-limit: Optimize Options. (line 316) ! * finline-small-functions: Optimize Options. (line 263) * finput-charset: Preprocessor Options. (line 267) * finstrument-functions <1>: Common Function Attributes. --- 54929,54958 ---- * ffreestanding: Standards. (line 91) * ffriend-injection: C++ Dialect Options. (line 153) ! * ffunction-sections: Optimize Options. (line 2336) ! * fgcse: Optimize Options. (line 482) ! * fgcse-after-reload: Optimize Options. (line 518) ! * fgcse-las: Optimize Options. (line 511) ! * fgcse-lm: Optimize Options. (line 493) ! * fgcse-sm: Optimize Options. (line 502) * fgimple: C Dialect Options. (line 268) * fgnu-runtime: Objective-C and Objective-C++ Dialect Options. (line 39) * fgnu-tm: C Dialect Options. (line 326) * fgnu89-inline: C Dialect Options. (line 158) ! * fgraphite-identity: Optimize Options. (line 1149) ! * fhoist-adjacent-loads: Optimize Options. (line 975) * fhosted: C Dialect Options. (line 273) ! * fif-conversion: Optimize Options. (line 559) ! * fif-conversion2: Optimize Options. (line 568) * filelist: Darwin Options. (line 196) * findirect-data: Darwin Options. (line 104) ! * findirect-inlining: Optimize Options. (line 274) * finhibit-size-directive: Code Gen Options. (line 251) ! * finline-functions: Optimize Options. (line 282) ! * finline-functions-called-once: Optimize Options. (line 294) ! * finline-limit: Optimize Options. (line 319) ! * finline-small-functions: Optimize Options. (line 265) * finput-charset: Preprocessor Options. (line 267) * finstrument-functions <1>: Common Function Attributes. *************** look up both forms. *** 54851,54909 **** (line 698) * finstrument-functions-exclude-function-list: Instrumentation Options. (line 718) ! * fipa-cp: Optimize Options. (line 1005) ! * fipa-cp-clone: Optimize Options. (line 1013) ! * fipa-icf: Optimize Options. (line 1033) ! * fipa-profile: Optimize Options. (line 997) ! * fipa-pta: Optimize Options. (line 991) ! * fipa-pure-const: Optimize Options. (line 983) ! * fipa-ra: Optimize Options. (line 919) ! * fipa-reference: Optimize Options. (line 987) ! * fipa-sra: Optimize Options. (line 309) ! * fira-algorithm: Optimize Options. (line 661) ! * fira-hoist-pressure: Optimize Options. (line 691) ! * fira-loop-pressure: Optimize Options. (line 698) ! * fira-region: Optimize Options. (line 669) * fira-verbose: Developer Options. (line 813) ! * fisolate-erroneous-paths-attribute: Optimize Options. (line 1055) ! * fisolate-erroneous-paths-dereference: Optimize Options. (line 1047) * fivar-visibility: Objective-C and Objective-C++ Dialect Options. (line 162) ! * fivopts: Optimize Options. (line 1235) * fkeep-inline-functions <1>: Inline. (line 51) ! * fkeep-inline-functions: Optimize Options. (line 348) ! * fkeep-static-consts: Optimize Options. (line 359) ! * fkeep-static-functions: Optimize Options. (line 355) * flat_namespace: Darwin Options. (line 196) * flax-vector-conversions: C Dialect Options. (line 374) * fleading-underscore: Code Gen Options. (line 476) ! * flive-range-shrinkage: Optimize Options. (line 656) * flocal-ivars: Objective-C and Objective-C++ Dialect Options. (line 153) ! * floop-block: Optimize Options. (line 1140) ! * floop-interchange: Optimize Options. (line 1140) ! * floop-nest-optimize: Optimize Options. (line 1154) ! * floop-parallelize-all: Optimize Options. (line 1160) ! * floop-strip-mine: Optimize Options. (line 1140) ! * floop-unroll-and-jam: Optimize Options. (line 1140) ! * flra-remat: Optimize Options. (line 718) ! * flto: Optimize Options. (line 1657) ! * flto-compression-level: Optimize Options. (line 1870) ! * flto-odr-type-merging: Optimize Options. (line 1864) ! * flto-partition: Optimize Options. (line 1850) * flto-report: Developer Options. (line 819) * flto-report-wpa: Developer Options. (line 827) * fmax-errors: Warning Options. (line 18) * fmem-report: Developer Options. (line 831) * fmem-report-wpa: Developer Options. (line 835) ! * fmerge-all-constants: Optimize Options. (line 378) ! * fmerge-constants: Optimize Options. (line 368) * fmerge-debug-strings: Debugging Options. (line 138) * fmessage-length: Diagnostic Message Formatting Options. (line 14) ! * fmodulo-sched: Optimize Options. (line 389) ! * fmodulo-sched-allow-regmoves: Optimize Options. (line 394) ! * fmove-loop-invariants: Optimize Options. (line 2319) * fms-extensions <1>: Unnamed Fields. (line 36) * fms-extensions <2>: C++ Dialect Options. (line 243) --- 54963,55021 ---- (line 698) * finstrument-functions-exclude-function-list: Instrumentation Options. (line 718) ! * fipa-cp: Optimize Options. (line 1008) ! * fipa-cp-clone: Optimize Options. (line 1016) ! * fipa-icf: Optimize Options. (line 1036) ! * fipa-profile: Optimize Options. (line 1000) ! * fipa-pta: Optimize Options. (line 994) ! * fipa-pure-const: Optimize Options. (line 986) ! * fipa-ra: Optimize Options. (line 922) ! * fipa-reference: Optimize Options. (line 990) ! * fipa-sra: Optimize Options. (line 312) ! * fira-algorithm: Optimize Options. (line 664) ! * fira-hoist-pressure: Optimize Options. (line 694) ! * fira-loop-pressure: Optimize Options. (line 701) ! * fira-region: Optimize Options. (line 672) * fira-verbose: Developer Options. (line 813) ! * fisolate-erroneous-paths-attribute: Optimize Options. (line 1058) ! * fisolate-erroneous-paths-dereference: Optimize Options. (line 1050) * fivar-visibility: Objective-C and Objective-C++ Dialect Options. (line 162) ! * fivopts: Optimize Options. (line 1238) * fkeep-inline-functions <1>: Inline. (line 51) ! * fkeep-inline-functions: Optimize Options. (line 351) ! * fkeep-static-consts: Optimize Options. (line 362) ! * fkeep-static-functions: Optimize Options. (line 358) * flat_namespace: Darwin Options. (line 196) * flax-vector-conversions: C Dialect Options. (line 374) * fleading-underscore: Code Gen Options. (line 476) ! * flive-range-shrinkage: Optimize Options. (line 659) * flocal-ivars: Objective-C and Objective-C++ Dialect Options. (line 153) ! * floop-block: Optimize Options. (line 1143) ! * floop-interchange: Optimize Options. (line 1143) ! * floop-nest-optimize: Optimize Options. (line 1157) ! * floop-parallelize-all: Optimize Options. (line 1163) ! * floop-strip-mine: Optimize Options. (line 1143) ! * floop-unroll-and-jam: Optimize Options. (line 1143) ! * flra-remat: Optimize Options. (line 721) ! * flto: Optimize Options. (line 1660) ! * flto-compression-level: Optimize Options. (line 1873) ! * flto-odr-type-merging: Optimize Options. (line 1867) ! * flto-partition: Optimize Options. (line 1853) * flto-report: Developer Options. (line 819) * flto-report-wpa: Developer Options. (line 827) * fmax-errors: Warning Options. (line 18) * fmem-report: Developer Options. (line 831) * fmem-report-wpa: Developer Options. (line 835) ! * fmerge-all-constants: Optimize Options. (line 381) ! * fmerge-constants: Optimize Options. (line 371) * fmerge-debug-strings: Debugging Options. (line 138) * fmessage-length: Diagnostic Message Formatting Options. (line 14) ! * fmodulo-sched: Optimize Options. (line 392) ! * fmodulo-sched-allow-regmoves: Optimize Options. (line 397) ! * fmove-loop-invariants: Optimize Options. (line 2322) * fms-extensions <1>: Unnamed Fields. (line 36) * fms-extensions <2>: C++ Dialect Options. (line 243) *************** look up both forms. *** 54917,54923 **** * fno-access-control: C++ Dialect Options. (line 92) * fno-asm: C Dialect Options. (line 220) ! * fno-branch-count-reg: Optimize Options. (line 401) * fno-builtin <1>: Other Builtins. (line 21) * fno-builtin <2>: Common Function Attributes. (line 276) --- 55029,55035 ---- * fno-access-control: C++ Dialect Options. (line 92) * fno-asm: C Dialect Options. (line 220) ! * fno-branch-count-reg: Optimize Options. (line 404) * fno-builtin <1>: Other Builtins. (line 21) * fno-builtin <2>: Common Function Attributes. (line 276) *************** look up both forms. *** 54968,54974 **** * fno-compare-debug: Developer Options. (line 750) * fno-debug-types-section: Debugging Options. (line 185) * fno-default-inline: Inline. (line 68) ! * fno-defer-pop: Optimize Options. (line 194) * fno-diagnostics-show-caret: Diagnostic Message Formatting Options. (line 119) * fno-diagnostics-show-option: Diagnostic Message Formatting Options. --- 55080,55086 ---- * fno-compare-debug: Developer Options. (line 750) * fno-debug-types-section: Debugging Options. (line 185) * fno-default-inline: Inline. (line 68) ! * fno-defer-pop: Optimize Options. (line 196) * fno-diagnostics-show-caret: Diagnostic Message Formatting Options. (line 119) * fno-diagnostics-show-option: Diagnostic Message Formatting Options. *************** look up both forms. *** 54985,54996 **** (line 187) * fno-for-scope: C++ Dialect Options. (line 208) ! * fno-fp-int-builtin-inexact: Optimize Options. (line 2179) ! * fno-function-cse: Optimize Options. (line 416) * fno-gnu-keywords: C++ Dialect Options. (line 220) * fno-gnu-unique: Code Gen Options. (line 152) ! * fno-guess-branch-probability: Optimize Options. (line 1403) * fno-ident: Code Gen Options. (line 248) * fno-implement-inlines <1>: C++ Interface. (line 66) * fno-implement-inlines: C++ Dialect Options. --- 55097,55108 ---- (line 187) * fno-for-scope: C++ Dialect Options. (line 208) ! * fno-fp-int-builtin-inexact: Optimize Options. (line 2182) ! * fno-function-cse: Optimize Options. (line 419) * fno-gnu-keywords: C++ Dialect Options. (line 220) * fno-gnu-unique: Code Gen Options. (line 152) ! * fno-guess-branch-probability: Optimize Options. (line 1406) * fno-ident: Code Gen Options. (line 248) * fno-implement-inlines <1>: C++ Interface. (line 66) * fno-implement-inlines: C++ Dialect Options. *************** look up both forms. *** 55001,55015 **** (line 118) * fno-implicit-templates: C++ Dialect Options. (line 226) ! * fno-inline: Optimize Options. (line 255) ! * fno-ira-share-save-slots: Optimize Options. (line 706) ! * fno-ira-share-spill-slots: Optimize Options. (line 712) * fno-jump-tables: Code Gen Options. (line 412) ! * fno-keep-inline-dllexport: Optimize Options. (line 342) ! * fno-lifetime-dse: Optimize Options. (line 641) * fno-local-ivars: Objective-C and Objective-C++ Dialect Options. (line 153) ! * fno-math-errno: Optimize Options. (line 2047) * fno-merge-debug-strings: Debugging Options. (line 138) * fno-nil-receivers: Objective-C and Objective-C++ Dialect Options. (line 49) --- 55113,55127 ---- (line 118) * fno-implicit-templates: C++ Dialect Options. (line 226) ! * fno-inline: Optimize Options. (line 257) ! * fno-ira-share-save-slots: Optimize Options. (line 709) ! * fno-ira-share-spill-slots: Optimize Options. (line 715) * fno-jump-tables: Code Gen Options. (line 412) ! * fno-keep-inline-dllexport: Optimize Options. (line 345) ! * fno-lifetime-dse: Optimize Options. (line 644) * fno-local-ivars: Objective-C and Objective-C++ Dialect Options. (line 153) ! * fno-math-errno: Optimize Options. (line 2050) * fno-merge-debug-strings: Debugging Options. (line 138) * fno-nil-receivers: Objective-C and Objective-C++ Dialect Options. (line 49) *************** look up both forms. *** 55019,55050 **** (line 277) * fno-optional-diags: C++ Dialect Options. (line 281) ! * fno-peephole: Optimize Options. (line 1394) ! * fno-peephole2: Optimize Options. (line 1394) * fno-plt: Code Gen Options. (line 394) * fno-pretty-templates: C++ Dialect Options. (line 291) ! * fno-printf-return-value: Optimize Options. (line 1371) * fno-rtti: C++ Dialect Options. (line 308) * fno-sanitize-recover: Instrumentation Options. (line 334) * fno-sanitize=all: Instrumentation Options. (line 320) ! * fno-sched-interblock: Optimize Options. (line 751) ! * fno-sched-spec: Optimize Options. (line 756) * fno-set-stack-executable: x86 Windows Options. (line 46) * fno-show-column: Diagnostic Message Formatting Options. (line 172) * fno-signed-bitfields: C Dialect Options. (line 407) ! * fno-signed-zeros: Optimize Options. (line 2119) * fno-stack-limit: Instrumentation Options. (line 574) * fno-threadsafe-statics: C++ Dialect Options. (line 358) ! * fno-toplevel-reorder: Optimize Options. (line 1623) ! * fno-trapping-math: Optimize Options. (line 2129) * fno-unsigned-bitfields: C Dialect Options. (line 407) * fno-use-cxa-get-exception-ptr: C++ Dialect Options. (line 371) --- 55131,55162 ---- (line 277) * fno-optional-diags: C++ Dialect Options. (line 281) ! * fno-peephole: Optimize Options. (line 1397) ! * fno-peephole2: Optimize Options. (line 1397) * fno-plt: Code Gen Options. (line 394) * fno-pretty-templates: C++ Dialect Options. (line 291) ! * fno-printf-return-value: Optimize Options. (line 1374) * fno-rtti: C++ Dialect Options. (line 308) * fno-sanitize-recover: Instrumentation Options. (line 334) * fno-sanitize=all: Instrumentation Options. (line 320) ! * fno-sched-interblock: Optimize Options. (line 754) ! * fno-sched-spec: Optimize Options. (line 759) * fno-set-stack-executable: x86 Windows Options. (line 46) * fno-show-column: Diagnostic Message Formatting Options. (line 172) * fno-signed-bitfields: C Dialect Options. (line 407) ! * fno-signed-zeros: Optimize Options. (line 2122) * fno-stack-limit: Instrumentation Options. (line 574) * fno-threadsafe-statics: C++ Dialect Options. (line 358) ! * fno-toplevel-reorder: Optimize Options. (line 1626) ! * fno-trapping-math: Optimize Options. (line 2132) * fno-unsigned-bitfields: C Dialect Options. (line 407) * fno-use-cxa-get-exception-ptr: C++ Dialect Options. (line 371) *************** look up both forms. *** 55056,55062 **** (line 302) * fno-writable-relocated-rdata: x86 Windows Options. (line 53) ! * fno-zero-initialized-in-bss: Optimize Options. (line 427) * fnon-call-exceptions: Code Gen Options. (line 122) * fnothrow-opt: C++ Dialect Options. (line 266) --- 55168,55174 ---- (line 302) * fno-writable-relocated-rdata: x86 Windows Options. (line 53) ! * fno-zero-initialized-in-bss: Optimize Options. (line 430) * fnon-call-exceptions: Code Gen Options. (line 122) * fnothrow-opt: C++ Dialect Options. (line 266) *************** look up both forms. *** 55074,55098 **** (line 111) * fobjc-std: Objective-C and Objective-C++ Dialect Options. (line 120) ! * fomit-frame-pointer: Optimize Options. (line 222) * fopenacc: C Dialect Options. (line 290) * fopenacc-dim: C Dialect Options. (line 298) * fopenmp: C Dialect Options. (line 304) * fopenmp-simd: C Dialect Options. (line 312) * fopt-info: Developer Options. (line 471) ! * foptimize-sibling-calls: Optimize Options. (line 243) ! * foptimize-strlen: Optimize Options. (line 248) * force_cpusubtype_ALL: Darwin Options. (line 135) * force_flat_namespace: Darwin Options. (line 196) * fpack-struct: Code Gen Options. (line 463) ! * fpartial-inlining: Optimize Options. (line 1347) * fpcc-struct-return <1>: Incompatibilities. (line 170) * fpcc-struct-return: Code Gen Options. (line 165) * fpch-deps: Preprocessor Options. (line 277) * fpch-preprocess: Preprocessor Options. (line 285) ! * fpeel-loops: Optimize Options. (line 2311) * fpermissive: C++ Dialect Options. (line 286) * fpermitted-flt-eval-methods: C Dialect Options. (line 175) --- 55186,55210 ---- (line 111) * fobjc-std: Objective-C and Objective-C++ Dialect Options. (line 120) ! * fomit-frame-pointer: Optimize Options. (line 224) * fopenacc: C Dialect Options. (line 290) * fopenacc-dim: C Dialect Options. (line 298) * fopenmp: C Dialect Options. (line 304) * fopenmp-simd: C Dialect Options. (line 312) * fopt-info: Developer Options. (line 471) ! * foptimize-sibling-calls: Optimize Options. (line 245) ! * foptimize-strlen: Optimize Options. (line 250) * force_cpusubtype_ALL: Darwin Options. (line 135) * force_flat_namespace: Darwin Options. (line 196) * fpack-struct: Code Gen Options. (line 463) ! * fpartial-inlining: Optimize Options. (line 1350) * fpcc-struct-return <1>: Incompatibilities. (line 170) * fpcc-struct-return: Code Gen Options. (line 165) * fpch-deps: Preprocessor Options. (line 277) * fpch-preprocess: Preprocessor Options. (line 285) ! * fpeel-loops: Optimize Options. (line 2314) * fpermissive: C++ Dialect Options. (line 286) * fpermitted-flt-eval-methods: C Dialect Options. (line 175) *************** look up both forms. *** 55108,55142 **** * fplugin-arg: Overall Options. (line 367) * fpost-ipa-mem-report: Developer Options. (line 841) * fpre-ipa-mem-report: Developer Options. (line 839) ! * fpredictive-commoning: Optimize Options. (line 1354) ! * fprefetch-loop-arrays: Optimize Options. (line 1361) * fpreprocessed: Preprocessor Options. (line 185) * fprofile-arcs <1>: Other Builtins. (line 368) * fprofile-arcs: Instrumentation Options. (line 31) ! * fprofile-correction: Optimize Options. (line 1934) * fprofile-dir: Instrumentation Options. (line 101) * fprofile-generate: Instrumentation Options. (line 111) ! * fprofile-reorder-functions: Optimize Options. (line 2253) * fprofile-report: Developer Options. (line 845) * fprofile-update: Instrumentation Options. (line 127) ! * fprofile-use: Optimize Options. (line 1942) ! * fprofile-values: Optimize Options. (line 2244) * fpu: RX Options. (line 17) * frandom-seed: Developer Options. (line 661) ! * freciprocal-math: Optimize Options. (line 2098) * frecord-gcc-switches: Code Gen Options. (line 338) ! * free: Optimize Options. (line 633) * freg-struct-return: Code Gen Options. (line 183) ! * frename-registers: Optimize Options. (line 2270) ! * freorder-blocks: Optimize Options. (line 1420) ! * freorder-blocks-algorithm: Optimize Options. (line 1426) ! * freorder-blocks-and-partition: Optimize Options. (line 1437) ! * freorder-functions: Optimize Options. (line 1450) * freplace-objc-classes: Objective-C and Objective-C++ Dialect Options. (line 131) * frepo <1>: Template Instantiation. --- 55220,55254 ---- * fplugin-arg: Overall Options. (line 367) * fpost-ipa-mem-report: Developer Options. (line 841) * fpre-ipa-mem-report: Developer Options. (line 839) ! * fpredictive-commoning: Optimize Options. (line 1357) ! * fprefetch-loop-arrays: Optimize Options. (line 1364) * fpreprocessed: Preprocessor Options. (line 185) * fprofile-arcs <1>: Other Builtins. (line 368) * fprofile-arcs: Instrumentation Options. (line 31) ! * fprofile-correction: Optimize Options. (line 1937) * fprofile-dir: Instrumentation Options. (line 101) * fprofile-generate: Instrumentation Options. (line 111) ! * fprofile-reorder-functions: Optimize Options. (line 2256) * fprofile-report: Developer Options. (line 845) * fprofile-update: Instrumentation Options. (line 127) ! * fprofile-use: Optimize Options. (line 1945) ! * fprofile-values: Optimize Options. (line 2247) * fpu: RX Options. (line 17) * frandom-seed: Developer Options. (line 661) ! * freciprocal-math: Optimize Options. (line 2101) * frecord-gcc-switches: Code Gen Options. (line 338) ! * free: Optimize Options. (line 636) * freg-struct-return: Code Gen Options. (line 183) ! * frename-registers: Optimize Options. (line 2273) ! * freorder-blocks: Optimize Options. (line 1423) ! * freorder-blocks-algorithm: Optimize Options. (line 1429) ! * freorder-blocks-and-partition: Optimize Options. (line 1440) ! * freorder-functions: Optimize Options. (line 1453) * freplace-objc-classes: Objective-C and Objective-C++ Dialect Options. (line 131) * frepo <1>: Template Instantiation. *************** look up both forms. *** 55144,55152 **** * frepo: C++ Dialect Options. (line 303) * freport-bug: Developer Options. (line 258) ! * frerun-cse-after-loop: Optimize Options. (line 473) ! * freschedule-modulo-scheduled-loops: Optimize Options. (line 850) ! * frounding-math: Optimize Options. (line 2144) * fsanitize-address-use-after-scope: Instrumentation Options. (line 371) * fsanitize-coverage=trace-pc: Instrumentation Options. --- 55256,55264 ---- * frepo: C++ Dialect Options. (line 303) * freport-bug: Developer Options. (line 258) ! * frerun-cse-after-loop: Optimize Options. (line 476) ! * freschedule-modulo-scheduled-loops: Optimize Options. (line 853) ! * frounding-math: Optimize Options. (line 2147) * fsanitize-address-use-after-scope: Instrumentation Options. (line 371) * fsanitize-coverage=trace-pc: Instrumentation Options. *************** look up both forms. *** 55207,55234 **** (line 222) * fsanitize=vptr: Instrumentation Options. (line 309) ! * fsched-critical-path-heuristic: Optimize Options. (line 816) ! * fsched-dep-count-heuristic: Optimize Options. (line 843) ! * fsched-group-heuristic: Optimize Options. (line 810) ! * fsched-last-insn-heuristic: Optimize Options. (line 836) ! * fsched-pressure: Optimize Options. (line 761) ! * fsched-rank-heuristic: Optimize Options. (line 829) ! * fsched-spec-insn-heuristic: Optimize Options. (line 822) ! * fsched-spec-load: Optimize Options. (line 770) ! * fsched-spec-load-dangerous: Optimize Options. (line 775) ! * fsched-stalled-insns: Optimize Options. (line 781) ! * fsched-stalled-insns-dep: Optimize Options. (line 791) * fsched-verbose: Developer Options. (line 574) ! * fsched2-use-superblocks: Optimize Options. (line 800) ! * fschedule-fusion: Optimize Options. (line 2280) ! * fschedule-insns: Optimize Options. (line 732) ! * fschedule-insns2: Optimize Options. (line 742) ! * fsection-anchors: Optimize Options. (line 2370) ! * fsel-sched-pipelining: Optimize Options. (line 863) ! * fsel-sched-pipelining-outer-loops: Optimize Options. (line 868) ! * fselective-scheduling: Optimize Options. (line 855) ! * fselective-scheduling2: Optimize Options. (line 859) ! * fsemantic-interposition: Optimize Options. (line 873) * fshort-enums <1>: Non-bugs. (line 42) * fshort-enums <2>: Common Type Attributes. (line 193) --- 55319,55346 ---- (line 222) * fsanitize=vptr: Instrumentation Options. (line 309) ! * fsched-critical-path-heuristic: Optimize Options. (line 819) ! * fsched-dep-count-heuristic: Optimize Options. (line 846) ! * fsched-group-heuristic: Optimize Options. (line 813) ! * fsched-last-insn-heuristic: Optimize Options. (line 839) ! * fsched-pressure: Optimize Options. (line 764) ! * fsched-rank-heuristic: Optimize Options. (line 832) ! * fsched-spec-insn-heuristic: Optimize Options. (line 825) ! * fsched-spec-load: Optimize Options. (line 773) ! * fsched-spec-load-dangerous: Optimize Options. (line 778) ! * fsched-stalled-insns: Optimize Options. (line 784) ! * fsched-stalled-insns-dep: Optimize Options. (line 794) * fsched-verbose: Developer Options. (line 574) ! * fsched2-use-superblocks: Optimize Options. (line 803) ! * fschedule-fusion: Optimize Options. (line 2283) ! * fschedule-insns: Optimize Options. (line 735) ! * fschedule-insns2: Optimize Options. (line 745) ! * fsection-anchors: Optimize Options. (line 2373) ! * fsel-sched-pipelining: Optimize Options. (line 866) ! * fsel-sched-pipelining-outer-loops: Optimize Options. (line 871) ! * fselective-scheduling: Optimize Options. (line 858) ! * fselective-scheduling2: Optimize Options. (line 862) ! * fsemantic-interposition: Optimize Options. (line 876) * fshort-enums <1>: Non-bugs. (line 42) * fshort-enums <2>: Common Type Attributes. (line 193) *************** look up both forms. *** 55236,55263 **** (line 48) * fshort-enums: Code Gen Options. (line 201) * fshort-wchar: Code Gen Options. (line 211) ! * fshrink-wrap: Optimize Options. (line 890) ! * fshrink-wrap-separate: Optimize Options. (line 895) ! * fsignaling-nans: Optimize Options. (line 2164) * fsigned-bitfields <1>: Non-bugs. (line 57) * fsigned-bitfields: C Dialect Options. (line 407) * fsigned-char <1>: Characters implementation. (line 31) * fsigned-char: C Dialect Options. (line 397) ! * fsimd-cost-model: Optimize Options. (line 1307) ! * fsingle-precision-constant: Optimize Options. (line 2196) * fsized-deallocation: C++ Dialect Options. (line 318) ! * fsplit-ivs-in-unroller: Optimize Options. (line 1328) ! * fsplit-loops: Optimize Options. (line 2323) ! * fsplit-paths: Optimize Options. (line 1323) * fsplit-stack <1>: Common Function Attributes. (line 536) * fsplit-stack: Instrumentation Options. (line 591) ! * fsplit-wide-types: Optimize Options. (line 448) ! * fssa-backprop: Optimize Options. (line 1078) ! * fssa-phiopt: Optimize Options. (line 1084) * fsso-struct: C Dialect Options. (line 413) * fstack-check: Instrumentation Options. (line 535) --- 55348,55375 ---- (line 48) * fshort-enums: Code Gen Options. (line 201) * fshort-wchar: Code Gen Options. (line 211) ! * fshrink-wrap: Optimize Options. (line 893) ! * fshrink-wrap-separate: Optimize Options. (line 898) ! * fsignaling-nans: Optimize Options. (line 2167) * fsigned-bitfields <1>: Non-bugs. (line 57) * fsigned-bitfields: C Dialect Options. (line 407) * fsigned-char <1>: Characters implementation. (line 31) * fsigned-char: C Dialect Options. (line 397) ! * fsimd-cost-model: Optimize Options. (line 1310) ! * fsingle-precision-constant: Optimize Options. (line 2199) * fsized-deallocation: C++ Dialect Options. (line 318) ! * fsplit-ivs-in-unroller: Optimize Options. (line 1331) ! * fsplit-loops: Optimize Options. (line 2326) ! * fsplit-paths: Optimize Options. (line 1326) * fsplit-stack <1>: Common Function Attributes. (line 536) * fsplit-stack: Instrumentation Options. (line 591) ! * fsplit-wide-types: Optimize Options. (line 451) ! * fssa-backprop: Optimize Options. (line 1081) ! * fssa-phiopt: Optimize Options. (line 1087) * fsso-struct: C Dialect Options. (line 413) * fstack-check: Instrumentation Options. (line 535) *************** look up both forms. *** 55276,55287 **** * fstack-usage: Developer Options. (line 849) * fstack_reuse: Code Gen Options. (line 15) * fstats: Developer Options. (line 880) ! * fstdarg-opt: Optimize Options. (line 2366) ! * fstore-merging: Optimize Options. (line 1259) ! * fstrict-aliasing: Optimize Options. (line 1463) * fstrict-enums: C++ Dialect Options. (line 328) ! * fstrict-overflow: Optimize Options. (line 1509) * fstrict-volatile-bitfields: Code Gen Options. (line 587) * fstrong-eval-order: C++ Dialect Options. (line 337) --- 55388,55399 ---- * fstack-usage: Developer Options. (line 849) * fstack_reuse: Code Gen Options. (line 15) * fstats: Developer Options. (line 880) ! * fstdarg-opt: Optimize Options. (line 2369) ! * fstore-merging: Optimize Options. (line 1262) ! * fstrict-aliasing: Optimize Options. (line 1466) * fstrict-enums: C++ Dialect Options. (line 328) ! * fstrict-overflow: Optimize Options. (line 1512) * fstrict-volatile-bitfields: Code Gen Options. (line 587) * fstrong-eval-order: C++ Dialect Options. (line 337) *************** look up both forms. *** 55295,55348 **** (line 349) * ftest-coverage: Instrumentation Options. (line 92) ! * fthread-jumps: Optimize Options. (line 439) * ftime-report: Developer Options. (line 805) * ftime-report-details: Developer Options. (line 809) * ftls-model: Code Gen Options. (line 487) ! * ftracer: Optimize Options. (line 2288) * ftrack-macro-expansion: Preprocessor Options. (line 237) * ftrampolines: Code Gen Options. (line 498) * ftrapv: Code Gen Options. (line 90) ! * ftree-bit-ccp: Optimize Options. (line 1067) ! * ftree-builtin-call-dce: Optimize Options. (line 1105) ! * ftree-ccp: Optimize Options. (line 1073) ! * ftree-ch: Optimize Options. (line 1125) ! * ftree-coalesce-vars: Optimize Options. (line 1166) ! * ftree-copy-prop: Optimize Options. (line 978) ! * ftree-dce: Optimize Options. (line 1101) ! * ftree-dominator-opts: Optimize Options. (line 1111) ! * ftree-dse: Optimize Options. (line 1118) ! * ftree-forwprop: Optimize Options. (line 957) ! * ftree-fre: Optimize Options. (line 961) ! * ftree-loop-distribute-patterns: Optimize Options. (line 1200) ! * ftree-loop-distribution: Optimize Options. (line 1183) ! * ftree-loop-if-convert: Optimize Options. (line 1176) ! * ftree-loop-im: Optimize Options. (line 1220) ! * ftree-loop-ivcanon: Optimize Options. (line 1229) ! * ftree-loop-linear: Optimize Options. (line 1140) ! * ftree-loop-optimize: Optimize Options. (line 1132) ! * ftree-loop-vectorize: Optimize Options. (line 1285) ! * ftree-parallelize-loops: Optimize Options. (line 1240) ! * ftree-partial-pre: Optimize Options. (line 953) ! * ftree-phiprop: Optimize Options. (line 968) ! * ftree-pre: Optimize Options. (line 949) ! * ftree-pta: Optimize Options. (line 1249) ! * ftree-reassoc: Optimize Options. (line 938) ! * ftree-sink: Optimize Options. (line 1063) ! * ftree-slp-vectorize: Optimize Options. (line 1289) ! * ftree-slsr: Optimize Options. (line 1274) ! * ftree-sra: Optimize Options. (line 1253) ! * ftree-switch-conversion: Optimize Options. (line 1088) ! * ftree-tail-merge: Optimize Options. (line 1093) ! * ftree-ter: Optimize Options. (line 1266) ! * ftree-vectorize: Optimize Options. (line 1280) ! * ftree-vrp: Optimize Options. (line 1314) ! * funconstrained-commons: Optimize Options. (line 529) ! * funit-at-a-time: Optimize Options. (line 1616) ! * funroll-all-loops: Optimize Options. (line 2305) ! * funroll-loops: Optimize Options. (line 2295) ! * funsafe-math-optimizations: Optimize Options. (line 2065) * funsigned-bitfields <1>: Non-bugs. (line 57) * funsigned-bitfields <2>: Structures unions enumerations and bit-fields implementation. (line 17) --- 55407,55460 ---- (line 349) * ftest-coverage: Instrumentation Options. (line 92) ! * fthread-jumps: Optimize Options. (line 442) * ftime-report: Developer Options. (line 805) * ftime-report-details: Developer Options. (line 809) * ftls-model: Code Gen Options. (line 487) ! * ftracer: Optimize Options. (line 2291) * ftrack-macro-expansion: Preprocessor Options. (line 237) * ftrampolines: Code Gen Options. (line 498) * ftrapv: Code Gen Options. (line 90) ! * ftree-bit-ccp: Optimize Options. (line 1070) ! * ftree-builtin-call-dce: Optimize Options. (line 1108) ! * ftree-ccp: Optimize Options. (line 1076) ! * ftree-ch: Optimize Options. (line 1128) ! * ftree-coalesce-vars: Optimize Options. (line 1169) ! * ftree-copy-prop: Optimize Options. (line 981) ! * ftree-dce: Optimize Options. (line 1104) ! * ftree-dominator-opts: Optimize Options. (line 1114) ! * ftree-dse: Optimize Options. (line 1121) ! * ftree-forwprop: Optimize Options. (line 960) ! * ftree-fre: Optimize Options. (line 964) ! * ftree-loop-distribute-patterns: Optimize Options. (line 1203) ! * ftree-loop-distribution: Optimize Options. (line 1186) ! * ftree-loop-if-convert: Optimize Options. (line 1179) ! * ftree-loop-im: Optimize Options. (line 1223) ! * ftree-loop-ivcanon: Optimize Options. (line 1232) ! * ftree-loop-linear: Optimize Options. (line 1143) ! * ftree-loop-optimize: Optimize Options. (line 1135) ! * ftree-loop-vectorize: Optimize Options. (line 1288) ! * ftree-parallelize-loops: Optimize Options. (line 1243) ! * ftree-partial-pre: Optimize Options. (line 956) ! * ftree-phiprop: Optimize Options. (line 971) ! * ftree-pre: Optimize Options. (line 952) ! * ftree-pta: Optimize Options. (line 1252) ! * ftree-reassoc: Optimize Options. (line 941) ! * ftree-sink: Optimize Options. (line 1066) ! * ftree-slp-vectorize: Optimize Options. (line 1292) ! * ftree-slsr: Optimize Options. (line 1277) ! * ftree-sra: Optimize Options. (line 1256) ! * ftree-switch-conversion: Optimize Options. (line 1091) ! * ftree-tail-merge: Optimize Options. (line 1096) ! * ftree-ter: Optimize Options. (line 1269) ! * ftree-vectorize: Optimize Options. (line 1283) ! * ftree-vrp: Optimize Options. (line 1317) ! * funconstrained-commons: Optimize Options. (line 532) ! * funit-at-a-time: Optimize Options. (line 1619) ! * funroll-all-loops: Optimize Options. (line 2308) ! * funroll-loops: Optimize Options. (line 2298) ! * funsafe-math-optimizations: Optimize Options. (line 2068) * funsigned-bitfields <1>: Non-bugs. (line 57) * funsigned-bitfields <2>: Structures unions enumerations and bit-fields implementation. (line 17) *************** look up both forms. *** 55350,55382 **** * funsigned-char <1>: Characters implementation. (line 31) * funsigned-char: C Dialect Options. (line 379) ! * funswitch-loops: Optimize Options. (line 2327) * funwind-tables: Code Gen Options. (line 139) * fuse-cxa-atexit: C++ Dialect Options. (line 364) * fuse-ld=bfd: Link Options. (line 25) * fuse-ld=gold: Link Options. (line 28) ! * fuse-linker-plugin: Optimize Options. (line 1878) * fvar-tracking: Debugging Options. (line 149) * fvar-tracking-assignments: Debugging Options. (line 159) * fvar-tracking-assignments-toggle: Developer Options. (line 797) ! * fvariable-expansion-in-unroller: Optimize Options. (line 1342) ! * fvect-cost-model: Optimize Options. (line 1293) * fverbose-asm: Code Gen Options. (line 258) * fvisibility: Code Gen Options. (line 522) * fvisibility-inlines-hidden: C++ Dialect Options. (line 376) * fvisibility-ms-compat: C++ Dialect Options. (line 404) ! * fvpt: Optimize Options. (line 2260) * fvtable-verify: Instrumentation Options. (line 609) * fvtv-counts: Instrumentation Options. (line 645) * fvtv-debug: Instrumentation Options. (line 632) ! * fweb: Optimize Options. (line 1635) ! * fwhole-program: Optimize Options. (line 1646) * fwide-exec-charset: Preprocessor Options. (line 259) * fworking-directory: Preprocessor Options. --- 55462,55494 ---- * funsigned-char <1>: Characters implementation. (line 31) * funsigned-char: C Dialect Options. (line 379) ! * funswitch-loops: Optimize Options. (line 2330) * funwind-tables: Code Gen Options. (line 139) * fuse-cxa-atexit: C++ Dialect Options. (line 364) * fuse-ld=bfd: Link Options. (line 25) * fuse-ld=gold: Link Options. (line 28) ! * fuse-linker-plugin: Optimize Options. (line 1881) * fvar-tracking: Debugging Options. (line 149) * fvar-tracking-assignments: Debugging Options. (line 159) * fvar-tracking-assignments-toggle: Developer Options. (line 797) ! * fvariable-expansion-in-unroller: Optimize Options. (line 1345) ! * fvect-cost-model: Optimize Options. (line 1296) * fverbose-asm: Code Gen Options. (line 258) * fvisibility: Code Gen Options. (line 522) * fvisibility-inlines-hidden: C++ Dialect Options. (line 376) * fvisibility-ms-compat: C++ Dialect Options. (line 404) ! * fvpt: Optimize Options. (line 2263) * fvtable-verify: Instrumentation Options. (line 609) * fvtv-counts: Instrumentation Options. (line 645) * fvtv-debug: Instrumentation Options. (line 632) ! * fweb: Optimize Options. (line 1638) ! * fwhole-program: Optimize Options. (line 1649) * fwide-exec-charset: Preprocessor Options. (line 259) * fworking-directory: Preprocessor Options. *************** look up both forms. *** 55386,55392 **** (line 141) * G <1>: System V Options. (line 10) * G <2>: RS/6000 and PowerPC Options. ! (line 830) * G <3>: Nios II Options. (line 9) * G <4>: MIPS Options. (line 439) * G: M32R/D Options. (line 57) --- 55498,55504 ---- (line 141) * G <1>: System V Options. (line 10) * G <2>: RS/6000 and PowerPC Options. ! (line 832) * G <3>: Nios II Options. (line 9) * G <4>: MIPS Options. (line 439) * G: M32R/D Options. (line 57) *************** look up both forms. *** 55545,55558 **** * mabi=64: MIPS Options. (line 157) * mabi=eabi: MIPS Options. (line 157) * mabi=elfv1: RS/6000 and PowerPC Options. ! (line 708) * mabi=elfv2: RS/6000 and PowerPC Options. ! (line 714) * mabi=gnu: MMIX Options. (line 20) * mabi=ibmlongdouble: RS/6000 and PowerPC Options. (line 700) * mabi=ieeelongdouble: RS/6000 and PowerPC Options. ! (line 704) * mabi=mmixware: MMIX Options. (line 20) * mabi=n32: MIPS Options. (line 157) * mabi=no-spe: RS/6000 and PowerPC Options. --- 55657,55670 ---- * mabi=64: MIPS Options. (line 157) * mabi=eabi: MIPS Options. (line 157) * mabi=elfv1: RS/6000 and PowerPC Options. ! (line 710) * mabi=elfv2: RS/6000 and PowerPC Options. ! (line 716) * mabi=gnu: MMIX Options. (line 20) * mabi=ibmlongdouble: RS/6000 and PowerPC Options. (line 700) * mabi=ieeelongdouble: RS/6000 and PowerPC Options. ! (line 705) * mabi=mmixware: MMIX Options. (line 20) * mabi=n32: MIPS Options. (line 157) * mabi=no-spe: RS/6000 and PowerPC Options. *************** look up both forms. *** 55578,55584 **** * maddress-mode=short: x86 Options. (line 1283) * maddress-space-conversion: SPU Options. (line 63) * mads: RS/6000 and PowerPC Options. ! (line 748) * maes: x86 Options. (line 693) * maix-struct-return: RS/6000 and PowerPC Options. (line 680) --- 55690,55696 ---- * maddress-mode=short: x86 Options. (line 1283) * maddress-space-conversion: SPU Options. (line 63) * mads: RS/6000 and PowerPC Options. ! (line 750) * maes: x86 Options. (line 693) * maix-struct-return: RS/6000 and PowerPC Options. (line 680) *************** look up both forms. *** 55699,55705 **** * mbitops <1>: SH Options. (line 145) * mbitops: MeP Options. (line 26) * mblock-move-inline-limit: RS/6000 and PowerPC Options. ! (line 824) * mbmi: x86 Options. (line 708) * mbranch-cheap: PDP-11 Options. (line 65) * mbranch-cost <1>: RISC-V Options. (line 9) --- 55811,55817 ---- * mbitops <1>: SH Options. (line 145) * mbitops: MeP Options. (line 26) * mblock-move-inline-limit: RS/6000 and PowerPC Options. ! (line 826) * mbmi: x86 Options. (line 708) * mbranch-cheap: PDP-11 Options. (line 65) * mbranch-cost <1>: RISC-V Options. (line 9) *************** look up both forms. *** 55788,55794 **** * mcompact-branches=optimal: MIPS Options. (line 782) * mcompact-casesi: ARC Options. (line 410) * mcompat-align-parm: RS/6000 and PowerPC Options. ! (line 1000) * mcond-exec: FRV Options. (line 152) * mcond-move: FRV Options. (line 128) * mconfig=: MeP Options. (line 39) --- 55900,55906 ---- * mcompact-branches=optimal: MIPS Options. (line 782) * mcompact-casesi: ARC Options. (line 410) * mcompat-align-parm: RS/6000 and PowerPC Options. ! (line 1002) * mcond-exec: FRV Options. (line 152) * mcond-move: FRV Options. (line 128) * mconfig=: MeP Options. (line 39) *************** look up both forms. *** 55892,55898 **** * mea32: SPU Options. (line 55) * mea64: SPU Options. (line 55) * meabi: RS/6000 and PowerPC Options. ! (line 767) * mearly-cbranchsi: ARC Options. (line 432) * mearly-stop-bits: IA-64 Options. (line 100) * meb <1>: Score Options. (line 9) --- 56004,56010 ---- * mea32: SPU Options. (line 55) * mea64: SPU Options. (line 55) * meabi: RS/6000 and PowerPC Options. ! (line 769) * mearly-cbranchsi: ARC Options. (line 432) * mearly-stop-bits: IA-64 Options. (line 100) * meb <1>: Score Options. (line 9) *************** look up both forms. *** 55906,55912 **** * melf <1>: MMIX Options. (line 44) * melf: CRIS Options. (line 87) * memb: RS/6000 and PowerPC Options. ! (line 762) * membedded-data: MIPS Options. (line 497) * memregs=: M32C Options. (line 21) * mep: V850 Options. (line 16) --- 56018,56024 ---- * melf <1>: MMIX Options. (line 44) * melf: CRIS Options. (line 87) * memb: RS/6000 and PowerPC Options. ! (line 764) * membedded-data: MIPS Options. (line 497) * memregs=: M32C Options. (line 21) * mep: V850 Options. (line 16) *************** look up both forms. *** 55985,55991 **** * mfp32: MIPS Options. (line 260) * mfp64: MIPS Options. (line 263) * mfpmath <1>: x86 Options. (line 367) ! * mfpmath: Optimize Options. (line 2026) * mfpr-32: FRV Options. (line 13) * mfpr-64: FRV Options. (line 16) * mfprnd: RS/6000 and PowerPC Options. --- 56097,56103 ---- * mfp32: MIPS Options. (line 260) * mfp64: MIPS Options. (line 263) * mfpmath <1>: x86 Options. (line 367) ! * mfpmath: Optimize Options. (line 2029) * mfpr-32: FRV Options. (line 13) * mfpr-64: FRV Options. (line 16) * mfprnd: RS/6000 and PowerPC Options. *************** look up both forms. *** 56001,56007 **** * mfract-convert-truncate: AVR Options. (line 239) * mframe-header-opt: MIPS Options. (line 865) * mfriz: RS/6000 and PowerPC Options. ! (line 971) * mfsca: SH Options. (line 370) * mfsgsbase: x86 Options. (line 696) * mfsmuld: SPARC Options. (line 276) --- 56113,56119 ---- * mfract-convert-truncate: AVR Options. (line 239) * mframe-header-opt: MIPS Options. (line 865) * mfriz: RS/6000 and PowerPC Options. ! (line 973) * mfsca: SH Options. (line 370) * mfsgsbase: x86 Options. (line 696) * mfsmuld: SPARC Options. (line 276) *************** look up both forms. *** 56035,56041 **** * mgnu: VAX Options. (line 13) * mgnu-as: IA-64 Options. (line 18) * mgnu-attribute: RS/6000 and PowerPC Options. ! (line 721) * mgnu-ld <1>: IA-64 Options. (line 23) * mgnu-ld: HPPA Options. (line 111) * mgomp: Nvidia PTX Options. (line 48) --- 56147,56153 ---- * mgnu: VAX Options. (line 13) * mgnu-as: IA-64 Options. (line 18) * mgnu-attribute: RS/6000 and PowerPC Options. ! (line 723) * mgnu-ld <1>: IA-64 Options. (line 23) * mgnu-ld: HPPA Options. (line 111) * mgomp: Nvidia PTX Options. (line 48) *************** look up both forms. *** 56199,56205 **** * mlong32: MIPS Options. (line 422) * mlong64: MIPS Options. (line 417) * mlongcall: RS/6000 and PowerPC Options. ! (line 844) * mlongcalls: Xtensa Options. (line 87) * mloop: V850 Options. (line 121) * mlow-64k: Blackfin Options. (line 70) --- 56311,56317 ---- * mlong32: MIPS Options. (line 422) * mlong64: MIPS Options. (line 417) * mlongcall: RS/6000 and PowerPC Options. ! (line 846) * mlongcalls: Xtensa Options. (line 87) * mloop: V850 Options. (line 121) * mlow-64k: Blackfin Options. (line 70) *************** look up both forms. *** 56284,56290 **** * mmvcle: S/390 and zSeries Options. (line 139) * mmvme: RS/6000 and PowerPC Options. ! (line 743) * mmwaitx: x86 Options. (line 719) * mn: H8/300 Options. (line 20) * mn-flash: AVR Options. (line 184) --- 56396,56402 ---- * mmvcle: S/390 and zSeries Options. (line 139) * mmvme: RS/6000 and PowerPC Options. ! (line 745) * mmwaitx: x86 Options. (line 719) * mn: H8/300 Options. (line 20) * mn-flash: AVR Options. (line 184) *************** look up both forms. *** 56364,56370 **** * mno-dwarf2-asm: IA-64 Options. (line 94) * mno-dword: FRV Options. (line 35) * mno-eabi: RS/6000 and PowerPC Options. ! (line 767) * mno-early-stop-bits: IA-64 Options. (line 100) * mno-eflags: FRV Options. (line 125) * mno-embedded-data: MIPS Options. (line 497) --- 56476,56482 ---- * mno-dwarf2-asm: IA-64 Options. (line 94) * mno-dword: FRV Options. (line 35) * mno-eabi: RS/6000 and PowerPC Options. ! (line 769) * mno-early-stop-bits: IA-64 Options. (line 100) * mno-eflags: FRV Options. (line 125) * mno-embedded-data: MIPS Options. (line 497) *************** look up both forms. *** 56417,56423 **** * mno-fused-madd: IA-64 Options. (line 88) * mno-gnu-as: IA-64 Options. (line 18) * mno-gnu-attribute: RS/6000 and PowerPC Options. ! (line 721) * mno-gnu-ld: IA-64 Options. (line 23) * mno-gotplt: CRIS Options. (line 81) * mno-gpopt <1>: Nios II Options. (line 17) --- 56529,56535 ---- * mno-fused-madd: IA-64 Options. (line 88) * mno-gnu-as: IA-64 Options. (line 18) * mno-gnu-attribute: RS/6000 and PowerPC Options. ! (line 723) * mno-gnu-ld: IA-64 Options. (line 23) * mno-gotplt: CRIS Options. (line 81) * mno-gpopt <1>: Nios II Options. (line 17) *************** look up both forms. *** 56462,56468 **** * mno-long-calls: ARM Options. (line 228) * mno-long-jumps: V850 Options. (line 108) * mno-longcall: RS/6000 and PowerPC Options. ! (line 844) * mno-longcalls: Xtensa Options. (line 87) * mno-low-64k: Blackfin Options. (line 74) * mno-low-precision-recip-sqrt: AArch64 Options. (line 87) --- 56574,56580 ---- * mno-long-calls: ARM Options. (line 228) * mno-long-jumps: V850 Options. (line 108) * mno-longcall: RS/6000 and PowerPC Options. ! (line 846) * mno-longcalls: Xtensa Options. (line 87) * mno-low-64k: Blackfin Options. (line 74) * mno-low-precision-recip-sqrt: AArch64 Options. (line 87) *************** look up both forms. *** 56534,56551 **** * mno-prolog-function: V850 Options. (line 23) * mno-prologue-epilogue: CRIS Options. (line 71) * mno-prototype: RS/6000 and PowerPC Options. ! (line 727) * mno-push-args: x86 Options. (line 911) * mno-quad-memory: RS/6000 and PowerPC Options. (line 260) * mno-quad-memory-atomic: RS/6000 and PowerPC Options. (line 266) * mno-readonly-in-sdata: RS/6000 and PowerPC Options. ! (line 820) * mno-red-zone: x86 Options. (line 1248) * mno-register-names: IA-64 Options. (line 37) * mno-regnames: RS/6000 and PowerPC Options. ! (line 838) * mno-relax: V850 Options. (line 103) * mno-relax-immediate: MCore Options. (line 19) * mno-relocatable: RS/6000 and PowerPC Options. --- 56646,56663 ---- * mno-prolog-function: V850 Options. (line 23) * mno-prologue-epilogue: CRIS Options. (line 71) * mno-prototype: RS/6000 and PowerPC Options. ! (line 729) * mno-push-args: x86 Options. (line 911) * mno-quad-memory: RS/6000 and PowerPC Options. (line 260) * mno-quad-memory-atomic: RS/6000 and PowerPC Options. (line 266) * mno-readonly-in-sdata: RS/6000 and PowerPC Options. ! (line 822) * mno-red-zone: x86 Options. (line 1248) * mno-register-names: IA-64 Options. (line 37) * mno-regnames: RS/6000 and PowerPC Options. ! (line 840) * mno-relax: V850 Options. (line 103) * mno-relax-immediate: MCore Options. (line 19) * mno-relocatable: RS/6000 and PowerPC Options. *************** look up both forms. *** 56569,56575 **** * mno-sched-prefer-non-data-spec-insns: IA-64 Options. (line 171) * mno-sched-prolog: ARM Options. (line 32) * mno-sdata <1>: RS/6000 and PowerPC Options. ! (line 814) * mno-sdata <2>: IA-64 Options. (line 42) * mno-sdata: ARC Options. (line 377) * mno-sep-data: Blackfin Options. (line 116) --- 56681,56687 ---- * mno-sched-prefer-non-data-spec-insns: IA-64 Options. (line 171) * mno-sched-prolog: ARM Options. (line 32) * mno-sdata <1>: RS/6000 and PowerPC Options. ! (line 816) * mno-sdata <2>: IA-64 Options. (line 42) * mno-sdata: ARC Options. (line 377) * mno-sep-data: Blackfin Options. (line 116) *************** look up both forms. *** 56605,56611 **** * mno-target-align: Xtensa Options. (line 74) * mno-text-section-literals: Xtensa Options. (line 47) * mno-tls-markers: RS/6000 and PowerPC Options. ! (line 877) * mno-toc: RS/6000 and PowerPC Options. (line 567) * mno-toplevel-symbols: MMIX Options. (line 40) --- 56717,56723 ---- * mno-target-align: Xtensa Options. (line 74) * mno-text-section-literals: Xtensa Options. (line 47) * mno-tls-markers: RS/6000 and PowerPC Options. ! (line 879) * mno-toc: RS/6000 and PowerPC Options. (line 567) * mno-toplevel-symbols: MMIX Options. (line 40) *************** look up both forms. *** 56709,56715 **** * mplt: MIPS Options. (line 221) * mpointer-size=SIZE: VMS Options. (line 20) * mpointers-to-nested-functions: RS/6000 and PowerPC Options. ! (line 979) * mpoke-function-name: ARM Options. (line 273) * mpopc: SPARC Options. (line 283) * mpopcnt: x86 Options. (line 706) --- 56821,56827 ---- * mplt: MIPS Options. (line 221) * mpointer-size=SIZE: VMS Options. (line 20) * mpointers-to-nested-functions: RS/6000 and PowerPC Options. ! (line 981) * mpoke-function-name: ARM Options. (line 273) * mpopc: SPARC Options. (line 283) * mpopcnt: x86 Options. (line 706) *************** look up both forms. *** 56741,56747 **** * mprolog-function: V850 Options. (line 23) * mprologue-epilogue: CRIS Options. (line 71) * mprototype: RS/6000 and PowerPC Options. ! (line 727) * mpure-code: ARM Options. (line 407) * mpush-args: x86 Options. (line 911) * MQ: Preprocessor Options. --- 56853,56859 ---- * mprolog-function: V850 Options. (line 23) * mprologue-epilogue: CRIS Options. (line 71) * mprototype: RS/6000 and PowerPC Options. ! (line 729) * mpure-code: ARM Options. (line 407) * mpush-args: x86 Options. (line 911) * MQ: Preprocessor Options. *************** look up both forms. *** 56756,56775 **** * mRcw: ARC Options. (line 479) * mrdrnd: x86 Options. (line 697) * mreadonly-in-sdata: RS/6000 and PowerPC Options. ! (line 820) * mrecip <1>: x86 Options. (line 821) * mrecip: RS/6000 and PowerPC Options. ! (line 885) * mrecip-precision: RS/6000 and PowerPC Options. ! (line 943) * mrecip=opt <1>: x86 Options. (line 843) * mrecip=opt: RS/6000 and PowerPC Options. ! (line 898) * mrecord-mcount: x86 Options. (line 1134) * mreduced-regs: NDS32 Options. (line 15) * mregister-names: IA-64 Options. (line 37) * mregnames: RS/6000 and PowerPC Options. ! (line 838) * mregparm: x86 Options. (line 563) * mrelax <1>: V850 Options. (line 103) * mrelax <2>: SH Options. (line 137) --- 56868,56887 ---- * mRcw: ARC Options. (line 479) * mrdrnd: x86 Options. (line 697) * mreadonly-in-sdata: RS/6000 and PowerPC Options. ! (line 822) * mrecip <1>: x86 Options. (line 821) * mrecip: RS/6000 and PowerPC Options. ! (line 887) * mrecip-precision: RS/6000 and PowerPC Options. ! (line 945) * mrecip=opt <1>: x86 Options. (line 843) * mrecip=opt: RS/6000 and PowerPC Options. ! (line 900) * mrecord-mcount: x86 Options. (line 1134) * mreduced-regs: NDS32 Options. (line 15) * mregister-names: IA-64 Options. (line 37) * mregnames: RS/6000 and PowerPC Options. ! (line 840) * mregparm: x86 Options. (line 563) * mrelax <1>: V850 Options. (line 103) * mrelax <2>: SH Options. (line 137) *************** look up both forms. *** 56810,56816 **** * msave-mduc-in-interrupts: RL78 Options. (line 80) * msave-restore: RISC-V Options. (line 65) * msave-toc-indirect: RS/6000 and PowerPC Options. ! (line 991) * mscc: FRV Options. (line 140) * msched-ar-data-spec: IA-64 Options. (line 135) * msched-ar-in-data-spec: IA-64 Options. (line 157) --- 56922,56928 ---- * msave-mduc-in-interrupts: RL78 Options. (line 80) * msave-restore: RISC-V Options. (line 65) * msave-toc-indirect: RS/6000 and PowerPC Options. ! (line 993) * mscc: FRV Options. (line 140) * msched-ar-data-spec: IA-64 Options. (line 135) * msched-ar-in-data-spec: IA-64 Options. (line 157) *************** look up both forms. *** 56835,56857 **** * mscore7d: Score Options. (line 34) * msda: V850 Options. (line 40) * msdata <1>: RS/6000 and PowerPC Options. ! (line 801) * msdata: IA-64 Options. (line 42) * msdata=all: C6X Options. (line 30) * msdata=data: RS/6000 and PowerPC Options. ! (line 806) * msdata=default <1>: RS/6000 and PowerPC Options. ! (line 801) * msdata=default: C6X Options. (line 22) * msdata=eabi: RS/6000 and PowerPC Options. ! (line 781) * msdata=none <1>: RS/6000 and PowerPC Options. ! (line 814) * msdata=none <2>: M32R/D Options. (line 40) * msdata=none: C6X Options. (line 35) * msdata=sdata: M32R/D Options. (line 49) * msdata=sysv: RS/6000 and PowerPC Options. ! (line 792) * msdata=use: M32R/D Options. (line 53) * msdram <1>: MeP Options. (line 110) * msdram: Blackfin Options. (line 172) --- 56947,56969 ---- * mscore7d: Score Options. (line 34) * msda: V850 Options. (line 40) * msdata <1>: RS/6000 and PowerPC Options. ! (line 803) * msdata: IA-64 Options. (line 42) * msdata=all: C6X Options. (line 30) * msdata=data: RS/6000 and PowerPC Options. ! (line 808) * msdata=default <1>: RS/6000 and PowerPC Options. ! (line 803) * msdata=default: C6X Options. (line 22) * msdata=eabi: RS/6000 and PowerPC Options. ! (line 783) * msdata=none <1>: RS/6000 and PowerPC Options. ! (line 816) * msdata=none <2>: M32R/D Options. (line 40) * msdata=none: C6X Options. (line 35) * msdata=sdata: M32R/D Options. (line 49) * msdata=sysv: RS/6000 and PowerPC Options. ! (line 794) * msdata=use: M32R/D Options. (line 53) * msdram <1>: MeP Options. (line 110) * msdram: Blackfin Options. (line 172) *************** look up both forms. *** 56872,56878 **** * msim <2>: Visium Options. (line 13) * msim <3>: RX Options. (line 71) * msim <4>: RS/6000 and PowerPC Options. ! (line 737) * msim <5>: RL78 Options. (line 7) * msim <6>: MSP430 Options. (line 47) * msim <7>: MeP Options. (line 114) --- 56984,56990 ---- * msim <2>: Visium Options. (line 13) * msim <3>: RX Options. (line 71) * msim <4>: RS/6000 and PowerPC Options. ! (line 739) * msim <5>: RL78 Options. (line 7) * msim <6>: MSP430 Options. (line 47) * msim <7>: MeP Options. (line 114) *************** look up both forms. *** 56961,56971 **** * mstack-offset: Adapteva Epiphany Options. (line 37) * mstack-protector-guard: RS/6000 and PowerPC Options. ! (line 1016) * mstack-protector-guard-offset: RS/6000 and PowerPC Options. ! (line 1016) * mstack-protector-guard-reg: RS/6000 and PowerPC Options. ! (line 1016) * mstack-protector-guard=GUARD: x86 Options. (line 1171) * mstack-size: S/390 and zSeries Options. (line 196) --- 57073,57083 ---- * mstack-offset: Adapteva Epiphany Options. (line 37) * mstack-protector-guard: RS/6000 and PowerPC Options. ! (line 1018) * mstack-protector-guard-offset: RS/6000 and PowerPC Options. ! (line 1018) * mstack-protector-guard-reg: RS/6000 and PowerPC Options. ! (line 1018) * mstack-protector-guard=GUARD: x86 Options. (line 1171) * mstack-size: S/390 and zSeries Options. (line 196) *************** look up both forms. *** 57016,57022 **** * mtls-dialect=traditional: AArch64 Options. (line 64) * mtls-direct-seg-refs: x86 Options. (line 1112) * mtls-markers: RS/6000 and PowerPC Options. ! (line 877) * mtls-size <1>: IA-64 Options. (line 112) * mtls-size: AArch64 Options. (line 68) * mtoc: RS/6000 and PowerPC Options. --- 57128,57134 ---- * mtls-dialect=traditional: AArch64 Options. (line 64) * mtls-direct-seg-refs: x86 Options. (line 1112) * mtls-markers: RS/6000 and PowerPC Options. ! (line 879) * mtls-size <1>: IA-64 Options. (line 112) * mtls-size: AArch64 Options. (line 68) * mtoc: RS/6000 and PowerPC Options. *************** look up both forms. *** 57093,57099 **** * mv8plus: SPARC Options. (line 216) * mveclibabi <1>: x86 Options. (line 872) * mveclibabi: RS/6000 and PowerPC Options. ! (line 952) * mvect8-ret-in-mem: x86 Options. (line 584) * mvirt: MIPS Options. (line 409) * mvis: SPARC Options. (line 223) --- 57205,57211 ---- * mv8plus: SPARC Options. (line 216) * mveclibabi <1>: x86 Options. (line 872) * mveclibabi: RS/6000 and PowerPC Options. ! (line 954) * mvect8-ret-in-mem: x86 Options. (line 584) * mvirt: MIPS Options. (line 409) * mvis: SPARC Options. (line 223) *************** look up both forms. *** 57113,57119 **** * mvx: S/390 and zSeries Options. (line 113) * mvxworks: RS/6000 and PowerPC Options. ! (line 758) * mvzeroupper: x86 Options. (line 782) * mwarn-cell-microcode: RS/6000 and PowerPC Options. (line 181) --- 57225,57231 ---- * mvx: S/390 and zSeries Options. (line 113) * mvxworks: RS/6000 and PowerPC Options. ! (line 760) * mvzeroupper: x86 Options. (line 782) * mwarn-cell-microcode: RS/6000 and PowerPC Options. (line 181) *************** look up both forms. *** 57155,57161 **** * mxsaves: x86 Options. (line 715) * mxy: ARC Options. (line 333) * myellowknife: RS/6000 and PowerPC Options. ! (line 753) * mzarch: S/390 and zSeries Options. (line 95) * mzda: V850 Options. (line 45) --- 57267,57273 ---- * mxsaves: x86 Options. (line 715) * mxy: ARC Options. (line 333) * myellowknife: RS/6000 and PowerPC Options. ! (line 755) * mzarch: S/390 and zSeries Options. (line 95) * mzda: V850 Options. (line 45) *************** look up both forms. *** 57193,57207 **** * O1: Optimize Options. (line 39) * O2: Optimize Options. (line 94) * O3: Optimize Options. (line 143) ! * Ofast: Optimize Options. (line 166) ! * Og: Optimize Options. (line 173) * Os: Optimize Options. (line 156) * P: Preprocessor Options. (line 350) * p: Instrumentation Options. (line 19) * pagezero_size: Darwin Options. (line 196) ! * param: Optimize Options. (line 2394) * pass-exit-codes: Overall Options. (line 326) * pedantic <1>: Warnings and Errors. (line 25) --- 57305,57319 ---- * O1: Optimize Options. (line 39) * O2: Optimize Options. (line 94) * O3: Optimize Options. (line 143) ! * Ofast: Optimize Options. (line 168) ! * Og: Optimize Options. (line 175) * Os: Optimize Options. (line 156) * P: Preprocessor Options. (line 350) * p: Instrumentation Options. (line 19) * pagezero_size: Darwin Options. (line 196) ! * param: Optimize Options. (line 2397) * pass-exit-codes: Overall Options. (line 326) * pedantic <1>: Warnings and Errors. (line 25) *************** Keyword Index *** 57865,57871 **** * -nodefaultlibs and unresolved references: Link Options. (line 91) * -nostdlib and unresolved references: Link Options. (line 91) * .sdata/.sdata2 references (PowerPC): RS/6000 and PowerPC Options. ! (line 830) * //: C++ Comments. (line 6) * 0 in constraint: Simple Constraints. (line 127) * < in constraint: Simple Constraints. (line 48) --- 57977,57983 ---- * -nodefaultlibs and unresolved references: Link Options. (line 91) * -nostdlib and unresolved references: Link Options. (line 91) * .sdata/.sdata2 references (PowerPC): RS/6000 and PowerPC Options. ! (line 832) * //: C++ Comments. (line 6) * 0 in constraint: Simple Constraints. (line 127) * < in constraint: Simple Constraints. (line 48) *************** Keyword Index *** 58393,58409 **** * asinhf: Other Builtins. (line 6) * asinhl: Other Builtins. (line 6) * asinl: Other Builtins. (line 6) ! * asm assembler template: Extended Asm. (line 219) ! * asm clobbers: Extended Asm. (line 663) * asm constraints: Constraints. (line 6) ! * asm expressions: Extended Asm. (line 567) ! * asm flag output operands: Extended Asm. (line 482) ! * asm goto labels: Extended Asm. (line 733) ! * asm input operands: Extended Asm. (line 567) * asm keyword: Using Assembly Language with C. (line 6) ! * asm output operands: Extended Asm. (line 322) ! * asm volatile: Extended Asm. (line 109) * assembler names for identifiers: Asm Labels. (line 6) * assembly code, invalid: Bug Criteria. (line 12) * assembly language in C: Using Assembly Language with C. --- 58505,58522 ---- * asinhf: Other Builtins. (line 6) * asinhl: Other Builtins. (line 6) * asinl: Other Builtins. (line 6) ! * asm assembler template: Extended Asm. (line 226) ! * asm clobbers: Extended Asm. (line 670) * asm constraints: Constraints. (line 6) ! * asm expressions: Extended Asm. (line 574) ! * asm flag output operands: Extended Asm. (line 489) ! * asm goto labels: Extended Asm. (line 740) ! * asm inline: Size of an asm. (line 25) ! * asm input operands: Extended Asm. (line 574) * asm keyword: Using Assembly Language with C. (line 6) ! * asm output operands: Extended Asm. (line 329) ! * asm volatile: Extended Asm. (line 116) * assembler names for identifiers: Asm Labels. (line 6) * assembly code, invalid: Bug Criteria. (line 12) * assembly language in C: Using Assembly Language with C. *************** Keyword Index *** 58841,58847 **** * flexible array members: Zero Length. (line 6) * float as function value type: Incompatibilities. (line 141) * floating point precision: Disappointments. (line 68) ! * floating-point precision: Optimize Options. (line 1999) * floor: Other Builtins. (line 6) * floorf: Other Builtins. (line 6) * floorl: Other Builtins. (line 6) --- 58954,58960 ---- * flexible array members: Zero Length. (line 6) * float as function value type: Incompatibilities. (line 141) * floating point precision: Disappointments. (line 68) ! * floating-point precision: Optimize Options. (line 2002) * floor: Other Builtins. (line 6) * floorf: Other Builtins. (line 6) * floorl: Other Builtins. (line 6) *************** Keyword Index *** 59801,59807 **** * smaller data references <1>: Nios II Options. (line 9) * smaller data references: M32R/D Options. (line 57) * smaller data references (PowerPC): RS/6000 and PowerPC Options. ! (line 830) * snprintf: Other Builtins. (line 6) * Solaris 2 options: Solaris 2 Options. (line 6) * SOURCE_DATE_EPOCH: Environment Variables. --- 59914,59920 ---- * smaller data references <1>: Nios II Options. (line 9) * smaller data references: M32R/D Options. (line 57) * smaller data references (PowerPC): RS/6000 and PowerPC Options. ! (line 832) * snprintf: Other Builtins. (line 6) * Solaris 2 options: Solaris 2 Options. (line 6) * SOURCE_DATE_EPOCH: Environment Variables. *************** Keyword Index *** 60173,60179 **** * volatile access: Volatiles. (line 6) * volatile applied to function: Function Attributes. (line 6) ! * volatile asm: Extended Asm. (line 109) * volatile read <1>: C++ Volatiles. (line 6) * volatile read: Volatiles. (line 6) * volatile write <1>: C++ Volatiles. (line 6) --- 60286,60292 ---- * volatile access: Volatiles. (line 6) * volatile applied to function: Function Attributes. (line 6) ! * volatile asm: Extended Asm. (line 116) * volatile read <1>: C++ Volatiles. (line 6) * volatile read: Volatiles. (line 6) * volatile write <1>: C++ Volatiles. (line 6) *************** Node: Warning Options161456 *** 60260,60646 **** Ref: Wtrigraphs242101 Node: Debugging Options274754 Node: Optimize Options289204 ! Ref: Type-punning351898 ! Node: Instrumentation Options442513 ! Node: Preprocessor Options477822 ! Ref: dashMF482668 ! Ref: fdollars-in-identifiers487180 ! Node: Assembler Options498979 ! Node: Link Options499671 ! Ref: Link Options-Footnote-1513509 ! Node: Directory Options513843 ! Node: Code Gen Options522230 ! Node: Developer Options550496 ! Node: Submodel Options589433 ! Node: AArch64 Options591167 ! Ref: aarch64-feature-modifiers600144 ! Node: Adapteva Epiphany Options601088 ! Node: ARC Options607038 ! Node: ARM Options625675 ! Node: AVR Options645782 ! Node: Blackfin Options667669 ! Node: C6X Options675684 ! Node: CRIS Options677227 ! Node: CR16 Options680971 ! Node: Darwin Options681878 ! Node: DEC Alpha Options689319 ! Node: FR30 Options700907 ! Node: FT32 Options701473 ! Node: FRV Options702199 ! Node: GNU/Linux Options708918 ! Node: H8/300 Options710300 ! Node: HPPA Options711750 ! Node: IA-64 Options721281 ! Node: LM32 Options729407 ! Node: M32C Options729931 ! Node: M32R/D Options731205 ! Node: M680x0 Options734751 ! Node: MCore Options748914 ! Node: MeP Options750417 ! Node: MicroBlaze Options754377 ! Node: MIPS Options757173 ! Node: MMIX Options792685 ! Node: MN10300 Options795167 ! Node: Moxie Options797710 ! Node: MSP430 Options798198 ! Node: NDS32 Options802908 ! Node: Nios II Options804802 ! Node: Nvidia PTX Options815723 ! Node: PDP-11 Options817983 ! Node: picoChip Options819680 ! Node: PowerPC Options821821 ! Node: RISC-V Options822044 ! Node: RL78 Options825804 ! Node: RS/6000 and PowerPC Options829581 ! Node: RX Options872758 ! Node: S/390 and zSeries Options881361 ! Node: Score Options891837 ! Node: SH Options892679 ! Node: Solaris 2 Options907837 ! Node: SPARC Options909081 ! Node: SPU Options924699 ! Node: System V Options929636 ! Node: TILE-Gx Options930462 ! Node: TILEPro Options931480 ! Node: V850 Options931984 ! Node: VAX Options938676 ! Node: Visium Options939214 ! Node: VMS Options941522 ! Node: VxWorks Options942336 ! Node: x86 Options943488 ! Node: x86 Windows Options997668 ! Node: Xstormy16 Options1000476 ! Node: Xtensa Options1000770 ! Node: zSeries Options1005919 ! Node: Spec Files1006115 ! Node: Environment Variables1027993 ! Node: Precompiled Headers1036718 ! Node: C Implementation1042735 ! Node: Translation implementation1044424 ! Node: Environment implementation1045016 ! Node: Identifiers implementation1045571 ! Node: Characters implementation1046658 ! Node: Integers implementation1050309 ! Node: Floating point implementation1052359 ! Node: Arrays and pointers implementation1055424 ! Ref: Arrays and pointers implementation-Footnote-11056883 ! Node: Hints implementation1057007 ! Node: Structures unions enumerations and bit-fields implementation1058504 ! Node: Qualifiers implementation1060729 ! Node: Declarators implementation1062509 ! Node: Statements implementation1062851 ! Node: Preprocessing directives implementation1063178 ! Node: Library functions implementation1065500 ! Node: Architecture implementation1066150 ! Node: Locale-specific behavior implementation1067792 ! Node: C++ Implementation1068097 ! Node: Conditionally-supported behavior1069379 ! Node: Exception handling1069997 ! Node: C Extensions1070406 ! Node: Statement Exprs1075690 ! Node: Local Labels1080166 ! Node: Labels as Values1083139 ! Ref: Labels as Values-Footnote-11085664 ! Node: Nested Functions1085847 ! Node: Constructing Calls1089805 ! Node: Typeof1094523 ! Node: Conditionals1098451 ! Node: __int1281099341 ! Node: Long Long1099865 ! Node: Complex1101341 ! Node: Floating Types1103926 ! Node: Half-Precision1107391 ! Node: Decimal Float1109796 ! Node: Hex Floats1111649 ! Node: Fixed-Point1112685 ! Node: Named Address Spaces1115965 ! Ref: AVR Named Address Spaces1116651 ! Node: Zero Length1122985 ! Node: Empty Structures1126024 ! Node: Variable Length1126430 ! Node: Variadic Macros1129148 ! Node: Escaped Newlines1131526 ! Node: Subscripting1132387 ! Node: Pointer Arith1133113 ! Node: Pointers to Arrays1133687 ! Node: Initializers1134431 ! Node: Compound Literals1134932 ! Node: Designated Inits1138499 ! Node: Case Ranges1142235 ! Node: Cast to Union1142916 ! Node: Mixed Declarations1144042 ! Node: Function Attributes1144552 ! Node: Common Function Attributes1147666 ! Node: AArch64 Function Attributes1194122 ! Node: ARC Function Attributes1199529 ! Node: ARM Function Attributes1201221 ! Node: AVR Function Attributes1204879 ! Node: Blackfin Function Attributes1208350 ! Node: CR16 Function Attributes1210846 ! Node: Epiphany Function Attributes1211373 ! Node: H8/300 Function Attributes1214124 ! Node: IA-64 Function Attributes1215320 ! Node: M32C Function Attributes1216362 ! Node: M32R/D Function Attributes1218697 ! Node: m68k Function Attributes1220170 ! Node: MCORE Function Attributes1221114 ! Node: MeP Function Attributes1221922 ! Node: MicroBlaze Function Attributes1223223 ! Node: Microsoft Windows Function Attributes1224729 ! Node: MIPS Function Attributes1229312 ! Node: MSP430 Function Attributes1234869 ! Node: NDS32 Function Attributes1238714 ! Node: Nios II Function Attributes1241133 ! Node: Nvidia PTX Function Attributes1242427 ! Node: PowerPC Function Attributes1243042 ! Node: RL78 Function Attributes1250049 ! Node: RX Function Attributes1251286 ! Node: S/390 Function Attributes1253822 ! Node: SH Function Attributes1255641 ! Node: SPU Function Attributes1259065 ! Node: Symbian OS Function Attributes1259870 ! Node: V850 Function Attributes1260207 ! Node: Visium Function Attributes1260752 ! Node: x86 Function Attributes1261280 ! Node: Xstormy16 Function Attributes1273739 ! Node: Variable Attributes1274246 ! Node: Common Variable Attributes1275708 ! Node: AVR Variable Attributes1286814 ! Node: Blackfin Variable Attributes1292083 ! Node: H8/300 Variable Attributes1292942 ! Node: IA-64 Variable Attributes1294016 ! Node: M32R/D Variable Attributes1294767 ! Node: MeP Variable Attributes1295550 ! Node: Microsoft Windows Variable Attributes1297653 ! Node: MSP430 Variable Attributes1300112 ! Node: Nvidia PTX Variable Attributes1301311 ! Node: PowerPC Variable Attributes1301928 ! Node: RL78 Variable Attributes1302485 ! Node: SPU Variable Attributes1302903 ! Node: V850 Variable Attributes1303268 ! Node: x86 Variable Attributes1303900 ! Node: Xstormy16 Variable Attributes1304956 ! Node: Type Attributes1305531 ! Node: Common Type Attributes1306850 ! Node: ARM Type Attributes1322334 ! Node: MeP Type Attributes1323118 ! Node: PowerPC Type Attributes1323520 ! Node: SPU Type Attributes1324509 ! Node: x86 Type Attributes1324928 ! Node: Label Attributes1325916 ! Node: Enumerator Attributes1327850 ! Node: Statement Attributes1329170 ! Node: Attribute Syntax1330654 ! Node: Function Prototypes1341915 ! Node: C++ Comments1343696 ! Node: Dollar Signs1344215 ! Node: Character Escapes1344680 ! Node: Alignment1344964 ! Node: Inline1346336 ! Node: Volatiles1351138 ! Node: Using Assembly Language with C1354038 ! Node: Basic Asm1355275 ! Node: Extended Asm1360452 ! Ref: Volatile1364249 ! Ref: AssemblerTemplate1368321 ! Ref: OutputOperands1372546 ! Ref: FlagOutputOperands1379458 ! Ref: InputOperands1381473 ! Ref: Clobbers1385708 ! Ref: GotoLabels1389014 ! Ref: x86Operandmodifiers1391147 ! Ref: x86floatingpointasmoperands1393413 ! Node: Constraints1396743 ! Node: Simple Constraints1397849 ! Node: Multi-Alternative1405174 ! Node: Modifiers1406849 ! Node: Machine Constraints1409646 ! Node: Asm Labels1467772 ! Node: Explicit Register Variables1469392 ! Ref: Explicit Reg Vars1469606 ! Node: Global Register Variables1470215 ! Ref: Global Reg Vars1470423 ! Node: Local Register Variables1474265 ! Ref: Local Reg Vars1474485 ! Node: Size of an asm1477795 ! Node: Alternate Keywords1479050 ! Node: Incomplete Enums1480549 ! Node: Function Names1481306 ! Node: Return Address1483204 ! Node: Vector Extensions1487145 ! Node: Offsetof1494430 ! Node: __sync Builtins1495271 ! Node: __atomic Builtins1501716 ! Node: Integer Overflow Builtins1515206 ! Node: x86 specific memory model extensions for transactional memory1521685 ! Node: Object Size Checking1522951 ! Node: Pointer Bounds Checker builtins1528979 ! Node: Cilk Plus Builtins1534985 ! Node: Other Builtins1535902 ! Node: Target Builtins1572882 ! Node: AArch64 Built-in Functions1574451 ! Node: Alpha Built-in Functions1574906 ! Node: Altera Nios II Built-in Functions1577954 ! Node: ARC Built-in Functions1582321 ! Node: ARC SIMD Built-in Functions1587532 ! Node: ARM iWMMXt Built-in Functions1596428 ! Node: ARM C Language Extensions (ACLE)1603424 ! Node: ARM Floating Point Status and Control Intrinsics1604763 ! Node: ARM ARMv8-M Security Extensions1605248 ! Node: AVR Built-in Functions1606594 ! Node: Blackfin Built-in Functions1609922 ! Node: FR-V Built-in Functions1610541 ! Node: Argument Types1611407 ! Node: Directly-mapped Integer Functions1613161 ! Node: Directly-mapped Media Functions1614245 ! Node: Raw read/write Functions1621279 ! Node: Other Built-in Functions1622193 ! Node: MIPS DSP Built-in Functions1623379 ! Node: MIPS Paired-Single Support1635877 ! Node: MIPS Loongson Built-in Functions1637376 ! Node: Paired-Single Arithmetic1643903 ! Node: Paired-Single Built-in Functions1644851 ! Node: MIPS-3D Built-in Functions1647518 ! Node: MIPS SIMD Architecture (MSA) Support1652895 ! Node: MIPS SIMD Architecture Built-in Functions1655758 ! Node: Other MIPS Built-in Functions1682588 ! Node: MSP430 Built-in Functions1683597 ! Node: NDS32 Built-in Functions1684998 ! Node: picoChip Built-in Functions1686291 ! Node: PowerPC Built-in Functions1687635 ! Node: PowerPC AltiVec/VSX Built-in Functions1713301 ! Node: PowerPC Hardware Transactional Memory Built-in Functions1869223 ! Node: RX Built-in Functions1877714 ! Node: S/390 System z Built-in Functions1881747 ! Node: SH Built-in Functions1886982 ! Node: SPARC VIS Built-in Functions1888710 ! Node: SPU Built-in Functions1897240 ! Node: TI C6X Built-in Functions1898956 ! Node: TILE-Gx Built-in Functions1899980 ! Node: TILEPro Built-in Functions1901097 ! Node: x86 Built-in Functions1902195 ! Node: x86 transactional memory intrinsics1962434 ! Node: Target Format Checks1965654 ! Node: Solaris Format Checks1966086 ! Node: Darwin Format Checks1966512 ! Node: Pragmas1967330 ! Node: AArch64 Pragmas1968103 ! Node: ARM Pragmas1968560 ! Node: M32C Pragmas1969187 ! Node: MeP Pragmas1970261 ! Node: RS/6000 and PowerPC Pragmas1972330 ! Node: S/390 Pragmas1973070 ! Node: Darwin Pragmas1973636 ! Node: Solaris Pragmas1974689 ! Node: Symbol-Renaming Pragmas1975850 ! Node: Structure-Layout Pragmas1977463 ! Node: Weak Pragmas1979750 ! Node: Diagnostic Pragmas1980485 ! Node: Visibility Pragmas1983592 ! Node: Push/Pop Macro Pragmas1984277 ! Node: Function Specific Option Pragmas1985249 ! Node: Loop-Specific Pragmas1987094 ! Node: Unnamed Fields1988184 ! Node: Thread-Local1990382 ! Node: C99 Thread-Local Edits1992488 ! Node: C++98 Thread-Local Edits1994500 ! Node: Binary constants1997944 ! Node: C++ Extensions1998615 ! Node: C++ Volatiles2000245 ! Node: Restricted Pointers2002593 ! Node: Vague Linkage2004184 ! Node: C++ Interface2007808 ! Ref: C++ Interface-Footnote-12011601 ! Node: Template Instantiation2011737 ! Node: Bound member functions2019221 ! Node: C++ Attributes2020753 ! Node: Function Multiversioning2024823 ! Node: Type Traits2026628 ! Node: C++ Concepts2033116 ! Node: Deprecated Features2034611 ! Node: Backwards Compatibility2037573 ! Node: Objective-C2038925 ! Node: GNU Objective-C runtime API2039534 ! Node: Modern GNU Objective-C runtime API2040541 ! Node: Traditional GNU Objective-C runtime API2042978 ! Node: Executing code before main2043706 ! Node: What you can and what you cannot do in +load2046448 ! Node: Type encoding2048820 ! Node: Legacy type encoding2054160 ! Node: @encode2055251 ! Node: Method signatures2055796 ! Node: Garbage Collection2057791 ! Node: Constant string objects2060480 ! Node: compatibility_alias2062988 ! Node: Exceptions2063714 ! Node: Synchronization2066425 ! Node: Fast enumeration2067609 ! Node: Using fast enumeration2067921 ! Node: c99-like fast enumeration syntax2069132 ! Node: Fast enumeration details2069835 ! Node: Fast enumeration protocol2072176 ! Node: Messaging with the GNU Objective-C runtime2075328 ! Node: Dynamically registering methods2076699 ! Node: Forwarding hook2078390 ! Node: Compatibility2081431 ! Node: Gcov2087998 ! Node: Gcov Intro2088533 ! Node: Invoking Gcov2091251 ! Node: Gcov and Optimization2106470 ! Node: Gcov Data Files2109836 ! Node: Cross-profiling2111231 ! Node: Gcov-tool2113082 ! Node: Gcov-tool Intro2113507 ! Node: Invoking Gcov-tool2115468 ! Node: Gcov-dump2118013 ! Node: Gcov-dump Intro2118335 ! Node: Invoking Gcov-dump2118602 ! Node: Trouble2119271 ! Node: Actual Bugs2120689 ! Node: Interoperation2121136 ! Node: Incompatibilities2128028 ! Node: Fixed Headers2136179 ! Node: Standard Libraries2137842 ! Node: Disappointments2139214 ! Node: C++ Misunderstandings2143572 ! Node: Static Definitions2144383 ! Node: Name lookup2145436 ! Ref: Name lookup-Footnote-12150215 ! Node: Temporaries2150402 ! Node: Copy Assignment2152378 ! Node: Non-bugs2154185 ! Node: Warnings and Errors2164692 ! Node: Bugs2166454 ! Node: Bug Criteria2166921 ! Node: Bug Reporting2169131 ! Node: Service2169349 ! Node: Contributing2170168 ! Node: Funding2170908 ! Node: GNU Project2173397 ! Node: Copying2174043 ! Node: GNU Free Documentation License2211571 ! Node: Contributors2236708 ! Node: Option Index2276151 ! Node: Keyword Index2518336  End Tag Table --- 60373,60759 ---- Ref: Wtrigraphs242101 Node: Debugging Options274754 Node: Optimize Options289204 ! Ref: Type-punning352018 ! Node: Instrumentation Options442633 ! Node: Preprocessor Options477942 ! Ref: dashMF482788 ! Ref: fdollars-in-identifiers487300 ! Node: Assembler Options499099 ! Node: Link Options499791 ! Ref: Link Options-Footnote-1513629 ! Node: Directory Options513963 ! Node: Code Gen Options522350 ! Node: Developer Options550616 ! Node: Submodel Options589553 ! Node: AArch64 Options591287 ! Ref: aarch64-feature-modifiers600264 ! Node: Adapteva Epiphany Options601208 ! Node: ARC Options607158 ! Node: ARM Options625795 ! Node: AVR Options645902 ! Node: Blackfin Options667789 ! Node: C6X Options675804 ! Node: CRIS Options677347 ! Node: CR16 Options681091 ! Node: Darwin Options681998 ! Node: DEC Alpha Options689439 ! Node: FR30 Options701027 ! Node: FT32 Options701593 ! Node: FRV Options702319 ! Node: GNU/Linux Options709038 ! Node: H8/300 Options710420 ! Node: HPPA Options711870 ! Node: IA-64 Options721401 ! Node: LM32 Options729527 ! Node: M32C Options730051 ! Node: M32R/D Options731325 ! Node: M680x0 Options734871 ! Node: MCore Options749034 ! Node: MeP Options750537 ! Node: MicroBlaze Options754497 ! Node: MIPS Options757293 ! Node: MMIX Options792805 ! Node: MN10300 Options795287 ! Node: Moxie Options797830 ! Node: MSP430 Options798318 ! Node: NDS32 Options803028 ! Node: Nios II Options804922 ! Node: Nvidia PTX Options815843 ! Node: PDP-11 Options818103 ! Node: picoChip Options819800 ! Node: PowerPC Options821941 ! Node: RISC-V Options822164 ! Node: RL78 Options825924 ! Node: RS/6000 and PowerPC Options829701 ! Node: RX Options872978 ! Node: S/390 and zSeries Options881581 ! Node: Score Options892057 ! Node: SH Options892899 ! Node: Solaris 2 Options908057 ! Node: SPARC Options909301 ! Node: SPU Options924919 ! Node: System V Options929856 ! Node: TILE-Gx Options930682 ! Node: TILEPro Options931700 ! Node: V850 Options932204 ! Node: VAX Options938896 ! Node: Visium Options939434 ! Node: VMS Options941742 ! Node: VxWorks Options942556 ! Node: x86 Options943708 ! Node: x86 Windows Options997888 ! Node: Xstormy16 Options1000696 ! Node: Xtensa Options1000990 ! Node: zSeries Options1006139 ! Node: Spec Files1006335 ! Node: Environment Variables1028213 ! Node: Precompiled Headers1036938 ! Node: C Implementation1042955 ! Node: Translation implementation1044644 ! Node: Environment implementation1045236 ! Node: Identifiers implementation1045791 ! Node: Characters implementation1046878 ! Node: Integers implementation1050529 ! Node: Floating point implementation1052579 ! Node: Arrays and pointers implementation1055644 ! Ref: Arrays and pointers implementation-Footnote-11057103 ! Node: Hints implementation1057227 ! Node: Structures unions enumerations and bit-fields implementation1058724 ! Node: Qualifiers implementation1060949 ! Node: Declarators implementation1062729 ! Node: Statements implementation1063071 ! Node: Preprocessing directives implementation1063398 ! Node: Library functions implementation1065720 ! Node: Architecture implementation1066370 ! Node: Locale-specific behavior implementation1068012 ! Node: C++ Implementation1068317 ! Node: Conditionally-supported behavior1069599 ! Node: Exception handling1070217 ! Node: C Extensions1070626 ! Node: Statement Exprs1075910 ! Node: Local Labels1080386 ! Node: Labels as Values1083359 ! Ref: Labels as Values-Footnote-11085884 ! Node: Nested Functions1086067 ! Node: Constructing Calls1090025 ! Node: Typeof1094743 ! Node: Conditionals1098671 ! Node: __int1281099561 ! Node: Long Long1100085 ! Node: Complex1101561 ! Node: Floating Types1104146 ! Node: Half-Precision1107611 ! Node: Decimal Float1110016 ! Node: Hex Floats1111869 ! Node: Fixed-Point1112905 ! Node: Named Address Spaces1116185 ! Ref: AVR Named Address Spaces1116871 ! Node: Zero Length1123205 ! Node: Empty Structures1126244 ! Node: Variable Length1126650 ! Node: Variadic Macros1129368 ! Node: Escaped Newlines1131746 ! Node: Subscripting1132607 ! Node: Pointer Arith1133333 ! Node: Pointers to Arrays1133907 ! Node: Initializers1134651 ! Node: Compound Literals1135152 ! Node: Designated Inits1138719 ! Node: Case Ranges1142455 ! Node: Cast to Union1143136 ! Node: Mixed Declarations1144262 ! Node: Function Attributes1144772 ! Node: Common Function Attributes1147886 ! Node: AArch64 Function Attributes1194342 ! Node: ARC Function Attributes1199749 ! Node: ARM Function Attributes1201441 ! Node: AVR Function Attributes1205099 ! Node: Blackfin Function Attributes1208570 ! Node: CR16 Function Attributes1211066 ! Node: Epiphany Function Attributes1211593 ! Node: H8/300 Function Attributes1214344 ! Node: IA-64 Function Attributes1215540 ! Node: M32C Function Attributes1216582 ! Node: M32R/D Function Attributes1218917 ! Node: m68k Function Attributes1220390 ! Node: MCORE Function Attributes1221334 ! Node: MeP Function Attributes1222142 ! Node: MicroBlaze Function Attributes1223443 ! Node: Microsoft Windows Function Attributes1224949 ! Node: MIPS Function Attributes1229532 ! Node: MSP430 Function Attributes1235089 ! Node: NDS32 Function Attributes1238934 ! Node: Nios II Function Attributes1241353 ! Node: Nvidia PTX Function Attributes1242647 ! Node: PowerPC Function Attributes1243262 ! Node: RL78 Function Attributes1250269 ! Node: RX Function Attributes1251506 ! Node: S/390 Function Attributes1254042 ! Node: SH Function Attributes1255861 ! Node: SPU Function Attributes1259285 ! Node: Symbian OS Function Attributes1260090 ! Node: V850 Function Attributes1260427 ! Node: Visium Function Attributes1260972 ! Node: x86 Function Attributes1261500 ! Node: Xstormy16 Function Attributes1273959 ! Node: Variable Attributes1274466 ! Node: Common Variable Attributes1275928 ! Node: AVR Variable Attributes1287034 ! Node: Blackfin Variable Attributes1292303 ! Node: H8/300 Variable Attributes1293162 ! Node: IA-64 Variable Attributes1294236 ! Node: M32R/D Variable Attributes1294987 ! Node: MeP Variable Attributes1295770 ! Node: Microsoft Windows Variable Attributes1297873 ! Node: MSP430 Variable Attributes1300332 ! Node: Nvidia PTX Variable Attributes1301531 ! Node: PowerPC Variable Attributes1302148 ! Node: RL78 Variable Attributes1302705 ! Node: SPU Variable Attributes1303123 ! Node: V850 Variable Attributes1303488 ! Node: x86 Variable Attributes1304120 ! Node: Xstormy16 Variable Attributes1305176 ! Node: Type Attributes1305751 ! Node: Common Type Attributes1307070 ! Node: ARM Type Attributes1322554 ! Node: MeP Type Attributes1323338 ! Node: PowerPC Type Attributes1323740 ! Node: SPU Type Attributes1324729 ! Node: x86 Type Attributes1325148 ! Node: Label Attributes1326136 ! Node: Enumerator Attributes1328070 ! Node: Statement Attributes1329390 ! Node: Attribute Syntax1330874 ! Node: Function Prototypes1342135 ! Node: C++ Comments1343916 ! Node: Dollar Signs1344435 ! Node: Character Escapes1344900 ! Node: Alignment1345184 ! Node: Inline1346556 ! Node: Volatiles1351358 ! Node: Using Assembly Language with C1354258 ! Node: Basic Asm1355495 ! Node: Extended Asm1360846 ! Ref: Volatile1364904 ! Ref: AssemblerTemplate1368976 ! Ref: OutputOperands1373201 ! Ref: FlagOutputOperands1380113 ! Ref: InputOperands1382128 ! Ref: Clobbers1386363 ! Ref: GotoLabels1389669 ! Ref: x86Operandmodifiers1391802 ! Ref: x86floatingpointasmoperands1394068 ! Node: Constraints1397398 ! Node: Simple Constraints1398504 ! Node: Multi-Alternative1405829 ! Node: Modifiers1407504 ! Node: Machine Constraints1410301 ! Node: Asm Labels1468427 ! Node: Explicit Register Variables1470047 ! Ref: Explicit Reg Vars1470261 ! Node: Global Register Variables1470870 ! Ref: Global Reg Vars1471078 ! Node: Local Register Variables1474920 ! Ref: Local Reg Vars1475140 ! Node: Size of an asm1478450 ! Node: Alternate Keywords1479929 ! Node: Incomplete Enums1481428 ! Node: Function Names1482185 ! Node: Return Address1484083 ! Node: Vector Extensions1488024 ! Node: Offsetof1495309 ! Node: __sync Builtins1496150 ! Node: __atomic Builtins1502595 ! Node: Integer Overflow Builtins1516085 ! Node: x86 specific memory model extensions for transactional memory1522564 ! Node: Object Size Checking1523830 ! Node: Pointer Bounds Checker builtins1529858 ! Node: Cilk Plus Builtins1535864 ! Node: Other Builtins1536781 ! Node: Target Builtins1573761 ! Node: AArch64 Built-in Functions1575330 ! Node: Alpha Built-in Functions1575785 ! Node: Altera Nios II Built-in Functions1578833 ! Node: ARC Built-in Functions1583200 ! Node: ARC SIMD Built-in Functions1588411 ! Node: ARM iWMMXt Built-in Functions1597307 ! Node: ARM C Language Extensions (ACLE)1604303 ! Node: ARM Floating Point Status and Control Intrinsics1605642 ! Node: ARM ARMv8-M Security Extensions1606127 ! Node: AVR Built-in Functions1607473 ! Node: Blackfin Built-in Functions1610801 ! Node: FR-V Built-in Functions1611420 ! Node: Argument Types1612286 ! Node: Directly-mapped Integer Functions1614040 ! Node: Directly-mapped Media Functions1615124 ! Node: Raw read/write Functions1622158 ! Node: Other Built-in Functions1623072 ! Node: MIPS DSP Built-in Functions1624258 ! Node: MIPS Paired-Single Support1636756 ! Node: MIPS Loongson Built-in Functions1638255 ! Node: Paired-Single Arithmetic1644782 ! Node: Paired-Single Built-in Functions1645730 ! Node: MIPS-3D Built-in Functions1648397 ! Node: MIPS SIMD Architecture (MSA) Support1653774 ! Node: MIPS SIMD Architecture Built-in Functions1656637 ! Node: Other MIPS Built-in Functions1683467 ! Node: MSP430 Built-in Functions1684476 ! Node: NDS32 Built-in Functions1685877 ! Node: picoChip Built-in Functions1687170 ! Node: PowerPC Built-in Functions1688514 ! Node: PowerPC AltiVec/VSX Built-in Functions1714180 ! Node: PowerPC Hardware Transactional Memory Built-in Functions1875231 ! Node: RX Built-in Functions1883722 ! Node: S/390 System z Built-in Functions1887755 ! Node: SH Built-in Functions1892990 ! Node: SPARC VIS Built-in Functions1894718 ! Node: SPU Built-in Functions1903248 ! Node: TI C6X Built-in Functions1904964 ! Node: TILE-Gx Built-in Functions1905988 ! Node: TILEPro Built-in Functions1907105 ! Node: x86 Built-in Functions1908203 ! Node: x86 transactional memory intrinsics1968442 ! Node: Target Format Checks1971662 ! Node: Solaris Format Checks1972094 ! Node: Darwin Format Checks1972520 ! Node: Pragmas1973338 ! Node: AArch64 Pragmas1974111 ! Node: ARM Pragmas1974568 ! Node: M32C Pragmas1975195 ! Node: MeP Pragmas1976269 ! Node: RS/6000 and PowerPC Pragmas1978338 ! Node: S/390 Pragmas1979078 ! Node: Darwin Pragmas1979644 ! Node: Solaris Pragmas1980697 ! Node: Symbol-Renaming Pragmas1981858 ! Node: Structure-Layout Pragmas1983471 ! Node: Weak Pragmas1985758 ! Node: Diagnostic Pragmas1986493 ! Node: Visibility Pragmas1989600 ! Node: Push/Pop Macro Pragmas1990285 ! Node: Function Specific Option Pragmas1991257 ! Node: Loop-Specific Pragmas1993102 ! Node: Unnamed Fields1994192 ! Node: Thread-Local1996390 ! Node: C99 Thread-Local Edits1998496 ! Node: C++98 Thread-Local Edits2000508 ! Node: Binary constants2003952 ! Node: C++ Extensions2004623 ! Node: C++ Volatiles2006253 ! Node: Restricted Pointers2008601 ! Node: Vague Linkage2010192 ! Node: C++ Interface2013816 ! Ref: C++ Interface-Footnote-12017609 ! Node: Template Instantiation2017745 ! Node: Bound member functions2025229 ! Node: C++ Attributes2026761 ! Node: Function Multiversioning2030831 ! Node: Type Traits2032636 ! Node: C++ Concepts2039124 ! Node: Deprecated Features2040619 ! Node: Backwards Compatibility2043581 ! Node: Objective-C2044933 ! Node: GNU Objective-C runtime API2045542 ! Node: Modern GNU Objective-C runtime API2046549 ! Node: Traditional GNU Objective-C runtime API2048986 ! Node: Executing code before main2049714 ! Node: What you can and what you cannot do in +load2052456 ! Node: Type encoding2054828 ! Node: Legacy type encoding2060168 ! Node: @encode2061259 ! Node: Method signatures2061804 ! Node: Garbage Collection2063799 ! Node: Constant string objects2066488 ! Node: compatibility_alias2068996 ! Node: Exceptions2069722 ! Node: Synchronization2072433 ! Node: Fast enumeration2073617 ! Node: Using fast enumeration2073929 ! Node: c99-like fast enumeration syntax2075140 ! Node: Fast enumeration details2075843 ! Node: Fast enumeration protocol2078184 ! Node: Messaging with the GNU Objective-C runtime2081336 ! Node: Dynamically registering methods2082707 ! Node: Forwarding hook2084398 ! Node: Compatibility2087439 ! Node: Gcov2094006 ! Node: Gcov Intro2094541 ! Node: Invoking Gcov2097259 ! Node: Gcov and Optimization2112478 ! Node: Gcov Data Files2115844 ! Node: Cross-profiling2117239 ! Node: Gcov-tool2119090 ! Node: Gcov-tool Intro2119515 ! Node: Invoking Gcov-tool2121476 ! Node: Gcov-dump2124021 ! Node: Gcov-dump Intro2124343 ! Node: Invoking Gcov-dump2124610 ! Node: Trouble2125279 ! Node: Actual Bugs2126697 ! Node: Interoperation2127144 ! Node: Incompatibilities2134036 ! Node: Fixed Headers2142187 ! Node: Standard Libraries2143850 ! Node: Disappointments2145222 ! Node: C++ Misunderstandings2149580 ! Node: Static Definitions2150391 ! Node: Name lookup2151444 ! Ref: Name lookup-Footnote-12156223 ! Node: Temporaries2156410 ! Node: Copy Assignment2158386 ! Node: Non-bugs2160193 ! Node: Warnings and Errors2170700 ! Node: Bugs2172462 ! Node: Bug Criteria2172929 ! Node: Bug Reporting2175139 ! Node: Service2175357 ! Node: Contributing2176176 ! Node: Funding2176916 ! Node: GNU Project2179405 ! Node: Copying2180051 ! Node: GNU Free Documentation License2217579 ! Node: Contributors2242716 ! Node: Option Index2282159 ! Node: Keyword Index2524344  End Tag Table diff -Nrcpad gcc-7.4.0/gcc/doc/gccinstall.info gcc-7.5.0/gcc/doc/gccinstall.info *** gcc-7.4.0/gcc/doc/gccinstall.info Thu Dec 6 10:20:52 2018 --- gcc-7.5.0/gcc/doc/gccinstall.info Thu Nov 14 07:57:25 2019 *************** *** 1,5 **** This is doc/gccinstall.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/doc/install.texi. Copyright (C) 1988-2017 Free Software Foundation, Inc. --- 1,5 ---- This is doc/gccinstall.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/doc/install.texi. Copyright (C) 1988-2017 Free Software Foundation, Inc. diff -Nrcpad gcc-7.4.0/gcc/doc/gccint.info gcc-7.5.0/gcc/doc/gccint.info *** gcc-7.4.0/gcc/doc/gccint.info Thu Dec 6 10:20:53 2018 --- gcc-7.5.0/gcc/doc/gccint.info Thu Nov 14 07:57:26 2019 *************** *** 1,5 **** This is doc/gccint.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/doc/gccint.texi. Copyright (C) 1988-2017 Free Software Foundation, Inc. --- 1,5 ---- This is doc/gccint.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/doc/gccint.texi. Copyright (C) 1988-2017 Free Software Foundation, Inc. *************** Introduction *** 57,63 **** 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 7.4.0. 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 --- 57,63 ---- 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 7.5.0. 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 *************** By convention, keywords ending in `_noca *** 4621,4627 **** specified for the particular test in an earlier `dg-options' or `dg-add-options' directive. ! 7.2.3.1 Data type sizes ....................... `ilp32' --- 4621,4638 ---- specified for the particular test in an earlier `dg-options' or `dg-add-options' directive. ! 7.2.3.1 Endianness ! .................. ! ! `be' ! Target uses big-endian memory order for multi-byte and multi-word ! data. ! ! `le' ! Target uses little-endian memory order for multi-byte and ! multi-word data. ! ! 7.2.3.2 Data type sizes ....................... `ilp32' *************** specified for the particular test in an *** 4686,4692 **** Target has runtime support for any options added with `dg-add-options' for any `_FloatN' or `_FloatNx' type. ! 7.2.3.2 Fortran-specific attributes ................................... `fortran_integer_16' --- 4697,4703 ---- Target has runtime support for any options added with `dg-add-options' for any `_FloatN' or `_FloatNx' type. ! 7.2.3.3 Fortran-specific attributes ................................... `fortran_integer_16' *************** specified for the particular test in an *** 4698,4704 **** `fortran_large_real' Target supports Fortran `real' kinds larger than `real(8)'. ! 7.2.3.3 Vector-specific attributes .................................. `vect_condition' --- 4709,4715 ---- `fortran_large_real' Target supports Fortran `real' kinds larger than `real(8)'. ! 7.2.3.4 Vector-specific attributes .................................. `vect_condition' *************** specified for the particular test in an *** 4835,4841 **** `vect_max_reduc' Target supports max reduction for vectors. ! 7.2.3.4 Thread Local Storage attributes ....................................... `tls' --- 4846,4852 ---- `vect_max_reduc' Target supports max reduction for vectors. ! 7.2.3.5 Thread Local Storage attributes ....................................... `tls' *************** specified for the particular test in an *** 4847,4853 **** `tls_runtime' Test system supports executing TLS executables. ! 7.2.3.5 Decimal floating point attributes ......................................... `dfp' --- 4858,4864 ---- `tls_runtime' Test system supports executing TLS executables. ! 7.2.3.6 Decimal floating point attributes ......................................... `dfp' *************** specified for the particular test in an *** 4868,4874 **** Target generates decimal floating point instructions with current options. ! 7.2.3.6 ARM-specific attributes ............................... `arm32' --- 4879,4885 ---- Target generates decimal floating point instructions with current options. ! 7.2.3.7 ARM-specific attributes ............................... `arm32' *************** specified for the particular test in an *** 5044,5050 **** as supported in *note arm_coproc3_ok:: in addition the following: `MCRR2' and `MRRC2'. ! 7.2.3.7 AArch64-specific attributes ................................... `aarch64_asm__ok' --- 5055,5061 ---- as supported in *note arm_coproc3_ok:: in addition the following: `MCRR2' and `MRRC2'. ! 7.2.3.8 AArch64-specific attributes ................................... `aarch64_asm__ok' *************** specified for the particular test in an *** 5076,5082 **** required by -fpic for AArch64 small memory model. ! 7.2.3.8 MIPS-specific attributes ................................ `mips64' --- 5087,5093 ---- required by -fpic for AArch64 small memory model. ! 7.2.3.9 MIPS-specific attributes ................................ `mips64' *************** specified for the particular test in an *** 5102,5109 **** `mpaired_single' MIPS target supports `-mpaired-single'. ! 7.2.3.9 PowerPC-specific attributes ! ................................... `dfp_hw' PowerPC target supports executing hardware DFP instructions. --- 5113,5120 ---- `mpaired_single' MIPS target supports `-mpaired-single'. ! 7.2.3.10 PowerPC-specific attributes ! .................................... `dfp_hw' PowerPC target supports executing hardware DFP instructions. *************** specified for the particular test in an *** 5175,5181 **** `vsx_hw' PowerPC target supports executing VSX instructions (ISA 2.06). ! 7.2.3.10 Other hardware attributes .................................. `avx' --- 5186,5192 ---- `vsx_hw' PowerPC target supports executing VSX instructions (ISA 2.06). ! 7.2.3.11 Other hardware attributes .................................. `avx' *************** specified for the particular test in an *** 5238,5244 **** SImode. ! 7.2.3.11 Environment attributes ............................... `c' --- 5249,5255 ---- SImode. ! 7.2.3.12 Environment attributes ............................... `c' *************** specified for the particular test in an *** 5340,5346 **** `wchar' Target supports wide characters. ! 7.2.3.12 Other attributes ......................... `automatic_stack_alignment' --- 5351,5357 ---- `wchar' Target supports wide characters. ! 7.2.3.13 Other attributes ......................... `automatic_stack_alignment' *************** specified for the particular test in an *** 5466,5472 **** `comdat_group' Target uses comdat groups. ! 7.2.3.13 Local to tests in `gcc.target/i386' ............................................ `3dnow' --- 5477,5483 ---- `comdat_group' Target uses comdat groups. ! 7.2.3.14 Local to tests in `gcc.target/i386' ............................................ `3dnow' *************** specified for the particular test in an *** 5505,5517 **** `xop' Target supports compiling `xop' instructions. ! 7.2.3.14 Local to tests in `gcc.target/spu/ea' .............................................. `ealib' Target `__ea' library functions are available. ! 7.2.3.15 Local to tests in `gcc.test-framework' ............................................... `no' --- 5516,5528 ---- `xop' Target supports compiling `xop' instructions. ! 7.2.3.15 Local to tests in `gcc.target/spu/ea' .............................................. `ealib' Target `__ea' library functions are available. ! 7.2.3.16 Local to tests in `gcc.test-framework' ............................................... `no' *************** Node: Test Directives204427 *** 52249,52607 **** Node: Directives204954 Node: Selectors215260 Node: Effective-Target Keywords216618 ! Ref: arm_fp_ok224441 ! Ref: arm_neon_ok225370 ! Ref: arm_neon_ok_no_float_abi225539 ! Ref: arm_neonv2_ok225706 ! Ref: arm_fp16_ok225873 ! Ref: arm_neon_fp16_ok226215 ! Ref: arm_vfp3_ok227091 ! Ref: arm_v8_1a_neon_ok227516 ! Ref: arm_v8_2a_fp16_scalar_ok227942 ! Ref: arm_v8_2a_fp16_neon_ok228389 ! Ref: arm_coproc1_ok229449 ! Ref: arm_coproc2_ok229575 ! Ref: arm_coproc3_ok229808 ! Node: Add Options241675 ! Ref: arm_fp16_ieee242693 ! Ref: arm_fp16_alternative242948 ! Node: Require Support244845 ! Node: Final Actions247352 ! Node: Ada Tests253013 ! Node: C Tests254177 ! Node: LTO Testing258599 ! Node: gcov Testing260241 ! Node: profopt Testing263228 ! Node: compat Testing264943 ! Node: Torture Tests269183 ! Node: GIMPLE Tests270819 ! Node: RTL Tests272062 ! Node: Options273369 ! Node: Option file format273809 ! Node: Option properties280799 ! Node: Passes294780 ! Node: Parsing pass295670 ! Node: Cilk Plus Transformation299205 ! Node: Gimplification pass302592 ! Node: Pass manager304437 ! Node: Tree SSA passes306282 ! Node: RTL passes327843 ! Node: Optimization info340164 ! Node: Dump setup340982 ! Node: Optimization groups342104 ! Node: Dump files and streams343076 ! Node: Dump output verbosity344267 ! Node: Dump types345318 ! Node: Dump examples346808 ! Node: GENERIC348150 ! Node: Deficiencies350025 ! Node: Tree overview350266 ! Node: Macros and Functions354393 ! Node: Identifiers355218 ! Node: Containers356829 ! Node: Types357986 ! Node: Declarations370082 ! Node: Working with declarations370577 ! Node: Internal structure376183 ! Node: Current structure hierarchy376567 ! Node: Adding new DECL node types378661 ! Node: Attributes382946 ! Node: Expression trees384191 ! Node: Constant expressions385944 ! Node: Storage References389250 ! Node: Unary and Binary Expressions392769 ! Node: Vectors412920 ! Node: Statements418111 ! Node: Basic Statements418643 ! Node: Blocks423150 ! Node: Statement Sequences424851 ! Node: Empty Statements425184 ! Node: Jumps425758 ! Node: Cleanups426411 ! Node: OpenMP428179 ! Node: OpenACC434014 ! Node: Functions435046 ! Node: Function Basics435517 ! Node: Function Properties439202 ! Node: Language-dependent trees441984 ! Node: C and C++ Trees442870 ! Node: Types for C++445774 ! Node: Namespaces450752 ! Node: Classes453859 ! Node: Functions for C++458917 ! Node: Statements for C++465170 ! Node: C++ Expressions473944 ! Node: Java Trees475445 ! Node: GIMPLE475558 ! Node: Tuple representation479220 ! Node: Class hierarchy of GIMPLE statements486153 ! Node: GIMPLE instruction set491141 ! Node: GIMPLE Exception Handling492825 ! Node: Temporaries494739 ! Ref: Temporaries-Footnote-1496054 ! Node: Operands496117 ! Node: Compound Expressions496879 ! Node: Compound Lvalues497113 ! Node: Conditional Expressions497875 ! Node: Logical Operators498533 ! Node: Manipulating GIMPLE statements505398 ! Node: Tuple specific accessors511332 ! Node: `GIMPLE_ASM'512169 ! Node: `GIMPLE_ASSIGN'514557 ! Node: `GIMPLE_BIND'519267 ! Node: `GIMPLE_CALL'521086 ! Node: `GIMPLE_CATCH'525119 ! Node: `GIMPLE_COND'526275 ! Node: `GIMPLE_DEBUG'529076 ! Node: `GIMPLE_EH_FILTER'532460 ! Node: `GIMPLE_LABEL'534029 ! Node: `GIMPLE_GOTO'534648 ! Node: `GIMPLE_NOP'535177 ! Node: `GIMPLE_OMP_ATOMIC_LOAD'535545 ! Node: `GIMPLE_OMP_ATOMIC_STORE'536547 ! Node: `GIMPLE_OMP_CONTINUE'537251 ! Node: `GIMPLE_OMP_CRITICAL'538736 ! Node: `GIMPLE_OMP_FOR'539735 ! Node: `GIMPLE_OMP_MASTER'543157 ! Node: `GIMPLE_OMP_ORDERED'543540 ! Node: `GIMPLE_OMP_PARALLEL'543940 ! Node: `GIMPLE_OMP_RETURN'546716 ! Node: `GIMPLE_OMP_SECTION'547366 ! Node: `GIMPLE_OMP_SECTIONS'548032 ! Node: `GIMPLE_OMP_SINGLE'549647 ! Node: `GIMPLE_PHI'550598 ! Node: `GIMPLE_RESX'551882 ! Node: `GIMPLE_RETURN'552607 ! Node: `GIMPLE_SWITCH'553187 ! Node: `GIMPLE_TRY'555066 ! Node: `GIMPLE_WITH_CLEANUP_EXPR'556843 ! Node: GIMPLE sequences557726 ! Node: Sequence iterators560932 ! Node: Adding a new GIMPLE statement code569390 ! Node: Statement and operand traversals570735 ! Node: Tree SSA573335 ! Node: Annotations575121 ! Node: SSA Operands575526 ! Node: SSA589607 ! Node: Alias analysis599313 ! Node: Memory model603093 ! Node: RTL604456 ! Node: RTL Objects606644 ! Node: RTL Classes610518 ! Node: Accessors615565 ! Node: Special Accessors617959 ! Node: Flags623729 ! Node: Machine Modes638491 ! Node: Constants652169 ! Node: Regs and Memory660255 ! Node: Arithmetic678164 ! Node: Comparisons688218 ! Node: Bit-Fields692510 ! Node: Vector Operations694062 ! Node: Conversions695944 ! Node: RTL Declarations700442 ! Node: Side Effects701263 ! Node: Incdec718278 ! Node: Assembler721613 ! Node: Debug Information723158 ! Node: Insns724356 ! Node: Calls750764 ! Node: Sharing753357 ! Node: Reading RTL756467 ! Node: Control Flow757459 ! Node: Basic Blocks759227 ! Node: Edges764683 ! Node: Profile information773305 ! Node: Maintaining the CFG777989 ! Node: Liveness information783758 ! Node: Loop Analysis and Representation785884 ! Node: Loop representation786920 ! Node: Loop querying794485 ! Node: Loop manipulation797323 ! Node: LCSSA799666 ! Node: Scalar evolutions801738 ! Node: loop-iv804982 ! Node: Number of iterations806908 ! Node: Dependency analysis810993 ! Node: Machine Desc817347 ! Node: Overview819910 ! Node: Patterns821951 ! Node: Example825459 ! Node: RTL Template826920 ! Node: Output Template837576 ! Node: Output Statement841541 ! Node: Predicates845880 ! Node: Machine-Independent Predicates848798 ! Node: Defining Predicates853743 ! Node: Constraints859708 ! Node: Simple Constraints861177 ! Node: Multi-Alternative874033 ! Node: Class Preferences877242 ! Node: Modifiers878134 ! Node: Machine Constraints882866 ! Node: Disable Insn Alternatives942244 ! Node: Define Constraints945733 ! Node: C Constraint Interface953130 ! Node: Standard Names956270 ! Ref: shift patterns982326 ! Ref: prologue instruction pattern1033214 ! Ref: window_save instruction pattern1033707 ! Ref: epilogue instruction pattern1033982 ! Node: Pattern Ordering1052866 ! Node: Dependent Patterns1054102 ! Node: Jump Patterns1055722 ! Ref: Jump Patterns-Footnote-11057866 ! Node: Looping Patterns1057912 ! Node: Insn Canonicalizations1062640 ! Node: Expander Definitions1067231 ! Node: Insn Splitting1075443 ! Node: Including Patterns1085045 ! Node: Peephole Definitions1086825 ! Node: define_peephole1088078 ! Node: define_peephole21094409 ! Node: Insn Attributes1097475 ! Node: Defining Attributes1098657 ! Ref: define_enum_attr1102145 ! Node: Expressions1103180 ! Node: Tagging Insns1109929 ! Node: Attr Example1114282 ! Node: Insn Lengths1116656 ! Node: Constant Attributes1120064 ! Node: Mnemonic Attribute1121240 ! Node: Delay Slots1122759 ! Node: Processor pipeline description1125982 ! Ref: Processor pipeline description-Footnote-11144794 ! Node: Conditional Execution1145116 ! Node: Define Subst1148596 ! Node: Define Subst Example1150630 ! Node: Define Subst Pattern Matching1153624 ! Node: Define Subst Output Template1154849 ! Node: Constant Definitions1156919 ! Ref: define_enum1160701 ! Node: Iterators1161189 ! Node: Mode Iterators1161767 ! Node: Defining Mode Iterators1162745 ! Node: Substitutions1164239 ! Node: Examples1166480 ! Node: Code Iterators1167928 ! Node: Int Iterators1170207 ! Node: Subst Iterators1172650 ! Node: Target Macros1174342 ! Node: Target Structure1177354 ! Node: Driver1179469 ! Node: Run-time Target1198437 ! Node: Per-Function Data1208135 ! Node: Storage Layout1210900 ! Node: Type Layout1237866 ! Node: Registers1251211 ! Node: Register Basics1252185 ! Node: Allocation Order1257620 ! Node: Values in Registers1260108 ! Node: Leaf Functions1267597 ! Node: Stack Registers1270455 ! Node: Register Classes1271727 ! Node: Stack and Calling1305342 ! Node: Frame Layout1305948 ! Node: Exception Handling1316799 ! Node: Stack Checking1323019 ! Node: Frame Registers1327859 ! Node: Elimination1336124 ! Node: Stack Arguments1339510 ! Node: Register Arguments1346691 ! Node: Scalar Return1368997 ! Node: Aggregate Return1375452 ! Node: Caller Saves1379640 ! Node: Function Entry1380383 ! Node: Profiling1391485 ! Node: Tail Calls1393599 ! Node: Shrink-wrapping separate components1395510 ! Node: Stack Smashing Protection1398551 ! Node: Miscellaneous Register Hooks1400474 ! Node: Varargs1401340 ! Node: Trampolines1411462 ! Node: Library Calls1418626 ! Node: Addressing Modes1423310 ! Node: Anchored Addresses1446830 ! Node: Condition Code1449479 ! Node: CC0 Condition Codes1451806 ! Node: MODE_CC Condition Codes1455052 ! Node: Costs1461845 ! Node: Scheduling1482486 ! Node: Sections1506418 ! Node: PIC1522347 ! Node: Assembler Format1524407 ! Node: File Framework1525545 ! Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS1533178 ! Node: Data Output1536443 ! Node: Uninitialized Data1544396 ! Node: Label Output1549407 ! Node: Initialization1574030 ! Node: Macros for Initialization1579992 ! Node: Instruction Output1586715 ! Node: Dispatch Tables1597350 ! Node: Exception Region Output1601750 ! Node: Alignment Output1608849 ! Node: Debugging Info1613451 ! Node: All Debuggers1614121 ! Node: DBX Options1616976 ! Node: DBX Hooks1622425 ! Node: File Names and DBX1623734 ! Node: SDB and DWARF1625846 ! Node: VMS Debug1632135 ! Node: Floating Point1632722 ! Node: Mode Switching1635477 ! Node: Target Attributes1639911 ! Node: Emulated TLS1648875 ! Node: MIPS Coprocessors1652265 ! Node: PCH Target1653424 ! Node: C++ ABI1655266 ! Node: Named Address Spaces1660058 ! Node: Misc1665970 ! Ref: TARGET_SHIFT_TRUNCATION_MASK1673830 ! Node: Host Config1729257 ! Node: Host Common1730326 ! Node: Filesystem1732705 ! Node: Host Misc1736820 ! Node: Fragments1739269 ! Node: Target Fragment1740464 ! Node: Host Fragment1751191 ! Node: Collect21751431 ! Node: Header Dirs1754067 ! Node: Type Information1755490 ! Node: GTY Options1758770 ! Node: Inheritance and GTY1770027 ! Ref: Inheritance and GTY-Footnote-11771592 ! Node: User GC1771860 ! Node: GGC Roots1775595 ! Node: Files1776311 ! Node: Invoking the garbage collector1779018 ! Node: Troubleshooting1780521 ! Node: Plugins1781597 ! Node: Plugins loading1782726 ! Node: Plugin API1783595 ! Node: Plugins pass1791322 ! Node: Plugins GC1793291 ! Node: Plugins description1795006 ! Node: Plugins attr1795541 ! Node: Plugins recording1797812 ! Node: Plugins gate1798662 ! Node: Plugins tracking1799253 ! Node: Plugins building1799841 ! Node: LTO1801630 ! Node: LTO Overview1802502 ! Node: LTO object file layout1808329 ! Node: IPA1812961 ! Node: WHOPR1821926 ! Node: Internal flags1826487 ! Node: Match and Simplify1827899 ! Node: GIMPLE API1828860 ! Node: The Language1831655 ! Node: Funding1843021 ! Node: GNU Project1845519 ! Node: Copying1846168 ! Node: GNU Free Documentation License1883699 ! Node: Contributors1908839 ! Node: Option Index1948285 ! Node: Concept Index1949162  End Tag Table --- 52260,52618 ---- Node: Directives204954 Node: Selectors215260 Node: Effective-Target Keywords216618 ! Ref: arm_fp_ok224659 ! Ref: arm_neon_ok225588 ! Ref: arm_neon_ok_no_float_abi225757 ! Ref: arm_neonv2_ok225924 ! Ref: arm_fp16_ok226091 ! Ref: arm_neon_fp16_ok226433 ! Ref: arm_vfp3_ok227309 ! Ref: arm_v8_1a_neon_ok227734 ! Ref: arm_v8_2a_fp16_scalar_ok228160 ! Ref: arm_v8_2a_fp16_neon_ok228607 ! Ref: arm_coproc1_ok229667 ! Ref: arm_coproc2_ok229793 ! Ref: arm_coproc3_ok230026 ! Node: Add Options241895 ! Ref: arm_fp16_ieee242913 ! Ref: arm_fp16_alternative243168 ! Node: Require Support245065 ! Node: Final Actions247572 ! Node: Ada Tests253233 ! Node: C Tests254397 ! Node: LTO Testing258819 ! Node: gcov Testing260461 ! Node: profopt Testing263448 ! Node: compat Testing265163 ! Node: Torture Tests269403 ! Node: GIMPLE Tests271039 ! Node: RTL Tests272282 ! Node: Options273589 ! Node: Option file format274029 ! Node: Option properties281019 ! Node: Passes295000 ! Node: Parsing pass295890 ! Node: Cilk Plus Transformation299425 ! Node: Gimplification pass302812 ! Node: Pass manager304657 ! Node: Tree SSA passes306502 ! Node: RTL passes328063 ! Node: Optimization info340384 ! Node: Dump setup341202 ! Node: Optimization groups342324 ! Node: Dump files and streams343296 ! Node: Dump output verbosity344487 ! Node: Dump types345538 ! Node: Dump examples347028 ! Node: GENERIC348370 ! Node: Deficiencies350245 ! Node: Tree overview350486 ! Node: Macros and Functions354613 ! Node: Identifiers355438 ! Node: Containers357049 ! Node: Types358206 ! Node: Declarations370302 ! Node: Working with declarations370797 ! Node: Internal structure376403 ! Node: Current structure hierarchy376787 ! Node: Adding new DECL node types378881 ! Node: Attributes383166 ! Node: Expression trees384411 ! Node: Constant expressions386164 ! Node: Storage References389470 ! Node: Unary and Binary Expressions392989 ! Node: Vectors413140 ! Node: Statements418331 ! Node: Basic Statements418863 ! Node: Blocks423370 ! Node: Statement Sequences425071 ! Node: Empty Statements425404 ! Node: Jumps425978 ! Node: Cleanups426631 ! Node: OpenMP428399 ! Node: OpenACC434234 ! Node: Functions435266 ! Node: Function Basics435737 ! Node: Function Properties439422 ! Node: Language-dependent trees442204 ! Node: C and C++ Trees443090 ! Node: Types for C++445994 ! Node: Namespaces450972 ! Node: Classes454079 ! Node: Functions for C++459137 ! Node: Statements for C++465390 ! Node: C++ Expressions474164 ! Node: Java Trees475665 ! Node: GIMPLE475778 ! Node: Tuple representation479440 ! Node: Class hierarchy of GIMPLE statements486373 ! Node: GIMPLE instruction set491361 ! Node: GIMPLE Exception Handling493045 ! Node: Temporaries494959 ! Ref: Temporaries-Footnote-1496274 ! Node: Operands496337 ! Node: Compound Expressions497099 ! Node: Compound Lvalues497333 ! Node: Conditional Expressions498095 ! Node: Logical Operators498753 ! Node: Manipulating GIMPLE statements505618 ! Node: Tuple specific accessors511552 ! Node: `GIMPLE_ASM'512389 ! Node: `GIMPLE_ASSIGN'514777 ! Node: `GIMPLE_BIND'519487 ! Node: `GIMPLE_CALL'521306 ! Node: `GIMPLE_CATCH'525339 ! Node: `GIMPLE_COND'526495 ! Node: `GIMPLE_DEBUG'529296 ! Node: `GIMPLE_EH_FILTER'532680 ! Node: `GIMPLE_LABEL'534249 ! Node: `GIMPLE_GOTO'534868 ! Node: `GIMPLE_NOP'535397 ! Node: `GIMPLE_OMP_ATOMIC_LOAD'535765 ! Node: `GIMPLE_OMP_ATOMIC_STORE'536767 ! Node: `GIMPLE_OMP_CONTINUE'537471 ! Node: `GIMPLE_OMP_CRITICAL'538956 ! Node: `GIMPLE_OMP_FOR'539955 ! Node: `GIMPLE_OMP_MASTER'543377 ! Node: `GIMPLE_OMP_ORDERED'543760 ! Node: `GIMPLE_OMP_PARALLEL'544160 ! Node: `GIMPLE_OMP_RETURN'546936 ! Node: `GIMPLE_OMP_SECTION'547586 ! Node: `GIMPLE_OMP_SECTIONS'548252 ! Node: `GIMPLE_OMP_SINGLE'549867 ! Node: `GIMPLE_PHI'550818 ! Node: `GIMPLE_RESX'552102 ! Node: `GIMPLE_RETURN'552827 ! Node: `GIMPLE_SWITCH'553407 ! Node: `GIMPLE_TRY'555286 ! Node: `GIMPLE_WITH_CLEANUP_EXPR'557063 ! Node: GIMPLE sequences557946 ! Node: Sequence iterators561152 ! Node: Adding a new GIMPLE statement code569610 ! Node: Statement and operand traversals570955 ! Node: Tree SSA573555 ! Node: Annotations575341 ! Node: SSA Operands575746 ! Node: SSA589827 ! Node: Alias analysis599533 ! Node: Memory model603313 ! Node: RTL604676 ! Node: RTL Objects606864 ! Node: RTL Classes610738 ! Node: Accessors615785 ! Node: Special Accessors618179 ! Node: Flags623949 ! Node: Machine Modes638711 ! Node: Constants652389 ! Node: Regs and Memory660475 ! Node: Arithmetic678384 ! Node: Comparisons688438 ! Node: Bit-Fields692730 ! Node: Vector Operations694282 ! Node: Conversions696164 ! Node: RTL Declarations700662 ! Node: Side Effects701483 ! Node: Incdec718498 ! Node: Assembler721833 ! Node: Debug Information723378 ! Node: Insns724576 ! Node: Calls750984 ! Node: Sharing753577 ! Node: Reading RTL756687 ! Node: Control Flow757679 ! Node: Basic Blocks759447 ! Node: Edges764903 ! Node: Profile information773525 ! Node: Maintaining the CFG778209 ! Node: Liveness information783978 ! Node: Loop Analysis and Representation786104 ! Node: Loop representation787140 ! Node: Loop querying794705 ! Node: Loop manipulation797543 ! Node: LCSSA799886 ! Node: Scalar evolutions801958 ! Node: loop-iv805202 ! Node: Number of iterations807128 ! Node: Dependency analysis811213 ! Node: Machine Desc817567 ! Node: Overview820130 ! Node: Patterns822171 ! Node: Example825679 ! Node: RTL Template827140 ! Node: Output Template837796 ! Node: Output Statement841761 ! Node: Predicates846100 ! Node: Machine-Independent Predicates849018 ! Node: Defining Predicates853963 ! Node: Constraints859928 ! Node: Simple Constraints861397 ! Node: Multi-Alternative874253 ! Node: Class Preferences877462 ! Node: Modifiers878354 ! Node: Machine Constraints883086 ! Node: Disable Insn Alternatives942464 ! Node: Define Constraints945953 ! Node: C Constraint Interface953350 ! Node: Standard Names956490 ! Ref: shift patterns982546 ! Ref: prologue instruction pattern1033434 ! Ref: window_save instruction pattern1033927 ! Ref: epilogue instruction pattern1034202 ! Node: Pattern Ordering1053086 ! Node: Dependent Patterns1054322 ! Node: Jump Patterns1055942 ! Ref: Jump Patterns-Footnote-11058086 ! Node: Looping Patterns1058132 ! Node: Insn Canonicalizations1062860 ! Node: Expander Definitions1067451 ! Node: Insn Splitting1075663 ! Node: Including Patterns1085265 ! Node: Peephole Definitions1087045 ! Node: define_peephole1088298 ! Node: define_peephole21094629 ! Node: Insn Attributes1097695 ! Node: Defining Attributes1098877 ! Ref: define_enum_attr1102365 ! Node: Expressions1103400 ! Node: Tagging Insns1110149 ! Node: Attr Example1114502 ! Node: Insn Lengths1116876 ! Node: Constant Attributes1120284 ! Node: Mnemonic Attribute1121460 ! Node: Delay Slots1122979 ! Node: Processor pipeline description1126202 ! Ref: Processor pipeline description-Footnote-11145014 ! Node: Conditional Execution1145336 ! Node: Define Subst1148816 ! Node: Define Subst Example1150850 ! Node: Define Subst Pattern Matching1153844 ! Node: Define Subst Output Template1155069 ! Node: Constant Definitions1157139 ! Ref: define_enum1160921 ! Node: Iterators1161409 ! Node: Mode Iterators1161987 ! Node: Defining Mode Iterators1162965 ! Node: Substitutions1164459 ! Node: Examples1166700 ! Node: Code Iterators1168148 ! Node: Int Iterators1170427 ! Node: Subst Iterators1172870 ! Node: Target Macros1174562 ! Node: Target Structure1177574 ! Node: Driver1179689 ! Node: Run-time Target1198657 ! Node: Per-Function Data1208355 ! Node: Storage Layout1211120 ! Node: Type Layout1238086 ! Node: Registers1251431 ! Node: Register Basics1252405 ! Node: Allocation Order1257840 ! Node: Values in Registers1260328 ! Node: Leaf Functions1267817 ! Node: Stack Registers1270675 ! Node: Register Classes1271947 ! Node: Stack and Calling1305562 ! Node: Frame Layout1306168 ! Node: Exception Handling1317019 ! Node: Stack Checking1323239 ! Node: Frame Registers1328079 ! Node: Elimination1336344 ! Node: Stack Arguments1339730 ! Node: Register Arguments1346911 ! Node: Scalar Return1369217 ! Node: Aggregate Return1375672 ! Node: Caller Saves1379860 ! Node: Function Entry1380603 ! Node: Profiling1391705 ! Node: Tail Calls1393819 ! Node: Shrink-wrapping separate components1395730 ! Node: Stack Smashing Protection1398771 ! Node: Miscellaneous Register Hooks1400694 ! Node: Varargs1401560 ! Node: Trampolines1411682 ! Node: Library Calls1418846 ! Node: Addressing Modes1423530 ! Node: Anchored Addresses1447050 ! Node: Condition Code1449699 ! Node: CC0 Condition Codes1452026 ! Node: MODE_CC Condition Codes1455272 ! Node: Costs1462065 ! Node: Scheduling1482706 ! Node: Sections1506638 ! Node: PIC1522567 ! Node: Assembler Format1524627 ! Node: File Framework1525765 ! Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS1533398 ! Node: Data Output1536663 ! Node: Uninitialized Data1544616 ! Node: Label Output1549627 ! Node: Initialization1574250 ! Node: Macros for Initialization1580212 ! Node: Instruction Output1586935 ! Node: Dispatch Tables1597570 ! Node: Exception Region Output1601970 ! Node: Alignment Output1609069 ! Node: Debugging Info1613671 ! Node: All Debuggers1614341 ! Node: DBX Options1617196 ! Node: DBX Hooks1622645 ! Node: File Names and DBX1623954 ! Node: SDB and DWARF1626066 ! Node: VMS Debug1632355 ! Node: Floating Point1632942 ! Node: Mode Switching1635697 ! Node: Target Attributes1640131 ! Node: Emulated TLS1649095 ! Node: MIPS Coprocessors1652485 ! Node: PCH Target1653644 ! Node: C++ ABI1655486 ! Node: Named Address Spaces1660278 ! Node: Misc1666190 ! Ref: TARGET_SHIFT_TRUNCATION_MASK1674050 ! Node: Host Config1729477 ! Node: Host Common1730546 ! Node: Filesystem1732925 ! Node: Host Misc1737040 ! Node: Fragments1739489 ! Node: Target Fragment1740684 ! Node: Host Fragment1751411 ! Node: Collect21751651 ! Node: Header Dirs1754287 ! Node: Type Information1755710 ! Node: GTY Options1758990 ! Node: Inheritance and GTY1770247 ! Ref: Inheritance and GTY-Footnote-11771812 ! Node: User GC1772080 ! Node: GGC Roots1775815 ! Node: Files1776531 ! Node: Invoking the garbage collector1779238 ! Node: Troubleshooting1780741 ! Node: Plugins1781817 ! Node: Plugins loading1782946 ! Node: Plugin API1783815 ! Node: Plugins pass1791542 ! Node: Plugins GC1793511 ! Node: Plugins description1795226 ! Node: Plugins attr1795761 ! Node: Plugins recording1798032 ! Node: Plugins gate1798882 ! Node: Plugins tracking1799473 ! Node: Plugins building1800061 ! Node: LTO1801850 ! Node: LTO Overview1802722 ! Node: LTO object file layout1808549 ! Node: IPA1813181 ! Node: WHOPR1822146 ! Node: Internal flags1826707 ! Node: Match and Simplify1828119 ! Node: GIMPLE API1829080 ! Node: The Language1831875 ! Node: Funding1843241 ! Node: GNU Project1845739 ! Node: Copying1846388 ! Node: GNU Free Documentation License1883919 ! Node: Contributors1909059 ! Node: Option Index1948505 ! Node: Concept Index1949382  End Tag Table diff -Nrcpad gcc-7.4.0/gcc/doc/gcov-dump.1 gcc-7.5.0/gcc/doc/gcov-dump.1 *** gcc-7.4.0/gcc/doc/gcov-dump.1 Thu Dec 6 09:59:45 2018 --- gcc-7.5.0/gcc/doc/gcov-dump.1 Thu Nov 14 07:36:16 2019 *************** *** 133,139 **** .\" ======================================================================== .\" .IX Title "GCOV-DUMP 1" ! .TH GCOV-DUMP 1 "2018-12-06" "gcc-7.4.0" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 133,139 ---- .\" ======================================================================== .\" .IX Title "GCOV-DUMP 1" ! .TH GCOV-DUMP 1 "2019-11-14" "gcc-7.5.0" "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-7.4.0/gcc/doc/gcov-tool.1 gcc-7.5.0/gcc/doc/gcov-tool.1 *** gcc-7.4.0/gcc/doc/gcov-tool.1 Thu Dec 6 09:59:45 2018 --- gcc-7.5.0/gcc/doc/gcov-tool.1 Thu Nov 14 07:36:16 2019 *************** *** 133,139 **** .\" ======================================================================== .\" .IX Title "GCOV-TOOL 1" ! .TH GCOV-TOOL 1 "2018-12-06" "gcc-7.4.0" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 133,139 ---- .\" ======================================================================== .\" .IX Title "GCOV-TOOL 1" ! .TH GCOV-TOOL 1 "2019-11-14" "gcc-7.5.0" "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-7.4.0/gcc/doc/gcov.1 gcc-7.5.0/gcc/doc/gcov.1 *** gcc-7.4.0/gcc/doc/gcov.1 Thu Dec 6 09:59:45 2018 --- gcc-7.5.0/gcc/doc/gcov.1 Thu Nov 14 07:36:16 2019 *************** *** 133,139 **** .\" ======================================================================== .\" .IX Title "GCOV 1" ! .TH GCOV 1 "2018-12-06" "gcc-7.4.0" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 133,139 ---- .\" ======================================================================== .\" .IX Title "GCOV 1" ! .TH GCOV 1 "2019-11-14" "gcc-7.5.0" "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-7.4.0/gcc/doc/gfdl.7 gcc-7.5.0/gcc/doc/gfdl.7 *** gcc-7.4.0/gcc/doc/gfdl.7 Thu Dec 6 09:59:45 2018 --- gcc-7.5.0/gcc/doc/gfdl.7 Thu Nov 14 07:36:16 2019 *************** *** 133,139 **** .\" ======================================================================== .\" .IX Title "GFDL 7" ! .TH GFDL 7 "2018-12-06" "gcc-7.4.0" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 133,139 ---- .\" ======================================================================== .\" .IX Title "GFDL 7" ! .TH GFDL 7 "2019-11-14" "gcc-7.5.0" "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-7.4.0/gcc/doc/gfortran.1 gcc-7.5.0/gcc/doc/gfortran.1 *** gcc-7.4.0/gcc/doc/gfortran.1 Thu Dec 6 10:20:52 2018 --- gcc-7.5.0/gcc/doc/gfortran.1 Thu Nov 14 07:57:25 2019 *************** *** 133,139 **** .\" ======================================================================== .\" .IX Title "GFORTRAN 1" ! .TH GFORTRAN 1 "2018-12-06" "gcc-7.4.0" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 133,139 ---- .\" ======================================================================== .\" .IX Title "GFORTRAN 1" ! .TH GFORTRAN 1 "2019-11-14" "gcc-7.5.0" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l *************** by type. Explanations are in the follow *** 224,230 **** .IP "\fICode Generation Options\fR" 4 .IX Item "Code Generation Options" \&\fB\-faggressive\-function\-elimination \-fblas\-matmul\-limit=\fR\fIn\fR ! \&\fB\-fbounds\-check \-fcheck\-array\-temporaries \&\-fcheck=\fR\fI\fR \&\fB\-fcoarray=\fR\fI\fR \fB\-fexternal\-blas \-ff2c \&\-ffrontend\-optimize --- 224,231 ---- .IP "\fICode Generation Options\fR" 4 .IX Item "Code Generation Options" \&\fB\-faggressive\-function\-elimination \-fblas\-matmul\-limit=\fR\fIn\fR ! \&\fB\-fbounds\-check \-ftail\-call\-workaround \-ftail\-call\-workaround=\fR\fIn\fR ! \&\fB\-fcheck\-array\-temporaries \&\-fcheck=\fR\fI\fR \&\fB\-fcoarray=\fR\fI\fR \fB\-fexternal\-blas \-ff2c \&\-ffrontend\-optimize *************** warnings for generated array temporaries *** 1276,1281 **** --- 1277,1317 ---- .IP "\fB\-fbounds\-check\fR" 4 .IX Item "-fbounds-check" Deprecated alias for \fB\-fcheck=bounds\fR. + .IP "\fB\-ftail\-call\-workaround\fR" 4 + .IX Item "-ftail-call-workaround" + .PD 0 + .IP "\fB\-ftail\-call\-workaround=\fR\fIn\fR" 4 + .IX Item "-ftail-call-workaround=n" + .PD + Some C interfaces to Fortran codes violate the gfortran \s-1ABI\s0 by + omitting the hidden character length arguments as described in + This can lead to crashes + because pushing arguments for tail calls can overflow the stack. + .Sp + To provide a workaround for existing binary packages, this option + disables tail call optimization for gfortran procedures with character + arguments. With \fB\-ftail\-call\-workaround=2\fR tail call optimization + is disabled in all gfortran procedures with character arguments, + with \fB\-ftail\-call\-workaround=1\fR or equivalent + \&\fB\-ftail\-call\-workaround\fR only in gfortran procedures with character + arguments that call implicitly prototyped procedures. + .Sp + Using this option can lead to problems including crashes due to + insufficient stack space. + .Sp + It is \fIvery strongly\fR recommended to fix the code in question. + The \fB\-fc\-prototypes\-external\fR option can be used to generate + prototypes which conform to gfortran's \s-1ABI,\s0 for inclusion in the + source code. + .Sp + Support for this option will likely be withdrawn in a future release + of gfortran. + .Sp + The negative form, \fB\-fno\-tail\-call\-workaround\fR or equivalent + \&\fB\-ftail\-call\-workaround=0\fR, can be used to disable this option. + .Sp + Default is currently \fB\-ftail\-call\-workaround\fR, this will change + in future releases. .IP "\fB\-fcheck\-array\-temporaries\fR" 4 .IX Item "-fcheck-array-temporaries" Deprecated alias for \fB\-fcheck=array\-temps\fR. diff -Nrcpad gcc-7.4.0/gcc/doc/gpl.7 gcc-7.5.0/gcc/doc/gpl.7 *** gcc-7.4.0/gcc/doc/gpl.7 Thu Dec 6 09:59:45 2018 --- gcc-7.5.0/gcc/doc/gpl.7 Thu Nov 14 07:36:16 2019 *************** *** 133,139 **** .\" ======================================================================== .\" .IX Title "GPL 7" ! .TH GPL 7 "2018-12-06" "gcc-7.4.0" "GNU" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l --- 133,139 ---- .\" ======================================================================== .\" .IX Title "GPL 7" ! .TH GPL 7 "2019-11-14" "gcc-7.5.0" "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-7.4.0/gcc/doc/invoke.texi gcc-7.5.0/gcc/doc/invoke.texi *** gcc-7.4.0/gcc/doc/invoke.texi Mon Nov 26 15:08:49 2018 --- gcc-7.5.0/gcc/doc/invoke.texi Thu Mar 28 08:53:49 2019 *************** results. This is the default. *** 7136,7148 **** @item -Os @opindex Os Optimize for size. @option{-Os} enables all @option{-O2} optimizations that ! do not typically increase code size. It also performs further ! optimizations designed to reduce code size. @option{-Os} disables the following optimization flags: @gccoptlist{-falign-functions -falign-jumps -falign-loops @gol ! -falign-labels -freorder-blocks -freorder-blocks-algorithm=stc @gol ! -freorder-blocks-and-partition -fprefetch-loop-arrays} @item -Ofast @opindex Ofast --- 7136,7150 ---- @item -Os @opindex Os Optimize for size. @option{-Os} enables all @option{-O2} optimizations that ! do not typically increase code size. @option{-Os} disables the following optimization flags: @gccoptlist{-falign-functions -falign-jumps -falign-loops @gol ! -falign-labels -fprefetch-loop-arrays} ! ! It also enables @option{-finline-functions}, causes the compiler to tune for ! code size rather than execution speed, and performs further optimizations ! designed to reduce code size. @item -Ofast @opindex Ofast *************** heuristically decides which functions ar *** 7261,7267 **** in this way. This inlining applies to all functions, even those not declared inline. ! Enabled at level @option{-O2}. @item -findirect-inlining @opindex findirect-inlining --- 7263,7269 ---- in this way. This inlining applies to all functions, even those not declared inline. ! Enabled at level @option{-O2}, @option{-O3}, @option{-Os}. @item -findirect-inlining @opindex findirect-inlining *************** time thanks to previous inlining. This *** 7270,7276 **** when inlining itself is turned on by the @option{-finline-functions} or @option{-finline-small-functions} options. ! Enabled at level @option{-O2}. @item -finline-functions @opindex finline-functions --- 7272,7278 ---- when inlining itself is turned on by the @option{-finline-functions} or @option{-finline-small-functions} options. ! Enabled at level @option{-O2}, @option{-O3}, @option{-Os}. @item -finline-functions @opindex finline-functions *************** If all calls to a given function are int *** 7282,7288 **** declared @code{static}, then the function is normally not output as assembler code in its own right. ! Enabled at level @option{-O3}. @item -finline-functions-called-once @opindex finline-functions-called-once --- 7284,7291 ---- declared @code{static}, then the function is normally not output as assembler code in its own right. ! Enabled at levels @option{-O3}, @option{-Os}. Also enabled ! by @option{-fprofile-use} and @option{-fauto-profile}. @item -finline-functions-called-once @opindex finline-functions-called-once *************** Disable Book-E SPE ABI extensions for th *** 21937,21948 **** @item -mabi=ibmlongdouble @opindex mabi=ibmlongdouble Change the current ABI to use IBM extended-precision long double. ! This is a PowerPC 32-bit SYSV ABI option. @item -mabi=ieeelongdouble @opindex mabi=ieeelongdouble Change the current ABI to use IEEE extended-precision long double. ! This is a PowerPC 32-bit Linux ABI option. @item -mabi=elfv1 @opindex mabi=elfv1 --- 21940,21953 ---- @item -mabi=ibmlongdouble @opindex mabi=ibmlongdouble Change the current ABI to use IBM extended-precision long double. ! This is a PowerPC 32-bit SYSV ABI option. Requires @option{-mlong-double-128} ! to be enabled. @item -mabi=ieeelongdouble @opindex mabi=ieeelongdouble Change the current ABI to use IEEE extended-precision long double. ! This is a PowerPC 32-bit Linux ABI option. Requires @option{-mlong-double-128} ! to be enabled. @item -mabi=elfv1 @opindex mabi=elfv1 diff -Nrcpad gcc-7.4.0/gcc/doc/sourcebuild.texi gcc-7.5.0/gcc/doc/sourcebuild.texi *** gcc-7.4.0/gcc/doc/sourcebuild.texi Wed Sep 27 15:40:39 2017 --- gcc-7.5.0/gcc/doc/sourcebuild.texi Fri Apr 19 03:30:33 2019 *************** By convention, keywords ending in @code{ *** 1273,1278 **** --- 1273,1288 ---- specified for the particular test in an earlier @code{dg-options} or @code{dg-add-options} directive. + @subsubsection Endianness + + @table @code + @item be + Target uses big-endian memory order for multi-byte and multi-word data. + + @item le + Target uses little-endian memory order for multi-byte and multi-word data. + @end table + @subsubsection Data type sizes @table @code diff -Nrcpad gcc-7.4.0/gcc/dse.c gcc-7.5.0/gcc/dse.c *** gcc-7.4.0/gcc/dse.c Tue Nov 20 14:47:49 2018 --- gcc-7.5.0/gcc/dse.c Tue Aug 20 09:17:04 2019 *************** scan_insn (bb_info_t bb_info, rtx_insn * *** 2389,2398 **** clear_rhs_from_active_local_stores (); } } ! else if (SIBLING_CALL_P (insn) && reload_completed) /* Arguments for a sibling call that are pushed to memory are passed using the incoming argument pointer of the current function. After ! reload that might be (and likely is) frame pointer based. */ add_wild_read (bb_info); else /* Every other call, including pure functions, may read any memory --- 2389,2401 ---- clear_rhs_from_active_local_stores (); } } ! else if (SIBLING_CALL_P (insn) ! && (reload_completed || HARD_FRAME_POINTER_IS_ARG_POINTER)) /* Arguments for a sibling call that are pushed to memory are passed using the incoming argument pointer of the current function. After ! reload that might be (and likely is) frame pointer based. And, if ! it is a frame pointer on the target, even before reload we need to ! kill frame pointer based stores. */ add_wild_read (bb_info); else /* Every other call, including pure functions, may read any memory diff -Nrcpad gcc-7.4.0/gcc/dwarf2out.c gcc-7.5.0/gcc/dwarf2out.c *** gcc-7.4.0/gcc/dwarf2out.c Mon Nov 26 19:49:19 2018 --- gcc-7.5.0/gcc/dwarf2out.c Thu Oct 24 09:38:56 2019 *************** modified_type_die (tree type, int cv_qua *** 12495,12500 **** --- 12495,12502 ---- && TYPE_PRECISION (sizetype) == TYPE_PRECISION (size_type_node) && TYPE_UNSIGNED (sizetype) == TYPE_UNSIGNED (size_type_node)) qualified_type = size_type_node; + if (type == sizetype) + type = qualified_type; } *************** add_const_value_attribute (dw_die_ref di *** 18677,18682 **** --- 18679,18687 ---- case HIGH: case CONST_FIXED: + case MINUS: + case SIGN_EXTEND: + case ZERO_EXTEND: return false; case MEM: *************** gen_formal_parameter_die (tree node, tre *** 21207,21213 **** /* If the contexts differ, we may not be talking about the same thing. */ ! if (parm_die && parm_die->die_parent != context_die) { if (!DECL_ABSTRACT_P (node)) { --- 21212,21221 ---- /* If the contexts differ, we may not be talking about the same thing. */ ! if (parm_die ! && parm_die->die_parent != context_die ! && (parm_die->die_parent->die_tag != DW_TAG_GNU_formal_parameter_pack ! || parm_die->die_parent->die_parent != context_die)) { if (!DECL_ABSTRACT_P (node)) { diff -Nrcpad gcc-7.4.0/gcc/except.c gcc-7.5.0/gcc/except.c *** gcc-7.4.0/gcc/except.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/except.c Fri Aug 30 11:46:29 2019 *************** copy_reg_eh_region_note_forward (rtx not *** 1728,1733 **** --- 1728,1735 ---- if (note == NULL) return; } + else if (is_a (note_or_insn)) + return; note = XEXP (note, 0); for (insn = first; insn != last ; insn = NEXT_INSN (insn)) *************** copy_reg_eh_region_note_backward (rtx no *** 1750,1755 **** --- 1752,1759 ---- if (note == NULL) return; } + else if (is_a (note_or_insn)) + return; note = XEXP (note, 0); for (insn = last; insn != first; insn = PREV_INSN (insn)) diff -Nrcpad gcc-7.4.0/gcc/explow.c gcc-7.5.0/gcc/explow.c *** gcc-7.4.0/gcc/explow.c Thu Feb 2 12:39:09 2017 --- gcc-7.5.0/gcc/explow.c Fri Aug 30 12:48:18 2019 *************** promote_ssa_mode (const_tree name, int * *** 872,887 **** tree type = TREE_TYPE (name); int unsignedp = TYPE_UNSIGNED (type); ! machine_mode mode = TYPE_MODE (type); ! ! /* Bypass TYPE_MODE when it maps vector modes to BLKmode. */ ! if (mode == BLKmode) ! { ! gcc_assert (VECTOR_TYPE_P (type)); ! mode = type->type_common.mode; ! } ! ! machine_mode pmode = promote_mode (type, mode, &unsignedp); if (punsignedp) *punsignedp = unsignedp; --- 872,878 ---- tree type = TREE_TYPE (name); int unsignedp = TYPE_UNSIGNED (type); ! machine_mode pmode = promote_mode (type, TYPE_MODE (type), &unsignedp); if (punsignedp) *punsignedp = unsignedp; diff -Nrcpad gcc-7.4.0/gcc/expmed.c gcc-7.5.0/gcc/expmed.c *** gcc-7.4.0/gcc/expmed.c Fri Oct 12 14:53:11 2018 --- gcc-7.5.0/gcc/expmed.c Fri Aug 30 12:19:33 2019 *************** expand_mult_const (machine_mode mode, rt *** 3179,3189 **** tem = gen_lowpart (nmode, op0); } ! insn = get_last_insn (); ! set_dst_reg_note (insn, REG_EQUAL, ! gen_rtx_MULT (nmode, tem, ! gen_int_mode (val_so_far, nmode)), ! accum_inner); } } --- 3179,3197 ---- tem = gen_lowpart (nmode, op0); } ! /* Don't add a REG_EQUAL note if tem is a paradoxical SUBREG. ! In that case, only the low bits of accum would be guaranteed to ! be equal to the content of the REG_EQUAL note, the upper bits ! can be anything. */ ! if (!paradoxical_subreg_p (tem)) ! { ! insn = get_last_insn (); ! set_dst_reg_note (insn, REG_EQUAL, ! gen_rtx_MULT (nmode, tem, ! gen_int_mode (val_so_far, ! nmode)), ! accum_inner); ! } } } diff -Nrcpad gcc-7.4.0/gcc/expr.c gcc-7.5.0/gcc/expr.c *** gcc-7.4.0/gcc/expr.c Fri Jun 22 21:30:06 2018 --- gcc-7.5.0/gcc/expr.c Fri Aug 30 12:08:46 2019 *************** emit_block_move_hints (rtx x, rtx y, rtx *** 1607,1624 **** else if (may_use_call && ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (x)) && ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (y))) ! { ! /* Since x and y are passed to a libcall, mark the corresponding ! tree EXPR as addressable. */ ! tree y_expr = MEM_EXPR (y); ! tree x_expr = MEM_EXPR (x); ! if (y_expr) ! mark_addressable (y_expr); ! if (x_expr) ! mark_addressable (x_expr); ! retval = emit_block_copy_via_libcall (x, y, size, ! method == BLOCK_OP_TAILCALL); ! } else emit_block_move_via_loop (x, y, size, align); --- 1607,1614 ---- else if (may_use_call && ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (x)) && ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (y))) ! retval = emit_block_copy_via_libcall (x, y, size, ! method == BLOCK_OP_TAILCALL); else emit_block_move_via_loop (x, y, size, align); *************** emit_block_op_via_libcall (enum built_in *** 1859,1864 **** --- 1849,1863 ---- tree call_expr, dst_tree, src_tree, size_tree; machine_mode size_mode; + /* Since dst and src are passed to a libcall, mark the corresponding + tree EXPR as addressable. */ + tree dst_expr = MEM_EXPR (dst); + tree src_expr = MEM_EXPR (src); + if (dst_expr) + mark_addressable (dst_expr); + if (src_expr) + mark_addressable (src_expr); + dst_addr = copy_addr_to_reg (XEXP (dst, 0)); dst_addr = convert_memory_address (ptr_mode, dst_addr); dst_tree = make_tree (ptr_type_node, dst_addr); *************** expand_assignment (tree to, tree from, b *** 5147,5155 **** } else { ! rtx from_rtx ! = simplify_gen_subreg (GET_MODE (to_rtx), result, ! TYPE_MODE (TREE_TYPE (from)), 0); if (from_rtx) { emit_move_insn (XEXP (to_rtx, 0), --- 5146,5159 ---- } else { ! rtx from_rtx; ! if (MEM_P (result)) ! from_rtx = change_address (result, GET_MODE (to_rtx), ! NULL_RTX); ! else ! from_rtx ! = simplify_gen_subreg (GET_MODE (to_rtx), result, ! TYPE_MODE (TREE_TYPE (from)), 0); if (from_rtx) { emit_move_insn (XEXP (to_rtx, 0), *************** expand_assignment (tree to, tree from, b *** 5191,5196 **** --- 5195,5215 ---- emit_move_insn (XEXP (to_rtx, 1), read_complex_part (temp, true)); } } + /* For calls to functions returning variable length structures, if TO_RTX + is not a MEM, go through a MEM because we must not create temporaries + of the VLA type. */ + else if (!MEM_P (to_rtx) + && TREE_CODE (from) == CALL_EXPR + && COMPLETE_TYPE_P (TREE_TYPE (from)) + && TREE_CODE (TYPE_SIZE (TREE_TYPE (from))) != INTEGER_CST) + { + rtx temp = assign_stack_temp (GET_MODE (to_rtx), + GET_MODE_SIZE (GET_MODE (to_rtx))); + result = store_field (temp, bitsize, bitpos, bitregion_start, + bitregion_end, mode1, from, get_alias_set (to), + nontemporal, reversep); + emit_move_insn (to_rtx, temp); + } else { if (MEM_P (to_rtx)) *************** expand_expr_real_2 (sepops ops, rtx targ *** 8671,8677 **** machine_mode innermode = TYPE_MODE (TREE_TYPE (treeop0)); this_optab = usmul_widen_optab; if (find_widening_optab_handler (this_optab, mode, innermode, 0) ! != CODE_FOR_nothing) { if (TYPE_UNSIGNED (TREE_TYPE (treeop0))) expand_operands (treeop0, treeop1, NULL_RTX, &op0, &op1, --- 8690,8696 ---- machine_mode innermode = TYPE_MODE (TREE_TYPE (treeop0)); this_optab = usmul_widen_optab; if (find_widening_optab_handler (this_optab, mode, innermode, 0) ! != CODE_FOR_nothing) { if (TYPE_UNSIGNED (TREE_TYPE (treeop0))) expand_operands (treeop0, treeop1, NULL_RTX, &op0, &op1, *************** expand_expr_real_2 (sepops ops, rtx targ *** 8683,8690 **** != INTEGER_CST check. Handle it. */ if (GET_MODE (op0) == VOIDmode && GET_MODE (op1) == VOIDmode) { ! op0 = convert_modes (innermode, mode, op0, true); ! op1 = convert_modes (innermode, mode, op1, false); return REDUCE_BIT_FIELD (expand_mult (mode, op0, op1, target, unsignedp)); } --- 8702,8709 ---- != INTEGER_CST check. Handle it. */ if (GET_MODE (op0) == VOIDmode && GET_MODE (op1) == VOIDmode) { ! op0 = convert_modes (mode, innermode, op0, true); ! op1 = convert_modes (mode, innermode, op1, false); return REDUCE_BIT_FIELD (expand_mult (mode, op0, op1, target, unsignedp)); } *************** expand_expr_real_2 (sepops ops, rtx targ *** 8706,8712 **** if (TREE_CODE (treeop0) != INTEGER_CST) { if (find_widening_optab_handler (this_optab, mode, innermode, 0) ! != CODE_FOR_nothing) { expand_operands (treeop0, treeop1, NULL_RTX, &op0, &op1, EXPAND_NORMAL); --- 8725,8731 ---- if (TREE_CODE (treeop0) != INTEGER_CST) { if (find_widening_optab_handler (this_optab, mode, innermode, 0) ! != CODE_FOR_nothing) { expand_operands (treeop0, treeop1, NULL_RTX, &op0, &op1, EXPAND_NORMAL); *************** expand_expr_real_2 (sepops ops, rtx targ *** 8715,8723 **** if (GET_MODE (op0) == VOIDmode && GET_MODE (op1) == VOIDmode) { widen_mult_const: ! op0 = convert_modes (innermode, mode, op0, zextend_p); op1 ! = convert_modes (innermode, mode, op1, TYPE_UNSIGNED (TREE_TYPE (treeop1))); return REDUCE_BIT_FIELD (expand_mult (mode, op0, op1, target, --- 8734,8742 ---- if (GET_MODE (op0) == VOIDmode && GET_MODE (op1) == VOIDmode) { widen_mult_const: ! op0 = convert_modes (mode, innermode, op0, zextend_p); op1 ! = convert_modes (mode, innermode, op1, TYPE_UNSIGNED (TREE_TYPE (treeop1))); return REDUCE_BIT_FIELD (expand_mult (mode, op0, op1, target, *************** expand_expr_real_2 (sepops ops, rtx targ *** 8728,8748 **** return REDUCE_BIT_FIELD (temp); } if (find_widening_optab_handler (other_optab, mode, innermode, 0) ! != CODE_FOR_nothing && innermode == word_mode) { rtx htem, hipart; op0 = expand_normal (treeop0); ! if (TREE_CODE (treeop1) == INTEGER_CST) ! op1 = convert_modes (innermode, mode, ! expand_normal (treeop1), ! TYPE_UNSIGNED (TREE_TYPE (treeop1))); ! else ! op1 = expand_normal (treeop1); ! /* op0 and op1 might still be constant, despite the above != INTEGER_CST check. Handle it. */ if (GET_MODE (op0) == VOIDmode && GET_MODE (op1) == VOIDmode) goto widen_mult_const; temp = expand_binop (mode, other_optab, op0, op1, target, unsignedp, OPTAB_LIB_WIDEN); hipart = gen_highpart (innermode, temp); --- 8747,8765 ---- return REDUCE_BIT_FIELD (temp); } if (find_widening_optab_handler (other_optab, mode, innermode, 0) ! != CODE_FOR_nothing && innermode == word_mode) { rtx htem, hipart; op0 = expand_normal (treeop0); ! op1 = expand_normal (treeop1); ! /* op0 and op1 might be constants, despite the above != INTEGER_CST check. Handle it. */ if (GET_MODE (op0) == VOIDmode && GET_MODE (op1) == VOIDmode) goto widen_mult_const; + if (TREE_CODE (treeop1) == INTEGER_CST) + op1 = convert_modes (mode, word_mode, op1, + TYPE_UNSIGNED (TREE_TYPE (treeop1))); temp = expand_binop (mode, other_optab, op0, op1, target, unsignedp, OPTAB_LIB_WIDEN); hipart = gen_highpart (innermode, temp); diff -Nrcpad gcc-7.4.0/gcc/final.c gcc-7.5.0/gcc/final.c *** gcc-7.4.0/gcc/final.c Mon Nov 26 19:49:19 2018 --- gcc-7.5.0/gcc/final.c Fri Aug 30 11:19:17 2019 *************** rest_of_handle_final (void) *** 4490,4496 **** assemble_start_function (current_function_decl, fnname); final_start_function (get_insns (), asm_out_file, optimize); final (get_insns (), asm_out_file, optimize); ! if (flag_ipa_ra) collect_fn_hard_reg_usage (); final_end_function (); --- 4490,4500 ---- assemble_start_function (current_function_decl, fnname); final_start_function (get_insns (), asm_out_file, optimize); final (get_insns (), asm_out_file, optimize); ! if (flag_ipa_ra ! /* Functions with naked attributes are supported only with basic asm ! statements in the body, thus for supported use cases the information ! on clobbered registers is not available. */ ! && !lookup_attribute ("naked", DECL_ATTRIBUTES (current_function_decl))) collect_fn_hard_reg_usage (); final_end_function (); diff -Nrcpad gcc-7.4.0/gcc/fold-const.c gcc-7.5.0/gcc/fold-const.c *** gcc-7.4.0/gcc/fold-const.c Wed Oct 17 17:53:02 2018 --- gcc-7.5.0/gcc/fold-const.c Wed Sep 4 08:06:24 2019 *************** operand_equal_p (const_tree arg0, const_ *** 3044,3053 **** switch (TREE_CODE (arg0)) { case INDIRECT_REF: ! if (!(flags & OEP_ADDRESS_OF) ! && (TYPE_ALIGN (TREE_TYPE (arg0)) ! != TYPE_ALIGN (TREE_TYPE (arg1)))) ! return 0; flags &= ~OEP_ADDRESS_OF; return OP_SAME (0); --- 3044,3059 ---- switch (TREE_CODE (arg0)) { case INDIRECT_REF: ! if (!(flags & OEP_ADDRESS_OF)) ! { ! if (TYPE_ALIGN (TREE_TYPE (arg0)) ! != TYPE_ALIGN (TREE_TYPE (arg1))) ! return 0; ! /* Verify that the access types are compatible. */ ! if (TYPE_MAIN_VARIANT (TREE_TYPE (arg0)) ! != TYPE_MAIN_VARIANT (TREE_TYPE (arg1))) ! return 0; ! } flags &= ~OEP_ADDRESS_OF; return OP_SAME (0); *************** decode_field_reference (location_t loc, *** 4159,4165 **** There are problems with FP fields since the type_for_size call below can fail for, e.g., XFmode. */ if (! INTEGRAL_TYPE_P (TREE_TYPE (exp))) ! return 0; /* We are interested in the bare arrangement of bits, so strip everything that doesn't affect the machine mode. However, record the type of the --- 4165,4171 ---- There are problems with FP fields since the type_for_size call below can fail for, e.g., XFmode. */ if (! INTEGRAL_TYPE_P (TREE_TYPE (exp))) ! return NULL_TREE; /* We are interested in the bare arrangement of bits, so strip everything that doesn't affect the machine mode. However, record the type of the *************** decode_field_reference (location_t loc, *** 4175,4181 **** exp = TREE_OPERAND (exp, 0); STRIP_NOPS (exp); STRIP_NOPS (and_mask); if (TREE_CODE (and_mask) != INTEGER_CST) ! return 0; } inner = get_inner_reference (exp, pbitsize, pbitpos, &offset, pmode, --- 4181,4187 ---- exp = TREE_OPERAND (exp, 0); STRIP_NOPS (exp); STRIP_NOPS (and_mask); if (TREE_CODE (and_mask) != INTEGER_CST) ! return NULL_TREE; } inner = get_inner_reference (exp, pbitsize, pbitpos, &offset, pmode, *************** decode_field_reference (location_t loc, *** 4187,4193 **** || (! AGGREGATE_TYPE_P (TREE_TYPE (inner)) && compare_tree_int (TYPE_SIZE (TREE_TYPE (inner)), *pbitpos + *pbitsize) < 0)) ! return 0; *exp_ = exp; --- 4193,4203 ---- || (! AGGREGATE_TYPE_P (TREE_TYPE (inner)) && compare_tree_int (TYPE_SIZE (TREE_TYPE (inner)), *pbitpos + *pbitsize) < 0)) ! return NULL_TREE; ! ! unsigned_type = lang_hooks.types.type_for_size (*pbitsize, 1); ! if (unsigned_type == NULL_TREE) ! return NULL_TREE; *exp_ = exp; *************** decode_field_reference (location_t loc, *** 4198,4204 **** *punsignedp = TYPE_UNSIGNED (outer_type); /* Compute the mask to access the bitfield. */ - unsigned_type = lang_hooks.types.type_for_size (*pbitsize, 1); precision = TYPE_PRECISION (unsigned_type); mask = build_int_cst_type (unsigned_type, -1); --- 4208,4213 ---- *************** fold_binary_loc (location_t loc, enum tr *** 10726,10733 **** strlen(ptr) != 0 => *ptr != 0 Other cases should reduce to one of these two (or a constant) due to the return value of strlen being unsigned. */ ! if (TREE_CODE (arg0) == CALL_EXPR ! && integer_zerop (arg1)) { tree fndecl = get_callee_fndecl (arg0); --- 10735,10741 ---- strlen(ptr) != 0 => *ptr != 0 Other cases should reduce to one of these two (or a constant) due to the return value of strlen being unsigned. */ ! if (TREE_CODE (arg0) == CALL_EXPR && integer_zerop (arg1)) { tree fndecl = get_callee_fndecl (arg0); *************** fold_binary_loc (location_t loc, enum tr *** 10735,10746 **** && DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL && DECL_FUNCTION_CODE (fndecl) == BUILT_IN_STRLEN && call_expr_nargs (arg0) == 1 ! && TREE_CODE (TREE_TYPE (CALL_EXPR_ARG (arg0, 0))) == POINTER_TYPE) { ! tree iref = build_fold_indirect_ref_loc (loc, ! CALL_EXPR_ARG (arg0, 0)); return fold_build2_loc (loc, code, type, iref, ! build_int_cst (TREE_TYPE (iref), 0)); } } --- 10743,10759 ---- && DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL && DECL_FUNCTION_CODE (fndecl) == BUILT_IN_STRLEN && call_expr_nargs (arg0) == 1 ! && (TREE_CODE (TREE_TYPE (CALL_EXPR_ARG (arg0, 0))) ! == POINTER_TYPE)) { ! tree ptrtype ! = build_pointer_type (build_qualified_type (char_type_node, ! TYPE_QUAL_CONST)); ! tree ptr = fold_convert_loc (loc, ptrtype, ! CALL_EXPR_ARG (arg0, 0)); ! tree iref = build_fold_indirect_ref_loc (loc, ptr); return fold_build2_loc (loc, code, type, iref, ! build_int_cst (TREE_TYPE (iref), 0)); } } diff -Nrcpad gcc-7.4.0/gcc/fortran/ChangeLog gcc-7.5.0/gcc/fortran/ChangeLog *** gcc-7.4.0/gcc/fortran/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gcc/fortran/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,468 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-10-27 Paul Thomas + + Backport from mainline + PR fortran/86248 + * resolve.c (flag_fn_result_spec): Correct a typo before the + function declaration. + * trans-decl.c (gfc_sym_identifier): Boost the length of 'name' + to allow for all variants. Simplify the code by using a pointer + to the symbol's proc_name and taking the return out of each of + the conditional branches. Allow symbols with fn_result_spec set + that do not come from a procedure namespace and have a module + name to go through the non-fn_result_spec branch. + + 2019-10-18 Steven G. Kargl + + PR fortran/69455 + * trans-decl.c (generate_local_decl): Avoid misconstructed + intrinsic modules in a BLOCK construct. + + 2019-09-15 Thomas Koenig + + Backport from trunk + PR fortran/91557 + * trans-decl.c (generate_local_decl): Do not warn if the symbol + is artificial. + * trans-types.c (get_formal_from_actual_arglist): Set artificial + attribute on dummy arguments. + + 2019-09-12 Paul Thomas + + PR fortran/91686 + Backport from mainline + * trans-expr.c (gfc_trans_assignment_1): Copy and paste section + handling the rse.pre block from mainline. + + 2019-08-30 Jakub Jelinek + + Backported from mainline + 2019-05-30 Jakub Jelinek + + * lang.opt (ftail-call-workaround=): Fix a typo - lenghts to lengths. + + 2019-05-16 Jakub Jelinek + + PR fortran/90329 + * lang.opt (fbroken-callers): Remove. + (ftail-call-workaround, ftail-call-workaround=): New options. + * gfortran.h (struct gfc_namespace): Add implicit_interface_calls. + * interface.c (gfc_procedure_use): Set implicit_interface_calls + for calls to implicit interface procedures. + * trans-decl.c (create_function_arglist): Use flag_tail_call_workaround + instead of flag_broken_callers. If it is not 2, also require + sym->ns->implicit_interface_calls. + * invoke.texi (fbroken-callers): Remove documentation. + (ftail-call-workaround, ftail-call-workaround=): Document. + + 2019-05-19 Thomas Koenig + + PR fortran/90329 + * invoke.texi: Document -fbroken-callers. + * lang.opt: Add -fbroken-callers. + * trans-decl.c (create_function_arglist): Only set + DECL_HIDDEN_STRING_LENGTH if flag_broken_callers is set. + + 2019-05-16 Jakub Jelinek + + PR fortran/90329 + * trans-decl.c (create_function_arglist): Set + DECL_HIDDEN_STRING_LENGTH on hidden string length PARM_DECLs if + len is constant. + + 2019-03-11 Jakub Jelinek + + PR fortran/89651 + * trans-openmp.c (gfc_omp_clause_default_ctor): Set TREE_NO_WARNING + on decl if adding COND_EXPR for allocatable. + (gfc_omp_clause_copy_ctor): Set TREE_NO_WARNING on dest. + + 2019-02-01 Jakub Jelinek + + PR fortran/83246 + PR fortran/89084 + * trans-decl.c (generate_local_decl): Add referenced FL_PARAMETERs + if sym->ns->construct_entities rather than if + sym->ns->parent->code->op == EXEC_BLOCK. + + 2019-01-19 Jakub Jelinek + + PR fortran/88902 + * trans-decl.c (gfc_get_symbol_decl): Don't add length to function + or parent function if it has been added there already. + + 2018-12-07 Jakub Jelinek + + PR fortran/88377 + * trans-openmp.c (gfc_omp_clause_default_ctor, + gfc_omp_clause_copy_ctor, gfc_omp_clause_assign_op, + gfc_omp_clause_linear_ctor, gfc_omp_clause_dtor): Only consider + GFC_DECL_GET_SCALAR_ALLOCATABLE vars as scalar allocatables if they + have pointer type. + + 2018-10-25 Jakub Jelinek + + PR fortran/87725 + * openmp.c (gfc_match_omp_clauses): Parse simd, monotonic and + nonmonotonic modifiers regardless of if they have been parsed + already or if the opposite one has. Fix up check whether + comma after modifier should be parsed. + (resolve_omp_clauses): Diagnose schedule modifier restrictions. + + 2019-08-03 Thomas Koenig + Paul Thomas + + Backport from trunk + PR fortran/90786 + PR fortran/90813 + * trans-expr.c (pointer_assignment_is_proc_pointer) Remove as + it is very simple and only called from one place. + (gfc_trans_pointer_assignment): Rename non_proc_pointer_assign + as non_proc_ptr_assign. Assign to it directly, rather than call + to above, deleted function and use gfc_expr_attr instead of + only checking the reference chain. + * trans-decl.c (sym_identifier): New function. + (mangled_identifier): New function, doing most of the work + of gfc_sym_mangled_identifier. + (gfc_sym_mangled_identifier): Use mangled_identifier. Add mangled + identifier to global symbol table. + (get_proc_pointer_decl): Use backend decl from global identifier + if present. + + 2019-06-21 Thomas Koenig + + Backport from trunk + PR fortran/90937 + * trans-types.c (get_formal_from_actual_arglist): Get symbol from + current namespace so it will be freed later. If symbol is of type + character, get an empty character length. + + 2019-06-12 Thomas Koenig + Tomáš Trnka + + Backport from trunk + PR fortran/90744 + * trans-types.c (get_formal_from_actual_arglist): Unset typespec + flags which make no sense for procedures without explicit + interface. + + 2019-05-05 Thomas Koenig + + PR fortran/90344 + * frontend-passes.c (create_var): Bring into sync with gcc 8. + + 2019-04-14 Thomas Koenig + + PR fortran/87352 + Backport from trunk + * gfortran.h (gfc_component): Add finalized field. + * class.c (finalize_component): If the component is already + finalized, return early. Set component->finalized on exit. + + 2019-04-10 Harald Anlauf + + Backport from trunk + PR fortran/89904 + * check.c (gfc_check_transfer): Reject procedures as actual + arguments for SOURCE and MOLD of TRANSFER intrinsic. + + 2019-03-31 Harald Anlauf + + Backport from trunk + PR fortran/83515 + PR fortran/85797 + * trans-types.c (gfc_typenode_for_spec): Handle conversion for + procedure pointers. + * target-memory.c (gfc_element_size): Handle size determination + for procedure pointers. + + 2019-03-25 Janus Weil + + PR fortran/71861 + Backport from trunk + * symbol.c (check_conflict): ABSTRACT attribute conflicts with + INTRINSIC attribute. + + 2019-03-23 Thomas Koenig + + PR fortran/68009 + Backport from trunk + * iresolve.c: Include trans.h. + (gfc_resolve_fe_runtine_error): Set backend_decl on + resolved_sym. + + 2019-03-17 Thomas Koenig + + PR fortran/84394 + Backport from trunk + * symbol.c (gfc_add_subroutine): If we are encountering a + subrtoutine within a BLOCK DATA and the name starts with an + underscore, do not check. + + 2019-03-16 Thomas Koenig + + PR fortran/66089 + Backport from trunk + * trans-array.c (gfc_scalar_elemental_arg_saved_as_reference): + Return false if a scalar tempoary is needed. + (gfc_walk_variable_expr): Fix up class refs. + + 2019-03-16 Thomas Koenig + + PR fortran/66695 + PR fortran/77746 + PR fortran/79485 + Backport from trunk + * gfortran.h (gfc_symbol): Add bind_c component. + (gfc_get_gsymbol): Add argument bind_c. + * decl.c (add_global_entry): Add bind_c argument to + gfc_get_symbol. + * parse.c (parse_block_data): Likewise. + (parse_module): Likewise. + (add_global_procedure): Likewise. + (add_global_program): Likewise. + * resolve.c (resolve_common_blocks): Likewise. + (resolve_global_procedure): Likewise. + (gfc_verify_binding_labels): Likewise. + * symbol.c (gfc_get_gsymbol): Add argument bind_c. Set bind_c + in gsym. + * trans-decl.c (gfc_get_module_backend_decl): Add bind_c argument + to gfc_get_symbol. + (gfc_get_extern_function_decl): If the sym has a binding label + and it cannot be found in the global symbol tabel, it is the wrong + one and vice versa. + + 2019-03-13 Thomas Koenig + + PR fortran/87673 + Backport from trunk + * match.c (gfc_match_type_spec): Remove call to + gfc_resolve_expr for character length. + + 2019-03-10 Thomas Koenig + + PR fortran/71544 + Backport from trunk + * trans-types.c (gfc_typenode_for_spec) Set ts->is_c_interop of + C_PTR and C_FUNPTR. + (create_fn_spec): Mark argument as escaping if ts->is_c_interop is set. + + 2019-03-10 Thomas Koenig + Steven G. Kargl + + PR fortran/87734 + Backort from trunk + * symbol.c (gfc_add_procedure): Only throw an error if the + procedure has not been declared either PUBLIC or PRIVATE. + * resolve.c (is_illegal_recursion): Remove an assert(). + + 2019-03-06 Thomas Koenig + + PR fortran/72714 + Backport from trunk + * resolve.c (resolve_allocate_expr): Add some tests for coarrays. + + 2019-03-03 Harald Anlauf + Steven G. Kargl + + Backport from trunk + PR fortran/77583 + * symbol.c (check_conflict): Check for valid procedure name + passed to error reporting routine. + + 2019-03-03 Thomas Koenig + + PR fortran/87689 + Backport from trunk + * trans-decl.c (gfc_get_extern_function_decl): Add argument + actual_args and pass it through to gfc_get_function_type. + * trans-expr.c (conv_function_val): Add argument actual_args + and pass it on to gfc_get_extern_function_decl. + (conv_procedure_call): Pass actual arguments to conv_function_val. + * trans-types.c (get_formal_from_actual_arglist): New function. + (gfc_get_function_type): Add argument actual_args. Generate + formal args from actual args if necessary. + * trans-types.h (gfc_get_function_type): Add optional argument. + * trans.h (gfc_get_extern_function_decl): Add optional argument. + + 2019-02-23 Paul Thomas + + Backport from trunk + PR fortran/88117 + * resolve.c (deferred_op_assign): Return if the lhs expression + has the pointer attribute. + + 2019-02-23 Thomas Koenig + + PR fortran/71066 + Backport from trunk + * trans-decl.c (generate_coarray_sym_init): For an array + constructor in a DATA statement of a coarray variable, set the + rank to 1 to avoid confusion later on. If the constructor + contains only one value, use that for initiailizig. + + 2019-02-10 Harald Anlauf + + Backport from trunk + PR fortran/89077 + * decl.c (add_init_expr_to_sym): Copy length of string initializer + to declared symbol. + + 2019-02-10 Thomas Koenig + + PR fortran/71723 + Backport from trunk + * expr.c (gfc_check_assign): Add argument is_init_expr. If we are + looking at an init expression, issue error if the target is not a + TARGET and we are not looking at a procedure pointer. + * gfortran.h (gfc_check_assign): Add optional argument + is_init_expr. + + 2019-02-05 Thomas Koenig + + PR fortran/67679 + Backport from trunk + * trans-array.c (gfc_array_allocate): For setting the bounds on + the new array, add a condition for a not previously allocated + variable. + + 2019-02-03 Paul Thomas + + Backport from trunk + PR fortran/88393 + * trans-expr.c (gfc_conv_procedure_call): For derived entities, + passed in parentheses to class formals, invert the order of + copying allocatable components to taking the _data of the + class expression. + + 2019-02-02 Thomas Koenig + + PR fortran/88298 + Backport from trunk + * arith.c (gfc_int2int): Do not warn if src->do_not_warn is set. + * gfortran.h (gfc_expr): Add flag do_not_warn. + * intrinsic.c (gfc_convert_type_warn): Set expr->do_not_warn if + no warning is desired. + + 2019-02-02 Thomas Koenig + + PR fortran/57048 + Backport from trunk + * interface.c (gfc_compare_types): If a derived type and an + integer both have a derived type, and they are identical, + this is a C binding type and compares equal. + + 2019-01-27 Paul Thomas + + Backport from trunk + PR fortran/56386 + PR fortran/58906 + PR fortran/77385 + PR fortran/80260 + PR fortran/82077 + * resolve.c (resolve_variable): Fix up expressions with array + associate names, where the parser did not detect that this is + array and there was no array part_ref in the expression. + * trans-expr.c (gfc_find_and_cut_at_last_class_ref): base_expr + should be a copy of e and not the initialization expr. + + 2019-01-15 Steven G. Kargl + + PR fortran/81849 + * resolve.c (resolve_symbol): Host associated varaibles can appear + in the specification statement of a RESULT array. + + 2019-01-11 Steven G. Kargl + + PR fortran/35031 + * decl.c (gfc_match_entry): Check for F2018:C1546. Fix nearby + mis-indentation. + + 2018-12-29 Paul Thomas + + Backport from trunk + PR fortran/82550 + * trans_decl.c (gfc_get_symbol_decl): Procedure symbols that + have the 'used_in_submodule' attribute should be processed by + 'gfc_get_extern_function_decl'. + + 2018-12-23 Paul Thomas + + Backport from trunk + PR fortran/77703 + * resolve.c (get_temp_from_expr): Use the string length of + constant character expressions. + + 2018-12-22 Steven G . Kargl + + PR fortran/85798 + * decl.c (gfc_match_data): If a component of a derived type entity + appears in data statement, check that does not have the allocatable + attribute. + + 2018-12-22 Thomas Koenig + + Backport from trunk + PR fortran/85544 + * frontend-passes.c (optimize_power): Remove. + (optimize_op): Remove call to optimize_power. + * trans-expr.c (gfc_conv_power_op): Handle cases of 1**integer, + (2|4|8|16) ** integer and (-1) ** integer. + + 2018-12-21 Steven G. Kargl + + PR fortran/88169 + * module.c (mio_namelist): Remove an error condition/message that + is contrary to the Fortran standard. + + 2018-12-15 Steven G. Kargl + + PR fortran/88138 + * decl.c (variable_decl): Check that a derived isn't being assigned + an incompatible entity in an initialization. + + 2018-12-11 Steven G. Kargl + + PR fortran/88155 + * primary.c (gfc_match_structure_constructor): Set the locus of + an expression to avoid a NULL pointer dereference. + + 2018-12-11 Steven G. Kargl + + PR fortran/88249 + * gfortran.h: Update prototype for gfc_resolve_filepos(). + * io.c (gfc_resolve_filepos): Check for UNIT number if ERR= is present. + Use passed in locus for error message. + * resolve.c (gfc_resolve_code): Pass locus in gfc_resolve_filepos() + call. + + 2018-12-10 Steven G. Kargl + + PR fortran/88269 + * io.c (io_constraint): Update macro. If locus line buffer is NULL, + use gfc_current_locus in error messages. + (check_io_constraints): Catch missing IO UNIT in write and read + statements. io_constraint macro is incompatible here. + + 2018-12-09 Steven G. Kargl + + PR fortran/88205 + * io.c (gfc_match_open): Move NEWUNIT checks to after STATUS checks. + + 2018-12-09 Steven G. Kargl + + PR fortran/88206 + * match.c (gfc_match_type_spec): REAL can be an intrinsic function. + + 2018-12-09 Fritz Reese + + PR fortran/88228 + * resolve.c (resolve_operator): Do not call resolve_function. + Break like other cases. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/gcc/fortran/arith.c gcc-7.5.0/gcc/fortran/arith.c *** gcc-7.4.0/gcc/fortran/arith.c Sat Mar 10 18:44:25 2018 --- gcc-7.5.0/gcc/fortran/arith.c Sat Feb 2 17:07:40 2019 *************** gfc_int2int (gfc_expr *src, int kind) *** 2050,2056 **** gfc_convert_mpz_to_signed (result->value.integer, gfc_integer_kinds[k].bit_size); ! if (warn_conversion && kind < src->ts.kind) gfc_warning_now (OPT_Wconversion, "Conversion from %qs to %qs at %L", gfc_typename (&src->ts), gfc_typename (&result->ts), &src->where); --- 2050,2056 ---- gfc_convert_mpz_to_signed (result->value.integer, gfc_integer_kinds[k].bit_size); ! if (warn_conversion && !src->do_not_warn && kind < src->ts.kind) gfc_warning_now (OPT_Wconversion, "Conversion from %qs to %qs at %L", gfc_typename (&src->ts), gfc_typename (&result->ts), &src->where); diff -Nrcpad gcc-7.4.0/gcc/fortran/check.c gcc-7.5.0/gcc/fortran/check.c *** gcc-7.4.0/gcc/fortran/check.c Fri May 11 17:58:03 2018 --- gcc-7.5.0/gcc/fortran/check.c Wed Apr 10 21:02:02 2019 *************** gfc_check_transfer (gfc_expr *source, gf *** 5295,5300 **** --- 5295,5320 ---- size_t source_size; size_t result_size; + /* SOURCE shall be a scalar or array of any type. */ + if (source->ts.type == BT_PROCEDURE + && source->symtree->n.sym->attr.subroutine == 1) + { + gfc_error ("% argument of % intrinsic at %L " + "must not be a %s", &source->where, + gfc_basic_typename (source->ts.type)); + return false; + } + + /* MOLD shall be a scalar or array of any type. */ + if (mold->ts.type == BT_PROCEDURE + && mold->symtree->n.sym->attr.subroutine == 1) + { + gfc_error ("% argument of % intrinsic at %L " + "must not be a %s", &mold->where, + gfc_basic_typename (mold->ts.type)); + return false; + } + if (mold->ts.type == BT_HOLLERITH) { gfc_error ("% argument of % intrinsic at %L must not be" *************** gfc_check_transfer (gfc_expr *source, gf *** 5302,5307 **** --- 5322,5329 ---- return false; } + /* SIZE (optional) shall be an integer scalar. The corresponding actual + argument shall not be an optional dummy argument. */ if (size != NULL) { if (!type_check (size, 2, BT_INTEGER)) diff -Nrcpad gcc-7.4.0/gcc/fortran/class.c gcc-7.5.0/gcc/fortran/class.c *** gcc-7.4.0/gcc/fortran/class.c Fri Apr 14 21:17:52 2017 --- gcc-7.5.0/gcc/fortran/class.c Sun Apr 14 12:27:44 2019 *************** finalize_component (gfc_expr *expr, gfc_ *** 899,904 **** --- 899,907 ---- if (!comp_is_finalizable (comp)) return; + if (comp->finalized) + return; + e = gfc_copy_expr (expr); if (!e->ref) e->ref = ref = gfc_get_ref (); *************** finalize_component (gfc_expr *expr, gfc_ *** 1026,1031 **** --- 1029,1035 ---- sub_ns); gfc_free_expr (e); } + comp->finalized = true; } diff -Nrcpad gcc-7.4.0/gcc/fortran/decl.c gcc-7.5.0/gcc/fortran/decl.c *** gcc-7.4.0/gcc/fortran/decl.c Mon Jul 16 23:35:39 2018 --- gcc-7.5.0/gcc/fortran/decl.c Sat Mar 16 13:24:40 2019 *************** match *** 552,557 **** --- 552,558 ---- gfc_match_data (void) { gfc_data *new_data; + gfc_expr *e; match m; /* Before parsing the rest of a DATA statement, check F2008:c1206. */ *************** gfc_match_data (void) *** 588,593 **** --- 589,618 ---- goto cleanup; } + /* Check for an entity with an allocatable component, which is not + allowed. */ + e = new_data->var->expr; + if (e) + { + bool invalid; + + invalid = false; + for (gfc_ref *ref = e->ref; ref; ref = ref->next) + if ((ref->type == REF_COMPONENT + && ref->u.c.component->attr.allocatable) + || (ref->type == REF_ARRAY + && e->symtree->n.sym->attr.pointer != 1 + && ref->u.ar.as && ref->u.ar.as->type == AS_DEFERRED)) + invalid = true; + + if (invalid) + { + gfc_error ("Allocatable component or deferred-shaped array " + "near %C in DATA statement"); + goto cleanup; + } + } + m = top_val_list (new_data); if (m != MATCH_YES) goto cleanup; *************** add_init_expr_to_sym (const char *name, *** 1771,1777 **** } else if (init->ts.u.cl && init->ts.u.cl->length) sym->ts.u.cl->length = ! gfc_copy_expr (sym->value->ts.u.cl->length); } } /* Update initializer character length according symbol. */ --- 1796,1802 ---- } else if (init->ts.u.cl && init->ts.u.cl->length) sym->ts.u.cl->length = ! gfc_copy_expr (init->ts.u.cl->length); } } /* Update initializer character length according symbol. */ *************** variable_decl (int elem) *** 2544,2549 **** --- 2569,2590 ---- goto cleanup; } + /* Before adding a possible initilizer, do a simple check for compatibility + of lhs and rhs types. Assigning a REAL value to a derive type is not a + good thing. */ + if (current_ts.type == BT_DERIVED && initializer + && (gfc_numeric_ts (&initializer->ts) + || initializer->ts.type == BT_LOGICAL + || initializer->ts.type == BT_CHARACTER)) + { + gfc_error ("Incompatible initialization between a derive type " + "entity and an entity with %qs type at %C", + gfc_typename (&initializer->ts)); + m = MATCH_ERROR; + goto cleanup; + } + + /* Add the initializer. Note that it is fine if initializer is NULL here, because we sometimes also need to check if a declaration *must* have an initialization expression. */ *************** add_global_entry (const char *name, cons *** 6239,6245 **** name is a global identifier. */ if (!binding_label || gfc_notification_std (GFC_STD_F2008)) { ! s = gfc_get_gsymbol (name); if (s->defined || (s->type != GSYM_UNKNOWN && s->type != type)) { --- 6280,6286 ---- name is a global identifier. */ if (!binding_label || gfc_notification_std (GFC_STD_F2008)) { ! s = gfc_get_gsymbol (name, false); if (s->defined || (s->type != GSYM_UNKNOWN && s->type != type)) { *************** add_global_entry (const char *name, cons *** 6261,6267 **** && (!gfc_notification_std (GFC_STD_F2008) || strcmp (name, binding_label) != 0)) { ! s = gfc_get_gsymbol (binding_label); if (s->defined || (s->type != GSYM_UNKNOWN && s->type != type)) { --- 6302,6308 ---- && (!gfc_notification_std (GFC_STD_F2008) || strcmp (name, binding_label) != 0)) { ! s = gfc_get_gsymbol (binding_label, true); if (s->defined || (s->type != GSYM_UNKNOWN && s->type != type)) { *************** gfc_match_entry (void) *** 6438,6446 **** gfc_error ("Missing required parentheses before BIND(C) at %C"); return MATCH_ERROR; } ! if (!gfc_add_is_bind_c (&(entry->attr), entry->name, ! &(entry->declared_at), 1)) ! return MATCH_ERROR; } if (!gfc_current_ns->parent --- 6479,6489 ---- gfc_error ("Missing required parentheses before BIND(C) at %C"); return MATCH_ERROR; } ! ! if (!gfc_add_is_bind_c (&(entry->attr), entry->name, ! &(entry->declared_at), 1)) ! return MATCH_ERROR; ! } if (!gfc_current_ns->parent *************** gfc_match_entry (void) *** 6524,6529 **** --- 6567,6580 ---- return MATCH_ERROR; } + /* F2018:C1546 An elemental procedure shall not have the BIND attribute. */ + if (proc->attr.elemental && entry->attr.is_bind_c) + { + gfc_error ("ENTRY statement at %L with BIND(C) prohibited in an " + "elemental procedure", &entry->declared_at); + return MATCH_ERROR; + } + entry->attr.recursive = proc->attr.recursive; entry->attr.elemental = proc->attr.elemental; entry->attr.pure = proc->attr.pure; diff -Nrcpad gcc-7.4.0/gcc/fortran/expr.c gcc-7.5.0/gcc/fortran/expr.c *** gcc-7.4.0/gcc/fortran/expr.c Sat Nov 3 14:49:33 2018 --- gcc-7.5.0/gcc/fortran/expr.c Sun Feb 10 18:41:03 2019 *************** gfc_check_assign (gfc_expr *lvalue, gfc_ *** 3342,3348 **** NULLIFY statement. */ bool ! gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue) { symbol_attribute attr, lhs_attr; gfc_ref *ref; --- 3342,3348 ---- NULLIFY statement. */ bool ! gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue, bool is_init_expr) { symbol_attribute attr, lhs_attr; gfc_ref *ref; *************** gfc_check_pointer_assign (gfc_expr *lval *** 3773,3783 **** return false; } ! if (!attr.target && !attr.pointer) { ! gfc_error ("Pointer assignment target is neither TARGET " ! "nor POINTER at %L", &rvalue->where); ! return false; } if (is_pure && gfc_impure_variable (rvalue->symtree->n.sym)) --- 3773,3807 ---- return false; } ! if (is_init_expr) { ! gfc_symbol *sym; ! bool target; ! ! gcc_assert (rvalue->symtree); ! sym = rvalue->symtree->n.sym; ! ! if (sym->ts.type == BT_CLASS && sym->attr.class_ok) ! target = CLASS_DATA (sym)->attr.target; ! else ! target = sym->attr.target; ! ! if (!target && !proc_pointer) ! { ! gfc_error ("Pointer assignment target in initialization expression " ! "does not have the TARGET attribute at %L", ! &rvalue->where); ! return false; ! } ! } ! else ! { ! if (!attr.target && !attr.pointer) ! { ! gfc_error ("Pointer assignment target is neither TARGET " ! "nor POINTER at %L", &rvalue->where); ! return false; ! } } if (is_pure && gfc_impure_variable (rvalue->symtree->n.sym)) *************** gfc_check_assign_symbol (gfc_symbol *sym *** 3903,3909 **** } if (pointer || proc_pointer) ! r = gfc_check_pointer_assign (&lvalue, rvalue); else { /* If a conversion function, e.g., __convert_i8_i4, was inserted --- 3927,3933 ---- } if (pointer || proc_pointer) ! r = gfc_check_pointer_assign (&lvalue, rvalue, true); else { /* If a conversion function, e.g., __convert_i8_i4, was inserted diff -Nrcpad gcc-7.4.0/gcc/fortran/frontend-passes.c gcc-7.5.0/gcc/fortran/frontend-passes.c *** gcc-7.4.0/gcc/fortran/frontend-passes.c Sun Nov 25 15:23:18 2018 --- gcc-7.5.0/gcc/fortran/frontend-passes.c Sun May 5 14:01:51 2019 *************** create_var (gfc_expr * e, const char *vn *** 701,706 **** --- 701,711 ---- if (e->expr_type == EXPR_CONSTANT || is_fe_temp (e)) return gfc_copy_expr (e); + /* Creation of an array of unknown size requires realloc on assignment. + If that is not possible, just return NULL. */ + if (flag_realloc_lhs == 0 && e->rank > 0 && e->shape == NULL) + return NULL; + ns = insert_block (); if (vname) *************** create_var (gfc_expr * e, const char *vn *** 748,754 **** } deferred = 0; ! if (e->ts.type == BT_CHARACTER && e->rank == 0) { gfc_expr *length; --- 753,759 ---- } deferred = 0; ! if (e->ts.type == BT_CHARACTER) { gfc_expr *length; *************** create_var (gfc_expr * e, const char *vn *** 759,764 **** --- 764,771 ---- else { symbol->attr.allocatable = 1; + symbol->ts.u.cl->length = NULL; + symbol->ts.deferred = 1; deferred = 1; } } *************** create_var (gfc_expr * e, const char *vn *** 771,777 **** result = gfc_get_expr (); result->expr_type = EXPR_VARIABLE; ! result->ts = e->ts; result->ts.deferred = deferred; result->rank = e->rank; result->shape = gfc_copy_shape (e->shape, e->rank); --- 778,784 ---- result = gfc_get_expr (); result->expr_type = EXPR_VARIABLE; ! result->ts = symbol->ts; result->ts.deferred = deferred; result->rank = e->rank; result->shape = gfc_copy_shape (e->shape, e->rank); *************** combine_array_constructor (gfc_expr *e) *** 1422,1505 **** return true; } - /* Change (-1)**k into 1-ishift(iand(k,1),1) and - 2**k into ishift(1,k) */ - - static bool - optimize_power (gfc_expr *e) - { - gfc_expr *op1, *op2; - gfc_expr *iand, *ishft; - - if (e->ts.type != BT_INTEGER) - return false; - - op1 = e->value.op.op1; - - if (op1 == NULL || op1->expr_type != EXPR_CONSTANT) - return false; - - if (mpz_cmp_si (op1->value.integer, -1L) == 0) - { - gfc_free_expr (op1); - - op2 = e->value.op.op2; - - if (op2 == NULL) - return false; - - iand = gfc_build_intrinsic_call (current_ns, GFC_ISYM_IAND, - "_internal_iand", e->where, 2, op2, - gfc_get_int_expr (e->ts.kind, - &e->where, 1)); - - ishft = gfc_build_intrinsic_call (current_ns, GFC_ISYM_ISHFT, - "_internal_ishft", e->where, 2, iand, - gfc_get_int_expr (e->ts.kind, - &e->where, 1)); - - e->value.op.op = INTRINSIC_MINUS; - e->value.op.op1 = gfc_get_int_expr (e->ts.kind, &e->where, 1); - e->value.op.op2 = ishft; - return true; - } - else if (mpz_cmp_si (op1->value.integer, 2L) == 0) - { - gfc_free_expr (op1); - - op2 = e->value.op.op2; - if (op2 == NULL) - return false; - - ishft = gfc_build_intrinsic_call (current_ns, GFC_ISYM_ISHFT, - "_internal_ishft", e->where, 2, - gfc_get_int_expr (e->ts.kind, - &e->where, 1), - op2); - *e = *ishft; - return true; - } - - else if (mpz_cmp_si (op1->value.integer, 1L) == 0) - { - op2 = e->value.op.op2; - if (op2 == NULL) - return false; - - gfc_free_expr (op1); - gfc_free_expr (op2); - - e->expr_type = EXPR_CONSTANT; - e->value.op.op1 = NULL; - e->value.op.op2 = NULL; - mpz_init_set_si (e->value.integer, 1); - /* Typespec and location are still OK. */ - return true; - } - - return false; - } - /* Recursive optimization of operators. */ static bool --- 1429,1434 ---- *************** optimize_op (gfc_expr *e) *** 1560,1568 **** case INTRINSIC_DIVIDE: return combine_array_constructor (e) || changed; - case INTRINSIC_POWER: - return optimize_power (e); - default: break; } --- 1489,1494 ---- diff -Nrcpad gcc-7.4.0/gcc/fortran/gfortran.h gcc-7.5.0/gcc/fortran/gfortran.h *** gcc-7.4.0/gcc/fortran/gfortran.h Sun Mar 4 13:56:09 2018 --- gcc-7.5.0/gcc/fortran/gfortran.h Fri Aug 30 12:41:43 2019 *************** typedef struct gfc_component *** 1058,1063 **** --- 1058,1064 ---- struct gfc_typebound_proc *tb; /* When allocatable/pointer and in a coarray the associated token. */ tree caf_token; + bool finalized; } gfc_component; *************** typedef struct gfc_namespace *** 1827,1832 **** --- 1828,1836 ---- /* Set to 1 for !$ACC ROUTINE namespaces. */ unsigned oacc_routine:1; + + /* Set to 1 if there are any calls to procedures with implicit interface. */ + unsigned implicit_interface_calls:1; } gfc_namespace; *************** typedef struct gfc_gsymbol *** 1854,1859 **** --- 1858,1864 ---- enum gfc_symbol_type type; int defined, used; + bool bind_c; locus where; gfc_namespace *ns; } *************** typedef struct gfc_expr *** 2106,2111 **** --- 2111,2119 ---- /* Will require finalization after use. */ unsigned int must_finalize : 1; + /* Set this if no warning should be given somewhere in a lower level. */ + + unsigned int do_not_warn : 1; /* If an expression comes from a Hollerith constant or compile-time evaluation of a transfer statement, it may have a prescribed target- memory representation, and these cannot always be backformed from *************** void gfc_enforce_clean_symbol_state (voi *** 2988,2994 **** void gfc_free_dt_list (void); ! gfc_gsymbol *gfc_get_gsymbol (const char *); gfc_gsymbol *gfc_find_gsymbol (gfc_gsymbol *, const char *); gfc_typebound_proc* gfc_get_typebound_proc (gfc_typebound_proc*); --- 2996,3002 ---- void gfc_free_dt_list (void); ! gfc_gsymbol *gfc_get_gsymbol (const char *, bool bind_c); gfc_gsymbol *gfc_find_gsymbol (gfc_gsymbol *, const char *); gfc_typebound_proc* gfc_get_typebound_proc (gfc_typebound_proc*); *************** int gfc_kind_max (gfc_expr *, gfc_expr * *** 3124,3130 **** bool gfc_check_conformance (gfc_expr *, gfc_expr *, const char *, ...) ATTRIBUTE_PRINTF_3; bool gfc_check_assign (gfc_expr *, gfc_expr *, int, bool c = true); ! bool gfc_check_pointer_assign (gfc_expr *, gfc_expr *); bool gfc_check_assign_symbol (gfc_symbol *, gfc_component *, gfc_expr *); gfc_expr *gfc_build_default_init_expr (gfc_typespec *, locus *); --- 3132,3138 ---- bool gfc_check_conformance (gfc_expr *, gfc_expr *, const char *, ...) ATTRIBUTE_PRINTF_3; bool gfc_check_assign (gfc_expr *, gfc_expr *, int, bool c = true); ! bool gfc_check_pointer_assign (gfc_expr *, gfc_expr *, bool is_init_expr = false); bool gfc_check_assign_symbol (gfc_symbol *, gfc_component *, gfc_expr *); gfc_expr *gfc_build_default_init_expr (gfc_typespec *, locus *); *************** bool gfc_resolve_open (gfc_open *); *** 3269,3275 **** void gfc_free_close (gfc_close *); bool gfc_resolve_close (gfc_close *); void gfc_free_filepos (gfc_filepos *); ! bool gfc_resolve_filepos (gfc_filepos *); void gfc_free_inquire (gfc_inquire *); bool gfc_resolve_inquire (gfc_inquire *); void gfc_free_dt (gfc_dt *); --- 3277,3283 ---- void gfc_free_close (gfc_close *); bool gfc_resolve_close (gfc_close *); void gfc_free_filepos (gfc_filepos *); ! bool gfc_resolve_filepos (gfc_filepos *, locus *); void gfc_free_inquire (gfc_inquire *); bool gfc_resolve_inquire (gfc_inquire *); void gfc_free_dt (gfc_dt *); diff -Nrcpad gcc-7.4.0/gcc/fortran/gfortran.info gcc-7.5.0/gcc/fortran/gfortran.info *** gcc-7.4.0/gcc/fortran/gfortran.info Thu Dec 6 10:20:52 2018 --- gcc-7.5.0/gcc/fortran/gfortran.info Thu Nov 14 07:57:25 2019 *************** *** 1,5 **** This is doc/gfortran.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/fortran/gfortran.texi. Copyright (C) 1999-2017 Free Software Foundation, Inc. --- 1,5 ---- This is doc/gfortran.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/fortran/gfortran.texi. Copyright (C) 1999-2017 Free Software Foundation, Inc. *************** _Runtime Options_ *** 482,488 **** _Code Generation Options_ *Note Options for code generation conventions: Code Gen Options. -faggressive-function-elimination -fblas-matmul-limit=N ! -fbounds-check -fcheck-array-temporaries -fcheck= -fcoarray= -fexternal-blas -ff2c -ffrontend-optimize --- 482,489 ---- _Code Generation Options_ *Note Options for code generation conventions: Code Gen Options. -faggressive-function-elimination -fblas-matmul-limit=N ! -fbounds-check -ftail-call-workaround -ftail-call-workaround=N ! -fcheck-array-temporaries -fcheck= -fcoarray= -fexternal-blas -ff2c -ffrontend-optimize *************** the other form by either removing `no-' *** 1561,1566 **** --- 1562,1599 ---- `-fbounds-check' Deprecated alias for `-fcheck=bounds'. + `-ftail-call-workaround' + `-ftail-call-workaround=N' + Some C interfaces to Fortran codes violate the gfortran ABI by + omitting the hidden character length arguments as described in + *Note Argument passing conventions::. This can lead to crashes + because pushing arguments for tail calls can overflow the stack. + + To provide a workaround for existing binary packages, this option + disables tail call optimization for gfortran procedures with + character arguments. With `-ftail-call-workaround=2' tail call + optimization is disabled in all gfortran procedures with character + arguments, with `-ftail-call-workaround=1' or equivalent + `-ftail-call-workaround' only in gfortran procedures with character + arguments that call implicitly prototyped procedures. + + Using this option can lead to problems including crashes due to + insufficient stack space. + + It is _very strongly_ recommended to fix the code in question. + The `-fc-prototypes-external' option can be used to generate + prototypes which conform to gfortran's ABI, for inclusion in the + source code. + + Support for this option will likely be withdrawn in a future + release of gfortran. + + The negative form, `-fno-tail-call-workaround' or equivalent + `-ftail-call-workaround=0', can be used to disable this option. + + Default is currently `-ftail-call-workaround', this will change in + future releases. + `-fcheck-array-temporaries' Deprecated alias for `-fcheck=array-temps'. *************** look up both forms. *** 20804,20817 **** (line 156) * dU: Preprocessing Options. (line 44) ! * faggressive-function-elimination: Code Gen Options. (line 364) ! * falign-commons: Code Gen Options. (line 337) * fall-intrinsics: Fortran Dialect Options. (line 17) ! * fblas-matmul-limit: Code Gen Options. (line 275) * fbounds-check: Code Gen Options. (line 199) * fcheck: Code Gen Options. (line 143) ! * fcheck-array-temporaries: Code Gen Options. (line 202) * fcoarray: Code Gen Options. (line 129) * fconvert=CONVERSION: Runtime Options. (line 10) * fcray-pointer: Fortran Dialect Options. --- 20837,20850 ---- (line 156) * dU: Preprocessing Options. (line 44) ! * faggressive-function-elimination: Code Gen Options. (line 396) ! * falign-commons: Code Gen Options. (line 369) * fall-intrinsics: Fortran Dialect Options. (line 17) ! * fblas-matmul-limit: Code Gen Options. (line 307) * fbounds-check: Code Gen Options. (line 199) * fcheck: Code Gen Options. (line 143) ! * fcheck-array-temporaries: Code Gen Options. (line 234) * fcoarray: Code Gen Options. (line 129) * fconvert=CONVERSION: Runtime Options. (line 10) * fcray-pointer: Fortran Dialect Options. *************** look up both forms. *** 20841,20847 **** * 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 267) * ff2c: Code Gen Options. (line 25) * ffixed-form: Fortran Dialect Options. (line 11) --- 20874,20880 ---- * 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 299) * ff2c: Code Gen Options. (line 25) * ffixed-form: Fortran Dialect Options. (line 11) *************** look up both forms. *** 20855,20888 **** (line 104) * fimplicit-none: Fortran Dialect Options. (line 115) ! * finit-character: Code Gen Options. (line 310) ! * finit-derived: Code Gen Options. (line 310) ! * finit-integer: Code Gen Options. (line 310) ! * finit-local-zero: Code Gen Options. (line 310) ! * finit-logical: Code Gen Options. (line 310) ! * finit-real: Code Gen Options. (line 310) ! * finline-matmul-limit: Code Gen Options. (line 286) * finteger-4-integer-8: Fortran Dialect Options. (line 179) * fintrinsic-modules-path DIR: Directory Options. (line 36) ! * fmax-array-constructor: Code Gen Options. (line 205) * fmax-errors=N: Error and Warning Options. (line 27) * fmax-identifier-length=N: Fortran Dialect Options. (line 111) ! * fmax-stack-var-size: Code Gen Options. (line 223) * fmax-subrecord-length=LENGTH: Runtime Options. (line 29) * fmodule-private: Fortran Dialect Options. (line 86) * fno-automatic: Code Gen Options. (line 15) * fno-backtrace: Debugging Options. (line 62) ! * fno-protect-parens: Code Gen Options. (line 349) * fno-underscoring: Code Gen Options. (line 54) * fopenacc: Fortran Dialect Options. (line 124) * fopenmp: Fortran Dialect Options. (line 136) ! * fpack-derived: Code Gen Options. (line 245) * fpp: Preprocessing Options. (line 12) * frange-check: Fortran Dialect Options. --- 20888,20921 ---- (line 104) * fimplicit-none: Fortran Dialect Options. (line 115) ! * finit-character: Code Gen Options. (line 342) ! * finit-derived: Code Gen Options. (line 342) ! * finit-integer: Code Gen Options. (line 342) ! * finit-local-zero: Code Gen Options. (line 342) ! * finit-logical: Code Gen Options. (line 342) ! * finit-real: Code Gen Options. (line 342) ! * finline-matmul-limit: Code Gen Options. (line 318) * finteger-4-integer-8: Fortran Dialect Options. (line 179) * fintrinsic-modules-path DIR: Directory Options. (line 36) ! * fmax-array-constructor: Code Gen Options. (line 237) * fmax-errors=N: Error and Warning Options. (line 27) * fmax-identifier-length=N: Fortran Dialect Options. (line 111) ! * fmax-stack-var-size: Code Gen Options. (line 255) * fmax-subrecord-length=LENGTH: Runtime Options. (line 29) * fmodule-private: Fortran Dialect Options. (line 86) * fno-automatic: Code Gen Options. (line 15) * fno-backtrace: Debugging Options. (line 62) ! * fno-protect-parens: Code Gen Options. (line 381) * fno-underscoring: Code Gen Options. (line 54) * fopenacc: Fortran Dialect Options. (line 124) * fopenmp: Fortran Dialect Options. (line 136) ! * fpack-derived: Code Gen Options. (line 277) * fpp: Preprocessing Options. (line 12) * frange-check: Fortran Dialect Options. *************** look up both forms. *** 20899,20914 **** (line 195) * freal-8-real-4: Fortran Dialect Options. (line 195) ! * frealloc-lhs: Code Gen Options. (line 358) * frecord-marker=LENGTH: Runtime Options. (line 21) ! * frecursive: Code Gen Options. (line 300) ! * frepack-arrays: Code Gen Options. (line 251) ! * frontend-optimize: Code Gen Options. (line 372) * fsecond-underscore: Code Gen Options. (line 112) * fshort-enums <1>: Fortran 2003 status. (line 93) ! * fshort-enums: Code Gen Options. (line 261) * fsign-zero: Runtime Options. (line 34) ! * fstack-arrays: Code Gen Options. (line 237) * fsyntax-only: Error and Warning Options. (line 33) * ftest-forall-temp: Fortran Dialect Options. --- 20932,20947 ---- (line 195) * freal-8-real-4: Fortran Dialect Options. (line 195) ! * frealloc-lhs: Code Gen Options. (line 390) * frecord-marker=LENGTH: Runtime Options. (line 21) ! * frecursive: Code Gen Options. (line 332) ! * frepack-arrays: Code Gen Options. (line 283) ! * frontend-optimize: Code Gen Options. (line 404) * fsecond-underscore: Code Gen Options. (line 112) * fshort-enums <1>: Fortran 2003 status. (line 93) ! * fshort-enums: Code Gen Options. (line 293) * fsign-zero: Runtime Options. (line 34) ! * fstack-arrays: Code Gen Options. (line 269) * fsyntax-only: Error and Warning Options. (line 33) * ftest-forall-temp: Fortran Dialect Options. *************** look up both forms. *** 20943,20948 **** --- 20976,20982 ---- * static-libgfortran: Link Options. (line 11) * std=STD option: Fortran Dialect Options. (line 206) + * tail-call-workaround: Code Gen Options. (line 203) * UNAME: Preprocessing Options. (line 187) * undef: Preprocessing Options. *************** Keyword Index *** 21063,21069 **** * ALGAMA: LOG_GAMMA. (line 6) * aliasing: Error and Warning Options. (line 71) ! * alignment of COMMON blocks <1>: Code Gen Options. (line 337) * alignment of COMMON blocks: Error and Warning Options. (line 222) * ALL: ALL. (line 6) --- 21097,21103 ---- * ALGAMA: LOG_GAMMA. (line 6) * aliasing: Error and Warning Options. (line 71) ! * alignment of COMMON blocks <1>: Code Gen Options. (line 369) * alignment of COMMON blocks: Error and Warning Options. (line 222) * ALL: ALL. (line 6) *************** Keyword Index *** 21569,21575 **** * elapsed time <2>: SECNDS. (line 6) * elapsed time: DTIME. (line 6) * Elimination of functions with identical argument lists: Code Gen Options. ! (line 364) * ENCODE: ENCODE and DECODE statements. (line 6) * ENUM statement: Fortran 2003 status. (line 93) --- 21603,21609 ---- * elapsed time <2>: SECNDS. (line 6) * elapsed time: DTIME. (line 6) * Elimination of functions with identical argument lists: Code Gen Options. ! (line 396) * ENCODE: ENCODE and DECODE statements. (line 6) * ENUM statement: Fortran 2003 status. (line 93) *************** Keyword Index *** 21682,21688 **** * FPUTC: FPUTC. (line 6) * FRACTION: FRACTION. (line 6) * FREE: FREE. (line 6) ! * Front-end optimization: Code Gen Options. (line 372) * FSEEK: FSEEK. (line 6) * FSTAT: FSTAT. (line 6) * FTELL: FTELL. (line 6) --- 21716,21722 ---- * FPUTC: FPUTC. (line 6) * FRACTION: FRACTION. (line 6) * FREE: FREE. (line 6) ! * Front-end optimization: Code Gen Options. (line 404) * FSEEK: FSEEK. (line 6) * FSTAT: FSTAT. (line 6) * FTELL: FTELL. (line 6) *************** Keyword Index *** 22083,22089 **** * rank: RANK. (line 6) * RANK: RANK. (line 6) * re-association of parenthesized expressions: Code Gen Options. ! (line 349) * read character, stream mode <1>: FGETC. (line 6) * read character, stream mode: FGET. (line 6) * READONLY: Extended I/O specifiers. --- 22117,22123 ---- * rank: RANK. (line 6) * RANK: RANK. (line 6) * re-association of parenthesized expressions: Code Gen Options. ! (line 381) * read character, stream mode <1>: FGETC. (line 6) * read character, stream mode: FGET. (line 6) * READONLY: Extended I/O specifiers. *************** Keyword Index *** 22097,22103 **** * real number, relative spacing: RRSPACING. (line 6) * real number, scale: SCALE. (line 6) * real number, set exponent: SET_EXPONENT. (line 6) ! * Reallocate the LHS in assignments: Code Gen Options. (line 358) * Reallocate the LHS in assignments, notification: Error and Warning Options. (line 232) * REALPART: REAL. (line 6) --- 22131,22137 ---- * real number, relative spacing: RRSPACING. (line 6) * real number, scale: SCALE. (line 6) * real number, set exponent: SET_EXPONENT. (line 6) ! * Reallocate the LHS in assignments: Code Gen Options. (line 390) * Reallocate the LHS in assignments, notification: Error and Warning Options. (line 232) * REALPART: REAL. (line 6) *************** Keyword Index *** 22106,22112 **** * Reduction, XOR: PARITY. (line 6) * remainder: MOD. (line 6) * RENAME: RENAME. (line 6) ! * repacking arrays: Code Gen Options. (line 251) * REPEAT: REPEAT. (line 6) * RESHAPE: RESHAPE. (line 6) * REWIND: Read/Write after EOF marker. --- 22140,22146 ---- * Reduction, XOR: PARITY. (line 6) * remainder: MOD. (line 6) * RENAME: RENAME. (line 6) ! * repacking arrays: Code Gen Options. (line 283) * REPEAT: REPEAT. (line 6) * RESHAPE: RESHAPE. (line 6) * REWIND: Read/Write after EOF marker. *************** Keyword Index *** 22213,22219 **** (line 6) * STRUCTURE: STRUCTURE and RECORD. (line 6) ! * structure packing: Code Gen Options. (line 245) * subscript checking: Code Gen Options. (line 143) * substring position: INDEX intrinsic. (line 6) * SUM: SUM. (line 6) --- 22247,22253 ---- (line 6) * STRUCTURE: STRUCTURE and RECORD. (line 6) ! * structure packing: Code Gen Options. (line 277) * subscript checking: Code Gen Options. (line 143) * substring position: INDEX intrinsic. (line 6) * SUM: SUM. (line 6) *************** Node: Standards15214 *** 22430,22868 **** Node: Varying Length Character Strings16576 Node: Invoking GNU Fortran17327 Node: Option Summary19050 ! Node: Fortran Dialect Options22678 ! Node: Preprocessing Options33432 ! Node: Error and Warning Options41663 ! Node: Debugging Options52822 ! Node: Directory Options56294 ! Node: Link Options57729 ! Node: Runtime Options58353 ! Node: Code Gen Options60258 ! Node: Environment Variables77605 ! Node: Runtime78210 ! Node: TMPDIR79312 ! Node: GFORTRAN_STDIN_UNIT79981 ! Node: GFORTRAN_STDOUT_UNIT80363 ! Node: GFORTRAN_STDERR_UNIT80764 ! Node: GFORTRAN_UNBUFFERED_ALL81166 ! Node: GFORTRAN_UNBUFFERED_PRECONNECTED81697 ! Node: GFORTRAN_SHOW_LOCUS82341 ! Node: GFORTRAN_OPTIONAL_PLUS82837 ! Node: GFORTRAN_DEFAULT_RECL83313 ! Node: GFORTRAN_LIST_SEPARATOR83802 ! Node: GFORTRAN_CONVERT_UNIT84411 ! Node: GFORTRAN_ERROR_BACKTRACE87274 ! Node: Fortran 2003 and 2008 status87831 ! Node: Fortran 2003 status88111 ! Node: Fortran 2008 status93352 ! Node: TS 29113 status98726 ! Node: TS 18508 status99728 ! Node: Compiler Characteristics100520 ! Node: KIND Type Parameters101149 ! Node: Internal representation of LOGICAL variables102578 ! Node: Thread-safety of the runtime library103438 ! Node: Data consistency and durability105842 ! Node: Files opened without an explicit ACTION= specifier108943 ! Node: File operations on symbolic links109637 ! Node: Extensions110706 ! Node: Extensions implemented in GNU Fortran111311 ! Node: Old-style kind specifications113195 ! Node: Old-style variable initialization114302 ! Node: Extensions to namelist115614 ! Node: X format descriptor without count field117916 ! Node: Commas in FORMAT specifications118443 ! Node: Missing period in FORMAT specifications118960 ! Node: I/O item lists119522 ! Node: `Q' exponent-letter119909 ! Node: BOZ literal constants120509 ! Node: Real array indices123088 ! Node: Unary operators123387 ! Node: Implicitly convert LOGICAL and INTEGER values123801 ! Node: Hollerith constants support124761 ! Node: Cray pointers126533 ! Node: CONVERT specifier131980 ! Node: OpenMP133978 ! Node: OpenACC136236 ! Node: Argument list functions137546 ! Node: Read/Write after EOF marker139190 ! Node: STRUCTURE and RECORD139792 ! Node: UNION and MAP144377 ! Node: Type variants for integer intrinsics147343 ! Node: AUTOMATIC and STATIC attributes149558 ! Node: Extended math intrinsics151094 ! Node: Form feed as whitespace152887 ! Node: TYPE as an alias for PRINT153432 ! Node: %LOC as an rvalue153897 ! Node: .XOR. operator154543 ! Node: Bitwise logical operators154942 ! Node: Extended I/O specifiers156513 ! Node: Legacy PARAMETER statements160186 ! Node: Default exponents160791 ! Node: Extensions not implemented in GNU Fortran161143 ! Node: ENCODE and DECODE statements162088 ! Node: Variable FORMAT expressions163419 ! Node: Alternate complex function syntax164524 ! Node: Volatile COMMON blocks165075 ! Node: OPEN( ... NAME=)165576 ! Node: Mixed-Language Programming165977 ! Node: Interoperability with C166560 ! Node: Intrinsic Types167898 ! Node: Derived Types and struct168894 ! Node: Interoperable Global Variables170251 ! Node: Interoperable Subroutines and Functions171527 ! Node: Working with Pointers175323 ! Node: Further Interoperability of Fortran with C179799 ! Node: GNU Fortran Compiler Directives183148 ! Node: Non-Fortran Main Program186402 ! Node: _gfortran_set_args188592 ! Node: _gfortran_set_options189527 ! Node: _gfortran_set_convert192894 ! Node: _gfortran_set_record_marker193758 ! Node: _gfortran_set_fpe194566 ! Node: _gfortran_set_max_subrecord_length195758 ! Node: Naming and argument-passing conventions196678 ! Node: Naming conventions197397 ! Node: Argument passing conventions198867 ! Node: Coarray Programming203363 ! Node: Type and enum ABI Documentation203610 ! Node: caf_token_t203908 ! Node: caf_register_t204143 ! Node: caf_deregister_t205354 ! Node: caf_reference_t205854 ! Node: caf_team_t210178 ! Node: Function ABI Documentation210477 ! Node: _gfortran_caf_init212927 ! Node: _gfortran_caf_finish214365 ! Node: _gfortran_caf_this_image215304 ! Node: _gfortran_caf_num_images216057 ! Node: _gfortran_caf_image_status217163 ! Node: _gfortran_caf_failed_images218279 ! Node: _gfortran_caf_stopped_images219446 ! Node: _gfortran_caf_register220615 ! Node: _gfortran_caf_deregister224767 ! Node: _gfortran_caf_is_present226359 ! Node: _gfortran_caf_send227448 ! Node: _gfortran_caf_get230614 ! Node: _gfortran_caf_sendget233669 ! Node: _gfortran_caf_send_by_ref237552 ! Node: _gfortran_caf_get_by_ref240879 ! Node: _gfortran_caf_sendget_by_ref244119 ! Node: _gfortran_caf_lock247873 ! Node: _gfortran_caf_unlock249650 ! Node: _gfortran_caf_event_post251122 ! Node: _gfortran_caf_event_wait252564 ! Node: _gfortran_caf_event_query254664 ! Node: _gfortran_caf_sync_all255990 ! Node: _gfortran_caf_sync_images256918 ! Node: _gfortran_caf_sync_memory258441 ! Node: _gfortran_caf_error_stop259427 ! Node: _gfortran_caf_error_stop_str260035 ! Node: _gfortran_caf_fail_image260740 ! Node: _gfortran_caf_atomic_define261276 ! Node: _gfortran_caf_atomic_ref262598 ! Node: _gfortran_caf_atomic_cas263890 ! Node: _gfortran_caf_atomic_op265655 ! Node: _gfortran_caf_co_broadcast267758 ! Node: _gfortran_caf_co_max268855 ! Node: _gfortran_caf_co_min270472 ! Node: _gfortran_caf_co_sum272083 ! Node: _gfortran_caf_co_reduce273615 ! Node: Intrinsic Procedures276249 ! Node: Introduction to Intrinsics293305 ! Node: ABORT295657 ! Node: ABS296403 ! Node: ACCESS298456 ! Node: ACHAR300377 ! Node: ACOS301578 ! Node: ACOSD302847 ! Node: ACOSH304148 ! Node: ADJUSTL305137 ! Node: ADJUSTR306078 ! Node: AIMAG307027 ! Node: AINT308408 ! Node: ALARM309995 ! Node: ALL311629 ! Node: ALLOCATED313547 ! Node: AND314684 ! Node: ANINT315981 ! Node: ANY317459 ! Node: ASIN319389 ! Node: ASIND320647 ! Node: ASINH321934 ! Node: ASSOCIATED322933 ! Node: ATAN325938 ! Node: ATAND327389 ! Node: ATAN2328866 ! Node: ATAN2D330713 ! Node: ATANH332726 ! Node: ATOMIC_ADD333724 ! Node: ATOMIC_AND335263 ! Node: ATOMIC_CAS336858 ! Node: ATOMIC_DEFINE338721 ! Node: ATOMIC_FETCH_ADD340428 ! Node: ATOMIC_FETCH_AND342215 ! Node: ATOMIC_FETCH_OR344011 ! Node: ATOMIC_FETCH_XOR345799 ! Node: ATOMIC_OR347588 ! Node: ATOMIC_REF349180 ! Node: ATOMIC_XOR351082 ! Node: BACKTRACE352674 ! Node: BESSEL_J0353253 ! Node: BESSEL_J1354261 ! Node: BESSEL_JN355270 ! Node: BESSEL_Y0357152 ! Node: BESSEL_Y1358098 ! Node: BESSEL_YN359044 ! Node: BGE360876 ! Node: BGT361565 ! Node: BIT_SIZE362212 ! Node: BLE363033 ! Node: BLT363712 ! Node: BTEST364347 ! Node: C_ASSOCIATED365893 ! Node: C_F_POINTER367102 ! Node: C_F_PROCPOINTER368526 ! Node: C_FUNLOC370027 ! Node: C_LOC371396 ! Node: C_SIZEOF372673 ! Node: CEILING374083 ! Node: CHAR375088 ! Node: CHDIR376292 ! Node: CHMOD377460 ! Node: CMPLX379323 ! Node: CO_BROADCAST380777 ! Node: CO_MAX382541 ! Node: CO_MIN384413 ! Node: CO_REDUCE386271 ! Node: CO_SUM389748 ! Node: COMMAND_ARGUMENT_COUNT391647 ! Node: COMPILER_OPTIONS392571 ! Node: COMPILER_VERSION393597 ! Node: COMPLEX394561 ! Node: CONJG395698 ! Node: COS396769 ! Node: COSD398246 ! Node: COSH399752 ! Node: COTAN400918 ! Node: COTAND402046 ! Node: COUNT403216 ! Node: CPU_TIME405234 ! Node: CSHIFT406588 ! Node: CTIME408244 ! Node: DATE_AND_TIME409760 ! Node: DBLE412220 ! Node: DCMPLX413013 ! Node: DIGITS414207 ! Node: DIM415173 ! Node: DOT_PRODUCT416431 ! Node: DPROD418087 ! Node: DREAL419004 ! Node: DSHIFTL419670 ! Node: DSHIFTR420990 ! Node: DTIME422311 ! Node: EOSHIFT425114 ! Node: EPSILON427187 ! Node: ERF427913 ! Node: ERFC428687 ! Node: ERFC_SCALED429491 ! Node: ETIME430183 ! Node: EVENT_QUERY432415 ! Node: EXECUTE_COMMAND_LINE434013 ! Node: EXIT436601 ! Node: EXP437477 ! Node: EXPONENT438752 ! Node: EXTENDS_TYPE_OF439514 ! Node: FDATE440369 ! Node: FGET441864 ! Node: FGETC443684 ! Node: FLOOR445485 ! Node: FLUSH446471 ! Node: FNUM448348 ! Node: FPUT449072 ! Node: FPUTC450699 ! Node: FRACTION452472 ! Node: FREE453375 ! Node: FSEEK454212 ! Node: FSTAT456508 ! Node: FTELL457590 ! Node: GAMMA458570 ! Node: GERROR459613 ! Node: GETARG460334 ! Node: GET_COMMAND462100 ! Node: GET_COMMAND_ARGUMENT463466 ! Node: GETCWD465502 ! Node: GETENV466476 ! Node: GET_ENVIRONMENT_VARIABLE467901 ! Node: GETGID470054 ! Node: GETLOG470591 ! Node: GETPID471451 ! Node: GETUID472181 ! Node: GMTIME472697 ! Node: HOSTNM474462 ! Node: HUGE475380 ! Node: HYPOT476101 ! Node: IACHAR476921 ! Node: IALL478101 ! Node: IAND479578 ! Node: IANY481227 ! Node: IARGC482713 ! Node: IBCLR483734 ! Node: IBITS485060 ! Node: IBSET486640 ! Node: ICHAR487961 ! Node: IDATE490133 ! Node: IEOR491430 ! Node: IERRNO492971 ! Node: IMAGE_INDEX493520 ! Node: INDEX intrinsic494544 ! Node: INT496085 ! Node: INT2497817 ! Node: INT8498582 ! Node: IOR499294 ! Node: IPARITY500811 ! Node: IRAND502335 ! Node: IS_IOSTAT_END503691 ! Node: IS_IOSTAT_EOR504788 ! Node: ISATTY505915 ! Node: ISHFT506698 ! Node: ISHFTC508343 ! Node: ISNAN510224 ! Node: ITIME510972 ! Node: KILL512267 ! Node: KIND513171 ! Node: LBOUND514016 ! Node: LCOBOUND515349 ! Node: LEADZ516479 ! Node: LEN517339 ! Node: LEN_TRIM518620 ! Node: LGE519602 ! Node: LGT521104 ! Node: LINK522571 ! Node: LLE523606 ! Node: LLT525100 ! Node: LNBLNK526560 ! Node: LOC527336 ! Node: LOG528067 ! Node: LOG10529467 ! Node: LOG_GAMMA530441 ! Node: LOGICAL531530 ! Node: LONG532338 ! Node: LSHIFT533094 ! Node: LSTAT534179 ! Node: LTIME535373 ! Node: MALLOC537060 ! Node: MASKL538519 ! Node: MASKR539282 ! Node: MATMUL540048 ! Node: MAX541137 ! Node: MAXEXPONENT542636 ! Node: MAXLOC543452 ! Node: MAXVAL545471 ! Node: MCLOCK547104 ! Node: MCLOCK8548128 ! Node: MERGE549361 ! Node: MERGE_BITS550110 ! Node: MIN550971 ! Node: MINEXPONENT552472 ! Node: MINLOC553102 ! Node: MINVAL555121 ! Node: MOD556773 ! Node: MODULO558993 ! Node: MOVE_ALLOC560293 ! Node: MVBITS561322 ! Node: NEAREST563046 ! Node: NEW_LINE564142 ! Node: NINT564913 ! Node: NORM2566316 ! Node: NOT567454 ! Node: NULL568703 ! Node: NUM_IMAGES569608 ! Node: OR571318 ! Node: PACK572602 ! Node: PARITY574595 ! Node: PERROR575810 ! Node: POPCNT576431 ! Node: POPPAR577302 ! Node: PRECISION578353 ! Node: PRESENT579239 ! Node: PRODUCT580345 ! Node: RADIX581870 ! Node: RAN582682 ! Node: RAND583138 ! Node: RANDOM_NUMBER584470 ! Node: RANDOM_SEED585677 ! Node: RANGE588100 ! Node: RANK588796 ! Node: REAL589576 ! Node: RENAME591534 ! Node: REPEAT592553 ! Node: RESHAPE593279 ! Node: RRSPACING594748 ! Node: RSHIFT595441 ! Node: SAME_TYPE_AS596579 ! Node: SCALE597409 ! Node: SCAN598189 ! Node: SECNDS599739 ! Node: SECOND600827 ! Node: SELECTED_CHAR_KIND601703 ! Node: SELECTED_INT_KIND603294 ! Node: SELECTED_REAL_KIND604469 ! Node: SET_EXPONENT607135 ! Node: SHAPE608131 ! Node: SHIFTA609546 ! Node: SHIFTL610507 ! Node: SHIFTR611342 ! Node: SIGN612178 ! Node: SIGNAL613462 ! Node: SIN614959 ! Node: SIND616106 ! Node: SINH617492 ! Node: SIZE618489 ! Node: SIZEOF619797 ! Node: SLEEP621447 ! Node: SPACING622007 ! Node: SPREAD623020 ! Node: SQRT624165 ! Node: SRAND625519 ! Node: STAT626752 ! Node: STORAGE_SIZE629919 ! Node: SUM630798 ! Node: SYMLNK632281 ! Node: SYSTEM633413 ! Node: SYSTEM_CLOCK634664 ! Node: TAN637491 ! Node: TAND638546 ! Node: TANH639620 ! Node: THIS_IMAGE640778 ! Node: TIME643067 ! Node: TIME8644238 ! Node: TINY645434 ! Node: TRAILZ646034 ! Node: TRANSFER646851 ! Node: TRANSPOSE648885 ! Node: TRIM649572 ! Node: TTYNAM650429 ! Node: UBOUND651344 ! Node: UCOBOUND652734 ! Node: UMASK653866 ! Node: UNLINK654544 ! Node: UNPACK655521 ! Node: VERIFY656809 ! Node: XOR658530 ! Node: Intrinsic Modules659902 ! Node: ISO_FORTRAN_ENV660191 ! Node: ISO_C_BINDING664577 ! Node: IEEE modules668768 ! Node: OpenMP Modules OMP_LIB and OMP_LIB_KINDS669913 ! Node: OpenACC Module OPENACC671462 ! Node: Contributing672389 ! Node: Contributors673243 ! Node: Projects674910 ! Node: Proposed Extensions675715 ! Node: Copying677726 ! Node: GNU Free Documentation License715290 ! Node: Funding740433 ! Node: Option Index742958 ! Node: Keyword Index759914  End Tag Table --- 22464,22902 ---- Node: Varying Length Character Strings16576 Node: Invoking GNU Fortran17327 Node: Option Summary19050 ! Node: Fortran Dialect Options22736 ! Node: Preprocessing Options33490 ! Node: Error and Warning Options41721 ! Node: Debugging Options52880 ! Node: Directory Options56352 ! Node: Link Options57787 ! Node: Runtime Options58411 ! Node: Code Gen Options60316 ! Node: Environment Variables79112 ! Node: Runtime79717 ! Node: TMPDIR80819 ! Node: GFORTRAN_STDIN_UNIT81488 ! Node: GFORTRAN_STDOUT_UNIT81870 ! Node: GFORTRAN_STDERR_UNIT82271 ! Node: GFORTRAN_UNBUFFERED_ALL82673 ! Node: GFORTRAN_UNBUFFERED_PRECONNECTED83204 ! Node: GFORTRAN_SHOW_LOCUS83848 ! Node: GFORTRAN_OPTIONAL_PLUS84344 ! Node: GFORTRAN_DEFAULT_RECL84820 ! Node: GFORTRAN_LIST_SEPARATOR85309 ! Node: GFORTRAN_CONVERT_UNIT85918 ! Node: GFORTRAN_ERROR_BACKTRACE88781 ! Node: Fortran 2003 and 2008 status89338 ! Node: Fortran 2003 status89618 ! Node: Fortran 2008 status94859 ! Node: TS 29113 status100233 ! Node: TS 18508 status101235 ! Node: Compiler Characteristics102027 ! Node: KIND Type Parameters102656 ! Node: Internal representation of LOGICAL variables104085 ! Node: Thread-safety of the runtime library104945 ! Node: Data consistency and durability107349 ! Node: Files opened without an explicit ACTION= specifier110450 ! Node: File operations on symbolic links111144 ! Node: Extensions112213 ! Node: Extensions implemented in GNU Fortran112818 ! Node: Old-style kind specifications114702 ! Node: Old-style variable initialization115809 ! Node: Extensions to namelist117121 ! Node: X format descriptor without count field119423 ! Node: Commas in FORMAT specifications119950 ! Node: Missing period in FORMAT specifications120467 ! Node: I/O item lists121029 ! Node: `Q' exponent-letter121416 ! Node: BOZ literal constants122016 ! Node: Real array indices124595 ! Node: Unary operators124894 ! Node: Implicitly convert LOGICAL and INTEGER values125308 ! Node: Hollerith constants support126268 ! Node: Cray pointers128040 ! Node: CONVERT specifier133487 ! Node: OpenMP135485 ! Node: OpenACC137743 ! Node: Argument list functions139053 ! Node: Read/Write after EOF marker140697 ! Node: STRUCTURE and RECORD141299 ! Node: UNION and MAP145884 ! Node: Type variants for integer intrinsics148850 ! Node: AUTOMATIC and STATIC attributes151065 ! Node: Extended math intrinsics152601 ! Node: Form feed as whitespace154394 ! Node: TYPE as an alias for PRINT154939 ! Node: %LOC as an rvalue155404 ! Node: .XOR. operator156050 ! Node: Bitwise logical operators156449 ! Node: Extended I/O specifiers158020 ! Node: Legacy PARAMETER statements161693 ! Node: Default exponents162298 ! Node: Extensions not implemented in GNU Fortran162650 ! Node: ENCODE and DECODE statements163595 ! Node: Variable FORMAT expressions164926 ! Node: Alternate complex function syntax166031 ! Node: Volatile COMMON blocks166582 ! Node: OPEN( ... NAME=)167083 ! Node: Mixed-Language Programming167484 ! Node: Interoperability with C168067 ! Node: Intrinsic Types169405 ! Node: Derived Types and struct170401 ! Node: Interoperable Global Variables171758 ! Node: Interoperable Subroutines and Functions173034 ! Node: Working with Pointers176830 ! Node: Further Interoperability of Fortran with C181306 ! Node: GNU Fortran Compiler Directives184655 ! Node: Non-Fortran Main Program187909 ! Node: _gfortran_set_args190099 ! Node: _gfortran_set_options191034 ! Node: _gfortran_set_convert194401 ! Node: _gfortran_set_record_marker195265 ! Node: _gfortran_set_fpe196073 ! Node: _gfortran_set_max_subrecord_length197265 ! Node: Naming and argument-passing conventions198185 ! Node: Naming conventions198904 ! Node: Argument passing conventions200374 ! Node: Coarray Programming204870 ! Node: Type and enum ABI Documentation205117 ! Node: caf_token_t205415 ! Node: caf_register_t205650 ! Node: caf_deregister_t206861 ! Node: caf_reference_t207361 ! Node: caf_team_t211685 ! Node: Function ABI Documentation211984 ! Node: _gfortran_caf_init214434 ! Node: _gfortran_caf_finish215872 ! Node: _gfortran_caf_this_image216811 ! Node: _gfortran_caf_num_images217564 ! Node: _gfortran_caf_image_status218670 ! Node: _gfortran_caf_failed_images219786 ! Node: _gfortran_caf_stopped_images220953 ! Node: _gfortran_caf_register222122 ! Node: _gfortran_caf_deregister226274 ! Node: _gfortran_caf_is_present227866 ! Node: _gfortran_caf_send228955 ! Node: _gfortran_caf_get232121 ! Node: _gfortran_caf_sendget235176 ! Node: _gfortran_caf_send_by_ref239059 ! Node: _gfortran_caf_get_by_ref242386 ! Node: _gfortran_caf_sendget_by_ref245626 ! Node: _gfortran_caf_lock249380 ! Node: _gfortran_caf_unlock251157 ! Node: _gfortran_caf_event_post252629 ! Node: _gfortran_caf_event_wait254071 ! Node: _gfortran_caf_event_query256171 ! Node: _gfortran_caf_sync_all257497 ! Node: _gfortran_caf_sync_images258425 ! Node: _gfortran_caf_sync_memory259948 ! Node: _gfortran_caf_error_stop260934 ! Node: _gfortran_caf_error_stop_str261542 ! Node: _gfortran_caf_fail_image262247 ! Node: _gfortran_caf_atomic_define262783 ! Node: _gfortran_caf_atomic_ref264105 ! Node: _gfortran_caf_atomic_cas265397 ! Node: _gfortran_caf_atomic_op267162 ! Node: _gfortran_caf_co_broadcast269265 ! Node: _gfortran_caf_co_max270362 ! Node: _gfortran_caf_co_min271979 ! Node: _gfortran_caf_co_sum273590 ! Node: _gfortran_caf_co_reduce275122 ! Node: Intrinsic Procedures277756 ! Node: Introduction to Intrinsics294812 ! Node: ABORT297164 ! Node: ABS297910 ! Node: ACCESS299963 ! Node: ACHAR301884 ! Node: ACOS303085 ! Node: ACOSD304354 ! Node: ACOSH305655 ! Node: ADJUSTL306644 ! Node: ADJUSTR307585 ! Node: AIMAG308534 ! Node: AINT309915 ! Node: ALARM311502 ! Node: ALL313136 ! Node: ALLOCATED315054 ! Node: AND316191 ! Node: ANINT317488 ! Node: ANY318966 ! Node: ASIN320896 ! Node: ASIND322154 ! Node: ASINH323441 ! Node: ASSOCIATED324440 ! Node: ATAN327445 ! Node: ATAND328896 ! Node: ATAN2330373 ! Node: ATAN2D332220 ! Node: ATANH334233 ! Node: ATOMIC_ADD335231 ! Node: ATOMIC_AND336770 ! Node: ATOMIC_CAS338365 ! Node: ATOMIC_DEFINE340228 ! Node: ATOMIC_FETCH_ADD341935 ! Node: ATOMIC_FETCH_AND343722 ! Node: ATOMIC_FETCH_OR345518 ! Node: ATOMIC_FETCH_XOR347306 ! Node: ATOMIC_OR349095 ! Node: ATOMIC_REF350687 ! Node: ATOMIC_XOR352589 ! Node: BACKTRACE354181 ! Node: BESSEL_J0354760 ! Node: BESSEL_J1355768 ! Node: BESSEL_JN356777 ! Node: BESSEL_Y0358659 ! Node: BESSEL_Y1359605 ! Node: BESSEL_YN360551 ! Node: BGE362383 ! Node: BGT363072 ! Node: BIT_SIZE363719 ! Node: BLE364540 ! Node: BLT365219 ! Node: BTEST365854 ! Node: C_ASSOCIATED367400 ! Node: C_F_POINTER368609 ! Node: C_F_PROCPOINTER370033 ! Node: C_FUNLOC371534 ! Node: C_LOC372903 ! Node: C_SIZEOF374180 ! Node: CEILING375590 ! Node: CHAR376595 ! Node: CHDIR377799 ! Node: CHMOD378967 ! Node: CMPLX380830 ! Node: CO_BROADCAST382284 ! Node: CO_MAX384048 ! Node: CO_MIN385920 ! Node: CO_REDUCE387778 ! Node: CO_SUM391255 ! Node: COMMAND_ARGUMENT_COUNT393154 ! Node: COMPILER_OPTIONS394078 ! Node: COMPILER_VERSION395104 ! Node: COMPLEX396068 ! Node: CONJG397205 ! Node: COS398276 ! Node: COSD399753 ! Node: COSH401259 ! Node: COTAN402425 ! Node: COTAND403553 ! Node: COUNT404723 ! Node: CPU_TIME406741 ! Node: CSHIFT408095 ! Node: CTIME409751 ! Node: DATE_AND_TIME411267 ! Node: DBLE413727 ! Node: DCMPLX414520 ! Node: DIGITS415714 ! Node: DIM416680 ! Node: DOT_PRODUCT417938 ! Node: DPROD419594 ! Node: DREAL420511 ! Node: DSHIFTL421177 ! Node: DSHIFTR422497 ! Node: DTIME423818 ! Node: EOSHIFT426621 ! Node: EPSILON428694 ! Node: ERF429420 ! Node: ERFC430194 ! Node: ERFC_SCALED430998 ! Node: ETIME431690 ! Node: EVENT_QUERY433922 ! Node: EXECUTE_COMMAND_LINE435520 ! Node: EXIT438108 ! Node: EXP438984 ! Node: EXPONENT440259 ! Node: EXTENDS_TYPE_OF441021 ! Node: FDATE441876 ! Node: FGET443371 ! Node: FGETC445191 ! Node: FLOOR446992 ! Node: FLUSH447978 ! Node: FNUM449855 ! Node: FPUT450579 ! Node: FPUTC452206 ! Node: FRACTION453979 ! Node: FREE454882 ! Node: FSEEK455719 ! Node: FSTAT458015 ! Node: FTELL459097 ! Node: GAMMA460077 ! Node: GERROR461120 ! Node: GETARG461841 ! Node: GET_COMMAND463607 ! Node: GET_COMMAND_ARGUMENT464973 ! Node: GETCWD467009 ! Node: GETENV467983 ! Node: GET_ENVIRONMENT_VARIABLE469408 ! Node: GETGID471561 ! Node: GETLOG472098 ! Node: GETPID472958 ! Node: GETUID473688 ! Node: GMTIME474204 ! Node: HOSTNM475969 ! Node: HUGE476887 ! Node: HYPOT477608 ! Node: IACHAR478428 ! Node: IALL479608 ! Node: IAND481085 ! Node: IANY482734 ! Node: IARGC484220 ! Node: IBCLR485241 ! Node: IBITS486567 ! Node: IBSET488147 ! Node: ICHAR489468 ! Node: IDATE491640 ! Node: IEOR492937 ! Node: IERRNO494478 ! Node: IMAGE_INDEX495027 ! Node: INDEX intrinsic496051 ! Node: INT497592 ! Node: INT2499324 ! Node: INT8500089 ! Node: IOR500801 ! Node: IPARITY502318 ! Node: IRAND503842 ! Node: IS_IOSTAT_END505198 ! Node: IS_IOSTAT_EOR506295 ! Node: ISATTY507422 ! Node: ISHFT508205 ! Node: ISHFTC509850 ! Node: ISNAN511731 ! Node: ITIME512479 ! Node: KILL513774 ! Node: KIND514678 ! Node: LBOUND515523 ! Node: LCOBOUND516856 ! Node: LEADZ517986 ! Node: LEN518846 ! Node: LEN_TRIM520127 ! Node: LGE521109 ! Node: LGT522611 ! Node: LINK524078 ! Node: LLE525113 ! Node: LLT526607 ! Node: LNBLNK528067 ! Node: LOC528843 ! Node: LOG529574 ! Node: LOG10530974 ! Node: LOG_GAMMA531948 ! Node: LOGICAL533037 ! Node: LONG533845 ! Node: LSHIFT534601 ! Node: LSTAT535686 ! Node: LTIME536880 ! Node: MALLOC538567 ! Node: MASKL540026 ! Node: MASKR540789 ! Node: MATMUL541555 ! Node: MAX542644 ! Node: MAXEXPONENT544143 ! Node: MAXLOC544959 ! Node: MAXVAL546978 ! Node: MCLOCK548611 ! Node: MCLOCK8549635 ! Node: MERGE550868 ! Node: MERGE_BITS551617 ! Node: MIN552478 ! Node: MINEXPONENT553979 ! Node: MINLOC554609 ! Node: MINVAL556628 ! Node: MOD558280 ! Node: MODULO560500 ! Node: MOVE_ALLOC561800 ! Node: MVBITS562829 ! Node: NEAREST564553 ! Node: NEW_LINE565649 ! Node: NINT566420 ! Node: NORM2567823 ! Node: NOT568961 ! Node: NULL570210 ! Node: NUM_IMAGES571115 ! Node: OR572825 ! Node: PACK574109 ! Node: PARITY576102 ! Node: PERROR577317 ! Node: POPCNT577938 ! Node: POPPAR578809 ! Node: PRECISION579860 ! Node: PRESENT580746 ! Node: PRODUCT581852 ! Node: RADIX583377 ! Node: RAN584189 ! Node: RAND584645 ! Node: RANDOM_NUMBER585977 ! Node: RANDOM_SEED587184 ! Node: RANGE589607 ! Node: RANK590303 ! Node: REAL591083 ! Node: RENAME593041 ! Node: REPEAT594060 ! Node: RESHAPE594786 ! Node: RRSPACING596255 ! Node: RSHIFT596948 ! Node: SAME_TYPE_AS598086 ! Node: SCALE598916 ! Node: SCAN599696 ! Node: SECNDS601246 ! Node: SECOND602334 ! Node: SELECTED_CHAR_KIND603210 ! Node: SELECTED_INT_KIND604801 ! Node: SELECTED_REAL_KIND605976 ! Node: SET_EXPONENT608642 ! Node: SHAPE609638 ! Node: SHIFTA611053 ! Node: SHIFTL612014 ! Node: SHIFTR612849 ! Node: SIGN613685 ! Node: SIGNAL614969 ! Node: SIN616466 ! Node: SIND617613 ! Node: SINH618999 ! Node: SIZE619996 ! Node: SIZEOF621304 ! Node: SLEEP622954 ! Node: SPACING623514 ! Node: SPREAD624527 ! Node: SQRT625672 ! Node: SRAND627026 ! Node: STAT628259 ! Node: STORAGE_SIZE631426 ! Node: SUM632305 ! Node: SYMLNK633788 ! Node: SYSTEM634920 ! Node: SYSTEM_CLOCK636171 ! Node: TAN638998 ! Node: TAND640053 ! Node: TANH641127 ! Node: THIS_IMAGE642285 ! Node: TIME644574 ! Node: TIME8645745 ! Node: TINY646941 ! Node: TRAILZ647541 ! Node: TRANSFER648358 ! Node: TRANSPOSE650392 ! Node: TRIM651079 ! Node: TTYNAM651936 ! Node: UBOUND652851 ! Node: UCOBOUND654241 ! Node: UMASK655373 ! Node: UNLINK656051 ! Node: UNPACK657028 ! Node: VERIFY658316 ! Node: XOR660037 ! Node: Intrinsic Modules661409 ! Node: ISO_FORTRAN_ENV661698 ! Node: ISO_C_BINDING666084 ! Node: IEEE modules670275 ! Node: OpenMP Modules OMP_LIB and OMP_LIB_KINDS671420 ! Node: OpenACC Module OPENACC672969 ! Node: Contributing673896 ! Node: Contributors674750 ! Node: Projects676417 ! Node: Proposed Extensions677222 ! Node: Copying679233 ! Node: GNU Free Documentation License716797 ! Node: Funding741940 ! Node: Option Index744465 ! Node: Keyword Index761494  End Tag Table diff -Nrcpad gcc-7.4.0/gcc/fortran/interface.c gcc-7.5.0/gcc/fortran/interface.c *** gcc-7.4.0/gcc/fortran/interface.c Fri Sep 7 17:33:15 2018 --- gcc-7.5.0/gcc/fortran/interface.c Fri Aug 30 12:41:43 2019 *************** gfc_compare_types (gfc_typespec *ts1, gf *** 691,696 **** --- 691,705 ---- if (ts1->type == BT_VOID || ts2->type == BT_VOID) return true; + /* Special case for our C interop types. There should be a better + way of doing this... */ + + if (((ts1->type == BT_INTEGER && ts2->type == BT_DERIVED) + || (ts1->type == BT_DERIVED && ts2->type == BT_INTEGER)) + && ts1->u.derived && ts2->u.derived + && ts1->u.derived == ts2->u.derived) + return true; + /* The _data component is not always present, therefore check for its presence before assuming, that its derived->attr is available. When the _data component is not present, then nevertheless the *************** gfc_procedure_use (gfc_symbol *sym, gfc_ *** 3576,3581 **** --- 3585,3591 ---- gfc_warning (OPT_Wimplicit_procedure, "Procedure %qs called at %L is not explicitly declared", sym->name, where); + gfc_find_proc_namespace (sym->ns)->implicit_interface_calls = 1; } if (sym->attr.if_source == IFSRC_UNKNOWN) diff -Nrcpad gcc-7.4.0/gcc/fortran/intrinsic.c gcc-7.5.0/gcc/fortran/intrinsic.c *** gcc-7.4.0/gcc/fortran/intrinsic.c Sun Mar 5 11:35:47 2017 --- gcc-7.5.0/gcc/fortran/intrinsic.c Sat Feb 2 17:07:40 2019 *************** gfc_convert_type_warn (gfc_expr *expr, g *** 4919,4924 **** --- 4919,4926 ---- if (ts->type == BT_UNKNOWN) goto bad; + expr->do_not_warn = ! wflag; + /* NULL and zero size arrays get their type here. */ if (expr->expr_type == EXPR_NULL || (expr->expr_type == EXPR_ARRAY && expr->value.constructor == NULL)) diff -Nrcpad gcc-7.4.0/gcc/fortran/invoke.texi gcc-7.5.0/gcc/fortran/invoke.texi *** gcc-7.4.0/gcc/fortran/invoke.texi Sun Feb 26 13:22:43 2017 --- gcc-7.5.0/gcc/fortran/invoke.texi Fri Aug 30 12:41:43 2019 *************** and warnings}. *** 174,180 **** @item Code Generation Options @xref{Code Gen Options,,Options for code generation conventions}. @gccoptlist{-faggressive-function-elimination -fblas-matmul-limit=@var{n} @gol ! -fbounds-check -fcheck-array-temporaries @gol -fcheck=@var{} @gol -fcoarray=@var{} -fexternal-blas -ff2c -ffrontend-optimize @gol --- 174,181 ---- @item Code Generation Options @xref{Code Gen Options,,Options for code generation conventions}. @gccoptlist{-faggressive-function-elimination -fblas-matmul-limit=@var{n} @gol ! -fbounds-check -ftail-call-workaround -ftail-call-workaround=@var{n} @gol ! -fcheck-array-temporaries @gol -fcheck=@var{} @gol -fcoarray=@var{} -fexternal-blas -ff2c -ffrontend-optimize @gol *************** warnings for generated array temporaries *** 1522,1527 **** --- 1523,1561 ---- @c Note: This option is also referred in gcc's manpage Deprecated alias for @option{-fcheck=bounds}. + @item -ftail-call-workaround + @itemx -ftail-call-workaround=@var{n} + @opindex @code{tail-call-workaround} + Some C interfaces to Fortran codes violate the gfortran ABI by + omitting the hidden character length arguments as described in + @xref{Argument passing conventions}. This can lead to crashes + because pushing arguments for tail calls can overflow the stack. + + To provide a workaround for existing binary packages, this option + disables tail call optimization for gfortran procedures with character + arguments. With @option{-ftail-call-workaround=2} tail call optimization + is disabled in all gfortran procedures with character arguments, + with @option{-ftail-call-workaround=1} or equivalent + @option{-ftail-call-workaround} only in gfortran procedures with character + arguments that call implicitly prototyped procedures. + + Using this option can lead to problems including crashes due to + insufficient stack space. + + It is @emph{very strongly} recommended to fix the code in question. + The @option{-fc-prototypes-external} option can be used to generate + prototypes which conform to gfortran's ABI, for inclusion in the + source code. + + Support for this option will likely be withdrawn in a future release + of gfortran. + + The negative form, @option{-fno-tail-call-workaround} or equivalent + @option{-ftail-call-workaround=0}, can be used to disable this option. + + Default is currently @option{-ftail-call-workaround}, this will change + in future releases. + @item -fcheck-array-temporaries @opindex @code{fcheck-array-temporaries} Deprecated alias for @option{-fcheck=array-temps}. diff -Nrcpad gcc-7.4.0/gcc/fortran/io.c gcc-7.5.0/gcc/fortran/io.c *** gcc-7.4.0/gcc/fortran/io.c Wed May 17 18:09:48 2017 --- gcc-7.5.0/gcc/fortran/io.c Wed Dec 12 00:08:12 2018 *************** gfc_match_open (void) *** 2090,2122 **** warn = (open->err || open->iostat) ? true : false; - /* Checks on NEWUNIT specifier. */ - if (open->newunit) - { - if (open->unit) - { - gfc_error ("UNIT specifier not allowed with NEWUNIT at %C"); - goto cleanup; - } - - if (!open->file && open->status) - { - if (open->status->expr_type == EXPR_CONSTANT - && gfc_wide_strncasecmp (open->status->value.character.string, - "scratch", 7) != 0) - { - gfc_error ("NEWUNIT specifier must have FILE= " - "or STATUS='scratch' at %C"); - goto cleanup; - } - } - } - else if (!open->unit) - { - gfc_error ("OPEN statement at %C must have UNIT or NEWUNIT specified"); - goto cleanup; - } - /* Checks on the ACCESS specifier. */ if (open->access && open->access->expr_type == EXPR_CONSTANT) { --- 2090,2095 ---- *************** gfc_match_open (void) *** 2441,2446 **** --- 2414,2446 ---- } } + /* Checks on NEWUNIT specifier. */ + if (open->newunit) + { + if (open->unit) + { + gfc_error ("UNIT specifier not allowed with NEWUNIT at %C"); + goto cleanup; + } + + if (!open->file && open->status) + { + if (open->status->expr_type == EXPR_CONSTANT + && gfc_wide_strncasecmp (open->status->value.character.string, + "scratch", 7) != 0) + { + gfc_error ("NEWUNIT specifier must have FILE= " + "or STATUS='scratch' at %C"); + goto cleanup; + } + } + } + else if (!open->unit) + { + gfc_error ("OPEN statement at %C must have UNIT or NEWUNIT specified"); + goto cleanup; + } + /* Things that are not allowed for unformatted I/O. */ if (open->form && open->form->expr_type == EXPR_CONSTANT && (open->delim || open->decimal || open->encoding || open->round *************** cleanup: *** 2774,2795 **** bool ! gfc_resolve_filepos (gfc_filepos *fp) { RESOLVE_TAG (&tag_unit, fp->unit); RESOLVE_TAG (&tag_iostat, fp->iostat); RESOLVE_TAG (&tag_iomsg, fp->iomsg); - if (!gfc_reference_st_label (fp->err, ST_LABEL_TARGET)) - return false; ! if (!fp->unit && (fp->iostat || fp->iomsg)) { ! locus where; ! where = fp->iostat ? fp->iostat->where : fp->iomsg->where; ! gfc_error ("UNIT number missing in statement at %L", &where); return false; } if (fp->unit->expr_type == EXPR_CONSTANT && fp->unit->ts.type == BT_INTEGER && mpz_sgn (fp->unit->value.integer) < 0) --- 2774,2794 ---- bool ! gfc_resolve_filepos (gfc_filepos *fp, locus *where) { RESOLVE_TAG (&tag_unit, fp->unit); RESOLVE_TAG (&tag_iostat, fp->iostat); RESOLVE_TAG (&tag_iomsg, fp->iomsg); ! if (!fp->unit && (fp->iostat || fp->iomsg || fp->err)) { ! gfc_error ("UNIT number missing in statement at %L", where); return false; } + if (!gfc_reference_st_label (fp->err, ST_LABEL_TARGET)) + return false; + if (fp->unit->expr_type == EXPR_CONSTANT && fp->unit->ts.type == BT_INTEGER && mpz_sgn (fp->unit->value.integer) < 0) *************** static match *** 3617,3626 **** check_io_constraints (io_kind k, gfc_dt *dt, gfc_code *io_code, locus *spec_end) { ! #define io_constraint(condition,msg,arg)\ if (condition) \ {\ ! gfc_error(msg,arg);\ m = MATCH_ERROR;\ } --- 3616,3628 ---- check_io_constraints (io_kind k, gfc_dt *dt, gfc_code *io_code, locus *spec_end) { ! #define io_constraint(condition, msg, arg)\ if (condition) \ {\ ! if ((arg)->lb != NULL)\ ! gfc_error ((msg), (arg));\ ! else\ ! gfc_error ((msg), &gfc_current_locus);\ m = MATCH_ERROR;\ } *************** if (condition) \ *** 3680,3690 **** if (expr && expr->ts.type != BT_CHARACTER) { ! io_constraint (gfc_pure (NULL) && (k == M_READ || k == M_WRITE), ! "IO UNIT in %s statement at %C must be " "an internal file in a PURE procedure", io_kind_name (k)); ! if (k == M_READ || k == M_WRITE) gfc_unset_implicit_pure (NULL); } --- 3682,3695 ---- if (expr && expr->ts.type != BT_CHARACTER) { ! if (gfc_pure (NULL) && (k == M_READ || k == M_WRITE)) ! { ! gfc_error ("IO UNIT in %s statement at %C must be " "an internal file in a PURE procedure", io_kind_name (k)); ! return MATCH_ERROR; ! } ! if (k == M_READ || k == M_WRITE) gfc_unset_implicit_pure (NULL); } diff -Nrcpad gcc-7.4.0/gcc/fortran/iresolve.c gcc-7.5.0/gcc/fortran/iresolve.c *** gcc-7.4.0/gcc/fortran/iresolve.c Sun Mar 5 11:35:47 2017 --- gcc-7.5.0/gcc/fortran/iresolve.c Sat Mar 23 16:01:57 2019 *************** along with GCC; see the file COPYING3. *** 35,40 **** --- 35,41 ---- #include "intrinsic.h" #include "constructor.h" #include "arith.h" + #include "trans.h" /* Given printf-like arguments, return a stable version of the result string. *************** gfc_resolve_fe_runtime_error (gfc_code * *** 2286,2291 **** --- 2287,2296 ---- a->name = "%VAL"; c->resolved_sym = gfc_get_intrinsic_sub_symbol (name); + /* We set the backend_decl here because runtime_error is a + variadic function and we would use the wrong calling + convention otherwise. */ + c->resolved_sym->backend_decl = gfor_fndecl_runtime_error; } void diff -Nrcpad gcc-7.4.0/gcc/fortran/lang.opt gcc-7.5.0/gcc/fortran/lang.opt *** gcc-7.4.0/gcc/fortran/lang.opt Thu Jan 19 23:09:45 2017 --- gcc-7.5.0/gcc/fortran/lang.opt Fri Aug 30 12:42:14 2019 *************** fsign-zero *** 718,723 **** --- 718,730 ---- Fortran Var(flag_sign_zero) Init(1) Apply negative sign to zero values. + ftail-call-workaround + Frotran Alias(ftail-call-workaround=,1,0) + + ftail-call-workaround= + Fortran RejectNegative Joined UInteger IntegerRange(0, 2) Var(flag_tail_call_workaround) Init(1) + Disallow tail call optimization when a calling routine may have omitted character lengths. + funderscoring Fortran Var(flag_underscoring) Init(1) Append underscores to externally visible names. diff -Nrcpad gcc-7.4.0/gcc/fortran/match.c gcc-7.5.0/gcc/fortran/match.c *** gcc-7.4.0/gcc/fortran/match.c Sun May 20 17:16:09 2018 --- gcc-7.5.0/gcc/fortran/match.c Wed Mar 13 22:15:33 2019 *************** gfc_match_type_spec (gfc_typespec *ts) *** 2050,2057 **** ts->type = BT_CHARACTER; m = gfc_match_char_spec (ts); - if (ts->u.cl && ts->u.cl->length) - gfc_resolve_expr (ts->u.cl->length); if (m == MATCH_NO) m = MATCH_YES; --- 2050,2055 ---- *************** found: *** 2153,2158 **** --- 2151,2159 ---- return MATCH_NO; } + if (e->expr_type != EXPR_CONSTANT) + goto ohno; + gfc_next_char (); /* Burn the ')'. */ ts->kind = (int) mpz_get_si (e->value.integer); if (gfc_validate_kind (ts->type, ts->kind , true) == -1) *************** found: *** 2167,2172 **** --- 2168,2175 ---- } } + ohno: + /* If a type is not matched, simply return MATCH_NO. */ gfc_current_locus = old_locus; return MATCH_NO; diff -Nrcpad gcc-7.4.0/gcc/fortran/module.c gcc-7.5.0/gcc/fortran/module.c *** gcc-7.4.0/gcc/fortran/module.c Fri Oct 12 14:47:57 2018 --- gcc-7.5.0/gcc/fortran/module.c Sat Dec 22 18:09:19 2018 *************** static void *** 3632,3638 **** mio_namelist (gfc_symbol *sym) { gfc_namelist *n, *m; - const char *check_name; mio_lparen (); --- 3632,3637 ---- *************** mio_namelist (gfc_symbol *sym) *** 3643,3659 **** } else { - /* This departure from the standard is flagged as an error. - It does, in fact, work correctly. TODO: Allow it - conditionally? */ - if (sym->attr.flavor == FL_NAMELIST) - { - check_name = find_use_name (sym->name, false); - if (check_name && strcmp (check_name, sym->name) != 0) - gfc_error ("Namelist %s cannot be renamed by USE " - "association to %s", sym->name, check_name); - } - m = NULL; while (peek_atom () != ATOM_RPAREN) { --- 3642,3647 ---- diff -Nrcpad gcc-7.4.0/gcc/fortran/openmp.c gcc-7.5.0/gcc/fortran/openmp.c *** gcc-7.4.0/gcc/fortran/openmp.c Fri Jun 22 21:09:32 2018 --- gcc-7.5.0/gcc/fortran/openmp.c Fri Aug 30 11:09:22 2019 *************** gfc_match_omp_clauses (gfc_omp_clauses * *** 1699,1720 **** locus old_loc2 = gfc_current_locus; do { ! if (!c->sched_simd ! && gfc_match ("simd") == MATCH_YES) { c->sched_simd = true; nmodifiers++; } ! else if (!c->sched_monotonic ! && !c->sched_nonmonotonic ! && gfc_match ("monotonic") == MATCH_YES) { c->sched_monotonic = true; nmodifiers++; } ! else if (!c->sched_monotonic ! && !c->sched_nonmonotonic ! && gfc_match ("nonmonotonic") == MATCH_YES) { c->sched_nonmonotonic = true; nmodifiers++; --- 1699,1715 ---- locus old_loc2 = gfc_current_locus; do { ! if (gfc_match ("simd") == MATCH_YES) { c->sched_simd = true; nmodifiers++; } ! else if (gfc_match ("monotonic") == MATCH_YES) { c->sched_monotonic = true; nmodifiers++; } ! else if (gfc_match ("nonmonotonic") == MATCH_YES) { c->sched_nonmonotonic = true; nmodifiers++; *************** gfc_match_omp_clauses (gfc_omp_clauses * *** 1725,1731 **** gfc_current_locus = old_loc2; break; } ! if (nmodifiers == 0 && gfc_match (" , ") == MATCH_YES) continue; else if (gfc_match (" : ") == MATCH_YES) --- 1720,1726 ---- gfc_current_locus = old_loc2; break; } ! if (nmodifiers == 1 && gfc_match (" , ") == MATCH_YES) continue; else if (gfc_match (" : ") == MATCH_YES) *************** resolve_omp_clauses (gfc_code *code, gfc *** 4062,4067 **** --- 4057,4086 ---- gfc_warning (0, "INTEGER expression of SCHEDULE clause's chunk_size " "at %L must be positive", &expr->where); } + if (omp_clauses->sched_kind != OMP_SCHED_NONE + && omp_clauses->sched_nonmonotonic) + { + if (omp_clauses->sched_kind != OMP_SCHED_DYNAMIC + && omp_clauses->sched_kind != OMP_SCHED_GUIDED) + { + const char *p; + switch (omp_clauses->sched_kind) + { + case OMP_SCHED_STATIC: p = "STATIC"; break; + case OMP_SCHED_RUNTIME: p = "RUNTIME"; break; + case OMP_SCHED_AUTO: p = "AUTO"; break; + default: gcc_unreachable (); + } + gfc_error ("NONMONOTONIC modifier specified for %s schedule kind " + "at %L", p, &code->loc); + } + else if (omp_clauses->sched_monotonic) + gfc_error ("Both MONOTONIC and NONMONOTONIC schedule modifiers " + "specified at %L", &code->loc); + else if (omp_clauses->ordered) + gfc_error ("NONMONOTONIC schedule modifier specified with ORDERED " + "clause at %L", &code->loc); + } /* Check that no symbol appears on multiple clauses, except that a symbol can appear on both firstprivate and lastprivate. */ diff -Nrcpad gcc-7.4.0/gcc/fortran/parse.c gcc-7.5.0/gcc/fortran/parse.c *** gcc-7.4.0/gcc/fortran/parse.c Fri Dec 15 21:55:47 2017 --- gcc-7.5.0/gcc/fortran/parse.c Sat Mar 16 13:24:40 2019 *************** parse_block_data (void) *** 5780,5786 **** } else { ! s = gfc_get_gsymbol (gfc_new_block->name); if (s->defined || (s->type != GSYM_UNKNOWN && s->type != GSYM_BLOCK_DATA)) gfc_global_used (s, &gfc_new_block->declared_at); --- 5780,5786 ---- } else { ! s = gfc_get_gsymbol (gfc_new_block->name, false); if (s->defined || (s->type != GSYM_UNKNOWN && s->type != GSYM_BLOCK_DATA)) gfc_global_used (s, &gfc_new_block->declared_at); *************** parse_module (void) *** 5862,5868 **** gfc_gsymbol *s; bool error; ! s = gfc_get_gsymbol (gfc_new_block->name); if (s->defined || (s->type != GSYM_UNKNOWN && s->type != GSYM_MODULE)) gfc_global_used (s, &gfc_new_block->declared_at); else --- 5862,5868 ---- gfc_gsymbol *s; bool error; ! s = gfc_get_gsymbol (gfc_new_block->name, false); if (s->defined || (s->type != GSYM_UNKNOWN && s->type != GSYM_MODULE)) gfc_global_used (s, &gfc_new_block->declared_at); else *************** add_global_procedure (bool sub) *** 5926,5932 **** name is a global identifier. */ if (!gfc_new_block->binding_label || gfc_notification_std (GFC_STD_F2008)) { ! s = gfc_get_gsymbol (gfc_new_block->name); if (s->defined || (s->type != GSYM_UNKNOWN --- 5926,5932 ---- name is a global identifier. */ if (!gfc_new_block->binding_label || gfc_notification_std (GFC_STD_F2008)) { ! s = gfc_get_gsymbol (gfc_new_block->name, false); if (s->defined || (s->type != GSYM_UNKNOWN *************** add_global_procedure (bool sub) *** 5951,5957 **** && (!gfc_notification_std (GFC_STD_F2008) || strcmp (gfc_new_block->name, gfc_new_block->binding_label) != 0)) { ! s = gfc_get_gsymbol (gfc_new_block->binding_label); if (s->defined || (s->type != GSYM_UNKNOWN --- 5951,5957 ---- && (!gfc_notification_std (GFC_STD_F2008) || strcmp (gfc_new_block->name, gfc_new_block->binding_label) != 0)) { ! s = gfc_get_gsymbol (gfc_new_block->binding_label, true); if (s->defined || (s->type != GSYM_UNKNOWN *************** add_global_program (void) *** 5983,5989 **** if (gfc_new_block == NULL) return; ! s = gfc_get_gsymbol (gfc_new_block->name); if (s->defined || (s->type != GSYM_UNKNOWN && s->type != GSYM_PROGRAM)) gfc_global_used (s, &gfc_new_block->declared_at); --- 5983,5989 ---- if (gfc_new_block == NULL) return; ! s = gfc_get_gsymbol (gfc_new_block->name, false); if (s->defined || (s->type != GSYM_UNKNOWN && s->type != GSYM_PROGRAM)) gfc_global_used (s, &gfc_new_block->declared_at); diff -Nrcpad gcc-7.4.0/gcc/fortran/primary.c gcc-7.5.0/gcc/fortran/primary.c *** gcc-7.4.0/gcc/fortran/primary.c Tue Mar 6 19:27:48 2018 --- gcc-7.5.0/gcc/fortran/primary.c Wed Dec 12 01:26:12 2018 *************** gfc_match_structure_constructor (gfc_sym *** 2980,2985 **** --- 2980,2986 ---- e = gfc_get_expr (); e->symtree = symtree; e->expr_type = EXPR_FUNCTION; + e->where = gfc_current_locus; gcc_assert (gfc_fl_struct (sym->attr.flavor) && symtree->n.sym->attr.flavor == FL_PROCEDURE); diff -Nrcpad gcc-7.4.0/gcc/fortran/resolve.c gcc-7.5.0/gcc/fortran/resolve.c *** gcc-7.4.0/gcc/fortran/resolve.c Sat Nov 24 18:54:52 2018 --- gcc-7.5.0/gcc/fortran/resolve.c Sun Oct 27 16:21:36 2019 *************** resolve_common_blocks (gfc_symtree *comm *** 1045,1051 **** } if (!gsym) { ! gsym = gfc_get_gsymbol (common_root->n.common->name); gsym->type = GSYM_COMMON; gsym->where = common_root->n.common->where; gsym->defined = 1; --- 1045,1051 ---- } if (!gsym) { ! gsym = gfc_get_gsymbol (common_root->n.common->name, false); gsym->type = GSYM_COMMON; gsym->where = common_root->n.common->where; gsym->defined = 1; *************** resolve_common_blocks (gfc_symtree *comm *** 1067,1073 **** } if (!gsym) { ! gsym = gfc_get_gsymbol (common_root->n.common->binding_label); gsym->type = GSYM_COMMON; gsym->where = common_root->n.common->where; gsym->defined = 1; --- 1067,1073 ---- } if (!gsym) { ! gsym = gfc_get_gsymbol (common_root->n.common->binding_label, true); gsym->type = GSYM_COMMON; gsym->where = common_root->n.common->where; gsym->defined = 1; *************** is_illegal_recursion (gfc_symbol* sym, g *** 1576,1583 **** || gfc_fl_struct (sym->attr.flavor)) return false; - gcc_assert (sym->attr.flavor == FL_PROCEDURE); - /* If we've got an ENTRY, find real procedure. */ if (sym->attr.entry && sym->ns->entries) proc_sym = sym->ns->entries->sym; --- 1576,1581 ---- *************** resolve_global_procedure (gfc_symbol *sy *** 2379,2385 **** type = sub ? GSYM_SUBROUTINE : GSYM_FUNCTION; ! gsym = gfc_get_gsymbol (sym->binding_label ? sym->binding_label : sym->name); if ((gsym->type != GSYM_UNKNOWN && gsym->type != type)) gfc_global_used (gsym, where); --- 2377,2384 ---- type = sub ? GSYM_SUBROUTINE : GSYM_FUNCTION; ! gsym = gfc_get_gsymbol (sym->binding_label ? sym->binding_label : sym->name, ! sym->binding_label != NULL); if ((gsym->type != GSYM_UNKNOWN && gsym->type != type)) gfc_global_used (gsym, where); *************** resolve_operator (gfc_expr *e) *** 3737,3743 **** if (op2->ts.type != e->ts.type || op2->ts.kind != e->ts.kind) gfc_convert_type (op2, &e->ts, 1); e = logical_to_bitwise (e); ! return resolve_function (e); } sprintf (msg, _("Operands of logical operator %%<%s%%> at %%L are %s/%s"), --- 3736,3742 ---- if (op2->ts.type != e->ts.type || op2->ts.kind != e->ts.kind) gfc_convert_type (op2, &e->ts, 1); e = logical_to_bitwise (e); ! break; } sprintf (msg, _("Operands of logical operator %%<%s%%> at %%L are %s/%s"), *************** resolve_operator (gfc_expr *e) *** 3753,3759 **** e->ts.type = BT_INTEGER; e->ts.kind = op1->ts.kind; e = logical_to_bitwise (e); ! return resolve_function (e); } if (op1->ts.type == BT_LOGICAL) --- 3752,3758 ---- e->ts.type = BT_INTEGER; e->ts.kind = op1->ts.kind; e = logical_to_bitwise (e); ! break; } if (op1->ts.type == BT_LOGICAL) *************** resolve_variable (gfc_expr *e) *** 5161,5166 **** --- 5160,5182 ---- gfc_fix_class_refs (e); if (!sym->attr.dimension && e->ref && e->ref->type == REF_ARRAY) return false; + else if (sym->attr.dimension && (!e->ref || e->ref->type != REF_ARRAY)) + { + /* This can happen because the parser did not detect that the + associate name is an array and the expression had no array + part_ref. */ + gfc_ref *ref = gfc_get_ref (); + ref->type = REF_ARRAY; + ref->u.ar = *gfc_get_array_ref(); + ref->u.ar.type = AR_FULL; + if (sym->as) + { + ref->u.ar.as = sym->as; + ref->u.ar.dimen = sym->as->rank; + } + ref->next = e->ref; + e->ref = ref; + } } if (sym->ts.type == BT_DERIVED && sym->ts.u.derived->attr.generic) *************** gfc_expr_to_initialize (gfc_expr *e) *** 6989,6994 **** --- 7005,7014 ---- for (ref = result->ref; ref; ref = ref->next) if (ref->type == REF_ARRAY && ref->next == NULL) { + if (ref->u.ar.dimen == 0 + && ref->u.ar.as && ref->u.ar.as->corank) + return result; + ref->u.ar.type = AR_FULL; for (i = 0; i < ref->u.ar.dimen; i++) *************** resolve_allocate_expr (gfc_expr *e, gfc_ *** 7414,7426 **** if (codimension) for (i = ar->dimen; i < ar->dimen + ar->codimen; i++) ! if (ar->dimen_type[i] == DIMEN_THIS_IMAGE) ! { ! gfc_error ("Coarray specification required in ALLOCATE statement " ! "at %L", &e->where); ! goto failure; ! } for (i = 0; i < ar->dimen; i++) { if (ar->type == AR_ELEMENT || ar->type == AR_FULL) --- 7434,7487 ---- if (codimension) for (i = ar->dimen; i < ar->dimen + ar->codimen; i++) ! { ! switch (ar->dimen_type[i]) ! { ! case DIMEN_THIS_IMAGE: ! gfc_error ("Coarray specification required in ALLOCATE statement " ! "at %L", &e->where); ! goto failure; + case DIMEN_RANGE: + if (ar->start[i] == 0 || ar->end[i] == 0) + { + /* If ar->stride[i] is NULL, we issued a previous error. */ + if (ar->stride[i] == NULL) + gfc_error ("Bad array specification in ALLOCATE statement " + "at %L", &e->where); + goto failure; + } + else if (gfc_dep_compare_expr (ar->start[i], ar->end[i]) == 1) + { + gfc_error ("Upper cobound is less than lower cobound at %L", + &ar->start[i]->where); + goto failure; + } + break; + + case DIMEN_ELEMENT: + if (ar->start[i]->expr_type == EXPR_CONSTANT) + { + gcc_assert (ar->start[i]->ts.type == BT_INTEGER); + if (mpz_cmp_si (ar->start[i]->value.integer, 1) < 0) + { + gfc_error ("Upper cobound is less than lower cobound " + " of 1 at %L", &ar->start[i]->where); + goto failure; + } + } + break; + + case DIMEN_STAR: + break; + + default: + gfc_error ("Bad array specification in ALLOCATE statement at %L", + &e->where); + goto failure; + + } + } for (i = 0; i < ar->dimen; i++) { if (ar->type == AR_ELEMENT || ar->type == AR_FULL) *************** get_temp_from_expr (gfc_expr *e, gfc_nam *** 10264,10269 **** --- 10325,10335 ---- gfc_get_sym_tree (name, ns, &tmp, false); gfc_add_type (tmp->n.sym, &e->ts, NULL); + if (e->expr_type == EXPR_CONSTANT && e->ts.type == BT_CHARACTER) + tmp->n.sym->ts.u.cl->length = gfc_get_int_expr (gfc_charlen_int_kind, + NULL, + e->value.character.length); + as = NULL; ref = NULL; aref = NULL; *************** deferred_op_assign (gfc_code **code, gfc *** 10754,10759 **** --- 10820,10828 ---- if (!gfc_check_dependency ((*code)->expr1, (*code)->expr2, 1)) return false; + if (gfc_expr_attr ((*code)->expr1).pointer) + return false; + tmp_expr = get_temp_from_expr ((*code)->expr1, ns); tmp_expr->where = (*code)->loc; *************** start: *** 11163,11169 **** case EXEC_ENDFILE: case EXEC_REWIND: case EXEC_FLUSH: ! if (!gfc_resolve_filepos (code->ext.filepos)) break; resolve_branch (code->ext.filepos->err, code); --- 11232,11238 ---- case EXEC_ENDFILE: case EXEC_REWIND: case EXEC_FLUSH: ! if (!gfc_resolve_filepos (code->ext.filepos, &code->loc)) break; resolve_branch (code->ext.filepos->err, code); *************** gfc_verify_binding_labels (gfc_symbol *s *** 11385,11391 **** && (gsym->type == GSYM_FUNCTION || gsym->type == GSYM_SUBROUTINE))) { if (!gsym) ! gsym = gfc_get_gsymbol (sym->binding_label); gsym->where = sym->declared_at; gsym->sym_name = sym->name; gsym->binding_label = sym->binding_label; --- 11454,11460 ---- && (gsym->type == GSYM_FUNCTION || gsym->type == GSYM_SUBROUTINE))) { if (!gsym) ! gsym = gfc_get_gsymbol (sym->binding_label, true); gsym->where = sym->declared_at; gsym->sym_name = sym->name; gsym->binding_label = sym->binding_label; *************** resolve_symbol (gfc_symbol *sym) *** 14854,14860 **** /* Set the formal_arg_flag so that check_conflict will not throw an error for host associated variables in the specification expression for an array_valued function. */ ! if (sym->attr.function && sym->as) formal_arg_flag = true; saved_specification_expr = specification_expr; --- 14923,14929 ---- /* Set the formal_arg_flag so that check_conflict will not throw an error for host associated variables in the specification expression for an array_valued function. */ ! if ((sym->attr.function || sym->attr.result) && sym->as) formal_arg_flag = true; saved_specification_expr = specification_expr; *************** resolve_equivalence (gfc_equiv *eq) *** 15883,15890 **** } ! /* Function called by resolve_fntype to flag other symbol used in the ! length type parameter specification of function resuls. */ static bool flag_fn_result_spec (gfc_expr *expr, --- 15952,15959 ---- } ! /* Function called by resolve_fntype to flag other symbols used in the ! length type parameter specification of function results. */ static bool flag_fn_result_spec (gfc_expr *expr, diff -Nrcpad gcc-7.4.0/gcc/fortran/symbol.c gcc-7.5.0/gcc/fortran/symbol.c *** gcc-7.4.0/gcc/fortran/symbol.c Sat Jun 9 20:10:34 2018 --- gcc-7.5.0/gcc/fortran/symbol.c Mon Mar 25 19:58:04 2019 *************** check_conflict (symbol_attribute *attr, *** 477,483 **** /* The copying of procedure dummy arguments for module procedures in a submodule occur whilst the current state is COMP_CONTAINS. It is necessary, therefore, to let this through. */ ! if (attr->dummy && (attr->function || attr->subroutine) && gfc_current_state () == COMP_CONTAINS && !(gfc_new_block && gfc_new_block->abr_modproc_decl)) --- 477,483 ---- /* The copying of procedure dummy arguments for module procedures in a submodule occur whilst the current state is COMP_CONTAINS. It is necessary, therefore, to let this through. */ ! if (name && attr->dummy && (attr->function || attr->subroutine) && gfc_current_state () == COMP_CONTAINS && !(gfc_new_block && gfc_new_block->abr_modproc_decl)) *************** check_conflict (symbol_attribute *attr, *** 509,514 **** --- 509,515 ---- conf (external, intrinsic); conf (entry, intrinsic); + conf (abstract, intrinsic); if ((attr->if_source == IFSRC_DECL && !attr->procedure) || attr->contained) conf (external, subroutine); *************** gfc_add_subroutine (symbol_attribute *at *** 1595,1601 **** return false; attr->subroutine = 1; ! return check_conflict (attr, name, where); } --- 1596,1610 ---- return false; attr->subroutine = 1; ! ! /* If we are looking at a BLOCK DATA statement and we encounter a ! name with a leading underscore (which must be ! compiler-generated), do not check. See PR 84394. */ ! ! if (name && *name != '_' && gfc_current_state () != COMP_BLOCK_DATA) ! return check_conflict (attr, name, where); ! else ! return true; } *************** gfc_add_procedure (symbol_attribute *att *** 1711,1717 **** if (where == NULL) where = &gfc_current_locus; ! if (attr->proc != PROC_UNKNOWN && !attr->module_procedure) { if (attr->proc == PROC_ST_FUNCTION && t == PROC_INTERNAL && !gfc_notification_std (GFC_STD_F2008)) --- 1720,1727 ---- if (where == NULL) where = &gfc_current_locus; ! if (attr->proc != PROC_UNKNOWN && !attr->module_procedure ! && attr->access == ACCESS_UNKNOWN) { if (attr->proc == PROC_ST_FUNCTION && t == PROC_INTERNAL && !gfc_notification_std (GFC_STD_F2008)) *************** gsym_compare (void *_s1, void *_s2) *** 4173,4179 **** /* Get a global symbol, creating it if it doesn't exist. */ gfc_gsymbol * ! gfc_get_gsymbol (const char *name) { gfc_gsymbol *s; --- 4183,4189 ---- /* Get a global symbol, creating it if it doesn't exist. */ gfc_gsymbol * ! gfc_get_gsymbol (const char *name, bool bind_c) { gfc_gsymbol *s; *************** gfc_get_gsymbol (const char *name) *** 4184,4189 **** --- 4194,4200 ---- s = XCNEW (gfc_gsymbol); s->type = GSYM_UNKNOWN; s->name = gfc_get_string ("%s", name); + s->bind_c = bind_c; gfc_insert_bbt (&gfc_gsym_root, s, gsym_compare); diff -Nrcpad gcc-7.4.0/gcc/fortran/target-memory.c gcc-7.5.0/gcc/fortran/target-memory.c *** gcc-7.4.0/gcc/fortran/target-memory.c Fri Jan 13 19:53:16 2017 --- gcc-7.5.0/gcc/fortran/target-memory.c Sun Mar 31 19:21:37 2019 *************** gfc_element_size (gfc_expr *e) *** 111,116 **** --- 111,117 ---- case BT_CLASS: case BT_VOID: case BT_ASSUMED: + case BT_PROCEDURE: { /* Determine type size without clobbering the typespec for ISO C binding types. */ diff -Nrcpad gcc-7.4.0/gcc/fortran/trans-array.c gcc-7.5.0/gcc/fortran/trans-array.c *** gcc-7.4.0/gcc/fortran/trans-array.c Tue Jul 3 09:46:31 2018 --- gcc-7.5.0/gcc/fortran/trans-array.c Sat Mar 16 14:03:00 2019 *************** gfc_scalar_elemental_arg_saved_as_refere *** 2498,2503 **** --- 2498,2506 ---- if (ss_info->type != GFC_SS_REFERENCE) return false; + if (ss_info->data.scalar.needs_temporary) + return false; + /* If the actual argument can be absent (in other words, it can be a NULL reference), don't try to evaluate it; pass instead the reference directly. */ *************** gfc_array_allocate (gfc_se * se, gfc_exp *** 5482,5487 **** --- 5485,5491 ---- tree var_overflow = NULL_TREE; tree cond; tree set_descriptor; + tree not_prev_allocated = NULL_TREE; stmtblock_t set_descriptor_block; stmtblock_t elseblock; gfc_expr **lower; *************** gfc_array_allocate (gfc_se * se, gfc_exp *** 5619,5626 **** } } - gfc_start_block (&elseblock); - /* Allocate memory to store the data. */ if (POINTER_TYPE_P (TREE_TYPE (se->expr))) se->expr = build_fold_indirect_ref_loc (input_location, se->expr); --- 5623,5628 ---- *************** gfc_array_allocate (gfc_se * se, gfc_exp *** 5636,5641 **** --- 5638,5656 ---- pointer = gfc_conv_descriptor_data_get (se->expr); STRIP_NOPS (pointer); + if (allocatable) + { + not_prev_allocated = gfc_create_var (logical_type_node, + "not_prev_allocated"); + tmp = fold_build2_loc (input_location, EQ_EXPR, + logical_type_node, pointer, + build_int_cst (TREE_TYPE (pointer), 0)); + + gfc_add_modify (&se->pre, not_prev_allocated, tmp); + } + + gfc_start_block (&elseblock); + /* The allocatable variant takes the old pointer as first argument. */ if (allocatable) gfc_allocate_allocatable (&elseblock, pointer, size, token, *************** gfc_array_allocate (gfc_se * se, gfc_exp *** 5672,5677 **** --- 5687,5697 ---- cond = fold_build2_loc (input_location, EQ_EXPR, logical_type_node, status, build_int_cst (TREE_TYPE (status), 0)); + + if (not_prev_allocated != NULL_TREE) + cond = fold_build2_loc (input_location, TRUTH_OR_EXPR, + logical_type_node, cond, not_prev_allocated); + gfc_add_expr_to_block (&se->pre, fold_build3_loc (input_location, COND_EXPR, void_type_node, cond, *************** gfc_walk_variable_expr (gfc_ss * ss, gfc *** 9755,9760 **** --- 9775,9782 ---- { gfc_ref *ref; + gfc_fix_class_refs (expr); + for (ref = expr->ref; ref; ref = ref->next) if (ref->type == REF_ARRAY && ref->u.ar.type != AR_ELEMENT) break; diff -Nrcpad gcc-7.4.0/gcc/fortran/trans-decl.c gcc-7.5.0/gcc/fortran/trans-decl.c *** gcc-7.4.0/gcc/fortran/trans-decl.c Wed May 16 11:17:10 2018 --- gcc-7.5.0/gcc/fortran/trans-decl.c Sun Oct 27 16:21:36 2019 *************** gfc_get_label_decl (gfc_st_label * lp) *** 334,397 **** } } ! /* Convert a gfc_symbol to an identifier of the same name. */ ! ! static tree ! gfc_sym_identifier (gfc_symbol * sym) { if (sym->attr.is_main_program && strcmp (sym->name, "main") == 0) ! return (get_identifier ("MAIN__")); else ! return (get_identifier (sym->name)); } ! ! /* Construct mangled name from symbol name. */ static tree ! gfc_sym_mangled_identifier (gfc_symbol * sym) { ! char name[GFC_MAX_MANGLED_SYMBOL_LEN + 1]; /* Prevent the mangling of identifiers that have an assigned binding label (mainly those that are bind(c)). */ if (sym->attr.is_bind_c == 1 && sym->binding_label) ! return get_identifier (sym->binding_label); ! if (!sym->fn_result_spec) { if (sym->module == NULL) ! return gfc_sym_identifier (sym); else ! { ! snprintf (name, sizeof name, "__%s_MOD_%s", sym->module, sym->name); ! return get_identifier (name); ! } } else { /* This is an entity that is actually local to a module procedure that appears in the result specification expression. Since sym->module will be a zero length string, we use ns->proc_name ! instead. */ ! if (sym->ns->proc_name && sym->ns->proc_name->module) ! { ! snprintf (name, sizeof name, "__%s_MOD__%s_PROC_%s", ! sym->ns->proc_name->module, ! sym->ns->proc_name->name, ! sym->name); ! return get_identifier (name); ! } else ! { ! snprintf (name, sizeof name, "__%s_PROC_%s", ! sym->ns->proc_name->name, sym->name); ! return get_identifier (name); ! } } } /* Construct mangled function name from symbol name. */ --- 334,419 ---- } } + /* Return the name of an identifier. */ ! static const char * ! sym_identifier (gfc_symbol *sym) { if (sym->attr.is_main_program && strcmp (sym->name, "main") == 0) ! return "MAIN__"; else ! return sym->name; } ! /* Convert a gfc_symbol to an identifier of the same name. */ static tree ! gfc_sym_identifier (gfc_symbol * sym) { ! return get_identifier (sym_identifier (sym)); ! } + /* Construct mangled name from symbol name. */ + + static const char * + mangled_identifier (gfc_symbol *sym) + { + gfc_symbol *proc = sym->ns->proc_name; + static char name[3*GFC_MAX_MANGLED_SYMBOL_LEN + 14]; /* Prevent the mangling of identifiers that have an assigned binding label (mainly those that are bind(c)). */ + if (sym->attr.is_bind_c == 1 && sym->binding_label) ! return sym->binding_label; ! if (!sym->fn_result_spec ! || (sym->module && !(proc && proc->attr.flavor == FL_PROCEDURE))) { if (sym->module == NULL) ! return sym_identifier (sym); else ! snprintf (name, sizeof name, "__%s_MOD_%s", sym->module, sym->name); } else { /* This is an entity that is actually local to a module procedure that appears in the result specification expression. Since sym->module will be a zero length string, we use ns->proc_name ! to provide the module name instead. */ ! if (proc && proc->module) ! snprintf (name, sizeof name, "__%s_MOD__%s_PROC_%s", ! proc->module, proc->name, sym->name); else ! snprintf (name, sizeof name, "__%s_PROC_%s", ! proc->name, sym->name); } + + return name; } + /* Get mangled identifier, adding the symbol to the global table if + it is not yet already there. */ + + static tree + gfc_sym_mangled_identifier (gfc_symbol * sym) + { + tree result; + gfc_gsymbol *gsym; + const char *name; + + name = mangled_identifier (sym); + result = get_identifier (name); + + gsym = gfc_find_gsymbol (gfc_gsym_root, name); + if (gsym == NULL) + { + gsym = gfc_get_gsymbol (name, false); + gsym->ns = sym->ns; + gsym->sym_name = sym->name; + } + + return result; + } /* Construct mangled function name from symbol name. */ *************** gfc_get_module_backend_decl (gfc_symbol *** 831,837 **** { if (!gsym) { ! gsym = gfc_get_gsymbol (sym->module); gsym->type = GSYM_MODULE; gsym->ns = gfc_get_namespace (NULL, 0); } --- 853,859 ---- { if (!gsym) { ! gsym = gfc_get_gsymbol (sym->module, false); gsym->type = GSYM_MODULE; gsym->ns = gfc_get_namespace (NULL, 0); } *************** gfc_get_symbol_decl (gfc_symbol * sym) *** 1569,1581 **** if (VAR_P (length) && DECL_FILE_SCOPE_P (length)) { /* Add the string length to the same context as the symbol. */ ! if (DECL_CONTEXT (sym->backend_decl) == current_function_decl) ! gfc_add_decl_to_function (length); ! else ! gfc_add_decl_to_parent_function (length); ! gcc_assert (DECL_CONTEXT (sym->backend_decl) == ! DECL_CONTEXT (length)); gfc_defer_symbol_init (sym); } --- 1591,1607 ---- if (VAR_P (length) && DECL_FILE_SCOPE_P (length)) { /* Add the string length to the same context as the symbol. */ ! if (DECL_CONTEXT (length) == NULL_TREE) ! { ! if (DECL_CONTEXT (sym->backend_decl) ! == current_function_decl) ! gfc_add_decl_to_function (length); ! else ! gfc_add_decl_to_parent_function (length); ! } ! gcc_assert (DECL_CONTEXT (sym->backend_decl) ! == DECL_CONTEXT (length)); gfc_defer_symbol_init (sym); } *************** gfc_get_symbol_decl (gfc_symbol * sym) *** 1655,1661 **** { /* Catch functions. Only used for actual parameters, procedure pointers and procptr initialization targets. */ ! if (sym->attr.use_assoc || sym->attr.intrinsic || sym->attr.if_source != IFSRC_DECL) { decl = gfc_get_extern_function_decl (sym); --- 1681,1689 ---- { /* Catch functions. Only used for actual parameters, procedure pointers and procptr initialization targets. */ ! if (sym->attr.use_assoc ! || sym->attr.used_in_submodule ! || sym->attr.intrinsic || sym->attr.if_source != IFSRC_DECL) { decl = gfc_get_extern_function_decl (sym); *************** get_proc_pointer_decl (gfc_symbol *sym) *** 1862,1867 **** --- 1890,1911 ---- tree decl; tree attributes; + if (sym->module || sym->fn_result_spec) + { + const char *name; + gfc_gsymbol *gsym; + + name = mangled_identifier (sym); + gsym = gfc_find_gsymbol (gfc_gsym_root, name); + if (gsym != NULL) + { + gfc_symbol *s; + gfc_find_symbol (sym->name, gsym->ns, 0, &s); + if (s && s->backend_decl) + return s->backend_decl; + } + } + decl = sym->backend_decl; if (decl) return decl; *************** get_proc_pointer_decl (gfc_symbol *sym) *** 1934,1940 **** /* Get a basic decl for an external function. */ tree ! gfc_get_extern_function_decl (gfc_symbol * sym) { tree type; tree fndecl; --- 1978,1984 ---- /* Get a basic decl for an external function. */ tree ! gfc_get_extern_function_decl (gfc_symbol * sym, gfc_actual_arglist *actual_args) { tree type; tree fndecl; *************** gfc_get_extern_function_decl (gfc_symbol *** 1959,1967 **** return get_proc_pointer_decl (sym); /* See if this is an external procedure from the same file. If so, ! return the backend_decl. */ ! gsym = gfc_find_gsymbol (gfc_gsym_root, sym->binding_label ! ? sym->binding_label : sym->name); if (gsym && !gsym->defined) gsym = NULL; --- 2003,2024 ---- return get_proc_pointer_decl (sym); /* See if this is an external procedure from the same file. If so, ! return the backend_decl. If we are looking at a BIND(C) ! procedure and the symbol is not BIND(C), or vice versa, we ! haven't found the right procedure. */ ! ! if (sym->binding_label) ! { ! gsym = gfc_find_gsymbol (gfc_gsym_root, sym->binding_label); ! if (gsym && !gsym->bind_c) ! gsym = NULL; ! } ! else ! { ! gsym = gfc_find_gsymbol (gfc_gsym_root, sym->name); ! if (gsym && gsym->bind_c) ! gsym = NULL; ! } if (gsym && !gsym->defined) gsym = NULL; *************** module_sym: *** 2107,2113 **** mangled_name = gfc_sym_mangled_function_id (sym); } ! type = gfc_get_function_type (sym); fndecl = build_decl (input_location, FUNCTION_DECL, name, type); --- 2164,2170 ---- mangled_name = gfc_sym_mangled_function_id (sym); } ! type = gfc_get_function_type (sym, actual_args); fndecl = build_decl (input_location, FUNCTION_DECL, name, type); *************** create_function_arglist (gfc_symbol * sy *** 2457,2462 **** --- 2514,2530 ---- TREE_READONLY (length) = 1; gfc_finish_decl (length); + /* Marking the length DECL_HIDDEN_STRING_LENGTH will lead + to tail calls being disabled. Only do that if we + potentially have broken callers. */ + if (flag_tail_call_workaround + && f->sym->ts.u.cl + && f->sym->ts.u.cl->length + && f->sym->ts.u.cl->length->expr_type == EXPR_CONSTANT + && (flag_tail_call_workaround == 2 + || f->sym->ns->implicit_interface_calls)) + DECL_HIDDEN_STRING_LENGTH (length) = 1; + /* Remember the passed value. */ if (!f->sym->ts.u.cl || f->sym->ts.u.cl->passed_length) { *************** generate_coarray_sym_init (gfc_symbol *s *** 5220,5225 **** --- 5288,5320 ---- /* Handle "static" initializer. */ if (sym->value) { + if (sym->value->expr_type == EXPR_ARRAY) + { + gfc_constructor *c, *cnext; + + /* Test if the array has more than one element. */ + c = gfc_constructor_first (sym->value->value.constructor); + gcc_assert (c); /* Empty constructor should not happen here. */ + cnext = gfc_constructor_next (c); + + if (cnext) + { + /* An EXPR_ARRAY with a rank > 1 here has to come from a + DATA statement. Set its rank here as not to confuse + the following steps. */ + sym->value->rank = 1; + } + else + { + /* There is only a single value in the constructor, use + it directly for the assignment. */ + gfc_expr *new_expr; + new_expr = gfc_copy_expr (c->expr); + gfc_free_expr (sym->value); + sym->value = new_expr; + } + } + sym->attr.pointer = 1; tmp = gfc_trans_assignment (gfc_lval_expr_from_sym (sym), sym->value, true, false); *************** generate_local_decl (gfc_symbol * sym) *** 5464,5472 **** } else if (warn_unused_dummy_argument) { ! gfc_warning (OPT_Wunused_dummy_argument, ! "Unused dummy argument %qs at %L", sym->name, ! &sym->declared_at); if (sym->backend_decl != NULL_TREE) TREE_NO_WARNING(sym->backend_decl) = 1; } --- 5559,5569 ---- } else if (warn_unused_dummy_argument) { ! if (!sym->attr.artificial) ! gfc_warning (OPT_Wunused_dummy_argument, ! "Unused dummy argument %qs at %L", sym->name, ! &sym->declared_at); ! if (sym->backend_decl != NULL_TREE) TREE_NO_WARNING(sym->backend_decl) = 1; } *************** generate_local_decl (gfc_symbol * sym) *** 5556,5567 **** "imported at %L", sym->name, &sym->declared_at); } ! if (sym->ns ! && sym->ns->parent ! && sym->ns->parent->code ! && sym->ns->parent->code->op == EXEC_BLOCK) { ! if (sym->attr.referenced) gfc_get_symbol_decl (sym); sym->mark = 1; } --- 5653,5668 ---- "imported at %L", sym->name, &sym->declared_at); } ! if (sym->ns && sym->ns->construct_entities) { ! /* Construction of the intrinsic modules within a BLOCK ! construct, where ONLY and RENAMED entities are included, ! seems to be bogus. This is a workaround that can be removed ! if someone ever takes on the task to creating full-fledge ! modules. See PR 69455. */ ! if (sym->attr.referenced ! && sym->from_intmod != INTMOD_ISO_C_BINDING ! && sym->from_intmod != INTMOD_ISO_FORTRAN_ENV) gfc_get_symbol_decl (sym); sym->mark = 1; } diff -Nrcpad gcc-7.4.0/gcc/fortran/trans-expr.c gcc-7.5.0/gcc/fortran/trans-expr.c *** gcc-7.4.0/gcc/fortran/trans-expr.c Thu Sep 13 19:46:05 2018 --- gcc-7.5.0/gcc/fortran/trans-expr.c Thu Sep 12 09:05:14 2019 *************** gfc_find_and_cut_at_last_class_ref (gfc_ *** 391,397 **** e->ref = NULL; } ! base_expr = gfc_expr_to_initialize (e); /* Restore the original tail expression. */ if (class_ref) --- 391,397 ---- e->ref = NULL; } ! base_expr = gfc_copy_expr (e); /* Restore the original tail expression. */ if (class_ref) *************** gfc_conv_power_op (gfc_se * se, gfc_expr *** 2987,2992 **** --- 2987,3069 ---- if (gfc_conv_cst_int_power (se, lse.expr, rse.expr)) return; + if (INTEGER_CST_P (lse.expr) + && TREE_CODE (TREE_TYPE (rse.expr)) == INTEGER_TYPE) + { + wide_int wlhs = lse.expr; + HOST_WIDE_INT v; + v = wlhs.to_shwi (); + if (v == 1) + { + /* 1**something is always 1. */ + se->expr = build_int_cst (TREE_TYPE (lse.expr), 1); + return; + } + else if (v == 2 || v == 4 || v == 8 || v == 16) + { + /* 2**n = 1<expr = fold_build3_loc (input_location, COND_EXPR, type, cond2, + build_int_cst (type, 0), cond); + return; + } + else if (v == -1) + { + /* (-1)**n is 1 - ((n & 1) << 1) */ + tree type; + tree tmp; + + type = TREE_TYPE (lse.expr); + tmp = fold_build2_loc (input_location, BIT_AND_EXPR, type, + rse.expr, build_int_cst (type, 1)); + tmp = fold_build2_loc (input_location, LSHIFT_EXPR, type, + tmp, build_int_cst (type, 1)); + tmp = fold_build2_loc (input_location, MINUS_EXPR, type, + build_int_cst (type, 1), tmp); + se->expr = tmp; + return; + } + } + gfc_int4_type_node = gfc_get_int_type (4); /* In case of integer operands with kinds 1 or 2, we call the integer kind 4 *************** conv_base_obj_fcn_val (gfc_se * se, tree *** 3722,3728 **** static void ! conv_function_val (gfc_se * se, gfc_symbol * sym, gfc_expr * expr) { tree tmp; --- 3799,3806 ---- static void ! conv_function_val (gfc_se * se, gfc_symbol * sym, gfc_expr * expr, ! gfc_actual_arglist *actual_args) { tree tmp; *************** conv_function_val (gfc_se * se, gfc_symb *** 3740,3746 **** else { if (!sym->backend_decl) ! sym->backend_decl = gfc_get_extern_function_decl (sym); TREE_USED (sym->backend_decl) = 1; --- 3818,3824 ---- else { if (!sym->backend_decl) ! sym->backend_decl = gfc_get_extern_function_decl (sym, actual_args); TREE_USED (sym->backend_decl) = 1; *************** gfc_conv_procedure_call (gfc_se * se, gf *** 5635,5640 **** --- 5713,5728 ---- break; } + if (e->ts.type == BT_DERIVED && fsym && fsym->ts.type == BT_CLASS) + { + /* The derived type is passed to gfc_deallocate_alloc_comp. + Therefore, class actuals can be handled correctly but derived + types passed to class formals need the _data component. */ + tmp = gfc_class_data_get (tmp); + if (!CLASS_DATA (fsym)->attr.dimension) + tmp = build_fold_indirect_ref_loc (input_location, tmp); + } + if (e->expr_type == EXPR_OP && e->value.op.op == INTRINSIC_PARENTHESES && e->value.op.op1->expr_type == EXPR_VARIABLE) *************** gfc_conv_procedure_call (gfc_se * se, gf *** 5646,5661 **** gfc_add_expr_to_block (&se->post, local_tmp); } - if (e->ts.type == BT_DERIVED && fsym && fsym->ts.type == BT_CLASS) - { - /* The derived type is passed to gfc_deallocate_alloc_comp. - Therefore, class actuals can handled correctly but derived - types passed to class formals need the _data component. */ - tmp = gfc_class_data_get (tmp); - if (!CLASS_DATA (fsym)->attr.dimension) - tmp = build_fold_indirect_ref_loc (input_location, tmp); - } - tmp = gfc_deallocate_alloc_comp (e->ts.u.derived, tmp, parm_rank); gfc_prepend_expr_to_block (&post, tmp); --- 5734,5739 ---- *************** gfc_conv_procedure_call (gfc_se * se, gf *** 6161,6167 **** /* Generate the actual call. */ if (base_object == NULL_TREE) ! conv_function_val (se, sym, expr); else conv_base_obj_fcn_val (se, base_object, expr); --- 6239,6245 ---- /* Generate the actual call. */ if (base_object == NULL_TREE) ! conv_function_val (se, sym, expr, args); else conv_base_obj_fcn_val (se, base_object, expr); *************** trans_caf_token_assign (gfc_se *lse, gfc *** 8255,8277 **** } } - /* Indentify class valued proc_pointer assignments. */ - - static bool - pointer_assignment_is_proc_pointer (gfc_expr * expr1, gfc_expr * expr2) - { - gfc_ref * ref; - - ref = expr1->ref; - while (ref && ref->next) - ref = ref->next; - - return ref && ref->type == REF_COMPONENT - && ref->u.c.component->attr.proc_pointer - && expr2->expr_type == EXPR_VARIABLE - && expr2->symtree->n.sym->attr.flavor == FL_PROCEDURE; - } - /* Do everything that is needed for a CLASS function expr2. */ --- 8333,8338 ---- *************** gfc_trans_pointer_assignment (gfc_expr * *** 8325,8331 **** tree tmp; tree decl; tree expr1_vptr = NULL_TREE; ! bool scalar, non_proc_pointer_assign; gfc_ss *ss; gfc_start_block (&block); --- 8386,8392 ---- tree tmp; tree decl; tree expr1_vptr = NULL_TREE; ! bool scalar, non_proc_ptr_assign; gfc_ss *ss; gfc_start_block (&block); *************** gfc_trans_pointer_assignment (gfc_expr * *** 8333,8339 **** gfc_init_se (&lse, NULL); /* Usually testing whether this is not a proc pointer assignment. */ ! non_proc_pointer_assign = !pointer_assignment_is_proc_pointer (expr1, expr2); /* Check whether the expression is a scalar or not; we cannot use expr1->rank as it can be nonzero for proc pointers. */ --- 8394,8402 ---- gfc_init_se (&lse, NULL); /* Usually testing whether this is not a proc pointer assignment. */ ! non_proc_ptr_assign = !(gfc_expr_attr (expr1).proc_pointer ! && expr2->expr_type == EXPR_VARIABLE ! && expr2->symtree->n.sym->attr.flavor == FL_PROCEDURE); /* Check whether the expression is a scalar or not; we cannot use expr1->rank as it can be nonzero for proc pointers. */ *************** gfc_trans_pointer_assignment (gfc_expr * *** 8343,8349 **** gfc_free_ss_chain (ss); if (expr1->ts.type == BT_DERIVED && expr2->ts.type == BT_CLASS ! && expr2->expr_type != EXPR_FUNCTION && non_proc_pointer_assign) { gfc_add_data_component (expr2); /* The following is required as gfc_add_data_component doesn't --- 8406,8412 ---- gfc_free_ss_chain (ss); if (expr1->ts.type == BT_DERIVED && expr2->ts.type == BT_CLASS ! && expr2->expr_type != EXPR_FUNCTION && non_proc_ptr_assign) { gfc_add_data_component (expr2); /* The following is required as gfc_add_data_component doesn't *************** gfc_trans_pointer_assignment (gfc_expr * *** 8363,8369 **** else gfc_conv_expr (&rse, expr2); ! if (non_proc_pointer_assign && expr1->ts.type == BT_CLASS) { trans_class_vptr_len_assignment (&block, expr1, expr2, &rse, NULL, NULL); --- 8426,8432 ---- else gfc_conv_expr (&rse, expr2); ! if (non_proc_ptr_assign && expr1->ts.type == BT_CLASS) { trans_class_vptr_len_assignment (&block, expr1, expr2, &rse, NULL, NULL); *************** gfc_trans_assignment_1 (gfc_expr * expr1 *** 10102,10120 **** /* When assigning a character function result to a deferred-length variable, the function call must happen before the (re)allocation of the lhs - otherwise the character length of the result is not known. ! NOTE: This relies on having the exact dependence of the length type parameter available to the caller; gfortran saves it in the .mod files. ! NOTE ALSO: The concatenation operation generates a temporary pointer, whose allocation must go to the innermost loop. ! NOTE ALSO (2): A character conversion may generate a temporary, too. */ if (flag_realloc_lhs && expr2->ts.type == BT_CHARACTER && expr1->ts.deferred && !(lss != gfc_ss_terminator ! && ((expr2->expr_type == EXPR_OP ! && expr2->value.op.op == INTRINSIC_CONCAT) || (expr2->expr_type == EXPR_FUNCTION && expr2->value.function.isym != NULL ! && expr2->value.function.isym->id == GFC_ISYM_CONVERSION)))) gfc_add_block_to_block (&block, &rse.pre); /* Nullify the allocatable components corresponding to those of the lhs --- 10165,10191 ---- /* When assigning a character function result to a deferred-length variable, the function call must happen before the (re)allocation of the lhs - otherwise the character length of the result is not known. ! NOTE 1: This relies on having the exact dependence of the length type parameter available to the caller; gfortran saves it in the .mod files. ! NOTE 2: Vector array references generate an index temporary that must ! not go outside the loop. Otherwise, variables should not generate ! a pre block. ! NOTE 3: The concatenation operation generates a temporary pointer, whose allocation must go to the innermost loop. ! NOTE 4: Elemental functions may generate a temporary, too. */ if (flag_realloc_lhs && expr2->ts.type == BT_CHARACTER && expr1->ts.deferred && !(lss != gfc_ss_terminator ! && rss != gfc_ss_terminator ! && ((expr2->expr_type == EXPR_VARIABLE && expr2->rank) ! || (expr2->expr_type == EXPR_FUNCTION ! && expr2->value.function.esym != NULL ! && expr2->value.function.esym->attr.elemental) || (expr2->expr_type == EXPR_FUNCTION && expr2->value.function.isym != NULL ! && expr2->value.function.isym->elemental) ! || (expr2->expr_type == EXPR_OP ! && expr2->value.op.op == INTRINSIC_CONCAT)))) gfc_add_block_to_block (&block, &rse.pre); /* Nullify the allocatable components corresponding to those of the lhs diff -Nrcpad gcc-7.4.0/gcc/fortran/trans-openmp.c gcc-7.5.0/gcc/fortran/trans-openmp.c *** gcc-7.4.0/gcc/fortran/trans-openmp.c Sat Mar 3 13:33:26 2018 --- gcc-7.5.0/gcc/fortran/trans-openmp.c Fri Aug 30 12:15:50 2019 *************** gfc_omp_clause_default_ctor (tree clause *** 460,466 **** if ((! GFC_DESCRIPTOR_TYPE_P (type) || GFC_TYPE_ARRAY_AKIND (type) != GFC_ARRAY_ALLOCATABLE) ! && !GFC_DECL_GET_SCALAR_ALLOCATABLE (OMP_CLAUSE_DECL (clause))) { if (gfc_has_alloc_comps (type, OMP_CLAUSE_DECL (clause))) { --- 460,467 ---- if ((! GFC_DESCRIPTOR_TYPE_P (type) || GFC_TYPE_ARRAY_AKIND (type) != GFC_ARRAY_ALLOCATABLE) ! && (!GFC_DECL_GET_SCALAR_ALLOCATABLE (OMP_CLAUSE_DECL (clause)) ! || !POINTER_TYPE_P (type))) { if (gfc_has_alloc_comps (type, OMP_CLAUSE_DECL (clause))) { *************** gfc_omp_clause_default_ctor (tree clause *** 546,551 **** --- 547,555 ---- build3_loc (input_location, COND_EXPR, void_type_node, cond, then_b, else_b)); + /* Avoid -W*uninitialized warnings. */ + if (DECL_P (decl)) + TREE_NO_WARNING (decl) = 1; } else gfc_add_expr_to_block (&block, then_b); *************** gfc_omp_clause_copy_ctor (tree clause, t *** 567,573 **** if ((! GFC_DESCRIPTOR_TYPE_P (type) || GFC_TYPE_ARRAY_AKIND (type) != GFC_ARRAY_ALLOCATABLE) ! && !GFC_DECL_GET_SCALAR_ALLOCATABLE (OMP_CLAUSE_DECL (clause))) { if (gfc_has_alloc_comps (type, OMP_CLAUSE_DECL (clause))) { --- 571,578 ---- if ((! GFC_DESCRIPTOR_TYPE_P (type) || GFC_TYPE_ARRAY_AKIND (type) != GFC_ARRAY_ALLOCATABLE) ! && (!GFC_DECL_GET_SCALAR_ALLOCATABLE (OMP_CLAUSE_DECL (clause)) ! || !POINTER_TYPE_P (type))) { if (gfc_has_alloc_comps (type, OMP_CLAUSE_DECL (clause))) { *************** gfc_omp_clause_copy_ctor (tree clause, t *** 651,656 **** --- 656,664 ---- gfc_add_expr_to_block (&block, build3_loc (input_location, COND_EXPR, void_type_node, cond, then_b, else_b)); + /* Avoid -W*uninitialized warnings. */ + if (DECL_P (dest)) + TREE_NO_WARNING (dest) = 1; return gfc_finish_block (&block); } *************** gfc_omp_clause_assign_op (tree clause, t *** 667,673 **** if ((! GFC_DESCRIPTOR_TYPE_P (type) || GFC_TYPE_ARRAY_AKIND (type) != GFC_ARRAY_ALLOCATABLE) ! && !GFC_DECL_GET_SCALAR_ALLOCATABLE (OMP_CLAUSE_DECL (clause))) { if (gfc_has_alloc_comps (type, OMP_CLAUSE_DECL (clause))) { --- 675,682 ---- if ((! GFC_DESCRIPTOR_TYPE_P (type) || GFC_TYPE_ARRAY_AKIND (type) != GFC_ARRAY_ALLOCATABLE) ! && (!GFC_DECL_GET_SCALAR_ALLOCATABLE (OMP_CLAUSE_DECL (clause)) ! || !POINTER_TYPE_P (type))) { if (gfc_has_alloc_comps (type, OMP_CLAUSE_DECL (clause))) { *************** gfc_omp_clause_linear_ctor (tree clause, *** 905,911 **** if ((! GFC_DESCRIPTOR_TYPE_P (type) || GFC_TYPE_ARRAY_AKIND (type) != GFC_ARRAY_ALLOCATABLE) ! && !GFC_DECL_GET_SCALAR_ALLOCATABLE (OMP_CLAUSE_DECL (clause))) { gcc_assert (TREE_CODE (type) == ARRAY_TYPE); if (!TYPE_DOMAIN (type) --- 914,921 ---- if ((! GFC_DESCRIPTOR_TYPE_P (type) || GFC_TYPE_ARRAY_AKIND (type) != GFC_ARRAY_ALLOCATABLE) ! && (!GFC_DECL_GET_SCALAR_ALLOCATABLE (OMP_CLAUSE_DECL (clause)) ! || !POINTER_TYPE_P (type))) { gcc_assert (TREE_CODE (type) == ARRAY_TYPE); if (!TYPE_DOMAIN (type) *************** gfc_omp_clause_dtor (tree clause, tree d *** 989,995 **** if ((! GFC_DESCRIPTOR_TYPE_P (type) || GFC_TYPE_ARRAY_AKIND (type) != GFC_ARRAY_ALLOCATABLE) ! && !GFC_DECL_GET_SCALAR_ALLOCATABLE (OMP_CLAUSE_DECL (clause))) { if (gfc_has_alloc_comps (type, OMP_CLAUSE_DECL (clause))) return gfc_walk_alloc_comps (decl, NULL_TREE, --- 999,1006 ---- if ((! GFC_DESCRIPTOR_TYPE_P (type) || GFC_TYPE_ARRAY_AKIND (type) != GFC_ARRAY_ALLOCATABLE) ! && (!GFC_DECL_GET_SCALAR_ALLOCATABLE (OMP_CLAUSE_DECL (clause)) ! || !POINTER_TYPE_P (type))) { if (gfc_has_alloc_comps (type, OMP_CLAUSE_DECL (clause))) return gfc_walk_alloc_comps (decl, NULL_TREE, diff -Nrcpad gcc-7.4.0/gcc/fortran/trans-types.c gcc-7.5.0/gcc/fortran/trans-types.c *** gcc-7.4.0/gcc/fortran/trans-types.c Wed May 16 11:17:10 2018 --- gcc-7.5.0/gcc/fortran/trans-types.c Sun Sep 15 22:35:40 2019 *************** gfc_typenode_for_spec (gfc_typespec * sp *** 1139,1145 **** { spec->type = BT_INTEGER; spec->kind = gfc_index_integer_kind; ! spec->f90_type = BT_VOID; } break; case BT_VOID: --- 1139,1146 ---- { spec->type = BT_INTEGER; spec->kind = gfc_index_integer_kind; ! spec->f90_type = BT_VOID; ! spec->is_c_interop = 1; /* Mark as escaping later. */ } break; case BT_VOID: *************** gfc_typenode_for_spec (gfc_typespec * sp *** 1156,1161 **** --- 1157,1165 ---- basetype = pfunc_type_node; } break; + case BT_PROCEDURE: + basetype = pfunc_type_node; + break; default: gcc_unreachable (); } *************** create_fn_spec (gfc_symbol *sym, tree fn *** 2884,2890 **** || f->sym->ts.u.derived->attr.pointer_comp)) || (f->sym->ts.type == BT_CLASS && (CLASS_DATA (f->sym)->ts.u.derived->attr.proc_pointer_comp ! || CLASS_DATA (f->sym)->ts.u.derived->attr.pointer_comp))) spec[spec_len++] = '.'; else if (f->sym->attr.intent == INTENT_IN) spec[spec_len++] = 'r'; --- 2888,2895 ---- || f->sym->ts.u.derived->attr.pointer_comp)) || (f->sym->ts.type == BT_CLASS && (CLASS_DATA (f->sym)->ts.u.derived->attr.proc_pointer_comp ! || CLASS_DATA (f->sym)->ts.u.derived->attr.pointer_comp)) ! || (f->sym->ts.type == BT_INTEGER && f->sym->ts.is_c_interop)) spec[spec_len++] = '.'; else if (f->sym->attr.intent == INTENT_IN) spec[spec_len++] = 'r'; *************** create_fn_spec (gfc_symbol *sym, tree fn *** 2897,2905 **** return build_type_attribute_variant (fntype, tmp); } tree ! gfc_get_function_type (gfc_symbol * sym) { tree type; vec *typelist = NULL; --- 2902,2966 ---- return build_type_attribute_variant (fntype, tmp); } + /* Helper function - if we do not find an interface for a procedure, + construct it from the actual arglist. Luckily, this can only + happen for call by reference, so the information we actually need + to provide (and which would be impossible to guess from the call + itself) is not actually needed. */ + + static void + get_formal_from_actual_arglist (gfc_symbol *sym, gfc_actual_arglist *actual_args) + { + gfc_actual_arglist *a; + gfc_formal_arglist **f; + gfc_symbol *s; + char name[GFC_MAX_SYMBOL_LEN + 1]; + static int var_num; + + f = &sym->formal; + for (a = actual_args; a != NULL; a = a->next) + { + (*f) = gfc_get_formal_arglist (); + if (a->expr) + { + snprintf (name, GFC_MAX_SYMBOL_LEN, "_formal_%d", var_num ++); + gfc_get_symbol (name, gfc_current_ns, &s); + if (a->expr->ts.type == BT_PROCEDURE) + { + s->attr.flavor = FL_PROCEDURE; + } + else + { + s->ts = a->expr->ts; + + if (s->ts.type == BT_CHARACTER) + s->ts.u.cl = gfc_get_charlen (); + + s->ts.deferred = 0; + s->ts.is_iso_c = 0; + s->ts.is_c_interop = 0; + s->attr.flavor = FL_VARIABLE; + if (a->expr->rank > 0) + { + s->attr.dimension = 1; + s->as = gfc_get_array_spec (); + s->as->type = AS_ASSUMED_SIZE; + } + } + s->attr.dummy = 1; + s->attr.artificial = 1; + s->attr.intent = INTENT_UNKNOWN; + (*f)->sym = s; + } + else /* If a->expr is NULL, this is an alternate rerturn. */ + (*f)->sym = NULL; + + f = &((*f)->next); + } + } tree ! gfc_get_function_type (gfc_symbol * sym, gfc_actual_arglist *actual_args) { tree type; vec *typelist = NULL; *************** gfc_get_function_type (gfc_symbol * sym) *** 2957,2962 **** --- 3018,3027 ---- vec_safe_push (typelist, build_pointer_type(gfc_charlen_type_node)); } } + if (sym->backend_decl == error_mark_node && actual_args != NULL + && sym->formal == NULL && (sym->attr.proc == PROC_EXTERNAL + || sym->attr.proc == PROC_UNKNOWN)) + get_formal_from_actual_arglist (sym, actual_args); /* Build the argument types for the function. */ for (f = gfc_sym_get_dummy_args (sym); f; f = f->next) diff -Nrcpad gcc-7.4.0/gcc/fortran/trans-types.h gcc-7.5.0/gcc/fortran/trans-types.h *** gcc-7.4.0/gcc/fortran/trans-types.h Mon Nov 13 20:01:20 2017 --- gcc-7.5.0/gcc/fortran/trans-types.h Sun Mar 3 09:20:09 2019 *************** tree gfc_sym_type (gfc_symbol *); *** 87,93 **** tree gfc_typenode_for_spec (gfc_typespec *, int c = 0); int gfc_copy_dt_decls_ifequal (gfc_symbol *, gfc_symbol *, bool); ! tree gfc_get_function_type (gfc_symbol *); tree gfc_type_for_size (unsigned, int); tree gfc_type_for_mode (machine_mode, int); --- 87,93 ---- tree gfc_typenode_for_spec (gfc_typespec *, int c = 0); int gfc_copy_dt_decls_ifequal (gfc_symbol *, gfc_symbol *, bool); ! tree gfc_get_function_type (gfc_symbol *, gfc_actual_arglist *args = NULL); tree gfc_type_for_size (unsigned, int); tree gfc_type_for_mode (machine_mode, int); diff -Nrcpad gcc-7.4.0/gcc/fortran/trans.h gcc-7.5.0/gcc/fortran/trans.h *** gcc-7.4.0/gcc/fortran/trans.h Wed May 16 09:35:19 2018 --- gcc-7.5.0/gcc/fortran/trans.h Sun Mar 3 09:20:09 2019 *************** void gfc_merge_block_scope (stmtblock_t *** 578,584 **** tree gfc_get_label_decl (gfc_st_label *); /* Return the decl for an external function. */ ! tree gfc_get_extern_function_decl (gfc_symbol *); /* Return the decl for a function. */ tree gfc_get_function_decl (gfc_symbol *); --- 578,585 ---- tree gfc_get_label_decl (gfc_st_label *); /* Return the decl for an external function. */ ! tree gfc_get_extern_function_decl (gfc_symbol *, ! gfc_actual_arglist *args = NULL); /* Return the decl for a function. */ tree gfc_get_function_decl (gfc_symbol *); diff -Nrcpad gcc-7.4.0/gcc/function.c gcc-7.5.0/gcc/function.c *** gcc-7.4.0/gcc/function.c Fri Jun 22 20:58:02 2018 --- gcc-7.5.0/gcc/function.c Sat Dec 15 12:07:42 2018 *************** match_asm_constraints_1 (rtx_insn *insn, *** 6604,6610 **** output_matched[match] = true; start_sequence (); ! emit_move_insn (output, input); insns = get_insns (); end_sequence (); emit_insn_before (insns, insn); --- 6604,6610 ---- output_matched[match] = true; start_sequence (); ! emit_move_insn (output, copy_rtx (input)); insns = get_insns (); end_sequence (); emit_insn_before (insns, insn); diff -Nrcpad gcc-7.4.0/gcc/gcse.c gcc-7.5.0/gcc/gcse.c *** gcc-7.4.0/gcc/gcse.c Fri Mar 3 11:53:14 2017 --- gcc-7.5.0/gcc/gcse.c Mon Sep 2 12:56:24 2019 *************** compute_hash_table_work (struct gcse_has *** 1532,1538 **** 0, regno, hrsi) record_last_reg_set_info (insn, regno); ! if (! RTL_CONST_OR_PURE_CALL_P (insn)) record_last_mem_set_info (insn); } --- 1532,1539 ---- 0, regno, hrsi) record_last_reg_set_info (insn, regno); ! if (! RTL_CONST_OR_PURE_CALL_P (insn) ! || RTL_LOOPING_CONST_OR_PURE_CALL_P (insn)) record_last_mem_set_info (insn); } *************** pre_expr_reaches_here_p (basic_block occ *** 1963,1976 **** return rval; } ! /* Generate RTL to copy an EXPR to its `reaching_reg' and return it. */ ! static rtx_insn * ! process_insert_insn (struct gcse_expr *expr) { - rtx reg = expr->reaching_reg; - /* Copy the expression to make sure we don't have any sharing issues. */ - rtx exp = copy_rtx (expr->expr); rtx_insn *pat; start_sequence (); --- 1964,1974 ---- return rval; } ! /* Generate RTL to copy an EXP to REG and return it. */ ! rtx_insn * ! prepare_copy_insn (rtx reg, rtx exp) { rtx_insn *pat; start_sequence (); *************** process_insert_insn (struct gcse_expr *e *** 1996,2001 **** --- 1994,2011 ---- return pat; } + /* Generate RTL to copy an EXPR to its `reaching_reg' and return it. */ + + static rtx_insn * + process_insert_insn (struct gcse_expr *expr) + { + rtx reg = expr->reaching_reg; + /* Copy the expression to make sure we don't have any sharing issues. */ + rtx exp = copy_rtx (expr->expr); + + return prepare_copy_insn (reg, exp); + } + /* Add EXPR to the end of basic block BB. This is used by both the PRE and code hoisting. */ diff -Nrcpad gcc-7.4.0/gcc/gengtype-lex.c gcc-7.5.0/gcc/gengtype-lex.c *** gcc-7.4.0/gcc/gengtype-lex.c Thu Dec 6 09:59:44 2018 --- gcc-7.5.0/gcc/gengtype-lex.c Thu Nov 14 07:36:15 2019 *************** int yy_flex_debug = 0; *** 1188,1194 **** #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; ! #line 1 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" /* -*- indented-text -*- */ /* Process source files and output type information. Copyright (C) 2002-2017 Free Software Foundation, Inc. --- 1188,1194 ---- #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; ! #line 1 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" /* -*- indented-text -*- */ /* Process source files and output type information. Copyright (C) 2002-2017 Free Software Foundation, Inc. *************** You should have received a copy of the G *** 1209,1215 **** along with GCC; see the file COPYING3. If not see . */ #define YY_NO_INPUT 1 ! #line 24 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" #ifdef HOST_GENERATOR_FILE #include "config.h" #define GENERATOR_FILE 1 --- 1209,1215 ---- along with GCC; see the file COPYING3. If not see . */ #define YY_NO_INPUT 1 ! #line 24 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" #ifdef HOST_GENERATOR_FILE #include "config.h" #define GENERATOR_FILE 1 *************** YY_DECL *** 1425,1431 **** register char *yy_cp, *yy_bp; register int yy_act; ! #line 66 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" /* Do this on entry to yylex(): */ *yylval = 0; --- 1425,1431 ---- register char *yy_cp, *yy_bp; register int yy_act; ! #line 66 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" /* Do this on entry to yylex(): */ *yylval = 0; *************** case 1: *** 1522,1528 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 77 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { BEGIN(in_struct); return TYPEDEF; --- 1522,1528 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 77 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { BEGIN(in_struct); return TYPEDEF; *************** case 2: *** 1534,1540 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 81 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { BEGIN(in_struct); return STRUCT; --- 1534,1540 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 81 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { BEGIN(in_struct); return STRUCT; *************** case 3: *** 1546,1552 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 85 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { BEGIN(in_struct); return UNION; --- 1546,1552 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 85 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { BEGIN(in_struct); return UNION; *************** case 4: *** 1558,1564 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 89 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { BEGIN(in_struct); return STRUCT; --- 1558,1564 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 89 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { BEGIN(in_struct); return STRUCT; *************** case 5: *** 1570,1576 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 93 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { BEGIN(in_struct); return EXTERN; --- 1570,1576 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 93 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { BEGIN(in_struct); return EXTERN; *************** case 6: *** 1582,1588 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 97 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { BEGIN(in_struct); return STATIC; --- 1582,1588 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 97 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { BEGIN(in_struct); return STATIC; *************** YY_RULE_SETUP *** 1593,1617 **** case 7: YY_RULE_SETUP ! #line 105 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { BEGIN(in_struct_comment); } YY_BREAK case 8: /* rule 8 can match eol */ YY_RULE_SETUP ! #line 106 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 9: /* rule 9 can match eol */ YY_RULE_SETUP ! #line 108 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { update_lineno (yytext, yyleng); } YY_BREAK case 10: /* rule 10 can match eol */ YY_RULE_SETUP ! #line 109 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 11: --- 1593,1617 ---- case 7: YY_RULE_SETUP ! #line 105 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { BEGIN(in_struct_comment); } YY_BREAK case 8: /* rule 8 can match eol */ YY_RULE_SETUP ! #line 106 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 9: /* rule 9 can match eol */ YY_RULE_SETUP ! #line 108 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { update_lineno (yytext, yyleng); } YY_BREAK case 10: /* rule 10 can match eol */ YY_RULE_SETUP ! #line 109 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 11: *************** case 11: *** 1620,1626 **** (yy_c_buf_p) = yy_cp = yy_bp + 5; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 111 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" /* don't care */ YY_BREAK case 12: --- 1620,1626 ---- (yy_c_buf_p) = yy_cp = yy_bp + 5; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 111 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" /* don't care */ YY_BREAK case 12: *************** case 12: *** 1628,1644 **** *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 113 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" case 13: /* rule 13 can match eol */ ! #line 114 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" case 14: /* rule 14 can match eol */ ! #line 115 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" case 15: /* rule 15 can match eol */ YY_RULE_SETUP ! #line 115 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext, yyleng, yyleng + 1); return IGNORABLE_CXX_KEYWORD; --- 1628,1644 ---- *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 113 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" case 13: /* rule 13 can match eol */ ! #line 114 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" case 14: /* rule 14 can match eol */ ! #line 115 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" case 15: /* rule 15 can match eol */ YY_RULE_SETUP ! #line 115 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext, yyleng, yyleng + 1); return IGNORABLE_CXX_KEYWORD; *************** case 16: *** 1650,1656 **** (yy_c_buf_p) = yy_cp = yy_bp + 3; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 119 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { return GTY_TOKEN; } YY_BREAK case 17: --- 1650,1656 ---- (yy_c_buf_p) = yy_cp = yy_bp + 3; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 119 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { return GTY_TOKEN; } YY_BREAK case 17: *************** case 17: *** 1659,1665 **** (yy_c_buf_p) = yy_cp = yy_bp + 5; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 120 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { return UNION; } YY_BREAK case 18: --- 1659,1665 ---- (yy_c_buf_p) = yy_cp = yy_bp + 5; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 120 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { return UNION; } YY_BREAK case 18: *************** case 18: *** 1668,1674 **** (yy_c_buf_p) = yy_cp = yy_bp + 6; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 121 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { return STRUCT; } YY_BREAK case 19: --- 1668,1674 ---- (yy_c_buf_p) = yy_cp = yy_bp + 6; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 121 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { return STRUCT; } YY_BREAK case 19: *************** case 19: *** 1677,1683 **** (yy_c_buf_p) = yy_cp = yy_bp + 5; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 122 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { return STRUCT; } YY_BREAK case 20: --- 1677,1683 ---- (yy_c_buf_p) = yy_cp = yy_bp + 5; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 122 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { return STRUCT; } YY_BREAK case 20: *************** case 20: *** 1686,1692 **** (yy_c_buf_p) = yy_cp = yy_bp + 7; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 123 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { return TYPEDEF; } YY_BREAK case 21: --- 1686,1692 ---- (yy_c_buf_p) = yy_cp = yy_bp + 7; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 123 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { return TYPEDEF; } YY_BREAK case 21: *************** case 21: *** 1695,1701 **** (yy_c_buf_p) = yy_cp = yy_bp + 4; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 124 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { return ENUM; } YY_BREAK case 22: --- 1695,1701 ---- (yy_c_buf_p) = yy_cp = yy_bp + 4; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 124 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { return ENUM; } YY_BREAK case 22: *************** case 22: *** 1704,1710 **** (yy_c_buf_p) = yy_cp = yy_bp + 9; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 125 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { return PTR_ALIAS; } YY_BREAK case 23: --- 1704,1710 ---- (yy_c_buf_p) = yy_cp = yy_bp + 9; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 125 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { return PTR_ALIAS; } YY_BREAK case 23: *************** case 23: *** 1713,1719 **** (yy_c_buf_p) = yy_cp = yy_bp + 10; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 126 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { return NESTED_PTR; } YY_BREAK case 24: --- 1713,1719 ---- (yy_c_buf_p) = yy_cp = yy_bp + 10; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 126 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { return NESTED_PTR; } YY_BREAK case 24: *************** case 24: *** 1722,1733 **** (yy_c_buf_p) = yy_cp = yy_bp + 4; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 127 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { return USER_GTY; } YY_BREAK case 25: YY_RULE_SETUP ! #line 128 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { return NUM; } YY_BREAK case 26: --- 1722,1733 ---- (yy_c_buf_p) = yy_cp = yy_bp + 4; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 127 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { return USER_GTY; } YY_BREAK case 25: YY_RULE_SETUP ! #line 128 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { return NUM; } YY_BREAK case 26: *************** case 26: *** 1735,1745 **** *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-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" case 27: /* rule 27 can match eol */ YY_RULE_SETUP ! #line 131 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { size_t len; --- 1735,1745 ---- *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-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" case 27: /* rule 27 can match eol */ YY_RULE_SETUP ! #line 131 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { size_t len; *************** case 28: *** 1757,1763 **** (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 142 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1); return ID; --- 1757,1763 ---- (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP ! #line 142 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1); return ID; *************** YY_RULE_SETUP *** 1766,1772 **** case 29: /* rule 29 can match eol */ YY_RULE_SETUP ! #line 147 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1); return STRING; --- 1766,1772 ---- case 29: /* rule 29 can match eol */ YY_RULE_SETUP ! #line 147 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1); return STRING; *************** YY_RULE_SETUP *** 1776,1782 **** case 30: /* rule 30 can match eol */ YY_RULE_SETUP ! #line 152 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1); return ARRAY; --- 1776,1782 ---- case 30: /* rule 30 can match eol */ YY_RULE_SETUP ! #line 152 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1); return ARRAY; *************** YY_RULE_SETUP *** 1785,1791 **** case 31: /* rule 31 can match eol */ YY_RULE_SETUP ! #line 156 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng); return CHAR; --- 1785,1791 ---- case 31: /* rule 31 can match eol */ YY_RULE_SETUP ! #line 156 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng); return CHAR; *************** YY_RULE_SETUP *** 1793,1816 **** YY_BREAK case 32: YY_RULE_SETUP ! #line 161 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { return ELLIPSIS; } YY_BREAK case 33: YY_RULE_SETUP ! #line 162 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { return yytext[0]; } YY_BREAK /* ignore pp-directives */ case 34: /* rule 34 can match eol */ YY_RULE_SETUP ! #line 165 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" {lexer_line.line++;} YY_BREAK case 35: YY_RULE_SETUP ! #line 167 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { error_at_line (&lexer_line, "unexpected character `%s'", yytext); } --- 1793,1816 ---- YY_BREAK case 32: YY_RULE_SETUP ! #line 161 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { return ELLIPSIS; } YY_BREAK case 33: YY_RULE_SETUP ! #line 162 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { return yytext[0]; } YY_BREAK /* ignore pp-directives */ case 34: /* rule 34 can match eol */ YY_RULE_SETUP ! #line 165 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" {lexer_line.line++;} YY_BREAK case 35: YY_RULE_SETUP ! #line 167 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { error_at_line (&lexer_line, "unexpected character `%s'", yytext); } *************** YY_RULE_SETUP *** 1818,1853 **** case 36: YY_RULE_SETUP ! #line 172 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { BEGIN(in_comment); } YY_BREAK case 37: /* rule 37 can match eol */ YY_RULE_SETUP ! #line 173 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 38: /* rule 38 can match eol */ YY_RULE_SETUP ! #line 174 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 39: ! #line 176 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" case 40: /* rule 40 can match eol */ ! #line 177 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" case 41: /* rule 41 can match eol */ YY_RULE_SETUP ! #line 177 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 42: /* rule 42 can match eol */ YY_RULE_SETUP ! #line 178 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { update_lineno (yytext, yyleng); } YY_BREAK case 43: --- 1818,1853 ---- case 36: YY_RULE_SETUP ! #line 172 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { BEGIN(in_comment); } YY_BREAK case 37: /* rule 37 can match eol */ YY_RULE_SETUP ! #line 173 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 38: /* rule 38 can match eol */ YY_RULE_SETUP ! #line 174 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 39: ! #line 176 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" case 40: /* rule 40 can match eol */ ! #line 177 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" case 41: /* rule 41 can match eol */ YY_RULE_SETUP ! #line 177 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 42: /* rule 42 can match eol */ YY_RULE_SETUP ! #line 178 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { update_lineno (yytext, yyleng); } YY_BREAK case 43: *************** case 43: *** 1856,1876 **** (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-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 44: /* rule 44 can match eol */ YY_RULE_SETUP ! #line 182 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 45: ! #line 184 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" case 46: YY_RULE_SETUP ! #line 184 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 47: --- 1856,1876 ---- (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-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 44: /* rule 44 can match eol */ YY_RULE_SETUP ! #line 182 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { lexer_line.line++; } YY_BREAK case 45: ! #line 184 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" case 46: YY_RULE_SETUP ! #line 184 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 47: *************** case 47: *** 1879,1903 **** (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-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 48: YY_RULE_SETUP ! #line 188 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { BEGIN(INITIAL); } YY_BREAK case 49: YY_RULE_SETUP ! #line 189 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { BEGIN(in_struct); } YY_BREAK case 50: ! #line 192 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" case 51: YY_RULE_SETUP ! #line 192 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" { error_at_line (&lexer_line, "unterminated comment or string; unexpected EOF"); --- 1879,1903 ---- (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-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 48: YY_RULE_SETUP ! #line 188 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { BEGIN(INITIAL); } YY_BREAK case 49: YY_RULE_SETUP ! #line 189 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { BEGIN(in_struct); } YY_BREAK case 50: ! #line 192 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" case 51: YY_RULE_SETUP ! #line 192 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" { error_at_line (&lexer_line, "unterminated comment or string; unexpected EOF"); *************** YY_RULE_SETUP *** 1906,1917 **** case 52: /* rule 52 can match eol */ YY_RULE_SETUP ! #line 197 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 53: YY_RULE_SETUP ! #line 199 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK #line 1917 "gengtype-lex.c" --- 1906,1917 ---- case 52: /* rule 52 can match eol */ YY_RULE_SETUP ! #line 197 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" /* do nothing */ YY_BREAK case 53: YY_RULE_SETUP ! #line 199 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK #line 1917 "gengtype-lex.c" *************** void yyfree (void * ptr ) *** 2878,2884 **** #define YYTABLES_NAME "yytables" ! #line 199 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l" --- 2878,2884 ---- #define YYTABLES_NAME "yytables" ! #line 199 "/space/rguenther/gcc-7.5.0/gcc-7.5.0/gcc/gengtype-lex.l" diff -Nrcpad gcc-7.4.0/gcc/ggc-page.c gcc-7.5.0/gcc/ggc-page.c *** gcc-7.4.0/gcc/ggc-page.c Fri Dec 15 11:31:42 2017 --- gcc-7.5.0/gcc/ggc-page.c Thu Sep 5 19:27:31 2019 *************** ggc_pch_read (FILE *f, void *addr) *** 2553,2558 **** --- 2553,2561 ---- count_old_page_tables = G.by_depth_in_use; + if (fread (&d, sizeof (d), 1, f) != 1) + fatal_error (input_location, "cannot read PCH file: %m"); + /* We've just read in a PCH file. So, every object that used to be allocated is now free. */ clear_marks (); *************** ggc_pch_read (FILE *f, void *addr) *** 2581,2588 **** /* Allocate the appropriate page-table entries for the pages read from the PCH file. */ - if (fread (&d, sizeof (d), 1, f) != 1) - fatal_error (input_location, "can%'t read PCH file: %m"); for (i = 0; i < NUM_ORDERS; i++) { --- 2584,2589 ---- diff -Nrcpad gcc-7.4.0/gcc/gimple-fold.c gcc-7.5.0/gcc/gimple-fold.c *** gcc-7.4.0/gcc/gimple-fold.c Fri Dec 15 08:19:15 2017 --- gcc-7.5.0/gcc/gimple-fold.c Fri Aug 30 16:44:17 2019 *************** gimple_fold_builtin_sprintf (gimple_stmt *** 2718,2728 **** gimple_seq stmts = NULL; gimple *repl = gimple_build_call (fn, 2, dest, fmt); gimple_seq_add_stmt_without_update (&stmts, repl); ! if (gimple_call_lhs (stmt)) { ! repl = gimple_build_assign (gimple_call_lhs (stmt), ! build_int_cst (integer_type_node, ! strlen (fmt_str))); gimple_seq_add_stmt_without_update (&stmts, repl); gsi_replace_with_seq_vops (gsi, stmts); /* gsi now points at the assignment to the lhs, get a --- 2718,2727 ---- gimple_seq stmts = NULL; gimple *repl = gimple_build_call (fn, 2, dest, fmt); gimple_seq_add_stmt_without_update (&stmts, repl); ! if (tree lhs = gimple_call_lhs (stmt)) { ! repl = gimple_build_assign (lhs, build_int_cst (TREE_TYPE (lhs), ! strlen (fmt_str))); gimple_seq_add_stmt_without_update (&stmts, repl); gsi_replace_with_seq_vops (gsi, stmts); /* gsi now points at the assignment to the lhs, get a *************** gimple_fold_builtin_sprintf (gimple_stmt *** 2766,2777 **** gimple_seq stmts = NULL; gimple *repl = gimple_build_call (fn, 2, dest, orig); gimple_seq_add_stmt_without_update (&stmts, repl); ! if (gimple_call_lhs (stmt)) { ! if (!useless_type_conversion_p (integer_type_node, TREE_TYPE (orig_len))) ! orig_len = fold_convert (integer_type_node, orig_len); ! repl = gimple_build_assign (gimple_call_lhs (stmt), orig_len); gimple_seq_add_stmt_without_update (&stmts, repl); gsi_replace_with_seq_vops (gsi, stmts); /* gsi now points at the assignment to the lhs, get a --- 2765,2776 ---- gimple_seq stmts = NULL; gimple *repl = gimple_build_call (fn, 2, dest, orig); gimple_seq_add_stmt_without_update (&stmts, repl); ! if (tree lhs = gimple_call_lhs (stmt)) { ! if (!useless_type_conversion_p (TREE_TYPE (lhs), TREE_TYPE (orig_len))) ! orig_len = fold_convert (TREE_TYPE (lhs), orig_len); ! repl = gimple_build_assign (lhs, orig_len); gimple_seq_add_stmt_without_update (&stmts, repl); gsi_replace_with_seq_vops (gsi, stmts); /* gsi now points at the assignment to the lhs, get a *************** gimple_fold_builtin_snprintf (gimple_stm *** 2853,2862 **** gimple_seq stmts = NULL; gimple *repl = gimple_build_call (fn, 2, dest, fmt); gimple_seq_add_stmt_without_update (&stmts, repl); ! if (gimple_call_lhs (stmt)) { ! repl = gimple_build_assign (gimple_call_lhs (stmt), ! build_int_cst (integer_type_node, len)); gimple_seq_add_stmt_without_update (&stmts, repl); gsi_replace_with_seq_vops (gsi, stmts); /* gsi now points at the assignment to the lhs, get a --- 2852,2861 ---- gimple_seq stmts = NULL; gimple *repl = gimple_build_call (fn, 2, dest, fmt); gimple_seq_add_stmt_without_update (&stmts, repl); ! if (tree lhs = gimple_call_lhs (stmt)) { ! repl = gimple_build_assign (lhs, ! build_int_cst (TREE_TYPE (lhs), len)); gimple_seq_add_stmt_without_update (&stmts, repl); gsi_replace_with_seq_vops (gsi, stmts); /* gsi now points at the assignment to the lhs, get a *************** gimple_fold_builtin_snprintf (gimple_stm *** 2905,2916 **** gimple_seq stmts = NULL; gimple *repl = gimple_build_call (fn, 2, dest, orig); gimple_seq_add_stmt_without_update (&stmts, repl); ! if (gimple_call_lhs (stmt)) { ! if (!useless_type_conversion_p (integer_type_node, TREE_TYPE (orig_len))) ! orig_len = fold_convert (integer_type_node, orig_len); ! repl = gimple_build_assign (gimple_call_lhs (stmt), orig_len); gimple_seq_add_stmt_without_update (&stmts, repl); gsi_replace_with_seq_vops (gsi, stmts); /* gsi now points at the assignment to the lhs, get a --- 2904,2915 ---- gimple_seq stmts = NULL; gimple *repl = gimple_build_call (fn, 2, dest, orig); gimple_seq_add_stmt_without_update (&stmts, repl); ! if (tree lhs = gimple_call_lhs (stmt)) { ! if (!useless_type_conversion_p (TREE_TYPE (lhs), TREE_TYPE (orig_len))) ! orig_len = fold_convert (TREE_TYPE (lhs), orig_len); ! repl = gimple_build_assign (lhs, orig_len); gimple_seq_add_stmt_without_update (&stmts, repl); gsi_replace_with_seq_vops (gsi, stmts); /* gsi now points at the assignment to the lhs, get a *************** fold_const_aggregate_ref_1 (tree t, tree *** 6319,6332 **** = wi::sext (wi::to_offset (idx) - wi::to_offset (low_bound), TYPE_PRECISION (TREE_TYPE (idx))); if (wi::fits_shwi_p (woffset)) { offset = woffset.to_shwi (); - /* TODO: This code seems wrong, multiply then check - to see if it fits. */ - offset *= tree_to_uhwi (unit_size); - offset *= BITS_PER_UNIT; - base = TREE_OPERAND (t, 0); ctor = get_base_constructor (base, &offset, valueize); /* Empty constructor. Always fold to 0. */ --- 6318,6328 ---- = wi::sext (wi::to_offset (idx) - wi::to_offset (low_bound), TYPE_PRECISION (TREE_TYPE (idx))); + woffset *= tree_to_uhwi (unit_size); + woffset *= BITS_PER_UNIT; if (wi::fits_shwi_p (woffset)) { offset = woffset.to_shwi (); base = TREE_OPERAND (t, 0); ctor = get_base_constructor (base, &offset, valueize); /* Empty constructor. Always fold to 0. */ diff -Nrcpad gcc-7.4.0/gcc/gimple-pretty-print.c gcc-7.5.0/gcc/gimple-pretty-print.c *** gcc-7.4.0/gcc/gimple-pretty-print.c Wed Jul 26 08:58:37 2017 --- gcc-7.5.0/gcc/gimple-pretty-print.c Wed Jan 2 22:49:04 2019 *************** dump_gimple_asm (pretty_printer *buffer, *** 1989,1994 **** --- 1989,1996 ---- pp_string (buffer, "__asm__"); if (gimple_asm_volatile_p (gs)) pp_string (buffer, " __volatile__"); + if (gimple_asm_inline_p (gs)) + pp_string (buffer, " __inline__"); if (gimple_asm_nlabels (gs)) pp_string (buffer, " goto"); pp_string (buffer, "(\""); diff -Nrcpad gcc-7.4.0/gcc/gimple-ssa-sprintf.c gcc-7.5.0/gcc/gimple-ssa-sprintf.c *** gcc-7.4.0/gcc/gimple-ssa-sprintf.c Fri Dec 22 08:54:26 2017 --- gcc-7.5.0/gcc/gimple-ssa-sprintf.c Fri Aug 30 12:35:05 2019 *************** try_substitute_return_value (gimple_stmt *** 3353,3362 **** are badly declared. */ && !stmt_ends_bb_p (info.callstmt)) { ! tree cst = build_int_cst (integer_type_node, minretval); ! if (lhs == NULL_TREE ! && info.nowrite) { /* Remove the call to the bounded function with a zero size (e.g., snprintf(0, 0, "%i", 123)) if there is no lhs. */ --- 3353,3362 ---- are badly declared. */ && !stmt_ends_bb_p (info.callstmt)) { ! tree cst = build_int_cst (lhs ? TREE_TYPE (lhs) : integer_type_node, ! minretval); ! if (lhs == NULL_TREE && info.nowrite) { /* Remove the call to the bounded function with a zero size (e.g., snprintf(0, 0, "%i", 123)) if there is no lhs. */ *************** try_substitute_return_value (gimple_stmt *** 3397,3403 **** } } } ! else if (lhs) { bool setrange = false; --- 3397,3403 ---- } } } ! else if (lhs && types_compatible_p (TREE_TYPE (lhs), integer_type_node)) { bool setrange = false; diff -Nrcpad gcc-7.4.0/gcc/gimple-ssa-strength-reduction.c gcc-7.5.0/gcc/gimple-ssa-strength-reduction.c *** gcc-7.4.0/gcc/gimple-ssa-strength-reduction.c Fri Oct 26 19:38:45 2018 --- gcc-7.5.0/gcc/gimple-ssa-strength-reduction.c Thu Jan 31 21:55:45 2019 *************** slsr_process_mul (gimple *gs, tree rhs1, *** 1220,1226 **** c->next_interp = c2->cand_num; c2->first_interp = c->cand_num; } ! else { /* Record an interpretation for the multiply-immediate. */ c = create_mul_imm_cand (gs, rhs1, rhs2, speed); --- 1220,1226 ---- c->next_interp = c2->cand_num; c2->first_interp = c->cand_num; } ! else if (TREE_CODE (rhs2) == INTEGER_CST && !integer_zerop (rhs2)) { /* Record an interpretation for the multiply-immediate. */ c = create_mul_imm_cand (gs, rhs1, rhs2, speed); diff -Nrcpad gcc-7.4.0/gcc/gimple.c gcc-7.5.0/gcc/gimple.c *** gcc-7.4.0/gcc/gimple.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/gimple.c Wed Sep 4 08:06:24 2019 *************** gimple_assign_set_rhs_with_ops (gimple_s *** 1613,1619 **** gimple *new_stmt = gimple_alloc (gimple_code (stmt), new_rhs_ops + 1); memcpy (new_stmt, stmt, gimple_size (gimple_code (stmt))); gimple_init_singleton (new_stmt); ! gsi_replace (gsi, new_stmt, true); stmt = new_stmt; /* The LHS needs to be reset as this also changes the SSA name --- 1613,1619 ---- gimple *new_stmt = gimple_alloc (gimple_code (stmt), new_rhs_ops + 1); memcpy (new_stmt, stmt, gimple_size (gimple_code (stmt))); gimple_init_singleton (new_stmt); ! gsi_replace (gsi, new_stmt, false); stmt = new_stmt; /* The LHS needs to be reset as this also changes the SSA name diff -Nrcpad gcc-7.4.0/gcc/gimple.h gcc-7.5.0/gcc/gimple.h *** gcc-7.4.0/gcc/gimple.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/gimple.h Wed Jan 2 22:49:04 2019 *************** enum gimple_rhs_class *** 136,141 **** --- 136,142 ---- enum gf_mask { GF_ASM_INPUT = 1 << 0, GF_ASM_VOLATILE = 1 << 1, + GF_ASM_INLINE = 1 << 2, GF_CALL_FROM_THUNK = 1 << 0, GF_CALL_RETURN_SLOT_OPT = 1 << 1, GF_CALL_TAILCALL = 1 << 2, *************** gimple_asm_string (const gasm *asm_stmt) *** 3909,3915 **** } ! /* Return true ASM_STMT ASM_STMT is an asm statement marked volatile. */ static inline bool gimple_asm_volatile_p (const gasm *asm_stmt) --- 3910,3916 ---- } ! /* Return true if ASM_STMT is marked volatile. */ static inline bool gimple_asm_volatile_p (const gasm *asm_stmt) *************** gimple_asm_volatile_p (const gasm *asm_s *** 3918,3924 **** } ! /* If VOLATLE_P is true, mark asm statement ASM_STMT as volatile. */ static inline void gimple_asm_set_volatile (gasm *asm_stmt, bool volatile_p) --- 3919,3925 ---- } ! /* If VOLATILE_P is true, mark asm statement ASM_STMT as volatile. */ static inline void gimple_asm_set_volatile (gasm *asm_stmt, bool volatile_p) *************** gimple_asm_set_volatile (gasm *asm_stmt, *** 3930,3935 **** --- 3931,3957 ---- } + /* Return true if ASM_STMT is marked inline. */ + + static inline bool + gimple_asm_inline_p (const gasm *asm_stmt) + { + return (asm_stmt->subcode & GF_ASM_INLINE) != 0; + } + + + /* If INLINE_P is true, mark asm statement ASM_STMT as inline. */ + + static inline void + gimple_asm_set_inline (gasm *asm_stmt, bool inline_p) + { + if (inline_p) + asm_stmt->subcode |= GF_ASM_INLINE; + else + asm_stmt->subcode &= ~GF_ASM_INLINE; + } + + /* If INPUT_P is true, mark asm ASM_STMT as an ASM_INPUT. */ static inline void diff -Nrcpad gcc-7.4.0/gcc/gimplify.c gcc-7.5.0/gcc/gimplify.c *** gcc-7.4.0/gcc/gimplify.c Fri Oct 12 14:49:32 2018 --- gcc-7.5.0/gcc/gimplify.c Mon Sep 2 12:56:24 2019 *************** struct gimplify_omp_ctx *** 185,190 **** --- 185,191 ---- bool target_map_scalars_firstprivate; bool target_map_pointers_as_0len_arrays; bool target_firstprivatize_array_bases; + bool add_safelen1; }; static struct gimplify_ctx *gimplify_ctxp; *************** gimplify_bind_expr (tree *expr_p, gimple *** 1251,1262 **** || splay_tree_lookup (ctx->variables, (splay_tree_key) t) == NULL)) { if (ctx->region_type == ORT_SIMD && TREE_ADDRESSABLE (t) && !TREE_STATIC (t)) ! omp_add_variable (ctx, t, GOVD_PRIVATE | GOVD_SEEN); ! else ! omp_add_variable (ctx, t, GOVD_LOCAL | GOVD_SEEN); } DECL_SEEN_IN_BIND_EXPR_P (t) = 1; --- 1252,1268 ---- || splay_tree_lookup (ctx->variables, (splay_tree_key) t) == NULL)) { + int flag = GOVD_LOCAL; if (ctx->region_type == ORT_SIMD && TREE_ADDRESSABLE (t) && !TREE_STATIC (t)) ! { ! if (TREE_CODE (DECL_SIZE_UNIT (t)) != INTEGER_CST) ! ctx->add_safelen1 = true; ! else ! flag = GOVD_PRIVATE; ! } ! omp_add_variable (ctx, t, flag | GOVD_SEEN); } DECL_SEEN_IN_BIND_EXPR_P (t) = 1; *************** gimplify_compound_literal_expr (tree *ex *** 4498,4503 **** --- 4504,4510 ---- otherwise we'd generate a new temporary, and we can as well just use the decl we already have. */ else if (!TREE_ADDRESSABLE (decl) + && !TREE_THIS_VOLATILE (decl) && init && (fallback & fb_lvalue) == 0 && gimple_test_f (init)) *************** gimplify_init_constructor (tree *expr_p, *** 4770,4776 **** one field to assign, initialize the target from a temporary. */ if (TREE_THIS_VOLATILE (object) && !TREE_ADDRESSABLE (type) ! && num_nonzero_elements > 0 && vec_safe_length (elts) > 1) { tree temp = create_tmp_var (TYPE_MAIN_VARIANT (type)); --- 4777,4783 ---- one field to assign, initialize the target from a temporary. */ if (TREE_THIS_VOLATILE (object) && !TREE_ADDRESSABLE (type) ! && (num_nonzero_elements > 0 || !cleared) && vec_safe_length (elts) > 1) { tree temp = create_tmp_var (TYPE_MAIN_VARIANT (type)); *************** gimplify_asm_expr (tree *expr_p, gimple_ *** 5966,5971 **** --- 5973,5991 ---- is_inout = false; } + /* If we can't make copies, we can only accept memory. */ + if (TREE_ADDRESSABLE (TREE_TYPE (TREE_VALUE (link)))) + { + if (allows_mem) + allows_reg = 0; + else + { + error ("impossible constraint in %"); + error ("non-memory output %d must stay in memory", i); + return GS_ERROR; + } + } + if (!allows_reg && allows_mem) mark_addressable (TREE_VALUE (link)); *************** gimplify_asm_expr (tree *expr_p, gimple_ *** 6206,6211 **** --- 6226,6232 ---- gimple_asm_set_volatile (stmt, ASM_VOLATILE_P (expr) || noutputs == 0); gimple_asm_set_input (stmt, ASM_INPUT_P (expr)); + gimple_asm_set_inline (stmt, ASM_INLINE_P (expr)); gimplify_seq_add_stmt (pre_p, stmt); } *************** gimplify_adjust_omp_clauses (gimple_seq *** 8796,8801 **** --- 8817,8835 ---- omp_find_stores_op, &wi); } } + + if (ctx->add_safelen1) + { + /* If there are VLAs in the body of simd loop, prevent + vectorization. */ + gcc_assert (ctx->region_type == ORT_SIMD); + c = build_omp_clause (UNKNOWN_LOCATION, OMP_CLAUSE_SAFELEN); + OMP_CLAUSE_SAFELEN_EXPR (c) = integer_one_node; + OMP_CLAUSE_CHAIN (c) = *list_p; + *list_p = c; + list_p = &OMP_CLAUSE_CHAIN (c); + } + while ((c = *list_p) != NULL) { splay_tree_node n; *************** gimplify_omp_for (tree *expr_p, gimple_s *** 10102,10109 **** seq = &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c); else seq = &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c); gimplify_assign (decl, t, seq); ! } } } --- 10136,10152 ---- seq = &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c); else seq = &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c); + push_gimplify_context (); gimplify_assign (decl, t, seq); ! gimple *bind = NULL; ! if (gimplify_ctxp->temps) ! { ! bind = gimple_build_bind (NULL_TREE, *seq, NULL_TREE); ! *seq = NULL; ! gimplify_seq_add_stmt (seq, bind); ! } ! pop_gimplify_context (bind); ! } } } diff -Nrcpad gcc-7.4.0/gcc/go/ChangeLog gcc-7.5.0/gcc/go/ChangeLog *** gcc-7.4.0/gcc/go/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gcc/go/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/gcc/graphite-scop-detection.c gcc-7.5.0/gcc/graphite-scop-detection.c *** gcc-7.4.0/gcc/graphite-scop-detection.c Thu Mar 9 16:19:37 2017 --- gcc-7.5.0/gcc/graphite-scop-detection.c Thu Sep 5 12:11:52 2019 *************** build_alias_set (scop_p scop) *** 1864,1872 **** int i, j; int *all_vertices; FOR_EACH_VEC_ELT (scop->drs, i, dr1) for (j = i+1; scop->drs.iterate (j, &dr2); j++) ! if (dr_may_alias_p (dr1->dr, dr2->dr, true)) { add_edge (g, i, j); add_edge (g, j, i); --- 1864,1876 ---- int i, j; int *all_vertices; + struct loop *nest + = find_common_loop (scop->scop_info->region.entry->dest->loop_father, + scop->scop_info->region.exit->src->loop_father); + FOR_EACH_VEC_ELT (scop->drs, i, dr1) for (j = i+1; scop->drs.iterate (j, &dr2); j++) ! if (dr_may_alias_p (dr1->dr, dr2->dr, nest)) { add_edge (g, i, j); add_edge (g, j, i); diff -Nrcpad gcc-7.4.0/gcc/input.c gcc-7.5.0/gcc/input.c *** gcc-7.4.0/gcc/input.c Mon Apr 3 22:30:56 2017 --- gcc-7.5.0/gcc/input.c Mon Mar 11 11:18:08 2019 *************** for_each_line_table_case (void (*testcas *** 3480,3485 **** --- 3480,3513 ---- ASSERT_EQ (num_cases_tested, 2 * 12); } + /* Verify that when presented with a consecutive pair of locations with + a very large line offset, we don't attempt to consolidate them into + a single ordinary linemap where the line offsets within the line map + would lead to overflow (PR lto/88147). */ + + static void + test_line_offset_overflow () + { + line_table_test ltt (line_table_case (5, 0)); + + linemap_add (line_table, LC_ENTER, false, "foo.c", 0); + linemap_line_start (line_table, 1, 100); + location_t loc_a = linemap_line_start (line_table, 2578, 255); + assert_loceq ("foo.c", 2578, 0, loc_a); + + const line_map_ordinary *ordmap_a = LINEMAPS_LAST_ORDINARY_MAP (line_table); + ASSERT_EQ (ordmap_a->m_column_and_range_bits, 13); + ASSERT_EQ (ordmap_a->m_range_bits, 5); + + location_t loc_b = linemap_line_start (line_table, 404198, 512); + assert_loceq ("foo.c", 404198, 0, loc_b); + + /* We should have started a new linemap, rather than attempting to store + a very large line offset. */ + const line_map_ordinary *ordmap_b = LINEMAPS_LAST_ORDINARY_MAP (line_table); + ASSERT_NE (ordmap_a, ordmap_b); + } + /* Run all of the selftests within this file. */ void *************** input_c_tests () *** 3518,3523 **** --- 3546,3553 ---- for_each_line_table_case (test_lexer_char_constants); test_reading_source_line (); + + test_line_offset_overflow (); } } // namespace selftest diff -Nrcpad gcc-7.4.0/gcc/internal-fn.c gcc-7.5.0/gcc/internal-fn.c *** gcc-7.4.0/gcc/internal-fn.c Fri Oct 13 17:26:28 2017 --- gcc-7.5.0/gcc/internal-fn.c Wed Sep 4 08:06:24 2019 *************** static void (*const internal_fn_expander *** 2770,2775 **** --- 2770,2825 ---- 0 }; + /* Return true if IFN is some form of load from memory. */ + + bool + internal_load_fn_p (internal_fn fn) + { + switch (fn) + { + case IFN_MASK_LOAD: + case IFN_LOAD_LANES: + return true; + + default: + return false; + } + } + + /* Return true if IFN is some form of store to memory. */ + + bool + internal_store_fn_p (internal_fn fn) + { + switch (fn) + { + case IFN_MASK_STORE: + case IFN_STORE_LANES: + return true; + + default: + return false; + } + } + + /* If FN takes a vector mask argument, return the index of that argument, + otherwise return -1. */ + + int + internal_fn_mask_index (internal_fn fn) + { + switch (fn) + { + case IFN_MASK_LOAD: + case IFN_MASK_STORE: + return 2; + + default: + return -1; + } + } + + /* Expand STMT as though it were a call to internal function FN. */ void diff -Nrcpad gcc-7.4.0/gcc/internal-fn.h gcc-7.5.0/gcc/internal-fn.h *** gcc-7.4.0/gcc/internal-fn.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/internal-fn.h Wed Sep 4 08:06:24 2019 *************** extern bool direct_internal_fn_supported *** 176,181 **** --- 176,185 ---- optimization_type); extern bool set_edom_supported_p (void); + extern bool internal_load_fn_p (internal_fn); + extern bool internal_store_fn_p (internal_fn); + extern int internal_fn_mask_index (internal_fn); + extern void expand_internal_call (gcall *); extern void expand_internal_call (internal_fn, gcall *); extern void expand_PHI (internal_fn, gcall *); diff -Nrcpad gcc-7.4.0/gcc/ipa-cp.c gcc-7.5.0/gcc/ipa-cp.c *** gcc-7.4.0/gcc/ipa-cp.c Thu May 17 12:23:34 2018 --- gcc-7.5.0/gcc/ipa-cp.c Thu Jun 27 11:26:52 2019 *************** build_toporder_info (struct ipa_topo_inf *** 810,816 **** topo->stack = XCNEWVEC (struct cgraph_node *, symtab->cgraph_count); gcc_checking_assert (topo->stack_top == 0); ! topo->nnodes = ipa_reduced_postorder (topo->order, true, true, NULL); } /* Free information about strongly connected components and the arrays in --- 810,816 ---- topo->stack = XCNEWVEC (struct cgraph_node *, symtab->cgraph_count); gcc_checking_assert (topo->stack_top == 0); ! topo->nnodes = ipa_reduced_postorder (topo->order, true, NULL); } /* Free information about strongly connected components and the arrays in *************** ipcp_bits_lattice::meet_with (ipcp_bits_ *** 1072,1078 **** if (TREE_CODE_CLASS (code) == tcc_binary) { tree type = TREE_TYPE (operand); - gcc_assert (INTEGRAL_TYPE_P (type)); widest_int o_value, o_mask; get_value_and_mask (operand, &o_value, &o_mask); --- 1072,1077 ---- *************** perform_estimation_of_a_value (cgraph_no *** 2819,2829 **** estimate_ipcp_clone_size_and_time (node, known_csts, known_contexts, known_aggs_ptrs, &size, &time, &hints); ! time_benefit = base_time - time ! + devirtualization_time_bonus (node, known_csts, known_contexts, ! known_aggs_ptrs) ! + hint_time_bonus (hints) ! + removable_params_cost + est_move_cost; gcc_checking_assert (size >=0); /* The inliner-heuristics based estimates may think that in certain --- 2818,2835 ---- estimate_ipcp_clone_size_and_time (node, known_csts, known_contexts, known_aggs_ptrs, &size, &time, &hints); ! ! /* Extern inline functions have no cloning local time benefits because they ! will be inlined anyway. The only reason to clone them is if it enables ! optimization in any of the functions they call. */ ! if (DECL_EXTERNAL (node->decl) && DECL_DECLARED_INLINE_P (node->decl)) ! time_benefit = 0; ! else ! time_benefit = base_time - time ! + devirtualization_time_bonus (node, known_csts, known_contexts, ! known_aggs_ptrs) ! + hint_time_bonus (hints) ! + removable_params_cost + est_move_cost; gcc_checking_assert (size >=0); /* The inliner-heuristics based estimates may think that in certain diff -Nrcpad gcc-7.4.0/gcc/ipa-icf-gimple.c gcc-7.5.0/gcc/ipa-icf-gimple.c *** gcc-7.4.0/gcc/ipa-icf-gimple.c Fri Sep 15 08:19:15 2017 --- gcc-7.5.0/gcc/ipa-icf-gimple.c Wed Jan 2 22:49:04 2019 *************** func_checker::compare_gimple_asm (const *** 994,999 **** --- 994,1002 ---- if (gimple_asm_input_p (g1) != gimple_asm_input_p (g2)) return false; + if (gimple_asm_inline_p (g1) != gimple_asm_inline_p (g2)) + return false; + if (gimple_asm_ninputs (g1) != gimple_asm_ninputs (g2)) return false; diff -Nrcpad gcc-7.4.0/gcc/ipa-inline.c gcc-7.5.0/gcc/ipa-inline.c *** gcc-7.4.0/gcc/ipa-inline.c Sat Mar 3 13:34:07 2018 --- gcc-7.5.0/gcc/ipa-inline.c Fri Feb 15 10:58:49 2019 *************** inline_small_functions (void) *** 1745,1751 **** metrics. */ max_count = 0; ! ipa_reduced_postorder (order, true, true, NULL); free (order); FOR_EACH_DEFINED_FUNCTION (node) --- 1745,1751 ---- metrics. */ max_count = 0; ! ipa_reduced_postorder (order, true, NULL); free (order); FOR_EACH_DEFINED_FUNCTION (node) diff -Nrcpad gcc-7.4.0/gcc/ipa-prop.c gcc-7.5.0/gcc/ipa-prop.c *** gcc-7.4.0/gcc/ipa-prop.c Sat Mar 3 13:39:18 2018 --- gcc-7.5.0/gcc/ipa-prop.c Wed Jan 16 15:41:07 2019 *************** determine_locally_known_aggregate_parts *** 1577,1583 **** if (TREE_CODE (arg) == SSA_NAME) { tree type_size; ! if (!tree_fits_uhwi_p (TYPE_SIZE (TREE_TYPE (arg_type)))) return; check_ref = true; arg_base = arg; --- 1577,1584 ---- if (TREE_CODE (arg) == SSA_NAME) { tree type_size; ! if (!tree_fits_uhwi_p (TYPE_SIZE (TREE_TYPE (arg_type))) ! || !POINTER_TYPE_P (TREE_TYPE (arg))) return; check_ref = true; arg_base = arg; diff -Nrcpad gcc-7.4.0/gcc/ipa-pure-const.c gcc-7.5.0/gcc/ipa-pure-const.c *** gcc-7.4.0/gcc/ipa-pure-const.c Mon Mar 13 15:30:17 2017 --- gcc-7.5.0/gcc/ipa-pure-const.c Fri Feb 15 10:58:49 2019 *************** propagate_pure_const (void) *** 1233,1239 **** bool remove_p = false; bool has_cdtor; ! order_pos = ipa_reduced_postorder (order, true, false, ignore_edge_for_pure_const); if (dump_file) { --- 1233,1239 ---- bool remove_p = false; bool has_cdtor; ! order_pos = ipa_reduced_postorder (order, true, ignore_edge_for_pure_const); if (dump_file) { *************** propagate_nothrow (void) *** 1566,1572 **** int i; struct ipa_dfs_info * w_info; ! order_pos = ipa_reduced_postorder (order, true, false, ignore_edge_for_nothrow); if (dump_file) { --- 1566,1572 ---- int i; struct ipa_dfs_info * w_info; ! order_pos = ipa_reduced_postorder (order, true, ignore_edge_for_nothrow); if (dump_file) { diff -Nrcpad gcc-7.4.0/gcc/ipa-reference.c gcc-7.5.0/gcc/ipa-reference.c *** gcc-7.4.0/gcc/ipa-reference.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/ipa-reference.c Fri Feb 15 10:58:49 2019 *************** propagate (void) *** 730,736 **** the global information. All the nodes within a cycle will have the same info so we collapse cycles first. Then we can do the propagation in one pass from the leaves to the roots. */ ! order_pos = ipa_reduced_postorder (order, true, true, ignore_edge_p); if (dump_file) ipa_print_order (dump_file, "reduced", order, order_pos); --- 730,736 ---- the global information. All the nodes within a cycle will have the same info so we collapse cycles first. Then we can do the propagation in one pass from the leaves to the roots. */ ! order_pos = ipa_reduced_postorder (order, true, ignore_edge_p); if (dump_file) ipa_print_order (dump_file, "reduced", order, order_pos); diff -Nrcpad gcc-7.4.0/gcc/ipa-utils.c gcc-7.5.0/gcc/ipa-utils.c *** gcc-7.4.0/gcc/ipa-utils.c Tue Mar 6 20:05:36 2018 --- gcc-7.5.0/gcc/ipa-utils.c Fri Feb 15 10:58:49 2019 *************** struct searchc_env { *** 63,69 **** int order_pos; splay_tree nodes_marked_new; bool reduce; - bool allow_overwritable; int count; }; --- 63,68 ---- *************** searchc (struct searchc_env* env, struct *** 105,111 **** if (w->aux && (avail > AVAIL_INTERPOSABLE ! || (env->allow_overwritable && avail == AVAIL_INTERPOSABLE))) { w_info = (struct ipa_dfs_info *) w->aux; if (w_info->new_node) --- 104,110 ---- if (w->aux && (avail > AVAIL_INTERPOSABLE ! || avail == AVAIL_INTERPOSABLE)) { w_info = (struct ipa_dfs_info *) w->aux; if (w_info->new_node) *************** searchc (struct searchc_env* env, struct *** 162,168 **** int ipa_reduced_postorder (struct cgraph_node **order, ! bool reduce, bool allow_overwritable, bool (*ignore_edge) (struct cgraph_edge *)) { struct cgraph_node *node; --- 161,167 ---- int ipa_reduced_postorder (struct cgraph_node **order, ! bool reduce, bool (*ignore_edge) (struct cgraph_edge *)) { struct cgraph_node *node; *************** ipa_reduced_postorder (struct cgraph_nod *** 175,189 **** env.nodes_marked_new = splay_tree_new (splay_tree_compare_ints, 0, 0); env.count = 1; env.reduce = reduce; - env.allow_overwritable = allow_overwritable; FOR_EACH_DEFINED_FUNCTION (node) { enum availability avail = node->get_availability (); if (avail > AVAIL_INTERPOSABLE ! || (allow_overwritable ! && (avail == AVAIL_INTERPOSABLE))) { /* Reuse the info if it is already there. */ struct ipa_dfs_info *info = (struct ipa_dfs_info *) node->aux; --- 174,186 ---- env.nodes_marked_new = splay_tree_new (splay_tree_compare_ints, 0, 0); env.count = 1; env.reduce = reduce; FOR_EACH_DEFINED_FUNCTION (node) { enum availability avail = node->get_availability (); if (avail > AVAIL_INTERPOSABLE ! || avail == AVAIL_INTERPOSABLE) { /* Reuse the info if it is already there. */ struct ipa_dfs_info *info = (struct ipa_dfs_info *) node->aux; diff -Nrcpad gcc-7.4.0/gcc/ipa-utils.h gcc-7.5.0/gcc/ipa-utils.h *** gcc-7.4.0/gcc/ipa-utils.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/ipa-utils.h Fri Feb 15 10:58:49 2019 *************** struct ipa_dfs_info { *** 36,42 **** /* In ipa-utils.c */ void ipa_print_order (FILE*, const char *, struct cgraph_node**, int); ! int ipa_reduced_postorder (struct cgraph_node **, bool, bool, bool (*ignore_edge) (struct cgraph_edge *)); void ipa_free_postorder_info (void); vec ipa_get_nodes_in_cycle (struct cgraph_node *); --- 36,42 ---- /* In ipa-utils.c */ void ipa_print_order (FILE*, const char *, struct cgraph_node**, int); ! int ipa_reduced_postorder (struct cgraph_node **, bool, bool (*ignore_edge) (struct cgraph_edge *)); void ipa_free_postorder_info (void); vec ipa_get_nodes_in_cycle (struct cgraph_node *); diff -Nrcpad gcc-7.4.0/gcc/ira.c gcc-7.5.0/gcc/ira.c *** gcc-7.4.0/gcc/ira.c Wed Oct 18 21:13:16 2017 --- gcc-7.5.0/gcc/ira.c Fri Sep 20 09:23:50 2019 *************** ira (FILE *f) *** 5160,5165 **** --- 5160,5167 ---- int ira_max_point_before_emit; bool saved_flag_caller_saves = flag_caller_saves; enum ira_region saved_flag_ira_region = flag_ira_region; + unsigned int i; + int num_used_regs = 0; clear_bb_flags (); *************** ira (FILE *f) *** 5175,5186 **** ira_conflicts_p = optimize > 0; /* If there are too many pseudos and/or basic blocks (e.g. 10K pseudos and 10K blocks or 100K pseudos and 1K blocks), we will use simplified and faster algorithms in LRA. */ lra_simple_p = (ira_use_lra_p ! && max_reg_num () >= (1 << 26) / last_basic_block_for_fn (cfun)); if (lra_simple_p) { /* It permits to skip live range splitting in LRA. */ --- 5177,5193 ---- ira_conflicts_p = optimize > 0; + /* Determine the number of pseudos actually requiring coloring. */ + for (i = FIRST_PSEUDO_REGISTER; i < DF_REG_SIZE (df); i++) + num_used_regs += !!(DF_REG_USE_COUNT (i) + DF_REG_DEF_COUNT (i)); + /* If there are too many pseudos and/or basic blocks (e.g. 10K pseudos and 10K blocks or 100K pseudos and 1K blocks), we will use simplified and faster algorithms in LRA. */ lra_simple_p = (ira_use_lra_p ! && num_used_regs >= (1 << 26) / last_basic_block_for_fn (cfun)); ! if (lra_simple_p) { /* It permits to skip live range splitting in LRA. */ diff -Nrcpad gcc-7.4.0/gcc/jit/ChangeLog gcc-7.5.0/gcc/jit/ChangeLog *** gcc-7.4.0/gcc/jit/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gcc/jit/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/gcc/loop-unroll.c gcc-7.5.0/gcc/loop-unroll.c *** gcc-7.4.0/gcc/loop-unroll.c Tue Mar 6 20:06:10 2018 --- gcc-7.5.0/gcc/loop-unroll.c Fri Aug 30 12:27:50 2019 *************** unroll_loop_constant_iterations (struct *** 630,636 **** if (loop->any_likely_upper_bound) loop->nb_iterations_likely_upper_bound = wi::udiv_trunc (loop->nb_iterations_likely_upper_bound, max_unroll + 1); ! desc->niter_expr = GEN_INT (desc->niter); /* Remove the edges. */ FOR_EACH_VEC_ELT (remove_edges, i, e) --- 630,636 ---- if (loop->any_likely_upper_bound) loop->nb_iterations_likely_upper_bound = wi::udiv_trunc (loop->nb_iterations_likely_upper_bound, max_unroll + 1); ! desc->niter_expr = gen_int_mode (desc->niter, desc->mode); /* Remove the edges. */ FOR_EACH_VEC_ELT (remove_edges, i, e) *************** unroll_loop_runtime_iterations (struct l *** 996,1002 **** preheader->frequency += iter_freq; preheader->count += iter_count; single_succ_edge (preheader)->count = preheader->count; ! branch_code = compare_and_jump_seq (copy_rtx (niter), GEN_INT (j), EQ, block_label (preheader), p, NULL); --- 996,1003 ---- preheader->frequency += iter_freq; preheader->count += iter_count; single_succ_edge (preheader)->count = preheader->count; ! branch_code = compare_and_jump_seq (copy_rtx (niter), ! gen_int_mode (j, desc->mode), EQ, block_label (preheader), p, NULL); diff -Nrcpad gcc-7.4.0/gcc/lra-constraints.c gcc-7.5.0/gcc/lra-constraints.c *** gcc-7.4.0/gcc/lra-constraints.c Tue Mar 6 15:54:30 2018 --- gcc-7.5.0/gcc/lra-constraints.c Thu Oct 17 19:52:55 2019 *************** process_alt_operands (int only_alternati *** 2294,2299 **** --- 2294,2301 ---- break; reg: + if (mode == BLKmode) + break; this_alternative = reg_class_subunion[this_alternative][cl]; IOR_HARD_REG_SET (this_alternative_set, reg_class_contents[cl]); *************** process_alt_operands (int only_alternati *** 2304,2311 **** IOR_HARD_REG_SET (this_costly_alternative_set, reg_class_contents[cl]); } - if (mode == BLKmode) - break; winreg = true; if (REG_P (op)) { --- 2306,2311 ---- *************** invariant_p (const_rtx x) *** 5657,5662 **** --- 5657,5665 ---- enum rtx_code code; int i, j; + if (side_effects_p (x)) + return false; + code = GET_CODE (x); mode = GET_MODE (x); if (code == SUBREG) diff -Nrcpad gcc-7.4.0/gcc/lra.c gcc-7.5.0/gcc/lra.c *** gcc-7.4.0/gcc/lra.c Tue Mar 6 15:54:30 2018 --- gcc-7.5.0/gcc/lra.c Thu Jan 31 12:05:19 2019 *************** lra_rtx_hash (rtx x) *** 1670,1679 **** case SCRATCH: case CONST_DOUBLE: - case CONST_INT: case CONST_VECTOR: return val; default: break; } --- 1670,1681 ---- case SCRATCH: case CONST_DOUBLE: case CONST_VECTOR: return val; + case CONST_INT: + return val + UINTVAL (x); + default: break; } diff -Nrcpad gcc-7.4.0/gcc/lto/ChangeLog gcc-7.5.0/gcc/lto/ChangeLog *** gcc-7.4.0/gcc/lto/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gcc/lto/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/gcc/lto-streamer-in.c gcc-7.5.0/gcc/lto-streamer-in.c *** gcc-7.4.0/gcc/lto-streamer-in.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/lto-streamer-in.c Thu Sep 5 12:11:52 2019 *************** input_cfg (struct lto_input_block *ib, s *** 829,834 **** --- 829,835 ---- /* Read OMP SIMD related info. */ loop->safelen = streamer_read_hwi (ib); + loop->owned_clique = streamer_read_hwi (ib); loop->dont_vectorize = streamer_read_hwi (ib); loop->force_vectorize = streamer_read_hwi (ib); loop->simduid = stream_read_tree (ib, data_in); diff -Nrcpad gcc-7.4.0/gcc/lto-streamer-out.c gcc-7.5.0/gcc/lto-streamer-out.c *** gcc-7.4.0/gcc/lto-streamer-out.c Tue Mar 6 20:04:20 2018 --- gcc-7.5.0/gcc/lto-streamer-out.c Thu Sep 5 12:11:52 2019 *************** output_cfg (struct output_block *ob, str *** 1914,1919 **** --- 1914,1920 ---- /* Write OMP SIMD related info. */ streamer_write_hwi (ob, loop->safelen); + streamer_write_hwi (ob, loop->owned_clique); streamer_write_hwi (ob, loop->dont_vectorize); streamer_write_hwi (ob, loop->force_vectorize); stream_write_tree (ob, loop->simduid, true); diff -Nrcpad gcc-7.4.0/gcc/lto-streamer.h gcc-7.5.0/gcc/lto-streamer.h *** gcc-7.4.0/gcc/lto-streamer.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/lto-streamer.h Thu Sep 5 12:11:52 2019 *************** along with GCC; see the file COPYING3. *** 129,135 **** form followed by the data for the string. */ #define LTO_major_version 6 ! #define LTO_minor_version 0 typedef unsigned char lto_decl_flags_t; --- 129,135 ---- form followed by the data for the string. */ #define LTO_major_version 6 ! #define LTO_minor_version 2 typedef unsigned char lto_decl_flags_t; diff -Nrcpad gcc-7.4.0/gcc/lto-wrapper.c gcc-7.5.0/gcc/lto-wrapper.c *** gcc-7.4.0/gcc/lto-wrapper.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/lto-wrapper.c Wed Apr 3 08:47:19 2019 *************** cont: *** 1403,1409 **** struct pex_obj *pex; char jobs[32]; ! fprintf (mstream, "all:"); for (i = 0; i < nr; ++i) fprintf (mstream, " \\\n\t%s", output_names[i]); fprintf (mstream, "\n"); --- 1403,1411 ---- struct pex_obj *pex; char jobs[32]; ! fprintf (mstream, ! ".PHONY: all\n" ! "all:"); for (i = 0; i < nr; ++i) fprintf (mstream, " \\\n\t%s", output_names[i]); fprintf (mstream, "\n"); diff -Nrcpad gcc-7.4.0/gcc/match.pd gcc-7.5.0/gcc/match.pd *** gcc-7.4.0/gcc/match.pd Fri Jun 22 21:18:32 2018 --- gcc-7.5.0/gcc/match.pd Fri Aug 30 16:44:17 2019 *************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) *** 1753,1758 **** --- 1753,1765 ---- && (TYPE_SIZE (TREE_TYPE (@0)) == TYPE_SIZE (TREE_TYPE (@1)))) (view_convert @1))) + /* Simplify a view-converted empty constructor. */ + (simplify + (view_convert CONSTRUCTOR@0) + (if (TREE_CODE (@0) != SSA_NAME + && CONSTRUCTOR_NELTS (@0) == 0) + { build_zero_cst (type); })) + /* Re-association barriers around constants and other re-association barriers can be removed. */ (simplify diff -Nrcpad gcc-7.4.0/gcc/objc/ChangeLog gcc-7.5.0/gcc/objc/ChangeLog *** gcc-7.4.0/gcc/objc/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gcc/objc/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,18 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-09-05 Iain Sandoe + + Backport from mainline. + 2019-05-18 Iain Sandoe + + * objc/objc-act.h (OCTI_INSTANCE_TYPE, OCTI_INSTANCETYPE_NAME): New. + (objc_global_trees): Add instance type and name. + (INSTANCE_TYPEDEF_NAME): New. + * objc/objc-act.c (synth_module_prologue): Build decls for + objc_instancetype_type and objc_instancetype_name. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/gcc/objc/objc-act.c gcc-7.5.0/gcc/objc/objc-act.c *** gcc-7.4.0/gcc/objc/objc-act.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/objc/objc-act.c Thu Sep 5 19:06:44 2019 *************** synth_module_prologue (void) *** 2944,2955 **** objc_class_reference = xref_tag (RECORD_TYPE, objc_class_id); objc_object_type = build_pointer_type (objc_object_reference); objc_class_type = build_pointer_type (objc_class_reference); objc_object_name = get_identifier (OBJECT_TYPEDEF_NAME); objc_class_name = get_identifier (CLASS_TYPEDEF_NAME); ! /* Declare the 'id' and 'Class' typedefs. */ type = lang_hooks.decls.pushdecl (build_decl (input_location, TYPE_DECL, objc_object_name, --- 2944,2957 ---- objc_class_reference = xref_tag (RECORD_TYPE, objc_class_id); objc_object_type = build_pointer_type (objc_object_reference); + objc_instancetype_type = build_pointer_type (objc_object_reference); objc_class_type = build_pointer_type (objc_class_reference); objc_object_name = get_identifier (OBJECT_TYPEDEF_NAME); + objc_instancetype_name = get_identifier (INSTANCE_TYPEDEF_NAME); objc_class_name = get_identifier (CLASS_TYPEDEF_NAME); ! /* Declare the 'id', 'instancetype' and 'Class' typedefs. */ type = lang_hooks.decls.pushdecl (build_decl (input_location, TYPE_DECL, objc_object_name, *************** synth_module_prologue (void) *** 2957,2962 **** --- 2959,2970 ---- TREE_NO_WARNING (type) = 1; type = lang_hooks.decls.pushdecl (build_decl (input_location, + TYPE_DECL, + objc_instancetype_name, + objc_instancetype_type)); + TREE_NO_WARNING (type) = 1; + + type = lang_hooks.decls.pushdecl (build_decl (input_location, TYPE_DECL, objc_class_name, objc_class_type)); diff -Nrcpad gcc-7.4.0/gcc/objc/objc-act.h gcc-7.5.0/gcc/objc/objc-act.h *** gcc-7.4.0/gcc/objc/objc-act.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/objc/objc-act.h Thu Sep 5 19:06:44 2019 *************** enum objc_tree_index *** 313,318 **** --- 313,319 ---- OCTI_SUPER_TYPE, OCTI_SEL_TYPE, OCTI_ID_TYPE, + OCTI_INSTANCE_TYPE, OCTI_CLS_TYPE, OCTI_NST_TYPE, OCTI_PROTO_TYPE, *************** enum objc_tree_index *** 368,373 **** --- 369,375 ---- OCTI_OBJ_ID, OCTI_CLS_ID, OCTI_ID_NAME, + OCTI_INSTANCETYPE_NAME, OCTI_CLASS_NAME, OCTI_CNST_STR_ID, OCTI_CNST_STR_TYPE, *************** extern GTY(()) tree objc_global_trees[OC *** 443,448 **** --- 445,451 ---- #define objc_super_type objc_global_trees[OCTI_SUPER_TYPE] #define objc_selector_type objc_global_trees[OCTI_SEL_TYPE] #define objc_object_type objc_global_trees[OCTI_ID_TYPE] + #define objc_instancetype_type objc_global_trees[OCTI_INSTANCE_TYPE] #define objc_class_type objc_global_trees[OCTI_CLS_TYPE] #define objc_instance_type objc_global_trees[OCTI_NST_TYPE] #define objc_protocol_type objc_global_trees[OCTI_PROTO_TYPE] *************** extern GTY(()) tree objc_global_trees[OC *** 570,576 **** #define objc_object_id objc_global_trees[OCTI_OBJ_ID] #define objc_class_id objc_global_trees[OCTI_CLS_ID] ! #define objc_object_name objc_global_trees[OCTI_ID_NAME] #define objc_class_name objc_global_trees[OCTI_CLASS_NAME] /* Constant string classes. */ --- 573,580 ---- #define objc_object_id objc_global_trees[OCTI_OBJ_ID] #define objc_class_id objc_global_trees[OCTI_CLS_ID] ! #define objc_object_name objc_global_trees[OCTI_ID_NAME] ! #define objc_instancetype_name objc_global_trees[OCTI_INSTANCETYPE_NAME] #define objc_class_name objc_global_trees[OCTI_CLASS_NAME] /* Constant string classes. */ *************** extern GTY(()) tree objc_global_trees[OC *** 608,613 **** --- 612,618 ---- /* Reserved tag definitions. */ #define OBJECT_TYPEDEF_NAME "id" + #define INSTANCE_TYPEDEF_NAME "instancetype" #define CLASS_TYPEDEF_NAME "Class" #define TAG_OBJECT "objc_object" diff -Nrcpad gcc-7.4.0/gcc/objcp/ChangeLog gcc-7.5.0/gcc/objcp/ChangeLog *** gcc-7.4.0/gcc/objcp/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gcc/objcp/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,16 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-08-30 Jakub Jelinek + + Backported from mainline + 2019-05-10 Jakub Jelinek + + PR pch/90326 + * config-lang.in (gtfiles): Remove c-family/c-lex.c, add + c-family/c-cppbuiltin.c. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/gcc/objcp/config-lang.in gcc-7.5.0/gcc/objcp/config-lang.in *** gcc-7.4.0/gcc/objcp/config-lang.in Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/objcp/config-lang.in Fri Aug 30 12:45:01 2019 *************** subdir_requires="objc cp" *** 45,50 **** # This list is separated in two parts: the first one is identical to # the C++ one, the second one contains our ObjC++ additions. ! gtfiles="\$(srcdir)/cp/rtti.c \$(srcdir)/cp/mangle.c \$(srcdir)/cp/name-lookup.h \$(srcdir)/cp/name-lookup.c \$(srcdir)/cp/cp-tree.h \$(srcdir)/cp/decl.h \$(srcdir)/cp/call.c \$(srcdir)/cp/decl.c \$(srcdir)/cp/decl2.c \$(srcdir)/cp/pt.c \$(srcdir)/cp/repo.c \$(srcdir)/cp/semantics.c \$(srcdir)/cp/tree.c \$(srcdir)/cp/parser.h \$(srcdir)/cp/parser.c \$(srcdir)/cp/method.c \$(srcdir)/cp/typeck2.c \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-common.h \$(srcdir)/c-family/c-objc.h \$(srcdir)/c-family/c-lex.c \$(srcdir)/c-family/c-pragma.h \$(srcdir)/c-family/c-pragma.c \$(srcdir)/cp/class.c \$(srcdir)/cp/cp-objcp-common.c \$(srcdir)/cp/except.c \$(srcdir)/cp/vtable-class-hierarchy.c \$(srcdir)/cp/constexpr.c \$(srcdir)/cp/cp-gimplify.c \ \$(srcdir)/objc/objc-map.h \$(srcdir)/objc/objc-act.h \$(srcdir)/objc/objc-act.c \$(srcdir)/objc/objc-runtime-shared-support.c \$(srcdir)/objc/objc-gnu-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-02.c \$(srcdir)/c-family/c-cppbuiltin.c" --- 45,50 ---- # This list is separated in two parts: the first one is identical to # the C++ one, the second one contains our ObjC++ additions. ! gtfiles="\$(srcdir)/cp/rtti.c \$(srcdir)/cp/mangle.c \$(srcdir)/cp/name-lookup.h \$(srcdir)/cp/name-lookup.c \$(srcdir)/cp/cp-tree.h \$(srcdir)/cp/decl.h \$(srcdir)/cp/call.c \$(srcdir)/cp/decl.c \$(srcdir)/cp/decl2.c \$(srcdir)/cp/pt.c \$(srcdir)/cp/repo.c \$(srcdir)/cp/semantics.c \$(srcdir)/cp/tree.c \$(srcdir)/cp/parser.h \$(srcdir)/cp/parser.c \$(srcdir)/cp/method.c \$(srcdir)/cp/typeck2.c \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-common.h \$(srcdir)/c-family/c-objc.h \$(srcdir)/c-family/c-pragma.h \$(srcdir)/c-family/c-pragma.c \$(srcdir)/cp/class.c \$(srcdir)/cp/cp-objcp-common.c \$(srcdir)/cp/except.c \$(srcdir)/cp/vtable-class-hierarchy.c \$(srcdir)/cp/constexpr.c \$(srcdir)/cp/cp-gimplify.c \ \$(srcdir)/objc/objc-map.h \$(srcdir)/objc/objc-act.h \$(srcdir)/objc/objc-act.c \$(srcdir)/objc/objc-runtime-shared-support.c \$(srcdir)/objc/objc-gnu-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-02.c \$(srcdir)/c-family/c-cppbuiltin.c" diff -Nrcpad gcc-7.4.0/gcc/omp-expand.c gcc-7.5.0/gcc/omp-expand.c *** gcc-7.4.0/gcc/omp-expand.c Tue May 1 13:21:19 2018 --- gcc-7.5.0/gcc/omp-expand.c Fri Aug 30 11:23:16 2019 *************** extract_omp_for_update_vars (struct omp_ *** 1960,1965 **** --- 1960,1970 ---- t = fold_build2 (fd->loops[i].cond_code, boolean_type_node, v, t); stmt = gimple_build_cond_empty (t); gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING); + if (walk_tree (gimple_cond_lhs_ptr (as_a (stmt)), + expand_omp_regimplify_p, NULL, NULL) + || walk_tree (gimple_cond_rhs_ptr (as_a (stmt)), + expand_omp_regimplify_p, NULL, NULL)) + gimple_regimplify_operands (stmt, &gsi); e = make_edge (bb, body_bb, EDGE_TRUE_VALUE); e->probability = REG_BR_PROB_BASE * 7 / 8; } *************** expand_omp_for_generic (struct omp_regio *** 3042,3061 **** if (fd->ordered && counts[fd->collapse - 1] == NULL_TREE) { if (fd->collapse > 1) ! t = fd->loop.v; else { ! t = fold_build2 (MINUS_EXPR, TREE_TYPE (fd->loops[0].v), ! fd->loops[0].v, fd->loops[0].n1); ! t = fold_convert (fd->iter_type, t); } tree aref = build4 (ARRAY_REF, fd->iter_type, counts[fd->ordered], size_zero_node, NULL_TREE, NULL_TREE); ! t = force_gimple_operand_gsi (&gsi, t, true, NULL_TREE, ! true, GSI_SAME_STMT); ! expand_omp_build_assign (&gsi, aref, t); } t = build2 (fd->loop.cond_code, boolean_type_node, --- 3047,3067 ---- if (fd->ordered && counts[fd->collapse - 1] == NULL_TREE) { + tree tem; if (fd->collapse > 1) ! tem = fd->loop.v; else { ! tem = fold_build2 (MINUS_EXPR, TREE_TYPE (fd->loops[0].v), ! fd->loops[0].v, fd->loops[0].n1); ! tem = fold_convert (fd->iter_type, tem); } tree aref = build4 (ARRAY_REF, fd->iter_type, counts[fd->ordered], size_zero_node, NULL_TREE, NULL_TREE); ! tem = force_gimple_operand_gsi (&gsi, tem, true, NULL_TREE, ! true, GSI_SAME_STMT); ! expand_omp_build_assign (&gsi, aref, tem); } t = build2 (fd->loop.cond_code, boolean_type_node, diff -Nrcpad gcc-7.4.0/gcc/omp-low.c gcc-7.5.0/gcc/omp-low.c *** gcc-7.4.0/gcc/omp-low.c Fri Oct 12 14:52:18 2018 --- gcc-7.5.0/gcc/omp-low.c Fri Aug 30 12:33:00 2019 *************** new_omp_context (gimple *stmt, omp_conte *** 853,858 **** --- 853,859 ---- ctx->cb.copy_decl = omp_copy_decl; ctx->cb.eh_lp_nr = 0; ctx->cb.transform_call_graph_edges = CB_CGE_MOVE; + ctx->cb.dont_remap_vla_if_no_change = true; ctx->depth = 1; } *************** check_omp_nesting_restrictions (gimple * *** 2888,2901 **** case GIMPLE_OMP_FOR: if (gimple_omp_for_kind (ctx->stmt) == GF_OMP_FOR_KIND_TASKLOOP) goto ordered_in_taskloop; ! if (omp_find_clause (gimple_omp_for_clauses (ctx->stmt), ! OMP_CLAUSE_ORDERED) == NULL) { error_at (gimple_location (stmt), "% region must be closely nested inside " "a loop region with an % clause"); return false; } return true; case GIMPLE_OMP_TARGET: if (gimple_omp_target_kind (ctx->stmt) --- 2889,2913 ---- case GIMPLE_OMP_FOR: if (gimple_omp_for_kind (ctx->stmt) == GF_OMP_FOR_KIND_TASKLOOP) goto ordered_in_taskloop; ! tree o; ! o = omp_find_clause (gimple_omp_for_clauses (ctx->stmt), ! OMP_CLAUSE_ORDERED); ! if (o == NULL) { error_at (gimple_location (stmt), "% region must be closely nested inside " "a loop region with an % clause"); return false; } + if (OMP_CLAUSE_ORDERED_EXPR (o) != NULL_TREE + && omp_find_clause (c, OMP_CLAUSE_DEPEND) == NULL_TREE) + { + error_at (gimple_location (stmt), + "% region without % clause may " + "not be closely nested inside a loop region with " + "an % clause with a parameter"); + return false; + } return true; case GIMPLE_OMP_TARGET: if (gimple_omp_target_kind (ctx->stmt) diff -Nrcpad gcc-7.4.0/gcc/omp-simd-clone.c gcc-7.5.0/gcc/omp-simd-clone.c *** gcc-7.4.0/gcc/omp-simd-clone.c Tue Feb 28 08:42:06 2017 --- gcc-7.5.0/gcc/omp-simd-clone.c Fri Aug 30 12:17:22 2019 *************** simd_clone_clauses_extract (struct cgrap *** 240,245 **** --- 240,249 ---- } case OMP_CLAUSE_ALIGNED: { + /* Ignore aligned (x) for declare simd, for the ABI we really + need an alignment specified. */ + if (OMP_CLAUSE_ALIGNED_ALIGNMENT (t) == NULL_TREE) + break; tree decl = OMP_CLAUSE_DECL (t); int argno = tree_to_uhwi (decl); clone_info->args[argno].alignment *************** ipa_simd_modify_stmt_ops (tree *tp, int *** 861,866 **** --- 865,882 ---- if (tp != orig_tp) { + if (gimple_code (info->stmt) == GIMPLE_PHI + && cand + && TREE_CODE (*orig_tp) == ADDR_EXPR + && TREE_CODE (TREE_OPERAND (*orig_tp, 0)) == PARM_DECL + && cand->alias_ptr_type) + { + gcc_assert (TREE_CODE (cand->alias_ptr_type) == SSA_NAME); + *orig_tp = cand->alias_ptr_type; + info->modified = true; + return NULL_TREE; + } + repl = build_fold_addr_expr (repl); gimple *stmt; if (is_gimple_debug (info->stmt)) *************** ipa_simd_modify_stmt_ops (tree *tp, int *** 877,883 **** stmt = gimple_build_assign (make_ssa_name (TREE_TYPE (repl)), repl); repl = gimple_assign_lhs (stmt); } ! gimple_stmt_iterator gsi = gsi_for_stmt (info->stmt); gsi_insert_before (&gsi, stmt, GSI_SAME_STMT); *orig_tp = repl; } --- 893,910 ---- stmt = gimple_build_assign (make_ssa_name (TREE_TYPE (repl)), repl); repl = gimple_assign_lhs (stmt); } ! gimple_stmt_iterator gsi; ! if (gimple_code (info->stmt) == GIMPLE_PHI) ! { ! gsi = gsi_after_labels (single_succ (ENTRY_BLOCK_PTR_FOR_FN (cfun))); ! /* Cache SSA_NAME for next time. */ ! if (cand ! && TREE_CODE (*orig_tp) == ADDR_EXPR ! && TREE_CODE (TREE_OPERAND (*orig_tp, 0)) == PARM_DECL) ! cand->alias_ptr_type = repl; ! } ! else ! gsi = gsi_for_stmt (info->stmt); gsi_insert_before (&gsi, stmt, GSI_SAME_STMT); *orig_tp = repl; } *************** ipa_simd_modify_function_body (struct cg *** 978,983 **** --- 1005,1035 ---- { gimple_stmt_iterator gsi; + for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi)) + { + gphi *phi = as_a (gsi_stmt (gsi)); + int i, n = gimple_phi_num_args (phi); + info.stmt = phi; + struct walk_stmt_info wi; + memset (&wi, 0, sizeof (wi)); + info.modified = false; + wi.info = &info; + for (i = 0; i < n; ++i) + { + int walk_subtrees = 1; + tree arg = gimple_phi_arg_def (phi, i); + tree op = arg; + ipa_simd_modify_stmt_ops (&op, &walk_subtrees, &wi); + if (op != arg) + { + SET_PHI_ARG_DEF (phi, i, op); + gcc_assert (TREE_CODE (op) == SSA_NAME); + if (gimple_phi_arg_edge (phi, i)->flags & EDGE_ABNORMAL) + SSA_NAME_OCCURS_IN_ABNORMAL_PHI (op) = 1; + } + } + } + gsi = gsi_start_bb (bb); while (!gsi_end_p (gsi)) { *************** ipa_simd_modify_function_body (struct cg *** 993,998 **** --- 1045,1052 ---- if (greturn *return_stmt = dyn_cast (stmt)) { tree retval = gimple_return_retval (return_stmt); + edge e = find_edge (bb, EXIT_BLOCK_PTR_FOR_FN (cfun)); + e->flags |= EDGE_FALLTHRU; if (!retval) { gsi_remove (&gsi, true); *************** simd_clone_adjust (struct cgraph_node *n *** 1133,1146 **** basic_block orig_exit = EDGE_PRED (EXIT_BLOCK_PTR_FOR_FN (cfun), 0)->src; incr_bb = create_empty_bb (orig_exit); add_bb_to_loop (incr_bb, body_bb->loop_father); ! /* The succ of orig_exit was EXIT_BLOCK_PTR_FOR_FN (cfun), with an empty ! flag. Set it now to be a FALLTHRU_EDGE. */ ! gcc_assert (EDGE_COUNT (orig_exit->succs) == 1); ! EDGE_SUCC (orig_exit, 0)->flags |= EDGE_FALLTHRU; ! for (unsigned i = 0; ! i < EDGE_COUNT (EXIT_BLOCK_PTR_FOR_FN (cfun)->preds); ++i) { ! edge e = EDGE_PRED (EXIT_BLOCK_PTR_FOR_FN (cfun), i); redirect_edge_succ (e, incr_bb); } } --- 1187,1195 ---- basic_block orig_exit = EDGE_PRED (EXIT_BLOCK_PTR_FOR_FN (cfun), 0)->src; incr_bb = create_empty_bb (orig_exit); add_bb_to_loop (incr_bb, body_bb->loop_father); ! while (EDGE_COUNT (EXIT_BLOCK_PTR_FOR_FN (cfun)->preds)) { ! edge e = EDGE_PRED (EXIT_BLOCK_PTR_FOR_FN (cfun), 0); redirect_edge_succ (e, incr_bb); } } diff -Nrcpad gcc-7.4.0/gcc/optabs.c gcc-7.5.0/gcc/optabs.c *** gcc-7.4.0/gcc/optabs.c Fri Jun 22 20:41:55 2018 --- gcc-7.5.0/gcc/optabs.c Fri Aug 30 11:50:35 2019 *************** prepare_cmp_insn (rtx x, rtx y, enum rtx *** 3811,3817 **** /* Must make sure the size fits the insn's mode. */ if ((CONST_INT_P (size) ! && INTVAL (size) >= (1 << GET_MODE_BITSIZE (cmp_mode))) || (GET_MODE_BITSIZE (GET_MODE (size)) > GET_MODE_BITSIZE (cmp_mode))) continue; --- 3811,3817 ---- /* Must make sure the size fits the insn's mode. */ if ((CONST_INT_P (size) ! && UINTVAL (size) > GET_MODE_MASK (cmp_mode)) || (GET_MODE_BITSIZE (GET_MODE (size)) > GET_MODE_BITSIZE (cmp_mode))) continue; *************** prepare_cmp_insn (rtx x, rtx y, enum rtx *** 3830,3836 **** goto fail; /* Otherwise call a library function. */ ! result = emit_block_comp_via_libcall (XEXP (x, 0), XEXP (y, 0), size); x = result; y = const0_rtx; --- 3830,3836 ---- goto fail; /* Otherwise call a library function. */ ! result = emit_block_comp_via_libcall (x, y, size); x = result; y = const0_rtx; diff -Nrcpad gcc-7.4.0/gcc/optc-save-gen.awk gcc-7.5.0/gcc/optc-save-gen.awk *** gcc-7.4.0/gcc/optc-save-gen.awk Sat Jan 7 19:53:13 2017 --- gcc-7.5.0/gcc/optc-save-gen.awk Fri Aug 30 12:01:02 2019 *************** print "void"; *** 84,90 **** print "cl_optimization_save (struct cl_optimization *ptr, struct gcc_options *opts)"; print "{"; ! n_opt_char = 3; n_opt_short = 0; n_opt_int = 0; n_opt_enum = 0; --- 84,90 ---- print "cl_optimization_save (struct cl_optimization *ptr, struct gcc_options *opts)"; print "{"; ! n_opt_char = 4; n_opt_short = 0; n_opt_int = 0; n_opt_enum = 0; *************** n_opt_other = 0; *** 92,100 **** --- 92,102 ---- var_opt_char[0] = "optimize"; var_opt_char[1] = "optimize_size"; var_opt_char[2] = "optimize_debug"; + var_opt_char[3] = "optimize_fast"; var_opt_range["optimize"] = "0, 255"; var_opt_range["optimize_size"] = "0, 1"; var_opt_range["optimize_debug"] = "0, 1"; + var_opt_range["optimize_fast"] = "0, 1"; # Sort by size to mimic how the structure is laid out to be friendlier to the # cache. *************** for (i = 0; i < n_target_val; i++) { *** 735,747 **** print "}"; ! n_opt_val = 3; var_opt_val[0] = "x_optimize" var_opt_val_type[0] = "char " var_opt_val[1] = "x_optimize_size" - var_opt_val[2] = "x_optimize_debug" var_opt_val_type[1] = "char " var_opt_val_type[2] = "char " for (i = 0; i < n_opts; i++) { if (flag_set_p("(Optimization|PerFunction)", flags[i])) { name = var_name(flags[i]) --- 737,751 ---- print "}"; ! n_opt_val = 4; var_opt_val[0] = "x_optimize" var_opt_val_type[0] = "char " var_opt_val[1] = "x_optimize_size" var_opt_val_type[1] = "char " + var_opt_val[2] = "x_optimize_debug" var_opt_val_type[2] = "char " + var_opt_val[3] = "x_optimize_fast" + var_opt_val_type[3] = "char " for (i = 0; i < n_opts; i++) { if (flag_set_p("(Optimization|PerFunction)", flags[i])) { name = var_name(flags[i]) diff -Nrcpad gcc-7.4.0/gcc/opth-gen.awk gcc-7.5.0/gcc/opth-gen.awk *** gcc-7.4.0/gcc/opth-gen.awk Sat Jan 7 19:53:13 2017 --- gcc-7.5.0/gcc/opth-gen.awk Fri Aug 30 12:01:02 2019 *************** print "/* Structure to save/restore opti *** 132,138 **** print "struct GTY(()) cl_optimization"; print "{"; ! n_opt_char = 3; n_opt_short = 0; n_opt_int = 0; n_opt_enum = 0; --- 132,138 ---- print "struct GTY(()) cl_optimization"; print "{"; ! n_opt_char = 4; n_opt_short = 0; n_opt_int = 0; n_opt_enum = 0; *************** n_opt_other = 0; *** 140,145 **** --- 140,146 ---- var_opt_char[0] = "unsigned char x_optimize"; var_opt_char[1] = "unsigned char x_optimize_size"; var_opt_char[2] = "unsigned char x_optimize_debug"; + var_opt_char[3] = "unsigned char x_optimize_fast"; for (i = 0; i < n_opts; i++) { if (flag_set_p("(Optimization|PerFunction)", flags[i])) { diff -Nrcpad gcc-7.4.0/gcc/opts-common.c gcc-7.5.0/gcc/opts-common.c *** gcc-7.4.0/gcc/opts-common.c Fri Sep 15 08:18:34 2017 --- gcc-7.5.0/gcc/opts-common.c Mon Jul 22 09:38:26 2019 *************** decode_cmdline_option (const char **argv *** 438,444 **** extra_args = 0; ! opt_index = find_opt (argv[0] + 1, lang_mask); i = 0; while (opt_index == OPT_SPECIAL_unknown && i < ARRAY_SIZE (option_map)) --- 438,445 ---- extra_args = 0; ! const char *opt_value = argv[0] + 1; ! opt_index = find_opt (opt_value, lang_mask); i = 0; while (opt_index == OPT_SPECIAL_unknown && i < ARRAY_SIZE (option_map)) *************** decode_cmdline_option (const char **argv *** 641,646 **** --- 642,664 ---- /* Check if this is a switch for a different front end. */ if (!option_ok_for_language (option, lang_mask)) errors |= CL_ERR_WRONG_LANG; + else if (strcmp (option->opt_text, "-Werror=") == 0 + && strchr (opt_value, ',') == NULL) + { + /* Verify that -Werror argument is a valid warning + for a language. */ + char *werror_arg = xstrdup (opt_value + 6); + werror_arg[0] = 'W'; + + size_t warning_index = find_opt (werror_arg, lang_mask); + if (warning_index != OPT_SPECIAL_unknown) + { + const struct cl_option *warning_option + = &cl_options[warning_index]; + if (!option_ok_for_language (warning_option, lang_mask)) + errors |= CL_ERR_WRONG_LANG; + } + } /* Convert the argument to lowercase if appropriate. */ if (arg && option->cl_tolower) diff -Nrcpad gcc-7.4.0/gcc/opts-global.c gcc-7.5.0/gcc/opts-global.c *** gcc-7.4.0/gcc/opts-global.c Fri Sep 15 08:18:34 2017 --- gcc-7.5.0/gcc/opts-global.c Mon Jul 22 09:38:26 2019 *************** complain_wrong_lang (const struct cl_dec *** 100,109 **** text, bad_lang); else if (lang_mask == CL_DRIVER) gcc_unreachable (); ! else /* Eventually this should become a hard error IMO. */ warning (0, "command line option %qs is valid for %s but not for %s", text, ok_langs, bad_lang); free (ok_langs); free (bad_lang); --- 100,113 ---- text, bad_lang); else if (lang_mask == CL_DRIVER) gcc_unreachable (); ! else if (ok_langs[0] != '\0') /* Eventually this should become a hard error IMO. */ warning (0, "command line option %qs is valid for %s but not for %s", text, ok_langs, bad_lang); + else + /* Happens for -Werror=warning_name. */ + warning (0, "%<-Werror=%> argument %qs is not valid for %s", + text, bad_lang); free (ok_langs); free (bad_lang); diff -Nrcpad gcc-7.4.0/gcc/opts.c gcc-7.5.0/gcc/opts.c *** gcc-7.4.0/gcc/opts.c Tue Mar 6 20:07:38 2018 --- gcc-7.5.0/gcc/opts.c Thu Jan 31 12:05:19 2019 *************** default_options_optimization (struct gcc *** 654,660 **** /* For -O1 only do loop invariant motion for very small loops. */ maybe_set_param_value (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP, ! opt2 ? default_param_value (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP) : 1000, opts->x_param_values, opts_set->x_param_values); /* At -Ofast, allow store motion to introduce potential race conditions. */ --- 654,669 ---- /* For -O1 only do loop invariant motion for very small loops. */ maybe_set_param_value (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP, ! opt2 ? default_param_value (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP) ! : default_param_value (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP) / 10, ! opts->x_param_values, opts_set->x_param_values); ! ! /* For -O1 reduce the maximum number of active local stores for RTL DSE ! since this can consume huge amounts of memory (PR89115). */ ! maybe_set_param_value ! (PARAM_MAX_DSE_ACTIVE_LOCAL_STORES, ! opt2 ? default_param_value (PARAM_MAX_DSE_ACTIVE_LOCAL_STORES) ! : default_param_value (PARAM_MAX_DSE_ACTIVE_LOCAL_STORES) / 10, opts->x_param_values, opts_set->x_param_values); /* At -Ofast, allow store motion to introduce potential race conditions. */ diff -Nrcpad gcc-7.4.0/gcc/po/ChangeLog gcc-7.5.0/gcc/po/ChangeLog *** gcc-7.4.0/gcc/po/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gcc/po/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/gcc/resource.c gcc-7.5.0/gcc/resource.c *** gcc-7.4.0/gcc/resource.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/resource.c Fri Jul 12 10:17:42 2019 *************** mark_target_live_regs (rtx_insn *insns, *** 966,974 **** --- 966,978 ---- { regset regs_live = DF_LR_IN (BASIC_BLOCK_FOR_FN (cfun, b)); rtx_insn *start_insn, *stop_insn; + df_ref def; /* Compute hard regs live at start of block. */ REG_SET_TO_HARD_REG_SET (current_live_regs, regs_live); + FOR_EACH_ARTIFICIAL_DEF (def, b) + if (DF_REF_FLAGS (def) & DF_REF_AT_TOP) + SET_HARD_REG_BIT (current_live_regs, DF_REF_REGNO (def)); /* Get starting and ending insn, handling the case where each might be a SEQUENCE. */ diff -Nrcpad gcc-7.4.0/gcc/rtl.h gcc-7.5.0/gcc/rtl.h *** gcc-7.4.0/gcc/rtl.h Tue Nov 20 09:04:12 2018 --- gcc-7.5.0/gcc/rtl.h Sun Jan 27 17:42:58 2019 *************** extern void init_lower_subreg (void); *** 3666,3671 **** --- 3666,3674 ---- /* In gcse.c */ extern bool can_copy_p (machine_mode); extern bool can_assign_to_reg_without_clobbers_p (rtx, machine_mode); + extern rtx_insn *prepare_copy_insn (rtx, rtx); + + /* In cprop.c */ extern rtx fis_get_condition (rtx_insn *); /* In ira.c */ diff -Nrcpad gcc-7.4.0/gcc/rtlanal.c gcc-7.5.0/gcc/rtlanal.c *** gcc-7.4.0/gcc/rtlanal.c Tue Nov 20 09:04:12 2018 --- gcc-7.5.0/gcc/rtlanal.c Wed Sep 11 10:44:06 2019 *************** get_initial_register_offset (int from, i *** 357,366 **** if (to == from) return 0; ! /* It is not safe to call INITIAL_ELIMINATION_OFFSET ! before the reload pass. We need to give at least ! an estimation for the resulting frame size. */ ! if (! reload_completed) { offset1 = crtl->outgoing_args_size + get_frame_size (); #if !STACK_GROWS_DOWNWARD --- 357,366 ---- if (to == from) return 0; ! /* It is not safe to call INITIAL_ELIMINATION_OFFSET before the epilogue ! is completed, but we need to give at least an estimate for the stack ! pointer based on the frame size. */ ! if (!epilogue_completed) { offset1 = crtl->outgoing_args_size + get_frame_size (); #if !STACK_GROWS_DOWNWARD *************** nonzero_bits1 (const_rtx x, machine_mode *** 4636,4642 **** || ((extend_op = load_extend_op (inner_mode)) == SIGN_EXTEND ? val_signbit_known_set_p (inner_mode, nonzero) : extend_op != ZERO_EXTEND) ! || (!MEM_P (SUBREG_REG (x)) && !REG_P (SUBREG_REG (x)))) && GET_MODE_PRECISION (GET_MODE (x)) > GET_MODE_PRECISION (inner_mode)) nonzero --- 4636,4642 ---- || ((extend_op = load_extend_op (inner_mode)) == SIGN_EXTEND ? val_signbit_known_set_p (inner_mode, nonzero) : extend_op != ZERO_EXTEND) ! || !MEM_P (SUBREG_REG (x))) && GET_MODE_PRECISION (GET_MODE (x)) > GET_MODE_PRECISION (inner_mode)) nonzero diff -Nrcpad gcc-7.4.0/gcc/store-motion.c gcc-7.5.0/gcc/store-motion.c *** gcc-7.4.0/gcc/store-motion.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/store-motion.c Sun Jan 27 17:42:58 2019 *************** replace_store_insn (rtx reg, rtx_insn *d *** 907,914 **** rtx_insn *insn; rtx mem, note, set; ! mem = smexpr->pattern; ! insn = gen_move_insn (reg, SET_SRC (single_set (del))); unsigned int i; rtx_insn *temp; --- 907,913 ---- rtx_insn *insn; rtx mem, note, set; ! insn = prepare_copy_insn (reg, SET_SRC (single_set (del))); unsigned int i; rtx_insn *temp; *************** replace_store_insn (rtx reg, rtx_insn *d *** 941,946 **** --- 940,946 ---- /* Now we must handle REG_EQUAL notes whose contents is equal to the mem; they are no longer accurate provided that they are reached by this definition, so drop them. */ + mem = smexpr->pattern; for (; insn != NEXT_INSN (BB_END (bb)); insn = NEXT_INSN (insn)) if (NONDEBUG_INSN_P (insn)) { diff -Nrcpad gcc-7.4.0/gcc/symtab.c gcc-7.5.0/gcc/symtab.c *** gcc-7.4.0/gcc/symtab.c Tue Mar 6 20:04:20 2018 --- gcc-7.5.0/gcc/symtab.c Fri Aug 30 12:46:13 2019 *************** symtab_node::set_section (symtab_node *n *** 1520,1526 **** void symtab_node::set_section (const char *section) { ! gcc_assert (!this->alias); call_for_symbol_and_aliases (symtab_node::set_section, const_cast(section), true); } --- 1520,1526 ---- void symtab_node::set_section (const char *section) { ! gcc_assert (!this->alias || !this->analyzed); call_for_symbol_and_aliases (symtab_node::set_section, const_cast(section), true); } diff -Nrcpad gcc-7.4.0/gcc/testsuite/ChangeLog gcc-7.5.0/gcc/testsuite/ChangeLog *** gcc-7.4.0/gcc/testsuite/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gcc/testsuite/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,2262 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-11-03 Iain Sandoe + + PR c++/79274 + * g++.dg/tls/pr77285-2.C: XFAIL test for Darwin. + + 2019-11-02 Iain Sandoe + + Backport from mainline + 2019-06-13 Iain Sandoe + + * gcc.dg/pr90760.c: Require alias support. + + 2019-11-01 Iain Sandoe + + Backport from mainline. + 2019-10-13 Iain Sandoe + + * gcc.target/i386/indirect-thunk-1.c: Allow 'l' or 'L' in + indirection label prefix, for Darwin. + * gcc.target/i386/indirect-thunk-2.c: Likewise. + * gcc.target/i386/indirect-thunk-3.c: Likewise. + * gcc.target/i386/indirect-thunk-4.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-1.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-2.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-3.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-4.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-5.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-6.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-1.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-2.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-3.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-4.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-1.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-2.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-3.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-4.c: Likewise. + * gcc.target/i386/pr32219-2.c: Likewise. + * gcc.target/i386/pr32219-3.c: Likewise. + * gcc.target/i386/pr32219-4.c: Likewise. + * gcc.target/i386/pr32219-7.c: Likewise. + * gcc.target/i386/pr32219-8.c: Likewise. + * gcc.target/i386/ret-thunk-14.c: Likewise. + * gcc.target/i386/ret-thunk-15.c: Likewise. + * gcc.target/i386/ret-thunk-9.c: Likewise. + + 2019-11-01 Iain Sandoe + + Backport from mainline. + 2019-08-13 Iain Sandoe + + * obj-c++.dg/stubify-1.mm: Rename symbol stub option. + * obj-c++.dg/stubify-2.mm: Likewise. + * objc.dg/stubify-1.m: Likewise. + * objc.dg/stubify-2.m: Likewise. + + 2019-11-01 Iain Sandoe + + Backport from mainline. + 2019-05-15 Iain Sandoe + + * lib/target-supports.exp + (check_effective_target_powerpc_p8vector_ok): No support for Darwin. + (check_effective_target_powerpc_p9vector_ok): Likewise. + (check_effective_target_powerpc_float128_sw_ok): Likewise. + (check_effective_target_powerpc_float128_hw_ok): Likewise. + (check_effective_target_powerpc_vsx_ok): Likewise. + * gcc.target/powerpc/bfp/bfp.exp: Don't try to run this for Darwin. + * gcc.target/powerpc/dfp/dfp.exp: Likewise. + + 2019-10-29 Iain Sandoe + + * gcc.c-torture/compile/pr72802.c: Skip for Darwin. + + 2019-10-29 Paul Thomas + + Backport from mainline + PR fortran/86248 + * gfortran.dg/char_result_19.f90 : New test. + * gfortran.dg/char_result_mod_19.f90 : Module for the new test. + + 2019-10-26 Iain Sandoe + + * config/rs6000/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN):Guard + against out of range max skip or log values. + + 2019-10-25 Richard Earnshaw + + Backport from mainline + 2019-05-08 Mihail Ionescu + Richard Earnshaw + PR target/88167 + * gcc.target/arm/pr88167-1.c: New test. + * gcc.target/arm/pr88167-2.c: New test. + + 2019-10-24 Richard Biener + + Backport from mainline + 2019-10-17 Richard Biener + + PR debug/91887 + * g++.dg/debug/dwarf2/pr91887.C: New testcase. + + 2019-09-19 Richard Biener + + PR tree-optimization/91812 + * gcc.dg/torture/pr91812.c: New testcase. + + 2019-10-23 Eric Botcazou + + * gcc.c-torture/execute/20191023-1.c: New test. + + 2019-10-18 Steven G. Kargl + + PR fortran/69455 + * gfortran.dg/pr69455_1.f90: New test. + * gfortran.dg/pr69455_2.f90: Ditto. + + 2019-10-17 Bill Schmidt + + Backport from mainline + 2019-10-15 Bill Schmidt + + PR target/92093 + * gcc.target/powerpc/pr91275.c: Fix type and endian issues. + + 2019-10-07 Bill Schmidt + + Backport from mainline + 2019-10-01 Bill Schmidt + + PR target/91275 + * gcc.target/powerpc/pr91275.c: New. + + 2019-09-28 Iain Sandoe + + PR target/82920 + * gcc.target/i386/indirect-thunk-bnd-1.c: Adjust scan-asms for Darwin, + do not use -fno-pic on Darwin. + * gcc.target/i386/indirect-thunk-bnd-2.c: Likewise. + * gcc.target/i386/ret-thunk-25.c: Skip for Darwin, which has a + different ABI for returning this category of complex value. + + 2019-09-28 Iain Sandoe + + Backport from mainline. + 2019-05-14 Iain Sandoe + + PR target/82920 + * gcc.target/i386/pr52146.c: Require effective target x32. + * gcc.target/i386/pr52698.c: Likewise. + * gcc.target/i386/pr52857-1.c: Likewise. + * gcc.target/i386/pr52857-2.c: Likewise. + * gcc.target/i386/pr52876.c: Likewise. + * gcc.target/i386/pr53698.c: Likewise. + * gcc.target/i386/pr54157.c: Likewise. + * gcc.target/i386/pr55049-1.c: Likewise. + * gcc.target/i386/pr55093.c: Likewise. + * gcc.target/i386/pr55116-1.c: Likewise. + * gcc.target/i386/pr55116-2.c: Likewise. + * gcc.target/i386/pr55597.c: Likewise. + * gcc.target/i386/pr59929.c: Likewise. + * gcc.target/i386/pr66470.c: Likewise. + + 2019-09-28 Iain Sandoe + + Backport from mainline. + 2019-05-12 Iain Sandoe + Dominique d'Humieres + + PR target/82920 + * gcc.target/i386/indirect-thunk-1.c: Adjust scan-asms for Darwin, + do not use -fno-pic on Darwin. + * gcc.target/i386/indirect-thunk-2.c: Likewise. + * gcc.target/i386/indirect-thunk-3.c: Likewise. + * gcc.target/i386/indirect-thunk-4.c: Likewise. + * gcc.target/i386/indirect-thunk-7.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-1.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-2.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-3.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-4.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-5.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-6.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-7.c: Likewise. + * gcc.target/i386/indirect-thunk-attr-8.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-1.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-2.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-3.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-4.c: Likewise. + * gcc.target/i386/indirect-thunk-extern-7.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-1.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-2.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-3.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-4.c: Likewise. + * gcc.target/i386/indirect-thunk-inline-7.c: Likewise. + * gcc.target/i386/indirect-thunk-register-1.c: Likewise. + * gcc.target/i386/indirect-thunk-register-2.c: Likewise. + * gcc.target/i386/indirect-thunk-register-3.c: Likewise. + * gcc.target/i386/indirect-thunk-register-4.c: Likewise. + * gcc.target/i386/ret-thunk-1.c: Likewise. + * gcc.target/i386/ret-thunk-10.c: Likewise. + * gcc.target/i386/ret-thunk-11.c: Likewise. + * gcc.target/i386/ret-thunk-12.c: Likewise. + * gcc.target/i386/ret-thunk-13.c: Likewise. + * gcc.target/i386/ret-thunk-14.c: Likewise. + * gcc.target/i386/ret-thunk-15.c: Likewise. + * gcc.target/i386/ret-thunk-16.c: Likewise. + * gcc.target/i386/ret-thunk-2.c: Likewise. + * gcc.target/i386/ret-thunk-22.c: Likewise. + * gcc.target/i386/ret-thunk-23.c: Likewise. + * gcc.target/i386/ret-thunk-24.c: Likewise. + * gcc.target/i386/ret-thunk-3.c: Likewise. + * gcc.target/i386/ret-thunk-4.c: Likewise. + * gcc.target/i386/ret-thunk-5.c: Likewise. + * gcc.target/i386/ret-thunk-6.c: Likewise. + * gcc.target/i386/ret-thunk-7.c: Likewise. + * gcc.target/i386/ret-thunk-8.c: Likewise. + * gcc.target/i386/ret-thunk-9.c: Likewise. + + 2019-09-17 Iain Sandoe + + Backport from mainline. + 2019-06-13 Iain Sandoe + + * g++.dg/pr71694.C: Use non-PIC codegen for Darwin m32. + + 2019-09-16 Iain Sandoe + + Backport from mainline. + 2019-06-24 Iain Sandoe + + * gcc.dg/cpp/isysroot-1.c: Use as the test header. + * gcc.dg/cpp/usr/include/stdio.h: Rename... + * gcc.dg/cpp/usr/include/example.h: ... to this. + + 2019-09-15 Thomas Koenig + + Backport from trunk + PR fortran/91557 + * gfortran.dg/warn_unused_dummy_argument_5.f90: New test. + + 2019-09-15 Iain Sandoe + + * obj-c++.dg/syntax-error-1.mm: Adjust line number in dg-error. + + 2019-09-15 Iain Sandoe + + Backport from mainline. + 2019-06-15 Iain Sandoe + + PR objc/90709 + * obj-c++.dg/proto-lossage-7.mm: Use proxy headers. + * obj-c++.dg/strings/const-cfstring-2.mm: Likewise. + * obj-c++.dg/strings/const-cfstring-5.mm: Likewise + * obj-c++.dg/strings/const-str-12.mm: Likewise. + * obj-c++.dg/syntax-error-1.mm: Likewise. + * obj-c++.dg/torture/strings/const-cfstring-1.mm: Likewise. + * obj-c++.dg/torture/strings/const-str-10.mm: Likewise. + * obj-c++.dg/torture/strings/const-str-11.mm: Likewise. + * obj-c++.dg/torture/strings/const-str-9.mm: Likewise. + * obj-c++.dg/cxx-ivars-3.mm: Skip on later Darwin, where the 10.4 API + in no longer supported, also on m64 where there's no meaning to it. + * obj-c++.dg/isa-field-1.mm: Suppress unwanted warning, add comment why. + * obj-c++.dg/objc-gc-3.mm: Skip for Darwin > 16, the API use is an error + there. + * obj-c++.dg/qual-types-1.mm: Prune a spurious l64 warning. + * obj-c++.dg/stubify-1.mm: Tidy up after better compiler warnings. + * obj-c++.dg/stubify-2.mm: Likewise. + * obj-c++.dg/try-catch-1.mm: Likewise. + * obj-c++.dg/try-catch-3.mm: Likewise. + + Backport from mainline. + 2019-06-15 Iain Sandoe + + PR objc/90709 + * objc.dg/encode-7-next-64bit.m: Use proxy headers. + * objc.dg/image-info.m: Likewise. + * objc.dg/method-6.m: Likewise. + * objc.dg/no-extra-load.m: Likewise. + * objc.dg/objc-foreach-4.m: Likewise. + * objc.dg/objc-foreach-5.m: Likewise. + * objc.dg/proto-lossage-7.m: Likewise. + * objc.dg/strings/const-cfstring-2.m: Likewise. + * objc.dg/strings/const-cfstring-5.m: Likewise. + * objc.dg/strings/const-str-12b.m: Likewise. + * objc.dg/symtab-1.m: Likewise. + * objc.dg/torture/strings/const-cfstring-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/zero-link-3.m: Likewise. + * objc.dg/isa-field-1.m: Suppress unwanted warning, add comment why. + * objc.dg/headers.m: XFAIL for Darwin14-19. + * objc.dg/objc-gc-4.m: Skip for Darwin > 16, the API use is an error + there. + + Backport from mainline. + 2019-06-15 Iain Sandoe + + PR objc/90709 + * objc-obj-c++-shared/CF-CFString.h: New. + * objc-obj-c++-shared/F-NSArray.h: New. + * objc-obj-c++-shared/F-NSAutoreleasePool.h: New. + * objc-obj-c++-shared/F-NSObject.h: New. + * objc-obj-c++-shared/F-NSString.h: New. + * objc-obj-c++-shared/F-NSValue.h: New. + * objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h: New. + * objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h: New. + * objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h: New. + * objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h: New. + * objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h: New. + * objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h: New. + * objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h: New. + * objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h: New. + * objc-obj-c++-shared/GNUStep/Foundation/NSArray.h: New. + * objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h: New. + * objc-obj-c++-shared/GNUStep/Foundation/NSDate.h: New. + * objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h: New. + * objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h: New. + * objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h: New. + * objc-obj-c++-shared/GNUStep/Foundation/NSObject.h: New. + * objc-obj-c++-shared/GNUStep/Foundation/NSRange.h: New. + * objc-obj-c++-shared/GNUStep/Foundation/NSString.h: New. + * objc-obj-c++-shared/GNUStep/Foundation/NSValue.h: New. + * objc-obj-c++-shared/GNUStep/Foundation/NSZone.h: New. + * objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h: New. + * objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h: New. + * objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h: New. + * objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h: New. + * objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h: New. + * objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h: New. + * objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h: + New. + * objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h: New. + * objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h: New. + * objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h: New. + + 2019-09-13 Iain Sandoe + + Backport from mainline. + 2019-06-13 Iain Sandoe + + * gcc.dg/darwin-minversion-1.c: Use compile rather than link/run. + * gcc.dg/darwin-minversion-2.c: Likewise. + + 2019-09-12 Iain Sandoe + + Backport from mainline. + 2019-05-27 Iain Sandoe + + * gcc.target/i386/pr22076.c: Adjust options to + match codegen expected by the scan-asms. + + 2019-09-12 Paul Thomas + + PR fortran/91686 + * gfortran.dg/pr91686.f90 : New test. + + 2019-09-11 Eric Botcazou + + * gcc.target/sparc/20161111-1.c: XFAIL redundant zero-extension test. + + 2019-09-10 Iain Sandoe + + Backport from mainline. + 2019-05-26 Iain Sandoe + + * gcc.target/i386/pr39013-1.c: Adjust scan-asms for PIE to + account for PIC code on Darwin. + * gcc.target/i386/pr39013-2.c: Likewise. + * gcc.target/i386/pr64317.c: Likewise. + + 2019-09-10 Iain Sandoe + + Backport from mainline. + 2019-05-25 Iain Sandoe + + * gcc.target/i386/pr59874-3.c: Use the spelling of popcnt + expected for Darwin. + + 2019-09-09 Iain Sandoe + + Backport from mainline. + 2019-07-25 Iain Sandoe + + PR gcov-profile/91087 + * g++.dg/gcov/pr16855.C: Xfail the count lines for the DTORs and the + "final" line for the failure summaries. Adjust source layout so that + dejagnu xfail expressions work. + + 2019-09-09 Iain Sandoe + + Backport from mainline. + 2019-06-11 Iain Sandoe + + PR testsuite/65364 + * gcc.dg/uninit-19.c (fn1): Adjust target condition for Darwin. + (fn2): Likewise. + + 2019-09-09 Iain Sandoe + + Backport from mainline. + 2019-05-24 Iain Sandoe + + * gcc.target/i386/pr66819-3.c: Specifically, check that there is no + call to "bar". + * gcc.target/i386/pr66819-4.c: Likewise. + + 2019-09-09 Iain Sandoe + + Backport from mainline. + 2019-05-24 Iain Sandoe + + * gcc.target/i386/pr67985-2.c: Adjust label checks for + Darwin. + * gcc.target/i386/pr77881.c: Likewise. + + 2019-09-09 Iain Sandoe + + Backport from mainline. + 2019-05-24 Iain Sandoe + + * gcc.target/i386/pr70738-7.c: Likewise. + * gcc.target/i386/pr24414.c: Likewise. + + 2019-09-09 Jakub Jelinek + + PR target/87853 + * gcc.target/i386/pr87853.c: New test. + + PR target/91704 + * gcc.target/i386/pr91704.c: New test. + + 2019-09-08 Iain Sandoe + + Backport from mainline. + 2019-06-01 Iain Sandoe + + PR target/90698 + * gcc.target/i386/pr49866.c: XFAIL for Darwin. + * gcc.target/i386/pr63538.c: Likewise. + * gcc.target/i386/pr61599-1.c: Skip for Darwin. + + 2019-09-08 Iain Sandoe + + Backport from mainline. + 2019-05-23 Iain Sandoe + + PR rtl-optimisation/64895 + * gcc.target/i386/fuse-caller-save-rec.c: Remove XFAILs. + * gcc.target/i386/fuse-caller-save.c: Likewise. + * gcc.target/i386/fuse-caller-save-xmm.c: Adjust tests for + PIC cases, remove XFAILs. + + 2019-09-06 Iain Sandoe + + Backport from mainline. + 2019-05-22 Iain Sandoe + + PR testsuite/27221 + * g++.dg/ext/alignof2.C: XFAIL for 32bit Darwin. + + 2019-09-06 Iain Sandoe + + Backport from mainline. + 2019-05-21 Iain Sandoe + + PR testsuite/67958 + * gcc.target/i386/pr32219-1.c: Adjust scan-asms for Darwin, comment + the differences. + * gcc.target/i386/pr32219-2.c: Likewise. + * gcc.target/i386/pr32219-3.c: Likewise. + * gcc.target/i386/pr32219-4.c: Likewise. + * gcc.target/i386/pr32219-5.c: Likewise. + * gcc.target/i386/pr32219-6.c: Likewise. + * gcc.target/i386/pr32219-7.c: Likewise. + * gcc.target/i386/pr32219-8.c: Likewise. + + 2019-09-06 Iain Sandoe + + Backport from mainline. + 2019-05-21 Iain Sandoe + + PR target/63891 + * gcc.dg/darwin-weakimport-3.c: Adjust options and explain + the reasons. + + 2019-09-06 Iain Sandoe + + Backport from mainline. + 2019-05-20 Iain Sandoe + + PR testsuite/58321 + * gcc.target/i386/memcpy-strategy-3.c: Adjust count for Darwin and + add a comment as to the reason for the difference. + * gcc.target/i386/memset-strategy-1.c: Likewise. + + 2019-09-05 Iain Sandoe + + Backport from mainline. + 2019-07-13 Iain Sandoe + + * gcc.target/powerpc/stabs-attrib-vect-darwin.c: Require stabs + support. + + 2019-09-05 Iain Sandoe + + Backport from mainline. + 2019-06-24 Iain Sandoe + + * gcc.target/powerpc/safe-indirect-jump-1.c: Skip for Darwin. + * gcc.target/powerpc/safe-indirect-jump-7.c: Likewise. + + 2019-09-05 Iain Sandoe + + Backport from mainline. + 2019-06-23 Iain Sandoe + + * gcc.target/powerpc/builtins-2.c: Require VSX hardware support. + + 2019-09-05 Iain Sandoe + + Backport from mainline. + 2019-06-23 Iain Sandoe + + * gcc.target/powerpc/pr80125.c (foo): Use an unsigned char + vector explicitly for the vec_perm. + + 2019-09-05 Iain Sandoe + + Backport from mainline. + 2019-06-23 Iain Sandoe + + * gcc.target/powerpc/pr71785.c: For Darwin, make test non-PIC, + expect the out-of-line GPR restore, and test specifically for + absence of branches to local labels. + + 2019-09-05 Iain Sandoe + + Backport from mainline. + 2019-06-22 Iain Sandoe + + * gcc.target/powerpc/pr64205.c: Require effective target dfp. + * gcc.target/powerpc/pr79909.c: Likewise. + + 2019-09-05 Iain Sandoe + + Backport from mainline. + 2019-06-22 Iain Sandoe + + * gcc.target/powerpc/darwin-bool-1.c: Suppress the pedantic + warning about _Bool. + + 2019-09-05 Iain Sandoe + + Backport from mainline. + 2019-05-10 Iain Sandoe + + * gcc.target/x86_64/abi/avx512f/abi-avx512f.exp: Darwin is + now tested. + * gcc.target/x86_64/abi/avx512f/asm-support-darwin.s: New. + + 2019-09-05 Iain Sandoe + + Backport from mainline. + 2019-05-18 Iain Sandoe + + * objc.dg/instancetype-0.m: New. + + 2019-09-05 Richard Biener + + Backport from mainline + 2019-05-06 Richard Biener + + PR tree-optimization/90328 + * gcc.dg/torture/pr90328.c: New testcase. + + 2019-02-22 Richard Biener + + PR middle-end/87609 + * gcc.dg/torture/restrict-7.c: New testcase. + + 2019-09-04 Iain Sandoe + + Backport from mainline. + 2019-06-13 Iain Sandoe + + * gcc.dg/darwin-minversion-link.c: New test. + + 2019-09-04 Richard Biener + + Backport from mainline + 2019-03-26 Bin Cheng + + PR tree-optimization/81740 + * gcc.dg/vect/pr81740-1.c: New testcase. + * gcc.dg/vect/pr81740-2.c: Likewise. + + 2019-09-04 Richard Biener + + Backport from mainline + 2018-11-23 Richard Biener + + PR tree-optimization/88149 + * g++.dg/torture/pr88149.C: New testcase. + + 2019-09-04 Richard Biener + + Backport from mainline + 2019-04-08 Richard Biener + + PR tree-optimization/90006 + * gcc.dg/vect/bb-slp-pr90006.c: New testcase. + + 2019-03-14 Richard Biener + + PR middle-end/89698 + * g++.dg/torture/pr89698.C: New testcase. + + 2019-01-18 Richard Biener + + PR tree-optimization/88903 + * gcc.dg/vect/pr88903-1.c: New testcase. + * gcc.dg/vect/pr88903-2.c: Likewise. + + 2018-12-11 Richard Biener + + PR middle-end/88448 + PR middle-end/88415 + * gcc.dg/gomp/pr88415.c: New testcase. + + 2018-11-15 Richard Biener + + PR tree-optimization/88030 + * gcc.dg/tsan/pr88030.c: New testcase. + + 2018-11-08 Richard Biener + + PR tree-optimization/87929 + * gcc.dg/pr87929.c: New testcase. + + 2019-09-02 Richard Biener + + + Backport from mainline + 2019-03-14 Richard Biener + + PR tree-optimization/89710 + * gcc.dg/torture/pr89710.c: New testcase. + + 2019-03-14 Richard Biener + + PR middle-end/89572 + * gcc.dg/torture/pr89572.c: New testcase. + + 2019-02-18 Richard Biener + + PR tree-optimization/89296 + * gcc.dg/uninit-pr89296.c: New testcase. + + 2019-01-31 Richard Biener + + PR tree-optimization/89135 + * gcc.dg/torture/pr89135.c: New testcase. + + 2019-09-02 Richard Biener + + Backport from mainline + 2019-07-19 Richard Biener + + PR tree-optimization/91200 + * gcc.dg/torture/pr91200.c: New testcase. + + 2019-07-15 Richard Biener + + PR middle-end/91162 + * gcc.dg/autopar/pr91162.c: New testcase. + + 2019-07-11 Richard Biener + + PR middle-end/91131 + * gcc.target/i386/pr91131.c: New testcase. + + 2019-07-10 Richard Biener + + PR tree-optimization/91126 + * gcc.dg/torture/pr91126.c: New testcase. + + 2019-07-10 Richard Biener + + PR tree-optimization/91126 + * gcc.dg/torture/pr91126.c: New testcase. + + 2019-04-29 Richard Biener + + PR tree-optimization/90278 + * gcc.dg/torture/pr90278.c: New testcase. + + 2019-04-11 Richard Biener + + PR tree-optimization/90020 + * gcc.dg/torture/pr90020.c: New testcase. + + 2019-09-02 Bin Cheng + + Backport from mainline + 2019-07-18 Bin Cheng + + PR tree-optimization/91137 + * gcc.c-torture/execute/pr91137.c: New test. + + 2019-08-31 Segher Boessenkool + + PR target/91481 + * gcc.target/powerpc/darn-3.c: Fix testcase. + + 2019-08-30 Richard Biener + + Backport from mainline + 2019-04-25 Richard Biener + + PR middle-end/90194 + * g++.dg/torture/pr90194.C: New testcase. + + 2019-04-15 Richard Biener + + PR tree-optimization/90071 + * gcc.dg/torture/pr90071.c: New testcase. + + 2019-03-13 Richard Biener + + PR middle-end/89677 + * gcc.dg/torture/pr89677.c: New testcase. + + 2019-08-30 Segher Boessenkool + + Backport from trunk + 2019-08-23 Segher Boessenkool + + PR target/91481 + * gcc.target/powerpc/darn-3.c: New testcase. + + 2019-08-30 Jakub Jelinek + + Backported from mainline + 2019-07-30 Jakub Jelinek + + PR target/91150 + * gcc.target/i386/avx512bw-pr91150.c: New test. + + 2019-07-04 Jakub Jelinek + + PR middle-end/78884 + * gcc.dg/gomp/pr78884.c: New test. + + PR rtl-optimization/90756 + * gcc.dg/pr90756.c: New test. + + 2019-06-25 Jakub Jelinek + + PR sanitizer/90954 + * c-c++-common/gomp/pr90954.c: New test. + + 2019-06-21 Jakub Jelinek + + PR c++/90950 + * g++.dg/gomp/lastprivate-1.C: New test. + + 2019-06-12 Jakub Jelinek + + PR c/90760 + * gcc.dg/pr90760.c: New test. + + 2019-05-10 Jakub Jelinek + + PR pch/90326 + * g++.dg/pch/pr90326.C: New test. + * g++.dg/pch/pr90326.Hs: New file. + + 2019-04-19 Jakub Jelinek + + PR middle-end/90139 + * gcc.c-torture/compile/pr90139.c: New test. + + 2019-04-24 Jakub Jelinek + + PR target/90187 + * g++.dg/opt/pr90187.C: New test. + + PR tree-optimization/90208 + * gcc.dg/tsan/pr90208-2.c: New test. + + 2019-04-19 Jakub Jelinek + + PR c++/90108 + * c-c++-common/pr90108.c: New test. + + 2019-04-16 Jakub Jelinek + + PR rtl-optimization/90082 + * gcc.dg/pr90082.c: New test. + + PR tree-optimization/90090 + * g++.dg/opt/pr90090.C: New test. + + 2019-04-12 Jakub Jelinek + + PR c/89933 + * c-c++-common/pr89933.c: New test. + + 2019-04-09 Jakub Jelinek + + PR tree-optimization/89998 + * gcc.c-torture/compile/pr89998-1.c: New test. + * gcc.c-torture/compile/pr89998-2.c: New test. + + 2019-03-29 Jakub Jelinek + + PR sanitizer/89869 + * g++.dg/ubsan/vptr-14.C: New test. + + PR c/89872 + * gcc.dg/tree-ssa/pr89872.c: New test. + + 2019-03-28 Jakub Jelinek + + PR middle-end/89621 + * gfortran.dg/gomp/pr89621.f90: New test. + + 2019-03-26 Jakub Jelinek + + PR c++/89796 + * g++.dg/gomp/pr89796.C: New test. + * gcc.dg/gomp/pr89796.c: New test. + + 2019-03-25 Jakub Jelinek + + PR c++/60702 + * g++.dg/tls/thread_local11.C: Remove scan-tree-dump-times directives + for _ZTH* calls. + * g++.dg/tls/thread_local11a.C: New test. + + 2019-03-22 Jakub Jelinek + + PR c++/60702 + * g++.dg/tls/thread_local11.C: New test. + * g++.dg/tls/thread_local11.h: New test. + * g++.dg/tls/thread_local12a.C: New test. + * g++.dg/tls/thread_local12b.C: New test. + * g++.dg/tls/thread_local12c.C: New test. + * g++.dg/tls/thread_local12d.C: New test. + * g++.dg/tls/thread_local12e.C: New test. + * g++.dg/tls/thread_local12f.C: New test. + * g++.dg/tls/thread_local12g.C: New test. + * g++.dg/tls/thread_local12h.C: New test. + * g++.dg/tls/thread_local12i.C: New test. + * g++.dg/tls/thread_local12j.C: New test. + * g++.dg/tls/thread_local12k.C: New test. + * g++.dg/tls/thread_local12l.C: New test. + + 2019-03-21 Jakub Jelinek + + PR c++/89767 + * g++.dg/cpp1y/lambda-init18.C: New test. + * g++.dg/cpp1y/lambda-init19.C: New test. + * g++.dg/cpp1y/pr89767.C: New test. + + 2019-03-19 Jakub Jelinek + + PR target/89752 + * g++.dg/ext/asm15.C: Check for particular diagnostic wording. + * g++.dg/ext/asm16.C: Likewise. + * g++.dg/ext/asm17.C: New test. + + PR target/89726 + * gcc.target/i386/fpprec-1.c (x): Add 6 new constants. + (expect_round, expect_rint, expect_floor, expect_ceil, expect_trunc): + Add expected results for them. + + PR c/89734 + * gcc.dg/pr89734.c: New test. + + 2019-03-15 Jakub Jelinek + + PR debug/89704 + * gcc.dg/debug/pr89704.c: New test. + + 2019-03-14 Jakub Jelinek + + PR rtl-optimization/89679 + * gcc.dg/pr89679.c: New test. + + PR tree-optimization/89703 + * gcc.c-torture/compile/pr89703-1.c: New test. + * gcc.c-torture/compile/pr89703-2.c: New test. + + PR c++/89512 + * g++.dg/cpp1y/var-templ61.C: New test. + + 2019-03-13 Jakub Jelinek + + PR middle-end/88588 + * c-c++-common/gomp/pr88588.c: New test. + + 2019-03-12 Jakub Jelinek + + PR middle-end/89663 + * gcc.c-torture/compile/pr89663-1.c: New test. + * gcc.c-torture/compile/pr89663-2.c: New test. + + 2019-03-11 Jakub Jelinek + + PR fortran/89651 + * gfortran.dg/gomp/pr89651.f90: New test. + + 2019-03-09 Jakub Jelinek + + PR c/88568 + * g++.dg/other/pr88568.C: New test. + + 2019-03-08 Jakub Jelinek + + PR c++/82075 + * g++.dg/cpp1z/decomp49.C: New test. + + 2019-03-06 Jakub Jelinek + + PR c++/87148 + * g++.dg/ext/flexary34.C: New test. + + 2019-03-05 Jakub Jelinek + + PR middle-end/89590 + * gcc.dg/pr89590.c: New test. + + 2019-02-28 Jakub Jelinek + + PR c/89521 + * gcc.dg/pr89521-1.c: New test. + * gcc.dg/pr89521-2.c: New test. + + PR c/89520 + * gcc.dg/pr89520-1.c: New test. + * gcc.dg/pr89520-2.c: New test. + + 2019-02-20 Jakub Jelinek + + PR c++/89403 + * g++.dg/cpp0x/pr89403.C: New test. + + PR middle-end/89412 + * gcc.c-torture/compile/pr89412.c: New test. + + 2019-02-20 Jakub Jelinek + David Malcolm + + PR middle-end/89091 + * gcc.dg/torture/pr89091.c: New test. + + 2019-02-20 Jakub Jelinek + + PR middle-end/88074 + PR middle-end/89415 + * gcc.dg/pr88074-2.c: New test. + + 2019-02-19 Richard Biener + + PR middle-end/88074 + * gcc.dg/pr88074.c: New testcase. + + 2019-08-30 Jakub Jelinek + + Backported from mainline + 2019-02-19 Jakub Jelinek + + PR middle-end/89303 + * g++.dg/torture/pr89303.C: Move everything from std namespace to my + namespace. + + 2019-02-15 Richard Biener + Jakub Jelinek + + PR tree-optimization/89278 + * gcc.dg/pr89278.c: New test. + + 2019-02-15 Jakub Jelinek + + PR other/89342 + * gcc.dg/pr89342.c: New test. + + 2019-02-14 Jakub Jelinek + + PR rtl-optimization/89354 + * gcc.dg/pr89354.c: New test. + + PR tree-optimization/89314 + * gcc.dg/pr89314.c: New test. + + 2019-02-13 Jonathan Wakely + Jakub Jelinek + + PR middle-end/89303 + * g++.dg/torture/pr89303.C: New test. + + 2019-02-09 Jakub Jelinek + + PR middle-end/89246 + * gcc.dg/gomp/pr89246-1.c: New test. + * gcc.dg/gomp/pr89246-2.c: New test. + + PR target/88861 + * g++.dg/opt/pr89188.C: Include ../torture/pr88861.C. + + 2019-01-16 David Malcolm + + PR target/88861 + * g++.dg/torture/pr88861.C: New test. + + 2019-02-08 Jakub Jelinek + + PR rtl-optimization/89234 + * g++.dg/ubsan/pr89234.C: New test. + + 2019-02-05 Jakub Jelinek + + PR c++/89187 + * g++.dg/opt/pr89187.C: New test. + + PR rtl-optimization/11304 + * gcc.target/i386/call-1.c (set_eax): Add "eax" clobber. + * gcc.target/i386/call-2.c: New test. + + PR target/89188 + * g++.dg/opt/pr89188.C: New test. + + PR rtl-optimization/89195 + * gcc.c-torture/execute/pr89195.c: New test. + + PR target/89186 + * g++.dg/ext/vector36.C: New test. + + 2019-02-02 Jakub Jelinek + + PR middle-end/87887 + * gcc.dg/gomp/pr87887-1.c: New test. + * gcc.dg/gomp/pr87887-2.c: New test. + + 2019-02-01 Jakub Jelinek + + PR fortran/83246 + PR fortran/89084 + * gfortran.dg/pr89084.f90: New test. + * gfortran.dg/lto/pr89084_0.f90: New test. + * gfortran.dg/pr83246.f90: New test. + + PR tree-optimization/88107 + * gcc.dg/gomp/pr88107.c: New test. + + 2019-01-29 Jakub Jelinek + + PR c++/66676 + PR ipa/89104 + * gcc.dg/gomp/pr89104.c: New test. + + 2019-01-27 Jakub Jelinek + + PR target/87214 + * gcc.target/i386/avx512vl-pr87214-1.c: New test. + * gcc.target/i386/avx512vl-pr87214-2.c: New test. + + 2019-01-24 Jakub Jelinek + + PR c++/88976 + * c-c++-common/gomp/cancel-2.c: New test. + * gcc.dg/gomp/cancel-1.c: New test. + * g++.dg/gomp/cancel-1.C: New test. + * g++.dg/gomp/cancel-2.C: New test. + * g++.dg/gomp/cancel-3.C: New test. + + 2019-01-22 Jakub Jelinek + + PR rtl-optimization/49429 + PR target/49454 + PR rtl-optimization/86334 + PR target/88906 + * gcc.target/i386/pr86334.c: New test. + * gcc.target/i386/pr88906.c: New test. + + 2019-01-21 Jakub Jelinek + + PR c++/88949 + * g++.dg/gomp/pr88949.C: New test. + + 2019-01-19 Jakub Jelinek + + PR fortran/88902 + * gfortran.dg/pr88902.f90: New test. + + 2019-01-17 Jakub Jelinek + + PR rtl-optimization/88870 + * gcc.dg/pr88870.c: New test. + + 2019-01-10 Jakub Jelinek + + PR c/88568 + * gcc.dg/pr88568.c: New test. + + 2019-01-05 Jakub Jelinek + + PR middle-end/82564 + PR target/88620 + * gcc.dg/nested-func-12.c: New test. + * gcc.c-torture/compile/pr82564.c: New test. + + 2019-01-04 Jakub Jelinek + + PR target/88594 + * gcc.dg/pr88594.c: New test. + + 2019-01-03 Jakub Jelinek + + PR debug/88644 + * gcc.dg/debug/dwarf2/pr88644.c: New test. + + 2019-01-03 Iain Sandoe + + * gcc.dg/pubtypes-2.c: Adjust expected pubtypes length. + * gcc.dg/pubtypes-3.c: Likewise. + * gcc.dg/pubtypes-4.c: Likewise. + + 2018-12-21 Jakub Jelinek + + PR middle-end/85594 + PR middle-end/88553 + * gcc.dg/gomp/pr85594.c: New test. + * gcc.dg/gomp/pr88553.c: New test. + + PR rtl-optimization/88563 + * gcc.dg/pr88563.c: New test. + + 2018-12-13 Jakub Jelinek + + PR rtl-optimization/88470 + * gcc.target/i386/pr88470.c: New test. + + PR rtl-optimization/88416 + * gcc.target/i386/pr88416.c: New test. + + 2018-12-07 Jakub Jelinek + + PR c++/86669 + * g++.dg/cpp0x/initlist105.C: New test. + * g++.dg/cpp0x/initlist106.C: New test. + * g++.dg/other/pr86669.C: New test. + + PR fortran/88377 + * gfortran.dg/gomp/pr88377.f90: New test. + + PR c++/87506 + * g++.dg/cpp0x/constexpr-87506.C: New test. + + 2018-12-04 Jakub Jelinek + + PR c++/88103 + * g++.dg/cpp0x/rv-cond3.C: New test. + + 2018-12-03 Jakub Jelinek + + PR tree-optimization/71109 + * gcc.c-torture/compile/pr71109.c: New test. + + 2018-11-30 Jakub Jelinek + + PR debug/85550 + * g++.dg/debug/dwarf2/pr85550.C: New test. + + 2018-11-27 Jakub Jelinek + + PR c++/88181 + * g++.dg/debug/pr88181.C: New test. + + 2018-11-20 Jakub Jelinek + + PR tree-optimization/87895 + * gcc.dg/gomp/pr87895-1.c: New test. + * gcc.dg/gomp/pr87895-2.c: New test. + * gcc.dg/gomp/pr87895-3.c: New test. + + 2018-11-19 Jakub Jelinek + + PR c++/60994 + * g++.dg/lookup/pr60994.C: New test. + + 2018-10-25 Jakub Jelinek + + PR fortran/87725 + * c-c++-common/gomp/schedule-modifiers-1.c (bar): Separate modifier + from kind with a colon rather than comma. + * gfortran.dg/gomp/schedule-modifiers-1.f90: New test. + * gfortran.dg/gomp/schedule-modifiers-2.f90: New test. + + 2018-10-20 Jakub Jelinek + + PR middle-end/87647 + * gcc.c-torture/compile/pr87647.c: New test. + + 2018-10-19 Jakub Jelinek + + PR middle-end/85488 + PR middle-end/87649 + * c-c++-common/gomp/doacross-2.c: New test. + * c-c++-common/gomp/sink-3.c: Expect another error during error + recovery. + + 2019-08-20 Eric Botcazou + + * gcc.c-torture/execute/20190820-1.c: New test. + + 2019-08-03 Thomas Koenig + Paul Thomas + + Backport from trunk + PR fortran/90786 + PR fortran/90813 + * gfortran.dg/proc_ptr_51.f90: New test. + + 2019-07-22 Martin Liska + + Backport from mainline + 2019-07-22 Martin Liska + + PR driver/91172 + * gcc.dg/pr91172.c: New test. + + 2019-07-16 Wilco Dijkstra + + Backport from mainline + 2019-03-05 Wilco Dijkstra + + PR target/89222 + * gcc.target/arm/pr89222.c: Add new test. + + 2019-07-15 Andreas Krebbel + + Backport from mainline + 2019-07-01 Andreas Krebbel + + * gcc.target/s390/vector/vec-shift-2.c: New test. + + 2019-07-12 Wilco Dijkstra + + PR testsuite/78529 + * gcc.c-torture/execute/builtins/builtins.exp: Add -fno-ipa-ra. + + 2019-06-21 Jeff Law + + Backport fom mainline + 2019-06-21 Jeff Law + + PR tree-optimization/90949 + * gcc.c-torture/execute/pr90949.c: New test. + + 2019-06-21 Thomas Koenig + + Backport from trunk + PR fortran/90937 + * gfortran.dg/external_procedure_4.f90: New test. + + 2019-06-13 Thomas Koenig + + PR fortran/90870 + * gfortran.dg/deferred_character_33.f90: Remove failing test. + * gfortran.dg/deferred_character_33a.f90: Likewise. + + 2019-06-12 Thomas Koenig + Tomáš Trnka + + Backport from trunk + PR fortran/90744 + * gfortran.dg/deferred_character_33.f90: New test. + * gfortran.dg/deferred_character_33a.f90: New test. + + 2019-06-04 Iain Sandoe + + Backport from mainline + 2019-05-02 Iain Sandoe + + * g++.dg/ext/instantiate2.C: Remove special-casing for Darwin. + + 2019-05-28 Martin Liska + + Backport from mainline + 2019-04-20 Sandra Loosemore + + * g++.dg/ipa/pr89009.C: Add dg-require-effective-target fpic. + + 2019-05-28 Martin Liska + + Backport from mainline + 2019-02-28 John David Anglin + + PR testsuite/89441 + * g++.dg/ipa/pr89009.C: Update symbol visibility. + + 2019-05-28 Martin Liska + + Backport from mainline + 2019-02-11 Martin Liska + + PR ipa/89009 + * g++.dg/ipa/pr89009.C: New test. + + 2019-05-28 Eric Botcazou + + * gnat.dg/opt79.ad[sb]: New test. + + 2019-05-23 Uroš Bizjak + + Backported from mainline + 2019-05-21 Uroš Bizjak + + PR target/90547 + * gcc.target/i386/pr90547.c: New test. + + 2019-05-20 Kelvin Nilsen + + Backport from mainline. + 2019-05-07 Kelvin Nilsen + + PR target/89765 + * gcc.target/powerpc/pr89765-mc.c: New test. + * gcc.target/powerpc/vsx-builtin-10c.c: New test. + * gcc.target/powerpc/vsx-builtin-10d.c: New test. + * gcc.target/powerpc/vsx-builtin-11c.c: New test. + * gcc.target/powerpc/vsx-builtin-11d.c: New test. + * gcc.target/powerpc/vsx-builtin-12c.c: New test. + * gcc.target/powerpc/vsx-builtin-12d.c: New test. + * gcc.target/powerpc/vsx-builtin-13c.c: New test. + * gcc.target/powerpc/vsx-builtin-13d.c: New test. + * gcc.target/powerpc/vsx-builtin-14c.c: New test. + * gcc.target/powerpc/vsx-builtin-14d.c: New test. + * gcc.target/powerpc/vsx-builtin-15c.c: New test. + * gcc.target/powerpc/vsx-builtin-15d.c: New test. + * gcc.target/powerpc/vsx-builtin-16c.c: New test. + * gcc.target/powerpc/vsx-builtin-16d.c: New test. + * gcc.target/powerpc/vsx-builtin-17c.c: New test. + * gcc.target/powerpc/vsx-builtin-17d.c: New test. + * gcc.target/powerpc/vsx-builtin-18c.c: New test. + * gcc.target/powerpc/vsx-builtin-18d.c: New test. + * gcc.target/powerpc/vsx-builtin-19c.c: New test. + * gcc.target/powerpc/vsx-builtin-19d.c: New test. + * gcc.target/powerpc/vsx-builtin-20c.c: New test. + * gcc.target/powerpc/vsx-builtin-20d.c: New test. + * gcc.target/powerpc/vsx-builtin-9c.c: New test. + * gcc.target/powerpc/vsx-builtin-9d.c: New test. + + 2019-05-13 Kelvin Nilsen + + Backport from mainline. + 2019-05-06 Kelvin Nilsen + + PR target/89424 + * gcc.target/powerpc/pr89424-0.c: New test. + * gcc.target/powerpc/vsx-builtin-13a.c: Define macro PR89424 to + enable testing of newly patched capability. + * gcc.target/powerpc/vsx-builtin-13b.c: Likewise. + * gcc.target/powerpc/vsx-builtin-20a.c: Likewise. + * gcc.target/powerpc/vsx-builtin-20b.c: Likewise. + + 2019-05-07 Richard Sandiford + + Backport from mainline: + 2019-01-25 Richard Sandiford + + PR middle-end/89037 + * gcc.dg/pr89037.c: New test. + + 2019-05-05 Thomas Koenig + + PR fortran/90344 + * gfortran.dg/pr90344.f90: New test + + 2019-04-30 Srinath Parvathaneni + + PR target/90075 + * gcc.target/aarch64/pr90075.c: New test. + + 2019-04-25 Xiong Hu Luo + + * gcc.target/powerpc/vsx-vector-6.p8.c: Fix failure caused by typo. + + 2019-04-22 Kelvin Nilsen + + Backport from mainline + 2019-03-15 Kelvin Nilsen + + PR target/87532 + * gcc.target/powerpc/pr87532-mc.c: New test. + * gcc.target/powerpc/pr87532.c: New test. + * gcc.target/powerpc/vec-extract-v16qiu-v2.h: New test. + * gcc.target/powerpc/vec-extract-v16qiu-v2a.c: New test. + * gcc.target/powerpc/vec-extract-v16qiu-v2b.c: New test. + * gcc.target/powerpc/vsx-builtin-10a.c: New test. + * gcc.target/powerpc/vsx-builtin-10b.c: New test. + * gcc.target/powerpc/vsx-builtin-11a.c: New test. + * gcc.target/powerpc/vsx-builtin-11b.c: New test. + * gcc.target/powerpc/vsx-builtin-12a.c: New test. + * gcc.target/powerpc/vsx-builtin-12b.c: New test. + * gcc.target/powerpc/vsx-builtin-13a.c: New test. + * gcc.target/powerpc/vsx-builtin-13b.c: New test. + * gcc.target/powerpc/vsx-builtin-14a.c: New test. + * gcc.target/powerpc/vsx-builtin-14b.c: New test. + * gcc.target/powerpc/vsx-builtin-15a.c: New test. + * gcc.target/powerpc/vsx-builtin-15b.c: New test. + * gcc.target/powerpc/vsx-builtin-16a.c: New test. + * gcc.target/powerpc/vsx-builtin-16b.c: New test. + * gcc.target/powerpc/vsx-builtin-17a.c: New test. + * gcc.target/powerpc/vsx-builtin-17b.c: New test. + * gcc.target/powerpc/vsx-builtin-18a.c: New test. + * gcc.target/powerpc/vsx-builtin-18b.c: New test. + * gcc.target/powerpc/vsx-builtin-19a.c: New test. + * gcc.target/powerpc/vsx-builtin-19b.c: New test. + * gcc.target/powerpc/vsx-builtin-20a.c: New test. + * gcc.target/powerpc/vsx-builtin-20b.c: New test. + * gcc.target/powerpc/vsx-builtin-9a.c: New test. + * gcc.target/powerpc/vsx-builtin-9b.c: New test. + + 2019-03-19 Kelvin Nilsen + + PR target/89736 + * gcc.target/powerpc/pr87532-mc.c: Modify dejagnu directives to + restrict this test to vsx targets. + + 2019-04-19 Xiong Hu Luo + + Backport from trunk + 2018-02-07 Will Schmidt + + * gcc.target/powerpc/vsx-vector-6-le.c: Update CPU target. + * gcc.target/powerpc/vsx-vector-6-le.p9.c: New. + + Backport from trunk + 2018-05-04 Carl Love + * gcc.target/powerpc/vsx-vector-6.h (foo): Add test for vec_max, + vec_trunc. + * gcc.target/powerpc/vsx-vector-6-le.c (dg-final): Update xvcmpeqdp, + xvcmpgtdp, xvcmpgedp counts. Add xxsel counts. + * gcc.target/powerpc/vsx-vector-6-be.c (dg-final): Update xvcmpgtdp, + xvcmpgedp counts. Add xxsel counts. + + Backport from trunk + 2018-05-16 Carl Love + * gcc.target/powerpc/vsx-vector-6-be.c: Remove file. + * gcc.target/powerpc/vsx-vector-6-be.p7.c: New test file. + * gcc.target/powerpc/vsx-vector-6-be.p8.c: New test file. + * gcc.target/powerpc/vsx-vector-6-le.c (dg-final): Update counts for + xvcmpeqdp., xvcmpgtdp., xvcmpgedp., xxlxor, xvrdpi. + + Backport from trunk + 2018-05-23 Segher Boessenkool + + * lib/target-supports.exp (check_effective_target_be): New. + (check_effective_target_le): New. + + Backport from trunk + 2018-06-01 Carl Love + + * gcc.target/powerpc/altivec-7-be.c: Delete file. + * gcc.target/powerpc/altivec-7-le.c: Delete file. + * gcc.target/powerpc/vsx-7-be.c: Remove file. + + Backport from trunk + 2018-06-01 Carl Love + + Commit 260294 on 2018-05-16 by Carl Love was supposed to add the + following files. + + * gcc.target/powerpc/vsx-vector-6-be.p7.c: New test file. + * gcc.target/powerpc/vsx-vector-6-be.p8.c: New test file. + + Backport from trunk + 2018-06-08 Carl Love + + * gcc.target/powerpc/vsx-vector-6-be.p7.c: Rename this file to + vsx-vector-6.p7.c. + * gcc.target/powerpc/vsx-vector-6-le.p9.c: Rename this file to + vsx-vector-6.p9.c. + * gcc.target/powerpc/vsx-vector-6-be.p8.c: Move instruction counts + for BE system that are different then for an LE system from this file + into vsx-vector-6-le.c using be target qualifier. Remove this file. + * gcc.target/powerpc/vsx-vector-6-le.c: Add le qualifiers as needed for + the various instruction counts. Rename file to vsx-vector-6.p8.c. + + Backport from trunk + 2019-02-06 Bill Seurer + + * gcc.target/powerpc/vsx-vector-6.p7.c: Update instruction + counts and target. + * gcc.target/powerpc/vsx-vector-6.p8.c: Update instruction + counts and target. + * gcc.target/powerpc/vsx-vector-6.p9.c: Update instruction + counts and target. + + 2019-04-14 Thomas Koenig + + Backport from trunk + PR fortran/87352 + * gfortran.dg/finalize_28.f90: Adjust count of __builtin_free. + * gfortran.dg/finalize_34.f90: New test. + + 2019-04-14 Thomas Koenig + + Backport from trunk + PR fortran/87352 + * gfortran.dg/finalize_28.f90: Adjust count of __builtin_free. + * gfortran.dg/finalize_34.f90: New test. + + 2019-04-11 Martin Liska + + Backport from mainline + 2019-03-08 Martin Liska + + PR target/86952 + * gcc.target/i386/pr86952.c: New test. + * gcc.target/i386/indirect-thunk-7.c: Use jump tables to match + scanned pattern. + * gcc.target/i386/indirect-thunk-inline-7.c: Likewise. + + 2019-04-10 Harald Anlauf + + Backport from trunk + PR fortran/89904 + * gfortran.dg/pr85797.f90: Adjust testcase. + + 2019-04-10 Matthew Malcomson + + PR target/90024 + * gcc.dg/torture/neon-immediate-timode.c: New test. + + 2019-04-07 Uroš Bizjak + + PR target/89945 + * gcc.target/i386/pr89945.c: New test. + + 2019-04-06 Eric Botcazou + + * gnat.dg/opt73.adb: New test. + + 2019-04-02 Xiong Hu Luo + + Backport from trunk r250477. + + 2017-07-24 Carl Love + + * gcc.target/powerpc/builtins-3-p9-runnable.c: Add new test file for + the new built-ins. + + Backport from trunk r255555. + + 2017-12-11 Carl Love + * gcc.target/powerpc/altivec-7.c: Renamed altivec-7.h. + * gcc.target/powerpc/altivec-7.h (main): Add testcases for vec_unpackl. + Add dg-final tests for the instructions generated. + * gcc.target/powerpc/altivec-7-be.c: New file to test on big endian. + * gcc.target/powerpc/altivec-7-le.c: New file to test on little endian. + * gcc.target/powerpc/altivec-13.c (foo): Add vec_sld, vec_srl, + vec_sro testcases. Add dg-final tests for the instructions generated. + * gcc.target/powerpc/builtins-3-p8.c (test_vsi_packs_vui, + test_vsi_packs_vsi, test_vsi_packs_vssi, test_vsi_packs_vusi, + test_vsi_packsu-vssi, test_vsi_packsu-vusi, test_vsi_packsu-vsll, + test_vsi_packsu-vull, test_vsi_packsu-vsi, test_vsi_packsu-vui): Add + testcases. Add dg-final tests for new instructions. + * gcc.target/powerpc/p8vector-builtin-2.c (vbschar_eq, vbchar_eq, + vuchar_eq, vbint_eq, vsint_eq, viint_eq, vuint_eq, vbool_eq, vbint_ne, + vsint_ne, vuint_ne, vbool_ne, vsign_ne, vuns_ne, vbshort_ne): Add + tests. + Add dg-final instruction tests. + * gcc.target/powerpc/vsx-vector-6.c: Renamed vsx-vector-6.h. + * gcc.target/powerpc/vsx-vector-6.h (vec_andc,vec_nmsub, vec_nmadd, + vec_or, vec_nor, vec_andc, vec_or, vec_andc, vec_msums): Add tests. + Add dg-final tests for the generated instructions. + * gcc.target/powerpc/builtins-3.c (test_sll_vsc_vsc_vsuc, + test_sll_vuc_vuc, test_sll_vsi_vsi_vuc, test_sll_vui_vui_vuc, + test_sll_vbll_vull, test_sll_vbll_vbll_vus, test_sll_vp_vp_vuc, + test_sll_vssi_vssi_vuc, test_sll_vusi_vusi_vuc, test_slo_vsc_vsc_vsc, + test_slo_vuc_vuc_vsc, test_slo_vsi_vsi_vsc, test_slo_vsi_vsi_vuc, + test_slo_vui_vui_vsc, test_slo_vui_vui_vuc, test_slo_vsll_slo_vsll_vsc, + test_slo_vsll_slo_vsll_vuc, test_slo_vull_slo_vull_vsc, + test_slo_vull_slo_vull_vuc, test_slo_vp_vp_vsc, test_slo_vp_vp_vuc, + test_slo_vssi_vssi_vsc, test_slo_vssi_vssi_vuc, test_slo_vusi_vusi_vsc, + test_slo_vusi_vusi_vuc, test_slo_vusi_vusi_vuc, test_slo_vf_vf_vsc, + test_slo_vf_vf_vuc, test_cmpb_float): Add tests. + + Backport from trunk r257253. + + 2018-01-31 Will Schmidt + + * gcc.target/powerpc/altivec-13.c: Remove VSX-requiring built-ins. + * gcc.target/powerpc/vsx-13.c: New. + + Backport from trunk r258137. + + 2018-03-02 Will Schmidt + + * gcc.target/powerpc/altivec-7-be.c: Remove VSX content, allow + 32-bit target. + * gcc.target/powerpc/altivec-7.h: Remove VSX content. + * gcc.target/powerpc/vsx-7-be.c: New test (VSX content). + * gcc.target/powerpc/vsx-7.h: New include (VSX content). + * gcc.target/powerpc/altivec-7-le.c: Add vsx-7.h include. + + 2019-03-31 Harald Anlauf + + Backport from trunk + PR fortran/83515 + PR fortran/85797 + * gfortran.dg/pr85797.f90: New test. + + 2019-02-26 Richard Biener + + Backport from mainline + 2019-02-12 Richard Biener + + PR tree-optimization/89253 + * gfortran.dg/pr89253.f: New testcase. + + 2019-02-08 Richard Biener + + PR middle-end/89223 + * gcc.dg/torture/pr89223.c: New testcase. + + 2019-01-28 Richard Biener + + PR tree-optimization/88739 + * gcc.c-torture/execute/pr88739.c: New test. + + 2019-03-26 Richard Biener + + Backport from mainline + 2019-01-08 Richard Biener + + PR tree-optimization/86554 + * gcc.dg/torture/pr86554-1.c: New testcase. + * gcc.dg/torture/pr86554-2.c: Likewise. + + 2018-11-20 Richard Biener + + PR tree-optimization/88105 + * gcc.dg/gomp/pr88105.c: New testcase. + + 2018-03-08 Richard Biener + + PR middle-end/84552 + * gcc.dg/graphite/pr84552.c: New testcase. + + 2019-03-25 Janus Weil + + PR fortran/71861 + Backport from trunk + * gfortran.dg/interface_abstract_5.f90: New test case. + + 2019-03-21 Thomas Schwinge + + PR fortran/56408 + * gcc.target/powerpc/ppc-fortran/ppc-fortran.exp + (dg-compile-aux-modules): Fix diagnostic. + * gfortran.dg/coarray/caf.exp (dg-compile-aux-modules): Likewise. + * gfortran.dg/dg.exp (dg-compile-aux-modules): Likewise. + + PR fortran/56408 + * gfortran.dg/coarray/caf.exp (dg-compile-aux-modules): Workaround + missing nexted dg-test call support in dejaGNU 1.4.4. + + PR fortran/29383 + * gfortran.dg/ieee/ieee.exp (DEFAULT_FFLAGS): Set the same as in + other '*.exp' files. + + 2019-03-21 Matthias Klose + + Backport from mainline + 2019-02-26 Richard Biener + + PR tree-optimization/89505 + * gcc.dg/torture/pr89505.c: New testcase. + + 2019-03-17 Thomas Koenig + + PR fortran/84394 + Backport from trunk + * gfortran.dg/blockdata_11.f90: New test. + + 2019-03-17 H.J. Lu + + Backport from mainline + 2019-03-14 H.J. Lu + + PR target/89523 + * gcc.target/i386/pr89523-1a.c: New test. + * gcc.target/i386/pr89523-1b.c: Likewise. + * gcc.target/i386/pr89523-2.c: Likewise. + * gcc.target/i386/pr89523-3.c: Likewise. + * gcc.target/i386/pr89523-4.c: Likewise. + * gcc.target/i386/pr89523-5.c: Likewise. + * gcc.target/i386/pr89523-6.c: Likewise. + * gcc.target/i386/pr89523-7.c: Likewise. + * gcc.target/i386/pr89523-8.c: Likewise. + * gcc.target/i386/pr89523-9.c: Likewise. + + 2019-03-16 Thomas Koenig + + PR fortran/66089 + Backport from trunk + * gfortran.dg/dependency_53.f90: New test. + * gfortran.dg/assumed_type_2.f90: Adapted tree dumps. + * gfortran.dg/no_arg_check_2.f90: Likewise. + + 2019-03-16 Thomas Koenig + + PR fortran/66695 + PR fortran/77746 + PR fortran/79485 + Backport from trunk + * gfortran.dg/binding_label_tests_30.f90: New test. + * gfortran.dg/binding_label_tests_31.f90: New test. + * gfortran.dg/binding_label_tests_32.f90: New test. + * gfortran.dg/binding_label_tests_33.f90: New test. + + 2019-03-14 Martin Jambor + + Backport from mainline + 2019-03-07 Martin Jambor + + PR lto/87525 + * gcc.dg/ipa/ipcp-5.c: New test. + + 2019-03-14 Richard Biener + + Backport from mainline + 2018-02-16 Jakub Jelinek + + PR target/84272 + * g++.dg/opt/pr84272.C: New test. + + 2019-03-13 Thomas Koenig + + PR fortran/87673 + Backport from trunk + * gfortran.dg/charlen_17.f90: New test. + + 2019-03-13 Andre Vieira + + Backport from mainline + 2019-03-08 Andre Vieira + + * gcc.target/arm/f16_f64_conv_no_dp.c: New test. + + Backport from mainline + 2019-03-11 Christophe Lyon + + * gcc.target/arm/f16_f64_conv_no_dp.c: Add arm_fp16_ok effective + target. + + 2019-03-10 Thomas Koenig + + PR fortran/71544 + Backport from trunk + * gfortran.dg/c_ptr_tests_19.f90: New test. + + 2019-03-10 Thomas Koenig + + PR fortran/87734 + Backport from trunk + * gfortran.dg/public_private_module_10.f90: New test. + + 2019-04-10 Matthias Klose + + Backport from the gcc-8 branch + 2019-03-07 Jakub Jelinek + + PR c++/89585 + * g++.dg/asm-qual-3.C: Adjust expected diagnostics. + + 2019-03-07 Xiong Hu Luo + + Backport of r268834 from mainline to gcc-7-branch. + 2019-01-23 Xiong Hu Luo + + * gcc.target/powerpc/crypto-builtin-1.c + (crypto1_be, crypto2_be, crypto3_be, crypto4_be, crypto5_be): + New testcases. + + 2019-03-06 Thomas Koenig + + PR fortran/72714 + Backport from trunk + * gfortran.dg/coarray_allocate_11.f90: New test. + + 2019-03-03 Harald Anlauf + + Backport from trunk + PR fortran/77583 + * gfortran.dg/pr77583.f90: New test. + + 2019-03-03 Thomas Koenig + + PR fortran/87689 + Backport from trunk + * gfortran.dg/lto/20091028-1_0.f90: Add -Wno-lto-type-mismatch to + options. + * gfortran.dg/lto/20091028-2_0.f90: Likewise. + * gfortran.dg/lto/pr87689_0.f: New file. + * gfortran.dg/lto/pr87689_1.f: New file. + * gfortran.dg/altreturn_9_0.f90: New file. + * gfortran.dg/altreturn_9_1.f90: New file. + + 2019-02-23 Paul Thomas + + Backport from trunk + PR fortran/88117 + * gfortran.dg/deferred_character_32.f90 : New test + + 2019-02-23 Thomas Koenig + + PR fortran/71066 + Backport from trunk + * gfortran.dg/coarray_data_1.f90: New test. + + 2019-02-15 Martin Liska + + Backport from mainline + 2019-02-14 Martin Liska + + PR rtl-optimization/89242 + * g++.dg/pr89242.C: New test. + + 2019-02-15 Martin Liska + + Backport from mainline + 2019-02-11 Martin Liska + + PR ipa/89009 + * g++.dg/ipa/pr89009.C: New test. + + 2019-02-15 Eric Botcazou + + * gcc.target/sparc/struct-ret-check-1.c: Add -fno-pie option. + + 2019-02-11 Stefan Agner + + Backport from mainline + 2019-01-10 Stefan Agner + + PR target/88648 + * gcc.target/arm/pr88648-asm-syntax-unified.c: Add test to + check if -masm-syntax-unified gets applied properly. + + 2019-02-10 Harald Anlauf + + Backport from trunk + PR fortran/89077 + * gfortran.dg/pr89077.f90: New test. + + 2019-02-10 Thomas Koenig + + PR fortran/71723 + Backport from trunk + * gfortran.dg/pointer_init_2.f90: Adjust error messages. + * gfortran.dg/pointer_init_6.f90: Likewise. + * gfortran.dg/pointer_init_9.f90: New test. + + 2019-02-09 Thomas Koenig + + PR fortran/71860 + Backport from trunk + * gfortran.dg/null_10.f90: New test. + + 2019-02-06 Kelvin Nilsen + + 2019-02-05 Kelvin Nilsen + * gcc.target/powerpc/vec-extract-slong-1.c: Require p8 execution + hardware. + * gcc.target/powerpc/vec-extract-schar-1.c: Likewise. + * gcc.target/powerpc/vec-extract-sint128-1.c: Likewise. + * gcc.target/powerpc/vec-extract-sshort-1.c: Likewise. + * gcc.target/powerpc/vec-extract-ulong-1.c: Likewise. + * gcc.target/powerpc/vec-extract-uchar-1.c: Likewise. + * gcc.target/powerpc/vec-extract-sint-1.c: Likewise. + * gcc.target/powerpc/vec-extract-uint128-1.c: Likewise. + * gcc.target/powerpc/vec-extract-ushort-1.c: Likewise. + * gcc.target/powerpc/vec-extract-uint-1.c: Likewise. + + Backport from mainline. + 2019-01-30 Kelvin Nilsen + * gcc.target/powerpc/vec-extract-schar-1.c: New test. + * gcc.target/powerpc/vec-extract-sint-1.c: New test. + * gcc.target/powerpc/vec-extract-sint128-1.c: New test. + * gcc.target/powerpc/vec-extract-slong-1.c: New test. + * gcc.target/powerpc/vec-extract-sshort-1.c: New test. + * gcc.target/powerpc/vec-extract-uchar-1.c: New test. + * gcc.target/powerpc/vec-extract-uint-1.c: New test. + * gcc.target/powerpc/vec-extract-uint128-1.c: New test. + * gcc.target/powerpc/vec-extract-ulong-1.c: New test. + * gcc.target/powerpc/vec-extract-ushort-1.c: New test. + + 2019-02-06 Eric Botcazou + + * gnat.dg/opt76.adb: New test. + + 2019-02-05 Thomas Koenig + + PR fortran/67679 + Backport from trunk + * gfortran.dg/warn_undefined_1.f90: New test. + * gfortran.dg/coarray_lock_7.f90: Fix patterns in test. + + 2019-02-03 Paul Thomas + + Backport from trunk + PR fortran/88393 + * gfortran.dg/alloc_comp_assign_16.f03 : New test. + + 2019-02-02 Thomas Koenig + + PR fortran/88298 + Backport from trunk + * gfortran.dg/warn_conversion_10.f90: New test. + + 2019-02-02 Thomas Koenig + + PR fortran/57048 + Backport from trunk + * gfortran.dg/c_funptr_1.f90: New file. + * gfortran.dg/c_funptr_1_mod.f90: New file. + + 2019-01-30 Manfred Schwarb + + * gfortran.dg/pr68318_1.f90: Fix a dg directive. + + 2019-01-30 Kewen Lin + + Backport from mainline + 2019-01-20 Kewen Lin + + * gcc.target/powerpc/altivec_vld_vst_addr.c: Remove, split into + altivec_vld_vst_addr-1.c and altivec_vld_vst_addr-2.c. + * gcc.target/powerpc/altivec_vld_vst_addr-1.c: New test. + * gcc.target/powerpc/altivec_vld_vst_addr-2.c: Ditto. + + 2019-01-17 Kewen Lin + + * gcc.target/powerpc/altivec_vld_vst_addr.c: New test. + + 2019-01-27 Uroš Bizjak + + PR fortran/70696 + * gfortran.dg/coarray/event_3.f0: Add save attribue to x. + + 2019-01-27 Paul Thomas + + Backport from trunk + PR fortran/56386 + PR fortran/58906 + PR fortran/77385 + * gfortran.dg/associate_44.f90 : New test. + + PR fortran/80260 + * gfortran.dg/select_type_45.f90 : New test. + + PR fortran/82077 + * gfortran.dg/select_type_46.f90 : New test. + + 2019-01-27 Eric Botcazou + + * gnat.dg/opt75.adb: New test. + * gnat.dg/opt75_pkg.ad[sb]: New helper. + + 2019-01-27 Uroš Bizjak + + PR target/88948 + * gcc.target/i386/pr88948.c: New test. + + 2019-01-26 Eric Botcazou + + * gnat.dg/array34.adb: New test. + + 2019-01-26 Dominique d'Humieres + + PR fortran/85579 + * gfortran.dg/pr51434.f90: Fix the TRANSFER argument. + + 2019-01-26 Manfred Schwarb + + * gfortran.dg/array_function_5.f90 + * gfortran.dg/class_66.f90 + * gfortran.dg/dec_structure_12.f90 + * gfortran.dg/dec_structure_14.f90 + * gfortran.dg/dec_structure_15.f90 + * gfortran.dg/extends_11.f03 + * gfortran.dg/pr58968.f + * gfortran.dg/pr78259.f90 + * gfortran.dg/debug/pr35154-stabs.f + + 2019-01-24 Uroš Bizjak + + PR target/88998 + * g++.dg/pr88998.c: New test. + + 2019-01-24 Richard Biener + + Backport from mainline + 2019-01-23 Richard Biener + + PR tree-optimization/89008 + * gcc.dg/torture/pr89008.c: New testcase. + + 2019-01-22 Uroš Bizjak + + PR target/88938 + * gcc.target/i386/pr88938.c: New test. + + 2019-01-16 Joseph Myers + + Backport from mainline + 2019-01-07 Joseph Myers + + PR c/88720 + PR c/88726 + * gcc.dg/inline-40.c, gcc.dg/inline-41.c: New tests. + + 2019-01-16 Martin Jambor + + Backported from mainline + 2018-12-10 Martin Jambor + + PR ipa/88214 + * gcc.dg/ipa/pr88214.c: New test. + + 2019-01-15 Steven G. Kargl + + PR fortran/81849 + * gfortran.dg/pr81849.f90: New test. + + 2019-01-13 Jerry DeLisle + + PR libfortran/88776 + * gfortran.dg/namelist_96.f90: New test. + + 2019-01-11 Steven G. Kargl + + PR fortran/35031 + * gfortran.dg/pr35031.f90: new test. + + 2019-01-09 Eric Botcazou + + * gcc.target/sparc/tls-ld-int8.c: New test. + * gcc.target/sparc/tls-ld-int16.c: Likewise. + * gcc.target/sparc/tls-ld-int32.c: Likewise. + * gcc.target/sparc/tls-ld-uint8.c: Likewise. + * gcc.target/sparc/tls-ld-uint16.c: Likewise. + * gcc.target/sparc/tls-ld-uint32.c: Likewise. + + 2019-01-05 Dominique d'Humieres + + PR target/60563 + * g++.dg/ext/sync-4.C: Add dg-xfail-run-if for darwin. + + 2018-01-02 Segher Boessenkool + + Backport from trunk + 2018-12-06 Segher Boessenkool + + PR inline-asm/55681 + * gcc.dg/asm-qual-1.c: Test that "const" and "restrict" are refused. + * gcc.dg/asm-qual-2.c: New test, test that asm-qualifiers are allowed + in any order, but that duplicates are not allowed. + + Backport from trunk + 2018-12-06 Segher Boessenkool + + * c-c++-common/torture/asm-inline.c: New testcase. + * gcc.dg/asm-qual-2.c: Test asm inline, too. + + Backport from trunk + 2018-12-19 Segher Boessenkool + + * g++.dg/asm-qual-1.C: New testcase. + * g++.dg/asm-qual-2.C: New testcase. + * gcc.dg/asm-qual-1.c: Update. + + Backport from trunk + 2018-12-19 Segher Boessenkool + + * g++.dg/asm-qual-3.C: New testcase. + * gcc.dg/asm-qual-3.c: New testcase. + + And extra for the backport + 2019-01-02 Segher Boessenkool + + * gcc.dg/asm-qual-1.c: Adjust. + + 2018-12-30 Dominique d'Humieres + + PR tree-optimization/68356 + PR target/81210 + * gcc.dg/torture/pr68264.c: Skip on darwin. + * gcc.dg/torture/pr68037-1.c: Likewise. + * gcc.dg/torture/pr68037-2.c: Likewise. + * gcc.dg/torture/pr68037-3.c: Likewise. + + 2018-12-29 Paul Thomas + + Backport from trunk + PR fortran/82550 + * gfortran.dg/submodule_30.f08 : New test. + + 2018-12-24 Iain Sandoe + + Backport from mainline + 2018-12-24 Iain Sandoe + + PR testsuite/67974 + * gcc.target/x86_64/abi/avx/asm-support-darwin.s: New. + + 2018-12-24 Iain Sandoe + + Backport from mainline + 2018-08-16 Iain Sandoe + + * g++.dg/torture/pr44295.C : Skip for Darwin. + + 2018-12-24 Iain Sandoe + + Backport from mainline + 2018-08-22 Iain Sandoe + + * gcc.dg/lto/pr85248_0.c (test_alias): + Stringify __USER_LABEL_PREFIX__. + (test_noreturn): Likewise. + + 2018-08-16 Iain Sandoe + + * gcc.dg/memcmp-1.c (lib_memcmp): Apply __USER_LABEL_PREFIX__. + (lib_strncmp): Likewise. + + 2018-08-16 Iain Sandoe + + * gcc.dg/asan/pr81923.c: Stringify __USER_LABEL_PREFIX__. + + 2018-12-24 Iain Sandoe + + Backport from mainline + 2018-08-16 Iain Sandoe + + PR testsuite/78544 + * gcc.dg/tree-prof/section-attr-1.c: Add Darwin-specific section + attributes and matching. + * gcc.dg/tree-prof/section-attr-2.c: Likewise. + * gcc.dg/tree-prof/section-attr-3.c: Likewise. + + 2018-12-23 Paul Thomas + + Backport from trunk + PR fortran/77703 + * gfortran.dg/ptr_func_assign_5.f08 : New test. + + 2018-12-22 Steven G . Kargl + + PR fortran/85798 + * gfortran.dg/pr85798.f90: New test. + + 2018-12-22 Thomas Koenig + + Backport from trunk + PR fortran/85544 + * gfortran.dg/power_7.f90: New test. + + 2018-12-21 Steven G. Kargl + + PR fortran/88169 + * gfortran.dg/pr88169_1.f90: new test. + * gfortran.dg/pr88169_2.f90: Ditto. + * gfortran.dg/pr88169_3.f90: Ditto. + + 2018-12-21 Uros Bizjak + + Backport from mainline + 2018-12-10 Uros Bizjak + + PR target/88418 + * gcc.target/i386/pr88418.c: New test. + + 2018-12-17 Senthil Kumar Selvaraj + + Backport from trunk + 2018-12-17 Senthil Kumar Selvaraj + + PR rtl-optimization/88253 + * gcc.target/avr/pr88253.c: New test. + + 2018-12-15 Steven G. Kargl + + PR fortran/88138 + * gfortran.dg/pr88138.f90: new test. + + 2018-12-13 Andreas Krebbel + + Backport from mainline + 2018-12-13 Andreas Krebbel + + * gcc.target/s390/zvector/vec-double-1.c: New test. + * gcc.target/s390/zvector/vec-double-2.c: New test. + + 2018-12-12 Peter Bergner + + Backport from mainline + 2018-12-07 Peter Bergner + + PR target/87496 + * gcc.target/powerpc/pr87496-1.c: New test. + * gcc.target/powerpc/pr87496-2.c: New test. + * gcc.target/powerpc/pr87496-3.c: New test. + + 2018-12-11 Steven G. Kargl + + PR fortran/88155 + * gfortran.dg/pr70870_1.f90: Update testcase to use -std=gnu. + * gfortran.dg/pr88155.f90: New test. + + 2018-12-11 Steven G. Kargl + + PR fortran/88249 + * gfortran.dg/pr88249.f90: New test. + + 2018-12-10 Steven G. Kargl + + PR fortran/88269 + * gfortran.dg/pr88269.f90: New test. + + 2018-12-09 Steven G. Kargl + + PR fortran/88205 + * gfortran.dg/pr88205.f90: New unit. + + 2018-12-09 Steven G. Kargl + + PR fortran/88206 + * gfortran.dg/pr88206.f90: New test. + + 2018-12-09 Steven G. Kargl + + PR fortran/88228 + * gfortran.dg/pr88228.f90: New test. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/cancel-2.c gcc-7.5.0/gcc/testsuite/c-c++-common/gomp/cancel-2.c *** gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/cancel-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/c-c++-common/gomp/cancel-2.c Fri Aug 30 11:31:02 2019 *************** *** 0 **** --- 1,10 ---- + /* { dg-do compile } */ + + void + foo (void) + { + #pragma omp parallel + { + #pragma omp cancel parallel if (1) if (1) /* { dg-error "too many 'if' clauses without modifier" } */ + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/doacross-2.c gcc-7.5.0/gcc/testsuite/c-c++-common/gomp/doacross-2.c *** gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/doacross-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/c-c++-common/gomp/doacross-2.c Fri Aug 30 11:07:22 2019 *************** *** 0 **** --- 1,49 ---- + /* PR middle-end/87649 */ + + void + foo (void) + { + int i; + #pragma omp for ordered(1) + for (i = 0; i < 64; i++) + { + #pragma omp ordered /* { dg-error "'ordered' region without 'depend' clause may not be closely nested inside a loop region with an 'ordered' clause with a parameter" } */ + ; + } + #pragma omp for ordered(1) + for (i = 0; i < 64; i++) + { + #pragma omp ordered threads /* { dg-error "'ordered' region without 'depend' clause may not be closely nested inside a loop region with an 'ordered' clause with a parameter" } */ + ; + } + } + + void + bar (void) + { + int i; + #pragma omp for ordered + for (i = 0; i < 64; i++) + { + #pragma omp ordered depend(source) /* { dg-error "'ordered' construct with 'depend' clause must be closely nested inside a loop with 'ordered' clause with a parameter" } */ + #pragma omp ordered depend(sink: i - 1) /* { dg-error "'ordered' construct with 'depend' clause must be closely nested inside a loop with 'ordered' clause with a parameter" } */ + } + #pragma omp for + for (i = 0; i < 64; i++) + { + #pragma omp ordered depend(source) /* { dg-error "'ordered' construct with 'depend' clause must be closely nested inside a loop with 'ordered' clause with a parameter" } */ + #pragma omp ordered depend(sink: i - 1) /* { dg-error "'ordered' construct with 'depend' clause must be closely nested inside a loop with 'ordered' clause with a parameter" } */ + } + #pragma omp for + for (i = 0; i < 64; i++) + { + #pragma omp ordered /* { dg-error "'ordered' region must be closely nested inside a loop region with an 'ordered' clause" } */ + ; + } + #pragma omp for + for (i = 0; i < 64; i++) + { + #pragma omp ordered threads /* { dg-error "'ordered' region must be closely nested inside a loop region with an 'ordered' clause" } */ + ; + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr88588.c gcc-7.5.0/gcc/testsuite/c-c++-common/gomp/pr88588.c *** gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr88588.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/c-c++-common/gomp/pr88588.c Fri Aug 30 12:17:22 2019 *************** *** 0 **** --- 1,18 ---- + /* PR middle-end/88588 */ + /* { dg-do compile } */ + /* { dg-options "-fopenmp -O1" } */ + + int *v; + + #pragma omp declare simd + void + foo (int x) + { + int *a = &x; + + for (;;) + { + *v = *a; + a = v; + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr90954.c gcc-7.5.0/gcc/testsuite/c-c++-common/gomp/pr90954.c *** gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr90954.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/c-c++-common/gomp/pr90954.c Fri Aug 30 12:47:28 2019 *************** *** 0 **** --- 1,27 ---- + /* PR sanitizer/90954 */ + /* { dg-do compile } */ + /* { dg-options "-fopenmp -fsanitize=undefined" } */ + + float v; + int i; + + void + foo (float x, float y) + { + #pragma omp atomic + v += x / y; + } + + void + bar (int x, int y) + { + #pragma omp atomic + i += x / y; + } + + void + baz (int x, int y) + { + #pragma omp atomic + i *= (x << y); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/schedule-modifiers-1.c gcc-7.5.0/gcc/testsuite/c-c++-common/gomp/schedule-modifiers-1.c *** gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/schedule-modifiers-1.c Thu Nov 5 15:08:08 2015 --- gcc-7.5.0/gcc/testsuite/c-c++-common/gomp/schedule-modifiers-1.c Fri Aug 30 11:09:22 2019 *************** bar (void) *** 80,100 **** #pragma omp for schedule (nonmonotonic : auto) /* { dg-error ".nonmonotonic. modifier specified for .auto. schedule kind" } */ for (i = 0; i < 64; i++) ; ! #pragma omp for schedule (nonmonotonic, dynamic) ordered /* { dg-error ".nonmonotonic. schedule modifier specified together with .ordered. clause" } */ for (i = 0; i < 64; i++) #pragma omp ordered ; ! #pragma omp for ordered schedule(nonmonotonic, dynamic, 5) /* { dg-error ".nonmonotonic. schedule modifier specified together with .ordered. clause" } */ for (i = 0; i < 64; i++) #pragma omp ordered ; ! #pragma omp for schedule (nonmonotonic, guided) ordered(1) /* { dg-error ".nonmonotonic. schedule modifier specified together with .ordered. clause" } */ for (i = 0; i < 64; i++) { #pragma omp ordered depend(sink: i - 1) #pragma omp ordered depend(source) } ! #pragma omp for ordered(1) schedule(nonmonotonic, guided, 2) /* { dg-error ".nonmonotonic. schedule modifier specified together with .ordered. clause" } */ for (i = 0; i < 64; i++) { #pragma omp ordered depend(source) --- 80,100 ---- #pragma omp for schedule (nonmonotonic : auto) /* { dg-error ".nonmonotonic. modifier specified for .auto. schedule kind" } */ for (i = 0; i < 64; i++) ; ! #pragma omp for schedule (nonmonotonic : dynamic) ordered /* { dg-error ".nonmonotonic. schedule modifier specified together with .ordered. clause" } */ for (i = 0; i < 64; i++) #pragma omp ordered ; ! #pragma omp for ordered schedule(nonmonotonic : dynamic, 5) /* { dg-error ".nonmonotonic. schedule modifier specified together with .ordered. clause" } */ for (i = 0; i < 64; i++) #pragma omp ordered ; ! #pragma omp for schedule (nonmonotonic : guided) ordered(1) /* { dg-error ".nonmonotonic. schedule modifier specified together with .ordered. clause" } */ for (i = 0; i < 64; i++) { #pragma omp ordered depend(sink: i - 1) #pragma omp ordered depend(source) } ! #pragma omp for ordered(1) schedule(nonmonotonic : guided, 2) /* { dg-error ".nonmonotonic. schedule modifier specified together with .ordered. clause" } */ for (i = 0; i < 64; i++) { #pragma omp ordered depend(source) diff -Nrcpad gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/sink-3.c gcc-7.5.0/gcc/testsuite/c-c++-common/gomp/sink-3.c *** gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/sink-3.c Tue Oct 13 19:06:23 2015 --- gcc-7.5.0/gcc/testsuite/c-c++-common/gomp/sink-3.c Fri Aug 30 11:07:22 2019 *************** foo () *** 14,20 **** for (i=0; i < 100; ++i) { #pragma omp ordered depend(sink:poo-1,paa+1) /* { dg-error "poo.*declared.*paa.*declared" } */ ! bar(&i); #pragma omp ordered depend(source) } } --- 14,20 ---- for (i=0; i < 100; ++i) { #pragma omp ordered depend(sink:poo-1,paa+1) /* { dg-error "poo.*declared.*paa.*declared" } */ ! bar(&i); /* { dg-error "may not be closely nested" "" { target *-*-* } .-1 } */ #pragma omp ordered depend(source) } } diff -Nrcpad gcc-7.4.0/gcc/testsuite/c-c++-common/pr89933.c gcc-7.5.0/gcc/testsuite/c-c++-common/pr89933.c *** gcc-7.4.0/gcc/testsuite/c-c++-common/pr89933.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/c-c++-common/pr89933.c Fri Aug 30 12:36:05 2019 *************** *** 0 **** --- 1,5 ---- + /* PR c/89933 */ + /* { dg-do compile } */ + + typedef unsigned int a __attribute__ ((__aligned__(8), __may_alias__)); + typedef unsigned int a __attribute__ ((__aligned__(8), __may_alias__)); diff -Nrcpad gcc-7.4.0/gcc/testsuite/c-c++-common/pr90108.c gcc-7.5.0/gcc/testsuite/c-c++-common/pr90108.c *** gcc-7.4.0/gcc/testsuite/c-c++-common/pr90108.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/c-c++-common/pr90108.c Fri Aug 30 12:38:31 2019 *************** *** 0 **** --- 1,6 ---- + /* PR c++/90108 */ + /* { dg-do compile } */ + /* { dg-options "--param ggc-min-heapsize=0" } */ + + typedef unsigned int a __attribute__ ((__aligned__(8), __may_alias__)); + typedef unsigned int a __attribute__ ((__aligned__(8), __may_alias__)); diff -Nrcpad gcc-7.4.0/gcc/testsuite/c-c++-common/torture/asm-inline.c gcc-7.5.0/gcc/testsuite/c-c++-common/torture/asm-inline.c *** gcc-7.4.0/gcc/testsuite/c-c++-common/torture/asm-inline.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/c-c++-common/torture/asm-inline.c Wed Jan 2 22:49:04 2019 *************** *** 0 **** --- 1,53 ---- + /* { dg-do compile } */ + /* -O0 does no inlining, and -O3 does it too aggressively for this test: */ + /* { dg-skip-if "" { *-*-* } { "-O0" "-O3" } { "" } } + /* The normal asm is not inlined: */ + /* { dg-final { scan-assembler-times "w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w" 2 } } */ + /* But the asm inline is inlined: */ + /* { dg-final { scan-assembler-times "x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x.x" 8 } } */ + + static void f(void) + { + asm ("w\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\n" + "w\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw"); + } + + int f0(void) { f(); return 0; } + int f1(void) { f(); return 1; } + int f2(void) { f(); return 2; } + int f3(void) { f(); return 3; } + + static void fg(void) + { + asm goto("w\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\n" + "w\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw\nw" :::: q); + q: ; + } + + int fg0(void) { fg(); return 0; } + int fg1(void) { fg(); return 1; } + int fg2(void) { fg(); return 2; } + int fg3(void) { fg(); return 3; } + + static void g(void) + { + asm inline("x\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\n" + "x\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx"); + } + + int g0(void) { g(); return 0; } + int g1(void) { g(); return 1; } + int g2(void) { g(); return 2; } + int g3(void) { g(); return 3; } + + static void gg(void) + { + asm inline goto("x\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\n" + "x\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx\nx" :::: q); + q: ; + } + + int gg0(void) { gg(); return 0; } + int gg1(void) { gg(); return 1; } + int gg2(void) { gg(); return 2; } + int gg3(void) { gg(); return 3; } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/asm-qual-1.C gcc-7.5.0/gcc/testsuite/g++.dg/asm-qual-1.C *** gcc-7.4.0/gcc/testsuite/g++.dg/asm-qual-1.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/asm-qual-1.C Wed Jan 2 22:49:04 2019 *************** *** 0 **** --- 1,13 ---- + // Test that qualifiers other than volatile are disallowed on asm. + // { dg-do compile } + // { dg-options "-std=gnu++98" } + + void + f () + { + asm volatile (""); + + asm const (""); // { dg-error {'const' is not an asm qualifier} } + + asm __restrict (""); // { dg-error {'__restrict' is not an asm qualifier} } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/asm-qual-2.C gcc-7.5.0/gcc/testsuite/g++.dg/asm-qual-2.C *** gcc-7.4.0/gcc/testsuite/g++.dg/asm-qual-2.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/asm-qual-2.C Wed Jan 2 22:49:04 2019 *************** *** 0 **** --- 1,46 ---- + // Test that qualifiers on asm are allowed in any order. + // { dg-do compile } + // { dg-options "-std=c++98" } + + void + f () + { + asm volatile goto ("" :::: lab); + asm volatile inline ("" :::); + asm inline volatile ("" :::); + asm inline goto ("" :::: lab); + asm goto volatile ("" :::: lab); + asm goto inline ("" :::: lab); + + asm volatile inline goto ("" :::: lab); + asm volatile goto inline ("" :::: lab); + asm inline volatile goto ("" :::: lab); + asm inline goto volatile ("" :::: lab); + asm goto volatile inline ("" :::: lab); + asm goto inline volatile ("" :::: lab); + + /* Duplicates are not allowed. */ + asm goto volatile volatile ("" :::: lab); /* { dg-error "" } */ + asm volatile goto volatile ("" :::: lab); /* { dg-error "" } */ + asm volatile volatile goto ("" :::: lab); /* { dg-error "" } */ + asm goto goto volatile ("" :::: lab); /* { dg-error "" } */ + asm goto volatile goto ("" :::: lab); /* { dg-error "" } */ + asm volatile goto goto ("" :::: lab); /* { dg-error "" } */ + + asm inline volatile volatile ("" :::); /* { dg-error "" } */ + asm volatile inline volatile ("" :::); /* { dg-error "" } */ + asm volatile volatile inline ("" :::); /* { dg-error "" } */ + asm inline inline volatile ("" :::); /* { dg-error "" } */ + asm inline volatile inline ("" :::); /* { dg-error "" } */ + asm volatile inline inline ("" :::); /* { dg-error "" } */ + + asm goto inline inline ("" :::: lab); /* { dg-error "" } */ + asm inline goto inline ("" :::: lab); /* { dg-error "" } */ + asm inline inline goto ("" :::: lab); /* { dg-error "" } */ + asm goto goto inline ("" :::: lab); /* { dg-error "" } */ + asm goto inline goto ("" :::: lab); /* { dg-error "" } */ + asm inline goto goto ("" :::: lab); /* { dg-error "" } */ + + lab: + ; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/asm-qual-3.C gcc-7.5.0/gcc/testsuite/g++.dg/asm-qual-3.C *** gcc-7.4.0/gcc/testsuite/g++.dg/asm-qual-3.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/asm-qual-3.C Sun Mar 10 07:25:13 2019 *************** *** 0 **** --- 1,12 ---- + // Test that asm-qualifiers are not allowed on toplevel asm. + // { dg-do compile } + // { dg-options "-std=gnu++98" } + + asm const (""); // { dg-error {'const' is not an asm qualifier} } + asm volatile (""); + asm restrict (""); // { dg-error {expected '\(' before 'restrict'} } + asm inline (""); // { dg-error {asm qualifier outside of function body} } + asm goto (""); // { dg-error {asm qualifier outside of function body} } + + // There are many other things wrong with this code, so: + // { dg-excess-errors "" } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-87506.C gcc-7.5.0/gcc/testsuite/g++.dg/cpp0x/constexpr-87506.C *** gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-87506.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/cpp0x/constexpr-87506.C Fri Aug 30 11:17:41 2019 *************** *** 0 **** --- 1,12 ---- + // PR c++/87506 + // { dg-do compile { target c++11 } } + + struct A {}; + struct B { constexpr B (const A) {} }; + struct C : B { using B::B; }; + + void + foo () + { + C c (A{}); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/initlist105.C gcc-7.5.0/gcc/testsuite/g++.dg/cpp0x/initlist105.C *** gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/initlist105.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/cpp0x/initlist105.C Fri Aug 30 11:20:08 2019 *************** *** 0 **** --- 1,28 ---- + // PR c++/86669 + // { dg-do run { target c++11 } } + + #include + + struct S { S (); }; + struct T : public S {}; + int cnt; + void foo (int) { cnt++; } + + S::S () + { + int e = 1, f = 2, g = 3, h = 4; + + for (auto k : { e, f, g, h }) + foo (k); + } + + int + main () + { + S s; + if (cnt != 4) + __builtin_abort (); + T t; + if (cnt != 8) + __builtin_abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/initlist106.C gcc-7.5.0/gcc/testsuite/g++.dg/cpp0x/initlist106.C *** gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/initlist106.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/cpp0x/initlist106.C Fri Aug 30 11:20:08 2019 *************** *** 0 **** --- 1,29 ---- + // PR c++/86669 + // { dg-do run { target c++11 } } + + #include + + struct A { }; + struct S : virtual public A { S (); }; + struct T : public S, virtual public A {}; + int cnt; + void foo (int) { cnt++; } + + S::S () + { + int e = 1, f = 2, g = 3, h = 4; + + for (auto k : { e, f, g, h }) + foo (k); + } + + int + main () + { + S s; + if (cnt != 4) + __builtin_abort (); + T t; + if (cnt != 8) + __builtin_abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/pr89403.C gcc-7.5.0/gcc/testsuite/g++.dg/cpp0x/pr89403.C *** gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/pr89403.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/cpp0x/pr89403.C Fri Aug 30 12:10:10 2019 *************** *** 0 **** --- 1,18 ---- + // PR c++/89403 + // { dg-do compile { target c++11 } } + // { dg-options "-Os -fsyntax-only" } + + template + struct A : T { + constexpr A() : T() { } + }; + + template + struct B { + A b; + constexpr B() { } + }; + + struct C { struct {} s; }; + constexpr B b{}; + constexpr C c = b.b; diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/rv-cond3.C gcc-7.5.0/gcc/testsuite/g++.dg/cpp0x/rv-cond3.C *** gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/rv-cond3.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/cpp0x/rv-cond3.C Fri Aug 30 11:16:55 2019 *************** *** 0 **** --- 1,22 ---- + // PR c++/88103 + // { dg-do compile { target c++11 } } + + struct A { + A (int); + A&& foo () &&; + int i; + }; + void free (A&&); + + void test_xvalue (A a){ + A&& ref = true ? static_cast (a) : static_cast (a); + free (true ? static_cast (a) : static_cast (a)); + (true ? static_cast (a) : static_cast (a)).foo (); + int&& k = (true ? static_cast (a) : static_cast (a)).i; + } + void test_prvalue (A a){ + A&& ref = true ? static_cast (a) : 1; + free (true ? static_cast (a) : 1); + (true ? static_cast (a) : 1).foo (); + int&& k = (true ? static_cast (a) : 1).i; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-init18.C gcc-7.5.0/gcc/testsuite/g++.dg/cpp1y/lambda-init18.C *** gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-init18.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/cpp1y/lambda-init18.C Fri Aug 30 12:29:13 2019 *************** *** 0 **** --- 1,12 ---- + // PR c++/89767 + // { dg-do compile { target c++14 } } + + void bar (int); + + void + foo () + { + int x = 0; + auto z = [x, y = [x] { bar (x); }] { y (); bar (x); }; + z (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-init19.C gcc-7.5.0/gcc/testsuite/g++.dg/cpp1y/lambda-init19.C *** gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-init19.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/cpp1y/lambda-init19.C Fri Aug 30 12:29:13 2019 *************** *** 0 **** --- 1,15 ---- + // PR c++/89767 + // { dg-do compile { target c++14 } } + + void bar (int); + + void + foo () + { + int x = 0; + int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0; + auto z = [x, y = [x] { bar (x); }, x] { y (); bar (x); }; // { dg-error "already captured 'x' in lambda expression" } + auto w = [x, a, b, c, d, y = [x] { bar (x); }, e, f, g, h, x] { y (); bar (x + a + b + c + d + e + f + g + h); }; // { dg-error "already captured 'x' in lambda expression" } + z (); + w (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr89767.C gcc-7.5.0/gcc/testsuite/g++.dg/cpp1y/pr89767.C *** gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr89767.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/cpp1y/pr89767.C Fri Aug 30 12:29:13 2019 *************** *** 0 **** --- 1,32 ---- + // PR c++/89767 + // { dg-do compile { target c++14 } } + // { dg-options "-O2 -Wall" } + + template struct e { using g = d; }; + template class> using h = e; + template class i> + using j = typename h::g; + template int k(c); + template class au; + struct l { template using m = typename c::f; }; + struct s : l { using af = j *, m>; }; + template struct o; + template using q = typename o::g; + template struct r; + template struct r { typedef c aj; }; + template struct al { typename r::aj operator*(); void operator++(); }; + template + bool operator!=(al, al); + template struct ap; + template + struct ap : ap<1, as...> {}; + template struct ap {}; + template class au : public ap<0, at...> {}; + template + struct o> : o

> {}; + template struct o<0, au> { typedef ar g; }; + template constexpr ar av(ap __t) { return ar (); } + template constexpr q> aw(au __t) { av

(__t); return q> (); } + struct bg { typedef s::af af; }; + struct F { typedef al bk; bk begin(); bk end(); }; + void bo() { int t = 0; F cv; for (auto bp : cv) [t, n = k(aw<1>(bp))] {}; } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/var-templ61.C gcc-7.5.0/gcc/testsuite/g++.dg/cpp1y/var-templ61.C *** gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/var-templ61.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/cpp1y/var-templ61.C Fri Aug 30 12:18:01 2019 *************** *** 0 **** --- 1,20 ---- + // PR c++/89512 + // { dg-do compile { target c++14 } } + + struct A { + template + static const int a = 0; + }; + + struct B { + template + static int foo () + { + return T::a; // { dg-error "missing template arguments" } + } + }; + + int bar () + { + return B::foo (); // { dg-message "required from here" } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp49.C gcc-7.5.0/gcc/testsuite/g++.dg/cpp1z/decomp49.C *** gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp49.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/cpp1z/decomp49.C Fri Aug 30 12:14:10 2019 *************** *** 0 **** --- 1,14 ---- + // PR c++/82075 + // { dg-do run { target c++11 } } + // { dg-options "" } + + struct B { }; + struct D : B { int i; }; + + int + main () + { + auto [i] = D{}; // { dg-warning "only available with" "" { target c++14_down } } + if (i != 0) + __builtin_abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/debug/dwarf2/pr85550.C gcc-7.5.0/gcc/testsuite/g++.dg/debug/dwarf2/pr85550.C *** gcc-7.4.0/gcc/testsuite/g++.dg/debug/dwarf2/pr85550.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/debug/dwarf2/pr85550.C Fri Aug 30 11:15:39 2019 *************** *** 0 **** --- 1,17 ---- + // PR debug/85550 + // { dg-do link } + // { dg-options "-O2 -g -fdebug-types-section" } + + struct A { + int bar () const { return 0; } + }; + template + struct B { + }; + + B<&A::bar> b; + + int + main () + { + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C gcc-7.5.0/gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C *** gcc-7.4.0/gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C Thu Oct 24 09:38:56 2019 *************** *** 0 **** --- 1,12 ---- + // { dg-do compile } + // { dg-require-effective-target c++11 } + // { dg-options "-g -fdebug-types-section" } + class A { + public: + A(); + template A(U); + }; + template struct B { typedef A type; }; + template + int Bind(R(Args...), typename B::type...) { return 0; } + void KeepBufferRefs(A, A) { A a, b(Bind(KeepBufferRefs, a, b)); } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/debug/pr88181.C gcc-7.5.0/gcc/testsuite/g++.dg/debug/pr88181.C *** gcc-7.4.0/gcc/testsuite/g++.dg/debug/pr88181.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/debug/pr88181.C Fri Aug 30 11:14:56 2019 *************** *** 0 **** --- 1,29 ---- + // PR c++/88181 + // { dg-do compile } + // { dg-options "-fpack-struct -g -std=c++11" } + + template struct A { typedef T B; }; + template class C; + template struct D { constexpr D (e) {} }; + template struct E; + template + struct E : E<1, U...>, D { + constexpr E (T x, U... y) : E<1, U...>(y...), D(x) {} + }; + template struct E : D { + constexpr E (T x) : D(x) {} + }; + template struct C : E<0, T, U> { + constexpr C (T x, U y) : E<0, T, U>(x, y) {} + void operator= (typename A::B); + }; + struct F {}; + struct G {}; + + int + main () + { + F f; + G g; + constexpr C c(f, g); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/ext/alignof2.C gcc-7.5.0/gcc/testsuite/g++.dg/ext/alignof2.C *** gcc-7.4.0/gcc/testsuite/g++.dg/ext/alignof2.C Thu Nov 27 00:56:34 2014 --- gcc-7.5.0/gcc/testsuite/g++.dg/ext/alignof2.C Fri Sep 6 16:03:42 2019 *************** *** 3,9 **** // wrong for some fields. // { dg-do run } ! // { dg-xfail-run-if "AIX ABI increases struct alignment for first member double" { powerpc-ibm-aix* } { "*" } { "" } } extern "C" void abort(); --- 3,9 ---- // wrong for some fields. // { dg-do run } ! // { dg-xfail-run-if "AIX/Darwin ABI increases struct alignment for first member double" { powerpc-ibm-aix* || { ilp32 && powerpc-*-darwin* } } } extern "C" void abort(); diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/ext/asm15.C gcc-7.5.0/gcc/testsuite/g++.dg/ext/asm15.C *** gcc-7.4.0/gcc/testsuite/g++.dg/ext/asm15.C Fri Jun 22 21:20:53 2018 --- gcc-7.5.0/gcc/testsuite/g++.dg/ext/asm15.C Fri Aug 30 12:27:21 2019 *************** struct S { S (); ~S (); int s; }; *** 6,10 **** void foo (S &s) { ! __asm volatile ("" : "+r" (s) : : "memory"); // { dg-error "" } } --- 6,11 ---- void foo (S &s) { ! __asm volatile ("" : "+r" (s) : : "memory"); // { dg-error "impossible constraint" } ! // { dg-error "must stay in memory" "" { target *-*-* } .-1 } } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/ext/asm16.C gcc-7.5.0/gcc/testsuite/g++.dg/ext/asm16.C *** gcc-7.4.0/gcc/testsuite/g++.dg/ext/asm16.C Fri Jun 22 21:20:53 2018 --- gcc-7.5.0/gcc/testsuite/g++.dg/ext/asm16.C Fri Aug 30 12:27:21 2019 *************** struct S { S (); ~S (); int s[64]; } s; *** 6,10 **** void foo () { ! __asm volatile ("" : "=r" (s) : : "memory"); // { dg-error "" } } --- 6,11 ---- void foo () { ! __asm volatile ("" : "=r" (s) : : "memory"); // { dg-error "impossible constraint" } ! // { dg-error "must stay in memory" "" { target *-*-* } .-1 } } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/ext/asm17.C gcc-7.5.0/gcc/testsuite/g++.dg/ext/asm17.C *** gcc-7.4.0/gcc/testsuite/g++.dg/ext/asm17.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/ext/asm17.C Fri Aug 30 12:27:21 2019 *************** *** 0 **** --- 1,11 ---- + // PR target/89752 + // { dg-do compile } + + struct A { A (); ~A (); short c; }; + + void + foo () + { + A a0, a1; + __asm volatile ("" : "+rm" (a0), "+rm" (a1)); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/ext/flexary34.C gcc-7.5.0/gcc/testsuite/g++.dg/ext/flexary34.C *** gcc-7.4.0/gcc/testsuite/g++.dg/ext/flexary34.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/ext/flexary34.C Fri Aug 30 12:13:40 2019 *************** *** 0 **** --- 1,10 ---- + // PR c++/87148 + // { dg-do compile } + // { dg-options "-pedantic" } + + struct Tst { int i; char t[]; }; // { dg-warning "forbids flexible array member" } + + Tst t {}; // { dg-warning "extended initializer lists only available with" "" { target c++98_only } } + Tst u = Tst(); + void foo () { Tst u = {}; } + Tst *bar () { return new Tst (); } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/ext/instantiate2.C gcc-7.5.0/gcc/testsuite/g++.dg/ext/instantiate2.C *** gcc-7.4.0/gcc/testsuite/g++.dg/ext/instantiate2.C Mon Nov 29 14:58:16 2010 --- gcc-7.5.0/gcc/testsuite/g++.dg/ext/instantiate2.C Tue Jun 4 19:08:03 2019 *************** template struct A { *** 8,15 **** template T A::t = 0; static template struct A; ! // { dg-final { scan-assembler "\n_?_ZN1AIiE1tE(:|\n|\t)" { target { ! *-*-darwin* } } } } ! // { dg-final { scan-assembler ".zerofill __DATA,__pu_bss2,__ZN1AIiE1tE" { target *-*-darwin* } } } void test_int() { A::t = 42; } // { dg-final { scan-assembler-not "\n_?_ZN1AIcE1tE(:|\n|\t)" } } --- 8,14 ---- template T A::t = 0; static template struct A; ! // { dg-final { scan-assembler "\n_?_ZN1AIiE1tE(:|\n|\t)" } } void test_int() { A::t = 42; } // { dg-final { scan-assembler-not "\n_?_ZN1AIcE1tE(:|\n|\t)" } } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/ext/sync-4.C gcc-7.5.0/gcc/testsuite/g++.dg/ext/sync-4.C *** gcc-7.4.0/gcc/testsuite/g++.dg/ext/sync-4.C Thu Apr 30 20:22:51 2015 --- gcc-7.5.0/gcc/testsuite/g++.dg/ext/sync-4.C Sat Jan 5 12:44:12 2019 *************** *** 1,4 **** --- 1,6 ---- /* { dg-do run { target hppa*-*-hpux* *-*-linux* *-*-gnu* powerpc*-*-darwin* *-*-darwin[912]* } } */ + /* FIXME The following additional option should be removed after the fix for radr://19802258. + /* { dg-xfail-run-if "PR60563 radr://19802258" { *-*-darwin* } } */ /* { dg-require-effective-target sync_long_long_runtime } */ /* { dg-options "-fexceptions -fnon-call-exceptions -O2" } */ /* { dg-additional-options "-march=pentium" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/ext/vector36.C gcc-7.5.0/gcc/testsuite/g++.dg/ext/vector36.C *** gcc-7.4.0/gcc/testsuite/g++.dg/ext/vector36.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/ext/vector36.C Fri Aug 30 11:37:41 2019 *************** *** 0 **** --- 1,6 ---- + // PR target/89186 + // { dg-do compile } + // { dg-options "-fnon-call-exceptions" } + // { dg-additional-options "-mno-sse" { target i?86-*-* x86_64-*-* } } + + #include "vector27.C" diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/gcov/pr16855.C gcc-7.5.0/gcc/testsuite/g++.dg/gcov/pr16855.C *** gcc-7.4.0/gcc/testsuite/g++.dg/gcov/pr16855.C Fri Nov 25 14:23:25 2016 --- gcc-7.5.0/gcc/testsuite/g++.dg/gcov/pr16855.C Mon Sep 9 20:27:05 2019 *************** *** 1,6 **** --- 1,8 ---- /* { dg-options "-fprofile-arcs -ftest-coverage" } */ /* { dg-do run { target native } } */ + /* See PR91087 for information on Darwin xfails. */ + #include #include *************** class Test *** 18,24 **** { public: Test (void) { fprintf (stderr, "In Test::Test\n"); /* count(1) */ } ! ~Test (void) { fprintf (stderr, "In Test::~Test\n"); /* count(1) */ } } T1; void --- 20,28 ---- { public: Test (void) { fprintf (stderr, "In Test::Test\n"); /* count(1) */ } ! ~Test (void) { ! fprintf (stderr, "In Test::~Test\n"); /* count(1) { xfail *-*-darwin* } */ ! } } T1; void *************** static void __attribute__ ((constructor) *** 42,48 **** static void __attribute__ ((destructor)) dtor_default () { ! fprintf (stderr, "in destructor(())\n"); /* count(1) */ } ! /* { dg-final { run-gcov branches { -b pr16855.C } } } */ --- 46,52 ---- static void __attribute__ ((destructor)) dtor_default () { ! fprintf (stderr, "in destructor(())\n"); /* count(1) { xfail *-*-darwin* } */ } ! /* { dg-final { run-gcov branches { -b pr16855.C } { xfail *-*-darwin* } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/gomp/cancel-1.C gcc-7.5.0/gcc/testsuite/g++.dg/gomp/cancel-1.C *** gcc-7.4.0/gcc/testsuite/g++.dg/gomp/cancel-1.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/gomp/cancel-1.C Fri Aug 30 11:31:02 2019 *************** *** 0 **** --- 1,26 ---- + // PR c++/88976 + // { dg-do compile } + + template void + foo (T x) + { + #pragma omp parallel + { + #pragma omp cancel parallel if (x) + } + #pragma omp parallel + { + #pragma omp cancel parallel if (1 == 1) + } + } + + void + bar (int x, double y, long long z) + { + foo (0); + foo (1LL); + foo (1.25); + foo (x); + foo (y); + foo (z); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/gomp/cancel-2.C gcc-7.5.0/gcc/testsuite/g++.dg/gomp/cancel-2.C *** gcc-7.4.0/gcc/testsuite/g++.dg/gomp/cancel-2.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/gomp/cancel-2.C Fri Aug 30 11:31:02 2019 *************** *** 0 **** --- 1,20 ---- + // PR c++/88976 + // { dg-do compile } + + template void + foo (T x) + { + #pragma omp parallel + { + #pragma omp cancel parallel if (x) // { dg-error "no match for" } + } + } + + struct S {}; + + void + bar () + { + S s; + foo (s); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/gomp/cancel-3.C gcc-7.5.0/gcc/testsuite/g++.dg/gomp/cancel-3.C *** gcc-7.4.0/gcc/testsuite/g++.dg/gomp/cancel-3.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/gomp/cancel-3.C Fri Aug 30 11:31:02 2019 *************** *** 0 **** --- 1,12 ---- + // { dg-do compile } + + struct S { int s; } s; + + void + foo (void) + { + #pragma omp parallel + { + #pragma omp cancel parallel if (s) // { dg-error "could not convert 's' from 'S' to 'bool'" } + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/gomp/lastprivate-1.C gcc-7.5.0/gcc/testsuite/g++.dg/gomp/lastprivate-1.C *** gcc-7.4.0/gcc/testsuite/g++.dg/gomp/lastprivate-1.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/gomp/lastprivate-1.C Fri Aug 30 12:46:52 2019 *************** *** 0 **** --- 1,16 ---- + // PR c++/90950 + // { dg-do compile } + + template + T + foo (void) + { + T y = 0; + T &x = y; + #pragma omp parallel for lastprivate (x) + for (int i = 0; i < 8; ++i) + x = i; + return x; + } + + int a = foo (); diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/gomp/pr88949.C gcc-7.5.0/gcc/testsuite/g++.dg/gomp/pr88949.C *** gcc-7.4.0/gcc/testsuite/g++.dg/gomp/pr88949.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/gomp/pr88949.C Fri Aug 30 11:29:04 2019 *************** *** 0 **** --- 1,23 ---- + // PR c++/88949 + // { dg-do compile } + + struct A { + int a; + A (int x) : a (x) { + #pragma omp parallel firstprivate (a) + --a; + } + void foo () { + #pragma omp parallel firstprivate (a) + --a; + } + }; + + int c; + + int + main () + { + A d(c); + d.foo (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/gomp/pr89796.C gcc-7.5.0/gcc/testsuite/g++.dg/gomp/pr89796.C *** gcc-7.4.0/gcc/testsuite/g++.dg/gomp/pr89796.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/gomp/pr89796.C Fri Aug 30 12:32:15 2019 *************** *** 0 **** --- 1,53 ---- + // PR c++/89796 + // { dg-do compile } + // { dg-additional-options "-Wunused-value" } + + int + f1 (int &c) + { + int r; + #pragma omp atomic capture // { dg-bogus "value computed is not used" } + { r = c; c++; } + return r; + } + + template + int + f2 (int &c) + { + int r; + #pragma omp atomic capture // { dg-bogus "value computed is not used" } + { r = c; c++; } + return r; + } + + int + f3 (int &c) + { + return f2 <0> (c); + } + + int + f4 (int *p) + { + int r; + #pragma omp atomic capture // { dg-bogus "value computed is not used" } + { r = *p; (*p)++; } + return r; + } + + template + int + f5 (int *p) + { + int r; + #pragma omp atomic capture // { dg-bogus "value computed is not used" } + { r = *p; (*p)++; } + return r; + } + + int + f6 (int *p) + { + return f5 <0> (p); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/ipa/pr89009.C gcc-7.5.0/gcc/testsuite/g++.dg/ipa/pr89009.C *** gcc-7.4.0/gcc/testsuite/g++.dg/ipa/pr89009.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/ipa/pr89009.C Tue May 28 11:55:05 2019 *************** *** 0 **** --- 1,14 ---- + /* PR ipa/89009 */ + /* { dg-do run } */ + /* { dg-require-effective-target fpic } */ + /* { dg-options "-fpic -O2 -fno-inline" } */ + /* { dg-require-visibility "" } */ + + void foo1() { __builtin_printf ("foo\n"); } + #pragma GCC visibility push(hidden) + void foo2() { __builtin_printf ("foo\n"); } + #pragma GCC visibility pop + + int main() { foo2(); return 0; } + + /* { dg-output "foo" } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/lookup/pr60994.C gcc-7.5.0/gcc/testsuite/g++.dg/lookup/pr60994.C *** gcc-7.4.0/gcc/testsuite/g++.dg/lookup/pr60994.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/lookup/pr60994.C Fri Aug 30 11:09:57 2019 *************** *** 0 **** --- 1,13 ---- + // PR c++/60994 + // { dg-do compile } + + struct s + { + static int i; + }; + + template + int s() + { + return s::i; // { dg-bogus "is not a class" } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr84272.C gcc-7.5.0/gcc/testsuite/g++.dg/opt/pr84272.C *** gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr84272.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/opt/pr84272.C Thu Mar 14 09:18:07 2019 *************** *** 0 **** --- 1,23 ---- + // PR target/84272 + // { dg-do compile } + // { dg-options "-O2" } + // { dg-additional-options "-march=armv8-a -mtune=cortex-a57" { target aarch64-*-* } } + + struct A + { + float b, c; + A (); + A (float, float, float); + float operator * (A) + { + float d = b * b + c * c; + return d; + } + }; + + void + foo () + { + A g[1]; + A h (0, 0, h * g[2]); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr89187.C gcc-7.5.0/gcc/testsuite/g++.dg/opt/pr89187.C *** gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr89187.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/opt/pr89187.C Fri Aug 30 11:43:53 2019 *************** *** 0 **** --- 1,23 ---- + // PR c++/89187 + // { dg-do compile { target c++11 } } + // { dg-options "-Os -fno-tree-ccp -fno-tree-sra -fno-inline" } + + template struct A { + typedef T __attribute__((vector_size (N))) type; + }; + template using B = typename A::type; + template using C = B; + struct D { + D (C x) : d{x[3]} {} + D foo () { return d; } + C d; + }; + extern D d; + struct { D bar () { return d; } } l; + struct E { void baz () const; }; + + void + E::baz () const + { + l.bar ().foo (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr89188.C gcc-7.5.0/gcc/testsuite/g++.dg/opt/pr89188.C *** gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr89188.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/opt/pr89188.C Fri Aug 30 11:49:11 2019 *************** *** 0 **** --- 1,5 ---- + // PR target/89188 + // { dg-do compile { target c++11 } } + // { dg-options "-Og -flive-range-shrinkage -fnon-call-exceptions" } + + #include "../torture/pr88861.C" diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr90090.C gcc-7.5.0/gcc/testsuite/g++.dg/opt/pr90090.C *** gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr90090.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/opt/pr90090.C Fri Aug 30 12:36:49 2019 *************** *** 0 **** --- 1,19 ---- + // PR tree-optimization/90090 + // { dg-do compile } + // { dg-options "-Ofast -fno-associative-math -fsignaling-nans -fno-tree-dce -fnon-call-exceptions" } + + double bar (double, double, double, double, double); + double baz (); + + double + foo (double a) + { + try + { + return bar (1.0/a, 2.0/a, 4.0/a, 8.0/a, 16.0/a); + } + catch (...) + { + return baz (); + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr90187.C gcc-7.5.0/gcc/testsuite/g++.dg/opt/pr90187.C *** gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr90187.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/opt/pr90187.C Fri Aug 30 12:39:50 2019 *************** *** 0 **** --- 1,15 ---- + // PR target/90187 + // { dg-do compile } + // { dg-options "-Ofast -ffloat-store" } + + double a[64]; + double *foo (void); + + void + bar (int x, const double *y) + { + int i; + for (i = 0; i < x; i++) + if (y[i] < a[i]) + a[i] = y[i]; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/other/pr86669.C gcc-7.5.0/gcc/testsuite/g++.dg/other/pr86669.C *** gcc-7.4.0/gcc/testsuite/g++.dg/other/pr86669.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/other/pr86669.C Fri Aug 30 11:20:08 2019 *************** *** 0 **** --- 1,10 ---- + // PR c++/86669 + // { dg-do compile } + + struct S { S (); }; + struct T : public S {}; + + S::S () + { + int *p = { (int *) &p }; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/other/pr88568.C gcc-7.5.0/gcc/testsuite/g++.dg/other/pr88568.C *** gcc-7.4.0/gcc/testsuite/g++.dg/other/pr88568.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/other/pr88568.C Fri Aug 30 12:14:46 2019 *************** *** 0 **** --- 1,13 ---- + // PR c/88568 + // { dg-do compile } + // { dg-require-dll "" } + + struct S { + __attribute__((dllimport)) static const char foo[]; + }; + + int + foo (int x) + { + return S::foo[x]; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/pch/pr90326.C gcc-7.5.0/gcc/testsuite/g++.dg/pch/pr90326.C *** gcc-7.4.0/gcc/testsuite/g++.dg/pch/pr90326.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/pch/pr90326.C Fri Aug 30 12:45:01 2019 *************** *** 0 **** --- 1,9 ---- + #include "pr90326.H" + + int main() + { + float f = __FLT_MAX__; + if (f == 0.0) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/pch/pr90326.Hs gcc-7.5.0/gcc/testsuite/g++.dg/pch/pr90326.Hs *** gcc-7.4.0/gcc/testsuite/g++.dg/pch/pr90326.Hs Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/pch/pr90326.Hs Fri Aug 30 12:45:01 2019 *************** *** 0 **** --- 1 ---- + // empty diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/pr71694.C gcc-7.5.0/gcc/testsuite/g++.dg/pr71694.C *** gcc-7.4.0/gcc/testsuite/g++.dg/pr71694.C Fri Dec 16 09:40:03 2016 --- gcc-7.5.0/gcc/testsuite/g++.dg/pr71694.C Tue Sep 17 11:48:24 2019 *************** *** 1,5 **** --- 1,6 ---- /* { dg-do compile } */ /* { dg-options "-O2" } */ + /* { dg-additional-options "-fno-common -mdynamic-no-pic" { target { ia32 && { x86_64-*-darwin* i?86-*-darwin* } } } } */ struct B { B() {} diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/pr88998.C gcc-7.5.0/gcc/testsuite/g++.dg/pr88998.C *** gcc-7.4.0/gcc/testsuite/g++.dg/pr88998.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/pr88998.C Thu Jan 24 19:14:58 2019 *************** *** 0 **** --- 1,31 ---- + // PR target/88998 + // { dg-do run { target { { x86_64-*-* i?86-*-* } && sse2_runtime } } } + // { dg-options "-O2 -msse2 -mfpmath=387" } + // { dg-require-effective-target c++11 } + + #include + #include + #include + + double + __attribute__((noinline)) + prepare (int a, int b) + { + __m128i is = _mm_setr_epi32 (a, b, 0, 0); + __m128d ds = _mm_cvtepi32_pd (is); + return ds[0] + ds[1]; + } + + int + main (int, char **) + { + double d = prepare (1, 2); + + std::unordered_map < int, int >m; + m.insert ({0, 0}); + m.insert ({1, 1}); + assert (m.load_factor () <= m.max_load_factor ()); + + assert (d == 3.0); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/pr77285-2.C gcc-7.5.0/gcc/testsuite/g++.dg/tls/pr77285-2.C *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/pr77285-2.C Fri Nov 18 21:56:50 2016 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/pr77285-2.C Sun Nov 3 08:23:33 2019 *************** *** 3,9 **** // { dg-require-effective-target tls } // { dg-final { scan-assembler "_Z4var1B3tag" } } // { dg-final { scan-assembler "_Z4var2B3tag" } } ! // { dg-final { scan-assembler "_ZTH4var1B3tag" } } // { dg-final { scan-assembler "_ZTW4var1B3tag" } } struct __attribute__((abi_tag("tag"))) X { ~X () {} int i = 0; }; --- 3,9 ---- // { dg-require-effective-target tls } // { dg-final { scan-assembler "_Z4var1B3tag" } } // { dg-final { scan-assembler "_Z4var2B3tag" } } ! // { dg-final { scan-assembler "_ZTH4var1B3tag" { xfail *-*-darwin* } } } // { dg-final { scan-assembler "_ZTW4var1B3tag" } } struct __attribute__((abi_tag("tag"))) X { ~X () {} int i = 0; }; diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local11.C gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local11.C *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local11.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local11.C Fri Aug 30 12:31:21 2019 *************** *** 0 **** --- 1,36 ---- + // PR c++/60702 + // { dg-do compile { target c++11 } } + // { dg-add-options tls } + // { dg-require-effective-target tls_runtime } + // { dg-additional-options "-fdump-tree-gimple" } + // { dg-final { scan-tree-dump-times "_ZTW2s1" 2 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTW2s2" 2 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTW2s3" 2 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTW2s4" 2 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTWN1T2u1E" 2 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTWN1T2u2E" 2 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTWN1T2u3E" 2 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTWN1T2u4E" 2 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTWN1T2u5E" 2 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTWN1T2u6E" 2 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTWN1T2u7E" 2 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTWN1T2u8E" 2 "gimple" } } + + #include "thread_local11.h" + + void + foo () + { + f1 (); + f2 (); + f3 (); + f4 (); + f5 (); + f6 (); + f7<0> (); + f8<0> (); + f9<0> (); + f10<0> (); + f11<0> (); + f12<0> (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local11.h gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local11.h *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local11.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local11.h Fri Aug 30 12:30:48 2019 *************** *** 0 **** --- 1,26 ---- + // PR c++/60702 + + extern "C" void abort (); + struct S { S () { i = 42; }; int i; }; + thread_local S s1, s2, s3, s4; + struct T { static thread_local S u1, u2, u3, u4, u5, u6, u7, u8; int i; } t; + thread_local S T::u1, T::u2, T::u3, T::u4, T::u5, T::u6, T::u7, T::u8; + + S *f1 () { return &s1; } + int *f2 () { return &s2.i; } + S *f3 () { return &t.u1; } + int *f4 () { return &t.u2.i; } + S *f5 () { return &T::u3; } + int *f6 () { return &T::u4.i; } + template + S *f7 () { return &s3; } + template + int *f8 () { return &s4.i; } + template + S *f9 () { return &t.u5; } + template + int *f10 () { return &t.u6.i; } + template + S *f11 () { return &T::u7; } + template + int *f12 () { return &T::u8.i; } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local11a.C gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local11a.C *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local11a.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local11a.C Fri Aug 30 12:31:21 2019 *************** *** 0 **** --- 1,20 ---- + // PR c++/60702 + // { dg-do compile { target c++11 } } + // { dg-add-options tls } + // { dg-require-alias "" } + // { dg-require-effective-target tls_runtime } + // { dg-additional-options "-fdump-tree-gimple" } + // { dg-final { scan-tree-dump-times "_ZTH2s1" 1 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTH2s2" 1 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTH2s3" 1 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTH2s4" 1 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTHN1T2u1E" 1 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTHN1T2u2E" 1 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTHN1T2u3E" 1 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTHN1T2u4E" 1 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTHN1T2u5E" 1 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTHN1T2u6E" 1 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTHN1T2u7E" 1 "gimple" } } + // { dg-final { scan-tree-dump-times "_ZTHN1T2u8E" 1 "gimple" } } + + #include "thread_local11.C" diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12a.C gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12a.C *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12a.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12a.C Fri Aug 30 12:30:48 2019 *************** *** 0 **** --- 1,12 ---- + // PR c++/60702 + // { dg-do run { target c++11 } } + // { dg-add-options tls } + // { dg-require-effective-target tls_runtime } + + #include "thread_local11.h" + + int + main () + { + if (f1 ()->i != 42) abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12b.C gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12b.C *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12b.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12b.C Fri Aug 30 12:30:48 2019 *************** *** 0 **** --- 1,12 ---- + // PR c++/60702 + // { dg-do run { target c++11 } } + // { dg-add-options tls } + // { dg-require-effective-target tls_runtime } + + #include "thread_local11.h" + + int + main () + { + if (*f2 () != 42) abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12c.C gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12c.C *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12c.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12c.C Fri Aug 30 12:30:48 2019 *************** *** 0 **** --- 1,12 ---- + // PR c++/60702 + // { dg-do run { target c++11 } } + // { dg-add-options tls } + // { dg-require-effective-target tls_runtime } + + #include "thread_local11.h" + + int + main () + { + if (f3 ()->i != 42) abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12d.C gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12d.C *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12d.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12d.C Fri Aug 30 12:30:48 2019 *************** *** 0 **** --- 1,12 ---- + // PR c++/60702 + // { dg-do run { target c++11 } } + // { dg-add-options tls } + // { dg-require-effective-target tls_runtime } + + #include "thread_local11.h" + + int + main () + { + if (*f4 () != 42) abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12e.C gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12e.C *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12e.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12e.C Fri Aug 30 12:30:48 2019 *************** *** 0 **** --- 1,12 ---- + // PR c++/60702 + // { dg-do run { target c++11 } } + // { dg-add-options tls } + // { dg-require-effective-target tls_runtime } + + #include "thread_local11.h" + + int + main () + { + if (f5 ()->i != 42) abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12f.C gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12f.C *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12f.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12f.C Fri Aug 30 12:30:48 2019 *************** *** 0 **** --- 1,12 ---- + // PR c++/60702 + // { dg-do run { target c++11 } } + // { dg-add-options tls } + // { dg-require-effective-target tls_runtime } + + #include "thread_local11.h" + + int + main () + { + if (*f6 () != 42) abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12g.C gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12g.C *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12g.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12g.C Fri Aug 30 12:30:48 2019 *************** *** 0 **** --- 1,12 ---- + // PR c++/60702 + // { dg-do run { target c++11 } } + // { dg-add-options tls } + // { dg-require-effective-target tls_runtime } + + #include "thread_local11.h" + + int + main () + { + if (f7<0> ()->i != 42) abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12h.C gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12h.C *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12h.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12h.C Fri Aug 30 12:30:48 2019 *************** *** 0 **** --- 1,12 ---- + // PR c++/60702 + // { dg-do run { target c++11 } } + // { dg-add-options tls } + // { dg-require-effective-target tls_runtime } + + #include "thread_local11.h" + + int + main () + { + if (*f8<0> () != 42) abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12i.C gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12i.C *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12i.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12i.C Fri Aug 30 12:30:48 2019 *************** *** 0 **** --- 1,12 ---- + // PR c++/60702 + // { dg-do run { target c++11 } } + // { dg-add-options tls } + // { dg-require-effective-target tls_runtime } + + #include "thread_local11.h" + + int + main () + { + if (f9<0> ()->i != 42) abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12j.C gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12j.C *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12j.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12j.C Fri Aug 30 12:30:48 2019 *************** *** 0 **** --- 1,12 ---- + // PR c++/60702 + // { dg-do run { target c++11 } } + // { dg-add-options tls } + // { dg-require-effective-target tls_runtime } + + #include "thread_local11.h" + + int + main () + { + if (*f10<0> () != 42) abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12k.C gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12k.C *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12k.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12k.C Fri Aug 30 12:30:48 2019 *************** *** 0 **** --- 1,12 ---- + // PR c++/60702 + // { dg-do run { target c++11 } } + // { dg-add-options tls } + // { dg-require-effective-target tls_runtime } + + #include "thread_local11.h" + + int + main () + { + if (f11<0> ()->i != 42) abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12l.C gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12l.C *** gcc-7.4.0/gcc/testsuite/g++.dg/tls/thread_local12l.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/tls/thread_local12l.C Fri Aug 30 12:30:48 2019 *************** *** 0 **** --- 1,12 ---- + // PR c++/60702 + // { dg-do run { target c++11 } } + // { dg-add-options tls } + // { dg-require-effective-target tls_runtime } + + #include "thread_local11.h" + + int + main () + { + if (*f12<0> () != 42) abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr44295.C gcc-7.5.0/gcc/testsuite/g++.dg/torture/pr44295.C *** gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr44295.C Wed Jun 2 21:17:50 2010 --- gcc-7.5.0/gcc/testsuite/g++.dg/torture/pr44295.C Mon Dec 24 12:42:16 2018 *************** *** 1,4 **** --- 1,6 ---- /* { dg-do compile } */ + /* { dg-skip-if "no pthread_barrier" { *-*-darwin* } } */ + extern "C" { typedef __SIZE_TYPE__ size_t; typedef struct { diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr88149.C gcc-7.5.0/gcc/testsuite/g++.dg/torture/pr88149.C *** gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr88149.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/torture/pr88149.C Wed Sep 4 10:51:02 2019 *************** *** 0 **** --- 1,63 ---- + // { dg-do compile } + // { dg-additional-options "-ftree-vectorize" } + + template struct a; + template struct a { + typedef long c; + typedef b &d; + }; + template class f { + e ab; + typedef a ac; + + public: + typename ac::d operator[](typename ac::c o) { return ab[o]; } + }; + template struct au; + template au operator+(au o, au p2) { + au ax = o; + ax += p2; + return ax; + } + template au operator-(au o, au p2) { + au ax = o; + ax -= p2; + return ax; + } + template au operator*(au, au &p2) { + au ax; + ax *= p2; + return ax; + } + template <> struct au { + double p() { return __real__ az; } + double q() { return __imag__ az; } + void operator+=(au o) { + az += o.p(); + __imag__ az += o.q(); + } + void operator-=(au o) { + az -= o.p(); + __imag__ az -= o.q(); + } + void operator*=(au &o) { + _Complex bd = o.p(); + __imag__ bd = o.q(); + az *= bd; + } + _Complex az; + }; + long bm, m; + f *> g; + au h, i, l; + void bn() { + au bq; + for (long k; m;) { + au br; + for (long j = 0; j < bm; ++j) { + au n = br * h; + i = l + n; + g[k] = l - bq; + } + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr88861.C gcc-7.5.0/gcc/testsuite/g++.dg/torture/pr88861.C *** gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr88861.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/torture/pr88861.C Fri Aug 30 11:49:11 2019 *************** *** 0 **** --- 1,11 ---- + // { dg-options "-fnon-call-exceptions" } + + struct Ax { + int n, a[]; + }; + + int i = 12345678; + int main() { + static Ax s{456, i}; + ((s.a[0]) ? (void)0 : (void)0); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr89303.C gcc-7.5.0/gcc/testsuite/g++.dg/torture/pr89303.C *** gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr89303.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/torture/pr89303.C Fri Aug 30 12:02:30 2019 *************** *** 0 **** --- 1,792 ---- + // PR middle-end/89303 + // { dg-do run } + // { dg-additional-options "-std=c++14" } + + namespace my + { + typedef __SIZE_TYPE__ size_t; + typedef decltype(nullptr) nullptr_t; + + template + struct integral_constant + { + static constexpr _Tp value = __v; + typedef _Tp value_type; + typedef integral_constant<_Tp, __v> type; + constexpr operator value_type() const noexcept { return value; } + constexpr value_type operator()() const noexcept { return value; } + }; + + template + constexpr _Tp integral_constant<_Tp, __v>::value; + + typedef integral_constant true_type; + typedef integral_constant false_type; + + template + using __bool_constant = integral_constant; + + template + struct conditional; + + template + struct __and_; + + template<> + struct __and_<> + : public true_type + { }; + + template + struct __and_<_B1> + : public _B1 + { }; + + template + struct __and_<_B1, _B2> + : public conditional<_B1::value, _B2, _B1>::type + { }; + + template + struct __and_<_B1, _B2, _B3, _Bn...> + : public conditional<_B1::value, __and_<_B2, _B3, _Bn...>, _B1>::type + { }; + + template + struct remove_cv; + + template + struct __is_void_helper + : public false_type { }; + + template<> + struct __is_void_helper + : public true_type { }; + + template + struct is_void + : public __is_void_helper::type>::type + { }; + + template + _Up + __declval(int); + + template + _Tp + __declval(long); + + template + auto declval() noexcept -> decltype(__declval<_Tp>(0)); + + template + struct is_same + : public false_type { }; + + template + struct is_same<_Tp, _Tp> + : public true_type { }; + + template + struct remove_const + { typedef _Tp type; }; + + template + struct remove_const<_Tp const> + { typedef _Tp type; }; + + template + struct remove_volatile + { typedef _Tp type; }; + + template + struct remove_volatile<_Tp volatile> + { typedef _Tp type; }; + + template + struct remove_cv + { + typedef typename + remove_const::type>::type type; + }; + + template + struct remove_reference + { typedef _Tp type; }; + + template + struct remove_reference<_Tp&> + { typedef _Tp type; }; + + template + struct remove_reference<_Tp&&> + { typedef _Tp type; }; + + template + struct enable_if + { }; + + template + struct enable_if + { typedef _Tp type; }; + + template + using _Require = typename enable_if<__and_<_Cond...>::value>::type; + + template + struct conditional + { typedef _Iftrue type; }; + + template + struct conditional + { typedef _Iffalse type; }; + + template + struct __declval_protector + { + static const bool __stop = false; + }; + + template + auto declval() noexcept -> decltype(__declval<_Tp>(0)) + { + static_assert(__declval_protector<_Tp>::__stop, + "declval() must not be used!"); + return __declval<_Tp>(0); + } + + namespace void_details { + template + struct make_void { using type = void; }; + } + + template using __void_t = typename void_details ::make_void::type; + + template + inline constexpr _Tp* + __addressof(_Tp& __r) noexcept + { + return reinterpret_cast<_Tp*> + (&const_cast(reinterpret_cast(__r))); + } + + template + constexpr _Tp&& + forward(typename my::remove_reference<_Tp>::type& __t) noexcept + { return static_cast<_Tp&&>(__t); } + + template + constexpr _Tp&& + forward(typename my::remove_reference<_Tp>::type&& __t) noexcept + { + return static_cast<_Tp&&>(__t); + } + + template + constexpr typename my::remove_reference<_Tp>::type&& + move(_Tp&& __t) noexcept + { return static_cast::type&&>(__t); } + } + + inline void* operator new(my::size_t, void* p) { return p; } + + extern "C" void* malloc(my::size_t); + extern "C" void free(void*); + + namespace my + { + template + class allocator + { + public: + using value_type = T; + + allocator() { } + + template + allocator(const allocator&) { } + + T* allocate(size_t n) { return (T*)malloc(n*sizeof(T)); } + void deallocate(T* p, size_t) { free(p); } + + template + void construct(U* p, Args&&... args) + { ::new((void*)p) U(args...); } + + template + void destroy(U* p) + { p->~U(); } + }; + + class __undefined; + + template + struct __replace_first_arg + { }; + + template class _Template, typename _Up, + typename _Tp, typename... _Types> + struct __replace_first_arg<_Template<_Tp, _Types...>, _Up> + { using type = _Template<_Up, _Types...>; }; + + struct __allocator_traits_base + { + template + struct __rebind : __replace_first_arg<_Tp, _Up> { }; + + template + struct __rebind<_Tp, _Up, + __void_t::other>> + { using type = typename _Tp::template rebind<_Up>::other; }; + }; + + template + using __alloc_rebind + = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type; + + template + struct allocator_traits; + + template + struct allocator_traits> + { + using allocator_type = allocator<_Tp>; + using value_type = _Tp; + using pointer = _Tp*; + using const_pointer = const _Tp*; + using size_type = my::size_t; + + static pointer + allocate(allocator_type& __a, size_type __n) + { return __a.allocate(__n); } + + static void + deallocate(allocator_type& __a, pointer __p, size_type __n) + { __a.deallocate(__p, __n); } + + template + static void + construct(allocator_type& __a, _Up* __p, _Args&&... __args) + { __a.construct(__p, my::forward<_Args>(__args)...); } + + template + static void + destroy(allocator_type& __a, _Up* __p) + { __a.destroy(__p); } + }; + + template + struct __allocated_ptr + { + using pointer = typename allocator_traits<_Alloc>::pointer; + using value_type = typename allocator_traits<_Alloc>::value_type; + + __allocated_ptr(_Alloc& __a, pointer __ptr) noexcept + : _M_alloc(my::__addressof(__a)), _M_ptr(__ptr) + { } + + template>> + __allocated_ptr(_Alloc& __a, _Ptr __ptr) + : _M_alloc(my::__addressof(__a)), + _M_ptr(__ptr) + { } + + __allocated_ptr(__allocated_ptr&& __gd) noexcept + : _M_alloc(__gd._M_alloc), _M_ptr(__gd._M_ptr) + { __gd._M_ptr = nullptr; } + + ~__allocated_ptr() + { + if (_M_ptr != nullptr) + my::allocator_traits<_Alloc>::deallocate(*_M_alloc, _M_ptr, 1); + } + + __allocated_ptr& + operator=(my::nullptr_t) noexcept + { + _M_ptr = nullptr; + return *this; + } + + value_type* get() { return _M_ptr; } + + private: + _Alloc* _M_alloc; + pointer _M_ptr; + }; + + template + __allocated_ptr<_Alloc> + __allocate_guarded(_Alloc& __a) + { + return { __a, my::allocator_traits<_Alloc>::allocate(__a, 1) }; + } + + template + struct __aligned_buffer + { + alignas(__alignof__(_Tp)) unsigned char _M_storage[sizeof(_Tp)]; + __aligned_buffer() = default; + + void* + _M_addr() noexcept + { + return static_cast(&_M_storage); + } + + const void* + _M_addr() const noexcept + { + return static_cast(&_M_storage); + } + + _Tp* + _M_ptr() noexcept + { return static_cast<_Tp*>(_M_addr()); } + + const _Tp* + _M_ptr() const noexcept + { return static_cast(_M_addr()); } + }; + + class bad_weak_ptr { }; + + inline void + __throw_bad_weak_ptr() + { (throw (bad_weak_ptr())); } + + class _Sp_counted_base + { + public: + _Sp_counted_base() noexcept + : _M_use_count(1), _M_weak_count(1) { } + + virtual + ~_Sp_counted_base() noexcept + { } + + virtual void + _M_dispose() noexcept = 0; + + virtual void + _M_destroy() noexcept + { delete this; } + + void + _M_add_ref_copy() + { ++_M_use_count; } + + void + _M_add_ref_lock() + { + if (_M_use_count == 0) + __throw_bad_weak_ptr(); + ++_M_use_count; + } + + void + _M_release() noexcept + { + if (--_M_use_count == 0) + { + _M_dispose(); + if (--_M_weak_count == 0) + _M_destroy(); + } + } + + void + _M_weak_add_ref() noexcept + { ++_M_weak_count; } + + void + _M_weak_release() noexcept + { + if (--_M_weak_count == 0) + _M_destroy(); + } + + long + _M_get_use_count() const noexcept + { + return _M_use_count; + } + + private: + _Sp_counted_base(_Sp_counted_base const&) = delete; + _Sp_counted_base& operator=(_Sp_counted_base const&) = delete; + + int _M_use_count; + int _M_weak_count; + }; + + template + class shared_ptr; + + template + class weak_ptr; + + template + class enable_shared_from_this; + + class __weak_count; + + class __shared_count; + + template + struct _Sp_alloc_shared_tag + { + const _Alloc& _M_a; + }; + + template + class _Sp_counted_ptr_inplace final : public _Sp_counted_base + { + class _Impl : _Alloc + { + public: + explicit _Impl(_Alloc __a) noexcept : _Alloc(__a) { } + + _Alloc& _M_alloc() noexcept { return *this; } + + __aligned_buffer<_Tp> _M_storage; + }; + + public: + using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_ptr_inplace>; + + template + _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args) + : _M_impl(__a) + { + allocator_traits<_Alloc>::construct(__a, _M_ptr(), + my::forward<_Args>(__args)...); + } + + ~_Sp_counted_ptr_inplace() noexcept { } + + virtual void + _M_dispose() noexcept + { + allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr()); + } + + virtual void + _M_destroy() noexcept + { + __allocator_type __a(_M_impl._M_alloc()); + __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; + this->~_Sp_counted_ptr_inplace(); + } + + private: + friend class __shared_count; + + _Tp* _M_ptr() noexcept { return _M_impl._M_storage._M_ptr(); } + + _Impl _M_impl; + }; + + class __shared_count + { + public: + constexpr __shared_count() noexcept : _M_pi(0) + { } + + template + __shared_count(_Tp*& __p, _Sp_alloc_shared_tag<_Alloc> __a, + _Args&&... __args) + { + typedef _Sp_counted_ptr_inplace<_Tp, _Alloc> _Sp_cp_type; + typename _Sp_cp_type::__allocator_type __a2(__a._M_a); + auto __guard = my::__allocate_guarded(__a2); + _Sp_cp_type* __mem = __guard.get(); + auto __pi = ::new (__mem) + _Sp_cp_type(__a._M_a, my::forward<_Args>(__args)...); + __guard = nullptr; + _M_pi = __pi; + __p = __pi->_M_ptr(); + } + + ~__shared_count() noexcept + { + if (_M_pi != nullptr) + _M_pi->_M_release(); + } + + __shared_count(const __shared_count& __r) noexcept + : _M_pi(__r._M_pi) + { + if (_M_pi != 0) + _M_pi->_M_add_ref_copy(); + } + + explicit __shared_count(const __weak_count& __r); + + long + _M_get_use_count() const noexcept + { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; } + + private: + friend class __weak_count; + + _Sp_counted_base* _M_pi; + }; + + class __weak_count + { + public: + constexpr __weak_count() noexcept : _M_pi(nullptr) + { } + + __weak_count(const __shared_count& __r) noexcept + : _M_pi(__r._M_pi) + { + if (_M_pi != nullptr) + _M_pi->_M_weak_add_ref(); + } + + __weak_count(const __weak_count& __r) noexcept + : _M_pi(__r._M_pi) + { + if (_M_pi != nullptr) + _M_pi->_M_weak_add_ref(); + } + + __weak_count(__weak_count&& __r) noexcept + : _M_pi(__r._M_pi) + { __r._M_pi = nullptr; } + + ~__weak_count() noexcept + { + if (_M_pi != nullptr) + { + _M_pi->_M_weak_release(); + } + } + + __weak_count& + operator=(const __shared_count& __r) noexcept + { + _Sp_counted_base* __tmp = __r._M_pi; + if (__tmp != nullptr) + __tmp->_M_weak_add_ref(); + if (_M_pi != nullptr) + _M_pi->_M_weak_release(); + _M_pi = __tmp; + return *this; + } + + long + _M_get_use_count() const noexcept + { return _M_pi != nullptr ? _M_pi->_M_get_use_count() : 0; } + + private: + friend class __shared_count; + + _Sp_counted_base* _M_pi; + }; + + inline + __shared_count::__shared_count(const __weak_count& __r) + : _M_pi(__r._M_pi) + { + if (_M_pi != nullptr) + _M_pi->_M_add_ref_lock(); + else + __throw_bad_weak_ptr(); + } + + template + class shared_ptr + { + public: + using element_type = _Tp; + + constexpr shared_ptr() noexcept + : _M_ptr(0), _M_refcount() + { } + + shared_ptr(const shared_ptr&) noexcept = default; + shared_ptr& operator=(const shared_ptr&) noexcept = default; + ~shared_ptr() = default; + + template + explicit shared_ptr(const weak_ptr<_Yp>& __r) + : _M_refcount(__r._M_refcount) // may throw + { + // It is now safe to copy __r._M_ptr, as + // _M_refcount(__r._M_refcount) did not throw. + _M_ptr = __r._M_ptr; + } + + long + use_count() const noexcept + { return _M_refcount._M_get_use_count(); } + + element_type* operator->() const noexcept { return _M_ptr; } + + protected: + + template + shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) + : _M_ptr(), _M_refcount(_M_ptr, __tag, my::forward<_Args>(__args)...) + { _M_enable_shared_from_this_with(_M_ptr); } + + template + friend shared_ptr<_Tp1> + allocate_shared(const _Alloc& __a, _Args&&... __args); + + friend class weak_ptr<_Tp>; + + private: + + template + using __esft_base_t = decltype(__enable_shared_from_this_base( + my::declval(), + my::declval<_Yp*>())); + + template + struct __has_esft_base + : false_type { }; + + template + struct __has_esft_base<_Yp, __void_t<__esft_base_t<_Yp>>> + : true_type { }; + + template::type> + typename enable_if<__has_esft_base<_Yp2>::value>::type + _M_enable_shared_from_this_with(_Yp* __p) noexcept + { + if (auto __base = __enable_shared_from_this_base(_M_refcount, __p)) + __base->_M_weak_assign(const_cast<_Yp2*>(__p), _M_refcount); + } + + template friend class shared_ptr; + template friend class weak_ptr; + + element_type* _M_ptr; + __shared_count _M_refcount; + }; + + template + class weak_ptr + { + public: + using element_type = _Tp; + + constexpr weak_ptr() noexcept + : _M_ptr(nullptr), _M_refcount() + { } + + weak_ptr(const weak_ptr&) noexcept = default; + + ~weak_ptr() = default; + + weak_ptr& + operator=(const weak_ptr& __r) noexcept = default; + + long + use_count() const noexcept + { return _M_refcount._M_get_use_count(); } + + private: + + void + _M_assign(_Tp* __ptr, const __shared_count& __refcount) noexcept + { + if (use_count() == 0) + { + _M_ptr = __ptr; + _M_refcount = __refcount; + } + } + + template friend class shared_ptr; + template friend class weak_ptr; + friend class enable_shared_from_this<_Tp>; + + element_type* _M_ptr; + __weak_count _M_refcount; + }; + + template + class enable_shared_from_this + { + protected: + constexpr enable_shared_from_this() noexcept { } + + enable_shared_from_this(const enable_shared_from_this&) noexcept { } + + enable_shared_from_this& + operator=(const enable_shared_from_this&) noexcept + { return *this; } + + ~enable_shared_from_this() { } + + public: + shared_ptr<_Tp> + shared_from_this() + { return shared_ptr<_Tp>(this->_M_weak_this); } + + shared_ptr + shared_from_this() const + { return shared_ptr(this->_M_weak_this); } + + private: + template + void + _M_weak_assign(_Tp1* __p, const __shared_count& __n) const noexcept + { _M_weak_this._M_assign(__p, __n); } + + friend const enable_shared_from_this* + __enable_shared_from_this_base(const __shared_count&, + const enable_shared_from_this* __p) + { return __p; } + + template + friend class shared_ptr; + + mutable weak_ptr<_Tp> _M_weak_this; + }; + + template + inline shared_ptr<_Tp> + allocate_shared(const _Alloc& __a, _Args&&... __args) + { + return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a}, + my::forward<_Args>(__args)...); + } + + template + inline shared_ptr<_Tp> + make_shared(_Args&&... __args) + { + typedef typename my::remove_const<_Tp>::type _Tp_nc; + return my::allocate_shared<_Tp>(my::allocator<_Tp_nc>(), + my::forward<_Args>(__args)...); + } + } + + class blob final: public my::enable_shared_from_this + { + int* data; + + public: + blob() { data = new int; } + ~blob() { delete data; } + }; + + static int + bar(my::shared_ptr) + { + return 0; + } + + int main() + { + my::shared_ptr tg = my::make_shared(); + return tg->shared_from_this().use_count() - 2; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr89698.C gcc-7.5.0/gcc/testsuite/g++.dg/torture/pr89698.C *** gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr89698.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/torture/pr89698.C Wed Sep 4 08:06:24 2019 *************** *** 0 **** --- 1,28 ---- + /* { dg-do run } */ + + extern "C" void abort (void); + + class A { + virtual void f(){}; + public: + int x; + A(int in): x(in) {}; + }; + + class B: public A { + public: + int y; + B(int in):A(in-1), y(in) {}; + }; + + int test(void) + { + int res; + B b(2); + A* bp = &b; + void* vp = dynamic_cast(bp); + if (((A*)vp)->x == 1 && ((B*)vp)->y == 2) + return 1; + return 0; + } + int main() { if (test() != 1) abort (); return 0; } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr90194.C gcc-7.5.0/gcc/testsuite/g++.dg/torture/pr90194.C *** gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr90194.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/torture/pr90194.C Fri Aug 30 16:44:17 2019 *************** *** 0 **** --- 1,18 ---- + // { dg-do compile } + // { dg-additional-options "-g" } + + struct cb { + int yr; + }; + + void * + operator new (__SIZE_TYPE__, void *nq) + { + return nq; + } + + void + af (int xn) + { + new (&xn) cb { }; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/ubsan/pr89234.C gcc-7.5.0/gcc/testsuite/g++.dg/ubsan/pr89234.C *** gcc-7.4.0/gcc/testsuite/g++.dg/ubsan/pr89234.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/ubsan/pr89234.C Fri Aug 30 11:46:29 2019 *************** *** 0 **** --- 1,11 ---- + // PR rtl-optimization/89234 + // { dg-do compile { target dfp } } + // { dg-options "-O2 -fnon-call-exceptions -fsanitize=null" } + + typedef float __attribute__((mode (SD))) _Decimal32; + + void + foo (_Decimal32 *b, _Decimal32 c) + { + *b = c + 1.5; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/g++.dg/ubsan/vptr-14.C gcc-7.5.0/gcc/testsuite/g++.dg/ubsan/vptr-14.C *** gcc-7.4.0/gcc/testsuite/g++.dg/ubsan/vptr-14.C Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/g++.dg/ubsan/vptr-14.C Fri Aug 30 12:34:19 2019 *************** *** 0 **** --- 1,18 ---- + // PR sanitizer/89869 + // { dg-do run } + // { dg-options "-fsanitize=vptr -fno-sanitize-recover=vptr" } + + struct S { S *s = 0; virtual ~S () {} }; + + void + foo (S *x, S *y) + { + (x->s ? y : x) = x->s; + } + + int + main () + { + S a; + foo (&a, 0); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr71109.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr71109.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr71109.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr71109.c Fri Aug 30 11:16:10 2019 *************** *** 0 **** --- 1,31 ---- + /* PR tree-optimization/71109 */ + + struct S { int g, h; signed char i; int j; signed char k; int l[4]; } a, c; + struct T { signed char g; } e; + int *b, d; + static void foo (); + + void + bar (void) + { + while (d) + { + int k; + struct T f[3]; + foo (bar, a); + for (k = 0;; k++) + f[k] = e; + } + } + + static inline void + foo (int x, struct S y, struct T z) + { + for (z.g = 2; z.g; z.g--) + { + c = a = y; + *b |= 6; + if (y.g) + break; + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr72802.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr72802.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr72802.c Mon Aug 8 09:06:49 2016 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr72802.c Tue Oct 29 20:09:40 2019 *************** *** 1,3 **** --- 1,4 ---- + /* { dg-skip-if "see PR trail" { *-*-darwin* } } */ static a[]; static b, h, m, n, o, p, q, t, u, v, t5, t6, t16, t17, t18, t25; c; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr82564.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr82564.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr82564.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr82564.c Fri Aug 30 11:26:01 2019 *************** *** 0 **** --- 1,15 ---- + /* PR middle-end/82564 */ + /* { dg-require-effective-target alloca } */ + + int + main () + { + int t = 8, i; + typedef struct { char v[t]; } B; + B a, b; + B __attribute__ ((noinline)) f () { return b; } + for (i = 0; i < 8; i++) + b.v[i] = i; + a = f (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr87647.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr87647.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr87647.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr87647.c Fri Aug 30 11:08:10 2019 *************** *** 0 **** --- 1,15 ---- + /* PR middle-end/87647 */ + + struct A {}; + struct A *const b = &(struct A) {}; + struct B { char *s; struct A *t; }; + void bar (struct B *); + + void + foo (void) + { + struct B a[] = { "", b, "", b, "", b, "", b, "", b, "", b, "", b, "", b, + "", b, "", b, "", b, "", b, "", b, "", b, "", b, "", b, + "", b }; + bar (a); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr89412.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr89412.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr89412.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr89412.c Fri Aug 30 12:08:46 2019 *************** *** 0 **** --- 1,16 ---- + /* PR middle-end/89412 */ + + struct S { double a, b; } d; + int e; + double f; + + void + foo () + { + _Complex double h; + while (e) + { + f = h; + *(struct S *) &h = d; + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr89663-1.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr89663-1.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr89663-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr89663-1.c Fri Aug 30 12:16:43 2019 *************** *** 0 **** --- 1,81 ---- + /* PR middle-end/89663 */ + + int irint (); + long lrint (); + long long llrint (); + int iround (); + long lround (); + long long llround (); + int iceil (); + long lceil (); + long long llceil (); + int ifloor (); + long lfloor (); + long long llfloor (); + int irintf (); + long lrintf (); + long long llrintf (); + int iroundf (); + long lroundf (); + long long llroundf (); + int iceilf (); + long lceilf (); + long long llceilf (); + int ifloorf (); + long lfloorf (); + long long llfloorf (); + int irintl (); + long lrintl (); + long long llrintl (); + int iroundl (); + long lroundl (); + long long llroundl (); + int iceill (); + long lceill (); + long long llceill (); + int ifloorl (); + long lfloorl (); + long long llfloorl (); + + void + foo (long long *p) + { + int n = 0; + #define T(f) p[n++] = f (1); + T (irint) + T (lrint) + T (llrint) + T (iround) + T (lround) + T (llround) + T (iceil) + T (lceil) + T (llceil) + T (ifloor) + T (lfloor) + T (llfloor) + T (irintf) + T (lrintf) + T (llrintf) + T (iroundf) + T (lroundf) + T (llroundf) + T (iceilf) + T (lceilf) + T (llceilf) + T (ifloorf) + T (lfloorf) + T (llfloorf) + T (irintl) + T (lrintl) + T (llrintl) + T (iroundl) + T (lroundl) + T (llroundl) + T (iceill) + T (lceill) + T (llceill) + T (ifloorl) + T (lfloorl) + T (llfloorl) + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr89663-2.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr89663-2.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr89663-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr89663-2.c Fri Aug 30 12:16:43 2019 *************** *** 0 **** --- 1,82 ---- + /* PR middle-end/89663 */ + + int irint (double); + long lrint (double); + long long llrint (double); + int iround (double); + long lround (double); + long long llround (double); + int iceil (double); + long lceil (double); + long long llceil (double); + int ifloor (double); + long lfloor (double); + long long llfloor (double); + int irintf (float); + long lrintf (float); + long long llrintf (float); + int iroundf (float); + long lroundf (float); + long long llroundf (float); + int iceilf (float); + long lceilf (float); + long long llceilf (float); + int ifloorf (float); + long lfloorf (float); + long long llfloorf (float); + int irintl (long double); + long lrintl (long double); + long long llrintl (long double); + int iroundl (long double); + long lroundl (long double); + long long llroundl (long double); + int iceill (long double); + long lceill (long double); + long long llceill (long double); + int ifloorl (long double); + long lfloorl (long double); + long long llfloorl (long double); + + void + foo (long long *p) + { + int (*fn) (int); + int n = 0; + #define T(f) fn = (int (*) (int)) f; p[n++] = fn (1); + T (irint) + T (lrint) + T (llrint) + T (iround) + T (lround) + T (llround) + T (iceil) + T (lceil) + T (llceil) + T (ifloor) + T (lfloor) + T (llfloor) + T (irintf) + T (lrintf) + T (llrintf) + T (iroundf) + T (lroundf) + T (llroundf) + T (iceilf) + T (lceilf) + T (llceilf) + T (ifloorf) + T (lfloorf) + T (llfloorf) + T (irintl) + T (lrintl) + T (llrintl) + T (iroundl) + T (lroundl) + T (llroundl) + T (iceill) + T (lceill) + T (llceill) + T (ifloorl) + T (lfloorl) + T (llfloorl) + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr89703-1.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr89703-1.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr89703-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr89703-1.c Fri Aug 30 12:18:54 2019 *************** *** 0 **** --- 1,13 ---- + /* PR tree-optimization/89703 */ + + typedef __SIZE_TYPE__ size_t; + extern char *strlen (const char *); + extern char *strnlen (const char *, size_t); + extern char c[2]; + + void + foo (char **q) + { + q[0] = strlen (c); + q[1] = strnlen (c, 2); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr89703-2.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr89703-2.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr89703-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr89703-2.c Fri Aug 30 12:18:54 2019 *************** *** 0 **** --- 1,13 ---- + /* PR tree-optimization/89703 */ + + typedef __SIZE_TYPE__ size_t; + extern void *memcpy (void *, const void *, size_t); + extern char *strlen (const char *); + extern char c[2]; + + void + foo (char **q) + { + memcpy (c, "a", 2); + q[0] = strlen (c); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr89998-1.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr89998-1.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr89998-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr89998-1.c Fri Aug 30 12:35:05 2019 *************** *** 0 **** --- 1,42 ---- + /* PR tree-optimization/89998 */ + + unsigned int sprintf (char *str, const char *fmt, ...); + unsigned int snprintf (char *str, __SIZE_TYPE__ len, const char *fmt, ...); + + int + f1 (char *s) + { + return sprintf (s, "foo"); + } + + int + f2 (char *s) + { + return sprintf (s, "%d", 123); + } + + int + f3 (int *p, char *s) + { + const char *t = "bar"; + return sprintf (s, "%s", t); + } + + int + f4 (char *s) + { + return snprintf (s, 8, "foo"); + } + + int + f5 (char *s) + { + return snprintf (s, 8, "%d", 123); + } + + int + f6 (int *p, char *s) + { + const char *t = "bar"; + return snprintf (s, 8, "%s", t); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr89998-2.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr89998-2.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr89998-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr89998-2.c Fri Aug 30 12:35:05 2019 *************** *** 0 **** --- 1,4 ---- + /* PR tree-optimization/89998 */ + /* { dg-additional-options "-fno-printf-return-value" } */ + + #include "pr89998-1.c" diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr90139.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr90139.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr90139.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/compile/pr90139.c Fri Aug 30 12:44:03 2019 *************** *** 0 **** --- 1,20 ---- + /* PR middle-end/90139 */ + + typedef float __attribute__((vector_size (sizeof (float)))) V; + void bar (int, V *); + int l; + + void + foo (void) + { + V n, b, o; + while (1) + switch (l) + { + case 0: + o = n; + n = b; + b = o; + bar (1, &o); + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/20190820-1.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/execute/20190820-1.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/20190820-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/execute/20190820-1.c Tue Aug 20 09:22:32 2019 *************** *** 0 **** --- 1,111 ---- + /* PR rtl-optimization/91347 */ + /* Reported by John David Anglin */ + + typedef unsigned short __u16; + typedef __signed__ int __s32; + typedef unsigned int __u32; + typedef __signed__ long long __s64; + typedef unsigned long long __u64; + typedef __u16 u16; + typedef __s32 s32; + typedef __u32 u32; + typedef __u64 u64; + typedef _Bool bool; + typedef s32 int32_t; + typedef u32 uint32_t; + typedef u64 uint64_t; + + char hex_asc_upper[16]; + u16 decpair[100]; + + static __attribute__((noinline, noclone)) void + put_dec_full4 (char *buf, unsigned r) + { + unsigned q; + q = (r * 0x147b) >> 19; + *((u16 *)buf) = decpair[r - 100*q]; + buf += 2; + *((u16 *)buf) = decpair[q]; + } + + static __attribute__((noinline, noclone)) unsigned + put_dec_helper4 (char *buf, unsigned x) + { + uint32_t q = (x * (uint64_t)0x346DC5D7) >> 43; + put_dec_full4(buf, x - q * 10000); + return q; + } + + static __attribute__((noinline, noclone)) char * + put_dec (char *buf, unsigned long long n) + { + uint32_t d3, d2, d1, q, h; + d1 = ((uint32_t)n >> 16); + h = (n >> 32); + d2 = (h ) & 0xffff; + d3 = (h >> 16); + q = 656 * d3 + 7296 * d2 + 5536 * d1 + ((uint32_t)n & 0xffff); + q = put_dec_helper4(buf, q); + q += 7671 * d3 + 9496 * d2 + 6 * d1; + q = put_dec_helper4(buf+4, q); + q += 4749 * d3 + 42 * d2; + q = put_dec_helper4(buf+8, q); + return buf; + } + + struct printf_spec { + unsigned int type:8; + signed int field_width:24; + unsigned int flags:8; + unsigned int base:8; + signed int precision:16; + } __attribute__((__packed__)); + + static __attribute__((noinline, noclone)) char * + number (char *buf, char *end, unsigned long long num, struct printf_spec spec) + { + + char tmp[3 * sizeof(num)] __attribute__((__aligned__(2))); + char sign; + char locase; + int need_pfx = ((spec.flags & 64) && spec.base != 10); + int i; + bool is_zero = num == 0LL; + int field_width = spec.field_width; + int precision = spec.precision; + + i = 0; + if (num < spec.base) + tmp[i++] = hex_asc_upper[num] | locase; + else if (spec.base != 10) { + int mask = spec.base - 1; + int shift = 3; + if (spec.base == 16) + shift = 4; + else + __builtin_abort (); + do { + tmp[i++] = (hex_asc_upper[((unsigned char)num) & mask] | locase); + num >>= shift; + } while (num); + } else { + i = put_dec(tmp, num) - tmp; + } + return buf; + } + + static __attribute__((noinline, noclone)) char * + pointer_string (char *buf, char *end, const void *ptr, struct printf_spec spec) + { + spec.base = 16; + spec.flags = 0; + return number(buf, end, 100, spec); + } + + int + main (void) + { + struct printf_spec spec; + char *s = pointer_string (0, 0, 0, spec); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/20191023-1.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/execute/20191023-1.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/20191023-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/execute/20191023-1.c Wed Oct 23 13:17:34 2019 *************** *** 0 **** --- 1,73 ---- + /* PR tree-optimization/92131 */ + /* Testcase by Armin Rigo */ + + long b, c, d, e, f, i; + char g, h, j, k; + int *aa; + + static void error (void) __attribute__((noipa)); + static void error (void) { __builtin_abort(); } + + static void see_me_here (void) __attribute__((noipa)); + static void see_me_here (void) {} + + static void aaa (void) __attribute__((noipa)); + static void aaa (void) {} + + static void a (void) __attribute__((noipa)); + static void a (void) { + long am, ao; + if (aa == 0) { + aaa(); + if (j) + goto ay; + } + return; + ay: + aaa(); + if (k) { + aaa(); + goto az; + } + return; + az: + if (i) + if (g) + if (h) + if (e) + goto bd; + return; + bd: + am = 0; + while (am < e) { + switch (c) { + case 8: + goto bh; + case 4: + return; + } + bh: + if (am >= 0) + b = -am; + ao = am + b; + f = ao & 7; + if (f == 0) + see_me_here(); + if (ao >= 0) + am++; + else + error(); + } + } + + int main (void) + { + j++; + k++; + i++; + g++; + h++; + e = 1; + a(); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp gcc-7.5.0/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp Fri Jul 12 17:15:13 2019 *************** load_lib c-torture.exp *** 37,43 **** torture-init set-torture-options $C_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS ! set additional_flags "-fno-tree-loop-distribute-patterns -fno-tracer" if [istarget "powerpc-*-darwin*"] { lappend additional_flags "-Wl,-multiply_defined,suppress" } --- 37,43 ---- torture-init set-torture-options $C_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS ! set additional_flags "-fno-tree-loop-distribute-patterns -fno-tracer -fno-ipa-ra" if [istarget "powerpc-*-darwin*"] { lappend additional_flags "-Wl,-multiply_defined,suppress" } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr88739.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/execute/pr88739.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr88739.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/execute/pr88739.c Tue Mar 26 13:18:23 2019 *************** *** 0 **** --- 1,59 ---- + /* PR tree-optimization/88739 */ + #if __SIZEOF_SHORT__ == 2 && __SIZEOF_INT__ == 4 && __CHAR_BIT__ == 8 + struct A + { + unsigned int a, b, c; + unsigned int d : 30; + unsigned int e : 2; + }; + + union U + { + struct A f; + unsigned int g[4]; + unsigned short h[8]; + unsigned char i[16]; + }; + volatile union U v = { .f.d = 0x4089 }; + + __attribute__((noipa)) void + bar (int x) + { + static int i; + switch (i++) + { + case 0: if (x != v.f.d) __builtin_abort (); break; + case 1: if (x != v.f.e) __builtin_abort (); break; + case 2: if (x != v.g[3]) __builtin_abort (); break; + case 3: if (x != v.h[6]) __builtin_abort (); break; + case 4: if (x != v.h[7]) __builtin_abort (); break; + default: __builtin_abort (); break; + } + } + + void + foo (unsigned int x) + { + union U u; + u.f.d = x >> 2; + u.f.e = 0; + bar (u.f.d); + bar (u.f.e); + bar (u.g[3]); + bar (u.h[6]); + bar (u.h[7]); + } + + int + main () + { + foo (0x10224); + return 0; + } + #else + int + main () + { + return 0; + } + #endif diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr89195.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/execute/pr89195.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr89195.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/execute/pr89195.c Fri Aug 30 11:38:28 2019 *************** *** 0 **** --- 1,22 ---- + /* PR rtl-optimization/89195 */ + /* { dg-require-effective-target int32plus } */ + + struct S { unsigned i : 24; }; + + volatile unsigned char x; + + __attribute__((noipa)) int + foo (struct S d) + { + return d.i & x; + } + + int + main () + { + struct S d = { 0x123456 }; + x = 0x75; + if (foo (d) != (0x56 & 0x75)) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr90949.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/execute/pr90949.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr90949.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/execute/pr90949.c Fri Jun 28 21:01:56 2019 *************** *** 0 **** --- 1,42 ---- + void __attribute__ ((noipa, noinline)) my_puts (const char *str) { } + + void __attribute__ ((noipa, noinline)) my_free (void *p) { } + + + struct Node + { + struct Node *child; + }; + + struct Node space[2] = { }; + + struct Node * __attribute__ ((noipa, noinline)) my_malloc (int bytes) + { + return &space[0]; + } + + void + walk (struct Node *module, int cleanup) + { + if (module == 0) + { + return; + } + if (!cleanup) + { + my_puts ("No cleanup"); + } + walk (module->child, cleanup); + if (cleanup) + { + my_free (module); + } + } + + int + main () + { + struct Node *node = my_malloc (sizeof (struct Node)); + node->child = 0; + walk (node, 1); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr91137.c gcc-7.5.0/gcc/testsuite/gcc.c-torture/execute/pr91137.c *** gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr91137.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.c-torture/execute/pr91137.c Mon Sep 2 10:10:44 2019 *************** *** 0 **** --- 1,34 ---- + long long a; + unsigned b; + int c[70]; + int d[70][70]; + int e; + + __attribute__ ((noinline)) void f(long long *g, int p2) { + *g = p2; + } + + __attribute__ ((noinline)) void fn2() { + for (int j = 0; j < 70; j++) { + for (int i = 0; i < 70; i++) { + if (b) + c[i] = 0; + for (int l = 0; l < 70; l++) + d[i][1] = d[l][i]; + } + for (int k = 0; k < 70; k++) + e = c[0]; + } + } + + int main() { + b = 5; + for (int j = 0; j < 70; ++j) + c[j] = 2075593088; + fn2(); + f(&a, e); + if (a) + __builtin_abort(); + return 0; + } + diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/asan/pr81923.c gcc-7.5.0/gcc/testsuite/gcc.dg/asan/pr81923.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/asan/pr81923.c Thu Sep 7 20:29:04 2017 --- gcc-7.5.0/gcc/testsuite/gcc.dg/asan/pr81923.c Mon Dec 24 12:38:51 2018 *************** *** 1,7 **** /* PR sanitizer/81923 */ /* { dg-do link } */ ! int foobar __asm (__USER_LABEL_PREFIX__ "barbaz") = 34; int main () --- 1,10 ---- /* PR sanitizer/81923 */ /* { dg-do link } */ ! #define STR1(X) #X ! #define STR2(X) STR1(X) ! ! int foobar __asm (STR2(__USER_LABEL_PREFIX__) "barbaz") = 34; int main () diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/asm-qual-1.c gcc-7.5.0/gcc/testsuite/gcc.dg/asm-qual-1.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/asm-qual-1.c Thu Jul 12 22:57:32 2007 --- gcc-7.5.0/gcc/testsuite/gcc.dg/asm-qual-1.c Wed Jan 2 22:49:04 2019 *************** *** 1,4 **** ! /* Test that qualifiers other than volatile are ignored on asm. */ /* Origin: Joseph Myers */ /* { dg-do compile } */ /* { dg-options "-std=gnu99" } */ --- 1,4 ---- ! /* Test that qualifiers other than volatile are disallowed on asm. */ /* Origin: Joseph Myers */ /* { dg-do compile } */ /* { dg-options "-std=gnu99" } */ *************** void *** 7,12 **** f (void) { asm volatile (""); ! asm const (""); /* { dg-warning "const qualifier ignored on asm" } */ ! asm restrict (""); /* { dg-warning "restrict qualifier ignored on asm" } */ } --- 7,14 ---- f (void) { asm volatile (""); ! ! asm const (""); /* { dg-warning {'const' is not an asm qualifier} } */ ! ! asm restrict (""); /* { dg-warning {'restrict' is not an asm qualifier} } */ } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/asm-qual-2.c gcc-7.5.0/gcc/testsuite/gcc.dg/asm-qual-2.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/asm-qual-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/asm-qual-2.c Wed Jan 2 22:49:04 2019 *************** *** 0 **** --- 1,46 ---- + /* Test that qualifiers on asm are allowed in any order. */ + /* { dg-do compile } */ + /* { dg-options "-std=gnu99" } */ + + void + f (void) + { + asm volatile goto ("" :::: lab); + asm volatile inline ("" :::); + asm inline volatile ("" :::); + asm inline goto ("" :::: lab); + asm goto volatile ("" :::: lab); + asm goto inline ("" :::: lab); + + asm volatile inline goto ("" :::: lab); + asm volatile goto inline ("" :::: lab); + asm inline volatile goto ("" :::: lab); + asm inline goto volatile ("" :::: lab); + asm goto volatile inline ("" :::: lab); + asm goto inline volatile ("" :::: lab); + + /* Duplicates are not allowed. */ + asm goto volatile volatile ("" :::: lab); /* { dg-error "" } */ + asm volatile goto volatile ("" :::: lab); /* { dg-error "" } */ + asm volatile volatile goto ("" :::: lab); /* { dg-error "" } */ + asm goto goto volatile ("" :::: lab); /* { dg-error "" } */ + asm goto volatile goto ("" :::: lab); /* { dg-error "" } */ + asm volatile goto goto ("" :::: lab); /* { dg-error "" } */ + + asm inline volatile volatile ("" :::); /* { dg-error "" } */ + asm volatile inline volatile ("" :::); /* { dg-error "" } */ + asm volatile volatile inline ("" :::); /* { dg-error "" } */ + asm inline inline volatile ("" :::); /* { dg-error "" } */ + asm inline volatile inline ("" :::); /* { dg-error "" } */ + asm volatile inline inline ("" :::); /* { dg-error "" } */ + + asm goto inline inline ("" :::: lab); /* { dg-error "" } */ + asm inline goto inline ("" :::: lab); /* { dg-error "" } */ + asm inline inline goto ("" :::: lab); /* { dg-error "" } */ + asm goto goto inline ("" :::: lab); /* { dg-error "" } */ + asm goto inline goto ("" :::: lab); /* { dg-error "" } */ + asm inline goto goto ("" :::: lab); /* { dg-error "" } */ + + lab: + ; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/asm-qual-3.c gcc-7.5.0/gcc/testsuite/gcc.dg/asm-qual-3.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/asm-qual-3.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/asm-qual-3.c Wed Jan 2 22:49:04 2019 *************** *** 0 **** --- 1,9 ---- + /* Test that asm-qualifiers are not allowed on toplevel asm. */ + /* { dg-do compile } */ + /* { dg-options "-std=gnu99" } */ + + asm const (""); /* { dg-error {expected '\(' before 'const'} } */ + asm volatile (""); /* { dg-error {expected '\(' before 'volatile'} } */ + asm restrict (""); /* { dg-error {expected '\(' before 'restrict'} } */ + asm inline (""); /* { dg-error {expected '\(' before 'inline'} } */ + asm goto (""); /* { dg-error {expected '\(' before 'goto'} } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/autopar/pr91162.c gcc-7.5.0/gcc/testsuite/gcc.dg/autopar/pr91162.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/autopar/pr91162.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/autopar/pr91162.c Wed Sep 4 08:06:24 2019 *************** *** 0 **** --- 1,25 ---- + /* { dg-do compile { target int128 } } */ + /* { dg-options "-O -ftree-parallelize-loops=2 -fno-tree-dominator-opts" } */ + + void + zf (__int128 ct) + { + __int128 *rk = &ct; + + if (0) + { + int jj; + + t9: + for (jj = 0; jj < 60; ++jj) + { + } + + __builtin_unreachable (); + } + + while (*rk < 1) + ++*rk; + + goto t9; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/cpp/isysroot-1.c gcc-7.5.0/gcc/testsuite/gcc.dg/cpp/isysroot-1.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/cpp/isysroot-1.c Tue Nov 30 19:38:15 2004 --- gcc-7.5.0/gcc/testsuite/gcc.dg/cpp/isysroot-1.c Mon Sep 16 00:30:59 2019 *************** *** 1,10 **** /* { dg-options "-isysroot ${srcdir}/gcc.dg/cpp" } */ /* { dg-do compile { target *-*-darwin* } } */ ! #include int main() { ! /* Special stdio.h supplies function foo. */ void (*x)(void) = foo; return 0; } --- 1,17 ---- /* { dg-options "-isysroot ${srcdir}/gcc.dg/cpp" } */ /* { dg-do compile { target *-*-darwin* } } */ ! /* For the test to succeed there needs to be some header that is to be found ! in the 'expected' place i.e. /usr/include/. It's important that ! it is not the name of a header for which fixincludes have been applied, ! since such headers will be found in the gcc include-fixed dir and, in ! general, reference additional headers. The dummy sysroot will prevent the ! additional headers from being found, resulting in a failed test. So use ! a header name we don't expect to see. */ ! #include int main() { ! /* Special example.h supplies function foo. */ void (*x)(void) = foo; return 0; } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/cpp/usr/include/example.h gcc-7.5.0/gcc/testsuite/gcc.dg/cpp/usr/include/example.h *** gcc-7.4.0/gcc/testsuite/gcc.dg/cpp/usr/include/example.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/cpp/usr/include/example.h Mon Sep 16 00:30:59 2019 *************** *** 0 **** --- 1,4 ---- + /* Used by gcc.dg/cpp/isysroot-1.c to test isysroot. */ + void foo() + { + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h gcc-7.5.0/gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h *** gcc-7.4.0/gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h Wed Nov 24 17:47:32 2004 --- gcc-7.5.0/gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h Thu Jan 1 00:00:00 1970 *************** *** 1,4 **** - /* Used by gcc.dg/cpp/isysroot-1.c to test isysroot. */ - void foo() - { - } --- 0 ---- diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/darwin-minversion-1.c gcc-7.5.0/gcc/testsuite/gcc.dg/darwin-minversion-1.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/darwin-minversion-1.c Sun Nov 27 15:07:22 2016 --- gcc-7.5.0/gcc/testsuite/gcc.dg/darwin-minversion-1.c Fri Sep 13 21:45:28 2019 *************** *** 1,6 **** /* Basic test for -mmacosx-version-min switch on Darwin. */ /* { dg-options "-mmacosx-version-min=10.5" } */ ! /* { dg-do run { target *-*-darwin* } } */ int main () --- 1,6 ---- /* Basic test for -mmacosx-version-min switch on Darwin. */ /* { dg-options "-mmacosx-version-min=10.5" } */ ! /* { dg-do compile { target *-*-darwin* } } */ int main () diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/darwin-minversion-2.c gcc-7.5.0/gcc/testsuite/gcc.dg/darwin-minversion-2.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/darwin-minversion-2.c Sun Nov 27 15:07:22 2016 --- gcc-7.5.0/gcc/testsuite/gcc.dg/darwin-minversion-2.c Fri Sep 13 21:45:28 2019 *************** *** 1,6 **** /* Basic test for -mmacosx-version-min switch on Darwin. */ /* { dg-options "-mmacosx-version-min=10.1 -mmacosx-version-min=10.5" } */ ! /* { dg-do run { target *-*-darwin* } } */ int main () --- 1,6 ---- /* Basic test for -mmacosx-version-min switch on Darwin. */ /* { dg-options "-mmacosx-version-min=10.1 -mmacosx-version-min=10.5" } */ ! /* { dg-do compile { target *-*-darwin* } } */ int main () diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/darwin-minversion-link.c gcc-7.5.0/gcc/testsuite/gcc.dg/darwin-minversion-link.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/darwin-minversion-link.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/darwin-minversion-link.c Wed Sep 4 19:17:41 2019 *************** *** 0 **** --- 1,26 ---- + /* Test that we can handle leading-zeros on mmacosx-version-min for invocations + including linking (so that spec processing works). To make sure that any + necessary target libs are present we make this specific to the target version + being built. */ + /* { dg-do link { target *-*-darwin* } } */ + /* { dg-additional-options "-mmacosx-version-min=010.04.11 -DCHECK=1049" { target *-*-darwin8* } } */ + /* { dg-additional-options "-mmacosx-version-min=010.05.08 -DCHECK=1058" { target *-*-darwin9* } } */ + /* { dg-additional-options "-mmacosx-version-min=010.06.08 -DCHECK=1068" { target *-*-darwin10* } } */ + /* { dg-additional-options "-mmacosx-version-min=010.07.05 -DCHECK=1075" { target *-*-darwin11* } } */ + /* { dg-additional-options "-mmacosx-version-min=010.08.05 -DCHECK=1085" { target *-*-darwin12* } } */ + /* { dg-additional-options "-mmacosx-version-min=010.09.05 -DCHECK=1095" { target *-*-darwin13* } } */ + /* { dg-additional-options "-mmacosx-version-min=010.010.03 -DCHECK=101003" { target *-*-darwin14* } } */ + /* { dg-additional-options "-mmacosx-version-min=010.011.06 -DCHECK=101106" { target *-*-darwin15* } } */ + /* { dg-additional-options "-mmacosx-version-min=010.012.06 -DCHECK=101206" { target *-*-darwin16* } } */ + /* { dg-additional-options "-mmacosx-version-min=010.013.06 -DCHECK=101306" { target *-*-darwin17* } } */ + /* This next test covers 10.18 and (currently unreleased) 10.19 for now. */ + /* { dg-additional-options "-mmacosx-version-min=010.014.05 -DCHECK=101405" { target *-*-darwin1[89]* } } */ + + int + main () + { + #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != CHECK + fail me; + #endif + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/darwin-weakimport-3.c gcc-7.5.0/gcc/testsuite/gcc.dg/darwin-weakimport-3.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/darwin-weakimport-3.c Fri Oct 13 21:37:12 2006 --- gcc-7.5.0/gcc/testsuite/gcc.dg/darwin-weakimport-3.c Fri Sep 6 15:56:18 2019 *************** *** 1,5 **** /* { dg-do compile { target *-*-darwin* } } */ ! /* { dg-options "-fno-asynchronous-unwind-tables" } */ /* { dg-require-weak "" } */ /* { dg-final { scan-assembler-not "coalesced" } } */ --- 1,20 ---- /* { dg-do compile { target *-*-darwin* } } */ ! ! /* Here we want to test if "foo" gets placed into a coalesced ! section (it should not). ! ! However, for i386, and PIC code we have a "get_pc thunk" that ! is (correctly) placed in a coalesced section when using an older ! linker - also unwind tables are emitted into coalesced. ! ! With modern linkers this is moot, since even weak symbols ! are emitted into the regular sections. ! ! To avoid the unwind tables -fno-asynchronous-unwind-tables. ! To ensure that we emit code for an older linker -mtarget-linker ! To avoid the get_pc thunk optimise at least O1. */ ! ! /* { dg-options "-fno-asynchronous-unwind-tables -O1 -mtarget-linker 85.2" } */ /* { dg-require-weak "" } */ /* { dg-final { scan-assembler-not "coalesced" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/debug/dwarf2/pr88644.c gcc-7.5.0/gcc/testsuite/gcc.dg/debug/dwarf2/pr88644.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/debug/dwarf2/pr88644.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/debug/dwarf2/pr88644.c Fri Aug 30 11:24:34 2019 *************** *** 0 **** --- 1,7 ---- + /* PR debug/88644 */ + /* { dg-do compile } */ + /* { dg-options "-gdwarf-4 -dA -gpubnames" } */ + + char array[1]; + + /* { dg-final { scan-assembler-not {\msizetype} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/debug/pr89704.c gcc-7.5.0/gcc/testsuite/gcc.dg/debug/pr89704.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/debug/pr89704.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/debug/pr89704.c Fri Aug 30 12:20:12 2019 *************** *** 0 **** --- 1,14 ---- + /* PR debug/89704 */ + /* { dg-do compile } */ + + typedef __INTPTR_TYPE__ intptr_t; + + int + foo (void) + { + lab1:; + lab2:; + static int i = (intptr_t) &&lab1 - (intptr_t) &&lab2; + static int j = (intptr_t) &&lab1 - (intptr_t) &&lab2; + return i; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/cancel-1.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/cancel-1.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/cancel-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/cancel-1.c Fri Aug 30 11:31:02 2019 *************** *** 0 **** --- 1,12 ---- + /* { dg-do compile } */ + + struct S { int s; } s; + + void + foo (void) + { + #pragma omp parallel + { + #pragma omp cancel parallel if (s) /* { dg-error "used struct type value where scalar is required" } */ + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr78884.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr78884.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr78884.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr78884.c Fri Aug 30 12:48:57 2019 *************** *** 0 **** --- 1,16 ---- + /* PR middle-end/78884 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -fopenmp" } */ + + void bar (int *); + + void + foo (int n) + { + #pragma omp simd + for (int i = 0; i < 1024; i++) + { + int vla[n]; + bar (vla); + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr85594.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr85594.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr85594.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr85594.c Fri Aug 30 11:23:16 2019 *************** *** 0 **** --- 1,5 ---- + /* PR middle-end/85594 */ + /* { dg-do compile } */ + /* { dg-additional-options "-fwrapv" } */ + + #include "pr81768-2.c" diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr87887-1.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr87887-1.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr87887-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr87887-1.c Fri Aug 30 11:36:58 2019 *************** *** 0 **** --- 1,26 ---- + /* PR middle-end/87887 */ + /* { dg-do compile } */ + /* { dg-require-effective-target vect_simd_clones } */ + /* { dg-additional-options "-w" } */ + + struct S { int n; }; + #pragma omp declare simd + struct S + foo (int x) + { + return (struct S) { x }; + } + + #pragma omp declare simd + int + bar (struct S x) + { + return x.n; + } + + #pragma omp declare simd uniform (x) + int + baz (int w, struct S x, int y) + { + return w + x.n + y; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr87887-2.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr87887-2.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr87887-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr87887-2.c Fri Aug 30 11:36:58 2019 *************** *** 0 **** --- 1,25 ---- + /* PR middle-end/87887 */ + /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ + /* { dg-require-effective-target vect_simd_clones } */ + + struct S { int n; }; + #pragma omp declare simd + struct S + foo (int x) /* { dg-warning "unsupported return type 'struct S' for simd" } */ + { + return (struct S) { x }; + } + + #pragma omp declare simd + int + bar (struct S x) /* { dg-warning "unsupported argument type 'struct S' for simd" } */ + { + return x.n; + } + + #pragma omp declare simd uniform (x) + int + baz (int w, struct S x, int y) + { + return w + x.n + y; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr87895-1.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr87895-1.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr87895-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr87895-1.c Fri Aug 30 11:12:23 2019 *************** *** 0 **** --- 1,19 ---- + /* PR tree-optimization/87895 */ + /* { dg-do compile } */ + /* { dg-additional-options "-O0" } */ + + #pragma omp declare simd + int + foo (int x) + { + if (x == 0) + return 0; + } + + #pragma omp declare simd + int + bar (int *x, int y) + { + if ((y == 0) ? (*x = 0) : *x) + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr87895-2.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr87895-2.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr87895-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr87895-2.c Fri Aug 30 11:12:23 2019 *************** *** 0 **** --- 1,5 ---- + /* PR tree-optimization/87895 */ + /* { dg-do compile } */ + /* { dg-additional-options "-O1" } */ + + #include "pr87895-1.c" diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr87895-3.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr87895-3.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr87895-3.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr87895-3.c Fri Aug 30 11:12:23 2019 *************** *** 0 **** --- 1,18 ---- + /* PR tree-optimization/87895 */ + /* { dg-do compile } */ + /* { dg-additional-options "-O2" } */ + + #pragma omp declare simd + int foo (int x) __attribute__((noreturn)); + + #pragma omp declare simd + int + bar (int x, int y) + { + if (y == 1) + foo (x + 2); + if (y == 10) + foo (x + 6); + if (y != 25) + return 4; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr88105.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr88105.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr88105.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr88105.c Tue Mar 26 11:18:26 2019 *************** *** 0 **** --- 1,30 ---- + /* { dg-do compile } */ + /* { dg-options "-fopenmp -O -fexceptions -fnon-call-exceptions -fno-tree-fre" } */ + + int + s0 (void) + { + int g6, oh = 0; + int *a6 = &g6; + + (void) a6; + + #pragma omp parallel for + for (g6 = 0; g6 < 1; ++g6) + { + int zk; + + for (zk = 0; zk < 1; ++zk) + { + oh += zk / (zk + 1); + + for (;;) + { + } + } + + a6 = &zk; + } + + return oh; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr88107.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr88107.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr88107.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr88107.c Fri Aug 30 11:35:08 2019 *************** *** 0 **** --- 1,35 ---- + /* PR tree-optimization/88107 */ + /* { dg-do compile { target fgraphite } } */ + /* { dg-require-effective-target vect_simd_clones } */ + /* { dg-options "-O2 -fexceptions -floop-nest-optimize -fnon-call-exceptions -fopenmp-simd -ftree-parallelize-loops=2" } */ + + #define N 1024 + int a[N], b[N]; + long int c[N]; + unsigned char d[N]; + + #pragma omp declare simd notinbranch + __attribute__((noinline)) static int + foo (long int a, int b, int c) + { + return a + b + c; + } + + #pragma omp declare simd notinbranch + __attribute__((noinline)) static long int + bar (int a, int b, long int c) + { + return a + b + c; + } + + void + baz (void) + { + int i; + #pragma omp simd + for (i = 0; i < N; i++) + a[i] = foo (c[i], a[i], b[i]) + 6; + #pragma omp simd + for (i = 0; i < N; i++) + c[i] = bar (a[i], b[i], c[i]) * 2; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr88415.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr88415.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr88415.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr88415.c Wed Sep 4 08:06:24 2019 *************** *** 0 **** --- 1,12 ---- + /* { dg-do compile } */ + /* { dg-options "-fexceptions -fnon-call-exceptions -fopenmp -fsignaling-nans -funsafe-math-optimizations -fno-associative-math" } */ + + void + lx (_Complex int *yn) + { + int mj; + + #pragma omp for + for (mj = 0; mj < 1; ++mj) + yn[mj] += 1; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr88553.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr88553.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr88553.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr88553.c Fri Aug 30 11:23:16 2019 *************** *** 0 **** --- 1,5 ---- + /* PR middle-end/88553 */ + /* { dg-do compile } */ + /* { dg-additional-options "-O1 -ftree-loop-vectorize -fwrapv" } */ + + #include "pr81768-2.c" diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr89104.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr89104.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr89104.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr89104.c Fri Aug 30 11:34:08 2019 *************** *** 0 **** --- 1,11 ---- + /* PR c++/66676 */ + /* PR ipa/89104 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -fopenmp-simd" } */ + + #pragma omp declare simd uniform (x) aligned (x) + int + foo (int *x, int y) + { + return x[y]; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr89246-1.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr89246-1.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr89246-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr89246-1.c Fri Aug 30 11:50:04 2019 *************** *** 0 **** --- 1,19 ---- + /* PR middle-end/89246 */ + /* { dg-do link { target { int128 && vect_simd_clones } } } */ + /* { dg-options "-O2 -fopenmp-simd -w" } */ + /* { dg-additional-sources "pr89246-2.c" } */ + + #pragma omp declare simd + int foo (__int128 x) + { + return x; + } + + #pragma omp declare simd + extern int bar (int x); + + int + main () + { + return foo (0) + bar (0); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr89246-2.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr89246-2.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr89246-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr89246-2.c Fri Aug 30 11:50:04 2019 *************** *** 0 **** --- 1,13 ---- + /* PR middle-end/89246 */ + /* { dg-do compile { target int128 } } */ + /* { dg-options "-O0 -fno-openmp -fno-openmp-simd" } */ + + #pragma omp declare simd + extern int foo (__int128 x); + + #pragma omp declare simd + int + bar (int x) + { + return x + foo (0); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr89796.c gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr89796.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/gomp/pr89796.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/gomp/pr89796.c Fri Aug 30 12:32:15 2019 *************** *** 0 **** --- 1,23 ---- + /* PR c++/89796 */ + /* { dg-do compile } */ + /* { dg-additional-options "-Wunused-value" } */ + + int + f1 (int *p) + { + int r; + #pragma omp atomic capture /* { dg-bogus "value computed is not used" } */ + { r = *p; (*p)++; } + return r; + } + + int + f2 (int *p) + { + int s + = ({ int r; + #pragma omp atomic capture /* { dg-bogus "value computed is not used" } */ + { r = *p; (*p)++; } + r; }); + return s; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/graphite/pr84552.c gcc-7.5.0/gcc/testsuite/gcc.dg/graphite/pr84552.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/graphite/pr84552.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/graphite/pr84552.c Tue Mar 26 11:18:26 2019 *************** *** 0 **** --- 1,23 ---- + /* { dg-do compile } */ + /* { dg-options "-O2 -floop-nest-optimize -fno-tree-copy-prop -fno-tree-fre -fno-tree-loop-ivcanon" } */ + + int cx; + + int + e6 (int pj, int xe) + { + for (cx = 0; cx < 2; ++cx) + while (xe < 1) + { + for (cx = 0; cx < 2; ++cx) + pj *= 2; + + if (cx != 0) + goto o3; + + ++xe; + } + + o3: + return pj; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/inline-40.c gcc-7.5.0/gcc/testsuite/gcc.dg/inline-40.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/inline-40.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/inline-40.c Wed Jan 16 21:40:33 2019 *************** *** 0 **** --- 1,49 ---- + /* Test inline functions declared in inner scopes. Bugs 88720 and 88726. */ + /* { dg-do compile } */ + /* { dg-options "" } */ + + void + inline_1 (void) + { + } + + void + inline_2 (void) + { + } + + static void + inline_static_1 (void) + { + } + + static void + inline_static_2 (void) + { + } + + static void inline_static_3 (void); + static void inline_static_4 (void); + + static void + test (void) + { + inline void inline_1 (void); + extern inline void inline_2 (void); + inline void inline_3 (void); + extern inline void inline_4 (void); + inline void inline_static_1 (void); + extern inline void inline_static_2 (void); + inline void inline_static_3 (void); + extern inline void inline_static_4 (void); + } + + void + inline_3 (void) + { + } + + void + inline_4 (void) + { + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/inline-41.c gcc-7.5.0/gcc/testsuite/gcc.dg/inline-41.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/inline-41.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/inline-41.c Wed Jan 16 21:40:33 2019 *************** *** 0 **** --- 1,49 ---- + /* Test inline functions declared in inner scopes. Bugs 88720 and 88726. */ + /* { dg-do compile } */ + /* { dg-options "-fgnu89-inline" } */ + + void + inline_1 (void) + { + } + + void + inline_2 (void) + { + } + + static void + inline_static_1 (void) + { + } + + static void + inline_static_2 (void) + { + } + + static void inline_static_3 (void); + static void inline_static_4 (void); + + static void + test (void) + { + inline void inline_1 (void); + extern inline void inline_2 (void); + inline void inline_3 (void); + extern inline void inline_4 (void); + inline void inline_static_1 (void); + extern inline void inline_static_2 (void); + inline void inline_static_3 (void); + extern inline void inline_static_4 (void); + } + + void + inline_3 (void) + { + } + + void + inline_4 (void) + { + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/ipa/ipcp-5.c gcc-7.5.0/gcc/testsuite/gcc.dg/ipa/ipcp-5.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/ipa/ipcp-5.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/ipa/ipcp-5.c Thu Mar 14 16:54:43 2019 *************** *** 0 **** --- 1,45 ---- + /* Test that estimated local cloning time benefit of extern inline functions is + zero. */ + + /* { dg-do compile } */ + /* { dg-options "-O3 -fdump-ipa-cp -fno-early-inlining" } */ + /* { dg-add-options bind_pic_locally } */ + + extern int get_int (void); + extern void use_stuff (int); + + int arr[10]; + + inline void + f (int a) + { + arr[0] += a + 5; + arr[1] += a + 50; + arr[2] += a - 3; + arr[3] += a; + arr[4] += a + 21; + arr[5] += a + 900; + arr[6] += a + 2; + arr[7] += a + 3456; + arr[8] += a + 3; + arr[9] += a + 32; + use_stuff (a); + } + + + int + entry (void) + { + int i; + for (i = 0; i < 100; i++) + f (7); + for (i = 0; i < 100; i++) + f (get_int ()); + return 0; + } + + + /* { dg-final { scan-ipa-dump "loc_time: 0" "cp" } } */ + /* { dg-final { scan-ipa-dump-not "replacing param.*with const" "cp" } } */ + + diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/ipa/pr88214.c gcc-7.5.0/gcc/testsuite/gcc.dg/ipa/pr88214.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/ipa/pr88214.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/ipa/pr88214.c Wed Jan 16 15:41:07 2019 *************** *** 0 **** --- 1,10 ---- + /* { dg-do compile } */ + /* { dg-options "-O2" } */ + + void i(); + short a; + void b(e) char * e; + { + i(); + b(a); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr85248_0.c gcc-7.5.0/gcc/testsuite/gcc.dg/lto/pr85248_0.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr85248_0.c Tue Apr 24 15:18:25 2018 --- gcc-7.5.0/gcc/testsuite/gcc.dg/lto/pr85248_0.c Mon Dec 24 12:38:51 2018 *************** *** 2,9 **** /* { dg-lto-do run } */ /* { dg-lto-options { { -flto -O2 } } } */ ! extern void test_alias (int s, int e) __asm__ (__USER_LABEL_PREFIX__ "test"); ! extern void test_noreturn (int s, int e) __asm__ (__USER_LABEL_PREFIX__ "test") __attribute__ ((__noreturn__)); extern inline __attribute__ ((__always_inline__, __gnu_inline__)) void --- 2,14 ---- /* { dg-lto-do run } */ /* { dg-lto-options { { -flto -O2 } } } */ ! #define STR1(X) #X ! #define STR2(X) STR1(X) ! ! extern void test_alias (int s, int e) ! __asm__ (STR2(__USER_LABEL_PREFIX__) "test"); ! extern void test_noreturn (int s, int e) ! __asm__ (STR2(__USER_LABEL_PREFIX__) "test") __attribute__ ((__noreturn__)); extern inline __attribute__ ((__always_inline__, __gnu_inline__)) void diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/memcmp-1.c gcc-7.5.0/gcc/testsuite/gcc.dg/memcmp-1.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/memcmp-1.c Tue Jan 31 14:03:56 2017 --- gcc-7.5.0/gcc/testsuite/gcc.dg/memcmp-1.c Mon Dec 24 12:38:51 2018 *************** *** 8,15 **** #include #include ! int lib_memcmp(const void *a, const void *b, size_t n) asm("memcmp"); ! int lib_strncmp(const char *a, const char *b, size_t n) asm("strncmp"); #ifndef NRAND #define NRAND 10000 --- 8,20 ---- #include #include ! #define STR1(X) #X ! #define STR2(X) STR1(X) ! ! int lib_memcmp(const void *a, const void *b, size_t n) ! asm(STR2(__USER_LABEL_PREFIX__) "memcmp"); ! int lib_strncmp(const char *a, const char *b, size_t n) ! asm(STR2(__USER_LABEL_PREFIX__) "strncmp"); #ifndef NRAND #define NRAND 10000 diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/nested-func-12.c gcc-7.5.0/gcc/testsuite/gcc.dg/nested-func-12.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/nested-func-12.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/nested-func-12.c Fri Aug 30 11:26:01 2019 *************** *** 0 **** --- 1,48 ---- + /* PR target/88620 */ + /* { dg-do run } */ + /* { dg-options "-Ofast --param ipa-cp-eval-threshold=0 -fno-guess-branch-probability -fno-inline-small-functions" } */ + /* { dg-require-effective-target alloca } */ + + void + foo (int n) + { + struct S { int a[n]; }; + + struct S + fn (void) + { + struct S s; + s.a[0] = 42; + return s; + } + + auto struct S + fn2 (void) + { + return fn (); + } + + struct S x; + fn (); + fn2 (); + x = fn (); + + if (x.a[0] != 42) + __builtin_abort (); + + if (fn ().a[0] != 42) + __builtin_abort (); + + __typeof__ (fn ()) *p = &x; + if (p->a[0] != 42) + __builtin_abort (); + + if (fn2 ().a[0] != 42) + __builtin_abort (); + } + + int + main (void) + { + foo (1); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr87929.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr87929.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr87929.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr87929.c Wed Sep 4 08:06:24 2019 *************** *** 0 **** --- 1,16 ---- + /* { dg-do compile } */ + /* { dg-options "-fexceptions -fnon-call-exceptions -fsignaling-nans" } */ + + #define complex __complex__ + #define _Complex_I (1.0iF) + + extern void f2c_4d__( complex float *, complex float *); + extern void abort (void); + + void f2c_4c__(void) + { + complex float x,ret_val; + x = 1234 + 5678 * _Complex_I; + f2c_4d__(&ret_val,&x); + if ( x != ret_val ) abort(); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr88074-2.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr88074-2.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr88074-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr88074-2.c Fri Aug 30 12:07:12 2019 *************** *** 0 **** --- 1,17 ---- + /* PR middle-end/88074 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -fdump-tree-optimized" } */ + /* { dg-add-options float128 } */ + /* { dg-require-effective-target float128 } */ + /* { dg-final { scan-tree-dump-not "link_error " "optimized" } } */ + + extern void link_error (void); + int + main () + { + if (((__FLT128_MAX__ * 0.5 + __FLT128_MAX__ * 0.5i) + / (__FLT128_MAX__ * 0.25 + __FLT128_MAX__ * 0.25i)) + != (_Complex _Float128) 2) + link_error (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr88074.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr88074.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr88074.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr88074.c Fri Aug 30 12:07:12 2019 *************** *** 0 **** --- 1,14 ---- + /* { dg-do compile } */ + /* { dg-options "-O" } */ + + #include + + int main() + { + _Complex double x; + __real x = 3.091e+8; + __imag x = -4.045e+8; + /* This used to spend huge amounts of compile-time inside mpc. */ + volatile _Complex double y = ctan (x); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr88563.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr88563.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr88563.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr88563.c Fri Aug 30 11:22:27 2019 *************** *** 0 **** --- 1,15 ---- + /* PR rtl-optimization/88563 */ + /* { dg-do run { target int128 } } */ + /* { dg-options "-O2 -fno-code-hoisting -fno-tree-ccp -fno-tree-dominator-opts -fno-tree-forwprop -fno-tree-fre -fno-tree-pre -fno-tree-vrp" } */ + + int + main () + { + #if __SIZEOF_LONG_LONG__ == 8 && __SIZEOF_INT128__ == 16 && __CHAR_BIT__ == 8 + unsigned __int128 a = 5; + __builtin_mul_overflow (0xffffffffffffffffULL, (unsigned long long) a, &a); + if (a != ((unsigned __int128)4 << 64 | 0xfffffffffffffffb)) + __builtin_abort (); + #endif + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr88568.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr88568.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr88568.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr88568.c Fri Aug 30 11:26:42 2019 *************** *** 0 **** --- 1,4 ---- + /* PR c/88568 */ + /* { dg-do compile } */ + /* { dg-require-dll "" } */ + __attribute__((dllimport)) struct S var; /* { dg-bogus "storage size of .var. isn.t known" } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr88594.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr88594.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr88594.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr88594.c Fri Aug 30 11:25:16 2019 *************** *** 0 **** --- 1,16 ---- + /* PR target/88594 */ + /* { dg-do compile { target int128 } } */ + /* { dg-options "-O2 -fno-tree-dominator-opts -fno-tree-forwprop -fno-tree-vrp" } */ + + __int128 + foo (__int128 x, __int128 *y) + { + int a; + __int128 z, r; + for (a = 0; a < 17; ++a) + ; + z = x / a; + r = x % a; + *y = z; + return r; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr88870.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr88870.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr88870.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr88870.c Fri Aug 30 11:27:33 2019 *************** *** 0 **** --- 1,23 ---- + /* PR rtl-optimization/88870 */ + /* { dg-do compile } */ + /* { dg-options "-O1 -fexceptions -fnon-call-exceptions -ftrapv -fno-tree-dominator-opts" } */ + + int a, b; + + void + foo (int *x) + { + int c = 0; + { + int d; + x = &c; + for (;;) + { + x = &d; + b = 0; + d = c + 1; + b = c = 1; + ++a; + } + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr89037.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr89037.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr89037.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr89037.c Tue May 7 08:49:05 2019 *************** *** 0 **** --- 1,24 ---- + /* { dg-do run { target int128 } } */ + /* { dg-options "" } */ + + struct s + { + __int128 y : 66; + }; + typedef struct s T; + T a[] = { 1, 10000, 0x12345, 0xff000001, 1ULL << 63, (__int128) 1 << 64, + ((__int128) 1 << 64) | 1 }; + + int + main (void) + { + if (a[0].y != 1 + || a[1].y != 10000 + || a[2].y != 0x12345 + || a[3].y != 0xff000001 + || a[4].y != (1ULL << 63) + || a[5].y != ((__int128) 1 << 64) + || a[6].y != (((__int128) 1 << 64) | 1)) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr89278.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr89278.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr89278.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr89278.c Fri Aug 30 12:02:02 2019 *************** *** 0 **** --- 1,23 ---- + /* PR tree-optimization/89278 */ + /* { dg-do compile } */ + /* { dg-options "-O1 -ftrapv -ftree-loop-distribute-patterns --param max-loop-header-insns=2" } */ + + void + foo (int *w, int x, int y, int z) + { + while (x < y + z) + { + w[x] = 0; + ++x; + } + } + + void + bar (int *__restrict u, int *__restrict w, int x, int y, int z) + { + while (x < y + z) + { + w[x] = u[x]; + ++x; + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr89314.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr89314.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr89314.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr89314.c Fri Aug 30 11:52:29 2019 *************** *** 0 **** --- 1,13 ---- + /* PR tree-optimization/89314 */ + /* { dg-do compile } */ + /* { dg-options "-O2" } */ + + extern __SIZE_TYPE__ strlen (const float *); + void bar (void); + + void + foo (float *s) + { + if (strlen (s) > 0) + bar (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr89342.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr89342.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr89342.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr89342.c Fri Aug 30 12:01:02 2019 *************** *** 0 **** --- 1,11 ---- + /* PR other/89342 */ + /* { dg-do compile } */ + /* { dg-options "-O0" } */ + + __attribute__((optimize("Ofast"))) + void foo (void) + { + __attribute__((optimize("no-inline"))) + void bar (void) {} + bar (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr89354.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr89354.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr89354.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr89354.c Fri Aug 30 11:59:10 2019 *************** *** 0 **** --- 1,22 ---- + /* PR rtl-optimization/89354 */ + /* { dg-do run } */ + /* { dg-options "-O2" } */ + /* { dg-additional-options "-msse2" { target sse2_runtime } } */ + + static unsigned long long q = 0; + + __attribute__((noinline, noclone)) static void + foo (void) + { + q = (q & ~0x1ffffffffULL) | 0x100000000ULL; + } + + int + main () + { + __asm volatile ("" : "+m" (q)); + foo (); + if (q != 0x100000000ULL) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr89520-1.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr89520-1.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr89520-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr89520-1.c Fri Aug 30 12:11:06 2019 *************** *** 0 **** --- 1,13 ---- + /* PR c/89520 */ + /* { dg-do compile } */ + /* { dg-options "-Ofast -w" } */ + + #define A(name) __typeof (__builtin_##name (0)) name (); long name##1 () { return name (); } + #define B(name) A(name) A(name##f) A(name##l) + B (ceil) + B (floor) + B (round) + B (trunc) + B (nearbyint) + B (rint) + B (logb) diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr89520-2.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr89520-2.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr89520-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr89520-2.c Fri Aug 30 12:11:06 2019 *************** *** 0 **** --- 1,42 ---- + /* PR c/89520 */ + /* { dg-do compile } */ + /* { dg-options "-Ofast -w" } */ + + #define A(name) __typeof (__builtin_##name (0)) name (); \ + float name##1 () { return name (); } \ + double name##2 () { return name (); } + #define B(name) A(name) A(name##l) + B (cosh) + B (exp) + B (exp10) + B (exp2) + B (expm1) + B (gamma) + B (j0) + B (j1) + B (lgamma) + B (pow10) + B (sinh) + B (tgamma) + B (y0) + B (y1) + B (acos) + B (acosh) + B (asin) + B (asinh) + B (atan) + B (atanh) + B (cbrt) + B (cos) + B (erf) + B (erfc) + B (log) + B (log10) + B (log2) + B (log1p) + B (sin) + B (tan) + B (tanh) + B (sqrt) + B (fabs) + B (logb) diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr89521-1.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr89521-1.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr89521-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr89521-1.c Fri Aug 30 12:11:38 2019 *************** *** 0 **** --- 1,13 ---- + /* PR c/89521 */ + /* { dg-do compile } */ + /* { dg-options "-Ofast -w" } */ + + #define A(name) __typeof (__builtin_##name (0)) name (); long name##1 () { return name (1); } + #define B(name) A(name) A(name##f) A(name##l) + B (ceil) + B (floor) + B (round) + B (trunc) + B (nearbyint) + B (rint) + B (logb) diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr89521-2.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr89521-2.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr89521-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr89521-2.c Fri Aug 30 12:11:38 2019 *************** *** 0 **** --- 1,42 ---- + /* PR c/89521 */ + /* { dg-do compile } */ + /* { dg-options "-Ofast -w" } */ + + #define A(name) __typeof (__builtin_##name (0)) name (); \ + float name##1 () { return name (1); } \ + double name##2 () { return name (1); } + #define B(name) A(name) A(name##l) + B (cosh) + B (exp) + B (exp10) + B (exp2) + B (expm1) + B (gamma) + B (j0) + B (j1) + B (lgamma) + B (pow10) + B (sinh) + B (tgamma) + B (y0) + B (y1) + B (acos) + B (acosh) + B (asin) + B (asinh) + B (atan) + B (atanh) + B (cbrt) + B (cos) + B (erf) + B (erfc) + B (log) + B (log10) + B (log2) + B (log1p) + B (sin) + B (tan) + B (tanh) + B (sqrt) + B (fabs) + B (logb) diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr89590.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr89590.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr89590.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr89590.c Fri Aug 30 12:12:24 2019 *************** *** 0 **** --- 1,11 ---- + /* PR middle-end/89590 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -Wall -w" } */ + + void free (void *); + + void + foo (void) + { + ((void (*)()) free) (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr89679.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr89679.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr89679.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr89679.c Fri Aug 30 12:19:33 2019 *************** *** 0 **** --- 1,26 ---- + /* PR rtl-optimization/89679 */ + /* { dg-do run } */ + /* { dg-options "-Og -frerun-cse-after-loop -fno-tree-fre" } */ + + unsigned short g; + + void + foo (unsigned long long x) + { + if (x != 0xffff) + __builtin_abort (); + } + + int + main () + { + #if __SIZEOF_SHORT__ == 2 && __SIZEOF_INT__ == 4 && __CHAR_BIT__ == 8 + unsigned short d = 0; + unsigned long long x, c = ~0; + c = c >> d; + __builtin_memset (&d, c, 2); + x = d + g; + foo (x); + #endif + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr89734.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr89734.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr89734.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr89734.c Fri Aug 30 12:25:43 2019 *************** *** 0 **** --- 1,12 ---- + /* PR c/89734 */ + /* { dg-do compile } */ + /* { dg-options "" } */ + + typedef const int CI; + typedef _Atomic int AI; + + CI foo (void); + const int foo (void); + + AI baz (void); + _Atomic int baz (void); diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr90082.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr90082.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr90082.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr90082.c Fri Aug 30 12:37:28 2019 *************** *** 0 **** --- 1,13 ---- + /* PR rtl-optimization/90082 */ + /* { dg-do compile } */ + /* { dg-options "-O1 -fnon-call-exceptions -ftrapv" } */ + + void *buf[5]; + + void + foo (int a) + { + if (__builtin_setjmp (buf) == 0) + __asm__ ("" : : "n" (a * 2)); /* { dg-error "impossible constraint in 'asm'" } */ + /* { dg-warning "asm operand 0 probably doesn't match constraints" "" { target *-*-* } .-1 } */ + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr90756.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr90756.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr90756.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr90756.c Fri Aug 30 12:48:18 2019 *************** *** 0 **** --- 1,26 ---- + /* PR rtl-optimization/90756 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -Wno-psabi" } */ + /* { dg-additional-options "-mno-sse" { target ia32 } } */ + + typedef float B __attribute__((vector_size(4 * sizeof (float)))); + typedef unsigned long long C __attribute__((vector_size(4 * sizeof (long long)))); + typedef short D __attribute__((vector_size(4 * sizeof (short)))); + B z; + void foo (C); + C bar (D); + B baz (); + D qux (B); + + void + quux (int x) + { + B n = z, b = z; + while (1) + switch (x) + { + case 0: n = baz (); /* FALLTHRU */ + case 1: { B o = n; n = b; b = o; } /* FALLTHRU */ + case 2: { D u = qux (b); C v = bar (u); foo (v); } + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pr90760.c gcc-7.5.0/gcc/testsuite/gcc.dg/pr90760.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pr90760.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pr90760.c Sat Nov 2 12:27:29 2019 *************** *** 0 **** --- 1,9 ---- + /* PR c/90760 */ + /* { dg-do compile } */ + /* { dg-require-alias "" } */ + /* { dg-require-named-sections "" } */ + + void bar (void) {} + void foo (void) __attribute__ ((alias ("bar"))); /* { dg-error "section of alias 'foo' must match section of its target" } */ + void foo (void) __attribute__ ((section ("baz"))); + void qux (void) __attribute__ ((alias ("bar"), section ("baz"))); /* { dg-error "section of alias 'qux' must match section of its target" } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pubtypes-2.c gcc-7.5.0/gcc/testsuite/gcc.dg/pubtypes-2.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pubtypes-2.c Fri Dec 6 19:26:26 2013 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pubtypes-2.c Fri Aug 30 11:24:34 2019 *************** *** 2,8 **** /* { dg-options "-O0 -gdwarf-2 -dA" } */ /* { dg-skip-if "Unmatchable assembly" { mmix-*-* } { "*" } { "" } } */ /* { dg-final { scan-assembler "__debug_pubtypes" } } */ ! /* { dg-final { scan-assembler "long+\[ \t\]+0x13b+\[ \t\]+\[#;]+\[ \t\]+Pub Info Length" } } */ /* { dg-final { scan-assembler "used_struct\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ /* { dg-final { scan-assembler-not "unused_struct\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ --- 2,8 ---- /* { dg-options "-O0 -gdwarf-2 -dA" } */ /* { dg-skip-if "Unmatchable assembly" { mmix-*-* } { "*" } { "" } } */ /* { dg-final { scan-assembler "__debug_pubtypes" } } */ ! /* { dg-final { scan-assembler "long+\[ \t\]+0x12e+\[ \t\]+\[#;]+\[ \t\]+Pub Info Length" } } */ /* { dg-final { scan-assembler "used_struct\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ /* { dg-final { scan-assembler-not "unused_struct\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pubtypes-3.c gcc-7.5.0/gcc/testsuite/gcc.dg/pubtypes-3.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pubtypes-3.c Sat Nov 15 16:06:55 2014 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pubtypes-3.c Fri Aug 30 11:24:34 2019 *************** *** 2,8 **** /* { dg-options "-O0 -gdwarf-2 -dA" } */ /* { dg-skip-if "Unmatchable assembly" { mmix-*-* } { "*" } { "" } } */ /* { dg-final { scan-assembler "__debug_pubtypes" } } */ ! /* { dg-final { scan-assembler "long+\[ \t\]+0x13b+\[ \t\]+\[#;]+\[ \t\]+Pub Info Length" } } */ /* { dg-final { scan-assembler "used_struct\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ /* { dg-final { scan-assembler-not "unused_struct\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ /* { dg-final { scan-assembler-not "\"list_name_type\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ --- 2,8 ---- /* { dg-options "-O0 -gdwarf-2 -dA" } */ /* { dg-skip-if "Unmatchable assembly" { mmix-*-* } { "*" } { "" } } */ /* { dg-final { scan-assembler "__debug_pubtypes" } } */ ! /* { dg-final { scan-assembler "long+\[ \t\]+0x12e+\[ \t\]+\[#;]+\[ \t\]+Pub Info Length" } } */ /* { dg-final { scan-assembler "used_struct\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ /* { dg-final { scan-assembler-not "unused_struct\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ /* { dg-final { scan-assembler-not "\"list_name_type\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/pubtypes-4.c gcc-7.5.0/gcc/testsuite/gcc.dg/pubtypes-4.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/pubtypes-4.c Sat Nov 15 16:06:55 2014 --- gcc-7.5.0/gcc/testsuite/gcc.dg/pubtypes-4.c Fri Aug 30 11:24:34 2019 *************** *** 2,8 **** /* { dg-options "-O0 -gdwarf-2 -dA" } */ /* { dg-skip-if "Unmatchable assembly" { mmix-*-* } { "*" } { "" } } */ /* { dg-final { scan-assembler "__debug_pubtypes" } } */ ! /* { dg-final { scan-assembler "long+\[ \t\]+0x172+\[ \t\]+\[#;]+\[ \t\]+Pub Info Length" } } */ /* { dg-final { scan-assembler "used_struct\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ /* { dg-final { scan-assembler-not "unused_struct\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ /* { dg-final { scan-assembler "\"list_name_type\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ --- 2,8 ---- /* { dg-options "-O0 -gdwarf-2 -dA" } */ /* { dg-skip-if "Unmatchable assembly" { mmix-*-* } { "*" } { "" } } */ /* { dg-final { scan-assembler "__debug_pubtypes" } } */ ! /* { dg-final { scan-assembler "long+\[ \t\]+0x165+\[ \t\]+\[#;]+\[ \t\]+Pub Info Length" } } */ /* { dg-final { scan-assembler "used_struct\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ /* { dg-final { scan-assembler-not "unused_struct\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ /* { dg-final { scan-assembler "\"list_name_type\\\\0\"+\[ \t\]+\[#;]+\[ \t\]+external name" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/neon-immediate-timode.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/neon-immediate-timode.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/neon-immediate-timode.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/neon-immediate-timode.c Wed Apr 10 13:34:54 2019 *************** *** 0 **** --- 1,10 ---- + union a { + char b; + long long c; + }; + union a d; + int g(int, union a, union a); + void e() { + union a f[2] = {-1L}; + g(0, d, f[0]); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr68037-1.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr68037-1.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr68037-1.c Fri Jun 10 12:38:16 2016 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr68037-1.c Sun Dec 30 12:28:54 2018 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do run { target i?86-*-* x86_64-*-* } } */ + /* { dg-skip-if "PR81210 sp not aligned to 16 bytes" { *-*-darwin* } } */ /* { dg-options "-mgeneral-regs-only" } */ extern void exit (int); diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr68037-2.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr68037-2.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr68037-2.c Fri Jun 10 12:38:16 2016 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr68037-2.c Sun Dec 30 12:28:54 2018 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do run { target i?86-*-* x86_64-*-* } } */ + /* { dg-skip-if "PR81210 sp not aligned to 16 bytes" { *-*-darwin* } } */ /* { dg-options "-mgeneral-regs-only" } */ extern void exit (int); diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr68037-3.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr68037-3.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr68037-3.c Fri Jun 10 12:38:16 2016 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr68037-3.c Sun Dec 30 12:28:54 2018 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do run { target i?86-*-* x86_64-*-* } } */ + /* { dg-skip-if "PR81210 sp not aligned to 16 bytes" { *-*-darwin* } } */ /* { dg-options "-mgeneral-regs-only" } */ #include diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr68264.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr68264.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr68264.c Wed Jan 27 23:04:25 2016 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr68264.c Sun Dec 30 12:28:54 2018 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do run } */ + /* { dg-skip-if "PR68356 no math-errno on darwin" { "*-*-darwin*" } } */ /* { dg-add-options ieee } */ /* { dg-require-effective-target fenv_exceptions } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr86554-1.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr86554-1.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr86554-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr86554-1.c Tue Mar 26 11:18:26 2019 *************** *** 0 **** --- 1,35 ---- + /* { dg-do run } */ + + struct foo + { + unsigned x; + }; + typedef struct foo foo; + + static inline int zot(foo *f) + { + int ret; + + if (f->x > 0x7FFFFFFF) + ret = (int)(f->x - 0x7FFFFFFF); + else + ret = (int)f->x - 0x7FFFFFFF; + return ret; + } + + void __attribute__((noinline,noclone)) bar(foo *f) + { + int ret = zot(f); + volatile int x = ret; + if (ret < 1) + __builtin_abort (); + } + + int main() + { + foo f; + f.x = 0x800003f8; + + bar(&f); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr86554-2.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr86554-2.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr86554-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr86554-2.c Tue Mar 26 11:18:26 2019 *************** *** 0 **** --- 1,49 ---- + /* { dg-do run } */ + /* { dg-require-effective-target int32plus } */ + + struct s { __INT64_TYPE__ e; }; + + static void f (struct s *ps) + { + volatile __INT64_TYPE__ m = 9223372036854775807; + const char *str = "11E"; + int r; + __INT64_TYPE__ sum; + + ps->e = 0; + + for (;;) + { + if (*str++ != '1') + break; + ps->e ++; + } + + r = 1; + sum = m; + + if (sum >= 0 && ps->e >= 0) + { + __UINT64_TYPE__ uc; + uc = (__UINT64_TYPE__) sum + (__UINT64_TYPE__) ps->e; + if (uc > 9223372036854775807) + r = 2; + else + sum = 17; + } + else + sum = sum + ps->e; + + if (sum != 9223372036854775807) + __builtin_abort (); + if (r != 2) + __builtin_abort (); + ps->e = sum; + } + + int main (void) + { + struct s s; + f (&s); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89008.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89008.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89008.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89008.c Thu Jan 24 11:07:19 2019 *************** *** 0 **** --- 1,27 ---- + /* { dg-do run } */ + /* { dg-require-effective-target int32plus } */ + + unsigned long a, c; + unsigned b; + int d, e; + long f() + { + unsigned long g = 0; + for (d = 0; d < 5; d += 2) + for (e = 0; e < 5; e += 3) + { + c = 4 + b; + g = -b - b; + b = 5 * (b << 24); + } + a = g; + return 0; + } + + int main() + { + f(); + if (a) + __builtin_abort(); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89091.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89091.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89091.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89091.c Fri Aug 30 12:08:04 2019 *************** *** 0 **** --- 1,10 ---- + /* PR middle-end/89091 */ + /* { dg-do compile { target int128 } } */ + + struct S { unsigned __int128 s : 65; }; + + int + foo (struct S *x, int y) + { + return y && x->s; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89135.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89135.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89135.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89135.c Mon Sep 2 14:14:14 2019 *************** *** 0 **** --- 1,35 ---- + /* { dg-do compile } */ + /* { dg-require-effective-target indirect_jumps } */ + /* { dg-require-effective-target label_values } */ + + typedef __INTPTR_TYPE__ intptr_t; + intptr_t a, b, c, d; + int foo (void) { return 0; } + int baz (void); + + void + bar (void) + { + intptr_t g = (intptr_t) &&h; + void *i = &&j, *k = &&l; + j: + if (baz ()) + { + intptr_t **n = (intptr_t **) &a; + l: + b = 0; + for (; b >= 0;) + goto *k; + h: + **n = 0; + for (;;) + { + intptr_t *o = &c; + g = foo (); + *o = g; + if (c) + goto *d; + } + } + goto *i; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89223.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89223.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89223.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89223.c Tue Mar 26 13:18:23 2019 *************** *** 0 **** --- 1,10 ---- + /* { dg-do compile { target int128 } } */ + + int a[5]; + unsigned __int128 b; + void c() + { + b = 4; + for (;; b--) + a[b] = ({ a[b + b]; }); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89505.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89505.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89505.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89505.c Thu Mar 21 12:28:26 2019 *************** *** 0 **** --- 1,22 ---- + /* { dg-do run } */ + + struct S { int i; void *p; int j; }; + int a; + int __attribute__((noinline)) + foo (struct S * __restrict p, int q) + { + int *x = &p->j; + if (q) + x = &a; + p->j = 1; + *x = 2; + return p->j; + } + + int main() + { + struct S s; + if (foo (&s, 0) != 2) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89572.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89572.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89572.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89572.c Mon Sep 2 14:14:14 2019 *************** *** 0 **** --- 1,28 ---- + /* { dg-do compile } */ + /* { dg-additional-options "-finline-functions" } */ + + int vh, it, k1; + + void + vn (void) + { + ++vh; + if (vh == 0 && it == 0) + k1 = -k1; + } + + __attribute__ ((returns_twice)) void + ef (int *uw) + { + while (uw != (void *) 0) + { + vn (); + *uw = 0; + } + } + + void + gu (int *uw) + { + ef (uw); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89677.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89677.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89677.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89677.c Fri Aug 30 16:44:17 2019 *************** *** 0 **** --- 1,15 ---- + /* { dg-do compile } */ + /* { dg-require-effective-target int32plus } */ + + int a, b, d; + unsigned c; + float e, f, g; + void h() { + float *i = &g; + for (; c < 10; c += 3) + for (; d; d += 3) { + a = *i; + g = f + 0; + f = b + *i + (b - e + 305219) + -b + 3; + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89710.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89710.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr89710.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr89710.c Mon Sep 2 14:14:14 2019 *************** *** 0 **** --- 1,30 ---- + /* { dg-do compile } */ + + void + gm (int *); + + __attribute__ ((returns_twice)) void + jg (void) + { + } + + void + eb (void) + { + int r6 = 0; + + if (r6 != 0) + gm (&r6); + } + + void + gm (int *r6) + { + jg (); + + for (;;) + { + eb (); + *r6 = 0; + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr90020.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr90020.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr90020.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr90020.c Mon Sep 2 12:56:24 2019 *************** *** 0 **** --- 1,29 ---- + /* { dg-do run } */ + /* { dg-require-weak "" } */ + /* { dg-additional-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } } */ + /* { dg-additional-options "-Wl,-flat_namespace" { target *-*-darwin[89]* } } */ + + void __attribute__((noinline,noclone)) + check (int i) + { + if (i == 0) + __builtin_exit (0); + } + + int i; + extern int x __attribute__((weak)); + + int main(int argc, char **argv) + { + if (argc) + { + check (i); + return x; + } + else + { + check (i); + return x-1; + } + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr90071.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr90071.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr90071.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr90071.c Fri Aug 30 16:44:17 2019 *************** *** 0 **** --- 1,24 ---- + /* { dg-do compile } */ + + int a; + static int b; + + void + foo () + { + int d; + int e = (int) (__INTPTR_TYPE__) &&f; + void *g = &&h; + h: ++e; + if (a) + i: goto *g; + for (;;) + { + e = 0; + if (b) + goto i; + } + f: + goto *({ d || e < 0 || e >= 2; }); + &e; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr90278.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr90278.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr90278.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr90278.c Mon Sep 2 12:56:24 2019 *************** *** 0 **** --- 1,13 ---- + /* { dg-do compile } */ + /* { dg-additional-options "-fexceptions -fnon-call-exceptions" } */ + + double + hc (void) + { + double dp = 0.0; + double ek[1]; + + ek[0] = 1.0 / dp < 0.0; + + return ek[0]; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr90328.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr90328.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr90328.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr90328.c Thu Sep 5 12:11:52 2019 *************** *** 0 **** --- 1,24 ---- + /* { dg-do run } */ + + void g(int*__restrict x, int*y) + { + *x = *y; + } + + void __attribute__((noinline,noclone)) f(int* a,int* b) + { + for(int i=0;i<1024;++i) + g(a+i,b+i); + } + + int main() + { + int x[1025]; + for (int i = 0; i < 1025; ++i) + x[i] = i+1; + f(x+1, x); + for (int i = 0; i < 1025; ++i) + if (x[i] != 1) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr91126.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr91126.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr91126.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr91126.c Mon Sep 2 12:56:24 2019 *************** *** 0 **** --- 1,28 ---- + /* { dg-do run } */ + + struct S + { + __INT32_TYPE__ a : 24; + __INT32_TYPE__ b : 8; + } s; + + int + main() + { + s.a = 0xfefefe; + s.b = 0xfe; + unsigned char c; + c = ((unsigned char *)&s)[0]; + if (c != 0xfe) + __builtin_abort (); + c = ((unsigned char *)&s)[1]; + if (c != 0xfe) + __builtin_abort (); + c = ((unsigned char *)&s)[2]; + if (c != 0xfe) + __builtin_abort (); + c = ((unsigned char *)&s)[3]; + if (c != 0xfe) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr91200.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr91200.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr91200.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr91200.c Mon Sep 2 12:56:24 2019 *************** *** 0 **** --- 1,32 ---- + /* { dg-do compile } */ + + int printf (const char *, ...); + + char a; + int b, c, **d; + + int main () + { + int f = -128, *g, *h[2] = {0, 0}, i; + printf("0"); + if (a) + { + while (f > a) { + int *j = &i; + *j |= 0; + } + h[i] = &c; + } + if (h[1]) + { + int **k = &g; + *k = &f; + while (i) + { + int **l[] = {&g}; + } + int **m = &g; + *d = *m = &b; + } + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr91812.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr91812.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr91812.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/pr91812.c Thu Oct 24 09:38:56 2019 *************** *** 0 **** --- 1,26 ---- + /* { dg-do compile } */ + /* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } { "" } } */ + /* { dg-options "-fdump-tree-optimized-blocks" } */ + + unsigned register1; + unsigned register2; + + void busy_wait_for_register (int x) + { + volatile unsigned* ptr; + switch(x) { + case 0x1111: + ptr = ®ister1; + break; + + case 0x2222: + ptr = ®ister2; + break; + + default: + return; + } + while (*ptr) {} + } + + /* { dg-final { scan-tree-dump "loop depth 1" "optimized" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/torture/restrict-7.c gcc-7.5.0/gcc/testsuite/gcc.dg/torture/restrict-7.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/torture/restrict-7.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/torture/restrict-7.c Thu Sep 5 12:11:52 2019 *************** *** 0 **** --- 1,27 ---- + /* { dg-do run } */ + + extern void abort (void); + + static inline __attribute__((always_inline)) void + copy(int *restrict a, int *restrict b) + { + *b = *a; + *a = 7; + } + + void __attribute__((noinline)) + floppy(int mat[static 2], unsigned idxs[static 3]) + { + for (int i = 0; i < 3; i++) + copy(&mat[i%2], &mat[idxs[i]]); + } + + int main() + { + int mat[2] = {10, 20}; + unsigned idxs[3] = {1, 0, 1}; + floppy(mat, idxs); + if (mat[0] != 7 || mat[1] != 10) + abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c gcc-7.5.0/gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c Wed Nov 16 22:10:52 2016 --- gcc-7.5.0/gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c Mon Dec 24 12:30:24 2018 *************** const char *buf_cold; *** 13,19 **** --- 13,23 ---- void foo (int path); + #ifdef __APPLE__ + __attribute__ ((section ("__TEXT,__text"))) + #else __attribute__((section(".text"))) + #endif int main (int argc, char *argv[]) { *************** foo (int path) *** 43,45 **** --- 47,50 ---- } /* { dg-final-use { scan-assembler "\.section\[\t \]*\.text\.unlikely\[\\n\\r\]+\[\t \]*\.size\[\t \]*foo\.cold\.0" { target *-*-linux* *-*-gnu* } } } */ + /* { dg-final-use { scan-assembler "\.section\[\t \]*__TEXT,__text_cold\.\*\[\\n\\r\]+_foo\.cold\.0" { target *-*-darwin* } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c gcc-7.5.0/gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c Wed Nov 16 22:10:52 2016 --- gcc-7.5.0/gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c Mon Dec 24 12:30:24 2018 *************** main (int argc, char *argv[]) *** 28,34 **** --- 28,38 ---- void NOINLINE foo (int path) { + #ifdef __APPLE__ + static int i __attribute__ ((section ("__DATA,__data"))); + #else static int i __attribute__((section(".data"))); + #endif if (path) { for (i = 0; i < SIZE; i++) *************** foo (int path) *** 42,44 **** --- 46,49 ---- } /* { dg-final-use { scan-assembler "\.section\[\t \]*\.text\.unlikely\[\\n\\r\]+\[\t \]*\.size\[\t \]*foo\.cold\.0" { target *-*-linux* *-*-gnu* } } } */ + /* { dg-final-use { scan-assembler "\.section\[\t \]*__TEXT,__text_cold\.\*\[\\n\\r\]+_foo\.cold\.0:" { target *-*-darwin* } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c gcc-7.5.0/gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c Wed Nov 16 22:10:52 2016 --- gcc-7.5.0/gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c Mon Dec 24 12:30:24 2018 *************** *** 9,15 **** --- 9,19 ---- #define NOINLINE __attribute__((noinline)) __attribute__ ((noclone)) const char *sarr[SIZE]; + #ifdef __APPLE__ + const char *buf_hot __attribute__ ((section ("__DATA,__data"))); + #else const char *buf_hot __attribute__ ((section (".data"))); + #endif const char *buf_cold; void foo (int path); *************** foo (int path) *** 43,45 **** --- 47,50 ---- } /* { dg-final-use { scan-assembler "\.section\[\t \]*\.text\.unlikely\[\\n\\r\]+\[\t \]*\.size\[\t \]*foo\.cold\.0" { target *-*-linux* *-*-gnu* } } } */ + /* { dg-final-use { scan-assembler "\.section\[\t \]*__TEXT,__text_cold\.\*\[\\n\\r\]+_foo\.cold\.0:" { target *-*-darwin* } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr89872.c gcc-7.5.0/gcc/testsuite/gcc.dg/tree-ssa/pr89872.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr89872.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/tree-ssa/pr89872.c Fri Aug 30 12:33:40 2019 *************** *** 0 **** --- 1,27 ---- + /* PR c/89872 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -fdump-tree-optimized" } */ + /* { dg-final { scan-tree-dump-times " ={v} 1;" 1 "optimized" } } */ + /* { dg-final { scan-tree-dump-times " ={v} 2;" 1 "optimized" } } */ + /* { dg-final { scan-tree-dump-times " ={v} 3;" 1 "optimized" } } */ + /* { dg-final { scan-tree-dump-times " ={v} 4;" 1 "optimized" } } */ + /* { dg-final { scan-tree-dump-times " ={v} 0;" 1 "optimized" } } */ + /* { dg-final { scan-tree-dump-times " ={v} " 10 "optimized" } } */ + + void + foo (void) + { + (volatile int){1} + (volatile int){2}; + } + + void + bar (void) + { + (volatile int){3}; + } + + void + baz (void) + { + (volatile int){4} / (volatile int){0}; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/tsan/pr88030.c gcc-7.5.0/gcc/testsuite/gcc.dg/tsan/pr88030.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/tsan/pr88030.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/tsan/pr88030.c Wed Sep 4 08:06:24 2019 *************** *** 0 **** --- 1,14 ---- + /* { dg-do compile } */ + /* { dg-options "-fsanitize=thread -fnon-call-exceptions -fexceptions" } */ + + typedef __complex__ float Value; + typedef struct { + Value a[16 / sizeof (Value)]; + } A; + + A sum(A a,A b) + { + a.a[0]+=b.a[0]; + a.a[1]+=b.a[1]; + return a; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/tsan/pr90208-2.c gcc-7.5.0/gcc/testsuite/gcc.dg/tsan/pr90208-2.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/tsan/pr90208-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/tsan/pr90208-2.c Fri Aug 30 12:39:09 2019 *************** *** 0 **** --- 1,20 ---- + /* PR tree-optimization/90208 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -fexceptions -fsanitize=thread" } */ + + void *b[5]; + void foo (void); + + void + bar (int d) + { + while (d) + foo (); + } + + void + baz (void) + { + bar (2); + __builtin_setjmp (b); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/uninit-19.c gcc-7.5.0/gcc/testsuite/gcc.dg/uninit-19.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/uninit-19.c Wed Nov 23 09:49:25 2016 --- gcc-7.5.0/gcc/testsuite/gcc.dg/uninit-19.c Mon Sep 9 20:21:30 2019 *************** fn2 () *** 23,27 **** fn1 (l, &d, &e, &g, &i, &h, &k, n); /* 23. */ } ! /* { dg-warning "may be used uninitialized" "" { target { { nonpic } || { hppa*64*-*-* } } } 14 } */ ! /* { dg-warning "may be used uninitialized" "" { target { ! { { nonpic } || { hppa*64*-*-* } } } } 23 } */ --- 23,27 ---- fn1 (l, &d, &e, &g, &i, &h, &k, n); /* 23. */ } ! /* { dg-warning "may be used uninitialized" "" { target { { nonpic } || { hppa*64*-*-* *-*-darwin* } } } 14 } */ ! /* { dg-warning "may be used uninitialized" "" { target { ! { { nonpic } || { hppa*64*-*-* *-*-darwin* } } } } 23 } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/uninit-pr89296.c gcc-7.5.0/gcc/testsuite/gcc.dg/uninit-pr89296.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/uninit-pr89296.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/uninit-pr89296.c Mon Sep 2 14:14:14 2019 *************** *** 0 **** --- 1,13 ---- + /* { dg-do compile } */ + /* { dg-options "-O2 -Wuninitialized" } */ + + int get_a_value (); + void printk(const char *); + void test_func() + { + int loop; + while (!loop) { /* { dg-warning "is used uninitialized" } */ + loop = get_a_value(); + printk("..."); + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c gcc-7.5.0/gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c Wed Sep 4 08:06:24 2019 *************** *** 0 **** --- 1,31 ---- + /* { dg-do compile } */ + /* { dg-additional-options "-fno-math-errno" } */ + /* { dg-additional-options "-march=x86-64" { target x86_64-*-* i?86-*-* } } */ + + long int lrint(double x); + + int a, b; + union c { + int d; + }; + + int e() + { + int f, g, h; + long i, j, k; + double l, m = b = lrint(0.3127); + a = b >> 16 >> 8 & 255; + ((union c *)e)->d = a; + k = m; + h = k >> 16 >> 8 & 255; + ((union c *)(e + 4))->d = h; + j = lrint(l); + g = j >> 16 >> 8 & 255; + ((union c *)(e + 8))->d = g; + i = lrint(0.292); + f = i >> 16 >> 8 & 255; + ((union c *)(e + 12))->d = f; + return 0; + } + + /* { dg-final { scan-tree-dump "basic block vectorized" "slp2" { target { { x86_64-*-* i?86-*-* } && ilp32 } } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/vect/pr81740-1.c gcc-7.5.0/gcc/testsuite/gcc.dg/vect/pr81740-1.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/vect/pr81740-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/vect/pr81740-1.c Wed Sep 4 11:56:15 2019 *************** *** 0 **** --- 1,22 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vect_int } */ + + #include "tree-vect.h" + + int a[8][10] = { [2][5] = 4 }, c; + + int + main () + { + short b; + int i, d; + check_vect (); + for (b = 4; b >= 0; b--) + for (c = 0; c <= 6; c++) + a[c + 1][b + 2] = a[c][b + 1]; + for (i = 0; i < 8; i++) + for (d = 0; d < 10; d++) + if (a[i][d] != (i == 3 && d == 6) * 4) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/vect/pr81740-2.c gcc-7.5.0/gcc/testsuite/gcc.dg/vect/pr81740-2.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/vect/pr81740-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/vect/pr81740-2.c Wed Sep 4 11:56:15 2019 *************** *** 0 **** --- 1,24 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vect_int } */ + + #include "tree-vect.h" + + int a[8][10] = { [2][5] = 4 }, c; + + int + main () + { + short b; + int i, d; + check_vect (); + for (b = 4; b >= 0; b--) + for (c = 6; c >= 0; c--) + a[c + 1][b + 2] = a[c][b + 1]; + for (i = 0; i < 8; i++) + for (d = 0; d < 10; d++) + if (a[i][d] != (i == 3 && d == 6) * 4) + __builtin_abort (); + return 0; + } + + /* { dg-final { scan-tree-dump "OUTER LOOP VECTORIZED" "vect" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/vect/pr88903-1.c gcc-7.5.0/gcc/testsuite/gcc.dg/vect/pr88903-1.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/vect/pr88903-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/vect/pr88903-1.c Wed Sep 4 08:06:24 2019 *************** *** 0 **** --- 1,26 ---- + #include "tree-vect.h" + + int x[1024]; + + void __attribute__((noinline)) + foo() + { + for (int i = 0; i < 512; ++i) + { + x[2*i] = x[2*i] << ((i+1) & 31); + x[2*i+1] = x[2*i+1] << ((i+1) & 31); + } + } + + int + main() + { + check_vect (); + for (int i = 0; i < 1024; ++i) + x[i] = i; + foo (); + for (int i = 0; i < 1024; ++i) + if (x[i] != i << ((i/2+1) & 31)) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.dg/vect/pr88903-2.c gcc-7.5.0/gcc/testsuite/gcc.dg/vect/pr88903-2.c *** gcc-7.4.0/gcc/testsuite/gcc.dg/vect/pr88903-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.dg/vect/pr88903-2.c Wed Sep 4 08:06:24 2019 *************** *** 0 **** --- 1,28 ---- + #include "tree-vect.h" + + int x[1024]; + int y[1024]; + int z[1024]; + + void __attribute__((noinline)) foo() + { + for (int i = 0; i < 512; ++i) + { + x[2*i] = x[2*i] << y[2*i]; + x[2*i+1] = x[2*i+1] << y[2*i]; + z[2*i] = y[2*i]; + z[2*i+1] = y[2*i+1]; + } + } + + int main() + { + check_vect (); + for (int i = 0; i < 1024; ++i) + x[i] = i, y[i] = i % 8; + foo (); + for (int i = 0; i < 1024; ++i) + if (x[i] != i << ((i & ~1) % 8)) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/aarch64/pr90075.c gcc-7.5.0/gcc/testsuite/gcc.target/aarch64/pr90075.c *** gcc-7.4.0/gcc/testsuite/gcc.target/aarch64/pr90075.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/aarch64/pr90075.c Tue Apr 30 09:31:04 2019 *************** *** 0 **** --- 1,21 ---- + /* { dg-do compile } */ + /* { dg-additional-options "-O1" } */ + + typedef struct { + float one, two; + } twofloats; + + float + bug (twofloats tf) + { + float f1, f2; + union { + twofloats tfloats; + float arr[2]; + } utfloats; + + utfloats.tfloats = tf; + f1 = utfloats.arr[1]; + f2 = __builtin_copysignf (0, f1); + return f2; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/arm/f16_f64_conv_no_dp.c gcc-7.5.0/gcc/testsuite/gcc.target/arm/f16_f64_conv_no_dp.c *** gcc-7.4.0/gcc/testsuite/gcc.target/arm/f16_f64_conv_no_dp.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/arm/f16_f64_conv_no_dp.c Wed Mar 13 11:46:56 2019 *************** *** 0 **** --- 1,16 ---- + /* { dg-do compile } */ + /* { dg-require-effective-target arm_fp16_ok } */ + /* { dg-skip-if "do not override fpu" { *-*-* } { "-mfpu=*" } { "-mfpu=fpv5-sp-d16" } } */ + /* { dg-skip-if "do not disable fpu" { *-*-* } { "-mfloat-abi=soft" } { * } } */ + /* { dg-skip-if "do not override fp16-format" { *-*-* } { "-mfp16-format=*" } { "-mfp16-format=ieee" } } */ + /* { dg-options "-O1 -mfpu=fpv5-sp-d16 -mfloat-abi=hard -mfp16-format=ieee" } */ + + __fp16 foo (double a) + { + return a; + } + + double bar (__fp16 a) + { + return a; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/arm/pr88167-1.c gcc-7.5.0/gcc/testsuite/gcc.target/arm/pr88167-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/arm/pr88167-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/arm/pr88167-1.c Fri Oct 25 14:39:06 2019 *************** *** 0 **** --- 1,15 ---- + /* { dg-do compile } */ + /* { dg-require-effective-target arm_thumb1_ok } */ + /* { dg-options "-O2 -mthumb" } */ + + void *retaddr; + + void foo (void) { + retaddr = __builtin_return_address (0); + + /* Used for enforcing registers stacking. */ + asm volatile ("" : : : "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", + "r8", "r9", "r10", "r11", "r12"); + } + + /* { dg-final { scan-assembler-not "mov\tlr," } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/arm/pr88167-2.c gcc-7.5.0/gcc/testsuite/gcc.target/arm/pr88167-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/arm/pr88167-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/arm/pr88167-2.c Fri Oct 25 14:39:06 2019 *************** *** 0 **** --- 1,18 ---- + /* { dg-do run } */ + /* { dg-options "-O2" } */ + /* { dg-skip-if "" { ! { arm_thumb1 } } } */ + + int __attribute__((noclone, noinline)) + foo (int a, long long b) { + /* Used for enforcing registers stacking. */ + asm volatile ("" : : : "r0", "r1", "r2", "r3", + "r8", "r9", "r10", "r11", "r12"); + return (int) b; + } + + int main () + { + if (foo (1, 0x1000000000000003LL) != 3) + __builtin_abort (); + __builtin_exit (0); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/arm/pr88648-asm-syntax-unified.c gcc-7.5.0/gcc/testsuite/gcc.target/arm/pr88648-asm-syntax-unified.c *** gcc-7.4.0/gcc/testsuite/gcc.target/arm/pr88648-asm-syntax-unified.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/arm/pr88648-asm-syntax-unified.c Mon Feb 11 09:31:13 2019 *************** *** 0 **** --- 1,14 ---- + /* Test for unified syntax assembly generation. */ + /* { dg-do compile } */ + /* { dg-require-effective-target arm_arch_v7a_ok } */ + /* { dg-add-options arm_arch_v7a } */ + /* { dg-options "-marm -march=armv7-a -masm-syntax-unified" } */ + + void test () + { + asm("nop"); + } + + /* { dg-final { scan-assembler-times {\.syntax\sunified} 3 } } */ + /* { dg-final { scan-assembler-not {\.syntax\sdivided} } } */ + diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/arm/pr89222.c gcc-7.5.0/gcc/testsuite/gcc.target/arm/pr89222.c *** gcc-7.4.0/gcc/testsuite/gcc.target/arm/pr89222.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/arm/pr89222.c Tue Jul 16 13:13:26 2019 *************** *** 0 **** --- 1,32 ---- + /* { dg-do compile } */ + /* { dg-options "-O2" } */ + + void g (void); + + void f1 (int x) + { + if (x != (int) g + 3) + return; + g(); + } + + void (*a2)(void); + + void f2 (void) + { + a2 = &g + 3; + } + + typedef void (*__sighandler_t)(int); + void handler (int); + + void f3 (int x) + { + __sighandler_t h = &handler; + if (h != (__sighandler_t) 2 && h != (__sighandler_t) 1) + h (x); + } + + /* { dg-final { scan-assembler-times {add(?:s)?\tr[0-9]+, r[0-9]+, #3} 2 } } */ + /* { dg-final { scan-assembler-not {.word\tg\+3} } } */ + /* { dg-final { scan-assembler-not {.word\thandler-1} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/avr/pr88253.c gcc-7.5.0/gcc/testsuite/gcc.target/avr/pr88253.c *** gcc-7.4.0/gcc/testsuite/gcc.target/avr/pr88253.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/avr/pr88253.c Mon Dec 17 13:26:50 2018 *************** *** 0 **** --- 1,16 ---- + /* { dg-do compile } */ + /* { dg-options "-Os -w" } */ + + static int aRead() __attribute__((always_inline)); + static int aRead() { + unsigned char h,l; + l = (*(volatile unsigned char *)(0x78)) ; + h = (*(volatile unsigned char *)(0x79)) ; + return (h<<8) | l; + } + + int main() { + volatile unsigned char x; + x = aRead()^42; + } + /* { dg-final { scan-assembler "lds r\\d+,121" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512bw-pr91150.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/avx512bw-pr91150.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512bw-pr91150.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/avx512bw-pr91150.c Fri Aug 30 12:49:27 2019 *************** *** 0 **** --- 1,37 ---- + /* PR target/91150 */ + /* { dg-do run } */ + /* { dg-options "-O2 -mavx512bw" } */ + /* { dg-require-effective-target avx512bw } */ + + #include "avx512bw-check.h" + + typedef unsigned char V __attribute__((vector_size (64))); + + __attribute__((noinline, noclone)) void + foo (V *x, V *y, V *z) + { + *x = __builtin_shuffle (*y, *z, (V) { 0, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, + 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127 }); + } + + static void + avx512bw_test (void) + { + union U { unsigned char a[64]; V v; } a, b, c; + int i; + for (i = 0; i < 64; i++) + { + b.a[i] = i + 1; + c.a[i] = i + 65; + } + foo (&a.v, &b.v, &c.v); + for (i = 0; i < 64; i++) + if (a.a[i] != (i < 16 ? i + 1 : i + 65)) + __builtin_abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512vl-pr87214-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/avx512vl-pr87214-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512vl-pr87214-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/avx512vl-pr87214-1.c Fri Aug 30 11:32:15 2019 *************** *** 0 **** --- 1,39 ---- + /* PR target/87214 */ + /* { dg-do run { target { avx512vl } } } */ + /* { dg-options "-O3 -mavx512vl -mtune=skylake-avx512" } */ + + #define AVX512VL + #define AVX512F_LEN 512 + #define AVX512F_LEN_HALF 256 + #include "avx512f-check.h" + + struct s { unsigned long a, b, c; }; + + void __attribute__ ((noinline, noclone)) + foo (struct s *restrict s1, struct s *restrict s2, int n) + { + for (int i = 0; i < n; ++i) + { + s1[i].b = s2[i].b; + s1[i].c = s2[i].c; + s2[i].c = 0; + } + } + + #define N 12 + + static void + avx512f_test (void) + { + struct s s1[N], s2[N]; + for (unsigned int j = 0; j < N; ++j) + { + s2[j].a = j * 5; + s2[j].b = j * 5 + 2; + s2[j].c = j * 5 + 4; + } + foo (s1, s2, N); + for (unsigned int j = 0; j < N; ++j) + if (s1[j].b != j * 5 + 2) + __builtin_abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512vl-pr87214-2.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/avx512vl-pr87214-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512vl-pr87214-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/avx512vl-pr87214-2.c Fri Aug 30 11:32:15 2019 *************** *** 0 **** --- 1,123 ---- + /* PR target/87214 */ + /* { dg-do run { target { avx512vl } } } */ + /* { dg-options "-O2 -mavx512vl" } */ + + #define AVX512VL + #define AVX512F_LEN 512 + #define AVX512F_LEN_HALF 256 + #include "avx512f-check.h" + + typedef long long int v4di __attribute__((vector_size (4 * sizeof (long long int)))); + typedef double v4df __attribute__((vector_size (4 * sizeof (double)))); + typedef long long int v8di __attribute__((vector_size (8 * sizeof (long long int)))); + typedef double v8df __attribute__((vector_size (8 * sizeof (double)))); + typedef int v8si __attribute__((vector_size (8 * sizeof (int)))); + typedef float v8sf __attribute__((vector_size (8 * sizeof (float)))); + typedef int v16si __attribute__((vector_size (16 * sizeof (int)))); + typedef float v16sf __attribute__((vector_size (16 * sizeof (float)))); + + __attribute__((noinline, noclone)) void + f1 (v4di *p) + { + p[0] = __builtin_shuffle (p[1], p[2], (v4di) { 2, 3, 5, 6 }); + } + + __attribute__((noinline, noclone)) void + f2 (v4df *p) + { + p[0] = __builtin_shuffle (p[1], p[2], (v4di) { 1, 2, 6, 7 }); + } + + __attribute__((noinline, noclone)) void + f3 (v8di *p) + { + p[0] = __builtin_shuffle (p[1], p[2], (v8di) { 2, 3, 5, 6, 8, 9, 11, 12 }); + } + + __attribute__((noinline, noclone)) void + f4 (v8df *p) + { + p[0] = __builtin_shuffle (p[1], p[2], (v8di) { 1, 2, 6, 7, 9, 10, 12, 13 }); + } + + __attribute__((noinline, noclone)) void + f5 (v8si *p) + { + p[0] = __builtin_shuffle (p[1], p[2], (v8si) { 2, 3, 4, 5, 9, 10, 11, 12 }); + } + + __attribute__((noinline, noclone)) void + f6 (v8sf *p) + { + p[0] = __builtin_shuffle (p[1], p[2], (v8si) { 1, 2, 3, 4, 12, 13, 14, 15 }); + } + + __attribute__((noinline, noclone)) void + f7 (v16si *p) + { + p[0] = __builtin_shuffle (p[1], p[2], (v16si) { 0, 1, 2, 3, 1, 2, 3, 4, 16, 17, 18, 19, 25, 26, 27, 28 }); + } + + __attribute__((noinline, noclone)) void + f8 (v16sf *p) + { + p[0] = __builtin_shuffle (p[1], p[2], (v16si) { 1, 2, 3, 4, 4, 5, 6, 7, 17, 18, 19, 20, 18, 19, 20, 21 }); + } + + static void + avx512f_test (void) + { + v4di a[3] = { { 0, 0, 0, 0 }, { 10, 11, 12, 13 }, { 14, 15, 16, 17 } }; + f1 (a); + if (a[0][0] != 12 || a[0][1] != 13 || a[0][2] != 15 || a[0][3] != 16) + __builtin_abort (); + v4df b[3] = { { 0.0, 0.0, 0.0, 0.0 }, { 10.0, 11.0, 12.0, 13.0 }, { 14.0, 15.0, 16.0, 17.0 } }; + f2 (b); + if (b[0][0] != 11.0 || b[0][1] != 12.0 || b[0][2] != 16.0 || b[0][3] != 17.0) + __builtin_abort (); + v8di c[3] = { { 0, 0, 0, 0, 0, 0, 0, 0 }, { 10, 11, 12, 13, 14, 15, 16, 17 }, { 18, 19, 20, 21, 22, 23, 24, 25 } }; + f3 (c); + if (c[0][0] != 12 || c[0][1] != 13 || c[0][2] != 15 || c[0][3] != 16 + || c[0][4] != 18 || c[0][5] != 19 || c[0][6] != 21 || c[0][7] != 22) + __builtin_abort (); + v8df d[3] = { { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }, + { 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0 }, + { 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0 } }; + f4 (d); + if (d[0][0] != 11.0 || d[0][1] != 12.0 || d[0][2] != 16.0 || d[0][3] != 17.0 + || d[0][4] != 19.0 || d[0][5] != 20.0 || d[0][6] != 22.0 || d[0][7] != 23.0) + __builtin_abort (); + v8si e[3] = { { 0, 0, 0, 0, 0, 0, 0, 0 }, { 10, 11, 12, 13, 14, 15, 16, 17 }, { 18, 19, 20, 21, 22, 23, 24, 25 } }; + f5 (e); + if (e[0][0] != 12 || e[0][1] != 13 || e[0][2] != 14 || e[0][3] != 15 + || e[0][4] != 19 || e[0][5] != 20 || e[0][6] != 21 || e[0][7] != 22) + __builtin_abort (); + v8sf f[3] = { { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }, + { 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f }, + { 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f } }; + f6 (f); + if (f[0][0] != 11.0f || f[0][1] != 12.0f || f[0][2] != 13.0f || f[0][3] != 14.0f + || f[0][4] != 22.0f || f[0][5] != 23.0f || f[0][6] != 24.0f || f[0][7] != 25.0f) + __builtin_abort (); + v16si g[3] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }, + { 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41 } }; + f7 (g); + if (g[0][0] != 10 || g[0][1] != 11 || g[0][2] != 12 || g[0][3] != 13 + || g[0][4] != 11 || g[0][5] != 12 || g[0][6] != 13 || g[0][7] != 14 + || g[0][8] != 26 || g[0][9] != 27 || g[0][10] != 28 || g[0][11] != 29 + || g[0][12] != 35 || g[0][13] != 36 || g[0][14] != 37 || g[0][15] != 38) + __builtin_abort (); + v16sf h[3] = { { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }, + { 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, + 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f }, + { 26.0f, 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, 32.0f, 33.0f, + 34.0f, 35.0f, 36.0f, 37.0f, 38.0f, 39.0f, 40.0f, 41.0f } }; + f8 (h); + if (h[0][0] != 11.0f || h[0][1] != 12.0f || h[0][2] != 13.0f || h[0][3] != 14.0f + || h[0][4] != 14.0f || h[0][5] != 15.0f || h[0][6] != 16.0f || h[0][7] != 17.0f + || h[0][8] != 27.0f || h[0][9] != 28.0f || h[0][10] != 29.0f || h[0][11] != 30.0f + || h[0][12] != 28.0f || h[0][13] != 29.0f || h[0][14] != 30.0f || h[0][15] != 31.0f) + __builtin_abort (); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/call-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/call-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/call-1.c Wed Aug 22 09:59:14 2007 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/call-1.c Fri Aug 30 11:43:04 2019 *************** volatile int r; *** 11,17 **** void set_eax(int val) { ! __asm__ __volatile__ ("mov %0, %%eax" : : "m" (val)); } void foo(int val) --- 11,17 ---- void set_eax(int val) { ! __asm__ __volatile__ ("mov %0, %%eax" : : "m" (val) : "eax"); } void foo(int val) diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/call-2.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/call-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/call-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/call-2.c Fri Aug 30 11:43:04 2019 *************** *** 0 **** --- 1,12 ---- + /* PR optimization/11304 */ + /* Originator: */ + /* { dg-do run } */ + /* { dg-options "-O -fomit-frame-pointer" } */ + + /* Verify that %eax is always restored after a call. */ + + __attribute__((noinline, noclone)) void set_eax(int val); + __attribute__((noinline, noclone)) void foo(int val); + __attribute__((noinline, noclone)) int bar(int x); + + #include "call-1.c" diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/fpprec-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/fpprec-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/fpprec-1.c Wed May 19 16:10:05 2010 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/fpprec-1.c Fri Aug 30 12:26:30 2019 *************** double x[] = { __builtin_nan(""), __buil *** 11,16 **** --- 11,19 ---- 0x1.0000000000001p-1, 0x1.fffffffffffffp-2, 0x1.0000000000001p+0, 0x1.fffffffffffffp-1, 0x1.8000000000001p+0, 0x1.7ffffffffffffp+0, + -0x1.0000000000001p-1, -0x1.fffffffffffffp-2, + -0x1.0000000000001p+0, -0x1.fffffffffffffp-1, + -0x1.8000000000001p+0, -0x1.7ffffffffffffp+0, -0.0, 0.0, -0.5, 0.5, -1.0, 1.0, -1.5, 1.5, -2.0, 2.0, -2.5, 2.5 }; #define NUM (sizeof(x)/sizeof(double)) *************** double expect_round[] = { __builtin_nan( *** 19,24 **** --- 22,28 ---- -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023, -0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 2.0, 1.0, + -1.0, -0.0, -1.0, -1.0, -2.0, -1.0, -0.0, 0.0, -1.0, 1.0, -1.0, 1.0, -2.0, 2.0, -2.0, 2.0, -3.0, 3.0 }; *************** double expect_rint[] = { __builtin_nan(" *** 26,31 **** --- 30,36 ---- -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023, -0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 2.0, 1.0, + -1.0, -0.0, -1.0, -1.0, -2.0, -1.0, -0.0, 0.0, -0.0, 0.0, -1.0, 1.0, -2.0, 2.0, -2.0, 2.0, -2.0, 2.0 }; *************** double expect_floor[] = { __builtin_nan( *** 33,38 **** --- 38,44 ---- -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, + -1.0, -1.0, -2.0, -1.0, -2.0, -2.0, -0.0, 0.0, -1.0, 0.0, -1.0, 1.0, -2.0, 1.0, -2.0, 2.0, -3.0, 2.0 }; *************** double expect_ceil[] = { __builtin_nan(" *** 40,45 **** --- 46,52 ---- -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023, -0.0, 1.0, 1.0, 1.0, 2.0, 1.0, 2.0, 2.0, + -0.0, -0.0, -1.0, -0.0, -1.0, -1.0, -0.0, 0.0, -0.0, 1.0, -1.0, 1.0, -1.0, 2.0, -2.0, 2.0, -2.0, 3.0 }; *************** double expect_trunc[] = { __builtin_nan( *** 47,52 **** --- 54,60 ---- -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023, -0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, + -0.0, -0.0, -1.0, -0.0, -1.0, -1.0, -0.0, 0.0, -0.0, 0.0, -1.0, 1.0, -1.0, 1.0, -2.0, 2.0, -2.0, 2.0 }; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c Mon Mar 16 10:11:11 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c Sun Sep 8 19:41:20 2019 *************** foo (int y) *** 18,31 **** return y + bar (y); } - /* For !nonpic && ia32 xfails, see PR64895. */ - /* Check that no registers are saved/restored. */ ! /* { dg-final { scan-assembler-not "push" { xfail { { ! nonpic } && ia32 } } } } */ ! /* { dg-final { scan-assembler-not "pop" { xfail { { ! nonpic } && ia32 } } } } */ /* Check that addition uses dx. */ ! /* { dg-final { scan-assembler-times "addl\t%\[re\]?dx, %\[re\]?ax" 1 { xfail { { ! nonpic } && ia32 } } } } */ /* Verify that bar is self-recursive. */ /* { dg-final { scan-assembler-times "call\t_?bar" 2 } } */ --- 18,29 ---- return y + bar (y); } /* Check that no registers are saved/restored. */ ! /* { dg-final { scan-assembler-not "push" } } */ ! /* { dg-final { scan-assembler-not "pop" } } */ /* Check that addition uses dx. */ ! /* { dg-final { scan-assembler-times "addl\t%\[re\]?dx, %\[re\]?ax" 1 } } */ /* Verify that bar is self-recursive. */ /* { dg-final { scan-assembler-times "call\t_?bar" 2 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c Mon Mar 16 10:11:11 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c Sun Sep 8 19:41:20 2019 *************** foo (v2df y) *** 15,27 **** return y + bar (y); } - /* For !nonpic && ia32 xfails, see PR64895. */ - /* Check presence of all insns on xmm registers. These checks are expected to pass with both -fipa-ra and -fno-ipa-ra. */ ! /* { dg-final { scan-assembler-times "addpd\t\\.?LC0.*, %xmm0" 1 } } */ ! /* { dg-final { scan-assembler-times "addpd\t%xmm1, %xmm0" 1 { xfail { { ! nonpic } && ia32 } } } } */ ! /* { dg-final { scan-assembler-times "movapd\t%xmm0, %xmm1" 1 { xfail { { ! nonpic } && ia32 } } } } */ /* Check absence of save/restore of xmm1 register. */ /* { dg-final { scan-assembler-not "movaps\t%xmm1, \\(%\[re\]?sp\\)" } } */ --- 15,33 ---- return y + bar (y); } /* Check presence of all insns on xmm registers. These checks are expected to pass with both -fipa-ra and -fno-ipa-ra. */ ! ! /* Darwin local constant symbol is "lC0", ELF targets ".LC0" */ ! /* { dg-final { scan-assembler-times {addpd\t\.?[Ll]C0.*, %xmm0} 1 { target { { ! ia32 } || nonpic } } } } */ ! /* { dg-final { scan-assembler-times {movapd\t\.?[Ll]C0.*, %xmm1} 1 { target { ia32 && { ! nonpic } } } } } */ ! ! /* We happen to get this for both cases, but in different positions. */ ! /* { dg-final { scan-assembler-times "addpd\t%xmm1, %xmm0" 1 } } */ ! ! /* { dg-final { scan-assembler-times "movapd\t%xmm0, %xmm1" 1 { target { { ! ia32 } || nonpic } } } } */ ! /* { dg-final { scan-assembler-times "movapd\t%xmm0, %xmm2" 1 { target { ia32 && { ! nonpic } } } } } */ ! /* { dg-final { scan-assembler-times "addpd\t%xmm2, %xmm0" 1 { target { ia32 && { ! nonpic } } } } } */ /* Check absence of save/restore of xmm1 register. */ /* { dg-final { scan-assembler-not "movaps\t%xmm1, \\(%\[re\]?sp\\)" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/fuse-caller-save.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/fuse-caller-save.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/fuse-caller-save.c Mon Mar 16 10:11:11 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/fuse-caller-save.c Sun Sep 8 19:41:20 2019 *************** foo (int y) *** 16,26 **** return y + bar (y); } - /* For !nonpic && ia32 xfails, see PR64895. */ - /* Check that no registers are saved/restored. */ ! /* { dg-final { scan-assembler-not "push" { xfail { { ! nonpic } && ia32 } } } } */ ! /* { dg-final { scan-assembler-not "pop" { xfail { { ! nonpic } && ia32 } } } } */ /* PR61605. If the first argument register and the return register differ, then bar leaves the first argument register intact. That means in foo that the --- 16,24 ---- return y + bar (y); } /* Check that no registers are saved/restored. */ ! /* { dg-final { scan-assembler-not "push" } } */ ! /* { dg-final { scan-assembler-not "pop" } } */ /* PR61605. If the first argument register and the return register differ, then bar leaves the first argument register intact. That means in foo that the *************** foo (int y) *** 31,34 **** /* { dg-final { scan-assembler-not "movl" { target { ! ia32 } } } } */ /* Check that addition uses di (in case of no copy) or dx (in case of copy). */ ! /* { dg-final { scan-assembler-times "addl\t%\[re\]?d\[ix\], %\[re\]?ax" 1 { xfail { { ! nonpic } && ia32 } } } } */ --- 29,32 ---- /* { dg-final { scan-assembler-not "movl" { target { ! ia32 } } } } */ /* Check that addition uses di (in case of no copy) or dx (in case of copy). */ ! /* { dg-final { scan-assembler-times "addl\t%\[re\]?d\[ix\], %\[re\]?ax" 1 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk" } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 11,19 **** dispatch(offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ --- 12,22 ---- dispatch(offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 11,19 **** dispatch[offset](offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ --- 12,22 ---- dispatch[offset](offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk" } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 12,20 **** return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ --- 13,23 ---- return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 12,20 **** return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ --- 13,23 ---- return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c Sat Sep 28 19:54:00 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ void func0 (void); void func1 (void); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fjump-tables" } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ void func0 (void); void func1 (void); *************** bar (int i) *** 36,43 **** } /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ --- 37,46 ---- } /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {leaq[ \t]*L[0-9]+\(%rip\)} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {addl[ \t]*L[0-9]+-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 14,22 **** dispatch(offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ --- 15,25 ---- dispatch(offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 12,20 **** dispatch[offset](offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ --- 13,23 ---- dispatch[offset](offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 14,22 **** return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ ! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ ! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ --- 15,25 ---- return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */ ! /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ ! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 13,21 **** return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ ! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ ! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ --- 14,24 ---- return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */ ! /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ ! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 14,21 **** return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ --- 15,24 ---- return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 13,20 **** return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ --- 14,23 ---- return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c Sat Sep 28 19:54:00 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ void func0 (void); void func1 (void); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ void func0 (void); void func1 (void); *************** bar (int i) *** 37,43 **** } /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ --- 38,46 ---- } /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {leaq[ \t]*L[0-9]+\(%rip\)} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {addl[ \t]*L[0-9]+-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c Tue Jan 16 11:10:44 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c Sat Sep 28 19:54:00 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ void func0 (void); void func1 (void); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ void func0 (void); void func1 (void); *************** bar (int i) *** 36,42 **** } } ! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ --- 37,43 ---- } } ! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c Sat Sep 28 20:05:38 2019 *************** *** 1,5 **** /* { dg-do compile { target { ! x32 } } } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ void (*dispatch) (char *); char buf[10]; --- 1,6 ---- /* { dg-do compile { target { ! x32 } } } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx" } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ void (*dispatch) (char *); char buf[10]; *************** foo (void) *** 11,18 **** } /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd_rax" { target lp64 } } } */ ! /* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_eax" { target ia32 } } } */ /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler "bnd ret" } } */ --- 12,19 ---- } /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "bnd jmp\[ \t\]*_?__x86_indirect_thunk_bnd_rax" { target lp64 } } } */ ! /* { dg-final { scan-assembler "bnd call\[ \t\]*_?__x86_indirect_thunk_bnd_eax" { target ia32 } } } */ /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler "bnd ret" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c Sat Sep 28 20:05:38 2019 *************** *** 1,5 **** /* { dg-do compile { target { ! x32 } } } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ void (*dispatch) (char *); char buf[10]; --- 1,6 ---- /* { dg-do compile { target { ! x32 } } } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx" } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ void (*dispatch) (char *); char buf[10]; *************** foo (void) *** 12,19 **** } /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler "bnd ret" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ --- 13,20 ---- } /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "bnd call\[ \t\]*_?__x86_indirect_thunk_bnd_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "bnd call\[ \t\]*\.?LIND" } } */ /* { dg-final { scan-assembler "bnd ret" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 11,18 **** dispatch(offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ --- 12,21 ---- dispatch(offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not {call[ \t]*\.âLIND} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 11,18 **** dispatch[offset](offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ --- 12,21 ---- dispatch[offset](offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 12,19 **** return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ --- 13,22 ---- return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 12,18 **** return 0; } ! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ --- 13,20 ---- return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c Sat Sep 28 19:54:00 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ void func0 (void); void func1 (void); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fjump-tables" } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ void func0 (void); void func1 (void); *************** bar (int i) *** 36,42 **** } /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ --- 37,43 ---- } /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.?LIND" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 11,20 **** dispatch(offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ ! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ --- 12,23 ---- dispatch(offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ ! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 11,20 **** dispatch[offset](offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ ! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ --- 12,23 ---- dispatch[offset](offset); } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ ! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 12,21 **** return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ ! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ /* { dg-final { scan-assembler-times {\tpause} 1 } } */ /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ --- 13,24 ---- return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */ ! /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */ /* { dg-final { scan-assembler-times {\tpause} 1 } } */ /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 12,21 **** return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ ! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ /* { dg-final { scan-assembler-times {\tpause} 1 } } */ /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ --- 13,24 ---- return 0; } ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */ ! /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */ /* { dg-final { scan-assembler-times {\tpause} 1 } } */ /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c Sat Sep 28 19:54:00 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ void func0 (void); void func1 (void); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fjump-tables" } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ void func0 (void); void func1 (void); *************** bar (int i) *** 37,44 **** /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%(r|e)ax" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ ! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ --- 38,45 ---- /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%(r|e)ax" } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ ! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c Tue Jan 16 11:17:49 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c Sat Sep 28 19:54:00 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mindirect-branch=thunk -mindirect-branch-register -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mindirect-branch=thunk -mindirect-branch-register " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 11,22 **** dispatch(offset); } ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler "mov\[ \t\](%eax|%rax), \\((%esp|%rsp)\\)" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ ! /* { dg-final { scan-assembler-not "__x86_indirect_thunk\n" } } */ ! /* { dg-final { scan-assembler-not "__x86_indirect_thunk_bnd\n" } } */ --- 12,23 ---- dispatch(offset); } ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler "mov\[ \t\](%eax|%rax), \\((%esp|%rsp)\\)" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ ! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk\n" } } */ ! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk_bnd\n" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c Tue Jan 16 11:17:49 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c Sat Sep 28 19:54:00 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mindirect-branch=thunk-inline -mindirect-branch-register -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mindirect-branch=thunk-inline -mindirect-branch-register " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 11,20 **** dispatch(offset); } ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler "mov\[ \t\](%eax|%rax), \\((%esp|%rsp)\\)" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ ! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ --- 12,21 ---- dispatch(offset); } ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler "mov\[ \t\](%eax|%rax), \\((%esp|%rsp)\\)" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ ! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c Tue Jan 16 11:17:49 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c Sat Sep 28 19:54:00 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mindirect-branch=thunk-extern -mindirect-branch-register -fno-pic" } */ typedef void (*dispatch_t)(long offset); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mindirect-branch=thunk-extern -mindirect-branch-register " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ typedef void (*dispatch_t)(long offset); *************** male_indirect_jump (long offset) *** 11,19 **** dispatch(offset); } ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ /* { dg-final { scan-assembler-not {\t(pause|pause|nop)} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ --- 12,20 ---- dispatch(offset); } ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ /* { dg-final { scan-assembler-not {\t(pause|pause|nop)} } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c Tue Jan 16 11:19:51 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c Sat Sep 28 19:54:00 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mindirect-branch=keep -fno-pic" } */ extern void (*func_p) (void); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mindirect-branch=keep " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ extern void (*func_p) (void); diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c Sat Aug 10 03:48:01 2013 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c Fri Sep 6 15:51:01 2019 *************** *** 1,6 **** /* { dg-do compile } */ /* { dg-options "-O2 -march=atom -mmemcpy-strategy=vector_loop:2000:align,libcall:-1:align" } */ ! /* { dg-final { scan-assembler-times "memcpy" 2 } } */ char a[2048]; char b[2048]; --- 1,9 ---- /* { dg-do compile } */ /* { dg-options "-O2 -march=atom -mmemcpy-strategy=vector_loop:2000:align,libcall:-1:align" } */ ! /* On ELF platforms, one hit comes from the .file directive. */ ! /* { dg-final { scan-assembler-times "memcpy" 2 { target { ! *-*-darwin* } } } } */ ! /* But not on Darwin, which doesn't have a .file directive by default. */ ! /* { dg-final { scan-assembler-times "_memcpy" 1 { target *-*-darwin* } } } */ char a[2048]; char b[2048]; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/memset-strategy-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/memset-strategy-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/memset-strategy-1.c Sat Aug 10 03:48:01 2013 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/memset-strategy-1.c Fri Sep 6 15:51:01 2019 *************** *** 1,10 **** /* { dg-do compile } */ /* { dg-options "-O2 -march=atom -mmemset-strategy=libcall:-1:align" } */ ! /* { dg-final { scan-assembler-times "memset" 2 } } */ char a[2048]; void t (void) { __builtin_memset (a, 1, 2048); } - --- 1,12 ---- /* { dg-do compile } */ /* { dg-options "-O2 -march=atom -mmemset-strategy=libcall:-1:align" } */ ! /* On ELF platforms, one hit comes from the .file directive. */ ! /* { dg-final { scan-assembler-times "memset" 2 { target { ! *-*-darwin* } } } } */ ! /* But not on Darwin, which doesn't have a .file directive by default. */ ! /* { dg-final { scan-assembler-times "_memset" 1 { target *-*-darwin* } } } */ char a[2048]; void t (void) { __builtin_memset (a, 1, 2048); } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr22076.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr22076.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr22076.c Tue Apr 22 12:30:59 2014 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr22076.c Thu Sep 12 19:26:49 2019 *************** *** 1,6 **** /* { dg-do compile } */ /* { dg-options "-O2 -fomit-frame-pointer -flax-vector-conversions -mmmx" } */ ! /* { dg-options "-O2 -fomit-frame-pointer -flax-vector-conversions -mmmx -mno-vect8-ret-in-mem" { target *-*-vxworks* } } */ #include --- 1,8 ---- /* { dg-do compile } */ /* { dg-options "-O2 -fomit-frame-pointer -flax-vector-conversions -mmmx" } */ ! /* { dg-additional-options "-mno-vect8-ret-in-mem" { target *-*-vxworks* } } */ ! /* { dg-additional-options "-fno-common" { target *-*-darwin* } } */ ! /* { dg-additional-options "-mdynamic-no-pic" { target { ia32 && *-*-darwin* } } } */ #include diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr24414.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr24414.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr24414.c Mon Jun 6 12:31:59 2016 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr24414.c Mon Sep 9 19:58:23 2019 *************** *** 1,5 **** --- 1,6 ---- /* { dg-do run } */ /* { dg-options "-O2" } */ + /* { dg-skip-if "asm insert mismatches ABI for Darwin" { *-*-darwin* } } */ int test; int diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-1.c Thu May 21 18:13:06 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-1.c Fri Sep 6 15:59:54 2019 *************** foo () *** 12,18 **** return xxx; } ! /* { dg-final { scan-assembler "movl\[ \t\]xxx\\(%rip\\), %eax" { target { ! ia32 } } } } */ ! /* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { ! ia32 } } } } */ ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target ia32 } } } */ ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target ia32 } } } */ --- 12,22 ---- return xxx; } ! /* { dg-final { scan-assembler {movl[ \t]_?xxx\(%rip\),[ \t]%eax} { target { ! ia32 } } } } */ ! /* { dg-final { scan-assembler-not "_?xxx@GOTPCREL" { target { ! ia32 } } } } */ ! ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ ! /* { dg-final { scan-assembler-not "movl\[ \t\]_?xxx@GOT\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ ! ! /* For Darwin, we default to PIC - but that's needed for Darwin's PIE. */ ! /* { dg-final { scan-assembler {movl[ \t]_xxx-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-2.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-2.c Tue Apr 26 12:25:52 2016 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-2.c Fri Nov 1 20:52:21 2019 *************** foo () *** 12,17 **** } /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */ /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */ ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target ia32 } } } */ ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target ia32 } } } */ --- 12,24 ---- } /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */ + /* For Darwin m64 we are always PIC, but common symbols are indirected, which happens to + match the general "ELF" case. */ /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */ ! ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ ! ! /* Darwin m32 defaults to PIC but common symbols need to be indirected. */ ! /* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ ! diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-3.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-3.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-3.c Thu May 21 18:13:06 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-3.c Fri Nov 1 20:52:21 2019 *************** foo () *** 12,18 **** return xxx; } ! /* { dg-final { scan-assembler "movl\[ \t\]xxx\\(%rip\\), %eax" { target { ! ia32 } } } } */ ! /* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { ! ia32 } } } } */ ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target ia32 } } } */ ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target ia32 } } } */ --- 12,27 ---- return xxx; } ! /* { dg-final { scan-assembler {movl[ \t]xxx\(%rip\),[ \t]%eax} { target { { ! ia32 } && { ! *-*-darwin* } } } } } */ ! /* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { { ! ia32 } && { ! *-*-darwin* } } } } } */ ! ! /* For Darwin m64, code is always PIC and we need to indirect through the GOT to allow ! weak symbols to be interposed. The dynamic loader knows how to apply PIE to this. */ ! /* { dg-final { scan-assembler {movq[ \t]_xxx@GOTPCREL\(%rip\),[ \t]%rax} { target { { ! ia32 } && *-*-darwin* } } } } */ ! ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ ! ! /* For Darwin, we need PIC to allow PIE, but also we must indirect weak symbols so that ! they can be indirected. Again, dyld knows how to deal with this. */ ! /* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-4.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-4.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-4.c Tue Apr 26 12:25:52 2016 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-4.c Fri Nov 1 20:52:21 2019 *************** foo () *** 13,18 **** } /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */ /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */ ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target ia32 } } } */ ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target ia32 } } } */ --- 13,24 ---- } /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */ + /* Darwin is always PIC for PIE so no change, weak symbols need to be indirect and this + happens to match the ELF case. */ /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */ ! ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ ! ! /* Darwin m32 equivalent (indirect and PIC). */ ! /* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-5.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-5.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-5.c Thu May 21 18:13:06 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-5.c Fri Sep 6 15:59:54 2019 *************** foo () *** 11,17 **** return xxx; } ! /* { dg-final { scan-assembler "movl\[ \t\]xxx\\(%rip\\), %eax" { target { ! ia32 } } } } */ /* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { ! ia32 } } } } */ ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target ia32 } } } */ ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target ia32 } } } */ --- 11,21 ---- return xxx; } ! /* { dg-final { scan-assembler "movl\[ \t\]_?xxx\\(%rip\\), %eax" { target { ! ia32 } } } } */ /* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { ! ia32 } } } } */ ! ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ ! ! /* For Darwin m32, we need PIC (the default) to allow PIE. */ ! /* { dg-final { scan-assembler {movl[ \t]_xxx-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-6.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-6.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-6.c Tue Apr 26 12:25:52 2016 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-6.c Fri Sep 6 15:59:54 2019 *************** foo () *** 11,17 **** return xxx; } ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */ ! /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */ ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target ia32 } } } */ ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target ia32 } } } */ --- 11,24 ---- return xxx; } ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { { ! ia32 } && { ! *-*-darwin* } } } } } */ ! /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { { ! ia32 } && { ! *-*-darwin* } } } } } */ ! ! /* Darwin m64 is always PIC, and the dynamic linker doesn't need an indirection. */ ! /* { dg-final { scan-assembler {movl[ \t]_xxx\(%rip\),[ \t]%eax} { target { { ! ia32 } && *-*-darwin* } } } } */ ! ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ ! ! /* Darwin m32 defaults to PIC, so no change. */ ! /* { dg-final { scan-assembler {movl[ \t]_xxx-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-7.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-7.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-7.c Thu May 21 18:13:06 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-7.c Fri Nov 1 20:52:21 2019 *************** foo () *** 12,18 **** return xxx; } ! /* { dg-final { scan-assembler "movl\[ \t\]xxx\\(%rip\\), %eax" { target { ! ia32 } } } } */ ! /* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { ! ia32 } } } } */ ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target ia32 } } } */ ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target ia32 } } } */ --- 12,26 ---- return xxx; } ! /* { dg-final { scan-assembler "movl\[ \t\]xxx\\(%rip\\), %eax" { target { { ! ia32 } && { ! *-*-darwin* } } } } } */ ! /* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { { ! ia32 } && { ! *-*-darwin* } } } } } */ ! ! /* For Darwin m64, code is always PIC but we need to indirect through the GOT to allow ! weak symbols to be interposed. The dynamic loader knows how to apply PIE to this. */ ! /* { dg-final { scan-assembler {movq[ \t]_xxx@GOTPCREL\(%rip\),[ \t]%rax} { target { { ! ia32 } && *-*-darwin* } } } } */ ! ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ ! ! /* Darwin m32 equivalent (indirect and PIC). */ ! /* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-8.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-8.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr32219-8.c Tue Apr 26 12:25:52 2016 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr32219-8.c Fri Nov 1 20:52:21 2019 *************** foo () *** 13,18 **** } /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */ ! /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */ ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target ia32 } } } */ ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target ia32 } } } */ --- 13,24 ---- } /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */ ! /* Darwin is always PIC so no change, weak symbols needs to be indirect and this ! happens to match the ELF case. */ ! /* { dg-final { scan-assembler "_?xxx@GOTPCREL" { target { ! ia32 } } } } */ ! ! /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ ! /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ ! ! /* Darwin m32 default to PIC but needs indirection for the weak symbol. */ ! /* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr39013-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr39013-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr39013-1.c Thu May 21 18:13:06 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr39013-1.c Tue Sep 10 20:43:34 2019 *************** main (void) *** 12,16 **** return foo () + bar (); } ! /* { dg-final { scan-assembler "foo@PLT" } } */ ! /* { dg-final { scan-assembler "bar@PLT" } } */ --- 12,20 ---- return foo () + bar (); } ! /* { dg-final { scan-assembler "foo@PLT" { target { ! *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "bar@PLT" { target { ! *-*-darwin* } } } } */ ! ! /* Darwin's dynamic linker does PIE without indirection. */ ! /* { dg-final { scan-assembler {call[ \t]_foo} { target *-*-darwin* } } } */ ! /* { dg-final { scan-assembler {call[ \t]_bar} { target *-*-darwin* } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr39013-2.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr39013-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr39013-2.c Thu May 21 18:13:06 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr39013-2.c Tue Sep 10 20:43:34 2019 *************** main (void) *** 12,16 **** return foo () + bar (); } ! /* { dg-final { scan-assembler "foo@PLT" } } */ ! /* { dg-final { scan-assembler "bar@PLT" } } */ --- 12,20 ---- return foo () + bar (); } ! /* { dg-final { scan-assembler "foo@PLT" { target { ! *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "bar@PLT" { target { ! *-*-darwin* } } } } */ ! ! /* Darwin's dynamic linker does PIE without indirection. */ ! /* { dg-final { scan-assembler {call[ \t]_foo} { target *-*-darwin* } } } */ ! /* { dg-final { scan-assembler {call[ \t]_bar} { target *-*-darwin* } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr49866.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr49866.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr49866.c Wed Jul 27 18:19:40 2011 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr49866.c Sun Sep 8 19:49:27 2019 *************** *** 1,6 **** /* PR target/49866 */ ! /* { dg-do assemble } */ ! /* { dg-options "-O2 -mcmodel=large" { target lp64 } } */ void fn (void *, int, int); int fn2 (void); --- 1,7 ---- /* PR target/49866 */ ! /* { dg-do assemble { target lp64 } } */ ! /* { dg-xfail-if "PR90698" { *-*-darwin* } } */ ! /* { dg-options "-O2 -mcmodel=large" } */ void fn (void *, int, int); int fn2 (void); diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr52146.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr52146.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr52146.c Tue Dec 29 10:32:21 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr52146.c Sat Sep 28 20:00:22 2019 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ /* { dg-options "-O2 -mx32" } */ void diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr52698.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr52698.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr52698.c Tue Dec 29 10:32:21 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr52698.c Sat Sep 28 20:00:22 2019 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ /* { dg-options "-O2 -mx32 -maddress-mode=long" } */ extern void abort (void); diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr52857-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr52857-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr52857-1.c Tue Dec 29 10:32:21 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr52857-1.c Sat Sep 28 20:00:22 2019 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ /* { dg-options "-g -O -mx32 -maddress-mode=long" } */ extern void get_BID128 (int *); diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr52857-2.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr52857-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr52857-2.c Tue Dec 29 10:32:21 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr52857-2.c Sat Sep 28 20:00:22 2019 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ /* { dg-options "-g -O -mx32 -maddress-mode=long" } */ void uw_init_context_1 (void *); diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr52876.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr52876.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr52876.c Wed Apr 11 19:31:45 2012 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr52876.c Sat Sep 28 20:00:22 2019 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do run { target { x32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ /* { dg-options "-O2 -mx32 -maddress-mode=long" } */ extern void abort (void); diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr53698.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr53698.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr53698.c Tue Dec 29 10:32:21 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr53698.c Sat Sep 28 20:00:22 2019 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ /* { dg-options "-O -mx32 -maddress-mode=long -fno-tree-dominator-opts" } */ extern char foo[]; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr54157.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr54157.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr54157.c Tue Dec 29 10:32:21 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr54157.c Sat Sep 28 20:00:22 2019 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ /* { dg-options "-O2 -mx32 -maddress-mode=long -ftree-vectorize" } */ struct s2{ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr55049-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr55049-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr55049-1.c Tue Dec 29 10:32:21 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr55049-1.c Sat Sep 28 20:00:22 2019 *************** *** 1,5 **** --- 1,6 ---- /* { dg-do compile { target { ! ia32 } } } */ /* { dg-require-effective-target fpic } */ + /* { dg-require-effective-target maybe_x32 } */ /* { dg-options "-O2 -fPIC -mx32" } */ extern void __morestack_fail (const char *msg); diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr55093.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr55093.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr55093.c Tue Dec 29 10:32:21 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr55093.c Sat Sep 28 20:00:22 2019 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ /* { dg-options "-O2 -mx32 -maddress-mode=long" } */ /* { dg-skip-if "different ABI" { x86_64-*-mingw* } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr55116-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr55116-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr55116-1.c Tue Dec 29 10:32:21 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr55116-1.c Sat Sep 28 20:00:22 2019 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ /* { dg-options "-O2 -mx32 -maddress-mode=long" } */ int glob_int_arr[100]; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr55116-2.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr55116-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr55116-2.c Tue Dec 29 10:32:21 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr55116-2.c Sat Sep 28 20:00:22 2019 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ /* { dg-options "-O2 -mx32 -maddress-mode=long" } */ typedef struct rtx_def *rtx; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr55597.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr55597.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr55597.c Tue Dec 29 10:32:21 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr55597.c Sat Sep 28 20:00:22 2019 *************** *** 1,5 **** --- 1,6 ---- /* { dg-do compile { target { ! ia32 } } } */ /* { dg-require-effective-target fpic } */ + /* { dg-require-effective-target maybe_x32 } */ /* { dg-options "-O2 -fPIC -mx32 -maddress-mode=long" } */ struct initial_sp diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr59874-3.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr59874-3.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr59874-3.c Mon Dec 19 20:23:08 2016 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr59874-3.c Tue Sep 10 20:39:23 2019 *************** *** 1,7 **** /* PR target/59874 */ /* { dg-do compile } */ /* { dg-options "-O2 -mpopcnt -masm=att" } */ ! /* { dg-final { scan-assembler "popcntw" } } */ unsigned int foo (unsigned short x) --- 1,8 ---- /* PR target/59874 */ /* { dg-do compile } */ /* { dg-options "-O2 -mpopcnt -masm=att" } */ ! /* { dg-final { scan-assembler "\tpopcntw" { target { ! *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "\tpopcnt" { target *-*-darwin* } } } */ unsigned int foo (unsigned short x) diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr59929.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr59929.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr59929.c Fri Jan 24 03:38:10 2014 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr59929.c Sat Sep 28 20:00:22 2019 *************** *** 1,5 **** /* { dg-do run } */ ! /* { dg-options "-O0 -mno-accumulate-outgoing-args" } */ /* { dg-options "-O0 -mno-accumulate-outgoing-args -mx32 -maddress-mode=short" { target x32 } } */ void --- 1,5 ---- /* { dg-do run } */ ! /* { dg-require-effective-target maybe_x32 } */ /* { dg-options "-O0 -mno-accumulate-outgoing-args -mx32 -maddress-mode=short" { target x32 } } */ void diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr61599-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr61599-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr61599-1.c Fri May 13 17:27:13 2016 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr61599-1.c Sun Sep 8 19:49:27 2019 *************** *** 1,5 **** --- 1,6 ---- /* PR target/61599 */ /* { dg-do run { target lp64 } } */ + /* { dg-skip-if "PR90698" { *-*-darwin* } } */ /* { dg-additional-sources pr61599-2.c } */ /* { dg-options "-mcmodel=medium -fdata-sections" } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr63538.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr63538.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr63538.c Wed Nov 5 21:00:07 2014 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr63538.c Sun Sep 8 19:49:27 2019 *************** char *foo () *** 9,13 **** { return str; } ! ! /* { dg-final { scan-assembler "movabs" } } */ --- 9,13 ---- { return str; } ! /* See PR90698 re. Darwin xfail. */ ! /* { dg-final { scan-assembler "movabs" { xfail { *-*-darwin* } } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr64317.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr64317.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr64317.c Mon May 25 08:50:43 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr64317.c Tue Sep 10 20:43:34 2019 *************** *** 2,10 **** /* { dg-require-effective-target ia32 } */ /* { dg-require-effective-target pie } */ /* { dg-options "-O2 -fpie" } */ ! /* { dg-final { scan-assembler "addl\[ \\t\]+\[$\]_GLOBAL_OFFSET_TABLE_, %ebx" } } */ ! /* { dg-final { scan-assembler "movl\[ \\t\]+c@GOTOFF\[(\]%ebx\[)\]" } } */ ! /* { dg-final { scan-assembler-not "movl\[ \\t\]+\[0-9]+\[(\]%esp\[)\], %ebx" } } */ long c = 1; int bar(); --- 2,15 ---- /* { dg-require-effective-target ia32 } */ /* { dg-require-effective-target pie } */ /* { dg-options "-O2 -fpie" } */ ! /* { dg-final { scan-assembler "addl\[ \\t\]+\[$\]_GLOBAL_OFFSET_TABLE_, %ebx" { target { ! *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "movl\[ \\t\]+c@GOTOFF\[(\]%ebx\[)\]" { target { ! *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler-not "movl\[ \\t\]+\[0-9]+\[(\]%esp\[)\], %ebx" { target { ! *-*-darwin* } } } } */ ! ! /* Check PIC access to c and t1 on Darwin (PIC is default, needed for PIE). */ ! /* { dg-final { scan-assembler {_c-L1\$pb\(%} { target *-*-darwin* } } } */ ! /* { dg-final { scan-assembler {_t1.[0-9]+-L1\$pb\(%} { target *-*-darwin* } } } */ ! long c = 1; int bar(); diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr66470.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr66470.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr66470.c Tue Dec 29 10:32:21 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr66470.c Sat Sep 28 20:00:22 2019 *************** *** 1,5 **** --- 1,6 ---- /* PR target/66470 */ /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ /* { dg-options "-O2 -mx32 -maddress-mode=long" } */ /* { dg-require-effective-target tls } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr66819-3.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr66819-3.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr66819-3.c Fri Jul 10 20:30:10 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr66819-3.c Mon Sep 9 20:13:24 2019 *************** *** 1,6 **** /* { dg-do compile { target ia32 } } */ /* { dg-options "-O2 -mregparm=3" } */ ! /* { dg-final { scan-assembler-not "call" } } */ void (*bar)(int, int); --- 1,6 ---- /* { dg-do compile { target ia32 } } */ /* { dg-options "-O2 -mregparm=3" } */ ! /* { dg-final { scan-assembler-not {call[ \t]+_?bar} } } */ void (*bar)(int, int); diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr66819-4.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr66819-4.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr66819-4.c Fri Jul 10 20:30:10 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr66819-4.c Mon Sep 9 20:13:24 2019 *************** *** 1,6 **** /* { dg-do compile { target ia32 } } */ /* { dg-options "-O2 -mregparm=3" } */ ! /* { dg-final { scan-assembler-not "call" } } */ #include --- 1,6 ---- /* { dg-do compile { target ia32 } } */ /* { dg-options "-O2 -mregparm=3" } */ ! /* { dg-final { scan-assembler-not {call[ \t]+_?bar} } } */ #include diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr67985-2.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr67985-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr67985-2.c Tue Oct 20 15:12:37 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr67985-2.c Mon Sep 9 20:07:18 2019 *************** foo (float x, float y) *** 10,13 **** /* { dg-final { scan-assembler-not "mulss" } } */ /* { dg-final { scan-assembler-not "movl\[ \t\].*, %eax" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]__mulsf3" } } */ --- 10,13 ---- /* { dg-final { scan-assembler-not "mulss" } } */ /* { dg-final { scan-assembler-not "movl\[ \t\].*, %eax" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]_?__mulsf3" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr70738-7.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr70738-7.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr70738-7.c Wed May 25 18:58:49 2016 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr70738-7.c Mon Sep 9 19:58:23 2019 *************** *** 1,4 **** ! /* { dg-do compile { target ia32 } } */ /* { dg-options "-msse2 -mgeneral-regs-only" } */ extern float a, b, c; --- 1,4 ---- ! /* { dg-do compile { target { ia32 && { ! *-*-darwin* } } } } */ /* { dg-options "-msse2 -mgeneral-regs-only" } */ extern float a, b, c; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr77881.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr77881.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr77881.c Tue Nov 15 14:02:28 2016 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr77881.c Mon Sep 9 20:07:18 2019 *************** foo (long long int a, long long int a2, *** 8,12 **** if (a < 0 || b) baz (); } ! /* { dg-final { scan-assembler "js\[ \t\]\.L" } } */ ! /* { dg-final { scan-assembler "jne\[ \t\]\.L" } } */ --- 8,12 ---- if (a < 0 || b) baz (); } ! /* { dg-final { scan-assembler "js\[ \t\]\.?L" } } */ ! /* { dg-final { scan-assembler "jne\[ \t\]\.?L" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr86334.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr86334.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr86334.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr86334.c Fri Aug 30 11:29:57 2019 *************** *** 0 **** --- 1,21 ---- + /* PR rtl-optimization/86334 */ + /* { dg-do run { target ia32 } } */ + /* { dg-options "-O -march=i386 -mtune=athlon -minline-all-stringops -minline-stringops-dynamically -mmemcpy-strategy=libcall:-1:align -Wno-psabi" } */ + + typedef int V __attribute__ ((vector_size (64))); + + static inline V + foo (V g) + { + g[0] = 4; + return g; + } + + int + main () + { + V x = foo ((V) { }); + if (x[0] != 4 || x[1] || x[2] || x[3] || x[4] || x[5] || x[6] || x[7]) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr86952.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr86952.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr86952.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr86952.c Thu Apr 11 08:59:48 2019 *************** *** 0 **** --- 1,23 ---- + /* { dg-do compile } */ + /* { dg-options "-O2 -mindirect-branch=thunk" } */ + + int global; + + int + foo (int x) + { + switch (x & 7) + { + case 0: ; return 1722; + case 1: global += 1; return 1060; + case 2: ; return 1990; + case 3: ; return 1242; + case 4: ; return 1466; + case 5: ; return 894; + case 6: ; return 570; + case 7: ; return 572; + default: return 0; + } + } + + /* { dg-final { scan-assembler-not "jmp\[ \t\]\\*" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr87853.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr87853.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr87853.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr87853.c Mon Sep 9 11:44:17 2019 *************** *** 0 **** --- 1,20 ---- + /* PR target/87853 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -funsigned-char -msse2 -mno-sse3 -masm=att" } */ + /* { dg-final { scan-assembler-times "\tpcmpgtb\t%xmm" 2 } } */ + /* { dg-final { scan-assembler-not "\tpsubusb\t" } } */ + /* { dg-final { scan-assembler-not "\tpcmpeqb\t" } } */ + + #include + + __m128i + foo (__m128i x, __m128i y) + { + return _mm_cmpgt_epi8 (x, y); + } + + __m128i + bar (__m128i x, __m128i y) + { + return _mm_cmplt_epi8 (x, y); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr88416.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr88416.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr88416.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr88416.c Fri Aug 30 11:20:47 2019 *************** *** 0 **** --- 1,5 ---- + /* PR rtl-optimization/88416 */ + /* { dg-do compile } */ + /* { dg-options "-O1 -fvar-tracking-assignments -fno-forward-propagate --param max-cse-insns=1" } */ + + #include "writeeflags-1.c" diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr88418.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr88418.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr88418.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr88418.c Fri Dec 21 18:11:04 2018 *************** *** 0 **** --- 1,15 ---- + /* PR target/88418 */ + /* { dg-do compile } */ + /* { dg-options "-O1 -fpack-struct -msse4.1 -mno-avx" } */ + + typedef long long v2di __attribute__ ((__vector_size__ (16))); + + union df { + v2di se[2]; + }; + + void + qg (union df *jz, union df *pl) + { + jz->se[0] = jz->se[0] == pl->se[0]; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr88470.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr88470.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr88470.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr88470.c Fri Aug 30 11:21:45 2019 *************** *** 0 **** --- 1,16 ---- + /* PR rtl-optimization/88470 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -maccumulate-outgoing-args -ftrapv -fno-ivopts -fno-reorder-blocks-and-partition" } */ + + void + foo (long x, long *y) + { + long *a = y - 64, i; + for (i = 0; i < x; i++) + { + long v = y[i]; + *a++ = v; + } + register void **c __asm__ ("di"); + goto **c; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr88906.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr88906.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr88906.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr88906.c Fri Aug 30 11:29:57 2019 *************** *** 0 **** --- 1,21 ---- + /* PR target/88906 */ + /* { dg-do run { target ia32 } } */ + /* { dg-options "-O -march=i386 -mtune=k6 -minline-all-stringops -minline-stringops-dynamically -mmemcpy-strategy=libcall:-1:align -Wno-psabi" } */ + + typedef unsigned V __attribute__ ((vector_size (16))); + + static inline V + foo (V v) + { + __builtin_sub_overflow (0, 0, &v[0]); + return v; + } + + int + main () + { + V v = foo ((V) { ~0 }); + if (v[0] || v[1] || v[2] || v[3]) + __builtin_abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr88938.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr88938.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr88938.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr88938.c Tue Jan 22 16:35:53 2019 *************** *** 0 **** --- 1,5 ---- + /* PR target/88938 */ + /* { dg-do compile } */ + /* { dg-options "-Og -fno-tree-ccp -fno-tree-fre -mtbm" } */ + + #include "tbm-bextri-1.c" diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr88948.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr88948.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr88948.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr88948.c Sun Jan 27 17:42:58 2019 *************** *** 0 **** --- 1,5 ---- + /* PR rtl-optimization/88948 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -fgcse-sm -msse3 -mfpmath=387" } */ + + #include "../../gcc.c-torture/execute/stdarg-3.c" diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-1a.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-1a.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-1a.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-1a.c Sun Mar 17 09:27:56 2019 *************** *** 0 **** --- 1,24 ---- + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-maddress-mode=short -mx32 -Ofast -funroll-loops -march=haswell" } */ + /* { dg-final { scan-assembler-not "\tvgather" } } */ + /* { dg-final { scan-assembler "addr32 vgather" } } */ + + void foo (void); + + extern float *ncost; + + float + bar (int type, int num) + { + int i; + float cost; + + cost = 0; + for (i = 0; i < num; i++) + if (type) + cost += ncost[i]; + else + foo (); + return (cost); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-1b.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-1b.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-1b.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-1b.c Sun Mar 17 09:27:56 2019 *************** *** 0 **** --- 1,7 ---- + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-maddress-mode=long -mx32 -Ofast -funroll-loops -march=haswell" } */ + /* { dg-final { scan-assembler-not "\tvgather" } } */ + /* { dg-final { scan-assembler "addr32 vgather" } } */ + + #include "pr89523-1a.c" diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-2.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-2.c Sun Mar 17 09:27:56 2019 *************** *** 0 **** --- 1,37 ---- + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-mx32 -O2 -march=haswell" } */ + /* { dg-final { scan-assembler "\tvgather" } } */ + /* { dg-final { scan-assembler-not "addr32 vgather" } } */ + + typedef double __v2df __attribute__ ((__vector_size__ (16))); + typedef int __v4si __attribute__ ((__vector_size__ (16))); + typedef long long __v2di __attribute__ ((__vector_size__ (16))); + + typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__)); + typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__)); + + extern __inline __m128d + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm_i32gather_pd (double const *__base, __m128i __index, const int __scale) + { + __v2df __zero = { 0.0, 0.0 }; + __v2df __mask = __builtin_ia32_cmpeqpd (__zero, __zero); + __v2df x = x; + + return (__m128d) __builtin_ia32_gathersiv2df (x, + __base, + (__v4si)__index, + __mask, + __scale); + } + + __m128d x; + double *base; + __m128i idx; + + void extern + avx2_test (void) + { + x = _mm_i32gather_pd (base, idx, 1); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-3.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-3.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-3.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-3.c Sun Mar 17 09:27:56 2019 *************** *** 0 **** --- 1,36 ---- + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-mx32 -O2 -march=haswell" } */ + /* { dg-final { scan-assembler "\tvgather" } } */ + /* { dg-final { scan-assembler-not "addr32 vgather" } } */ + + typedef double __v2df __attribute__ ((__vector_size__ (16))); + typedef int __v4si __attribute__ ((__vector_size__ (16))); + typedef long long __v2di __attribute__ ((__vector_size__ (16))); + + typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__)); + typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__)); + + extern __inline __m128d + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm_i64gather_pd (double const *__base, __m128i __index, const int __scale) + { + __v2df __zero = { 0.0, 0.0 }; + __v2df __mask = __builtin_ia32_cmpeqpd (__zero, __zero); + + return (__m128d) __builtin_ia32_gatherdiv2df (__zero, + __base, + (__v2di)__index, + __mask, + __scale); + } + + __m128d x; + double *base; + __m128i idx; + + void extern + avx2_test (void) + { + x = _mm_i64gather_pd (base, idx, 1); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-4.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-4.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-4.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-4.c Sun Mar 17 09:27:56 2019 *************** *** 0 **** --- 1,36 ---- + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-mx32 -O2 -march=haswell" } */ + /* { dg-final { scan-assembler-not "\tvgather" } } */ + /* { dg-final { scan-assembler "addr32 vgather" } } */ + + typedef double __v2df __attribute__ ((__vector_size__ (16))); + typedef int __v4si __attribute__ ((__vector_size__ (16))); + typedef long long __v2di __attribute__ ((__vector_size__ (16))); + + typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__)); + typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__)); + + extern __inline __m128d + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm_i32gather_pd (double const *__base, __m128i __index, const int __scale) + { + __v2df __zero = { 0.0, 0.0 }; + __v2df __mask = __builtin_ia32_cmpeqpd (__zero, __zero); + __v2df x = x; + + return (__m128d) __builtin_ia32_gathersiv2df (x, + __base, + (__v4si)__index, + __mask, + __scale); + } + + __m128d x; + __m128i idx; + + void extern + avx2_test (void) + { + x = _mm_i32gather_pd ((void *) 0, idx, 1); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-5.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-5.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-5.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-5.c Sun Mar 17 09:27:56 2019 *************** *** 0 **** --- 1,39 ---- + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-mx32 -O2 -mavx512pf" } */ + /* { dg-final { scan-assembler "\tvgather" } } */ + /* { dg-final { scan-assembler-not "addr32 vgather" } } */ + + typedef int __v8si __attribute__ ((__vector_size__ (32))); + typedef long long __m256i __attribute__ ((__vector_size__ (32), + __may_alias__)); + typedef unsigned char __mmask8; + + extern __inline void + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm512_prefetch_i32gather_pd (__m256i __index, void const *__addr, + int __scale, int __hint) + { + __builtin_ia32_gatherpfdpd ((__mmask8) 0xFF, (__v8si) __index, __addr, + __scale, __hint); + } + + extern __inline void + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm512_mask_prefetch_i32gather_pd (__m256i __index, __mmask8 __mask, + void const *__addr, int __scale, int __hint) + { + __builtin_ia32_gatherpfdpd (__mask, (__v8si) __index, __addr, __scale, + __hint); + } + + volatile __m256i idx; + volatile __mmask8 m8; + void *base; + + void extern + avx512pf_test (void) + { + _mm512_prefetch_i32gather_pd (idx, base, 8, 3); + _mm512_mask_prefetch_i32gather_pd (idx, m8, base, 8, 3); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-6.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-6.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-6.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-6.c Sun Mar 17 09:27:56 2019 *************** *** 0 **** --- 1,38 ---- + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-mx32 -O2 -mavx512pf" } */ + /* { dg-final { scan-assembler-not "\tvgather" } } */ + /* { dg-final { scan-assembler "addr32 vgather" } } */ + + typedef int __v8si __attribute__ ((__vector_size__ (32))); + typedef long long __m256i __attribute__ ((__vector_size__ (32), + __may_alias__)); + typedef unsigned char __mmask8; + + extern __inline void + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm512_prefetch_i32gather_pd (__m256i __index, void const *__addr, + int __scale, int __hint) + { + __builtin_ia32_gatherpfdpd ((__mmask8) 0xFF, (__v8si) __index, __addr, + __scale, __hint); + } + + extern __inline void + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm512_mask_prefetch_i32gather_pd (__m256i __index, __mmask8 __mask, + void const *__addr, int __scale, int __hint) + { + __builtin_ia32_gatherpfdpd (__mask, (__v8si) __index, __addr, __scale, + __hint); + } + + volatile __m256i idx; + volatile __mmask8 m8; + + void extern + avx512pf_test (void) + { + _mm512_prefetch_i32gather_pd (idx, (void *) 0, 8, 3); + _mm512_mask_prefetch_i32gather_pd (idx, m8, (void *) 0, 8, 3); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-7.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-7.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-7.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-7.c Sun Mar 17 09:27:56 2019 *************** *** 0 **** --- 1,42 ---- + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-mx32 -O2 -mavx512f" } */ + /* { dg-final { scan-assembler "\tvscatter" } } */ + /* { dg-final { scan-assembler-not "addr32 vscatter" } } */ + + typedef int __v8si __attribute__ ((__vector_size__ (32))); + typedef double __v8df __attribute__ ((__vector_size__ (64))); + typedef long long __m256i __attribute__ ((__vector_size__ (32), + __may_alias__)); + typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__)); + typedef unsigned char __mmask8; + + extern __inline void + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm512_i32scatter_pd (void *__addr, __m256i __index, __m512d __v1, + int __scale) + { + __builtin_ia32_scattersiv8df (__addr, (__mmask8) 0xFF, + (__v8si) __index, (__v8df) __v1, __scale); + } + + extern __inline void + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm512_mask_i32scatter_pd (void *__addr, __mmask8 __mask, + __m256i __index, __m512d __v1, int __scale) + { + __builtin_ia32_scattersiv8df (__addr, __mask, (__v8si) __index, + (__v8df) __v1, __scale); + } + + volatile __m512d src; + volatile __m256i idx; + volatile __mmask8 m8; + double *addr; + + void extern + avx512f_test (void) + { + _mm512_i32scatter_pd (addr, idx, src, 8); + _mm512_mask_i32scatter_pd (addr, m8, idx, src, 8); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-8.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-8.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-8.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-8.c Sun Mar 17 09:27:56 2019 *************** *** 0 **** --- 1,41 ---- + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-mx32 -O2 -mavx512f" } */ + /* { dg-final { scan-assembler "\tvscatter" } } */ + /* { dg-final { scan-assembler-not "addr32 vscatter" } } */ + + typedef long long __v8di __attribute__ ((__vector_size__ (64))); + typedef double __v8df __attribute__ ((__vector_size__ (64))); + typedef long long __m512i __attribute__ ((__vector_size__ (64), __may_alias__)); + typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__)); + typedef unsigned char __mmask8; + + extern __inline void + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm512_i64scatter_pd (void *__addr, __m512i __index, __m512d __v1, + int __scale) + { + __builtin_ia32_scatterdiv8df (__addr, (__mmask8) 0xFF, + (__v8di) __index, (__v8df) __v1, __scale); + } + + extern __inline void + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm512_mask_i64scatter_pd (void *__addr, __mmask8 __mask, + __m512i __index, __m512d __v1, int __scale) + { + __builtin_ia32_scatterdiv8df (__addr, __mask, (__v8di) __index, + (__v8df) __v1, __scale); + } + + volatile __m512d src; + volatile __m512i idx; + volatile __mmask8 m8; + double *addr; + + void extern + avx512f_test (void) + { + _mm512_i64scatter_pd (addr, idx, src, 8); + _mm512_mask_i64scatter_pd (addr, m8, idx, src, 8); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-9.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-9.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89523-9.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89523-9.c Sun Mar 17 09:27:56 2019 *************** *** 0 **** --- 1,30 ---- + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-mx32 -O2 -mavx512f" } */ + /* { dg-final { scan-assembler-not "\tvscatter" } } */ + /* { dg-final { scan-assembler "addr32 vscatter" } } */ + + typedef int __v8si __attribute__ ((__vector_size__ (32))); + typedef double __v8df __attribute__ ((__vector_size__ (64))); + typedef long long __m256i __attribute__ ((__vector_size__ (32), + __may_alias__)); + typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__)); + typedef unsigned char __mmask8; + + extern __inline void + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm512_i32scatter_pd (void *__addr, __m256i __index, __m512d __v1, + int __scale) + { + __builtin_ia32_scattersiv8df (__addr, (__mmask8) 0xFF, + (__v8si) __index, (__v8df) __v1, __scale); + } + + volatile __m512d src; + volatile __m256i idx; + + void extern + avx512f_test (void) + { + _mm512_i32scatter_pd ((void *) 0, idx, src, 8); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89945.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89945.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr89945.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr89945.c Mon Apr 8 05:33:01 2019 *************** *** 0 **** --- 1,21 ---- + /* PR target/89945 */ + /* { dg-do compile } */ + /* { dg-options "-O2" } */ + + void + foo () + { + void *g[] = {&&a, &&b}; + + for (unsigned c = 0x1F;; c >>= 1) + { + unsigned d = (long)"a"; + long e = 8; + + while (e) + { + a: goto *g[c&d]; + b: e--; + } + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr90547.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr90547.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr90547.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr90547.c Thu May 23 04:55:40 2019 *************** *** 0 **** --- 1,21 ---- + /* PR target/90547 */ + /* { dg-do compile } */ + /* { dg-options "-O2" } */ + + void + foo () + { + void *g[] = {&&a, &&b}; + + for (unsigned c = 0x1F;; c >>= 1) + { + unsigned d = (long)("a"+1); + long e = 8; + + while (e) + { + a: goto *g[c&d]; + b: e--; + } + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr91131.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr91131.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr91131.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr91131.c Mon Sep 2 12:56:24 2019 *************** *** 0 **** --- 1,19 ---- + /* { dg-do compile } */ + /* { dg-options "-O" } */ + + struct Reg_T { + unsigned int a : 3; + unsigned int b : 1; + unsigned int c : 4; + }; + + volatile struct Reg_T Reg_A; + + int + main () + { + Reg_A = (struct Reg_T){ .a = 0, .b = 0, .c = 0 }; + return 0; + } + + /* { dg-final { scan-assembler-times "mov\[^\r\n\]*Reg_A" 1 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr91704.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr91704.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr91704.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/pr91704.c Mon Sep 9 11:43:08 2019 *************** *** 0 **** --- 1,14 ---- + /* PR target/91704 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -funsigned-char -mavx2 -mavx512f -masm=att" } */ + /* { dg-final { scan-assembler-times "\tvpcmpgtb\t%ymm" 1 } } */ + /* { dg-final { scan-assembler-not "\tvpsubusb\t" } } */ + /* { dg-final { scan-assembler-not "\tvpcmpeqb\t" } } */ + + #include + + __m256i + foo (__m256i x, __m256i y) + { + return _mm256_cmpgt_epi8 (x, y); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-1.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-1.c Tue Jan 16 11:10:44 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-1.c Sat Sep 28 19:54:00 2019 *************** foo (void) *** 6,13 **** { } ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ --- 6,13 ---- { } ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-10.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-10.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-10.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-10.c Sat Sep 28 19:54:00 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=thunk-inline -mindirect-branch=thunk -fno-pic" } */ extern void (*bar) (void); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=thunk-inline -mindirect-branch=thunk " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ extern void (*bar) (void); *************** foo (void) *** 10,20 **** return 0; } ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ /* { dg-final { scan-assembler-times {\tpause} 2 } } */ /* { dg-final { scan-assembler-times {\tlfence} 2 } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ --- 11,21 ---- return 0; } ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */ /* { dg-final { scan-assembler-times {\tpause} 2 } } */ /* { dg-final { scan-assembler-times {\tlfence} 2 } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "_?__x86_indirect_thunk_(r|e)ax:" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-11.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-11.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-11.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-11.c Sat Sep 28 19:54:00 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=thunk-extern -mindirect-branch=thunk -fno-pic" } */ extern void (*bar) (void); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=thunk-extern -mindirect-branch=thunk " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ extern void (*bar) (void); *************** foo (void) *** 10,20 **** return 0; } ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ /* { dg-final { scan-assembler-times {\tpause} 1 } } */ /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ --- 11,21 ---- return 0; } ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ /* { dg-final { scan-assembler-times {\tpause} 1 } } */ /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "_?__x86_indirect_thunk_(r|e)ax:" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-12.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-12.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-12.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-12.c Sat Sep 28 19:54:00 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ extern void (*bar) (void); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ extern void (*bar) (void); *************** foo (void) *** 10,20 **** return 0; } ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ /* { dg-final { scan-assembler-times {\tpause} 1 } } */ /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ --- 11,21 ---- return 0; } ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */ /* { dg-final { scan-assembler-times {\tpause} 1 } } */ /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ ! /* { dg-final { scan-assembler "_?__x86_indirect_thunk_(r|e)ax:" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-13.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-13.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-13.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-13.c Sat Sep 28 19:54:00 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ extern void (*bar) (void); extern int foo (void) __attribute__ ((function_return("thunk"))); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ extern void (*bar) (void); extern int foo (void) __attribute__ ((function_return("thunk"))); *************** foo (void) *** 11,21 **** return 0; } ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ /* { dg-final { scan-assembler-times {\tpause} 2 } } */ /* { dg-final { scan-assembler-times {\tlfence} 2 } } */ ! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 3 } } */ ! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 3 } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_indirect_thunk" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ --- 12,22 ---- return 0; } ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ /* { dg-final { scan-assembler-times {\tpause} 2 } } */ /* { dg-final { scan-assembler-times {\tlfence} 2 } } */ ! /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 3 } } */ ! /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 3 } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_indirect_thunk" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-14.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-14.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-14.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-14.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ extern void (*bar) (void); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ extern void (*bar) (void); *************** foo (void) *** 13,21 **** /* { dg-final { scan-assembler-times {\tpause} 1 } } */ /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ --- 14,24 ---- /* { dg-final { scan-assembler-times {\tpause} 1 } } */ /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_bar} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-15.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-15.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-15.c Fri Mar 2 13:09:55 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-15.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=keep -fno-pic" } */ extern void (*bar) (void); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=keep " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ extern void (*bar) (void); *************** foo (void) *** 11,21 **** return 0; } ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler-times {\tpause} 1 } } */ /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ --- 12,24 ---- return 0; } ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler-times {\tpause} 1 } } */ /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_bar} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-16.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-16.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-16.c Tue Jan 16 11:10:44 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-16.c Sat Sep 28 19:54:00 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mfunction-return=thunk-inline -mindirect-branch=thunk-extern -fno-pic" } */ extern void (*bar) (void); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mfunction-return=thunk-inline -mindirect-branch=thunk-extern " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ extern void (*bar) (void); *************** foo (void) *** 11,18 **** return 0; } ! /* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ! /* { dg-final { scan-assembler-not "__x86_return_thunk" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ --- 12,19 ---- return 0; } ! /* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ ! /* { dg-final { scan-assembler-not "_?__x86_return_thunk" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-2.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-2.c Tue Jan 16 11:10:44 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-2.c Sat Sep 28 19:54:00 2019 *************** foo (void) *** 6,13 **** { } ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ --- 6,13 ---- { } ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-22.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-22.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-22.c Fri Mar 2 13:05:18 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-22.c Sat Sep 28 19:54:00 2019 *************** struct s { _Complex unsigned short x; }; *** 6,15 **** struct s gs = { 100 + 200i }; struct s __attribute__((noinline)) foo (void) { return gs; } ! /* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */ ! /* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk_ecx" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ --- 6,17 ---- struct s gs = { 100 + 200i }; struct s __attribute__((noinline)) foo (void) { return gs; } ! /* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 { target { ! *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" { target { ! *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk_ecx" { target { ! *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {call[ \t]*___x86.get_pc_thunk.cx} { target { *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*___x86_return_thunk} { target { *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-23.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-23.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-23.c Fri Mar 2 13:05:18 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-23.c Sat Sep 28 19:54:00 2019 *************** struct s { _Complex unsigned short x; }; *** 6,15 **** struct s gs = { 100 + 200i }; struct s __attribute__((noinline)) foo (void) { return gs; } ! /* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */ ! /* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk_ecx" } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler-not {\tpause} } } */ /* { dg-final { scan-assembler-not {\tlfence} } } */ --- 6,17 ---- struct s gs = { 100 + 200i }; struct s __attribute__((noinline)) foo (void) { return gs; } ! /* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 { target { ! *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" { target { ! *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk_ecx" { target { ! *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {call[ \t]*___x86.get_pc_thunk.cx} { target { *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*___x86_return_thunk} { target { *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler-not {\tpause} } } */ /* { dg-final { scan-assembler-not {\tlfence} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-24.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-24.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-24.c Fri Mar 2 13:05:18 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-24.c Sat Sep 28 19:54:00 2019 *************** struct s { _Complex unsigned short x; }; *** 6,15 **** struct s gs = { 100 + 200i }; struct s __attribute__((noinline)) foo (void) { return gs; } ! /* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */ ! /* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk_ecx" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ --- 6,17 ---- struct s gs = { 100 + 200i }; struct s __attribute__((noinline)) foo (void) { return gs; } ! /* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 { target { ! *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" { target { ! *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk_ecx" { target { ! *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {call[ \t]*___x86.get_pc_thunk.cx} { target { *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*___x86_return_thunk} { target { *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-25.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-25.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-25.c Fri Mar 2 13:05:18 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-25.c Sat Sep 28 20:05:38 2019 *************** *** 1,5 **** --- 1,6 ---- /* PR target/r84530 */ /* { dg-do compile { target ia32 } } */ + /* { dg-skip-if "ABI differs for return complex value" { *-*-darwin* } } */ /* { dg-options "-O2 -mfunction-return=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ struct s { _Complex unsigned short x; }; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-3.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-3.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-3.c Tue Jan 16 11:10:44 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-3.c Sat Sep 28 19:54:00 2019 *************** foo (void) *** 6,12 **** { } ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ --- 6,12 ---- { } ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-4.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-4.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-4.c Tue Jan 16 11:10:44 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-4.c Sat Sep 28 19:54:00 2019 *************** foo (void) *** 6,12 **** { } ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ --- 6,12 ---- { } ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-5.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-5.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-5.c Tue Jan 16 11:10:44 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-5.c Sat Sep 28 19:54:00 2019 *************** foo (void) *** 8,15 **** { } ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ --- 8,15 ---- { } ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-6.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-6.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-6.c Tue Jan 16 11:10:44 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-6.c Sat Sep 28 19:54:00 2019 *************** foo (void) *** 7,14 **** { } ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ --- 7,14 ---- { } ! /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ /* { dg-final { scan-assembler {\tpause} } } */ /* { dg-final { scan-assembler {\tlfence} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-7.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-7.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-7.c Tue Jan 16 11:10:44 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-7.c Sat Sep 28 19:54:00 2019 *************** foo (void) *** 7,13 **** { } ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ --- 7,13 ---- { } ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-8.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-8.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-8.c Tue Jan 16 11:10:44 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-8.c Sat Sep 28 19:54:00 2019 *************** foo (void) *** 8,14 **** { } ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ --- 8,14 ---- { } ! /* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */ /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ ! /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ! /* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-9.c gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-9.c *** gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-9.c Mon Mar 19 16:52:13 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/i386/ret-thunk-9.c Fri Nov 1 20:52:21 2019 *************** *** 1,5 **** /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=thunk -mindirect-branch=thunk -fno-pic" } */ extern void (*bar) (void); --- 1,6 ---- /* { dg-do compile } */ ! /* { dg-options "-O2 -mno-indirect-branch-register -mno-indirect-branch-register -mfunction-return=thunk -mindirect-branch=thunk " } */ ! /* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ extern void (*bar) (void); *************** foo (void) *** 10,21 **** return 0; } ! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ! /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ! /* { dg-final { scan-assembler "__x86_return_thunk:" } } */ ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */ /* { dg-final { scan-assembler-times {\tpause} 2 } } */ /* { dg-final { scan-assembler-times {\tlfence} 2 } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ --- 11,24 ---- return 0; } ! /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ ! /* { dg-final { scan-assembler {jmp[ \t]+\.?LIND} } } */ ! /* { dg-final { scan-assembler {call[ \t]+\.?LIND} } } */ ! /* { dg-final { scan-assembler "_?__x86_return_thunk:" } } */ ! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar" { target *-*-linux* } } } */ ! /* { dg-final { scan-assembler {movq[ \t]*_bar} { target { lp64 && *-*-darwin* } } } } */ ! /* { dg-final { scan-assembler {movl[ \t]*[Ll]_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ /* { dg-final { scan-assembler-times {\tpause} 2 } } */ /* { dg-final { scan-assembler-times {\tlfence} 2 } } */ ! /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/altivec-13.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/altivec-13.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/altivec-13.c Thu May 11 19:56:21 2006 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/altivec-13.c Tue Apr 2 01:08:31 2019 *************** *** 1,21 **** /* { dg-do compile { target powerpc*-*-* } } */ /* { dg-require-effective-target powerpc_altivec_ok } */ /* { dg-options "-maltivec" } */ /* Author: Ziemowit Laski */ /* This test case exercises intrinsic/argument combinations that, while not in the Motorola AltiVec PIM, have nevertheless crept into the AltiVec vernacular over the years. */ #include ! void foo (void) { vector bool int boolVec1 = (vector bool int) vec_splat_u32(3); vector bool short boolVec2 = (vector bool short) vec_splat_u16(3); vector bool char boolVec3 = (vector bool char) vec_splat_u8(3); ! boolVec1 = vec_sld( boolVec1, boolVec1, 4 ); boolVec2 = vec_sld( boolVec2, boolVec2, 2 ); boolVec3 = vec_sld( boolVec3, boolVec3, 1 ); } --- 1,77 ---- /* { dg-do compile { target powerpc*-*-* } } */ /* { dg-require-effective-target powerpc_altivec_ok } */ /* { dg-options "-maltivec" } */ + /* Author: Ziemowit Laski */ /* This test case exercises intrinsic/argument combinations that, while not in the Motorola AltiVec PIM, have nevertheless crept into the AltiVec vernacular over the years. */ + /* Tests requiring VSX support (vector long long and vector double) have + been moved over to vsx-13.c. */ + #include ! void foo (void) { vector bool int boolVec1 = (vector bool int) vec_splat_u32(3); vector bool short boolVec2 = (vector bool short) vec_splat_u16(3); vector bool char boolVec3 = (vector bool char) vec_splat_u8(3); ! vector signed char vsc1, vsc2, vscz; ! vector unsigned char vuc1, vuc2, vucz; ! vector signed short int vssi1, vssi2, vssiz; ! vector signed int vsi1, vsi2, vsiz; ! vector unsigned int vui1, vui2, vuiz; ! vector unsigned short int vusi1, vusi2, vusiz; ! vector pixel vp1, vp2, vpz; ! vector float vf1, vf2, vfz; ! boolVec1 = vec_sld( boolVec1, boolVec1, 4 ); boolVec2 = vec_sld( boolVec2, boolVec2, 2 ); boolVec3 = vec_sld( boolVec3, boolVec3, 1 ); + + vscz = vec_sld( vsc1, vsc2, 1 ); + vucz = vec_sld( vuc1, vuc2, 1 ); + vsiz = vec_sld( vsi1, vsi2, 1 ); + vuiz = vec_sld( vui1, vui2, 1 ); + vssiz = vec_sld( vssi1, vssi2, 1 ); + vusiz = vec_sld( vusi1, vusi2, 1 ); + + vfz = vec_sld( vf1, vf2, 1 ); + + vpz = vec_sld( vp1, vp2, 1 ); + + vucz = vec_srl(vuc1, vuc2); + vsiz = vec_srl(vsi1, vuc2); + vuiz = vec_srl(vui1, vuc2); + vpz = vec_srl(vp1, vuc2); + vssiz = vec_srl(vssi1, vuc2); + vusiz = vec_srl(vusi1, vuc2); + + vscz = vec_sro(vsc1, vsc2); + vscz = vec_sro(vsc1, vuc2); + vucz = vec_sro(vuc1, vsc2); + vucz = vec_sro(vuc1, vuc2); + vsiz = vec_sro(vsi1, vsc2); + vsiz = vec_sro(vsi1, vuc2); + vuiz = vec_sro(vui1, vsc2); + vuiz = vec_sro(vui1, vuc2); + vpz = vec_sro(vp1, vsc2); + vpz = vec_sro(vp1, vuc2); + vssiz = vec_sro(vssi1, vsc2); + vssiz = vec_sro(vssi1, vuc2); + vusiz = vec_sro(vusi1, vsc2); + vusiz = vec_sro(vusi1, vuc2); + vfz = vec_sro(vf1, vsc2); + vfz = vec_sro(vf1, vuc2); } + + /* Expected results: + vec_sld vsldoi + vec_srl vsr + vec_sro vsro */ + + /* { dg-final { scan-assembler-times "vsldoi" 11 } } */ + /* { dg-final { scan-assembler-times "vsr " 6 } } */ + /* { dg-final { scan-assembler-times "vsro" 16 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/altivec-7.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/altivec-7.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/altivec-7.c Thu May 11 19:56:21 2006 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/altivec-7.c Thu Jan 1 00:00:00 1970 *************** *** 1,46 **** - /* Origin: Aldy Hernandez */ - - /* { dg-do compile { target powerpc*-*-* } } */ - /* { dg-require-effective-target powerpc_altivec_ok } */ - /* { dg-options "-maltivec" } */ - - #include - - int **intp; - int *var_int; - unsigned int **uintp; - vector pixel *varpixel; - vector signed char *vecchar; - vector signed int *vecint; - vector signed short *vecshort; - vector unsigned char *vecuchar; - vector unsigned int *vecuint; - vector unsigned short *vecushort; - vector float *vecfloat; - - int main () - { - *vecfloat++ = vec_andc((vector bool int)vecint[0], vecfloat[1]); - *vecfloat++ = vec_andc(vecfloat[0], (vector bool int)vecint[1]); - *vecfloat++ = vec_vxor((vector bool int)vecint[0], vecfloat[1]); - *vecfloat++ = vec_vxor(vecfloat[0], (vector bool int)vecint[1]); - *varpixel++ = vec_packpx(vecuint[0], vecuint[1]); - *varpixel++ = vec_vpkpx(vecuint[0], vecuint[1]); - *vecshort++ = vec_vmulosb(vecchar[0], vecchar[1]); - *vecint++ = vec_ld(var_int[0], intp[1]); - *vecint++ = vec_lde(var_int[0], intp[1]); - *vecint++ = vec_ldl(var_int[0], intp[1]); - *vecint++ = vec_lvewx(var_int[0], intp[1]); - *vecint++ = vec_unpackh(vecshort[0]); - *vecint++ = vec_unpackl(vecshort[0]); - *vecushort++ = vec_andc((vector bool short)vecshort[0], vecushort[1]); - *vecushort++ = vec_andc(vecushort[0], (vector bool short)vecshort[1]); - *vecushort++ = vec_vxor((vector bool short)vecshort[0], vecushort[1]); - *vecushort++ = vec_vxor(vecushort[0], (vector bool short)vecshort[1]); - *vecuint++ = vec_ld(var_int[0], uintp[1]); - *vecuint++ = vec_lvx(var_int[0], uintp[1]); - *vecuint++ = vec_vmsumubm(vecuchar[0], vecuchar[1], vecuint[2]); - *vecuchar++ = vec_xor(vecuchar[0], (vector unsigned char)vecchar[1]); - - return 0; - } --- 0 ---- diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/altivec-7.h gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/altivec-7.h *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/altivec-7.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/altivec-7.h Tue Apr 2 01:08:31 2019 *************** *** 0 **** --- 1,47 ---- + /* Origin: Aldy Hernandez */ + + /* This test code is included into altivec-7-be.c and altivec-7-le.c. + The two files have the tests for the number of instructions generated for + LE versus BE. */ + + #include + + int **intp; + int *var_int; + unsigned int **uintp; + vector pixel *varpixel; + vector signed char *vecchar; + vector signed int *vecint; + vector signed short *vecshort; + vector unsigned char *vecuchar; + vector unsigned int *vecuint; + vector unsigned short *vecushort; + vector float *vecfloat; + + int main () + { + *vecfloat++ = vec_andc((vector bool int)vecint[0], vecfloat[1]); + *vecfloat++ = vec_andc(vecfloat[0], (vector bool int)vecint[1]); + *vecfloat++ = vec_vxor((vector bool int)vecint[0], vecfloat[1]); + *vecfloat++ = vec_vxor(vecfloat[0], (vector bool int)vecint[1]); + *varpixel++ = vec_packpx(vecuint[0], vecuint[1]); + *varpixel++ = vec_vpkpx(vecuint[0], vecuint[1]); + *vecshort++ = vec_vmulesb(vecchar[0], vecchar[1]); + *vecshort++ = vec_vmulosb(vecchar[0], vecchar[1]); + *vecint++ = vec_ld(var_int[0], intp[1]); + *vecint++ = vec_lde(var_int[0], intp[1]); + *vecint++ = vec_ldl(var_int[0], intp[1]); + *vecint++ = vec_lvewx(var_int[0], intp[1]); + *vecint++ = vec_unpackh(vecshort[0]); + *vecint++ = vec_unpackl(vecshort[0]); + *vecushort++ = vec_andc((vector bool short)vecshort[0], vecushort[1]); + *vecushort++ = vec_andc(vecushort[0], (vector bool short)vecshort[1]); + *vecushort++ = vec_vxor((vector bool short)vecshort[0], vecushort[1]); + *vecushort++ = vec_vxor(vecushort[0], (vector bool short)vecshort[1]); + *vecuint++ = vec_ld(var_int[0], uintp[1]); + *vecuint++ = vec_lvx(var_int[0], uintp[1]); + *vecuint++ = vec_vmsumubm(vecuchar[0], vecuchar[1], vecuint[2]); + *vecuchar++ = vec_xor(vecuchar[0], (vector unsigned char)vecchar[1]); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-1.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-1.c Wed Jan 30 08:18:05 2019 *************** *** 0 **** --- 1,184 ---- + /* { dg-require-effective-target powerpc_altivec_ok } */ + /* { dg-options "-maltivec" } */ + + /* Test vec_ld and vec_st can support both scalar and vector + type address points, the list is: + - address of unsigned char/short/int + - address of signed char/short/int + - address of float + - address of vector unsigned char/short/int + - address of vector signed char/short/int + - address of vector float */ + #include + + /* Test vec_ld can allow scalar and vector type address. */ + vector unsigned char + test_vld_scalar_uc (const unsigned char *address) + { + return __builtin_vec_ld (0, address); + } + + vector unsigned short + test_vld_scalar_us (const unsigned short *address) + { + return __builtin_vec_ld (0, address); + } + + vector unsigned int + test_vld_scalar_ui (const unsigned int *address) + { + return __builtin_vec_ld (0, address); + } + + vector signed char + test_vld_scalar_sc (const signed char *address) + { + return __builtin_vec_ld (0, address); + } + + vector signed short + test_vld_scalar_ss (const signed short *address) + { + return __builtin_vec_ld (0, address); + } + + vector signed int + test_vld_scalar_si (const signed int *address) + { + return __builtin_vec_ld (0, address); + } + + vector float + test_vld_scalar_f (const float *address) + { + return __builtin_vec_ld (0, address); + } + + vector unsigned char + test_vld_vector_uc (const vector unsigned char *address) + { + return __builtin_vec_ld (0, address); + } + + vector unsigned short + test_vld_vector_us (const vector unsigned short *address) + { + return __builtin_vec_ld (0, address); + } + + vector unsigned int + test_vld_vector_ui (const vector unsigned int *address) + { + return __builtin_vec_ld (0, address); + } + + vector signed char + test_vld_vector_sc (const vector signed char *address) + { + return __builtin_vec_ld (0, address); + } + + vector signed short + test_vld_vector_ss (const vector signed short *address) + { + return __builtin_vec_ld (0, address); + } + + vector signed int + test_vld_vector_si (const vector signed int *address) + { + return __builtin_vec_ld (0, address); + } + + vector float + test_vld_vector_f (const vector float *address) + { + return __builtin_vec_ld (0, address); + } + + /* Test vec_st can allow scalar and vector type address. */ + + void + test_vst_scalar_uc (vector unsigned char v, unsigned char *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_scalar_us (vector unsigned short v, unsigned short *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_scalar_ui (vector unsigned int v, unsigned int *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_scalar_sc (vector signed char v, signed char *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_scalar_ss (vector signed short v, signed short *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_scalar_si (vector signed int v, signed int *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_scalar_f (vector float v, float *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_vector_uc (vector unsigned char v, vector unsigned char *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_vector_us (vector unsigned short v, vector unsigned short *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_vector_ui (vector unsigned int v, vector unsigned int *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_vector_sc (vector signed char v, vector signed char *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_vector_ss (vector signed short v, vector signed short *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_vector_si (vector signed int v, vector signed int *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_vector_f (vector float v, vector float *address) + { + __builtin_vec_st (v, 0, address); + } + diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-2.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-2.c Wed Jan 30 08:18:05 2019 *************** *** 0 **** --- 1,92 ---- + /* { dg-require-effective-target powerpc_vsx_ok } */ + /* { dg-options "-mvsx" } */ + + /* Note that vector long long and vector double type require vsx support. */ + + /* Test vec_ld and vec_st can support both scalar and vector + type address points, the list is: + - address of unsigned long long + - address of signed long long + - address of double + - address of vector unsigned long long + - address of vector signed long long + - address of vector double */ + #include + + /* Test vec_ld can allow scalar and vector type address. */ + + vector unsigned long long + test_vld_scalar_ul (const unsigned long long *address) + { + return __builtin_vec_ld (0, address); + } + + vector signed long long + test_vld_scalar_sl (const signed long long *address) + { + return __builtin_vec_ld (0, address); + } + + vector double + test_vld_scalar_d (const double *address) + { + return __builtin_vec_ld (0, address); + } + + vector unsigned long long + test_vld_vector_ul (const vector unsigned long long *address) + { + return __builtin_vec_ld (0, address); + } + + vector signed long long + test_vld_vector_sl (const vector signed long long *address) + { + return __builtin_vec_ld (0, address); + } + + vector double + test_vld_vector_d (const vector double *address) + { + return __builtin_vec_ld (0, address); + } + + /* Test vec_st can allow scalar and vector type address. */ + + void + test_vst_scalar_ul (vector unsigned long long v, unsigned long long *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_scalar_sl (vector signed long long v, signed long long *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_scalar_d (vector double v, double *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_vector_ul (vector unsigned long long v, + vector unsigned long long *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_vector_sl (vector signed long long v, vector signed long long *address) + { + __builtin_vec_st (v, 0, address); + } + + void + test_vst_vector_d (vector double v, vector double *address) + { + __builtin_vec_st (v, 0, address); + } + diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp Fri Nov 1 20:01:52 2019 *************** *** 16,24 **** # along with GCC; see the file COPYING3. If not see # . ! # Exit immediately if this isn't a PowerPC target or if the target is aix. if { (![istarget powerpc*-*-*] && ![istarget rs6000-*-*]) ! || [istarget "powerpc*-*-aix*"] } then { return } --- 16,26 ---- # along with GCC; see the file COPYING3. If not see # . ! # Exit immediately if this isn't a PowerPC target or if the target is ! # aix or Darwin. if { (![istarget powerpc*-*-*] && ![istarget rs6000-*-*]) ! || [istarget "powerpc*-*-aix*"] ! || [istarget "powerpc*-*-darwin*"] } then { return } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-2.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/builtins-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-2.c Tue Nov 4 12:09:50 2014 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/builtins-2.c Thu Sep 5 19:50:50 2019 *************** *** 1,5 **** --- 1,6 ---- /* { dg-do run { target { powerpc64le-*-* } } } */ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + /* { dg-require-effective-target vsx_hw } */ /* { dg-options "-mcpu=power8 " } */ #include diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c Mon Mar 5 17:11:16 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c Tue Apr 2 01:08:31 2019 *************** test_pack_float (vector double x, vector *** 17,22 **** --- 17,50 ---- return vec_pack (x, y); } + vector unsigned char + test_vsi_packs_vusi_vusi (vector unsigned short x, + vector unsigned short y) + { + return vec_packs (x, y); + } + + vector signed char + test_vsi_packs_vssi_vssi (vector signed short x, + vector signed short y) + { + return vec_packs (x, y); + } + + vector signed short int + test_vsi_packs_vsi_vsi (vector signed int x, + vector signed int y) + { + return vec_packs (x, y); + } + + vector unsigned short int + test_vsi_packs_vui_vui (vector unsigned int x, + vector unsigned int y) + { + return vec_packs (x, y); + } + vector long long test_nabs_long_long (vector long long x) { *************** test_vui_packs_vull_vull (vector unsigne *** 37,49 **** return vec_packs (x, y); } /* Expected test results: test_eq_long_long 1 vcmpequd inst test_pack_float 1 vpkudum inst test_nabs_long_long 1 vspltisw, 1 vsubudm, 1 vminsd test_vsi_packs_vsll_vsll 1 vpksdss ! test_vui_packs_vull_vull 1 vpkudus */ /* { dg-final { scan-assembler-times "vcmpequd" 1 } } */ /* { dg-final { scan-assembler-times "vpkudum" 1 } } */ --- 65,121 ---- return vec_packs (x, y); } + vector unsigned char + test_vsi_packsu_vssi_vssi (vector signed short x, + vector signed short y) + { + return vec_packsu (x, y); + } + + vector unsigned char + test_vsi_packsu_vusi_vusi (vector unsigned short x, + vector unsigned short y) + { + return vec_packsu (x, y); + } + + vector unsigned int + test_vsi_packsu_vsll_vsll (vector signed long long x, + vector signed long long y) + { + return vec_packsu (x, y); + } + + vector unsigned int + test_vsi_packsu_vull_vull (vector unsigned long long x, + vector unsigned long long y) + { + return vec_packsu (x, y); + } + + vector unsigned short int + test_vsi_packsu_vsi_vsi (vector signed int x, + vector signed int y) + { + return vec_packsu (x, y); + } + + vector unsigned short int + test_vsi_packsu_vui_vui (vector unsigned int x, + vector unsigned int y) + { + return vec_packsu (x, y); + } + /* Expected test results: test_eq_long_long 1 vcmpequd inst test_pack_float 1 vpkudum inst test_nabs_long_long 1 vspltisw, 1 vsubudm, 1 vminsd test_vsi_packs_vsll_vsll 1 vpksdss ! test_vui_packs_vull_vull 1 vpkudus ! test_vui_packs_vssi_vssi 1 vpkshss ! test_vsi_packsu_vssi_vssi 1 vpkshus */ /* { dg-final { scan-assembler-times "vcmpequd" 1 } } */ /* { dg-final { scan-assembler-times "vpkudum" 1 } } */ *************** test_vui_packs_vull_vull (vector unsigne *** 51,54 **** /* { dg-final { scan-assembler-times "vsubudm" 1 } } */ /* { dg-final { scan-assembler-times "vminsd" 1 } } */ /* { dg-final { scan-assembler-times "vpksdss" 1 } } */ ! /* { dg-final { scan-assembler-times "vpkudus" 1 } } */ --- 123,131 ---- /* { dg-final { scan-assembler-times "vsubudm" 1 } } */ /* { dg-final { scan-assembler-times "vminsd" 1 } } */ /* { dg-final { scan-assembler-times "vpksdss" 1 } } */ ! /* { dg-final { scan-assembler-times "vpkudus" 2 } } */ ! /* { dg-final { scan-assembler-times "vpkuhus" 2 } } */ ! /* { dg-final { scan-assembler-times "vpkshss" 1 } } */ ! /* { dg-final { scan-assembler-times "vpkshus" 1 } } */ ! /* { dg-final { scan-assembler-times "vpksdus" 1 } } */ ! /* { dg-final { scan-assembler-times "vpkuwus" 2 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p9-runnable.c Tue Apr 2 01:08:31 2019 *************** *** 0 **** --- 1,35 ---- + /* { dg-do run { target { powerpc64*-*-* && { lp64 && p9vector_hw } } } } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ + /* { dg-options "-mcpu=power9 -O2 -mupper-regs-di" } */ + + #include // vector + + void abort (void); + + int main() { + int i; + vector float vfr, vfexpt; + vector unsigned short vusha; + + /* 1.0, -2.0, 0.0, 8.5, 1.5, 0.5, 1.25, -0.25 */ + vusha = (vector unsigned short){0B011110000000000, 0B1100000000000000, + 0B000000000000000, 0B0100100001000000, + 0B011111000000000, 0B0011100000000000, + 0B011110100000000, 0B1011010000000000}; + + vfexpt = (vector float){1.0, -2.0, 0.0, 8.5}; + vfr = vec_extract_fp_from_shorth(vusha); + + for (i=0; i<4; i++) { + if (vfr[i] != vfexpt[i]) + abort(); + } + + vfexpt = (vector float){1.5, 0.5, 1.25, -0.25}; + vfr = vec_extract_fp_from_shortl(vusha); + + for (i=0; i<4; i++) { + if (vfr[i] != vfexpt[i]) + abort(); + } + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-3.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/builtins-3.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-3.c Mon Mar 5 17:11:16 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/builtins-3.c Tue Apr 2 01:08:31 2019 *************** test_nabs_double (vector double x) *** 59,64 **** --- 59,228 ---- return vec_nabs (x); } + vector signed char + test_sll_vsc_vsc_vsuc (vector signed char x, vector unsigned char y) + { + return vec_sll (x, y); + } + + vector unsigned char + test_sll_vuc_vuc_vuc (vector unsigned char x, vector unsigned char y) + { + return vec_sll (x, y); + } + + vector signed int + test_sll_vsi_vsi_vuc (vector signed int x, vector unsigned char y) + { + return vec_sll (x, y); + } + + vector unsigned int + test_sll_vui_vui_vuc (vector unsigned int x, vector unsigned char y) + { + return vec_sll (x, y); + } + + vector bool long long + test_sll_vbll_vbll_vuc (vector bool long long x, + vector unsigned char y) + { + return vec_sll (x, y); + } + + vector bool long long + test_sll_vbll_vbll_vull (vector bool long long x, + vector unsigned long long y) + { + return vec_sll (x, y); + } + + vector bool long long + test_sll_vbll_vbll_vus (vector bool long long x, + vector unsigned short y) + { + return vec_sll (x, y); + } + vector pixel + test_sll_vp_vp_vuc (vector pixel x, vector unsigned char y) + { + return vec_sll (x, y); + } + + vector signed short int + test_sll_vssi_vssi_vuc (vector signed short x, vector unsigned char y) + { + return vec_sll (x, y); + } + + vector unsigned short int + test_sll_vusi_vusi_vuc (vector unsigned short x, vector unsigned char y) + { + return vec_sll (x, y); + } + + vector signed char + test_slo_vsc_vsc_vsc (vector signed char x, vector signed char y) + { + return vec_slo (x, y); + } + + vector signed char + test_slo_vsc_vsc_vuc (vector signed char x, vector unsigned char y) + { + return vec_slo (x, y); + } + + vector unsigned char + test_slo_vuc_vuc_vsc (vector unsigned char x, vector signed char y) + { + return vec_slo (x, y); + } + + vector unsigned char + test_slo_vuc_vuc_vuc (vector unsigned char x, vector unsigned char y) + { + return vec_slo (x, y); + } + + vector signed int + test_slo_vsi_vsi_vsc (vector signed int x, vector signed char y) + { + return vec_slo (x, y); + } + + vector signed int + test_slo_vsi_vsi_vuc (vector signed int x, vector unsigned char y) + { + return vec_slo (x, y); + } + + vector unsigned int + test_slo_vui_vui_vsc (vector unsigned int x, vector signed char y) + { + return vec_slo (x, y); + } + + vector unsigned int + test_slo_vui_vui_vuc (vector unsigned int x, vector unsigned char y) + { + return vec_slo (x, y); + } + + vector pixel + test_slo_vp_vp_vsc (vector pixel int x, vector signed char y) + { + return vec_slo (x, y); + } + + vector pixel + test_slo_vp_vp_vuc (vector pixel int x, vector unsigned char y) + { + return vec_slo (x, y); + } + + vector signed short int + test_slo_vssi_vssi_vsc (vector signed short int x, vector signed char y) + { + return vec_slo (x, y); + } + + vector signed short int + test_slo_vssi_vssi_vuc (vector signed short int x, vector unsigned char y) + { + return vec_slo (x, y); + } + + vector unsigned short int + test_slo_vusi_vusi_vsc (vector unsigned short int x, vector signed char y) + { + return vec_slo (x, y); + } + + vector unsigned short int + test_slo_vusi_vusi_vuc (vector unsigned short int x, vector unsigned char y) + { + return vec_slo (x, y); + } + + vector float + test_slo_vf_vf_vsc (vector float x, vector signed char y) + { + return vec_slo (x, y); + } + + vector float + test_slo_vf_vf_vuc (vector float x, vector unsigned char y) + { + return vec_slo (x, y); + } + + vector int + test_cmpb_float (vector float x, vector float y) + { + return vec_cmpb (x, y); + } + /* Expected test results: test_eq_char 1 vcmpequb inst *************** test_nabs_double (vector double x) *** 69,75 **** test_nabs_short 1 vspltisw, 1 vsubuhm, 1 vminsh test_nabs_int 1 vspltisw, 1 vsubuwm, 1 vminsw test_nabs_float 1 xvnabssp ! test_nabs_double 1 xvnabsdp */ /* { dg-final { scan-assembler-times "vcmpequb" 1 } } */ /* { dg-final { scan-assembler-times "vcmpequh" 1 } } */ --- 233,240 ---- test_nabs_short 1 vspltisw, 1 vsubuhm, 1 vminsh test_nabs_int 1 vspltisw, 1 vsubuwm, 1 vminsw test_nabs_float 1 xvnabssp ! test_nabs_double 1 xvnabsdp ! test_cmpb_float 1 vcmpbfp */ /* { dg-final { scan-assembler-times "vcmpequb" 1 } } */ /* { dg-final { scan-assembler-times "vcmpequh" 1 } } */ *************** test_nabs_double (vector double x) *** 84,87 **** --- 249,253 ---- /* { dg-final { scan-assembler-times "vspltisw" 3 } } */ /* { dg-final { scan-assembler-times "xvnabssp" 1 } } */ /* { dg-final { scan-assembler-times "xvnabsdp" 1 } } */ + /* { dg-final { scan-assembler-times "vcmpbfp" 1 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c Tue Nov 4 12:09:50 2014 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c Thu Mar 7 01:54:46 2019 *************** *** 4,40 **** /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic -fno-unroll-loops -fno-unroll-all-loops" } */ typedef vector unsigned long long crypto_t; typedef vector unsigned long long v2di_t; typedef vector unsigned int v4si_t; typedef vector unsigned short v8hi_t; typedef vector unsigned char v16qi_t; ! crypto_t crpyto1 (crypto_t a) { return __builtin_crypto_vsbox (a); } crypto_t crypto2 (crypto_t a, crypto_t b) { return __builtin_crypto_vcipher (a, b); } crypto_t crypto3 (crypto_t a, crypto_t b) { return __builtin_crypto_vcipherlast (a, b); } crypto_t crypto4 (crypto_t a, crypto_t b) { return __builtin_crypto_vncipher (a, b); } crypto_t crypto5 (crypto_t a, crypto_t b) { return __builtin_crypto_vncipherlast (a, b); } v16qi_t crypto6a (v16qi_t a, v16qi_t b, v16qi_t c) { return __builtin_crypto_vpermxor (a, b, c); --- 4,66 ---- /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic -fno-unroll-loops -fno-unroll-all-loops" } */ + #include typedef vector unsigned long long crypto_t; typedef vector unsigned long long v2di_t; typedef vector unsigned int v4si_t; typedef vector unsigned short v8hi_t; typedef vector unsigned char v16qi_t; ! crypto_t crypto1 (crypto_t a) { return __builtin_crypto_vsbox (a); } + v16qi_t crypto1_be (v16qi_t a) + { + return vec_sbox_be (a); + } + crypto_t crypto2 (crypto_t a, crypto_t b) { return __builtin_crypto_vcipher (a, b); } + v16qi_t crypto2_be (v16qi_t a, v16qi_t b) + { + return vec_cipher_be (a, b); + } + crypto_t crypto3 (crypto_t a, crypto_t b) { return __builtin_crypto_vcipherlast (a, b); } + v16qi_t crypto3_be (v16qi_t a, v16qi_t b) + { + return vec_cipherlast_be (a, b); + } + crypto_t crypto4 (crypto_t a, crypto_t b) { return __builtin_crypto_vncipher (a, b); } + v16qi_t crypto4_be (v16qi_t a, v16qi_t b) + { + return vec_ncipher_be (a, b); + } + crypto_t crypto5 (crypto_t a, crypto_t b) { return __builtin_crypto_vncipherlast (a, b); } + v16qi_t crypto5_be (v16qi_t a, v16qi_t b) + { + return vec_ncipherlast_be (a, b); + } + v16qi_t crypto6a (v16qi_t a, v16qi_t b, v16qi_t c) { return __builtin_crypto_vpermxor (a, b, c); *************** v4si_t crypto8d (v4si_t a) *** 117,131 **** /* Note space is used after the instruction so that vcipherlast does not match vcipher. */ ! /* { dg-final { scan-assembler-times "vcipher " 1 } } */ ! /* { dg-final { scan-assembler-times "vcipherlast " 1 } } */ ! /* { dg-final { scan-assembler-times "vncipher " 1 } } */ ! /* { dg-final { scan-assembler-times "vncipherlast " 1 } } */ /* { dg-final { scan-assembler-times "vpermxor " 4 } } */ /* { dg-final { scan-assembler-times "vpmsumb " 2 } } */ /* { dg-final { scan-assembler-times "vpmsumd " 2 } } */ /* { dg-final { scan-assembler-times "vpmsumh " 2 } } */ /* { dg-final { scan-assembler-times "vpmsumw " 2 } } */ ! /* { dg-final { scan-assembler-times "vsbox " 1 } } */ /* { dg-final { scan-assembler-times "vshasigmad " 2 } } */ /* { dg-final { scan-assembler-times "vshasigmaw " 2 } } */ --- 143,157 ---- /* Note space is used after the instruction so that vcipherlast does not match vcipher. */ ! /* { dg-final { scan-assembler-times "vcipher " 2 } } */ ! /* { dg-final { scan-assembler-times "vcipherlast " 2 } } */ ! /* { dg-final { scan-assembler-times "vncipher " 2 } } */ ! /* { dg-final { scan-assembler-times "vncipherlast " 2 } } */ /* { dg-final { scan-assembler-times "vpermxor " 4 } } */ /* { dg-final { scan-assembler-times "vpmsumb " 2 } } */ /* { dg-final { scan-assembler-times "vpmsumd " 2 } } */ /* { dg-final { scan-assembler-times "vpmsumh " 2 } } */ /* { dg-final { scan-assembler-times "vpmsumw " 2 } } */ ! /* { dg-final { scan-assembler-times "vsbox " 2 } } */ /* { dg-final { scan-assembler-times "vshasigmad " 2 } } */ /* { dg-final { scan-assembler-times "vshasigmaw " 2 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/darn-3.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/darn-3.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/darn-3.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/darn-3.c Sat Aug 31 19:01:52 2019 *************** *** 0 **** --- 1,17 ---- + /* { dg-do compile { target { powerpc*-*-* } } } */ + /* { dg-skip-if "" { powerpc*-*-aix* } } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ + /* { dg-options "-O2 -mcpu=power9" } */ + + static int darn32(void) { return __builtin_darn_32(); } + + int four(void) + { + int sum = 0; + int i; + for (i = 0; i < 4; i++) + sum += darn32(); + return sum; + } + + /* { dg-final { scan-assembler-times {(?n)\mdarn .*,0\M} 4 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/darwin-bool-1.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/darwin-bool-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/darwin-bool-1.c Tue Nov 24 19:09:26 2009 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/darwin-bool-1.c Thu Sep 5 19:37:30 2019 *************** *** 1,6 **** --- 1,8 ---- /* Check that sizeof(bool) is 4 if we don't use special options. */ /* Matt Austern */ /* { dg-do run { target { powerpc*-*-darwin* && ilp32 } } } */ + /* We do need to suppress the ISO C doesn't support _Bool message tho. */ + /* { dg-options "-Wno-pedantic" } */ int dummy1[sizeof(_Bool) - 3]; int dummy2[5 - sizeof(_Bool)]; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp Fri Nov 1 20:01:52 2019 *************** *** 16,23 **** # along with GCC; see the file COPYING3. If not see # . ! # Exit immediately if this isn't a PowerPC target. ! if { ![istarget powerpc*-*-*] && ![istarget rs6000-*-*] } then { return } --- 16,26 ---- # along with GCC; see the file COPYING3. If not see # . ! # Exit immediately if this isn't a PowerPC target, also exit if we ! # are on Darwin which doesn't support decimal float. ! if { (![istarget powerpc*-*-*] && ![istarget rs6000-*-*]) ! || [istarget "powerpc*-*-darwin*"] ! } then { return } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-2.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-2.c Tue Nov 4 12:09:50 2014 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/p8vector-builtin-2.c Tue Apr 2 01:08:31 2019 *************** *** 9,14 **** --- 9,22 ---- typedef vector long long v_sign; typedef vector unsigned long long v_uns; typedef vector bool long long v_bool; + typedef vector bool char v_bchar; + typedef vector bool int v_bint; + typedef vector bool short v_bshort; + typedef vector signed int v_sint; + typedef vector unsigned int v_uint; + typedef vector signed char v_schar; + typedef vector unsigned char v_uchar; + typedef vector float v_float; v_sign sign_add_1 (v_sign a, v_sign b) { *************** v_sign sign_sra_3 (v_sign a, v_uns b) *** 191,205 **** return vec_vsrad (a, b); } /* { dg-final { scan-assembler-times "vaddudm" 5 } } */ /* { dg-final { scan-assembler-times "vsubudm" 6 } } */ /* { dg-final { scan-assembler-times "vmaxsd" 4 } } */ /* { dg-final { scan-assembler-times "vminsd" 3 } } */ /* { dg-final { scan-assembler-times "vmaxud" 2 } } */ /* { dg-final { scan-assembler-times "vminud" 2 } } */ ! /* { dg-final { scan-assembler-times "vcmpequd" 2 } } */ /* { dg-final { scan-assembler-times "vcmpgtsd" 1 } } */ /* { dg-final { scan-assembler-times "vcmpgtud" 1 } } */ /* { dg-final { scan-assembler-times "vrld" 3 } } */ /* { dg-final { scan-assembler-times "vsld" 5 } } */ /* { dg-final { scan-assembler-times "vsrad" 3 } } */ --- 199,286 ---- return vec_vsrad (a, b); } + v_bchar vbchar_eq (v_bchar a, v_bchar b) + { + return vec_cmpeq (a, b); + } + + v_bchar vbschar_eq (v_schar a, v_schar b) + { + return vec_cmpeq (a, b); + } + + v_bchar vuchar_eq (v_uchar a, v_uchar b) + { + return vec_cmpeq (a, b); + } + + v_bint vbint_eq (v_bint a, v_bint b) + { + return vec_cmpeq (a, b); + } + + v_bint vsint_eq (v_sint a, v_sint b) + { + return vec_cmpeq (a, b); + } + + v_bint vuint_eq (v_uint a, v_uint b) + { + return vec_cmpeq (a, b); + } + + v_bool vbool_eq (v_bool a, v_bool b) + { + return vec_cmpeq (a, b); + } + + v_bint vbint_ne (v_bint a, v_bint b) + { + return vec_cmpne (a, b); + } + + v_bint vsint_ne (v_sint a, v_sint b) + { + return vec_cmpne (a, b); + } + + v_bint vuint_ne (v_uint a, v_uint b) + { + return vec_cmpne (a, b); + } + + v_bool vbool_ne (v_bool a, v_bool b) + { + return vec_cmpne (a, b); + } + + v_bool vsign_ne (v_sign a, v_sign b) + { + return vec_cmpne (a, b); + } + + v_bool vuns_ne (v_uns a, v_uns b) + { + return vec_cmpne (a, b); + } + + v_bshort vbshort_ne (v_bshort a, v_bshort b) + { + return vec_cmpne (a, b); + } + + /* { dg-final { scan-assembler-times "vaddudm" 5 } } */ /* { dg-final { scan-assembler-times "vsubudm" 6 } } */ /* { dg-final { scan-assembler-times "vmaxsd" 4 } } */ /* { dg-final { scan-assembler-times "vminsd" 3 } } */ /* { dg-final { scan-assembler-times "vmaxud" 2 } } */ /* { dg-final { scan-assembler-times "vminud" 2 } } */ ! /* { dg-final { scan-assembler-times "vcmpequd" 6 } } */ /* { dg-final { scan-assembler-times "vcmpgtsd" 1 } } */ /* { dg-final { scan-assembler-times "vcmpgtud" 1 } } */ /* { dg-final { scan-assembler-times "vrld" 3 } } */ /* { dg-final { scan-assembler-times "vsld" 5 } } */ /* { dg-final { scan-assembler-times "vsrad" 3 } } */ + /* { dg-final { scan-assembler-times "vcmpequb" 3 } } */ + /* { dg-final { scan-assembler-times "vcmpequw" 6 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp Mon Apr 10 19:01:37 2017 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp Thu Mar 21 19:31:30 2019 *************** proc dg-compile-aux-modules { args } { *** 36,42 **** global gfortran_test_path global gfortran_aux_module_flags if { [llength $args] != 2 } { ! error "dg-set-target-env-var: needs one argument" return } --- 36,42 ---- global gfortran_test_path global gfortran_aux_module_flags if { [llength $args] != 2 } { ! error "dg-compile-aux-modules: needs one argument" return } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr64205.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr64205.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr64205.c Wed Jan 18 17:39:56 2017 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr64205.c Thu Sep 5 19:40:20 2019 *************** *** 1,5 **** /* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */ ! /* { dg-skip-if "" { powerpc*-*-aix* } { "*" } { "" } } */ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=G5" } } */ /* { dg-options "-O2 -mcpu=G5 -maltivec" } */ --- 1,6 ---- /* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */ ! /* { dg-require-effective-target dfp } */ ! /* { dg-skip-if "" { powerpc*-*-aix* } } */ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=G5" } } */ /* { dg-options "-O2 -mcpu=G5 -maltivec" } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr71785.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr71785.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr71785.c Mon Nov 21 15:15:21 2016 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr71785.c Thu Sep 5 19:42:59 2019 *************** *** 1,6 **** /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-options "-O2" } */ ! /* { dg-final { scan-assembler-not {\mb\M} } } */ /* Check that all computed gotos in this testcase end up unfactored completely. If some is not there will be a unconditional jump left; if all works fine, --- 1,11 ---- /* { dg-do compile { target { powerpc*-*-* } } } */ /* { dg-options "-O2" } */ ! /* We have to lose the default pic codegen on Darwin. */ ! /* { dg-additional-options "-mdynamic-no-pic" { target powerpc*-*-darwin* } } */ ! /* ... and account for the out-of-line GPR restore. */ ! /* { dg-final { scan-assembler-times {\mb[ \t]*restGPR} 1 { target powerpc*-*-darwin* } } } */ ! /* { dg-final { scan-assembler-not {\mb[ \t]L} { target powerpc*-*-darwin* } } } */ ! /* { dg-final { scan-assembler-not {\mb\M} { target { ! powerpc*-*-darwin* } } } } */ /* Check that all computed gotos in this testcase end up unfactored completely. If some is not there will be a unconditional jump left; if all works fine, diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr79909.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr79909.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr79909.c Fri Mar 10 07:57:45 2017 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr79909.c Thu Sep 5 19:40:20 2019 *************** *** 1,6 **** --- 1,7 ---- /* PR rtl-optimization/79909 */ /* { dg-do compile } */ /* { dg-options "-O2 -mxl-compat" } */ + /* { dg-require-effective-target dfp } */ typedef float T __attribute__ ((mode (TD))); T b, c, d, e, f, g; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr80125.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr80125.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr80125.c Tue Mar 21 14:49:51 2017 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr80125.c Thu Sep 5 19:47:27 2019 *************** foo () *** 16,22 **** vector int k = vec_mergel (i, j); vector int l = vec_sl (k, c); vector int m = vec_sl (l, d); ! vector char o; vector int p = vec_perm (m, n, o); e = vec_sra (p, c); vec_st (e, 0, a); --- 16,22 ---- vector int k = vec_mergel (i, j); vector int l = vec_sl (k, c); vector int m = vec_sl (l, d); ! vector unsigned char o; vector int p = vec_perm (m, n, o); e = vec_sra (p, c); vec_st (e, 0, a); diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr87496-1.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr87496-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr87496-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr87496-1.c Wed Dec 12 17:20:41 2018 *************** *** 0 **** --- 1,11 ---- + /* PR target/87496 */ + /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ + /* { dg-skip-if "" { powerpc*-*-darwin* } } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */ + /* { dg-require-effective-target longdouble128 } */ + /* { dg-options "-O2 -mcpu=power7 -mabi=ieeelongdouble -mno-popcntd -Wno-psabi" } */ + + int i; + + /* { dg-error "'-mabi=ieeelongdouble' requires full ISA 2.06 support" "PR87496" { target *-*-* } 0 } */ + /* { dg-warning "using IEEE extended precision long double" "" { target *-*-* } 0 } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr87496-2.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr87496-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr87496-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr87496-2.c Wed Dec 12 17:20:41 2018 *************** *** 0 **** --- 1,10 ---- + /* PR target/87496 */ + /* { dg-do compile { target { powerpc*-*-* } } } */ + /* { dg-skip-if "" { powerpc*-*-darwin* } } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */ + /* { dg-options "-O2 -mcpu=power7 -mabi=ieeelongdouble -mlong-double-64 -Wno-psabi" } */ + + int i; + + /* { dg-error "'-mabi=ieeelongdouble' requires '-mlong-double-128'" "PR87496" { target *-*-* } 0 } */ + /* { dg-warning "using IEEE extended precision long double" "" { target *-*-* } 0 } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr87496-3.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr87496-3.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr87496-3.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr87496-3.c Wed Dec 12 17:20:41 2018 *************** *** 0 **** --- 1,9 ---- + /* PR target/87496 */ + /* { dg-do compile { target { powerpc*-*-* } } } */ + /* { dg-skip-if "" { powerpc*-*-darwin* } } */ + /* { dg-options "-O2 -mabi=ibmlongdouble -mlong-double-64 -Wno-psabi" } */ + + int i; + + /* { dg-error "'-mabi=ibmlongdouble' requires '-mlong-double-128'" "PR87496" { target *-*-* } 0 } */ + /* { dg-warning "using IBM extended precision long double" "" { target *-*-* } 0 } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr87532-mc.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr87532-mc.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr87532-mc.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr87532-mc.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,258 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx -O2" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + #include + #include + + #include + + static vector unsigned __int128 + deoptimize_uint128 (vector unsigned __int128 a) + { + __asm__ (" # %x0" : "+v" (a)); + return a; + } + + static vector unsigned long long int + deoptimize_ulong (vector unsigned long long int a) + { + __asm__ (" # %x0" : "+v" (a)); + return a; + } + + static vector unsigned int + deoptimize_uint (vector unsigned int a) + { + __asm__ (" # %x0" : "+v" (a)); + return a; + } + + static vector unsigned char + deoptimize_uchar (vector unsigned char a) + { + __asm__ (" # %x0" : "+v" (a)); + return a; + } + + static vector unsigned short + deoptimize_ushort (vector unsigned short a) + { + __asm__ (" # %x0" : "+v" (a)); + return a; + } + + __attribute ((noinline)) unsigned __int128 + get_auto_n_uint128 (vector unsigned __int128 a, int n) + { + return __builtin_vec_extract (a, n); + } + + __attribute ((noinline)) unsigned long long int + get_auto_n_ulong (vector unsigned long long int a, int n) + { + return __builtin_vec_extract (a, n); + } + + __attribute ((noinline)) + unsigned int get_auto_n_uint (vector unsigned int a, int n) + { + return __builtin_vec_extract (a, n); + } + + __attribute ((noinline)) + unsigned char get_auto_n_uchar (vector unsigned char a, int n) + { + return __builtin_vec_extract (a, n); + } + + __attribute ((noinline)) + unsigned short get_auto_n_ushort (vector unsigned short a, int n) + { + return __builtin_vec_extract (a, n); + } + + + int check_uint128_element (int i, unsigned __int128 entry) + { + printf ("checking uint128 entry at index %d\n", i); + + return (entry == ((((unsigned __int128) 0xffeeddccbbaa9988ULL) << 64) + | 0x0706050403020100ULL)); + } + + int check_ulong_element (int i, unsigned long long int entry) + { + printf ("checking ulong entry 0x%llx at index %d\n", entry, i); + + switch (i % 2) + { + case 0: return (entry == 0x9999901010ULL); + case 1: return (entry == 0x7777733333ULL); + default: + return 0; + } + } + + int check_uint_element (int i, unsigned int entry) + { + printf ("checking uint entry 0x%x at index %d\n", entry, i); + + switch (i % 4) + { + case 0: return (entry == 0x99999); + case 1: return (entry == 0x01010); + case 2: return (entry == 0x77777); + case 3: return (entry == 0x33333); + default: + return 0; + } + } + + int check_uchar_element (int i, unsigned char entry) + { + printf ("checking uchar entry 0x%x at index %d\n", entry, i); + switch (i % 16) + { + case 0: return (entry == 0x90); + case 1: return (entry == 0x80); + case 2: return (entry == 0x70); + case 3: return (entry == 0x60); + case 4: return (entry == 0x50); + case 5: return (entry == 0x40); + case 6: return (entry == 0x30); + case 7: return (entry == 0x20); + case 8: return (entry == 0x10); + case 9: return (entry == 0xf0); + case 10: return (entry == 0xe0); + case 11: return (entry == 0xd0); + case 12: return (entry == 0xc0); + case 13: return (entry == 0xb0); + case 14: return (entry == 0xa0); + case 15: return (entry == 0xff); + default: + return 0; + } + } + + int check_ushort_element (int i, unsigned short entry) + { + printf ("checking ushort entry 0x%x at index %d\n", entry, i); + switch (i % 8) + { + case 0: return (entry == 0x9988); + case 1: return (entry == 0x8877); + case 2: return (entry == 0x7766); + case 3: return (entry == 0x6655); + case 4: return (entry == 0x5544); + case 5: return (entry == 0x4433); + case 6: return (entry == 0x3322); + case 7: return (entry == 0x2211); + default: + return 0; + } + } + + void do_auto_uint128 ( vector unsigned __int128 a ) + { + int i; + unsigned __int128 c; + for (i = 0; i < 32; i += 3) + { + c = get_auto_n_uint128 (a,i); + if (!check_uint128_element (i, c)) abort (); + } + } + + void do_auto_ulong ( vector unsigned long long int a ) + { + int i; + unsigned long long int c; + for (i = 0; i < 32; i += 3) + { + c = get_auto_n_ulong (a,i); + if (!check_ulong_element (i, c)) abort (); + } + } + + void do_auto_uint ( vector unsigned int a ) + { + int i; + unsigned int c; + for (i = 0; i < 32; i += 3) + { + c = get_auto_n_uint (a,i); + if (!check_uint_element (i, c)) abort (); + } + } + + void do_auto_ushort ( vector unsigned short a ) + { + int i; + unsigned short c; + for (i = 0; i < 32; i += 3) + { + c = get_auto_n_ushort (a,i); + if (!check_ushort_element (i, c)) abort (); + } + } + + void do_auto_uchar ( vector unsigned char a ) + { + int i; + unsigned char c; + for (i = 0; i < 32; i += 3) + { + c = get_auto_n_uchar (a,i); + if (!check_uchar_element (i, c)) abort (); + } + } + + int + main (void) + { + size_t i; + + vector unsigned __int128 u = { + ((((unsigned __int128) 0xffeeddccbbaa9988ULL) << 64) + | 0x0706050403020100ULL) }; + vector unsigned __int128 du; + + vector unsigned long long int v = { 0x9999901010ULL, 0x7777733333ULL }; + vector unsigned long long int dv; + + vector unsigned int x = { 0x99999, 0x01010, 0x77777, 0x33333 }; + vector unsigned int dx; + + vector unsigned char y = { 0x90, 0x80, 0x70, 0x60, 0x50, 0x40, 0x30, 0x20, + 0x10, 0xf0, 0xe0, 0xd0, 0xc0, 0xb0, 0xa0, 0xff }; + vector unsigned char dy; + + vector unsigned short z = { 0x9988, 0x8877, 0x7766, 0x6655, + 0x5544, 0x4433, 0x3322, 0x2211 }; + vector unsigned short dz; + + do_auto_uint128 (u); + do_auto_ulong (v); + do_auto_uint (x); + do_auto_uchar (y); + do_auto_ushort (z); + + du = deoptimize_uint128 (u); + dv = deoptimize_ulong (v); + dx = deoptimize_uint (x); + dy = deoptimize_uchar (y); + dz = deoptimize_ushort (z); + + do_auto_uint128 (du); + do_auto_ulong (dv); + do_auto_uint (dx); + do_auto_uchar (dy); + do_auto_ushort (dz); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr87532.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr87532.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr87532.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr87532.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,72 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/dfp + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + #include + #include + #include + + static void + check (unsigned char, unsigned char) __attribute__((__noinline__)); + + static __attribute__((altivec(vector__))) unsigned char + deoptimize (__attribute__((altivec(vector__))) unsigned char) + __attribute__((__noinline__)); + + static __attribute__((altivec(vector__))) unsigned char + deoptimize (__attribute__((altivec(vector__))) unsigned char a) + { + __asm__ (" # %x0" : "+v" (a)); + return a; + } + + // Toggle this attribute inline/noinline to see pass/fail. + // fails with the noinline attribute applied. + __attribute__ ((__noinline__)) + unsigned char + get_auto_n (__attribute__((altivec(vector__))) unsigned char a, size_t n) + { + return (unsigned char) __builtin_vec_extract (a, n); + } + + void + do_auto (__attribute__((altivec(vector__))) unsigned char a) + { + size_t i; + for (i = 1; i < 3 ; i++) + { + do + { + printf ("get_auto_n (a, %d) produces 0x0%x\n", + i, (int) get_auto_n (a, i)); + + if ((int) get_auto_n (a,i) > 250) abort(); + } while (0); + } + } + + int + main (void) + { + size_t i; + __attribute__((altivec(vector__))) unsigned char x = + { 3, 2, 3, 8, 5, 6, 7, 8, 240, 241, 242, 243, 244, 245, 246, 247 }; + __attribute__((altivec(vector__))) unsigned char a; + + printf (" first elements of x are: %d %d %d %d %d\n", + x[0], x[1], x[2], x[3], x[4]); + + a = deoptimize (x); + + printf (" after deoptimization, first elements of a are: %d %d %d %d %d\n", + a[0], a[1], a[2], a[3], a[4]); + + do_auto (a); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr89424-0.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr89424-0.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr89424-0.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr89424-0.c Mon May 13 21:27:29 2019 *************** *** 0 **** --- 1,76 ---- + /* { dg-do run { target { powerpc*-*-* && lp64 } } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + /* Define PR89626 after that pr is addressed. */ + #ifdef PR89626 + #define SIGNED + #else + #define SIGNED signed + #endif + + #define CONST0 (((__int128) 31415926539) << 60) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + __int128 ei (vector SIGNED __int128 v, int i) + { + return __builtin_vec_ext_v1ti (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __int128 mei (vector SIGNED __int128 *vp, int i) + { + return __builtin_vec_ext_v1ti (*vp, i); + } + + int main (int argc, char *argv[]) { + vector SIGNED __int128 dv = { CONST0 }; + __int128 d; + + d = ei (dv, 0); + if (d != CONST0) + abort (); + + d = ei (dv, 1); + if (d != CONST0) + abort (); + + d = ei (dv, 2); + if (d != CONST0) + abort (); + + d = ei (dv, 3); + if (d != CONST0) + abort (); + + d = mei (&dv, 0); + if (d != CONST0) + abort (); + + d = mei (&dv, 1); + if (d != CONST0) + abort (); + + d = mei (&dv, 2); + if (d != CONST0) + abort (); + + d = mei (&dv, 3); + if (d != CONST0) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr89765-mc.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr89765-mc.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr89765-mc.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr89765-mc.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,400 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx -O2" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + #include + #include + + #include + + static vector unsigned __int128 + deoptimize_uint128 (vector unsigned __int128 a) + { + __asm__ (" # %x0" : "+v" (a)); + return a; + } + + static vector unsigned long long int + deoptimize_ulong (vector unsigned long long int a) + { + __asm__ (" # %x0" : "+v" (a)); + return a; + } + + static vector unsigned int + deoptimize_uint (vector unsigned int a) + { + __asm__ (" # %x0" : "+v" (a)); + return a; + } + + static vector unsigned char + deoptimize_uchar (vector unsigned char a) + { + __asm__ (" # %x0" : "+v" (a)); + return a; + } + + static vector unsigned short + deoptimize_ushort (vector unsigned short a) + { + __asm__ (" # %x0" : "+v" (a)); + return a; + } + + __attribute ((noinline)) + vector unsigned __int128 + set_auto_n_uint128 (vector unsigned __int128 a, int n, unsigned __int128 x) + { + return vec_insert (x, a, n); + } + + __attribute ((noinline)) + vector unsigned long long int + set_auto_n_ulong (vector unsigned long long int a, int n, + unsigned long long int x) + { + return vec_insert (x, a, n); + } + + __attribute ((noinline)) + vector unsigned int + set_auto_n_uint (vector unsigned int a, int n, unsigned int x) + { + return vec_insert (x, a, n); + } + + __attribute ((noinline)) + vector unsigned char + set_auto_n_uchar (vector unsigned char a, int n, unsigned char x) + { + return vec_insert (x, a, n); + } + + __attribute ((noinline)) + vector unsigned short + set_auto_n_ushort (vector unsigned short a, int n, unsigned short x) + { + return vec_insert (x, a, n); + } + + __attribute ((noinline)) + unsigned __int128 + get_auto_n_uint128 (vector unsigned __int128 a, int n) + { + return vec_extract (a, n); + } + + __attribute ((noinline)) + unsigned long long int + get_auto_n_ulong (vector unsigned long long int a, int n) + { + return vec_extract (a, n); + } + + __attribute ((noinline)) + unsigned int + get_auto_n_uint (vector unsigned int a, int n) + { + return vec_extract (a, n); + } + + __attribute ((noinline)) + unsigned char + get_auto_n_uchar (vector unsigned char a, int n) + { + return vec_extract (a, n); + } + + __attribute ((noinline)) + unsigned short + get_auto_n_ushort (vector unsigned short a, int n) + { + return vec_extract (a, n); + } + + int check_uint128_element (int i, unsigned __int128 entry) + { + printf ("checking uint128 entry at index %d\n", i); + + return (entry == ((((unsigned __int128) 0xffeeddccbbaa9988ULL) << 64) + | 0x0706050403020100ULL)); + } + + unsigned __int128 get_uint128_element (int i) + { + return ((((unsigned __int128) 0xffeeddccbbaa9988ULL) << 64) + | 0x0706050403020100ULL); + } + + int check_ulong_element (int i, unsigned long long int entry) + { + printf ("checking ulong entry 0x%llx at index %d\n", entry, i); + + switch (i % 2) + { + case 0: return (entry == 0x9999901010ULL); + case 1: return (entry == 0x7777733333ULL); + default: + return 0; + } + } + + unsigned long long int get_ulong_element (int i) + { + switch (i % 2) + { + case 0: return 0x9999901010ULL; + case 1: return 0x7777733333ULL; + } + } + + int check_uint_element (int i, unsigned int entry) + { + printf ("checking uint entry 0x%x at index %d\n", entry, i); + + switch (i % 4) + { + case 0: return (entry == 0x99999); + case 1: return (entry == 0x01010); + case 2: return (entry == 0x77777); + case 3: return (entry == 0x33333); + default: + return 0; + } + } + + unsigned int get_uint_element (int i) + { + switch (i % 4) + { + case 0: return 0x99999; + case 1: return 0x01010; + case 2: return 0x77777; + case 3: return 0x33333; + } + } + + int check_uchar_element (int i, unsigned char entry) + { + printf ("checking uchar entry 0x%x at index %d\n", entry, i); + switch (i % 16) + { + case 0: return (entry == 0x90); + case 1: return (entry == 0x80); + case 2: return (entry == 0x70); + case 3: return (entry == 0x60); + case 4: return (entry == 0x50); + case 5: return (entry == 0x40); + case 6: return (entry == 0x30); + case 7: return (entry == 0x20); + case 8: return (entry == 0x10); + case 9: return (entry == 0xf0); + case 10: return (entry == 0xe0); + case 11: return (entry == 0xd0); + case 12: return (entry == 0xc0); + case 13: return (entry == 0xb0); + case 14: return (entry == 0xa0); + case 15: return (entry == 0xff); + default: + return 0; + } + } + + unsigned char get_uchar_element (int i) + { + switch (i % 16) + { + case 0: return 0x90; + case 1: return 0x80; + case 2: return 0x70; + case 3: return 0x60; + case 4: return 0x50; + case 5: return 0x40; + case 6: return 0x30; + case 7: return 0x20; + case 8: return 0x10; + case 9: return 0xf0; + case 10: return 0xe0; + case 11: return 0xd0; + case 12: return 0xc0; + case 13: return 0xb0; + case 14: return 0xa0; + case 15: return 0xff; + } + } + + int check_ushort_element (int i, unsigned short entry) + { + printf ("checking ushort entry 0x%x at index %d\n", entry, i); + switch (i % 8) + { + case 0: return (entry == 0x9988); + case 1: return (entry == 0x8877); + case 2: return (entry == 0x7766); + case 3: return (entry == 0x6655); + case 4: return (entry == 0x5544); + case 5: return (entry == 0x4433); + case 6: return (entry == 0x3322); + case 7: return (entry == 0x2211); + default: + return 0; + } + } + + unsigned short get_ushort_element (int i) + { + switch (i % 8) + { + case 0: return 0x9988; + case 1: return 0x8877; + case 2: return 0x7766; + case 3: return 0x6655; + case 4: return 0x5544; + case 5: return 0x4433; + case 6: return 0x3322; + case 7: return 0x2211; + } + } + + vector unsigned __int128 + init_auto_uint128 (vector unsigned __int128 a) + { + int i; + for (i = 0; i < 32; i += 3) + a = set_auto_n_uint128 (a, i, get_uint128_element (i)); + return a; + } + + void do_auto_uint128 (vector unsigned __int128 a) + { + int i; + unsigned __int128 c; + for (i = 0; i < 32; i += 3) + { + c = get_auto_n_uint128 (a, i); + if (!check_uint128_element (i, c)) abort (); + } + } + + vector unsigned long long int + init_auto_ulong (vector unsigned long long int a) + { + int i; + for (i = 0; i < 32; i += 3) + a = set_auto_n_ulong (a, i, get_ulong_element (i)); + return a; + } + + void do_auto_ulong (vector unsigned long long int a) + { + int i; + unsigned long long int c; + for (i = 0; i < 32; i += 3) + { + c = get_auto_n_ulong (a, i); + if (!check_ulong_element (i, c)) abort (); + } + } + + vector unsigned int init_auto_uint (vector unsigned int a) + { + int i; + for (i = 0; i < 32; i += 3) + a = set_auto_n_uint (a, i, get_uint_element (i)); + return a; + } + + void do_auto_uint (vector unsigned int a) + { + int i; + unsigned int c; + for (i = 0; i < 32; i += 3) + { + c = get_auto_n_uint (a, i); + if (!check_uint_element (i, c)) abort (); + } + } + + vector unsigned short init_auto_ushort ( vector unsigned short a ) + { + int i; + for (i = 0; i < 32; i += 3) + a = set_auto_n_ushort (a, i, get_ushort_element (i)); + return a; + } + + void do_auto_ushort (vector unsigned short a) + { + int i; + unsigned short c; + for (i = 0; i < 32; i += 3) + { + c = get_auto_n_ushort (a, i); + if (!check_ushort_element (i, c)) abort (); + } + } + + vector unsigned char init_auto_uchar (vector unsigned char a) + { + int i; + for (i = 0; i < 32; i += 3) + a = set_auto_n_uchar (a, i, get_uchar_element (i)); + return a; + } + + void do_auto_uchar (vector unsigned char a) + { + int i; + unsigned char c; + for (i = 0; i < 32; i += 3) + { + c = get_auto_n_uchar (a, i); + if (!check_uchar_element (i, c)) abort (); + } + } + + int + main (void) + { + size_t i; + + vector unsigned __int128 u = { 0 }; + vector unsigned __int128 du; + + vector unsigned long long int v = { 0, 0 }; + vector unsigned long long int dv; + + vector unsigned int x = { 0, 0, 0, 0 }; + vector unsigned int dx; + + vector unsigned char y = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + vector unsigned char dy; + + vector unsigned short z = { 0, 0, 0, 0, 0, 0, 0, 0 }; + vector unsigned short dz; + + du = init_auto_uint128 (u); + dv = init_auto_ulong (v); + dx = init_auto_uint (x); + dy = init_auto_uchar (y); + dz = init_auto_ushort (z); + + du = deoptimize_uint128 (du); + dv = deoptimize_ulong (dv); + dx = deoptimize_uint (dx); + dy = deoptimize_uchar (dy); + dz = deoptimize_ushort (dz); + + do_auto_uint128 (du); + do_auto_ulong (dv); + do_auto_uint (dx); + do_auto_uchar (dy); + do_auto_ushort (dz); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr91275.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr91275.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr91275.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/pr91275.c Thu Oct 17 15:35:28 2019 *************** *** 0 **** --- 1,26 ---- + /* Test that we generate vpmsumd correctly without a swap error. */ + + /* { dg-do run { target { p8vector_hw } } } */ + /* { dg-options "-O2 -std=gnu11" } */ + + #include + + int main() { + + const unsigned long long r0l = 0x8e7dfceac070e3a0; + vector unsigned long long r0 = (vector unsigned long long) {r0l, 0}, v; + const vector unsigned long long pd + = (vector unsigned long long) {0xc2LLU << 56, 0}; + + v = __builtin_crypto_vpmsumd ((vector unsigned long long) {r0[0], 0}, pd); + + #if __LITTLE_ENDIAN__ + if (v[0] != 0x4000000000000000 || v[1] != 0x65bd7ab605a4a8ff) + __builtin_abort (); + #else + if (v[1] != 0x4000000000000000 || v[0] != 0x65bd7ab605a4a8ff) + __builtin_abort (); + #endif + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c Wed Feb 7 20:04:39 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c Thu Sep 5 19:53:12 2019 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do compile } */ + /* { dg-skip-if "not implemented for Darwin" { powerpc*-*-darwin* } } */ /* { dg-additional-options "-mno-speculate-indirect-jumps" } */ /* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c Wed Feb 7 20:04:39 2018 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c Thu Sep 5 19:53:12 2019 *************** *** 1,4 **** --- 1,5 ---- /* { dg-do compile } */ + /* { dg-skip-if "not implemented for Darwin" { powerpc*-*-darwin* } } */ /* { dg-additional-options "-mno-speculate-indirect-jumps" } */ /* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c Tue Oct 2 19:56:50 2007 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c Thu Sep 5 19:55:27 2019 *************** *** 1,5 **** --- 1,6 ---- /* Test Attribute Vector associated with vector type stabs. */ /* { dg-do compile { target powerpc*-*-darwin* } } */ + /* { dg-require-effective-target stabs } */ /* { dg-options "-gstabs+ -fno-eliminate-unused-debug-types -faltivec" } */ int main () diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-schar-1.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-schar-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-schar-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-schar-1.c Wed Feb 6 21:35:44 2019 *************** *** 0 **** --- 1,29 ---- + /* Test to verify that the vec_extract from a vector of + signed chars remains signed. */ + /* { dg-do run } */ + /* { dg-options "-ansi -mcpu=power8 " } */ + /* { dg-require-effective-target p8vector_hw } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + + #include + #include + #include + + int test1(signed char sc) { + int sce; + + vector signed char v = vec_splats(sc); + sce = vec_extract(v,0); + + if (sce != sc) + abort(); + return 0; + } + + int main() + { + test1 (0xf6); + test1 (0x76); + test1 (0x06); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-sint-1.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-sint-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-sint-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-sint-1.c Wed Feb 6 21:35:44 2019 *************** *** 0 **** --- 1,29 ---- + /* Test to verify that the vec_extract from a vector of + signed ints remains signed. */ + /* { dg-do run } */ + /* { dg-options "-ansi -mcpu=power8 " } */ + /* { dg-require-effective-target p8vector_hw } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + + #include + #include + #include + + int test1(signed int si) { + long long int sie; + + vector signed int v = vec_splats(si); + sie = vec_extract(v,0); + + if (sie != si) + abort(); + return 0; + } + + int main() + { + test1 (0xf6000000); + test1 (0x76000000); + test1 (0x06000000); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-sint128-1.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-sint128-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-sint128-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-sint128-1.c Wed Feb 6 21:35:44 2019 *************** *** 0 **** --- 1,27 ---- + /* Test to verify that the vec_extract from a vector of + signed __int128s remains signed. */ + /* { dg-do run } */ + /* { dg-options "-ansi -mcpu=power8 " } */ + /* { dg-require-effective-target p8vector_hw } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + + #include + #include + #include + + int test1(signed __int128 st) { + + vector signed __int128 v = vec_splats(st); + + if (vec_extract (v, 0) > st) + abort(); + return 0; + } + + int main() + { + test1 (((__int128) 0xf600000000000000LL) << 64); + test1 (((__int128) 0x7600000000000000LL) << 64); + test1 (((__int128) 0x0600000000000000LL) << 64); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-slong-1.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-slong-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-slong-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-slong-1.c Wed Feb 6 21:35:44 2019 *************** *** 0 **** --- 1,27 ---- + /* Test to verify that the vec_extract from a vector of + signed longs remains signed. */ + /* { dg-do run } */ + /* { dg-options "-ansi -mcpu=power8 " } */ + /* { dg-require-effective-target p8vector_hw } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + + #include + #include + #include + + int test1(signed long long int sl) { + + vector signed long long int v = vec_splats(sl); + + if (vec_extract (v, 0) > sl) + abort(); + return 0; + } + + int main() + { + test1 (0xf600000000000000LL); + test1 (0x7600000000000000LL); + test1 (0x0600000000000000LL); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-sshort-1.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-sshort-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-sshort-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-sshort-1.c Wed Feb 6 21:35:44 2019 *************** *** 0 **** --- 1,29 ---- + /* Test to verify that the vec_extract from a vector of + signed shorts remains signed. */ + /* { dg-do run } */ + /* { dg-options "-ansi -mcpu=power8 " } */ + /* { dg-require-effective-target p8vector_hw } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + + #include + #include + #include + + int test1(signed short ss) { + int sse; + + vector signed short v = vec_splats(ss); + sse = vec_extract(v,0); + + if (sse != ss) + abort(); + return 0; + } + + int main() + { + test1 (0xf600); + test1 (0x7600); + test1 (0x0600); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-uchar-1.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-uchar-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-uchar-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-uchar-1.c Wed Feb 6 21:35:44 2019 *************** *** 0 **** --- 1,29 ---- + /* Test to verify that the vec_extract from a vector of + unsigned chars remains unsigned. */ + /* { dg-do run } */ + /* { dg-options "-ansi -mcpu=power8 " } */ + /* { dg-require-effective-target p8vector_hw } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + + #include + #include + #include + + int test1(unsigned char uc) { + int uce; + + vector unsigned char v = vec_splats(uc); + uce = vec_extract(v,0); + + if (uce != uc) + abort(); + return 0; + } + + int main() + { + test1 (0xf6); + test1 (0x76); + test1 (0x06); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-uint-1.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-uint-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-uint-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-uint-1.c Wed Feb 6 21:35:44 2019 *************** *** 0 **** --- 1,29 ---- + /* Test to verify that the vec_extract from a vector of + unsigned ints remains unsigned. */ + /* { dg-do run } */ + /* { dg-options "-ansi -mcpu=power8 " } */ + /* { dg-require-effective-target p8vector_hw } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + + #include + #include + #include + + int test1(unsigned int ui) { + long long int uie; + + vector unsigned int v = vec_splats(ui); + uie = vec_extract(v,0); + + if (uie != ui) + abort(); + return 0; + } + + int main() + { + test1 (0xf6000000); + test1 (0x76000000); + test1 (0x06000000); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-uint128-1.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-uint128-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-uint128-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-uint128-1.c Wed Feb 6 21:35:44 2019 *************** *** 0 **** --- 1,27 ---- + /* Test to verify that the vec_extract from a vector of + unsigned __int128s remains unsigned. */ + /* { dg-do run } */ + /* { dg-options "-ansi -mcpu=power8 " } */ + /* { dg-require-effective-target p8vector_hw } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + + #include + #include + #include + + int test1(unsigned __int128 ul) { + + vector unsigned __int128 v = vec_splats(ul); + + if (vec_extract (v, 0) < ul) + abort(); + return 0; + } + + int main() + { + test1 (((__int128) 0xf600000000000000LL) << 64); + test1 (((__int128) 0x7600000000000000LL) << 64); + test1 (((__int128) 0x0600000000000000LL) << 64); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-ulong-1.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-ulong-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-ulong-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-ulong-1.c Wed Feb 6 21:35:44 2019 *************** *** 0 **** --- 1,27 ---- + /* Test to verify that the vec_extract from a vector of + unsigned longs remains unsigned. */ + /* { dg-do run } */ + /* { dg-options "-ansi -mcpu=power8 " } */ + /* { dg-require-effective-target p8vector_hw } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + + #include + #include + #include + + int test1(unsigned long long int ul) { + + vector unsigned long long int v = vec_splats(ul); + + if (vec_extract (v, 0) < ul) + abort(); + return 0; + } + + int main() + { + test1 (0xf600000000000000LL); + test1 (0x7600000000000000LL); + test1 (0x0600000000000000LL); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-ushort-1.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-ushort-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-ushort-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-ushort-1.c Wed Feb 6 21:35:44 2019 *************** *** 0 **** --- 1,29 ---- + /* Test to verify that the vec_extract from a vector of + signed shorts remains signed. */ + /* { dg-do run } */ + /* { dg-options "-ansi -mcpu=power8 " } */ + /* { dg-require-effective-target p8vector_hw } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + + #include + #include + #include + + int test1(unsigned short us) { + int use; + + vector unsigned short v = vec_splats(us); + use = vec_extract(v,0); + + if (use != us) + abort(); + return 0; + } + + int main() + { + test1 (0xf600); + test1 (0x7600); + test1 (0x0600); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,253 ---- + #include + #include + #include + + #ifndef RTYPE + #define RTYPE TYPE + #endif + + #ifdef DO_TRACE + #include + + #define TRACE(STRING, NUM) \ + do \ + { \ + fprintf (stderr, "%s: %2d\n", STRING, (int) NUM); \ + fflush (stderr); \ + } \ + while (0) + + #ifndef FAIL_FORMAT + #define FAIL_FORMAT "%ld" + #define FAIL_CAST(X) ((long)(X)) + #endif + + #define FAIL(EXP, GOT) \ + do \ + { \ + fprintf (stderr, "Expected: " FAIL_FORMAT ", got " FAIL_FORMAT "\n", \ + FAIL_CAST (EXP), FAIL_CAST (GOT)); \ + fflush (stderr); \ + abort (); \ + } \ + while (0) + + #else + #define TRACE(STRING, NUM) + #define FAIL(EXP, GOT) abort () + #endif + + static void + check (RTYPE, RTYPE) __attribute__((__noinline__)); + + static vector TYPE + deoptimize (vector TYPE) __attribute__((__noinline__)); + + static vector TYPE + *deoptimize_ptr (vector TYPE *) __attribute__((__noinline__)); + + static void + check (RTYPE expected, RTYPE got) + { + if (expected != got) + FAIL (expected, got); + } + + static vector TYPE + deoptimize (vector TYPE a) + { + __asm__ (" # %x0" : "+v" (a)); + return a; + } + + static vector TYPE * + deoptimize_ptr (vector TYPE *p) + { + __asm__ (" # %0" : "+r" (p)); + return p; + } + + + RTYPE + get_auto_0 (vector TYPE a) + { + TRACE ("get_auto_", 0); + return (RTYPE) vec_extract (a, 0); + } + + RTYPE + get_auto_1 (vector TYPE a) + { + TRACE ("get_auto_", 1); + return (RTYPE) vec_extract (a, 1); + } + + #if ELEMENTS >= 4 + RTYPE + get_auto_2 (vector TYPE a) + { + return (RTYPE) vec_extract (a, 2); + } + + RTYPE + get_auto_3 (vector TYPE a) + { + return (RTYPE) vec_extract (a, 3); + } + + #if ELEMENTS >= 8 + RTYPE + get_auto_4 (vector TYPE a) + { + return (RTYPE) vec_extract (a, 4); + } + + RTYPE + get_auto_5 (vector TYPE a) + { + return (RTYPE) vec_extract (a, 5); + } + + RTYPE + get_auto_6 (vector TYPE a) + { + return (RTYPE) vec_extract (a, 6); + } + + RTYPE + get_auto_7 (vector TYPE a) + { + return (RTYPE) vec_extract (a, 7); + } + + #if ELEMENTS >= 16 + RTYPE + get_auto_8 (vector TYPE a) + { + return (RTYPE) vec_extract (a, 8); + } + + RTYPE + get_auto_9 (vector TYPE a) + { + return (RTYPE) vec_extract (a, 9); + } + + RTYPE + get_auto_10 (vector TYPE a) + { + return (RTYPE) vec_extract (a, 10); + } + + RTYPE + get_auto_11 (vector TYPE a) + { + return (RTYPE) vec_extract (a, 11); + } + + RTYPE + get_auto_12 (vector TYPE a) + { + return (RTYPE) vec_extract (a, 12); + } + + RTYPE + get_auto_13 (vector TYPE a) + { + return (RTYPE) vec_extract (a, 13); + } + + RTYPE + get_auto_14 (vector TYPE a) + { + return (RTYPE) vec_extract (a, 14); + } + + RTYPE + get_auto_15 (vector TYPE a) + { + return (RTYPE) vec_extract (a, 15); + } + + #endif + #endif + #endif + + + /* Tests for the normal case of vec_extract where the vector is in a register + and returning the result in a register as a return value. */ + #ifdef DISABLE_INLINE_OF_GET_AUTO_N + __attribute__ ((__noinline__)) + #else + /* gcc issues warning: always_inline function might not be inlinable + + __attribute__ ((__always_inline__)) + */ + #endif + RTYPE + get_auto_n (vector TYPE a, ssize_t n) + { + return (RTYPE) vec_extract (a, n); + } + + typedef RTYPE (*auto_func_type) (vector TYPE); + + static auto_func_type get_auto_const[] = { + get_auto_0, + get_auto_1, + #if ELEMENTS >= 4 + get_auto_2, + get_auto_3, + #if ELEMENTS >= 8 + get_auto_4, + get_auto_5, + get_auto_6, + get_auto_7, + #if ELEMENTS >= 16 + get_auto_8, + get_auto_9, + get_auto_10, + get_auto_11, + get_auto_12, + get_auto_13, + get_auto_14, + get_auto_15, + #endif + #endif + #endif + }; + + extern void do_auto (vector TYPE a) __attribute__((__noinline__)); + + void + do_auto (vector TYPE a) + { + size_t i; + + for (i = 1; i < 40; i += 3) + { + TRACE ("do_auto, i: ", i); + TRACE (" get_auto_const[i] returns: ", + (*get_auto_const [i % ELEMENTS]) (a)); + TRACE (" get_auto_n returns", get_auto_n (a, i)); + check (get_auto_n (a, i), (*get_auto_const [i % ELEMENTS]) (a)); + } + } + + + + /* Main program to test all of the possibilities. */ + int + main (void) + { + size_t i; + vector TYPE x = INITIAL; + vector TYPE *p, *p2, a, y; + vector TYPE z[2]; + + a = deoptimize (x); + + do_auto (a); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2a.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2a.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2a.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2a.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,14 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-O2 -mvsx" } */ + + #define TYPE unsigned char + /* ELEMENTS is number of elements in a vector of TYPE. */ + #define ELEMENTS 16 + #define INITIAL \ + { 3, 2, 3, 4, 5, 6, 7, 8, 240, 241, 242, 243, 244, 245, 246, 247 } + + #define DO_TRACE + #define DISABLE_INLINE_OF_GET_AUTO_N + + #include "vec-extract-v16qiu-v2.h" diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2b.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2b.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2b.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2b.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,14 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-O2 -mvsx" } */ + + #define TYPE unsigned char + /* ELEMENTS is number of elements in a vector of TYPE. */ + #define ELEMENTS 16 + #define INITIAL \ + { 3, 2, 3, 4, 5, 6, 7, 8, 240, 241, 242, 243, 244, 245, 246, 247 } + + #define DO_TRACE + #undef DISABLE_INLINE_OF_GET_AUTO_N + + #include "vec-extract-v16qiu-v2.h" diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-13.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-13.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-13.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-13.c Tue Apr 2 01:08:31 2019 *************** *** 0 **** --- 1,42 ---- + /* { dg-do compile { target powerpc*-*-* } } */ + /* { dg-require-effective-target powerpc_vsx_ok } */ + /* { dg-options "-mvsx" } */ + + /* Variations of tests that require VSX support. This is a variation of + the altivec-13.c testcase. */ + + #include + + void foo (void) + { + + vector signed char vsc1, vsc2, vscz; + vector unsigned char vuc1, vuc2, vucz; + vector bool long long vubll1, vubll2, vubllz; + vector signed int long long vsill1, vsill2, vsillz; + vector unsigned int long long vuill1, vuill2, vuillz; + vector double vd1, vd2, vdz; + + vubllz = vec_sld( vubll1, vubll2, 1 ); + vsillz = vec_sld( vsill1, vsill2, 1 ); + vuillz = vec_sld( vuill1, vuill2, 1 ); + + vsillz = vec_srl(vsill1, vuc2); + vuillz = vec_srl(vuill1, vuc2); + + vsillz = vec_sro(vsill1, vsc2); + vsillz = vec_sro(vsill1, vuc2); + vuillz = vec_sro(vuill1, vsc2); + vuillz = vec_sro(vuill1, vuc2); + + vdz = vec_sld( vd1, vd2, 1 ); + } + + /* Expected results: + vec_sld vsldoi + vec_srl vsr + vec_sro vsro */ + + /* { dg-final { scan-assembler-times "vsldoi" 4 } } */ + /* { dg-final { scan-assembler-times "vsr " 2 } } */ + /* { dg-final { scan-assembler-times "vsro" 4 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-7.h gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-7.h *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-7.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-7.h Tue Apr 2 01:08:31 2019 *************** *** 0 **** --- 1,18 ---- + + /* This test code is included into vsx-7-be.c. + * this is meant to supplement code in altivec-7.h. */ + + #include + + + vector float *vecfloat; + vector double *vecdouble; + + int main2 () + { + + *vecdouble++ = vec_unpackl(vecfloat[0]); + *vecdouble++ = vec_unpackh(vecfloat[0]); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10a.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10a.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10a.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10a.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,155 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/dfp + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + short s3 (vector short v) + { + return __builtin_vec_ext_v8hi (v, 3); + } + + short s7 (vector short v) + { + return __builtin_vec_ext_v8hi (v, 7); + } + + short s21 (vector short v) + { + return __builtin_vec_ext_v8hi (v, 21); + } + + short s30 (vector short v) + { + return __builtin_vec_ext_v8hi (v, 30); + } + + /* Test for vector residing in memory. */ + short ms3 (vector short *vp) + { + return __builtin_vec_ext_v8hi (*vp, 3); + } + + short ms7 (vector short *vp) + { + return __builtin_vec_ext_v8hi (*vp, 7); + } + + short ms21 (vector short *vp) + { + return __builtin_vec_ext_v8hi (*vp, 21); + } + + short ms30 (vector short *vp) + { + return __builtin_vec_ext_v8hi (*vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + short ci (vector short v, int i) + { + return __builtin_vec_ext_v8hi (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + short mci (vector short *vp, int i) + { + return __builtin_vec_ext_v8hi (*vp, i); + } + + + int main (int argc, short *argv[]) { + vector short sv = { + CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; + short s; + + s = s3 (sv); + if (s != CONST3) + abort (); + + s = s7 (sv); + if (s != CONST7) + abort (); + + s = s21 (sv); + if (s != CONST5) + abort (); + + s = s30 (sv); + if (s != CONST6) + abort (); + + s = ms3 (&sv); + if (s != CONST3) + abort (); + + s = ms7 (&sv); + if (s != CONST7) + abort (); + + s = ms21 (&sv); + if (s != CONST5) + abort (); + + s = ms30 (&sv); + if (s != CONST6) + abort (); + + s = ci (sv, 5); + if (s != CONST5) + abort (); + + s = ci (sv, 2); + if (s != CONST2) + abort (); + + s = ci (sv, 15); + if (s != CONST7) + abort (); + + s = ci (sv, 28); + if (s != CONST4) + abort (); + + s = mci (&sv, 5); + if (s != CONST5) + abort (); + + s = mci (&sv, 12); + if (s != CONST4) + abort (); + + s = mci (&sv, 25); + if (s != CONST1) + abort (); + + s = mci (&sv, 16); + if (s != CONST0) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10b.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10b.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10b.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10b.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,155 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec -O3" } */ + + /* This test should run the same on any target that supports altivec/dfp + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + short s3 (vector short v) + { + return __builtin_vec_ext_v8hi (v, 3); + } + + short s7 (vector short v) + { + return __builtin_vec_ext_v8hi (v, 7); + } + + short s21 (vector short v) + { + return __builtin_vec_ext_v8hi (v, 21); + } + + short s30 (vector short v) + { + return __builtin_vec_ext_v8hi (v, 30); + } + + /* Test for vector residing in memory. */ + short ms3 (vector short *vp) + { + return __builtin_vec_ext_v8hi (*vp, 3); + } + + short ms7 (vector short *vp) + { + return __builtin_vec_ext_v8hi (*vp, 7); + } + + short ms21 (vector short *vp) + { + return __builtin_vec_ext_v8hi (*vp, 21); + } + + short ms30 (vector short *vp) + { + return __builtin_vec_ext_v8hi (*vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + short ci (vector short v, int i) + { + return __builtin_vec_ext_v8hi (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + short mci (vector short *vp, int i) + { + return __builtin_vec_ext_v8hi (*vp, i); + } + + + int main (int argc, short *argv[]) { + vector short sv = { + CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; + short s; + + s = s3 (sv); + if (s != CONST3) + abort (); + + s = s7 (sv); + if (s != CONST7) + abort (); + + s = s21 (sv); + if (s != CONST5) + abort (); + + s = s30 (sv); + if (s != CONST6) + abort (); + + s = ms3 (&sv); + if (s != CONST3) + abort (); + + s = ms7 (&sv); + if (s != CONST7) + abort (); + + s = ms21 (&sv); + if (s != CONST5) + abort (); + + s = ms30 (&sv); + if (s != CONST6) + abort (); + + s = ci (sv, 5); + if (s != CONST5) + abort (); + + s = ci (sv, 2); + if (s != CONST2) + abort (); + + s = ci (sv, 15); + if (s != CONST7) + abort (); + + s = ci (sv, 28); + if (s != CONST4) + abort (); + + s = mci (&sv, 5); + if (s != CONST5) + abort (); + + s = mci (&sv, 12); + if (s != CONST4) + abort (); + + s = mci (&sv, 25); + if (s != CONST1) + abort (); + + s = mci (&sv, 16); + if (s != CONST0) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,155 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/vmx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector short s3 (vector short v, short x) + { + return vec_insert (x, v, 3); + } + + vector short s7 (vector short v, short x) + { + return vec_insert (x, v, 7); + } + + vector short s21 (vector short v, short x) + { + return vec_insert (x, v, 21); + } + + vector short s30 (vector short v, short x) + { + return vec_insert (x, v, 30); + } + + /* Test for vector residing in memory. */ + vector short ms3 (vector short *vp, short x) + { + return vec_insert (x, *vp, 3); + } + + vector short ms7 (vector short *vp, short x) + { + return vec_insert (x, *vp, 7); + } + + vector short ms21 (vector short *vp, short x) + { + return vec_insert (x, *vp, 21); + } + + vector short ms30 (vector short *vp, short x) + { + return vec_insert (x, *vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector short ci (vector short v, int i, short x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector short mci (vector short *vp, int i, short x) + { + return vec_insert (x, *vp, i); + } + + + int main (int argc, short *argv[]) { + vector short sv = { + CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; + short s; + + sv = s3 (sv, CONST6); + if (sv [3] != CONST6) + abort (); + + sv = s7 (sv, CONST4); + if (sv [7] != CONST4) + abort (); + + sv = s21 (sv, CONST3); + if (sv [5] != CONST3) + abort (); + + sv = s30 (sv, CONST2); + if (sv [6] != CONST2) + abort (); + + sv = ms3 (&sv, CONST5); + if (sv [3] != CONST5) + abort (); + + sv = ms7 (&sv, CONST1); + if (sv [7] != CONST1) + abort (); + + sv = ms21 (&sv, CONST2); + if (sv [5] != CONST2) + abort (); + + sv = ms30 (&sv, CONST0); + if (sv [6] != CONST0) + abort (); + + sv = ci (sv, 5, CONST6); + if (sv [5] != CONST6) + abort (); + + sv = ci (sv, 2, CONST4); + if (sv [2] != CONST4) + abort (); + + sv = ci (sv, 15, CONST3); + if (sv [7] != CONST3) + abort (); + + sv = ci (sv, 28, CONST3); + if (sv [4] != CONST3) + abort (); + + sv = mci (&sv, 5, CONST3); + if (sv [5] != CONST3) + abort (); + + sv = mci (&sv, 12, CONST7); + if (sv [4] != CONST7) + abort (); + + sv = mci (&sv, 25, CONST6); + if (sv [1] != CONST6) + abort (); + + sv = mci (&sv, 16, CONST5); + if (sv [0] != CONST5) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,155 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec -O3" } */ + + /* This test should run the same on any target that supports altivec/vmx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector short s3 (vector short v, short x) + { + return vec_insert (x, v, 3); + } + + vector short s7 (vector short v, short x) + { + return vec_insert (x, v, 7); + } + + vector short s21 (vector short v, short x) + { + return vec_insert (x, v, 21); + } + + vector short s30 (vector short v, short x) + { + return vec_insert (x, v, 30); + } + + /* Test for vector residing in memory. */ + vector short ms3 (vector short *vp, short x) + { + return vec_insert (x, *vp, 3); + } + + vector short ms7 (vector short *vp, short x) + { + return vec_insert (x, *vp, 7); + } + + vector short ms21 (vector short *vp, short x) + { + return vec_insert (x, *vp, 21); + } + + vector short ms30 (vector short *vp, short x) + { + return vec_insert (x, *vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector short ci (vector short v, int i, short x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector short mci (vector short *vp, int i, short x) + { + return vec_insert (x, *vp, i); + } + + + int main (int argc, short *argv[]) { + vector short sv = { + CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; + short s; + + sv = s3 (sv, CONST6); + if (sv [3] != CONST6) + abort (); + + sv = s7 (sv, CONST4); + if (sv [7] != CONST4) + abort (); + + sv = s21 (sv, CONST3); + if (sv [5] != CONST3) + abort (); + + sv = s30 (sv, CONST2); + if (sv [6] != CONST2) + abort (); + + sv = ms3 (&sv, CONST5); + if (sv [3] != CONST5) + abort (); + + sv = ms7 (&sv, CONST1); + if (sv [7] != CONST1) + abort (); + + sv = ms21 (&sv, CONST2); + if (sv [5] != CONST2) + abort (); + + sv = ms30 (&sv, CONST0); + if (sv [6] != CONST0) + abort (); + + sv = ci (sv, 5, CONST6); + if (sv [5] != CONST6) + abort (); + + sv = ci (sv, 2, CONST4); + if (sv [2] != CONST4) + abort (); + + sv = ci (sv, 15, CONST3); + if (sv [7] != CONST3) + abort (); + + sv = ci (sv, 28, CONST3); + if (sv [4] != CONST3) + abort (); + + sv = mci (&sv, 5, CONST3); + if (sv [5] != CONST3) + abort (); + + sv = mci (&sv, 12, CONST7); + if (sv [4] != CONST7) + abort (); + + sv = mci (&sv, 25, CONST6); + if (sv [1] != CONST6) + abort (); + + sv = mci (&sv, 16, CONST5); + if (sv [0] != CONST5) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11a.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11a.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11a.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11a.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,149 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/dfp + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + int s3 (vector int v) + { + return __builtin_vec_ext_v4si (v, 3); + } + + int s1 (vector int v) + { + return __builtin_vec_ext_v4si (v, 1); + } + + int s21 (vector int v) + { + return __builtin_vec_ext_v4si (v, 21); + } + + int s30 (vector int v) + { + return __builtin_vec_ext_v4si (v, 30); + } + + /* Test for vector residing in memory. */ + int ms3 (vector int *vp) + { + return __builtin_vec_ext_v4si (*vp, 3); + } + + int ms1(vector int *vp) + { + return __builtin_vec_ext_v4si (*vp, 1); + } + + int ms21(vector int *vp) + { + return __builtin_vec_ext_v4si (*vp, 21); + } + + int ms30(vector int *vp) + { + return __builtin_vec_ext_v4si (*vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + int ci (vector int v, int i) + { + return __builtin_vec_ext_v4si (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + int mci(vector int *vp, int i) + { + return __builtin_vec_ext_v4si (*vp, i); + } + + + int main (int argc, int *argv[]) { + vector int sv = { CONST0, CONST1, CONST2, CONST3 }; + int s; + + s = s3 (sv); + if (s != CONST3) + abort (); + + s = s1 (sv); + if (s != CONST1) + abort (); + + s = s21 (sv); + if (s != CONST1) + abort (); + + s = s30 (sv); + if (s != CONST2) + abort (); + + s = ms3 (&sv); + if (s != CONST3) + abort (); + + s = ms1 (&sv); + if (s != CONST1) + abort (); + + s = ms21 (&sv); + if (s != CONST1) + abort (); + + s = ms30 (&sv); + if (s != CONST2) + abort (); + + s = ci (sv, 5); + if (s != CONST1) + abort (); + + s = ci (sv, 2); + if (s != CONST2) + abort (); + + s = ci (sv, 15); + if (s != CONST3) + abort (); + + s = ci (sv, 28); + if (s != CONST0) + abort (); + + s = mci (&sv, 5); + if (s != CONST1) + abort (); + + s = mci (&sv, 12); + if (s != CONST0) + abort (); + + s = mci (&sv, 25); + if (s != CONST1) + abort (); + + s = mci (&sv, 16); + if (s != CONST0) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11b.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11b.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11b.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11b.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,149 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec -O3" } */ + + /* This test should run the same on any target that supports altivec/dfp + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + int s3 (vector int v) + { + return __builtin_vec_ext_v4si (v, 3); + } + + int s1 (vector int v) + { + return __builtin_vec_ext_v4si (v, 1); + } + + int s21 (vector int v) + { + return __builtin_vec_ext_v4si (v, 21); + } + + int s30 (vector int v) + { + return __builtin_vec_ext_v4si (v, 30); + } + + /* Test for vector residing in memory. */ + int ms3 (vector int *vp) + { + return __builtin_vec_ext_v4si (*vp, 3); + } + + int ms1(vector int *vp) + { + return __builtin_vec_ext_v4si (*vp, 1); + } + + int ms21(vector int *vp) + { + return __builtin_vec_ext_v4si (*vp, 21); + } + + int ms30(vector int *vp) + { + return __builtin_vec_ext_v4si (*vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + int ci (vector int v, int i) + { + return __builtin_vec_ext_v4si (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + int mci(vector int *vp, int i) + { + return __builtin_vec_ext_v4si (*vp, i); + } + + + int main (int argc, int *argv[]) { + vector int sv = { CONST0, CONST1, CONST2, CONST3 }; + int s; + + s = s3 (sv); + if (s != CONST3) + abort (); + + s = s1 (sv); + if (s != CONST1) + abort (); + + s = s21 (sv); + if (s != CONST1) + abort (); + + s = s30 (sv); + if (s != CONST2) + abort (); + + s = ms3 (&sv); + if (s != CONST3) + abort (); + + s = ms1 (&sv); + if (s != CONST1) + abort (); + + s = ms21 (&sv); + if (s != CONST1) + abort (); + + s = ms30 (&sv); + if (s != CONST2) + abort (); + + s = ci (sv, 5); + if (s != CONST1) + abort (); + + s = ci (sv, 2); + if (s != CONST2) + abort (); + + s = ci (sv, 15); + if (s != CONST3) + abort (); + + s = ci (sv, 28); + if (s != CONST0) + abort (); + + s = mci (&sv, 5); + if (s != CONST1) + abort (); + + s = mci (&sv, 12); + if (s != CONST0) + abort (); + + s = mci (&sv, 25); + if (s != CONST1) + abort (); + + s = mci (&sv, 16); + if (s != CONST0) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,149 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/vmx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector int s3 (vector int v, int x) + { + return vec_insert (x, v, 3); + } + + vector int s1 (vector int v, int x) + { + return vec_insert (x, v, 1); + } + + vector int s21 (vector int v, int x) + { + return vec_insert (x, v, 21); + } + + vector int s30 (vector int v, int x) + { + return vec_insert (x, v, 30); + } + + /* Test for vector residing in memory. */ + vector int ms3 (vector int *vp, int x) + { + return vec_insert (x, *vp, 3); + } + + vector int ms1 (vector int *vp, int x) + { + return vec_insert (x, *vp, 1); + } + + vector int ms21 (vector int *vp, int x) + { + return vec_insert (x, *vp, 21); + } + + vector int ms30 (vector int *vp, int x) + { + return vec_insert (x, *vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector int ci (vector int v, int i, int x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector int mci(vector int *vp, int i, int x) + { + return vec_insert (x, *vp, i); + } + + + int main (int argc, int *argv[]) { + vector int sv = { CONST0, CONST1, CONST2, CONST3 }; + int s; + + sv = s3 (sv, CONST1); + if (sv [3] != CONST1) + abort (); + + sv = s1 (sv, CONST3); + if (sv [1] != CONST3) + abort (); + + sv = s21 (sv, CONST0); + if (sv [1] != CONST0) + abort (); + + sv = s30 (sv, CONST1); + if (sv [2] != CONST1) + abort (); + + sv = ms3 (&sv, CONST2); + if (sv [3] != CONST2) + abort (); + + sv = ms1 (&sv, CONST0); + if (sv [1] != CONST0) + abort (); + + sv = ms21 (&sv, CONST3); + if (sv [1] != CONST3) + abort (); + + sv = ms30 (&sv, CONST0); + if (sv [2] != CONST0) + abort (); + + sv = ci (sv, 5, CONST0); + if (sv [1] != CONST0) + abort (); + + sv = ci (sv, 2, CONST3); + if (sv [2] != CONST3) + abort (); + + sv = ci (sv, 15, CONST1); + if (sv [3] != CONST1) + abort (); + + sv = ci (sv, 28, CONST3); + if (sv [0] != CONST3) + abort (); + + sv = mci (&sv, 5, CONST2); + if (sv [1] != CONST2) + abort (); + + sv = mci (&sv, 12, CONST1); + if (sv [0] != CONST1) + abort (); + + sv = mci (&sv, 25, CONST2); + if (sv [1] != CONST2) + abort (); + + sv = mci (&sv, 16, CONST3); + if (sv [0] != CONST3) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,149 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec -O3" } */ + + /* This test should run the same on any target that supports altivec/vmx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector int s3 (vector int v, int x) + { + return vec_insert (x, v, 3); + } + + vector int s1 (vector int v, int x) + { + return vec_insert (x, v, 1); + } + + vector int s21 (vector int v, int x) + { + return vec_insert (x, v, 21); + } + + vector int s30 (vector int v, int x) + { + return vec_insert (x, v, 30); + } + + /* Test for vector residing in memory. */ + vector int ms3 (vector int *vp, int x) + { + return vec_insert (x, *vp, 3); + } + + vector int ms1 (vector int *vp, int x) + { + return vec_insert (x, *vp, 1); + } + + vector int ms21 (vector int *vp, int x) + { + return vec_insert (x, *vp, 21); + } + + vector int ms30 (vector int *vp, int x) + { + return vec_insert (x, *vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector int ci (vector int v, int i, int x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector int mci(vector int *vp, int i, int x) + { + return vec_insert (x, *vp, i); + } + + + int main (int argc, int *argv[]) { + vector int sv = { CONST0, CONST1, CONST2, CONST3 }; + int s; + + sv = s3 (sv, CONST1); + if (sv [3] != CONST1) + abort (); + + sv = s1 (sv, CONST3); + if (sv [1] != CONST3) + abort (); + + sv = s21 (sv, CONST0); + if (sv [1] != CONST0) + abort (); + + sv = s30 (sv, CONST1); + if (sv [2] != CONST1) + abort (); + + sv = ms3 (&sv, CONST2); + if (sv [3] != CONST2) + abort (); + + sv = ms1 (&sv, CONST0); + if (sv [1] != CONST0) + abort (); + + sv = ms21 (&sv, CONST3); + if (sv [1] != CONST3) + abort (); + + sv = ms30 (&sv, CONST0); + if (sv [2] != CONST0) + abort (); + + sv = ci (sv, 5, CONST0); + if (sv [1] != CONST0) + abort (); + + sv = ci (sv, 2, CONST3); + if (sv [2] != CONST3) + abort (); + + sv = ci (sv, 15, CONST1); + if (sv [3] != CONST1) + abort (); + + sv = ci (sv, 28, CONST3); + if (sv [0] != CONST3) + abort (); + + sv = mci (&sv, 5, CONST2); + if (sv [1] != CONST2) + abort (); + + sv = mci (&sv, 12, CONST1); + if (sv [0] != CONST1) + abort (); + + sv = mci (&sv, 25, CONST2); + if (sv [1] != CONST2) + abort (); + + sv = mci (&sv, 16, CONST3); + if (sv [0] != CONST3) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12a.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12a.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12a.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12a.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,109 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (31415926539LL) + #define CONST1 (2 * 31415926539LL) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + long long int e0 (vector long long int v) + { + return __builtin_vec_ext_v2di (v, 0); + } + + long long int e3 (vector long long int v) + { + return __builtin_vec_ext_v2di (v, 3); + } + + /* Test for vector residing in memory. */ + long long int me0 (vector long long int *vp) + { + return __builtin_vec_ext_v2di (*vp, 0); + } + + long long int me3 (vector long long int *vp) + { + return __builtin_vec_ext_v2di (*vp, 3); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + long long int ei (vector long long int v, int i) + { + return __builtin_vec_ext_v2di (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + long long int mei (vector long long int *vp, int i) + { + return __builtin_vec_ext_v2di (*vp, i); + } + + int main (int argc, char *argv[]) { + vector long long int dv = { CONST0, CONST1 }; + long long int d; + + d = e0 (dv); + if (d != CONST0) + abort (); + + d = e3 (dv); + if (d != CONST1) + abort (); + + d = me0 (&dv); + if (d != CONST0) + abort (); + + d = me3 (&dv); + if (d != CONST1) + abort (); + + d = ei (dv, 0); + if (d != CONST0) + abort (); + + d = ei (dv, 1); + if (d != CONST1) + abort (); + + d = ei (dv, 2); + if (d != CONST0) + abort (); + + d = ei (dv, 3); + if (d != CONST1) + abort (); + + d = mei (&dv, 0); + if (d != CONST0) + abort (); + + d = mei (&dv, 1); + if (d != CONST1) + abort (); + + d = mei (&dv, 2); + if (d != CONST0) + abort (); + + d = mei (&dv, 3); + if (d != CONST1) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12b.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12b.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12b.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12b.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,109 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx -O3" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (31415926539LL) + #define CONST1 (2 * 31415926539LL) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + long long int e0 (vector long long int v) + { + return __builtin_vec_ext_v2di (v, 0); + } + + long long int e3 (vector long long int v) + { + return __builtin_vec_ext_v2di (v, 3); + } + + /* Test for vector residing in memory. */ + long long int me0 (vector long long int *vp) + { + return __builtin_vec_ext_v2di (*vp, 0); + } + + long long int me3 (vector long long int *vp) + { + return __builtin_vec_ext_v2di (*vp, 3); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + long long int ei (vector long long int v, int i) + { + return __builtin_vec_ext_v2di (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + long long int mei (vector long long int *vp, int i) + { + return __builtin_vec_ext_v2di (*vp, i); + } + + int main (int argc, char *argv[]) { + vector long long int dv = { CONST0, CONST1 }; + long long int d; + + d = e0 (dv); + if (d != CONST0) + abort (); + + d = e3 (dv); + if (d != CONST1) + abort (); + + d = me0 (&dv); + if (d != CONST0) + abort (); + + d = me3 (&dv); + if (d != CONST1) + abort (); + + d = ei (dv, 0); + if (d != CONST0) + abort (); + + d = ei (dv, 1); + if (d != CONST1) + abort (); + + d = ei (dv, 2); + if (d != CONST0) + abort (); + + d = ei (dv, 3); + if (d != CONST1) + abort (); + + d = mei (&dv, 0); + if (d != CONST0) + abort (); + + d = mei (&dv, 1); + if (d != CONST1) + abort (); + + d = mei (&dv, 2); + if (d != CONST0) + abort (); + + d = mei (&dv, 3); + if (d != CONST1) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,112 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (31415926539LL) + #define CONST1 (2 * 31415926539LL) + #define CONST2 (3 * 31415926539LL) + #define CONST3 (4 * 31415926539LL) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector long long int e0 (vector long long int v, long long int x) + { + return vec_insert (x, v, 0); + } + + vector long long int e3 (vector long long int v, long long int x) + { + return vec_insert (x, v, 3); + } + + /* Test for vector residing in memory. */ + vector long long int me0 (vector long long int *vp, long long int x) + { + return vec_insert (x, *vp, 0); + } + + vector long long int me3 (vector long long int *vp, long long int x) + { + return vec_insert (x, *vp, 3); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector long long int ei (vector long long int v, int i, long long int x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector long long int mei (vector long long int *vp, int i, long long int x) + { + return vec_insert (x, *vp, i); + } + + int main (int argc, char *argv[]) { + vector long long int dv = { CONST0, CONST1 }; + long long int d; + + dv = e0 (dv, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = e3 (dv, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = me0 (&dv, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = me3 (&dv, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = ei (dv, 0, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = ei (dv, 1, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = ei (dv, 2, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = ei (dv, 3, CONST3); + if (dv [1] != CONST3) + abort (); + + dv = mei (&dv, 0, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 1, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = mei (&dv, 2, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 3, CONST2); + if (dv [1] != CONST2) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,112 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx -O3" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (31415926539LL) + #define CONST1 (2 * 31415926539LL) + #define CONST2 (3 * 31415926539LL) + #define CONST3 (4 * 31415926539LL) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector long long int e0 (vector long long int v, long long int x) + { + return vec_insert (x, v, 0); + } + + vector long long int e3 (vector long long int v, long long int x) + { + return vec_insert (x, v, 3); + } + + /* Test for vector residing in memory. */ + vector long long int me0 (vector long long int *vp, long long int x) + { + return vec_insert (x, *vp, 0); + } + + vector long long int me3 (vector long long int *vp, long long int x) + { + return vec_insert (x, *vp, 3); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector long long int ei (vector long long int v, int i, long long int x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector long long int mei (vector long long int *vp, int i, long long int x) + { + return vec_insert (x, *vp, i); + } + + int main (int argc, char *argv[]) { + vector long long int dv = { CONST0, CONST1 }; + long long int d; + + dv = e0 (dv, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = e3 (dv, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = me0 (&dv, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = me3 (&dv, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = ei (dv, 0, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = ei (dv, 1, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = ei (dv, 2, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = ei (dv, 3, CONST3); + if (dv [1] != CONST3) + abort (); + + dv = mei (&dv, 0, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 1, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = mei (&dv, 2, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 3, CONST2); + if (dv [1] != CONST2) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c Mon May 13 21:27:29 2019 *************** *** 0 **** --- 1,124 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + /* Define this after PR89424 is addressed. */ + #define PR89424 + + /* Define this after PR89626 is addressed. */ + #undef PR89626 + + #ifdef PR89626 + #define SIGNED + #else + #define SIGNED signed + #endif + + extern void abort (void); + + #define CONST0 (((SIGNED __int128) 31415926539) << 60) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + SIGNED __int128 e0 (vector SIGNED __int128 v) + { + return __builtin_vec_ext_v1ti (v, 0); + } + + SIGNED __int128 e3 (vector SIGNED __int128 v) + { + return __builtin_vec_ext_v1ti (v, 3); + } + + /* Test for vector residing in memory. */ + SIGNED __int128 me0 (vector SIGNED __int128 *vp) + { + return __builtin_vec_ext_v1ti (*vp, 0); + } + + SIGNED __int128 me3 (vector SIGNED __int128 *vp) + { + return __builtin_vec_ext_v1ti (*vp, 3); + } + + /* Test the same with variable indices. */ + + #ifdef PR89424 + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + SIGNED __int128 ei (vector SIGNED __int128 v, int i) + { + return __builtin_vec_ext_v1ti (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + SIGNED __int128 mei (vector SIGNED __int128 *vp, int i) + { + return __builtin_vec_ext_v1ti (*vp, i); + } + #endif + + int main (int argc, char *argv[]) { + vector SIGNED __int128 dv = { CONST0 }; + SIGNED __int128 d; + + d = e0 (dv); + if (d != CONST0) + abort (); + + d = e3 (dv); + if (d != CONST0) + abort (); + + d = me0 (&dv); + if (d != CONST0) + abort (); + + d = me3 (&dv); + if (d != CONST0) + abort (); + + #ifdef PR89424 + d = ei (dv, 0); + if (d != CONST0) + abort (); + + d = ei (dv, 1); + if (d != CONST0) + abort (); + + d = ei (dv, 2); + if (d != CONST0) + abort (); + + d = ei (dv, 3); + if (d != CONST0) + abort (); + + d = mei (&dv, 0); + if (d != CONST0) + abort (); + + d = mei (&dv, 1); + if (d != CONST0) + abort (); + + d = mei (&dv, 2); + if (d != CONST0) + abort (); + + d = mei (&dv, 3); + if (d != CONST0) + abort (); + #endif + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c Mon May 13 21:27:29 2019 *************** *** 0 **** --- 1,124 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx -O3" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + /* Define this after PR89424 is addressed. */ + #define PR89424 + + /* Define this after PR89626 is addressed. */ + #undef PR89626 + + #ifdef PR89626 + #define SIGNED + #else + #define SIGNED signed + #endif + + extern void abort (void); + + #define CONST0 (((SIGNED __int128) 31415926539) << 60) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + SIGNED __int128 e0 (vector SIGNED __int128 v) + { + return __builtin_vec_ext_v1ti (v, 0); + } + + SIGNED __int128 e3 (vector SIGNED __int128 v) + { + return __builtin_vec_ext_v1ti (v, 3); + } + + /* Test for vector residing in memory. */ + SIGNED __int128 me0 (vector SIGNED __int128 *vp) + { + return __builtin_vec_ext_v1ti (*vp, 0); + } + + SIGNED __int128 me3 (vector SIGNED __int128 *vp) + { + return __builtin_vec_ext_v1ti (*vp, 3); + } + + /* Test the same with variable indices. */ + + #ifdef PR89424 + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + SIGNED __int128 ei (vector SIGNED __int128 v, int i) + { + return __builtin_vec_ext_v1ti (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + SIGNED __int128 mei (vector SIGNED __int128 *vp, int i) + { + return __builtin_vec_ext_v1ti (*vp, i); + } + #endif + + int main (int argc, char *argv[]) { + vector SIGNED __int128 dv = { CONST0 }; + SIGNED __int128 d; + + d = e0 (dv); + if (d != CONST0) + abort (); + + d = e3 (dv); + if (d != CONST0) + abort (); + + d = me0 (&dv); + if (d != CONST0) + abort (); + + d = me3 (&dv); + if (d != CONST0) + abort (); + + #ifdef PR89424 + d = ei (dv, 0); + if (d != CONST0) + abort (); + + d = ei (dv, 1); + if (d != CONST0) + abort (); + + d = ei (dv, 2); + if (d != CONST0) + abort (); + + d = ei (dv, 3); + if (d != CONST0) + abort (); + + d = mei (&dv, 0); + if (d != CONST0) + abort (); + + d = mei (&dv, 1); + if (d != CONST0) + abort (); + + d = mei (&dv, 2); + if (d != CONST0) + abort (); + + d = mei (&dv, 3); + if (d != CONST0) + abort (); + #endif + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,115 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + #define SIGNED signed + + extern void abort (void); + + #define CONST0 (((SIGNED __int128) 31415926539) << 60) + #define CONST1 (((SIGNED __int128) 31415926539) << 55) + #define CONST2 (((SIGNED __int128) 31415926539) << 50) + #define CONST3 (((SIGNED __int128) 31415926539) << 45) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector SIGNED __int128 e0 (vector SIGNED __int128 v, SIGNED __int128 x) + { + return vec_insert (x, v, 0); + } + + vector SIGNED __int128 e3 (vector SIGNED __int128 v, SIGNED __int128 x) + { + return vec_insert (x, v, 3); + } + + /* Test for vector residing in memory. */ + vector SIGNED __int128 me0 (vector SIGNED __int128 *vp, SIGNED __int128 x) + { + return vec_insert (x, *vp, 0); + } + + vector SIGNED __int128 me3 (vector SIGNED __int128 *vp, SIGNED __int128 x) + { + return vec_insert (x, *vp, 3); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector SIGNED __int128 + ei (vector SIGNED __int128 v, int i, SIGNED __int128 x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector SIGNED __int128 + mei (vector SIGNED __int128 *vp, int i, SIGNED __int128 x) + { + return vec_insert (x, *vp, i); + } + + int main (int argc, char *argv[]) { + vector SIGNED __int128 dv = { CONST0 }; + SIGNED __int128 d; + + dv = e0 (dv, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = e3 (dv, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = me0 (&dv, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = me3 (&dv, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = ei (dv, 0, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = ei (dv, 1, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = ei (dv, 2, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = ei (dv, 3, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 0, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = mei (&dv, 1, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = mei (&dv, 2, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 3, CONST2); + if (dv [0] != CONST2) + abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,115 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx -O3" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + #define SIGNED signed + + extern void abort (void); + + #define CONST0 (((SIGNED __int128) 31415926539) << 60) + #define CONST1 (((SIGNED __int128) 31415926539) << 55) + #define CONST2 (((SIGNED __int128) 31415926539) << 50) + #define CONST3 (((SIGNED __int128) 31415926539) << 45) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector SIGNED __int128 e0 (vector SIGNED __int128 v, SIGNED __int128 x) + { + return vec_insert (x, v, 0); + } + + vector SIGNED __int128 e3 (vector SIGNED __int128 v, SIGNED __int128 x) + { + return vec_insert (x, v, 3); + } + + /* Test for vector residing in memory. */ + vector SIGNED __int128 me0 (vector SIGNED __int128 *vp, SIGNED __int128 x) + { + return vec_insert (x, *vp, 0); + } + + vector SIGNED __int128 me3 (vector SIGNED __int128 *vp, SIGNED __int128 x) + { + return vec_insert (x, *vp, 3); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector SIGNED __int128 + ei (vector SIGNED __int128 v, int i, SIGNED __int128 x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector SIGNED __int128 + mei (vector SIGNED __int128 *vp, int i, SIGNED __int128 x) + { + return vec_insert (x, *vp, i); + } + + int main (int argc, char *argv[]) { + vector SIGNED __int128 dv = { CONST0 }; + SIGNED __int128 d; + + dv = e0 (dv, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = e3 (dv, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = me0 (&dv, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = me3 (&dv, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = ei (dv, 0, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = ei (dv, 1, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = ei (dv, 2, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = ei (dv, 3, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 0, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = mei (&dv, 1, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = mei (&dv, 2, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 3, CONST2); + if (dv [0] != CONST2) + abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14a.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14a.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14a.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14a.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,126 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/dfp + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 ((float) (3.1415926539)) + #define CONST1 ((float) (3.1415926539 * 2)) + #define CONST2 ((float) (3.1415926539 * 3)) + #define CONST3 ((float) (3.1415926539 * 4)) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + float e0(vector float v){ return __builtin_vec_ext_v4sf (v, 0); } + float e1(vector float v){ return __builtin_vec_ext_v4sf (v, 1); } + float e7(vector float v){ return __builtin_vec_ext_v4sf (v, 7); } + float e8(vector float v){ return __builtin_vec_ext_v4sf (v, 8); } + + /* Test for vector residing in memory. */ + float me0(vector float *vp){ return __builtin_vec_ext_v4sf (*vp, 0); } + float me1(vector float *vp){ return __builtin_vec_ext_v4sf (*vp, 1); } + + float me13(vector float *vp) + { + return __builtin_vec_ext_v4sf (*vp, 13); + } + + float me15(vector float *vp) + { + return __builtin_vec_ext_v4sf (*vp, 15); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + float ei(vector float v, int i) + { + return __builtin_vec_ext_v4sf (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + float mei(vector float *vp, int i) + { + return __builtin_vec_ext_v4sf (*vp, i); + } + + + int main (int argc, char *argv[]) { + vector float dv = { CONST0, CONST1, CONST2, CONST3 }; + float d; + + d = e0 (dv); + if (d != CONST0) + abort (); + + d = e1 (dv); + if (d != CONST1) + abort (); + + d = e7 (dv); + if (d != CONST3) + abort (); + + d = e8 (dv); + if (d != CONST0) + abort (); + + d = me0 (&dv); + if (d != CONST0) + abort (); + + d = me1 (&dv); + if (d != CONST1) + abort (); + + d = me13 (&dv); + if (d != CONST1) + abort (); + + d = me15 (&dv); + if (d != CONST3) + abort (); + + d = ei (dv, 0); + if (d != CONST0) + abort (); + + d = ei (dv, 2); + if (d != CONST2) + abort (); + + d = ei (dv, 11); + if (d != CONST3) + abort (); + + d = ei (dv, 17); + if (d != CONST1) + abort (); + + d = mei (&dv, 0); + if (d != CONST0) + abort (); + + d = mei (&dv, 1); + if (d != CONST1) + abort (); + + d = mei (&dv, 15); + if (d != CONST3) + abort (); + + d = mei (&dv, 6); + if (d != CONST2) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14b.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14b.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14b.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14b.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,126 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec -O3" } */ + + /* This test should run the same on any target that supports altivec/dfp + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 ((float) (3.1415926539)) + #define CONST1 ((float) (3.1415926539 * 2)) + #define CONST2 ((float) (3.1415926539 * 3)) + #define CONST3 ((float) (3.1415926539 * 4)) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + float e0(vector float v){ return __builtin_vec_ext_v4sf (v, 0); } + float e1(vector float v){ return __builtin_vec_ext_v4sf (v, 1); } + float e7(vector float v){ return __builtin_vec_ext_v4sf (v, 7); } + float e8(vector float v){ return __builtin_vec_ext_v4sf (v, 8); } + + /* Test for vector residing in memory. */ + float me0(vector float *vp){ return __builtin_vec_ext_v4sf (*vp, 0); } + float me1(vector float *vp){ return __builtin_vec_ext_v4sf (*vp, 1); } + + float me13(vector float *vp) + { + return __builtin_vec_ext_v4sf (*vp, 13); + } + + float me15(vector float *vp) + { + return __builtin_vec_ext_v4sf (*vp, 15); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + float ei(vector float v, int i) + { + return __builtin_vec_ext_v4sf (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + float mei(vector float *vp, int i) + { + return __builtin_vec_ext_v4sf (*vp, i); + } + + + int main (int argc, char *argv[]) { + vector float dv = { CONST0, CONST1, CONST2, CONST3 }; + float d; + + d = e0 (dv); + if (d != CONST0) + abort (); + + d = e1 (dv); + if (d != CONST1) + abort (); + + d = e7 (dv); + if (d != CONST3) + abort (); + + d = e8 (dv); + if (d != CONST0) + abort (); + + d = me0 (&dv); + if (d != CONST0) + abort (); + + d = me1 (&dv); + if (d != CONST1) + abort (); + + d = me13 (&dv); + if (d != CONST1) + abort (); + + d = me15 (&dv); + if (d != CONST3) + abort (); + + d = ei (dv, 0); + if (d != CONST0) + abort (); + + d = ei (dv, 2); + if (d != CONST2) + abort (); + + d = ei (dv, 11); + if (d != CONST3) + abort (); + + d = ei (dv, 17); + if (d != CONST1) + abort (); + + d = mei (&dv, 0); + if (d != CONST0) + abort (); + + d = mei (&dv, 1); + if (d != CONST1) + abort (); + + d = mei (&dv, 15); + if (d != CONST3) + abort (); + + d = mei (&dv, 6); + if (d != CONST2) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,149 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/vmx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 ((float) (3.1415926539)) + #define CONST1 ((float) (3.1415926539 * 2)) + #define CONST2 ((float) (3.1415926539 * 3)) + #define CONST3 ((float) (3.1415926539 * 4)) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector float e0(vector float v, float x) + { + return vec_insert (x, v, 0); + } + + vector float e1(vector float v, float x) + { + return vec_insert (x, v, 1); + } + + vector float e7(vector float v, float x) + { + return vec_insert (x, v, 7); + } + + vector float e8(vector float v, float x) + { + return vec_insert (x, v, 8); + } + + /* Test for vector residing in memory. */ + vector float me0(vector float *vp, float x) + { + return vec_insert (x, *vp, 0); + } + + vector float me1(vector float *vp, float x) + { + return vec_insert (x, *vp, 1); + } + + vector float me13(vector float *vp, float x) + { + return vec_insert (x, *vp, 13); + } + + vector float me15(vector float *vp, float x) + { + return vec_insert (x, *vp, 15); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector float ei(vector float v, int i, float x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector float mei(vector float *vp, int i, float x) + { + return vec_insert (x, *vp, i); + } + + + int main (int argc, char *argv[]) { + vector float dv = { CONST0, CONST1, CONST2, CONST3 }; + float d; + + dv = e0 (dv, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = e1 (dv, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = e7 (dv, CONST2); + if (dv [3] != CONST2) + abort (); + + dv = e8 (dv, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = me0 (&dv, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = me1 (&dv, CONST3); + if (dv [1] != CONST3) + abort (); + + dv = me13 (&dv, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = me15 (&dv, CONST1); + if (dv [3] != CONST1) + abort (); + + dv = ei (dv, 0, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = ei (dv, 2, CONST1); + if (dv [2] != CONST1) + abort (); + + dv = ei (dv, 11, CONST0); + if (dv [3] != CONST0) + abort (); + + dv = ei (dv, 17, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = mei (&dv, 0, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 1, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = mei (&dv, 15, CONST1); + if (dv [3] != CONST1) + abort (); + + dv = mei (&dv, 6, CONST0); + if (dv [2] != CONST0) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,149 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec -O3" } */ + + /* This test should run the same on any target that supports altivec/vmx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 ((float) (3.1415926539)) + #define CONST1 ((float) (3.1415926539 * 2)) + #define CONST2 ((float) (3.1415926539 * 3)) + #define CONST3 ((float) (3.1415926539 * 4)) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector float e0(vector float v, float x) + { + return vec_insert (x, v, 0); + } + + vector float e1(vector float v, float x) + { + return vec_insert (x, v, 1); + } + + vector float e7(vector float v, float x) + { + return vec_insert (x, v, 7); + } + + vector float e8(vector float v, float x) + { + return vec_insert (x, v, 8); + } + + /* Test for vector residing in memory. */ + vector float me0(vector float *vp, float x) + { + return vec_insert (x, *vp, 0); + } + + vector float me1(vector float *vp, float x) + { + return vec_insert (x, *vp, 1); + } + + vector float me13(vector float *vp, float x) + { + return vec_insert (x, *vp, 13); + } + + vector float me15(vector float *vp, float x) + { + return vec_insert (x, *vp, 15); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector float ei(vector float v, int i, float x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector float mei(vector float *vp, int i, float x) + { + return vec_insert (x, *vp, i); + } + + + int main (int argc, char *argv[]) { + vector float dv = { CONST0, CONST1, CONST2, CONST3 }; + float d; + + dv = e0 (dv, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = e1 (dv, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = e7 (dv, CONST2); + if (dv [3] != CONST2) + abort (); + + dv = e8 (dv, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = me0 (&dv, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = me1 (&dv, CONST3); + if (dv [1] != CONST3) + abort (); + + dv = me13 (&dv, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = me15 (&dv, CONST1); + if (dv [3] != CONST1) + abort (); + + dv = ei (dv, 0, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = ei (dv, 2, CONST1); + if (dv [2] != CONST1) + abort (); + + dv = ei (dv, 11, CONST0); + if (dv [3] != CONST0) + abort (); + + dv = ei (dv, 17, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = mei (&dv, 0, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 1, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = mei (&dv, 15, CONST1); + if (dv [3] != CONST1) + abort (); + + dv = mei (&dv, 6, CONST0); + if (dv [2] != CONST0) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15a.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15a.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15a.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15a.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,113 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (3.1415926539) + #define CONST1 (3.1415926539 * 2) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + double e0(vector double v){ return __builtin_vec_ext_v2df (v, 0); } + double e1(vector double v){ return __builtin_vec_ext_v2df (v, 1); } + double e2(vector double v){ return __builtin_vec_ext_v2df (v, 2); } + double e3(vector double v){ return __builtin_vec_ext_v2df (v, 3); } + + /* Test for vector residing in memory. */ + double me0(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 0); } + double me1(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 1); } + double me2(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 2); } + double me3(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 3); } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + double ei(vector double v, int i){ return __builtin_vec_ext_v2df (v, i); } + + /* Test for variable selector and vector residing in memory. */ + double mei(vector double *vp, int i){ return __builtin_vec_ext_v2df (*vp, i); } + + + int main (int argc, char *argv[]) { + vector double dv; + double d; + dv[0] = CONST0; + dv[1] = CONST1; + + d = e0 (dv); + if (d != CONST0) + abort (); + + d = e1 (dv); + if (d != CONST1) + abort (); + + d = e2 (dv); + if (d != CONST0) + abort (); + + d = e3 (dv); + if (d != CONST1) + abort (); + + d = me0 (&dv); + if (d != CONST0) + abort (); + + d = me1 (&dv); + if (d != CONST1) + abort (); + + d = me2 (&dv); + if (d != CONST0) + abort (); + + d = me3 (&dv); + if (d != CONST1) + abort (); + + d = ei (dv, 0); + if (d != CONST0) + abort (); + + d = ei (dv, 1); + if (d != CONST1) + abort (); + + d = ei (dv, 2); + if (d != CONST0) + abort (); + + d = ei (dv, 3); + if (d != CONST1) + abort (); + + d = mei (&dv, 0); + if (d != CONST0) + abort (); + + d = mei (&dv, 1); + if (d != CONST1) + abort (); + + d = mei (&dv, 2); + if (d != CONST0) + abort (); + + d = mei (&dv, 3); + if (d != CONST1) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15b.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15b.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15b.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15b.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,113 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx -O3" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (3.1415926539) + #define CONST1 (3.1415926539 * 2) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + double e0(vector double v){ return __builtin_vec_ext_v2df (v, 0); } + double e1(vector double v){ return __builtin_vec_ext_v2df (v, 1); } + double e2(vector double v){ return __builtin_vec_ext_v2df (v, 2); } + double e3(vector double v){ return __builtin_vec_ext_v2df (v, 3); } + + /* Test for vector residing in memory. */ + double me0(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 0); } + double me1(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 1); } + double me2(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 2); } + double me3(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 3); } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + double ei(vector double v, int i){ return __builtin_vec_ext_v2df (v, i); } + + /* Test for variable selector and vector residing in memory. */ + double mei(vector double *vp, int i){ return __builtin_vec_ext_v2df (*vp, i); } + + + int main (int argc, char *argv[]) { + vector double dv; + double d; + dv[0] = CONST0; + dv[1] = CONST1; + + d = e0 (dv); + if (d != CONST0) + abort (); + + d = e1 (dv); + if (d != CONST1) + abort (); + + d = e2 (dv); + if (d != CONST0) + abort (); + + d = e3 (dv); + if (d != CONST1) + abort (); + + d = me0 (&dv); + if (d != CONST0) + abort (); + + d = me1 (&dv); + if (d != CONST1) + abort (); + + d = me2 (&dv); + if (d != CONST0) + abort (); + + d = me3 (&dv); + if (d != CONST1) + abort (); + + d = ei (dv, 0); + if (d != CONST0) + abort (); + + d = ei (dv, 1); + if (d != CONST1) + abort (); + + d = ei (dv, 2); + if (d != CONST0) + abort (); + + d = ei (dv, 3); + if (d != CONST1) + abort (); + + d = mei (&dv, 0); + if (d != CONST0) + abort (); + + d = mei (&dv, 1); + if (d != CONST1) + abort (); + + d = mei (&dv, 2); + if (d != CONST0) + abort (); + + d = mei (&dv, 3); + if (d != CONST1) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15c.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15c.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15c.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15c.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,151 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (3.1415926539) + #define CONST1 (3.1415926539 * 2) + #define CONST2 (3.1415926539 * 3) + #define CONST3 (3.1415926539 * 4) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector double e0(vector double v, double x) + { + return vec_insert (x, v, 0); + } + + vector double e1(vector double v, double x) + { + return vec_insert (x, v, 1); + } + + vector double e2(vector double v, double x) + { + return vec_insert (x, v, 2); + } + + vector double e3(vector double v, double x) + { + return vec_insert (x, v, 3); + } + + /* Test for vector residing in memory. */ + vector double me0(vector double *vp, double x) + { + return vec_insert (x, *vp, 0); + } + + vector double me1(vector double *vp, double x) + { + return vec_insert (x, *vp, 1); + } + + vector double me2(vector double *vp, double x) + { + return vec_insert (x, *vp, 2); + } + + vector double me3(vector double *vp, double x) + { + return vec_insert (x, *vp, 3); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector double ei(vector double v, int i, double x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector double mei(vector double *vp, int i, double x) + { + return vec_insert (x, *vp, i); + } + + int main (int argc, char *argv[]) { + vector double dv; + double d; + dv[0] = CONST0; + dv[1] = CONST1; + + dv = e0 (dv, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = e1 (dv, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = e2 (dv, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = e3 (dv, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = me0 (&dv, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = me1 (&dv, CONST3); + if (dv [1] != CONST3) + abort (); + + dv = me2 (&dv, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = me3 (&dv, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = ei (dv, 0, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = ei (dv, 1, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = ei (dv, 2, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = ei (dv, 3, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = mei (&dv, 0, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 1, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = mei (&dv, 2, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = mei (&dv, 3, CONST3); + if (dv [1] != CONST3) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15d.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15d.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15d.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15d.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,151 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx -O3" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (3.1415926539) + #define CONST1 (3.1415926539 * 2) + #define CONST2 (3.1415926539 * 3) + #define CONST3 (3.1415926539 * 4) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector double e0(vector double v, double x) + { + return vec_insert (x, v, 0); + } + + vector double e1(vector double v, double x) + { + return vec_insert (x, v, 1); + } + + vector double e2(vector double v, double x) + { + return vec_insert (x, v, 2); + } + + vector double e3(vector double v, double x) + { + return vec_insert (x, v, 3); + } + + /* Test for vector residing in memory. */ + vector double me0(vector double *vp, double x) + { + return vec_insert (x, *vp, 0); + } + + vector double me1(vector double *vp, double x) + { + return vec_insert (x, *vp, 1); + } + + vector double me2(vector double *vp, double x) + { + return vec_insert (x, *vp, 2); + } + + vector double me3(vector double *vp, double x) + { + return vec_insert (x, *vp, 3); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector double ei(vector double v, int i, double x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector double mei(vector double *vp, int i, double x) + { + return vec_insert (x, *vp, i); + } + + int main (int argc, char *argv[]) { + vector double dv; + double d; + dv[0] = CONST0; + dv[1] = CONST1; + + dv = e0 (dv, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = e1 (dv, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = e2 (dv, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = e3 (dv, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = me0 (&dv, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = me1 (&dv, CONST3); + if (dv [1] != CONST3) + abort (); + + dv = me2 (&dv, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = me3 (&dv, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = ei (dv, 0, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = ei (dv, 1, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = ei (dv, 2, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = ei (dv, 3, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = mei (&dv, 0, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 1, CONST0); + if (dv [1] != CONST0) + abort (); + + dv = mei (&dv, 2, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = mei (&dv, 3, CONST3); + if (dv [1] != CONST3) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16a.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16a.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16a.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16a.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,165 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/dfp + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + #define CONST8 (8) + #define CONST9 (9) + #define CONSTA (10) + #define CONSTB (11) + #define CONSTC (12) + #define CONSTD (13) + #define CONSTE (14) + #define CONSTF (15) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + unsigned char c0 (vector unsigned char v) + { + return __builtin_vec_extract (v, 0); + } + + unsigned char c9 (vector unsigned char v) + { + return __builtin_vec_extract (v, 9); + } + + unsigned char c21 (vector unsigned char v) + { + return __builtin_vec_extract (v, 21); + } + + unsigned char c30 (vector unsigned char v) + { + return __builtin_vec_extract (v, 30); + } + + /* Test for vector residing in memory. */ + unsigned char mc0 (vector unsigned char *vp) + { + return __builtin_vec_extract (*vp, 0); + } + + unsigned char mc9 (vector unsigned char *vp) + { + return __builtin_vec_extract (*vp, 9); + } + + unsigned char mc21 (vector unsigned char *vp) + { + return __builtin_vec_extract (*vp, 21); + } + + unsigned char mc30 (vector unsigned char *vp) + { + return __builtin_vec_extract (*vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + unsigned char ci (vector unsigned char v, int i) + { + return __builtin_vec_extract (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + unsigned char mci (vector unsigned char *vp, int i) + { + return __builtin_vec_extract (*vp, i); + } + + + int main (int argc, char *argv[]) { + vector unsigned char cv = { CONST0, CONST1, CONST2, CONST3, + CONST4, CONST5, CONST6, CONST7, + CONST8, CONST9, CONSTA, CONSTB, + CONSTC, CONSTD, CONSTE, CONSTF }; + unsigned char c; + + c = c0 (cv); + if (c != CONST0) + abort (); + + c = c9 (cv); + if (c != CONST9) + abort (); + + c = c21 (cv); + if (c != CONST5) + abort (); + + c = c30 (cv); + if (c != CONSTE) + abort (); + + c = mc0 (&cv); + if (c != CONST0) + abort (); + + c = mc9 (&cv); + if (c != CONST9) + abort (); + + c = mc21 (&cv); + if (c != CONST5) + abort (); + + c = mc30 (&cv); + if (c != CONSTE) + abort (); + + c = ci (cv, 8); + if (c != CONST8) + abort (); + + c = ci (cv, 13); + if (c != CONSTD) + abort (); + + c = ci (cv, 23); + if (c != CONST7) + abort (); + + c = ci (cv, 31); + if (c != CONSTF) + abort (); + + c = mci (&cv, 5); + if (c != CONST5) + abort (); + + c = mci (&cv, 12); + if (c != CONSTC) + abort (); + + c = mci (&cv, 25); + if (c != CONST9) + abort (); + + c = mci (&cv, 16); + if (c != CONST0) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16b.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16b.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16b.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16b.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,165 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec -O3" } */ + + /* This test should run the same on any target that supports altivec/dfp + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + #define CONST8 (8) + #define CONST9 (9) + #define CONSTA (10) + #define CONSTB (11) + #define CONSTC (12) + #define CONSTD (13) + #define CONSTE (14) + #define CONSTF (15) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + unsigned char c0 (vector unsigned char v) + { + return __builtin_vec_extract (v, 0); + } + + unsigned char c9 (vector unsigned char v) + { + return __builtin_vec_extract (v, 9); + } + + unsigned char c21 (vector unsigned char v) + { + return __builtin_vec_extract (v, 21); + } + + unsigned char c30 (vector unsigned char v) + { + return __builtin_vec_extract (v, 30); + } + + /* Test for vector residing in memory. */ + unsigned char mc0 (vector unsigned char *vp) + { + return __builtin_vec_extract (*vp, 0); + } + + unsigned char mc9 (vector unsigned char *vp) + { + return __builtin_vec_extract (*vp, 9); + } + + unsigned char mc21 (vector unsigned char *vp) + { + return __builtin_vec_extract (*vp, 21); + } + + unsigned char mc30 (vector unsigned char *vp) + { + return __builtin_vec_extract (*vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + unsigned char ci (vector unsigned char v, int i) + { + return __builtin_vec_extract (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + unsigned char mci (vector unsigned char *vp, int i) + { + return __builtin_vec_extract (*vp, i); + } + + + int main (int argc, char *argv[]) { + vector unsigned char cv = { CONST0, CONST1, CONST2, CONST3, + CONST4, CONST5, CONST6, CONST7, + CONST8, CONST9, CONSTA, CONSTB, + CONSTC, CONSTD, CONSTE, CONSTF }; + unsigned char c; + + c = c0 (cv); + if (c != CONST0) + abort (); + + c = c9 (cv); + if (c != CONST9) + abort (); + + c = c21 (cv); + if (c != CONST5) + abort (); + + c = c30 (cv); + if (c != CONSTE) + abort (); + + c = mc0 (&cv); + if (c != CONST0) + abort (); + + c = mc9 (&cv); + if (c != CONST9) + abort (); + + c = mc21 (&cv); + if (c != CONST5) + abort (); + + c = mc30 (&cv); + if (c != CONSTE) + abort (); + + c = ci (cv, 8); + if (c != CONST8) + abort (); + + c = ci (cv, 13); + if (c != CONSTD) + abort (); + + c = ci (cv, 23); + if (c != CONST7) + abort (); + + c = ci (cv, 31); + if (c != CONSTF) + abort (); + + c = mci (&cv, 5); + if (c != CONST5) + abort (); + + c = mci (&cv, 12); + if (c != CONSTC) + abort (); + + c = mci (&cv, 25); + if (c != CONST9) + abort (); + + c = mci (&cv, 16); + if (c != CONST0) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,180 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/vmx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + #define CONST8 (8) + #define CONST9 (9) + #define CONSTA (10) + #define CONSTB (11) + #define CONSTC (12) + #define CONSTD (13) + #define CONSTE (14) + #define CONSTF (15) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector unsigned char c0 (vector unsigned char v, unsigned char x) + { + return vec_insert (x, v, 0); + } + + vector unsigned char c9 (vector unsigned char v, unsigned char x) + { + return vec_insert (x, v, 9); + } + + vector unsigned char c21 (vector unsigned char v, unsigned char x) + { + return vec_insert (x, v, 21); + } + + vector unsigned char c30 (vector unsigned char v, unsigned char x) + { + return vec_insert (x, v, 30); + } + + /* Test for vector residing in memory. */ + vector unsigned char mc0 (vector unsigned char *vp, unsigned char x) + { + return vec_insert (x, *vp, 0); + } + + vector unsigned char mc9 (vector unsigned char *vp, unsigned char x) + { + return vec_insert (x, *vp, 9); + } + + vector unsigned char mc21 (vector unsigned char *vp, unsigned char x) + { + return vec_insert (x, *vp, 21); + } + + vector unsigned char mc30 (vector unsigned char *vp, unsigned char x) + { + return vec_insert (x, *vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector unsigned char ci (vector unsigned char v, int i, unsigned char x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector unsigned char mci (vector unsigned char *vp, int i, unsigned char x) + { + return vec_insert (x, *vp, i); + } + + + int main (int argc, char *argv[]) { + vector unsigned char cv = { CONST0, CONST1, CONST2, CONST3, + CONST4, CONST5, CONST6, CONST7, + CONST8, CONST9, CONSTA, CONSTB, + CONSTC, CONSTD, CONSTE, CONSTF }; + printf ("A\n"); + cv = c0 (cv, CONST3); + if (cv [0] != CONST3) + abort (); + + printf ("B\n"); + cv = c9 (cv, CONST2); + if (cv [9] != CONST2) + abort (); + + printf ("C\n"); + cv = c21 (cv, CONSTF); + if (cv [5] != CONSTF) + abort (); + + printf ("D\n"); + cv = c30 (cv, CONST3); + if (cv [14] != CONST3) + abort (); + + printf ("E\n"); + cv = mc0 (&cv, CONST4); + if (cv [0] != CONST4) + abort (); + + printf ("F\n"); + cv = mc9 (&cv, CONST3); + if (cv [9] != CONST3) + abort (); + + printf ("G\n"); + cv = mc21 (&cv, CONST1); + if (cv [5] != CONST1) + abort (); + + printf ("H\n"); + cv = mc30 (&cv, CONSTC); + if (cv [14] != CONSTC) + abort (); + + printf ("I\n"); + cv = ci (cv, 8, CONSTD); + if (cv [8] != CONSTD) + abort (); + + printf ("J\n"); + cv = ci (cv, 13, CONST5); + if (cv [13] != CONST5) + abort (); + + printf ("K\n"); + cv = ci (cv, 23, CONST6); + if (cv [7] != CONST6) + abort (); + + printf ("L\n"); + cv = ci (cv, 31, CONST7); + if (cv [15] != CONST7) + abort (); + + printf ("M\n"); + cv = mci (&cv, 5, CONST8); + if (cv [5] != CONST8) + abort (); + + printf ("N\n"); + cv = mci (&cv, 12, CONST9); + if (cv [12] != CONST9) + abort (); + + printf ("O\n"); + cv = mci (&cv, 25, CONSTA); + if (cv [9] != CONSTA) + abort (); + + printf ("P\n"); + cv = mci (&cv, 16, CONSTB); + if (cv [0] != CONSTB) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,163 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec -O3" } */ + + /* This test should run the same on any target that supports altivec/vmx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + #define CONST8 (8) + #define CONST9 (9) + #define CONSTA (10) + #define CONSTB (11) + #define CONSTC (12) + #define CONSTD (13) + #define CONSTE (14) + #define CONSTF (15) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector unsigned char c0 (vector unsigned char v, unsigned char x) + { + return vec_insert (x, v, 0); + } + + vector unsigned char c9 (vector unsigned char v, unsigned char x) + { + return vec_insert (x, v, 9); + } + + vector unsigned char c21 (vector unsigned char v, unsigned char x) + { + return vec_insert (x, v, 21); + } + + vector unsigned char c30 (vector unsigned char v, unsigned char x) + { + return vec_insert (x, v, 30); + } + + /* Test for vector residing in memory. */ + vector unsigned char mc0 (vector unsigned char *vp, unsigned char x) + { + return vec_insert (x, *vp, 0); + } + + vector unsigned char mc9 (vector unsigned char *vp, unsigned char x) + { + return vec_insert (x, *vp, 9); + } + + vector unsigned char mc21 (vector unsigned char *vp, unsigned char x) + { + return vec_insert (x, *vp, 21); + } + + vector unsigned char mc30 (vector unsigned char *vp, unsigned char x) + { + return vec_insert (x, *vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector unsigned char ci (vector unsigned char v, int i, unsigned char x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector unsigned char mci (vector unsigned char *vp, int i, unsigned char x) + { + return vec_insert (x, *vp, i); + } + + + int main (int argc, char *argv[]) { + vector unsigned char cv = { CONST0, CONST1, CONST2, CONST3, + CONST4, CONST5, CONST6, CONST7, + CONST8, CONST9, CONSTA, CONSTB, + CONSTC, CONSTD, CONSTE, CONSTF }; + cv = c0 (cv, CONST3); + if (cv [0] != CONST3) + abort (); + + cv = c9 (cv, CONST2); + if (cv [9] != CONST2) + abort (); + + cv = c21 (cv, CONSTF); + if (cv [5] != CONSTF) + abort (); + + cv = c30 (cv, CONST3); + if (cv [14] != CONST3) + abort (); + + cv = mc0 (&cv, CONST4); + if (cv [0] != CONST4) + abort (); + + cv = mc9 (&cv, CONST3); + if (cv [9] != CONST3) + abort (); + + cv = mc21 (&cv, CONST1); + if (cv [5] != CONST1) + abort (); + + cv = mc30 (&cv, CONSTC); + if (cv [14] != CONSTC) + abort (); + + cv = ci (cv, 8, CONSTD); + if (cv [8] != CONSTD) + abort (); + + cv = ci (cv, 13, CONST5); + if (cv [13] != CONST5) + abort (); + + cv = ci (cv, 23, CONST6); + if (cv [7] != CONST6) + abort (); + + cv = ci (cv, 31, CONST7); + if (cv [15] != CONST7) + abort (); + + cv = mci (&cv, 5, CONST8); + if (cv [5] != CONST8) + abort (); + + cv = mci (&cv, 12, CONST9); + if (cv [12] != CONST9) + abort (); + + cv = mci (&cv, 25, CONSTA); + if (cv [9] != CONSTA) + abort (); + + cv = mci (&cv, 16, CONSTB); + if (cv [0] != CONSTB) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17a.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17a.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17a.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17a.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,155 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/dfp + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + unsigned short s3 (vector unsigned short v) + { + return __builtin_vec_extract (v, 3); + } + + unsigned short s7 (vector unsigned short v) + { + return __builtin_vec_extract (v, 7); + } + + unsigned short s21 (vector unsigned short v) + { + return __builtin_vec_extract (v, 21); + } + + unsigned short s30 (vector unsigned short v) + { + return __builtin_vec_extract (v, 30); + } + + /* Test for vector residing in memory. */ + unsigned short ms3 (vector unsigned short *vp) + { + return __builtin_vec_extract (*vp, 3); + } + + unsigned short ms7 (vector unsigned short *vp) + { + return __builtin_vec_extract (*vp, 7); + } + + unsigned short ms21 (vector unsigned short *vp) + { + return __builtin_vec_extract (*vp, 21); + } + + unsigned short ms30 (vector unsigned short *vp) + { + return __builtin_vec_extract (*vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + unsigned short ci (vector unsigned short v, int i) + { + return __builtin_vec_extract (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + unsigned short mci (vector unsigned short *vp, int i) + { + return __builtin_vec_extract (*vp, i); + } + + + int main (int argc, unsigned short *argv[]) { + vector unsigned short sv = { + CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; + unsigned short s; + + s = s3 (sv); + if (s != CONST3) + abort (); + + s = s7 (sv); + if (s != CONST7) + abort (); + + s = s21 (sv); + if (s != CONST5) + abort (); + + s = s30 (sv); + if (s != CONST6) + abort (); + + s = ms3 (&sv); + if (s != CONST3) + abort (); + + s = ms7 (&sv); + if (s != CONST7) + abort (); + + s = ms21 (&sv); + if (s != CONST5) + abort (); + + s = ms30 (&sv); + if (s != CONST6) + abort (); + + s = ci (sv, 5); + if (s != CONST5) + abort (); + + s = ci (sv, 2); + if (s != CONST2) + abort (); + + s = ci (sv, 15); + if (s != CONST7) + abort (); + + s = ci (sv, 28); + if (s != CONST4) + abort (); + + s = mci (&sv, 5); + if (s != CONST5) + abort (); + + s = mci (&sv, 12); + if (s != CONST4) + abort (); + + s = mci (&sv, 25); + if (s != CONST1) + abort (); + + s = mci (&sv, 16); + if (s != CONST0) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17b.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17b.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17b.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17b.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,155 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec -O3" } */ + + /* This test should run the same on any target that supports altivec/dfp + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + unsigned short s3 (vector unsigned short v) + { + return __builtin_vec_extract (v, 3); + } + + unsigned short s7 (vector unsigned short v) + { + return __builtin_vec_extract (v, 7); + } + + unsigned short s21 (vector unsigned short v) + { + return __builtin_vec_extract (v, 21); + } + + unsigned short s30 (vector unsigned short v) + { + return __builtin_vec_extract (v, 30); + } + + /* Test for vector residing in memory. */ + unsigned short ms3 (vector unsigned short *vp) + { + return __builtin_vec_extract (*vp, 3); + } + + unsigned short ms7 (vector unsigned short *vp) + { + return __builtin_vec_extract (*vp, 7); + } + + unsigned short ms21 (vector unsigned short *vp) + { + return __builtin_vec_extract (*vp, 21); + } + + unsigned short ms30 (vector unsigned short *vp) + { + return __builtin_vec_extract (*vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + unsigned short ci (vector unsigned short v, int i) + { + return __builtin_vec_extract (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + unsigned short mci (vector unsigned short *vp, int i) + { + return __builtin_vec_extract (*vp, i); + } + + + int main (int argc, unsigned short *argv[]) { + vector unsigned short sv = { + CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; + unsigned short s; + + s = s3 (sv); + if (s != CONST3) + abort (); + + s = s7 (sv); + if (s != CONST7) + abort (); + + s = s21 (sv); + if (s != CONST5) + abort (); + + s = s30 (sv); + if (s != CONST6) + abort (); + + s = ms3 (&sv); + if (s != CONST3) + abort (); + + s = ms7 (&sv); + if (s != CONST7) + abort (); + + s = ms21 (&sv); + if (s != CONST5) + abort (); + + s = ms30 (&sv); + if (s != CONST6) + abort (); + + s = ci (sv, 5); + if (s != CONST5) + abort (); + + s = ci (sv, 2); + if (s != CONST2) + abort (); + + s = ci (sv, 15); + if (s != CONST7) + abort (); + + s = ci (sv, 28); + if (s != CONST4) + abort (); + + s = mci (&sv, 5); + if (s != CONST5) + abort (); + + s = mci (&sv, 12); + if (s != CONST4) + abort (); + + s = mci (&sv, 25); + if (s != CONST1) + abort (); + + s = mci (&sv, 16); + if (s != CONST0) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,154 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/vmx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector unsigned short s3 (vector unsigned short v, unsigned short x) + { + return vec_insert (x, v, 3); + } + + vector unsigned short s7 (vector unsigned short v, unsigned short x) + { + return vec_insert (x, v, 7); + } + + vector unsigned short s21 (vector unsigned short v, unsigned short x) + { + return vec_insert (x, v, 21); + } + + vector unsigned short s30 (vector unsigned short v, unsigned short x) + { + return vec_insert (x, v, 30); + } + + /* Test for vector residing in memory. */ + vector unsigned short ms3 (vector unsigned short *vp, unsigned short x) + { + return vec_insert (x, *vp, 3); + } + + vector unsigned short ms7 (vector unsigned short *vp, unsigned short x) + { + return vec_insert (x, *vp, 7); + } + + vector unsigned short ms21 (vector unsigned short *vp, unsigned short x) + { + return vec_insert (x, *vp, 21); + } + + vector unsigned short ms30 (vector unsigned short *vp, unsigned short x) + { + return vec_insert (x, *vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector unsigned short ci (vector unsigned short v, int i, unsigned short x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector unsigned short mci (vector unsigned short *vp, int i, unsigned short x) + { + return vec_insert (x, *vp, i); + } + + + int main (int argc, unsigned short *argv[]) { + vector unsigned short sv = { + CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; + + sv = s3 (sv, CONST1); + if (sv [3] != CONST1) + abort (); + + sv = s7 (sv, CONST2); + if (sv [7] != CONST2) + abort (); + + sv = s21 (sv, CONST3); + if (sv [5] != CONST3) + abort (); + + sv = s30 (sv, CONST4); + if (sv [6] != CONST4) + abort (); + + sv = ms3 (&sv, CONST5); + if (sv [3] != CONST5) + abort (); + + sv = ms7 (&sv, CONST6); + if (sv [7] != CONST6) + abort (); + + sv = ms21 (&sv, CONST7); + if (sv [5] != CONST7) + abort (); + + sv = ms30 (&sv, CONST0); + if (sv [6] != CONST0) + abort (); + + sv = ci (sv, 5, CONST1); + if (sv [5] != CONST1) + abort (); + + sv = ci (sv, 2, CONST3); + if (sv [2] != CONST3) + abort (); + + sv = ci (sv, 15, CONST2); + if (sv [7] != CONST2) + abort (); + + sv = ci (sv, 28, CONST5); + if (sv [4] != CONST5) + abort (); + + sv = mci (&sv, 5, CONST4); + if (sv [5] != CONST4) + abort (); + + sv = mci (&sv, 12, CONST6); + if (sv [4] != CONST6) + abort (); + + sv = mci (&sv, 25, CONST7); + if (sv [1] != CONST7) + abort (); + + sv = mci (&sv, 16, CONST4); + if (sv [0] != CONST4) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,154 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/vmx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector unsigned short s3 (vector unsigned short v, unsigned short x) + { + return vec_insert (x, v, 3); + } + + vector unsigned short s7 (vector unsigned short v, unsigned short x) + { + return vec_insert (x, v, 7); + } + + vector unsigned short s21 (vector unsigned short v, unsigned short x) + { + return vec_insert (x, v, 21); + } + + vector unsigned short s30 (vector unsigned short v, unsigned short x) + { + return vec_insert (x, v, 30); + } + + /* Test for vector residing in memory. */ + vector unsigned short ms3 (vector unsigned short *vp, unsigned short x) + { + return vec_insert (x, *vp, 3); + } + + vector unsigned short ms7 (vector unsigned short *vp, unsigned short x) + { + return vec_insert (x, *vp, 7); + } + + vector unsigned short ms21 (vector unsigned short *vp, unsigned short x) + { + return vec_insert (x, *vp, 21); + } + + vector unsigned short ms30 (vector unsigned short *vp, unsigned short x) + { + return vec_insert (x, *vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector unsigned short ci (vector unsigned short v, int i, unsigned short x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector unsigned short mci (vector unsigned short *vp, int i, unsigned short x) + { + return vec_insert (x, *vp, i); + } + + + int main (int argc, unsigned short *argv[]) { + vector unsigned short sv = { + CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; + + sv = s3 (sv, CONST1); + if (sv [3] != CONST1) + abort (); + + sv = s7 (sv, CONST2); + if (sv [7] != CONST2) + abort (); + + sv = s21 (sv, CONST3); + if (sv [5] != CONST3) + abort (); + + sv = s30 (sv, CONST4); + if (sv [6] != CONST4) + abort (); + + sv = ms3 (&sv, CONST5); + if (sv [3] != CONST5) + abort (); + + sv = ms7 (&sv, CONST6); + if (sv [7] != CONST6) + abort (); + + sv = ms21 (&sv, CONST7); + if (sv [5] != CONST7) + abort (); + + sv = ms30 (&sv, CONST0); + if (sv [6] != CONST0) + abort (); + + sv = ci (sv, 5, CONST1); + if (sv [5] != CONST1) + abort (); + + sv = ci (sv, 2, CONST3); + if (sv [2] != CONST3) + abort (); + + sv = ci (sv, 15, CONST2); + if (sv [7] != CONST2) + abort (); + + sv = ci (sv, 28, CONST5); + if (sv [4] != CONST5) + abort (); + + sv = mci (&sv, 5, CONST4); + if (sv [5] != CONST4) + abort (); + + sv = mci (&sv, 12, CONST6); + if (sv [4] != CONST6) + abort (); + + sv = mci (&sv, 25, CONST7); + if (sv [1] != CONST7) + abort (); + + sv = mci (&sv, 16, CONST4); + if (sv [0] != CONST4) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18a.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18a.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18a.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18a.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,149 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/dfp + instructions. Unsigned Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + unsigned int s3 (vector unsigned int v) + { + return __builtin_vec_extract (v, 3); + } + + unsigned int s1 (vector unsigned int v) + { + return __builtin_vec_extract (v, 1); + } + + unsigned int s21 (vector unsigned int v) + { + return __builtin_vec_extract (v, 21); + } + + unsigned int s30 (vector unsigned int v) + { + return __builtin_vec_extract (v, 30); + } + + /* Test for vector residing in memory. */ + unsigned int ms3 (vector unsigned int *vp) + { + return __builtin_vec_extract (*vp, 3); + } + + unsigned int ms1(vector unsigned int *vp) + { + return __builtin_vec_extract (*vp, 1); + } + + unsigned int ms21(vector unsigned int *vp) + { + return __builtin_vec_extract (*vp, 21); + } + + unsigned int ms30(vector unsigned int *vp) + { + return __builtin_vec_extract (*vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + unsigned int ci (vector unsigned int v, int i) + { + return __builtin_vec_extract (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + unsigned int mci(vector unsigned int *vp, int i) + { + return __builtin_vec_extract (*vp, i); + } + + + unsigned int main (int argc, unsigned char *argv[]) { + vector unsigned int sv = { CONST0, CONST1, CONST2, CONST3 }; + unsigned int s; + + s = s3 (sv); + if (s != CONST3) + abort (); + + s = s1 (sv); + if (s != CONST1) + abort (); + + s = s21 (sv); + if (s != CONST1) + abort (); + + s = s30 (sv); + if (s != CONST2) + abort (); + + s = ms3 (&sv); + if (s != CONST3) + abort (); + + s = ms1 (&sv); + if (s != CONST1) + abort (); + + s = ms21 (&sv); + if (s != CONST1) + abort (); + + s = ms30 (&sv); + if (s != CONST2) + abort (); + + s = ci (sv, 5); + if (s != CONST1) + abort (); + + s = ci (sv, 2); + if (s != CONST2) + abort (); + + s = ci (sv, 15); + if (s != CONST3) + abort (); + + s = ci (sv, 28); + if (s != CONST0) + abort (); + + s = mci (&sv, 5); + if (s != CONST1) + abort (); + + s = mci (&sv, 12); + if (s != CONST0) + abort (); + + s = mci (&sv, 25); + if (s != CONST1) + abort (); + + s = mci (&sv, 16); + if (s != CONST0) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18b.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18b.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18b.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18b.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,149 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec -O3" } */ + + /* This test should run the same on any target that supports altivec/dfp + instructions. Unsigned Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + unsigned int s3 (vector unsigned int v) + { + return __builtin_vec_extract (v, 3); + } + + unsigned int s1 (vector unsigned int v) + { + return __builtin_vec_extract (v, 1); + } + + unsigned int s21 (vector unsigned int v) + { + return __builtin_vec_extract (v, 21); + } + + unsigned int s30 (vector unsigned int v) + { + return __builtin_vec_extract (v, 30); + } + + /* Test for vector residing in memory. */ + unsigned int ms3 (vector unsigned int *vp) + { + return __builtin_vec_extract (*vp, 3); + } + + unsigned int ms1(vector unsigned int *vp) + { + return __builtin_vec_extract (*vp, 1); + } + + unsigned int ms21(vector unsigned int *vp) + { + return __builtin_vec_extract (*vp, 21); + } + + unsigned int ms30(vector unsigned int *vp) + { + return __builtin_vec_extract (*vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + unsigned int ci (vector unsigned int v, int i) + { + return __builtin_vec_extract (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + unsigned int mci(vector unsigned int *vp, int i) + { + return __builtin_vec_extract (*vp, i); + } + + + unsigned int main (int argc, unsigned char *argv[]) { + vector unsigned int sv = { CONST0, CONST1, CONST2, CONST3 }; + unsigned int s; + + s = s3 (sv); + if (s != CONST3) + abort (); + + s = s1 (sv); + if (s != CONST1) + abort (); + + s = s21 (sv); + if (s != CONST1) + abort (); + + s = s30 (sv); + if (s != CONST2) + abort (); + + s = ms3 (&sv); + if (s != CONST3) + abort (); + + s = ms1 (&sv); + if (s != CONST1) + abort (); + + s = ms21 (&sv); + if (s != CONST1) + abort (); + + s = ms30 (&sv); + if (s != CONST2) + abort (); + + s = ci (sv, 5); + if (s != CONST1) + abort (); + + s = ci (sv, 2); + if (s != CONST2) + abort (); + + s = ci (sv, 15); + if (s != CONST3) + abort (); + + s = ci (sv, 28); + if (s != CONST0) + abort (); + + s = mci (&sv, 5); + if (s != CONST1) + abort (); + + s = mci (&sv, 12); + if (s != CONST0) + abort (); + + s = mci (&sv, 25); + if (s != CONST1) + abort (); + + s = mci (&sv, 16); + if (s != CONST0) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,148 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/vmx + instructions. Unsigned Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector unsigned int s3 (vector unsigned int v, unsigned int x) + { + return vec_insert (x, v, 3); + } + + vector unsigned int s1 (vector unsigned int v, unsigned int x) + { + return vec_insert (x, v, 1); + } + + vector unsigned int s21 (vector unsigned int v, unsigned int x) + { + return vec_insert (x, v, 21); + } + + vector unsigned int s30 (vector unsigned int v, unsigned int x) + { + return vec_insert (x, v, 30); + } + + /* Test for vector residing in memory. */ + vector unsigned int ms3 (vector unsigned int *vp, unsigned int x) + { + return vec_insert (x, *vp, 3); + } + + vector unsigned int ms1(vector unsigned int *vp, unsigned int x) + { + return vec_insert (x, *vp, 1); + } + + vector unsigned int ms21(vector unsigned int *vp, unsigned int x) + { + return vec_insert (x, *vp, 21); + } + + vector unsigned int ms30(vector unsigned int *vp, unsigned int x) + { + return vec_insert (x, *vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector unsigned int ci (vector unsigned int v, int i, unsigned int x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector unsigned int mci(vector unsigned int *vp, int i, unsigned int x) + { + return vec_insert (x, *vp, i); + } + + + int main (int argc, unsigned char *argv[]) { + vector unsigned int sv = { CONST0, CONST1, CONST2, CONST3 }; + + sv = s3 (sv, CONST2); + if (sv [3] != CONST2) + abort (); + + sv = s1 (sv, CONST2); + if (sv [1] != CONST2) + abort (); + + sv = s21 (sv, CONST3); + if (sv [1] != CONST3) + abort (); + + sv = s30 (sv, CONST1); + if (sv [2] != CONST1) + abort (); + + sv = ms3 (&sv, CONST0); + if (sv [3] != CONST0) + abort (); + + sv = ms1 (&sv, CONST0); + if (sv [1] != CONST0) + abort (); + + sv = ms21 (&sv, CONST1); + if (sv [1] != CONST1) + abort (); + + sv = ms30 (&sv, CONST0); + if (sv [2] != CONST0) + abort (); + + sv = ci (sv, 5, CONST3); + if (sv [1] != CONST3) + abort (); + + sv = ci (sv, 2, CONST0); + if (sv [2] != CONST0) + abort (); + + sv = ci (sv, 15, CONST1); + if (sv [3] != CONST1) + abort (); + + sv = ci (sv, 28, CONST3); + if (sv [0] != CONST3) + abort (); + + sv = mci (&sv, 5, CONST0); + if (sv [1] != CONST0) + abort (); + + sv = mci (&sv, 12, CONST2); + if (sv [0] != CONST2) + abort (); + + sv = mci (&sv, 25, CONST3); + if (sv [1] != CONST3) + abort (); + + sv = mci (&sv, 16, CONST1); + if (sv [0] != CONST1) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,148 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec -O3" } */ + + /* This test should run the same on any target that supports altivec/vmx + instructions. Unsigned Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector unsigned int s3 (vector unsigned int v, unsigned int x) + { + return vec_insert (x, v, 3); + } + + vector unsigned int s1 (vector unsigned int v, unsigned int x) + { + return vec_insert (x, v, 1); + } + + vector unsigned int s21 (vector unsigned int v, unsigned int x) + { + return vec_insert (x, v, 21); + } + + vector unsigned int s30 (vector unsigned int v, unsigned int x) + { + return vec_insert (x, v, 30); + } + + /* Test for vector residing in memory. */ + vector unsigned int ms3 (vector unsigned int *vp, unsigned int x) + { + return vec_insert (x, *vp, 3); + } + + vector unsigned int ms1(vector unsigned int *vp, unsigned int x) + { + return vec_insert (x, *vp, 1); + } + + vector unsigned int ms21(vector unsigned int *vp, unsigned int x) + { + return vec_insert (x, *vp, 21); + } + + vector unsigned int ms30(vector unsigned int *vp, unsigned int x) + { + return vec_insert (x, *vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector unsigned int ci (vector unsigned int v, int i, unsigned int x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector unsigned int mci(vector unsigned int *vp, int i, unsigned int x) + { + return vec_insert (x, *vp, i); + } + + + int main (int argc, unsigned char *argv[]) { + vector unsigned int sv = { CONST0, CONST1, CONST2, CONST3 }; + + sv = s3 (sv, CONST2); + if (sv [3] != CONST2) + abort (); + + sv = s1 (sv, CONST2); + if (sv [1] != CONST2) + abort (); + + sv = s21 (sv, CONST3); + if (sv [1] != CONST3) + abort (); + + sv = s30 (sv, CONST1); + if (sv [2] != CONST1) + abort (); + + sv = ms3 (&sv, CONST0); + if (sv [3] != CONST0) + abort (); + + sv = ms1 (&sv, CONST0); + if (sv [1] != CONST0) + abort (); + + sv = ms21 (&sv, CONST1); + if (sv [1] != CONST1) + abort (); + + sv = ms30 (&sv, CONST0); + if (sv [2] != CONST0) + abort (); + + sv = ci (sv, 5, CONST3); + if (sv [1] != CONST3) + abort (); + + sv = ci (sv, 2, CONST0); + if (sv [2] != CONST0) + abort (); + + sv = ci (sv, 15, CONST1); + if (sv [3] != CONST1) + abort (); + + sv = ci (sv, 28, CONST3); + if (sv [0] != CONST3) + abort (); + + sv = mci (&sv, 5, CONST0); + if (sv [1] != CONST0) + abort (); + + sv = mci (&sv, 12, CONST2); + if (sv [0] != CONST2) + abort (); + + sv = mci (&sv, 25, CONST3); + if (sv [1] != CONST3) + abort (); + + sv = mci (&sv, 16, CONST1); + if (sv [0] != CONST1) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19a.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19a.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19a.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19a.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,109 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (31415926539LL) + #define CONST1 (2 * 31415926539LL) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + unsigned long long int e0 (vector unsigned long long int v) + { + return __builtin_vec_extract (v, 0); + } + + unsigned long long int e3 (vector unsigned long long int v) + { + return __builtin_vec_extract (v, 3); + } + + /* Test for vector residing in memory. */ + unsigned long long int me0 (vector unsigned long long int *vp) + { + return __builtin_vec_extract (*vp, 0); + } + + unsigned long long int me3 (vector unsigned long long int *vp) + { + return __builtin_vec_extract (*vp, 3); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + unsigned long long int ei (vector unsigned long long int v, int i) + { + return __builtin_vec_extract (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + unsigned long long int mei (vector unsigned long long int *vp, int i) + { + return __builtin_vec_extract (*vp, i); + } + + int main (int argc, char *argv[]) { + vector unsigned long long int dv = { CONST0, CONST1 }; + unsigned long long int d; + + d = e0 (dv); + if (d != CONST0) + abort (); + + d = e3 (dv); + if (d != CONST1) + abort (); + + d = me0 (&dv); + if (d != CONST0) + abort (); + + d = me3 (&dv); + if (d != CONST1) + abort (); + + d = ei (dv, 0); + if (d != CONST0) + abort (); + + d = ei (dv, 1); + if (d != CONST1) + abort (); + + d = ei (dv, 2); + if (d != CONST0) + abort (); + + d = ei (dv, 3); + if (d != CONST1) + abort (); + + d = mei (&dv, 0); + if (d != CONST0) + abort (); + + d = mei (&dv, 1); + if (d != CONST1) + abort (); + + d = mei (&dv, 2); + if (d != CONST0) + abort (); + + d = mei (&dv, 3); + if (d != CONST1) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19b.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19b.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19b.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19b.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,109 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx -O3" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (31415926539LL) + #define CONST1 (2 * 31415926539LL) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + unsigned long long int e0 (vector unsigned long long int v) + { + return __builtin_vec_extract (v, 0); + } + + unsigned long long int e3 (vector unsigned long long int v) + { + return __builtin_vec_extract (v, 3); + } + + /* Test for vector residing in memory. */ + unsigned long long int me0 (vector unsigned long long int *vp) + { + return __builtin_vec_extract (*vp, 0); + } + + unsigned long long int me3 (vector unsigned long long int *vp) + { + return __builtin_vec_extract (*vp, 3); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + unsigned long long int ei (vector unsigned long long int v, int i) + { + return __builtin_vec_extract (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + unsigned long long int mei (vector unsigned long long int *vp, int i) + { + return __builtin_vec_extract (*vp, i); + } + + int main (int argc, char *argv[]) { + vector unsigned long long int dv = { CONST0, CONST1 }; + unsigned long long int d; + + d = e0 (dv); + if (d != CONST0) + abort (); + + d = e3 (dv); + if (d != CONST1) + abort (); + + d = me0 (&dv); + if (d != CONST0) + abort (); + + d = me3 (&dv); + if (d != CONST1) + abort (); + + d = ei (dv, 0); + if (d != CONST0) + abort (); + + d = ei (dv, 1); + if (d != CONST1) + abort (); + + d = ei (dv, 2); + if (d != CONST0) + abort (); + + d = ei (dv, 3); + if (d != CONST1) + abort (); + + d = mei (&dv, 0); + if (d != CONST0) + abort (); + + d = mei (&dv, 1); + if (d != CONST1) + abort (); + + d = mei (&dv, 2); + if (d != CONST0) + abort (); + + d = mei (&dv, 3); + if (d != CONST1) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,122 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (31415926539LL) + #define CONST1 (2 * 31415926539LL) + #define CONST2 (3 * 31415926539LL) + #define CONST3 (4 * 31415926539LL) + #define CONST4 (5 * 31415926539LL) + #define CONST5 (6 * 31415926539LL) + #define CONST6 (7 * 31415926539LL) + #define CONST7 (8 * 31415926539LL) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector unsigned long long int + e0 (vector unsigned long long int v, unsigned long long int x) + { + return vec_insert (x, v, 0); + } + + vector unsigned long long int + e3 (vector unsigned long long int v, unsigned long long int x) + { + return vec_insert (x, v, 3); + } + + /* Test for vector residing in memory. */ + vector unsigned long long int + me0 (vector unsigned long long int *vp, unsigned long long int x) + { + return vec_insert (x, *vp, 0); + } + + vector unsigned long long int + me3 (vector unsigned long long int *vp, unsigned long long int x) + { + return vec_insert (x, *vp, 3); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector unsigned long long int + ei (vector unsigned long long int v, int i, unsigned long long int x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector unsigned long long int + mei (vector unsigned long long int *vp, int i, unsigned long long int x) + { + return vec_insert (x, *vp, i); + } + + int main (int argc, char *argv[]) { + vector unsigned long long int dv = { CONST0, CONST1 }; + unsigned long long int d; + + dv = e0 (dv, CONST7); + if (dv [0] != CONST7) + abort (); + + dv = e3 (dv, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = me0 (&dv, CONST4); + if (dv [0] != CONST4) + abort (); + + dv = me3 (&dv, CONST3); + if (dv [1] != CONST3) + abort (); + + dv = ei (dv, 0, CONST5); + if (dv [0] != CONST5) + abort (); + + dv = ei (dv, 1, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = ei (dv, 2, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = ei (dv, 3, CONST6); + if (dv [1] != CONST6) + abort (); + + dv = mei (&dv, 0, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 1, CONST3); + if (dv [1] != CONST3) + abort (); + + dv = mei (&dv, 2, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 3, CONST2); + if (dv [1] != CONST2) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,122 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx -O3" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (31415926539LL) + #define CONST1 (2 * 31415926539LL) + #define CONST2 (3 * 31415926539LL) + #define CONST3 (4 * 31415926539LL) + #define CONST4 (5 * 31415926539LL) + #define CONST5 (6 * 31415926539LL) + #define CONST6 (7 * 31415926539LL) + #define CONST7 (8 * 31415926539LL) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector unsigned long long int + e0 (vector unsigned long long int v, unsigned long long int x) + { + return vec_insert (x, v, 0); + } + + vector unsigned long long int + e3 (vector unsigned long long int v, unsigned long long int x) + { + return vec_insert (x, v, 3); + } + + /* Test for vector residing in memory. */ + vector unsigned long long int + me0 (vector unsigned long long int *vp, unsigned long long int x) + { + return vec_insert (x, *vp, 0); + } + + vector unsigned long long int + me3 (vector unsigned long long int *vp, unsigned long long int x) + { + return vec_insert (x, *vp, 3); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector unsigned long long int + ei (vector unsigned long long int v, int i, unsigned long long int x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector unsigned long long int + mei (vector unsigned long long int *vp, int i, unsigned long long int x) + { + return vec_insert (x, *vp, i); + } + + int main (int argc, char *argv[]) { + vector unsigned long long int dv = { CONST0, CONST1 }; + unsigned long long int d; + + dv = e0 (dv, CONST7); + if (dv [0] != CONST7) + abort (); + + dv = e3 (dv, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = me0 (&dv, CONST4); + if (dv [0] != CONST4) + abort (); + + dv = me3 (&dv, CONST3); + if (dv [1] != CONST3) + abort (); + + dv = ei (dv, 0, CONST5); + if (dv [0] != CONST5) + abort (); + + dv = ei (dv, 1, CONST2); + if (dv [1] != CONST2) + abort (); + + dv = ei (dv, 2, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = ei (dv, 3, CONST6); + if (dv [1] != CONST6) + abort (); + + dv = mei (&dv, 0, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 1, CONST3); + if (dv [1] != CONST3) + abort (); + + dv = mei (&dv, 2, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 3, CONST2); + if (dv [1] != CONST2) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c Mon May 13 21:27:29 2019 *************** *** 0 **** --- 1,115 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + /* Define this after PR89424 is addressed. */ + #define PR89424 + + extern void abort (void); + + #define CONST0 (((unsigned __int128) 31415926539) << 60) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + unsigned __int128 e0 (vector unsigned __int128 v) + { + return __builtin_vec_extract (v, 0); + } + + unsigned __int128 e3 (vector unsigned __int128 v) + { + return __builtin_vec_extract (v, 3); + } + + /* Test for vector residing in memory. */ + unsigned __int128 me0 (vector unsigned __int128 *vp) + { + return __builtin_vec_extract (*vp, 0); + } + + unsigned __int128 me3 (vector unsigned __int128 *vp) + { + return __builtin_vec_extract (*vp, 3); + } + + /* Test the same with variable indices. */ + + #ifdef PR89424 + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + unsigned __int128 ei (vector unsigned __int128 v, int i) + { + return __builtin_vec_extract (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + unsigned __int128 mei (vector unsigned __int128 *vp, int i) + { + return __builtin_vec_extract (*vp, i); + } + #endif + + int main (int argc, char *argv[]) { + vector unsigned __int128 dv = { CONST0 }; + unsigned __int128 d; + + d = e0 (dv); + if (d != CONST0) + abort (); + + d = e3 (dv); + if (d != CONST0) + abort (); + + d = me0 (&dv); + if (d != CONST0) + abort (); + + d = me3 (&dv); + if (d != CONST0) + abort (); + + #ifdef PR89424 + d = ei (dv, 0); + if (d != CONST0) + abort (); + + d = ei (dv, 1); + if (d != CONST0) + abort (); + + d = ei (dv, 2); + if (d != CONST0) + abort (); + + d = ei (dv, 3); + if (d != CONST0) + abort (); + + d = mei (&dv, 0); + if (d != CONST0) + abort (); + + d = mei (&dv, 1); + if (d != CONST0) + abort (); + + d = mei (&dv, 2); + if (d != CONST0) + abort (); + + d = mei (&dv, 3); + if (d != CONST0) + abort (); + #endif + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c Mon May 13 21:27:29 2019 *************** *** 0 **** --- 1,115 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx -O3" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + /* Define this after PR89424 is addressed. */ + #define PR89424 + + extern void abort (void); + + #define CONST0 (((unsigned __int128) 31415926539) << 60) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + unsigned __int128 e0 (vector unsigned __int128 v) + { + return __builtin_vec_extract (v, 0); + } + + unsigned __int128 e3 (vector unsigned __int128 v) + { + return __builtin_vec_extract (v, 3); + } + + /* Test for vector residing in memory. */ + unsigned __int128 me0 (vector unsigned __int128 *vp) + { + return __builtin_vec_extract (*vp, 0); + } + + unsigned __int128 me3 (vector unsigned __int128 *vp) + { + return __builtin_vec_extract (*vp, 3); + } + + /* Test the same with variable indices. */ + + #ifdef PR89424 + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + unsigned __int128 ei (vector unsigned __int128 v, int i) + { + return __builtin_vec_extract (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + unsigned __int128 mei (vector unsigned __int128 *vp, int i) + { + return __builtin_vec_extract (*vp, i); + } + #endif + + int main (int argc, char *argv[]) { + vector unsigned __int128 dv = { CONST0 }; + unsigned __int128 d; + + d = e0 (dv); + if (d != CONST0) + abort (); + + d = e3 (dv); + if (d != CONST0) + abort (); + + d = me0 (&dv); + if (d != CONST0) + abort (); + + d = me3 (&dv); + if (d != CONST0) + abort (); + + #ifdef PR89424 + d = ei (dv, 0); + if (d != CONST0) + abort (); + + d = ei (dv, 1); + if (d != CONST0) + abort (); + + d = ei (dv, 2); + if (d != CONST0) + abort (); + + d = ei (dv, 3); + if (d != CONST0) + abort (); + + d = mei (&dv, 0); + if (d != CONST0) + abort (); + + d = mei (&dv, 1); + if (d != CONST0) + abort (); + + d = mei (&dv, 2); + if (d != CONST0) + abort (); + + d = mei (&dv, 3); + if (d != CONST0) + abort (); + #endif + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,115 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (((unsigned __int128) 31415926539) << 60) + #define CONST1 (((unsigned __int128) 31415926539) << 54) + #define CONST2 (((unsigned __int128) 31415926539) << 48) + #define CONST3 (((unsigned __int128) 31415926539) << 32) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector unsigned __int128 e0 (vector unsigned __int128 v, unsigned __int128 x) + { + return vec_insert (x, v, 0); + } + + vector unsigned __int128 e3 (vector unsigned __int128 v, unsigned __int128 x) + { + return vec_insert (x, v, 3); + } + + /* Test for vector residing in memory. */ + vector unsigned __int128 + me0 (vector unsigned __int128 *vp, unsigned __int128 x) + { + return vec_insert (x, *vp, 0); + } + + vector unsigned __int128 + me3 (vector unsigned __int128 *vp, unsigned __int128 x) + { + return vec_insert (x, *vp, 3); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector unsigned __int128 + ei (vector unsigned __int128 v, int i, unsigned __int128 x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector unsigned __int128 + mei (vector unsigned __int128 *vp, int i, unsigned __int128 x) + { + return vec_insert (x, *vp, i); + } + + int main (int argc, char *argv[]) { + vector unsigned __int128 dv = { CONST0 }; + + dv = e0 (dv, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = e3 (dv, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = me0 (&dv, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = me3 (&dv, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = ei (dv, 0, CONST0); + if (dv [0] != CONST0) + abort (); + + dv = ei (dv, 1, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = ei (dv, 2, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = ei (dv, 3, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = mei (&dv, 0, CONST0); + if (dv [0] != CONST0) + abort (); + + dv = mei (&dv, 1, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 2, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = mei (&dv, 3, CONST3); + if (dv [0] != CONST3) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,115 ---- + /* { dg-do run { target int128 } } */ + /* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mvsx -O3" } */ + + /* This test should run the same on any target that supports vsx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (((unsigned __int128) 31415926539) << 60) + #define CONST1 (((unsigned __int128) 31415926539) << 54) + #define CONST2 (((unsigned __int128) 31415926539) << 48) + #define CONST3 (((unsigned __int128) 31415926539) << 32) + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector unsigned __int128 e0 (vector unsigned __int128 v, unsigned __int128 x) + { + return vec_insert (x, v, 0); + } + + vector unsigned __int128 e3 (vector unsigned __int128 v, unsigned __int128 x) + { + return vec_insert (x, v, 3); + } + + /* Test for vector residing in memory. */ + vector unsigned __int128 + me0 (vector unsigned __int128 *vp, unsigned __int128 x) + { + return vec_insert (x, *vp, 0); + } + + vector unsigned __int128 + me3 (vector unsigned __int128 *vp, unsigned __int128 x) + { + return vec_insert (x, *vp, 3); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector unsigned __int128 + ei (vector unsigned __int128 v, int i, unsigned __int128 x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector unsigned __int128 + mei (vector unsigned __int128 *vp, int i, unsigned __int128 x) + { + return vec_insert (x, *vp, i); + } + + int main (int argc, char *argv[]) { + vector unsigned __int128 dv = { CONST0 }; + + dv = e0 (dv, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = e3 (dv, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = me0 (&dv, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = me3 (&dv, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = ei (dv, 0, CONST0); + if (dv [0] != CONST0) + abort (); + + dv = ei (dv, 1, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = ei (dv, 2, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = ei (dv, 3, CONST3); + if (dv [0] != CONST3) + abort (); + + dv = mei (&dv, 0, CONST0); + if (dv [0] != CONST0) + abort (); + + dv = mei (&dv, 1, CONST1); + if (dv [0] != CONST1) + abort (); + + dv = mei (&dv, 2, CONST2); + if (dv [0] != CONST2) + abort (); + + dv = mei (&dv, 3, CONST3); + if (dv [0] != CONST3) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,164 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/dfp + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + #define CONST8 (8) + #define CONST9 (9) + #define CONSTA (10) + #define CONSTB (11) + #define CONSTC (12) + #define CONSTD (13) + #define CONSTE (14) + #define CONSTF (15) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + signed char c0 (vector signed char v) + { + return __builtin_vec_ext_v16qi (v, 0); + } + + signed char c9 (vector signed char v) + { + return __builtin_vec_ext_v16qi (v, 9); + } + + signed char c21 (vector signed char v) + { + return __builtin_vec_ext_v16qi (v, 21); + } + + signed char c30 (vector signed char v) + { + return __builtin_vec_ext_v16qi (v, 30); + } + + /* Test for vector residing in memory. */ + signed char mc0 (vector signed char *vp) + { + return __builtin_vec_ext_v16qi (*vp, 0); + } + + signed char mc9 (vector signed char *vp) + { + return __builtin_vec_ext_v16qi (*vp, 9); + } + + signed char mc21 (vector signed char *vp) + { + return __builtin_vec_ext_v16qi (*vp, 21); + } + + signed char mc30 (vector signed char *vp) + { + return __builtin_vec_ext_v16qi (*vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + signed char ci (vector signed char v, int i) + { + return __builtin_vec_ext_v16qi (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + signed char mci(vector signed char *vp, int i) { + return __builtin_vec_ext_v16qi (*vp, i); + } + + + int main (int argc, char *argv[]) { + vector signed char cv = { CONST0, CONST1, CONST2, CONST3, + CONST4, CONST5, CONST6, CONST7, + CONST8, CONST9, CONSTA, CONSTB, + CONSTC, CONSTD, CONSTE, CONSTF }; + signed char c; + + c = c0 (cv); + if (c != CONST0) + abort (); + + c = c9 (cv); + if (c != CONST9) + abort (); + + c = c21 (cv); + if (c != CONST5) + abort (); + + c = c30 (cv); + if (c != CONSTE) + abort (); + + c = mc0 (&cv); + if (c != CONST0) + abort (); + + c = mc9 (&cv); + if (c != CONST9) + abort (); + + c = mc21 (&cv); + if (c != CONST5) + abort (); + + c = mc30 (&cv); + if (c != CONSTE) + abort (); + + c = ci (cv, 8); + if (c != CONST8) + abort (); + + c = ci (cv, 13); + if (c != CONSTD) + abort (); + + c = ci (cv, 23); + if (c != CONST7) + abort (); + + c = ci (cv, 31); + if (c != CONSTF) + abort (); + + c = mci (&cv, 5); + if (c != CONST5) + abort (); + + c = mci (&cv, 12); + if (c != CONSTC) + abort (); + + c = mci (&cv, 25); + if (c != CONST9) + abort (); + + c = mci (&cv, 16); + if (c != CONST0) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c Mon Apr 22 16:09:13 2019 *************** *** 0 **** --- 1,164 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec -O3" } */ + + /* This test should run the same on any target that supports altivec/dfp + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + #define CONST8 (8) + #define CONST9 (9) + #define CONSTA (10) + #define CONSTB (11) + #define CONSTC (12) + #define CONSTD (13) + #define CONSTE (14) + #define CONSTF (15) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + signed char c0 (vector signed char v) + { + return __builtin_vec_ext_v16qi (v, 0); + } + + signed char c9 (vector signed char v) + { + return __builtin_vec_ext_v16qi (v, 9); + } + + signed char c21 (vector signed char v) + { + return __builtin_vec_ext_v16qi (v, 21); + } + + signed char c30 (vector signed char v) + { + return __builtin_vec_ext_v16qi (v, 30); + } + + /* Test for vector residing in memory. */ + signed char mc0 (vector signed char *vp) + { + return __builtin_vec_ext_v16qi (*vp, 0); + } + + signed char mc9 (vector signed char *vp) + { + return __builtin_vec_ext_v16qi (*vp, 9); + } + + signed char mc21 (vector signed char *vp) + { + return __builtin_vec_ext_v16qi (*vp, 21); + } + + signed char mc30 (vector signed char *vp) + { + return __builtin_vec_ext_v16qi (*vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + signed char ci (vector signed char v, int i) + { + return __builtin_vec_ext_v16qi (v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + signed char mci(vector signed char *vp, int i) { + return __builtin_vec_ext_v16qi (*vp, i); + } + + + int main (int argc, char *argv[]) { + vector signed char cv = { CONST0, CONST1, CONST2, CONST3, + CONST4, CONST5, CONST6, CONST7, + CONST8, CONST9, CONSTA, CONSTB, + CONSTC, CONSTD, CONSTE, CONSTF }; + signed char c; + + c = c0 (cv); + if (c != CONST0) + abort (); + + c = c9 (cv); + if (c != CONST9) + abort (); + + c = c21 (cv); + if (c != CONST5) + abort (); + + c = c30 (cv); + if (c != CONSTE) + abort (); + + c = mc0 (&cv); + if (c != CONST0) + abort (); + + c = mc9 (&cv); + if (c != CONST9) + abort (); + + c = mc21 (&cv); + if (c != CONST5) + abort (); + + c = mc30 (&cv); + if (c != CONSTE) + abort (); + + c = ci (cv, 8); + if (c != CONST8) + abort (); + + c = ci (cv, 13); + if (c != CONSTD) + abort (); + + c = ci (cv, 23); + if (c != CONST7) + abort (); + + c = ci (cv, 31); + if (c != CONSTF) + abort (); + + c = mci (&cv, 5); + if (c != CONST5) + abort (); + + c = mci (&cv, 12); + if (c != CONSTC) + abort (); + + c = mci (&cv, 25); + if (c != CONST9) + abort (); + + c = mci (&cv, 16); + if (c != CONST0) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,164 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec" } */ + + /* This test should run the same on any target that supports altivec/vmx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + #define CONST8 (8) + #define CONST9 (9) + #define CONSTA (10) + #define CONSTB (11) + #define CONSTC (12) + #define CONSTD (13) + #define CONSTE (14) + #define CONSTF (15) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector signed char c0 (vector signed char v, signed char x) + { + return vec_insert (x, v, 0); + } + + vector signed char c9 (vector signed char v, signed char x) + { + return vec_insert (x, v, 9); + } + + vector signed char c21 (vector signed char v, signed char x) + { + return vec_insert (x, v, 21); + } + + vector signed char c30 (vector signed char v, signed char x) + { + return vec_insert (x, v, 30); + } + + /* Test for vector residing in memory. */ + vector signed char mc0 (vector signed char *vp, signed char x) + { + return vec_insert (x, *vp, 0); + } + + vector signed char mc9 (vector signed char *vp, signed char x) + { + return vec_insert (x, *vp, 9); + } + + vector signed char mc21 (vector signed char *vp, signed char x) + { + return vec_insert (x, *vp, 21); + } + + vector signed char mc30 (vector signed char *vp, signed char x) + { + return vec_insert (x, *vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector signed char ci (vector signed char v, int i, signed char x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector signed char mci(vector signed char *vp, int i, signed char x) { + return vec_insert (x, *vp, i); + } + + + int main (int argc, char *argv[]) { + vector signed char cv = { CONST0, CONST1, CONST2, CONST3, + CONST4, CONST5, CONST6, CONST7, + CONST8, CONST9, CONSTA, CONSTB, + CONSTC, CONSTD, CONSTE, CONSTF }; + signed char c; + + cv = c0 (cv, CONSTF); + if (cv [0] != CONSTF) + abort (); + + cv = c9 (cv, CONST7); + if (cv [9] != CONST7) + abort (); + + cv = c21 (cv, CONSTA); + if (cv [5] != CONSTA) + abort (); + + cv = c30 (cv, CONSTC); + if (cv [14] != CONSTC) + abort (); + + cv = mc0 (&cv, CONSTB); + if (cv [0] != CONSTB) + abort (); + + cv = mc9 (&cv, CONST1); + if (cv [9] != CONST1) + abort (); + + cv = mc21 (&cv, CONST7); + if (cv [5] != CONST7) + abort (); + + cv = mc30 (&cv, CONST2); + if (cv [14] != CONST2) + abort (); + + cv = ci (cv, 8, CONST4); + if (cv [8] != CONST4) + abort (); + + cv = ci (cv, 13, CONSTB); + if (cv [13] != CONSTB) + abort (); + + cv = ci (cv, 23, CONST3); + if (cv [7] != CONST3) + abort (); + + cv = ci (cv, 31, CONST2); + if (cv [15] != CONST2) + abort (); + + cv = mci (&cv, 5, CONST1); + if (cv [5] != CONST1) + abort (); + + cv = mci (&cv, 12, CONST3); + if (cv [12] != CONST3) + abort (); + + cv = mci (&cv, 25, CONST5); + if (cv [9] != CONST5) + abort (); + + cv = mci (&cv, 16, CONSTD); + if (cv [0] != CONSTD) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c Mon May 20 20:07:12 2019 *************** *** 0 **** --- 1,164 ---- + /* { dg-do run } */ + /* { dg-require-effective-target vmx_hw } */ + /* { dg-options "-maltivec -O3" } */ + + /* This test should run the same on any target that supports altivec/vmx + instructions. Intentionally not specifying cpu in order to test + all code generation paths. */ + + #include + + extern void abort (void); + + #define CONST0 (0) + #define CONST1 (1) + #define CONST2 (2) + #define CONST3 (3) + #define CONST4 (4) + #define CONST5 (5) + #define CONST6 (6) + #define CONST7 (7) + #define CONST8 (8) + #define CONST9 (9) + #define CONSTA (10) + #define CONSTB (11) + #define CONSTC (12) + #define CONSTD (13) + #define CONSTE (14) + #define CONSTF (15) + + + /* Test that indices > length of vector are applied modulo the vector + length. */ + + /* Test for vector residing in register. */ + vector signed char c0 (vector signed char v, signed char x) + { + return vec_insert (x, v, 0); + } + + vector signed char c9 (vector signed char v, signed char x) + { + return vec_insert (x, v, 9); + } + + vector signed char c21 (vector signed char v, signed char x) + { + return vec_insert (x, v, 21); + } + + vector signed char c30 (vector signed char v, signed char x) + { + return vec_insert (x, v, 30); + } + + /* Test for vector residing in memory. */ + vector signed char mc0 (vector signed char *vp, signed char x) + { + return vec_insert (x, *vp, 0); + } + + vector signed char mc9 (vector signed char *vp, signed char x) + { + return vec_insert (x, *vp, 9); + } + + vector signed char mc21 (vector signed char *vp, signed char x) + { + return vec_insert (x, *vp, 21); + } + + vector signed char mc30 (vector signed char *vp, signed char x) + { + return vec_insert (x, *vp, 30); + } + + /* Test the same with variable indices. */ + + /* Test for variable selector and vector residing in register. */ + __attribute__((noinline)) + vector signed char ci (vector signed char v, int i, signed char x) + { + return vec_insert (x, v, i); + } + + /* Test for variable selector and vector residing in memory. */ + __attribute__((noinline)) + vector signed char mci(vector signed char *vp, int i, signed char x) { + return vec_insert (x, *vp, i); + } + + + int main (int argc, char *argv[]) { + vector signed char cv = { CONST0, CONST1, CONST2, CONST3, + CONST4, CONST5, CONST6, CONST7, + CONST8, CONST9, CONSTA, CONSTB, + CONSTC, CONSTD, CONSTE, CONSTF }; + signed char c; + + cv = c0 (cv, CONSTF); + if (cv [0] != CONSTF) + abort (); + + cv = c9 (cv, CONST7); + if (cv [9] != CONST7) + abort (); + + cv = c21 (cv, CONSTA); + if (cv [5] != CONSTA) + abort (); + + cv = c30 (cv, CONSTC); + if (cv [14] != CONSTC) + abort (); + + cv = mc0 (&cv, CONSTB); + if (cv [0] != CONSTB) + abort (); + + cv = mc9 (&cv, CONST1); + if (cv [9] != CONST1) + abort (); + + cv = mc21 (&cv, CONST7); + if (cv [5] != CONST7) + abort (); + + cv = mc30 (&cv, CONST2); + if (cv [14] != CONST2) + abort (); + + cv = ci (cv, 8, CONST4); + if (cv [8] != CONST4) + abort (); + + cv = ci (cv, 13, CONSTB); + if (cv [13] != CONSTB) + abort (); + + cv = ci (cv, 23, CONST3); + if (cv [7] != CONST3) + abort (); + + cv = ci (cv, 31, CONST2); + if (cv [15] != CONST2) + abort (); + + cv = mci (&cv, 5, CONST1); + if (cv [5] != CONST1) + abort (); + + cv = mci (&cv, 12, CONST3); + if (cv [12] != CONST3) + abort (); + + cv = mci (&cv, 25, CONST5); + if (cv [9] != CONST5) + abort (); + + cv = mci (&cv, 16, CONSTD); + if (cv [0] != CONSTD) + abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.c Thu Jul 30 20:48:17 2009 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.c Thu Jan 1 00:00:00 1970 *************** *** 1,81 **** - /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ - /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ - /* { dg-require-effective-target powerpc_vsx_ok } */ - /* { dg-options "-mvsx -O2" } */ - - #include - - void foo (vector double *out, vector double *in, vector long *p_l, vector bool long *p_b, vector unsigned char *p_uc, int *i) - { - vector double in0 = in[0]; - vector double in1 = in[1]; - vector double in2 = in[2]; - vector long inl = *p_l; - vector bool long inb = *p_b; - vector unsigned char uc = *p_uc; - - *out++ = vec_abs (in0); - *out++ = vec_add (in0, in1); - *out++ = vec_and (in0, in1); - *out++ = vec_and (in0, inb); - *out++ = vec_and (inb, in0); - *out++ = vec_andc (in0, in1); - *out++ = vec_andc (in0, inb); - *out++ = vec_andc (inb, in0); - *out++ = vec_ceil (in0); - *p_b++ = vec_cmpeq (in0, in1); - *p_b++ = vec_cmpgt (in0, in1); - *p_b++ = vec_cmpge (in0, in1); - *p_b++ = vec_cmplt (in0, in1); - *p_b++ = vec_cmple (in0, in1); - *out++ = vec_div (in0, in1); - *out++ = vec_floor (in0); - *out++ = vec_madd (in0, in1, in2); - *out++ = vec_msub (in0, in1, in2); - *out++ = vec_max (in0, in1); - *out++ = vec_min (in0, in1); - *out++ = vec_msub (in0, in1, in2); - *out++ = vec_mul (in0, in1); - *out++ = vec_nearbyint (in0); - *out++ = vec_nmadd (in0, in1, in2); - *out++ = vec_nmsub (in0, in1, in2); - *out++ = vec_nor (in0, in1); - *out++ = vec_or (in0, in1); - *out++ = vec_or (in0, inb); - *out++ = vec_or (inb, in0); - *out++ = vec_perm (in0, in1, uc); - *out++ = vec_rint (in0); - *out++ = vec_sel (in0, in1, inl); - *out++ = vec_sel (in0, in1, inb); - *out++ = vec_sub (in0, in1); - *out++ = vec_sqrt (in0); - *out++ = vec_trunc (in0); - *out++ = vec_xor (in0, in1); - *out++ = vec_xor (in0, inb); - *out++ = vec_xor (inb, in0); - - *i++ = vec_all_eq (in0, in1); - *i++ = vec_all_ge (in0, in1); - *i++ = vec_all_gt (in0, in1); - *i++ = vec_all_le (in0, in1); - *i++ = vec_all_lt (in0, in1); - *i++ = vec_all_nan (in0); - *i++ = vec_all_ne (in0, in1); - *i++ = vec_all_nge (in0, in1); - *i++ = vec_all_ngt (in0, in1); - *i++ = vec_all_nle (in0, in1); - *i++ = vec_all_nlt (in0, in1); - *i++ = vec_all_numeric (in0); - *i++ = vec_any_eq (in0, in1); - *i++ = vec_any_ge (in0, in1); - *i++ = vec_any_gt (in0, in1); - *i++ = vec_any_le (in0, in1); - *i++ = vec_any_lt (in0, in1); - *i++ = vec_any_nan (in0); - *i++ = vec_any_ne (in0, in1); - *i++ = vec_any_nge (in0, in1); - *i++ = vec_any_ngt (in0, in1); - *i++ = vec_any_nle (in0, in1); - *i++ = vec_any_nlt (in0, in1); - *i++ = vec_any_numeric (in0); - } --- 0 ---- diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.h gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.h *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.h Fri Apr 19 03:30:33 2019 *************** *** 0 **** --- 1,167 ---- + /* This test code is included into vsx-vector-6-be.c and vsx-vector-6-le.c. + The two files have the tests for the number of instructions generated for + LE versus BE. */ + + #include + + void foo (vector double *out, vector double *in, vector long *p_l, vector bool long *p_b, + vector unsigned char *p_uc, int *i, vector float *p_f, + vector bool char *outbc, vector bool int *outbi, + vector bool short *outbsi, vector int *outsi, + vector unsigned int *outui, vector signed char *outsc, + vector unsigned char *outuc) + { + vector double in0 = in[0]; + vector double in1 = in[1]; + vector double in2 = in[2]; + vector long inl = *p_l; + vector bool long inb = *p_b; + vector bool long long inbl0; + vector bool long long inbl1; + vector unsigned char uc = *p_uc; + vector float inf0; + vector float inf1; + vector float inf2; + vector char inc0; + vector char inc1; + vector bool char inbc0; + vector bool char inbc1; + vector bool short inbs0; + vector bool short inbs1; + vector bool int inbi0; + vector bool int inbi1; + vector signed short int inssi0, inssi1; + vector unsigned short int inusi0, inusi1; + vector signed int insi0, insi1; + vector unsigned int inui0, inui1; + vector unsigned char inuc0, inuc1; + + *out++ = vec_abs (in0); + *out++ = vec_add (in0, in1); + *out++ = vec_and (in0, in1); + *out++ = vec_and (in0, inb); + *out++ = vec_and (inb, in0); + *out++ = vec_andc (in0, in1); + *out++ = vec_andc (in0, inb); + *out++ = vec_andc (inb, in0); + *out++ = vec_andc (inbl0, in0); + *out++ = vec_andc (in0, inbl0); + + *out++ = vec_ceil (in0); + *p_b++ = vec_cmpeq (in0, in1); + *p_b++ = vec_cmpgt (in0, in1); + *p_b++ = vec_cmpge (in0, in1); + *p_b++ = vec_cmplt (in0, in1); + *p_b++ = vec_cmple (in0, in1); + *out++ = vec_div (in0, in1); + *out++ = vec_floor (in0); + *out++ = vec_madd (in0, in1, in2); + *out++ = vec_msub (in0, in1, in2); + *out++ = vec_max (in0, in1); + *out++ = vec_min (in0, in1); + *out++ = vec_msub (in0, in1, in2); + *out++ = vec_mul (in0, in1); + *out++ = vec_nearbyint (in0); + *out++ = vec_nmadd (in0, in1, in2); + *out++ = vec_nmsub (in0, in1, in2); + *out++ = vec_nor (in0, in1); + *out++ = vec_or (in0, in1); + *out++ = vec_or (in0, inb); + *out++ = vec_or (inb, in0); + *out++ = vec_perm (in0, in1, uc); + *out++ = vec_rint (in0); + *out++ = vec_sel (in0, in1, inl); + *out++ = vec_sel (in0, in1, inb); + *out++ = vec_sub (in0, in1); + *out++ = vec_sqrt (in0); + *out++ = vec_trunc (in0); + *out++ = vec_xor (in0, in1); + *out++ = vec_xor (in0, inb); + *out++ = vec_xor (inb, in0); + + *i++ = vec_all_eq (in0, in1); + *i++ = vec_all_ge (in0, in1); + *i++ = vec_all_gt (in0, in1); + *i++ = vec_all_le (in0, in1); + *i++ = vec_all_lt (in0, in1); + *i++ = vec_all_nan (in0); + *i++ = vec_all_ne (in0, in1); + *i++ = vec_all_nge (in0, in1); + *i++ = vec_all_ngt (in0, in1); + *i++ = vec_all_nle (in0, in1); + *i++ = vec_all_nlt (in0, in1); + *i++ = vec_all_numeric (in0); + *i++ = vec_any_eq (in0, in1); + *i++ = vec_any_ge (in0, in1); + *i++ = vec_any_gt (in0, in1); + *i++ = vec_any_le (in0, in1); + *i++ = vec_any_lt (in0, in1); + *i++ = vec_any_nan (in0); + *i++ = vec_any_ne (in0, in1); + *i++ = vec_any_nge (in0, in1); + *i++ = vec_any_ngt (in0, in1); + *i++ = vec_any_nle (in0, in1); + *i++ = vec_any_nlt (in0, in1); + *i++ = vec_any_numeric (in0); + + *p_f++ = vec_msub (inf0, inf1, inf2); + *p_f++ = vec_nmsub (inf0, inf1, inf2); + *p_f++ = vec_nmadd (inf0, inf1, inf2); + *p_f++ = vec_or (inf0, inf1); + *p_f++ = vec_trunc (inf0); + + *out++ = vec_or (inbl0, in0); + *out++ = vec_or (in0, inbl0); + + *out++ = vec_nor (in0, in1); + + *outbc++ = vec_nor (inbc0, inbc1); + *outbc++ = vec_andc (inbc0, inbc1); + *outbc++ = vec_or (inbc0, inbc1); + + *outuc++ = vec_max (inuc0, inuc1); + + *outbi++ = vec_andc (inbi0, inbi1); + *outbsi++ = vec_andc (inbs0, inbs1); + + *outbsi++ = vec_andc (inbs0, inbs1); + + *outbi++ = vec_nor (inbi0, inbi1); + *outbi++ = vec_or (inbi0, inbi1); + + *outbsi++ = vec_nor (inbs0, inbs1); + *outbsi++ = vec_or (inbs0, inbs1); + + *outsi++ = vec_msums(inssi0, inssi1, insi0); + *outui++ = vec_msums(inusi0, inusi1, inui0); + + *p_f++ = vec_nor (inf0, inf1); + + *p_f++ = vec_andc (inf0, inf1); + *p_f++ = vec_andc (inbi0, inf0); + *p_f++ = vec_andc (inf0, inbi0); + + *in++ = vec_andc (inbl0, in1); + *in++ = vec_andc (in0, inbl1); + } + + int main() + { + vector double *out; + vector double *in; + vector long *p_l; + vector bool long *p_b; + vector unsigned char *p_uc; + int *i; + vector float *p_f; + vector bool char *outbc; + vector bool int *outbi; + vector bool short *outbsi; + vector int *outsi; + vector unsigned int *outui; + vector signed char *outsc; + vector unsigned char *outuc; + + foo (out, in, p_l, p_b, p_uc, i, p_f, outbc, + outbi, outbsi, outsi, outui, outsc, outuc); + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p7.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p7.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p7.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p7.c Fri Apr 19 03:30:33 2019 *************** *** 0 **** --- 1,42 ---- + /* { dg-do compile { target { lp64 && be } } } */ + /* { dg-skip-if "" { powerpc*-*-darwin* } } */ + /* { dg-require-effective-target powerpc_vsx_ok } */ + /* { dg-options "-mvsx -O2 -mcpu=power7 -dp" } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */ + + /* Expected instruction counts for Power 7 */ + + /* { dg-final { scan-assembler-times "xvabsdp" 1 } } */ + /* { dg-final { scan-assembler-times "xvadddp" 1 } } */ + /* { dg-final { scan-assembler-times "xxlnor" 5 } } */ + /* { dg-final { scan-assembler-times {\mxvcmpeqdp\s} 1 } } */ + /* { dg-final { scan-assembler-times {\mxvcmpeqdp\.\s} 5 } } */ + /* { dg-final { scan-assembler-times {\mxvcmpgtdp\s} 2 } } */ + /* { dg-final { scan-assembler-times {\mxvcmpgtdp\.\s} 5 } } */ + /* { dg-final { scan-assembler-times {\mxvcmpgedp\s} 1 } } */ + /* { dg-final { scan-assembler-times {\mxvcmpgedp\.\s} 6 } } */ + /* { dg-final { scan-assembler-times "xvrdpim" 1 } } */ + /* { dg-final { scan-assembler-times "xvmaddadp" 1 } } */ + /* { dg-final { scan-assembler-times "xvmsubadp" 1 } } */ + /* { dg-final { scan-assembler-times "xvsubdp" 1 } } */ + /* { dg-final { scan-assembler-times "xvmaxdp" 1 } } */ + /* { dg-final { scan-assembler-times "xvmindp" 1 } } */ + /* { dg-final { scan-assembler-times "xvmuldp" 1 } } */ + /* { dg-final { scan-assembler-times "vperm" 2 } } */ + /* { dg-final { scan-assembler-times "xvrdpic" 2 } } */ + /* { dg-final { scan-assembler-times "xvsqrtdp" 1 } } */ + /* { dg-final { scan-assembler-times "xvrdpiz" 1 } } */ + /* { dg-final { scan-assembler-times "xvmsubasp" 1 } } */ + /* { dg-final { scan-assembler-times "xvnmaddasp" 1 } } */ + /* { dg-final { scan-assembler-times "xvnmaddadp" 1 } } */ + /* { dg-final { scan-assembler-times "xvnmsubadp" 1 } } */ + /* { dg-final { scan-assembler-times "vmsumshs" 2 } } */ + /* { dg-final { scan-assembler-times "xxland" 13 } } */ + /* { dg-final { scan-assembler-times "xxlxor" 2 } } */ + /* { dg-final { scan-assembler-times "xxsel" 4 } } */ + /* { dg-final { scan-assembler-times "xvrdpip" 1 } } */ + /* { dg-final { scan-assembler-times "xvdivdp" 1 } } */ + /* { dg-final { scan-assembler-times "xvrdpi" 7 } } */ + + /* Source code for the test in vsx-vector-6.h */ + #include "vsx-vector-6.h" diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p8.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p8.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p8.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p8.c Thu Apr 25 01:18:43 2019 *************** *** 0 **** --- 1,54 ---- + /* { dg-do compile { target lp64 } } */ + /* { dg-skip-if "" { powerpc*-*-darwin* } } */ + /* { dg-require-effective-target powerpc_vsx_ok } */ + /* { dg-options "-mvsx -O2 -mcpu=power8" } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + + /* Expected instruction counts for Power 8. */ + + /* { dg-final { scan-assembler-times "xvabsdp" 1 } } */ + /* { dg-final { scan-assembler-times "xvadddp" 1 } } */ + /* { dg-final { scan-assembler-times "xxlnor" 6 { target le } } } */ + /* { dg-final { scan-assembler-times "xxlnor" 5 { target be } } } */ + + /* We generate xxlor instructions for many reasons other than or'ing vector + operands or calling __builtin_vec_or(), which means we cannot rely on + their usage counts being stable. Therefore, we just ensure at least one + xxlor instruction was generated. */ + /* { dg-final { scan-assembler "xxlor" } } */ + + /* { dg-final { scan-assembler-times {\mxvcmpeqdp\s} 0 { target le } } } */ + /* { dg-final { scan-assembler-times {\mxvcmpeqdp\s} 1 { target be } } } */ + /* { dg-final { scan-assembler-times {\mxvcmpeqdp\.\s} 6 { target le } } } */ + /* { dg-final { scan-assembler-times {\mxvcmpeqdp\.\s} 5 { target be } } } */ + /* { dg-final { scan-assembler-times {\mxvcmpgtdp\s} 2 } } */ + /* { dg-final { scan-assembler-times {\mxvcmpgtdp\.\s} 5 { target le } } } */ + /* { dg-final { scan-assembler-times {\mxvcmpgtdp\.\s} 6 { target be } } } */ + /* { dg-final { scan-assembler-times {\mxvcmpgedp\s} 2 } } */ + /* { dg-final { scan-assembler-times {\mxvcmpgedp\.\s} 4 } } */ + /* { dg-final { scan-assembler-times "xvrdpim" 1 } } */ + /* { dg-final { scan-assembler-times "xvmaddadp" 1 } } */ + /* { dg-final { scan-assembler-times "xvmsubadp" 1 } } */ + /* { dg-final { scan-assembler-times "xvsubdp" 1 } } */ + /* { dg-final { scan-assembler-times "xvmaxdp" 1 } } */ + /* { dg-final { scan-assembler-times "xvmindp" 1 } } */ + /* { dg-final { scan-assembler-times "xvmuldp" 1 } } */ + /* { dg-final { scan-assembler-times "vperm" 1 } } */ + /* { dg-final { scan-assembler-times "xvrdpic" 1 } } */ + /* { dg-final { scan-assembler-times "xvsqrtdp" 1 } } */ + /* { dg-final { scan-assembler-times "xvrdpiz" 1 } } */ + /* { dg-final { scan-assembler-times "xvmsubasp" 1 } } */ + /* { dg-final { scan-assembler-times "xvnmaddasp" 1 } } */ + /* { dg-final { scan-assembler-times "xvnmaddadp" 1 } } */ + /* { dg-final { scan-assembler-times "xvnmsubadp" 1 } } */ + /* { dg-final { scan-assembler-times "vmsumshs" 1 } } */ + /* { dg-final { scan-assembler-times "xxland" 9 { target le } } } */ + /* { dg-final { scan-assembler-times "xxland" 13 { target be } } } */ + /* { dg-final { scan-assembler-times "xxlxor" 2 } } */ + /* { dg-final { scan-assembler-times "xxsel" 2 } } */ + /* { dg-final { scan-assembler-times "xvrdpip" 1 } } */ + /* { dg-final { scan-assembler-times "xvdivdp" 1 } } */ + /* { dg-final { scan-assembler-times "xvrdpi" 5 } } */ + + /* Source code for the test in vsx-vector-6.h */ + #include "vsx-vector-6.h" diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p9.c gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p9.c *** gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p9.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/powerpc/vsx-vector-6.p9.c Fri Apr 19 03:30:33 2019 *************** *** 0 **** --- 1,39 ---- + /* { dg-do compile { target lp64 } } */ + /* { dg-skip-if "" { powerpc*-*-darwin* } } */ + /* { dg-require-effective-target powerpc_p9vector_ok } */ + /* { dg-options "-mvsx -O2 -mcpu=power9" } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ + + /* Expected instruction counts for Power9. */ + + /* { dg-final { scan-assembler-times "xvabsdp" 1 } } */ + /* { dg-final { scan-assembler-times "xvadddp" 1 } } */ + /* { dg-final { scan-assembler-times "xxlnor" 5 } } */ + + /* We generate xxlor instructions for many reasons other than or'ing vector + operands or calling __builtin_vec_or(), which means we cannot rely on + their usage counts being stable. Therefore, we just ensure at least one + xxlor instruction was generated. */ + /* { dg-final { scan-assembler "xxlor" } } */ + + /* { dg-final { scan-assembler-times "xvcmpeqdp" 7 } } */ + /* { dg-final { scan-assembler-times "xvcmpgtdp" 8 } } */ + /* { dg-final { scan-assembler-times "xvcmpgedp" 7 } } */ + /* { dg-final { scan-assembler-times "xvrdpim" 1 } } */ + /* { dg-final { scan-assembler-times "xvmaddadp" 1 } } */ + /* { dg-final { scan-assembler-times "xvmsubadp" 1 } } */ + /* { dg-final { scan-assembler-times "xvsubdp" 1 } } */ + /* { dg-final { scan-assembler-times "xvmaxdp" 1 } } */ + /* { dg-final { scan-assembler-times "xvmindp" 1 } } */ + /* { dg-final { scan-assembler-times "xvmuldp" 1 } } */ + /* { dg-final { scan-assembler-times "vperm" 1 } } */ + /* { dg-final { scan-assembler-times "xvrdpic" 1 } } */ + /* { dg-final { scan-assembler-times "xvsqrtdp" 1 } } */ + /* { dg-final { scan-assembler-times "xvrdpiz" 1 } } */ + /* { dg-final { scan-assembler-times "xvmsubasp" 1 } } */ + /* { dg-final { scan-assembler-times "xvnmaddasp" 1 } } */ + /* { dg-final { scan-assembler-times "vmsumshs" 1 } } */ + /* { dg-final { scan-assembler-times "xxland" 13 } } */ + + /* Source code for the test in vsx-vector-6.h */ + #include "vsx-vector-6.h" diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c gcc-7.5.0/gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c Mon Jul 15 14:31:37 2019 *************** *** 0 **** --- 1,24 ---- + /* { dg-do run } */ + /* { dg-options "-O3 -mzarch -march=z13 --save-temps" } */ + + /* { dg-final { scan-assembler-times "veslf" 1 } } */ + + typedef __attribute__((vector_size(16))) signed int v4si; + + v4si __attribute__((noinline,noclone)) + shift_left_by_scalar (v4si in, int shift_count) + { + return in << (3 + shift_count); + } + + int + main () + { + v4si a = { 1, 2, 3, 4 }; + v4si result = shift_left_by_scalar (a, 1); + + if (result[1] != 32) + __builtin_abort (); + + return 0; + } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/s390/zvector/vec-double-1.c gcc-7.5.0/gcc/testsuite/gcc.target/s390/zvector/vec-double-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/s390/zvector/vec-double-1.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/s390/zvector/vec-double-1.c Thu Dec 13 12:07:58 2018 *************** *** 0 **** --- 1,12 ---- + /* { dg-do compile } */ + /* { dg-options "-O3 -mzarch -march=z13 -mzvector" } */ + + #include + + vector double + test (vector unsigned long long x) + { + return vec_double (x); + } + + /* { dg-final { scan-assembler-times "vcdlgb\t" 1 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/s390/zvector/vec-double-2.c gcc-7.5.0/gcc/testsuite/gcc.target/s390/zvector/vec-double-2.c *** gcc-7.4.0/gcc/testsuite/gcc.target/s390/zvector/vec-double-2.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/s390/zvector/vec-double-2.c Thu Dec 13 12:07:58 2018 *************** *** 0 **** --- 1,12 ---- + /* { dg-do compile } */ + /* { dg-options "-O3 -mzarch -march=z13 -mzvector" } */ + + #include + + vector double + test (vector long long x) + { + return vec_double (x); + } + + /* { dg-final { scan-assembler-times "vcdgb\t" 1 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/sparc/20161111-1.c gcc-7.5.0/gcc/testsuite/gcc.target/sparc/20161111-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/sparc/20161111-1.c Fri Nov 11 22:38:33 2016 --- gcc-7.5.0/gcc/testsuite/gcc.target/sparc/20161111-1.c Wed Sep 11 10:44:06 2019 *************** unsigned char ee_isdigit2(unsigned int i *** 14,17 **** return retval; } ! /* { dg-final { scan-assembler-not "and\t%" } } */ --- 14,17 ---- return retval; } ! /* { dg-final { scan-assembler-not "and\t%" { xfail *-*-* } } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c gcc-7.5.0/gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c *** gcc-7.4.0/gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c Mon Dec 7 23:18:29 2015 --- gcc-7.5.0/gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c Fri Feb 15 10:56:13 2019 *************** *** 7,13 **** /* Origin: Carlos O'Donell */ /* { dg-do run { target sparc*-*-solaris* sparc*-*-linux* sparc*-*-*bsd* } } */ ! /* { dg-options "-mstd-struct-return" } */ /* { dg-require-effective-target ilp32 } */ #include #include --- 7,13 ---- /* Origin: Carlos O'Donell */ /* { dg-do run { target sparc*-*-solaris* sparc*-*-linux* sparc*-*-*bsd* } } */ ! /* { dg-options "-mstd-struct-return -fno-pie" } */ /* { dg-require-effective-target ilp32 } */ #include #include diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/sparc/tls-ld-int16.c gcc-7.5.0/gcc/testsuite/gcc.target/sparc/tls-ld-int16.c *** gcc-7.4.0/gcc/testsuite/gcc.target/sparc/tls-ld-int16.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/sparc/tls-ld-int16.c Wed Jan 9 14:41:55 2019 *************** *** 0 **** --- 1,34 ---- + /* { dg-do compile } */ + /* { dg-options "-O2" } + /* { dg-add-options tls } */ + + #include + + __thread int16_t var1 __attribute__((tls_model("local-dynamic"))); + __thread int16_t var2 __attribute__((tls_model("local-dynamic"))); + + int16_t sum (void) + { + return var1 + var2; + } + + int32_t ext32_sum (void) + { + return (int32_t)var1 + (int32_t)var2; + } + + long ext_sum (void) + { + return (long)var1 + (long)var2; + } + + void set (int16_t i) + { + var1 = i; + var2 = i; + } + + /* { dg-final { scan-assembler-times "__tls_get_addr" 4 } } */ + /* { dg-final { scan-assembler-times "lduh\t\[^\n\]*tldo_add" 2 } } */ + /* { dg-final { scan-assembler-times "ldsh\t\[^\n\]*tldo_add" 4 } } */ + /* { dg-final { scan-assembler-times "sth\t\[^\n\]*tldo_add" 2 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/sparc/tls-ld-int32.c gcc-7.5.0/gcc/testsuite/gcc.target/sparc/tls-ld-int32.c *** gcc-7.4.0/gcc/testsuite/gcc.target/sparc/tls-ld-int32.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/sparc/tls-ld-int32.c Wed Jan 9 14:41:55 2019 *************** *** 0 **** --- 1,36 ---- + /* { dg-do compile } */ + /* { dg-options "-O2" } + /* { dg-add-options tls } */ + + #include + + __thread int32_t var1 __attribute__((tls_model("local-dynamic"))); + __thread int32_t var2 __attribute__((tls_model("local-dynamic"))); + + int32_t sum (void) + { + return var1 + var2; + } + + #if defined(__sparcv9) || defined(__arch64__) + long ext_sum (void) + { + return (long)var1 + (long)var2; + } + #else + void *addr (void) + { + return &var1; + } + #endif + + void set (int32_t i) + { + var1 = i; + var2 = i; + } + + /* { dg-final { scan-assembler-times "__tls_get_addr" 3 } } */ + /* { dg-final { scan-assembler-times "ld\t\[^\n\]*tldo_add" 2 } } */ + /* { dg-final { scan-assembler-times "ldsw\t\[^\n\]*tldo_add" 2 { target lp64 } } } */ + /* { dg-final { scan-assembler-times "st\t\[^\n\]*tldo_add" 2 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/sparc/tls-ld-int64.c gcc-7.5.0/gcc/testsuite/gcc.target/sparc/tls-ld-int64.c *** gcc-7.4.0/gcc/testsuite/gcc.target/sparc/tls-ld-int64.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/sparc/tls-ld-int64.c Wed Jan 9 14:41:55 2019 *************** *** 0 **** --- 1,24 ---- + /* { dg-do compile } */ + /* { dg-options "-O2" } + /* { dg-add-options tls } */ + /* { dg-require-effective-target lp64 } */ + + #include + + __thread int64_t var1 __attribute__((tls_model("local-dynamic"))); + __thread int64_t var2 __attribute__((tls_model("local-dynamic"))); + + int64_t sum (void) + { + return var1 + var2; + } + + void set (int64_t i) + { + var1 = i; + var2 = i; + } + + /* { dg-final { scan-assembler-times "__tls_get_addr" 2 } } */ + /* { dg-final { scan-assembler-times "ldx\t\[^\n\]*tldo_add" 2 } } */ + /* { dg-final { scan-assembler-times "stx\t\[^\n\]*tldo_add" 2 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/sparc/tls-ld-int8.c gcc-7.5.0/gcc/testsuite/gcc.target/sparc/tls-ld-int8.c *** gcc-7.4.0/gcc/testsuite/gcc.target/sparc/tls-ld-int8.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/sparc/tls-ld-int8.c Wed Jan 9 14:41:55 2019 *************** *** 0 **** --- 1,39 ---- + /* { dg-do compile } */ + /* { dg-options "-O2" } + /* { dg-add-options tls } */ + + #include + + __thread int8_t var1 __attribute__((tls_model("local-dynamic"))); + __thread int8_t var2 __attribute__((tls_model("local-dynamic"))); + + int8_t sum (void) + { + return var1 + var2; + } + + int16_t ext16_sum (void) + { + return (int16_t)var1 + (int16_t)var2; + } + + int32_t ext32_sum (void) + { + return (int32_t)var1 + (int32_t)var2; + } + + long ext_sum (void) + { + return (long)var1 + (long)var2; + } + + void set (int8_t i) + { + var1 = i; + var2 = i; + } + + /* { dg-final { scan-assembler-times "__tls_get_addr" 5 } } */ + /* { dg-final { scan-assembler-times "ldub\t\[^\n\]*tldo_add" 2 } } */ + /* { dg-final { scan-assembler-times "ldsb\t\[^\n\]*tldo_add" 6 } } */ + /* { dg-final { scan-assembler-times "stb\t\[^\n\]*tldo_add" 2 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/sparc/tls-ld-uint16.c gcc-7.5.0/gcc/testsuite/gcc.target/sparc/tls-ld-uint16.c *** gcc-7.4.0/gcc/testsuite/gcc.target/sparc/tls-ld-uint16.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/sparc/tls-ld-uint16.c Wed Jan 9 14:41:55 2019 *************** *** 0 **** --- 1,33 ---- + /* { dg-do compile } */ + /* { dg-options "-O2" } + /* { dg-add-options tls } */ + + #include + + __thread uint16_t var1 __attribute__((tls_model("local-dynamic"))); + __thread uint16_t var2 __attribute__((tls_model("local-dynamic"))); + + uint16_t sum (void) + { + return var1 + var2; + } + + uint32_t ext32_sum (void) + { + return (uint32_t)var1 + (uint32_t)var2; + } + + unsigned long ext_sum (void) + { + return (unsigned long)var1 + (unsigned long)var2; + } + + void set (uint16_t i) + { + var1 = i; + var2 = i; + } + + /* { dg-final { scan-assembler-times "__tls_get_addr" 4 } } */ + /* { dg-final { scan-assembler-times "lduh\t\[^\n\]*tldo_add" 6 } } */ + /* { dg-final { scan-assembler-times "sth\t\[^\n\]*tldo_add" 2 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/sparc/tls-ld-uint32.c gcc-7.5.0/gcc/testsuite/gcc.target/sparc/tls-ld-uint32.c *** gcc-7.4.0/gcc/testsuite/gcc.target/sparc/tls-ld-uint32.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/sparc/tls-ld-uint32.c Wed Jan 9 14:41:55 2019 *************** *** 0 **** --- 1,36 ---- + /* { dg-do compile } */ + /* { dg-options "-O2" } + /* { dg-add-options tls } */ + + #include + + __thread uint32_t var1 __attribute__((tls_model("local-dynamic"))); + __thread uint32_t var2 __attribute__((tls_model("local-dynamic"))); + + uint32_t sum (void) + { + return var1 + var2; + } + + #if defined(__sparcv9) || defined(__arch64__) + unsigned long ext_sum (void) + { + return (unsigned long)var1 + (unsigned long)var2; + } + #else + void *addr (void) + { + return &var1; + } + #endif + + void set (int32_t i) + { + var1 = i; + var2 = i; + } + + /* { dg-final { scan-assembler-times "__tls_get_addr" 3 } } */ + /* { dg-final { scan-assembler-times "ld\t\[^\n\]*tldo_add" 2 } } */ + /* { dg-final { scan-assembler-times "lduw\t\[^\n\]*tldo_add" 2 { target lp64 } } } */ + /* { dg-final { scan-assembler-times "st\t\[^\n\]*tldo_add" 2 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/sparc/tls-ld-uint8.c gcc-7.5.0/gcc/testsuite/gcc.target/sparc/tls-ld-uint8.c *** gcc-7.4.0/gcc/testsuite/gcc.target/sparc/tls-ld-uint8.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/sparc/tls-ld-uint8.c Wed Jan 9 14:41:55 2019 *************** *** 0 **** --- 1,38 ---- + /* { dg-do compile } */ + /* { dg-options "-O2" } + /* { dg-add-options tls } */ + + #include + + __thread uint8_t var1 __attribute__((tls_model("local-dynamic"))); + __thread uint8_t var2 __attribute__((tls_model("local-dynamic"))); + + uint8_t sum (void) + { + return var1 + var2; + } + + uint16_t ext16_sum (void) + { + return (uint16_t)var1 + (uint16_t)var2; + } + + uint32_t ext32_sum (void) + { + return (uint32_t)var1 + (uint32_t)var2; + } + + unsigned long ext_sum (void) + { + return (unsigned long)var1 + (unsigned long)var2; + } + + void set (uint8_t i) + { + var1 = i; + var2 = i; + } + + /* { dg-final { scan-assembler-times "__tls_get_addr" 5 } } */ + /* { dg-final { scan-assembler-times "ldub\t\[^\n\]*tldo_add" 8 } } */ + /* { dg-final { scan-assembler-times "stb\t\[^\n\]*tldo_add" 2 } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support-darwin.s gcc-7.5.0/gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support-darwin.s *** gcc-7.4.0/gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support-darwin.s Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support-darwin.s Mon Dec 24 13:41:16 2018 *************** *** 0 **** --- 1,77 ---- + .file "asm-support-darwin.s" + .text + .p2align 4,,15 + .globl _snapshot + _snapshot: + LFB3: + movq %rax, _rax(%rip) + movq %rbx, _rbx(%rip) + movq %rcx, _rcx(%rip) + movq %rdx, _rdx(%rip) + movq %rdi, _rdi(%rip) + movq %rsi, _rsi(%rip) + movq %rbp, _rbp(%rip) + movq %rsp, _rsp(%rip) + movq %r8, _r8(%rip) + movq %r9, _r9(%rip) + movq %r10, _r10(%rip) + movq %r11, _r11(%rip) + movq %r12, _r12(%rip) + movq %r13, _r13(%rip) + movq %r14, _r14(%rip) + movq %r15, _r15(%rip) + vmovdqu %ymm0, _ymm_regs+0(%rip) + vmovdqu %ymm1, _ymm_regs+32(%rip) + vmovdqu %ymm2, _ymm_regs+64(%rip) + vmovdqu %ymm3, _ymm_regs+96(%rip) + vmovdqu %ymm4, _ymm_regs+128(%rip) + vmovdqu %ymm5, _ymm_regs+160(%rip) + vmovdqu %ymm6, _ymm_regs+192(%rip) + vmovdqu %ymm7, _ymm_regs+224(%rip) + vmovdqu %ymm8, _ymm_regs+256(%rip) + vmovdqu %ymm9, _ymm_regs+288(%rip) + vmovdqu %ymm10, _ymm_regs+320(%rip) + vmovdqu %ymm11, _ymm_regs+352(%rip) + vmovdqu %ymm12, _ymm_regs+384(%rip) + vmovdqu %ymm13, _ymm_regs+416(%rip) + vmovdqu %ymm14, _ymm_regs+448(%rip) + vmovdqu %ymm15, _ymm_regs+480(%rip) + jmp *_callthis(%rip) + LFE3: + .p2align 4,,15 + .globl _snapshot_ret + _snapshot_ret: + movq %rdi, _rdi(%rip) + subq $8, %rsp + call *_callthis(%rip) + addq $8, %rsp + movq %rax, _rax(%rip) + movq %rdx, _rdx(%rip) + vmovdqu %ymm0, _ymm_regs+0(%rip) + vmovdqu %ymm1, _ymm_regs+32(%rip) + fstpt _x87_regs(%rip) + fstpt _x87_regs+16(%rip) + fldt _x87_regs+16(%rip) + fldt _x87_regs(%rip) + ret + + .comm _callthis,8,3 + .comm _rax,8,3 + .comm _rbx,8,3 + .comm _rcx,8,3 + .comm _rdx,8,3 + .comm _rsi,8,3 + .comm _rdi,8,3 + .comm _rsp,8,3 + .comm _rbp,8,3 + .comm _r8,8,3 + .comm _r9,8,3 + .comm _r10,8,3 + .comm _r11,8,3 + .comm _r12,8,3 + .comm _r13,8,3 + .comm _r14,8,3 + .comm _r15,8,3 + .comm _ymm_regs,512,5 + .comm _x87_regs,128,5 + .comm _volatile_var,8,3 diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp gcc-7.5.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp *** gcc-7.4.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp Thu Sep 5 19:19:46 2019 *************** set additional_flags "-W -Wall -mavx512f *** 37,43 **** foreach src [lsort [glob -nocomplain $srcdir/$subdir/test_*.c]] { if {[runtest_file_p $runtests $src]} { if { ([istarget *-*-darwin*]) } then { - # FIXME: Darwin isn't tested. c-torture-execute [list $src \ $srcdir/$subdir/asm-support-darwin.s] \ $additional_flags --- 37,42 ---- diff -Nrcpad gcc-7.4.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s gcc-7.5.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s *** gcc-7.4.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s Thu Sep 5 19:19:46 2019 *************** *** 0 **** --- 1,93 ---- + .text + .p2align 4,,15 + .globl _snapshot + _snapshot: + LFB3: + movq %rax, _rax(%rip) + movq %rbx, _rbx(%rip) + movq %rcx, _rcx(%rip) + movq %rdx, _rdx(%rip) + movq %rdi, _rdi(%rip) + movq %rsi, _rsi(%rip) + movq %rbp, _rbp(%rip) + movq %rsp, _rsp(%rip) + movq %r8, _r8(%rip) + movq %r9, _r9(%rip) + movq %r10, _r10(%rip) + movq %r11, _r11(%rip) + movq %r12, _r12(%rip) + movq %r13, _r13(%rip) + movq %r14, _r14(%rip) + movq %r15, _r15(%rip) + vmovdqu32 %zmm0, _zmm_regs+0(%rip) + vmovdqu32 %zmm1, _zmm_regs+64(%rip) + vmovdqu32 %zmm2, _zmm_regs+128(%rip) + vmovdqu32 %zmm3, _zmm_regs+192(%rip) + vmovdqu32 %zmm4, _zmm_regs+256(%rip) + vmovdqu32 %zmm5, _zmm_regs+320(%rip) + vmovdqu32 %zmm6, _zmm_regs+384(%rip) + vmovdqu32 %zmm7, _zmm_regs+448(%rip) + vmovdqu32 %zmm8, _zmm_regs+512(%rip) + vmovdqu32 %zmm9, _zmm_regs+576(%rip) + vmovdqu32 %zmm10, _zmm_regs+640(%rip) + vmovdqu32 %zmm11, _zmm_regs+704(%rip) + vmovdqu32 %zmm12, _zmm_regs+768(%rip) + vmovdqu32 %zmm13, _zmm_regs+832(%rip) + vmovdqu32 %zmm14, _zmm_regs+896(%rip) + vmovdqu32 %zmm15, _zmm_regs+960(%rip) + vmovdqu32 %zmm16, _zmm_regs+1024(%rip) + vmovdqu32 %zmm17, _zmm_regs+1088(%rip) + vmovdqu32 %zmm18, _zmm_regs+1152(%rip) + vmovdqu32 %zmm19, _zmm_regs+1216(%rip) + vmovdqu32 %zmm20, _zmm_regs+1280(%rip) + vmovdqu32 %zmm21, _zmm_regs+1344(%rip) + vmovdqu32 %zmm22, _zmm_regs+1408(%rip) + vmovdqu32 %zmm23, _zmm_regs+1472(%rip) + vmovdqu32 %zmm24, _zmm_regs+1536(%rip) + vmovdqu32 %zmm25, _zmm_regs+1600(%rip) + vmovdqu32 %zmm26, _zmm_regs+1664(%rip) + vmovdqu32 %zmm27, _zmm_regs+1728(%rip) + vmovdqu32 %zmm28, _zmm_regs+1792(%rip) + vmovdqu32 %zmm29, _zmm_regs+1856(%rip) + vmovdqu32 %zmm30, _zmm_regs+1920(%rip) + vmovdqu32 %zmm31, _zmm_regs+1984(%rip) + jmp *_callthis(%rip) + LFE3: + + .p2align 4,,15 + .globl _snapshot_ret + _snapshot_ret: + movq %rdi, _rdi(%rip) + subq $8, %rsp + call *_callthis(%rip) + addq $8, %rsp + movq %rax, _rax(%rip) + movq %rdx, _rdx(%rip) + vmovdqu32 %zmm0, _zmm_regs+0(%rip) + vmovdqu32 %zmm1, _zmm_regs+64(%rip) + fstpt _x87_regs(%rip) + fstpt _x87_regs+16(%rip) + fldt _x87_regs+16(%rip) + fldt _x87_regs(%rip) + ret + + .comm _callthis,8,8 + .comm _rax,8,8 + .comm _rbx,8,8 + .comm _rcx,8,8 + .comm _rdx,8,8 + .comm _rsi,8,8 + .comm _rdi,8,8 + .comm _rsp,8,8 + .comm _rbp,8,8 + .comm _r8,8,8 + .comm _r9,8,8 + .comm _r10,8,8 + .comm _r11,8,8 + .comm _r12,8,8 + .comm _r13,8,8 + .comm _r14,8,8 + .comm _r15,8,8 + .comm _zmm_regs,2048,64 + .comm _x87_regs,128,32 + .comm _volatile_var,8,8 diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/alloc_comp_assign_16.f03 gcc-7.5.0/gcc/testsuite/gfortran.dg/alloc_comp_assign_16.f03 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/alloc_comp_assign_16.f03 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/alloc_comp_assign_16.f03 Sun Feb 3 18:23:25 2019 *************** *** 0 **** --- 1,37 ---- + ! { dg-do run } + ! + ! Test the fix for PR88393 in which a segfault occurred as indicated. + ! + ! Contributed by Janus Weil + ! + module m + implicit none + type :: t + character(len=:), allocatable :: cs + contains + procedure :: ass + generic :: assignment(=) => ass + end type + contains + subroutine ass(a, b) + class(t), intent(inout) :: a + class(t), intent(in) :: b + a%cs = b%cs + print *, "ass" + end subroutine + end module + + program p + use m + implicit none + type :: t2 + type(t) :: c + end type + type(t2), dimension(1:2) :: arr + arr(1)%c%cs = "abcd" + arr(2)%c = arr(1)%c ! Segfault here. + print *, "done", arr(2)%c%cs, arr(2)%c%cs + ! Make sure with valgrind that there are no memory leaks. + deallocate (arr(1)%c%cs) + deallocate (arr(2)%c%cs) + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/altreturn_9_0.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/altreturn_9_0.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/altreturn_9_0.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/altreturn_9_0.f90 Sun Mar 3 09:20:09 2019 *************** *** 0 **** --- 1,10 ---- + ! { dg-do run } + ! { dg-options -std=gnu } + ! { dg-additional-sources altreturn_9_1.f90 } + ! PR 89496 - wrong type for alternate return was generated + + program main + call sub(10, *10, 20) + stop 1 + 10 continue + end program main diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/altreturn_9_1.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/altreturn_9_1.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/altreturn_9_1.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/altreturn_9_1.f90 Sun Mar 3 09:20:09 2019 *************** *** 0 **** --- 1,7 ---- + ! { dg-do compile } + ! { dg-options "-std=gnu" } + ! See altreturn_9_0.f90 + subroutine sub(i, *, j) + if (i == 10 .and. j == 20) return 1 + return + end subroutine sub diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/array_function_5.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/array_function_5.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/array_function_5.f90 Tue Feb 22 10:10:25 2011 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/array_function_5.f90 Sat Jan 26 15:09:52 2019 *************** *** 1,4 **** ! ! { dg-do run } ! PR41278 internal compiler error related to matmul and transpose ! Test case prepared by Jerry DeLisle ! Original test case by Chris --- 1,4 ---- ! ! { dg-do run } ! PR41278 internal compiler error related to matmul and transpose ! Test case prepared by Jerry DeLisle ! Original test case by Chris diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/associate_44.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/associate_44.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/associate_44.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/associate_44.f90 Sun Jan 27 18:53:47 2019 *************** *** 0 **** --- 1,23 ---- + ! { dg-do compile } + ! + ! Test the fix for PR56386 + ! + ! Contributed by Vladimir Fuka + ! + subroutine CustomSolidBodies + implicit none + + type inner + real :: elev + end type + + type :: outer + type(inner),dimension(0) :: PrPoints + end type + + type(outer) :: SB + + associate (Prter=>SB%PrPoints) + PrTer%elev=0 ! ICE here + end associate + end subroutine CustomSolidBodies diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/assumed_type_2.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/assumed_type_2.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/assumed_type_2.f90 Sat Oct 31 09:33:25 2015 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/assumed_type_2.f90 Sat Mar 16 14:03:00 2019 *************** end *** 157,163 **** ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) array_class_t1_alloc._data.data" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) \\(array_class_t1_ptr._data.dat" 1 "original" } } ! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(D" 3 "original" } } ! { dg-final { scan-tree-dump-times " = _gfortran_internal_pack \\(&parm" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(&array_int\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(real\\(kind=4\\).0:. . restrict\\) array_real_alloc.data" 1 "original" } } --- 157,163 ---- ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) array_class_t1_alloc._data.data" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) \\(array_class_t1_ptr._data.dat" 1 "original" } } ! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(D" 4 "original" } } ! { dg-final { scan-tree-dump-times " = _gfortran_internal_pack \\(&parm" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(&array_int\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(real\\(kind=4\\).0:. . restrict\\) array_real_alloc.data" 1 "original" } } *************** end *** 166,172 **** ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) parm" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t2.0:. . restrict\\) array_t2_alloc.data\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. . restrict\\) array_class_t1_alloc._data.data\\);" 1 "original" } } ! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) array_class_t1_ptr._data.data\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_shape \\(&array_real_alloc," 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_shape \\(&array_char_ptr," 1 "original" } } --- 166,172 ---- ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) parm" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t2.0:. . restrict\\) array_t2_alloc.data\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. . restrict\\) array_class_t1_alloc._data.data\\);" 1 "original" } } ! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) array_class_t1_ptr._data.data\\);" 0 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_shape \\(&array_real_alloc," 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_shape \\(&array_char_ptr," 1 "original" } } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_30.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/binding_label_tests_30.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_30.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/binding_label_tests_30.f90 Sat Mar 16 13:24:40 2019 *************** *** 0 **** --- 1,7 ---- + ! { dg-do compile } + ! Make sure this error is flagged. + subroutine foo() ! { dg-error "is already being used as a SUBROUTINE" } + end subroutine foo + + subroutine bar() bind(C,name="foo") ! { dg-error "is already being used as a SUBROUTINE" } + end subroutine bar diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_31.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/binding_label_tests_31.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_31.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/binding_label_tests_31.f90 Sat Mar 16 13:24:40 2019 *************** *** 0 **** --- 1,19 ---- + ! { dg-do compile } + ! PR fortran/66695 - this used to ICE. + ! Original test case by Vladimir Fuka. + module mod + implicit none + contains + integer function F() + end function + end module + + module mod_C + use mod + implicit none + contains + subroutine s() bind(C, name="f") + integer :: x + x = F() + end subroutine + end module diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_32.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/binding_label_tests_32.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_32.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/binding_label_tests_32.f90 Sat Mar 16 13:24:40 2019 *************** *** 0 **** --- 1,35 ---- + ! { dg-do run } + ! PR 77746 - this used to crash during execution. + ! Original test case by Vladimir Fuka. + module first + private + public execute + + interface execute + module procedure random_name + end interface + + contains + + subroutine random_name() + end subroutine + end module + + module test + use first + + implicit none + + contains + + subroutine p_execute(i) bind(C, name="random_name") + integer :: i + + call execute() + end subroutine + + end module + + use test + call p_execute(1) + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_33.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/binding_label_tests_33.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/binding_label_tests_33.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/binding_label_tests_33.f90 Sat Mar 16 13:24:40 2019 *************** *** 0 **** --- 1,39 ---- + ! { dg-do run } + ! PR 79485 - used to crash because the wrong routine was called. + module fmod1 + + contains + + subroutine foo(i) + implicit none + + integer, intent(inout) :: i + + i=i+1 + + end subroutine foo + + end module fmod1 + + module fmod2 + use iso_c_binding + use fmod1, only : foo_first => foo + + contains + + subroutine foo(i) bind(c) + implicit none + + integer, intent(inout) :: i + + i=i+2 + call foo_first(i) + + end subroutine foo + + end module fmod2 + + use fmod2 + + call foo(i) + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/blockdata_11.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/blockdata_11.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/blockdata_11.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/blockdata_11.f90 Sun Mar 17 12:54:29 2019 *************** *** 0 **** --- 1,33 ---- + ! { dg-do run } + ! PR 84394 - this used to complain about private procedures in + ! BLOCK data. + module mod1 + implicit none + type :: type1 + integer :: i1 + end type type1 + end module + + module mod2 + implicit none + contains + subroutine sub1 + integer vals + common /block1/ vals(5) + if (any(vals /= [1, 2, 3, 4, 5])) stop 1 + end subroutine + end module + + block data blkdat + use mod1 + integer vals + common /block1/ vals(5) + data vals/1, 2, 3, 4, 5/ + end block data blkdat + + program main + use mod2, only: sub1 + implicit none + call sub1 + end program + diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/c_funptr_1.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/c_funptr_1.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/c_funptr_1.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/c_funptr_1.f90 Sat Feb 2 16:57:39 2019 *************** *** 0 **** --- 1,38 ---- + ! { dg-do preprocess } + ! { dg-additional-options "-cpp" } + ! PR 57048 - this used not to compile. Original test case by Angelo + ! Graziosi. Only works if compiled c_funptr_1_mod.f90, hence the + ! do-nothing directive above. + module procs + + implicit none + private + + public WndProc + + contains + function WndProc() + integer :: WndProc + + WndProc = 0 + end function WndProc + end module procs + + function WinMain() + use, intrinsic :: iso_c_binding, only: C_INT,c_sizeof,c_funloc + use win32_types + use procs + implicit none + + integer :: WinMain + + type(WNDCLASSEX_T) :: WndClass + + WndClass%cbSize = int(c_sizeof(Wndclass),C_INT) + WndClass%lpfnWndProc = c_funloc(WndProc) + + WinMain = 0 + end function WinMain + + program main + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/c_funptr_1_mod.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/c_funptr_1_mod.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/c_funptr_1_mod.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/c_funptr_1_mod.f90 Sat Feb 2 16:57:39 2019 *************** *** 0 **** --- 1,16 ---- + ! { dg-do run } + ! { dg-additional-sources c_funptr_1.f90 } + ! Additional module to go with c_funptr_1.f90 + module win32_types + use, intrinsic :: iso_c_binding, only: C_INT,C_FUNPTR + implicit none + private + + public WNDCLASSEX_T + type, bind(C) :: WNDCLASSEX_T + integer(C_INT) :: cbSize + type(C_FUNPTR) :: lpfnWndProc + + end type WNDCLASSEX_T + + end module win32_types diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/c_ptr_tests_19.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/c_ptr_tests_19.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/c_ptr_tests_19.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/c_ptr_tests_19.f90 Sun Mar 10 11:26:25 2019 *************** *** 0 **** --- 1,36 ---- + ! { dg-do run } + + ! PR 71544 - this failed with some optimization options due to a + ! pointer not being marked as escaping. + + module store_cptr + use, intrinsic :: iso_c_binding + implicit none + public + type(c_ptr), save :: cptr + end module store_cptr + + subroutine init() + use, intrinsic :: iso_c_binding + implicit none + integer(c_int), pointer :: a + allocate(a) + call save_cptr(c_loc(a)) + a = 100 + end subroutine init + + subroutine save_cptr(cptr_in) + use store_cptr + implicit none + type(c_ptr), intent(in) :: cptr_in + cptr = cptr_in + end subroutine save_cptr + + program init_fails + use store_cptr + implicit none + integer(c_int), pointer :: val + call init() + call c_f_pointer(cptr,val) + if (val /= 100) stop 1 + end program init_fails diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/char_result_19.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/char_result_19.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/char_result_19.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/char_result_19.f90 Sun Oct 27 16:21:36 2019 *************** *** 0 **** --- 1,24 ---- + ! { dg-do preprocess } + ! { dg-additional-options "-cpp" } + ! + ! Test the fix for PR86248 + ! + ! Contributed by Bill Long + ! + program test + use test_module + implicit none + integer :: i + character(:), allocatable :: chr + do i = 0, 2 + chr = func_1 (i) + select case (i) + case (0) + if (chr .ne. 'el0') stop i + case (1) + if (chr .ne. 'el11') stop i + case (2) + if (chr .ne. 'el2') stop i + end select + end do + end program test diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/char_result_mod_19.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/char_result_mod_19.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/char_result_mod_19.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/char_result_mod_19.f90 Sun Oct 27 16:21:36 2019 *************** *** 0 **** --- 1,18 ---- + ! { dg-do run } + ! { dg-additional-sources char_result_19.f90 } + ! + ! Module for char_result_19.f90 + ! Tests fix for PR86248 + ! + module test_module + implicit none + public :: func_1 + private + character(len=*),dimension(0:2),parameter :: darray = (/"el0 ","el11","el2 "/) + contains + function func_1 (func_1_input) result(f) + integer, intent(in) :: func_1_input + character(len = len_trim (darray(func_1_input))) :: f + f = darray(func_1_input) + end function func_1 + end module test_module diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/charlen_17.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/charlen_17.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/charlen_17.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/charlen_17.f90 Wed Mar 13 22:15:33 2019 *************** *** 0 **** --- 1,14 ---- + ! { dg-do compile } + ! PR 87673 - used to cause errors about non-pure functions. + + module x + implicit none + contains + pure function foo() result(res) + character(len=:), allocatable :: res + allocate (character(bar()) :: res) + end function foo + pure integer function bar() + bar = 1 + end function bar + end module x diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/class_66.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/class_66.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/class_66.f90 Mon Nov 6 10:40:11 2017 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/class_66.f90 Sat Jan 26 15:09:52 2019 *************** *** 1,4 **** ! ! { dg- do run } ! ! Test the fix for PR78641 in which an ICE occured on assignment ! of a class array constructor to a derived type array. --- 1,4 ---- ! ! { dg-do run } ! ! Test the fix for PR78641 in which an ICE occured on assignment ! of a class array constructor to a derived type array. diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray/caf.exp gcc-7.5.0/gcc/testsuite/gfortran.dg/coarray/caf.exp *** gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray/caf.exp Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/coarray/caf.exp Thu Mar 21 19:31:30 2019 *************** proc dg-compile-aux-modules { args } { *** 51,61 **** global gfortran_test_path global gfortran_aux_module_flags if { [llength $args] != 2 } { ! error "dg-set-target-env-var: needs one argument" return } dg-test $gfortran_test_path/[lindex $args 1] "" $gfortran_aux_module_flags ! # cleanup-modules isn't intentionally invoked here. } # Add -latomic only where supported. Assume built-in support elsewhere. --- 51,71 ---- global gfortran_test_path global gfortran_aux_module_flags if { [llength $args] != 2 } { ! error "dg-compile-aux-modules: needs one argument" return } + + set level [info level] + if { [info procs dg-save-unknown] != [list] } { + rename dg-save-unknown dg-save-unknown-level-$level + } + dg-test $gfortran_test_path/[lindex $args 1] "" $gfortran_aux_module_flags ! # cleanup-modules is intentionally not invoked here. ! ! if { [info procs dg-save-unknown-level-$level] != [list] } { ! rename dg-save-unknown-level-$level dg-save-unknown ! } } # Add -latomic only where supported. Assume built-in support elsewhere. diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray/event_3.f08 gcc-7.5.0/gcc/testsuite/gfortran.dg/coarray/event_3.f08 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray/event_3.f08 Fri Jan 13 10:22:21 2017 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/coarray/event_3.f08 Sun Jan 27 20:53:30 2019 *************** *** 3,11 **** ! Check PR fortran/70696 is fixed. program global_event ! use iso_fortran_env , only : event_type implicit none ! type(event_type) :: x[*] call exchange contains --- 3,11 ---- ! Check PR fortran/70696 is fixed. program global_event ! use iso_fortran_env, only : event_type implicit none ! type(event_type), save :: x[*] call exchange contains diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_allocate_11.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/coarray_allocate_11.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_allocate_11.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/coarray_allocate_11.f90 Wed Mar 6 20:28:22 2019 *************** *** 0 **** --- 1,15 ---- + ! { dg-do compile } + ! { dg-additional-options -fcoarray=single } + program p + integer, allocatable :: z[:,:] + integer :: i + allocate (z[1:,*]) ! { dg-error "Bad array specification in ALLOCATE statement" } + allocate (z[:2,*]) ! { dg-error "Bad array specification in ALLOCATE statement" } + allocate (z[2:1,*]) ! { dg-error "Upper cobound is less than lower cobound" } + allocate (z[:0,*]) ! { dg-error "Bad array specification in ALLOCATE statement" } + allocate (z[0,*]) ! { dg-error "Upper cobound is less than lower cobound" } + allocate (z[1,*]) ! This is OK + allocate (z[1:1,*]) ! This is OK + allocate (z[i:i,*]) ! This is OK + allocate (z[i:i-1,*]) ! { dg-error "Upper cobound is less than lower cobound" } + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_data_1.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/coarray_data_1.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_data_1.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/coarray_data_1.f90 Sat Feb 23 11:49:47 2019 *************** *** 0 **** --- 1,11 ---- + ! { dg-do run } + ! { dg-options "-fcoarray=lib -lcaf_single " } + ! PR 71066 - this used to ICE + program p + real :: a(2,2)[*] + integer :: b(2,2)[*] + data a /4*0.0/ + data b /1234, 2345, 3456, 4567/ + if (any (a /= 0.0)) stop 1 + if (any (b /= reshape([1234, 2345, 3456, 4567],[2,2]))) stop 2 + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_lock_7.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/coarray_lock_7.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_lock_7.f90 Mon Sep 19 13:45:40 2016 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/coarray_lock_7.f90 Tue Feb 5 21:23:07 2019 *************** end *** 35,42 **** ! { dg-final { scan-tree-dump-times "_gfortran_caf_lock \\(caf_token.., 0, 0, 0B, 0B, 0B, 0\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "_gfortran_caf_unlock \\(caf_token.., 0, 0, 0B, 0B, 0\\);" 1 "original" } } ! ! { dg-final { scan-tree-dump-times "_gfortran_caf_lock \\(caf_token.., \\(3 - \\(integer\\(kind=4\\)\\) parm...dim\\\[0\\\].lbound\\) \\+ \\(integer\\(kind=4\\)\\) MAX_EXPR <\\(parm...dim\\\[0\\\].ubound - parm...dim\\\[0\\\].lbound\\) \\+ 1, 0> \\* \\(3 - \\(integer\\(kind=4\\)\\) parm...dim\\\[1\\\].lbound\\), 0, 0B, &ii, 0B, 0\\);|_gfortran_caf_lock \\(caf_token.1, \\(3 - parm...dim\\\[0\\\].lbound\\) \\+ MAX_EXPR <\\(parm...dim\\\[0\\\].ubound - parm...dim\\\[0\\\].lbound\\) \\+ 1, 0> \\* \\(3 - parm...dim\\\[1\\\].lbound\\), 0, 0B, &ii, 0B, 0\\);" 1 "original" } } ! ! { dg-final { scan-tree-dump-times "_gfortran_caf_unlock \\(caf_token.., \\(2 - \\(integer\\(kind=4\\)\\) parm...dim\\\[0\\\].lbound\\) \\+ \\(integer\\(kind=4\\)\\) MAX_EXPR <\\(parm...dim\\\[0\\\].ubound - parm...dim\\\[0\\\].lbound\\) \\+ 1, 0> \\* \\(3 - \\(integer\\(kind=4\\)\\) parm...dim\\\[1\\\].lbound\\), 0, &ii, 0B, 0\\);|_gfortran_caf_unlock \\(caf_token.., \\(2 - parm...dim\\\[0\\\].lbound\\) \\+ MAX_EXPR <\\(parm...dim\\\[0\\\].ubound - parm...dim\\\[0\\\].lbound\\) \\+ 1, 0> \\* \\(3 - parm...dim\\\[1\\\].lbound\\), 0, &ii, 0B, 0\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "_gfortran_caf_lock \\(three.token, 0, 5 - \\(integer\\(kind=4\\)\\) three.dim\\\[0\\\].lbound, &acquired.\[0-9\]+, 0B, 0B, 0\\);|_gfortran_caf_lock \\(three.token, 0, 5 - three.dim\\\[0\\\].lbound, &acquired.\[0-9\]+, 0B, 0B, 0\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "_gfortran_caf_unlock \\(three.token, 0, 8 - \\(integer\\(kind=4\\)\\) three.dim\\\[0\\\].lbound, &ii, 0B, 0\\);|_gfortran_caf_unlock \\(three.token, 0, 8 - three.dim\\\[0\\\].lbound, &ii, 0B, 0\\);" 1 "original" } } --- 35,42 ---- ! { dg-final { scan-tree-dump-times "_gfortran_caf_lock \\(caf_token.., 0, 0, 0B, 0B, 0B, 0\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "_gfortran_caf_unlock \\(caf_token.., 0, 0, 0B, 0B, 0\\);" 1 "original" } } ! ! { dg-final { scan-tree-dump-times "_gfortran_caf_lock \\(caf_token.., \\(3 - \\(integer\\(kind=4\\)\\) parm....dim\\\[0\\\].lbound\\) \\+ \\(integer\\(kind=4\\)\\) MAX_EXPR <\\(parm....dim\\\[0\\\].ubound - parm....dim\\\[0\\\].lbound\\) \\+ 1, 0> \\* \\(3 - \\(integer\\(kind=4\\)\\) parm....dim\\\[1\\\].lbound\\), 0, 0B, &ii, 0B, 0\\);|_gfortran_caf_lock \\(caf_token.1, \\(3 - parm....dim\\\[0\\\].lbound\\) \\+ MAX_EXPR <\\(parm....dim\\\[0\\\].ubound - parm....dim\\\[0\\\].lbound\\) \\+ 1, 0> \\* \\(3 - parm....dim\\\[1\\\].lbound\\), 0, 0B, &ii, 0B, 0\\);" 1 "original" } } ! ! { dg-final { scan-tree-dump-times "_gfortran_caf_unlock \\(caf_token.., \\(2 - \\(integer\\(kind=4\\)\\) parm....dim\\\[0\\\].lbound\\) \\+ \\(integer\\(kind=4\\)\\) MAX_EXPR <\\(parm....dim\\\[0\\\].ubound - parm....dim\\\[0\\\].lbound\\) \\+ 1, 0> \\* \\(3 - \\(integer\\(kind=4\\)\\) parm....dim\\\[1\\\].lbound\\), 0, &ii, 0B, 0\\);|_gfortran_caf_unlock \\(caf_token.., \\(2 - parm....dim\\\[0\\\].lbound\\) \\+ MAX_EXPR <\\(parm....dim\\\[0\\\].ubound - parm....dim\\\[0\\\].lbound\\) \\+ 1, 0> \\* \\(3 - parm....dim\\\[1\\\].lbound\\), 0, &ii, 0B, 0\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "_gfortran_caf_lock \\(three.token, 0, 5 - \\(integer\\(kind=4\\)\\) three.dim\\\[0\\\].lbound, &acquired.\[0-9\]+, 0B, 0B, 0\\);|_gfortran_caf_lock \\(three.token, 0, 5 - three.dim\\\[0\\\].lbound, &acquired.\[0-9\]+, 0B, 0B, 0\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "_gfortran_caf_unlock \\(three.token, 0, 8 - \\(integer\\(kind=4\\)\\) three.dim\\\[0\\\].lbound, &ii, 0B, 0\\);|_gfortran_caf_unlock \\(three.token, 0, 8 - three.dim\\\[0\\\].lbound, &ii, 0B, 0\\);" 1 "original" } } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/debug/pr35154-stabs.f gcc-7.5.0/gcc/testsuite/gfortran.dg/debug/pr35154-stabs.f *** gcc-7.4.0/gcc/testsuite/gfortran.dg/debug/pr35154-stabs.f Tue Oct 23 17:20:56 2012 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/debug/pr35154-stabs.f Sat Jan 26 15:09:52 2019 *************** *** 1,7 **** C Test program for common block debugging. G. Helffrich 11 July 2004. C { dg-do compile } C { dg-skip-if "No stabs" { aarch64*-*-* mmix-*-* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks* } { "*" } { "" } } ! C { dg-skip-if "No stabs" {*-*-* } { "*" } { "-gstabs" } } common i,j common /label/l,m i = 1 --- 1,7 ---- C Test program for common block debugging. G. Helffrich 11 July 2004. C { dg-do compile } C { dg-skip-if "No stabs" { aarch64*-*-* mmix-*-* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks* } { "*" } { "" } } ! C { dg-skip-if "No stabs" { *-*-* } { "*" } { "-gstabs" } } common i,j common /label/l,m i = 1 diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/dec_structure_12.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/dec_structure_12.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/dec_structure_12.f90 Tue Aug 23 19:33:46 2016 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/dec_structure_12.f90 Sat Jan 26 15:09:52 2019 *************** *** 1,4 **** ! ! { dg-do "compile" } ! { dg-options "-fdec-structure" } ! ! Test a regression where multiple anonymous structures failed to --- 1,4 ---- ! ! { dg-do compile } ! { dg-options "-fdec-structure" } ! ! Test a regression where multiple anonymous structures failed to diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/dec_structure_14.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/dec_structure_14.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/dec_structure_14.f90 Wed Sep 14 12:13:03 2016 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/dec_structure_14.f90 Sat Jan 26 15:09:52 2019 *************** *** 1,4 **** ! ! { dg-do "compile" } ! { dg-options "-fdec-structure" } ! ! Test that structures inside a common block do not require the --- 1,4 ---- ! ! { dg-do compile } ! { dg-options "-fdec-structure" } ! ! Test that structures inside a common block do not require the diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/dec_structure_15.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/dec_structure_15.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/dec_structure_15.f90 Fri Sep 23 13:31:37 2016 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/dec_structure_15.f90 Sat Jan 26 15:09:52 2019 *************** *** 1,4 **** ! ! { dg-do "compile" } ! { dg-options "" } ! ! PR fortran/77584 --- 1,4 ---- ! ! { dg-do compile } ! { dg-options "" } ! ! PR fortran/77584 diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/deferred_character_32.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/deferred_character_32.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/deferred_character_32.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/deferred_character_32.f90 Sat Feb 23 18:44:54 2019 *************** *** 0 **** --- 1,13 ---- + ! { dg-do run } + ! + ! Test the fix for PR88117. + ! + ! Contributed by Gerhard Steinmetz + ! + program p + character(:), pointer :: z(:) + allocate (z, source = ['abcd', 'bcde']) + z = (z) ! gimplifier choked here. + if (any (z .ne. ['abcd', 'bcde'])) stop 1 + deallocate (z) + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/dependency_53.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/dependency_53.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/dependency_53.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/dependency_53.f90 Sat Mar 16 14:03:00 2019 *************** *** 0 **** --- 1,25 ---- + ! { dg-do run } + ! PR fortran/66089 - used to ICE and, after that ICE was fixed, + ! gave wrong results. + type :: t + integer :: c + end type t + + class(t), dimension(:), allocatable :: b,c + + allocate (b(5), source=t(7)) + allocate(c(5), source=t(13)) + c = plus(c(1), b) + if (any(c%c /= 20)) stop 1 + c = t(13) + c = plus(b, c(1)) + if (any(c%c /= 20)) stop 2 + contains + + elemental function plus(lhs, rhs) + class(t), intent(in) :: lhs, rhs + type(t) :: plus + plus%c = lhs%c + rhs%c + end function plus + + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/dg.exp gcc-7.5.0/gcc/testsuite/gfortran.dg/dg.exp *** gcc-7.4.0/gcc/testsuite/gfortran.dg/dg.exp Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/dg.exp Thu Mar 21 19:31:30 2019 *************** proc dg-compile-aux-modules { args } { *** 36,42 **** global gfortran_test_path global gfortran_aux_module_flags if { [llength $args] != 2 } { ! error "dg-set-target-env-var: needs one argument" return } --- 36,42 ---- global gfortran_test_path global gfortran_aux_module_flags if { [llength $args] != 2 } { ! error "dg-compile-aux-modules: needs one argument" return } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/extends_11.f03 gcc-7.5.0/gcc/testsuite/gfortran.dg/extends_11.f03 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/extends_11.f03 Fri May 29 08:20:29 2015 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/extends_11.f03 Sat Jan 26 15:09:52 2019 *************** *** 37,40 **** recruit%service%education%person%ss = 9 end ! ! { dg-final { scan-tree-dump-times " +recruit\\.service\\.education\\.person\\.ss =" 8 "original"} } --- 37,40 ---- recruit%service%education%person%ss = 9 end ! ! { dg-final { scan-tree-dump-times " +recruit\\.service\\.education\\.person\\.ss =" 8 "original" } } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/finalize_28.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/finalize_28.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/finalize_28.f90 Sun Nov 5 16:56:14 2017 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/finalize_28.f90 Sun Apr 14 12:27:44 2019 *************** contains *** 21,24 **** integer, intent(out) :: edges(:,:) end subroutine coo_dump_edges end module coo_graphs ! ! { dg-final { scan-tree-dump-times "__builtin_free" 6 "original" } } --- 21,24 ---- integer, intent(out) :: edges(:,:) end subroutine coo_dump_edges end module coo_graphs ! ! { dg-final { scan-tree-dump-times "__builtin_free" 5 "original" } } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/finalize_34.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/finalize_34.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/finalize_34.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/finalize_34.f90 Sun Apr 14 12:27:44 2019 *************** *** 0 **** --- 1,25 ---- + ! { dg-do compile } + ! { dg-additional-options "-fdump-tree-original" } + ! PR 87352 - this used to cause an excessive number of deallocations. + module testmodule + implicit none + public + + type :: evtlist_type + real, allocatable, dimension(:) :: p1 + real, allocatable, dimension(:) :: p2 + real, allocatable, dimension(:) :: p3 + real, allocatable, dimension(:) :: p4 + end type evtlist_type + + type :: evtlistlist_type + type(evtlist_type) :: evtlist(1:1) + end type evtlistlist_type + + end module testmodule + + program main + use testmodule + type(evtlist_type), dimension(10) :: a + end program main + ! { dg-final { scan-tree-dump-times "__builtin_free" 8 "original" } } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/pr88377.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/gomp/pr88377.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/pr88377.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/gomp/pr88377.f90 Fri Aug 30 11:18:41 2019 *************** *** 0 **** --- 1,15 ---- + ! PR fortran/88377 + ! { dg-do compile } + + program pr88377 + call s(3) + contains + subroutine s(n) + integer :: n + character(n), allocatable :: x + x = 'abc' + !$omp task + print *, x, (x == 'abc') + !$omp end task + end + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/pr89621.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/gomp/pr89621.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/pr89621.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/gomp/pr89621.f90 Fri Aug 30 12:33:00 2019 *************** *** 0 **** --- 1,18 ---- + ! PR middle-end/89621 + ! { dg-do compile } + + subroutine sub(str) + character(*), intent(in) :: str + end subroutine sub + + program pr89621 + implicit none + integer i + character(len=:), allocatable :: str + str = "test" + !$omp parallel do + do i = 1, 10 + call sub(str) + enddo + !$omp end parallel do + end program pr89621 diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/pr89651.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/gomp/pr89651.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/pr89651.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/gomp/pr89651.f90 Fri Aug 30 12:15:50 2019 *************** *** 0 **** --- 1,21 ---- + ! PR fortran/89651 + ! { dg-do compile } + ! { dg-additional-options "-Wuninitialized" } + + program pr89651 + integer :: n + real, allocatable :: t(:) + n = 10 + allocate (t(n), source = 0.0) + !$omp parallel firstprivate(t) + print *, sum (t) ! { dg-bogus "lbound' may be used uninitialized in this function" } + ! { dg-bogus "ubound' may be used uninitialized in this function" "" { target *-*-* } .-1 } + ! { dg-bogus "offset' may be used uninitialized in this function" "" { target *-*-* } .-2 } + !$omp end parallel + !$omp parallel private(t) + t = 0.0 + print *, sum (t) ! { dg-bogus "lbound' may be used uninitialized in this function" } + ! { dg-bogus "ubound' may be used uninitialized in this function" "" { target *-*-* } .-1 } + ! { dg-bogus "offset' may be used uninitialized in this function" "" { target *-*-* } .-2 } + !$omp end parallel + end program pr89651 diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/schedule-modifiers-1.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/gomp/schedule-modifiers-1.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/schedule-modifiers-1.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/gomp/schedule-modifiers-1.f90 Fri Aug 30 11:09:22 2019 *************** *** 0 **** --- 1,63 ---- + ! { dg-do compile } + ! { dg-options "-fopenmp" } + + subroutine foo + integer :: i + !$omp do simd schedule (simd, simd: static, 5) + do i = 0, 64 + end do + !$omp do simd schedule (monotonic, simd: static) + do i = 0, 64 + end do + !$omp do simd schedule (simd , monotonic : static, 6) + do i = 0, 64 + end do + !$omp do schedule (monotonic, monotonic : static, 7) + do i = 0, 64 + end do + !$omp do schedule (nonmonotonic, nonmonotonic : dynamic) + do i = 0, 64 + end do + !$omp do simd schedule (nonmonotonic , simd : dynamic, 3) + do i = 0, 64 + end do + !$omp do simd schedule (nonmonotonic,simd:guided,4) + do i = 0, 64 + end do + !$omp do schedule (monotonic: static, 2) + do i = 0, 64 + end do + !$omp do schedule (monotonic : static) + do i = 0, 64 + end do + !$omp do schedule (monotonic : dynamic) + do i = 0, 64 + end do + !$omp do schedule (monotonic : dynamic, 3) + do i = 0, 64 + end do + !$omp do schedule (monotonic : guided) + do i = 0, 64 + end do + !$omp do schedule (monotonic : guided, 7) + do i = 0, 64 + end do + !$omp do schedule (monotonic : runtime) + do i = 0, 64 + end do + !$omp do schedule (monotonic : auto) + do i = 0, 64 + end do + !$omp do schedule (nonmonotonic : dynamic) + do i = 0, 64 + end do + !$omp do schedule (nonmonotonic : dynamic, 3) + do i = 0, 64 + end do + !$omp do schedule (nonmonotonic : guided) + do i = 0, 64 + end do + !$omp do schedule (nonmonotonic : guided, 7) + do i = 0, 64 + end do + end subroutine foo diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/schedule-modifiers-2.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/gomp/schedule-modifiers-2.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/schedule-modifiers-2.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/gomp/schedule-modifiers-2.f90 Fri Aug 30 11:09:22 2019 *************** *** 0 **** --- 1,44 ---- + ! { dg-do compile } + ! { dg-options "-fopenmp" } + + subroutine foo + integer :: i + !$omp do schedule (nonmonotonic: static, 2) ! { dg-error "NONMONOTONIC modifier specified for STATIC schedule kind" } + do i = 0, 64 + end do + !$omp do schedule (nonmonotonic : static) ! { dg-error "NONMONOTONIC modifier specified for STATIC schedule kind" } + do i = 0, 64 + end do + !$omp do schedule (nonmonotonic : runtime) ! { dg-error "NONMONOTONIC modifier specified for RUNTIME schedule kind" } + do i = 0, 64 + end do + !$omp do schedule (nonmonotonic : auto) ! { dg-error "NONMONOTONIC modifier specified for AUTO schedule kind" } + do i = 0, 64 + end do + !$omp do schedule (nonmonotonic : dynamic) ordered ! { dg-error "NONMONOTONIC schedule modifier specified with ORDERED clause" } + do i = 0, 64 + !$omp ordered + !$omp end ordered + end do + !$omp do ordered schedule(nonmonotonic : dynamic, 5) ! { dg-error "NONMONOTONIC schedule modifier specified with ORDERED clause" } + do i = 0, 64 + !$omp ordered + !$omp end ordered + end do + !$omp do schedule (nonmonotonic : guided) ordered(1) ! { dg-error "NONMONOTONIC schedule modifier specified with ORDERED clause" } + do i = 0, 64 + !$omp ordered depend(sink: i - 1) + !$omp ordered depend(source) + end do + !$omp do ordered(1) schedule(nonmonotonic : guided, 2) ! { dg-error "NONMONOTONIC schedule modifier specified with ORDERED clause" } + do i = 0, 64 + !$omp ordered depend(source) + !$ordered depend(sink: i - 1) + end do + !$omp do schedule (nonmonotonic , monotonic : dynamic) ! { dg-error "Both MONOTONIC and NONMONOTONIC schedule modifiers specified" } + do i = 0, 64 + end do + !$omp do schedule (monotonic,nonmonotonic:dynamic) ! { dg-error "Both MONOTONIC and NONMONOTONIC schedule modifiers specified" } + do i = 0, 64 + end do + end subroutine foo diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/ieee/ieee.exp gcc-7.5.0/gcc/testsuite/gfortran.dg/ieee/ieee.exp *** gcc-7.4.0/gcc/testsuite/gfortran.dg/ieee/ieee.exp Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/ieee/ieee.exp Thu Mar 21 18:57:56 2019 *************** *** 22,36 **** load_lib gfortran-dg.exp load_lib target-supports.exp ! # Initialize `dg'. ! dg-init ! ! # Flags specified in each test global DEFAULT_FFLAGS if ![info exists DEFAULT_FFLAGS] then { ! set DEFAULT_FFLAGS "" } # Flags for finding the IEEE modules if [info exists TOOL_OPTIONS] { set specpath [get_multilibs ${TOOL_OPTIONS}] --- 22,36 ---- load_lib gfortran-dg.exp load_lib target-supports.exp ! # If a testcase doesn't have special options, use these. global DEFAULT_FFLAGS if ![info exists DEFAULT_FFLAGS] then { ! set DEFAULT_FFLAGS " -pedantic-errors" } + # Initialize `dg'. + dg-init + # Flags for finding the IEEE modules if [info exists TOOL_OPTIONS] { set specpath [get_multilibs ${TOOL_OPTIONS}] diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/interface_abstract_5.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/interface_abstract_5.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/interface_abstract_5.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/interface_abstract_5.f90 Mon Mar 25 19:58:04 2019 *************** *** 0 **** --- 1,32 ---- + ! { dg-do compile } + ! + ! PR 71861: [7/8/9 Regression] [F03] ICE in write_symbol(): bad module symbol + ! + ! Contributed by Gerhard Steinmetz + + module m1 + intrinsic abs + abstract interface + function abs(x) ! { dg-error "ABSTRACT attribute conflicts with INTRINSIC attribute" } + real :: abs, x + end + end interface + end + + module m2 + abstract interface + function abs(x) + real :: abs, x + end + end interface + intrinsic abs ! { dg-error "ABSTRACT attribute conflicts with INTRINSIC attribute" } + end + + module m3 + abstract interface + function f(x) + real :: f, x + end + end interface + intrinsic f ! { dg-error "ABSTRACT attribute conflicts with INTRINSIC attribute" } + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90 Wed Oct 28 13:28:32 2009 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90 Sun Mar 3 09:20:09 2019 *************** *** 1,5 **** ! { dg-lto-do link } ! ! { dg-extra-ld-options "-r -nostdlib -finline-functions" } SUBROUTINE int_gen_ti_header_char( hdrbuf, hdrbufsize, itypesize, & DataHandle, Element, VarName, Data, code ) --- 1,5 ---- ! { dg-lto-do link } ! ! { dg-extra-ld-options "-r -nostdlib -finline-functions -Wno-lto-type-mismatch" } SUBROUTINE int_gen_ti_header_char( hdrbuf, hdrbufsize, itypesize, & DataHandle, Element, VarName, Data, code ) diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90 Wed Oct 28 13:28:32 2009 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90 Sun Mar 3 09:20:09 2019 *************** *** 1,5 **** ! { dg-lto-do link } ! ! { dg-extra-ld-options "-r -nostdlib -finline-functions" } SUBROUTINE int_gen_ti_header_char( hdrbuf, hdrbufsize, itypesize, & DataHandle, Element, VarName, Data, code ) --- 1,5 ---- ! { dg-lto-do link } ! ! { dg-extra-ld-options "-r -nostdlib -finline-functions -Wno-lto-type-mismatch" } SUBROUTINE int_gen_ti_header_char( hdrbuf, hdrbufsize, itypesize, & DataHandle, Element, VarName, Data, code ) diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/lto/pr87689_0.f gcc-7.5.0/gcc/testsuite/gfortran.dg/lto/pr87689_0.f *** gcc-7.4.0/gcc/testsuite/gfortran.dg/lto/pr87689_0.f Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/lto/pr87689_0.f Sun Mar 3 09:20:09 2019 *************** *** 0 **** --- 1,13 ---- + ! { dg-lto-run } + ! PR 87689 - this used to fail for POWER, plus it used to + ! give warnings about mismatches with LTO. + ! Original test case by Judicaël Grasset. + program main + implicit none + character :: c + character(len=20) :: res, doesntwork_p8 + external doesntwork_p8 + c = 'o' + res = doesntwork_p8(c,1,2,3,4,5,6) + if (res /= 'foo') stop 3 + end program main diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/lto/pr87689_1.f gcc-7.5.0/gcc/testsuite/gfortran.dg/lto/pr87689_1.f *** gcc-7.4.0/gcc/testsuite/gfortran.dg/lto/pr87689_1.f Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/lto/pr87689_1.f Sun Mar 3 09:20:09 2019 *************** *** 0 **** --- 1,11 ---- + function doesntwork_p8(c,a1,a2,a3,a4,a5,a6) + implicit none + character(len=20) :: doesntwork_p8 + character :: c + integer :: a1,a2,a3,a4,a5,a6 + if (a1 /= 1 .or. a2 /= 2 .or. a3 /= 3 .or. a4 /= 4 .or. a5 /= 5 + & .or. a6 /= 6) stop 1 + if (c /= 'o ') stop 2 + doesntwork_p8 = 'foo' + return + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/lto/pr89084_0.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/lto/pr89084_0.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/lto/pr89084_0.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/lto/pr89084_0.f90 Fri Aug 30 11:36:10 2019 *************** *** 0 **** --- 1,24 ---- + ! PR fortran/89084 + ! { dg-lto-do link } + ! { dg-lto-options {{ -O0 -flto }} } + + integer function foo () + write (*,*) 'foo' + block + integer, parameter :: idxs(3) = (/ 1, 2, 3 /) + integer :: i + foo = 0 + do i = 1, size(idxs) + foo = foo + idxs(i) + enddo + end block + end function foo + program pr89084 + integer :: i + interface + integer function foo () + end function + end interface + i = foo () + if (i.ne.6) stop 1 + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/no_arg_check_2.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/no_arg_check_2.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/no_arg_check_2.f90 Sat Oct 31 09:33:25 2015 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/no_arg_check_2.f90 Sat Mar 16 14:03:00 2019 *************** end *** 139,145 **** ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) array_class_t1_alloc._data.data" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) \\(array_class_t1_ptr._data.dat" 1 "original" } } ! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(D" 3 "original" } } ! { dg-final { scan-tree-dump-times " = _gfortran_internal_pack \\(&parm" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(&array_int\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(real\\(kind=4\\).0:. . restrict\\) array_real_alloc.data" 1 "original" } } --- 139,145 ---- ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) array_class_t1_alloc._data.data" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) \\(array_class_t1_ptr._data.dat" 1 "original" } } ! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(D" 4 "original" } } ! { dg-final { scan-tree-dump-times " = _gfortran_internal_pack \\(&parm" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(&array_int\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(real\\(kind=4\\).0:. . restrict\\) array_real_alloc.data" 1 "original" } } *************** end *** 148,152 **** ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) parm" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t2.0:. . restrict\\) array_t2_alloc.data\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. . restrict\\) array_class_t1_alloc._data.data\\);" 1 "original" } } ! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) array_class_t1_ptr._data.data\\);" 1 "original" } } --- 148,152 ---- ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) parm" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t2.0:. . restrict\\) array_t2_alloc.data\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. . restrict\\) array_class_t1_alloc._data.data\\);" 1 "original" } } ! ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) array_class_t1_ptr._data.data\\);" 0 "original" } } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/null_10.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/null_10.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/null_10.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/null_10.f90 Sat Feb 9 20:09:56 2019 *************** *** 0 **** --- 1,7 ---- + ! { dg-do compile } + ! PR 71860 - this used to ICE + ! Original test case by Gerhard Steinmetz + program p + class(*), pointer :: z + z => null(z) + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pointer_init_2.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pointer_init_2.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pointer_init_2.f90 Mon Jan 7 18:30:11 2013 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pointer_init_2.f90 Sun Feb 10 18:41:03 2019 *************** subroutine sub *** 18,24 **** integer, pointer :: dp0 => 13 ! { dg-error "Error in pointer initialization" } integer, pointer :: dp1 => r ! { dg-error "Different types in pointer assignment" } integer, pointer :: dp2 => v ! { dg-error "Different ranks in pointer assignment" } ! integer, pointer :: dp3 => i ! { dg-error "is neither TARGET nor POINTER" } integer, pointer :: dp4 => j ! { dg-error "must have the SAVE attribute" } integer, pointer :: dp5 => a ! { dg-error "must not be ALLOCATABLE" } --- 18,24 ---- integer, pointer :: dp0 => 13 ! { dg-error "Error in pointer initialization" } integer, pointer :: dp1 => r ! { dg-error "Different types in pointer assignment" } integer, pointer :: dp2 => v ! { dg-error "Different ranks in pointer assignment" } ! integer, pointer :: dp3 => i ! { dg-error "Pointer assignment target in initialization expression does not have the TARGET attribute" } integer, pointer :: dp4 => j ! { dg-error "must have the SAVE attribute" } integer, pointer :: dp5 => a ! { dg-error "must not be ALLOCATABLE" } *************** subroutine sub *** 35,41 **** end type t3 type t4 ! integer, pointer :: dpc3 => i ! { dg-error "Pointer assignment target is neither TARGET nor POINTER" } end type t4 type t5 --- 35,41 ---- end type t3 type t4 ! integer, pointer :: dpc3 => i ! { dg-error "Pointer assignment target in initialization expression does not have the TARGET attribute" } end type t4 type t5 diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pointer_init_6.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pointer_init_6.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pointer_init_6.f90 Fri Jan 16 12:49:46 2015 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pointer_init_6.f90 Sun Feb 10 18:41:03 2019 *************** module m1 *** 13,19 **** integer, target :: i type(t), target :: x integer, pointer :: p1 => i ! integer, pointer :: p2 => p1 ! { dg-error "must have the TARGET attribute" } integer, pointer :: p3 => x%p ! { dg-error "must have the TARGET attribute" } integer, pointer :: p4 => x%i integer, pointer :: p5 => u ! { dg-error "has no IMPLICIT type" } --- 13,19 ---- integer, target :: i type(t), target :: x integer, pointer :: p1 => i ! integer, pointer :: p2 => p1 ! { dg-error "Pointer assignment target in initialization expression does not have the TARGET attribute at" } integer, pointer :: p3 => x%p ! { dg-error "must have the TARGET attribute" } integer, pointer :: p4 => x%i integer, pointer :: p5 => u ! { dg-error "has no IMPLICIT type" } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pointer_init_9.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pointer_init_9.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pointer_init_9.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pointer_init_9.f90 Sun Feb 10 18:41:03 2019 *************** *** 0 **** --- 1,13 ---- + ! { dg-do compile } + ! PR 71237 - this used to ICE. + module data_mod + implicit none + + type data_t + integer :: i + end type + + type(data_t), pointer :: data + integer, pointer :: idata => data%i ! { dg-error "Pointer assignment target in initialization expression does not have the TARGET attribute" } + + end module diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/power_7.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/power_7.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/power_7.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/power_7.f90 Sat Dec 22 20:16:22 2018 *************** *** 0 **** --- 1,27 ---- + ! { dg-do run } + ! { dg-additional-options "-fdump-tree-original" } + ! PR 85544 - this used to ICE. + program p + integer, parameter :: na = -3, ne = 10 + integer :: i, a(na:ne), b(na:ne) + integer :: v + a = [(i, i=na, ne)] + b = [2**a] + if (any (b /= [0,0,0,1,2,4,8,16,32,64,128,256,512,1024])) stop 1 + b = [1**a] + if (any (b /= 1)) stop 2 + b = [(-1)**a] + if (any (b /= [-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1]) )stop 3 + b = [8**a] + if (any (b /= [0,0,0,1,8,64,512,4096,32768,262144,2097152,16777216,& + 134217728,1073741824])) stop 4 + b = [4**a] + if (any (b /= [0,0,0,1,4,16,64,256,1024,4096,16384,65536,262144,1048576])) stop 5 + + v = 1 + do i=1,6 + v = v * 16 + if (v /= 16**i) stop 6 + end do + end program p + ! { dg-final { scan-tree-dump-not "_gfortran_pow" "original" } } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr35031.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr35031.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr35031.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr35031.f90 Sat Jan 12 00:33:01 2019 *************** *** 0 **** --- 1,10 ---- + ! { dg-do compile } + elemental subroutine sub2(x) + integer, intent(in) :: x + entry sub2_c(x) bind(c) ! { dg-error "prohibited in an elemental" } + end subroutine sub2 + + elemental function func2(x) + integer, intent(in) :: x + entry func2_c(x) bind(c) ! { dg-error "prohibited in an elemental" } + end function func2 diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr51434.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr51434.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr51434.f90 Sat Mar 3 19:02:28 2018 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr51434.f90 Sat Jan 26 15:25:45 2019 *************** module foo *** 6,12 **** character(len=1), parameter :: s(n) = 'a' type :: a integer :: m = n ! character(len=1):: t(n) = transfer('abcde ', s) end type a end module foo --- 6,12 ---- character(len=1), parameter :: s(n) = 'a' type :: a integer :: m = n ! character(len=1):: t(n) = transfer('abcde', s) end type a end module foo diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr58968.f gcc-7.5.0/gcc/testsuite/gfortran.dg/pr58968.f *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr58968.f Mon Nov 4 16:12:29 2013 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr58968.f Sat Jan 26 15:09:52 2019 *************** *** 1,5 **** C PR rtl-optimization/58968.f ! C { dg-do compile { target powerpc*-*-*} } C { dg-options "-mcpu=power7 -O3 -w -ffast-math -funroll-loops" } SUBROUTINE MAKTABS(IW,SOME,LBOX1,LBOX2,LBOX3,NSPACE,NA,NB, * LBST,X, --- 1,5 ---- C PR rtl-optimization/58968.f ! C { dg-do compile { target powerpc*-*-* } } C { dg-options "-mcpu=power7 -O3 -w -ffast-math -funroll-loops" } SUBROUTINE MAKTABS(IW,SOME,LBOX1,LBOX2,LBOX3,NSPACE,NA,NB, * LBST,X, diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr68318_1.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr68318_1.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr68318_1.f90 Fri Nov 13 00:14:32 2015 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr68318_1.f90 Wed Jan 30 15:07:38 2019 *************** *** 1,5 **** ! { dg-do compile } ! ! { dg-options "-O0" ! PR fortran/68318 ! Original code submitted by Gerhard Steinmetz ! --- 1,5 ---- ! { dg-do compile } ! ! { dg-options "-O0" } ! PR fortran/68318 ! Original code submitted by Gerhard Steinmetz ! diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr69455_1.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr69455_1.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr69455_1.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr69455_1.f90 Fri Oct 18 19:26:22 2019 *************** *** 0 **** --- 1,14 ---- + ! { dg-do run } + program foo + block + use, intrinsic :: iso_c_binding, only: wp => c_float, ik => c_int + if (ik /= 4) stop 1 + if (wp /= 4) stop 2 + end block + block + use, intrinsic :: iso_c_binding, only: wp => c_double, ik => c_int64_t + if (ik /= 8) stop 3 + if (wp /= 8) stop 4 + end block + end program foo + diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr69455_2.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr69455_2.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr69455_2.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr69455_2.f90 Fri Oct 18 19:26:22 2019 *************** *** 0 **** --- 1,13 ---- + ! { dg-do run } + program foo + block + use, intrinsic :: ISO_FORTRAN_ENV, only: wp => REAL32, ik => INT32 + if (ik /= 4) stop 1 + if (wp /= 4) stop 2 + end block + block + use, intrinsic :: ISO_FORTRAN_ENV, only: wp => REAL64, ik => INT64 + if (ik /= 8) stop 3 + if (wp /= 8) stop 4 + end block + end program foo diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr70870_1.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr70870_1.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr70870_1.f90 Fri May 11 18:00:41 2018 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr70870_1.f90 Wed Dec 12 01:26:12 2018 *************** *** 1,4 **** --- 1,5 ---- ! { dg-do compile } + ! { dg-options "-std=gnu" } ! PR fortran/70870 ! Contributed by Vittorio Zecca type t diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr77583.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr77583.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr77583.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr77583.f90 Sun Mar 3 20:36:12 2019 *************** *** 0 **** --- 1,10 ---- + ! { dg-do compile } + ! + ! PR fortran/77583 - ICE in pp_quoted_string, at pretty-print.c:966 + ! Contributed by Gerhard Steinmetz + + pure subroutine sub(s) + contains + pure subroutine s ! { dg-error "conflicts with DUMMY argument" } + end + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr78259.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr78259.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr78259.f90 Wed Nov 9 17:31:27 2016 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr78259.f90 Sat Jan 26 15:09:52 2019 *************** *** 1,4 **** ! ! { dg-do "compile" } ! { dg-options "-fdec-structure" } ! ! PR fortran/78259 --- 1,4 ---- ! ! { dg-do compile } ! { dg-options "-fdec-structure" } ! ! PR fortran/78259 diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr81849.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr81849.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr81849.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr81849.f90 Tue Jan 15 20:53:13 2019 *************** *** 0 **** --- 1,16 ---- + ! { dg-do run } + ! PR fortran/81849 + program p + implicit none + integer :: n=3 + if (any(g() /= f())) stop 1 + contains + function g() + real g(n) + g = 7 + end function g + function f() result(r) + real r(n) + r = 7 + end function f + end program diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr83246.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr83246.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr83246.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr83246.f90 Fri Aug 30 11:36:10 2019 *************** *** 0 **** --- 1,9 ---- + ! PR fortran/83246 + ! { dg-do link } + program dusty_corner + write(*,*)'BLOCK TESTS' + MAKEDATAP: block + integer,parameter :: scratch(*)=[1,2,3] + write(*,*)scratch + endblock MAKEDATAP + end program dusty_corner diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85797.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr85797.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85797.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr85797.f90 Wed Apr 10 21:02:02 2019 *************** *** 0 **** --- 1,31 ---- + ! { dg-do compile } + ! PR fortran/83515 - ICE: Invalid expression in gfc_element_size + ! PR fortran/85797 - ICE in gfc_element_size, at fortran/target-memory.c:126 + ! PR fortran/89904 - ICE in gfortran starting with r270045 + + recursive subroutine a + c = transfer (a, b) ! { dg-error "'SOURCE' argument of 'TRANSFER'" } + end + + recursive subroutine d + c = transfer (b, d) ! { dg-error "'MOLD' argument of 'TRANSFER'" } + end + + subroutine f + use, intrinsic :: iso_c_binding + integer(c_intptr_t) :: b, c + procedure(), pointer :: a + c = transfer (a, b) + c = transfer (transfer (b, a), b) + end + + module m + contains + function f () result (z) + class(*), pointer :: z + end function f + recursive subroutine s (q) + procedure(f) :: q + call s (q) + end subroutine s + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85798.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr85798.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85798.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr85798.f90 Sat Dec 22 23:23:02 2018 *************** *** 0 **** --- 1,14 ---- + ! { dg-do compile } + program p + type t + integer, allocatable :: a(:) + end type + type u + real x + type(t) y + end type + type(t) :: z + type(u) :: q + data z%a(1) / 789 / ! { dg-error "Allocatable component" } + data q%y%a(1) / 789 / ! { dg-error "Allocatable component" } + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88138.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88138.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88138.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88138.f90 Sat Dec 15 23:57:03 2018 *************** *** 0 **** --- 1,9 ---- + ! { dg-do compile } + program p + type t + character :: c = 'c' + end type + type(t), parameter :: x = 1.e1 ! { dg-error "Incompatible initialization between a" }s + print *, 'a' // x%c + end + ! { dg-prune-output "has no IMPLICIT type" } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88155.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88155.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88155.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88155.f90 Wed Dec 12 01:26:12 2018 *************** *** 0 **** --- 1,9 ---- + ! { dg-do compile } + program p + type t + integer :: a + end type + type(t) :: x + data x /t()1/ ! { dg-error "No initializer for component" } + print *, x + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88169_1.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88169_1.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88169_1.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88169_1.f90 Sat Dec 22 18:09:19 2018 *************** *** 0 **** --- 1,21 ---- + ! { dg-do run } + module foo_nml + implicit none + real :: x = -1 + namelist /foo/ x + end module + + program main + use foo_nml, only: bar => foo, x + implicit none + integer fd + x = 42 + open(newunit=fd, file='tmp.dat', status='replace') + write(fd,nml=bar) + close(fd) + open(newunit=fd, file='tmp.dat', status='old') + read(fd,nml=bar) + if (x /= 42) stop 1 + close(fd) + end program + ! { dg-final { cleanup-modules "foo_nml" } } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88169_2.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88169_2.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88169_2.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88169_2.f90 Sat Dec 22 18:09:19 2018 *************** *** 0 **** --- 1,31 ---- + ! { dg-do run } + module foo_nml + implicit none + real :: x = -1 + namelist /foo/ x + end module + ! + ! Yes, implicit typing of local variable 'x'. + ! + program main + use foo_nml, only: bar => foo + integer fd + x = 42 + open(newunit=fd, file='tmp.dat', status='replace') + write(fd,nml=bar) + close(fd) + open(newunit=fd, file='tmp.dat', status='old') + read(fd,nml=bar) + close(fd) + call bah + if (x /= 42) stop 1 + end program + + subroutine bah + use foo_nml + integer fd + open(newunit=fd, file='tmp.dat', status='old') + read(fd,nml=foo) + if (x /= -1) stop 2 + close(fd, status='delete') + end subroutine bah diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88169_3.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88169_3.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88169_3.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88169_3.f90 Sat Dec 22 18:09:19 2018 *************** *** 0 **** --- 1,15 ---- + ! { dg-do compile } + ! { dg-options "-std=f95" } + module foo_nml + implicit none + real :: x = -1 + namelist /foo/ x + end module + + program main + use foo_nml, only: bar => foo, x + implicit none + real a + namelist /bar/a ! { dg-error "already is USE associated" } + end program + ! { dg-final { cleanup-modules "foo_nml" } } diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88205.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88205.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88205.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88205.f90 Mon Dec 10 01:25:47 2018 *************** *** 0 **** --- 1,14 ---- + ! { dg-do compile } + ! PR fortran/88205 + subroutine s1 + real, parameter :: status = 0 + open (newunit=n, status=status) ! { dg-error "STATUS requires" } + end + subroutine s2 + complex, parameter :: status = 0 + open (newunit=n, status=status) ! { dg-error "STATUS requires" } + end + program p + logical, parameter :: status = .false. + open (newunit=a, status=status) ! { dg-error "STATUS requires" } + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88206.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88206.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88206.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88206.f90 Sun Dec 9 20:23:06 2018 *************** *** 0 **** --- 1,8 ---- + ! { dg-do compile } + ! PR fortran/88206 + program p + integer, parameter :: z(4) = [1,2,3,4] + integer :: k = 2 + print *, [real(z(k))] + end + diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88228.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88228.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88228.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88228.f90 Sun Dec 9 18:32:01 2018 *************** *** 0 **** --- 1,8 ---- + ! { dg-do compile } + ! { dg-options "-fdec" } + ! PR fortran/88228 + program p + integer :: n = .not. 1 + integer :: j = .true. .or. 1 + end + diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88249.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88249.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88249.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88249.f90 Wed Dec 12 00:08:12 2018 *************** *** 0 **** --- 1,7 ---- + ! { dg-do compile } + program p + backspace (err=1) ! { dg-error "UNIT number missing" } + endfile (err=1) ! { dg-error "UNIT number missing" } + flush (err=1) ! { dg-error "UNIT number missing" } + rewind (err=1) ! { dg-error "UNIT number missing" } + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88269.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88269.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88269.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88269.f90 Mon Dec 10 20:03:32 2018 *************** *** 0 **** --- 1,6 ---- + ! { dg-do compile } + ! PR fortran/88269 + program p + write (end=1e1) ! { dg-error "tag not allowed" } + end + diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88902.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88902.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr88902.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr88902.f90 Fri Aug 30 11:28:22 2019 *************** *** 0 **** --- 1,6 ---- + ! PR fortran/88902 + ! { dg-do compile } + ! { dg-require-effective-target lto } + ! { dg-options "-flto --param ggc-min-heapsize=0" } + + include 'pr50069_2.f90' diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr89077.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr89077.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr89077.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr89077.f90 Sun Feb 10 20:05:34 2019 *************** *** 0 **** --- 1,11 ---- + ! { dg-do run } + ! + ! PR fortran/89077 - ICE using * as len specifier for character parameter + + program test + implicit none + integer :: i + character(*), parameter :: s = 'abcdef' + character(*), parameter :: t = transfer ([(s(i:i), i=1,len(s))], s) + if (len (t) /= len (s) .or. t /= s) stop 1 + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr89084.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr89084.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr89084.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr89084.f90 Fri Aug 30 11:36:10 2019 *************** *** 0 **** --- 1,23 ---- + ! PR fortran/89084 + ! { dg-do run } + + integer function foo () + write (*,*) 'foo' + block + integer, parameter :: idxs(3) = (/ 1, 2, 3 /) + integer :: i + foo = 0 + do i = 1, size(idxs) + foo = foo + idxs(i) + enddo + end block + end function foo + program pr89084 + integer :: i + interface + integer function foo () + end function + end interface + i = foo () + if (i.ne.6) stop 1 + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr89253.f gcc-7.5.0/gcc/testsuite/gfortran.dg/pr89253.f *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr89253.f Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr89253.f Tue Mar 26 13:18:23 2019 *************** *** 0 **** --- 1,19 ---- + ! { dg-do compile } + ! { dg-additional-options "-fsplit-loops -fno-tree-dominator-opts -std=legacy -w" } + program jr + integer :: w5, pg, zh + w5 = 0 + write (w5) + assign 0002 to w5 + do pg = 1, 3 + if (pg .eq. 1) then + do zh = 1, pg + end do + else + goto w5 + 0001 zh = 0 + 0002 zh = 0 + assign 0001 to w5 + endif + end do + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr90344.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr90344.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr90344.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr90344.f90 Sun May 5 14:01:51 2019 *************** *** 0 **** --- 1,25 ---- + ! { dg-do compile } + ! { dg-additional-options "-ffrontend-optimize" } + ! PR 90344 - this used to ICE. + ! Test case by Urban Jost. + module M_xterm + contains + elemental function func1(ch) result(res) + character,intent(in) :: ch + logical :: res + res=.true. + end function func1 + elemental function func2(ch) result(res) + character,intent(in) :: ch + logical :: res + res=.false. + end function func2 + pure function s2a(string) RESULT (array) + character(len=*),intent(in) :: string + character(len=1) :: array(len(string)) + forall(i=1:len(string)) array(i) = string(i:i) + end function s2a + subroutine sub1() + write(*,*)all(func1(s2a('ABCDEFG')).or.func2(s2a('ABCDEFG'))) + end subroutine sub1 + end module M_xterm diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/pr91686.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/pr91686.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/pr91686.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/pr91686.f90 Thu Sep 12 09:05:14 2019 *************** *** 0 **** --- 1,16 ---- + ! { dg-do run } + ! + ! Test the fix for PR91686 + ! + ! Contributed by + ! + program shuf + implicit none + character(len=:),allocatable :: pageout(:) + integer :: i + pageout=[character(len=20) :: 'a','bbbbbbb','ccccc'] + pageout=pageout([3,2,1]) + if (trim( pageout(1)) .ne. 'ccccc') stop 1 + if (trim( pageout(2)) .ne. 'bbbbbbb') stop 2 + if (trim( pageout(3)) .ne. 'a') stop 3 + end program shuf diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/proc_ptr_51.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/proc_ptr_51.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/proc_ptr_51.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/proc_ptr_51.f90 Sat Aug 3 11:50:39 2019 *************** *** 0 **** --- 1,38 ---- + ! { dg-do run } + ! + ! Test the fix for PR90786. + ! + ! Contributed by Andrew benson + ! + module f + procedure(c), pointer :: c_ + + type :: s + integer :: i = 42 + end type s + class(s), pointer :: res, tgt + + contains + + function c() + implicit none + class(s), pointer :: c + c => tgt + return + end function c + + subroutine fs() + implicit none + c_ => c ! This used to ICE + return + end subroutine fs + + end module f + + use f + allocate (tgt, source = s(99)) + call fs() + res => c_() + if (res%i .ne. 99) stop 1 + deallocate (tgt) + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/ptr_func_assign_5.f08 gcc-7.5.0/gcc/testsuite/gfortran.dg/ptr_func_assign_5.f08 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/ptr_func_assign_5.f08 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/ptr_func_assign_5.f08 Sun Dec 23 20:01:44 2018 *************** *** 0 **** --- 1,45 ---- + ! { dg-do run } + ! + ! Test the fix for PR77703, in which calls of the pointer function + ! caused an ICE in 'gfc_trans_auto_character_variable'. + ! + ! Contributed by Gerhard Steinmetz + ! + module m + implicit none + private + integer, parameter, public :: n = 2 + integer, parameter :: ell = 6 + + character(len=n*ell), target, public :: s + + public :: t + contains + function t( idx ) result( substr ) + integer, intent(in) :: idx + character(len=ell), pointer :: substr + + if ( (idx < 0).or.(idx > n) ) then + error stop + end if + substr => s((idx-1)*ell+1:idx*ell) + end function t + end module m + + program p + use m, only : s, t, n + integer :: i + + ! Define 's' + s = "123456789012" + + ! Then perform operations involving 't' + if (t(1) .ne. "123456") stop 1 + if (t(2) .ne. "789012") stop 2 + + ! Do the pointer function assignments + t(1) = "Hello " + if (s .ne. "Hello 789012") Stop 3 + t(2) = "World!" + if (s .ne. "Hello World!") Stop 4 + end program p diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/public_private_module_10.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/public_private_module_10.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/public_private_module_10.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/public_private_module_10.f90 Sun Mar 10 11:09:30 2019 *************** *** 0 **** --- 1,18 ---- + ! { dg-do compile } + ! PR 87734 - this used to issue spurious errors. + + module m_vstring + implicit none + + public :: vstring_length + + contains + + subroutine vstring_cast() + character ( len = vstring_length() ) :: char_string + end subroutine + + pure integer function vstring_length () + end function + + end module diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/select_type_45.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/select_type_45.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/select_type_45.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/select_type_45.f90 Sun Jan 27 18:53:47 2019 *************** *** 0 **** --- 1,22 ---- + ! { dg-do compile } + ! + ! Tests the fix for PR80260 + ! + ! Contributed by Damian Rouson + ! + type foo + end type foo + type, extends(foo) :: bar + end type + contains + subroutine f(x) + class(foo) x(:,:) + select type(x) + class is (bar) + call g(x(1,:)) ! ICEd here. + end select + end subroutine + subroutine g(y) + class(bar) y(:) + end subroutine + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/select_type_46.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/select_type_46.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/select_type_46.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/select_type_46.f90 Sun Jan 27 18:53:47 2019 *************** *** 0 **** --- 1,21 ---- + ! { dg-do compile } + ! + ! Tests the fix for PR82077 + ! + ! Contributed by Damian Rouson + ! + type parent + end type parent + type, extends(parent) :: child + end type + class(parent), allocatable :: foo(:,:) + allocate(child::foo(1,1)) + select type(foo) + class is (child) + call gfortran7_ICE(foo(1,:)) ! ICEd here. + end select + contains + subroutine gfortran7_ICE(bar) + class(child) bar(:) + end subroutine + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/submodule_30.f08 gcc-7.5.0/gcc/testsuite/gfortran.dg/submodule_30.f08 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/submodule_30.f08 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/submodule_30.f08 Sat Dec 29 18:21:39 2018 *************** *** 0 **** --- 1,42 ---- + ! { dg-do run } + ! + ! Test the fix for PR82550 in which the reference to 'p' in 'foo' + ! was not being correctly handled. + ! + ! Contributed by Reinhold Bader + ! + module m_subm_18_pos + implicit none + integer :: i = 0 + interface + module subroutine foo(fun_ptr) + procedure(p), pointer, intent(out) :: fun_ptr + end subroutine + end interface + contains + subroutine p() + i = 1 + end subroutine p + end module m_subm_18_pos + submodule (m_subm_18_pos) subm_18_pos + implicit none + contains + module subroutine foo(fun_ptr) + procedure(p), pointer, intent(out) :: fun_ptr + fun_ptr => p + end subroutine + end submodule + program p_18_pos + use m_subm_18_pos + implicit none + procedure(), pointer :: x + call foo(x) + call x() + if (i == 1) then + write(*,*) 'OK' + else + write(*,*) 'FAIL' + STOP 1 + end if + end program p_18_pos + diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/warn_conversion_10.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/warn_conversion_10.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/warn_conversion_10.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/warn_conversion_10.f90 Sat Feb 2 17:07:40 2019 *************** *** 0 **** --- 1,8 ---- + ! { dg-do compile } + ! { dg-options "-fno-range-check -Wconversion" } + ! PR 88298 - this used to warn unnecessarily. Original test case by + ! Harald Anlauf. + subroutine bug (j, js) + integer :: j, js(3,2) + js(:,:) = cshift (js(:,:), shift=j, dim=1) + end subroutine bug diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/warn_undefined_1.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/warn_undefined_1.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/warn_undefined_1.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/warn_undefined_1.f90 Tue Feb 5 21:23:07 2019 *************** *** 0 **** --- 1,28 ---- + ! { dg-do compile } + ! { dg-options "-O2 -Wuninitialized" } + ! PR 67679 - this used to cause an undefined warning for + ! variables generated by the compiler. + + subroutine s(h, Gmin, r) + + implicit none + real, intent(in) :: Gmin(3), h(3) + integer, intent(inout) :: r + + integer :: x_min(3), x_max(3), k, iStat + logical, dimension(:), allocatable :: check + + do k = 1,1 + x_min(k) = int(Gmin(k)*h(k)) + x_max(k) = int(Gmin(k)*h(k)) + end do + + allocate(check(x_min(1):x_max(1)),stat=iStat) + + check(:) = .false. + + do k = x_min(1),x_max(1) + r = r + 1 + end do + + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90 gcc-7.5.0/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90 *** gcc-7.4.0/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90 Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90 Sun Sep 15 22:35:40 2019 *************** *** 0 **** --- 1,16 ---- + ! { dg-do compile } + ! { dg-additional-options "-Wunused-dummy-argument" } + ! PR 91557 - this used to generate a bogus warning + ! Test case by Gerhard Steinmetz + program p + integer :: a, b + a = 1 + call g + contains + subroutine g + integer :: x, y + call h (x, y) + if ( a > 0 ) y = y - 1 + b = y - x + 1 + end + end diff -Nrcpad gcc-7.4.0/gcc/testsuite/gnat.dg/array34.adb gcc-7.5.0/gcc/testsuite/gnat.dg/array34.adb *** gcc-7.4.0/gcc/testsuite/gnat.dg/array34.adb Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gnat.dg/array34.adb Sat Jan 26 16:03:42 2019 *************** *** 0 **** --- 1,22 ---- + -- { dg-do run } + + procedure Array34 is + + type Arr is array (1 .. 6) of Short_Short_Integer; + for Arr'Alignment use 4; + + type Rec is record + A : Arr; + B: Short_Integer; + end record; + pragma Pack (Rec); + + R : Rec; + + begin + R.B := 31415; + R.A := (others => 0); + if R.B /= 31415 then + raise Program_Error; + end if; + end; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gnat.dg/opt73.adb gcc-7.5.0/gcc/testsuite/gnat.dg/opt73.adb *** gcc-7.4.0/gcc/testsuite/gnat.dg/opt73.adb Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gnat.dg/opt73.adb Sat Apr 6 21:44:33 2019 *************** *** 0 **** --- 1,34 ---- + -- { dg-do run } + -- { dg-options "-O" } + + procedure Opt73 is + + type Terminal_Set_Indexed_By_Non_Terminal is + array (Natural range <>, Natural range <>) of Boolean with Pack; + + type Terminal_Set_Per_Non_Terminal + (Last_Terminal : Natural; + Last_Non_Terminal : Natural) is + record + Map : Terminal_Set_Indexed_By_Non_Terminal + (1 .. Last_Non_Terminal, 0 .. Last_Terminal); + end record; + + Follow : Terminal_Set_Per_Non_Terminal (5, 4); + Expect : Terminal_Set_Per_Non_Terminal := + (5, 4, (1 => (2 => True, others => False), + others => (others => False))); + + procedure Get_Follow (Value : out Terminal_Set_Per_Non_Terminal) is + begin + Value.Map := (others => (others => False)); + Value.Map (1, 2) := True; + Value.Map (2, 0) := Value.Map (2, 0) or Value.Map (1, 0); + end; + + begin + Get_Follow (Follow); + if Follow /= Expect then + raise Program_Error; + end if; + end; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gnat.dg/opt75.adb gcc-7.5.0/gcc/testsuite/gnat.dg/opt75.adb *** gcc-7.4.0/gcc/testsuite/gnat.dg/opt75.adb Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gnat.dg/opt75.adb Sun Jan 27 18:16:23 2019 *************** *** 0 **** --- 1,9 ---- + -- { dg-do run } + -- { dg-options "-O3" } + + with Opt75_Pkg; use Opt75_Pkg; + + procedure Opt75 is + begin + null; + end; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gnat.dg/opt75_pkg.adb gcc-7.5.0/gcc/testsuite/gnat.dg/opt75_pkg.adb *** gcc-7.4.0/gcc/testsuite/gnat.dg/opt75_pkg.adb Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gnat.dg/opt75_pkg.adb Sun Jan 27 18:16:23 2019 *************** *** 0 **** --- 1,12 ---- + package body Opt75_Pkg is + + overriding procedure Adjust (Object : in out T) is + begin + if Object.Ref /= Empty_Rec'Access then + System.Atomic_Counters.Increment (Object.Ref.Counter); + end if; + end; + + A : constant Arr := (others => (others => Empty)); + + end Opt75_Pkg; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gnat.dg/opt75_pkg.ads gcc-7.5.0/gcc/testsuite/gnat.dg/opt75_pkg.ads *** gcc-7.4.0/gcc/testsuite/gnat.dg/opt75_pkg.ads Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gnat.dg/opt75_pkg.ads Sun Jan 27 18:16:23 2019 *************** *** 0 **** --- 1,27 ---- + pragma Restrictions (No_Abort_Statements); + pragma Restrictions (Max_Asynchronous_Select_Nesting => 0); + + with Ada.Finalization; + with System.Atomic_Counters; + + package Opt75_Pkg is + + type Rec is record + Counter : System.Atomic_Counters.Atomic_Counter; + end record; + + type Rec_Ptr is access all Rec; + + Empty_Rec : aliased Rec; + + type T is new Ada.Finalization.Controlled with record + Ref : Rec_Ptr := Empty_Rec'Access; + end record; + + overriding procedure Adjust (Object : in out T); + + Empty : constant T := (Ada.Finalization.Controlled with Ref => Empty_Rec'Access); + + type Arr is array (Integer range 1 .. 8, Integer range 1 .. 4) of T; + + end Opt75_Pkg; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gnat.dg/opt76.adb gcc-7.5.0/gcc/testsuite/gnat.dg/opt76.adb *** gcc-7.4.0/gcc/testsuite/gnat.dg/opt76.adb Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gnat.dg/opt76.adb Wed Feb 6 21:10:19 2019 *************** *** 0 **** --- 1,36 ---- + -- { dg-do run } + -- { dg-options "-O2 -gnatp -fno-omit-frame-pointer" } + + procedure Opt76 is + + type Integer_Access is access Integer; + type Registry_Array is array (Natural range <>) of Integer_Access; + + procedure Nested (Input, Parser : Integer; A, B : Boolean) is + + Index : Registry_Array (1 .. 1024); + Not_B : constant Boolean := not B; + + procedure Inner (Input : Integer) is + begin + if Input /= 1 then + raise Program_Error; + end if; + + if Parser = 128 and then A and then Not_B then + Inner (Input); + Index (Index'First) := null; + end if; + end; + + begin + Inner (Input); + end; + + Input : Integer := 1 with Volatile; + Parser : Integer := 2 with Volatile; + + begin + Nested (Input, Parser, False, True); + Nested (Input, Parser, True, False); + end; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gnat.dg/opt79.adb gcc-7.5.0/gcc/testsuite/gnat.dg/opt79.adb *** gcc-7.4.0/gcc/testsuite/gnat.dg/opt79.adb Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gnat.dg/opt79.adb Tue May 28 08:09:39 2019 *************** *** 0 **** --- 1,28 ---- + -- { dg-do compile } + -- { dg-options "-O" } + + package body Opt79 is + + function F (I : Integer) return Arr is + A : Arr; + + procedure Nested is + + procedure Inner is + begin + A (1) := 0; + end; + + begin + Inner; + end; + + begin + Nested; + for J in A'Range loop + A (J) := I; + end loop; + return A; + end; + + end Opt79; diff -Nrcpad gcc-7.4.0/gcc/testsuite/gnat.dg/opt79.ads gcc-7.5.0/gcc/testsuite/gnat.dg/opt79.ads *** gcc-7.4.0/gcc/testsuite/gnat.dg/opt79.ads Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/gnat.dg/opt79.ads Tue May 28 08:09:39 2019 *************** *** 0 **** --- 1,7 ---- + package Opt79 is + + type Arr is array (1 .. 8) of Integer; + + function F (I : Integer) return Arr; + + end Opt79; diff -Nrcpad gcc-7.4.0/gcc/testsuite/lib/target-supports.exp gcc-7.5.0/gcc/testsuite/lib/target-supports.exp *** gcc-7.4.0/gcc/testsuite/lib/target-supports.exp Tue May 1 09:00:39 2018 --- gcc-7.5.0/gcc/testsuite/lib/target-supports.exp Fri Nov 1 20:01:52 2019 *************** proc check_effective_target_next_runtime *** 2365,2370 **** --- 2365,2386 ---- }] } + # Return 1 if we're generating code for big-endian memory order. + + proc check_effective_target_be { } { + return [check_no_compiler_messages be object { + int dummy[__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ ? 1 : -1]; + }] + } + + # Return 1 if we're generating code for little-endian memory order. + + proc check_effective_target_le { } { + return [check_no_compiler_messages le object { + int dummy[__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ ? 1 : -1]; + }] + } + # Return 1 if we're generating 32-bit code using default options, 0 # otherwise. *************** proc check_effective_target_powerpc_p8ve *** 4548,4560 **** || [istarget powerpc*-*-aix5.2*] } { return 0 } return [check_no_compiler_messages powerpc_p8vector_ok object { int main (void) { - #ifdef __MACH__ - asm volatile ("xxlorc vs0,vs0,vs0"); - #else asm volatile ("xxlorc 0,0,0"); - #endif return 0; } } "-mpower8-vector"] --- 4564,4576 ---- || [istarget powerpc*-*-aix5.2*] } { return 0 } + # Darwin doesn't run on power8, so far. + if { [istarget *-*-darwin*] } { + return 0 + } return [check_no_compiler_messages powerpc_p8vector_ok object { int main (void) { asm volatile ("xxlorc 0,0,0"); return 0; } } "-mpower8-vector"] *************** proc check_effective_target_powerpc_p9ve *** 4575,4580 **** --- 4591,4600 ---- || [istarget powerpc*-*-aix5.2*] } { return 0 } + # Darwin doesn't run on power9, so far. + if { [istarget *-*-darwin*] } { + return 0 + } return [check_no_compiler_messages powerpc_p9vector_ok object { int main (void) { long e = -1; *************** proc check_effective_target_powerpc_floa *** 4625,4630 **** --- 4645,4654 ---- || [istarget powerpc*-*-aix5.2*] } { return 0 } + # Darwin doesn't have VSX, so no soft support for float128. + if { [istarget *-*-darwin*] } { + return 0 + } return [check_no_compiler_messages powerpc_float128_sw_ok object { volatile __float128 x = 1.0q; volatile __float128 y = 2.0q; *************** proc check_effective_target_powerpc_floa *** 4651,4656 **** --- 4675,4684 ---- || [istarget powerpc*-*-aix5.2*] } { return 0 } + # Darwin doesn't run on any machine with float128 h/w so far. + if { [istarget *-*-darwin*] } { + return 0 + } return [check_no_compiler_messages powerpc_float128_hw_ok object { volatile __float128 x = 1.0q; volatile __float128 y = 2.0q; *************** proc check_effective_target_powerpc_vsx_ *** 4677,4689 **** || [istarget powerpc*-*-aix6*] } { return 0 } return [check_no_compiler_messages powerpc_vsx_ok object { int main (void) { - #ifdef __MACH__ - asm volatile ("xxlor vs0,vs0,vs0"); - #else asm volatile ("xxlor 0,0,0"); - #endif return 0; } } "-mvsx"] --- 4705,4718 ---- || [istarget powerpc*-*-aix6*] } { return 0 } + # Darwin doesn't have VSX, even if it's used with an assembler + # which recognises the insns. + if { [istarget *-*-darwin*] } { + return 0 + } return [check_no_compiler_messages powerpc_vsx_ok object { int main (void) { asm volatile ("xxlor 0,0,0"); return 0; } } "-mvsx"] diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm Sun Sep 15 02:38:25 2019 *************** *** 2,14 **** // { 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() --- 2,15 ---- // { dg-do run { target *-*-darwin* } } // { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } + // { dg-skip-if "Headers incompatible with 10.4 APIs" { *-*-darwin1[3-8]* } { "-fnext-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 "../objc-obj-c++-shared/F-NSObject.h" //extern "C" { int printf(const char *,...); } #define CHECK_IF(expr) if(!(expr)) abort() diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/isa-field-1.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/isa-field-1.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/isa-field-1.mm Mon Jun 6 22:46:58 2011 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/isa-field-1.mm Sun Sep 15 02:38:25 2019 *************** *** 1,5 **** --- 1,7 ---- /* Ensure there are no bizarre difficulties with accessing the 'isa' field of objects. */ /* { dg-do compile } */ + /* The use of isa is deprecated, but we still want to test that is works. */ + /* { dg-additional-options "-Wno-deprecated-declarations" } */ #include "../objc-obj-c++-shared/TestsuiteObject.h" #include "../objc-obj-c++-shared/runtime.h" diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/objc-gc-3.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/objc-gc-3.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/objc-gc-3.mm Mon Jun 6 22:46:58 2011 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/objc-gc-3.mm Sun Sep 15 02:38:25 2019 *************** *** 3,8 **** --- 3,9 ---- /* Contributed by Ziemowit Laski */ /* { dg-do compile } */ + /* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-8]* } { "-fnext-runtime" } { "" } } */ /* { dg-options "-fobjc-gc" } */ /* { dg-prune-output "cc1objplus: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm Sun Sep 15 02:38:25 2019 *************** *** 1,9 **** /* Check that typedefs of ObjC classes preserve any @protocol qualifiers. */ /* { dg-do compile } */ #ifdef __NEXT_RUNTIME__ ! #include #define OBJECT NSObject #else #include --- 1,11 ---- /* Check that typedefs of ObjC classes preserve any @protocol qualifiers. */ /* { dg-do compile } */ + /* Suppress warnings that the GNUStep headers introduce. */ + /* { dg-additional-options "-std=gnu++11 -Wno-expansion-to-defined -Wno-variadic-macros" { target *-*-darwin* } } */ #ifdef __NEXT_RUNTIME__ ! #include "../objc-obj-c++-shared/F-NSObject.h" #define OBJECT NSObject #else #include diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/qual-types-1.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/qual-types-1.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/qual-types-1.mm Mon Jun 6 22:46:58 2011 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/qual-types-1.mm Sun Sep 15 02:38:25 2019 *************** *** 4,9 **** --- 4,11 ---- /* { dg-do run } */ /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ + /* { dg-prune-output ".*ld: warning: direct access in.*" } */ + #include "../objc-obj-c++-shared/TestsuiteObject.m" #include diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm Sat Oct 27 11:31:06 2012 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm Sun Sep 15 02:38:25 2019 *************** *** 8,15 **** /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-ftrack-macro-expansion=0 -mconstant-cfstrings -Wnonportable-cfstrings" } */ ! #import ! #import #ifndef __CONSTANT_CFSTRINGS__ #error The -fconstant-cfstrings option is not functioning properly --- 8,15 ---- /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-ftrack-macro-expansion=0 -mconstant-cfstrings -Wnonportable-cfstrings" } */ ! #include "../../objc-obj-c++-shared/F-NSString.h" ! #include "../../objc-obj-c++-shared/CF-CFString.h" #ifndef __CONSTANT_CFSTRINGS__ #error The -fconstant-cfstrings option is not functioning properly diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm Sun Sep 15 02:38:25 2019 *************** *** 6,12 **** /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mconstant-cfstrings" } */ ! #include @interface Foo: NSObject { char *cString; --- 6,12 ---- /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mconstant-cfstrings" } */ ! #include "../../objc-obj-c++-shared/F-NSObject.h" @interface Foo: NSObject { char *cString; diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm Sun Sep 15 02:38:25 2019 *************** *** 6,12 **** /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ #ifdef __NEXT_RUNTIME__ ! #include #define OBJECT NSObject #else #include --- 6,12 ---- /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ #ifdef __NEXT_RUNTIME__ ! #include "../../objc-obj-c++-shared/F-NSObject.h" #define OBJECT NSObject #else #include diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/stubify-1.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/stubify-1.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/stubify-1.mm Tue Apr 27 00:08:28 2010 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/stubify-1.mm Fri Nov 1 20:30:26 2019 *************** *** 4,16 **** /* { dg-do compile { target *-*-darwin* } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-require-effective-target ilp32 } */ ! /* { dg-options "-Os -mdynamic-no-pic -fno-exceptions -mmacosx-version-min=10.4" } */ typedef struct objc_object { } *id ; int x = 41 ; extern "C" { ! extern id objc_msgSend(id self, char * op, ...); extern int bogonic (int, int, int); } --- 4,16 ---- /* { dg-do compile { target *-*-darwin* } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-require-effective-target ilp32 } */ ! /* { dg-options "-Os -mdynamic-no-pic -fno-exceptions -mmacosx-version-min=10.4 -msymbol-stubs" } */ typedef struct objc_object { } *id ; int x = 41 ; extern "C" { ! extern id objc_msgSend(id self, objc_selector* op, ...); extern int bogonic (int, int, int); } *************** extern "C" { *** 20,28 **** - (Document *) close; @end @implementation Document ! - (Document *) class { } ! - (Document *) close { } ! - (Document *) window { } - (void)willEndCloseSheet:(void *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { [[self window] close]; ((void (*)(id, char *, int))objc_msgSend)([self class], (char *)contextInfo, 1); --- 20,28 ---- - (Document *) close; @end @implementation Document ! - (Document *) class { return (Document *)0; } ! - (Document *) close { return (Document *)0; } ! - (Document *) window { return (Document *)0; } - (void)willEndCloseSheet:(void *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { [[self window] close]; ((void (*)(id, char *, int))objc_msgSend)([self class], (char *)contextInfo, 1); diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/stubify-2.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/stubify-2.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/stubify-2.mm Tue Apr 27 00:08:28 2010 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/stubify-2.mm Fri Nov 1 20:30:26 2019 *************** *** 4,10 **** /* { dg-do compile { target *-*-darwin* } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-require-effective-target ilp32 } */ ! /* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4" } */ typedef struct objc_object { } *id ; int x = 41 ; --- 4,10 ---- /* { dg-do compile { target *-*-darwin* } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-require-effective-target ilp32 } */ ! /* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4 -msymbol-stubs" } */ typedef struct objc_object { } *id ; int x = 41 ; *************** extern int bogonic (int, int, int) ; *** 16,24 **** - (Document *) close; @end @implementation Document ! - (Document *) class { } ! - (Document *) close { } ! - (Document *) window { } - (void)willEndCloseSheet:(void *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { [[self window] close]; ((void (*)(id, char *, int))objc_msgSend)([self class], (char *)contextInfo, 1); --- 16,24 ---- - (Document *) close; @end @implementation Document ! - (Document *) class { return (Document *)0; } ! - (Document *) close { return (Document *)0; } ! - (Document *) window { return (Document *)0; } - (void)willEndCloseSheet:(void *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { [[self window] close]; ((void (*)(id, char *, int))objc_msgSend)([self class], (char *)contextInfo, 1); diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/syntax-error-1.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/syntax-error-1.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/syntax-error-1.mm Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/syntax-error-1.mm Sun Sep 15 02:48:44 2019 *************** *** 1,8 **** /* Graceful handling of a syntax error. */ /* { dg-do compile } */ #ifdef __NEXT_RUNTIME__ ! #include #define OBJECT NSObject #else #include --- 1,10 ---- /* Graceful handling of a syntax error. */ /* { dg-do compile } */ + /* Suppress warnings that the GNUStep headers introduce. */ + /* { dg-additional-options "-std=gnu++11 -Wno-expansion-to-defined -Wno-variadic-macros" { target *-*-darwin* } } */ #ifdef __NEXT_RUNTIME__ ! #include "../objc-obj-c++-shared/F-NSObject.h" #define OBJECT NSObject #else #include *************** extern void NXLog(const char *, ...); *** 29,32 **** } /* { dg-error "stray .\}. between Objective\\-C\\+\\+ methods" } */ @end ! /* { dg-error "expected constructor, destructor, or type conversion before" "" { target *-*-* } 28 } */ --- 31,34 ---- } /* { dg-error "stray .\}. between Objective\\-C\\+\\+ methods" } */ @end ! /* { dg-error "expected constructor, destructor, or type conversion before" "" { target *-*-* } 30 } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm Sat Nov 6 10:48:18 2010 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm Sun Sep 15 02:38:25 2019 *************** *** 13,20 **** well, we don't implement writable ones at this juncture. */ /* { dg-options "-mconstant-cfstrings -framework Cocoa -Wl,-w" { target *-*-darwin[123]* } } */ ! #import ! #import #include void printOut(NSString *str) { --- 13,20 ---- well, we don't implement writable ones at this juncture. */ /* { dg-options "-mconstant-cfstrings -framework Cocoa -Wl,-w" { target *-*-darwin[123]* } } */ ! #include "../../../objc-obj-c++-shared/F-NSString.h" ! #include "../../../objc-obj-c++-shared/CF-CFString.h" #include void printOut(NSString *str) { *************** int main(void) { *** 47,56 **** checkNSRange([@"Hello World" rangeOfString:(id)CFSTR("World")]); checkNSRange([(id)CFSTR("Hello World") rangeOfString:(id)CFSTR("World")]); ! checkCFRange(CFStringFind((CFStringRef)@"Hello World", (CFStringRef)@"World", 0)); ! checkCFRange(CFStringFind(CFSTR("Hello World"), (CFStringRef)@"World", 0)); ! checkCFRange(CFStringFind((CFStringRef)@"Hello World", CFSTR("World"), 0)); ! checkCFRange(CFStringFind(CFSTR("Hello World"), CFSTR("World"), 0)); /* Check for string uniquing. */ if (s0a != s0b || s0a != s2 || s1 != (id)s2) { --- 47,56 ---- checkNSRange([@"Hello World" rangeOfString:(id)CFSTR("World")]); checkNSRange([(id)CFSTR("Hello World") rangeOfString:(id)CFSTR("World")]); ! checkCFRange(CFStringFind((CFStringRef)@"Hello World", (CFStringRef)@"World", (CFStringCompareFlags)0)); ! checkCFRange(CFStringFind(CFSTR("Hello World"), (CFStringRef)@"World", (CFStringCompareFlags)0)); ! checkCFRange(CFStringFind((CFStringRef)@"Hello World", CFSTR("World"), (CFStringCompareFlags)0)); ! checkCFRange(CFStringFind(CFSTR("Hello World"), CFSTR("World"), (CFStringCompareFlags)0)); /* Check for string uniquing. */ if (s0a != s0b || s0a != s2 || s1 != (id)s2) { diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm Sun Sep 15 02:38:25 2019 *************** *** 6,12 **** /* { 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 --- 6,12 ---- /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ ! #include "../../../objc-obj-c++-shared/F-NSObject.h" #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ @interface NSString: NSObject diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm Sun Sep 15 02:38:25 2019 *************** *** 7,13 **** /* { 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 { --- 7,13 ---- /* { dg-options "-fconstant-string-class=XStr" } */ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */ ! #include "../../../objc-obj-c++-shared/F-NSObject.h" #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ @interface XString: NSObject { diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm Sun Sep 15 02:38:25 2019 *************** *** 5,11 **** /* { 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 { --- 5,11 ---- /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ ! #include "../../../objc-obj-c++-shared/F-NSObject.h" #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ @interface NSConstantString: NSObject { diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/try-catch-1.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/try-catch-1.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/try-catch-1.mm Mon Jun 6 22:46:58 2011 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/try-catch-1.mm Sun Sep 15 02:38:25 2019 *************** int foo() *** 39,42 **** --- 39,43 ---- @finally { printf("In @finally block (%d)... ", exc_control); } + return -1; } diff -Nrcpad gcc-7.4.0/gcc/testsuite/obj-c++.dg/try-catch-3.mm gcc-7.5.0/gcc/testsuite/obj-c++.dg/try-catch-3.mm *** gcc-7.4.0/gcc/testsuite/obj-c++.dg/try-catch-3.mm Mon Jun 6 22:46:58 2011 --- gcc-7.5.0/gcc/testsuite/obj-c++.dg/try-catch-3.mm Sun Sep 15 02:38:25 2019 *************** const char *foo(void) *** 15,18 **** --- 15,19 ---- @catch (TestsuiteObject* theException) { return [theException name]; } + return (const char *)0; } diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/CF-CFString.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/CF-CFString.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/CF-CFString.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/CF-CFString.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,33 ---- + /* Copyright (C) 2019 Free Software Foundation, Inc. + + 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 + . */ + + #ifndef _OBJC_CF_CFSTRING_H_ + #define _OBJC_CF_CFSTRING_H_ + + /* This is a workaround to PR90709 for the NeXT runtime. + If we're on a system version that has headers with items we can't + consume, then use the GNUStep header instead. + */ + + #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090 + # import "GNUStep/CoreFoundation/CFString.h" + #else + # import + #endif + + #endif /* _OBJC_CF_CFSTRING_H_ */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSArray.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/F-NSArray.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSArray.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/F-NSArray.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,33 ---- + /* Copyright (C) 2019 Free Software Foundation, Inc. + + 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 + . */ + + #ifndef _OBJC_F_NSARRAY_H_ + #define _OBJC_F_NSARRAY_H_ + + /* This is a workaround to PR90709 for the NeXT runtime. + If we're on a system version that has headers with items we can't + consume, then use the GNUStep header instead. + */ + + #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090 + # import "GNUStep/Foundation/NSArray.h" + #else + # import + #endif + + #endif /* _OBJC_F_NSARRAY_H_ */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,33 ---- + /* Copyright (C) 2019 Free Software Foundation, Inc. + + 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 + . */ + + #ifndef _OBJC_F_NSAUTORELEASEPOOL_H_ + #define _OBJC_F_NSAUTORELEASEPOOL_H_ + + /* This is a workaround to PR90709 for the NeXT runtime. + If we're on a system version that has headers with items we can't + consume, then use the GNUStep header instead. + */ + + #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090 + # import "GNUStep/Foundation/NSAutoreleasePool.h" + #else + # import + #endif + + #endif /* _OBJC_F_NSAUTORELEASEPOOL_H_ */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSObject.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/F-NSObject.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSObject.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/F-NSObject.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,33 ---- + /* Copyright (C) 2019 Free Software Foundation, Inc. + + 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 + . */ + + #ifndef _OBJC_F_NSOBJECT_H_ + #define _OBJC_F_NSOBJECT_H_ + + /* This is a workaround to PR90709 for the NeXT runtime. + If we're on a system version that has headers with items we can't + consume, then use the GNUStep header instead. + */ + + #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090 + # import "GNUStep/Foundation/NSObject.h" + #else + # import + #endif + + #endif /* _OBJC_F_NSOBJECT_H_ */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSString.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/F-NSString.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSString.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/F-NSString.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,33 ---- + /* Copyright (C) 2019 Free Software Foundation, Inc. + + 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 + . */ + + #ifndef _OBJC_F_NSSTRING_H_ + #define _OBJC_F_NSSTRING_H_ + + /* This is a workaround to PR90709 for the NeXT runtime. + If we're on a system version that has headers with items we can't + consume, then use the GNUStep header instead. + */ + + #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090 + # import "GNUStep/Foundation/NSString.h" + #else + # import + #endif + + #endif /* _OBJC_F_NSSTRING_H_ */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSValue.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/F-NSValue.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/F-NSValue.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/F-NSValue.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,33 ---- + /* Copyright (C) 2019 Free Software Foundation, Inc. + + 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 + . */ + + #ifndef _OBJC_F_NSSTRING_H_ + #define _OBJC_F_NSSTRING_H_ + + /* This is a workaround to PR90709 for the NeXT runtime. + If we're on a system version that has headers with items we can't + consume, then use the GNUStep header instead. + */ + + #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090 + # import "GNUStep/Foundation/NSValue.h" + #else + # import + #endif + + #endif /* _OBJC_F_NSSTRING_H_ */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,191 ---- + /* CFArray.h + + Copyright (C) 2010 Free Software Foundation, Inc. + + Written by: Stefan Bidigaray + Date: January, 2010 + + This file is part of CoreBase. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + */ + + + #ifndef __COREFOUNDATION_CFARRAY_H__ + #define __COREFOUNDATION_CFARRAY_H__ + + #include "CFBase.h" + + CF_EXTERN_C_BEGIN + /** \ingroup CFArrayRef + \brief Reference to an immutable array object. + */ + typedef const struct __CFArray *CFArrayRef; + /** + \ingroup CFMutableArrayRef + \brief Reference to a mutable array object. + */ + typedef struct __CFArray *CFMutableArrayRef; + + /** \defgroup CFArrayRef CFArray Reference + \brief A CFArray and its mutable type, \ref CFMutableArrayRef + "CFMutableArray", are simple, low overhead, ordered containers for + objects. + \details + \#include + \{ + */ + + /** \name Callbacks + \{ + */ + typedef void (*CFArrayApplierFunction) (const void *value, void *context); + typedef CFStringRef (*CFArrayCopyDescriptionCallBack) (const void *value); + typedef void (*CFArrayReleaseCallBack) (CFAllocatorRef allocator, + const void *value); + typedef const void *(*CFArrayRetainCallBack) (CFAllocatorRef allocator, + const void *value); + typedef Boolean (*CFArrayEqualCallBack) (const void *value1, + const void *value2); + /** \} */ + + /** \brief Structure with CFArray callbacks. + */ + typedef struct _CFArrayCallBacks CFArrayCallBacks; + struct _CFArrayCallBacks + { + CFIndex version; /**< Structure's version number. Current version is 0. */ + CFArrayRetainCallBack retain; + /**< The callback used to retain values added to the array. If NULL, + values are not retained. */ + CFArrayReleaseCallBack release; + CFArrayCopyDescriptionCallBack copyDescription; + CFArrayEqualCallBack equal; + }; + + /** \name Predefined Callback Structures + \{ + */ + CF_EXPORT const CFArrayCallBacks kCFTypeArrayCallBacks; + /** \} */ + + + + /** \name Creating an Array + \{ + */ + CF_EXPORT CFArrayRef + CFArrayCreate (CFAllocatorRef allocator, const void **values, + CFIndex numValues, const CFArrayCallBacks * callBacks); + + CF_EXPORT CFArrayRef + CFArrayCreateCopy (CFAllocatorRef allocator, CFArrayRef theArray); + /** \} */ + + /** \name Examining an Array + \{ + */ + CF_EXPORT CFIndex + CFArrayBSearchValues (CFArrayRef theArray, CFRange range, const void *value, + CFComparatorFunction comparator, void *context); + + CF_EXPORT Boolean + CFArrayContainsValue (CFArrayRef theArray, CFRange range, const void *value); + + CF_EXPORT CFIndex CFArrayGetCount (CFArrayRef theArray); + + CF_EXPORT CFIndex + CFArrayGetCountOfValue (CFArrayRef theArray, CFRange range, const void *value); + + CF_EXPORT CFIndex + CFArrayGetFirstIndexOfValue (CFArrayRef theArray, CFRange range, + const void *value); + + CF_EXPORT CFIndex + CFArrayGetLastIndexOfValue (CFArrayRef theArray, CFRange range, + const void *value); + + CF_EXPORT void + CFArrayGetValues (CFArrayRef theArray, CFRange range, const void **values); + + CF_EXPORT const void *CFArrayGetValueAtIndex (CFArrayRef theArray, CFIndex idx); + /** \} */ + + /** \name Applying a Function to Elements + \{ + */ + CF_EXPORT void + CFArrayApplyFunction (CFArrayRef theArray, CFRange range, + CFArrayApplierFunction applier, void *context); + /** \} */ + + /** \name Getting the CFArray Type ID + \{ + */ + CF_EXPORT CFTypeID CFArrayGetTypeID (void); + /** \} */ + + /** \} */ + + /** \defgroup CFMutableArrayRef CFMutableArray Reference + \details \#include + \{ + */ + CF_EXPORT void + CFArrayAppendArray (CFMutableArrayRef theArray, CFArrayRef otherArray, + CFRange otherRange); + + CF_EXPORT void + CFArrayAppendValue (CFMutableArrayRef theArray, const void *value); + + CF_EXPORT CFMutableArrayRef + CFArrayCreateMutable (CFAllocatorRef allocator, CFIndex capacity, + const CFArrayCallBacks * callBacks); + + CF_EXPORT CFMutableArrayRef + CFArrayCreateMutableCopy (CFAllocatorRef allocator, CFIndex capacity, + CFArrayRef theArray); + + CF_EXPORT void + CFArrayExchangeValuesAtIndices (CFMutableArrayRef theArray, CFIndex idx1, + CFIndex idx2); + + CF_EXPORT void + CFArrayInsertValueAtIndex (CFMutableArrayRef theArray, CFIndex idx, + const void *value); + + CF_EXPORT void CFArrayRemoveAllValues (CFMutableArrayRef theArray); + + CF_EXPORT void + CFArrayRemoveValueAtIndex (CFMutableArrayRef theArray, CFIndex idx); + + CF_EXPORT void + CFArrayReplaceValues (CFMutableArrayRef theArray, CFRange range, + const void **newValues, CFIndex newCount); + + CF_EXPORT void + CFArraySetValueAtIndex (CFMutableArrayRef theArray, CFIndex idx, + const void *value); + + CF_EXPORT void + CFArraySortValues (CFMutableArrayRef theArray, CFRange range, + CFComparatorFunction comparator, void *context); + + /** \} */ + + CF_EXTERN_C_END + #endif /* __COREFOUNDATION_CFARRAY_H__ */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,52 ---- + /* CFAvailability.h + + Copyright (C) 2017 Free Software Foundation, Inc. + + Written by: Stefan Bidigaray + Date: August, 2017 + + This file is part of the GNUstep CoreBase Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + */ + + + #ifndef __COREFOUNDATION_CFAVAILABILITY_H__ + #define __COREFOUNDATION_CFAVAILABILITY_H__ + + /* Compiler features */ + #ifndef __has_feature + #define __has_feature(x) 0 + #endif + #ifndef __has_attribute + #define __has_attribute(x) 0 + #endif + #ifndef __has_extension + #define __has_extension(x) __has_feature + #endif + + /* CFEnum macro for type definitions */ + #if (__cplusplus && __cplusplus >= 201103L) + #define CF_ENUM(_type, _name) _type _name; enum : _type + #define CF_OPTIONS(_type, _name) _type _name; enum : _type + #else + #define CF_ENUM(_type, _name) _type _name; enum + #define CF_OPTIONS(_type, _name) _type _name; enum + #endif + + #endif /* __COREFOUNDATION_CFAVAILABILITY_H__ */ + diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,464 ---- + /* CFBase.h + + Copyright (C) 2010 Free Software Foundation, Inc. + + Written by: Stefan Bidigaray + Date: January, 2010 + + This file is part of the GNUstep CoreBase Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + */ + + + #ifndef __COREFOUNDATION_CFBASE_H__ + #define __COREFOUNDATION_CFBASE_H__ + + /* CoreFoundation defines __LITTLE_ENDIAN__ or __BIG_ENDIAN__ so we'll + * do the same here for compatibility. + */ + #if !defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__) + #define __LITTLE_ENDIAN__ 1 + #endif + + #include "CFAvailability.h" + #include "../GNUstepBase/GSVersionMacros.h" + + /* + * CoreFoundation types + */ + typedef unsigned char Boolean; + typedef unsigned char UInt8; + typedef signed char SInt8; + typedef unsigned short UInt16; + typedef signed short SInt16; + typedef unsigned int UInt32; + typedef signed int SInt32; + typedef unsigned long long UInt64; + typedef signed long long SInt64; + typedef SInt32 OSStatus; + + typedef float Float32; + typedef double Float64; + typedef UInt16 UniChar; + typedef UInt8 *StringPtr; + typedef const StringPtr *ConstStringPtr; + typedef UInt8 Str255[256]; + typedef const Str255 *ConstStr255Param; + typedef SInt16 OSErr; + typedef SInt16 RegionCode; + typedef SInt16 LangCode; + typedef SInt16 ScriptCode; + typedef UInt32 FourCharCode; + #ifndef OSTYPE_DECLARED + typedef FourCharCode OSType; + #define OSTYPE_DECLARED + #endif + typedef UInt8 Byte; + typedef SInt8 SignedByte; + + #ifndef UTF32Char /* UTF32Char is also defined in GSConfig.h */ + typedef UInt32 UTF32Char; + #endif + typedef UInt16 UTF16Char; + typedef UInt8 UTF8Char; + + #if !defined(CF_EXTERN_C_BEGIN) + #if defined(__cplusplus) + #define CF_EXTERN_C_BEGIN extern "C" { + #define CF_EXTERN_C_END } + #else + #define CF_EXTERN_C_BEGIN + #define CF_EXTERN_C_END + #endif + #endif + + #if defined(_WIN32) + #if defined(BUILDING_SELF) + #if defined(__cplusplus) + #define CF_EXPORT extern "C" __declspec(dllexport) + #else + #define CF_EXPORT extern __declspec(dllexport) + #endif + #else + #if defined(__cplusplus) + #define CF_EXPORT extern "C" __declspec(dllimport) + #else + #define CF_EXPORT extern __declspec(dllimport) + #endif + #endif + #else + #if defined(__cplusplus) + #define CF_EXPORT extern "C" + #else + #define CF_EXPORT extern + #endif + #endif + + #if !defined(__bool_true_false_are_defined) + #define true 1 + #define false 0 + #endif + + #ifndef TRUE + #define TRUE 1 + #endif + #ifndef FALSE + #define FALSE 0 + #endif + + #if !defined(CF_INLINE) + #if defined(__GNUC__) && (__GNUC__ >= 4) + #define CF_INLINE static __inline__ __attribute__((always_inline)) + #elif defined(__GNUC__) + #define CF_INLINE static __inline__ + #elif defined(__MWERKS__) || defined(__cplusplus) + #define CF_INLINE static inline + #elif defined(_MSC_VER) + #define CF_INLINE static __inline + #elif _WIN32 + #define CF_INLINE static __inline__ + #else + #define CF_INLINE static inline + #endif + #endif + + #if defined(__GNUC__) || defined(__llvm__) + #define GS_PURE_FUNCTION __attribute__((pure)) + #else + #define GS_PURE_FUNCTION + #endif + + CF_EXTERN_C_BEGIN + /** \defgroup CFTypeRef CFType Reference + \{ + */ + typedef unsigned long CFTypeID; + typedef const void *CFTypeRef; + /** @} + */ + + /** \defgroup BaseUtils Base Utilities + \{ + */ + /** An integer value to store a hash code. */ + typedef unsigned long CFHashCode; + /** A bitfield for passing information to functions. Can hold as many bits + as a word. + */ + typedef unsigned long CFOptionFlags; + /** A signed integer representing an index, size, length or count. */ + typedef signed long CFIndex; + + /** A structure that represents a range of items in a container, such as + an array. + */ + typedef struct CFRange CFRange; + struct CFRange + { + CFIndex location; + /**< An integer representing the start location of the range, inclusive. */ + CFIndex length; + /**< An integer representing the total number of items in the range */ + }; + + /** Creates a CFRange structure. + \param location The starting location. + \param length The length. + \return An initialized CFRange structure. + */ + CF_INLINE CFRange + CFRangeMake (CFIndex location, CFIndex length) + { + CFRange range; + + range.location = location; + range.length = length; + return range; + } + + /* Returned by comparison functions */ + typedef enum + { + kCFCompareLessThan = -1, + kCFCompareEqualTo = 0, + kCFCompareGreaterThan = 1 + } CFComparisonResult; + + /* Return when a value is not found */ + enum + { + kCFNotFound = -1 + }; + + /* Definition for standard comparison function callback. */ + typedef CFComparisonResult (*CFComparatorFunction) (const void *val1, + const void *val2, + void *context); + + /* CoreFoundation version numbers */ + /** \name Library Version Numbers + \{ + */ + CF_EXPORT const double kCFCoreFoundationVersionNumber; + #define kCFCoreFoundationVersionNumber10_0 196.40 + #define kCFCoreFoundationVersionNumber10_0_3 196.50 + #define kCFCoreFoundationVersionNumber10_1 226.00 + #define kCFCoreFoundationVersionNumber10_1_1 226.00 + #define kCFCoreFoundationVersionNumber10_1_2 227.20 + #define kCFCoreFoundationVersionNumber10_1_3 227.20 + #define kCFCoreFoundationVersionNumber10_1_4 227.30 + #define kCFCoreFoundationVersionNumber10_2 263.00 + #define kCFCoreFoundationVersionNumber10_2_1 263.10 + #define kCFCoreFoundationVersionNumber10_2_2 263.10 + #define kCFCoreFoundationVersionNumber10_2_3 263.30 + #define kCFCoreFoundationVersionNumber10_2_4 263.30 + #define kCFCoreFoundationVersionNumber10_2_5 263.50 + #define kCFCoreFoundationVersionNumber10_2_6 263.50 + #define kCFCoreFoundationVersionNumber10_2_7 263.50 + #define kCFCoreFoundationVersionNumber10_2_8 263.50 + #define kCFCoreFoundationVersionNumber10_3 299.00 + #define kCFCoreFoundationVersionNumber10_3_1 299.00 + #define kCFCoreFoundationVersionNumber10_3_2 299.00 + #define kCFCoreFoundationVersionNumber10_3_3 299.30 + #define kCFCoreFoundationVersionNumber10_3_4 299.31 + #define kCFCoreFoundationVersionNumber10_3_5 299.31 + #define kCFCoreFoundationVersionNumber10_3_6 299.32 + #define kCFCoreFoundationVersionNumber10_3_7 299.33 + #define kCFCoreFoundationVersionNumber10_3_8 299.33 + #define kCFCoreFoundationVersionNumber10_3_9 299.35 + #define kCFCoreFoundationVersionNumber10_4 368.00 + #define kCFCoreFoundationVersionNumber10_4_1 368.10 + #define kCFCoreFoundationVersionNumber10_4_2 368.11 + #define kCFCoreFoundationVersionNumber10_4_3 368.18 + #define kCFCoreFoundationVersionNumber10_4_4_Intel 368.26 + #define kCFCoreFoundationVersionNumber10_4_4_PowerPC 368.25 + #define kCFCoreFoundationVersionNumber10_4_5_Intel 368.26 + #define kCFCoreFoundationVersionNumber10_4_5_PowerPC 368.25 + #define kCFCoreFoundationVersionNumber10_4_6_Intel 368.26 + #define kCFCoreFoundationVersionNumber10_4_6_PowerPC 368.25 + #define kCFCoreFoundationVersionNumber10_4_7 368.27 + #define kCFCoreFoundationVersionNumber10_4_8 368.27 + #define kCFCoreFoundationVersionNumber10_4_9 368.28 + #define kCFCoreFoundationVersionNumber10_4_10 368.28 + #define kCFCoreFoundationVersionNumber10_4_11 368.31 + #define kCFCoreFoundationVersionNumber10_5 476.00 + #define kCFCoreFoundationVersionNumber10_5_1 476.00 + #define kCFCoreFoundationVersionNumber10_5_2 476.10 + #define kCFCoreFoundationVersionNumber10_5_3 476.13 + #define kCFCoreFoundationVersionNumber10_5_4 476.14 + #define kCFCoreFoundationVersionNumber10_5_5 476.15 + #define kCFCoreFoundationVersionNumber10_5_6 476.17 + /** \} */ + /** \} */ + + #if __has_feature(attribute_cf_returns_retained) + #define CF_RETURNS_RETAINED __attribute__((cf_returns_retained)) + #else + #define CF_RETURNS_RETAINED + #endif + + #if __has_feature(attribute_cf_returns_not_retained) + #define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained)) + #else + #define CF_RETURNS_NOT_RETAINED + #endif + + /** \ingroup CFPropertyListRef + */ + typedef CFTypeRef CFPropertyListRef; + + /** \ingroup CFStringRef + */ + typedef const struct __CFString *CFStringRef; + /** \ingroup CFMutableStringRef + */ + typedef struct __CFString *CFMutableStringRef; + + + + /** \defgroup CFAllocatorRef CFAllocator Reference + \brief CFAllocator is an opaque type used to allocate and deallocate + memory. + \{ + */ + /** \brief A reference to a CFAllocator object. + */ + typedef const struct __CFAllocator *CFAllocatorRef; + + typedef void *(*CFAllocatorAllocateCallBack) (CFIndex allocSize, + CFOptionFlags hint, void *info); + typedef void (*CFAllocatorDeallocateCallBack) (void *ptr, void *info); + typedef void *(*CFAllocatorReallocateCallBack) (void *ptr, + CFIndex newsize, + CFOptionFlags hint, void *info); + typedef CFIndex (*CFAllocatorPreferredSizeCallBack) (CFIndex size, + CFOptionFlags hint, + void *info); + typedef const void *(*CFAllocatorRetainCallBack) (const void *info); + typedef void (*CFAllocatorReleaseCallBack) (const void *info); + typedef CFStringRef (*CFAllocatorCopyDescriptionCallBack) (const void *info); + + struct _CFAllocatorContext + { + CFIndex version; + void *info; + CFAllocatorRetainCallBack retain; + CFAllocatorReleaseCallBack release; + CFAllocatorCopyDescriptionCallBack copyDescription; + CFAllocatorAllocateCallBack allocate; + CFAllocatorReallocateCallBack reallocate; + CFAllocatorDeallocateCallBack deallocate; + CFAllocatorPreferredSizeCallBack preferredSize; + }; + typedef struct _CFAllocatorContext CFAllocatorContext; + + /** The default allocator and is equivalent to NULL. + \see CFAllocatorGetDefault() + \see CFAllocatorSetDefault() + */ + CF_EXPORT CFAllocatorRef kCFAllocatorDefault; + /** The default system allocator is used internally by GNUstep and is the + default allocator if none is been defined. + \see CFAllocatorSetDefault() + */ + CF_EXPORT CFAllocatorRef kCFAllocatorSystemDefault; + /** An allocator that uses the system's malloc, realloc and free functions. + */ + CF_EXPORT CFAllocatorRef kCFAllocatorMalloc; + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + /** Equivalent to kCFAllocatorSystemDefault + */ + CF_EXPORT CFAllocatorRef kCFAllocatorMallocZone; + #endif + /** The NULL allocator does perform any operations. Can be passed as + a deallocator if you do not want GNUstep to deallocate the data. + */ + CF_EXPORT CFAllocatorRef kCFAllocatorNull; + /** This is a special case allocator directing CFAllocatorCreate() to use + the given CFAllocatorContext structure to allocate the new allocator. + */ + CF_EXPORT CFAllocatorRef kCFAllocatorUseContext; + + /** Create a new CFAllocator. + \param allocator The allocator used to create this allocator or + kCFAllocatorUseContext to use the functions in \b context. + \param context The new allocator's context functions. + \return A new CFAllocator or NULL in case of failure. + \see CFAllocatorContext + */ + CF_EXPORT CFAllocatorRef + CFAllocatorCreate (CFAllocatorRef allocator, CFAllocatorContext * context); + + /** Allocate new memory. + \param allocator The CFAllocator to use. + \param size The number of bytes to allocate. + \param hint Option flags. Currently unused and should be 0. + \return Newly allocated memory of NULL in case of failure. + \see CFAllocatorDeallocate() + */ + CF_EXPORT void *CFAllocatorAllocate (CFAllocatorRef allocator, CFIndex size, + CFOptionFlags hint); + + /** Deallocate the memory pointed to by \b ptr. + \param allocator The CFAllocator to use. + \param ptr A pointer previously allocated by CFAllocatorAllocate(). + \see CFAllocatorAllocate() + */ + CF_EXPORT void CFAllocatorDeallocate (CFAllocatorRef allocator, void *ptr); + + CF_EXPORT CFIndex + CFAllocatorGetPreferredSizeForSize (CFAllocatorRef allocator, CFIndex size, + CFOptionFlags hint); + + CF_EXPORT void *CFAllocatorReallocate (CFAllocatorRef allocator, void *ptr, + CFIndex newsize, CFOptionFlags hint); + + CF_EXPORT CFAllocatorRef CFAllocatorGetDefault (void); + + CF_EXPORT void CFAllocatorSetDefault (CFAllocatorRef allocator); + + CF_EXPORT void + CFAllocatorGetContext (CFAllocatorRef allocator, CFAllocatorContext * context); + + CF_EXPORT CFTypeID CFAllocatorGetTypeID (void); + /** \} */ + + + + /** \ingroup CFTypeRef + \{ + */ + /* These function will be implemented in CFRuntime.c since they + require runtime support. */ + CF_EXPORT CFStringRef CFCopyDescription (CFTypeRef cf); + + CF_EXPORT CFStringRef CFCopyTypeIDDescription (CFTypeID typeID); + + CF_EXPORT Boolean CFEqual (CFTypeRef cf1, CFTypeRef cf2); + + CF_EXPORT CFAllocatorRef CFGetAllocator (CFTypeRef cf); + + CF_EXPORT CFIndex CFGetRetainCount (CFTypeRef cf); + + CF_EXPORT CFTypeID CFGetTypeID (CFTypeRef cf); + + CF_EXPORT CFHashCode CFHash (CFTypeRef cf); + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + CF_EXPORT CFTypeRef CFMakeCollectable (CFTypeRef cf); + #endif + + CF_EXPORT void CFRelease (CFTypeRef cf); + + CF_EXPORT CFTypeRef CFRetain (CFTypeRef cf); + + CF_EXPORT CFTypeRef CFAutorelease(CFTypeRef arg); + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_7, GS_API_LATEST) + CF_EXPORT void *_CFBridgingRelease (CFTypeRef cf); + CF_EXPORT CFTypeRef _CFBridgingRetain (void *obj); + + #if __has_feature(objc_arc) + #define CFBridgingRetain(x) (__bridge_retained CFTypeRef)(x) + #define CFBridgingRelease(x) (__bridge_transfer id)(x) + #elif __OBJC__ + #define CFBridgingRetain(x) _CFBridgingRetain((void *)(x)) + #define CFBridgingRelease(x) (id)_CFBridgingRelease((x)) + #else + #define CFBridgingRetain(x) _CFBridgingRetain((void *)(x)) + #define CFBridgingRelease(x) _CFBridgingRelease((x)) + #endif + #endif + /** \} */ + + + + /** \defgroup CFNullRef CFNull Reference + \{ + */ + #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) + typedef struct __CFNull *CFNullRef; + + CF_EXPORT CFNullRef kCFNull; + + CFTypeID CFNullGetTypeID (void); + #endif + /** \} */ + + CF_EXTERN_C_END + #endif /* __COREFOUNDATION_CFBASE_H__ */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,173 ---- + /* CFCharacterSet.h + + Copyright (C) 2012 Free Software Foundation, Inc. + + Written by: Stefan Bidigaray + Date: January, 2012 + + This file is part of the GNUstep CoreBase Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + */ + + #ifndef __COREFOUNDATION_CFCHARACTERSET_H__ + #define __COREFOUNDATION_CFCHARACTERSET_H__ + + #include "CFBase.h" + #include "CFData.h" + + CF_EXTERN_C_BEGIN + + /** \ingroup CFCharacterSetRef */ + typedef const struct __CFCharacterSet * CFCharacterSetRef; + /** \ingroup CFMutableCharacterSetRef */ + typedef struct __CFCharacterSet * CFMutableCharacterSetRef; + + /** \defgroup CFCharacterSetRef CFCharacterSet Reference + \{ + */ + typedef enum + { + kCFCharacterSetControl = 1, + kCFCharacterSetWhitespace, + kCFCharacterSetWhitespaceAndNewline, + kCFCharacterSetDecimalDigit, + kCFCharacterSetLetter, + kCFCharacterSetLowercaseLetter, + kCFCharacterSetUppercaseLetter, + kCFCharacterSetNonBase, + kCFCharacterSetDecomposable, + kCFCharacterSetAlphaNumeric, + kCFCharacterSetPunctuation, + #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) + kCFCharacterSetCapitalizedLetter = 13, + #endif + #if OS_API_VERSION(MAC_OS_X_VERSION_10_3, GS_API_LATEST) + kCFCharacterSetSymbol = 14, + #endif + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) + kCFCharacterSetNewline = 15, + #endif + kCFCharacterSetIllegal = 12 + } CFCharacterSetPredefinedSet; + + + + /** \name Creating Character Sets + \{ + */ + #if OS_API_VERSION(MAC_OS_X_VERSION_10_3, GS_API_LATEST) + CF_EXPORT CFCharacterSetRef + CFCharacterSetCreateCopy (CFAllocatorRef alloc, CFCharacterSetRef set); + #endif + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) + CF_EXPORT CFCharacterSetRef + CFCharacterSetCreateInvertedSet (CFAllocatorRef alloc, CFCharacterSetRef set); + #endif + + CF_EXPORT CFCharacterSetRef + CFCharacterSetCreateWithCharactersInRange (CFAllocatorRef alloc, + CFRange range); + + CF_EXPORT CFCharacterSetRef + CFCharacterSetCreateWithCharactersInString (CFAllocatorRef alloc, + CFStringRef string); + + CF_EXPORT CFCharacterSetRef + CFCharacterSetCreateWithBitmapRepresentation (CFAllocatorRef alloc, + CFDataRef data); + /** \} */ + + /** \name Getting Predefined Character Sets + \{ + */ + CF_EXPORT CFCharacterSetRef + CFCharacterSetGetPredefined (CFCharacterSetPredefinedSet setIdentifier); + /** \} */ + + /** \name Querying Character Sets + \{ + */ + CF_EXPORT CFDataRef + CFCharacterSetCreateBitmapRepresentation (CFAllocatorRef alloc, + CFCharacterSetRef set); + + CF_EXPORT Boolean + CFCharacterSetIsCharacterMember (CFCharacterSetRef set, UniChar c); + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) + CF_EXPORT Boolean + CFCharacterSetHasMemberInPlane (CFCharacterSetRef set, CFIndex plane); + + CF_EXPORT Boolean + CFCharacterSetIsLongCharacterMember (CFCharacterSetRef set, UTF32Char c); + + CF_EXPORT Boolean + CFCharacterSetIsSupersetOfSet (CFCharacterSetRef set, + CFCharacterSetRef otherSet); + #endif + /** \} */ + + /** \name Getting the Character Set Type Identifier + \{ + */ + CF_EXPORT CFTypeID + CFCharacterSetGetTypeID (void); + /** \} */ + /** \} */ + + /** \defgroup CFMutableCharacterSetRef CFMutableCharacterSet Reference + \{ + */ + CF_EXPORT CFMutableCharacterSetRef + CFCharacterSetCreateMutable (CFAllocatorRef alloc); + + CF_EXPORT CFMutableCharacterSetRef + CFCharacterSetCreateMutableCopy (CFAllocatorRef alloc, CFCharacterSetRef set); + + CF_EXPORT void + CFCharacterSetAddCharactersInRange (CFMutableCharacterSetRef set, + CFRange range); + + CF_EXPORT void + CFCharacterSetAddCharactersInString (CFMutableCharacterSetRef set, + CFStringRef string); + + CF_EXPORT void + CFCharacterSetRemoveCharactersInRange (CFMutableCharacterSetRef set, + CFRange range); + + CF_EXPORT void + CFCharacterSetRemoveCharactersInString (CFMutableCharacterSetRef set, + CFStringRef string); + + CF_EXPORT void + CFCharacterSetIntersect (CFMutableCharacterSetRef set, + CFCharacterSetRef otherSet); + + CF_EXPORT void + CFCharacterSetInvert (CFMutableCharacterSetRef set); + + CF_EXPORT void + CFCharacterSetUnion (CFMutableCharacterSetRef set, CFCharacterSetRef otherSet); + /** \} */ + + CF_EXTERN_C_END + + #endif /* __COREFOUNDATION_CFCHARACTERSET_H__ */ + diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,114 ---- + /* CFData.h + + Copyright (C) 2010 Free Software Foundation, Inc. + + Written by: Stefan Bidigaray + Date: January, 2010 + + This file is part of CoreBase. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + */ + + #ifndef __COREFOUNDATION_CFDATA_H__ + #define __COREFOUNDATION_CFDATA_H__ + + #include "CFBase.h" + + CF_EXTERN_C_BEGIN + /** \ingroup CFDataRef */ + typedef const struct __CFData *CFDataRef; + /** \ingroup CFMutableDataRef */ + typedef struct __CFData *CFMutableDataRef; + + /** \defgroup CFDataRef CFData Reference + \{ + */ + /** \name Creating a CFData Object + \{ + */ + CF_EXPORT CFDataRef + CFDataCreate (CFAllocatorRef allocator, const UInt8 * bytes, CFIndex length); + + CF_EXPORT CFDataRef + CFDataCreateCopy (CFAllocatorRef allocator, CFDataRef theData); + + CF_EXPORT CFDataRef + CFDataCreateWithBytesNoCopy (CFAllocatorRef allocator, const UInt8 * bytes, + CFIndex length, CFAllocatorRef bytesDeallocator); + /** \} */ + + /** \name Examining a CFData Object + \{ + */ + CF_EXPORT const UInt8 *CFDataGetBytePtr (CFDataRef theData); + + CF_EXPORT void + CFDataGetBytes (CFDataRef theData, CFRange range, UInt8 * buffer); + + CF_EXPORT CFIndex CFDataGetLength (CFDataRef theData); + /** \} */ + + /** \name Getting the CFData Type ID + \{ + */ + CF_EXPORT CFTypeID CFDataGetTypeID (void); + /** \} */ + /** \} */ + + /** \defgroup CFMutableDataRef CFMutableData Reference + \{ + */ + /** \name Creating a Mutable Data Object + \{ + */ + CF_EXPORT CFMutableDataRef + CFDataCreateMutable (CFAllocatorRef allocator, CFIndex capacity); + + CF_EXPORT CFMutableDataRef + CFDataCreateMutableCopy (CFAllocatorRef allocator, CFIndex capacity, + CFDataRef theData); + /** \} */ + + /** \name Accessing Mutable Data + \{ + */ + CF_EXPORT UInt8 *CFDataGetMutableBytePtr (CFMutableDataRef theData); + /** \} */ + + /** \name Modifying a Mutable Data Object + \{ + */ + CF_EXPORT void + CFDataAppendBytes (CFMutableDataRef theData, const UInt8 * bytes, + CFIndex length); + + CF_EXPORT void CFDataDeleteBytes (CFMutableDataRef theData, CFRange range); + + CF_EXPORT void + CFDataReplaceBytes (CFMutableDataRef theData, CFRange range, + const UInt8 * newBytes, CFIndex newLength); + + CF_EXPORT void + CFDataIncreaseLength (CFMutableDataRef theData, CFIndex extraLength); + + CF_EXPORT void CFDataSetLength (CFMutableDataRef theData, CFIndex length); + /** \} */ + /** \} */ + + CF_EXTERN_C_END + #endif /* __COREFOUNDATION_CFDATA_H__ */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,174 ---- + /* CFDictionary.h + + Copyright (C) 2010 Free Software Foundation, Inc. + + Written by: Stefan Bidigaray + Date: January, 2010 + + This file is part of the GNUstep CoreBase Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + */ + + #ifndef __COREFOUNDATION_CFDICTIONARY_H__ + #define __COREFOUNDATION_CFDICTIONARY_H__ 1 + + #include "CFBase.h" + + CF_EXTERN_C_BEGIN + /** \ingroup CFDictionaryRef */ + typedef const struct __CFDictionary *CFDictionaryRef; + /** \ingroup CFMutableDictionaryRef */ + typedef struct __CFDictionary *CFMutableDictionaryRef; + + /** \defgroup CFDictionaryRef CFDictionary Reference + \{ + */ + typedef void (*CFDictionaryApplierFunction) (const void *key, + const void *value, void *context); + + typedef CFStringRef (*CFDictionaryCopyDescriptionCallBack) (const void *value); + typedef Boolean (*CFDictionaryEqualCallBack) (const void *value1, + const void *value2); + typedef CFHashCode (*CFDictionaryHashCallBack) (const void *value); + typedef void (*CFDictionaryReleaseCallBack) (CFAllocatorRef allocator, + const void *value); + typedef const void *(*CFDictionaryRetainCallBack) (CFAllocatorRef allocator, + const void *value); + + typedef struct _CFDictionaryKeyCallBacks CFDictionaryKeyCallBacks; + struct _CFDictionaryKeyCallBacks + { + CFIndex version; + CFDictionaryRetainCallBack retain; + CFDictionaryReleaseCallBack release; + CFDictionaryCopyDescriptionCallBack copyDescription; + CFDictionaryEqualCallBack equal; + CFDictionaryHashCallBack hash; + }; + + typedef struct _CFDictionaryValueCallBacks CFDictionaryValueCallBacks; + struct _CFDictionaryValueCallBacks + { + CFIndex version; + CFDictionaryRetainCallBack retain; + CFDictionaryReleaseCallBack release; + CFDictionaryCopyDescriptionCallBack copyDescription; + CFDictionaryEqualCallBack equal; + }; + + CF_EXPORT const CFDictionaryKeyCallBacks kCFCopyStringDictionaryKeyCallBacks; + CF_EXPORT const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks; + CF_EXPORT const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks; + + /** \name Creating a dictionary + \{ + */ + CF_EXPORT CFDictionaryRef + CFDictionaryCreate (CFAllocatorRef allocator, const void **keys, + const void **values, CFIndex numValues, + const CFDictionaryKeyCallBacks * keyCallBacks, + const CFDictionaryValueCallBacks * valueCallBacks); + + CF_EXPORT CFDictionaryRef + CFDictionaryCreateCopy (CFAllocatorRef allocator, CFDictionaryRef theDict); + /** \} */ + + /** \name Examining a dictionary + \{ + */ + CF_EXPORT Boolean + CFDictionaryContainsKey (CFDictionaryRef theDict, const void *key); + + CF_EXPORT Boolean + CFDictionaryContainsValue (CFDictionaryRef theDict, const void *value); + + CF_EXPORT CFIndex CFDictionaryGetCount (CFDictionaryRef theDict); + + CF_EXPORT CFIndex + CFDictionaryGetCountOfKey (CFDictionaryRef theDict, const void *key); + + CF_EXPORT CFIndex + CFDictionaryGetCountOfValue (CFDictionaryRef theDict, const void *value); + + CF_EXPORT void + CFDictionaryGetKeysAndValues (CFDictionaryRef theDict, const void **keys, + const void **values); + + CF_EXPORT const void *CFDictionaryGetValue (CFDictionaryRef theDict, + const void *key); + + CF_EXPORT Boolean + CFDictionaryGetValueIfPresent (CFDictionaryRef theDict, const void *key, + const void **value); + /** \} */ + + /** \name Applying a funcation to a dictionary + \{ + */ + CF_EXPORT void + CFDictionaryApplyFunction (CFDictionaryRef theDict, + CFDictionaryApplierFunction applier, void *context); + /** \} */ + + /** \name Getting the CFDictionary type ID + \{ + */ + CF_EXPORT CFTypeID CFDictionaryGetTypeID (void); + /** \} */ + /** \} */ + + /** \defgroup CFMutableDictionaryRef CFMutableDictionary Reference + \{ + */ + /** \name Creating a Mutable Dictionary + \{ + */ + CF_EXPORT CFMutableDictionaryRef + CFDictionaryCreateMutable (CFAllocatorRef allocator, CFIndex capacity, + const CFDictionaryKeyCallBacks * keyCallBacks, + const CFDictionaryValueCallBacks * valueCallBacks); + + CF_EXPORT CFMutableDictionaryRef + CFDictionaryCreateMutableCopy (CFAllocatorRef allocator, CFIndex capacity, + CFDictionaryRef theDict); + /** \} */ + + /** \name Modifying a Dictionary + \{ + */ + CF_EXPORT void + CFDictionaryAddValue (CFMutableDictionaryRef theDict, const void *key, + const void *value); + + CF_EXPORT void CFDictionaryRemoveAllValues (CFMutableDictionaryRef theDict); + + CF_EXPORT void + CFDictionaryRemoveValue (CFMutableDictionaryRef theDict, const void *key); + + CF_EXPORT void + CFDictionaryReplaceValue (CFMutableDictionaryRef theDict, const void *key, + const void *value); + + CF_EXPORT void + CFDictionarySetValue (CFMutableDictionaryRef theDict, const void *key, + const void *value); + /** \} */ + /** \} */ + + CF_EXTERN_C_END + #endif /* __COREFOUNDATION_CFDICTIONARY_H__ */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,249 ---- + /* CFLocale.h + + Copyright (C) 2010 Free Software Foundation, Inc. + + Written by: Stefan Bidigaray + Date: March, 2011 + + This file is part of the GNUstep CoreBase Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + */ + + #ifndef __COREFOUNDATION_CFLOCALE__ + #define __COREFOUNDATION_CFLOCALE__ 1 + + #include "CFBase.h" + + #include "CFArray.h" + #include "CFDictionary.h" + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_3, GS_API_LATEST) + + CF_EXTERN_C_BEGIN + + /** \defgroup CFLocaleRef CFLocale Reference + \brief CFLocale provides basic functionality for language and/or region + specific operations. + + Locale-sensitive operations, such as collation, calendars and + capitalization, may use CFLocale objects to provide language and/or region + specific functionality. + + CFLocale is "toll-free bridged" to NSLocale. + + \{ + */ + typedef const struct __CFLocale *CFLocaleRef; + + /** + */ + enum + { + kCFLocaleLanguageDirectionUnknown = 0, + kCFLocaleLanguageDirectionLeftToRight = 1, + kCFLocaleLanguageDirectionRightToLeft = 2, + kCFLocaleLanguageDirectionTopToBottom = 3, + kCFLocaleLanguageDirectionBottomToTop = 4 + }; + typedef CFIndex CFLocaleLanguageDirection; + + /** \name CFLocale Property Keys + \{ + */ + CF_EXPORT const CFStringRef kCFLocaleMeasurementSystem; /* CFString */ + CF_EXPORT const CFStringRef kCFLocaleDecimalSeparator; /* CFString */ + CF_EXPORT const CFStringRef kCFLocaleGroupingSeparator; /* CFString */ + CF_EXPORT const CFStringRef kCFLocaleCurrencySymbol; /* CFString */ + CF_EXPORT const CFStringRef kCFLocaleCurrencyCode; /* CFString */ + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + CF_EXPORT const CFStringRef kCFLocaleIdentifier; /* CFString */ + CF_EXPORT const CFStringRef kCFLocaleLanguageCode; /* CFString */ + CF_EXPORT const CFStringRef kCFLocaleCountryCode; /* CFString */ + CF_EXPORT const CFStringRef kCFLocaleScriptCode; /* CFString */ + CF_EXPORT const CFStringRef kCFLocaleVariantCode; /* CFString */ + CF_EXPORT const CFStringRef kCFLocaleExemplarCharacterSet; /* CFCharacterSet */ + CF_EXPORT const CFStringRef kCFLocaleCalendarIdentifier; /* CFString */ + CF_EXPORT const CFStringRef kCFLocaleCalendar; /* CFCalendar */ + CF_EXPORT const CFStringRef kCFLocaleCollationIdentifier; /* CFString */ + CF_EXPORT const CFStringRef kCFLocaleUsesMetricSystem; /* CFBoolean */ + #endif + #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) + CF_EXPORT const CFStringRef kCFLocaleCollatorIdentifier; /* CFString */ + CF_EXPORT const CFStringRef kCFLocaleQuotationBeginDelimiterKey; /* CFString */ + CF_EXPORT const CFStringRef kCFLocaleQuotationEndDelimiterKey; /* CFString */ + CF_EXPORT const CFStringRef kCFLocaleAlternateQuotationBeginDelimiterKey; /* CFString */ + CF_EXPORT const CFStringRef kCFLocaleAlternateQuotationEndDelimiterKey; /* CFString */ + #endif + /** \} */ + + /** \name CFCalendar Identifiers + \{ + */ + CF_EXPORT const CFStringRef kCFGregorianCalendar; + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + CF_EXPORT const CFStringRef kCFBuddhistCalendar; + CF_EXPORT const CFStringRef kCFChineseCalendar; + CF_EXPORT const CFStringRef kCFHebrewCalendar; + CF_EXPORT const CFStringRef kCFIslamicCalendar; + CF_EXPORT const CFStringRef kCFIslamicCivilCalendar; + CF_EXPORT const CFStringRef kCFJapaneseCalendar; + #endif + #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) + CF_EXPORT const CFStringRef kCFRepublicOfChinaCalendar; + CF_EXPORT const CFStringRef kCFPersianCalendar; + CF_EXPORT const CFStringRef kCFIndianCalendar; + CF_EXPORT const CFStringRef kCFISO8601Calendar; + #endif + /** \} */ + + /** CFLocale Change Notification + */ + CF_EXPORT const CFStringRef kCFLocaleCurrentLocaleDidChangeNotification; + + + + /** \name Creating a Locale + \{ + */ + CF_EXPORT CFLocaleRef + CFLocaleCopyCurrent (void); + + CF_EXPORT CFLocaleRef + CFLocaleCreate (CFAllocatorRef allocator, + CFStringRef localeIdent); + + CF_EXPORT CFLocaleRef + CFLocaleCreateCopy (CFAllocatorRef allocator, + CFLocaleRef locale); + + CF_EXPORT CFLocaleRef + CFLocaleGetSystem (void); + /** \} */ + + /** \name Getting System Locale Information + \{ + */ + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + CF_EXPORT CFArrayRef + CFLocaleCopyAvailableLocaleIdentifiers (void); + #endif + /** \} */ + + /** \name Getting ISO Information + \{ + */ + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + CF_EXPORT CFArrayRef + CFLocaleCopyISOCountryCodes (void); + + CF_EXPORT CFArrayRef + CFLocaleCopyISOLanguageCodes (void); + + CF_EXPORT CFArrayRef + CFLocaleCopyISOCurrencyCodes (void); + #endif + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) + CF_EXPORT CFArrayRef + CFLocaleCopyCommonISOCurrencyCodes (void); + #endif + /** \{ */ + + /** \name Accessing Language Information + \{ + */ + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) + CF_EXPORT CFArrayRef + CFLocaleCopyPreferredLanguages (void); + #endif + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) + CF_EXPORT CFLocaleLanguageDirection + CFLocaleGetLanguageCharacterDirection (CFStringRef isoLangCode); + + CF_EXPORT CFLocaleLanguageDirection + CFLocaleGetLanguageLineDirection (CFStringRef isoLangCode); + #endif + /** \} */ + + /** \name Getting Information About a Locale + \{ + */ + CF_EXPORT CFStringRef + CFLocaleCopyDisplayNameForPropertyValue (CFLocaleRef displayLocale, + CFStringRef key, + CFStringRef value); + + CF_EXPORT CFTypeRef + CFLocaleGetValue (CFLocaleRef locale, + CFStringRef key); + + CF_EXPORT CFStringRef + CFLocaleGetIdentifier (CFLocaleRef locale); + /** \} */ + + /** \name Getting and Creating Locale Identifiers + \{ + */ + CF_EXPORT CFStringRef + CFLocaleCreateCanonicalLocaleIdentifierFromString (CFAllocatorRef allocator, + CFStringRef localeIdent); + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + CF_EXPORT CFStringRef + CFLocaleCreateCanonicalLanguageIdentifierFromString (CFAllocatorRef allocator, + CFStringRef localeIdent); + + CF_EXPORT CFDictionaryRef + CFLocaleCreateComponentsFromLocaleIdentifier (CFAllocatorRef allocator, + CFStringRef localeIdent); + + CF_EXPORT CFStringRef + CFLocaleCreateLocaleIdentifierFromComponents (CFAllocatorRef allocator, + CFDictionaryRef dictionary); + #endif + /** \} */ + + /** \name Windows Locale Codes + \{ + */ + #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) + CF_EXPORT CFStringRef + CFLocaleCreateLocaleIdentifierFromWindowsLocaleCode (CFAllocatorRef allocator, + UInt32 lcid); + + CF_EXPORT UInt32 + CFLocaleGetWindowsLocaleCodeFromLocaleIdentifier (CFStringRef localeIdent); + #endif + /** \} */ + + /** \name Getting the CFLocale Type ID + \{ + */ + CF_EXPORT CFTypeID + CFLocaleGetTypeID (void); + /** \} */ + + /** \} */ + + CF_EXTERN_C_END + + #endif /* OS_API_VERSION >= MAC_OS_X_VERSION_10_3 */ + + #endif /* __COREFOUNDATION_CFLOCALE__ */ + diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,593 ---- + /* CFString.h + + Copyright (C) 2010 Free Software Foundation, Inc. + + Written by: Stefan Bidigaray + Date: January, 2010 + + This file is part of CoreBase. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; see the file COPYING.LIB. + If not, see or write to the + Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + */ + + #ifndef __COREFOUNDATION_CFSTRING_H__ + #define __COREFOUNDATION_CFSTRING_H__ + + #include "CFBase.h" + #include "CFArray.h" + #include "CFCharacterSet.h" + #include "CFData.h" + #include "CFDictionary.h" + #include "CFLocale.h" + + #include + + CF_EXTERN_C_BEGIN + + /** \defgroup CFStringRef CFString Reference + \brief The CFString type defines opaque objects representing strings. + + CFString is "toll-free bridged" to NSString. + + \{ + */ + + /* + * Data Types + */ + typedef UInt32 CFStringEncoding; + + /* + * Constants + */ + typedef enum + { + kCFCompareCaseInsensitive = 1, + kCFCompareBackwards = 4, + kCFCompareAnchored = 8, + kCFCompareNonliteral = 16, + kCFCompareLocalized = 32, + kCFCompareNumerically = 64, + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) + kCFCompareDiacriticInsensitive = 128, + kCFCompareWidthInsensitive = 256, + kCFCompareForcedOrdering = 512 + #endif + } CFStringCompareFlags; + + enum CFStringBuiltInEncodings + { + kCFStringEncodingMacRoman = 0, + kCFStringEncodingWindowsLatin1 = 0x0500, + kCFStringEncodingISOLatin1 = 0x0201, + kCFStringEncodingNextStepLatin = 0x0B01, + kCFStringEncodingASCII = 0x0600, + kCFStringEncodingUnicode = 0x0100, + kCFStringEncodingUTF8 = 0x08000100, + kCFStringEncodingNonLossyASCII = 0x0BFF, + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + kCFStringEncodingUTF16 = 0x0100, + kCFStringEncodingUTF16BE = 0x10000100, + kCFStringEncodingUTF16LE = 0x14000100, + kCFStringEncodingUTF32 = 0x0c000100, + kCFStringEncodingUTF32BE = 0x18000100, + kCFStringEncodingUTF32LE = 0x1c000100 + #endif + }; + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) + # define kCFStringEncodingInvalidId (0xffffffffU) + #endif + + /** \def CFSTR(x) + \brief Creates a constant string object. + + \note This macro will create the constant string at runtime. + */ + /* The 'pure' attribute tells the compiler that this function will always + return the same result with the same input. If it has any skill, then + constant propagation passes will magically make sure that this function is + called as few times as possible. */ + CF_EXPORT CFStringRef + __CFStringMakeConstantString (const char *str) GS_PURE_FUNCTION; + //#define CFSTR(x) __CFStringMakeConstantString("" x "") + + #ifdef __CONSTANT_CFSTRINGS__ + #define CFSTR(x) ((CFStringRef) __builtin___CFStringMakeConstantString ("" x "")) + #else + #define CFSTR(x) __CFStringMakeConstantString("" x "") + #endif + + /** \name Creating a CFString + \{ + */ + CF_EXPORT CFArrayRef + CFStringCreateArrayBySeparatingStrings (CFAllocatorRef alloc, + CFStringRef theString, CFStringRef separatorString); + + CF_EXPORT CFStringRef + CFStringCreateByCombiningStrings (CFAllocatorRef alloc, CFArrayRef theArray, + CFStringRef separatorString); + + CF_EXPORT CFStringRef + CFStringCreateCopy (CFAllocatorRef alloc, CFStringRef theString); + + CF_EXPORT CFStringRef + CFStringCreateFromExternalRepresentation (CFAllocatorRef alloc, CFDataRef data, + CFStringEncoding encoding); + + CF_EXPORT CFStringRef + CFStringCreateWithBytes (CFAllocatorRef alloc, const UInt8 *bytes, + CFIndex numBytes, CFStringEncoding encoding, Boolean isExternalRepresentation); + + CF_EXPORT CFStringRef + CFStringCreateWithCharacters (CFAllocatorRef alloc, const UniChar *chars, + CFIndex numChars); + + CF_EXPORT CFStringRef + CFStringCreateWithCharactersNoCopy (CFAllocatorRef alloc, const UniChar *chars, + CFIndex numChars, CFAllocatorRef contentsDeallocator); + + CF_EXPORT CFStringRef + CFStringCreateWithCString (CFAllocatorRef alloc, const char *cStr, + CFStringEncoding encoding); + + CF_EXPORT CFStringRef + CFStringCreateWithCStringNoCopy (CFAllocatorRef alloc, const char *cStr, + CFStringEncoding encoding, CFAllocatorRef contentsDeallocator); + + CF_EXPORT CFStringRef + CFStringCreateWithFormat (CFAllocatorRef alloc, CFDictionaryRef formatOptions, + CFStringRef format, ...); + + CF_EXPORT CFStringRef + CFStringCreateWithFormatAndArguments (CFAllocatorRef alloc, + CFDictionaryRef formatOptions, CFStringRef format, va_list arguments); + + CF_EXPORT CFStringRef + CFStringCreateWithSubstring (CFAllocatorRef alloc, CFStringRef str, + CFRange range); + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + CF_EXPORT CFStringRef + CFStringCreateWithFileSystemRepresentation (CFAllocatorRef alloc, + const char *buffer); + #endif + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) + CF_EXPORT CFStringRef + CFStringCreateWithBytesNoCopy (CFAllocatorRef alloc, const UInt8 *bytes, + CFIndex numBytes, CFStringEncoding encoding, Boolean isExternalReprentation, + CFAllocatorRef contentsDeallocator); + #endif + /** \} */ + + /** \name Searching CFStrings + \{ + */ + CF_EXPORT CFArrayRef + CFStringCreateArrayWithFindResults (CFAllocatorRef alloc, CFStringRef theString, + CFStringRef stringToFind, CFRange rangeToSearch, + CFStringCompareFlags compareOptions); + + CF_EXPORT CFRange + CFStringFind (CFStringRef theString, CFStringRef stringToFind, + CFStringCompareFlags compareOptions); + + CF_EXPORT Boolean + CFStringFindWithOptions (CFStringRef theString, CFStringRef stringToFind, + CFRange rangeToSearch, CFStringCompareFlags searchOptions, CFRange *result); + + CF_EXPORT Boolean + CFStringFindWithOptionsAndLocale (CFStringRef theString,CFStringRef stringToFind, + CFRange rangeToSearch, CFStringCompareFlags searchOptions, + CFLocaleRef locale, CFRange *result); + + CF_EXPORT void + CFStringGetLineBounds (CFStringRef theString, CFRange range, + CFIndex *lineBeginIndex, CFIndex *lineEndIndex, CFIndex *contentsEndIndex); + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) + CF_EXPORT Boolean + CFStringFindCharacterFromSet (CFStringRef theString, CFCharacterSetRef theSet, + CFRange rangeToSearch, CFStringCompareFlags searchOptions, CFRange *result); + #endif + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) + CF_EXPORT void + CFStringGetParagraphBounds (CFStringRef string, CFRange range, + CFIndex *parBeginIndex, CFIndex *parEndIndex, CFIndex *contentsEndIndex); + #endif + /** \} */ + + /** \name Comparing String + \{ + */ + CF_EXPORT CFComparisonResult + CFStringCompare (CFStringRef theString1, CFStringRef theString2, + CFStringCompareFlags compareOptions); + + CF_EXPORT CFComparisonResult + CFStringCompareWithOptions (CFStringRef theString1, CFStringRef theString2, + CFRange rangeToCOmpare, CFStringCompareFlags compareOptions); + + CF_EXPORT Boolean + CFStringHasPrefix (CFStringRef theString, CFStringRef prefix); + + CF_EXPORT Boolean + CFStringHasSuffix (CFStringRef theString, CFStringRef suffix); + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) + CF_EXPORT CFComparisonResult + CFStringCompareWithOptionsAndLocale (CFStringRef theString1, + CFStringRef theString2, CFRange rangeToCOmpare, + CFStringCompareFlags compareOptions, CFLocaleRef locale); + #endif + /** \} */ + + /** \name Accessing Characters + \{ + */ + CF_EXPORT CFDataRef + CFStringCreateExternalRepresentation (CFAllocatorRef alloc, + CFStringRef theString, CFStringEncoding encoding, UInt8 lossByte); + + CF_EXPORT CFIndex + CFStringGetBytes (CFStringRef theString, CFRange range, + CFStringEncoding encoding, UInt8 lossByte, Boolean isExternalRepresentation, + UInt8 *buffer, CFIndex maxBufLen, CFIndex *usedBufLen); + + CF_EXPORT UniChar + CFStringGetCharacterAtIndex (CFStringRef theString, CFIndex idx); + + CF_EXPORT void + CFStringGetCharacters (CFStringRef theString, CFRange range, UniChar *buffer); + + CF_EXPORT const UniChar * + CFStringGetCharactersPtr (CFStringRef theString); + + CF_EXPORT Boolean + CFStringGetCString (CFStringRef theString, char *buffer, CFIndex bufferSize, + CFStringEncoding encoding); + + CF_EXPORT const char * + CFStringGetCStringPtr (CFStringRef theString, CFStringEncoding encoding); + + CF_EXPORT CFIndex + CFStringGetLength (CFStringRef str); + + CF_EXPORT CFRange + CFStringGetRangeOfComposedCharactersAtIndex (CFStringRef theString, + CFIndex theIndex); + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) + CF_EXPORT UTF32Char + CFStringGetLongCharacterForSurrogatePair (UniChar surrogateHigh, + UniChar surrogateLow); + + CF_EXPORT Boolean + CFStringGetSurrogatePairForLongCharacter (UTF32Char character, + UniChar *surrogates); + + CF_EXPORT Boolean + CFStringIsSurrogateHighCharacter (UniChar character); + + CF_EXPORT Boolean + CFStringIsSurrogateLowCharacter (UniChar character); + #endif + /** \} */ + + /** \name Working with Encodings + \{ + */ + CF_EXPORT CFStringRef + CFStringConvertEncodingToIANACharSetName (CFStringEncoding encoding); + + CF_EXPORT unsigned long + CFStringConvertEncodingToNSStringEncoding (CFStringEncoding encoding); + + UInt32 + CFStringConvertEncodingToWindowsCodepage (CFStringEncoding encoding); + + CF_EXPORT CFStringEncoding + CFStringConvertIANACharSetNameToEncoding (CFStringRef theString); + + CF_EXPORT CFStringEncoding + CFStringConvertNSStringEncodingToEncoding (unsigned long encoding); + + CF_EXPORT CFStringEncoding + CFStringConvertWindowsCodepageToEncoding (UInt32 codepage); + + CF_EXPORT CFStringEncoding + CFStringGetFastestEncoding (CFStringRef theString); + + CF_EXPORT const CFStringEncoding * + CFStringGetListOfAvailableEncodings (void); + + CF_EXPORT CFIndex + CFStringGetMaximumSizeForEncoding (CFIndex length, CFStringEncoding encoding); + + CF_EXPORT CFStringEncoding + CFStringGetMostCompatibleMacStringEncoding (CFStringEncoding encoding); + + CF_EXPORT CFStringRef + CFStringGetNameOfEncoding (CFStringEncoding encoding); + + CF_EXPORT CFStringEncoding + CFStringGetSmallestEncoding (CFStringRef theString); + + CF_EXPORT CFStringEncoding + CFStringGetSystemEncoding (void); + + CF_EXPORT Boolean + CFStringIsEncodingAvailable (CFStringEncoding encoding); + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + CF_EXPORT Boolean + CFStringGetFileSystemRepresentation (CFStringRef string, char *buffer, + CFIndex maxBufLen); + + CF_EXPORT CFIndex + CFStringGetMaximumSizeOfFileSystemRepresentation (CFStringRef string); + #endif + /** \} */ + + /** \name Getting Numeric Values + \{ + */ + CF_EXPORT double + CFStringGetDoubleValue (CFStringRef str); + + CF_EXPORT SInt32 + CFStringGetIntValue (CFStringRef str); + /** \} */ + + /** \name Getting String Properties + \{ + */ + CF_EXPORT void + CFShow (CFTypeRef obj); + + CF_EXPORT void + CFShowStr (CFStringRef str); + + CF_EXPORT CFTypeID + CFStringGetTypeID (void); + /** \} */ + + + + /** \name Pascal Strings + \{ + */ + CF_EXPORT CFStringRef + CFStringCreateWithPascalString (CFAllocatorRef alloc, ConstStr255Param pStr, + CFStringEncoding encoding); + + CF_EXPORT CFStringRef + CFStringCreateWithPascalStringNoCopy (CFAllocatorRef alloc, + ConstStr255Param pStr, CFStringEncoding encoding, + CFAllocatorRef contentsDeallocate); + + CF_EXPORT Boolean + CFStringGetPascalString (CFStringRef theString, StringPtr buffer, + CFIndex bufferSize, CFStringEncoding encoding); + + CF_EXPORT ConstStringPtr + CFStringGetPascalStringPtr (CFStringRef theString, CFStringEncoding encoding); + /** \} */ + /** \} */ + + + + /** \defgroup CFMutableStringRef CFMutableString Reference + * \{ + */ + #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) + typedef enum + { + kCFStringNormalizationFormD = 0, + kCFStringNormalizationFormKD = 1, + kCFStringNormalizationFormC = 2, + kCFStringNormalizationFormKC = 3 + } CFStringNormalizationForm; + #endif + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + CF_EXPORT const CFStringRef kCFStringTransformStripCombiningMarks; + CF_EXPORT const CFStringRef kCFStringTransformToLatin; + CF_EXPORT const CFStringRef kCFStringTransformFullwidthHalfwidth; + CF_EXPORT const CFStringRef kCFStringTransformLatinKatakana; + CF_EXPORT const CFStringRef kCFStringTransformLatinHiragana; + CF_EXPORT const CFStringRef kCFStringTransformHiraganaKatakana; + CF_EXPORT const CFStringRef kCFStringTransformMandarinLatin; + CF_EXPORT const CFStringRef kCFStringTransformLatinHangul; + CF_EXPORT const CFStringRef kCFStringTransformLatinArabic; + CF_EXPORT const CFStringRef kCFStringTransformLatinHebrew; + CF_EXPORT const CFStringRef kCFStringTransformLatinThai; + CF_EXPORT const CFStringRef kCFStringTransformLatinCyrillic; + CF_EXPORT const CFStringRef kCFStringTransformLatinGreek; + CF_EXPORT const CFStringRef kCFStringTransformToXMLHex; + CF_EXPORT const CFStringRef kCFStringTransformToUnicodeName; + #endif + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) + CF_EXPORT const CFStringRef kCFStringTransformStripDiacritics; + #endif + + CF_EXPORT void + CFStringAppend (CFMutableStringRef theString, CFStringRef appendedString); + + CF_EXPORT void + CFStringAppendCharacters (CFMutableStringRef theString, + const UniChar *chars, CFIndex numChars); + + CF_EXPORT void + CFStringAppendCString (CFMutableStringRef theString, const char *cStr, + CFStringEncoding encoding); + + CF_EXPORT void + CFStringAppendFormat (CFMutableStringRef theString, + CFDictionaryRef formatOptions, CFStringRef format, ...); + + CF_EXPORT void + CFStringAppendFormatAndArguments (CFMutableStringRef theString, + CFDictionaryRef formatOptions, CFStringRef format, va_list arguments); + + CF_EXPORT void + CFStringAppendPascalString (CFMutableStringRef theString, + ConstStr255Param pStr, CFStringEncoding encoding); + + CF_EXPORT void + CFStringCapitalize (CFMutableStringRef theString, CFLocaleRef locale); + + CF_EXPORT CFMutableStringRef + CFStringCreateMutable (CFAllocatorRef alloc, CFIndex maxLength); + + CF_EXPORT CFMutableStringRef + CFStringCreateMutableCopy (CFAllocatorRef alloc, CFIndex maxLength, + CFStringRef theString); + + CF_EXPORT CFMutableStringRef + CFStringCreateMutableWithExternalCharactersNoCopy (CFAllocatorRef alloc, + UniChar *chars, CFIndex numChars, CFIndex capacity, + CFAllocatorRef externalCharactersAllocator); + + CF_EXPORT void + CFStringDelete (CFMutableStringRef theString, CFRange range); + + CF_EXPORT void + CFStringInsert (CFMutableStringRef str, CFIndex idx, CFStringRef insertedStr); + + CF_EXPORT void + CFStringLowercase (CFMutableStringRef theString, CFLocaleRef locale); + + CF_EXPORT void + CFStringPad (CFMutableStringRef theString, CFStringRef padString, + CFIndex length, CFIndex indexIntoPad); + + CF_EXPORT void + CFStringReplace (CFMutableStringRef theString, CFRange range, + CFStringRef replacement); + + CF_EXPORT void + CFStringReplaceAll (CFMutableStringRef theString, CFStringRef replacement); + + CF_EXPORT void + CFStringSetExternalCharactersNoCopy (CFMutableStringRef theString, + UniChar *chars, CFIndex length, CFIndex capacity); + + CF_EXPORT void + CFStringTrim (CFMutableStringRef theString, CFStringRef trimString); + + CF_EXPORT void + CFStringTrimWhitespace (CFMutableStringRef theString); + + CF_EXPORT void + CFStringUppercase (CFMutableStringRef theString, CFLocaleRef locale); + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) + CF_EXPORT CFIndex + CFStringFindAndReplace (CFMutableStringRef theString, + CFStringRef stringToFind, CFStringRef replacementString, + CFRange rangeToSearch, CFOptionFlags compareOptions); + + CF_EXPORT void + CFStringNormalize (CFMutableStringRef theString, + CFStringNormalizationForm theForm); + #endif + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + CF_EXPORT Boolean + CFStringTransform (CFMutableStringRef string, CFRange *range, + CFStringRef transform, Boolean reverse); + #endif + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) + CF_EXPORT void + CFStringFold (CFMutableStringRef theString, CFOptionFlags theFlags, + CFLocaleRef theLocale); + #endif + /** \} */ + + + + /** \ingroup CFStringRef + \name CFStringInlineBuffer + \{ + */ + #define __kCFStringInlineBufferLength 64 + struct CFStringInlineBuffer + { + UniChar buffer[__kCFStringInlineBufferLength]; + CFStringRef theString; + const UniChar *directBuffer; + CFRange rangeToBuffer; + CFIndex bufferedRangeStart; + CFIndex bufferedRangeEnd; + }; + typedef struct CFStringInlineBuffer CFStringInlineBuffer; + + CF_INLINE void + CFStringInitInlineBuffer (CFStringRef str, CFStringInlineBuffer *buf, + CFRange range) + { + buf->theString = str; + buf->rangeToBuffer = range; + buf->directBuffer = CFStringGetCharactersPtr (str); + buf->bufferedRangeStart = 0; + buf->bufferedRangeEnd = 0; + } + + CF_INLINE UniChar + CFStringGetCharacterFromInlineBuffer (CFStringInlineBuffer *buf, CFIndex idx) + { + if (buf->directBuffer) + { + if (idx < 0 || idx >= buf->rangeToBuffer.length) + return 0; + return buf->directBuffer[idx + buf->rangeToBuffer.location]; + } + else if (idx >= buf->bufferedRangeEnd || idx < buf->bufferedRangeStart) + { + CFRange range; + + if (idx < 0 || idx >= buf->rangeToBuffer.length) + return 0; + + /* Use 16 here so it's efficient to go backwards, too */ + buf->bufferedRangeStart = idx - 16; + if (buf->bufferedRangeStart < 0) + buf->bufferedRangeStart = 0; + buf->bufferedRangeEnd = + buf->bufferedRangeStart + __kCFStringInlineBufferLength; + if (buf->bufferedRangeEnd > buf->rangeToBuffer.length) + buf->bufferedRangeEnd = buf->rangeToBuffer.length; + + range = CFRangeMake (buf->rangeToBuffer.location + buf->bufferedRangeStart, + buf->bufferedRangeEnd - buf->bufferedRangeStart); + + CFStringGetCharacters (buf->theString, range, buf->buffer); + } + + return buf->buffer[(idx - buf->bufferedRangeStart)]; + } + /** \} */ + + CF_EXTERN_C_END + + #endif /* __COREFOUNDATION_CFSTRING_H__ */ + diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,430 ---- + /* Interface for NSArray for GNUStep + Copyright (C) 1995-2015 Free Software Foundation, Inc. + + Written by: Andrew Kachites McCallum + Created: 1995 + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + */ + + #ifndef __NSArray_h_GNUSTEP_BASE_INCLUDE + #define __NSArray_h_GNUSTEP_BASE_INCLUDE + #import "../GNUstepBase/GSVersionMacros.h" + + #import "NSObject.h" + #import "NSRange.h" + #import "NSEnumerator.h" + #if __BLOCKS__ + #import "../GNUstepBase/GSBlocks.h" + #endif + + #if defined(__cplusplus) + extern "C" { + #endif + + @class NSString; + @class NSURL; + @class NSIndexSet; + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) + enum + { + NSBinarySearchingFirstEqual = (1UL << 8), /** Specifies that the binary + * search should find the first object equal in the array. + */ + NSBinarySearchingLastEqual = (1UL << 9), /** Specifies that the binary + * search should find the last object equal in the array. + */ + NSBinarySearchingInsertionIndex = (1UL << 10), /** Specifies that the binary + * search should find the index at which an equal object should be inserted + * in order to keep the array sorted + */ + }; + + typedef NSUInteger NSBinarySearchingOptions; + #endif + + @interface GS_GENERIC_CLASS(NSArray, __covariant ElementT) : NSObject + + + + (instancetype) array; + + (instancetype) arrayWithArray: (GS_GENERIC_CLASS(NSArray, ElementT) *)array; + + (instancetype) arrayWithContentsOfFile: (NSString*)file; + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + + (instancetype) arrayWithContentsOfURL: (NSURL*)aURL; + #endif + + (instancetype) arrayWithObject: (id)anObject; + + (instancetype) arrayWithObjects: (id)firstObject, ...; + + (instancetype) arrayWithObjects: (const id[])objects count: (NSUInteger)count; + + - (GS_GENERIC_CLASS(NSArray, ElementT) *) arrayByAddingObject: + (GS_GENERIC_TYPE(ElementT))anObject; + - (GS_GENERIC_CLASS(NSArray, ElementT) *) arrayByAddingObjectsFromArray: + (GS_GENERIC_CLASS(NSArray, ElementT)*)anotherArray; + - (BOOL) containsObject: (GS_GENERIC_TYPE(ElementT))anObject; + + /** + * Returns the number of elements contained in the receiver. + */ + - (NSUInteger) count; + - (void) getObjects: (__unsafe_unretained GS_GENERIC_TYPE(ElementT)[])aBuffer; + - (void) getObjects: (__unsafe_unretained GS_GENERIC_TYPE(ElementT)[])aBuffer + range: (NSRange)aRange; + - (NSUInteger) indexOfObject: (GS_GENERIC_TYPE(ElementT))anObject; + - (NSUInteger) indexOfObject: (GS_GENERIC_TYPE(ElementT))anObject + inRange: (NSRange)aRange; + - (NSUInteger) indexOfObjectIdenticalTo: (GS_GENERIC_TYPE(ElementT))anObject; + - (NSUInteger) indexOfObjectIdenticalTo: (GS_GENERIC_TYPE(ElementT))anObject + inRange: (NSRange)aRange; + - (instancetype) init; + - (instancetype) initWithArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)array; + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + - (instancetype) initWithArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)array + copyItems: (BOOL)shouldCopy; + #endif + - (instancetype) initWithContentsOfFile: (NSString*)file; + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + - (instancetype) initWithContentsOfURL: (NSURL*)aURL; + #endif + - (instancetype) initWithObjects: (GS_GENERIC_TYPE(ElementT)) firstObject, ...; + + /** + * This should initialize the array with count (may be zero) objects.
+ * Retains each object placed in the array.
+ * Calls -init (which does nothing but maintain MacOS-X compatibility), + * and needs to be re-implemented in subclasses in order to have all + * other initialisers work. + */ + - (instancetype) initWithObjects: (const GS_GENERIC_TYPE(ElementT)[])objects + count: (NSUInteger)count; + - (GS_GENERIC_TYPE(ElementT)) lastObject; + #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) + - (GS_GENERIC_TYPE(ElementT)) firstObject; + #endif + + /** + * Returns the object at the specified index. + * Raises an exception of the index is beyond the array. + */ + - (GS_GENERIC_TYPE(ElementT)) objectAtIndex: (NSUInteger)index; + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + - (GS_GENERIC_CLASS(NSArray, ElementT) *) objectsAtIndexes: + (NSIndexSet *)indexes; + #endif + + - (GS_GENERIC_TYPE(ElementT)) firstObjectCommonWithArray: + (GS_GENERIC_CLASS(NSArray, ElementT) *)otherArray; + - (BOOL) isEqualToArray: (NSArray*)otherArray; + + #if OS_API_VERSION(GS_API_OPENSTEP, GS_API_MACOSX) + - (void) makeObjectsPerform: (SEL)aSelector; + - (void) makeObjectsPerform: (SEL)aSelector withObject: (id)argument; + #endif + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + - (void) makeObjectsPerformSelector: (SEL)aSelector; + - (void) makeObjectsPerformSelector: (SEL)aSelector withObject: (id)arg; + #endif + + - (NSData*) sortedArrayHint; + - (GS_GENERIC_CLASS(NSArray, ElementT)*) sortedArrayUsingFunction: + (NSComparisonResult (*)(id, id, void*))comparator + context: (void*)context; + - (GS_GENERIC_CLASS(NSArray, ElementT)*) sortedArrayUsingFunction: + (NSComparisonResult (*)(id, id, void*))comparator + context: (void*)context + hint: (NSData*)hint; + - (GS_GENERIC_CLASS(NSArray, ElementT)*) sortedArrayUsingSelector: + (SEL)comparator; + - (GS_GENERIC_CLASS(NSArray, ElementT)*) subarrayWithRange: (NSRange)aRange; + + - (NSString*) componentsJoinedByString: (NSString*)separator; + - (GS_GENERIC_CLASS(NSArray, NSString*)*) pathsMatchingExtensions: + (GS_GENERIC_CLASS(NSArray, NSString*)*)extensions; + + - (GS_GENERIC_CLASS(NSEnumerator, ElementT)*) objectEnumerator; + - (GS_GENERIC_CLASS(NSEnumerator, ElementT)*) reverseObjectEnumerator; + + - (NSString*) description; + - (NSString*) descriptionWithLocale: (id)locale; + - (NSString*) descriptionWithLocale: (id)locale + indent: (NSUInteger)level; + + - (BOOL) writeToFile: (NSString*)path atomically: (BOOL)useAuxiliaryFile; + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + - (BOOL) writeToURL: (NSURL*)url atomically: (BOOL)useAuxiliaryFile; + - (GS_GENERIC_TYPE(ElementT)) valueForKey: (NSString*)key; + - (void) setValue: (GS_GENERIC_TYPE(ElementT))value forKey: (NSString*)key; + #endif + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) + + #if __BLOCKS__ + DEFINE_BLOCK_TYPE(GSEnumeratorBlock, void, GS_GENERIC_TYPE(ElementT), + NSUInteger, BOOL*); + DEFINE_BLOCK_TYPE(GSPredicateBlock, BOOL, GS_GENERIC_TYPE(ElementT), + NSUInteger, BOOL*); + /** + * Enumerate over the collection using the given block. The first argument is + * the object and the second is the index in the array. The final argument is + * a pointer to a BOOL indicating whether the enumeration should stop. Setting + * this to YES will interrupt the enumeration. + */ + - (void) enumerateObjectsUsingBlock: (GSEnumeratorBlock)aBlock; + + /** + * Enumerate over the collection using the given block. The first argument is + * the object and the second is the index in the array. The final argument is + * a pointer to a BOOL indicating whether the enumeration should stop. Setting + * this to YES will interrupt the enumeration. + * + * The opts argument is a bitfield. Setting the NSNSEnumerationConcurrent flag + * specifies that it is thread-safe. The NSEnumerationReverse bit specifies + * that it should be enumerated in reverse order. + */ + - (void) enumerateObjectsWithOptions: (NSEnumerationOptions)opts + usingBlock: (GSEnumeratorBlock)aBlock; + /** + * Enumerate over the specified indexes in the collection using the given + * block. The first argument is the object and the second is the index in the + * array. The final argument is a pointer to a BOOL indicating whether the + * enumeration should stop. Setting this to YES will interrupt the + * enumeration. + * + * The opts argument is a bitfield. Setting the NSNSEnumerationConcurrent flag + * specifies that it is thread-safe. The NSEnumerationReverse bit specifies + * that it should be enumerated in reverse order. + */ + - (void) enumerateObjectsAtIndexes: (NSIndexSet*)indexSet + options: (NSEnumerationOptions)opts + usingBlock: (GSEnumeratorBlock)block; + /** + * Returns the indexes of the objects in a collection that match the condition + * specified by the block. + * + * The opts argument is a bitfield. Setting the NSNSEnumerationConcurrent flag + * specifies that it is thread-safe. The NSEnumerationReverse bit specifies + * that it should be enumerated in reverse order. + */ + - (NSIndexSet *) indexesOfObjectsWithOptions: (NSEnumerationOptions)opts + passingTest: (GSPredicateBlock)predicate; + + /** + * Returns the indexes of the objects in a collection that match the condition + * specified by the block. + */ + - (NSIndexSet*) indexesOfObjectsPassingTest: (GSPredicateBlock)predicate; + + /** + * Returns the indexes of the objects in a collection that match the condition + * specified by the block and are in the range specified by the index set. + * + * The opts argument is a bitfield. Setting the NSNSEnumerationConcurrent flag + * specifies that it is thread-safe. The NSEnumerationReverse bit specifies + * that it should be enumerated in reverse order. + */ + - (NSIndexSet*) indexesOfObjectsAtIndexes: (NSIndexSet*)indexSet + options: (NSEnumerationOptions)opts + passingTest: (GSPredicateBlock)predicate; + + /** + * Returns the index of the first object in the array that matches the + * condition specified by the block. + * + * The opts argument is a bitfield. Setting the NSNSEnumerationConcurrent flag + * specifies that it is thread-safe. The NSEnumerationReverse bit specifies + * that it should be enumerated in reverse order. + */ + - (NSUInteger) indexOfObjectWithOptions: (NSEnumerationOptions)opts + passingTest: (GSPredicateBlock)predicate; + + /** + * Returns the index of the first object in the array that matches the + * condition specified by the block. + */ + - (NSUInteger) indexOfObjectPassingTest: (GSPredicateBlock)predicate; + + /** + * Returns the index of the first object in the specified range in a collection + * that matches the condition specified by the block. + * + * The opts argument is a bitfield. Setting the NSNSEnumerationConcurrent flag + * specifies that it is thread-safe. The NSEnumerationReverse bit specifies + * that it should be enumerated in reverse order. + */ + - (NSUInteger) indexOfObjectAtIndexes: (NSIndexSet*)indexSet + options: (NSEnumerationOptions)opts + passingTest: (GSPredicateBlock)predicate; + + /** Returns a sorted array using the comparator to determine the + * order of objects. + */ + - (GS_GENERIC_CLASS(NSArray, ElementT) *) sortedArrayUsingComparator: + (NSComparator)comparator; + + /** Returns a sorted array using the block to determine the order of objects. + * + * The opts argument is a bitfield. Setting the NSSortConcurrent flag + * specifies that it is thread-safe. The NSSortStable bit specifies that + * it should keep equal objects in the same order. + */ + - (GS_GENERIC_CLASS(NSArray, ElementT) *) + sortedArrayWithOptions: (NSSortOptions)options + usingComparator: (NSComparator)comparator; + + /** + * Performs a binary search of the array within the specified range for the + * index of an object equal to obj according to cmp. + * If NSBinarySearchingInsertionIndex is specified, searches for the index + * at which such an object should be inserted. + */ + - (NSUInteger) indexOfObject: (id)key + inSortedRange: (NSRange)range + options: (NSBinarySearchingOptions)options + usingComparator: (NSComparator)comparator; + #endif + #endif + /** + * Accessor for subscripting. This is called by the compiler when you write + * code like anArray[12]. It should not be called directly. + */ + - (GS_GENERIC_TYPE(ElementT)) objectAtIndexedSubscript: (NSUInteger)anIndex; + @end + + + @interface GS_GENERIC_CLASS(NSMutableArray, ElementT) : NSArray + + + (instancetype) arrayWithCapacity: (NSUInteger)numItems; + + /** + * Adds anObject at the end of the array, thus increasing the size of + * the array. The object is retained upon addition. + */ + - (void) addObject: (GS_GENERIC_TYPE(ElementT))anObject; + - (void) addObjectsFromArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)otherArray; + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + - (void) exchangeObjectAtIndex: (NSUInteger)i1 + withObjectAtIndex: (NSUInteger)i2; + #endif + + /** + * Initialise the array with the specified capacity ... this + * should ensure that the array can have numItems added efficiently.
+ * Calls -init (which does nothing but maintain MacOS-X compatibility), + * and needs to be re-implemented in subclasses in order to have all + * other initialisers work. + */ + - (instancetype) initWithCapacity: (NSUInteger)numItems; + + /** + * Inserts an object into the receiver at the specified location.
+ * Raises an exception if given an array index which is too large.
+ * The size of the array increases by one.
+ * The object is retained by the array. + */ + - (void) insertObject: (GS_GENERIC_TYPE(ElementT))anObject + atIndex: (NSUInteger)index; + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + - (void) insertObjects: (GS_GENERIC_CLASS(NSArray, ElementT) *)objects + atIndexes: (NSIndexSet *)indexes; + #endif + + /** + * Removes an object from the receiver at the specified location.
+ * The size of the array decreases by one.
+ * Raises an exception if given an array index which is too large.
+ */ + - (void) removeObjectAtIndex: (NSUInteger)index; + + - (void) removeObjectsAtIndexes: (NSIndexSet *)indexes; + + /** + * Places an object into the receiver at the specified location.
+ * Raises an exception if given an array index which is too large.
+ * The object is retained by the array. + */ + - (void) replaceObjectAtIndex: (NSUInteger)index + withObject: (GS_GENERIC_TYPE(ElementT))anObject; + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + - (void) replaceObjectsAtIndexes: (NSIndexSet *)indexes + withObjects: (GS_GENERIC_CLASS(NSArray, ElementT)*)objects; + #endif + + - (void) replaceObjectsInRange: (NSRange)aRange + withObjectsFromArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)anArray; + + - (void) replaceObjectsInRange: (NSRange)aRange + withObjectsFromArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)anArray + range: (NSRange)anotherRange; + + - (void) setArray: (GS_GENERIC_CLASS(NSArray, ElementT) *)otherArray; + + - (void) removeAllObjects; + - (void) removeLastObject; + - (void) removeObject: (GS_GENERIC_TYPE(ElementT))anObject; + - (void) removeObject: (GS_GENERIC_TYPE(ElementT))anObject + inRange: (NSRange)aRange; + - (void) removeObjectIdenticalTo: (GS_GENERIC_TYPE(ElementT))anObject; + - (void) removeObjectIdenticalTo: (GS_GENERIC_TYPE(ElementT))anObject + inRange: (NSRange)aRange; + - (void) removeObjectsInArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)otherArray; + - (void) removeObjectsInRange: (NSRange)aRange; + - (void) removeObjectsFromIndices: (NSUInteger*)indices + numIndices: (NSUInteger)count; + + - (void) sortUsingFunction: + (NSComparisonResult (*)(GS_GENERIC_TYPE(ElementT), + GS_GENERIC_TYPE(ElementT),void*))compare + context: (void*)context; + - (void) sortUsingSelector: (SEL)comparator; + + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) + #if __BLOCKS__ + /** + * Sorts the array using the specified comparator block. + */ + - (void) sortUsingComparator: (NSComparator)comparator; + + /** + * Sorts the array using the specified comparator block and options. + */ + - (void) sortWithOptions: (NSSortOptions)options + usingComparator: (NSComparator)comparator; + #endif + #endif + #if OS_API_VERSION(MAC_OS_X_VERSION_10_8, GS_API_LATEST) + /** Set method called by the compiler with array subscripting.
+ * Replaces the object at anIndex or, if anIndex is the length of the array, + * this method appends abObject to the array. + */ + - (void) setObject: (GS_GENERIC_TYPE(ElementT))anObject + atIndexedSubscript: (NSUInteger)anIndex; + #endif + @end + + #if defined(__cplusplus) + } + #endif + + #if !NO_GNUSTEP && !defined(GNUSTEP_BASE_INTERNAL) + #import "../GNUstepBase/NSArray+GNUstepBase.h" + #endif + + #endif /* __NSArray_h_GNUSTEP_BASE_INCLUDE */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,333 ---- + /* Interface for NSAutoreleasePool for GNUStep + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + + Written by: Andrew Kachites McCallum + Date: 1995 + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + */ + + #ifndef __NSAutoreleasePool_h_GNUSTEP_BASE_INCLUDE + #define __NSAutoreleasePool_h_GNUSTEP_BASE_INCLUDE + #import "../GNUstepBase/GSVersionMacros.h" + + #import "NSObject.h" + + #if defined(__cplusplus) + extern "C" { + #endif + + @class NSAutoreleasePool; + @class NSThread; + + + /** + * Each thread has its own copy of these variables. + + { + NSAutoreleasePool *current_pool; // current pool for thread + unsigned total_objects_count; // total #/autoreleased objects over thread's lifetime + id *pool_cache; // cache of previously-allocated pools, + int pool_cache_size; // used internally for recycling + int pool_cache_count; + } + + */ + typedef struct autorelease_thread_vars + { + /* The current, default NSAutoreleasePool for the calling thread; + the one that will hold objects that are arguments to + [NSAutoreleasePool +addObject:]. */ + __unsafe_unretained NSAutoreleasePool *current_pool; + + /* The total number of objects autoreleased since the thread was + started, or since -resetTotalAutoreleasedObjects was called + in this thread. (if compiled in) */ + unsigned total_objects_count; + + /* A cache of NSAutoreleasePool's already alloc'ed. Caching old pools + instead of deallocating and re-allocating them will save time. */ + __unsafe_unretained id *pool_cache; + int pool_cache_size; + int pool_cache_count; + } thread_vars_struct; + + /* Initialize an autorelease_thread_vars structure for a new thread. + This function is called in NSThread each time an NSThread is created. + TV should be of type `struct autorelease_thread_vars *' */ + #define init_autorelease_thread_vars(TV) \ + memset (TV, 0, sizeof (__typeof__ (*TV))) + + + + /** + * Each pool holds its objects-to-be-released in a linked-list of + these structures. + + { + struct autorelease_array_list *next; + unsigned size; + unsigned count; + id objects[0]; + } + + */ + typedef struct autorelease_array_list + { + struct autorelease_array_list *next; + unsigned size; + unsigned count; + __unsafe_unretained id objects[0]; + } array_list_struct; + + + + /** + *

+ * The standard OpenStep system of memory management employs retain counts. + * When an object is created, it has a retain count of 1. When an object + * is retained, the retain count is incremented. When it is released the + * retain count is decremented, and when the retain count goes to zero the + * object gets deallocated. + *

+ *

+ * A simple retain/release mechanism has problems with passing objects + * from one scope to another, + * so it's augmented with autorelease pools. You can use the + * AUTORELEASE() macro to call the [NSObject-autorelease] + * method, which adds an object to the current autorelease pool by + * calling [NSAutoreleasePool+addObject:].
+ * An autorelease pool simply maintains a reference to each object + * added to it, and for each addition, the autorelease pool will + * call the [NSObject-release] method of the object when the pool + * is released. So doing an AUTORELEASE() is just the same as + * doing a RELEASE(), but deferred until the current autorelease + * pool is deallocated. + *

+ *

+ * The NSAutoreleasePool class maintains a separate stack of + * autorelease pools objects in each thread. + *

+ *

+ * When an autorelease pool is created, it is automatically + * added to the stack of pools in the thread. + *

+ *

+ * When a pool is destroyed, it (and any pool later in + * the stack) is removed from the stack. + *

+ *

+ * This mechanism provides a simple but controllable and reasonably + * efficient way of managing temporary objects. An object can be + * autoreleased and then passed around and used until the topmost + * pool in the stack is destroyed. + *

+ *

+ * Most methods return objects which are either owned by autorelease + * pools or by the receiver of the method, so the lifetime of the + * returned object can be assumed to be the shorter of the lifetime + * of the current autorelease pool, or that of the receiver on which + * the method was called.
+ * The exceptions to this are those object returned by - + *

+ * + * [NSObject+alloc], [NSObject+allocWithZone:] + * + * Methods whose names begin with alloc return an uninitialised + * object, owned by the caller. + * + * [NSObject-init] + * + * Methods whose names begin with init return an initialised + * version of the receiving object, owned by the caller.
+ * NB. The returned object may not actually be the same as the + * receiver ... sometimes an init method releases the original + * receiver and returns an alternative. + *
+ * [NSObject+new] + * + * Methods whose names begin with new combine the effects of + * allocation and initialisation. + * + * [NSObject-copy], [(NSCopying)-copyWithZone:] + * + * Methods whose names begin with copy create a copy of the receiver + * which is owned by the caller. + * + * + * [NSObject-mutableCopy], [(NSMutableCopying)-mutableCopyWithZone:] + * + * + * Methods whose names begin with mutableCopy create a copy of the receiver + * which is owned by the caller. + * + *
+ */ + NS_AUTOMATED_REFCOUNT_UNAVAILABLE + @interface NSAutoreleasePool : NSObject + { + #if GS_EXPOSE(NSAutoreleasePool) && !__has_feature(objc_arc) + /* For re-setting the current pool when we are dealloc'ed. */ + NSAutoreleasePool *_parent; + /* This pointer to our child pool is necessary for co-existing + with exceptions. */ + NSAutoreleasePool *_child; + /* A collection of the objects to be released. */ + struct autorelease_array_list *_released; + struct autorelease_array_list *_released_head; + /* The total number of objects autoreleased in this pool. */ + unsigned _released_count; + /* The method to add an object to this pool */ + void (*_addImp)(id, SEL, id); + #endif + #if GS_NONFRAGILE + #else + /* Pointer to private additional data used to avoid breaking ABI + * when we don't have the non-fragile ABI available. + * Use this mechanism rather than changing the instance variable + * layout (see Source/GSInternal.h for details). + */ + @private id _internal GS_UNUSED_IVAR; + #endif + } + + /** + * Adds anObj to the current autorelease pool.
+ * If there is no autorelease pool in the thread, + * a warning is logged and the object is leaked (ie it will not be released). + */ + + (void) addObject: (id)anObj; + + /** + * Allocate and return an autorelease pool instance.
+ * If there is an already-allocated NSAutoreleasePool available, + * save time by just returning that, rather than allocating a new one.
+ * The pool instance becomes the current autorelease pool for this thread. + */ + + (id) allocWithZone: (NSZone*)zone; + + /** + * Adds anObj to this autorelease pool. + */ + - (void) addObject: (id)anObj; + + /** + * Raises an exception - pools should not be autoreleased. + */ + - (id) autorelease; + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) + /** + * Intended to trigger a garbage collection run (if needed) when called in + * a garbage collected environment.
+ * In a non-garbage collected environment, this method implements the + * undocumented MacOS-X behavior, and releases the receiver. + */ + - (void) drain; + #endif + + /** + * Destroys the receiver (calls -dealloc). + */ + - (oneway void) release; + + /** + * Raises an exception ... pools should not be retained. + */ + - (id) retain; + + #if OS_API_VERSION(GS_API_NONE, GS_API_NONE) + /** + *

+ * Counts the number of times that the specified object occurs + * in autorelease pools in the current thread. + *

+ *

+ * This method is slow and should probably only be + * used for debugging purposes. + *

+ */ + + (unsigned) autoreleaseCountForObject: (id)anObject; + + /** + * Return the currently active autorelease pool. + */ + + (id) currentPool; + + /** + *

+ * Specifies whether objects contained in autorelease pools are to + * be released when the pools are deallocated (by default YES). + *

+ *

+ * You can set this to NO for debugging purposes. + *

+ */ + + (void) enableRelease: (BOOL)enable; + + /** + *

+ * When autorelease pools are deallocated, the memory they used + * is retained in a cache for re-use so that new polls can be + * created very quickly. + *

+ *

+ * This method may be used to empty that cache, ensuring that + * the minimum memory is used by the application. + *

+ */ + + (void) freeCache; + + /** + *

+ * Specifies a limit to the number of objects that may be added to + * an autorelease pool. When this limit is reached an exception is + * raised. + *

+ *

+ * You can set this to a smallish value to catch problems with code + * that autoreleases too many objects to operate efficiently. + *

+ *

+ * Default value is maxint. + *

+ */ + + (void) setPoolCountThreshold: (unsigned)c; + + /** + * Return the number of objects in this pool. + */ + - (unsigned) autoreleaseCount; + + /** + * Empties the current pool by releasing all the autoreleased objects + * in it. Also destroys any child pools (ones created after + * the receiver in the same thread) causing any objects in those pools + * to be released.
+ * This is a low cost (efficient) method which may be used to get rid of + * autoreleased objects in the pool, but carry on using the pool. + */ + - (void) emptyPool; + #endif + @end + + #if defined(__cplusplus) + } + #endif + + #endif /* __NSAutoreleasePool_h_GNUSTEP_BASE_INCLUDE */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,300 ---- + /* Interface for NSDate for GNUStep + Copyright (C) 1994, 1996, 1999 Free Software Foundation, Inc. + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + */ + + #ifndef __NSDate_h_GNUSTEP_BASE_INCLUDE + #define __NSDate_h_GNUSTEP_BASE_INCLUDE + #import "../GNUstepBase/GSVersionMacros.h" + + #import "NSObjCRuntime.h" + + #if defined(__cplusplus) + extern "C" { + #endif + + GS_EXPORT NSString * const NSSystemClockDidChangeNotification; + + /** + * Time interval difference between two dates, in seconds. + */ + typedef double NSTimeInterval; + + /** + * Time interval between the unix standard reference date of 1 January 1970 + * and the OpenStep reference date of 1 January 2001
+ * This number comes from:
+ * (((31 years * 365 days) + 8 days for leap years) = total number of days
+ * 24 hours * 60 minutes * 60 seconds)
+ * This ignores leap-seconds. + */ + GS_EXPORT const NSTimeInterval NSTimeIntervalSince1970; + + #import "NSObject.h" + + @class NSArray; + @class NSCalendarDate; + @class NSData; + @class NSDictionary; + @class NSString; + @class NSTimeZone; + @class NSTimeZoneDetail; + + @interface NSDate : NSObject + { + } + + /** Returns an autoreleased instance with the current date/time. + */ + + (id) date; + + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + /** Returns an autoreleased instance representing the date and time given + * by string. The value of string may be a 'natural' specification as + * specified by the preferences in the user defaults database, allowing + * phrases like 'last tuesday' + */ + + (id) dateWithNaturalLanguageString: (NSString*)string; + + /** + *

Returns an autoreleased instance representing the date and time given + * by string. The value of string may be a 'natural' specification as + * specified by the preferences in the user defaults database, allowing + * phrases like 'last tuesday' + *

+ * The locale contains keys such as - + * + * NSDateTimeOrdering + * Controls the use of ambiguous numbers. This is done as a + * sequence of the letters D(ay), M(onth), Y(ear), and H(our). + * YMDH means that the first number encountered is assumed to be a + * year, the second a month, the third a day, and the last an hour. + * + * NSEarlierTimeDesignations + * An array of strings for times in the past.
+ * Defaults are ago, last, past, prior + *
+ * NSHourNameDesignations + * An array of arrays of strings identifying the time of day. + * Each array has an hour as its first value, and one or more words + * as subsequent values.
+ * Defaults are: (0, midnight), (10, morning), (12, noon, lunch), + * (14, afternoon), (19, dinner). + *
+ * NSLaterTimeDesignations + * An array of strings for times in the future.
+ * Default is next + *
+ * NSNextDayDesignations + * The day after today. Default is tomorrow. + * + * NSNextNextDayDesignations + * The day after tomorrow. Default is nextday. + * + * NSPriorDayDesignations + * The day before today. Default is yesterday. + * + * NSThisDayDesignations + * Identifies the current day. Default is today. + * + * NSYearMonthWeekDesignations + * An array giving the word for year, month, and week.
+ * Defaults are year, month and week. + *
+ *
+ */ + + (id) dateWithNaturalLanguageString: (NSString*)string + locale: (NSDictionary*)locale; + #endif + + /** Returns an autoreleased instance with the date and time value given + * by the string using the ISO standard format YYYY-MM-DD HH:MM:SS +/-HHHMM + * (all the fields of which must be present). + */ + + (id) dateWithString: (NSString*)description; + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_6,GS_API_LATEST) + /** Returns an autoreleased NSDate instance whose value is offset from + * that of the given date by the specified interval in seconds. + */ + + (id) dateWithTimeInterval: (NSTimeInterval)seconds sinceDate: (NSDate*)date; + #endif + + /** Returns an autoreleased instance with the offset from the unix system + * reference date of 1 January 1970, GMT. + */ + + (id) dateWithTimeIntervalSince1970: (NSTimeInterval)seconds; + + /** Returns an autoreleased instance with the offset from the current + * date/time given by seconds (which may be fractional). + */ + + (id) dateWithTimeIntervalSinceNow: (NSTimeInterval)seconds; + + /** Returns an autoreleased instance with the offset from the OpenStep + * reference date of 1 January 2001, GMT. + */ + + (id) dateWithTimeIntervalSinceReferenceDate: (NSTimeInterval)seconds; + + /** Returns an autoreleased instance with the date/time set in the far + * past. + */ + + (id) distantPast; + + /** Returns an autoreleased instance with the date/time set in the far + * future. + */ + + (id) distantFuture; + + /** Returns the time interval between the reference date and the current + * time. + */ + + (NSTimeInterval) timeIntervalSinceReferenceDate; + + /** Returns an autorelease date instance formed by adding the specified + * time interval in seconds to the receiver's time interval. + */ + - (id) addTimeInterval: (NSTimeInterval)seconds; + + /** Returns the time interval between the receivers value and the + * OpenStep reference date of 1 Jan 2001 GMT. + */ + - (NSComparisonResult) compare: (NSDate*)otherDate; + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_6,GS_API_LATEST) + /** Returns an autoreleased NSDate instance whose value is offset from + * that of the receiver by the specified interval. + */ + - (id) dateByAddingTimeInterval: (NSTimeInterval)ti; + #endif + + /** Returns an autoreleased instance of the [NSCalendarDate] class whose + * date/time value is the same as that of the receiver, and which uses + * the formatString and timeZone specified. + */ + - (NSCalendarDate*) dateWithCalendarFormat: (NSString*)formatString + timeZone: (NSTimeZone*)timeZone; + + /** Returns a string representation of the receiver formatted according + * to the default format string, time zone, and locale. + */ + - (NSString*) description; + + /** Returns a string representation of the receiver formatted according + * to the specified format string, time zone, and locale. + */ + - (NSString*) descriptionWithCalendarFormat: (NSString*)format + timeZone: (NSTimeZone*)aTimeZone + locale: (NSDictionary*)l; + + /** Returns a string representation of the receiver formatted according + * to the default format string and time zone, but using the given locale. + */ + - (NSString*) descriptionWithLocale: (id)locale; + + /** Returns the earlier of the receiver and otherDate.
+ * If the two represent identical date/time values, returns the receiver. + */ + - (NSDate*) earlierDate: (NSDate*)otherDate; + + /** Returns an instance initialised with the current date/time. + */ + - (id) init; + + /** Returns an instance with the date and time value given + * by the string using the ISO standard format YYYY-MM-DD HH:MM:SS +/-HHHMM + * (all the fields of which must be present). + */ + - (id) initWithString: (NSString*)description; + + /** Returns an instance with the given offset from anotherDate. + */ + - (id) initWithTimeInterval: (NSTimeInterval)secsToBeAdded + sinceDate: (NSDate*)anotherDate; + + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + /** Returns an instance with the offset from the unix system + * reference date of 1 January 1970, GMT. + */ + - (id) initWithTimeIntervalSince1970: (NSTimeInterval)seconds; + #endif + + /** Returns an instance with the offset from the current date/time. + */ + - (id) initWithTimeIntervalSinceNow: (NSTimeInterval)secsToBeAdded; + + /** + * Returns an instance with the given offset from the OpenStep + * reference date of 1 January 2001, GMT. + */ + - (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs; + + /** Returns NO if other is not a date, otherwise returns the result of + * calling the -isEqualtoDate: method. + */ + - (BOOL) isEqual: (id)other; + + /** Returns whether the receiver is exactly equal to other, to the limit + * of the NSTimeInterval precision.
+ * This is the behavior of the current MacOS-X system, not that of the + * OpenStep specification (which counted two dates within a second of + * each other as being equal).
+ * The old behavior meant that two dates equal to a third date were not + * necessarily equal to each other (confusing), and meant that there was + * no reasonable way to use a date as a dictionary key or store dates + * in a set. + */ + - (BOOL) isEqualToDate: (NSDate*)other; + + /** Returns the earlier of the receiver and otherDate.
+ * If the two represent identical date/time values, returns the receiver. + */ + - (NSDate*) laterDate: (NSDate*)otherDate; + + /** Returns the time interval between the receivers value and the + * unix system reference date of 1 January 1970, GMT. + */ + - (NSTimeInterval) timeIntervalSince1970; + + /** Returns the time interval between the receivers value and that of the + * otherDate argument. If otherDate is earlier than the receiver, the + * returned value will be positive, if it is later it will be negative.
+ * For current (2011) OSX compatibility, this method returns NaN if otherDate + * is nil ... do not write code depending on that behavior. + */ + - (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate; + + /** Returns the time interval between the receivers value and the + * current date/time. If the receiver represents a date/time in + * the past this will be negative, if it is in the future the + * returned value will be positive. + */ + - (NSTimeInterval) timeIntervalSinceNow; + + /** Returns the time interval between the receivers value and the + * OpenStep reference date of 1 Jan 2001 GMT. + */ + - (NSTimeInterval) timeIntervalSinceReferenceDate; + + @end + + #if defined(__cplusplus) + } + #endif + + #endif /* __NSDate_h_GNUSTEP_BASE_INCLUDE*/ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,63 ---- + /* + NSEnumerator.h + + Copyright (C) 1998 Free Software Foundation, Inc. + + Author: Scott Christley + Date: January 1998 + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + */ + + #ifndef __NSEnumerator_h_GNUSTEP_BASE_INCLUDE + #define __NSEnumerator_h_GNUSTEP_BASE_INCLUDE + #import "../GNUstepBase/GSVersionMacros.h" + + #import "NSObject.h" + + + #if defined(__cplusplus) + extern "C" { + #endif + + @class GS_GENERIC_CLASS(NSArray, ElementT); + + typedef struct + { + unsigned long state; + __unsafe_unretained id *itemsPtr; + unsigned long *mutationsPtr; + unsigned long extra[5]; + } NSFastEnumerationState; + + @protocol NSFastEnumeration + - (NSUInteger) countByEnumeratingWithState: (NSFastEnumerationState *)state + objects: (__unsafe_unretained id[])stackbuf + count: (NSUInteger)len; + @end + + @interface GS_GENERIC_CLASS(NSEnumerator, IterT) : NSObject + - (GS_GENERIC_CLASS(NSArray, IterT) *) allObjects; + - (GS_GENERIC_TYPE(IterT)) nextObject; + @end + + #if defined(__cplusplus) + } + #endif + + #endif /* __NSEnumerator_h_GNUSTEP_BASE_INCLUDE */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,609 ---- + /* Interface for NSGeometry routines for GNUStep + * Copyright (C) 1995 Free Software Foundation, Inc. + * + * Written by: Adam Fedor + * Date: 1995,199 + * + * This file is part of the GNUstep Base Library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02111 USA. + */ + + #ifndef __NSGeometry_h_GNUSTEP_BASE_INCLUDE + #define __NSGeometry_h_GNUSTEP_BASE_INCLUDE + #import "../GNUstepBase/GSVersionMacros.h" + + #import + + #import "NSString.h" + + #if defined(__cplusplus) + extern "C" { + #endif + + /**** Type, Constant, and Macro Definitions **********************************/ + + #ifndef MAX + #define MAX(a,b) \ + ({__typeof__(a) _MAX_a = (a); __typeof__(b) _MAX_b = (b); \ + _MAX_a > _MAX_b ? _MAX_a : _MAX_b; }) + #define GS_DEFINED_MAX + #endif + + #ifndef MIN + #define MIN(a,b) \ + ({__typeof__(a) _MIN_a = (a); __typeof__(b) _MIN_b = (b); \ + _MIN_a < _MIN_b ? _MIN_a : _MIN_b; }) + #define GS_DEFINED_MIN + #endif + + /** + { + CGFloat x; + CGFloat y; + } +

Represents a 2-d cartesian position.

*/ + typedef struct _NSPoint NSPoint; + struct _NSPoint + { + CGFloat x; + CGFloat y; + }; + + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + /** Array of NSPoint structs. */ + typedef NSPoint *NSPointArray; + /** Pointer to NSPoint struct. */ + typedef NSPoint *NSPointPointer; + #endif + + /** + { + CGFloat width; + CGFloat height; + } +

Floating point rectangle size.

*/ + typedef struct _NSSize NSSize; + struct _NSSize + { + CGFloat width; + CGFloat height; + }; + + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + /** Array of NSSize structs. */ + typedef NSSize *NSSizeArray; + /** Pointer to NSSize struct. */ + typedef NSSize *NSSizePointer; + #endif + + /** + { + NSPoint origin; + NSSize size; + } + +

Rectangle.

*/ + typedef struct _NSRect NSRect; + struct _NSRect + { + NSPoint origin; + NSSize size; + }; + + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + /** Array of NSRect structs. */ + typedef NSRect *NSRectArray; + /** Pointer to NSRect struct. */ + typedef NSRect *NSRectPointer; + #endif + + enum + { + NSMinXEdge = 0, + NSMinYEdge = 1, + NSMaxXEdge = 2, + NSMaxYEdge = 3 + }; + /** Sides of a rectangle. + + { + NSMinXEdge, + NSMinYEdge, + NSMaxXEdge, + NSMaxYEdge + } + + */ + typedef NSUInteger NSRectEdge; + + /** + { + CGFloat top; + CGFloat left; + CGFloat bottom; + CGFloat right; + } + +

A description of the distance between the edges of two rectangles.

*/ + #if OS_API_VERSION(MAC_OS_X_VERSION_10_7, GS_API_LATEST) + typedef struct NSEdgeInsets { + CGFloat top; + CGFloat left; + CGFloat bottom; + CGFloat right; + } NSEdgeInsets; + #endif + + /** Point at 0,0 */ + static const NSPoint NSZeroPoint __attribute__((unused)) = {0.0,0.0}; + /** Zero-size rectangle at 0,0 */ + static const NSRect NSZeroRect __attribute__((unused)) = {{0.0,0.0},{0.0,0.0}}; + /** Zero size */ + static const NSSize NSZeroSize __attribute__((unused)) = {0.0,0.0}; + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_7, GS_API_LATEST) + /** Zero edge insets **/ + static const NSEdgeInsets NSEdgeInsetsZero __attribute__((unused)) = {0.0,0.0,0.0,0.0}; + #endif + + /**** Function Prototypes ****************************************************/ + + /* + * All but the most complex functions are declared static inline in this + * header file so that they are maximally efficient. In order to provide + * true functions (for code modules that don't have this header) this + * header is included in NSGeometry.m where the functions are no longer + * declared inline. + */ + #ifdef IN_NSGEOMETRY_M + #define GS_GEOM_SCOPE extern + #define GS_GEOM_ATTR + #else + #define GS_GEOM_SCOPE static inline + #define GS_GEOM_ATTR __attribute__((unused)) + #endif + + /** Create Basic Structures... **/ + + GS_GEOM_SCOPE NSPoint + NSMakePoint(CGFloat x, CGFloat y) GS_GEOM_ATTR; + + /** Returns an NSPoint having x-coordinate X and y-coordinate Y. */ + GS_GEOM_SCOPE NSPoint + NSMakePoint(CGFloat x, CGFloat y) + { + NSPoint point; + + point.x = x; + point.y = y; + return point; + } + + GS_GEOM_SCOPE NSSize + NSMakeSize(CGFloat w, CGFloat h) GS_GEOM_ATTR; + + /** Returns an NSSize having width w and height h. */ + GS_GEOM_SCOPE NSSize + NSMakeSize(CGFloat w, CGFloat h) + { + NSSize size; + + size.width = w; + size.height = h; + return size; + } + + GS_GEOM_SCOPE NSRect + NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) GS_GEOM_ATTR; + + /** Returns an NSRect having point of origin (x, y) and size {w, h}. */ + GS_GEOM_SCOPE NSRect + NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) + { + NSRect rect; + + rect.origin.x = x; + rect.origin.y = y; + rect.size.width = w; + rect.size.height = h; + return rect; + } + + /** Constructs NSEdgeInsets. **/ + #if OS_API_VERSION(MAC_OS_X_VERSION_10_7, GS_API_LATEST) + GS_GEOM_SCOPE NSEdgeInsets + NSEdgeInsetsMake(CGFloat top, CGFloat left, + CGFloat bottom, CGFloat right) GS_GEOM_ATTR; + + GS_GEOM_SCOPE NSEdgeInsets + NSEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right) + { + NSEdgeInsets edgeInsets; + + edgeInsets.top = top; + edgeInsets.left = left; + edgeInsets.bottom = bottom; + edgeInsets.right = right; + + return edgeInsets; + } + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_10, GS_API_LATEST) + /** Compares two edge insets for equality. **/ + GS_EXPORT BOOL + NSEdgeInsetsEqual(NSEdgeInsets e1, NSEdgeInsets e2); + #endif + + #endif + + /** Get a Rectangle's Coordinates... **/ + + GS_GEOM_SCOPE CGFloat + NSMaxX(NSRect aRect) GS_GEOM_ATTR; + + /** Returns the greatest x-coordinate value still inside aRect. */ + GS_GEOM_SCOPE CGFloat + NSMaxX(NSRect aRect) + { + return aRect.origin.x + aRect.size.width; + } + + GS_GEOM_SCOPE CGFloat + NSMaxY(NSRect aRect) GS_GEOM_ATTR; + + /** Returns the greatest y-coordinate value still inside aRect. */ + GS_GEOM_SCOPE CGFloat + NSMaxY(NSRect aRect) + { + return aRect.origin.y + aRect.size.height; + } + + GS_GEOM_SCOPE CGFloat + NSMidX(NSRect aRect) GS_GEOM_ATTR; + + /** Returns the x-coordinate of aRect's middle point. */ + GS_GEOM_SCOPE CGFloat + NSMidX(NSRect aRect) + { + return aRect.origin.x + (aRect.size.width / 2.0); + } + + GS_GEOM_SCOPE CGFloat + NSMidY(NSRect aRect) GS_GEOM_ATTR; + + /** Returns the y-coordinate of aRect's middle point. */ + GS_GEOM_SCOPE CGFloat + NSMidY(NSRect aRect) + { + return aRect.origin.y + (aRect.size.height / 2.0); + } + + GS_GEOM_SCOPE CGFloat + NSMinX(NSRect aRect) GS_GEOM_ATTR; + + /** Returns the least x-coordinate value still inside aRect. */ + GS_GEOM_SCOPE CGFloat + NSMinX(NSRect aRect) + { + return aRect.origin.x; + } + + GS_GEOM_SCOPE CGFloat + NSMinY(NSRect aRect) GS_GEOM_ATTR; + + /** Returns the least y-coordinate value still inside aRect. */ + GS_GEOM_SCOPE CGFloat + NSMinY(NSRect aRect) + { + return aRect.origin.y; + } + + GS_GEOM_SCOPE CGFloat + NSWidth(NSRect aRect) GS_GEOM_ATTR; + + /** Returns aRect's width. */ + GS_GEOM_SCOPE CGFloat + NSWidth(NSRect aRect) + { + return aRect.size.width; + } + + GS_GEOM_SCOPE CGFloat + NSHeight(NSRect aRect) GS_GEOM_ATTR; + + /** Returns aRect's height. */ + GS_GEOM_SCOPE CGFloat + NSHeight(NSRect aRect) + { + return aRect.size.height; + } + + GS_GEOM_SCOPE BOOL + NSIsEmptyRect(NSRect aRect) GS_GEOM_ATTR; + + /** Returns 'YES' iff the area of aRect is zero (i.e., iff either + * of aRect's width or height is negative or zero). */ + GS_GEOM_SCOPE BOOL + NSIsEmptyRect(NSRect aRect) + { + return ((NSWidth(aRect) > 0) && (NSHeight(aRect) > 0)) ? NO : YES; + } + + /** Modify a Copy of a Rectangle... **/ + + GS_GEOM_SCOPE NSRect + NSOffsetRect(NSRect aRect, CGFloat dx, CGFloat dy) GS_GEOM_ATTR; + + /** Returns the rectangle obtained by translating aRect + * horizontally by dx and vertically by dy. */ + GS_GEOM_SCOPE NSRect + NSOffsetRect(NSRect aRect, CGFloat dx, CGFloat dy) + { + NSRect rect = aRect; + + rect.origin.x += dx; + rect.origin.y += dy; + return rect; + } + + GS_GEOM_SCOPE NSRect + NSInsetRect(NSRect aRect, CGFloat dX, CGFloat dY) GS_GEOM_ATTR; + + /** Returns the rectangle obtained by moving each of aRect's + * horizontal sides inward by dy and each of aRect's vertical + * sides inward by dx.
+ * NB. For MacOS-X compatability, this is permitted to return + * a rectanglew with nagative width or height, strange as that seems. + */ + GS_GEOM_SCOPE NSRect + NSInsetRect(NSRect aRect, CGFloat dX, CGFloat dY) + { + NSRect rect; + + rect = NSOffsetRect(aRect, dX, dY); + rect.size.width -= (2 * dX); + rect.size.height -= (2 * dY); + return rect; + } + + /** Divides aRect into two rectangles (namely slice and remainder) by + * "cutting" aRect---parallel to, and a distance amount from the given edge + * of aRect. You may pass 0 in as either of slice or + * remainder to avoid obtaining either of the created rectangles. */ + GS_EXPORT void + NSDivideRect(NSRect aRect, + NSRect *slice, + NSRect *remainder, + CGFloat amount, + NSRectEdge edge); + + /** Returns a rectangle obtained by expanding aRect minimally + * so that all four of its defining components are integers. */ + GS_EXPORT NSRect + NSIntegralRect(NSRect aRect); + + /** Compute a Third Rectangle from Two Rectangles... **/ + + GS_GEOM_SCOPE NSRect + NSUnionRect(NSRect aRect, NSRect bRect) GS_GEOM_ATTR; + + /** Returns the smallest rectangle which contains both aRect + * and bRect (modulo a set of measure zero). If either of aRect + * or bRect is an empty rectangle, then the other rectangle is + * returned. If both are empty, then the empty rectangle is returned. */ + GS_GEOM_SCOPE NSRect + NSUnionRect(NSRect aRect, NSRect bRect) + { + NSRect rect; + + if (NSIsEmptyRect(aRect) && NSIsEmptyRect(bRect)) + return NSMakeRect(0.0,0.0,0.0,0.0); + else if (NSIsEmptyRect(aRect)) + return bRect; + else if (NSIsEmptyRect(bRect)) + return aRect; + + rect = NSMakeRect(MIN(NSMinX(aRect), NSMinX(bRect)), + MIN(NSMinY(aRect), NSMinY(bRect)), 0.0, 0.0); + + rect = NSMakeRect(NSMinX(rect), + NSMinY(rect), + MAX(NSMaxX(aRect), NSMaxX(bRect)) - NSMinX(rect), + MAX(NSMaxY(aRect), NSMaxY(bRect)) - NSMinY(rect)); + + return rect; + } + + GS_GEOM_SCOPE NSRect + NSIntersectionRect(NSRect aRect, NSRect bRect) GS_GEOM_ATTR; + + /** Returns the largest rectangle which lies in both aRect and + * bRect. If aRect and bRect have empty intersection (or, rather, + * intersection of measure zero, since this includes having their + * intersection be only a point or a line), then the empty + * rectangle is returned. */ + GS_GEOM_SCOPE NSRect + NSIntersectionRect (NSRect aRect, NSRect bRect) + { + if (NSMaxX(aRect) <= NSMinX(bRect) || NSMaxX(bRect) <= NSMinX(aRect) + || NSMaxY(aRect) <= NSMinY(bRect) || NSMaxY(bRect) <= NSMinY(aRect)) + { + return NSMakeRect(0.0, 0.0, 0.0, 0.0); + } + else + { + NSRect rect; + + if (NSMinX(aRect) <= NSMinX(bRect)) + rect.origin.x = bRect.origin.x; + else + rect.origin.x = aRect.origin.x; + + if (NSMinY(aRect) <= NSMinY(bRect)) + rect.origin.y = bRect.origin.y; + else + rect.origin.y = aRect.origin.y; + + if (NSMaxX(aRect) >= NSMaxX(bRect)) + rect.size.width = NSMaxX(bRect) - rect.origin.x; + else + rect.size.width = NSMaxX(aRect) - rect.origin.x; + + if (NSMaxY(aRect) >= NSMaxY(bRect)) + rect.size.height = NSMaxY(bRect) - rect.origin.y; + else + rect.size.height = NSMaxY(aRect) - rect.origin.y; + + return rect; + } + } + + /** Test geometric relationships... **/ + + /** Returns 'YES' iff aRect's and bRect's origin and size are the same. */ + GS_EXPORT BOOL + NSEqualRects(NSRect aRect, NSRect bRect) GS_GEOM_ATTR; + + /** Returns 'YES' iff aSize's and bSize's width and height are the same. */ + GS_EXPORT BOOL + NSEqualSizes(NSSize aSize, NSSize bSize) GS_GEOM_ATTR; + + /** Returns 'YES' iff aPoint's and bPoint's x- and y-coordinates + * are the same. */ + GS_EXPORT BOOL + NSEqualPoints(NSPoint aPoint, NSPoint bPoint) GS_GEOM_ATTR; + + GS_GEOM_SCOPE BOOL + NSMouseInRect(NSPoint aPoint, NSRect aRect, BOOL flipped) GS_GEOM_ATTR; + + /** Returns 'YES' iff aPoint is inside aRect. */ + GS_GEOM_SCOPE BOOL + NSMouseInRect(NSPoint aPoint, NSRect aRect, BOOL flipped) + { + if (flipped) + { + return ((aPoint.x >= NSMinX(aRect)) + && (aPoint.y >= NSMinY(aRect)) + && (aPoint.x < NSMaxX(aRect)) + && (aPoint.y < NSMaxY(aRect))) ? YES : NO; + } + else + { + return ((aPoint.x >= NSMinX(aRect)) + && (aPoint.y > NSMinY(aRect)) + && (aPoint.x < NSMaxX(aRect)) + && (aPoint.y <= NSMaxY(aRect))) ? YES : NO; + } + } + + GS_GEOM_SCOPE BOOL + NSPointInRect(NSPoint aPoint, NSRect aRect) GS_GEOM_ATTR; + + /** Just like 'NSMouseInRect(aPoint, aRect, YES)'. */ + GS_GEOM_SCOPE BOOL + NSPointInRect(NSPoint aPoint, NSRect aRect) + { + return NSMouseInRect(aPoint, aRect, YES); + } + + GS_GEOM_SCOPE BOOL + NSContainsRect(NSRect aRect, NSRect bRect) GS_GEOM_ATTR; + + /** Returns 'YES' iff aRect totally encloses bRect. NOTE: For + * this to be the case, aRect cannot be empty, nor can any side + * of bRect go beyond any side of aRect. Note that this behavior + * is different than the original OpenStep behavior, where the sides + * of bRect could not touch aRect. */ + GS_GEOM_SCOPE BOOL + NSContainsRect(NSRect aRect, NSRect bRect) + { + return (!NSIsEmptyRect(bRect) + && (NSMinX(aRect) <= NSMinX(bRect)) + && (NSMinY(aRect) <= NSMinY(bRect)) + && (NSMaxX(aRect) >= NSMaxX(bRect)) + && (NSMaxY(aRect) >= NSMaxY(bRect))) ? YES : NO; + } + + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + GS_GEOM_SCOPE BOOL + NSIntersectsRect(NSRect aRect, NSRect bRect) GS_GEOM_ATTR; + + /** Returns YES if aRect and bRect have non-zero intersection area + (intersecting at a line or a point doesn't count). */ + GS_GEOM_SCOPE BOOL + NSIntersectsRect(NSRect aRect, NSRect bRect) + { + /* Note that intersecting at a line or a point doesn't count */ + return (NSMaxX(aRect) <= NSMinX(bRect) + || NSMaxX(bRect) <= NSMinX(aRect) + || NSMaxY(aRect) <= NSMinY(bRect) + || NSMaxY(bRect) <= NSMinY(aRect) + || NSIsEmptyRect(aRect) + || NSIsEmptyRect(bRect)) ? NO : YES; + } + #endif + + /** Get a String Representation... **/ + + #ifdef __OBJC__ + /** Returns an NSString of the form "{x=X; y=Y}", where + * X and Y are the x- and y-coordinates of aPoint, respectively. */ + GS_EXPORT NSString * + NSStringFromPoint(NSPoint aPoint); + + /** Returns an NSString of the form "{x=X; y=Y; width=W; height=H}", + * where X, Y, W, and H are the x-coordinate, y-coordinate, + * width, and height of aRect, respectively. */ + GS_EXPORT NSString * + NSStringFromRect(NSRect aRect); + + /** Returns an NSString of the form "{width=W; height=H}", where + * W and H are the width and height of aSize, respectively. */ + GS_EXPORT NSString * + NSStringFromSize(NSSize aSize); + + /** Parses point from string of form "{x=a; y=b}". (0,0) returned + if parsing fails. */ + GS_EXPORT NSPoint NSPointFromString(NSString* string); + + /** Parses size from string of form "{width=a; height=b}". Size of + 0,0 returned if parsing fails. */ + GS_EXPORT NSSize NSSizeFromString(NSString* string); + + /** Parses point from string of form "{x=a; y=b; width=c; + height=d}". Rectangle of 0 size at origin returned if parsing + fails. + */ + GS_EXPORT NSRect NSRectFromString(NSString* string); + + #endif /* __OBJC__ */ + + #ifdef GS_DEFINED_MAX + #undef GS_DEFINED_MAX + #undef MAX + #endif + + #ifdef GS_DEFINED_MIN + #undef GS_DEFINED_MIN + #undef MIN + #endif + + #if defined(__cplusplus) + } + #endif + + #endif /* __NSGeometry_h_GNUSTEP_BASE_INCLUDE */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,317 ---- + /** Interface to ObjC runtime for GNUStep + Copyright (C) 1995, 1997, 2000 Free Software Foundation, Inc. + + Written by: Andrew Kachites McCallum + Date: 1995 + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + + AutogsdocSource: NSObjCRuntime.m + AutogsdocSource: NSLog.m + + */ + + #ifndef __NSObjCRuntime_h_GNUSTEP_BASE_INCLUDE + #define __NSObjCRuntime_h_GNUSTEP_BASE_INCLUDE + + #ifdef __cplusplus + #ifndef __STDC_LIMIT_MACROS + #define __STDC_LIMIT_MACROS 1 + #endif + #endif + + #import "../GNUstepBase/GSVersionMacros.h" + #import "../GNUstepBase/GSConfig.h" + #import "../GNUstepBase/GNUstep.h" + #if __BLOCKS__ + #import "../GNUstepBase/GSBlocks.h" + #endif + + #include + #include + #include + + /* PA HP-UX kludge. */ + #if defined(__hppa__) && defined(__hpux__) && !defined(PRIuPTR) + #define PRIuPTR "lu" + #endif + + /* IRIX kludge. */ + #if defined(__sgi) + /* IRIX 6.5 provides all definitions, but only for C99 + compilations. */ + #define PRId8 "hhd" + #define PRIu8 "hhu" + #if (_MIPS_SZLONG == 32) + #define PRId64 "lld" + #define PRIu64 "llu" + #endif + /* This doesn't match , which always has "lld" here, but the + arguments are uint64_t, int64_t, which are unsigned long, long for + 64-bit in . */ + #if (_MIPS_SZLONG == 64) + #define PRId64 "ld" + #define PRIu64 "lu" + #endif + /* This doesn't match , which has "u" here, but the arguments + are uintptr_t, which is always unsigned long. */ + #define PRIuPTR "lu" + #endif + + /* Solaris < 10 kludge. */ + #if defined(__sun__) && defined(__svr4__) && !defined(PRIuPTR) + #if defined(__arch64__) || defined (__x86_64__) + #define PRIuPTR "lu" + #define PRIdPTR "ld" + #define PRIxPTR "lx" + #else + #define PRIuPTR "u" + #define PRIdPTR "d" + #define PRIxPTR "x" + #endif + #endif + + + /* These typedefs must be in place before GSObjCRuntime.h is imported. + */ + + #if !defined(NSINTEGER_DEFINED) + typedef intptr_t NSInteger; + typedef uintptr_t NSUInteger; + # define NSIntegerMax INTPTR_MAX + # define NSIntegerMin INTPTR_MIN + # define NSUIntegerMax UINTPTR_MAX + #endif /* !defined(NSINTEGER_DEFINED) */ + + #if !defined(CGFLOAT_DEFINED) + #if GS_SIZEOF_VOIDP == 8 + #define CGFLOAT_IS_DBL 1 + typedef double CGFloat; + #define CGFLOAT_MIN DBL_MIN + #define CGFLOAT_MAX DBL_MAX + #else + typedef float CGFloat; + #define CGFLOAT_MIN FLT_MIN + #define CGFLOAT_MAX FLT_MAX + #endif + #endif /* !defined(CGFLOAT_DEFINED) */ + + #define NSINTEGER_DEFINED 1 + #define CGFLOAT_DEFINED 1 + #ifndef NS_AUTOMATED_REFCOUNT_UNAVAILABLE + # if __has_feature(objc_arc) + # define NS_AUTOMATED_REFCOUNT_UNAVAILABLE \ + __attribute__((unavailable("Not available with automatic reference counting"))) + # else + # define NS_AUTOMATED_REFCOUNT_UNAVAILABLE + # endif + #endif + + + #if defined(__cplusplus) + extern "C" { + #endif + + + /* + * We can have strongly typed enums in C++11 mode or when the objc_fixed_enum + * feature is availble. + */ + #if (__has_feature(objc_fixed_enum) || (__cplusplus && (__cplusplus > 199711L) && __has_extension(cxx_strong_enums))) + # define _GS_NAMED_ENUM(ty, name) enum name : ty name; enum name : ty + # define _GS_ANON_ENUM(ty) enum : ty + # if __cplusplus + # define NS_OPTIONS(ty,name) ty name; enum : ty + # else + # define NS_OPTIONS(ty,name) NS_ENUM(ty,name) + # endif + #else // this provides less information, but works with older compilers + # define _GS_NAMED_ENUM(ty, name) ty name; enum + # define _GS_ANON_ENUM(ty) enum + # define NS_OPTIONS(ty, name) NS_ENUM(ty, name) + #endif + // A bit of fairy dust to expand NS_ENUM to the correct variant + #define _GS_GET_ENUM_MACRO(_first,_second,NAME,...) NAME + /* The trick here is that placing the variadic args first will push the name + * that the _GS_GET_ENUM_MACRO expands to into the correct position. + */ + #define NS_ENUM(...) _GS_GET_ENUM_MACRO(__VA_ARGS__,_GS_NAMED_ENUM,_GS_ANON_ENUM)(__VA_ARGS__) + + /* + * If the compiler supports nullability qualifiers, we define the macros for + * non-null sections. + */ + #if __has_feature(nullability) + # define NS_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin") + # define NS_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end") + #else + # define NS_ASSUME_NONNULL_BEGIN + # define NS_ASSUME_NONNULL_END + #endif + + /* + * Backwards compatibility macro for instance type. + */ + #if !__has_feature(objc_instancetype) + # define instancetype id + #endif + + /* + * Backwards compatibility macros for Objective-C lightweight generics. + */ + #if __has_feature(objc_generics) + # define GS_GENERIC_CLASS(clz, ...) clz<__VA_ARGS__> + # define GS_GENERIC_TYPE_F(typeRef, fallback) typeRef + #else + # define GS_GENERIC_CLASS(clz, ...) clz + # define GS_GENERIC_TYPE_F(typeRef, fallback) fallback + #endif + #define GS_GENERIC_TYPE(typeRef) GS_GENERIC_TYPE_F(typeRef, id) + + /** + * Backwards compatibility macro for the objc_designated_initializer attribute + */ + #if __has_attribute(objc_designated_initializer) + # define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) + #else + # define NS_DESIGNATED_INITIALIZER + #endif + + /** Bitfield used to specify options to control enumeration over collections. + */ + typedef NS_OPTIONS(NSUInteger, NSEnumerationOptions) + { + NSEnumerationConcurrent = (1UL << 0), /** Specifies that the enumeration + * is concurrency-safe. Note that this does not mean that it will be + * carried out in a concurrent manner, only that it can be. + */ + + NSEnumerationReverse = (1UL << 1) /** Specifies that the enumeration should + * happen in the opposite of the natural order of the collection. + */ + }; + + + /** Bitfield used to specify options to control the sorting of collections. + */ + typedef NS_OPTIONS(NSUInteger, NSSortOptions) + { + NSSortConcurrent = (1UL << 0), /** Specifies that the sort + * is concurrency-safe. Note that this does not mean that it will be + * carried out in a concurrent manner, only that it can be. + */ + NSSortStable = (1UL << 4) /** Specifies that the sort should keep + * equal objects in the same order in the collection. + */ + }; + + + #import "../GNUstepBase/GSObjCRuntime.h" + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5,GS_API_LATEST) + GS_EXPORT NSString *NSStringFromProtocol(Protocol *aProtocol); + GS_EXPORT Protocol *NSProtocolFromString(NSString *aProtocolName); + #endif + GS_EXPORT SEL NSSelectorFromString(NSString *aSelectorName); + GS_EXPORT NSString *NSStringFromSelector(SEL aSelector); + GS_EXPORT SEL NSSelectorFromString(NSString *aSelectorName); + GS_EXPORT Class NSClassFromString(NSString *aClassName); + GS_EXPORT NSString *NSStringFromClass(Class aClass); + GS_EXPORT const char *NSGetSizeAndAlignment(const char *typePtr, + NSUInteger *sizep, NSUInteger *alignp); + + #if OS_API_VERSION(GS_API_NONE, GS_API_NONE) + /* Logging */ + /** + * OpenStep spec states that log messages go to stderr, but just in case + * someone wants them to go somewhere else, they can implement a function + * like this and assign a pointer to it to _NSLog_printf_handler. + */ + typedef void NSLog_printf_handler (NSString* message); + GS_EXPORT NSLog_printf_handler *_NSLog_printf_handler; + GS_EXPORT int _NSLogDescriptor; + @class NSRecursiveLock; + GS_EXPORT NSRecursiveLock *GSLogLock(void); + #endif + + GS_EXPORT void NSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2); + GS_EXPORT void NSLogv(NSString *format, va_list args) NS_FORMAT_FUNCTION(1,0); + + #ifndef YES + #define YES 1 + #endif + #ifndef NO + #define NO 0 + #endif + #ifndef nil + #define nil 0 + #endif + + /** + * Contains values NSOrderedSame, NSOrderedAscending + * NSOrderedDescending, for left hand side equals, less than, or + * greater than right hand side. + */ + typedef NS_ENUM(NSInteger, NSComparisonResult) + { + NSOrderedAscending = (NSInteger)-1, NSOrderedSame, NSOrderedDescending + }; + + enum {NSNotFound = NSIntegerMax}; + + #if __BLOCKS__ + DEFINE_BLOCK_TYPE(NSComparator, NSComparisonResult, id, id); + #endif + + /** + * Declare the foundation export macro as an alias to GS_EXPORT + */ + #define FOUNDATION_EXPORT GS_EXPORT + + #if defined(__cplusplus) + } + #endif + + /** + * Declare Apple availability macros for compatibility purposes as no-ops. + */ + #define NS_CLASS_AVAILABLE(...) + #define NS_AVAILABLE(...) + #define NS_AVAILABLE_MAC(...) + #define NS_DEPRECATED(...) + #define NS_DEPRECATED_MAC(...) + #define NS_ENUM_AVAILABLE(...) + #define NS_ENUM_AVAILABLE_MAC(...) + #define NS_ENUM_DEPRECATED(...) + #define NS_ENUM_DEPRECATED_MAC(...) + #define NS_CLASS_AVAILABLE(...) + #define NS_CLASS_DEPRECATED(...) + #define NS_CLASS_AVAILABLE_MAC(...) + #define NS_CLASS_DEPRECATED_MAC(...) + #define NS_UNAVAILABLE + + /* Define root class NS macro */ + #ifndef NS_ROOT_CLASS + #if __has_attribute(objc_root_class) + #define NS_ROOT_CLASS __attribute__((objc_root_class)) + #else + #define NS_ROOT_CLASS + #endif + #endif + + #endif /* __NSObjCRuntime_h_GNUSTEP_BASE_INCLUDE */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,594 ---- + /**Interface for NSObject for GNUStep + Copyright (C) 1995, 1996, 1998 Free Software Foundation, Inc. + + Written by: Andrew Kachites McCallum + Date: 1995 + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + + AutogsdocSource: NSObject.m + */ + + #ifndef __NSObject_h_GNUSTEP_BASE_INCLUDE + #define __NSObject_h_GNUSTEP_BASE_INCLUDE + + #import "NSObjCRuntime.h" + #import + #import "NSZone.h" + + #ifdef GS_WITH_GC + #undef GS_WITH_GC + #endif + #define GS_WITH_GC 0 + + #import "../GNUstepBase/GNUstep.h" + + #if defined(__cplusplus) + extern "C" { + #endif + + @class NSArchiver; + @class NSArray; + @class NSCoder; + @class NSDictionary; + @class NSPortCoder; + @class NSMethodSignature; + @class NSMutableString; + @class NSRecursiveLock; + @class NSString; + @class NSInvocation; + @class Protocol; + + /** + * The NSObject protocol describes a minimal set of methods that all + * objects are expected to support. You should be able to send any + * of the messages listed in this protocol to an object, and be safe + * in assuming that the receiver can handle it. + */ + @protocol NSObject + /** + * Returns the class of the receiver. If the receiver is a proxy, then this + * may return the class of the proxy target. Use -isProxy to determine whether + * the receiver is a proxy. If you wish to find the real class of the + * receiver, ignoring proxies, then use object_getClass(). + */ + - (Class) class; + /** + * Returns the superclass of receiver's class. If the receiver is a proxy, + * then this may return the class of the proxy target. Use -isProxy to + * determine whether the receiver is a proxy. If you wish to find the real + * superclass of the receiver's class, ignoring proxies, then use + * class_getSuperclass(object_getClass()). + */ + - (Class) superclass; + /** + * Returns whether the receiver is equal to the argument. Defining equality is + * complex, so be careful when implementing this method. Collections such as + * NSSet depend on the behaviour of this method. In particular, this method + * must be commutative, so for any objects a and b: + * + * [a isEqual: b] == [b isEqual: a] + * + * This means that you must be very careful when returning YES if the argument + * is of another class. For example, if you define a number class that returns + * YES if the argument is a string representation of the number, then this will + * break because the string will not recognise your object as being equal to + * itself. + * + * If two objects are equal, then they must have the same hash value, however + * equal hash values do not imply equality. + */ + - (BOOL) isEqual: (id)anObject; + /** + * Returns YES if the receiver is an instance of the class, an instance of the + * subclass, or (in the case of proxies), an instance of something that can be + * treated as an instance of the class. + */ + - (BOOL) isKindOfClass: (Class)aClass; + /** + * Returns YES if the receiver is an instance of the class or (in the case of + * proxies), an instance of something that can be treated as an instance of the + * class. + * + * Calling this method is rarely the correct thing to do. In most cases, a + * subclass can be substituted for a superclass, so you should never need to + * check that an object is really an instance of a specific class and not a + * subclass. + */ + - (BOOL) isMemberOfClass: (Class)aClass; + /** + * Returns YES if the receiver is a proxy, NO otherwise. The default + * implementation of this method in NSObject returns NO, while the + * implementation in NSProxy returns YES. + */ + - (BOOL) isProxy; + /** + * Returns a hash value for the object. All objects that are equal *MUST* + * return the same hash value. For efficient storage in sets, or as keys in + * dictionaries, different objects should return hashes spread evenly over the + * range of an integer. + * + * An object may not return different values from this method after being + * stored in a collection. This typically means that ether the hash value must + * be constant after the object's creation, or that the object may not be + * modified while stored in an unordered collection. + */ + - (NSUInteger) hash; + /** + * Returns the receiver. In a proxy, this may (but is not required to) return + * the proxied object. + */ + - (id) self; + /** + * Performs the specified selector. The selector must correspond to a method + * that takes no arguments. + */ + - (id) performSelector: (SEL)aSelector; + /** + * Performs the specified selector, with the object as the argument. This + * method does not perform any automatic unboxing, so the selector must + * correspond to a method that takes one object argument. + */ + - (id) performSelector: (SEL)aSelector + withObject: (id)anObject; + /** + * Performs the specified selector, with the objects as the arguments. This + * method does not perform any automatic unboxing, so the selector must + * correspond to a method that takes two object arguments. + */ + - (id) performSelector: (SEL)aSelector + withObject: (id)object1 + withObject: (id)object2; + /** + * Returns YES if the object can respond to messages with the specified + * selector. The default implementation in NSObject returns YES if the + * receiver has a method corresponding to the method, but other classes may + * return YES if they can respond to a selector using one of the various + * forwarding mechanisms. + */ + - (BOOL) respondsToSelector: (SEL)aSelector; + /** + * Returns YES if the receiver conforms to the specified protocol. + */ + - (BOOL) conformsToProtocol: (Protocol*)aProtocol; + /** + * Increments the reference count of the object and returns the receiver. In + * garbage collected mode, this method does nothing. In automated reference + * counting mode, you may neither implement this method nor call it directly. + */ + - (id) retain NS_AUTOMATED_REFCOUNT_UNAVAILABLE; + /** + * Decrements the reference count of the object and destroys if it there are no + * remaining references. In garbage collected mode, this method does nothing. + * In automated reference counting mode, you may neither implement this method + * nor call it directly. + */ + - (oneway void) release NS_AUTOMATED_REFCOUNT_UNAVAILABLE; + /** + * Performs a deferred -release operation. The object's reference count is + * decremented at the end of the scope of the current autorelease pool, + * identified either by a -drain message sent to the current NSAutoreleasePool + * instance, or in more recent versions of Objective-C by the end of an + * @autorelease_pool scope. + * + * In garbage collected mode, this method does nothing. In automated reference + * counting mode, you may neither implement this method nor call it directly. + */ + - (id) autorelease NS_AUTOMATED_REFCOUNT_UNAVAILABLE; + /** + * Returns the current retain count of an object. This does not include the + * result of any pending autorelease operations. + * + * Code that relies on this method returning a sane value is broken. For + * singletons, it may return NSUIntegerMax. Even when it is tracking a retain + * count, it will not include on-stack pointers in manual retain/release mode, + * pointers marked as __unsafe_unretain or __weak in ARC mode, or pending + * autorelease operations. Its value is therefore largely meaningless. It can + * occasionally be useful for debugging. + */ + - (NSUInteger) retainCount NS_AUTOMATED_REFCOUNT_UNAVAILABLE; + /** + * Returns the description of the object. This is used by the %@ format + * specifier in strings. + */ + - (NSString*) description; + /** + * Returns the zone of the object. + */ + - (NSZone*) zone NS_AUTOMATED_REFCOUNT_UNAVAILABLE; + @end + + /** + * This protocol must be adopted by any class wishing to support copying - + * ie where instances of the class should be able to create new instances + * which are copies of the original and, where a class has mutable and + * immutable versions, where the copies are immutable. + */ + @protocol NSCopying + /** + * Called by [NSObject-copy] passing NSDefaultMallocZone() as zone.
+ * This method returns a copy of the receiver and, where the receiver is a + * mutable variant of a class which has an immutable partner class, the + * object returned is an instance of that immutable class.
+ * The new object is not autoreleased, and is considered to be + * 'owned' by the calling code ... which is therefore responsible for + * releasing it.
+ * In the case where the receiver is an instance of a container class, + * it is undefined whether contained objects are merely retained in the + * new copy, or are themselves copied, or whether some other mechanism + * entirely is used. + */ + - (id) copyWithZone: (NSZone*)zone; + @end + + /** + * This protocol must be adopted by any class wishing to support + * mutable copying - ie where instances of the class should be able + * to create mutable copies of themselves. + */ + @protocol NSMutableCopying + /** + * Called by [NSObject-mutableCopy] passing NSDefaultMallocZone() as zone.
+ * This method returns a copy of the receiver and, where the receiver is an + * immutable variant of a class which has a mutable partner class, the + * object returned is an instance of that mutable class. + * The new object is not autoreleased, and is considered to be + * 'owned' by the calling code ... which is therefore responsible for + * releasing it.
+ * In the case where the receiver is an instance of a container class, + * it is undefined whether contained objects are merely retained in the + * new copy, or are themselves copied, or whether some other mechanism + * entirely is used. + */ + - (id) mutableCopyWithZone: (NSZone*)zone; + @end + + /** + * This protocol must be adopted by any class wishing to support + * saving and restoring instances to an archive, or copying them + * to remote processes via the Distributed Objects mechanism. + */ + @protocol NSCoding + + /** + * Called when it is time for receiver to be serialized for writing to an + * archive or network connection. Receiver should record all of its instance + * variables using methods on aCoder. See documentation for [NSCoder], + * [NSArchiver], [NSKeyedArchiver], and/or [NSPortCoder] for more information. + */ + - (void) encodeWithCoder: (NSCoder*)aCoder; + + /** + * Called on a freshly allocated receiver when it is time to reconstitute from + * serialized bytes in an archive or from a network connection. Receiver + * should load all of its instance variables using methods on aCoder. See + * documentation for [NSCoder], [NSUnarchiver], [NSKeyedUnarchiver], and/or + * [NSPortCoder] for more information. + */ + - (id) initWithCoder: (NSCoder*)aDecoder; + @end + + @protocol NSSecureCoding + + (BOOL)supportsSecureCoding; + @end + + + GS_ROOT_CLASS @interface NSObject + { + /** + * Points to instance's class. Used by runtime to access method + * implementations, etc.. Set in +alloc, Unlike other instance variables, + * which are cleared there. + */ + Class isa; + } + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) + /** On a system which performs garbage collection, you should implement + * this method to execute code when the receiver is collected.
+ * You must not call this method yourself (except when a subclass + * calls the superclass method within its own implementation). + */ + - (void) finalize; + #endif + + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + - (NSString*) className; + #endif + + + (id) allocWithZone: (NSZone*)z; + + (id) alloc; + + (Class) class; + + /** + * This method is automatically invoked on any class which implements it + * when the class is loaded into the runtime.
+ * It is also invoked on any category where the method is implemented + * when that category is loaded into the runtime.
+ * The +load method is called directly by the runtime and you should never + * send a +load message to a class yourself.
+ * This method is called before the +initialize message is sent + * to the class, so you cannot depend on class initialisation having been + * performed, or upon other classes existing (apart from superclasses of + * the receiver, since +load is called on superclasses before it is called + * on their subclasses).
+ * As a gross generalisation, it is safe to use C code, including + * most ObjectiveC runtime functions within +load, but attempting to send + * messages to ObjectiveC objects is likely to fail.
+ * In GNUstep, this method is implemented for NSObject to perform some + * initialisation for the base library.
+ * If you implement +load for a class, don't call [super load] in your + * implementation. + */ + + (void) load; + + /** + * This message is automatically sent to a class by the runtime. It is + * sent once for each class, just before the class is used for the first + * time (excluding any automatic call to +load by the runtime).
+ * The message is sent in a thread-safe manner ... other threads may not + * call methods of the class until +initialize has finished executing.
+ * If the class has a superclass, its implementation of +initialize is + * called first.
+ * If the class does not implement +initialize then the implementation + * in the closest superclass may be called. This means that +initialize may + * be called more than once, and the recommended way to handle this by + * using the + * + * if (self == [classname class]) + * + * conditional to check whether the method is being called for a subclass.
+ * You should never call +initialize yourself ... let the runtime do it.
+ * You can implement +initialize in your own class if you need to. + * NSObject's implementation handles essential root object and base + * library initialization.
+ * It should be safe to call [super initialize] in your implementation + * of +initialize. + */ + + (void) initialize; + + (IMP) instanceMethodForSelector: (SEL)aSelector; + + (NSMethodSignature*) instanceMethodSignatureForSelector: (SEL)aSelector; + + (BOOL) instancesRespondToSelector: (SEL)aSelector; + + (BOOL) isSubclassOfClass: (Class)aClass; + + (id) new; + + (void) poseAsClass: (Class)aClassObject; + + (id) setVersion: (NSInteger)aVersion; + + (NSInteger) version; + + - (id) awakeAfterUsingCoder: (NSCoder*)aDecoder; + - (Class) classForArchiver; + - (Class) classForCoder; + - (id) copy; + - (void) dealloc; + - (void) doesNotRecognizeSelector: (SEL)aSelector; + - (void) forwardInvocation: (NSInvocation*)anInvocation; + - (id) init; + - (IMP) methodForSelector: (SEL)aSelector; + - (NSMethodSignature*) methodSignatureForSelector: (SEL)aSelector; + - (id) mutableCopy; + - (id) replacementObjectForArchiver: (NSArchiver*)anArchiver; + - (id) replacementObjectForCoder: (NSCoder*)anEncoder; + - (Class) superclass; + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) + /** + * This method will be called when attempting to send a message a class that + * does not understand it. The class may install a new method for the given + * selector and return YES, otherwise it should return NO. + * + * Note: This method is only reliable when using the GNUstep runtime. If you + * require compatibility with the GCC runtime, you must also implement + * -forwardInvocation: with equivalent semantics. This will be considerably + * slower, but more portable. + */ + + (BOOL) resolveClassMethod: (SEL)name; + + /** + * This method will be called when attempting to send a message an instance + * that does not understand it. The class may install a new method for the + * given selector and return YES, otherwise it should return NO. + * + * Note: This method is only reliable when using the GNUstep runtime. If you + * require compatibility with the GCC runtime, you must also implement + * -forwardInvocation: with equivalent semantics. This will be considerably + * slower, but more portable. + */ + + (BOOL) resolveInstanceMethod: (SEL)name; + #endif + #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) + /** + * Returns an auto-accessing proxy for the given object. This proxy sends a + * -beginContentAccess message to the receiver when it is created and an + * -endContentAccess message when it is destroyed. This prevents an object + * that implements the NSDiscardableContent protocol from having its contents + * discarded for as long as the proxy exists. + * + * On systems using the GNUstep runtime, messages send to the proxy will be + * slightly slower than direct messages. With the GCC runtime, they will be + * approximately two orders of magnitude slower. The GNUstep runtime, + * therefore, is strongly recommended for code calling this method. + */ + - (id) autoContentAccessingProxy; + + /** + * If an object does not understand a message, it may delegate it to another + * object. Returning nil indicates that forwarding should not take place. The + * default implementation of this returns nil, but care should be taken when + * subclassing NSObject subclasses and overriding this method that + * the superclass implementation is called if returning nil. + * + * Note: This method is only reliable when using the GNUstep runtime and code + * compiled with clang. If you require compatibility with GCC and the GCC + * runtime, you must also implement -forwardInvocation: with equivalent + * semantics. This will be considerably slower, but more portable. + */ + - (id) forwardingTargetForSelector: (SEL)aSelector; + + #endif + @end + + /** + * Used to allocate memory to hold an object, and initialise the + * class of the object to be aClass etc. The allocated memory will + * be extraBytes larger than the space actually needed to hold the + * instance variables of the object.
+ * This function is used by the [NSObject+allocWithZone:] method. + */ + GS_EXPORT id + NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone); + + /** + * Used to release the memory used by an object.
+ * This function is used by the [NSObject-dealloc] method. + */ + GS_EXPORT void + NSDeallocateObject(id anObject); + + /** + * Used to copy anObject. This makes a bitwise copy of anObject to + * memory allocated from zone. The allocated memory will be extraBytes + * longer than that necessary to actually store the instance variables + * of the copied object.
+ */ + GS_EXPORT NSObject * + NSCopyObject(NSObject *anObject, NSUInteger extraBytes, NSZone *zone); + + /** + * Returns a flag to indicate whether anObject should be retained or + * copied in order to make a copy in the specified zone.
+ * Basically, this tests to see if anObject was allocated from + * requestedZone and returns YES if it was. + */ + GS_EXPORT BOOL + NSShouldRetainWithZone(NSObject *anObject, NSZone *requestedZone); + + GS_EXPORT BOOL + NSDecrementExtraRefCountWasZero(id anObject); + + GS_EXPORT NSUInteger + NSExtraRefCount(id anObject); + + GS_EXPORT void + NSIncrementExtraRefCount(id anObject); + + #if OS_API_VERSION(GS_API_NONE, GS_API_NONE) + + /** Global lock to be used by classes when operating on any global + data that invoke other methods which also access global; thus, + creating the potential for deadlock. */ + GS_EXPORT NSRecursiveLock *gnustep_global_lock; + + @interface NSObject (NEXTSTEP) + - (id) error:(const char *)aString, ...; + /* - (const char *) name; + Removed because OpenStep has -(NSString*)name; */ + @end + + #if GS_API_VERSION(GS_API_NONE, 011700) + @interface NSObject (GNUstep) + + (void) enableDoubleReleaseCheck: (BOOL)enable; + @end + #endif + + #endif + + #import "NSDate.h" + /** + * Declares some methods for sending messages to self after a fixed delay. + * (These methods are in OpenStep and OS X.) + */ + @interface NSObject (TimedPerformers) + + /** + * Cancels any perform operations set up for the specified target + * in the current run loop. + */ + + (void) cancelPreviousPerformRequestsWithTarget: (id)obj; + + /** + * Cancels any perform operations set up for the specified target + * in the current loop, but only if the value of aSelector and argument + * with which the performs were set up match those supplied.
+ * Matching of the argument may be either by pointer equality or by + * use of the [NSObject-isEqual:] method. + */ + + (void) cancelPreviousPerformRequestsWithTarget: (id)obj + selector: (SEL)s + object: (id)arg; + /** + * Sets given message to be sent to this instance after given delay, + * in any run loop mode. See [NSRunLoop]. + */ + - (void) performSelector: (SEL)s + withObject: (id)arg + afterDelay: (NSTimeInterval)seconds; + + /** + * Sets given message to be sent to this instance after given delay, + * in given run loop modes. See [NSRunLoop]. + */ + - (void) performSelector: (SEL)s + withObject: (id)arg + afterDelay: (NSTimeInterval)seconds + inModes: (NSArray*)modes; + @end + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) + /** + * The NSDiscardableContent protocol is used by objects which encapsulate data + * which may be discarded if resource constraints are exceeded. These + * constraints are typically, but not always, related memory. + */ + @protocol NSDiscardableContent + + /** + * This method is called before any access to the object. It returns YES if + * the object's content is still valid. The caller must call -endContentAccess + * once for every call to -beginContentAccess; + */ + - (BOOL) beginContentAccess; + + /** + * Discards the contents of the object if it is not currently being edited. + */ + - (void) discardContentIfPossible; + + /** + * This method indicates that the caller has finished accessing the contents of + * the object adopting this protocol. Every call to -beginContentAccess must + * be be paired with a call to this method after the caller has finished + * accessing the contents. + */ + - (void) endContentAccess; + + /** + * Returns YES if the contents of the object have been discarded, either via a + * call to -discardContentIfPossible while the object is not in use, or by some + * implementation dependent mechanism. + */ + - (BOOL) isContentDiscarded; + @end + #endif + #if defined(__cplusplus) + } + #endif + + #if !NO_GNUSTEP && !defined(GNUSTEP_BASE_INTERNAL) + #import "../GNUstepBase/NSObject+GNUstepBase.h" + #endif + + #endif /* __NSObject_h_GNUSTEP_BASE_INCLUDE */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,235 ---- + /* + * Copyright (C) 1995,1999 Free Software Foundation, Inc. + * + * Written by: Adam Fedor + * Date: 1995 + * + * This file is part of the GNUstep Base Library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02111 USA. + */ + + #ifndef __NSRange_h_GNUSTEP_BASE_INCLUDE + #define __NSRange_h_GNUSTEP_BASE_INCLUDE + #import "../GNUstepBase/GSVersionMacros.h" + + /**** Included Headers *******************************************************/ + + #import "NSObject.h" + + #if defined(__cplusplus) + extern "C" { + #endif + + @class NSException; + @class NXConstantString; + + /**** Type, Constant, and Macro Definitions **********************************/ + + #ifndef MAX + #define MAX(a,b) \ + ({__typeof__(a) _MAX_a = (a); __typeof__(b) _MAX_b = (b); \ + _MAX_a > _MAX_b ? _MAX_a : _MAX_b; }) + #define GS_DEFINED_MAX + #endif + + #ifndef MIN + #define MIN(a,b) \ + ({__typeof__(a) _MIN_a = (a); __typeof__(b) _MIN_b = (b); \ + _MIN_a < _MIN_b ? _MIN_a : _MIN_b; }) + #define GS_DEFINED_MIN + #endif + + /** + * + { + NSUInteger location; + NSUInteger length; + } + *

+ * The NSRange type is used to specify ranges of locations, + * typically items in an array, characters in a string, and bytes + * in a data object. + *

+ *

+ * As 'boundary' or 'fencepost' errors are a particularly common + * problem in programming, it is important that you understand + * how an NSRange works. + *

+ *

+ * An NSRange consists of a location and a length. The + * points that are considered to lie in a range are the integers from + * the location to the location plus the length, so the number + * of points in a range is the length of the range plus one.
+ * However, if you consider these points like the marks on a + * ruler, you can only store information between + * points. So the number of items that can be stored in a range + * is the length of the range. + *

+ */ + typedef struct _NSRange NSRange; + struct _NSRange + { + NSUInteger location; + NSUInteger length; + }; + + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + /** Pointer to an NSRange structure. */ + typedef NSRange *NSRangePointer; + #endif + + /**** Function Prototypes ****************************************************/ + + /* + * All but the most complex functions are declared static inline in this + * header file so that they are maximally efficient. In order to provide + * true functions (for code modules that don't have this header) this + * header is included in NSRange.m where the functions are no longer + * declared inline. + */ + #ifdef IN_NSRANGE_M + #define GS_RANGE_SCOPE extern + #define GS_RANGE_ATTR + #else + #define GS_RANGE_SCOPE static inline + #define GS_RANGE_ATTR __attribute__((unused)) + #endif + + GS_RANGE_SCOPE NSUInteger + NSMaxRange(NSRange range) GS_RANGE_ATTR; + + /** Returns top end of range (location + length). */ + GS_RANGE_SCOPE NSUInteger + NSMaxRange(NSRange range) + { + return range.location + range.length; + } + + GS_RANGE_SCOPE BOOL + NSLocationInRange(NSUInteger location, NSRange range) GS_RANGE_ATTR; + + /** Returns whether location is greater than or equal to range's location + * and less than its max. + */ + GS_RANGE_SCOPE BOOL + NSLocationInRange(NSUInteger location, NSRange range) + { + return (location >= range.location) && (location < NSMaxRange(range)); + } + + /** Convenience method for raising an NSRangeException. */ + GS_EXPORT void _NSRangeExceptionRaise (void); + /* NB: The implementation of _NSRangeExceptionRaise is: + [NSException raise: NSRangeException + format: @"Range location + length too great"]; + + _NSRangeExceptionRaise is defined in NSRange.m so that this + file (NSRange.h) can be included without problems in the + implementation of the base classes themselves. */ + + GS_RANGE_SCOPE NSRange + NSMakeRange(NSUInteger location, NSUInteger length) GS_RANGE_ATTR; + + /** Creates new range starting at location and of given length. */ + GS_RANGE_SCOPE NSRange + NSMakeRange(NSUInteger location, NSUInteger length) + { + NSRange range; + NSUInteger end = location + length; + + if (end < location || end < length) + { + _NSRangeExceptionRaise (); + } + range.location = location; + range.length = length; + return range; + } + + GS_RANGE_SCOPE BOOL + NSEqualRanges(NSRange range1, NSRange range2) GS_RANGE_ATTR; + + /** Returns whether range1 and range2 have same location and length. */ + GS_RANGE_SCOPE BOOL + NSEqualRanges(NSRange range1, NSRange range2) + { + return ((range1.location == range2.location) + && (range1.length == range2.length)); + } + + GS_RANGE_SCOPE NSRange + NSUnionRange(NSRange range1, NSRange range2) GS_RANGE_ATTR; + + /** Returns range going from minimum of aRange's and bRange's locations to + maximum of their two max's. */ + GS_RANGE_SCOPE NSRange + NSUnionRange(NSRange aRange, NSRange bRange) + { + NSRange range; + + range.location = MIN(aRange.location, bRange.location); + range.length = MAX(NSMaxRange(aRange), NSMaxRange(bRange)) + - range.location; + return range; + } + + GS_RANGE_SCOPE NSRange + NSIntersectionRange(NSRange range1, NSRange range2) GS_RANGE_ATTR; + + /** Returns range containing indices existing in both aRange and bRange. If + * the returned length is 0, the location is undefined and should be ignored. + */ + GS_RANGE_SCOPE NSRange + NSIntersectionRange (NSRange aRange, NSRange bRange) + { + NSRange range; + + if (NSMaxRange(aRange) < bRange.location + || NSMaxRange(bRange) < aRange.location) + return NSMakeRange(0, 0); + + range.location = MAX(aRange.location, bRange.location); + range.length = MIN(NSMaxRange(aRange), NSMaxRange(bRange)) + - range.location; + return range; + } + + + @class NSString; + + /** Returns string of form {location=a, length=b}. */ + GS_EXPORT NSString *NSStringFromRange(NSRange range); + + /** Parses range from string of form {location=a, length=b}; returns range + with 0 location and length if this fails. */ + GS_EXPORT NSRange NSRangeFromString(NSString *aString); + + #ifdef GS_DEFINED_MAX + #undef GS_DEFINED_MAX + #undef MAX + #endif + + #ifdef GS_DEFINED_MIN + #undef GS_DEFINED_MIN + #undef MIN + #endif + + #if defined(__cplusplus) + } + #endif + + #endif /* __NSRange_h_GNUSTEP_BASE_INCLUDE */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,977 ---- + /* Interface for NSString for GNUstep + Copyright (C) 1995, 1996, 1999 Free Software Foundation, Inc. + + Written by: Andrew Kachites McCallum + Date: 1995 + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + */ + + /** + + Portable path handling +

Portable path handling (across both unix-like and mswindows operating + systems) requires some care. A modern operating system uses the concept + of a single root to the filesystem, but mswindows has multiple filesystems + with no common root, so code must be aware of this. There is also the + more minor issue that windows often uses a backslash as a separator between + the components of a path and unix-like systems always use forward slash.
+ On windows there is also the issue that two styles of path are used, + most commonly with a drive letter and a path on that drive + (eg. 'C:\directory\file') but also UNC paths + (eg. '//host/share/directory/file') so path handling functions must deal + with both formats. +

+

GNUstep has three path handling modes, 'gnustep', 'unix', and 'windows'. + The mode defaults to 'gnustep' but may be set using the GSPathHandling() + function.
+ You should probably stick to using the default 'gnustep' mode in which the + path handling methods cope with both 'unix' and 'windows' style paths in + portable and tolerant manner:
+ Paths are read in literally so they can be in the native format provided + by the operating system or in a non-native format. See + [NSFileManager-stringWithFileSystemRepresentation:length:].
+ Paths are written out using the native format of the system the application + is running on (eg on windows slashes are converted to backslashes). + See [NSFileManager-fileSystemRepresentationWithPath:].
+ The path handling methods accept either a forward or backward slash as a + path separator when parsing any path.
+ Unless operating in 'unix' mode, a leading letter followed by a colon is + considered the start of a windows style path (the drive specifier), and a + path beginning with something of the form '//host/share/' is considered + the start of a UNC style path.
+ The path handling methods add forward slashes when building new paths + internally or when standardising paths, so those path strings provide + a portable representation (as long as they are relative paths, not including + system specific roots).
+ An important case to note is that on windows a path which looks at first + glance like an absolute path may actually be a relative one.
+ 'C:file' is a relative path because it specifies a file on the C drive + but does not say what directory it is in.
+ Similarly, '/dir/file' is a relative path because it specifies the full + location fo a file on a drive, but does not specify which drive it is on. +

+

As a consequence of this path handling, you are able to work completely + portably using relative paths (adding components, extensions and + relative paths to a pth, or removing components, extensions and relative + paths from a path etc), and when you save paths as strings in files + which may be transferred to another platform, you should save a relative + path.
+ When you need to know absolute paths of various points in the filesystem, + you can use various path utility functions to obtain those absolute paths. + For instance, instead of saving an absolute path to a file, you might want + to save a path relative to a user's home directory. You could do that by + calling NSHomeDirectory() to get the home directory, and only saving the + part of the full path after that prefix. +

+
+ */ + + #ifndef __NSString_h_GNUSTEP_BASE_INCLUDE + #define __NSString_h_GNUSTEP_BASE_INCLUDE + #import "../GNUstepBase/GSVersionMacros.h" + + #import "NSObject.h" + #import "NSRange.h" + + #if defined(__cplusplus) + extern "C" { + #endif + + /** + * Type for representing unicode characters. (16-bit) + */ + typedef uint16_t unichar; + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5,GS_API_LATEST) + #define NSMaximumStringLength (INT_MAX-1) + #endif + + @class NSArray; + @class NSCharacterSet; + @class NSData; + @class NSDictionary; + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + @class NSError; + @class NSLocale; + @class NSURL; + #endif + + #define NSMaximumStringLength (INT_MAX-1) + + enum + { + NSCaseInsensitiveSearch = 1, + NSLiteralSearch = 2, + NSBackwardsSearch = 4, + NSAnchoredSearch = 8, + NSNumericSearch = 64 /* MacOS-X 10.2 */ + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5,GS_API_LATEST) + , + NSDiacriticInsensitiveSearch = 128, + NSWidthInsensitiveSearch = 256, + NSForcedOrderingSearch = 512 + #endif + #if OS_API_VERSION(MAC_OS_X_VERSION_10_7,GS_API_LATEST) + , + /** + * Treats the search string as a regular expression. This option may be + * combined with NSCaseInsensitiveSearch and NSAnchoredSearch, but no other + * search options. + * + * This option may only be used with the -rangeOfString: family of methods. + */ + NSRegularExpressionSearch = 1024 + #endif + }; + typedef NSUInteger NSStringCompareOptions; + + /** + *

Enumeration of available encodings for converting between bytes and + * characters (in [NSString]s). The ones that are shared with OpenStep and + * Cocoa are: NSASCIIStringEncoding, NSNEXTSTEPStringEncoding, + * NSJapaneseEUCStringEncoding, NSUTF8StringEncoding, + * NSISOLatin1StringEncoding, NSSymbolStringEncoding, + * NSNonLossyASCIIStringEncoding, NSShiftJISStringEncoding, + * NSISOLatin2StringEncoding, NSUnicodeStringEncoding, + * NSWindowsCP1251StringEncoding, NSWindowsCP1252StringEncoding, + * NSWindowsCP1253StringEncoding, NSWindowsCP1254StringEncoding, + * NSWindowsCP1250StringEncoding, NSISO2022JPStringEncoding, + * NSMacOSRomanStringEncoding, NSProprietaryStringEncoding.

+ * + *

Additional encodings available under GNUstep are: + * NSKOI8RStringEncoding, NSISOLatin3StringEncoding, + * NSISOLatin4StringEncoding, NSISOCyrillicStringEncoding, + * NSISOArabicStringEncoding, NSISOGreekStringEncoding, + * NSISOHebrewStringEncoding, NSISOLatin5StringEncoding, + * NSISOLatin6StringEncoding, NSISOThaiStringEncoding, + * NSISOLatin7StringEncoding, NSISOLatin8StringEncoding, + * NSISOLatin9StringEncoding, NSGB2312StringEncoding, NSUTF7StringEncoding, + * NSGSM0338StringEncoding, NSBIG5StringEncoding, + * NSKoreanEUCStringEncoding.

+ */ + typedef enum _NSStringEncoding + { + /* NB. Must not have an encoding with value zero - so we can use zero to + tell that a variable that should contain an encoding has not yet been + initialised */ + GSUndefinedEncoding = 0, + NSASCIIStringEncoding = 1, + NSNEXTSTEPStringEncoding = 2, + NSJapaneseEUCStringEncoding = 3, + NSUTF8StringEncoding = 4, + NSISOLatin1StringEncoding = 5, // ISO-8859-1; West European + NSSymbolStringEncoding = 6, + NSNonLossyASCIIStringEncoding = 7, + NSShiftJISStringEncoding = 8, + NSISOLatin2StringEncoding = 9, // ISO-8859-2; East European + NSUnicodeStringEncoding = 10, + NSUTF16StringEncoding = NSUnicodeStringEncoding, // An alias + NSWindowsCP1251StringEncoding = 11, + NSWindowsCP1252StringEncoding = 12, // WinLatin1 + NSWindowsCP1253StringEncoding = 13, // Greek + NSWindowsCP1254StringEncoding = 14, // Turkish + NSWindowsCP1250StringEncoding = 15, // WinLatin2 + NSISO2022JPStringEncoding = 21, + NSMacOSRomanStringEncoding = 30, + NSProprietaryStringEncoding = 31, + + NSKOI8RStringEncoding = 50, // Russian/Cyrillic + NSISOLatin3StringEncoding = 51, // ISO-8859-3; South European + NSISOLatin4StringEncoding = 52, // ISO-8859-4; North European + NSISOCyrillicStringEncoding = 22, // ISO-8859-5 + NSISOArabicStringEncoding = 53, // ISO-8859-6 + NSISOGreekStringEncoding = 54, // ISO-8859-7 + NSISOHebrewStringEncoding = 55, // ISO-8859-8 + NSISOLatin5StringEncoding = 57, // ISO-8859-9; Turkish + NSISOLatin6StringEncoding = 58, // ISO-8859-10; Nordic + NSISOThaiStringEncoding = 59, // ISO-8859-11 + /* Possible future ISO-8859 additions + // ISO-8859-12 + */ + NSISOLatin7StringEncoding = 61, // ISO-8859-13 + NSISOLatin8StringEncoding = 62, // ISO-8859-14 + NSISOLatin9StringEncoding = 63, // ISO-8859-15; Replaces ISOLatin1 + NSGB2312StringEncoding = 56, + NSUTF7StringEncoding = 64, // RFC 2152 + NSGSM0338StringEncoding, // GSM (mobile phone) default alphabet + NSBIG5StringEncoding, // Traditional chinese + NSKoreanEUCStringEncoding // Korean + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) + , + NSUTF16BigEndianStringEncoding = 0x90000100, + NSUTF16LittleEndianStringEncoding = 0x94000100, + NSUTF32StringEncoding = 0x8c000100, + NSUTF32BigEndianStringEncoding = 0x98000100, + NSUTF32LittleEndianStringEncoding = 0x9c000100 + #endif + } NSStringEncoding; + + enum { + NSOpenStepUnicodeReservedBase = 0xF400 + }; + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) + enum { + NSStringEncodingConversionAllowLossy = 1, + NSStringEncodingConversionExternalRepresentation = 2 + }; + typedef NSUInteger NSStringEncodingConversionOptions; + #endif + + /** + *

+ * NSString objects represent an immutable string of Unicode 3.0 + * characters. These may be accessed individually as type + * unichar, an unsigned short.
+ * The [NSMutableString] subclass represents a modifiable string. Both are + * implemented as part of a class cluster and the instances you receive may + * actually be of unspecified concrete subclasses. + *

+ *

+ * A constant NSString can be created using the following syntax: + * @"...", where the contents of the quotes are the + * string, using only ASCII characters. + *

+ *

+ * A variable string can be created using a C printf-like format, + * as in [NSString stringWithFormat: @"Total is %f", t]. + *

+ *

+ * To create a concrete subclass of NSString, you must have your + * class inherit from NSString and override at least the two + * primitive methods - -length and -characterAtIndex: + *

+ *

+ * In general the rule is that your subclass must override any + * initialiser that you want to use with it. The GNUstep + * implementation relaxes that to say that, you may override + * only the designated initialiser and the other + * initialisation methods should work. + *

+ *

+ * Where an NSString instance method returns an NSString object, + * the class of the actual object returned may be any subclass + * of NSString. The actual value returned may be a new + * autoreleased object, an autoreleased copy of the receiver, + * or the receiver itsself. While the abstract base class + * implementations of methods (other than initialisers) will + * avoid returning mutable strings by returning an autoreleased + * copy of a mutable receiver, concrete subclasses may behave + * differently, so code should not rely upon the mutability of + * returned strings nor upon their lifetime being greater than + * that of the receiver which returned them. + *

+ */ + @interface NSString :NSObject + + + (id) string; + + (id) stringWithCharacters: (const unichar*)chars + length: (NSUInteger)length; + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) && GS_API_VERSION( 10200,GS_API_LATEST) + + (id) stringWithCString: (const char*)byteString + encoding: (NSStringEncoding)encoding; + #endif + + (id) stringWithCString: (const char*)byteString + length: (NSUInteger)length; + + (id) stringWithCString: (const char*)byteString; + + (id) stringWithFormat: (NSString*)format, ... NS_FORMAT_FUNCTION(1,2); + + (id) stringWithContentsOfFile:(NSString *)path; + + // Initializing Newly Allocated Strings + - (id) init; + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) && GS_API_VERSION( 10200,GS_API_LATEST) + - (id) initWithBytes: (const void*)bytes + length: (NSUInteger)length + encoding: (NSStringEncoding)encoding; + - (id) initWithBytesNoCopy: (void*)bytes + length: (NSUInteger)length + encoding: (NSStringEncoding)encoding + freeWhenDone: (BOOL)flag; + #endif + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) + + (id) stringWithContentsOfFile: (NSString*)path + usedEncoding: (NSStringEncoding*)enc + error: (NSError**)error; + - (id) initWithContentsOfFile: (NSString*)path + usedEncoding: (NSStringEncoding*)enc + error: (NSError**)error; + + (id) stringWithContentsOfFile: (NSString*)path + encoding: (NSStringEncoding)enc + error: (NSError**)error; + - (id) initWithContentsOfFile: (NSString*)path + encoding: (NSStringEncoding)enc + error: (NSError**)error; + + (id) stringWithContentsOfURL: (NSURL*)url + usedEncoding: (NSStringEncoding*)enc + error: (NSError**)error; + - (id) initWithContentsOfURL: (NSURL*)url + usedEncoding: (NSStringEncoding*)enc + error: (NSError**)error; + + (id) stringWithContentsOfURL: (NSURL*)url + encoding: (NSStringEncoding)enc + error: (NSError**)error; + - (id) initWithContentsOfURL: (NSURL*)url + encoding: (NSStringEncoding)enc + error: (NSError**)error; + - (BOOL) writeToFile: (NSString*)path + atomically: (BOOL)atomically + encoding: (NSStringEncoding)enc + error: (NSError**)error; + - (BOOL) writeToURL: (NSURL*)url + atomically: (BOOL)atomically + encoding: (NSStringEncoding)enc + error: (NSError**)error; + #endif + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5,GS_API_LATEST) + - (NSString*)stringByReplacingOccurrencesOfString: (NSString*)replace + withString: (NSString*)by + options: (NSStringCompareOptions)opts + range: (NSRange)searchRange; + - (NSString*)stringByReplacingOccurrencesOfString: (NSString*)replace + withString: (NSString*)by; + - (NSString*) stringByReplacingCharactersInRange: (NSRange)aRange + withString: (NSString*)by; + #endif + - (id) initWithCharactersNoCopy: (unichar*)chars + length: (NSUInteger)length + freeWhenDone: (BOOL)flag; + - (id) initWithCharacters: (const unichar*)chars + length: (NSUInteger)length; + - (id) initWithCStringNoCopy: (char*)byteString + length: (NSUInteger)length + freeWhenDone: (BOOL)flag; + - (id) initWithCString: (const char*)byteString + length: (NSUInteger)length; + - (id) initWithCString: (const char*)byteString; + - (id) initWithString: (NSString*)string; + - (id) initWithFormat: (NSString*)format, ... NS_FORMAT_FUNCTION(1,2); + - (id) initWithFormat: (NSString*)format + arguments: (va_list)argList NS_FORMAT_FUNCTION(1,0); + - (id) initWithData: (NSData*)data + encoding: (NSStringEncoding)encoding; + - (id) initWithContentsOfFile: (NSString*)path; + + // Getting a String's Length + - (NSUInteger) length; + + // Accessing Characters + - (unichar) characterAtIndex: (NSUInteger)index; + - (void) getCharacters: (unichar*)buffer; + - (void) getCharacters: (unichar*)buffer + range: (NSRange)aRange; + + // Combining Strings + - (NSString*) stringByAppendingFormat: (NSString*)format, ... + NS_FORMAT_FUNCTION(1,2); + - (NSString*) stringByAppendingString: (NSString*)aString; + + // Dividing Strings into Substrings + - (NSArray*) componentsSeparatedByString: (NSString*)separator; + - (NSString*) substringFromIndex: (NSUInteger)index; + - (NSString*) substringToIndex: (NSUInteger)index; + + // Finding Ranges of Characters and Substrings + - (NSRange) rangeOfCharacterFromSet: (NSCharacterSet*)aSet; + - (NSRange) rangeOfCharacterFromSet: (NSCharacterSet*)aSet + options: (NSUInteger)mask; + - (NSRange) rangeOfCharacterFromSet: (NSCharacterSet*)aSet + options: (NSUInteger)mask + range: (NSRange)aRange; + - (NSRange) rangeOfString: (NSString*)string; + - (NSRange) rangeOfString: (NSString*)string + options: (NSUInteger)mask; + - (NSRange) rangeOfString: (NSString*)aString + options: (NSUInteger)mask + range: (NSRange)aRange; + + // Determining Composed Character Sequences + - (NSRange) rangeOfComposedCharacterSequenceAtIndex: (NSUInteger)anIndex; + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_2,GS_API_LATEST) + /** Returns a copy of the receiver normalised using the KD form. + */ + - (NSString *) decomposedStringWithCompatibilityMapping; + + /** Returns a copy of the receiver normalised using the D form. + */ + - (NSString *) decomposedStringWithCanonicalMapping; + + /** Returns a copy of the receiver normalised using the KC form. + */ + - (NSString *) precomposedStringWithCompatibilityMapping; + + /** Returns a copy of the receiver normalised using the C form. + */ + - (NSString *) precomposedStringWithCanonicalMapping; + #endif + + // Converting String Contents into a Property List + - (id) propertyList; + - (NSDictionary*) propertyListFromStringsFileFormat; + + // Identifying and Comparing Strings + - (NSComparisonResult) compare: (NSString*)aString; + - (NSComparisonResult) compare: (NSString*)aString + options: (NSUInteger)mask; + - (NSComparisonResult) compare: (NSString*)aString + options: (NSUInteger)mask + range: (NSRange)aRange; + - (BOOL) hasPrefix: (NSString*)aString; + - (BOOL) hasSuffix: (NSString*)aString; + - (BOOL) isEqual: (id)anObject; + - (BOOL) isEqualToString: (NSString*)aString; + - (NSUInteger) hash; + + // Getting a Shared Prefix + - (NSString*) commonPrefixWithString: (NSString*)aString + options: (NSUInteger)mask; + + // Changing Case + - (NSString*) capitalizedString; + - (NSString*) lowercaseString; + - (NSString*) uppercaseString; + + // Getting C Strings + - (const char*) cString; + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) && GS_API_VERSION( 10200,GS_API_LATEST) + - (const char*) cStringUsingEncoding: (NSStringEncoding)encoding; + - (BOOL) getCString: (char*)buffer + maxLength: (NSUInteger)maxLength + encoding: (NSStringEncoding)encoding; + - (id) initWithCString: (const char*)byteString + encoding: (NSStringEncoding)encoding; + - (NSUInteger) lengthOfBytesUsingEncoding: (NSStringEncoding)encoding; + - (NSUInteger) maximumLengthOfBytesUsingEncoding: (NSStringEncoding)encoding; + #endif + + #endif + - (NSUInteger) cStringLength; + - (void) getCString: (char*)buffer; + - (void) getCString: (char*)buffer + maxLength: (NSUInteger)maxLength; + - (void) getCString: (char*)buffer + maxLength: (NSUInteger)maxLength + range: (NSRange)aRange + remainingRange: (NSRange*)leftoverRange; + + // Getting Numeric Values + - (float) floatValue; + - (int) intValue; + + // Working With Encodings + - (BOOL) canBeConvertedToEncoding: (NSStringEncoding)encoding; + - (NSData*) dataUsingEncoding: (NSStringEncoding)encoding; + - (NSData*) dataUsingEncoding: (NSStringEncoding)encoding + allowLossyConversion: (BOOL)flag; + + (NSStringEncoding) defaultCStringEncoding; + - (NSString*) description; + - (NSStringEncoding) fastestEncoding; + - (NSStringEncoding) smallestEncoding; + + /** + * Attempts to complete this string as a path in the filesystem by finding + * a unique completion if one exists and returning it by reference in + * outputName (which must be a non-nil pointer), or if it finds a set of + * completions they are returned by reference in outputArray, if it is non-nil. + * filterTypes can be an array of strings specifying extensions to consider; + * files without these extensions will be ignored and will not constitute + * completions. Returns 0 if no match found, else a positive number that is + * only accurate if outputArray was non-nil. + */ + - (NSUInteger) completePathIntoString: (NSString**)outputName + caseSensitive: (BOOL)flag + matchesIntoArray: (NSArray**)outputArray + filterTypes: (NSArray*)filterTypes; + + /** + * Converts the receiver to a C string path expressed in the character + * encoding appropriate for the local host file system. This string will be + * automatically freed soon after it is returned, so copy it if you need it + * for long.
+ * NB. On mingw32 systems the filesystem representation of a path is a 16-bit + * unicode character string, so you should only pass the value returned by + * this method to functions expecting wide characters.
+ * This method uses [NSFileManager-fileSystemRepresentationWithPath:] to + * perform the conversion. + */ + - (const GSNativeChar*) fileSystemRepresentation; + + /** + * Converts the receiver to a C string path using the character encoding + * appropriate to the local file system. This string will be stored + * into buffer if it is shorter (number of characters) than size, + * otherwise NO is returned.
+ * NB. On mingw32 systems the filesystem representation of a path is a 16-bit + * unicode character string, so the buffer you pass to this method must be + * twice as many bytes as the size (number of characters) you expect to + * receive.
+ * This method uses [NSFileManager-fileSystemRepresentationWithPath:] to + * perform the conversion. + */ + - (BOOL) getFileSystemRepresentation: (GSNativeChar*)buffer + maxLength: (NSUInteger)size; + + /** + * Returns a string containing the last path component of the receiver.
+ * The path component is the last non-empty substring delimited by the ends + * of the string, or by path separator characters.
+ * If the receiver only contains a root part, this method returns it.
+ * If there are no non-empty substrings, this returns an empty string.
+ * NB. In a windows UNC path, the host and share specification is treated as + * a single path component, even though it contains separators. + * So a string of the form '//host/share' may be returned.
+ * Other special cases are apply when the string is the root. + * + * @"foo/bar" produces @"bar" + * @"foo/bar/" produces @"bar" + * @"/foo/bar" produces @"bar" + * @"/foo" produces @"foo" + * @"/" produces @"/" (root is a special case) + * @"" produces @"" + * @"C:/" produces @"C:/" (root is a special case) + * @"C:" produces @"C:" + * @"//host/share/" produces @"//host/share/" (root is a special case) + * @"//host/share" produces @"//host/share" + * + */ + - (NSString*) lastPathComponent; + + /** + * Returns a new string containing the path extension of the receiver.
+ * The path extension is a suffix on the last path component which starts + * with the extension separator (a '.') (for example .tiff is the + * pathExtension for /foo/bar.tiff).
+ * Returns an empty string if no such extension exists. + * + * @"a.b" produces @"b" + * @"a.b/" produces @"b" + * @"/path/a.ext" produces @"ext" + * @"/path/a." produces @"" + * @"/path/.a" produces @"" (.a is not an extension to a file) + * @".a" produces @"" (.a is not an extension to a file) + * + */ + - (NSString*) pathExtension; + + /** + * Returns a string where a prefix of the current user's home directory is + * abbreviated by '~', or returns the receiver (or an immutable copy) if + * it was not found to have the home directory as a prefix. + */ + - (NSString*) stringByAbbreviatingWithTildeInPath; + + /** + * Returns a new string with the path component given in aString + * appended to the receiver.
+ * This removes trailing path separators from the receiver and the root + * part from aString and replaces them with a single slash as a path + * separator.
+ * Also condenses any multiple separator sequences in the result into + * single path separators. + * + * @"" with @"file" produces @"file" + * @"path" with @"file" produces @"path/file" + * @"/" with @"file" produces @"/file" + * @"/" with @"file" produces @"/file" + * @"/" with @"/file" produces @"/file" + * @"path with @"C:/file" produces @"path/file" + * + * NB. Do not use this method to modify strings other than filesystem + * paths as the behavior in such cases is undefined ... for instance + * the string may have repeated slashes or slash-dot-slash sequences + * removed. + */ + - (NSString*) stringByAppendingPathComponent: (NSString*)aString; + + /** + * Returns a new string with the path extension given in aString + * appended to the receiver after an extensionSeparator ('.').
+ * If the receiver has trailing path separator characters, they are + * stripped before the extension separator is added.
+ * If the receiver contains no components after the root, the extension + * cannot be appended (an extension can only be appended to a file name), + * so a copy of the unmodified receiver is returned.
+ * An empty string may be used as an extension ... in which case the extension + * separator is appended.
+ * This behavior mirrors that of the -stringByDeletingPathExtension method. + * + * @"Mail" with @"app" produces @"Mail.app" + * @"Mail.app" with @"old" produces @"Mail.app.old" + * @"file" with @"" produces @"file." + * @"/" with @"app" produces @"/" (no file name to append to) + * @"" with @"app" produces @"" (no file name to append to) + * + * NB. Do not use this method to modify strings other than filesystem + * paths as the behavior in such cases is undefined ... for instance + * the string may have repeated slashes or slash-dot-slash sequences + * removed. + */ + - (NSString*) stringByAppendingPathExtension: (NSString*)aString; + + /** + * Returns a new string with the last path component (including any final + * path separators) removed from the receiver.
+ * A string without a path component other than the root is returned + * without alteration.
+ * See -lastPathComponent for a definition of a path component. + * + * @"hello/there" produces @"hello" (a relative path) + * @"hello" produces @"" (a relative path) + * @"/hello" produces @"/" (an absolute unix path) + * @"/" produces @"/" (an absolute unix path) + * @"C:file" produces @"C:" (a relative windows path) + * @"C:" produces @"C:" (a relative windows path) + * @"C:/file" produces @"C:/" (an absolute windows path) + * @"C:/" produces @"C:/" (an absolute windows path) + * @"//host/share/file" produces @"//host/share/" (a UNC path) + * @"//host/share/" produces @"//host/share/" (a UNC path) + * @"//path/file" produces @"//path" (an absolute Unix path) + * + * NB. Do not use this method to modify strings other than filesystem + * paths as the behavior in such cases is undefined ... for instance + * the string may have repeated slashes or slash-dot-slash sequences + * removed. + */ + - (NSString*) stringByDeletingLastPathComponent; + + /** + * Returns a new string with the path extension removed from the receiver.
+ * Strips any trailing path separators before checking for the extension + * separator.
+ * NB. This method does not consider a string which contains nothing + * between the root part and the extension separator ('.') to be a path + * extension. This mirrors the behavior of the -stringByAppendingPathExtension: + * method. + * + * @"file.ext" produces @"file" + * @"/file.ext" produces @"/file" + * @"/file.ext/" produces @"/file" (trailing path separators are ignored) + * @"/file..ext" produces @"/file." + * @"/file." produces @"/file" + * @"/.ext" produces @"/.ext" (there is no file to strip from) + * @".ext" produces @".ext" (there is no file to strip from) + * + * NB. Do not use this method to modify strings other than filesystem + * paths as the behavior in such cases is undefined ... for instance + * the string may have repeated slashes or slash-dot-slash sequences + * removed. + */ + - (NSString*) stringByDeletingPathExtension; + + /** + * Returns a string created by expanding the initial tilde ('~') and any + * following username to be the home directory of the current user or the + * named user.
+ * Returns the receiver or an immutable copy if it was not possible to + * expand it. + */ + - (NSString*) stringByExpandingTildeInPath; + + /** + * First calls -stringByExpandingTildeInPath if necessary.
+ * Replaces path string by one in which path components representing symbolic + * links have been replaced by their referents.
+ * Removes a leading '/private' if the result is valid.
+ * If links cannot be resolved, returns an unmodified copy of the receiver. + */ + - (NSString*) stringByResolvingSymlinksInPath; + + /** + * Returns a standardised form of the receiver, with unnecessary parts + * removed, tilde characters expanded, and symbolic links resolved + * where possible.
+ * NB. Refers to the local filesystem to resolve symbolic links in + * absolute paths, and to expand tildes ... so this can't be used for + * general path manipulation.
+ * If the string is an invalid path, the unmodified receiver is returned.
+ *

+ * Uses -stringByExpandingTildeInPath to expand tilde expressions.
+ * Simplifies '//' and '/./' sequences and removes trailing '/' or '.'.
+ *

+ *

+ * For absolute paths, uses -stringByResolvingSymlinksInPath to resolve + * any links, then gets rid of '/../' sequences and removes any '/private' + * prefix. + *

+ */ + - (NSString*) stringByStandardizingPath; + + + // for methods working with decomposed strings + - (int) _baseLength; + + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + /** + * Concatenates the path components in the array and returns the result.
+ * This method does not remove empty path components, but does recognize an + * empty initial component as a special case meaning that the string + * returned will begin with a slash. + */ + + (NSString*) pathWithComponents: (NSArray*)components; + + /** + * Returns YES if the receiver represents an absolute path ...
+ * Returns NO otherwise.
+ * An absolute path in unix mode is one which begins + * with a slash or tilde.
+ * In windows mode a drive specification (eg C:) followed by a slash or + * backslash, is an absolute path, as is any path beginning with a tilde.
+ * In any mode a UNC path (//host/share...) is always absolute.
+ * In the default gnustep path handling mode, + * the rules are the same as for windows, + * except that a path whose root is a slash denotes an absolute path + * when running on unix and a relative path when running under windows. + */ + - (BOOL) isAbsolutePath; + + /** + * Returns the path components of the receiver separated into an array.
+ * If the receiver begins with a root sequence such as the path separator + * character (or a drive specification in windows) then that is used as the + * first element in the array.
+ * Empty components are removed.
+ * If a trailing path separator (which was not part of the root) was present, + * it is added as the last element in the array. + */ + - (NSArray*) pathComponents; + + /** + * Returns an array of strings made by appending the values in paths + * to the receiver. + */ + - (NSArray*) stringsByAppendingPaths: (NSArray*)paths; + + + (NSString*) localizedStringWithFormat: (NSString*)format, ... + NS_FORMAT_FUNCTION(1,2); + + + (id) stringWithString: (NSString*)aString; + + (id) stringWithContentsOfURL: (NSURL*)url; + + (id) stringWithUTF8String: (const char*)bytes; + - (id) initWithFormat: (NSString*)format + locale: (NSDictionary*)locale, ... NS_FORMAT_FUNCTION(1,3); + - (id) initWithFormat: (NSString*)format + locale: (NSDictionary*)locale + arguments: (va_list)argList NS_FORMAT_FUNCTION(1,0); + - (id) initWithUTF8String: (const char *)bytes; + - (id) initWithContentsOfURL: (NSURL*)url; + - (NSString*) substringWithRange: (NSRange)aRange; + - (NSComparisonResult) caseInsensitiveCompare: (NSString*)aString; + - (NSComparisonResult) compare: (NSString*)string + options: (NSUInteger)mask + range: (NSRange)compareRange + locale: (id)locale; + - (NSComparisonResult) localizedCompare: (NSString *)string; + - (NSComparisonResult) localizedCaseInsensitiveCompare: (NSString *)string; + - (BOOL) writeToFile: (NSString*)filename + atomically: (BOOL)useAuxiliaryFile; + - (BOOL) writeToURL: (NSURL*)url atomically: (BOOL)atomically; + - (double) doubleValue; + + (NSStringEncoding*) availableStringEncodings; + + (NSString*) localizedNameOfStringEncoding: (NSStringEncoding)encoding; + - (void) getLineStart: (NSUInteger *)startIndex + end: (NSUInteger *)lineEndIndex + contentsEnd: (NSUInteger *)contentsEndIndex + forRange: (NSRange)aRange; + - (NSRange) lineRangeForRange: (NSRange)aRange; + - (const char*) lossyCString; + - (NSString*) stringByAddingPercentEscapesUsingEncoding: (NSStringEncoding)e; + - (NSString*) stringByPaddingToLength: (NSUInteger)newLength + withString: (NSString*)padString + startingAtIndex: (NSUInteger)padIndex; + - (NSString*) stringByReplacingPercentEscapesUsingEncoding: (NSStringEncoding)e; + - (NSString*) stringByTrimmingCharactersInSet: (NSCharacterSet*)aSet; + - (const char *)UTF8String; + #endif + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_9,GS_API_LATEST) + - (NSString *) stringByAddingPercentEncodingWithAllowedCharacters: (NSCharacterSet *)aSet; + - (NSString *) stringByRemovingPercentEncoding; + #endif + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_3,GS_API_LATEST) + /** Not implemented */ + - (void) getParagraphStart: (NSUInteger *)startIndex + end: (NSUInteger *)parEndIndex + contentsEnd: (NSUInteger *)contentsEndIndex + forRange: (NSRange)range; + /** Not implemented */ + - (NSRange) paragraphRangeForRange: (NSRange)range; + #endif + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5,GS_API_LATEST) + /** + * Returns YES when scanning the receiver's text from left to right + * finds an initial digit in the range 1-9 or a letter in the set + * ('Y', 'y', 'T', 't').
+ * Any trailing characters are ignored.
+ * Any leading whitespace or zeros or signs are also ignored.
+ * Returns NO if the above conditions are not met. + */ + - (BOOL) boolValue; + - (NSArray *) componentsSeparatedByCharactersInSet: (NSCharacterSet *)separator; + - (NSInteger) integerValue; + - (long long) longLongValue; + /** Not implemented */ + - (NSRange) rangeOfComposedCharacterSequencesForRange: (NSRange)range; + /** Not implemented */ + - (NSRange) rangeOfString: (NSString *)aString + options: (NSStringCompareOptions)mask + range: (NSRange)searchRange + locale: (NSLocale *)locale; + + #endif + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_10,GS_API_LATEST) + + /** + * Returns YES if the receiver contains string, otherwise, NO. + */ + - (BOOL) containsString: (NSString *)string; + + #endif + + #if OS_API_VERSION(GS_API_NONE, GS_API_NONE) + + (Class) constantStringClass; + #endif /* GS_API_NONE */ + + @end + + @interface NSMutableString : NSString + + // Creating Temporary Strings + + (id) string; + + (id) stringWithCharacters: (const unichar*)characters + length: (NSUInteger)length; + + (id) stringWithCString: (const char*)byteString + length: (NSUInteger)length; + + (id) stringWithCString: (const char*)byteString; + + (id) stringWithFormat: (NSString*)format, ... NS_FORMAT_FUNCTION(1,2); + + (id) stringWithContentsOfFile: (NSString*)path; + + (NSMutableString*) stringWithCapacity: (NSUInteger)capacity; + + // Initializing Newly Allocated Strings + - (id) initWithCapacity: (NSUInteger)capacity; + + // Modify A String + - (void) appendFormat: (NSString*)format, ... NS_FORMAT_FUNCTION(1,2); + - (void) appendString: (NSString*)aString; + - (void) deleteCharactersInRange: (NSRange)range; + - (void) insertString: (NSString*)aString atIndex: (NSUInteger)loc; + - (void) replaceCharactersInRange: (NSRange)range + withString: (NSString*)aString; + - (NSUInteger) replaceOccurrencesOfString: (NSString*)replace + withString: (NSString*)by + options: (NSUInteger)opts + range: (NSRange)searchRange; + - (void) setString: (NSString*)aString; + + @end + + #ifdef __OBJC_GNUSTEP_RUNTIME_ABI__ + # if __OBJC_GNUSTEP_RUNTIME_ABI__ >= 20 + # define GNUSTEP_NEW_STRING_ABI + # endif + #endif + + /** + *

The NXConstantString class is used to hold constant 8-bit character + * string objects produced by the compiler where it sees @"..." in the + * source. The compiler generates the instances of this class - which + * has three instance variables -

+ * + * a pointer to the class (this is the sole ivar of NSObject) + * a pointer to the 8-bit data + * the length of the string + * + *

In older versions of the compiler, the isa variable is always set to + * the NXConstantString class. In newer versions a compiler option was + * added for GNUstep, to permit the isa variable to be set to another + * class, and GNUstep uses this to avoid conflicts with the default + * implementation of NXConstantString in the ObjC runtime library (the + * preprocessor is used to change all occurrences of NXConstantString + * in the source code to NSConstantString).

+ *

Since GNUstep will generally use the GNUstep extension to the + * compiler, you should never refer to the constant string class by + * name, but should use the [NSString+constantStringClass] method to + * get the actual class being used for constant strings.

+ * What follows is a dummy declaration of the class to keep the compiler + * happy. + */ + @interface NXConstantString : NSString + { + @public + #ifdef GNUSTEP_NEW_STRING_ABI + /** + * Flags. The low 16 bits are reserved for the compiler, the top 16 for use + * by the Foundation Framework. Currently only the low 2 bits are used, to + * indicate the encoding of the string, with the following values: + * + * 0. ASCII (UTF-8 using only 7-bit characters) + * 1. UTF-8 + * 2. UTF-16 + * 3. UTF-32 + * + */ + uint32_t flags; + /** + * The number of characters (UTF-16 code units) in the string. + */ + uint32_t nxcslen; + /** + * The number of bytes in the string. For fixed-length encodings, this is a + * fixed multiple of nxcslen, but for UTF-8 it can be different. + */ + uint32_t size; + /** + * Hash value. + */ + uint32_t hash; + /** + * Pointer to the byte data of the string. Note that `char*` is the correct + * type only if the low two bits of the flags indicate that this is an ASCII + * or UTF-8 string, otherwise it is a pointer to 16- or 32-bit characters in + * native byte order. + */ + const char * const nxcsptr; + #else + const char * const nxcsptr; + const unsigned int nxcslen; + #endif + } + @end + + #ifdef NeXT_RUNTIME + /** For internal use with NeXT runtime; + needed, until Apple Radar 2870817 is fixed. */ + extern struct objc_class _NSConstantStringClassReference; + #endif + + #if defined(__cplusplus) + } + #endif + + #if !NO_GNUSTEP && !defined(GNUSTEP_BASE_INTERNAL) + #import "../GNUstepBase/NSString+GNUstepBase.h" + #import "../GNUstepBase/NSMutableString+GNUstepBase.h" + #endif + + #endif /* __NSString_h_GNUSTEP_BASE_INCLUDE */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,370 ---- + /* Interface for NSValue for GNUStep + Copyright (C) 1995, 1996 Free Software Foundation, Inc. + + Written by: Adam Fedor + Created: 1995 + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + */ + + #ifndef __NSValue_h_GNUSTEP_BASE_INCLUDE + #define __NSValue_h_GNUSTEP_BASE_INCLUDE + #import "../GNUstepBase/GSVersionMacros.h" + + #import "NSObject.h" + #import "NSGeometry.h" + #import "NSRange.h" + + #if defined(__cplusplus) + extern "C" { + #endif + + @class NSString; + + /** + * The NSValue class can wrap a single primitive value as an + * object so it can be used in the containers and other places where an object + * reference is needed. Once initialized, an NSValue is + * immutable, and there is no NSMutableValue class. You + * initialize it by giving it a pointer to the primitive value, and you should + * be careful this does not get freed until after the NSValue is + * no longer used. + */ + @interface NSValue : NSObject + + // Allocating and Initializing + + /** + * Create new instance with specified value (a pointer) of given type, which + * is a string code obtainable through the compile-time operator + * @encode(...). For example: + + NSValue *theValue = [NSValue value: &n withObjCType: @encode(int)]; + + */ + + (NSValue*) value: (const void*)value withObjCType: (const char*)type; + + /** + * Create new instance holding anObject. This is useful if you want to add + * anObject to a collection such as [NSArray] but don't want it to be retained + * (a weak reference). + */ + + (NSValue*) valueWithNonretainedObject: (id)anObject; + + /** + * Convenience method to create instance holding an NSPoint + * structure. + */ + + (NSValue*) valueWithPoint: (NSPoint)point; + + /** + * Convenience method to create instance holding a pointer. Same as + * using @encode(void *) in +value:withObjCType: . + */ + + (NSValue*) valueWithPointer: (const void*)pointer; + + /** + * Convenience method to create instance holding an NSRange + * structure. + */ + + (NSValue*) valueWithRange: (NSRange)range; + + /** + * Convenience method to create instance holding an NSRect + * structure. + */ + + (NSValue*) valueWithRect: (NSRect)rect; + + /** + * Convenience method to create instance holding an NSSize + * structure. + */ + + (NSValue*) valueWithSize: (NSSize)size; + + #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) + /** + * Synonym for value:withObjCType: . + */ + + (NSValue*) valueWithBytes: (const void*)value objCType: (const char*)type; + + /** + * Initialize with value of type, parallel to value:withObjCType: . + */ + - (id) initWithBytes: (const void*)data objCType: (const char*)type; + + /** + * Compares this instance to another NSValue. For equality, + * both contents and declared type of the two values must match. + */ + - (BOOL) isEqualToValue: (NSValue*)other; + #endif /* GS_API_MACOSX */ + + // Accessing Data + + /** + * Copies bytes from the pointer receiver was initialized with into buffer + * pointed to by value. Number of bytes copied is determined by the type. If + * type was a void * pointer or object id, the memory address itself is + * copied. + */ + - (void) getValue: (void*)value; + + /** + * Returns the string @encode(...) compatible type the receiver + * was initialized with. + */ + - (const char*) objCType; + + /** + * If receiver was initialized with an object ID, return it, else raises + * NSInternalInconsistencyException. + */ + - (id) nonretainedObjectValue; + + /** + * If receiver was initialized with a void * pointer, return it, else raises + * NSInternalInconsistencyException. + */ + - (void*) pointerValue; + + /** + * If receiver was initialized with an NSRange value, return it, + * else raises NSInternalInconsistencyException. + */ + - (NSRange) rangeValue; + + /** + * If receiver was initialized with an NSRect value, return it, + * else raises NSInternalInconsistencyException. + */ + - (NSRect) rectValue; + + /** + * If receiver was initialized with an NSSize value, return it, + * else raises NSInternalInconsistencyException. + */ + - (NSSize) sizeValue; + + /** + * If receiver was initialized with an NSPoint value, return it, + * else raises NSInternalInconsistencyException. + */ + - (NSPoint) pointValue; + + @end + + /** + * Subclass of [NSValue] offering convenience methods for initializing from + * and accessing as any C primitive numeric type. On access, the value will + * be type-converted if necessary, using standard C conversion rules. + */ + @interface NSNumber : NSValue + + // Allocating and Initializing + + /** New instance from boolean value. */ + + (NSNumber*) numberWithBool: (BOOL)value; + /** New instance from signed char value. */ + + (NSNumber*) numberWithChar: (signed char)value; + /** New instance from double value. */ + + (NSNumber*) numberWithDouble: (double)value; + /** New instance from float value. */ + + (NSNumber*) numberWithFloat: (float)value; + /** New instance from (signed) int value. */ + + (NSNumber*) numberWithInt: (signed int)value; + /** New instance from (signed) long value. */ + + (NSNumber*) numberWithLong: (signed long)value; + /** New instance from (signed) long long value. */ + + (NSNumber*) numberWithLongLong: (signed long long)value; + /** New instance from (signed) short value. */ + + (NSNumber*) numberWithShort: (signed short)value; + /** New instance from unsigned char value. */ + + (NSNumber*) numberWithUnsignedChar: (unsigned char)value; + /** New instance from unsigned int value. */ + + (NSNumber*) numberWithUnsignedInt: (unsigned int)value; + /** New instance from unsigned long value. */ + + (NSNumber*) numberWithUnsignedLong: (unsigned long)value; + /** New instance from unsigned long long value. */ + + (NSNumber*) numberWithUnsignedLongLong: (unsigned long long)value; + /** New instance from unsigned short value. */ + + (NSNumber*) numberWithUnsignedShort: (unsigned short)value; + + /** Initialize from boolean value. */ + - (id) initWithBool: (BOOL)value; + /** Initialize from signed char value. */ + - (id) initWithChar: (signed char)value; + /** Initialize from double value. */ + - (id) initWithDouble: (double)value; + /** Initialize from float value. */ + - (id) initWithFloat: (float)value; + /** Initialize from (signed) int value. */ + - (id) initWithInt: (signed int)value; + /** Initialize from (signed) long value. */ + - (id) initWithLong: (signed long)value; + /** Initialize from (signed) long long value. */ + - (id) initWithLongLong: (signed long long)value; + /** Initialize from (signed) short value. */ + - (id) initWithShort: (signed short)value; + /** Initialize from unsigned char value. */ + - (id) initWithUnsignedChar: (unsigned char)value; + /** Initialize from unsigned int value. */ + - (id) initWithUnsignedInt: (unsigned int)value; + /** Initialize from unsigned long value. */ + - (id) initWithUnsignedLong: (unsigned long)value; + /** Initialize from unsigned long long value. */ + - (id) initWithUnsignedLongLong: (unsigned long long)value; + /** Initialize from unsigned short value. */ + - (id) initWithUnsignedShort: (unsigned short)value; + + // Accessing Data + + /** + * Return value as a BOOL; this will in fact be a char value converted + * if necessary from type initialized with; if you wish to consider anything + * nonzero TRUE do not compare directly to YES, but use '!= NO'. + */ + - (BOOL) boolValue; + /** Returns value as a signed char, converting if necessary. */ + - (signed char) charValue; + /** Returns value as a double, converting if necessary. */ + - (double) doubleValue; + /** Returns value as a float, converting if necessary. */ + - (float) floatValue; + /** Returns value as a (signed) int, converting if necessary. */ + - (signed int) intValue; + /** Returns value as a (signed) long, converting if necessary. */ + - (signed long) longValue; + /** Returns value as a (signed) long long, converting if necessary. */ + - (signed long long) longLongValue; + /** Returns value as a (signed) short, converting if necessary. */ + - (signed short) shortValue; + /** Returns value as an unsigned char, converting if necessary. */ + - (unsigned char) unsignedCharValue; + /** Returns value as an unsigned int, converting if necessary. */ + - (unsigned int) unsignedIntValue; + /** Returns value as an unsigned long, converting if necessary. */ + - (unsigned long) unsignedLongValue; + /** Returns value as an unsigned long long, converting if necessary. */ + - (unsigned long long) unsignedLongLongValue; + /** Returns value as an unsigned short, converting if necessary. */ + - (unsigned short) unsignedShortValue; + + /** Returns -description . */ + - (NSString*) stringValue; + + /** + * Returns the string representation of this number using a non-localised + * conversion (decimal point is '.' irrespective of the locale). + */ + - (NSString*) description; + + /** + *

+ * Produces a string representation of the number. For a boolean + * this will be either 'true' or 'false'. For other numbers the + * format is produced using the initWithFormat:locale:... method + * of NSString, and the format depends on the type of number as + * follows - + *

+ * + * char + * %i + * short + * %hi + * int + * %i + * long + * %li + * long long + * %lli + * unsigned char + * %u + * unsigned short + * %hu + * unsigned int + * %u + * unsigned long + * %lu + * unsigned long long + * %llu + * float + * %0.7g + * double + * %0.16g + * + */ + - (NSString*) descriptionWithLocale: (id)locale; + + /** + * Compares receiver with otherNumber, using C type conversion if necessary, + * and returns NSOrderedAscending, + * NSOrderedDescending, or NSOrderedSame depending + * on whether it is less than, greater than, or equal to otherNumber. + */ + - (NSComparisonResult) compare: (NSNumber*)otherNumber; + + /** + * Returns whether receiver and otherNumber represent the same numerical value. + */ + - (BOOL) isEqualToNumber: (NSNumber*)otherNumber; + + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) + /** Return a number intialised with NSInteger. + */ + + (NSNumber*) numberWithInteger: (NSInteger)value; + /** Return a number intialised with NSUInteger. + */ + + (NSNumber*) numberWithUnsignedInteger: (NSUInteger)value; + /** Initialise the receiver with NSInteger content. + */ + - (id) initWithInteger: (NSInteger)value; + /** Initialise the receiver with NSUInteger content. + */ + - (id) initWithUnsignedInteger: (NSUInteger)value; + /** Return the contents of the receiver as NSInteger. + */ + - (NSInteger) integerValue; + /** Return the contents of the receiver as NSUInteger. + */ + - (NSUInteger) unsignedIntegerValue; + #endif + + @end + + #if OS_API_VERSION(GS_API_NONE, GS_API_NONE) + + /** Note: Defines a method that is not in the OpenStep spec, but makes + subclassing easier. */ + @interface NSValue (Subclassing) + + /** Used by value: withObjCType: to determine the concrete subclass to alloc. */ + + (Class) valueClassWithObjCType: (const char*)type; + + @end + #endif + + #if defined(__cplusplus) + } + #endif + + #if !NO_GNUSTEP && !defined(GNUSTEP_BASE_INTERNAL) + #import "../GNUstepBase/NSNumber+GNUstepBase.h" + #endif + + #endif /* __NSValue_h_GNUSTEP_BASE_INCLUDE */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,335 ---- + /** Zone memory management. -*- Mode: ObjC -*- + Copyright (C) 1997,1998,1999 Free Software Foundation, Inc. + + Written by: Yoo C. Chung + Date: January 1997 + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + + AutogsdocSource: NSZone.m + AutogsdocSource: NSPage.m + + */ + + #ifndef __NSZone_h_GNUSTEP_BASE_INCLUDE + #define __NSZone_h_GNUSTEP_BASE_INCLUDE + #import "../GNUstepBase/GSVersionMacros.h" + + /** + * Primary structure representing an NSZone. Technically it + * consists of a set of function pointers for zone upkeep functions plus some + * other things- + + { + // Functions for zone. + void *(*malloc)(struct _NSZone *zone, size_t size); + void *(*realloc)(struct _NSZone *zone, void *ptr, size_t size); + void (*free)(struct _NSZone *zone, void *ptr); + void (*recycle)(struct _NSZone *zone); + BOOL (*check)(struct _NSZone *zone); + BOOL (*lookup)(struct _NSZone *zone, void *ptr); + + // Zone statistics (not always maintained). + struct NSZoneStats (*stats)(struct _NSZone *zone); + + size_t gran; // Zone granularity (passed in on initialization) + NSString *name; // Name of zone (default is 'nil') + NSZone *next; // Pointer used for internal management of multiple zones. + } + */ + typedef struct _NSZone NSZone; + + #import "NSObjCRuntime.h" + + @class NSString; + + #if defined(__cplusplus) + extern "C" { + #endif + + struct _NSZone + { + /* Functions for zone. */ + void *(*malloc)(struct _NSZone *zone, size_t size); + void *(*realloc)(struct _NSZone *zone, void *ptr, size_t size); + void (*free)(struct _NSZone *zone, void *ptr); + void (*recycle)(struct _NSZone *zone); + BOOL (*check)(struct _NSZone *zone); + BOOL (*lookup)(struct _NSZone *zone, void *ptr); + struct NSZoneStats (*stats)(struct _NSZone *zone); + + size_t gran; // Zone granularity + __unsafe_unretained NSString *name; // Name of zone (default is 'nil') + NSZone *next; + }; + + /** + * Creates a new zone of start bytes, which will grow and shrink by + * granularity bytes. If canFree is 0, memory in zone is allocated but + * never freed, meaning allocation will be very fast. The whole zone can + * still be freed with NSRecycleZone(), and you should still call NSZoneFree + * on memory in the zone that is no longer needed, since a count of allocated + * pointers is kept and must reach zero before freeing the zone.
+ * If Garbage Collection is enabled, this function does nothing other than + * log a warning and return the same value as the NSDefaultMallocZone() + * function. + */ + GS_EXPORT NSZone* + NSCreateZone (NSUInteger start, NSUInteger gran, BOOL canFree); + + /** Returns the default zone for memory allocation. Memory created in this + * zone is the same as memory allocates using the system malloc() function. + */ + GS_EXPORT NSZone* + NSDefaultMallocZone (void); + + /** + * Searches and finds the zone ptr was allocated from. The speed depends + * upon the number of zones and their size.
+ * If Garbage Collection is enabled, this function always returns the + * same as the NSDefaultMallocZone() function. + */ + GS_EXPORT NSZone* + NSZoneFromPointer (void *ptr); + + /** + * Allocates and returns memory for elems items of size bytes, in the + * given zone. Returns NULL if allocation of size 0 requested. Raises + * NSMallocException if not enough free memory in zone to + * allocate and no more can be obtained from system, unless using the + * default zone, in which case NULL is returned.
+ * If Garbage Collection is enabled, this function always allocates + * non-scanned, non-collectable memory in the NSDefaultMallocZone() and + * the zone argument is ignored. + */ + GS_EXPORT void* + NSZoneMalloc (NSZone *zone, NSUInteger size); + + /** + * Allocates and returns cleared memory for elems items of size bytes, in the + * given zone. Returns NULL if allocation of size 0 requested. Raises + * NSMallocException if not enough free memory in zone to + * allocate and no more can be obtained from system, unless using the + * default zone, in which case NULL is returned.
+ * If Garbage Collection is enabled, this function always allocates + * non-scanned, non-collectable memory in the NSDefaultMallocZone() and + * the zone argument is ignored. + */ + GS_EXPORT void* + NSZoneCalloc (NSZone *zone, NSUInteger elems, NSUInteger bytes); + + /** + * Reallocates the chunk of memory in zone pointed to by ptr to a new one of + * size bytes. Existing contents in ptr are copied over. Raises an + * NSMallocException if insufficient memory is available in the + * zone and no more memory can be obtained from the system, unless using the + * default zone, in which case NULL is returned.
+ * If Garbage Collection is enabled, the zone argument is ignored. + */ + GS_EXPORT void* + NSZoneRealloc (NSZone *zone, void *ptr, NSUInteger size); + + /** + * Return memory for an entire zone to system. In fact, this will not be done + * unless all memory in the zone has been explicitly freed (by calls to + * NSZoneFree()). For "non-freeable" zones, the number of NSZoneFree() calls + * must simply equal the number of allocation calls. The default zone, on the + * other hand, cannot be recycled.
+ * If Garbage Collection is enabled, this function has not effect. + */ + GS_EXPORT void + NSRecycleZone (NSZone *zone); + + /** + * Frees memory pointed to by ptr (which should have been allocated by a + * previous call to NSZoneMalloc(), NSZoneCalloc(), or NSZoneRealloc()) and + * returns it to zone. Note, if this is a nonfreeable zone, the memory is + * not actually freed, but the count of number of free()s is updated.
+ * If Garbage Collection is enabled, the zone argument is ignored and this + * function causes ptr to be deallocated immediately. + */ + GS_EXPORT void + NSZoneFree (NSZone *zone, void *ptr); + + /** + * Sets name of the given zone (useful for debugging and logging). + */ + GS_EXPORT void + NSSetZoneName (NSZone *zone, NSString *name); + + /** + * Returns the name of the given zone (useful for debugging and logging). + */ + GS_EXPORT NSString* + NSZoneName (NSZone *zone); + + #if OS_API_VERSION(GS_API_NONE, GS_API_NONE) + + /** Deprecated ...
+ * Checks integrity of a zone. Not defined by OpenStep or OS X. + */ + BOOL + NSZoneCheck (NSZone *zone); + + /** + * NSZoneStats is the structure returned by the NSZoneStats() + * function that summarizes the current usage of a zone. It is similar to + * the structure mstats in the GNU C library. It has 5 fields of + * type size_t- + * + * bytes_total + * + * This is the total size of memory managed by the zone, in bytes. + * chunks_used + * This is the number of memory chunks in use in the zone. + * bytes_used + * This is the number of bytes in use. + * chunks_free + * This is the number of memory chunks that are not in use. + * bytes_free + * + * This is the number of bytes managed by the zone that are not in use. + * + * + */ + struct NSZoneStats + { + size_t bytes_total; + size_t chunks_used; + size_t bytes_used; + size_t chunks_free; + size_t bytes_free; + }; + + /** Deprecated ...
+ * Obtain statistics about the zone. Implementation emphasis is on + * correctness, not speed. Not defined by OpenStep or OS X. + */ + struct NSZoneStats + NSZoneStats (NSZone *zone); + + /** + * Try to get more memory - the normal process has failed. + * If we can't do anything, just return a null pointer. + * Try to do some logging if possible. + */ + void* + GSOutOfMemory(NSUInteger size, BOOL retry); + + /** + * Called during +initialize to tell the class that instances created + * in future should have the specified instance variable as a weak + * pointer for garbage collection.
+ * NB. making a pointer weak does not mean that it is automatically + * zeroed when the object it points to is garbage collected. To get that + * behavior you must asign values to the pointer using the + * GSAssignZeroingWeakPointer() function.
+ * This function has no effect if the system is + * not built for garbage collection. + */ + GS_EXPORT void + GSMakeWeakPointer(Class theClass, const char *iVarName); + + /** + * This function must be used to assign a value to a zeroing weak pointer.
+ * A zeroing weak pointer is one where, when the garbage collector collects + * the object pointed to, it also clears the weak pointer.
+ * Assigning zero (nil) will always succeed and has the effect of telling the + * garbage collector that it no longer needs to track the previously assigned + * object. Apart from that case, a source needs to be garbage collectable for + * this function to work, and using a non-garbage collectable value will + * cause the function to return NO.
+ * If the destination object (the weak pointer watching the source object) + * belongs to a chunk of memory which may be collected before the source + * object is collected, it is important that it is finalised and the + * finalisation code assigns zero to the pointer.
+ * If garbage collection is not in use, this function performs a simple + * assignment returning YES, unless destination is null in which case it + * returns NO. + */ + GS_EXPORT BOOL + GSAssignZeroingWeakPointer(void **destination, void *source); + + #endif + + GS_EXPORT NSUInteger + NSPageSize (void) __attribute__ ((const)); + + GS_EXPORT NSUInteger + NSLogPageSize (void) __attribute__ ((const)); + + GS_EXPORT NSUInteger + NSRoundDownToMultipleOfPageSize (NSUInteger bytes) __attribute__ ((const)); + + GS_EXPORT NSUInteger + NSRoundUpToMultipleOfPageSize (NSUInteger bytes) __attribute__ ((const)); + + GS_EXPORT NSUInteger + NSRealMemoryAvailable (void); + + GS_EXPORT void* + NSAllocateMemoryPages (NSUInteger bytes); + + GS_EXPORT void + NSDeallocateMemoryPages (void *ptr, NSUInteger bytes); + + GS_EXPORT void + NSCopyMemoryPages (const void *src, void *dest, NSUInteger bytes); + + #if OS_API_VERSION(MAC_OS_X_VERSION_10_4, OS_API_LATEST) + + enum { + NSScannedOption = (1<<0), + NSCollectorDisabledOption = (1<<1) + }; + + /** Allocate memory. If garbage collection is not enabled this uses the + * default malloc zone and the options are ignored.
+ * If garbage collection is enabled, the allocate memory is normally not + * scanned for pointers but is itsself garbage collectable. The options + * argument is a bitmask in which NSScannedOption sets the memory to be + * scanned for pointers by the garbage collector, and + * NSCollectorDisabledOption causes the memory to be excempt from being + * garbage collected itsself.
+ * In any case the memory returned is zero'ed. + */ + GS_EXPORT void * + NSAllocateCollectable(NSUInteger size, NSUInteger options); + + /** Reallocate memory to be of a different size and/or to have different + * options settings. The behavior of options is as for + * the NSAllocateCollectable() function. + */ + GS_EXPORT void * + NSReallocateCollectable(void *ptr, NSUInteger size, NSUInteger options); + + #endif + + static inline id NSMakeCollectable(const void *cf) { + #if __has_feature(objc_arc) + return nil; + #else + return (id)cf; // Unimplemented; garbage collection is deprecated. + #endif + } + + #if defined(__cplusplus) + } + #endif + + #endif /* not __NSZone_h_GNUSTEP_BASE_INCLUDE */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,418 ---- + /* GNUstep.h - macros to make easier to port gnustep apps to macos-x + Copyright (C) 2001 Free Software Foundation, Inc. + + Written by: Nicola Pero + Date: March, October 2001 + + This file is part of GNUstep. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + */ + + #ifndef __GNUSTEP_GNUSTEP_H_INCLUDED_ + #define __GNUSTEP_GNUSTEP_H_INCLUDED_ + + /* The contents of this file are designed to be usable with either + * GNUstep-base or MacOS-X Foundation. + */ + + #ifndef __has_feature + # define __has_feature(x) 0 + #endif + + /* + * __has_extension has slightly different semantics from __has_feature. + * It evaluates to true if the feature is supported by by clang for the + * current compilation unit (language and -f switches), regardless of + * whether it is part of the language standard or just a (non-standard) + * extension. + */ + #ifndef __has_extension + # define __has_extension(x) __has_feature(x) + #endif + + /* + * __has_attribute is the equivalent to __has_feature and __has_extension + * for GNU-style attributes. + */ + #ifndef __has_attribute + # define __has_attribute(x) 0 + #endif + + #if __has_feature(objc_arc) + + #ifndef RETAIN + #define RETAIN(object) (object) + #endif + #ifndef RELEASE + #define RELEASE(object) + #endif + #ifndef AUTORELEASE + #define AUTORELEASE(object) (object) + #endif + + #ifndef TEST_RETAIN + #define TEST_RETAIN(object) (object) + #endif + #ifndef TEST_RELEASE + #define TEST_RELEASE(object) + #endif + #ifndef TEST_AUTORELEASE + #define TEST_AUTORELEASE(object) (object) + #endif + + #ifndef ASSIGN + #define ASSIGN(object,value) object = (value) + #endif + #ifndef ASSIGNCOPY + #define ASSIGNCOPY(object,value) object = [(value) copy] + #endif + #ifndef DESTROY + #define DESTROY(object) object = nil + #endif + + #define IF_NO_GC(X) + + #ifndef ENTER_POOL + #define ENTER_POOL @autoreleasepool{do{ + #endif + + #ifndef LEAVE_POOL + #define LEAVE_POOL }while(0);} + #endif + + #ifndef DEALLOC + #define DEALLOC + #endif + + #else + + #ifndef RETAIN + /** + * Basic retain operation ... calls [NSObject-retain]
+ * Deprecated ... pointless on modern processors. + * Simply call the -retain method. + */ + #define RETAIN(object) [(object) retain] + #endif + + #ifndef RELEASE + /** + * Basic release operation ... calls [NSObject-release]
+ * Deprecated ... pointless on modern processors. + * Simply call the -release method. + */ + #define RELEASE(object) [(object) release] + #endif + + #ifndef AUTORELEASE + /** + * Basic autorelease operation ... calls [NSObject-autorelease]
+ * Deprecated ... pointless on modern processors. + * Simply call the -autorelease method. + */ + #define AUTORELEASE(object) [(object) autorelease] + #endif + + #ifndef TEST_RETAIN + /** + * Tested retain - only invoke the + * objective-c method if the receiver is not nil.
+ * Deprecated ... pointless on modern processors. + * Simply call the -retain method. + */ + #define TEST_RETAIN(object) ({\ + id __object = (object); (__object != nil) ? [__object retain] : nil; }) + #endif + + #ifndef TEST_RELEASE + /** + * Tested release - only invoke the + * objective-c method if the receiver is not nil.
+ * Deprecated ... pointless on modern processors. + * Simply call the -release method. + */ + #define TEST_RELEASE(object) ({\ + id __object = (object); if (__object != nil) [__object release]; }) + #endif + + #ifndef TEST_AUTORELEASE + /** + * Tested autorelease - only invoke the + * objective-c method if the receiver is not nil.
+ * Deprecated ... pointless on modern processors. + * Simply call the -autorelease method. + */ + #define TEST_AUTORELEASE(object) ({\ + id __object = (object); (__object != nil) ? [__object autorelease] : nil; }) + #endif + + #ifndef ASSIGN + /** + * ASSIGN(object,value) assigns the value to the object with + * appropriate retain and release operations.
+ * Use this to avoid retain/release errors. + */ + #define ASSIGN(object,value) ({\ + id __object = object; \ + object = [(value) retain]; \ + [__object release]; \ + }) + #endif + + #ifndef ASSIGNCOPY + /** + * ASSIGNCOPY(object,value) assigns a copy of the value to the object + * with release of the original.
+ * Use this to avoid retain/release errors. + */ + #define ASSIGNCOPY(object,value) ({\ + id __object = object; \ + object = [(value) copy];\ + [__object release]; \ + }) + #endif + + #ifndef DESTROY + /** + * DESTROY() is a release operation which also sets the variable to be + * a nil pointer for tidiness - we can't accidentally use a DESTROYED + * object later. It also makes sure to set the variable to nil before + * releasing the object - to avoid side-effects of the release trying + * to reference the object being released through the variable. + */ + #define DESTROY(object) ({ \ + id __o = object; \ + object = nil; \ + [__o release]; \ + }) + #endif + + #define IF_NO_GC(X) X + + #ifndef ENTER_POOL + /** + * ENTER_POOL creates an autorelease pool and places subsequent code + * in a do/while loop (executed only once) which can be broken out of + * to reach the point when the pool is drained.
+ * The block must be terminated with a corresponding LEAVE_POOL.
+ * You should not return from such a block of code (to do so could + * leak an autorelease pool and give objects a longer lifetime than + * they ought to have. If you wish to leave the block of code early, + * you may do so using a 'break' statement. + */ + #define ENTER_POOL {NSAutoreleasePool *_lARP=[NSAutoreleasePool new];do{ + #endif + + #ifndef LEAVE_POOL + /** + * LEAVE_POOL terminates a block of code started with ENTER_POOL. + */ + #define LEAVE_POOL }while(0);[_lARP drain];} + #endif + + #ifndef DEALLOC + /** + * DEALLOC calls the superclass implementation of dealloc, unless + * ARC is in use (in which case it does nothing). + */ + #define DEALLOC [super dealloc]; + #endif + #endif + + #ifndef CREATE_AUTORELEASE_POOL + /** DEPRECATED ... use ENTER_POOL and LEAVE_POOL + */ + #define CREATE_AUTORELEASE_POOL(X) \ + NSAutoreleasePool *X = [NSAutoreleasePool new] + #endif + + #ifndef RECREATE_AUTORELEASE_POOL + /** DEPRECATED ... use ENTER_POOL and LEAVE_POOL + */ + #define RECREATE_AUTORELEASE_POOL(X) \ + DESTROY(X);\ + X = [NSAutoreleasePool new] + #endif + + + /** + *

+ * This function (macro) is a GNUstep extension. + *

+ *

+ * _(@"My string to translate") + *

+ *

+ * is basically equivalent to + *

+ *

+ * NSLocalizedString(@"My string to translate", @"") + *

+ *

+ * It is useful when you need to translate an application + * very quickly, as you just need to enclose all strings + * inside _(). But please note that when you + * use this macro, you are not taking advantage of comments + * for the translator, so consider using + * NSLocalizedString instead when you need a + * comment. + *

+ *

You may define GS_LOCALISATION_BUNDLE_ID to the bundle identifier + * of the bundle which is to provide the localisation information.
+ * This can be used when compiling a single file by specifying something like + * '-D GS_LOCALISATION_BUNDLE_ID=$(FRAMEWORK_NAME)' in your make file.
+ * If this is not defined, the localisation is provided by your application's + * main bundle exactly like the NSLocalizedString function. + *

+ *

Alternatively you may define GS_LOCALISATION_BUNDLE to be the bundle + * to be used to prvide the localisation information. + *

+ */ + # define _(X) \ + [GS_LOCALISATION_BUNDLE localizedStringForKey: (X) value: @"" table: nil] + + #if !defined(GS_LOCALISATION_BUNDLE) + # if defined(GS_LOCALISATION_BUNDLE_ID) + # define GS_LOCALISATION_BUNDLE [NSBundle bundleWithIdentifier: \ + GS_LOCALISATION_BUNDLE_ID] + # else + # define GS_LOCALISATION_BUNDLE [NSBundle mainBundle] + # endif + #endif + + + + /** + *

+ * This function (macro) is a GNUstep extension. + *

+ *

+ * __(@"My string to translate") + *

+ *

+ * is exactly the same as + *

+ *

+ * GSLocalizedStaticString(@"My string to translate", @"") + *

+ *

+ * It is useful when you need to translate an application very + * quickly. You would use it as follows for static strings: + *

+ *

+ * + * NSString *message = __(@"Hello there"); + * ... more code ... + * NSLog (_(messages)); + * + *

+ *

+ * But please note that when you use this macro, you are not + * taking advantage of comments for the translator, so + * consider using GSLocalizedStaticString + * instead when you need a comment. + *

+ */ + #define __(X) X + + /* The better way for a static string, with a comment - use as follows - + * + * static NSString *string = GSLocalizedStaticString (@"New Game", + * @"Menu Option"); + * + * NSLog (_(string)); + * + * If you need anything more complicated than this, please initialize + * the static strings manually. + */ + + /** + *

+ * This function (macro) is a GNUstep extensions, and it is used + * to localize static strings. Here is an example of a static + * string: + *

+ *

+ * + * NSString *message = @"Hi there"; + * ... some code ... + * NSLog (message); + * + *

+ *

+ * This string can not be localized using the standard + * openstep functions/macros. By using this gnustep extension, + * you can localize it as follows: + *

+ *

+ * + * NSString *message = GSLocalizedStaticString (@"Hi there", + * @"Greeting"); + * + * ... some code ... + * + * NSLog (NSLocalizedString (message, @"")); + * + *

+ *

+ * When the tools generate the + * Localizable.strings file from the source + * code, they will ignore the NSLocalizedString + * call while they will extract the string (and the comment) + * to localize from the GSLocalizedStaticString + * call. + *

+ *

+ * When the code is compiled, instead, the + * GSLocalizedStaticString call is ignored (discarded, + * it is a macro which simply expands to key), while + * the NSLocalizedString will actually look up the + * string for translation in the Localizable.strings + * file. + *

+ *

+ * Please note that there is currently no macro/function to + * localize static strings using different tables. If you + * need that functionality, you have either to prepare the + * localization tables by hand, or to rewrite your code in + * such a way as not to use static strings. + *

+ */ + #define GSLocalizedStaticString(key, comment) key + + /** + * To be used inside a method for making sure that a range does not specify + * anything outside the size of an array/string. Raises exception if range + * extends beyond [0,size]. Size must be an unsigned integer (NSUInteger). + */ + #define GS_RANGE_CHECK(RANGE, SIZE) \ + if (RANGE.location > (NSUInteger)SIZE \ + || RANGE.length > ((NSUInteger)SIZE - RANGE.location)) \ + [NSException raise: NSRangeException format: @"in %s, range { %"\ + PRIuPTR ", %" PRIuPTR " } extends beyond size (%" PRIuPTR ")", \ + GSNameFromSelector(_cmd), RANGE.location, RANGE.length, (NSUInteger)SIZE] + + /** Checks whether INDEX is strictly less than OVER (within C array space). + * INDEX and OVER must be unsigned integers (NSUInteger). + */ + #define CHECK_INDEX_RANGE_ERROR(INDEX, OVER) \ + if ((NSUInteger)INDEX >= (NSUInteger)OVER) \ + [NSException raise: NSRangeException \ + format: @"in %s, index %" PRIuPTR " is out of range", \ + GSNameFromSelector(_cmd), (NSUInteger)INDEX] + + #endif /* __GNUSTEP_GNUSTEP_H_INCLUDED_ */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,145 ---- + /** Definitions for block support for GNUStep + Copyright (C) 2011 Free Software Foundation, Inc. + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + + */ + + #ifndef __GSBlocks_h_GNUSTEP_BASE_INCLUDE + #define __GSBlocks_h_GNUSTEP_BASE_INCLUDE + + /* Define the has_feature pseudo-macro for GCC. */ + #ifndef __has_feature + #define __has_feature(x) 0 + #endif + + #ifndef GCC_VERSION + #define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__) + #endif + + #if __has_feature(blocks) + + #define BLOCK_SCOPE __block + /** + * Defines a block type. Will work whether or not the compiler natively + * supports blocks. + */ + #define DEFINE_BLOCK_TYPE(name, retTy, argTys, ...) \ + typedef retTy(^name)(argTys, ## __VA_ARGS__) + + #define DEFINE_BLOCK_TYPE_NO_ARGS(name, retTy) \ + typedef retTy(^name)() + + /** + * Calls a block. Works irrespective of whether the compiler supports blocks. + */ + #define CALL_BLOCK(block, args, ...) block(args, ## __VA_ARGS__) + + /** + * Calls a block without arguments. + */ + #define CALL_BLOCK_NO_ARGS(block) block() + #else + + /* Fall-back versions for when the compiler doesn't have native blocks support. + */ + #if (GCC_VERSION >= 3000) + + #define DEFINE_BLOCK_TYPE(name, retTy, argTys, ...) \ + typedef struct {\ + void *isa;\ + int flags;\ + int reserved;\ + retTy (*invoke)(void*, argTys, ## __VA_ARGS__);\ + } *name + + #define DEFINE_BLOCK_TYPE_NO_ARGS(name, retTy) \ + typedef struct {\ + void *isa;\ + int flags;\ + int reserved;\ + retTy (*invoke)(void*);\ + } *name + + #define CALL_BLOCK(block, args, ...) block->invoke(block, args, ## __VA_ARGS__) + + #define CALL_BLOCK_NO_ARGS(block) block->invoke(block) + #define BLOCK_SCOPE + + #else /* GCC_VERSION >= 3000 */ + + #define DEFINE_BLOCK_TYPE(name, retTy, argTys...) \ + typedef struct {\ + void *isa;\ + int flags;\ + int reserved;\ + retTy (*invoke)(void*, argTys);\ + } *name + + #define DEFINE_BLOCK_TYPE_NO_ARGS(name, retTy) \ + typedef struct {\ + void *isa;\ + int flags;\ + int reserved;\ + retTy (*invoke)(void*);\ + } *name + + + #define CALL_BLOCK(block, args...) block->invoke(block, args) + #define CALL_BLOCK_NO_ARGS(block) block->invoke(block) + #define BLOCK_SCOPE + #endif /* GCC_VERSION >= 3000 */ + + #endif /* __has_feature(blocks) */ + + #if __has_include() + # include + #else + + #ifdef __cplusplus + extern "C" { + #endif + + /** + * _Block_copy and _Block_release are weakly imported, but can be assumed + * to be available whenever a feature using blocks is accessed + * by an application. + */ + + /* weak attributed supported only with ELF, MINGW is COFF */ + #ifndef __MINGW32__ + + void *_Block_copy(const void *) __attribute__((weak)); + void _Block_release(const void *) __attribute__((weak)); + + #endif /* __MINGW32__ */ + + #ifdef __cplusplus + } + #endif + + #ifndef Block_copy + # define Block_copy(x) ((__typeof(x))_Block_copy((const void *)(x))) + #endif + #ifndef Block_release + # define Block_release(x) _Block_release((const void *)(x)) + #endif + + #endif /* __has_include() */ + #endif /* __GSBlocks_h_GNUSTEP_BASE_INCLUDE */ + diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,462 ---- + /* Machine/OS specific configuration information for GNUstep + + Please NOTE - GSConfig.h is generated by the configure script from the + file GSConfig.h.in - changes/fixes need to be made to the original file, + not to the GSConfig.h generated from it. + + Copyright (C) 1998-2010 Free Software Foundation, Inc. + + Written by: Richard frith-Macdonald + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + */ + + #ifndef included_GSConfig_h + #define included_GSConfig_h + + /* Check the compiler to see if we are building on/for ms-windows. + * Whatever the compiler uses, we want a standard setting of _WIN64 + * to indicate 64bit AND _WIN32 to indicate ms-windows. + * These are defined by gcc, clang, and microsoft compilers anyway. + */ + #if defined(__WIN32__) \ + || defined(__MS_WIN32__) \ + || defined(__MINGW32__) + # if !defined(_WIN32) + # define _WIN32 + # endif + #endif + #if defined(__WIN64__) \ + || defined(__MS_WIN64__) \ + || defined(__MINGW64__) + # if !defined(__WIN64__) + # define __WIN64__ + # endif + # if !defined(_WIN32) + # define _WIN32 + # endif + #endif + + /* Check to see if this is a MINGW build (all we currently support) + */ + #if defined(__MINGW32__) || defined(__MINGW64__) + # if !defined(__MINGW__) + # define __MINGW__ + # endif + #endif + + // Make sure we expose the constants that we use in ObjC++ mode + #ifndef __STDC_CONSTANT_MACROS + #define __STDC_CONSTANT_MACROS 1 + #endif + #ifndef __STDC_LIMIT_MACROS + #define __STDC_LIMIT_MACROS 1 + #endif + + #if !defined(NeXT_Foundation_LIBRARY) + + /* An alternate to GS_FAKE_MAIN which forces the user to call the + NSProcessInfo initialization in 'main', GS_FAKE_MAIN must also + be undefined. */ + #if 0 + #define GS_PASS_ARGUMENTS 0 + #endif + + #define GS_FAKE_MAIN 0 + #if GS_FAKE_MAIN + + /* + * NOTE - if GS_FAKE_MAIN (above) is set to 1, this hack applies - and you + * must make sure that this file is included in any file that implements + * the 'main()' function and links with the GNUstep base libarary. + * You should NOT include this file in a program that does not link with + * the base library. + * This file is included automatically in NSObject.h and Foundation.h + * + * The Foundation classe NSProcessInfo need access to the argc, argv, + * and env variables of the main() function. The purpose of this (ugly hack) + * definition is to give the gstep-base library the opportunity to implement + * its own main function with private access to the global vars. The private + * main() implementation (in NSProcessInfo.m) will then call the user defined + * gnustep_base_user_main() function. + * + * The original hack was - + ** Written by: Georg Tuparev, EMBL & Academia Naturalis, + ** Heidelberg, Germany + ** Tuparev@EMBL-Heidelberg.de + ** + ** NOTE! This is very dirty and dangerous trick. I spend several hours + ** on thinking and man pages browsing, but couldn't find better solution. + ** I know that I will spend 666 years in the Computer Hell for writing + ** this hack, and the master devil (Bully Boy) will send me to write + ** Windowz software. + ** BTW, for writing this hack I got personal congratulations from Dennis + ** Ritchie and Bjarne Stroustrup sent me a bunch of flowers and asked me + ** to participate in the standardization committee for C-- v.6.0 as + ** responsible for the new Tab-Overriding-Operator and Scope-Sensitive- + ** Comments ... but this makes my situation even worse ;-) + ** - Georg + * + * On some systems, there are other relatively clean workarounds, if this + * applies to the system you are running on, your configuration script + * should have set GS_FAKE_MAIN to zero, so that this define hack will + * not be used. + */ + + #define main gnustep_base_user_main + + #endif /* GS_FAKE_MAIN */ + #endif + + /* + * Definition to specify if your processor stores words with the most + * significant byte first (like Motorola and SPARC, unlike Intel and VAX). + */ + #define GS_WORDS_BIGENDIAN 0 + + /* + * Size definitions for standard types + */ + #define GS_SIZEOF_SHORT 2 + #define GS_SIZEOF_INT 4 + #define GS_SIZEOF_LONG 8 + #define GS_SIZEOF_LONG_LONG 8 + #define GS_SIZEOF_FLOAT 4 + #define GS_SIZEOF_DOUBLE 8 + #define GS_SIZEOF_VOIDP 8 + + /* + * Size information to be places in bits 5 and 6 of type encoding bytes + * in archives (bits 0 to 4 are used for basic type info and bit 7 is + * used to mark cross-references to previously encoded objects). + */ + #define _GSC_S_SHT _GSC_I16 + #define _GSC_S_INT _GSC_I32 + #define _GSC_S_LNG _GSC_I64 + #define _GSC_S_LNG_LNG _GSC_I64 + + /* + * Type definitions for types with known sizes. + */ + typedef signed char gss8; + typedef unsigned char gsu8; + typedef signed short gss16; + typedef unsigned short gsu16; + typedef signed int gss32; + typedef unsigned int gsu32; + typedef signed long gss64; + typedef unsigned long gsu64; + typedef struct { gsu8 a[16]; } gss128; + typedef struct { gsu8 a[16]; } gsu128; + typedef float gsf32; + typedef double gsf64; + + /* + * Integer type with same size as a pointer + */ + typedef unsigned long gsuaddr; + typedef long gssaddr; + typedef gsuaddr gsaddr; + + /* + * Do we have real 64-bit and 128-bit integers or are we just pretending. + */ + #define GS_HAVE_I64 1 + #define GS_HAVE_I128 0 + + /* + * Ensure some standard types are defined. + */ + #include + + + + + + + + + + + + /* + * PTR Limit information replacements for buggy headers + */ + #if 0 + #undef INTPTR_MAX + #define INTPTR_MAX + #undef INTPTR_MIN + #define INTPTR_MIN + #undef UINTPTR_MAX + #define UINTPTR_MAX + #endif + + + /* + * Do we have zlib for file handle compression? + */ + #define USE_ZLIB 1 + + /* + * Do we have the GNU Multiple-precision library for NSDecimal? + */ + //#define USE_GMP 1 + #define USE_GMP 0 + + #ifdef GS_WITH_GC + #undef GS_WITH_GC + #endif + #define GS_WITH_GC 0 + + /* + * Define to say if we use NXConstantString or NSConstantString + */ + #define NXConstantString NSConstantString + + + /* + * Wide unicode character type. + */ + #ifndef UTF32Char + #define UTF32Char uint32_t + #endif + + /* + * Native character type for use in systemcalls etc. + */ + + #if defined(__MINGW__) + # define GSNativeChar uint16_t + #else + # define GSNativeChar char + #endif + + /* + * Types used to avoid exposing pthread header in NSLock.h + * NB. These types should *never* be used except to provide enough space + * in a class layout for the type of data actually used by the pthread + * implementation of the current platform. + */ + typedef struct { + uint8_t dummy[48]; + } gs_cond_t __attribute__((aligned (8))); + typedef struct { + uint8_t dummy[40]; + } gs_mutex_t __attribute__((aligned (8))); + + #define OBJC2RUNTIME 1 + #define BASE_NATIVE_OBJC_EXCEPTIONS 1 + #define GS_NONFRAGILE 0 + #define GS_MIXEDABI 0 + #define GS_USE_LIBXML 0 + #define GS_USE_GNUTLS 0 + #define GS_USE_AVAHI 0 + #define GS_USE_MDNS 0 + #define GS_USE_ICU 0 + #define GS_USE_LIBDISPATCH 0 + #define GS_USE_LIBDISPATCH_RUNLOOP 0 + #define GS_HAVE_OBJC_ROOT_CLASS_ATTR 0 + + #ifndef __has_include + # define __has_include(x) 0 + #endif + #ifndef __has_feature + # define __has_feature(x) 0 + #endif + #ifndef __has_builtin + # define __has_builtin(x) 0 + #endif + + /* + * __has_extension has slightly different semantics from __has_feature. + * It evaluates to true if the feature is supported by by clang for the + * current compilation unit (language and -f switches), regardless of + * whether it is part of the language standard or just a (non-standard) + * extension. + */ + #ifndef __has_extension + # define __has_extension(x) __has_feature(x) + #endif + + #if defined(_WIN32) + #define BOOL WinBOOL + #define __OBJC_BOOL 1 + #include + #ifndef _WIN32_WINNT + #define _WIN32_WINNT Windows2000 + #endif + #if !defined(WINVER) + #define WINVER Windows2000 + #elif (WINVER < Windows2000) + #undef WINVER + #define WINVER Windows2000 + #endif + + #if defined(__WIN64__) + #include + #include + #else + #include + #include + #endif + + #undef __OBJC_BOOL + #undef BOOL + #endif + + /* Include the blocks runtime header if it's available (It shouldn't matter + * that this doesn't work on compilers that don't support __has_include(), + * because they also don't support blocks). + */ + #if __has_include() + # include + #endif + + #ifndef _WIN32 + #include /* Hack to get rid of warning in GNU libc 2.0.3. */ + #endif + + /* The following group of lines maintained by the gstep-base configure */ + #define GNUSTEP_BASE_VERSION 1.26.0 + #define GNUSTEP_BASE_MAJOR_VERSION 1 + #define GNUSTEP_BASE_MINOR_VERSION 26 + #define GNUSTEP_BASE_SUBMINOR_VERSION 0 + #define GNUSTEP_BASE_GCC_VERSION 4.0.0 + + /* Do not use the following macros! + */ + #define OBJC_DEP(M) \ + ({ static BOOL beenHere = NO; if (beenHere == NO) {\ + beenHere = YES; fprintf(stderr, "%s:%d %s", __FILE__, __LINE__, (M));}}) + + #define OBJC_MALLOC(VAR, TYPE, NUM) \ + (OBJC_DEP("OBJC_MALLOC is deprecated ... use malloc\n"),(VAR) = (TYPE *) malloc ((unsigned)(NUM)*sizeof(TYPE))) + #define OBJC_VALLOC(VAR, TYPE, NUM) \ + (OBJC_DEP("OBJC_VALLOC is deprecated\n"),(VAR) = (TYPE *) valloc ((unsigned)(NUM)*sizeof(TYPE))) + #define OBJC_ATOMIC_MALLOC(VAR, TYPE, NUM) \ + (OBJC_DEP("OBJC_ATOMIC_MALLOC is deprecated\n"),(VAR) = (TYPE *) malloc ((unsigned)(NUM)*sizeof(TYPE))) + #define OBJC_REALLOC(VAR, TYPE, NUM) \ + (OBJC_DEP("OBJC_REALLOC is deprecated ... use realloc\n"),(VAR) = (TYPE *) realloc ((VAR), (unsigned)(NUM)*sizeof(TYPE))) + #define OBJC_CALLOC(VAR, TYPE, NUM) \ + (OBJC_DEP("OBJC_CALLOC is deprecated ... use calloc\n"),(VAR) = (TYPE *) calloc ((unsigned)(NUM), sizeof(TYPE))) + #define OBJC_FREE(PTR) (OBJC_DEP("OBJC_FREE is deprecated ... use free\n"), free (PTR)) + + #ifndef MAX + #define MAX(a,b) \ + ({__typeof__(a) _MAX_a = (a); __typeof__(b) _MAX_b = (b); \ + _MAX_a > _MAX_b ? _MAX_a : _MAX_b; }) + #endif + + #ifndef MIN + #define MIN(a,b) \ + ({__typeof__(a) _MIN_a = (a); __typeof__(b) _MIN_b = (b); \ + _MIN_a < _MIN_b ? _MIN_a : _MIN_b; }) + #endif + + #ifndef ABS + #define ABS(a) \ + ({__typeof__(a) _ABS_a = (a); \ + _ABS_a < 0 ? -_ABS_a : _ABS_a; }) + #endif + + #ifndef STRINGIFY + #define STRINGIFY(s) XSTRINGIFY(s) + #define XSTRINGIFY(s) #s + #endif + + #ifndef OBJC_STRINGIFY + #define OBJC_STRINGIFY(s) OBJC_XSTRINGIFY(s) + #define OBJC_XSTRINGIFY(s) @#s + #endif + + #ifndef PTR2LONG + #define PTR2LONG(P) (((char*)(P))-(char*)0) + #endif + #ifndef LONG2PTR + #define LONG2PTR(L) (((char*)0)+(L)) + #endif + + #if VSPRINTF_RETURNS_LENGTH + #define VSPRINTF_LENGTH(VSPF_CALL) (VSPF_CALL) + #else + #define VSPRINTF_LENGTH(VSPF_CALL) strlen((VSPF_CALL)) + #endif /* VSPRINTF_RETURNS_LENGTH */ + + #if VASPRINTF_RETURNS_LENGTH + #define VASPRINTF_LENGTH(VASPF_CALL) (VASPF_CALL) + #else + #define VASPRINTF_LENGTH(VASPF_CALL) strlen((VASPF_CALL)) + #endif /* VSPRINTF_RETURNS_LENGTH */ + + /* Evil hack to stop gcc-4.1 complaining about a dealloc method which + * does not call the superclass implementation. + */ + #define GSNOSUPERDEALLOC if (0) [super dealloc] + + #ifndef CF_EXCLUDE_CSTD_HEADERS + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #endif + + #if !__has_feature(objc_arc) + // NetBSD > 6 defines __weak in cdefs_elf.h + #ifdef __NetBSD__ + #undef __weak + #endif + # if !defined(__weak) + # define __weak + # endif + # if !defined(__strong) + # define __strong + # endif + #endif + + #ifndef __unsafe_unretained + # if !__has_feature(objc_arc) + # define __unsafe_unretained + # endif + #endif + #ifndef __bridge + # if !__has_feature(objc_arc) + # define __bridge + # endif + #endif + + #if __has_builtin(__builtin_unreachable) + # define GS_UNREACHABLE() __builtin_unreachable() + #else + # define GS_UNREACHABLE() abort() + #endif + + #endif /* included_GSConfig_h */ + diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,631 ---- + /** Interface to ObjC runtime for GNUStep + Copyright (C) 1995, 1997, 2000, 2002, 2003 Free Software Foundation, Inc. + + Written by: Andrew Kachites McCallum + Date: 1995 + Written by: Richard Frith-Macdonald + Date: 2002 + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + + AutogsdocSource: Additions/GSObjCRuntime.m + + */ + + #ifndef __GSObjCRuntime_h_GNUSTEP_BASE_INCLUDE + #define __GSObjCRuntime_h_GNUSTEP_BASE_INCLUDE + + #import "GSVersionMacros.h" + #import "GSConfig.h" + + #include + + #if 1 || NeXT_RUNTIME + #include + #include + #include + #ifndef _C_ATOM + #define _C_ATOM '%' + #endif + #define _F_CONST 0x01 + #define _F_IN 0x01 + #define _F_OUT 0x02 + #define _F_INOUT 0x03 + #define _F_BYCOPY 0x04 + #define _F_ONEWAY 0x08 + #define _C_CONST 'r' + #define _C_IN 'n' + #define _C_INOUT 'N' + #define _C_OUT 'o' + #define _C_BYCOPY 'O' + #define _C_ONEWAY 'V' + #else /* GNU Objective C Runtime */ + #include + #if defined (__GNU_LIBOBJC__) + #include + #else + #include + #include + #endif + #endif + + /* + * Hack for older compiler versions that don't have all defines + * needed in objc-api.h + */ + #ifndef _C_LNG_LNG + #define _C_LNG_LNG 'q' + #endif + #ifndef _C_ULNG_LNG + #define _C_ULNG_LNG 'Q' + #endif + + #if OBJC2RUNTIME + /* We have a real ObjC2 runtime. + */ + #include + #else + /* We emulate an ObjC2 runtime. + */ + #include + #endif + + #ifdef __cplusplus + extern "C" { + #endif + + @class NSArray; + @class NSDictionary; + @class NSObject; + @class NSString; + @class NSValue; + + #ifndef YES + #define YES 1 + #endif + #ifndef NO + #define NO 0 + #endif + #ifndef nil + #define nil 0 + #endif + + #if !defined(_C_CONST) + #define _C_CONST 'r' + #endif + #if !defined(_C_IN) + #define _C_IN 'n' + #endif + #if !defined(_C_INOUT) + #define _C_INOUT 'N' + #endif + #if !defined(_C_OUT) + #define _C_OUT 'o' + #endif + #if !defined(_C_BYCOPY) + #define _C_BYCOPY 'O' + #endif + #if !defined(_C_BYREF) + #define _C_BYREF 'R' + #endif + #if !defined(_C_ONEWAY) + #define _C_ONEWAY 'V' + #endif + #if !defined(_C_GCINVISIBLE) + #define _C_GCINVISIBLE '!' + #endif + + /* + * Functions for accessing instance variables directly - + * We can copy an ivar into arbitrary data, + * Get the type encoding for a named ivar, + * and copy a value into an ivar. + */ + GS_EXPORT BOOL + GSObjCFindVariable(id obj, const char *name, + const char **type, unsigned int *size, int *offset); + + GS_EXPORT void + GSObjCGetVariable(id obj, int offset, unsigned int size, void *data); + + GS_EXPORT void + GSObjCSetVariable(id obj, int offset, unsigned int size, const void *data); + + GS_EXPORT NSArray * + GSObjCMethodNames(id obj, BOOL recurse); + + GS_EXPORT NSArray * + GSObjCVariableNames(id obj, BOOL recurse); + + /** + *

A Behavior can be seen as a "Protocol with an implementation" or a + * "Class without any instance variables". A key feature of behaviors + * is that they give a degree of multiple inheritance. + *

+ *

Behavior methods, when added to a class, override the class's + * superclass methods, but not the class's methods. + *

+ *

Whan a behavior class is added to a receiver class, not only are the + * methods defined in the behavior class added, but the methods from the + * behavior's class hierarchy are also added (unless already present). + *

+ *

It's not the case that a class adding behaviors from another class + * must have "no instance vars". The receiver class just has to have the + * same layout as the behavior class (optionally with some additional + * ivars after those of the behavior class). + *

+ *

This function provides Behaviors without adding any new syntax to + * the Objective C language. Simply define a class with the methods you + * want to add, then call this function with that class as the behavior + * argument. + *

+ *

This function should be called in the +initialize method of the receiver. + *

+ *

If you add several behaviors to a class, be aware that the order of + * the additions is significant. + *

+ */ + GS_EXPORT void + GSObjCAddClassBehavior(Class receiver, Class behavior); + + /** + *

An Override can be seen as a "category implemented as a separate class + * and manually added to the receiver class under program control, rather + * than automatically added by the compiler/runtime. + *

+ *

Override methods, when added to a receiver class, replace the class's + * class's methods of the same name (or are added if the class did not define + * methods with that name). + *

+ *

It's not the case that a class adding overrides from another class + * must have "no instance vars". The receiver class just has to have the + * same layout as the override class (optionally with some additional + * ivars after those of the override class). + *

+ *

This function provides overrides without adding any new syntax to + * the Objective C language. Simply define a class with the methods you + * want to add, then call this function with that class as the override + * argument. + *

+ *

This function should usually be called in the +initialize method + * of the receiver. + *

+ *

If you add several overrides to a class, be aware that the order of + * the additions is significant. + *

+ */ + GS_EXPORT void + GSObjCAddClassOverride(Class receiver, Class override); + + /** Turn on (YES), off (NO) or test (-1) behavior debugging. + */ + GS_EXPORT BOOL GSObjCBehaviorDebug(int setget); + + GS_EXPORT NSValue * + GSObjCMakeClass(NSString *name, NSString *superName, NSDictionary *iVars); + + GS_EXPORT void + GSObjCAddClasses(NSArray *classes); + + /** + * Given a NULL terminated list of methods, add them to the class.
+ * If the method already exists in a superclass, the new version overrides + * that one, but if the method already exists in the class itsself, the + * new one is quietly ignored (replace==NO) or replaced with the new + * version (if replace==YES).
+ * To add class methods, cls should be the metaclass of the class to + * which the methods are being added. + */ + GS_EXPORT void + GSObjCAddMethods(Class cls, Method *list, BOOL replace); + + /* + * Functions for key-value encoding ... they access values in an object + * either by selector or directly, but do so using NSNumber for the + * scalar types of data. + */ + GS_EXPORT id + GSObjCGetVal(NSObject *self, const char *key, SEL sel, + const char *type, unsigned size, int offset); + + GS_EXPORT void + GSObjCSetVal(NSObject *self, const char *key, id val, SEL sel, + const char *type, unsigned size, int offset); + + /* + * This section includes runtime functions + * to query and manipulate the ObjC runtime structures. + * These functions take care to not use ObjC code so + * that they can safely be used in +(void)load implementations + * where applicable. + */ + + /** + * Deprecated ... use objc_getClassList() + */ + GS_EXPORT unsigned int + GSClassList(Class *buffer, unsigned int max, BOOL clearCache); + + /** + * GSObjCClass() is deprecated ... use object_getClass() + */ + GS_EXPORT Class GSObjCClass(id obj); + + /** + * GSObjCSuper() is deprecated ... use class_getSuperclass() + */ + GS_EXPORT Class GSObjCSuper(Class cls); + + /** + * GSObjCIsInstance() is deprecated ... use object_getClass() + * in conjunction with class_isMetaClass() + */ + GS_EXPORT BOOL GSObjCIsInstance(id obj); + + /** + * GSObjCIsClass() is deprecated ... use object_getClass() + * in conjunction with class_isMetaClass() + */ + GS_EXPORT BOOL GSObjCIsClass(Class cls); + + /** + * Test to see if class inherits from another class + * The argument to this function must NOT be nil. + */ + GS_EXPORT BOOL GSObjCIsKindOf(Class cls, Class other); + + /** + * GSClassFromName() is deprecated ... use objc_lookUpClass() + */ + GS_EXPORT Class GSClassFromName(const char *name); + + /** + * GSNameFromClass() is deprecated ... use class_getName() + */ + GS_EXPORT const char *GSNameFromClass(Class cls); + + /** + * GSClassNameFromObject() is deprecated ... use object_getClass() + * in conjunction with class_getName() + */ + GS_EXPORT const char *GSClassNameFromObject(id obj); + + /** + * GSNameFromSelector() is deprecated ... use sel_getName() + */ + GS_EXPORT const char *GSNameFromSelector(SEL sel); + + /** + * GSSelectorFromName() is deprecated ... use sel_getUid() + */ + GS_EXPORT SEL + GSSelectorFromName(const char *name); + + /** + * Return the selector for the specified name and types.
+ * Returns a nul pointer if the name is nul.
+ * Creates a new selector if necessary.
+ * Code must NOT rely on this providing a selector with type information. + */ + GS_EXPORT SEL + GSSelectorFromNameAndTypes(const char *name, const char *types); + + /** + * Return the type information from the specified selector.
+ * May return a nul pointer if the selector was a nul pointer or if it + * was not typed (or if the runtime does not support typed selectors).
+ * Code must NOT rely on this providing any type information. + */ + GS_EXPORT const char * + GSTypesFromSelector(SEL sel); + + /** + * Compare only the type information ignoring qualifiers, the frame layout + * and register markers. Unlike sel_types_match, this function also + * handles comparisons of types with and without any layout information. + */ + GS_EXPORT BOOL + GSSelectorTypesMatch(const char *types1, const char *types2); + + /** Takes full type information and skips forward to the actual type + * as specified in the _C_... constants. + */ + GS_EXPORT const char * + GSSkipTypeQualifierAndLayoutInfo(const char *types); + + /** + * Returns a protocol object with the corresponding name. + * This function searches the registered classes for any protocol + * with the supplied name. If one is found, it is cached in + * for future requests. If efficiency is a factor then use + * GSRegisterProtocol() to insert a protocol explicitly into the cache + * used by this function. If no protocol is found this function returns + * nil. + */ + GS_EXPORT Protocol * + GSProtocolFromName(const char *name); + + /** + * Registers proto in the cache used by GSProtocolFromName(). + */ + GS_EXPORT void + GSRegisterProtocol(Protocol *proto); + + /** + * A variant of protocol_getMethodDescription which recursively searches + * parent protocols if the requested selector isn't found in the given + * protocol. + * + * Returns a {NULL, NULL} structure if the requested selector couldn't be + * found. + */ + GS_EXPORT struct objc_method_description + GSProtocolGetMethodDescriptionRecursive(Protocol *aProtocol, SEL aSel, BOOL isRequired, BOOL isInstance); + + /* + * Unfortunately the definition of the symbols + * 'Method(_t)', 'MethodList(_t)' and 'IVar(_t)' + * are incompatible between the GNU and NeXT/Apple runtimes. + * We introduce GSMethod, GSMethodList and GSIVar to allow portability. + */ + typedef Method GSMethod; + typedef Ivar GSIVar; + + /** + * Returns the pointer to the method structure + * for the selector in the specified class. + * Depending on searchInstanceMethods, this function searches + * either instance or class methods. + * Depending on searchSuperClassesm this function searches + * either the specified class only or also its superclasses.
+ * To obtain the implementation pointer IMP use returnValue->method_imp + * which should be safe across all runtimes.
+ * It should be safe to use this function in +load implementations.
+ * This function should currently (June 2004) be considered WIP. + * Please follow potential changes (Name, parameters, ...) closely until + * it stabilizes. + */ + GS_EXPORT GSMethod + GSGetMethod(Class cls, SEL sel, + BOOL searchInstanceMethods, + BOOL searchSuperClasses); + + /** + * Deprecated .. does nothing. + */ + GS_EXPORT void + GSFlushMethodCacheForClass (Class cls); + + /** + * Deprecated .. use class_getInstanceVariable() + */ + GS_EXPORT GSIVar + GSCGetInstanceVariableDefinition(Class cls, const char *name); + + /** + * Deprecated .. use class_getInstanceVariable() + */ + GS_EXPORT GSIVar + GSObjCGetInstanceVariableDefinition(Class cls, NSString *name); + + /** + * GSObjCVersion() is deprecated ... use class_getVersion() + */ + GS_EXPORT int GSObjCVersion(Class cls); + + /** + * Quickly return autoreleased data storage area. + */ + GS_EXPORT void * + GSAutoreleasedBuffer(unsigned size); + + /** + *

Prints a message to fptr using the format string provided and any + * additional arguments. The format string is interpreted as by + * the NSString formatted initialisers, and understands the '%@' syntax + * for printing an object. + *

+ *

The data is written to the file pointer in the default CString + * encoding if possible, as a UTF8 string otherwise. + *

+ *

This function is recommended for printing general log messages. + * For debug messages use NSDebugLog() and friends. For error logging + * use NSLog(), and for warnings you might consider NSWarnLog(). + *

+ */ + GS_EXPORT BOOL + GSPrintf (FILE *fptr, NSString *format, ...); + + + + GS_EXPORT NSArray * + GSObjCAllSubclassesOfClass(Class cls); + + GS_EXPORT NSArray * + GSObjCDirectSubclassesOfClass(Class cls); + + /** Function to change the class of the specified instance to newClass. + * This handles memory debugging issues in GNUstep-base and also + * deals with class finalisation issues in a garbage collecting + * environment, so you should use this function rather than attempting + * to swizzle class pointers directly. + */ + GS_EXPORT void + GSClassSwizzle(id instance, Class newClass); + + #if !defined(GS_GNUSTEP_V) || (GS_GNUSTEP_V >= GS_API_ANY && GS_GNUSTEP_V < 011500) + //GS_API_VERSION(GS_API_ANY,011500) + + GS_EXPORT const char * + GSLastErrorStr(long error_id) GS_DEPRECATED_FUNC; + + #endif + + + + #ifndef GS_MAX_OBJECTS_FROM_STACK + /** + * The number of objects to try to get from varargs into an array on + * the stack ... if there are more than this, use the heap. + * NB. This MUST be a multiple of 2 + */ + #define GS_MAX_OBJECTS_FROM_STACK 128 + #endif + + /** + *

This is a macro designed to minimise the use of memory allocation and + * deallocation when you need to work with a vararg list of objects.
+ * The objects are unpacked from the vararg list into two 'C' arrays and + * then a code fragment you specify is able to make use of them before + * that 'C' array is destroyed. + *

+ *

The firstObject argument is the name of the formal parameter in your + * method or function which precedes the ', ...' denoting variable args. + *

+ *

The code argument is a piece of objective-c code to be executed to + * make use of the objects stored in the 'C' arrays.
+ * When this code is called the unsigned integer '__count' will contain the + * number of objects unpacked, the pointer '__objects' will point to + * the first object in each pair, and the pointer '__pairs' will point + * to an array containing the second halves of the pairs of objects + * whose first halves are in '__objects'.
+ * This lets you pack a list of the form 'key, value, key, value, ...' + * into an array of keys and an array of values. + *

+ */ + #define GS_USEIDPAIRLIST(firstObject, code...) ({\ + va_list __ap; \ + unsigned int __max = GS_MAX_OBJECTS_FROM_STACK; \ + unsigned int __count = 0; \ + id __buf[__max]; \ + id *__objects = __buf; \ + id *__pairs = &__objects[__max/2]; \ + id __obj = firstObject; \ + va_start(__ap, firstObject); \ + while (__obj != nil && __count < __max) \ + { \ + if ((__count % 2) == 0) \ + { \ + __objects[__count/2] = __obj; \ + } \ + else \ + { \ + __pairs[__count/2] = __obj; \ + } \ + __obj = va_arg(__ap, id); \ + if (++__count == __max) \ + { \ + while (__obj != nil) \ + { \ + __count++; \ + __obj = va_arg(__ap, id); \ + } \ + } \ + } \ + if ((__count % 2) == 1) \ + { \ + __pairs[__count/2] = nil; \ + __count++; \ + } \ + va_end(__ap); \ + if (__count > __max) \ + { \ + unsigned int __tmp; \ + __objects = (id*)malloc(__count*sizeof(id)); \ + __pairs = &__objects[__count/2]; \ + __objects[0] = firstObject; \ + va_start(__ap, firstObject); \ + for (__tmp = 1; __tmp < __count; __tmp++) \ + { \ + if ((__tmp % 2) == 0) \ + { \ + __objects[__tmp/2] = va_arg(__ap, id); \ + } \ + else \ + { \ + __pairs[__tmp/2] = va_arg(__ap, id); \ + } \ + } \ + va_end(__ap); \ + } \ + code; \ + if (__objects != __buf) free(__objects); \ + }) + + /** + *

This is a macro designed to minimise the use of memory allocation and + * deallocation when you need to work with a vararg list of objects.
+ * The objects are unpacked from the vararg list into a 'C' array and + * then a code fragment you specify is able to make use of them before + * that 'C' array is destroyed. + *

+ *

The firstObject argument is the name of the formal parameter in your + * method or function which precedes the ', ...' denoting variable args. + *

+ *

The code argument is a piece of objective-c code to be executed to + * make use of the objects stored in the 'C' array.
+ * When this code is called the unsigned integer '__count' will contain the + * number of objects unpacked, and the pointer '__objects' will point to + * the unpacked objects, ie. firstObject followed by the vararg arguments + * up to (but not including) the first nil. + *

+ */ + #define GS_USEIDLIST(firstObject, code...) ({\ + va_list __ap; \ + unsigned int __max = GS_MAX_OBJECTS_FROM_STACK; \ + unsigned int __count = 0; \ + id __buf[__max]; \ + id *__objects = __buf; \ + id __obj = firstObject; \ + va_start(__ap, firstObject); \ + while (__obj != nil && __count < __max) \ + { \ + __objects[__count] = __obj; \ + __obj = va_arg(__ap, id); \ + if (++__count == __max) \ + { \ + while (__obj != nil) \ + { \ + __count++; \ + __obj = va_arg(__ap, id); \ + } \ + } \ + } \ + va_end(__ap); \ + if (__count > __max) \ + { \ + unsigned int __tmp; \ + __objects = (id*)NSZoneMalloc(NSDefaultMallocZone(),__count*sizeof(id)); \ + va_start(__ap, firstObject); \ + __objects[0] = firstObject; \ + for (__tmp = 1; __tmp < __count; __tmp++) \ + { \ + __objects[__tmp] = va_arg(__ap, id); \ + } \ + va_end(__ap); \ + } \ + code; \ + if (__objects != __buf) NSZoneFree (NSDefaultMallocZone(),__objects); \ + }) + + + #ifdef __cplusplus + } + #endif + + #endif /* __GSObjCRuntime_h_GNUSTEP_BASE_INCLUDE */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,460 ---- + /* GSVersionMacros.h - macros for managing API versioning and visibility + Copyright (C) 2006-2014 Free Software Foundation, Inc. + + Written by: Richard Frith-Macdonald + Date: Oct, October 2006 + + This file is part of GNUstep. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + */ + + #ifndef __GNUSTEP_GSVERSIONMACROS_H_INCLUDED_ + #define __GNUSTEP_GSVERSIONMACROS_H_INCLUDED_ + + /* By default we defined NO_GNUSTEP to 0 so that we will include extensions. + */ + #if !defined(NO_GNUSTEP) + # define NO_GNUSTEP 0 + #endif + + /* Check consistency of definitions for system compatibility. + */ + #if defined(STRICT_OPENSTEP) + # define GS_OPENSTEP_V 10000 + # undef NO_GNUSTEP + # define NO_GNUSTEP 1 + #elif defined(STRICT_MACOS_X) + # define GS_OPENSTEP_V 100600 + # undef NO_GNUSTEP + # define NO_GNUSTEP 1 + #endif + + /* Define the GS_OSX_ADJUST() macro to adjust OSX style version macros + * to GNUstep style version macros. + */ + #define GS_OSX_ADJUST(V) ((V) >= 10000 ? (V) : ((V)/100*10000 + (V)%100*10)) + + /* Define OSX compatibility version macros if necessary. + */ + #if !defined(MAC_OS_X_VERSION_10_0) + #define MAC_OS_X_VERSION_10_0 1000 + #define MAC_OS_X_VERSION_10_1 1010 + #define MAC_OS_X_VERSION_10_2 1020 + #define MAC_OS_X_VERSION_10_3 1030 + #define MAC_OS_X_VERSION_10_4 1040 + #define MAC_OS_X_VERSION_10_5 1050 + #define MAC_OS_X_VERSION_10_6 1060 + #define MAC_OS_X_VERSION_10_7 1070 + #define MAC_OS_X_VERSION_10_8 1080 + #define MAC_OS_X_VERSION_10_9 1090 + #define MAC_OS_X_VERSION_10_10 1100 + #define MAC_OS_X_VERSION_10_11 1110 + #define MAC_OS_X_VERSION_10_12 1120 + #define MAC_OS_X_VERSION_10_13 1130 + #define MAC_OS_X_VERSION_10_14 1140 + #endif /* MAC_OS_X_VERSION_10_0 */ + + /* Allow MAC_OS_X_VERSION_MAX_ALLOWED to be used in place of GS_OPENSTEP_V + * if GS_OPENSTEP_V is not defined. + */ + #ifndef GS_OPENSTEP_V + #ifdef MAC_OS_X_VERSION_MAX_ALLOWED + #define GS_OPENSTEP_V GS_OSX_ADJUST(MAC_OS_X_VERSION_MAX_ALLOWED) + #endif /* MAC_OS_X_VERSION_MAX_ALLOWED */ + #endif /* GS_OPENSTEP_V */ + + /* + * NB. The version values below must be integers ... by convention these are + * made up of two digits each for major, minor and subminor version numbers + * (ie each is in the range 00 to 99 though a leading zero in the major + * number is not permitted). + * So for a MacOS-X 10.3.9 release the version number would be 100309 + * + * You may define GS_GNUSTEP_V or GS_OPENSTEP_V to ensure that your + * program only 'sees' the specified varsion of the API. + */ + + /** + *

Macro to check a defined GNUstep version number (GS_GNUSTEP_V) against + * the supplied arguments. Returns true if no GNUstep version is specified, + * or if ADD <= version < REM, where ADD is the version + * number at which a feature guarded by the macro was introduced and + * REM is the version number at which it was removed. + *

+ *

The version number arguments are six digit integers where the first + * two digits are the major version number, the second two are the minor + * version number and the last two are the subminor number (all left padded + * with a zero where necessary). However, for convenience you can also + * use the predefined constants ... + * GS_API_NONE, + * GS_API_LATEST, + *

+ *

Also see OS_API_VERSION + *

+ *

NB. If you are changing the API (eg adding a new feature) you need + * to control the visibility io the new header file code using
+ * #if GS_API_VERSION(ADD,GS_API_LATEST)
+ * where ADD is the version number of the next minor + * release after the most recent one.
+ * As a general principle you should not change the API with + * changing subminor version numbers ... as that tends to confuse + * people (though Apple has sometimes done it). + *

+ */ + #define GS_API_VERSION(ADD,REM) \ + (!defined(GS_GNUSTEP_V) || (GS_GNUSTEP_V >= ADD && GS_GNUSTEP_V < REM)) + + /** + *

Macro to check a defined OpenStep/OPENSTEP/MacOS-X version against the + * supplied arguments. Returns true if no version is specified, or if + * ADD <= version < REM, where ADD is the version + * number at which a feature guarded by the macro was introduced and + * REM is the version number at which it was removed. + *

+ *

The version number arguments are six digit integers where the first + * two digits are the major version number, the second two are the minor + * version number and the last two are the subminor number (all left padded + * with a zero where necessary). However, for convenience you can also + * use any of several predefined constants ... + * GS_API_NONE, + * GS_API_LATEST, + * GS_API_OSSPEC, + * GS_API_OPENSTEP, + * GS_API_MACOSX + *

+ *

Also see GS_API_VERSION + *

+ *

For OSX compatibility, this macro also supports the use of Apple's + * symbolic constants for version numbering. Their contants are currently + * four digit values (two digits for the major version, one for the minor, + * and one for the subminor). + *

+ *

The Apple compatibility version macros are currently: + * MAC_OS_X_VERSION_10_0, + * MAC_OS_X_VERSION_10_1, + * MAC_OS_X_VERSION_10_2, + * MAC_OS_X_VERSION_10_3, + * MAC_OS_X_VERSION_10_4, + * MAC_OS_X_VERSION_10_5, + * MAC_OS_X_VERSION_10_6, + * MAC_OS_X_VERSION_10_7, + * MAC_OS_X_VERSION_10_8 + * MAC_OS_X_VERSION_10_9 + *

+ */ + #define OS_API_VERSION(ADD,REM) \ + (!defined(GS_OPENSTEP_V) \ + || (GS_OPENSTEP_V>=GS_OSX_ADJUST(ADD) && GS_OPENSTEP_V + * eg.
+ * #if OS_API_VERSION + * (GS_API_NONE, GS_API_NONE)
+ * denotes code not present in OpenStep/OPENSTEP/MacOS-X + */ + #define GS_API_NONE 0 + + /** + * A constant to represent a feature which is still present in the latest + * version. This is the highest possible version number.
+ * eg.
+ * #if OS_API_VERSION + * (GS_API_MACOSX, GS_API_LATEST)
+ * denotes code present from the initial MacOS-X version onwards. + */ + #define GS_API_LATEST 999999 + + /** + * The version number of the initial OpenStep specification.
+ * eg.
+ * #if OS_API_VERSION + * (GS_API_OSSPEC, GS_API_LATEST)
+ * denotes code present from the OpenStep specification onwards. + */ + #define GS_API_OSSPEC 10000 + + /** + * The version number of the first OPENSTEP implementation.
+ * eg.
+ * #if OS_API_VERSION + * (GS_API_OPENSTEP, GS_API_LATEST)
+ * denotes code present from the initial OPENSTEP version onwards. + */ + #define GS_API_OPENSTEP 40000 + + /** + * The version number of the first MacOS-X implementation.
+ * eg.
+ * #if OS_API_VERSION + * (GS_API_MACOSX, GS_API_LATEST)
+ * denotes code present from the initial MacOS-X version onwards. + */ + #define GS_API_MACOSX 100000 + + /* Allow OSX code comparing MAC_OS_X_VERSION_MAX_ALLOWED with a specific + * version to see if that version is allowed, to always have it allowed + * on GNUstep. + */ + #ifndef MAC_OS_X_VERSION_MAX_ALLOWED + #define MAC_OS_X_VERSION_MAX_ALLOWED GS_API_LATEST + #endif /* MAC_OS_X_VERSION_MAX_ALLOWED */ + + + #if defined(GNUSTEP_BASE_INTERNAL) + #include "GNUstepBase/GSConfig.h" + #else + #include "GSConfig.h" + #endif + + + #if defined(__GNUC__) && defined(__GNUC_MINOR__) && !defined(__clang__) + # define GS_GCC_MINREQ(maj, min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) + #else + # define GS_GCC_MINREQ(maj, min) 0 + #endif + + #if defined(__clang__) + # define GS_CLANG_MINREQ(maj, min) \ + ((__clang_major__ << 16) + __clang_minor__ >= ((maj) << 16) + (min)) + #else + # define GS_CLANG_MINREQ(maj, min) 0 + #endif + + /* Attribute definitions for attributes which may or may not be supported + * depending on the compiler being used. + * NB we currently expect gcc to be version 4 or later. + * + * The definition should be of the form GS_XXX_CONTEXT where XXX is the + * name of the attribute and CONTEXT is one of FUNC, METH, or IVAR + * depending on where the attribute can be applied. + */ + + #if defined(__clang__) || GS_GCC_MINREQ(3,1) + # define GS_DEPRECATED_FUNC __attribute__ ((deprecated)) + #else + # define GS_DEPRECATED_FUNC + #endif + + #define GS_UNUSED_ARG __attribute__((unused)) + + #define GS_UNUSED_FUNC __attribute__((unused)) + + // FIXME ... what version of gcc? + #if __clang__ + # define GS_UNUSED_IVAR __attribute__((unused)) + #else + # define GS_UNUSED_IVAR + #endif + + + + #ifndef __has_feature + #define __has_feature(x) 0 + #endif + + /* The following is for deciding whether private instance variables + * should be visible ... if we are building with a compiler which + * does not define __has_feature then we know we don't have non-fragile + * ivar support. + * In the header we bracket instance variable declarations in a + * '#if GS_EXPOSE(classname) ... #endif' sequence, so that the variables + * will not be visible to code which uses the library. + * In the source file we define EXPOSE_classname_IVARS to be 1 + * before including the header, so that the ivars are always available + * in the class source itsself + */ + + #if GS_MIXEDABI + # undef GS_NONFRAGILE + # define GS_NONFRAGILE 0 /* Mixed is treated as fragile */ + #else + # if (__has_feature(objc_nonfragile_abi)) + # if !GS_NONFRAGILE + # if defined(GNUSTEP_BASE_INTERNAL) + # error "You are building gnustep-base using the objc-nonfragile-abi but your gnustep-base was not configured to use it." + # endif + # endif + # else + # if GS_NONFRAGILE + # error "Your gnustep-base was configured for the objc-nonfragile-abi but you are not using it now." + # endif + # endif + #endif + + #define GS_EXPOSE(X) (!GS_NONFRAGILE || defined(EXPOSE_##X##_IVARS)) + + /* Static analyser macros: Provide annotations to help the analyser */ + #ifdef __clang__ + # define GS_NORETURN_METHOD __attribute__((__noreturn__)) + #else + # define GS_NORETURN_METHOD + #endif + + #ifndef NS_RETURNS_RETAINED + # if __has_feature(attribute_ns_returns_retained) + # define NS_RETURNS_RETAINED __attribute__((ns_returns_retained)) + # else + # define NS_RETURNS_RETAINED + # endif + #endif + + #ifndef NS_RETURNS_NOT_RETAINED + # if __has_feature(attribute_ns_returns_not_retained) + # define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained)) + # else + # define NS_RETURNS_NOT_RETAINED + # endif + #endif + + #ifndef NS_CONSUMED + # if __has_feature(attribute_ns_consumed) + # define NS_CONSUMED __attribute__((ns_consumed)) + # else + # define NS_CONSUMED + # endif + #endif + + + #ifndef NS_CONSUMES_SELF + # if __has_feature(attribute_ns_consumes_self) + # define NS_CONSUMES_SELF __attribute__((ns_consumes_self)) + # else + # define NS_CONSUMES_SELF + # endif + #endif + + #if defined(__clang__) && defined(__OBJC__) + static inline void gs_consumed(id NS_CONSUMED o) GS_UNUSED_FUNC; + static inline void gs_consumed(id NS_CONSUMED GS_UNUSED_ARG o) { return; } + #define GS_CONSUMED(O) gs_consumed(O); + #else + #define GS_CONSUMED(O) + #endif + + /* Include the appropriate header for ObjC2 blocks support if it is in use. + * + * FIXME: "OBJC2RUNTIME" is set to "1" if the runtime supports the ObjC2 + * runtime API, which is unrelated to whether the compiler has blocks + * support or not. + */ + #if __has_feature(blocks) + # if OBJC2RUNTIME + # if defined(__APPLE__) + # include + # else + # include + # endif + # else + # include + # endif + #endif + + /* Attribute definition for root classes, annotates the interface declaration + * of the class. + */ + #ifndef GS_ROOT_CLASS + # if GS_HAVE_OBJC_ROOT_CLASS_ATTR || __has_feature(attribute_objc_root_class) + # define GS_ROOT_CLASS __attribute__((objc_root_class)) + # else + # define GS_ROOT_CLASS + # endif + #endif + + + + #if defined(GNUSTEP_WITH_DLL) + + #if BUILD_libgnustep_base_DLL + # + # if defined(__MINGW__) + /* On Mingw, the compiler will export all symbols automatically, so + * __declspec(dllexport) is not needed. + */ + # define GS_EXPORT extern + # define GS_DECLARE + # else + # define GS_EXPORT __declspec(dllexport) + # define GS_DECLARE __declspec(dllexport) + # endif + #else + # define GS_EXPORT extern __declspec(dllimport) + # define GS_DECLARE __declspec(dllimport) + #endif + + #else /* GNUSTEP_WITH[OUT]_DLL */ + + # define GS_EXPORT extern + # define GS_DECLARE + + #endif + + + /* Attribute macros compatible with Apple. + */ + + #ifndef NS_FORMAT_ARGUMENT + #if defined(__clang__) || GS_GCC_MINREQ(4,2) + # define NS_FORMAT_ARGUMENT(A) __attribute__((format_arg(A))) + #else + # define NS_FORMAT_ARGUMENT(F,A) + #endif + #endif + + // FIXME ... what version of gcc? + #ifndef NS_FORMAT_FUNCTION + #if __clang__ + # define NS_FORMAT_FUNCTION(F,A) __attribute__((format(__NSString__, F, A))) + #else + # define NS_FORMAT_FUNCTION(F,A) + #endif + #endif + + #ifndef NS_REQUIRES_NIL_TERMINATION + #define NS_REQUIRES_NIL_TERMINATION __attribute__((sentinel)) + #endif + + // FIXME ... what exact version of clang and gcc? + #ifndef UNAVAILABLE_ATTRIBUTE + #if defined(__clang__) || GS_GCC_MINREQ(4,0) + # define UNAVAILABLE_ATTRIBUTE __attribute__((unavailable)) + #else + # define UNAVAILABLE_ATTRIBUTE + #endif + #endif + + /* Check if compiler supports @optional in protocols + */ + #if defined(__clang__) || GS_GCC_MINREQ(4,6) + # define GS_PROTOCOLS_HAVE_OPTIONAL 1 + #else + # define GS_PROTOCOLS_HAVE_OPTIONAL 0 + #endif + + /* Check if compiler supports declared properties + */ + #if defined(__clang__) || GS_GCC_MINREQ(4,6) + # define GS_HAS_DECLARED_PROPERTIES 1 + #else + # define GS_HAS_DECLARED_PROPERTIES 0 + #endif + + #endif /* __GNUSTEP_GSVERSIONMACROS_H_INCLUDED_ */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,78 ---- + /** Declaration of extension methods for base additions + + Copyright (C) 2003-2010 Free Software Foundation, Inc. + + Written by: Richard Frith-Macdonald + and: Adam Fedor + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + + */ + + #ifndef INCLUDED_NSArray_GNUstepBase_h + #define INCLUDED_NSArray_GNUstepBase_h + + #import "../GNUstepBase/GSVersionMacros.h" + #import "../Foundation/NSArray.h" + + #if defined(__cplusplus) + extern "C" { + #endif + + #if OS_API_VERSION(GS_API_NONE,GS_API_LATEST) + + @interface NSArray (GNUstepBase) + + /**

Method for working with sorted arrays - use a binary chop + * to determine the insertion location for an object. If equal objects + * already exist in the array, they will be located immediately before + * the insertion position. + *

+ *

The comparator function takes two items as arguments, the first is the + * item to be added, the second is the item already in the array. + * The function should return NSOrderedAscending if the item to be + * added is 'less than' the item in the array, NSOrderedDescending + * if it is greater, and NSOrderedSame if it is equal. + *

+ */ + - (NSUInteger) insertionPosition: (id)item + usingFunction: (NSComparisonResult (*)(id, id, void *))sorter + context: (void *)context; + + /*

Method for working with sorted arrays - use a binary chop + * to determine the insertion location for an object. If equal objects + * already exist in the array, they will be located immediately before + * the insertion position. + *

+ *

The selector identifies a method returning NSOrderedAscending if + * the receiver is 'less than' the argument, and NSOrderedDescending if + * it is greate. + *

+ */ + - (NSUInteger) insertionPosition: (id)item + usingSelector: (SEL)comp; + @end + + #endif /* OS_API_VERSION */ + + #if defined(__cplusplus) + } + #endif + + #endif /* INCLUDED_NSArray_GNUstepBase_h */ + diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,57 ---- + /** Declaration of extension methods for base additions + + Copyright (C) 2003-2010 Free Software Foundation, Inc. + + Written by: Richard Frith-Macdonald + and: Adam Fedor + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + + */ + + #ifndef INCLUDED_NSMutableString_GNUstepBase_h + #define INCLUDED_NSMutableString_GNUstepBase_h + + #import "GSVersionMacros.h" + #import "../Foundation/NSString.h" + + #if defined(__cplusplus) + extern "C" { + #endif + + #if OS_API_VERSION(GS_API_NONE,GS_API_LATEST) + + @interface NSMutableString (GNUstepBase) + - (void) deleteSuffix: (NSString*)suffix; + - (void) deletePrefix: (NSString*)prefix; + - (NSString*) immutableProxy; + - (void) replaceString: (NSString*)replace + withString: (NSString*)by; + - (void) trimLeadSpaces; + - (void) trimTailSpaces; + - (void) trimSpaces; + @end + + #endif /* OS_API_VERSION */ + + #if defined(__cplusplus) + } + #endif + + #endif /* INCLUDED_NSMutableString_GNUstepBase_h */ + diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,56 ---- + /** Declaration of extension methods for base additions + + Copyright (C) 2003-2010 Free Software Foundation, Inc. + + Written by: Richard Frith-Macdonald + and: Adam Fedor + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + + */ + + #ifndef INCLUDED_NSNumber_GNUstepBase_h + #define INCLUDED_NSNumber_GNUstepBase_h + + #import "GSVersionMacros.h" + #import "../Foundation/NSValue.h" + + #if defined(__cplusplus) + extern "C" { + #endif + + #if OS_API_VERSION(GS_API_NONE,GS_API_LATEST) + + @interface NSNumber(GNUstepBase) + /** + * Parses string as a double, int, or unsigned + * int depending on what characters are present. Uses + * atof and atoi which don't report errors, so be + * careful if the string might contain an invalid value. + */ + + (NSValue*) valueFromString: (NSString *)string; + @end + + #endif /* OS_API_VERSION */ + + #if defined(__cplusplus) + } + #endif + + #endif /* INCLUDED_NSNumber_GNUstepBase_h */ + diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,242 ---- + /** Declaration of extension methods for base additions + + Copyright (C) 2003-2010 Free Software Foundation, Inc. + + Written by: Richard Frith-Macdonald + and: Adam Fedor + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + + */ + + #ifndef INCLUDED_NSObject_GNUstepBase_h + #define INCLUDED_NSObject_GNUstepBase_h + + #import "GSVersionMacros.h" + #import "../Foundation/NSObject.h" + + #if defined(__cplusplus) + extern "C" { + #endif + + #if OS_API_VERSION(GS_API_NONE,GS_API_LATEST) + + @class NSHashTable; + + @interface NSObject (GNUstepBase) + + /** + WARNING: The -compare: method for NSObject is deprecated + due to subclasses declaring the same selector with + conflicting signatures. + Comparision of arbitrary objects is not just meaningless + but also dangerous as most concrete implementations + expect comparable objects as arguments often accessing + instance variables directly. + This method will be removed in a future release. + */ + - (NSComparisonResult) compare: (id)anObject; + + /** For backward compatibility only ... use class_isMetaClass() on the + * class of the receiver instead. + */ + - (BOOL) isInstance; + + /** DEPRECATED ... do not use. + * Transmutes the receiver into an immutable version of the same object + * and returns the result.
+ * If the receiver is not a mutable object or cannot be simply transmuted, + * then this method either returns the receiver unchanged or, + * if the force flag is set to YES, returns an autoreleased copy of the + * receiver.
+ * Mutable classes should override this default implementation.
+ * This method is used in methods which are declared to return immutable + * objects (eg. an NSArray), but which create and build mutable ones + * internally. + */ + - (id) makeImmutableCopyOnFail: (BOOL)force; + + /** Transmutes the receiver into an immutable version of the same object. + * Returns YES if the receiver has become immutable, NO otherwise.
+ * The default implementation returns NO.
+ * Mutable classes which have an immutable counterpart they can efficiently + * change into, should override to transmute themselves and return YES.
+ * Immutable classes should override this to simply return YES with no + * further action.
+ * This method is used in methods which are declared to return immutable + * objects (eg. an NSArray), but which create and build mutable ones + * internally. + */ + - (BOOL) makeImmutable; + + /** + * Message sent when an implementation wants to explicitly exclude a method + * (but cannot due to compiler constraint), and wants to make sure it is not + * called by mistake. Default implementation raises an exception at runtime. + */ + - (id) notImplemented: (SEL)aSel GS_NORETURN_METHOD; + + /** + * Message sent when an implementation wants to explicitly require a subclass + * to implement a method (but cannot at compile time since there is no + * abstract keyword in Objective-C). Default implementation + * raises an exception at runtime to alert developer that he/she forgot to + * override a method. + */ + - (id) subclassResponsibility: (SEL)aSel GS_NORETURN_METHOD; + + /** + * Message sent when an implementation wants to explicitly exclude a method + * (but cannot due to compiler constraint) and forbid that subclasses + * implement it. Default implementation raises an exception at runtime. If a + * subclass does implement this method, however, the superclass's + * implementation will not be called, so this is not a perfect mechanism. + */ + - (id) shouldNotImplement: (SEL)aSel GS_NORETURN_METHOD; + + @end + + /** This is an informal protocol ... classes may implement the method to + * report how much memory is used by the instance and any objects it acts + * as a container for. + */ + @interface NSObject(MemoryFootprint) + /* This method returns the memory usage of the receiver, excluding any + * objects already present in the exclude table.
+ * The argument is a hash table configured to hold non-retained pointer + * objects and is used to inform the receiver that its size should not + * be counted again if it's already in the table.
+ * The NSObject implementation returns zero if the receiver is in the + * table, but otherwise adds itself to the table and returns its memory + * footprint (the sum of all of its instance variables, but not any + * memory pointed to by those variables).
+ * Subclasses should override this method by calling the superclass + * implementation, and either return the result (if it was zero) or + * return that value plus the sizes of any memory owned by the receiver + * (eg found by calling the same method on objects pointed to by the + * receiver's instance variables). + */ + - (NSUInteger) sizeInBytesExcluding: (NSHashTable*)exclude; + @end + + /** This is an informal protocol ... classes may implement the method and + * register themselves to have it called on process exit. + */ + @interface NSObject(GSAtExit) + /** This method is called on exit for any class which implements it and which + * has called +registerAtExit to register it to be called.
+ * The order in which methods for different classes is called is the reverse + * of the order in which the classes were registered, but it's best to assume + * the method can not depend on any other class being in a usable state + * at the point when the method is called (rather like +load).
+ * Typical use would be to release memory occupied by class data structures + * so that memory usage analysis software will not think the memory has + * been leaked. + */ + + (void) atExit; + @end + + /** Category for methods handling leaked memory cleanup on exit of process + * (for use when debugging memory leaks).
+ * You enable this by calling the +setShouldCleanUp: method (done implicitly + * by gnustep-base if the GNUSTEP_SHOULD_CLEAN_UP environment variable is + * set to YES).
+ * Your class then has two options for performing cleanup when the process + * ends: + *

1. Use the +leak: method to register objects which are simply to be + * retained until the process ends, and then either ignored or released + * depending on the cleanup setting in force. This mechanism is simple + * and should be sufficient for many classes. + *

+ *

2. Implement a +atExit method to be run when the process ends and, + * within your +initialize implementation, call +shouldCleanUp to determine + * whether cleanup should be done, and if it returns YES then call + * +registerAtExit to have your +atExit method called when the process + * terminates. + *

+ *

The order in which 'leaked' objects are released and +atExit methods + * are called on process exist is the reverse of the order in which they + * werse set up suing this API. + *

+ */ + @interface NSObject(GSCleanup) + + + /** This method simply retains its argument so that it will never be + * deallocated during normal operation, but keeps track of it so that + * it is released during process exit if cleanup is enabled.
+ * Returns its argument. + */ + + (id) NS_RETURNS_RETAINED leak: (id)anObject; + + /** This method retains the object at *anAddress so that it will never be + * deallocated during normal operation, but keeps track of the address + * so that the object is released and the address is zeroed during process + * exit if cleanup is enabled.
+ * Returns the object at *anAddress. + */ + + (id) NS_RETURNS_RETAINED leakAt: (id*)anAddress; + + /** Sets the receiver to have its +atExit method called at the point when + * the process terminates.
+ * Returns YES on success and NO on failure (if the class does not implement + * the method or if it is already registered to call it).
+ * Implemented as a call to +registerAtExit: with the selector for the +atExit + * method as its argument. + */ + + (BOOL) registerAtExit; + + /** Sets the receiver to have the specified method called at the point when + * the process terminates.
+ * Returns YES on success and NO on failure (if the class does not implement + * the method ir if it is already registered to call it). + */ + + (BOOL) registerAtExit: (SEL)aSelector; + + /** Specifies the default cleanup behavior on process exit ... the value + * returned by the NSObject implementation of the +shouldClanUp method.
+ * Calling this method with a YES argument implicitly calls the +enableAtExit + * method as well.
+ * The GNUstep Base library calls this method with the value obtained from + * the GNUSTEP_SHOULD_CLEAN_UP environment variable when NSObject is + * initialised. + */ + + (void) setShouldCleanUp: (BOOL)aFlag; + + /** Returns a flag indicating whether the receiver should clean up + * its data structures etc at process exit.
+ * The NSObject implementation returns the value set by the +setShouldCleanUp: + * method but subclasses may override this. + */ + + (BOOL) shouldCleanUp; + + @end + + /* Macro to take an autoreleased object and either make it immutable or + * create an autoreleased copy of the original. + */ + #define GS_IMMUTABLE(O) ([O makeImmutable] == YES ? O : AUTORELEASE([O copy])) + + #endif /* OS_API_VERSION */ + + #if defined(__cplusplus) + } + #endif + + #endif /* INCLUDED_NSObject_GNUstepBase_h */ + diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h *** gcc-7.4.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h Sun Sep 15 02:38:25 2019 *************** *** 0 **** --- 1,105 ---- + /** Declaration of extension methods for base additions + + Copyright (C) 2003-2010 Free Software Foundation, Inc. + + Written by: Richard Frith-Macdonald + and: Adam Fedor + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, 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 + Library General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. + + */ + + #ifndef INCLUDED_NSString_GNUstepBase_h + #define INCLUDED_NSString_GNUstepBase_h + + #import "GSVersionMacros.h" + #import "../Foundation/NSString.h" + + #if defined(__cplusplus) + extern "C" { + #endif + + #if OS_API_VERSION(GS_API_NONE,GS_API_LATEST) + + /** + * Provides some additional (non-standard) utility methods. + */ + @interface NSString (GNUstepBase) + + /** + * Alternate way to invoke stringWithFormat if you have or wish + * to build an explicit va_list structure. + */ + + (id) stringWithFormat: (NSString*)format + arguments: (va_list)argList NS_FORMAT_FUNCTION(1,0); + + /** + * Returns a string formed by removing the prefix string from the + * receiver. Raises an exception if the prefix is not present. + */ + - (NSString*) stringByDeletingPrefix: (NSString*)prefix; + + /** + * Returns a string formed by removing the suffix string from the + * receiver. Raises an exception if the suffix is not present. + */ + - (NSString*) stringByDeletingSuffix: (NSString*)suffix; + + /** + * Returns a string formed by removing leading white space from the + * receiver. + */ + - (NSString*) stringByTrimmingLeadSpaces; + + /** + * Returns a string formed by removing trailing white space from the + * receiver. + */ + - (NSString*) stringByTrimmingTailSpaces; + + /** + * Returns a string formed by removing both leading and trailing + * white space from the receiver. + */ + - (NSString*) stringByTrimmingSpaces; + + /** + * Returns a string in which any (and all) occurrences of + * replace in the receiver have been replaced with by. + * Returns the receiver if replace + * does not occur within the receiver. NB. an empty string is + * not considered to exist within the receiver. + */ + - (NSString*) stringByReplacingString: (NSString*)replace + withString: (NSString*)by; + + /** + * An obsolete name for -substringWithRange: ... deprecated. + */ + - (NSString*) substringFromRange: (NSRange)aRange; + + @end + + #endif /* OS_API_VERSION */ + + #if defined(__cplusplus) + } + #endif + + #endif /* INCLUDED_NSString_GNUstepBase_h */ + diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/encode-7-next-64bit.m gcc-7.5.0/gcc/testsuite/objc.dg/encode-7-next-64bit.m *** gcc-7.4.0/gcc/testsuite/objc.dg/encode-7-next-64bit.m Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/objc.dg/encode-7-next-64bit.m Sun Sep 15 02:38:25 2019 *************** *** 9,18 **** #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) { --- 9,19 ---- #include #include #include ! #include ! #include "../objc-obj-c++-shared/F-NSObject.h" ! #include "../objc-obj-c++-shared/CF-CFString.h" #include "../objc-obj-c++-shared/runtime.h" void CHECK_IF(const char *s1, const char *s2) { if (strcmp(s1,s2) != 0) { diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/headers.m gcc-7.5.0/gcc/testsuite/objc.dg/headers.m *** gcc-7.4.0/gcc/testsuite/objc.dg/headers.m Mon Jun 6 22:46:58 2011 --- gcc-7.5.0/gcc/testsuite/objc.dg/headers.m Sun Sep 15 02:38:25 2019 *************** *** 2,7 **** --- 2,8 ---- // test in libstdc++-v3). Author: Loren J. Rittle . // { dg-options "-Wall -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wshadow" } // { dg-do compile } + /* { dg-xfail-if "PR90709" { *-*-darwin1[4-9]* } { "-fnext-runtime" } { "" } } */ #ifdef __NEXT_RUNTIME__ #include diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/image-info.m gcc-7.5.0/gcc/testsuite/objc.dg/image-info.m *** gcc-7.4.0/gcc/testsuite/objc.dg/image-info.m Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/objc.dg/image-info.m Sun Sep 15 02:38:25 2019 *************** *** 7,13 **** /* { dg-skip-if "NeXT-only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-freplace-objc-classes" } */ ! #include extern void abort(void); #define CHECK_IF(expr) if(!(expr)) abort(); --- 7,13 ---- /* { dg-skip-if "NeXT-only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-freplace-objc-classes" } */ ! #include "../objc-obj-c++-shared/F-NSObject.h" extern void abort(void); #define CHECK_IF(expr) if(!(expr)) abort(); diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/instancetype-0.m gcc-7.5.0/gcc/testsuite/objc.dg/instancetype-0.m *** gcc-7.4.0/gcc/testsuite/objc.dg/instancetype-0.m Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/gcc/testsuite/objc.dg/instancetype-0.m Thu Sep 5 19:06:44 2019 *************** *** 0 **** --- 1,30 ---- + /* Contributed by Iain Sandoe , May 2019. */ + /* { dg-do compile } */ + + /* Basic check of parsing instancetype. */ + + extern id class_createInstance (id, int); + extern id class_getSuperclass (id); + + @interface MyObject + { + Class isa; + } + + (instancetype)alloc; + - (instancetype)init; + + (instancetype)initialize; + + (instancetype)factoryMethodA; + + (id)factoryMethodB; + + (Class) class; + + (Class) superclass; + @end + + @implementation MyObject + + (instancetype)alloc { return class_createInstance (self, 0); } + - (instancetype)init { return self; } + + (instancetype)initialize { return self; } + + (instancetype)factoryMethodA { return [[[self class] alloc] init]; } + + (id)factoryMethodB { return [[[self class] alloc] init]; } + + (Class) class { return self; } + + (Class) superclass { return class_getSuperclass (self); } + @end diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/isa-field-1.m gcc-7.5.0/gcc/testsuite/objc.dg/isa-field-1.m *** gcc-7.4.0/gcc/testsuite/objc.dg/isa-field-1.m Mon Jun 6 22:46:58 2011 --- gcc-7.5.0/gcc/testsuite/objc.dg/isa-field-1.m Sun Sep 15 02:38:25 2019 *************** *** 1,5 **** --- 1,7 ---- /* Ensure there are no bizarre difficulties with accessing the 'isa' field of objects. */ /* { dg-do compile } */ + /* The use of isa is deprecated, but we still want to test that it works. */ + /* { dg-additional-options "-Wno-deprecated-declarations" } */ #include "../objc-obj-c++-shared/TestsuiteObject.h" #include "../objc-obj-c++-shared/runtime.h" diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/method-6.m gcc-7.5.0/gcc/testsuite/objc.dg/method-6.m *** gcc-7.4.0/gcc/testsuite/objc.dg/method-6.m Wed Apr 19 06:55:33 2017 --- gcc-7.5.0/gcc/testsuite/objc.dg/method-6.m Sun Sep 15 02:38:25 2019 *************** *** 5,16 **** /* { dg-options "-Wstrict-selector-match" } */ #ifdef __NEXT_RUNTIME__ ! #include ! #define OBJECT NSObject #else ! #include ! #include ! #define OBJECT Object #endif @interface Base --- 5,16 ---- /* { dg-options "-Wstrict-selector-match" } */ #ifdef __NEXT_RUNTIME__ ! # include "../objc-obj-c++-shared/F-NSObject.h" ! # define OBJECT NSObject #else ! # include ! # include ! # define OBJECT Object #endif @interface Base diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/no-extra-load.m gcc-7.5.0/gcc/testsuite/objc.dg/no-extra-load.m *** gcc-7.4.0/gcc/testsuite/objc.dg/no-extra-load.m Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/objc.dg/no-extra-load.m Sun Sep 15 02:38:25 2019 *************** *** 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" } } */ --- 1,7 ---- /* { dg-do compile { target *-*-darwin* } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ ! #include "../objc-obj-c++-shared/F-NSObject.h" main() { [NSObject new]; } /* { dg-final { scan-assembler-not "L_objc_msgSend\\\$non_lazy_ptr" } } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/objc-foreach-4.m gcc-7.5.0/gcc/testsuite/objc.dg/objc-foreach-4.m *** gcc-7.4.0/gcc/testsuite/objc.dg/objc-foreach-4.m Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/objc.dg/objc-foreach-4.m Sun Sep 15 02:38:25 2019 *************** *** 5,13 **** /* { 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 --- 5,13 ---- /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ /* { dg-additional-options "-framework Foundation" { target { *-*-darwin* } } } */ ! #include "../objc-obj-c++-shared/F-NSString.h" ! #include "../objc-obj-c++-shared/F-NSAutoreleasePool.h" ! #include "../objc-obj-c++-shared/F-NSArray.h" // gcc -o foo foo.m -framework Foundation diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/objc-foreach-5.m gcc-7.5.0/gcc/testsuite/objc.dg/objc-foreach-5.m *** gcc-7.4.0/gcc/testsuite/objc.dg/objc-foreach-5.m Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/objc.dg/objc-foreach-5.m Sun Sep 15 02:38:25 2019 *************** *** 4,11 **** /* { 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]; --- 4,12 ---- /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ /* { dg-additional-options "-framework Foundation" { target { *-*-darwin* } } } */ ! #include "../objc-obj-c++-shared/F-NSArray.h" ! #include "../objc-obj-c++-shared/F-NSAutoreleasePool.h" ! #include "../objc-obj-c++-shared/F-NSValue.h" NSArray * createTestVictim(unsigned capacity) { NSMutableArray * arr = [[NSMutableArray alloc] initWithCapacity:capacity]; diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/objc-gc-4.m gcc-7.5.0/gcc/testsuite/objc.dg/objc-gc-4.m *** gcc-7.4.0/gcc/testsuite/objc.dg/objc-gc-4.m Mon Jun 6 22:46:58 2011 --- gcc-7.5.0/gcc/testsuite/objc.dg/objc-gc-4.m Sun Sep 15 02:38:25 2019 *************** *** 3,8 **** --- 3,9 ---- /* Contributed by Ziemowit Laski */ /* { dg-do compile } */ + /* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-8]* } { "-fnext-runtime" } { "" } } */ /* { dg-options "-fobjc-gc" } */ /* { dg-prune-output "cc1obj: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */ diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/proto-lossage-7.m gcc-7.5.0/gcc/testsuite/objc.dg/proto-lossage-7.m *** gcc-7.4.0/gcc/testsuite/objc.dg/proto-lossage-7.m Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/objc.dg/proto-lossage-7.m Sun Sep 15 02:38:25 2019 *************** *** 3,9 **** /* { dg-do compile } */ #ifdef __NEXT_RUNTIME__ ! #include #define OBJECT NSObject #else #include --- 3,9 ---- /* { dg-do compile } */ #ifdef __NEXT_RUNTIME__ ! #include "../objc-obj-c++-shared/F-NSObject.h" #define OBJECT NSObject #else #include diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/strings/const-cfstring-2.m gcc-7.5.0/gcc/testsuite/objc.dg/strings/const-cfstring-2.m *** gcc-7.4.0/gcc/testsuite/objc.dg/strings/const-cfstring-2.m Fri Oct 22 10:30:29 2010 --- gcc-7.5.0/gcc/testsuite/objc.dg/strings/const-cfstring-2.m Sun Sep 15 02:38:25 2019 *************** *** 8,15 **** /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mconstant-cfstrings -Wnonportable-cfstrings" } */ ! #import ! #import #ifndef __CONSTANT_CFSTRINGS__ #error The -fconstant-cfstrings option is not functioning properly --- 8,15 ---- /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mconstant-cfstrings -Wnonportable-cfstrings" } */ ! #include "../../objc-obj-c++-shared/F-NSString.h" ! #include "../../objc-obj-c++-shared/CF-CFString.h" #ifndef __CONSTANT_CFSTRINGS__ #error The -fconstant-cfstrings option is not functioning properly diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/strings/const-cfstring-5.m gcc-7.5.0/gcc/testsuite/objc.dg/strings/const-cfstring-5.m *** gcc-7.4.0/gcc/testsuite/objc.dg/strings/const-cfstring-5.m Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/objc.dg/strings/const-cfstring-5.m Sun Sep 15 02:38:25 2019 *************** *** 6,12 **** /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mconstant-cfstrings" } */ ! #include @interface Foo: NSObject { char *cString; --- 6,12 ---- /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mconstant-cfstrings" } */ ! #include "../../objc-obj-c++-shared/F-NSObject.h" @interface Foo: NSObject { char *cString; diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/strings/const-str-12b.m gcc-7.5.0/gcc/testsuite/objc.dg/strings/const-str-12b.m *** gcc-7.4.0/gcc/testsuite/objc.dg/strings/const-str-12b.m Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/objc.dg/strings/const-str-12b.m Sun Sep 15 02:38:25 2019 *************** *** 6,16 **** /* { 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" --- 6,16 ---- /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ #ifdef __NEXT_RUNTIME__ ! # include "../../objc-obj-c++-shared/F-NSObject.h" ! # define OBJECT NSObject #else ! # include ! # define OBJECT Object #endif #include "../../objc-obj-c++-shared/objc-test-suite-types.h" diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/stubify-1.m gcc-7.5.0/gcc/testsuite/objc.dg/stubify-1.m *** gcc-7.4.0/gcc/testsuite/objc.dg/stubify-1.m Tue Apr 27 00:08:28 2010 --- gcc-7.5.0/gcc/testsuite/objc.dg/stubify-1.m Fri Nov 1 20:30:26 2019 *************** *** 4,10 **** /* { dg-do compile { target *-*-darwin* } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-require-effective-target ilp32 } */ ! /* { dg-options "-Os -mdynamic-no-pic -mmacosx-version-min=10.4" } */ typedef struct objc_object { } *id ; int x = 41 ; --- 4,10 ---- /* { dg-do compile { target *-*-darwin* } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-require-effective-target ilp32 } */ ! /* { dg-options "-Os -mdynamic-no-pic -mmacosx-version-min=10.4 -msymbol-stubs" } */ typedef struct objc_object { } *id ; int x = 41 ; diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/stubify-2.m gcc-7.5.0/gcc/testsuite/objc.dg/stubify-2.m *** gcc-7.4.0/gcc/testsuite/objc.dg/stubify-2.m Tue Apr 27 00:08:28 2010 --- gcc-7.5.0/gcc/testsuite/objc.dg/stubify-2.m Fri Nov 1 20:30:26 2019 *************** *** 4,10 **** /* { dg-do compile { target powerpc*-*-darwin* } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-require-effective-target ilp32 } */ ! /* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4" } */ typedef struct objc_object { } *id ; int x = 41 ; --- 4,10 ---- /* { dg-do compile { target powerpc*-*-darwin* } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-require-effective-target ilp32 } */ ! /* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4 -msymbol-stubs" } */ typedef struct objc_object { } *id ; int x = 41 ; diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/symtab-1.m gcc-7.5.0/gcc/testsuite/objc.dg/symtab-1.m *** gcc-7.4.0/gcc/testsuite/objc.dg/symtab-1.m Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/objc.dg/symtab-1.m Sun Sep 15 02:38:25 2019 *************** *** 4,10 **** /* { dg-do compile { target { *-*-darwin* } } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ ! #include @interface Base: NSObject - (void)setValues; --- 4,10 ---- /* { dg-do compile { target { *-*-darwin* } } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ ! #include "../objc-obj-c++-shared/F-NSObject.h" @interface Base: NSObject - (void)setValues; diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m gcc-7.5.0/gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m *** gcc-7.4.0/gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m Thu Nov 4 18:19:54 2010 --- gcc-7.5.0/gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m Sun Sep 15 02:38:25 2019 *************** *** 13,20 **** Well, we don't implement writable ones at this juncture. */ /* { dg-options "-mconstant-cfstrings -framework Cocoa -Wl,-w" { target *-*-darwin[123]* } } */ ! #import ! #import #include void printOut(NSString *str) { --- 13,20 ---- Well, we don't implement writable ones at this juncture. */ /* { dg-options "-mconstant-cfstrings -framework Cocoa -Wl,-w" { target *-*-darwin[123]* } } */ ! #include "../../../objc-obj-c++-shared/F-NSString.h" ! #include "../../../objc-obj-c++-shared/CF-CFString.h" #include void printOut(NSString *str) { diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/torture/strings/const-str-10.m gcc-7.5.0/gcc/testsuite/objc.dg/torture/strings/const-str-10.m *** gcc-7.4.0/gcc/testsuite/objc.dg/torture/strings/const-str-10.m Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/objc.dg/torture/strings/const-str-10.m Sun Sep 15 02:38:25 2019 *************** *** 6,12 **** /* { 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 --- 6,13 ---- /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ ! #include "../../../objc-obj-c++-shared/F-NSObject.h" ! #include #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ @interface NSString: NSObject diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/torture/strings/const-str-11.m gcc-7.5.0/gcc/testsuite/objc.dg/torture/strings/const-str-11.m *** gcc-7.4.0/gcc/testsuite/objc.dg/torture/strings/const-str-11.m Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/objc.dg/torture/strings/const-str-11.m Sun Sep 15 02:38:25 2019 *************** *** 7,13 **** /* { 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 { --- 7,13 ---- /* { dg-options "-fconstant-string-class=XStr" } */ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */ ! #include "../../../objc-obj-c++-shared/F-NSObject.h" #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ @interface XString: NSObject { diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/torture/strings/const-str-9.m gcc-7.5.0/gcc/testsuite/objc.dg/torture/strings/const-str-9.m *** gcc-7.4.0/gcc/testsuite/objc.dg/torture/strings/const-str-9.m Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/objc.dg/torture/strings/const-str-9.m Sun Sep 15 02:38:25 2019 *************** *** 5,11 **** /* { 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 { --- 5,11 ---- /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ ! #include "../../../objc-obj-c++-shared/F-NSObject.h" #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ @interface NSConstantString: NSObject { diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/zero-link-1.m gcc-7.5.0/gcc/testsuite/objc.dg/zero-link-1.m *** gcc-7.4.0/gcc/testsuite/objc.dg/zero-link-1.m Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/objc.dg/zero-link-1.m Sun Sep 15 02:38:25 2019 *************** *** 5,11 **** /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-fzero-link" } */ ! #include extern void abort(void); #define CHECK_IF(expr) if(!(expr)) abort(); --- 5,11 ---- /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-fzero-link" } */ ! #include "../objc-obj-c++-shared/F-NSObject.h" extern void abort(void); #define CHECK_IF(expr) if(!(expr)) abort(); diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/zero-link-2.m gcc-7.5.0/gcc/testsuite/objc.dg/zero-link-2.m *** gcc-7.4.0/gcc/testsuite/objc.dg/zero-link-2.m Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/objc.dg/zero-link-2.m Sun Sep 15 02:38:25 2019 *************** *** 5,11 **** /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-fno-zero-link" } */ ! #include extern void abort(void); #define CHECK_IF(expr) if(!(expr)) abort(); --- 5,11 ---- /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-fno-zero-link" } */ ! #include "../objc-obj-c++-shared/F-NSObject.h" extern void abort(void); #define CHECK_IF(expr) if(!(expr)) abort(); diff -Nrcpad gcc-7.4.0/gcc/testsuite/objc.dg/zero-link-3.m gcc-7.5.0/gcc/testsuite/objc.dg/zero-link-3.m *** gcc-7.4.0/gcc/testsuite/objc.dg/zero-link-3.m Tue Jul 16 10:41:30 2013 --- gcc-7.5.0/gcc/testsuite/objc.dg/zero-link-3.m Sun Sep 15 02:38:25 2019 *************** *** 7,18 **** /* { 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); --- 7,18 ---- /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ #ifdef __NEXT_RUNTIME__ ! # include "../objc-obj-c++-shared/F-NSObject.h" ! # define OBJECT NSObject #else ! # include ! # include ! # define OBJECT Object #endif extern void abort(void); diff -Nrcpad gcc-7.4.0/gcc/toplev.c gcc-7.5.0/gcc/toplev.c *** gcc-7.4.0/gcc/toplev.c Fri Sep 15 08:18:34 2017 --- gcc-7.5.0/gcc/toplev.c Fri Aug 30 12:07:12 2019 *************** do_compile () *** 1981,1986 **** --- 1981,2016 ---- else int_n_enabled_p[i] = false; + /* Initialize mpfrs exponent range. This is important to get + underflow/overflow in a reasonable timeframe. */ + machine_mode mode; + int min_exp = -1; + int max_exp = 1; + for (mode = GET_CLASS_NARROWEST_MODE (MODE_FLOAT); + mode != VOIDmode; + mode = GET_MODE_WIDER_MODE (mode)) + if (SCALAR_FLOAT_MODE_P (mode)) + { + const real_format *fmt = REAL_MODE_FORMAT (mode); + if (fmt) + { + /* fmt->emin - fmt->p + 1 should be enough but the + back-and-forth dance in real_to_decimal_for_mode we + do for checking fails due to rounding effects then. */ + if ((fmt->emin - fmt->p) < min_exp) + min_exp = fmt->emin - fmt->p; + if (fmt->emax > max_exp) + max_exp = fmt->emax; + } + } + /* E.g. mpc_norm assumes it can square a number without bothering with + with range scaling, so until that is fixed, double the minimum + and maximum exponents, plus add some buffer for arithmetics + on the squared numbers. */ + if (mpfr_set_emin (2 * (min_exp - 1)) + || mpfr_set_emax (2 * (max_exp + 1))) + sorry ("mpfr not configured to handle all float modes"); + /* Set up the back-end if requested. */ if (!no_backend) backend_init (); diff -Nrcpad gcc-7.4.0/gcc/tree-cfg.c gcc-7.5.0/gcc/tree-cfg.c *** gcc-7.4.0/gcc/tree-cfg.c Mon Nov 26 11:59:05 2018 --- gcc-7.5.0/gcc/tree-cfg.c Thu Sep 5 12:11:52 2019 *************** remove_bb (basic_block bb) *** 2170,2176 **** } new_bb = bb->prev_bb; ! new_gsi = gsi_start_bb (new_bb); gsi_remove (&i, false); gsi_insert_before (&new_gsi, stmt, GSI_NEW_STMT); } --- 2170,2176 ---- } new_bb = bb->prev_bb; ! new_gsi = gsi_after_labels (new_bb); gsi_remove (&i, false); gsi_insert_before (&new_gsi, stmt, GSI_NEW_STMT); } *************** gimple_can_duplicate_bb_p (const_basic_b *** 5989,5995 **** preserve SSA form. */ static basic_block ! gimple_duplicate_bb (basic_block bb) { basic_block new_bb; gimple_stmt_iterator gsi_tgt; --- 5989,5995 ---- preserve SSA form. */ static basic_block ! gimple_duplicate_bb (basic_block bb, copy_bb_data *id) { basic_block new_bb; gimple_stmt_iterator gsi_tgt; *************** gimple_duplicate_bb (basic_block bb) *** 6053,6058 **** --- 6053,6091 ---- && (!VAR_P (base) || !DECL_HAS_VALUE_EXPR_P (base))) DECL_NONSHAREABLE (base) = 1; } + + /* If requested remap dependence info of cliques brought in + via inlining. */ + if (id) + for (unsigned i = 0; i < gimple_num_ops (copy); ++i) + { + tree op = gimple_op (copy, i); + if (!op) + continue; + if (TREE_CODE (op) == ADDR_EXPR + || TREE_CODE (op) == WITH_SIZE_EXPR) + op = TREE_OPERAND (op, 0); + while (handled_component_p (op)) + op = TREE_OPERAND (op, 0); + if ((TREE_CODE (op) == MEM_REF + || TREE_CODE (op) == TARGET_MEM_REF) + && MR_DEPENDENCE_CLIQUE (op) > 1 + && MR_DEPENDENCE_CLIQUE (op) != bb->loop_father->owned_clique) + { + if (!id->dependence_map) + id->dependence_map = new hash_map; + bool existed; + unsigned short &newc = id->dependence_map->get_or_insert + (MR_DEPENDENCE_CLIQUE (op), &existed); + if (!existed) + { + gcc_assert (MR_DEPENDENCE_CLIQUE (op) <= cfun->last_clique); + newc = ++cfun->last_clique; + } + MR_DEPENDENCE_CLIQUE (op) = newc; + } + } /* Create new names for all the definitions created by COPY and add replacement mappings for each new name. */ *************** move_block_to_fn (struct function *dest_ *** 6914,6920 **** if (virtual_operand_p (op)) { /* Remove the phi nodes for virtual operands (alias analysis will be ! run for the new function, anyway). */ remove_phi_node (&psi, true); continue; } --- 6947,6960 ---- if (virtual_operand_p (op)) { /* Remove the phi nodes for virtual operands (alias analysis will be ! run for the new function, anyway). But replace all uses that ! might be outside of the region we move. */ ! use_operand_p use_p; ! imm_use_iterator iter; ! gimple *use_stmt; ! FOR_EACH_IMM_USE_STMT (use_stmt, iter, op) ! FOR_EACH_IMM_USE_ON_STMT (use_p, iter) ! SET_USE (use_p, SSA_NAME_VAR (op)); remove_phi_node (&psi, true); continue; } *************** move_block_to_fn (struct function *dest_ *** 7002,7012 **** } /* Examine the statements in BB (which is in SRC_CFUN); find and return ! the outermost EH region. Use REGION as the incoming base EH region. */ static eh_region find_outermost_region_in_block (struct function *src_cfun, ! basic_block bb, eh_region region) { gimple_stmt_iterator si; --- 7042,7055 ---- } /* Examine the statements in BB (which is in SRC_CFUN); find and return ! the outermost EH region. Use REGION as the incoming base EH region. ! If there is no single outermost region, return NULL and set *ALL to ! true. */ static eh_region find_outermost_region_in_block (struct function *src_cfun, ! basic_block bb, eh_region region, ! bool *all) { gimple_stmt_iterator si; *************** find_outermost_region_in_block (struct f *** 7025,7031 **** else if (stmt_region != region) { region = eh_region_outermost (src_cfun, stmt_region, region); ! gcc_assert (region != NULL); } } } --- 7068,7078 ---- else if (stmt_region != region) { region = eh_region_outermost (src_cfun, stmt_region, region); ! if (region == NULL) ! { ! *all = true; ! return NULL; ! } } } } *************** move_sese_region_to_fn (struct function *** 7319,7330 **** if (saved_cfun->eh) { eh_region region = NULL; FOR_EACH_VEC_ELT (bbs, i, bb) ! region = find_outermost_region_in_block (saved_cfun, bb, region); init_eh_for_function (); ! if (region != NULL) { new_label_map = htab_create (17, tree_map_hash, tree_map_eq, free); eh_map = duplicate_eh_regions (saved_cfun, region, 0, --- 7366,7382 ---- if (saved_cfun->eh) { eh_region region = NULL; + bool all = false; FOR_EACH_VEC_ELT (bbs, i, bb) ! { ! region = find_outermost_region_in_block (saved_cfun, bb, region, &all); ! if (all) ! break; ! } init_eh_for_function (); ! if (region != NULL || all) { new_label_map = htab_create (17, tree_map_hash, tree_map_eq, free); eh_map = duplicate_eh_regions (saved_cfun, region, 0, diff -Nrcpad gcc-7.4.0/gcc/tree-complex.c gcc-7.5.0/gcc/tree-complex.c *** gcc-7.4.0/gcc/tree-complex.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/tree-complex.c Wed Sep 4 08:06:24 2019 *************** static vec complex_ssa_name_compon *** 75,80 **** --- 75,83 ---- non-SSA_NAME/non-invariant args that need to be replaced by SSA_NAMEs. */ static vec phis_to_revisit; + /* BBs that need EH cleanup. */ + static bitmap need_eh_cleanup; + /* Lookup UID in the complex_variable_components hashtable and return the associated tree. */ static tree *************** update_complex_components_on_edge (edge *** 690,702 **** static void update_complex_assignment (gimple_stmt_iterator *gsi, tree r, tree i) { ! gimple *stmt; ! gimple_assign_set_rhs_with_ops (gsi, COMPLEX_EXPR, r, i); ! stmt = gsi_stmt (*gsi); update_stmt (stmt); ! if (maybe_clean_eh_stmt (stmt)) ! gimple_purge_dead_eh_edges (gimple_bb (stmt)); if (gimple_in_ssa_p (cfun)) update_complex_components (gsi, gsi_stmt (*gsi), r, i); --- 693,704 ---- static void update_complex_assignment (gimple_stmt_iterator *gsi, tree r, tree i) { ! gimple *old_stmt = gsi_stmt (*gsi); gimple_assign_set_rhs_with_ops (gsi, COMPLEX_EXPR, r, i); ! gimple *stmt = gsi_stmt (*gsi); update_stmt (stmt); ! if (maybe_clean_or_replace_eh_stmt (old_stmt, stmt)) ! bitmap_set_bit (need_eh_cleanup, gimple_bb (stmt)->index); if (gimple_in_ssa_p (cfun)) update_complex_components (gsi, gsi_stmt (*gsi), r, i); *************** expand_complex_comparison (gimple_stmt_i *** 1451,1456 **** --- 1453,1460 ---- } update_stmt (stmt); + if (maybe_clean_eh_stmt (stmt)) + bitmap_set_bit (need_eh_cleanup, gimple_bb (stmt)->index); } /* Expand inline asm that sets some complex SSA_NAMEs. */ *************** tree_lower_complex (void) *** 1668,1673 **** --- 1672,1679 ---- init_parameter_lattice_values (); ssa_propagate (complex_visit_stmt, complex_visit_phi); + need_eh_cleanup = BITMAP_ALLOC (NULL); + complex_variable_components = new int_tree_htab_type (10); complex_ssa_name_components.create (2 * num_ssa_names); *************** tree_lower_complex (void) *** 1711,1721 **** gsi_commit_edge_inserts (); delete complex_variable_components; complex_variable_components = NULL; complex_ssa_name_components.release (); complex_lattice_values.release (); ! return 0; } namespace { --- 1717,1731 ---- gsi_commit_edge_inserts (); + unsigned todo + = gimple_purge_all_dead_eh_edges (need_eh_cleanup) ? TODO_cleanup_cfg : 0; + BITMAP_FREE (need_eh_cleanup); + delete complex_variable_components; complex_variable_components = NULL; complex_ssa_name_components.release (); complex_lattice_values.release (); ! return todo; } namespace { diff -Nrcpad gcc-7.4.0/gcc/tree-core.h gcc-7.5.0/gcc/tree-core.h *** gcc-7.4.0/gcc/tree-core.h Wed Apr 12 07:35:49 2017 --- gcc-7.5.0/gcc/tree-core.h Thu Sep 5 12:11:52 2019 *************** struct GTY(()) tree_base { *** 977,983 **** expression trees and specify known data non-dependences. For two memory references in a function they are known to not alias if dependence_info.clique are equal and dependence_info.base ! are distinct. */ struct { unsigned short clique; unsigned short base; --- 977,985 ---- expression trees and specify known data non-dependences. For two memory references in a function they are known to not alias if dependence_info.clique are equal and dependence_info.base ! are distinct. Clique number zero means there is no information, ! clique number one is populated from function global information ! and thus needs no remapping on transforms like loop unrolling. */ struct { unsigned short clique; unsigned short base; *************** struct GTY(()) tree_base { *** 1138,1143 **** --- 1140,1148 ---- OMP_CLAUSE_LINEAR_VARIABLE_STRIDE in OMP_CLAUSE_LINEAR + ASM_INLINE_P in + ASM_EXPR + side_effects_flag: TREE_SIDE_EFFECTS in *************** struct GTY(()) tree_decl_common { *** 1611,1616 **** --- 1616,1622 ---- /* In a VAR_DECL and PARM_DECL, this is DECL_READ_P. */ unsigned decl_read_flag : 1; /* In a VAR_DECL or RESULT_DECL, this is DECL_NONSHAREABLE. */ + /* In a PARM_DECL, this is DECL_HIDDEN_STRING_LENGTH. */ unsigned decl_nonshareable_flag : 1; /* DECL_OFFSET_ALIGN, used only for FIELD_DECLs. */ diff -Nrcpad gcc-7.4.0/gcc/tree-data-ref.c gcc-7.5.0/gcc/tree-data-ref.c *** gcc-7.4.0/gcc/tree-data-ref.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/tree-data-ref.c Thu Sep 5 12:11:52 2019 *************** object_address_invariant_in_loop_p (cons *** 1396,1402 **** bool dr_may_alias_p (const struct data_reference *a, const struct data_reference *b, ! bool loop_nest) { tree addr_a = DR_BASE_OBJECT (a); tree addr_b = DR_BASE_OBJECT (b); --- 1396,1402 ---- bool dr_may_alias_p (const struct data_reference *a, const struct data_reference *b, ! struct loop *loop_nest) { tree addr_a = DR_BASE_OBJECT (a); tree addr_b = DR_BASE_OBJECT (b); *************** dr_may_alias_p (const struct data_refere *** 1420,1425 **** --- 1420,1430 ---- if ((TREE_CODE (addr_a) == MEM_REF || TREE_CODE (addr_a) == TARGET_MEM_REF) && (TREE_CODE (addr_b) == MEM_REF || TREE_CODE (addr_b) == TARGET_MEM_REF) + /* For cross-iteration dependences the cliques must be valid for the + whole loop, not just individual iterations. */ + && (!loop_nest + || MR_DEPENDENCE_CLIQUE (addr_a) == 1 + || MR_DEPENDENCE_CLIQUE (addr_a) == loop_nest->owned_clique) && MR_DEPENDENCE_CLIQUE (addr_a) == MR_DEPENDENCE_CLIQUE (addr_b) && MR_DEPENDENCE_BASE (addr_a) != MR_DEPENDENCE_BASE (addr_b)) return false; *************** initialize_data_dependence_relation (str *** 1500,1506 **** } /* If the data references do not alias, then they are independent. */ ! if (!dr_may_alias_p (a, b, loop_nest.exists ())) { DDR_ARE_DEPENDENT (res) = chrec_known; return res; --- 1505,1511 ---- } /* If the data references do not alias, then they are independent. */ ! if (!dr_may_alias_p (a, b, loop_nest.exists () ? loop_nest[0] : NULL)) { DDR_ARE_DEPENDENT (res) = chrec_known; return res; *************** initialize_matrix_A (lambda_matrix A, tr *** 2118,2123 **** --- 2123,2130 ---- switch (TREE_CODE (chrec)) { case POLYNOMIAL_CHREC: + if (!cst_and_fits_in_hwi (CHREC_RIGHT (chrec))) + return chrec_dont_know; A[index][0] = mult * int_cst_value (CHREC_RIGHT (chrec)); return initialize_matrix_A (A, CHREC_LEFT (chrec), index + 1, mult); *************** analyze_subscript_affine_affine (tree ch *** 2499,2505 **** tree *last_conflicts) { unsigned nb_vars_a, nb_vars_b, dim; ! HOST_WIDE_INT init_a, init_b, gamma, gcd_alpha_beta; lambda_matrix A, U, S; struct obstack scratch_obstack; --- 2506,2512 ---- tree *last_conflicts) { unsigned nb_vars_a, nb_vars_b, dim; ! HOST_WIDE_INT gamma, gcd_alpha_beta; lambda_matrix A, U, S; struct obstack scratch_obstack; *************** analyze_subscript_affine_affine (tree ch *** 2536,2544 **** A = lambda_matrix_new (dim, 1, &scratch_obstack); S = lambda_matrix_new (dim, 1, &scratch_obstack); ! init_a = int_cst_value (initialize_matrix_A (A, chrec_a, 0, 1)); ! init_b = int_cst_value (initialize_matrix_A (A, chrec_b, nb_vars_a, -1)); ! gamma = init_b - init_a; /* Don't do all the hard work of solving the Diophantine equation when we already know the solution: for example, --- 2543,2562 ---- A = lambda_matrix_new (dim, 1, &scratch_obstack); S = lambda_matrix_new (dim, 1, &scratch_obstack); ! tree init_a = initialize_matrix_A (A, chrec_a, 0, 1); ! tree init_b = initialize_matrix_A (A, chrec_b, nb_vars_a, -1); ! if (init_a == chrec_dont_know ! || init_b == chrec_dont_know) ! { ! if (dump_file && (dump_flags & TDF_DETAILS)) ! fprintf (dump_file, "affine-affine test failed: " ! "representation issue.\n"); ! *overlaps_a = conflict_fn_not_known (); ! *overlaps_b = conflict_fn_not_known (); ! *last_conflicts = chrec_dont_know; ! goto end_analyze_subs_aa; ! } ! gamma = int_cst_value (init_b) - int_cst_value (init_a); /* Don't do all the hard work of solving the Diophantine equation when we already know the solution: for example, diff -Nrcpad gcc-7.4.0/gcc/tree-data-ref.h gcc-7.5.0/gcc/tree-data-ref.h *** gcc-7.4.0/gcc/tree-data-ref.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/tree-data-ref.h Thu Sep 5 12:11:52 2019 *************** extern tree find_data_references_in_bb ( *** 338,344 **** vec *); extern bool dr_may_alias_p (const struct data_reference *, ! const struct data_reference *, bool); extern bool dr_equal_offsets_p (struct data_reference *, struct data_reference *); --- 338,344 ---- vec *); extern bool dr_may_alias_p (const struct data_reference *, ! const struct data_reference *, struct loop *); extern bool dr_equal_offsets_p (struct data_reference *, struct data_reference *); diff -Nrcpad gcc-7.4.0/gcc/tree-inline.c gcc-7.5.0/gcc/tree-inline.c *** gcc-7.4.0/gcc/tree-inline.c Fri Oct 12 13:41:56 2018 --- gcc-7.5.0/gcc/tree-inline.c Thu Sep 5 12:11:52 2019 *************** remap_type_1 (tree type, copy_body_data *** 569,574 **** --- 569,660 ---- return new_tree; } + /* Helper function for remap_type_2, called through walk_tree. */ + + static tree + remap_type_3 (tree *tp, int *walk_subtrees, void *data) + { + copy_body_data *id = (copy_body_data *) data; + + if (TYPE_P (*tp)) + *walk_subtrees = 0; + + else if (DECL_P (*tp) && remap_decl (*tp, id) != *tp) + return *tp; + + return NULL_TREE; + } + + /* Return true if TYPE needs to be remapped because remap_decl on any + needed embedded decl returns something other than that decl. */ + + static bool + remap_type_2 (tree type, copy_body_data *id) + { + tree t; + + #define RETURN_TRUE_IF_VAR(T) \ + do \ + { \ + tree _t = (T); \ + if (_t) \ + { \ + if (DECL_P (_t) && remap_decl (_t, id) != _t) \ + return true; \ + if (!TYPE_SIZES_GIMPLIFIED (type) \ + && walk_tree (&_t, remap_type_3, id, NULL)) \ + return true; \ + } \ + } \ + while (0) + + switch (TREE_CODE (type)) + { + case POINTER_TYPE: + case REFERENCE_TYPE: + case FUNCTION_TYPE: + case METHOD_TYPE: + return remap_type_2 (TREE_TYPE (type), id); + + case INTEGER_TYPE: + case REAL_TYPE: + case FIXED_POINT_TYPE: + case ENUMERAL_TYPE: + case BOOLEAN_TYPE: + RETURN_TRUE_IF_VAR (TYPE_MIN_VALUE (type)); + RETURN_TRUE_IF_VAR (TYPE_MAX_VALUE (type)); + return false; + + case ARRAY_TYPE: + if (remap_type_2 (TREE_TYPE (type), id) + || (TYPE_DOMAIN (type) && remap_type_2 (TYPE_DOMAIN (type), id))) + return true; + break; + + case RECORD_TYPE: + case UNION_TYPE: + case QUAL_UNION_TYPE: + for (t = TYPE_FIELDS (type); t; t = DECL_CHAIN (t)) + if (TREE_CODE (t) == FIELD_DECL) + { + RETURN_TRUE_IF_VAR (DECL_FIELD_OFFSET (t)); + RETURN_TRUE_IF_VAR (DECL_SIZE (t)); + RETURN_TRUE_IF_VAR (DECL_SIZE_UNIT (t)); + if (TREE_CODE (type) == QUAL_UNION_TYPE) + RETURN_TRUE_IF_VAR (DECL_QUALIFIER (t)); + } + break; + + default: + return false; + } + + RETURN_TRUE_IF_VAR (TYPE_SIZE (type)); + RETURN_TRUE_IF_VAR (TYPE_SIZE_UNIT (type)); + return false; + #undef RETURN_TRUE_IF_VAR + } + tree remap_type (tree type, copy_body_data *id) { *************** remap_type (tree type, copy_body_data *i *** 584,590 **** return *node; /* The type only needs remapping if it's variably modified. */ ! if (! variably_modified_type_p (type, id->src_fn)) { insert_decl_map (id, type, type); return type; --- 670,679 ---- return *node; /* The type only needs remapping if it's variably modified. */ ! if (! variably_modified_type_p (type, id->src_fn) ! /* Don't remap if copy_decl method doesn't always return a new ! decl and for all embedded decls returns the passed in decl. */ ! || (id->dont_remap_vla_if_no_change && !remap_type_2 (type, id))) { insert_decl_map (id, type, type); return type; *************** remap_dependence_clique (copy_body_data *** 859,865 **** bool existed; unsigned short &newc = id->dependence_map->get_or_insert (clique, &existed); if (!existed) ! newc = ++cfun->last_clique; return newc; } --- 948,959 ---- bool existed; unsigned short &newc = id->dependence_map->get_or_insert (clique, &existed); if (!existed) ! { ! /* Clique 1 is reserved for local ones set by PTA. */ ! if (cfun->last_clique == 0) ! cfun->last_clique = 1; ! newc = ++cfun->last_clique; ! } return newc; } *************** copy_loops (copy_body_data *id, *** 2629,2635 **** dest_loop->simduid = remap_decl (src_loop->simduid, id); cfun->has_simduid_loops = true; } ! /* Recurse. */ copy_loops (id, dest_loop, src_loop); } --- 2723,2733 ---- dest_loop->simduid = remap_decl (src_loop->simduid, id); cfun->has_simduid_loops = true; } ! if (id->src_cfun->last_clique != 0) ! dest_loop->owned_clique ! = remap_dependence_clique (id, ! src_loop->owned_clique ! ? src_loop->owned_clique : 1); /* Recurse. */ copy_loops (id, dest_loop, src_loop); } *************** estimate_num_insns (gimple *stmt, eni_we *** 4173,4178 **** --- 4271,4279 ---- with very long asm statements. */ if (count > 1000) count = 1000; + /* If this asm is asm inline, count anything as minimum size. */ + if (gimple_asm_inline_p (as_a (stmt))) + count = MIN (1, count); return count; } diff -Nrcpad gcc-7.4.0/gcc/tree-inline.h gcc-7.5.0/gcc/tree-inline.h *** gcc-7.4.0/gcc/tree-inline.h Tue Mar 28 17:24:57 2017 --- gcc-7.5.0/gcc/tree-inline.h Fri Aug 30 12:33:00 2019 *************** struct copy_body_data *** 119,124 **** --- 119,131 ---- /* > 0 if we are remapping a type currently. */ int remapping_type_depth; + /* Usually copy_decl callback always creates new decls, in that case + we want to remap all variably_modified_type_p types. If this flag + is set, remap_type will do further checks to see if remap_decl + of any decls mentioned in the type will remap to anything but itself + and only in that case will actually remap the type. */ + bool dont_remap_vla_if_no_change; + /* A function to be called when duplicating BLOCK nodes. */ void (*transform_lang_insert_block) (tree); diff -Nrcpad gcc-7.4.0/gcc/tree-loop-distribution.c gcc-7.5.0/gcc/tree-loop-distribution.c *** gcc-7.4.0/gcc/tree-loop-distribution.c Tue Mar 14 12:47:42 2017 --- gcc-7.5.0/gcc/tree-loop-distribution.c Fri Aug 30 12:02:02 2019 *************** along with GCC; see the file COPYING3. *** 64,69 **** --- 64,70 ---- #include "cfgloop.h" #include "tree-scalar-evolution.h" #include "tree-vectorizer.h" + #include "tree-eh.h" /* A Reduced Dependence Graph (RDG) vertex representing a statement. */ *************** generate_memset_builtin (struct loop *lo *** 815,820 **** --- 816,822 ---- nb_bytes = build_size_arg_loc (loc, partition->main_dr, partition->niter, partition->plus_one); + nb_bytes = rewrite_to_non_trapping_overflow (nb_bytes); nb_bytes = force_gimple_operand_gsi (&gsi, nb_bytes, true, NULL_TREE, false, GSI_CONTINUE_LINKING); mem = build_addr_arg_loc (loc, partition->main_dr, nb_bytes); *************** generate_memcpy_builtin (struct loop *lo *** 871,876 **** --- 873,879 ---- nb_bytes = build_size_arg_loc (loc, partition->main_dr, partition->niter, partition->plus_one); + nb_bytes = rewrite_to_non_trapping_overflow (nb_bytes); nb_bytes = force_gimple_operand_gsi (&gsi, nb_bytes, true, NULL_TREE, false, GSI_CONTINUE_LINKING); dest = build_addr_arg_loc (loc, partition->main_dr, nb_bytes); diff -Nrcpad gcc-7.4.0/gcc/tree-outof-ssa.c gcc-7.5.0/gcc/tree-outof-ssa.c *** gcc-7.4.0/gcc/tree-outof-ssa.c Mon Feb 13 21:56:13 2017 --- gcc-7.5.0/gcc/tree-outof-ssa.c Fri Aug 30 12:44:03 2019 *************** get_temp_reg (tree name) *** 651,656 **** --- 651,658 ---- tree type = TREE_TYPE (name); int unsignedp; machine_mode reg_mode = promote_ssa_mode (name, &unsignedp); + if (reg_mode == BLKmode) + return assign_temp (type, 0, 0); rtx x = gen_reg_rtx (reg_mode); if (POINTER_TYPE_P (type)) mark_reg_pointer (x, TYPE_ALIGN (TREE_TYPE (type))); diff -Nrcpad gcc-7.4.0/gcc/tree-scalar-evolution.c gcc-7.5.0/gcc/tree-scalar-evolution.c *** gcc-7.4.0/gcc/tree-scalar-evolution.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/tree-scalar-evolution.c Mon Sep 2 14:14:14 2019 *************** along with GCC; see the file COPYING3. *** 280,285 **** --- 280,286 ---- #include "params.h" #include "tree-ssa-propagate.h" #include "gimple-fold.h" + #include "tree-into-ssa.h" static tree analyze_scalar_evolution_1 (struct loop *, tree, tree); static tree analyze_scalar_evolution_for_address_of (struct loop *loop, *************** get_loop_exit_condition (const struct lo *** 866,872 **** gimple *stmt; stmt = last_stmt (exit_edge->src); ! if (gcond *cond_stmt = dyn_cast (stmt)) res = cond_stmt; } --- 867,873 ---- gimple *stmt; stmt = last_stmt (exit_edge->src); ! if (gcond *cond_stmt = safe_dyn_cast (stmt)) res = cond_stmt; } *************** simplify_peeled_chrec (struct loop *loop *** 1412,1417 **** --- 1413,1423 ---- return build_polynomial_chrec (loop->num, init_cond, right); } + /* The affine code only deals with pointer and integer types. */ + if (!POINTER_TYPE_P (type) + && !INTEGRAL_TYPE_P (type)) + return chrec_dont_know; + /* Try harder to check if they are equal. */ tree_to_aff_combination_expand (left, type, &aff1, &peeled_chrec_map); tree_to_aff_combination_expand (step_val, type, &aff2, &peeled_chrec_map); *************** static tree *** 1532,1538 **** follow_copies_to_constant (tree var) { tree res = var; ! while (TREE_CODE (res) == SSA_NAME) { gimple *def = SSA_NAME_DEF_STMT (res); if (gphi *phi = dyn_cast (def)) --- 1538,1547 ---- follow_copies_to_constant (tree var) { tree res = var; ! while (TREE_CODE (res) == SSA_NAME ! /* We face not updated SSA form in multiple places and this walk ! may end up in sibling loops so we have to guard it. */ ! && !name_registered_for_update_p (res)) { gimple *def = SSA_NAME_DEF_STMT (res); if (gphi *phi = dyn_cast (def)) diff -Nrcpad gcc-7.4.0/gcc/tree-sra.c gcc-7.5.0/gcc/tree-sra.c *** gcc-7.4.0/gcc/tree-sra.c Wed May 31 08:45:23 2017 --- gcc-7.5.0/gcc/tree-sra.c Wed Aug 21 13:44:45 2019 *************** compare_access_positions (const void *a, *** 1516,1534 **** && TREE_CODE (f2->type) != COMPLEX_TYPE && TREE_CODE (f2->type) != VECTOR_TYPE) return -1; ! /* Put the integral type with the bigger precision first. */ else if (INTEGRAL_TYPE_P (f1->type) && INTEGRAL_TYPE_P (f2->type)) - return TYPE_PRECISION (f2->type) - TYPE_PRECISION (f1->type); - /* Put any integral type with non-full precision last. */ - else if (INTEGRAL_TYPE_P (f1->type) - && (TREE_INT_CST_LOW (TYPE_SIZE (f1->type)) - != TYPE_PRECISION (f1->type))) return 1; ! else if (INTEGRAL_TYPE_P (f2->type) ! && (TREE_INT_CST_LOW (TYPE_SIZE (f2->type)) ! != TYPE_PRECISION (f2->type))) ! return -1; /* Stabilize the sort. */ return TYPE_UID (f1->type) - TYPE_UID (f2->type); } --- 1516,1535 ---- && TREE_CODE (f2->type) != COMPLEX_TYPE && TREE_CODE (f2->type) != VECTOR_TYPE) return -1; ! /* Put any integral type before any non-integral type. When splicing, we ! make sure that those with insufficient precision and occupying the ! same space are not scalarized. */ else if (INTEGRAL_TYPE_P (f1->type) + && !INTEGRAL_TYPE_P (f2->type)) + return -1; + else if (!INTEGRAL_TYPE_P (f1->type) && INTEGRAL_TYPE_P (f2->type)) return 1; ! /* Put the integral type with the bigger precision first. */ ! else if (INTEGRAL_TYPE_P (f1->type) ! && INTEGRAL_TYPE_P (f2->type) ! && (TYPE_PRECISION (f2->type) != TYPE_PRECISION (f1->type))) ! return TYPE_PRECISION (f2->type) - TYPE_PRECISION (f1->type); /* Stabilize the sort. */ return TYPE_UID (f1->type) - TYPE_UID (f2->type); } *************** sort_and_splice_var_accesses (tree var) *** 2029,2034 **** --- 2030,2040 ---- bool grp_partial_lhs = access->grp_partial_lhs; bool first_scalar = is_gimple_reg_type (access->type); bool unscalarizable_region = access->grp_unscalarizable_region; + bool bf_non_full_precision + = (INTEGRAL_TYPE_P (access->type) + && TYPE_PRECISION (access->type) != access->size + && TREE_CODE (access->expr) == COMPONENT_REF + && DECL_BIT_FIELD (TREE_OPERAND (access->expr, 1))); if (first || access->offset >= high) { *************** sort_and_splice_var_accesses (tree var) *** 2076,2081 **** --- 2082,2103 ---- this combination of size and offset, the comparison function should have put the scalars first. */ gcc_assert (first_scalar || !is_gimple_reg_type (ac2->type)); + /* It also prefers integral types to non-integral. However, when the + precision of the selected type does not span the entire area and + should also be used for a non-integer (i.e. float), we must not + let that happen. Normally analyze_access_subtree expands the type + to cover the entire area but for bit-fields it doesn't. */ + if (bf_non_full_precision && !INTEGRAL_TYPE_P (ac2->type)) + { + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, "Cannot scalarize the following access " + "because insufficient precision integer type was " + "selected.\n "); + dump_access (dump_file, access, false); + } + unscalarizable_region = true; + } ac2->group_representative = access; j++; } diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-copy.c gcc-7.5.0/gcc/tree-ssa-copy.c *** gcc-7.4.0/gcc/tree-ssa-copy.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/tree-ssa-copy.c Fri Jun 28 21:01:56 2019 *************** fini_copy_prop (void) *** 532,544 **** duplicate_ssa_name_ptr_info (copy_of[i].value, SSA_NAME_PTR_INFO (var)); /* Points-to information is cfg insensitive, ! but alignment info might be cfg sensitive, if it ! e.g. is derived from VRP derived non-zero bits. ! So, do not copy alignment info if the two SSA_NAMEs ! aren't defined in the same basic block. */ if (var_bb != copy_of_bb) ! mark_ptr_info_alignment_unknown ! (SSA_NAME_PTR_INFO (copy_of[i].value)); } else if (!POINTER_TYPE_P (TREE_TYPE (var)) && SSA_NAME_RANGE_INFO (var) --- 532,543 ---- duplicate_ssa_name_ptr_info (copy_of[i].value, SSA_NAME_PTR_INFO (var)); /* Points-to information is cfg insensitive, ! but [E]VRP might record context sensitive alignment ! info, non-nullness, etc. So reset context sensitive ! info if the two SSA_NAMEs aren't defined in the same ! basic block. */ if (var_bb != copy_of_bb) ! reset_flow_sensitive_info (copy_of[i].value); } else if (!POINTER_TYPE_P (TREE_TYPE (var)) && SSA_NAME_RANGE_INFO (var) diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-dom.c gcc-7.5.0/gcc/tree-ssa-dom.c *** gcc-7.4.0/gcc/tree-ssa-dom.c Tue Apr 11 13:44:24 2017 --- gcc-7.5.0/gcc/tree-ssa-dom.c Tue Mar 26 11:18:26 2019 *************** pass_dominator::execute (function *fun) *** 531,537 **** if (bb == NULL) continue; while (single_succ_p (bb) ! && (single_succ_edge (bb)->flags & EDGE_EH) == 0) bb = single_succ (bb); if (bb == EXIT_BLOCK_PTR_FOR_FN (fun)) continue; --- 531,538 ---- if (bb == NULL) continue; while (single_succ_p (bb) ! && (single_succ_edge (bb)->flags ! & (EDGE_EH|EDGE_DFS_BACK)) == 0) bb = single_succ (bb); if (bb == EXIT_BLOCK_PTR_FOR_FN (fun)) continue; diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-forwprop.c gcc-7.5.0/gcc/tree-ssa-forwprop.c *** gcc-7.4.0/gcc/tree-ssa-forwprop.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/tree-ssa-forwprop.c Mon Sep 2 12:56:24 2019 *************** pass_forwprop::execute (function *fun) *** 2427,2432 **** --- 2427,2434 ---- { int did_something; did_something = forward_propagate_into_comparison (&gsi); + if (maybe_clean_or_replace_eh_stmt (stmt, gsi_stmt (gsi))) + bitmap_set_bit (to_purge, bb->index); if (did_something == 2) cfg_changed = true; changed = did_something != 0; diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-loop-ch.c gcc-7.5.0/gcc/tree-ssa-loop-ch.c *** gcc-7.4.0/gcc/tree-ssa-loop-ch.c Tue Nov 20 14:47:49 2018 --- gcc-7.5.0/gcc/tree-ssa-loop-ch.c Mon Sep 2 14:14:14 2019 *************** should_duplicate_loop_header_p (basic_bl *** 99,105 **** } last = last_stmt (header); ! if (gimple_code (last) != GIMPLE_COND) { if (dump_file && (dump_flags & TDF_DETAILS)) fprintf (dump_file, --- 99,105 ---- } last = last_stmt (header); ! if (!last || gimple_code (last) != GIMPLE_COND) { if (dump_file && (dump_flags & TDF_DETAILS)) fprintf (dump_file, *************** ch_base::copy_headers (function *fun) *** 373,383 **** { gimple *stmt = gsi_stmt (bsi); if (gimple_code (stmt) == GIMPLE_COND) ! gimple_set_no_warning (stmt, true); else if (is_gimple_assign (stmt)) { enum tree_code rhs_code = gimple_assign_rhs_code (stmt); ! if (TREE_CODE_CLASS (rhs_code) == tcc_comparison) gimple_set_no_warning (stmt, true); } } --- 373,395 ---- { gimple *stmt = gsi_stmt (bsi); if (gimple_code (stmt) == GIMPLE_COND) ! { ! tree lhs = gimple_cond_lhs (stmt); ! if (gimple_cond_code (stmt) != EQ_EXPR ! && gimple_cond_code (stmt) != NE_EXPR ! && INTEGRAL_TYPE_P (TREE_TYPE (lhs)) ! && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (lhs))) ! gimple_set_no_warning (stmt, true); ! } else if (is_gimple_assign (stmt)) { enum tree_code rhs_code = gimple_assign_rhs_code (stmt); ! tree rhs1 = gimple_assign_rhs1 (stmt); ! if (TREE_CODE_CLASS (rhs_code) == tcc_comparison ! && rhs_code != EQ_EXPR ! && rhs_code != NE_EXPR ! && INTEGRAL_TYPE_P (TREE_TYPE (rhs1)) ! && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (rhs1))) gimple_set_no_warning (stmt, true); } } diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-loop-ivcanon.c gcc-7.5.0/gcc/tree-ssa-loop-ivcanon.c *** gcc-7.4.0/gcc/tree-ssa-loop-ivcanon.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/tree-ssa-loop-ivcanon.c Mon Sep 2 14:14:14 2019 *************** canonicalize_loop_induction_variables (s *** 1131,1137 **** niter = number_of_latch_executions (loop); exit = single_exit (loop); if (TREE_CODE (niter) == INTEGER_CST) ! locus = gimple_location (last_stmt (exit->src)); else { /* If the loop has more than one exit, try checking all of them --- 1131,1137 ---- niter = number_of_latch_executions (loop); exit = single_exit (loop); if (TREE_CODE (niter) == INTEGER_CST) ! locus = gimple_location_safe (last_stmt (exit->src)); else { /* If the loop has more than one exit, try checking all of them *************** canonicalize_loop_induction_variables (s *** 1146,1152 **** niter = find_loop_niter_by_eval (loop, &exit); if (exit) ! locus = gimple_location (last_stmt (exit->src)); if (TREE_CODE (niter) != INTEGER_CST) exit = NULL; --- 1146,1152 ---- niter = find_loop_niter_by_eval (loop, &exit); if (exit) ! locus = gimple_location_safe (last_stmt (exit->src)); if (TREE_CODE (niter) != INTEGER_CST) exit = NULL; diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-loop-ivopts.c gcc-7.5.0/gcc/tree-ssa-loop-ivopts.c *** gcc-7.4.0/gcc/tree-ssa-loop-ivopts.c Mon Apr 10 16:54:14 2017 --- gcc-7.5.0/gcc/tree-ssa-loop-ivopts.c Mon Sep 2 10:10:44 2019 *************** struct ivopts_data *** 566,571 **** --- 566,574 ---- /* The common candidates. */ vec iv_common_cands; + /* Hash map recording base object information of tree exp. */ + hash_map *base_object_map; + /* The maximum invariant id. */ unsigned max_inv_id; *************** tree_ssa_iv_optimize_init (struct ivopts *** 1066,1124 **** data->inv_expr_tab = new hash_table (10); data->max_inv_expr_id = 0; data->name_expansion_cache = NULL; data->iv_common_cand_tab = new hash_table (10); data->iv_common_cands.create (20); decl_rtl_to_reset.create (20); gcc_obstack_init (&data->iv_obstack); } ! /* Returns a memory object to that EXPR points. In case we are able to ! determine that it does not point to any such object, NULL is returned. */ static tree ! determine_base_object (tree expr) { ! enum tree_code code = TREE_CODE (expr); ! tree base, obj; ! ! /* If this is a pointer casted to any type, we need to determine ! the base object for the pointer; so handle conversions before ! throwing away non-pointer expressions. */ ! if (CONVERT_EXPR_P (expr)) ! return determine_base_object (TREE_OPERAND (expr, 0)); ! ! if (!POINTER_TYPE_P (TREE_TYPE (expr))) ! return NULL_TREE; ! ! switch (code) { ! case INTEGER_CST: ! return NULL_TREE; ! ! case ADDR_EXPR: ! obj = TREE_OPERAND (expr, 0); ! base = get_base_address (obj); ! if (!base) ! return expr; ! ! if (TREE_CODE (base) == MEM_REF) ! return determine_base_object (TREE_OPERAND (base, 0)); ! return fold_convert (ptr_type_node, ! build_fold_addr_expr (base)); ! case POINTER_PLUS_EXPR: ! return determine_base_object (TREE_OPERAND (expr, 0)); ! case PLUS_EXPR: ! case MINUS_EXPR: ! /* Pointer addition is done solely using POINTER_PLUS_EXPR. */ ! gcc_unreachable (); ! default: ! return fold_convert (ptr_type_node, expr); } } /* Return true if address expression with non-DECL_P operand appears --- 1069,1136 ---- data->inv_expr_tab = new hash_table (10); data->max_inv_expr_id = 0; data->name_expansion_cache = NULL; + data->base_object_map = NULL; data->iv_common_cand_tab = new hash_table (10); data->iv_common_cands.create (20); decl_rtl_to_reset.create (20); gcc_obstack_init (&data->iv_obstack); } ! /* walk_tree callback for determine_base_object. */ static tree ! determine_base_object_1 (tree *tp, int *walk_subtrees, void *wdata) { ! tree_code code = TREE_CODE (*tp); ! tree obj = NULL_TREE; ! if (code == ADDR_EXPR) { ! tree base = get_base_address (TREE_OPERAND (*tp, 0)); if (!base) ! obj = *tp; ! else if (TREE_CODE (base) != MEM_REF) ! obj = fold_convert (ptr_type_node, build_fold_addr_expr (base)); ! } ! else if (code == SSA_NAME && POINTER_TYPE_P (TREE_TYPE (*tp))) ! obj = fold_convert (ptr_type_node, *tp); ! if (!obj) ! { ! if (!EXPR_P (*tp)) ! *walk_subtrees = 0; ! return NULL_TREE; ! } ! /* Record special node for multiple base objects and stop. */ ! if (*static_cast (wdata)) ! { ! *static_cast (wdata) = integer_zero_node; ! return integer_zero_node; ! } ! /* Record the base object and continue looking. */ ! *static_cast (wdata) = obj; ! return NULL_TREE; ! } ! /* Returns a memory object to that EXPR points with caching. Return NULL if we ! are able to determine that it does not point to any such object; specially ! return integer_zero_node if EXPR contains multiple base objects. */ ! static tree ! determine_base_object (struct ivopts_data *data, tree expr) ! { ! tree *slot, obj = NULL_TREE; ! if (data->base_object_map) ! { ! if ((slot = data->base_object_map->get(expr)) != NULL) ! return *slot; } + else + data->base_object_map = new hash_map; + + (void) walk_tree_without_duplicates (&expr, determine_base_object_1, &obj); + data->base_object_map->put (expr, obj); + return obj; } /* Return true if address expression with non-DECL_P operand appears *************** alloc_iv (struct ivopts_data *data, tree *** 1176,1182 **** } iv->base = base; ! iv->base_object = determine_base_object (base); iv->step = step; iv->biv_p = false; iv->nonlin_use = NULL; --- 1188,1194 ---- } iv->base = base; ! iv->base_object = determine_base_object (data, base); iv->step = step; iv->biv_p = false; iv->nonlin_use = NULL; *************** tree_ssa_iv_optimize_finalize (struct iv *** 7728,7733 **** --- 7740,7747 ---- delete data->inv_expr_tab; data->inv_expr_tab = NULL; free_affine_expand_cache (&data->name_expansion_cache); + if (data->base_object_map) + delete data->base_object_map; delete data->iv_common_cand_tab; data->iv_common_cand_tab = NULL; data->iv_common_cands.release (); diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-loop-split.c gcc-7.5.0/gcc/tree-ssa-loop-split.c *** gcc-7.4.0/gcc/tree-ssa-loop-split.c Wed Mar 8 11:35:23 2017 --- gcc-7.5.0/gcc/tree-ssa-loop-split.c Tue Mar 26 13:18:23 2019 *************** tree_ssa_split_loops (void) *** 649,655 **** false, true) && niter.cmp != ERROR_MARK /* We can't yet handle loops controlled by a != predicate. */ ! && niter.cmp != NE_EXPR) { if (split_loop (loop, &niter)) { --- 649,656 ---- false, true) && niter.cmp != ERROR_MARK /* We can't yet handle loops controlled by a != predicate. */ ! && niter.cmp != NE_EXPR ! && can_duplicate_loop_p (loop)) { if (split_loop (loop, &niter)) { diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-math-opts.c gcc-7.5.0/gcc/tree-ssa-math-opts.c *** gcc-7.4.0/gcc/tree-ssa-math-opts.c Fri Dec 22 08:52:28 2017 --- gcc-7.5.0/gcc/tree-ssa-math-opts.c Fri Aug 30 12:36:49 2019 *************** is_division_by (gimple *use_stmt, tree d *** 337,343 **** /* Do not recognize x / x as valid division, as we are getting confused later by replacing all immediate uses x in such a stmt. */ ! && gimple_assign_rhs1 (use_stmt) != def; } /* Walk the subset of the dominator tree rooted at OCC, setting the --- 337,344 ---- /* Do not recognize x / x as valid division, as we are getting confused later by replacing all immediate uses x in such a stmt. */ ! && gimple_assign_rhs1 (use_stmt) != def ! && !stmt_can_throw_internal (use_stmt); } /* Walk the subset of the dominator tree rooted at OCC, setting the diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-phiopt.c gcc-7.5.0/gcc/tree-ssa-phiopt.c *** gcc-7.4.0/gcc/tree-ssa-phiopt.c Fri Dec 22 08:51:26 2017 --- gcc-7.5.0/gcc/tree-ssa-phiopt.c Mon Sep 2 12:56:24 2019 *************** cond_store_replacement (basic_block midd *** 1792,1797 **** --- 1792,1802 ---- || gimple_has_volatile_ops (assign)) return false; + /* And no PHI nodes so all uses in the single stmt are also + available where we insert to. */ + if (!gimple_seq_empty_p (phi_nodes (middle_bb))) + return false; + locus = gimple_location (assign); lhs = gimple_assign_lhs (assign); rhs = gimple_assign_rhs1 (assign); diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-phiprop.c gcc-7.5.0/gcc/tree-ssa-phiprop.c *** gcc-7.4.0/gcc/tree-ssa-phiprop.c Thu Feb 8 13:30:49 2018 --- gcc-7.5.0/gcc/tree-ssa-phiprop.c Thu Oct 24 09:38:56 2019 *************** propagate_with_phi (basic_block bb, gphi *** 338,345 **** && (!type || types_compatible_p (TREE_TYPE (gimple_assign_lhs (use_stmt)), type)) ! /* We cannot replace a load that may throw or is volatile. */ ! && !stmt_can_throw_internal (use_stmt))) continue; /* Check if we can move the loads. The def stmt of the virtual use --- 338,352 ---- && (!type || types_compatible_p (TREE_TYPE (gimple_assign_lhs (use_stmt)), type)) ! /* We cannot replace a load that may throw or is volatile. ! For volatiles the transform can change the number of ! executions if the load is inside a loop but the address ! computations outside (PR91812). We could relax this ! if we guard against that appropriately. For loads that can ! throw we could relax things if the moved loads all are ! known to not throw. */ ! && !stmt_can_throw_internal (use_stmt) ! && !gimple_has_volatile_ops (use_stmt))) continue; /* Check if we can move the loads. The def stmt of the virtual use *************** pass_phiprop::execute (function *fun) *** 495,502 **** bbs = get_all_dominated_blocks (CDI_DOMINATORS, single_succ (ENTRY_BLOCK_PTR_FOR_FN (fun))); FOR_EACH_VEC_ELT (bbs, i, bb) ! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi)) ! did_something |= propagate_with_phi (bb, gsi.phi (), phivn, n); if (did_something) gsi_commit_edge_inserts (); --- 502,515 ---- bbs = get_all_dominated_blocks (CDI_DOMINATORS, single_succ (ENTRY_BLOCK_PTR_FOR_FN (fun))); FOR_EACH_VEC_ELT (bbs, i, bb) ! { ! /* Since we're going to move dereferences across predecessor ! edges avoid blocks with abnormal predecessors. */ ! if (bb_has_abnormal_pred (bb)) ! continue; ! for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi)) ! did_something |= propagate_with_phi (bb, gsi.phi (), phivn, n); ! } if (did_something) gsi_commit_edge_inserts (); diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-pre.c gcc-7.5.0/gcc/tree-ssa-pre.c *** gcc-7.4.0/gcc/tree-ssa-pre.c Tue Mar 6 10:01:52 2018 --- gcc-7.5.0/gcc/tree-ssa-pre.c Mon Sep 2 12:56:24 2019 *************** compute_avail (void) *** 3948,3953 **** --- 3948,3960 ---- continue; } + /* If the REFERENCE traps and there was a preceding + point in the block that might not return avoid + adding the reference to EXP_GEN. */ + if (BB_MAY_NOTRETURN (block) + && vn_reference_may_trap (ref)) + continue; + /* If the value of the reference is not invalidated in this block until it is computed, add the expression to EXP_GEN. */ diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-reassoc.c gcc-7.5.0/gcc/tree-ssa-reassoc.c *** gcc-7.4.0/gcc/tree-ssa-reassoc.c Fri Jun 22 21:19:32 2018 --- gcc-7.5.0/gcc/tree-ssa-reassoc.c Fri Aug 30 16:44:17 2019 *************** eliminate_using_constants (enum tree_cod *** 1012,1018 **** fprintf (dump_file, "Found * 0, removing all other ops\n"); reassociate_stats.ops_eliminated += ops->length () - 1; ! ops->truncate (1); ops->quick_push (oelast); return; } --- 1012,1018 ---- fprintf (dump_file, "Found * 0, removing all other ops\n"); reassociate_stats.ops_eliminated += ops->length () - 1; ! ops->truncate (0); ops->quick_push (oelast); return; } *************** init_range_entry (struct range_entry *r, *** 2140,2146 **** exp_type = boolean_type_node; } ! if (TREE_CODE (arg0) != SSA_NAME) break; loc = gimple_location (stmt); switch (code) --- 2140,2147 ---- exp_type = boolean_type_node; } ! if (TREE_CODE (arg0) != SSA_NAME ! || SSA_NAME_OCCURS_IN_ABNORMAL_PHI (arg0)) break; loc = gimple_location (stmt); switch (code) *************** rewrite_expr_tree_parallel (gassign *stm *** 4593,4598 **** --- 4594,4600 ---- else { stmts[i] = build_and_add_sum (TREE_TYPE (last_rhs1), op1, op2, opcode); + gimple_set_visited (stmts[i], true); } if (dump_file && (dump_flags & TDF_DETAILS)) { diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-sccvn.c gcc-7.5.0/gcc/tree-ssa-sccvn.c *** gcc-7.4.0/gcc/tree-ssa-sccvn.c Wed Nov 28 12:57:58 2018 --- gcc-7.5.0/gcc/tree-ssa-sccvn.c Mon Sep 2 12:56:24 2019 *************** vn_reference_lookup_3 (ao_ref *ref, tree *** 1981,1989 **** tree rhs = gimple_assign_rhs1 (def_stmt); if (TREE_CODE (rhs) == SSA_NAME) rhs = SSA_VAL (rhs); len = native_encode_expr (gimple_assign_rhs1 (def_stmt), buffer, sizeof (buffer), ! (offset - offset2) / BITS_PER_UNIT); if (len > 0 && len * BITS_PER_UNIT >= ref->size) { tree type = vr->type; --- 1981,2000 ---- tree rhs = gimple_assign_rhs1 (def_stmt); if (TREE_CODE (rhs) == SSA_NAME) rhs = SSA_VAL (rhs); + unsigned pad = 0; + enum machine_mode mode = TYPE_MODE (TREE_TYPE (rhs)); + if (BYTES_BIG_ENDIAN + && (SCALAR_INT_MODE_P (mode) + || ALL_SCALAR_FIXED_POINT_MODE_P (mode) + || SCALAR_FLOAT_MODE_P (mode))) + { + /* On big-endian the padding is at the 'front' so + just skip the initial bytes. */ + pad = GET_MODE_SIZE (mode) - size2 / BITS_PER_UNIT; + } len = native_encode_expr (gimple_assign_rhs1 (def_stmt), buffer, sizeof (buffer), ! (offset - offset2) / BITS_PER_UNIT + pad); if (len > 0 && len * BITS_PER_UNIT >= ref->size) { tree type = vr->type; *************** vn_reference_lookup_3 (ao_ref *ref, tree *** 2029,2034 **** --- 2040,2046 ---- base2 = get_ref_base_and_extent (gimple_assign_lhs (def_stmt), &offset2, &size2, &maxsize2, &reverse); + tree def_rhs = gimple_assign_rhs1 (def_stmt); if (!reverse && maxsize2 != -1 && maxsize2 == size2 *************** vn_reference_lookup_3 (ao_ref *ref, tree *** 2041,2051 **** according to endianness. */ && (! INTEGRAL_TYPE_P (vr->type) || ref->size == TYPE_PRECISION (vr->type)) ! && ref->size % BITS_PER_UNIT == 0) { code_helper rcode = BIT_FIELD_REF; tree ops[3]; ! ops[0] = SSA_VAL (gimple_assign_rhs1 (def_stmt)); ops[1] = bitsize_int (ref->size); ops[2] = bitsize_int (offset - offset2); tree val = vn_nary_build_or_lookup (rcode, vr->type, ops); --- 2053,2066 ---- according to endianness. */ && (! INTEGRAL_TYPE_P (vr->type) || ref->size == TYPE_PRECISION (vr->type)) ! && ref->size % BITS_PER_UNIT == 0 ! && (! INTEGRAL_TYPE_P (TREE_TYPE (def_rhs)) ! || (TYPE_PRECISION (TREE_TYPE (def_rhs)) ! == GET_MODE_PRECISION (TYPE_MODE (TREE_TYPE (def_rhs)))))) { code_helper rcode = BIT_FIELD_REF; tree ops[3]; ! ops[0] = SSA_VAL (def_rhs); ops[1] = bitsize_int (ref->size); ops[2] = bitsize_int (offset - offset2); tree val = vn_nary_build_or_lookup (rcode, vr->type, ops); *************** visit_nary_op (tree lhs, gassign *stmt) *** 3572,3578 **** ops[0] = vn_nary_op_lookup_pieces (2, gimple_assign_rhs_code (def), type, ops, NULL); /* We have wider operation available. */ ! if (ops[0]) { unsigned lhs_prec = TYPE_PRECISION (type); unsigned rhs_prec = TYPE_PRECISION (TREE_TYPE (rhs1)); --- 3587,3603 ---- ops[0] = vn_nary_op_lookup_pieces (2, gimple_assign_rhs_code (def), type, ops, NULL); /* We have wider operation available. */ ! if (ops[0] ! /* If the leader is a wrapping operation we can ! insert it for code hoisting w/o introducing ! undefined overflow. If it is not it has to ! be available. See PR86554. */ ! && (TYPE_OVERFLOW_WRAPS (TREE_TYPE (ops[0])) ! || TREE_CODE (ops[0]) != SSA_NAME ! || SSA_NAME_IS_DEFAULT_DEF (ops[0]) ! || dominated_by_p_w_unex ! (gimple_bb (stmt), ! gimple_bb (SSA_NAME_DEF_STMT (ops[0]))))) { unsigned lhs_prec = TYPE_PRECISION (type); unsigned rhs_prec = TYPE_PRECISION (TREE_TYPE (rhs1)); *************** vn_nary_may_trap (vn_nary_op_t nary) *** 5133,5135 **** --- 5158,5211 ---- return false; } + + /* Return true if the reference operation REF may trap. */ + + bool + vn_reference_may_trap (vn_reference_t ref) + { + switch (ref->operands[0].opcode) + { + case MODIFY_EXPR: + case CALL_EXPR: + /* We do not handle calls. */ + case ADDR_EXPR: + /* And toplevel address computations never trap. */ + return false; + default:; + } + + vn_reference_op_t op; + unsigned i; + FOR_EACH_VEC_ELT (ref->operands, i, op) + { + switch (op->opcode) + { + case WITH_SIZE_EXPR: + case TARGET_MEM_REF: + /* Always variable. */ + return true; + case COMPONENT_REF: + if (op->op1 && TREE_CODE (op->op1) == SSA_NAME) + return true; + break; + case ARRAY_RANGE_REF: + case ARRAY_REF: + if (TREE_CODE (op->op0) == SSA_NAME) + return true; + break; + case MEM_REF: + /* Nothing interesting in itself, the base is separate. */ + break; + /* The following are the address bases. */ + case SSA_NAME: + return true; + case ADDR_EXPR: + if (op->op0) + return tree_could_trap_p (TREE_OPERAND (op->op0, 0)); + return false; + default:; + } + } + return false; + } diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-sccvn.h gcc-7.5.0/gcc/tree-ssa-sccvn.h *** gcc-7.4.0/gcc/tree-ssa-sccvn.h Wed May 3 11:22:34 2017 --- gcc-7.5.0/gcc/tree-ssa-sccvn.h Mon Sep 2 12:56:24 2019 *************** vn_reference_t vn_reference_insert_piece *** 237,242 **** --- 237,243 ---- bool vn_nary_op_eq (const_vn_nary_op_t const vno1, const_vn_nary_op_t const vno2); bool vn_nary_may_trap (vn_nary_op_t); + bool vn_reference_may_trap (vn_reference_t); bool vn_reference_eq (const_vn_reference_t const, const_vn_reference_t const); unsigned int get_max_value_id (void); unsigned int get_next_value_id (void); diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-sink.c gcc-7.5.0/gcc/tree-ssa-sink.c *** gcc-7.4.0/gcc/tree-ssa-sink.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/tree-ssa-sink.c Fri Aug 30 16:44:17 2019 *************** statement_sink_location (gimple *stmt, b *** 431,437 **** if (sinkbb == frombb) return false; ! *togsi = gsi_for_stmt (use); return true; } --- 431,440 ---- if (sinkbb == frombb) return false; ! if (sinkbb == gimple_bb (use)) ! *togsi = gsi_for_stmt (use); ! else ! *togsi = gsi_after_labels (sinkbb); return true; } diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-strlen.c gcc-7.5.0/gcc/tree-ssa-strlen.c *** gcc-7.4.0/gcc/tree-ssa-strlen.c Wed Jan 17 11:43:56 2018 --- gcc-7.5.0/gcc/tree-ssa-strlen.c Fri Aug 30 12:18:54 2019 *************** valid_builtin_call (gimple *stmt) *** 936,945 **** --- 936,953 ---- return false; tree callee = gimple_call_fndecl (stmt); + tree decl = builtin_decl_explicit (DECL_FUNCTION_CODE (callee)); + if (decl + && decl != callee + && !gimple_builtin_call_types_compatible_p (stmt, decl)) + return false; + switch (DECL_FUNCTION_CODE (callee)) { case BUILT_IN_MEMCMP: case BUILT_IN_MEMCMP_EQ: + case BUILT_IN_STRCMP: + case BUILT_IN_STRNCMP: case BUILT_IN_STRCHR: case BUILT_IN_STRCHR_CHKP: case BUILT_IN_STRLEN: *************** valid_builtin_call (gimple *stmt) *** 964,969 **** --- 972,979 ---- case BUILT_IN_STPCPY_CHK: case BUILT_IN_STPCPY_CHKP: case BUILT_IN_STPCPY_CHK_CHKP: + case BUILT_IN_STPNCPY: + case BUILT_IN_STPNCPY_CHK: case BUILT_IN_STRCAT: case BUILT_IN_STRCAT_CHK: case BUILT_IN_STRCAT_CHKP: *************** valid_builtin_call (gimple *stmt) *** 972,977 **** --- 982,991 ---- case BUILT_IN_STRCPY_CHK: case BUILT_IN_STRCPY_CHKP: case BUILT_IN_STRCPY_CHK_CHKP: + case BUILT_IN_STRNCAT: + case BUILT_IN_STRNCAT_CHK: + case BUILT_IN_STRNCPY: + case BUILT_IN_STRNCPY_CHK: /* The above functions should be neither const nor pure. Punt if they aren't. */ if (gimple_vdef (stmt) == NULL_TREE || gimple_vuse (stmt) == NULL_TREE) diff -Nrcpad gcc-7.4.0/gcc/tree-ssa-structalias.c gcc-7.5.0/gcc/tree-ssa-structalias.c *** gcc-7.4.0/gcc/tree-ssa-structalias.c Mon Nov 26 13:31:21 2018 --- gcc-7.5.0/gcc/tree-ssa-structalias.c Thu Sep 5 12:11:52 2019 *************** set_uids_in_ptset (bitmap into, bitmap f *** 6322,6328 **** && bitmap_bit_p (escaped_vi->solution, i))) { pt->vars_contains_escaped = true; ! pt->vars_contains_escaped_heap = vi->is_heap_var; } if (vi->is_restrict_var) --- 6322,6328 ---- && bitmap_bit_p (escaped_vi->solution, i))) { pt->vars_contains_escaped = true; ! pt->vars_contains_escaped_heap |= vi->is_heap_var; } if (vi->is_restrict_var) *************** maybe_set_dependence_info (tree ref, tre *** 7365,7371 **** if (MR_DEPENDENCE_CLIQUE (ref) == 0) { if (clique == 0) ! clique = ++cfun->last_clique; if (restrict_var->ruid == 0) restrict_var->ruid = ++last_ruid; MR_DEPENDENCE_CLIQUE (ref) = clique; --- 7365,7375 ---- if (MR_DEPENDENCE_CLIQUE (ref) == 0) { if (clique == 0) ! { ! if (cfun->last_clique == 0) ! cfun->last_clique = 1; ! clique = 1; ! } if (restrict_var->ruid == 0) restrict_var->ruid = ++last_ruid; MR_DEPENDENCE_CLIQUE (ref) = clique; *************** maybe_set_dependence_info (tree ref, tre *** 7376,7387 **** --- 7380,7421 ---- return false; } + /* Clear dependence info for the clique DATA. */ + + static bool + clear_dependence_clique (gimple *, tree base, tree, void *data) + { + unsigned short clique = (uintptr_t)data; + if ((TREE_CODE (base) == MEM_REF + || TREE_CODE (base) == TARGET_MEM_REF) + && MR_DEPENDENCE_CLIQUE (base) == clique) + { + MR_DEPENDENCE_CLIQUE (base) = 0; + MR_DEPENDENCE_BASE (base) = 0; + } + + return false; + } + /* Compute the set of independend memory references based on restrict tags and their conservative propagation to the points-to sets. */ static void compute_dependence_clique (void) { + /* First clear the special "local" clique. */ + basic_block bb; + if (cfun->last_clique != 0) + FOR_EACH_BB_FN (bb, cfun) + for (gimple_stmt_iterator gsi = gsi_start_bb (bb); + !gsi_end_p (gsi); gsi_next (&gsi)) + { + gimple *stmt = gsi_stmt (gsi); + walk_stmt_load_store_ops (stmt, (void *)(uintptr_t) 1, + clear_dependence_clique, + clear_dependence_clique); + } + unsigned short clique = 0; unsigned short last_ruid = 0; bitmap rvars = BITMAP_ALLOC (NULL); *************** compute_dependence_clique (void) *** 7456,7462 **** } if (used) { ! bitmap_set_bit (rvars, restrict_var->id); varinfo_t escaped = get_varinfo (find (escaped_id)); if (bitmap_bit_p (escaped->solution, restrict_var->id)) escaped_p = true; --- 7490,7499 ---- } if (used) { ! /* Add all subvars to the set of restrict pointed-to set. */ ! for (unsigned sv = restrict_var->head; sv != 0; ! sv = get_varinfo (sv)->next) ! bitmap_set_bit (rvars, sv); varinfo_t escaped = get_varinfo (find (escaped_id)); if (bitmap_bit_p (escaped->solution, restrict_var->id)) escaped_p = true; diff -Nrcpad gcc-7.4.0/gcc/tree-ssanames.c gcc-7.5.0/gcc/tree-ssanames.c *** gcc-7.4.0/gcc/tree-ssanames.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/gcc/tree-ssanames.c Fri Jun 28 21:01:56 2019 *************** reset_flow_sensitive_info (tree name) *** 744,750 **** { /* points-to info is not flow-sensitive. */ if (SSA_NAME_PTR_INFO (name)) ! mark_ptr_info_alignment_unknown (SSA_NAME_PTR_INFO (name)); } else SSA_NAME_RANGE_INFO (name) = NULL; --- 744,755 ---- { /* points-to info is not flow-sensitive. */ if (SSA_NAME_PTR_INFO (name)) ! { ! /* [E]VRP can derive context sensitive alignment info and ! non-nullness properties. We must reset both. */ ! mark_ptr_info_alignment_unknown (SSA_NAME_PTR_INFO (name)); ! SSA_NAME_PTR_INFO (name)->pt.null = 1; ! } } else SSA_NAME_RANGE_INFO (name) = NULL; diff -Nrcpad gcc-7.4.0/gcc/tree-streamer-in.c gcc-7.5.0/gcc/tree-streamer-in.c *** gcc-7.4.0/gcc/tree-streamer-in.c Wed Apr 12 07:35:49 2017 --- gcc-7.5.0/gcc/tree-streamer-in.c Fri Aug 30 12:41:43 2019 *************** unpack_ts_decl_common_value_fields (stru *** 244,262 **** LABEL_DECL_UID (expr) = -1; } ! if (TREE_CODE (expr) == FIELD_DECL) { DECL_PACKED (expr) = (unsigned) bp_unpack_value (bp, 1); DECL_NONADDRESSABLE_P (expr) = (unsigned) bp_unpack_value (bp, 1); expr->decl_common.off_align = bp_unpack_value (bp, 8); } ! if (VAR_P (expr)) { DECL_HAS_DEBUG_EXPR_P (expr) = (unsigned) bp_unpack_value (bp, 1); DECL_NONLOCAL_FRAME (expr) = (unsigned) bp_unpack_value (bp, 1); } if (TREE_CODE (expr) == RESULT_DECL || TREE_CODE (expr) == PARM_DECL || VAR_P (expr)) --- 244,265 ---- LABEL_DECL_UID (expr) = -1; } ! else if (TREE_CODE (expr) == FIELD_DECL) { DECL_PACKED (expr) = (unsigned) bp_unpack_value (bp, 1); DECL_NONADDRESSABLE_P (expr) = (unsigned) bp_unpack_value (bp, 1); expr->decl_common.off_align = bp_unpack_value (bp, 8); } ! else if (VAR_P (expr)) { DECL_HAS_DEBUG_EXPR_P (expr) = (unsigned) bp_unpack_value (bp, 1); DECL_NONLOCAL_FRAME (expr) = (unsigned) bp_unpack_value (bp, 1); } + else if (TREE_CODE (expr) == PARM_DECL) + DECL_HIDDEN_STRING_LENGTH (expr) = (unsigned) bp_unpack_value (bp, 1); + if (TREE_CODE (expr) == RESULT_DECL || TREE_CODE (expr) == PARM_DECL || VAR_P (expr)) diff -Nrcpad gcc-7.4.0/gcc/tree-streamer-out.c gcc-7.5.0/gcc/tree-streamer-out.c *** gcc-7.4.0/gcc/tree-streamer-out.c Wed Apr 12 07:35:49 2017 --- gcc-7.5.0/gcc/tree-streamer-out.c Fri Aug 30 12:41:43 2019 *************** pack_ts_decl_common_value_fields (struct *** 207,225 **** bp_pack_var_len_unsigned (bp, EH_LANDING_PAD_NR (expr)); } ! if (TREE_CODE (expr) == FIELD_DECL) { bp_pack_value (bp, DECL_PACKED (expr), 1); bp_pack_value (bp, DECL_NONADDRESSABLE_P (expr), 1); bp_pack_value (bp, expr->decl_common.off_align, 8); } ! if (VAR_P (expr)) { bp_pack_value (bp, DECL_HAS_DEBUG_EXPR_P (expr), 1); bp_pack_value (bp, DECL_NONLOCAL_FRAME (expr), 1); } if (TREE_CODE (expr) == RESULT_DECL || TREE_CODE (expr) == PARM_DECL || VAR_P (expr)) --- 207,228 ---- bp_pack_var_len_unsigned (bp, EH_LANDING_PAD_NR (expr)); } ! else if (TREE_CODE (expr) == FIELD_DECL) { bp_pack_value (bp, DECL_PACKED (expr), 1); bp_pack_value (bp, DECL_NONADDRESSABLE_P (expr), 1); bp_pack_value (bp, expr->decl_common.off_align, 8); } ! else if (VAR_P (expr)) { bp_pack_value (bp, DECL_HAS_DEBUG_EXPR_P (expr), 1); bp_pack_value (bp, DECL_NONLOCAL_FRAME (expr), 1); } + else if (TREE_CODE (expr) == PARM_DECL) + bp_pack_value (bp, DECL_HIDDEN_STRING_LENGTH (expr), 1); + if (TREE_CODE (expr) == RESULT_DECL || TREE_CODE (expr) == PARM_DECL || VAR_P (expr)) diff -Nrcpad gcc-7.4.0/gcc/tree-vect-data-refs.c gcc-7.5.0/gcc/tree-vect-data-refs.c *** gcc-7.4.0/gcc/tree-vect-data-refs.c Mon Nov 26 13:31:21 2018 --- gcc-7.5.0/gcc/tree-vect-data-refs.c Wed Sep 4 11:56:15 2019 *************** along with GCC; see the file COPYING3. *** 50,55 **** --- 50,56 ---- #include "expr.h" #include "builtins.h" #include "params.h" + #include "internal-fn.h" /* Return true if load- or store-lanes optab OPTAB is implemented for COUNT vectors of type VECTYPE. NAME is the name of OPTAB. */ *************** vect_get_smallest_scalar_type (gimple *s *** 131,136 **** --- 132,161 ---- if (rhs < lhs) scalar_type = rhs_type; } + else if (gcall *call = dyn_cast (stmt)) + { + unsigned int i = 0; + if (gimple_call_internal_p (call)) + { + internal_fn ifn = gimple_call_internal_fn (call); + if (internal_load_fn_p (ifn) || internal_store_fn_p (ifn)) + /* gimple_expr_type already picked the type of the loaded + or stored data. */ + i = ~0U; + else if (internal_fn_mask_index (ifn) == 0) + i = 1; + } + if (i < gimple_call_num_args (call)) + { + tree rhs_type = TREE_TYPE (gimple_call_arg (call, i)); + if (tree_fits_uhwi_p (TYPE_SIZE_UNIT (rhs_type))) + { + rhs = TREE_INT_CST_LOW (TYPE_SIZE_UNIT (rhs_type)); + if (rhs < lhs) + scalar_type = rhs_type; + } + } + } *lhs_size_unit = lhs; *rhs_size_unit = rhs; *************** vect_analyze_data_ref_dependence (struct *** 445,452 **** reversed (to make distance vector positive), and the actual distance is negative. */ if (dump_enabled_p ()) ! dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, "dependence distance negative.\n"); /* Record a negative dependence distance to later limit the amount of stmt copying / unrolling we can perform. Only need to handle read-after-write dependence. */ --- 470,488 ---- reversed (to make distance vector positive), and the actual distance is negative. */ if (dump_enabled_p ()) ! dump_printf_loc (MSG_NOTE, vect_location, "dependence distance negative.\n"); + /* When doing outer loop vectorization, we need to check if there is + a backward dependence at the inner loop level if the dependence + at the outer loop is reversed. See PR81740. */ + if (nested_in_vect_loop_p (loop, DR_STMT (dra)) + || nested_in_vect_loop_p (loop, DR_STMT (drb))) + { + unsigned inner_depth = index_in_loop_nest (loop->inner->num, + DDR_LOOP_NEST (ddr)); + if (dist_v[inner_depth] < 0) + return true; + } /* Record a negative dependence distance to later limit the amount of stmt copying / unrolling we can perform. Only need to handle read-after-write dependence. */ diff -Nrcpad gcc-7.4.0/gcc/tree-vect-slp.c gcc-7.5.0/gcc/tree-vect-slp.c *** gcc-7.4.0/gcc/tree-vect-slp.c Fri Oct 20 11:18:00 2017 --- gcc-7.5.0/gcc/tree-vect-slp.c Wed Sep 4 10:51:02 2019 *************** vect_slp_analyze_node_operations (slp_tr *** 2482,2498 **** gcc_assert (stmt_info); gcc_assert (STMT_SLP_TYPE (stmt_info) != loop_vect); /* Push SLP node def-type to stmt operands. */ FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (node), j, child) if (SLP_TREE_DEF_TYPE (child) != vect_internal_def) STMT_VINFO_DEF_TYPE (vinfo_for_stmt (SLP_TREE_SCALAR_STMTS (child)[i])) = SLP_TREE_DEF_TYPE (child); ! res = vect_analyze_stmt (stmt, &dummy, node); /* Restore def-types. */ FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (node), j, child) if (SLP_TREE_DEF_TYPE (child) != vect_internal_def) STMT_VINFO_DEF_TYPE (vinfo_for_stmt (SLP_TREE_SCALAR_STMTS (child)[i])) ! = vect_internal_def; if (! res) break; } --- 2482,2528 ---- gcc_assert (stmt_info); gcc_assert (STMT_SLP_TYPE (stmt_info) != loop_vect); + /* ??? We have to catch the case late where two first scalar stmts appear + in multiple SLP children with different def type and fail. Remember + original def types first since SLP_TREE_DEF_TYPE doesn't necessarily + match it when that is vect_internal_def. */ + auto_vec dt; + dt.safe_grow (SLP_TREE_CHILDREN (node).length ()); + FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (node), j, child) + dt[j] + = STMT_VINFO_DEF_TYPE (vinfo_for_stmt (SLP_TREE_SCALAR_STMTS (child)[i])); + /* Push SLP node def-type to stmt operands. */ FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (node), j, child) if (SLP_TREE_DEF_TYPE (child) != vect_internal_def) STMT_VINFO_DEF_TYPE (vinfo_for_stmt (SLP_TREE_SCALAR_STMTS (child)[i])) = SLP_TREE_DEF_TYPE (child); ! ! /* Check everything worked out. */ ! FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (node), j, child) ! if (SLP_TREE_DEF_TYPE (child) != vect_internal_def) ! { ! if (STMT_VINFO_DEF_TYPE ! (vinfo_for_stmt (SLP_TREE_SCALAR_STMTS (child)[i])) ! != SLP_TREE_DEF_TYPE (child)) ! res = false; ! } ! else if (STMT_VINFO_DEF_TYPE ! (vinfo_for_stmt (SLP_TREE_SCALAR_STMTS (child)[i])) != dt[j]) ! res = false; ! if (!res && dump_enabled_p ()) ! dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, ! "not vectorized: same operand with different " ! "def type in stmt.\n"); ! ! if (res) ! res = vect_analyze_stmt (stmt, &dummy, node); ! /* Restore def-types. */ FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (node), j, child) if (SLP_TREE_DEF_TYPE (child) != vect_internal_def) STMT_VINFO_DEF_TYPE (vinfo_for_stmt (SLP_TREE_SCALAR_STMTS (child)[i])) ! = dt[j]; if (! res) break; } diff -Nrcpad gcc-7.4.0/gcc/tree-vect-stmts.c gcc-7.5.0/gcc/tree-vect-stmts.c *** gcc-7.4.0/gcc/tree-vect-stmts.c Thu Jun 7 10:10:00 2018 --- gcc-7.5.0/gcc/tree-vect-stmts.c Wed Sep 4 08:06:24 2019 *************** vectorizable_shift (gimple *stmt, gimple *** 4943,4948 **** --- 4943,4958 ---- FOR_EACH_VEC_ELT (stmts, k, slpstmt) if (!operand_equal_p (gimple_assign_rhs2 (slpstmt), op1, 0)) scalar_shift_arg = false; + + /* For internal SLP defs we have to make sure we see scalar stmts + for all vector elements. + ??? For different vectors we could resort to a different + scalar shift operand but code-generation below simply always + takes the first. */ + if (dt[1] == vect_internal_def + && (nunits_out * SLP_TREE_NUMBER_OF_VEC_STMTS (slp_node) + != stmts.length ())) + scalar_shift_arg = false; } /* If the shift amount is computed by a pattern stmt we cannot diff -Nrcpad gcc-7.4.0/gcc/tree-vrp.c gcc-7.5.0/gcc/tree-vrp.c *** gcc-7.4.0/gcc/tree-vrp.c Fri Jun 22 21:33:07 2018 --- gcc-7.5.0/gcc/tree-vrp.c Wed Oct 23 13:17:34 2019 *************** extract_range_from_binary_expr_1 (value_ *** 2535,2544 **** max_ovf = 1; } ! /* If we have overflow for the constant part and the resulting ! range will be symbolic, drop to VR_VARYING. */ ! if ((min_ovf && sym_min_op0 != sym_min_op1) ! || (max_ovf && sym_max_op0 != sym_max_op1)) { set_value_range_to_varying (vr); return; --- 2535,2547 ---- max_ovf = 1; } ! /* If the resulting range will be symbolic, we need to eliminate any ! explicit or implicit overflow introduced in the above computation ! because compare_values could make an incorrect use of it. That's ! why we require one of the ranges to be a singleton. */ ! if ((sym_min_op0 != sym_min_op1 || sym_max_op0 != sym_max_op1) ! && (min_ovf || max_ovf ! || (min_op0 != max_op0 && min_op1 != max_op1))) { set_value_range_to_varying (vr); return; diff -Nrcpad gcc-7.4.0/gcc/tree.c gcc-7.5.0/gcc/tree.c *** gcc-7.4.0/gcc/tree.c Sat Aug 25 11:52:15 2018 --- gcc-7.5.0/gcc/tree.c Fri Aug 30 12:14:46 2019 *************** handle_dll_attribute (tree * pnode, tree *** 6456,6461 **** --- 6456,6466 ---- a function global scope, unless declared static. */ if (current_function_decl != NULL_TREE && !TREE_STATIC (node)) TREE_PUBLIC (node) = 1; + /* Clear TREE_STATIC because DECL_EXTERNAL is set, unless + it is a C++ static data member. */ + if (DECL_CONTEXT (node) == NULL_TREE + || !RECORD_OR_UNION_TYPE_P (DECL_CONTEXT (node))) + TREE_STATIC (node) = 0; } if (*no_add_attrs == false) diff -Nrcpad gcc-7.4.0/gcc/tree.h gcc-7.5.0/gcc/tree.h *** gcc-7.4.0/gcc/tree.h Wed Nov 29 22:13:34 2017 --- gcc-7.5.0/gcc/tree.h Fri Aug 30 12:41:43 2019 *************** extern void omp_clause_range_check_faile *** 912,917 **** --- 912,922 ---- (TREE_CHECK2 (NODE, VAR_DECL, \ RESULT_DECL)->decl_common.decl_nonshareable_flag) + /* In a PARM_DECL, set for Fortran hidden string length arguments that some + buggy callers don't pass to the callee. */ + #define DECL_HIDDEN_STRING_LENGTH(NODE) \ + (TREE_CHECK (NODE, PARM_DECL)->decl_common.decl_nonshareable_flag) + /* In a CALL_EXPR, means that the call is the jump from a thunk to the thunked-to function. */ #define CALL_FROM_THUNK_P(NODE) (CALL_EXPR_CHECK (NODE)->base.protected_flag) *************** extern void protected_set_expr_location *** 1231,1236 **** --- 1236,1244 ---- ASM_OPERAND with no operands. */ #define ASM_INPUT_P(NODE) (ASM_EXPR_CHECK (NODE)->base.static_flag) #define ASM_VOLATILE_P(NODE) (ASM_EXPR_CHECK (NODE)->base.public_flag) + /* Nonzero if we want to consider this asm as minimum length and cost + for inlining decisions. */ + #define ASM_INLINE_P(NODE) (ASM_EXPR_CHECK (NODE)->base.protected_flag) /* COND_EXPR accessors. */ #define COND_EXPR_COND(NODE) (TREE_OPERAND (COND_EXPR_CHECK (NODE), 0)) diff -Nrcpad gcc-7.4.0/gcc/valtrack.c gcc-7.5.0/gcc/valtrack.c *** gcc-7.4.0/gcc/valtrack.c Fri Dec 15 21:53:29 2017 --- gcc-7.5.0/gcc/valtrack.c Fri Aug 30 11:20:47 2019 *************** static rtx *** 56,63 **** cleanup_auto_inc_dec (rtx src, machine_mode mem_mode ATTRIBUTE_UNUSED) { rtx x = src; - if (!AUTO_INC_DEC) - return copy_rtx (x); const RTX_CODE code = GET_CODE (x); int i; --- 56,61 ---- diff -Nrcpad gcc-7.4.0/gcc/varasm.c gcc-7.5.0/gcc/varasm.c *** gcc-7.4.0/gcc/varasm.c Fri Jun 22 20:51:42 2018 --- gcc-7.5.0/gcc/varasm.c Fri Aug 30 11:08:10 2019 *************** decode_addr_const (tree exp, struct addr *** 2881,2886 **** --- 2881,2891 ---- x = output_constant_def (target, 1); break; + case COMPOUND_LITERAL_EXPR: + gcc_assert (COMPOUND_LITERAL_EXPR_DECL (target)); + x = DECL_RTL (COMPOUND_LITERAL_EXPR_DECL (target)); + break; + default: gcc_unreachable (); } *************** output_constructor_bitfield (oc_local_st *** 5175,5181 **** { int this_time; int shift; ! HOST_WIDE_INT value; HOST_WIDE_INT next_byte = next_offset / BITS_PER_UNIT; HOST_WIDE_INT next_bit = next_offset % BITS_PER_UNIT; --- 5180,5186 ---- { int this_time; int shift; ! unsigned HOST_WIDE_INT value; HOST_WIDE_INT next_byte = next_offset / BITS_PER_UNIT; HOST_WIDE_INT next_bit = next_offset % BITS_PER_UNIT; *************** output_constructor_bitfield (oc_local_st *** 5207,5221 **** this_time = end - shift + 1; } ! /* Now get the bits from the appropriate constant word. */ ! value = TREE_INT_CST_ELT (local->val, shift / HOST_BITS_PER_WIDE_INT); ! shift = shift & (HOST_BITS_PER_WIDE_INT - 1); /* Get the result. This works only when: 1 <= this_time <= HOST_BITS_PER_WIDE_INT. */ ! local->byte |= (((value >> shift) ! & (((HOST_WIDE_INT) 2 << (this_time - 1)) - 1)) ! << (BITS_PER_UNIT - this_time - next_bit)); } else { --- 5212,5224 ---- this_time = end - shift + 1; } ! /* Now get the bits we want to insert. */ ! value = wi::extract_uhwi (wi::to_widest (local->val), ! shift, this_time); /* Get the result. This works only when: 1 <= this_time <= HOST_BITS_PER_WIDE_INT. */ ! local->byte |= value << (BITS_PER_UNIT - this_time - next_bit); } else { *************** output_constructor_bitfield (oc_local_st *** 5232,5246 **** this_time = HOST_BITS_PER_WIDE_INT - (shift & (HOST_BITS_PER_WIDE_INT - 1)); ! /* Now get the bits from the appropriate constant word. */ ! value = TREE_INT_CST_ELT (local->val, shift / HOST_BITS_PER_WIDE_INT); ! shift = shift & (HOST_BITS_PER_WIDE_INT - 1); /* Get the result. This works only when: 1 <= this_time <= HOST_BITS_PER_WIDE_INT. */ ! local->byte |= (((value >> shift) ! & (((HOST_WIDE_INT) 2 << (this_time - 1)) - 1)) ! << next_bit); } next_offset += this_time; --- 5235,5247 ---- this_time = HOST_BITS_PER_WIDE_INT - (shift & (HOST_BITS_PER_WIDE_INT - 1)); ! /* Now get the bits we want to insert. */ ! value = wi::extract_uhwi (wi::to_widest (local->val), ! shift, this_time); /* Get the result. This works only when: 1 <= this_time <= HOST_BITS_PER_WIDE_INT. */ ! local->byte |= value << next_bit; } next_offset += this_time; diff -Nrcpad gcc-7.4.0/gcc/xcoffout.c gcc-7.5.0/gcc/xcoffout.c *** gcc-7.4.0/gcc/xcoffout.c Sat Feb 18 16:11:40 2017 --- gcc-7.5.0/gcc/xcoffout.c Wed May 15 17:11:31 2019 *************** static const char *xcoff_current_functio *** 63,68 **** --- 63,69 ---- char *xcoff_bss_section_name; char *xcoff_private_data_section_name; + char *xcoff_private_rodata_section_name; char *xcoff_tls_data_section_name; char *xcoff_tbss_section_name; char *xcoff_read_only_section_name; diff -Nrcpad gcc-7.4.0/gcc/xcoffout.h gcc-7.5.0/gcc/xcoffout.h *** gcc-7.4.0/gcc/xcoffout.h Sat Feb 18 16:11:40 2017 --- gcc-7.5.0/gcc/xcoffout.h Wed May 15 17:11:31 2019 *************** extern const char *xcoff_current_include *** 127,132 **** --- 127,133 ---- extern char *xcoff_bss_section_name; extern char *xcoff_private_data_section_name; + extern char *xcoff_private_rodata_section_name; extern char *xcoff_tls_data_section_name; extern char *xcoff_tbss_section_name; extern char *xcoff_read_only_section_name; diff -Nrcpad gcc-7.4.0/gnattools/ChangeLog gcc-7.5.0/gnattools/ChangeLog *** gcc-7.4.0/gnattools/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gnattools/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/gotools/ChangeLog gcc-7.5.0/gotools/ChangeLog *** gcc-7.4.0/gotools/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/gotools/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/include/ChangeLog gcc-7.5.0/include/ChangeLog *** gcc-7.4.0/include/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/include/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/intl/ChangeLog gcc-7.5.0/intl/ChangeLog *** gcc-7.4.0/intl/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/intl/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libada/ChangeLog gcc-7.5.0/libada/ChangeLog *** gcc-7.4.0/libada/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libada/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libatomic/ChangeLog gcc-7.5.0/libatomic/ChangeLog *** gcc-7.4.0/libatomic/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libatomic/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libbacktrace/ChangeLog gcc-7.5.0/libbacktrace/ChangeLog *** gcc-7.4.0/libbacktrace/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libbacktrace/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libcc1/ChangeLog gcc-7.5.0/libcc1/ChangeLog *** gcc-7.4.0/libcc1/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libcc1/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libcilkrts/ChangeLog gcc-7.5.0/libcilkrts/ChangeLog *** gcc-7.4.0/libcilkrts/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libcilkrts/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libcpp/ChangeLog gcc-7.5.0/libcpp/ChangeLog *** gcc-7.4.0/libcpp/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libcpp/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,26 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-03-11 Martin Liska + + Backport from mainline + 2019-02-18 Martin Liska + + PR c++/89383 + * line-map.c (linemap_line_start): Use 1UL in order + to not overflow. + + 2019-03-11 Martin Liska + + Backport from mainline + 2019-02-11 Martin Liska + + PR lto/88147 + * line-map.c (linemap_line_start): Don't reuse the existing line + map if the line offset is sufficiently large to cause overflow + when computing location_t values. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libcpp/line-map.c gcc-7.5.0/libcpp/line-map.c *** gcc-7.4.0/libcpp/line-map.c Tue Jan 10 21:54:09 2017 --- gcc-7.5.0/libcpp/line-map.c Mon Mar 11 11:18:22 2019 *************** linemap_line_start (struct line_maps *se *** 753,758 **** --- 753,763 ---- if (line_delta < 0 || last_line != ORDINARY_MAP_STARTING_LINE_NUMBER (map) || SOURCE_COLUMN (map, highest) >= (1U << (column_bits - range_bits)) + || ( /* We can't reuse the map if the line offset is sufficiently + large to cause overflow when computing location_t values. */ + (to_line - ORDINARY_MAP_STARTING_LINE_NUMBER (map)) + >= (((uint64_t) 1) + << (CHAR_BIT * sizeof (linenum_type) - column_bits))) || range_bits < map->m_range_bits) map = linemap_check_ordinary (const_cast diff -Nrcpad gcc-7.4.0/libcpp/po/ChangeLog gcc-7.5.0/libcpp/po/ChangeLog *** gcc-7.4.0/libcpp/po/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libcpp/po/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libdecnumber/ChangeLog gcc-7.5.0/libdecnumber/ChangeLog *** gcc-7.4.0/libdecnumber/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libdecnumber/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libffi/ChangeLog gcc-7.5.0/libffi/ChangeLog *** gcc-7.4.0/libffi/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libffi/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libgcc/ChangeLog gcc-7.5.0/libgcc/ChangeLog *** gcc-7.4.0/libgcc/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libgcc/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,47 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-11-01 Iain Sandoe + + Backport from mainline. + 2019-07-03 Iain Sandoe + + * config.host (powerpc-*-darwin*,powerpc64-*-darwin*): Revise crt + list. + * config/rs6000/t-darwin: Build crt3_2 for older systems. Revise + mmacosx-version-min for crts to run across all system versions. + * config/rs6000/t-darwin64 (LIB2ADD): Remove. + * config/t-darwin: Revise mmacosx-version-min for crts to run across + system versions >= 10.4. + + 2019-11-01 Iain Sandoe + + Backport from mainline. + 2019-06-25 Iain Sandoe + + * config.host: Add libef_ppc.a to the extra files for powerpc-darwin. + * config/rs6000/t-darwin: (PPC_ENDFILE_SRC, PPC_ENDFILE_OBJS): New. + Build objects for the out of line save/restore register functions + so that they can be used for any supported Darwin version. + * config/t-darwin: Default the build Darwin version to Darwin8 + (MacOS 10.4). + + 2019-09-04 Iain Sandoe + + Backport from mainline. + 2019-06-06 Iain Sandoe + + * config/rs6000/t-darwin: Ensure that the unwinder is built with + altivec enabled. + + 2019-09-03 Iain Sandoe + + Backport from mainline. + 2019-05-12 Iain Sandoe + + * config/rs6000/darwin-vecsave.S: Set .machine appropriately. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libgcc/config/libbid/ChangeLog gcc-7.5.0/libgcc/config/libbid/ChangeLog *** gcc-7.4.0/libgcc/config/libbid/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libgcc/config/libbid/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libgcc/config/rs6000/darwin-vecsave.S gcc-7.5.0/libgcc/config/rs6000/darwin-vecsave.S *** gcc-7.4.0/libgcc/config/rs6000/darwin-vecsave.S Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/libgcc/config/rs6000/darwin-vecsave.S Tue Sep 3 19:08:38 2019 *************** *** 31,38 **** (4 bytes) to do the operation; for Vector regs, 2 instructions are required (8 bytes.). */ .machine ppc7400 ! .text .align 2 .private_extern saveVEC --- 31,44 ---- (4 bytes) to do the operation; for Vector regs, 2 instructions are required (8 bytes.). */ + /* With some assemblers, we need the correct machine directive to get the + right CPU type / subtype in the file header. */ + #if __ppc64__ + .machine ppc64 + #else .machine ppc7400 ! #endif ! .text .align 2 .private_extern saveVEC diff -Nrcpad gcc-7.4.0/libgcc/config/rs6000/t-darwin gcc-7.5.0/libgcc/config/rs6000/t-darwin *** gcc-7.4.0/libgcc/config/rs6000/t-darwin Wed Nov 2 15:23:48 2011 --- gcc-7.5.0/libgcc/config/rs6000/t-darwin Fri Nov 1 20:44:32 2019 *************** *** 1,23 **** - DARWIN_EXTRA_CRT_BUILD_CFLAGS = -mlongcall -mmacosx-version-min=10.4 crt2.o: $(srcdir)/config/rs6000/darwin-crt2.c ! $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -c $< LIB2ADD = $(srcdir)/config/rs6000/darwin-tramp.S \ $(srcdir)/config/darwin-64.c \ ! $(srcdir)/config/rs6000/darwin-fpsave.S \ ! $(srcdir)/config/rs6000/darwin-gpsave.S \ ! $(srcdir)/config/rs6000/darwin-world.S \ ! $(srcdir)/config/rs6000/ppc64-fp.c ! ! LIB2ADD_ST = \ ! $(srcdir)/config/rs6000/darwin-vecsave.S # The .S files above are designed to run on all processors, even though # they use AltiVec instructions. # -Wa is used because -force_cpusubtype_ALL doesn't work with -dynamiclib. ! # -mmacosx-version-min=10.4 is used to provide compatibility for code from ! # earlier OSX versions. ! HOST_LIBGCC2_CFLAGS += -Wa,-force_cpusubtype_ALL -mmacosx-version-min=10.4 LIB2ADDEH += $(srcdir)/config/rs6000/darwin-fallback.c --- 1,58 ---- crt2.o: $(srcdir)/config/rs6000/darwin-crt2.c ! $(crt_compile) -mmacosx-version-min=10.1 -c $< ! ! # The sources for this indicate that there are some parts that ! # don't apply >= 10.4 ! crt3_2.o: $(srcdir)/config/darwin-crt3.c ! $(crt_compile) -mmacosx-version-min=10.1 -c $< ! ! # The outlined register save/restore functions need to run anywhere, and ! # they must be leaf functions suitable for use in an endfile. ! ! PPC_ENDFILE_SRC = \ ! $(srcdir)/config/rs6000/darwin-gpsave.S \ ! $(srcdir)/config/rs6000/darwin-fpsave.S \ ! $(srcdir)/config/rs6000/darwin-vecsave.S ! ! PPC_ENDFILE_OBJS = \ ! darwin-gpsave.o \ ! darwin-fpsave.o \ ! darwin-vecsave.o ! ! darwin-gpsave.o: $(srcdir)/config/rs6000/darwin-gpsave.S ! $(crt_compile) -mmacosx-version-min=10.1 -c $< ! ! darwin-fpsave.o: $(srcdir)/config/rs6000/darwin-fpsave.S ! $(crt_compile) -mmacosx-version-min=10.1 -c $< ! ! darwin-vecsave.o: $(srcdir)/config/rs6000/darwin-vecsave.S ! $(crt_compile) -mmacosx-version-min=10.1 -c $< ! ! # We build these into a library, so that they are only linked as needed and not ! # forced into every object. ! ! libef_ppc.a: $(PPC_ENDFILE_OBJS) ! $(AR_CREATE_FOR_TARGET) $@ $(PPC_ENDFILE_OBJS) ! $(RANLIB_FOR_TARGET) $@ ! ! dw_ppc.o: $(srcdir)/config/rs6000/darwin-world.S ! $(crt_compile) -mmacosx-version-min=10.1 -c $< LIB2ADD = $(srcdir)/config/rs6000/darwin-tramp.S \ $(srcdir)/config/darwin-64.c \ ! $(srcdir)/config/rs6000/darwin-world.S # The .S files above are designed to run on all processors, even though # they use AltiVec instructions. # -Wa is used because -force_cpusubtype_ALL doesn't work with -dynamiclib. ! ! HOST_LIBGCC2_CFLAGS += -Wa,-force_cpusubtype_ALL ! ! # Although the default for 10.4 is G3, we need the unwinder to be built ! # with vector support so that the "save/rest_world" outlined functions are ! # correctly invoked. ! unwind-dw2_s.o: HOST_LIBGCC2_CFLAGS += -maltivec ! unwind-dw2.o: HOST_LIBGCC2_CFLAGS += -maltivec LIB2ADDEH += $(srcdir)/config/rs6000/darwin-fallback.c diff -Nrcpad gcc-7.4.0/libgcc/config/rs6000/t-darwin64 gcc-7.5.0/libgcc/config/rs6000/t-darwin64 *** gcc-7.4.0/libgcc/config/rs6000/t-darwin64 Sun Dec 4 15:46:28 2011 --- gcc-7.5.0/libgcc/config/rs6000/t-darwin64 Fri Nov 1 20:44:32 2019 *************** *** 1,7 **** LIB2_SIDITI_CONV_FUNCS = yes - - LIB2ADD = $(srcdir)/config/rs6000/darwin-tramp.S \ - $(srcdir)/config/darwin-64.c \ - $(srcdir)/config/rs6000/darwin-fpsave.S \ - $(srcdir)/config/rs6000/darwin-gpsave.S \ - $(srcdir)/config/rs6000/darwin-world.S --- 1 ---- diff -Nrcpad gcc-7.4.0/libgcc/config/t-darwin gcc-7.5.0/libgcc/config/t-darwin *** gcc-7.4.0/libgcc/config/t-darwin Sun Nov 27 15:07:22 2016 --- gcc-7.5.0/libgcc/config/t-darwin Fri Nov 1 20:44:32 2019 *************** *** 1,21 **** # Set this as a minimum (unless overriden by arch t-files) since it's a # reasonable lowest common denominator that works for all our archs. ! HOST_LIBGCC2_CFLAGS += -mmacosx-version-min=10.5 crt3.o: $(srcdir)/config/darwin-crt3.c ! $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -c $< crttms.o: $(srcdir)/config/darwin-crt-tm.c ! $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -DSTART -c $< crttme.o: $(srcdir)/config/darwin-crt-tm.c ! $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -DEND -c $< ! ! # -pipe because there's an assembler bug, 4077127, which causes ! # it to not properly process the first # directive, causing temporary ! # file names to appear in stabs, causing the bootstrap to fail. Using -pipe ! # works around this by not having any temporary file names. ! HOST_LIBGCC2_CFLAGS += -pipe # Use unwind-dw2-fde-darwin LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/config/unwind-dw2-fde-darwin.c \ --- 1,15 ---- # Set this as a minimum (unless overriden by arch t-files) since it's a # reasonable lowest common denominator that works for all our archs. ! HOST_LIBGCC2_CFLAGS += -mmacosx-version-min=10.4 crt3.o: $(srcdir)/config/darwin-crt3.c ! $(crt_compile) -mmacosx-version-min=10.4 -c $< crttms.o: $(srcdir)/config/darwin-crt-tm.c ! $(crt_compile) -mmacosx-version-min=10.4 -DSTART -c $< crttme.o: $(srcdir)/config/darwin-crt-tm.c ! $(crt_compile) -mmacosx-version-min=10.4 -DEND -c $< # Use unwind-dw2-fde-darwin LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/config/unwind-dw2-fde-darwin.c \ diff -Nrcpad gcc-7.4.0/libgcc/config.host gcc-7.5.0/libgcc/config.host *** gcc-7.4.0/libgcc/config.host Mon Jan 8 13:39:11 2018 --- gcc-7.5.0/libgcc/config.host Fri Nov 1 20:44:32 2019 *************** powerpc-*-darwin*) *** 992,1003 **** md_unwind_header=rs6000/darwin-unwind.h ;; esac ! tmake_file="$tmake_file rs6000/t-ibm-ldouble" ! extra_parts="$extra_parts crt2.o" ;; powerpc64-*-darwin*) tmake_file="$tmake_file rs6000/t-darwin64 rs6000/t-ibm-ldouble" ! extra_parts="$extra_parts crt2.o" ;; powerpc*-*-freebsd*) tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-savresfgpr rs6000/t-crtstuff rs6000/t-freebsd t-softfp-sfdf t-softfp-excl t-softfp" --- 992,1003 ---- md_unwind_header=rs6000/darwin-unwind.h ;; esac ! tmake_file="$tmake_file rs6000/t-ppc64-fp rs6000/t-ibm-ldouble" ! extra_parts="$extra_parts crt2.o crt3_2.o libef_ppc.a dw_ppc.o" ;; powerpc64-*-darwin*) tmake_file="$tmake_file rs6000/t-darwin64 rs6000/t-ibm-ldouble" ! extra_parts="$extra_parts crt2.o crt3_2.o libef_ppc.a dw_ppc.o" ;; powerpc*-*-freebsd*) tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-savresfgpr rs6000/t-crtstuff rs6000/t-freebsd t-softfp-sfdf t-softfp-excl t-softfp" diff -Nrcpad gcc-7.4.0/libgfortran/ChangeLog gcc-7.5.0/libgfortran/ChangeLog *** gcc-7.4.0/libgfortran/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libgfortran/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,47 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-04-16 John David Anglin + + Backport from mainline + 2019-03-25 John David Anglin + + PR libgfortran/79540 + * io/write_float.def (build_float_string): Don't copy digits when + ndigits is negative. + + 2019-02-03 Uroš Bizjak + + PR libfortran/88678 + Revert: + 2016-11-16 Szabolcs Nagy + + PR libfortran/78314 + * config/fpu-glibc.h (support_fpu_trap): Use feenableexcept. + + 2019-02-03 Uroš Bizjak + + PR libfortran/88678 + * config/fpu-glibc.h (set_fpu_trap_exceptions): Clear stalled + exception flags before changing trap mode. Optimize to call + feenableexcept and fedisableexcept only once. + + 2019-01-13 Jerry DeLisle + + PR libfortran/88776 + * io/list_read.c (namelist_read): Use nml_err_ret path on read error + not based on stdin_unit. + * io/open.c (newunit): Free format buffer if the unit specified is for + stdin, stdout, or stderr. + + 2018-12-06 Janne Blomqvist + + Backport from trunk + PR libfortran/88137 + * runtime/backtrace.c (show_backtrace): Store backtrace state in a + static variable, initialize once. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libgfortran/config/fpu-glibc.h gcc-7.5.0/libgfortran/config/fpu-glibc.h *** gcc-7.4.0/libgfortran/config/fpu-glibc.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/libgfortran/config/fpu-glibc.h Sun Feb 3 16:21:06 2019 *************** _Static_assert (sizeof(fenv_t) <= (size_ *** 39,86 **** void set_fpu_trap_exceptions (int trap, int notrap) { #ifdef FE_INVALID if (trap & GFC_FPE_INVALID) ! feenableexcept (FE_INVALID); if (notrap & GFC_FPE_INVALID) ! fedisableexcept (FE_INVALID); #endif /* Some glibc targets (like alpha) have FE_DENORMAL, but not many. */ #ifdef FE_DENORMAL if (trap & GFC_FPE_DENORMAL) ! feenableexcept (FE_DENORMAL); if (notrap & GFC_FPE_DENORMAL) ! fedisableexcept (FE_DENORMAL); #endif #ifdef FE_DIVBYZERO if (trap & GFC_FPE_ZERO) ! feenableexcept (FE_DIVBYZERO); if (notrap & GFC_FPE_ZERO) ! fedisableexcept (FE_DIVBYZERO); #endif #ifdef FE_OVERFLOW if (trap & GFC_FPE_OVERFLOW) ! feenableexcept (FE_OVERFLOW); if (notrap & GFC_FPE_OVERFLOW) ! fedisableexcept (FE_OVERFLOW); #endif #ifdef FE_UNDERFLOW if (trap & GFC_FPE_UNDERFLOW) ! feenableexcept (FE_UNDERFLOW); if (notrap & GFC_FPE_UNDERFLOW) ! fedisableexcept (FE_UNDERFLOW); #endif #ifdef FE_INEXACT if (trap & GFC_FPE_INEXACT) ! feenableexcept (FE_INEXACT); if (notrap & GFC_FPE_INEXACT) ! fedisableexcept (FE_INEXACT); #endif } --- 39,94 ---- void set_fpu_trap_exceptions (int trap, int notrap) { + int mode_set = 0, mode_clr = 0; + #ifdef FE_INVALID if (trap & GFC_FPE_INVALID) ! mode_set |= FE_INVALID; if (notrap & GFC_FPE_INVALID) ! mode_clr |= FE_INVALID; #endif /* Some glibc targets (like alpha) have FE_DENORMAL, but not many. */ #ifdef FE_DENORMAL if (trap & GFC_FPE_DENORMAL) ! mode_set |= FE_DENORMAL; if (notrap & GFC_FPE_DENORMAL) ! mode_clr |= FE_DENORMAL; #endif #ifdef FE_DIVBYZERO if (trap & GFC_FPE_ZERO) ! mode_set |= FE_DIVBYZERO; if (notrap & GFC_FPE_ZERO) ! mode_clr |= FE_DIVBYZERO; #endif #ifdef FE_OVERFLOW if (trap & GFC_FPE_OVERFLOW) ! mode_set |= FE_OVERFLOW; if (notrap & GFC_FPE_OVERFLOW) ! mode_clr |= FE_OVERFLOW; #endif #ifdef FE_UNDERFLOW if (trap & GFC_FPE_UNDERFLOW) ! mode_set |= FE_UNDERFLOW; if (notrap & GFC_FPE_UNDERFLOW) ! mode_clr |= FE_UNDERFLOW; #endif #ifdef FE_INEXACT if (trap & GFC_FPE_INEXACT) ! mode_set |= FE_INEXACT; if (notrap & GFC_FPE_INEXACT) ! mode_clr |= FE_INEXACT; #endif + + /* Clear stalled exception flags. */ + feclearexcept (FE_ALL_EXCEPT); + + feenableexcept (mode_set); + fedisableexcept (mode_clr); } *************** get_fpu_trap_exceptions (void) *** 121,161 **** int support_fpu_trap (int flag) { ! int exceptions = 0; ! int old; ! ! if (!support_fpu_flag (flag)) ! return 0; ! ! #ifdef FE_INVALID ! if (flag & GFC_FPE_INVALID) exceptions |= FE_INVALID; ! #endif ! ! #ifdef FE_DIVBYZERO ! if (flag & GFC_FPE_ZERO) exceptions |= FE_DIVBYZERO; ! #endif ! ! #ifdef FE_OVERFLOW ! if (flag & GFC_FPE_OVERFLOW) exceptions |= FE_OVERFLOW; ! #endif ! ! #ifdef FE_UNDERFLOW ! if (flag & GFC_FPE_UNDERFLOW) exceptions |= FE_UNDERFLOW; ! #endif ! ! #ifdef FE_DENORMAL ! if (flag & GFC_FPE_DENORMAL) exceptions |= FE_DENORMAL; ! #endif ! ! #ifdef FE_INEXACT ! if (flag & GFC_FPE_INEXACT) exceptions |= FE_INEXACT; ! #endif ! ! old = feenableexcept (exceptions); ! if (old == -1) ! return 0; ! fedisableexcept (exceptions & ~old); ! return 1; } --- 129,135 ---- int support_fpu_trap (int flag) { ! return support_fpu_flag (flag); } diff -Nrcpad gcc-7.4.0/libgfortran/io/list_read.c gcc-7.5.0/libgfortran/io/list_read.c *** gcc-7.4.0/libgfortran/io/list_read.c Sat Dec 16 21:57:17 2017 --- gcc-7.5.0/libgfortran/io/list_read.c Mon Jan 14 01:12:27 2019 *************** find_nml_name: *** 3613,3623 **** while (!dtp->u.p.input_complete) { if (!nml_get_obj_data (dtp, &prev_nl, nml_err_msg, sizeof nml_err_msg)) ! { ! if (dtp->u.p.current_unit->unit_number != options.stdin_unit) ! goto nml_err_ret; ! generate_error (&dtp->common, LIBERROR_READ_VALUE, nml_err_msg); ! } /* Reset the previous namelist pointer if we know we are not going to be doing multiple reads within a single namelist object. */ --- 3613,3619 ---- while (!dtp->u.p.input_complete) { if (!nml_get_obj_data (dtp, &prev_nl, nml_err_msg, sizeof nml_err_msg)) ! goto nml_err_ret; /* Reset the previous namelist pointer if we know we are not going to be doing multiple reads within a single namelist object. */ diff -Nrcpad gcc-7.4.0/libgfortran/io/open.c gcc-7.5.0/libgfortran/io/open.c *** gcc-7.4.0/libgfortran/io/open.c Tue Apr 11 14:51:25 2017 --- gcc-7.5.0/libgfortran/io/open.c Mon Jan 14 01:12:27 2019 *************** new_unit (st_parameter_open *opp, gfc_un *** 529,534 **** --- 529,542 ---- if (u2 != NULL) unlock_unit (u2); + /* If the unit specified is preconnected with a file specified to be open, + then clear the format buffer. */ + if ((opp->common.unit == options.stdin_unit || + opp->common.unit == options.stdout_unit || + opp->common.unit == options.stderr_unit) + && (opp->common.flags & IOPARM_OPEN_HAS_FILE) != 0) + fbuf_destroy (u); + /* Open file. */ s = open_external (opp, flags); diff -Nrcpad gcc-7.4.0/libgfortran/io/write_float.def gcc-7.5.0/libgfortran/io/write_float.def *** gcc-7.4.0/libgfortran/io/write_float.def Sun Jun 10 03:10:00 2018 --- gcc-7.5.0/libgfortran/io/write_float.def Wed Apr 17 00:22:23 2019 *************** build_float_string (st_parameter_dt *dtp *** 620,633 **** } /* Set digits after the decimal point, padding with zeros. */ ! if (nafter > 0) { if (nafter > ndigits) i = ndigits; else i = nafter; ! memcpy (put, digits, i); while (i < nafter) put[i++] = '0'; --- 620,634 ---- } /* Set digits after the decimal point, padding with zeros. */ ! if (ndigits >= 0 && nafter > 0) { if (nafter > ndigits) i = ndigits; else i = nafter; ! if (i > 0) ! memcpy (put, digits, i); while (i < nafter) put[i++] = '0'; diff -Nrcpad gcc-7.4.0/libgfortran/runtime/backtrace.c gcc-7.5.0/libgfortran/runtime/backtrace.c *** gcc-7.4.0/libgfortran/runtime/backtrace.c Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/libgfortran/runtime/backtrace.c Thu Dec 6 15:38:25 2018 *************** full_callback (void *data, uintptr_t pc, *** 135,148 **** void show_backtrace (bool in_signal_handler) { struct backtrace_state *lbstate; struct mystate state = { 0, false, in_signal_handler }; - - lbstate = backtrace_create_state (NULL, __gthread_active_p (), - error_callback, NULL); ! if (lbstate == NULL) ! return; if (!BACKTRACE_SUPPORTED || (in_signal_handler && BACKTRACE_USES_MALLOC)) { --- 135,157 ---- void show_backtrace (bool in_signal_handler) { + /* Note that libbacktrace allows the state to be accessed from + multiple threads, so we don't need to use a TLS variable for the + state here. */ + static struct backtrace_state *lbstate_saved; struct backtrace_state *lbstate; struct mystate state = { 0, false, in_signal_handler }; ! lbstate = __atomic_load_n (&lbstate_saved, __ATOMIC_RELAXED); ! if (!lbstate) ! { ! lbstate = backtrace_create_state (NULL, __gthread_active_p (), ! error_callback, NULL); ! if (lbstate) ! __atomic_store_n (&lbstate_saved, lbstate, __ATOMIC_RELAXED); ! else ! return; ! } if (!BACKTRACE_SUPPORTED || (in_signal_handler && BACKTRACE_USES_MALLOC)) { diff -Nrcpad gcc-7.4.0/libgomp/ChangeLog gcc-7.5.0/libgomp/ChangeLog *** gcc-7.4.0/libgomp/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libgomp/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,28 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-08-30 Jakub Jelinek + + Backported from mainline + 2019-05-24 Jakub Jelinek + + PR libgomp/90585 + * plugin/plugin-hsa.c (print_kernel_dispatch, run_kernel): Use PRIu64 + macro instead of "lu". + (release_kernel_dispatch): Likewise. Cast shadow->debug to uintptr_t + before casting to void *. + + 2019-06-11 Jakub Jelinek + + PR target/90811 + * testsuite/libgomp.c/pr90811.c: New test. + + 2019-01-28 Jakub Jelinek + + PR middle-end/89002 + * testsuite/libgomp.c/pr89002.c: New test. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libgomp/libgomp.info gcc-7.5.0/libgomp/libgomp.info *** gcc-7.4.0/libgomp/libgomp.info Thu Dec 6 10:24:09 2018 --- gcc-7.5.0/libgomp/libgomp.info Thu Nov 14 08:00:41 2019 *************** *** 1,5 **** This is libgomp.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.4.0/gcc-7.4.0/libgomp/libgomp.texi. Copyright (C) 2006-2017 Free Software Foundation, Inc. --- 1,5 ---- This is libgomp.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.5.0/gcc-7.5.0/libgomp/libgomp.texi. Copyright (C) 2006-2017 Free Software Foundation, Inc. diff -Nrcpad gcc-7.4.0/libgomp/plugin/plugin-hsa.c gcc-7.5.0/libgomp/plugin/plugin-hsa.c *** gcc-7.4.0/libgomp/plugin/plugin-hsa.c Tue Jan 31 14:32:58 2017 --- gcc-7.5.0/libgomp/plugin/plugin-hsa.c Fri Aug 30 12:45:31 2019 *************** create_single_kernel_dispatch (struct ke *** 1175,1182 **** static void release_kernel_dispatch (struct GOMP_hsa_kernel_dispatch *shadow) { ! HSA_DEBUG ("Released kernel dispatch: %p has value: %lu (%p)\n", shadow, ! shadow->debug, (void *) shadow->debug); hsa_fns.hsa_memory_free_fn (shadow->kernarg_address); --- 1175,1183 ---- static void release_kernel_dispatch (struct GOMP_hsa_kernel_dispatch *shadow) { ! HSA_DEBUG ("Released kernel dispatch: %p has value: %" PRIu64 " (%p)\n", ! shadow, shadow->debug, ! (void *) (uintptr_t) shadow->debug); hsa_fns.hsa_memory_free_fn (shadow->kernarg_address); *************** print_kernel_dispatch (struct GOMP_hsa_k *** 1297,1305 **** indent_stream (stderr, indent); fprintf (stderr, "kernarg_address: %p\n", dispatch->kernarg_address); indent_stream (stderr, indent); ! fprintf (stderr, "object: %lu\n", dispatch->object); indent_stream (stderr, indent); ! fprintf (stderr, "signal: %lu\n", dispatch->signal); indent_stream (stderr, indent); fprintf (stderr, "private_segment_size: %u\n", dispatch->private_segment_size); --- 1298,1306 ---- indent_stream (stderr, indent); fprintf (stderr, "kernarg_address: %p\n", dispatch->kernarg_address); indent_stream (stderr, indent); ! fprintf (stderr, "object: %" PRIu64 "\n", dispatch->object); indent_stream (stderr, indent); ! fprintf (stderr, "signal: %" PRIu64 "\n", dispatch->signal); indent_stream (stderr, indent); fprintf (stderr, "private_segment_size: %u\n", dispatch->private_segment_size); *************** print_kernel_dispatch (struct GOMP_hsa_k *** 1307,1313 **** fprintf (stderr, "group_segment_size: %u\n", dispatch->group_segment_size); indent_stream (stderr, indent); ! fprintf (stderr, "children dispatches: %lu\n", dispatch->kernel_dispatch_count); indent_stream (stderr, indent); fprintf (stderr, "omp_num_threads: %u\n", --- 1308,1314 ---- fprintf (stderr, "group_segment_size: %u\n", dispatch->group_segment_size); indent_stream (stderr, indent); ! fprintf (stderr, "children dispatches: %" PRIu64 "\n", dispatch->kernel_dispatch_count); indent_stream (stderr, indent); fprintf (stderr, "omp_num_threads: %u\n", *************** run_kernel (struct kernel_info *kernel, *** 1615,1621 **** hsa_signal_t child_s; child_s.handle = shadow->children_dispatches[i]->signal; ! HSA_DEBUG ("Waiting for children completion signal: %lu\n", shadow->children_dispatches[i]->signal); hsa_fns.hsa_signal_load_acquire_fn (child_s); } --- 1616,1622 ---- hsa_signal_t child_s; child_s.handle = shadow->children_dispatches[i]->signal; ! HSA_DEBUG ("Waiting for children completion signal: %" PRIu64 "\n", shadow->children_dispatches[i]->signal); hsa_fns.hsa_signal_load_acquire_fn (child_s); } diff -Nrcpad gcc-7.4.0/libgomp/testsuite/libgomp.c/pr89002.c gcc-7.5.0/libgomp/testsuite/libgomp.c/pr89002.c *** gcc-7.4.0/libgomp/testsuite/libgomp.c/pr89002.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/libgomp/testsuite/libgomp.c/pr89002.c Fri Aug 30 11:33:12 2019 *************** *** 0 **** --- 1,43 ---- + /* PR middle-end/89002 */ + + extern void abort (void); + + int + foo (int x) + { + int a; + int *p = &a; + + #pragma omp taskloop lastprivate (a) + for (a = 0; a < x; ++a) + ; + return *p; + } + + int + bar (int x) + { + int a; + int *p = &a; + + #pragma omp parallel + #pragma omp single + #pragma omp taskloop lastprivate (a) + for (a = 0; a < x; ++a) + ; + return *p; + } + + int + main () + { + #pragma omp parallel + #pragma omp single + { + if (foo (4) != 4) + abort (); + } + if (bar (6) != 6) + abort (); + return 0; + } diff -Nrcpad gcc-7.4.0/libgomp/testsuite/libgomp.c/pr90811.c gcc-7.5.0/libgomp/testsuite/libgomp.c/pr90811.c *** gcc-7.4.0/libgomp/testsuite/libgomp.c/pr90811.c Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/libgomp/testsuite/libgomp.c/pr90811.c Fri Aug 30 12:43:04 2019 *************** *** 0 **** --- 1,29 ---- + /* PR target/90811 */ + + int + main () + { + long long a[100], b[100]; + int i; + for (i = 0; i < 100; i++) + { + a[i] = i; + b[i] = i % 10; + } + #pragma omp target teams distribute parallel for simd map(tofrom: a[:100], b[:100]) + for (i = 0; i < 100; i++) + { + long long c = 0; + const long long d[] = { 1, 3, 5, 7, 9 }; + for (int j = 4; j >= 0; j--) + c = d[j] + b[i] * c; + a[i] += c; + } + for (i = 0; i < 100; i++) + { + const long long r[] = { 1, 26, 229, 976, 2849, 6646, 13381, 24284, 40801, 64594 }; + if (a[i] != r[i % 10] + (i / 10 * 10)) + __builtin_abort (); + } + return 0; + } diff -Nrcpad gcc-7.4.0/libhsail-rt/ChangeLog gcc-7.5.0/libhsail-rt/ChangeLog *** gcc-7.4.0/libhsail-rt/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libhsail-rt/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libiberty/ChangeLog gcc-7.5.0/libiberty/ChangeLog *** gcc-7.4.0/libiberty/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libiberty/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,16 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-07-25 Richard Biener + + PR lto/90924 + Backport from mainline + 2019-07-12 Ren Kimura + + * simple-object-elf.c (simple_object_elf_match): Check zero value + shstrndx. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libiberty/simple-object-elf.c gcc-7.5.0/libiberty/simple-object-elf.c *** gcc-7.4.0/libiberty/simple-object-elf.c Wed Jan 4 11:30:51 2017 --- gcc-7.5.0/libiberty/simple-object-elf.c Thu Jul 25 10:50:47 2019 *************** simple_object_elf_match (unsigned char h *** 479,484 **** --- 479,492 ---- return NULL; } + if (eor->shstrndx == 0) + { + *errmsg = "invalid ELF shstrndx == 0"; + *err = 0; + XDELETE (eor); + return NULL; + } + return (void *) eor; } diff -Nrcpad gcc-7.4.0/libitm/ChangeLog gcc-7.5.0/libitm/ChangeLog *** gcc-7.4.0/libitm/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libitm/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,24 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-09-28 Oleg Endo + + Backport from mainline + 2018-08-03 Sergei Trofimovich + + PR target/86712 + * config/sh/sjlj.S: Adjust to use PIC vs normal code to avoid + absolute relocation in a shared library. + + 2018-12-13 Peter Bergner + + Backport from mainline + 2018-12-13 Peter Bergner + + * config/powerpc/target.h (htm_available): Add support for + PPC_FEATURE2_HTM_NO_SUSPEND. Use __builtin_cpu_supports if available. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libitm/config/powerpc/target.h gcc-7.5.0/libitm/config/powerpc/target.h *** gcc-7.4.0/libitm/config/powerpc/target.h Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/libitm/config/powerpc/target.h Thu Dec 13 18:08:47 2018 *************** cpu_relax (void) *** 81,87 **** static inline bool htm_available (void) { ! return (getauxval (AT_HWCAP2) & PPC_FEATURE2_HAS_HTM) ? true : false; } static inline uint32_t --- 81,100 ---- static inline bool htm_available (void) { ! #ifdef __BUILTIN_CPU_SUPPORTS__ ! if (__builtin_cpu_supports ("htm-no-suspend") ! || __builtin_cpu_supports ("htm")) ! return true; ! #else ! unsigned long htm_flags = PPC_FEATURE2_HAS_HTM ! #ifdef PPC_FEATURE2_HTM_NO_SUSPEND ! | PPC_FEATURE2_HTM_NO_SUSPEND ! #endif ! | 0; ! if (getauxval (AT_HWCAP2) & htm_flags) ! return true; ! #endif ! return false; } static inline uint32_t diff -Nrcpad gcc-7.4.0/libitm/config/sh/sjlj.S gcc-7.5.0/libitm/config/sh/sjlj.S *** gcc-7.4.0/libitm/config/sh/sjlj.S Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/libitm/config/sh/sjlj.S Sat Sep 28 09:12:34 2019 *************** _ITM_beginTransaction: *** 53,59 **** #else cfi_def_cfa_offset (4*10) #endif ! #if defined HAVE_ATTRIBUTE_VISIBILITY || !defined __PIC__ mov.l .Lbegin, r1 jsr @r1 mov r15, r5 --- 53,59 ---- #else cfi_def_cfa_offset (4*10) #endif ! #if !defined __PIC__ mov.l .Lbegin, r1 jsr @r1 mov r15, r5 *************** _ITM_beginTransaction: *** 78,84 **** .align 2 .Lbegin: ! #if defined HAVE_ATTRIBUTE_VISIBILITY || !defined __PIC__ .long GTM_begin_transaction #else .long GTM_begin_transaction@PCREL-(.Lbegin0-.) --- 78,84 ---- .align 2 .Lbegin: ! #if !defined __PIC__ .long GTM_begin_transaction #else .long GTM_begin_transaction@PCREL-(.Lbegin0-.) diff -Nrcpad gcc-7.4.0/libitm/libitm.info gcc-7.5.0/libitm/libitm.info *** gcc-7.4.0/libitm/libitm.info Thu Dec 6 10:25:31 2018 --- gcc-7.5.0/libitm/libitm.info Thu Nov 14 08:02:07 2019 *************** *** 1,5 **** This is libitm.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.4.0/gcc-7.4.0/libitm/libitm.texi. Copyright (C) 2011-2017 Free Software Foundation, Inc. --- 1,5 ---- This is libitm.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.5.0/gcc-7.5.0/libitm/libitm.texi. Copyright (C) 2011-2017 Free Software Foundation, Inc. diff -Nrcpad gcc-7.4.0/libmpx/ChangeLog gcc-7.5.0/libmpx/ChangeLog *** gcc-7.4.0/libmpx/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libmpx/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libobjc/ChangeLog gcc-7.5.0/libobjc/ChangeLog *** gcc-7.4.0/libobjc/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libobjc/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/liboffloadmic/ChangeLog gcc-7.5.0/liboffloadmic/ChangeLog *** gcc-7.4.0/liboffloadmic/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/liboffloadmic/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libquadmath/ChangeLog gcc-7.5.0/libquadmath/ChangeLog *** gcc-7.4.0/libquadmath/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libquadmath/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libquadmath/libquadmath.info gcc-7.5.0/libquadmath/libquadmath.info *** gcc-7.4.0/libquadmath/libquadmath.info Thu Dec 6 10:25:28 2018 --- gcc-7.5.0/libquadmath/libquadmath.info Thu Nov 14 08:02:00 2019 *************** *** 1,5 **** This is libquadmath.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.4.0/gcc-7.4.0/libquadmath/libquadmath.texi. Copyright (C) 2010-2017 Free Software Foundation, Inc. --- 1,5 ---- This is libquadmath.info, produced by makeinfo version 4.13 from ! /space/rguenther/gcc-7.5.0/gcc-7.5.0/libquadmath/libquadmath.texi. Copyright (C) 2010-2017 Free Software Foundation, Inc. diff -Nrcpad gcc-7.4.0/libsanitizer/ChangeLog gcc-7.5.0/libsanitizer/ChangeLog *** gcc-7.4.0/libsanitizer/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libsanitizer/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libssp/ChangeLog gcc-7.5.0/libssp/ChangeLog *** gcc-7.4.0/libssp/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libssp/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libstdc++-v3/ChangeLog gcc-7.5.0/libstdc++-v3/ChangeLog *** gcc-7.4.0/libstdc++-v3/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libstdc++-v3/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,282 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + + 2019-10-24 Jonathan Wakely + + Backport from mainline + 2019-10-18 Jonathan Wakely + + PR libstdc++/92143 + * libsupc++/new_opa.cc (operator new) [__APPLE__]: Increase alignment + to at least sizeof(void*). + + Backport from mainline + 2019-10-08 Jonathan Wakely + + * doc/Makefile.am (doc-html-docbook-regenerate): New target. + (${docbook_outdir}/html): Do not create unused 'html/ext' directory. + * doc/Makefile.in: Regenerate. + * doc/xml/manual/documentation_hacking.xml: Document new target. + * doc/html/*: Regenerate. + + * doc/xml/manual/allocator.xml: Use archived copy of CUJ article. + + Backport from mainline + 2019-05-31 Gerald Pfeifer + + * doc/xml/manual/allocator.xml: Move hoard.org back to http. + + 2019-09-11 Jonathan Wakely + + * python/libstdcxx/v6/xmethods.py (SharedPtrUseCountWorker.__call__): + Fix syntax error. + + 2019-09-02 Jonathan Wakely + + PR middle-end/89303 + * testsuite/20_util/enable_shared_from_this/89303.cc: New test. + + 2019-09-02 Jonathan Wakely + + * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Replace dg-error + with dg-prune-output for enable_if failure. + * testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Add + dg-prune-output for enable_if failure. + + Backport from mainline + 2019-07-31 Jonathan Wakely + + PR libstdc++/91308 + * include/bits/unique_ptr.h (unique_ptr::__safe_conversion_up): Remove + constraints on deleter that should only apply to the constructor. + (unique_ptr::__safe_conversion_up): Likewise. + (unique_ptr::unique_ptr(unique_ptr&&)): Restore + constraints on deleter here. + * testsuite/20_util/unique_ptr/assign/91308.cc: New test. + + 2019-09-02 Jonathan Wakely + + Backport from mainline + 2019-07-29 Jonathan Wakely + + PR libstdc++/51333 + * libsupc++/cxxabi.h (__gnu_cxx::recursive_init_error): Do not define + constructor inline. + * libsupc++/guard_error.cc (__gnu_cxx::recursive_init_error): Define + constructor. + * testsuite/18_support/51333.cc: New test. + + 2019-09-02 Jonathan Wakely + + Backport from mainline + 2019-06-07 Jonathan Wakely + + PR libstdc++/90770 + * src/Makefile.am (stamp-debug): Also test for missing makefile. + * src/Makefile.in: Regenerate. + + 2019-09-02 Jonathan Wakely + + Backport from mainline + 2019-05-23 Jonathan Wakely + + * doc/xml/manual/status_cxx2017.xml: Add feature test macro for + P0040R3. + * doc/html/*: Regenerate. + + Backport from mainline + 2019-06-20 Jonathan Wakely + + * doc/xml/manual/status_cxx2017.xml: Fix outdated reference to + C++17 working draft. + + Backport from mainline + 2019-05-21 Jonathan Wakely + + * doc/xml/manual/shared_ptr.xml: Fix names of lock policy constants. + + 2019-09-02 Jonathan Wakely + + Backport from mainline + 2019-05-17 Jonathan Wakely + + * include/bits/random.h (seed_seq::param): Fix non-reserved name. + * include/experimental/type_traits (is_detected_exact) + (is_detected_exact_v): Likewise. + * testsuite/17_intro/names.cc: Check for more non-reserved names. + * testsuite/experimental/names.cc: New test. + + 2019-06-26 Jonathan Wakely + + Backport from mainline + 2019-05-28 Jonathan Wakely + + PR libstdc++/90634 + * include/experimental/bits/fs_path.h (path::path(path&&)): Only call + _M_split_cmpts() for a path with multiple components. + (path::_S_is_dir_sep()): Add missing 'static' keyword to function. + * src/filesystem/path.cc (path::_M_split_cmpts()): Count number of + components and reserve space in vector. Return early when there is + only one component. + * testsuite/experimental/filesystem/path/construct/90634.cc: New test. + + 2019-05-23 Jonathan Wakely + + Backport from mainline + 2019-02-27 Jonathan Wakely + + PR libstdc++/89466 + * acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Reorder check for local + stylesheet directories before check for xsltproc. Try to use + xmlcatalog to find local stylesheet directory before trying hardcoded + paths. Add path used by suse to hardcoded paths. Adjust xsltproc + check to look for the same stylesheet as doc/Makefile.am uses. Don't + use xsltproc if xmlcatalog fails to find a local stylesheet. + * configure.ac: Check for xmlcatalog. + * Makefile.in: Regenerate. + * configure: Likewise. + * doc/Makefile.in: Likewise. + * include/Makefile.in: Likewise. + * libsupc++/Makefile.in: Likewise. + * po/Makefile.in: Likewise. + * python/Makefile.in: Likewise. + * src/Makefile.in: Likewise. + * src/c++11/Makefile.in: Likewise. + * src/c++17/Makefile.in: Likewise. + * src/c++98/Makefile.in: Likewise. + * src/filesystem/Makefile.in: Likewise. + * testsuite/Makefile.in: Likewise. + + 2019-05-23 Jonathan Wakely + + Backport from mainline + 2019-01-22 Jonathan Wakely + + PR libstdc++/88740 + * testsuite/util/testsuite_hooks.h [stderr] (VERIFY): Use fprintf to + write to stderr instead of using printf. + + 2019-05-23 Jonathan Wakely + + Backport from mainline + 2019-05-23 Jonathan Wakely + + * include/experimental/any (__any_caster): Use RTTI if comparing + addresses fails, to support non-unique addresses in shared libraries. + * include/std/any (__any_caster): Likewise. + * testsuite/experimental/any/misc/any_cast_neg.cc: Use 0 for dg-error + line number. + + 2019-05-23 Jonathan Wakely + + Backport from mainline + 2019-05-23 Jonathan Wakely + + PR libstdc++/90220 + * include/experimental/any (__any_caster): Constrain to only be + callable for object types. Use remove_cv_t instead of decay_t. + If the type decays or isn't copy constructible, compare the manager + function to a dummy specialization. + (__any_caster): Add overload constrained for non-object types. + (any::_Manager_internal<_Op>): Add dummy specialization. + * testsuite/experimental/any/misc/any_cast.cc: Test function types + and array types. + + Backport from mainline + 2019-04-24 Jonathan Wakely + + PR libstdc++/90220 + * include/std/any (__any_caster): Use remove_cv_t instead of decay_t. + Avoid a runtime check for types that can never be stored in std::any. + * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with + array types. + + Backport from mainline + 2019-04-24 Jonathan Wakely + + PR libstdc++/90220 (partial) + * include/std/any (any_cast(any*), any_cast(const any*)): Do + not attempt ill-formed static_cast to pointers to non-object types. + * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with + function types. + + 2019-05-23 Jonathan Wakely + + Backported from mainline + 2019-01-15 Jonathan Wakely + + * doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2 + status. + * include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms): + Define. + * include/std/any (__cpp_lib_any): Define as 201606L, because P0032R3 + changes are supported. + * include/std/optional (__cpp_lib_optional): Likewise. + * include/std/variant (__cpp_lib_variant): Likewise. + + 2019-05-08 Jonathan Wakely + + Backport from mainline + 2019-04-17 Jonathan Wakely + + PR libstdc++/90105 + * include/bits/forward_list.tcc (operator==): Do not use operator!= to + compare elements. + (forward_list::sort(Comp)): When elements are equal take the one + earlier in the list, so that sort is stable. + * testsuite/23_containers/forward_list/operations/90105.cc: New test. + * testsuite/23_containers/forward_list/comparable.cc: Test with + types that meet the minimum EqualityComparable and LessThanComparable + requirements. Remove irrelevant comment. + + Backport from mainline + 2019-03-11 Jonathan Wakely + + PR libstdc++/89629 + * libsupc++/hash_bytes.cc [__SIZEOF_SIZE_T__ == 8] (_Hash_bytes): + Use correct type for len_aligned. + * testsuite/20_util/hash/89629.cc: New test. + + 2019-02-22 Jonathan Wakely + + PR libstdc++/89446 + * include/bits/char_traits.h (__constant_char_array): Check index is + in range before dereferencing. + * testsuite/21_strings/basic_string_view/operators/char/89446.cc: + New test. + + 2018-12-24 Iain Sandoe + + Backport from mainline + 2018-12-06 Iain Sandoe + + * scripts/make_exports.pl (check names): Don’t try to export + construction vtable symbols. + + 2018-12-24 Iain Sandoe + + Backport from mainline + 2018-12-06 Jonathan Wakely + Iain Sandoe + + PR libstdc++/64883 + * testsuite/17_intro/headers/c++1998/all_attributes.cc: Don't test + always_inline on Darwin. + * testsuite/17_intro/headers/c++2011/all_attributes.cc: Likewise. + * testsuite/17_intro/headers/c++2014/all_attributes.cc: Likewise. + * testsuite/17_intro/headers/c++2017/all_attributes.cc: Likewise. + * testsuite/17_intro/headers/c++2020/all_attributes.cc: Likewise. + + 2018-12-24 Iain Sandoe + + Backport from mainline + 2018-08-25 Iain Sandoe + + PR libstdc++/70694 + * configure.host (OPT_LDFLAGS): Don't append + -fvisibility-inlines-hidden for newer Darwin. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/libstdc++-v3/Makefile.in gcc-7.5.0/libstdc++-v3/Makefile.in *** gcc-7.4.0/libstdc++-v3/Makefile.in Tue Jan 17 09:38:48 2017 --- gcc-7.5.0/libstdc++-v3/Makefile.in Thu May 23 15:34:42 2019 *************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@ *** 232,237 **** --- 232,238 ---- VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ WARN_FLAGS = @WARN_FLAGS@ WERROR = @WERROR@ + XMLCATALOG = @XMLCATALOG@ XMLLINT = @XMLLINT@ XSLTPROC = @XSLTPROC@ XSL_STYLE_DIR = @XSL_STYLE_DIR@ diff -Nrcpad gcc-7.4.0/libstdc++-v3/acinclude.m4 gcc-7.5.0/libstdc++-v3/acinclude.m4 *** gcc-7.4.0/libstdc++-v3/acinclude.m4 Tue Aug 7 22:50:49 2018 --- gcc-7.5.0/libstdc++-v3/acinclude.m4 Thu May 23 15:34:42 2019 *************** dnl XSL_STYLE_DIR *** 642,675 **** dnl AC_DEFUN([GLIBCXX_CONFIGURE_DOCBOOK], [ ! AC_MSG_CHECKING([for docbook stylesheets for documentation creation]) ! glibcxx_stylesheets=no ! if test x${XSLTPROC} = xyes && echo '' | xsltproc --noout --nonet --xinclude http://docbook.sourceforge.net/release/xsl-ns/current/xhtml-1_1/docbook.xsl - 2>/dev/null; then ! glibcxx_stylesheets=yes ! fi ! AC_MSG_RESULT($glibcxx_stylesheets) AC_MSG_CHECKING([for local stylesheet directory]) glibcxx_local_stylesheets=no ! if test x"$glibcxx_stylesheets" = x"yes"; then ! if test -d /usr/share/sgml/docbook/xsl-ns-stylesheets; then ! glibcxx_local_stylesheets=yes ! XSL_STYLE_DIR=/usr/share/sgml/docbook/xsl-ns-stylesheets ! fi ! if test -d /usr/share/xml/docbook/stylesheet/docbook-xsl-ns; then ! glibcxx_local_stylesheets=yes ! XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns ! fi ! if test -d /usr/share/xml/docbook/stylesheet/nwalsh5/current; then ! glibcxx_local_stylesheets=yes ! XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/nwalsh5/current ! fi fi AC_MSG_RESULT($glibcxx_local_stylesheets) if test x"$glibcxx_local_stylesheets" = x"yes"; then AC_SUBST(XSL_STYLE_DIR) AC_MSG_NOTICE($XSL_STYLE_DIR) else glibcxx_stylesheets=no fi --- 642,684 ---- dnl AC_DEFUN([GLIBCXX_CONFIGURE_DOCBOOK], [ ! glibcxx_docbook_url=http://docbook.sourceforge.net/release/xsl-ns/current/ AC_MSG_CHECKING([for local stylesheet directory]) glibcxx_local_stylesheets=no ! if test x${XMLCATALOG} = xyes && xsl_style_dir=`xmlcatalog "" $glibcxx_docbook_url 2>/dev/null` ! then ! XSL_STYLE_DIR=`echo $xsl_style_dir | sed -n 's;^file://;;p'` ! glibcxx_local_stylesheets=yes ! else ! for dir in \ ! /usr/share/sgml/docbook/xsl-ns-stylesheets \ ! /usr/share/xml/docbook/stylesheet/docbook-xsl-ns \ ! /usr/share/xml/docbook/stylesheet/nwalsh5/current \ ! /usr/share/xml/docbook/stylesheet/nwalsh/current ! do ! if test -d $dir; then ! glibcxx_local_stylesheets=yes ! XSL_STYLE_DIR=$dir ! break ! fi ! done fi AC_MSG_RESULT($glibcxx_local_stylesheets) if test x"$glibcxx_local_stylesheets" = x"yes"; then AC_SUBST(XSL_STYLE_DIR) AC_MSG_NOTICE($XSL_STYLE_DIR) + + AC_MSG_CHECKING([for docbook stylesheets for documentation creation]) + glibcxx_stylesheets=no + if test x${XMLCATALOG} = xno || xmlcatalog "" $glibcxx_docbook_url/xhtml/docbook.xsl >/dev/null 2>&1; then + if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude $glibcxx_docbook_url/xhtml/docbook.xsl - 2>/dev/null; then + glibcxx_stylesheets=yes + fi + fi + AC_MSG_RESULT($glibcxx_stylesheets) + else glibcxx_stylesheets=no fi diff -Nrcpad gcc-7.4.0/libstdc++-v3/configure gcc-7.5.0/libstdc++-v3/configure *** gcc-7.4.0/libstdc++-v3/configure Mon Aug 13 19:16:02 2018 --- gcc-7.5.0/libstdc++-v3/configure Thu May 23 15:34:42 2019 *************** BUILD_EPUB_TRUE *** 637,642 **** --- 637,643 ---- XSL_STYLE_DIR XMLLINT XSLTPROC + XMLCATALOG DOT DOXYGEN BUILD_INFO_FALSE *************** else *** 11605,11611 **** lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF ! #line 11608 "configure" #include "confdefs.h" #if HAVE_DLFCN_H --- 11606,11612 ---- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF ! #line 11609 "configure" #include "confdefs.h" #if HAVE_DLFCN_H *************** else *** 11711,11717 **** lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF ! #line 11714 "configure" #include "confdefs.h" #if HAVE_DLFCN_H --- 11712,11718 ---- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF ! #line 11715 "configure" #include "confdefs.h" #if HAVE_DLFCN_H *************** $as_echo "$glibcxx_cv_atomic_long_long" *** 15397,15403 **** # Fake what AC_TRY_COMPILE does. cat > conftest.$ac_ext << EOF ! #line 15400 "configure" int main() { typedef bool atomic_type; --- 15398,15404 ---- # Fake what AC_TRY_COMPILE does. cat > conftest.$ac_ext << EOF ! #line 15401 "configure" int main() { typedef bool atomic_type; *************** $as_echo "$glibcxx_cv_atomic_bool" >&6; *** 15432,15438 **** rm -f conftest* cat > conftest.$ac_ext << EOF ! #line 15435 "configure" int main() { typedef short atomic_type; --- 15433,15439 ---- rm -f conftest* cat > conftest.$ac_ext << EOF ! #line 15436 "configure" int main() { typedef short atomic_type; *************** $as_echo "$glibcxx_cv_atomic_short" >&6; *** 15467,15473 **** rm -f conftest* cat > conftest.$ac_ext << EOF ! #line 15470 "configure" int main() { // NB: _Atomic_word not necessarily int. --- 15468,15474 ---- rm -f conftest* cat > conftest.$ac_ext << EOF ! #line 15471 "configure" int main() { // NB: _Atomic_word not necessarily int. *************** $as_echo "$glibcxx_cv_atomic_int" >&6; } *** 15503,15509 **** rm -f conftest* cat > conftest.$ac_ext << EOF ! #line 15506 "configure" int main() { typedef long long atomic_type; --- 15504,15510 ---- rm -f conftest* cat > conftest.$ac_ext << EOF ! #line 15507 "configure" int main() { typedef long long atomic_type; *************** $as_echo "$as_me: WARNING: Performance o *** 15584,15590 **** # unnecessary for this test. cat > conftest.$ac_ext << EOF ! #line 15587 "configure" int main() { _Decimal32 d1; --- 15585,15591 ---- # unnecessary for this test. cat > conftest.$ac_ext << EOF ! #line 15588 "configure" int main() { _Decimal32 d1; *************** ac_compiler_gnu=$ac_cv_cxx_compiler_gnu *** 15626,15632 **** # unnecessary for this test. cat > conftest.$ac_ext << EOF ! #line 15629 "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; --- 15627,15633 ---- # unnecessary for this test. cat > conftest.$ac_ext << EOF ! #line 15630 "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; *************** $as_echo "$enable_int128" >&6; } *** 15660,15666 **** rm -f conftest* cat > conftest.$ac_ext << EOF ! #line 15663 "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; --- 15661,15667 ---- rm -f conftest* cat > conftest.$ac_ext << EOF ! #line 15664 "configure" template<typename T1, typename T2> struct same { typedef T2 type; }; *************** fi *** 80998,81003 **** --- 80999,81042 ---- # Check for docbook + # Extract the first word of "xmlcatalog", so it can be a program name with args. + set dummy xmlcatalog; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 + $as_echo_n "checking for $ac_word... " >&6; } + if test "${ac_cv_prog_XMLCATALOG+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + if test -n "$XMLCATALOG"; then + ac_cv_prog_XMLCATALOG="$XMLCATALOG" # Let the user override the test. + else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_XMLCATALOG="yes" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done + IFS=$as_save_IFS + + test -z "$ac_cv_prog_XMLCATALOG" && ac_cv_prog_XMLCATALOG="no" + fi + fi + XMLCATALOG=$ac_cv_prog_XMLCATALOG + if test -n "$XMLCATALOG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XMLCATALOG" >&5 + $as_echo "$XMLCATALOG" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + $as_echo "no" >&6; } + fi + + # Extract the first word of "xsltproc", so it can be a program name with args. set dummy xsltproc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 *************** fi *** 81076,81106 **** ! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for docbook stylesheets for documentation creation" >&5 ! $as_echo_n "checking for docbook stylesheets for documentation creation... " >&6; } ! glibcxx_stylesheets=no ! if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude http://docbook.sourceforge.net/release/xsl-ns/current/xhtml-1_1/docbook.xsl - 2>/dev/null; then ! glibcxx_stylesheets=yes ! fi ! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_stylesheets" >&5 ! $as_echo "$glibcxx_stylesheets" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for local stylesheet directory" >&5 $as_echo_n "checking for local stylesheet directory... " >&6; } glibcxx_local_stylesheets=no ! if test x"$glibcxx_stylesheets" = x"yes"; then ! if test -d /usr/share/sgml/docbook/xsl-ns-stylesheets; then ! glibcxx_local_stylesheets=yes ! XSL_STYLE_DIR=/usr/share/sgml/docbook/xsl-ns-stylesheets ! fi ! if test -d /usr/share/xml/docbook/stylesheet/docbook-xsl-ns; then ! glibcxx_local_stylesheets=yes ! XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns ! fi ! if test -d /usr/share/xml/docbook/stylesheet/nwalsh5/current; then ! glibcxx_local_stylesheets=yes ! XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/nwalsh5/current ! fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_local_stylesheets" >&5 $as_echo "$glibcxx_local_stylesheets" >&6; } --- 81115,81142 ---- ! glibcxx_docbook_url=http://docbook.sourceforge.net/release/xsl-ns/current/ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for local stylesheet directory" >&5 $as_echo_n "checking for local stylesheet directory... " >&6; } glibcxx_local_stylesheets=no ! if test x${XMLCATALOG} = xyes && xsl_style_dir=`xmlcatalog "" $glibcxx_docbook_url 2>/dev/null` ! then ! XSL_STYLE_DIR=`echo $xsl_style_dir | sed -n 's;^file://;;p'` ! glibcxx_local_stylesheets=yes ! else ! for dir in \ ! /usr/share/sgml/docbook/xsl-ns-stylesheets \ ! /usr/share/xml/docbook/stylesheet/docbook-xsl-ns \ ! /usr/share/xml/docbook/stylesheet/nwalsh5/current \ ! /usr/share/xml/docbook/stylesheet/nwalsh/current ! do ! if test -d $dir; then ! glibcxx_local_stylesheets=yes ! XSL_STYLE_DIR=$dir ! break ! fi ! done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_local_stylesheets" >&5 $as_echo "$glibcxx_local_stylesheets" >&6; } *************** if test x"$glibcxx_local_stylesheets" = *** 81109,81114 **** --- 81145,81162 ---- { $as_echo "$as_me:${as_lineno-$LINENO}: $XSL_STYLE_DIR" >&5 $as_echo "$as_me: $XSL_STYLE_DIR" >&6;} + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for docbook stylesheets for documentation creation" >&5 + $as_echo_n "checking for docbook stylesheets for documentation creation... " >&6; } + glibcxx_stylesheets=no + if test x${XMLCATALOG} = xno || xmlcatalog "" $glibcxx_docbook_url/xhtml/docbook.xsl >/dev/null 2>&1; then + if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude $glibcxx_docbook_url/xhtml/docbook.xsl - 2>/dev/null; then + glibcxx_stylesheets=yes + fi + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_stylesheets" >&5 + $as_echo "$glibcxx_stylesheets" >&6; } + else glibcxx_stylesheets=no fi diff -Nrcpad gcc-7.4.0/libstdc++-v3/configure.ac gcc-7.5.0/libstdc++-v3/configure.ac *** gcc-7.4.0/libstdc++-v3/configure.ac Mon Aug 13 19:16:02 2018 --- gcc-7.5.0/libstdc++-v3/configure.ac Thu May 23 15:34:42 2019 *************** AC_CHECK_PROG([DOXYGEN], doxygen, yes, n *** 436,441 **** --- 436,442 ---- AC_CHECK_PROG([DOT], dot, yes, no) # Check for docbook + AC_CHECK_PROG([XMLCATALOG], xmlcatalog, yes, no) AC_CHECK_PROG([XSLTPROC], xsltproc, yes, no) AC_CHECK_PROG([XMLLINT], xmllint, yes, no) GLIBCXX_CONFIGURE_DOCBOOK diff -Nrcpad gcc-7.4.0/libstdc++-v3/configure.host gcc-7.5.0/libstdc++-v3/configure.host *** gcc-7.4.0/libstdc++-v3/configure.host Thu Feb 2 16:24:03 2017 --- gcc-7.5.0/libstdc++-v3/configure.host Mon Dec 24 12:26:11 2018 *************** case "${host_os}" in *** 230,245 **** os_include_dir="os/newlib" OPT_LDFLAGS="${OPT_LDFLAGS} \$(lt_host_flags)" ;; ! darwin | darwin[1-7] | darwin[1-7].*) ! # On Darwin, performance is improved if libstdc++ is single-module. ! # Up to at least 10.3.7, -flat_namespace is required for proper ! # treatment of coalesced symbols. OPT_LDFLAGS="${OPT_LDFLAGS} -Wl,-single_module -Wl,-flat_namespace" os_include_dir="os/bsd/darwin" ;; ! darwin[89] | darwin[89].* | darwin[1-9][0-9]* ) ! # On Darwin, performance is improved if libstdc++ is single-module, ! # and on 8+ compatibility is better if not -flat_namespace. OPT_LDFLAGS="${OPT_LDFLAGS} -Wl,-single_module" case "${host_cpu}" in i[34567]86 | x86_64) --- 230,244 ---- os_include_dir="os/newlib" OPT_LDFLAGS="${OPT_LDFLAGS} \$(lt_host_flags)" ;; ! darwin[4-7] | darwin[4-7].*) ! # For earlier Darwin, performance is improved if libstdc++ is ! # single-module. Up to at least 10.3.7, -flat_namespace is required ! # for proper treatment of coalesced symbols. OPT_LDFLAGS="${OPT_LDFLAGS} -Wl,-single_module -Wl,-flat_namespace" os_include_dir="os/bsd/darwin" ;; ! darwin8 | darwin8.* ) ! # For 8+ compatibility is better if not -flat_namespace. OPT_LDFLAGS="${OPT_LDFLAGS} -Wl,-single_module" case "${host_cpu}" in i[34567]86 | x86_64) *************** case "${host_os}" in *** 248,253 **** --- 247,256 ---- esac os_include_dir="os/bsd/darwin" ;; + darwin*) + # Post Darwin8, defaults should be sufficient. + os_include_dir="os/bsd/darwin" + ;; *djgpp*) # leading * picks up "msdosdjgpp" os_include_dir="os/djgpp" error_constants_dir="os/djgpp" diff -Nrcpad gcc-7.4.0/libstdc++-v3/doc/Makefile.am gcc-7.5.0/libstdc++-v3/doc/Makefile.am *** gcc-7.4.0/libstdc++-v3/doc/Makefile.am Tue Feb 7 22:44:13 2017 --- gcc-7.5.0/libstdc++-v3/doc/Makefile.am Thu Oct 24 15:30:57 2019 *************** ${docbook_outdir}/fo: *** 477,483 **** ${docbook_outdir}/html: mkdir -p ${docbook_outdir}/html - mkdir -p ${docbook_outdir}/html/ext mkdir -p ${docbook_outdir}/html/images mkdir -p ${docbook_outdir}/html/manual --- 477,482 ---- *************** stamp-html-docbook: $(xml_sources) ${doc *** 546,551 **** --- 545,556 ---- doc-html-docbook: stamp-html-docbook-data + # Generate the HTML pages and copy them back to the source tree. + doc-html-docbook-regenerate: doc-html-docbook + $(INSTALL_DATA) ${docbook_outdir}/html/*.html ${top_srcdir}/doc/html + $(INSTALL_DATA) ${docbook_outdir}/html/images/* ${top_srcdir}/doc/html/images + $(INSTALL_DATA) ${docbook_outdir}/html/manual/*.html ${top_srcdir}/doc/html/manual + # HTML, all one page # NB: Have to generate customization XSL for UTF-8 output. manual_html = ${docbook_outdir}/html/libstdc++-manual-single.html diff -Nrcpad gcc-7.4.0/libstdc++-v3/doc/Makefile.in gcc-7.5.0/libstdc++-v3/doc/Makefile.in *** gcc-7.4.0/libstdc++-v3/doc/Makefile.in Wed Mar 15 15:23:44 2017 --- gcc-7.5.0/libstdc++-v3/doc/Makefile.in Thu Oct 24 15:30:57 2019 *************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@ *** 204,209 **** --- 204,210 ---- VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ WARN_FLAGS = @WARN_FLAGS@ WERROR = @WERROR@ + XMLCATALOG = @XMLCATALOG@ # Validate existing XML structure. XMLLINT = xmllint *************** ${docbook_outdir}/fo: *** 925,931 **** ${docbook_outdir}/html: mkdir -p ${docbook_outdir}/html - mkdir -p ${docbook_outdir}/html/ext mkdir -p ${docbook_outdir}/html/images mkdir -p ${docbook_outdir}/html/manual --- 926,931 ---- *************** stamp-html-docbook: $(xml_sources) ${doc *** 977,982 **** --- 977,988 ---- $(STAMP) stamp-html-docbook doc-html-docbook: stamp-html-docbook-data + + # Generate the HTML pages and copy them back to the source tree. + doc-html-docbook-regenerate: doc-html-docbook + $(INSTALL_DATA) ${docbook_outdir}/html/*.html ${top_srcdir}/doc/html + $(INSTALL_DATA) ${docbook_outdir}/html/images/* ${top_srcdir}/doc/html/images + $(INSTALL_DATA) ${docbook_outdir}/html/manual/*.html ${top_srcdir}/doc/html/manual stamp-html-single-docbook: $(xml_sources) ${docbook_outdir}/html @echo "Generating html single file..." $(XSLTPROC) $(XSLT_PARAM) $(XSLT_FLAGS) -o ${manual_html} \ diff -Nrcpad gcc-7.4.0/libstdc++-v3/doc/html/manual/documentation_hacking.html gcc-7.5.0/libstdc++-v3/doc/html/manual/documentation_hacking.html *** gcc-7.4.0/libstdc++-v3/doc/html/manual/documentation_hacking.html Wed Oct 25 14:18:43 2017 --- gcc-7.5.0/libstdc++-v3/doc/html/manual/documentation_hacking.html Thu Oct 24 15:30:57 2019 *************** *** 381,391 **** </p><p> </p><pre class="screen"><strong class="userinput"><code>make doc-xml-single-docbook</code></strong></pre><p> </p><p> ! Generated files are output into separate sub directores of <code class="filename">doc/docbook/</code> in the build directory, based on the output format. For instance, the HTML docs will be in <code class="filename">doc/docbook/html</code>. </p><p> If the Docbook stylesheets are installed in a custom location, one can use the variable <code class="literal">XSL_STYLE_DIR</code> to override the Makefile defaults. For example: --- 381,396 ---- </p><p> </p><pre class="screen"><strong class="userinput"><code>make doc-xml-single-docbook</code></strong></pre><p> </p><p> ! Generated files are output into separate sub-directores of <code class="filename">doc/docbook/</code> in the build directory, based on the output format. For instance, the HTML docs will be in <code class="filename">doc/docbook/html</code>. </p><p> + The </p><pre class="screen">doc-html-docbook-regenerate</pre><p> target will generate + the HTML files and copy them back to the libstdc++ source tree. + This can be used to update the HTML files that are checked in to + version control. + </p><p> If the Docbook stylesheets are installed in a custom location, one can use the variable <code class="literal">XSL_STYLE_DIR</code> to override the Makefile defaults. For example: diff -Nrcpad gcc-7.4.0/libstdc++-v3/doc/html/manual/memory.html gcc-7.5.0/libstdc++-v3/doc/html/manual/memory.html *** gcc-7.4.0/libstdc++-v3/doc/html/manual/memory.html Wed Oct 25 14:18:43 2017 --- gcc-7.5.0/libstdc++-v3/doc/html/manual/memory.html Thu Oct 24 15:30:57 2019 *************** *** 314,326 **** </em>. </span> isoc++_1998 <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.3"></a><p><span class="title"><em> ! <a class="link" href="http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759" target="_top"> The Standard Librarian: What Are Allocators Good For? ! </a> ! </em>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername"> C/C++ Users Journal ! . </span></span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.4"></a><p><span class="title"><em> ! <a class="link" href="http://www.hoard.org/" target="_top"> The Hoard Memory Allocator </a> </em>. </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.5"></a><p><span class="title"><em> --- 314,326 ---- </em>. </span> isoc++_1998 <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.3"></a><p><span class="title"><em> ! <a class="link" href="https://web.archive.org/web/20190622154249/http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759" target="_top"> The Standard Librarian: What Are Allocators Good For? ! </a> ! </em>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername"> C/C++ Users Journal ! . </span></span><span class="pubdate">2000-12. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.4"></a><p><span class="title"><em> ! <a class="link" href="http://hoard.org" target="_top"> The Hoard Memory Allocator </a> </em>. </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span></p></div><div class="biblioentry"><a id="id-1.3.4.4.4.3.9.5"></a><p><span class="title"><em> *************** not be conforming for <code class="class *** 554,560 **** extra template parameter, even if it had a default value. The available policies are: </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> ! <code class="constant">_S_Atomic</code> </p><p> Selected when GCC supports a builtin atomic compare-and-swap operation on the target processor (see <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html" target="_top">Atomic --- 554,560 ---- extra template parameter, even if it had a default value. The available policies are: </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> ! <code class="constant">_S_atomic</code> </p><p> Selected when GCC supports a builtin atomic compare-and-swap operation on the target processor (see <a class="link" href="http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html" target="_top">Atomic *************** Builtins</a>.) The reference counts are *** 562,574 **** algorithm and GCC's atomic builtins, which provide the required memory synchronisation. </p></li><li class="listitem"><p> ! <code class="constant">_S_Mutex</code> </p><p> The _Sp_counted_base specialization for this policy contains a mutex, which is locked in add_ref_lock(). This policy is used when GCC's atomic builtins aren't available so explicit memory barriers are needed in places. </p></li><li class="listitem"><p> ! <code class="constant">_S_Single</code> </p><p> This policy uses a non-reentrant add_ref_lock() with no locking. It is used when libstdc++ is built without <code class="literal">--enable-threads</code>. --- 562,574 ---- algorithm and GCC's atomic builtins, which provide the required memory synchronisation. </p></li><li class="listitem"><p> ! <code class="constant">_S_mutex</code> </p><p> The _Sp_counted_base specialization for this policy contains a mutex, which is locked in add_ref_lock(). This policy is used when GCC's atomic builtins aren't available so explicit memory barriers are needed in places. </p></li><li class="listitem"><p> ! <code class="constant">_S_single</code> </p><p> This policy uses a non-reentrant add_ref_lock() with no locking. It is used when libstdc++ is built without <code class="literal">--enable-threads</code>. diff -Nrcpad gcc-7.4.0/libstdc++-v3/doc/html/manual/status.html gcc-7.5.0/libstdc++-v3/doc/html/manual/status.html *** gcc-7.4.0/libstdc++-v3/doc/html/manual/status.html Fri Oct 12 11:36:18 2018 --- gcc-7.5.0/libstdc++-v3/doc/html/manual/status.html Mon Sep 2 11:09:51 2019 *************** presence of the required flag. *** 518,525 **** </p><p> This section describes the C++17 and library TS support in the GCC 7 series. </p><p> ! The following table lists new library features that have been accepted into ! the C++17 working draft. The "Proposal" column provides a link to the ISO C++ committee proposal that describes the feature, while the "Status" column indicates the first version of GCC that contains an implementation of this feature (if it has been implemented). --- 518,525 ---- </p><p> This section describes the C++17 and library TS support in the GCC 7 series. </p><p> ! The following table lists new library features that are included in ! the C++17 standard. The "Proposal" column provides a link to the ISO C++ committee proposal that describes the feature, while the "Status" column indicates the first version of GCC that contains an implementation of this feature (if it has been implemented). *************** Feature-testing recommendations for C++< *** 657,663 **** <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0040r3.html" target="_top"> P0040R3 </a> ! </td><td align="center"> 7.1 </td><td align="left"><code class="code"> </code></td></tr><tr><td align="left"> <code class="code">shared_ptr::weak_type</code></td><td align="left"> <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0163r0.html" target="_top"> P0163R0 </a> --- 657,663 ---- <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0040r3.html" target="_top"> P0040R3 </a> ! </td><td align="center"> 7.1 </td><td align="left"><code class="code">__cpp_lib_raw_memory_algorithms >= 201606L</code></td></tr><tr><td align="left"> <code class="code">shared_ptr::weak_type</code></td><td align="left"> <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0163r0.html" target="_top"> P0163R0 </a> *************** Feature-testing recommendations for C++< *** 811,817 **** P0067R5 </a> </td><td align="center"> 8 (only integral types supported) </td><td align="left"><code class="code"> __has_include(<charconv>) </code> ! <code class="code"> __cpp_lib_to_chars >= 201611 </code></td></tr></tbody></table></div></div><br class="table-break" /><p> Note 1: This feature is supported in GCC 7.1 and 7.2 but before GCC 7.3 the <code class="code">__cpp_lib</code> macro is not defined, and compilation will fail if the header is included without using <code class="option">-std</code> to enable C++17 support. --- 811,829 ---- P0067R5 </a> </td><td align="center"> 8 (only integral types supported) </td><td align="left"><code class="code"> __has_include(<charconv>) </code> ! <code class="code"> __cpp_lib_to_chars >= 201611 </code></td></tr><tr><td align="left"> Homogeneous interface for variant, any and optional </td><td align="left"> ! <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0032r3.pdf" target="_top"> ! P0032R3 ! </a> ! </td><td align="center"> 7.1 </td><td align="left"> ! <code class="code"> __cpp_lib_any >= 201606 </code>, ! <code class="code"> __cpp_lib_optional >= 201606 </code>, ! <code class="code"> __cpp_lib_variant >= 201606 </code> ! </td></tr><tr><td align="left"> Making Optional Greater Equal Again </td><td align="left"> ! <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0307r2.pdf" target="_top"> ! P0307R2 ! </a> ! </td><td align="center"> 7.1 </td><td align="left"> <code class="code"> __cpp_lib_optional >= 201606 </code> </td></tr></tbody></table></div></div><br class="table-break" /><p> Note 1: This feature is supported in GCC 7.1 and 7.2 but before GCC 7.3 the <code class="code">__cpp_lib</code> macro is not defined, and compilation will fail if the header is included without using <code class="option">-std</code> to enable C++17 support. diff -Nrcpad gcc-7.4.0/libstdc++-v3/doc/xml/manual/allocator.xml gcc-7.5.0/libstdc++-v3/doc/xml/manual/allocator.xml *** gcc-7.4.0/libstdc++-v3/doc/xml/manual/allocator.xml Fri Jun 16 12:19:54 2017 --- gcc-7.5.0/libstdc++-v3/doc/xml/manual/allocator.xml Thu Oct 24 15:30:53 2019 *************** *** 502,513 **** </biblioentry> <biblioentry> ! <title> ! <link xmlns:xlink="http://www.w3.org/1999/xlink" ! xlink:href="http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759"> The Standard Librarian: What Are Allocators Good For? ! </link> ! MattAustern --- 502,513 ---- ! ! <link xmlns:xlink="http://www.w3.org/1999/xlink" ! xlink:href="https://web.archive.org/web/20190622154249/http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759"> The Standard Librarian: What Are Allocators Good For? ! </link> ! MattAustern *************** *** 515,526 **** C/C++ Users Journal <link xmlns:xlink="http://www.w3.org/1999/xlink" ! xlink:href="http://www.hoard.org/"> The Hoard Memory Allocator </link> --- 515,527 ---- C/C++ Users Journal + 2000-12 <link xmlns:xlink="http://www.w3.org/1999/xlink" ! xlink:href="http://hoard.org"> The Hoard Memory Allocator </link> diff -Nrcpad gcc-7.4.0/libstdc++-v3/doc/xml/manual/documentation_hacking.xml gcc-7.5.0/libstdc++-v3/doc/xml/manual/documentation_hacking.xml *** gcc-7.4.0/libstdc++-v3/doc/xml/manual/documentation_hacking.xml Wed Mar 1 12:53:28 2017 --- gcc-7.5.0/libstdc++-v3/doc/xml/manual/documentation_hacking.xml Thu Oct 24 15:30:57 2019 *************** *** 805,811 **** ! Generated files are output into separate sub directores of doc/docbook/ in the build directory, based on the output format. For instance, the HTML docs will be in ! Generated files are output into separate sub-directores of doc/docbook/ in the build directory, based on the output format. For instance, the HTML docs will be in + The doc-html-docbook-regenerate target will generate + the HTML files and copy them back to the libstdc++ source tree. + This can be used to update the HTML files that are checked in to + version control. + + + If the Docbook stylesheets are installed in a custom location, one can use the variable XSL_STYLE_DIR to override the Makefile defaults. For example: diff -Nrcpad gcc-7.4.0/libstdc++-v3/doc/xml/manual/shared_ptr.xml gcc-7.5.0/libstdc++-v3/doc/xml/manual/shared_ptr.xml *** gcc-7.4.0/libstdc++-v3/doc/xml/manual/shared_ptr.xml Thu Feb 16 15:25:18 2017 --- gcc-7.5.0/libstdc++-v3/doc/xml/manual/shared_ptr.xml Mon Sep 2 11:09:51 2019 *************** available policies are: *** 239,245 **** ! _S_Atomic Selected when GCC supports a builtin atomic compare-and-swap operation --- 239,245 ---- ! _S_atomic Selected when GCC supports a builtin atomic compare-and-swap operation *************** synchronisation. *** 252,258 **** ! _S_Mutex The _Sp_counted_base specialization for this policy contains a mutex, --- 252,258 ---- ! _S_mutex The _Sp_counted_base specialization for this policy contains a mutex, *************** builtins aren't available so explicit me *** 263,269 **** ! _S_Single This policy uses a non-reentrant add_ref_lock() with no locking. It is --- 263,269 ---- ! _S_single This policy uses a non-reentrant add_ref_lock() with no locking. It is diff -Nrcpad gcc-7.4.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml gcc-7.5.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml *** gcc-7.4.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml Thu Jan 18 20:31:25 2018 --- gcc-7.5.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml Mon Sep 2 11:09:51 2019 *************** This section describes the C++17 and lib *** 24,31 **** ! The following table lists new library features that have been accepted into ! the C++17 working draft. The "Proposal" column provides a link to the ISO C++ committee proposal that describes the feature, while the "Status" column indicates the first version of GCC that contains an implementation of this feature (if it has been implemented). --- 24,31 ---- ! The following table lists new library features that are included in ! the C++17 standard. The "Proposal" column provides a link to the ISO C++ committee proposal that describes the feature, while the "Status" column indicates the first version of GCC that contains an implementation of this feature (if it has been implemented). *************** Feature-testing recommendations for C++< *** 381,387 **** 7.1 ! --- 381,387 ---- 7.1 ! __cpp_lib_raw_memory_algorithms >= 201606L *************** Feature-testing recommendations for C++< *** 789,794 **** --- 789,819 ---- __cpp_lib_to_chars >= 201611 + + Homogeneous interface for variant, any and optional + + + P0032R3 + + + 7.1 + + __cpp_lib_any >= 201606 , + __cpp_lib_optional >= 201606 , + __cpp_lib_variant >= 201606 + + + + + Making Optional Greater Equal Again + + + P0307R2 + + + 7.1 + __cpp_lib_optional >= 201606 + diff -Nrcpad gcc-7.4.0/libstdc++-v3/include/Makefile.in gcc-7.5.0/libstdc++-v3/include/Makefile.in *** gcc-7.4.0/libstdc++-v3/include/Makefile.in Mon Oct 22 08:47:52 2018 --- gcc-7.5.0/libstdc++-v3/include/Makefile.in Thu May 23 15:34:42 2019 *************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@ *** 204,209 **** --- 204,210 ---- VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ WARN_FLAGS = @WARN_FLAGS@ WERROR = @WERROR@ + XMLCATALOG = @XMLCATALOG@ XMLLINT = @XMLLINT@ XSLTPROC = @XSLTPROC@ XSL_STYLE_DIR = @XSL_STYLE_DIR@ diff -Nrcpad gcc-7.4.0/libstdc++-v3/include/bits/char_traits.h gcc-7.5.0/libstdc++-v3/include/bits/char_traits.h *** gcc-7.4.0/libstdc++-v3/include/bits/char_traits.h Fri Jun 15 16:42:57 2018 --- gcc-7.5.0/libstdc++-v3/include/bits/char_traits.h Sat Feb 23 01:01:56 2019 *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 246,252 **** __constant_char_array_p(const _CharT* __a, size_t __n) { size_t __i = 0; ! while (__builtin_constant_p(__a[__i]) && __i < __n) __i++; return __i == __n; } --- 246,252 ---- __constant_char_array_p(const _CharT* __a, size_t __n) { size_t __i = 0; ! while (__i < __n && __builtin_constant_p(__a[__i])) __i++; return __i == __n; } diff -Nrcpad gcc-7.4.0/libstdc++-v3/include/bits/forward_list.tcc gcc-7.5.0/libstdc++-v3/include/bits/forward_list.tcc *** gcc-7.4.0/libstdc++-v3/include/bits/forward_list.tcc Wed Jul 4 13:59:42 2018 --- gcc-7.5.0/libstdc++-v3/include/bits/forward_list.tcc Wed May 8 12:17:26 2019 *************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER *** 381,387 **** auto __iy = __ly.cbegin(); while (__ix != __lx.cend() && __iy != __ly.cend()) { ! if (*__ix != *__iy) return false; ++__ix; ++__iy; --- 381,387 ---- auto __iy = __ly.cbegin(); while (__ix != __lx.cend() && __iy != __ly.cend()) { ! if (!(*__ix == *__iy)) return false; ++__ix; ++__iy; *************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER *** 451,459 **** __p = static_cast<_Node*>(__p->_M_next); --__psize; } ! else if (__comp(*__p->_M_valptr(), *__q->_M_valptr())) { ! // First node of p is lower; e must come from p. __e = __p; __p = static_cast<_Node*>(__p->_M_next); --__psize; --- 451,459 ---- __p = static_cast<_Node*>(__p->_M_next); --__psize; } ! else if (!__comp(*__q->_M_valptr(), *__p->_M_valptr())) { ! // First node of q is not lower; e must come from p. __e = __p; __p = static_cast<_Node*>(__p->_M_next); --__psize; diff -Nrcpad gcc-7.4.0/libstdc++-v3/include/bits/random.h gcc-7.5.0/libstdc++-v3/include/bits/random.h *** gcc-7.4.0/libstdc++-v3/include/bits/random.h Mon Jan 29 13:58:49 2018 --- gcc-7.5.0/libstdc++-v3/include/bits/random.h Mon Sep 2 11:09:45 2019 *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 5982,5990 **** size_t size() const noexcept { return _M_v.size(); } ! template void ! param(OutputIterator __dest) const { std::copy(_M_v.begin(), _M_v.end(), __dest); } // no copy functions --- 5982,5990 ---- size_t size() const noexcept { return _M_v.size(); } ! template void ! param(_OutputIterator __dest) const { std::copy(_M_v.begin(), _M_v.end(), __dest); } // no copy functions diff -Nrcpad gcc-7.4.0/libstdc++-v3/include/bits/stl_uninitialized.h gcc-7.5.0/libstdc++-v3/include/bits/stl_uninitialized.h *** gcc-7.4.0/libstdc++-v3/include/bits/stl_uninitialized.h Tue Jul 25 18:05:13 2017 --- gcc-7.5.0/libstdc++-v3/include/bits/stl_uninitialized.h Thu May 23 15:08:52 2019 *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 827,832 **** --- 827,834 ---- #endif #if __cplusplus > 201402L + # define __cpp_lib_raw_memory_algorithms 201606L + template inline void uninitialized_default_construct(_ForwardIterator __first, diff -Nrcpad gcc-7.4.0/libstdc++-v3/include/bits/unique_ptr.h gcc-7.5.0/libstdc++-v3/include/bits/unique_ptr.h *** gcc-7.4.0/libstdc++-v3/include/bits/unique_ptr.h Tue Oct 23 15:55:05 2018 --- gcc-7.5.0/libstdc++-v3/include/bits/unique_ptr.h Mon Sep 2 11:10:04 2019 *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 171,184 **** // unique_ptr template using __safe_conversion_up = __and_< ! is_convertible::pointer, pointer>, ! __not_>, ! __or_<__and_, ! is_same>, ! __and_<__not_>, ! is_convertible<_Ep, deleter_type>> ! > ! >; // Constructors. --- 171,179 ---- // unique_ptr template using __safe_conversion_up = __and_< ! is_convertible::pointer, pointer>, ! __not_> ! >; // Constructors. *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 419,434 **** // helper template for detecting a safe conversion from another // unique_ptr template, ! typename _Up_element_type = typename _Up_up::element_type> using __safe_conversion_up = __and_< is_array<_Up>, is_same, ! is_same, ! is_convertible<_Up_element_type(*)[], element_type(*)[]>, ! __or_<__and_, is_same>, ! __and_<__not_>, ! is_convertible<_Ep, deleter_type>>> >; // helper template for detecting a safe conversion from a raw pointer --- 414,427 ---- // helper template for detecting a safe conversion from another // unique_ptr template, ! typename _UP_pointer = typename _UPtr::pointer, ! typename _UP_element_type = typename _UPtr::element_type> using __safe_conversion_up = __and_< is_array<_Up>, is_same, ! is_same<_UP_pointer, _UP_element_type*>, ! is_convertible<_UP_element_type(*)[], element_type(*)[]> >; // helper template for detecting a safe conversion from a raw pointer *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 513,520 **** typename = _DeleterConstraint<_Up>> constexpr unique_ptr(nullptr_t) noexcept : _M_t() { } ! template>> unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) { } --- 506,516 ---- typename = _DeleterConstraint<_Up>> constexpr unique_ptr(nullptr_t) noexcept : _M_t() { } ! template, ! typename conditional::value, ! is_same<_Ep, _Dp>, ! is_convertible<_Ep, _Dp>>::type>> unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) { } diff -Nrcpad gcc-7.4.0/libstdc++-v3/include/experimental/any gcc-7.5.0/libstdc++-v3/include/experimental/any *** gcc-7.4.0/libstdc++-v3/include/experimental/any Mon Oct 22 08:47:52 2018 --- gcc-7.5.0/libstdc++-v3/include/experimental/any Thu May 23 15:09:02 2019 *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 300,306 **** _Storage _M_storage; template ! friend void* __any_caster(const any* __any); // Manage in-place contained object. template --- 300,307 ---- _Storage _M_storage; template ! friend enable_if_t::value, void*> ! __any_caster(const any* __any); // Manage in-place contained object. template *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 410,428 **** } // @} template ! void* __any_caster(const any* __any) { ! struct _None { }; ! using _Up = decay_t<_Tp>; ! using _Vp = conditional_t::value, _Up, _None>; ! if (__any->_M_manager != &any::_Manager<_Vp>::_S_manage) ! return nullptr; ! any::_Arg __arg; ! __any->_M_manager(any::_Op_access, __any, &__arg); ! return __arg._M_obj; } /** * @brief Access the contained object. * --- 411,455 ---- } // @} + /// @cond undocumented template ! enable_if_t::value, void*> ! __any_caster(const any* __any) { ! // any_cast returns non-null if __any->type() == typeid(T) and ! // typeid(T) ignores cv-qualifiers so remove them: ! using _Up = remove_cv_t<_Tp>; ! // The contained value has a decayed type, so if decay_t is not U, ! // then it's not possible to have a contained value of type U. ! using __does_not_decay = is_same, _Up>; ! // Only copy constructible types can be used for contained values. ! using __is_copyable = is_copy_constructible<_Up>; ! // If the type _Tp could never be stored in an any we don't want to ! // instantiate _Manager<_Tp>, so use _Manager instead, which ! // is explicitly specialized and has a no-op _S_manage function. ! using _Vp = conditional_t<__and_<__does_not_decay, __is_copyable>::value, ! _Up, any::_Op>; ! // First try comparing function addresses, which works without RTTI ! if (__any->_M_manager == &any::_Manager<_Vp>::_S_manage ! #if __cpp_rtti ! || __any->type() == typeid(_Tp) ! #endif ! ) ! { ! any::_Arg __arg; ! __any->_M_manager(any::_Op_access, __any, &__arg); ! return __arg._M_obj; ! } ! return nullptr; } + // This overload exists so that std::any_cast(a) is well-formed. + template + enable_if_t::value, _Tp*> + __any_caster(const any*) noexcept + { return nullptr; } + /// @endcond + /** * @brief Access the contained object. * *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 517,522 **** --- 544,557 ---- } } + // Dummy specialization used by __any_caster. + template<> + struct any::_Manager_internal + { + static void + _S_manage(_Op, const any*, _Arg*) { } + }; + // @} group any _GLIBCXX_END_NAMESPACE_VERSION } // namespace fundamentals_v1 diff -Nrcpad gcc-7.4.0/libstdc++-v3/include/experimental/bits/fs_path.h gcc-7.5.0/libstdc++-v3/include/experimental/bits/fs_path.h *** gcc-7.4.0/libstdc++-v3/include/experimental/bits/fs_path.h Wed Jul 4 13:59:06 2018 --- gcc-7.5.0/libstdc++-v3/include/experimental/bits/fs_path.h Wed Jun 26 15:12:15 2019 *************** _GLIBCXX_BEGIN_NAMESPACE_CXX11 *** 182,188 **** path(path&& __p) noexcept : _M_pathname(std::move(__p._M_pathname)), _M_type(__p._M_type) { ! _M_split_cmpts(); __p.clear(); } --- 182,189 ---- path(path&& __p) noexcept : _M_pathname(std::move(__p._M_pathname)), _M_type(__p._M_type) { ! if (_M_type == _Type::_Multi) ! _M_split_cmpts(); __p.clear(); } *************** _GLIBCXX_BEGIN_NAMESPACE_CXX11 *** 456,462 **** return _S_convert_loc(__tmp.data(), __tmp.data()+__tmp.size(), __loc); } ! bool _S_is_dir_sep(value_type __ch) { #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS return __ch == L'/' || __ch == preferred_separator; --- 457,463 ---- return _S_convert_loc(__tmp.data(), __tmp.data()+__tmp.size(), __loc); } ! static bool _S_is_dir_sep(value_type __ch) { #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS return __ch == L'/' || __ch == preferred_separator; diff -Nrcpad gcc-7.4.0/libstdc++-v3/include/experimental/type_traits gcc-7.5.0/libstdc++-v3/include/experimental/type_traits *** gcc-7.4.0/libstdc++-v3/include/experimental/type_traits Mon Oct 22 08:47:52 2018 --- gcc-7.5.0/libstdc++-v3/include/experimental/type_traits Mon Sep 2 11:09:45 2019 *************** template class _Op, typename... _Args> using detected_or_t = typename detected_or<_Default, _Op, _Args...>::type; ! template class _Op, typename... _Args> ! using is_detected_exact = is_same>; ! template class _Op, typename... _Args> constexpr bool is_detected_exact_v ! = is_detected_exact::value; template class _Op, typename... _Args> using is_detected_convertible --- 254,265 ---- template class _Op, typename... _Args> using detected_or_t = typename detected_or<_Default, _Op, _Args...>::type; ! template class _Op, typename... _Args> ! using is_detected_exact = is_same<_Expected, detected_t<_Op, _Args...>>; ! template class _Op, typename... _Args> constexpr bool is_detected_exact_v ! = is_detected_exact<_Expected, _Op, _Args...>::value; template class _Op, typename... _Args> using is_detected_convertible diff -Nrcpad gcc-7.4.0/libstdc++-v3/include/std/any gcc-7.5.0/libstdc++-v3/include/std/any *** gcc-7.4.0/libstdc++-v3/include/std/any Mon Jan 29 13:58:54 2018 --- gcc-7.5.0/libstdc++-v3/include/std/any Thu May 23 15:09:02 2019 *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 66,72 **** #endif } ! #define __cpp_lib_any 201603 /** * @brief A type-safe container of any type. --- 66,72 ---- #endif } ! #define __cpp_lib_any 201606L /** * @brief A type-safe container of any type. *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 513,532 **** } // @} template void* __any_caster(const any* __any) { ! if constexpr (is_copy_constructible_v>) { ! if (__any->_M_manager == &any::_Manager>::_S_manage) ! { ! any::_Arg __arg; ! __any->_M_manager(any::_Op_access, __any, &__arg); ! return __arg._M_obj; ! } } return nullptr; } /** * @brief Access the contained object. --- 513,546 ---- } // @} + /// @cond undocumented template void* __any_caster(const any* __any) { ! // any_cast returns non-null if __any->type() == typeid(T) and ! // typeid(T) ignores cv-qualifiers so remove them: ! using _Up = remove_cv_t<_Tp>; ! // The contained value has a decayed type, so if decay_t is not U, ! // then it's not possible to have a contained value of type U: ! if constexpr (!is_same_v, _Up>) ! return nullptr; ! // Only copy constructible types can be used for contained values: ! else if constexpr (!is_copy_constructible_v<_Up>) ! return nullptr; ! // First try comparing function addresses, which works without RTTI ! else if (__any->_M_manager == &any::_Manager<_Up>::_S_manage ! #if __cpp_rtti ! || __any->type() == typeid(_Tp) ! #endif ! ) { ! any::_Arg __arg; ! __any->_M_manager(any::_Op_access, __any, &__arg); ! return __arg._M_obj; } return nullptr; } + /// @endcond /** * @brief Access the contained object. *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 542,557 **** template inline const _ValueType* any_cast(const any* __any) noexcept { ! if (__any) ! return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); return nullptr; } template inline _ValueType* any_cast(any* __any) noexcept { ! if (__any) ! return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); return nullptr; } // @} --- 556,573 ---- template inline const _ValueType* any_cast(const any* __any) noexcept { ! if constexpr (is_object_v<_ValueType>) ! if (__any) ! return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); return nullptr; } template inline _ValueType* any_cast(any* __any) noexcept { ! if constexpr (is_object_v<_ValueType>) ! if (__any) ! return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); return nullptr; } // @} diff -Nrcpad gcc-7.4.0/libstdc++-v3/include/std/optional gcc-7.5.0/libstdc++-v3/include/std/optional *** gcc-7.4.0/libstdc++-v3/include/std/optional Thu Jan 4 18:58:29 2018 --- gcc-7.5.0/libstdc++-v3/include/std/optional Thu May 23 15:08:52 2019 *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 51,57 **** * @{ */ ! #define __cpp_lib_optional 201603 template class optional; --- 51,57 ---- * @{ */ ! #define __cpp_lib_optional 201606L template class optional; diff -Nrcpad gcc-7.4.0/libstdc++-v3/include/std/variant gcc-7.5.0/libstdc++-v3/include/std/variant *** gcc-7.4.0/libstdc++-v3/include/std/variant Wed Jul 4 13:59:37 2018 --- gcc-7.5.0/libstdc++-v3/include/std/variant Thu May 23 15:08:52 2019 *************** _GLIBCXX_END_NAMESPACE_VERSION *** 71,77 **** _GLIBCXX_BEGIN_NAMESPACE_VERSION ! #define __cpp_lib_variant 201603 template class tuple; template class variant; --- 71,77 ---- _GLIBCXX_BEGIN_NAMESPACE_VERSION ! #define __cpp_lib_variant 201606L template class tuple; template class variant; diff -Nrcpad gcc-7.4.0/libstdc++-v3/libsupc++/Makefile.in gcc-7.5.0/libstdc++-v3/libsupc++/Makefile.in *** gcc-7.4.0/libstdc++-v3/libsupc++/Makefile.in Tue Jan 17 09:38:48 2017 --- gcc-7.5.0/libstdc++-v3/libsupc++/Makefile.in Thu May 23 15:34:42 2019 *************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@ *** 277,282 **** --- 277,283 ---- VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ WARN_FLAGS = @WARN_FLAGS@ WERROR = @WERROR@ + XMLCATALOG = @XMLCATALOG@ XMLLINT = @XMLLINT@ XSLTPROC = @XSLTPROC@ XSL_STYLE_DIR = @XSL_STYLE_DIR@ diff -Nrcpad gcc-7.4.0/libstdc++-v3/libsupc++/cxxabi.h gcc-7.5.0/libstdc++-v3/libsupc++/cxxabi.h *** gcc-7.4.0/libstdc++-v3/libsupc++/cxxabi.h Wed Sep 13 10:07:25 2017 --- gcc-7.5.0/libstdc++-v3/libsupc++/cxxabi.h Mon Sep 2 11:10:00 2019 *************** namespace __gnu_cxx *** 683,690 **** * @brief Exception thrown by __cxa_guard_acquire. * @ingroup exceptions * ! * 6.7[stmt.dcl]/4: If control re-enters the declaration (recursively) ! * while the object is being initialized, the behavior is undefined. * * Since we already have a library function to handle locking, we might * as well check for this situation and throw an exception. --- 683,691 ---- * @brief Exception thrown by __cxa_guard_acquire. * @ingroup exceptions * ! * C++ 2011 6.7 [stmt.dcl]/4: If control re-enters the declaration ! * recursively while the variable is being initialized, the behavior ! * is undefined. * * Since we already have a library function to handle locking, we might * as well check for this situation and throw an exception. *************** namespace __gnu_cxx *** 694,701 **** class recursive_init_error: public std::exception { public: ! recursive_init_error() throw() { } ! virtual ~recursive_init_error() throw (); }; } #endif // __cplusplus --- 695,702 ---- class recursive_init_error: public std::exception { public: ! recursive_init_error() _GLIBCXX_NOTHROW; ! virtual ~recursive_init_error() _GLIBCXX_NOTHROW; }; } #endif // __cplusplus diff -Nrcpad gcc-7.4.0/libstdc++-v3/libsupc++/guard_error.cc gcc-7.5.0/libstdc++-v3/libsupc++/guard_error.cc *** gcc-7.4.0/libstdc++-v3/libsupc++/guard_error.cc Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/libstdc++-v3/libsupc++/guard_error.cc Mon Sep 2 11:10:00 2019 *************** *** 26,31 **** namespace __gnu_cxx { ! recursive_init_error::~recursive_init_error() throw() { } } - --- 26,31 ---- namespace __gnu_cxx { ! recursive_init_error::recursive_init_error() noexcept { } ! recursive_init_error::~recursive_init_error() noexcept { } } diff -Nrcpad gcc-7.4.0/libstdc++-v3/libsupc++/hash_bytes.cc gcc-7.5.0/libstdc++-v3/libsupc++/hash_bytes.cc *** gcc-7.4.0/libstdc++-v3/libsupc++/hash_bytes.cc Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/libstdc++-v3/libsupc++/hash_bytes.cc Wed May 8 12:17:20 2019 *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 139,145 **** // Remove the bytes not divisible by the sizeof(size_t). This // allows the main loop to process the data as 64-bit integers. ! const int len_aligned = len & ~0x7; const char* const end = buf + len_aligned; size_t hash = seed ^ (len * mul); for (const char* p = buf; p != end; p += 8) --- 139,145 ---- // Remove the bytes not divisible by the sizeof(size_t). This // allows the main loop to process the data as 64-bit integers. ! const size_t len_aligned = len & ~(size_t)0x7; const char* const end = buf + len_aligned; size_t hash = seed ^ (len * mul); for (const char* p = buf; p != end; p += 8) diff -Nrcpad gcc-7.4.0/libstdc++-v3/libsupc++/new_opa.cc gcc-7.5.0/libstdc++-v3/libsupc++/new_opa.cc *** gcc-7.4.0/libstdc++-v3/libsupc++/new_opa.cc Wed Aug 8 15:53:25 2018 --- gcc-7.5.0/libstdc++-v3/libsupc++/new_opa.cc Thu Oct 24 15:31:00 2019 *************** operator new (std::size_t sz, std::align *** 114,122 **** sz = 1; #if _GLIBCXX_HAVE_ALIGNED_ALLOC ! # ifdef _AIX /* AIX 7.2.0.0 aligned_alloc incorrectly has posix_memalign's requirement ! * that alignment is a multiple of sizeof(void*). */ if (align < sizeof(void*)) align = sizeof(void*); # endif --- 114,123 ---- sz = 1; #if _GLIBCXX_HAVE_ALIGNED_ALLOC ! # if defined _AIX || defined __APPLE__ /* AIX 7.2.0.0 aligned_alloc incorrectly has posix_memalign's requirement ! * that alignment is a multiple of sizeof(void*). ! * OS X 10.15 has the same requirement. */ if (align < sizeof(void*)) align = sizeof(void*); # endif diff -Nrcpad gcc-7.4.0/libstdc++-v3/po/Makefile.in gcc-7.5.0/libstdc++-v3/po/Makefile.in *** gcc-7.4.0/libstdc++-v3/po/Makefile.in Tue Jan 17 09:38:48 2017 --- gcc-7.5.0/libstdc++-v3/po/Makefile.in Thu May 23 15:34:42 2019 *************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@ *** 204,209 **** --- 204,210 ---- VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ WARN_FLAGS = @WARN_FLAGS@ WERROR = @WERROR@ + XMLCATALOG = @XMLCATALOG@ XMLLINT = @XMLLINT@ XSLTPROC = @XSLTPROC@ XSL_STYLE_DIR = @XSL_STYLE_DIR@ diff -Nrcpad gcc-7.4.0/libstdc++-v3/python/Makefile.in gcc-7.5.0/libstdc++-v3/python/Makefile.in *** gcc-7.4.0/libstdc++-v3/python/Makefile.in Tue Jan 17 09:38:48 2017 --- gcc-7.5.0/libstdc++-v3/python/Makefile.in Thu May 23 15:34:42 2019 *************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@ *** 234,239 **** --- 234,240 ---- VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ WARN_FLAGS = @WARN_FLAGS@ WERROR = @WERROR@ + XMLCATALOG = @XMLCATALOG@ XMLLINT = @XMLLINT@ XSLTPROC = @XSLTPROC@ XSL_STYLE_DIR = @XSL_STYLE_DIR@ diff -Nrcpad gcc-7.4.0/libstdc++-v3/python/libstdcxx/v6/xmethods.py gcc-7.5.0/libstdc++-v3/python/libstdcxx/v6/xmethods.py *** gcc-7.4.0/libstdc++-v3/python/libstdcxx/v6/xmethods.py Tue Jan 10 12:38:42 2017 --- gcc-7.5.0/libstdc++-v3/python/libstdcxx/v6/xmethods.py Wed Sep 11 11:41:36 2019 *************** class SharedPtrUseCountWorker(gdb.xmetho *** 728,734 **** return gdb.lookup_type('long') def __call__(self, obj): ! refcounts = ['_M_refcount']['_M_pi'] return refcounts['_M_use_count'] if refcounts else 0 class SharedPtrUniqueWorker(SharedPtrUseCountWorker): --- 728,734 ---- return gdb.lookup_type('long') def __call__(self, obj): ! refcounts = obj['_M_refcount']['_M_pi'] return refcounts['_M_use_count'] if refcounts else 0 class SharedPtrUniqueWorker(SharedPtrUseCountWorker): diff -Nrcpad gcc-7.4.0/libstdc++-v3/scripts/make_exports.pl gcc-7.5.0/libstdc++-v3/scripts/make_exports.pl *** gcc-7.4.0/libstdc++-v3/scripts/make_exports.pl Sun Oct 15 07:52:18 2006 --- gcc-7.5.0/libstdc++-v3/scripts/make_exports.pl Mon Dec 24 13:09:39 2018 *************** NAME: while () { *** 103,108 **** --- 103,116 ---- # Ignore undefined and local symbols. next if (/^([^ ]+) [Ua-z] /); + # GCC does not export construction vtables from shared libraries. + # However the symbols are marked hidden, for Darwin that makes them + # also external "private_extern", which means that they show up in + # this list. When ld64 encounters them it generates a warning that + # they cannot be exported, so trim them from the set now. + next if (/^construction vtable.*$/); + next if (/^__ZTC.*$/); + # $sym is the name of the symbol, $noeh_sym is the same thing with # any '.eh' suffix removed. die "unknown nm output $_" if (! /^([^ ]+) [A-Z] /); diff -Nrcpad gcc-7.4.0/libstdc++-v3/src/Makefile.am gcc-7.5.0/libstdc++-v3/src/Makefile.am *** gcc-7.4.0/libstdc++-v3/src/Makefile.am Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/libstdc++-v3/src/Makefile.am Mon Sep 2 11:09:55 2019 *************** endif *** 321,327 **** # Take care to fix all possibly-relative paths. debugdir = ${glibcxx_builddir}/src/debug stamp-debug: ! if test ! -d ${debugdir}; then \ mkdir -p ${debugdir}; \ for d in $(SUBDIRS); do mkdir -p ${debugdir}/$$d; done; \ (cd ${debugdir}; \ --- 321,327 ---- # Take care to fix all possibly-relative paths. debugdir = ${glibcxx_builddir}/src/debug stamp-debug: ! if test ! -d ${debugdir} || test ! -f ${debugdir}/Makefile ; then \ mkdir -p ${debugdir}; \ for d in $(SUBDIRS); do mkdir -p ${debugdir}/$$d; done; \ (cd ${debugdir}; \ diff -Nrcpad gcc-7.4.0/libstdc++-v3/src/Makefile.in gcc-7.5.0/libstdc++-v3/src/Makefile.in *** gcc-7.4.0/libstdc++-v3/src/Makefile.in Tue Jan 17 09:38:48 2017 --- gcc-7.5.0/libstdc++-v3/src/Makefile.in Mon Sep 2 11:09:55 2019 *************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@ *** 267,272 **** --- 267,273 ---- VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ WARN_FLAGS = @WARN_FLAGS@ WERROR = @WERROR@ + XMLCATALOG = @XMLCATALOG@ XMLLINT = @XMLLINT@ XSLTPROC = @XSLTPROC@ XSL_STYLE_DIR = @XSL_STYLE_DIR@ *************** libstdc++convenience.la: $(toolexeclib_L *** 992,998 **** fi; \ echo `date` > stamp-libstdc++convenience; stamp-debug: ! if test ! -d ${debugdir}; then \ mkdir -p ${debugdir}; \ for d in $(SUBDIRS); do mkdir -p ${debugdir}/$$d; done; \ (cd ${debugdir}; \ --- 993,999 ---- fi; \ echo `date` > stamp-libstdc++convenience; stamp-debug: ! if test ! -d ${debugdir} || test ! -f ${debugdir}/Makefile ; then \ mkdir -p ${debugdir}; \ for d in $(SUBDIRS); do mkdir -p ${debugdir}/$$d; done; \ (cd ${debugdir}; \ diff -Nrcpad gcc-7.4.0/libstdc++-v3/src/c++11/Makefile.in gcc-7.5.0/libstdc++-v3/src/c++11/Makefile.in *** gcc-7.4.0/libstdc++-v3/src/c++11/Makefile.in Wed Apr 18 13:13:29 2018 --- gcc-7.5.0/libstdc++-v3/src/c++11/Makefile.in Thu May 23 15:34:42 2019 *************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@ *** 242,247 **** --- 242,248 ---- VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ WARN_FLAGS = @WARN_FLAGS@ WERROR = @WERROR@ + XMLCATALOG = @XMLCATALOG@ XMLLINT = @XMLLINT@ XSLTPROC = @XSLTPROC@ XSL_STYLE_DIR = @XSL_STYLE_DIR@ diff -Nrcpad gcc-7.4.0/libstdc++-v3/src/c++17/Makefile.in gcc-7.5.0/libstdc++-v3/src/c++17/Makefile.in *** gcc-7.4.0/libstdc++-v3/src/c++17/Makefile.in Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/libstdc++-v3/src/c++17/Makefile.in Thu May 23 15:34:42 2019 *************** *** 0 **** --- 1,754 ---- + # Makefile.in generated by automake 1.15.1 from Makefile.am. + # @configure_input@ + + # Copyright (C) 1994-2017 Free Software Foundation, Inc. + + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. + + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY, to the extent permitted by law; without + # even the implied warranty of MERCHANTABILITY or FITNESS FOR A + # PARTICULAR PURPOSE. + + @SET_MAKE@ + + VPATH = @srcdir@ + am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ + } + am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes + am__make_dryrun = (target_option=n; $(am__make_running_with_option)) + am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) + pkgdatadir = $(datadir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkglibexecdir = $(libexecdir)/@PACKAGE@ + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c + INSTALL_HEADER = $(INSTALL_DATA) + transform = $(program_transform_name) + NORMAL_INSTALL = : + PRE_INSTALL = : + POST_INSTALL = : + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ + target_triplet = @target@ + subdir = src/c++17 + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ + $(top_srcdir)/../config/enable.m4 \ + $(top_srcdir)/../config/futex.m4 \ + $(top_srcdir)/../config/hwcaps.m4 \ + $(top_srcdir)/../config/iconv.m4 \ + $(top_srcdir)/../config/lead-dot.m4 \ + $(top_srcdir)/../config/lib-ld.m4 \ + $(top_srcdir)/../config/lib-link.m4 \ + $(top_srcdir)/../config/lib-prefix.m4 \ + $(top_srcdir)/../config/lthostflags.m4 \ + $(top_srcdir)/../config/multi.m4 \ + $(top_srcdir)/../config/no-executables.m4 \ + $(top_srcdir)/../config/override.m4 \ + $(top_srcdir)/../config/stdint.m4 \ + $(top_srcdir)/../config/unwind_ipinfo.m4 \ + $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ + $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ + $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/crossconfig.m4 \ + $(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/../config/gc++filt.m4 \ + $(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \ + $(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac + am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) + DIST_COMMON = $(srcdir)/Makefile.am + CONFIG_HEADER = $(top_builddir)/config.h + CONFIG_CLEAN_FILES = + CONFIG_CLEAN_VPATH_FILES = + LTLIBRARIES = $(noinst_LTLIBRARIES) + libc__17convenience_la_LIBADD = + @ENABLE_DUAL_ABI_TRUE@am__objects_1 = cow-fs_dir.lo cow-fs_ops.lo \ + @ENABLE_DUAL_ABI_TRUE@ cow-fs_path.lo + am__objects_2 = fs_dir.lo fs_ops.lo fs_path.lo memory_resource.lo \ + $(am__objects_1) + @ENABLE_DUAL_ABI_TRUE@am__objects_3 = cow-string-inst.lo + @ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_4 = ostream-inst.lo \ + @ENABLE_EXTERN_TEMPLATE_TRUE@ string-inst.lo $(am__objects_3) + am_libc__17convenience_la_OBJECTS = $(am__objects_2) $(am__objects_4) + libc__17convenience_la_OBJECTS = $(am_libc__17convenience_la_OBJECTS) + AM_V_lt = $(am__v_lt_@AM_V@) + am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) + am__v_lt_0 = --silent + am__v_lt_1 = + AM_V_P = $(am__v_P_@AM_V@) + am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) + am__v_P_0 = false + am__v_P_1 = : + AM_V_GEN = $(am__v_GEN_@AM_V@) + am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) + am__v_GEN_0 = @echo " GEN " $@; + am__v_GEN_1 = + AM_V_at = $(am__v_at_@AM_V@) + am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) + am__v_at_0 = @ + am__v_at_1 = + DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) + depcomp = + am__depfiles_maybe = + CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) + AM_V_CXX = $(am__v_CXX_@AM_V@) + am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) + am__v_CXX_0 = @echo " CXX " $@; + am__v_CXX_1 = + CXXLD = $(CXX) + AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) + am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) + am__v_CXXLD_0 = @echo " CXXLD " $@; + am__v_CXXLD_1 = + SOURCES = $(libc__17convenience_la_SOURCES) + am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac + am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) + # Read a list of newline-separated strings from the standard input, + # and print each of them once, without duplicates. Input order is + # *not* preserved. + am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ + ' + # Make sure the list of sources is unique. This is necessary because, + # e.g., the same source file might be shared among _SOURCES variables + # for different programs/libraries. + am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` + ETAGS = etags + CTAGS = ctags + ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@ + ACLOCAL = @ACLOCAL@ + ALLOCATOR_H = @ALLOCATOR_H@ + ALLOCATOR_NAME = @ALLOCATOR_NAME@ + AMTAR = @AMTAR@ + AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ + AR = @AR@ + AS = @AS@ + ATOMICITY_SRCDIR = @ATOMICITY_SRCDIR@ + ATOMIC_FLAGS = @ATOMIC_FLAGS@ + ATOMIC_WORD_SRCDIR = @ATOMIC_WORD_SRCDIR@ + AUTOCONF = @AUTOCONF@ + AUTOHEADER = @AUTOHEADER@ + AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + BASIC_FILE_CC = @BASIC_FILE_CC@ + BASIC_FILE_H = @BASIC_FILE_H@ + CC = @CC@ + CCODECVT_CC = @CCODECVT_CC@ + CCOLLATE_CC = @CCOLLATE_CC@ + CCTYPE_CC = @CCTYPE_CC@ + CFLAGS = @CFLAGS@ + CLOCALE_CC = @CLOCALE_CC@ + CLOCALE_H = @CLOCALE_H@ + CLOCALE_INTERNAL_H = @CLOCALE_INTERNAL_H@ + CMESSAGES_CC = @CMESSAGES_CC@ + CMESSAGES_H = @CMESSAGES_H@ + CMONEY_CC = @CMONEY_CC@ + CNUMERIC_CC = @CNUMERIC_CC@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CPU_DEFINES_SRCDIR = @CPU_DEFINES_SRCDIR@ + CPU_OPT_BITS_RANDOM = @CPU_OPT_BITS_RANDOM@ + CPU_OPT_EXT_RANDOM = @CPU_OPT_EXT_RANDOM@ + CSTDIO_H = @CSTDIO_H@ + CTIME_CC = @CTIME_CC@ + CTIME_H = @CTIME_H@ + CXX = @CXX@ + CXXCPP = @CXXCPP@ + CXXFILT = @CXXFILT@ + CXXFLAGS = @CXXFLAGS@ + CYGPATH_W = @CYGPATH_W@ + C_INCLUDE_DIR = @C_INCLUDE_DIR@ + DBLATEX = @DBLATEX@ + DEBUG_FLAGS = @DEBUG_FLAGS@ + DEFS = @DEFS@ + DOT = @DOT@ + DOXYGEN = @DOXYGEN@ + DSYMUTIL = @DSYMUTIL@ + DUMPBIN = @DUMPBIN@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + ERROR_CONSTANTS_SRCDIR = @ERROR_CONSTANTS_SRCDIR@ + EXEEXT = @EXEEXT@ + EXTRA_CFLAGS = @EXTRA_CFLAGS@ + EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@ + FGREP = @FGREP@ + GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@ + GLIBCXX_LIBS = @GLIBCXX_LIBS@ + GREP = @GREP@ + HWCAP_CFLAGS = @HWCAP_CFLAGS@ + INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LD = @LD@ + LDFLAGS = @LDFLAGS@ + LIBICONV = @LIBICONV@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIPO = @LIPO@ + LN_S = @LN_S@ + LONG_DOUBLE_COMPAT_FLAGS = @LONG_DOUBLE_COMPAT_FLAGS@ + LTLIBICONV = @LTLIBICONV@ + LTLIBOBJS = @LTLIBOBJS@ + MAINT = @MAINT@ + MAKEINFO = @MAKEINFO@ + MKDIR_P = @MKDIR_P@ + NM = @NM@ + NMEDIT = @NMEDIT@ + OBJDUMP = @OBJDUMP@ + OBJEXT = @OBJEXT@ + OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@ + OPT_LDFLAGS = @OPT_LDFLAGS@ + OS_INC_SRCDIR = @OS_INC_SRCDIR@ + OTOOL = @OTOOL@ + OTOOL64 = @OTOOL64@ + PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_URL = @PACKAGE_URL@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + PDFLATEX = @PDFLATEX@ + RANLIB = @RANLIB@ + SECTION_FLAGS = @SECTION_FLAGS@ + SECTION_LDFLAGS = @SECTION_LDFLAGS@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ + SYMVER_FILE = @SYMVER_FILE@ + TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ + VTV_CXXFLAGS = @VTV_CXXFLAGS@ + VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@ + VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ + WARN_FLAGS = @WARN_FLAGS@ + XMLCATALOG = @XMLCATALOG@ + XMLLINT = @XMLLINT@ + XSLTPROC = @XSLTPROC@ + XSL_STYLE_DIR = @XSL_STYLE_DIR@ + abs_builddir = @abs_builddir@ + abs_srcdir = @abs_srcdir@ + abs_top_builddir = @abs_top_builddir@ + abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ + ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ + am__leading_dot = @am__leading_dot@ + am__tar = @am__tar@ + am__untar = @am__untar@ + baseline_dir = @baseline_dir@ + baseline_subdir_switch = @baseline_subdir_switch@ + bindir = @bindir@ + build = @build@ + build_alias = @build_alias@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ + builddir = @builddir@ + check_msgfmt = @check_msgfmt@ + datadir = @datadir@ + datarootdir = @datarootdir@ + docdir = @docdir@ + dvidir = @dvidir@ + enable_shared = @enable_shared@ + enable_static = @enable_static@ + exec_prefix = @exec_prefix@ + get_gcc_base_ver = @get_gcc_base_ver@ + glibcxx_MOFILES = @glibcxx_MOFILES@ + glibcxx_PCHFLAGS = @glibcxx_PCHFLAGS@ + glibcxx_POFILES = @glibcxx_POFILES@ + glibcxx_builddir = @glibcxx_builddir@ + glibcxx_compiler_pic_flag = @glibcxx_compiler_pic_flag@ + glibcxx_compiler_shared_flag = @glibcxx_compiler_shared_flag@ + glibcxx_cxx98_abi = @glibcxx_cxx98_abi@ + glibcxx_localedir = @glibcxx_localedir@ + glibcxx_lt_pic_flag = @glibcxx_lt_pic_flag@ + glibcxx_prefixdir = @glibcxx_prefixdir@ + glibcxx_srcdir = @glibcxx_srcdir@ + glibcxx_toolexecdir = @glibcxx_toolexecdir@ + glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@ + gxx_include_dir = @gxx_include_dir@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ + htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ + libtool_VERSION = @libtool_VERSION@ + localedir = @localedir@ + localstatedir = @localstatedir@ + lt_host_flags = @lt_host_flags@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ + multi_basedir = @multi_basedir@ + oldincludedir = @oldincludedir@ + pdfdir = @pdfdir@ + port_specific_symbol_files = @port_specific_symbol_files@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ + psdir = @psdir@ + python_mod_dir = @python_mod_dir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target = @target@ + target_alias = @target_alias@ + target_cpu = @target_cpu@ + target_os = @target_os@ + target_vendor = @target_vendor@ + thread_header = @thread_header@ + top_build_prefix = @top_build_prefix@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + toplevel_builddir = @toplevel_builddir@ + toplevel_srcdir = @toplevel_srcdir@ + + # May be used by various substitution variables. + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + MAINT_CHARSET = latin1 + mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs + PWD_COMMAND = $${PWDCMD-pwd} + STAMP = echo timestamp > + toolexecdir = $(glibcxx_toolexecdir) + toolexeclibdir = $(glibcxx_toolexeclibdir) + @ENABLE_WERROR_FALSE@WERROR_FLAG = + @ENABLE_WERROR_TRUE@WERROR_FLAG = -Werror + @ENABLE_EXTERN_TEMPLATE_FALSE@XTEMPLATE_FLAGS = + @ENABLE_EXTERN_TEMPLATE_TRUE@XTEMPLATE_FLAGS = -fno-implicit-templates + + # These bits are all figured out from configure. Look in acinclude.m4 + # or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS. + CONFIG_CXXFLAGS = \ + $(SECTION_FLAGS) $(HWCAP_CFLAGS) -frandom-seed=$@ + + WARN_CXXFLAGS = \ + $(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once + + + # -I/-D flags to pass when compiling. + AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS) + + # Convenience library for C++17 runtime. + noinst_LTLIBRARIES = libc++17convenience.la + headers = + @ENABLE_DUAL_ABI_FALSE@extra_string_inst_sources = + @ENABLE_DUAL_ABI_TRUE@extra_string_inst_sources = cow-string-inst.cc + @ENABLE_DUAL_ABI_FALSE@extra_fs_sources = + @ENABLE_DUAL_ABI_TRUE@extra_fs_sources = \ + @ENABLE_DUAL_ABI_TRUE@ cow-fs_dir.cc \ + @ENABLE_DUAL_ABI_TRUE@ cow-fs_ops.cc \ + @ENABLE_DUAL_ABI_TRUE@ cow-fs_path.cc + + # XTEMPLATE_FLAGS = + @ENABLE_EXTERN_TEMPLATE_FALSE@inst_sources = + + # XTEMPLATE_FLAGS = -fno-implicit-templates + @ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \ + @ENABLE_EXTERN_TEMPLATE_TRUE@ ostream-inst.cc \ + @ENABLE_EXTERN_TEMPLATE_TRUE@ string-inst.cc \ + @ENABLE_EXTERN_TEMPLATE_TRUE@ $(extra_string_inst_sources) + + sources = \ + fs_dir.cc \ + fs_ops.cc \ + fs_path.cc \ + memory_resource.cc \ + $(extra_fs_sources) + + libc__17convenience_la_SOURCES = $(sources) $(inst_sources) + + # AM_CXXFLAGS needs to be in each subdirectory so that it can be + # modified in a per-library or per-sub-library way. Need to manually + # set this option because CONFIG_CXXFLAGS has to be after + # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden + # as the occasion calls for it. + AM_CXXFLAGS = \ + -std=gnu++17 \ + $(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \ + $(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \ + $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) \ + -fimplicit-templates + + AM_MAKEFLAGS = \ + "gxx_include_dir=$(gxx_include_dir)" + + + # Libtool notes + + # 1) In general, libtool expects an argument such as `--tag=CXX' when + # using the C++ compiler, because that will enable the settings + # detected when C++ support was being configured. However, when no + # such flag is given in the command line, libtool attempts to figure + # it out by matching the compiler name in each configuration section + # against a prefix of the command line. The problem is that, if the + # compiler name and its initial flags stored in the libtool + # configuration file don't match those in the command line, libtool + # can't decide which configuration to use, and it gives up. The + # correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe + # CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to + # attempt to infer which configuration to use. + # + # The second tag argument, `--tag disable-shared` means that libtool + # only compiles each source once, for static objects. In actuality, + # glibcxx_lt_pic_flag and glibcxx_compiler_shared_flag are added to + # the libtool command that is used create the object, which is + # suitable for shared libraries. The `--tag disable-shared` must be + # placed after --tag CXX lest things CXX undo the affect of + # disable-shared. + + # 2) Need to explicitly set LTCXXCOMPILE so that EXTRA_CXX_FLAGS is + # last. (That way, things like -O2 passed down from the toplevel can + # be overridden by --enable-debug.) + LTCXXCOMPILE = \ + $(LIBTOOL) --tag CXX --tag disable-shared \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(EXTRA_CXX_FLAGS) + + LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) + + # 3) We'd have a problem when building the shared libstdc++ object if + # the rules automake generates would be used. We cannot allow g++ to + # be used since this would add -lstdc++ to the link line which of + # course is problematic at this point. So, we get the top-level + # directory to configure libstdc++-v3 to use gcc as the C++ + # compilation driver. + CXXLINK = \ + $(LIBTOOL) --tag CXX --tag disable-shared \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXX) \ + $(VTV_CXXLINKFLAGS) \ + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ + + all: all-am + + .SUFFIXES: + .SUFFIXES: .cc .lo .o .obj + $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/fragment.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/c++17/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign --ignore-deps src/c++17/Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + $(top_srcdir)/fragment.am $(am__empty): + + $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + + $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + $(am__aclocal_m4_deps): + + clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + + libc++17convenience.la: $(libc__17convenience_la_OBJECTS) $(libc__17convenience_la_DEPENDENCIES) $(EXTRA_libc__17convenience_la_DEPENDENCIES) + $(AM_V_CXXLD)$(CXXLINK) $(libc__17convenience_la_OBJECTS) $(libc__17convenience_la_LIBADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c + + .cc.o: + $(AM_V_CXX)$(CXXCOMPILE) -c -o $@ $< + + .cc.obj: + $(AM_V_CXX)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + + .cc.lo: + $(AM_V_CXX)$(LTCXXCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo + + clean-libtool: + -rm -rf .libs _libs + + ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique + tags: tags-am + TAGS: tags + + tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi + ctags: ctags-am + + CTAGS: ctags + ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + + GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + cscopelist: cscopelist-am + + cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) + installdirs: + install: install-am + install-exec: install-exec-am + install-data: install-data-am + uninstall: uninstall-am + + install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + + installcheck: installcheck-am + install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi + mostlyclean-generic: + + clean-generic: + + distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + clean: clean-am + + clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + + distclean: distclean-am + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + + dvi: dvi-am + + dvi-am: + + html: html-am + + html-am: + + info: info-am + + info-am: + + install-data-am: + + install-dvi: install-dvi-am + + install-dvi-am: + + install-exec-am: + + install-html: install-html-am + + install-html-am: + + install-info: install-info-am + + install-info-am: + + install-man: + + install-pdf: install-pdf-am + + install-pdf-am: + + install-ps: install-ps-am + + install-ps-am: + + installcheck-am: + + maintainer-clean: maintainer-clean-am + -rm -f Makefile + maintainer-clean-am: distclean-am maintainer-clean-generic + + mostlyclean: mostlyclean-am + + mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + + pdf: pdf-am + + pdf-am: + + ps: ps-am + + ps-am: + + uninstall-am: + + .MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags dvi dvi-am html html-am info \ + info-am install install-am install-data install-data-am \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + + .PRECIOUS: Makefile + + + vpath % $(top_srcdir)/src/c++17 + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: diff -Nrcpad gcc-7.4.0/libstdc++-v3/src/c++98/Makefile.in gcc-7.5.0/libstdc++-v3/src/c++98/Makefile.in *** gcc-7.4.0/libstdc++-v3/src/c++98/Makefile.in Tue Jan 17 09:38:48 2017 --- gcc-7.5.0/libstdc++-v3/src/c++98/Makefile.in Thu May 23 15:34:42 2019 *************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@ *** 238,243 **** --- 238,244 ---- VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ WARN_FLAGS = @WARN_FLAGS@ WERROR = @WERROR@ + XMLCATALOG = @XMLCATALOG@ XMLLINT = @XMLLINT@ XSLTPROC = @XSLTPROC@ XSL_STYLE_DIR = @XSL_STYLE_DIR@ diff -Nrcpad gcc-7.4.0/libstdc++-v3/src/filesystem/Makefile.in gcc-7.5.0/libstdc++-v3/src/filesystem/Makefile.in *** gcc-7.4.0/libstdc++-v3/src/filesystem/Makefile.in Tue Jan 17 09:38:48 2017 --- gcc-7.5.0/libstdc++-v3/src/filesystem/Makefile.in Thu May 23 15:34:42 2019 *************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@ *** 246,251 **** --- 246,252 ---- VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ WARN_FLAGS = @WARN_FLAGS@ WERROR = @WERROR@ + XMLCATALOG = @XMLCATALOG@ XMLLINT = @XMLLINT@ XSLTPROC = @XSLTPROC@ XSL_STYLE_DIR = @XSL_STYLE_DIR@ diff -Nrcpad gcc-7.4.0/libstdc++-v3/src/filesystem/path.cc gcc-7.5.0/libstdc++-v3/src/filesystem/path.cc *** gcc-7.4.0/libstdc++-v3/src/filesystem/path.cc Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/libstdc++-v3/src/filesystem/path.cc Wed Jun 26 15:12:15 2019 *************** path::_M_split_cmpts() *** 333,338 **** --- 333,360 ---- if (_M_pathname.empty()) return; + { + // Approximate count of components, to reserve space in _M_cmpts vector: + int count = 1; + bool saw_sep_last = _S_is_dir_sep(_M_pathname[0]); + bool saw_non_sep = !saw_sep_last; + for (value_type c : _M_pathname) + { + if (_S_is_dir_sep(c)) + saw_sep_last = true; + else if (saw_sep_last) + { + ++count; + saw_sep_last = false; + saw_non_sep = true; + } + } + if (saw_non_sep && saw_sep_last) + ++count; // empty filename after trailing slash + if (count > 1) + _M_cmpts.reserve(count); + } + size_t pos = 0; const size_t len = _M_pathname.size(); *************** path::_M_split_cmpts() *** 355,363 **** pos = 3; while (pos < len && !_S_is_dir_sep(_M_pathname[pos])) ++pos; _M_add_root_name(pos); ! if (pos < len) // also got root directory ! _M_add_root_dir(pos); } else { --- 377,389 ---- pos = 3; while (pos < len && !_S_is_dir_sep(_M_pathname[pos])) ++pos; + if (pos == len) + { + _M_type = _Type::_Root_name; + return; + } _M_add_root_name(pos); ! _M_add_root_dir(pos); } else { *************** path::_M_split_cmpts() *** 366,371 **** --- 392,402 ---- _M_add_root_dir(0); } } + else if (len == 1) // got root directory only + { + _M_type = _Type::_Root_dir; + return; + } else // got root directory _M_add_root_dir(0); ++pos; *************** path::_M_split_cmpts() *** 374,385 **** --- 405,432 ---- else if (len > 1 && _M_pathname[1] == L':') { // got disk designator + if (len == 2) + { + _M_type = _Type::_Root_name; + return; + } _M_add_root_name(2); if (len > 2 && _S_is_dir_sep(_M_pathname[2])) _M_add_root_dir(2); pos = 2; } #endif + else + { + size_t n = 1; + for (; n < _M_pathname.size() && !_S_is_dir_sep(_M_pathname[n]); ++n) + { } + if (n == _M_pathname.size()) + { + _M_type = _Type::_Filename; + return; + } + } size_t back = pos; while (pos < len) diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc gcc-7.5.0/libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc *** gcc-7.4.0/libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc Mon Dec 24 13:01:04 2018 *************** *** 21,29 **** // Ensure the library only uses the __name__ form for attributes. // Don't test 'const' because it is reserved anyway. #define abi_tag 1 - #define always_inline 1 #ifndef __APPLE__ // darwin headers use these, see PR 64883 # define deprecated 1 # define noreturn 1 # define visibility 1 --- 21,29 ---- // Ensure the library only uses the __name__ form for attributes. // Don't test 'const' because it is reserved anyway. #define abi_tag 1 #ifndef __APPLE__ // darwin headers use these, see PR 64883 + # define always_inline 1 # define deprecated 1 # define noreturn 1 # define visibility 1 diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc gcc-7.5.0/libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc *** gcc-7.4.0/libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc Mon Dec 24 13:01:04 2018 *************** *** 21,31 **** // Ensure the library only uses the __name__ form for attributes. // Don't test 'const' and 'noreturn' because they are reserved anyway. #define abi_tag 1 - #define always_inline 1 #ifndef __APPLE__ // darwin headers use these, see PR 64883 ! # define visibility 1 # define deprecated 1 #endif #define packed 1 #define pure 1 --- 21,31 ---- // Ensure the library only uses the __name__ form for attributes. // Don't test 'const' and 'noreturn' because they are reserved anyway. #define abi_tag 1 #ifndef __APPLE__ // darwin headers use these, see PR 64883 ! # define always_inline 1 # define deprecated 1 + # define visibility 1 #endif #define packed 1 #define pure 1 diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc gcc-7.5.0/libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc *** gcc-7.4.0/libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc Mon Dec 24 13:01:04 2018 *************** *** 21,29 **** // Ensure the library only uses the __name__ form for attributes. // Don't test 'const' and 'noreturn' because they are reserved anyway. #define abi_tag 1 - #define always_inline 1 #ifndef __APPLE__ // darwin headers use these, see PR 64883 # define deprecated 1 # define visibility 1 #endif --- 21,29 ---- // Ensure the library only uses the __name__ form for attributes. // Don't test 'const' and 'noreturn' because they are reserved anyway. #define abi_tag 1 #ifndef __APPLE__ // darwin headers use these, see PR 64883 + # define always_inline 1 # define deprecated 1 # define visibility 1 #endif diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/17_intro/names.cc gcc-7.5.0/libstdc++-v3/testsuite/17_intro/names.cc *** gcc-7.4.0/libstdc++-v3/testsuite/17_intro/names.cc Tue Jan 16 20:40:30 2018 --- gcc-7.5.0/libstdc++-v3/testsuite/17_intro/names.cc Mon Sep 2 11:09:45 2019 *************** *** 19,25 **** // Define macros for some common variables names that we must not use for // naming variables, parameters etc. in the library. - #define tmp ( #define A ( #define B ( #define C ( --- 19,24 ---- *************** *** 99,104 **** --- 98,175 ---- #define y ( #define z ( + #define tmp ( + + #if __cplusplus < 201703L + // defines to_chars_result::ptr and to_chars_result::ec + #define ec ( + #define ptr ( + #endif + + // Common template parameter names + #define OutputIterator OutputIterator is not a reserved name + #define InputIterator InputIterator is not a reserved name + #define ForwardIterator ForwardIterator is not a reserved name + #define BidirectionalIterator BidirectionalIterator is not a reserved name + #define RandomAccessIterator RandomAccessIterator is not a reserved name + #define RandomAccessOutputIterator RandomAccessOutputIterator is not a reserved name + #define RAIter RAIter is not a reserved name + #define FwdIter FwdIter is not a reserved name + #define OutIter OutIter is not a reserved name + #define InIter InIter is not a reserved name + + #define Alloc Alloc is not a reserved name + #define BinaryFunction1 BinaryFunction1 is not a reserved name + #define BinaryFunction2 BinaryFunction2 is not a reserved name + #define Char Char is not a reserved name + #define CharT CharT is not a reserved name + #define Cmp Cmp is not a reserved name + #define Compare Compare is not a reserved name + #define Const_Iterator Const_Iterator is not a reserved name + #define Const_Key_Reference Const_Key_Reference is not a reserved name + #define Const_Node_Iter Const_Node_Iter is not a reserved name + #define Const_Pointer Const_Pointer is not a reserved name + #define Const_Reference Const_Reference is not a reserved name + #define Data Data is not a reserved name + #define DiffType DiffType is not a reserved name + #define Eq Eq is not a reserved name + #define ExecPolicy ExecPolicy is not a reserved name + #define Expected Expected is not a reserved name + #define External_Load_Access External_Load_Access is not a reserved name + #define External_Size_Access External_Size_Access is not a reserved name + #define Fn Fn is not a reserved name + #define Function Function is not a reserved name + #define Functor Functor is not a reserved name + #define Hash Hash is not a reserved name + #define H1 H1 is not a reserved name + #define H2 H2 is not a reserved name + #define Head Head is not a reserved name + #define It It is not a reserved name + #define Iter Iter is not a reserved name + #define Iterator Iterator is not a reserved name + #define Key Key is not a reserved name + #define Mapped Mapped is not a reserved name + #define Node Node is not a reserved name + #define Node_iter Node_iter is not a reserved name + #define Node_ptr Node_ptr is not a reserved name + #define Overflow Overflow is not a reserved name + #define Pointer Pointer is not a reserved name + #define Policy Policy is not a reserved name + #define Pred Pred is not a reserved name + #define Ptr Ptr is not a reserved name + #define Reference Reference is not a reserved name + #define Seq Seq is not a reserved name + #define Seq_RAIter Seq_RAIter is not a reserved name + #define Series Series is not a reserved name + #define Set Set is not a reserved name + #define String String is not a reserved name + #define Tp Tp is not a reserved name + #define Traits Traits is not a reserved name + #define Type Type is not a reserved name + #define Value Value is not a reserved name + #define ValueT ValueT is not a reserved name + #define ValueType ValueType is not a reserved name + #ifdef _AIX // See https://gcc.gnu.org/ml/libstdc++/2017-03/msg00015.html #undef f *************** *** 116,119 **** --- 187,195 ---- #undef y #endif + #ifdef __sun__ + // See https://gcc.gnu.org/ml/libstdc++/2019-05/msg00175.html + #undef ptr + #endif + #include diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/18_support/51333.cc gcc-7.5.0/libstdc++-v3/testsuite/18_support/51333.cc *** gcc-7.4.0/libstdc++-v3/testsuite/18_support/51333.cc Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/libstdc++-v3/testsuite/18_support/51333.cc Mon Sep 2 11:10:00 2019 *************** *** 0 **** --- 1,22 ---- + // Copyright (C) 2019 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 + // . + + // { dg-options "-fkeep-inline-functions" } + // { dg-do link } + + #include + int main() { } // PR libstdc++/51333 diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc gcc-7.5.0/libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc *** gcc-7.4.0/libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc Fri Jan 20 01:22:54 2017 --- gcc-7.5.0/libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc Thu May 23 15:08:58 2019 *************** *** 20,25 **** --- 20,26 ---- #include #include + #include #include #include *************** void test05() *** 130,135 **** --- 131,184 ---- VERIFY( p == nullptr ); } + void test06() + { + // The contained value of a std::any is always an object type, + // but std::any_cast does not forbid checking for function types. + + any a(1); + void (*p1)() = any_cast(&a); + VERIFY( p1 == nullptr ); + int (*p2)(int) = any_cast(&a); + VERIFY( p2 == nullptr ); + int (*p3)() = any_cast(&std::as_const(a)); + VERIFY( p3 == nullptr ); + + try { + any_cast(a); + VERIFY( false ); + } catch (const std::bad_any_cast&) { + } + + try { + any_cast(std::move(a)); + VERIFY( false ); + } catch (const std::bad_any_cast&) { + } + + try { + any_cast(std::as_const(a)); + VERIFY( false ); + } catch (const std::bad_any_cast&) { + } + } + + void test07() + { + int arr[3]; + any a(arr); + VERIFY( a.type() == typeid(int*) ); // contained value is decayed + + int (*p1)[3] = any_cast(&a); + VERIFY( a.type() != typeid(int[3]) ); // so any_cast should return nullptr + VERIFY( p1 == nullptr ); + int (*p2)[] = any_cast(&a); + VERIFY( a.type() != typeid(int[]) ); // so any_cast should return nullptr + VERIFY( p2 == nullptr ); + const int (*p3)[] = any_cast(&std::as_const(a)); + VERIFY( p3 == nullptr ); + } + int main() { test01(); *************** int main() *** 137,140 **** --- 186,191 ---- test03(); test04(); test05(); + test06(); + test07(); } diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/20_util/enable_shared_from_this/89303.cc gcc-7.5.0/libstdc++-v3/testsuite/20_util/enable_shared_from_this/89303.cc *** gcc-7.4.0/libstdc++-v3/testsuite/20_util/enable_shared_from_this/89303.cc Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/libstdc++-v3/testsuite/20_util/enable_shared_from_this/89303.cc Mon Sep 2 11:10:08 2019 *************** *** 0 **** --- 1,39 ---- + // Copyright (C) 2019 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 + // . + + // { dg-options "-O1" } + // { dg-do run { target c++11 } } + + // PR middle-end/89303 + + #include + + class blob final: public std::enable_shared_from_this + { + int* data; + + public: + blob() { data = new int; } + ~blob() { delete data; } + }; + + int + main() + { + std::shared_ptr tg = std::make_shared(); + return tg->shared_from_this().use_count() - 2; + } diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/20_util/hash/89629.cc gcc-7.5.0/libstdc++-v3/testsuite/20_util/hash/89629.cc *** gcc-7.4.0/libstdc++-v3/testsuite/20_util/hash/89629.cc Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/libstdc++-v3/testsuite/20_util/hash/89629.cc Wed May 8 12:17:20 2019 *************** *** 0 **** --- 1,43 ---- + // Copyright (C) 2019 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 + // . + + // { dg-do run { target { lp64 || llp64 } } } + // { dg-require-effective-target c++11 } + // { dg-require-effective-target run_expensive_tests } + + #include + #include + + void + test01() + { + const std::size_t big = std::size_t(1) << 31; + std::string s; + try { + s.resize(big, 'a'); + } catch (const std::bad_alloc&) { + return; // try to avoid a FAIL if memory allocation fails + } + // PR libstdc++/89629 + (void) std::hash{}(s); + } + + int + main() + { + test01(); + } diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc gcc-7.5.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc *** gcc-7.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc Wed Jan 4 13:21:02 2017 --- gcc-7.5.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc Mon Sep 2 11:10:04 2019 *************** void f() *** 42,51 **** std::unique_ptr ud(nullptr, d); ub = std::move(ud); // { dg-error "no match" } ub2 = ud; // { dg-error "no match" } - // { dg-error "no type" "" { target *-*-* } 301 } std::unique_ptr uba(nullptr, b); std::unique_ptr uda(nullptr, d); uba = std::move(uda); // { dg-error "no match" } - // { dg-error "no type" "" { target *-*-* } 560 } } --- 42,50 ---- std::unique_ptr ud(nullptr, d); ub = std::move(ud); // { dg-error "no match" } ub2 = ud; // { dg-error "no match" } std::unique_ptr uba(nullptr, b); std::unique_ptr uda(nullptr, d); uba = std::move(uda); // { dg-error "no match" } } + // { dg-prune-output "no type" } diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc gcc-7.5.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc *** gcc-7.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc Mon Sep 2 11:10:04 2019 *************** *** 0 **** --- 1,46 ---- + // Copyright (C) 2019 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 + // . + + // { dg-do compile { target c++11 } } + + #include + + struct D1 + { + void operator()(int* p) const noexcept { } + }; + + struct D2 : D1 + { + D2& operator=(D1&&) noexcept { return *this; } + }; + + void + test01() + { + std::unique_ptr d1; + std::unique_ptr d2; + d2 = std::move(d1); + } + + void + test02() + { + std::unique_ptr d1; + std::unique_ptr d2; + d2 = std::move(d1); + } diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc gcc-7.5.0/libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc *** gcc-7.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc Wed Jan 4 13:21:02 2017 --- gcc-7.5.0/libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc Mon Sep 2 11:10:04 2019 *************** test07() *** 39,45 **** std::unique_ptr cA3(p); // { dg-error "no matching function" } std::unique_ptr vA3(p); // { dg-error "no matching function" } std::unique_ptr cvA3(p); // { dg-error "no matching function" } ! // { dg-error "no type" "" { target *-*-* } 467 } } template --- 39,45 ---- std::unique_ptr cA3(p); // { dg-error "no matching function" } std::unique_ptr vA3(p); // { dg-error "no matching function" } std::unique_ptr cvA3(p); // { dg-error "no matching function" } ! // { dg-prune-output "no type" } } template diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc gcc-7.5.0/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc *** gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc Sat Feb 23 01:01:56 2019 *************** *** 0 **** --- 1,28 ---- + // Copyright (C) 2019 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 + // . + + // { dg-options "-std=gnu++17 -fexceptions -fnon-call-exceptions -O1" } + // { dg-do run { target { powerpc*-*-linux* i?86-*-linux* x86_64-*-linux* } } } + // { dg-require-effective-target c++1z } + + #include + + int main() + { + std::string_view s1, s2; + return s1 != s2; + } diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc gcc-7.5.0/libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc *** gcc-7.4.0/libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc Sun Jan 1 12:07:43 2017 --- gcc-7.5.0/libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc Wed May 8 12:17:26 2019 *************** *** 17,31 **** // with this library; see the file COPYING3. If not see // . - - // NOTE: This makes use of the fact that we know how moveable - // is implemented on list (via swap). If the implementation changed - // this test may begin to fail. - #include #include ! int main() { std::forward_list a = {0.0, 1.0, 2.0, 3.0, 4.0}; std::forward_list b = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0}; --- 17,27 ---- // with this library; see the file COPYING3. If not see // . #include #include ! void ! test01() { std::forward_list a = {0.0, 1.0, 2.0, 3.0, 4.0}; std::forward_list b = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0}; *************** int main() *** 43,48 **** VERIFY((b > a) == true); VERIFY((b >= a) == true); VERIFY((b <= a) == false); ! return 0; } --- 39,78 ---- VERIFY((b > a) == true); VERIFY((b >= a) == true); VERIFY((b <= a) == false); + } ! void ! test02() ! { ! // The EqualityComparable requirements only require == ! struct X { ! bool operator==(const X&) const { return true; } ! }; ! ! std::forward_list a(2); ! const auto b = a; ! VERIFY( a == b ); ! } ! ! void ! test03() ! { ! // The LessThanComparable requirements only require < ! struct X { ! bool operator<(const X&) const { return false; } ! }; ! ! std::forward_list a(2); ! const auto b = a; ! VERIFY( !(a < b) ); ! VERIFY( !(a > b) ); ! VERIFY( a <= b ); ! VERIFY( a >= b ); ! } ! ! int main() ! { ! test01(); ! test02(); ! test03(); } diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc gcc-7.5.0/libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc *** gcc-7.4.0/libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc Wed May 8 12:17:26 2019 *************** *** 0 **** --- 1,60 ---- + // Copyright (C) 2019 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 + // . + + // { dg-do run { target c++11 } } + + #include + #include + + // PR libstdc++/90105 - std::forward_list::sort() is not "stable" + + struct X + { + int key; + int val; + }; + + bool operator<(const X& l, const X& r) + { return l.key < r.key; } + + bool operator==(const X& l, const X& r) + { return l.key == r.key && l.val == r.val; } + + void + test01() + { + std::forward_list l{ {1, 1}, {2, 2}, {1, 3}, {0, 4}, {2, 5}, {0, 6} }; + l.sort(); + std::forward_list exp{ {0, 4}, {0, 6}, {1, 1}, {1, 3}, {2, 2}, {2, 5} }; + VERIFY( l == exp ); + } + + void + test02() + { + std::forward_list l{ {1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6} }; + const std::forward_list exp = l; + l.sort(); + VERIFY( l == exp ); + } + + int + main() + { + test01(); + test02(); + } diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/Makefile.in gcc-7.5.0/libstdc++-v3/testsuite/Makefile.in *** gcc-7.4.0/libstdc++-v3/testsuite/Makefile.in Tue Jan 17 09:38:48 2017 --- gcc-7.5.0/libstdc++-v3/testsuite/Makefile.in Thu May 23 15:34:42 2019 *************** VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@ *** 204,209 **** --- 204,210 ---- VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ WARN_FLAGS = @WARN_FLAGS@ WERROR = @WERROR@ + XMLCATALOG = @XMLCATALOG@ XMLLINT = @XMLLINT@ XSLTPROC = @XSLTPROC@ XSL_STYLE_DIR = @XSL_STYLE_DIR@ diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc gcc-7.5.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc *** gcc-7.4.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc Fri Jan 20 01:22:54 2017 --- gcc-7.5.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc Thu May 23 15:08:58 2019 *************** *** 24,29 **** --- 24,30 ---- using std::experimental::any; using std::experimental::any_cast; + using std::experimental::bad_any_cast; void test01() { *************** void test01() *** 56,62 **** void test02() { - using std::experimental::bad_any_cast; any x(1); auto p = any_cast(&x); VERIFY(p == nullptr); --- 57,62 ---- *************** void test03() *** 105,111 **** MoveDeleted&& md3 = any_cast(any(std::move(md))); } ! void test04() { // PR libstdc++/69321 struct noncopyable { --- 105,111 ---- MoveDeleted&& md3 = any_cast(any(std::move(md))); } ! void test05() { // PR libstdc++/69321 struct noncopyable { *************** void test04() *** 117,126 **** VERIFY( p == nullptr ); } int main() { test01(); test02(); test03(); ! test04(); } --- 117,176 ---- VERIFY( p == nullptr ); } + void test06() + { + // The contained value of a std::any is always an object type, + // but any_cast does not forbid checking for function types. + + any a(1); + void (*p1)() = any_cast(&a); + VERIFY( p1 == nullptr ); + int (*p2)(int) = any_cast(&a); + VERIFY( p2 == nullptr ); + int (*p3)() = any_cast(&const_cast(a)); + VERIFY( p3 == nullptr ); + + try { + any_cast(a); + VERIFY( false ); + } catch (const bad_any_cast&) { + } + + try { + any_cast(std::move(a)); + VERIFY( false ); + } catch (const bad_any_cast&) { + } + + try { + any_cast(const_cast(a)); + VERIFY( false ); + } catch (const bad_any_cast&) { + } + } + + void test07() + { + int arr[3]; + any a(arr); + VERIFY( a.type() == typeid(int*) ); // contained value is decayed + + int (*p1)[3] = any_cast(&a); + VERIFY( a.type() != typeid(int[3]) ); // so any_cast should return nullptr + VERIFY( p1 == nullptr ); + int (*p2)[] = any_cast(&a); + VERIFY( a.type() != typeid(int[]) ); // so any_cast should return nullptr + VERIFY( p2 == nullptr ); + const int (*p3)[] = any_cast(&const_cast(a)); + VERIFY( p3 == nullptr ); + } + int main() { test01(); test02(); test03(); ! test05(); ! test06(); ! test07(); } diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc gcc-7.5.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc *** gcc-7.4.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc Mon Oct 22 08:47:52 2018 --- gcc-7.5.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc Thu May 23 15:09:02 2019 *************** void test01() *** 25,29 **** using std::experimental::any_cast; const any y(1); ! any_cast(y); // { dg-error "qualifiers" "" { target { *-*-* } } 357 } } --- 25,29 ---- using std::experimental::any_cast; const any y(1); ! any_cast(y); // { dg-error "qualifiers" "" { target { *-*-* } } 0 } } diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc gcc-7.5.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc *** gcc-7.4.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc Wed Jun 26 15:12:15 2019 *************** *** 0 **** --- 1,75 ---- + // Copyright (C) 2019 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 + // . + + // { dg-options "-DUSE_FILESYSTEM_TS -lstdc++fs" } + // { dg-do run { target c++11 } } + // { dg-require-filesystem-ts "" } + + #include + #include + #include + + std::size_t bytes_allocated = 0; + + void* operator new(std::size_t n) + { + bytes_allocated += n; + return std::malloc(n); + } + + void operator delete(void* p) noexcept { std::free(p); } + #if __cpp_sized_deallocation + void operator delete(void* p, std::size_t) noexcept { std::free(p); } + #endif + + void + test01() + { + #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS + std::wstring s0; + std::wstring s1 = L"/"; + std::wstring s2 = L"file"; + std::wstring s3 = L"C:"; + std::wstring s4 = L"\\"; + #else + std::string s0; + std::string s1 = "/"; + std::string s2 = "file"; + std::string s3 = "C:"; + std::string s4 = "\\"; + #endif + + using std::experimental::filesystem::path; + + bytes_allocated = 0; + path p0 = std::move(s0); + VERIFY( bytes_allocated == 0 ); + path p1 = std::move(s1); + VERIFY( bytes_allocated == 0 ); + path p2 = std::move(s2); + VERIFY( bytes_allocated == 0 ); + path p3 = std::move(s3); + VERIFY( bytes_allocated == 0 ); + path p4 = std::move(s4); + VERIFY( bytes_allocated == 0 ); + } + + int + main() + { + test01(); + } diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/experimental/names.cc gcc-7.5.0/libstdc++-v3/testsuite/experimental/names.cc *** gcc-7.4.0/libstdc++-v3/testsuite/experimental/names.cc Thu Jan 1 00:00:00 1970 --- gcc-7.5.0/libstdc++-v3/testsuite/experimental/names.cc Mon Sep 2 11:09:45 2019 *************** *** 0 **** --- 1,57 ---- + // Copyright (C) 2017-2019 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 + // . + + // { dg-do compile } + + // Define macros for some common variables names that we must not use for + // naming variables, parameters etc. in the library. + + #include "../17_intro/names.cc" + // Filesystem + #if __has_include() + # include + #endif + // Library Fundamentals + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include diff -Nrcpad gcc-7.4.0/libstdc++-v3/testsuite/util/testsuite_hooks.h gcc-7.5.0/libstdc++-v3/testsuite/util/testsuite_hooks.h *** gcc-7.4.0/libstdc++-v3/testsuite/util/testsuite_hooks.h Mon Apr 3 17:16:06 2017 --- gcc-7.5.0/libstdc++-v3/testsuite/util/testsuite_hooks.h Thu May 23 15:34:37 2019 *************** *** 46,63 **** #include #include #include #ifdef _GLIBCXX_HAVE_SYS_STAT_H #include #endif #define VERIFY(fn) \ do \ { \ if (! (fn)) \ { \ ! __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", \ ! __FILE__, __LINE__, __PRETTY_FUNCTION__, #fn); \ __builtin_abort(); \ } \ } while (false) --- 46,70 ---- #include #include #include + #include #ifdef _GLIBCXX_HAVE_SYS_STAT_H #include #endif + #ifdef stderr + # define _VERIFY_PRINT(S, F, L, P, C) __builtin_fprintf(stderr, S, F, L, P, C) + #else + # define _VERIFY_PRINT(S, F, L, P, C) __builtin_printf(S, F, L, P, C) + #endif + #define VERIFY(fn) \ do \ { \ if (! (fn)) \ { \ ! _VERIFY_PRINT("%s:%d: %s: Assertion '%s' failed.\n", \ ! __FILE__, __LINE__, __PRETTY_FUNCTION__, #fn); \ __builtin_abort(); \ } \ } while (false) diff -Nrcpad gcc-7.4.0/libvtv/ChangeLog gcc-7.5.0/libvtv/ChangeLog *** gcc-7.4.0/libvtv/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/libvtv/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/lto-plugin/ChangeLog gcc-7.5.0/lto-plugin/ChangeLog *** gcc-7.4.0/lto-plugin/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/lto-plugin/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/maintainer-scripts/ChangeLog gcc-7.5.0/maintainer-scripts/ChangeLog *** gcc-7.4.0/maintainer-scripts/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/maintainer-scripts/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released. diff -Nrcpad gcc-7.4.0/zlib/ChangeLog gcc-7.5.0/zlib/ChangeLog *** gcc-7.4.0/zlib/ChangeLog Thu Dec 6 10:00:03 2018 --- gcc-7.5.0/zlib/ChangeLog Thu Nov 14 07:40:39 2019 *************** *** 1,3 **** --- 1,7 ---- + 2019-11-14 Release Manager + + * GCC 7.5.0 released. + 2018-12-06 Release Manager * GCC 7.4.0 released.