minix/external/gpl3/gcc/patches/0000-gcc_nbsd.patch
Lionel Sambuc 0cdf705cc6 Enable optional GCC install and GCC improvements
-By adding MKGCC=yes and MKGCCCMDS=yes on the make commandline
   it is now possible to compile and install GCC on the system.

   Before doing this, if you are not using the build.sh script,
   you will need to call the fetch scripts in order to retrieve
   the sources of GCC and its dependencies.

 -Reduce difference with NetBSD share/mk

   Move Minix-specific parameters from bsd.gcc.mk to bsd.own.mk,
   which is anyway patched, so that bsd.gcc.mk is now aligned
   on the NetBSD version.

 -Clean libraries dependencies, compiles stdc++ only if gcc is
   also compiled (it is part of the gcc sources)

 -Correct minix.h header sequence, cleanup spec headers.

 -Fix cross-compilation from a 32bit host targeting MINIX/arm

Change-Id: I1b234af18eed4ab5675188244e931b2a2b7bd943
2013-07-12 14:22:03 +02:00

23100 lines
812 KiB
Diff
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

diff -rNU3 -x *.info dist/ChangeLog dist.nbsd/ChangeLog
--- dist/ChangeLog Wed Nov 7 13:39:01 2012
+++ dist.nbsd/ChangeLog Wed Nov 7 11:47:43 2012
@@ -1,3 +1,33 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
+2011-12-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * configure: Regenerate.
+
+2011-06-27 Hans-Peter Nilsson <hp@axis.com>
+
+ PR regression/47836
+ PR bootstrap/23656
+ PR other/47733
+ PR bootstrap/49247
+ PR c/48825
+ * configure.ac (target_libraries): Remove target-libiberty.
+ Remove all target-specific settings adding target-libiberty to
+ skipdirs and noconfigdirs. Remove checking target_configdirs
+ and removing target-libiberty but keeping target-libgcc if
+ otherwise empty.
+ * Makefile.def (target_modules): Don't add libiberty.
+ (dependencies): Remove all traces of target-libiberty.
+ * configure, Makefile.in: Regenerate.
+
+2011-06-19 Jack Howarth <howarth@bromo.med.uc.edu>
+
+ PR target/49461
+ * configure.ac: Use mh-x86-darwin.
+ * configure: Regenerate.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/INSTALL/configure.html dist.nbsd/INSTALL/configure.html
--- dist/INSTALL/configure.html Wed Nov 7 13:39:09 2012
+++ dist.nbsd/INSTALL/configure.html Wed Nov 7 11:47:42 2012
@@ -561,7 +561,7 @@
<!-- If you make -with-llsc the default for additional targets, -->
<!-- update the -with-llsc description in the MIPS section below. -->
<br><dt><code>--with-llsc</code><dd>On MIPS targets, make <samp><span class="option">-mllsc</span></samp> the default when no
-<samp><span class="option">-mno-lsc</span></samp> option is passed. This is the default for
+<samp><span class="option">-mno-llsc</span></samp> option is passed. This is the default for
Linux-based targets, as the kernel will emulate them if the ISA does
not provide them.
diff -rNU3 -x *.info dist/LAST_UPDATED dist.nbsd/LAST_UPDATED
--- dist/LAST_UPDATED Wed Nov 7 13:39:02 2012
+++ dist.nbsd/LAST_UPDATED Wed Nov 7 11:47:49 2012
@@ -1 +1 @@
-Obtained from SVN: tags/gcc_4_5_3_release revision 173114
+Obtained from SVN: tags/gcc_4_5_4_release revision 189153
diff -rNU3 -x *.info dist/MD5SUMS dist.nbsd/MD5SUMS
--- dist/MD5SUMS Wed Nov 7 13:39:02 2012
+++ dist.nbsd/MD5SUMS Wed Nov 7 11:47:42 2012
@@ -1,5 +1,5 @@
# This file contains the MD5 checksums of the files in the
-# gcc-4.5.3.tar.bz2 tarball.
+# gcc-4.5.4.tar.bz2 tarball.
#
# Besides verifying that all files in the tarball were correctly expanded,
# it also can be used to determine if any files have changed since the
@@ -14,12 +14,12 @@
fe60d87048567d4fe8c8a0ed2448bcc8 COPYING.RUNTIME
d32239bcb673463ab874e80d47fae504 COPYING3
6a6a8e020838b23406c81b19c1d46df6 COPYING3.LIB
-96c2645ffa214407d58da5bd40e76660 ChangeLog
+48844b2359c5f252246b49b3051852c5 ChangeLog
09538b708302f1735f6fa05b622ecf5e ChangeLog.tree-ssa
23b8927fe1fb0ab321c09a4f0500aa4c INSTALL/README
0174042f3ab3eade49b27ebc5fa60645 INSTALL/binaries.html
8605be1e1a0c2cac13495c24bbfefd36 INSTALL/build.html
-d818e4afd2f11e201dac916798115f9d INSTALL/configure.html
+7d8c19f920d568b8b9639d24f9819c62 INSTALL/configure.html
33801e556a519fbeb5d3552f67209359 INSTALL/download.html
55402f9189972787a265159b01c991cc INSTALL/finalinstall.html
afae7040a9eea38319fe448240e31600 INSTALL/gfdl.html
@@ -28,16 +28,16 @@
0e50006de4d0f94e48d9cc464ea0d3e5 INSTALL/prerequisites.html
8ee0fc330fc7de5fcf9ebba1d9828109 INSTALL/specific.html
e208112b3190234e82c5b846ef16045a INSTALL/test.html
-52452c02d4b1271e92c09261f6adaa73 LAST_UPDATED
+aed967b6440ea2b45db88ba50ee71826 LAST_UPDATED
0291699989c93946dc40e5638105ff1d MAINTAINERS
-af6d886ee9715aa198031903b3700bdc Makefile.def
-a473290dbb5c83727df3ac7c42484263 Makefile.in
+258f97867f1bf26aca047dec692804f3 Makefile.def
+de4ee0a0ab86f173defe016428d29382 Makefile.in
b24392dffcd338ac18c6bf0b316cdeed Makefile.tpl
-6d8dfdc357e11d8bc5488a096737c8fc NEWS
+b3fddbe9174ed1fe6f9f4c2319d3a00a NEWS
ec2b30b6785a025a4647df31097b2339 README
b510a5285eb05298b5f3d9f5ae920588 boehm-gc/AmigaOS.c
2caafacabf758bb76a9dfce1fc544b97 boehm-gc/BCC_MAKEFILE
-5c1c7523c7ec6090c0935b0834b1356e boehm-gc/ChangeLog
+0154f99908f9ebfd09c3a35872554c68 boehm-gc/ChangeLog
c18075e3729cd116028480307a8e845d boehm-gc/EMX_MAKEFILE
3b7cc3be9ed3c2135bbda990e8a69303 boehm-gc/MacOS.c
5cf7764626b7dd7272b2fe11403d1b6a boehm-gc/MacProjects.sit.hqx
@@ -67,8 +67,8 @@
a2ed02a22235b4f27ab644ce4f3a9268 boehm-gc/blacklst.c
b19b7b67bff97d0bceba827fedb07d32 boehm-gc/callprocs
32e4857b7b4dbc4bc68e321f70f65dd4 boehm-gc/checksums.c
-8804c9b54ea3167f4fb3d8efe38503a0 boehm-gc/configure
-bb0890e79efd94f11675d90fc9a59f66 boehm-gc/configure.ac
+078b944097e00df9cfdc16e4f5ee2fea boehm-gc/configure
+45dc0b796c8ab352afed69bdea1d3c39 boehm-gc/configure.ac
56328341fbfbe66715779252aa61943e boehm-gc/configure.host
61ccb6486d45cc6d99201cc19f3c579c boehm-gc/cord/cordbscs.c
a055ef9f1010ad5759ff5c71630d6b50 boehm-gc/cord/cordprnt.c
@@ -208,9 +208,9 @@
53e3c407f215246c9ca5bbb4ddd3b958 config.guess
6df093e787b282178d1a49a18425857d config.rpath
4fd1def8333043cefe55ba0825375d51 config.sub
-cc88696c956b785ca3173fb650360960 config/ChangeLog
+74e3df23c8a7121b804d5d832285a4ac config/ChangeLog
0fcd4badfe2a2191778bdf5ab94aa40c config/acinclude.m4
-731a4c2ef07c06a2a175804e75fadc03 config/acx.m4
+9238d23c68259d195b332db71892d242 config/acx.m4
5c6a030699353abe2ff69294a495e4cd config/bootstrap-O1.mk
4d3304310a9b7b17872d6f644e1dd7c8 config/bootstrap-O3.mk
3be755875df9da02eb4b0a9badd414f1 config/bootstrap-debug-big.mk
@@ -259,6 +259,7 @@
e4353fd5127f79d601d85fde3925ac76 config/mh-solaris
2415a4da9726792701f226bdb0e5ac3f config/mh-sysv4
2415a4da9726792701f226bdb0e5ac3f config/mh-sysv5
+0b0d3f0f3e7a944fed9d5f45ec54191b config/mh-x86-darwin
a1f1f0d6fa6e5e849b918f091babef21 config/mh-x86omitfp
3755b5b077053b5de54ff0f781ca9295 config/mt-alphaieee
96289d06809692c31d71e69c4bedb6d7 config/mt-d30v
@@ -290,9 +291,9 @@
49305b421244035f19bdccb38a800d5f config/unwind_ipinfo.m4
3510459bb8dffa5ea06682a29bcdbfa9 config/warnings.m4
e249d18c447a8372fd1ed5f084284d6b config/zlib.m4
-a9074a1f718bb7507f043f2e5fe45f3f configure
-bd026cb163e66465b38101eac81d6329 configure.ac
-571ac94d2c65cc04f25ba0ea2ef70afe contrib/ChangeLog
+55bc903a13eb23a6d47a81720e66c09e configure
+89d512ac464cb7597f961d1476fe56c5 configure.ac
+b6ceec30c050687d52f7b5f44ef5024a contrib/ChangeLog
7af8d2979bf1a7cfa88e30d05fa22be2 contrib/ChangeLog.tree-ssa
e0ea80d7094bf66610f2f60db444f9a1 contrib/analyze_brprob
49fe5a4a8deb2ae714614e5bb8d2feb1 contrib/check_makefile_deps.sh
@@ -318,7 +319,7 @@
b747c8d95bb7534c2c0f5af32ae32520 contrib/paranoia.cc
a710b8024ed1edced07e764add76de05 contrib/patch_tester.sh
87a19b40fbd220938cf6c23c42c255e2 contrib/prepare_patch.sh
-80cf5eee83704e09a7d8b1a5f8d1d30a contrib/reghunt/ChangeLog
+5a775c808a9c82a889978322b95322c5 contrib/reghunt/ChangeLog
cf247a580e49d212518de409793db0a8 contrib/reghunt/bin/gcc-build-full
724e70ea3e80f87f2a201bbe2f1eef37 contrib/reghunt/bin/gcc-build-simple
3f2318bae7562a4ad1639e686916a545 contrib/reghunt/bin/gcc-cleanup
@@ -377,7 +378,7 @@
e2829fc4af4f433a6a328a62d5ce8066 contrib/reghunt/examples/reg-watch
afd863c2ec84c906e20f9b9787b1f0fe contrib/reghunt/examples/reg-watch.awk
8955535523d4b5f48006bcb851ba9b4b contrib/reghunt/examples/testall
-6ef225da68114d85a9383e8dbcecb764 contrib/regression/ChangeLog
+c0e339d20ebd762e5c68097ba8f1f7f5 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
@@ -396,7 +397,7 @@
e00fa8f7dd72b80ca5a64130e85fe4f4 contrib/uninclude
7cb42cbdf8becd280d1e16191416fb62 contrib/warn_summary
21504de31981a67b5b93b265029d1865 depcomp
-8426d14ea647b0d6bcd71f157cc5eb63 fixincludes/ChangeLog
+0cddb58474db5a96c19146a58537ff1c fixincludes/ChangeLog
e42aa31fd83f70288f5f6c8320fd91bb fixincludes/Makefile.in
a3e295399ad4c66c3985433dd62ce25d fixincludes/README
455903ad4ff71fa5c5340ef7ae41a0e6 fixincludes/README-fixinc
@@ -518,12 +519,12 @@
c78e762f2c91f2af991feda7d3d7f4b2 fixincludes/tests/base/unistd.h
4f59f83f073afacc3f59c39952ec8a7b fixincludes/tests/base/wchar.h
d227bdd632a7e8a2d0323e1d37e10d16 gcc/ABOUT-GCC-NLS
-b62d1070ad4804dec1da4d020ce41ac1 gcc/BASE-VER
+f5468e6bc12be47c8bcd00414e4e1d07 gcc/BASE-VER
59530bdf33659b29e73d4adb9f9f6552 gcc/COPYING
a916467b91076e631dd8edb7424769c7 gcc/COPYING.LIB
d32239bcb673463ab874e80d47fae504 gcc/COPYING3
6a6a8e020838b23406c81b19c1d46df6 gcc/COPYING3.LIB
-06f1b72de87d78f8658bc00bb17f91bd gcc/ChangeLog
+2d490de2bb6cc020bba605399cf522c1 gcc/ChangeLog
a3b63c675afa7a655cc2bfa8a907af79 gcc/ChangeLog-1997
d9a88529352a010253c2e8fb1ed6023b gcc/ChangeLog-1998
240f08f81cb4699e8b49347db38233db gcc/ChangeLog-1999
@@ -543,7 +544,7 @@
e7d34075f784a1023d629b2d5593e6b4 gcc/ChangeLog.ptr
44a19214e0ebd53bf291bcfe85f7492f gcc/ChangeLog.tree-ssa
f8f89587d1efbf6a1f7456761d5712c5 gcc/ChangeLog.tuples
-35d2f770df80c2d72df8689ad6a4a132 gcc/DATESTAMP
+c164f62e6239129f0587198afa72303c gcc/DATESTAMP
d41d8cd98f00b204e9800998ecf8427e gcc/DEV-PHASE
f76db67fe6b61ed06427646baa7ba6bf gcc/FSFChangeLog
44bbf940c2e0a18217b7e604f45216df gcc/FSFChangeLog.10
@@ -555,7 +556,7 @@
8196e38010aaf4e4492b9b4882e1d027 gcc/acinclude.m4
d418736653befa470a0cb011b7bcff7f gcc/aclocal.m4
30995d78221b41ce62c92b2f601b4ebb gcc/ada/9drpc.adb
-f153f5e6bfe135a1fe19308b033ebeb6 gcc/ada/ChangeLog
+9ce9bda9c817831f4def3c2c0f1377db gcc/ada/ChangeLog
683be0b07dc4f64f118fd5e8ae9cb30d gcc/ada/ChangeLog-2001
7aff25efb203be4136b8776cdc812956 gcc/ada/ChangeLog-2002
cd2379152000f40157d349018fb9364d gcc/ada/ChangeLog-2003
@@ -1406,13 +1407,13 @@
0b1c6ffed20c195e773f26671ffe4088 gcc/ada/gcc-interface/ada.h
f1169670279ca47f1fd033a1818a7832 gcc/ada/gcc-interface/config-lang.in
fd8a05e607cdce082fda4b18e314808e gcc/ada/gcc-interface/cuintp.c
-bf83f61bf1f060179ac42a62a937cc54 gcc/ada/gcc-interface/decl.c
+1291e4753f6914c4e3e8b5817fb4c6e3 gcc/ada/gcc-interface/decl.c
7fd200ba8b5f29197b2de38e9090878e gcc/ada/gcc-interface/gigi.h
d5c7365a06bff19bb6f2337e6a1b26e0 gcc/ada/gcc-interface/lang-specs.h
1408d4a3044eaef66f7937bc2db32886 gcc/ada/gcc-interface/lang.opt
ee696ea4c9ac57232d0c9afbc4e44f5d gcc/ada/gcc-interface/misc.c
467cb823a2dd00f8d327d12cf2fa22a2 gcc/ada/gcc-interface/targtyps.c
-0b2a890f6e5fca9923ff450ce1137824 gcc/ada/gcc-interface/trans.c
+943acd79623b0414255a98da98fef5a5 gcc/ada/gcc-interface/trans.c
d094d455f7d8287c3c9e50244b095126 gcc/ada/gcc-interface/utils.c
ec314401ec55ae4e64bef8b096f61619 gcc/ada/gcc-interface/utils2.c
cae24de4854ad8faed817dac303124a8 gcc/ada/get_scos.adb
@@ -1493,7 +1494,7 @@
d7687cbf6b1c440a90c770b40742ab35 gcc/ada/indepsw-mingw.adb
fa914ddcd147d8430f947dc903d68021 gcc/ada/indepsw.adb
5b85c73b60202d26b3cccad29575fd6a gcc/ada/indepsw.ads
-f7aceb5b62cd12434f60283da2535a39 gcc/ada/init.c
+d345aacd1f07dafae5d2d9f287544a0d gcc/ada/init.c
0e581a2897b0700946efc712910ad22f gcc/ada/initialize.c
fdfd50a57fa73aedb99cba327458071e gcc/ada/inline.adb
0ff0b3c938f0fd1072834282df9ab486 gcc/ada/inline.ads
@@ -1594,7 +1595,7 @@
937e969a254584bd3846f0c0aaf8cd30 gcc/ada/par-ch12.adb
7ee27230d1f76a7cad47ae3ee8d0d03b gcc/ada/par-ch13.adb
07acb012205c7fe5f6b783d1053a1e22 gcc/ada/par-ch2.adb
-74cee3d40f983fdb87641252b2e51d25 gcc/ada/par-ch3.adb
+983da8be1ff940b4341c54d6e7377683 gcc/ada/par-ch3.adb
864787241e5da40e70c9dd60d1c7b557 gcc/ada/par-ch4.adb
dea697c1ac9fec926e712e012e4c0243 gcc/ada/par-ch5.adb
73c25013dd9028bd906c8ef68de68f65 gcc/ada/par-ch6.adb
@@ -2110,7 +2111,7 @@
56d9b2d25d277d91b8d276a0dbd407b5 gcc/ada/s-taprob.adb
ff503490cd2beac95f079a19510e38a7 gcc/ada/s-taprob.ads
b2ddb7250c1e6e581af067c09aa67c08 gcc/ada/s-taprop-dummy.adb
-8d55816ff13993c738e5c671ab7f3f28 gcc/ada/s-taprop-hpux-dce.adb
+ec7795ed7df8a26bcc9de6ca9306ba21 gcc/ada/s-taprop-hpux-dce.adb
0cda990090d9b7995172c232226d761f gcc/ada/s-taprop-irix.adb
194e5ef16d057450e647a86b618040ed gcc/ada/s-taprop-linux.adb
6a6eff895c97298efe5d3b57bc67036f gcc/ada/s-taprop-lynxos.adb
@@ -2478,10 +2479,10 @@
b70f33075edc994b3567cd72c9600179 gcc/ada/ttypef.ads
206736105ba328a38baa9b76700cebf5 gcc/ada/ttypes.ads
373e654bed9f76ed6875cee226d0dcbc gcc/ada/types.adb
-831e88d116d33f0150db028ad243bb14 gcc/ada/types.ads
+904d12701aa04288afad0866d4354cac gcc/ada/types.ads
0e3f91d816bdb93fcf065566e7f8e0aa gcc/ada/types.h
894dd803761f181f6998bbdcd8d57a74 gcc/ada/ug_words
-238c6b64ec811c414227871c69a6d93c gcc/ada/uintp.adb
+b40cda870dd29a6f47436b9a814aa385 gcc/ada/uintp.adb
0d5562b57961b854330802c4c2c387f3 gcc/ada/uintp.ads
5f7743a06d547bb779c62596bc346f4d gcc/ada/uintp.h
8ba9725cf9ce39870a15e399b3be680a gcc/ada/uname.adb
@@ -2530,16 +2531,16 @@
48c125d5adc15ed4bbc44c0dd24596e5 gcc/bt-load.c
0339c58e1c47c12bd2c46c1a5f7b31c9 gcc/builtin-attrs.def
3d3ef75b8105df8cc219eaf5644f9fff gcc/builtin-types.def
-2de4a40ee8b57d646eda09dbd42a6f84 gcc/builtins.c
+c9a36dc0d338be6cfaa2d2e3c9e0a867 gcc/builtins.c
5dec06314fab348b5760d68d20b19073 gcc/builtins.def
73e94fd7d8fb1829d449a3e30e2afe5b gcc/c-aux-info.c
-8803e01cbfe9a7b804911ded78d7b79c gcc/c-common.c
+d17422bbc3857566dc5a483b924efcc7 gcc/c-common.c
4a5d42c3a3451f755a7cd8afe7c246fa gcc/c-common.def
94a796ef298fe4054f054a32319acaa2 gcc/c-common.h
c20fea1d582e245f8fb33fcaa24ce3eb gcc/c-config-lang.in
7aeaf98d77b17ef092440308f2e9422b gcc/c-convert.c
7e4172b5644fb1e46c7dcdf50756acd8 gcc/c-cppbuiltin.c
-260ac433d2036d7cce77ca3c23066c3d gcc/c-decl.c
+c56727401555f8e1fb95090e392502ae gcc/c-decl.c
b5ae9db64c1aa1cc8f8d8172f9f35e8c gcc/c-dump.c
7b6ca63efd5fb2c3125f9d044b219a1b gcc/c-errors.c
dec9253a5ff39ab13d55a97a984e9ea9 gcc/c-format.c
@@ -2561,15 +2562,15 @@
c7ec8f71e1befc96c8fdefc25646bb6f gcc/c-pretty-print.h
ce063541fca58e8a657fe25641e31d4d gcc/c-semantics.c
b956eef0b0416d7b09851d3905f9fc4c gcc/c-tree.h
-61941d5c9c7d8293be497b3a0b12c3cb gcc/c-typeck.c
+8853a957d6ad9255318db27d2efc934e gcc/c-typeck.c
47949f013e656cf92e663b96768a763a gcc/c.opt
-371cbcf0c1e536a07206071fe5cd33a4 gcc/caller-save.c
+b337cd29faf72c2d2110dd3588baa565 gcc/caller-save.c
c445c838f4cf5344cd0544cad089b1c8 gcc/calls.c
0bfed3370709b34922da69ebe421a5f1 gcc/cfg.c
c74f9084018fb88c5de4bda26db45a1a gcc/cfganal.c
a0651e633f6bba07b5734440ae60facd gcc/cfgbuild.c
8637531df86e5e23de6a8bc0780bd09d gcc/cfgcleanup.c
-c283ca51cd761cfea8214244cee4b92c gcc/cfgexpand.c
+b3cbee1bf885cbdfb4ff93ba6be29b7e gcc/cfgexpand.c
e7022cb514a4ac51dfe86246aab99981 gcc/cfghooks.c
215992457e5d38b7d46a470070f86dab gcc/cfghooks.h
f093155a130c6d848d5a3afde3fd1018 gcc/cfglayout.c
@@ -2578,7 +2579,7 @@
87a2eac799ce506e1df588f4ef3aa93f gcc/cfgloop.h
e0fb886375c158773a48fa2aad3a0a3c gcc/cfgloopanal.c
85a76d4aeddf842b49ecdbc44a5724a0 gcc/cfgloopmanip.c
-216440cb60b22d330a2ccbb768a18eb4 gcc/cfgrtl.c
+ecf4e7f1f5261708c9f83bdcf7f656cc gcc/cfgrtl.c
5bf12a06fd68b47e54da6f4af8be45cf gcc/cgraph.c
bbec8544108922b1ccaa4ff16a03ef68 gcc/cgraph.h
e7ff852637441caa52cacc46b4b8998a gcc/cgraphbuild.c
@@ -2589,17 +2590,17 @@
85ba2ff56574efd91ce64ee12c712e49 gcc/collect2.c
0247ff66229aea4e4d6ad6d8cd445718 gcc/collect2.h
9a1327f8ad5a68243397ec8d8aa50c07 gcc/combine-stack-adj.c
-092ea49e65a1cc47cf04f9e68f580727 gcc/combine.c
+c61f26cd5e893db9409703947c4c37db gcc/combine.c
09356e63414ed02a743781fe530d4119 gcc/common.opt
162c077c493d89717647c605b5b81996 gcc/conditions.h
8cfe7c6b23a6ed38fe177582e52c9daf gcc/config.build
-800c700057b364f4b84ae1e7d209ec0b gcc/config.gcc
+adec25424dd615e65adafe47c23a70b4 gcc/config.gcc
85bd381652e878ff6b89ecf891338a34 gcc/config.host
54c02b743bbc7219d831b14df11c5e07 gcc/config.in
8e697813dc96ca90f5d0f4c196efe2cc gcc/config/README
3acabb7bb274b8bf65a2a0860087641d gcc/config/alpha/alpha-modes.def
2bd71a4474ae6aabdc23c6cbdb77b19b gcc/config/alpha/alpha-protos.h
-0e734beabbca25d77e2188019d977fa6 gcc/config/alpha/alpha.c
+28e550b59dfde89382f5ce5648632255 gcc/config/alpha/alpha.c
7f740c6d5f4fbc8ced9004525ef42714 gcc/config/alpha/alpha.h
babab214285900fe36e03ba647fb990e gcc/config/alpha/alpha.md
de8e700641c687562ecf731c89b7f96e gcc/config/alpha/alpha.opt
@@ -2615,7 +2616,7 @@
fdde9c30b3a0da0b58acabeea56ed61e gcc/config/alpha/host-osf.c
07faecc563137b07c7644a16356eeff5 gcc/config/alpha/libgcc-alpha-ldbl.ver
e2022465cf75e61694c399d81567e05e gcc/config/alpha/linux-elf.h
-caf063c1971332d870b3ba614ffbd69c gcc/config/alpha/linux-unwind.h
+4ad510ade4fb09297fbf3e1bc1a97f93 gcc/config/alpha/linux-unwind.h
f0a439e17c0c8d239b366488b4d3951c gcc/config/alpha/linux.h
ef6ef4e5ea3d1caa5d7dff95be723d00 gcc/config/alpha/netbsd.h
44ff4f798849a8da6d850fcc86186d32 gcc/config/alpha/openbsd.h
@@ -2658,9 +2659,9 @@
66a1f470deeba24fcc540a281efd88de gcc/config/arm/arm-modes.def
2926de0d316866edf6ea0bd8a3305e33 gcc/config/arm/arm-protos.h
08c5ece6f75252914a4939dd228ed3a8 gcc/config/arm/arm-tune.md
-5962678f9d52702970cc993ece9ffa14 gcc/config/arm/arm.c
+e08b3f26f2f28f570a68683a999cd315 gcc/config/arm/arm.c
e1f571640cbc7f764faaf815b90416da gcc/config/arm/arm.h
-a4717cfa7aa15e831ee57461d3e5defc gcc/config/arm/arm.md
+31e702f04cc82c7cd5363338f6098732 gcc/config/arm/arm.md
593034704e6ae41b226a5a6ecf95371f gcc/config/arm/arm.opt
3e100a448539aab31c3af8bb0d9f5c8f gcc/config/arm/arm1020e.md
05d26f1a7cb64c1fc879e7a8040a1171 gcc/config/arm/arm1026ejs.md
@@ -2670,7 +2671,7 @@
ba2549bf7568c597b4f024d36b38af0d gcc/config/arm/bpabi-v6m.S
318aa78cd1e3b5be3a075a137c80190d gcc/config/arm/bpabi.S
93f8a84062e0aa9bbac7ebe0ae9d4f10 gcc/config/arm/bpabi.c
-eaa1c0c27f43af6fbc4c63fd023d01d2 gcc/config/arm/bpabi.h
+8943c17c00f83adcdff250ab5055574c gcc/config/arm/bpabi.h
ca6c8312d269b6a15ffd3d133ebd0869 gcc/config/arm/cirrus.md
8d1e36ea3f5df864c7fa3c96db9d37ea gcc/config/arm/coff.h
8e2b505d1ac4622a8295c2de4c13829f gcc/config/arm/constraints.md
@@ -2704,7 +2705,7 @@
602ee36dfc441aed277bd3a9e86cb305 gcc/config/arm/neon-gen.ml
8dbaf43d207f8fbc63cc8cf4cd7d799c gcc/config/arm/neon-schedgen.ml
9531d25d059cb9008535524bfbf89075 gcc/config/arm/neon-testgen.ml
-f24d5f60ae766f76b7dd4910a04e57f2 gcc/config/arm/neon.md
+d389f939ee4b10cad8ea44f051881309 gcc/config/arm/neon.md
6e3fdd362b61703a937beebbbb0fb56c gcc/config/arm/neon.ml
5db15cba081afa8572a4ccb5af0db8ef gcc/config/arm/netbsd-elf.h
fddb0dabcecea3d3cc594dbb004c12db gcc/config/arm/netbsd.h
@@ -2730,7 +2731,7 @@
5e6bf2f3a6e8c67d7f6b7dec799c1731 gcc/config/arm/t-symbian
8f24c8370b8705273fc1ac94311e713d gcc/config/arm/t-vxworks
08260b044b83275047ff62ebb5543dfc gcc/config/arm/t-wince-pe
-e035cd5c5c70d7d9d7d17361ccbac66a gcc/config/arm/thumb2.md
+7d7c0de82b2f62160f65fec56e226f62 gcc/config/arm/thumb2.md
2cb94f3be777cbf153a3986950ac2025 gcc/config/arm/uclinux-eabi.h
3ca956ca72cbb18fc516d5d665a740f6 gcc/config/arm/uclinux-elf.h
332508926dbef51495f6e98126b23c91 gcc/config/arm/unaligned-funcs.c
@@ -2745,13 +2746,14 @@
5ad9a6a59243c4c1e8a344da55f1bde1 gcc/config/avr/avr-c.c
09ef90f56dc775c8a6829a781fb1b41a gcc/config/avr/avr-devices.c
ef23e9282974bcd0e6fb4e8bb1f2a591 gcc/config/avr/avr-protos.h
-9112a95f48d6eddabcf7768127a1094c gcc/config/avr/avr.c
+925c6dea2f32d430268ad9494fc6d6ab gcc/config/avr/avr-stdint.h
+04e614208ff98f595084abe7aca7129f gcc/config/avr/avr.c
f418adf9f8c32a73fa522908852bcbf3 gcc/config/avr/avr.h
86a6cb9405f45671788038c34a4a8616 gcc/config/avr/avr.md
b79e5561d13e32cd3b1f537c56b42dba gcc/config/avr/avr.opt
fe99b85e66ca6b0da8a6c0ff2840a961 gcc/config/avr/constraints.md
4fdbe01ae8a767bd44794b0ee82630dd gcc/config/avr/driver-avr.c
-84c82722f9a20774c42ce738103b2ca9 gcc/config/avr/libgcc.S
+2d1f90d947fda2455229c7c48185b645 gcc/config/avr/libgcc.S
74914a6cabd96e5a30dcf174adf81ce0 gcc/config/avr/predicates.md
c8f4329d7e38c1ebe3b14b92f23eabfc gcc/config/avr/rtems.h
0db44115db5f2651db31a45e3c689bb3 gcc/config/avr/t-avr
@@ -2769,7 +2771,7 @@
301a6274fc6346eee6bf18776f9d1ee4 gcc/config/bfin/elf.h
e39155cfc1fe007935f404408ac8d547 gcc/config/bfin/lib1funcs.asm
e21c42946d8adddc149d0f01f6ee4918 gcc/config/bfin/libgcc-bfin.ver
-dbb40b6e504e03f36ea0e81cae77b319 gcc/config/bfin/linux-unwind.h
+56ba57b1e91af0e45092f5c98bc1ee41 gcc/config/bfin/linux-unwind.h
c555cde95de777cefe68dbc857ca7637 gcc/config/bfin/linux.h
6f0ac1ac1944813ff2b8a86c375a2863 gcc/config/bfin/predicates.md
537e303b6e60c99ec5e650575797ab1a gcc/config/bfin/print-sysroot-suffix.sh
@@ -2810,9 +2812,9 @@
1416e1c4f8df1482c8536e197b460974 gcc/config/darwin-driver.c
b2fae17b46f937ccb27b8b230ecbfe3c gcc/config/darwin-f.c
8542b57bc35681f6ee5ae657995b4775 gcc/config/darwin-ppc-ldouble-patch.def
-51ee821cb15b9101c545aaddad0fcb37 gcc/config/darwin-protos.h
+d15cf7372f7a5dc84b476edef5de749c gcc/config/darwin-protos.h
374b3e0a718102166c49e942f1595685 gcc/config/darwin-sections.def
-26133bdfe11f89ae2b8a94ce6acfb901 gcc/config/darwin.c
+5e233299d4eb7f85260b7813b0fe2d5c gcc/config/darwin.c
d37c7fb427dfb67e0027b516ae8b526f gcc/config/darwin.h
995e5a4d3855220bb0359cb371c1a662 gcc/config/darwin.opt
5fb6a506884ae778e8c8c14a2a71f07f gcc/config/darwin10.h
@@ -2904,15 +2906,15 @@
2c191e2d8d033611c6fccc8362d9e8f0 gcc/config/hpux-stdint.h
5fc69388173252eb3f56af2ccaa98819 gcc/config/i386/abmintrin.h
11b4e907792d4c0c7e842f217e3ea638 gcc/config/i386/ammintrin.h
-a3806c5d8c73d148a6f9879211a28924 gcc/config/i386/athlon.md
+69fef75a1150bef045be338685f95242 gcc/config/i386/athlon.md
2004f5e8c9f6ca4372e7337dbad192e2 gcc/config/i386/atom.md
61e1f581dd0c158986028bb901853080 gcc/config/i386/att.h
-67f428fd19a033b3707c3fb856dbee17 gcc/config/i386/avxintrin.h
+fd63da27cdaedfaa67ee04ae3b8f3fd5 gcc/config/i386/avxintrin.h
5f8657fdcca4420dda514b868975f3c5 gcc/config/i386/biarch32.h
502227a7eef62f0d772fc38171f8152b gcc/config/i386/biarch64.h
d16b033a1e910ba46219892bc5114101 gcc/config/i386/bmmintrin.h
26dd6829f0ec362360afbbcf44d12fd5 gcc/config/i386/bsd.h
-d6833268df8cac9a81e4a17d8c0a52fa gcc/config/i386/constraints.md
+cc6636074a43e7b7bd3c2722cbe54cf1 gcc/config/i386/constraints.md
93c88aa788fc652fbc08ed951a7aa453 gcc/config/i386/cpuid.h
905921837900244ece0f0c1814e76cf4 gcc/config/i386/cross-stdarg.h
960cca0dc0c3df8c6ea4ff2792453c12 gcc/config/i386/crtdll.h
@@ -2929,12 +2931,12 @@
e23697c64ed098c4907644cd86b7aeec gcc/config/i386/cygwin2.c
839477f9f9babe6678c0472691e0d791 gcc/config/i386/darwin-libgcc.10.4.ver
2a433c0875383cfacc0c4640802281ed gcc/config/i386/darwin-libgcc.10.5.ver
-444d47d2f20848da252efd81350ebaeb gcc/config/i386/darwin.h
+81fb5a0fd6b0544aced943d0c4c0bcc5 gcc/config/i386/darwin.h
690375e0b274dbbc10fa0e085e73cf9c gcc/config/i386/darwin64.h
d317a2b3352d2d3715ed395b12799ba0 gcc/config/i386/djgpp-stdint.h
ee31756c9d90bc91a4442f55a3074f78 gcc/config/i386/djgpp.h
fce27d1975ee7b2919e4426ae0001452 gcc/config/i386/djgpp.opt
-85f40a9d0010f90629e6944d47f1ea5b gcc/config/i386/driver-i386.c
+7178a404df37e0c669992c8e32484d4a gcc/config/i386/driver-i386.c
85cd1ff971725d951aac58ddd23e4298 gcc/config/i386/emmintrin.h
5b34fcb32abda8613b56a53477bc0a11 gcc/config/i386/fma4intrin.h
bdb3e89023568c5198821b5ea1ed238d gcc/config/i386/freebsd.h
@@ -2955,10 +2957,10 @@
3d3e757554529cd19292ade6661f9d21 gcc/config/i386/i386-interix.h
f1be9e9dbf092b26488d3768a0d21a59 gcc/config/i386/i386-interix3.h
d10868eb41da45bd266e310e1ab4685f gcc/config/i386/i386-modes.def
-f56ef0afcfbda9714d16cf22b889d8a4 gcc/config/i386/i386-protos.h
-ecfdd648d6cd58ceec1010aed1eee616 gcc/config/i386/i386.c
-00e2b0e78d68fd95db941161c0facd2a gcc/config/i386/i386.h
-bd08dd4bb964dcdacd006c8e0964623a gcc/config/i386/i386.md
+361e052a9b19eb4b32323e5940906cbc gcc/config/i386/i386-protos.h
+ae95a33fb5755c1c78e29294dfd7d856 gcc/config/i386/i386.c
+845bde8c38dd19862c8794384190664a gcc/config/i386/i386.h
+b092a19f28f375cfc02212f427c9604b gcc/config/i386/i386.md
266306aff8325f234056f056bc900b94 gcc/config/i386/i386.opt
b87d0ab7e517e1235e4958fdd413b115 gcc/config/i386/i386elf.h
60e56eb73bd6295e047aae586f7bfa04 gcc/config/i386/ia32intrin.h
@@ -2968,7 +2970,7 @@
4ea84d3d1a9ccc22e24d5e839e901458 gcc/config/i386/knetbsd-gnu.h
8b897e418568db935c00c3b8226e387b gcc/config/i386/kopensolaris-gnu.h
903fa7296dd9ffabb0e29a5d909e649b gcc/config/i386/libgcc-glibc.ver
-d56b56a47fe8ee346198f3e4280acfec gcc/config/i386/linux-unwind.h
+c9341edb7c07105d9b3f593e43489c74 gcc/config/i386/linux-unwind.h
d032c1153748805cf021667df9f6bb8b gcc/config/i386/linux.h
9dd1fa895d19f10b2cd33621cf0897db gcc/config/i386/linux64.h
c93afb096fd383cb7864df8540b77782 gcc/config/i386/lwpintrin.h
@@ -2981,7 +2983,7 @@
65a0f458f9f4e4d575c334f0dbd6a9da gcc/config/i386/mingw32.h
a2aab639b7cc09bd945fbbd6718a4835 gcc/config/i386/mm3dnow.h
19220503eff53d1ec2cebfe0f487f915 gcc/config/i386/mmintrin.h
-fcf111e47f159b82f525c4f7bb692b80 gcc/config/i386/mmx.md
+213348ab54cf88108db5da76871faec5 gcc/config/i386/mmx.md
429f971720405f2fbad8d384fb455979 gcc/config/i386/msformat-c.c
a15f2f585ce2f85912d8f6f09e123684 gcc/config/i386/netbsd-elf.h
6a1d84cfda3f2408587c0372edca5354 gcc/config/i386/netbsd.h
@@ -3015,7 +3017,7 @@
59b63b053033b45a1ff136d858274f8a gcc/config/i386/sol2-gc1.asm
9e65824b2322c40a67888390481f6b29 gcc/config/i386/sol2-unwind.h
f2ae7e943131fe4fc8b7d4842c2cdc62 gcc/config/i386/sol2.h
-857e19c227080d3d40951272f8f1146e gcc/config/i386/sse.md
+6407227871a023969a73bc692add08e7 gcc/config/i386/sse.md
6bba0b540111d1aa8e5a67a674cd557f gcc/config/i386/ssemath.h
6ac9f1cd956e1daa427ec1f7250b8e3a gcc/config/i386/sync.md
186dd34410d7069b900a1feefa1f3b18 gcc/config/i386/sysv4.h
@@ -3056,7 +3058,7 @@
e8ba2f275310d48d995304cb92c7b633 gcc/config/i386/vxworks.h
36c9098376271a91bd2946e39cfca659 gcc/config/i386/vxworksae.h
3609cec49e1f1f72221aef24385282de gcc/config/i386/w32-unwind.h
-177373d119c9527f568faf63d08d0a3b gcc/config/i386/winnt-cxx.c
+cf41d4739149a41ce2d6b0cd4b22d629 gcc/config/i386/winnt-cxx.c
4250afcda5f928caf6d928683b15308f gcc/config/i386/winnt-stubs.c
e7cdf0df23262be31c74caa5940858f2 gcc/config/i386/winnt.c
5187e9217118c6140976af3d53e060e2 gcc/config/i386/wmmintrin.h
@@ -3096,7 +3098,7 @@
f9a7fa1fea7a57aad58c4067ebee0031 gcc/config/ia64/lib1funcs.asm
7c10e02c5edf0dd4c1bb391bb299075d gcc/config/ia64/libgcc-glibc.ver
d468e5667e9522d7005fe66c7f67edfc gcc/config/ia64/libgcc-ia64.ver
-fe92ee1f99f1f5dc6c1d9036452c9825 gcc/config/ia64/linux-unwind.h
+799648d3fc367ad7dbc7ee645963847d gcc/config/ia64/linux-unwind.h
b3a63d62cba54d118200a6e3eb15405c gcc/config/ia64/linux.h
f64b2c770746d3d42f0c066ee9e86456 gcc/config/ia64/predicates.md
daf9152ff755ff828138537657e1d468 gcc/config/ia64/quadlib.c
@@ -3144,7 +3146,7 @@
db57b04848058010c561dfa1d3986c39 gcc/config/lm32/rtems.h
221082bfd6898a37b0faa0f754e72e29 gcc/config/lm32/sfp-machine.h
898ae02ef566ee0601375beb479d2557 gcc/config/lm32/t-fprules-softfp
-bfb641628379800a8109613f9d802a4d gcc/config/lm32/t-lm32
+a9d1d80c40cc6eb8e9a32d54f82dae43 gcc/config/lm32/t-lm32
c1aa2fa8e4634efaeb51fd90ba5b20f4 gcc/config/lm32/uclinux-elf.h
e03eab3c9d6f711ba637a1902dd0219b gcc/config/lynx.h
c4b1055abceece2e347fcebf6be68f52 gcc/config/lynx.opt
@@ -3308,7 +3310,7 @@
3b58096305a61bc0a20120dc45796710 gcc/config/mips/irix-crti.asm
aa19965d3849b9aceaefce0d34a903bf gcc/config/mips/irix-crtn.asm
7553e4f584b16c04db369d3adaf5532d gcc/config/mips/libgcc-mips16.ver
-77457611f76990448f8347b318cbdfe6 gcc/config/mips/linux-unwind.h
+744be0f8a8b920c80675b788e44ffa93 gcc/config/mips/linux-unwind.h
d83e8a0e911536d770050e9ac86322b4 gcc/config/mips/linux.h
9449ab565aa71fcc8f3a0ad0fd64a17f gcc/config/mips/linux64.h
34b678f4fb5671a82747beb39f07eecf gcc/config/mips/loongson.h
@@ -3321,9 +3323,9 @@
808bae0e3a87b1452247d34ccf325a4a gcc/config/mips/mips-modes.def
66183754b6270fa9abac624d92fb2198 gcc/config/mips/mips-protos.h
daa3ae4170c07da0695221337a77f23d gcc/config/mips/mips-ps-3d.md
-cfb7c8091f6d2f8708b22a1246fab9a6 gcc/config/mips/mips.c
+a0d892aa50b5a180fb7d838fabd96ab9 gcc/config/mips/mips.c
03e5148557de830204a1d11147733769 gcc/config/mips/mips.h
-022f17c317c3e1303a5e274b7c91c733 gcc/config/mips/mips.md
+7d00718f76736aa6f082041f7a6cae33 gcc/config/mips/mips.md
eab95efb06f46f94b0f14908334dbd40 gcc/config/mips/mips.opt
eb0e74a7f8d8859937e3a5790869a666 gcc/config/mips/mips16.S
4ac52f9f7e3df664020892c36d0d8c6d gcc/config/mips/netbsd.h
@@ -3409,7 +3411,7 @@
e4fb12b0b83338b8af3f278655f0d23a gcc/config/pa/hpux-unwind.h
8653be6abee9b3fb6d14d4a6f4b93056 gcc/config/pa/lib2funcs.asm
db94d190bf62726337677b1a5574aa69 gcc/config/pa/linux-atomic.c
-b240d1d9d23fa34be252ec9b91e80bf4 gcc/config/pa/linux-unwind.h
+011c411220c7c894727ad03a0d067741 gcc/config/pa/linux-unwind.h
66386978462b79eed8d908d730ed1351 gcc/config/pa/milli64.S
feac6aba9a4a0c5389d44e887e20875a gcc/config/pa/pa-64.h
21048ea23e83dffa153f4eccd24f6d29 gcc/config/pa/pa-hpux.h
@@ -3422,10 +3424,10 @@
6b7808fef171673f40789b8c0da45349 gcc/config/pa/pa-hpux1111.opt
632e94e52db36ce05b21a7918cfff5bf gcc/config/pa/pa-linux.h
01b8e14468e166bb285428fdc6a20bd3 gcc/config/pa/pa-modes.def
-cb818987c47548fa54c3aa179712c620 gcc/config/pa/pa-protos.h
-2cd1589cc2674cba388dbe2f3d0291ae gcc/config/pa/pa.c
-0e68056bbf20f10c3915203d19d698dc gcc/config/pa/pa.h
-4fc5ab5e4558b4509b4470edcd45e454 gcc/config/pa/pa.md
+8f33f1c3307c5755635bc6b358c4d6f0 gcc/config/pa/pa-protos.h
+932f898ec92e32bf086fbf8a58315422 gcc/config/pa/pa.c
+ae78553ba6d7ff862d54c66fb44f87cc gcc/config/pa/pa.h
+b45137335bed2713bd1bf239de23de4f gcc/config/pa/pa.md
c17a7721fbfc548f190112cc544e0d7b gcc/config/pa/pa.opt
012a1e54461f76d78cd598a9cb40b3bf gcc/config/pa/pa32-linux.h
793b1e3d206f78a2d430b2aaa9de1d01 gcc/config/pa/pa32-regs.h
@@ -3434,7 +3436,7 @@
4a4f19ef8947242fde2445f0519a152e gcc/config/pa/pa64-linux.h
a96a8c210b314a620b9bb9c406c3abe8 gcc/config/pa/pa64-regs.h
a9a6afd79b827565ffb8de8330b4cfe6 gcc/config/pa/pa64-start.h
-ba5f22535e1e5fc9a635117ac9494f4b gcc/config/pa/predicates.md
+0029c7889a48135d0e9aa6e753d400e2 gcc/config/pa/predicates.md
66bfe8f73c383c39c3e03213a457f6cc gcc/config/pa/quadlib.c
f8eefb3db148e0ec5bb2de180bcacc48 gcc/config/pa/som.h
cee992acb49009e601ef975140cafc75 gcc/config/pa/stublib.c
@@ -3508,7 +3510,7 @@
e1d92c4c7f864ae116f7f3c5c45739f8 gcc/config/rs6000/aix61.h
4f47fd4eb1d3e819f5e0749df2e6c3a7 gcc/config/rs6000/aix64.opt
fa28b58a5adf92ebc810e263788c5a43 gcc/config/rs6000/altivec.h
-f80e091e62f1b09072d4fc8991baa1aa gcc/config/rs6000/altivec.md
+ac590109ccbbbcee3cbb7ce55216be5c gcc/config/rs6000/altivec.md
7c5f50ddc1b4fb933481c32cd8959be3 gcc/config/rs6000/biarch64.h
ff99cf4f61cdbda8bcedccea1e9d6f83 gcc/config/rs6000/cell.md
114d53465f3f12d9c4c27fa570dd4cb9 gcc/config/rs6000/constraints.md
@@ -3596,9 +3598,9 @@
53cc4734b9bce767284b4f04a181abad gcc/config/rs6000/rs6000-c.c
efc5416944d2ad1ae38ca9475f7bea1c gcc/config/rs6000/rs6000-modes.def
1b21130ce779bc782b9d4a867203785d gcc/config/rs6000/rs6000-protos.h
-ea5eeeed973f0491cc52b3ba7f3943e0 gcc/config/rs6000/rs6000.c
-c740fed49a87008c6f805af999d753d7 gcc/config/rs6000/rs6000.h
-1543e101b921505b99212325b52cf30c gcc/config/rs6000/rs6000.md
+7540a13a32f2528a83f27c42e19ddd4a gcc/config/rs6000/rs6000.c
+ed9fbf5835abda27fd8d18b360dfce4c gcc/config/rs6000/rs6000.h
+7563b6072e43c41bd2312e4531c3a873 gcc/config/rs6000/rs6000.md
4c9286e90f9d83383bbd140dfc7709cb gcc/config/rs6000/rs6000.opt
dc120c9c268863a37518b46f4c31f324 gcc/config/rs6000/rs64.md
5b417581129378039142027ce8602389 gcc/config/rs6000/rtems.h
@@ -3637,8 +3639,8 @@
0d301abc9966d49a90d85ae154131374 gcc/config/rs6000/t-xilinx
1dab15db55746bec5105807ac144b3eb gcc/config/rs6000/tramp.asm
5f030bb1e29ee5342e4f66de82d3a738 gcc/config/rs6000/vec_types.h
-62d8f71135e0fede6ffb8efabcccda24 gcc/config/rs6000/vector.md
-3c4fe88fee5ab74b8bc734dd0d379231 gcc/config/rs6000/vsx.md
+47779c97dc939de997fb85dabfd34dd0 gcc/config/rs6000/vector.md
+29e3d761ecd68dab714e89a001fb76fb gcc/config/rs6000/vsx.md
fe88700a663d334431a07ece84c4e55c gcc/config/rs6000/vxworks.h
4c955e07e09023bd6b258a73cab738eb gcc/config/rs6000/vxworksae.h
5c2f724024335c015d76fe32d3da6de9 gcc/config/rs6000/x-aix
@@ -3655,9 +3657,9 @@
9d9ff9b4001bd315a7a4fa6a796ce4ef gcc/config/rx/predicates.md
1f196b97e5fb6070e536daad2d021863 gcc/config/rx/rx-modes.def
639e539c21e652eb9d6730792a580f40 gcc/config/rx/rx-protos.h
-de9b5cd449d2b6c762a9277669c15f6d gcc/config/rx/rx.c
-1097fd66992b6decdf2cd43741669bfb gcc/config/rx/rx.h
-c78d63d10d4766460b0664e48b0bcdda gcc/config/rx/rx.md
+ad37a9e357a2bc5c695782312c6602e0 gcc/config/rx/rx.c
+1003a3ed7c61b5836f657af40dfb0816 gcc/config/rx/rx.h
+e2fe6df5f1726d7a909ca3f8c4b92c59 gcc/config/rx/rx.md
72f3cbfadebb440f64e190092fdcf17c gcc/config/rx/rx.opt
7527e5e284da4a3444a510e9e90d9ce6 gcc/config/rx/t-rx
a165b0d74d8295f6f8c6af83852894af gcc/config/s390/2064.md
@@ -3714,7 +3716,7 @@
68ddef94ef228a2e500c6f84ca5c5f73 gcc/config/sh/libgcc-excl.ver
d5ae1d856c107179aed74cce160e1ca1 gcc/config/sh/libgcc-glibc.ver
80e2d9e0c8174b2702ecab93405a9bd6 gcc/config/sh/linux-atomic.asm
-0bff395d72bebabe683ba4ec093e4e45 gcc/config/sh/linux-unwind.h
+6a8dc5588b197a92c96209a045d06d6f gcc/config/sh/linux-unwind.h
14bfd083f1fca7486ecaa1b12a73db67 gcc/config/sh/linux.h
21914ac4404a0eaea9748b21dfd3b373 gcc/config/sh/little.h
a817e4596024e29763675bcd675b985e gcc/config/sh/netbsd-elf.h
@@ -3726,9 +3728,9 @@
8d439712ff37bef737b9454a03cfa4b5 gcc/config/sh/sh-modes.def
8016dddb00e10d6402d68be4c0d03d00 gcc/config/sh/sh-protos.h
95672cdf5a97c2ace8fda38e0ddb731b gcc/config/sh/sh-symbian.h
-a82c186ef67acc6ee7764a59d6c321a0 gcc/config/sh/sh.c
+6bcb2261a72434ed13339d49683fa65e gcc/config/sh/sh.c
4ea750145d8569ac26c0c13b5cbc49fd gcc/config/sh/sh.h
-d628a5aff4e96f8e1a3eca8d0368e254 gcc/config/sh/sh.md
+3fcb8204603e134ff21223da1a286ce3 gcc/config/sh/sh.md
dcd364dd845eac22146855285dfa64e8 gcc/config/sh/sh.opt
d3f5c6e2b4a3620817b14d8dd55128b1 gcc/config/sh/sh1.md
edae695e2c740a39c2253e67bda533b8 gcc/config/sh/sh4-300.md
@@ -3870,7 +3872,7 @@
8204e8037b5a36826fbcf2d4c6662797 gcc/config/sparc/openbsd64.h
8c445fbde150627b7615c0055f7debc6 gcc/config/sparc/predicates.md
239b0e98e01de268a9bf0eb97b639a30 gcc/config/sparc/rtemself.h
-3e09bf3afeb779dd8b82182a316f3824 gcc/config/sparc/sol2-64.h
+19b7c947ac8a58a77c046f53c4aee996 gcc/config/sparc/sol2-64.h
43729902a703e296c6c161fd6d9c7fa0 gcc/config/sparc/sol2-bi.h
a3f50820813526cb4b0658ad2dbd5b49 gcc/config/sparc/sol2-c1.asm
19ed8d149032fcc3a4439c6c9446ac05 gcc/config/sparc/sol2-ci.asm
@@ -3878,15 +3880,15 @@
a600a8d881a87ba720c946b44afa269a gcc/config/sparc/sol2-gas-bi.h
e5d300a6879b763cd70f68f95f64bff1 gcc/config/sparc/sol2-gas.h
81e47a3128913dc8f67c66743338426c gcc/config/sparc/sol2-gld-bi.h
-b3fbf4c0b27c451a3518039178ca86c7 gcc/config/sparc/sol2-unwind.h
-e52167503f30f1f3e443547cae7a0787 gcc/config/sparc/sol2.h
+228e9ea56d84f33c2e0559bc99144d22 gcc/config/sparc/sol2-unwind.h
+a00872009fb1f767d5ac36fd30f428f5 gcc/config/sparc/sol2.h
d6ac1866a639d5a4a8c811c8b148058c gcc/config/sparc/sp-elf.h
ea1204fcf09118442f22dbbdfad5d91a gcc/config/sparc/sp64-elf.h
4e17170225e4c97fa22650f81efb0c19 gcc/config/sparc/sparc-modes.def
-ee7f5f788d59264962127f37f05f439f gcc/config/sparc/sparc-protos.h
-b48a0b954dfbc1c4281d3435c008e802 gcc/config/sparc/sparc.c
-bae89d0d945a1ddd5bc22801bb817f95 gcc/config/sparc/sparc.h
-b90e39f9bc2224d8859ab3b28fc4f306 gcc/config/sparc/sparc.md
+775210ea8f120355072df7bb31afea21 gcc/config/sparc/sparc-protos.h
+a5cd66ade2446f1385f3d3105d6c384a gcc/config/sparc/sparc.c
+28fe265e23aa4ce2511f9f79ebee4a33 gcc/config/sparc/sparc.h
+7369037f14e9e8b09023b2556843bbf7 gcc/config/sparc/sparc.md
75efbb9728e482e14e8ccf95301f6466 gcc/config/sparc/sparc.opt
e085c3934f5520c64222de26b11c11c6 gcc/config/sparc/sparclet.md
f271a2c5c69010bdc36679b647809dcf gcc/config/sparc/supersparc.md
@@ -4050,7 +4052,7 @@
b82bfe2a8ac01b87ec45c12576e90ce6 gcc/config/xtensa/lib1funcs.asm
deed48749518ab38c4c3d7a87cb99576 gcc/config/xtensa/lib2funcs.S
8074695f5eea7b961c59ee9608973dac gcc/config/xtensa/libgcc-xtensa.ver
-1ead674b6174ba39c6434b3532997b84 gcc/config/xtensa/linux-unwind.h
+524552c421a1fef329d41df422912728 gcc/config/xtensa/linux-unwind.h
8fd23e0b88f3fd4760cc0e856d8553e5 gcc/config/xtensa/linux.h
6d34a5b6bd51c7bf548b41202f29f032 gcc/config/xtensa/predicates.md
8b7f87d40cffa52a9b218754a117ec74 gcc/config/xtensa/t-elf
@@ -4063,14 +4065,14 @@
5c1710201d7be863f49567eaaa0b20e1 gcc/config/xtensa/xtensa.h
697079e92cd621a4226a354c5ea2c1a7 gcc/config/xtensa/xtensa.md
817d70283ee9515a6bc94ecdf0574903 gcc/config/xtensa/xtensa.opt
-0dc956c5f5d9a39829dee1e70960749d gcc/configure
+a655a6a5add810221883b9dfdf455dac gcc/configure
ccd8f3456084521472ab29fe2ec524cc gcc/configure.ac
-2e96ea5780fe26d1269ad3b234acde96 gcc/convert.c
+c8c7fd1280d674fb2e4dc0e3076769ff gcc/convert.c
8e8d379b495b79ad19b6260bb3fc43b2 gcc/convert.h
fed521a8b57ca3f53af672c0eb581597 gcc/coretypes.h
fed4e27e47d3a50158de285e8c26b416 gcc/coverage.c
1a69bad83c84b193b55d89f3edb77ab4 gcc/coverage.h
-0efcbb058affa9a35b97e96abb18615f gcc/cp/ChangeLog
+d071be0e61ce2a28e6fcb7602af37a98 gcc/cp/ChangeLog
d271e3663538ba1f3281cab3838e92cd gcc/cp/ChangeLog-1993
f5a44adbc05521162350ca409d1d95ce gcc/cp/ChangeLog-1994
ac55db48d964cb5469ff03c1cd3ee04d gcc/cp/ChangeLog-1995
@@ -4095,7 +4097,7 @@
f683cb4990a958bfc1290bbf937646c3 gcc/cp/call.c
c333d7276d59c1b4b8e8826a1cb154ba gcc/cp/cfns.gperf
6378f6e4fd51e667512dbe94be975d88 gcc/cp/cfns.h
-6c2f1aa01ecf5c473d6cfb26bab8df89 gcc/cp/class.c
+4efe8deb7508d4ebedfce380fff36804 gcc/cp/class.c
7d3406890f6b2f9529e189b2894460a1 gcc/cp/config-lang.in
4f49fd277593a7129d762fb1a8d92a59 gcc/cp/cp-gimplify.c
0636271e3c58ffb4b92801139d0e01f2 gcc/cp/cp-lang.c
@@ -4106,33 +4108,33 @@
67bbb6e57bd5126527572b8602bcb835 gcc/cp/cvt.c
1472180ef4cb9eae7d00fc2539136386 gcc/cp/cxx-pretty-print.c
be348f307d2bd9dbe98e75a6d362ed25 gcc/cp/cxx-pretty-print.h
-77ccb7221d2e11aa3d9e23fc1bbe7f0d gcc/cp/decl.c
+4080621b433234ad054736f2ce807ccf gcc/cp/decl.c
5626f8be7c0353390d8a2d6e1c647a2d gcc/cp/decl.h
-26753b1fe3aaea2425827fa3e1628fce gcc/cp/decl2.c
+c2d07cd649f4c56d1d9b4afd0ba152b8 gcc/cp/decl2.c
a009584a5d3113881556b1b41458d6dd gcc/cp/dump.c
1d401dfe28b442881b901942e2b05201 gcc/cp/error.c
f22adce96d72a468408a9aface59e19a gcc/cp/except.c
df402f15d9dab032a7242c387e30f8f5 gcc/cp/expr.c
887ff1049a055a68f3dbb0a43c308b2e gcc/cp/friend.c
7cfbd774cd08fb55133526fe92456977 gcc/cp/g++spec.c
-8c8b9dd6fcb71d9b76cad01e75eb7af0 gcc/cp/init.c
+943a564648229d91948db46f8ad25f84 gcc/cp/init.c
9a34b66a3f562bb915158e929108deb8 gcc/cp/lang-specs.h
2da5eeed32788fb2684c51f844d50763 gcc/cp/lex.c
-ca8ee59440d8c3eeacf44c604559d0c6 gcc/cp/mangle.c
-7150bcb1830e575b18f2a3fdb6cd4eaf gcc/cp/method.c
+da340a580560b25e8b404278f0c41508 gcc/cp/mangle.c
+523efd00e3639b71ffa5c6050d7706cb gcc/cp/method.c
e274f6c653d0a21e48d565353d1ee595 gcc/cp/name-lookup.c
d199c406703f88abc575b2fbf7d28777 gcc/cp/name-lookup.h
b080bcfe8e8b473de78c2cb0483a21eb gcc/cp/operators.def
d9f2bda35bfdf900eb25657af11bae05 gcc/cp/optimize.c
-94c0c0f2292fbf1f0f5a36b33c2ed841 gcc/cp/parser.c
+212ab7560ae699ad8624957c284e8698 gcc/cp/parser.c
446e2848b4b509382fc904ece12bd35c gcc/cp/pt.c
d39366c63d4a41e972eeafe80e0ac8c5 gcc/cp/ptree.c
f1f1d2b6b441fc819d3e81cb888cf51c gcc/cp/repo.c
74008fc69572dd3c4dc5372dcf209ef4 gcc/cp/rtti.c
a1f1251e77abdcba03ecf27c0f769572 gcc/cp/search.c
f155b25d00180f6047e24ad20ea81888 gcc/cp/semantics.c
-915761054c416c23e362639d54a0ba67 gcc/cp/tree.c
-e8b72497265ebcdec91e625533e2449f gcc/cp/typeck.c
+9b00fcdf0f72642b445857b4b22da9b0 gcc/cp/tree.c
+f0e52c469615002d4985dfd2917b232c gcc/cp/typeck.c
0e90f972bcf34d143d9cadf6f5255245 gcc/cp/typeck2.c
739f89c50b9226ba10b0a5ff3ed77ea3 gcc/cppdefault.c
8cbfd0935964cec15954e2b50ffd92c9 gcc/cppdefault.h
@@ -4156,15 +4158,15 @@
8fef74589d93f1d57e87b89743ed0cb2 gcc/defaults.h
265ed57429ca3542d0821e1ee8ba1f1f gcc/df-byte-scan.c
f7820784265017f953c2a903e47141da gcc/df-core.c
-4d7905b591212cd48ca507b500e2db21 gcc/df-problems.c
+141e3a1cac82811fd84871f625ea2a9c gcc/df-problems.c
274b5f0234930d0234cdd78eb41bb851 gcc/df-scan.c
-aba4c4717017365144ec35e9923b206d gcc/df.h
+60881abe05e8beb71165c5a25d125bde gcc/df.h
1c7b2e95db9877ccb5f1179a3b0465f3 gcc/dfp.c
348ca5583aa3bdcb1d4790a2284d86d7 gcc/dfp.h
e904dfb9b3a9002fe2ba85e853606e28 gcc/diagnostic.c
02f5415206cf90ce78f5325cf12915e1 gcc/diagnostic.def
ea7ef5fa204836561a1c2b0e0571ddba gcc/diagnostic.h
-2a364b6c684b4456ee500a6fd0c7c0fd gcc/doc/aot-compile.1
+50b345a637d67ed1f0b1cef1b7aded43 gcc/doc/aot-compile.1
c78ede5059d73900d165c481f3b3df73 gcc/doc/arm-neon-intrinsics.texi
f14bb72f864987edc101885b31399d41 gcc/doc/bugreport.texi
b1ed827e7700a56f82a492748ca494a5 gcc/doc/cfg.texi
@@ -4174,38 +4176,38 @@
6ed911b9535d38ab2eef4969854f0581 gcc/doc/configterms.texi
a6a48c6a37f6428a3a156a83b5931464 gcc/doc/contrib.texi
532efd24ba5590c6aed6cc4fa92638d8 gcc/doc/contribute.texi
-cba98130507842b1b7f794e34ee3987d gcc/doc/cpp.1
-dc757b6ddf87e45331ebd2786a45669a gcc/doc/cpp.info
+6e8e141002f76c3c214a825a3ed94771 gcc/doc/cpp.1
+f61781c362a503f5ec3c4ad192e7e6ed gcc/doc/cpp.info
b3e155dc7ce8cc3ca6828d3ce02ec945 gcc/doc/cpp.texi
8462a717da44ca316c8c9ac975457a32 gcc/doc/cppenv.texi
-477b6a75d7daac4346736243faa4d6b5 gcc/doc/cppinternals.info
+8d15b5d3a43f7523719870d79afef126 gcc/doc/cppinternals.info
55cf8ff7895a619dde004d75de18d584 gcc/doc/cppinternals.texi
8b50153f82c1aa10bec32aa9b4d20f31 gcc/doc/cppopts.texi
2c1789fc6ed1b0b239ca419377c576a4 gcc/doc/extend.texi
ee150f91929d3eeab1448e2abedb89f6 gcc/doc/fragments.texi
456af151776849fe8c9cbd2c5db5fc36 gcc/doc/frontends.texi
-17f8e9cb7b504775770c526a3650f160 gcc/doc/fsf-funding.7
-1d1bf9ce4a7a285858eb443e67b3e6a4 gcc/doc/g++.1
-19a65bfdcad7a1f76438d52cc1fba923 gcc/doc/gc-analyze.1
-1d1bf9ce4a7a285858eb443e67b3e6a4 gcc/doc/gcc.1
-cc747ec5c738d2bef1c3475db706d81a gcc/doc/gcc.info
+5086d7fbbd93ac5328a2ae9d68675949 gcc/doc/fsf-funding.7
+738008cf8718a689e09d262d641a6087 gcc/doc/g++.1
+dce349a34f8a084291863c7bb3cebe14 gcc/doc/gc-analyze.1
+738008cf8718a689e09d262d641a6087 gcc/doc/gcc.1
+7f391fba3db2f7f9b404f4ed1c0a48d6 gcc/doc/gcc.info
9e02c5993b06e67800ebee0fcd287263 gcc/doc/gcc.texi
-524f4daca8befb67082d065e126327d5 gcc/doc/gccinstall.info
-6545fa18cdc962c01ee74067f445dde1 gcc/doc/gccint.info
+b2716ce171c02dc2c50df5ed2c8e5d01 gcc/doc/gccinstall.info
+99f5b8072f9c65218076228c7eaccd53 gcc/doc/gccint.info
9f631cda9596a0e2d12fc8e93f60375f gcc/doc/gccint.texi
-65034b4fa990cd5e1f8f6b6c4ec4cfab gcc/doc/gcj-dbtool.1
-42d4f1da4e5c6e425c7dce794058d3b2 gcc/doc/gcj.1
-199e4a6ade72a326bba800020a4002c4 gcc/doc/gcj.info
-aedc4fd4863b60f857ca2d213becb3a1 gcc/doc/gcov.1
+24af2494e6165c1cd2fa7dde0babd032 gcc/doc/gcj-dbtool.1
+8ca67e6f60a6133c70d7a435953b93f7 gcc/doc/gcj.1
+767b589a80d711376b7235ce2c4881ba gcc/doc/gcj.info
+d05928b14474e96e44319887668ec543 gcc/doc/gcov.1
284df058ae86fddc2593727db8ae96d6 gcc/doc/gcov.texi
36c7b44cfe7e97e70a1424517583e9ac gcc/doc/generic.texi
-a397ff89d2d0ee85039f30b40aab6200 gcc/doc/gfdl.7
-dad2a2cfb6e36f915d5026ac9672f4ca gcc/doc/gfortran.1
-30c536d697272e2d632bacacd4393adf gcc/doc/gij.1
+ebb66dafeecc93bf166190fbdd42a269 gcc/doc/gfdl.7
+7041ef35e7baa9a4426c8316f0224d89 gcc/doc/gfortran.1
+dd3ba05c1d7748a83f653b56b2683497 gcc/doc/gij.1
388076d3f2051337bb143e8ddd02926b gcc/doc/gimple.texi
290370669f02bef1502ada9273e5261f gcc/doc/gnu.texi
-9e2b262863e6326f7d5b8393388b0041 gcc/doc/gpl.7
-330710b0626243f90340cd41c2b0eb86 gcc/doc/grmic.1
+4d350ec914fbf3454cc24b13bbd1a7e4 gcc/doc/gpl.7
+0bcb4b9547278fd2e137b3f9f39ae85b gcc/doc/grmic.1
4375c08c1628352f8197fcb202cf6847 gcc/doc/gty.texi
12712ad63a56e9d549562b21b42b1454 gcc/doc/headerdirs.texi
3e6f9713ea47bd729297ee5daa35abf6 gcc/doc/hostconfig.texi
@@ -4218,23 +4220,23 @@
5f5adc2c6c4ebdcf03cc0125250f5995 gcc/doc/include/gpl_v3.texi
dee9095d1a927726aff2b0f71fd1f9f5 gcc/doc/include/texinfo.tex
86355f77ae147b0b5ac0b6127c8259f8 gcc/doc/install-old.texi
-fea0dc15134a83f9b12134b7ea7e43f2 gcc/doc/install.texi
+896a004c531b16b1648f93b2177d1c9c gcc/doc/install.texi
8798a4a6671853841bb8260cf24753d2 gcc/doc/install.texi2html
5407c66b804884426ce94dcac22864d1 gcc/doc/interface.texi
f9dd029768172aba27fed98ce49eaa93 gcc/doc/invoke.texi
-9a54ab6509038d98fa754496d86f2ed8 gcc/doc/jcf-dump.1
-2eda016cb2dc96aef40b2fc1836322ff gcc/doc/jv-convert.1
+6412c50b5b8f48e9b021d3ab0e61bf54 gcc/doc/jcf-dump.1
+b12d89ce7c5397e8d1808e21750505a8 gcc/doc/jv-convert.1
01b0dc3ad11961d7eab2d299d15e9672 gcc/doc/languages.texi
368c6334d0fd27a14c988b146cb70bcb gcc/doc/libgcc.texi
745ce3259344c93de861035760bcae0e gcc/doc/loop.texi
c872dbbc53a21bea59fe7023a44ddada gcc/doc/makefile.texi
-e00e32fdf6a30b8541979ab20f01e88b gcc/doc/md.texi
+69d2763eb1f27f036020dc4550e2ca73 gcc/doc/md.texi
917011c981ebab7db6bbb9fa79e0d941 gcc/doc/objc.texi
8cdcdfd9e69b36701146a06ad8f3c283 gcc/doc/options.texi
b14876846befb2825918fa39478fb107 gcc/doc/passes.texi
4c446a02db2c22a0b9d4aed74e266472 gcc/doc/plugins.texi
72136dc6e58c1bb1790f0f25bbaf8897 gcc/doc/portability.texi
-521947b9b4ed7539f4cebb4c81fd0f9a gcc/doc/rebuild-gcj-db.1
+b6f5e7594f347e27189da9b0d3f4c8ac gcc/doc/rebuild-gcj-db.1
8b2f70f5500f648bff98c2e207e098aa gcc/doc/rtl.texi
d65d49dcfee4f97f1aea81855a0c20d6 gcc/doc/service.texi
2e07b7717108585df2ebdba57d971713 gcc/doc/sourcebuild.texi
@@ -4242,7 +4244,7 @@
f8917869d5f9a5a25fa084f8ac026895 gcc/doc/tm.texi
38595a90311508099614e7a7e4e4afad gcc/doc/tree-ssa.texi
1475027396d2a227a2319b567ec28601 gcc/doc/trouble.texi
-807f274f83d99a476ce4f4fc5f398d23 gcc/dojump.c
+f320625e0aee6af0584872974f5228fa gcc/dojump.c
dfe6c3f29fa27b1fbb0171ac1393d0b4 gcc/dominance.c
242f51489a0676031ad163fd99a6629b gcc/domwalk.c
79f0d5df1c6564155509816fa0019047 gcc/domwalk.h
@@ -4253,7 +4255,7 @@
3fc93c5f23bb4c02722283187c1e4698 gcc/dummy-checksum.c
04422d9823daea83c57d8c9532d6e581 gcc/dwarf2asm.c
558866ea8fb551d638a697829991c081 gcc/dwarf2asm.h
-8bb75b6140b735de0f15e8c27d9e2e24 gcc/dwarf2out.c
+1916c9b124eb0f289bab03c570cabae9 gcc/dwarf2out.c
80131a4655c4f50846be97b978f59fb6 gcc/dwarf2out.h
474b7fa1f5dcd77c7acf5e1373c69062 gcc/ebitmap.c
5aede90d7380412cbc9521027ec7c6a9 gcc/ebitmap.h
@@ -4269,14 +4271,14 @@
eb8ff32b26b4e6891e6aa228270958b5 gcc/exec-tool.in
d1e63a2727339dc15cee7b97e4c7dd66 gcc/explow.c
74966bde3f6bba77964381eb56591c5a gcc/expmed.c
-820d8ef6d3a1a1a7855ccab5a20ea553 gcc/expr.c
-79b459858279f06d9b3fc400c9309002 gcc/expr.h
-b802bcc3f0a24a0b14c30d1113f81d1f gcc/final.c
+3a2c64db7e32bb35897f923986bca727 gcc/expr.c
+a09670d088e33e4d442de0dcdfd0455f gcc/expr.h
+6cd856767ae56d79b600313f905cf91d gcc/final.c
34a29ac013b6e44a67e2de58447dcbf0 gcc/fixed-value.c
f57fd99a821089eaf00eb7374a49a38e gcc/fixed-value.h
c1283cc39ed90c020b4f1ea101341d8c gcc/flags.h
-da90da714ea4f000817dcdefad6f85b2 gcc/fold-const.c
-dd3513ed6bc4f74de269b187ca83cad5 gcc/fortran/ChangeLog
+57cb05105d30bd88d354bd5bb69994bb gcc/fold-const.c
+3aaeea849d6e4558e02ce37c38a5516a gcc/fortran/ChangeLog
3330102ad3a0217cba963be6b5eefd58 gcc/fortran/ChangeLog-2002
d000ab985b1eeb1ad5749f98b8fef99f gcc/fortran/ChangeLog-2003
bf42f94f0c51dcc7d8051cc7fda1efdc gcc/fortran/ChangeLog-2004
@@ -4298,24 +4300,24 @@
99e48c3aa20e155f0d6d4320d74faf77 gcc/fortran/cpp.h
73efd78c304b9eb39487e93eb7acf333 gcc/fortran/data.c
0aa9443da916c0d6fdee7f808f5778ac gcc/fortran/data.h
-74473cc621172af8c6ee5995d12cd5cc gcc/fortran/decl.c
+e94829837d1b897fe792aaa629eb05e2 gcc/fortran/decl.c
4d0a89566c43e189a3de957e1cf6adc2 gcc/fortran/dependency.c
e115b5c303a340fdb41109a739622308 gcc/fortran/dependency.h
ce946f99d347d0c0d47b9428cc3798a6 gcc/fortran/dump-parse-tree.c
422b627f0d8143a0757c7b285c81fd57 gcc/fortran/error.c
-208595a7f06282b4e83359b7f078259d gcc/fortran/expr.c
+bea85afdf686192c5f6dcad701d1f34d gcc/fortran/expr.c
2e201548ca8886cfc1bc88cfefd59bd8 gcc/fortran/f95-lang.c
42da77d9340361600ff5b6c832cfb033 gcc/fortran/gfc-internals.texi
-c102257241663fb6362ffd2c735e5cdb gcc/fortran/gfortran.h
-6cda835379f6a39a15db79a6c13238cb gcc/fortran/gfortran.info
+0b277a9b7a3b1b0ec2e7fd2f33918145 gcc/fortran/gfortran.h
+293b45b4c5900b13df7a8a391ef99995 gcc/fortran/gfortran.info
464ec7c2b8e6620a939ede4f4615a850 gcc/fortran/gfortran.texi
2da211bbe9c6e6cbfd625a0730777bcf gcc/fortran/gfortranspec.c
-c1804edd27e05b3ceecdc6bdef8b68ab gcc/fortran/interface.c
+c54e1c5512ae98a40fb5edd1d0f47872 gcc/fortran/interface.c
3121fd24c3bf7b5758b773a1cb45a76b gcc/fortran/intrinsic.c
b2016ca84d88ee5ede32219c76176735 gcc/fortran/intrinsic.h
2357a8a9a1ea183bb139bcb89840b6c0 gcc/fortran/intrinsic.texi
a9439f169bb6609279e7345854ffe543 gcc/fortran/invoke.texi
-b923f606ac5c3baa6ddf829050fc61e3 gcc/fortran/io.c
+e2053274c90893e73be095dd64dc945d gcc/fortran/io.c
9e6e56abc8c6aef5fb8e17d7f6701cef gcc/fortran/ioparm.def
1e444bb32b6a8768be480adf00e6f623 gcc/fortran/iresolve.c
40579050bcaad08faeb249ddd546b12f gcc/fortran/iso-c-binding.def
@@ -4334,7 +4336,7 @@
16291ab9d87149e23f13dc87e99c7031 gcc/fortran/parse.c
a830548ad8d53b7d749ad7905f8a4b58 gcc/fortran/parse.h
6d855463ebeb699964054fda9ecbdd9f gcc/fortran/primary.c
-9f05ee80af0851b998ce7dff4d1916f9 gcc/fortran/resolve.c
+bcbb2e72f2eeef917429b6887250fde7 gcc/fortran/resolve.c
48cfc395cee5fd888dbed410936bbed0 gcc/fortran/scanner.c
0b1e91ac07a9391b3372438215a5ecab gcc/fortran/simplify.c
74e09a0d9e735c9720c626d1596a7a42 gcc/fortran/st.c
@@ -4343,11 +4345,11 @@
df82f531d1b8f830672798edf1d7f313 gcc/fortran/target-memory.h
c3d79399713f59c6655fbe725f14ff50 gcc/fortran/trans-array.c
7396e6c3f23f72a5bad678378066083a gcc/fortran/trans-array.h
-ad5683e9fcb539028da0bc64752b37d7 gcc/fortran/trans-common.c
+00916ec8bd5aec242773426def977811 gcc/fortran/trans-common.c
42e8d7b8851d1511533ac3805f379af7 gcc/fortran/trans-const.c
8261a38a3863797872c80e778abde7c5 gcc/fortran/trans-const.h
06f0ba791b06e7fbed59e71817b3357d gcc/fortran/trans-decl.c
-323ac99469ec593de4afd62731c3d7ed gcc/fortran/trans-expr.c
+18d3039c76687f1eafef25dac7510451 gcc/fortran/trans-expr.c
0865d3a3bd4ad7195f68f365780513e5 gcc/fortran/trans-intrinsic.c
953b8fa2c92b0c0dd22df80a9dedd9b2 gcc/fortran/trans-io.c
a624342756792e5f4cf9e24ca1063f95 gcc/fortran/trans-openmp.c
@@ -4355,13 +4357,13 @@
7e2457f283e5d1ca35927d9033d6c237 gcc/fortran/trans-stmt.h
ae6fc71e911a737535a599c4d40843a9 gcc/fortran/trans-types.c
5e8e58185089d2b938593c27e5989ecd gcc/fortran/trans-types.h
-7eb1486993dcdb8f25dab6a9847bb226 gcc/fortran/trans.c
+e3b869eb5a94d5aa1f2f4bafafa0aed0 gcc/fortran/trans.c
36ac0de61fb6f1224fea0cb3743c779c gcc/fortran/trans.h
e83cc8321fe62c08e6d975eaece78b64 gcc/fortran/types.def
dcbfb5f59aa7c840c77285967d94c409 gcc/fp-test.c
-4bd6abdbf1a5ef0181f0d0dbd59fab0b gcc/function.c
+d2c3063e68499689e03ff6bc5a463519 gcc/function.c
790cf139fecc7569ffba619c8950bb50 gcc/function.h
-dd1ee8d2b665a5933f3f41d32788b543 gcc/fwprop.c
+e8e6a69cccf23e1f827ed8e32eee54dc gcc/fwprop.c
c8f78bf1dbb8541ac3d45ae8be3d891f gcc/gbl-ctors.h
09d17600f6a93e64cb3056277c45b9af gcc/gcc-plugin.h
6b96886ec28371582b56700c83a18f5e gcc/gcc.c
@@ -4371,7 +4373,7 @@
6cb5ab08ad73dcbf163f1ea9d7bcae8e gcc/gcov-dump.c
ff8326072ca4008686bcef27bffe60e5 gcc/gcov-io.c
b4f5e529d44c9f0b00663cb58cbf0866 gcc/gcov-io.h
-270dc7fdad3f0bbfbb49fe93f32cc239 gcc/gcov-iov.c
+c8bc63ea087dccb47598eb1765069763 gcc/gcov-iov.c
fe1299d2cc2319a2e256c9635ae544d8 gcc/gcov.c
beec452078f1533a4cfb5efc18b2954f gcc/gcse.c
3cb8360ec3781362095071afd1c67102 gcc/gdbinit.in
@@ -4388,7 +4390,7 @@
e6298d4d72f836fd8bc2dfddca6ef3d4 gcc/genextract.c
f5bff7fed57ff3ab5cf7c8a72f36de36 gcc/genflags.c
ac69af0b2bcdd35b25174278ccd40aca gcc/gengenrtl.c
-a36baf94f4f3ff27b4bc5bf43f6c938b gcc/gengtype-lex.c
+dda097cb3eba5520d747db5902ee9623 gcc/gengtype-lex.c
ad24c7b461b0e75ee40e733b5a9d6ccb gcc/gengtype-lex.l
277569ea0aefc259b6aa5ae0b966101e gcc/gengtype-parse.c
a4b0bf09812c1108f065038bc7fab698 gcc/gengtype.c
@@ -4414,7 +4416,7 @@
fd9b54ec4b615172be7116e444bcb9bf gcc/gimple.c
0ab4a2d770043fe0ea7326df0445382d gcc/gimple.def
2868e30be5dccb2a290f9fadc5b60f17 gcc/gimple.h
-055f10e02acf06a814ed158cb40467f8 gcc/gimplify.c
+83ea1aa27a8370597c87c0476d4d49e2 gcc/gimplify.c
b3220d6ec518f1daa75b938e8cf0e203 gcc/ginclude/float.h
798164dd63bdd388c276bdda934db337 gcc/ginclude/iso646.h
6a912263540a2dfa8d258931158882d5 gcc/ginclude/stdarg.h
@@ -4476,7 +4478,7 @@
f11c5e848450fadda50fac2c6aeec00a gcc/hosthooks-def.h
2cff45dc40074424bcd2802ed2fdb175 gcc/hosthooks.h
1f920e0004da21efd813586fcf4ce5e3 gcc/hwint.h
-2f6bb316e3389b3fe214c048ae249cc2 gcc/ifcvt.c
+475fdc8bc21175b9ff90c37b5337bb19 gcc/ifcvt.c
d20f99a265083adeb70c026db14a7edc gcc/incpath.c
bb322f9a267105c69a1b6bea367de2a3 gcc/incpath.h
6938ee04100db3b30a19082eb0f4c66b gcc/init-regs.c
@@ -4489,7 +4491,7 @@
7c97b2ae48706809ea6c5d02fe74db76 gcc/intl.h
898e40a5e6dae9387f0f1b4a19cc46e7 gcc/ipa-cp.c
876b2e3330e8171d421cf8cb6c4bf9aa gcc/ipa-inline.c
-22c2919926ab6263acf6d19c5a1926e8 gcc/ipa-prop.c
+aaee83c0db51dbca66483076b943e0c5 gcc/ipa-prop.c
f4855d00b3860b1389daf7b67411fc4a gcc/ipa-prop.h
c962dacb70722090881ae51498e20809 gcc/ipa-pure-const.c
fc448a5f6589abc8585bb638c30fcbcb gcc/ipa-reference.c
@@ -4510,7 +4512,7 @@
03ce17ad27f96992688a333d939629d9 gcc/ira-lives.c
121fd39edf36a62fd7d2e96ddfe19816 gcc/ira.c
04d4e8e08466be83d994baef14932048 gcc/ira.h
-e7841caf33758f372d6dfd18f0ff9a87 gcc/java/ChangeLog
+54302fc1d7c4e29d49657c15705e3f06 gcc/java/ChangeLog
3becfaac793f49e1f52cd74e78172b48 gcc/java/ChangeLog.ptr
32ebed5cdcf7881894c85752621f10b5 gcc/java/ChangeLog.tree-ssa
0f8f7b0aba55433f835be78be28ce5b3 gcc/java/Make-lang.in
@@ -4572,7 +4574,7 @@
83de5c6450456e215a5484083afcd32a gcc/limity.h
bee65a3b96999c33babc4e9b6ec41bb2 gcc/lists.c
6ed8ce261dd4a986da6ca2452dd12f8d gcc/longlong.h
-37ede3042f0bc1318008da4a7c90e46e gcc/loop-doloop.c
+f707f7a196155fb32c1657dc406d897a gcc/loop-doloop.c
65fc615ff154658a2cf755b5f143616b gcc/loop-init.c
7abed9a788857597f51d53c0e7a26e7c gcc/loop-invariant.c
812848acddef1ce04fa729f54d2a746f gcc/loop-iv.c
@@ -4582,17 +4584,17 @@
21335199bd11da8f3a079c5981c73545 gcc/lto-cgraph.c
2cc01a6c634c6970711744aec1f13d65 gcc/lto-compress.c
59a05eb75c837c5411ca81b5dc06c84a gcc/lto-compress.h
-72aba75d129ed987c386f42cb238725c gcc/lto-opts.c
-c8c2671c5ff4010b8ac5ddb3f460c09a gcc/lto-section-in.c
+f9ed75219e029d8eb7e824a5df269aa5 gcc/lto-opts.c
+6fbc9f78688e7e71e6559b007acb314e gcc/lto-section-in.c
d30e20f1661a1bcf895d915af8ee2d8b gcc/lto-section-out.c
-38ecfd2b83be278b0e3c63e7657d9893 gcc/lto-streamer-in.c
-e1f55c3399a8fc7835edac0000af0355 gcc/lto-streamer-out.c
+dc8c403bef8b654a62f1f030932e6c3b gcc/lto-streamer-in.c
+efdbab342212ec45c93be6f8f3cbf7ea gcc/lto-streamer-out.c
657ba1dfb59654cd748a14b416db0c87 gcc/lto-streamer.c
10d410ff514284c2ff217d9258b4d583 gcc/lto-streamer.h
4cb27b5524bb8e16a0f124435d9d977f gcc/lto-symtab.c
3ae3c82a5e55d66627eda0f1f0d6e0c3 gcc/lto-wpa-fixup.c
0cc6d8505ce0477deceb0cd2fd8dacee gcc/lto-wrapper.c
-a1d227b0a078151dcd955f397ced8d9f gcc/lto/ChangeLog
+de7bd0bf5c6b045f5c8c7bc66c175df4 gcc/lto/ChangeLog
d40428c72b0f5790c0f4ab74b165e16f gcc/lto/Make-lang.in
7a4827ad581d24ff7a347529172457bd gcc/lto/common.c
572c5df0f085119d1988630e6b08e0f9 gcc/lto/common.h
@@ -4607,8 +4609,8 @@
a7197c778a5ee7011357f2a3cde4831b gcc/lto/lto-macho.c
5276748288980f816d4d13996ba95e88 gcc/lto/lto-macho.h
05523f24f8a1f7cd4f42ea4da37f03f9 gcc/lto/lto-tree.h
-6a8c61d3932cbf2da38d0852a6078a8e gcc/lto/lto.c
-f8dd0278e48674e11402c8417509b975 gcc/lto/lto.h
+483ce2d769f29bbd467f6d1a5aa40906 gcc/lto/lto.c
+95d2fc794612cc5c3c2a958914d59402 gcc/lto/lto.h
6b305c62e5ffb4464157a05cba3f3429 gcc/machmode.def
ec4edb5e0fae199947462426835f2991 gcc/machmode.h
6a4899b65f15b778306b3737e277e6c2 gcc/main.c
@@ -4622,7 +4624,7 @@
2569a0ab9b2c9f2c2b8e980aee6fbbe3 gcc/mode-classes.def
8fccefeebc82ff915ece0edeb04c8670 gcc/mode-switching.c
b457123c5a4246f23ebea39b556d6981 gcc/modulo-sched.c
-d19da7f147c7a0e9d2e091750bf40b6b gcc/objc/ChangeLog
+f223e80ed91ec3a2cfeed2cc4867d26f gcc/objc/ChangeLog
019095b8d355b66bfa2e4d81e00e2bed gcc/objc/Make-lang.in
aa5319dd541cdb0eb8622f9adf66b761 gcc/objc/README
079d3dc27e9567936ebcc70e9662b3c8 gcc/objc/config-lang.in
@@ -4631,7 +4633,7 @@
6665874eae63d7ab5a3b092657c9af3a gcc/objc/objc-act.h
42662d5d9a25fc2b097fc81c392fe735 gcc/objc/objc-lang.c
6779d586f851c44361fe2884d2d9192c gcc/objc/objc-tree.def
-659b6ba9747ea71667dc1a826e28442f gcc/objcp/ChangeLog
+ff4dea2acceec8fb2d1e2b29ed6dbea6 gcc/objcp/ChangeLog
f5077c9b3f8343b4ad79fb97020d3afe gcc/objcp/Make-lang.in
871a47a5d40ed19c0d393bb1a52229c2 gcc/objcp/config-lang.in
b69e6fb8f98a0eca7d27309f950a6974 gcc/objcp/lang-specs.h
@@ -4659,7 +4661,7 @@
ba9b5a45a34ca1e8191db58120ea443c gcc/plugin.c
3d30527cefb69b5cd6c84cabdc080df2 gcc/plugin.def
1caa64fb1bdf511405aadcf4ea68ad05 gcc/plugin.h
-00e1f9001b61e812d609f35ca8a1a264 gcc/po/ChangeLog
+8cc4fec5bf9270d3ee23d9a43197fb94 gcc/po/ChangeLog
c72960a6dc552861312d1e660c31e4a1 gcc/po/EXCLUDES
dc2ca10e5e33e192be66977788906f0d gcc/po/be.gmo
bf63bdcb43b0b3312147bb3b6d0ac702 gcc/po/be.po
@@ -4710,25 +4712,25 @@
c1cffa7f76d39b2334904c8974386371 gcc/pretty-print.h
f4b00c27947507c74d5dc7290e3acacb gcc/print-rtl.c
f7ea7e4504971cf5a3d675868f7876c2 gcc/print-tree.c
-2f05eaec959cc996133145793b773fcf gcc/profile.c
+cb3eecd653fce623456abb009f6e5796 gcc/profile.c
352410fa9de113473a4e5d65d6bff7a6 gcc/profile.h
4e75dc40ba439ac58fef4b958de10c31 gcc/read-rtl.c
-300143a8afb427bb7c9206b365cdd251 gcc/real.c
+1837902db7185c8f27f22247f98de4a4 gcc/real.c
c97cea890c9c098a1778f863c88ef234 gcc/real.h
-5bed9951dbb79fc31da5289f32150b45 gcc/recog.c
+391a8e4f6f14c7b0f643ea9d2ed35b38 gcc/recog.c
aa126af5f57bb0a3478390652c32c3a1 gcc/recog.h
51e21c0bae09ccc1bd253f9b62ec806e gcc/reg-notes.def
5ca8ce5b632a18dc34c682554cb98286 gcc/reg-stack.c
938d9a4c3d87fe60d062e77df49b44fa gcc/regcprop.c
cc414900237d541552412a787661bd17 gcc/reginfo.c
-1b8eec91b7a79aca30a162f5779933e4 gcc/regmove.c
+4ce11e69dc17a38faf4c291effa3b183 gcc/regmove.c
4d8ca26aa5ab490b59fb48a0c3f9fefe gcc/regrename.c
2859890f05ec0e318bfa06fdabed774a gcc/regs.h
fec5b9d9102dad65fa62ba3fcb472ff1 gcc/regstat.c
-f6903f10e9b666dbd3365475b6209294 gcc/reload.c
+aa570950a553795fc5eb0abc8446f25a gcc/reload.c
dd93a6feae6f54c92f8d3fad496af713 gcc/reload.h
-79868f5cb1f0ae06d5649aabfa70f6fd gcc/reload1.c
-4ab4c36a79ab8bdf540c0d30b9d437db gcc/reorg.c
+88c9e217d02bf405850cb27d55488a36 gcc/reload1.c
+fe023e80de8b5fa78f67f315dec5ae77 gcc/reorg.c
544efb3416890a8a7afc85420dcf8de6 gcc/resource.c
0cd56c90f997f89c4ae73cb37a4b5d52 gcc/resource.h
ff8319b1fdf1fc359d7d75b3ca90bbb8 gcc/rtl-error.c
@@ -4765,7 +4767,7 @@
676a1d90be632e3095720341b2cf2616 gcc/stack-ptr-mod.c
19759c16f6aa95170ef62ed45283c3c1 gcc/statistics.c
c8abb3f3323eac8780b7df9a60294b16 gcc/statistics.h
-f3d5d650816b56008506af576bcd30c1 gcc/stmt.c
+77cdaa3a1954335a5b3f8899b622f3d2 gcc/stmt.c
2340dfe70054fb18da6e74b9f7afa6d8 gcc/stor-layout.c
fffa1f285b207cde035311164462ae0b gcc/store-motion.c
bb95ebc7a9beb598eec859cb992edd76 gcc/stringpool.c
@@ -4776,7 +4778,7 @@
7e07a1945b7962ba3dd2e165d94b98fc gcc/target.h
ecf21279f1a2608cda1d036c447c2a04 gcc/targhooks.c
354021a929da6c011ad30c4960e934ec gcc/targhooks.h
-9f7931235fc433b6d69ee020c28f31b8 gcc/testsuite/ChangeLog
+6b434e0d313115058005b54d390f5da5 gcc/testsuite/ChangeLog
bf09a3a4b2844c1427e18133bf8c4848 gcc/testsuite/ChangeLog-1993-2007
0cfd18f5e11308d47955263801f31753 gcc/testsuite/ChangeLog-2008
31f1e2e69afabe472403fa35f4718c35 gcc/testsuite/ChangeLog-2009
@@ -4790,8 +4792,8 @@
5794a860cfcbee663fe76cdde0c7b0f5 gcc/testsuite/ada/acats/ada95.lst
4004844198395fe50ecb798ed5d30f4b gcc/testsuite/ada/acats/elabd.lst
bb4e4f9d3c0e72730e0bf397d375689c gcc/testsuite/ada/acats/norun.lst
-d5748b449a081324237ae22a21f32a3f gcc/testsuite/ada/acats/overflow.lst
-03c4b32d543e3915e74187922c521212 gcc/testsuite/ada/acats/run_acats
+17a66c0b337fb03b6f449227ed33297c gcc/testsuite/ada/acats/overflow.lst
+89d78b2267a12b1d99f90946e3ec2b22 gcc/testsuite/ada/acats/run_acats
86f702a649914827433bcaec1a34b7fe gcc/testsuite/ada/acats/run_all.sh
6467abb463602aeb04583b3822f653f4 gcc/testsuite/ada/acats/run_test.exp
5723a26fced8721c3e90e6e7a9ba2a23 gcc/testsuite/ada/acats/stackcheck.lst
@@ -7484,6 +7486,7 @@
87edf7a633ed33acea1114b550edc33b gcc/testsuite/c-c++-common/pr42674.c
8dbc3891adbb8c401bc580982af3d5d7 gcc/testsuite/c-c++-common/pr43690.c
120b592aa97ef9bb93a55a83c6706437 gcc/testsuite/c-c++-common/pr43942.c
+18b60e1f921ff729a499063148e1ac35 gcc/testsuite/c-c++-common/pr51768.c
b0ba836310044e7b419ef679f0b48d6f gcc/testsuite/c-c++-common/raw-string-1.c
554e7071d2525351de28445762633866 gcc/testsuite/c-c++-common/raw-string-10.c
1183cc89c3223291d7813cf8d78ef4d6 gcc/testsuite/c-c++-common/raw-string-11.c
@@ -8132,6 +8135,8 @@
96e51d00f882d1f43b035d7c6b88a69a gcc/testsuite/g++.dg/cpp0x/pr39639.C
2dd310aa31b211b87c38209f2ae84388 gcc/testsuite/g++.dg/cpp0x/reference_collapsing.C
edfc9b308544c77eeecbc033e166eae9 gcc/testsuite/g++.dg/cpp0x/rv-cast.C
+2e0bb1d28d2748f848a8b3e9a5e95637 gcc/testsuite/g++.dg/cpp0x/rv-cast3.C
+f9b7e932597d55a4496c547972c90934 gcc/testsuite/g++.dg/cpp0x/rv-cast4.C
4a1d911674849aaf2afae9f3e27c4a95 gcc/testsuite/g++.dg/cpp0x/rv-deduce.C
02ab2ee7cc221d0f5f3f7599f4e93dbd gcc/testsuite/g++.dg/cpp0x/rv-reinterpret.C
31a03c515e497c0cb6ff73eab6602307 gcc/testsuite/g++.dg/cpp0x/rv-return.C
@@ -8374,7 +8379,7 @@
9b015014257af56d73a48e0f2e546d29 gcc/testsuite/g++.dg/debug/dwarf2/fesd-sys.h
34941d0e46c36878c4c08a907bcce93f gcc/testsuite/g++.dg/debug/dwarf2/fesd.h
b899bb3263f62cdedb9ac1f07a21fb7f gcc/testsuite/g++.dg/debug/dwarf2/global-used-types-1.C
-1a20c5cb038428b690d213496fbd0e90 gcc/testsuite/g++.dg/debug/dwarf2/icf.C
+748fad6a207fa06c4de8354af6d2afe3 gcc/testsuite/g++.dg/debug/dwarf2/icf.C
94ab24c4c92e0025c8c21c00e7088ab9 gcc/testsuite/g++.dg/debug/dwarf2/imported-decl-1.C
cd2f8eb018e0f3274a839788f6516dbd gcc/testsuite/g++.dg/debug/dwarf2/imported-module-2.C
00073dddfb84caf2285834b264334fb6 gcc/testsuite/g++.dg/debug/dwarf2/imported-module-3.C
@@ -8436,7 +8441,14 @@
06ba44c6640fe57a83e614bcb293ca4d gcc/testsuite/g++.dg/debug/using2.C
e3e47848d7edc7d04e996db8969c01c0 gcc/testsuite/g++.dg/debug/using3.C
9ddce3a837af3a01b33e86ac89b2a282 gcc/testsuite/g++.dg/debug/vartrack1.C
+8fa7fae0969ea145d6ebdf95f4553797 gcc/testsuite/g++.dg/dfp/44473-1.C
+f7911d011adf83fd1a3094b207cc374e gcc/testsuite/g++.dg/dfp/44473-2.C
5cbc124f57f7f18d5247a117a8415ff0 gcc/testsuite/g++.dg/dfp/dfp.exp
+5f86222754bb4d7342a35eb92499419a gcc/testsuite/g++.dg/dfp/mangle-1.C
+c0592e7184d9390b10cd93d3b6f1f7a0 gcc/testsuite/g++.dg/dfp/mangle-2.C
+97de1869469f8592b096b761b6a2cceb gcc/testsuite/g++.dg/dfp/mangle-3.C
+becc0e6f064af285a504ff10eaffc525 gcc/testsuite/g++.dg/dfp/mangle-4.C
+5899dbb591a164000821a0ac993fcd47 gcc/testsuite/g++.dg/dfp/mangle-5.C
8b4d16a77a1edab85ee4c99fda03eb79 gcc/testsuite/g++.dg/dfp/mangle-mode.C
cd0133a632a541db051ef84d53754ac6 gcc/testsuite/g++.dg/dfp/typeid1.C
a14ddc8026a6c405bce178492b183c96 gcc/testsuite/g++.dg/dg.exp
@@ -8466,6 +8478,8 @@
bd6bd3cc57144658b6137dc9123743ed gcc/testsuite/g++.dg/eh/cond1.C
9218246502a1a48c13f74d67b4b19c2d gcc/testsuite/g++.dg/eh/cond2.C
a52fa6cd93c130963df8e930451d74a1 gcc/testsuite/g++.dg/eh/cond3.C
+8d0d0d1daa7ce211b24bfa05d2bcc16c gcc/testsuite/g++.dg/eh/cond5.C
+e2de0bdd91c75a83e86d8e423986c99d gcc/testsuite/g++.dg/eh/cond6.C
43098e3dd291c59e61245771f6e306d0 gcc/testsuite/g++.dg/eh/crash1.C
365a9a74302377cb0e82e7f5f1a7bca9 gcc/testsuite/g++.dg/eh/crossjump1.C
86be24a4005519ed1d807d772b94a617 gcc/testsuite/g++.dg/eh/ctor1.C
@@ -9108,7 +9122,7 @@
1a7816a666c363e8410710411e40ce26 gcc/testsuite/g++.dg/ext/weak3.C
165f4d1a12237b9ed8273a7db5e4299e gcc/testsuite/g++.dg/func-args-1.C
ed8a6c94f1bc2e70a324d73a77190040 gcc/testsuite/g++.dg/gcov/gcov-1.C
-8a878271fda0c051fbf0d23ab78d7afe gcc/testsuite/g++.dg/gcov/gcov-2.C
+afab866e59f46409fb68aa64174f3acf gcc/testsuite/g++.dg/gcov/gcov-2.C
0e241a16c3faf2f0c387bd2978d2b824 gcc/testsuite/g++.dg/gcov/gcov-3.C
2c83bff9a3f14aa6fc5d7755bf82c9b6 gcc/testsuite/g++.dg/gcov/gcov-3.h
a7c093e32d8e0cc08e02c3253748979c gcc/testsuite/g++.dg/gcov/gcov-4.C
@@ -9479,6 +9493,8 @@
d20a83f8968c6c9a1d648762dc1a9e2c gcc/testsuite/g++.dg/init/new26.C
d5a5bcf8bba7f46ab8feba49e73be0f0 gcc/testsuite/g++.dg/init/new27.C
2326f60a4e882ff67a8dd2802f7a0b8b gcc/testsuite/g++.dg/init/new3.C
+fb29671d73953facd665408d3e39029d gcc/testsuite/g++.dg/init/new30.C
+f30d722e5e54dd454d89dcda7f983e4e gcc/testsuite/g++.dg/init/new32.C
19dcda79922ea7017c7e260394e77415 gcc/testsuite/g++.dg/init/new4.C
30174c9a71d3d8e0fb35b9556abdea15 gcc/testsuite/g++.dg/init/new5.C
6142030ce76d1ab9453ff0a223722577 gcc/testsuite/g++.dg/init/new6.C
@@ -9546,11 +9562,14 @@
ca385abd9d6b36d0667c2ad521a0233e gcc/testsuite/g++.dg/init/value6.C
4487271d3a3d8cbbe87a8aa0dee4b541 gcc/testsuite/g++.dg/init/value7.C
8301ee378a2cddfa351a850b83e9542a gcc/testsuite/g++.dg/init/value8.C
+f486b963f0b6c68f60e277c5d3821f29 gcc/testsuite/g++.dg/init/value9.C
+b6b15a32222813d22fc13bb24c002c95 gcc/testsuite/g++.dg/init/vbase1.C
75fa012514803aa0a98113ff8b7474c6 gcc/testsuite/g++.dg/init/vector1.C
6a507132cbee807fabd3c9dfd0f81093 gcc/testsuite/g++.dg/init/volatile1.C
181d03bf17027cab97eb47736f11ff30 gcc/testsuite/g++.dg/ipa/20090113-1.C
d190270f1bd1bec019768c3db19b8de2 gcc/testsuite/g++.dg/ipa/iinline-1.C
8f31add58ec72eb54693c3a9f4769173 gcc/testsuite/g++.dg/ipa/pr43812.C
+c98ee8fcb28f00bc57648c866212963c gcc/testsuite/g++.dg/ipa/pr51759.C
f1339a059a53b8c932f6dd4870283209 gcc/testsuite/g++.dg/lookup/ambig1.C
fa1ea4ed4c9f1ae996929481bd6de67c gcc/testsuite/g++.dg/lookup/ambig2.C
0e636168c26983f9ef884688bb4917e7 gcc/testsuite/g++.dg/lookup/ambig3.C
@@ -10254,6 +10273,8 @@
17309afbd34e4b010edce7cdf8af0393 gcc/testsuite/g++.dg/other/pr42685.C
bd2f500fa5d566f920cd8ae804d20550 gcc/testsuite/g++.dg/other/pr42806.C
e18e3ba20f03468900780d327126e381 gcc/testsuite/g++.dg/other/pr43116.C
+ca769dda623fa2dd844c4edbcce22fc8 gcc/testsuite/g++.dg/other/pr49133.C
+36a8c3554403443884b8a9901e71ac7e gcc/testsuite/g++.dg/other/pr50464.C
fc6dc5d12ae16fd14b7d1c21901a935f gcc/testsuite/g++.dg/other/pragma-ep-1.C
33d66b71d911896fb85b0b22e7b82bde gcc/testsuite/g++.dg/other/pragma-re-1.C
bdec0c9208af6ee3a9ab1f2c07d3ba19 gcc/testsuite/g++.dg/other/pragma-re-2.C
@@ -10371,6 +10392,7 @@
dccd55557e6e7045693056e69f389dc4 gcc/testsuite/g++.dg/parse/ambig3.C
76ecf42117442856a63d100b212722de gcc/testsuite/g++.dg/parse/ambig4.C
3e11f2f44f4a6d2c5535cc0fc01d94b0 gcc/testsuite/g++.dg/parse/ambig5.C
+36aea4e7035d7a3c8999295f8524c8f9 gcc/testsuite/g++.dg/parse/ambig6.C
bc8c4ed875b2c4b0e6b1ec9bcec25d41 gcc/testsuite/g++.dg/parse/angle-bracket.C
0befa26c74e8cbfa279f5b49a61408eb gcc/testsuite/g++.dg/parse/angle-bracket2.C
4d4f8ace7c1f4d0f32bbd4530d5b07c1 gcc/testsuite/g++.dg/parse/args1.C
@@ -10800,7 +10822,9 @@
32b2fbda29ffd2ac2181c43c971f3a7d gcc/testsuite/g++.dg/pr44328.C
5f87750ba61c9001cac317e0f478021f gcc/testsuite/g++.dg/pr45112.C
7d415c3f086a787fac9c43c2198e69a2 gcc/testsuite/g++.dg/pr47589.C
+91af1bf8e0bef02ef0fdef13fea1c20e gcc/testsuite/g++.dg/pr48660.C
ff03ae43e2f7b271b014ab72b2a538fd gcc/testsuite/g++.dg/pubtypes.C
+2bcb8e987d41c50dbd1de216296fd071 gcc/testsuite/g++.dg/rtti/anon-ns1.C
7345c9463c7d47c7d425463846af6b14 gcc/testsuite/g++.dg/rtti/crash1.C
34c4c8f1721c4f70c2261dcc1b0a7630 gcc/testsuite/g++.dg/rtti/crash2.C
afdb3cc7ece3c7c60179cd6d1819ab81 gcc/testsuite/g++.dg/rtti/crash3.C
@@ -11382,6 +11406,7 @@
00bcc57cb7d33b0250bf5efd8de34dbf gcc/testsuite/g++.dg/template/nontype2.C
523cd29e1a9c6006086eba2e934e53d4 gcc/testsuite/g++.dg/template/nontype21.C
5d60f10438f4dc879514632ec85475d3 gcc/testsuite/g++.dg/template/nontype22.C
+d17e17b15018e6bc4a807c47ac6956b7 gcc/testsuite/g++.dg/template/nontype23.C
d6f9c639ea162b5b3e91a6a5d10175bf gcc/testsuite/g++.dg/template/nontype3.C
f725d274103ab74a7c16aa6087ab401f gcc/testsuite/g++.dg/template/nontype4.C
d37a5a77843c5b66c3d3566383b07dd6 gcc/testsuite/g++.dg/template/nontype5.C
@@ -11878,6 +11903,13 @@
e9209566e49c153d9b35c2088acde779 gcc/testsuite/g++.dg/torture/pr46364.C
5dde3d0578e1439d9d3996d53c5837d5 gcc/testsuite/g++.dg/torture/pr47290.C
2875f29910a1c9fceb2c3abacae94988 gcc/testsuite/g++.dg/torture/pr47541.C
+70a176c24f3b9e0ed32161bafd163296 gcc/testsuite/g++.dg/torture/pr47714.C
+66f4e88fb15a5c2f5a4fc2d591edff41 gcc/testsuite/g++.dg/torture/pr49039.C
+8fb5fa994e892c2497eac146b34e663e gcc/testsuite/g++.dg/torture/pr49115.C
+6aad70b4e5ba908ab559e27d7d2bbb1d gcc/testsuite/g++.dg/torture/pr49615.C
+70ba1d6e65ff77ad5205e068917704ba gcc/testsuite/g++.dg/torture/pr49644.C
+d3048456b731100c930825dba14b7667 gcc/testsuite/g++.dg/torture/pr50189.C
+20d6e47b06d4cb4840b9270432191e39 gcc/testsuite/g++.dg/torture/pr51344.C
9832be91178ec7c78651fc4d49380a93 gcc/testsuite/g++.dg/torture/predcom-1.C
d28910105d9c9253d94d70eacd5e19d4 gcc/testsuite/g++.dg/torture/pushpop_macro.C
a1b47b9c3e69d79d1895ebc4fd11032b gcc/testsuite/g++.dg/torture/stackalign/check.h
@@ -12019,6 +12051,7 @@
007849af5fbebd55266eebd5fd1bb02a gcc/testsuite/g++.dg/tree-ssa/pr42337.C
bf024d05ee739cc11776ea4df13e3e55 gcc/testsuite/g++.dg/tree-ssa/pr44914.C
7b0e4882ed9e6e78fb17c21e24090631 gcc/testsuite/g++.dg/tree-ssa/pr46734.C
+5094da29aa7c6488a7c2dcc2ba809d4b gcc/testsuite/g++.dg/tree-ssa/pr49911.C
2779bf65ef8edfc896b0cc13e0436b6b gcc/testsuite/g++.dg/tree-ssa/pr8781.C
1774a3db4e8c1c639d06cfd8ba95990d gcc/testsuite/g++.dg/tree-ssa/ptrmemfield.C
9d23f883289b6e7849e906dd1ed4d8d8 gcc/testsuite/g++.dg/tree-ssa/restrict1.C
@@ -14151,7 +14184,7 @@
ea73badcef0f5166a559e07a0c263a92 gcc/testsuite/g++.old-deja/g++.ns/using7.C
e592ac6b9789af1e806b4791c984da05 gcc/testsuite/g++.old-deja/g++.ns/using8.C
10a3890377e72341f4119f4affe2c8cb gcc/testsuite/g++.old-deja/g++.ns/using9.C
-f240c597d516ae759a463ca75ed73f42 gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
+1f38a5632decba19834b5631e24b0436 gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
c17ab5a5d39a20786219d5cb72e8a956 gcc/testsuite/g++.old-deja/g++.oliva/ctor1.C
d5a79bc5cd269747572d454134bc7e04 gcc/testsuite/g++.old-deja/g++.oliva/delete1.C
8c0b3f49c2e5d5c224c1e0aae235e1d8 gcc/testsuite/g++.old-deja/g++.oliva/delete2.C
@@ -16324,6 +16357,7 @@
fe23d373fefbb1f73641cf2629aafdf5 gcc/testsuite/gcc.c-torture/compile/limits-enumconst.c
afe4aef5d3378c3de0bf57047eb44e18 gcc/testsuite/gcc.c-torture/compile/limits-exprparen.c
5b7186b86538dc952f4c95318fdce09c gcc/testsuite/gcc.c-torture/compile/limits-externalid.c
+343c8da201d51d668216da8ec65184f2 gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c
36d72264f5e696b511dde1637d841085 gcc/testsuite/gcc.c-torture/compile/limits-fnargs.c
8e49c6924c93756d8f7e4c607a0c519c gcc/testsuite/gcc.c-torture/compile/limits-fndefn.c
e654525b67ca3025d522d3690364a827 gcc/testsuite/gcc.c-torture/compile/limits-idexternal.c
@@ -16575,6 +16609,7 @@
b4651d0c349ecd2bcb188eddbb7b8036 gcc/testsuite/gcc.c-torture/compile/pr38590-2.c
4126906ff73b1c74d327b6fce1abb020 gcc/testsuite/gcc.c-torture/compile/pr38661-1.c
dcf0de9e87fc97741fbf9f1e549b6d40 gcc/testsuite/gcc.c-torture/compile/pr38661.c
+a84ff8beff9d296a82f8e0512f122fc2 gcc/testsuite/gcc.c-torture/compile/pr38752.c
c346ba56b58065cbd9399d8d63cbff4a gcc/testsuite/gcc.c-torture/compile/pr38771.c
ad74256865d47cee818aa37d2a9d3707 gcc/testsuite/gcc.c-torture/compile/pr38789.c
a8f786ea32ae819c80540e1f7900990c gcc/testsuite/gcc.c-torture/compile/pr38807.c
@@ -16686,6 +16721,13 @@
0acbcb472bcaee50f9586c3f5aa65f71 gcc/testsuite/gcc.c-torture/compile/pr46534.c
36d04fc43ead7dde287d23d5918e89c0 gcc/testsuite/gcc.c-torture/compile/pr46547-1.c
314a7c58d9497b0bb93d6865b49ccdbf gcc/testsuite/gcc.c-torture/compile/pr47150.c
+4265b14c49d9c9bd182258ac0f14b53e gcc/testsuite/gcc.c-torture/compile/pr48742.c
+80be411937e648306e295f2247a9ca87 gcc/testsuite/gcc.c-torture/compile/pr49238.c
+7070244f26aad0afcbea923e85fa6d9a gcc/testsuite/gcc.c-torture/compile/pr50565-1.c
+c6a0021c8f7300a681a9fe6ebb5a88ee gcc/testsuite/gcc.c-torture/compile/pr50565-2.c
+16b0c8db61d740e42ea3bee30160d1f0 gcc/testsuite/gcc.c-torture/compile/pr51767.c
+c509345d4477e53337ed96cb0eab445d gcc/testsuite/gcc.c-torture/compile/pr53418-1.c
+4386bbdff41f8c8d4fb66b5655199556 gcc/testsuite/gcc.c-torture/compile/pr53418-2.c
b9e6ce52b90320c1c3803c25113844c5 gcc/testsuite/gcc.c-torture/compile/pta-1.c
ed716c1d1727fc2c748162e0cbc4ee47 gcc/testsuite/gcc.c-torture/compile/ptr-conv-1.c
8d869e3426345f0cf8837c5eaafd43b5 gcc/testsuite/gcc.c-torture/compile/simd-1.c
@@ -17161,6 +17203,8 @@
8c9a29fe3843c2aab2075c3c9006bc7c gcc/testsuite/gcc.c-torture/execute/20091229-1.c
27aeeeb89a91b17af98d81bf871d2aac gcc/testsuite/gcc.c-torture/execute/20100209-1.c
414137574ad2141ad2516adde2b82f7d gcc/testsuite/gcc.c-torture/execute/20100430-1.c
+e7d841d33d9831c1b277bcf34663fa10 gcc/testsuite/gcc.c-torture/execute/20120111-1.c
+a1428f0ef932744d76bf477d42790520 gcc/testsuite/gcc.c-torture/execute/20120427-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
@@ -17351,7 +17395,6 @@
96be1e5fff7d09902767847ca34f967c gcc/testsuite/gcc.c-torture/execute/960312-1.x
db2d64bf1d224055c2bfcd575cd0a85c gcc/testsuite/gcc.c-torture/execute/960317-1.c
4b83a1d4a67ab5df67a907842c96a846 gcc/testsuite/gcc.c-torture/execute/960321-1.c
-814c63106ed73916979575f829419c19 gcc/testsuite/gcc.c-torture/execute/960321-1.x
40f926583731a3bbbb07cba5c584dca5 gcc/testsuite/gcc.c-torture/execute/960326-1.c
9fa59787835958f2b7e6a86f27a0cd62 gcc/testsuite/gcc.c-torture/execute/960327-1.c
87037da82fb6e20eb6543f078e3204f3 gcc/testsuite/gcc.c-torture/execute/960402-1.c
@@ -17660,6 +17703,8 @@
38af67c89878cf408a29338d3b8461aa gcc/testsuite/gcc.c-torture/execute/divconst-2.c
b88415410e81b02068f1474a644bd707 gcc/testsuite/gcc.c-torture/execute/divconst-3.c
0a0fc31962c133c8409a816cab6e4e88 gcc/testsuite/gcc.c-torture/execute/divmod-1.c
+9e5a753f71d6979559e6274f0b3bf1c9 gcc/testsuite/gcc.c-torture/execute/doloop-1.c
+bed9755f43cf6bcfe197ea6254515cc7 gcc/testsuite/gcc.c-torture/execute/doloop-2.c
5e657aceefd7b81d4869a810c510818a gcc/testsuite/gcc.c-torture/execute/eeprof-1.c
978629e412bb8a67a3521434b6937822 gcc/testsuite/gcc.c-torture/execute/eeprof-1.x
b75081070e5d6cda7c7fa71f2652e5c4 gcc/testsuite/gcc.c-torture/execute/enum-1.c
@@ -18016,6 +18061,14 @@
509d36229d4008b8450961f8917cc772 gcc/testsuite/gcc.c-torture/execute/pr45262.c
f8e3e835fd02428b7245a6fe6cda897b gcc/testsuite/gcc.c-torture/execute/pr45695.c
a6c448a641aeef19f85bb710dcd30b1d gcc/testsuite/gcc.c-torture/execute/pr46019.c
+0e48f7bb32703063aa9ae53391d5bfaf gcc/testsuite/gcc.c-torture/execute/pr48809.c
+653452e08f703415c4e4eec62f149f6d gcc/testsuite/gcc.c-torture/execute/pr48973-1.c
+34871c5345a4c7b7638dd4f110bf2ba9 gcc/testsuite/gcc.c-torture/execute/pr48973-2.c
+4439ddb720f80a9d2207500217ea3560 gcc/testsuite/gcc.c-torture/execute/pr49039.c
+96aa139977a97bbd99506386dbf82db5 gcc/testsuite/gcc.c-torture/execute/pr49161.c
+9bc71de8a45aef7f2ae092a242334b07 gcc/testsuite/gcc.c-torture/execute/pr49186.c
+52c033534a63a27e079c2b6ed0c919bd gcc/testsuite/gcc.c-torture/execute/pr49279.c
+ce481e55a55f5dad6cd718b2e2dae542 gcc/testsuite/gcc.c-torture/execute/pr49644.c
ecfc31f12ce09d6ccbcced04ff04deba gcc/testsuite/gcc.c-torture/execute/pr7284-1.c
89f3c7ee990221eeb33cb08a0772e024 gcc/testsuite/gcc.c-torture/execute/pr7284-1.x
f4610e3bba97324f7005c428fe41e597 gcc/testsuite/gcc.c-torture/execute/printf-1.c
@@ -20137,6 +20190,7 @@
4cd45295229b3c44d306b4f6e40abcae gcc/testsuite/gcc.dg/declspec-8.c
2ac94653a18a4163e91da4bbd91adb95 gcc/testsuite/gcc.dg/declspec-9.c
3016ae80da6e5a215f117a92d2bebb52 gcc/testsuite/gcc.dg/delay-slot-1.c
+9dde675b7f82012b3830a262f004cdce gcc/testsuite/gcc.dg/delay-slot-2.c
29bda4ed3cdc847c236fc0ef0888e01d gcc/testsuite/gcc.dg/deprecated-2.c
6a7682aec25c4be0ec245e7870ae8627 gcc/testsuite/gcc.dg/deprecated-3.c
c16572f166422b1e3b52c0e11e374c5a gcc/testsuite/gcc.dg/deprecated-4.c
@@ -20181,6 +20235,7 @@
b59fd600db434af135f39c38e21e2d74 gcc/testsuite/gcc.dg/dfp/pr37435.c
17353eaf91a4f3959fa168324f86f6f5 gcc/testsuite/gcc.dg/dfp/pr41049.c
8f20a249a1cf0ecc405e1799552e1d6f gcc/testsuite/gcc.dg/dfp/pr48204.c
+59389f9a6a0db946009dbbe47a66608f gcc/testsuite/gcc.dg/dfp/pr52140.c
0ce0ac37817c465f0711df50b865b300 gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-1.c
3882046526a916dcd4cb2db9cfaad397 gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-2.c
f81a9ab3a0212214f904c0cc2fe02024 gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-3.c
@@ -20700,6 +20755,7 @@
35cf7eb4f7b153b629899db048a7b747 gcc/testsuite/gcc.dg/gomp/pr39495-2.c
4a61a37a3515bf0dfee678cc9b365685 gcc/testsuite/gcc.dg/gomp/pr44085.c
81cc1ab572093091d240bd4f73616466 gcc/testsuite/gcc.dg/gomp/pr47963.c
+57958d723d900c37a089d21688ee23af gcc/testsuite/gcc.dg/gomp/pr49640.c
32d1b4709fce01c7b0f596da5c040f2a gcc/testsuite/gcc.dg/gomp/preprocess-1.c
536359d59fc418a1570a6d8574a66ca1 gcc/testsuite/gcc.dg/gomp/sections-1.c
c8fdbed05305ecb29a74eae041f265e9 gcc/testsuite/gcc.dg/gomp/sections-2.c
@@ -20963,6 +21019,7 @@
cd4355ff0f5eae01a529012787372b30 gcc/testsuite/gcc.dg/ipa/modif-1.c
8f25b749b3343bbe5e9448d44019f76c gcc/testsuite/gcc.dg/ipa/noclone-1.c
40bd41302666d56c4edf7330db97920e gcc/testsuite/gcc.dg/ipa/pr42706.c
+be4c06a27772bcdc6214c8c04cf6b552 gcc/testsuite/gcc.dg/ipa/pr45644.c
8f5983946d28dca5853e89d0aa48b65d gcc/testsuite/gcc.dg/kpice1.c
0869783fa95b6864d6ee55773e4a5f4b gcc/testsuite/gcc.dg/label-compound-stmt-1.c
81db0a2d9b61fa43c4d2f3499202cde2 gcc/testsuite/gcc.dg/label-decl-1.c
@@ -21231,6 +21288,7 @@
f7b0583ef99de8104eb364054c2ab1ae gcc/testsuite/gcc.dg/noncompile/pr35444-2.c
d618e883477b7e6f5b49c9142c5dfe4c gcc/testsuite/gcc.dg/noncompile/pr35447-1.c
eebc988665ccd52c01692b6d73fdf1a7 gcc/testsuite/gcc.dg/noncompile/pr40033-1.c
+54fad565fe3a138ace6309838e34d79c gcc/testsuite/gcc.dg/noncompile/pr52290.c
7e17434473e72d99de0e53837884085d gcc/testsuite/gcc.dg/noncompile/redecl-1.c
e4d900a56367f6a536225a27d5f4f5a6 gcc/testsuite/gcc.dg/noncompile/scope.c
bacce3ff1a5219b8aef3929e36521ff4 gcc/testsuite/gcc.dg/noncompile/undeclared-1.c
@@ -21956,6 +22014,15 @@
c9199dd4c92f0ffefd4e78b3e949d60c gcc/testsuite/gcc.dg/pr47899.c
43956ff6b01a9363930df5039a766184 gcc/testsuite/gcc.dg/pr48141.c
ace83ed64690f39a9f100edd9f71563b gcc/testsuite/gcc.dg/pr48144.c
+c9cc6bab59a53095524a6f34b6d0ded7 gcc/testsuite/gcc.dg/pr48685.c
+13e79d5919a09656024792bef1dc6107 gcc/testsuite/gcc.dg/pr48774.c
+20dd454b5b110fe20e629d88a6ef7208 gcc/testsuite/gcc.dg/pr48837.c
+fb7ee781bd4ec07177155c0afa87432d gcc/testsuite/gcc.dg/pr49120.c
+8571c0fba63fcb77abc00bec9fbe2b28 gcc/testsuite/gcc.dg/pr49307.c
+cee7e9aebbf42a1e10d45436fcd9ac4a gcc/testsuite/gcc.dg/pr49619.c
+2c6cc5baeea8764085267ec7119fa53f gcc/testsuite/gcc.dg/pr51408.c
+32bce0cc13b0bf4cd021fe4477df43f8 gcc/testsuite/gcc.dg/pr51821.c
+d26f1947f98c021f45c45dc8f313012d gcc/testsuite/gcc.dg/pr52139.c
8b7d73da2d5d78000716492365a85d5a gcc/testsuite/gcc.dg/pr8715.c
3d08410b2dd57259aa63f0e1c64b376e gcc/testsuite/gcc.dg/pr8788-1.c
be04382a35ebb1cfae1b2168f1693a94 gcc/testsuite/gcc.dg/pr8835-1.c
@@ -22429,6 +22496,12 @@
38761bfc7363f7b9a7480233a04082a5 gcc/testsuite/gcc.dg/torture/pr47411.c
6d9340dfd3765ed7eda708e0935c8042 gcc/testsuite/gcc.dg/torture/pr47473.c
0dd48878c14fd87645d9271ddfc856a8 gcc/testsuite/gcc.dg/torture/pr47890.c
+eea7d0d2e38fd7dd37d9c78b63554abe gcc/testsuite/gcc.dg/torture/pr48542.c
+113915e064a98116b61b157713d06615 gcc/testsuite/gcc.dg/torture/pr48822.c
+3f33f6456a27739e6e648a1b71ea26ff gcc/testsuite/gcc.dg/torture/pr49651.c
+c44de2c160544fd1d2b7ee79340b13aa gcc/testsuite/gcc.dg/torture/pr51106-1.c
+8b03d6a5f43a4fa9cc59d927ecb1e515 gcc/testsuite/gcc.dg/torture/pr51106-2.c
+230b2d7823cf7a40b4575ad7d3bd030f gcc/testsuite/gcc.dg/torture/pr52693.c
2787a730c72c7b3720e7425b62cefaf6 gcc/testsuite/gcc.dg/torture/pta-callused-1.c
0f41d09a9647a1b57f3d8d9707002e12 gcc/testsuite/gcc.dg/torture/pta-escape-1.c
78957add3870afa18d8272a9692ba67b gcc/testsuite/gcc.dg/torture/pta-ptrarith-1.c
@@ -22493,6 +22566,7 @@
660a8286755d2bb1023603f991120838 gcc/testsuite/gcc.dg/tree-prof/indir-call-prof.c
e1e165ac5b18578c45e3525ad11828f0 gcc/testsuite/gcc.dg/tree-prof/inliner-1.c
fa7217b4e402db46b1d64ca38eb6f212 gcc/testsuite/gcc.dg/tree-prof/pr34999.c
+8fbea4871801841e81c791d9f937c05f gcc/testsuite/gcc.dg/tree-prof/pr44777.c
cfb95702d3e9ef5784915df06f4c7a2d gcc/testsuite/gcc.dg/tree-prof/pr45354.c
b6ce131781bdbebefa222c85898de505 gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
f6f1fda83bb783c076f7545e876fabae gcc/testsuite/gcc.dg/tree-prof/stringop-2.c
@@ -22976,6 +23050,7 @@
00329c24f9cfd42d92bc9e79660b869a gcc/testsuite/gcc.dg/tree-ssa/pr44423.c
2588c433f7d2bfb56a998522a8bb63e4 gcc/testsuite/gcc.dg/tree-ssa/pr47286.c
69d597d5ca9f7d237b9164ee2811d312 gcc/testsuite/gcc.dg/tree-ssa/pr47392.c
+8d9e4e6d784892d0fb8454ac3e113725 gcc/testsuite/gcc.dg/tree-ssa/pr49039.c
b401abe742b960f089283a6250bb972f gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c
ad87caf2c1ed4d1cf60c4fd0c4427ff9 gcc/testsuite/gcc.dg/tree-ssa/predcom-2.c
ac64c6dd8ae63ff8edd73249fd62a8de gcc/testsuite/gcc.dg/tree-ssa/predcom-3.c
@@ -23611,6 +23686,8 @@
737861a2565f6aea629458250b2abcb2 gcc/testsuite/gcc.dg/vect/pr45752.c
872c31873d60babf67405981200bef9e gcc/testsuite/gcc.dg/vect/pr45902.c
6c7355c39466f9a8931d0f26b08f4e73 gcc/testsuite/gcc.dg/vect/pr46663.c
+2b6488c3e8ead9f955c2385895ebb859 gcc/testsuite/gcc.dg/vect/pr48172.c
+1ac467c956380f84bb25f8eee6d81a92 gcc/testsuite/gcc.dg/vect/pr49038.c
0706a6b1e589668022cd055b960dd18d gcc/testsuite/gcc.dg/vect/section-anchors-pr27770.c
260e2f31b30dda89387f41e7bfe71e1e gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c
9ac2d5d04e7a551a8b2b60af4d90d914 gcc/testsuite/gcc.dg/vect/slp-1.c
@@ -23931,6 +24008,7 @@
ec82e418af0b5f8e6d591e94e4d12d88 gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c
a1ca82201f4a9b5aa462fb581a533471 gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c
529caccb16ecc2dd2ec255493c3dd192 gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
+5ca5d34852ee3ec67d113a8fa7884ba8 gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c
6208c6e1ec29e08fb7af8458e535cbf3 gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c
b94a4fd030ab125eee183867faf7383d gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c
cf1c111a55ee1fc1644557ffe0c1ebfe gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
@@ -24329,6 +24407,7 @@
f1c560d7c19103912409add2d4d87fa6 gcc/testsuite/gcc.target/arm/neon-vld-1.c
7fc2a64aa360db3a1e3bba874d1e75b3 gcc/testsuite/gcc.target/arm/neon-vmla-1.c
6bb57dfaddee2c33ada326c162212f36 gcc/testsuite/gcc.target/arm/neon-vmls-1.c
+efc98aa2644c195a9873f978991a838b gcc/testsuite/gcc.target/arm/neon-vset_lanes8.c
218e2b46558024f95228ac53a3c55b2b gcc/testsuite/gcc.target/arm/neon/neon.exp
bb0b719e1d80caf14139da999027fd41 gcc/testsuite/gcc.target/arm/neon/polytypes.c
14e27db995367b838f5f6593063b22bb gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c
@@ -26210,6 +26289,8 @@
81118900d8e453b4e485d14a26d571ce gcc/testsuite/gcc.target/arm/pr42093.c
229396d73e77a0b92cdac94dac5b2236 gcc/testsuite/gcc.target/arm/pr43698.c
6bf421f50d2e131c53639d3bf5eae6ab gcc/testsuite/gcc.target/arm/pr45447.c
+fb28b1407c737ad8fdbcc48df46565ae gcc/testsuite/gcc.target/arm/pr48252.c
+f0539a732def6859af7cc0e2116b7217 gcc/testsuite/gcc.target/arm/pr51835.c
3143560976572191d8bba6ba78a45aa6 gcc/testsuite/gcc.target/arm/register-variables.c
15bccf64362edfe888645335ca60a21a gcc/testsuite/gcc.target/arm/scd42-1.c
22b6d4635b71bf03bd31344c57b987bd gcc/testsuite/gcc.target/arm/scd42-2.c
@@ -26413,7 +26494,7 @@
40d5d7ea5cca5cc5166f8915c0ef8ede gcc/testsuite/gcc.target/i386/abi-1.c
c936e737748e936089822758068eeb21 gcc/testsuite/gcc.target/i386/abi-2.c
694fb560a7ccd2e52932322b7e1f58be gcc/testsuite/gcc.target/i386/addr-sel-1.c
-e86625ed570d76daddf729da118f02e5 gcc/testsuite/gcc.target/i386/aes-avx-check.h
+f2d78603e52e7e053a779e149383c1de gcc/testsuite/gcc.target/i386/aes-avx-check.h
a7b2ba93a40acf61b74c80dd6835eb3d gcc/testsuite/gcc.target/i386/aes-check.h
002af625049a48934e8f3e1ee9e9d4c6 gcc/testsuite/gcc.target/i386/aesdec.c
54d024c3feafb0e0b97e8329572c38ba gcc/testsuite/gcc.target/i386/aesdeclast.c
@@ -26443,11 +26524,12 @@
a6e02c2d436ea3b312e391166899a7bf gcc/testsuite/gcc.target/i386/avx-1.c
573dabdca33bf405cd8fe83bf0bbec6b gcc/testsuite/gcc.target/i386/avx-2.c
b8752c209e6f3770321077d53e28d157 gcc/testsuite/gcc.target/i386/avx-3.c
-730b31c38fb0277aef4367e25b297c0b gcc/testsuite/gcc.target/i386/avx-check.h
+090dbae8193e4b8d9868052513543b8c gcc/testsuite/gcc.target/i386/avx-check.h
2a65fd05c0003aea46c7faaefb3a9ad1 gcc/testsuite/gcc.target/i386/avx-cmpsd-1.c
ae728a63491324c9279e2facbffccbb7 gcc/testsuite/gcc.target/i386/avx-cmpsd-2.c
584d5233a25d47a9749449fea9de2276 gcc/testsuite/gcc.target/i386/avx-cmpss-1.c
61306240368e0ac6bb0aa06b4051a210 gcc/testsuite/gcc.target/i386/avx-cmpss-2.c
+1e3257b896814bf9deff44f777ecf6f3 gcc/testsuite/gcc.target/i386/avx-os-support.h
7e40e660685d648585e5e273940180d9 gcc/testsuite/gcc.target/i386/avx-set-v16hi-1.c
14c9e834c255c1db07f36e0dbb2c4f0a gcc/testsuite/gcc.target/i386/avx-set-v16hi-2.c
d6da883c82b4c1671f212e3352e8af9d gcc/testsuite/gcc.target/i386/avx-set-v16hi-3.c
@@ -27067,7 +27149,7 @@
79ddfd2e4c8179a891a396e881d43d6a gcc/testsuite/gcc.target/i386/ordcmp-1.c
8d18c90795c1653930445593d44b2171 gcc/testsuite/gcc.target/i386/parity-1.c
750dae867b72e3ec6e017b6d6be8b646 gcc/testsuite/gcc.target/i386/parity-2.c
-3a84d28411594c27c1f4f92532dc9b9f gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
+b6587e8091b873e052b86981b4c6dd26 gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
56f7ac50c182627b5551065184b25a3b gcc/testsuite/gcc.target/i386/pclmul-check.h
15dd7e15fc38c0bad00692ec554b7cd1 gcc/testsuite/gcc.target/i386/pclmulqdq.c
530fbd044eb0ac45c1affea8b93243b8 gcc/testsuite/gcc.target/i386/pentium4-not-mull.c
@@ -27298,7 +27380,13 @@
618c963c482dd0a0d1af07c8ab74635e gcc/testsuite/gcc.target/i386/pr46865-1.c
a9bfea25c29fab0e368fc9c217fc74d2 gcc/testsuite/gcc.target/i386/pr46865-2.c
5282ec7610ad7737e05f65d9ff88751f gcc/testsuite/gcc.target/i386/pr46880.c
+3b16c13dcc55d512b3df8c314112d62c gcc/testsuite/gcc.target/i386/pr47780.c
6b58712d049f5aebed6ffb31fa93e896 gcc/testsuite/gcc.target/i386/pr47809.c
+2a341a4e00b9beab43e6507b79108513 gcc/testsuite/gcc.target/i386/pr48708.c
+d339a2a7b62e00d31dcbafdd06506bcc gcc/testsuite/gcc.target/i386/pr49920.c
+aff7074250516571a07457eace3f2639 gcc/testsuite/gcc.target/i386/pr50788.c
+962516c8f0d06ff5eb1f5111aae24e79 gcc/testsuite/gcc.target/i386/pr51393.c
+e90dc7f0b1e6d26c11b5224430e328db gcc/testsuite/gcc.target/i386/pr52330.c
5e93a2c631ad41e334cfdad124bfff8e gcc/testsuite/gcc.target/i386/pr9771-1.c
869406fd535d480293b9a60d198ffd5d gcc/testsuite/gcc.target/i386/push-1.c
bc19b38ccc6a25ccee9e6fa95e9158a4 gcc/testsuite/gcc.target/i386/quad-sse.c
@@ -27438,7 +27526,7 @@
c61ecb520f8d8d7266675b405d7b2aa7 gcc/testsuite/gcc.target/i386/sse2-divsd-1.c
2826f31ddc998ab7f07b1235d215e39d gcc/testsuite/gcc.target/i386/sse2-init-v16qi-1.c
7ed343a35790aa4739272bbb5559e6fb gcc/testsuite/gcc.target/i386/sse2-init-v2di-1.c
-e8e78193e5e26074646a2d69e47e46ed gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c
+c421878cd9de90743c8860c5acd31257 gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c
f53a36e4b14e3ead4c8fcaec57e63ddb gcc/testsuite/gcc.target/i386/sse2-init-v4si-1.c
8fbafd8cda93cc37dbbd3283557aaadc gcc/testsuite/gcc.target/i386/sse2-init-v8hi-1.c
f4d5400e4ee3ffd7055d5bacd465fbde gcc/testsuite/gcc.target/i386/sse2-lrint-vec.c
@@ -28145,6 +28233,7 @@
4367fa1dd4a1e888d48c2b381dba99ac gcc/testsuite/gcc.target/mips/r10k-cache-barrier-8.c
c1c31afeb7f596f70e634da098978592 gcc/testsuite/gcc.target/mips/r10k-cache-barrier-9.c
d20de17b0c47a156dfbaac13ba623a27 gcc/testsuite/gcc.target/mips/r3900-mult.c
+0fcc78914edd5f972a3751624ddd725b gcc/testsuite/gcc.target/mips/reg-var-1.c
71bcb3ad704aded4d2ed370969ffbf1d gcc/testsuite/gcc.target/mips/rsqrt-1.c
cc6d2ad28860c070af7f840e7bda951d gcc/testsuite/gcc.target/mips/rsqrt-2.c
524daba18bd099b11f72d9d5ddd4f9fc gcc/testsuite/gcc.target/mips/rsqrt-3.c
@@ -28279,6 +28368,7 @@
15b501be4c373b336da28a58e84d0f93 gcc/testsuite/gcc.target/powerpc/altivec-31.c
d2d7d772a3057ce71076714d1a106440 gcc/testsuite/gcc.target/powerpc/altivec-32.c
00de0b23cdaadeeb9edab6685f942655 gcc/testsuite/gcc.target/powerpc/altivec-33.c
+9638e05795e777c7572134ab8a2c2cd2 gcc/testsuite/gcc.target/powerpc/altivec-34.c
a007efc316dcfa1327d38adb2feca1d8 gcc/testsuite/gcc.target/powerpc/altivec-4.c
2586491d3f0993007b6292363a62437c gcc/testsuite/gcc.target/powerpc/altivec-5.c
a52228c1eb53451b531b71aa7727959f gcc/testsuite/gcc.target/powerpc/altivec-6.c
@@ -28315,6 +28405,14 @@
28a093e56a3b3b438802b7510941c3d7 gcc/testsuite/gcc.target/powerpc/bswap64-2.c
3bb3045db789cd4d6908d1844637b555 gcc/testsuite/gcc.target/powerpc/bswap64-3.c
37c12fff6f77333d7cb7d787bbb7f908 gcc/testsuite/gcc.target/powerpc/bswap64-4.c
+0f68ff6e13a86474325e4f50b423e518 gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c
+f4c2d3f214380e99f3e38806b5e44a00 gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c
+bf885c625a0677cc9f49b53426e58ae4 gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c
+6b9890f5078988e6bb94ca9fe0f746cd gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c
+15b4aeb11920083bb090cc10219d3093 gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c
+2780704ace024d48240305abf4e0f469 gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c
+a79748c05e08b50cd05fc85ef070b241 gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c
+b496b6c0f22345ea109540fd44354ea1 gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c
a5f9bde4e3b75b1650c086d628abc346 gcc/testsuite/gcc.target/powerpc/compress-float-ppc-pic.c
200c7976ba75f6c986aedec205aad73b gcc/testsuite/gcc.target/powerpc/compress-float-ppc.c
6419d1aaea22c0476688f484ac4f0f43 gcc/testsuite/gcc.target/powerpc/const-compare.c
@@ -28411,6 +28509,8 @@
9770efc5bea33fe124132a7ebc0a140f gcc/testsuite/gcc.target/powerpc/pr43154.c
0d7a27773205acac6b0458c0c2d6ca30 gcc/testsuite/gcc.target/powerpc/pr47862.c
b39bd7f66428e1d65fb822c595109da1 gcc/testsuite/gcc.target/powerpc/pr48192.c
+b58c990aefcc9e7a51cc889c7dd3e52d gcc/testsuite/gcc.target/powerpc/pr48857.c
+1cfc823003a660fa613b860692646c73 gcc/testsuite/gcc.target/powerpc/pr53199.c
29d6609261355a0b7fa664bc421bb2e7 gcc/testsuite/gcc.target/powerpc/regnames-1.c
884e97f433f667176d11130d3b031c3c gcc/testsuite/gcc.target/powerpc/rotate.c
bf385d7310a8dab90ee44f86832aa03b gcc/testsuite/gcc.target/powerpc/rs6000-fpint-2.c
@@ -28523,6 +28623,7 @@
c0fe12b65277b653de804b8be0683e07 gcc/testsuite/gcc.target/sparc/20020116-2.c
82c2e387bd540b74637065450948138c gcc/testsuite/gcc.target/sparc/20020416-1.c
44373c57181608413fc07f3ec0e2ad6e gcc/testsuite/gcc.target/sparc/align.c
+019da970597edf6187323a8e6d8d3fd7 gcc/testsuite/gcc.target/sparc/cas64.c
61fdcc3e39deca7e4f123378b814dd0f gcc/testsuite/gcc.target/sparc/combined-1.c
be4e8621f0151086de802a20702cd1af gcc/testsuite/gcc.target/sparc/combined-2.c
437746b3eaa2254a72a060b88e66b68b gcc/testsuite/gcc.target/sparc/fand.c
@@ -29022,6 +29123,7 @@
9ce1a722fb3bcb4e61ceaac91348b1f3 gcc/testsuite/gfortran.dg/alloc_comp_init_expr.f03
99e8c8e429a6a81eb118209e2a5ea95c gcc/testsuite/gfortran.dg/alloc_comp_initializer_1.f90
3e06208aa88b798596871aff811fe396 gcc/testsuite/gfortran.dg/alloc_comp_initializer_2.f90
+256a2d9bc97dda2831f9c186b6b01a7a gcc/testsuite/gfortran.dg/alloc_comp_initializer_3.f90
fbf6eb41453bed2d7b01d6d3ecd3b075 gcc/testsuite/gfortran.dg/alloc_comp_misc_1.f90
ab9fdfef16d9f4a8e9153b12a588c914 gcc/testsuite/gfortran.dg/alloc_comp_optional_1.f90
7d16433f6e4391d0441877520a957421 gcc/testsuite/gfortran.dg/alloc_comp_result_1.f90
@@ -29057,6 +29159,7 @@
06dc937b7f96471c2676fbd37045a96e gcc/testsuite/gfortran.dg/allocate_derived_2.f90
6941791b2bcce63c7b4dedc3e2e6dce4 gcc/testsuite/gfortran.dg/allocate_derived_3.f90
6afacc0454383443e609022b1a7fca39 gcc/testsuite/gfortran.dg/allocate_error_1.f90
+f82795c799ca353989b767d7ea2af8bf gcc/testsuite/gfortran.dg/allocate_error_3.f90
aa1b41858d001a0c2262bac14c82ec32 gcc/testsuite/gfortran.dg/allocate_scalar_with_shape.f90
85b517b1e2ad96a7d4e84672378d9fc3 gcc/testsuite/gfortran.dg/allocate_stat.f90
253a002731f9a4dd5588b787f6b8b83c gcc/testsuite/gfortran.dg/allocate_stat_2.f90
@@ -29595,6 +29698,7 @@
3d47bd7e58e484f1e653afd7fa9c29de gcc/testsuite/gfortran.dg/class_12.f03
6da3f94ea675a2504b16245ab1e4e72d gcc/testsuite/gfortran.dg/class_13.f03
07a8a7838b2ed13141a883f843170c4f gcc/testsuite/gfortran.dg/class_2.f03
+d27d449a1a441f5cbfa862d6187fe3cc gcc/testsuite/gfortran.dg/class_23.f03
6d3a24c9ba637cb8d7df2aa79287c9a5 gcc/testsuite/gfortran.dg/class_3.f03
f48ec514d36af5da4cd7d2ecaf2fecdb gcc/testsuite/gfortran.dg/class_4a.f03
1cdeff264ab42a18e9a62a8240bb6081 gcc/testsuite/gfortran.dg/class_4b.f03
@@ -29620,6 +29724,7 @@
e9483e1a9611925f796174b3be2bff6e gcc/testsuite/gfortran.dg/common_10.f90
d519ae8dfb3045e80bc57c7c107eb06c gcc/testsuite/gfortran.dg/common_11.f90
40bdfb525ad929e8c5a80582058f106e gcc/testsuite/gfortran.dg/common_12.f90
+af48ab22b7ab737b6bda79506c549444 gcc/testsuite/gfortran.dg/common_16.f90
1a3f0a95a819503c9a7f4ee394db0fae gcc/testsuite/gfortran.dg/common_2.f90
c2a0876dd85c6ece5d309ef2cf58c533 gcc/testsuite/gfortran.dg/common_3.f90
92c11ac3992f23a38197e7f8043b96a0 gcc/testsuite/gfortran.dg/common_4.f90
@@ -29850,6 +29955,7 @@
178304617b91c2ad6cfbdfe1fbf7ecdf gcc/testsuite/gfortran.dg/dummy_procedure_1.f90
0edb7d4943c28a0b66c9f42eeffddbb6 gcc/testsuite/gfortran.dg/dummy_procedure_2.f90
f383f473d4e4c77eae99eefd8a3c97b2 gcc/testsuite/gfortran.dg/dummy_procedure_3.f90
+62d9ec774253960dbc6d1e91e570480e gcc/testsuite/gfortran.dg/dummy_procedure_7.f90
5e7607096bc0170833ae836938198c1e gcc/testsuite/gfortran.dg/dup_save_1.f90
ed8b3783b559cd46c4ace89e97254082 gcc/testsuite/gfortran.dg/dup_save_2.f90
a6123bf77f221c60e8ae2f81bf6d0479 gcc/testsuite/gfortran.dg/duplicate_labels.f90
@@ -30564,6 +30670,7 @@
2fb633bfac4c93dc2152baf6d8497336 gcc/testsuite/gfortran.dg/initialization_22.f90
b111414aef1b6e98dc0935e7166c0873 gcc/testsuite/gfortran.dg/initialization_23.f90
85ec8f27a2026f8cf0a2c3417cbdb441 gcc/testsuite/gfortran.dg/initialization_27.f90
+658fd1c56fc4835e60064d1eec650767 gcc/testsuite/gfortran.dg/initialization_28.f90
0759f2d3acf484e54f39c4c01e5f2536 gcc/testsuite/gfortran.dg/initialization_3.f90
ec558a82bb4b8209168624a762e13383 gcc/testsuite/gfortran.dg/initialization_4.f90
838d14dbac1d143acaf81ce65b0b760e gcc/testsuite/gfortran.dg/initialization_5.f90
@@ -30670,6 +30777,7 @@
33e8b5657132a366ba2218b6d18c73d0 gcc/testsuite/gfortran.dg/intrinsic_4.f90
1377a45af91092f6ecab285fb04e2a4e gcc/testsuite/gfortran.dg/intrinsic_5.f90
c20fd15a7b2e66c8ae01f70d95fb7779 gcc/testsuite/gfortran.dg/intrinsic_6.f90
+0bcb7123fd1f81435989d3aa7937dffe gcc/testsuite/gfortran.dg/intrinsic_8.f90
a8889ae36a75144adaaf39185b202def gcc/testsuite/gfortran.dg/intrinsic_actual_1.f
7b6777f1bf3c12d38c270da75ab86b64 gcc/testsuite/gfortran.dg/intrinsic_actual_2.f90
a6a226971d4ad4c381d2c29e62c9216c gcc/testsuite/gfortran.dg/intrinsic_actual_3.f90
@@ -30716,6 +30824,7 @@
6e1095726bcbc85e84cf16b7a8c20978 gcc/testsuite/gfortran.dg/invalid_name.f90
7f49661334dff8476c99f8011d7814ff gcc/testsuite/gfortran.dg/invalid_procedure_name.f90
79dc1f9f582855436b600d985cfe0a01 gcc/testsuite/gfortran.dg/io_constraints_1.f90
+e8802e8eb3b2f944cc72a425d0f1fafb gcc/testsuite/gfortran.dg/io_constraints_10.f90
f62044881397dbb08d85b9bffac8dffe gcc/testsuite/gfortran.dg/io_constraints_2.f90
d2ffda7d9bb2cbc494decb14f36a8851 gcc/testsuite/gfortran.dg/io_constraints_3.f90
3214be0ec292a992b7a113f1492101d3 gcc/testsuite/gfortran.dg/io_constraints_4.f90
@@ -30998,6 +31107,8 @@
05590a8130b662e49f917a2730348796 gcc/testsuite/gfortran.dg/namelist_65.f90
5193970fdf07e814abad1e013ea3cdc5 gcc/testsuite/gfortran.dg/namelist_66.f90
d65b9f8a0b3983b834c3856cc2ed5fa7 gcc/testsuite/gfortran.dg/namelist_71.f90
+7a5fb4d5ecef8d741bfddfe3fecceb5c gcc/testsuite/gfortran.dg/namelist_72.f
+57c379378f1c1751d823354af2ad3344 gcc/testsuite/gfortran.dg/namelist_73.f90
138069b06bed4dd2d6e20acb12f17f7c gcc/testsuite/gfortran.dg/namelist_assumed_char.f90
73de646ecd69b0bf965fecc1ccd64052 gcc/testsuite/gfortran.dg/namelist_blockdata.f
069dbff7c2c727c922c2a492f0feb75e gcc/testsuite/gfortran.dg/namelist_char_only.f90
@@ -31077,6 +31188,7 @@
966d5f9d795f94301705f1f2f03d5548 gcc/testsuite/gfortran.dg/operator_4.f90
a07a251e5a01aff661381742d50a45ea gcc/testsuite/gfortran.dg/operator_5.f90
d047f1050199cd3dfe3f61773a022c8a gcc/testsuite/gfortran.dg/operator_6.f90
+30467345bc7a8250b0465bc1227b0727 gcc/testsuite/gfortran.dg/operator_7.f90
82f1685330c044658491e7dd29f6eeda gcc/testsuite/gfortran.dg/optional_assumed_charlen_1.f90
7fedb812261e488372bc4439b553156f gcc/testsuite/gfortran.dg/optional_dim.f90
93c5cc54a63cfe4d2742f118580c6eac gcc/testsuite/gfortran.dg/optional_dim_2.f90
@@ -31129,6 +31241,7 @@
24e0ade37dff0f1eb6006ee3395e17a6 gcc/testsuite/gfortran.dg/pointer_check_4.f90
8cc81d938abf4a3676038edfe1c2872b gcc/testsuite/gfortran.dg/pointer_check_5.f90
aa5150dc343ac97642b1c56535a11b0f gcc/testsuite/gfortran.dg/pointer_check_6.f90
+a2f3430ee5a4452d2e694f71bd0c3191 gcc/testsuite/gfortran.dg/pointer_comp_init_1.f90
f054254e454828510bea70958afa02a8 gcc/testsuite/gfortran.dg/pointer_component_type_1.f90
4a32a5e4f2ce64fdc583aa08feed17fb gcc/testsuite/gfortran.dg/pointer_function_actual_1.f90
53df30aa4d33665f06dffc149edb1acc gcc/testsuite/gfortran.dg/pointer_function_actual_2.f90
@@ -31272,7 +31385,9 @@
d3b293eecaa4492a7c3a436f79a36dbd gcc/testsuite/gfortran.dg/pr44592.f90
d9a349190ca794aeb8312defcd7c755a gcc/testsuite/gfortran.dg/pr44691.f
2193be737981067fd30810b8c622f7bf gcc/testsuite/gfortran.dg/pr46804.f90
+2dbd0baf5cc71bd396aa0b27c82b3aa6 gcc/testsuite/gfortran.dg/pr46985.f90
ea8bdf93460fcbe2ee90d79bb0c6f806 gcc/testsuite/gfortran.dg/pr47878.f90
+2322284d21ad7f5786f625dbe8820cf8 gcc/testsuite/gfortran.dg/pr50875.f90
6ff99f4b0021f30bee039a61db7cba9d gcc/testsuite/gfortran.dg/predcom-1.f
20a411a7e5a57891297c4c6a96d92009 gcc/testsuite/gfortran.dg/predcom-2.f
c1ed4aee35f394f952b49fcdcfc84fba gcc/testsuite/gfortran.dg/present_1.f90
@@ -31316,6 +31431,7 @@
055690da1e6be0ea20e775a394d3bab7 gcc/testsuite/gfortran.dg/proc_decl_21.f90
6fbfe88af58b6adfff6415b4fcd37c0b gcc/testsuite/gfortran.dg/proc_decl_22.f90
6257a72b3655db450851cfd691428c22 gcc/testsuite/gfortran.dg/proc_decl_23.f90
+3e819a7e9cdc31cea7970bf5babf8b1f gcc/testsuite/gfortran.dg/proc_decl_27.f90
16c107e1f480b5af263a3b24682145bf gcc/testsuite/gfortran.dg/proc_decl_3.f90
a8525fbfa5dd7f02a6b578bdaa7287ee gcc/testsuite/gfortran.dg/proc_decl_4.f90
7b1826ae96f8de1df90588d068891d7f gcc/testsuite/gfortran.dg/proc_decl_5.f90
@@ -31943,6 +32059,7 @@
6e3d11061d3fedad371f0d17d6275a36 gcc/testsuite/gfortran.dg/widechar_IO_2.f90
ff4a498bd6f7005f9e8f5dbb271bd6c8 gcc/testsuite/gfortran.dg/widechar_IO_3.f90
500f01eb75dffc344b0331e109cfd3fc gcc/testsuite/gfortran.dg/widechar_IO_4.f90
+c9fe1e98d7b41a8332de060a9a672e8d gcc/testsuite/gfortran.dg/widechar_compare_1.f90
48e5e881f2c9c2ad2d0376c78fe0fb8f gcc/testsuite/gfortran.dg/widechar_intrinsics_1.f90
ec94a6994147abd5af3e977c92a6e821 gcc/testsuite/gfortran.dg/widechar_intrinsics_10.f90
576907551174735f360f9b4c63c442d0 gcc/testsuite/gfortran.dg/widechar_intrinsics_2.f90
@@ -32683,6 +32800,8 @@
bdba7c57f15e0831448b3c2f87d86add gcc/testsuite/gnat.dg/opt13.adb
b83f57e092e66f74585fac434425c72d gcc/testsuite/gnat.dg/opt13_pkg.adb
e1b67c4c3fdbb4f3da3346c7a9643861 gcc/testsuite/gnat.dg/opt13_pkg.ads
+dfac97d9ad64526491f6b4d7d4e2dd7a gcc/testsuite/gnat.dg/opt17.adb
+5bf5f79aefcc12677ac4ae28eb594417 gcc/testsuite/gnat.dg/opt17.ads
c0bc0504f729295b20e4394c0bd98a42 gcc/testsuite/gnat.dg/opt2.adb
98384ef07686507b4ed94c26f6a58813 gcc/testsuite/gnat.dg/opt3.adb
65e20f998d483941d92a34b07b482d10 gcc/testsuite/gnat.dg/opt3_pkg.ads
@@ -32760,6 +32879,8 @@
3afb13f37cfc3455f0f0be64d053892f gcc/testsuite/gnat.dg/renaming2.adb
1a954da0b1e7e11673319b058eb82146 gcc/testsuite/gnat.dg/renaming3.adb
9c415422ce59266c9af89e8d3fd1df74 gcc/testsuite/gnat.dg/renaming4.ads
+036b49eaefe15f165df8d3b3b071960c gcc/testsuite/gnat.dg/renaming5.adb
+a7443b7e83fb0b9f7c853f71fbc6426b gcc/testsuite/gnat.dg/renaming5.ads
9b1270e410165ddf9774a615ec835037 gcc/testsuite/gnat.dg/rep_clause1.adb
ab0796b373d12c713aeb10168d14ed69 gcc/testsuite/gnat.dg/rep_clause2.adb
879097798e84a55d0876c499122cdd18 gcc/testsuite/gnat.dg/rep_clause2.ads
@@ -33049,7 +33170,7 @@
9a908bb507989b82eddfeb9d23c66587 gcc/testsuite/lib/scantree.exp
a6dc33391c4e774519da81fd258805c0 gcc/testsuite/lib/target-libpath.exp
f8e243a5720744310155b102a2ab8494 gcc/testsuite/lib/target-supports-dg.exp
-ed8337a7a6806474afa77afae350e320 gcc/testsuite/lib/target-supports.exp
+67240533f78cf0664fa7fcd89ad954b9 gcc/testsuite/lib/target-supports.exp
3247a569c87014396b4682567b02c72f gcc/testsuite/lib/timeout-dg.exp
3b7f74ee8537decb5895ed7a3c008b6e gcc/testsuite/lib/timeout.exp
9c8e6bf222182744bb61bd5c07ec5496 gcc/testsuite/lib/torture-options.exp
@@ -33489,7 +33610,7 @@
dd88a1b79873f889a6b52130d6d947e4 gcc/tree-browser.def
aa231b9f9b729f93a48eafe85326a217 gcc/tree-call-cdce.c
3d276dda02fe89b79e860cef0dbd6f92 gcc/tree-cfg.c
-20301e569b2aa50541b8774a80f4758d gcc/tree-cfgcleanup.c
+46a02d2a5f80b5dcd21b06a4d16f88e6 gcc/tree-cfgcleanup.c
90e9f8afd62f18100f9cabf7add011f1 gcc/tree-chrec.c
9145d83e9f902c3b83b983416674dc53 gcc/tree-chrec.h
4d3d6a502bd48d37478f2a648458c376 gcc/tree-complex.c
@@ -33502,30 +33623,30 @@
6e4e6f3b140462a3fac6a4022e40aa52 gcc/tree-flow-inline.h
61a9cd4318088ae160672359a0a35324 gcc/tree-flow.h
f95cf1f95e8a4b09670d80458ce3112c gcc/tree-if-conv.c
-b1ec7361372a016c3622ee911e9fc290 gcc/tree-inline.c
+a23aea42f92aedc811c7ac054263839e gcc/tree-inline.c
f4d4a5aab37729576205b1a83fc5090c gcc/tree-inline.h
6fa8971e46f651684bf115b5aeb79d52 gcc/tree-into-ssa.c
dce399f91d50f8de02bdbf3ea285162e gcc/tree-iterator.c
3b86414b4e96e56a57965565a63b61f7 gcc/tree-iterator.h
994223bff8ea393ef67d6dc8a58a496e gcc/tree-loop-distribution.c
3aba057ced8b46f8367297775d0fda7e gcc/tree-loop-linear.c
-099a21551a3cf26985d502aa2b09a2e5 gcc/tree-mudflap.c
+4ac3c2c24c349ca245000d3f902091fa gcc/tree-mudflap.c
e3ec682d6aed08778baff5f999e2b22a gcc/tree-mudflap.h
55c984604f6247fc16c3143187db4a79 gcc/tree-nested.c
534ff7f81f312004cda4318950f53093 gcc/tree-nomudflap.c
ed8f4002dca779fdbef16a5f20d80fb2 gcc/tree-nrv.c
e1e4bd19b97012a42931e64611db005c gcc/tree-object-size.c
26363f19df58dd767253deb07be3e7b7 gcc/tree-optimize.c
-d118f39fe9ca4c1e3f4accbca8b134e4 gcc/tree-outof-ssa.c
+90e491b854dee3a8cea5a911d8c2f39d gcc/tree-outof-ssa.c
8843bf995cd540754d6eb710c163bc8d gcc/tree-parloops.c
d59131fdb73f01109d040e8f08c7eec0 gcc/tree-pass.h
fd1bc991ee533fe67b586e13f2a4af46 gcc/tree-phinodes.c
c26a1330706cb0de5296b4744eecadb5 gcc/tree-predcom.c
5ccaef430556a1a3c6fd84bf35dd7bee gcc/tree-pretty-print.c
0c1166d7d1b92ffbdda3f0e17d955f99 gcc/tree-profile.c
-f17363bc9388d98e457c92e9733a58af gcc/tree-scalar-evolution.c
+fa0e3b9ffdf2bb6a67034c4ee451a0e1 gcc/tree-scalar-evolution.c
fd48a09f0cffdccb7ad79a13e16e0ca3 gcc/tree-scalar-evolution.h
-e90851236521a3f4a051e5b0e18f6c02 gcc/tree-sra.c
+17d2f56425beefcbf6fe30161f34da2b gcc/tree-sra.c
6ee25eef251eb52339addbea739729d3 gcc/tree-ssa-address.c
cc1e65ef2968641057e6e687da98c2ba gcc/tree-ssa-alias.c
0cdeb433cc9b33c10bb77e4475218a23 gcc/tree-ssa-alias.h
@@ -33533,8 +33654,8 @@
ad985fa9db6cc02bfd8c946d857b5877 gcc/tree-ssa-coalesce.c
c2012c2d95ae4bdebf8c6affad27d49e gcc/tree-ssa-copy.c
434e1764bfe27e888d06cd39ae999ca4 gcc/tree-ssa-copyrename.c
-7b32571fb3c415490fbf0dc53ea90002 gcc/tree-ssa-dce.c
-2ac1de6e9bd55f22a570c0bba2444a65 gcc/tree-ssa-dom.c
+cb9e18fdc1fa63c0242459a60321d895 gcc/tree-ssa-dce.c
+1dae49a1fcb679f904aebabcc849e1c2 gcc/tree-ssa-dom.c
0461855405718e1b6b5b418b1b0c25d2 gcc/tree-ssa-dse.c
40c211e43ab241b05b9203933f490a19 gcc/tree-ssa-forwprop.c
9b812714d3af3f16f5d89bc3eecb4f0b gcc/tree-ssa-ifcombine.c
@@ -33558,10 +33679,10 @@
aaa0fc17c998db787f1c47ab4b6a5f29 gcc/tree-ssa-propagate.c
9209162c04f0adde18c7b0ddf79caac9 gcc/tree-ssa-propagate.h
d2413fc64b86db5bae06ff170b5ce7b3 gcc/tree-ssa-reassoc.c
-e089877fdcde5e0358124dcf054ef918 gcc/tree-ssa-sccvn.c
+55993dd82071d512c8514a3abd6b4003 gcc/tree-ssa-sccvn.c
f0a851e42c4ae1451f6aeb3e438475e9 gcc/tree-ssa-sccvn.h
14e4f969754cf52e2530a21ffd280b7c gcc/tree-ssa-sink.c
-56e5e876a318dd27abb3c587b810e70f gcc/tree-ssa-structalias.c
+0cae9f2d31d1cf264298e38c205c4c65 gcc/tree-ssa-structalias.c
5b28233088bfae3ab387efa5f4887b58 gcc/tree-ssa-ter.c
4acc9269b5cd8e527f9e02b57f9fd5ea gcc/tree-ssa-threadedge.c
01e1909ec137d9babd59d14151ce07e4 gcc/tree-ssa-threadupdate.c
@@ -33570,18 +33691,18 @@
9c3a994e924cea26964140823f82b90c gcc/tree-ssanames.c
846885a2753461f07018ceffc2898c79 gcc/tree-stdarg.c
9dc7ea806141e247f0061ebed82e5f57 gcc/tree-stdarg.h
-da9536245e627b2c1ae097581211f61c gcc/tree-switch-conversion.c
-7561aa1b16dfe49420262b142d571747 gcc/tree-tailcall.c
-37d935cd9a900189a35a87e2001596ba gcc/tree-vect-data-refs.c
+e88e82c611514b03eae3fff500d97960 gcc/tree-switch-conversion.c
+d2fe45fce95134dd45ceef8da24bf20f gcc/tree-tailcall.c
+c22ed1b17c063d5fbe974a4abc06fa31 gcc/tree-vect-data-refs.c
a9dda8c7197c27d669ba1b27e26c7bbb gcc/tree-vect-generic.c
-790ea85e32be28ecd5aa844b5e532317 gcc/tree-vect-loop-manip.c
-a79bfbd1d3d72c064b04ec3e62c5c9cc gcc/tree-vect-loop.c
+877174b7e37b20635a04574cb40c6f1c gcc/tree-vect-loop-manip.c
+29ff22cd6cd0c424297fb871af898ad6 gcc/tree-vect-loop.c
3211a7c477df0b3f79207173470c9fa3 gcc/tree-vect-patterns.c
cbaff29c17fbf9a42bb53b8fbcf3ce3a gcc/tree-vect-slp.c
-661bca791ab3fcf74ca4b8e0ad311765 gcc/tree-vect-stmts.c
+182cf42e7dd8281cf3542d50a6b87321 gcc/tree-vect-stmts.c
dd0ef614dcba12b449d444edb414d172 gcc/tree-vectorizer.c
-48bc8190f9ed722e184fc4905286cdfc gcc/tree-vectorizer.h
-1b6bc0aeed8b10f591118a17a48f54c9 gcc/tree-vrp.c
+7943f1845a8365b7303dd781d1621a27 gcc/tree-vectorizer.h
+2837baea378df0327bb3cc6b675d8c16 gcc/tree-vrp.c
421e737a1969fd6c3c8263c3b4fcfcfa gcc/tree.c
ea052f510f606e86f4c7a8160609cefa gcc/tree.def
98f55dfa5e5cdb4a37cb3ebdb73952b6 gcc/tree.h
@@ -33604,8 +33725,8 @@
e7e914187b304d3f16ea2f05db0f3524 gcc/unwind.inc
73954a80deb4217845896cc3536495bb gcc/value-prof.c
417dfb4ea7ea7c94642acadec945bf16 gcc/value-prof.h
-73ed3e0a12173644dff8e137db308ff5 gcc/var-tracking.c
-8789597f6cbc90cab75766c9141afe0e gcc/varasm.c
+3e5ba9369b87bbb8588f191f72e7b121 gcc/var-tracking.c
+8201c8420b973fb9efead22efaf09adc gcc/varasm.c
fd2c47b6bfe81bf2db20b7ec78a8d286 gcc/varpool.c
d48543edf86d41721e1a51d28eef82cf gcc/varray.c
b8f72f875550a06ca82eb7b4929bb278 gcc/varray.h
@@ -33620,13 +33741,13 @@
e33f5fe4050a311c959ce9084a50c1fb gcc/xcoff.h
7c1f43f49e61878a46c8b1642c32cb7c gcc/xcoffout.c
7cf371c2c977863af4254f2cfa6b86b3 gcc/xcoffout.h
-b870066567c11b66630ed0d050ff6ee5 gnattools/ChangeLog
+d5ff25d409be1a91ce55a60121b73c33 gnattools/ChangeLog
0711af5c6b3ab3cbee3c146abc6827ea gnattools/Makefile.in
cf927569f00894bef32dbefb7c6490f7 gnattools/configure
01d58cc3b5626a2637e20c2c5080b221 gnattools/configure.ac
59530bdf33659b29e73d4adb9f9f6552 include/COPYING
d32239bcb673463ab874e80d47fae504 include/COPYING3
-0bfaa322f8d7787f0db90b4af1f7031e include/ChangeLog
+92dbf0c772eb5be49d6fd688bdd3d692 include/ChangeLog
4263432a72ff47ed8bf420208ee7eea5 include/ChangeLog-9103
68da0a9358a4062d67e4968cd1754787 include/ansidecl.h
173fd07e62d2edad074ae156268b950f include/demangle.h
@@ -33654,7 +33775,7 @@
0294cecbb1f66d640ccba3a5d862d05b include/xregex2.h
06cee0773295c3ade78d4605550102dc include/xtensa-config.h
0afce91a3daa1fdc32ee36370c1129dd install-sh
-4f594a3fa4c75db9c6470713e3e7611b intl/ChangeLog
+9a553570a5c46b2106bb0afd98e1a18c intl/ChangeLog
cad1d6fab2274517783de7433c0faa74 intl/Makefile.in
6ec998bb4716c744bf8185e607f69301 intl/README
76ca170a525d5b84d90f0478fe788931 intl/VERSION
@@ -33696,11 +33817,11 @@
b4758a0194e3e41362b939911472ce62 intl/relocatable.c
bedade7bcfc3bc5eb09a2c6844f637f3 intl/relocatable.h
43f287d082528203fc85c1d2d81bf30d intl/textdomain.c
-7197ca8286cb19687d5695a1d1472f6b libada/ChangeLog
+edf90f56412568e38882f93b1af3ad4c libada/ChangeLog
feb5cce2c69c0f39a0d5aa650b74f7e9 libada/Makefile.in
9fb2c0e64238d6d42020a518fe9d1122 libada/configure
b2dd61394fd655e9a99c79c4bb55b0c5 libada/configure.ac
-c86ba9a3e136d6d3b4838ddd4eb45d0f libcpp/ChangeLog
+1774cae154fa9734cd10787bf88643c3 libcpp/ChangeLog
54b81d416c915da8cf1caa6868f6e70e libcpp/Makefile.in
7307c791a8de641ef6dada9a179ece57 libcpp/aclocal.m4
33a8f81cc854bc8b268b8a342e7f242d libcpp/charset.c
@@ -33726,7 +33847,7 @@
2d45a726957f93e9ec053b644480b2e9 libcpp/makeucnid.c
f35ae8ba1fd3553b47bcf87cc1730aeb libcpp/mkdeps.c
27f54e6a64816a2de073e04aeee5952e libcpp/pch.c
-419e443b21d5e7df34f386efef1af2b7 libcpp/po/ChangeLog
+f003ed9c019f3d833137824e6536d59b libcpp/po/ChangeLog
98f02bfc3b5bfd3c4231c5933f295c9e libcpp/po/be.gmo
b821b563cabb6b8d3745e460d2c120aa libcpp/po/be.po
79291f019e3d66faf0b8e8658a0a3628 libcpp/po/ca.gmo
@@ -33767,7 +33888,7 @@
67fcd3d878017060c56219962e5e062b libcpp/traditional.c
11f204ddd01b33474c3de82de9192de4 libcpp/ucnid.h
524392c32703f6022427bf6bbdb833c8 libcpp/ucnid.tab
-714682f68b267af452e3cb6cc37a6257 libdecnumber/ChangeLog
+516e7351af4f6a5dabe1e35602cbdb66 libdecnumber/ChangeLog
636b1792066db9803f46f6b7c5dbad4c libdecnumber/Makefile.in
4620234046381c99c949f75294a4f00a libdecnumber/aclocal.m4
a0ecbc50fa8e505f88a951c3c294ecbc libdecnumber/bid/bid-dpd.h
@@ -33829,12 +33950,12 @@
74286c0df48b52d759e158d0137e326a libdecnumber/dpd/decimal64.c
7da680355032df2d570337d88c0694ad libdecnumber/dpd/decimal64.h
0f6db29710e7075c2fd62bc4478b3b8d libdecnumber/dpd/decimal64Symbols.h
-364f242a53a115b5849fefca1015ad2a libffi/ChangeLog
+527fe4eacbcff4966f4ef17a75e3f3e6 libffi/ChangeLog
fbbc216bc25d759a72ea3e6d734af56b libffi/ChangeLog.libgcj
d946d2b97454ad50a1dbfbf48923c5be libffi/ChangeLog.v1
085f9917800070e791f49bf4733e23fa libffi/LICENSE
-d6432f9c9c529b9b6e5d14cdc9f28a4d libffi/Makefile.am
-9ea3470c75a86cac6b71f9bfdf9bfc1f libffi/Makefile.in
+4f47efb5d6a475131df4e3df57c715e1 libffi/Makefile.am
+da1dade271f05cd95231bc7e04bf4923 libffi/Makefile.in
671fef8eba1585d2c332b3b074da86ec libffi/README
0ec3418e6c2e6b89c24cffd4322b6368 libffi/acinclude.m4
ddc32ea6263dd1557560d7ef6e33c2a3 libffi/aclocal.m4
@@ -33857,7 +33978,7 @@
ba320392aee6dfa2e896e6deb7205815 libffi/man/ffi_prep_cif.3
6c0cd4327058ec8585b09041f1501c2c libffi/src/alpha/ffi.c
d8ebc1ade0e8f0fa0cd86048ad927b6c libffi/src/alpha/ffitarget.h
-1c2284340e3ec316407056831adf7780 libffi/src/alpha/osf.S
+e6689e8efd4ee7453f3cd89ccb56bfbf libffi/src/alpha/osf.S
a0ee6e86ca97fcdd084efc21500ebccd libffi/src/arm/ffi.c
7d755bdfcc6115d45d2547cf7a149df4 libffi/src/arm/ffitarget.h
f784edbc656114aa454a4558a4ba656d libffi/src/arm/sysv.S
@@ -34063,7 +34184,7 @@
92f1548985e720c30797e9e403807475 libffi/testsuite/libffi.special/special.exp
93fc3ea311b79f64004992807ce75d1e libffi/testsuite/libffi.special/unwindtest.cc
185d0795017fbbe253a13db8e34085f9 libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
-2914c3486a98d0eaaba9f66fde280f4a libgcc/ChangeLog
+3d3a4d999b46cf12d09281b8111cf8d6 libgcc/ChangeLog
8d8c6e8296592e51b6955c1d0ee9a249 libgcc/Makefile.in
0305186ab21c59004911a065517e8d38 libgcc/config.host
4d2e967f3d00f422f15be583a4ca4881 libgcc/config/alpha/t-crtfm
@@ -34077,7 +34198,7 @@
aaccc0ae11ab1ccdda5a7115cf7656de libgcc/config/i386/64/eqtf2.c
e3268b023be584e22f5203061dead818 libgcc/config/i386/64/getf2.c
b104dfd3a7f36981d73fad2ad12ec0e4 libgcc/config/i386/64/letf2.c
-2327f57320992b5f6ff26f7e9784e4ec libgcc/config/i386/64/sfp-machine.h
+365c9078960b5f632f8d8c87ba170009 libgcc/config/i386/64/sfp-machine.h
e91203a26b892f29e7d59d2bb004f95b libgcc/config/i386/64/t-softfp-compat
c76bd1715459b531bb3c768ca75bcb0f libgcc/config/i386/libgcc-sol2.ver
0118eeb1bf47244383cf5a4b1e538447 libgcc/config/i386/t-crtfm
@@ -34095,7 +34216,7 @@
721bfee787d81d97c021d28b97dc3415 libgcc/config/ia64/t-ia64
53a2b9e67710b0b8f02e3e3316cd4482 libgcc/config/ia64/t-softfp-compat
45cb97bd14177f2d809994a800675ceb libgcc/config/ia64/tf-signs.c
-78279e4fb48ec54e7f09945389b71563 libgcc/config/libbid/ChangeLog
+4c3c4db52ad9d62ae44d9e56324a2c8c libgcc/config/libbid/ChangeLog
86e150f40ebcb97e568366a5cb38cbbe libgcc/config/libbid/_addsub_dd.c
ded9495633ce7c1e30d900eae5f9a599 libgcc/config/libbid/_addsub_sd.c
d26f72ff45dfd7210a6a33a599274515 libgcc/config/libbid/_addsub_td.c
@@ -34304,7 +34425,7 @@
c326222d0001569c09d987898e433cee libgcc/shared-object.mk
e46c2a78dca584dfd7a4b4673666ab86 libgcc/siditi-object.mk
4f944647ef4ccaaaf9bb117b88d3cfd8 libgcc/static-object.mk
-aacbfe06e3b7231888bac832718a4a56 libgfortran/ChangeLog
+6d4e1c106649a813b8006f2badfcedfe libgfortran/ChangeLog
9aca36338382e5b4b730e7779170b24d libgfortran/ChangeLog-2002
80d3edc880c2da0b7a2beec2e2c4f774 libgfortran/ChangeLog-2003
9f0239429993a5e64ed793eb6c55a5c1 libgfortran/ChangeLog-2004
@@ -34831,7 +34952,7 @@
5e84674e64a53a407a156a22644a59a5 libgfortran/intrinsics/dtime.c
eebddb07212868789c138d2134ec676a libgfortran/intrinsics/env.c
e83cac06a0f846980c05e0d0f4749a10 libgfortran/intrinsics/eoshift0.c
-d0b5be902b9cffb1dd93488034cbf482 libgfortran/intrinsics/eoshift2.c
+6f75f478021aae18f6abd166d208c5f7 libgfortran/intrinsics/eoshift2.c
01e00310f3b7eb71c7ed2a3d85843ad6 libgfortran/intrinsics/erfc_scaled.c
0eb6a6fded6cec2d1dccdc830a62d641 libgfortran/intrinsics/erfc_scaled_inc.c
140bee351cd8496bf6a27b290bf608f2 libgfortran/intrinsics/etime.c
@@ -34869,8 +34990,8 @@
da3f9c7574670d80e518dd9f04b6ad6e libgfortran/intrinsics/sleep.c
f41e32f889e2b803581c41247b8290ec libgfortran/intrinsics/spread_generic.c
7a8e9f71464e91ee2756c0d42b4b1a72 libgfortran/intrinsics/stat.c
-2cfe4feeadd4a78f562a11628b6bb201 libgfortran/intrinsics/string_intrinsics.c
-0e6c2d351bdb5e987b54a99c942f49e0 libgfortran/intrinsics/string_intrinsics_inc.c
+1e5a7811c90e4d49bf9331a67098bc96 libgfortran/intrinsics/string_intrinsics.c
+8442b8c5a948e16b705ebb81046767aa libgfortran/intrinsics/string_intrinsics_inc.c
ea0b860a0befcbe6b45fae116825ed66 libgfortran/intrinsics/symlnk.c
06b6347faafce048843f647422f3144a libgfortran/intrinsics/system.c
490b54c6aa76d93694e2c526cb000121 libgfortran/intrinsics/system_clock.c
@@ -34889,7 +35010,7 @@
cea0537d86fd010eb5b6783707d315ce libgfortran/io/inquire.c
5b5127d072b33077fcbf3c9039165b92 libgfortran/io/intrinsics.c
af39abd99424290dbb22a78bd7cb1790 libgfortran/io/io.h
-42488095d5c4ad34b766675c97e30f8c libgfortran/io/list_read.c
+578f9b1b343a36b273b55c2365894f5d libgfortran/io/list_read.c
e3d0222201de41d61352a9382d8d87a6 libgfortran/io/lock.c
42cb4a7152dc74b718b39d0eb68819d5 libgfortran/io/open.c
3d1cf1c07adc64591314f8e35578d118 libgfortran/io/read.c
@@ -34900,7 +35021,7 @@
4e840d3eb79edee3c0437691e9f17a2b libgfortran/io/unix.h
6f75fe45354f727203dea4bbe39dbeff libgfortran/io/write.c
21545a05c189360ef26d713c2fd08697 libgfortran/io/write_float.def
-6341534f51bbe0427319f6bc7d2d9812 libgfortran/libgfortran.h
+cf42069b6f61674e8c29da92530e2b56 libgfortran/libgfortran.h
25a776e70521ce48fb1bfdd7bfa1a646 libgfortran/libtool-version
0ababe761c83a69a7a94f2d1e8b4b0b8 libgfortran/m4/all.m4
fe85d76e17ee6b4f9e736b8c6d81892f libgfortran/m4/any.m4
@@ -34963,7 +35084,7 @@
7abfa5ebb9488b9ae9fda8bb9aa388e9 libgfortran/runtime/select_inc.c
167f1718b833039909bb6da7cb5b0dae libgfortran/runtime/stop.c
8db71b322504a156888c3017c0d35d78 libgfortran/runtime/string.c
-8b29d5049db74a7659b6d49d8188fd10 libgomp/ChangeLog
+cd09bc9f1b0d62c7ea99a5ee33f3f68b libgomp/ChangeLog
0d55aa862aee66efdc5f8d62c94ff8fb libgomp/ChangeLog.graphite
481a523ccb8f919f7ffdd70bea6634a2 libgomp/Makefile.am
7dab958bb25c0f7dfc07d950f77055b9 libgomp/Makefile.in
@@ -35019,11 +35140,11 @@
eeb570991118428a63a9a984a972a7a7 libgomp/critical.c
dc42a04242fd6a5c3320aabf352baa6c libgomp/env.c
6b5ff93a158188e66a8b93c3eacf05ed libgomp/error.c
-128cf5c7eafe7070c6574b5bbf4c644e libgomp/fortran.c
+d240cf9fa3740b4b92faabb05912a0e6 libgomp/fortran.c
acc3925b8f43fb985313663c30103701 libgomp/iter.c
cf8a700a297d5418b1a70e667db6d660 libgomp/iter_ull.c
58f614974a58d0fe0d3526f923dfe827 libgomp/libgomp.h
-cac6bd80e049732c0aaf8567656ca015 libgomp/libgomp.info
+ad20bf0752a17e1659450c80db23ffda libgomp/libgomp.info
6d09628d0d1ec45377b20f3e3391395b libgomp/libgomp.map
591ff20dfd2b81e3c919249b5db8a967 libgomp/libgomp.spec.in
c6e20f2bcf9c5b57cf8e597f1f11bbf5 libgomp/libgomp.texi
@@ -35337,6 +35458,7 @@
ddd13da7e261528309013b3a49c05bca libgomp/testsuite/libgomp.fortran/pr35130.f90
03980b5e2b32747cdeb7042e049e8ee9 libgomp/testsuite/libgomp.fortran/pr42162.f90
7c5ff4d01b52400e8efb919f24ee719e libgomp/testsuite/libgomp.fortran/pr46753.f90
+59e84625ad4e7a9efce95deaae9a6074 libgomp/testsuite/libgomp.fortran/pr48894.f90
4af6e9394ddc7a6c89dca2968cac162e libgomp/testsuite/libgomp.fortran/recursion1.f90
f7a52f7caa9a62d15b0f1270dc461c08 libgomp/testsuite/libgomp.fortran/reduction1.f90
0afa716c312eb72430b0e7e942b66c76 libgomp/testsuite/libgomp.fortran/reduction2.f90
@@ -35384,7 +35506,7 @@
628d084ffbc4023067f99eeec872e479 libgomp/testsuite/libgomp.graphite/pr41118.c
66ffa69cccfc856bc101f397c0632b69 libgomp/work.c
a916467b91076e631dd8edb7424769c7 libiberty/COPYING.LIB
-1a58928fadc3740d6ed91e74dd4d2caa libiberty/ChangeLog
+1b3b91d7526d023ec16eb84a0d937293 libiberty/ChangeLog
cd10cf6a511b5c0b1620922b5eab15dc libiberty/Makefile.in
c68dbf7834af4281ebd84caa3fd54680 libiberty/README
8797cb1a6faa84f3c7fe3d12164a4b13 libiberty/_doprnt.c
@@ -35446,7 +35568,7 @@
02689a5df91c5a613cbf9e97b63673df libiberty/libiberty.texi
2c56f9552603480f87b7136972894128 libiberty/lrealpath.c
737b3bcae790e44ec331ebaa65a45e91 libiberty/maint-tool
-590e656d30280e67ee3497c4ada9503f libiberty/make-relative-prefix.c
+fd76614c05ff07b2ce82df035dd555b1 libiberty/make-relative-prefix.c
113007ee37f27bf335515cc98ab3cfe0 libiberty/make-temp-file.c
9d038cd01bd65a8af2a78c5cfbaa94b4 libiberty/makefile.vms
9522c18599ff0145df69f57fecac4c12 libiberty/md5.c
@@ -35505,7 +35627,7 @@
8f24f8939540ed6d58ad0dcdf1132562 libiberty/testsuite/Makefile.in
7b99aacd3203958a1a6cf971ecd1c739 libiberty/testsuite/demangle-expected
4c2cbeb4ecfd12c30ea3e7f7547ee70b libiberty/testsuite/test-demangle.c
-1d8e8680715f95e148ef22a416d21e94 libiberty/testsuite/test-expandargv.c
+4a38bf64a8ce8655a2376c57839fdda4 libiberty/testsuite/test-expandargv.c
e9e958dbfc45a08dbbbbe48c83d3987e libiberty/testsuite/test-pexecute.c
6b513119d8c36af928821e8ec24265d7 libiberty/tmpnam.c
fed47804d20d26873d480f5166e7d864 libiberty/unlink-if-ordinary.c
@@ -35524,7 +35646,7 @@
6f774a92661ca4a067f1691a7925524b libiberty/xstrerror.c
c6e7ef53b4ff115a136d917511222656 libiberty/xstrndup.c
94d55d512a9ba36caa9b7df079bae19f libjava/COPYING
-72853c7206bbc2d081e31d1d740bccf0 libjava/ChangeLog
+d64e3541a665ab85879b132b4caf285b libjava/ChangeLog
03e1f38b916604fdf1470238201325f3 libjava/ChangeLog-1998
691acb61fbd6a2235826ff55db5578be libjava/ChangeLog-1999
b58c6701706771a02bf00a77666941ef libjava/ChangeLog-2000
@@ -35561,7 +35683,7 @@
880a25226e4e4e4c241663041d24f8dd libjava/classpath/AUTHORS
efd97e0bb913655e0c8b16fa78bdded4 libjava/classpath/BUGS
af0004801732bc4b20d90f351cf80510 libjava/classpath/COPYING
-f60fe5d16b94acf981c3c32a8f456b0e libjava/classpath/ChangeLog
+d08cad5a4a542f9ec52a8e104302ce24 libjava/classpath/ChangeLog
3418fae58de967afe26d915a4b18d82c libjava/classpath/ChangeLog-2003
a5b72adb94a3c362738b0f52e57a82af libjava/classpath/ChangeLog-2004
61159c6e0802d0d2a92b3051003db5c5 libjava/classpath/ChangeLog-2005
@@ -35598,21 +35720,21 @@
b343eec566430e85d1f95c21438aa4ee libjava/classpath/doc/api/Makefile.am
38e865f0638ed83668121cb921816763 libjava/classpath/doc/api/Makefile.in
2e8d8d0fa0491a7a15a802ad4ed4ea8c libjava/classpath/doc/cp-hacking.texinfo
-68d47752bd958f8db9296c1945f72941 libjava/classpath/doc/cp-tools.info
+af4e7807147b9d125e3017dd9d31dfe9 libjava/classpath/doc/cp-tools.info
2f9243a9d8681fb57cfc14ea3839b38e libjava/classpath/doc/cp-tools.texinfo
3155d9bd9a7bf4aff2ff0dfe4a2cb878 libjava/classpath/doc/cp-vmintegration.texinfo
-df8e433ed859930ed45f44a1501eb5bd libjava/classpath/doc/gappletviewer.1
-ed55360b7faa59ceebf2e1aafda91621 libjava/classpath/doc/gjar.1
-0eaac63c63057ee8af884214d91b9ff2 libjava/classpath/doc/gjarsigner.1
-6a8bb6000e6b2fed8ff279837c41e4c2 libjava/classpath/doc/gjavah.1
-b0a08cecaae2d513e1e4b236470a5a96 libjava/classpath/doc/gjdoc.1
-e06a20313460ba07572d83ff3a848ca8 libjava/classpath/doc/gkeytool.1
-f367e5f41828aaf61dd3f4a02be24707 libjava/classpath/doc/gnative2ascii.1
-b1f204e3949228b7077bb535d0b057d7 libjava/classpath/doc/gorbd.1
-c173739a034fa1839570db989aaf0485 libjava/classpath/doc/grmid.1
-b7cfcbf16897d65df8d3773e9b7bb235 libjava/classpath/doc/grmiregistry.1
-8a085305a7eb80583e85263b33aed7d4 libjava/classpath/doc/gserialver.1
-07ff41f72f000a30ffa3b49b686bf9be libjava/classpath/doc/gtnameserv.1
+94dd2f54a61054dfada7a8f165772a5e libjava/classpath/doc/gappletviewer.1
+c5eff74e126c2a3dfb1d339ec4b5dc61 libjava/classpath/doc/gjar.1
+056e8e3acde3236dcb86ca787ffc3824 libjava/classpath/doc/gjarsigner.1
+faa33a8f3a60d3c770abe2fb69c69ee0 libjava/classpath/doc/gjavah.1
+6caf072aa368ebd877485ecad3793076 libjava/classpath/doc/gjdoc.1
+79f35253855fcd5328f6fbde4e867fd8 libjava/classpath/doc/gkeytool.1
+76033e3adebff9476a00a6a8dafa38ac libjava/classpath/doc/gnative2ascii.1
+7a939a2623458ea18021bcad44b80ed8 libjava/classpath/doc/gorbd.1
+1b7160a3343ccfe11c1e0bc8c869bf0c libjava/classpath/doc/grmid.1
+4938e9ea4f9d83132bb2fad12e05dd9a libjava/classpath/doc/grmiregistry.1
+88bb359a4bc8a1d54a0a8157fd4dd331 libjava/classpath/doc/gserialver.1
+304239342f5f723ba76cba396eeba0bb libjava/classpath/doc/gtnameserv.1
7e4e31659df1c7e815f9151958dceef2 libjava/classpath/doc/texi2pod.pl
55dea7a47b6450cdcb103c76295441bd libjava/classpath/doc/texinfo.tex
b1e0c0c30547d57d7a09b04d47c70b06 libjava/classpath/examples/.cvsignore
@@ -50845,8 +50967,8 @@
851fa7c60828ad1f1741ff4abdd6e4c2 libjava/classpath/vm/reference/sun/misc/Unsafe.java
d8b9d62b3d4b77c2c9db9a8dd775afbf libjava/classpath/vm/reference/sun/reflect/Reflection.java
df8921743087523404a2b30bdb83d3a6 libjava/classpath/vm/reference/sun/reflect/misc/ReflectUtil.java
-7158d40def41802fe7621da581efce14 libjava/configure
-bb1fc32b0ac001e6619c00ebd2300722 libjava/configure.ac
+402141573f297363d0a57b7391e8c8d7 libjava/configure
+8c17aac12e993ab8a02792543aa129f0 libjava/configure.ac
0ad1e654cdb574ba9fdd8e5c715b3691 libjava/configure.host
012f2a1247de717e81d230f40da5bd94 libjava/contrib/aot-compile-rpm.in
3e89d242a7180e4fcb6d15eb171cae47 libjava/contrib/aot-compile.in
@@ -53852,7 +53974,7 @@
f0a427ef86efb7ca6829ca4e000b105c libjava/include/config.h.in
c4f13c76610deabfbf13fce4ed092a52 libjava/include/darwin-signal.h
103d984e127298285d898fdf861bbcc4 libjava/include/default-signal.h
-6a88062a3a159dce1228674df67e6777 libjava/include/dwarf2-signal.h
+f7c421fb8e89d98a266efd6a64ef2ca4 libjava/include/dwarf2-signal.h
1faaf0b92549ee71e16eb962081a1872 libjava/include/execution.h
09a868e3190a355e45b5c4cee892bb03 libjava/include/hppa-signal.h
faa5b6ab80f09f9cbbf9a37c692802ed libjava/include/i386-signal.h
@@ -57804,7 +57926,7 @@
13fc127864a775b5feed8f9c90cef50f libjava/libgcj.ver
184718636f014ef2ca46d62ba8d6c3bf libjava/libgcj_bc.c
e3eda01d9815f8d24aae2dbd89b68b06 libjava/libltdl/COPYING.LIB
-8f67ccd39da3b2acdb4b63de6d767054 libjava/libltdl/ChangeLog
+c2cd8d5e399880da0ec19f3b776f97db libjava/libltdl/ChangeLog
687405b58bc7fffede3a92c2d9d39bcf libjava/libltdl/Makefile.am
ed4be114f856455d55d939cc4e8ffc40 libjava/libltdl/Makefile.in
36da24f9facf00b349ea10dba3789d92 libjava/libltdl/README
@@ -58577,7 +58699,7 @@
8bc9c6be20df8421c1a687421fbfde85 libjava/pkg.m4
bcecf5b2507e5f3693f16c96acd82a17 libjava/posix-threads.cc
988741ff03c71aa76b896742aaffe296 libjava/posix.cc
-1037b26d48b6ead093edb2140c2e6285 libjava/prims.cc
+de6f44effe53248a36da4ddcf8c4d91e libjava/prims.cc
e78ba84d733731034a4ed9d7245ce3b4 libjava/scripts/MakeCharTables.java
0f49478320816def63eecdbdabc50bdc libjava/scripts/classes.pl
6d795c65b67f245c88b61f68c93bf95b libjava/scripts/encodings.pl
@@ -59498,7 +59620,7 @@
434ac04eb066f5075299583492846410 libjava/verify.cc
355440a0c2fb5e16259d7ae381b37ed5 libjava/win32-threads.cc
434d5e5e91727dec004f0d1d1fab47ec libjava/win32.cc
-3028541cfe03d9b333d30746fe7ab190 libmudflap/ChangeLog
+6974d96b668f84263d826c83cc5c14a8 libmudflap/ChangeLog
662781c9b6e72ed44b0aedce9d9524e0 libmudflap/Makefile.am
9fcd497f1a80bf7cd9d72b6731b1dc80 libmudflap/Makefile.in
9883ed42b491d8aea83fdde90561cf2a libmudflap/acinclude.m4
@@ -59576,6 +59698,7 @@
acc384ac57e4917edca343c3abe0feb0 libmudflap/testsuite/libmudflap.c/fail40-frag.c
9e31dcfd9573de93e2b46d9f0e382376 libmudflap/testsuite/libmudflap.c/fail5-frag.c
b86a1b2de633cab886f73596afbb0057 libmudflap/testsuite/libmudflap.c/fail6-frag.c
+73c32317a169f349762c20ff646fe437 libmudflap/testsuite/libmudflap.c/fail68-frag.c
2a52c49e96c0b6cfecc1650a8fd4f934 libmudflap/testsuite/libmudflap.c/fail7-frag.c
d794af109bde1eb861f61cefb018c86f libmudflap/testsuite/libmudflap.c/fail8-frag.c
e92f210a8cbfcec2e2aeef2b18e31c18 libmudflap/testsuite/libmudflap.c/fail9-frag.c
@@ -59641,7 +59764,7 @@
9c6e0ee7556df21372ba89fcb2612d17 libmudflap/testsuite/libmudflap.cth/pass40-frag.c
725a94441658e42a6adf2add0a0a419d libmudflap/testsuite/libmudflap.cth/pass59-frag.c
60168171460c9277504005955b1ea1b8 libmudflap/testsuite/mfconfig.exp.in
-6c246af194628ad51cc292af32f2036f libobjc/ChangeLog
+ab65dbc934b4d70cc47d0a1d2eaa48d9 libobjc/ChangeLog
7bc9afc044e9cc3beacb6b513cd3f6ad libobjc/Makefile.in
c29f84b3cc952e29b58505493f5a83d2 libobjc/NXConstStr.m
989107befe0f3cbd2cdcf09c37efd3f1 libobjc/Object.m
@@ -59699,7 +59822,7 @@
c90ce33066aad1708a9e1982519b72e6 libobjc/thr-vxworks.c
6236bc1c75de340fddb7f419e3b7ec36 libobjc/thr-win32.c
fde3505ce0d880daddfed519e0f248a8 libobjc/thr.c
-ed6fb68306dc4f23f17ad6d62e41a9b8 libssp/ChangeLog
+de57534cd0b8891e4023a293f5669b3f libssp/ChangeLog
946ef3fcb1ebffb4935ce7b99a87b152 libssp/Makefile.am
7ef62b37866c58ea1d187a0a70e19adf libssp/Makefile.in
954d678163d37b6f9bbffcf468f7d4f8 libssp/aclocal.m4
@@ -59728,7 +59851,7 @@
e9ab923d2562bf5f5be6883dfb9f0184 libssp/strncpy-chk.c
5e0d8b8a766c31b12354baec1b7a159c libssp/vsnprintf-chk.c
f56ab1f8922a16f7e9e4f5270ae1e34e libssp/vsprintf-chk.c
-432da8b8b2747671dcd748b9fa504fe3 libstdc++-v3/ChangeLog
+b60839009d29e192152742c5b9784d83 libstdc++-v3/ChangeLog
0cda0576312959181333fb6113d11fca libstdc++-v3/ChangeLog-1998
7ff71dd25a4fdbb908c1bfffea126a10 libstdc++-v3/ChangeLog-1999
3c2968659337a7726b4d66af48d049b6 libstdc++-v3/ChangeLog-2000
@@ -62354,8 +62477,8 @@
fcffe33041ea1784c7a28c8b232c8bf0 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc
1205785e87f887870fe3bb0c65ed6411 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/2.cc
1e294382666c87d6b171d96b3e847bd2 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/3.cc
-1a1ca5b0ae51112f3eb6aa4abc383c33 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc
-d64bb9fe937b68d63db9651eca6cb7b3 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc
+0601c176f898516ab5f80fb33906aaad libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc
+fd2f2c61603a4f87a803dca999896039 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc
85f5b08c997776d266181c40c51f40cd libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/5.cc
93e813ca5cb586a1ca82cfa38ff1f661 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/6.cc
45902cef533c4e56edc2ec7ef9fdc6a3 libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/wrapped_env.cc
@@ -65863,7 +65986,7 @@
2199109f4c8e0e4c43495018dc3f2e0b libtool.m4
247597a3fcc5b5aa8bd923351c59d853 ltgcc.m4
f36c50fb55330f76ac89cd1b615db74a ltmain.sh
-5ca066fde5cf10d1a3b595a8054a44a8 lto-plugin/ChangeLog
+37f3e977ea050ffa56e82a2fd36ff551 lto-plugin/ChangeLog
1e894c23a6c369f91b3a4320cbe89cdd lto-plugin/Makefile.am
00aa9fa873d8f29985456d63483c3192 lto-plugin/Makefile.in
f1c199af664e67ba6a5b18130b145549 lto-plugin/aclocal.m4
@@ -65875,7 +65998,7 @@
bc2f6032c98896249eadb56177c7d357 ltsugar.m4
c30cd33c496505f13d9fbdb6970c7c33 ltversion.m4
293853a13b7e218e3a4342cf85fbbf25 lt~obsolete.m4
-79c81979b25de822c62203ff32e4c42b maintainer-scripts/ChangeLog
+b83f70e2895a7affac2983e5fe3d6923 maintainer-scripts/ChangeLog
9bf52719995189b7572953a25ad202ed maintainer-scripts/README
2b1fc7dbd32e35982100ccf33564e7a6 maintainer-scripts/crontab
625e9f8986cc469e726ccbbe82c509ac maintainer-scripts/gcc_release
@@ -65889,7 +66012,7 @@
a20215c156b06261d944ae7f30a3b75c move-if-change
cf2baa0854f564a7785307e79f155efc symlink-tree
69678e72941d681665c3731bfb3044ab ylwrap
-86cafe9a15ff80890ede923eafb22b97 zlib/ChangeLog
+0ebe85dcd8ca5ee6ddf430ab69ed7c79 zlib/ChangeLog
449ffee0c7cffb24de0bcf2a68a70c2b zlib/ChangeLog.gcj
2f46720fda5ab68a1e495009895d874c zlib/FAQ
8851ace55681b1664d97c045d71e339b zlib/INDEX
diff -rNU3 -x *.info dist/Makefile.def dist.nbsd/Makefile.def
--- dist/Makefile.def Wed Nov 7 13:39:09 2012
+++ dist.nbsd/Makefile.def Wed Nov 7 11:47:43 2012
@@ -164,7 +164,6 @@
missing=maintainer-clean; };
target_modules = { module= winsup; };
target_modules = { module= libgloss; no_check=true; };
-target_modules = { module= libiberty; };
target_modules = { module= gperf; };
target_modules = { module= examples; no_check=true; no_install=true; };
target_modules = { module= libffi; };
@@ -532,7 +531,6 @@
dependencies = { module=configure-target-boehm-gc; on=all-target-libstdc++-v3; };
dependencies = { module=configure-target-fastjar; on=configure-target-zlib; };
dependencies = { module=all-target-fastjar; on=all-target-zlib; };
-dependencies = { module=all-target-fastjar; on=all-target-libiberty; };
dependencies = { module=configure-target-libjava; on=configure-target-zlib; };
dependencies = { module=configure-target-libjava; on=configure-target-boehm-gc; };
dependencies = { module=configure-target-libjava; on=configure-target-qthreads; };
@@ -543,9 +541,7 @@
dependencies = { module=all-target-libjava; on=all-target-qthreads; };
dependencies = { module=all-target-libjava; on=all-target-libffi; };
dependencies = { module=configure-target-libobjc; on=configure-target-boehm-gc; };
-dependencies = { module=all-target-libobjc; on=all-target-libiberty; };
dependencies = { module=all-target-libobjc; on=all-target-boehm-gc; };
-dependencies = { module=all-target-libstdc++-v3; on=all-target-libiberty; };
dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; };
// parallel_list.o and parallel_settings.o depend on omp.h, which is
// generated by the libgomp configure. Unfortunately, due to the use of
@@ -560,10 +556,7 @@
lang_env_dependencies = { module=qthreads; };
dependencies = { module=all-target-libgloss; on=all-target-newlib; };
-dependencies = { module=all-target-winsup; on=all-target-libiberty; };
dependencies = { module=all-target-winsup; on=all-target-libtermcap; };
-dependencies = { module=configure-target-libiberty; on=all-binutils; };
-dependencies = { module=configure-target-libiberty; on=all-ld; };
dependencies = { module=configure-target-newlib; on=all-binutils; };
dependencies = { module=configure-target-newlib; on=all-ld; };
diff -rNU3 -x *.info dist/Makefile.in dist.nbsd/Makefile.in
--- dist/Makefile.in Wed Nov 7 13:39:10 2012
+++ dist.nbsd/Makefile.in Wed Nov 7 11:47:43 2012
@@ -930,7 +930,6 @@
maybe-configure-target-libtermcap \
maybe-configure-target-winsup \
maybe-configure-target-libgloss \
- maybe-configure-target-libiberty \
maybe-configure-target-gperf \
maybe-configure-target-examples \
maybe-configure-target-libffi \
@@ -1112,7 +1111,6 @@
all-target: maybe-all-target-libtermcap
all-target: maybe-all-target-winsup
all-target: maybe-all-target-libgloss
-all-target: maybe-all-target-libiberty
all-target: maybe-all-target-gperf
all-target: maybe-all-target-examples
all-target: maybe-all-target-libffi
@@ -1233,7 +1231,6 @@
info-target: maybe-info-target-libtermcap
info-target: maybe-info-target-winsup
info-target: maybe-info-target-libgloss
-info-target: maybe-info-target-libiberty
info-target: maybe-info-target-gperf
info-target: maybe-info-target-examples
info-target: maybe-info-target-libffi
@@ -1347,7 +1344,6 @@
dvi-target: maybe-dvi-target-libtermcap
dvi-target: maybe-dvi-target-winsup
dvi-target: maybe-dvi-target-libgloss
-dvi-target: maybe-dvi-target-libiberty
dvi-target: maybe-dvi-target-gperf
dvi-target: maybe-dvi-target-examples
dvi-target: maybe-dvi-target-libffi
@@ -1461,7 +1457,6 @@
pdf-target: maybe-pdf-target-libtermcap
pdf-target: maybe-pdf-target-winsup
pdf-target: maybe-pdf-target-libgloss
-pdf-target: maybe-pdf-target-libiberty
pdf-target: maybe-pdf-target-gperf
pdf-target: maybe-pdf-target-examples
pdf-target: maybe-pdf-target-libffi
@@ -1575,7 +1570,6 @@
html-target: maybe-html-target-libtermcap
html-target: maybe-html-target-winsup
html-target: maybe-html-target-libgloss
-html-target: maybe-html-target-libiberty
html-target: maybe-html-target-gperf
html-target: maybe-html-target-examples
html-target: maybe-html-target-libffi
@@ -1689,7 +1683,6 @@
TAGS-target: maybe-TAGS-target-libtermcap
TAGS-target: maybe-TAGS-target-winsup
TAGS-target: maybe-TAGS-target-libgloss
-TAGS-target: maybe-TAGS-target-libiberty
TAGS-target: maybe-TAGS-target-gperf
TAGS-target: maybe-TAGS-target-examples
TAGS-target: maybe-TAGS-target-libffi
@@ -1803,7 +1796,6 @@
install-info-target: maybe-install-info-target-libtermcap
install-info-target: maybe-install-info-target-winsup
install-info-target: maybe-install-info-target-libgloss
-install-info-target: maybe-install-info-target-libiberty
install-info-target: maybe-install-info-target-gperf
install-info-target: maybe-install-info-target-examples
install-info-target: maybe-install-info-target-libffi
@@ -1917,7 +1909,6 @@
install-pdf-target: maybe-install-pdf-target-libtermcap
install-pdf-target: maybe-install-pdf-target-winsup
install-pdf-target: maybe-install-pdf-target-libgloss
-install-pdf-target: maybe-install-pdf-target-libiberty
install-pdf-target: maybe-install-pdf-target-gperf
install-pdf-target: maybe-install-pdf-target-examples
install-pdf-target: maybe-install-pdf-target-libffi
@@ -2031,7 +2022,6 @@
install-html-target: maybe-install-html-target-libtermcap
install-html-target: maybe-install-html-target-winsup
install-html-target: maybe-install-html-target-libgloss
-install-html-target: maybe-install-html-target-libiberty
install-html-target: maybe-install-html-target-gperf
install-html-target: maybe-install-html-target-examples
install-html-target: maybe-install-html-target-libffi
@@ -2145,7 +2135,6 @@
installcheck-target: maybe-installcheck-target-libtermcap
installcheck-target: maybe-installcheck-target-winsup
installcheck-target: maybe-installcheck-target-libgloss
-installcheck-target: maybe-installcheck-target-libiberty
installcheck-target: maybe-installcheck-target-gperf
installcheck-target: maybe-installcheck-target-examples
installcheck-target: maybe-installcheck-target-libffi
@@ -2259,7 +2248,6 @@
mostlyclean-target: maybe-mostlyclean-target-libtermcap
mostlyclean-target: maybe-mostlyclean-target-winsup
mostlyclean-target: maybe-mostlyclean-target-libgloss
-mostlyclean-target: maybe-mostlyclean-target-libiberty
mostlyclean-target: maybe-mostlyclean-target-gperf
mostlyclean-target: maybe-mostlyclean-target-examples
mostlyclean-target: maybe-mostlyclean-target-libffi
@@ -2373,7 +2361,6 @@
clean-target: maybe-clean-target-libtermcap
clean-target: maybe-clean-target-winsup
clean-target: maybe-clean-target-libgloss
-clean-target: maybe-clean-target-libiberty
clean-target: maybe-clean-target-gperf
clean-target: maybe-clean-target-examples
clean-target: maybe-clean-target-libffi
@@ -2487,7 +2474,6 @@
distclean-target: maybe-distclean-target-libtermcap
distclean-target: maybe-distclean-target-winsup
distclean-target: maybe-distclean-target-libgloss
-distclean-target: maybe-distclean-target-libiberty
distclean-target: maybe-distclean-target-gperf
distclean-target: maybe-distclean-target-examples
distclean-target: maybe-distclean-target-libffi
@@ -2601,7 +2587,6 @@
maintainer-clean-target: maybe-maintainer-clean-target-libtermcap
maintainer-clean-target: maybe-maintainer-clean-target-winsup
maintainer-clean-target: maybe-maintainer-clean-target-libgloss
-maintainer-clean-target: maybe-maintainer-clean-target-libiberty
maintainer-clean-target: maybe-maintainer-clean-target-gperf
maintainer-clean-target: maybe-maintainer-clean-target-examples
maintainer-clean-target: maybe-maintainer-clean-target-libffi
@@ -2770,7 +2755,6 @@
maybe-check-target-libtermcap \
maybe-check-target-winsup \
maybe-check-target-libgloss \
- maybe-check-target-libiberty \
maybe-check-target-gperf \
maybe-check-target-examples \
maybe-check-target-libffi \
@@ -2991,7 +2975,6 @@
maybe-install-target-libtermcap \
maybe-install-target-winsup \
maybe-install-target-libgloss \
- maybe-install-target-libiberty \
maybe-install-target-gperf \
maybe-install-target-examples \
maybe-install-target-libffi \
@@ -50216,448 +50199,6 @@
-.PHONY: configure-target-libiberty maybe-configure-target-libiberty
-maybe-configure-target-libiberty:
-@if gcc-bootstrap
-configure-target-libiberty: stage_current
-@endif gcc-bootstrap
-@if target-libiberty
-maybe-configure-target-libiberty: configure-target-libiberty
-configure-target-libiberty:
- @: $(MAKE); $(unstage)
- @r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- echo "Checking multilib configuration for libiberty..."; \
- $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \
- $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libiberty/multilib.tmp 2> /dev/null ; \
- if test -r $(TARGET_SUBDIR)/libiberty/multilib.out; then \
- if cmp -s $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; then \
- rm -f $(TARGET_SUBDIR)/libiberty/multilib.tmp; \
- else \
- rm -f $(TARGET_SUBDIR)/libiberty/Makefile; \
- mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \
- fi; \
- else \
- mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \
- fi; \
- test ! -f $(TARGET_SUBDIR)/libiberty/Makefile || exit 0; \
- $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \
- $(NORMAL_TARGET_EXPORTS) \
- echo Configuring in $(TARGET_SUBDIR)/libiberty; \
- cd "$(TARGET_SUBDIR)/libiberty" || exit 1; \
- case $(srcdir) in \
- /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
- *) topdir=`echo $(TARGET_SUBDIR)/libiberty/ | \
- sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
- esac; \
- srcdiroption="--srcdir=$${topdir}/libiberty"; \
- libsrcdir="$$s/libiberty"; \
- rm -f no-such-file || : ; \
- CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
- $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
- --target=${target_alias} $${srcdiroption} \
- || exit 1
-@endif target-libiberty
-
-
-
-
-
-.PHONY: all-target-libiberty maybe-all-target-libiberty
-maybe-all-target-libiberty:
-@if gcc-bootstrap
-all-target-libiberty: stage_current
-@endif gcc-bootstrap
-@if target-libiberty
-TARGET-target-libiberty=all
-maybe-all-target-libiberty: all-target-libiberty
-all-target-libiberty: configure-target-libiberty
- @: $(MAKE); $(unstage)
- @r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
- $(TARGET-target-libiberty))
-@endif target-libiberty
-
-
-
-
-
-.PHONY: check-target-libiberty maybe-check-target-libiberty
-maybe-check-target-libiberty:
-@if target-libiberty
-maybe-check-target-libiberty: check-target-libiberty
-
-check-target-libiberty:
- @: $(MAKE); $(unstage)
- @r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) check)
-
-@endif target-libiberty
-
-.PHONY: install-target-libiberty maybe-install-target-libiberty
-maybe-install-target-libiberty:
-@if target-libiberty
-maybe-install-target-libiberty: install-target-libiberty
-
-install-target-libiberty: installdirs
- @: $(MAKE); $(unstage)
- @r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(TARGET_FLAGS_TO_PASS) install)
-
-@endif target-libiberty
-
-# Other targets (info, dvi, pdf, etc.)
-
-.PHONY: maybe-info-target-libiberty info-target-libiberty
-maybe-info-target-libiberty:
-@if target-libiberty
-maybe-info-target-libiberty: info-target-libiberty
-
-info-target-libiberty: \
- configure-target-libiberty
- @: $(MAKE); $(unstage)
- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
- r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- echo "Doing info in $(TARGET_SUBDIR)/libiberty" ; \
- for flag in $(EXTRA_TARGET_FLAGS); do \
- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- done; \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- "RANLIB=$${RANLIB}" \
- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- info) \
- || exit 1
-
-@endif target-libiberty
-
-.PHONY: maybe-dvi-target-libiberty dvi-target-libiberty
-maybe-dvi-target-libiberty:
-@if target-libiberty
-maybe-dvi-target-libiberty: dvi-target-libiberty
-
-dvi-target-libiberty: \
- configure-target-libiberty
- @: $(MAKE); $(unstage)
- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
- r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- echo "Doing dvi in $(TARGET_SUBDIR)/libiberty" ; \
- for flag in $(EXTRA_TARGET_FLAGS); do \
- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- done; \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- "RANLIB=$${RANLIB}" \
- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- dvi) \
- || exit 1
-
-@endif target-libiberty
-
-.PHONY: maybe-pdf-target-libiberty pdf-target-libiberty
-maybe-pdf-target-libiberty:
-@if target-libiberty
-maybe-pdf-target-libiberty: pdf-target-libiberty
-
-pdf-target-libiberty: \
- configure-target-libiberty
- @: $(MAKE); $(unstage)
- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
- r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- echo "Doing pdf in $(TARGET_SUBDIR)/libiberty" ; \
- for flag in $(EXTRA_TARGET_FLAGS); do \
- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- done; \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- "RANLIB=$${RANLIB}" \
- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- pdf) \
- || exit 1
-
-@endif target-libiberty
-
-.PHONY: maybe-html-target-libiberty html-target-libiberty
-maybe-html-target-libiberty:
-@if target-libiberty
-maybe-html-target-libiberty: html-target-libiberty
-
-html-target-libiberty: \
- configure-target-libiberty
- @: $(MAKE); $(unstage)
- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
- r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- echo "Doing html in $(TARGET_SUBDIR)/libiberty" ; \
- for flag in $(EXTRA_TARGET_FLAGS); do \
- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- done; \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- "RANLIB=$${RANLIB}" \
- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- html) \
- || exit 1
-
-@endif target-libiberty
-
-.PHONY: maybe-TAGS-target-libiberty TAGS-target-libiberty
-maybe-TAGS-target-libiberty:
-@if target-libiberty
-maybe-TAGS-target-libiberty: TAGS-target-libiberty
-
-TAGS-target-libiberty: \
- configure-target-libiberty
- @: $(MAKE); $(unstage)
- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
- r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- echo "Doing TAGS in $(TARGET_SUBDIR)/libiberty" ; \
- for flag in $(EXTRA_TARGET_FLAGS); do \
- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- done; \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- "RANLIB=$${RANLIB}" \
- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- TAGS) \
- || exit 1
-
-@endif target-libiberty
-
-.PHONY: maybe-install-info-target-libiberty install-info-target-libiberty
-maybe-install-info-target-libiberty:
-@if target-libiberty
-maybe-install-info-target-libiberty: install-info-target-libiberty
-
-install-info-target-libiberty: \
- configure-target-libiberty \
- info-target-libiberty
- @: $(MAKE); $(unstage)
- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
- r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- echo "Doing install-info in $(TARGET_SUBDIR)/libiberty" ; \
- for flag in $(EXTRA_TARGET_FLAGS); do \
- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- done; \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- "RANLIB=$${RANLIB}" \
- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- install-info) \
- || exit 1
-
-@endif target-libiberty
-
-.PHONY: maybe-install-pdf-target-libiberty install-pdf-target-libiberty
-maybe-install-pdf-target-libiberty:
-@if target-libiberty
-maybe-install-pdf-target-libiberty: install-pdf-target-libiberty
-
-install-pdf-target-libiberty: \
- configure-target-libiberty \
- pdf-target-libiberty
- @: $(MAKE); $(unstage)
- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
- r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- echo "Doing install-pdf in $(TARGET_SUBDIR)/libiberty" ; \
- for flag in $(EXTRA_TARGET_FLAGS); do \
- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- done; \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- "RANLIB=$${RANLIB}" \
- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- install-pdf) \
- || exit 1
-
-@endif target-libiberty
-
-.PHONY: maybe-install-html-target-libiberty install-html-target-libiberty
-maybe-install-html-target-libiberty:
-@if target-libiberty
-maybe-install-html-target-libiberty: install-html-target-libiberty
-
-install-html-target-libiberty: \
- configure-target-libiberty \
- html-target-libiberty
- @: $(MAKE); $(unstage)
- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
- r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- echo "Doing install-html in $(TARGET_SUBDIR)/libiberty" ; \
- for flag in $(EXTRA_TARGET_FLAGS); do \
- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- done; \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- "RANLIB=$${RANLIB}" \
- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- install-html) \
- || exit 1
-
-@endif target-libiberty
-
-.PHONY: maybe-installcheck-target-libiberty installcheck-target-libiberty
-maybe-installcheck-target-libiberty:
-@if target-libiberty
-maybe-installcheck-target-libiberty: installcheck-target-libiberty
-
-installcheck-target-libiberty: \
- configure-target-libiberty
- @: $(MAKE); $(unstage)
- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
- r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- echo "Doing installcheck in $(TARGET_SUBDIR)/libiberty" ; \
- for flag in $(EXTRA_TARGET_FLAGS); do \
- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- done; \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- "RANLIB=$${RANLIB}" \
- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- installcheck) \
- || exit 1
-
-@endif target-libiberty
-
-.PHONY: maybe-mostlyclean-target-libiberty mostlyclean-target-libiberty
-maybe-mostlyclean-target-libiberty:
-@if target-libiberty
-maybe-mostlyclean-target-libiberty: mostlyclean-target-libiberty
-
-mostlyclean-target-libiberty:
- @: $(MAKE); $(unstage)
- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
- r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- echo "Doing mostlyclean in $(TARGET_SUBDIR)/libiberty" ; \
- for flag in $(EXTRA_TARGET_FLAGS); do \
- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- done; \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- "RANLIB=$${RANLIB}" \
- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- mostlyclean) \
- || exit 1
-
-@endif target-libiberty
-
-.PHONY: maybe-clean-target-libiberty clean-target-libiberty
-maybe-clean-target-libiberty:
-@if target-libiberty
-maybe-clean-target-libiberty: clean-target-libiberty
-
-clean-target-libiberty:
- @: $(MAKE); $(unstage)
- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
- r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- echo "Doing clean in $(TARGET_SUBDIR)/libiberty" ; \
- for flag in $(EXTRA_TARGET_FLAGS); do \
- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- done; \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- "RANLIB=$${RANLIB}" \
- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- clean) \
- || exit 1
-
-@endif target-libiberty
-
-.PHONY: maybe-distclean-target-libiberty distclean-target-libiberty
-maybe-distclean-target-libiberty:
-@if target-libiberty
-maybe-distclean-target-libiberty: distclean-target-libiberty
-
-distclean-target-libiberty:
- @: $(MAKE); $(unstage)
- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
- r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- echo "Doing distclean in $(TARGET_SUBDIR)/libiberty" ; \
- for flag in $(EXTRA_TARGET_FLAGS); do \
- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- done; \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- "RANLIB=$${RANLIB}" \
- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- distclean) \
- || exit 1
-
-@endif target-libiberty
-
-.PHONY: maybe-maintainer-clean-target-libiberty maintainer-clean-target-libiberty
-maybe-maintainer-clean-target-libiberty:
-@if target-libiberty
-maybe-maintainer-clean-target-libiberty: maintainer-clean-target-libiberty
-
-maintainer-clean-target-libiberty:
- @: $(MAKE); $(unstage)
- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
- r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- $(NORMAL_TARGET_EXPORTS) \
- echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libiberty" ; \
- for flag in $(EXTRA_TARGET_FLAGS); do \
- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- done; \
- (cd $(TARGET_SUBDIR)/libiberty && \
- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- "RANLIB=$${RANLIB}" \
- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- maintainer-clean) \
- || exit 1
-
-@endif target-libiberty
-
-
-
-
-
.PHONY: configure-target-gperf maybe-configure-target-gperf
maybe-configure-target-gperf:
@if gcc-bootstrap
@@ -57654,7 +57195,6 @@
configure-target-libtermcap: stage_last
configure-target-winsup: stage_last
configure-target-libgloss: stage_last
-configure-target-libiberty: stage_last
configure-target-gperf: stage_last
configure-target-examples: stage_last
configure-target-libffi: stage_last
@@ -57683,7 +57223,6 @@
configure-target-libtermcap: maybe-all-gcc
configure-target-winsup: maybe-all-gcc
configure-target-libgloss: maybe-all-gcc
-configure-target-libiberty: maybe-all-gcc
configure-target-gperf: maybe-all-gcc
configure-target-examples: maybe-all-gcc
configure-target-libffi: maybe-all-gcc
@@ -58395,7 +57934,6 @@
configure-target-boehm-gc: maybe-all-target-libstdc++-v3
configure-target-fastjar: maybe-configure-target-zlib
all-target-fastjar: maybe-all-target-zlib
-all-target-fastjar: maybe-all-target-libiberty
configure-target-libjava: maybe-configure-target-zlib
configure-target-libjava: maybe-configure-target-boehm-gc
configure-target-libjava: maybe-configure-target-qthreads
@@ -58406,9 +57944,7 @@
all-target-libjava: maybe-all-target-qthreads
all-target-libjava: maybe-all-target-libffi
configure-target-libobjc: maybe-configure-target-boehm-gc
-all-target-libobjc: maybe-all-target-libiberty
all-target-libobjc: maybe-all-target-boehm-gc
-all-target-libstdc++-v3: maybe-all-target-libiberty
configure-target-libstdc++-v3: maybe-configure-target-libgomp
configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp
@@ -58426,10 +57962,7 @@
all-stageprofile-target-libstdc++-v3: maybe-configure-stageprofile-target-libgomp
all-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp
all-target-libgloss: maybe-all-target-newlib
-all-target-winsup: maybe-all-target-libiberty
all-target-winsup: maybe-all-target-libtermcap
-configure-target-libiberty: maybe-all-binutils
-configure-target-libiberty: maybe-all-ld
configure-target-newlib: maybe-all-binutils
configure-target-newlib: maybe-all-ld
@@ -58464,7 +57997,6 @@
configure-target-libtermcap: maybe-all-target-libgcc
configure-target-winsup: maybe-all-target-libgcc
configure-target-libgloss: maybe-all-target-libgcc
-configure-target-libiberty: maybe-all-target-libgcc
configure-target-gperf: maybe-all-target-libgcc
configure-target-examples: maybe-all-target-libgcc
configure-target-libffi: maybe-all-target-libgcc
@@ -58493,7 +58025,6 @@
configure-target-libtermcap: maybe-all-target-newlib maybe-all-target-libgloss
configure-target-winsup: maybe-all-target-newlib maybe-all-target-libgloss
-
configure-target-gperf: maybe-all-target-newlib maybe-all-target-libgloss
diff -rNU3 -x *.info dist/NEWS dist.nbsd/NEWS
--- dist/NEWS Wed Nov 7 13:39:01 2012
+++ dist.nbsd/NEWS Wed Nov 7 11:47:43 2012
@@ -9,27 +9,30 @@
GCC 4.5 Release Series
- Apr 28, 2011
+ Jul 2, 2012
The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 4.5.3.
+ release of GCC 4.5.4.
This release is a bug-fix release, containing fixes for regressions in
- GCC 4.5.2 relative to previous releases of GCC.
+ GCC 4.5.3 relative to previous releases of GCC.
Release History
+ GCC 4.5.4
+ Jul 2, 2012 ([2]changes)
+
GCC 4.5.3
- Apr 28, 2011 ([2]changes)
+ Apr 28, 2011 ([3]changes)
GCC 4.5.2
- Dec 16, 2010 ([3]changes)
+ Dec 16, 2010 ([4]changes)
GCC 4.5.1
- Jul 31, 2010 ([4]changes)
+ Jul 31, 2010 ([5]changes)
GCC 4.5.0
- April 14, 2010 ([5]changes)
+ April 14, 2010 ([6]changes)
References and Acknowledgements
@@ -37,33 +40,33 @@
supports several other languages aside from C, it now stands for the
GNU Compiler Collection.
- A list of [6]successful builds is updated as new information becomes
+ A list of [7]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 [7]amazing group of volunteers is
+ well as test results to GCC. This [8]amazing group of volunteers is
what makes GCC successful.
- For additional information about GCC please refer to the [8]GCC project
- web site or contact the [9]GCC development mailing list.
+ For additional information about GCC please refer to the [9]GCC project
+ web site or contact the [10]GCC development mailing list.
- To obtain GCC please use [10]our mirror sites or [11]our SVN server.
+ To obtain GCC please use [11]our mirror sites or [12]our SVN server.
For questions related to the use of GCC, please consult these web
- pages and the [12]GCC manuals. If that fails, the
- [13]gcc-help@gcc.gnu.org mailing list might help. Comments on these
+ pages and the [13]GCC manuals. If that fails, the
+ [14]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 [14]gcc@gcc.gnu.org. All of [15]our lists have public
+ list at [15]gcc@gcc.gnu.org. All of [16]our lists have public
archives.
- Copyright (C) [16]Free Software Foundation, Inc. Verbatim copying and
+ Copyright (C) [17]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 [17]maintained by the GCC team. Last modified
- 2011-04-28[18].
+ These pages are [18]maintained by the GCC team. Last modified
+ 2012-07-02[19].
References
@@ -72,19 +75,20 @@
3. http://gcc.gnu.org/gcc-4.5/changes.html
4. http://gcc.gnu.org/gcc-4.5/changes.html
5. http://gcc.gnu.org/gcc-4.5/changes.html
- 6. http://gcc.gnu.org/gcc-4.5/buildstat.html
- 7. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 8. http://gcc.gnu.org/index.html
- 9. mailto:gcc@gcc.gnu.org
- 10. http://gcc.gnu.org/mirrors.html
- 11. http://gcc.gnu.org/svn.html
- 12. http://gcc.gnu.org/onlinedocs/
- 13. mailto:gcc-help@gcc.gnu.org
- 14. mailto:gcc@gcc.gnu.org
- 15. http://gcc.gnu.org/lists.html
- 16. http://www.fsf.org/
- 17. http://gcc.gnu.org/about.html
- 18. http://validator.w3.org/check/referer
+ 6. http://gcc.gnu.org/gcc-4.5/changes.html
+ 7. http://gcc.gnu.org/gcc-4.5/buildstat.html
+ 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+ 9. http://gcc.gnu.org/index.html
+ 10. mailto:gcc@gcc.gnu.org
+ 11. http://gcc.gnu.org/mirrors.html
+ 12. http://gcc.gnu.org/svn.html
+ 13. http://gcc.gnu.org/onlinedocs/
+ 14. mailto:gcc-help@gcc.gnu.org
+ 15. mailto:gcc@gcc.gnu.org
+ 16. http://gcc.gnu.org/lists.html
+ 17. http://www.fsf.org/
+ 18. http://gcc.gnu.org/about.html
+ 19. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-4.5/changes.html
@@ -171,10 +175,10 @@
(e.g. csinf and csinl) are also handled.
* A new link-time optimizer has been added ([8]-flto). When this
option is used, GCC generates a bytecode representation of each
- input file and writes it to special ELF sections in each object
+ input file and writes it to specially-named sections in each object
file. When the object files are linked together, all the function
- bodies are read from these ELF sections and instantiated as if they
- had been part of the same translation unit. This enables
+ bodies are read from these named sections and instantiated as if
+ they had been part of the same translation unit. This enables
interprocedural optimizations to work across different files (and
even different languages), potentially improving the performance of
the generated code. To use the link-timer optimizer, -flto needs to
@@ -490,8 +494,6 @@
ATAN(Y,X) is now an alias for ATAN2(Y,X).
+ The BLOCK construct has been implemented.
- Java (GCJ)
-
New Targets and Target Specific Improvements
AIX
@@ -595,8 +597,6 @@
use_debug_exception_return. See the documentation for more details
about these attributes.
- picochip
-
RS/6000 (POWER/PowerPC)
* GCC now supports the Power ISA 2.06, which includes the VSX
@@ -616,6 +616,11 @@
* GCC can now be configured with options --with-cpu-32,
--with-cpu-64, --with-tune-32 and --with-tune-64 to control the
default optimization separately for 32-bit and 64-bit modes.
+ * Starting with GCC 4.5.4, vectors of type vector long long or vector
+ long are passed and returned in the same method as other vectors
+ with the VSX instruction set. Previously the GCC compiler did not
+ adhere to the ABI for 128-bit vectors with 64-bit integer base
+ types (PR 48857). This is also fixed in the GCC 4.6.1 release.
RX
@@ -638,7 +643,7 @@
* Numerous other minor bugfixes and improvements, and substantial
enhancements to the Fortran language support library.
-Documentation improvements
+ >
Other significant improvements
@@ -699,11 +704,11 @@
GCC 4.5.3
This is the [27]list of problem reports (PRs) from GCC's bug tracking
- system that are known to be fixed in the 4.5.2 release. This list might
+ system that are known to be fixed in the 4.5.3 release. This list might
not be complete (that is, it is possible that some PRs that have been
fixed are not listed here).
- On the PowerPC compiler, the altivec builtin functions vec_ld and
+ On the PowerPC compiler, the Altivec builtin functions vec_ld and
vec_st have been modified to generate the Altivec memory instructions
LVX and STVX, even if the -mvsx option is used. In the initial GCC 4.5
release, these builtin functions were changed to generate VSX memory
@@ -713,20 +718,27 @@
vec_vsx_ld and vec_vsx_st which always generates the VSX memory
instructions.
+GCC 4.5.4
+ This is the [28]list of problem reports (PRs) from GCC's bug tracking
+ system that are known to be fixed in the 4.5.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 [28]GCC manuals. If that fails, the
- [29]gcc-help@gcc.gnu.org mailing list might help. Comments on these
+ 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 [30]gcc@gcc.gnu.org. All of [31]our lists have public
+ list at [31]gcc@gcc.gnu.org. All of [32]our lists have public
archives.
- Copyright (C) [32]Free Software Foundation, Inc. Verbatim copying and
+ 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 [33]maintained by the GCC team. Last modified
- 2011-04-25[34].
+ These pages are [34]maintained by the GCC team. Last modified
+ 2012-07-02[35].
References
@@ -756,49 +768,53 @@
24. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
25. http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
26. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2
- 27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2
- 28. http://gcc.gnu.org/onlinedocs/
- 29. mailto:gcc-help@gcc.gnu.org
- 30. mailto:gcc@gcc.gnu.org
- 31. http://gcc.gnu.org/lists.html
- 32. http://www.fsf.org/
- 33. http://gcc.gnu.org/about.html
- 34. http://validator.w3.org/check/referer
+ 27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3
+ 28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4
+ 29. http://gcc.gnu.org/onlinedocs/
+ 30. mailto:gcc-help@gcc.gnu.org
+ 31. mailto:gcc@gcc.gnu.org
+ 32. http://gcc.gnu.org/lists.html
+ 33. http://www.fsf.org/
+ 34. http://gcc.gnu.org/about.html
+ 35. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-4.4/index.html
GCC 4.4 Release Series
- April 16, 2011
+ March 13, 2012
The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 4.4.6.
+ release of GCC 4.4.7.
This release is a bug-fix release, containing fixes for regressions in
- GCC 4.4.5 relative to previous releases of GCC.
+ GCC 4.4.6 relative to previous releases of GCC.
Release History
+ GCC 4.4.7
+ March 13, 2012 ([2]changes)
+
GCC 4.4.6
- April 16, 2011 ([2]changes)
+ April 16, 2011 ([3]changes)
GCC 4.4.5
- October 1, 2010 ([3]changes)
+ October 1, 2010 ([4]changes)
GCC 4.4.4
- April 29, 2010 ([4]changes)
+ April 29, 2010 ([5]changes)
GCC 4.4.3
- January 21, 2010 ([5]changes)
+ January 21, 2010 ([6]changes)
GCC 4.4.2
- October 15, 2009 ([6]changes)
+ October 15, 2009 ([7]changes)
GCC 4.4.1
- July 22, 2009 ([7]changes)
+ July 22, 2009 ([8]changes)
GCC 4.4.0
- April 21, 2009 ([8]changes)
+ April 21, 2009 ([9]changes)
References and Acknowledgements
@@ -806,33 +822,33 @@
supports several other languages aside from C, it now stands for the
GNU Compiler Collection.
- A list of [9]successful builds is updated as new information becomes
+ 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 [10]amazing group of volunteers is
+ 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 [11]GCC
- project web site or contact the [12]GCC development mailing list.
+ 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 [13]our mirror sites or [14]our SVN server.
+ 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 [15]GCC manuals. If that fails, the
- [16]gcc-help@gcc.gnu.org mailing list might help. Comments on these
+ 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 [17]gcc@gcc.gnu.org. All of [18]our lists have public
+ list at [18]gcc@gcc.gnu.org. All of [19]our lists have public
archives.
- Copyright (C) [19]Free Software Foundation, Inc. Verbatim copying and
+ 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 [20]maintained by the GCC team. Last modified
- 2011-04-25[21].
+ These pages are [21]maintained by the GCC team. Last modified
+ 2012-03-13[22].
References
@@ -844,26 +860,27 @@
6. http://gcc.gnu.org/gcc-4.4/changes.html
7. http://gcc.gnu.org/gcc-4.4/changes.html
8. http://gcc.gnu.org/gcc-4.4/changes.html
- 9. http://gcc.gnu.org/gcc-4.4/buildstat.html
- 10. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 11. http://gcc.gnu.org/index.html
- 12. mailto:gcc@gcc.gnu.org
- 13. http://gcc.gnu.org/mirrors.html
- 14. http://gcc.gnu.org/svn.html
- 15. http://gcc.gnu.org/onlinedocs/
- 16. mailto:gcc-help@gcc.gnu.org
- 17. mailto:gcc@gcc.gnu.org
- 18. http://gcc.gnu.org/lists.html
- 19. http://www.fsf.org/
- 20. http://gcc.gnu.org/about.html
- 21. http://validator.w3.org/check/referer
+ 9. http://gcc.gnu.org/gcc-4.4/changes.html
+ 10. http://gcc.gnu.org/gcc-4.4/buildstat.html
+ 11. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+ 12. http://gcc.gnu.org/index.html
+ 13. mailto:gcc@gcc.gnu.org
+ 14. http://gcc.gnu.org/mirrors.html
+ 15. http://gcc.gnu.org/svn.html
+ 16. http://gcc.gnu.org/onlinedocs/
+ 17. mailto:gcc-help@gcc.gnu.org
+ 18. mailto:gcc@gcc.gnu.org
+ 19. http://gcc.gnu.org/lists.html
+ 20. http://www.fsf.org/
+ 21. http://gcc.gnu.org/about.html
+ 22. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-4.4/changes.html
GCC 4.4 Release Series
Changes, New Features, and Fixes
- The latest release in the 4.4 release series is [1]GCC 4.4.6.
+ The latest release in the 4.4 release series is [1]GCC 4.4.7.
Caveats
@@ -1442,24 +1459,31 @@
not be complete (that is, it is possible that some PRs that have been
fixed are not listed here).
+GCC 4.4.7
+ This is the [19]list of problem reports (PRs) from GCC's bug tracking
+ system that are known to be fixed in the 4.4.7 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 [19]GCC manuals. If that fails, the
- [20]gcc-help@gcc.gnu.org mailing list might help. Comments on these
+ pages and the [20]GCC manuals. If that fails, the
+ [21]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 [21]gcc@gcc.gnu.org. All of [22]our lists have public
+ list at [22]gcc@gcc.gnu.org. All of [23]our lists have public
archives.
- Copyright (C) [23]Free Software Foundation, Inc. Verbatim copying and
+ Copyright (C) [24]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 [24]maintained by the GCC team. Last modified
- 2011-04-25[25].
+ These pages are [25]maintained by the GCC team. Last modified
+ 2012-03-13[26].
References
- 1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.6
+ 1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.7
2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
3. http://gcc.gnu.org/gcc-4.4/porting_to.html
4. http://gcc.gnu.org/wiki/Graphite
@@ -1477,45 +1501,49 @@
16. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.4
17. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.5
18. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.6
- 19. http://gcc.gnu.org/onlinedocs/
- 20. mailto:gcc-help@gcc.gnu.org
- 21. mailto:gcc@gcc.gnu.org
- 22. http://gcc.gnu.org/lists.html
- 23. http://www.fsf.org/
- 24. http://gcc.gnu.org/about.html
- 25. http://validator.w3.org/check/referer
+ 19. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.7
+ 20. http://gcc.gnu.org/onlinedocs/
+ 21. mailto:gcc-help@gcc.gnu.org
+ 22. mailto:gcc@gcc.gnu.org
+ 23. http://gcc.gnu.org/lists.html
+ 24. http://www.fsf.org/
+ 25. http://gcc.gnu.org/about.html
+ 26. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-4.3/index.html
GCC 4.3 Release Series
- May 22, 2010
+ Jun 27, 2011
The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 4.3.5.
+ release of GCC 4.3.6.
This release is a bug-fix release, containing fixes for regressions in
- GCC 4.3.4 relative to previous releases of GCC.
+ GCC 4.3.5 relative to previous releases of GCC.
Release History
+ GCC 4.3.6
+ Jun 27, 2011 ([2]changes)
+
GCC 4.3.5
- May 22, 2010 ([2]changes)
+ May 22, 2010 ([3]changes)
GCC 4.3.4
- August 4, 2009 ([3]changes)
+ August 4, 2009 ([4]changes)
GCC 4.3.3
- January 24, 2009 ([4]changes)
+ January 24, 2009 ([5]changes)
GCC 4.3.2
- August 27, 2008 ([5]changes)
+ August 27, 2008 ([6]changes)
GCC 4.3.1
- June 6, 2008 ([6]changes)
+ June 6, 2008 ([7]changes)
GCC 4.3.0
- March 5, 2008 ([7]changes)
+ March 5, 2008 ([8]changes)
References and Acknowledgements
@@ -1523,33 +1551,33 @@
supports several other languages aside from C, it now stands for the
GNU Compiler Collection.
- A list of [8]successful builds is updated as new information becomes
+ A list of [9]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 [9]amazing group of volunteers is
+ well as test results to GCC. This [10]amazing group of volunteers is
what makes GCC successful.
- For additional information about GCC please refer to the [10]GCC
- project web site or contact the [11]GCC development mailing list.
+ For additional information about GCC please refer to the [11]GCC
+ project web site or contact the [12]GCC development mailing list.
- To obtain GCC please use [12]our mirror sites or [13]our SVN server.
+ To obtain GCC please use [13]our mirror sites or [14]our SVN server.
For questions related to the use of GCC, please consult these web
- pages and the [14]GCC manuals. If that fails, the
- [15]gcc-help@gcc.gnu.org mailing list might help. Comments on these
+ pages and the [15]GCC manuals. If that fails, the
+ [16]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 [16]gcc@gcc.gnu.org. All of [17]our lists have public
+ list at [17]gcc@gcc.gnu.org. All of [18]our lists have public
archives.
- Copyright (C) [18]Free Software Foundation, Inc. Verbatim copying and
+ Copyright (C) [19]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 [19]maintained by the GCC team. Last modified
- 2011-04-25[20].
+ These pages are [20]maintained by the GCC team. Last modified
+ 2011-06-27[21].
References
@@ -1560,19 +1588,20 @@
5. http://gcc.gnu.org/gcc-4.3/changes.html
6. http://gcc.gnu.org/gcc-4.3/changes.html
7. http://gcc.gnu.org/gcc-4.3/changes.html
- 8. http://gcc.gnu.org/gcc-4.3/buildstat.html
- 9. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 10. http://gcc.gnu.org/index.html
- 11. mailto:gcc@gcc.gnu.org
- 12. http://gcc.gnu.org/mirrors.html
- 13. http://gcc.gnu.org/svn.html
- 14. http://gcc.gnu.org/onlinedocs/
- 15. mailto:gcc-help@gcc.gnu.org
- 16. mailto:gcc@gcc.gnu.org
- 17. http://gcc.gnu.org/lists.html
- 18. http://www.fsf.org/
- 19. http://gcc.gnu.org/about.html
- 20. http://validator.w3.org/check/referer
+ 8. http://gcc.gnu.org/gcc-4.3/changes.html
+ 9. http://gcc.gnu.org/gcc-4.3/buildstat.html
+ 10. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+ 11. http://gcc.gnu.org/index.html
+ 12. mailto:gcc@gcc.gnu.org
+ 13. http://gcc.gnu.org/mirrors.html
+ 14. http://gcc.gnu.org/svn.html
+ 15. http://gcc.gnu.org/onlinedocs/
+ 16. mailto:gcc-help@gcc.gnu.org
+ 17. mailto:gcc@gcc.gnu.org
+ 18. http://gcc.gnu.org/lists.html
+ 19. http://www.fsf.org/
+ 20. http://gcc.gnu.org/about.html
+ 21. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-4.3/changes.html
@@ -2229,6 +2258,11 @@
sign-bit and infinity checks of binary and decimal floating
point numbers.
+ SPARC
+
+ * Support for the Sun UltraSPARC T2 (Niagara 2) processor has been
+ added.
+
Xtensa
* Stack unwinding for exception handling now uses by default a
@@ -2329,20 +2363,27 @@
not be complete (that is, it is possible that some PRs that have been
fixed are not listed here).
+GCC 4.3.6
+ This is the [30]list of problem reports (PRs) from GCC's bug tracking
+ system that are known to be fixed in the 4.3.6 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 [30]GCC manuals. If that fails, the
- [31]gcc-help@gcc.gnu.org mailing list might help. Comments on these
+ pages and the [31]GCC manuals. If that fails, the
+ [32]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 [32]gcc@gcc.gnu.org. All of [33]our lists have public
+ list at [33]gcc@gcc.gnu.org. All of [34]our lists have public
archives.
- Copyright (C) [34]Free Software Foundation, Inc. Verbatim copying and
+ Copyright (C) [35]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 [35]maintained by the GCC team. Last modified
- 2011-04-25[36].
+ These pages are [36]maintained by the GCC team. Last modified
+ 2011-09-12[37].
References
@@ -2375,13 +2416,14 @@
27. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3
28. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4
29. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5
- 30. http://gcc.gnu.org/onlinedocs/
- 31. mailto:gcc-help@gcc.gnu.org
- 32. mailto:gcc@gcc.gnu.org
- 33. http://gcc.gnu.org/lists.html
- 34. http://www.fsf.org/
- 35. http://gcc.gnu.org/about.html
- 36. http://validator.w3.org/check/referer
+ 30. http://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6
+ 31. http://gcc.gnu.org/onlinedocs/
+ 32. mailto:gcc-help@gcc.gnu.org
+ 33. mailto:gcc@gcc.gnu.org
+ 34. http://gcc.gnu.org/lists.html
+ 35. http://www.fsf.org/
+ 36. http://gcc.gnu.org/about.html
+ 37. http://validator.w3.org/check/referer
======================================================================
http://gcc.gnu.org/gcc-4.2/index.html
@@ -4017,7 +4059,7 @@
provided this notice is preserved.
These pages are [21]maintained by the GCC team. Last modified
- 2011-04-25[22].
+ 2012-02-20[22].
References
@@ -4028,7 +4070,7 @@
5. http://gcc.gnu.org/news/sms.html
6. http://www.akkadia.org/drepper/dsohowto.pdf
7. http://gcc.gnu.org/gcc-4.0/changes.html#visibility
- 8. http://www.codesourcery.com/public/cxx-abi/
+ 8. http://sourcery.mentor.com/public/cxx-abi/
9. http://gcc.gnu.org/fortran/
10. http://gcc.gnu.org/install/
11. http://gcc.gnu.org/wiki/Visibility
@@ -4826,8 +4868,8 @@
M32R
* Support for the M32R/2 processor has been added by Renesas.
- * Support for an M32R Linux target and PIC code generation has been
- added by Renesas.
+ * Support for an M32R GNU/Linux target and PIC code generation has
+ been added by Renesas.
M68000
@@ -5905,7 +5947,7 @@
provided this notice is preserved.
These pages are [417]maintained by the GCC team. Last modified
- 2011-04-25[418].
+ 2012-04-24[418].
References
@@ -5916,8 +5958,8 @@
5. http://gcc.gnu.org/gcc-3.4/mips-abi.html
6. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
7. http://www.boost.org/
- 8. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11953
- 9. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8361
+ 8. http://gcc.gnu.org/PR11953
+ 9. http://gcc.gnu.org/PR8361
10. http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other%20Builtins
11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209
12. http://gcc.gnu.org/bugs/#cxx_rvalbind
@@ -6574,7 +6616,7 @@
+ The 32-bit port now supports weak symbols under HP-UX 11.
+ The handling of initializers and finalizers has been improved
under HP-UX 11. The 64-bit port no longer uses collect2.
- + Dwarf2 EH support has been added to the 32-bit linux port.
+ + Dwarf2 EH support has been added to the 32-bit GNU/Linux port.
+ ABI fixes to correct the passing of small structures by value.
* The SPARC, HP-PA, SH4, and x86/pentium ports have been converted to
use the DFA processor pipeline description.
@@ -7170,7 +7212,7 @@
with negative argument
* [268]11098 g++ doesn't emit complete debugging information for
local variables in destructors
- * [269]11137 Linux shared library constructors not called unless
+ * [269]11137 GNU/Linux shared library constructors not called unless
there's one global object
* [270]11154 spurious ambiguity report for template class
specialization
@@ -7777,7 +7819,7 @@
provided this notice is preserved.
These pages are [558]maintained by the GCC team. Last modified
- 2011-04-25[559].
+ 2011-10-24[559].
References
@@ -8929,8 +8971,8 @@
* [208]6984: wrong code generated with -O2, -O3, -Os for do-while
loop on PowerPC
* [209]7114: PowerPC: ICE building strcoll.op from glibc-2.2.5
- * [210]7130: miscompiled code for GCC-3.1 in powerpc linux with
- -funroll-all-loops
+ * [210]7130: miscompiled code for GCC-3.1 on
+ powerpc-unknown-linux-gnu with -funroll-all-loops
* [211]7133: PowerPC ICE: unrecognizable insn
* [212]7380: ICE in extract_insn, at recog.c:2148
* [213]8252: ICE on Altivec code with optimization turned on
@@ -9032,7 +9074,7 @@
provided this notice is preserved.
These pages are [251]maintained by the GCC team. Last modified
- 2011-04-25[252].
+ 2011-10-24[252].
References
@@ -10646,7 +10688,7 @@
+ Fix problems with ctors/dtors in SCO shared libraries.
+ Abort instead of generating incorrect code for PPro/PII
floating point conditional moves.
- + Avoid multiply defined symbols on Linux/GNU systems using
+ + Avoid multiply defined symbols on GNU/Linux systems using
libc-5.4.xx.
+ Fix abort in alpha compiler.
* Fortran-specific fixes
@@ -10689,7 +10731,7 @@
provided this notice is preserved.
These pages are [16]maintained by the GCC team. Last modified
- 2011-04-25[17].
+ 2011-10-24[17].
References
@@ -10926,7 +10968,7 @@
contain C++ code (upgrade to 1.0.1 and use that).
* Various bugfixes in the x86, hppa, mips, and rs6000/ppc backends.
The x86 changes fix code generation errors exposed when building
- glibc2 and the Linux dynamic linker (ld.so).
+ glibc2 and the usual GNU/Linux dynamic linker (ld.so).
The hppa change fixes a compiler abort when configured for use with
RTEMS.
The MIPS changes fix problems with the definition of LONG_MAX on
@@ -10953,7 +10995,7 @@
* g++/libstdc++ improvements and fixes
+ libstdc++ in the EGCS release has been updated and should be
link compatible with libstdc++-2.8.
- + Various fixes in libio/libstdc++ to work better on Linux
+ + Various fixes in libio/libstdc++ to work better on GNU/Linux
systems.
+ Fix problems with duplicate symbols on systems that do not
support weak symbols.
@@ -10976,9 +11018,9 @@
+ x86 ports define i386 again to keep imake happy.
+ Fix exception handling support on NetBSD ports.
+ Several changes to collect2 to fix many problems with AIX.
- + Define __ELF__ for rs6000/linux.
- + Fix -mcall-linux problem on rs6000/linux.
- + Fix stdarg/vararg problem for rs6000/linux.
+ + Define __ELF__ for GNU/Linux on rs6000.
+ + Fix -mcall-linux problem on GNU/Linux on rs6000.
+ + Fix stdarg/vararg problem for GNU/Linux on rs6000.
+ Allow autoconf to select a proper install problem on AIX 3.1.
+ m68k port support includes -mcpu32 option as well as cpu32
multilibs.
@@ -11042,7 +11084,7 @@
provided this notice is preserved.
These pages are [11]maintained by the GCC team. Last modified
- 2011-04-25[12].
+ 2011-10-24[12].
References
@@ -11069,7 +11111,7 @@
* Vast improvements in the C++ compiler; so many they have [2]page of
their own!
* Integrated C++ runtime libraries, including support for most major
- linux systems!
+ GNU/Linux systems!
* New instruction scheduler from IBM Haifa which includes support for
function wide instruction scheduling as well as superscalar
scheduling.
@@ -11087,7 +11129,7 @@
Openserver 5 family (5.0.{0,2,4} and Internet FastStart 1.0 and
1.1), Support for RTEMS on several embedded targets, Support for
arm-linux, Mitsubishi M32R, Hitachi H8/S, Matsushita MN102 and
- MN103, NEC V850, Sparclet, Solaris & Linux on PowerPCs, etc.
+ MN103, NEC V850, Sparclet, Solaris & GNU/Linux on PowerPCs, etc.
* Integrated testsuites for gcc, g++, g77, libstdc++ and libio.
* RS6000/PowerPC ports generate code which can run on all
RS6000/PowerPC variants by default.
@@ -11095,7 +11137,7 @@
control over how the x86 port generates code.
* Includes the template repository patch (aka repo patch); note the
new template code makes repo obsolete for ELF systems using gnu-ld
- such as Linux.
+ such as GNU/Linux.
* Plus the usual assortment of bugfixes and improvements.
@@ -11110,7 +11152,7 @@
provided this notice is preserved.
These pages are [8]maintained by the GCC team. Last modified
- 2011-04-25[9].
+ 2011-10-24[9].
References
diff -rNU3 -x *.info dist/config/ChangeLog dist.nbsd/config/ChangeLog
--- dist/config/ChangeLog Wed Nov 7 13:39:33 2012
+++ dist.nbsd/config/ChangeLog Wed Nov 7 11:47:42 2012
@@ -1,3 +1,17 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
+2011-12-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * acx.m4 (Test for GNAT): Update comment and add quotes in final test.
+
+2011-06-19 Jack Howarth <howarth@bromo.med.uc.edu>
+
+ PR target/49461
+ * mh-x86-darwin: Add file and pass -no_pie on BOOT_LDFLAGS for
+ darwin11.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/config/acx.m4 dist.nbsd/config/acx.m4
--- dist/config/acx.m4 Wed Nov 7 13:39:33 2012
+++ dist.nbsd/config/acx.m4 Wed Nov 7 11:47:42 2012
@@ -356,9 +356,9 @@
ac_c_preproc_warn_flag=yes])# AC_PROG_CPP_WERROR
# Test for GNAT.
-# We require the gnatbind program, and a compiler driver that
-# understands Ada. We use the user's CC setting, already found,
-# and possibly add $1 to the command-line parameters.
+# We require the gnatbind & gnatmake programs, as well as a compiler driver
+# that understands Ada. We use the user's CC setting, already found, and
+# possibly add $1 to the command-line parameters.
#
# Sets the shell variable have_gnat to yes or no as appropriate, and
# substitutes GNATBIND and GNATMAKE.
@@ -387,7 +387,7 @@
fi
rm -f conftest.*])
-if test x$GNATBIND != xno && test x$GNATMAKE != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
+if test "x$GNATBIND" != xno && test "x$GNATMAKE" != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
have_gnat=yes
else
have_gnat=no
diff -rNU3 -x *.info dist/config/mh-x86-darwin dist.nbsd/config/mh-x86-darwin
--- dist/config/mh-x86-darwin Thu Jan 1 00:00:00 1970
+++ dist.nbsd/config/mh-x86-darwin Wed Nov 7 11:47:42 2012
@@ -0,0 +1,2 @@
+# Ensure we don't try and use -pie, as it is incompatible with pch.
+BOOT_LDFLAGS += `case ${host} in *-*-darwin[1][1-9]*) echo -Wl,-no_pie ;; esac;`
diff -rNU3 -x *.info dist/config.guess dist.nbsd/config.guess
--- dist/config.guess Wed Nov 7 13:39:09 2012
+++ dist.nbsd/config.guess Wed Nov 7 11:47:43 2012
@@ -968,6 +968,9 @@
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
+ tile*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
vax:Linux:*:*)
echo ${UNAME_MACHINE}-dec-linux-gnu
exit ;;
diff -rNU3 -x *.info dist/config.sub dist.nbsd/config.sub
--- dist/config.sub Wed Nov 7 13:39:32 2012
+++ dist.nbsd/config.sub Wed Nov 7 11:47:43 2012
@@ -125,7 +125,8 @@
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | \
+ netbsd*-gnu* | netbsd*-eabi* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
diff -rNU3 -x *.info dist/configure dist.nbsd/configure
--- dist/configure Wed Nov 7 13:39:01 2012
+++ dist.nbsd/configure Wed Nov 7 11:47:49 2012
@@ -2912,9 +2912,8 @@
# these libraries are built for the target environment, and are built after
# the host libraries and the host tools (which may be a cross compiler)
-#
+# Note that libiberty is not a target library.
target_libraries="target-libgcc \
- target-libiberty \
target-libgloss \
target-newlib \
target-libgomp \
@@ -3269,14 +3268,14 @@
;;
*-*-kaos*)
# Remove unsupported stuff on all kaOS configurations.
- skipdirs="target-libiberty ${libgcj} target-libstdc++-v3 target-librx"
+ skipdirs="${libgcj} target-libstdc++-v3 target-librx"
skipdirs="$skipdirs target-libobjc target-examples target-groff target-gperf"
skipdirs="$skipdirs zlib fastjar target-libjava target-boehm-gc target-zlib"
noconfigdirs="$noconfigdirs target-libgloss"
;;
*-*-netbsd*)
# Skip some stuff on all NetBSD configurations.
- noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss"
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss"
# Skip some stuff that's unsupported on some NetBSD configurations.
case "${target}" in
@@ -3288,20 +3287,20 @@
esac
;;
*-*-netware*)
- noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap"
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap"
;;
*-*-rtems*)
noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
;;
# The tpf target doesn't support gdb yet.
*-*-tpf*)
- noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj} target-libmudflap gdb tcl tk libgui itcl"
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap gdb tcl tk libgui itcl"
;;
*-*-uclinux*)
noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}"
;;
*-*-vxworks*)
- noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty target-libstdc++-v3 ${libgcj}"
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libstdc++-v3 ${libgcj}"
;;
alpha*-dec-osf*)
# ld works, but does not support shared libraries.
@@ -3329,7 +3328,7 @@
sh*-*-pe|mips*-*-pe|*arm-wince-pe)
noconfigdirs="$noconfigdirs ${libgcj}"
noconfigdirs="$noconfigdirs target-examples"
- noconfigdirs="$noconfigdirs target-libiberty texinfo send-pr"
+ noconfigdirs="$noconfigdirs texinfo send-pr"
noconfigdirs="$noconfigdirs tcl tk itcl libgui sim"
noconfigdirs="$noconfigdirs expect dejagnu"
# the C++ libraries don't build on top of CE's C libraries
@@ -3363,7 +3362,7 @@
libgloss_dir=arm
;;
arm*-*-symbianelf*)
- noconfigdirs="$noconfigdirs ${libgcj} target-libiberty"
+ noconfigdirs="$noconfigdirs ${libgcj}"
libgloss_dir=arm
;;
arm-*-pe*)
@@ -3382,7 +3381,7 @@
noconfigdirs="$noconfigdirs ld target-libgloss ${libgcj}"
;;
avr-*-*)
- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj} target-libssp"
+ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj} target-libssp"
;;
bfin-*-*)
unsupported_languages="$unsupported_languages java"
@@ -3561,7 +3560,7 @@
noconfigdirs="$noconfigdirs ${libgcj}"
;;
m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)
- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}"
+ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}"
libgloss_dir=m68hc11
;;
m68k-*-elf*)
@@ -3632,7 +3631,6 @@
noconfigdirs="$noconfigdirs gprof ${libgcj}"
;;
mips*-sde-elf*)
- skipdirs="$skipdirs target-libiberty"
noconfigdirs="$noconfigdirs ${libgcj}"
if test x$with_newlib = xyes; then
noconfigdirs="$noconfigdirs gprof"
@@ -3728,7 +3726,7 @@
noconfigdirs="$noconfigdirs ${libgcj}"
;;
ip2k-*-*)
- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}"
+ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}"
;;
*-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
@@ -3917,6 +3915,9 @@
tentative_cc="/usr/cygnus/progressive/bin/gcc"
host_makefile_frag="config/mh-lynxrs6k"
;;
+ i[3456789]86-*-darwin* | x86_64-*-darwin*)
+ host_makefile_frag="config/mh-x86-darwin"
+ ;;
powerpc-*-darwin*)
host_makefile_frag="config/mh-ppc-darwin"
;;
@@ -5243,7 +5244,7 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_cc_gcc_supports_ada" >&5
$as_echo "$acx_cv_cc_gcc_supports_ada" >&6; }
-if test x$GNATBIND != xno && test x$GNATMAKE != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
+if test "x$GNATBIND" != xno && test "x$GNATMAKE" != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
have_gnat=yes
else
have_gnat=no
@@ -6991,27 +6992,6 @@
fi
fi
done
-
-# Sometimes the tools are distributed with libiberty but with no other
-# libraries. In that case, we don't want to build target-libiberty.
-# Don't let libgcc imply libiberty either.
-if test -n "${target_configdirs}" ; then
- libgcc=
- others=
- for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
- if test "$i" = "libgcc"; then
- libgcc=target-libgcc
- elif test "$i" != "libiberty" ; then
- if test -r $srcdir/$i/configure ; then
- others=yes;
- break;
- fi
- fi
- done
- if test -z "${others}" ; then
- target_configdirs=$libgcc
- fi
-fi
# Quietly strip out all directories which aren't configurable in this tree.
# This relies on all configurable subdirectories being autoconfiscated, which
diff -rNU3 -x *.info dist/configure.ac dist.nbsd/configure.ac
--- dist/configure.ac Wed Nov 7 13:39:02 2012
+++ dist.nbsd/configure.ac Wed Nov 7 11:47:23 2012
@@ -185,9 +185,8 @@
# these libraries are built for the target environment, and are built after
# the host libraries and the host tools (which may be a cross compiler)
-#
+# Note that libiberty is not a target library.
target_libraries="target-libgcc \
- target-libiberty \
target-libgloss \
target-newlib \
target-libgomp \
@@ -506,14 +505,14 @@
;;
*-*-kaos*)
# Remove unsupported stuff on all kaOS configurations.
- skipdirs="target-libiberty ${libgcj} target-libstdc++-v3 target-librx"
+ skipdirs="${libgcj} target-libstdc++-v3 target-librx"
skipdirs="$skipdirs target-libobjc target-examples target-groff target-gperf"
skipdirs="$skipdirs zlib fastjar target-libjava target-boehm-gc target-zlib"
noconfigdirs="$noconfigdirs target-libgloss"
;;
*-*-netbsd*)
# Skip some stuff on all NetBSD configurations.
- noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss"
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss"
# Skip some stuff that's unsupported on some NetBSD configurations.
case "${target}" in
@@ -525,20 +524,20 @@
esac
;;
*-*-netware*)
- noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap"
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap"
;;
*-*-rtems*)
noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
;;
# The tpf target doesn't support gdb yet.
*-*-tpf*)
- noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj} target-libmudflap gdb tcl tk libgui itcl"
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap gdb tcl tk libgui itcl"
;;
*-*-uclinux*)
noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}"
;;
*-*-vxworks*)
- noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty target-libstdc++-v3 ${libgcj}"
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libstdc++-v3 ${libgcj}"
;;
alpha*-dec-osf*)
# ld works, but does not support shared libraries.
@@ -566,7 +565,7 @@
sh*-*-pe|mips*-*-pe|*arm-wince-pe)
noconfigdirs="$noconfigdirs ${libgcj}"
noconfigdirs="$noconfigdirs target-examples"
- noconfigdirs="$noconfigdirs target-libiberty texinfo send-pr"
+ noconfigdirs="$noconfigdirs texinfo send-pr"
noconfigdirs="$noconfigdirs tcl tk itcl libgui sim"
noconfigdirs="$noconfigdirs expect dejagnu"
# the C++ libraries don't build on top of CE's C libraries
@@ -600,7 +599,7 @@
libgloss_dir=arm
;;
arm*-*-symbianelf*)
- noconfigdirs="$noconfigdirs ${libgcj} target-libiberty"
+ noconfigdirs="$noconfigdirs ${libgcj}"
libgloss_dir=arm
;;
arm-*-pe*)
@@ -619,7 +618,7 @@
noconfigdirs="$noconfigdirs ld target-libgloss ${libgcj}"
;;
avr-*-*)
- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj} target-libssp"
+ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj} target-libssp"
;;
bfin-*-*)
unsupported_languages="$unsupported_languages java"
@@ -798,7 +797,7 @@
noconfigdirs="$noconfigdirs ${libgcj}"
;;
m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)
- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}"
+ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}"
libgloss_dir=m68hc11
;;
m68k-*-elf*)
@@ -869,7 +868,6 @@
noconfigdirs="$noconfigdirs gprof ${libgcj}"
;;
mips*-sde-elf*)
- skipdirs="$skipdirs target-libiberty"
noconfigdirs="$noconfigdirs ${libgcj}"
if test x$with_newlib = xyes; then
noconfigdirs="$noconfigdirs gprof"
@@ -965,7 +963,7 @@
noconfigdirs="$noconfigdirs ${libgcj}"
;;
ip2k-*-*)
- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}"
+ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}"
;;
*-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
@@ -1135,6 +1133,9 @@
tentative_cc="/usr/cygnus/progressive/bin/gcc"
host_makefile_frag="config/mh-lynxrs6k"
;;
+ i[[3456789]]86-*-darwin* | x86_64-*-darwin*)
+ host_makefile_frag="config/mh-x86-darwin"
+ ;;
powerpc-*-darwin*)
host_makefile_frag="config/mh-ppc-darwin"
;;
@@ -2104,27 +2105,6 @@
fi
fi
done
-
-# Sometimes the tools are distributed with libiberty but with no other
-# libraries. In that case, we don't want to build target-libiberty.
-# Don't let libgcc imply libiberty either.
-if test -n "${target_configdirs}" ; then
- libgcc=
- others=
- for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
- if test "$i" = "libgcc"; then
- libgcc=target-libgcc
- elif test "$i" != "libiberty" ; then
- if test -r $srcdir/$i/configure ; then
- others=yes;
- break;
- fi
- fi
- done
- if test -z "${others}" ; then
- target_configdirs=$libgcc
- fi
-fi
# Quietly strip out all directories which aren't configurable in this tree.
# This relies on all configurable subdirectories being autoconfiscated, which
diff -rNU3 -x *.info dist/contrib/ChangeLog dist.nbsd/contrib/ChangeLog
--- dist/contrib/ChangeLog Wed Nov 7 13:39:01 2012
+++ dist.nbsd/contrib/ChangeLog Wed Nov 7 11:47:49 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/contrib/reghunt/ChangeLog dist.nbsd/contrib/reghunt/ChangeLog
--- dist/contrib/reghunt/ChangeLog Wed Nov 7 13:39:01 2012
+++ dist.nbsd/contrib/reghunt/ChangeLog Wed Nov 7 11:47:49 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/contrib/regression/ChangeLog dist.nbsd/contrib/regression/ChangeLog
--- dist/contrib/regression/ChangeLog Wed Nov 7 13:39:01 2012
+++ dist.nbsd/contrib/regression/ChangeLog Wed Nov 7 11:47:49 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/fixincludes/ChangeLog dist.nbsd/fixincludes/ChangeLog
--- dist/fixincludes/ChangeLog Wed Nov 7 13:39:09 2012
+++ dist.nbsd/fixincludes/ChangeLog Wed Nov 7 11:47:43 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/gcc/BASE-VER dist.nbsd/gcc/BASE-VER
--- dist/gcc/BASE-VER Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/BASE-VER Wed Nov 7 11:47:23 2012
@@ -1 +1 @@
-4.5.3
+4.5.4
diff -rNU3 -x *.info dist/gcc/ChangeLog dist.nbsd/gcc/ChangeLog
--- dist/gcc/ChangeLog Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/ChangeLog Wed Nov 7 11:47:25 2012
@@ -1,3 +1,1239 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
+2012-06-22 Richard Guenther <rguenther@suse.de>
+
+ * gcov-iov.c: Include bconfig.h and system.h.
+
+2012-06-22 Richard Guenther <rguenther@suse.de>
+
+ PR gcov-profile/53744
+ * gcov-iov.c (main): Treat "" and "prerelease" the same.
+
+2012-06-20 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2012-05-21 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/53418
+ * c-typeck.c (build_conditional_expr): Remove C_MAYBE_CONST_EXPR
+ from folded operands before wrapping another around the
+ conditional expression.
+
+2012-06-20 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2010-12-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/46985
+ * tree-scalar-evolution.c (instantiate_scev_r): If chrec is NULL,
+ return it immediately.
+
+ 2011-02-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/47780
+ * cfgexpand.c (expand_debug_expr) <case SSA_NAME>: Call copy_rtx to
+ avoid invalid rtx sharing.
+
+ 2011-02-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/47903
+ * real.c (real_arithmetic) <case PLUS_EXPR, MINUS_EXPR,
+ MULT_EXPR, RDIV_EXPR>: Clear padding bits in *r first if
+ r isn't op0 nor op1.
+
+2012-06-04 Edmar Wienskoski <edmar@freescale.com>
+
+ * config/rs6000/altivec.md (altivec_stvlx): Change machine mode of
+ operands.
+ (altivec_stvlxl): Ditto.
+ (altivec_stvrx): Ditto.
+ (altivec_stvrxl): Ditto.
+
+2012-06-04 Georg-Johann Lay <avr@gjlay.de>
+
+ Backport from 2012-06-04 mainline r188172
+
+ PR target/46261
+ * config/avr/avr-stdint.h: New file.
+ * config.gcc (avr-*-*,tm_file): Use avr/avr-stdint.h instead of
+ newlib-stdint.h
+
+2012-05-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * configure: Regenerate.
+
+2012-05-14 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/46098
+ * config/i386/i386.c (ix86_expand_special_args_builtin): Always
+ generate target register for "load" class builtins.
+
+ Revert:
+ 2010-10-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/46098
+ * config/i386/sse.md (*avx_movu<ssemodesuffix><avxmodesuffix>):
+ Rename from avx_movu<ssemodesuffix><avxmodesuffix>.
+ (avx_movu<ssemodesuffix><avxmodesuffix>): New expander.
+ (*<sse>_movu<ssemodesuffix>): Rename from <sse>_movu<ssemodesuffix>.
+ (<sse>_movu<ssemodesuffix>): New expander.
+ (*avx_movdqu<avxmodesuffix>): Rename from avx_movdqu<avxmodesuffix>.
+ (avx_movdqu<avxmodesuffix>): New expander.
+ (*sse2_movdqu): Rename from sse2_movdqu.
+ (sse2_movdqu): New expander.
+
+2012-05-13 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2012-05-12 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/alpha/alpha.c (alpha_emit_conditional_branch): Handle
+ ORDERED and UNORDERED conditions.
+
+2012-05-04 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2012-05-04 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/53228
+ * config/i386/i386.h (X86_ARCH_CMOV): Rename from X86_ARCH_CMOVE.
+ (TARGET_CMOV): Rename from TARGET_CMOVE.
+ (TARGET_CMOVE): New define.
+ * config/i386/i386.c (override_options): Use TARGET_CMOV.
+ Do not set TARGET_CMOVE here.
+
+2012-05-03 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Backport from the mainline
+ 2012-05-03 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/53199
+ * config/rs6000/rs6000.md (bswapdi splitters): If
+ -mavoid-indexed-addresses (or -mcpu=power6 which sets it by
+ default) is used, generate an alternate sequence that does not
+ depend on using indexed addressing.
+
+2012-05-02 Georg-Johann Lay <avr@gjlay.de>
+
+ Backport from 2011-10-21 4.6-branch 180303.
+
+ PR target/50820
+ * config/avr/libgcc.S (__EIND__): New define to 0x3C.
+ (__tablejump__): Consistently use EIND for indirect jump/call.
+ (__tablejump_elpm__): Ditto.
+
+2012-05-02 Georg-Johann Lay <avr@gjlay.de>
+
+ Backport from 2011-05-30 4.6-branch r174427.
+
+ PR target/45263
+ * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors):
+ Don't use r20 around calls of __tablejump_elpm__
+
+2012-05-02 Georg-Johann Lay <avr@gjlay.de>
+
+ Backport from 2011-07-11 4.6-branch r176143
+
+ PR target/39633
+ * config/avr/avr.c (notice_update_cc): For ashiftrt:QI, only
+ offsets 1..5 set cc0 in a usable way.
+
+2012-05-02 Georg-Johann Lay <avr@gjlay.de>
+
+ Backport from 2011-07-08 4.6-branch r176055.
+
+ PR target/46779
+ * config/avr/avr.c (avr_hard_regno_mode_ok): Rewrite.
+ In particular, allow 8-bit values in r28 and r29.
+ (avr_hard_regno_scratch_ok): Disallow any register that might be
+ part of the frame pointer.
+ (avr_hard_regno_rename_ok): Same.
+ (avr_legitimate_address_p): Don't allow SUBREGs.
+
+2012-04-30 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2012-04-27 Paolo Bonzini <bonzini@gnu.org>
+
+ PR target/53138
+ * config/i386/i386.md (x86_mov<mode>cc_0_m1_neg): Add clobber.
+
+2012-04-20 Thomas Schwinge <thomas@codesourcery.com>
+
+ struct siginfo vs. siginfo_t
+
+ Backport from trunk (but apply to gcc/):
+
+ 2012-04-20 Thomas Schwinge <thomas@codesourcery.com>
+
+ * config/alpha/linux-unwind.h (alpha_fallback_frame_state): Use
+ siginfo_t instead of struct siginfo.
+ * config/bfin/linux-unwind.h (bfin_fallback_frame_state): Likewise.
+ * config/i386/linux-unwind.h (x86_fallback_frame_state): Likewise.
+ * config/ia64/linux-unwind.h (ia64_fallback_frame_state)
+ (ia64_handle_unwabi): Likewise.
+ * config/mips/linux-unwind.h (mips_fallback_frame_state): Likewise.
+ * config/pa/linux-unwind.h (pa32_fallback_frame_state): Likewise.
+ * config/sh/linux-unwind.h (shmedia_fallback_frame_state)
+ (sh_fallback_frame_state): Likewise.
+ * config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Likewise.
+
+2012-04-12 Richard Earnshaw <rearnsha@arm.com>
+
+ PR target/49448
+ * config.gcc (arm*-*-linux*): Use an unambiguous pattern for
+ detecting big-endian triplets.
+
+2012-04-10 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR middle-end/52894
+ * varasm.c (process_pending_assemble_externals): Set
+ pending_assemble_externals_processed true.
+ (assemble_external): Call assemble_external_real if the pending
+ assemble externals have been processed.
+
+2012-04-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/52717
+ * config/sparc/sparc.c (sparc_file_end): Set TREE_PUBLIC explicitly on
+ the DECL generated for the special GOT helper.
+
+2012-04-06 Matt Turner <mattst88@gmail.com>
+
+ * doc/install.texi: Correct typo "-mno-lsc" -> "-mno-llsc".
+
+2012-03-29 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/sse.md (avx_h<plusminus_insn>v4df3): Fix results
+ crossing 128bit lane boundary.
+
+2012-03-29 Uros Bizjak <ubizjak@gmail.com>
+
+ Backported from mainline
+ 2012-03-27 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/52698
+ * config/i386/i386-protos.h (ix86_legitimize_reload_address):
+ New prototype.
+ * config/i386/i386.h (LEGITIMIZE_RELOAD_ADDRESS): New define.
+ * config/i386/i386.c: Include reload.h.
+ (ix86_legitimize_reload_address): New function.
+
+2012-03-28 Martin Jambor <mjambor@suse.cz>
+
+ Backported from mainline
+ 2012-03-27 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/52693
+ * tree-sra.c (sra_modify_assign): Do not call
+ load_assign_lhs_subreplacements when working with an unscalarizable
+ region.
+
+2012-03-24 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR middle-end/52640
+ * varasm.c: Include pointer-set.h.
+ (pending_assemble_externals_set): New pointer set.
+ (process_pending_assemble_externals): Destroy the pointer set.
+ (assemble_external): See if decl is in pending_assemble_externals_set,
+ and add it to pending_assemble_externals if necessary.
+ (init_varasm_once): Allocate pending_assemble_externals_set.
+
+2012-03-06 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Backport from mainline
+ 2012-03-06 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/50310
+ * config/rs6000/vector.md (vector_uneq<mode>): Add support for
+ UNEQ, LTGT, ORDERED, and UNORDERED IEEE vector comparisons.
+ (vector_ltgt<mode>): Likewise.
+ (vector_ordered<mode>): Likewise.
+ (vector_unordered<mode>): Likewise.
+ * config/rs6000/rs6000.c (rs6000_emit_vector_compare_inner):
+ Likewise.
+
+2012-03-04 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ Backport from mainline
+ 2012-03-01 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR target/52408
+ * config/pa/pa.md (zvdep_imm32): Change type of variable x from int to
+ unsigned HOST_WIDE_INT.
+ (zvdep_imm64): Likewise.
+ (vdepi_ior): Change type of variable x from int to HOST_WIDE_INT.
+ (vdepi_and): Likewise.
+ Likewise for unamed 64-bit patterns.
+ * config/pa/predicates.md (lhs_lshift_cint_operand): Update comment.
+
+2012-03-02 Peter Bergner <bergner@vnet.ibm.com>
+
+ Backport from mainline
+ 2012-03-02 Peter Bergner <bergner@vnet.ibm.com>
+
+ * config/rs6000/vsx.md (vsx_set_<mode>): Reorder operands.
+
+2012-02-23 Uros Bizjak <ubizjak@gmail.com>
+
+ PR c/52290
+ * c-decl.c (start_function): Exit early if decl1 is not FUNTION_DECL.
+
+2012-02-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/52330
+ * config/i386/i386.c (ix86_print_operand) <case 'H'>: Error out if x
+ is not offsettable memory reference.
+
+2012-02-21 Richard Earnshaw <rearnsha@arm.com>
+
+ PR target/52294
+ * thumb2.md (thumb2_shiftsi3_short): Split register and
+ immediate shifts. For register shifts tie operands 0 and 1.
+ (peephole2 for above): Check that register-controlled shifts
+ have suitably tied operands.
+
+2012-02-14 Bin Cheng <bin.cheng@arm.com>
+
+ Backport from mainline.
+ 2012-01-30 Bin Cheng <bin.cheng@arm.com>
+
+ PR target/51835
+ * config/arm/arm.c (arm_libcall_uses_aapcs_base): Use correct ABI
+ for __aeabi_d2iz/__aeabi_d2uiz with hard-float.
+
+ 2011-06-08 Julian Brown <julian@codesourcery.com>
+
+ * config/arm/arm.c (arm_libcall_uses_aapcs_base): Use correct ABI
+ for double-precision helper functions in hard-float mode if only
+ single-precision arithmetic is supported in hardware.
+
+2012-02-09 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
+ 2012-02-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/52139
+ * cfgrtl.c (cfg_layout_merge_blocks): If BB_END
+ is a BARRIER after emit_insn_after_noloc, move BB_END
+ to the last non-BARRIER insn before it.
+
+ 2012-01-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR libmudflap/40778
+ * tree-mudflap.c (mf_artificial): New function.
+ (execute_mudflap_function_ops, execute_mudflap_function_decls,
+ mx_register_decls, mudflap_enqueue_decl): Use it.
+
+ 2012-01-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/51767
+ * cfgrtl.c (force_nonfallthru_and_redirect): Force addition
+ of jump_block and add an extra edge for degenerated asm gotos.
+
+ PR middle-end/51768
+ * stmt.c (check_unique_operand_names): Don't ICE during error
+ reporting if i is from labels chain.
+
+ PR middle-end/44777
+ * profile.c (branch_prob): Split bbs that have exit edge
+ and need a fake entry edge too.
+
+2012-02-09 Peter Bergner <bergner@vnet.ibm.com>
+
+ Backport from mainline
+ 2012-02-09 Peter Bergner <bergner@vnet.ibm.com>
+
+ PR middle-end/52140
+ * dojump.c (do_compare_rtx_and_jump): Use SCALAR_FLOAT_MODE_P.
+
+2012-02-09 Andrey Belevantsev <abel@ispras.ru>
+
+ Backport from mainline
+ 2012-01-20 Andrey Belevantsev <abel@ispras.ru>
+
+ PR target/51106
+ * function.c (instantiate_virtual_regs_in_insn): Use
+ delete_insn_and_edges when removing a wrong asm insn.
+
+2012-02-07 Quentin Neill <quentin.neill@amd.com>
+
+ Backport from mainline:
+ 2012-01-19 Quentin Neill <quentin.neill@amd.com>
+
+ PR target/48743
+ * config/i386/driver-i386.c (host_detect_local_cpu): Also check
+ family to distinguish PROCESSOR_ATHLON.
+
+2012-02-07 Kai Tietz <ktietz@redhat.com>
+ Dave Korn <dave.korn.cygwin@gmail.com>
+
+ PR target/40068
+ * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition):
+ Take care that typinfo gets dllexport-attribute.
+
+2012-01-31 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ Backport from mainline:
+ 2012-01-31 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ * config/arm/thumb2.md (thumb2_mov_notscc): Use MVN for true condition.
+
+2012-01-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ * cfgrtl.c (rtl_dump_bb): Do not dump insns for {ENTRY|EXIT}_BLOCK.
+
+2012-01-15 Uros Bizjak <ubizjak@gmail.com>
+
+ PR rtl-optimization/51821
+ * recog.c (peep2_find_free_register): Determine clobbered registers
+ from insn pattern.
+
+2012-01-12 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ Backport from mainline:
+ 2012-01-11 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ * config/arm/arm.md (mov_notscc): Use MVN for false condition.
+
+2012-01-10 Joseph Myers <joseph@codesourcery.com>
+
+ Revert:
+
+ 2008-09-18 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR rtl-opt/37451
+ * loop-doloop.c (doloop_modify): New argument zero_extend_p and
+ zero extend count after the correction to it is done.
+ (doloop_optimize): Update call to doloop_modify, don't zero extend
+ count before call.
+
+ 2008-11-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR rtl-opt/37782
+ * loop-doloop.c (doloop_modify): Add from_mode argument that says what
+ mode count is in.
+ (doloop_optimize): Update call to doloop_modify.
+
+2012-01-09 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * config/mips/mips.md (loadgp_newabi_<mode>): Add missing
+ earlyclobber.
+
+2012-01-09 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/51759
+ Backport from mainline
+ 2010-09-15 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/45644
+ * tree-sra.c (create_access): Check for bit-fields directly.
+
+2012-01-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/sparc/sol2-unwind.h (sparc64_is_sighandler): Check that the
+ purported sigacthandler address isn't null before dereferencing it.
+ (sparc_is_sighandler): Likewise.
+
+2012-01-06 Richard Sandiford <richard.sandiford@linaro.org>
+
+ PR middle-end/48660
+ * expr.h (copy_blkmode_to_reg): Declare.
+ * expr.c (copy_blkmode_to_reg): New function.
+ (expand_assignment): Don't expand register RESULT_DECLs before
+ the lhs. Use copy_blkmode_to_reg to copy BLKmode values into a
+ RESULT_DECL register.
+ (expand_expr_real_1): Handle BLKmode decls when looking for promotion.
+
+2012-01-04 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2012-01-04 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/49651
+ * tree-ssa-structalias.c (type_can_have_subvars): New function.
+ (var_can_have_subvars): Use it.
+ (get_constraint_for_1): Only consider subfields if there
+ can be any.
+
+ 2011-07-14 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/49651
+ * tree-ssa-structalias.c (get_constraint_for_1): Properly
+ handle dereferences with subvariables.
+
+2012-01-03 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-10-12 Paul Koning <pkoning@gcc.gnu.org>
+
+ PR tree-optimization/50189
+ * tree-vrp.c (extract_range_from_assert): Use the type of
+ the variable, not the limit.
+
+2012-01-03 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-10-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/49279
+ * tree-ssa-structalias.c (find_func_aliases): Don't handle
+ CAST_RESTRICT.
+
+2012-01-03 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-08-23 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/50162
+ * tree-vect-stmts.c (vectorizable_call): Fix argument lookup.
+
+2012-01-03 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-05-12 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/48172
+ * tree-vect-loop-manip.c (vect_vfa_segment_size): Do not exclude
+ the number of iterations from the segment size calculation.
+ (vect_create_cond_for_alias_checks): Adjust.
+
+ 2011-05-13 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/48172
+ * tree-vect-loop-manip.c (vect_vfa_segment_size): Avoid
+ multiplying by number of iterations for equal step.
+ (vect_create_cond_for_alias_checks): Likewise.
+
+2011-12-21 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2011-12-21 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41159
+ * tree-outof-ssa.c (insert_value_copy_on_edge): Use the
+ mode of the pseudo as destination mode. Only assert that
+ is equal to the promoted mode of the decl if it is a REG.
+
+2011-12-21 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/alpha/linux-unwind.h: Update copyright years.
+ (MD_FROB_UPDATE_CONTEXT): New define.
+ (alpha_frob_update_context): New function.
+
+2011-12-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/sparc/sparc.md (UNSPEC_FRAME_BLOCKAGE): New constant.
+ (frame_blockage): New expander.
+ (frame_blockage<P:mode>): New instruction.
+ * config/sparc/sparc.c (sparc_expand_prologue): When the sequence of
+ instructions establishing the frame isn't atomic, emit frame blockage.
+
+2011-12-13 Eric Botcazou <ebotcazou@adacore.com>
+
+ * lto-streamer-out.c (write_symbol): Use proper 64-bit host type.
+ * lto-streamer-in.c (lto_read_body): Use 'int' for offsets.
+ (lto_input_toplevel_asms): Likewise.
+ * lto-section-in.c (lto_create_simple_input_block): Likewise.
+ * lto-opts.c (lto_read_file_options): Likewise.
+ * ipa-prop.c (ipa_prop_read_section): Likewise.
+
+ * df.h (DF_NOTE): Fix typo in comment.
+
+2011-12-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * regmove.c (fixup_match_2): Only access call_used_regs with hard
+ regs.
+
+2011-12-09 Kazu Hirata <kazu@codesourcery.com>
+
+ Backport from mainline:
+
+ 2011-12-05 Kazu Hirata <kazu@codesourcery.com>
+
+ PR target/51408
+ * config/arm/arm.md (*minmax_arithsi): Always require the else
+ clause in the MINUS case.
+
+2011-12-04 Jérémie Detrey <Jeremie.Detrey@loria.fr>
+
+ PR target/51393
+ * config/i386/avxintrin.h (_mm256_insert_epi64): Declare second
+ parameter as long long.
+
+2011-11-25 Richard Sandiford <richard.sandiford@linaro.org>
+
+ Backport from mainline:
+
+ 2011-03-29 Richard Sandiford <richard.sandiford@linaro.org>
+
+ PR debug/48190
+ * dwarf2out.c (dw_loc_list_node): Add resolved_addr and replaced.
+ (cached_dw_loc_list_def): New structure.
+ (cached_dw_loc_list): New typedef.
+ (cached_dw_loc_list_table): New variable.
+ (cached_dw_loc_list_table_hash): New function.
+ (cached_dw_loc_list_table_eq): Likewise.
+ (add_location_or_const_value_attribute): Take a bool cache_p.
+ Cache the list when the parameter is true.
+ (gen_formal_parameter_die): Update caller.
+ (gen_variable_die): Likewise.
+ (dwarf2out_finish): Likewise.
+ (dwarf2out_abstract_function): Nullify cached_dw_loc_list_table
+ while generating debug info for the decl.
+ (dwarf2out_function_decl): Clear cached_dw_loc_list_table.
+ (dwarf2out_init): Initialize cached_dw_loc_list_table.
+ (resolve_addr): Cache the result of resolving a chain of
+ location lists.
+
+ From: 2010-10-12 Jakub Jelinek <jakub@redhat.com>
+ * dwarf2out.c (dw_loc_list_node): Add emitted field.
+ (output_loc_list): Return immediately if emitted is set, set it.
+
+2011-11-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR rtl-optimization/51187
+ * reorg.c (relax_delay_slots): Do not consider a jump useless if there
+ is a barrier between the jump and its target label.
+
+2011-11-07 Alan Modra <amodra@gmail.com>
+
+ PR target/30282
+ * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Always emit
+ blockage for ABI_V4.
+
+2011-11-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/50979
+ * config/sparc/sparc.h (ASM_CPU_SPEC): Pass -Av8 if -mcpu=v8.
+
+2011-10-30 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/50875
+ * config/i386/sse.md (*avx_unpcklpd256): Remove extra insn
+ constraints. Change alternative 1 to "x,m,1".
+
+2011-10-29 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR target/50691
+ * config/pa/pa.c (emit_move_sequence): Legitimize TLS symbol
+ references.
+ * config/pa/pa.h (LEGITIMATE_CONSTANT_P): Return false for
+ TLS_MODEL_GLOBAL_DYNAMIC and TLS_MODEL_LOCAL_DYNAMIC symbol references.
+
+2011-10-23 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/50788
+ * config/i386/sse.md (avx_maskload<ssemodesuffix><avxmodesuffix>):
+ Remove (match_dup 0).
+
+2011-10-18 Uros Bizjak <ubizjak@gmail.com>
+ Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/50737
+ * config/alpha/linux-unwind.h (alpha_fallback_frame_state): Set
+ fs->signal_frame to 1.
+
+2011-10-12 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/50565
+ * convert.c (convert_to_integer): Do not narrow operands of
+ pointer subtraction.
+
+2011-10-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/49965
+ * config/sparc/sparc.md (mov<I:mode>cc): Do not save comparison code.
+ (mov<F:mode>cc): Likewise.
+
+2011-09-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/50464
+ * config/i386/sse.md (xop_pcmov_<mode>): Change operand 1 predicate
+ to register_operand and operand 2 predicate to nonimmediate_operand.
+ (xop_pcmov_<mode>256): Ditto.
+ * config/i386/i386.c (ix86_expand_sse_movcc): When generating
+ xop_pcmov, force op_true to register. Also, force op_false to
+ register if it doesn't satisfy nonimmediate_operand predicate.
+
+2011-09-18 Eric Botcazou <ebotcazou@adacore.com>
+ Iain Sandoe <developer@sandoe-acoustics.co.uk>
+
+ PR target/50091
+ * config/rs6000/rs6000.md (probe_stack): Use explicit operand.
+
+2011-09-08 Martin Jambor <mjambor@suse.cz>
+
+ Backport from mainline
+ 2011-09-07 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/49911
+ * tree-sra.c (analyze_access_subtree): Change type of to-be-replaced
+ enumerations to the corresponding plain integer type.
+
+2011-08-26 Richard Sandiford <richard.sandiford@linaro.org>
+
+ PR target/50090
+ * config/arm/bpabi.h (RENAME_LIBRARY_SET): Delete.
+ (RENAME_LIBRARY): Use a C-level alias instead of an assembly one.
+
+2011-08-12 Nick Clifton <nickc@redhat.com>
+
+ * builtins.c (expand_builtin_memcmp): Do not use cmpstrnsi pattern.
+ * doc/md.texi (cmpstrn): Note that the comparison stops if both
+ fetched bytes are zero.
+ (cmpstr): Likewise.
+ (cmpmem): Note that the comparison does not stop if both of the
+ fetched bytes are zero.
+
+2011-08-11 Kazuhiro Inaoka <kazuhiro.inaoka.ud@renesas.com>
+
+ * config/rx/rx.md (movsicc): Allow register to register transfers.
+ (*movsicc): Likewise.
+ (*stcc): Restrict this pattern to EQ and NE compares.
+ (*stcc_reg): New pattern. Works for any comparison but only for
+ register transfers.
+
+2011-08-10 DJ Delorie <dj@redhat.com>
+
+ * expr.c (expand_expr_addr_expr_1): Detect a user request for
+ a local frame in a naked function, and produce a suitable
+ error for that specific case.
+
+2011-08-06 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/50001
+ * config/alpha/alpha.c (alpha_instantiate_decls): New function.
+ (TARGET_INSTANTIATE_DECLS): New define.
+
+2011-08-01 Sebastien Bourdeauducq <sebastien@milkymist.org>
+
+ * config/lm32/t-lm32: Add missing multilibs.
+
+2011-07-31 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/49920
+ * config/i386/i386.md (strset): Do not expand strset_singleop
+ when %eax or $edi are fixed.
+ (*strsetdi_rex_1): Disable when %eax or %edi are fixed.
+ (*strsetsi_1): Ditto.
+ (*strsetsi_rex_1): Ditto.
+ (*strsethi_1): Ditto.
+ (*strsethi_rex_1): Ditto.
+ (*strsetqi_1): Ditto.
+ (*strsetqi_rex_1): Ditto.
+ (*rep_stosdi_rex64): Disable when %eax, %ecx or %edi are fixed.
+ (*rep_stossi): Ditto.
+ (*rep_stossi_rex64): Ditto.
+ (*rep_stosqi): Ditto.
+ (*rep_stosqi_rex64): Ditto.
+ (*strlenqi_1): Ditto.
+ (*strlenqi_rex_1): Ditto.
+ (cmpstrnsi): Also fail when %ecx is fixed.
+ (*cmpstrnqi_nz_1): Disable when %ecx, %esi or %edi are fixed.
+ (*cmpstrnqi_nz_rex_1): Ditto.
+ (*cmpstrnqi_1): Ditto.
+ (*cmpstrnqi_rex_1): Ditto.
+ (*strmovdi_rex_1): Disable when %esi or %edi are fixed.
+ (*strmovsi_1): Ditto.
+ (*strmovsi_rex_1): Ditto.
+ (*strmovhi_1): Ditto.
+ (*strmovhi_rex_1): Ditto.
+ (*strmovqi_1): Ditto.
+ (*strmovqi_rex_1): Ditto.
+ (*rep_movdi_rex64): Disable when %ecx, %esi or %edi are fixed.
+ (*rep_movsi): Ditto.
+ (*rep_movsi_rex64): Ditto.
+ (*rep_movqi): Ditto.
+ (*rep_movqi_rex64): Ditto.
+
+2011-07-28 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/47364
+ * config/i386/i386.md (strlensi): Enable for !TARGET_64BIT only.
+ (strlendi): Enable for TARGET_64BIT only.
+
+2011-07-29 Nick Clifton <nickc@redhat.com>
+
+ * config/rx/rx.c (rx_expand_builtin): Fix typo checking the setpsw
+ builtin.
+
+2011-07-19 Jakub Jelinek <jakub@redhat.com>
+
+ Backport from mainline
+ 2011-07-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/49621
+ * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Use
+ CONST0_RTX (dest_mode) instead of const0_rtx as second operand
+ of NE.
+ * config/rs6000/vector.md (vector_select_<mode>,
+ vector_select_<mode>_uns): Change second operand of NE to
+ CONST0_RTX (<MODE>mode) instead of const0_rtx.
+ * config/rs6000/altivec.md (*altivec_vsel<mode>,
+ *altivec_vsel<mode>_uns): Expect second operand of NE to be
+ zero_constant of the corresponding vector mode.
+ * config/rs6000/vsx.md (*vsx_xxsel<mode>, *vsx_xxsel<mode>_uns):
+ Likewise.
+
+ 2011-07-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/49644
+ * c-typeck.c (build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with
+ one non-complex and one complex argument, call c_save_expr on both
+ operands.
+
+ PR middle-end/49640
+ * gimplify.c (gimplify_compound_lval): For last 2 ARRAY_*REF
+ operands and last COMPONENT_REF operand call gimplify_expr on it
+ if non-NULL.
+
+ 2011-07-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/49619
+ * combine.c (combine_simplify_rtx): In PLUS -> IOR simplification
+ pass VOIDmode as op0_mode to recursive call.
+
+ 2011-05-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/49165
+ * c-common.c (c_common_truthvalue_conversion) <case COND_EXPR>: For
+ C++ don't call c_common_truthvalue_conversion on void type arms.
+
+ 2011-05-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/49165
+ * gimplify.c (shortcut_cond_r): Don't special case
+ COND_EXPRs if they have void type on one of their arms.
+
+ PR tree-optimization/49161
+ * tree-vrp.c (struct case_info): New type.
+ (compare_case_labels): Sort case_info structs instead of
+ trees, and not primarily by CASE_LABEL uids but by
+ label_for_block indexes.
+ (find_switch_asserts): Put case labels into struct case_info
+ array instead of TREE_VEC, adjust sorting, compare label_for_block
+ values instead of CASE_LABELs.
+
+ 2011-05-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/49120
+ * c-decl.c (start_decl): Convert expr to void_type_node.
+
+ PR middle-end/48973
+ * expr.c (expand_expr_real_2) <case LT_EXPR>: If do_store_flag
+ failed and the comparison has a single bit signed type, use
+ constm1_rtx instead of const1_rtx for true value.
+ (do_store_flag): If ops->type is single bit signed type, disable
+ signel bit test optimization and pass -1 instead of 1 as last
+ parameter to emit_store_flag_force.
+
+ 2011-05-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/49039
+ * tree-vrp.c (extract_range_from_binary_expr): For
+ MIN_EXPR <~[a, b], ~[c, d]> and MAX_EXPR <~[a, b], ~[c, d]>
+ return ~[MAX_EXPR <a, c>, MIN_EXPR <b, d>].
+
+2011-07-17 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR target/49746
+ Revert:
+ 2010-12-30 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * config/pa/pa.md: Add ",*" condition to 64-bit add/subtract boolean
+ patterns.
+
+2011-07-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR target/49723
+ * config/pa/pa.md (casesi): Use gen_int_mode instead of GEN_INT.
+
+2011-07-12 Andrey Belevantsev <abel@ispras.ru>
+
+ Backport from mainline
+ 2011-05-25 Andrey Belevantsev <abel@ispras.ru>
+
+ PR rtl-optimization/49014
+ * config/i386/athlon.md (athlon_ssecomi): Change type to ssecomi.
+
+2011-07-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/49660
+ * config/sparc/sol2.h [TARGET_64BIT_DEFAULT] (TARGET_DEFAULT): Add
+ MASK_V8PLUS, remove commented out flag and reorder.
+
+ Backport from mainline
+ 2011-06-28 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * config/sparc/sol2-64.h (TARGET_DEFAULT): Remove.
+ (TARGET_64BIT_DEFAULT): Define.
+ * config.gcc (sparc*-*-solaris2*): Move sparc/sol2-64.h to front
+ of tm_file.
+ * config/sparc/sol2.h [TARGET_64BIT_DEFAULT] (TARGET_DEFAULT): Define.
+
+2011-07-04 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-05-02 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/48822
+ * tree-ssa-sccvn.c (set_ssa_val_to): Never go up the lattice.
+
+2011-07-04 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-05-23 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/49115
+ * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise.
+
+2011-07-04 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/49615
+ * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Fix
+ basic-block index check.
+
+2011-06-30 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR tree-optimization/49572
+ * tree-ssa-dom.c (initialize_hash_element) <GIMPLE_SINGLE_RHS>: Use the
+ type of the RHS instead of that of the LHS for the expression type.
+
+2011-06-30 Jack Howarth <howarth@bromo.med.uc.edu>
+
+ Backport from mainline
+ 2011-02-07 Mike Stump <mikestump@comcast.net>
+
+ PR target/42333
+ Add __ieee_divdc3 entry point.
+ * config/i386/darwin.h (DECLARE_LIBRARY_RENAMES): Retain ___divdc3
+ entry point.
+ (SUBTARGET_INIT_BUILTINS): Call darwin_rename_builtins.
+ * config/i386/i386.c (TARGET_INIT_LIBFUNCS): Likewise.
+ * config/darwin.c (darwin_rename_builtins): Add.
+ * config/darwin-protos.h (darwin_rename_builtins): Add.
+
+2011-06-28 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-ssa-dom.c (initialize_hash_element): Fix oversight.
+
+2011-06-17 Hans-Peter Nilsson <hp@axis.com>
+
+ Backport from mainline
+ 2011-06-17 Hans-Peter Nilsson <hp@axis.com>
+
+ PR rtl-optimization/48542
+ * reload.c (find_equiv_reg): Stop looking when finding a
+ setjmp-type call.
+ * reload1.c (reload_as_needed): Invalidate all reload
+ registers when crossing a setjmp-type call.
+
+2011-06-16 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ Backport from mainline
+ 2011-06-09 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/49307
+ * config/sh/sh.md (UNSPEC_CHKADD): New.
+ (chk_guard_add): New define_insn_and_split.
+ (symGOT_load): Use chk_guard_add instead of blockage.
+
+2011-06-11 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/sse.md (vec_dupv4sf): Correct mode of forced register.
+ (*vec_dupv2df): Rename from vec_dupv2df.
+ (vec_dupv2df): New expander.
+
+2011-06-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/sparc/sparc.md (return_internal): Adjust 'length' attribute.
+
+2011-06-08 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ Backport from mainline
+ 2011-06-01 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/49238
+ * config/sh/sh.c (expand_cbranchdi4): Use a scratch register if
+ needed when original operands are used for msw_skip comparison.
+
+2011-06-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/sparc/sparc.c (output_return): Fix thinko in the output of an
+ EH return when delayed branches are disabled.
+
+2011-06-05 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ Backport from mainline
+ 2011-05-30 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/49186
+ * config/sh/sh.c (expand_cbranchdi4): Set msw_skip when the high
+ part of the second operand is 0.
+
+2011-06-04 Ira Rosen <ira.rosen@linaro.org>
+
+ PR tree-optimization/49038
+ * tree-vect-loop-manip.c (vect_generate_tmps_on_preheader):
+ Ensure at least one epilogue iteration if required by data
+ accesses with gaps.
+ * tree-vectorizer.h (struct _loop_vec_info): Add new field
+ to mark loops that require peeling for gaps.
+ * tree-vect-loop.c (new_loop_vec_info): Initialize new field.
+ (vect_estimate_min_profitable_iters): Take peeling for gaps into
+ account.
+ (vect_transform_loop): Generate epilogue if required by data
+ access with gaps.
+ * tree-vect-data-refs.c (vect_analyze_group_access): Mark the
+ loop as requiring an epilogue if there are gaps in the end of
+ the strided group.
+
+2011-05-29 Richard Sandiford <rdsandiford@googlemail.com>
+
+ PR target/43700
+ * config/mips/mips.c (mips_cfun_call_saved_reg_p): Handle global
+ registers.
+
+2011-05-29 Richard Sandiford <rdsandiford@googlemail.com>
+
+ PR target/43995
+ * config/mips/mips.c (mips_pic_call_symbol_from_set): Add a
+ recurse_p argument. Only follow register copies if it is set,
+ and prevent mips_find_pic_call_symbol from recursing.
+ (mips_find_pic_call_symbol): Add a recurse_p argument.
+ Pass it to mips_pic_call_symbol_from_set.
+ (mips_annotate_pic_calls): Update accordingly.
+
+2011-05-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/sparc/sparc-protos.h (sparc_optimization_options): Declare.
+ * config/sparc/sparc.h (OPTIMIZATION_OPTIONS): Define.
+ * config/sparc/sparc.c (sparc_optimization_options): New function.
+ Set flag_ira_share_save_slots to 0.
+
+ Backport from mainline
+ 2011-01-21 Jeff Law <law@redhat.com>
+
+ PR rtl-optimization/41619
+ * caller-save.c (setup_save_areas): Break out code to determine
+ which hard regs are live across calls by examining the reload chains
+ so that it is always used.
+ Eliminate code which checked REG_N_CALLS_CROSSED.
+
+2011-05-25 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/49133
+ * config/i386/sse.md (sse2_loadhpd): Remove shufpd alternative.
+
+2011-05-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/sparc/sparc.md (setjmp): Handle PIC mode and use the hard
+ frame pointer.
+
+2011-05-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/sparc/sparc.c (eligible_for_return_delay): Do not return
+ false if there are call-saved registers here...
+ (sparc_can_use_return_insn_p): ...but here instead.
+ (save_or_restore_regs): Fix thinko.
+ (sparc_expand_prologue): Use current_function_is_leaf.
+ (sparc_frame_pointer_required): Likewise.
+
+2011-05-20 Nick Clifton <nickc@redhat.com>
+
+ * config/rx/rx.h (HAVE_PRE_DECREMENT): Fix typo in macro name.
+
+2011-05-16 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (*movxf_internal): Disable CONST_DOUBLE
+ optimization for CM_MEDIUM and CM_LARGE code models. Fix usage
+ of standard_80387_constant_p.
+ (*movxf_internal_nointeger): Ditto.
+ (*movdf_internal): Remove dead code-size optimization.
+ (*movdf_internal_rex64): Fix usage of standard_80387_constant_p.
+ (*movdf_internal_nointeger): Ditto.
+ (*movsf_internal): Ditto.
+ (floating point move splitters): Ditto.
+ * config/i386/constraints.md (G): Ditto.
+ * config/i386/i386.c (ix86_preferred_reload_class): Ditto.
+
+2011-05-11 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Backport from mainline
+ 2011-05-10 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/48857, 48495
+ * config/rs6000/rs6000.h (VSX_SCALAR_MODE): Delete.
+ (VSX_MODE): Ditto.
+ (VSX_MOVE_MODE): Ditto.
+ (ALTIVEC_OR_VSX_VECTOR_MODE): New macro, combine all Altivec and
+ VSX vector types. Add V2DImode.
+ (HARD_REGNO_CALLER_SAVE_MODE): Use it instead of
+ ALTIVEC_VECTOR_MODE and VSX_VECTOR_MODE calls.
+ (MODES_TIEABLE_P): Ditto.
+
+ * config/rs6000/rs6000.c (rs6000_emit_move): Use
+ ALTIVEC_OR_VSX_MODE instead of ALTIVEC_VECTOR_MODE and
+ VSX_VECTOR_MODE.
+ (init_cumulative_args): Ditto.
+ (rs6000_function_arg_boundary): Ditto.
+ (rs6000_function_arg_advance_1): Ditto.
+ (rs6000_function_arg): Ditto.
+ (rs6000_function_ok_for_sibcall): Ditto.
+ (emit_frame_save): Ditto.
+ (rs6000_function_value): Ditto.
+ (rs6000_libcall_value): Ditto.
+
+2011-05-10 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
+ 2011-05-07 Zdenek Dvorak <ook@ucw.cz>
+
+ PR tree-optimization/48837
+ * tree-tailcall.c (tree_optimize_tail_calls_1): Do not mark tailcalls
+ when accumulator transformation is performed.
+
+2011-05-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * var-tracking.c (find_mem_expr_in_1pdv): Fix thinko.
+ (dataflow_set_preserve_mem_locs): Likewise.
+
+2011-05-07 Alan Modra <amodra@gmail.com>
+
+ PR target/48900
+ * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Use
+ const0_rtx as the arg to the dummy __tls_get_addr libcall.
+
+2011-05-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/40975
+ * tree-inline.c (copy_tree_r): Handle STATEMENT_LIST.
+
+2011-05-05 Julian Brown <julian@codesourcery.com>
+
+ * config/arm/neon.md (vec_set<mode>_internal): Fix misplaced
+ parenthesis in D-register case.
+
+2011-05-05 Ira Rosen <ira.rosen@linaro.org>
+
+ Backport from mainline:
+ 2011-04-18 Ulrich Weigand <ulrich.weigand@linaro.org>
+ Ira Rosen <ira.rosen@linaro.org>
+
+ PR target/48252
+ * config/arm/arm.c (neon_emit_pair_result_insn): Swap arguments
+ to match neon_vzip/vuzp/vtrn_internal.
+ * config/arm/neon.md (neon_vtrn<mode>_internal): Make both
+ outputs explicitly dependent on both inputs.
+ (neon_vzip<mode>_internal, neon_vuzp<mode>_internal): Likewise.
+
+2011-05-04 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2011-04-21 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/48708
+ * config/i386/i386.c (ix86_expand_vector_set) <V2DImode>: Generate
+ vec_extract and vec_concat for non-SSE4_1 targets.
+
+2011-05-04 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (*movdi_internal_rex64) <TYPE_SSEMOV>:
+ Use %v prefix in insn mnemonic to handle TARGET_AVX.
+ (*movdi_internal): Use "maybe_vex" instead of "vex" in "prefix"
+ attribute calculation.
+ (*movdf_internal): Output AVX mnemonics. Add "prefix" attribute.
+ * config/i386/sse.md (*sse2_storeq_rex64): Do not emit %v prefix
+ for mov{q} mnemonic.
+ (*vec_extractv2di_1_rex64_avx): Ditto.
+ (*vec_concatv2di_rex64_sse4_1): Use %vmovd for reg<->xmm moves.
+ (*vec_concatv2di_rex64_sse): Use movd for reg<->xmm moves.
+ * config/i386/mmx.md (*mov<mode>_internal_rex64): Ditto.
+
+2011-05-03 Uros Bizjak <ubizjak@gmail.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR target/48774
+ * config/i386/i386.c (ix86_match_ccmode): For CC{A,C,O,S}mode
+ only succeed if req_mode is the same as set_mode.
+
+2011-05-03 Jakub Jelinek <jakub@redhat.com>
+
+ Backport from mainline
+ 2011-04-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/48809
+ * tree-switch-conversion.c (build_arrays): Compute tidx in unsigned
+ type.
+ (gen_inbound_check): Don't compute index_expr - range_min in utype
+ again, instead reuse SSA_NAME initialized in build_arrays.
+ Remove two useless gsi_for_stmt calls.
+
+ 2011-04-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/48597
+ * final.c (final_scan_insn): Call dwarf2out_frame_debug even for
+ inline asm.
+
+ 2011-04-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/48742
+ * c-typeck.c (build_binary_op): Don't wrap arguments if
+ int_operands is true.
+
+ 2011-04-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/48685
+ * fold-const.c (fold_convert_loc): Add NOP_EXPR when casting
+ to VOID_TYPE even around MODIFY_EXPR.
+
+2011-05-02 Ulrich Weigand <ulrich.weigand@linaro.org>
+
+ PR middle-end/43085
+ Backport from mainline:
+
+ 2010-04-29 Bernd Schmidt <bernds@codesourcery.com>
+
+ From Dominique d'Humieres <dominiq@lps.ens.fr>
+ PR bootstrap/43858
+ * ifcvt.c (dead_or_predicable): Use df_simulate_find_defs to compute
+ test_set.
+
+ 2010-04-26 Bernd Schmidt <bernds@codesourcery.com>
+
+ * df-problems.c (df_simulate_initialize_forwards): Set, don't clear,
+ bits for artificial defs at the top of the block.
+ * fwprop.c (single_def_use_enter_block): Don't call it.
+
+ 2010-04-22 Bernd Schmidt <bernds@codesourcery.com>
+
+ * ifcvt.c (dead_or_predicable): Use df_simulate_find_defs and
+ df_simulate_find_noclobber_defs as appropriate. Keep track of an
+ extra set merge_set_noclobber, and use it to relax the final test
+ slightly.
+ * df.h (df_simulate_find_noclobber_defs): Declare.
+ * df-problems.c (df_simulate_find_defs): Don't ignore partial or
+ conditional defs.
+ (df_simulate_find_noclobber_defs): New function.
+
+2011-04-29 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR target/48288
+ * config/pa/predicates.md (ior_operand): Delete predicate.
+ (cint_ior_operand, reg_or_cint_ior_operand): New predicates.
+ * config/pa/pa.md (iordi3): Use reg_or_cint_ior_operand predicate in
+ expander. Use cint_ior_operand in unnamed insn.
+ (iorsi3): Likewise.
+ * config/pa/pa-protos.h (ior_operand): Delete declarations.
+
+2011-04-28 Richard Guenther <rguenther@suse.de>
+
+ * DEV-PHASE: Set back to prerelease.
+ * BASE-VER: Bump to 4.5.4.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
@@ -80,7 +1316,7 @@
to flow_loop_nested_p when moving the loop upward.
2011-03-15 Richard Guenther <rguenther@suse.de>
-
+
PR middle-end/48031
* fold-const.c (fold_indirect_ref_1): Do not create new variable-sized
or variable-indexed array accesses when in gimple form.
@@ -433,7 +1669,7 @@
PR target/48171
* config/i386/i386.opt: Add Save to -mavx and -mfma.
-2011-03-16 Pat Haugen <pthaugen@us.ibm.com>
+2011-03-16 Pat Haugen <pthaugen@us.ibm.com>
PR target/47862
* caller-save.c (insert_restore, insert_save): Use non-validate
@@ -506,10 +1742,10 @@
* cgraph.c (cgraph_function_body_availability): Use decl_replaceable_p.
* tree-inline.c (inlinable_function_p): Likewise.
-2011-03-07 Pat Haugen <pthaugen@us.ibm.com>
+2011-03-07 Pat Haugen <pthaugen@us.ibm.com>
Backport from mainline
- 2011-03-07 Pat Haugen <pthaugen@us.ibm.com>
+ 2011-03-07 Pat Haugen <pthaugen@us.ibm.com>
PR target/47862
* config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Define.
@@ -525,7 +1761,7 @@
(ssse3_pmaddubsw128): Ditto.
(ssse3_pmaddubsw): Ditto.
-2011-03-03 Denis Chertykov <chertykov@gmail.com>
+2011-03-03 Denis Chertykov <chertykov@gmail.com>
Backport from mainline
2011-02-22 Georg-Johann Lay <avr@gjlay.de>
@@ -605,7 +1841,7 @@
origin of assertions.
Update copyright years.
-2011-02-25 Andriy Gapon <avg@freebsd.org>
+2011-02-25 Andriy Gapon <avg@freebsd.org>
PR target/45808
* config/freebsd-spec.h (FBSD_LIB_SPEC): Handle the shared case.
@@ -1304,7 +2540,7 @@
Backport from mainline
2010-12-06 Jakub Jelinek <jakub@redhat.com>
-
+
PR target/43897
* config/ia64/ia64.c (rtx_needs_barrier): Handle asm CLOBBER
as a store into that register.
@@ -1798,7 +3034,7 @@
debug isnsn. Skip them when searching for cc0 setter.
(set_live_p): Skip debug insns when searching for cc0 user.
-2010-10-09 Ralf Corsépius <ralf.corsepius@rtems.org>
+2010-10-09 Ralf Corsépius <ralf.corsepius@rtems.org>
* config.gcc (bfin*-rtems*): Add newlib-stdint.h.
* config.gcc (lm32*-rtems*): Add newlib-stdint.h.
@@ -1822,7 +3058,7 @@
2010-10-06 Jack Howarth <howarth@bromo.med.uc.edu>
Backport from mainline
- 2010-04-26 Jack Howarth <howarth@bromo.med.uc.edu>
+ 2010-04-26 Jack Howarth <howarth@bromo.med.uc.edu>
PR 43715
* configure.ac: Pass -g for export_sym_check on darwin.
@@ -2079,11 +3315,11 @@
insns instead. Rewrite the movement code to support moving through
several basic blocks.
-2010-09-10 Jack Howarth <howarth@bromo.med.uc.edu>
+2010-09-10 Jack Howarth <howarth@bromo.med.uc.edu>
Backport from mainline
2010-09-07 H.J. Lu <hjl.tools@gmail.com>
- Jack Howarth <howarth@bromo.med.uc.edu>
+ Jack Howarth <howarth@bromo.med.uc.edu>
PR target/36502
PR target/42313
@@ -2483,7 +3719,7 @@
Backport from mainline.
2010-07-22 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
- PR target/43698
+ PR target/43698
* config/arm/arm.md: Split arm_rev into *arm_rev and *thumb1_rev.
Set *arm_rev to be predicable.
@@ -4135,7 +5371,7 @@
* tree-tailcall.c (find_tail_calls): Verify the tail call
properly.
-2010-04-19 Ira Rosen <irar@il.ibm.com>
+2010-04-19 Ira Rosen <irar@il.ibm.com>
PR tree-optimization/43771
* tree-vect-slp.c (vect_supported_load_permutation_p): Check that
diff -rNU3 -x *.info dist/gcc/DATESTAMP dist.nbsd/gcc/DATESTAMP
--- dist/gcc/DATESTAMP Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/DATESTAMP Wed Nov 7 11:47:23 2012
@@ -1 +1 @@
-20110428
+20120702
diff -rNU3 -x *.info dist/gcc/Makefile.in dist.nbsd/gcc/Makefile.in
--- dist/gcc/Makefile.in Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/Makefile.in Wed Nov 7 11:47:25 2012
@@ -727,6 +727,7 @@
# Control whether header files are installed.
INSTALL_HEADERS=install-headers install-mkheaders
+INSTALL_HEADERS=install-headers
# Control whether Info documentation is built and installed.
BUILD_INFO = @BUILD_INFO@
@@ -766,7 +767,7 @@
# Native linker and preprocessor flags. For x-fragment overrides.
BUILD_LDFLAGS=@BUILD_LDFLAGS@
-BUILD_CPPFLAGS=$(ALL_CPPFLAGS)
+BUILD_CPPFLAGS=$(BALL_CPPFLAGS)
# Actual name to use when installing a native compiler.
GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
@@ -981,6 +982,7 @@
# puts -I options in CPPFLAGS, our include files in the srcdir will always
# win against random include files in /usr/include.
ALL_CPPFLAGS = $(INCLUDES) $(CPPFLAGS)
+BALL_CPPFLAGS = $(BINCLUDES) $(CPPFLAGS)
# This is the variable to use when using $(COMPILER).
ifneq ($(ENABLE_BUILD_WITH_CXX),yes)
@@ -1042,6 +1044,10 @@
-I$(srcdir)/../include @INCINTL@ \
$(CPPINC) $(GMPINC) $(DECNUMINC) \
$(PPLINC) $(CLOOGINC) $(LIBELFINC)
+BINCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
+ -I$(srcdir)/../include @INCINTL@ \
+ $(CPPINC) $(DECNUMINC) \
+ $(PPLINC) $(CLOOGINC) $(LIBELFINC)
.c.o:
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION)
@@ -1822,8 +1828,7 @@
$(MACHMODE_H) $(FPBIT) $(DPBIT) $(TPBIT) $(LIB2ADD) \
$(LIB2ADD_ST) $(LIB2ADDEH) $(srcdir)/emutls.c gcov-iov.h $(SFP_MACHINE)
-libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs \
- xgcc$(exeext)
+libgcc.mvars: config.status Makefile
: > tmp-libgcc.mvars
echo LIB1ASMFUNCS = '$(LIB1ASMFUNCS)' >> tmp-libgcc.mvars
echo LIB1ASMSRC = '$(LIB1ASMSRC)' >> tmp-libgcc.mvars
@@ -1880,6 +1885,7 @@
s-mlib: $(srcdir)/genmultilib Makefile
if test @enable_multilib@ = yes \
|| test -n "$(MULTILIB_OSDIRNAMES)"; then \
+ CONFIG_SHELL="$(SHELL)" \
$(SHELL) $(srcdir)/genmultilib \
"$(MULTILIB_OPTIONS)" \
"$(MULTILIB_DIRNAMES)" \
@@ -3820,6 +3826,12 @@
# s-* so that mostlyclean does not force the include directory to
# be rebuilt.
+unwind.h: $(UNWIND_H)
+ -if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi
+ rm -f include/unwind.h
+ cp $(UNWIND_H) include/unwind.h
+ chmod a+r include/unwind.h
+
# Build the include directories.
stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) $(UNWIND_H) fixinc_list
# Copy in the headers provided with gcc.
@@ -3829,6 +3841,7 @@
# The touch command is here to workaround an AIX/Linux NFS bug.
-if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi
-if [ -d include-fixed ] ; then true; else mkdir include-fixed; chmod a+rx include-fixed; fi
+ if false; then \
for file in .. $(USER_H); do \
if [ X$$file != X.. ]; then \
realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
@@ -3837,11 +3850,13 @@
cp $$file include; \
chmod a+r include/$$realfile; \
fi; \
- done
+ done; \
+ fi
rm -f include/unwind.h
cp $(UNWIND_H) include/unwind.h
chmod a+r include/unwind.h
- rm -f include/stdint.h
+ if false; then \
+ rm -f include/stdint.h; \
if [ $(USE_GCC_STDINT) = wrap ]; then \
rm -f include/stdint-gcc.h; \
cp $(srcdir)/ginclude/stdint-gcc.h include/stdint-gcc.h; \
@@ -3851,7 +3866,7 @@
elif [ $(USE_GCC_STDINT) = provide ]; then \
cp $(srcdir)/ginclude/stdint-gcc.h include/stdint.h; \
chmod a+r include/stdint.h; \
- fi
+ fi; \
set -e; for ml in `cat fixinc_list`; do \
sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \
multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
@@ -3866,7 +3881,8 @@
rm -f $${fix_dir}/limits.h; \
mv tmp-xlimits.h $${fix_dir}/limits.h; \
chmod a+r $${fix_dir}/limits.h; \
- done
+ done; \
+ fi
# Install the README
rm -f include-fixed/README
cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README
@@ -3926,10 +3942,11 @@
# Abort if no system headers available, unless building a crosscompiler.
# FIXME: abort unless building --without-headers would be more accurate and less ugly
stmp-fixinc: gsyslimits.h macro_list fixinc_list \
- $(build_objdir)/fixincludes/fixincl \
+ $(build_objdir)/fixincludes/fixincl$(build_exeext) \
$(build_objdir)/fixincludes/fixinc.sh
- rm -rf include-fixed; mkdir include-fixed
- -chmod a+rx include-fixed
+ if false; then \
+ rm -rf include-fixed; mkdir include-fixed; \
+ -chmod a+rx include-fixed; \
if [ -d ../prev-gcc ]; then \
cd ../prev-gcc && \
$(MAKE) real-$(INSTALL_HEADERS_DIR) DESTDIR=`pwd`/../gcc/ \
@@ -3963,6 +3980,7 @@
fi; \
chmod a+r $${fix_dir}/syslimits.h; \
done; \
+ fi; \
fi
$(STAMP) stmp-fixinc
#
@@ -4389,6 +4407,8 @@
lang.install-info
$(DESTDIR)$(infodir)/%.info: doc/%.info installdirs
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_info:
rm -f $@
if [ -f $< ]; then \
for f in $(<)*; do \
diff -rNU3 -x *.info dist/gcc/builtins.c dist.nbsd/gcc/builtins.c
--- dist/gcc/builtins.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/builtins.c Wed Nov 7 11:47:23 2012
@@ -347,7 +347,7 @@
can_trust_pointer_alignment (void)
{
/* We rely on TER to compute accurate alignment information. */
- return (optimize && flag_tree_ter);
+ return (!STRICT_ALIGNMENT && optimize && flag_tree_ter);
}
/* Return the alignment in bits of EXP, a pointer valued expression.
@@ -3896,9 +3896,9 @@
}
/* Expand expression EXP, which is a call to the memcmp built-in function.
- Return NULL_RTX if we failed and the
- caller should emit a normal call, otherwise try to get the result in
- TARGET, if convenient (and in mode MODE, if that's convenient). */
+ Return NULL_RTX if we failed and the caller should emit a normal call,
+ otherwise try to get the result in TARGET, if convenient (and in mode
+ MODE, if that's convenient). */
static rtx
expand_builtin_memcmp (tree exp, ATTRIBUTE_UNUSED rtx target,
@@ -3910,7 +3910,10 @@
POINTER_TYPE, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
return NULL_RTX;
-#if defined HAVE_cmpmemsi || defined HAVE_cmpstrnsi
+ /* Note: The cmpstrnsi pattern, if it exists, is not suitable for
+ implementing memcmp because it will stop if it encounters two
+ zero bytes. */
+#if defined HAVE_cmpmemsi
{
rtx arg1_rtx, arg2_rtx, arg3_rtx;
rtx result;
@@ -3925,16 +3928,9 @@
= get_pointer_alignment (arg2, BIGGEST_ALIGNMENT) / BITS_PER_UNIT;
enum machine_mode insn_mode;
-#ifdef HAVE_cmpmemsi
if (HAVE_cmpmemsi)
insn_mode = insn_data[(int) CODE_FOR_cmpmemsi].operand[0].mode;
else
-#endif
-#ifdef HAVE_cmpstrnsi
- if (HAVE_cmpstrnsi)
- insn_mode = insn_data[(int) CODE_FOR_cmpstrnsi].operand[0].mode;
- else
-#endif
return NULL_RTX;
/* If we don't have POINTER_TYPE, call the function. */
@@ -3959,18 +3955,10 @@
set_mem_size (arg2_rtx, arg3_rtx);
}
-#ifdef HAVE_cmpmemsi
if (HAVE_cmpmemsi)
insn = gen_cmpmemsi (result, arg1_rtx, arg2_rtx, arg3_rtx,
GEN_INT (MIN (arg1_align, arg2_align)));
else
-#endif
-#ifdef HAVE_cmpstrnsi
- if (HAVE_cmpstrnsi)
- insn = gen_cmpstrnsi (result, arg1_rtx, arg2_rtx, arg3_rtx,
- GEN_INT (MIN (arg1_align, arg2_align)));
- else
-#endif
gcc_unreachable ();
if (insn)
@@ -3996,7 +3984,7 @@
else
return convert_to_mode (mode, result, 0);
}
-#endif
+#endif /* HAVE_cmpmemsi. */
return NULL_RTX;
}
diff -rNU3 -x *.info dist/gcc/c-common.c dist.nbsd/gcc/c-common.c
--- dist/gcc/c-common.c Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/c-common.c Wed Nov 7 11:47:23 2012
@@ -4031,14 +4031,15 @@
/* Distribute the conversion into the arms of a COND_EXPR. */
if (c_dialect_cxx ())
{
+ tree op1 = TREE_OPERAND (expr, 1);
+ tree op2 = TREE_OPERAND (expr, 2);
+ /* In C++ one of the arms might have void type if it is throw. */
+ if (!VOID_TYPE_P (TREE_TYPE (op1)))
+ op1 = c_common_truthvalue_conversion (location, op1);
+ if (!VOID_TYPE_P (TREE_TYPE (op2)))
+ op2 = c_common_truthvalue_conversion (location, op2);
expr = fold_build3_loc (location, COND_EXPR, truthvalue_type_node,
- TREE_OPERAND (expr, 0),
- c_common_truthvalue_conversion (location,
- TREE_OPERAND (expr,
- 1)),
- c_common_truthvalue_conversion (location,
- TREE_OPERAND (expr,
- 2)));
+ TREE_OPERAND (expr, 0), op1, op2);
goto ret;
}
else
diff -rNU3 -x *.info dist/gcc/c-decl.c dist.nbsd/gcc/c-decl.c
--- dist/gcc/c-decl.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/c-decl.c Wed Nov 7 11:47:42 2012
@@ -3909,7 +3909,7 @@
return 0;
if (expr)
- add_stmt (expr);
+ add_stmt (fold_convert (void_type_node, expr));
if (TREE_CODE (decl) != FUNCTION_DECL && MAIN_NAME_P (DECL_NAME (decl)))
warning (OPT_Wmain, "%q+D is usually a function", decl);
@@ -7385,7 +7385,8 @@
/* If the declarator is not suitable for a function definition,
cause a syntax error. */
- if (decl1 == 0)
+ if (decl1 == 0
+ || TREE_CODE (decl1) != FUNCTION_DECL)
return 0;
loc = DECL_SOURCE_LOCATION (decl1);
diff -rNU3 -x *.info dist/gcc/c-lex.c dist.nbsd/gcc/c-lex.c
--- dist/gcc/c-lex.c Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/c-lex.c Wed Nov 7 11:47:25 2012
@@ -718,22 +718,25 @@
outside the range of representable values of its type. Since we
have __builtin_inf* to produce an infinity, this is now a
mandatory pedwarn if the target does not support infinities. */
- if (REAL_VALUE_ISINF (real)
- || (const_type != type && REAL_VALUE_ISINF (real_trunc)))
+ if (warn_overflow)
{
- if (!MODE_HAS_INFINITIES (TYPE_MODE (type)))
- pedwarn (input_location, 0, "floating constant exceeds range of %qT", type);
- else
- warning (OPT_Woverflow, "floating constant exceeds range of %qT", type);
- }
- /* We also give a warning if the value underflows. */
- else if (REAL_VALUES_EQUAL (real, dconst0)
- || (const_type != type && REAL_VALUES_EQUAL (real_trunc, dconst0)))
- {
- REAL_VALUE_TYPE realvoidmode;
- int overflow = real_from_string (&realvoidmode, copy);
- if (overflow < 0 || !REAL_VALUES_EQUAL (realvoidmode, dconst0))
- warning (OPT_Woverflow, "floating constant truncated to zero");
+ if (REAL_VALUE_ISINF (real)
+ || (const_type != type && REAL_VALUE_ISINF (real_trunc)))
+ {
+ if (!MODE_HAS_INFINITIES (TYPE_MODE (type)))
+ pedwarn (input_location, 0, "floating constant exceeds range of %qT", type);
+ else
+ warning (OPT_Woverflow, "floating constant exceeds range of %qT", type);
+ }
+ /* We also give a warning if the value underflows. */
+ else if (REAL_VALUES_EQUAL (real, dconst0)
+ || (const_type != type && REAL_VALUES_EQUAL (real_trunc, dconst0)))
+ {
+ REAL_VALUE_TYPE realvoidmode;
+ int overflow = real_from_string (&realvoidmode, copy);
+ if (overflow < 0 || !REAL_VALUES_EQUAL (realvoidmode, dconst0))
+ warning (OPT_Woverflow, "floating constant truncated to zero");
+ }
}
/* Create a node with determined type and value. */
diff -rNU3 -x *.info dist/gcc/c-opts.c dist.nbsd/gcc/c-opts.c
--- dist/gcc/c-opts.c Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/c-opts.c Wed Nov 7 11:47:23 2012
@@ -160,12 +160,14 @@
error ("macro name missing after %qs", opt);
break;
+ case OPT_cxx_isystem:
case OPT_F:
case OPT_I:
case OPT_idirafter:
case OPT_isysroot:
case OPT_isystem:
case OPT_iquote:
+ case OPT_iremap:
error ("missing path after %qs", opt);
break;
@@ -564,6 +566,10 @@
set_std_cxx98 (true);
break;
+ case OPT_cxx_isystem:
+ add_path (xstrdup (arg), SYSTEM, 1, true);
+ break;
+
case OPT_d:
handle_OPT_d (arg);
break;
@@ -877,6 +883,10 @@
case OPT_isystem:
add_path (xstrdup (arg), SYSTEM, 0, true);
+ break;
+
+ case OPT_iremap:
+ add_cpp_remap_path (arg);
break;
case OPT_iwithprefix:
diff -rNU3 -x *.info dist/gcc/c-typeck.c dist.nbsd/gcc/c-typeck.c
--- dist/gcc/c-typeck.c Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/c-typeck.c Wed Nov 7 11:47:23 2012
@@ -4219,6 +4219,11 @@
ret = fold_build3_loc (colon_loc, COND_EXPR, result_type, ifexp, op1, op2);
else
{
+ if (int_operands)
+ {
+ op1 = remove_c_maybe_const_expr (op1);
+ op2 = remove_c_maybe_const_expr (op2);
+ }
ret = build3 (COND_EXPR, result_type, ifexp, op1, op2);
if (int_operands)
ret = note_integer_operands (ret);
@@ -9655,6 +9660,7 @@
{
case MULT_EXPR:
case TRUNC_DIV_EXPR:
+ op1 = c_save_expr (op1);
imag = build2 (resultcode, real_type, imag, op1);
/* Fall through. */
case PLUS_EXPR:
@@ -9675,6 +9681,7 @@
switch (code)
{
case MULT_EXPR:
+ op0 = c_save_expr (op0);
imag = build2 (resultcode, real_type, op0, imag);
/* Fall through. */
case PLUS_EXPR:
@@ -9800,7 +9807,7 @@
warn_for_sign_compare (location, orig_op0_folded,
orig_op1_folded, op0, op1,
result_type, resultcode);
- if (!in_late_binary_op)
+ if (!in_late_binary_op && !int_operands)
{
if (!op0_maybe_const || TREE_CODE (op0) != INTEGER_CST)
op0 = c_wrap_maybe_const (op0, !op0_maybe_const);
diff -rNU3 -x *.info dist/gcc/c.opt dist.nbsd/gcc/c.opt
--- dist/gcc/c.opt Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/c.opt Wed Nov 7 11:47:42 2012
@@ -520,6 +520,12 @@
C ObjC C++ ObjC++
A synonym for -std=c89 (for C) or -std=c++98 (for C++)
+; This should really just be C++/ObjC++ but we (NetBSD) use it when
+; calling C and ObjC compilers as well.
+cxx-isystem
+C ObjC C++ ObjC++ Joined Separate
+-cxx-isystem <dir> Add <dir> to the start of the C++ system include path
+
d
C ObjC C++ ObjC++ Joined
; Documented in common.opt. FIXME - what about -dI, -dD, -dN and -dD?
@@ -903,6 +909,10 @@
iquote
C ObjC C++ ObjC++ Joined Separate
-iquote <dir> Add <dir> to the end of the quote include path
+
+iremap
+C ObjC C++ ObjC++ Joined Separate
+-iremap <src:dst> Convert <src> to <dst> if it occurs as prefix in __FILE__.
iwithprefix
C ObjC C++ ObjC++ Joined Separate
diff -rNU3 -x *.info dist/gcc/caller-save.c dist.nbsd/gcc/caller-save.c
--- dist/gcc/caller-save.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/caller-save.c Wed Nov 7 11:47:25 2012
@@ -439,101 +439,93 @@
void
setup_save_areas (void)
{
- int i, j, k;
- unsigned int r;
+ int i, j, k, freq;
HARD_REG_SET hard_regs_used;
+ struct saved_hard_reg *saved_reg;
+ rtx insn;
+ struct insn_chain *chain, *next;
+ unsigned int regno;
+ HARD_REG_SET hard_regs_to_save, used_regs, this_insn_sets;
+ reg_set_iterator rsi;
- /* Allocate space in the save area for the largest multi-register
- pseudos first, then work backwards to single register
- pseudos. */
-
- /* Find and record all call-used hard-registers in this function. */
CLEAR_HARD_REG_SET (hard_regs_used);
- for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++)
- if (reg_renumber[i] >= 0 && REG_N_CALLS_CROSSED (i) > 0)
- {
- unsigned int regno = reg_renumber[i];
- unsigned int endregno
- = end_hard_regno (GET_MODE (regno_reg_rtx[i]), regno);
- for (r = regno; r < endregno; r++)
- if (call_used_regs[r])
- SET_HARD_REG_BIT (hard_regs_used, r);
- }
- if (optimize && flag_ira_share_save_slots)
+ /* Find every CALL_INSN and record which hard regs are live across the
+ call into HARD_REG_MAP and HARD_REGS_USED. */
+ initiate_saved_hard_regs ();
+ /* Create hard reg saved regs. */
+ for (chain = reload_insn_chain; chain != 0; chain = next)
{
- rtx insn, slot;
- struct insn_chain *chain, *next;
- char *saved_reg_conflicts;
- unsigned int regno;
- int next_k, freq;
- struct saved_hard_reg *saved_reg, *saved_reg2, *saved_reg3;
- int call_saved_regs_num;
- struct saved_hard_reg *call_saved_regs[FIRST_PSEUDO_REGISTER];
- HARD_REG_SET hard_regs_to_save, used_regs, this_insn_sets;
- reg_set_iterator rsi;
- int best_slot_num;
- int prev_save_slots_num;
- rtx prev_save_slots[FIRST_PSEUDO_REGISTER];
+ insn = chain->insn;
+ next = chain->next;
+ if (!CALL_P (insn)
+ || find_reg_note (insn, REG_NORETURN, NULL))
+ continue;
+ freq = REG_FREQ_FROM_BB (BLOCK_FOR_INSN (insn));
+ REG_SET_TO_HARD_REG_SET (hard_regs_to_save,
+ &chain->live_throughout);
+ COPY_HARD_REG_SET (used_regs, call_used_reg_set);
- initiate_saved_hard_regs ();
- /* Create hard reg saved regs. */
- for (chain = reload_insn_chain; chain != 0; chain = next)
+ /* Record all registers set in this call insn. These don't
+ need to be saved. N.B. the call insn might set a subreg
+ of a multi-hard-reg pseudo; then the pseudo is considered
+ live during the call, but the subreg that is set
+ isn't. */
+ CLEAR_HARD_REG_SET (this_insn_sets);
+ note_stores (PATTERN (insn), mark_set_regs, &this_insn_sets);
+ /* Sibcalls are considered to set the return value. */
+ if (SIBLING_CALL_P (insn) && crtl->return_rtx)
+ mark_set_regs (crtl->return_rtx, NULL_RTX, &this_insn_sets);
+
+ AND_COMPL_HARD_REG_SET (used_regs, call_fixed_reg_set);
+ AND_COMPL_HARD_REG_SET (used_regs, this_insn_sets);
+ AND_HARD_REG_SET (hard_regs_to_save, used_regs);
+ for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
+ if (TEST_HARD_REG_BIT (hard_regs_to_save, regno))
+ {
+ if (hard_reg_map[regno] != NULL)
+ hard_reg_map[regno]->call_freq += freq;
+ else
+ saved_reg = new_saved_hard_reg (regno, freq);
+ SET_HARD_REG_BIT (hard_regs_used, regno);
+ }
+ /* Look through all live pseudos, mark their hard registers. */
+ EXECUTE_IF_SET_IN_REG_SET
+ (&chain->live_throughout, FIRST_PSEUDO_REGISTER, regno, rsi)
{
- insn = chain->insn;
- next = chain->next;
- if (!CALL_P (insn)
- || find_reg_note (insn, REG_NORETURN, NULL))
+ int r = reg_renumber[regno];
+ int bound;
+
+ if (r < 0)
continue;
- freq = REG_FREQ_FROM_BB (BLOCK_FOR_INSN (insn));
- REG_SET_TO_HARD_REG_SET (hard_regs_to_save,
- &chain->live_throughout);
- COPY_HARD_REG_SET (used_regs, call_used_reg_set);
- /* Record all registers set in this call insn. These don't
- need to be saved. N.B. the call insn might set a subreg
- of a multi-hard-reg pseudo; then the pseudo is considered
- live during the call, but the subreg that is set
- isn't. */
- CLEAR_HARD_REG_SET (this_insn_sets);
- note_stores (PATTERN (insn), mark_set_regs, &this_insn_sets);
- /* Sibcalls are considered to set the return value. */
- if (SIBLING_CALL_P (insn) && crtl->return_rtx)
- mark_set_regs (crtl->return_rtx, NULL_RTX, &this_insn_sets);
-
- AND_COMPL_HARD_REG_SET (used_regs, call_fixed_reg_set);
- AND_COMPL_HARD_REG_SET (used_regs, this_insn_sets);
- AND_HARD_REG_SET (hard_regs_to_save, used_regs);
- for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
- if (TEST_HARD_REG_BIT (hard_regs_to_save, regno))
+ bound = r + hard_regno_nregs[r][PSEUDO_REGNO_MODE (regno)];
+ for (; r < bound; r++)
+ if (TEST_HARD_REG_BIT (used_regs, r))
{
- if (hard_reg_map[regno] != NULL)
- hard_reg_map[regno]->call_freq += freq;
+ if (hard_reg_map[r] != NULL)
+ hard_reg_map[r]->call_freq += freq;
else
- saved_reg = new_saved_hard_reg (regno, freq);
+ saved_reg = new_saved_hard_reg (r, freq);
+ SET_HARD_REG_BIT (hard_regs_to_save, r);
+ SET_HARD_REG_BIT (hard_regs_used, r);
}
- /* Look through all live pseudos, mark their hard registers. */
- EXECUTE_IF_SET_IN_REG_SET
- (&chain->live_throughout, FIRST_PSEUDO_REGISTER, regno, rsi)
- {
- int r = reg_renumber[regno];
- int bound;
+ }
+ }
- if (r < 0)
- continue;
+ /* If requested, figure out which hard regs can share save slots. */
+ if (optimize && flag_ira_share_save_slots)
+ {
+ rtx slot;
+ char *saved_reg_conflicts;
+ int next_k;
+ struct saved_hard_reg *saved_reg2, *saved_reg3;
+ int call_saved_regs_num;
+ struct saved_hard_reg *call_saved_regs[FIRST_PSEUDO_REGISTER];
+ int best_slot_num;
+ int prev_save_slots_num;
+ rtx prev_save_slots[FIRST_PSEUDO_REGISTER];
- bound = r + hard_regno_nregs[r][PSEUDO_REGNO_MODE (regno)];
- for (; r < bound; r++)
- if (TEST_HARD_REG_BIT (used_regs, r))
- {
- if (hard_reg_map[r] != NULL)
- hard_reg_map[r]->call_freq += freq;
- else
- saved_reg = new_saved_hard_reg (r, freq);
- SET_HARD_REG_BIT (hard_regs_to_save, r);
- }
- }
- }
/* Find saved hard register conflicts. */
saved_reg_conflicts = (char *) xmalloc (saved_regs_num * saved_regs_num);
memset (saved_reg_conflicts, 0, saved_regs_num * saved_regs_num);
@@ -691,8 +683,10 @@
}
else
{
- /* Now run through all the call-used hard-registers and allocate
- space for them in the caller-save area. Try to allocate space
+ /* We are not sharing slots.
+
+ Run through all the call-used hard-registers and allocate
+ space for each in the caller-save area. Try to allocate space
in a manner which allows multi-register saves/restores to be done. */
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
diff -rNU3 -x *.info dist/gcc/cfgexpand.c dist.nbsd/gcc/cfgexpand.c
--- dist/gcc/cfgexpand.c Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/cfgexpand.c Wed Nov 7 11:47:23 2012
@@ -1080,7 +1080,9 @@
else
len = tree_low_cst (TYPE_SIZE_UNIT (type), 1);
- if (len < max)
+ if (len == 0)
+ ret = SPCT_HAS_ARRAY;
+ else if (len < max)
ret = SPCT_HAS_SMALL_CHAR_ARRAY | SPCT_HAS_ARRAY;
else
ret = SPCT_HAS_LARGE_CHAR_ARRAY | SPCT_HAS_ARRAY;
@@ -2974,7 +2976,7 @@
gcc_assert (part >= 0 && (unsigned)part < SA.map->num_partitions);
- op0 = SA.partition_to_pseudo[part];
+ op0 = copy_rtx (SA.partition_to_pseudo[part]);
}
goto adjust_mode;
}
diff -rNU3 -x *.info dist/gcc/cfgrtl.c dist.nbsd/gcc/cfgrtl.c
--- dist/gcc/cfgrtl.c Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/cfgrtl.c Wed Nov 7 11:47:25 2012
@@ -1116,6 +1116,7 @@
rtx note;
edge new_edge;
int abnormal_edge_flags = 0;
+ bool asm_goto_edge = false;
int loc;
/* In the case the last instruction is conditional jump to the next
@@ -1195,8 +1196,28 @@
}
}
- if (EDGE_COUNT (e->src->succs) >= 2 || abnormal_edge_flags)
+ /* If e->src ends with asm goto, see if any of the ASM_OPERANDS_LABELs
+ don't point to target label. */
+ if (JUMP_P (BB_END (e->src))
+ && target != EXIT_BLOCK_PTR
+ && e->dest == target
+ && (e->flags & EDGE_FALLTHRU)
+ && (note = extract_asm_operands (PATTERN (BB_END (e->src)))))
{
+ int i, n = ASM_OPERANDS_LABEL_LENGTH (note);
+
+ for (i = 0; i < n; ++i)
+ if (XEXP (ASM_OPERANDS_LABEL (note, i), 0) == BB_HEAD (target))
+ {
+ asm_goto_edge = true;
+ break;
+ }
+ }
+
+ if (EDGE_COUNT (e->src->succs) >= 2 || abnormal_edge_flags || asm_goto_edge)
+ {
+ gcov_type count = e->count;
+ int probability = e->probability;
/* Create the new structures. */
/* If the old block ended with a tablejump, skip its table
@@ -1207,7 +1228,7 @@
note = NEXT_INSN (note);
jump_block = create_basic_block (note, NULL, e->src);
- jump_block->count = e->count;
+ jump_block->count = count;
jump_block->frequency = EDGE_FREQUENCY (e);
jump_block->loop_depth = target->loop_depth;
@@ -1223,13 +1244,27 @@
/* Wire edge in. */
new_edge = make_edge (e->src, jump_block, EDGE_FALLTHRU);
- new_edge->probability = e->probability;
- new_edge->count = e->count;
+ new_edge->probability = probability;
+ new_edge->count = count;
/* Redirect old edge. */
redirect_edge_pred (e, jump_block);
e->probability = REG_BR_PROB_BASE;
+ /* If asm goto has any label refs to target's label,
+ add also edge from asm goto bb to target. */
+ if (asm_goto_edge)
+ {
+ new_edge->probability /= 2;
+ new_edge->count /= 2;
+ jump_block->count /= 2;
+ jump_block->frequency /= 2;
+ new_edge = make_edge (new_edge->src, target,
+ e->flags & ~EDGE_FALLTHRU);
+ new_edge->probability = probability - probability / 2;
+ new_edge->count = count - count / 2;
+ }
+
new_bb = jump_block;
}
else
@@ -1640,9 +1675,10 @@
putc ('\n', outf);
}
- for (insn = BB_HEAD (bb), last = NEXT_INSN (BB_END (bb)); insn != last;
- insn = NEXT_INSN (insn))
- print_rtl_single (outf, insn);
+ if (bb->index != ENTRY_BLOCK && bb->index != EXIT_BLOCK)
+ for (insn = BB_HEAD (bb), last = NEXT_INSN (BB_END (bb)); insn != last;
+ insn = NEXT_INSN (insn))
+ print_rtl_single (outf, insn);
if (df)
{
@@ -2754,6 +2790,11 @@
rtx first = BB_END (a), last;
last = emit_insn_after_noloc (b->il.rtl->header, BB_END (a), a);
+ /* The above might add a BARRIER as BB_END, but as barriers
+ aren't valid parts of a bb, remove_insn doesn't update
+ BB_END if it is a barrier. So adjust BB_END here. */
+ while (BB_END (a) != first && BARRIER_P (BB_END (a)))
+ BB_END (a) = PREV_INSN (BB_END (a));
delete_insn_chain (NEXT_INSN (first), last, false);
b->il.rtl->header = NULL;
}
diff -rNU3 -x *.info dist/gcc/combine.c dist.nbsd/gcc/combine.c
--- dist/gcc/combine.c Wed Nov 7 13:40:06 2012
+++ dist.nbsd/gcc/combine.c Wed Nov 7 11:47:23 2012
@@ -5298,7 +5298,7 @@
{
/* Try to simplify the expression further. */
rtx tor = simplify_gen_binary (IOR, mode, XEXP (x, 0), XEXP (x, 1));
- temp = combine_simplify_rtx (tor, mode, in_dest);
+ temp = combine_simplify_rtx (tor, VOIDmode, in_dest);
/* If we could, great. If not, do not go ahead with the IOR
replacement, since PLUS appears in many special purpose
diff -rNU3 -x *.info dist/gcc/config/alpha/alpha.c dist.nbsd/gcc/config/alpha/alpha.c
--- dist/gcc/config/alpha/alpha.c Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/alpha/alpha.c Wed Nov 7 11:47:23 2012
@@ -2464,7 +2464,7 @@
{
case EQ: case LE: case LT: case LEU: case LTU:
case UNORDERED:
- /* We have these compares: */
+ /* We have these compares. */
cmp_code = code, branch_code = NE;
break;
@@ -2701,13 +2701,15 @@
switch (code)
{
case EQ: case LE: case LT: case LEU: case LTU:
+ case UNORDERED:
/* We have these compares. */
cmp_code = code, code = NE;
break;
case NE:
- /* This must be reversed. */
- cmp_code = EQ, code = EQ;
+ case ORDERED:
+ /* These must be reversed. */
+ cmp_code = reverse_condition (code), code = EQ;
break;
case GE: case GT: case GEU: case GTU:
@@ -2727,6 +2729,14 @@
gcc_unreachable ();
}
+ if (cmp_mode == DImode)
+ {
+ if (!reg_or_0_operand (op0, DImode))
+ op0 = force_reg (DImode, op0);
+ if (!reg_or_8bit_operand (op1, DImode))
+ op1 = force_reg (DImode, op1);
+ }
+
tem = gen_reg_rtx (cmp_mode);
emit_insn (gen_rtx_SET (VOIDmode, tem,
gen_rtx_fmt_ee (cmp_code, cmp_mode,
@@ -2738,6 +2748,14 @@
local_fast_math = 1;
}
+ if (cmp_mode == DImode)
+ {
+ if (!reg_or_0_operand (op0, DImode))
+ op0 = force_reg (DImode, op0);
+ if (!reg_or_8bit_operand (op1, DImode))
+ op1 = force_reg (DImode, op1);
+ }
+
/* We may be able to use a conditional move directly.
This avoids emitting spurious compares. */
if (signed_comparison_operator (cmp, VOIDmode)
@@ -2756,11 +2774,13 @@
switch (code)
{
case EQ: case LE: case LT: case LEU: case LTU:
+ case UNORDERED:
/* We have these compares: */
break;
case NE:
- /* This must be reversed. */
+ case ORDERED:
+ /* These must be reversed. */
code = reverse_condition (code);
cmov_code = EQ;
break;
@@ -4915,6 +4935,13 @@
return m;
}
+static void
+alpha_instantiate_decls (void)
+{
+ if (cfun->machine->gp_save_rtx != NULL_RTX)
+ instantiate_decl_rtl (cfun->machine->gp_save_rtx);
+}
+
static int
alpha_ra_ever_killed (void)
{
@@ -11124,6 +11151,9 @@
#define TARGET_ARG_PARTIAL_BYTES alpha_arg_partial_bytes
#undef TARGET_TRAMPOLINE_INIT
#define TARGET_TRAMPOLINE_INIT alpha_trampoline_init
+
+#undef TARGET_INSTANTIATE_DECLS
+#define TARGET_INSTANTIATE_DECLS alpha_instantiate_decls
#undef TARGET_SECONDARY_RELOAD
#define TARGET_SECONDARY_RELOAD alpha_secondary_reload
diff -rNU3 -x *.info dist/gcc/config/alpha/elf.h dist.nbsd/gcc/config/alpha/elf.h
--- dist/gcc/config/alpha/elf.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/alpha/elf.h Wed Nov 7 11:47:24 2012
@@ -440,7 +440,7 @@
As of Jan 2002, only glibc 2.2.4 can actually make use of this, but
I imagine that other systems will catch up. In the meantime, it
doesn't harm to make sure that the data exists to be used later. */
-#if defined(HAVE_LD_EH_FRAME_HDR)
+#if defined(HAVE_LD_EH_FRAME_HDR) && !defined(LINK_EH_SPEC)
#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
#endif
diff -rNU3 -x *.info dist/gcc/config/alpha/linux-unwind.h dist.nbsd/gcc/config/alpha/linux-unwind.h
--- dist/gcc/config/alpha/linux-unwind.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/alpha/linux-unwind.h Wed Nov 7 11:47:23 2012
@@ -1,5 +1,5 @@
/* DWARF2 EH unwinding support for Alpha Linux.
- Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2009, 2011, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -36,25 +36,27 @@
{
unsigned int *pc = context->ra;
struct sigcontext *sc;
- long new_cfa, i;
+ long new_cfa;
+ int i;
if (pc[0] != 0x47fe0410 /* mov $30,$16 */
- || pc[2] != 0x00000083 /* callsys */)
+ || pc[2] != 0x00000083) /* callsys */
return _URC_END_OF_STACK;
if (context->cfa == 0)
return _URC_END_OF_STACK;
if (pc[1] == 0x201f0067) /* lda $0,NR_sigreturn */
sc = context->cfa;
- else if (pc[1] == 0x201f015f) /* lda $0,NR_rt_sigreturn */
+ else if (pc[1] == 0x201f015f) /* lda $0,NR_rt_sigreturn */
{
struct rt_sigframe {
- struct siginfo info;
+ siginfo_t info;
struct ucontext uc;
} *rt_ = context->cfa;
sc = &rt_->uc.uc_mcontext;
}
else
return _URC_END_OF_STACK;
+
new_cfa = sc->sc_regs[30];
fs->regs.cfa_how = CFA_REG_OFFSET;
fs->regs.cfa_reg = 30;
@@ -63,16 +65,35 @@
{
fs->regs.reg[i].how = REG_SAVED_OFFSET;
fs->regs.reg[i].loc.offset
- = (long)&sc->sc_regs[i] - new_cfa;
+ = (long) &sc->sc_regs[i] - new_cfa;
}
for (i = 0; i < 31; ++i)
{
fs->regs.reg[i+32].how = REG_SAVED_OFFSET;
fs->regs.reg[i+32].loc.offset
- = (long)&sc->sc_fpregs[i] - new_cfa;
+ = (long) &sc->sc_fpregs[i] - new_cfa;
}
fs->regs.reg[64].how = REG_SAVED_OFFSET;
fs->regs.reg[64].loc.offset = (long)&sc->sc_pc - new_cfa;
fs->retaddr_column = 64;
+ fs->signal_frame = 1;
+
return _URC_NO_REASON;
+}
+
+#define MD_FROB_UPDATE_CONTEXT alpha_frob_update_context
+
+/* Fix up for signal handlers that don't have S flag set. */
+
+static void
+alpha_frob_update_context (struct _Unwind_Context *context,
+ _Unwind_FrameState *fs ATTRIBUTE_UNUSED)
+{
+ unsigned int *pc = context->ra;
+
+ if (pc[0] == 0x47fe0410 /* mov $30,$16 */
+ && pc[2] == 0x00000083 /* callsys */
+ && (pc[1] == 0x201f0067 /* lda $0,NR_sigreturn */
+ || pc[1] == 0x201f015f)) /* lda $0,NR_rt_sigreturn */
+ _Unwind_SetSignalFrame (context, 1);
}
diff -rNU3 -x *.info dist/gcc/config/arm/arm.c dist.nbsd/gcc/config/arm/arm.c
--- dist/gcc/config/arm/arm.c Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/arm/arm.c Wed Nov 7 11:47:25 2012
@@ -3339,6 +3339,10 @@
add_libcall (libcall_htab,
convert_optab_libfunc (trunc_optab, HFmode, SFmode));
add_libcall (libcall_htab,
+ convert_optab_libfunc (sfix_optab, SImode, DFmode));
+ add_libcall (libcall_htab,
+ convert_optab_libfunc (ufix_optab, SImode, DFmode));
+ add_libcall (libcall_htab,
convert_optab_libfunc (sfix_optab, DImode, DFmode));
add_libcall (libcall_htab,
convert_optab_libfunc (ufix_optab, DImode, DFmode));
@@ -3346,6 +3350,28 @@
convert_optab_libfunc (sfix_optab, DImode, SFmode));
add_libcall (libcall_htab,
convert_optab_libfunc (ufix_optab, DImode, SFmode));
+
+ /* Values from double-precision helper functions are returned in core
+ registers if the selected core only supports single-precision
+ arithmetic, even if we are using the hard-float ABI. The same is
+ true for single-precision helpers, but we will never be using the
+ hard-float ABI on a CPU which doesn't support single-precision
+ operations in hardware. */
+ add_libcall (libcall_htab, optab_libfunc (add_optab, DFmode));
+ add_libcall (libcall_htab, optab_libfunc (sdiv_optab, DFmode));
+ add_libcall (libcall_htab, optab_libfunc (smul_optab, DFmode));
+ add_libcall (libcall_htab, optab_libfunc (neg_optab, DFmode));
+ add_libcall (libcall_htab, optab_libfunc (sub_optab, DFmode));
+ add_libcall (libcall_htab, optab_libfunc (eq_optab, DFmode));
+ add_libcall (libcall_htab, optab_libfunc (lt_optab, DFmode));
+ add_libcall (libcall_htab, optab_libfunc (le_optab, DFmode));
+ add_libcall (libcall_htab, optab_libfunc (ge_optab, DFmode));
+ add_libcall (libcall_htab, optab_libfunc (gt_optab, DFmode));
+ add_libcall (libcall_htab, optab_libfunc (unord_optab, DFmode));
+ add_libcall (libcall_htab, convert_optab_libfunc (sext_optab, DFmode,
+ SFmode));
+ add_libcall (libcall_htab, convert_optab_libfunc (trunc_optab, SFmode,
+ DFmode));
}
return libcall && htab_find (libcall_htab, libcall) != NULL;
@@ -18237,7 +18263,7 @@
rtx tmp1 = gen_reg_rtx (mode);
rtx tmp2 = gen_reg_rtx (mode);
- emit_insn (intfn (tmp1, op1, tmp2, op2));
+ emit_insn (intfn (tmp1, op1, op2, tmp2));
emit_move_insn (mem, tmp1);
mem = adjust_address (mem, mode, GET_MODE_SIZE (mode));
diff -rNU3 -x *.info dist/gcc/config/arm/arm.h dist.nbsd/gcc/config/arm/arm.h
--- dist/gcc/config/arm/arm.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/arm/arm.h Wed Nov 7 11:47:25 2012
@@ -2111,7 +2111,7 @@
(GET_CODE (X) == REG && ARM_REG_OK_FOR_INDEX_P (X))
/* Define this for compatibility reasons. */
-#define HANDLE_PRAGMA_PACK_PUSH_POP
+#define HANDLE_PRAGMA_PACK_PUSH_POP 1
/* Specify the machine mode that this machine uses
for the index in the tablejump instruction. */
diff -rNU3 -x *.info dist/gcc/config/arm/arm.md dist.nbsd/gcc/config/arm/arm.md
--- dist/gcc/config/arm/arm.md Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/arm/arm.md Wed Nov 7 11:47:25 2012
@@ -3134,7 +3134,7 @@
bool need_else;
if (which_alternative != 0 || operands[3] != const0_rtx
- || (code != PLUS && code != MINUS && code != IOR && code != XOR))
+ || (code != PLUS && code != IOR && code != XOR))
need_else = true;
else
need_else = false;
@@ -7994,7 +7994,7 @@
(not:SI (match_operator:SI 1 "arm_comparison_operator"
[(match_operand 2 "cc_register" "") (const_int 0)])))]
"TARGET_ARM"
- "mov%D1\\t%0, #0\;mvn%d1\\t%0, #1"
+ "mvn%D1\\t%0, #0\;mvn%d1\\t%0, #1"
[(set_attr "conds" "use")
(set_attr "length" "8")]
)
diff -rNU3 -x *.info dist/gcc/config/arm/bpabi-netbsd.c dist.nbsd/gcc/config/arm/bpabi-netbsd.c
--- dist/gcc/config/arm/bpabi-netbsd.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/config/arm/bpabi-netbsd.c Wed Nov 7 11:47:25 2012
@@ -0,0 +1 @@
+#include "bpabi.c"
diff -rNU3 -x *.info dist/gcc/config/arm/bpabi.h dist.nbsd/gcc/config/arm/bpabi.h
--- dist/gcc/config/arm/bpabi.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/arm/bpabi.h Wed Nov 7 11:47:25 2012
@@ -20,13 +20,16 @@
<http://www.gnu.org/licenses/>. */
/* Use the AAPCS ABI by default. */
+#undef ARM_DEFAULT_ABI
#define ARM_DEFAULT_ABI ARM_ABI_AAPCS
/* Assume that AAPCS ABIs should adhere to the full BPABI. */
+#undef TARGET_BPABI
#define TARGET_BPABI (TARGET_AAPCS_BASED)
/* BPABI targets use EABI frame unwinding tables. */
+#undef MUST_USE_SJLJ_EXCEPTIONS
#define TARGET_UNWIND_INFO 1
/* Section 4.1 of the AAPCS requires the use of VFP format. */
#undef FPUTYPE_DEFAULT
@@ -72,17 +77,10 @@
#undef LINK_SPEC
#define LINK_SPEC BPABI_LINK_SPEC
-#if defined (__thumb__)
-#define RENAME_LIBRARY_SET ".thumb_set"
-#else
-#define RENAME_LIBRARY_SET ".set"
-#endif
-
/* Make __aeabi_AEABI_NAME an alias for __GCC_NAME. */
#define RENAME_LIBRARY(GCC_NAME, AEABI_NAME) \
- __asm__ (".globl\t__aeabi_" #AEABI_NAME "\n" \
- RENAME_LIBRARY_SET "\t__aeabi_" #AEABI_NAME \
- ", __" #GCC_NAME "\n");
+ typeof (__##GCC_NAME) __aeabi_##AEABI_NAME \
+ __attribute__((alias ("__" #GCC_NAME)));
/* Give some libgcc functions an additional __aeabi name. */
#ifdef L_muldi3
diff -rNU3 -x *.info dist/gcc/config/arm/elf.h dist.nbsd/gcc/config/arm/elf.h
--- dist/gcc/config/arm/elf.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/arm/elf.h Wed Nov 7 11:47:25 2012
@@ -161,6 +161,8 @@
#undef L_floatdidf
#undef L_floatdisf
#undef L_floatundidf
+/* XXXMRG: don't take this out, we need it! */
+# ifndef __NetBSD__
#undef L_floatundisf
+# endif
#endif
-
diff -rNU3 -x *.info dist/gcc/config/arm/neon.md dist.nbsd/gcc/config/arm/neon.md
--- dist/gcc/config/arm/neon.md Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/arm/neon.md Wed Nov 7 11:47:25 2012
@@ -680,7 +680,7 @@
(match_operand:SI 2 "immediate_operand" "i")))]
"TARGET_NEON"
{
- int elt = ffs ((int) INTVAL (operands[2]) - 1);
+ int elt = ffs ((int) INTVAL (operands[2])) - 1;
if (BYTES_BIG_ENDIAN)
elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt;
operands[2] = GEN_INT (elt);
@@ -3895,13 +3895,14 @@
(define_insn "neon_vtrn<mode>_internal"
[(set (match_operand:VDQW 0 "s_register_operand" "=w")
- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")]
- UNSPEC_VTRN1))
- (set (match_operand:VDQW 2 "s_register_operand" "=w")
- (unspec:VDQW [(match_operand:VDQW 3 "s_register_operand" "2")]
- UNSPEC_VTRN2))]
+ (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")
+ (match_operand:VDQW 2 "s_register_operand" "w")]
+ UNSPEC_VTRN1))
+ (set (match_operand:VDQW 3 "s_register_operand" "=2")
+ (unspec:VDQW [(match_dup 1) (match_dup 2)]
+ UNSPEC_VTRN2))]
"TARGET_NEON"
- "vtrn.<V_sz_elem>\t%<V_reg>0, %<V_reg>2"
+ "vtrn.<V_sz_elem>\t%<V_reg>0, %<V_reg>3"
[(set (attr "neon_type")
(if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
(const_string "neon_bp_simple")
@@ -3921,13 +3922,14 @@
(define_insn "neon_vzip<mode>_internal"
[(set (match_operand:VDQW 0 "s_register_operand" "=w")
- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")]
- UNSPEC_VZIP1))
- (set (match_operand:VDQW 2 "s_register_operand" "=w")
- (unspec:VDQW [(match_operand:VDQW 3 "s_register_operand" "2")]
- UNSPEC_VZIP2))]
+ (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")
+ (match_operand:VDQW 2 "s_register_operand" "w")]
+ UNSPEC_VZIP1))
+ (set (match_operand:VDQW 3 "s_register_operand" "=2")
+ (unspec:VDQW [(match_dup 1) (match_dup 2)]
+ UNSPEC_VZIP2))]
"TARGET_NEON"
- "vzip.<V_sz_elem>\t%<V_reg>0, %<V_reg>2"
+ "vzip.<V_sz_elem>\t%<V_reg>0, %<V_reg>3"
[(set (attr "neon_type")
(if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
(const_string "neon_bp_simple")
@@ -3947,13 +3949,14 @@
(define_insn "neon_vuzp<mode>_internal"
[(set (match_operand:VDQW 0 "s_register_operand" "=w")
- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")]
+ (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")
+ (match_operand:VDQW 2 "s_register_operand" "w")]
UNSPEC_VUZP1))
- (set (match_operand:VDQW 2 "s_register_operand" "=w")
- (unspec:VDQW [(match_operand:VDQW 3 "s_register_operand" "2")]
- UNSPEC_VUZP2))]
+ (set (match_operand:VDQW 3 "s_register_operand" "=2")
+ (unspec:VDQW [(match_dup 1) (match_dup 2)]
+ UNSPEC_VUZP2))]
"TARGET_NEON"
- "vuzp.<V_sz_elem>\t%<V_reg>0, %<V_reg>2"
+ "vuzp.<V_sz_elem>\t%<V_reg>0, %<V_reg>3"
[(set (attr "neon_type")
(if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
(const_string "neon_bp_simple")
diff -rNU3 -x *.info dist/gcc/config/arm/netbsd-eabi.h dist.nbsd/gcc/config/arm/netbsd-eabi.h
--- dist/gcc/config/arm/netbsd-eabi.h Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/config/arm/netbsd-eabi.h Wed Nov 7 11:47:25 2012
@@ -0,0 +1,94 @@
+/* Definitions of target machine for GNU compiler, NetBSD/arm ELF version.
+ Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+ Contributed by Wasabi Systems, 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
+ <http://www.gnu.org/licenses/>. */
+
+/* Run-time Target Specification. */
+#undef TARGET_VERSION
+#define TARGET_VERSION fputs (" (NetBSD/arm ELF EABI)", stderr);
+
+/* Default to armv5t so that thumb shared libraries work.
+ The ARM10TDMI core is the default for armv5t, so set
+ SUBTARGET_CPU_DEFAULT to achieve this. */
+#undef SUBTARGET_CPU_DEFAULT
+#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
+
+/* This defaults us to little-endian. */
+#ifndef TARGET_ENDIAN_DEFAULT
+#define TARGET_ENDIAN_DEFAULT 0
+#endif
+
+/* TARGET_BIG_ENDIAN_DEFAULT is set in
+ config.gcc for big endian configurations. */
+#undef TARGET_LINKER_EMULATION
+#if TARGET_ENDIAN_DEFAULT == MASK_BIG
+#define TARGET_LINKER_EMULATION "-m armelfb_nbsd_eabi"
+#else
+#define TARGET_LINKER_EMULATION "-m armelf_nbsd_eabi"
+#endif
+
+#undef MULTILIB_DEFAULTS
+
+/* Default it to use ATPCS with soft-VFP. */
+#undef TARGET_DEFAULT
+#define TARGET_DEFAULT \
+ (MASK_APCS_FRAME \
+ | TARGET_ENDIAN_DEFAULT)
+
+#undef ARM_DEFAULT_ABI
+#define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX
+
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS() \
+ do \
+ { \
+ TARGET_BPABI_CPP_BUILTINS(); \
+ NETBSD_OS_CPP_BUILTINS_ELF(); \
+ } \
+ while (0)
+
+#undef SUBTARGET_CPP_SPEC
+#define SUBTARGET_CPP_SPEC NETBSD_CPP_SPEC
+
+#undef SUBTARGET_EXTRA_ASM_SPEC
+#define SUBTARGET_EXTRA_ASM_SPEC \
+ "-matpcs %{!mabi=*|mabi=aapcs*:-meabi=4} %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
+
+/* Default to full VFP if -mhard-float is specified. */
+#undef SUBTARGET_ASM_FLOAT_SPEC
+#define SUBTARGET_ASM_FLOAT_SPEC \
+ "%{mhard-float:{!mfpu=*:-mfpu=vfp}} \
+ %{mfloat-abi=hard:{!mfpu=*:-mfpu=vfp}}"
+
+#undef SUBTARGET_EXTRA_SPECS
+#define SUBTARGET_EXTRA_SPECS \
+ { "subtarget_extra_asm_spec", SUBTARGET_EXTRA_ASM_SPEC }, \
+ { "subtarget_asm_float_spec", SUBTARGET_ASM_FLOAT_SPEC }, \
+ { "netbsd_link_spec", NETBSD_LINK_SPEC_ELF }, \
+ { "be8_link_spec", BE8_LINK_SPEC }, \
+ { "target_fix_v4bx_spec", TARGET_FIX_V4BX_SPEC }, \
+ { "netbsd_entry_point", NETBSD_ENTRY_POINT },
+
+#define NETBSD_ENTRY_POINT "__start"
+
+#undef LINK_SPEC
+#define LINK_SPEC \
+ "-X %{mbig-endian:-EB -m armelfb_nbsd_eabi} \
+ %{mlittle-endian:-EL -m armelf_nbsd_eabi} \
+ %(be8_link_spec) %(target_fix_v4bx_spec) \
+ %(netbsd_link_spec)"
diff -rNU3 -x *.info dist/gcc/config/arm/netbsd-elf.h dist.nbsd/gcc/config/arm/netbsd-elf.h
--- dist/gcc/config/arm/netbsd-elf.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/arm/netbsd-elf.h Wed Nov 7 11:47:25 2012
@@ -40,6 +40,7 @@
#undef ARM_DEFAULT_ABI
#define ARM_DEFAULT_ABI ARM_ABI_ATPCS
+#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
do \
{ \
@@ -52,7 +53,7 @@
#undef SUBTARGET_EXTRA_ASM_SPEC
#define SUBTARGET_EXTRA_ASM_SPEC \
- "-matpcs %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
+ "-matpcs %{mabi=aapcs*:-meabi=4} %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
/* Default to full VFP if -mhard-float is specified. */
#undef SUBTARGET_ASM_FLOAT_SPEC
diff -rNU3 -x *.info dist/gcc/config/arm/t-arm dist.nbsd/gcc/config/arm/t-arm
--- dist/gcc/config/arm/t-arm Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/arm/t-arm Wed Nov 7 11:47:25 2012
@@ -41,6 +41,8 @@
$(srcdir)/config/arm/arm-tune.md: $(srcdir)/config/arm/gentune.sh \
$(srcdir)/config/arm/arm-cores.def
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_config_arm_arm-tune.md:
$(SHELL) $(srcdir)/config/arm/gentune.sh \
$(srcdir)/config/arm/arm-cores.def > \
$(srcdir)/config/arm/arm-tune.md
diff -rNU3 -x *.info dist/gcc/config/arm/t-netbsd dist.nbsd/gcc/config/arm/t-netbsd
--- dist/gcc/config/arm/t-netbsd Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/arm/t-netbsd Wed Nov 7 11:47:25 2012
@@ -23,6 +23,14 @@
LIBGCC2_DEBUG_CFLAGS = -g0
LIB2FUNCS_EXTRA = $(srcdir)/config/floatunsidf.c $(srcdir)/config/floatunsisf.c
+# This list is from t-arm-elf, but with some things removed.
+LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \
+ _call_via_rX _interwork_call_via_rX \
+ _arm_fixunsdfsi _arm_fixunssfsi \
+ _arm_floatdidf _arm_floatdisf _arm_floatundidf _arm_floatundisf \
+ _lshrdi3 _ashrdi3 _ashldi3 \
+ _clzsi2 _clzdi2
+
# Build a shared libgcc library.
SHLIB_EXT = .so
SHLIB_NAME = @shlib_base_name@.so
diff -rNU3 -x *.info dist/gcc/config/arm/t-netbsd-eabi dist.nbsd/gcc/config/arm/t-netbsd-eabi
--- dist/gcc/config/arm/t-netbsd-eabi Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/config/arm/t-netbsd-eabi Wed Nov 7 11:47:25 2012
@@ -0,0 +1,35 @@
+# Copyright (C) 2005, 2009 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
+# <http://www.gnu.org/licenses/>.
+
+# Use a version of div0 which raises SIGFPE, and a special __clear_cache.
+#LIB1ASMFUNCS += \
+# _ashldi3 _ashrdi3 _divdi3 _floatdidf _udivmoddi4 _umoddi3 \
+# _udivdi3 _lshrdi3 _moddi3 _muldi3 _negdi2 _cmpdi2 \
+# _fixdfdi _fixsfdi _fixunsdfdi _fixunssfdi _floatdisf \
+# _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
+# _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
+# _fixsfsi _fixunssfsi
+LIB1ASMFUNCS += \
+ _floatundisf
+
+# Add the BPABI C functions.
+LIB2FUNCS_EXTRA = $(srcdir)/config/arm/bpabi-netbsd.c \
+ $(srcdir)/config/arm/unaligned-funcs.c
+
+# we don't have this
+LIB2FUNCS_STATIC_EXTRA =
diff -rNU3 -x *.info dist/gcc/config/arm/thumb2.md dist.nbsd/gcc/config/arm/thumb2.md
--- dist/gcc/config/arm/thumb2.md Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/arm/thumb2.md Wed Nov 7 11:47:25 2012
@@ -380,7 +380,7 @@
(not:SI (match_operator:SI 1 "arm_comparison_operator"
[(match_operand 2 "cc_register" "") (const_int 0)])))]
"TARGET_THUMB2"
- "ite\\t%D1\;mov%D1\\t%0, #0\;mvn%d1\\t%0, #1"
+ "ite\\t%D1\;mvn%D1\\t%0, #0\;mvn%d1\\t%0, #1"
[(set_attr "conds" "use")
(set_attr "length" "10")]
)
@@ -1108,6 +1108,7 @@
(match_operand:SI 2 "low_reg_or_int_operand" "")]))]
"TARGET_THUMB2
&& peep2_regno_dead_p(0, CC_REGNUM)
+ && (CONST_INT_P (operands[2]) || operands[1] == operands[0])
&& ((GET_CODE(operands[3]) != ROTATE && GET_CODE(operands[3]) != ROTATERT)
|| REG_P(operands[2]))"
[(parallel
@@ -1120,10 +1121,10 @@
)
(define_insn "*thumb2_shiftsi3_short"
- [(set (match_operand:SI 0 "low_register_operand" "=l")
+ [(set (match_operand:SI 0 "low_register_operand" "=l,l")
(match_operator:SI 3 "shift_operator"
- [(match_operand:SI 1 "low_register_operand" "l")
- (match_operand:SI 2 "low_reg_or_int_operand" "lM")]))
+ [(match_operand:SI 1 "low_register_operand" "0,l")
+ (match_operand:SI 2 "low_reg_or_int_operand" "l,M")]))
(clobber (reg:CC CC_REGNUM))]
"TARGET_THUMB2 && reload_completed
&& ((GET_CODE(operands[3]) != ROTATE && GET_CODE(operands[3]) != ROTATERT)
diff -rNU3 -x *.info dist/gcc/config/avr/avr-stdint.h dist.nbsd/gcc/config/avr/avr-stdint.h
--- dist/gcc/config/avr/avr-stdint.h Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/config/avr/avr-stdint.h Wed Nov 7 11:47:24 2012
@@ -0,0 +1,66 @@
+/* Definitions for <stdint.h> types on systems using newlib.
+ Copyright (C) 2012 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
+<http://www.gnu.org/licenses/>. */
+
+/*
+ The intention of this file is to supply definitions that work with
+ avr-gcc's -mint8 that sets int to an 8-bit type.
+
+ This file is intended to yield the same results as newlib-stdint.h,
+ but there are some differences to newlib-stdint.h:
+
+ - AVR is an 8-bit architecture that cannot access 16-bit values
+ atomically, this SIG_ATOMIC_TYPE is "char".
+
+ - For the same reason, [u]int_fast8_t is defined as 8-bit type.
+
+*/
+
+#define SIG_ATOMIC_TYPE "char"
+
+#define INT8_TYPE "signed char"
+#define INT16_TYPE (INT_TYPE_SIZE == 16 ? "short int" : "long int")
+#define INT32_TYPE (INT_TYPE_SIZE == 16 ? "long int" : "long long int")
+#define INT64_TYPE (INT_TYPE_SIZE == 16 ? "long long int" : 0)
+#define UINT8_TYPE "unsigned char"
+#define UINT16_TYPE (INT_TYPE_SIZE == 16 ? "short unsigned int" : "long unsigned int")
+#define UINT32_TYPE (INT_TYPE_SIZE == 16 ? "long unsigned int" : "long long unsigned int")
+#define UINT64_TYPE (INT_TYPE_SIZE == 16 ? "long long unsigned int" : 0)
+
+#define INT_LEAST8_TYPE INT8_TYPE
+#define INT_LEAST16_TYPE INT16_TYPE
+#define INT_LEAST32_TYPE INT32_TYPE
+#define INT_LEAST64_TYPE INT64_TYPE
+#define UINT_LEAST8_TYPE UINT8_TYPE
+#define UINT_LEAST16_TYPE UINT16_TYPE
+#define UINT_LEAST32_TYPE UINT32_TYPE
+#define UINT_LEAST64_TYPE UINT64_TYPE
+
+#define INT_FAST8_TYPE INT8_TYPE
+#define INT_FAST16_TYPE (INT_TYPE_SIZE == 16 ? "int" : INT16_TYPE)
+#define INT_FAST32_TYPE INT32_TYPE
+#define INT_FAST64_TYPE INT64_TYPE
+#define UINT_FAST8_TYPE UINT8_TYPE
+#define UINT_FAST16_TYPE (INT_TYPE_SIZE == 16 ? "unsigned int" : UINT16_TYPE)
+#define UINT_FAST32_TYPE UINT32_TYPE
+#define UINT_FAST64_TYPE UINT64_TYPE
+
+#define INTPTR_TYPE PTRDIFF_TYPE
+#ifndef UINTPTR_TYPE
+#define UINTPTR_TYPE SIZE_TYPE
+#endif
diff -rNU3 -x *.info dist/gcc/config/avr/avr.c dist.nbsd/gcc/config/avr/avr.c
--- dist/gcc/config/avr/avr.c Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/avr/avr.c Wed Nov 7 11:47:24 2012
@@ -1043,8 +1043,7 @@
true_regnum (XEXP (x, 0)));
debug_rtx (x);
}
- if (!strict && GET_CODE (x) == SUBREG)
- x = SUBREG_REG (x);
+
if (REG_P (x) && (strict ? REG_OK_FOR_BASE_STRICT_P (x)
: REG_OK_FOR_BASE_NOSTRICT_P (x)))
r = POINTER_REGS;
@@ -1386,9 +1385,8 @@
{
rtx x = XEXP (src, 1);
- if (GET_CODE (x) == CONST_INT
- && INTVAL (x) > 0
- && INTVAL (x) != 6)
+ if (CONST_INT_P (x)
+ && IN_RANGE (INTVAL (x), 1, 5))
{
cc_status.value1 = SET_DEST (set);
cc_status.flags |= CC_OVERFLOW_UNUSABLE;
@@ -5934,26 +5932,30 @@
int
avr_hard_regno_mode_ok (int regno, enum machine_mode mode)
{
- /* Disallow QImode in stack pointer regs. */
- if ((regno == REG_SP || regno == (REG_SP + 1)) && mode == QImode)
- return 0;
-
- /* The only thing that can go into registers r28:r29 is a Pmode. */
- if (regno == REG_Y && mode == Pmode)
+ /* NOTE: 8-bit values must not be disallowed for R28 or R29.
+ Disallowing QI et al. in these regs might lead to code like
+ (set (subreg:QI (reg:HI 28) n) ...)
+ which will result in wrong code because reload does not
+ handle SUBREGs of hard regsisters like this, see PR46779.
+ This could be fixed in reload. However, it appears
+ that fixing reload is not wanted by reload people. */
+
+ /* Any GENERAL_REGS register can hold 8-bit values. */
+
+ if (GET_MODE_SIZE (mode) == 1)
return 1;
- /* Otherwise disallow all regno/mode combinations that span r28:r29. */
- if (regno <= (REG_Y + 1) && (regno + GET_MODE_SIZE (mode)) >= (REG_Y + 1))
+ /* FIXME: Ideally, the following test is not needed.
+ However, it turned out that it can reduce the number
+ of spill fails. AVR and it's poor endowment with
+ address registers is extreme stress test for reload. */
+
+ if (GET_MODE_SIZE (mode) >= 4
+ && regno >= REG_X)
return 0;
- if (mode == QImode)
- return 1;
-
- /* Modes larger than QImode occupy consecutive registers. */
- if (regno + GET_MODE_SIZE (mode) > FIRST_PSEUDO_REGISTER)
- return 0;
-
- /* All modes larger than QImode should start in an even register. */
+ /* All modes larger than 8 bits should start in an even register. */
+
return !(regno & 1);
}
@@ -6080,13 +6082,23 @@
&& !df_regs_ever_live_p (regno))
return false;
+ /* Don't allow hard registers that might be part of the frame pointer.
+ Some places in the compiler just test for [HARD_]FRAME_POINTER_REGNUM
+ and don't care for a frame pointer that spans more than one register. */
+
+ if ((!reload_completed || frame_pointer_needed)
+ && (regno == REG_Y || regno == REG_Y + 1))
+ {
+ return false;
+ }
+
return true;
}
/* Return nonzero if register OLD_REG can be renamed to register NEW_REG. */
int
-avr_hard_regno_rename_ok (unsigned int old_reg ATTRIBUTE_UNUSED,
+avr_hard_regno_rename_ok (unsigned int old_reg,
unsigned int new_reg)
{
/* Interrupt functions can only use registers that have already been
@@ -6097,6 +6109,17 @@
&& !df_regs_ever_live_p (new_reg))
return 0;
+ /* Don't allow hard registers that might be part of the frame pointer.
+ Some places in the compiler just test for [HARD_]FRAME_POINTER_REGNUM
+ and don't care for a frame pointer that spans more than one register. */
+
+ if ((!reload_completed || frame_pointer_needed)
+ && (old_reg == REG_Y || old_reg == REG_Y + 1
+ || new_reg == REG_Y || new_reg == REG_Y + 1))
+ {
+ return 0;
+ }
+
return 1;
}
diff -rNU3 -x *.info dist/gcc/config/avr/libgcc.S dist.nbsd/gcc/config/avr/libgcc.S
--- dist/gcc/config/avr/libgcc.S Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/avr/libgcc.S Wed Nov 7 11:47:24 2012
@@ -28,6 +28,7 @@
#define __SP_H__ 0x3e
#define __SP_L__ 0x3d
#define __RAMPZ__ 0x3B
+#define __EIND__ 0x3C
/* Most of the functions here are called directly from avr.md
patterns, instead of using the standard libcall mechanisms.
@@ -689,7 +690,8 @@
lpm
push r0
#if defined (__AVR_HAVE_EIJMP_EICALL__)
- push __zero_reg__
+ in __tmp_reg__, __EIND__
+ push __tmp_reg__
#endif
ret
#endif
@@ -791,22 +793,22 @@
#if defined(__AVR_HAVE_RAMPZ__)
__do_global_ctors:
ldi r17, hi8(__ctors_start)
- ldi r16, hh8(__ctors_start)
ldi r28, lo8(__ctors_end)
ldi r29, hi8(__ctors_end)
- ldi r20, hh8(__ctors_end)
+ ldi r16, hh8(__ctors_end)
rjmp .L__do_global_ctors_start
.L__do_global_ctors_loop:
sbiw r28, 2
- sbc r20, __zero_reg__
+ sbc r16, __zero_reg__
mov_h r31, r29
mov_l r30, r28
- out __RAMPZ__, r20
+ out __RAMPZ__, r16
XCALL __tablejump_elpm__
.L__do_global_ctors_start:
cpi r28, lo8(__ctors_start)
cpc r29, r17
- cpc r20, r16
+ ldi r24, hh8(__ctors_start)
+ cpc r16, r24
brne .L__do_global_ctors_loop
#else
__do_global_ctors:
@@ -832,22 +834,22 @@
#if defined(__AVR_HAVE_RAMPZ__)
__do_global_dtors:
ldi r17, hi8(__dtors_end)
- ldi r16, hh8(__dtors_end)
ldi r28, lo8(__dtors_start)
ldi r29, hi8(__dtors_start)
- ldi r20, hh8(__dtors_start)
+ ldi r16, hh8(__dtors_start)
rjmp .L__do_global_dtors_start
.L__do_global_dtors_loop:
sbiw r28, 2
- sbc r20, __zero_reg__
+ sbc r16, __zero_reg__
mov_h r31, r29
mov_l r30, r28
- out __RAMPZ__, r20
+ out __RAMPZ__, r16
XCALL __tablejump_elpm__
.L__do_global_dtors_start:
cpi r28, lo8(__dtors_end)
cpc r29, r17
- cpc r20, r16
+ ldi r24, hh8(__dtors_end)
+ cpc r16, r24
brne .L__do_global_dtors_loop
#else
__do_global_dtors:
@@ -889,7 +891,8 @@
elpm
push r0
#if defined (__AVR_HAVE_EIJMP_EICALL__)
- push __zero_reg__
+ in __tmp_reg__, __EIND__
+ push __tmp_reg__
#endif
ret
#endif
diff -rNU3 -x *.info dist/gcc/config/bfin/linux-unwind.h dist.nbsd/gcc/config/bfin/linux-unwind.h
--- dist/gcc/config/bfin/linux-unwind.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/bfin/linux-unwind.h Wed Nov 7 11:47:24 2012
@@ -1,5 +1,5 @@
/* DWARF2 EH unwinding support for Blackfin.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -48,10 +48,10 @@
{
struct rt_sigframe {
int sig;
- struct siginfo *pinfo;
+ siginfo_t *pinfo;
void *puc;
char retcode[8];
- struct siginfo info;
+ siginfo_t info;
struct ucontext uc;
} *rt_ = context->cfa;
diff -rNU3 -x *.info dist/gcc/config/darwin-protos.h dist.nbsd/gcc/config/darwin-protos.h
--- dist/gcc/config/darwin-protos.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/darwin-protos.h Wed Nov 7 11:47:23 2012
@@ -93,3 +93,4 @@
extern bool darwin_kextabi_p (void);
extern void darwin_override_options (void);
extern void darwin_patch_builtins (void);
+extern void darwin_rename_builtins (void);
diff -rNU3 -x *.info dist/gcc/config/darwin.c dist.nbsd/gcc/config/darwin.c
--- dist/gcc/config/darwin.c Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/darwin.c Wed Nov 7 11:47:24 2012
@@ -337,6 +337,34 @@
/* Return a hash value for a SLOT in the indirections hash table. */
+void
+darwin_rename_builtins (void)
+{
+ /* The system ___divdc3 routine in libSystem on darwin10 is not
+ accurate to 1ulp, ours is, so we avoid ever using the system name
+ for this routine and instead install a non-conflicting name that
+ is accurate.
+
+ When -ffast-math or -funsafe-math-optimizations is given, we can
+ use the faster version. */
+ if (!flag_unsafe_math_optimizations)
+ {
+ int dcode = (BUILT_IN_COMPLEX_DIV_MIN
+ + DCmode - MIN_MODE_COMPLEX_FLOAT);
+ tree fn = built_in_decls[dcode];
+ /* Fortran and c call TARGET_INIT_BUILTINS and
+ TARGET_INIT_LIBFUNCS at different times, so we have to put a
+ call into each to ensure that at least one of them is called
+ after build_common_builtin_nodes. A better fix is to add a
+ new hook to run after build_common_builtin_nodes runs. */
+ if (fn)
+ set_user_assembler_name (fn, "___ieee_divdc3");
+ fn = implicit_built_in_decls[dcode];
+ if (fn)
+ set_user_assembler_name (fn, "___ieee_divdc3");
+ }
+}
+
static hashval_t
machopic_indirection_hash (const void *slot)
{
diff -rNU3 -x *.info dist/gcc/config/freebsd-spec.h dist.nbsd/gcc/config/freebsd-spec.h
--- dist/gcc/config/freebsd-spec.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/freebsd-spec.h Wed Nov 7 11:47:23 2012
@@ -153,7 +153,7 @@
#define FBSD_DYNAMIC_LINKER "/libexec/ld-elf.so.1"
#endif
-#if defined(HAVE_LD_EH_FRAME_HDR)
+#if defined(HAVE_LD_EH_FRAME_HDR) && !defined(LINK_EH_SPEC)
#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
#endif
diff -rNU3 -x *.info dist/gcc/config/i386/athlon.md dist.nbsd/gcc/config/i386/athlon.md
--- dist/gcc/config/i386/athlon.md Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/i386/athlon.md Wed Nov 7 11:47:24 2012
@@ -798,7 +798,7 @@
"athlon-direct,athlon-fploadk8,athlon-fadd")
(define_insn_reservation "athlon_ssecomi" 4
(and (eq_attr "cpu" "athlon,k8,generic64")
- (eq_attr "type" "ssecmp"))
+ (eq_attr "type" "ssecomi"))
"athlon-vector,athlon-fpsched,athlon-fadd")
(define_insn_reservation "athlon_ssecomi_amdfam10" 3
(and (eq_attr "cpu" "amdfam10")
diff -rNU3 -x *.info dist/gcc/config/i386/avxintrin.h dist.nbsd/gcc/config/i386/avxintrin.h
--- dist/gcc/config/i386/avxintrin.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/i386/avxintrin.h Wed Nov 7 11:47:24 2012
@@ -759,7 +759,7 @@
#ifdef __x86_64__
extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_insert_epi64 (__m256i __X, int __D, int const __N)
+_mm256_insert_epi64 (__m256i __X, long long __D, int const __N)
{
__m128i __Y = _mm256_extractf128_si256 (__X, __N >> 1);
__Y = _mm_insert_epi64 (__Y, __D, __N % 2);
diff -rNU3 -x *.info dist/gcc/config/i386/constraints.md dist.nbsd/gcc/config/i386/constraints.md
--- dist/gcc/config/i386/constraints.md Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/i386/constraints.md Wed Nov 7 11:47:24 2012
@@ -149,7 +149,7 @@
(define_constraint "G"
"Standard 80387 floating point constant."
(and (match_code "const_double")
- (match_test "standard_80387_constant_p (op)")))
+ (match_test "standard_80387_constant_p (op) > 0")))
;; This can theoretically be any mode's CONST0_RTX.
(define_constraint "C"
diff -rNU3 -x *.info dist/gcc/config/i386/darwin.h dist.nbsd/gcc/config/i386/darwin.h
--- dist/gcc/config/i386/darwin.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/i386/darwin.h Wed Nov 7 11:47:24 2012
@@ -302,3 +302,17 @@
#define MACHO_SYMBOL_FLAG_VARIABLE ((SYMBOL_FLAG_MACH_DEP) << 3)
#define SUBTARGET32_DEFAULT_CPU "i686"
+
+#define SUBTARGET_INIT_BUILTINS \
+do { \
+ darwin_rename_builtins (); \
+} while(0)
+
+/* The system ___divdc3 routine in libSystem on darwin10 is not
+ accurate to 1ulp, ours is, so we avoid ever using the system name
+ for this routine and instead install a non-conflicting name that is
+ accurate. See darwin_rename_builtins. */
+#ifdef L_divdc3
+#define DECLARE_LIBRARY_RENAMES \
+ asm(".text; ___divdc3: jmp ___ieee_divdc3 ; .globl ___divdc3");
+#endif
diff -rNU3 -x *.info dist/gcc/config/i386/driver-i386.c dist.nbsd/gcc/config/i386/driver-i386.c
--- dist/gcc/config/i386/driver-i386.c Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/i386/driver-i386.c Wed Nov 7 11:47:24 2012
@@ -494,7 +494,7 @@
processor = PROCESSOR_AMDFAM10;
else if (has_sse2 || has_longmode)
processor = PROCESSOR_K8;
- else if (has_3dnowp)
+ else if (has_3dnowp && family == 6)
processor = PROCESSOR_ATHLON;
else if (has_mmx)
processor = PROCESSOR_K6;
diff -rNU3 -x *.info dist/gcc/config/i386/i386-protos.h dist.nbsd/gcc/config/i386/i386-protos.h
--- dist/gcc/config/i386/i386-protos.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/i386/i386-protos.h Wed Nov 7 11:47:24 2012
@@ -57,7 +57,8 @@
extern bool constant_address_p (rtx);
extern bool legitimate_pic_operand_p (rtx);
extern int legitimate_pic_address_disp_p (rtx);
-
+extern bool ix86_legitimize_reload_address (rtx, enum machine_mode,
+ int, int, int);
extern void print_reg (rtx, int, FILE*);
extern void print_operand (FILE*, rtx, int);
extern void print_operand_address (FILE*, rtx);
diff -rNU3 -x *.info dist/gcc/config/i386/i386.c dist.nbsd/gcc/config/i386/i386.c
--- dist/gcc/config/i386/i386.c Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/i386/i386.c Wed Nov 7 11:47:24 2012
@@ -46,6 +46,7 @@
#include "target.h"
#include "target-def.h"
#include "langhooks.h"
+#include "reload.h"
#include "cgraph.h"
#include "gimple.h"
#include "dwarf2.h"
@@ -1540,7 +1541,7 @@
/* Feature tests against the various architecture variations, used to create
ix86_arch_features based on the processor mask. */
static unsigned int initial_ix86_arch_features[X86_ARCH_LAST] = {
- /* X86_ARCH_CMOVE: Conditional move was added for pentiumpro. */
+ /* X86_ARCH_CMOV: Conditional move was added for pentiumpro. */
~(m_386 | m_486 | m_PENT | m_K6),
/* X86_ARCH_CMPXCHG: Compare and exchange was added for 80486. */
@@ -3071,7 +3072,7 @@
-mtune (rather than -march) points us to a processor that has them.
However, the VIA C3 gives a SIGILL, so we only do that for i686 and
higher processors. */
- if (TARGET_CMOVE
+ if (TARGET_CMOV
&& (processor_alias_table[i].flags & (PTA_PREFETCH_SSE | PTA_SSE)))
x86_prefetch_sse = true;
break;
@@ -3400,11 +3401,6 @@
target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
}
- /* For sane SSE instruction set generation we need fcomi instruction.
- It is safe to enable all CMOVE instructions. */
- if (TARGET_SSE)
- TARGET_CMOVE = 1;
-
/* Figure out what ASM_GENERATE_INTERNAL_LABEL builds as a prefix. */
{
char *p;
@@ -9875,6 +9871,64 @@
return 0;
}
+/* Our implementation of LEGITIMIZE_RELOAD_ADDRESS. Returns a value to
+ replace the input X, or the original X if no replacement is called for.
+ The output parameter *WIN is 1 if the calling macro should goto WIN,
+ 0 if it should not. */
+
+bool
+ix86_legitimize_reload_address (rtx x,
+ enum machine_mode mode ATTRIBUTE_UNUSED,
+ int opnum, int type,
+ int ind_levels ATTRIBUTE_UNUSED)
+{
+ /* Reload can generate:
+
+ (plus:DI (plus:DI (unspec:DI [(const_int 0 [0])] UNSPEC_TP)
+ (reg:DI 97))
+ (reg:DI 2 cx))
+
+ This RTX is rejected from ix86_legitimate_address_p due to
+ non-strictness of base register 97. Following this rejection,
+ reload pushes all three components into separate registers,
+ creating invalid memory address RTX.
+
+ Following code reloads only the invalid part of the
+ memory address RTX. */
+
+ if (GET_CODE (x) == PLUS
+ && REG_P (XEXP (x, 1))
+ && GET_CODE (XEXP (x, 0)) == PLUS
+ && REG_P (XEXP (XEXP (x, 0), 1)))
+ {
+ rtx base, index;
+ bool something_reloaded = false;
+
+ base = XEXP (XEXP (x, 0), 1);
+ if (!REG_OK_FOR_BASE_STRICT_P (base))
+ {
+ push_reload (base, NULL_RTX, &XEXP (XEXP (x, 0), 1), NULL,
+ BASE_REG_CLASS, GET_MODE (x), VOIDmode, 0, 0,
+ opnum, (enum reload_type)type);
+ something_reloaded = true;
+ }
+
+ index = XEXP (x, 1);
+ if (!REG_OK_FOR_INDEX_STRICT_P (index))
+ {
+ push_reload (index, NULL_RTX, &XEXP (x, 1), NULL,
+ INDEX_REG_CLASS, GET_MODE (x), VOIDmode, 0, 0,
+ opnum, (enum reload_type)type);
+ something_reloaded = true;
+ }
+
+ gcc_assert (something_reloaded);
+ return true;
+ }
+
+ return false;
+}
+
/* Recognizes RTL expressions that are valid memory addresses for an
instruction. The MODE argument is the machine mode for the MEM
expression that wants to use this address.
@@ -11872,6 +11926,13 @@
return;
case 'H':
+ if (!offsettable_memref_p (x))
+ {
+ output_operand_lossage ("operand is not an offsettable memory "
+ "reference, invalid operand "
+ "code 'H'");
+ return;
+ }
/* It doesn't actually matter what mode we use here, as we're
only going to use this for printing. */
x = adjust_address_nv (x, DImode, 8);
@@ -14610,11 +14671,15 @@
if (req_mode == CCZmode)
return 0;
/* FALLTHRU */
+ case CCZmode:
+ break;
+
case CCAmode:
case CCCmode:
case CCOmode:
case CCSmode:
- case CCZmode:
+ if (set_mode != req_mode)
+ return 0;
break;
default:
@@ -16196,11 +16261,15 @@
}
else if (TARGET_XOP)
{
- rtx pcmov = gen_rtx_SET (mode, dest,
- gen_rtx_IF_THEN_ELSE (mode, cmp,
- op_true,
- op_false));
- emit_insn (pcmov);
+ op_true = force_reg (mode, op_true);
+
+ if (!nonimmediate_operand (op_false, mode))
+ op_false = force_reg (mode, op_false);
+
+ emit_insn (gen_rtx_SET (mode, dest,
+ gen_rtx_IF_THEN_ELSE (mode, cmp,
+ op_true,
+ op_false)));
}
else
{
@@ -20104,7 +20173,9 @@
if (!TARGET_64BIT
&& align == 64
&& ix86_preferred_stack_boundary < 64
- && (mode == DImode || (type && TYPE_MODE (type) == DImode))
+ && (mode == DImode || (type && TYPE_MODE (type) == DImode)
+ || mode == DFmode || (type && TYPE_MODE (type) == DFmode)
+ || mode == DCmode || (type && TYPE_MODE (type) == DCmode))
&& (!type || !TYPE_USER_ALIGN (type))
&& (!decl || !DECL_USER_ALIGN (decl)))
align = 32;
@@ -20150,7 +20221,8 @@
|| TREE_CODE (type) == QUAL_UNION_TYPE)
&& TYPE_FIELDS (type))
{
- if (DECL_MODE (TYPE_FIELDS (type)) == DFmode && align < 64)
+ if (DECL_MODE (TYPE_FIELDS (type)) == DFmode && align < 64
+ && (TARGET_64BIT || ix86_preferred_stack_boundary >= 64))
return 64;
if (ALIGN_MODE_128 (DECL_MODE (TYPE_FIELDS (type))) && align < 128)
return 128;
@@ -20159,7 +20231,8 @@
|| TREE_CODE (type) == INTEGER_TYPE)
{
- if (TYPE_MODE (type) == DFmode && align < 64)
+ if (TYPE_MODE (type) == DFmode && align < 64
+ && (TARGET_64BIT || ix86_preferred_stack_boundary >= 64))
return 64;
if (ALIGN_MODE_128 (TYPE_MODE (type)) && align < 128)
return 128;
@@ -23991,8 +24064,8 @@
arg_adjust = 0;
if (optimize
|| target == 0
- || GET_MODE (target) != tmode
- || ! (*insn_p->operand[0].predicate) (target, tmode))
+ || !register_operand (target, tmode)
+ || GET_MODE (target) != tmode)
target = gen_reg_rtx (tmode);
}
@@ -25067,7 +25140,7 @@
zero above. We only want to wind up preferring 80387 registers if
we plan on doing computation with them. */
if (TARGET_80387
- && standard_80387_constant_p (x))
+ && standard_80387_constant_p (x) > 0)
{
/* Limit class to non-sse. */
if (regclass == FLOAT_SSE_REGS)
@@ -27711,10 +27784,19 @@
break;
case V2DImode:
- use_vec_merge = TARGET_SSE4_1;
+ use_vec_merge = TARGET_SSE4_1 && TARGET_64BIT;
if (use_vec_merge)
break;
+ tmp = gen_reg_rtx (GET_MODE_INNER (mode));
+ ix86_expand_vector_extract (false, tmp, target, 1 - elt);
+ if (elt == 0)
+ tmp = gen_rtx_VEC_CONCAT (mode, tmp, val);
+ else
+ tmp = gen_rtx_VEC_CONCAT (mode, val, tmp);
+ emit_insn (gen_rtx_SET (VOIDmode, target, tmp));
+ return;
+
case V2DFmode:
{
rtx op0, op1;
@@ -30651,6 +30733,11 @@
#undef TARGET_ASM_CODE_END
#define TARGET_ASM_CODE_END ix86_code_end
+
+#if TARGET_MACHO
+#undef TARGET_INIT_LIBFUNCS
+#define TARGET_INIT_LIBFUNCS darwin_rename_builtins
+#endif
struct gcc_target targetm = TARGET_INITIALIZER;
diff -rNU3 -x *.info dist/gcc/config/i386/i386.h dist.nbsd/gcc/config/i386/i386.h
--- dist/gcc/config/i386/i386.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/i386/i386.h Wed Nov 7 11:47:24 2012
@@ -397,7 +397,7 @@
/* Feature tests against the various architecture variations. */
enum ix86_arch_indices {
- X86_ARCH_CMOVE, /* || TARGET_SSE */
+ X86_ARCH_CMOV,
X86_ARCH_CMPXCHG,
X86_ARCH_CMPXCHG8B,
X86_ARCH_XADD,
@@ -408,12 +408,16 @@
extern unsigned char ix86_arch_features[X86_ARCH_LAST];
-#define TARGET_CMOVE ix86_arch_features[X86_ARCH_CMOVE]
+#define TARGET_CMOV ix86_arch_features[X86_ARCH_CMOV]
#define TARGET_CMPXCHG ix86_arch_features[X86_ARCH_CMPXCHG]
#define TARGET_CMPXCHG8B ix86_arch_features[X86_ARCH_CMPXCHG8B]
#define TARGET_XADD ix86_arch_features[X86_ARCH_XADD]
#define TARGET_BSWAP ix86_arch_features[X86_ARCH_BSWAP]
+/* For sane SSE instruction set generation we need fcomi instruction.
+ It is safe to enable all CMOVE instructions. */
+#define TARGET_CMOVE (TARGET_CMOV || TARGET_SSE)
+
#define TARGET_FISTTP (TARGET_SSE3 && TARGET_80387)
extern int x86_prefetch_sse;
@@ -1081,6 +1085,7 @@
#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \
(CC_REGNO_P (REGNO) ? VOIDmode \
+ : MMX_REGNO_P (REGNO) ? V8QImode \
: (MODE) == VOIDmode && (NREGS) != 1 ? VOIDmode \
: (MODE) == VOIDmode ? choose_hard_reg_mode ((REGNO), (NREGS), false) \
: (MODE) == HImode && !TARGET_PARTIAL_REG_STALL ? SImode \
@@ -1765,6 +1770,17 @@
It is given that X satisfies CONSTANT_P or is a CONST_DOUBLE. */
#define LEGITIMATE_CONSTANT_P(X) legitimate_constant_p (X)
+
+/* Try a machine-dependent way of reloading an illegitimate address
+ operand. If we find one, push the reload and jump to WIN. This
+ macro is used in only one place: `find_reloads_address' in reload.c. */
+
+#define LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, INDL, WIN) \
+do { \
+ if (ix86_legitimize_reload_address ((X), (MODE), (OPNUM), \
+ (int)(TYPE), (INDL))) \
+ goto WIN; \
+} while (0)
/* If defined, a C expression to determine the base term of address X.
This macro is used in only one place: `find_base_term' in alias.c.
diff -rNU3 -x *.info dist/gcc/config/i386/i386.md dist.nbsd/gcc/config/i386/i386.md
--- dist/gcc/config/i386/i386.md Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/i386/i386.md Wed Nov 7 11:47:24 2012
@@ -2430,7 +2430,7 @@
[(set_attr "type" "*,*,mmx,mmxmov,mmxmov,sselog1,ssemov,ssemov,ssemov,sselog1,ssemov,ssemov,ssemov")
(set (attr "prefix")
(if_then_else (eq_attr "alternative" "5,6,7,8")
- (const_string "vex")
+ (const_string "maybe_vex")
(const_string "orig")))
(set_attr "mode" "DI,DI,DI,DI,DI,TI,DI,TI,DI,V4SF,V2SF,V4SF,V2SF")])
@@ -2468,21 +2468,15 @@
return "movdq2q\t{%1, %0|%0, %1}";
case TYPE_SSEMOV:
- if (TARGET_AVX)
- {
- if (get_attr_mode (insn) == MODE_TI)
- return "vmovdqa\t{%1, %0|%0, %1}";
- else
- return "vmovq\t{%1, %0|%0, %1}";
- }
-
if (get_attr_mode (insn) == MODE_TI)
- return "movdqa\t{%1, %0|%0, %1}";
- /* FALLTHRU */
+ return "%vmovdqa\t{%1, %0|%0, %1}";
+ /* Handle broken assemblers that require movd instead of movq. */
+ if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1]))
+ return "%vmovd\t{%1, %0|%0, %1}";
+ return "%vmovq\t{%1, %0|%0, %1}";
case TYPE_MMXMOV:
- /* Moves from and into integer register is done using movd
- opcode with REX prefix. */
+ /* Handle broken assemblers that require movd instead of movq. */
if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1]))
return "movd\t{%1, %0|%0, %1}";
return "movq\t{%1, %0|%0, %1}";
@@ -2878,7 +2872,7 @@
&& (reload_in_progress || reload_completed
|| (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
|| (!TARGET_SSE_MATH && optimize_function_for_size_p (cfun)
- && standard_80387_constant_p (operands[1]))
+ && standard_80387_constant_p (operands[1]) > 0)
|| GET_CODE (operands[1]) != CONST_DOUBLE
|| memory_operand (operands[0], SFmode))"
{
@@ -2915,12 +2909,13 @@
case 9: case 10: case 14: case 15:
return "movd\t{%1, %0|%0, %1}";
- case 12: case 13:
- return "%vmovd\t{%1, %0|%0, %1}";
case 11:
return "movq\t{%1, %0|%0, %1}";
+ case 12: case 13:
+ return "%vmovd\t{%1, %0|%0, %1}";
+
default:
gcc_unreachable ();
}
@@ -3048,11 +3043,10 @@
|| (!(TARGET_SSE2 && TARGET_SSE_MATH)
&& optimize_function_for_size_p (cfun)
&& !memory_operand (operands[0], DFmode)
- && standard_80387_constant_p (operands[1]))
+ && standard_80387_constant_p (operands[1]) > 0)
|| GET_CODE (operands[1]) != CONST_DOUBLE
|| ((optimize_function_for_size_p (cfun)
- || !TARGET_MEMORY_MISMATCH_STALL
- || reload_in_progress || reload_completed)
+ || !TARGET_MEMORY_MISMATCH_STALL)
&& memory_operand (operands[0], DFmode)))"
{
switch (which_alternative)
@@ -3067,6 +3061,7 @@
case 3:
case 4:
return "#";
+
case 5:
switch (get_attr_mode (insn))
{
@@ -3200,7 +3195,7 @@
|| (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
|| (!(TARGET_SSE2 && TARGET_SSE_MATH)
&& optimize_function_for_size_p (cfun)
- && standard_80387_constant_p (operands[1]))
+ && standard_80387_constant_p (operands[1]) > 0)
|| GET_CODE (operands[1]) != CONST_DOUBLE
|| memory_operand (operands[0], DFmode))"
{
@@ -3262,7 +3257,8 @@
case 9:
case 10:
- return "%vmovd\t{%1, %0|%0, %1}";
+ /* Handle broken assemblers that require movd instead of movq. */
+ return "%vmovd\t{%1, %0|%0, %1}";
default:
gcc_unreachable();
@@ -3340,7 +3336,7 @@
|| (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
|| (!(TARGET_SSE2 && TARGET_SSE_MATH)
&& optimize_function_for_size_p (cfun)
- && standard_80387_constant_p (operands[1]))
+ && standard_80387_constant_p (operands[1]) > 0)
|| GET_CODE (operands[1]) != CONST_DOUBLE
|| memory_operand (operands[0], DFmode))"
{
@@ -3361,11 +3357,11 @@
switch (get_attr_mode (insn))
{
case MODE_V4SF:
- return "xorps\t%0, %0";
+ return "%vxorps\t%0, %d0";
case MODE_V2DF:
- return "xorpd\t%0, %0";
+ return "%vxorpd\t%0, %d0";
case MODE_TI:
- return "pxor\t%0, %0";
+ return "%vpxor\t%0, %d0";
default:
gcc_unreachable ();
}
@@ -3375,28 +3371,56 @@
switch (get_attr_mode (insn))
{
case MODE_V4SF:
- return "movaps\t{%1, %0|%0, %1}";
+ return "%vmovaps\t{%1, %0|%0, %1}";
case MODE_V2DF:
- return "movapd\t{%1, %0|%0, %1}";
+ return "%vmovapd\t{%1, %0|%0, %1}";
case MODE_TI:
- return "movdqa\t{%1, %0|%0, %1}";
+ return "%vmovdqa\t{%1, %0|%0, %1}";
case MODE_DI:
- return "movq\t{%1, %0|%0, %1}";
+ return "%vmovq\t{%1, %0|%0, %1}";
case MODE_DF:
- return "movsd\t{%1, %0|%0, %1}";
+ if (TARGET_AVX)
+ {
+ if (REG_P (operands[0]) && REG_P (operands[1]))
+ return "vmovsd\t{%1, %0, %0|%0, %0, %1}";
+ else
+ return "vmovsd\t{%1, %0|%0, %1}";
+ }
+ else
+ return "movsd\t{%1, %0|%0, %1}";
case MODE_V1DF:
- return "movlpd\t{%1, %0|%0, %1}";
+ if (TARGET_AVX)
+ {
+ if (REG_P (operands[0]))
+ return "vmovlpd\t{%1, %0, %0|%0, %0, %1}";
+ else
+ return "vmovlpd\t{%1, %0|%0, %1}";
+ }
+ else
+ return "movlpd\t{%1, %0|%0, %1}";
case MODE_V2SF:
- return "movlps\t{%1, %0|%0, %1}";
+ if (TARGET_AVX)
+ {
+ if (REG_P (operands[0]))
+ return "vmovlps\t{%1, %0, %0|%0, %0, %1}";
+ else
+ return "vmovlps\t{%1, %0|%0, %1}";
+ }
+ else
+ return "movlps\t{%1, %0|%0, %1}";
default:
gcc_unreachable ();
}
default:
- gcc_unreachable();
+ gcc_unreachable ();
}
}
[(set_attr "type" "fmov,fmov,fmov,multi,multi,sselog1,ssemov,ssemov,ssemov")
+ (set (attr "prefix")
+ (if_then_else (eq_attr "alternative" "0,1,2,3,4")
+ (const_string "orig")
+ (const_string "maybe_vex")))
(set (attr "prefix_data16")
(if_then_else (eq_attr "mode" "V1DF")
(const_string "1")
@@ -3543,7 +3567,8 @@
"optimize_function_for_size_p (cfun)
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))
&& (reload_in_progress || reload_completed
- || standard_80387_constant_p (operands[1])
+ || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
+ || standard_80387_constant_p (operands[1]) > 0
|| GET_CODE (operands[1]) != CONST_DOUBLE
|| memory_operand (operands[0], XFmode))"
{
@@ -3571,6 +3596,7 @@
"optimize_function_for_speed_p (cfun)
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))
&& (reload_in_progress || reload_completed
+ || (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
|| GET_CODE (operands[1]) != CONST_DOUBLE
|| memory_operand (operands[0], XFmode))"
{
@@ -3715,7 +3741,7 @@
}
else if (FP_REG_P (r))
{
- if (!standard_80387_constant_p (c))
+ if (standard_80387_constant_p (c) < 1)
FAIL;
}
else if (MMX_REG_P (r))
@@ -3747,7 +3773,7 @@
}
else if (FP_REG_P (r))
{
- if (!standard_80387_constant_p (c))
+ if (standard_80387_constant_p (c) < 1)
FAIL;
}
else if (MMX_REG_P (r))
@@ -17658,7 +17684,8 @@
(set (match_operand:DI 1 "register_operand" "=S")
(plus:DI (match_dup 3)
(const_int 8)))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"movsq"
[(set_attr "type" "str")
(set_attr "mode" "DI")
@@ -17673,7 +17700,8 @@
(set (match_operand:SI 1 "register_operand" "=S")
(plus:SI (match_dup 3)
(const_int 4)))]
- "!TARGET_64BIT"
+ "!TARGET_64BIT
+ && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"movs{l|d}"
[(set_attr "type" "str")
(set_attr "mode" "SI")
@@ -17688,7 +17716,8 @@
(set (match_operand:DI 1 "register_operand" "=S")
(plus:DI (match_dup 3)
(const_int 4)))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"movs{l|d}"
[(set_attr "type" "str")
(set_attr "mode" "SI")
@@ -17703,7 +17732,8 @@
(set (match_operand:SI 1 "register_operand" "=S")
(plus:SI (match_dup 3)
(const_int 2)))]
- "!TARGET_64BIT"
+ "!TARGET_64BIT
+ && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"movsw"
[(set_attr "type" "str")
(set_attr "memory" "both")
@@ -17718,7 +17748,8 @@
(set (match_operand:DI 1 "register_operand" "=S")
(plus:DI (match_dup 3)
(const_int 2)))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"movsw"
[(set_attr "type" "str")
(set_attr "memory" "both")
@@ -17733,7 +17764,8 @@
(set (match_operand:SI 1 "register_operand" "=S")
(plus:SI (match_dup 3)
(const_int 1)))]
- "!TARGET_64BIT"
+ "!TARGET_64BIT
+ && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"movsb"
[(set_attr "type" "str")
(set_attr "memory" "both")
@@ -17748,7 +17780,8 @@
(set (match_operand:DI 1 "register_operand" "=S")
(plus:DI (match_dup 3)
(const_int 1)))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"movsb"
[(set_attr "type" "str")
(set_attr "memory" "both")
@@ -17779,7 +17812,8 @@
(set (mem:BLK (match_dup 3))
(mem:BLK (match_dup 4)))
(use (match_dup 5))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"rep{%;} movsq"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -17798,7 +17832,8 @@
(set (mem:BLK (match_dup 3))
(mem:BLK (match_dup 4)))
(use (match_dup 5))]
- "!TARGET_64BIT"
+ "!TARGET_64BIT
+ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"rep{%;} movs{l|d}"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -17817,7 +17852,8 @@
(set (mem:BLK (match_dup 3))
(mem:BLK (match_dup 4)))
(use (match_dup 5))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"rep{%;} movs{l|d}"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -17834,7 +17870,8 @@
(set (mem:BLK (match_dup 3))
(mem:BLK (match_dup 4)))
(use (match_dup 5))]
- "!TARGET_64BIT"
+ "!TARGET_64BIT
+ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"rep{%;} movsb"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -17851,7 +17888,8 @@
(set (mem:BLK (match_dup 3))
(mem:BLK (match_dup 4)))
(use (match_dup 5))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"rep{%;} movsb"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -17911,7 +17949,9 @@
operands[3] = gen_rtx_PLUS (Pmode, operands[0],
GEN_INT (GET_MODE_SIZE (GET_MODE
(operands[2]))));
- if (TARGET_SINGLE_STRINGOP || optimize_insn_for_size_p ())
+ /* Can't use this if the user has appropriated eax or edi. */
+ if ((TARGET_SINGLE_STRINGOP || optimize_insn_for_size_p ())
+ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG]))
{
emit_insn (gen_strset_singleop (operands[0], operands[1], operands[2],
operands[3]));
@@ -17933,7 +17973,8 @@
(set (match_operand:DI 0 "register_operand" "=D")
(plus:DI (match_dup 1)
(const_int 8)))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
"stosq"
[(set_attr "type" "str")
(set_attr "memory" "store")
@@ -17945,7 +17986,8 @@
(set (match_operand:SI 0 "register_operand" "=D")
(plus:SI (match_dup 1)
(const_int 4)))]
- "!TARGET_64BIT"
+ "!TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
"stos{l|d}"
[(set_attr "type" "str")
(set_attr "memory" "store")
@@ -17957,7 +17999,8 @@
(set (match_operand:DI 0 "register_operand" "=D")
(plus:DI (match_dup 1)
(const_int 4)))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
"stos{l|d}"
[(set_attr "type" "str")
(set_attr "memory" "store")
@@ -17969,7 +18012,8 @@
(set (match_operand:SI 0 "register_operand" "=D")
(plus:SI (match_dup 1)
(const_int 2)))]
- "!TARGET_64BIT"
+ "!TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
"stosw"
[(set_attr "type" "str")
(set_attr "memory" "store")
@@ -17981,7 +18025,8 @@
(set (match_operand:DI 0 "register_operand" "=D")
(plus:DI (match_dup 1)
(const_int 2)))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
"stosw"
[(set_attr "type" "str")
(set_attr "memory" "store")
@@ -17993,7 +18038,8 @@
(set (match_operand:SI 0 "register_operand" "=D")
(plus:SI (match_dup 1)
(const_int 1)))]
- "!TARGET_64BIT"
+ "!TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
"stosb"
[(set_attr "type" "str")
(set_attr "memory" "store")
@@ -18005,7 +18051,8 @@
(set (match_operand:DI 0 "register_operand" "=D")
(plus:DI (match_dup 1)
(const_int 1)))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
"stosb"
[(set_attr "type" "str")
(set_attr "memory" "store")
@@ -18032,7 +18079,8 @@
(const_int 0))
(use (match_operand:DI 2 "register_operand" "a"))
(use (match_dup 4))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])"
"rep{%;} stosq"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -18049,7 +18097,8 @@
(const_int 0))
(use (match_operand:SI 2 "register_operand" "a"))
(use (match_dup 4))]
- "!TARGET_64BIT"
+ "!TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])"
"rep{%;} stos{l|d}"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -18066,7 +18115,8 @@
(const_int 0))
(use (match_operand:SI 2 "register_operand" "a"))
(use (match_dup 4))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])"
"rep{%;} stos{l|d}"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -18082,7 +18132,8 @@
(const_int 0))
(use (match_operand:QI 2 "register_operand" "a"))
(use (match_dup 4))]
- "!TARGET_64BIT"
+ "!TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])"
"rep{%;} stosb"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -18098,7 +18149,8 @@
(const_int 0))
(use (match_operand:QI 2 "register_operand" "a"))
(use (match_dup 4))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])"
"rep{%;} stosb"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -18119,8 +18171,8 @@
if (optimize_insn_for_size_p () && !TARGET_INLINE_ALL_STRINGOPS)
FAIL;
- /* Can't use this if the user has appropriated esi or edi. */
- if (fixed_regs[SI_REG] || fixed_regs[DI_REG])
+ /* Can't use this if the user has appropriated ecx, esi or edi. */
+ if (fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])
FAIL;
out = operands[0];
@@ -18214,7 +18266,8 @@
(clobber (match_operand:SI 0 "register_operand" "=S"))
(clobber (match_operand:SI 1 "register_operand" "=D"))
(clobber (match_operand:SI 2 "register_operand" "=c"))]
- "!TARGET_64BIT"
+ "!TARGET_64BIT
+ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"repz{%;} cmpsb"
[(set_attr "type" "str")
(set_attr "mode" "QI")
@@ -18229,7 +18282,8 @@
(clobber (match_operand:DI 0 "register_operand" "=S"))
(clobber (match_operand:DI 1 "register_operand" "=D"))
(clobber (match_operand:DI 2 "register_operand" "=c"))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"repz{%;} cmpsb"
[(set_attr "type" "str")
(set_attr "mode" "QI")
@@ -18265,7 +18319,8 @@
(clobber (match_operand:SI 0 "register_operand" "=S"))
(clobber (match_operand:SI 1 "register_operand" "=D"))
(clobber (match_operand:SI 2 "register_operand" "=c"))]
- "!TARGET_64BIT"
+ "!TARGET_64BIT
+ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"repz{%;} cmpsb"
[(set_attr "type" "str")
(set_attr "mode" "QI")
@@ -18283,7 +18338,8 @@
(clobber (match_operand:DI 0 "register_operand" "=S"))
(clobber (match_operand:DI 1 "register_operand" "=D"))
(clobber (match_operand:DI 2 "register_operand" "=c"))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"repz{%;} cmpsb"
[(set_attr "type" "str")
(set_attr "mode" "QI")
@@ -18295,7 +18351,7 @@
(unspec:SI [(match_operand:BLK 1 "general_operand" "")
(match_operand:QI 2 "immediate_operand" "")
(match_operand 3 "immediate_operand" "")] UNSPEC_SCAS))]
- ""
+ "!TARGET_64BIT"
{
if (ix86_expand_strlen (operands[0], operands[1], operands[2], operands[3]))
DONE;
@@ -18308,7 +18364,7 @@
(unspec:DI [(match_operand:BLK 1 "general_operand" "")
(match_operand:QI 2 "immediate_operand" "")
(match_operand 3 "immediate_operand" "")] UNSPEC_SCAS))]
- ""
+ "TARGET_64BIT"
{
if (ix86_expand_strlen (operands[0], operands[1], operands[2], operands[3]))
DONE;
@@ -18331,7 +18387,8 @@
(match_operand:SI 4 "register_operand" "0")] UNSPEC_SCAS))
(clobber (match_operand:SI 1 "register_operand" "=D"))
(clobber (reg:CC FLAGS_REG))]
- "!TARGET_64BIT"
+ "!TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])"
"repnz{%;} scasb"
[(set_attr "type" "str")
(set_attr "mode" "QI")
@@ -18345,7 +18402,8 @@
(match_operand:DI 4 "register_operand" "0")] UNSPEC_SCAS))
(clobber (match_operand:DI 1 "register_operand" "=D"))
(clobber (reg:CC FLAGS_REG))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])"
"repnz{%;} scasb"
[(set_attr "type" "str")
(set_attr "mode" "QI")
@@ -18499,7 +18557,8 @@
(define_insn "*x86_mov<mode>cc_0_m1_neg"
[(set (match_operand:SWI48 0 "register_operand" "=r")
(neg:SWI48 (match_operator 1 "ix86_carry_flag_operator"
- [(reg FLAGS_REG) (const_int 0)])))]
+ [(reg FLAGS_REG) (const_int 0)])))
+ (clobber (reg:CC FLAGS_REG))]
""
"sbb{<imodesuffix>}\t%0, %0"
[(set_attr "type" "alu")
diff -rNU3 -x *.info dist/gcc/config/i386/linux-unwind.h dist.nbsd/gcc/config/i386/linux-unwind.h
--- dist/gcc/config/i386/linux-unwind.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/i386/linux-unwind.h Wed Nov 7 11:47:24 2012
@@ -1,5 +1,5 @@
/* DWARF2 EH unwinding support for AMD x86-64 and x86.
- Copyright (C) 2004, 2005, 2006, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2006, 2009, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -133,9 +133,9 @@
{
struct rt_sigframe {
int sig;
- struct siginfo *pinfo;
+ siginfo_t *pinfo;
void *puc;
- struct siginfo info;
+ siginfo_t info;
struct ucontext uc;
} *rt_ = context->cfa;
/* The void * cast is necessary to avoid an aliasing warning.
diff -rNU3 -x *.info dist/gcc/config/i386/mmx.md dist.nbsd/gcc/config/i386/mmx.md
--- dist/gcc/config/i386/mmx.md Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/i386/mmx.md Wed Nov 7 11:47:24 2012
@@ -63,6 +63,7 @@
DONE;
})
+;; movd instead of movq is required to handle broken assemblers.
(define_insn "*mov<mode>_internal_rex64"
[(set (match_operand:MMXMODEI8 0 "nonimmediate_operand"
"=rm,r,!?y,!?y ,m ,!y,*Y2,x,x ,m,r,Yi")
@@ -81,8 +82,8 @@
%vpxor\t%0, %d0
%vmovq\t{%1, %0|%0, %1}
%vmovq\t{%1, %0|%0, %1}
- %vmovq\t{%1, %0|%0, %1}
- %vmovq\t{%1, %0|%0, %1}"
+ %vmovd\t{%1, %0|%0, %1}
+ %vmovd\t{%1, %0|%0, %1}"
[(set_attr "type" "imov,imov,mmx,mmxmov,mmxmov,ssecvt,ssecvt,sselog1,ssemov,ssemov,ssemov,ssemov")
(set_attr "unit" "*,*,*,*,*,mmx,mmx,*,*,*,*,*")
(set_attr "prefix_rep" "*,*,*,*,*,1,1,*,1,*,*,*")
@@ -192,6 +193,7 @@
(const_string "orig")))
(set_attr "mode" "DI,DI,DI,DI,DI,DI,DI,V4SF,V4SF,V2SF,V2SF,DI,DI")])
+;; movd instead of movq is required to handle broken assemblers.
(define_insn "*movv2sf_internal_rex64"
[(set (match_operand:V2SF 0 "nonimmediate_operand"
"=rm,r ,!?y,!?y ,m ,!y,*Y2,x,x,x,m,r,Yi")
diff -rNU3 -x *.info dist/gcc/config/i386/netbsd-elf.h dist.nbsd/gcc/config/i386/netbsd-elf.h
--- dist/gcc/config/i386/netbsd-elf.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/i386/netbsd-elf.h Wed Nov 7 11:47:24 2012
@@ -122,3 +122,11 @@
#define ENABLE_EXECUTE_STACK NETBSD_ENABLE_EXECUTE_STACK
#define TARGET_VERSION fprintf (stderr, " (NetBSD/i386 ELF)");
+
+#undef X87_ENABLE_ARITH
+#define X87_ENABLE_ARITH(MODE) \
+ (flag_excess_precision == EXCESS_PRECISION_FAST || (MODE) == DFmode)
+
+/* Preserve i386 psABI */
+#undef PREFERRED_STACK_BOUNDARY_DEFAULT
+#define PREFERRED_STACK_BOUNDARY_DEFAULT MIN_STACK_BOUNDARY
diff -rNU3 -x *.info dist/gcc/config/i386/netbsd64.h dist.nbsd/gcc/config/i386/netbsd64.h
--- dist/gcc/config/i386/netbsd64.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/i386/netbsd64.h Wed Nov 7 11:47:24 2012
@@ -70,3 +70,7 @@
#define ENABLE_EXECUTE_STACK NETBSD_ENABLE_EXECUTE_STACK
#define TARGET_VERSION fprintf (stderr, " (NetBSD/x86_64 ELF)");
+
+/* Preserve i386 psABI */
+#undef PREFERRED_STACK_BOUNDARY_DEFAULT
+#define PREFERRED_STACK_BOUNDARY_DEFAULT MIN_STACK_BOUNDARY
diff -rNU3 -x *.info dist/gcc/config/i386/sse.md dist.nbsd/gcc/config/i386/sse.md
--- dist/gcc/config/i386/sse.md Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/i386/sse.md Wed Nov 7 11:47:24 2012
@@ -354,18 +354,7 @@
DONE;
})
-(define_expand "avx_movup<avxmodesuffixf2c><avxmodesuffix>"
- [(set (match_operand:AVXMODEF2P 0 "nonimmediate_operand" "")
- (unspec:AVXMODEF2P
- [(match_operand:AVXMODEF2P 1 "nonimmediate_operand" "")]
- UNSPEC_MOVU))]
- "AVX_VEC_FLOAT_MODE_P (<MODE>mode)"
-{
- if (MEM_P (operands[0]) && MEM_P (operands[1]))
- operands[1] = force_reg (<MODE>mode, operands[1]);
-})
-
-(define_insn "*avx_movup<avxmodesuffixf2c><avxmodesuffix>"
+(define_insn "avx_movup<avxmodesuffixf2c><avxmodesuffix>"
[(set (match_operand:AVXMODEF2P 0 "nonimmediate_operand" "=x,m")
(unspec:AVXMODEF2P
[(match_operand:AVXMODEF2P 1 "nonimmediate_operand" "xm,x")]
@@ -391,18 +380,7 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "TI")])
-(define_expand "<sse>_movup<ssemodesuffixf2c>"
- [(set (match_operand:SSEMODEF2P 0 "nonimmediate_operand" "")
- (unspec:SSEMODEF2P
- [(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "")]
- UNSPEC_MOVU))]
- "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
-{
- if (MEM_P (operands[0]) && MEM_P (operands[1]))
- operands[1] = force_reg (<MODE>mode, operands[1]);
-})
-
-(define_insn "*<sse>_movup<ssemodesuffixf2c>"
+(define_insn "<sse>_movup<ssemodesuffixf2c>"
[(set (match_operand:SSEMODEF2P 0 "nonimmediate_operand" "=x,m")
(unspec:SSEMODEF2P
[(match_operand:SSEMODEF2P 1 "nonimmediate_operand" "xm,x")]
@@ -414,18 +392,7 @@
(set_attr "movu" "1")
(set_attr "mode" "<MODE>")])
-(define_expand "avx_movdqu<avxmodesuffix>"
- [(set (match_operand:AVXMODEQI 0 "nonimmediate_operand" "")
- (unspec:AVXMODEQI
- [(match_operand:AVXMODEQI 1 "nonimmediate_operand" "")]
- UNSPEC_MOVU))]
- "TARGET_AVX"
-{
- if (MEM_P (operands[0]) && MEM_P (operands[1]))
- operands[1] = force_reg (<MODE>mode, operands[1]);
-})
-
-(define_insn "*avx_movdqu<avxmodesuffix>"
+(define_insn "avx_movdqu<avxmodesuffix>"
[(set (match_operand:AVXMODEQI 0 "nonimmediate_operand" "=x,m")
(unspec:AVXMODEQI
[(match_operand:AVXMODEQI 1 "nonimmediate_operand" "xm,x")]
@@ -437,17 +404,7 @@
(set_attr "prefix" "vex")
(set_attr "mode" "<avxvecmode>")])
-(define_expand "sse2_movdqu"
- [(set (match_operand:V16QI 0 "nonimmediate_operand" "")
- (unspec:V16QI [(match_operand:V16QI 1 "nonimmediate_operand" "")]
- UNSPEC_MOVU))]
- "TARGET_SSE2"
-{
- if (MEM_P (operands[0]) && MEM_P (operands[1]))
- operands[1] = force_reg (V16QImode, operands[1]);
-})
-
-(define_insn "*sse2_movdqu"
+(define_insn "sse2_movdqu"
[(set (match_operand:V16QI 0 "nonimmediate_operand" "=x,m")
(unspec:V16QI [(match_operand:V16QI 1 "nonimmediate_operand" "xm,x")]
UNSPEC_MOVU))]
@@ -1268,15 +1225,15 @@
(parallel [(const_int 0)]))
(vec_select:DF (match_dup 1) (parallel [(const_int 1)])))
(plusminus:DF
- (vec_select:DF (match_dup 1) (parallel [(const_int 2)]))
- (vec_select:DF (match_dup 1) (parallel [(const_int 3)]))))
- (vec_concat:V2DF
- (plusminus:DF
(vec_select:DF
(match_operand:V4DF 2 "nonimmediate_operand" "xm")
(parallel [(const_int 0)]))
- (vec_select:DF (match_dup 2) (parallel [(const_int 1)])))
+ (vec_select:DF (match_dup 2) (parallel [(const_int 1)]))))
+ (vec_concat:V2DF
(plusminus:DF
+ (vec_select:DF (match_dup 1) (parallel [(const_int 2)]))
+ (vec_select:DF (match_dup 1) (parallel [(const_int 3)])))
+ (plusminus:DF
(vec_select:DF (match_dup 2) (parallel [(const_int 2)]))
(vec_select:DF (match_dup 2) (parallel [(const_int 3)]))))))]
"TARGET_AVX"
@@ -3904,7 +3861,7 @@
"TARGET_SSE"
{
if (!TARGET_AVX)
- operands[1] = force_reg (V4SFmode, operands[1]);
+ operands[1] = force_reg (SFmode, operands[1]);
})
(define_insn "*vec_dupv4sf_avx"
@@ -4551,15 +4508,14 @@
[(set (match_operand:V4DF 0 "register_operand" "=x,x")
(vec_select:V4DF
(vec_concat:V8DF
- (match_operand:V4DF 1 "nonimmediate_operand" "xm,x")
- (match_operand:V4DF 2 "nonimmediate_operand" " 1,xm"))
+ (match_operand:V4DF 1 "nonimmediate_operand" " x,m")
+ (match_operand:V4DF 2 "nonimmediate_operand" "xm,1"))
(parallel [(const_int 0) (const_int 4)
(const_int 2) (const_int 6)])))]
- "TARGET_AVX
- && (!MEM_P (operands[1]) || rtx_equal_p (operands[1], operands[2]))"
+ "TARGET_AVX"
"@
- vmovddup\t{%1, %0|%0, %1}
- vunpcklpd\t{%2, %1, %0|%0, %1, %2}"
+ vunpcklpd\t{%2, %1, %0|%0, %1, %2}
+ vmovddup\t{%1, %0|%0, %1}"
[(set_attr "type" "sselog")
(set_attr "prefix" "vex")
(set_attr "mode" "V4DF")])
@@ -4964,24 +4920,22 @@
;; Avoid combining registers from different units in a single alternative,
;; see comment above inline_secondary_memory_needed function in i386.c
(define_insn "sse2_loadhpd"
- [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,x,o,o,o")
+ [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,o,o,o")
(vec_concat:V2DF
(vec_select:DF
- (match_operand:V2DF 1 "nonimmediate_operand" " 0,0,x,0,0,0")
+ (match_operand:V2DF 1 "nonimmediate_operand" " 0,0,0,0,0")
(parallel [(const_int 0)]))
- (match_operand:DF 2 "nonimmediate_operand" " m,x,0,x,*f,r")))]
+ (match_operand:DF 2 "nonimmediate_operand" " m,x,x,*f,r")))]
"TARGET_SSE2 && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
"@
movhpd\t{%2, %0|%0, %2}
unpcklpd\t{%2, %0|%0, %2}
- shufpd\t{$1, %1, %0|%0, %1, 1}
#
#
#"
- [(set_attr "type" "ssemov,sselog,sselog,ssemov,fmov,imov")
- (set_attr "prefix_data16" "1,*,*,*,*,*")
- (set_attr "length_immediate" "*,*,1,*,*,*")
- (set_attr "mode" "V1DF,V2DF,V2DF,DF,DF,DF")])
+ [(set_attr "type" "ssemov,sselog,ssemov,fmov,imov")
+ (set_attr "prefix_data16" "1,*,*,*,*")
+ (set_attr "mode" "V1DF,V2DF,DF,DF,DF")])
(define_split
[(set (match_operand:V2DF 0 "memory_operand" "")
@@ -5137,6 +5091,16 @@
(set_attr "length_immediate" "*,*,*,1,*,*")
(set_attr "mode" "DF,V1DF,V1DF,V2DF,V1DF,V1DF")])
+(define_expand "vec_dupv2df"
+ [(set (match_operand:V2DF 0 "register_operand" "")
+ (vec_duplicate:V2DF
+ (match_operand:DF 1 "nonimmediate_operand" "")))]
+ "TARGET_SSE2"
+{
+ if (!TARGET_SSE3)
+ operands[1] = force_reg (DFmode, operands[1]);
+})
+
(define_insn "*vec_dupv2df_sse3"
[(set (match_operand:V2DF 0 "register_operand" "=x")
(vec_duplicate:V2DF
@@ -5147,7 +5111,7 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "DF")])
-(define_insn "vec_dupv2df"
+(define_insn "*vec_dupv2df"
[(set (match_operand:V2DF 0 "register_operand" "=x")
(vec_duplicate:V2DF
(match_operand:DF 1 "register_operand" "0")))]
@@ -7473,9 +7437,8 @@
"@
#
#
- %vmov{q}\t{%1, %0|%0, %1}"
+ mov{q}\t{%1, %0|%0, %1}"
[(set_attr "type" "*,*,imov")
- (set_attr "prefix" "*,*,maybe_vex")
(set_attr "mode" "*,*,DI")])
(define_insn "*sse2_storeq"
@@ -7513,11 +7476,11 @@
vmovhps\t{%1, %0|%0, %1}
vpsrldq\t{$8, %1, %0|%0, %1, 8}
vmovq\t{%H1, %0|%0, %H1}
- vmov{q}\t{%H1, %0|%0, %H1}"
+ mov{q}\t{%H1, %0|%0, %H1}"
[(set_attr "type" "ssemov,sseishft1,ssemov,imov")
(set_attr "length_immediate" "*,1,*,*")
(set_attr "memory" "*,none,*,*")
- (set_attr "prefix" "vex")
+ (set_attr "prefix" "vex,vex,vex,orig")
(set_attr "mode" "V2SF,TI,TI,DI")])
(define_insn "*vec_extractv2di_1_rex64"
@@ -7795,6 +7758,7 @@
(const_string "vex")))
(set_attr "mode" "TI,TI,TI,TI,TI,V2SF")])
+;; movd instead of movq is required to handle broken assemblers.
(define_insn "*vec_concatv2di_rex64_sse4_1"
[(set (match_operand:V2DI 0 "register_operand" "=x ,x ,Yi,!x,x,x,x")
(vec_concat:V2DI
@@ -7804,7 +7768,7 @@
"@
pinsrq\t{$0x1, %2, %0|%0, %2, 0x1}
movq\t{%1, %0|%0, %1}
- movq\t{%1, %0|%0, %1}
+ movd\t{%1, %0|%0, %1}
movq2dq\t{%1, %0|%0, %1}
punpcklqdq\t{%2, %0|%0, %2}
movlhps\t{%2, %0|%0, %2}
@@ -7815,6 +7779,7 @@
(set_attr "length_immediate" "1,*,*,*,*,*,*")
(set_attr "mode" "TI,TI,TI,TI,TI,V4SF,V2SF")])
+;; movd instead of movq is required to handle broken assemblers.
(define_insn "*vec_concatv2di_rex64_sse"
[(set (match_operand:V2DI 0 "register_operand" "=Y2 ,Yi,!Y2,Y2,x,x")
(vec_concat:V2DI
@@ -7823,7 +7788,7 @@
"TARGET_64BIT && TARGET_SSE"
"@
movq\t{%1, %0|%0, %1}
- movq\t{%1, %0|%0, %1}
+ movd\t{%1, %0|%0, %1}
movq2dq\t{%1, %0|%0, %1}
punpcklqdq\t{%2, %0|%0, %2}
movlhps\t{%2, %0|%0, %2}
@@ -10576,8 +10541,8 @@
[(set (match_operand:SSEMODE 0 "register_operand" "=x,x")
(if_then_else:SSEMODE
(match_operand:SSEMODE 3 "nonimmediate_operand" "x,m")
- (match_operand:SSEMODE 1 "vector_move_operand" "x,x")
- (match_operand:SSEMODE 2 "vector_move_operand" "xm,x")))]
+ (match_operand:SSEMODE 1 "register_operand" "x,x")
+ (match_operand:SSEMODE 2 "nonimmediate_operand" "xm,x")))]
"TARGET_XOP"
"vpcmov\t{%3, %2, %1, %0|%0, %1, %2, %3}"
[(set_attr "type" "sse4arg")])
@@ -10586,8 +10551,8 @@
[(set (match_operand:AVX256MODE 0 "register_operand" "=x,x")
(if_then_else:AVX256MODE
(match_operand:AVX256MODE 3 "nonimmediate_operand" "x,m")
- (match_operand:AVX256MODE 1 "vector_move_operand" "x,x")
- (match_operand:AVX256MODE 2 "vector_move_operand" "xm,x")))]
+ (match_operand:AVX256MODE 1 "register_operand" "x,x")
+ (match_operand:AVX256MODE 2 "nonimmediate_operand" "xm,x")))]
"TARGET_XOP"
"vpcmov\t{%3, %2, %1, %0|%0, %1, %2, %3}"
[(set_attr "type" "sse4arg")])
@@ -12136,8 +12101,7 @@
[(set (match_operand:AVXMODEF2P 0 "register_operand" "=x")
(unspec:AVXMODEF2P
[(match_operand:AVXMODEF2P 1 "memory_operand" "m")
- (match_operand:<avxpermvecmode> 2 "register_operand" "x")
- (match_dup 0)]
+ (match_operand:<avxpermvecmode> 2 "register_operand" "x")]
UNSPEC_MASKLOAD))]
"TARGET_AVX"
"vmaskmovp<avxmodesuffixf2c>\t{%1, %2, %0|%0, %2, %1}"
diff -rNU3 -x *.info dist/gcc/config/i386/t-netbsd64 dist.nbsd/gcc/config/i386/t-netbsd64
--- dist/gcc/config/i386/t-netbsd64 Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/config/i386/t-netbsd64 Wed Nov 7 11:47:24 2012
@@ -0,0 +1,15 @@
+# NetBSD has (will have) "non-native" libraries in /usr/lib/<arch>.
+# For NetBSD/amd64 we thus have /usr/lib and /usr/lib/i386.
+
+MULTILIB_OPTIONS = m64/m32
+MULTILIB_DIRNAMES = 64 32
+MULTILIB_OSDIRNAMES = . ../lib/i386
+
+LIBGCC = stmp-multilib
+INSTALL_LIBGCC = install-multilib
+
+# The pushl in CTOR initialization interferes with frame pointer elimination.
+# crtend*.o cannot be compiled without -fno-asynchronous-unwind-tables,
+# because then __FRAME_END__ might not be the last thing in .eh_frame
+# section.
+CRTSTUFF_T_CFLAGS += -fno-omit-frame-pointer -fno-asynchronous-unwind-tables
diff -rNU3 -x *.info dist/gcc/config/i386/winnt-cxx.c dist.nbsd/gcc/config/i386/winnt-cxx.c
--- dist/gcc/config/i386/winnt-cxx.c Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/i386/winnt-cxx.c Wed Nov 7 11:47:24 2012
@@ -101,6 +101,20 @@
if (lookup_attribute ("dllexport", TYPE_ATTRIBUTES (t)) != NULL_TREE)
{
+ tree tmv = TYPE_MAIN_VARIANT (t);
+
+ /* Make sure that we set dllexport attribute to typeinfo's
+ base declaration, as otherwise it would fail to be exported as
+ it isn't a class-member. */
+ if (tmv != NULL_TREE
+ && CLASSTYPE_TYPEINFO_VAR (tmv) != NULL_TREE)
+ {
+ tree na, ti_decl = CLASSTYPE_TYPEINFO_VAR (tmv);
+ na = tree_cons (get_identifier ("dllexport"), NULL_TREE,
+ NULL_TREE);
+ decl_attributes (&ti_decl, na, 0);
+ }
+
/* Check static VAR_DECL's. */
for (member = TYPE_FIELDS (t); member; member = TREE_CHAIN (member))
if (TREE_CODE (member) == VAR_DECL)
diff -rNU3 -x *.info dist/gcc/config/ia64/linux-unwind.h dist.nbsd/gcc/config/ia64/linux-unwind.h
--- dist/gcc/config/ia64/linux-unwind.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/ia64/linux-unwind.h Wed Nov 7 11:47:24 2012
@@ -1,5 +1,5 @@
/* DWARF2 EH unwinding support for IA64 Linux.
- Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -47,7 +47,7 @@
struct sigframe {
char scratch[16];
unsigned long sig_number;
- struct siginfo *info;
+ siginfo_t *info;
struct sigcontext *sc;
} *frame_ = (struct sigframe *)context->psp;
struct sigcontext *sc = frame_->sc;
@@ -137,7 +137,7 @@
struct sigframe {
char scratch[16];
unsigned long sig_number;
- struct siginfo *info;
+ siginfo_t *info;
struct sigcontext *sc;
} *frame = (struct sigframe *)context->psp;
struct sigcontext *sc = frame->sc;
diff -rNU3 -x *.info dist/gcc/config/ia64/netbsd.h dist.nbsd/gcc/config/ia64/netbsd.h
--- dist/gcc/config/ia64/netbsd.h Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/config/ia64/netbsd.h Wed Nov 7 11:47:24 2012
@@ -0,0 +1,56 @@
+/* Definitions of target machine for GNU compiler,
+ for ia64/ELF NetBSD systems.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC 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 2, or (at your option)
+any later version.
+
+GNU CC 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 GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#define TARGET_OS_CPP_BUILTINS() \
+ do \
+ { \
+ NETBSD_OS_CPP_BUILTINS_ELF(); \
+ } \
+ while (0)
+
+
+/* Extra specs needed for NetBSD/ia-64 ELF. */
+
+#undef SUBTARGET_EXTRA_SPECS
+#define SUBTARGET_EXTRA_SPECS \
+ { "netbsd_cpp_spec", NETBSD_CPP_SPEC }, \
+ { "netbsd_link_spec", NETBSD_LINK_SPEC_ELF }, \
+ { "netbsd_entry_point", NETBSD_ENTRY_POINT },
+
+
+/* Provide a LINK_SPEC appropriate for a NetBSD/ia64 ELF target. */
+
+#undef LINK_SPEC
+#define LINK_SPEC "%(netbsd_link_spec)"
+
+#define NETBSD_ENTRY_POINT "_start"
+
+
+/* Provide a CPP_SPEC appropriate for NetBSD. */
+
+#undef CPP_SPEC
+#define CPP_SPEC "%(netbsd_cpp_spec)"
+
+
+/* Attempt to enable execute permissions on the stack. */
+#define TRANSFER_FROM_TRAMPOLINE NETBSD_ENABLE_EXECUTE_STACK
+
+#define TARGET_VERSION fprintf (stderr, " (NetBSD/ia64 ELF)");
diff -rNU3 -x *.info dist/gcc/config/lm32/t-lm32 dist.nbsd/gcc/config/lm32/t-lm32
--- dist/gcc/config/lm32/t-lm32 Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/lm32/t-lm32 Wed Nov 7 11:47:24 2012
@@ -1,2 +1,2 @@
# for multilib
-MULTILIB_OPTIONS = mmultiply-enabled mbarrel-shift-enabled
+MULTILIB_OPTIONS = mbarrel-shift-enabled mmultiply-enabled mdivide-enabled msign-extend-enabled
diff -rNU3 -x *.info dist/gcc/config/m68k/constraints.md dist.nbsd/gcc/config/m68k/constraints.md
--- dist/gcc/config/m68k/constraints.md Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/m68k/constraints.md Wed Nov 7 11:47:24 2012
@@ -94,7 +94,8 @@
(define_constraint "T"
"Used for operands that satisfy 's' when -mpcrel is not in effect."
(and (match_code "symbol_ref,label_ref,const")
- (match_test "!flag_pic")))
+ (match_test "!TARGET_PCREL")
+ (match_test "!flag_pic || LEGITIMATE_PIC_OPERAND_P (op)")))
(define_memory_constraint "Q"
"Means address register indirect addressing mode."
diff -rNU3 -x *.info dist/gcc/config/m68k/fpgnulib.c dist.nbsd/gcc/config/m68k/fpgnulib.c
--- dist/gcc/config/m68k/fpgnulib.c Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/m68k/fpgnulib.c Wed Nov 7 11:47:24 2012
@@ -549,6 +549,7 @@
return - (double) x1;
}
+long __cmpdf2 (double, double);
long
__cmpxf2 (long double x1, long double x2)
{
diff -rNU3 -x *.info dist/gcc/config/m68k/lb1sf68.asm dist.nbsd/gcc/config/m68k/lb1sf68.asm
--- dist/gcc/config/m68k/lb1sf68.asm Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/m68k/lb1sf68.asm Wed Nov 7 11:47:24 2012
@@ -211,7 +211,7 @@
/* ISA C has no bra.l instruction, and since this assembly file
gets assembled into multiple object files, we avoid the
bra instruction entirely. */
-#if defined (__mcoldfire__) && !defined (__mcfisab__)
+#if (defined (__mcoldfire__) && !defined (__mcfisab__)) || defined(__NetBSD__)
lea \addr-.-8,a0
jmp pc@(a0)
#else
diff -rNU3 -x *.info dist/gcc/config/m68k/m68k.md dist.nbsd/gcc/config/m68k/m68k.md
--- dist/gcc/config/m68k/m68k.md Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/m68k/m68k.md Wed Nov 7 11:47:24 2012
@@ -3116,16 +3116,33 @@
;; We need a separate DEFINE_EXPAND for u?mulsidi3 to be able to use the
;; proper matching constraint. This is because the matching is between
;; the high-numbered word of the DImode operand[0] and operand[1].
+;;
+;; Note: life_analysis() does not keep track of the individual halves of the
+;; DImode register. To prevent spurious liveness before the u?mulsidi3 insn
+;; (which causes "uninitialized variable" warnings), we explicitly clobber
+;; the DImode register.
(define_expand "umulsidi3"
- [(parallel
- [(set (subreg:SI (match_operand:DI 0 "register_operand" "") 4)
- (mult:SI (match_operand:SI 1 "register_operand" "")
- (match_operand:SI 2 "register_operand" "")))
+ [(set (match_operand:DI 0 "register_operand" "")
+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" ""))
+ (zero_extend:DI (match_operand:SI 2 "register_operand" ""))))]
+ "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE"
+ "")
+
+(define_insn_and_split "*umulsidi3_split"
+ [(set (match_operand:DI 0 "register_operand" "")
+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" ""))
+ (zero_extend:DI (match_operand:SI 2 "register_operand" ""))))]
+ "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE"
+ "#"
+ "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE"
+ [(clobber (match_dup 0))
+ (parallel
+ [(set (subreg:SI (match_dup 0) 4)
+ (mult:SI (match_dup 1) (match_dup 2)))
(set (subreg:SI (match_dup 0) 0)
(truncate:SI (lshiftrt:DI (mult:DI (zero_extend:DI (match_dup 1))
(zero_extend:DI (match_dup 2)))
(const_int 32))))])]
- "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE"
"")
(define_insn ""
@@ -3156,15 +3173,27 @@
"mulu%.l %2,%3:%0")
(define_expand "mulsidi3"
- [(parallel
- [(set (subreg:SI (match_operand:DI 0 "register_operand" "") 4)
- (mult:SI (match_operand:SI 1 "register_operand" "")
- (match_operand:SI 2 "register_operand" "")))
+ [(set (match_operand:DI 0 "register_operand" "")
+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" ""))
+ (sign_extend:DI (match_operand:SI 2 "register_operand" ""))))]
+ "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE"
+ "")
+
+(define_insn_and_split "*mulsidi3_split"
+ [(set (match_operand:DI 0 "register_operand" "")
+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" ""))
+ (sign_extend:DI (match_operand:SI 2 "register_operand" ""))))]
+ "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE"
+ "#"
+ "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE"
+ [(clobber (match_dup 0))
+ (parallel
+ [(set (subreg:SI (match_dup 0) 4)
+ (mult:SI (match_dup 1) (match_dup 2)))
(set (subreg:SI (match_dup 0) 0)
(truncate:SI (lshiftrt:DI (mult:DI (sign_extend:DI (match_dup 1))
(sign_extend:DI (match_dup 2)))
(const_int 32))))])]
- "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE"
"")
(define_insn ""
diff -rNU3 -x *.info dist/gcc/config/m68k/netbsd-elf.h dist.nbsd/gcc/config/m68k/netbsd-elf.h
--- dist/gcc/config/m68k/netbsd-elf.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/m68k/netbsd-elf.h Wed Nov 7 11:47:24 2012
@@ -46,32 +46,61 @@
#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 80
#endif
+
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
+ { "cpp_cpu_default_spec", CPP_CPU_DEFAULT_SPEC }, \
+ { "cpp_cpu_spec", CPP_CPU_SPEC }, \
+ { "cpp_fpu_spec", CPP_FPU_SPEC }, \
+ { "asm_default_spec", ASM_DEFAULT_SPEC }, \
+ { "netbsd_cpp_spec", NETBSD_CPP_SPEC }, \
{ "netbsd_entry_point", NETBSD_ENTRY_POINT },
+#define CPP_CPU_SPEC \
+ "%{m68010:-D__mc68010__} \
+ %{m68020:-D__mc68020__} \
+ %{m68030:-D__mc68030__} \
+ %{m68040:-D__mc68040__} \
+ %(cpp_cpu_default_spec)"
+
+
#undef TARGET_VERSION
-#define TARGET_VERSION \
- fprintf (stderr, \
- TARGET_68010 \
- ? " (NetBSD/68010 ELF)" \
- : " (NetBSD/m68k ELF)");
+#if TARGET_DEFAULT & MASK_68020
+#define TARGET_VERSION fprintf (stderr, " (NetBSD/m68k ELF)");
+#define CPP_CPU_DEFAULT_SPEC "%{!m680*:-D__mc68020__}"
+#define ASM_DEFAULT_SPEC "%{!m680*:-m68020}"
+#else
+#define TARGET_VERSION fprintf (stderr, " (NetBSD/68010 ELF)");
+#define CPP_CPU_DEFAULT_SPEC "%{!m680*:-D__mc68010__}"
+#define ASM_DEFAULT_SPEC "%{!m680*:-m68010}"
+#endif
+#if TARGET_DEFAULT & MASK_68881
+#define CPP_FPU_SPEC "%{!msoft-float:-D__HAVE_68881__ -D__HAVE_FPU__}"
+#else
+#define CPP_FPU_SPEC "%{m68881:-D__HAVE_68881__ -D__HAVE_FPU__}"
+#endif
+
+
/* Provide a CPP_SPEC appropriate for NetBSD m68k targets. Currently we
deal with the GCC option '-posix', as well as an indication as to
whether or not use of the FPU is allowed. */
#undef CPP_SPEC
-#define CPP_SPEC NETBSD_CPP_SPEC
+#define CPP_SPEC \
+ "%(netbsd_cpp_spec) %(cpp_cpu_spec) %(cpp_fpu_spec)"
/* Provide an ASM_SPEC appropriate for NetBSD m68k ELF targets. We need
to pass PIC code generation options. */
#undef ASM_SPEC
-#define ASM_SPEC "%(asm_cpu_spec) %{fpic|fpie:-k} %{fPIC|fPIE:-k -K}"
+#define ASM_SPEC \
+ "%(asm_default_spec) \
+ %{m68010} %{m68020} %{m68030} %{m68040} %{m68060} \
+ %{fpic|fpie:-k} %{fPIC|fPIE:-k -K}"
#define AS_NEEDS_DASH_FOR_PIPED_INPUT
@@ -80,6 +109,11 @@
#undef LINK_SPEC
#define LINK_SPEC NETBSD_LINK_SPEC_ELF
+/* NetBSD/sun2 does not support shlibs, avoid using libgcc_pic. */
+#if TARGET_DEFAULT_CPU == 0
+#undef REAL_LIBGCC_SPEC
+#endif
+
#define NETBSD_ENTRY_POINT "_start"
/* Output assembler code to FILE to increment profiler label # LABELNO
@@ -289,6 +323,8 @@
#undef STACK_BOUNDARY
#define STACK_BOUNDARY 32
+#undef PREFERRED_STACK_BOUNDARY
+#define PREFERRED_STACK_BOUNDARY 32
/* Alignment of field after `int : 0' in a structure.
diff -rNU3 -x *.info dist/gcc/config/m68k/t-m68010-netbsd dist.nbsd/gcc/config/m68k/t-m68010-netbsd
--- dist/gcc/config/m68k/t-m68010-netbsd Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/config/m68k/t-m68010-netbsd Wed Nov 7 11:47:24 2012
@@ -0,0 +1,4 @@
+# Use unwind-dw2-fde-glibc
+LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \
+ $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c
+LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c
diff -rNU3 -x *.info dist/gcc/config/mips/linux-unwind.h dist.nbsd/gcc/config/mips/linux-unwind.h
--- dist/gcc/config/mips/linux-unwind.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/mips/linux-unwind.h Wed Nov 7 11:47:24 2012
@@ -1,5 +1,6 @@
/* DWARF2 EH unwinding support for MIPS Linux.
- Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2012 Free Software
+ Foundation, Inc.
This file is part of GCC.
@@ -75,7 +76,7 @@
struct rt_sigframe {
u_int32_t ass[4]; /* Argument save space for o32. */
u_int32_t trampoline[2];
- struct siginfo info;
+ siginfo_t info;
_sig_ucontext_t uc;
} *rt_ = context->cfa;
sc = &rt_->uc.uc_mcontext;
diff -rNU3 -x *.info dist/gcc/config/mips/mips.c dist.nbsd/gcc/config/mips/mips.c
--- dist/gcc/config/mips/mips.c Wed Nov 7 13:40:06 2012
+++ dist.nbsd/gcc/config/mips/mips.c Wed Nov 7 11:47:24 2012
@@ -1162,7 +1162,7 @@
}
};
-static rtx mips_find_pic_call_symbol (rtx, rtx);
+static rtx mips_find_pic_call_symbol (rtx, rtx, bool);
/* This hash table keeps track of implicit "mips16" and "nomips16" attributes
for -mflip_mips16. It maps decl names onto a boolean mode setting. */
@@ -9007,6 +9007,11 @@
static bool
mips_cfun_call_saved_reg_p (unsigned int regno)
{
+ /* If the user makes an ordinarily-call-saved register global,
+ that register is no longer call-saved. */
+ if (global_regs[regno])
+ return false;
+
/* Interrupt handlers need to save extra registers. */
if (cfun->machine->interrupt_handler_p
&& mips_interrupt_extra_call_saved_reg_p (regno))
@@ -14040,12 +14045,16 @@
}
/* REG is set in DEF. See if the definition is one of the ways we load a
- register with a symbol address for a mips_use_pic_fn_addr_reg_p call. If
- it is return the symbol reference of the function, otherwise return
- NULL_RTX. */
+ register with a symbol address for a mips_use_pic_fn_addr_reg_p call.
+ If it is, return the symbol reference of the function, otherwise return
+ NULL_RTX.
+ If RECURSE_P is true, use mips_find_pic_call_symbol to interpret
+ the values of source registers, otherwise treat such registers as
+ having an unknown value. */
+
static rtx
-mips_pic_call_symbol_from_set (df_ref def, rtx reg)
+mips_pic_call_symbol_from_set (df_ref def, rtx reg, bool recurse_p)
{
rtx def_insn, set;
@@ -14072,21 +14081,39 @@
return symbol;
}
- /* Follow simple register copies. */
- if (REG_P (src))
- return mips_find_pic_call_symbol (def_insn, src);
+ /* Follow at most one simple register copy. Such copies are
+ interesting in cases like:
+
+ for (...)
+ {
+ locally_binding_fn (...);
+ }
+
+ and:
+
+ locally_binding_fn (...);
+ ...
+ locally_binding_fn (...);
+
+ where the load of locally_binding_fn can legitimately be
+ hoisted or shared. However, we do not expect to see complex
+ chains of copies, so a full worklist solution to the problem
+ would probably be overkill. */
+ if (recurse_p && REG_P (src))
+ return mips_find_pic_call_symbol (def_insn, src, false);
}
return NULL_RTX;
}
-/* Find the definition of the use of REG in INSN. See if the definition is
- one of the ways we load a register with a symbol address for a
- mips_use_pic_fn_addr_reg_p call. If it is return the symbol reference of
- the function, otherwise return NULL_RTX. */
+/* Find the definition of the use of REG in INSN. See if the definition
+ is one of the ways we load a register with a symbol address for a
+ mips_use_pic_fn_addr_reg_p call. If it is return the symbol reference
+ of the function, otherwise return NULL_RTX. RECURSE_P is as for
+ mips_pic_call_symbol_from_set. */
static rtx
-mips_find_pic_call_symbol (rtx insn, rtx reg)
+mips_find_pic_call_symbol (rtx insn, rtx reg, bool recurse_p)
{
df_ref use;
struct df_link *defs;
@@ -14098,7 +14125,7 @@
defs = DF_REF_CHAIN (use);
if (!defs)
return NULL_RTX;
- symbol = mips_pic_call_symbol_from_set (defs->ref, reg);
+ symbol = mips_pic_call_symbol_from_set (defs->ref, reg, recurse_p);
if (!symbol)
return NULL_RTX;
@@ -14107,7 +14134,7 @@
{
rtx other;
- other = mips_pic_call_symbol_from_set (defs->ref, reg);
+ other = mips_pic_call_symbol_from_set (defs->ref, reg, recurse_p);
if (!rtx_equal_p (symbol, other))
return NULL_RTX;
}
@@ -14178,7 +14205,7 @@
if (!REG_P (reg))
continue;
- symbol = mips_find_pic_call_symbol (insn, reg);
+ symbol = mips_find_pic_call_symbol (insn, reg, true);
if (symbol)
{
mips_annotate_pic_call_expr (call, symbol);
diff -rNU3 -x *.info dist/gcc/config/mips/mips.md dist.nbsd/gcc/config/mips/mips.md
--- dist/gcc/config/mips/mips.md Wed Nov 7 13:40:06 2012
+++ dist.nbsd/gcc/config/mips/mips.md Wed Nov 7 11:47:24 2012
@@ -4806,7 +4806,7 @@
;; of _gp from the start of this function. Operand 1 is the incoming
;; function address.
(define_insn_and_split "loadgp_newabi_<mode>"
- [(set (match_operand:P 0 "register_operand" "=d")
+ [(set (match_operand:P 0 "register_operand" "=&d")
(unspec:P [(match_operand:P 1)
(match_operand:P 2 "register_operand" "d")]
UNSPEC_LOADGP))]
diff -rNU3 -x *.info dist/gcc/config/mips/netbsd.h dist.nbsd/gcc/config/mips/netbsd.h
--- dist/gcc/config/mips/netbsd.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/mips/netbsd.h Wed Nov 7 11:47:24 2012
@@ -40,16 +40,63 @@
if (TARGET_ABICALLS) \
builtin_define ("__ABICALLS__"); \
\
- if (mips_abi == ABI_EABI) \
- builtin_define ("__mips_eabi"); \
- else if (mips_abi == ABI_N32) \
+ /* The GNU C++ standard library requires this. */ \
+ if (c_dialect_cxx ()) \
+ builtin_define ("_GNU_SOURCE"); \
+ \
+ if (mips_abi == ABI_N32) \
+ { \
builtin_define ("__mips_n32"); \
+ builtin_define ("_ABIN32=2"); \
+ builtin_define ("_MIPS_SIM=_ABIN32"); \
+ builtin_define ("_MIPS_SZLONG=32"); \
+ builtin_define ("_MIPS_SZPTR=32"); \
+ } \
else if (mips_abi == ABI_64) \
+ { \
builtin_define ("__mips_n64"); \
+ builtin_define ("_ABI64=3"); \
+ builtin_define ("_MIPS_SIM=_ABI64"); \
+ builtin_define ("_MIPS_SZLONG=64"); \
+ builtin_define ("_MIPS_SZPTR=64"); \
+ } \
else if (mips_abi == ABI_O64) \
+ { \
builtin_define ("__mips_o64"); \
+ builtin_define ("_ABIO64=4"); \
+ builtin_define ("_MIPS_SIM=_ABIO64"); \
+ builtin_define ("_MIPS_SZLONG=64"); \
+ builtin_define ("_MIPS_SZPTR=64"); \
} \
- while (0)
+ else if (mips_abi == ABI_EABI) \
+ { \
+ builtin_define ("__mips_eabi"); \
+ builtin_define ("_ABIEMB=5"); \
+ builtin_define ("_MIPS_SIM=_ABIEMB"); \
+ if (TARGET_LONG64) \
+ builtin_define ("_MIPS_SZLONG=64"); \
+ else \
+ builtin_define ("_MIPS_SZLONG=32"); \
+ if (TARGET_64BIT) \
+ builtin_define ("_MIPS_SZPTR=64"); \
+ else \
+ builtin_define ("_MIPS_SZPTR=32"); \
+ } \
+ else \
+ { \
+ builtin_define ("__mips_o32"); \
+ builtin_define ("_ABIO32=1"); \
+ builtin_define ("_MIPS_SIM=_ABIO32"); \
+ builtin_define ("_MIPS_SZLONG=32"); \
+ builtin_define ("_MIPS_SZPTR=32"); \
+ } \
+ if (TARGET_FLOAT64) \
+ builtin_define ("_MIPS_FPSET=32"); \
+ else \
+ builtin_define ("_MIPS_FPSET=16"); \
+ \
+ builtin_define ("_MIPS_SZINT=32"); \
+ } while (0)
/* The generic MIPS TARGET_CPU_CPP_BUILTINS are incorrect for NetBSD.
Specifically, they define too many namespace-invasive macros. Override
@@ -105,6 +152,11 @@
builtin_define ("__mips=64"); \
builtin_define ("__mips_isa_rev=1"); \
} \
+ else if (ISA_MIPS64R2) \
+ { \
+ builtin_define ("__mips=64"); \
+ builtin_define ("__mips_isa_rev=2"); \
+ } \
\
if (TARGET_HARD_FLOAT) \
builtin_define ("__mips_hard_float"); \
@@ -148,10 +200,11 @@
#undef LINK_SPEC
#define LINK_SPEC \
- "%{EL:-m elf32lmip} \
- %{EB:-m elf32bmip} \
+ "%{EL:-m elf32ltsmip} \
+ %{EB:-m elf32btsmip} \
%(endian_spec) \
- %{G*} %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips32r2} %{mips64} \
+ %{G*} %{mips1} %{mips2} %{mips3} %{mips4} \
+ %{mips32} %{mips32r2} %{mips64} %{mips64r2} \
%{bestGnum} %{call_shared} %{no_archive} %{exact_version} \
%(netbsd_link_spec)"
@@ -191,6 +244,14 @@
/* Make gcc agree with <machine/ansi.h> */
+
+#undef SIZE_TYPE
+#define SIZE_TYPE ((POINTER_SIZE == 64 || TARGET_NEWABI) \
+ ? "long unsigned int" : "unsigned int")
+
+#undef PTRDIFF_TYPE
+#define PTRDIFF_TYPE ((POINTER_SIZE == 64 || TARGET_NEWABI) \
+ ? "long int" : "int")
#undef WCHAR_TYPE
#define WCHAR_TYPE "int"
diff -rNU3 -x *.info dist/gcc/config/mips/netbsd64.h dist.nbsd/gcc/config/mips/netbsd64.h
--- dist/gcc/config/mips/netbsd64.h Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/config/mips/netbsd64.h Wed Nov 7 11:47:24 2012
@@ -0,0 +1,54 @@
+/* Definitions of target machine for GNU compiler, for MIPS NetBSD systems.
+ Copyright (C) 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004
+ 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 2, 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 COPYING. If not, write to
+the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA. */
+
+/* Force the default endianness and ABI flags onto the command line
+ in order to make the other specs easier to write. */
+
+#undef DRIVER_SELF_SPECS
+#define DRIVER_SELF_SPECS \
+ BASE_DRIVER_SELF_SPECS \
+ "%{!EB:%{!EL:%(endian_spec)}}", \
+ "%{!mabi=*: -mabi=n32}"
+
+/* Define default target values. */
+
+#undef MACHINE_TYPE
+#if TARGET_ENDIAN_DEFAULT != 0
+#define MACHINE_TYPE "NetBSD/mips64eb ELF"
+#else
+#define MACHINE_TYPE "NetBSD/mips64el ELF"
+#endif
+
+/* Provide a LINK_SPEC appropriate for a NetBSD/mips target.
+ This is a copy of LINK_SPEC from <netbsd-elf.h> tweaked for
+ the MIPS target. */
+
+#undef LINK_SPEC
+#define LINK_SPEC \
+ "%{mabi=64:-m elf64%{EB:b}%{EL:l}tsmip} \
+ %{mabi=32:-m elf32%{EB:b}%{EL:l}tsmip} \
+ %{mabi=o64:-m elf64%{EB:b}%{EL:l}tsmip} \
+ %{mabi=n32:-m elf32%{EB:b}%{EL:l}tsmipn32} \
+ %(endian_spec) \
+ %{G*} %{mips1} %{mips2} %{mips3} %{mips4} \
+ %{mips32} %{mips32r2} %{mips64} %{mips64r2} \
+ %{bestGnum} %{call_shared} %{no_archive} %{exact_version} \
+ %(netbsd_link_spec)"
diff -rNU3 -x *.info dist/gcc/config/mips/t-netbsd64 dist.nbsd/gcc/config/mips/t-netbsd64
--- dist/gcc/config/mips/t-netbsd64 Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/config/mips/t-netbsd64 Wed Nov 7 11:47:24 2012
@@ -0,0 +1,9 @@
+# NetBSD has (will have) "non-native" libraries in /usr/lib/<arch>.
+# For NetBSD/mips64 we thus have /usr/lib (n32), /usr/lib/o32 and /usr/lib/64.
+
+MULTILIB_OPTIONS = mabi=n32/mabi=64/mabi=32
+MULTILIB_DIRNAMES = n32 n64 o32
+MULTILIB_OSDIRNAMES = . ../lib/64 ../lib/o32
+
+LIBGCC = stmp-multilib
+INSTALL_LIBGCC = install-multilib
diff -rNU3 -x *.info dist/gcc/config/netbsd-elf.h dist.nbsd/gcc/config/netbsd-elf.h
--- dist/gcc/config/netbsd-elf.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/netbsd-elf.h Wed Nov 7 11:47:24 2012
@@ -52,8 +52,11 @@
%{!p:crt0%O%s}}} \
%:if-exists(crti%O%s) \
%{static:%:if-exists-else(crtbeginT%O%s crtbegin%O%s)} \
- %{!static: \
- %{!shared:crtbegin%O%s} %{shared:crtbeginS%O%s}}"
+ %{!static: \
+ %{!shared: \
+ %{!pie:crtbegin%O%s} \
+ %{pie:crtbeginS%O%s}} \
+ %{shared:crtbeginS%O%s}}"
#undef STARTFILE_SPEC
#define STARTFILE_SPEC NETBSD_STARTFILE_SPEC
@@ -64,7 +67,10 @@
C++ file-scope static objects deconstructed after exiting "main". */
#define NETBSD_ENDFILE_SPEC \
- "%{!shared:crtend%O%s} %{shared:crtendS%O%s} \
+ "%{!shared: \
+ %{!pie:crtend%O%s} \
+ %{pie:crtendS%O%s}} \
+ %{shared:crtendS%O%s} \
%:if-exists(crtn%O%s)"
#undef ENDFILE_SPEC
@@ -82,6 +88,7 @@
#define NETBSD_LINK_SPEC_ELF \
"%{assert*} %{R*} %{rpath*} \
%{shared:-shared} \
+ %{symbolic:-Bsymbolic} \
%{!shared: \
-dc -dp \
%{!nostdlib: \
@@ -96,3 +103,8 @@
#ifdef HAVE_LD_AS_NEEDED
#define USE_LD_AS_NEEDED 1
#endif
+
+#define MFLIB_SPEC " %{fmudflap: -export-dynamic -lmudflap \
+ %{static:%(link_gcc_c_sequence) -lmudflap}} \
+ %{fmudflapth: -export-dynamic -lmudflapth -lpthread \
+ %{static:%(link_gcc_c_sequence) -lmudflapth}} "
diff -rNU3 -x *.info dist/gcc/config/netbsd.h dist.nbsd/gcc/config/netbsd.h
--- dist/gcc/config/netbsd.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/netbsd.h Wed Nov 7 11:47:24 2012
@@ -37,38 +37,64 @@
/* NETBSD_NATIVE is defined when gcc is integrated into the NetBSD
source tree so it can be configured appropriately without using
- the GNU configure/build mechanism. */
+ the GNU configure/build mechanism.
-#ifdef NETBSD_NATIVE
+ NETBSD_TOOLS is defined when gcc is built as cross-compiler for
+ the in-tree toolchain.
+ */
+#if defined(NETBSD_NATIVE) || defined(NETBSD_TOOLS)
+
/* Look for the include files in the system-defined places. */
#undef GPLUSPLUS_INCLUDE_DIR
#define GPLUSPLUS_INCLUDE_DIR "/usr/include/g++"
+#undef GPLUSPLUS_BACKWARD_INCLUDE_DIR
+#define GPLUSPLUS_BACKWARD_INCLUDE_DIR "/usr/include/g++/backward"
+
+/*
+ * XXX figure out a better way to do this
+ */
#undef GCC_INCLUDE_DIR
-#define GCC_INCLUDE_DIR "/usr/include"
+#define GCC_INCLUDE_DIR "/usr/include/gcc-4.5"
#undef INCLUDE_DEFAULTS
-#define INCLUDE_DEFAULTS \
- { \
- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1 }, \
- { GCC_INCLUDE_DIR, "GCC", 0, 0 }, \
- { 0, 0, 0, 0 } \
+#define INCLUDE_DEFAULTS \
+ { \
+ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 1 }, \
+ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 1 }, \
+ { GCC_INCLUDE_DIR, "GCC", 0, 0, 1 }, \
+ { "/usr/include", "GCC", 0, 0, 1 }, \
+ { 0, 0, 0, 0 } \
}
+/* Under NetBSD, the normal location of the various *crt*.o files is the
+ /usr/lib directory. */
+
+#undef STANDARD_STARTFILE_PREFIX
+#define STANDARD_STARTFILE_PREFIX "/usr/lib/"
+#undef STANDARD_STARTFILE_PREFIX_1
+#define STANDARD_STARTFILE_PREFIX_1 "/usr/lib/"
+
+#endif /* NETBSD_NATIVE || NETBSD_TOOLS */
+
+#if defined(NETBSD_NATIVE)
/* Under NetBSD, the normal location of the compiler back ends is the
/usr/libexec directory. */
#undef STANDARD_EXEC_PREFIX
#define STANDARD_EXEC_PREFIX "/usr/libexec/"
-/* Under NetBSD, the normal location of the various *crt*.o files is the
- /usr/lib directory. */
+#undef TOOLDIR_BASE_PREFIX
+#define TOOLDIR_BASE_PREFIX "../"
-#undef STANDARD_STARTFILE_PREFIX
-#define STANDARD_STARTFILE_PREFIX "/usr/lib/"
+#undef STANDARD_BINDIR_PREFIX
+#define STANDARD_BINDIR_PREFIX "/usr/bin"
+#undef STANDARD_LIBEXEC_PREFIX
+#define STANDARD_LIBEXEC_PREFIX STANDARD_EXEC_PREFIX
+
#endif /* NETBSD_NATIVE */
@@ -97,6 +123,7 @@
%{!pg:-lposix}} \
%{p:-lposix_p} \
%{pg:-lposix_p}} \
+ %{shared:-lc} \
%{!shared: \
%{!symbolic: \
%{!p: \
@@ -110,6 +137,7 @@
%{!pg:-lposix}} \
%{p:-lposix_p} \
%{pg:-lposix_p}} \
+ %{shared:-lc} \
%{!shared: \
%{!symbolic: \
%{!p: \
@@ -121,24 +149,15 @@
#undef LIB_SPEC
#define LIB_SPEC NETBSD_LIB_SPEC
-/* Provide a LIBGCC_SPEC appropriate for NetBSD. We also want to exclude
- libgcc with -symbolic. */
+/* Pass -cxx-isystem to cc1/cc1plus. */
+#define NETBSD_CC1_AND_CC1PLUS_SPEC \
+ "%{cxx-isystem}"
-#ifdef NETBSD_NATIVE
-#define NETBSD_LIBGCC_SPEC \
- "%{!symbolic: \
- %{!shared: \
- %{!p: \
- %{!pg: -lgcc}}} \
- %{shared: -lgcc_pic} \
- %{p: -lgcc_p} \
- %{pg: -lgcc_p}}"
-#else
-#define NETBSD_LIBGCC_SPEC "%{!shared:%{!symbolic: -lgcc}}"
-#endif
+#undef CC1_SPEC
+#define CC1_SPEC NETBSD_CC1_AND_CC1PLUS_SPEC
-#undef LIBGCC_SPEC
-#define LIBGCC_SPEC NETBSD_LIBGCC_SPEC
+#undef CC1PLUS_SPEC
+#define CC1PLUS_SPEC NETBSD_CC1_AND_CC1PLUS_SPEC
/* When building shared libraries, the initialization and finalization
functions for the library are .init and .fini respectively. */
@@ -227,3 +246,7 @@
/* Define this so we can compile MS code for use with WINE. */
#define HANDLE_PRAGMA_PACK_PUSH_POP 1
+
+#if defined(HAVE_LD_EH_FRAME_HDR)
+#define LINK_EH_SPEC "--eh-frame-hdr "
+#endif
diff -rNU3 -x *.info dist/gcc/config/pa/linux-unwind.h dist.nbsd/gcc/config/pa/linux-unwind.h
--- dist/gcc/config/pa/linux-unwind.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/pa/linux-unwind.h Wed Nov 7 11:47:24 2012
@@ -1,5 +1,5 @@
/* DWARF2 EH unwinding support for PA Linux.
- Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2009, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -63,7 +63,7 @@
int i;
struct sigcontext *sc;
struct rt_sigframe {
- struct siginfo info;
+ siginfo_t info;
struct ucontext uc;
} *frame;
diff -rNU3 -x *.info dist/gcc/config/pa/milli64.S dist.nbsd/gcc/config/pa/milli64.S
--- dist/gcc/config/pa/milli64.S Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/pa/milli64.S Wed Nov 7 11:47:24 2012
@@ -221,7 +221,7 @@
ldw 4(%r22),%r19 ; load new LTP value
ldw 0(%r22),%r22 ; load address of target
LSYM(1)
-#ifdef LINUX
+#if defined(LINUX) || defined(NETBSD)
bv %r0(%r22) ; branch to the real target
#else
ldsid (%sr0,%r22),%r1 ; get the "space ident" selected by r22
diff -rNU3 -x *.info dist/gcc/config/pa/pa-netbsd.h dist.nbsd/gcc/config/pa/pa-netbsd.h
--- dist/gcc/config/pa/pa-netbsd.h Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/config/pa/pa-netbsd.h Wed Nov 7 11:47:24 2012
@@ -0,0 +1,138 @@
+/* Definitions for PA_RISC with ELF format
+ Copyright 1999, 2000, 2001, 2002, 2003 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 2, 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 COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS() \
+ do \
+ { \
+ NETBSD_OS_CPP_BUILTINS_ELF(); \
+ } \
+ while (0)
+
+#undef CPP_SPEC
+#define CPP_SPEC NETBSD_CPP_SPEC
+
+#undef ASM_SPEC
+#define ASM_SPEC \
+ "%{v:-V} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}"
+
+#undef EXTRA_SPECS
+#define EXTRA_SPECS \
+ { "netbsd_entry_point", NETBSD_ENTRY_POINT },
+
+#define NETBSD_ENTRY_POINT "__start"
+
+#undef LINK_SPEC
+#define LINK_SPEC NETBSD_LINK_SPEC_ELF
+
+/* NetBSD profiling functions don't need gcc to allocate counters. */
+#define NO_DEFERRED_PROFILE_COUNTERS 1
+
+/* Define the strings used for the special svr4 .type and .size directives.
+ These strings generally do not vary from one system running svr4 to
+ another, but if a given system (e.g. m88k running svr) needs to use
+ different pseudo-op names for these, they may be overridden in the
+ file which includes this one. */
+
+#undef STRING_ASM_OP
+#define STRING_ASM_OP "\t.stringz"
+
+#define TEXT_SECTION_ASM_OP "\t.text"
+#define DATA_SECTION_ASM_OP "\t.data"
+#define BSS_SECTION_ASM_OP "\t.section\t.bss"
+
+#define TARGET_ASM_FILE_START pa_linux_file_start
+
+/* We want local labels to start with period if made with asm_fprintf. */
+#undef LOCAL_LABEL_PREFIX
+#define LOCAL_LABEL_PREFIX "."
+
+/* Define these to generate the Linux/ELF/SysV style of internal
+ labels all the time - i.e. to be compatible with
+ ASM_GENERATE_INTERNAL_LABEL in <elfos.h>. Compare these with the
+ ones in pa.h and note the lack of dollar signs in these. FIXME:
+ shouldn't we fix pa.h to use ASM_GENERATE_INTERNAL_LABEL instead? */
+
+#undef ASM_OUTPUT_ADDR_VEC_ELT
+#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \
+ if (TARGET_BIG_SWITCH) \
+ fprintf (FILE, "\t.word .L%d\n", VALUE); \
+ else \
+ fprintf (FILE, "\tb .L%d\n\tnop\n", VALUE)
+
+#undef ASM_OUTPUT_ADDR_DIFF_ELT
+#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
+ if (TARGET_BIG_SWITCH) \
+ fprintf (FILE, "\t.word .L%d-.L%d\n", VALUE, REL); \
+ else \
+ fprintf (FILE, "\tb .L%d\n\tnop\n", VALUE)
+
+/* Use the default. */
+#undef ASM_OUTPUT_LABEL
+
+/* NOTE: (*targetm.asm_out.internal_label)() is defined for us by elfos.h, and
+ does what we want (i.e. uses colons). It must be compatible with
+ ASM_GENERATE_INTERNAL_LABEL(), so do not define it here. */
+
+/* Use the default. */
+#undef ASM_OUTPUT_INTERNAL_LABEL
+
+/* Use the default. */
+#undef TARGET_ASM_GLOBALIZE_LABEL
+/* Globalizing directive for a label. */
+#define GLOBAL_ASM_OP ".globl "
+
+/* FIXME: Hacked from the <elfos.h> one so that we avoid multiple
+ labels in a function declaration (since pa.c seems determined to do
+ it differently) */
+
+#undef ASM_DECLARE_FUNCTION_NAME
+#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
+ do \
+ { \
+ ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function"); \
+ ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL)); \
+ } \
+ while (0)
+
+/* As well as globalizing the label, we need to encode the label
+ to ensure a plabel is generated in an indirect call. */
+
+#undef ASM_OUTPUT_EXTERNAL_LIBCALL
+#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN) \
+ do \
+ { \
+ if (!FUNCTION_NAME_P (XSTR (FUN, 0))) \
+ hppa_encode_label (FUN); \
+ (*targetm.asm_out.globalize_label) (FILE, XSTR (FUN, 0)); \
+ } \
+ while (0)
+
+/* NetBSD always uses gas. */
+#undef TARGET_GAS
+#define TARGET_GAS 1
+
+/* Use long int for these type to make hppa64 compatibility easier. */
+#undef SIZE_TYPE
+#define SIZE_TYPE "long unsigned int"
+
+#undef PTRDIFF_TYPE
+#define PTRDIFF_TYPE "long int"
diff -rNU3 -x *.info dist/gcc/config/pa/pa-protos.h dist.nbsd/gcc/config/pa/pa-protos.h
--- dist/gcc/config/pa/pa-protos.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/pa/pa-protos.h Wed Nov 7 11:47:24 2012
@@ -79,7 +79,6 @@
extern int prefetch_cc_operand (rtx, enum machine_mode);
extern int prefetch_nocc_operand (rtx, enum machine_mode);
extern int and_operand (rtx, enum machine_mode);
-extern int ior_operand (rtx, enum machine_mode);
extern int arith32_operand (rtx, enum machine_mode);
extern int uint32_operand (rtx, enum machine_mode);
extern int reg_before_reload_operand (rtx, enum machine_mode);
@@ -94,7 +93,6 @@
extern int fmpyaddoperands (rtx *);
extern int fmpysuboperands (rtx *);
extern int call_operand_address (rtx, enum machine_mode);
-extern int ior_operand (rtx, enum machine_mode);
extern void emit_bcond_fp (rtx[]);
extern int emit_move_sequence (rtx *, enum machine_mode, rtx);
extern int emit_hpdiv_const (rtx *, int);
diff -rNU3 -x *.info dist/gcc/config/pa/pa.c dist.nbsd/gcc/config/pa/pa.c
--- dist/gcc/config/pa/pa.c Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/pa/pa.c Wed Nov 7 11:47:24 2012
@@ -990,9 +990,9 @@
|| GET_CODE (XEXP (x, 0)) == REG))
{
rtx int_part, ptr_reg;
- int newoffset;
- int offset = INTVAL (XEXP (x, 1));
- int mask;
+ HOST_WIDE_INT newoffset;
+ HOST_WIDE_INT offset = INTVAL (XEXP (x, 1));
+ HOST_WIDE_INT mask;
mask = (GET_MODE_CLASS (mode) == MODE_FLOAT
? (INT14_OK_STRICT ? 0x3fff : 0x1f) : 0x3fff);
@@ -1046,7 +1046,7 @@
|| GET_CODE (XEXP (x, 1)) == SUBREG)
&& GET_CODE (XEXP (x, 1)) != CONST)
{
- int val = INTVAL (XEXP (XEXP (x, 0), 1));
+ HOST_WIDE_INT val = INTVAL (XEXP (XEXP (x, 0), 1));
rtx reg1, reg2;
reg1 = XEXP (x, 1);
@@ -1125,7 +1125,7 @@
&& INTVAL (XEXP (idx, 1)) % INTVAL (XEXP (XEXP (idx, 0), 1)) == 0)
{
/* Divide the CONST_INT by the scale factor, then add it to A. */
- int val = INTVAL (XEXP (idx, 1));
+ HOST_WIDE_INT val = INTVAL (XEXP (idx, 1));
val /= INTVAL (XEXP (XEXP (idx, 0), 1));
reg1 = XEXP (XEXP (idx, 0), 0);
@@ -1148,7 +1148,7 @@
&& INTVAL (XEXP (idx, 1)) <= 4096
&& INTVAL (XEXP (idx, 1)) >= -4096)
{
- int val = INTVAL (XEXP (XEXP (idx, 0), 1));
+ HOST_WIDE_INT val = INTVAL (XEXP (XEXP (idx, 0), 1));
rtx reg1, reg2;
reg1 = force_reg (Pmode, gen_rtx_PLUS (Pmode, base, XEXP (idx, 1)));
@@ -1232,7 +1232,7 @@
&& GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT
&& shadd_constant_p (INTVAL (XEXP (XEXP (x, 0), 1))))
{
- int val = INTVAL (XEXP (XEXP (x, 0), 1));
+ HOST_WIDE_INT val = INTVAL (XEXP (XEXP (x, 0), 1));
rtx reg1, reg2;
reg1 = XEXP (x, 1);
@@ -1686,6 +1686,11 @@
/* Handle the most common case: storing into a register. */
else if (register_operand (operand0, mode))
{
+ /* Legitimize TLS symbol references. This happens for references
+ that aren't a legitimate constant. */
+ if (PA_SYMBOL_REF_TLS_P (operand1))
+ operand1 = legitimize_tls_address (operand1);
+
if (register_operand (operand1, mode)
|| (GET_CODE (operand1) == CONST_INT
&& cint_ok_for_move (INTVAL (operand1)))
@@ -2650,8 +2655,8 @@
const char *
output_block_move (rtx *operands, int size_is_constant ATTRIBUTE_UNUSED)
{
- int align = INTVAL (operands[5]);
- unsigned long n_bytes = INTVAL (operands[4]);
+ HOST_WIDE_INT align = INTVAL (operands[5]);
+ unsigned HOST_WIDE_INT n_bytes = INTVAL (operands[4]);
/* We can't move more than a word at a time because the PA
has no longer integer move insns. (Could use fp mem ops?) */
@@ -2778,8 +2783,8 @@
compute_movmem_length (rtx insn)
{
rtx pat = PATTERN (insn);
- unsigned int align = INTVAL (XEXP (XVECEXP (pat, 0, 7), 0));
- unsigned long n_bytes = INTVAL (XEXP (XVECEXP (pat, 0, 6), 0));
+ unsigned HOST_WIDE_INT align = INTVAL (XEXP (XVECEXP (pat, 0, 7), 0));
+ unsigned HOST_WIDE_INT n_bytes = INTVAL (XEXP (XVECEXP (pat, 0, 6), 0));
unsigned int n_insns = 0;
/* We can't move more than four bytes at a time because the PA
@@ -2814,8 +2819,8 @@
const char *
output_block_clear (rtx *operands, int size_is_constant ATTRIBUTE_UNUSED)
{
- int align = INTVAL (operands[3]);
- unsigned long n_bytes = INTVAL (operands[2]);
+ HOST_WIDE_INT align = INTVAL (operands[3]);
+ unsigned HOST_WIDE_INT n_bytes = INTVAL (operands[2]);
/* We can't clear more than a word at a time because the PA
has no longer integer move insns. */
@@ -2920,8 +2925,8 @@
compute_clrmem_length (rtx insn)
{
rtx pat = PATTERN (insn);
- unsigned int align = INTVAL (XEXP (XVECEXP (pat, 0, 4), 0));
- unsigned long n_bytes = INTVAL (XEXP (XVECEXP (pat, 0, 3), 0));
+ unsigned HOST_WIDE_INT align = INTVAL (XEXP (XVECEXP (pat, 0, 4), 0));
+ unsigned HOST_WIDE_INT n_bytes = INTVAL (XEXP (XVECEXP (pat, 0, 3), 0));
unsigned int n_insns = 0;
/* We can't clear more than a word at a time because the PA
@@ -5337,7 +5342,7 @@
static void
pa_linux_file_start (void)
{
- pa_file_start_file (1);
+ pa_file_start_file (0);
pa_file_start_level ();
pa_file_start_mcount ("CODE");
}
@@ -5552,7 +5557,7 @@
const char *
output_div_insn (rtx *operands, int unsignedp, rtx insn)
{
- int divisor;
+ HOST_WIDE_INT divisor;
/* If the divisor is a constant, try to use one of the special
opcodes .*/
diff -rNU3 -x *.info dist/gcc/config/pa/pa.h dist.nbsd/gcc/config/pa/pa.h
--- dist/gcc/config/pa/pa.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/pa/pa.h Wed Nov 7 11:47:24 2012
@@ -891,6 +891,9 @@
&& (NEW_HP_ASSEMBLER \
|| TARGET_GAS \
|| GET_CODE (X) != LABEL_REF) \
+ && (!PA_SYMBOL_REF_TLS_P (X) \
+ || (SYMBOL_REF_TLS_MODEL (X) != TLS_MODEL_GLOBAL_DYNAMIC \
+ && SYMBOL_REF_TLS_MODEL (X) != TLS_MODEL_LOCAL_DYNAMIC)) \
&& (!TARGET_64BIT \
|| GET_CODE (X) != CONST_DOUBLE) \
&& (!TARGET_64BIT \
@@ -1196,7 +1199,7 @@
There may be more opportunities to improve code with this hook. */
#define LEGITIMIZE_RELOAD_ADDRESS(AD, MODE, OPNUM, TYPE, IND, WIN) \
do { \
- long offset, newoffset, mask; \
+ HOST_WIDE_INT offset, newoffset, mask; \
rtx new_rtx, temp = NULL_RTX; \
\
mask = (GET_MODE_CLASS (MODE) == MODE_FLOAT \
diff -rNU3 -x *.info dist/gcc/config/pa/pa.md dist.nbsd/gcc/config/pa/pa.md
--- dist/gcc/config/pa/pa.md Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/pa/pa.md Wed Nov 7 11:47:24 2012
@@ -811,7 +811,7 @@
(match_operand:DI 3 "arith11_operand" "rI"))
(match_operand:DI 1 "register_operand" "r")))]
"TARGET_64BIT"
- "sub%I3,* %3,%2,%%r0\;add,dc %%r0,%1,%0"
+ "sub%I3 %3,%2,%%r0\;add,dc %%r0,%1,%0"
[(set_attr "type" "binary")
(set_attr "length" "8")])
@@ -833,7 +833,7 @@
(match_operand:DI 3 "register_operand" "r"))
(match_operand:DI 1 "register_operand" "r")))]
"TARGET_64BIT"
- "sub,* %2,%3,%%r0\;add,dc %%r0,%1,%0"
+ "sub %2,%3,%%r0\;add,dc %%r0,%1,%0"
[(set_attr "type" "binary")
(set_attr "length" "8")])
@@ -856,7 +856,7 @@
(match_operand:DI 3 "int11_operand" "I"))
(match_operand:DI 1 "register_operand" "r")))]
"TARGET_64BIT"
- "addi,* %k3,%2,%%r0\;add,dc %%r0,%1,%0"
+ "addi %k3,%2,%%r0\;add,dc %%r0,%1,%0"
[(set_attr "type" "binary")
(set_attr "length" "8")])
@@ -902,7 +902,7 @@
(gtu:DI (match_operand:DI 2 "register_operand" "r")
(match_operand:DI 3 "arith11_operand" "rI"))))]
"TARGET_64BIT"
- "sub%I3,* %3,%2,%%r0\;sub,db %1,%%r0,%0"
+ "sub%I3 %3,%2,%%r0\;sub,db %1,%%r0,%0"
[(set_attr "type" "binary")
(set_attr "length" "8")])
@@ -924,7 +924,7 @@
(match_operand:DI 3 "arith11_operand" "rI")))
(match_operand:DI 4 "register_operand" "r")))]
"TARGET_64BIT"
- "sub%I3,* %3,%2,%%r0\;sub,db %1,%4,%0"
+ "sub%I3 %3,%2,%%r0\;sub,db %1,%4,%0"
[(set_attr "type" "binary")
(set_attr "length" "8")])
@@ -946,7 +946,7 @@
(ltu:DI (match_operand:DI 2 "register_operand" "r")
(match_operand:DI 3 "register_operand" "r"))))]
"TARGET_64BIT"
- "sub,* %2,%3,%%r0\;sub,db %1,%%r0,%0"
+ "sub %2,%3,%%r0\;sub,db %1,%%r0,%0"
[(set_attr "type" "binary")
(set_attr "length" "8")])
@@ -968,7 +968,7 @@
(match_operand:DI 3 "register_operand" "r")))
(match_operand:DI 4 "register_operand" "r")))]
"TARGET_64BIT"
- "sub,* %2,%3,%%r0\;sub,db %1,%4,%0"
+ "sub %2,%3,%%r0\;sub,db %1,%4,%0"
[(set_attr "type" "binary")
(set_attr "length" "8")])
@@ -991,7 +991,7 @@
(leu:DI (match_operand:DI 2 "register_operand" "r")
(match_operand:DI 3 "int11_operand" "I"))))]
"TARGET_64BIT"
- "addi,* %k3,%2,%%r0\;sub,db %1,%%r0,%0"
+ "addi %k3,%2,%%r0\;sub,db %1,%%r0,%0"
[(set_attr "type" "binary")
(set_attr "length" "8")])
@@ -1013,7 +1013,7 @@
(match_operand:DI 3 "int11_operand" "I")))
(match_operand:DI 4 "register_operand" "r")))]
"TARGET_64BIT"
- "addi,* %k3,%2,%%r0\;sub,db %1,%4,%0"
+ "addi %k3,%2,%%r0\;sub,db %1,%4,%0"
[(set_attr "type" "binary")
(set_attr "length" "8")])
@@ -5686,7 +5686,7 @@
(define_expand "iordi3"
[(set (match_operand:DI 0 "register_operand" "")
(ior:DI (match_operand:DI 1 "register_operand" "")
- (match_operand:DI 2 "ior_operand" "")))]
+ (match_operand:DI 2 "reg_or_cint_ior_operand" "")))]
""
"
{
@@ -5707,7 +5707,7 @@
(define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r,r")
(ior:DI (match_operand:DI 1 "register_operand" "0,0")
- (match_operand:DI 2 "ior_operand" "M,i")))]
+ (match_operand:DI 2 "cint_ior_operand" "M,i")))]
"TARGET_64BIT"
"* return output_64bit_ior (operands); "
[(set_attr "type" "binary,shift")
@@ -5726,19 +5726,14 @@
(define_expand "iorsi3"
[(set (match_operand:SI 0 "register_operand" "")
(ior:SI (match_operand:SI 1 "register_operand" "")
- (match_operand:SI 2 "arith32_operand" "")))]
+ (match_operand:SI 2 "reg_or_cint_ior_operand" "")))]
""
- "
-{
- if (! (ior_operand (operands[2], SImode)
- || register_operand (operands[2], SImode)))
- operands[2] = force_reg (SImode, operands[2]);
-}")
+ "")
(define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r,r")
(ior:SI (match_operand:SI 1 "register_operand" "0,0")
- (match_operand:SI 2 "ior_operand" "M,i")))]
+ (match_operand:SI 2 "cint_ior_operand" "M,i")))]
""
"* return output_ior (operands); "
[(set_attr "type" "binary,shift")
@@ -6566,7 +6561,7 @@
""
"*
{
- int x = INTVAL (operands[1]);
+ unsigned HOST_WIDE_INT x = UINTVAL (operands[1]);
operands[2] = GEN_INT (4 + exact_log2 ((x >> 4) + 1));
operands[1] = GEN_INT ((x & 0xf) - 0x10);
return \"{zvdepi %1,%2,%0|depwi,z %1,%%sar,%2,%0}\";
@@ -6584,7 +6579,7 @@
"exact_log2 (INTVAL (operands[1]) + 1) > 0"
"*
{
- int x = INTVAL (operands[1]);
+ HOST_WIDE_INT x = INTVAL (operands[1]);
operands[2] = GEN_INT (exact_log2 (x + 1));
return \"{vdepi -1,%2,%0|depwi -1,%%sar,%2,%0}\";
}"
@@ -6601,7 +6596,7 @@
"INTVAL (operands[1]) == -2"
"*
{
- int x = INTVAL (operands[1]);
+ HOST_WIDE_INT x = INTVAL (operands[1]);
operands[2] = GEN_INT (exact_log2 ((~x) + 1));
return \"{vdepi 0,%2,%0|depwi 0,%%sar,%2,%0}\";
}"
@@ -6665,7 +6660,7 @@
"TARGET_64BIT"
"*
{
- int x = INTVAL (operands[1]);
+ unsigned HOST_WIDE_INT x = UINTVAL (operands[1]);
operands[2] = GEN_INT (4 + exact_log2 ((x >> 4) + 1));
operands[1] = GEN_INT ((x & 0x1f) - 0x20);
return \"depdi,z %1,%%sar,%2,%0\";
@@ -6683,7 +6678,7 @@
"TARGET_64BIT && exact_log2 (INTVAL (operands[1]) + 1) > 0"
"*
{
- int x = INTVAL (operands[1]);
+ HOST_WIDE_INT x = INTVAL (operands[1]);
operands[2] = GEN_INT (exact_log2 (x + 1));
return \"depdi -1,%%sar,%2,%0\";
}"
@@ -6700,7 +6695,7 @@
"TARGET_64BIT && INTVAL (operands[1]) == -2"
"*
{
- int x = INTVAL (operands[1]);
+ HOST_WIDE_INT x = INTVAL (operands[1]);
operands[2] = GEN_INT (exact_log2 ((~x) + 1));
return \"depdi 0,%%sar,%2,%0\";
}"
@@ -7131,7 +7126,7 @@
{
rtx index = gen_reg_rtx (SImode);
- operands[1] = GEN_INT (-INTVAL (operands[1]));
+ operands[1] = gen_int_mode (-INTVAL (operands[1]), SImode);
if (!INT_14_BITS (operands[1]))
operands[1] = force_reg (SImode, operands[1]);
emit_insn (gen_addsi3 (index, operands[0], operands[1]));
diff -rNU3 -x *.info dist/gcc/config/pa/pa32-netbsd.h dist.nbsd/gcc/config/pa/pa32-netbsd.h
--- dist/gcc/config/pa/pa32-netbsd.h Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/config/pa/pa32-netbsd.h Wed Nov 7 11:47:24 2012
@@ -0,0 +1,37 @@
+/* Definitions for PA_RISC with ELF-32 format
+ Copyright (C) 2000, 2002 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 2, 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 COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+/* Turn off various SOM crap we don't want. */
+#undef TARGET_ELF32
+#define TARGET_ELF32 1
+
+/* The libcall __canonicalize_funcptr_for_compare is referenced in
+ crtend.o and the reference isn't resolved in objects that don't
+ compare function pointers. Thus, we need to play games to provide
+ a reference in crtbegin.o. The rest of the define is the same
+ as that in crtstuff.c */
+#define CTOR_LIST_BEGIN \
+ asm (".type __canonicalize_funcptr_for_compare,@function\n" \
+" .text\n" \
+" .word __canonicalize_funcptr_for_compare-$PIC_pcrel$0"); \
+ STATIC func_ptr __CTOR_LIST__[1] \
+ __attribute__ ((__unused__, section(".ctors"), \
+ aligned(sizeof(func_ptr)))) \
+ = { (func_ptr) (-1) }
diff -rNU3 -x *.info dist/gcc/config/pa/predicates.md dist.nbsd/gcc/config/pa/predicates.md
--- dist/gcc/config/pa/predicates.md Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/pa/predicates.md Wed Nov 7 11:47:24 2012
@@ -411,15 +411,19 @@
;; True iff depi can be used to compute (reg | OP).
-(define_predicate "ior_operand"
- (match_code "const_int")
-{
- return (GET_CODE (op) == CONST_INT && ior_mask_p (INTVAL (op)));
-})
+(define_predicate "cint_ior_operand"
+ (and (match_code "const_int")
+ (match_test "ior_mask_p (INTVAL (op))")))
-;; True iff OP is a CONST_INT of the forms 0...0xxxx or
-;; 0...01...1xxxx. Such values can be the left hand side x in (x <<
-;; r), using the zvdepi instruction.
+;; True iff OP can be used to compute (reg | OP).
+
+(define_predicate "reg_or_cint_ior_operand"
+ (ior (match_operand 0 "register_operand")
+ (match_operand 0 "cint_ior_operand")))
+
+;; True iff OP is a CONST_INT of the forms 0...0xxxx, 0...01...1xxxx,
+;; or 1...1xxxx. Such values can be the left hand side x in (x << r),
+;; using the zvdepi instruction.
(define_predicate "lhs_lshift_cint_operand"
(match_code "const_int")
diff -rNU3 -x *.info dist/gcc/config/pa/t-netbsd dist.nbsd/gcc/config/pa/t-netbsd
--- dist/gcc/config/pa/t-netbsd Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/config/pa/t-netbsd Wed Nov 7 11:47:24 2012
@@ -0,0 +1,14 @@
+#Plug millicode routines into libgcc.a We want these on both native and
+#cross compiles. We use the "64-bit" routines because the "32-bit" code
+#is broken for certain corner cases.
+
+LIB1ASMFUNCS = _divI _divU _remI _remU _div_const _mulI _dyncall
+LIB1ASMSRC = pa/milli64.S
+
+# Compile libgcc2.a as PIC.
+TARGET_LIBGCC2_CFLAGS = -fPIC -DELF=1 -DNETBSD=1
+
+LIB2FUNCS_EXTRA=$(srcdir)/config/pa/fptr.c
+
+# Compile crtbeginS.o and crtendS.o as PIC.
+CRTSTUFF_T_CFLAGS_S = -fPIC
diff -rNU3 -x *.info dist/gcc/config/rs6000/altivec.md dist.nbsd/gcc/config/rs6000/altivec.md
--- dist/gcc/config/rs6000/altivec.md Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/rs6000/altivec.md Wed Nov 7 11:47:24 2012
@@ -497,7 +497,7 @@
[(set (match_operand:VM 0 "altivec_register_operand" "=v")
(if_then_else:VM
(ne:CC (match_operand:VM 1 "altivec_register_operand" "v")
- (const_int 0))
+ (match_operand:VM 4 "zero_constant" ""))
(match_operand:VM 2 "altivec_register_operand" "v")
(match_operand:VM 3 "altivec_register_operand" "v")))]
"VECTOR_MEM_ALTIVEC_P (<MODE>mode)"
@@ -508,7 +508,7 @@
[(set (match_operand:VM 0 "altivec_register_operand" "=v")
(if_then_else:VM
(ne:CCUNS (match_operand:VM 1 "altivec_register_operand" "v")
- (const_int 0))
+ (match_operand:VM 4 "zero_constant" ""))
(match_operand:VM 2 "altivec_register_operand" "v")
(match_operand:VM 3 "altivec_register_operand" "v")))]
"VECTOR_MEM_ALTIVEC_P (<MODE>mode)"
@@ -2396,8 +2396,8 @@
(define_insn "altivec_stvlx"
[(parallel
- [(set (match_operand:V4SI 0 "memory_operand" "=Z")
- (match_operand:V4SI 1 "register_operand" "v"))
+ [(set (match_operand:V16QI 0 "memory_operand" "=Z")
+ (match_operand:V16QI 1 "register_operand" "v"))
(unspec [(const_int 0)] UNSPEC_STVLX)])]
"TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
"stvlx %1,%y0"
@@ -2405,8 +2405,8 @@
(define_insn "altivec_stvlxl"
[(parallel
- [(set (match_operand:V4SI 0 "memory_operand" "=Z")
- (match_operand:V4SI 1 "register_operand" "v"))
+ [(set (match_operand:V16QI 0 "memory_operand" "=Z")
+ (match_operand:V16QI 1 "register_operand" "v"))
(unspec [(const_int 0)] UNSPEC_STVLXL)])]
"TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
"stvlxl %1,%y0"
@@ -2414,8 +2414,8 @@
(define_insn "altivec_stvrx"
[(parallel
- [(set (match_operand:V4SI 0 "memory_operand" "=Z")
- (match_operand:V4SI 1 "register_operand" "v"))
+ [(set (match_operand:V16QI 0 "memory_operand" "=Z")
+ (match_operand:V16QI 1 "register_operand" "v"))
(unspec [(const_int 0)] UNSPEC_STVRX)])]
"TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
"stvrx %1,%y0"
@@ -2423,8 +2423,8 @@
(define_insn "altivec_stvrxl"
[(parallel
- [(set (match_operand:V4SI 0 "memory_operand" "=Z")
- (match_operand:V4SI 1 "register_operand" "v"))
+ [(set (match_operand:V16QI 0 "memory_operand" "=Z")
+ (match_operand:V16QI 1 "register_operand" "v"))
(unspec [(const_int 0)] UNSPEC_STVRXL)])]
"TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL"
"stvrxl %1,%y0"
diff -rNU3 -x *.info dist/gcc/config/rs6000/netbsd.h dist.nbsd/gcc/config/rs6000/netbsd.h
--- dist/gcc/config/rs6000/netbsd.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/rs6000/netbsd.h Wed Nov 7 11:47:24 2012
@@ -19,6 +19,22 @@
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
+/* This defines which switch letters take arguments. On NetBSD, most
+ of the normal cases (defined by gcc.c) apply, and we also have -h*
+ and -z* options (for the linker) (coming from SVR4).
+ Copied from ../netbsd-elf.h and re{undef,defined} here to
+ override the powerpc sysv4.h definition.
+ netbsd-elf.h defines the default list + 'h' + 'z' + 'R'.
+ rs6000/sysv4.h defines the default list + 'G'. */
+
+#undef SWITCH_TAKES_ARG
+#define SWITCH_TAKES_ARG(CHAR) \
+ (DEFAULT_SWITCH_TAKES_ARG (CHAR) \
+ || (CHAR) == 'h' \
+ || (CHAR) == 'z' \
+ || (CHAR) == 'R' \
+ || (CHAR) == 'G')
+
#undef TARGET_OS_CPP_BUILTINS /* FIXME: sysv4.h should not define this! */
#define TARGET_OS_CPP_BUILTINS() \
do \
@@ -27,6 +43,10 @@
builtin_define ("__powerpc__"); \
builtin_assert ("cpu=powerpc"); \
builtin_assert ("machine=powerpc"); \
+ if (TARGET_SECURE_PLT) \
+ builtin_define ("_SECURE_PLT"); \
+ if (TARGET_SOFT_FLOAT) \
+ builtin_define ("_SOFT_FLOAT"); \
} \
while (0)
@@ -58,6 +78,17 @@
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "int"
+/* Redefine some types that where redefined by rs6000 include files. */
+
+#undef WCHAR_TYPE
+#define WCHAR_TYPE "int"
+
+#undef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE 32
+
+#undef WINT_TYPE
+#define WINT_TYPE "int"
+
/* Undo the spec mess from sysv4.h, and just define the specs
the way NetBSD systems actually expect. */
@@ -82,10 +113,41 @@
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
+ { "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
{ "netbsd_link_spec", NETBSD_LINK_SPEC_ELF }, \
{ "netbsd_entry_point", NETBSD_ENTRY_POINT }, \
{ "netbsd_endfile_spec", NETBSD_ENDFILE_SPEC },
+/*
+ * Add NetBSD specific defaults: -mpowerpc -mnew_mnemonics -mstrict-align
+ */
+#undef TARGET_DEFAULT
+#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_STRICT_ALIGN)
+
+/*
+ * We know we have the right binutils for this (we shouldn't need to do this
+ * but until the cross build does the right thing...)
+ */
+#undef TARGET_SECURE_PLT
+#define TARGET_SECURE_PLT secure_plt
+#undef HAVE_AS_TLS
+#define HAVE_AS_TLS 1
+
+/* Attempt to enable execute permissions on the stack. */
+#define TRANSFER_FROM_TRAMPOLINE NETBSD_ENABLE_EXECUTE_STACK
+#ifdef L_trampoline
+#undef TRAMPOLINE_SIZE
+#define TRAMPOLINE_SIZE 48
+#endif
+
+/* Make sure _enable_execute_stack() isn't the empty function in libgcc2.c.
+ It gets defined in _trampoline.o via NETBSD_ENABLE_EXECUTE_STACK. */
+#undef ENABLE_EXECUTE_STACK
+#define ENABLE_EXECUTE_STACK
+
+/* Override STACK_BOUNDARY to use Altivec compliant one. */
+#undef STACK_BOUNDARY
+#define STACK_BOUNDARY 128
#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (NetBSD/powerpc ELF)");
diff -rNU3 -x *.info dist/gcc/config/rs6000/netbsd64.h dist.nbsd/gcc/config/rs6000/netbsd64.h
--- dist/gcc/config/rs6000/netbsd64.h Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/config/rs6000/netbsd64.h Wed Nov 7 11:47:24 2012
@@ -0,0 +1,566 @@
+/* Definitions of target machine for GNU compiler,
+ for 64 bit PowerPC NetBSD.
+ Copyright (C) 2006 Free Software Foundation, Inc.
+ Contributed by Matthew Green (mrg@eterna.com.au).
+
+ 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 2, 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 COPYING. If not, write to the
+ Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+#ifndef RS6000_BI_ARCH
+
+#undef DEFAULT_ABI
+#define DEFAULT_ABI ABI_AIX
+
+#undef TARGET_64BIT
+#define TARGET_64BIT 1
+
+#define DEFAULT_ARCH64_P 1
+#define RS6000_BI_ARCH_P 0
+
+#else
+
+#define DEFAULT_ARCH64_P (TARGET_DEFAULT & MASK_64BIT)
+#define RS6000_BI_ARCH_P 1
+
+#endif
+
+#ifdef IN_LIBGCC2
+#undef TARGET_64BIT
+#ifdef __powerpc64__
+#define TARGET_64BIT 1
+#else
+#define TARGET_64BIT 0
+#endif
+#endif
+
+#undef TARGET_AIX
+#define TARGET_AIX TARGET_64BIT
+
+#ifdef HAVE_LD_NO_DOT_SYMS
+/* New ABI uses a local sym for the function entry point. */
+extern int dot_symbols;
+#undef DOT_SYMBOLS
+#define DOT_SYMBOLS dot_symbols
+#endif
+
+#define TARGET_PROFILE_KERNEL profile_kernel
+
+#undef PROCESSOR_DEFAULT
+#define PROCESSOR_DEFAULT PROCESSOR_POWER4
+#undef PROCESSOR_DEFAULT64
+#define PROCESSOR_DEFAULT64 PROCESSOR_POWER4
+
+/* We don't need to generate entries in .fixup, except when
+ -mrelocatable or -mrelocatable-lib is given. */
+#undef RELOCATABLE_NEEDS_FIXUP
+#define RELOCATABLE_NEEDS_FIXUP \
+ (target_flags & target_flags_explicit & MASK_RELOCATABLE)
+
+#undef RS6000_ABI_NAME
+#define RS6000_ABI_NAME "netbsd"
+
+#define INVALID_64BIT "-m%s not supported in this configuration"
+#define INVALID_32BIT INVALID_64BIT
+
+#undef SUBSUBTARGET_OVERRIDE_OPTIONS
+#define SUBSUBTARGET_OVERRIDE_OPTIONS \
+ do \
+ { \
+ if (!rs6000_explicit_options.alignment) \
+ rs6000_alignment_flags = MASK_ALIGN_NATURAL; \
+ if (TARGET_64BIT) \
+ { \
+ if (DEFAULT_ABI != ABI_AIX) \
+ { \
+ rs6000_current_abi = ABI_AIX; \
+ error (INVALID_64BIT, "call"); \
+ } \
+ dot_symbols = !strcmp (rs6000_abi_name, "aixdesc"); \
+ if (target_flags & MASK_RELOCATABLE) \
+ { \
+ target_flags &= ~MASK_RELOCATABLE; \
+ error (INVALID_64BIT, "relocatable"); \
+ } \
+ if (target_flags & MASK_EABI) \
+ { \
+ target_flags &= ~MASK_EABI; \
+ error (INVALID_64BIT, "eabi"); \
+ } \
+ if (TARGET_PROTOTYPE) \
+ { \
+ target_prototype = 0; \
+ error (INVALID_64BIT, "prototype"); \
+ } \
+ if ((target_flags & MASK_POWERPC64) == 0) \
+ { \
+ target_flags |= MASK_POWERPC64; \
+ error ("-m64 requires a PowerPC64 cpu"); \
+ } \
+ } \
+ else \
+ { \
+ if (!RS6000_BI_ARCH_P) \
+ error (INVALID_32BIT, "32"); \
+ if (TARGET_PROFILE_KERNEL) \
+ { \
+ TARGET_PROFILE_KERNEL = 0; \
+ error (INVALID_32BIT, "profile-kernel"); \
+ } \
+ } \
+ } \
+ while (0)
+
+#ifdef RS6000_BI_ARCH
+
+#undef OVERRIDE_OPTIONS
+#define OVERRIDE_OPTIONS \
+ rs6000_override_options (((TARGET_DEFAULT ^ target_flags) & MASK_64BIT) \
+ ? (char *) 0 : TARGET_CPU_DEFAULT)
+
+#endif
+
+#undef ASM_DEFAULT_SPEC
+#undef ASM_SPEC
+#undef LINK_OS_NETBSD_SPEC
+
+#ifndef RS6000_BI_ARCH
+#define ASM_DEFAULT_SPEC "-mppc64"
+#define ASM_SPEC "%(asm_spec64) %(asm_spec_common)"
+#define LINK_OS_NETBSD_SPEC "%(link_os_netbsd_spec64)"
+#else
+#if DEFAULT_ARCH64_P
+#define ASM_DEFAULT_SPEC "-mppc%{!m32:64}"
+#define ASM_SPEC "%{m32:%(asm_spec32)}%{!m32:%(asm_spec64)} %(asm_spec_common)"
+#define LINK_OS_NETBSD_SPEC "%{m32:%(link_os_netbsd_spec32)}%{!m32:%(link_os_netbsd_spec64)}"
+#else
+#define ASM_DEFAULT_SPEC "-mppc%{m64:64}"
+#define ASM_SPEC "%{!m64:%(asm_spec32)}%{m64:%(asm_spec64)} %(asm_spec_common)"
+#define LINK_OS_NETBSD_SPEC "%{!m64:%(link_os_netbsd_spec32)}%{m64:%(link_os_netbsd_spec64)}"
+#endif
+#endif
+
+#define ASM_SPEC32 "-a32 %{n} %{T} %{Ym,*} %{Yd,*} \
+%{mrelocatable} %{mrelocatable-lib} %{fpic:-K PIC} %{fPIC:-K PIC} \
+%{memb} %{!memb: %{msdata: -memb} %{msdata=eabi: -memb}} \
+%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
+ %{mcall-freebsd: -mbig} \
+ %{mcall-i960-old: -mlittle} \
+ %{mcall-linux: -mbig} \
+ %{mcall-gnu: -mbig} \
+ %{mcall-netbsd: -mbig} \
+}}}}"
+
+#define ASM_SPEC64 "-a64"
+
+#define ASM_SPEC_COMMON "%(asm_cpu) \
+%{.s: %{mregnames} %{mno-regnames}} %{.S: %{mregnames} %{mno-regnames}} \
+%{v:-V} %{Qy:} %{!Qn:-Qy} %{Wa,*:%*} \
+%{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian}"
+
+#undef SUBSUBTARGET_EXTRA_SPECS
+#define SUBSUBTARGET_EXTRA_SPECS \
+ { "asm_spec_common", ASM_SPEC_COMMON }, \
+ { "asm_spec32", ASM_SPEC32 }, \
+ { "asm_spec64", ASM_SPEC64 }, \
+ { "link_os_netbsd_spec32", LINK_OS_NETBSD_SPEC32 }, \
+ { "link_os_netbsd_spec64", LINK_OS_NETBSD_SPEC64 },
+
+#undef MULTILIB_DEFAULTS
+#if DEFAULT_ARCH64_P
+#define MULTILIB_DEFAULTS { "m64" }
+#else
+#define MULTILIB_DEFAULTS { "m32" }
+#endif
+
+#ifndef RS6000_BI_ARCH
+
+/* 64-bit PowerPC NetBSD is always big-endian. */
+#undef TARGET_LITTLE_ENDIAN
+#define TARGET_LITTLE_ENDIAN 0
+
+/* 64-bit PowerPC NetBSD always has a TOC. */
+#undef TARGET_TOC
+#define TARGET_TOC 1
+
+/* Some things from sysv4.h we don't do when 64 bit. */
+#undef TARGET_RELOCATABLE
+#define TARGET_RELOCATABLE 0
+#undef TARGET_EABI
+#define TARGET_EABI 0
+#undef TARGET_PROTOTYPE
+#define TARGET_PROTOTYPE 0
+#undef RELOCATABLE_NEEDS_FIXUP
+#define RELOCATABLE_NEEDS_FIXUP 0
+
+#endif
+
+/* PowerPC64 NetBSD word-aligns FP doubles when -malign-power is given. */
+#undef ADJUST_FIELD_ALIGN
+#define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
+ ((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE) \
+ ? 128 \
+ : (TARGET_64BIT \
+ && TARGET_ALIGN_NATURAL == 0 \
+ && TYPE_MODE (strip_array_types (TREE_TYPE (FIELD))) == DFmode) \
+ ? MIN ((COMPUTED), 32) \
+ : (COMPUTED))
+
+/* PowerPC64 NetBSD increases natural record alignment to doubleword if
+ the first field is an FP double, only if in power alignment mode. */
+#undef ROUND_TYPE_ALIGN
+#define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED) \
+ ((TARGET_64BIT \
+ && (TREE_CODE (STRUCT) == RECORD_TYPE \
+ || TREE_CODE (STRUCT) == UNION_TYPE \
+ || TREE_CODE (STRUCT) == QUAL_UNION_TYPE) \
+ && TARGET_ALIGN_NATURAL == 0) \
+ ? rs6000_special_round_type_align (STRUCT, COMPUTED, SPECIFIED) \
+ : MAX ((COMPUTED), (SPECIFIED)))
+
+/* Use the default for compiling target libs. */
+#ifdef IN_TARGET_LIBS
+#undef TARGET_ALIGN_NATURAL
+#define TARGET_ALIGN_NATURAL 1
+#endif
+
+/* Indicate that jump tables go in the text section. */
+#undef JUMP_TABLES_IN_TEXT_SECTION
+#define JUMP_TABLES_IN_TEXT_SECTION TARGET_64BIT
+
+/* The linux ppc64 ABI isn't explicit on whether aggregates smaller
+ than a doubleword should be padded upward or downward. You could
+ reasonably assume that they follow the normal rules for structure
+ layout treating the parameter area as any other block of memory,
+ then map the reg param area to registers. i.e. pad upward.
+ Setting both of the following defines results in this behavior.
+ Setting just the first one will result in aggregates that fit in a
+ doubleword being padded downward, and others being padded upward.
+ Not a bad idea as this results in struct { int x; } being passed
+ the same way as an int. */
+#define AGGREGATE_PADDING_FIXED TARGET_64BIT
+#define AGGREGATES_PAD_UPWARD_ALWAYS 0
+
+/* Specify padding for the last element of a block move between
+ registers and memory. FIRST is nonzero if this is the only
+ element. */
+#define BLOCK_REG_PADDING(MODE, TYPE, FIRST) \
+ (!(FIRST) ? upward : FUNCTION_ARG_PADDING (MODE, TYPE))
+
+/* Override svr4.h */
+#undef MD_EXEC_PREFIX
+#undef MD_STARTFILE_PREFIX
+
+/* NetBSD doesn't support saving and restoring 64-bit regs in a 32-bit
+ process. XXXMRG? */
+#define OS_MISSING_POWERPC64 !TARGET_64BIT
+
+/* NetBSD has float and long double forms of math functions. */
+#undef TARGET_C99_FUNCTIONS
+#define TARGET_C99_FUNCTIONS 1
+
+/* NetBSD doesn't have sincos that follows the GNU extension. */
+#undef TARGET_HAS_SINCOS
+
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS() \
+ do \
+ { \
+ NETBSD_OS_CPP_BUILTINS_ELF(); \
+ if (TARGET_64BIT) \
+ { \
+ builtin_define ("__PPC__"); \
+ builtin_define ("__PPC64__"); \
+ builtin_define ("__powerpc__"); \
+ builtin_define ("__powerpc64__"); \
+ builtin_define_with_int_value ("__PIC__", 2); \
+ builtin_assert ("cpu=powerpc64"); \
+ builtin_assert ("machine=powerpc64"); \
+ } \
+ else \
+ { \
+ builtin_define_std ("PPC"); \
+ builtin_define_std ("powerpc"); \
+ builtin_assert ("cpu=powerpc"); \
+ builtin_assert ("machine=powerpc"); \
+ TARGET_OS_SYSV_CPP_BUILTINS (); \
+ } \
+ } \
+ while (0)
+
+/* Override the default from rs6000.h to avoid conflicts with macros
+ defined in NetBSD header files. */
+
+#undef RS6000_CPU_CPP_ENDIAN_BUILTINS
+#define RS6000_CPU_CPP_ENDIAN_BUILTINS() \
+ do \
+ { \
+ builtin_define ("__BIG_ENDIAN__"); \
+ builtin_assert ("machine=bigendian"); \
+ } \
+ while (0)
+
+#undef CPP_OS_DEFAULT_SPEC
+#define CPP_OS_DEFAULT_SPEC "%(cpp_os_netbsd)"
+
+#undef LINK_SHLIB_SPEC
+#define LINK_SHLIB_SPEC "%{shared:-shared} %{!shared: %{static:-static}}"
+
+#undef LIB_DEFAULT_SPEC
+#define LIB_DEFAULT_SPEC "%(lib_netbsd)"
+
+#undef STARTFILE_DEFAULT_SPEC
+#define STARTFILE_DEFAULT_SPEC "%(startfile_netbsd)"
+
+#undef ENDFILE_DEFAULT_SPEC
+#define ENDFILE_DEFAULT_SPEC "%(endfile_netbsd)"
+
+#undef CRTSAVRES_DEFAULT_SPEC
+#define CRTSAVRES_DEFAULT_SPEC ""
+
+#undef LINK_START_DEFAULT_SPEC
+#define LINK_START_DEFAULT_SPEC "%(link_start_netbsd)"
+
+#undef LINK_OS_DEFAULT_SPEC
+#define LINK_OS_DEFAULT_SPEC "%(link_os_netbsd)"
+
+#define LINK_OS_NETBSD_SPEC32 "-m elf32ppc %{!shared: %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.elf_so}}}"
+
+#define LINK_OS_NETBSD_SPEC64 "-m elf64ppc %{!shared: %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.elf_so}}}"
+
+#undef TOC_SECTION_ASM_OP
+#define TOC_SECTION_ASM_OP \
+ (TARGET_64BIT \
+ ? "\t.section\t\".toc\",\"aw\"" \
+ : "\t.section\t\".got\",\"aw\"")
+
+#undef MINIMAL_TOC_SECTION_ASM_OP
+#define MINIMAL_TOC_SECTION_ASM_OP \
+ (TARGET_64BIT \
+ ? "\t.section\t\".toc1\",\"aw\"" \
+ : ((TARGET_RELOCATABLE || flag_pic) \
+ ? "\t.section\t\".got2\",\"aw\"" \
+ : "\t.section\t\".got1\",\"aw\""))
+
+#undef TARGET_VERSION
+#define TARGET_VERSION fprintf (stderr, " (PowerPC64 NetBSD)");
+
+/* Make GCC agree with <machine/ansi.h>. */
+
+#undef SIZE_TYPE
+#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int")
+
+#undef PTRDIFF_TYPE
+#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int")
+
+#undef WCHAR_TYPE
+#define WCHAR_TYPE (TARGET_64BIT ? "int" : "long int")
+#undef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE 32
+
+/* Override rs6000.h definition. */
+#undef ASM_APP_ON
+#define ASM_APP_ON "#APP\n"
+
+/* Override rs6000.h definition. */
+#undef ASM_APP_OFF
+#define ASM_APP_OFF "#NO_APP\n"
+
+/* PowerPC no-op instruction. */
+#undef RS6000_CALL_GLUE
+#define RS6000_CALL_GLUE (TARGET_64BIT ? "nop" : "cror 31,31,31")
+
+#undef RS6000_MCOUNT
+#define RS6000_MCOUNT "_mcount"
+
+#ifdef __powerpc64__
+/* _init and _fini functions are built from bits spread across many
+ object files, each potentially with a different TOC pointer. For
+ that reason, place a nop after the call so that the linker can
+ restore the TOC pointer if a TOC adjusting call stub is needed. */
+#if DOT_SYMBOLS
+#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \
+ asm (SECTION_OP "\n" \
+" bl ." #FUNC "\n" \
+" nop\n" \
+" .previous");
+#else
+#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \
+ asm (SECTION_OP "\n" \
+" bl " #FUNC "\n" \
+" nop\n" \
+" .previous");
+#endif
+#endif
+
+/* FP save and restore routines. */
+#undef SAVE_FP_PREFIX
+#define SAVE_FP_PREFIX (TARGET_64BIT ? "._savef" : "_savefpr_")
+#undef SAVE_FP_SUFFIX
+#define SAVE_FP_SUFFIX (TARGET_64BIT ? "" : "_l")
+#undef RESTORE_FP_PREFIX
+#define RESTORE_FP_PREFIX (TARGET_64BIT ? "._restf" : "_restfpr_")
+#undef RESTORE_FP_SUFFIX
+#define RESTORE_FP_SUFFIX (TARGET_64BIT ? "" : "_l")
+
+/* Dwarf2 debugging. */
+#undef PREFERRED_DEBUGGING_TYPE
+#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
+
+/* This is how to declare the size of a function. */
+#undef ASM_DECLARE_FUNCTION_SIZE
+#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
+ do \
+ { \
+ if (!flag_inhibit_size_directive) \
+ { \
+ fputs ("\t.size\t", (FILE)); \
+ if (TARGET_64BIT && DOT_SYMBOLS) \
+ putc ('.', (FILE)); \
+ assemble_name ((FILE), (FNAME)); \
+ fputs (",.-", (FILE)); \
+ rs6000_output_function_entry (FILE, FNAME); \
+ putc ('\n', (FILE)); \
+ } \
+ } \
+ while (0)
+
+/* Return nonzero if this entry is to be written into the constant
+ pool in a special way. We do so if this is a SYMBOL_REF, LABEL_REF
+ or a CONST containing one of them. If -mfp-in-toc (the default),
+ we also do this for floating-point constants. We actually can only
+ do this if the FP formats of the target and host machines are the
+ same, but we can't check that since not every file that uses
+ the macros includes real.h. We also do this when we can write the
+ entry into the TOC and the entry is not larger than a TOC entry. */
+
+#undef ASM_OUTPUT_SPECIAL_POOL_ENTRY_P
+#define ASM_OUTPUT_SPECIAL_POOL_ENTRY_P(X, MODE) \
+ (TARGET_TOC \
+ && (GET_CODE (X) == SYMBOL_REF \
+ || (GET_CODE (X) == CONST && GET_CODE (XEXP (X, 0)) == PLUS \
+ && GET_CODE (XEXP (XEXP (X, 0), 0)) == SYMBOL_REF) \
+ || GET_CODE (X) == LABEL_REF \
+ || (GET_CODE (X) == CONST_INT \
+ && GET_MODE_BITSIZE (MODE) <= GET_MODE_BITSIZE (Pmode)) \
+ || (GET_CODE (X) == CONST_DOUBLE \
+ && ((TARGET_64BIT \
+ && (TARGET_MINIMAL_TOC \
+ || (SCALAR_FLOAT_MODE_P (GET_MODE (X)) \
+ && ! TARGET_NO_FP_IN_TOC))) \
+ || (!TARGET_64BIT \
+ && !TARGET_NO_FP_IN_TOC \
+ && !TARGET_RELOCATABLE \
+ && SCALAR_FLOAT_MODE_P (GET_MODE (X)) \
+ && BITS_PER_WORD == HOST_BITS_PER_INT)))))
+
+/* This ABI cannot use DBX_LINES_FUNCTION_RELATIVE, nor can it use
+ dbxout_stab_value_internal_label_diff, because we must
+ use the function code label, not the function descriptor label. */
+#define DBX_OUTPUT_SOURCE_LINE(FILE, LINE, COUNTER) \
+do \
+ { \
+ char temp[256]; \
+ const char *s; \
+ ASM_GENERATE_INTERNAL_LABEL (temp, "LM", COUNTER); \
+ dbxout_begin_stabn_sline (LINE); \
+ assemble_name (FILE, temp); \
+ putc ('-', FILE); \
+ s = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0); \
+ rs6000_output_function_entry (FILE, s); \
+ putc ('\n', FILE); \
+ targetm.asm_out.internal_label (FILE, "LM", COUNTER); \
+ COUNTER += 1; \
+ } \
+while (0)
+
+/* Similarly, we want the function code label here. Cannot use
+ dbxout_stab_value_label_diff, as we have to use
+ rs6000_output_function_entry. FIXME. */
+#define DBX_OUTPUT_BRAC(FILE, NAME, BRAC) \
+ do \
+ { \
+ const char *s; \
+ dbxout_begin_stabn (BRAC); \
+ s = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0); \
+ /* dbxout_block passes this macro the function name as NAME, \
+ assuming that it is the function code start label. In our \
+ case, the function name is the OPD entry. dbxout_block is \
+ broken, hack around it here. */ \
+ if (NAME == s) \
+ putc ('0', FILE); \
+ else \
+ { \
+ assemble_name (FILE, NAME); \
+ putc ('-', FILE); \
+ rs6000_output_function_entry (FILE, s); \
+ } \
+ putc ('\n', FILE); \
+ } \
+ while (0)
+
+#define DBX_OUTPUT_LBRAC(FILE, NAME) DBX_OUTPUT_BRAC (FILE, NAME, N_LBRAC)
+#define DBX_OUTPUT_RBRAC(FILE, NAME) DBX_OUTPUT_BRAC (FILE, NAME, N_RBRAC)
+
+/* Another case where we want the dot name. */
+#define DBX_OUTPUT_NFUN(FILE, LSCOPE, DECL) \
+ do \
+ { \
+ const char *s; \
+ dbxout_begin_empty_stabs (N_FUN); \
+ assemble_name (FILE, LSCOPE); \
+ putc ('-', FILE); \
+ s = XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0); \
+ rs6000_output_function_entry (FILE, s); \
+ putc ('\n', FILE); \
+ } \
+ while (0)
+
+/* Select a format to encode pointers in exception handling data. CODE
+ is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is
+ true if the symbol may be affected by dynamic relocations. */
+#undef ASM_PREFERRED_EH_DATA_FORMAT
+#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
+ ((TARGET_64BIT || flag_pic || TARGET_RELOCATABLE) \
+ ? (((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel \
+ | (TARGET_64BIT ? DW_EH_PE_udata8 : DW_EH_PE_sdata4)) \
+ : DW_EH_PE_absptr)
+
+/* For backward compatibility, we must continue to use the AIX
+ structure return convention. */
+#undef DRAFT_V4_STRUCT_RET
+#define DRAFT_V4_STRUCT_RET (!TARGET_64BIT)
+
+#define TARGET_ASM_FILE_END rs6000_elf_end_indicate_exec_stack
+
+#define TARGET_POSIX_IO
+
+#define LINK_GCC_C_SEQUENCE_SPEC \
+ "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
+
+/* Use --as-needed -lgcc_s for eh support. */
+#ifdef HAVE_LD_AS_NEEDED
+#define USE_LD_AS_NEEDED 1
+#endif
+
+/* NetBSD ppc64 has 128-bit long double support. */
+#undef RS6000_DEFAULT_LONG_DOUBLE_SIZE
+#define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
+#define POWERPC_NETBSD
diff -rNU3 -x *.info dist/gcc/config/rs6000/rs6000.c dist.nbsd/gcc/config/rs6000/rs6000.c
--- dist/gcc/config/rs6000/rs6000.c Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/rs6000/rs6000.c Wed Nov 7 11:47:24 2012
@@ -2511,7 +2511,7 @@
if (!rs6000_explicit_options.long_double)
rs6000_long_double_type_size = RS6000_DEFAULT_LONG_DOUBLE_SIZE;
-#ifndef POWERPC_LINUX
+#if !defined(POWERPC_LINUX) && !defined(POWERPC_NETBSD)
if (!rs6000_explicit_options.ieee)
rs6000_ieeequad = 1;
#endif
@@ -5426,10 +5426,11 @@
if (model == TLS_MODEL_GLOBAL_DYNAMIC)
{
- r3 = gen_rtx_REG (Pmode, 3);
tga = rs6000_tls_get_addr ();
- emit_library_call_value (tga, dest, LCT_CONST, Pmode, 1, r3, Pmode);
+ emit_library_call_value (tga, dest, LCT_CONST, Pmode,
+ 1, const0_rtx, Pmode);
+ r3 = gen_rtx_REG (Pmode, 3);
if (DEFAULT_ABI == ABI_AIX && TARGET_64BIT)
insn = gen_tls_gd_aix64 (r3, got, addr, tga, const0_rtx);
else if (DEFAULT_ABI == ABI_AIX && !TARGET_64BIT)
@@ -5446,11 +5447,12 @@
}
else if (model == TLS_MODEL_LOCAL_DYNAMIC)
{
- r3 = gen_rtx_REG (Pmode, 3);
tga = rs6000_tls_get_addr ();
tmp1 = gen_reg_rtx (Pmode);
- emit_library_call_value (tga, tmp1, LCT_CONST, Pmode, 1, r3, Pmode);
+ emit_library_call_value (tga, tmp1, LCT_CONST, Pmode,
+ 1, const0_rtx, Pmode);
+ r3 = gen_rtx_REG (Pmode, 3);
if (DEFAULT_ABI == ABI_AIX && TARGET_64BIT)
insn = gen_tls_ld_aix64 (r3, got, tga, const0_rtx);
else if (DEFAULT_ABI == ABI_AIX && !TARGET_64BIT)
@@ -6694,7 +6696,7 @@
/* Nonzero if we can use an AltiVec register to pass this arg. */
#define USE_ALTIVEC_FOR_ARG_P(CUM,MODE,TYPE,NAMED) \
- ((ALTIVEC_VECTOR_MODE (MODE) || VSX_VECTOR_MODE (MODE)) \
+ (ALTIVEC_OR_VSX_VECTOR_MODE (MODE) \
&& (CUM)->vregno <= ALTIVEC_ARG_MAX_REG \
&& TARGET_ALTIVEC_ABI \
&& (NAMED))
@@ -6920,7 +6922,7 @@
existing library interfaces.
Doubleword align SPE vectors.
- Quadword align Altivec vectors.
+ Quadword align Altivec/VSX vectors.
Quadword align large synthetic vector types. */
int
@@ -6937,7 +6939,7 @@
&& int_size_in_bytes (type) >= 8
&& int_size_in_bytes (type) < 16))
return 64;
- else if ((ALTIVEC_VECTOR_MODE (mode) || VSX_VECTOR_MODE (mode))
+ else if (ALTIVEC_OR_VSX_VECTOR_MODE (mode)
|| (type && TREE_CODE (type) == VECTOR_TYPE
&& int_size_in_bytes (type) >= 16))
return 128;
@@ -7082,8 +7084,7 @@
cum->nargs_prototype--;
if (TARGET_ALTIVEC_ABI
- && (ALTIVEC_VECTOR_MODE (mode)
- || VSX_VECTOR_MODE (mode)
+ && (ALTIVEC_OR_VSX_VECTOR_MODE (mode)
|| (type && TREE_CODE (type) == VECTOR_TYPE
&& int_size_in_bytes (type) == 16)))
{
@@ -7677,8 +7678,7 @@
else
return gen_rtx_REG (mode, cum->vregno);
else if (TARGET_ALTIVEC_ABI
- && (ALTIVEC_VECTOR_MODE (mode)
- || VSX_VECTOR_MODE (mode)
+ && (ALTIVEC_OR_VSX_VECTOR_MODE (mode)
|| (type && TREE_CODE (type) == VECTOR_TYPE
&& int_size_in_bytes (type) == 16)))
{
@@ -15803,6 +15803,10 @@
case EQ:
case GT:
case GTU:
+ case ORDERED:
+ case UNORDERED:
+ case UNEQ:
+ case LTGT:
mask = gen_reg_rtx (mode);
emit_insn (gen_rtx_SET (VOIDmode,
mask,
@@ -16007,7 +16011,7 @@
op_false = tmp;
}
- cond2 = gen_rtx_fmt_ee (NE, cc_mode, mask, const0_rtx);
+ cond2 = gen_rtx_fmt_ee (NE, cc_mode, mask, CONST0_RTX (dest_mode));
emit_insn (gen_rtx_SET (VOIDmode,
dest,
gen_rtx_IF_THEN_ELSE (dest_mode,
@@ -18280,7 +18284,7 @@
/* Some cases that need register indexed addressing. */
if ((TARGET_ALTIVEC_ABI && ALTIVEC_VECTOR_MODE (mode))
- || (TARGET_VSX && VSX_VECTOR_MODE (mode))
+ || (TARGET_VSX && ALTIVEC_OR_VSX_VECTOR_MODE (mode))
|| (TARGET_E500_DOUBLE && mode == DFmode)
|| (TARGET_SPE_ABI
&& SPE_VECTOR_MODE (mode)
@@ -18427,7 +18431,7 @@
}
else if (DEFAULT_ABI == ABI_AIX)
{
-#ifndef POWERPC_LINUX
+#if !defined(POWERPC_LINUX) && !defined(POWERPC_NETBSD)
/* No out-of-line save/restore routines for GPRs on AIX. */
gcc_assert (!TARGET_AIX || !gpr);
#endif
@@ -18437,7 +18441,7 @@
prefix = (savep
? (lr ? "_savegpr0_" : "_savegpr1_")
: (lr ? "_restgpr0_" : "_restgpr1_"));
-#ifdef POWERPC_LINUX
+#if defined(POWERPC_LINUX) || defined(POWERPC_NETBSD)
else if (lr)
prefix = (savep ? "_savefpr_" : "_restfpr_");
#endif
@@ -18504,7 +18508,7 @@
{
/* This blockage is needed so that sched doesn't decide to move
the sp change before the register restores. */
- if (frame_reg_rtx != sp_reg_rtx
+ if (DEFAULT_ABI == ABI_V4
|| (TARGET_SPE_ABI
&& info->spe_64bit_regs_used != 0
&& info->first_gp_reg_save != 32))
@@ -18701,7 +18705,7 @@
strategy = (using_multiple_p
| (savres_fprs_inline << 1)
| (savres_gprs_inline << 2));
-#ifdef POWERPC_LINUX
+#if defined(POWERPC_LINUX) || defined(POWERPC_NETBSD)
if (TARGET_64BIT)
{
if (!savres_fprs_inline)
@@ -25565,14 +25569,13 @@
else if (TREE_CODE (valtype) == COMPLEX_TYPE
&& targetm.calls.split_complex_arg)
return rs6000_complex_function_value (mode);
+ /* VSX is a superset of Altivec and adds V2DImode/V2DFmode. Since the same
+ return register is used in both cases, and we won't see V2DImode/V2DFmode
+ for pure altivec, combine the two cases. */
else if (TREE_CODE (valtype) == VECTOR_TYPE
&& TARGET_ALTIVEC && TARGET_ALTIVEC_ABI
- && ALTIVEC_VECTOR_MODE (mode))
+ && ALTIVEC_OR_VSX_VECTOR_MODE (mode))
regno = ALTIVEC_ARG_RETURN;
- else if (TREE_CODE (valtype) == VECTOR_TYPE
- && TARGET_VSX && TARGET_ALTIVEC_ABI
- && VSX_VECTOR_MODE (mode))
- regno = ALTIVEC_ARG_RETURN;
else if (TARGET_E500_DOUBLE && TARGET_HARD_FLOAT
&& (mode == DFmode || mode == DCmode
|| mode == TFmode || mode == TCmode))
@@ -25611,11 +25614,11 @@
&& TARGET_HARD_FLOAT && TARGET_FPRS
&& ((TARGET_SINGLE_FLOAT && mode == SFmode) || TARGET_DOUBLE_FLOAT))
regno = FP_ARG_RETURN;
- else if (ALTIVEC_VECTOR_MODE (mode)
+ /* VSX is a superset of Altivec and adds V2DImode/V2DFmode. Since the same
+ return register is used in both cases, and we won't see V2DImode/V2DFmode
+ for pure altivec, combine the two cases. */
+ else if (ALTIVEC_OR_VSX_VECTOR_MODE (mode)
&& TARGET_ALTIVEC && TARGET_ALTIVEC_ABI)
- regno = ALTIVEC_ARG_RETURN;
- else if (VSX_VECTOR_MODE (mode)
- && TARGET_VSX && TARGET_ALTIVEC_ABI)
regno = ALTIVEC_ARG_RETURN;
else if (COMPLEX_MODE_P (mode) && targetm.calls.split_complex_arg)
return rs6000_complex_function_value (mode);
diff -rNU3 -x *.info dist/gcc/config/rs6000/rs6000.h dist.nbsd/gcc/config/rs6000/rs6000.h
--- dist/gcc/config/rs6000/rs6000.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/rs6000/rs6000.h Wed Nov 7 11:47:24 2012
@@ -1038,10 +1038,9 @@
/* When setting up caller-save slots (MODE == VOIDmode) ensure we allocate
enough space to account for vectors in FP regs. */
-#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \
- (TARGET_VSX \
- && ((MODE) == VOIDmode || VSX_VECTOR_MODE (MODE) \
- || ALTIVEC_VECTOR_MODE (MODE)) \
+#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \
+ (TARGET_VSX \
+ && ((MODE) == VOIDmode || ALTIVEC_OR_VSX_VECTOR_MODE (MODE)) \
&& FP_REGNO_P (REGNO) \
? V2DFmode \
: choose_hard_reg_mode ((REGNO), (NREGS), false))
@@ -1057,25 +1056,16 @@
((MODE) == V4SFmode \
|| (MODE) == V2DFmode) \
-#define VSX_SCALAR_MODE(MODE) \
- ((MODE) == DFmode)
-
-#define VSX_MODE(MODE) \
- (VSX_VECTOR_MODE (MODE) \
- || VSX_SCALAR_MODE (MODE))
-
-#define VSX_MOVE_MODE(MODE) \
- (VSX_VECTOR_MODE (MODE) \
- || VSX_SCALAR_MODE (MODE) \
- || ALTIVEC_VECTOR_MODE (MODE) \
- || (MODE) == TImode)
-
#define ALTIVEC_VECTOR_MODE(MODE) \
((MODE) == V16QImode \
|| (MODE) == V8HImode \
|| (MODE) == V4SFmode \
|| (MODE) == V4SImode)
+#define ALTIVEC_OR_VSX_VECTOR_MODE(MODE) \
+ (ALTIVEC_VECTOR_MODE (MODE) || VSX_VECTOR_MODE (MODE) \
+ || (MODE) == V2DImode)
+
#define SPE_VECTOR_MODE(MODE) \
((MODE) == V4HImode \
|| (MODE) == V2SFmode \
@@ -1118,10 +1108,10 @@
? ALTIVEC_VECTOR_MODE (MODE2) \
: ALTIVEC_VECTOR_MODE (MODE2) \
? ALTIVEC_VECTOR_MODE (MODE1) \
- : VSX_VECTOR_MODE (MODE1) \
- ? VSX_VECTOR_MODE (MODE2) \
- : VSX_VECTOR_MODE (MODE2) \
- ? VSX_VECTOR_MODE (MODE1) \
+ : ALTIVEC_OR_VSX_VECTOR_MODE (MODE1) \
+ ? ALTIVEC_OR_VSX_VECTOR_MODE (MODE2) \
+ : ALTIVEC_OR_VSX_VECTOR_MODE (MODE2) \
+ ? ALTIVEC_OR_VSX_VECTOR_MODE (MODE1) \
: 1)
/* Post-reload, we can't use any new AltiVec registers, as we already
diff -rNU3 -x *.info dist/gcc/config/rs6000/rs6000.md dist.nbsd/gcc/config/rs6000/rs6000.md
--- dist/gcc/config/rs6000/rs6000.md Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/rs6000/rs6000.md Wed Nov 7 11:47:24 2012
@@ -2483,8 +2483,19 @@
if (GET_CODE (addr1) == PLUS)
{
emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
- addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
+ if (TARGET_AVOID_XFORM)
+ {
+ emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
+ addr2 = op2;
+ }
+ else
+ addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
}
+ else if (TARGET_AVOID_XFORM)
+ {
+ emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
+ addr2 = op2;
+ }
else
{
emit_move_insn (op2, GEN_INT (4));
@@ -2533,8 +2544,19 @@
if (GET_CODE (addr1) == PLUS)
{
emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
- addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
+ if (TARGET_AVOID_XFORM)
+ {
+ emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
+ addr2 = op2;
+ }
+ else
+ addr2 = gen_rtx_PLUS (Pmode, op2, XEXP (addr1, 1));
}
+ else if (TARGET_AVOID_XFORM)
+ {
+ emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
+ addr2 = op2;
+ }
else
{
emit_move_insn (op2, GEN_INT (4));
@@ -2614,8 +2636,19 @@
if (GET_CODE (addr1) == PLUS)
{
emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
- addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
+ if (TARGET_AVOID_XFORM)
+ {
+ emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
+ addr2 = op2;
+ }
+ else
+ addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
}
+ else if (TARGET_AVOID_XFORM)
+ {
+ emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
+ addr2 = op2;
+ }
else
{
emit_move_insn (op2, GEN_INT (4));
@@ -2659,8 +2692,19 @@
if (GET_CODE (addr1) == PLUS)
{
emit_insn (gen_add3_insn (op2, XEXP (addr1, 0), GEN_INT (4)));
- addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
+ if (TARGET_AVOID_XFORM)
+ {
+ emit_insn (gen_add3_insn (op2, XEXP (addr1, 1), op2));
+ addr2 = op2;
+ }
+ else
+ addr2 = gen_rtx_PLUS (SImode, op2, XEXP (addr1, 1));
}
+ else if (TARGET_AVOID_XFORM)
+ {
+ emit_insn (gen_add3_insn (op2, addr1, GEN_INT (4)));
+ addr2 = op2;
+ }
else
{
emit_move_insn (op2, GEN_INT (4));
@@ -12473,7 +12517,11 @@
[(set (match_operand 0 "memory_operand" "=m")
(unspec [(const_int 0)] UNSPEC_PROBE_STACK))]
""
- "{st%U0%X0|stw%U0%X0} 0,%0"
+ "*
+{
+ operands[1] = gen_rtx_REG (Pmode, 0);
+ return \"{st%U0%X0|stw%U0%X0} %1,%0\";
+}"
[(set_attr "type" "store")
(set_attr "length" "4")])
diff -rNU3 -x *.info dist/gcc/config/rs6000/sysv4.h dist.nbsd/gcc/config/rs6000/sysv4.h
--- dist/gcc/config/rs6000/sysv4.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/rs6000/sysv4.h Wed Nov 7 11:47:24 2012
@@ -120,7 +120,12 @@
else if (!strcmp (rs6000_abi_name, "gnu")) \
rs6000_current_abi = ABI_V4; \
else if (!strcmp (rs6000_abi_name, "netbsd")) \
- rs6000_current_abi = ABI_V4; \
+ { \
+ if (TARGET_64BIT) \
+ rs6000_current_abi = ABI_AIX; \
+ else \
+ rs6000_current_abi = ABI_V4; \
+ } \
else if (!strcmp (rs6000_abi_name, "openbsd")) \
rs6000_current_abi = ABI_V4; \
else if (!strcmp (rs6000_abi_name, "i960-old")) \
@@ -618,6 +623,7 @@
#endif
/* Pass -G xxx to the compiler and set correct endian mode. */
+#undef CC1_SPEC
#define CC1_SPEC "%{G*} %(cc1_cpu) \
%{mlittle|mlittle-endian: %(cc1_endian_little); \
mbig |mbig-endian : %(cc1_endian_big); \
@@ -641,7 +647,8 @@
%{msdata: -msdata=default} \
%{mno-sdata: -msdata=none} \
%{!mbss-plt: %{!msecure-plt: %(cc1_secure_plt_default)}} \
-%{profile: -p}"
+%{profile: -p} \
+%(cc1_os_netbsd)"
/* Don't put -Y P,<path> for cross compilers. */
#ifndef CROSS_DIRECTORY_STRUCTURE
@@ -913,7 +920,7 @@
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}"
-#if defined(HAVE_LD_EH_FRAME_HDR)
+#if defined(HAVE_LD_EH_FRAME_HDR) && !defined(LINK_EH_SPEC)
# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
#endif
@@ -950,28 +957,23 @@
-Asystem=gnu -Asystem=unix -Asystem=posix %{pthread:-D_REENTRANT}"
/* NetBSD support. */
-#define LIB_NETBSD_SPEC "\
-%{profile:-lgmon -lc_p} %{!profile:-lc}"
+#define LIB_NETBSD_SPEC NETBSD_LIB_SPEC
-#define STARTFILE_NETBSD_SPEC "\
-ncrti.o%s crt0.o%s \
-%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
+#define STARTFILE_NETBSD_SPEC NETBSD_STARTFILE_SPEC
-#define ENDFILE_NETBSD_SPEC "\
-%{!shared:crtend.o%s} %{shared:crtendS.o%s} \
-ncrtn.o%s"
+#define ENDFILE_NETBSD_SPEC NETBSD_ENDFILE_SPEC
#define LINK_START_NETBSD_SPEC "\
"
-#define LINK_OS_NETBSD_SPEC "\
-%{!shared: %{!static: \
- %{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.elf_so}}}"
+#define LINK_OS_NETBSD_SPEC NETBSD_LINK_SPEC_ELF
#define CPP_OS_NETBSD_SPEC "\
-D__powerpc__ -D__NetBSD__ -D__KPRINTF_ATTRIBUTE__"
+#define CC1_OS_NETBSD_SPEC "\
+%{cxx-isystem}"
+
/* OpenBSD support. */
#ifndef LIB_OPENBSD_SPEC
#define LIB_OPENBSD_SPEC "%{!shared:%{pthread:-lpthread%{p:_p}%{!p:%{pg:_p}}}} %{!shared:-lc%{p:_p}%{!p:%{pg:_p}}}"
@@ -1064,6 +1066,7 @@
{ "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \
{ "cc1_endian_default", CC1_ENDIAN_DEFAULT_SPEC }, \
{ "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
+ { "cc1_os_netbsd", CC1_OS_NETBSD_SPEC }, \
{ "cpp_os_ads", CPP_OS_ADS_SPEC }, \
{ "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
{ "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
diff -rNU3 -x *.info dist/gcc/config/rs6000/t-netbsd dist.nbsd/gcc/config/rs6000/t-netbsd
--- dist/gcc/config/rs6000/t-netbsd Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/rs6000/t-netbsd Wed Nov 7 11:47:24 2012
@@ -18,15 +18,12 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-LIB2FUNCS_EXTRA = tramp.S
+LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/tramp.asm
LIB2FUNCS_STATIC_EXTRA = crtsavfpr.S crtresfpr.S \
crtsavgpr.S crtresgpr.S \
crtresxfpr.S crtresxgpr.S
-tramp.S: $(srcdir)/config/rs6000/tramp.asm
- cat $(srcdir)/config/rs6000/tramp.asm > tramp.S
-
crtsavfpr.S: $(srcdir)/config/rs6000/crtsavfpr.asm
cat $(srcdir)/config/rs6000/crtsavfpr.asm >crtsavfpr.S
@@ -67,9 +64,6 @@
MULTILIB_MATCHES = ${MULTILIB_MATCHES_FLOAT}
LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-EXTRA_MULTILIB_PARTS = crtbegin$(objext) crtend$(objext) \
- crtbeginS$(objext) crtendS$(objext) crtbeginT$(objext)
$(T)crtsavfpr$(objext): crtsavfpr.S
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtsavfpr.S -o $(T)crtsavfpr$(objext)
@@ -88,3 +82,6 @@
$(T)crtresxgpr$(objext): crtresxgpr.S
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresxgpr.S -o $(T)crtresxgpr$(objext)
+INSTALL_LIBGCC = install-multilib
+EXTRA_MULTILIB_PARTS = crtbegin$(objext) crtend$(objext) \
+ crtbeginS$(objext) crtendS$(objext) crtbeginT$(objext)
diff -rNU3 -x *.info dist/gcc/config/rs6000/t-netbsd64 dist.nbsd/gcc/config/rs6000/t-netbsd64
--- dist/gcc/config/rs6000/t-netbsd64 Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/config/rs6000/t-netbsd64 Wed Nov 7 11:47:24 2012
@@ -0,0 +1,34 @@
+# Support for NetBSD PowerPC64 ELF targets (ELF64 ABI).
+
+LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/tramp.asm \
+ $(srcdir)/config/rs6000/ppc64-fp.c \
+ $(srcdir)/config/rs6000/darwin-ldouble.c
+
+TARGET_LIBGCC2_CFLAGS += -mno-minimal-toc
+
+MULTILIB_OPTIONS = m64/m32 msoft-float
+MULTILIB_DIRNAMES = 64 32 soft-float
+MULTILIB_EXTRA_OPTS = fPIC mstrict-align
+MULTILIB_EXCEPTIONS = m64/msoft-float
+MULTILIB_EXCLUSIONS = m64/!m32/msoft-float
+# XXX this is wrong
+MULTILIB_OSDIRNAMES = ../lib ../lib32 soft-float
+
+MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT)
+
+# We want fine grained libraries, so use the new code to build the
+# floating point emulation libraries.
+# fp-bit is only to be used by 32-bit multilibs
+FPBIT = fp-bit32.c
+DPBIT = dp-bit32.c
+
+dp-bit32.c: $(srcdir)/config/fp-bit.c
+ ( echo '#ifndef __powerpc64__'; \
+ cat $(srcdir)/config/fp-bit.c; \
+ echo '#endif' ) > dp-bit32.c
+
+fp-bit32.c: $(srcdir)/config/fp-bit.c
+ ( echo '#ifndef __powerpc64__'; \
+ echo '#define FLOAT'; \
+ cat $(srcdir)/config/fp-bit.c; \
+ echo '#endif' ) > fp-bit32.c
diff -rNU3 -x *.info dist/gcc/config/rs6000/vector.md dist.nbsd/gcc/config/rs6000/vector.md
--- dist/gcc/config/rs6000/vector.md Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/rs6000/vector.md Wed Nov 7 11:47:24 2012
@@ -441,27 +441,115 @@
"VECTOR_UNIT_ALTIVEC_P (<MODE>mode)"
"")
+(define_insn_and_split "*vector_uneq<mode>"
+ [(set (match_operand:VEC_F 0 "vfloat_operand" "")
+ (uneq:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
+ (match_operand:VEC_F 2 "vfloat_operand" "")))]
+ "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
+ "#"
+ ""
+ [(set (match_dup 3)
+ (gt:VEC_F (match_dup 1)
+ (match_dup 2)))
+ (set (match_dup 4)
+ (gt:VEC_F (match_dup 2)
+ (match_dup 1)))
+ (set (match_dup 0)
+ (not:VEC_F (ior:VEC_F (match_dup 3)
+ (match_dup 4))))]
+ "
+{
+ operands[3] = gen_reg_rtx (<MODE>mode);
+ operands[4] = gen_reg_rtx (<MODE>mode);
+}")
+
+(define_insn_and_split "*vector_ltgt<mode>"
+ [(set (match_operand:VEC_F 0 "vfloat_operand" "")
+ (ltgt:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
+ (match_operand:VEC_F 2 "vfloat_operand" "")))]
+ "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
+ "#"
+ ""
+ [(set (match_dup 3)
+ (gt:VEC_F (match_dup 1)
+ (match_dup 2)))
+ (set (match_dup 4)
+ (gt:VEC_F (match_dup 2)
+ (match_dup 1)))
+ (set (match_dup 0)
+ (ior:VEC_F (match_dup 3)
+ (match_dup 4)))]
+ "
+{
+ operands[3] = gen_reg_rtx (<MODE>mode);
+ operands[4] = gen_reg_rtx (<MODE>mode);
+}")
+
+(define_insn_and_split "*vector_ordered<mode>"
+ [(set (match_operand:VEC_F 0 "vfloat_operand" "")
+ (ordered:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
+ (match_operand:VEC_F 2 "vfloat_operand" "")))]
+ "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
+ "#"
+ ""
+ [(set (match_dup 3)
+ (ge:VEC_F (match_dup 1)
+ (match_dup 2)))
+ (set (match_dup 4)
+ (ge:VEC_F (match_dup 2)
+ (match_dup 1)))
+ (set (match_dup 0)
+ (ior:VEC_F (match_dup 3)
+ (match_dup 4)))]
+ "
+{
+ operands[3] = gen_reg_rtx (<MODE>mode);
+ operands[4] = gen_reg_rtx (<MODE>mode);
+}")
+
+(define_insn_and_split "*vector_unordered<mode>"
+ [(set (match_operand:VEC_F 0 "vfloat_operand" "")
+ (unordered:VEC_F (match_operand:VEC_F 1 "vfloat_operand" "")
+ (match_operand:VEC_F 2 "vfloat_operand" "")))]
+ "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
+ "#"
+ ""
+ [(set (match_dup 3)
+ (ge:VEC_F (match_dup 1)
+ (match_dup 2)))
+ (set (match_dup 4)
+ (ge:VEC_F (match_dup 2)
+ (match_dup 1)))
+ (set (match_dup 0)
+ (not:VEC_F (ior:VEC_F (match_dup 3)
+ (match_dup 4))))]
+ "
+{
+ operands[3] = gen_reg_rtx (<MODE>mode);
+ operands[4] = gen_reg_rtx (<MODE>mode);
+}")
+
;; Note the arguments for __builtin_altivec_vsel are op2, op1, mask
;; which is in the reverse order that we want
(define_expand "vector_select_<mode>"
[(set (match_operand:VEC_L 0 "vlogical_operand" "")
(if_then_else:VEC_L
(ne:CC (match_operand:VEC_L 3 "vlogical_operand" "")
- (const_int 0))
+ (match_dup 4))
(match_operand:VEC_L 2 "vlogical_operand" "")
(match_operand:VEC_L 1 "vlogical_operand" "")))]
"VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
- "")
+ "operands[4] = CONST0_RTX (<MODE>mode);")
(define_expand "vector_select_<mode>_uns"
[(set (match_operand:VEC_L 0 "vlogical_operand" "")
(if_then_else:VEC_L
(ne:CCUNS (match_operand:VEC_L 3 "vlogical_operand" "")
- (const_int 0))
+ (match_dup 4))
(match_operand:VEC_L 2 "vlogical_operand" "")
(match_operand:VEC_L 1 "vlogical_operand" "")))]
"VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
- "")
+ "operands[4] = CONST0_RTX (<MODE>mode);")
;; Expansions that compare vectors producing a vector result and a predicate,
;; setting CR6 to indicate a combined status
diff -rNU3 -x *.info dist/gcc/config/rs6000/vsx.md dist.nbsd/gcc/config/rs6000/vsx.md
--- dist/gcc/config/rs6000/vsx.md Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/rs6000/vsx.md Wed Nov 7 11:47:24 2012
@@ -844,7 +844,7 @@
[(set (match_operand:VSX_L 0 "vsx_register_operand" "=<VSr>,?wa")
(if_then_else:VSX_L
(ne:CC (match_operand:VSX_L 1 "vsx_register_operand" "<VSr>,wa")
- (const_int 0))
+ (match_operand:VSX_L 4 "zero_constant" ""))
(match_operand:VSX_L 2 "vsx_register_operand" "<VSr>,wa")
(match_operand:VSX_L 3 "vsx_register_operand" "<VSr>,wa")))]
"VECTOR_MEM_VSX_P (<MODE>mode)"
@@ -855,7 +855,7 @@
[(set (match_operand:VSX_L 0 "vsx_register_operand" "=<VSr>,?wa")
(if_then_else:VSX_L
(ne:CCUNS (match_operand:VSX_L 1 "vsx_register_operand" "<VSr>,wa")
- (const_int 0))
+ (match_operand:VSX_L 4 "zero_constant" ""))
(match_operand:VSX_L 2 "vsx_register_operand" "<VSr>,wa")
(match_operand:VSX_L 3 "vsx_register_operand" "<VSr>,wa")))]
"VECTOR_MEM_VSX_P (<MODE>mode)"
@@ -1161,9 +1161,9 @@
"VECTOR_MEM_VSX_P (<MODE>mode)"
{
if (INTVAL (operands[3]) == 0)
- return \"xxpermdi %x0,%x1,%x2,1\";
+ return \"xxpermdi %x0,%x2,%x1,1\";
else if (INTVAL (operands[3]) == 1)
- return \"xxpermdi %x0,%x2,%x1,0\";
+ return \"xxpermdi %x0,%x1,%x2,0\";
else
gcc_unreachable ();
}
diff -rNU3 -x *.info dist/gcc/config/rx/rx.c dist.nbsd/gcc/config/rx/rx.c
--- dist/gcc/config/rx/rx.c Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/rx/rx.c Wed Nov 7 11:47:24 2012
@@ -2158,10 +2158,10 @@
if (! valid_psw_flag (op, "clrpsw"))
return NULL_RTX;
return rx_expand_void_builtin_1_arg (op, gen_clrpsw, false);
+ case RX_BUILTIN_SETPSW:
if (! valid_psw_flag (op, "setpsw"))
return NULL_RTX;
return rx_expand_void_builtin_1_arg (op, gen_setpsw, false);
- case RX_BUILTIN_SETPSW:
case RX_BUILTIN_INT: return rx_expand_void_builtin_1_arg
(op, gen_int, false);
case RX_BUILTIN_MACHI: return rx_expand_builtin_mac (exp, gen_machi);
diff -rNU3 -x *.info dist/gcc/config/rx/rx.h dist.nbsd/gcc/config/rx/rx.h
--- dist/gcc/config/rx/rx.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/rx/rx.h Wed Nov 7 11:47:24 2012
@@ -168,7 +168,7 @@
#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-#define HAVE_PRE_DECCREMENT 1
+#define HAVE_PRE_DECREMENT 1
#define HAVE_POST_INCREMENT 1
#define MOVE_RATIO(SPEED) ((SPEED) ? 4 : 2)
diff -rNU3 -x *.info dist/gcc/config/rx/rx.md dist.nbsd/gcc/config/rx/rx.md
--- dist/gcc/config/rx/rx.md Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/rx/rx.md Wed Nov 7 11:47:24 2012
@@ -709,24 +709,24 @@
(clobber (reg:CC CC_REG))])]
""
{
- /* ??? Support other conditions via cstore into a temporary? */
- if (GET_CODE (operands[1]) != EQ && GET_CODE (operands[1]) != NE)
+ /* One operand must be a constant or a register, the other must be a register. */
+ if ( ! CONSTANT_P (operands[2])
+ && ! CONSTANT_P (operands[3])
+ && ! (REG_P (operands[2]) && REG_P (operands[3])))
FAIL;
- /* One operand must be a constant. */
- if (!CONSTANT_P (operands[2]) && !CONSTANT_P (operands[3]))
- FAIL;
})
(define_insn_and_split "*movsicc"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
+ [(set (match_operand:SI 0 "register_operand" "=r,r,r")
(if_then_else:SI
- (match_operator 5 "rx_z_comparison_operator"
- [(match_operand:SI 3 "register_operand" "r,r")
- (match_operand:SI 4 "rx_source_operand" "riQ,riQ")])
- (match_operand:SI 1 "nonmemory_operand" "i,ri")
- (match_operand:SI 2 "nonmemory_operand" "ri,i")))
+ (match_operator 5 "comparison_operator"
+ [(match_operand:SI 3 "register_operand" "r,r,r")
+ (match_operand:SI 4 "rx_source_operand" "riQ,riQ,riQ")])
+ (match_operand:SI 1 "nonmemory_operand" "i,ri,r")
+ (match_operand:SI 2 "nonmemory_operand" "ri,i,r")))
(clobber (reg:CC CC_REG))]
- "CONSTANT_P (operands[1]) || CONSTANT_P (operands[2])"
+ "(CONSTANT_P (operands[1]) || CONSTANT_P (operands[2]))
+ || (REG_P (operands[1]) && REG_P (operands[2]))"
"#"
"&& reload_completed"
[(const_int 0)]
@@ -743,8 +743,11 @@
op1 = operands[1];
op2 = operands[2];
- /* If OP2 is the constant, reverse the sense of the move. */
- if (!CONSTANT_P (operands[1]))
+ /* If OP2 is the constant, reverse the sense of the move.
+ Likewise if both operands are registers but OP1 == OP0. */
+ if ((! CONSTANT_P (operands[1]) && CONSTANT_P (operands[2]))
+ || (REG_P (operands[1]) && REG_P (operands[2])
+ && rtx_equal_p (op0, op1)))
{
x = op1, op1 = op2, op2 = x;
cmp_code = reverse_condition (cmp_code);
@@ -753,7 +756,7 @@
/* If OP2 does not match the output, copy it into place. We have allowed
these alternatives so that the destination can legitimately be one of
the comparison operands without increasing register pressure. */
- if (!rtx_equal_p (op0, op2))
+ if (! rtx_equal_p (op0, op2))
emit_move_insn (op0, op2);
x = gen_rtx_fmt_ee (cmp_code, VOIDmode, flags, const0_rtx);
@@ -769,14 +772,31 @@
[(reg CC_REG) (const_int 0)])
(match_operand:SI 1 "immediate_operand" "Sint08,Sint16,Sint24,i")
(match_dup 0)))]
- "reload_completed"
-{
- if (GET_CODE (operands[2]) == EQ)
- return "stz\t%1, %0";
- else
- return "stnz\t%1, %0";
-}
+ "reload_completed
+ && ((GET_CODE (operands[2]) == EQ) || (GET_CODE (operands[2]) == NE))"
+ {
+ if (GET_CODE (operands[2]) == EQ)
+ return "stz\t%1, %0";
+ else
+ return "stnz\t%1, %0";
+ }
[(set_attr "length" "4,5,6,7")]
+)
+
+(define_insn "*stcc_reg"
+ [(set (match_operand:SI 0 "register_operand" "+r,r,r,r,r,r")
+ (if_then_else:SI
+ (match_operator 2 "comparison_operator"
+ [(reg CC_REG) (const_int 0)])
+ (match_operand:SI 1 "nonmemory_operand"
+ "r,Uint04,Sint08,Sint16,Sint24,i")
+ (match_dup 0)))]
+ "reload_completed"
+ {
+ PUT_CODE (operands[2], reverse_condition (GET_CODE (operands[2])));
+ return "b%B2 1f\n\tmov %1, %0\n1:";
+ }
+ [(set_attr "length" "3,3,4,5,6,7")]
)
;; Arithmetic Instructions
diff -rNU3 -x *.info dist/gcc/config/sh/linux-unwind.h dist.nbsd/gcc/config/sh/linux-unwind.h
--- dist/gcc/config/sh/linux-unwind.h Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/sh/linux-unwind.h Wed Nov 7 11:47:24 2012
@@ -1,5 +1,6 @@
/* DWARF2 EH unwinding support for SH Linux.
- Copyright (C) 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2006, 2007, 2009, 2012 Free Software Foundation,
+ Inc.
This file is part of GCC.
@@ -80,9 +81,9 @@
&& (*(unsigned long *) (pc+11) == 0x6ff0fff0))
{
struct rt_sigframe {
- struct siginfo *pinfo;
+ siginfo_t *pinfo;
void *puc;
- struct siginfo info;
+ siginfo_t info;
struct ucontext uc;
} *rt_ = context->cfa;
/* The void * cast is necessary to avoid an aliasing warning.
@@ -179,7 +180,7 @@
&& (*(unsigned short *) (pc+14) == 0x00ad))))
{
struct rt_sigframe {
- struct siginfo info;
+ siginfo_t info;
struct ucontext uc;
} *rt_ = context->cfa;
/* The void * cast is necessary to avoid an aliasing warning.
diff -rNU3 -x *.info dist/gcc/config/sh/sh.c dist.nbsd/gcc/config/sh/sh.c
--- dist/gcc/config/sh/sh.c Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/sh/sh.c Wed Nov 7 11:47:24 2012
@@ -1945,7 +1945,10 @@
else if (op2h != CONST0_RTX (SImode))
msw_taken = LTU;
else
- break;
+ {
+ msw_skip = swap_condition (LTU);
+ break;
+ }
msw_skip = swap_condition (msw_taken);
}
break;
@@ -1998,6 +2001,13 @@
{
operands[1] = op1h;
operands[2] = op2h;
+ if (reload_completed
+ && ! arith_reg_or_0_operand (op2h, SImode)
+ && (true_regnum (op1h) || (comparison != EQ && comparison != NE)))
+ {
+ emit_move_insn (scratch, operands[2]);
+ operands[2] = scratch;
+ }
}
operands[3] = skip_label = gen_label_rtx ();
@@ -11428,10 +11438,6 @@
}
sh_reorg ();
-
- if (optimize > 0 && flag_delayed_branch)
- dbr_schedule (insns);
-
shorten_branches (insns);
final_start_function (insns, file, 1);
final (insns, file, 1);
diff -rNU3 -x *.info dist/gcc/config/sh/sh.md dist.nbsd/gcc/config/sh/sh.md
--- dist/gcc/config/sh/sh.md Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/sh/sh.md Wed Nov 7 11:47:24 2012
@@ -149,6 +149,7 @@
(UNSPEC_DIV_INV_TABLE 37)
(UNSPEC_ASHIFTRT 35)
(UNSPEC_THUNK 36)
+ (UNSPEC_CHKADD 38)
(UNSPEC_SP_SET 40)
(UNSPEC_SP_TEST 41)
(UNSPEC_MOVUA 42)
@@ -8438,6 +8439,22 @@
i++;
}")
+;; op0 = op1 + r12 but hide it before reload completed. See the comment
+;; in symGOT_load expand.
+
+(define_insn_and_split "chk_guard_add"
+ [(set (match_operand:SI 0 "register_operand" "=&r")
+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+ (reg:SI PIC_REG)]
+ UNSPEC_CHKADD))]
+ "TARGET_SH1"
+ "#"
+ "TARGET_SH1 && reload_completed"
+ [(set (match_dup 0) (reg:SI PIC_REG))
+ (set (match_dup 0) (plus:SI (match_dup 0) (match_dup 1)))]
+ ""
+ [(set_attr "type" "arith")])
+
(define_expand "sym_label2reg"
[(set (match_operand:SI 0 "" "")
(const:SI (unspec:SI [(match_operand:SI 1 "" "")
@@ -8480,13 +8497,9 @@
else
emit_move_insn (operands[2], operands[1]);
- emit_move_insn (operands[3], gen_rtx_PLUS (Pmode,
- operands[2],
- gen_rtx_REG (Pmode, PIC_REG)));
-
/* When stack protector inserts codes after the result is set to
- R0, @(rX, r12) will cause a spill failure for R0. Don't schedule
- insns to avoid combining (set A (plus rX r12)) and (set op0 (mem A))
+ R0, @(rX, r12) will cause a spill failure for R0. Use a unspec
+ insn to avoid combining (set A (plus rX r12)) and (set op0 (mem A))
when rX is a GOT address for the guard symbol. Ugly but doesn't
matter because this is a rare situation. */
if (!TARGET_SHMEDIA
@@ -8496,7 +8509,10 @@
&& GET_CODE (XVECEXP (XEXP (operands[1], 0), 0, 0)) == SYMBOL_REF
&& strcmp (XSTR (XVECEXP (XEXP (operands[1], 0), 0, 0), 0),
\"__stack_chk_guard\") == 0)
- emit_insn (gen_blockage ());
+ emit_insn (gen_chk_guard_add (operands[3], operands[2]));
+ else
+ emit_move_insn (operands[3], gen_rtx_PLUS (Pmode, operands[2],
+ gen_rtx_REG (Pmode, PIC_REG)));
/* N.B. This is not constant for a GOTPLT relocation. */
mem = gen_rtx_MEM (Pmode, operands[3]);
diff -rNU3 -x *.info dist/gcc/config/sh/t-netbsd dist.nbsd/gcc/config/sh/t-netbsd
--- dist/gcc/config/sh/t-netbsd Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/sh/t-netbsd Wed Nov 7 11:47:24 2012
@@ -19,6 +19,10 @@
TARGET_LIBGCC2_CFLAGS = -fpic -mieee
LIB1ASMFUNCS_CACHE = _ic_invalidate
+# Use sh specific libgcc-std.ver to avoid exporting some
+# lib1func routines which shoud not be called via PLT.
+#SHLIB_MAPFILES = $(srcdir)/config/sh/libgcc-std.ver
+
LIB2FUNCS_EXTRA=
EXTRA_MULTILIB_PARTS=
diff -rNU3 -x *.info dist/gcc/config/sparc/netbsd-elf.h dist.nbsd/gcc/config/sparc/netbsd-elf.h
--- dist/gcc/config/sparc/netbsd-elf.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/sparc/netbsd-elf.h Wed Nov 7 11:47:24 2012
@@ -112,7 +112,7 @@
+ MASK_STACK_BIAS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128)
#undef SPARC_DEFAULT_CMODEL
-#define SPARC_DEFAULT_CMODEL CM_MEDANY
+#define SPARC_DEFAULT_CMODEL CM_MEDLOW
#endif
@@ -134,7 +134,8 @@
%{!msupersparc:-mcpu=ultrasparc}}}}}}} \
%{!mno-vis:%{!mcpu=v9:-mvis}} \
%{p:-mcmodel=medlow} \
- %{pg:-mcmodel=medlow}}"
+ %{pg:-mcmodel=medlow}}" \
+ NETBSD_CC1_AND_CC1PLUS_SPEC
#define CC1_SPEC64 \
"%{sun4:} %{target:} \
@@ -153,8 +154,9 @@
%{!mv8*: \
%{!msupersparc:-mcpu=cypress}}}}}}}} \
%{!m32: \
- %{p:-mcmodel=medlow} \
- %{pg:-mcmodel=medlow}}"
+ %{p:-mcmodel=medlow} \
+ %{pg:-mcmodel=medlow}}" \
+ NETBSD_CC1_AND_CC1PLUS_SPEC
/* Make sure we use the right output format. Pick a default and then
make sure -m32/-m64 switch to the right one. */
@@ -263,6 +265,13 @@
|| TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc */
#endif /* SPARC_BI_ARCH */
+
+#ifdef HAVE_AS_TLS
+#undef TARGET_SUN_TLS
+#undef TARGET_GNU_TLS
+#define TARGET_SUN_TLS 0
+#define TARGET_GNU_TLS 1
+#endif
/* We use GNU ld so undefine this so that attribute((init_priority)) works. */
#undef CTORS_SECTION_ASM_OP
diff -rNU3 -x *.info dist/gcc/config/sparc/sol2-64.h dist.nbsd/gcc/config/sparc/sol2-64.h
--- dist/gcc/config/sparc/sol2-64.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/sparc/sol2-64.h Wed Nov 7 11:47:24 2012
@@ -1,7 +1,7 @@
/* Definitions of target machine for GCC, for bi-arch SPARC
running Solaris 2, defaulting to 64-bit code generation.
- Copyright (C) 1999, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2010, 2011 Free Software Foundation, Inc.
This file is part of GCC.
@@ -19,7 +19,4 @@
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT \
- (MASK_V9 + MASK_PTR64 + MASK_64BIT /* + MASK_HARD_QUAD */ + \
- MASK_STACK_BIAS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128)
+#define TARGET_64BIT_DEFAULT 1
diff -rNU3 -x *.info dist/gcc/config/sparc/sol2-unwind.h dist.nbsd/gcc/config/sparc/sol2-unwind.h
--- dist/gcc/config/sparc/sol2-unwind.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/sparc/sol2-unwind.h Wed Nov 7 11:47:24 2012
@@ -123,10 +123,10 @@
/* This matches the call_user_handler pattern for Solaris 10.
There are 2 cases so we look for the return address of the
caller's caller frame in order to do more pattern matching. */
- unsigned int sah_pattern
- = *(unsigned int *)(*(unsigned long *)(this_cfa + 176 + 15*8) - 4);
+ unsigned long sah_address
+ = *(unsigned long *)(this_cfa + 176 + 15*8);
- if (sah_pattern == 0x92100019)
+ if (sah_address && *(unsigned int *)(sah_address - 4) == 0x92100019)
/* This is the same setup as for Solaris 9, see below. */
regs_off = 176 + 176 + 176 + 304;
else
@@ -371,10 +371,10 @@
/* This matches the call_user_handler pattern for Solaris 10.
There are 2 cases so we look for the return address of the
caller's caller frame in order to do more pattern matching. */
- unsigned int sah_pattern
- = *(unsigned int *)(*(unsigned int *)(this_cfa + 96 + 15*4) - 4);
+ unsigned int sah_address
+ = *(unsigned int *)(this_cfa + 96 + 15*4);
- if (sah_pattern == 0x92100019)
+ if (sah_address && *(unsigned int *)(sah_address - 4) == 0x92100019)
/* This is the same setup as for Solaris 9, see below. */
regs_off = 96 + 96 + 96 + 160;
else
diff -rNU3 -x *.info dist/gcc/config/sparc/sol2.h dist.nbsd/gcc/config/sparc/sol2.h
--- dist/gcc/config/sparc/sol2.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/sparc/sol2.h Wed Nov 7 11:47:24 2012
@@ -153,11 +153,18 @@
#undef SUN_INTEGER_MULTIPLY_64
#define SUN_INTEGER_MULTIPLY_64 1
-/* Solaris allows 64 bit out and global registers in 32 bit mode.
- sparc_override_options will disable V8+ if not generating V9 code. */
+/* Solaris allows 64-bit out and global registers to be used in 32-bit mode.
+ sparc_override_options will disable V8+ if either not generating V9 code
+ or generating 64-bit code. */
#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_V8PLUS + MASK_APP_REGS + MASK_FPU \
- + MASK_LONG_DOUBLE_128)
+#ifdef TARGET_64BIT_DEFAULT
+#define TARGET_DEFAULT \
+ (MASK_V9 + MASK_64BIT + MASK_PTR64 + MASK_STACK_BIAS + \
+ MASK_V8PLUS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128)
+#else
+#define TARGET_DEFAULT \
+ (MASK_V8PLUS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128)
+#endif
/* Solaris-specific #pragmas are implemented on top of attributes. Hook in
the bits from config/sol2.c. */
diff -rNU3 -x *.info dist/gcc/config/sparc/sparc-protos.h dist.nbsd/gcc/config/sparc/sparc-protos.h
--- dist/gcc/config/sparc/sparc-protos.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/sparc/sparc-protos.h Wed Nov 7 11:47:24 2012
@@ -48,6 +48,7 @@
extern int check_pic (int);
extern int short_branch (int, int);
extern void sparc_profile_hook (int);
+extern void sparc_optimization_options (int, int);
extern void sparc_override_options (void);
extern void sparc_output_scratch_registers (FILE *);
diff -rNU3 -x *.info dist/gcc/config/sparc/sparc.c dist.nbsd/gcc/config/sparc/sparc.c
--- dist/gcc/config/sparc/sparc.c Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/sparc/sparc.c Wed Nov 7 11:47:24 2012
@@ -627,6 +627,17 @@
return true;
}
+/* Specify default optimizations. */
+
+void
+sparc_optimization_options (int l ATTRIBUTE_UNUSED, int s ATTRIBUTE_UNUSED)
+{
+ /* Disable save slot sharing for call-clobbered registers by default.
+ The IRA sharing algorithm works on single registers only and this
+ pessimizes for double floating-point registers. */
+ flag_ira_share_save_slots = 0;
+}
+
/* Validate and override various options, and do some machine dependent
initialization. */
@@ -2767,11 +2778,6 @@
if (get_attr_length (trial) != 1)
return 0;
- /* If there are any call-saved registers, we should scan TRIAL if it
- does not reference them. For now just make it easy. */
- if (num_gfregs)
- return 0;
-
/* If the function uses __builtin_eh_return, the eh_return machinery
occupies the delay slot. */
if (crtl->calls_eh_return)
@@ -4093,7 +4099,7 @@
emit_move_insn (gen_rtx_REG (mode, regno), mem);
/* Always preserve double-word alignment. */
- offset = (offset + 7) & -8;
+ offset = (offset + 8) & -8;
}
}
@@ -4200,7 +4206,7 @@
example, the regrename pass has special provisions to not rename to
non-leaf registers in a leaf function. */
sparc_leaf_function_p
- = optimize > 0 && leaf_function_p () && only_leaf_regs_used ();
+ = optimize > 0 && current_function_is_leaf && only_leaf_regs_used ();
/* Need to use actual_fsize, since we are also allocating
space for our callee (and our own register save area). */
@@ -4230,8 +4236,9 @@
else if (actual_fsize <= 8192)
{
insn = emit_insn (gen_stack_pointer_inc (GEN_INT (-4096)));
- /* %sp is still the CFA register. */
RTX_FRAME_RELATED_P (insn) = 1;
+
+ /* %sp is still the CFA register. */
insn
= emit_insn (gen_stack_pointer_inc (GEN_INT (4096-actual_fsize)));
}
@@ -4253,8 +4260,18 @@
else if (actual_fsize <= 8192)
{
insn = emit_insn (gen_save_register_window (GEN_INT (-4096)));
+
/* %sp is not the CFA register anymore. */
emit_insn (gen_stack_pointer_inc (GEN_INT (4096-actual_fsize)));
+
+ /* Make sure no %fp-based store is issued until after the frame is
+ established. The offset between the frame pointer and the stack
+ pointer is calculated relative to the value of the stack pointer
+ at the end of the function prologue, and moving instructions that
+ access the stack via the frame pointer between the instructions
+ that decrement the stack pointer could result in accessing the
+ register window save area, which is volatile. */
+ emit_insn (gen_frame_blockage ());
}
else
{
@@ -4324,6 +4341,7 @@
sparc_can_use_return_insn_p (void)
{
return sparc_prologue_data_valid_p
+ && num_gfregs == 0
&& (actual_fsize == 0 || !sparc_leaf_function_p);
}
@@ -4425,18 +4443,20 @@
machinery occupies the delay slot. */
gcc_assert (! final_sequence);
- if (! flag_delayed_branch)
- fputs ("\tadd\t%fp, %g1, %fp\n", asm_out_file);
+ if (flag_delayed_branch)
+ {
+ if (TARGET_V9)
+ fputs ("\treturn\t%i7+8\n", asm_out_file);
+ else
+ fputs ("\trestore\n\tjmp\t%o7+8\n", asm_out_file);
- if (TARGET_V9)
- fputs ("\treturn\t%i7+8\n", asm_out_file);
+ fputs ("\t add\t%sp, %g1, %sp\n", asm_out_file);
+ }
else
- fputs ("\trestore\n\tjmp\t%o7+8\n", asm_out_file);
-
- if (flag_delayed_branch)
- fputs ("\t add\t%sp, %g1, %sp\n", asm_out_file);
- else
- fputs ("\t nop\n", asm_out_file);
+ {
+ fputs ("\trestore\n\tadd\t%sp, %g1, %sp\n", asm_out_file);
+ fputs ("\tjmp\t%o7+8\n\t nop\n", asm_out_file);
+ }
}
else if (final_sequence)
{
@@ -9104,6 +9124,7 @@
void_list_node));
DECL_RESULT (decl) = build_decl (BUILTINS_LOCATION, RESULT_DECL,
NULL_TREE, void_type_node);
+ TREE_PUBLIC (decl) = 1;
TREE_STATIC (decl) = 1;
make_decl_one_only (decl, DECL_ASSEMBLER_NAME (decl));
DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN;
@@ -9267,7 +9288,7 @@
bool
sparc_frame_pointer_required (void)
{
- return !(leaf_function_p () && only_leaf_regs_used ());
+ return !(current_function_is_leaf && only_leaf_regs_used ());
}
/* The way this is structured, we can't eliminate SFP in favor of SP
diff -rNU3 -x *.info dist/gcc/config/sparc/sparc.h dist.nbsd/gcc/config/sparc/sparc.h
--- dist/gcc/config/sparc/sparc.h Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/sparc/sparc.h Wed Nov 7 11:47:24 2012
@@ -414,6 +414,7 @@
%{mcpu=sparclite:-Asparclite} \
%{mcpu=sparclite86x:-Asparclite} \
%{mcpu=f930:-Asparclite} %{mcpu=f934:-Asparclite} \
+%{mcpu=v8:-Av8} \
%{mv8plus:-Av8plus} \
%{mcpu=v9:-Av9} \
%{mcpu=ultrasparc:%{!mv8plus:-Av9a}} \
@@ -501,7 +502,8 @@
#define CAN_DEBUG_WITHOUT_FP
/* Option handling. */
-
+#define OPTIMIZATION_OPTIONS(LEVEL, SIZE) \
+ sparc_optimization_options ((LEVEL), (SIZE))
#define OVERRIDE_OPTIONS sparc_override_options ()
/* Mask of all CPU selection flags. */
diff -rNU3 -x *.info dist/gcc/config/sparc/sparc.md dist.nbsd/gcc/config/sparc/sparc.md
--- dist/gcc/config/sparc/sparc.md Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/sparc/sparc.md Wed Nov 7 11:47:24 2012
@@ -28,6 +28,7 @@
[(UNSPEC_MOVE_PIC 0)
(UNSPEC_UPDATE_RETURN 1)
(UNSPEC_LOAD_PCREL_SYM 2)
+ (UNSPEC_FRAME_BLOCKAGE 3)
(UNSPEC_MOVE_PIC_LABEL 5)
(UNSPEC_SETH44 6)
(UNSPEC_SETM44 7)
@@ -2477,11 +2478,9 @@
(match_operand:I 3 "arith10_operand" "")))]
"TARGET_V9 && !(<I:MODE>mode == DImode && TARGET_ARCH32)"
{
- enum rtx_code code = GET_CODE (operands[1]);
rtx cc_reg;
- if (GET_MODE (XEXP (operands[1], 0)) == DImode
- && ! TARGET_ARCH64)
+ if (GET_MODE (XEXP (operands[1], 0)) == DImode && !TARGET_ARCH64)
FAIL;
if (GET_MODE (XEXP (operands[1], 0)) == TFmode && !TARGET_HARD_QUAD)
@@ -2492,12 +2491,14 @@
if (XEXP (operands[1], 1) == const0_rtx
&& GET_CODE (XEXP (operands[1], 0)) == REG
&& GET_MODE (XEXP (operands[1], 0)) == DImode
- && v9_regcmp_p (code))
+ && v9_regcmp_p (GET_CODE (operands[1])))
cc_reg = XEXP (operands[1], 0);
else
cc_reg = gen_compare_reg (operands[1]);
- operands[1] = gen_rtx_fmt_ee (code, GET_MODE (cc_reg), cc_reg, const0_rtx);
+ operands[1]
+ = gen_rtx_fmt_ee (GET_CODE (operands[1]), GET_MODE (cc_reg), cc_reg,
+ const0_rtx);
})
(define_expand "mov<F:mode>cc"
@@ -2507,11 +2508,9 @@
(match_operand:F 3 "register_operand" "")))]
"TARGET_V9 && TARGET_FPU"
{
- enum rtx_code code = GET_CODE (operands[1]);
rtx cc_reg;
- if (GET_MODE (XEXP (operands[1], 0)) == DImode
- && ! TARGET_ARCH64)
+ if (GET_MODE (XEXP (operands[1], 0)) == DImode && !TARGET_ARCH64)
FAIL;
if (GET_MODE (XEXP (operands[1], 0)) == TFmode && !TARGET_HARD_QUAD)
@@ -2522,12 +2521,14 @@
if (XEXP (operands[1], 1) == const0_rtx
&& GET_CODE (XEXP (operands[1], 0)) == REG
&& GET_MODE (XEXP (operands[1], 0)) == DImode
- && v9_regcmp_p (code))
+ && v9_regcmp_p (GET_CODE (operands[1])))
cc_reg = XEXP (operands[1], 0);
else
cc_reg = gen_compare_reg (operands[1]);
- operands[1] = gen_rtx_fmt_ee (code, GET_MODE (cc_reg), cc_reg, const0_rtx);
+ operands[1]
+ = gen_rtx_fmt_ee (GET_CODE (operands[1]), GET_MODE (cc_reg), cc_reg,
+ const0_rtx);
})
;; Conditional move define_insns
@@ -6315,9 +6316,7 @@
(if_then_else (eq_attr "isa" "v9")
(const_int 2)
(const_int 3))
- (if_then_else (eq_attr "isa" "v9")
- (const_int 3)
- (const_int 4)))
+ (const_int 4))
(eq_attr "empty_delay_slot" "true")
(if_then_else (eq_attr "delayed_branch" "true")
(const_int 2)
@@ -6333,6 +6332,25 @@
""
[(set_attr "length" "0")])
+;; Do not schedule instructions accessing memory before this point.
+
+(define_expand "frame_blockage"
+ [(set (match_dup 0)
+ (unspec:BLK [(match_dup 1)] UNSPEC_FRAME_BLOCKAGE))]
+ ""
+{
+ operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
+ MEM_VOLATILE_P (operands[0]) = 1;
+ operands[1] = stack_pointer_rtx;
+})
+
+(define_insn "*frame_blockage<P:mode>"
+ [(set (match_operand:BLK 0 "" "")
+ (unspec:BLK [(match_operand:P 1 "" "")] UNSPEC_FRAME_BLOCKAGE))]
+ ""
+ ""
+ [(set_attr "length" "0")])
+
(define_expand "probe_stack"
[(set (match_operand 0 "memory_operand" "") (const_int 0))]
""
@@ -6491,8 +6509,8 @@
(const_int 4)))])
;; For __builtin_setjmp we need to flush register windows iff the function
-;; calls alloca as well, because otherwise the register window might be
-;; saved after %sp adjustment and thus setjmp would crash
+;; calls alloca as well, because otherwise the current register window might
+;; be saved after the %sp adjustment and thus setjmp would crash.
(define_expand "builtin_setjmp_setup"
[(match_operand 0 "register_operand" "r")]
""
@@ -6531,19 +6549,26 @@
(eq_attr "pic" "true")
(const_int 4)] (const_int 3)))])
-;; Pattern for use after a setjmp to store FP and the return register
-;; into the stack area.
+;; Pattern for use after a setjmp to store registers into the save area.
(define_expand "setjmp"
[(const_int 0)]
""
{
rtx mem;
-
+
+ if (flag_pic)
+ {
+ mem = gen_rtx_MEM (Pmode,
+ plus_constant (stack_pointer_rtx,
+ SPARC_STACK_BIAS + 7 * UNITS_PER_WORD));
+ emit_insn (gen_rtx_SET (VOIDmode, mem, pic_offset_table_rtx));
+ }
+
mem = gen_rtx_MEM (Pmode,
plus_constant (stack_pointer_rtx,
SPARC_STACK_BIAS + 14 * UNITS_PER_WORD));
- emit_insn (gen_rtx_SET (VOIDmode, mem, frame_pointer_rtx));
+ emit_insn (gen_rtx_SET (VOIDmode, mem, hard_frame_pointer_rtx));
mem = gen_rtx_MEM (Pmode,
plus_constant (stack_pointer_rtx,
diff -rNU3 -x *.info dist/gcc/config/sparc/t-netbsd64 dist.nbsd/gcc/config/sparc/t-netbsd64
--- dist/gcc/config/sparc/t-netbsd64 Wed Nov 7 13:40:05 2012
+++ dist.nbsd/gcc/config/sparc/t-netbsd64 Wed Nov 7 11:47:24 2012
@@ -1,8 +1,9 @@
-# Disable multilib fow now, as NetBSD/sparc64 does not ship with
-# a 32-bit environment.
-#MULTILIB_OPTIONS = m32/m64
-#MULTILIB_DIRNAMES = 32 64
-#MULTILIB_MATCHES =
+# NetBSD has (will have) "non-native" libraries in /usr/lib/<arch>.
+# For NetBSD/sparc64 we thus have /usr/lib and /usr/lib/sparc.
-#LIBGCC = stmp-multilib
-#INSTALL_LIBGCC = install-multilib
+MULTILIB_OPTIONS = m64/m32
+MULTILIB_DIRNAMES = 64 32
+MULTILIB_OSDIRNAMES = . ../lib/sparc
+
+LIBGCC = stmp-multilib
+INSTALL_LIBGCC = install-multilib
diff -rNU3 -x *.info dist/gcc/config/t-netbsd dist.nbsd/gcc/config/t-netbsd
--- dist/gcc/config/t-netbsd Wed Nov 7 13:40:04 2012
+++ dist.nbsd/gcc/config/t-netbsd Wed Nov 7 11:47:23 2012
@@ -1,2 +1,7 @@
# Always build crtstuff with PIC.
CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC
+
+# Use unwind-dw2-fde-glibc
+LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \
+ $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c
+LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c
diff -rNU3 -x *.info dist/gcc/config/vax/builtins.md dist.nbsd/gcc/config/vax/builtins.md
--- dist/gcc/config/vax/builtins.md Wed Nov 7 13:40:06 2012
+++ dist.nbsd/gcc/config/vax/builtins.md Wed Nov 7 11:47:23 2012
@@ -24,6 +24,12 @@
]
)
+(define_expand "condjump"
+ [(set (pc)
+ (if_then_else (match_operand 0)
+ (label_ref (match_operand 1))
+ (pc)))])
+
(define_expand "ffssi2"
[(set (match_operand:SI 0 "nonimmediate_operand" "")
(ffs:SI (match_operand:SI 1 "general_operand" "")))]
@@ -32,7 +38,7 @@
{
rtx label = gen_label_rtx ();
emit_insn (gen_ffssi2_internal (operands[0], operands[1]));
- emit_jump_insn (gen_bne (label));
+ emit_jump_insn (gen_condjump (gen_rtx_NE(VOIDmode, cc0_rtx, const0_rtx), label));
emit_insn (gen_negsi2 (operands[0], const1_rtx));
emit_label (label);
emit_insn (gen_addsi3 (operands[0], operands[0], const1_rtx));
@@ -189,4 +195,3 @@
(const_int 0))])]
""
"jbcci %1,%0,%l2")
-
diff -rNU3 -x *.info dist/gcc/config/vax/constraints.md dist.nbsd/gcc/config/vax/constraints.md
--- dist/gcc/config/vax/constraints.md Wed Nov 7 13:40:06 2012
+++ dist.nbsd/gcc/config/vax/constraints.md Wed Nov 7 11:47:23 2012
@@ -113,5 +113,6 @@
(define_constraint "T"
"@internal satisfies CONSTANT_P and, if pic is enabled, is not a SYMBOL_REF, LABEL_REF, or CONST."
- (ior (not (match_code "const,symbol_ref,label_ref"))
- (match_test "!flag_pic")))
+ (and (match_test "CONSTANT_P (op)")
+ (ior (not (match_code "const,symbol_ref,label_ref"))
+ (match_test "!flag_pic"))))
diff -rNU3 -x *.info dist/gcc/config/vax/elf.h dist.nbsd/gcc/config/vax/elf.h
--- dist/gcc/config/vax/elf.h Wed Nov 7 13:40:06 2012
+++ dist.nbsd/gcc/config/vax/elf.h Wed Nov 7 11:47:23 2012
@@ -109,5 +109,5 @@
fputs (integer_asm_op (SIZE, FALSE), FILE); \
fprintf (FILE, "%%pcrel%d(", SIZE * 8); \
assemble_name (FILE, LABEL); \
- fputc (')', FILE); \
+ fprintf (FILE, "%+d)", SIZE); \
} while (0)
diff -rNU3 -x *.info dist/gcc/config/vax/vax.c dist.nbsd/gcc/config/vax/vax.c
--- dist/gcc/config/vax/vax.c Wed Nov 7 13:40:06 2012
+++ dist.nbsd/gcc/config/vax/vax.c Wed Nov 7 11:47:23 2012
@@ -300,7 +300,10 @@
addr = XEXP (addr, 1);
}
else
- gcc_unreachable ();
+ {
+ debug_rtx (orig);
+ gcc_unreachable ();
+ }
if (REG_P (addr))
{
@@ -311,9 +314,8 @@
}
else if (GET_CODE (addr) == MULT)
ireg = addr;
- else
+ else if (GET_CODE (addr) == PLUS)
{
- gcc_assert (GET_CODE (addr) == PLUS);
if (CONSTANT_ADDRESS_P (XEXP (addr, 0))
|| MEM_P (XEXP (addr, 0)))
{
@@ -321,11 +323,15 @@
{
if (CONST_INT_P (offset))
offset = plus_constant (XEXP (addr, 0), INTVAL (offset));
- else
+ else if (CONST_INT_P (XEXP (addr, 0)))
{
- gcc_assert (CONST_INT_P (XEXP (addr, 0)));
offset = plus_constant (offset, INTVAL (XEXP (addr, 0)));
}
+ else
+ {
+ debug_rtx (orig);
+ gcc_unreachable ();
+ }
}
offset = XEXP (addr, 0);
}
@@ -336,12 +342,15 @@
else
reg1 = XEXP (addr, 0);
}
- else
+ else if (GET_CODE (XEXP (addr, 0)) == MULT && !ireg)
{
- gcc_assert (GET_CODE (XEXP (addr, 0)) == MULT);
- gcc_assert (!ireg);
ireg = XEXP (addr, 0);
}
+ else
+ {
+ debug_rtx (orig);
+ gcc_unreachable ();
+ }
if (CONSTANT_ADDRESS_P (XEXP (addr, 1))
|| MEM_P (XEXP (addr, 1)))
@@ -365,13 +374,21 @@
else
reg1 = XEXP (addr, 1);
}
- else
+ else if (GET_CODE (XEXP (addr, 1)) == MULT && !ireg)
{
- gcc_assert (GET_CODE (XEXP (addr, 1)) == MULT);
- gcc_assert (!ireg);
ireg = XEXP (addr, 1);
}
+ else
+ {
+ debug_rtx (orig);
+ gcc_unreachable ();
+ }
}
+ else
+ {
+ debug_rtx (orig);
+ gcc_unreachable ();
+ }
/* If REG1 is nonzero, figure out if it is a base or index register. */
if (reg1)
@@ -382,7 +399,11 @@
&& (MEM_P (offset)
|| (flag_pic && symbolic_operand (offset, SImode)))))
{
- gcc_assert (!ireg);
+ if (ireg)
+ {
+ debug_rtx (orig);
+ gcc_unreachable ();
+ }
ireg = reg1;
}
else
@@ -428,12 +449,17 @@
{
if (GET_CODE (ireg) == MULT)
ireg = XEXP (ireg, 0);
- gcc_assert (REG_P (ireg));
+ if (! REG_P (ireg))
+ {
+ debug_rtx (orig);
+ output_operand_lossage ("non-register index expression");
+ }
fprintf (file, "[%s]", reg_names[REGNO (ireg)]);
}
break;
default:
+ gcc_assert (! REG_P(addr));
output_addr_const (file, addr);
}
}
@@ -1566,6 +1592,111 @@
}
}
+static rtx
+mkrtx(enum rtx_code code, enum machine_mode mode, rtx base, HOST_WIDE_INT off)
+{
+ rtx tmp;
+
+ if (GET_CODE (base) == CONST)
+ base = XEXP (base, 0);
+
+ if (GET_CODE (base) == PLUS)
+ {
+ rtx a = XEXP (base, 0);
+ rtx b = XEXP (base, 1);
+ if (GET_CODE (b) == CONST)
+ b = XEXP (b, 0);
+ if (CONST_INT_P (b))
+ {
+ off += INTVAL (b);
+ base = a;
+ }
+ else if (REG_P (a) && GET_CODE (b) == SYMBOL_REF)
+ {
+ if (off != 0)
+ {
+ base = gen_rtx_PLUS (Pmode, a, plus_constant(b, off));
+ off = 0;
+ }
+ }
+ else if (REG_P (a) && GET_CODE (b) == PLUS)
+ {
+ off += INTVAL (XEXP (b, 1));
+ base = gen_rtx_PLUS (Pmode, a, plus_constant(XEXP (b, 0), off));
+ off = 0;
+ }
+ else
+ {
+ debug_rtx(base);
+ gcc_unreachable ();
+ }
+ }
+ if (code == POST_INC)
+ tmp = gen_rtx_POST_INC (SImode, base);
+ else if (off == 0 || (REG_P (base) && code == REG))
+ tmp = base;
+ else
+ tmp = plus_constant (base, off);
+ return gen_rtx_MEM (mode, tmp);
+}
+
+const char *
+vax_output_movmemsi (rtx insn, rtx *operands)
+{
+ HOST_WIDE_INT n = INTVAL (operands[2]);
+ HOST_WIDE_INT off;
+ rtx src, dest;
+ const char *pat = NULL;
+ const enum rtx_code *src_codes;
+ const enum rtx_code *dest_codes;
+ int code_idx = 0;
+ int mode_idx;
+
+ static const enum machine_mode xmodes[4] =
+ {
+ QImode, HImode, SImode, DImode
+ };
+ static const char * const pats[4] =
+ {
+ "movb %1,%0", "movw %1,%0", "movl %1,%0", "movq %1,%0",
+ };
+ static const enum rtx_code codes[2][3] =
+ {
+ { PLUS, PLUS, PLUS },
+ { POST_INC, POST_INC, REG },
+ };
+
+ src = XEXP (operands[1], 0);
+
+ src_codes =
+ codes[REG_P (src) && find_regno_note (insn, REG_DEAD, REGNO(src))];
+
+ dest = XEXP (operands[0], 0);
+
+ dest_codes =
+ codes[REG_P (dest) && find_regno_note (insn, REG_DEAD, REGNO(dest))];
+
+ for (off = 0, code_idx = 0, mode_idx = 3; mode_idx >= 0; mode_idx--)
+ {
+ const enum machine_mode mode = xmodes[mode_idx];
+ const HOST_WIDE_INT mode_len = GET_MODE_SIZE (mode);
+ for (; n >= mode_len; n -= mode_len, off += mode_len)
+ {
+ if (pat != NULL)
+ output_asm_insn (pat, operands);
+ if (n == mode_len)
+ code_idx = 2;
+ operands[0] = mkrtx(dest_codes[code_idx], mode, dest, off);
+ operands[1] = mkrtx(src_codes[code_idx], mode, src, off);
+ if (pat == NULL)
+ code_idx = 1;
+ pat = pats[mode_idx];
+ }
+ }
+
+ return pat;
+}
+
/* True if X is an rtx for a constant that is a valid address. */
bool
@@ -1582,6 +1713,7 @@
&& !SYMBOL_REF_LOCAL_P (XEXP (XEXP (x, 0), 0)))
return false;
#endif
+ gcc_assert (! REG_P (x));
return true;
}
@@ -1901,8 +2033,10 @@
and that's just a left shift of 1. */
if (rtx_equal_p (operands[1], operands[2]))
{
- gcc_assert (code != MINUS);
- emit_insn (gen_ashldi3 (operands[0], operands[1], const1_rtx));
+ if (code == MINUS)
+ emit_insn (gen_movdi (operands[0], const0_rtx));
+ else
+ emit_insn (gen_ashldi3 (operands[0], operands[1], const1_rtx));
return;
}
diff -rNU3 -x *.info dist/gcc/config/vax/vax.md dist.nbsd/gcc/config/vax/vax.md
--- dist/gcc/config/vax/vax.md Wed Nov 7 13:40:06 2012
+++ dist.nbsd/gcc/config/vax/vax.md Wed Nov 7 11:47:23 2012
@@ -212,6 +212,11 @@
""
"
{
+ if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) <= 48)
+ {
+ emit_insn (gen_movmemsi1_2 (operands[0], operands[1], operands[2]));
+ DONE;
+ }
emit_insn (gen_movmemhi1 (operands[0], operands[1], operands[2]));
DONE;
}")
@@ -221,6 +226,13 @@
;; that anything generated as this insn will be recognized as one
;; and that it won't successfully combine with anything.
+(define_insn "movmemsi1_2"
+ [(set (match_operand:BLK 0 "memory_operand" "=B")
+ (match_operand:BLK 1 "memory_operand" "B"))
+ (use (match_operand:SI 2 "const_int_operand" "g"))]
+ "INTVAL (operands[2]) <= 48"
+ "* return vax_output_movmemsi (insn, operands);")
+
(define_insn "movmemhi1"
[(set (match_operand:BLK 0 "memory_operand" "=o")
(match_operand:BLK 1 "memory_operand" "o"))
@@ -625,7 +637,7 @@
""
"
{
- if (! CONST_INT_P(operands[2]))
+ if (! CONST_INT_P (operands[2]))
operands[2] = gen_rtx_NEG (QImode, negate_rtx (QImode, operands[2]));
}")
@@ -945,8 +957,8 @@
""
"*
{
- if (!REG_P (operands[0]) || !CONST_INT_P (operands[2])
- || !CONST_INT_P (operands[3])
+ if (! REG_P (operands[0]) || ! CONST_INT_P (operands[2])
+ || ! CONST_INT_P (operands[3])
|| (INTVAL (operands[2]) != 8 && INTVAL (operands[2]) != 16)
|| INTVAL (operands[2]) + INTVAL (operands[3]) > 32
|| side_effects_p (operands[1])
@@ -974,8 +986,8 @@
""
"*
{
- if (!REG_P (operands[0]) || !CONST_INT_P (operands[2])
- || !CONST_INT_P (operands[3])
+ if (! REG_P (operands[0]) || ! CONST_INT_P (operands[2])
+ || ! CONST_INT_P (operands[3])
|| INTVAL (operands[2]) + INTVAL (operands[3]) > 32
|| side_effects_p (operands[1])
|| (MEM_P (operands[1])
@@ -1634,3 +1646,5 @@
emit_barrier ();
DONE;
})
+
+(include "builtins.md")
diff -rNU3 -x *.info dist/gcc/config/xtensa/linux-unwind.h dist.nbsd/gcc/config/xtensa/linux-unwind.h
--- dist/gcc/config/xtensa/linux-unwind.h Wed Nov 7 13:40:06 2012
+++ dist.nbsd/gcc/config/xtensa/linux-unwind.h Wed Nov 7 11:47:24 2012
@@ -1,5 +1,5 @@
/* DWARF2 EH unwinding support for Xtensa.
- Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2009, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -62,7 +62,7 @@
struct sigcontext *sc;
struct rt_sigframe {
- struct siginfo info;
+ siginfo_t info;
struct ucontext uc;
} *rt_;
diff -rNU3 -x *.info dist/gcc/config.gcc dist.nbsd/gcc/config.gcc
--- dist/gcc/config.gcc Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/config.gcc Wed Nov 7 11:47:23 2012
@@ -326,6 +326,10 @@
m32r*-*-*)
cpu_type=m32r
;;
+m680[012]0-*-*)
+ cpu_type=m68k
+ extra_headers=math-68881.h
+ ;;
m68k-*-*)
extra_headers=math-68881.h
;;
@@ -718,8 +722,28 @@
tmake_file="${tmake_file} arm/t-arm arm/t-strongarm-elf"
;;
arm*-*-netbsdelf*)
- tm_file="dbxelf.h elfos.h netbsd.h netbsd-elf.h arm/elf.h arm/aout.h arm/arm.h arm/netbsd-elf.h"
- tmake_file="${tmake_file} arm/t-arm arm/t-netbsd"
+ tm_file="dbxelf.h elfos.h netbsd.h netbsd-elf.h arm/elf.h arm/aout.h arm/arm.h"
+ case ${target} in
+ armeb*) tm_defines="${tm_defines} TARGET_ENDIAN_DEFAULT=MASK_BIG_END" ;;
+ esac
+ tmake_file="${tmake_file} arm/t-arm"
+ case ${target} in
+ arm*-*-netbsdelf-*eabi)
+ tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
+ tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi"
+ tmake_file="$tmake_file arm/t-netbsd-eabi"
+ # The BPABI long long divmod functions return a 128-bit value in
+ # registers r0-r3. Correctly modeling that requires the use of
+ # TImode.
+ need_64bit_hwint=yes
+ # The EABI requires the use of __cxa_atexit.
+ default_use_cxa_atexit=yes
+ ;;
+ *)
+ tm_file="$tm_file arm/netbsd-elf.h"
+ tmake_file="$tmake_file arm/t-netbsd"
+ ;;
+ esac
;;
arm*-*-netbsd*)
tm_file="arm/aout.h arm/arm.h netbsd.h netbsd-aout.h arm/netbsd.h"
@@ -730,7 +754,7 @@
arm*-*-linux*) # ARM GNU/Linux with ELF
tm_file="dbxelf.h elfos.h linux.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
case $target in
- arm*b-*)
+ arm*b-*-linux*)
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
;;
esac
@@ -830,7 +854,7 @@
extra_objs="avr-devices.o"
;;
avr-*-*)
- tm_file="avr/avr.h dbxelf.h newlib-stdint.h"
+ tm_file="avr/avr.h dbxelf.h avr/avr-stdint.h"
use_gcc_stdint=wrap
extra_gcc_objs="driver-avr.o avr-devices.o"
extra_objs="avr-devices.o"
@@ -956,6 +980,12 @@
tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
fi
;;
+hppa*-*-netbsd* | parisc*-*-netbsd*)
+ target_cpu_default="MASK_PA_11"
+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h netbsd.h netbsd-elf.h \
+ pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
+ tmake_file="${tmake_file} pa/t-netbsd"
+ ;;
# port not yet contributed.
#hppa*-*-openbsd*)
# target_cpu_default="MASK_PA_11"
@@ -1120,6 +1150,7 @@
;;
i[34567]86-*-netbsdelf*)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h"
+ tmake_file="${tmake_file} i386/t-crtstuff"
;;
i[34567]86-*-netbsd*)
tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h netbsd.h netbsd-aout.h i386/netbsd.h"
@@ -1129,7 +1160,7 @@
;;
x86_64-*-netbsd*)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/x86-64.h i386/netbsd64.h"
- tmake_file="${tmake_file} i386/t-crtstuff"
+ tmake_file="${tmake_file} i386/t-netbsd64"
;;
i[34567]86-*-openbsd2.*|i[34567]86-*openbsd3.[0123])
tm_file="i386/i386.h i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h openbsd-oldgas.h openbsd.h i386/openbsd.h"
@@ -1468,6 +1499,12 @@
fi
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
;;
+ia64*-*-netbsd*)
+ tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h ia64/sysv4.h ia64/netbsd.h"
+ target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
+ tmake_file="${tmake_file} ia64/t-ia64"
+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
+ ;;
ia64*-*-freebsd*)
tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
@@ -1613,11 +1650,21 @@
esac
extra_parts="crtbegin.o crtend.o"
;;
-m68k*-*-netbsdelf*)
- default_m68k_cpu=68020
- default_cf_cpu=5475
+m68010-*-netbsdelf* | m68k*-*-netbsdelf*)
tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h m68k/netbsd-elf.h"
- tm_defines="${tm_defines} MOTOROLA=1"
+ tm_defines="${tm_defines} MOTOROLA=1 USE_GAS=1"
+ default_cf_cpu=5475
+ case ${target} in
+ m68010*)
+ target_cpu_default="0"
+ tmake_file="m68k/t-m68kelf m68k/t-m68010-netbsd"
+ default_m68k_cpu=68010
+ ;;
+ *)
+ default_m68k_cpu=68020
+ ;;
+ esac
+ tmake_file="${tmake_file} m68k/t-floatlib"
;;
m68k*-*-openbsd*)
default_m68k_cpu=68020
@@ -1733,6 +1780,14 @@
"":yes | yes:yes ) thread_file=posix ;;
esac
;;
+mips64*-*-netbsd*) # NetBSD/mips64, either endian.
+ target_cpu_default="MASK_ABICALLS|MASK_FLOAT64|MASK_SOFT_FLOAT_ABI"
+ tm_file="elfos.h ${tm_file} mips/elf.h netbsd.h netbsd-elf.h mips/netbsd.h mips/netbsd64.h"
+ tmake_file="${tmake_file} mips/t-netbsd64"
+ tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
+ gnu_ld=yes
+ gas=yes
+ ;;
mips*-*-netbsd*) # NetBSD/mips, either endian.
target_cpu_default="MASK_ABICALLS"
tm_file="elfos.h ${tm_file} mips/elf.h netbsd.h netbsd-elf.h mips/netbsd.h"
@@ -1949,10 +2004,22 @@
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
extra_options="${extra_options} rs6000/sysv4.opt"
;;
-powerpc-*-netbsd*)
- tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
+powerpc*-*-netbsd*)
+ tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h svr4.h freebsd-spec.h rs6000/sysv4.h"
+ case ${target} in
+ powerpc64*)
+ tm_file="rs6000/biarch64.h ${tm_file} rs6000/default64.h rs6000/netbsd64.h"
+ tmake_file="${tmake_file} rs6000/t-netbsd64"
+ ;;
+ *)
+ tm_file="${tm_file} rs6000/netbsd.h"
tmake_file="${tmake_file} rs6000/t-netbsd"
- extra_options="${extra_options} rs6000/sysv4.opt"
+ ;;
+ esac
+ if test x${enable_secureplt} != xno; then
+ tm_file="rs6000/secureplt.h ${tm_file}"
+ fi
+ extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
;;
powerpc-*-eabispe*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabispe.h"
@@ -2246,7 +2313,7 @@
# SHmedia, 64-bit ABI
tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd sh/t-netbsd-sh5-64"
;;
- *-*-netbsd)
+ *-*-netbsd*)
tmake_file="${tmake_file} sh/t-netbsd"
;;
sh64*-*-linux*)
@@ -2422,7 +2489,7 @@
tm_file="${tm_file} sparc/sol2.h"
case ${target} in
sparc64-*-* | sparcv9-*-*)
- tm_file="${tm_file} sparc/sol2-64.h"
+ tm_file="sparc/sol2-64.h ${tm_file}"
;;
*)
test x$with_cpu != x || with_cpu=v9
@@ -2489,6 +2556,7 @@
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h netbsd.h netbsd-elf.h sparc/netbsd-elf.h"
extra_options="${extra_options} sparc/long-double-switch.opt"
tmake_file="${tmake_file} sparc/t-netbsd64"
+ with_cpu=ultrasparc
;;
spu-*-elf*)
tm_file="dbxelf.h elfos.h spu/spu-elf.h spu/spu.h newlib-stdint.h"
diff -rNU3 -x *.info dist/gcc/configure dist.nbsd/gcc/configure
--- dist/gcc/configure Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/configure Wed Nov 7 11:47:25 2012
@@ -4810,7 +4810,7 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_cc_gcc_supports_ada" >&5
$as_echo "$acx_cv_cc_gcc_supports_ada" >&6; }
-if test x$GNATBIND != xno && test x$GNATMAKE != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
+if test "x$GNATBIND" != xno && test "x$GNATMAKE" != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
have_gnat=yes
else
have_gnat=no
@@ -22048,7 +22048,7 @@
tls_first_major=2
tls_first_minor=14
;;
- hppa*-*-linux*)
+ hppa*-*-linux* | hppa*-*-netbsd*)
conftest_s='
t1: .reg %r20
t2: .reg %r21
@@ -22301,7 +22301,7 @@
tls_first_minor=14
tls_as_opt="-m64 -Aesame --fatal-warnings"
;;
- sh-*-* | sh[34]-*-*)
+ sh-*-* | sh[34]-*-* | sh*l*-*-*)
conftest_s='
.section ".tdata","awT",@progbits
foo: .long 25
@@ -25005,7 +25005,7 @@
# simply assert that glibc does provide this, which is true for all
# realistically usable GNU/Hurd configurations.
gcc_cv_libc_provides_ssp=yes;;
- *-*-darwin* | *-*-freebsd*)
+ *-*-darwin* | *-*-freebsd* | *-*-netbsd*)
ac_fn_c_check_func "$LINENO" "__stack_chk_fail" "ac_cv_func___stack_chk_fail"
if test "x$ac_cv_func___stack_chk_fail" = x""yes; then :
gcc_cv_libc_provides_ssp=yes
@@ -26973,4 +26973,3 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
-
diff -rNU3 -x *.info dist/gcc/configure.ac dist.nbsd/gcc/configure.ac
--- dist/gcc/configure.ac Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/configure.ac Wed Nov 7 11:47:23 2012
@@ -2628,7 +2628,7 @@
tls_first_major=2
tls_first_minor=14
;;
- hppa*-*-linux*)
+ hppa*-*-linux* | hppa*-*-netbsd*)
conftest_s='
t1: .reg %r20
t2: .reg %r21
@@ -2882,7 +2882,7 @@
tls_first_minor=14
tls_as_opt="-m64 -Aesame --fatal-warnings"
;;
- sh-*-* | sh[34]-*-*)
+ sh-*-* | sh[34]-*-* | sh*l*-*-*)
conftest_s='
.section ".tdata","awT",@progbits
foo: .long 25
@@ -4127,7 +4127,7 @@
# simply assert that glibc does provide this, which is true for all
# realistically usable GNU/Hurd configurations.
gcc_cv_libc_provides_ssp=yes;;
- *-*-darwin* | *-*-freebsd*)
+ *-*-darwin* | *-*-freebsd* | *-*-netbsd*)
AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
[echo "no __stack_chk_fail on this target"])
;;
diff -rNU3 -x *.info dist/gcc/convert.c dist.nbsd/gcc/convert.c
--- dist/gcc/convert.c Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/convert.c Wed Nov 7 11:47:25 2012
@@ -728,6 +728,15 @@
tree arg0 = get_unwidened (TREE_OPERAND (expr, 0), type);
tree arg1 = get_unwidened (TREE_OPERAND (expr, 1), type);
+ /* Do not try to narrow operands of pointer subtraction;
+ that will interfere with other folding. */
+ if (ex_form == MINUS_EXPR
+ && CONVERT_EXPR_P (arg0)
+ && CONVERT_EXPR_P (arg1)
+ && POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (arg0, 0)))
+ && POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (arg1, 0))))
+ break;
+
if (outprec >= BITS_PER_WORD
|| TRULY_NOOP_TRUNCATION (outprec, inprec)
|| inprec > TYPE_PRECISION (TREE_TYPE (arg0))
diff -rNU3 -x *.info dist/gcc/cp/ChangeLog dist.nbsd/gcc/cp/ChangeLog
--- dist/gcc/cp/ChangeLog Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/cp/ChangeLog Wed Nov 7 11:47:26 2012
@@ -1,3 +1,83 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
+2012-01-19 Kai Tietz <ktietz@redhat.com>
+
+ PR c++/51344
+ * decl2.c (save_template_attributes): Use merge_attributes
+ instead of chaining up via TREE_CHAIN.
+
+2011-12-20 Dodji Seketeli <dodji@redhat.com>
+
+ PR debug/49951
+ * decl.c (cxx_maybe_build_cleanup): Don't set location of the call
+ to the destructor.
+
+2011-12-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/51406
+ PR c++/51161
+ * typeck.c (build_static_cast_1): Fix cast of lvalue to
+ base rvalue reference.
+
+2011-10-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/50793
+ * tree.c (bot_manip): Propagate AGGR_INIT_ZERO_FIRST.
+
+2011-10-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/50618
+ * init.c (expand_aggr_init_1): Don't zero-initialize virtual
+ bases of a base subobject.
+
+2011-10-11 Janis Johnson <janisjo@codesourcery.com>
+
+ PR c++/44473
+ * mangle.c (write_type): Handle CV qualifiers for decimal classes.
+
+2011-07-19 Jakub Jelinek <jakub@redhat.com>
+
+ Backport from mainline
+ 2011-07-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/49644
+ * typeck.c (cp_build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with
+ one non-complex and one complex argument, call save_expr on both
+ operands.
+
+2011-06-23 Jason Merrill <jason@redhat.com>
+
+ PR c++/49440
+ * class.c (set_linkage_according_to_type): Hand off to
+ determine_visibility.
+
+2011-05-31 Duncan Sands <baldrick@free.fr>
+
+ Backported from 4.6 branch
+ 2011-03-09 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/47714
+ * method.c (use_thunk): Clear addressable flag of thunk arguments.
+
+2011-05-20 Jason Merrill <jason@redhat.com>
+
+ PR c++/48873
+ * tree.c (stabilize_expr): Don't make gratuitous copies of classes.
+
+2011-05-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/48936
+ * decl2.c (mark_used): Instantiate constant variables even
+ in unevaluated context.
+
+2011-04-27 Jason Merrill <jason@redhat.com>
+
+ PR c++/48046
+ * parser.c (cp_parser_diagnose_invalid_type_name): Commit
+ to tentative parse sooner.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/gcc/cp/Make-lang.in dist.nbsd/gcc/cp/Make-lang.in
--- dist/gcc/cp/Make-lang.in Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/cp/Make-lang.in Wed Nov 7 11:47:26 2012
@@ -107,6 +107,8 @@
# Special build rules.
$(srcdir)/cp/cfns.h: $(srcdir)/cp/cfns.gperf
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_cfns.h:
gperf -o -C -E -k '1-6,$$' -j1 -D -N 'libc_name_p' -L ANSI-C \
$(srcdir)/cp/cfns.gperf > $(srcdir)/cp/cfns.h
diff -rNU3 -x *.info dist/gcc/cp/class.c dist.nbsd/gcc/cp/class.c
--- dist/gcc/cp/class.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/cp/class.c Wed Nov 7 11:47:26 2012
@@ -681,21 +681,10 @@
the abstract. */
void
-set_linkage_according_to_type (tree type, tree decl)
+set_linkage_according_to_type (tree type ATTRIBUTE_UNUSED, tree decl)
{
- /* If TYPE involves a local class in a function with internal
- linkage, then DECL should have internal linkage too. Other local
- classes have no linkage -- but if their containing functions
- have external linkage, it makes sense for DECL to have external
- linkage too. That will allow template definitions to be merged,
- for example. */
- if (no_linkage_check (type, /*relaxed_p=*/true))
- {
- TREE_PUBLIC (decl) = 0;
- DECL_INTERFACE_KNOWN (decl) = 1;
- }
- else
- TREE_PUBLIC (decl) = 1;
+ TREE_PUBLIC (decl) = 1;
+ determine_visibility (decl);
}
/* Create a VAR_DECL for a primary or secondary vtable for CLASS_TYPE.
diff -rNU3 -x *.info dist/gcc/cp/decl.c dist.nbsd/gcc/cp/decl.c
--- dist/gcc/cp/decl.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/cp/decl.c Wed Nov 7 11:47:26 2012
@@ -12877,8 +12877,17 @@
cleanup = call;
}
+ /* build_delete sets the location of the destructor call to the
+ current location, even though the destructor is going to be
+ called later, at the end of the current scope. This can lead to
+ a "jumpy" behaviour for users of debuggers when they step around
+ the end of the block. So let's unset the location of the
+ destructor call instead. */
+ if (cleanup != NULL && EXPR_P (cleanup))
+ SET_EXPR_LOCATION (cleanup, UNKNOWN_LOCATION);
return cleanup;
}
+
/* When a stmt has been parsed, this function is called. */
diff -rNU3 -x *.info dist/gcc/cp/decl2.c dist.nbsd/gcc/cp/decl2.c
--- dist/gcc/cp/decl2.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/cp/decl2.c Wed Nov 7 11:47:26 2012
@@ -1189,9 +1189,9 @@
old_attrs = *q;
- /* Place the late attributes at the beginning of the attribute
+ /* Merge the late attributes at the beginning with the attribute
list. */
- TREE_CHAIN (tree_last (late_attrs)) = *q;
+ late_attrs = merge_attributes (late_attrs, *q);
*q = late_attrs;
if (!DECL_P (*decl_p) && *decl_p == TYPE_MAIN_VARIANT (*decl_p))
@@ -3991,8 +3991,6 @@
void
mark_used (tree decl)
{
- HOST_WIDE_INT saved_processing_template_decl = 0;
-
/* If DECL is a BASELINK for a single function, then treat it just
like the DECL for the function. Otherwise, if the BASELINK is
for an overloaded function, we don't know which function was
@@ -4029,9 +4027,6 @@
error ("used here");
return;
}
- /* If we don't need a value, then we don't need to synthesize DECL. */
- if (cp_unevaluated_operand != 0)
- return;
/* We can only check DECL_ODR_USED on variables or functions with
DECL_LANG_SPECIFIC set, and these are also the only decls that we
@@ -4059,9 +4054,10 @@
DECL. However, if DECL is a static data member initialized with
a constant, we need the value right now because a reference to
such a data member is not value-dependent. */
- if (TREE_CODE (decl) == VAR_DECL
- && DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl)
- && DECL_CLASS_SCOPE_P (decl))
+ if (DECL_INTEGRAL_CONSTANT_VAR_P (decl)
+ && !DECL_INITIAL (decl)
+ && DECL_LANG_SPECIFIC (decl)
+ && DECL_TEMPLATE_INSTANTIATION (decl))
{
/* Don't try to instantiate members of dependent types. We
cannot just use dependent_type_p here because this function
@@ -4071,12 +4067,14 @@
if (CLASSTYPE_TEMPLATE_INFO ((DECL_CONTEXT (decl)))
&& uses_template_parms (CLASSTYPE_TI_ARGS (DECL_CONTEXT (decl))))
return;
- /* Pretend that we are not in a template, even if we are, so
- that the static data member initializer will be processed. */
- saved_processing_template_decl = processing_template_decl;
- processing_template_decl = 0;
+ instantiate_decl (decl, /*defer_ok=*/false,
+ /*expl_inst_class_mem_p=*/false);
}
+ /* If we don't need a value, then we don't need to synthesize DECL. */
+ if (cp_unevaluated_operand != 0)
+ return;
+
if (processing_template_decl)
return;
@@ -4149,8 +4147,6 @@
need. Therefore, we always try to defer instantiation. */
instantiate_decl (decl, /*defer_ok=*/true,
/*expl_inst_class_mem_p=*/false);
-
- processing_template_decl = saved_processing_template_decl;
}
#include "gt-cp-decl2.h"
diff -rNU3 -x *.info dist/gcc/cp/init.c dist.nbsd/gcc/cp/init.c
--- dist/gcc/cp/init.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/cp/init.c Wed Nov 7 11:47:26 2012
@@ -1460,7 +1460,12 @@
zero out the object first. */
else if (TYPE_NEEDS_CONSTRUCTING (type))
{
- init = build_zero_init (type, NULL_TREE, /*static_storage_p=*/false);
+ tree field_size = NULL_TREE;
+ if (exp != true_exp && CLASSTYPE_AS_BASE (type) != type)
+ /* Don't clobber already initialized virtual bases. */
+ field_size = TYPE_SIZE (CLASSTYPE_AS_BASE (type));
+ init = build_zero_init_1 (type, NULL_TREE, /*static_storage_p=*/false,
+ field_size);
init = build2 (INIT_EXPR, type, exp, init);
finish_expr_stmt (init);
/* And then call the constructor. */
diff -rNU3 -x *.info dist/gcc/cp/mangle.c dist.nbsd/gcc/cp/mangle.c
--- dist/gcc/cp/mangle.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/cp/mangle.c Wed Nov 7 11:47:26 2012
@@ -1778,11 +1778,6 @@
if (find_substitution (type))
return;
- /* According to the C++ ABI, some library classes are passed the
- same as the scalar type of their single member and use the same
- mangling. */
- if (TREE_CODE (type) == RECORD_TYPE && TYPE_TRANSPARENT_AGGR (type))
- type = TREE_TYPE (first_field (type));
if (write_CV_qualifiers_for_type (type) > 0)
/* If TYPE was CV-qualified, we just wrote the qualifiers; now
@@ -1801,6 +1796,12 @@
/* See through any typedefs. */
type = TYPE_MAIN_VARIANT (type);
+
+ /* According to the C++ ABI, some library classes are passed the
+ same as the scalar type of their single member and use the same
+ mangling. */
+ if (TREE_CODE (type) == RECORD_TYPE && TYPE_TRANSPARENT_AGGR (type))
+ type = TREE_TYPE (first_field (type));
if (TYPE_PTRMEM_P (type))
write_pointer_to_member_type (type);
diff -rNU3 -x *.info dist/gcc/cp/method.c dist.nbsd/gcc/cp/method.c
--- dist/gcc/cp/method.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/cp/method.c Wed Nov 7 11:47:26 2012
@@ -374,6 +374,7 @@
DECL_CONTEXT (x) = thunk_fndecl;
SET_DECL_RTL (x, NULL_RTX);
DECL_HAS_VALUE_EXPR_P (x) = 0;
+ TREE_ADDRESSABLE (x) = 0;
t = x;
}
a = nreverse (t);
diff -rNU3 -x *.info dist/gcc/cp/parser.c dist.nbsd/gcc/cp/parser.c
--- dist/gcc/cp/parser.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/cp/parser.c Wed Nov 7 11:47:26 2012
@@ -2333,6 +2333,7 @@
location_t location)
{
tree decl, old_scope;
+ cp_parser_commit_to_tentative_parse (parser);
/* Try to lookup the identifier. */
old_scope = parser->scope;
parser->scope = scope;
@@ -2423,7 +2424,6 @@
else
gcc_unreachable ();
}
- cp_parser_commit_to_tentative_parse (parser);
}
/* Check for a common situation where a type-name should be present,
diff -rNU3 -x *.info dist/gcc/cp/tree.c dist.nbsd/gcc/cp/tree.c
--- dist/gcc/cp/tree.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/cp/tree.c Wed Nov 7 11:47:26 2012
@@ -1732,7 +1732,11 @@
tree u;
if (TREE_CODE (TREE_OPERAND (t, 1)) == AGGR_INIT_EXPR)
- u = build_cplus_new (TREE_TYPE (t), TREE_OPERAND (t, 1));
+ {
+ u = build_cplus_new (TREE_TYPE (t), TREE_OPERAND (t, 1));
+ if (AGGR_INIT_ZERO_FIRST (TREE_OPERAND (t, 1)))
+ AGGR_INIT_ZERO_FIRST (TREE_OPERAND (u, 1)) = true;
+ }
else
u = build_target_expr_with_type (TREE_OPERAND (t, 1), TREE_TYPE (t));
@@ -2954,7 +2958,8 @@
if (!TREE_SIDE_EFFECTS (exp))
init_expr = NULL_TREE;
else if (!real_lvalue_p (exp)
- || !TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (exp)))
+ || (!TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (exp))
+ && !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (exp))))
{
init_expr = get_target_expr (exp);
exp = TARGET_EXPR_SLOT (init_expr);
diff -rNU3 -x *.info dist/gcc/cp/typeck.c dist.nbsd/gcc/cp/typeck.c
--- dist/gcc/cp/typeck.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/cp/typeck.c Wed Nov 7 11:47:26 2012
@@ -4297,6 +4297,7 @@
{
case MULT_EXPR:
case TRUNC_DIV_EXPR:
+ op1 = save_expr (op1);
imag = build2 (resultcode, real_type, imag, op1);
/* Fall through. */
case PLUS_EXPR:
@@ -4315,6 +4316,7 @@
switch (code)
{
case MULT_EXPR:
+ op0 = save_expr (op0);
imag = build2 (resultcode, real_type, op0, imag);
/* Fall through. */
case PLUS_EXPR:
@@ -5672,8 +5674,18 @@
&& reference_related_p (TREE_TYPE (type), intype)
&& (c_cast_p || at_least_as_qualified_p (TREE_TYPE (type), intype)))
{
- expr = build_typed_address (expr, type);
- return convert_from_reference (expr);
+ /* Handle the lvalue case here by casting to lvalue reference and
+ then changing it to an rvalue reference. Casting an xvalue to
+ rvalue reference will be handled by the main code path. */
+ tree lref = cp_build_reference_type (TREE_TYPE (type), false);
+ result = (perform_direct_initialization_if_possible
+ (lref, expr, c_cast_p, complain));
+ result = cp_fold_convert (type, result);
+ /* Make sure we don't fold back down to a named rvalue reference,
+ because that would be an lvalue. */
+ if (DECL_P (result))
+ result = build1 (NON_LVALUE_EXPR, type, result);
+ return convert_from_reference (result);
}
orig = expr;
diff -rNU3 -x *.info dist/gcc/crtstuff.c dist.nbsd/gcc/crtstuff.c
--- dist/gcc/crtstuff.c Wed Nov 7 13:40:06 2012
+++ dist.nbsd/gcc/crtstuff.c Wed Nov 7 11:47:25 2012
@@ -92,6 +92,15 @@
&& !defined(OBJECT_FORMAT_FLAT) \
&& defined(HAVE_LD_EH_FRAME_HDR) \
&& !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
+ && defined(__NetBSD__)
+#include <link.h>
+# define USE_PT_GNU_EH_FRAME
+#endif
+
+#if defined(OBJECT_FORMAT_ELF) \
+ && !defined(OBJECT_FORMAT_FLAT) \
+ && defined(HAVE_LD_EH_FRAME_HDR) \
+ && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
&& defined(__GLIBC__) && __GLIBC__ >= 2
#include <link.h>
/* uClibc pretends to be glibc 2.2 and DT_CONFIG is defined in its link.h.
diff -rNU3 -x *.info dist/gcc/df-problems.c dist.nbsd/gcc/df-problems.c
--- dist/gcc/df-problems.c Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/df-problems.c Wed Nov 7 11:47:25 2012
@@ -3748,9 +3748,22 @@
for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++)
{
df_ref def = *def_rec;
- /* If the def is to only part of the reg, it does
- not kill the other defs that reach here. */
- if (!(DF_REF_FLAGS (def) & (DF_REF_PARTIAL | DF_REF_CONDITIONAL)))
+ bitmap_set_bit (defs, DF_REF_REGNO (def));
+ }
+}
+
+/* Find the set of real DEFs, which are not clobbers, for INSN. */
+
+void
+df_simulate_find_noclobber_defs (rtx insn, bitmap defs)
+{
+ df_ref *def_rec;
+ unsigned int uid = INSN_UID (insn);
+
+ for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++)
+ {
+ df_ref def = *def_rec;
+ if (!(DF_REF_FLAGS (def) & (DF_REF_MUST_CLOBBER | DF_REF_MAY_CLOBBER)))
bitmap_set_bit (defs, DF_REF_REGNO (def));
}
}
@@ -3903,13 +3916,9 @@
the block, starting with the first one.
----------------------------------------------------------------------------*/
-/* Apply the artificial uses and defs at the top of BB in a forwards
- direction. ??? This is wrong; defs mark the point where a pseudo
- becomes live when scanning forwards (unless a def is unused). Since
- there are no REG_UNUSED notes for artificial defs, passes that
- require artificial defs probably should not call this function
- unless (as is the case for fwprop) they are correct when liveness
- bitmaps are *under*estimated. */
+/* Initialize the LIVE bitmap, which should be copied from DF_LIVE_IN or
+ DF_LR_IN for basic block BB, for forward scanning by marking artificial
+ defs live. */
void
df_simulate_initialize_forwards (basic_block bb, bitmap live)
@@ -3921,7 +3930,7 @@
{
df_ref def = *def_rec;
if (DF_REF_FLAGS (def) & DF_REF_AT_TOP)
- bitmap_clear_bit (live, DF_REF_REGNO (def));
+ bitmap_set_bit (live, DF_REF_REGNO (def));
}
}
@@ -3942,7 +3951,7 @@
while here the scan is performed forwards! So, first assume that the
def is live, and if this is not true REG_UNUSED notes will rectify the
situation. */
- df_simulate_find_defs (insn, live);
+ df_simulate_find_noclobber_defs (insn, live);
/* Clear all of the registers that go dead. */
for (link = REG_NOTES (insn); link; link = XEXP (link, 1))
diff -rNU3 -x *.info dist/gcc/df.h dist.nbsd/gcc/df.h
--- dist/gcc/df.h Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/df.h Wed Nov 7 11:47:23 2012
@@ -51,7 +51,7 @@
#define DF_RD 3 /* Reaching Defs. */
#define DF_CHAIN 4 /* Def-Use and/or Use-Def Chains. */
#define DF_BYTE_LR 5 /* Subreg tracking lr. */
-#define DF_NOTE 6 /* REG_DEF and REG_UNUSED notes. */
+#define DF_NOTE 6 /* REG_DEAD and REG_UNUSED notes. */
#define DF_MD 7 /* Multiple Definitions. */
#define DF_LAST_PROBLEM_PLUS1 (DF_MD + 1)
@@ -978,6 +978,7 @@
extern void df_md_add_problem (void);
extern void df_md_simulate_artificial_defs_at_top (basic_block, bitmap);
extern void df_md_simulate_one_insn (basic_block, rtx, bitmap);
+extern void df_simulate_find_noclobber_defs (rtx, bitmap);
extern void df_simulate_find_defs (rtx, bitmap);
extern void df_simulate_defs (rtx, bitmap);
extern void df_simulate_uses (rtx, bitmap);
diff -rNU3 -x *.info dist/gcc/doc/aot-compile.1 dist.nbsd/gcc/doc/aot-compile.1
--- dist/gcc/doc/aot-compile.1 Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/doc/aot-compile.1 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "AOT-COMPILE 1"
-.TH AOT-COMPILE 1 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH AOT-COMPILE 1 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/cpp.1 dist.nbsd/gcc/doc/cpp.1
--- dist/gcc/doc/cpp.1 Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/doc/cpp.1 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "CPP 1"
-.TH CPP 1 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH CPP 1 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/cpp.texi dist.nbsd/gcc/doc/cpp.texi
--- dist/gcc/doc/cpp.texi Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/doc/cpp.texi Wed Nov 7 11:47:25 2012
@@ -1160,6 +1160,9 @@
@option{-isystem}, the @option{-I} option is ignored. GCC provides an
informative message when this occurs if @option{-v} is used.
+The @option{-cxx-isystem} command line option adds its argument to the
+list of C++ system headers, similar to @option{-isystem} for C headers.
+
@findex #pragma GCC system_header
There is also a directive, @code{@w{#pragma GCC system_header}}, which
tells GCC to consider the rest of the current include file a system
@@ -4349,6 +4352,7 @@
@c man begin SYNOPSIS
cpp [@option{-D}@var{macro}[=@var{defn}]@dots{}] [@option{-U}@var{macro}]
[@option{-I}@var{dir}@dots{}] [@option{-iquote}@var{dir}@dots{}]
+ [@option{-iremap}@var{src}:@var{dst}]
[@option{-W}@var{warn}@dots{}]
[@option{-M}|@option{-MM}] [@option{-MG}] [@option{-MF} @var{filename}]
[@option{-MP}] [@option{-MQ} @var{target}@dots{}]
diff -rNU3 -x *.info dist/gcc/doc/cppenv.texi dist.nbsd/gcc/doc/cppenv.texi
--- dist/gcc/doc/cppenv.texi Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/doc/cppenv.texi Wed Nov 7 11:47:25 2012
@@ -80,4 +80,17 @@
@ifclear cppmanual
@xref{Preprocessor Options}.
@end ifclear
+
+@item CPP_RESTRICTED
+@cindex only open regular files
+If this variable is defined, cpp will skip any include file which is not a
+regular file, and will continue searching for the requested name (this is
+always done if the found file is a directory).
+@ifset cppmanual
+@xref{Invocation}.
+@end ifset
+@ifclear cppmanual
+@xref{Preprocessor Options}.
+@end ifclear
+
@end vtable
diff -rNU3 -x *.info dist/gcc/doc/cppopts.texi dist.nbsd/gcc/doc/cppopts.texi
--- dist/gcc/doc/cppopts.texi Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/doc/cppopts.texi Wed Nov 7 11:47:25 2012
@@ -504,6 +504,16 @@
If @var{dir} begins with @code{=}, then the @code{=} will be replaced
by the sysroot prefix; see @option{--sysroot} and @option{-isysroot}.
+@item -cxx-isystem @var{dir}
+@opindex cxxisystem
+Search @var{dir} for C++ header files, after all directories specified by
+@option{-I} but before the standard system directories. Mark it
+as a system directory, so that it gets the same special treatment as
+is applied to the standard system directories.
+@ifset cppmanual
+@xref{System Headers}.
+@end ifset
+
@item -iquote @var{dir}
@opindex iquote
Search @var{dir} only for header files requested with
@@ -537,6 +547,12 @@
With both @option{-E} and @option{-fpreprocessed}, the rules for
@option{-fpreprocessed} take precedence. This enables full preprocessing of
files previously preprocessed with @code{-E -fdirectives-only}.
+
+@item -iremap @var{src}:@var{dst}
+@opindex iremap
+Replace the prefix @var{src} in __FILE__ with @var{dst} at expansion time.
+This option can be specified more than once. Processing stops at the first
+match.
@item -fdollars-in-identifiers
@opindex fdollars-in-identifiers
diff -rNU3 -x *.info dist/gcc/doc/fsf-funding.7 dist.nbsd/gcc/doc/fsf-funding.7
--- dist/gcc/doc/fsf-funding.7 Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/doc/fsf-funding.7 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "FSF-FUNDING 7"
-.TH FSF-FUNDING 7 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH FSF-FUNDING 7 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/g++.1 dist.nbsd/gcc/doc/g++.1
--- dist/gcc/doc/g++.1 Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/doc/g++.1 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "GCC 1"
-.TH GCC 1 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH GCC 1 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/gc-analyze.1 dist.nbsd/gcc/doc/gc-analyze.1
--- dist/gcc/doc/gc-analyze.1 Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/doc/gc-analyze.1 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "GC-ANALYZE 1"
-.TH GC-ANALYZE 1 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH GC-ANALYZE 1 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/gcc.1 dist.nbsd/gcc/doc/gcc.1
--- dist/gcc/doc/gcc.1 Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/doc/gcc.1 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "GCC 1"
-.TH GCC 1 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH GCC 1 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/gcj-dbtool.1 dist.nbsd/gcc/doc/gcj-dbtool.1
--- dist/gcc/doc/gcj-dbtool.1 Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/doc/gcj-dbtool.1 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "GCJ-DBTOOL 1"
-.TH GCJ-DBTOOL 1 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH GCJ-DBTOOL 1 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/gcj.1 dist.nbsd/gcc/doc/gcj.1
--- dist/gcc/doc/gcj.1 Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/doc/gcj.1 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "GCJ 1"
-.TH GCJ 1 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH GCJ 1 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/gcov.1 dist.nbsd/gcc/doc/gcov.1
--- dist/gcc/doc/gcov.1 Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/doc/gcov.1 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "GCOV 1"
-.TH GCOV 1 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH GCOV 1 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/gcov.texi dist.nbsd/gcc/doc/gcov.texi
--- dist/gcc/doc/gcov.texi Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/doc/gcov.texi Wed Nov 7 11:47:25 2012
@@ -128,8 +128,9 @@
[@option{-l}|@option{--long-file-names}]
[@option{-p}|@option{--preserve-paths}]
[@option{-f}|@option{--function-summaries}]
- [@option{-o}|@option{--object-directory} @var{directory|file}] @var{sourcefiles}
+ [@option{-o}|@option{--object-directory} @var{directory|file}]
[@option{-u}|@option{--unconditional-branches}]
+ @var{sourcefiles}
@c man end
@c man begin SEEALSO
gpl(7), gfdl(7), fsf-funding(7), gcc(1) and the Info entry for @file{gcc}.
diff -rNU3 -x *.info dist/gcc/doc/gfdl.7 dist.nbsd/gcc/doc/gfdl.7
--- dist/gcc/doc/gfdl.7 Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/doc/gfdl.7 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "GFDL 7"
-.TH GFDL 7 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH GFDL 7 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/gfortran.1 dist.nbsd/gcc/doc/gfortran.1
--- dist/gcc/doc/gfortran.1 Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/doc/gfortran.1 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "GFORTRAN 1"
-.TH GFORTRAN 1 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH GFORTRAN 1 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/gij.1 dist.nbsd/gcc/doc/gij.1
--- dist/gcc/doc/gij.1 Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/doc/gij.1 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "GIJ 1"
-.TH GIJ 1 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH GIJ 1 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/gpl.7 dist.nbsd/gcc/doc/gpl.7
--- dist/gcc/doc/gpl.7 Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/doc/gpl.7 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "GPL 7"
-.TH GPL 7 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH GPL 7 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/grmic.1 dist.nbsd/gcc/doc/grmic.1
--- dist/gcc/doc/grmic.1 Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/doc/grmic.1 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "GRMIC 1"
-.TH GRMIC 1 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH GRMIC 1 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/install.texi dist.nbsd/gcc/doc/install.texi
--- dist/gcc/doc/install.texi Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/doc/install.texi Wed Nov 7 11:47:25 2012
@@ -1194,7 +1194,7 @@
@item --with-llsc
On MIPS targets, make @option{-mllsc} the default when no
-@option{-mno-lsc} option is passed. This is the default for
+@option{-mno-llsc} option is passed. This is the default for
Linux-based targets, as the kernel will emulate them if the ISA does
not provide them.
diff -rNU3 -x *.info dist/gcc/doc/invoke.texi dist.nbsd/gcc/doc/invoke.texi
--- dist/gcc/doc/invoke.texi Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/doc/invoke.texi Wed Nov 7 11:47:25 2012
@@ -404,6 +404,7 @@
-include @var{file} -imacros @var{file} @gol
-iprefix @var{file} -iwithprefix @var{dir} @gol
-iwithprefixbefore @var{dir} -isystem @var{dir} @gol
+-cxx-isystem @var{dir} @gol
-imultilib @var{dir} -isysroot @var{dir} @gol
-M -MM -MF -MG -MP -MQ -MT -nostdinc @gol
-P -fworking-directory -remap @gol
@@ -425,7 +426,8 @@
@item Directory Options
@xref{Directory Options,,Options for Directory Search}.
-@gccoptlist{-B@var{prefix} -I@var{dir} -iquote@var{dir} -L@var{dir}
+@gccoptlist{-B@var{prefix} -I@var{dir} -iquote@var{dir}
+-iremap@var{src}:@var{dst} -L@var{dir}
-specs=@var{file} -I- --sysroot=@var{dir}}
@item Target Options
@@ -3246,11 +3248,11 @@
to be stored.''. If a program breaks these rules, the results on any
particular implementation are entirely unpredictable.
-Examples of code with undefined behavior are @code{a = a++;}, @code{a[n]
-= b[n++]} and @code{a[i++] = i;}. Some more complicated cases are not
-diagnosed by this option, and it may give an occasional false positive
-result, but in general it has been found fairly effective at detecting
-this sort of problem in programs.
+Examples of code with undefined behavior are @code{a = a++;},
+@code{a[n] = b[n++]} and @code{a[i++] = i;}. Some more complicated cases
+are not diagnosed by this option, and it may give an occasional false
+positive result, but in general it has been found fairly effective at
+detecting this sort of problem in programs.
The standard is worded confusingly, therefore there is some debate
over the precise meaning of the sequence point rules in subtle cases.
@@ -8872,6 +8874,12 @@
be searched for header files only for the case of @samp{#include
"@var{file}"}; they are not searched for @samp{#include <@var{file}>},
otherwise just like @option{-I}.
+
+@item -iremap @var{src}:@var{dst}
+@opindex iremap
+Replace the prefix @var{src} in __FILE__ with @var{dst} at expansion time.
+This option can be specified more than once. Processing stops at the first
+match.
@item -L@var{dir}
@opindex L
diff -rNU3 -x *.info dist/gcc/doc/jcf-dump.1 dist.nbsd/gcc/doc/jcf-dump.1
--- dist/gcc/doc/jcf-dump.1 Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/doc/jcf-dump.1 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "JCF-DUMP 1"
-.TH JCF-DUMP 1 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH JCF-DUMP 1 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/jv-convert.1 dist.nbsd/gcc/doc/jv-convert.1
--- dist/gcc/doc/jv-convert.1 Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/doc/jv-convert.1 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "JV-CONVERT 1"
-.TH JV-CONVERT 1 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH JV-CONVERT 1 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/doc/md.texi dist.nbsd/gcc/doc/md.texi
--- dist/gcc/doc/md.texi Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/doc/md.texi Wed Nov 7 11:47:25 2012
@@ -4503,8 +4503,9 @@
string. The instruction is not allowed to prefetch more than one byte
at a time since either string may end in the first byte and reading past
that may access an invalid page or segment and cause a fault. The
-effect of the instruction is to store a value in operand 0 whose sign
-indicates the result of the comparison.
+comparison terminates early if the fetched bytes are different or if
+they are equal to zero. The effect of the instruction is to store a
+value in operand 0 whose sign indicates the result of the comparison.
@cindex @code{cmpstr@var{m}} instruction pattern
@item @samp{cmpstr@var{m}}
@@ -4522,8 +4523,10 @@
order starting at the beginning of each string. The instruction is not allowed
to prefetch more than one byte at a time since either string may end in the
first byte and reading past that may access an invalid page or segment and
-cause a fault. The effect of the instruction is to store a value in operand 0
-whose sign indicates the result of the comparison.
+cause a fault. The comparison will terminate when the fetched bytes
+are different or if they are equal to zero. The effect of the
+instruction is to store a value in operand 0 whose sign indicates the
+result of the comparison.
@cindex @code{cmpmem@var{m}} instruction pattern
@item @samp{cmpmem@var{m}}
@@ -4531,9 +4534,10 @@
of @samp{cmpstr@var{m}}. The two memory blocks specified are compared
byte by byte in lexicographic order starting at the beginning of each
block. Unlike @samp{cmpstr@var{m}} the instruction can prefetch
-any bytes in the two memory blocks. The effect of the instruction is
-to store a value in operand 0 whose sign indicates the result of the
-comparison.
+any bytes in the two memory blocks. Also unlike @samp{cmpstr@var{m}}
+the comparison will not stop if both bytes are zero. The effect of
+the instruction is to store a value in operand 0 whose sign indicates
+the result of the comparison.
@cindex @code{strlen@var{m}} instruction pattern
@item @samp{strlen@var{m}}
diff -rNU3 -x *.info dist/gcc/doc/rebuild-gcj-db.1 dist.nbsd/gcc/doc/rebuild-gcj-db.1
--- dist/gcc/doc/rebuild-gcj-db.1 Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/doc/rebuild-gcj-db.1 Wed Nov 7 11:47:25 2012
@@ -132,7 +132,7 @@
.\" ========================================================================
.\"
.IX Title "REBUILD-GCJ-DB 1"
-.TH REBUILD-GCJ-DB 1 "2011-04-28" "gcc-4.5.3" "GNU"
+.TH REBUILD-GCJ-DB 1 "2012-07-02" "gcc-4.5.4" "GNU"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff -rNU3 -x *.info dist/gcc/dojump.c dist.nbsd/gcc/dojump.c
--- dist/gcc/dojump.c Wed Nov 7 13:39:36 2012
+++ dist.nbsd/gcc/dojump.c Wed Nov 7 11:47:25 2012
@@ -1022,7 +1022,7 @@
}
else
{
- if (GET_MODE_CLASS (mode) == MODE_FLOAT
+ if (SCALAR_FLOAT_MODE_P (mode)
&& ! can_compare_p (code, mode, ccp_jump)
&& can_compare_p (swap_condition (code), mode, ccp_jump))
{
@@ -1033,7 +1033,7 @@
op1 = tmp;
}
- else if (GET_MODE_CLASS (mode) == MODE_FLOAT
+ else if (SCALAR_FLOAT_MODE_P (mode)
&& ! can_compare_p (code, mode, ccp_jump)
/* Never split ORDERED and UNORDERED. These must be implemented. */
diff -rNU3 -x *.info dist/gcc/dwarf2out.c dist.nbsd/gcc/dwarf2out.c
--- dist/gcc/dwarf2out.c Wed Nov 7 13:40:06 2012
+++ dist.nbsd/gcc/dwarf2out.c Wed Nov 7 11:47:26 2012
@@ -4254,6 +4254,12 @@
Only on head of list */
const char *section; /* Section this loclist is relative to */
dw_loc_descr_ref expr;
+ /* True if all addresses in this and subsequent lists are known to be
+ resolved. */
+ bool resolved_addr;
+ /* True if this list has been replaced by dw_loc_next. */
+ bool replaced;
+ bool emitted;
} dw_loc_list_node;
#if defined (DWARF2_DEBUGGING_INFO) || defined (DWARF2_UNWIND_INFO)
@@ -5757,6 +5763,19 @@
/* Table of decl location linked lists. */
static GTY ((param_is (var_loc_list))) htab_t decl_loc_table;
+/* A cached location list. */
+struct GTY (()) cached_dw_loc_list_def {
+ /* The DECL_UID of the decl that this entry describes. */
+ unsigned int decl_id;
+
+ /* The cached location list. */
+ dw_loc_list_ref loc_list;
+};
+typedef struct cached_dw_loc_list_def cached_dw_loc_list;
+
+/* Table of cached location lists. */
+static GTY ((param_is (cached_dw_loc_list))) htab_t cached_dw_loc_list_table;
+
/* A pointer to the base of a list of references to DIE's that
are uniquely identified by their tag, presence/absence of
children DIE's, and list of attribute/value pairs. */
@@ -6110,7 +6129,7 @@
static void insert_int (HOST_WIDE_INT, unsigned, unsigned char *);
static void insert_float (const_rtx, unsigned char *);
static rtx rtl_for_decl_location (tree);
-static bool add_location_or_const_value_attribute (dw_die_ref, tree,
+static bool add_location_or_const_value_attribute (dw_die_ref, tree, bool,
enum dwarf_attribute);
static bool tree_add_const_value_attribute (dw_die_ref, tree);
static bool tree_add_const_value_attribute_for_decl (dw_die_ref, tree);
@@ -7729,6 +7748,24 @@
htab_find_with_hash (decl_loc_table, decl, DECL_UID (decl));
}
+/* Returns a hash value for X (which really is a cached_dw_loc_list_list). */
+
+static hashval_t
+cached_dw_loc_list_table_hash (const void *x)
+{
+ return (hashval_t) ((const cached_dw_loc_list *) x)->decl_id;
+}
+
+/* Return nonzero if decl_id of cached_dw_loc_list X is the same as
+ UID of decl *Y. */
+
+static int
+cached_dw_loc_list_table_eq (const void *x, const void *y)
+{
+ return (((const cached_dw_loc_list *) x)->decl_id
+ == DECL_UID ((const_tree) y));
+}
+
/* Equate a DIE to a particular declaration. */
static void
@@ -10353,6 +10390,10 @@
{
dw_loc_list_ref curr = list_head;
+ if (list_head->emitted)
+ return;
+ list_head->emitted = true;
+
ASM_OUTPUT_LABEL (asm_out_file, list_head->ll_symbol);
/* Walk the location list, and output each range + expression. */
@@ -15918,15 +15959,22 @@
these things can crop up in other ways also.) Note that one type of
constant value which can be passed into an inlined function is a constant
pointer. This can happen for example if an actual argument in an inlined
- function call evaluates to a compile-time constant address. */
+ function call evaluates to a compile-time constant address.
+ CACHE_P is true if it is worth caching the location list for DECL,
+ so that future calls can reuse it rather than regenerate it from scratch.
+ This is true for BLOCK_NONLOCALIZED_VARS in inlined subroutines,
+ since we will need to refer to them each time the function is inlined. */
+
static bool
-add_location_or_const_value_attribute (dw_die_ref die, tree decl,
+add_location_or_const_value_attribute (dw_die_ref die, tree decl, bool cache_p,
enum dwarf_attribute attr)
{
rtx rtl;
dw_loc_list_ref list;
var_loc_list *loc_list;
+ cached_dw_loc_list *cache;
+ void **slot;
if (TREE_CODE (decl) == ERROR_MARK)
return false;
@@ -15962,7 +16010,34 @@
&& add_const_value_attribute (die, rtl))
return true;
}
- list = loc_list_from_tree (decl, decl_by_reference_p (decl) ? 0 : 2);
+ /* If this decl is from BLOCK_NONLOCALIZED_VARS, we might need its
+ list several times. See if we've already cached the contents. */
+ list = NULL;
+ if (loc_list == NULL || cached_dw_loc_list_table == NULL)
+ cache_p = false;
+ if (cache_p)
+ {
+ cache = (cached_dw_loc_list *)
+ htab_find_with_hash (cached_dw_loc_list_table, decl, DECL_UID (decl));
+ if (cache)
+ list = cache->loc_list;
+ }
+ if (list == NULL)
+ {
+ list = loc_list_from_tree (decl, decl_by_reference_p (decl) ? 0 : 2);
+ /* It is usually worth caching this result if the decl is from
+ BLOCK_NONLOCALIZED_VARS and if the list has at least two elements. */
+ if (cache_p && list && list->dw_loc_next)
+ {
+ slot = htab_find_slot_with_hash (cached_dw_loc_list_table, decl,
+ DECL_UID (decl), INSERT);
+ cache = (cached_dw_loc_list *)
+ ggc_alloc_cleared (sizeof (cached_dw_loc_list));
+ cache->decl_id = DECL_UID (decl);
+ cache->loc_list = list;
+ *slot = cache;
+ }
+ }
if (list)
{
add_AT_location_description (die, attr, list);
@@ -17530,7 +17605,7 @@
equate_decl_number_to_die (node, parm_die);
if (! DECL_ABSTRACT (node_or_origin))
add_location_or_const_value_attribute (parm_die, node_or_origin,
- DW_AT_location);
+ node == NULL, DW_AT_location);
break;
@@ -17710,6 +17785,7 @@
tree context;
int was_abstract;
htab_t old_decl_loc_table;
+ htab_t old_cached_dw_loc_list_table;
/* Make sure we have the actual abstract inline, not a clone. */
decl = DECL_ORIGIN (decl);
@@ -17723,7 +17799,9 @@
DIE. Be sure to not clobber the outer location table nor use it or we would
get locations in abstract instantces. */
old_decl_loc_table = decl_loc_table;
+ old_cached_dw_loc_list_table = cached_dw_loc_list_table;
decl_loc_table = NULL;
+ cached_dw_loc_list_table = NULL;
/* Be sure we've emitted the in-class declaration DIE (if any) first, so
we don't get confused by DECL_ABSTRACT. */
@@ -17748,6 +17826,7 @@
current_function_decl = save_fn;
decl_loc_table = old_decl_loc_table;
+ cached_dw_loc_list_table = old_cached_dw_loc_list_table;
pop_cfun ();
}
@@ -18429,9 +18508,8 @@
&& !TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl_or_origin)))
defer_location (decl_or_origin, var_die);
else
- add_location_or_const_value_attribute (var_die,
- decl_or_origin,
- DW_AT_location);
+ add_location_or_const_value_attribute (var_die, decl_or_origin,
+ decl == NULL, DW_AT_location);
add_pubname (decl_or_origin, var_die);
}
else
@@ -20037,6 +20115,7 @@
dwarf2out_decl (decl);
htab_empty (decl_loc_table);
+ htab_empty (cached_dw_loc_list_table);
}
/* Output a marker (i.e. a label) for the beginning of the generated code for
@@ -20637,6 +20716,11 @@
decl_loc_table = htab_create_ggc (10, decl_loc_table_hash,
decl_loc_table_eq, NULL);
+ /* Allocate the cached_dw_loc_list_table. */
+ cached_dw_loc_list_table
+ = htab_create_ggc (10, cached_dw_loc_list_table_hash,
+ cached_dw_loc_list_table_eq, NULL);
+
/* Allocate the initial hunk of the decl_scope_table. */
decl_scope_table = VEC_alloc (tree, gc, 256);
@@ -21261,30 +21345,53 @@
{
dw_die_ref c;
dw_attr_ref a;
- dw_loc_list_ref *curr;
+ dw_loc_list_ref *curr, *start, loc;
unsigned ix;
for (ix = 0; VEC_iterate (dw_attr_node, die->die_attr, ix, a); ix++)
switch (AT_class (a))
{
case dw_val_class_loc_list:
- curr = AT_loc_list_ptr (a);
- while (*curr)
+ start = curr = AT_loc_list_ptr (a);
+ loc = *curr;
+ gcc_assert (loc);
+ /* The same list can be referenced more than once. See if we have
+ already recorded the result from a previous pass. */
+ if (loc->replaced)
+ *curr = loc->dw_loc_next;
+ else if (!loc->resolved_addr)
{
- if (!resolve_addr_in_expr ((*curr)->expr))
+ /* As things stand, we do not expect or allow one die to
+ reference a suffix of another die's location list chain.
+ References must be identical or completely separate.
+ There is therefore no need to cache the result of this
+ pass on any list other than the first; doing so
+ would lead to unnecessary writes. */
+ while (*curr)
{
- dw_loc_list_ref next = (*curr)->dw_loc_next;
- if (next && (*curr)->ll_symbol)
+ gcc_assert (!(*curr)->replaced && !(*curr)->resolved_addr);
+ if (!resolve_addr_in_expr ((*curr)->expr))
{
- gcc_assert (!next->ll_symbol);
- next->ll_symbol = (*curr)->ll_symbol;
+ dw_loc_list_ref next = (*curr)->dw_loc_next;
+ if (next && (*curr)->ll_symbol)
+ {
+ gcc_assert (!next->ll_symbol);
+ next->ll_symbol = (*curr)->ll_symbol;
+ }
+ *curr = next;
}
- *curr = next;
+ else
+ curr = &(*curr)->dw_loc_next;
}
+ if (loc == *start)
+ loc->resolved_addr = 1;
else
- curr = &(*curr)->dw_loc_next;
+ {
+ loc->replaced = 1;
+ loc->dw_loc_next = *start;
+ }
}
- if (!AT_loc_list (a))
+ if (!*start)
{
remove_AT (die, a->dw_attr);
ix--;
@@ -21344,6 +21451,7 @@
add_location_or_const_value_attribute (
VEC_index (deferred_locations, deferred_locations_list, i)->die,
VEC_index (deferred_locations, deferred_locations_list, i)->variable,
+ false,
DW_AT_location);
}
diff -rNU3 -x *.info dist/gcc/expr.c dist.nbsd/gcc/expr.c
--- dist/gcc/expr.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/expr.c Wed Nov 7 11:47:25 2012
@@ -2220,6 +2220,111 @@
return tgtblk;
}
+/* Copy BLKmode value SRC into a register of mode MODE. Return the
+ register if it contains any data, otherwise return null.
+
+ This is used on targets that return BLKmode values in registers. */
+
+rtx
+copy_blkmode_to_reg (enum machine_mode mode, tree src)
+{
+ int i, n_regs;
+ unsigned HOST_WIDE_INT bitpos, xbitpos, padding_correction = 0, bytes;
+ unsigned int bitsize;
+ rtx *dst_words, dst, x, src_word = NULL_RTX, dst_word = NULL_RTX;
+ enum machine_mode dst_mode;
+
+ gcc_assert (TYPE_MODE (TREE_TYPE (src)) == BLKmode);
+
+ x = expand_normal (src);
+
+ bytes = int_size_in_bytes (TREE_TYPE (src));
+ if (bytes == 0)
+ return NULL_RTX;
+
+ /* If the structure doesn't take up a whole number of words, see
+ whether the register value should be padded on the left or on
+ the right. Set PADDING_CORRECTION to the number of padding
+ bits needed on the left side.
+
+ In most ABIs, the structure will be returned at the least end of
+ the register, which translates to right padding on little-endian
+ targets and left padding on big-endian targets. The opposite
+ holds if the structure is returned at the most significant
+ end of the register. */
+ if (bytes % UNITS_PER_WORD != 0
+ && (targetm.calls.return_in_msb (TREE_TYPE (src))
+ ? !BYTES_BIG_ENDIAN
+ : BYTES_BIG_ENDIAN))
+ padding_correction = (BITS_PER_WORD - ((bytes % UNITS_PER_WORD)
+ * BITS_PER_UNIT));
+
+ n_regs = (bytes + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
+ dst_words = XALLOCAVEC (rtx, n_regs);
+ bitsize = MIN (TYPE_ALIGN (TREE_TYPE (src)), BITS_PER_WORD);
+
+ /* Copy the structure BITSIZE bits at a time. */
+ for (bitpos = 0, xbitpos = padding_correction;
+ bitpos < bytes * BITS_PER_UNIT;
+ bitpos += bitsize, xbitpos += bitsize)
+ {
+ /* We need a new destination pseudo each time xbitpos is
+ on a word boundary and when xbitpos == padding_correction
+ (the first time through). */
+ if (xbitpos % BITS_PER_WORD == 0
+ || xbitpos == padding_correction)
+ {
+ /* Generate an appropriate register. */
+ dst_word = gen_reg_rtx (word_mode);
+ dst_words[xbitpos / BITS_PER_WORD] = dst_word;
+
+ /* Clear the destination before we move anything into it. */
+ emit_move_insn (dst_word, CONST0_RTX (word_mode));
+ }
+
+ /* We need a new source operand each time bitpos is on a word
+ boundary. */
+ if (bitpos % BITS_PER_WORD == 0)
+ src_word = operand_subword_force (x, bitpos / BITS_PER_WORD, BLKmode);
+
+ /* Use bitpos for the source extraction (left justified) and
+ xbitpos for the destination store (right justified). */
+ store_bit_field (dst_word, bitsize, xbitpos % BITS_PER_WORD, word_mode,
+ extract_bit_field (src_word, bitsize,
+ bitpos % BITS_PER_WORD, 1,
+ NULL_RTX, word_mode, word_mode));
+ }
+
+ if (mode == BLKmode)
+ {
+ /* Find the smallest integer mode large enough to hold the
+ entire structure. */
+ for (mode = GET_CLASS_NARROWEST_MODE (MODE_INT);
+ mode != VOIDmode;
+ mode = GET_MODE_WIDER_MODE (mode))
+ /* Have we found a large enough mode? */
+ if (GET_MODE_SIZE (mode) >= bytes)
+ break;
+
+ /* A suitable mode should have been found. */
+ gcc_assert (mode != VOIDmode);
+ }
+
+ if (GET_MODE_SIZE (mode) < GET_MODE_SIZE (word_mode))
+ dst_mode = word_mode;
+ else
+ dst_mode = mode;
+ dst = gen_reg_rtx (dst_mode);
+
+ for (i = 0; i < n_regs; i++)
+ emit_move_insn (operand_subword (dst, i, 0, dst_mode), dst_words[i]);
+
+ if (mode != dst_mode)
+ dst = gen_lowpart (mode, dst);
+
+ return dst;
+}
+
/* Add a USE expression for REG to the (possibly empty) list pointed
to by CALL_FUSAGE. REG must denote a hard register. */
@@ -3764,7 +3869,8 @@
xinner = x;
if (mode == BLKmode
- || (STRICT_ALIGNMENT && align < GET_MODE_ALIGNMENT (mode)))
+ || (STRICT_ALIGNMENT && align < GET_MODE_ALIGNMENT (mode)
+ && type != NULL_TREE))
{
/* Copy a block into the stack, entirely or partially. */
@@ -4380,7 +4486,9 @@
if (TREE_CODE (from) == CALL_EXPR && ! aggregate_value_p (from, from)
&& COMPLETE_TYPE_P (TREE_TYPE (from))
&& TREE_CODE (TYPE_SIZE (TREE_TYPE (from))) == INTEGER_CST
- && ! (((TREE_CODE (to) == VAR_DECL || TREE_CODE (to) == PARM_DECL)
+ && ! (((TREE_CODE (to) == VAR_DECL
+ || TREE_CODE (to) == PARM_DECL
+ || TREE_CODE (to) == RESULT_DECL)
&& REG_P (DECL_RTL (to)))
|| TREE_CODE (to) == SSA_NAME))
{
@@ -4426,12 +4534,15 @@
rtx temp;
push_temp_slots ();
- temp = expand_expr (from, NULL_RTX, GET_MODE (to_rtx), EXPAND_NORMAL);
+ if (REG_P (to_rtx) && TYPE_MODE (TREE_TYPE (from)) == BLKmode)
+ temp = copy_blkmode_to_reg (GET_MODE (to_rtx), from);
+ else
+ temp = expand_expr (from, NULL_RTX, GET_MODE (to_rtx), EXPAND_NORMAL);
if (GET_CODE (to_rtx) == PARALLEL)
emit_group_load (to_rtx, temp, TREE_TYPE (from),
int_size_in_bytes (TREE_TYPE (from)));
- else
+ else if (temp)
emit_move_insn (to_rtx, temp);
preserve_temp_slots (to_rtx);
@@ -6906,6 +7017,14 @@
modifier == EXPAND_INITIALIZER
? EXPAND_INITIALIZER : EXPAND_CONST_ADDRESS);
+ if (TREE_ADDRESSABLE (exp)
+ && ! MEM_P (result)
+ && ! targetm.calls.allocate_stack_slots_for_args ())
+ {
+ error ("local frame unavailable (naked function?)");
+ return result;
+ }
+
/* If the DECL isn't in memory, then the DECL wasn't properly
marked TREE_ADDRESSABLE, which will be either a front-end
or a tree optimizer bug. */
@@ -8144,7 +8263,10 @@
op1 = gen_label_rtx ();
jumpifnot_1 (code, treeop0, treeop1, op1, -1);
- emit_move_insn (target, const1_rtx);
+ if (TYPE_PRECISION (type) == 1 && !TYPE_UNSIGNED (type))
+ emit_move_insn (target, constm1_rtx);
+ else
+ emit_move_insn (target, const1_rtx);
emit_label (op1);
return target;
@@ -8517,11 +8639,15 @@
return temp;
}
- /* If the mode of DECL_RTL does not match that of the decl, it
- must be a promoted value. We return a SUBREG of the wanted mode,
- but mark it so that we know that it was already extended. */
+ /* If the mode of DECL_RTL does not match that of the decl,
+ there are two cases: we are dealing with a BLKmode value
+ that is returned in a register, or we are dealing with
+ a promoted value. In the latter case, return a SUBREG
+ of the wanted mode, but mark it so that we know that it
+ was already extended. */
if (REG_P (decl_rtl)
+ && DECL_MODE (exp) != BLKmode
&& GET_MODE (decl_rtl) != DECL_MODE (exp))
{
enum machine_mode pmode;
@@ -10036,7 +10162,8 @@
if ((code == NE || code == EQ)
&& TREE_CODE (arg0) == BIT_AND_EXPR && integer_zerop (arg1)
- && integer_pow2p (TREE_OPERAND (arg0, 1)))
+ && integer_pow2p (TREE_OPERAND (arg0, 1))
+ && (TYPE_PRECISION (ops->type) != 1 || TYPE_UNSIGNED (ops->type)))
{
tree type = lang_hooks.types.type_for_mode (mode, unsignedp);
return expand_expr (fold_single_bit_test (loc,
@@ -10056,7 +10183,9 @@
/* Try a cstore if possible. */
return emit_store_flag_force (target, code, op0, op1,
- operand_mode, unsignedp, 1);
+ operand_mode, unsignedp,
+ (TYPE_PRECISION (ops->type) == 1
+ && !TYPE_UNSIGNED (ops->type)) ? -1 : 1);
}
diff -rNU3 -x *.info dist/gcc/expr.h dist.nbsd/gcc/expr.h
--- dist/gcc/expr.h Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/expr.h Wed Nov 7 11:47:25 2012
@@ -460,6 +460,8 @@
/* Copy BLKmode object from a set of registers. */
extern rtx copy_blkmode_from_reg (rtx, rtx, tree);
+extern rtx copy_blkmode_to_reg (enum machine_mode, tree);
+
/* Mark REG as holding a parameter for the next CALL_INSN. */
extern void use_reg (rtx *, rtx);
diff -rNU3 -x *.info dist/gcc/final.c dist.nbsd/gcc/final.c
--- dist/gcc/final.c Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/final.c Wed Nov 7 11:47:26 2012
@@ -2241,6 +2241,11 @@
location_t loc;
expanded_location expanded;
+ /* Make sure we flush any queued register saves in case this
+ clobbers affected registers. */
+ if (dwarf2out_do_frame ())
+ dwarf2out_frame_debug (insn, false);
+
/* There's no telling what that did to the condition codes. */
CC_STATUS_INIT;
diff -rNU3 -x *.info dist/gcc/fold-const.c dist.nbsd/gcc/fold-const.c
--- dist/gcc/fold-const.c Wed Nov 7 13:39:36 2012
+++ dist.nbsd/gcc/fold-const.c Wed Nov 7 11:47:25 2012
@@ -2784,8 +2784,6 @@
case VOID_TYPE:
tem = fold_ignored_result (arg);
- if (TREE_CODE (tem) == MODIFY_EXPR)
- goto fold_convert_exit;
return fold_build1_loc (loc, NOP_EXPR, type, tem);
default:
diff -rNU3 -x *.info dist/gcc/function.c dist.nbsd/gcc/function.c
--- dist/gcc/function.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/function.c Wed Nov 7 11:47:23 2012
@@ -1,7 +1,7 @@
/* Expands front end tree to back end RTL for GCC.
Copyright (C) 1987, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
- 2010 Free Software Foundation, Inc.
+ 2010, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -1643,7 +1643,7 @@
if (!check_asm_operands (PATTERN (insn)))
{
error_for_asm (insn, "impossible constraint in %<asm%>");
- delete_insn (insn);
+ delete_insn_and_edges (insn);
}
}
else
diff -rNU3 -x *.info dist/gcc/fwprop.c dist.nbsd/gcc/fwprop.c
--- dist/gcc/fwprop.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/fwprop.c Wed Nov 7 11:47:25 2012
@@ -228,7 +228,10 @@
process_uses (df_get_artificial_uses (bb_index), DF_REF_AT_TOP);
process_defs (df_get_artificial_defs (bb_index), DF_REF_AT_TOP);
- df_simulate_initialize_forwards (bb, local_lr);
+
+ /* We don't call df_simulate_initialize_forwards, as it may overestimate
+ the live registers if there are unused artificial defs. We prefer
+ liveness to be underestimated. */
FOR_BB_INSNS (bb, insn)
if (INSN_P (insn))
diff -rNU3 -x *.info dist/gcc/gcc.c dist.nbsd/gcc/gcc.c
--- dist/gcc/gcc.c Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/gcc.c Wed Nov 7 11:47:25 2012
@@ -1760,7 +1760,7 @@
static_name, " --as-needed ", shared_name, " --no-as-needed"
"}"
"%{shared-libgcc:",
- shared_name, "%{!shared: ", static_name, "}"
+ "--as-needed ", shared_name, " --no-as-needed ", static_name,
"}"
#else
"%{!shared:"
@@ -3154,10 +3154,11 @@
else
#endif
fatal_ice ("\
-Internal error: %s (program %s)\n\
+Internal error: %s (program %s received signal %d)\n\
Please submit a full bug report.\n\
See %s for instructions.",
strsignal (WTERMSIG (status)), commands[i].prog,
+ WTERMSIG (status),
bug_report_url);
}
else if (WIFEXITED (status)
@@ -3629,6 +3630,10 @@
/* FIXME: make_relative_prefix doesn't yet work for VMS. */
if (!gcc_exec_prefix)
{
+#ifdef NETBSD_NATIVE
+ add_prefix (&exec_prefixes, standard_libexec_prefix, "GCC",
+ PREFIX_PRIORITY_LAST, 0, 0);
+#else
gcc_exec_prefix = get_relative_prefix (argv[0],
standard_bindir_prefix,
standard_exec_prefix);
@@ -3637,6 +3642,7 @@
standard_libexec_prefix);
if (gcc_exec_prefix)
xputenv (concat ("GCC_EXEC_PREFIX=", gcc_exec_prefix, NULL));
+#endif
}
else
{
@@ -6938,6 +6944,7 @@
else
init_spec ();
+#ifndef NETBSD_NATIVE
/* We need to check standard_exec_prefix/just_machine_suffix/specs
for any override of as, ld and libraries. */
specs_file = (char *) alloca (strlen (standard_exec_prefix)
@@ -6948,6 +6955,7 @@
strcat (specs_file, "specs");
if (access (specs_file, R_OK) == 0)
read_specs (specs_file, TRUE);
+#endif
/* Process any configure-time defaults specified for the command line
options, via OPTION_DEFAULT_SPECS. */
@@ -7077,14 +7085,18 @@
PREFIX_PRIORITY_LAST, 0, 1);
else if (*cross_compile == '0')
{
+/* XXXMRG not sure this one is right? */
+#if !defined(NETBSD_NATIVE) && !defined(NETBSD_TOOLS)
add_prefix (&startfile_prefixes,
concat (gcc_exec_prefix
? gcc_exec_prefix : standard_exec_prefix,
machine_suffix,
standard_startfile_prefix, NULL),
NULL, PREFIX_PRIORITY_LAST, 0, 1);
+#endif /* NETBSD_NATIVE */
}
+#if !defined(NETBSD_NATIVE) && !defined(NETBSD_TOOLS)
/* Sysrooted prefixes are relocated because target_system_root is
also relocated by gcc_exec_prefix. */
if (*standard_startfile_prefix_1)
@@ -7095,6 +7107,7 @@
add_sysrooted_prefix (&startfile_prefixes,
standard_startfile_prefix_2, "BINUTILS",
PREFIX_PRIORITY_LAST, 0, 1);
+#endif /* NETBSD_NATIVE */
}
/* Process any user specified specs in the order given on the command
diff -rNU3 -x *.info dist/gcc/gcc.h dist.nbsd/gcc/gcc.h
--- dist/gcc/gcc.h Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/gcc.h Wed Nov 7 11:47:26 2012
@@ -50,6 +50,7 @@
|| !strcmp (STR, "iwithprefix") || !strcmp (STR, "iwithprefixbefore") \
|| !strcmp (STR, "iquote") || !strcmp (STR, "isystem") \
|| !strcmp (STR, "isysroot") \
+ || !strcmp (STR, "cxx-isystem") || !strcmp (STR, "-iremap") \
|| !strcmp (STR, "-param") || !strcmp (STR, "specs") \
|| !strcmp (STR, "MF") || !strcmp (STR, "MT") || !strcmp (STR, "MQ") \
|| !strcmp (STR, "fintrinsic-modules-path") \
diff -rNU3 -x *.info dist/gcc/gcov-iov.c dist.nbsd/gcc/gcov-iov.c
--- dist/gcc/gcov-iov.c Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/gcov-iov.c Wed Nov 7 11:47:25 2012
@@ -19,8 +19,8 @@
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
-#include <stdio.h>
-#include <stdlib.h>
+#include "bconfig.h"
+#include "system.h"
/* Command line arguments are the base GCC version and the development
phase (the latter may be an empty string). */
@@ -48,8 +48,14 @@
if (*ptr == '.')
minor = strtoul (ptr + 1, 0, 10);
+ /* For releases the development phase is an empty string, for
+ prerelease versions on a release branch it is "prerelease".
+ Consider both equal as patch-level releases do not change
+ the GCOV version either.
+ On the trunk the development phase is "experimental". */
phase = argv[2][0];
- if (phase == '\0')
+ if (phase == '\0'
+ || strcmp (argv[2], "prerelease") == 0)
phase = '*';
v[0] = (major < 10 ? '0' : 'A' - 10) + major;
diff -rNU3 -x *.info dist/gcc/genemit.c dist.nbsd/gcc/genemit.c
--- dist/gcc/genemit.c Wed Nov 7 13:39:36 2012
+++ dist.nbsd/gcc/genemit.c Wed Nov 7 11:47:25 2012
@@ -250,9 +250,9 @@
printf ("const_true_rtx");
else
{
- printf ("GEN_INT (");
- printf (HOST_WIDE_INT_PRINT_DEC_C, INTVAL (x));
- printf (")");
+ printf ("GEN_INT (HOST_WIDE_INT_CONSTANT (");
+ printf (HOST_WIDE_INT_PRINT_DEC, INTVAL (x));
+ printf ("))");
}
return;
diff -rNU3 -x *.info dist/gcc/gengtype-lex.c dist.nbsd/gcc/gengtype-lex.c
--- dist/gcc/gengtype-lex.c Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/gengtype-lex.c Wed Nov 7 11:47:23 2012
@@ -933,7 +933,7 @@
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
-#line 1 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 1 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
/* -*- indented-text -*- */
/* Process source files and output type information.
Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009
@@ -955,7 +955,7 @@
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
#define YY_NO_INPUT 1
-#line 25 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 25 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
#include "bconfig.h"
#include "system.h"
@@ -1165,7 +1165,7 @@
register char *yy_cp, *yy_bp;
register int yy_act;
-#line 59 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 59 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
/* Do this on entry to yylex(): */
*yylval = 0;
@@ -1262,7 +1262,7 @@
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 70 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 70 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
BEGIN(in_struct);
return TYPEDEF;
@@ -1274,7 +1274,7 @@
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 74 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 74 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
BEGIN(in_struct);
return STRUCT;
@@ -1286,7 +1286,7 @@
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 78 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 78 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
BEGIN(in_struct);
return UNION;
@@ -1298,7 +1298,7 @@
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 82 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 82 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
BEGIN(in_struct);
return EXTERN;
@@ -1310,7 +1310,7 @@
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 86 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 86 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
BEGIN(in_struct);
return STATIC;
@@ -1322,7 +1322,7 @@
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 91 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 91 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
BEGIN(in_struct);
return DEFVEC_OP;
@@ -1334,7 +1334,7 @@
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 95 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 95 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
BEGIN(in_struct);
return DEFVEC_I;
@@ -1346,7 +1346,7 @@
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 99 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 99 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
BEGIN(in_struct);
return DEFVEC_ALLOC;
@@ -1356,19 +1356,19 @@
case 9:
YY_RULE_SETUP
-#line 107 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 107 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ BEGIN(in_struct_comment); }
YY_BREAK
case 10:
/* rule 10 can match eol */
YY_RULE_SETUP
-#line 109 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 109 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ update_lineno (yytext, yyleng); }
YY_BREAK
case 11:
/* rule 11 can match eol */
YY_RULE_SETUP
-#line 110 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 110 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ lexer_line.line++; }
YY_BREAK
case 12:
@@ -1377,7 +1377,7 @@
(yy_c_buf_p) = yy_cp = yy_bp + 5;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 112 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 112 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
/* don't care */
YY_BREAK
case 13:
@@ -1386,7 +1386,7 @@
(yy_c_buf_p) = yy_cp = yy_bp + 3;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 113 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 113 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ return GTY_TOKEN; }
YY_BREAK
case 14:
@@ -1395,7 +1395,7 @@
(yy_c_buf_p) = yy_cp = yy_bp + 3;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 114 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 114 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ return VEC_TOKEN; }
YY_BREAK
case 15:
@@ -1404,7 +1404,7 @@
(yy_c_buf_p) = yy_cp = yy_bp + 5;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 115 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 115 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ return UNION; }
YY_BREAK
case 16:
@@ -1413,7 +1413,7 @@
(yy_c_buf_p) = yy_cp = yy_bp + 6;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 116 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 116 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ return STRUCT; }
YY_BREAK
case 17:
@@ -1422,7 +1422,7 @@
(yy_c_buf_p) = yy_cp = yy_bp + 4;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 117 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 117 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ return ENUM; }
YY_BREAK
case 18:
@@ -1431,7 +1431,7 @@
(yy_c_buf_p) = yy_cp = yy_bp + 9;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 118 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 118 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ return PTR_ALIAS; }
YY_BREAK
case 19:
@@ -1440,12 +1440,12 @@
(yy_c_buf_p) = yy_cp = yy_bp + 10;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 119 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 119 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ return NESTED_PTR; }
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 120 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 120 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ return NUM; }
YY_BREAK
case 21:
@@ -1454,7 +1454,7 @@
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 121 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 121 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
*yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1);
return PARAM_IS;
@@ -1465,11 +1465,11 @@
*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 127 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 127 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
case 23:
/* rule 23 can match eol */
YY_RULE_SETUP
-#line 127 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 127 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
size_t len;
@@ -1487,7 +1487,7 @@
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 139 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 139 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
*yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1);
return ID;
@@ -1496,7 +1496,7 @@
case 25:
/* rule 25 can match eol */
YY_RULE_SETUP
-#line 144 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 144 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
*yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
return STRING;
@@ -1506,7 +1506,7 @@
case 26:
/* rule 26 can match eol */
YY_RULE_SETUP
-#line 149 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 149 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
*yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
return ARRAY;
@@ -1515,7 +1515,7 @@
case 27:
/* rule 27 can match eol */
YY_RULE_SETUP
-#line 153 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 153 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
*yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng);
return CHAR;
@@ -1523,24 +1523,24 @@
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 158 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 158 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ return ELLIPSIS; }
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 159 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 159 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ return yytext[0]; }
YY_BREAK
/* ignore pp-directives */
case 30:
/* rule 30 can match eol */
YY_RULE_SETUP
-#line 162 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 162 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{lexer_line.line++;}
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 164 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 164 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
error_at_line (&lexer_line, "unexpected character `%s'", yytext);
}
@@ -1548,30 +1548,30 @@
case 32:
YY_RULE_SETUP
-#line 169 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 169 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ BEGIN(in_comment); }
YY_BREAK
case 33:
/* rule 33 can match eol */
YY_RULE_SETUP
-#line 170 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 170 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ lexer_line.line++; }
YY_BREAK
case 34:
-#line 172 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 172 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
case 35:
/* rule 35 can match eol */
-#line 173 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 173 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
case 36:
/* rule 36 can match eol */
YY_RULE_SETUP
-#line 173 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 173 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 37:
/* rule 37 can match eol */
YY_RULE_SETUP
-#line 174 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 174 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ update_lineno (yytext, yyleng); }
YY_BREAK
case 38:
@@ -1580,21 +1580,21 @@
(yy_c_buf_p) = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 175 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 175 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 39:
/* rule 39 can match eol */
YY_RULE_SETUP
-#line 178 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 178 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ lexer_line.line++; }
YY_BREAK
case 40:
-#line 180 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 180 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
case 41:
YY_RULE_SETUP
-#line 180 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 180 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 42:
@@ -1603,25 +1603,25 @@
(yy_c_buf_p) = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 181 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 181 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 183 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 183 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ BEGIN(INITIAL); }
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 184 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 184 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{ BEGIN(in_struct); }
YY_BREAK
case 45:
-#line 187 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 187 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
case 46:
YY_RULE_SETUP
-#line 187 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 187 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
{
error_at_line (&lexer_line,
"unterminated comment or string; unexpected EOF");
@@ -1630,12 +1630,12 @@
case 47:
/* rule 47 can match eol */
YY_RULE_SETUP
-#line 192 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 192 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
/* do nothing */
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 194 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 194 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
#line 1642 "gengtype-lex.c"
@@ -2602,7 +2602,7 @@
#define YYTABLES_NAME "yytables"
-#line 194 "/space/rguenther/gcc-4.5.3/gcc-4.5.3/gcc/gengtype-lex.l"
+#line 194 "/space/rguenther/gcc-4.5.4/gcc-4.5.4/gcc/gengtype-lex.l"
diff -rNU3 -x *.info dist/gcc/genmultilib dist.nbsd/gcc/genmultilib
--- dist/gcc/genmultilib Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/genmultilib Wed Nov 7 11:47:25 2012
@@ -136,8 +136,10 @@
# Since not all versions of sh support functions, we achieve recursion
# by creating a temporary shell script which invokes itself.
rm -f tmpmultilib
-cat >tmpmultilib <<\EOF
-#!/bin/sh
+cat >tmpmultilib <<EOF
+#!${CONFIG_SHELL:-/bin/sh}
+EOF
+cat >>tmpmultilib <<\EOF
# This recursive script basically outputs all combinations of its
# input arguments, handling mutually exclusive sets of options by
# repetition. When the script is called, ${initial} is the list of
@@ -172,8 +174,10 @@
# If there exceptions, weed them out now
if [ -n "${exceptions}" ]; then
- cat >tmpmultilib2 <<\EOF
-#!/bin/sh
+ cat >tmpmultilib2 <<EOF
+#!${CONFIG_SHELL:-/bin/sh}
+EOF
+ cat >>tmpmultilib2 <<\EOF
# This recursive script weeds out any combination of multilib
# switches that should not be generated. The output looks like
# a list of subdirectory names with leading and trailing slashes.
@@ -271,8 +275,10 @@
# opt1/opt2 nopt1 nopt2
# In other words, we must output all combinations of matches.
rm -f tmpmultilib2
-cat >tmpmultilib2 <<\EOF
-#!/bin/sh
+cat >tmpmultilib2 <<EOF
+#!${CONFIG_SHELL:-/bin/sh}
+EOF
+cat >>tmpmultilib2 <<\EOF
# The positional parameters are a list of matches to consider.
# ${dirout} is the directory name and ${optout} is the current list of
# options.
diff -rNU3 -x *.info dist/gcc/genrecog.c dist.nbsd/gcc/genrecog.c
--- dist/gcc/genrecog.c Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/genrecog.c Wed Nov 7 11:47:23 2012
@@ -1849,11 +1849,13 @@
static void
print_host_wide_int (HOST_WIDE_INT val)
{
+ /* XXX: the "min" below is computed for build, not host!!! */
HOST_WIDE_INT min = (unsigned HOST_WIDE_INT)1 << (HOST_BITS_PER_WIDE_INT-1);
if (val == min)
- printf ("(" HOST_WIDE_INT_PRINT_DEC_C "-1)", val + 1);
+ printf ("(HOST_WIDE_INT_CONSTANT (" HOST_WIDE_INT_PRINT_DEC ")-1)",
+ val + 1);
else
- printf (HOST_WIDE_INT_PRINT_DEC_C, val);
+ printf ("HOST_WIDE_INT_CONSTANT (" HOST_WIDE_INT_PRINT_DEC")", val);
}
/* Emit a switch statement, if possible, for an initial sequence of
diff -rNU3 -x *.info dist/gcc/gimplify.c dist.nbsd/gcc/gimplify.c
--- dist/gcc/gimplify.c Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/gimplify.c Wed Nov 7 11:47:23 2012
@@ -1953,8 +1953,14 @@
ret = MIN (ret, tret);
}
}
+ else
+ {
+ tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p,
+ is_gimple_reg, fb_rvalue);
+ ret = MIN (ret, tret);
+ }
- if (!TREE_OPERAND (t, 3))
+ if (TREE_OPERAND (t, 3) == NULL_TREE)
{
tree elmt_type = TREE_TYPE (TREE_TYPE (TREE_OPERAND (t, 0)));
tree elmt_size = unshare_expr (array_ref_element_size (t));
@@ -1973,11 +1979,17 @@
ret = MIN (ret, tret);
}
}
+ else
+ {
+ tret = gimplify_expr (&TREE_OPERAND (t, 3), pre_p, post_p,
+ is_gimple_reg, fb_rvalue);
+ ret = MIN (ret, tret);
+ }
}
else if (TREE_CODE (t) == COMPONENT_REF)
{
/* Set the field offset into T and gimplify it. */
- if (!TREE_OPERAND (t, 2))
+ if (TREE_OPERAND (t, 2) == NULL_TREE)
{
tree offset = unshare_expr (component_ref_field_offset (t));
tree field = TREE_OPERAND (t, 1);
@@ -1996,6 +2008,12 @@
ret = MIN (ret, tret);
}
}
+ else
+ {
+ tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p,
+ is_gimple_reg, fb_rvalue);
+ ret = MIN (ret, tret);
+ }
}
}
@@ -2496,7 +2514,9 @@
new_locus);
append_to_statement_list (t, &expr);
}
- else if (TREE_CODE (pred) == COND_EXPR)
+ else if (TREE_CODE (pred) == COND_EXPR
+ && !VOID_TYPE_P (TREE_TYPE (TREE_OPERAND (pred, 1)))
+ && !VOID_TYPE_P (TREE_TYPE (TREE_OPERAND (pred, 2))))
{
location_t new_locus;
@@ -2504,7 +2524,10 @@
if (a)
if (b) goto yes; else goto no;
else
- if (c) goto yes; else goto no; */
+ if (c) goto yes; else goto no;
+
+ Don't do this if one of the arms has void type, which can happen
+ in C++ when the arm is throw. */
/* Keep the original source location on the first 'if'. Set the source
location of the ? on the second 'if'. */
diff -rNU3 -x *.info dist/gcc/ginclude/stddef.h dist.nbsd/gcc/ginclude/stddef.h
--- dist/gcc/ginclude/stddef.h Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/ginclude/stddef.h Wed Nov 7 11:47:25 2012
@@ -52,7 +52,9 @@
/* On 4.3bsd-net2, make sure ansi.h is included, so we have
one less case to deal with in the following. */
#if defined (__BSD_NET2__) || defined (____386BSD____) || (defined (__FreeBSD__) && (__FreeBSD__ < 5)) || defined(__NetBSD__)
+#ifndef inhibit_libc
#include <machine/ansi.h>
+#endif
#endif
/* On FreeBSD 5, machine/ansi.h does not exist anymore... */
#if defined (__FreeBSD__) && (__FreeBSD__ >= 5)
diff -rNU3 -x *.info dist/gcc/hwint.h dist.nbsd/gcc/hwint.h
--- dist/gcc/hwint.h Wed Nov 7 13:40:06 2012
+++ dist.nbsd/gcc/hwint.h Wed Nov 7 11:47:26 2012
@@ -78,6 +78,7 @@
#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
# define HOST_WIDE_INT_PRINT HOST_LONG_FORMAT
# define HOST_WIDE_INT_PRINT_C "L"
+# define HOST_WIDE_INT_CONSTANT(x) x ## L
/* 'long' might be 32 or 64 bits, and the number of leading zeroes
must be tweaked accordingly. */
# if HOST_BITS_PER_WIDE_INT == 64
@@ -90,6 +91,7 @@
#else
# define HOST_WIDE_INT_PRINT HOST_LONG_LONG_FORMAT
# define HOST_WIDE_INT_PRINT_C "LL"
+# define HOST_WIDE_INT_CONSTANT(x) x ## LL
/* We can assume that 'long long' is at least 64 bits. */
# define HOST_WIDE_INT_PRINT_DOUBLE_HEX \
"0x%" HOST_LONG_LONG_FORMAT "x%016" HOST_LONG_LONG_FORMAT "x"
diff -rNU3 -x *.info dist/gcc/ifcvt.c dist.nbsd/gcc/ifcvt.c
--- dist/gcc/ifcvt.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/ifcvt.c Wed Nov 7 11:47:25 2012
@@ -3818,7 +3818,7 @@
basic_block other_bb, basic_block new_dest, int reversep)
{
rtx head, end, jump, earliest = NULL_RTX, old_dest, new_label = NULL_RTX;
- bitmap merge_set = NULL;
+ bitmap merge_set = NULL, merge_set_noclobber = NULL;
/* Number of pending changes. */
int n_validated_changes = 0;
@@ -3951,11 +3951,14 @@
/* Collect:
MERGE_SET = set of registers set in MERGE_BB
+ MERGE_SET_NOCLOBBER = like MERGE_SET, but only includes registers
+ that are really set, not just clobbered.
TEST_LIVE = set of registers live at EARLIEST
- TEST_SET = set of registers set between EARLIEST and the
- end of the block. */
+ TEST_SET = set of registers set between EARLIEST and the
+ end of the block. */
merge_set = BITMAP_ALLOC (&reg_obstack);
+ merge_set_noclobber = BITMAP_ALLOC (&reg_obstack);
/* If we allocated new pseudos (e.g. in the conditional move
expander called from noce_emit_cmove), we must resize the
@@ -3967,13 +3970,8 @@
{
if (NONDEBUG_INSN_P (insn))
{
- unsigned int uid = INSN_UID (insn);
- df_ref *def_rec;
- for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++)
- {
- df_ref def = *def_rec;
- bitmap_set_bit (merge_set, DF_REF_REGNO (def));
- }
+ df_simulate_find_defs (insn, merge_set);
+ df_simulate_find_noclobber_defs (insn, merge_set_noclobber);
}
}
@@ -3984,7 +3982,7 @@
unsigned i;
bitmap_iterator bi;
- EXECUTE_IF_SET_IN_BITMAP (merge_set, 0, i, bi)
+ EXECUTE_IF_SET_IN_BITMAP (merge_set_noclobber, 0, i, bi)
{
if (i < FIRST_PSEUDO_REGISTER
&& ! fixed_regs[i]
@@ -4015,12 +4013,14 @@
}
/* We can perform the transformation if
- MERGE_SET & (TEST_SET | TEST_LIVE)
+ MERGE_SET_NOCLOBBER & TEST_SET
and
+ MERGE_SET & TEST_LIVE
+ and
TEST_SET & DF_LIVE_IN (merge_bb)
are empty. */
- if (bitmap_intersect_p (merge_set, test_set)
+ if (bitmap_intersect_p (merge_set_noclobber, test_set)
|| bitmap_intersect_p (merge_set, test_live)
|| bitmap_intersect_p (test_set, df_get_live_in (merge_bb)))
intersect = true;
@@ -4104,10 +4104,11 @@
unsigned i;
bitmap_iterator bi;
- EXECUTE_IF_SET_IN_BITMAP (merge_set, 0, i, bi)
+ EXECUTE_IF_SET_IN_BITMAP (merge_set_noclobber, 0, i, bi)
remove_reg_equal_equiv_notes_for_regno (i);
BITMAP_FREE (merge_set);
+ BITMAP_FREE (merge_set_noclobber);
}
reorder_insns (head, end, PREV_INSN (earliest));
@@ -4128,7 +4129,10 @@
cancel_changes (0);
fail:
if (merge_set)
- BITMAP_FREE (merge_set);
+ {
+ BITMAP_FREE (merge_set);
+ BITMAP_FREE (merge_set_noclobber);
+ }
return FALSE;
}
diff -rNU3 -x *.info dist/gcc/ipa-prop.c dist.nbsd/gcc/ipa-prop.c
--- dist/gcc/ipa-prop.c Wed Nov 7 13:40:06 2012
+++ dist.nbsd/gcc/ipa-prop.c Wed Nov 7 11:47:23 2012
@@ -2134,9 +2134,9 @@
{
const struct lto_function_header *header =
(const struct lto_function_header *) data;
- const int32_t cfg_offset = sizeof (struct lto_function_header);
- const int32_t main_offset = cfg_offset + header->cfg_size;
- const int32_t string_offset = main_offset + header->main_size;
+ const int cfg_offset = sizeof (struct lto_function_header);
+ const int main_offset = cfg_offset + header->cfg_size;
+ const int string_offset = main_offset + header->main_size;
struct data_in *data_in;
struct lto_input_block ib_main;
unsigned int i;
diff -rNU3 -x *.info dist/gcc/libgcc2.c dist.nbsd/gcc/libgcc2.c
--- dist/gcc/libgcc2.c Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/libgcc2.c Wed Nov 7 11:47:23 2012
@@ -1802,15 +1802,19 @@
#define isfinite(x) __builtin_expect (!isnan((x) - (x)), 1)
#define isinf(x) __builtin_expect (!isnan(x) & !isfinite(x), 0)
+#if TARGET_FLOAT_FORMAT == IEEE_FLOAT_FORMAT
#define INFINITY CONCAT2(__builtin_huge_val, CEXT) ()
+#endif
#define I 1i
/* Helpers to make the following code slightly less gross. */
#define COPYSIGN CONCAT2(__builtin_copysign, CEXT)
#define FABS CONCAT2(__builtin_fabs, CEXT)
+#ifdef INFINITY
/* Verify that MTYPE matches up with CEXT. */
extern void *compile_type_assert[sizeof(INFINITY) == sizeof(MTYPE) ? 1 : -1];
+#endif
/* Ensure that we've lost any extra precision. */
#if NOTRUNC
@@ -1841,6 +1845,7 @@
x = ac - bd;
y = ad + bc;
+#ifdef INFINITY
if (isnan (x) && isnan (y))
{
/* Recover infinities that computed as NaN + iNaN. */
@@ -1882,6 +1887,7 @@
y = INFINITY * (a * d + b * c);
}
}
+#endif
__real__ res = x;
__imag__ res = y;
@@ -1917,6 +1923,7 @@
y = (b - (a * ratio)) / denom;
}
+#ifdef INFINITY
/* Recover infinities and zeros that computed as NaN+iNaN; the only cases
are nonzero/zero, infinite/finite, and finite/infinite. */
if (isnan (x) && isnan (y))
@@ -1941,6 +1948,7 @@
y = 0.0 * (b * c - a * d);
}
}
+#endif
__real__ res = x;
__imag__ res = y;
@@ -1948,6 +1956,7 @@
}
#endif /* complex divide */
+#undef INFINITY
#endif /* all complex float routines */
/* From here on down, the routines use normal data types. */
diff -rNU3 -x *.info dist/gcc/loop-doloop.c dist.nbsd/gcc/loop-doloop.c
--- dist/gcc/loop-doloop.c Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/loop-doloop.c Wed Nov 7 11:47:25 2012
@@ -334,14 +334,11 @@
describes the loop, DESC describes the number of iterations of the
loop, and DOLOOP_INSN is the low-overhead looping insn to emit at the
end of the loop. CONDITION is the condition separated from the
- DOLOOP_SEQ. COUNT is the number of iterations of the LOOP.
- ZERO_EXTEND_P says to zero extend COUNT after the increment of it to
- word_mode from FROM_MODE. */
+ DOLOOP_SEQ. COUNT is the number of iterations of the LOOP. */
static void
doloop_modify (struct loop *loop, struct niter_desc *desc,
- rtx doloop_seq, rtx condition, rtx count,
- bool zero_extend_p, enum machine_mode from_mode)
+ rtx doloop_seq, rtx condition, rtx count)
{
rtx counter_reg;
rtx tmp, noloop = NULL_RTX;
@@ -415,12 +412,8 @@
}
if (increment_count)
- count = simplify_gen_binary (PLUS, from_mode, count, const1_rtx);
+ count = simplify_gen_binary (PLUS, mode, count, const1_rtx);
- if (zero_extend_p)
- count = simplify_gen_unary (ZERO_EXTEND, word_mode,
- count, from_mode);
-
/* Insert initialization of the count register into the loop header. */
start_sequence ();
tmp = force_operand (count, counter_reg);
@@ -555,7 +548,6 @@
struct niter_desc *desc;
unsigned word_mode_size;
unsigned HOST_WIDE_INT word_mode_max;
- bool zero_extend_p = false;
if (dump_file)
fprintf (dump_file, "Doloop: Processing loop %d.\n", loop->num);
@@ -630,7 +622,8 @@
{
if (word_mode_size > GET_MODE_BITSIZE (mode))
{
- zero_extend_p = true;
+ count = simplify_gen_unary (ZERO_EXTEND, word_mode,
+ count, mode);
iterations = simplify_gen_unary (ZERO_EXTEND, word_mode,
iterations, mode);
iterations_max = simplify_gen_unary (ZERO_EXTEND, word_mode,
@@ -674,8 +667,7 @@
return false;
}
- doloop_modify (loop, desc, doloop_seq, condition, count,
- zero_extend_p, mode);
+ doloop_modify (loop, desc, doloop_seq, condition, count);
return true;
}
diff -rNU3 -x *.info dist/gcc/lto/ChangeLog dist.nbsd/gcc/lto/ChangeLog
--- dist/gcc/lto/ChangeLog Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/lto/ChangeLog Wed Nov 7 11:47:25 2012
@@ -1,3 +1,19 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
+2011-12-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * lto.h (lto_parse_hex): Reinstate.
+ * lto.c (lto_parse_hex): Make global again.
+
+2011-12-13 Eric Botcazou <ebotcazou@adacore.com>
+
+ * lto.h (lto_parse_hex): Delete.
+ * lto.c (lto_read_decls): Use 'int' for offsets.
+ (lto_parse_hex): Make static and return proper 64-bit host type.
+ (lto_resolution_read): Use proper 64-bit host type.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/gcc/lto/lto.c dist.nbsd/gcc/lto/lto.c
--- dist/gcc/lto/lto.c Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/lto/lto.c Wed Nov 7 11:47:25 2012
@@ -157,7 +157,7 @@
uint32_t ix;
tree decl;
uint32_t i, j;
-
+
ix = *data++;
decl = lto_streamer_cache_get (data_in->reader_cache, (int) ix);
if (TREE_CODE (decl) != FUNCTION_DECL)
@@ -200,9 +200,9 @@
VEC(ld_plugin_symbol_resolution_t,heap) *resolutions)
{
const struct lto_decl_header *header = (const struct lto_decl_header *) data;
- const int32_t decl_offset = sizeof (struct lto_decl_header);
- const int32_t main_offset = decl_offset + header->decl_state_size;
- const int32_t string_offset = main_offset + header->main_size;
+ const int decl_offset = sizeof (struct lto_decl_header);
+ const int main_offset = decl_offset + header->decl_state_size;
+ const int string_offset = main_offset + header->main_size;
struct lto_input_block ib_main;
struct data_in *data_in;
unsigned int i;
@@ -250,17 +250,20 @@
if (data_ptr != data_end)
internal_error ("bytecode stream: garbage at the end of symbols section");
-
+
/* Set the current decl state to be the global state. */
decl_data->current_decl_state = decl_data->global_decl_state;
lto_data_in_delete (data_in);
}
-/* strtoll is not portable. */
-int64_t
-lto_parse_hex (const char *p) {
- uint64_t ret = 0;
+/* Custom version of strtoll, which is not portable. */
+
+HOST_WIDEST_INT
+lto_parse_hex (const char *p)
+{
+ HOST_WIDEST_INT ret = 0;
+
for (; *p != '\0'; ++p)
{
char c = *p;
@@ -276,6 +279,7 @@
internal_error ("could not parse hex number");
ret |= part;
}
+
return ret;
}
@@ -311,7 +315,7 @@
{
int t;
char offset_p[17];
- int64_t offset;
+ HOST_WIDEST_INT offset;
t = fscanf (resolution, "@0x%16s", offset_p);
if (t != 1)
internal_error ("could not parse file offset");
diff -rNU3 -x *.info dist/gcc/lto/lto.h dist.nbsd/gcc/lto/lto.h
--- dist/gcc/lto/lto.h Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/lto/lto.h Wed Nov 7 11:47:25 2012
@@ -58,6 +58,6 @@
size_t len;
};
-int64_t lto_parse_hex (const char *p);
+extern HOST_WIDEST_INT lto_parse_hex (const char *p);
#endif /* LTO_H */
diff -rNU3 -x *.info dist/gcc/lto-opts.c dist.nbsd/gcc/lto-opts.c
--- dist/gcc/lto-opts.c Wed Nov 7 13:39:36 2012
+++ dist.nbsd/gcc/lto-opts.c Wed Nov 7 11:47:23 2012
@@ -351,7 +351,7 @@
size_t len;
const char *data;
const struct lto_simple_header *header;
- int32_t opts_offset;
+ int opts_offset;
struct lto_input_block ib;
data = lto_get_section_data (file_data, LTO_section_opts, NULL, &len);
diff -rNU3 -x *.info dist/gcc/lto-section-in.c dist.nbsd/gcc/lto-section-in.c
--- dist/gcc/lto-section-in.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/lto-section-in.c Wed Nov 7 11:47:23 2012
@@ -294,7 +294,7 @@
= (const struct lto_simple_header *) data;
struct lto_input_block* ib_main;
- int32_t main_offset = sizeof (struct lto_simple_header);
+ int main_offset = sizeof (struct lto_simple_header);
if (!data)
return NULL;
diff -rNU3 -x *.info dist/gcc/lto-streamer-in.c dist.nbsd/gcc/lto-streamer-in.c
--- dist/gcc/lto-streamer-in.c Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/lto-streamer-in.c Wed Nov 7 11:47:25 2012
@@ -1445,9 +1445,9 @@
{
const struct lto_function_header *header;
struct data_in *data_in;
- int32_t cfg_offset;
- int32_t main_offset;
- int32_t string_offset;
+ int cfg_offset;
+ int main_offset;
+ int string_offset;
struct lto_input_block ib_cfg;
struct lto_input_block ib_main;
diff -rNU3 -x *.info dist/gcc/lto-streamer-out.c dist.nbsd/gcc/lto-streamer-out.c
--- dist/gcc/lto-streamer-out.c Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/lto-streamer-out.c Wed Nov 7 11:47:42 2012
@@ -2302,7 +2302,7 @@
enum gcc_plugin_symbol_kind kind;
enum gcc_plugin_symbol_visibility visibility;
int slot_num;
- uint64_t size;
+ unsigned HOST_WIDEST_INT size;
const char *comdat;
/* None of the following kinds of symbols are needed in the
@@ -2367,10 +2367,9 @@
}
if (kind == GCCPK_COMMON
- && DECL_SIZE (t)
- && TREE_CODE (DECL_SIZE (t)) == INTEGER_CST)
- size = (((uint64_t) TREE_INT_CST_HIGH (DECL_SIZE (t))) << 32)
- | TREE_INT_CST_LOW (DECL_SIZE (t));
+ && DECL_SIZE_UNIT (t)
+ && TREE_CODE (DECL_SIZE_UNIT (t)) == INTEGER_CST)
+ size = TREE_INT_CST_LOW (DECL_SIZE_UNIT (t));
else
size = 0;
diff -rNU3 -x *.info dist/gcc/objc/ChangeLog dist.nbsd/gcc/objc/ChangeLog
--- dist/gcc/objc/ChangeLog Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/objc/ChangeLog Wed Nov 7 11:47:25 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/gcc/objcp/ChangeLog dist.nbsd/gcc/objcp/ChangeLog
--- dist/gcc/objcp/ChangeLog Wed Nov 7 13:40:06 2012
+++ dist.nbsd/gcc/objcp/ChangeLog Wed Nov 7 11:47:25 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/gcc/po/ChangeLog dist.nbsd/gcc/po/ChangeLog
--- dist/gcc/po/ChangeLog Wed Nov 7 13:39:37 2012
+++ dist.nbsd/gcc/po/ChangeLog Wed Nov 7 11:47:25 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/gcc/profile.c dist.nbsd/gcc/profile.c
--- dist/gcc/profile.c Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/profile.c Wed Nov 7 11:47:25 2012
@@ -989,6 +989,45 @@
fprintf (dump_file, "Adding fake entry edge to bb %i\n",
bb->index);
make_edge (ENTRY_BLOCK_PTR, bb, EDGE_FAKE);
+ /* Avoid bbs that have both fake entry edge and also some
+ exit edge. One of those edges wouldn't be added to the
+ spanning tree, but we can't instrument any of them. */
+ if (have_exit_edge || need_exit_edge)
+ {
+ gimple_stmt_iterator gsi;
+ gimple first;
+ tree fndecl;
+
+ gsi = gsi_after_labels (bb);
+#ifdef ENABLE_CHECKING
+ gcc_assert (!gsi_end_p (gsi));
+#endif
+ first = gsi_stmt (gsi);
+ if (is_gimple_debug (first))
+ {
+ gsi_next_nondebug (&gsi);
+#ifdef ENABLE_CHECKING
+ gcc_assert (!gsi_end_p (gsi));
+#endif
+ first = gsi_stmt (gsi);
+ }
+ /* Don't split the bbs containing __builtin_setjmp_receiver
+ or __builtin_setjmp_dispatcher calls. These are very
+ special and don't expect anything to be inserted before
+ them. */
+ if (!is_gimple_call (first)
+ || (fndecl = gimple_call_fndecl (first)) == NULL
+ || DECL_BUILT_IN_CLASS (fndecl) != BUILT_IN_NORMAL
+ || (DECL_FUNCTION_CODE (fndecl) != BUILT_IN_SETJMP_RECEIVER
+ && (DECL_FUNCTION_CODE (fndecl)
+ != BUILT_IN_SETJMP_DISPATCHER)))
+ {
+ if (dump_file)
+ fprintf (dump_file, "Splitting bb %i after labels\n",
+ bb->index);
+ split_block_after_labels (bb);
+ }
+ }
}
}
diff -rNU3 -x *.info dist/gcc/real.c dist.nbsd/gcc/real.c
--- dist/gcc/real.c Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/real.c Wed Nov 7 11:47:25 2012
@@ -1008,15 +1008,25 @@
switch (code)
{
case PLUS_EXPR:
+ /* Clear any padding areas in *r if it isn't equal to one of the
+ operands so that we can later do bitwise comparisons later on. */
+ if (r != op0 && r != op1)
+ memset (r, '\0', sizeof (*r));
return do_add (r, op0, op1, 0);
case MINUS_EXPR:
+ if (r != op0 && r != op1)
+ memset (r, '\0', sizeof (*r));
return do_add (r, op0, op1, 1);
case MULT_EXPR:
+ if (r != op0 && r != op1)
+ memset (r, '\0', sizeof (*r));
return do_multiply (r, op0, op1);
case RDIV_EXPR:
+ if (r != op0 && r != op1)
+ memset (r, '\0', sizeof (*r));
return do_divide (r, op0, op1);
case MIN_EXPR:
diff -rNU3 -x *.info dist/gcc/recog.c dist.nbsd/gcc/recog.c
--- dist/gcc/recog.c Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/recog.c Wed Nov 7 11:47:23 2012
@@ -2991,6 +2991,7 @@
static int search_ofs;
enum reg_class cl;
HARD_REG_SET live;
+ df_ref *def_rec;
int i;
gcc_assert (from < MAX_INSNS_PER_PEEP2 + 1);
@@ -3008,13 +3009,15 @@
while (from != to)
{
- HARD_REG_SET this_live;
+ gcc_assert (peep2_insn_data[from].insn != NULL_RTX);
+ /* Don't use registers set or clobbered by the insn. */
+ for (def_rec = DF_INSN_DEFS (peep2_insn_data[from].insn);
+ *def_rec; def_rec++)
+ SET_HARD_REG_BIT (live, DF_REF_REGNO (*def_rec));
+
if (++from >= MAX_INSNS_PER_PEEP2 + 1)
from = 0;
- gcc_assert (peep2_insn_data[from].insn != NULL_RTX);
- REG_SET_TO_HARD_REG_SET (this_live, peep2_insn_data[from].live_before);
- IOR_HARD_REG_SET (live, this_live);
}
cl = (class_str[0] == 'r' ? GENERAL_REGS
diff -rNU3 -x *.info dist/gcc/regmove.c dist.nbsd/gcc/regmove.c
--- dist/gcc/regmove.c Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/regmove.c Wed Nov 7 11:47:23 2012
@@ -859,7 +859,7 @@
if (REG_N_CALLS_CROSSED (REGNO (src)) == 0)
break;
- if (call_used_regs [REGNO (dst)]
+ if ((HARD_REGISTER_P (dst) && call_used_regs [REGNO (dst)])
|| find_reg_fusage (p, CLOBBER, dst))
break;
}
diff -rNU3 -x *.info dist/gcc/reload.c dist.nbsd/gcc/reload.c
--- dist/gcc/reload.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/reload.c Wed Nov 7 11:47:25 2012
@@ -6795,6 +6795,15 @@
|| num > PARAM_VALUE (PARAM_MAX_RELOAD_SEARCH_INSNS))
return 0;
+ /* Don't reuse register contents from before a setjmp-type
+ function call; on the second return (from the longjmp) it
+ might have been clobbered by a later reuse. It doesn't
+ seem worthwhile to actually go and see if it is actually
+ reused even if that information would be readily available;
+ just don't reuse it across the setjmp call. */
+ if (CALL_P (p) && find_reg_note (p, REG_SETJMP, NULL_RTX))
+ return 0;
+
if (NONJUMP_INSN_P (p)
/* If we don't want spill regs ... */
&& (! (reload_reg_p != 0
diff -rNU3 -x *.info dist/gcc/reload1.c dist.nbsd/gcc/reload1.c
--- dist/gcc/reload1.c Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/reload1.c Wed Nov 7 11:47:42 2012
@@ -4487,6 +4487,13 @@
{
AND_COMPL_HARD_REG_SET (reg_reloaded_valid, call_used_reg_set);
AND_COMPL_HARD_REG_SET (reg_reloaded_valid, reg_reloaded_call_part_clobbered);
+
+ /* If this is a call to a setjmp-type function, we must not
+ reuse any reload reg contents across the call; that will
+ just be clobbered by other uses of the register in later
+ code, before the longjmp. */
+ if (find_reg_note (insn, REG_SETJMP, NULL_RTX))
+ CLEAR_HARD_REG_SET (reg_reloaded_valid);
}
}
diff -rNU3 -x *.info dist/gcc/reorg.c dist.nbsd/gcc/reorg.c
--- dist/gcc/reorg.c Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/reorg.c Wed Nov 7 11:47:23 2012
@@ -3557,9 +3557,11 @@
}
}
+ /* See if we have a simple (conditional) jump that is useless. */
if (! INSN_ANNULLED_BRANCH_P (delay_insn)
- && prev_active_insn (target_label) == insn
&& ! condjump_in_parallel_p (delay_insn)
+ && prev_active_insn (target_label) == insn
+ && ! BARRIER_P (prev_nonnote_insn (target_label))
#ifdef HAVE_cc0
/* If the last insn in the delay slot sets CC0 for some insn,
various code assumes that it is in a delay slot. We could
diff -rNU3 -x *.info dist/gcc/stmt.c dist.nbsd/gcc/stmt.c
--- dist/gcc/stmt.c Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/stmt.c Wed Nov 7 11:47:23 2012
@@ -1232,11 +1232,11 @@
static bool
check_unique_operand_names (tree outputs, tree inputs, tree labels)
{
- tree i, j;
+ tree i, j, i_name = NULL_TREE;
for (i = outputs; i ; i = TREE_CHAIN (i))
{
- tree i_name = TREE_PURPOSE (TREE_PURPOSE (i));
+ i_name = TREE_PURPOSE (TREE_PURPOSE (i));
if (! i_name)
continue;
@@ -1247,7 +1247,7 @@
for (i = inputs; i ; i = TREE_CHAIN (i))
{
- tree i_name = TREE_PURPOSE (TREE_PURPOSE (i));
+ i_name = TREE_PURPOSE (TREE_PURPOSE (i));
if (! i_name)
continue;
@@ -1261,7 +1261,7 @@
for (i = labels; i ; i = TREE_CHAIN (i))
{
- tree i_name = TREE_PURPOSE (i);
+ i_name = TREE_PURPOSE (i);
if (! i_name)
continue;
@@ -1276,8 +1276,7 @@
return true;
failure:
- error ("duplicate asm operand name %qs",
- TREE_STRING_POINTER (TREE_PURPOSE (TREE_PURPOSE (i))));
+ error ("duplicate asm operand name %qs", TREE_STRING_POINTER (i_name));
return false;
}
diff -rNU3 -x *.info dist/gcc/targhooks.c dist.nbsd/gcc/targhooks.c
--- dist/gcc/targhooks.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/targhooks.c Wed Nov 7 11:47:25 2012
@@ -569,7 +569,17 @@
DECL_ARTIFICIAL (t) = 1;
DECL_IGNORED_P (t) = 1;
DECL_VISIBILITY_SPECIFIED (t) = 1;
+#if 1
+ /*
+ * This is a hack:
+ * It appears that our gas does not generate @PLT for hidden
+ * symbols. It could be that we need a newer version, or that
+ * this local function is handled differently on linux.
+ */
+ DECL_VISIBILITY (t) = VISIBILITY_DEFAULT;
+#else
DECL_VISIBILITY (t) = VISIBILITY_HIDDEN;
+#endif
stack_chk_fail_decl = t;
}
diff -rNU3 -x *.info dist/gcc/testsuite/ChangeLog dist.nbsd/gcc/testsuite/ChangeLog
--- dist/gcc/testsuite/ChangeLog Wed Nov 7 13:39:47 2012
+++ dist.nbsd/gcc/testsuite/ChangeLog Wed Nov 7 11:47:30 2012
@@ -1,3 +1,656 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
+2012-06-20 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2012-05-21 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/53418
+ * gcc.c-torture/compile/pr53418-1.c,
+ gcc.c-torture/compile/pr53418-2.c: New tests.
+
+2012-06-20 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2010-12-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/46985
+ * gfortran.dg/pr46985.f90: New test.
+
+ 2011-02-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/47780
+ * gcc.target/i386/pr47780.c: New test.
+
+2012-06-04 Edmar Wienskoski <edmar@freescale.com>
+
+ * gcc.target/powerpc/cell_builtin_1.c: New test case.
+ * gcc.target/powerpc/cell_builtin_2.c: Ditto.
+ * gcc.target/powerpc/cell_builtin_3.c: Ditto.
+ * gcc.target/powerpc/cell_builtin_4.c: Ditto.
+ * gcc.target/powerpc/cell_builtin_5.c: Ditto.
+ * gcc.target/powerpc/cell_builtin_6.c: Ditto.
+ * gcc.target/powerpc/cell_builtin_7.c: Ditto.
+ * gcc.target/powerpc/cell_builtin_8.c: Ditto.
+
+2012-05-03 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Backport from mainline
+ 2012-05-03 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/53199
+ * gcc.target/powwerpc/pr53199.c: New file.
+
+2012-04-30 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2012-04-27 Paolo Bonzini <bonzini@gnu.org>
+
+ PR target/53138
+ * gcc.c-torture/execute/20120427-1.c: New testcase.
+
+2012-03-28 Martin Jambor <mjambor@suse.cz>
+
+ Backported from mainline
+ 2012-03-27 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/52693
+ * gcc.dg/torture/pr52693.c: New test.
+
+2012-03-24 Steven Bosscher <steven@gcc.gnu.org>
+
+ PR middle-end/52640
+ * gcc.c-torture/compile/limits-externdecl.c: New test.
+
+2012-03-06 Tobias Burnus <burnus@net-b.de>
+
+ Backport from mainline
+ 2012-03-02 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/52452
+ * gfortran.dg/intrinsic_8.f90: New.
+
+2012-03-06 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from 4.6 branch
+ 2012-01-25 Jason Merrill <jason@redhat.com>
+
+ PR target/51934
+ * g++.dg/torture/pr51344.C: Limit to x86.
+
+2012-03-03 Peter Bergner <bergner@vnet.ibm.com>
+
+ Revert:
+ Backport from mainline
+ 2012-03-02 Peter Bergner <bergner@vnet.ibm.com>
+
+ * gcc.target/powerpc/pr52457.c: New test.
+
+2012-03-02 Peter Bergner <bergner@vnet.ibm.com>
+
+ Backport from mainline
+ 2012-03-02 Peter Bergner <bergner@vnet.ibm.com>
+
+ * gcc.target/powerpc/pr52457.c: New test.
+
+2012-02-23 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/52335
+ * gfortran.dg/io_constraints_10.f90: New.
+
+2012-02-23 Uros Bizjak <ubizjak@gmail.com>
+
+ PR c/52290
+ * gcc.dg/noncompile/pr52290.c: New test.
+
+2012-02-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/52330
+ * gcc.target/i386/pr52330.c: New test.
+
+2012-02-14 Bin Cheng <bin.cheng@arm.com>
+
+ Backport from mainline.
+ 2012-01-30 Bin Cheng <bin.cheng@arm.com>
+
+ PR target/51835
+ * gcc.target/arm/pr51835.c: New testcase.
+
+2012-02-09 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
+ 2012-02-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/52139
+ * gcc.dg/pr52139.c: New test.
+
+ 2012-01-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/51767
+ * gcc.c-torture/compile/pr51767.c: New test.
+
+ PR middle-end/51768
+ * c-c++-common/pr51768.c: New test.
+
+ PR middle-end/44777
+ * gcc.dg/tree-prof/pr44777.c: New test.
+
+2012-02-09 Peter Bergner <bergner@vnet.ibm.com>
+
+ Backport from mainline
+ 2012-02-09 Peter Bergner <bergner@vnet.ibm.com>
+
+ PR middle-end/52140
+ * gcc.dg/dfp/pr52140.c: New test.
+
+2012-02-09 Andrey Belevantsev <abel@ispras.ru>
+
+ Backport from mainline
+ 2012-01-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/51106
+ * gcc.dg/torture/pr51106-1.c: New test.
+ * gcc.dg/torture/pr51106-2.c: New test.
+
+2012-01-28 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/52022
+ * gfortran.dg/dummy_procedure_7.f90: New.
+
+2012-01-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/renaming5.ad[sb]: New test.
+
+2012-01-20 Kai Tietz <ktietz@redhat.com>
+
+ * g++.dg/torture/pr51344.C: Fix typo.
+
+2012-01-19 Kai Tietz <ktietz@redhat.com>
+
+ * g++.dg/torture/pr51344.C: New test.
+
+2012-01-15 Uros Bizjak <ubizjak@gmail.com>
+
+ PR rtl-optimization/51821
+ * gcc.dg/pr51821.c: New test.
+
+2012-01-12 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ Backport from mainline:
+ 2011-01-11 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ * gcc.c-torture/execute/20120110-1.c: New testcase.
+
+2012-01-10 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.c-torture/execute/doloop-1.c,
+ gcc.c-torture/execute/doloop-2.c: New tests.
+
+2012-01-09 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/51759
+ * gcc.dg/ipa/pr45644.c: New test.
+ * g++.dg/ipa/pr51759.C: Likewise.
+
+2012-01-06 Richard Sandiford <richard.sandiford@linaro.org>
+
+ PR middle-end/48660
+ * g++.dg/pr48660.C: New test.
+
+2012-01-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * ada/acats/overflow.lst: Add cb20004.
+
+2012-01-04 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-07-14 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/49651
+ * gcc.dg/torture/pr49651.c: New testcase.
+
+2012-01-03 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-10-12 Paul Koning <pkoning@gcc.gnu.org>
+
+ PR tree-optimization/50189
+ * g++.dg/torture/pr50189.C: New testcase.
+
+2012-01-03 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-10-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/49279
+ * gcc.c-torture/execute/pr49279.c: New test.
+
+2012-01-03 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-05-12 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/48172
+ * gcc.dg/vect/pr48172.c: New testcase.
+
+2011-12-20 Dodji Seketeli <dodji@redhat.com>
+
+ PR debug/49951
+ * g++.dg/gcov/gcov-2.C: Adjust.
+
+2011-12-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/51406
+ PR c++/51161
+ * g++.dg/cpp0x/rv-cast3.C: New.
+ * g++.dg/cpp0x/rv-cast4.C: New.
+
+2011-12-09 Kazu Hirata <kazu@codesourcery.com>
+
+ Backport from mainline:
+
+ 2011-12-05 Kazu Hirata <kazu@codesourcery.com>
+
+ PR target/51408
+ * gcc.dg/pr51408.c: New.
+
+2011-12-04 Uros Bizjak <ubizjak@gmail.com>
+ Jérémie Detrey <Jeremie.Detrey@loria.fr>
+
+ PR target/51393
+ * gcc.target/i386/pr51393.c: New test.
+
+2011-11-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/delay-slot-2.c: New test.
+
+2011-10-30 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/50875
+ * config/i386/sse.md (*avx_unpcklpd256): Remove extra insn
+ constraints. Change alternative 1 to "x,m,1".
+
+2011-10-23 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/50788
+ * gcc.target/i386/pr50788.c: New test.
+
+2011-10-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/50793
+ * g++.dg/init/value9.C: New.
+
+2011-10-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/50618
+ * g++.dg/init/vbase1.C: New.
+
+2011-10-13 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/50659
+ * gfortran.dg/proc_decl_27.f90: New.
+
+2011-10-12 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/50565
+ * gcc.c-torture/compile/pr50565-1.c,
+ gcc.c-torture/compile/pr50565-2.c: New tests.
+
+2011-10-11 Janis Johnson <janisjo@codesourcery.com>
+
+ PR c++/44473
+ * g++.dg/dfp/44473-1.C: New test.
+ * g++.dg/dfp/44473-2.C: New test.
+ * g++.dg/dfp/mangle-1.C: New test.
+ * g++.dg/dfp/mangle-2.C: New test.
+ * g++.dg/dfp/mangle-3.C: New test.
+ * g++.dg/dfp/mangle-4.C: New test.
+ * g++.dg/dfp/mangle-5.C: New test.
+
+2011-10-11 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50273
+ * gfortran.dg/common_16.f90: New.
+
+2011-09-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/50464
+ * g++.dg/other/pr50464.C: New test.
+
+2011-09-08 Martin Jambor <mjambor@suse.cz>
+
+ Backport from mainline
+ 2011-09-07 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/49911
+ * g++.dg/tree-ssa/pr49911.C: New test.
+
+2011-09-01 Mikael Morin <mikael.morin@sfr.fr>
+
+ PR fortran/50050
+ * gfortran.dg/alloc_comp_initializer_3.f90: New test.
+ * gfortran.dg/pointer_comp_init.f90: New test.
+
+2011-08-30 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
+ PR libfortran/50192
+ * gfortran.dg/widechar_compare_1.f90: New test.
+
+2011-08-30 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50163
+ * gfortran.dg/initialization_28.f90: New.
+
+2011-08-19 Tobias Burnus <burnus@net-b.de>
+
+ Backport from mainline
+ 2011-08-18 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50109
+ * gfortran.dg/namelist_73.f90: New.
+
+2011-08-16 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/42051
+ PR fortran/43896
+ PR fortran/49962
+ * gfortran.dg/class_23.f03: New test.
+
+2011-07-31 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/49920
+ * gcc.target/i386/pr49920.c: New test.
+
+2011-07-27 Tobias Burnus <burnus@net-b.de>
+
+ Backported from mainline
+ 2011-07-23 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/49791
+ * gfortran.dg/namelist_72.f: New.
+
+2011-07-27 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/avx-os-support.h: New.
+ * gcc.target/i386/avx-check.h: Include avx-os-support.h
+ (main): Check avx_os_support before the test is run.
+ * gcc.target/i386/aes-avx-check.h: Ditto.
+ * gcc.target/i386/pclmul-avx-check.h: Ditto.
+
+2011-07-23 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/49708
+ * gfortran.dg/allocate_error_3.f90: New.
+
+2011-07-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR debug/47393
+ * g++.dg/debug/dwarf2/icf.C: XFAIL some scan-assembler on
+ mips-sgi-irix*.
+
+2011-07-21 Uros Bizjak <ubizjak@gmail.com>
+
+ * lib/target-supports.exp (check_avx_os_support_available): New.
+ (check_effective_target_avx_runtime): Use it.
+
+2011-07-19 Jakub Jelinek <jakub@redhat.com>
+
+ Backport from mainline
+ 2011-07-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/49621
+ * gcc.target/powerpc/altivec-34.c: New test.
+
+ 2011-07-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/49644
+ * g++.dg/torture/pr49644.C: New test.
+
+ PR c/49644
+ * gcc.c-torture/execute/pr49644.c: New test.
+
+ PR middle-end/49640
+ * gcc.dg/gomp/pr49640.c: New test.
+
+ 2011-07-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/49619
+ * gcc.dg/pr49619.c: New test.
+
+ 2011-05-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/49165
+ * g++.dg/eh/cond6.C: New test.
+
+ 2011-05-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/49165
+ * g++.dg/eh/cond5.C: New test.
+
+ PR tree-optimization/49161
+ * gcc.c-torture/execute/pr49161.c: New test.
+
+ 2011-05-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/49120
+ * c-decl.c (start_decl): Convert expr to void_type_node.
+
+ PR middle-end/48973
+ * gcc.c-torture/execute/pr48973-1.c: New test.
+ * gcc.c-torture/execute/pr48973-2.c: New test.
+
+ 2011-05-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/49039
+ * gcc.c-torture/execute/pr49039.c: New test.
+ * gcc.dg/tree-ssa/pr49039.c: New test.
+ * g++.dg/torture/pr49039.C: New test.
+
+2011-07-15 Jason Merrill <jason@redhat.com>
+
+ PR testsuite/49643
+ * g++.dg/rtti/anon-ns1.C: Allow for null-termination.
+
+2011-07-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.target/sparc/cas64.c: New test.
+
+2011-07-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * ada/acats/run_acats (which): Extract last field from type -p,
+ type output only if command succeeded.
+
+2011-07-04 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-05-02 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/48822
+ * gcc.dg/torture/pr48822.c: New testcase.
+
+2011-07-04 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-05-23 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/49115
+ * g++.dg/torture/pr49115.C: New testcase.
+
+2011-07-04 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/49615
+ * g++.dg/torture/pr49615.C: New testcase.
+
+2011-06-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR ada/49511
+ * ada/acats/run_acats (which): Use last field of type -p output.
+
+2011-06-30 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/38752
+ * gcc.c-torture/compile/pr38752.c: New testcase.
+
+2011-06-28 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt17.ad[sb]: New test.
+
+2011-06-23 Jason Merrill <jason@redhat.com>
+
+ PR c++/49440
+ * g++.dg/rtti/anon-ns1.C: New.
+
+2011-06-17 Hans-Peter Nilsson <hp@axis.com>
+
+ Backport from mainline
+ 2011-06-17 Hans-Peter Nilsson <hp@axis.com>
+
+ PR rtl-optimization/48542
+ * gcc.dg/torture/pr48542.c: New test.
+
+2011-06-16 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ Backport form main line
+ 2011-06-09 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/49307
+ * gcc.dg/pr49307.c: New.
+
+2011-06-08 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ Backport from mainline
+ 2011-06-01 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/49238
+ * gcc.c-torture/compile/pr49238.c: New.
+
+2011-06-05 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ Backport from mainline
+ 2011-05-30 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/49186
+ * gcc.c-torture/execute/pr49186.c: New.
+
+2011-06-04 Ira Rosen <ira.rosen@linaro.org>
+
+ PR tree-optimization/49038
+ * gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c: New test.
+ * gcc.dg/vect/pr49038.c: New test.
+
+2011-06-02 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
+ PR fortran/45786
+ * gfortran.dg/operator_7.f90: New test case.
+
+2011-05-31 Duncan Sands <baldrick@free.fr>
+
+ Backported from 4.6 branch
+ 2011-03-09 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/47714
+ * g++.dg/torture/pr47714.C: New test.
+
+2011-05-29 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * gcc.target/mips/reg-var-1.c: New test.
+
+2011-05-25 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/49133
+ * g++.dg/other/pr49133.C: New test.
+
+2011-05-20 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/init/new32.C: New.
+
+2011-05-19 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.c-torture/execute/960321-1.x: Remove.
+
+2011-05-11 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Backport from mainline
+ 2011-05-10 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/48857
+ * gcc.target/powerpc/pr48857.c: New file, make sure V2DI arguments
+ are passed and returned in vector registers.
+
+2011-05-10 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
+ 2011-05-07 Zdenek Dvorak <ook@ucw.cz>
+
+ PR tree-optimization/48837
+ * gcc.dg/pr48837.c: New testcase.
+
+2011-05-09 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/template/nontype23.C: New.
+
+2011-05-05 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/init/new30.C: New.
+
+2011-05-05 Julian Brown <julian@codesourcery.com>
+
+ * gcc.target/arm/neon-vset_lanes8.c: New test.
+
+2011-05-05 Ira Rosen <ira.rosen@linaro.org>
+
+ Backport from mainline:
+ 2011-04-18 Ulrich Weigand <ulrich.weigand@linaro.org>
+ Ira Rosen <ira.rosen@linaro.org>
+
+ PR target/48252
+ * gcc.target/arm/pr48252.c: New test.
+
+2011-05-04 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2011-04-21 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/48708
+ * gcc.target/i386/pr48708.c: New test.
+
+2011-05-04 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2010-12-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ * gcc.target/i386/sse2-init-v2di-2.c: Add "-dp" and update
+ expected scan.
+
+2011-05-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/48774
+ * gcc.dg/pr48774.c: New test.
+
+ Backport from mainline
+ 2011-04-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/48809
+ * gcc.c-torture/execute/pr48809.c: New test.
+
+ 2011-04-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/48742
+ * gcc.c-torture/compile/pr48742.c: New test.
+
+ 2011-04-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/48685
+ * gcc.dg/pr48685.c: New test.
+
+2011-04-27 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/parse/ambig6.C: New.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
@@ -48,7 +701,7 @@
2011-04-18 Richard Guenther <rguenther@suse.de>
- Backported from 4.6 branch
+ Backported from 4.6 branch
2011-03-11 Jakub Jelinek <jakub@redhat.com>
PR c++/48035
@@ -318,7 +971,7 @@
* gcc.dg/torture/pr45967.c: New testcase.
* gcc.dg/torture/pr45967-2.c: Likewise.
* gcc.dg/torture/pr45967-3.c: Likewise.
- * gcc.dg/torture/pr39074-2.c: Adjust.
+ * gcc.dg/torture/pr39074-2.c: Adjust.
* gcc.dg/torture/pta-escape-1.c: Likewise
* gcc.dg/torture/pta-ptrarith-1.c: Likewise
* gcc.dg/tree-ssa/pta-callused.c: Likewise
@@ -1284,11 +1937,11 @@
2010-09-06 Dodji Seketeli <dodji@redhat.com>
- PR c++/45200
- PR c++/45293
- PR c++/45558
- * g++.dg/template/typedef34.C: New test.
- * g++.dg/template/typedef35.C: New test.
+ PR c++/45200
+ PR c++/45293
+ PR c++/45558
+ * g++.dg/template/typedef34.C: New test.
+ * g++.dg/template/typedef35.C: New test.
2010-09-04 Tobias Burnus <burnus@net-b.de>
@@ -4146,7 +4799,7 @@
* gfortran.dg/read_x_eof.f90: New test.
* gfortran.dg/read_x_past.f: Update test.
-2010-03-10 Jan Hubicka <jh@suse.cz>
+2010-03-10 Jan Hubicka <jh@suse.cz>
* gcc.c-torture/compile/pr43288.c: New test.
diff -rNU3 -x *.info dist/gcc/testsuite/c-c++-common/pr51768.c dist.nbsd/gcc/testsuite/c-c++-common/pr51768.c
--- dist/gcc/testsuite/c-c++-common/pr51768.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/c-c++-common/pr51768.c Wed Nov 7 11:47:42 2012
@@ -0,0 +1,25 @@
+/* PR middle-end/51768 */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+void
+foo (void)
+{
+ asm goto ("" : : : : lab, lab, lab2, lab); /* { dg-error "duplicate asm operand name" } */
+lab:;
+lab2:;
+}
+
+void
+bar (void)
+{
+ asm goto ("" : : [lab] "i" (0) : : lab); /* { dg-error "duplicate asm operand name" } */
+lab:;
+}
+
+void
+baz (void)
+{
+ int x;
+ asm ("" : [lab] "=r" (x) : [lab] "r" (x)); /* { dg-error "duplicate asm operand name" } */
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/cpp0x/rv-cast3.C dist.nbsd/gcc/testsuite/g++.dg/cpp0x/rv-cast3.C
--- dist/gcc/testsuite/g++.dg/cpp0x/rv-cast3.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/cpp0x/rv-cast3.C Wed Nov 7 11:47:32 2012
@@ -0,0 +1,18 @@
+// PR c++/51406
+// { dg-do run }
+// { dg-options "-std=c++0x" }
+
+extern "C" int printf(const char *,...);
+extern "C" void abort();
+
+struct A { int a; A() : a(1) {} };
+struct B { int b; B() : b(2) {} };
+struct X : A, B {};
+
+int main() {
+ X x;
+ int a=static_cast<A&&>(x).a;
+ int b=static_cast<B&&>(x).b;
+ // printf ("%d %d\n", a, b);
+ if (a!=1 || b!=2) abort();
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/cpp0x/rv-cast4.C dist.nbsd/gcc/testsuite/g++.dg/cpp0x/rv-cast4.C
--- dist/gcc/testsuite/g++.dg/cpp0x/rv-cast4.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/cpp0x/rv-cast4.C Wed Nov 7 11:47:32 2012
@@ -0,0 +1,13 @@
+// PR c++/51161
+// { dg-options "-std=c++0x" }
+
+struct A{};
+struct B : A{};
+struct C : A{};
+struct D : B, C{};
+
+int main()
+{
+ D d;
+ static_cast<A &&>(d); // { dg-error "ambiguous" }
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/debug/dwarf2/icf.C dist.nbsd/gcc/testsuite/g++.dg/debug/dwarf2/icf.C
--- dist/gcc/testsuite/g++.dg/debug/dwarf2/icf.C Wed Nov 7 13:39:57 2012
+++ dist.nbsd/gcc/testsuite/g++.dg/debug/dwarf2/icf.C Wed Nov 7 11:47:32 2012
@@ -40,11 +40,11 @@
// Verify that we get .debug_dcall and .debug_vcall tables generated
// and that we see entries for both virtual calls.
-// { dg-final { scan-assembler "\\.section.*\.debug_dcall" } }
+// { dg-final { scan-assembler "\\.section.*\.debug_dcall" { xfail mips-sgi-irix* } } }
// { dg-final { scan-assembler "\\.section.*\.debug_vcall" } }
-// { dg-final { scan-assembler "New caller" } }
-// { dg-final { scan-assembler "Caller DIE offset" } }
+// { dg-final { scan-assembler "New caller" { xfail mips-sgi-irix* } } }
+// { dg-final { scan-assembler "Caller DIE offset" { xfail mips-sgi-irix* } } }
// { dg-final { scan-assembler "Point of call" } }
-// { dg-final { scan-assembler "Callee DIE offset" } }
+// { dg-final { scan-assembler "Callee DIE offset" { xfail mips-sgi-irix* } } }
// { dg-final { scan-assembler "0x0.*Vtable slot" } }
// { dg-final { scan-assembler "0x1.*Vtable slot" } }
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/dfp/44473-1.C dist.nbsd/gcc/testsuite/g++.dg/dfp/44473-1.C
--- dist/gcc/testsuite/g++.dg/dfp/44473-1.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/dfp/44473-1.C Wed Nov 7 11:47:32 2012
@@ -0,0 +1,122 @@
+/* { dg-do assemble } */
+
+/* Minimized from the testcase in PR c++/44473; mangling of decimal types
+ did not include CV qualifiers. */
+
+namespace std
+{
+ namespace decimal
+ {
+ class decimal32
+ {
+ public:
+ typedef float __decfloat32 __attribute__ ((mode (SD)));
+ explicit decimal32 (float __r):__val (__r) {}
+ private:
+ __decfloat32 __val;
+ };
+ };
+
+ template <typename _BI1, typename _BI2>
+ _BI2 copy_backward (_BI1 __first, _BI2 __result);
+}
+
+namespace __gnu_cxx
+{
+ template <typename _Iterator, typename _Container>
+ class __normal_iterator
+ {
+ public:
+ explicit __normal_iterator (const _Iterator & __i) {}
+ const _Iterator & base () const {}
+ };
+
+ template <typename _IteratorL, typename _IteratorR, typename _Container>
+ bool operator== (const __normal_iterator <_IteratorL, _Container> &__lhs,
+ const __normal_iterator <_IteratorR, _Container> &__rhs)
+ {
+ return __lhs.base () == __rhs.base ();
+ }
+
+ template <typename _Tp>
+ class new_allocator
+ {
+ public:
+ typedef _Tp *pointer;
+ typedef const _Tp *const_pointer;
+ template <typename _Tp1>
+ struct rebind
+ {
+ typedef new_allocator <_Tp1> other;
+ };
+ };
+}
+
+namespace std
+{
+ template <typename _Tp>
+ class allocator:public __gnu_cxx::new_allocator <_Tp> {};
+
+ template <typename _Tp, typename _Alloc>
+ struct _Vector_base
+ {
+ typedef typename _Alloc::template rebind <_Tp>::other _Tp_alloc_type;
+ struct _Vector_impl:public _Tp_alloc_type
+ {
+ typename _Tp_alloc_type::pointer _M_finish;
+ };
+ public: _Vector_impl _M_impl;
+ };
+
+ template <typename _Tp, typename _Alloc = std::allocator <_Tp> >
+ class vector:protected _Vector_base <_Tp, _Alloc>
+ {
+ typedef _Vector_base <_Tp, _Alloc> _Base;
+ typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
+ public:
+ typedef _Tp value_type;
+ typedef typename _Tp_alloc_type::pointer pointer;
+ typedef typename _Tp_alloc_type::const_pointer const_pointer;
+ typedef __gnu_cxx::__normal_iterator <pointer, vector> iterator;
+ typedef __gnu_cxx::__normal_iterator <const_pointer, vector>
+ const_iterator;
+ const_iterator begin () const;
+ iterator end ()
+ {
+ return iterator (this->_M_impl._M_finish);
+ }
+ const_iterator end () const
+ {
+ return const_iterator (this->_M_impl._M_finish);
+ }
+ bool empty () const
+ {
+ return begin () == end ();
+ }
+ void push_back (const value_type & __x)
+ {
+ _M_insert_aux (end ());
+ }
+ void _M_insert_aux (iterator __position);
+ };
+
+ template <typename _Tp, typename _Alloc>
+ void vector <_Tp, _Alloc>::_M_insert_aux (iterator __position)
+ {
+ std::copy_backward (__position.base (), this->_M_impl._M_finish - 1);
+ }
+}
+
+std::vector <std::decimal::decimal32> vec;
+
+int
+foo ()
+{
+ return (vec.empty ()) ? 1 : 0;
+}
+
+bool
+bar ()
+{
+ vec.push_back (std::decimal::decimal32 (0));
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/dfp/44473-2.C dist.nbsd/gcc/testsuite/g++.dg/dfp/44473-2.C
--- dist/gcc/testsuite/g++.dg/dfp/44473-2.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/dfp/44473-2.C Wed Nov 7 11:47:32 2012
@@ -0,0 +1,25 @@
+// { dg-do compile }
+
+// Mangling of classes from std::decimal are special-cased.
+
+namespace std {
+ namespace decimal {
+ class decimal64 {
+ public:
+ typedef float __decfloat64 __attribute__ ((mode (DD)));
+ explicit decimal64 (int __r):__val (__r) {}
+ private:
+ __decfloat64 __val;
+ };
+ }
+}
+
+int bar (const std::decimal::decimal64 & x) { }
+
+int foo ()
+{
+ std::decimal::decimal64 x(0);
+ bar (x);
+}
+
+// { dg-final { scan-assembler "_Z3barRKDd:" } }
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/dfp/mangle-1.C dist.nbsd/gcc/testsuite/g++.dg/dfp/mangle-1.C
--- dist/gcc/testsuite/g++.dg/dfp/mangle-1.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/dfp/mangle-1.C Wed Nov 7 11:47:32 2012
@@ -0,0 +1,40 @@
+// { dg-do compile }
+
+// Mangling of classes from std::decimal are special-cased.
+// Derived from g++.dg/abi/mangle13.C.
+
+namespace std {
+ namespace decimal {
+ class decimal64 {
+ public:
+ typedef float __decfloat64 __attribute__ ((mode (DD)));
+ explicit decimal64 (float __r):__val (__r) {}
+ private:
+ __decfloat64 __val;
+ };
+ }
+}
+
+struct A {
+ template <typename T> std::decimal::decimal64 f ();
+ std::decimal::decimal64 operator+();
+ operator std::decimal::decimal64 ();
+ template <typename T>
+ std::decimal::decimal64 operator-();
+};
+
+typedef std::decimal::decimal64 (A::*P)();
+
+template <P> struct S {};
+
+template <typename T> void g (S<&T::template f<std::decimal::decimal64> >) {}
+template <typename T> void g (S<&T::operator+ >) {}
+template <typename T> void g (S<&T::operator std::decimal::decimal64>) {}
+template <typename T> void g (S<&T::template operator- <std::decimal::decimal64> >) {}
+
+template void g<A> (S<&A::f<std::decimal::decimal64> >);
+template void g<A> (S<&A::operator+>);
+template void g<A> (S<&A::operator std::decimal::decimal64>);
+
+// { dg-final { scan-assembler "\n?_Z1gI1AEv1SIXadsrT_1fIDdEEE\[: \t\n\]" } }
+// { dg-final { scan-assembler "\n?_Z1gI1AEv1SIXadsrT_plEE\[: \t\n\]" } }
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/dfp/mangle-2.C dist.nbsd/gcc/testsuite/g++.dg/dfp/mangle-2.C
--- dist/gcc/testsuite/g++.dg/dfp/mangle-2.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/dfp/mangle-2.C Wed Nov 7 11:47:32 2012
@@ -0,0 +1,28 @@
+// { dg-do compile }
+
+// Mangling of classes from std::decimal are special-cased.
+// Derived from g++.dg/abi/mangle15.C.
+
+namespace std {
+ namespace decimal {
+ class decimal64 {
+ public:
+ typedef float __decfloat64 __attribute__ ((mode (DD)));
+ explicit decimal64 (float __r):__val (__r) {}
+ private:
+ __decfloat64 __val;
+ };
+ }
+}
+
+struct A {
+ template <typename T> std::decimal::decimal64 f ();
+};
+
+typedef std::decimal::decimal64 (A::*P)();
+
+template <P> struct S {};
+
+void g (S<&A::f<std::decimal::decimal64> >) {}
+
+// { dg-final { scan-assembler "\n?_Z1g1SIXadL_ZN1A1fIDdEEDdvEEE\[: \t\n\]" } }
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/dfp/mangle-3.C dist.nbsd/gcc/testsuite/g++.dg/dfp/mangle-3.C
--- dist/gcc/testsuite/g++.dg/dfp/mangle-3.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/dfp/mangle-3.C Wed Nov 7 11:47:32 2012
@@ -0,0 +1,28 @@
+// { dg-do compile }
+
+// Mangling of classes from std::decimal are special-cased.
+// Derived from g++.dg/abi/mangle20-1.C.
+
+namespace std {
+ namespace decimal {
+ class decimal64 {
+ public:
+ typedef float __decfloat64 __attribute__ ((mode (DD)));
+ explicit decimal64 (int __r):__val (__r) {}
+ private:
+ __decfloat64 __val;
+ };
+ }
+}
+
+template <int I> void f(std::decimal::decimal64 (*)[2]) {}
+template <int I> void g(std::decimal::decimal64 (*)[I+2]) {}
+
+static const std::decimal::decimal64 I(1);
+static const std::decimal::decimal64 J(2);
+
+template void f<1>(std::decimal::decimal64 (*)[2]);
+template void g<1>(std::decimal::decimal64 (*)[3]);
+
+// { dg-final { scan-assembler "\n_?_Z1fILi1EEvPA2_Dd\[: \t\n\]" } }
+// { dg-final { scan-assembler "\n_?_Z1gILi1EEvPAplT_Li2E_Dd\[: \t\n\]" } }
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/dfp/mangle-4.C dist.nbsd/gcc/testsuite/g++.dg/dfp/mangle-4.C
--- dist/gcc/testsuite/g++.dg/dfp/mangle-4.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/dfp/mangle-4.C Wed Nov 7 11:47:32 2012
@@ -0,0 +1,35 @@
+// { dg-do compile }
+
+// Mangling of classes from std::decimal are special-cased.
+// Derived from g++.dg/abi/mangle30.C.
+
+namespace std {
+ namespace decimal {
+ class decimal64 {
+ public:
+ typedef float __decfloat64 __attribute__ ((mode (DD)));
+ explicit decimal64 (int __r):__val (__r) {}
+ private:
+ __decfloat64 __val;
+ };
+ }
+}
+
+struct A
+{
+ template <class T>
+ struct B
+ {
+ typedef T myT;
+ };
+};
+
+template <class T>
+void f (T t, typename T::template B<std::decimal::decimal64>::myT u, typename T::template B<int>::myT v);
+
+void foo ()
+{
+ f (A(), std::decimal::decimal64(0), 1);
+}
+
+// { dg-final { scan-assembler "_Z1fI1AEvT_NS1_1BIDdE3myTENS2_IiE3myTE" } }
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/dfp/mangle-5.C dist.nbsd/gcc/testsuite/g++.dg/dfp/mangle-5.C
--- dist/gcc/testsuite/g++.dg/dfp/mangle-5.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/dfp/mangle-5.C Wed Nov 7 11:47:32 2012
@@ -0,0 +1,29 @@
+// { dg-do compile }
+
+// Mangling of classes from std::decimal are special-cased.
+// Derived from g++.dg/abi/mangle35.C.
+
+namespace std {
+ namespace decimal {
+ class decimal128 {
+ public:
+ typedef float __decfloat128 __attribute__ ((mode (TD)));
+ explicit decimal128 (int __r):__val (__r) {}
+ private:
+ __decfloat128 __val;
+ };
+ }
+}
+
+template<void (*)()> struct A {};
+
+template<typename> void foo();
+
+template<typename T> A<foo<T> > bar();
+
+void baz()
+{
+ bar<std::decimal::decimal128>();
+}
+
+// { dg-final { scan-assembler "_Z3barIDeE1AIX3fooIT_EEEv" } }
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/eh/cond5.C dist.nbsd/gcc/testsuite/g++.dg/eh/cond5.C
--- dist/gcc/testsuite/g++.dg/eh/cond5.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/eh/cond5.C Wed Nov 7 11:47:33 2012
@@ -0,0 +1,43 @@
+// PR c++/49165
+// { dg-do run }
+
+extern "C" void abort ();
+
+int
+foo (bool x, int y)
+{
+ if (y < 10 && (x ? true : throw 1))
+ y++;
+ if (y > 20 || (x ? true : throw 2))
+ y++;
+ return y;
+}
+
+int
+main ()
+{
+ if (foo (true, 0) != 2
+ || foo (true, 10) != 11
+ || foo (false, 30) != 31)
+ abort ();
+ try
+ {
+ foo (false, 0);
+ abort ();
+ }
+ catch (int i)
+ {
+ if (i != 1)
+ abort ();
+ }
+ try
+ {
+ foo (false, 10);
+ abort ();
+ }
+ catch (int i)
+ {
+ if (i != 2)
+ abort ();
+ }
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/eh/cond6.C dist.nbsd/gcc/testsuite/g++.dg/eh/cond6.C
--- dist/gcc/testsuite/g++.dg/eh/cond6.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/eh/cond6.C Wed Nov 7 11:47:33 2012
@@ -0,0 +1,43 @@
+// PR c++/49165
+// { dg-do run }
+
+extern "C" void abort ();
+
+int
+foo (bool x, int y)
+{
+ if (y < 10 && (x ? 1 : throw 1))
+ y++;
+ if (y > 20 || (x ? 1 : throw 2))
+ y++;
+ return y;
+}
+
+int
+main ()
+{
+ if (foo (true, 0) != 2
+ || foo (true, 10) != 11
+ || foo (false, 30) != 31)
+ abort ();
+ try
+ {
+ foo (false, 0);
+ abort ();
+ }
+ catch (int i)
+ {
+ if (i != 1)
+ abort ();
+ }
+ try
+ {
+ foo (false, 10);
+ abort ();
+ }
+ catch (int i)
+ {
+ if (i != 2)
+ abort ();
+ }
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/gcov/gcov-2.C dist.nbsd/gcc/testsuite/g++.dg/gcov/gcov-2.C
--- dist/gcc/testsuite/g++.dg/gcov/gcov-2.C Wed Nov 7 13:39:55 2012
+++ dist.nbsd/gcc/testsuite/g++.dg/gcov/gcov-2.C Wed Nov 7 11:47:32 2012
@@ -20,7 +20,7 @@
void foo()
{
- C c; /* count(2) */
+ C c; /* count(1) */
c.seti (1); /* count(1) */
}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/init/new30.C dist.nbsd/gcc/testsuite/g++.dg/init/new30.C
--- dist/gcc/testsuite/g++.dg/init/new30.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/init/new30.C Wed Nov 7 11:47:32 2012
@@ -0,0 +1,15 @@
+// PR c++/40975
+
+struct data_type
+{
+ // constructor required to reproduce compiler bug
+ data_type() {}
+};
+
+struct ptr_type
+{
+ // array new as default argument required to reproduce compiler bug
+ ptr_type (data_type* ptr = new data_type[1]) { delete[] ptr; }
+};
+
+ptr_type obj;
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/init/new32.C dist.nbsd/gcc/testsuite/g++.dg/init/new32.C
--- dist/gcc/testsuite/g++.dg/init/new32.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/init/new32.C Wed Nov 7 11:47:32 2012
@@ -0,0 +1,16 @@
+// PR c++/48873
+
+#include <new>
+
+struct D {
+private:
+ ~D();
+};
+
+template<class T>
+T& create();
+
+void f()
+{
+ D* dp = new (((void*) 0)) D(create<D>()); // #
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/init/value9.C dist.nbsd/gcc/testsuite/g++.dg/init/value9.C
--- dist/gcc/testsuite/g++.dg/init/value9.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/init/value9.C Wed Nov 7 11:47:32 2012
@@ -0,0 +1,32 @@
+// PR c++/50793
+// { dg-do run }
+
+struct NonTrivial
+{
+ NonTrivial() { }
+};
+
+struct S
+{
+ NonTrivial nt;
+ int i;
+};
+
+int f(S s)
+{
+ s.i = 0xdeadbeef;
+ return s.i;
+}
+
+int g(S s = S())
+{
+ return s.i;
+}
+
+int main()
+{
+ f(S()); // make stack dirty
+
+ if ( g() )
+ __builtin_abort();
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/init/vbase1.C dist.nbsd/gcc/testsuite/g++.dg/init/vbase1.C
--- dist/gcc/testsuite/g++.dg/init/vbase1.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/init/vbase1.C Wed Nov 7 11:47:32 2012
@@ -0,0 +1,39 @@
+// PR c++/50618
+// { dg-do run }
+
+struct Base
+{
+ const int text;
+ Base():text(1) {}
+ Base(int aText)
+ : text(aText) {}
+};
+struct SubA : public virtual Base
+{
+protected:
+ int x;
+public:
+ SubA(int aX)
+ : x(aX) {}
+};
+class SubB : public virtual Base
+{};
+struct Diamond : public SubA, public SubB
+{
+ Diamond(int text)
+ : Base(text), SubA(5), SubB() {}
+
+ void printText()
+ {
+ if(text != 2)
+ __builtin_abort();
+ if(x!=5)
+ __builtin_abort();
+ }
+};
+
+int main(int, char**)
+{
+ Diamond x(2);
+ x.printText();
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/ipa/pr51759.C dist.nbsd/gcc/testsuite/g++.dg/ipa/pr51759.C
--- dist/gcc/testsuite/g++.dg/ipa/pr51759.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/ipa/pr51759.C Wed Nov 7 11:47:33 2012
@@ -0,0 +1,26 @@
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+extern "C" void abort (void);
+struct S
+{
+ void __attribute__((noinline)) set(unsigned val)
+ {
+ data = val;
+ if (data != val)
+ abort ();
+ }
+ int pad0;
+ unsigned pad1 : 8;
+ unsigned data : 24;
+ int pad2;
+};
+int main()
+{
+ S s;
+ s.pad2 = -1;
+ s.set(0);
+ if (s.pad2 != -1)
+ abort ();
+}
+
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/other/pr49133.C dist.nbsd/gcc/testsuite/g++.dg/other/pr49133.C
--- dist/gcc/testsuite/g++.dg/other/pr49133.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/other/pr49133.C Wed Nov 7 11:47:33 2012
@@ -0,0 +1,37 @@
+/* { dg-do run { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
+/* { dg-require-effective-target sse2_runtime } */
+
+#include <xmmintrin.h>
+
+extern "C" void abort ();
+
+typedef double double_a __attribute__((__may_alias__));
+
+struct V
+{
+ __m128d data;
+};
+
+int
+main()
+{
+ V a;
+ __m128d b;
+
+ b = _mm_set_pd (1., 0.);
+ a.data = _mm_set_pd (1., 0.);
+ a.data = _mm_add_pd (a.data,
+ _mm_and_pd (_mm_cmpeq_pd (a.data, _mm_set1_pd (0.)),
+ _mm_set1_pd (2.)));
+ reinterpret_cast<double_a *>(&a.data)[1] += 1.;
+ b = _mm_add_pd (b, _mm_and_pd (_mm_cmpeq_pd (b, _mm_set1_pd (0.)),
+ _mm_set1_pd (1.)));
+ b = _mm_add_pd (b, _mm_and_pd (_mm_cmpeq_pd (b, _mm_set1_pd (1.)),
+ _mm_set1_pd (1.)));
+ if (_mm_movemask_pd (_mm_cmpeq_pd (a.data, b)) != 0x3)
+ abort();
+
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/other/pr50464.C dist.nbsd/gcc/testsuite/g++.dg/other/pr50464.C
--- dist/gcc/testsuite/g++.dg/other/pr50464.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/other/pr50464.C Wed Nov 7 11:47:33 2012
@@ -0,0 +1,170 @@
+// { dg-do compile { target i?86-*-* x86_64-*-* } }
+// { dg-options "-O3 -mxop" }
+
+typedef long unsigned int size_t;
+typedef unsigned long ulong_t;
+typedef signed long slong_t;
+
+ template<typename _Iterator>
+ struct iterator_traits
+ {
+ typedef typename _Iterator::reference reference;
+ };
+
+ template<typename _Tp>
+ struct iterator_traits<_Tp*>
+ {
+ typedef _Tp& reference;
+ };
+
+ template<typename _Iterator, typename _Container>
+ class __normal_iterator
+ {
+ protected:
+ _Iterator _M_current;
+ typedef iterator_traits<_Iterator> __traits_type;
+
+ public:
+ typedef typename __traits_type::reference reference;
+
+ explicit
+ __normal_iterator(const _Iterator& __i) : _M_current(__i) { }
+
+ reference
+ operator*() const
+ { return *_M_current; }
+
+ __normal_iterator&
+ operator++()
+ {
+ ++_M_current;
+ return *this;
+ }
+
+ const _Iterator&
+ base() const
+ { return _M_current; }
+ };
+
+ template<typename _Iterator, typename _Container>
+ inline bool
+ operator!=(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() != __rhs.base(); }
+
+ template<typename _Tp>
+ class allocator
+ {
+ public:
+ typedef _Tp* pointer;
+ typedef _Tp value_type;
+
+ template<typename _Tp1>
+ struct rebind
+ { typedef allocator<_Tp1> other; };
+
+ pointer allocate(size_t __n, const void* = 0)
+ {
+ return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
+ }
+ };
+
+ template<typename _Tp, typename _Alloc>
+ struct _Vector_base
+ {
+ typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
+
+ struct _Vector_impl
+ : public _Tp_alloc_type
+ {
+ typename _Tp_alloc_type::pointer _M_start;
+ typename _Tp_alloc_type::pointer _M_finish;
+ typename _Tp_alloc_type::pointer _M_end_of_storage;
+
+ _Vector_impl(_Tp_alloc_type const& __a) { }
+ };
+
+ public:
+ typedef _Alloc allocator_type;
+
+ _Vector_base(size_t __n, const allocator_type& __a)
+ : _M_impl(__a)
+ {
+ this->_M_impl._M_start = this->_M_allocate(__n);
+ this->_M_impl._M_finish = this->_M_impl._M_start;
+ this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
+ }
+
+ public:
+ _Vector_impl _M_impl;
+
+ typename _Tp_alloc_type::pointer
+ _M_allocate(size_t __n)
+ { return __n != 0 ? _M_impl.allocate(__n) : 0; }
+
+ };
+
+ template<typename _Tp, typename _Alloc = allocator<_Tp> >
+ class vector : protected _Vector_base<_Tp, _Alloc>
+ {
+ typedef _Vector_base<_Tp, _Alloc> _Base;
+ typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
+
+ public:
+ typedef _Tp value_type;
+ typedef typename _Tp_alloc_type::pointer pointer;
+ typedef __normal_iterator<pointer, vector> iterator;
+ typedef _Alloc allocator_type;
+
+ protected:
+ using _Base::_M_allocate;
+ using _Base::_M_impl;
+
+ public:
+
+ explicit
+ vector(size_t __n, const value_type& __value = value_type(),
+ const allocator_type& __a = allocator_type())
+ : _Base(__n, __a)
+ { _M_fill_initialize(__n, __value); }
+
+ iterator begin()
+ { return iterator(this->_M_impl._M_start); }
+
+ iterator end()
+ { return iterator(this->_M_impl._M_finish); }
+
+ protected:
+ void
+ _M_fill_initialize(size_t __n, const value_type& __value)
+ {
+ this->_M_impl._M_finish = this->_M_impl._M_end_of_storage;
+ }
+ };
+
+ template<typename _InputIterator, typename _OutputIterator, typename _Tp>
+ _OutputIterator
+ replace_copy(_InputIterator __first, _InputIterator __last,
+ _OutputIterator __result,
+ const _Tp& __old_value, const _Tp& __new_value)
+ {
+ ;
+ for (; __first != __last; ++__first, ++__result)
+ if (*__first == __old_value)
+ *__result = __new_value;
+ else
+ *__result = *__first;
+ return __result;
+ }
+
+extern size_t shape_rank;
+
+void createDataspaceIdentifier()
+{
+ vector< ulong_t > dataspaceDims( shape_rank );
+ vector< ulong_t > maxDataspaceDims( shape_rank );
+
+ replace_copy(
+ dataspaceDims.begin(), dataspaceDims.end(),
+ maxDataspaceDims.begin(), ulong_t( 0 ), ((ulong_t)(slong_t)(-1)) );
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/parse/ambig6.C dist.nbsd/gcc/testsuite/g++.dg/parse/ambig6.C
--- dist/gcc/testsuite/g++.dg/parse/ambig6.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/parse/ambig6.C Wed Nov 7 11:47:31 2012
@@ -0,0 +1,12 @@
+// PR c++/48046
+
+namespace N1 { typedef int T; } // { dg-error "" }
+namespace N2 { typedef float T; } // { dg-error "" }
+
+int main()
+{
+ using namespace N1;
+ using namespace N2;
+
+ static T t; // { dg-error "" }
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/pr48660.C dist.nbsd/gcc/testsuite/g++.dg/pr48660.C
--- dist/gcc/testsuite/g++.dg/pr48660.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/pr48660.C Wed Nov 7 11:47:32 2012
@@ -0,0 +1,22 @@
+template<int N> struct val { char a[N]; };
+
+class Base
+{
+public:
+ virtual val<1> get1() const = 0;
+ virtual val<2> get2() const = 0;
+ virtual val<3> get3() const = 0;
+ virtual val<4> get4() const = 0;
+};
+
+class Derived : public virtual Base
+{
+public:
+ virtual val<1> get1() const { return foo->get1(); }
+ virtual val<2> get2() const { return foo->get2(); }
+ virtual val<3> get3() const { return foo->get3(); }
+ virtual val<4> get4() const { return foo->get4(); }
+ Base *foo;
+};
+
+Base* make() { return new Derived; }
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/rtti/anon-ns1.C dist.nbsd/gcc/testsuite/g++.dg/rtti/anon-ns1.C
--- dist/gcc/testsuite/g++.dg/rtti/anon-ns1.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/rtti/anon-ns1.C Wed Nov 7 11:47:32 2012
@@ -0,0 +1,15 @@
+// PR c++/49440
+// The typeinfo name for A should start with * so we compare
+// it by address rather than contents.
+
+// { dg-final { scan-assembler "\"\*N\[^\"\]+1AE" } }
+
+namespace
+{
+ class A { };
+}
+
+void f()
+{
+ throw A();
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/template/nontype23.C dist.nbsd/gcc/testsuite/g++.dg/template/nontype23.C
--- dist/gcc/testsuite/g++.dg/template/nontype23.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/template/nontype23.C Wed Nov 7 11:47:31 2012
@@ -0,0 +1,9 @@
+// PR c++/48936
+
+template <bool C> int foo (void);
+template <class T> struct S
+{
+ static const unsigned int a = sizeof (T);
+ enum { c = sizeof (foo <(a == 0)> ()) };
+};
+S<int> x;
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/torture/pr47714.C dist.nbsd/gcc/testsuite/g++.dg/torture/pr47714.C
--- dist/gcc/testsuite/g++.dg/torture/pr47714.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/torture/pr47714.C Wed Nov 7 11:47:33 2012
@@ -0,0 +1,16 @@
+struct A { virtual ~A () {} };
+struct B { virtual ~B () {} };
+struct C { virtual const A *foo (int) const = 0; };
+struct E : public B, public A { };
+struct F : public C
+{
+ virtual const E *foo (int) const;
+};
+void bar (int &);
+
+const E *
+F::foo (int x) const
+{
+ bar (x);
+ return __null;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/torture/pr49039.C dist.nbsd/gcc/testsuite/g++.dg/torture/pr49039.C
--- dist/gcc/testsuite/g++.dg/torture/pr49039.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/torture/pr49039.C Wed Nov 7 11:47:33 2012
@@ -0,0 +1,76 @@
+// PR tree-optimization/49039
+// { dg-do run }
+
+template <class T1, class T2>
+struct pair
+{
+ T1 first;
+ T2 second;
+ pair (const T1 & a, const T2 & b):first (a), second (b) {}
+};
+
+template <class T1, class T2>
+inline pair <T1, T2>
+make_pair (T1 x, T2 y)
+{
+ return pair <T1, T2> (x, y);
+}
+
+typedef __SIZE_TYPE__ size_t;
+struct S
+{
+ const char *Data;
+ size_t Length;
+ static size_t min (size_t a, size_t b) { return a < b ? a : b; }
+ static size_t max (size_t a, size_t b) { return a > b ? a : b; }
+ S () :Data (0), Length (0) { }
+ S (const char *Str) : Data (Str), Length (__builtin_strlen (Str)) {}
+ S (const char *data, size_t length) : Data (data), Length (length) {}
+ bool empty () const { return Length == 0; }
+ size_t size () const { return Length; }
+ S slice (size_t Start, size_t End) const
+ {
+ Start = min (Start, Length);
+ End = min (max (Start, End), Length);
+ return S (Data + Start, End - Start);
+ }
+ pair <S, S> split (char Separator) const
+ {
+ size_t Idx = find (Separator);
+ if (Idx == ~size_t (0))
+ return make_pair (*this, S ());
+ return make_pair (slice (0, Idx), slice (Idx + 1, ~size_t (0)));
+ }
+ size_t find (char C, size_t From = 0) const
+ {
+ for (size_t i = min (From, Length), e = Length; i != e; ++i)
+ if (Data[i] == C)
+ return i;
+ return ~size_t (0);
+ }
+};
+
+void
+Test (const char *arg)
+{
+ S Desc (arg);
+ while (!Desc.empty ())
+ {
+ pair <S, S> Split = Desc.split ('-');
+ S Token = Split.first;
+ Desc = Split.second;
+ if (Token.empty ())
+ continue;
+ Split = Token.split (':');
+ S Specifier = Split.first;
+ if (Specifier.empty ())
+ __builtin_abort ();
+ }
+}
+
+int
+main ()
+{
+ Test ("-");
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/torture/pr49115.C dist.nbsd/gcc/testsuite/g++.dg/torture/pr49115.C
--- dist/gcc/testsuite/g++.dg/torture/pr49115.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/torture/pr49115.C Wed Nov 7 11:47:33 2012
@@ -0,0 +1,25 @@
+// { dg-do run }
+
+extern "C" void abort (void);
+struct MyException {};
+struct Data {
+ int nr;
+ Data() : nr(66) {}
+};
+Data __attribute__((noinline,noclone)) getData(int i)
+{
+ if (i) throw MyException();
+ Data data;
+ data.nr = i;
+ return data;
+}
+int main(int, char **)
+{
+ Data data;
+ try {
+ data = getData(1);
+ } catch (MyException& e) {
+ if (data.nr != 66)
+ abort ();
+ }
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/torture/pr49615.C dist.nbsd/gcc/testsuite/g++.dg/torture/pr49615.C
--- dist/gcc/testsuite/g++.dg/torture/pr49615.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/torture/pr49615.C Wed Nov 7 11:47:33 2012
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-g" } */
+
+template <class T>
+static inline bool Dispatch (T* obj, void (T::*func) ())
+{
+ (obj->*func) ();
+}
+class C
+{
+ bool f (int);
+ void g ();
+};
+bool C::f (int n)
+{
+ bool b;
+ switch (n)
+ {
+ case 0:
+ b = Dispatch (this, &C::g);
+ case 1:
+ b = Dispatch (this, &C::g);
+ }
+}
+void C::g ()
+{
+ for (;;) { }
+}
+
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/torture/pr49644.C dist.nbsd/gcc/testsuite/g++.dg/torture/pr49644.C
--- dist/gcc/testsuite/g++.dg/torture/pr49644.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/torture/pr49644.C Wed Nov 7 11:47:33 2012
@@ -0,0 +1,17 @@
+// PR c/49644
+// { dg-do run }
+
+extern "C" void abort ();
+
+int
+main ()
+{
+ _Complex double a[12], *c = a, s = 3.0 + 1.0i;
+ double b[12] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, *d = b;
+ int i;
+ for (i = 0; i < 6; i++)
+ *c++ = *d++ * s;
+ if (c != a + 6 || d != b + 6)
+ abort ();
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/torture/pr50189.C dist.nbsd/gcc/testsuite/g++.dg/torture/pr50189.C
--- dist/gcc/testsuite/g++.dg/torture/pr50189.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/torture/pr50189.C Wed Nov 7 11:47:33 2012
@@ -0,0 +1,120 @@
+// { dg-do run }
+
+extern "C" void abort (void);
+class CCUTILS_KeyedScalarLevelPosition
+{
+public:
+
+ typedef enum
+ {
+ UNINITED = 0,
+ AT_BEGIN = 1,
+ AT_END = 2,
+ AT_KEY = 3
+
+ } position_t;
+
+ bool is_init() const
+ { return(m_timestamp != UNINITED); }
+
+ bool is_at_begin() const
+ { return(m_timestamp == AT_BEGIN); }
+
+ position_t get_state() const
+ {
+ return((m_timestamp >= AT_KEY)
+ ? AT_KEY
+ : ((position_t)m_timestamp));
+ }
+
+ void set_at_begin()
+ { m_timestamp = AT_BEGIN; }
+
+ unsigned int get_index() const
+ { return(m_index); }
+
+ void set_pos(unsigned int a_index, unsigned int a_timestmap)
+ {
+ m_index = a_index;
+ m_timestamp = a_timestmap;
+ }
+
+ bool check_pos(unsigned int a_num_entries, unsigned int a_timestamp) const
+ {
+ if (get_state() != AT_KEY)
+ return(false);
+
+ if (m_timestamp != a_timestamp)
+ return(false);
+
+ return(m_index < a_num_entries);
+ }
+
+ void set_not_init()
+ { m_timestamp = 0; }
+
+private:
+
+ unsigned int m_timestamp;
+ unsigned int m_index;
+
+};
+
+class CCUTILS_KeyedScalarPosition
+{
+public:
+
+ CCUTILS_KeyedScalarLevelPosition m_L1;
+ CCUTILS_KeyedScalarLevelPosition m_L2;
+};
+
+class baz
+{
+public:
+ int *n[20];
+ unsigned int m_cur_array_len;
+ unsigned int m_timestamp;
+
+ unsigned int _get_timestamp() const
+ { return(m_timestamp); }
+
+ bool _check_L1_pos(const CCUTILS_KeyedScalarPosition &a_position) const
+ {
+ return(a_position.m_L1.check_pos(
+ m_cur_array_len, _get_timestamp()));
+ }
+
+ void *next (CCUTILS_KeyedScalarPosition &);
+};
+
+void * baz::next (CCUTILS_KeyedScalarPosition &a_position)
+{
+ if (a_position.m_L1.is_at_begin() || (!a_position.m_L1.is_init()))
+ {
+ a_position.m_L1.set_pos(0, _get_timestamp());
+ a_position.m_L2.set_at_begin();
+ }
+ else if (!_check_L1_pos(a_position))
+ return(0);
+
+ return n[a_position.m_L1.get_index ()];
+}
+
+int main (int, char **)
+{
+ baz obj;
+ CCUTILS_KeyedScalarPosition a_pos;
+ void *ret;
+ int n[5];
+
+ obj.n[0] = n;
+ obj.m_cur_array_len = 1;
+ obj.m_timestamp = 42;
+
+ a_pos.m_L1.set_pos (0, 42);
+
+ ret = obj.next (a_pos);
+ if (ret == 0)
+ abort ();
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/torture/pr51344.C dist.nbsd/gcc/testsuite/g++.dg/torture/pr51344.C
--- dist/gcc/testsuite/g++.dg/torture/pr51344.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/torture/pr51344.C Wed Nov 7 11:47:33 2012
@@ -0,0 +1,11 @@
+/* { dg-do compile { target { i?86-*-* && ilp32 } } } */
+class A;
+
+template <class T>
+class B
+{
+ friend __attribute__((cdecl)) A& operator >>(A& a, B& b)
+ {
+ return a;
+ }
+};
diff -rNU3 -x *.info dist/gcc/testsuite/g++.dg/tree-ssa/pr49911.C dist.nbsd/gcc/testsuite/g++.dg/tree-ssa/pr49911.C
--- dist/gcc/testsuite/g++.dg/tree-ssa/pr49911.C Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/g++.dg/tree-ssa/pr49911.C Wed Nov 7 11:47:33 2012
@@ -0,0 +1,41 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-rtti -fno-exceptions -fno-strict-aliasing -fdump-tree-vrp2" } */
+
+
+extern void JS_Assert();
+typedef enum {
+eax, ecx, edx, ebx, esp, ebp,
+esi, edi }
+RegisterID;
+union StateRemat {
+ RegisterID reg_;
+ int offset_;
+};
+static StateRemat FromRegister(RegisterID reg) {
+ StateRemat sr;
+ sr.reg_ = reg;
+ return sr;
+}
+static StateRemat FromAddress3(int address) {
+ StateRemat sr;
+ sr.offset_ = address;
+ //sr.offset_ = 0;
+ if (address < 46 && address >= 0) {
+ JS_Assert();
+ }
+ return sr;
+}
+struct FrameState {
+ StateRemat dataRematInfo2(bool y, int z) {
+ if (y) return FromRegister(RegisterID(1));
+ return FromAddress3(z);
+ }
+};
+FrameState frame;
+StateRemat x;
+void jsop_setelem(bool y, int z) {
+ x = frame.dataRematInfo2(y, z);
+}
+
+/* { dg-final { scan-tree-dump-times "Folding predicate.*45" 0 "vrp2"} } */
+/* { dg-final { cleanup-tree-dump "vrp2" } } */
diff -rNU3 -x *.info dist/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog dist.nbsd/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
--- dist/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog Wed Nov 7 13:39:49 2012
+++ dist.nbsd/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog Wed Nov 7 11:47:28 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c dist.nbsd/gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c
--- dist/gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c Wed Nov 7 11:47:30 2012
@@ -0,0 +1,56 @@
+/* Inspired by the test case for PR middle-end/52640. */
+
+typedef struct
+{
+ char *value;
+} REFERENCE;
+
+/* Add a few "extern int Xxxxxx ();" declarations. */
+#undef DEF
+#undef LIM1
+#undef LIM2
+#undef LIM3
+#undef LIM4
+#undef LIM5
+#undef LIM6
+#define DEF(x) extern int x ()
+#define LIM1(x) DEF(x##0); DEF(x##1); DEF(x##2); DEF(x##3); DEF(x##4); \
+ DEF(x##5); DEF(x##6); DEF(x##7); DEF(x##8); DEF(x##9);
+#define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \
+ LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9)
+#define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \
+ LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9)
+#define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \
+ LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9)
+#define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \
+ LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9)
+#define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \
+ LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9)
+LIM5 (X);
+
+/* Add references to them, or GCC will simply ignore the extern decls. */
+#undef DEF
+#undef LIM1
+#undef LIM2
+#undef LIM3
+#undef LIM4
+#undef LIM5
+#undef LIM6
+#define DEF(x) (char *) x
+#define LIM1(x) DEF(x##0), DEF(x##1), DEF(x##2), DEF(x##3), DEF(x##4), \
+ DEF(x##5), DEF(x##6), DEF(x##7), DEF(x##8), DEF(x##9),
+#define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \
+ LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9)
+#define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \
+ LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9)
+#define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \
+ LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9)
+#define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \
+ LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9)
+#define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \
+ LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9)
+REFERENCE references[] = {
+ LIM5 (X)
+ 0
+};
+
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/compile/pr38752.c dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr38752.c
--- dist/gcc/testsuite/gcc.c-torture/compile/pr38752.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr38752.c Wed Nov 7 11:47:30 2012
@@ -0,0 +1,25 @@
+typedef struct
+{
+ int baddr;
+} mstruct_t;
+
+static struct
+{
+ unsigned int mapnum;
+ mstruct_t unused;
+} mtab;
+
+static mstruct_t *mactab = &mtab.unused;
+
+int
+main(void)
+{
+ int i;
+ int addr;
+
+ for (i=1; i <= mtab.mapnum; i++)
+ if (addr < mactab[i].baddr)
+ break;
+ return 0;
+}
+
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/compile/pr48742.c dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr48742.c
--- dist/gcc/testsuite/gcc.c-torture/compile/pr48742.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr48742.c Wed Nov 7 11:47:30 2012
@@ -0,0 +1,15 @@
+/* PR c/48742 */
+
+void baz (int);
+
+int
+foo (void)
+{
+ return 1 / 0 > 0;
+}
+
+void
+bar (void)
+{
+ baz (1 <= 2 % (3 >> 1 > 5 / 6 == 3));
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/compile/pr49238.c dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr49238.c
--- dist/gcc/testsuite/gcc.c-torture/compile/pr49238.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr49238.c Wed Nov 7 11:47:30 2012
@@ -0,0 +1,18 @@
+/* PR target/49238 */
+extern int bar (void);
+
+void
+foo (unsigned long long a, int b)
+{
+ int i;
+
+ if (b)
+ for (a = -12; a >= 10; a = bar ())
+ break;
+ else
+ return;
+
+ for (i = 0; i < 10; i += 10)
+ if ((i == bar ()) | (bar () >= a))
+ bar ();
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/compile/pr50565-1.c dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr50565-1.c
--- dist/gcc/testsuite/gcc.c-torture/compile/pr50565-1.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr50565-1.c Wed Nov 7 11:47:30 2012
@@ -0,0 +1,4 @@
+struct s { char p[2]; };
+static struct s v;
+const int o0 = (int) ((void *) &v.p[0] - (void *) &v) + 0U;
+const int o1 = (int) ((void *) &v.p[0] - (void *) &v) + 1U;
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/compile/pr50565-2.c dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr50565-2.c
--- dist/gcc/testsuite/gcc.c-torture/compile/pr50565-2.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr50565-2.c Wed Nov 7 11:47:30 2012
@@ -0,0 +1,4 @@
+struct s { char p[2]; };
+static struct s v;
+const int o0 = (int) ((void *) &v.p[0] - (void *) &v) + 0;
+const int o1 = (int) ((void *) &v.p[0] - (void *) &v) + 1;
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/compile/pr51767.c dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr51767.c
--- dist/gcc/testsuite/gcc.c-torture/compile/pr51767.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr51767.c Wed Nov 7 11:47:30 2012
@@ -0,0 +1,23 @@
+/* PR rtl-optimization/51767 */
+
+extern void fn1 (void), fn2 (void);
+
+static inline __attribute__((always_inline)) int
+foo (int *x, long y)
+{
+ asm goto ("" : : "r" (x), "r" (y) : "memory" : lab);
+ return 0;
+lab:
+ return 1;
+}
+
+void
+bar (int *x)
+{
+ if (foo (x, 23))
+ fn1 ();
+ else
+ fn2 ();
+
+ foo (x, 2);
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/compile/pr53418-1.c dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr53418-1.c
--- dist/gcc/testsuite/gcc.c-torture/compile/pr53418-1.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr53418-1.c Wed Nov 7 11:47:30 2012
@@ -0,0 +1,5 @@
+void
+f (void)
+{
+ int i = (0 ? 1 : 0U / 0);
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/compile/pr53418-2.c dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr53418-2.c
--- dist/gcc/testsuite/gcc.c-torture/compile/pr53418-2.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/compile/pr53418-2.c Wed Nov 7 11:47:30 2012
@@ -0,0 +1,5 @@
+void
+f (void)
+{
+ int i = (1 ? 0U / 0 : 1);
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/execute/20120111-1.c dist.nbsd/gcc/testsuite/gcc.c-torture/execute/20120111-1.c
--- dist/gcc/testsuite/gcc.c-torture/execute/20120111-1.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/execute/20120111-1.c Wed Nov 7 11:47:29 2012
@@ -0,0 +1,18 @@
+#include <stdlib.h>
+#include <stdint.h>
+
+uint32_t f0a (uint64_t arg2) __attribute__((noinline));
+
+uint32_t
+f0a (uint64_t arg)
+{
+ return ~(arg > -3);
+}
+
+int main() {
+ uint32_t r1;
+ r1 = f0a (12094370573988097329ULL);
+ if (r1 != ~0U)
+ abort ();
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/execute/20120427-1.c dist.nbsd/gcc/testsuite/gcc.c-torture/execute/20120427-1.c
--- dist/gcc/testsuite/gcc.c-torture/execute/20120427-1.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/execute/20120427-1.c Wed Nov 7 11:47:29 2012
@@ -0,0 +1,36 @@
+typedef struct sreal
+{
+ unsigned sig; /* Significant. */
+ int exp; /* Exponent. */
+} sreal;
+
+sreal_compare (sreal *a, sreal *b)
+{
+ if (a->exp > b->exp)
+ return 1;
+ if (a->exp < b->exp)
+ return -1;
+ if (a->sig > b->sig)
+ return 1;
+ return -(a->sig < b->sig);
+}
+
+sreal a[] = {
+ { 0, 0 },
+ { 1, 0 },
+ { 0, 1 },
+ { 1, 1 }
+};
+
+int main()
+{
+ int i, j;
+ for (i = 0; i <= 3; i++) {
+ for (j = 0; j < 3; j++) {
+ if (i < j && sreal_compare(&a[i], &a[j]) != -1) abort();
+ if (i == j && sreal_compare(&a[i], &a[j]) != 0) abort();
+ if (i > j && sreal_compare(&a[i], &a[j]) != 1) abort();
+ }
+ }
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/execute/960321-1.x dist.nbsd/gcc/testsuite/gcc.c-torture/execute/960321-1.x
--- dist/gcc/testsuite/gcc.c-torture/execute/960321-1.x Wed Nov 7 13:39:53 2012
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/execute/960321-1.x Thu Jan 1 00:00:00 1970
@@ -1,15 +0,0 @@
-# This test fails to link on 64-bit Solaris 2/x86 due to a Sun as bug.
-if { [istarget "i?86-*-solaris2*"]
- && ! [check_effective_target_ilp32]
- && ! [check_effective_target_gas] } {
- set torture_eval_before_compile {
- global compiler_conditional_xfail_data
- set compiler_conditional_xfail_data {
- "64-bit Sun as bug" \
- { "i?86-*-solaris2*" } \
- { "-O[1-3s]" } \
- { "" }
- }
- }
-}
-return 0
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/execute/doloop-1.c dist.nbsd/gcc/testsuite/gcc.c-torture/execute/doloop-1.c
--- dist/gcc/testsuite/gcc.c-torture/execute/doloop-1.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/execute/doloop-1.c Wed Nov 7 11:47:29 2012
@@ -0,0 +1,18 @@
+#include <limits.h>
+
+extern void exit (int);
+extern void abort (void);
+
+volatile unsigned int i;
+
+int
+main (void)
+{
+ unsigned char z = 0;
+
+ do ++i;
+ while (--z > 0);
+ if (i != UCHAR_MAX + 1U)
+ abort ();
+ exit (0);
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/execute/doloop-2.c dist.nbsd/gcc/testsuite/gcc.c-torture/execute/doloop-2.c
--- dist/gcc/testsuite/gcc.c-torture/execute/doloop-2.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/execute/doloop-2.c Wed Nov 7 11:47:29 2012
@@ -0,0 +1,18 @@
+#include <limits.h>
+
+extern void exit (int);
+extern void abort (void);
+
+volatile unsigned int i;
+
+int
+main (void)
+{
+ unsigned short z = 0;
+
+ do ++i;
+ while (--z > 0);
+ if (i != USHRT_MAX + 1U)
+ abort ();
+ exit (0);
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/execute/pr48809.c dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr48809.c
--- dist/gcc/testsuite/gcc.c-torture/execute/pr48809.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr48809.c Wed Nov 7 11:47:29 2012
@@ -0,0 +1,60 @@
+/* PR tree-optimization/48809 */
+
+extern void abort (void);
+
+int
+foo (signed char x)
+{
+ int y = 0;
+ switch (x)
+ {
+ case 0: y = 1; break;
+ case 1: y = 7; break;
+ case 2: y = 2; break;
+ case 3: y = 19; break;
+ case 4: y = 5; break;
+ case 5: y = 17; break;
+ case 6: y = 31; break;
+ case 7: y = 8; break;
+ case 8: y = 28; break;
+ case 9: y = 16; break;
+ case 10: y = 31; break;
+ case 11: y = 12; break;
+ case 12: y = 15; break;
+ case 13: y = 111; break;
+ case 14: y = 17; break;
+ case 15: y = 10; break;
+ case 16: y = 31; break;
+ case 17: y = 7; break;
+ case 18: y = 2; break;
+ case 19: y = 19; break;
+ case 20: y = 5; break;
+ case 21: y = 107; break;
+ case 22: y = 31; break;
+ case 23: y = 8; break;
+ case 24: y = 28; break;
+ case 25: y = 106; break;
+ case 26: y = 31; break;
+ case 27: y = 102; break;
+ case 28: y = 105; break;
+ case 29: y = 111; break;
+ case 30: y = 17; break;
+ case 31: y = 10; break;
+ case 32: y = 31; break;
+ case 98: y = 18; break;
+ case -62: y = 19; break;
+ }
+ return y;
+}
+
+int
+main ()
+{
+ if (foo (98) != 18 || foo (97) != 0 || foo (99) != 0)
+ abort ();
+ if (foo (-62) != 19 || foo (-63) != 0 || foo (-61) != 0)
+ abort ();
+ if (foo (28) != 105 || foo (27) != 102 || foo (29) != 111)
+ abort ();
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/execute/pr48973-1.c dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr48973-1.c
--- dist/gcc/testsuite/gcc.c-torture/execute/pr48973-1.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr48973-1.c Wed Nov 7 11:47:29 2012
@@ -0,0 +1,20 @@
+/* PR middle-end/48973 */
+
+extern void abort (void);
+struct S { int f : 1; } s;
+int v = -1;
+
+void
+foo (unsigned int x)
+{
+ if (x != -1U)
+ abort ();
+}
+
+int
+main ()
+{
+ s.f = (v & 1) > 0;
+ foo (s.f);
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/execute/pr48973-2.c dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr48973-2.c
--- dist/gcc/testsuite/gcc.c-torture/execute/pr48973-2.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr48973-2.c Wed Nov 7 11:47:29 2012
@@ -0,0 +1,14 @@
+/* PR middle-end/48973 */
+
+extern void abort (void);
+struct S { int f : 1; } s;
+int v = -1;
+
+int
+main ()
+{
+ s.f = v < 0;
+ if ((unsigned int) s.f != -1U)
+ abort ();
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/execute/pr49039.c dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr49039.c
--- dist/gcc/testsuite/gcc.c-torture/execute/pr49039.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr49039.c Wed Nov 7 11:47:28 2012
@@ -0,0 +1,26 @@
+/* PR tree-optimization/49039 */
+extern void abort (void);
+int cnt;
+
+__attribute__((noinline, noclone)) void
+foo (unsigned int x, unsigned int y)
+{
+ unsigned int minv, maxv;
+ if (x == 1 || y == -2U)
+ return;
+ minv = x < y ? x : y;
+ maxv = x > y ? x : y;
+ if (minv == 1)
+ ++cnt;
+ if (maxv == -2U)
+ ++cnt;
+}
+
+int
+main ()
+{
+ foo (-2U, 1);
+ if (cnt != 2)
+ abort ();
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/execute/pr49161.c dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr49161.c
--- dist/gcc/testsuite/gcc.c-torture/execute/pr49161.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr49161.c Wed Nov 7 11:47:29 2012
@@ -0,0 +1,46 @@
+/* PR tree-optimization/49161 */
+
+extern void abort (void);
+
+int c;
+
+__attribute__((noinline, noclone)) void
+bar (int x)
+{
+ if (x != c++)
+ abort ();
+}
+
+__attribute__((noinline, noclone)) void
+foo (int x)
+{
+ switch (x)
+ {
+ case 3: goto l1;
+ case 4: goto l2;
+ case 6: goto l3;
+ default: return;
+ }
+l1:
+ goto l4;
+l2:
+ goto l4;
+l3:
+ bar (-1);
+l4:
+ bar (0);
+ if (x != 4)
+ bar (1);
+ if (x != 3)
+ bar (-1);
+ bar (2);
+}
+
+int
+main ()
+{
+ foo (3);
+ if (c != 3)
+ abort ();
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/execute/pr49186.c dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr49186.c
--- dist/gcc/testsuite/gcc.c-torture/execute/pr49186.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr49186.c Wed Nov 7 11:47:29 2012
@@ -0,0 +1,15 @@
+/* PR target/49186 */
+extern void abort (void);
+
+int
+main ()
+{
+ int x;
+ unsigned long long uv = 0x1000000001ULL;
+
+ x = (uv < 0x80) ? 1 : ((uv < 0x800) ? 2 : 3);
+ if (x != 3)
+ abort ();
+
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/execute/pr49279.c dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr49279.c
--- dist/gcc/testsuite/gcc.c-torture/execute/pr49279.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr49279.c Wed Nov 7 11:47:28 2012
@@ -0,0 +1,35 @@
+/* PR tree-optimization/49279 */
+extern void abort (void);
+
+struct S { int a; int *__restrict p; };
+
+__attribute__((noinline, noclone))
+struct S *bar (struct S *p)
+{
+ struct S *r;
+ asm volatile ("" : "=r" (r) : "0" (p) : "memory");
+ return r;
+}
+
+__attribute__((noinline, noclone))
+int
+foo (int *p, int *q)
+{
+ struct S s, *t;
+ s.a = 1;
+ s.p = p;
+ t = bar (&s);
+ t->p = q;
+ s.p[0] = 0;
+ t->p[0] = 1;
+ return s.p[0];
+}
+
+int
+main ()
+{
+ int a, b;
+ if (foo (&a, &b) != 1)
+ abort ();
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.c-torture/execute/pr49644.c dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr49644.c
--- dist/gcc/testsuite/gcc.c-torture/execute/pr49644.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.c-torture/execute/pr49644.c Wed Nov 7 11:47:29 2012
@@ -0,0 +1,16 @@
+/* PR c/49644 */
+
+extern void abort (void);
+
+int
+main ()
+{
+ _Complex double a[12], *c = a, s = 3.0 + 1.0i;
+ double b[12] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, *d = b;
+ int i;
+ for (i = 0; i < 6; i++)
+ *c++ = *d++ * s;
+ if (c != a + 6 || d != b + 6)
+ abort ();
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/cpp/#cmdlne-M-2.h dist.nbsd/gcc/testsuite/gcc.dg/cpp/#cmdlne-M-2.h
--- dist/gcc/testsuite/gcc.dg/cpp/#cmdlne-M-2.h Wed Nov 7 13:39:45 2012
+++ dist.nbsd/gcc/testsuite/gcc.dg/cpp/#cmdlne-M-2.h Thu Jan 1 00:00:00 1970
@@ -1 +0,0 @@
-/* empty */
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/delay-slot-2.c dist.nbsd/gcc/testsuite/gcc.dg/delay-slot-2.c
--- dist/gcc/testsuite/gcc.dg/delay-slot-2.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/delay-slot-2.c Wed Nov 7 11:47:35 2012
@@ -0,0 +1,116 @@
+/* PR rtl-optimization/51187 */
+/* Reported by Jurij Smakov <jurij@wooyd.org> */
+
+/* { dg-do compile } */
+/* { dg-options "-g -O2" } */
+
+extern int printf (__const char *__restrict __format, ...);
+extern void print_c_condition (const char *);
+
+enum decision_type
+{
+ DT_num_insns,
+ DT_mode, DT_code, DT_veclen,
+ DT_elt_zero_int, DT_elt_one_int, DT_elt_zero_wide, DT_elt_zero_wide_safe,
+ DT_const_int,
+ DT_veclen_ge, DT_dup, DT_pred, DT_c_test,
+ DT_accept_op, DT_accept_insn
+};
+
+struct decision_test
+{
+ struct decision_test *next;
+ enum decision_type type;
+
+ union
+ {
+ int num_insns;
+
+ struct
+ {
+ const char *name;
+ } pred;
+
+ const char *c_test;
+ int veclen;
+ int dup;
+ long intval;
+ int opno;
+
+ struct {
+ int code_number;
+ int lineno;
+ int num_clobbers_to_add;
+ } insn;
+ } u;
+};
+
+enum routine_type {
+ RECOG, SPLIT, PEEPHOLE2
+};
+
+void
+write_cond (struct decision_test *p, int depth,
+ enum routine_type subroutine_type)
+{
+ switch (p->type)
+ {
+ case DT_num_insns:
+ printf ("peep2_current_count >= %d", p->u.num_insns);
+ break;
+
+ case DT_code:
+ printf ("GET_CODE (x%d) == ", depth);
+ break;
+
+ case DT_veclen:
+ printf ("XVECLEN (x%d, 0) == %d", depth, p->u.veclen);
+ break;
+
+ case DT_elt_zero_int:
+ printf ("XINT (x%d, 0) == %d", depth, (int) p->u.intval);
+ break;
+
+ case DT_elt_one_int:
+ printf ("XINT (x%d, 1) == %d", depth, (int) p->u.intval);
+ break;
+
+ case DT_elt_zero_wide:
+ case DT_elt_zero_wide_safe:
+ printf ("XWINT (x%d, 0) == ", depth);
+ print_host_wide_int (p->u.intval);
+ break;
+
+ case DT_const_int:
+ printf ("x%d == const_int_rtx[MAX_SAVED_CONST_INT + (%d)]",
+ depth, (int) p->u.intval);
+ break;
+
+ case DT_veclen_ge:
+ printf ("XVECLEN (x%d, 0) >= %d", depth, p->u.veclen);
+ break;
+
+ case DT_dup:
+ printf ("rtx_equal_p (x%d, operands[%d])", depth, p->u.dup);
+ break;
+
+ case DT_pred:
+ printf ("%s (x%d)", p->u.pred.name, depth);
+ break;
+
+ case DT_c_test:
+ print_c_condition (p->u.c_test);
+ break;
+
+ case DT_accept_insn:
+ ((void)(__builtin_expect(!(subroutine_type == RECOG), 0) ? __builtin_unreachable(), 0 : 0));
+ ((void)(__builtin_expect(!(p->u.insn.num_clobbers_to_add), 0) ? __builtin_unreachable(), 0 : 0));
+ printf ("pnum_clobbers != NULL");
+ break;
+
+ default:
+ __builtin_unreachable();
+ }
+}
+
+/* { dg-final { scan-assembler "printf" } } */
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/dfp/pr52140.c dist.nbsd/gcc/testsuite/gcc.dg/dfp/pr52140.c
--- dist/gcc/testsuite/gcc.dg/dfp/pr52140.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/dfp/pr52140.c Wed Nov 7 11:47:35 2012
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O1" } */
+
+/* This used to result in an ICE. */
+
+int
+foo (_Decimal64 x, _Decimal64 y)
+{
+ return (x < y) || (x > y);
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/gomp/pr49640.c dist.nbsd/gcc/testsuite/gcc.dg/gomp/pr49640.c
--- dist/gcc/testsuite/gcc.dg/gomp/pr49640.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/gomp/pr49640.c Wed Nov 7 11:47:34 2012
@@ -0,0 +1,29 @@
+/* PR middle-end/49640 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -std=gnu99 -fopenmp" } */
+
+void
+foo (int N, int M, int K, int P, int Q, int R, int i, int j, int k,
+ unsigned char x[P][Q][R], int y[N][M][K])
+{
+ int ii, jj, kk;
+
+#pragma omp parallel for private(ii,jj,kk)
+ for (ii = 0; ii < P; ++ii)
+ for (jj = 0; jj < Q; ++jj)
+ for (kk = 0; kk < R; ++kk)
+ y[i + ii][j + jj][k + kk] = x[ii][jj][kk];
+}
+
+void
+bar (int N, int M, int K, int P, int Q, int R, int i, int j, int k,
+ unsigned char x[P][Q][R], float y[N][M][K], float factor, float zero)
+{
+ int ii, jj, kk;
+
+#pragma omp parallel for private(ii,jj,kk)
+ for (ii = 0; ii < P; ++ii)
+ for (jj = 0; jj < Q; ++jj)
+ for (kk = 0; kk < R; ++kk)
+ y[i + ii][j + jj][k + kk] = factor * x[ii][jj][kk] + zero;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/ipa/pr45644.c dist.nbsd/gcc/testsuite/gcc.dg/ipa/pr45644.c
--- dist/gcc/testsuite/gcc.dg/ipa/pr45644.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/ipa/pr45644.c Wed Nov 7 11:47:37 2012
@@ -0,0 +1,35 @@
+/* Verify that we do not IPA-SRA bitfields. */
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+extern void abort (void);
+
+struct S
+{
+ int j : 8;
+ int i : 24;
+ int l;
+};
+
+static int __attribute__((noinline)) foo (struct S *s)
+{
+ int z = s->i;
+ if (z != 777)
+ abort ();
+ return 0;
+}
+
+int __attribute__((noinline)) bar (struct S *s)
+{
+ return foo (s);
+}
+
+int main (int argc, char *argv[])
+{
+ struct S s;
+ s.j = 5;
+ s.i = 777;
+ s.l = -1;
+
+ return bar (&s);
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/noncompile/pr52290.c dist.nbsd/gcc/testsuite/gcc.dg/noncompile/pr52290.c
--- dist/gcc/testsuite/gcc.dg/noncompile/pr52290.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/noncompile/pr52290.c Wed Nov 7 11:47:37 2012
@@ -0,0 +1,3 @@
+/* { dg-error "undeclared here" "" { target *-*-* } 3 } */
+/* { dg-error "expected" "" { target *-*-* } 3 } */
+int f()[j]
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/pr48685.c dist.nbsd/gcc/testsuite/gcc.dg/pr48685.c
--- dist/gcc/testsuite/gcc.dg/pr48685.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/pr48685.c Wed Nov 7 11:47:34 2012
@@ -0,0 +1,11 @@
+/* PR c/48685 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int
+main ()
+{
+ int v = 1;
+ (void) (1 == 2 ? (void) 0 : (v = 0));
+ return v;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/pr48774.c dist.nbsd/gcc/testsuite/gcc.dg/pr48774.c
--- dist/gcc/testsuite/gcc.dg/pr48774.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/pr48774.c Wed Nov 7 11:47:37 2012
@@ -0,0 +1,38 @@
+/* PR target/48774 */
+/* { dg-do run } */
+/* { dg-options "-O2 -funroll-loops" } */
+
+extern void abort (void);
+unsigned long int s[24]
+ = { 12, ~1, 12, ~2, 12, ~4, 12, ~8, 12, ~16, 12, ~32,
+ 12, ~64, 12, ~128, 12, ~256, 12, ~512, 12, ~1024, 12, ~2048 };
+struct { int n; unsigned long *e[12]; } g
+ = { 12, { &s[0], &s[2], &s[4], &s[6], &s[8], &s[10], &s[12], &s[14],
+ &s[16], &s[18], &s[20], &s[22] } };
+int c[12];
+
+__attribute__((noinline, noclone)) void
+foo (void)
+{
+ int i, j;
+ for (i = 0; i < g.n; i++)
+ for (j = 0; j < g.n; j++)
+ {
+ if (i == j && j < g.e[0][0] && (g.e[i][1] & (1UL << j)))
+ abort ();
+ if (j < g.e[0][0] && (g.e[i][1] & (1UL << j)))
+ c[i]++;
+ }
+}
+
+int
+main ()
+{
+ int i;
+ asm volatile ("" : "+m" (s), "+m" (g), "+m" (c));
+ foo ();
+ for (i = 0; i < 12; i++)
+ if (c[i] != 11)
+ abort ();
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/pr48837.c dist.nbsd/gcc/testsuite/gcc.dg/pr48837.c
--- dist/gcc/testsuite/gcc.dg/pr48837.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/pr48837.c Wed Nov 7 11:47:34 2012
@@ -0,0 +1,30 @@
+/* PR tree-optimization/48837 */
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+void abort (void);
+
+__attribute__((noinline))
+int baz(void)
+{
+ return 1;
+}
+
+inline const int *bar(const int *a, const int *b)
+{
+ return *a ? a : b;
+}
+
+int foo(int a, int b)
+{
+ return a || b ? baz() : foo(*bar(&a, &b), 1) + foo(1, 0);
+}
+
+int main(void)
+{
+ if (foo(0, 0) != 2)
+ abort();
+
+ return 0;
+}
+
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/pr49120.c dist.nbsd/gcc/testsuite/gcc.dg/pr49120.c
--- dist/gcc/testsuite/gcc.dg/pr49120.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/pr49120.c Wed Nov 7 11:47:37 2012
@@ -0,0 +1,11 @@
+/* PR c/49120 */
+/* { dg-do compile } */
+/* { dg-options "-Wall" } */
+
+int
+main ()
+{
+ int a = 1;
+ int c = ({ char b[a + 1]; b[0] = 0; b[0]; });
+ return c;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/pr49307.c dist.nbsd/gcc/testsuite/gcc.dg/pr49307.c
--- dist/gcc/testsuite/gcc.dg/pr49307.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/pr49307.c Wed Nov 7 11:47:35 2012
@@ -0,0 +1,21 @@
+/* PR target/49307 */
+/* { dg-do compile } */
+/* { dg-options "-O -fpic -fstack-protector" } */
+/* { dg-require-effective-target fpic } */
+/* { dg-require-effective-target fstack_protector } */
+
+extern void bar (char **pp, void *vp);
+extern void free (void *p);
+
+int
+foo (void)
+{
+ char *p;
+ char fext[128];
+
+ p = fext;
+ bar (&p, (void *)0);
+ if (p)
+ free (p);
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/pr49619.c dist.nbsd/gcc/testsuite/gcc.dg/pr49619.c
--- dist/gcc/testsuite/gcc.dg/pr49619.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/pr49619.c Wed Nov 7 11:47:37 2012
@@ -0,0 +1,13 @@
+/* PR rtl-optimization/49619 */
+/* { dg-do compile } */
+/* { dg-options "-O -fno-tree-fre" } */
+
+extern int a, b;
+
+void
+foo (int x)
+{
+ a = 2;
+ b = 0;
+ b = (a && ((a = 1, 0 >= b) || (short) (x + (b & x))));
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/pr51408.c dist.nbsd/gcc/testsuite/gcc.dg/pr51408.c
--- dist/gcc/testsuite/gcc.dg/pr51408.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/pr51408.c Wed Nov 7 11:47:37 2012
@@ -0,0 +1,22 @@
+/* This testcase used to fail because of a bug in
+ arm.md:*minmax_arithsi. */
+
+/* { dg-do run } */
+/* { dg-options "-O1" } */
+
+extern void abort (void);
+
+int __attribute__((noinline))
+foo (int a, int b)
+{
+ int max = (b > 0) ? b : 0;
+ return max - a;
+}
+
+int
+main (void)
+{
+ if (foo (3, -1) != -3)
+ abort ();
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/pr51821.c dist.nbsd/gcc/testsuite/gcc.dg/pr51821.c
--- dist/gcc/testsuite/gcc.dg/pr51821.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/pr51821.c Wed Nov 7 11:47:34 2012
@@ -0,0 +1,25 @@
+/* { dg-do run } */
+/* { dg-options "-std=c99 -O2" } */
+/* { dg-options "-std=c99 -O2 -msse" { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-require-effective-target sse_runtime { target { i?86-*-* x86_64-*-* } } } */
+
+extern void abort (void);
+
+unsigned int __attribute__((noinline))
+test (int shift_size)
+{
+ unsigned long long res = ~0;
+
+ return res << shift_size;
+}
+
+int
+main ()
+{
+ int dst = 32;
+
+ if (test (dst) != 0)
+ abort ();
+
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/pr52139.c dist.nbsd/gcc/testsuite/gcc.dg/pr52139.c
--- dist/gcc/testsuite/gcc.dg/pr52139.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/pr52139.c Wed Nov 7 11:47:35 2012
@@ -0,0 +1,49 @@
+/* PR rtl-optimization/52139 */
+/* { dg-do compile } */
+/* { dg-options "-O -fno-tree-dominator-opts -fno-tree-fre" } */
+/* { dg-options "-O -fno-tree-dominator-opts -fno-tree-fre -fpic" { target fpic } } */
+
+void *p;
+
+void
+foo (int a)
+{
+ switch (a)
+ {
+ case 0:
+ a0:
+ case 1:
+ a1:
+ p = &&a1;
+ case 2:
+ a2:
+ p = &&a2;
+ case 3:
+ a3:
+ p = &&a3;
+ case 4:
+ a4:
+ p = &&a4;
+ case 5:
+ a5:
+ p = &&a5;
+ case 6:
+ a6:
+ p = &&a6;
+ case 7:
+ a7:
+ p = &&a7;
+ case 8:
+ a8:
+ p = &&a8;
+ case 9:
+ a9:
+ p = &&a9;
+ case 10:
+ a10:
+ p = &&a10;
+ default:
+ p = &&a0;
+ }
+ goto *p;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/torture/pr48542.c dist.nbsd/gcc/testsuite/gcc.dg/torture/pr48542.c
--- dist/gcc/testsuite/gcc.dg/torture/pr48542.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/torture/pr48542.c Wed Nov 7 11:47:37 2012
@@ -0,0 +1,57 @@
+/* { dg-do run } */
+/* The return-address was clobbered. */
+#include <stdlib.h>
+#include <setjmp.h>
+
+jmp_buf env;
+extern void sub(void);
+extern void sub3(void);
+int called;
+__attribute__ ((__noinline__))
+int sjtest()
+{
+ int i;
+ if (setjmp(env))
+ return 99;
+
+ for (i = 0; i < 10; i++)
+ sub();
+
+ longjmp(env, 1);
+}
+
+__attribute__ ((__noinline__))
+void sub(void)
+{
+ called++;
+}
+
+int called3;
+__attribute__ ((__noinline__))
+int sjtest3()
+{
+ int i;
+ if (setjmp(env))
+ return 42;
+
+ for (i = 0; i < 10; i++)
+ sub3();
+ return 0;
+}
+
+__attribute__ ((__noinline__))
+void sub3(void)
+{
+ called3++;
+ if (called3 == 10)
+ longjmp (env, 1);
+}
+
+int main(void)
+{
+ if (sjtest() != 99 || called != 10)
+ abort();
+ if (sjtest3() != 42 || called3 != 10)
+ abort();
+ exit (0);
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/torture/pr48822.c dist.nbsd/gcc/testsuite/gcc.dg/torture/pr48822.c
--- dist/gcc/testsuite/gcc.dg/torture/pr48822.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/torture/pr48822.c Wed Nov 7 11:47:37 2012
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+
+void foo (int *, int *);
+int bar ()
+{
+ int a = 0;
+ int b = 0;
+ if (b != 0)
+ {
+ int ax = a;
+ int bx = b;
+ while (bx != 0)
+ {
+ int tem = ax % bx;
+ ax = bx;
+ bx = tem;
+ }
+ }
+ foo (&a, &b);
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/torture/pr49651.c dist.nbsd/gcc/testsuite/gcc.dg/torture/pr49651.c
--- dist/gcc/testsuite/gcc.dg/torture/pr49651.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/torture/pr49651.c Wed Nov 7 11:47:37 2012
@@ -0,0 +1,31 @@
+/* { dg-do run } */
+
+extern void abort (void);
+
+struct X {
+ int *p;
+ int *q;
+};
+
+void __attribute__((noinline, noclone))
+foo (struct X x) { *x.q = 0; }
+
+volatile int what;
+struct X y;
+
+int main()
+{
+ int i, j;
+ struct X x, *p;
+ x.p = &i;
+ x.q = &j;
+ if (what)
+ p = &y;
+ else
+ p = &x;
+ j = 1;
+ foo (*p);
+ if (j != 0)
+ abort ();
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/torture/pr51106-1.c dist.nbsd/gcc/testsuite/gcc.dg/torture/pr51106-1.c
--- dist/gcc/testsuite/gcc.dg/torture/pr51106-1.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/torture/pr51106-1.c Wed Nov 7 11:47:37 2012
@@ -0,0 +1,14 @@
+/* PR target/51106 */
+/* { dg-do "compile" } */
+/* { dg-skip-if "RTL error" { "*-*-*" } { "-fno-fat-lto-objects" } { "" } } */
+
+int
+foo (int x)
+{
+ asm goto ("" : : "i" (x) : : lab); /* { dg-error "impossible constraint" } */
+ return 1;
+lab:
+ return 0;
+}
+
+/* { dg-warning "probably doesn.t match constraints" "" { target *-*-* } 8 } */
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/torture/pr51106-2.c dist.nbsd/gcc/testsuite/gcc.dg/torture/pr51106-2.c
--- dist/gcc/testsuite/gcc.dg/torture/pr51106-2.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/torture/pr51106-2.c Wed Nov 7 11:47:37 2012
@@ -0,0 +1,14 @@
+/* PR target/51106 */
+/* { dg-do "compile" } */
+/* { dg-skip-if "RTL error" { "*-*-*" } { "-fno-fat-lto-objects" } { "" } } */
+
+int
+bar (int x)
+{
+ asm goto ("" : : "i" (x) : : lab); /* { dg-error "impossible constraint" } */
+ __builtin_unreachable ();
+lab:
+ return 0;
+}
+
+/* { dg-warning "probably doesn.t match constraints" "" { target *-*-* } 8 } */
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/torture/pr52693.c dist.nbsd/gcc/testsuite/gcc.dg/torture/pr52693.c
--- dist/gcc/testsuite/gcc.dg/torture/pr52693.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/torture/pr52693.c Wed Nov 7 11:47:37 2012
@@ -0,0 +1,33 @@
+/* { dg-do run } */
+
+struct pair
+{
+ int x;
+ int y;
+};
+
+struct array
+{
+ struct pair elems[ 2 ];
+ unsigned index;
+};
+
+extern void abort ();
+
+void __attribute__ ((noinline,noclone))
+test_results (int x1, int y1, int x2, int y2)
+{
+ if (x1 != x2 || y1 != y2)
+ abort ();
+}
+
+int
+main (void)
+{
+ struct array arr = {{{1,2}, {3,4}}, 1};
+ struct pair last = arr.elems[arr.index];
+
+ test_results ( last.x, last.y, arr.elems[1].x, arr.elems[1].y);
+
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/tree-prof/pr44777.c dist.nbsd/gcc/testsuite/gcc.dg/tree-prof/pr44777.c
--- dist/gcc/testsuite/gcc.dg/tree-prof/pr44777.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/tree-prof/pr44777.c Wed Nov 7 11:47:34 2012
@@ -0,0 +1,43 @@
+/* PR middle-end/44777 */
+/* { dg-options "-O0" } */
+/* A variant of gcc.c-torture/execute/comp-goto-2.c. */
+
+extern void abort (void);
+extern void exit (int);
+
+#ifdef STACK_SIZE
+#define DEPTH ((STACK_SIZE) / 512 + 1)
+#else
+#define DEPTH 1000
+#endif
+
+#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES)
+int
+x (int a)
+{
+ __label__ xlab;
+ void y (int a)
+ {
+ void *x = &&llab;
+ if (a==-1)
+ goto *x;
+ if (a==0)
+ goto xlab;
+ llab:
+ y (a-1);
+ }
+ y (a);
+ xlab:;
+ return a;
+}
+#endif
+
+int
+main ()
+{
+#if ! defined (NO_LABEL_VALUES) && !defined (NO_TRAMPOLINES)
+ if (x (DEPTH) != DEPTH)
+ abort ();
+#endif
+ exit (0);
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/tree-ssa/pr49039.c dist.nbsd/gcc/testsuite/gcc.dg/tree-ssa/pr49039.c
--- dist/gcc/testsuite/gcc.dg/tree-ssa/pr49039.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/tree-ssa/pr49039.c Wed Nov 7 11:47:35 2012
@@ -0,0 +1,31 @@
+/* PR tree-optimization/49039 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-vrp1" } */
+
+extern void bar (void);
+
+void
+foo (unsigned int x, unsigned int y)
+{
+ unsigned int minv, maxv;
+ if (x >= 3 && x <= 6)
+ return;
+ if (y >= 5 && y <= 8)
+ return;
+ minv = x < y ? x : y;
+ maxv = x > y ? x : y;
+ if (minv == 5)
+ bar ();
+ if (minv == 6)
+ bar ();
+ if (maxv == 5)
+ bar ();
+ if (maxv == 6)
+ bar ();
+}
+
+/* { dg-final { scan-tree-dump "Folding predicate minv_\[0-9\]* == 5 to 0" "vrp1" } } */
+/* { dg-final { scan-tree-dump "Folding predicate minv_\[0-9\]* == 6 to 0" "vrp1" } } */
+/* { dg-final { scan-tree-dump "Folding predicate maxv_\[0-9\]* == 5 to 0" "vrp1" } } */
+/* { dg-final { scan-tree-dump "Folding predicate maxv_\[0-9\]* == 6 to 0" "vrp1" } } */
+/* { dg-final { cleanup-tree-dump "vrp1" } } */
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/vect/pr48172.c dist.nbsd/gcc/testsuite/gcc.dg/vect/pr48172.c
--- dist/gcc/testsuite/gcc.dg/vect/pr48172.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/vect/pr48172.c Wed Nov 7 11:47:37 2012
@@ -0,0 +1,33 @@
+/* { dg-do run } */
+
+extern void *memset(void *s, int c, __SIZE_TYPE__ n);
+extern void abort (void);
+
+#define ASIZE 1028
+#define HALF (ASIZE/2)
+
+int main() {
+ unsigned int array[ASIZE];
+ int i;
+
+ memset(array, 0, sizeof(array));
+
+ /* initialize first half of the array */
+ for (i = 0; i < HALF; i++)
+ array[i] = i;
+
+ /* fill second half of array in by summing earlier elements of the array
+ gcc 4.5.1 and 4.5.2 incorrectly vectorize this loop! aray[1025] is left
+ at 0 for ASIZE=1028 */
+ for (i = 0; i < HALF-1; i++)
+ array[HALF+i] = array[2*i] + array[2*i + 1];
+
+ /* see if we have any failures */
+ for (i = 0; i < HALF - 1; i++)
+ if (array[HALF+i] != array[2*i] + array[2*i + 1])
+ abort ();
+
+ return 0;
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/vect/pr49038.c dist.nbsd/gcc/testsuite/gcc.dg/vect/pr49038.c
--- dist/gcc/testsuite/gcc.dg/vect/pr49038.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/vect/pr49038.c Wed Nov 7 11:47:38 2012
@@ -0,0 +1,42 @@
+#include <sys/mman.h>
+#include <stdio.h>
+
+#define COUNT 320
+#define MMAP_SIZE 0x10000
+#define ADDRESS 0x1122000000
+#define TYPE unsigned short
+
+#ifndef MAP_ANONYMOUS
+#define MAP_ANONYMOUS MAP_ANON
+#endif
+
+void __attribute__((noinline))
+foo (TYPE *__restrict a, TYPE *__restrict b)
+{
+ int n;
+
+ for (n = 0; n < COUNT; n++)
+ a[n] = b[n * 2];
+}
+
+int
+main (void)
+{
+ void *x;
+ size_t b_offset;
+
+ x = mmap ((void *) ADDRESS, MMAP_SIZE, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ if (x == MAP_FAILED)
+ {
+ perror ("mmap");
+ return 1;
+ }
+
+ b_offset = MMAP_SIZE - (2 * COUNT - 1) * sizeof (TYPE);
+ foo ((unsigned short *) x,
+ (unsigned short *) ((char *) x + b_offset));
+ return 0;
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c dist.nbsd/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c
--- dist/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c Wed Nov 7 11:47:37 2012
@@ -0,0 +1,116 @@
+/* { dg-require-effective-target vect_int } */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include "tree-vect.h"
+
+#define N 160
+
+typedef struct {
+ unsigned char a;
+ unsigned char b;
+ unsigned char c;
+ unsigned char d;
+ unsigned char e;
+ unsigned char f;
+ unsigned char g;
+ unsigned char h;
+} s;
+
+__attribute__ ((noinline)) int
+main1 (s *arr, int n)
+{
+ int i;
+ s *ptr = arr;
+ s res[N];
+ unsigned char x;
+
+ for (i = 0; i < N; i++)
+ {
+ res[i].a = 0;
+ res[i].b = 0;
+ res[i].c = 0;
+ res[i].d = 0;
+ res[i].e = 0;
+ res[i].f = 0;
+ res[i].g = 0;
+ res[i].h = 0;
+ __asm__ volatile ("");
+ }
+
+ /* Check peeling for gaps for unknown loop bound. */
+ for (i = 0; i < n; i++)
+ {
+ res[i].c = ptr->b + ptr->c;
+ x = ptr->c + ptr->f;
+ res[i].a = x + ptr->b;
+ res[i].d = ptr->b + ptr->c;
+ res[i].b = ptr->c;
+ res[i].f = ptr->f + ptr->e;
+ res[i].e = ptr->b + ptr->e;
+ res[i].h = ptr->c;
+ res[i].g = ptr->b + ptr->c;
+ ptr++;
+ }
+
+ /* check results: */
+ for (i = 0; i < n; i++)
+ {
+ if (res[i].c != arr[i].b + arr[i].c
+ || res[i].a != arr[i].c + arr[i].f + arr[i].b
+ || res[i].d != arr[i].b + arr[i].c
+ || res[i].b != arr[i].c
+ || res[i].f != arr[i].f + arr[i].e
+ || res[i].e != arr[i].b + arr[i].e
+ || res[i].h != arr[i].c
+ || res[i].g != arr[i].b + arr[i].c)
+ abort ();
+ }
+
+ /* Check also that we don't do more iterations than needed. */
+ for (i = n; i < N; i++)
+ {
+ if (res[i].c == arr[i].b + arr[i].c
+ || res[i].a == arr[i].c + arr[i].f + arr[i].b
+ || res[i].d == arr[i].b + arr[i].c
+ || res[i].b == arr[i].c
+ || res[i].f == arr[i].f + arr[i].e
+ || res[i].e == arr[i].b + arr[i].e
+ || res[i].h == arr[i].c
+ || res[i].g == arr[i].b + arr[i].c)
+ abort ();
+ }
+
+ return 0;
+}
+
+
+int main (void)
+{
+ int i;
+ s arr[N];
+
+ check_vect ();
+
+ for (i = 0; i < N; i++)
+ {
+ arr[i].a = 5;
+ arr[i].b = 6;
+ arr[i].c = 17;
+ arr[i].d = 3;
+ arr[i].e = 16;
+ arr[i].f = 16;
+ arr[i].g = 3;
+ arr[i].h = 56;
+ if (arr[i].a == 178)
+ abort();
+ }
+
+ main1 (arr, N-2);
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { cleanup-tree-dump "vect" } } */
+
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/arm/neon-vset_lanes8.c dist.nbsd/gcc/testsuite/gcc.target/arm/neon-vset_lanes8.c
--- dist/gcc/testsuite/gcc.target/arm/neon-vset_lanes8.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/arm/neon-vset_lanes8.c Wed Nov 7 11:47:40 2012
@@ -0,0 +1,21 @@
+/* Test the `vset_lane_s8' ARM Neon intrinsic. */
+
+/* { dg-do run } */
+/* { dg-require-effective-target arm_neon_hw } */
+/* { dg-options "-O0" } */
+/* { dg-add-options arm_neon } */
+
+#include "arm_neon.h"
+#include <stdlib.h>
+#include <string.h>
+
+int8x8_t x = { 1, 2, 3, 4, 5, 6, 7, 8 };
+int8x8_t y = { 1, 2, 3, 16, 5, 6, 7, 8 };
+
+int main (void)
+{
+ x = vset_lane_s8 (16, x, 3);
+ if (memcmp (&x, &y, sizeof (x)) != 0)
+ abort();
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/arm/pr48252.c dist.nbsd/gcc/testsuite/gcc.target/arm/pr48252.c
--- dist/gcc/testsuite/gcc.target/arm/pr48252.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/arm/pr48252.c Wed Nov 7 11:47:40 2012
@@ -0,0 +1,31 @@
+/* { dg-do run } */
+/* { dg-require-effective-target arm_neon_hw } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include "arm_neon.h"
+#include <stdlib.h>
+
+int main(void)
+{
+ uint8x8_t v1 = {1, 1, 1, 1, 1, 1, 1, 1};
+ uint8x8_t v2 = {2, 2, 2, 2, 2, 2, 2, 2};
+ uint8x8x2_t vd1, vd2;
+ union {uint8x8_t v; uint8_t buf[8];} d1, d2, d3, d4;
+ int i;
+
+ vd1 = vzip_u8(v1, vdup_n_u8(0));
+ vd2 = vzip_u8(v2, vdup_n_u8(0));
+
+ vst1_u8(d1.buf, vd1.val[0]);
+ vst1_u8(d2.buf, vd1.val[1]);
+ vst1_u8(d3.buf, vd2.val[0]);
+ vst1_u8(d4.buf, vd2.val[1]);
+
+ for (i = 0; i < 8; i++)
+ if ((i % 2 == 0 && d4.buf[i] != 2)
+ || (i % 2 == 1 && d4.buf[i] != 0))
+ abort ();
+
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/arm/pr51835.c dist.nbsd/gcc/testsuite/gcc.target/arm/pr51835.c
--- dist/gcc/testsuite/gcc.target/arm/pr51835.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/arm/pr51835.c Wed Nov 7 11:47:42 2012
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mfloat-abi=hard -mfpu=fpv4-sp-d16" } */
+/* { dg-require-effective-target arm_thumb2_ok } */
+
+int func1 (double d)
+{
+ return (int)d;
+}
+unsigned int func2 (double d)
+{
+ return (unsigned int)d;
+}
+
+/* { dg-final { scan-assembler-times "fmrrd\[\\t \]+r0,\[\\t \]*r1,\[\\t \]*d0" 2 } } */
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/i386/aes-avx-check.h dist.nbsd/gcc/testsuite/gcc.target/i386/aes-avx-check.h
--- dist/gcc/testsuite/gcc.target/i386/aes-avx-check.h Wed Nov 7 13:39:58 2012
+++ dist.nbsd/gcc/testsuite/gcc.target/i386/aes-avx-check.h Wed Nov 7 11:47:39 2012
@@ -3,6 +3,7 @@
#endif
#include <stdlib.h>
#include "cpuid.h"
+#include "avx-os-support.h"
static void aes_avx_test (void);
@@ -22,7 +23,9 @@
return 0;
/* Run AES + AVX test only if host has AES + AVX support. */
- if ((ecx & (bit_AVX | bit_AES)) == (bit_AVX | bit_AES))
+ if (((ecx & (bit_AVX | bit_OSXSAVE | bit_AES))
+ == (bit_AVX | bit_OSXSAVE | bit_AES))
+ && avx_os_support ())
{
do_test ();
#ifdef DEBUG
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/i386/avx-check.h dist.nbsd/gcc/testsuite/gcc.target/i386/avx-check.h
--- dist/gcc/testsuite/gcc.target/i386/avx-check.h Wed Nov 7 13:39:59 2012
+++ dist.nbsd/gcc/testsuite/gcc.target/i386/avx-check.h Wed Nov 7 11:47:39 2012
@@ -1,6 +1,7 @@
#include <stdlib.h>
#include "cpuid.h"
#include "m256-check.h"
+#include "avx-os-support.h"
static void avx_test (void);
@@ -20,7 +21,8 @@
return 0;
/* Run AVX test only if host has AVX support. */
- if ((ecx & (bit_AVX | bit_OSXSAVE)) == (bit_AVX | bit_OSXSAVE))
+ if (((ecx & (bit_AVX | bit_OSXSAVE)) == (bit_AVX | bit_OSXSAVE))
+ && avx_os_support ())
{
do_test ();
#ifdef DEBUG
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/i386/avx-os-support.h dist.nbsd/gcc/testsuite/gcc.target/i386/avx-os-support.h
--- dist/gcc/testsuite/gcc.target/i386/avx-os-support.h Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/i386/avx-os-support.h Wed Nov 7 11:47:39 2012
@@ -0,0 +1,10 @@
+/* Check if the OS supports executing AVX instructions. */
+
+static int
+avx_os_support (void)
+{
+ unsigned int eax, edx;
+
+ __asm__ ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0));
+ return (eax & 6) == 6;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h dist.nbsd/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
--- dist/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h Wed Nov 7 13:39:59 2012
+++ dist.nbsd/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h Wed Nov 7 11:47:39 2012
@@ -3,6 +3,7 @@
#endif
#include <stdlib.h>
#include "cpuid.h"
+#include "avx-os-support.h"
static void pclmul_avx_test (void);
@@ -22,7 +23,9 @@
return 0;
/* Run PCLMUL + AVX test only if host has PCLMUL + AVX support. */
- if ((ecx & (bit_AVX | bit_PCLMUL)) == (bit_AVX | bit_PCLMUL))
+ if (((ecx & (bit_AVX | bit_OSXSAVE | bit_PCLMUL))
+ == (bit_AVX | bit_OSXSAVE | bit_PCLMUL))
+ && avx_os_support ())
{
do_test ();
#ifdef DEBUG
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/i386/pr47780.c dist.nbsd/gcc/testsuite/gcc.target/i386/pr47780.c
--- dist/gcc/testsuite/gcc.target/i386/pr47780.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/i386/pr47780.c Wed Nov 7 11:47:39 2012
@@ -0,0 +1,14 @@
+/* PR debug/47780 */
+/* { dg-do compile } */
+/* { dg-options "-O -fgcse -fgcse-las -fstack-protector-all -fno-tree-ccp -fno-tree-dominator-opts -fcompare-debug -Wno-psabi" } */
+
+typedef int V2SF __attribute__ ((vector_size (128)));
+
+V2SF
+foo (int x, V2SF a)
+{
+ V2SF b = a + (V2SF) {};
+ while (x--)
+ a += b;
+ return a;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/i386/pr48708.c dist.nbsd/gcc/testsuite/gcc.target/i386/pr48708.c
--- dist/gcc/testsuite/gcc.target/i386/pr48708.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/i386/pr48708.c Wed Nov 7 11:47:39 2012
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse2" } */
+
+#include <emmintrin.h>
+
+typedef long long T __attribute__((may_alias));
+struct S { __m128i d; };
+
+__m128i
+foo (long long *x, struct S *y, __m128i *z)
+{
+ struct S s = *y;
+ ((T *) &s.d)[0] = *x;
+ return _mm_cmpeq_epi16 (s.d, *z);
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/i386/pr49920.c dist.nbsd/gcc/testsuite/gcc.target/i386/pr49920.c
--- dist/gcc/testsuite/gcc.target/i386/pr49920.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/i386/pr49920.c Wed Nov 7 11:47:39 2012
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+/* { dg-require-effective-target ilp32 } */
+
+typedef __SIZE_TYPE__ size_t;
+extern void *malloc (size_t);
+
+register unsigned int MR_mr0 asm ("esi");
+register unsigned int MR_mr1 asm ("edi");
+
+void ml_backend__ml_closure_gen_module11 (void)
+{
+ unsigned int MR_tempr1, MR_tempr2, MR_tempr3;
+
+ MR_tempr1 = (unsigned int)((char *) malloc (sizeof (unsigned int)) + 4);
+ MR_tempr3 = ((unsigned int *) MR_mr0)[0];
+
+ ((unsigned int *) (MR_tempr1 - 4))[0] = MR_tempr3;
+
+ MR_tempr2 = (unsigned int)((char *) malloc (2 * sizeof (unsigned int)));
+
+ ((unsigned int *) MR_tempr2)[1] = MR_tempr1;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/i386/pr50788.c dist.nbsd/gcc/testsuite/gcc.target/i386/pr50788.c
--- dist/gcc/testsuite/gcc.target/i386/pr50788.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/i386/pr50788.c Wed Nov 7 11:47:39 2012
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mavx -fpeel-loops -fstack-protector-all" } */
+
+typedef long long __m256i __attribute__ ((__vector_size__ (32)));
+typedef double __m256d __attribute__ ((__vector_size__ (32)));
+
+__m256d foo (__m256d *__P, __m256i __M)
+{
+ return __builtin_ia32_maskloadpd256 ( __P, __M);
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/i386/pr51393.c dist.nbsd/gcc/testsuite/gcc.target/i386/pr51393.c
--- dist/gcc/testsuite/gcc.target/i386/pr51393.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/i386/pr51393.c Wed Nov 7 11:47:40 2012
@@ -0,0 +1,22 @@
+/* { dg-do run } */
+/* { dg-require-effective-target avx } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-O -mavx" } */
+
+#include "avx-check.h"
+#include <immintrin.h>
+
+static void
+__attribute__((noinline))
+avx_test (void)
+{
+ long long in = 0x800000000ll;
+ long long out;
+
+ __m256i zero = _mm256_setzero_si256();
+ __m256i tmp = _mm256_insert_epi64 (zero, in, 0);
+ out = _mm256_extract_epi64(tmp, 0);
+
+ if (in != out)
+ abort ();
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/i386/pr52330.c dist.nbsd/gcc/testsuite/gcc.target/i386/pr52330.c
--- dist/gcc/testsuite/gcc.target/i386/pr52330.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/i386/pr52330.c Wed Nov 7 11:47:39 2012
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-options "-O0" } */
+
+void foo (int a)
+{
+ asm volatile ("# %H0" : : "r" (a)); /* { dg-error "not an offsettable" } */
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c dist.nbsd/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c
--- dist/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c Wed Nov 7 13:39:58 2012
+++ dist.nbsd/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c Wed Nov 7 11:47:39 2012
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-require-effective-target lp64 } */
-/* { dg-options "-O2 -msse4 -march=core2" } */
+/* { dg-options "-O2 -msse4 -march=core2 -dp" } */
#include <emmintrin.h>
@@ -10,4 +10,4 @@
return _mm_cvtsi64_si128 (b);
}
-/* { dg-final { scan-assembler "movq" } } */
+/* { dg-final { scan-assembler-times "\\*vec_concatv2di_rex64_sse4_1/3" 1 } } */
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/mips/reg-var-1.c dist.nbsd/gcc/testsuite/gcc.target/mips/reg-var-1.c
--- dist/gcc/testsuite/gcc.target/mips/reg-var-1.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/mips/reg-var-1.c Wed Nov 7 11:47:40 2012
@@ -0,0 +1,16 @@
+/* { dg-do run } */
+register int g asm ("$18");
+
+void __attribute__((noinline))
+test (void)
+{
+ g = g + 1;
+}
+
+int
+main (void)
+{
+ g = 2;
+ test ();
+ return g != 3;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/powerpc/altivec-34.c dist.nbsd/gcc/testsuite/gcc.target/powerpc/altivec-34.c
--- dist/gcc/testsuite/gcc.target/powerpc/altivec-34.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/powerpc/altivec-34.c Wed Nov 7 11:47:40 2012
@@ -0,0 +1,24 @@
+/* PR target/49621 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -maltivec" } */
+
+#include <altivec.h>
+
+int
+foo (void)
+{
+ vector unsigned a, b, c;
+ unsigned k = 1;
+
+ a = (vector unsigned) { 0, 0, 0, 1 };
+ b = c = (vector unsigned) { 0, 0, 0, 0 };
+
+ a = vec_add (a, vec_splats (k));
+ b = vec_add (b, a);
+ c = vec_sel (c, a, b);
+
+ if (vec_any_eq (b, c))
+ return 1;
+
+ return 0;
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c
--- dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c Wed Nov 7 11:47:40 2012
@@ -0,0 +1,48 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
+/* { dg-final { scan-assembler-times "lvlx" 19 } } */
+
+#include <altivec.h>
+
+typedef __vector signed char vsc;
+typedef __vector signed short vss;
+typedef __vector signed int vsi;
+typedef __vector unsigned char vuc;
+typedef __vector unsigned short vus;
+typedef __vector unsigned int vui;
+typedef __vector bool char vbc;
+typedef __vector bool short vbs;
+typedef __vector bool int vbi;
+typedef __vector float vsf;
+typedef __vector pixel vp;
+typedef signed char sc;
+typedef signed short ss;
+typedef signed int si;
+typedef signed long sl;
+typedef unsigned char uc;
+typedef unsigned short us;
+typedef unsigned int ui;
+typedef unsigned long ul;
+typedef float sf;
+
+vsc lc1(long a, void *p) { return __builtin_altivec_lvlx (a,p); }
+vsf llx01(long a, vsf *p) { return __builtin_vec_lvlx (a,p); }
+vsf llx02(long a, sf *p) { return __builtin_vec_lvlx (a,p); }
+vbi llx03(long a, vbi *p) { return __builtin_vec_lvlx (a,p); }
+vsi llx04(long a, vsi *p) { return __builtin_vec_lvlx (a,p); }
+vsi llx05(long a, si *p) { return __builtin_vec_lvlx (a,p); }
+vui llx06(long a, vui *p) { return __builtin_vec_lvlx (a,p); }
+vui llx07(long a, ui *p) { return __builtin_vec_lvlx (a,p); }
+vbs llx08(long a, vbs *p) { return __builtin_vec_lvlx (a,p); }
+vp llx09(long a, vp *p) { return __builtin_vec_lvlx (a,p); }
+vss llx10(long a, vss *p) { return __builtin_vec_lvlx (a,p); }
+vss llx11(long a, ss *p) { return __builtin_vec_lvlx (a,p); }
+vus llx12(long a, vus *p) { return __builtin_vec_lvlx (a,p); }
+vus llx13(long a, us *p) { return __builtin_vec_lvlx (a,p); }
+vbc llx14(long a, vbc *p) { return __builtin_vec_lvlx (a,p); }
+vsc llx15(long a, vsc *p) { return __builtin_vec_lvlx (a,p); }
+vsc llx16(long a, sc *p) { return __builtin_vec_lvlx (a,p); }
+vuc llx17(long a, vuc *p) { return __builtin_vec_lvlx (a,p); }
+vuc llx18(long a, uc *p) { return __builtin_vec_lvlx (a,p); }
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c
--- dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c Wed Nov 7 11:47:40 2012
@@ -0,0 +1,48 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
+/* { dg-final { scan-assembler-times "lvlxl" 19 } } */
+
+#include <altivec.h>
+
+typedef __vector signed char vsc;
+typedef __vector signed short vss;
+typedef __vector signed int vsi;
+typedef __vector unsigned char vuc;
+typedef __vector unsigned short vus;
+typedef __vector unsigned int vui;
+typedef __vector bool char vbc;
+typedef __vector bool short vbs;
+typedef __vector bool int vbi;
+typedef __vector float vsf;
+typedef __vector pixel vp;
+typedef signed char sc;
+typedef signed short ss;
+typedef signed int si;
+typedef signed long sl;
+typedef unsigned char uc;
+typedef unsigned short us;
+typedef unsigned int ui;
+typedef unsigned long ul;
+typedef float sf;
+
+vsc lc2(long a, void *p) { return __builtin_altivec_lvlxl (a,p); }
+vsf llxl01(long a, vsf *p) { return __builtin_vec_lvlxl (a,p); }
+vsf llxl02(long a, sf *p) { return __builtin_vec_lvlxl (a,p); }
+vbi llxl03(long a, vbi *p) { return __builtin_vec_lvlxl (a,p); }
+vsi llxl04(long a, vsi *p) { return __builtin_vec_lvlxl (a,p); }
+vsi llxl05(long a, si *p) { return __builtin_vec_lvlxl (a,p); }
+vui llxl06(long a, vui *p) { return __builtin_vec_lvlxl (a,p); }
+vui llxl07(long a, ui *p) { return __builtin_vec_lvlxl (a,p); }
+vbs llxl08(long a, vbs *p) { return __builtin_vec_lvlxl (a,p); }
+vp llxl09(long a, vp *p) { return __builtin_vec_lvlxl (a,p); }
+vss llxl10(long a, vss *p) { return __builtin_vec_lvlxl (a,p); }
+vss llxl11(long a, ss *p) { return __builtin_vec_lvlxl (a,p); }
+vus llxl12(long a, vus *p) { return __builtin_vec_lvlxl (a,p); }
+vus llxl13(long a, us *p) { return __builtin_vec_lvlxl (a,p); }
+vbc llxl14(long a, vbc *p) { return __builtin_vec_lvlxl (a,p); }
+vsc llxl15(long a, vsc *p) { return __builtin_vec_lvlxl (a,p); }
+vsc llxl16(long a, sc *p) { return __builtin_vec_lvlxl (a,p); }
+vuc llxl17(long a, vuc *p) { return __builtin_vec_lvlxl (a,p); }
+vuc llxl18(long a, uc *p) { return __builtin_vec_lvlxl (a,p); }
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c
--- dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c Wed Nov 7 11:47:40 2012
@@ -0,0 +1,48 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
+/* { dg-final { scan-assembler-times "lvrx" 19 } } */
+
+#include <altivec.h>
+
+typedef __vector signed char vsc;
+typedef __vector signed short vss;
+typedef __vector signed int vsi;
+typedef __vector unsigned char vuc;
+typedef __vector unsigned short vus;
+typedef __vector unsigned int vui;
+typedef __vector bool char vbc;
+typedef __vector bool short vbs;
+typedef __vector bool int vbi;
+typedef __vector float vsf;
+typedef __vector pixel vp;
+typedef signed char sc;
+typedef signed short ss;
+typedef signed int si;
+typedef signed long sl;
+typedef unsigned char uc;
+typedef unsigned short us;
+typedef unsigned int ui;
+typedef unsigned long ul;
+typedef float sf;
+
+vsc lc3(long a, void *p) { return __builtin_altivec_lvrx (a,p); }
+vsf lrx01(long a, vsf *p) { return __builtin_vec_lvrx (a,p); }
+vsf lrx02(long a, sf *p) { return __builtin_vec_lvrx (a,p); }
+vbi lrx03(long a, vbi *p) { return __builtin_vec_lvrx (a,p); }
+vsi lrx04(long a, vsi *p) { return __builtin_vec_lvrx (a,p); }
+vsi lrx05(long a, si *p) { return __builtin_vec_lvrx (a,p); }
+vui lrx06(long a, vui *p) { return __builtin_vec_lvrx (a,p); }
+vui lrx07(long a, ui *p) { return __builtin_vec_lvrx (a,p); }
+vbs lrx08(long a, vbs *p) { return __builtin_vec_lvrx (a,p); }
+vp lrx09(long a, vp *p) { return __builtin_vec_lvrx (a,p); }
+vss lrx10(long a, vss *p) { return __builtin_vec_lvrx (a,p); }
+vss lrx11(long a, ss *p) { return __builtin_vec_lvrx (a,p); }
+vus lrx12(long a, vus *p) { return __builtin_vec_lvrx (a,p); }
+vus lrx13(long a, us *p) { return __builtin_vec_lvrx (a,p); }
+vbc lrx14(long a, vbc *p) { return __builtin_vec_lvrx (a,p); }
+vsc lrx15(long a, vsc *p) { return __builtin_vec_lvrx (a,p); }
+vsc lrx16(long a, sc *p) { return __builtin_vec_lvrx (a,p); }
+vuc lrx17(long a, vuc *p) { return __builtin_vec_lvrx (a,p); }
+vuc lrx18(long a, uc *p) { return __builtin_vec_lvrx (a,p); }
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c
--- dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-4.c Wed Nov 7 11:47:40 2012
@@ -0,0 +1,48 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
+/* { dg-final { scan-assembler-times "lvrxl" 19 } } */
+
+#include <altivec.h>
+
+typedef __vector signed char vsc;
+typedef __vector signed short vss;
+typedef __vector signed int vsi;
+typedef __vector unsigned char vuc;
+typedef __vector unsigned short vus;
+typedef __vector unsigned int vui;
+typedef __vector bool char vbc;
+typedef __vector bool short vbs;
+typedef __vector bool int vbi;
+typedef __vector float vsf;
+typedef __vector pixel vp;
+typedef signed char sc;
+typedef signed short ss;
+typedef signed int si;
+typedef signed long sl;
+typedef unsigned char uc;
+typedef unsigned short us;
+typedef unsigned int ui;
+typedef unsigned long ul;
+typedef float sf;
+
+vsc lc4(long a, void *p) { return __builtin_altivec_lvrxl (a,p); }
+vsf lrxl01(long a, vsf *p) { return __builtin_vec_lvrxl (a,p); }
+vsf lrxl02(long a, sf *p) { return __builtin_vec_lvrxl (a,p); }
+vbi lrxl03(long a, vbi *p) { return __builtin_vec_lvrxl (a,p); }
+vsi lrxl04(long a, vsi *p) { return __builtin_vec_lvrxl (a,p); }
+vsi lrxl05(long a, si *p) { return __builtin_vec_lvrxl (a,p); }
+vui lrxl06(long a, vui *p) { return __builtin_vec_lvrxl (a,p); }
+vui lrxl07(long a, ui *p) { return __builtin_vec_lvrxl (a,p); }
+vbs lrxl08(long a, vbs *p) { return __builtin_vec_lvrxl (a,p); }
+vp lrxl09(long a, vp *p) { return __builtin_vec_lvrxl (a,p); }
+vss lrxl10(long a, vss *p) { return __builtin_vec_lvrxl (a,p); }
+vss lrxl11(long a, ss *p) { return __builtin_vec_lvrxl (a,p); }
+vus lrxl12(long a, vus *p) { return __builtin_vec_lvrxl (a,p); }
+vus lrxl13(long a, us *p) { return __builtin_vec_lvrxl (a,p); }
+vbc lrxl14(long a, vbc *p) { return __builtin_vec_lvrxl (a,p); }
+vsc lrxl15(long a, vsc *p) { return __builtin_vec_lvrxl (a,p); }
+vsc lrxl16(long a, sc *p) { return __builtin_vec_lvrxl (a,p); }
+vuc lrxl17(long a, vuc *p) { return __builtin_vec_lvrxl (a,p); }
+vuc lrxl18(long a, uc *p) { return __builtin_vec_lvrxl (a,p); }
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c
--- dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-5.c Wed Nov 7 11:47:40 2012
@@ -0,0 +1,48 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
+/* { dg-final { scan-assembler-times "stvlx" 19 } } */
+
+#include <altivec.h>
+
+typedef __vector signed char vsc;
+typedef __vector signed short vss;
+typedef __vector signed int vsi;
+typedef __vector unsigned char vuc;
+typedef __vector unsigned short vus;
+typedef __vector unsigned int vui;
+typedef __vector bool char vbc;
+typedef __vector bool short vbs;
+typedef __vector bool int vbi;
+typedef __vector float vsf;
+typedef __vector pixel vp;
+typedef signed char sc;
+typedef signed short ss;
+typedef signed int si;
+typedef signed long sl;
+typedef unsigned char uc;
+typedef unsigned short us;
+typedef unsigned int ui;
+typedef unsigned long ul;
+typedef float sf;
+
+void sc1(vsc v, long a, void *p) { __builtin_altivec_stvlx (v,a,p); }
+void slx01(vsf v, long a, vsf *p) { __builtin_vec_stvlx (v,a,p); }
+void slx02(vsf v, long a, sf *p) { __builtin_vec_stvlx (v,a,p); }
+void slx03(vbi v, long a, vbi *p) { __builtin_vec_stvlx (v,a,p); }
+void slx04(vsi v, long a, vsi *p) { __builtin_vec_stvlx (v,a,p); }
+void slx05(vsi v, long a, si *p) { __builtin_vec_stvlx (v,a,p); }
+void slx06(vui v, long a, vui *p) { __builtin_vec_stvlx (v,a,p); }
+void slx07(vui v, long a, ui *p) { __builtin_vec_stvlx (v,a,p); }
+void slx08(vbs v, long a, vbs *p) { __builtin_vec_stvlx (v,a,p); }
+void slx09(vp v, long a, vp *p) { __builtin_vec_stvlx (v,a,p); }
+void slx10(vss v, long a, vss *p) { __builtin_vec_stvlx (v,a,p); }
+void slx11(vss v, long a, ss *p) { __builtin_vec_stvlx (v,a,p); }
+void slx12(vus v, long a, vus *p) { __builtin_vec_stvlx (v,a,p); }
+void slx13(vus v, long a, us *p) { __builtin_vec_stvlx (v,a,p); }
+void slx14(vbc v, long a, vbc *p) { __builtin_vec_stvlx (v,a,p); }
+void slx15(vsc v, long a, vsc *p) { __builtin_vec_stvlx (v,a,p); }
+void slx16(vsc v, long a, sc *p) { __builtin_vec_stvlx (v,a,p); }
+void slx17(vuc v, long a, vuc *p) { __builtin_vec_stvlx (v,a,p); }
+void slx18(vuc v, long a, uc *p) { __builtin_vec_stvlx (v,a,p); }
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c
--- dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-6.c Wed Nov 7 11:47:40 2012
@@ -0,0 +1,48 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
+/* { dg-final { scan-assembler-times "stvlxl" 19 } } */
+
+#include <altivec.h>
+
+typedef __vector signed char vsc;
+typedef __vector signed short vss;
+typedef __vector signed int vsi;
+typedef __vector unsigned char vuc;
+typedef __vector unsigned short vus;
+typedef __vector unsigned int vui;
+typedef __vector bool char vbc;
+typedef __vector bool short vbs;
+typedef __vector bool int vbi;
+typedef __vector float vsf;
+typedef __vector pixel vp;
+typedef signed char sc;
+typedef signed short ss;
+typedef signed int si;
+typedef signed long sl;
+typedef unsigned char uc;
+typedef unsigned short us;
+typedef unsigned int ui;
+typedef unsigned long ul;
+typedef float sf;
+
+void sc2(vsc v, long a, void *p) { __builtin_altivec_stvlxl (v,a,p); }
+void slxl01(vsf v, long a, vsf *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl02(vsf v, long a, sf *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl03(vbi v, long a, vbi *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl04(vsi v, long a, vsi *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl05(vsi v, long a, si *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl06(vui v, long a, vui *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl07(vui v, long a, ui *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl08(vbs v, long a, vbs *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl09(vp v, long a, vp *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl10(vss v, long a, vss *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl11(vss v, long a, ss *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl12(vus v, long a, vus *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl13(vus v, long a, us *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl14(vbc v, long a, vbc *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl15(vsc v, long a, vsc *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl16(vsc v, long a, sc *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl17(vuc v, long a, vuc *p) { __builtin_vec_stvlxl (v,a,p); }
+void slxl18(vuc v, long a, uc *p) { __builtin_vec_stvlxl (v,a,p); }
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c
--- dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-7.c Wed Nov 7 11:47:40 2012
@@ -0,0 +1,48 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
+/* { dg-final { scan-assembler-times "stvrx" 19 } } */
+
+#include <altivec.h>
+
+typedef __vector signed char vsc;
+typedef __vector signed short vss;
+typedef __vector signed int vsi;
+typedef __vector unsigned char vuc;
+typedef __vector unsigned short vus;
+typedef __vector unsigned int vui;
+typedef __vector bool char vbc;
+typedef __vector bool short vbs;
+typedef __vector bool int vbi;
+typedef __vector float vsf;
+typedef __vector pixel vp;
+typedef signed char sc;
+typedef signed short ss;
+typedef signed int si;
+typedef signed long sl;
+typedef unsigned char uc;
+typedef unsigned short us;
+typedef unsigned int ui;
+typedef unsigned long ul;
+typedef float sf;
+
+void sc3(vsc v, long a, void *p) { __builtin_altivec_stvrx (v,a,p); }
+void srx01(vsf v, long a, vsf *p) { __builtin_vec_stvrx (v,a,p); }
+void srx02(vsf v, long a, sf *p) { __builtin_vec_stvrx (v,a,p); }
+void srx03(vbi v, long a, vbi *p) { __builtin_vec_stvrx (v,a,p); }
+void srx04(vsi v, long a, vsi *p) { __builtin_vec_stvrx (v,a,p); }
+void srx05(vsi v, long a, si *p) { __builtin_vec_stvrx (v,a,p); }
+void srx06(vui v, long a, vui *p) { __builtin_vec_stvrx (v,a,p); }
+void srx07(vui v, long a, ui *p) { __builtin_vec_stvrx (v,a,p); }
+void srx08(vbs v, long a, vbs *p) { __builtin_vec_stvrx (v,a,p); }
+void srx09(vp v, long a, vp *p) { __builtin_vec_stvrx (v,a,p); }
+void srx10(vss v, long a, vss *p) { __builtin_vec_stvrx (v,a,p); }
+void srx11(vss v, long a, ss *p) { __builtin_vec_stvrx (v,a,p); }
+void srx12(vus v, long a, vus *p) { __builtin_vec_stvrx (v,a,p); }
+void srx13(vus v, long a, us *p) { __builtin_vec_stvrx (v,a,p); }
+void srx14(vbc v, long a, vbc *p) { __builtin_vec_stvrx (v,a,p); }
+void srx15(vsc v, long a, vsc *p) { __builtin_vec_stvrx (v,a,p); }
+void srx16(vsc v, long a, sc *p) { __builtin_vec_stvrx (v,a,p); }
+void srx17(vuc v, long a, vuc *p) { __builtin_vec_stvrx (v,a,p); }
+void srx18(vuc v, long a, uc *p) { __builtin_vec_stvrx (v,a,p); }
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c
--- dist/gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/powerpc/cell_builtin-8.c Wed Nov 7 11:47:40 2012
@@ -0,0 +1,48 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_altivec_ok } */
+/* { dg-options "-O2 -maltivec -mcpu=cell" } */
+/* { dg-final { scan-assembler-times "stvrxl" 19 } } */
+
+#include <altivec.h>
+
+typedef __vector signed char vsc;
+typedef __vector signed short vss;
+typedef __vector signed int vsi;
+typedef __vector unsigned char vuc;
+typedef __vector unsigned short vus;
+typedef __vector unsigned int vui;
+typedef __vector bool char vbc;
+typedef __vector bool short vbs;
+typedef __vector bool int vbi;
+typedef __vector float vsf;
+typedef __vector pixel vp;
+typedef signed char sc;
+typedef signed short ss;
+typedef signed int si;
+typedef signed long sl;
+typedef unsigned char uc;
+typedef unsigned short us;
+typedef unsigned int ui;
+typedef unsigned long ul;
+typedef float sf;
+
+void sc4(vsc v, long a, void *p) { __builtin_altivec_stvrxl (v,a,p); }
+void srxl01(vsf v, long a, vsf *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl02(vsf v, long a, sf *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl03(vbi v, long a, vbi *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl04(vsi v, long a, vsi *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl05(vsi v, long a, si *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl06(vui v, long a, vui *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl07(vui v, long a, ui *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl08(vbs v, long a, vbs *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl09(vp v, long a, vp *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl10(vss v, long a, vss *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl11(vss v, long a, ss *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl12(vus v, long a, vus *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl13(vus v, long a, us *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl14(vbc v, long a, vbc *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl15(vsc v, long a, vsc *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl16(vsc v, long a, sc *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl17(vuc v, long a, vuc *p) { __builtin_vec_stvrxl (v,a,p); }
+void srxl18(vuc v, long a, uc *p) { __builtin_vec_stvrxl (v,a,p); }
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/powerpc/pr48857.c dist.nbsd/gcc/testsuite/gcc.target/powerpc/pr48857.c
--- dist/gcc/testsuite/gcc.target/powerpc/pr48857.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/powerpc/pr48857.c Wed Nov 7 11:47:40 2012
@@ -0,0 +1,25 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-O2 -mcpu=power7 -mabi=altivec" } */
+/* { dg-final { scan-assembler-times "lxvd2x" 1 } } */
+/* { dg-final { scan-assembler-times "stxvd2x" 1 } } */
+/* { dg-final { scan-assembler-not "ld" } } */
+/* { dg-final { scan-assembler-not "lwz" } } */
+/* { dg-final { scan-assembler-not "stw" } } */
+/* { dg-final { scan-assembler-not "addi" } } */
+
+typedef vector long long v2di_type;
+
+v2di_type
+return_v2di (v2di_type *ptr)
+{
+ return *ptr; /* should generate lxvd2x 34,0,3. */
+}
+
+void
+pass_v2di (v2di_type arg, v2di_type *ptr)
+{
+ *ptr = arg; /* should generate stxvd2x 34,0,{3,5}. */
+}
+
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/powerpc/pr53199.c dist.nbsd/gcc/testsuite/gcc.target/powerpc/pr53199.c
--- dist/gcc/testsuite/gcc.target/powerpc/pr53199.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/powerpc/pr53199.c Wed Nov 7 11:47:40 2012
@@ -0,0 +1,50 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-options "-O2 -mcpu=power6 -mavoid-indexed-addresses" } */
+/* { dg-final { scan-assembler-times "lwbrx" 6 } } */
+/* { dg-final { scan-assembler-times "stwbrx" 6 } } */
+
+/* PR 51399: bswap gets an error if -mavoid-indexed-addresses was used in
+ creating the two lwbrx instructions. */
+
+long long
+load64_reverse_1 (long long *p)
+{
+ return __builtin_bswap64 (*p);
+}
+
+long long
+load64_reverse_2 (long long *p)
+{
+ return __builtin_bswap64 (p[1]);
+}
+
+long long
+load64_reverse_3 (long long *p, int i)
+{
+ return __builtin_bswap64 (p[i]);
+}
+
+void
+store64_reverse_1 (long long *p, long long x)
+{
+ *p = __builtin_bswap64 (x);
+}
+
+void
+store64_reverse_2 (long long *p, long long x)
+{
+ p[1] = __builtin_bswap64 (x);
+}
+
+void
+store64_reverse_3 (long long *p, long long x, int i)
+{
+ p[i] = __builtin_bswap64 (x);
+}
+
+long long
+reg_reverse (long long x)
+{
+ return __builtin_bswap64 (x);
+}
diff -rNU3 -x *.info dist/gcc/testsuite/gcc.target/sparc/cas64.c dist.nbsd/gcc/testsuite/gcc.target/sparc/cas64.c
--- dist/gcc/testsuite/gcc.target/sparc/cas64.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gcc/testsuite/gcc.target/sparc/cas64.c Wed Nov 7 11:47:38 2012
@@ -0,0 +1,15 @@
+/* PR target/49660 */
+
+/* { dg-do compile { target sparc*-*-solaris2.* } } */
+
+#include <stdint.h>
+
+extern int64_t *val, old, new;
+
+int
+cas64 (void)
+{
+ return __sync_bool_compare_and_swap (val, old, new);
+}
+
+/* { dg-final { scan-assembler-not "compare_and_swap_8" } } */
diff -rNU3 -x *.info dist/gcc/testsuite/lib/target-supports.exp dist.nbsd/gcc/testsuite/lib/target-supports.exp
--- dist/gcc/testsuite/lib/target-supports.exp Wed Nov 7 13:39:49 2012
+++ dist.nbsd/gcc/testsuite/lib/target-supports.exp Wed Nov 7 11:47:38 2012
@@ -960,8 +960,8 @@
check_runtime_nocache sse_os_support_available {
int main ()
{
- __asm__ volatile ("movss %xmm2,%xmm1");
- return 0;
+ asm volatile ("movss %xmm2,%xmm1");
+ return 0;
}
} "-msse"
} else {
@@ -970,6 +970,29 @@
}]
}
+# Return 1 if the target OS supports running AVX executables, 0
+# otherwise. Cache the result.
+
+proc check_avx_os_support_available { } {
+ return [check_cached_effective_target avx_os_support_available {
+ # If this is not the right target then we can skip the test.
+ if { !([istarget x86_64-*-*] || [istarget i?86-*-*]) } {
+ expr 0
+ } else {
+ # Check that OS has AVX and SSE saving enabled.
+ check_runtime_nocache avx_os_support_available {
+ int main ()
+ {
+ unsigned int eax, edx;
+
+ asm ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0));
+ return (eax & 6) != 6;
+ }
+ } ""
+ }
+ }]
+}
+
# Return 1 if the target supports executing SSE instructions, 0
# otherwise. Cache the result.
@@ -1064,7 +1087,8 @@
proc check_effective_target_avx_runtime { } {
if { [check_effective_target_avx]
- && [check_avx_hw_available] } {
+ && [check_avx_hw_available]
+ && [check_avx_os_support_available] } {
return 1
}
return 0
diff -rNU3 -x *.info dist/gcc/tree-cfg.c dist.nbsd/gcc/tree-cfg.c
--- dist/gcc/tree-cfg.c Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/tree-cfg.c Wed Nov 7 11:47:25 2012
@@ -7092,7 +7092,8 @@
}
if (location == UNKNOWN_LOCATION)
location = cfun->function_end_locus;
- warning_at (location, 0, "%<noreturn%> function does return");
+ if (warn_missing_noreturn)
+ warning_at (location, 0, "%<noreturn%> function does return");
}
/* If we see "return;" in some basic block, then we do reach the end
@@ -7294,4 +7295,3 @@
0, /* todo_flags_finish */
}
};
-
diff -rNU3 -x *.info dist/gcc/tree-cfgcleanup.c dist.nbsd/gcc/tree-cfgcleanup.c
--- dist/gcc/tree-cfgcleanup.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/tree-cfgcleanup.c Wed Nov 7 11:47:26 2012
@@ -560,7 +560,7 @@
BB is present in the cfg. */
if (bb == NULL
|| bb->index < NUM_FIXED_BLOCKS
- || bb->index >= n_basic_blocks
+ || bb->index >= last_basic_block
|| BASIC_BLOCK (bb->index) != bb
|| last_stmt (bb) == stmt
|| !gimple_call_noreturn_p (stmt))
diff -rNU3 -x *.info dist/gcc/tree-inline.c dist.nbsd/gcc/tree-inline.c
--- dist/gcc/tree-inline.c Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/tree-inline.c Wed Nov 7 11:47:25 2012
@@ -4179,14 +4179,16 @@
CONSTRUCTOR_ELTS (*tp));
*tp = new_tree;
}
+ else if (code == STATEMENT_LIST)
+ /* We used to just abort on STATEMENT_LIST, but we can run into them
+ with statement-expressions (c++/40975). */
+ copy_statement_list (tp);
else if (TREE_CODE_CLASS (code) == tcc_type)
*walk_subtrees = 0;
else if (TREE_CODE_CLASS (code) == tcc_declaration)
*walk_subtrees = 0;
else if (TREE_CODE_CLASS (code) == tcc_constant)
*walk_subtrees = 0;
- else
- gcc_assert (code != STATEMENT_LIST);
return NULL_TREE;
}
diff -rNU3 -x *.info dist/gcc/tree-mudflap.c dist.nbsd/gcc/tree-mudflap.c
--- dist/gcc/tree-mudflap.c Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/tree-mudflap.c Wed Nov 7 11:47:25 2012
@@ -72,6 +72,13 @@
static gimple_seq mx_register_decls (tree, gimple_seq, location_t);
static unsigned int execute_mudflap_function_decls (void);
+/* Return true if DECL is artificial stub that shouldn't be instrumented by
+ mf. We should instrument clones of non-artificial functions. */
+static inline bool
+mf_artificial (const_tree decl)
+{
+ return DECL_ARTIFICIAL (DECL_ORIGIN (decl));
+}
/* ------------------------------------------------------------------------ */
/* Some generally helpful functions for mudflap instrumentation. */
@@ -437,8 +444,8 @@
/* Don't instrument functions such as the synthetic constructor
built during mudflap_finish_file. */
- if (mf_marked_p (current_function_decl) ||
- DECL_ARTIFICIAL (current_function_decl))
+ if (mf_marked_p (current_function_decl)
+ || mf_artificial (current_function_decl))
return 0;
push_gimplify_context (&gctx);
@@ -1026,8 +1033,8 @@
/* Don't instrument functions such as the synthetic constructor
built during mudflap_finish_file. */
- if (mf_marked_p (current_function_decl) ||
- DECL_ARTIFICIAL (current_function_decl))
+ if (mf_marked_p (current_function_decl)
+ || mf_artificial (current_function_decl))
return 0;
push_gimplify_context (&gctx);
@@ -1109,7 +1116,7 @@
/* Add the __mf_register call at the current appending point. */
if (gsi_end_p (initially_stmts))
{
- if (!DECL_ARTIFICIAL (decl))
+ if (!mf_artificial (decl))
warning (OPT_Wmudflap,
"mudflap cannot track %qE in stub function",
DECL_NAME (decl));
@@ -1280,7 +1287,7 @@
during mudflap_finish_file (). That would confuse the user,
since the text would refer to variables that don't show up in the
user's source code. */
- if (DECL_P (obj) && DECL_EXTERNAL (obj) && DECL_ARTIFICIAL (obj))
+ if (DECL_P (obj) && DECL_EXTERNAL (obj) && mf_artificial (obj))
return;
VEC_safe_push (tree, gc, deferred_static_decls, obj);
diff -rNU3 -x *.info dist/gcc/tree-outof-ssa.c dist.nbsd/gcc/tree-outof-ssa.c
--- dist/gcc/tree-outof-ssa.c Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/tree-outof-ssa.c Wed Nov 7 11:47:23 2012
@@ -233,9 +233,10 @@
var = SSA_NAME_VAR (partition_to_var (SA.map, dest));
src_mode = TYPE_MODE (TREE_TYPE (src));
- dest_mode = promote_decl_mode (var, &unsignedp);
+ dest_mode = GET_MODE (SA.partition_to_pseudo[dest]);
gcc_assert (src_mode == TYPE_MODE (TREE_TYPE (var)));
- gcc_assert (dest_mode == GET_MODE (SA.partition_to_pseudo[dest]));
+ gcc_assert (!REG_P (SA.partition_to_pseudo[dest])
+ || dest_mode == promote_decl_mode (var, &unsignedp));
if (src_mode != dest_mode)
{
diff -rNU3 -x *.info dist/gcc/tree-scalar-evolution.c dist.nbsd/gcc/tree-scalar-evolution.c
--- dist/gcc/tree-scalar-evolution.c Wed Nov 7 13:39:36 2012
+++ dist.nbsd/gcc/tree-scalar-evolution.c Wed Nov 7 11:47:42 2012
@@ -2557,7 +2557,8 @@
if (size_expr++ > PARAM_VALUE (PARAM_SCEV_MAX_EXPR_SIZE))
return chrec_dont_know;
- if (automatically_generated_chrec_p (chrec)
+ if (chrec == NULL_TREE
+ || automatically_generated_chrec_p (chrec)
|| is_gimple_min_invariant (chrec))
return chrec;
diff -rNU3 -x *.info dist/gcc/tree-sra.c dist.nbsd/gcc/tree-sra.c
--- dist/gcc/tree-sra.c Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/tree-sra.c Wed Nov 7 11:47:26 2012
@@ -771,12 +771,13 @@
disqualify_candidate (base, "Encountered a variable sized access.");
return NULL;
}
- if ((offset % BITS_PER_UNIT) != 0 || (size % BITS_PER_UNIT) != 0)
+ if (TREE_CODE (expr) == COMPONENT_REF
+ && DECL_BIT_FIELD (TREE_OPERAND (expr, 1)))
{
- disqualify_candidate (base,
- "Encountered an acces not aligned to a byte.");
+ disqualify_candidate (base, "Encountered a bit-field access.");
return NULL;
}
+ gcc_assert ((offset % BITS_PER_UNIT) == 0);
if (ptr)
mark_parm_dereference (base, offset + size, stmt);
@@ -1854,13 +1855,25 @@
&& build_ref_for_offset (NULL, TREE_TYPE (root->base), root->offset,
root->type, false))
{
+ bool new_integer_type;
+ if (TREE_CODE (root->type) == ENUMERAL_TYPE)
+ {
+ tree rt = root->type;
+ root->type = build_nonstandard_integer_type (TYPE_PRECISION (rt),
+ TYPE_UNSIGNED (rt));
+ new_integer_type = true;
+ }
+ else
+ new_integer_type = false;
+
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, "Marking ");
print_generic_expr (dump_file, root->base, 0);
- fprintf (dump_file, " offset: %u, size: %u: ",
+ fprintf (dump_file, " offset: %u, size: %u ",
(unsigned) root->offset, (unsigned) root->size);
- fprintf (dump_file, " to be replaced.\n");
+ fprintf (dump_file, " to be replaced%s.\n",
+ new_integer_type ? " with an integer": "");
}
root->grp_to_be_replaced = 1;
@@ -2730,7 +2743,13 @@
}
else
{
- if (access_has_children_p (lacc) && access_has_children_p (racc))
+ if (access_has_children_p (lacc)
+ && access_has_children_p (racc)
+ /* When an access represents an unscalarizable region, it usually
+ represents accesses with variable offset and thus must not be used
+ to generate new memory accesses. */
+ && !lacc->grp_unscalarizable_region
+ && !racc->grp_unscalarizable_region)
{
gimple_stmt_iterator orig_gsi = *gsi;
enum unscalarized_data_handling refreshed;
diff -rNU3 -x *.info dist/gcc/tree-ssa-dce.c dist.nbsd/gcc/tree-ssa-dce.c
--- dist/gcc/tree-ssa-dce.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/tree-ssa-dce.c Wed Nov 7 11:47:25 2012
@@ -509,7 +509,14 @@
/* If the stmt lhs kills ref, then we can stop walking. */
if (gimple_has_lhs (def_stmt)
- && TREE_CODE (gimple_get_lhs (def_stmt)) != SSA_NAME)
+ && TREE_CODE (gimple_get_lhs (def_stmt)) != SSA_NAME
+ /* The assignment is not necessarily carried out if it can throw
+ and we can catch it in the current function where we could inspect
+ the previous value.
+ ??? We only need to care about the RHS throwing. For aggregate
+ assignments or similar calls and non-call exceptions the LHS
+ might throw as well. */
+ && !stmt_can_throw_internal (def_stmt))
{
tree base, lhs = gimple_get_lhs (def_stmt);
HOST_WIDE_INT size, offset, max_size;
diff -rNU3 -x *.info dist/gcc/tree-ssa-dom.c dist.nbsd/gcc/tree-ssa-dom.c
--- dist/gcc/tree-ssa-dom.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/tree-ssa-dom.c Wed Nov 7 11:47:23 2012
@@ -209,12 +209,11 @@
{
enum tree_code subcode = gimple_assign_rhs_code (stmt);
- expr->type = NULL_TREE;
-
switch (get_gimple_rhs_class (subcode))
{
case GIMPLE_SINGLE_RHS:
expr->kind = EXPR_SINGLE;
+ expr->type = TREE_TYPE (gimple_assign_rhs1 (stmt));
expr->ops.single.rhs = gimple_assign_rhs1 (stmt);
break;
case GIMPLE_UNARY_RHS:
diff -rNU3 -x *.info dist/gcc/tree-ssa-sccvn.c dist.nbsd/gcc/tree-ssa-sccvn.c
--- dist/gcc/tree-ssa-sccvn.c Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/tree-ssa-sccvn.c Wed Nov 7 11:47:23 2012
@@ -1805,12 +1805,26 @@
static inline bool
set_ssa_val_to (tree from, tree to)
{
- tree currval;
+ tree currval = SSA_VAL (from);
- if (from != to
- && TREE_CODE (to) == SSA_NAME
- && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (to))
- to = from;
+ if (from != to)
+ {
+ if (currval == from)
+ {
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ {
+ fprintf (dump_file, "Not changing value number of ");
+ print_generic_expr (dump_file, from, 0);
+ fprintf (dump_file, " from VARYING to ");
+ print_generic_expr (dump_file, to, 0);
+ fprintf (dump_file, "\n");
+ }
+ return false;
+ }
+ else if (TREE_CODE (to) == SSA_NAME
+ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (to))
+ to = from;
+ }
/* The only thing we allow as value numbers are VN_TOP, ssa_names
and invariants. So assert that here. */
@@ -1826,8 +1840,6 @@
fprintf (dump_file, " to ");
print_generic_expr (dump_file, to, 0);
}
-
- currval = SSA_VAL (from);
if (currval != to && !operand_equal_p (currval, to, OEP_PURE_SAME))
{
diff -rNU3 -x *.info dist/gcc/tree-ssa-structalias.c dist.nbsd/gcc/tree-ssa-structalias.c
--- dist/gcc/tree-ssa-structalias.c Wed Nov 7 13:39:36 2012
+++ dist.nbsd/gcc/tree-ssa-structalias.c Wed Nov 7 11:47:23 2012
@@ -266,6 +266,7 @@
static varinfo_t first_or_preceding_vi_for_offset (varinfo_t,
unsigned HOST_WIDE_INT);
static varinfo_t lookup_vi_for_tree (tree);
+static inline bool type_can_have_subvars (const_tree);
/* Pool of variable info structures. */
static alloc_pool variable_info_pool;
@@ -3187,10 +3188,51 @@
{
case INDIRECT_REF:
{
+ struct constraint_expr cs;
+ varinfo_t vi, curr;
get_constraint_for_1 (TREE_OPERAND (t, 0), results, address_p,
lhs_p);
do_deref (results);
- return;
+
+ /* If we are not taking the address then make sure to process
+ all subvariables we might access. */
+ if (address_p)
+ return;
+
+ cs = *VEC_last (ce_s, *results);
+ if (cs.type == DEREF
+ && type_can_have_subvars (TREE_TYPE (t)))
+ {
+ /* For dereferences this means we have to defer it
+ to solving time. */
+ VEC_last (ce_s, *results)->offset = UNKNOWN_OFFSET;
+ return;
+ }
+ if (cs.type != SCALAR)
+ return;
+
+ vi = get_varinfo (cs.var);
+ curr = vi->next;
+ if (!vi->is_full_var
+ && curr)
+ {
+ unsigned HOST_WIDE_INT size;
+ if (host_integerp (TYPE_SIZE (TREE_TYPE (t)), 1))
+ size = TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (t)));
+ else
+ size = -1;
+ for (; curr; curr = curr->next)
+ {
+ if (curr->offset - vi->offset < size)
+ {
+ cs.var = curr->id;
+ VEC_safe_push (ce_s, heap, *results, &cs);
+ }
+ else
+ break;
+ }
+ }
+ return;
}
case ARRAY_REF:
case ARRAY_RANGE_REF:
@@ -3968,15 +4010,6 @@
&& DECL_P (lhsop)
&& is_global_var (lhsop))
make_escape_constraint (rhsop);
- /* If this is a conversion of a non-restrict pointer to a
- restrict pointer track it with a new heapvar. */
- else if (gimple_assign_cast_p (t)
- && POINTER_TYPE_P (TREE_TYPE (rhsop))
- && POINTER_TYPE_P (TREE_TYPE (lhsop))
- && !TYPE_RESTRICT (TREE_TYPE (rhsop))
- && TYPE_RESTRICT (TREE_TYPE (lhsop)))
- make_constraint_from_restrict (get_vi_for_tree (lhsop),
- "CAST_RESTRICT");
}
/* Handle escapes through return. */
else if (gimple_code (t) == GIMPLE_RETURN
@@ -4210,6 +4243,15 @@
fieldoff_compare);
}
+/* Return true if T is a type that can have subvars. */
+
+static inline bool
+type_can_have_subvars (const_tree t)
+{
+ /* Aggregates without overlapping fields can have subvars. */
+ return TREE_CODE (t) == RECORD_TYPE;
+}
+
/* Return true if V is a tree that we can have subvars for.
Normally, this is any aggregate type. Also complex
types which are not gimple registers can have subvars. */
@@ -4225,11 +4267,7 @@
if (!DECL_P (v))
return false;
- /* Aggregates without overlapping fields can have subvars. */
- if (TREE_CODE (TREE_TYPE (v)) == RECORD_TYPE)
- return true;
-
- return false;
+ return type_can_have_subvars (TREE_TYPE (v));
}
/* Return true if T is a type that does contain pointers. */
diff -rNU3 -x *.info dist/gcc/tree-switch-conversion.c dist.nbsd/gcc/tree-switch-conversion.c
--- dist/gcc/tree-switch-conversion.c Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/tree-switch-conversion.c Wed Nov 7 11:47:23 2012
@@ -549,7 +549,7 @@
build_arrays (gimple swtch)
{
tree arr_index_type;
- tree tidx, sub, tmp;
+ tree tidx, sub, tmp, utype;
gimple stmt;
gimple_stmt_iterator gsi;
int i;
@@ -557,14 +557,20 @@
gsi = gsi_for_stmt (swtch);
+ /* Make sure we do not generate arithmetics in a subrange. */
+ utype = TREE_TYPE (info.index_expr);
+ if (TREE_TYPE (utype))
+ utype = lang_hooks.types.type_for_mode (TYPE_MODE (TREE_TYPE (utype)), 1);
+ else
+ utype = lang_hooks.types.type_for_mode (TYPE_MODE (utype), 1);
+
arr_index_type = build_index_type (info.range_size);
- tmp = create_tmp_var (TREE_TYPE (info.index_expr), "csti");
+ tmp = create_tmp_var (utype, "csui");
add_referenced_var (tmp);
tidx = make_ssa_name (tmp, NULL);
- sub = fold_build2_loc (loc, MINUS_EXPR,
- TREE_TYPE (info.index_expr), info.index_expr,
- fold_convert_loc (loc, TREE_TYPE (info.index_expr),
- info.range_min));
+ sub = fold_build2_loc (loc, MINUS_EXPR, utype,
+ fold_convert_loc (loc, utype, info.index_expr),
+ fold_convert_loc (loc, utype, info.range_min));
sub = force_gimple_operand_gsi (&gsi, sub,
false, NULL, true, GSI_SAME_STMT);
stmt = gimple_build_assign (tidx, sub);
@@ -673,12 +679,7 @@
tree label_decl2 = create_artificial_label (UNKNOWN_LOCATION);
tree label_decl3 = create_artificial_label (UNKNOWN_LOCATION);
gimple label1, label2, label3;
-
- tree utype;
- tree tmp_u_1, tmp_u_2, tmp_u_var;
- tree cast;
- gimple cast_assign, minus_assign;
- tree ulb, minus;
+ tree utype, tidx;
tree bound;
gimple cond_stmt;
@@ -692,49 +693,24 @@
gcc_assert (info.default_values);
bb0 = gimple_bb (swtch);
- /* Make sure we do not generate arithmetics in a subrange. */
- if (TREE_TYPE (TREE_TYPE (info.index_expr)))
- utype = lang_hooks.types.type_for_mode
- (TYPE_MODE (TREE_TYPE (TREE_TYPE (info.index_expr))), 1);
- else
- utype = lang_hooks.types.type_for_mode
- (TYPE_MODE (TREE_TYPE (info.index_expr)), 1);
+ tidx = gimple_assign_lhs (info.arr_ref_first);
+ utype = TREE_TYPE (tidx);
/* (end of) block 0 */
gsi = gsi_for_stmt (info.arr_ref_first);
- tmp_u_var = create_tmp_var (utype, "csui");
- add_referenced_var (tmp_u_var);
- tmp_u_1 = make_ssa_name (tmp_u_var, NULL);
+ gsi_next (&gsi);
- cast = fold_convert_loc (loc, utype, info.index_expr);
- cast_assign = gimple_build_assign (tmp_u_1, cast);
- SSA_NAME_DEF_STMT (tmp_u_1) = cast_assign;
- gsi_insert_before (&gsi, cast_assign, GSI_SAME_STMT);
- update_stmt (cast_assign);
-
- ulb = fold_convert_loc (loc, utype, info.range_min);
- minus = fold_build2_loc (loc, MINUS_EXPR, utype, tmp_u_1, ulb);
- minus = force_gimple_operand_gsi (&gsi, minus, false, NULL, true,
- GSI_SAME_STMT);
- tmp_u_2 = make_ssa_name (tmp_u_var, NULL);
- minus_assign = gimple_build_assign (tmp_u_2, minus);
- SSA_NAME_DEF_STMT (tmp_u_2) = minus_assign;
- gsi_insert_before (&gsi, minus_assign, GSI_SAME_STMT);
- update_stmt (minus_assign);
-
bound = fold_convert_loc (loc, utype, info.range_size);
- cond_stmt = gimple_build_cond (LE_EXPR, tmp_u_2, bound, NULL_TREE, NULL_TREE);
+ cond_stmt = gimple_build_cond (LE_EXPR, tidx, bound, NULL_TREE, NULL_TREE);
gsi_insert_before (&gsi, cond_stmt, GSI_SAME_STMT);
update_stmt (cond_stmt);
/* block 2 */
- gsi = gsi_for_stmt (info.arr_ref_first);
label2 = gimple_build_label (label_decl2);
gsi_insert_before (&gsi, label2, GSI_SAME_STMT);
last_assign = gen_def_assigns (&gsi);
/* block 1 */
- gsi = gsi_for_stmt (info.arr_ref_first);
label1 = gimple_build_label (label_decl1);
gsi_insert_before (&gsi, label1, GSI_SAME_STMT);
diff -rNU3 -x *.info dist/gcc/tree-tailcall.c dist.nbsd/gcc/tree-tailcall.c
--- dist/gcc/tree-tailcall.c Wed Nov 7 13:39:38 2012
+++ dist.nbsd/gcc/tree-tailcall.c Wed Nov 7 11:47:25 2012
@@ -1007,6 +1007,14 @@
integer_one_node);
}
+ if (a_acc || m_acc)
+ {
+ /* When the tail call elimination using accumulators is performed,
+ statements adding the accumulated value are inserted at all exits.
+ This turns all other tail calls to non-tail ones. */
+ opt_tailcalls = false;
+ }
+
for (; tailcalls; tailcalls = next)
{
next = tailcalls->next;
diff -rNU3 -x *.info dist/gcc/tree-vect-data-refs.c dist.nbsd/gcc/tree-vect-data-refs.c
--- dist/gcc/tree-vect-data-refs.c Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/tree-vect-data-refs.c Wed Nov 7 11:47:23 2012
@@ -1450,7 +1450,7 @@
loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info);
bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info);
HOST_WIDE_INT dr_step = TREE_INT_CST_LOW (step);
- HOST_WIDE_INT stride;
+ HOST_WIDE_INT stride, last_accessed_element = 1;
bool slp_impossible = false;
/* For interleaving, STRIDE is STEP counted in elements, i.e., the size of the
@@ -1479,6 +1479,16 @@
fprintf (vect_dump, " step ");
print_generic_expr (vect_dump, step, TDF_SLIM);
}
+
+ if (loop_vinfo)
+ {
+ LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) = true;
+
+ if (vect_print_dump_info (REPORT_DETAILS))
+ fprintf (vect_dump, "Data access with gaps requires scalar "
+ "epilogue loop");
+ }
+
return true;
}
if (vect_print_dump_info (REPORT_DETAILS))
@@ -1531,6 +1541,7 @@
next = DR_GROUP_NEXT_DR (vinfo_for_stmt (next));
continue;
}
+
prev = next;
/* Check that all the accesses have the same STEP. */
@@ -1561,6 +1572,8 @@
gaps += diff - 1;
}
+ last_accessed_element += diff;
+
/* Store the gap from the previous member of the group. If there is no
gap in the access, DR_GROUP_GAP is always 1. */
DR_GROUP_GAP (vinfo_for_stmt (next)) = diff;
@@ -1652,6 +1665,15 @@
VEC_safe_push (gimple, heap, BB_VINFO_STRIDED_STORES (bb_vinfo),
stmt);
}
+
+ /* There is a gap in the end of the group. */
+ if (stride - last_accessed_element > 0 && loop_vinfo)
+ {
+ LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) = true;
+ if (vect_print_dump_info (REPORT_DETAILS))
+ fprintf (vect_dump, "Data access with gaps requires scalar "
+ "epilogue loop");
+ }
}
return true;
diff -rNU3 -x *.info dist/gcc/tree-vect-loop-manip.c dist.nbsd/gcc/tree-vect-loop-manip.c
--- dist/gcc/tree-vect-loop-manip.c Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/tree-vect-loop-manip.c Wed Nov 7 11:47:25 2012
@@ -1516,7 +1516,7 @@
edge pe;
basic_block new_bb;
gimple_seq stmts;
- tree ni_name;
+ tree ni_name, ni_minus_gap_name;
tree var;
tree ratio_name;
tree ratio_mult_vf_name;
@@ -1533,9 +1533,39 @@
ni_name = vect_build_loop_niters (loop_vinfo, cond_expr_stmt_list);
log_vf = build_int_cst (TREE_TYPE (ni), exact_log2 (vf));
+ /* If epilogue loop is required because of data accesses with gaps, we
+ subtract one iteration from the total number of iterations here for
+ correct calculation of RATIO. */
+ if (LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo))
+ {
+ ni_minus_gap_name = fold_build2 (MINUS_EXPR, TREE_TYPE (ni_name),
+ ni_name,
+ build_one_cst (TREE_TYPE (ni_name)));
+ if (!is_gimple_val (ni_minus_gap_name))
+ {
+ var = create_tmp_var (TREE_TYPE (ni), "ni_gap");
+ add_referenced_var (var);
+
+ stmts = NULL;
+ ni_minus_gap_name = force_gimple_operand (ni_minus_gap_name, &stmts,
+ true, var);
+ if (cond_expr_stmt_list)
+ gimple_seq_add_seq (&cond_expr_stmt_list, stmts);
+ else
+ {
+ pe = loop_preheader_edge (loop);
+ new_bb = gsi_insert_seq_on_edge_immediate (pe, stmts);
+ gcc_assert (!new_bb);
+ }
+ }
+ }
+ else
+ ni_minus_gap_name = ni_name;
+
/* Create: ratio = ni >> log2(vf) */
- ratio_name = fold_build2 (RSHIFT_EXPR, TREE_TYPE (ni_name), ni_name, log_vf);
+ ratio_name = fold_build2 (RSHIFT_EXPR, TREE_TYPE (ni_minus_gap_name),
+ ni_minus_gap_name, log_vf);
if (!is_gimple_val (ratio_name))
{
var = create_tmp_var (TREE_TYPE (ni), "bnd");
@@ -2312,26 +2342,26 @@
Input:
DR: The data reference.
- VECT_FACTOR: vectorization factor.
+ LENGTH_FACTOR: segment length to consider.
Return an expression whose value is the size of segment which will be
accessed by DR. */
static tree
-vect_vfa_segment_size (struct data_reference *dr, tree vect_factor)
+vect_vfa_segment_size (struct data_reference *dr, tree length_factor)
{
- tree segment_length = fold_build2 (MULT_EXPR, integer_type_node,
- DR_STEP (dr), vect_factor);
-
+ tree segment_length;
+ segment_length = size_binop (MULT_EXPR,
+ fold_convert (sizetype, DR_STEP (dr)),
+ fold_convert (sizetype, length_factor));
if (vect_supportable_dr_alignment (dr) == dr_explicit_realign_optimized)
{
tree vector_size = TYPE_SIZE_UNIT
(STMT_VINFO_VECTYPE (vinfo_for_stmt (DR_STMT (dr))));
- segment_length = fold_build2 (PLUS_EXPR, integer_type_node,
- segment_length, vector_size);
+ segment_length = size_binop (PLUS_EXPR, segment_length, vector_size);
}
- return fold_convert (sizetype, segment_length);
+ return segment_length;
}
@@ -2365,12 +2395,12 @@
struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
VEC (ddr_p, heap) * may_alias_ddrs =
LOOP_VINFO_MAY_ALIAS_DDRS (loop_vinfo);
- tree vect_factor =
- build_int_cst (integer_type_node, LOOP_VINFO_VECT_FACTOR (loop_vinfo));
+ int vect_factor = LOOP_VINFO_VECT_FACTOR (loop_vinfo);
+ tree scalar_loop_iters = LOOP_VINFO_NITERS (loop_vinfo);
ddr_p ddr;
unsigned int i;
- tree part_cond_expr;
+ tree part_cond_expr, length_factor;
/* Create expression
((store_ptr_0 + store_segment_length_0) < load_ptr_0)
@@ -2417,8 +2447,12 @@
vect_create_addr_base_for_vector_ref (stmt_b, cond_expr_stmt_list,
NULL_TREE, loop);
- segment_length_a = vect_vfa_segment_size (dr_a, vect_factor);
- segment_length_b = vect_vfa_segment_size (dr_b, vect_factor);
+ if (!operand_equal_p (DR_STEP (dr_a), DR_STEP (dr_b), 0))
+ length_factor = scalar_loop_iters;
+ else
+ length_factor = size_int (vect_factor);
+ segment_length_a = vect_vfa_segment_size (dr_a, length_factor);
+ segment_length_b = vect_vfa_segment_size (dr_b, length_factor);
if (vect_print_dump_info (REPORT_DR_DETAILS))
{
diff -rNU3 -x *.info dist/gcc/tree-vect-loop.c dist.nbsd/gcc/tree-vect-loop.c
--- dist/gcc/tree-vect-loop.c Wed Nov 7 13:39:36 2012
+++ dist.nbsd/gcc/tree-vect-loop.c Wed Nov 7 11:47:25 2012
@@ -711,6 +711,7 @@
LOOP_VINFO_STRIDED_STORES (res) = VEC_alloc (gimple, heap, 10);
LOOP_VINFO_SLP_INSTANCES (res) = VEC_alloc (slp_instance, heap, 10);
LOOP_VINFO_SLP_UNROLLING_FACTOR (res) = 1;
+ LOOP_VINFO_PEELING_FOR_GAPS (res) = false;
return res;
}
@@ -2053,6 +2054,10 @@
peel_iters_prologue = niters < peel_iters_prologue ?
niters : peel_iters_prologue;
peel_iters_epilogue = (niters - peel_iters_prologue) % vf;
+ /* If we need to peel for gaps, but no peeling is required, we have
+ to peel VF iterations. */
+ if (LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) && !peel_iters_epilogue)
+ peel_iters_epilogue = vf;
}
}
@@ -4212,7 +4217,8 @@
do_peeling_for_loop_bound
= (!LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)
|| (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)
- && LOOP_VINFO_INT_NITERS (loop_vinfo) % vectorization_factor != 0));
+ && LOOP_VINFO_INT_NITERS (loop_vinfo) % vectorization_factor != 0)
+ || LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo));
if (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT (loop_vinfo)
|| LOOP_REQUIRES_VERSIONING_FOR_ALIAS (loop_vinfo))
diff -rNU3 -x *.info dist/gcc/tree-vect-stmts.c dist.nbsd/gcc/tree-vect-stmts.c
--- dist/gcc/tree-vect-stmts.c Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/tree-vect-stmts.c Wed Nov 7 11:47:25 2012
@@ -1416,7 +1416,7 @@
}
else
{
- vec_oprnd1 = gimple_call_arg (new_stmt, 2*i);
+ vec_oprnd1 = gimple_call_arg (new_stmt, 2*i + 1);
vec_oprnd0
= vect_get_vec_def_for_stmt_copy (dt[i], vec_oprnd1);
vec_oprnd1
diff -rNU3 -x *.info dist/gcc/tree-vectorizer.h dist.nbsd/gcc/tree-vectorizer.h
--- dist/gcc/tree-vectorizer.h Wed Nov 7 13:40:03 2012
+++ dist.nbsd/gcc/tree-vectorizer.h Wed Nov 7 11:47:25 2012
@@ -242,6 +242,12 @@
/* The unrolling factor needed to SLP the loop. In case of that pure SLP is
applied to the loop, i.e., no unrolling is needed, this is 1. */
unsigned slp_unrolling_factor;
+
+ /* When we have strided data accesses with gaps, we may introduce invalid
+ memory accesses. We peel the last iteration of the loop to prevent
+ this. */
+ bool peeling_for_gaps;
+
} *loop_vec_info;
/* Access Functions. */
@@ -266,6 +272,7 @@
#define LOOP_VINFO_STRIDED_STORES(L) (L)->strided_stores
#define LOOP_VINFO_SLP_INSTANCES(L) (L)->slp_instances
#define LOOP_VINFO_SLP_UNROLLING_FACTOR(L) (L)->slp_unrolling_factor
+#define LOOP_VINFO_PEELING_FOR_GAPS(L) (L)->peeling_for_gaps
#define LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT(L) \
VEC_length (gimple, (L)->may_misalign_stmts) > 0
diff -rNU3 -x *.info dist/gcc/tree-vrp.c dist.nbsd/gcc/tree-vrp.c
--- dist/gcc/tree-vrp.c Wed Nov 7 13:39:36 2012
+++ dist.nbsd/gcc/tree-vrp.c Wed Nov 7 11:47:42 2012
@@ -1,5 +1,5 @@
/* Support routines for Value Range Propagation (VRP).
- Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+ Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
Contributed by Diego Novillo <dnovillo@redhat.com>.
@@ -1445,7 +1445,7 @@
limit = avoid_overflow_infinity (limit);
- type = TREE_TYPE (limit);
+ type = TREE_TYPE (var);
gcc_assert (limit != var);
/* For pointer arithmetic, we only keep track of pointer equality
@@ -1619,8 +1619,8 @@
/* For LT_EXPR, we create the range [MIN, MAX - 1]. */
if (cond_code == LT_EXPR)
{
- tree one = build_int_cst (type, 1);
- max = fold_build2 (MINUS_EXPR, type, max, one);
+ tree one = build_int_cst (TREE_TYPE (max), 1);
+ max = fold_build2 (MINUS_EXPR, TREE_TYPE (max), max, one);
if (EXPR_P (max))
TREE_NO_WARNING (max) = 1;
}
@@ -1654,8 +1654,8 @@
/* For GT_EXPR, we create the range [MIN + 1, MAX]. */
if (cond_code == GT_EXPR)
{
- tree one = build_int_cst (type, 1);
- min = fold_build2 (PLUS_EXPR, type, min, one);
+ tree one = build_int_cst (TREE_TYPE (min), 1);
+ min = fold_build2 (PLUS_EXPR, TREE_TYPE (min), min, one);
if (EXPR_P (min))
TREE_NO_WARNING (min) = 1;
}
@@ -2257,18 +2257,28 @@
op0 + op1 == 0, so we cannot claim that the sum is in ~[0,0].
Note that we are guaranteed to have vr0.type == vr1.type at
this point. */
- if (code == PLUS_EXPR && vr0.type == VR_ANTI_RANGE)
+ if (vr0.type == VR_ANTI_RANGE)
{
- set_value_range_to_varying (vr);
- return;
+ if (code == PLUS_EXPR)
+ {
+ set_value_range_to_varying (vr);
+ return;
+ }
+ /* For MIN_EXPR and MAX_EXPR with two VR_ANTI_RANGEs,
+ the resulting VR_ANTI_RANGE is the same - intersection
+ of the two ranges. */
+ min = vrp_int_const_binop (MAX_EXPR, vr0.min, vr1.min);
+ max = vrp_int_const_binop (MIN_EXPR, vr0.max, vr1.max);
}
+ else
+ {
+ /* For operations that make the resulting range directly
+ proportional to the original ranges, apply the operation to
+ the same end of each range. */
+ min = vrp_int_const_binop (code, vr0.min, vr1.min);
+ max = vrp_int_const_binop (code, vr0.max, vr1.max);
+ }
- /* For operations that make the resulting range directly
- proportional to the original ranges, apply the operation to
- the same end of each range. */
- min = vrp_int_const_binop (code, vr0.min, vr1.min);
- max = vrp_int_const_binop (code, vr0.max, vr1.max);
-
/* If both additions overflowed the range kind is still correct.
This happens regularly with subtracting something in unsigned
arithmetic.
@@ -4505,28 +4515,35 @@
return need_assert;
}
-/* Compare two case labels sorting first by the destination label uid
+struct case_info
+{
+ tree expr;
+ basic_block bb;
+};
+
+/* Compare two case labels sorting first by the destination bb index
and then by the case value. */
static int
compare_case_labels (const void *p1, const void *p2)
{
- const_tree const case1 = *(const_tree const*)p1;
- const_tree const case2 = *(const_tree const*)p2;
- unsigned int uid1 = DECL_UID (CASE_LABEL (case1));
- unsigned int uid2 = DECL_UID (CASE_LABEL (case2));
+ const struct case_info *ci1 = (const struct case_info *) p1;
+ const struct case_info *ci2 = (const struct case_info *) p2;
+ int idx1 = ci1->bb->index;
+ int idx2 = ci2->bb->index;
- if (uid1 < uid2)
+ if (idx1 < idx2)
return -1;
- else if (uid1 == uid2)
+ else if (idx1 == idx2)
{
/* Make sure the default label is first in a group. */
- if (!CASE_LOW (case1))
+ if (!CASE_LOW (ci1->expr))
return -1;
- else if (!CASE_LOW (case2))
+ else if (!CASE_LOW (ci2->expr))
return 1;
else
- return tree_int_cst_compare (CASE_LOW (case1), CASE_LOW (case2));
+ return tree_int_cst_compare (CASE_LOW (ci1->expr),
+ CASE_LOW (ci2->expr));
}
else
return 1;
@@ -4547,8 +4564,8 @@
gimple_stmt_iterator bsi;
tree op;
edge e;
- tree vec2;
- size_t n = gimple_switch_num_labels(last);
+ struct case_info *ci;
+ size_t n = gimple_switch_num_labels (last);
#if GCC_VERSION >= 4000
unsigned int idx;
#else
@@ -4563,36 +4580,38 @@
return false;
/* Build a vector of case labels sorted by destination label. */
- vec2 = make_tree_vec (n);
+ ci = XNEWVEC (struct case_info, n);
for (idx = 0; idx < n; ++idx)
- TREE_VEC_ELT (vec2, idx) = gimple_switch_label (last, idx);
- qsort (&TREE_VEC_ELT (vec2, 0), n, sizeof (tree), compare_case_labels);
+ {
+ ci[idx].expr = gimple_switch_label (last, idx);
+ ci[idx].bb = label_to_block (CASE_LABEL (ci[idx].expr));
+ }
+ qsort (ci, n, sizeof (struct case_info), compare_case_labels);
for (idx = 0; idx < n; ++idx)
{
tree min, max;
- tree cl = TREE_VEC_ELT (vec2, idx);
+ tree cl = ci[idx].expr;
+ basic_block cbb = ci[idx].bb;
min = CASE_LOW (cl);
max = CASE_HIGH (cl);
/* If there are multiple case labels with the same destination
we need to combine them to a single value range for the edge. */
- if (idx + 1 < n
- && CASE_LABEL (cl) == CASE_LABEL (TREE_VEC_ELT (vec2, idx + 1)))
+ if (idx + 1 < n && cbb == ci[idx + 1].bb)
{
/* Skip labels until the last of the group. */
do {
++idx;
- } while (idx < n
- && CASE_LABEL (cl) == CASE_LABEL (TREE_VEC_ELT (vec2, idx)));
+ } while (idx < n && cbb == ci[idx].bb);
--idx;
/* Pick up the maximum of the case label range. */
- if (CASE_HIGH (TREE_VEC_ELT (vec2, idx)))
- max = CASE_HIGH (TREE_VEC_ELT (vec2, idx));
+ if (CASE_HIGH (ci[idx].expr))
+ max = CASE_HIGH (ci[idx].expr);
else
- max = CASE_LOW (TREE_VEC_ELT (vec2, idx));
+ max = CASE_LOW (ci[idx].expr);
}
/* Nothing to do if the range includes the default label until we
@@ -4601,7 +4620,7 @@
continue;
/* Find the edge to register the assert expr on. */
- e = find_edge (bb, label_to_block (CASE_LABEL (cl)));
+ e = find_edge (bb, cbb);
/* Register the necessary assertions for the operand in the
SWITCH_EXPR. */
@@ -4619,6 +4638,7 @@
}
}
+ XDELETEVEC (ci);
return need_assert;
}
diff -rNU3 -x *.info dist/gcc/unwind-dw2-fde-glibc.c dist.nbsd/gcc/unwind-dw2-fde-glibc.c
--- dist/gcc/unwind-dw2-fde-glibc.c Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/unwind-dw2-fde-glibc.c Wed Nov 7 11:47:23 2012
@@ -57,6 +57,12 @@
# define USE_PT_GNU_EH_FRAME
#endif
+#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
+ && defined(__NetBSD__)
+# define ElfW(n) Elf_##n
+# define USE_PT_GNU_EH_FRAME
+#endif
+
#if defined(USE_PT_GNU_EH_FRAME)
#ifndef __RELOC_POINTER
diff -rNU3 -x *.info dist/gcc/unwind-dw2-fde.c dist.nbsd/gcc/unwind-dw2-fde.c
--- dist/gcc/unwind-dw2-fde.c Wed Nov 7 13:39:39 2012
+++ dist.nbsd/gcc/unwind-dw2-fde.c Wed Nov 7 11:47:25 2012
@@ -209,7 +209,9 @@
out:
__gthread_mutex_unlock (&object_mutex);
+#if 0
gcc_assert (ob);
+#endif
return (void *) ob;
}
diff -rNU3 -x *.info dist/gcc/var-tracking.c dist.nbsd/gcc/var-tracking.c
--- dist/gcc/var-tracking.c Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/var-tracking.c Wed Nov 7 11:47:25 2012
@@ -4134,8 +4134,9 @@
VALUE_RECURSED_INTO (val) = true;
for (node = var->var_part[0].loc_chain; node; node = node->next)
- if (MEM_P (node->loc) && MEM_EXPR (node->loc) == expr
- && MEM_OFFSET (node->loc) == 0)
+ if (MEM_P (node->loc)
+ && MEM_EXPR (node->loc) == expr
+ && INT_MEM_OFFSET (node->loc) == 0)
{
where = node;
break;
@@ -4198,11 +4199,10 @@
{
for (loc = var->var_part[0].loc_chain; loc; loc = loc->next)
{
- /* We want to remove dying MEMs that doesn't refer to
- DECL. */
+ /* We want to remove dying MEMs that doesn't refer to DECL. */
if (GET_CODE (loc->loc) == MEM
&& (MEM_EXPR (loc->loc) != decl
- || MEM_OFFSET (loc->loc))
+ || INT_MEM_OFFSET (loc->loc) != 0)
&& !mem_dies_at_call (loc->loc))
break;
/* We want to move here MEMs that do refer to DECL. */
@@ -4246,7 +4246,7 @@
if (GET_CODE (loc->loc) != MEM
|| (MEM_EXPR (loc->loc) == decl
- && MEM_OFFSET (loc->loc) == 0)
+ && INT_MEM_OFFSET (loc->loc) == 0)
|| !mem_dies_at_call (loc->loc))
{
if (old_loc != loc->loc && emit_notes)
diff -rNU3 -x *.info dist/gcc/varasm.c dist.nbsd/gcc/varasm.c
--- dist/gcc/varasm.c Wed Nov 7 13:40:02 2012
+++ dist.nbsd/gcc/varasm.c Wed Nov 7 11:47:23 2012
@@ -30,6 +30,7 @@
#include "config.h"
#include "system.h"
#include "coretypes.h"
+#include "pointer-set.h"
#include "tm.h"
#include "rtl.h"
#include "tree.h"
@@ -2302,6 +2303,19 @@
it all the way to final. See PR 17982 for further discussion. */
static GTY(()) tree pending_assemble_externals;
+/* FIXME: Trunk is at GCC 4.8 now and the above problem still hasn't been
+ addressed properly. This caused PR 52640 due to O(external_decls**2)
+ lookups in the pending_assemble_externals TREE_LIST in assemble_external.
+ Paper over with this pointer set, which we use to see if we have already
+ added a decl to pending_assemble_externals without first traversing
+ the entire pending_assemble_externals list. See assemble_external(). */
+static struct pointer_set_t *pending_assemble_externals_set;
+
+/* Some targets delay some output to final using TARGET_ASM_FILE_END.
+ As a result, assemble_external can be called after the list of externals
+ is processed and the pointer set destroyed. */
+static bool pending_assemble_externals_processed;
+
#ifdef ASM_OUTPUT_EXTERNAL
/* True if DECL is a function decl for which no out-of-line copy exists.
It is assumed that DECL's assembler name has been set. */
@@ -2351,6 +2365,8 @@
assemble_external_real (TREE_VALUE (list));
pending_assemble_externals = 0;
+ pending_assemble_externals_processed = true;
+ pointer_set_destroy (pending_assemble_externals_set);
#endif
}
@@ -2391,7 +2407,13 @@
weak_decls = tree_cons (NULL, decl, weak_decls);
#ifdef ASM_OUTPUT_EXTERNAL
- if (value_member (decl, pending_assemble_externals) == NULL_TREE)
+ if (pending_assemble_externals_processed)
+ {
+ assemble_external_real (decl);
+ return;
+ }
+
+ if (! pointer_set_insert (pending_assemble_externals_set, decl))
pending_assemble_externals = tree_cons (NULL, decl,
pending_assemble_externals);
#endif
@@ -5952,6 +5974,10 @@
if (readonly_data_section == NULL)
readonly_data_section = text_section;
+
+#ifdef ASM_OUTPUT_EXTERNAL
+ pending_assemble_externals_set = pointer_set_create ();
+#endif
}
enum tls_model
diff -rNU3 -x *.info dist/include/ChangeLog dist.nbsd/include/ChangeLog
--- dist/include/ChangeLog Wed Nov 7 13:39:09 2012
+++ dist.nbsd/include/ChangeLog Wed Nov 7 11:47:23 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/intl/ChangeLog dist.nbsd/intl/ChangeLog
--- dist/intl/ChangeLog Wed Nov 7 13:39:02 2012
+++ dist.nbsd/intl/ChangeLog Wed Nov 7 11:47:48 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/libcpp/ChangeLog dist.nbsd/libcpp/ChangeLog
--- dist/libcpp/ChangeLog Wed Nov 7 13:39:10 2012
+++ dist.nbsd/libcpp/ChangeLog Wed Nov 7 11:47:43 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/libcpp/Makefile.in dist.nbsd/libcpp/Makefile.in
--- dist/libcpp/Makefile.in Wed Nov 7 13:39:10 2012
+++ dist.nbsd/libcpp/Makefile.in Wed Nov 7 11:47:43 2012
@@ -141,7 +141,7 @@
localedir.h: localedir.hs; @true
localedir.hs: Makefile
echo "#define LOCALEDIR \"$(localedir)\"" > localedir.new
- $(srcdir)/../move-if-change localedir.new localedir.h
+ $(SHELL) $(srcdir)/../move-if-change localedir.new localedir.h
echo timestamp > localedir.hs
# Installation rules and other phony targets
diff -rNU3 -x *.info dist/libcpp/files.c dist.nbsd/libcpp/files.c
--- dist/libcpp/files.c Wed Nov 7 13:39:10 2012
+++ dist.nbsd/libcpp/files.c Wed Nov 7 11:47:43 2012
@@ -30,6 +30,7 @@
#include "obstack.h"
#include "hashtab.h"
#include "md5.h"
+#include "../gcc/defaults.h"
#include <dirent.h>
/* Variable length record files on VMS will have a stat size that includes
@@ -219,20 +220,32 @@
static bool
open_file (_cpp_file *file)
{
+ const char *cpp_restricted;
+
+ GET_ENVIRONMENT(cpp_restricted, "CPP_RESTRICTED");
+
if (file->path[0] == '\0')
{
file->fd = 0;
set_stdin_to_binary_mode ();
}
else
- file->fd = open (file->path, O_RDONLY | O_NOCTTY | O_BINARY, 0666);
+ file->fd = open (file->path, O_RDONLY | O_NOCTTY | O_BINARY
+ | (cpp_restricted != NULL) ? O_NONBLOCK : 0, 0666);
+
if (file->fd != -1)
{
if (fstat (file->fd, &file->st) == 0)
{
if (!S_ISDIR (file->st.st_mode))
+ if (cpp_restricted != NULL
+ ? S_ISREG (file->st.st_mode) : !S_ISDIR (file->st.st_mode))
+
{
+ if (cpp_restricted)
+ fcntl(file->fd, F_SETFL,
+ fcntl(file->fd, F_GETFL, 0) & ~O_NONBLOCK);
file->err_no = 0;
return true;
}
diff -rNU3 -x *.info dist/libcpp/include/cpplib.h dist.nbsd/libcpp/include/cpplib.h
--- dist/libcpp/include/cpplib.h Wed Nov 7 13:39:10 2012
+++ dist.nbsd/libcpp/include/cpplib.h Wed Nov 7 11:47:43 2012
@@ -674,6 +674,9 @@
/* Set the include paths. */
extern void cpp_set_include_chains (cpp_reader *, cpp_dir *, cpp_dir *, int);
+/* Provide src:dst pair for __FILE__ remapping. */
+extern void add_cpp_remap_path (const char *);
+
/* Call these to get pointers to the options, callback, and deps
structures for a given reader. These pointers are good until you
call cpp_finish on that reader. You can either edit the callbacks
diff -rNU3 -x *.info dist/libcpp/init.c dist.nbsd/libcpp/init.c
--- dist/libcpp/init.c Wed Nov 7 13:39:10 2012
+++ dist.nbsd/libcpp/init.c Wed Nov 7 11:47:43 2012
@@ -25,7 +25,9 @@
#include "cpplib.h"
#include "internal.h"
#include "mkdeps.h"
+#ifdef ENABLE_NLS
#include "localedir.h"
+#endif
static void init_library (void);
static void mark_named_operators (cpp_reader *, int);
diff -rNU3 -x *.info dist/libcpp/internal.h dist.nbsd/libcpp/internal.h
--- dist/libcpp/internal.h Wed Nov 7 13:39:10 2012
+++ dist.nbsd/libcpp/internal.h Wed Nov 7 11:47:43 2012
@@ -179,6 +179,9 @@
/* Nonzero if first token on line is CPP_HASH. */
unsigned char in_directive;
+ /* Nonzero if we are collecting macro arguments */
+ unsigned char collecting_args;
+
/* Nonzero if in a directive that will handle padding tokens itself.
#include needs this to avoid problems with computed include and
spacing between tokens. */
diff -rNU3 -x *.info dist/libcpp/lex.c dist.nbsd/libcpp/lex.c
--- dist/libcpp/lex.c Wed Nov 7 13:39:10 2012
+++ dist.nbsd/libcpp/lex.c Wed Nov 7 11:47:43 2012
@@ -1092,6 +1092,8 @@
{
unsigned char *buffer;
unsigned int len, clen;
+ int convert_to_c = (pfile->state.in_directive || pfile->state.collecting_args)
+ && type == '/';
len = pfile->buffer->cur - from + 1; /* + 1 for the initial '/'. */
@@ -1106,7 +1108,7 @@
Note that the only time we encounter a directive here is
when we are saving comments in a "#define". */
- clen = (pfile->state.in_directive && type == '/') ? len + 2 : len;
+ clen = convert_to_c ? len + 2 : len;
buffer = _cpp_unaligned_alloc (pfile, clen);
@@ -1118,7 +1120,7 @@
memcpy (buffer + 1, from, len - 1);
/* Finish conversion to a C comment, if necessary. */
- if (pfile->state.in_directive && type == '/')
+ if (convert_to_c)
{
buffer[1] = '*';
buffer[clen - 2] = '*';
diff -rNU3 -x *.info dist/libcpp/macro.c dist.nbsd/libcpp/macro.c
--- dist/libcpp/macro.c Wed Nov 7 13:39:10 2012
+++ dist.nbsd/libcpp/macro.c Wed Nov 7 11:47:43 2012
@@ -111,6 +111,61 @@
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
+static size_t remap_pairs;
+static char **remap_src;
+static char **remap_dst;
+
+void
+add_cpp_remap_path (const char *arg)
+{
+ const char *arg_dst;
+ size_t len;
+
+ arg_dst = strchr(arg, ':');
+ if (arg_dst == NULL) {
+ fprintf(stderr, "Invalid argument for -iremap");
+ exit(1);
+ }
+ len = arg_dst - arg;
+ ++arg_dst;
+
+ remap_src = (char **) xrealloc(remap_src, sizeof(char *) * (remap_pairs + 1));
+ remap_dst = (char **) xrealloc(remap_dst, sizeof(char *) * (remap_pairs + 1));
+
+ remap_src[remap_pairs] = (char *) xmalloc(len + 1);
+ memcpy(remap_src[remap_pairs], arg, len);
+ remap_src[remap_pairs][len] = '\0';
+ remap_dst[remap_pairs] = xstrdup(arg_dst);
+ ++remap_pairs;
+}
+
+static const char *
+cpp_remap_file (const char *arg, char **tmp_name)
+{
+ char *result;
+ size_t i, len;
+
+ for (i = 0; i < remap_pairs; ++i) {
+ len = strlen (remap_src[i]);
+ if (strncmp (remap_src[i], arg, len))
+ continue;
+ if (arg[len] == '\0')
+ return xstrdup (remap_dst[i]);
+ if (arg[len] != '/')
+ continue;
+ arg += len;
+ len = strlen (remap_dst[i]);
+ result = (char *) xmalloc (len + strlen (arg) + 1);
+ memcpy(result, remap_dst[i], len);
+ strcpy(result + len, arg);
+ *tmp_name = result;
+
+ return result;
+ }
+
+ return arg;
+}
+
/* Helper function for builtin_macro. Returns the text generated by
a builtin macro. */
const uchar *
@@ -170,6 +225,7 @@
{
unsigned int len;
const char *name;
+ char *tmp_name;
uchar *buf;
map = linemap_lookup (pfile->line_table, pfile->line_table->highest_line);
@@ -177,12 +233,14 @@
while (! MAIN_FILE_P (map))
map = INCLUDED_FROM (pfile->line_table, map);
- name = map->to_file;
+ tmp_name = NULL;
+ name = cpp_remap_file (map->to_file, &tmp_name);
len = strlen (name);
buf = _cpp_unaligned_alloc (pfile, len * 2 + 3);
result = buf;
*buf = '"';
buf = cpp_quote_string (buf + 1, (const unsigned char *) name, len);
+ free (tmp_name);
*buf++ = '"';
*buf = '\0';
}
@@ -607,6 +665,7 @@
memset (args, 0, argc * sizeof (macro_arg));
buff->cur = (unsigned char *) &args[argc];
arg = args, argc = 0;
+ pfile->state.collecting_args = 1;
/* Collect the tokens making up each argument. We don't yet know
how many arguments have been supplied, whether too many or too
@@ -721,6 +780,7 @@
}
}
while (token->type != CPP_CLOSE_PAREN && token->type != CPP_EOF);
+ pfile->state.collecting_args = 0;
if (token->type == CPP_EOF)
{
diff -rNU3 -x *.info dist/libcpp/po/ChangeLog dist.nbsd/libcpp/po/ChangeLog
--- dist/libcpp/po/ChangeLog Wed Nov 7 13:39:10 2012
+++ dist.nbsd/libcpp/po/ChangeLog Wed Nov 7 11:47:43 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/libdecnumber/ChangeLog dist.nbsd/libdecnumber/ChangeLog
--- dist/libdecnumber/ChangeLog Wed Nov 7 13:39:01 2012
+++ dist.nbsd/libdecnumber/ChangeLog Wed Nov 7 11:47:49 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/libgcc/ChangeLog dist.nbsd/libgcc/ChangeLog
--- dist/libgcc/ChangeLog Wed Nov 7 13:39:32 2012
+++ dist.nbsd/libgcc/ChangeLog Wed Nov 7 11:47:49 2012
@@ -1,3 +1,13 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
+2011-08-23 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/64/sfp-machine.h (ASM_INVALID): New define.
+ (ASM_DIVZERO): Ditto.
+ (FP_HANLDE_EXCEPTIONS): Use ASM_INVALID and ASM_DIVZERO.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
@@ -21,7 +31,7 @@
2010-09-12 Gerald Pfeifer <gerald@pfeifer.com>
Andrew Pinski <pinskia@gmail.com>
- PR target/40959
+ PR target/40959
* config.host (ia64*-*-freebsd*): Set extra_parts. Set tmake_file.
2010-07-31 Release Manager
diff -rNU3 -x *.info dist/libgcc/config/i386/64/sfp-machine.h dist.nbsd/libgcc/config/i386/64/sfp-machine.h
--- dist/libgcc/config/i386/64/sfp-machine.h Wed Nov 7 13:39:33 2012
+++ dist.nbsd/libgcc/config/i386/64/sfp-machine.h Wed Nov 7 11:47:48 2012
@@ -79,17 +79,25 @@
unsigned short int __unused5;
};
+#ifdef __AVX__
+ #define ASM_INVALID "vdivss %0, %0, %0"
+ #define ASM_DIVZERO "vdivss %1, %0, %0"
+#else
+ #define ASM_INVALID "divss %0, %0"
+ #define ASM_DIVZERO "divss %1, %0"
+#endif
+
#define FP_HANDLE_EXCEPTIONS \
do { \
if (_fex & FP_EX_INVALID) \
{ \
float f = 0.0; \
- __asm__ __volatile__ ("divss %0, %0 " : : "x" (f)); \
+ __asm__ __volatile__ (ASM_INVALID : : "x" (f)); \
} \
if (_fex & FP_EX_DIVZERO) \
{ \
float f = 1.0, g = 0.0; \
- __asm__ __volatile__ ("divss %1, %0" : : "x" (f), "x" (g)); \
+ __asm__ __volatile__ (ASM_DIVZERO : : "x" (f), "x" (g)); \
} \
if (_fex & FP_EX_OVERFLOW) \
{ \
diff -rNU3 -x *.info dist/libgcc/config/libbid/ChangeLog dist.nbsd/libgcc/config/libbid/ChangeLog
--- dist/libgcc/config/libbid/ChangeLog Wed Nov 7 13:39:32 2012
+++ dist.nbsd/libgcc/config/libbid/ChangeLog Wed Nov 7 11:47:48 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/libgcc/config.host dist.nbsd/libgcc/config.host
--- dist/libgcc/config.host Wed Nov 7 13:39:32 2012
+++ dist.nbsd/libgcc/config.host Wed Nov 7 11:47:49 2012
@@ -269,6 +269,8 @@
;;
hppa[12]*-*-hpux11*)
;;
+hppa*-*-netbsd*)
+ ;;
i[34567]86-*-darwin*)
;;
x86_64-*-darwin*)
diff -rNU3 -x *.info dist/libgomp/ChangeLog dist.nbsd/libgomp/ChangeLog
--- dist/libgomp/ChangeLog Wed Nov 7 13:39:09 2012
+++ dist.nbsd/libgomp/ChangeLog Wed Nov 7 11:47:42 2012
@@ -1,3 +1,19 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
+2011-05-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/48894
+ * fortran.c: Include limits.h.
+ (TO_INT): Define.
+ (omp_set_dynamic_8_, omp_set_num_threads_8_): Use !!*set instead of
+ *set.
+ (omp_set_num_threads_8_, omp_set_schedule_8_,
+ omp_set_max_active_levels_8_, omp_get_ancestor_thread_num_8_,
+ omp_get_team_size_8_): Use TO_INT macro.
+ * testsuite/libgomp.fortran/pr48894.f90: New test.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/libgomp/fortran.c dist.nbsd/libgomp/fortran.c
--- dist/libgomp/fortran.c Wed Nov 7 13:39:09 2012
+++ dist.nbsd/libgomp/fortran.c Wed Nov 7 11:47:42 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2007, 2008, 2009, 2011 Free Software Foundation, Inc.
Contributed by Jakub Jelinek <jakub@redhat.com>.
This file is part of the GNU OpenMP Library (libgomp).
@@ -27,6 +27,7 @@
#include "libgomp.h"
#include "libgomp_f.h"
#include <stdlib.h>
+#include <limits.h>
#ifdef HAVE_ATTRIBUTE_ALIAS
/* Use internal aliases if possible. */
@@ -244,6 +245,8 @@
omp_lock_symver (omp_test_nest_lock_)
#endif
+#define TO_INT(x) ((x) > INT_MIN ? (x) < INT_MAX ? (x) : INT_MAX : INT_MIN)
+
void
omp_set_dynamic_ (const int32_t *set)
{
@@ -253,7 +256,7 @@
void
omp_set_dynamic_8_ (const int64_t *set)
{
- omp_set_dynamic (*set);
+ omp_set_dynamic (!!*set);
}
void
@@ -265,7 +268,7 @@
void
omp_set_nested_8_ (const int64_t *set)
{
- omp_set_nested (*set);
+ omp_set_nested (!!*set);
}
void
@@ -277,7 +280,7 @@
void
omp_set_num_threads_8_ (const int64_t *set)
{
- omp_set_num_threads (*set);
+ omp_set_num_threads (TO_INT (*set));
}
int32_t
@@ -343,7 +346,7 @@
void
omp_set_schedule_8_ (const int32_t *kind, const int64_t *modifier)
{
- omp_set_schedule (*kind, *modifier);
+ omp_set_schedule (*kind, TO_INT (*modifier));
}
void
@@ -381,7 +384,7 @@
void
omp_set_max_active_levels_8_ (const int64_t *levels)
{
- omp_set_max_active_levels (*levels);
+ omp_set_max_active_levels (TO_INT (*levels));
}
int32_t
@@ -405,7 +408,7 @@
int32_t
omp_get_ancestor_thread_num_8_ (const int64_t *level)
{
- return omp_get_ancestor_thread_num (*level);
+ return omp_get_ancestor_thread_num (TO_INT (*level));
}
int32_t
@@ -417,7 +420,7 @@
int32_t
omp_get_team_size_8_ (const int64_t *level)
{
- return omp_get_team_size (*level);
+ return omp_get_team_size (TO_INT (*level));
}
int32_t
diff -rNU3 -x *.info dist/libgomp/testsuite/libgomp.fortran/pr48894.f90 dist.nbsd/libgomp/testsuite/libgomp.fortran/pr48894.f90
--- dist/libgomp/testsuite/libgomp.fortran/pr48894.f90 Thu Jan 1 00:00:00 1970
+++ dist.nbsd/libgomp/testsuite/libgomp.fortran/pr48894.f90 Wed Nov 7 11:47:42 2012
@@ -0,0 +1,23 @@
+! PR fortran/48894
+! { dg-do run }
+! { dg-options "-fdefault-integer-8" }
+
+ use omp_lib
+ integer, parameter :: zero = 0
+ integer :: err
+ logical :: l
+ err = 0
+ !$omp parallel
+ !$omp parallel private (l)
+ l = omp_get_ancestor_thread_num (-HUGE (zero)) .ne. -1
+ l = l .or. (omp_get_ancestor_thread_num (HUGE (zero)) .ne. -1)
+ l = l .or. (omp_get_team_size (-HUGE (zero)) .ne. -1)
+ l = l .or. (omp_get_team_size (HUGE (zero)) .ne. -1)
+ if (l) then
+ !$omp atomic
+ err = err + 1
+ endif
+ !$omp end parallel
+ !$omp end parallel
+ if (err .ne. 0) call abort
+end
diff -rNU3 -x *.info dist/libiberty/ChangeLog dist.nbsd/libiberty/ChangeLog
--- dist/libiberty/ChangeLog Wed Nov 7 13:39:32 2012
+++ dist.nbsd/libiberty/ChangeLog Wed Nov 7 11:47:49 2012
@@ -1,3 +1,30 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
+2012-02-09 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
+ 2012-01-26 Jakub Jelinek <jakub@redhat.com>
+
+ * make-relative-prefix.c (make_relative_prefix_1): Avoid warning
+ about using preprocessor directives inside of macro arguments.
+
+ 2012-01-02 Jakub Jelinek <jakub@redhat.com>
+
+ * make-relative-prefix.c (make_relative_prefix_1): Avoid
+ stack overflow if PATH contains just a single entry and
+ HOST_EXECUTABLE_SUFFIX needs to be used.
+
+ PR driver/48306
+ * make-relative-prefix.c: Include sys/stat.h.
+ (make_relative_prefix_1): If access succeeds, check also stat
+ if nstore is a regular file.
+
+2011-08-06 Uros Bizjak <ubizjak@gmail.com>
+
+ * testsuite/test-expandargv.c (writeout_test): Check result of fwrite.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
@@ -284,7 +311,7 @@
2009-04-29 Julian Brown <julian@codesourcery.com>
- * pex-win32.c (pex_win32_pipe): Add _O_NOINHERIT.
+ * pex-win32.c (pex_win32_pipe): Add _O_NOINHERIT.
(pex_win32_exec_child): Ensure each process has only one handle open
on pipe endpoints. Close standard input after creating child for
symmetry with standard output/standard error.
@@ -302,7 +329,7 @@
section, so that the native build does detect them at configure
time.
* configure: Regenerated.
-
+
2009-04-13 Ozkan Sezer <sezeroz@gmail.com>
PR target/39397
@@ -402,7 +429,7 @@
2008-10-08 David Edelsohn <edelsohn@gnu.org>
* xstrdup.c: Include <sys/types.h> after "config.h"
-
+
2008-10-07 Jan Kratochvil <jan.kratochvil@redhat.com>
* configure.ac: Call AC_SYS_LARGEFILE.
diff -rNU3 -x *.info dist/libiberty/floatformat.c dist.nbsd/libiberty/floatformat.c
--- dist/libiberty/floatformat.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/libiberty/floatformat.c Wed Nov 7 11:47:49 2012
@@ -473,7 +473,11 @@
if (nan)
dto = NAN;
else
+#ifdef __vax__
+ dto = HUGE_VAL;
+#else
dto = INFINITY;
+#endif
if (get_field (ufrom, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1))
dto = -dto;
diff -rNU3 -x *.info dist/libiberty/make-relative-prefix.c dist.nbsd/libiberty/make-relative-prefix.c
--- dist/libiberty/make-relative-prefix.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/libiberty/make-relative-prefix.c Wed Nov 7 11:47:49 2012
@@ -57,6 +57,9 @@
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
#include <string.h>
@@ -244,10 +247,15 @@
{
char *startp, *endp, *nstore;
size_t prefixlen = strlen (temp) + 1;
+ size_t len;
if (prefixlen < 2)
prefixlen = 2;
- nstore = (char *) alloca (prefixlen + strlen (progname) + 1);
+ len = prefixlen + strlen (progname) + 1;
+#ifdef HAVE_HOST_EXECUTABLE_SUFFIX
+ len += strlen (HOST_EXECUTABLE_SUFFIX);
+#endif
+ nstore = (char *) alloca (len);
startp = endp = temp;
while (1)
@@ -262,7 +270,7 @@
}
else
{
- strncpy (nstore, startp, endp - startp);
+ memcpy (nstore, startp, endp - startp);
if (! IS_DIR_SEPARATOR (endp[-1]))
{
nstore[endp - startp] = DIR_SEPARATOR;
@@ -278,8 +286,14 @@
#endif
)
{
- progname = nstore;
- break;
+#if defined (HAVE_SYS_STAT_H) && defined (S_ISREG)
+ struct stat st;
+ if (stat (nstore, &st) >= 0 && S_ISREG (st.st_mode))
+#endif
+ {
+ progname = nstore;
+ break;
+ }
}
if (*endp == 0)
diff -rNU3 -x *.info dist/libiberty/strerror.c dist.nbsd/libiberty/strerror.c
--- dist/libiberty/strerror.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/libiberty/strerror.c Wed Nov 7 11:47:49 2012
@@ -347,7 +347,7 @@
ENTRY(EPROTOTYPE, "EPROTOTYPE", "Protocol wrong type for socket"),
#endif
#if defined (ENOPROTOOPT)
- ENTRY(ENOPROTOOPT, "ENOPROTOOPT", "Protocol not available"),
+ ENTRY(ENOPROTOOPT, "ENOPROTOOPT", "Protocol option not available"),
#endif
#if defined (EPROTONOSUPPORT)
ENTRY(EPROTONOSUPPORT, "EPROTONOSUPPORT", "Protocol not supported"),
diff -rNU3 -x *.info dist/libiberty/testsuite/test-expandargv.c dist.nbsd/libiberty/testsuite/test-expandargv.c
--- dist/libiberty/testsuite/test-expandargv.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/libiberty/testsuite/test-expandargv.c Wed Nov 7 11:47:49 2012
@@ -189,7 +189,7 @@
{
char filename[256];
FILE *fd;
- size_t len;
+ size_t len, sys_fwrite;
char * parse;
/* Unique filename per test */
@@ -208,7 +208,10 @@
/* Run all possible replaces */
run_replaces (parse);
- fwrite (parse, len, sizeof (char), fd);
+ sys_fwrite = fwrite (parse, sizeof (char), len, fd);
+ if (sys_fwrite != len)
+ fatal_error (__LINE__, "Failed to write to test file.", errno);
+
free (parse);
fclose (fd);
}
diff -rNU3 -x *.info dist/libmudflap/ChangeLog dist.nbsd/libmudflap/ChangeLog
--- dist/libmudflap/ChangeLog Wed Nov 7 13:39:32 2012
+++ dist.nbsd/libmudflap/ChangeLog Wed Nov 7 11:47:43 2012
@@ -1,3 +1,15 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
+2012-02-09 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
+ 2012-01-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR libmudflap/40778
+ * testsuite/libmudflap.c/fail68-frag.c: New test.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/libmudflap/mf-hooks1.c dist.nbsd/libmudflap/mf-hooks1.c
--- dist/libmudflap/mf-hooks1.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/libmudflap/mf-hooks1.c Wed Nov 7 11:47:43 2012
@@ -33,7 +33,7 @@
/* These attempt to coax various unix flavours to declare all our
needed tidbits in the system headers. */
-#if !defined(__FreeBSD__) && !defined(__APPLE__)
+#if !defined(__FreeBSD__) && !defined(__APPLE__) && !defined(__NetBSD__)
#define _POSIX_SOURCE
#endif /* Some BSDs break <sys/socket.h> if this is defined. */
#define _GNU_SOURCE
@@ -238,7 +238,7 @@
static int freeq_initialized = 0;
DECLARE(void, free, void *);
- BEGIN_PROTECT (free, buf);
+ BEGIN_PROTECTV (free, buf);
if (UNLIKELY(buf == NULL))
return;
diff -rNU3 -x *.info dist/libmudflap/mf-hooks2.c dist.nbsd/libmudflap/mf-hooks2.c
--- dist/libmudflap/mf-hooks2.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/libmudflap/mf-hooks2.c Wed Nov 7 11:47:43 2012
@@ -32,9 +32,10 @@
/* These attempt to coax various unix flavours to declare all our
needed tidbits in the system headers. */
-#if !defined(__FreeBSD__) && !defined(__APPLE__)
+#if !defined(__FreeBSD__) && !defined(__APPLE__) && !defined(__NetBSD__)
#define _POSIX_SOURCE
#endif /* Some BSDs break <sys/socket.h> if this is defined. */
+#define _NETBSD_SOURCE
#define _GNU_SOURCE
#define _XOPEN_SOURCE
#define _BSD_TYPES
diff -rNU3 -x *.info dist/libmudflap/mf-impl.h dist.nbsd/libmudflap/mf-impl.h
--- dist/libmudflap/mf-impl.h Wed Nov 7 13:39:32 2012
+++ dist.nbsd/libmudflap/mf-impl.h Wed Nov 7 11:47:43 2012
@@ -273,12 +273,12 @@
#ifdef LIBMUDFLAPTH
#define VERBOSE_TRACE(...) \
do { if (UNLIKELY (__mf_opts.verbose_trace)) { \
- fprintf (stderr, "mf(%u): ", (unsigned) pthread_self ()); \
+ fprintf (stderr, "mf(%ju): ", (intmax_t)(intptr_t) pthread_self ()); \
fprintf (stderr, __VA_ARGS__); \
} } while (0)
#define TRACE(...) \
do { if (UNLIKELY (__mf_opts.trace_mf_calls)) { \
- fprintf (stderr, "mf(%u): ", (unsigned) pthread_self ()); \
+ fprintf (stderr, "mf(%ju): ", (intmax_t)(intptr_t) pthread_self ()); \
fprintf (stderr, __VA_ARGS__); \
} } while (0)
#else
@@ -390,6 +390,29 @@
else if (UNLIKELY (__mf_get_state () == in_malloc)) \
{ \
return CALL_REAL(fname, __VA_ARGS__); \
+ } \
+ else \
+ { \
+ TRACE ("%s\n", __PRETTY_FUNCTION__); \
+ }
+
+#define BEGIN_PROTECTV(fname, ...) \
+ if (UNLIKELY (__mf_starting_p)) \
+ { \
+ CALL_BACKUP(fname, __VA_ARGS__); \
+ return; \
+ } \
+ else if (UNLIKELY (__mf_get_state () == reentrant)) \
+ { \
+ extern unsigned long __mf_reentrancy; \
+ __mf_reentrancy ++; \
+ CALL_REAL(fname, __VA_ARGS__); \
+ return; \
+ } \
+ else if (UNLIKELY (__mf_get_state () == in_malloc)) \
+ { \
+ CALL_REAL(fname, __VA_ARGS__); \
+ return; \
} \
else \
{ \
diff -rNU3 -x *.info dist/libmudflap/mf-runtime.c dist.nbsd/libmudflap/mf-runtime.c
--- dist/libmudflap/mf-runtime.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/libmudflap/mf-runtime.c Wed Nov 7 11:47:43 2012
@@ -31,9 +31,10 @@
/* These attempt to coax various unix flavours to declare all our
needed tidbits in the system headers. */
-#if !defined(__FreeBSD__) && !defined(__APPLE__)
+#if !defined(__FreeBSD__) && !defined(__APPLE__) && !defined(__NetBSD__)
#define _POSIX_SOURCE
#endif /* Some BSDs break <sys/socket.h> if this is defined. */
+#define _NETBSD_SOURCE
#define _GNU_SOURCE
#define _XOPEN_SOURCE
#define _BSD_TYPES
@@ -165,7 +166,7 @@
#define LOOKUP_CACHE_SHIFT_DFL 2
struct __mf_cache __mf_lookup_cache [LOOKUP_CACHE_SIZE_MAX];
-uintptr_t __mf_lc_mask = LOOKUP_CACHE_MASK_DFL;
+__mf_uintptr_t __mf_lc_mask = LOOKUP_CACHE_MASK_DFL;
unsigned char __mf_lc_shift = LOOKUP_CACHE_SHIFT_DFL;
#define LOOKUP_CACHE_SIZE (__mf_lc_mask + 1)
@@ -192,13 +193,19 @@
/* Use HAVE_PTHREAD_H here instead of LIBMUDFLAPTH, so that even
the libmudflap.la (no threading support) can diagnose whether
the application is linked with -lpthread. See __mf_usage() below. */
-#if HAVE_PTHREAD_H
-#ifdef _POSIX_THREADS
-#pragma weak pthread_join
+#ifdef LIBMUDFLAPTH
+# if HAVE_PTHREAD_H
+# ifdef _POSIX_THREADS
+# include <pthread.h>
+# else
+# define pthread_join NULL
+# endif
+# else
+# define pthread_join NULL
+# endif
#else
-#define pthread_join NULL
+# define pthread_join NULL
#endif
-#endif
/* ------------------------------------------------------------------------ */
@@ -1762,7 +1769,7 @@
"bounds=[%p,%p] size=%lu area=%s check=%ur/%uw liveness=%u%s\n"
"alloc time=%lu.%06lu pc=%p"
#ifdef LIBMUDFLAPTH
- " thread=%u"
+ " thread=%ju"
#endif
"\n",
(obj->deallocated_p ? "dead " : ""),
@@ -1781,7 +1788,7 @@
obj->alloc_time.tv_sec, obj->alloc_time.tv_usec,
(void *) obj->alloc_pc
#ifdef LIBMUDFLAPTH
- , (unsigned) obj->alloc_thread
+ , (intmax_t)(intptr_t)obj->alloc_thread
#endif
);
@@ -1798,13 +1805,13 @@
{
fprintf (stderr, "dealloc time=%lu.%06lu pc=%p"
#ifdef LIBMUDFLAPTH
- " thread=%u"
+ " thread=%ju"
#endif
"\n",
obj->dealloc_time.tv_sec, obj->dealloc_time.tv_usec,
(void *) obj->dealloc_pc
#ifdef LIBMUDFLAPTH
- , (unsigned) obj->dealloc_thread
+ , (intmax_t)(intptr_t)obj->dealloc_thread
#endif
);
@@ -2318,7 +2325,7 @@
#ifndef NDEBUG
static void
-write_itoa (int fd, unsigned n)
+write_itoa (int fd, intmax_t n)
{
enum x { bufsize = sizeof(n)*4 };
char buf [bufsize];
@@ -2347,7 +2354,7 @@
write2("mf");
#ifdef LIBMUDFLAPTH
write2("(");
- write_itoa (2, (unsigned) pthread_self ());
+ write_itoa (2, (intmax_t)(intptr_t)pthread_self ());
write2(")");
#endif
write2(": assertion failure: `");
diff -rNU3 -x *.info dist/libmudflap/mf-runtime.h dist.nbsd/libmudflap/mf-runtime.h
--- dist/libmudflap/mf-runtime.h Wed Nov 7 13:39:32 2012
+++ dist.nbsd/libmudflap/mf-runtime.h Wed Nov 7 11:47:43 2012
@@ -31,7 +31,7 @@
#define MF_RUNTIME_H
typedef void *__mf_ptr_t;
-typedef unsigned int __mf_uintptr_t __attribute__ ((__mode__ (__pointer__)));
+typedef unsigned long __mf_uintptr_t __attribute__ ((__mode__ (__pointer__)));
typedef __SIZE_TYPE__ __mf_size_t;
/* Global declarations used by instrumentation. When _MUDFLAP is
@@ -81,11 +81,11 @@
#endif
extern void __mf_check (void *ptr, __mf_size_t sz, int type, const char *location)
- __attribute((nothrow));
+ __attribute__((nothrow));
extern void __mf_register (void *ptr, __mf_size_t sz, int type, const char *name)
- __attribute((nothrow));
+ __attribute__((nothrow));
extern void __mf_unregister (void *ptr, __mf_size_t sz, int type)
- __attribute((nothrow));
+ __attribute__((nothrow));
extern unsigned __mf_watch (void *ptr, __mf_size_t sz);
extern unsigned __mf_unwatch (void *ptr, __mf_size_t sz);
extern void __mf_report ();
diff -rNU3 -x *.info dist/libmudflap/testsuite/libmudflap.c/fail68-frag.c dist.nbsd/libmudflap/testsuite/libmudflap.c/fail68-frag.c
--- dist/libmudflap/testsuite/libmudflap.c/fail68-frag.c Thu Jan 1 00:00:00 1970
+++ dist.nbsd/libmudflap/testsuite/libmudflap.c/fail68-frag.c Wed Nov 7 11:47:43 2012
@@ -0,0 +1,27 @@
+/* PR libmudflap/40778 */
+
+char p[32];
+static int j;
+
+__attribute__((noinline))
+static void foo (int i)
+{
+ if (j++ == 0)
+ p[i + 4] = 12;
+ else
+ p[i - 4] = 13;
+}
+
+int
+main ()
+{
+ foo (30);
+ foo (30);
+ foo (30);
+ return 0;
+}
+
+/* { dg-output "mudflap violation 1.*" } */
+/* { dg-output "Nearby object 1.*" } */
+/* { dg-output "mudflap object.*name.*p" } */
+/* { dg-do run { xfail *-*-* } } */
diff -rNU3 -x *.info dist/libobjc/ChangeLog dist.nbsd/libobjc/ChangeLog
--- dist/libobjc/ChangeLog Wed Nov 7 13:39:09 2012
+++ dist.nbsd/libobjc/ChangeLog Wed Nov 7 11:47:23 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/libobjc/archive.c dist.nbsd/libobjc/archive.c
--- dist/libobjc/archive.c Wed Nov 7 13:39:09 2012
+++ dist.nbsd/libobjc/archive.c Wed Nov 7 11:47:23 2012
@@ -365,7 +365,7 @@
}
}
-inline int
+int
__objc_write_object (struct objc_typed_stream *stream, id object)
{
unsigned char buf = '\0';
@@ -431,7 +431,7 @@
}
}
-inline int
+int
__objc_write_class (struct objc_typed_stream *stream, struct objc_class *class)
{
__objc_write_extension (stream, _BX_CLASS);
@@ -460,7 +460,7 @@
}
-inline int
+int
__objc_write_selector (struct objc_typed_stream *stream, SEL selector)
{
const char *sel_name;
@@ -503,7 +503,7 @@
** Read operations
*/
-inline int
+int
objc_read_char (struct objc_typed_stream *stream, char *val)
{
unsigned char buf;
@@ -530,7 +530,7 @@
}
-inline int
+int
objc_read_unsigned_char (struct objc_typed_stream *stream, unsigned char *val)
{
unsigned char buf;
@@ -551,7 +551,7 @@
return len;
}
-inline int
+int
objc_read_short (struct objc_typed_stream *stream, short *value)
{
unsigned char buf[sizeof (short) + 1];
@@ -579,7 +579,7 @@
return len;
}
-inline int
+int
objc_read_unsigned_short (struct objc_typed_stream *stream,
unsigned short *value)
{
@@ -607,7 +607,7 @@
}
-inline int
+int
objc_read_int (struct objc_typed_stream *stream, int *value)
{
unsigned char buf[sizeof (int) + 1];
@@ -634,7 +634,7 @@
return len;
}
-inline int
+int
objc_read_long (struct objc_typed_stream *stream, long *value)
{
unsigned char buf[sizeof (long) + 1];
@@ -661,7 +661,7 @@
return len;
}
-inline int
+int
__objc_read_nbyte_uint (struct objc_typed_stream *stream,
unsigned int nbytes, unsigned int *val)
{
@@ -680,7 +680,7 @@
}
-inline int
+int
objc_read_unsigned_int (struct objc_typed_stream *stream,
unsigned int *value)
{
@@ -717,7 +717,7 @@
}
-inline int
+int
objc_read_unsigned_long (struct objc_typed_stream *stream,
unsigned long *value)
{
@@ -735,7 +735,7 @@
return len;
}
-inline int
+int
objc_read_string (struct objc_typed_stream *stream,
char **string)
{
diff -rNU3 -x *.info dist/libobjc/encoding.c dist.nbsd/libobjc/encoding.c
--- dist/libobjc/encoding.c Wed Nov 7 13:39:09 2012
+++ dist.nbsd/libobjc/encoding.c Wed Nov 7 11:47:23 2012
@@ -544,7 +544,7 @@
occurring in method prototype encodings.
*/
-inline const char *
+const char *
objc_skip_type_qualifiers (const char *type)
{
while (*type == _C_CONST
@@ -682,7 +682,7 @@
Skip an offset as part of a method encoding. This is prepended by a
'+' if the argument is passed in registers.
*/
-inline const char *
+const char *
objc_skip_offset (const char *type)
{
if (*type == '+')
diff -rNU3 -x *.info dist/libobjc/hash.c dist.nbsd/libobjc/hash.c
--- dist/libobjc/hash.c Wed Nov 7 13:39:09 2012
+++ dist.nbsd/libobjc/hash.c Wed Nov 7 11:47:23 2012
@@ -151,8 +151,8 @@
(*cachep)->hash_func,
(*cachep)->compare_func);
- DEBUG_PRINTF ("Expanding cache %#x from %d to %d\n",
- (int) *cachep, (*cachep)->size, new->size);
+ DEBUG_PRINTF ("Expanding cache %p from %d to %d\n",
+ *cachep, (*cachep)->size, new->size);
/* Copy the nodes from the first hash table to the new one. */
while ((node1 = objc_hash_next (*cachep, node1)))
diff -rNU3 -x *.info dist/libobjc/sendmsg.c dist.nbsd/libobjc/sendmsg.c
--- dist/libobjc/sendmsg.c Wed Nov 7 13:39:09 2012
+++ dist.nbsd/libobjc/sendmsg.c Wed Nov 7 11:47:23 2012
@@ -90,7 +90,6 @@
id nil_method (id, SEL);
/* Given a selector, return the proper forwarding implementation. */
-inline
IMP
__objc_get_forward_imp (id rcv, SEL sel)
{
@@ -129,7 +128,6 @@
}
/* Given a class and selector, return the selector's implementation. */
-inline
IMP
get_imp (Class class, SEL sel)
{
@@ -190,7 +188,6 @@
/* Query if an object can respond to a selector, returns YES if the
object implements the selector otherwise NO. Does not check if the
method can be forwarded. */
-inline
BOOL
__objc_responds_to (id object, SEL sel)
{
@@ -215,7 +212,6 @@
/* This is the lookup function. All entries in the table are either a
valid method *or* zero. If zero then either the dispatch table
needs to be installed or it doesn't exist and forwarding is attempted. */
-inline
IMP
objc_msg_lookup (id receiver, SEL op)
{
@@ -705,7 +701,6 @@
/* Returns the uninstalled dispatch table indicator.
If a class' dispatch table points to __objc_uninstalled_dtable
then that means it needs its dispatch table to be installed. */
-inline
struct sarray *
objc_get_uninstalled_dtable ()
{
diff -rNU3 -x *.info dist/libssp/ChangeLog dist.nbsd/libssp/ChangeLog
--- dist/libssp/ChangeLog Wed Nov 7 13:39:32 2012
+++ dist.nbsd/libssp/ChangeLog Wed Nov 7 11:47:48 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/libstdc++-v3/ChangeLog dist.nbsd/libstdc++-v3/ChangeLog
--- dist/libstdc++-v3/ChangeLog Wed Nov 7 13:39:03 2012
+++ dist.nbsd/libstdc++-v3/ChangeLog Wed Nov 7 11:47:44 2012
@@ -1,3 +1,17 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
+2011-07-24 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2011-06-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/49293
+ * testsuite/22_locale/time_get/get_weekday/char/38081-1.cc: Tweak
+ for glibc 2.14.
+ * testsuite/22_locale/time_get/get_weekday/char/38081-2.cc: Likewise.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h dist.nbsd/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
--- dist/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h Wed Nov 7 13:39:09 2012
+++ dist.nbsd/libstdc++-v3/config/os/bsd/netbsd/ctype_base.h Wed Nov 7 11:47:43 2012
@@ -42,17 +42,17 @@
// NB: Offsets into ctype<char>::_M_table force a particular size
// on the mask type. Because of this, we don't use an enum.
typedef unsigned char mask;
- static const mask upper = _U;
- static const mask lower = _L;
- static const mask alpha = _U | _L;
- static const mask digit = _N;
- static const mask xdigit = _N | _X;
- static const mask space = _S;
- static const mask print = _P | _U | _L | _N | _B;
- static const mask graph = _P | _U | _L | _N;
- static const mask cntrl = _C;
- static const mask punct = _P;
- static const mask alnum = _U | _L | _N;
+ static const mask upper = _CTYPE_U;
+ static const mask lower = _CTYPE_L;
+ static const mask alpha = _CTYPE_U | _CTYPE_L;
+ static const mask digit = _CTYPE_N;
+ static const mask xdigit = _CTYPE_N | _CTYPE_X;
+ static const mask space = _CTYPE_S;
+ static const mask print = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N | _CTYPE_B;
+ static const mask graph = _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N;
+ static const mask cntrl = _CTYPE_C;
+ static const mask punct = _CTYPE_P;
+ static const mask alnum = _CTYPE_U | _CTYPE_L | _CTYPE_N;
};
_GLIBCXX_END_NAMESPACE
diff -rNU3 -x *.info dist/libstdc++-v3/crossconfig.m4 dist.nbsd/libstdc++-v3/crossconfig.m4
--- dist/libstdc++-v3/crossconfig.m4 Wed Nov 7 13:39:02 2012
+++ dist.nbsd/libstdc++-v3/crossconfig.m4 Wed Nov 7 11:47:44 2012
@@ -159,14 +159,51 @@
SECTION_FLAGS='-ffunction-sections -fdata-sections'
AC_SUBST(SECTION_FLAGS)
GLIBCXX_CHECK_LINKER_FEATURES
+
+ AC_DEFINE(HAVE_ICONV)
+ AC_DEFINE(HAVE_ICONV_CLOSE)
+ AC_DEFINE(HAVE_ICONV_OPEN)
+ AC_DEFINE(HAVE_LC_MESSAGES)
+
+ AC_DEFINE(HAVE_MMAP)
+ AC_DEFINE(HAVE_GETPAGESIZE)
+ AC_DEFINE(HAVE_SETENV)
+ AC_DEFINE(HAVE_SIGSETJMP)
+
AC_DEFINE(HAVE_FINITEF)
AC_DEFINE(HAVE_FINITE)
AC_DEFINE(HAVE_FREXPF)
+ AC_DEFINE(HAVE_HYPOT)
AC_DEFINE(HAVE_HYPOTF)
AC_DEFINE(HAVE_ISINF)
AC_DEFINE(HAVE_ISINFF)
AC_DEFINE(HAVE_ISNAN)
AC_DEFINE(HAVE_ISNANF)
+ AC_DEFINE(HAVE_ACOSF)
+ AC_DEFINE(HAVE_ASINF)
+ AC_DEFINE(HAVE_ATAN2F)
+ AC_DEFINE(HAVE_ATANF)
+ AC_DEFINE(HAVE_CEILF)
+ AC_DEFINE(HAVE_COSF)
+ AC_DEFINE(HAVE_COSHF)
+ AC_DEFINE(HAVE_EXPF)
+ AC_DEFINE(HAVE_FABSF)
+ AC_DEFINE(HAVE_FLOORF)
+ AC_DEFINE(HAVE_FMODF)
+ AC_DEFINE(HAVE_FREXPF)
+ AC_DEFINE(HAVE_LDEXPF)
+ AC_DEFINE(HAVE_LOG10F)
+ AC_DEFINE(HAVE_LOGF)
+ AC_DEFINE(HAVE_MODF)
+ AC_DEFINE(HAVE_MODFF)
+ AC_DEFINE(HAVE_POWF)
+ AC_DEFINE(HAVE_SINF)
+ AC_DEFINE(HAVE_SINHF)
+ AC_DEFINE(HAVE_SQRTF)
+ AC_DEFINE(HAVE_STRTOF)
+ AC_DEFINE(HAVE_STRTOLD)
+ AC_DEFINE(HAVE_TANF)
+ AC_DEFINE(HAVE_TANHF)
if test x"long_double_math_on_this_cpu" = x"yes"; then
AC_DEFINE(HAVE_FINITEL)
AC_DEFINE(HAVE_ISINFL)
diff -rNU3 -x *.info dist/libstdc++-v3/include/ext/ropeimpl.h dist.nbsd/libstdc++-v3/include/ext/ropeimpl.h
--- dist/libstdc++-v3/include/ext/ropeimpl.h Wed Nov 7 13:39:08 2012
+++ dist.nbsd/libstdc++-v3/include/ext/ropeimpl.h Wed Nov 7 11:47:43 2012
@@ -428,7 +428,7 @@
{
size_t __old_len = __r->_M_size;
_CharT* __new_data = (_CharT*)
- _Data_allocate(_S_rounded_up_size(__old_len + __len));
+ _Rope_rep_base<_CharT, _Alloc>::_Data_allocate(_S_rounded_up_size(__old_len + __len));
_RopeLeaf* __result;
uninitialized_copy_n(__r->_M_data, __old_len, __new_data);
@@ -812,7 +812,7 @@
if (__result_len > __lazy_threshold)
goto lazy;
__section = (_CharT*)
- _Data_allocate(_S_rounded_up_size(__result_len));
+ _Rope_rep_base<_CharT, _Alloc>::_Data_allocate(_S_rounded_up_size(__result_len));
__try
{ (*(__f->_M_fn))(__start, __result_len, __section); }
__catch(...)
diff -rNU3 -x *.info dist/libstdc++-v3/libsupc++/exception_ptr.h dist.nbsd/libstdc++-v3/libsupc++/exception_ptr.h
--- dist/libstdc++-v3/libsupc++/exception_ptr.h Wed Nov 7 13:39:08 2012
+++ dist.nbsd/libstdc++-v3/libsupc++/exception_ptr.h Wed Nov 7 11:47:44 2012
@@ -129,7 +129,7 @@
operator==(const exception_ptr&, const exception_ptr&) throw()
__attribute__ ((__pure__));
- const type_info*
+ const class type_info*
__cxa_exception_type() const throw() __attribute__ ((__pure__));
};
diff -rNU3 -x *.info dist/libstdc++-v3/libsupc++/nested_exception.h dist.nbsd/libstdc++-v3/libsupc++/nested_exception.h
--- dist/libstdc++-v3/libsupc++/nested_exception.h Wed Nov 7 13:39:08 2012
+++ dist.nbsd/libstdc++-v3/libsupc++/nested_exception.h Wed Nov 7 11:47:44 2012
@@ -119,7 +119,7 @@
// with a type that has an accessible nested_exception base.
template<typename _Ex>
inline void
- __throw_with_nested(_Ex&& __ex, const nested_exception* = 0)
+ __throw_with_nested(_Ex&& __ex, const nested_exception*)
{ throw __ex; }
template<typename _Ex>
diff -rNU3 -x *.info dist/libstdc++-v3/src/locale-inst.cc dist.nbsd/libstdc++-v3/src/locale-inst.cc
--- dist/libstdc++-v3/src/locale-inst.cc Wed Nov 7 13:39:02 2012
+++ dist.nbsd/libstdc++-v3/src/locale-inst.cc Wed Nov 7 11:47:44 2012
@@ -175,11 +175,11 @@
template class messages_byname<C>;
// ctype
- inline template class __ctype_abstract_base<C>;
+ template class __ctype_abstract_base<C>;
template class ctype_byname<C>;
// codecvt
- inline template class __codecvt_abstract_base<C, char, mbstate_t>;
+ template class __codecvt_abstract_base<C, char, mbstate_t>;
template class codecvt_byname<C, char, mbstate_t>;
// collate
diff -rNU3 -x *.info dist/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc dist.nbsd/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc
--- dist/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc Wed Nov 7 13:39:05 2012
+++ dist.nbsd/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc Wed Nov 7 11:47:47 2012
@@ -1,6 +1,6 @@
// { dg-require-namedlocale "" }
-// Copyright (C) 2010 Free Software Foundation
+// Copyright (C) 2010, 2011 Free Software Foundation
//
// 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
@@ -49,7 +49,11 @@
// get_weekday(iter_type, iter_type, ios_base&,
// ios_base::iostate&, tm*) const
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 14)
+ iss.str("\xbf\xdd\x2e");
+#else
iss.str("\xbf\xdd\xd4");
+#endif
iterator_type is_it01(iss);
tm time01;
memset(&time01, -1, sizeof(tm));
@@ -67,7 +71,11 @@
VERIFY( time02.tm_wday == 1 );
VERIFY( errorstate == ios_base::eofbit );
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 14)
+ iss.str("\xbf\xdd\x2e\xd5\xd4\xd5\xdb\xec\xdd\xd8\xda");
+#else
iss.str("\xbf\xdd\xd4\xd5\xd4\xd5\xdb\xec\xdd\xd8\xda");
+#endif
iterator_type is_it03(iss);
tm time03;
memset(&time03, -1, sizeof(tm));
diff -rNU3 -x *.info dist/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc dist.nbsd/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc
--- dist/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc Wed Nov 7 13:39:05 2012
+++ dist.nbsd/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc Wed Nov 7 11:47:47 2012
@@ -2,7 +2,7 @@
// 2010-01-05 Paolo Carlini <paolo.carlini@oracle.com>
-// Copyright (C) 2010 Free Software Foundation
+// Copyright (C) 2010, 2011 Free Software Foundation
//
// 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
@@ -50,6 +50,15 @@
// get_weekday(iter_type, iter_type, ios_base&,
// ios_base::iostate&, tm*) const
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 14)
+ const char* awdays[7] = { "\u0412\u0441\u002E",
+ "\u041F\u043D\u002E",
+ "\u0412\u0442\u002E",
+ "\u0421\u0440\u002E",
+ "\u0427\u0442\u002E",
+ "\u041F\u0442\u002E",
+ "\u0421\u0431\u002E" };
+#else
const char* awdays[7] = { "\u0412\u0441\u043A",
"\u041F\u043D\u0434",
"\u0412\u0442\u0440",
@@ -57,6 +66,7 @@
"\u0427\u0442\u0432",
"\u041F\u0442\u043D",
"\u0421\u0431\u0442" };
+#endif
for (int i = 0; i < 7; ++i)
{
diff -rNU3 -x *.info dist/lto-plugin/ChangeLog dist.nbsd/lto-plugin/ChangeLog
--- dist/lto-plugin/ChangeLog Wed Nov 7 13:39:32 2012
+++ dist.nbsd/lto-plugin/ChangeLog Wed Nov 7 11:47:43 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/maintainer-scripts/ChangeLog dist.nbsd/maintainer-scripts/ChangeLog
--- dist/maintainer-scripts/ChangeLog Wed Nov 7 13:39:09 2012
+++ dist.nbsd/maintainer-scripts/ChangeLog Wed Nov 7 11:47:49 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
diff -rNU3 -x *.info dist/zlib/ChangeLog dist.nbsd/zlib/ChangeLog
--- dist/zlib/ChangeLog Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/ChangeLog Wed Nov 7 11:47:49 2012
@@ -1,3 +1,7 @@
+2012-07-02 Release Manager
+
+ * GCC 4.5.4 released.
+
2011-04-28 Release Manager
* GCC 4.5.3 released.
@@ -615,7 +619,7 @@
- use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau)
- added makelcc.bat for lcc-win32 (Tom St Denis)
- in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe)
-- Avoid expanded $Id: ChangeLog,v 1.5 2002/05/08 04:38:00 aoliva Exp $. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion.
+- Avoid expanded $Id: ChangeLog,v 1.1.1.2 2012/09/18 06:16:00 skrll Exp $. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion.
- check for unistd.h in configure (for off_t)
- remove useless check parameter in inflate_blocks_free
- avoid useless assignment of s->check to itself in inflate_blocks_new
diff -rNU3 -x *.info dist/zlib/adler32.c dist.nbsd/zlib/adler32.c
--- dist/zlib/adler32.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/adler32.c Wed Nov 7 11:47:49 2012
@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-/* @(#) $Id: adler32.c,v 1.1.1.2 2002/03/11 21:53:23 tromey Exp $ */
+/* @(#) $Id: adler32.c,v 1.1.1.1 2011/06/21 01:23:24 mrg Exp $ */
#define ZLIB_INTERNAL
#include "zlib.h"
diff -rNU3 -x *.info dist/zlib/compress.c dist.nbsd/zlib/compress.c
--- dist/zlib/compress.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/compress.c Wed Nov 7 11:47:49 2012
@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-/* @(#) $Id: compress.c,v 1.1.1.2 2002/03/11 21:53:23 tromey Exp $ */
+/* @(#) $Id: compress.c,v 1.1.1.1 2011/06/21 01:23:25 mrg Exp $ */
#define ZLIB_INTERNAL
#include "zlib.h"
diff -rNU3 -x *.info dist/zlib/contrib/ada/buffer_demo.adb dist.nbsd/zlib/contrib/ada/buffer_demo.adb
--- dist/zlib/contrib/ada/buffer_demo.adb Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/contrib/ada/buffer_demo.adb Wed Nov 7 11:47:49 2012
@@ -6,7 +6,7 @@
-- Open source license information is in the zlib.ads file. --
----------------------------------------------------------------
--
--- $Id: buffer_demo.adb,v 1.3 2004/09/06 06:55:35 vagul Exp $
+-- $Id: buffer_demo.adb,v 1.1.1.1 2011/06/21 01:23:25 mrg Exp $
-- This demo program provided by Dr Steve Sangwine <sjs@essex.ac.uk>
--
diff -rNU3 -x *.info dist/zlib/contrib/ada/mtest.adb dist.nbsd/zlib/contrib/ada/mtest.adb
--- dist/zlib/contrib/ada/mtest.adb Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/contrib/ada/mtest.adb Wed Nov 7 11:47:49 2012
@@ -8,7 +8,7 @@
-- Continuous test for ZLib multithreading. If the test would fail
-- we should provide thread safe allocation routines for the Z_Stream.
--
--- $Id: mtest.adb,v 1.4 2004/07/23 07:49:54 vagul Exp $
+-- $Id: mtest.adb,v 1.1.1.1 2011/06/21 01:23:25 mrg Exp $
with ZLib;
with Ada.Streams;
diff -rNU3 -x *.info dist/zlib/contrib/ada/read.adb dist.nbsd/zlib/contrib/ada/read.adb
--- dist/zlib/contrib/ada/read.adb Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/contrib/ada/read.adb Wed Nov 7 11:47:49 2012
@@ -6,7 +6,7 @@
-- Open source license information is in the zlib.ads file. --
----------------------------------------------------------------
--- $Id: read.adb,v 1.8 2004/05/31 10:53:40 vagul Exp $
+-- $Id: read.adb,v 1.1.1.1 2011/06/21 01:23:25 mrg Exp $
-- Test/demo program for the generic read interface.
diff -rNU3 -x *.info dist/zlib/contrib/ada/test.adb dist.nbsd/zlib/contrib/ada/test.adb
--- dist/zlib/contrib/ada/test.adb Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/contrib/ada/test.adb Wed Nov 7 11:47:49 2012
@@ -6,7 +6,7 @@
-- Open source license information is in the zlib.ads file. --
----------------------------------------------------------------
--- $Id: test.adb,v 1.17 2003/08/12 12:13:30 vagul Exp $
+-- $Id: test.adb,v 1.1.1.1 2011/06/21 01:23:25 mrg Exp $
-- The program has a few aims.
-- 1. Test ZLib.Ada95 thick binding functionality.
diff -rNU3 -x *.info dist/zlib/contrib/ada/zlib-streams.adb dist.nbsd/zlib/contrib/ada/zlib-streams.adb
--- dist/zlib/contrib/ada/zlib-streams.adb Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/contrib/ada/zlib-streams.adb Wed Nov 7 11:47:49 2012
@@ -6,7 +6,7 @@
-- Open source license information is in the zlib.ads file. --
----------------------------------------------------------------
--- $Id: zlib-streams.adb,v 1.10 2004/05/31 10:53:40 vagul Exp $
+-- $Id: zlib-streams.adb,v 1.1.1.1 2011/06/21 01:23:25 mrg Exp $
with Ada.Unchecked_Deallocation;
diff -rNU3 -x *.info dist/zlib/contrib/ada/zlib-streams.ads dist.nbsd/zlib/contrib/ada/zlib-streams.ads
--- dist/zlib/contrib/ada/zlib-streams.ads Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/contrib/ada/zlib-streams.ads Wed Nov 7 11:47:49 2012
@@ -6,7 +6,7 @@
-- Open source license information is in the zlib.ads file. --
----------------------------------------------------------------
--- $Id: zlib-streams.ads,v 1.12 2004/05/31 10:53:40 vagul Exp $
+-- $Id: zlib-streams.ads,v 1.1.1.1 2011/06/21 01:23:25 mrg Exp $
package ZLib.Streams is
diff -rNU3 -x *.info dist/zlib/contrib/ada/zlib-thin.adb dist.nbsd/zlib/contrib/ada/zlib-thin.adb
--- dist/zlib/contrib/ada/zlib-thin.adb Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/contrib/ada/zlib-thin.adb Wed Nov 7 11:47:49 2012
@@ -6,7 +6,7 @@
-- Open source license information is in the zlib.ads file. --
----------------------------------------------------------------
--- $Id: zlib-thin.adb,v 1.8 2003/12/14 18:27:31 vagul Exp $
+-- $Id: zlib-thin.adb,v 1.1.1.1 2011/06/21 01:23:25 mrg Exp $
package body ZLib.Thin is
diff -rNU3 -x *.info dist/zlib/contrib/ada/zlib-thin.ads dist.nbsd/zlib/contrib/ada/zlib-thin.ads
--- dist/zlib/contrib/ada/zlib-thin.ads Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/contrib/ada/zlib-thin.ads Wed Nov 7 11:47:49 2012
@@ -6,7 +6,7 @@
-- Open source license information is in the zlib.ads file. --
----------------------------------------------------------------
--- $Id: zlib-thin.ads,v 1.11 2004/07/23 06:33:11 vagul Exp $
+-- $Id: zlib-thin.ads,v 1.1.1.1 2011/06/21 01:23:25 mrg Exp $
with Interfaces.C.Strings;
diff -rNU3 -x *.info dist/zlib/contrib/ada/zlib.adb dist.nbsd/zlib/contrib/ada/zlib.adb
--- dist/zlib/contrib/ada/zlib.adb Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/contrib/ada/zlib.adb Wed Nov 7 11:47:49 2012
@@ -6,7 +6,7 @@
-- Open source license information is in the zlib.ads file. --
----------------------------------------------------------------
--- $Id: zlib.adb,v 1.31 2004/09/06 06:53:19 vagul Exp $
+-- $Id: zlib.adb,v 1.1.1.1 2011/06/21 01:23:25 mrg Exp $
with Ada.Exceptions;
with Ada.Unchecked_Conversion;
diff -rNU3 -x *.info dist/zlib/contrib/ada/zlib.ads dist.nbsd/zlib/contrib/ada/zlib.ads
--- dist/zlib/contrib/ada/zlib.ads Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/contrib/ada/zlib.ads Wed Nov 7 11:47:49 2012
@@ -25,7 +25,7 @@
-- covered by the GNU Public License. --
------------------------------------------------------------------------------
--- $Id: zlib.ads,v 1.26 2004/09/06 06:53:19 vagul Exp $
+-- $Id: zlib.ads,v 1.1.1.1 2011/06/21 01:23:25 mrg Exp $
with Ada.Streams;
diff -rNU3 -x *.info dist/zlib/contrib/iostream2/zstream.h dist.nbsd/zlib/contrib/iostream2/zstream.h
--- dist/zlib/contrib/iostream2/zstream.h Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/contrib/iostream2/zstream.h Wed Nov 7 11:47:49 2012
@@ -21,7 +21,7 @@
/*
* zstream.h - C++ interface to the 'zlib' general purpose compression library
- * $Id: zstream.h,v 1.1 1999/05/04 19:30:27 tromey Exp $
+ * $Id: zstream.h,v 1.1.1.1 2011/06/21 01:23:26 mrg Exp $
*/
#include <strstream.h>
Binary files dist/zlib/contrib/masmx64/gvmat64.obj and dist.nbsd/zlib/contrib/masmx64/gvmat64.obj differ
Binary files dist/zlib/contrib/masmx64/inffasx64.obj and dist.nbsd/zlib/contrib/masmx64/inffasx64.obj differ
Binary files dist/zlib/contrib/masmx86/gvmat32.obj and dist.nbsd/zlib/contrib/masmx86/gvmat32.obj differ
Binary files dist/zlib/contrib/masmx86/inffas32.obj and dist.nbsd/zlib/contrib/masmx86/inffas32.obj differ
diff -rNU3 -x *.info dist/zlib/crc32.c dist.nbsd/zlib/crc32.c
--- dist/zlib/crc32.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/crc32.c Wed Nov 7 11:47:49 2012
@@ -9,7 +9,7 @@
* factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
*/
-/* @(#) $Id: crc32.c,v 1.1.1.2 2002/03/11 21:53:23 tromey Exp $ */
+/* @(#) $Id: crc32.c,v 1.1.1.1 2011/06/21 01:23:24 mrg Exp $ */
/*
Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore
diff -rNU3 -x *.info dist/zlib/deflate.c dist.nbsd/zlib/deflate.c
--- dist/zlib/deflate.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/deflate.c Wed Nov 7 11:47:49 2012
@@ -47,7 +47,7 @@
*
*/
-/* @(#) $Id: deflate.c,v 1.1.1.2 2002/03/11 21:53:23 tromey Exp $ */
+/* @(#) $Id: deflate.c,v 1.1.1.1 2011/06/21 01:23:25 mrg Exp $ */
#include "deflate.h"
diff -rNU3 -x *.info dist/zlib/deflate.h dist.nbsd/zlib/deflate.h
--- dist/zlib/deflate.h Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/deflate.h Wed Nov 7 11:47:49 2012
@@ -8,7 +8,7 @@
subject to change. Applications should only use zlib.h.
*/
-/* @(#) $Id: deflate.h,v 1.1.1.2 2002/03/11 21:53:23 tromey Exp $ */
+/* @(#) $Id: deflate.h,v 1.1.1.1 2011/06/21 01:23:23 mrg Exp $ */
#ifndef DEFLATE_H
#define DEFLATE_H
diff -rNU3 -x *.info dist/zlib/example.c dist.nbsd/zlib/example.c
--- dist/zlib/example.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/example.c Wed Nov 7 11:47:49 2012
@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-/* @(#) $Id: example.c,v 1.1.1.2 2002/03/11 21:53:23 tromey Exp $ */
+/* @(#) $Id: example.c,v 1.1.1.1 2011/06/21 01:23:25 mrg Exp $ */
#include <stdio.h>
#include "zlib.h"
diff -rNU3 -x *.info dist/zlib/gzio.c dist.nbsd/zlib/gzio.c
--- dist/zlib/gzio.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/gzio.c Wed Nov 7 11:47:49 2012
@@ -5,7 +5,7 @@
* Compile this file with -DNO_GZCOMPRESS to avoid the compression code.
*/
-/* @(#) $Id: gzio.c,v 1.1.1.2 2002/03/11 21:53:24 tromey Exp $ */
+/* @(#) $Id: gzio.c,v 1.1.1.1 2011/06/21 01:23:25 mrg Exp $ */
#include <stdio.h>
diff -rNU3 -x *.info dist/zlib/minigzip.c dist.nbsd/zlib/minigzip.c
--- dist/zlib/minigzip.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/minigzip.c Wed Nov 7 11:47:49 2012
@@ -13,7 +13,7 @@
* or in pipe mode.
*/
-/* @(#) $Id: minigzip.c,v 1.1.1.2 2002/03/11 21:53:26 tromey Exp $ */
+/* @(#) $Id: minigzip.c,v 1.1.1.1 2011/06/21 01:23:24 mrg Exp $ */
#include <stdio.h>
#include "zlib.h"
diff -rNU3 -x *.info dist/zlib/trees.c dist.nbsd/zlib/trees.c
--- dist/zlib/trees.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/trees.c Wed Nov 7 11:47:49 2012
@@ -29,7 +29,7 @@
* Addison-Wesley, 1983. ISBN 0-201-06672-6.
*/
-/* @(#) $Id: trees.c,v 1.1.1.2 2002/03/11 21:53:27 tromey Exp $ */
+/* @(#) $Id: trees.c,v 1.1.1.1 2011/06/21 01:23:23 mrg Exp $ */
/* #define GEN_TREES_H */
diff -rNU3 -x *.info dist/zlib/uncompr.c dist.nbsd/zlib/uncompr.c
--- dist/zlib/uncompr.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/uncompr.c Wed Nov 7 11:47:49 2012
@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-/* @(#) $Id: uncompr.c,v 1.1.1.2 2002/03/11 21:53:27 tromey Exp $ */
+/* @(#) $Id: uncompr.c,v 1.1.1.1 2011/06/21 01:23:23 mrg Exp $ */
#define ZLIB_INTERNAL
#include "zlib.h"
diff -rNU3 -x *.info dist/zlib/zconf.h dist.nbsd/zlib/zconf.h
--- dist/zlib/zconf.h Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/zconf.h Wed Nov 7 11:47:49 2012
@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-/* @(#) $Id: zconf.h,v 1.1.1.2 2002/03/11 21:53:27 tromey Exp $ */
+/* @(#) $Id: zconf.h,v 1.1.1.1 2011/06/21 01:23:24 mrg Exp $ */
#ifndef ZCONF_H
#define ZCONF_H
diff -rNU3 -x *.info dist/zlib/zconf.in.h dist.nbsd/zlib/zconf.in.h
--- dist/zlib/zconf.in.h Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/zconf.in.h Wed Nov 7 11:47:49 2012
@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-/* @(#) $Id$ */
+/* @(#) $Id: zconf.in.h,v 1.1.1.1 2011/06/21 01:23:24 mrg Exp $ */
#ifndef ZCONF_H
#define ZCONF_H
diff -rNU3 -x *.info dist/zlib/zutil.c dist.nbsd/zlib/zutil.c
--- dist/zlib/zutil.c Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/zutil.c Wed Nov 7 11:47:49 2012
@@ -3,7 +3,7 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-/* @(#) $Id: zutil.c,v 1.1.1.2 2002/03/11 21:53:27 tromey Exp $ */
+/* @(#) $Id: zutil.c,v 1.1.1.1 2011/06/21 01:23:25 mrg Exp $ */
#include "zutil.h"
diff -rNU3 -x *.info dist/zlib/zutil.h dist.nbsd/zlib/zutil.h
--- dist/zlib/zutil.h Wed Nov 7 13:39:32 2012
+++ dist.nbsd/zlib/zutil.h Wed Nov 7 11:47:49 2012
@@ -8,7 +8,7 @@
subject to change. Applications should only use zlib.h.
*/
-/* @(#) $Id: zutil.h,v 1.1.1.2 2002/03/11 21:53:28 tromey Exp $ */
+/* @(#) $Id: zutil.h,v 1.1.1.1 2011/06/21 01:23:23 mrg Exp $ */
#ifndef ZUTIL_H
#define ZUTIL_H