Compare commits

...

681 Commits
f7 ... master

Author SHA1 Message Date
Jakub Jelinek 891cef7d9b 10.0.1-0.8 2020-02-16 17:23:40 +01:00
Jakub Jelinek 9bce8e2449 10.0.1-0.8 2020-02-16 13:44:17 +01:00
Jakub Jelinek 55f9b2f336 10.0.1-0.7 2020-01-30 22:04:12 +01:00
Fedora Release Engineering f8b6352429 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-01-28 19:39:07 +00:00
Jakub Jelinek 5e141990fb 10.0.1-0.6 2020-01-26 19:19:00 +01:00
Jakub Jelinek 912e74c756 Bump libgo.so version from 15 to 16. 2020-01-23 22:56:53 +01:00
Jakub Jelinek b84725ac52 10.0.1-0.5 2020-01-23 21:05:35 +01:00
Jakub Jelinek 7de85a2603 10.0.1-0.4 2020-01-21 14:37:47 +01:00
Jakub Jelinek 576d41c1c6 10.0.1-0.4 2020-01-21 14:25:31 +01:00
Jakub Jelinek 562d27c22f 10.0.1-0.4 2020-01-21 14:19:34 +01:00
Jakub Jelinek 57a884df51 Fix nvptx-none build. 2020-01-18 19:07:51 +01:00
Jakub Jelinek 04dfce99db Update to GCC 10 prerelease snapshot. 2020-01-18 18:35:20 +01:00
Jakub Jelinek b05570344e 9.2.1-2 2019-11-20 11:37:12 +01:00
Jakub Jelinek 52eb664223 9.2.1-2 2019-11-20 11:35:10 +01:00
Florian Weimer 0d8c061e19 Disable multilib on s390x 2019-10-10 08:42:52 +02:00
Jerry James 56772a9401 Drop multilib support for s390x since glibc32 already did. 2019-10-09 20:26:44 -06:00
Jerry James 4110c03341 Build against mpfr4 and libmpc linked with mpfr4. 2019-10-09 19:48:38 -06:00
Jerry James 4c8c128cd0 Build against mpfr3 and libmpc-mpfr3 so an mpfr 4.x version can be built. 2019-10-08 15:17:12 -06:00
Miro Hrončok f684732e50 Rebuilt for Python 3.8.0rc1 (#1748018) 2019-10-03 13:53:43 +02:00
Jakub Jelinek 4562ca924e 9.2.1-1 2019-08-27 17:46:07 +02:00
Fedora Release Engineering 90028182f3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-07-25 01:33:52 +00:00
Jakub Jelinek 6919aa138f 9.1.1-2 2019-06-05 15:54:50 +02:00
Jakub Jelinek 672c273c6d 9.1.1-1 2019-05-03 14:30:20 +02:00
Jakub Jelinek 94498d7104 9.1.1-1 2019-05-03 14:30:03 +02:00
Jakub Jelinek 28742415b7 9.1.1-1 2019-05-03 14:24:04 +02:00
Jakub Jelinek f2dc6d80c8 9.0.1-0.16 2019-04-30 16:52:43 +02:00
Jakub Jelinek b2a5d6a477 9.0.1-0.15 2019-04-26 20:23:00 +02:00
Jakub Jelinek fd99b9378d 9.0.1-0.15 2019-04-26 20:22:41 +02:00
Jakub Jelinek a3fcce8f5b 9.0.1-0.14 2019-04-18 13:23:34 +02:00
Jakub Jelinek 84af04ddb6 9.0.1-0.13 2019-04-15 20:12:21 +02:00
Jakub Jelinek b6b1340286 9.0.1-0.13 2019-04-15 12:43:11 +02:00
Jakub Jelinek 84ce3f0d05 9.0.1-0.12 2019-03-28 18:34:10 +01:00
Jakub Jelinek 5c04074052 9.0.1-0.11 2019-03-20 13:45:09 +01:00
Jakub Jelinek 4d0e748417 Resolves: #1688766 2019-03-14 13:17:36 +01:00
Jakub Jelinek 1d6c11d8df 9.0.1-0.10 2019-03-12 10:32:22 +01:00
Jakub Jelinek 843493ecf7 9.0.1-0.10 2019-03-12 10:17:52 +01:00
Jakub Jelinek bad9bc25a4 9.0.1-0.9 2019-03-09 11:52:56 +01:00
Jakub Jelinek f790525bec 9.0.1-0.9 2019-02-27 18:36:39 +01:00
Jakub Jelinek fc147e70c0 9.0.1-0.8 2019-02-27 15:46:10 +01:00
Jakub Jelinek 8ccdd26200 9.0.1-0.8 2019-02-27 15:29:11 +01:00
Jakub Jelinek d1c6bd89f3 fix up revision in %changelog 2019-02-25 09:45:10 +01:00
Jakub Jelinek e0c920a406 9.0.1-0.6 2019-02-21 22:28:06 +01:00
Jakub Jelinek d228ee264c 9.0.1-0.6 2019-02-19 19:10:55 +01:00
Jakub Jelinek e6073613ef 9.0.1-0.5 2019-02-15 22:30:07 +01:00
Jakub Jelinek f147a68289 9.0.1-0.5 2019-02-15 20:00:34 +01:00
Jakub Jelinek 7ee3a099fa 9.0.1-0.4 2019-02-09 12:03:21 +01:00
Jakub Jelinek fe09f8496b 9.0.1-0.3 2019-02-03 11:59:20 +01:00
Jakub Jelinek 16bcddd9d4 9.0.1-0.3 2019-02-03 11:56:05 +01:00
Fedora Release Engineering 7545ecb969 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-01-31 20:38:49 +00:00
Jakub Jelinek a6c3c8f082 9.0.1-0.2 2019-01-29 23:15:56 +01:00
Igor Gnatenko d895623061 Remove obsolete scriptlets
References: https://fedoraproject.org/wiki/Changes/RemoveObsoleteScriptlets
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2019-01-29 06:28:14 +01:00
Igor Gnatenko a71fb3364e Remove obsolete Group tag
References: https://fedoraproject.org/wiki/Changes/Remove_Group_Tag
2019-01-28 20:24:02 +01:00
Igor Gnatenko db0aca6b64
Remove obsolete scriptlets
References: https://fedoraproject.org/wiki/Changes/RemoveObsoleteScriptlets
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2019-01-27 18:57:31 +01:00
Jakub Jelinek 215844b31b Merge branch 'master' of ssh://pkgs.fedoraproject.org/rpms/gcc 2019-01-23 19:22:52 +01:00
Jakub Jelinek 80dc8803df 9.0.1-0.1 2019-01-23 19:22:27 +01:00
Igor Gnatenko 3759f6f554
Remove obsolete ldconfig scriptlets
References: https://fedoraproject.org/wiki/Changes/RemoveObsoleteScriptlets
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2019-01-22 18:39:01 +01:00
Jakub Jelinek adee8bcb39 Fix #1668204 2019-01-22 10:01:43 +01:00
Jakub Jelinek cee0dddd34 9.0.0-0.4 2019-01-21 23:53:26 +01:00
Jakub Jelinek da335fc250 Fix up version numbers in %changelog. 2019-01-21 13:14:14 +01:00
Jakub Jelinek bcdeb85901 9.0.0-0.3 2019-01-20 12:51:42 +01:00
Jakub Jelinek 1321d9a8de 9.0.0-0.3 2019-01-19 18:31:30 +01:00
Jakub Jelinek 3694befabb 9.0.1-0.3 2019-01-19 16:14:16 +01:00
Jakub Jelinek 2a22f8c83a 8.2.1-7 2019-01-09 17:08:36 +01:00
Jakub Jelinek 866b034132 8.2.1-7 2019-01-09 17:06:46 +01:00
Jakub Jelinek 17d43f4d58 8.2.1-6 2018-12-15 14:26:54 +01:00
Jakub Jelinek b627ff6a1c 8.2.1-5 2018-11-05 15:50:12 +01:00
Jakub Jelinek 98b4937fcb 8.2.1-4 2018-10-11 20:42:44 +02:00
Jakub Jelinek 858f1e25fb 8.2.1-3 2018-09-05 09:49:20 +02:00
Jakub Jelinek e66bcabdd3 8.2.1-2 2018-08-01 20:45:40 +02:00
Jakub Jelinek a2239731d4 8.2.1-2 2018-08-01 20:32:03 +02:00
Jakub Jelinek c05efdcd33 Tweak some conditionals. 2018-07-27 20:25:35 +02:00
Jakub Jelinek 6e4a12be24 Fix misplaced %global. 2018-07-27 20:24:10 +02:00
Jakub Jelinek 7df147abdd 8.2.1-1 2018-07-26 19:40:17 +02:00
Jakub Jelinek 2edf51cd28 8.2.1-1 2018-07-26 19:38:51 +02:00
Fedora Release Engineering 3deee803bf - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-07-13 01:10:36 +00:00
Jakub Jelinek 8602ede777 8.1.1-5 2018-07-12 14:03:20 +02:00
Miro Hrončok 8fb0e5b0d3 Rebuilt for Python 3.7 2018-07-02 18:22:27 +02:00
Jakub Jelinek 7ad4cfb1f2 8.1.1-4 2018-06-29 10:56:07 +02:00
Jakub Jelinek c01972f342 8.1.1-4 2018-06-29 10:54:49 +02:00
Jakub Jelinek b1fe12b88a 8.1.1-4 2018-06-29 10:53:44 +02:00
Miro Hrončok 0aaf98d346 Rebuilt for Python 3.7 2018-06-27 20:39:49 +02:00
Jakub Jelinek c0d3a20ab3 8.1.1-3 2018-06-26 19:48:08 +02:00
Jakub Jelinek 4b90559c50 8.1.1-2 2018-06-20 23:01:47 +02:00
Miro Hrončok e0b3768e1a Rebuilt for Python 3.7 2018-06-19 10:43:28 +02:00
Jakub Jelinek 391f8204b0 8.1.1-1 2018-05-02 16:19:01 +02:00
Jakub Jelinek b7ec01b44a 8.0.1-0.23 2018-04-25 16:15:39 +02:00
Jakub Jelinek db4105af40 8.0.1-0.22 2018-04-24 23:36:25 +02:00
Jakub Jelinek eb398c7fb1 8.0.1-0.22 2018-04-24 23:07:57 +02:00
Jakub Jelinek 0d6e9e6a5b 8.0.1-0.22 2018-04-24 23:04:58 +02:00
Marek Polacek 3ae68fd84a Fix if conditionals. 2018-04-24 09:48:18 -04:00
Jakub Jelinek 9647f3f8db 8.0.1-0.21 2018-04-10 17:49:19 +02:00
Jakub Jelinek 0e0506dd37 8.0.1-0.20 2018-03-24 09:41:18 +01:00
Jakub Jelinek 1bfe0e3c3b 8.0.1-0.19 2018-03-17 14:56:00 +01:00
Jakub Jelinek 83dbb2847c 8.0.1-0.18 2018-03-12 22:53:29 +01:00
Jakub Jelinek 86d615d880 8.0.1-0.18 2018-03-12 22:52:23 +01:00
Jakub Jelinek b182d5ff6b #1554279 2018-03-12 11:59:54 +01:00
Jakub Jelinek 2a24f771d1 8.0.1-0.17 2018-03-10 23:30:40 +01:00
Jakub Jelinek f445959efa 8.0.1-0.16 2018-02-22 12:09:35 +01:00
Jakub Jelinek 16819750d2 8.0.1-0.15 2018-02-21 00:51:11 +01:00
Jakub Jelinek d301a3c7b8 8.0.1-0.14 2018-02-18 22:01:57 +01:00
Igor Gnatenko ff5dc29cd1
Remove %clean section
None of currently supported distributions need that.
Last one was EL5 which is EOL for a while.

Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2018-02-14 07:13:29 +01:00
Igor Gnatenko 7d69d114a8 Remove BuildRoot definition
None of currently supported distributions need that.
It was needed last for EL5 which is EOL now

Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2018-02-13 23:25:00 +01:00
Jakub Jelinek 497de73bd7 8.0.1-0.13 2018-02-10 19:44:47 +01:00
Jakub Jelinek c0ae016cb4 8.0.1-0.13 2018-02-10 19:41:37 +01:00
Jakub Jelinek 7c58fda150 8.0.1-0.12 2018-02-07 22:54:32 +01:00
Jakub Jelinek 313e678076 8.0.1-0.12 2018-02-07 21:03:18 +01:00
Jakub Jelinek 08f661c823 8.0.1-0.12 2018-02-07 16:26:20 +01:00
Jakub Jelinek d40df5fcf2 8.0.1-0.12 2018-02-07 16:25:53 +01:00
Jakub Jelinek e6bd153753 8.0.1-0.12 2018-02-07 16:24:43 +01:00
Fedora Release Engineering cc9b5fa3ba - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-02-07 10:40:56 +00:00
Florian Weimer 47b8ada335 Use generic tuning for armhfp 2018-02-06 19:10:00 +01:00
Richard W.M. Jones ca8c0f7dc6 Disable multilib on riscv64. 2018-02-05 09:06:04 +00:00
Jeff Law fa22fac534 - fix -fstack-clash-protection codegen issue on 32 bit x86
(#1540221, PR target/84128)
2018-02-01 09:37:28 -07:00
Jakub Jelinek 216b951886 8.0.1-0.8 2018-01-31 22:17:54 +01:00
Jakub Jelinek 7a1512fd56 8.0.1-0.7 2018-01-31 00:00:44 +01:00
Jakub Jelinek 3139eaf997 8.0.1-0.7 2018-01-30 23:43:42 +01:00
Jakub Jelinek da33ffbe57 8.0.1-0.6 2018-01-28 19:10:26 +01:00
Jakub Jelinek b147991d7c 7.3.1-1 2018-01-25 11:46:33 +01:00
Jakub Jelinek e400728936 7.3.1-1 2018-01-25 11:44:48 +01:00
Jeff Law 6af92eba78 - Fix -fstack-clash-protection codegen issue on 32 bit x86 (#1536555) 2018-01-24 15:13:15 -07:00
Jakub Jelinek e90615843b 7.2.1-7 2018-01-17 03:48:07 +01:00
Jakub Jelinek a6ea9c4518 7.2.1-7 2018-01-17 00:43:17 +01:00
Jakub Jelinek 402f1e9204 7.2.1-6 2018-01-04 18:21:06 +01:00
Jakub Jelinek f36e50eab5 7.2.1-5 2018-01-01 14:45:04 +01:00
Jakub Jelinek 8f4badaa38 7.2.1-5 2018-01-01 14:21:12 +01:00
Jakub Jelinek d69736566d 7.2.1-5 2018-01-01 13:57:11 +01:00
Marek Polacek 544398b502 Disable annobin for now. Adjust sanitizer_linux.cc patch. 2017-11-30 19:49:49 +01:00
Jeff Law 2cf19e11cb - Fix problem with large outgoing args and -fstack-clash-protection
on aarch64 (#1518823)
2017-11-29 11:59:09 -07:00
Jeff Law e987aff0a2 - Backport -fstack-clash-protection from development trunk (#1512529) 2017-11-28 09:02:22 -07:00
Jakub Jelinek 553b93f777 7.2.1-2 2017-09-15 12:38:59 +02:00
Marek Polacek 82e3c0071b 7.2.1-1 2017-08-30 18:29:48 +02:00
Marek Polacek 6e856a1b72 7.2.1-1 2017-08-30 17:26:07 +02:00
Jakub Jelinek ff60308ab9 7.2.1-1 2017-08-30 17:06:21 +02:00
Jakub Jelinek 9b6d8e7c01 Drop .1 suffix from Release 2017-08-03 17:18:49 +02:00
Jakub Jelinek 23f4b29ddd 7.1.1-7 2017-08-02 21:19:02 +02:00
Jakub Jelinek 42139e4c56 7.1.1-7 2017-08-02 21:10:58 +02:00
Fedora Release Engineering 28eca72fa2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild 2017-07-26 09:08:47 +00:00
Jakub Jelinek dc54e4f153 7.1.1-6 2017-07-19 14:59:33 +02:00
Jakub Jelinek e3161c6575 7.1.1-6 2017-07-19 11:32:30 +02:00
Jakub Jelinek 5e51bccff0 7.1.1-6 2017-07-18 11:00:59 +02:00
Jakub Jelinek ac2a849717 7.1.1-6 2017-07-18 10:43:56 +02:00
Jakub Jelinek f5843a4192 7.1.1-5 2017-07-11 18:06:19 +02:00
Jakub Jelinek 7d28ff24f9 7.1.1-5 2017-07-11 17:53:24 +02:00
Jakub Jelinek e8e4643647 7.1.1-4 2017-07-09 22:04:18 +02:00
Jakub Jelinek e7ba2ccc61 7.1.1-4 2017-07-09 14:26:16 +02:00
Jakub Jelinek dcf86feb99 7.1.1-3 2017-06-22 09:55:37 +02:00
Jakub Jelinek 7a880b1a75 7.1.1-2 2017-05-26 15:21:59 +02:00
Jakub Jelinek fe7fce2ad1 7.1.1-1 2017-05-03 11:05:12 +02:00
Jakub Jelinek 45a2f253fb 7.1.1-1 2017-05-03 09:32:52 +02:00
Jakub Jelinek 015c95afae 7.0.1-0.16 2017-04-25 21:58:41 +02:00
Jakub Jelinek 0ec4e456b8 7.0.1-0.15 2017-04-21 12:10:21 +02:00
Jakub Jelinek ecfa641ec4 7.0.1-0.14 2017-04-10 18:17:43 +02:00
Jakub Jelinek 3e19e07261 7.0.1-0.14 2017-04-10 15:57:36 +02:00
Jakub Jelinek 61f26fa336 7.0.1-0.14 2017-04-10 15:49:09 +02:00
Jakub Jelinek 5e173247a4 7.0.1-0.13 2017-03-27 12:57:54 +02:00
Jakub Jelinek 066310e826 7.0.1-0.12 2017-03-09 18:01:36 +01:00
Jakub Jelinek 6c2cfcacd9 7.0.1-0.12 2017-03-09 17:50:08 +01:00
Jakub Jelinek 88ff65fe51 7.0.1-0.11 2017-03-08 19:02:18 +01:00
Jakub Jelinek 4708d93f41 7.0.1-0.10 2017-02-25 13:14:06 +01:00
Jakub Jelinek cc580afc17 7.0.1-0.10 2017-02-25 12:47:04 +01:00
Jakub Jelinek 9c103286cf 7.0.1-0.10 2017-02-25 11:32:56 +01:00
Jakub Jelinek f9528196b2 7.0.1-0.9 2017-02-19 16:56:22 +01:00
Jakub Jelinek 1c8b31bfd3 7.0.1-0.9 2017-02-19 13:23:23 +01:00
Jakub Jelinek a15b5bd3a0 7.0.1-0.8 2017-02-11 10:56:13 +01:00
Jakub Jelinek d4df112f70 7.0.1-0.7 2017-02-09 19:01:50 +01:00
Jakub Jelinek 03d47e4b9f 7.0.1-0.7 2017-02-09 18:58:55 +01:00
Jakub Jelinek 9e5fffaae3 7.0.1-0.7 2017-02-09 18:55:36 +01:00
Jakub Jelinek 398cd1e186 7.0.1-0.6 2017-02-04 10:16:39 +01:00
Jakub Jelinek 4d72b19d1c 7.0.1-0.6 2017-02-04 09:49:14 +01:00
Jakub Jelinek 3d5e14ec38 7.0.1-0.5 2017-02-01 14:06:37 +01:00
Jakub Jelinek 6ed6e5a4c3 7.0.1-0.4 2017-01-31 12:35:13 +01:00
Jakub Jelinek 98a12cbd71 7.0.1-0.4 2017-01-31 10:26:33 +01:00
Jakub Jelinek 4c8d27c4d6 7.0.1-0.3 2017-01-28 09:18:26 +01:00
Jakub Jelinek 557c86d25c 7.0.1-0.3 2017-01-28 08:26:07 +01:00
Jakub Jelinek 16c6a8852b 7.0.1-0.2 2017-01-26 22:14:34 +01:00
Jakub Jelinek 4839e4255b 7.0.1-0.2 2017-01-26 15:33:42 +01:00
Jakub Jelinek a3b64e0868 6.3.1-2 2017-01-18 09:44:52 +01:00
Jakub Jelinek 010b19f294 6.3.1-2 2016-12-21 17:12:41 +01:00
Jakub Jelinek a96763b324 6.3.1-1 2016-12-21 14:23:35 +01:00
Jakub Jelinek dcf3c8d360 6.2.1-2 2016-09-16 11:57:11 +02:00
Jakub Jelinek 8e4a3f2d33 6.2.1-1 2016-09-01 14:43:18 +02:00
Jakub Jelinek 50fa9e4ee3 6.2.1-1 2016-09-01 14:20:47 +02:00
Jakub Jelinek 31e7eb359b 6.1.1-6 2016-08-17 18:13:11 +02:00
Jakub Jelinek 4f5892b0e1 6.1.1-6 2016-08-17 17:24:31 +02:00
Jakub Jelinek 39e0659a62 6.1.1-5 2016-08-10 16:42:47 +02:00
Jakub Jelinek 0ccb8bbebc 6.1.1-5 2016-08-10 14:40:09 +02:00
Jakub Jelinek f77ea1a1aa 6.1.1-4 2016-07-21 16:05:55 +02:00
Jakub Jelinek aece5e1599 6.1.1-4 2016-07-21 15:52:14 +02:00
Jakub Jelinek fd1cb09e79 6.1.1-3 2016-06-21 10:06:24 +02:00
Jakub Jelinek b66b3a4e1c 6.1.1-2 2016-05-10 19:10:45 +02:00
Jakub Jelinek bef1492459 6.1.1-1 2016-04-27 15:59:34 +02:00
Jakub Jelinek ed49338072 6.0.0-0.20 2016-04-06 18:56:22 +02:00
Jakub Jelinek 47e7711955 6.0.0-0.19 2016-03-31 15:48:14 +02:00
Jakub Jelinek 34ff97e734 6.0.0-0.18 2016-03-23 11:55:16 +01:00
Peter Robinson 8297b8b107 Enable gnat on ppc64le now it's been boostrapped
Process was scratch koji build gcc6 with gnat enabled against el7 gnat
enabled, isl disabled. Rebuild again against ggc6 with gnat as mock
chroot, import into koji.
2016-03-18 09:41:49 +00:00
Jakub Jelinek aed55db9d5 6.0.0-0.16 2016-03-11 21:57:17 +01:00
Jakub Jelinek 005db08c91 6.0.0-0.15 2016-03-05 08:16:45 +01:00
Jakub Jelinek f027054e0f 6.0.0-0.14 2016-03-02 08:19:20 +01:00
Jakub Jelinek 773cefac2c 6.0.0-0.13 2016-02-27 08:24:13 +01:00
Jakub Jelinek 8a240523f5 6.0.0-0.12 2016-02-19 22:34:10 +01:00
Jakub Jelinek d9e1ca5983 Temporary hack to enable Ada on s390x 2016-02-19 17:16:30 +01:00
Jakub Jelinek 89e370f159 6.0.0-0.11 2016-02-12 12:15:16 +01:00
Jakub Jelinek ec74b26ecd Workaround profiledbootstrap failure on ppc64 be 2016-02-06 21:44:23 +01:00
Jakub Jelinek cde96063b7 6.0.0-0.10 2016-02-05 22:52:01 +01:00
Jakub Jelinek f7b06a7726 6.0.0-0.10 2016-02-05 20:34:45 +01:00
Jakub Jelinek 395869404d Merge branch 'master' of ssh://pkgs.fedoraproject.org/gcc 2016-02-05 20:34:03 +01:00
Jakub Jelinek 97475d9eac 6.0.0-0.10 2016-02-05 20:32:59 +01:00
Dennis Gilmore 348f6fd9c9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild 2016-02-03 21:04:17 +00:00
Jakub Jelinek 2d005021d3 6.0.0-0.9 2016-02-01 23:03:55 +01:00
Jakub Jelinek 885401bf7e 6.0.0-0.9 2016-02-01 22:14:28 +01:00
Jakub Jelinek 4be70d1ef3 6.0.0-0.8 2016-02-01 15:10:54 +01:00
Jakub Jelinek 314efdbb41 Work around broken rpm 2016-01-30 02:23:10 +01:00
Jakub Jelinek bd1b81e9ec 6.0.0-0.7.fc24 2016-01-29 21:59:00 +01:00
Jakub Jelinek d85626def8 6.0.0-0.6 2016-01-28 22:23:11 +01:00
Jakub Jelinek cc2a83d686 6.0.0-0.5 2016-01-27 13:37:40 +01:00
Dan Horák 9ac4480c60 fix fedora macro usage 2016-01-10 21:51:44 +01:00
Orion Poplawski 9cda1c00f1 Drop %defattr() 2016-01-05 19:03:45 -07:00
Orion Poplawski 42a3075cdf Make gcc-gfortran own %{_fmoddir} (#1113564) 2016-01-05 19:02:17 -07:00
Jakub Jelinek a04a33c99f 5.3.1-2 2015-12-08 16:43:47 +01:00
Jakub Jelinek 04e43e85d1 5.3.1-1 2015-12-07 11:55:28 +01:00
Jakub Jelinek 3af662e237 5.2.1-5 2015-11-06 08:24:25 +01:00
Jakub Jelinek 7469a333bd Adapt libisl dlopen patch for newer ISL support. 2015-11-04 15:03:15 +01:00
Jakub Jelinek c2a1e7ae5d 5.2.1-4 2015-11-04 14:43:15 +01:00
Jakub Jelinek 9e75c715be 5.2.1-3 2015-10-01 14:59:59 +02:00
Jakub Jelinek cd907e635a 5.2.1-3 2015-10-01 11:28:28 +02:00
Jakub Jelinek 265c57ff22 Fix up disabling of the hardening 2015-09-30 08:44:12 +02:00
Jakub Jelinek 9fb8c87d6b 5.2.1-3 2015-09-29 12:53:09 +02:00
Jakub Jelinek df1d6ea021 5.2.1-2 2015-09-02 18:30:42 +02:00
Jakub Jelinek 6534eed5ef 5.2.1-1 2015-07-16 19:21:08 +02:00
Jakub Jelinek c148037b80 5.1.1-5 2015-07-07 10:29:46 +02:00
Jaromir Capik 274d6185bd STAGE1-*: Moving config args to recipes & fixing FTBFS
This commit moves the *GCC_CONFIGARGS from the stage1 script
to the *gcc* recipes so that the args can be tweaked by the
gcc maintainers in the future. This adds a bit of redundancy,
but still worthy.
This commit also disables gcc bootstrap in stage1 and splits
the build dir for gcc-host, gcc-libgcc and gcc so that it is
clean prior starting each build. It resolves strange config
issues that appear just under some combinations of build and
target arch.
2015-06-24 13:15:28 +02:00
Jakub Jelinek 99f1530af5 5.1.1-4 2015-06-18 10:15:33 +02:00
Dennis Gilmore 9d66f2aa7e - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild 2015-06-17 07:03:37 +00:00
Jaromir Capik 1a6fe020a9 Adding STAGE1 bootstrap recipes 2015-06-16 13:21:33 +02:00
Jakub Jelinek f0234e9c6f 5.1.1-3 2015-06-12 09:40:37 +02:00
Jakub Jelinek 0bb9c97686 5.1.1-2 2015-06-06 10:38:03 +02:00
Jakub Jelinek b5d17a9ac5 5.1.1-1 2015-04-22 18:13:07 +02:00
Jakub Jelinek f3095e1332 5.0.1-0.2 2015-04-17 19:31:34 +02:00
Jakub Jelinek 7a229a5888 5.0.1-0.2 2015-04-17 19:24:08 +02:00
Jakub Jelinek 133d0a0f64 5.0.1-0.1 2015-04-13 11:49:13 +02:00
Jakub Jelinek 652db2243e 5.0.0-0.22 2015-04-07 18:03:22 +02:00
Jakub Jelinek 19ca4dcbaa 5.0.0-0.21 2015-03-19 16:07:24 +01:00
Jakub Jelinek 91c7bec969 5.0.0-0.20 2015-03-16 18:42:57 +01:00
Jakub Jelinek 7fcf30a7ea 5.0.0-0.19 2015-03-13 19:15:06 +01:00
Jakub Jelinek 0bc6460875 5.0.0-0.18 2015-02-27 17:07:43 +01:00
Jakub Jelinek addcbcb750 5.0.0-0.17 2015-02-26 20:54:16 +01:00
Jakub Jelinek d752cf184d 5.0.0-0.17 2015-02-26 20:54:05 +01:00
Jakub Jelinek 8ea1c62843 5.0.0-0.17 2015-02-26 20:53:27 +01:00
Jakub Jelinek e6685fa969 5.0.0-0.17 2015-02-26 20:53:08 +01:00
Jakub Jelinek 8b4ef1c4cf 5.0.0-0.17 2015-02-26 20:45:50 +01:00
Jakub Jelinek 5b794eb004 5.0.0-0.16 2015-02-24 10:12:36 +01:00
Till Maas 3f4ac1c552 Rebuilt for Fedora 23 Change
https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code
2015-02-21 22:28:48 +01:00
Jakub Jelinek e22880b36d 5.0.0-0.15 2015-02-17 12:36:38 +01:00
Jakub Jelinek 305029d3ec 5.0.0-0.15 2015-02-17 12:13:32 +01:00
Jakub Jelinek a2ef59f731 5.0.0-0.15 2015-02-17 12:12:28 +01:00
Jakub Jelinek 19b59d9a23 5.0.0-0.14 2015-02-16 10:56:21 +01:00
Jakub Jelinek 6d4716823e 5.0.0-0.14 2015-02-16 10:55:27 +01:00
Jakub Jelinek d76b340928 5.0.0-0.13 2015-02-14 09:31:48 +01:00
Jakub Jelinek 8654925ece 5.0.0-0.13 2015-02-14 09:30:57 +01:00
Jakub Jelinek 0215eb2e85 5.0.0-0.12 2015-02-12 19:53:00 +01:00
Jakub Jelinek cf944628eb 5.0.0-0.11 2015-02-10 19:26:49 +01:00
Jakub Jelinek c728afb1bb 5.0.0-0.10 2015-02-09 15:11:34 +01:00
Jakub Jelinek 83ca86ca70 5.0.0-0.10 2015-02-09 15:11:13 +01:00
Jakub Jelinek 314add3fda 5.0.0-0.9 2015-02-08 17:45:17 +01:00
Jakub Jelinek 765b1cc36a 5.0.0-0.9 2015-02-08 17:42:08 +01:00
Jakub Jelinek ff74606e8e 5.0.0-0.8 2015-02-06 14:10:27 +01:00
Jakub Jelinek 274be4f351 5.0.0-0.7 2015-02-05 11:26:15 +01:00
Jakub Jelinek a6d3dcaca6 5.0.0-0.7 2015-02-05 11:16:27 +01:00
Jakub Jelinek 2f08a3f6d8 5.0.0-0.7 2015-02-05 11:15:05 +01:00
Jakub Jelinek ff411575cc 5.0.0-0.6 2015-01-30 20:16:01 +01:00
Jakub Jelinek b8d50582fb 5.0.0-0.6 2015-01-30 19:35:36 +01:00
Jakub Jelinek 7f99993652 5.0.0-0.5 2015-01-24 10:03:24 +01:00
Jakub Jelinek 06398e8981 4.9.2-5 2015-01-08 19:01:59 +01:00
Jakub Jelinek b75648d9b2 4.9.2-4 2015-01-07 18:18:42 +01:00
Jakub Jelinek 79c442fecf 4.9.2-3 2014-12-17 12:11:31 +01:00
Jakub Jelinek 4ac68e8f20 4.9.2-2 2014-12-12 15:19:55 +01:00
Jakub Jelinek e3e00ff5dd 4.9.2-2 2014-12-12 15:05:23 +01:00
Jakub Jelinek b30271576a 4.9.2-2 2014-12-12 14:42:21 +01:00
Jakub Jelinek 79ac3cdb38 4.9.2-1 2014-11-01 09:52:33 +01:00
Jakub Jelinek f5f8bc6087 4.9.2-1 2014-11-01 09:17:01 +01:00
Jakub Jelinek 3438bcad98 4.9.1-13 2014-10-24 11:12:02 +02:00
Jakub Jelinek 4fa57fa088 4.9.1-12 2014-10-17 18:54:51 +02:00
Jakub Jelinek a593d741ef 4.9.1-11 2014-09-30 19:14:37 +02:00
Jakub Jelinek 8036281669 4.9.1-10 2014-09-22 13:02:00 +02:00
Jakub Jelinek 24eca83ae3 4.9.1-9 2014-09-12 12:12:54 +02:00
Jakub Jelinek 69d0fcbc90 4.9.1-9 2014-09-12 11:08:32 +02:00
Jakub Jelinek 0806d93e69 4.9.1-8 2014-08-15 12:42:25 +02:00
Jakub Jelinek d048d4b08d 4.9.1-7 2014-08-14 01:57:18 +02:00
Jakub Jelinek af3b5a8175 4.9.1-6 2014-08-13 11:30:49 +02:00
Jakub Jelinek 69c89853de 4.9.1-5 2014-08-07 09:46:46 +02:00
Jakub Jelinek cc74938640 4.9.1-3 2014-08-01 11:39:33 +02:00
Dan Horák 5a434b44d3 - update from trunk with fix for #1117799 2014-07-24 22:00:22 +02:00
Jakub Jelinek 4503e5ecde 4.9.1-2 2014-07-17 11:18:54 +02:00
Jakub Jelinek c204df3143 4.9.1-1 2014-07-16 18:02:45 +02:00
Jakub Jelinek b63748e323 4.9.1-1 2014-07-16 17:41:50 +02:00
Tom Callaway a365d3e4eb fix license handling 2014-07-12 11:07:26 -04:00
Jakub Jelinek 17446a0ad9 4.9.0-14 2014-07-02 19:57:02 +02:00
Jakub Jelinek 78557d4f6e 4.9.0-14 2014-07-02 19:24:13 +02:00
Jakub Jelinek 3e2f90cd29 4.9.0-13 2014-06-25 13:25:59 +02:00
Jakub Jelinek 4c9c56bc02 4.9.0-12 2014-06-19 16:03:34 +02:00
Kyle McMartin 7e9585f371 Avoid applying patch 16 twice. 2014-06-18 18:36:51 -04:00
Richard Henderson 4ec33619df Import fix for target/pr61545 from the 4.9 branch. 2014-06-18 17:57:17 -04:00
Jakub Jelinek 8c3f968e67 4.9.0-10 2014-06-17 20:42:26 +02:00
Jakub Jelinek 593c3952f8 4.9.0-9 2014-06-12 23:32:43 +02:00
Jakub Jelinek 4d58f0308a 4.9.0-9 2014-06-12 23:31:18 +02:00
Dennis Gilmore b446c2e737 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild 2014-06-07 08:29:05 -05:00
Jakub Jelinek 5a75d1ef76 4.9.0-8 2014-06-05 17:35:21 +02:00
Jakub Jelinek fd8fd40120 4.9.0-7 2014-06-04 20:44:45 +02:00
Jakub Jelinek 033def827b 4.9.0-6 2014-05-29 21:26:29 +02:00
Jakub Jelinek 99dddb3746 4.9.0-6 2014-05-29 21:04:21 +02:00
Jakub Jelinek 6d24375c60 4.9.0-5 2014-05-18 19:18:35 +02:00
Jakub Jelinek d43d3d6446 4.9.0-5 2014-05-18 18:55:32 +02:00
Jakub Jelinek d495ed6f81 4.9.0-4 2014-05-14 09:38:48 +02:00
Jakub Jelinek 83a8e4c260 4.9.0-4 2014-05-14 09:36:18 +02:00
Jakub Jelinek 58525d3c9e 4.9.0-3 2014-05-06 10:23:35 +02:00
Jakub Jelinek 991ab254f2 4.9.0-2 2014-05-05 10:14:18 +02:00
Jakub Jelinek 594ac2c7d7 4.9.0-2 2014-05-05 10:08:28 +02:00
Jakub Jelinek bd92d74066 4.9.0-2 2014-05-05 10:08:10 +02:00
Jakub Jelinek 14fee31c28 4.9.0-2 2014-05-05 09:54:42 +02:00
Jakub Jelinek 8e4bdb38f2 4.9.0-1 2014-04-22 23:04:52 +02:00
Jakub Jelinek 848872f40b 4.9.0-1 2014-04-22 21:43:37 +02:00
Jakub Jelinek c3342eaf1c 4.9.0-1 2014-04-22 21:43:25 +02:00
Jakub Jelinek a079048eee 4.9.0-1 2014-04-22 21:36:41 +02:00
Jakub Jelinek 2a555c3cf9 4.9.0-0.10 2014-04-11 19:16:27 +02:00
Jakub Jelinek 7d55b59b7e 4.9.0-0.9 2014-04-09 09:14:23 +02:00
Jakub Jelinek 8d0243eb05 4.9.0-0.9 2014-04-09 08:46:36 +02:00
Jakub Jelinek 39b12a1a1b 4.8.2-15 2014-02-20 21:22:24 +01:00
Jakub Jelinek 39f49505ef Clean up last change 2014-02-20 15:06:38 +01:00
Kyle McMartin 57702a0fa8 aarch64: fix cc1plus segfault using pch (#1058991), PR pch/60010 2014-02-01 02:48:55 -05:00
Jakub Jelinek cf2421524e 4.8.2-13 2014-01-22 00:23:57 +01:00
Jakub Jelinek 308f1508a6 4.8.2-11 2014-01-15 10:56:53 +01:00
Jakub Jelinek 1bc0509b8f 4.8.2-7 2013-12-12 19:22:29 +01:00
Jakub Jelinek 78dc96aa1e 4.8.2-6 2013-12-11 20:14:32 +01:00
Jakub Jelinek 6809951262 4.8.2-5 2013-12-10 09:28:23 +01:00
Jakub Jelinek 8be72f05f6 4.8.2-5 2013-12-10 08:04:59 +01:00
Jakub Jelinek 1984ee75ad 4.8.2-5 2013-12-09 19:10:08 +01:00
Jakub Jelinek 107d671c75 4.8.2-4 2013-11-11 09:32:01 +01:00
Jakub Jelinek 5652b86227 4.8.2-1 2013-10-17 09:52:32 +02:00
Jakub Jelinek 01c6d18afa 4.8.1-10 2013-09-20 13:18:45 +02:00
Jakub Jelinek e175f3e4b7 4.8.1-9 2013-09-15 21:24:04 +02:00
Jakub Jelinek cf558d9039 4.8.1-8 2013-09-09 19:36:26 +02:00
Jakub Jelinek cb3be801e6 4.8.1-7 2013-08-29 17:01:17 +02:00
Jakub Jelinek 6f858633ed 4.8.1-7 2013-08-29 16:34:42 +02:00
Jakub Jelinek d747bb409f 4.8.1-7 2013-08-29 16:33:10 +02:00
Jakub Jelinek f1ba2f493a 4.8.1-6 2013-08-14 20:17:54 +02:00
Dennis Gilmore 7c9911eee8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild 2013-08-03 07:32:26 -05:00
Jakub Jelinek e7ac0256f6 4.8.1-5 2013-07-17 18:20:16 +02:00
Jakub Jelinek 3abd19c007 4.8.1-4 2013-07-16 00:31:20 +02:00
Jakub Jelinek f9bd6769eb 4.8.1-3 2013-06-28 15:37:40 +02:00
Jakub Jelinek c27a7db22e 4.8.1-3 2013-06-28 15:28:31 +02:00
Jakub Jelinek 0e0fc2804a 4.8.1-2 2013-06-12 10:59:07 +02:00
Jakub Jelinek a19406ffe8 4.8.1-1 2013-06-03 20:28:38 +02:00
Jakub Jelinek 9584892771 4.8.0-8 2013-05-26 21:39:57 +02:00
Jakub Jelinek 9af2ab495c 4.8.0-7 2013-05-24 20:25:50 +02:00
Jakub Jelinek 5c60aab4d1 4.8.0-6 2013-05-17 18:11:08 +02:00
Jakub Jelinek 4bcc1e4fe2 4.8.0-5 2013-05-10 17:36:24 +02:00
Jakub Jelinek 8938366a48 4.8.0-4 2013-05-07 13:12:58 +02:00
Jakub Jelinek 3b9c960514 4.8.0-3 2013-04-19 17:31:47 +02:00
Jakub Jelinek c0371f2be9 4.8.0-2 2013-04-12 15:24:58 +02:00
Jakub Jelinek 694ef36d21 4.8.0-1 2013-03-22 18:26:48 +01:00
Jakub Jelinek 729b75087d 4.8.0-0.18 2013-03-20 17:03:17 +01:00
Jakub Jelinek 220b984b00 4.8.0-0.17 2013-03-16 18:51:57 +01:00
Jakub Jelinek 89bd8eeaf5 4.8.0-0.16 2013-03-07 19:13:44 +01:00
Jakub Jelinek 2bea4b26c1 4.8.0-0.15 2013-03-04 13:47:31 +01:00
Jakub Jelinek 8799d226ba 4.8.0-0.14 2013-02-20 19:12:32 +01:00
Jakub Jelinek 48c4d3a12f 4.8.0-0.14 2013-02-20 17:50:11 +01:00
Jakub Jelinek 7789476ecb 4.8.0-0.14 2013-02-20 17:13:24 +01:00
Jakub Jelinek 7c03367081 4.8.0-0.14 2013-02-20 17:12:51 +01:00
Rex Dieter 4ab034f8ca rebuild (libmpc) 2013-02-19 11:56:29 -06:00
Jakub Jelinek 225104138d 4.8.0-0.13 2013-02-15 20:17:57 +01:00
Jakub Jelinek d23aa8964c 4.8.0-0.12 2013-02-13 23:56:48 +01:00
Jakub Jelinek 218acd09ac 4.8.0-0.12 2013-02-13 23:32:18 +01:00
Jakub Jelinek b471196219 4.8.0-0.11 2013-02-11 22:40:42 +01:00
Jakub Jelinek 081310d587 4.8.0-0.10 2013-02-08 20:35:05 +01:00
Jakub Jelinek c9aef059c5 4.8.0-0.10 2013-02-08 19:18:31 +01:00
Jakub Jelinek af08a8b294 gcc-4.8.0-0.9 2013-02-06 21:35:10 +01:00
Jakub Jelinek 99eb194caf 4.8.0-0.8 2013-01-31 21:21:37 +01:00
Jakub Jelinek b9d5903bc3 4.8.0-0.7 2013-01-29 09:05:50 +01:00
Jakub Jelinek 5b97d78690 4.8.0-0.6 2013-01-24 10:22:45 +01:00
Jakub Jelinek 6980affb9b 4.8.0-0.5 2013-01-22 09:26:09 +01:00
Jakub Jelinek f16dbfc81a 4.8.0-0.4 2013-01-21 23:25:34 +01:00
Jakub Jelinek 23db191d05 4.8.0-0.4 2013-01-21 19:53:27 +01:00
Jakub Jelinek 1f0b14bc67 4.8.0-0.4 2013-01-21 18:05:27 +01:00
Jakub Jelinek 95108be4ed 4.8.0-0.4 2013-01-21 18:04:47 +01:00
Jakub Jelinek e835ae255a 4.8.0-0.3 2013-01-06 12:13:05 +01:00
Tom Callaway 30ee91c661 ignore ppl version 2012-12-03 17:15:50 -05:00
Tom Callaway 88d23c2975 rebuild for new ppl & cloog 2012-11-30 15:21:50 -05:00
Jakub Jelinek 171e01f806 4.7.2-8 2012-11-09 12:58:44 +01:00
Jakub Jelinek 8479884c4b 4.7.2-7 2012-11-05 20:48:49 +01:00
Jakub Jelinek 079c4158d0 4.7.2-7 2012-11-05 17:46:35 +01:00
Jakub Jelinek 747298b149 4.7.2-7 2012-11-05 17:21:03 +01:00
Jon Ciesla f3ca3c472d Merge branch 'master' of ssh://pkgs.fedoraproject.org/gcc
Conflicts:
	gcc.spec
2012-10-15 15:03:47 -05:00
Jon Ciesla dd781f028c Provides: bundled(libiberty) 2012-10-15 15:01:14 -05:00
Jakub Jelinek b62b28279a 4.7.2-5 2012-10-15 10:48:10 +02:00
Jakub Jelinek 1db9652d3f 4.7.2-4 2012-10-09 14:00:55 +02:00
Jakub Jelinek c7f844b164 4.7.2-3 2012-10-01 11:20:26 +02:00
Jakub Jelinek a1b7d697b8 4.7.2-2 2012-09-21 14:52:56 +02:00
Jakub Jelinek 703be9734e 4.7.2-2 2012-09-21 14:33:13 +02:00
Jakub Jelinek 5d9509e3f6 4.7.2-1 2012-09-20 18:55:09 +02:00
Jakub Jelinek b5e6324f17 4.7.1-8 2012-09-13 22:58:21 +02:00
Jakub Jelinek ed30c6bf51 4.7.1-8 2012-09-13 22:56:13 +02:00
Jakub Jelinek 8181de5ce0 4.7.1-8 2012-09-13 22:35:11 +02:00
Jakub Jelinek 1d285b5a5f 4.7.1-7 2012-08-13 20:30:09 +02:00
Jakub Jelinek b9d0acf940 4.7.1-7 2012-08-13 19:53:49 +02:00
Jakub Jelinek e02177a0fa 4.7.1-6 2012-08-10 15:26:14 +02:00
Jakub Jelinek 5ef5ca7845 4.7.1-5 2012-07-20 19:01:30 +02:00
Jakub Jelinek a54b05b75c 4.7.1-4 2012-07-18 10:50:12 +02:00
Jakub Jelinek 43ee372cff 4.7.1-3 2012-07-16 12:54:55 +02:00
Jakub Jelinek ee79e7e0ab 4.7.1-2 2012-07-13 11:36:11 +02:00
Jakub Jelinek 8eaabf978c 4.7.1-1 2012-06-29 14:26:07 +02:00
Jakub Jelinek b1be385d8b 4.7.1-1 2012-06-29 10:44:22 +02:00
Jakub Jelinek 83584bab04 4.7.0-7 2012-06-04 20:43:00 +02:00
Jakub Jelinek d2bfdbf5fa 4.7.0-7 2012-06-04 20:33:15 +02:00
Jakub Jelinek 23fc385ac6 4.7.0-6 2012-05-25 20:29:45 +02:00
Jakub Jelinek 63df62bec5 4.7.0-6 2012-05-25 18:17:59 +02:00
Jakub Jelinek 09d4d57e3f 4.7.0-5 2012-05-07 16:10:48 +02:00
Jakub Jelinek 6fbf2051a5 4.7.0-4 2012-05-04 09:14:46 +02:00
Jakub Jelinek 3eca00bcb5 4.7.0-3 2012-05-02 14:07:45 +02:00
Jakub Jelinek 58da100211 4.7.0-2 2012-04-16 13:00:59 +02:00
Jakub Jelinek 76070518ae 4.7.0-1 2012-03-22 12:15:35 +01:00
Jakub Jelinek ceba2f7e86 4.7.0-0.20 2012-03-15 20:47:29 +01:00
Jakub Jelinek 8b74069114 4.7.0-0.19 2012-03-08 12:20:03 +01:00
Jakub Jelinek 055a7a490c 4.7.0-0.18 2012-02-29 10:52:44 +01:00
Jakub Jelinek 02343d2d87 4.7.0-0.17 2012-02-27 22:54:40 +01:00
Jakub Jelinek c886fb5bab 4.7.0-0.16 2012-02-24 10:31:38 +01:00
Jakub Jelinek 52ed89edc9 4.7.0-0.15 2012-02-23 19:05:22 +01:00
Jakub Jelinek 2382f77e4f 4.7.0-0.14 2012-02-22 00:23:44 +01:00
Jakub Jelinek 48fb608e1f 4.7.0-0.13 2012-02-16 13:32:49 +01:00
Jakub Jelinek 9cf7da719f 4.7.0-0.13 2012-02-16 13:19:06 +01:00
Jakub Jelinek af901f0d9b 4.7.0-0.12 2012-02-08 18:53:49 +01:00
Jakub Jelinek f2ce251d7b 4.7.0-0.11 2012-02-07 00:32:19 +01:00
Jakub Jelinek 21d9bf9a9a 4.7.0-0.11 2012-02-07 00:21:35 +01:00
Jakub Jelinek e3e70e5e70 4.7.0-0.10 2012-01-26 14:17:11 +01:00
Jakub Jelinek c0579b832a 4.7.0-0.9 2012-01-23 23:24:38 +01:00
Jakub Jelinek 15d1c7249f 4.7.0-0.8.fc17 2012-01-19 20:38:00 +01:00
Jakub Jelinek 8529466512 4.7.0-0.7 2012-01-17 18:29:23 +01:00
Jakub Jelinek cb86c036cc 4.7.0-0.6 2012-01-12 18:58:05 +01:00
Dan Horák 7673532492 fix build without libitm 2012-01-07 11:33:38 +01:00
Jakub Jelinek 9414f6f26c 4.7.0-0.5 2012-01-06 21:08:18 +01:00
Jakub Jelinek d962a92335 4.7.0-0.4 2012-01-05 22:02:40 +01:00
Jakub Jelinek e1c663c977 4.7.0-0.3 2012-01-04 21:51:04 +01:00
Jakub Jelinek a539bf4094 4.7.0-0.2 2012-01-03 15:31:26 +01:00
Jakub Jelinek 5c29a25740 4.7.0-0.2 2012-01-03 15:17:22 +01:00
Rex Dieter de609bb65f rebuild (gmp) 2011-10-31 10:51:39 -05:00
Jakub Jelinek 7750bc9d3c 4.6.2-1 2011-10-27 14:48:18 +02:00
Jakub Jelinek c2adc6fa4b 4.6.2-1 2011-10-27 10:53:55 +02:00
Dennis Gilmore 8647f27101 - Rebuilt for glibc bug#747377 2011-10-26 18:47:25 -05:00
Marcela Mašláňová 9e87f7a00a rebuild with new gmp without compat lib 2011-10-20 18:05:27 +02:00
Marcela Mašláňová eae73016d7 rebuild with new gmp 2011-10-10 15:33:42 +02:00
Jakub Jelinek 758837f646 4.6.1-3 2011-07-15 13:00:47 +02:00
Jakub Jelinek 9679e72bfc 4.6.1-2 2011-07-08 10:23:46 +02:00
Jakub Jelinek 03e379eaf6 gcc-4.6.1-1 2011-06-27 22:08:32 +02:00
Jakub Jelinek 9c16225727 4.6.0-10 2011-06-03 14:46:33 +02:00
Jakub Jelinek 55c286cdef 4.6.0-9 2011-05-30 18:20:41 +02:00
Jakub Jelinek d176bf367a 4.6.0-8 2011-05-25 11:10:21 +02:00
Jakub Jelinek 3774a68ac6 Merge branch 'master' of ssh://pkgs.fedoraproject.org/gcc
Conflicts:
	gcc.spec
2011-05-25 11:05:40 +02:00
Jakub Jelinek a3e3a13e14 4.6.0-8 2011-05-25 10:55:04 +02:00
Dennis Gilmore c365d99172 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild 2011-02-08 17:16:38 -06:00
Jakub Jelinek 6b781854a6 4.6.0-0.6 2011-02-05 09:43:14 +01:00
Jakub Jelinek 055fab3c16 4.6.0-0.5 2011-01-28 12:29:35 +01:00
Jakub Jelinek 794381f06a 4.6.0-0.5 2011-01-28 11:34:30 +01:00
Jakub Jelinek f7f5fb5d3e 4.6.0-0.5 2011-01-28 11:21:01 +01:00
Jakub Jelinek 2512207346 ppc build fixes. 2011-01-24 12:53:44 +01:00
Jakub Jelinek eaa63a4598 ppc build fixes. 2011-01-24 12:53:05 +01:00
Jakub Jelinek f9a19c1c37 Fix a pasto. 2011-01-23 11:21:19 +01:00
Jakub Jelinek 37b9e831cd 4.6.0-0.3 2011-01-22 15:11:59 +01:00
Jakub Jelinek 1c4059f5c4 4.6.0-0.2 2011-01-22 13:03:46 +01:00
Jakub Jelinek f3bd36c606 4.6.0-0.2 2011-01-22 12:21:01 +01:00
Jakub Jelinek 759d90703d 4.6.0-0.2 2011-01-22 11:26:14 +01:00
Jakub Jelinek 20b1a2c231 4.5.1-6 2010-11-30 16:44:53 +01:00
Jakub Jelinek bb9f8664bb 4.5.1-5 2010-11-12 23:25:09 +01:00
Dennis Gilmore 25220f3a3f Merge branch 'f14'
Conflicts:
	gcc.spec
2010-08-31 09:26:05 -05:00
Dennis Gilmore 8694567421 enable cloog on sparc arches 2010-08-31 09:24:28 -05:00
Jakub Jelinek 3e097055d1 4.5.1-1 2010-08-12 19:22:34 +02:00
David Malcolm bf880f673d recompiling .py files against Python 2.7 (rhbz#623302) 2010-08-11 17:31:19 -04:00
David Malcolm 60a4c4d537 recompiling .py files against Python 2.7 (rhbz#623302) 2010-08-11 17:31:06 -04:00
Jakub Jelinek 2d7b03d247 4.5.0-4 2010-07-30 17:32:29 +02:00
Jakub Jelinek e409bbf1b0 4.5.0-4 2010-07-30 17:10:43 +02:00
Fedora Release Engineering 034cab8256 dist-git conversion 2010-07-28 15:08:35 +00:00
Jakub Jelinek 4b316cf2e5 4.5.0-3 2010-07-16 10:49:04 +00:00
Jakub Jelinek 4459e8aea1 4.5.0-3 2010-07-16 10:37:45 +00:00
Jakub Jelinek b5a20a1d7e 4.5.0-3 2010-07-16 10:29:01 +00:00
Jakub Jelinek 1074058107 4.5.0-2 2010-07-09 11:25:38 +00:00
Jakub Jelinek 121bd6bf21 4.5.0-2 2010-07-09 08:48:53 +00:00
Jakub Jelinek 8717b1d411 4.5.0-1 2010-07-07 17:35:21 +00:00
Jakub Jelinek 4572f2db82 4.4.4-10 2010-06-30 07:32:30 +00:00
Jakub Jelinek 36720823b7 4.4.4-9 2010-06-24 20:18:32 +00:00
Jakub Jelinek 52e0713736 4.4.4-8 2010-06-11 08:22:29 +00:00
Jakub Jelinek fd1b3bc669 4.4.4-7 2010-06-08 10:01:16 +00:00
Tom Callaway 20c88e5918 static subpackages 2010-06-02 19:21:12 +00:00
Jakub Jelinek 2bd4446896 4.4.4-5.fc14 2010-05-25 22:50:28 +00:00
Jakub Jelinek 26c09a98ec 4.4.4-4 2010-05-18 21:17:39 +00:00
Jakub Jelinek 13e93d2a5d 4.4.4-3 2010-05-14 21:52:04 +00:00
Jakub Jelinek 2122c33f00 4.4.4-2 2010-05-03 20:26:52 +00:00
Jakub Jelinek c55cbd53a6 4.4.4-1 2010-04-30 20:07:57 +00:00
Jakub Jelinek 23c1e2d22a 4.4.3-19 2010-04-27 19:29:26 +00:00
Jakub Jelinek e332e73999 4.4.3-18 2010-04-22 09:26:43 +00:00
Jakub Jelinek 82f78973b0 4.4.3-16 2010-04-09 09:08:57 +00:00
Jakub Jelinek 483ed19fc1 4.4.3-15 2010-04-07 14:24:06 +00:00
Jakub Jelinek dc2c0a96e5 4.4.3-15 2010-04-07 13:11:46 +00:00
Jakub Jelinek d6469194bd 4.4.3-14 2010-04-01 15:05:31 +00:00
Jakub Jelinek 0a5caf80d3 4.4.3-13 2010-03-27 14:51:27 +00:00
Jakub Jelinek 1d0a646cc5 4.4.3-6 2010-02-11 21:58:44 +00:00
Jakub Jelinek 08e9ee2de5 4.4.3-5 2010-02-08 20:09:15 +00:00
Jakub Jelinek bc7138a9a2 4.4.3-4 2010-01-27 19:49:01 +00:00
Dennis Gilmore 3b7f0ed37e add patch for sparc elf handling 2010-01-24 15:33:25 +00:00
Jakub Jelinek 108494b92d 4.4.3-1 2010-01-21 17:25:47 +00:00
Jakub Jelinek 1fd246efa8 4.4.2-25 2010-01-14 16:45:40 +00:00
Jakub Jelinek 6e98f300dc 4.4.2-20.fc13 2009-12-22 12:22:32 +00:00
Jakub Jelinek 462317c02b 4.4.2-13 2009-12-04 12:41:27 +00:00
Bill Nottingham 8f4400202c Fix typo that causes a failure to update the common directory. (releng
#2781)
2009-11-25 23:19:20 +00:00
Jakub Jelinek 7e5ced8dfb 4.4.1-18 2009-10-01 08:07:34 +00:00
Jakub Jelinek aad3859b62 4.4.1-17 2009-09-25 15:02:34 +00:00
Jakub Jelinek e2781b7b62 4.4.1-16 2009-09-23 20:17:19 +00:00
Jakub Jelinek b90c67c32e 4.4.1-16 2009-09-23 18:21:09 +00:00
Jakub Jelinek ef4f83143f 4.4.1-15 2009-09-18 08:28:26 +00:00
Jakub Jelinek dad43f9003 4.4.1-14 2009-09-16 14:15:14 +00:00
Jakub Jelinek d5843666e9 4.4.1-14 2009-09-16 13:27:05 +00:00
Jakub Jelinek e29a68e7a9 4.4.1-13 2009-09-11 10:19:55 +00:00
Jakub Jelinek 153c32b01a 4.4.1-13 2009-09-11 09:52:12 +00:00
Jakub Jelinek d022d11749 4.4.1-12 2009-09-10 14:24:09 +00:00
Jakub Jelinek a291f05d00 4.4.1-11 2009-09-09 09:20:44 +00:00
Jakub Jelinek 38ba9bfb90 4.4.1-11 2009-09-09 09:06:01 +00:00
Jakub Jelinek 116cffef39 4.4.1-10 2009-09-08 11:05:43 +00:00
Jakub Jelinek 1e5093a776 4.4.1-9 2009-09-03 22:50:33 +00:00
Jakub Jelinek 3b6291bcd4 4.4.1-8 2009-09-02 14:40:51 +00:00
Jakub Jelinek cb4e33ae41 4.4.1-7 2009-09-01 14:23:12 +00:00
Jakub Jelinek 41ba330f5c 4.4.1-6 2009-08-18 15:32:25 +00:00
Jakub Jelinek a80cc6e7a4 4.4.1-6 2009-08-18 13:48:10 +00:00
Jakub Jelinek 2e22743b01 4.4.1-5 2009-08-07 08:40:28 +00:00
Jakub Jelinek 4644e4c6ba 4.4.1-4 2009-08-05 16:18:07 +00:00
Jakub Jelinek 7c593b37fa 4.4.1-4 2009-08-05 15:56:25 +00:00
Jakub Jelinek 183c086052 4.4.1-3 2009-07-25 20:06:17 +00:00
Jakub Jelinek 542b0e2cf2 4.4.1-3 2009-07-25 10:08:12 +00:00
Jesse Keating 5b3f12009d - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild 2009-07-24 23:34:39 +00:00
Jakub Jelinek 9d32d8a8bc 4.4.1-2 2009-07-23 16:44:00 +00:00
Jakub Jelinek 3ebf1ff6bf 4.4.1-1 2009-07-22 12:32:06 +00:00
Jakub Jelinek 48bc863929 4.4.0-15 2009-07-21 17:18:39 +00:00
Jakub Jelinek aefc846ec6 4.4.0-15 2009-07-21 16:55:31 +00:00
Jakub Jelinek b4b081811c joe 2009-07-21 16:52:33 +00:00
Jakub Jelinek 54f2a73e85 4.4.0-14 2009-07-17 11:26:30 +00:00
Jakub Jelinek 326f95a149 4.4.0-13 2009-07-13 09:09:47 +00:00
Jakub Jelinek 07ae3828e7 4.4.0-12 2009-07-08 20:10:48 +00:00
Jakub Jelinek 0c755993b1 4.4.0-11 2009-07-07 17:24:05 +00:00
Jakub Jelinek 561373393e 4.4.0-10 2009-06-23 16:57:18 +00:00
Jakub Jelinek bbfc11ab8f 4.4.0-10 2009-06-23 16:55:17 +00:00
Jakub Jelinek 057d3867f2 4.4.0-9 2009-06-15 17:49:24 +00:00
Jakub Jelinek 23f7769aa4 4.4.0-8 2009-06-12 10:08:19 +00:00
Jakub Jelinek 473419c647 4.4.0-8 2009-06-12 10:01:40 +00:00
Jakub Jelinek eddb3f2c3a 4.4.0-7 2009-06-09 16:09:51 +00:00
Jakub Jelinek 1418c181c1 4.4.0-7 2009-06-09 14:26:59 +00:00
Jakub Jelinek c3b415bb00 4.4.0-5 2009-05-14 08:52:31 +00:00
Jakub Jelinek 7adee03fa5 4.4.0-0.34 2009-04-14 17:54:34 +00:00
Jakub Jelinek 0ebfd21c57 4.4.0-0.34 2009-04-14 15:46:16 +00:00
Jakub Jelinek cdcb4d30f8 4.4.0-0.33 2009-04-10 09:40:17 +00:00
Jakub Jelinek 293a503065 4.4.0-0.32 2009-04-09 12:54:27 +00:00
Jakub Jelinek f56bb064e4 4.4.0-0.31 2009-03-30 18:21:47 +00:00
Jakub Jelinek babb47d673 4.4.0-0.30 2009-03-28 09:33:10 +00:00
Jakub Jelinek a1dd9faa06 4.4.0-0.29 2009-03-24 00:03:02 +00:00
Jakub Jelinek 9ecc1a3a56 4.4.0-0.28 2009-03-19 16:53:24 +00:00
Jakub Jelinek 718ed1464b 4.4.0-0.27 2009-03-17 19:39:55 +00:00
Jakub Jelinek 706509ff52 4.4.0-0.26 2009-03-14 08:48:46 +00:00
Jakub Jelinek d5e4370952 4.4.0-0.25 2009-03-13 15:22:25 +00:00
Dennis Gilmore 31f39411a2 dont build cloog on sparc arches. use bootstrap on sparcv9 2009-03-12 14:51:57 +00:00
Jakub Jelinek 5a612cf11d 4.4.0-0.24 2009-03-10 11:23:08 +00:00
Jakub Jelinek 8ac0ea7ebe 4.4.0-0.23 2009-03-07 09:37:59 +00:00
Jakub Jelinek caa5b98426 4.4.0-0.23 2009-03-07 09:16:22 +00:00
Jakub Jelinek 57f97f54f5 4.4.0-0.22 2009-03-04 15:23:21 +00:00
Jakub Jelinek da33c910e9 Adjust for libcpp/lex.c changes. 2009-03-04 15:06:35 +00:00
Jakub Jelinek 00052d5c3a 4.4.0-0.22 2009-03-04 13:55:08 +00:00
Jesse Keating a404f5d9fb - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild 2009-02-24 19:45:36 +00:00
Jakub Jelinek 4786fd5d72 4.4.0-0.21 2009-02-19 16:46:34 +00:00
Jakub Jelinek 9d8aac18cb 4.4.0-0.21 2009-02-19 16:45:44 +00:00
Jakub Jelinek 9fceea1844 4.4.0-0.20 2009-02-17 17:56:57 +00:00
Jakub Jelinek 3b4372beb4 4.4.0-0.19 2009-02-16 22:11:04 +00:00
Jakub Jelinek ecb75e16b1 4.4.0-0.18 2009-02-13 13:27:56 +00:00
Jakub Jelinek 74d9670684 4.4.0-0.17 2009-02-11 14:39:24 +00:00
Jakub Jelinek 522700d7f6 4.4.0-0.16 2009-02-06 17:09:07 +00:00
Jakub Jelinek d02d0c24e1 4.4.0-0.15 2009-02-04 22:38:29 +00:00
Jakub Jelinek 8318459afa 4.4.0-0.14 2009-02-03 21:00:20 +00:00
Jakub Jelinek bd553397cd 4.4.0-0.13 2009-01-27 23:40:38 +00:00
Jakub Jelinek 32effdcb3a 4.4.0-0.12 2009-01-27 17:31:57 +00:00
Jakub Jelinek e6636958bd 4.4.0-0.11 2009-01-27 16:46:38 +00:00
Jakub Jelinek 12092fe58a gcc44-cloog-dl.patch 2009-01-27 16:46:00 +00:00
Jakub Jelinek 5563284fa7 4.4.0-0.10 2009-01-27 16:37:00 +00:00
Jakub Jelinek 9f6c7e39fa 4.4.0-0.9 2009-01-21 07:10:38 +00:00
Jakub Jelinek 8cd2032d20 4.4.0-0.8 2009-01-21 00:38:46 +00:00
Jakub Jelinek 263fe1c06b 4.4.0-0.7 2009-01-21 00:19:17 +00:00
Jakub Jelinek fc70adad35 4.4.0-0.6 2009-01-20 19:45:24 +00:00
Jakub Jelinek f29a19f5ea 4.4.0-0.5 2009-01-20 19:28:07 +00:00
Jakub Jelinek b281ffaf2a 4.4.0-0.4 2009-01-20 19:24:33 +00:00
Jakub Jelinek 6bd32f1b6d 4.4.0-0.4 2009-01-17 23:16:41 +00:00
Jakub Jelinek 5a5d8906df . 2009-01-17 08:25:15 +00:00
Jakub Jelinek 81c1aa90e1 4.4.0-0.4 2009-01-17 00:44:35 +00:00
Jakub Jelinek 7c07471093 4.4.0-0.3 2009-01-16 18:34:38 +00:00
Jakub Jelinek d69d1f8218 4.3.2-7 2008-11-05 10:15:48 +00:00
Jakub Jelinek 5565b20a6b 4.3.2-6 2008-10-09 11:05:47 +00:00
Jakub Jelinek a3328a1d29 4.3.2-6 2008-10-09 10:24:52 +00:00
Jakub Jelinek 469bb9a944 4.3.2-5 2008-10-08 13:12:55 +00:00
Jakub Jelinek 8b55e223d6 4.3.2-4 2008-09-17 21:48:16 +00:00
Jakub Jelinek 34352b072b 4.3.2-3 2008-09-05 22:45:28 +00:00
Jakub Jelinek 5127525464 4.3.2-3 2008-09-05 22:15:57 +00:00
Jakub Jelinek cd9cbfcd14 4.3.2-2 2008-09-05 08:43:54 +00:00
Jakub Jelinek 1af11d046b 4.3.2-1 2008-08-29 16:55:52 +00:00
Jakub Jelinek e41a249027 4.3.2-1 2008-08-29 11:35:32 +00:00
Jakub Jelinek b10732a3ee 4.3.2-1 2008-08-29 11:16:06 +00:00
Jakub Jelinek 66f35a6aae 4.3.1-8 2008-08-25 12:56:48 +00:00
Jakub Jelinek dc4fc4efba 4.3.1-8 2008-08-25 12:07:40 +00:00
Jakub Jelinek f60b61efff 4.3.1-7 2008-08-14 07:10:39 +00:00
Jakub Jelinek a7c5134730 4.3.1-7 2008-08-12 19:35:02 +00:00
Jakub Jelinek b22a29f08c 4.3.1-6 2008-08-01 07:47:56 +00:00
Jakub Jelinek e8d96b9005 4.3.1-5 2008-07-28 18:51:52 +00:00
Jakub Jelinek 002bb7bb04 4.3.1-5 2008-07-28 17:28:20 +00:00
Jakub Jelinek 9f5d8acce9 4.3.1-8 2008-07-08 09:50:17 +00:00
Jakub Jelinek e1c771b901 4.3.1-4 2008-07-08 08:28:27 +00:00
Jakub Jelinek 5d277e24e6 4.3.1-3 2008-06-24 12:20:15 +00:00
Jakub Jelinek 7cd0f0de73 4.3.1-2 2008-06-12 20:12:04 +00:00
Jakub Jelinek bae6176796 4.3.1-1 2008-06-09 11:42:57 +00:00
Jakub Jelinek 9dd31b0ca8 4.3.0-8 2008-04-28 15:26:55 +00:00
Jakub Jelinek 02167d8fc9 4.3.0-8 2008-04-28 13:34:17 +00:00
Jakub Jelinek ae41cd9081 4.3.0-7 2008-04-16 08:15:27 +00:00
Jakub Jelinek 08a0a12f84 4.3.0-6 2008-04-04 12:50:28 +00:00
Jakub Jelinek fdfaee17fd Fix for sparc 2008-03-28 12:41:58 +00:00
Jakub Jelinek 076c235049 4.3.0-5 2008-03-27 19:28:27 +00:00
Jakub Jelinek c358f1d2d3 4.3.0-5 2008-03-27 14:32:22 +00:00
Jakub Jelinek 63fa8769db 4.3.0-4 2008-03-26 19:56:57 +00:00
Jakub Jelinek 56a73f457c 4.3.0-3 2008-03-14 17:58:56 +00:00
Jakub Jelinek fa37083d6b 4.3.0-3 2008-03-14 17:51:01 +00:00
Jakub Jelinek 69c085da3a 4.3.0-2 2008-03-07 16:36:09 +00:00
Jakub Jelinek d3981481e5 4.3.0-1 2008-03-07 09:08:38 +00:00
Jakub Jelinek aa92b34140 4.3.0-0.13 2008-03-01 00:15:53 +00:00
Jakub Jelinek 9810a5be1b 4.3.0-0.12 2008-02-28 11:29:03 +00:00
Jakub Jelinek 872d559c70 4.3.0-0.11 2008-02-22 13:45:04 +00:00
Jakub Jelinek 7112ded666 4.3.0-0.10 2008-02-18 15:35:44 +00:00
Jakub Jelinek 9acf9331f9 4.3.0-0.10 2008-02-18 15:09:21 +00:00
Jakub Jelinek 96e022d38e 4.3.0-0.9 2008-02-14 08:50:18 +00:00
Jakub Jelinek cbffc05bdd 4.3.0-0.8 2008-02-12 22:40:15 +00:00
Jakub Jelinek f659baaab5 4.3.0-0.7 2008-01-30 09:10:23 +00:00
Jakub Jelinek 11c26b9220 4.3.0-0.6 2008-01-26 09:42:33 +00:00
Jakub Jelinek 915778d052 4.3.0-0.6 2008-01-25 20:23:23 +00:00
Jakub Jelinek 18792bedb3 4.3.0-0.6 2008-01-25 17:43:01 +00:00
Jakub Jelinek 769378652e 4.3.0-0.6 2008-01-25 17:07:14 +00:00
Jakub Jelinek d854f22c92 4.3.0-0.5 2008-01-10 21:09:13 +00:00
Jakub Jelinek c1c61f3fd5 4.3.0-0.4 2007-12-21 13:28:41 +00:00
Jakub Jelinek 8f50ce0235 4.3.0-0.4 2007-12-20 23:31:03 +00:00
Jakub Jelinek 1cefe55737 4.3.0-0.4 2007-12-20 17:45:52 +00:00
Jakub Jelinek 26315c4d94 4.3.0-0.4 2007-12-20 17:17:48 +00:00
Jakub Jelinek 9389c66798 4.3.0-0.4 2007-12-20 16:34:11 +00:00
Jakub Jelinek 9093a333b8 4.3.0-0.3 2007-12-14 18:00:42 +00:00
Jakub Jelinek 080629bad7 4.3.0-0.2 2007-12-12 23:29:33 +00:00
Jakub Jelinek 3daebbc617 4.3.0-0.2 2007-12-12 20:33:17 +00:00
Jakub Jelinek 293eaa4c37 4.3.0-0.2 2007-12-12 20:16:35 +00:00
Jakub Jelinek 56d2e81901 4.1.2-36 2007-12-12 14:09:21 +00:00
Jakub Jelinek 6d24351ab8 4.1.2-35 2007-12-02 19:05:44 +00:00
Jakub Jelinek d8d9cbe2d6 4.1.2-34 2007-11-25 20:29:41 +00:00
Jakub Jelinek 70a3a1d063 4.1.2-32 2007-10-16 14:18:55 +00:00
Bill Nottingham 6a8aa58890 makefile update to properly grab makefile.common 2007-10-15 18:46:35 +00:00
Jakub Jelinek 720e849aa6 4.1.2-31 2007-10-02 22:21:55 +00:00
Jakub Jelinek f7b32afe54 4.1.2-30 2007-10-01 21:32:51 +00:00
Jakub Jelinek 44d66d10ce 4.1.2-29 2007-09-28 21:27:06 +00:00
Jakub Jelinek e198454f27 4.1.2-28 2007-09-25 16:09:05 +00:00
Jakub Jelinek 764e3b5c01 4.1.2-26 2007-09-22 14:04:01 +00:00
Jakub Jelinek b2bb76df75 4.1.2-26 2007-09-22 13:39:39 +00:00
Jakub Jelinek 3b9adfc334 4.1.2-26 2007-09-22 13:25:53 +00:00
Jakub Jelinek 14e9c95c97 4.1.2-26 2007-09-22 12:45:46 +00:00
Jakub Jelinek 9899d703f0 4.1.2-26 2007-09-22 08:13:13 +00:00
Jakub Jelinek e35b33c009 4.1.2-25 2007-09-17 21:03:53 +00:00
Jakub Jelinek 053ba6faf1 4.1.2-24 2007-09-14 20:46:35 +00:00
Jakub Jelinek 062e14b258 4.1.2-23 2007-09-07 07:12:55 +00:00
Jakub Jelinek 2d7fb2fe4b 4.1.2-22 2007-09-06 12:26:46 +00:00
Jakub Jelinek 78dcd37f23 4.1.2-21 2007-09-01 09:37:50 +00:00
Jakub Jelinek 59a7db289b 4.1.2-21 2007-09-01 09:36:16 +00:00
Jakub Jelinek 95df1c0db6 4.1.2-20 2007-08-31 21:09:32 +00:00
Jakub Jelinek 34b340a5bb 4.1.2-19 2007-08-21 19:33:58 +00:00
Jakub Jelinek 353b489040 4.1.2-18 2007-08-16 17:54:04 +00:00
Jakub Jelinek 6bee86761c Resolves: #251936 2007-08-13 16:29:39 +00:00
Jakub Jelinek a4260957af 4.1.2-17 2007-07-24 20:37:38 +00:00
Jakub Jelinek 59ad88b1b6 4.1.2-16 2007-07-23 12:23:41 +00:00
Jakub Jelinek 6ca4426344 4.1.2-15 2007-07-04 20:06:39 +00:00
Jakub Jelinek cdb0987e55 4.1.2-14 2007-06-26 13:12:19 +00:00
Jakub Jelinek 1c109062ac 4.1.2-13 2007-06-15 17:42:21 +00:00
64 changed files with 4453 additions and 11298 deletions

View File

@ -1 +0,0 @@
gcc-4.1.2-20070503.tar.bz2

8
.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
/gcc-10.0.1-20200118.tar.xz
/newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz
/nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz
/gcc-10.0.1-20200121.tar.xz
/gcc-10.0.1-20200123.tar.xz
/gcc-10.0.1-20200126.tar.xz
/gcc-10.0.1-20200130.tar.xz
/gcc-10.0.1-20200216.tar.xz

View File

@ -1,6 +0,0 @@
# Makefile for source rpm: gcc
# $Id$
NAME := gcc
SPECFILE = $(firstword $(wildcard *.spec))
include ../common/Makefile.common

View File

@ -1,56 +0,0 @@
gcjwebplugin is a Firefox plugin for running Java applets. It is now
included in the libgcj sub-package, though it is not enabled by
default.
GNU Classpath and libgcj's security implementation is under active
development, but it is not ready to be declared secure. Specifically,
it cannot run untrusted applets safely.
When gcjwebplugin is enabled, it prompts you with a dialog before
loading an applet. The dialog tells you that a certain URL would like
to load an applet, and asks if you trust the applet. Be aware though
that this dialog is mostly informative and doesn't provide much
protection:
- http and DNS can be spoofed meaning that the URL named in the
warning dialog cannot be trusted
- someone could create a browser denial-of-service attack by creating a
page with hundreds of applet tags, causing gcjwebplugin to create
warning dialog after warning dialog. The browser would have to be
closed to eliminate the latest dialog
- the whitelist is provided as a convenience, but it is unsafe because a
domain may change hands from a trusted owner to an untrusted owner.
If that domain is in the whitelist then the warning dialog will not
appear when loading the new malicious applet.
CURRENTLY GCJWEBPLUGIN RUNS WITH NO SECURITY MANAGER. THIS MEANS THAT
APPLETS CAN DO ANYTHING A JAVA APPLICATION THAT YOU DOWNLOAD AND RUN
COULD DO. BE *VERY* CAREFUL WHICH APPLETS YOU RUN. DO NOT USE
GCJWEBPLUGIN ON YOUR SYSTEM IF YOUR SYSTEM STORES IMPORTANT DATA.
THIS DATA CAN BE DESTROYED OR STOLEN.
The same warning applies to gappletviewer, which also runs with no
security manager (in fact, gcjwebplugin spawns gappletviewer to do the
applet loading). When run on the command line, gappletviewer issues a
warning on startup and asks you if you want to continue.
Even considering the risks involved, you may still want to try
gcjwebplugin. GNU Classpath's AWT and Swing implementations are now
sufficiently mature that they're able to run many applets deployed on
the web. If you're interested in trying gcjwebplugin, you can do so
by creating a symbolic link in ~/.mozilla/plugins like so:
ln -s /usr/lib/gcj-@VERSION@/libgcjwebplugin.so ~/.mozilla/plugins/
Type about:plugins in Firefox's URL bar to confirm that the plugin has
been loaded. To see gcjwebplugin debugging output, run:
firefox -g
then at the GDB prompt, type
run
Please report bugs in Red Hat Bugzilla: http://bugzilla.redhat.com

35
STAGE1-gcc Normal file
View File

@ -0,0 +1,35 @@
srpm gcc
mcd $BUILDDIR/gcc
# These are for gcc cross-tools (politics sometime result in slightly
# different arch names)
GCC_CONFIGARGS="--prefix=$PREFIX
--libdir=$PREFIX/lib${SUFFIX}
--target=$TARGET
${GCC_CONFIG_EXTRA}
--enable-languages=c,c++
--with-sysroot=$ROOTFS
--with-build-sysroot=$ROOTFS
--cache-file=config.cache
--disable-bootstrap
--enable-threads=posix
--enable-64-bit-bfd
--disable-lto
$WITHPPL
"
# prefill gcc cache
echo 'lt_cv_shlibpath_overrides_runpath=no' > config.cache
echo 'gcc_cv_libc_provides_ssp=yes' >> config.cache
if [ ! "$BUILDER_ARCH" = "$TARGET_ARCH" ]; then
WITH_HEADERS="--with-headers=$ROOTFS/usr/include"
fi
$SRC/gcc-*/configure $GCC_CONFIGARGS $WITH_HEADERS
notparallel
make $J
make $J install
mcd $ROOTFS/lib${SUFFIX}/gcc
rsync -av $PREFIX/lib${SUFFIX}/gcc/ $ROOTFS/lib${SUFFIX}/gcc/
rsync -av $PREFIX/$TARGET/lib/ $ROOTFS/lib${SUFFIX}/

48
STAGE1-gcc-host Normal file
View File

@ -0,0 +1,48 @@
srpm gcc
mcd $BUILDDIR/gcc-host
# These are for gcc cross-tools (politics sometime result in slightly
# different arch names)
GCC_CONFIGARGS="--prefix=$PREFIX
--libdir=$PREFIX/lib${SUFFIX}
--target=$TARGET
${GCC_CONFIG_EXTRA}
--enable-languages=c,c++
--with-sysroot=$ROOTFS
--with-build-sysroot=$ROOTFS
--cache-file=config.cache
--disable-bootstrap
--enable-threads=posix
--enable-64-bit-bfd
--disable-lto
$WITHPPL
"
# prefill gcc cache
echo 'lt_cv_shlibpath_overrides_runpath=no' > config.cache
echo 'gcc_cv_libc_provides_ssp=yes' >> config.cache
if [ ! "$BUILDER_ARCH" = "$TARGET_ARCH" ]; then
WITH_HEADERS="--with-headers=$ROOTFS/usr/include"
fi
$SRC/gcc-*/configure $GCC_CONFIGARGS $WITH_HEADERS
notparallel
# Pass gcc_cv_libc_provides_ssp down, because the config.cache
# version is not passed down to the gcc subdir.
make $J all-host gcc_cv_libc_provides_ssp=yes
make $J install-host gcc_cv_libc_provides_ssp=yes
if false; then
mkdirp $ROOTFS/usr/lib${SUFFIX}
for o in crt Scrt1 crti crtbegin crtbeginS crtend crtendS crtn
do
$TARGET-gcc -nostdlib -nostartfiles -c -x c /dev/null -c -o $ROOTFS/usr/lib${SUFFIX}/$o.o
done
for so in gcc gcc_s c
do
$TARGET-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o $ROOTFS/usr/lib${SUFFIX}/lib$so.so
done
fi

34
STAGE1-gcc-libgcc Normal file
View File

@ -0,0 +1,34 @@
srpm gcc
mcd $BUILDDIR/gcc-libgcc
# These are for gcc cross-tools (politics sometime result in slightly
# different arch names)
GCC_CONFIGARGS="--prefix=$PREFIX
--libdir=$PREFIX/lib${SUFFIX}
--target=$TARGET
${GCC_CONFIG_EXTRA}
--enable-languages=c,c++
--with-sysroot=$ROOTFS
--with-build-sysroot=$ROOTFS
--cache-file=config.cache
--disable-bootstrap
--enable-threads=posix
--enable-64-bit-bfd
--disable-lto
$WITHPPL
"
# prefill gcc cache
echo 'lt_cv_shlibpath_overrides_runpath=no' > config.cache
echo 'gcc_cv_libc_provides_ssp=yes' >> config.cache
if [ ! "$BUILDER_ARCH" = "$TARGET_ARCH" ]; then
WITH_HEADERS="--with-headers=$ROOTFS/usr/include"
fi
$SRC/gcc-*/configure $GCC_CONFIGARGS $WITH_HEADERS
notparallel
# Pass gcc_cv_libc_provides_ssp down, because the config.cache
# version is not passed down to the gcc subdir.
make $J all-target-libgcc all-target-libssp gcc_cv_libc_provides_ssp=yes
make $J install-target-libgcc install-target-libssp gcc_cv_libc_provides_ssp=yes

28
STAGE1-t-gcc Normal file
View File

@ -0,0 +1,28 @@
srpm gcc
mcd $BUILDDIR/t-gcc
GCC_TCONFIGARGS="--prefix=/usr
--libdir=/usr/lib${SUFFIX}
--with-sysroot=/
--with-build-sysroot=$ROOTFS
--build=$BUILD
--host=$TARGET
--target=$TARGET
--disable-bootstrap
--enable-werror=no
--enable-cxx
${GCC_CONFIG_EXTRA}
--enable-languages=c,c++
--enable-threads=posix
--enable-linker-build-id
"
$SRC/gcc-*/configure $GCC_TCONFIGARGS
notparallel
make $J
make $J install DESTDIR=${ROOTFS}
test -e ${ROOTFS}/usr/bin/cc && rm ${ROOTFS}/usr/bin/cc
ln -s gcc ${ROOTFS}/usr/bin/cc
mkdir -p ${ROOTFS}/usr/share/gdb/auto-load/usr/lib${SUFFIX}
mv -f ${ROOTFS}/usr/lib${SUFFIX}/libstdc++*gdb.py* \
${ROOTFS}/usr/share/gdb/auto-load/usr/lib${SUFFIX}

3094
gcc.spec Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,27 @@
2017-02-25 Jakub Jelinek <jakub@redhat.com>
* configure.ac: When adding -Wno-format, also add -Wno-format-security.
* configure: Regenerated.
--- gcc/configure.ac.jj 2017-02-13 12:20:53.000000000 +0100
+++ gcc/configure.ac 2017-02-25 12:42:32.859175403 +0100
@@ -480,7 +480,7 @@ AC_ARG_ENABLE(build-format-warnings,
AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
[],[enable_build_format_warnings=yes])
AS_IF([test $enable_build_format_warnings = no],
- [wf_opt=-Wno-format],[wf_opt=])
+ [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=])
ACX_PROG_CXX_WARNING_OPTS(
m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
[-Wcast-qual -Wno-error=format-diag $wf_opt])),
--- gcc/configure.jj 2017-02-13 12:20:52.000000000 +0100
+++ gcc/configure 2017-02-25 12:42:50.041946391 +0100
@@ -6647,7 +6647,7 @@ else
fi
if test $enable_build_format_warnings = no; then :
- wf_opt=-Wno-format
+ wf_opt="-Wno-format -Wno-format-security"
else
wf_opt=
fi

View File

@ -0,0 +1,20 @@
2019-01-17 Jakub Jelinek <jakub@redhat.com>
* d-spec.cc (lang_specific_driver): Make -shared-libphobos
the default rather than -static-libphobos.
--- gcc/d/d-spec.cc.jj 2019-01-01 12:37:49.502444257 +0100
+++ gcc/d/d-spec.cc 2019-01-17 17:09:45.364949246 +0100
@@ -405,9 +405,9 @@ lang_specific_driver (cl_decoded_option
/* Add `-lgphobos' if we haven't already done so. */
if (phobos_library != PHOBOS_NOLINK && need_phobos)
{
- /* Default to static linking. */
- if (phobos_library != PHOBOS_DYNAMIC)
- phobos_library = PHOBOS_STATIC;
+ /* Default to shared linking. */
+ if (phobos_library != PHOBOS_STATIC)
+ phobos_library = PHOBOS_DYNAMIC;
#ifdef HAVE_LD_STATIC_DYNAMIC
if (phobos_library == PHOBOS_DYNAMIC && static_link)

View File

@ -0,0 +1,122 @@
2019-01-17 Jakub Jelinek <jakub@redhat.com>
* gcc.c (offload_targets_default): New variable.
(process_command): Set it if -foffload is defaulted.
(driver::maybe_putenv_OFFLOAD_TARGETS): Add OFFLOAD_TARGET_DEFAULT=1
into environment if -foffload has been defaulted.
* lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define.
(compile_offload_image): If OFFLOAD_TARGET_DEFAULT
is in the environment, don't fail if corresponding mkoffload
can't be found.
(compile_images_for_offload_targets): Likewise. Free and clear
offload_names if no valid offload is found.
libgomp/
* target.c (gomp_load_plugin_for_device): If a plugin can't be
dlopened, assume it has no devices silently.
--- gcc/gcc.c.jj 2017-01-17 10:28:40.000000000 +0100
+++ gcc/gcc.c 2017-01-20 16:26:29.649962902 +0100
@@ -290,6 +290,10 @@ static const char *spec_host_machine = D
static char *offload_targets = NULL;
+/* Set to true if -foffload has not been used and offload_targets
+ is set to the configured in default. */
+static bool offload_targets_default;
+
/* Nonzero if cross-compiling.
When -b is used, the value comes from the `specs' file. */
@@ -4457,7 +4461,10 @@ process_command (unsigned int decoded_op
/* If the user didn't specify any, default to all configured offload
targets. */
if (ENABLE_OFFLOADING && offload_targets == NULL)
- handle_foffload_option (OFFLOAD_TARGETS);
+ {
+ handle_foffload_option (OFFLOAD_TARGETS);
+ offload_targets_default = true;
+ }
if (output_file
&& strcmp (output_file, "-") != 0
@@ -7693,6 +7700,8 @@ driver::maybe_putenv_OFFLOAD_TARGETS ()
obstack_grow (&collect_obstack, offload_targets,
strlen (offload_targets) + 1);
xputenv (XOBFINISH (&collect_obstack, char *));
+ if (offload_targets_default)
+ xputenv ("OFFLOAD_TARGET_DEFAULT=1");
}
free (offload_targets);
--- gcc/lto-wrapper.c.jj 2017-01-01 12:45:34.000000000 +0100
+++ gcc/lto-wrapper.c 2017-01-20 16:34:18.294016997 +0100
@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3.
/* Environment variable, used for passing the names of offload targets from GCC
driver to lto-wrapper. */
#define OFFLOAD_TARGET_NAMES_ENV "OFFLOAD_TARGET_NAMES"
+#define OFFLOAD_TARGET_DEFAULT_ENV "OFFLOAD_TARGET_DEFAULT"
enum lto_mode_d {
LTO_MODE_NONE, /* Not doing LTO. */
@@ -822,6 +823,12 @@ compile_offload_image (const char *targe
break;
}
+ if (!compiler && getenv (OFFLOAD_TARGET_DEFAULT_ENV))
+ {
+ free_array_of_ptrs ((void **) paths, n_paths);
+ return NULL;
+ }
+
if (!compiler)
fatal_error (input_location,
"could not find %s in %s (consider using %<-B%>)",
@@ -885,6 +892,7 @@ compile_images_for_offload_targets (unsi
unsigned num_targets = parse_env_var (target_names, &names, NULL);
int next_name_entry = 0;
+ bool hsa_seen = false;
const char *compiler_path = getenv ("COMPILER_PATH");
if (!compiler_path)
goto out;
@@ -897,18 +905,26 @@ compile_images_for_offload_targets (unsi
/* HSA does not use LTO-like streaming and a different compiler, skip
it. */
if (strcmp (names[i], "hsa") == 0)
- continue;
+ {
+ hsa_seen = true;
+ continue;
+ }
offload_names[next_name_entry]
= compile_offload_image (names[i], compiler_path, in_argc, in_argv,
compiler_opts, compiler_opt_count,
linker_opts, linker_opt_count);
if (!offload_names[next_name_entry])
- fatal_error (input_location,
- "problem with building target image for %s", names[i]);
+ continue;
next_name_entry++;
}
+ if (next_name_entry == 0 && !hsa_seen)
+ {
+ free (offload_names);
+ offload_names = NULL;
+ }
+
out:
free_array_of_ptrs ((void **) names, num_targets);
}
--- libgomp/target.c.jj 2017-01-01 12:45:52.000000000 +0100
+++ libgomp/target.c 2017-01-20 20:12:13.756710875 +0100
@@ -2356,7 +2356,7 @@ gomp_load_plugin_for_device (struct gomp
void *plugin_handle = dlopen (plugin_name, RTLD_LAZY);
if (!plugin_handle)
- goto dl_fail;
+ return 0;
/* Check if all required functions are available in the plugin and store
their handlers. None of the symbols can legitimately be NULL,

126
gcc10-hack.patch Normal file
View File

@ -0,0 +1,126 @@
--- libada/Makefile.in.jj 2019-01-09 13:01:18.015608205 +0100
+++ libada/Makefile.in 2019-01-11 18:16:23.441726931 +0100
@@ -71,18 +71,40 @@ version := $(shell @get_gcc_base_ver@ $(
libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)
ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
+DEFAULTMULTIFLAGS :=
+ifeq ($(MULTISUBDIR),)
+targ:=$(subst -, ,$(target))
+arch:=$(word 1,$(targ))
+ifeq ($(words $(targ)),2)
+osys:=$(word 2,$(targ))
+else
+osys:=$(word 3,$(targ))
+endif
+ifeq ($(strip $(filter-out i%86 x86_64 powerpc% ppc% s390% sparc% linux%, $(arch) $(osys))),)
+ifeq ($(shell $(CC) $(CFLAGS) -print-multi-os-directory),../lib64)
+DEFAULTMULTIFLAGS := -m64
+else
+ifeq ($(strip $(filter-out s390%, $(arch))),)
+DEFAULTMULTIFLAGS := -m31
+else
+DEFAULTMULTIFLAGS := -m32
+endif
+endif
+endif
+endif
+
# exeext should not be used because it's the *host* exeext. We're building
# a *target* library, aren't we?!? Likewise for CC. Still, provide bogus
# definitions just in case something slips through the safety net provided
# by recursive make invocations in gcc/ada/Makefile.in
LIBADA_FLAGS_TO_PASS = \
"MAKEOVERRIDES=" \
- "LDFLAGS=$(LDFLAGS)" \
+ "LDFLAGS=$(LDFLAGS) $(DEFAULTMULTIFLAGS)" \
"LN_S=$(LN_S)" \
"SHELL=$(SHELL)" \
- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
- "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
- "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
+ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
+ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
+ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
"PICFLAG_FOR_TARGET=$(PICFLAG)" \
"THREAD_KIND=$(THREAD_KIND)" \
"TRACE=$(TRACE)" \
@@ -93,7 +115,7 @@ LIBADA_FLAGS_TO_PASS = \
"exeext=.exeext.should.not.be.used " \
'CC=the.host.compiler.should.not.be.needed' \
"GCC_FOR_TARGET=$(CC)" \
- "CFLAGS=$(CFLAGS)"
+ "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
.PHONY: libada gnatlib gnatlib-shared gnatlib-sjlj gnatlib-zcx osconstool
--- config-ml.in.jj 2019-01-09 12:50:16.646501448 +0100
+++ config-ml.in 2019-01-11 18:16:23.442726914 +0100
@@ -511,6 +511,8 @@ multi-do:
ADAFLAGS="$(ADAFLAGS) $${flags}" \
prefix="$(prefix)" \
exec_prefix="$(exec_prefix)" \
+ mandir="$(mandir)" \
+ infodir="$(infodir)" \
GOCFLAGS="$(GOCFLAGS) $${flags}" \
GDCFLAGS="$(GDCFLAGS) $${flags}" \
CXXFLAGS="$(CXXFLAGS) $${flags}" \
--- libcpp/macro.c.jj 2019-01-09 13:01:21.420552123 +0100
+++ libcpp/macro.c 2019-01-11 18:18:17.736876285 +0100
@@ -3256,8 +3256,6 @@ static cpp_macro *
create_iso_definition (cpp_reader *pfile)
{
bool following_paste_op = false;
- const char *paste_op_error_msg =
- N_("'##' cannot appear at either end of a macro expansion");
unsigned int num_extra_tokens = 0;
unsigned nparms = 0;
cpp_hashnode **params = NULL;
@@ -3382,7 +3380,9 @@ create_iso_definition (cpp_reader *pfile
function-like macros, but not at the end. */
if (following_paste_op)
{
- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
+ cpp_error (pfile, CPP_DL_ERROR,
+ "'##' cannot appear at either end of a macro "
+ "expansion");
goto out;
}
if (!vaopt_tracker.completed ())
@@ -3397,7 +3397,9 @@ create_iso_definition (cpp_reader *pfile
function-like macros, but not at the beginning. */
if (macro->count == 1)
{
- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
+ cpp_error (pfile, CPP_DL_ERROR,
+ "'##' cannot appear at either end of a macro "
+ "expansion");
goto out;
}
--- libcpp/expr.c.jj 2019-01-09 13:01:22.415535734 +0100
+++ libcpp/expr.c 2019-01-11 18:16:23.444726882 +0100
@@ -788,16 +788,17 @@ cpp_classify_number (cpp_reader *pfile,
if ((result & CPP_N_WIDTH) == CPP_N_LARGE
&& CPP_OPTION (pfile, cpp_warn_long_long))
{
- const char *message = CPP_OPTION (pfile, cplusplus)
- ? N_("use of C++11 long long integer constant")
- : N_("use of C99 long long integer constant");
-
if (CPP_OPTION (pfile, c99))
cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location,
- 0, message);
+ 0, CPP_OPTION (pfile, cplusplus)
+ ? N_("use of C++11 long long integer constant")
+ : N_("use of C99 long long integer constant"));
else
cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG,
- virtual_location, 0, message);
+ virtual_location, 0,
+ CPP_OPTION (pfile, cplusplus)
+ ? N_("use of C++11 long long integer constant")
+ : N_("use of C99 long long integer constant"));
}
result |= CPP_N_INTEGER;

11
gcc10-i386-libgomp.patch Normal file
View File

@ -0,0 +1,11 @@
--- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100
+++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100
@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then
;;
*)
if test -z "$with_arch"; then
- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
fi
esac
;;

715
gcc10-isl-dl.patch Normal file
View File

@ -0,0 +1,715 @@
--- gcc/Makefile.in.jj 2015-06-06 10:00:25.000000000 +0200
+++ gcc/Makefile.in 2015-11-04 14:56:02.643536437 +0100
@@ -1063,7 +1063,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
# and the system's installed libraries.
LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
$(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
-BACKENDLIBS = $(ISLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
+BACKENDLIBS = $(if $(ISLLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
$(ZLIB) $(ZSTD_LIB)
# Any system libraries needed just for GNAT.
SYSLIBS = @GNAT_LIBEXC@
@@ -2302,6 +2302,15 @@ $(out_object_file): $(out_file)
$(common_out_object_file): $(common_out_file)
$(COMPILE) $<
$(POSTCOMPILE)
+
+graphite%.o : \
+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
+graphite.o : \
+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
+graphite%.o : \
+ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
+graphite.o : \
+ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
#
# Generate header and source files from the machine description,
# and compile them.
--- gcc/graphite.h.jj 2016-01-27 12:44:06.000000000 +0100
+++ gcc/graphite.h 2016-01-27 13:26:38.309876856 +0100
@@ -39,6 +39,590 @@ along with GCC; see the file COPYING3.
#include <isl/schedule_node.h>
#include <isl/id.h>
#include <isl/space.h>
+#include <isl/version.h>
+#include <dlfcn.h>
+
+#define DYNSYMS \
+ DYNSYM (isl_aff_add_coefficient_si); \
+ DYNSYM (isl_aff_free); \
+ DYNSYM (isl_aff_get_space); \
+ DYNSYM (isl_aff_set_coefficient_si); \
+ DYNSYM (isl_aff_set_constant_si); \
+ DYNSYM (isl_aff_zero_on_domain); \
+ DYNSYM (isl_band_free); \
+ DYNSYM (isl_band_get_children); \
+ DYNSYM (isl_band_get_partial_schedule); \
+ DYNSYM (isl_band_has_children); \
+ DYNSYM (isl_band_list_free); \
+ DYNSYM (isl_band_list_get_band); \
+ DYNSYM (isl_band_list_get_ctx); \
+ DYNSYM (isl_band_list_n_band); \
+ DYNSYM (isl_band_n_member); \
+ DYNSYM (isl_basic_map_add_constraint); \
+ DYNSYM (isl_basic_map_project_out); \
+ DYNSYM (isl_basic_map_universe); \
+ DYNSYM (isl_constraint_set_coefficient_si); \
+ DYNSYM (isl_constraint_set_constant_si); \
+ DYNSYM (isl_ctx_alloc); \
+ DYNSYM (isl_ctx_free); \
+ DYNSYM (isl_equality_alloc); \
+ DYNSYM (isl_id_alloc); \
+ DYNSYM (isl_id_copy); \
+ DYNSYM (isl_id_free); \
+ DYNSYM (isl_inequality_alloc); \
+ DYNSYM (isl_local_space_copy); \
+ DYNSYM (isl_local_space_free); \
+ DYNSYM (isl_local_space_from_space); \
+ DYNSYM (isl_local_space_range); \
+ DYNSYM (isl_map_add_constraint); \
+ DYNSYM (isl_map_add_dims); \
+ DYNSYM (isl_map_align_params); \
+ DYNSYM (isl_map_apply_range); \
+ DYNSYM (isl_map_copy); \
+ DYNSYM (isl_map_dim); \
+ DYNSYM (isl_map_dump); \
+ DYNSYM (isl_map_equate); \
+ DYNSYM (isl_map_fix_si); \
+ DYNSYM (isl_map_flat_product); \
+ DYNSYM (isl_map_flat_range_product); \
+ DYNSYM (isl_map_free); \
+ DYNSYM (isl_map_from_basic_map); \
+ DYNSYM (isl_map_from_pw_aff); \
+ DYNSYM (isl_map_from_union_map); \
+ DYNSYM (isl_map_get_ctx); \
+ DYNSYM (isl_map_get_space); \
+ DYNSYM (isl_map_get_tuple_id); \
+ DYNSYM (isl_map_insert_dims); \
+ DYNSYM (isl_map_intersect); \
+ DYNSYM (isl_map_intersect_domain); \
+ DYNSYM (isl_map_intersect_range); \
+ DYNSYM (isl_map_is_empty); \
+ DYNSYM (isl_map_lex_ge); \
+ DYNSYM (isl_map_lex_le); \
+ DYNSYM (isl_map_n_out); \
+ DYNSYM (isl_map_range); \
+ DYNSYM (isl_map_set_tuple_id); \
+ DYNSYM (isl_map_universe); \
+ DYNSYM (isl_options_set_on_error); \
+ DYNSYM (isl_options_set_schedule_serialize_sccs); \
+ DYNSYM (isl_printer_set_yaml_style); \
+ DYNSYM (isl_options_set_schedule_max_constant_term); \
+ DYNSYM (isl_options_set_schedule_maximize_band_depth); \
+ DYNSYM (isl_printer_free); \
+ DYNSYM (isl_printer_print_aff); \
+ DYNSYM (isl_printer_print_constraint); \
+ DYNSYM (isl_printer_print_map); \
+ DYNSYM (isl_printer_print_set); \
+ DYNSYM (isl_printer_to_file); \
+ DYNSYM (isl_pw_aff_add); \
+ DYNSYM (isl_pw_aff_alloc); \
+ DYNSYM (isl_pw_aff_copy); \
+ DYNSYM (isl_pw_aff_eq_set); \
+ DYNSYM (isl_pw_aff_free); \
+ DYNSYM (isl_pw_aff_from_aff); \
+ DYNSYM (isl_pw_aff_ge_set); \
+ DYNSYM (isl_pw_aff_gt_set); \
+ DYNSYM (isl_pw_aff_is_cst); \
+ DYNSYM (isl_pw_aff_le_set); \
+ DYNSYM (isl_pw_aff_lt_set); \
+ DYNSYM (isl_pw_aff_mul); \
+ DYNSYM (isl_pw_aff_ne_set); \
+ DYNSYM (isl_pw_aff_nonneg_set); \
+ DYNSYM (isl_pw_aff_set_tuple_id); \
+ DYNSYM (isl_pw_aff_sub); \
+ DYNSYM (isl_pw_aff_zero_set); \
+ DYNSYM (isl_schedule_free); \
+ DYNSYM (isl_schedule_get_band_forest); \
+ DYNSYM (isl_set_add_constraint); \
+ DYNSYM (isl_set_add_dims); \
+ DYNSYM (isl_set_apply); \
+ DYNSYM (isl_set_coalesce); \
+ DYNSYM (isl_set_copy); \
+ DYNSYM (isl_set_dim); \
+ DYNSYM (isl_set_fix_si); \
+ DYNSYM (isl_set_free); \
+ DYNSYM (isl_set_get_space); \
+ DYNSYM (isl_set_get_tuple_id); \
+ DYNSYM (isl_set_intersect); \
+ DYNSYM (isl_set_is_empty); \
+ DYNSYM (isl_set_n_dim); \
+ DYNSYM (isl_set_nat_universe); \
+ DYNSYM (isl_set_project_out); \
+ DYNSYM (isl_set_set_tuple_id); \
+ DYNSYM (isl_set_universe); \
+ DYNSYM (isl_space_add_dims); \
+ DYNSYM (isl_space_alloc); \
+ DYNSYM (isl_space_copy); \
+ DYNSYM (isl_space_dim); \
+ DYNSYM (isl_space_domain); \
+ DYNSYM (isl_space_find_dim_by_id); \
+ DYNSYM (isl_space_free); \
+ DYNSYM (isl_space_from_domain); \
+ DYNSYM (isl_space_get_tuple_id); \
+ DYNSYM (isl_space_params_alloc); \
+ DYNSYM (isl_space_range); \
+ DYNSYM (isl_space_set_alloc); \
+ DYNSYM (isl_space_set_dim_id); \
+ DYNSYM (isl_space_set_tuple_id); \
+ DYNSYM (isl_union_map_add_map); \
+ DYNSYM (isl_union_map_align_params); \
+ DYNSYM (isl_union_map_apply_domain); \
+ DYNSYM (isl_union_map_apply_range); \
+ DYNSYM (isl_union_map_compute_flow); \
+ DYNSYM (isl_union_map_copy); \
+ DYNSYM (isl_union_map_empty); \
+ DYNSYM (isl_union_map_flat_range_product); \
+ DYNSYM (isl_union_map_foreach_map); \
+ DYNSYM (isl_union_map_free); \
+ DYNSYM (isl_union_map_from_map); \
+ DYNSYM (isl_union_map_get_ctx); \
+ DYNSYM (isl_union_map_get_space); \
+ DYNSYM (isl_union_map_gist_domain); \
+ DYNSYM (isl_union_map_gist_range); \
+ DYNSYM (isl_union_map_intersect_domain); \
+ DYNSYM (isl_union_map_is_empty); \
+ DYNSYM (isl_union_map_subtract); \
+ DYNSYM (isl_union_map_union); \
+ DYNSYM (isl_union_set_add_set); \
+ DYNSYM (isl_union_set_compute_schedule); \
+ DYNSYM (isl_union_set_copy); \
+ DYNSYM (isl_union_set_empty); \
+ DYNSYM (isl_union_set_from_set); \
+ DYNSYM (isl_aff_add_constant_val); \
+ DYNSYM (isl_aff_get_coefficient_val); \
+ DYNSYM (isl_aff_get_ctx); \
+ DYNSYM (isl_aff_mod_val); \
+ DYNSYM (isl_ast_build_ast_from_schedule); \
+ DYNSYM (isl_ast_build_free); \
+ DYNSYM (isl_ast_build_from_context); \
+ DYNSYM (isl_ast_build_get_ctx); \
+ DYNSYM (isl_ast_build_get_schedule); \
+ DYNSYM (isl_ast_build_get_schedule_space); \
+ DYNSYM (isl_ast_build_set_before_each_for); \
+ DYNSYM (isl_ast_build_set_options); \
+ DYNSYM (isl_ast_expr_free); \
+ DYNSYM (isl_ast_expr_from_val); \
+ DYNSYM (isl_ast_expr_get_ctx); \
+ DYNSYM (isl_ast_expr_get_id); \
+ DYNSYM (isl_ast_expr_get_op_arg); \
+ DYNSYM (isl_ast_expr_get_op_n_arg); \
+ DYNSYM (isl_ast_expr_get_op_type); \
+ DYNSYM (isl_ast_expr_get_type); \
+ DYNSYM (isl_ast_expr_get_val); \
+ DYNSYM (isl_ast_expr_sub); \
+ DYNSYM (isl_ast_node_block_get_children); \
+ DYNSYM (isl_ast_node_for_get_body); \
+ DYNSYM (isl_ast_node_for_get_cond); \
+ DYNSYM (isl_ast_node_for_get_inc); \
+ DYNSYM (isl_ast_node_for_get_init); \
+ DYNSYM (isl_ast_node_for_get_iterator); \
+ DYNSYM (isl_ast_node_free); \
+ DYNSYM (isl_ast_node_get_annotation); \
+ DYNSYM (isl_ast_node_get_type); \
+ DYNSYM (isl_ast_node_if_get_cond); \
+ DYNSYM (isl_ast_node_if_get_else); \
+ DYNSYM (isl_ast_node_if_get_then); \
+ DYNSYM (isl_ast_node_list_free); \
+ DYNSYM (isl_ast_node_list_get_ast_node); \
+ DYNSYM (isl_ast_node_list_n_ast_node); \
+ DYNSYM (isl_ast_node_user_get_expr); \
+ DYNSYM (isl_constraint_set_coefficient_val); \
+ DYNSYM (isl_constraint_set_constant_val); \
+ DYNSYM (isl_id_get_user); \
+ DYNSYM (isl_local_space_get_ctx); \
+ DYNSYM (isl_map_fix_val); \
+ DYNSYM (isl_options_set_ast_build_atomic_upper_bound); \
+ DYNSYM (isl_printer_print_ast_node); \
+ DYNSYM (isl_printer_print_str); \
+ DYNSYM (isl_printer_set_output_format); \
+ DYNSYM (isl_pw_aff_mod_val); \
+ DYNSYM (isl_schedule_constraints_compute_schedule); \
+ DYNSYM (isl_schedule_constraints_on_domain); \
+ DYNSYM (isl_schedule_constraints_set_coincidence); \
+ DYNSYM (isl_schedule_constraints_set_proximity); \
+ DYNSYM (isl_schedule_constraints_set_validity); \
+ DYNSYM (isl_set_get_dim_id); \
+ DYNSYM (isl_set_max_val); \
+ DYNSYM (isl_set_min_val); \
+ DYNSYM (isl_set_params); \
+ DYNSYM (isl_space_align_params); \
+ DYNSYM (isl_space_map_from_domain_and_range); \
+ DYNSYM (isl_space_set_tuple_name); \
+ DYNSYM (isl_space_wrap); \
+ DYNSYM (isl_union_map_from_domain_and_range); \
+ DYNSYM (isl_union_map_range); \
+ DYNSYM (isl_union_set_union); \
+ DYNSYM (isl_union_set_universe); \
+ DYNSYM (isl_val_2exp); \
+ DYNSYM (isl_val_add_ui); \
+ DYNSYM (isl_val_copy); \
+ DYNSYM (isl_val_free); \
+ DYNSYM (isl_val_int_from_si); \
+ DYNSYM (isl_val_int_from_ui); \
+ DYNSYM (isl_val_mul); \
+ DYNSYM (isl_val_neg); \
+ DYNSYM (isl_val_sub); \
+ DYNSYM (isl_printer_print_union_map); \
+ DYNSYM (isl_pw_aff_get_ctx); \
+ DYNSYM (isl_val_is_int); \
+ DYNSYM (isl_ctx_get_max_operations); \
+ DYNSYM (isl_ctx_set_max_operations); \
+ DYNSYM (isl_ctx_last_error); \
+ DYNSYM (isl_ctx_reset_operations); \
+ DYNSYM (isl_map_coalesce); \
+ DYNSYM (isl_printer_print_schedule); \
+ DYNSYM (isl_set_set_dim_id); \
+ DYNSYM (isl_union_map_coalesce); \
+ DYNSYM (isl_multi_val_set_val); \
+ DYNSYM (isl_multi_val_zero); \
+ DYNSYM (isl_options_set_schedule_max_coefficient); \
+ DYNSYM (isl_options_set_tile_scale_tile_loops); \
+ DYNSYM (isl_schedule_copy); \
+ DYNSYM (isl_schedule_get_map); \
+ DYNSYM (isl_schedule_map_schedule_node_bottom_up); \
+ DYNSYM (isl_schedule_node_band_get_permutable); \
+ DYNSYM (isl_schedule_node_band_get_space); \
+ DYNSYM (isl_schedule_node_band_tile); \
+ DYNSYM (isl_schedule_node_child); \
+ DYNSYM (isl_schedule_node_free); \
+ DYNSYM (isl_schedule_node_get_child); \
+ DYNSYM (isl_schedule_node_get_ctx); \
+ DYNSYM (isl_schedule_node_get_type); \
+ DYNSYM (isl_schedule_node_n_children); \
+ DYNSYM (isl_union_map_is_equal); \
+ DYNSYM (isl_union_access_info_compute_flow); \
+ DYNSYM (isl_union_access_info_from_sink); \
+ DYNSYM (isl_union_access_info_set_may_source); \
+ DYNSYM (isl_union_access_info_set_must_source); \
+ DYNSYM (isl_union_access_info_set_schedule); \
+ DYNSYM (isl_union_flow_free); \
+ DYNSYM (isl_union_flow_get_may_dependence); \
+ DYNSYM (isl_union_flow_get_must_dependence); \
+ DYNSYM (isl_aff_var_on_domain); \
+ DYNSYM (isl_multi_aff_from_aff); \
+ DYNSYM (isl_schedule_get_ctx); \
+ DYNSYM (isl_multi_aff_set_tuple_id); \
+ DYNSYM (isl_multi_aff_dim); \
+ DYNSYM (isl_schedule_get_domain); \
+ DYNSYM (isl_union_set_is_empty); \
+ DYNSYM (isl_union_set_get_space); \
+ DYNSYM (isl_union_pw_multi_aff_empty); \
+ DYNSYM (isl_union_set_foreach_set); \
+ DYNSYM (isl_union_set_free); \
+ DYNSYM (isl_multi_union_pw_aff_from_union_pw_multi_aff); \
+ DYNSYM (isl_multi_union_pw_aff_apply_multi_aff); \
+ DYNSYM (isl_schedule_insert_partial_schedule); \
+ DYNSYM (isl_union_pw_multi_aff_free); \
+ DYNSYM (isl_pw_multi_aff_project_out_map); \
+ DYNSYM (isl_union_pw_multi_aff_add_pw_multi_aff); \
+ DYNSYM (isl_schedule_from_domain); \
+ DYNSYM (isl_schedule_sequence); \
+ DYNSYM (isl_ast_build_node_from_schedule); \
+ DYNSYM (isl_ast_node_mark_get_node); \
+ DYNSYM (isl_schedule_node_band_member_get_ast_loop_type); \
+ DYNSYM (isl_schedule_node_band_member_set_ast_loop_type); \
+ DYNSYM (isl_val_n_abs_num_chunks); \
+ DYNSYM (isl_val_get_abs_num_chunks); \
+ DYNSYM (isl_val_int_from_chunks); \
+ DYNSYM (isl_val_is_neg); \
+ DYNSYM (isl_version); \
+ DYNSYM (isl_options_get_on_error); \
+ DYNSYM (isl_ctx_reset_error);
+
+extern struct isl_pointers_s__
+{
+ bool inited;
+ void *h;
+#define DYNSYM(x) __typeof (x) *p_##x
+ DYNSYMS
+#undef DYNSYM
+} isl_pointers__;
+
+#define isl_aff_add_coefficient_si (*isl_pointers__.p_isl_aff_add_coefficient_si)
+#define isl_aff_free (*isl_pointers__.p_isl_aff_free)
+#define isl_aff_get_space (*isl_pointers__.p_isl_aff_get_space)
+#define isl_aff_set_coefficient_si (*isl_pointers__.p_isl_aff_set_coefficient_si)
+#define isl_aff_set_constant_si (*isl_pointers__.p_isl_aff_set_constant_si)
+#define isl_aff_zero_on_domain (*isl_pointers__.p_isl_aff_zero_on_domain)
+#define isl_band_free (*isl_pointers__.p_isl_band_free)
+#define isl_band_get_children (*isl_pointers__.p_isl_band_get_children)
+#define isl_band_get_partial_schedule (*isl_pointers__.p_isl_band_get_partial_schedule)
+#define isl_band_has_children (*isl_pointers__.p_isl_band_has_children)
+#define isl_band_list_free (*isl_pointers__.p_isl_band_list_free)
+#define isl_band_list_get_band (*isl_pointers__.p_isl_band_list_get_band)
+#define isl_band_list_get_ctx (*isl_pointers__.p_isl_band_list_get_ctx)
+#define isl_band_list_n_band (*isl_pointers__.p_isl_band_list_n_band)
+#define isl_band_n_member (*isl_pointers__.p_isl_band_n_member)
+#define isl_basic_map_add_constraint (*isl_pointers__.p_isl_basic_map_add_constraint)
+#define isl_basic_map_project_out (*isl_pointers__.p_isl_basic_map_project_out)
+#define isl_basic_map_universe (*isl_pointers__.p_isl_basic_map_universe)
+#define isl_constraint_set_coefficient_si (*isl_pointers__.p_isl_constraint_set_coefficient_si)
+#define isl_constraint_set_constant_si (*isl_pointers__.p_isl_constraint_set_constant_si)
+#define isl_ctx_alloc (*isl_pointers__.p_isl_ctx_alloc)
+#define isl_ctx_free (*isl_pointers__.p_isl_ctx_free)
+#define isl_equality_alloc (*isl_pointers__.p_isl_equality_alloc)
+#define isl_id_alloc (*isl_pointers__.p_isl_id_alloc)
+#define isl_id_copy (*isl_pointers__.p_isl_id_copy)
+#define isl_id_free (*isl_pointers__.p_isl_id_free)
+#define isl_inequality_alloc (*isl_pointers__.p_isl_inequality_alloc)
+#define isl_local_space_copy (*isl_pointers__.p_isl_local_space_copy)
+#define isl_local_space_free (*isl_pointers__.p_isl_local_space_free)
+#define isl_local_space_from_space (*isl_pointers__.p_isl_local_space_from_space)
+#define isl_local_space_range (*isl_pointers__.p_isl_local_space_range)
+#define isl_map_add_constraint (*isl_pointers__.p_isl_map_add_constraint)
+#define isl_map_add_dims (*isl_pointers__.p_isl_map_add_dims)
+#define isl_map_align_params (*isl_pointers__.p_isl_map_align_params)
+#define isl_map_apply_range (*isl_pointers__.p_isl_map_apply_range)
+#define isl_map_copy (*isl_pointers__.p_isl_map_copy)
+#define isl_map_dim (*isl_pointers__.p_isl_map_dim)
+#define isl_map_dump (*isl_pointers__.p_isl_map_dump)
+#define isl_map_equate (*isl_pointers__.p_isl_map_equate)
+#define isl_map_fix_si (*isl_pointers__.p_isl_map_fix_si)
+#define isl_map_flat_product (*isl_pointers__.p_isl_map_flat_product)
+#define isl_map_flat_range_product (*isl_pointers__.p_isl_map_flat_range_product)
+#define isl_map_free (*isl_pointers__.p_isl_map_free)
+#define isl_map_from_basic_map (*isl_pointers__.p_isl_map_from_basic_map)
+#define isl_map_from_pw_aff (*isl_pointers__.p_isl_map_from_pw_aff)
+#define isl_map_from_union_map (*isl_pointers__.p_isl_map_from_union_map)
+#define isl_map_get_ctx (*isl_pointers__.p_isl_map_get_ctx)
+#define isl_map_get_space (*isl_pointers__.p_isl_map_get_space)
+#define isl_map_get_tuple_id (*isl_pointers__.p_isl_map_get_tuple_id)
+#define isl_map_insert_dims (*isl_pointers__.p_isl_map_insert_dims)
+#define isl_map_intersect (*isl_pointers__.p_isl_map_intersect)
+#define isl_map_intersect_domain (*isl_pointers__.p_isl_map_intersect_domain)
+#define isl_map_intersect_range (*isl_pointers__.p_isl_map_intersect_range)
+#define isl_map_is_empty (*isl_pointers__.p_isl_map_is_empty)
+#define isl_map_lex_ge (*isl_pointers__.p_isl_map_lex_ge)
+#define isl_map_lex_le (*isl_pointers__.p_isl_map_lex_le)
+#define isl_map_n_out (*isl_pointers__.p_isl_map_n_out)
+#define isl_map_range (*isl_pointers__.p_isl_map_range)
+#define isl_map_set_tuple_id (*isl_pointers__.p_isl_map_set_tuple_id)
+#define isl_map_universe (*isl_pointers__.p_isl_map_universe)
+#define isl_options_set_on_error (*isl_pointers__.p_isl_options_set_on_error)
+#define isl_options_set_schedule_serialize_sccs (*isl_pointers__.p_isl_options_set_schedule_serialize_sccs)
+#define isl_printer_set_yaml_style (*isl_pointers__.p_isl_printer_set_yaml_style)
+#define isl_options_set_schedule_max_constant_term (*isl_pointers__.p_isl_options_set_schedule_max_constant_term)
+#define isl_options_set_schedule_maximize_band_depth (*isl_pointers__.p_isl_options_set_schedule_maximize_band_depth)
+#define isl_printer_free (*isl_pointers__.p_isl_printer_free)
+#define isl_printer_print_aff (*isl_pointers__.p_isl_printer_print_aff)
+#define isl_printer_print_constraint (*isl_pointers__.p_isl_printer_print_constraint)
+#define isl_printer_print_map (*isl_pointers__.p_isl_printer_print_map)
+#define isl_printer_print_set (*isl_pointers__.p_isl_printer_print_set)
+#define isl_printer_to_file (*isl_pointers__.p_isl_printer_to_file)
+#define isl_pw_aff_add (*isl_pointers__.p_isl_pw_aff_add)
+#define isl_pw_aff_alloc (*isl_pointers__.p_isl_pw_aff_alloc)
+#define isl_pw_aff_copy (*isl_pointers__.p_isl_pw_aff_copy)
+#define isl_pw_aff_eq_set (*isl_pointers__.p_isl_pw_aff_eq_set)
+#define isl_pw_aff_free (*isl_pointers__.p_isl_pw_aff_free)
+#define isl_pw_aff_from_aff (*isl_pointers__.p_isl_pw_aff_from_aff)
+#define isl_pw_aff_ge_set (*isl_pointers__.p_isl_pw_aff_ge_set)
+#define isl_pw_aff_gt_set (*isl_pointers__.p_isl_pw_aff_gt_set)
+#define isl_pw_aff_is_cst (*isl_pointers__.p_isl_pw_aff_is_cst)
+#define isl_pw_aff_le_set (*isl_pointers__.p_isl_pw_aff_le_set)
+#define isl_pw_aff_lt_set (*isl_pointers__.p_isl_pw_aff_lt_set)
+#define isl_pw_aff_mul (*isl_pointers__.p_isl_pw_aff_mul)
+#define isl_pw_aff_ne_set (*isl_pointers__.p_isl_pw_aff_ne_set)
+#define isl_pw_aff_nonneg_set (*isl_pointers__.p_isl_pw_aff_nonneg_set)
+#define isl_pw_aff_set_tuple_id (*isl_pointers__.p_isl_pw_aff_set_tuple_id)
+#define isl_pw_aff_sub (*isl_pointers__.p_isl_pw_aff_sub)
+#define isl_pw_aff_zero_set (*isl_pointers__.p_isl_pw_aff_zero_set)
+#define isl_schedule_free (*isl_pointers__.p_isl_schedule_free)
+#define isl_schedule_get_band_forest (*isl_pointers__.p_isl_schedule_get_band_forest)
+#define isl_set_add_constraint (*isl_pointers__.p_isl_set_add_constraint)
+#define isl_set_add_dims (*isl_pointers__.p_isl_set_add_dims)
+#define isl_set_apply (*isl_pointers__.p_isl_set_apply)
+#define isl_set_coalesce (*isl_pointers__.p_isl_set_coalesce)
+#define isl_set_copy (*isl_pointers__.p_isl_set_copy)
+#define isl_set_dim (*isl_pointers__.p_isl_set_dim)
+#define isl_set_fix_si (*isl_pointers__.p_isl_set_fix_si)
+#define isl_set_free (*isl_pointers__.p_isl_set_free)
+#define isl_set_get_space (*isl_pointers__.p_isl_set_get_space)
+#define isl_set_get_tuple_id (*isl_pointers__.p_isl_set_get_tuple_id)
+#define isl_set_intersect (*isl_pointers__.p_isl_set_intersect)
+#define isl_set_is_empty (*isl_pointers__.p_isl_set_is_empty)
+#define isl_set_n_dim (*isl_pointers__.p_isl_set_n_dim)
+#define isl_set_nat_universe (*isl_pointers__.p_isl_set_nat_universe)
+#define isl_set_project_out (*isl_pointers__.p_isl_set_project_out)
+#define isl_set_set_tuple_id (*isl_pointers__.p_isl_set_set_tuple_id)
+#define isl_set_universe (*isl_pointers__.p_isl_set_universe)
+#define isl_space_add_dims (*isl_pointers__.p_isl_space_add_dims)
+#define isl_space_alloc (*isl_pointers__.p_isl_space_alloc)
+#define isl_space_copy (*isl_pointers__.p_isl_space_copy)
+#define isl_space_dim (*isl_pointers__.p_isl_space_dim)
+#define isl_space_domain (*isl_pointers__.p_isl_space_domain)
+#define isl_space_find_dim_by_id (*isl_pointers__.p_isl_space_find_dim_by_id)
+#define isl_space_free (*isl_pointers__.p_isl_space_free)
+#define isl_space_from_domain (*isl_pointers__.p_isl_space_from_domain)
+#define isl_space_get_tuple_id (*isl_pointers__.p_isl_space_get_tuple_id)
+#define isl_space_params_alloc (*isl_pointers__.p_isl_space_params_alloc)
+#define isl_space_range (*isl_pointers__.p_isl_space_range)
+#define isl_space_set_alloc (*isl_pointers__.p_isl_space_set_alloc)
+#define isl_space_set_dim_id (*isl_pointers__.p_isl_space_set_dim_id)
+#define isl_space_set_tuple_id (*isl_pointers__.p_isl_space_set_tuple_id)
+#define isl_union_map_add_map (*isl_pointers__.p_isl_union_map_add_map)
+#define isl_union_map_align_params (*isl_pointers__.p_isl_union_map_align_params)
+#define isl_union_map_apply_domain (*isl_pointers__.p_isl_union_map_apply_domain)
+#define isl_union_map_apply_range (*isl_pointers__.p_isl_union_map_apply_range)
+#define isl_union_map_compute_flow (*isl_pointers__.p_isl_union_map_compute_flow)
+#define isl_union_map_copy (*isl_pointers__.p_isl_union_map_copy)
+#define isl_union_map_empty (*isl_pointers__.p_isl_union_map_empty)
+#define isl_union_map_flat_range_product (*isl_pointers__.p_isl_union_map_flat_range_product)
+#define isl_union_map_foreach_map (*isl_pointers__.p_isl_union_map_foreach_map)
+#define isl_union_map_free (*isl_pointers__.p_isl_union_map_free)
+#define isl_union_map_from_map (*isl_pointers__.p_isl_union_map_from_map)
+#define isl_union_map_get_ctx (*isl_pointers__.p_isl_union_map_get_ctx)
+#define isl_union_map_get_space (*isl_pointers__.p_isl_union_map_get_space)
+#define isl_union_map_gist_domain (*isl_pointers__.p_isl_union_map_gist_domain)
+#define isl_union_map_gist_range (*isl_pointers__.p_isl_union_map_gist_range)
+#define isl_union_map_intersect_domain (*isl_pointers__.p_isl_union_map_intersect_domain)
+#define isl_union_map_is_empty (*isl_pointers__.p_isl_union_map_is_empty)
+#define isl_union_map_subtract (*isl_pointers__.p_isl_union_map_subtract)
+#define isl_union_map_union (*isl_pointers__.p_isl_union_map_union)
+#define isl_union_set_add_set (*isl_pointers__.p_isl_union_set_add_set)
+#define isl_union_set_compute_schedule (*isl_pointers__.p_isl_union_set_compute_schedule)
+#define isl_union_set_copy (*isl_pointers__.p_isl_union_set_copy)
+#define isl_union_set_empty (*isl_pointers__.p_isl_union_set_empty)
+#define isl_union_set_from_set (*isl_pointers__.p_isl_union_set_from_set)
+#define isl_aff_add_constant_val (*isl_pointers__.p_isl_aff_add_constant_val)
+#define isl_aff_get_coefficient_val (*isl_pointers__.p_isl_aff_get_coefficient_val)
+#define isl_aff_get_ctx (*isl_pointers__.p_isl_aff_get_ctx)
+#define isl_aff_mod_val (*isl_pointers__.p_isl_aff_mod_val)
+#define isl_ast_build_ast_from_schedule (*isl_pointers__.p_isl_ast_build_ast_from_schedule)
+#define isl_ast_build_free (*isl_pointers__.p_isl_ast_build_free)
+#define isl_ast_build_from_context (*isl_pointers__.p_isl_ast_build_from_context)
+#define isl_ast_build_get_ctx (*isl_pointers__.p_isl_ast_build_get_ctx)
+#define isl_ast_build_get_schedule (*isl_pointers__.p_isl_ast_build_get_schedule)
+#define isl_ast_build_get_schedule_space (*isl_pointers__.p_isl_ast_build_get_schedule_space)
+#define isl_ast_build_set_before_each_for (*isl_pointers__.p_isl_ast_build_set_before_each_for)
+#define isl_ast_build_set_options (*isl_pointers__.p_isl_ast_build_set_options)
+#define isl_ast_expr_free (*isl_pointers__.p_isl_ast_expr_free)
+#define isl_ast_expr_from_val (*isl_pointers__.p_isl_ast_expr_from_val)
+#define isl_ast_expr_get_ctx (*isl_pointers__.p_isl_ast_expr_get_ctx)
+#define isl_ast_expr_get_id (*isl_pointers__.p_isl_ast_expr_get_id)
+#define isl_ast_expr_get_op_arg (*isl_pointers__.p_isl_ast_expr_get_op_arg)
+#define isl_ast_expr_get_op_n_arg (*isl_pointers__.p_isl_ast_expr_get_op_n_arg)
+#define isl_ast_expr_get_op_type (*isl_pointers__.p_isl_ast_expr_get_op_type)
+#define isl_ast_expr_get_type (*isl_pointers__.p_isl_ast_expr_get_type)
+#define isl_ast_expr_get_val (*isl_pointers__.p_isl_ast_expr_get_val)
+#define isl_ast_expr_sub (*isl_pointers__.p_isl_ast_expr_sub)
+#define isl_ast_node_block_get_children (*isl_pointers__.p_isl_ast_node_block_get_children)
+#define isl_ast_node_for_get_body (*isl_pointers__.p_isl_ast_node_for_get_body)
+#define isl_ast_node_for_get_cond (*isl_pointers__.p_isl_ast_node_for_get_cond)
+#define isl_ast_node_for_get_inc (*isl_pointers__.p_isl_ast_node_for_get_inc)
+#define isl_ast_node_for_get_init (*isl_pointers__.p_isl_ast_node_for_get_init)
+#define isl_ast_node_for_get_iterator (*isl_pointers__.p_isl_ast_node_for_get_iterator)
+#define isl_ast_node_free (*isl_pointers__.p_isl_ast_node_free)
+#define isl_ast_node_get_annotation (*isl_pointers__.p_isl_ast_node_get_annotation)
+#define isl_ast_node_get_type (*isl_pointers__.p_isl_ast_node_get_type)
+#define isl_ast_node_if_get_cond (*isl_pointers__.p_isl_ast_node_if_get_cond)
+#define isl_ast_node_if_get_else (*isl_pointers__.p_isl_ast_node_if_get_else)
+#define isl_ast_node_if_get_then (*isl_pointers__.p_isl_ast_node_if_get_then)
+#define isl_ast_node_list_free (*isl_pointers__.p_isl_ast_node_list_free)
+#define isl_ast_node_list_get_ast_node (*isl_pointers__.p_isl_ast_node_list_get_ast_node)
+#define isl_ast_node_list_n_ast_node (*isl_pointers__.p_isl_ast_node_list_n_ast_node)
+#define isl_ast_node_user_get_expr (*isl_pointers__.p_isl_ast_node_user_get_expr)
+#define isl_constraint_set_coefficient_val (*isl_pointers__.p_isl_constraint_set_coefficient_val)
+#define isl_constraint_set_constant_val (*isl_pointers__.p_isl_constraint_set_constant_val)
+#define isl_id_get_user (*isl_pointers__.p_isl_id_get_user)
+#define isl_local_space_get_ctx (*isl_pointers__.p_isl_local_space_get_ctx)
+#define isl_map_fix_val (*isl_pointers__.p_isl_map_fix_val)
+#define isl_options_set_ast_build_atomic_upper_bound (*isl_pointers__.p_isl_options_set_ast_build_atomic_upper_bound)
+#define isl_printer_print_ast_node (*isl_pointers__.p_isl_printer_print_ast_node)
+#define isl_printer_print_str (*isl_pointers__.p_isl_printer_print_str)
+#define isl_printer_set_output_format (*isl_pointers__.p_isl_printer_set_output_format)
+#define isl_pw_aff_mod_val (*isl_pointers__.p_isl_pw_aff_mod_val)
+#define isl_schedule_constraints_compute_schedule (*isl_pointers__.p_isl_schedule_constraints_compute_schedule)
+#define isl_schedule_constraints_on_domain (*isl_pointers__.p_isl_schedule_constraints_on_domain)
+#define isl_schedule_constraints_set_coincidence (*isl_pointers__.p_isl_schedule_constraints_set_coincidence)
+#define isl_schedule_constraints_set_proximity (*isl_pointers__.p_isl_schedule_constraints_set_proximity)
+#define isl_schedule_constraints_set_validity (*isl_pointers__.p_isl_schedule_constraints_set_validity)
+#define isl_set_get_dim_id (*isl_pointers__.p_isl_set_get_dim_id)
+#define isl_set_max_val (*isl_pointers__.p_isl_set_max_val)
+#define isl_set_min_val (*isl_pointers__.p_isl_set_min_val)
+#define isl_set_params (*isl_pointers__.p_isl_set_params)
+#define isl_space_align_params (*isl_pointers__.p_isl_space_align_params)
+#define isl_space_map_from_domain_and_range (*isl_pointers__.p_isl_space_map_from_domain_and_range)
+#define isl_space_set_tuple_name (*isl_pointers__.p_isl_space_set_tuple_name)
+#define isl_space_wrap (*isl_pointers__.p_isl_space_wrap)
+#define isl_union_map_from_domain_and_range (*isl_pointers__.p_isl_union_map_from_domain_and_range)
+#define isl_union_map_range (*isl_pointers__.p_isl_union_map_range)
+#define isl_union_set_union (*isl_pointers__.p_isl_union_set_union)
+#define isl_union_set_universe (*isl_pointers__.p_isl_union_set_universe)
+#define isl_val_2exp (*isl_pointers__.p_isl_val_2exp)
+#define isl_val_add_ui (*isl_pointers__.p_isl_val_add_ui)
+#define isl_val_copy (*isl_pointers__.p_isl_val_copy)
+#define isl_val_free (*isl_pointers__.p_isl_val_free)
+#define isl_val_int_from_si (*isl_pointers__.p_isl_val_int_from_si)
+#define isl_val_int_from_ui (*isl_pointers__.p_isl_val_int_from_ui)
+#define isl_val_mul (*isl_pointers__.p_isl_val_mul)
+#define isl_val_neg (*isl_pointers__.p_isl_val_neg)
+#define isl_val_sub (*isl_pointers__.p_isl_val_sub)
+#define isl_printer_print_union_map (*isl_pointers__.p_isl_printer_print_union_map)
+#define isl_pw_aff_get_ctx (*isl_pointers__.p_isl_pw_aff_get_ctx)
+#define isl_val_is_int (*isl_pointers__.p_isl_val_is_int)
+#define isl_ctx_get_max_operations (*isl_pointers__.p_isl_ctx_get_max_operations)
+#define isl_ctx_set_max_operations (*isl_pointers__.p_isl_ctx_set_max_operations)
+#define isl_ctx_last_error (*isl_pointers__.p_isl_ctx_last_error)
+#define isl_ctx_reset_operations (*isl_pointers__.p_isl_ctx_reset_operations)
+#define isl_map_coalesce (*isl_pointers__.p_isl_map_coalesce)
+#define isl_printer_print_schedule (*isl_pointers__.p_isl_printer_print_schedule)
+#define isl_set_set_dim_id (*isl_pointers__.p_isl_set_set_dim_id)
+#define isl_union_map_coalesce (*isl_pointers__.p_isl_union_map_coalesce)
+#define isl_multi_val_set_val (*isl_pointers__.p_isl_multi_val_set_val)
+#define isl_multi_val_zero (*isl_pointers__.p_isl_multi_val_zero)
+#define isl_options_set_schedule_max_coefficient (*isl_pointers__.p_isl_options_set_schedule_max_coefficient)
+#define isl_options_set_tile_scale_tile_loops (*isl_pointers__.p_isl_options_set_tile_scale_tile_loops)
+#define isl_schedule_copy (*isl_pointers__.p_isl_schedule_copy)
+#define isl_schedule_get_map (*isl_pointers__.p_isl_schedule_get_map)
+#define isl_schedule_map_schedule_node_bottom_up (*isl_pointers__.p_isl_schedule_map_schedule_node_bottom_up)
+#define isl_schedule_node_band_get_permutable (*isl_pointers__.p_isl_schedule_node_band_get_permutable)
+#define isl_schedule_node_band_get_space (*isl_pointers__.p_isl_schedule_node_band_get_space)
+#define isl_schedule_node_band_tile (*isl_pointers__.p_isl_schedule_node_band_tile)
+#define isl_schedule_node_child (*isl_pointers__.p_isl_schedule_node_child)
+#define isl_schedule_node_free (*isl_pointers__.p_isl_schedule_node_free)
+#define isl_schedule_node_get_child (*isl_pointers__.p_isl_schedule_node_get_child)
+#define isl_schedule_node_get_ctx (*isl_pointers__.p_isl_schedule_node_get_ctx)
+#define isl_schedule_node_get_type (*isl_pointers__.p_isl_schedule_node_get_type)
+#define isl_schedule_node_n_children (*isl_pointers__.p_isl_schedule_node_n_children)
+#define isl_union_map_is_equal (*isl_pointers__.p_isl_union_map_is_equal)
+#define isl_union_access_info_compute_flow (*isl_pointers__.p_isl_union_access_info_compute_flow)
+#define isl_union_access_info_from_sink (*isl_pointers__.p_isl_union_access_info_from_sink)
+#define isl_union_access_info_set_may_source (*isl_pointers__.p_isl_union_access_info_set_may_source)
+#define isl_union_access_info_set_must_source (*isl_pointers__.p_isl_union_access_info_set_must_source)
+#define isl_union_access_info_set_schedule (*isl_pointers__.p_isl_union_access_info_set_schedule)
+#define isl_union_flow_free (*isl_pointers__.p_isl_union_flow_free)
+#define isl_union_flow_get_may_dependence (*isl_pointers__.p_isl_union_flow_get_may_dependence)
+#define isl_union_flow_get_must_dependence (*isl_pointers__.p_isl_union_flow_get_must_dependence)
+#define isl_aff_var_on_domain (*isl_pointers__.p_isl_aff_var_on_domain)
+#define isl_multi_aff_from_aff (*isl_pointers__.p_isl_multi_aff_from_aff)
+#define isl_schedule_get_ctx (*isl_pointers__.p_isl_schedule_get_ctx)
+#define isl_multi_aff_set_tuple_id (*isl_pointers__.p_isl_multi_aff_set_tuple_id)
+#define isl_multi_aff_dim (*isl_pointers__.p_isl_multi_aff_dim)
+#define isl_schedule_get_domain (*isl_pointers__.p_isl_schedule_get_domain)
+#define isl_union_set_is_empty (*isl_pointers__.p_isl_union_set_is_empty)
+#define isl_union_set_get_space (*isl_pointers__.p_isl_union_set_get_space)
+#define isl_union_pw_multi_aff_empty (*isl_pointers__.p_isl_union_pw_multi_aff_empty)
+#define isl_union_set_foreach_set (*isl_pointers__.p_isl_union_set_foreach_set)
+#define isl_union_set_free (*isl_pointers__.p_isl_union_set_free)
+#define isl_multi_union_pw_aff_from_union_pw_multi_aff (*isl_pointers__.p_isl_multi_union_pw_aff_from_union_pw_multi_aff)
+#define isl_multi_union_pw_aff_apply_multi_aff (*isl_pointers__.p_isl_multi_union_pw_aff_apply_multi_aff)
+#define isl_schedule_insert_partial_schedule (*isl_pointers__.p_isl_schedule_insert_partial_schedule)
+#define isl_union_pw_multi_aff_free (*isl_pointers__.p_isl_union_pw_multi_aff_free)
+#define isl_pw_multi_aff_project_out_map (*isl_pointers__.p_isl_pw_multi_aff_project_out_map)
+#define isl_union_pw_multi_aff_add_pw_multi_aff (*isl_pointers__.p_isl_union_pw_multi_aff_add_pw_multi_aff)
+#define isl_schedule_from_domain (*isl_pointers__.p_isl_schedule_from_domain)
+#define isl_schedule_sequence (*isl_pointers__.p_isl_schedule_sequence)
+#define isl_ast_build_node_from_schedule (*isl_pointers__.p_isl_ast_build_node_from_schedule)
+#define isl_ast_node_mark_get_node (*isl_pointers__.p_isl_ast_node_mark_get_node)
+#define isl_schedule_node_band_member_get_ast_loop_type (*isl_pointers__.p_isl_schedule_node_band_member_get_ast_loop_type)
+#define isl_schedule_node_band_member_set_ast_loop_type (*isl_pointers__.p_isl_schedule_node_band_member_set_ast_loop_type)
+#define isl_val_n_abs_num_chunks (*isl_pointers__.p_isl_val_n_abs_num_chunks)
+#define isl_val_get_abs_num_chunks (*isl_pointers__.p_isl_val_get_abs_num_chunks)
+#define isl_val_int_from_chunks (*isl_pointers__.p_isl_val_int_from_chunks)
+#define isl_val_is_neg (*isl_pointers__.p_isl_val_is_neg)
+#define isl_version (*isl_pointers__.p_isl_version)
+#define isl_options_get_on_error (*isl_pointers__.p_isl_options_get_on_error)
+#define isl_ctx_reset_error (*isl_pointers__.p_isl_ctx_reset_error)
typedef struct poly_dr *poly_dr_p;
@@ -461,5 +1045,6 @@ extern void build_scops (vec<scop_p> *);
extern void dot_all_sese (FILE *, vec<sese_l> &);
extern void dot_sese (sese_l &);
extern void dot_cfg ();
+extern const char *get_isl_version (bool);
#endif
--- gcc/graphite.c.jj 2015-11-04 14:15:32.000000000 +0100
+++ gcc/graphite.c 2015-11-04 14:56:02.645536409 +0100
@@ -60,6 +60,35 @@ along with GCC; see the file COPYING3.
#include "tree-into-ssa.h"
#include "graphite.h"
+__typeof (isl_pointers__) isl_pointers__;
+
+static bool
+init_isl_pointers (void)
+{
+ void *h;
+
+ if (isl_pointers__.inited)
+ return isl_pointers__.h != NULL;
+ h = dlopen ("libisl.so.15", RTLD_LAZY);
+ isl_pointers__.h = h;
+ if (h == NULL)
+ return false;
+#define DYNSYM(x) \
+ do \
+ { \
+ union { __typeof (isl_pointers__.p_##x) p; void *q; } u; \
+ u.q = dlsym (h, #x); \
+ if (u.q == NULL) \
+ return false; \
+ isl_pointers__.p_##x = u.p; \
+ } \
+ while (0)
+ DYNSYMS
+#undef DYNSYM
+ isl_pointers__.inited = true;
+ return true;
+}
+
/* Print global statistics to FILE. */
static void
@@ -365,6 +394,15 @@ graphite_transform_loops (void)
if (parallelized_function_p (cfun->decl))
return;
+ if (number_of_loops (cfun) <= 1)
+ return;
+
+ if (!init_isl_pointers ())
+ {
+ sorry ("Graphite loop optimizations cannot be used");
+ return;
+ }
+
calculate_dominance_info (CDI_DOMINATORS);
/* We rely on post-dominators during merging of SESE regions so those
@@ -455,6 +493,14 @@ graphite_transform_loops (void)
}
}
+const char *
+get_isl_version (bool force)
+{
+ if (force)
+ init_isl_pointers ();
+ return (isl_pointers__.inited && isl_version) ? isl_version () : "none";
+}
+
#else /* If isl is not available: #ifndef HAVE_isl. */
static void
--- gcc/toplev.c.jj 2017-02-19 13:02:31.000000000 +0100
+++ gcc/toplev.c 2017-02-19 16:50:25.536301350 +0100
@@ -94,6 +94,7 @@ along with GCC; see the file COPYING3.
#ifdef HAVE_isl
#include <isl/version.h>
+extern const char *get_isl_version (bool);
#endif
static void general_init (const char *, bool);
@@ -683,7 +684,7 @@ print_version (FILE *file, const char *i
#ifndef HAVE_isl
"none"
#else
- isl_version ()
+ get_isl_version (*indent == 0)
#endif
);
if (strcmp (GCC_GMP_STRINGIFY_VERSION, gmp_version))

View File

@ -0,0 +1,17 @@
2008-06-09 Jakub Jelinek <jakub@redhat.com>
* omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs.
--- libgomp/omp.h.in.jj 2008-06-09 13:34:05.000000000 +0200
+++ libgomp/omp.h.in 2008-06-09 13:34:48.000000000 +0200
@@ -42,8 +42,8 @@ typedef struct
typedef struct
{
- unsigned char _x[@OMP_NEST_LOCK_SIZE@]
- __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@)));
+ unsigned char _x[8 + sizeof (void *)]
+ __attribute__((__aligned__(sizeof (void *))));
} omp_nest_lock_t;
#endif

View File

@ -0,0 +1,24 @@
--- libstdc++-v3/doc/html/index.html.jj 2011-01-03 12:53:21.282829010 +0100
+++ libstdc++-v3/doc/html/index.html 2011-01-04 18:06:28.999851145 +0100
@@ -5,6 +5,8 @@
<a class="link" href="https://www.fsf.org" target="_top">FSF
</a>
</p><p>
+ Release 10.0.1
+ </p><p>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation
License, Version 1.2 or any later version published by the
--- libstdc++-v3/doc/html/api.html.jj 2011-01-03 12:53:21.000000000 +0100
+++ libstdc++-v3/doc/html/api.html 2011-01-04 18:12:01.672757784 +0100
@@ -20,7 +20,9 @@
member functions for the library classes, finding out what is in a
particular include file, looking at inheritance diagrams, etc.
</p><p>
- The API documentation, rendered into HTML, can be viewed online
+ The API documentation, rendered into HTML, can be viewed locally
+ <a class="link" href="api/index.html" target="_top">for the 10.0.1 release</a>,
+ online
<a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a>
and
<a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html" target="_top">

View File

@ -0,0 +1,27 @@
libtool sucks.
--- ltmain.sh.jj 2007-12-07 14:53:21.000000000 +0100
+++ ltmain.sh 2008-09-05 21:51:48.000000000 +0200
@@ -5394,6 +5394,7 @@ EOF
rpath="$finalize_rpath"
test "$mode" != relink && rpath="$compile_rpath$rpath"
for libdir in $rpath; do
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
if test -n "$hardcode_libdir_flag_spec"; then
if test -n "$hardcode_libdir_separator"; then
if test -z "$hardcode_libdirs"; then
@@ -6071,6 +6072,7 @@ EOF
rpath=
hardcode_libdirs=
for libdir in $compile_rpath $finalize_rpath; do
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
if test -n "$hardcode_libdir_flag_spec"; then
if test -n "$hardcode_libdir_separator"; then
if test -z "$hardcode_libdirs"; then
@@ -6120,6 +6122,7 @@ EOF
rpath=
hardcode_libdirs=
for libdir in $finalize_rpath; do
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
if test -n "$hardcode_libdir_flag_spec"; then
if test -n "$hardcode_libdir_separator"; then
if test -z "$hardcode_libdirs"; then

37
gcc10-no-add-needed.patch Normal file
View File

@ -0,0 +1,37 @@
2010-02-08 Roland McGrath <roland@redhat.com>
* config/gnu-user.h (LINK_EH_SPEC): Pass --no-add-needed to the linker.
* config/alpha/elf.h (LINK_EH_SPEC): Likewise.
* config/ia64/linux.h (LINK_EH_SPEC): Likewise.
--- gcc/config/alpha/elf.h.jj 2011-01-03 12:52:31.118056764 +0100
+++ gcc/config/alpha/elf.h 2011-01-04 18:14:10.931874160 +0100
@@ -168,5 +168,5 @@ extern int alpha_this_gpdisp_sequence_nu
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)
-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
+#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
#endif
--- gcc/config/ia64/linux.h.jj 2011-01-03 13:02:11.462994522 +0100
+++ gcc/config/ia64/linux.h 2011-01-04 18:14:10.931874160 +0100
@@ -76,7 +76,7 @@ do { \
Signalize that because we have fde-glibc, we don't need all C shared libs
linked against -lgcc_s. */
#undef LINK_EH_SPEC
-#define LINK_EH_SPEC ""
+#define LINK_EH_SPEC "--no-add-needed "
#undef TARGET_INIT_LIBFUNCS
#define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs
--- gcc/config/gnu-user.h.jj 2011-01-03 12:53:03.739057299 +0100
+++ gcc/config/gnu-user.h 2011-01-04 18:14:10.932814884 +0100
@@ -106,7 +106,7 @@ see the files COPYING3 and COPYING.RUNTI
#define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
#if defined(HAVE_LD_EH_FRAME_HDR)
-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
+#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
#endif
#define GNU_USER_TARGET_LINK_GCC_C_SEQUENCE_SPEC \

30
gcc10-rh1574936.patch Normal file
View File

@ -0,0 +1,30 @@
crt files and statically linked libgcc objects cause false positives
in annobin coverage, so we add the assembler flag to generate notes
for them.
The patch also adds notes to libgcc_s.so, but this is harmless because
these notes only confer that there is no other annobin markup.
2018-07-25 Florian Weimer <fweimer@redhat.com>
* Makefile.in (LIBGCC2_CFLAGS, CRTSTUFF_CFLAGS): Add
-Wa,--generate-missing-build-notes=yes.
--- libgcc/Makefile.in 2018-01-13 13:05:41.000000000 +0100
+++ libgcc/Makefile.in 2018-07-25 13:15:02.036226940 +0200
@@ -246,6 +246,7 @@ LIBGCC2_DEBUG_CFLAGS = -g
LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \
$(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \
-fbuilding-libgcc -fno-stack-protector \
+ -Wa,--generate-missing-build-notes=yes \
$(INHIBIT_LIBC_CFLAGS)
# Additional options to use when compiling libgcc2.a.
@@ -301,6 +302,7 @@ CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(IN
$(NO_PIE_CFLAGS) -finhibit-size-directive -fno-inline -fno-exceptions \
-fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
-fbuilding-libgcc -fno-stack-protector $(FORCE_EXPLICIT_EH_REGISTRY) \
+ -Wa,--generate-missing-build-notes=yes \
$(INHIBIT_LIBC_CFLAGS) $(USE_TM_CLONE_REGISTRY)
# Extra flags to use when compiling crt{begin,end}.o.

View File

@ -0,0 +1,40 @@
--- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500
+++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
@@ -2790,7 +2790,7 @@ sparc-*-rtems*)
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
;;
-sparc-*-linux*)
+sparc-*-linux* | sparcv9-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
extra_options="${extra_options} sparc/long-double-switch.opt"
case ${target} in
@@ -2844,7 +2844,7 @@ sparc64-*-rtems*)
extra_options="${extra_options}"
tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
;;
-sparc64-*-linux*)
+sparc64*-*-linux*)
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h"
extra_options="${extra_options} sparc/long-double-switch.opt"
tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
--- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500
+++ libgcc/config.host 2008-04-24 15:46:49.000000000 -0500
@@ -1002,7 +1002,7 @@ sparc-*-elf*)
tmake_file="${tmake_file} t-fdpbit t-crtfm"
extra_parts="$extra_parts crti.o crtn.o crtfastmath.o"
;;
-sparc-*-linux*) # SPARC's running GNU/Linux, libc6
+sparc-*-linux* | sparcv9-*-linux*) # SPARC's running GNU/Linux, libc6
tmake_file="${tmake_file} t-crtfm"
if test "${host_address}" = 64; then
tmake_file="$tmake_file sparc/t-linux64"
@@ -1050,7 +1050,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
tmake_file="$tmake_file t-crtfm"
extra_parts="$extra_parts crtfastmath.o"
;;
-sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
+sparc64*-*-linux*) # 64-bit SPARC's running GNU/Linux
extra_parts="$extra_parts crtfastmath.o"
tmake_file="${tmake_file} t-crtfm sparc/t-linux"
if test "${host_address}" = 64; then

View File

@ -1,19 +0,0 @@
--- gcc/testsuite/ada/acats/run_all.sh 26 Apr 2004 21:15:54 -0000 1.18
+++ gcc/testsuite/ada/acats/run_all.sh 17 Feb 2005 14:24:49 -0000
@@ -11,9 +11,16 @@
gccflags="-O2"
gnatflags="-gnatws"
+timeout=120
target_run () {
+ sh -c "(sleep $timeout; kill \$\$) &
+x=\$!
$*
+s=\$?
+kill \$x
+exit \$s
+"
}
# End of customization section.

View File

@ -1,67 +0,0 @@
2004-10-04 Jakub Jelinek <jakub@redhat.com>
* gnat_ugn.texi: Add : and . to direntry.
* gnat-style.texi: Change dircategory to GNU Ada tools.
2005-02-08 Jakub Jelinek <jakub@redhat.com>
* Makefile.in (gnatlib-shared-default): Disallow dlopening of
libgnat.so.
--- gcc/ada/gnat-style.texi (.../gcc-4_0-branch) (revision 107266)
+++ gcc/ada/gnat-style.texi (.../redhat/gcc-4_0-branch) (revision 107414)
@@ -28,7 +28,7 @@
@setchapternewpage odd
-@dircategory Programming
+@dircategory GNU Ada tools
@direntry
* gnat-style: (gnat-style). GNAT Coding Style
@end direntry
--- gcc/ada/Makefile.in (.../gcc-4_0-branch) (revision 107266)
+++ gcc/ada/Makefile.in (.../redhat/gcc-4_0-branch) (revision 107414)
@@ -1316,7 +1316,7 @@
LIBRARY_VERSION := $(LIB_VERSION)
endif
-ifeq ($(strip $(filter-out powerpc% linux%,$(arch) $(osys))),)
+ifeq ($(strip $(filter-out powerpc% ppc% linux%,$(arch) $(osys))),)
LIBGNAT_TARGET_PAIRS = \
a-intnam.ads<a-intnam-linux.ads \
s-inmaop.adb<s-inmaop-posix.adb \
@@ -1862,7 +1862,7 @@
THREAD_KIND="$(THREAD_KIND)" \
gnatlib
$(RM) rts/libgna*$(soext)
- cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
+ cd rts; ../../xgcc -B../../ -shared -Wl,-z,nodlopen $(TARGET_LIBGCC2_CFLAGS) \
-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
--- gcc/ada/gnat_ugn.texi (.../gcc-4_0-branch) (revision 107266)
+++ gcc/ada/gnat_ugn.texi (.../redhat/gcc-4_0-branch) (revision 107414)
@@ -101,7 +101,7 @@
@settitle @value{EDITION} User's Guide @value{PLATFORM}
@dircategory GNU Ada tools
@direntry
-* @value{EDITION} User's Guide (@value{FILE}) @value{PLATFORM}
+* @value{EDITION} User's Guide: (@value{FILE}). User's Guide for GNU Ada Tools.
@end direntry
@include gcc-common.texi
--- gcc/ada/link.c (.../gcc-4_0-branch) (revision 107266)
+++ gcc/ada/link.c (.../redhat/gcc-4_0-branch) (revision 107414)
@@ -164,9 +164,9 @@
#elif defined (linux)
const char *__gnat_object_file_option = "";
-const char *__gnat_run_path_option = "-Wl,-rpath,";
-char __gnat_shared_libgnat_default = STATIC;
-int __gnat_link_max = 8192;
+const char *__gnat_run_path_option = "";
+char __gnat_shared_libgnat_default = SHARED;
+int __gnat_link_max = 131072;
unsigned char __gnat_objlist_file_supported = 1;
unsigned char __gnat_using_gnu_linker = 1;
const char *__gnat_object_library_extension = ".a";

File diff suppressed because it is too large Load Diff

View File

@ -1,22 +0,0 @@
2006-05-12 Jakub Jelinek <jakub@redhat.com>
* crtstuff.c (__dso_handle): Make __dso_handle const.
--- gcc/crtstuff.c.jj 2005-11-16 10:02:51.000000000 +0100
+++ gcc/crtstuff.c 2006-05-12 18:28:18.000000000 +0200
@@ -226,12 +226,12 @@ STATIC void *__JCR_LIST__[]
dynamic linker takes care of this. */
#ifdef HAVE_GAS_HIDDEN
-extern void *__dso_handle __attribute__ ((__visibility__ ("hidden")));
+extern void *const __dso_handle __attribute__ ((__visibility__ ("hidden")));
#endif
#ifdef CRTSTUFFS_O
-void *__dso_handle = &__dso_handle;
+void *const __dso_handle = (void *) &__dso_handle;
#else
-void *__dso_handle = 0;
+void *const __dso_handle = 0;
#endif
/* The __cxa_finalize function may not be available so we use only a

View File

@ -1,89 +0,0 @@
2007-05-03 Ulrich Drepper <drepper@redhat.com>
Jakub Jelinek <jakub@redhat.com>
* crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
(__do_global_dtors_aux): Use more paranoid loop to run
destructors if HIDDEN_DTOR_LIST_END.
(__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
--- gcc/crtstuff.c.jj 2007-01-24 22:24:21.000000000 +0100
+++ gcc/crtstuff.c 2007-05-03 10:40:29.000000000 +0200
@@ -106,6 +107,11 @@ call_ ## FUNC (void) \
# define EH_FRAME_SECTION_CONST
#endif
+#if !defined(DTOR_LIST_END) && defined(OBJECT_FORMAT_ELF) \
+ && defined(HAVE_GAS_HIDDEN) && !defined(FINI_ARRAY_SECTION_ASM_OP)
+# define HIDDEN_DTOR_LIST_END
+#endif
+
/* We do not want to add the weak attribute to the declarations of these
routines in unwind-dw2-fde.h because that will cause the definition of
these symbols to be weak as well.
@@ -265,10 +271,6 @@ extern void __cxa_finalize (void *) TARG
static void __attribute__((used))
__do_global_dtors_aux (void)
{
-#ifndef FINI_ARRAY_SECTION_ASM_OP
- static func_ptr *p = __DTOR_LIST__ + 1;
- func_ptr f;
-#endif /* !defined(FINI_ARRAY_SECTION_ASM_OP) */
static _Bool completed;
if (__builtin_expect (completed, 0))
@@ -282,12 +284,32 @@ __do_global_dtors_aux (void)
#ifdef FINI_ARRAY_SECTION_ASM_OP
/* If we are using .fini_array then destructors will be run via that
mechanism. */
+#elif defined(HIDDEN_DTOR_LIST_END)
+ {
+ /* Safer version that makes sure only .dtors function pointers are
+ called even if the static variable is maliciously changed. */
+ extern func_ptr __DTOR_END__[] __attribute__((visibility ("hidden")));
+ static size_t dtor_idx;
+ const size_t max_idx = __DTOR_END__ - __DTOR_LIST__ - 1;
+ func_ptr f;
+
+ while (dtor_idx < max_idx)
+ {
+ f = __DTOR_LIST__[++dtor_idx];
+ f ();
+ }
+ }
#else /* !defined (FINI_ARRAY_SECTION_ASM_OP) */
- while ((f = *p))
- {
- p++;
- f ();
- }
+ {
+ static func_ptr *p = __DTOR_LIST__ + 1;
+ func_ptr f;
+
+ while ((f = *p))
+ {
+ p++;
+ f ();
+ }
+ }
#endif /* !defined(FINI_ARRAY_SECTION_ASM_OP) */
#ifdef USE_EH_FRAME_REGISTRY
@@ -471,6 +493,17 @@ STATIC func_ptr __CTOR_END__[1]
#ifdef DTOR_LIST_END
DTOR_LIST_END;
+#elif defined(HIDDEN_DTOR_LIST_END)
+#ifdef DTORS_SECTION_ASM_OP
+asm (DTORS_SECTION_ASM_OP);
+#endif
+func_ptr __DTOR_END__[1]
+ __attribute__ ((unused,
+#ifndef DTORS_SECTION_ASM_OP
+ section(".dtors"),
+#endif
+ aligned(sizeof(func_ptr)), visibility ("hidden")))
+ = { (func_ptr) 0 };
#elif defined(DTORS_SECTION_ASM_OP)
asm (DTORS_SECTION_ASM_OP);
STATIC func_ptr __DTOR_END__[1]

View File

@ -1,50 +0,0 @@
2004-10-19 Jakub Jelinek <jakub@redhat.com>
* c-cppbuiltin.c (define__GNUC__): Also define __GNUC_RH_RELEASE__.
--- gcc/c-cppbuiltin.c.jj 2004-10-07 21:27:38.000000000 +0200
+++ gcc/c-cppbuiltin.c 2004-10-19 11:41:50.000000000 +0200
@@ -257,13 +257,13 @@ define__GNUC__ (void)
{
/* The format of the version string, enforced below, is
([^0-9]*-)?[0-9]+[.][0-9]+([.][0-9]+)?([- ].*)? */
- const char *q, *v = version_string;
+ const char *q, *v = version_string, *vstart, *vend;
while (*v && !ISDIGIT (*v))
v++;
gcc_assert (*v && (v <= version_string || v[-1] == '-'));
- q = v;
+ vstart = q = v;
while (ISDIGIT (*v))
v++;
builtin_define_with_value_n ("__GNUC__", q, v - q);
@@ -289,6 +289,27 @@ define__GNUC__ (void)
builtin_define_with_value_n ("__GNUC_PATCHLEVEL__", "0", 1);
gcc_assert (!*v || *v == ' ' || *v == '-');
+
+ vend = v;
+ v = strchr (v, '(');
+ if (v != NULL && strncmp (v + 1, "Red Hat ", 8) == 0)
+ {
+ v += 9;
+ if (strncmp (v, "Linux ", 6) == 0)
+ v += 6;
+
+ gcc_assert (strncmp (v, vstart, vend - vstart) == 0);
+ gcc_assert (v[vend - vstart] == '-');
+
+ v += vend - vstart + 1;
+ q = v;
+ gcc_assert (ISDIGIT (*v));
+ while (ISDIGIT (*v))
+ v++;
+ builtin_define_with_value_n ("__GNUC_RH_RELEASE__", q, v - q);
+
+ gcc_assert (!*v || *v == ')' || *v == '.');
+ }
}
/* Define macros used by <stdint.h>. Currently only defines limits

View File

@ -1,136 +0,0 @@
2006-07-11 Jakub Jelinek <jakub@redhat.com>
* config/i386/linux.h (LINK_SPEC): Add --hash-style=gnu.
* config/i386/linux64.h (LINK_SPEC): Likewise.
* config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise.
* config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32,
LINK_OS_LINUX_SPEC64): Likewise.
* config/s390/linux.h (LINK_SPEC): Likewise.
* config/ia64/linux.h (LINK_SPEC): Likewise.
* config/sparc/linux.h (LINK_SPEC): Likewise.
* config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC,
LINK_ARCH64_SPEC): Likewise.
* config/alpha/linux-elf.h (LINK_SPEC): Likewise.
--- gcc/config/rs6000/sysv4.h.jj 2006-07-11 10:54:00.000000000 +0200
+++ gcc/config/rs6000/sysv4.h 2006-07-11 12:51:39.000000000 +0200
@@ -1039,7 +1039,7 @@ extern int fixuplabelno;
#define LINK_START_LINUX_SPEC ""
-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
+#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
--- gcc/config/rs6000/linux64.h.jj 2006-07-11 10:54:00.000000000 +0200
+++ gcc/config/rs6000/linux64.h 2006-07-11 12:52:14.000000000 +0200
@@ -337,11 +337,11 @@ extern int dot_symbols;
#undef LINK_OS_DEFAULT_SPEC
#define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
-#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \
+#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
-#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \
+#define LINK_OS_LINUX_SPEC64 "-m elf64ppc --hash-style=gnu %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib64/ld64.so.1}}}"
--- gcc/config/alpha/linux-elf.h.jj 2006-07-11 10:54:01.000000000 +0200
+++ gcc/config/alpha/linux-elf.h 2006-07-11 12:53:48.000000000 +0200
@@ -29,7 +29,7 @@ Boston, MA 02110-1301, USA. */
#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \
+#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax} \
%{O*:-O3} %{!O*:-O1} \
%{shared:-shared} \
%{!shared: \
--- gcc/config/s390/linux.h.jj 2006-07-11 10:54:02.000000000 +0200
+++ gcc/config/s390/linux.h 2006-07-11 12:52:39.000000000 +0200
@@ -79,7 +79,7 @@ Software Foundation, 51 Franklin Street,
#undef LINK_SPEC
#define LINK_SPEC \
- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
+ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \
%{shared:-shared} \
%{!shared: \
%{static:-static} \
--- gcc/config/sparc/linux.h.jj 2006-07-11 10:54:03.000000000 +0200
+++ gcc/config/sparc/linux.h 2006-07-11 12:54:16.000000000 +0200
@@ -127,7 +127,7 @@ Boston, MA 02110-1301, USA. */
/* If ELF is the default format, we should not use /lib/elf. */
#undef LINK_SPEC
-#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
+#define LINK_SPEC "-m elf32_sparc --hash-style=gnu -Y P,/usr/lib %{shared:-shared} \
%{!mno-relax:%{!r:-relax}} \
%{!shared: \
%{!ibcs: \
--- gcc/config/sparc/linux64.h.jj 2006-07-11 10:54:03.000000000 +0200
+++ gcc/config/sparc/linux64.h 2006-07-11 12:55:10.000000000 +0200
@@ -157,7 +157,7 @@ Boston, MA 02110-1301, USA. */
{ "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \
{ "link_arch", LINK_ARCH_SPEC },
-#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
+#define LINK_ARCH32_SPEC "-m elf32_sparc --hash-style=gnu -Y P,/usr/lib %{shared:-shared} \
%{!shared: \
%{!ibcs: \
%{!static: \
@@ -166,7 +166,7 @@ Boston, MA 02110-1301, USA. */
%{static:-static}}} \
"
-#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \
+#define LINK_ARCH64_SPEC "-m elf64_sparc --hash-style=gnu -Y P,/usr/lib64 %{shared:-shared} \
%{!shared: \
%{!ibcs: \
%{!static: \
@@ -247,7 +247,7 @@ Boston, MA 02110-1301, USA. */
#else /* !SPARC_BI_ARCH */
#undef LINK_SPEC
-#define LINK_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \
+#define LINK_SPEC "-m elf64_sparc --hash-style=gnu -Y P,/usr/lib64 %{shared:-shared} \
%{!shared: \
%{!ibcs: \
%{!static: \
--- gcc/config/i386/linux.h.jj 2006-07-11 10:54:05.000000000 +0200
+++ gcc/config/i386/linux.h 2006-07-11 12:44:45.000000000 +0200
@@ -113,7 +113,7 @@ Boston, MA 02110-1301, USA. */
{ "dynamic_linker", DYNAMIC_LINKER }
#undef LINK_SPEC
-#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
+#define LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \
%{!shared: \
%{!ibcs: \
%{!static: \
--- gcc/config/i386/linux64.h.jj 2006-07-11 10:54:04.000000000 +0200
+++ gcc/config/i386/linux64.h 2006-07-11 12:45:02.000000000 +0200
@@ -55,7 +55,7 @@ Boston, MA 02110-1301, USA. */
done. */
#undef LINK_SPEC
-#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
+#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} --hash-style=gnu \
%{shared:-shared} \
%{!shared: \
%{!static: \
--- gcc/config/ia64/linux.h.jj 2006-07-11 10:54:06.000000000 +0200
+++ gcc/config/ia64/linux.h 2006-07-11 12:48:19.000000000 +0200
@@ -40,7 +40,7 @@ do { \
linux.h file. */
#undef LINK_SPEC
-#define LINK_SPEC "\
+#define LINK_SPEC "--hash-style=gnu \
%{shared:-shared} \
%{!shared: \
%{!static: \

View File

@ -1,538 +0,0 @@
2004-11-27 Jakub Jelinek <jakub@redhat.com>
* config.gcc (ia64*-*-linux*): If native and libelf is installed,
use ia64/t-glibc-no-libunwind instead of the other t-*unwind*
fragments.
* config/ia64/t-glibc-no-libunwind: New file.
* config/ia64/change-symver.c: New file.
* config/ia64/unwind-ia64.c: If USE_SYMVER_GLOBAL and SHARED,
define _Unwind_* to __symverglobal_Unwind_*.
(alias): Undefine.
(symverglobal): Define. Use it on _Unwind_*.
* config/ia64/mkmap-symver-multi.awk: New file.
* config/ia64/libgcc-ia64-no-libunwind.ver: New file.
--- gcc/config.gcc.jj 2004-10-04 08:55:44.000000000 -0400
+++ gcc/config.gcc 2004-11-13 05:23:50.000000000 -0500
@@ -1185,9 +1185,16 @@ ia64*-*-freebsd*)
;;
ia64*-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h ia64/sysv4.h ia64/linux.h"
- tmake_file="${tmake_file} ia64/t-ia64 t-libunwind ia64/t-glibc"
- if test x$with_system_libunwind != xyes ; then
- tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
+ tmake_file="${tmake_file} ia64/t-ia64"
+ if test x${target} = x${host} && test x${target} = x${build} \
+ && grep gelf_getverdef /usr/include/gelf.h > /dev/null 2>&1 \
+ && test -f /usr/lib/libelf.so; then
+ tmake_file="${tmake_file} ia64/t-glibc-no-libunwind"
+ else
+ tmake_file="${tmake_file} t-libunwind ia64/t-glibc"
+ if test x$with_system_libunwind != xyes ; then
+ tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
+ fi
fi
target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
--- gcc/config/ia64/t-glibc-no-libunwind.jj 2004-02-18 10:27:36.000000000 -0500
+++ gcc/config/ia64/t-glibc-no-libunwind 2004-11-15 09:56:33.000000000 -0500
@@ -0,0 +1,30 @@
+# Don't use system libunwind library on IA-64 GLIBC based system,
+# but make _Unwind_* symbols unversioned, so that created programs
+# are usable even when libgcc_s uses libunwind.
+LIB2ADDEH += $(srcdir)/config/ia64/fde-glibc.c
+SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-ia64-no-libunwind.ver
+SHLIB_MKMAP = $(srcdir)/config/ia64/mkmap-symver-multi.awk
+
+SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
+ -Wl,--soname=$(SHLIB_SONAME) \
+ -Wl,--version-script=$(SHLIB_MAP) \
+ -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ $(SHLIB_OBJS) -lc && \
+ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
+ if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
+ mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
+ $(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
+ else true; fi && \
+ gcc -O2 -o $(SHLIB_DIR)/$(SHLIB_SONAME).tweak \
+ $(srcdir)/config/ia64/change-symver.c -lelf && \
+ $(SHLIB_DIR)/$(SHLIB_SONAME).tweak $(SHLIB_DIR)/$(SHLIB_SONAME).tmp \
+ GCC_3.4.2 _GLOBAL_ \
+ _Unwind_GetGR _Unwind_RaiseException _Unwind_GetRegionStart _Unwind_SetIP \
+ _Unwind_GetIP _Unwind_GetLanguageSpecificData _Unwind_Resume \
+ _Unwind_DeleteException _Unwind_SetGR _Unwind_ForcedUnwind \
+ _Unwind_Backtrace _Unwind_FindEnclosingFunction _Unwind_GetCFA \
+ _Unwind_Resume_or_Rethrow _Unwind_GetBSP && \
+ rm -f $(SHLIB_DIR)/$(SHLIB_SONAME).tweak && \
+ mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
+ $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
+
+TARGET_LIBGCC2_CFLAGS += -DUSE_SYMVER_GLOBAL
--- gcc/config/ia64/change-symver.c.jj 2004-02-18 10:27:36.000000000 -0500
+++ gcc/config/ia64/change-symver.c 2004-11-13 05:23:50.000000000 -0500
@@ -0,0 +1,211 @@
+#define _GNU_SOURCE 1
+#define _FILE_OFFSET_BITS 64
+#include <endian.h>
+#include <errno.h>
+#include <error.h>
+#include <fcntl.h>
+#include <fnmatch.h>
+#include <gelf.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+int
+compute_veridx (const char *name, Elf *elf, Elf_Data *verd, GElf_Shdr *verd_shdr)
+{
+ if (strcmp (name, "_GLOBAL_") == 0)
+ return 1;
+
+ int cnt;
+ size_t offset = 0;
+ for (cnt = verd_shdr->sh_info; --cnt >= 0; )
+ {
+ GElf_Verdef defmem;
+ GElf_Verdef *def;
+ GElf_Verdaux auxmem;
+ GElf_Verdaux *aux;
+ unsigned int auxoffset;
+
+ /* Get the data at the next offset. */
+ def = gelf_getverdef (verd, offset, &defmem);
+ if (def == NULL)
+ break;
+
+ auxoffset = offset + def->vd_aux;
+ aux = gelf_getverdaux (verd, auxoffset, &auxmem);
+ if (aux == NULL)
+ break;
+
+ if (strcmp (name, elf_strptr (elf, verd_shdr->sh_link,
+ aux->vda_name)) == 0)
+ return def->vd_ndx;
+
+ /* Find the next offset. */
+ offset += def->vd_next;
+ }
+
+ return -1;
+}
+
+int
+main (int argc, char **argv)
+{
+ if (argc < 4)
+ error (1, 0, "Usage: change_symver library from_symver to_symver symbol...\nExample: change_symver libfoo.so FOO_1.0 *global* bar baz");
+
+ const char *fname = argv[1];
+
+ /* Open the file. */
+ int fd;
+ fd = open (fname, O_RDWR);
+ if (fd == -1)
+ error (1, errno, fname);
+
+ elf_version (EV_CURRENT);
+
+ /* Now get the ELF descriptor. */
+ Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
+ if (elf == NULL || elf_kind (elf) != ELF_K_ELF)
+ error (1, 0, "Couldn't open %s: %s", fname, elf_errmsg (-1));
+
+ size_t shstrndx;
+ /* Get the section header string table index. */
+ if (elf_getshstrndx (elf, &shstrndx) < 0)
+ error (1, 0, "cannot get shstrndx from %s", fname);
+
+ GElf_Ehdr ehdr_mem;
+ GElf_Ehdr *ehdr;
+
+ /* We need the ELF header in a few places. */
+ ehdr = gelf_getehdr (elf, &ehdr_mem);
+ if (ehdr == NULL)
+ error (1, 0, "couldn't get ELF headers %s: %s", fname, elf_errmsg (-1));
+
+ Elf_Scn *scn = NULL;
+ GElf_Shdr shdr_mem, verd_shdr, ver_shdr, dynsym_shdr;
+ Elf_Data *ver = NULL, *verd = NULL, *dynsym = NULL;
+
+ while ((scn = elf_nextscn (elf, scn)) != NULL)
+ {
+ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
+
+ if (shdr == NULL)
+ error (1, 0, "couldn't get shdr from %s", fname);
+
+ if ((shdr->sh_flags & SHF_ALLOC) != 0)
+ {
+ const char *name = elf_strptr (elf, shstrndx, shdr->sh_name);
+ Elf_Data **p;
+
+ if (strcmp (name, ".gnu.version") == 0)
+ {
+ p = &ver;
+ ver_shdr = *shdr;
+ }
+ else if (strcmp (name, ".gnu.version_d") == 0)
+ {
+ p = &verd;
+ verd_shdr = *shdr;
+ }
+ else if (strcmp (name, ".dynsym") == 0)
+ {
+ p = &dynsym;
+ dynsym_shdr = *shdr;
+ }
+ else
+ continue;
+
+ if (*p != NULL)
+ error (1, 0, "Two %s sections in %s", name, fname);
+ *p = elf_getdata (scn, NULL);
+ if (*p == NULL || elf_getdata (scn, *p) != NULL)
+ error (1, 0, "No data or non-contiguous data in %s section in %s",
+ name, fname);
+ }
+ }
+
+ if (ver == NULL || verd == NULL || dynsym == NULL)
+ error (1, 0, "Couldn't find one of the needed sections in %s", fname);
+
+ int from_idx = compute_veridx (argv[2], elf, verd, &verd_shdr);
+ if (from_idx == -1)
+ error (1, 0, "Could not find symbol version %s in %s", argv[2], fname);
+
+ int to_idx = compute_veridx (argv[3], elf, verd, &verd_shdr);
+ if (to_idx == -1)
+ error (1, 0, "Could not find symbol version %s in %s", argv[3], fname);
+
+ if (dynsym_shdr.sh_entsize != gelf_fsize (elf, ELF_T_SYM, 1, ehdr->e_version)
+ || dynsym_shdr.sh_size % dynsym_shdr.sh_entsize
+ || ver_shdr.sh_entsize != 2
+ || (ver_shdr.sh_size & 1)
+ || dynsym_shdr.sh_size / dynsym_shdr.sh_entsize != ver_shdr.sh_size / 2)
+ error (1, 0, "Unexpected sh_size or sh_entsize in %s", fname);
+
+ size_t nentries = ver_shdr.sh_size / 2;
+ size_t cnt;
+ GElf_Versym array[nentries];
+ for (cnt = 0; cnt < nentries; ++cnt)
+ {
+ GElf_Versym vsymmem;
+ GElf_Versym *vsym;
+
+ vsym = gelf_getversym (ver, cnt, &vsymmem);
+ if (vsym == NULL)
+ error (1, 0, "gelt_getversym failed in %s: %s", fname, elf_errmsg (-1));
+
+ array[cnt] = *vsym;
+ if (*vsym != from_idx)
+ continue;
+
+ GElf_Sym sym_mem;
+ GElf_Sym *sym;
+ sym = gelf_getsym (dynsym, cnt, &sym_mem);
+ if (sym == NULL)
+ error (1, 0, "gelt_getsym failed in %s: %s", fname, elf_errmsg (-1));
+
+ const char *name = elf_strptr (elf, dynsym_shdr.sh_link, sym->st_name);
+
+ int argn;
+ for (argn = 4; argn < argc; ++argn)
+ if (fnmatch (argv[argn], name, 0) == 0)
+ {
+ array[cnt] = to_idx;
+ break;
+ }
+ }
+
+ if (sizeof (array[0]) != 2)
+ abort ();
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+ if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
+ ;
+ else if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
+#elif __BYTE_ORDER == __BIG_ENDIAN
+ if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
+ ;
+ else if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
+#else
+# error Unsupported endianity
+#endif
+ {
+ for (cnt = 0; cnt < nentries; ++cnt)
+ array[cnt] = ((array[cnt] & 0xff) << 8) | ((array[cnt] & 0xff00) >> 8);
+ }
+ else
+ error (1, 0, "Unknown EI_DATA %d in %s", ehdr->e_ident[EI_DATA], fname);
+
+ if (elf_end (elf) != 0)
+ error (1, 0, "couldn't close %s: %s", fname, elf_errmsg (-1));
+
+ if (lseek (fd, ver_shdr.sh_offset, SEEK_SET) != (off_t) ver_shdr.sh_offset)
+ error (1, 0, "failed to seek to %zd in %s", (size_t) ver_shdr.sh_offset,
+ fname);
+
+ if (write (fd, array, 2 * nentries) != (ssize_t) (2 * nentries))
+ error (1, 0, "failed to write .gnu.version section into %s", fname);
+
+ close (fd);
+ return 0;
+}
--- gcc/config/ia64/unwind-ia64.c.jj 2004-10-04 08:55:57.000000000 -0400
+++ gcc/config/ia64/unwind-ia64.c 2004-11-15 09:07:45.000000000 -0500
@@ -51,6 +51,51 @@
#define UNW_FLAG_UHANDLER(x) ((x) & 0x0000000200000000L)
#define UNW_LENGTH(x) ((x) & 0x00000000ffffffffL)
+#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
+extern _Unwind_Reason_Code __symverglobal_Unwind_Backtrace
+ (_Unwind_Trace_Fn, void *);
+extern void __symverglobal_Unwind_DeleteException
+ (struct _Unwind_Exception *);
+extern void * __symverglobal_Unwind_FindEnclosingFunction (void *);
+extern _Unwind_Reason_Code __symverglobal_Unwind_ForcedUnwind
+ (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
+extern _Unwind_Word __symverglobal_Unwind_GetCFA
+ (struct _Unwind_Context *);
+extern _Unwind_Word __symverglobal_Unwind_GetBSP
+ (struct _Unwind_Context *);
+extern _Unwind_Word __symverglobal_Unwind_GetGR
+ (struct _Unwind_Context *, int );
+extern _Unwind_Ptr __symverglobal_Unwind_GetIP (struct _Unwind_Context *);
+extern void *__symverglobal_Unwind_GetLanguageSpecificData
+ (struct _Unwind_Context *);
+extern _Unwind_Ptr __symverglobal_Unwind_GetRegionStart
+ (struct _Unwind_Context *);
+extern _Unwind_Reason_Code __symverglobal_Unwind_RaiseException
+ (struct _Unwind_Exception *);
+extern void __symverglobal_Unwind_Resume (struct _Unwind_Exception *);
+extern _Unwind_Reason_Code __symverglobal_Unwind_Resume_or_Rethrow
+ (struct _Unwind_Exception *);
+extern void __symverglobal_Unwind_SetGR
+ (struct _Unwind_Context *, int, _Unwind_Word);
+extern void __symverglobal_Unwind_SetIP
+ (struct _Unwind_Context *, _Unwind_Ptr);
+#define _Unwind_Backtrace __symverglobal_Unwind_Backtrace
+#define _Unwind_DeleteException __symverglobal_Unwind_DeleteException
+#define _Unwind_FindEnclosingFunction __symverglobal_Unwind_FindEnclosingFunction
+#define _Unwind_ForcedUnwind __symverglobal_Unwind_ForcedUnwind
+#define _Unwind_GetBSP __symverglobal_Unwind_GetBSP
+#define _Unwind_GetCFA __symverglobal_Unwind_GetCFA
+#define _Unwind_GetGR __symverglobal_Unwind_GetGR
+#define _Unwind_GetIP __symverglobal_Unwind_GetIP
+#define _Unwind_GetLanguageSpecificData __symverglobal_Unwind_GetLanguageSpecificData
+#define _Unwind_GetRegionStart __symverglobal_Unwind_GetRegionStart
+#define _Unwind_RaiseException __symverglobal_Unwind_RaiseException
+#define _Unwind_Resume __symverglobal_Unwind_Resume
+#define _Unwind_Resume_or_Rethrow __symverglobal_Unwind_Resume_or_Rethrow
+#define _Unwind_SetGR __symverglobal_Unwind_SetGR
+#define _Unwind_SetIP __symverglobal_Unwind_SetIP
+#endif
+
enum unw_application_register
{
UNW_AR_BSP,
@@ -2402,4 +2447,44 @@ alias (_Unwind_SetGR);
alias (_Unwind_SetIP);
#endif
+#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
+#undef alias
+#define symverglobal(name, version) \
+__typeof (__symverglobal##name) __symverlocal##name \
+ __attribute__ ((alias ("__symverglobal" #name))); \
+__asm__ (".symver __symverglobal" #name"," #name "@@GCC_3.4.2");\
+__asm__ (".symver __symverlocal" #name"," #name "@" #version)
+
+#undef _Unwind_Backtrace
+#undef _Unwind_DeleteException
+#undef _Unwind_FindEnclosingFunction
+#undef _Unwind_ForcedUnwind
+#undef _Unwind_GetBSP
+#undef _Unwind_GetCFA
+#undef _Unwind_GetGR
+#undef _Unwind_GetIP
+#undef _Unwind_GetLanguageSpecificData
+#undef _Unwind_GetRegionStart
+#undef _Unwind_RaiseException
+#undef _Unwind_Resume
+#undef _Unwind_Resume_or_Rethrow
+#undef _Unwind_SetGR
+#undef _Unwind_SetIP
+symverglobal (_Unwind_Backtrace, GCC_3.3);
+symverglobal (_Unwind_DeleteException, GCC_3.0);
+symverglobal (_Unwind_FindEnclosingFunction, GCC_3.3);
+symverglobal (_Unwind_ForcedUnwind, GCC_3.0);
+symverglobal (_Unwind_GetBSP, GCC_3.3.2);
+symverglobal (_Unwind_GetCFA, GCC_3.3);
+symverglobal (_Unwind_GetGR, GCC_3.0);
+symverglobal (_Unwind_GetIP, GCC_3.0);
+symverglobal (_Unwind_GetLanguageSpecificData, GCC_3.0);
+symverglobal (_Unwind_GetRegionStart, GCC_3.0);
+symverglobal (_Unwind_RaiseException, GCC_3.0);
+symverglobal (_Unwind_Resume, GCC_3.0);
+symverglobal (_Unwind_Resume_or_Rethrow, GCC_3.3);
+symverglobal (_Unwind_SetGR, GCC_3.0);
+symverglobal (_Unwind_SetIP, GCC_3.0);
+#endif
+
#endif
--- gcc/config/ia64/mkmap-symver-multi.awk.jj 2004-02-18 10:27:36.000000000 -0500
+++ gcc/config/ia64/mkmap-symver-multi.awk 2004-11-15 09:46:50.000000000 -0500
@@ -0,0 +1,133 @@
+# Generate an ELF symbol version map a-la Solaris and GNU ld.
+# Contributed by Richard Henderson <rth@cygnus.com>
+#
+# 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.
+
+BEGIN {
+ state = "nm";
+ sawsymbol = 0;
+}
+
+# Remove comment and blank lines.
+/^ *#/ || /^ *$/ {
+ next;
+}
+
+# We begin with nm input. Collect the set of symbols that are present
+# so that we can not emit them into the final version script -- Solaris
+# complains at us if we do.
+
+state == "nm" && /^%%/ {
+ state = "ver";
+ next;
+}
+
+state == "nm" && ($1 == "U" || $2 == "U") {
+ next;
+}
+
+state == "nm" && NF == 3 {
+ if ($3 ~ /^[^@]*@GCC_[0-9.]*$/) {
+ def[$3] = 1
+ tl=$3
+ sub(/^.*@/,"",tl)
+ ver[$3] = tl
+ } else {
+ sub(/@@?GCC_[0-9.]*$/,"",$3)
+ def[$3] = 1;
+ }
+ sawsymbol = 1;
+ next;
+}
+
+state == "nm" {
+ next;
+}
+
+# Now we process a simplified variant of the Solaris symbol version
+# script. We have one symbol per line, no semicolons, simple markers
+# for beginning and ending each section, and %inherit markers for
+# describing version inheritence. A symbol may appear in more than
+# one symbol version, and the last seen takes effect.
+
+NF == 3 && $1 == "%inherit" {
+ inherit[$2] = $3;
+ next;
+}
+
+NF == 2 && $2 == "{" {
+ libs[$1] = 1;
+ thislib = $1;
+ next;
+}
+
+$1 == "}" {
+ thislib = "";
+ next;
+}
+
+{
+ ver[$1] = thislib;
+ next;
+}
+
+END {
+ if (!sawsymbol)
+ {
+ print "No symbols seen -- broken or mis-installed nm?" | "cat 1>&2";
+ exit 1;
+ }
+ for (l in libs)
+ output(l);
+}
+
+function output(lib) {
+ if (done[lib])
+ return;
+ done[lib] = 1;
+ if (inherit[lib])
+ output(inherit[lib]);
+
+ empty=1
+ for (sym in ver)
+ if ((ver[sym] == lib) && (sym in def))
+ {
+ if (empty)
+ {
+ printf("%s {\n", lib);
+ printf(" global:\n");
+ empty = 0;
+ }
+ symp = sym;
+ sub(/@GCC_[0-9.]*$/,"",symp);
+ printf("\t%s;\n", symp);
+ if (dotsyms)
+ printf("\t.%s;\n", symp);
+ }
+
+ if (empty)
+ {
+ for (l in libs)
+ if (inherit[l] == lib)
+ inherit[l] = inherit[lib];
+ }
+ else if (inherit[lib])
+ printf("} %s;\n", inherit[lib]);
+ else
+ printf ("\n local:\n\t*;\n};\n");
+}
--- gcc/config/ia64/libgcc-ia64-no-libunwind.ver.jj 2004-02-18 10:27:36.000000000 -0500
+++ gcc/config/ia64/libgcc-ia64-no-libunwind.ver 2004-11-15 09:19:56.000000000 -0500
@@ -0,0 +1,17 @@
+GCC_3.4.2 {
+ _Unwind_GetGR
+ _Unwind_RaiseException
+ _Unwind_GetRegionStart
+ _Unwind_SetIP
+ _Unwind_GetIP
+ _Unwind_GetLanguageSpecificData
+ _Unwind_Resume
+ _Unwind_DeleteException
+ _Unwind_SetGR
+ _Unwind_ForcedUnwind
+ _Unwind_Backtrace
+ _Unwind_FindEnclosingFunction
+ _Unwind_GetCFA
+ _Unwind_Resume_or_Rethrow
+ _Unwind_GetBSP
+}

View File

@ -1,316 +0,0 @@
2004-01-23 Jakub Jelinek <jakub@redhat.com>
* system.h (ICE_EXIT_CODE): Define.
* gcc.c (execute): Don't free first string early, but at the end
of the function. Call retry_ice if compiler exited with
ICE_EXIT_CODE.
(retry_ice): New function.
* diagnostic.c (diagnostic_count_diagnostic,
diagnostic_action_after_output, error_recursion): Exit with
ICE_EXIT_CODE instead of FATAL_EXIT_CODE.
--- gcc/system.h.jj 2004-01-19 17:29:30.000000000 +0100
+++ gcc/system.h 2004-01-21 11:53:41.000000000 +0100
@@ -153,6 +153,10 @@ extern int errno;
# endif
#endif
+#ifndef ICE_EXIT_CODE
+# define ICE_EXIT_CODE 27
+#endif
+
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
--- gcc/gcc.c.jj 2004-01-21 11:45:20.000000000 +0100
+++ gcc/gcc.c 2004-01-21 11:56:46.000000000 +0100
@@ -346,6 +346,9 @@ static void init_gcc_specs (struct obsta
#if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX)
static const char *convert_filename (const char *, int, int);
#endif
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
+static void retry_ice (const char *prog, const char **argv);
+#endif
static const char *if_exists_spec_function (int, const char **);
static const char *if_exists_else_spec_function (int, const char **);
@@ -2841,7 +2844,7 @@ execute (void)
}
}
- if (string != commands[i].prog)
+ if (i && string != commands[i].prog)
free ((void *) string);
}
@@ -2897,6 +2900,16 @@ See %s for instructions.",
else if (WIFEXITED (status)
&& WEXITSTATUS (status) >= MIN_FATAL_STATUS)
{
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
+ /* For ICEs in cc1, cc1obj, cc1plus see if it is
+ reproducible or not. */
+ char *p;
+ if (WEXITSTATUS (status) == ICE_EXIT_CODE
+ && i == 0
+ && (p = strrchr (commands[0].argv[0], DIR_SEPARATOR))
+ && ! strncmp (p + 1, "cc1", 3))
+ retry_ice (commands[0].prog, commands[0].argv);
+#endif
if (WEXITSTATUS (status) > greatest_status)
greatest_status = WEXITSTATUS (status);
ret_code = -1;
@@ -2917,6 +2930,9 @@ See %s for instructions.",
}
}
+ if (commands[0].argv[0] != commands[0].prog)
+ free ((PTR) commands[0].argv[0]);
+
return ret_code;
}
}
@@ -5898,6 +5914,224 @@ give_switch (int switchnum, int omit_fir
switches[switchnum].validated = 1;
}
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
+#define RETRY_ICE_ATTEMPTS 2
+
+static void
+retry_ice (const char *prog, const char **argv)
+{
+ int nargs, out_arg = -1, quiet = 0, attempt;
+ int pid, retries, sleep_interval;
+ const char **new_argv;
+ char *temp_filenames[RETRY_ICE_ATTEMPTS * 2 + 2];
+
+ if (input_filename == NULL || ! strcmp (input_filename, "-"))
+ return;
+
+ for (nargs = 0; argv[nargs] != NULL; ++nargs)
+ /* Only retry compiler ICEs, not preprocessor ones. */
+ if (! strcmp (argv[nargs], "-E"))
+ return;
+ else if (argv[nargs][0] == '-' && argv[nargs][1] == 'o')
+ {
+ if (out_arg == -1)
+ out_arg = nargs;
+ else
+ return;
+ }
+ /* If the compiler is going to output any time information,
+ it might varry between invocations. */
+ else if (! strcmp (argv[nargs], "-quiet"))
+ quiet = 1;
+ else if (! strcmp (argv[nargs], "-ftime-report"))
+ return;
+
+ if (out_arg == -1 || !quiet)
+ return;
+
+ memset (temp_filenames, '\0', sizeof (temp_filenames));
+ new_argv = alloca ((nargs + 3) * sizeof (const char *));
+ memcpy (new_argv, argv, (nargs + 1) * sizeof (const char *));
+ new_argv[nargs++] = "-frandom-seed=0";
+ new_argv[nargs] = NULL;
+ if (new_argv[out_arg][2] == '\0')
+ new_argv[out_arg + 1] = "-";
+ else
+ new_argv[out_arg] = "-o-";
+
+ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS + 1; ++attempt)
+ {
+ int fd = -1;
+ int status;
+
+ temp_filenames[attempt * 2] = make_temp_file (".out");
+ temp_filenames[attempt * 2 + 1] = make_temp_file (".err");
+
+ if (attempt == RETRY_ICE_ATTEMPTS)
+ {
+ int i;
+ int fd1, fd2;
+ struct stat st1, st2;
+ size_t n, len;
+ char *buf;
+
+ buf = xmalloc (8192);
+
+ for (i = 0; i < 2; ++i)
+ {
+ fd1 = open (temp_filenames[i], O_RDONLY);
+ fd2 = open (temp_filenames[2 + i], O_RDONLY);
+
+ if (fd1 < 0 || fd2 < 0)
+ {
+ i = -1;
+ close (fd1);
+ close (fd2);
+ break;
+ }
+
+ if (fstat (fd1, &st1) < 0 || fstat (fd2, &st2) < 0)
+ {
+ i = -1;
+ close (fd1);
+ close (fd2);
+ break;
+ }
+
+ if (st1.st_size != st2.st_size)
+ {
+ close (fd1);
+ close (fd2);
+ break;
+ }
+
+ len = 0;
+ for (n = st1.st_size; n; n -= len)
+ {
+ len = n;
+ if (len > 4096)
+ len = 4096;
+
+ if (read (fd1, buf, len) != (int) len
+ || read (fd2, buf + 4096, len) != (int) len)
+ {
+ i = -1;
+ break;
+ }
+
+ if (memcmp (buf, buf + 4096, len) != 0)
+ break;
+ }
+
+ close (fd1);
+ close (fd2);
+
+ if (n)
+ break;
+ }
+
+ free (buf);
+ if (i == -1)
+ break;
+
+ if (i != 2)
+ {
+ notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n");
+ break;
+ }
+
+ fd = open (temp_filenames[attempt * 2], O_RDWR);
+ if (fd < 0)
+ break;
+ write (fd, "//", 2);
+ for (i = 0; i < nargs; i++)
+ {
+ write (fd, " ", 1);
+ write (fd, new_argv[i], strlen (new_argv[i]));
+ }
+ write (fd, "\n", 1);
+ new_argv[nargs] = "-E";
+ new_argv[nargs + 1] = NULL;
+ }
+
+ /* Fork a subprocess; wait and retry if it fails. */
+ sleep_interval = 1;
+ pid = -1;
+ for (retries = 0; retries < 4; retries++)
+ {
+ pid = fork ();
+ if (pid >= 0)
+ break;
+ sleep (sleep_interval);
+ sleep_interval *= 2;
+ }
+
+ if (pid < 0)
+ break;
+ else if (pid == 0)
+ {
+ if (attempt != RETRY_ICE_ATTEMPTS)
+ fd = open (temp_filenames[attempt * 2], O_RDWR);
+ if (fd < 0)
+ exit (-1);
+ if (fd != 1)
+ {
+ close (1);
+ dup (fd);
+ close (fd);
+ }
+
+ fd = open (temp_filenames[attempt * 2 + 1], O_RDWR);
+ if (fd < 0)
+ exit (-1);
+ if (fd != 2)
+ {
+ close (2);
+ dup (fd);
+ close (fd);
+ }
+
+ if (prog == new_argv[0])
+ execvp (prog, (char *const *) new_argv);
+ else
+ execv (new_argv[0], (char *const *) new_argv);
+ exit (-1);
+ }
+
+ if (waitpid (pid, &status, 0) < 0)
+ break;
+
+ if (attempt < RETRY_ICE_ATTEMPTS
+ && (! WIFEXITED (status) || WEXITSTATUS (status) != ICE_EXIT_CODE))
+ {
+ notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n");
+ break;
+ }
+ else if (attempt == RETRY_ICE_ATTEMPTS)
+ {
+ close (fd);
+ if (WIFEXITED (status)
+ && WEXITSTATUS (status) == SUCCESS_EXIT_CODE)
+ {
+ notice ("Preprocessed source stored into %s file, please attach this to your bugreport.\n",
+ temp_filenames[attempt * 2]);
+ /* Make sure it is not deleted. */
+ free (temp_filenames[attempt * 2]);
+ temp_filenames[attempt * 2] = NULL;
+ break;
+ }
+ }
+ }
+
+ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS * 2 + 2; attempt++)
+ if (temp_filenames[attempt])
+ {
+ unlink (temp_filenames[attempt]);
+ free (temp_filenames[attempt]);
+ }
+}
+#endif
+
/* Search for a file named NAME trying various prefixes including the
user's -B prefix and some standard ones.
Return the absolute file name found. If nothing is found, return NAME. */
--- gcc/diagnostic.c.jj 2003-10-01 12:09:21.000000000 +0200
+++ gcc/diagnostic.c 2004-01-21 11:54:47.000000000 +0100
@@ -237,14 +237,14 @@ diagnostic_action_after_output (diagnost
fnotice (stderr, "Please submit a full bug report,\n"
"with preprocessed source if appropriate.\n"
"See %s for instructions.\n", bug_report_url);
- exit (FATAL_EXIT_CODE);
+ exit (ICE_EXIT_CODE);
case DK_FATAL:
if (context->abort_on_error)
real_abort ();
fnotice (stderr, "compilation terminated.\n");
- exit (FATAL_EXIT_CODE);
+ exit (ICE_EXIT_CODE);
default:
gcc_unreachable ();

View File

@ -1,36 +0,0 @@
2007-03-16 Andrew Haley <aph@redhat.com>
* class.c (push_class): Don't bogusly guess the source filename.
* jcf-parse.c (give_name_to_class): Don't set input_location from
DECL_ARTIFICIAL decls.
--- gcc/java/class.c (revision 122746)
+++ gcc/java/class.c (working copy)
@@ -426,8 +426,7 @@
tree decl, signature;
location_t saved_loc = input_location;
#ifndef USE_MAPPED_LOCATION
- tree source_name = identifier_subst (class_name, "", '.', '/', ".java");
- input_filename = IDENTIFIER_POINTER (source_name);
+ input_filename = "<unknown>";
input_line = 0;
#endif
CLASS_P (class_type) = 1;
--- gcc/java/jcf-parse.c (revision 122746)
+++ gcc/java/jcf-parse.c (working copy)
@@ -1221,9 +1221,12 @@ give_name_to_class (JCF *jcf, int i)
main_input_filename = sfname;
}
#else
- input_location = DECL_SOURCE_LOCATION (TYPE_NAME (this_class));
- if (main_input_filename == NULL && jcf == main_jcf)
- main_input_filename = input_filename;
+ if (! DECL_ARTIFICIAL (TYPE_NAME (this_class)))
+ {
+ input_location = DECL_SOURCE_LOCATION (TYPE_NAME (this_class));
+ if (main_input_filename == NULL && jcf == main_jcf)
+ main_input_filename = input_filename;
+ }
#endif
jcf->cpool.data[i].t = this_class;

View File

@ -1,48 +0,0 @@
2006-07-20 Jakub Jelinek <jakub@redhat.com>
* configure.ac (toolexeclibdir, dbexecdir): Canonicalize /lib/../lib
to /lib.
* configure: Rebuilt.
--- libjava/configure.ac.jj 2006-07-20 14:01:02.000000000 +0200
+++ libjava/configure.ac 2006-07-20 16:36:31.000000000 +0200
@@ -1262,6 +1262,7 @@ case ${version_specific_libs} in
multi_os_directory=`$CC -print-multi-os-directory`
case $multi_os_directory in
.) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /.
+ ../lib*) toolexeclibdir='$(subst /lib/../lib,/lib,'$toolexecmainlibdir/$multi_os_directory')' ;;
*) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;;
esac
;;
@@ -1278,6 +1279,10 @@ case $multi_os_directory in
dbexecdir='$(libdir)/gcj-$(gcc_version)' # Avoid /.
ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/gcj-`cat $srcdir/../gcc/BASE-VER`"
;;
+ ../lib*)
+ dbexecdir='$(subst /lib/../lib,/lib,$(libdir)/'$multi_os_directory'/gcj-$(gcc_version))'
+ ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/$multi_os_directory/gcj-`cat $srcdir/../gcc/BASE-VER`"
+ ;;
*)
dbexecdir='$(libdir)/'$multi_os_directory'/gcj-$(gcc_version)'
ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/$multi_os_directory/gcj-`cat $srcdir/../gcc/BASE-VER`"
--- libjava/configure.jj 2006-07-20 14:01:02.000000000 +0200
+++ libjava/configure 2006-07-20 16:45:24.000000000 +0200
@@ -14863,6 +14864,7 @@ case ${version_specific_libs} in
multi_os_directory=`$CC -print-multi-os-directory`
case $multi_os_directory in
.) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /.
+ ../lib*) toolexeclibdir='$(subst /lib/../lib,/lib,'$toolexecmainlibdir/$multi_os_directory')' ;;
*) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;;
esac
;;
@@ -14879,6 +14881,10 @@ case $multi_os_directory in
dbexecdir='$(libdir)/gcj-$(gcc_version)' # Avoid /.
ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/gcj-`cat $srcdir/../gcc/BASE-VER`"
;;
+ ../lib*)
+ dbexecdir='$(subst /lib/../lib,/lib,$(libdir)/'$multi_os_directory'/gcj-$(gcc_version))'
+ ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/$multi_os_directory/gcj-`cat $srcdir/../gcc/BASE-VER`"
+ ;;
*)
dbexecdir='$(libdir)/'$multi_os_directory'/gcj-$(gcc_version)'
ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/$multi_os_directory/gcj-`cat $srcdir/../gcc/BASE-VER`"

View File

@ -1,25 +0,0 @@
--- libjava/configure.ac.jj 2004-08-16 21:13:29.000000000 +0200
+++ libjava/configure.ac 2004-08-21 11:44:59.020755542 +0200
@@ -367,6 +367,10 @@ use_gtk_awt=""
TOOLKIT=
AC_SUBST(TOOLKIT)
+if test -n "${with_multisubdir}"; then
+ peerlibs=no
+fi
+
for peer in $peerlibs ; do
case $peer in
xlib)
--- libjava/configure.jj 2004-08-16 21:22:14.000000000 +0200
+++ libjava/configure 2004-08-21 11:45:16.260738060 +0200
@@ -4118,6 +4118,9 @@ use_gtk_awt=""
# The default toolkit to use is the first one specified.
TOOLKIT=
+if test -n "${with_multisubdir}"; then
+ peerlibs=no
+fi
for peer in $peerlibs ; do
case $peer in

View File

@ -1,15 +0,0 @@
2005-05-20 Jakub Jelinek <jakub@redhat.com>
* configure.host (slow_pthread_self): Set to empty unconditionally
on Linux targets.
--- libjava/configure.host (.../gcc-4_0-branch) (revision 107266)
+++ libjava/configure.host (.../redhat/gcc-4_0-branch) (revision 107414)
@@ -174,6 +174,7 @@
sh-linux* | sh[34]*-linux*)
can_unwind_signal=yes
libgcj_ld_symbolic='-Wl,-Bsymbolic'
+ slow_pthread_self=
if test x$slow_pthread_self = xyes \
&& test x$cross_compiling != xyes; then
cat > conftest.c <<EOF

View File

@ -1,186 +0,0 @@
2007-05-02 Jakub Jelinek <jakub@redhat.com>
* config/linux/proc.c: New file.
--- libgomp/config/linux/proc.c.jj 2007-05-02 13:50:37.000000000 +0200
+++ libgomp/config/linux/proc.c 2007-05-02 16:00:47.000000000 +0200
@@ -0,0 +1,179 @@
+/* Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+ Contributed by Jakub Jelinek <jakub@redhat.com>.
+
+ This file is part of the GNU OpenMP Library (libgomp).
+
+ Libgomp is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1 of the License, or
+ (at your option) any later version.
+
+ Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
+ more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with libgomp; see the file COPYING.LIB. If not, write to the
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+/* As a special exception, if you link this library with other files, some
+ of which are compiled with GCC, to produce an executable, this library
+ does not by itself cause the resulting executable to be covered by the
+ GNU General Public License. This exception does not however invalidate
+ any other reasons why the executable file might be covered by the GNU
+ General Public License. */
+
+/* This file contains system specific routines related to counting
+ online processors and dynamic load balancing. */
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE 1
+#endif
+#include "libgomp.h"
+#include <sched.h>
+#include <stdlib.h>
+#include <unistd.h>
+#ifdef HAVE_GETLOADAVG
+# ifdef HAVE_SYS_LOADAVG_H
+# include <sys/loadavg.h>
+# endif
+#endif
+
+#ifdef HAVE_PTHREAD_AFFINITY_NP
+static unsigned long
+cpuset_popcount (cpu_set_t *cpusetp)
+{
+#ifdef CPU_COUNT
+ /* glibc 2.6 and above provide a macro for this. */
+ return CPU_COUNT (cpusetp);
+#else
+ size_t i;
+ unsigned long ret = 0;
+ extern int check[sizeof (cpusetp->__bits[0]) == sizeof (unsigned long int)];
+
+ (void) check;
+ for (i = 0; i < sizeof (*cpusetp) / sizeof (cpusetp->__bits[0]); i++)
+ {
+ unsigned long int mask = cpusetp->__bits[i];
+ if (mask == 0)
+ continue;
+ ret += __builtin_popcountl (mask);
+ }
+ return ret;
+#endif
+}
+#endif
+
+/* At startup, determine the default number of threads. It would seem
+ this should be related to the number of cpus online. */
+
+void
+gomp_init_num_threads (void)
+{
+#ifdef HAVE_PTHREAD_AFFINITY_NP
+ cpu_set_t cpuset;
+
+ if (pthread_getaffinity_np (pthread_self (), sizeof (cpuset), &cpuset) == 0)
+ {
+ /* Count only the CPUs this process can use. */
+ gomp_nthreads_var = cpuset_popcount (&cpuset);
+ if (gomp_nthreads_var == 0)
+ gomp_nthreads_var = 1;
+ return;
+ }
+#endif
+#ifdef _SC_NPROCESSORS_ONLN
+ gomp_nthreads_var = sysconf (_SC_NPROCESSORS_ONLN);
+#endif
+}
+
+static int
+get_num_procs (void)
+{
+#ifdef HAVE_PTHREAD_AFFINITY_NP
+ cpu_set_t cpuset;
+
+ if (gomp_cpu_affinity == NULL)
+ {
+ /* Count only the CPUs this process can use. */
+ if (pthread_getaffinity_np (pthread_self (), sizeof (cpuset),
+ &cpuset) == 0)
+ {
+ int ret = cpuset_popcount (&cpuset);
+ return ret != 0 ? ret : 1;
+ }
+ }
+ else
+ {
+ size_t idx;
+ static int affinity_cpus;
+
+ /* We can't use pthread_getaffinity_np in this case
+ (we have changed it ourselves, it binds to just one CPU).
+ Count instead the number of different CPUs we are
+ using. */
+ CPU_ZERO (&cpuset);
+ if (affinity_cpus == 0)
+ {
+ int cpus = 0;
+ for (idx = 0; idx < gomp_cpu_affinity_len; idx++)
+ if (! CPU_ISSET (gomp_cpu_affinity[idx], &cpuset))
+ {
+ cpus++;
+ CPU_SET (gomp_cpu_affinity[idx], &cpuset);
+ }
+ affinity_cpus = cpus;
+ }
+ return affinity_cpus;
+ }
+#endif
+#ifdef _SC_NPROCESSORS_ONLN
+ return sysconf (_SC_NPROCESSORS_ONLN);
+#else
+ return gomp_nthreads_var;
+#endif
+}
+
+/* When OMP_DYNAMIC is set, at thread launch determine the number of
+ threads we should spawn for this team. */
+/* ??? I have no idea what best practice for this is. Surely some
+ function of the number of processors that are *still* online and
+ the load average. Here I use the number of processors online
+ minus the 15 minute load average. */
+
+unsigned
+gomp_dynamic_max_threads (void)
+{
+ unsigned n_onln, loadavg;
+
+ n_onln = get_num_procs ();
+ if (n_onln > gomp_nthreads_var)
+ n_onln = gomp_nthreads_var;
+
+ loadavg = 0;
+#ifdef HAVE_GETLOADAVG
+ {
+ double dloadavg[3];
+ if (getloadavg (dloadavg, 3) == 3)
+ {
+ /* Add 0.1 to get a kind of biased rounding. */
+ loadavg = dloadavg[2] + 0.1;
+ }
+ }
+#endif
+
+ if (loadavg >= n_onln)
+ return 1;
+ else
+ return n_onln - loadavg;
+}
+
+int
+omp_get_num_procs (void)
+{
+ return get_num_procs ();
+}
+
+ialias (omp_get_num_procs)

View File

@ -1,145 +0,0 @@
2007-03-29 Andrew Haley <aph@redhat.com>
* jvgenmain.c (main): Change main to use class$, not class$$.
(do_mangle_classname): Likewise.
* class.c (hide): New function.
(add_field): Hide everything that shouldn't be visible outside a
DSO.
(build_static_class_ref): Likewise.
(build_classdollar_field): Likewise.
(make_class_data): Likewise.
(layout_class_method): Likewise.
* expr.c (special_method_p): New function.
--- gcc/java/class.c (revision 122746)
+++ gcc/java/class.c (working copy)
@@ -689,6 +688,13 @@
return fntype;
}
+static void
+hide (tree decl)
+{
+ DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN;
+ DECL_VISIBILITY_SPECIFIED (decl) = 1;
+}
+
tree
add_method_1 (tree this_class, int access_flags, tree name, tree function_type)
{
@@ -799,6 +805,10 @@
/* Always make field externally visible. This is required so
that native methods can always access the field. */
TREE_PUBLIC (field) = 1;
+ /* Hide everything that shouldn't be visible outside a DSO. */
+ if (flag_indirect_classes
+ || (FIELD_PRIVATE (field)))
+ hide (field);
/* Considered external unless we are compiling it into this
object file. */
DECL_EXTERNAL (field) = (is_compiled_class (class) != 2);
@@ -956,7 +966,11 @@
decl = build_decl (VAR_DECL, decl_name, class_type_node);
TREE_STATIC (decl) = 1;
if (! flag_indirect_classes)
- TREE_PUBLIC (decl) = 1;
+ {
+ TREE_PUBLIC (decl) = 1;
+ if (CLASS_PRIVATE (TYPE_NAME (type)))
+ hide (decl);
+ }
DECL_IGNORED_P (decl) = 1;
DECL_ARTIFICIAL (decl) = 1;
if (is_compiled_class (type) == 1)
@@ -995,6 +1009,7 @@
TREE_CONSTANT (decl) = 1;
TREE_READONLY (decl) = 1;
TREE_PUBLIC (decl) = 1;
+ hide (decl);
DECL_IGNORED_P (decl) = 1;
DECL_ARTIFICIAL (decl) = 1;
MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC (decl);
@@ -1640,6 +1655,10 @@
TREE_PUBLIC (dtable_decl) = 1;
DECL_INITIAL (dtable_decl) = dtable;
+ /* The only dispatch table exported from a DSO is the dispatch
+ table for java.lang.Class. */
+ if (DECL_NAME (type_decl) != id_class)
+ hide (dtable_decl);
if (! flag_indirect_classes)
rest_of_decl_compilation (dtable_decl, 1, 0);
/* Maybe we're compiling Class as the first class. If so, set
@@ -2509,6 +2528,12 @@
TREE_PUBLIC (method_decl) = 1;
+ if (flag_indirect_classes
+ || (METHOD_PRIVATE (method_decl) && METHOD_STATIC (method_decl)
+ && ! METHOD_NATIVE (method_decl)
+ && ! special_method_p (method_decl)))
+ hide (method_decl);
+
/* Considered external unless it is being compiled into this object
file, or it was already flagged as external. */
if (!DECL_EXTERNAL (method_decl))
--- gcc/java/jvgenmain.c (revision 122746)
+++ gcc/java/jvgenmain.c (working copy)
@@ -143,8 +143,8 @@
fprintf (stream, " JvRunMainName (\"%s\", argc, argv);\n", classname);
else
{
- fprintf (stream, " extern void *%s;\n", mangled_classname);
- fprintf (stream, " JvRunMain (%s, argc, argv);\n", mangled_classname);
+ fprintf (stream, " extern char %s;\n", mangled_classname);
+ fprintf (stream, " JvRunMain (&%s, argc, argv);\n", mangled_classname);
}
fprintf (stream, "}\n");
if (stream != stdout && fclose (stream) != 0)
@@ -176,7 +176,7 @@
count++;
}
append_gpp_mangled_name (&ptr [-count], count);
- obstack_grow (mangle_obstack, "7class$$E", strlen ("7class$$E"));
+ obstack_grow (mangle_obstack, "6class$E", strlen ("6class$E"));
obstack_1grow (mangle_obstack, '\0');
return obstack_finish (mangle_obstack);
}
--- gcc/java/expr.c (revision 122746)
+++ gcc/java/expr.c (working copy)
@@ -2121,6 +2121,25 @@
{NULL, NULL, NULL, NULL, 0, NULL}};
+/* True if this method is special, i.e. it's a private method that
+ should be exported fro a DSO. */
+
+bool
+special_method_p (tree candidate_method)
+{
+ tree context = DECL_NAME (TYPE_NAME (DECL_CONTEXT (candidate_method)));
+ tree method = DECL_NAME (candidate_method);
+ rewrite_rule *p;
+
+ for (p = rules; p->classname; p++)
+ {
+ if (get_identifier (p->classname) == context
+ && get_identifier (p->method) == method)
+ return true;
+ }
+ return false;
+}
+
/* Scan the rules list for replacements for *METHOD_P and replace the
args accordingly. If the rewrite results in an access to a private
method, update SPECIAL.*/
--- gcc/java/java-tree.h (revision 122746)
+++ gcc/java/java-tree.h (working copy)
@@ -1171,6 +1171,7 @@
extern void initialize_builtins (void);
extern tree lookup_name (tree);
+extern bool special_method_p (tree);
extern void maybe_rewrite_invocation (tree *, tree *, tree *, tree *);
extern tree build_known_method_ref (tree, tree, tree, tree, tree, tree);
extern tree build_class_init (tree, tree);

View File

@ -1,104 +0,0 @@
--- libcpp/configure.ac.jj 2005-10-28 23:13:40.000000000 +0200
+++ libcpp/configure.ac 2005-11-25 14:34:31.000000000 +0100
@@ -112,6 +112,8 @@ fi
m4_changequote(,)
case $target in
+ powerpc-*-linux*)
+ need_64bit_hwint=no ;;
alpha*-*-* | \
arm*-*-*eabi* | \
arm*-*-symbianelf* | \
--- libcpp/configure.jj 2005-10-28 23:13:40.000000000 +0200
+++ libcpp/configure 2005-11-25 14:34:40.000000000 +0100
@@ -8217,6 +8217,8 @@ fi
case $target in
+ powerpc-*-linux*)
+ need_64bit_hwint=no ;;
alpha*-*-* | \
arm*-*-*eabi* | \
arm*-*-symbianelf* | \
--- gcc/config.gcc.jj 2005-11-19 09:27:16.000000000 +0100
+++ gcc/config.gcc 2005-11-25 14:29:30.000000000 +0100
@@ -294,7 +294,10 @@ mips*-*-*)
powerpc*-*-*)
cpu_type=rs6000
extra_headers="ppc-asm.h altivec.h spe.h"
- need_64bit_hwint=yes
+ case ${target} in
+ powerpc-*-linux*) ;;
+ *) need_64bit_hwint=yes ;;
+ esac
case x$with_cpu in
xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345]|xrs64a)
cpu_is_64bit=yes
--- gcc/gcc.c.jj 2005-11-19 21:16:39.000000000 +0100
+++ gcc/gcc.c 2005-11-28 13:00:58.000000000 +0100
@@ -3154,6 +3154,8 @@ process_command (int argc, const char **
const char *spec_lang = 0;
int last_language_n_infiles;
int lang_n_infiles = 0;
+ int hack32 = 1;
+ int used_B = 0;
#ifdef MODIFY_TARGET_NAME
int is_modify_target_name;
int j;
@@ -3680,6 +3682,7 @@ warranty; not even for MERCHANTABILITY o
PREFIX_PRIORITY_B_OPT, 0, 0);
add_prefix (&include_prefixes, value, NULL,
PREFIX_PRIORITY_B_OPT, 0, 0);
+ used_B = 1;
n_switches++;
}
break;
@@ -3742,6 +3745,21 @@ warranty; not even for MERCHANTABILITY o
#endif
goto normal_switch;
+ /* HACK START */
+ case 'm':
+ if ((p[1] == '6' && p[2] == '4')
+ || (p[1] == 'a' && strncmp (p + 2, "ltivec", 6) == 0)
+ || (p[1] == 'c' && strncmp (p + 2, "pu=", 3) == 0
+ && (strncmp (p + 5, "7400", 4) == 0
+ || strncmp (p + 5, "7450", 4) == 0
+ || strncmp (p + 5, "G4", 2) == 0
+ || strncmp (p + 5, "970", 3) == 0
+ || strncmp (p + 5, "G5", 2) == 0))
+ || (p[1] == 'p' && strncmp (p + 2, "owerpc64", 8) == 0))
+ hack32 = 0;
+ /* FALLTHROUGH */
+ /* HACK END */
+
default:
normal_switch:
@@ -3812,6 +3830,26 @@ warranty; not even for MERCHANTABILITY o
/* Use 2 as fourth arg meaning try just the machine as a suffix,
as well as trying the machine and the version. */
#ifndef OS2
+ /* HACK START */
+ if (hack32 && !used_B && !strncmp (spec_machine, "sparc64-", 8))
+ {
+ const char *sparc32_exec_prefix =
+ concat (standard_libexec_prefix, "sparc-", spec_machine + 8,
+ dir_separator_str, spec_version, dir_separator_str, NULL);
+ add_prefix (&exec_prefixes, sparc32_exec_prefix, "GCC",
+ PREFIX_PRIORITY_LAST, 0, 0);
+ }
+ /* HACK END */
+ /* HACK START */
+ if (hack32 && !used_B && !strncmp (spec_machine, "ppc64-", 6))
+ {
+ const char *ppc32_exec_prefix =
+ concat (standard_libexec_prefix, "ppc-", spec_machine + 6,
+ dir_separator_str, spec_version, dir_separator_str, NULL);
+ add_prefix (&exec_prefixes, ppc32_exec_prefix, "GCC",
+ PREFIX_PRIORITY_LAST, 0, 0);
+ }
+ /* HACK END */
add_prefix (&exec_prefixes, standard_libexec_prefix, "GCC",
PREFIX_PRIORITY_LAST, 1, 0);
add_prefix (&exec_prefixes, standard_libexec_prefix, "BINUTILS",

View File

@ -1,28 +0,0 @@
2006-04-06 Jakub Jelinek <jakub@redhat.com>
* objc/compile/20060406-1.m: New test.
--- gcc/testsuite/objc/compile/20060406-1.m.jj 2006-04-06 17:25:59.000000000 +0200
+++ gcc/testsuite/objc/compile/20060406-1.m 2006-04-06 17:20:48.000000000 +0200
@@ -0,0 +1,21 @@
+typedef struct
+{
+ void *p;
+} *S;
+
+@protocol O
+- (unsigned)j;
+@end
+
+@interface I
++ (unsigned char)T:(S<O>[2])p v:(S<O>)h;
+@end
+
+@implementation I
++ (unsigned char)T:(S<O>[2])p v:(S<O>)h
+{
+ p[0] = (S) 0;
+ p[1] = (S) 0;
+ return 0;
+}
+@end

View File

@ -1,86 +0,0 @@
2005-11-28 Jakub Jelinek <jakub@redhat.com>
* config/rs6000/rs6000.c (rs6000_return_addr): If COUNT == 0,
read word RETURN_ADDRESS_OFFSET bytes above arg_pointer_rtx
instead of doing an extran indirection from frame_pointer_rtx.
* gcc.dg/20051128-1.c: New test.
--- gcc/config/rs6000/rs6000.c.jj 2005-11-26 14:38:01.000000000 +0100
+++ gcc/config/rs6000/rs6000.c 2005-11-28 20:32:18.000000000 +0100
@@ -13166,17 +13166,22 @@ rs6000_return_addr (int count, rtx frame
don't try to be too clever here. */
if (count != 0 || (DEFAULT_ABI != ABI_AIX && flag_pic))
{
+ rtx x;
cfun->machine->ra_needs_full_frame = 1;
- return
- gen_rtx_MEM
- (Pmode,
- memory_address
- (Pmode,
- plus_constant (copy_to_reg
- (gen_rtx_MEM (Pmode,
- memory_address (Pmode, frame))),
- RETURN_ADDRESS_OFFSET)));
+ if (count == 0)
+ {
+ gcc_assert (frame == frame_pointer_rtx);
+ x = arg_pointer_rtx;
+ }
+ else
+ {
+ x = memory_address (Pmode, frame);
+ x = copy_to_reg (gen_rtx_MEM (Pmode, x));
+ }
+
+ x = plus_constant (x, RETURN_ADDRESS_OFFSET);
+ return gen_rtx_MEM (Pmode, memory_address (Pmode, x));
}
cfun->machine->ra_need_lr = 1;
--- gcc/testsuite/gcc.dg/20051128-1.c.jj 2005-10-10 11:21:41.096999000 +0200
+++ gcc/testsuite/gcc.dg/20051128-1.c 2005-11-28 12:30:57.000000000 +0100
@@ -0,0 +1,41 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fpic" } */
+
+extern void exit (int);
+extern void abort (void);
+
+int b;
+
+struct A
+{
+ void *pad[147];
+ void *ra, *h;
+ long o;
+};
+
+void
+__attribute__((noinline))
+foo (struct A *a, void *x)
+{
+ __builtin_memset (a, 0, sizeof (a));
+ if (!b)
+ exit (0);
+}
+
+void
+__attribute__((noinline))
+bar (void)
+{
+ struct A a;
+
+ __builtin_unwind_init ();
+ foo (&a, __builtin_return_address (0));
+}
+
+int
+main (void)
+{
+ bar ();
+ abort ();
+ return 0;
+}

View File

@ -1,22 +0,0 @@
--- gcc/config/rs6000/t-linux64 2003-06-03 05:11:45.000000000 -0400
+++ gcc/config/rs6000/t-linux64 2003-06-11 17:07:16.000000000 -0400
@@ -4,13 +4,13 @@ LIB2FUNCS_EXTRA = tramp.S $(srcdir)/conf
# Modify the shared lib version file
SHLIB_MKMAP_OPTS = -v dotsyms=1
-MULTILIB_OPTIONS = m64/m32 msoft-float
-MULTILIB_DIRNAMES = 64 32 nof
+MULTILIB_OPTIONS = m64/m32
+MULTILIB_DIRNAMES = 64 32
MULTILIB_EXTRA_OPTS = fPIC mstrict-align
-MULTILIB_EXCEPTIONS = m64/msoft-float
-MULTILIB_EXCLUSIONS = m64/!m32/msoft-float
-MULTILIB_OSDIRNAMES = ../lib64 ../lib nof
-MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT)
+MULTILIB_EXCEPTIONS =
+MULTILIB_EXCLUSIONS =
+MULTILIB_OSDIRNAMES = ../lib64 ../lib
+MULTILIB_MATCHES =
TARGET_LIBGCC2_CFLAGS = -mno-minimal-toc -fPIC

View File

@ -1,62 +0,0 @@
2006-04-06 Jakub Jelinek <jakub@redhat.com>
PR middle-end/20297
* gcc.dg/visibility-11.c: Moved to...
* gcc.target/i386/visibility-1.c: ... here. Only run on
32-bit linux and bsds.
--- gcc/testsuite/gcc.dg/visibility-11.c.jj 2006-03-24 17:07:15.000000000 +0100
+++ gcc/testsuite/gcc.dg/visibility-11.c 2006-03-28 14:59:27.000000000 +0200
@@ -1,24 +0,0 @@
-/* PR middle-end/20297 */
-/* The memcpy FUNCTION_DECL built in the middle-end for block moves got
- hidden visibility from the first push, so the call didn't use the PLT. */
-
-/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
-/* { dg-require-visibility "" } */
-/* { dg-options "-Os -fpic" }
-/* { dg-final { scan-assembler "memcpy@PLT" } } */
-
-#pragma GCC visibility push(hidden)
-#pragma GCC visibility push(default)
-extern void* memcpy (void *, const void *, __SIZE_TYPE__);
-#pragma GCC visibility pop
-
-struct a { int a[1024]; };
-
-extern void *bar (struct a *, struct a *, int);
-
-void *
-foo (struct a *a, struct a *b, int c)
-{
- struct a cc = *b;
- return bar (a, &cc, 4 * c);
-}
--- gcc/testsuite/gcc.target/i386/visibility-1.c.jj 2006-03-28 14:30:17.000000000 +0200
+++ gcc/testsuite/gcc.target/i386/visibility-1.c 2006-03-28 14:58:48.000000000 +0200
@@ -0,0 +1,25 @@
+/* PR middle-end/20297 */
+/* The memcpy FUNCTION_DECL built in the middle-end for block moves got
+ hidden visibility from the first push, so the call didn't use the PLT. */
+
+/* { dg-do compile { target { { *-*-linux* *-*-*bsd* *-*-solaris2* *-*-elf* *-*-gnu* *-*-sysv[45]* } && ilp32 } } } */
+/* { dg-require-effective-target fpic } */
+/* { dg-require-visibility "" } */
+/* { dg-options "-Os -fpic" } */
+/* { dg-final { scan-assembler "memcpy@PLT" } } */
+
+#pragma GCC visibility push(hidden)
+#pragma GCC visibility push(default)
+extern void* memcpy (void *, const void *, __SIZE_TYPE__);
+#pragma GCC visibility pop
+
+struct a { int a[1024]; };
+
+extern void *bar (struct a *, struct a *, int);
+
+void *
+foo (struct a *a, struct a *b, int c)
+{
+ struct a cc = *b;
+ return bar (a, &cc, 4 * c);
+}

View File

@ -1,302 +0,0 @@
2006-12-21 Jakub Jelinek <jakub@redhat.com>
Revert:
2006-12-16 Joseph Myers <joseph@codesourcery.com>
David Edelsohn <edelsohn@gnu.org>
PR target/24036
* doc/tm.texi (HARD_REGNO_NREGS_HAS_PADDING,
HARD_REGNO_NREGS_WITH_PADDING): Document new target macros.
* defaults.h (HARD_REGNO_NREGS_HAS_PADDING,
HARD_REGNO_NREGS_WITH_PADDING): Define.
* config/i386/i386.h (HARD_REGNO_NREGS_HAS_PADDING,
HARD_REGNO_NREGS_WITH_PADDING): Define.
* rtlanal.c (subreg_regno_offset, subreg_offset_representable_p):
Use new macros to detect modes with holes; do not look at integer
units.
(subreg_offset_representable_p): Check for and disallow cases
where the modes use different numbers of bits from registers.
* config/rs6000/rs6000.c (rs6000_emit_move): Handle TFmode
constant for soft-float.
(rs6000_hard_regno_nregs): Use UNITS_PER_FP_WORD for e500 GPRs
containing doubles.
(rs6000_split_multireg_move): Use DFmode reg_mode for TFmode moves
in E500 double case.
* config/rs6000/rs6000.md (movtf): Allow soft-float.
(movtf_softfloat): New.
--- gcc/doc/tm.texi (revision 119967)
+++ gcc/doc/tm.texi (revision 119966)
@@ -1937,33 +1937,6 @@ definition of this macro is
@end smallexample
@end defmac
-@defmac HARD_REGNO_NREGS_HAS_PADDING (@var{regno}, @var{mode})
-A C expression that is nonzero if a value of mode @var{mode}, stored
-in memory, ends with padding that causes it to take up more space than
-in registers starting at register number @var{regno} (as determined by
-multiplying GCC's notion of the size of the register when containing
-this mode by the number of registers returned by
-@code{HARD_REGNO_NREGS}). By default this is zero.
-
-For example, if a floating-point value is stored in three 32-bit
-registers but takes up 128 bits in memory, then this would be
-nonzero.
-
-This macros only needs to be defined if there are cases where
-@code{subreg_regno_offset} and @code{subreg_offset_representable_p}
-would otherwise wrongly determine that a @code{subreg} can be
-represented by an offset to the register number, when in fact such a
-@code{subreg} would contain some of the padding not stored in
-registers and so not be representable.
-@end defmac
-
-@defmac HARD_REGNO_NREGS_WITH_PADDING (@var{regno}, @var{mode})
-For values of @var{regno} and @var{mode} for which
-@code{HARD_REGNO_NREGS_HAS_PADDING} returns nonzero, a C expression
-returning the greater number of registers required to hold the value
-including any padding. In the example above, the value would be four.
-@end defmac
-
@defmac REGMODE_NATURAL_SIZE (@var{mode})
Define this macro if the natural size of registers that hold values
of mode @var{mode} is not the word size. It is a C expression that
--- gcc/defaults.h (revision 119967)
+++ gcc/defaults.h (revision 119966)
@@ -867,9 +867,4 @@ Software Foundation, 51 Franklin Street,
#define INCOMING_FRAME_SP_OFFSET 0
#endif
-#ifndef HARD_REGNO_NREGS_HAS_PADDING
-#define HARD_REGNO_NREGS_HAS_PADDING(REGNO, MODE) 0
-#define HARD_REGNO_NREGS_WITH_PADDING(REGNO, MODE) -1
-#endif
-
#endif /* ! GCC_DEFAULTS_H */
--- gcc/rtlanal.c (revision 119967)
+++ gcc/rtlanal.c (revision 119966)
@@ -3138,15 +3138,34 @@ unsigned int
subreg_regno_offset (unsigned int xregno, enum machine_mode xmode,
unsigned int offset, enum machine_mode ymode)
{
- int nregs_xmode, nregs_ymode;
+ int nregs_xmode, nregs_ymode, nregs_xmode_unit_int;
int mode_multiple, nregs_multiple;
int y_offset;
+ enum machine_mode xmode_unit, xmode_unit_int;
gcc_assert (xregno < FIRST_PSEUDO_REGISTER);
+ if (GET_MODE_INNER (xmode) == VOIDmode)
+ xmode_unit = xmode;
+ else
+ xmode_unit = GET_MODE_INNER (xmode);
+
+ if (FLOAT_MODE_P (xmode_unit))
+ {
+ xmode_unit_int = int_mode_for_mode (xmode_unit);
+ if (xmode_unit_int == BLKmode)
+ /* It's probably bad to be here; a port should have an integer mode
+ that's the same size as anything of which it takes a SUBREG. */
+ xmode_unit_int = xmode_unit;
+ }
+ else
+ xmode_unit_int = xmode_unit;
+
+ nregs_xmode_unit_int = hard_regno_nregs[xregno][xmode_unit_int];
+
/* Adjust nregs_xmode to allow for 'holes'. */
- if (HARD_REGNO_NREGS_HAS_PADDING (xregno, xmode))
- nregs_xmode = HARD_REGNO_NREGS_WITH_PADDING (xregno, xmode);
+ if (nregs_xmode_unit_int != hard_regno_nregs[xregno][xmode_unit])
+ nregs_xmode = nregs_xmode_unit_int * GET_MODE_NUNITS (xmode);
else
nregs_xmode = hard_regno_nregs[xregno][xmode];
@@ -3184,31 +3203,38 @@ bool
subreg_offset_representable_p (unsigned int xregno, enum machine_mode xmode,
unsigned int offset, enum machine_mode ymode)
{
- int nregs_xmode, nregs_ymode;
+ int nregs_xmode, nregs_ymode, nregs_xmode_unit, nregs_xmode_unit_int;
int mode_multiple, nregs_multiple;
int y_offset;
- int regsize_xmode, regsize_ymode;
+ enum machine_mode xmode_unit, xmode_unit_int;
gcc_assert (xregno < FIRST_PSEUDO_REGISTER);
+ if (GET_MODE_INNER (xmode) == VOIDmode)
+ xmode_unit = xmode;
+ else
+ xmode_unit = GET_MODE_INNER (xmode);
+
+ if (FLOAT_MODE_P (xmode_unit))
+ {
+ xmode_unit_int = int_mode_for_mode (xmode_unit);
+ if (xmode_unit_int == BLKmode)
+ /* It's probably bad to be here; a port should have an integer mode
+ that's the same size as anything of which it takes a SUBREG. */
+ xmode_unit_int = xmode_unit;
+ }
+ else
+ xmode_unit_int = xmode_unit;
+
+ nregs_xmode_unit = hard_regno_nregs[xregno][xmode_unit];
+ nregs_xmode_unit_int = hard_regno_nregs[xregno][xmode_unit_int];
+
/* If there are holes in a non-scalar mode in registers, we expect
that it is made up of its units concatenated together. */
- if (HARD_REGNO_NREGS_HAS_PADDING (xregno, xmode))
+ if (nregs_xmode_unit != nregs_xmode_unit_int)
{
- enum machine_mode xmode_unit;
-
- nregs_xmode = HARD_REGNO_NREGS_WITH_PADDING (xregno, xmode);
- if (GET_MODE_INNER (xmode) == VOIDmode)
- xmode_unit = xmode;
- else
- xmode_unit = GET_MODE_INNER (xmode);
- gcc_assert (HARD_REGNO_NREGS_HAS_PADDING (xregno, xmode_unit));
- gcc_assert (nregs_xmode
- == (GET_MODE_NUNITS (xmode)
- * HARD_REGNO_NREGS_WITH_PADDING (xregno, xmode_unit)));
- gcc_assert (hard_regno_nregs[xregno][xmode]
- == (hard_regno_nregs[xregno][xmode_unit]
- * GET_MODE_NUNITS (xmode)));
+ gcc_assert (nregs_xmode_unit * GET_MODE_NUNITS (xmode)
+ == hard_regno_nregs[xregno][xmode]);
/* You can only ask for a SUBREG of a value with holes in the middle
if you don't cross the holes. (Such a SUBREG should be done by
@@ -3218,12 +3244,15 @@ subreg_offset_representable_p (unsigned
3 for each part, but in memory it's two 128-bit parts.
Padding is assumed to be at the end (not necessarily the 'high part')
of each unit. */
- if ((offset / GET_MODE_SIZE (xmode_unit) + 1
- < GET_MODE_NUNITS (xmode))
- && (offset / GET_MODE_SIZE (xmode_unit)
+ if (nregs_xmode_unit != nregs_xmode_unit_int
+ && (offset / GET_MODE_SIZE (xmode_unit_int) + 1
+ < GET_MODE_NUNITS (xmode))
+ && (offset / GET_MODE_SIZE (xmode_unit_int)
!= ((offset + GET_MODE_SIZE (ymode) - 1)
- / GET_MODE_SIZE (xmode_unit))))
+ / GET_MODE_SIZE (xmode_unit_int))))
return false;
+
+ nregs_xmode = nregs_xmode_unit_int * GET_MODE_NUNITS (xmode);
}
else
nregs_xmode = hard_regno_nregs[xregno][xmode];
@@ -3237,15 +3266,6 @@ subreg_offset_representable_p (unsigned
? WORDS_BIG_ENDIAN : BYTES_BIG_ENDIAN))
return true;
- /* If registers store different numbers of bits in the different
- modes, we cannot generally form this subreg. */
- regsize_xmode = GET_MODE_SIZE (xmode) / nregs_xmode;
- regsize_ymode = GET_MODE_SIZE (ymode) / nregs_ymode;
- if (regsize_xmode > regsize_ymode && nregs_ymode > 1)
- return false;
- if (regsize_ymode > regsize_xmode && nregs_xmode > 1)
- return false;
-
/* Lowpart subregs are otherwise valid. */
if (offset == subreg_lowpart_offset (ymode, xmode))
return true;
--- gcc/config/i386/i386.h (revision 119967)
+++ gcc/config/i386/i386.h (revision 119966)
@@ -827,15 +827,6 @@ do { \
? (TARGET_64BIT ? 4 : 6) \
: ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)))
-#define HARD_REGNO_NREGS_HAS_PADDING(REGNO, MODE) \
- ((TARGET_128BIT_LONG_DOUBLE && !TARGET_64BIT) \
- ? (FP_REGNO_P (REGNO) || SSE_REGNO_P (REGNO) || MMX_REGNO_P (REGNO) \
- ? 0 \
- : ((MODE) == XFmode || (MODE) == XCmode)) \
- : 0)
-
-#define HARD_REGNO_NREGS_WITH_PADDING(REGNO, MODE) ((MODE) == XFmode ? 4 : 8)
-
#define VALID_SSE2_REG_MODE(MODE) \
((MODE) == V16QImode || (MODE) == V8HImode || (MODE) == V2DFmode \
|| (MODE) == V2DImode || (MODE) == DFmode)
--- gcc/config/rs6000/rs6000.c (revision 119967)
+++ gcc/config/rs6000/rs6000.c (revision 119966)
@@ -3573,6 +3573,9 @@ rs6000_hard_regno_nregs (int regno, enum
if (FP_REGNO_P (regno))
return (GET_MODE_SIZE (mode) + UNITS_PER_FP_WORD - 1) / UNITS_PER_FP_WORD;
+ if (TARGET_E500_DOUBLE && mode == DFmode)
+ return 1;
+
if (SPE_SIMD_REGNO_P (regno) && TARGET_SPE && SPE_VECTOR_MODE (mode))
return (GET_MODE_SIZE (mode) + UNITS_PER_SPE_WORD - 1) / UNITS_PER_SPE_WORD;
@@ -3580,14 +3583,6 @@ rs6000_hard_regno_nregs (int regno, enum
return
(GET_MODE_SIZE (mode) + UNITS_PER_ALTIVEC_WORD - 1) / UNITS_PER_ALTIVEC_WORD;
- /* The value returned for SCmode in the E500 double case is 2 for
- ABI compatibility; storing an SCmode value in a single register
- would require function_arg and rs6000_spe_function_arg to handle
- SCmode so as to pass the value correctly in a pair of
- registers. */
- if (TARGET_E500_DOUBLE && FLOAT_MODE_P (mode) && mode != SCmode)
- return (GET_MODE_SIZE (mode) + UNITS_PER_FP_WORD - 1) / UNITS_PER_FP_WORD;
-
return (GET_MODE_SIZE (mode) + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
}
@@ -3956,7 +3951,8 @@ rs6000_emit_move (rtx dest, rtx source,
/* 128-bit constant floating-point values on Darwin should really be
loaded as two parts. */
- if (!TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128
+ if (!TARGET_IEEEQUAD
+ && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128
&& mode == TFmode && GET_CODE (operands[1]) == CONST_DOUBLE)
{
/* DImode is used, not DFmode, because simplify_gen_subreg doesn't
@@ -12402,8 +12398,6 @@ rs6000_split_multireg_move (rtx dst, rtx
reg_mode = DFmode;
else if (ALTIVEC_REGNO_P (reg))
reg_mode = V16QImode;
- else if (TARGET_E500_DOUBLE && mode == TFmode)
- reg_mode = DFmode;
else
reg_mode = word_mode;
reg_mode_size = GET_MODE_SIZE (reg_mode);
--- gcc/config/rs6000/rs6000.md (revision 119967)
+++ gcc/config/rs6000/rs6000.md (revision 119966)
@@ -7789,7 +7789,8 @@ (define_insn "*movdf_softfloat64"
(define_expand "movtf"
[(set (match_operand:TF 0 "general_operand" "")
(match_operand:TF 1 "any_operand" ""))]
- "!TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128"
+ "!TARGET_IEEEQUAD
+ && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128"
"{ rs6000_emit_move (operands[0], operands[1], TFmode); DONE; }")
; It's important to list the o->f and f->o moves before f->f because
@@ -7808,19 +7809,6 @@ (define_insn_and_split "*movtf_internal"
{ rs6000_split_multireg_move (operands[0], operands[1]); DONE; }
[(set_attr "length" "8,8,8,20,20,16")])
-(define_insn_and_split "*movtf_softfloat"
- [(set (match_operand:TF 0 "nonimmediate_operand" "=r,Y,r")
- (match_operand:TF 1 "input_operand" "YGHF,r,r"))]
- "!TARGET_IEEEQUAD
- && (TARGET_SOFT_FLOAT || !TARGET_FPRS) && TARGET_LONG_DOUBLE_128
- && (gpc_reg_operand (operands[0], TFmode)
- || gpc_reg_operand (operands[1], TFmode))"
- "#"
- "&& reload_completed"
- [(pc)]
-{ rs6000_split_multireg_move (operands[0], operands[1]); DONE; }
- [(set_attr "length" "20,20,16")])
-
(define_expand "extenddftf2"
[(parallel [(set (match_operand:TF 0 "nonimmediate_operand" "")
(float_extend:TF (match_operand:DF 1 "input_operand" "")))

View File

@ -1,439 +0,0 @@
2006-09-01 Jakub Jelinek <jakub@redhat.com>
PR middle-end/27567
* builtins.c (fold_builtin_memcpy, fold_builtin_memmove): Remove.
(fold_builtin_mempcpy): Rename to...
(fold_builtin_memory_op): ... this. Optimize one element copy
into an assignment.
(fold_builtin_memset, fold_builtin_bzero, fold_builtin_bcopy): New
functions.
(expand_builtin_strcpy, expand_builtin_strncpy): Handle COMPOUND_EXPR.
(expand_builtin_memcpy, expand_builtin_mempcpy,
expand_builtin_memmove): Likewise. Use fold_builtin_memory_op.
(fold_builtin_1): Handle BUILT_IN_MEMSET, BUILT_IN_BZERO and
BUILT_IN_BCOPY. Use fold_builtin_memory_op for
BUILT_IN_MEM{CPY,PCPY,MOVE}.
--- gcc/builtins.c.jj 2006-08-28 13:00:23.000000000 +0200
+++ gcc/builtins.c 2006-09-01 11:55:51.000000000 +0200
@@ -160,9 +160,7 @@ static tree fold_builtin_ceil (tree, tre
static tree fold_builtin_round (tree, tree);
static tree fold_builtin_int_roundingfn (tree, tree);
static tree fold_builtin_bitop (tree, tree);
-static tree fold_builtin_memcpy (tree, tree);
-static tree fold_builtin_mempcpy (tree, tree, int);
-static tree fold_builtin_memmove (tree, tree);
+static tree fold_builtin_memory_op (tree, tree, bool, int);
static tree fold_builtin_strchr (tree, tree);
static tree fold_builtin_memcmp (tree);
static tree fold_builtin_strcmp (tree);
@@ -2890,10 +2888,19 @@ expand_builtin_memcpy (tree exp, rtx tar
unsigned int dest_align
= get_pointer_alignment (dest, BIGGEST_ALIGNMENT);
rtx dest_mem, src_mem, dest_addr, len_rtx;
- tree result = fold_builtin_memcpy (fndecl, arglist);
+ tree result = fold_builtin_memory_op (arglist, TREE_TYPE (TREE_TYPE (fndecl)),
+ false, /*endp=*/0);
if (result)
- return expand_expr (result, target, mode, EXPAND_NORMAL);
+ {
+ while (TREE_CODE (result) == COMPOUND_EXPR)
+ {
+ expand_expr (TREE_OPERAND (result, 0), const0_rtx, VOIDmode,
+ EXPAND_NORMAL);
+ result = TREE_OPERAND (result, 1);
+ }
+ return expand_expr (result, target, mode, EXPAND_NORMAL);
+ }
/* If DEST is not a pointer type, call the normal function. */
if (dest_align == 0)
@@ -2979,11 +2986,19 @@ expand_builtin_mempcpy (tree arglist, tr
unsigned int dest_align
= get_pointer_alignment (dest, BIGGEST_ALIGNMENT);
rtx dest_mem, src_mem, len_rtx;
- tree result = fold_builtin_mempcpy (arglist, type, endp);
+ tree result = fold_builtin_memory_op (arglist, type, false, endp);
if (result)
- return expand_expr (result, target, mode, EXPAND_NORMAL);
-
+ {
+ while (TREE_CODE (result) == COMPOUND_EXPR)
+ {
+ expand_expr (TREE_OPERAND (result, 0), const0_rtx, VOIDmode,
+ EXPAND_NORMAL);
+ result = TREE_OPERAND (result, 1);
+ }
+ return expand_expr (result, target, mode, EXPAND_NORMAL);
+ }
+
/* If either SRC or DEST is not a pointer type, don't do this
operation in-line. */
if (dest_align == 0 || src_align == 0)
@@ -3053,10 +3068,18 @@ expand_builtin_memmove (tree arglist, tr
unsigned int src_align = get_pointer_alignment (src, BIGGEST_ALIGNMENT);
unsigned int dest_align
= get_pointer_alignment (dest, BIGGEST_ALIGNMENT);
- tree result = fold_builtin_memmove (arglist, type);
+ tree result = fold_builtin_memory_op (arglist, type, false, /*endp=*/3);
if (result)
- return expand_expr (result, target, mode, EXPAND_NORMAL);
+ {
+ while (TREE_CODE (result) == COMPOUND_EXPR)
+ {
+ expand_expr (TREE_OPERAND (result, 0), const0_rtx, VOIDmode,
+ EXPAND_NORMAL);
+ result = TREE_OPERAND (result, 1);
+ }
+ return expand_expr (result, target, mode, EXPAND_NORMAL);
+ }
/* If DEST is not a pointer type, call the normal function. */
if (dest_align == 0)
@@ -3204,7 +3227,15 @@ expand_builtin_strcpy (tree fndecl, tree
{
tree result = fold_builtin_strcpy (fndecl, arglist, 0);
if (result)
- return expand_expr (result, target, mode, EXPAND_NORMAL);
+ {
+ while (TREE_CODE (result) == COMPOUND_EXPR)
+ {
+ expand_expr (TREE_OPERAND (result, 0), const0_rtx, VOIDmode,
+ EXPAND_NORMAL);
+ result = TREE_OPERAND (result, 1);
+ }
+ return expand_expr (result, target, mode, EXPAND_NORMAL);
+ }
return expand_movstr (TREE_VALUE (arglist),
TREE_VALUE (TREE_CHAIN (arglist)),
@@ -3330,7 +3361,15 @@ expand_builtin_strncpy (tree exp, rtx ta
tree result = fold_builtin_strncpy (fndecl, arglist, slen);
if (result)
- return expand_expr (result, target, mode, EXPAND_NORMAL);
+ {
+ while (TREE_CODE (result) == COMPOUND_EXPR)
+ {
+ expand_expr (TREE_OPERAND (result, 0), const0_rtx, VOIDmode,
+ EXPAND_NORMAL);
+ result = TREE_OPERAND (result, 1);
+ }
+ return expand_expr (result, target, mode, EXPAND_NORMAL);
+ }
/* We must be passed a constant len and src parameter. */
if (!host_integerp (len, 1) || !slen || !host_integerp (slen, 1))
@@ -7982,78 +8021,121 @@ fold_builtin_exponent (tree fndecl, tree
return 0;
}
-/* Fold function call to builtin memcpy. Return
+/* Fold function call to builtin memset. Return
NULL_TREE if no simplification can be made. */
static tree
-fold_builtin_memcpy (tree fndecl, tree arglist)
+fold_builtin_memset (tree arglist, tree type, bool ignore)
{
- tree dest, src, len;
+ tree dest, c, len, var, ret;
+ unsigned HOST_WIDE_INT length, cval;
if (!validate_arglist (arglist,
- POINTER_TYPE, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
+ POINTER_TYPE, INTEGER_TYPE, INTEGER_TYPE, VOID_TYPE))
return 0;
dest = TREE_VALUE (arglist);
- src = TREE_VALUE (TREE_CHAIN (arglist));
+ c = TREE_VALUE (TREE_CHAIN (arglist));
len = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
+ if (! host_integerp (len, 1))
+ return 0;
+
/* If the LEN parameter is zero, return DEST. */
if (integer_zerop (len))
- return omit_one_operand (TREE_TYPE (TREE_TYPE (fndecl)), dest, src);
+ return omit_one_operand (type, dest, c);
- /* If SRC and DEST are the same (and not volatile), return DEST. */
- if (operand_equal_p (src, dest, 0))
- return omit_one_operand (TREE_TYPE (TREE_TYPE (fndecl)), dest, len);
+ if (! host_integerp (c, 1) || TREE_SIDE_EFFECTS (dest))
+ return 0;
- return 0;
+ var = dest;
+ STRIP_NOPS (var);
+ if (TREE_CODE (var) != ADDR_EXPR)
+ return 0;
+
+ var = TREE_OPERAND (var, 0);
+ if (TREE_THIS_VOLATILE (var))
+ return 0;
+
+ if (!INTEGRAL_TYPE_P (TREE_TYPE (var))
+ && !POINTER_TYPE_P (TREE_TYPE (var)))
+ return 0;
+
+ length = tree_low_cst (len, 1);
+ if (GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (var))) != length
+ || get_pointer_alignment (dest, BIGGEST_ALIGNMENT) / BITS_PER_UNIT
+ < (int) length)
+ return 0;
+
+ if (length > HOST_BITS_PER_WIDE_INT / BITS_PER_UNIT)
+ return 0;
+
+ if (integer_zerop (c))
+ cval = 0;
+ else
+ {
+ if (CHAR_BIT != 8 || BITS_PER_UNIT != 8 || HOST_BITS_PER_WIDE_INT > 64)
+ return 0;
+
+ cval = tree_low_cst (c, 1);
+ cval &= 0xff;
+ cval |= cval << 8;
+ cval |= cval << 16;
+ cval |= (cval << 31) << 1;
+ }
+
+ ret = build_int_cst_type (TREE_TYPE (var), cval);
+ ret = build2 (MODIFY_EXPR, TREE_TYPE (var), var, ret);
+ if (ignore)
+ return ret;
+
+ return omit_one_operand (type, dest, ret);
}
-/* Fold function call to builtin mempcpy. Return
+/* Fold function call to builtin memset. Return
NULL_TREE if no simplification can be made. */
static tree
-fold_builtin_mempcpy (tree arglist, tree type, int endp)
+fold_builtin_bzero (tree arglist, bool ignore)
{
- if (validate_arglist (arglist,
- POINTER_TYPE, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
- {
- tree dest = TREE_VALUE (arglist);
- tree src = TREE_VALUE (TREE_CHAIN (arglist));
- tree len = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
+ tree dest, size, newarglist;
- /* If the LEN parameter is zero, return DEST. */
- if (integer_zerop (len))
- return omit_one_operand (type, dest, src);
+ if (!validate_arglist (arglist, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
+ return 0;
- /* If SRC and DEST are the same (and not volatile), return DEST+LEN. */
- if (operand_equal_p (src, dest, 0))
- {
- if (endp == 0)
- return omit_one_operand (type, dest, len);
+ if (!ignore)
+ return 0;
- if (endp == 2)
- len = fold_build2 (MINUS_EXPR, TREE_TYPE (len), len,
- ssize_int (1));
-
- len = fold_convert (TREE_TYPE (dest), len);
- len = fold_build2 (PLUS_EXPR, TREE_TYPE (dest), dest, len);
- return fold_convert (type, len);
- }
- }
- return 0;
+ dest = TREE_VALUE (arglist);
+ size = TREE_VALUE (TREE_CHAIN (arglist));
+
+ /* New argument list transforming bzero(ptr x, int y) to
+ memset(ptr x, int 0, size_t y). This is done this way
+ so that if it isn't expanded inline, we fallback to
+ calling bzero instead of memset. */
+
+ newarglist = build_tree_list (NULL_TREE, fold_convert (sizetype, size));
+ newarglist = tree_cons (NULL_TREE, integer_zero_node, newarglist);
+ newarglist = tree_cons (NULL_TREE, dest, newarglist);
+ return fold_builtin_memset (newarglist, void_type_node, ignore);
}
-/* Fold function call to builtin memmove. Return
- NULL_TREE if no simplification can be made. */
+/* Fold function call to builtin mem{{,p}cpy,move}. Return
+ NULL_TREE if no simplification can be made.
+ If ENDP is 0, return DEST (like memcpy).
+ If ENDP is 1, return DEST+LEN (like mempcpy).
+ If ENDP is 2, return DEST+LEN-1 (like stpcpy).
+ If ENDP is 3, return DEST, additionally *SRC and *DEST may overlap
+ (memmove). */
static tree
-fold_builtin_memmove (tree arglist, tree type)
+fold_builtin_memory_op (tree arglist, tree type, bool ignore, int endp)
{
- tree dest, src, len;
+ tree dest, src, len, destvar, srcvar, expr;
+ unsigned HOST_WIDE_INT length;
- if (!validate_arglist (arglist,
- POINTER_TYPE, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
+ if (! validate_arglist (arglist,
+ POINTER_TYPE, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
return 0;
dest = TREE_VALUE (arglist);
@@ -8064,11 +8146,115 @@ fold_builtin_memmove (tree arglist, tree
if (integer_zerop (len))
return omit_one_operand (type, dest, src);
- /* If SRC and DEST are the same (and not volatile), return DEST. */
+ /* If SRC and DEST are the same (and not volatile), return
+ DEST{,+LEN,+LEN-1}. */
if (operand_equal_p (src, dest, 0))
- return omit_one_operand (type, dest, len);
+ expr = len;
+ else
+ {
+ if (! host_integerp (len, 1))
+ return 0;
- return 0;
+ if (TREE_SIDE_EFFECTS (dest) || TREE_SIDE_EFFECTS (src))
+ return 0;
+
+ destvar = dest;
+ STRIP_NOPS (destvar);
+ if (TREE_CODE (destvar) != ADDR_EXPR)
+ return 0;
+
+ destvar = TREE_OPERAND (destvar, 0);
+ if (TREE_THIS_VOLATILE (destvar))
+ return 0;
+
+ if (!INTEGRAL_TYPE_P (TREE_TYPE (destvar))
+ && !POINTER_TYPE_P (TREE_TYPE (destvar))
+ && !SCALAR_FLOAT_TYPE_P (TREE_TYPE (destvar)))
+ return 0;
+
+ srcvar = src;
+ STRIP_NOPS (srcvar);
+ if (TREE_CODE (srcvar) != ADDR_EXPR)
+ return 0;
+
+ srcvar = TREE_OPERAND (srcvar, 0);
+ if (TREE_THIS_VOLATILE (srcvar))
+ return 0;
+
+ if (!INTEGRAL_TYPE_P (TREE_TYPE (srcvar))
+ && !POINTER_TYPE_P (TREE_TYPE (srcvar))
+ && !SCALAR_FLOAT_TYPE_P (TREE_TYPE (srcvar)))
+ return 0;
+
+ length = tree_low_cst (len, 1);
+ if (GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (destvar))) != length
+ || get_pointer_alignment (dest, BIGGEST_ALIGNMENT) / BITS_PER_UNIT
+ < (int) length
+ || GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (srcvar))) != length
+ || get_pointer_alignment (src, BIGGEST_ALIGNMENT) / BITS_PER_UNIT
+ < (int) length)
+ return 0;
+
+ if ((INTEGRAL_TYPE_P (TREE_TYPE (srcvar))
+ || POINTER_TYPE_P (TREE_TYPE (srcvar)))
+ && (INTEGRAL_TYPE_P (TREE_TYPE (destvar))
+ || POINTER_TYPE_P (TREE_TYPE (destvar))))
+ expr = fold_convert (TREE_TYPE (destvar), srcvar);
+ else
+ expr = fold_build1 (VIEW_CONVERT_EXPR, TREE_TYPE (destvar), srcvar);
+ expr = build2 (MODIFY_EXPR, TREE_TYPE (destvar), destvar, expr);
+ }
+
+ if (ignore)
+ return expr;
+
+ if (endp == 0 || endp == 3)
+ return omit_one_operand (type, dest, expr);
+
+ if (expr == len)
+ expr = 0;
+
+ if (endp == 2)
+ len = fold_build2 (MINUS_EXPR, TREE_TYPE (len), len,
+ ssize_int (1));
+
+ len = fold_convert (TREE_TYPE (dest), len);
+ dest = fold_build2 (PLUS_EXPR, TREE_TYPE (dest), dest, len);
+ dest = fold_convert (type, dest);
+ if (expr)
+ dest = omit_one_operand (type, dest, expr);
+ return dest;
+}
+
+/* Fold function call to builtin bcopy. Return NULL_TREE if no
+ simplification can be made. */
+
+static tree
+fold_builtin_bcopy (tree arglist, bool ignore)
+{
+ tree src, dest, size, newarglist;
+
+ if (!validate_arglist (arglist,
+ POINTER_TYPE, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
+ return 0;
+
+ if (! ignore)
+ return 0;
+
+ src = TREE_VALUE (arglist);
+ dest = TREE_VALUE (TREE_CHAIN (arglist));
+ size = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist)));
+
+ /* New argument list transforming bcopy(ptr x, ptr y, int z) to
+ memmove(ptr y, ptr x, size_t z). This is done this way
+ so that if it isn't expanded inline, we fallback to
+ calling bcopy instead of memmove. */
+
+ newarglist = build_tree_list (NULL_TREE, fold_convert (sizetype, size));
+ newarglist = tree_cons (NULL_TREE, src, newarglist);
+ newarglist = tree_cons (NULL_TREE, dest, newarglist);
+
+ return fold_builtin_memory_op (newarglist, void_type_node, true, /*endp=*/3);
}
/* Fold function call to builtin strcpy. If LEN is not NULL, it represents
@@ -9039,14 +9225,23 @@ fold_builtin_1 (tree fndecl, tree arglis
case BUILT_IN_PARITYLL:
return fold_builtin_bitop (fndecl, arglist);
+ case BUILT_IN_MEMSET:
+ return fold_builtin_memset (arglist, type, ignore);
+
case BUILT_IN_MEMCPY:
- return fold_builtin_memcpy (fndecl, arglist);
+ return fold_builtin_memory_op (arglist, type, ignore, /*endp=*/0);
case BUILT_IN_MEMPCPY:
- return fold_builtin_mempcpy (arglist, type, /*endp=*/1);
+ return fold_builtin_memory_op (arglist, type, ignore, /*endp=*/1);
case BUILT_IN_MEMMOVE:
- return fold_builtin_memmove (arglist, type);
+ return fold_builtin_memory_op (arglist, type, ignore, /*endp=*/3);
+
+ case BUILT_IN_BZERO:
+ return fold_builtin_bzero (arglist, ignore);
+
+ case BUILT_IN_BCOPY:
+ return fold_builtin_bcopy (arglist, ignore);
case BUILT_IN_SIGNBIT:
case BUILT_IN_SIGNBITF:

View File

@ -1,92 +0,0 @@
2006-07-06 Alexandre Oliva <aoliva@redhat.com>
PR c/27898
* c-typeck.c (tagged_types_tu_compatible_p): Enable exact
matches between anonymous union fields.
2006-08-18 Jakub Jelinek <jakub@redhat.com>
PR c/27898
* gcc.dg/pr27898.c: New test.
--- gcc/testsuite/gcc.dg/pr27898.c.jj 2006-08-18 09:19:33.000000000 +0200
+++ gcc/testsuite/gcc.dg/pr27898.c 2006-08-18 09:19:27.000000000 +0200
@@ -0,0 +1,8 @@
+/* PR c/27898 */
+/* { dg-do compile } */
+/* { dg-options "--combine" } */
+/* { dg-additional-sources "pr27898.c" } */
+
+union u { struct { int i; }; };
+
+extern int foo (union u *);
--- gcc/c-typeck.c.jj 2006-08-17 09:55:11.000000000 +0200
+++ gcc/c-typeck.c 2006-08-18 09:14:15.000000000 +0200
@@ -1072,11 +1072,12 @@ tagged_types_tu_compatible_p (tree t1, t
{
int result;
-
- if (DECL_NAME (s1) == NULL
- || DECL_NAME (s1) != DECL_NAME (s2))
+ if (DECL_NAME (s1) != DECL_NAME (s2))
break;
result = comptypes_internal (TREE_TYPE (s1), TREE_TYPE (s2));
+
+ if (result != 1 && !DECL_NAME (s1))
+ break;
if (result == 0)
{
tu->val = 0;
@@ -1103,28 +1104,31 @@ tagged_types_tu_compatible_p (tree t1, t
{
bool ok = false;
- if (DECL_NAME (s1) != NULL)
- for (s2 = TYPE_FIELDS (t2); s2; s2 = TREE_CHAIN (s2))
- if (DECL_NAME (s1) == DECL_NAME (s2))
- {
- int result;
- result = comptypes_internal (TREE_TYPE (s1), TREE_TYPE (s2));
- if (result == 0)
- {
- tu->val = 0;
- return 0;
- }
- if (result == 2)
- needs_warning = true;
-
- if (TREE_CODE (s1) == FIELD_DECL
- && simple_cst_equal (DECL_FIELD_BIT_OFFSET (s1),
- DECL_FIELD_BIT_OFFSET (s2)) != 1)
- break;
+ for (s2 = TYPE_FIELDS (t2); s2; s2 = TREE_CHAIN (s2))
+ if (DECL_NAME (s1) == DECL_NAME (s2))
+ {
+ int result;
+
+ result = comptypes_internal (TREE_TYPE (s1), TREE_TYPE (s2));
- ok = true;
+ if (result != 1 && !DECL_NAME (s1))
+ continue;
+ if (result == 0)
+ {
+ tu->val = 0;
+ return 0;
+ }
+ if (result == 2)
+ needs_warning = true;
+
+ if (TREE_CODE (s1) == FIELD_DECL
+ && simple_cst_equal (DECL_FIELD_BIT_OFFSET (s1),
+ DECL_FIELD_BIT_OFFSET (s2)) != 1)
break;
- }
+
+ ok = true;
+ break;
+ }
if (!ok)
{
tu->val = 0;

View File

@ -1,19 +0,0 @@
2007-05-02 Jakub Jelinek <jakub@redhat.com>
PR libgomp/28482
* configure.tgt: Don't link with -Wl,-z,nodlopen even on Linux.
--- libgomp/configure.tgt.jj 2007-04-20 12:55:40.000000000 +0200
+++ libgomp/configure.tgt 2007-05-02 17:32:15.000000000 +0200
@@ -11,11 +11,8 @@
# XLDFLAGS Add extra link flags to use.
# Optimize TLS usage by avoiding the overhead of dynamic allocation.
-# This does require that the library be present during process
-# startup, so mark the library as not to be dlopened.
if test $have_tls = yes && test "$with_gnu_ld" = "yes"; then
XCFLAGS="${XCFLAGS} -ftls-model=initial-exec"
- XLDFLAGS="${XLDFLAGS} -Wl,-z,nodlopen"
fi
# Since we require POSIX threads, assume a POSIX system by default.

View File

@ -1,84 +0,0 @@
2006-08-16 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/28709
* macro.c (paste_tokens): Do error reporting here, use BUF with the
spelled LHS token as opposed to spelling it again.
(paste_all_tokens): Don't report errors here, just break on failure.
* gcc.dg/cpp/paste14.c: New test.
--- libcpp/macro.c.jj 2006-06-09 23:07:54.000000000 +0200
+++ libcpp/macro.c 2006-08-16 17:30:17.000000000 +0200
@@ -430,15 +430,14 @@ stringify_arg (cpp_reader *pfile, macro_
static bool
paste_tokens (cpp_reader *pfile, const cpp_token **plhs, const cpp_token *rhs)
{
- unsigned char *buf, *end;
+ unsigned char *buf, *end, *lhsend;
const cpp_token *lhs;
unsigned int len;
- bool valid;
lhs = *plhs;
len = cpp_token_len (lhs) + cpp_token_len (rhs) + 1;
buf = (unsigned char *) alloca (len);
- end = cpp_spell_token (pfile, lhs, buf, false);
+ end = lhsend = cpp_spell_token (pfile, lhs, buf, false);
/* Avoid comment headers, since they are still processed in stage 3.
It is simpler to insert a space here, rather than modifying the
@@ -455,10 +454,22 @@ paste_tokens (cpp_reader *pfile, const c
/* Set pfile->cur_token as required by _cpp_lex_direct. */
pfile->cur_token = _cpp_temp_token (pfile);
*plhs = _cpp_lex_direct (pfile);
- valid = pfile->buffer->cur == pfile->buffer->rlimit;
- _cpp_pop_buffer (pfile);
+ if (pfile->buffer->cur != pfile->buffer->rlimit)
+ {
+ _cpp_pop_buffer (pfile);
+ _cpp_backup_tokens (pfile, 1);
+ *lhsend = '\0';
- return valid;
+ /* Mandatory error for all apart from assembler. */
+ if (CPP_OPTION (pfile, lang) != CLK_ASM)
+ cpp_error (pfile, CPP_DL_ERROR,
+ "pasting \"%s\" and \"%s\" does not give a valid preprocessing token",
+ buf, cpp_token_as_text (pfile, rhs));
+ return false;
+ }
+
+ _cpp_pop_buffer (pfile);
+ return true;
}
/* Handles an arbitrarily long sequence of ## operators, with initial
@@ -490,17 +501,7 @@ paste_all_tokens (cpp_reader *pfile, con
abort ();
if (!paste_tokens (pfile, &lhs, rhs))
- {
- _cpp_backup_tokens (pfile, 1);
-
- /* Mandatory error for all apart from assembler. */
- if (CPP_OPTION (pfile, lang) != CLK_ASM)
- cpp_error (pfile, CPP_DL_ERROR,
- "pasting \"%s\" and \"%s\" does not give a valid preprocessing token",
- cpp_token_as_text (pfile, lhs),
- cpp_token_as_text (pfile, rhs));
- break;
- }
+ break;
}
while (rhs->flags & PASTE_LEFT);
--- gcc/testsuite/gcc.dg/cpp/paste14.c.jj 2006-08-16 16:51:45.000000000 +0200
+++ gcc/testsuite/gcc.dg/cpp/paste14.c 2006-08-16 16:53:30.000000000 +0200
@@ -0,0 +1,7 @@
+/* PR preprocessor/28709 */
+/* { dg-do preprocess } */
+
+#define foo - ## >>
+foo /* { dg-error "pasting \"-\" and \">>\"" } */
+#define bar = ## ==
+bar /* { dg-error "pasting \"=\" and \"==\"" } */

View File

@ -1,64 +0,0 @@
2006-08-17 Jakub Jelinek <jakub@redhat.com>
PR middle-end/28755
* expr.c (expand_expr_real_1) <case ARRAY_REF>: Make sure
the const array field optimization doesn't create an extra constant
MEM.
* gcc.dg/pr28755.c: New test.
--- gcc/expr.c.jj 2006-08-09 17:54:03.000000000 +0200
+++ gcc/expr.c 2006-08-17 13:00:33.000000000 +0200
@@ -7105,13 +7105,25 @@ expand_expr_real_1 (tree exp, rtx target
field, value)
if (tree_int_cst_equal (field, index))
{
- if (!TREE_SIDE_EFFECTS (value))
+ if (TREE_SIDE_EFFECTS (value))
+ break;
+
+ if (TREE_CODE (value) != CONSTRUCTOR)
return expand_expr (fold (value), target, tmode,
modifier);
+
+ /* For CONSTRUCTOR this optimization is not always
+ a win - if expand_expr creates a temporary
+ constant, we just waste unnecessarily rodata
+ space. */
+ temp = expand_expr (value, target, tmode, modifier);
+ if (temp == target
+ || (temp && GET_CODE (temp) != MEM))
+ return temp;
break;
}
}
- else if(TREE_CODE (init) == STRING_CST)
+ else if (TREE_CODE (init) == STRING_CST)
{
tree index1 = index;
tree low_bound = array_ref_low_bound (exp);
--- gcc/testsuite/gcc.dg/pr28755.c.jj 2006-08-17 12:59:57.000000000 +0200
+++ gcc/testsuite/gcc.dg/pr28755.c 2006-08-17 12:59:57.000000000 +0200
@@ -0,0 +1,22 @@
+/* PR middle-end/28755 */
+/* { dg-do compile } */
+/* { dg-options "-Os" } */
+/* { dg-final { scan-assembler-times "2112543726\|7deadbee" 2 } } */
+
+struct S
+{
+ void *s1;
+ unsigned s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;
+};
+
+const struct S array[] = {
+ { (void *) 0, 60, 640, 2112543726, 39682, 48, 16, 33, 10, 96, 2, 0, 0, 4 },
+ { (void *) 0, 60, 2112543726, 192, 18251, 16, 33, 10, 96, 2, 0, 0, 4, 212 }
+};
+
+void
+foo (struct S *x)
+{
+ x[0] = array[0];
+ x[5] = array[1];
+}

View File

@ -1,76 +0,0 @@
2006-09-16 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/29059
* tree-ssa-propagate.c (set_rhs): Reject MODIFY_EXPR right
away for the expr argument.
* gcc.c-torture/compile/strcpy-1.c: New test.
* gcc.c-torture/compile/strcpy-2.c: New test.
* gcc.c-torture/compile/memcpy-1.c: New test.
* gcc.c-torture/compile/memcpy-2.c: New test.
--- gcc/tree-ssa-propagate.c (revision 116996)
+++ gcc/tree-ssa-propagate.c (revision 116997)
@@ -588,7 +588,8 @@ set_rhs (tree *stmt_p, tree expr)
&& !is_gimple_val (TREE_OPERAND (TREE_OPERAND (expr, 0), 1)))
return false;
}
- else if (code == COMPOUND_EXPR)
+ else if (code == COMPOUND_EXPR
+ || code == MODIFY_EXPR)
return false;
switch (TREE_CODE (stmt))
--- gcc/testsuite/gcc.c-torture/compile/strcpy-1.c (revision 0)
+++ gcc/testsuite/gcc.c-torture/compile/strcpy-1.c (revision 116997)
@@ -0,0 +1,15 @@
+
+
+typedef struct
+{
+ char str[20];
+}STACK;
+STACK stack[15];
+int level;
+rezero ()
+{
+ level = 0;
+ __builtin_strcpy (stack[level].str, "");
+}
+
+
--- gcc/testsuite/gcc.c-torture/compile/strcpy-2.c (revision 0)
+++ gcc/testsuite/gcc.c-torture/compile/strcpy-2.c (revision 116997)
@@ -0,0 +1,7 @@
+char wrkstr_un[270];
+extern void
+LoadUserAlph (char *s)
+{
+ s = &wrkstr_un[0];
+ __builtin_strcpy (s, "");
+};
--- gcc/testsuite/gcc.c-torture/compile/memcpy-1.c (revision 0)
+++ gcc/testsuite/gcc.c-torture/compile/memcpy-1.c (revision 116997)
@@ -0,0 +1,9 @@
+static const char OggFLAC__MAPPING_VERSION_MAJOR = 1;
+void f(void)
+{
+ char synthetic_first_packet_body[10];
+ char *b = &synthetic_first_packet_body[4];
+ __builtin_memcpy (b, &OggFLAC__MAPPING_VERSION_MAJOR, (1u));
+}
+
+
--- gcc/testsuite/gcc.c-torture/compile/memcpy-2.c (revision 0)
+++ gcc/testsuite/gcc.c-torture/compile/memcpy-2.c (revision 116997)
@@ -0,0 +1,10 @@
+static const char OggFLAC__MAPPING_VERSION_MAJOR = 1;
+void f(void)
+{
+ char synthetic_first_packet_body[10];
+ char *b = synthetic_first_packet_body;
+ b+=4u;
+ __builtin_memcpy (b, &OggFLAC__MAPPING_VERSION_MAJOR, (1u));
+}
+
+

View File

@ -1,110 +0,0 @@
2006-09-28 Jakub Jelinek <jakub@redhat.com>
PR middle-end/29272
* builtins.c (fold_builtin_memset, fold_builtin_memory_op): Restrict
single entry optimization to variables and components thereof.
* gcc.c-torture/execute/20060930-1.c: New test.
--- gcc/builtins.c.jj 2006-09-22 10:29:55.000000000 +0200
+++ gcc/builtins.c 2006-09-28 20:31:30.000000000 +0200
@@ -7905,7 +7905,7 @@ fold_builtin_exponent (tree fndecl, tree
static tree
fold_builtin_memset (tree arglist, tree type, bool ignore)
{
- tree dest, c, len, var, ret;
+ tree dest, c, len, var, ret, inner;
unsigned HOST_WIDE_INT length, cval;
if (!validate_arglist (arglist,
@@ -7939,6 +7939,15 @@ fold_builtin_memset (tree arglist, tree
&& !POINTER_TYPE_P (TREE_TYPE (var)))
return 0;
+ /* If var is a VAR_DECL or a component thereof,
+ we can use its alias set, otherwise we'd need to make
+ sure we go through alias set 0. */
+ inner = var;
+ while (handled_component_p (inner))
+ inner = TREE_OPERAND (inner, 0);
+ if (! SSA_VAR_P (inner))
+ return 0;
+
length = tree_low_cst (len, 1);
if (GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (var))) != length
|| get_pointer_alignment (dest, BIGGEST_ALIGNMENT) / BITS_PER_UNIT
@@ -8009,7 +8018,7 @@ fold_builtin_bzero (tree arglist, bool i
static tree
fold_builtin_memory_op (tree arglist, tree type, bool ignore, int endp)
{
- tree dest, src, len, destvar, srcvar, expr;
+ tree dest, src, len, destvar, srcvar, expr, inner;
unsigned HOST_WIDE_INT length;
if (! validate_arglist (arglist,
@@ -8050,6 +8059,15 @@ fold_builtin_memory_op (tree arglist, tr
&& !SCALAR_FLOAT_TYPE_P (TREE_TYPE (destvar)))
return 0;
+ /* If destvar is a VAR_DECL or a component thereof,
+ we can use its alias set, otherwise we'd need to make
+ sure we go through alias set 0. */
+ inner = destvar;
+ while (handled_component_p (inner))
+ inner = TREE_OPERAND (inner, 0);
+ if (! SSA_VAR_P (inner))
+ return 0;
+
srcvar = src;
STRIP_NOPS (srcvar);
if (TREE_CODE (srcvar) != ADDR_EXPR)
@@ -8064,6 +8082,15 @@ fold_builtin_memory_op (tree arglist, tr
&& !SCALAR_FLOAT_TYPE_P (TREE_TYPE (srcvar)))
return 0;
+ /* If srcvar is a VAR_DECL or a component thereof,
+ we can use its alias set, otherwise we'd need to make
+ sure we go through alias set 0. */
+ inner = srcvar;
+ while (handled_component_p (inner))
+ inner = TREE_OPERAND (inner, 0);
+ if (! SSA_VAR_P (inner))
+ return 0;
+
length = tree_low_cst (len, 1);
if (GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (destvar))) != length
|| get_pointer_alignment (dest, BIGGEST_ALIGNMENT) / BITS_PER_UNIT
--- gcc/testsuite/gcc.c-torture/execute/20060930-1.c.jj 2006-09-30 21:10:17.000000000 +0200
+++ gcc/testsuite/gcc.c-torture/execute/20060930-1.c 2006-09-30 21:09:33.000000000 +0200
@@ -0,0 +1,31 @@
+/* PR middle-end/29272 */
+
+extern void abort (void);
+
+struct S { struct S *s; } s;
+struct T { struct T *t; } t;
+
+static inline void
+foo (void *s)
+{
+ struct T *p = s;
+ __builtin_memcpy (&p->t, &t.t, sizeof (t.t));
+}
+
+void *
+__attribute__((noinline))
+bar (void *p, struct S *q)
+{
+ q->s = &s;
+ foo (p);
+ return q->s;
+}
+
+int
+main (void)
+{
+ t.t = &t;
+ if (bar (&s, &s) != (void *) &t)
+ abort ();
+ return 0;
+}

View File

@ -1,93 +0,0 @@
2006-10-18 Jan Hubicka <jh@suse.cz>
PR middle-end/29299
* cfgexpand.c (expand_used_vars_for_block): Vars marked used by user
are used.
2006-10-15 Jan Hubicka <jh@suse.cz>
Richard Guenther <rguenther@suse.de>
PR middle-end/29299
* cgraphunit.c (cgraph_finalize_compilation_unit): Call
process_function_and_variable_attributes on all variables, including
those discovered during cgraph construction phase.
* gcc.dg/pr29299.c: New testcase.
--- gcc/cgraphunit.c (revision 117745)
+++ gcc/cgraphunit.c (revision 117863)
@@ -1055,6 +1055,7 @@ cgraph_finalize_compilation_unit (void)
/* Keep track of already processed nodes when called multiple times for
intermodule optimization. */
static struct cgraph_node *first_analyzed;
+ struct cgraph_node *first_processed = first_analyzed;
static struct cgraph_varpool_node *first_analyzed_var;
if (errorcount || sorrycount)
@@ -1077,7 +1078,10 @@ cgraph_finalize_compilation_unit (void)
}
timevar_push (TV_CGRAPH);
- process_function_and_variable_attributes (first_analyzed, first_analyzed_var);
+ process_function_and_variable_attributes (first_processed,
+ first_analyzed_var);
+ first_processed = cgraph_nodes;
+ first_analyzed_var = cgraph_varpool_nodes;
cgraph_varpool_analyze_pending_decls ();
if (cgraph_dump_file)
{
@@ -1119,11 +1123,16 @@ cgraph_finalize_compilation_unit (void)
if (!edge->callee->reachable)
cgraph_mark_reachable_node (edge->callee);
+ /* We finalize local static variables during constructing callgraph
+ edges. Process their attributes too. */
+ process_function_and_variable_attributes (first_processed,
+ first_analyzed_var);
+ first_processed = cgraph_nodes;
+ first_analyzed_var = cgraph_varpool_nodes;
cgraph_varpool_analyze_pending_decls ();
}
/* Collect entry points to the unit. */
-
if (cgraph_dump_file)
{
fprintf (cgraph_dump_file, "Unit entry points:");
@@ -1163,7 +1172,6 @@ cgraph_finalize_compilation_unit (void)
dump_cgraph (cgraph_dump_file);
}
first_analyzed = cgraph_nodes;
- first_analyzed_var = cgraph_varpool_nodes;
ggc_collect ();
timevar_pop (TV_CGRAPH);
}
--- gcc/cfgexpand.c (revision 117745)
+++ gcc/cfgexpand.c (revision 117863)
@@ -764,7 +764,12 @@ expand_used_vars_for_block (tree block,
/* Expand all variables at this level. */
for (t = BLOCK_VARS (block); t ; t = TREE_CHAIN (t))
- if (TREE_USED (t))
+ if (TREE_USED (t)
+ /* Force local static variables to be output when marked by
+ used attribute. For unit-at-a-time, cgraph code already takes
+ care of this. */
+ || (!flag_unit_at_a_time && TREE_STATIC (t)
+ && DECL_PRESERVE_P (t)))
expand_one_var (t, toplevel);
this_sv_num = stack_vars_num;
--- gcc/testsuite/gcc.dg/pr29299.c (revision 0)
+++ gcc/testsuite/gcc.dg/pr29299.c (revision 117863)
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O" } */
+
+static int bof __attribute__((used));
+int foo()
+{
+ static int barbarbarbar __attribute__((used));
+};
+
+/* { dg-final { scan-assembler "barbarbarbar" } } */

View File

@ -1,113 +0,0 @@
2007-03-30 Jason Merrill <jason@redhat.com>
PR c++/31187
* typeck.c (cp_type_readonly): New fn.
* cp-tree.h: Declare it.
* decl.c (start_decl): Set implicit DECL_THIS_STATIC here.
(cp_finish_decl): Not here.
2007-04-02 Jason Merrill <jason@redhat.com>
PR c++/31187
* g++.dg/ext/visibility/anon3.C: New test.
--- gcc/cp/typeck.c (revision 123431)
+++ gcc/cp/typeck.c (revision 123432)
@@ -6897,6 +6897,16 @@ cp_type_quals (tree type)
return TYPE_QUALS (type);
}
+/* Returns nonzero if the TYPE is const from a C++ perspective: look inside
+ arrays. */
+
+bool
+cp_type_readonly (tree type)
+{
+ type = strip_array_types (type);
+ return TYPE_READONLY (type);
+}
+
/* Returns nonzero if the TYPE contains a mutable member. */
bool
--- gcc/cp/decl.c (revision 123431)
+++ gcc/cp/decl.c (revision 123432)
@@ -3817,6 +3817,7 @@ start_decl (const cp_declarator *declara
tree decl;
tree type, tem;
tree context;
+ bool was_public;
*pushed_scope_p = NULL_TREE;
@@ -3969,6 +3970,8 @@ start_decl (const cp_declarator *declara
decl);
}
+ was_public = TREE_PUBLIC (decl);
+
/* Enter this declaration into the symbol table. */
tem = maybe_push_decl (decl);
@@ -3988,6 +3991,17 @@ start_decl (const cp_declarator *declara
&& (flag_conserve_space || ! TREE_PUBLIC (tem)));
#endif
+ if (TREE_CODE (tem) == VAR_DECL
+ && DECL_NAMESPACE_SCOPE_P (tem) && !TREE_PUBLIC (tem) && !was_public
+ && !DECL_THIS_STATIC (tem) && !DECL_ARTIFICIAL (tem))
+ {
+ /* This is a const variable with implicit 'static'. Set
+ DECL_THIS_STATIC so we can tell it from variables that are
+ !TREE_PUBLIC because of the anonymous namespace. */
+ gcc_assert (cp_type_readonly (TREE_TYPE (tem)));
+ DECL_THIS_STATIC (tem) = 1;
+ }
+
if (! processing_template_decl)
start_decl_1 (tem);
@@ -5320,14 +5334,6 @@ cp_finish_decl (tree decl, tree init, bo
{
layout_var_decl (decl);
maybe_commonize_var (decl);
- if (DECL_NAMESPACE_SCOPE_P (decl) && !TREE_PUBLIC (decl)
- && !DECL_THIS_STATIC (decl) && !DECL_ARTIFICIAL (decl))
- {
- /* This is a const variable with implicit 'static'. Set
- DECL_THIS_STATIC so we can tell it from variables that are
- !TREE_PUBLIC because of the anonymous namespace. */
- DECL_THIS_STATIC (decl) = 1;
- }
}
make_rtl_for_nonlocal_decl (decl, init, asmspec);
--- gcc/cp/cp-tree.h (revision 123431)
+++ gcc/cp/cp-tree.h (revision 123432)
@@ -4742,6 +4742,7 @@ extern bool comp_ptr_ttypes_const (tree
extern int ptr_reasonably_similar (tree, tree);
extern tree build_ptrmemfunc (tree, tree, int, bool);
extern int cp_type_quals (tree);
+extern bool cp_type_readonly (tree);
extern bool cp_has_mutable_p (tree);
extern bool at_least_as_qualified_p (tree, tree);
extern void cp_apply_type_quals_to_decl (int, tree);
--- gcc/testsuite/g++.dg/ext/visibility/anon3.C (revision 0)
+++ gcc/testsuite/g++.dg/ext/visibility/anon3.C (revision 123432)
@@ -0,0 +1,16 @@
+// PR c++/31187
+// Bug: the repeated declaration was confusing the compiler into
+// thinking that foo1 had language internal linkage.
+
+class foo { };
+
+namespace
+{
+ extern foo foo1;
+ foo foo1;
+}
+
+template< foo * >
+class bar { };
+
+bar< &foo1 > bar1;

View File

@ -1,43 +0,0 @@
2007-05-01 Jakub Jelinek <jakub@redhat.com>
PR c++/31748
* semantics.c (finish_omp_clauses): Use %qD instead of %qE for
DECL_P in not a variable and appears more than once error messages.
* g++.dg/gomp/pr31748.C: New test.
--- gcc/cp/semantics.c.jj 2007-04-26 09:30:58.000000000 +0200
+++ gcc/cp/semantics.c 2007-05-01 14:22:58.000000000 +0200
@@ -3376,14 +3376,17 @@ finish_omp_clauses (tree clauses)
{
if (processing_template_decl)
break;
- error ("%qE is not a variable in clause %qs", t, name);
+ if (DECL_P (t))
+ error ("%qD is not a variable in clause %qs", t, name);
+ else
+ error ("%qE is not a variable in clause %qs", t, name);
remove = true;
}
else if (bitmap_bit_p (&generic_head, DECL_UID (t))
|| bitmap_bit_p (&firstprivate_head, DECL_UID (t))
|| bitmap_bit_p (&lastprivate_head, DECL_UID (t)))
{
- error ("%qE appears more than once in data clauses", t);
+ error ("%qD appears more than once in data clauses", t);
remove = true;
}
else
--- gcc/testsuite/g++.dg/gomp/pr31748.C.jj 2007-05-01 14:26:13.000000000 +0200
+++ gcc/testsuite/g++.dg/gomp/pr31748.C 2007-05-01 14:26:07.000000000 +0200
@@ -0,0 +1,10 @@
+// PR c++/31748
+
+struct A;
+
+void
+foo ()
+{
+#pragma omp parallel private(A) // { dg-error "struct A.*is not a variable" }
+ ;
+}

View File

@ -1,18 +0,0 @@
2006-03-09 Richard Henderson <rth@redhat.com>
Alexandre Oliva <aoliva@redhat.com>
* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Use
secure-plt-compatible load sequence to compute the GOT address
for -fPIC -msecure-plt.
--- gcc/config/rs6000/rs6000.c.orig 2006-03-09 20:02:13.000000000 -0300
+++ gcc/config/rs6000/rs6000.c 2006-03-09 22:00:43.000000000 -0300
@@ -3081,7 +3081,7 @@ rs6000_legitimize_tls_address (rtx addr,
{
rtx gsym = rs6000_got_sym ();
got = gen_reg_rtx (Pmode);
- if (flag_pic == 0)
+ if (flag_pic == 0 || (flag_pic && TARGET_SECURE_PLT))
rs6000_emit_move (got, gsym, Pmode);
else
{

View File

@ -1,73 +0,0 @@
2007-01-24 Steve LoBasso <slobasso@yahoo.com>
Paolo Carlini <pcarlini@suse.de>
* include/bits/deque.tcc (deque<>::erase(iterator, iterator)):
Fix condition.
* testsuite/23_containers/deque/modifiers/erase/3.cc: New.
--- libstdc++-v3/include/bits/deque.tcc (revision 121146)
+++ libstdc++-v3/include/bits/deque.tcc (revision 121147)
@@ -142,7 +142,7 @@ namespace _GLIBCXX_STD
const difference_type __n = __last - __first;
const difference_type __elems_before = (__first
- this->_M_impl._M_start);
- if (static_cast<size_type>(__elems_before) < (size() - __n) / 2)
+ if (static_cast<size_type>(__elems_before) <= (size() - __n) / 2)
{
std::copy_backward(this->_M_impl._M_start, __first, __last);
iterator __new_start = this->_M_impl._M_start + __n;
--- libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/3.cc (revision 0)
+++ libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/3.cc (revision 121147)
@@ -0,0 +1,52 @@
+// Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// 23.2.1.3 deque modifiers
+
+#include <deque>
+#include <testsuite_hooks.h>
+
+void erase(size_t num_elm, size_t elm_strt, size_t elm_end)
+{
+ bool test __attribute__((unused)) = true;
+ using __gnu_test::copy_tracker;
+ using __gnu_test::assignment_operator;
+
+ std::deque<copy_tracker> x(num_elm);
+ copy_tracker::reset();
+
+ x.erase(x.begin() + elm_strt, x.begin() + elm_end);
+
+ const size_t min_num_cpy = std::min(elm_strt, num_elm - elm_end);
+ VERIFY( assignment_operator::count() == min_num_cpy );
+}
+
+// http://gcc.gnu.org/ml/libstdc++/2007-01/msg00098.html
+void test01()
+{
+ for (size_t num_elm = 0; num_elm <= 10; ++num_elm)
+ for (size_t elm_strt = 0; elm_strt <= num_elm; ++elm_strt)
+ for (size_t elm_end = elm_strt; elm_end <= num_elm; ++elm_end)
+ erase(num_elm, elm_strt, elm_end);
+}
+
+int main()
+{
+ test01();
+ return 0;
+}

View File

@ -1,97 +0,0 @@
2007-04-12 Jakub Jelinek <jakub@redhat.com>
* fr.po: Use %s rather than %S.
* sr.po: Likewise.
* tr.po: Likewise.
* sv.po: Likewise.
* rw.po: Comment out translations with bogus format
strings.
--- gcc/po/fr.po (revision 123636)
+++ gcc/po/fr.po (working copy)
@@ -31416,7 +31416,7 @@ msgstr "attribut « %s » ignoré"
#~ msgstr "prise de l'adresse de la borne de l'expression d'un pointeur-vers-un membre"
#~ msgid "%s from type `%T' to type `%T' casts away constness"
-#~ msgstr "%S à partir du « %T » vers le type « %T » provoque un transtypage sans constante"
+#~ msgstr "%s à partir du « %T » vers le type « %T » provoque un transtypage sans constante"
#~ msgid "invalid reinterpret_cast from type `%T' to type `%T'"
#~ msgstr "reinterpret_cast invalide à partir du type « %T » vers le type « %T »"
--- gcc/po/sr.po (revision 123636)
+++ gcc/po/sr.po (working copy)
@@ -8516,7 +8516,7 @@ msgstr "Ð<>е могу Ñ<>е променÐ
#: fortran/symbol.c:592
#, no-c-format
msgid "Duplicate %s attribute specified at %L"
-msgstr "ДвоÑ<C2BE>Ñруки атрибут %S наведен код %L"
+msgstr "ДвоÑ<C2BE>Ñруки атрибут %s наведен код %L"
#: fortran/symbol.c:733
#, no-c-format
--- gcc/po/tr.po (revision 123636)
+++ gcc/po/tr.po (working copy)
@@ -6951,7 +6951,7 @@ msgstr "INTERFACE gövdesinde umulmadık
#: fortran/parse.c:1604
#, no-c-format
msgid "%s statement must appear in a MODULE"
-msgstr "%S deyimi bir MODULE'de görünmemeli"
+msgstr "%s deyimi bir MODULE'de görünmemeli"
#: fortran/parse.c:1611
#, no-c-format
--- gcc/po/rw.po (revision 123636)
+++ gcc/po/rw.po (working copy)
@@ -2168,8 +2168,8 @@ msgstr ""
#: tlink.c:480
#, fuzzy, c-format
-msgid "renaming .rpo file"
-msgstr "Gufungura %s%S Ibisohoka IDOSIYE"
+#~ msgid "renaming .rpo file"
+#~ msgstr "Gufungura %s%S Ibisohoka IDOSIYE"
#: tlink.c:534
#, c-format
@@ -17500,8 +17500,8 @@ msgstr "-Umutekano"
#: c-opts.c:1040
#, fuzzy, gcc-internal-format
-msgid "opening output file %s: %m"
-msgstr "Gufungura %s%S Ibisohoka IDOSIYE"
+#~ msgid "opening output file %s: %m"
+#~ msgstr "Gufungura %s%S Ibisohoka IDOSIYE"
#: c-opts.c:1045
#, fuzzy, gcc-internal-format
@@ -17515,8 +17515,8 @@ msgstr ""
#: c-opts.c:1177
#, fuzzy, gcc-internal-format
-msgid "opening dependency file %s: %m"
-msgstr "Gufungura %s%S IDOSIYE"
+#~ msgid "opening dependency file %s: %m"
+#~ msgstr "Gufungura %s%S IDOSIYE"
#: c-opts.c:1187
#, fuzzy, gcc-internal-format
--- gcc/po/sv.po 2007-02-20 22:38:45.000000000 +0100
+++ gcc/po/sv.po 2007-04-13 00:18:11.000000000 +0200
@@ -3328,7 +3328,7 @@ msgstr "ogiltig operand till %%R"
#: config/sh/sh.c:773
#, c-format
msgid "invalid operand to %%S"
-msgstr "ogiltig operand till %%R"
+msgstr "ogiltig operand till %%S"
#: config/sh/sh.c:7679
msgid "created and used with different architectures / ABIs"
@@ -8019,7 +8019,7 @@ msgstr "PROCEDURE-attribut i konflikt me
#: fortran/resolve.c:4943
#, no-c-format
msgid "Parameter array '%s' at %L cannot be automatic or assumed shape"
-msgstr "Parametervektor \"%S\" vid %L kan inte ha automatisk eller antagen form"
+msgstr "Parametervektor \"%s\" vid %L kan inte ha automatisk eller antagen form"
#: fortran/resolve.c:4955
#, no-c-format

View File

@ -1,16 +0,0 @@
2007-04-18 Andrew Haley <aph@redhat.com>
* java/lang/reflect/VMProxy.java (HAVE_NATIVE_GENERATE_PROXY_CLASS):
Set to false.
--- libjava/java/lang/reflect/VMProxy.java (revision 123861)
+++ libjava/java/lang/reflect/VMProxy.java (working copy)
@@ -65,7 +65,7 @@
* If this is true, HAVE_NATIVE_GET_PROXY_CLASS should be false.
* @see java.lang.reflect.Proxy
*/
- static boolean HAVE_NATIVE_GENERATE_PROXY_CLASS = true;
+ static boolean HAVE_NATIVE_GENERATE_PROXY_CLASS = false;
/**
* Optional native method to replace (and speed up) the pure Java

View File

@ -1,93 +0,0 @@
2006-09-18 Jakub Jelinek <jakub@redhat.com>
* builtins.c (expand_builtin, maybe_emit_chk_warning): Handle
BUILT_IN_STRNCAT_CHK.
* gcc.dg/builtin-strncat-chk-1.c: New test.
--- gcc/builtins.c.jj 2006-09-02 08:54:22.000000000 +0200
+++ gcc/builtins.c 2006-09-18 16:54:57.000000000 +0200
@@ -6437,6 +6437,7 @@ expand_builtin (tree exp, rtx target, rt
case BUILT_IN_STPCPY_CHK:
case BUILT_IN_STRNCPY_CHK:
case BUILT_IN_STRCAT_CHK:
+ case BUILT_IN_STRNCAT_CHK:
case BUILT_IN_SNPRINTF_CHK:
case BUILT_IN_VSNPRINTF_CHK:
maybe_emit_chk_warning (exp, fcode);
@@ -10128,6 +10129,11 @@ maybe_emit_chk_warning (tree exp, enum b
arg_mask = 6;
is_strlen = 1;
break;
+ case BUILT_IN_STRNCAT_CHK:
+ /* For __strncat_chk the warning will be emitted only if overflowing
+ by at least strlen (dest) + 1 bytes. */
+ arg_mask = 12;
+ break;
case BUILT_IN_STRNCPY_CHK:
arg_mask = 12;
break;
@@ -10165,6 +10171,22 @@ maybe_emit_chk_warning (tree exp, enum b
if (! len || ! host_integerp (len, 1) || tree_int_cst_lt (len, size))
return;
}
+ else if (fcode == BUILT_IN_STRNCAT_CHK)
+ {
+ tree src = TREE_VALUE (TREE_CHAIN (arglist));
+ if (! src || ! host_integerp (len, 1) || tree_int_cst_lt (len, size))
+ return;
+ src = c_strlen (src, 1);
+ if (! src || ! host_integerp (src, 1))
+ {
+ locus = EXPR_LOCATION (exp);
+ warning (0, "%Hcall to %D might overflow destination buffer",
+ &locus, get_callee_fndecl (exp));
+ return;
+ }
+ else if (tree_int_cst_lt (src, size))
+ return;
+ }
else if (! host_integerp (len, 1) || ! tree_int_cst_lt (size, len))
return;
--- gcc/testsuite/gcc.dg/builtin-strncat-chk-1.c.jj 2006-09-18 13:07:54.000000000 +0200
+++ gcc/testsuite/gcc.dg/builtin-strncat-chk-1.c 2006-09-18 16:55:09.000000000 +0200
@@ -0,0 +1,38 @@
+/* Test whether buffer overflow warnings for __strncat_chk builtin
+ are emitted properly. */
+/* { dg-do compile } */
+/* { dg-options "-O2 -std=gnu99" } */
+
+extern void abort (void);
+
+#include "../gcc.c-torture/execute/builtins/chk.h"
+
+char buf1[20];
+char *q;
+
+void
+test (int arg, ...)
+{
+ char *p = &buf1[10];
+
+ *p = 0;
+ strncat (p, "abcdefg", 9);
+ *p = 0;
+ strncat (p, "abcdefghi", 9);
+ *p = 0;
+ strncat (p, "abcdefghij", 9);
+ *p = 0;
+ strncat (p, "abcdefghi", 10);
+ *p = 0;
+ strncat (p, "abcdefghij", 10); /* { dg-warning "will always overflow" } */
+ *p = 0;
+ strncat (p, "abcdefgh", 11);
+ *p = 0;
+ strncat (p, "abcdefghijkl", 11); /* { dg-warning "will always overflow" } */
+ *p = 0;
+ strncat (p, q, 9);
+ *p = 0;
+ strncat (p, q, 10); /* { dg-warning "might overflow" } */
+ *p = 0;
+ strncat (p, q, 11); /* { dg-warning "might overflow" } */
+}

View File

@ -1,392 +0,0 @@
2006-12-08 Jakub Jelinek <jakub@redhat.com>
* g++.dg/debug/vartrack1.C: New test.
* g++.dg/opt/ifcvt1.C: New test.
2006-12-08 Alexandre Oliva <aoliva@redhat.com>
* g++.dg/template/array17.C: New test.
2006-05-05 Jakub Jelinek <jakub@redhat.com>
* gcc.dg/tls/opt-13.c: New test.
2006-04-25 Jakub Jelinek <jakub@redhat.com>
* gcc.dg/20060425-2.c: New test.
* g++.dg/opt/pr15054-2.C: New test.
2006-04-20 Jakub Jelinek <jakub@redhat.com>
* gcc.c-torture/execute/20060420-1.c: New test.
2006-04-12 Jakub Jelinek <jakub@redhat.com>
* gcc.c-torture/execute/20060412-1.c: New test.
2006-02-25 Alexandre Oliva <aoliva@redhat.com>
* gcc.target/powerpc/altivec-23.c: New test.
--- gcc/testsuite/gcc.target/powerpc/altivec-23.c 1970-01-01 00:00:00.000000000 +0000
+++ gcc/testsuite/gcc.target/powerpc/altivec-23.c 2006-02-25 04:10:36.000000000 -0300
@@ -0,0 +1,25 @@
+/* Verify that it is possible to define variables of composite types
+ containing vector types. We used to crash handling the
+ initializer of automatic ones. */
+
+/* { dg-do compile } */
+/* { dg-xfail-if "" { "powerpc-ibm-aix*" } { "-maltivec" } { "" } } */
+/* { dg-options "-maltivec -mabi=altivec" } */
+
+#include <altivec.h>
+
+typedef int bt;
+typedef vector bt vt;
+typedef struct { vt x; bt y[sizeof(vt) / sizeof (bt)]; } st;
+#define INIT { 1, 2, 3, 4 }
+
+void f ()
+{
+ vt x = INIT;
+ vt y[1] = { INIT };
+ st s = { INIT, INIT };
+}
+
+vt x = INIT;
+vt y[1] = { INIT };
+st s = { INIT, INIT };
--- gcc/testsuite/gcc.c-torture/execute/20060420-1.c.jj 2006-04-20 18:47:19.000000000 +0200
+++ gcc/testsuite/gcc.c-torture/execute/20060420-1.c 2006-04-20 19:07:20.000000000 +0200
@@ -0,0 +1,71 @@
+extern void abort (void);
+
+typedef float v4flt __attribute__ ((vector_size (16)));
+
+void __attribute__ ((noinline)) foo (float *dst, float **src, int a, int n)
+{
+ int i, j;
+ int z = sizeof (v4flt) / sizeof (float);
+ unsigned m = sizeof (v4flt) - 1;
+
+ for (j = 0; j < n && (((unsigned long) dst + j) & m); ++j)
+ {
+ float t = src[0][j];
+ for (i = 1; i < a; ++i)
+ t += src[i][j];
+ dst[j] = t;
+ }
+
+ for (; j < (n - (4 * z - 1)); j += 4 * z)
+ {
+ v4flt t0 = *(v4flt *) (src[0] + j + 0 * z);
+ v4flt t1 = *(v4flt *) (src[0] + j + 1 * z);
+ v4flt t2 = *(v4flt *) (src[0] + j + 2 * z);
+ v4flt t3 = *(v4flt *) (src[0] + j + 3 * z);
+ for (i = 1; i < a; ++i)
+ {
+ t0 += *(v4flt *) (src[i] + j + 0 * z);
+ t1 += *(v4flt *) (src[i] + j + 1 * z);
+ t2 += *(v4flt *) (src[i] + j + 2 * z);
+ t3 += *(v4flt *) (src[i] + j + 3 * z);
+ }
+ *(v4flt *) (dst + j + 0 * z) = t0;
+ *(v4flt *) (dst + j + 1 * z) = t1;
+ *(v4flt *) (dst + j + 2 * z) = t2;
+ *(v4flt *) (dst + j + 3 * z) = t3;
+ }
+ for (; j < n; ++j)
+ {
+ float t = src[0][j];
+ for (i = 1; i < a; ++i)
+ t += src[i][j];
+ dst[j] = t;
+ }
+}
+
+float buffer[64];
+
+int
+main (void)
+{
+ int i;
+ float *dst, *src[2];
+
+ dst = buffer;
+ dst += (-(long int) buffer & (16 * sizeof (float) - 1)) / sizeof (float);
+ src[0] = dst + 16;
+ src[1] = dst + 32;
+ for (i = 0; i < 16; ++i)
+ {
+ src[0][i] = (float) i + 11 * (float) i;
+ src[1][i] = (float) i + 12 * (float) i;
+ }
+ foo (dst, src, 2, 16);
+ for (i = 0; i < 16; ++i)
+ {
+ float e = (float) i + 11 * (float) i + (float) i + 12 * (float) i;
+ if (dst[i] != e)
+ abort ();
+ }
+ return 0;
+}
--- gcc/testsuite/gcc.c-torture/execute/20060412-1.c.jj 2006-04-03 11:04:53.758553500 +0200
+++ gcc/testsuite/gcc.c-torture/execute/20060412-1.c 2006-04-12 10:54:20.000000000 +0200
@@ -0,0 +1,33 @@
+extern void abort (void);
+
+struct S
+{
+ long o;
+};
+
+struct T
+{
+ long o;
+ struct S m[82];
+};
+
+struct T t;
+
+int
+main ()
+{
+ struct S *p, *q;
+
+ p = (struct S *) &t;
+ p = &((struct T *) p)->m[0];
+ q = p + 82;
+ while (--q > p)
+ q->o = -1;
+ q->o = 0;
+
+ if (q > p)
+ abort ();
+ if (q - p > 0)
+ abort ();
+ return 0;
+}
--- gcc/testsuite/g++.dg/opt/pr15054-2.C 2006-04-19 19:21:31.748476000 +0200
+++ gcc/testsuite/g++.dg/opt/pr15054-2.C 2006-04-25 15:55:07.000000000 +0200
@@ -0,0 +1,39 @@
+// PR middle-end/15054
+
+// { dg-do run }
+// { dg-options "-O2" }
+
+extern "C" void abort (void);
+
+void
+__attribute__((noinline))
+check (long x, long y)
+{
+ if (x != y)
+ abort ();
+}
+
+struct A
+{
+ A() : a(2) { check (a, 2); }
+ ~A() { check (a, 2); }
+private:
+ long a;
+};
+
+class B {
+ long b;
+ B& operator =(const B& );
+public:
+ B (long p) : b(p) { check (b, 6); }
+ B (const B& p) : b(p.b) { check (b, 6); }
+ ~B () { check (b, 6); A obj; check (b, 6); }
+ B foo() { return B(*this); }
+};
+
+int main ()
+{
+ B o(6);
+ o.foo().foo();
+ return 0;
+}
--- gcc/testsuite/gcc.dg/20060425-2.c 2004-06-24 14:04:38.000000000 -0400
+++ gcc/testsuite/gcc.dg/20060425-2.c 2006-04-25 09:15:04.000000000 -0400
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+double
+crashme (double v, double *p)
+{
+ if (v < 0. && *p == 1.)
+ v = 0.;
+ return v;
+}
--- gcc/testsuite/gcc.dg/tls/opt-13.c 2006-04-19 19:21:31.748476000 +0200
+++ gcc/testsuite/gcc.dg/tls/opt-13.c 2006-05-05 11:01:33.000000000 +0200
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+/* { dg-require-effective-target tls } */
+
+__thread struct
+{
+ int a;
+ char b[32];
+} thr;
+
+int
+main ()
+{
+ __builtin_strcpy (thr.b, "abcd");
+ return 0;
+}
--- gcc/testsuite/g++.dg/debug/vartrack1.C 2004-06-24 14:04:38.000000000 -0400
+++ gcc/testsuite/g++.dg/debug/vartrack1.C 2006-12-08 05:29:41.000000000 -0500
@@ -0,0 +1,99 @@
+// This testcase used to hang the compiler in vt_find_locations.
+// { dg-do compile }
+// { dg-options "-O2 -g" }
+
+struct S
+{
+ int a;
+ S *b, *c, *d;
+};
+
+struct T
+{
+ void f1 (S *x);
+ void f2 (S *x);
+ void f3 (S *x, S *y);
+ S *e;
+};
+
+void
+T::f3 (S *x, S *y)
+{
+ while (x != this->e && (!x || x->a == 1))
+ {
+ if (x == y->c)
+ {
+ S *w = y->d;
+ if (w && w->a == 0)
+ {
+ w->a = 1;
+ y->a = 0;
+ f2 (y);
+ w = y->d;
+ }
+ if (w && (!w->c || w->c->a == 1) && (!w->d || w->d->a == 1))
+ {
+ w->a = 0;
+ x = y;
+ y = x->b;
+ }
+ else
+ {
+ if (w && (!w->d || w->d->a == 1))
+ {
+ if (w->c)
+ w->c->a = 1;
+ w->a = 0;
+ f1 (w);
+ w = y->d;
+ }
+ if (w)
+ {
+ w->a = y->a;
+ if (w->d)
+ w->d->a = 1;
+ }
+ y->a = 1;
+ f2 (y);
+ x = e;
+ }
+ }
+ else
+ {
+ S *w = y->c;
+ if (w && w->a == 0)
+ {
+ w->a = 1;
+ y->a = 0;
+ f1 (y);
+ w = y->c;
+ }
+ if (w && (!w->c || w->c->a == 1) && (!w->d || w->d->a == 1))
+ {
+ w->a = 0;
+ x = y;
+ y = x->b;
+ }
+ else
+ {
+ if (w && (!w->c || w->c->a == 1))
+ {
+ w->a = 0;
+ if (w->d)
+ w->d->a = 1;
+ f2 (w);
+ w = y->c;
+ }
+ if (w)
+ {
+ w->a = y->a;
+ if (w->c)
+ w->c->a = 1;
+ }
+ y->a = 1;
+ f1 (y);
+ x = e;
+ }
+ }
+ }
+}
--- gcc/testsuite/g++.dg/opt/ifcvt1.C 2006-10-04 16:28:56.502613000 +0200
+++ gcc/testsuite/g++.dg/opt/ifcvt1.C 2006-12-08 12:23:23.000000000 +0100
@@ -0,0 +1,17 @@
+// { dg-do compile }
+// { dg-options "-O2 -fnon-call-exceptions" }
+
+struct S { ~S () throw () {} };
+double bar ();
+
+int
+foo ()
+{
+ S a;
+ int i = 0;
+ double c = bar ();
+ c = c < 0 ? -c : c;
+ if (c <= 1.e-8)
+ i += 24;
+ return i;
+}
--- gcc/testsuite/g++.dg/template/array17.C 2006-10-04 16:28:56.502613000 +0200
+++ gcc/testsuite/g++.dg/template/array17.C 2006-12-08 12:38:27.000000000 +0100
@@ -0,0 +1,23 @@
+// { dg-do compile }
+
+template <typename T>
+struct V {
+ T& operator[](int);
+};
+
+struct S {
+ S operator +(int);
+ template <typename T> T value();
+};
+
+template <typename T>
+void R (T v)
+{
+ v[(S() + 0).template value<int>()][0] = 0;
+}
+
+int
+main ()
+{
+ R(V<V<int> >());
+}

View File

@ -1,33 +0,0 @@
2007-05-03 Jakub Jelinek <jakub@redhat.com>
* varasm.c (align_variable): Don't increase alignment for
DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
--- gcc/varasm.c.jj 2007-04-14 14:55:25.000000000 +0200
+++ gcc/varasm.c 2007-05-03 11:23:56.000000000 +0200
@@ -1097,11 +1097,22 @@ align_variable (tree decl, bool dont_out
if (! DECL_USER_ALIGN (decl))
{
#ifdef DATA_ALIGNMENT
- align = DATA_ALIGNMENT (TREE_TYPE (decl), align);
+ unsigned int data_align = DATA_ALIGNMENT (TREE_TYPE (decl), align);
+ /* Don't increase alignment too much for TLS variables - TLS space
+ is too precious. */
+ if (! DECL_THREAD_LOCAL_P (decl) || data_align <= BITS_PER_WORD)
+ align = data_align;
#endif
#ifdef CONSTANT_ALIGNMENT
if (DECL_INITIAL (decl) != 0 && DECL_INITIAL (decl) != error_mark_node)
- align = CONSTANT_ALIGNMENT (DECL_INITIAL (decl), align);
+ {
+ unsigned int const_align = CONSTANT_ALIGNMENT (DECL_INITIAL (decl),
+ align);
+ /* Don't increase alignment too much for TLS variables - TLS space
+ is too precious. */
+ if (! DECL_THREAD_LOCAL_P (decl) || const_align <= BITS_PER_WORD)
+ align = const_align;
+ }
#endif
}

2719
gcc41.spec

File diff suppressed because it is too large Load Diff

View File

@ -1,454 +0,0 @@
#ifdef __sparc__
register void *__thread_self __asm ("g7");
#endif
#include <unistd.h>
#include <fcntl.h>
#include <syscall.h>
#if defined __i386__
# define INTERNAL_SYSCALL_DECL(err) do { } while (0)
# define INTERNAL_SYSCALL(name, err, nr, args...) \
({ \
register unsigned int resultvar; \
asm volatile ( \
"movl %1, %%eax\n\t" \
"int $0x80\n\t" \
: "=a" (resultvar) \
: "i" (__NR_##name) ASMFMT_##nr(args) : "memory", "cc"); \
(int) resultvar; })
# define INTERNAL_SYSCALL_ERROR_P(val, err) \
((unsigned int) (val) >= 0xfffff001u)
# define ASMFMT_0()
# define ASMFMT_1(arg1) \
, "b" (arg1)
# define ASMFMT_2(arg1, arg2) \
, "b" (arg1), "c" (arg2)
# define ASMFMT_3(arg1, arg2, arg3) \
, "b" (arg1), "c" (arg2), "d" (arg3)
#elif defined __x86_64__
# define INTERNAL_SYSCALL_DECL(err) do { } while (0)
# define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
({ \
unsigned long resultvar; \
LOAD_ARGS_##nr (args) \
LOAD_REGS_##nr \
asm volatile ( \
"syscall\n\t" \
: "=a" (resultvar) \
: "0" (name) ASM_ARGS_##nr : "memory", "cc", "r11", "cx"); \
(long) resultvar; })
# define INTERNAL_SYSCALL(name, err, nr, args...) \
INTERNAL_SYSCALL_NCS (__NR_##name, err, nr, ##args)
# define INTERNAL_SYSCALL_ERROR_P(val, err) \
((unsigned long) (val) >= -4095L)
# define LOAD_ARGS_0()
# define LOAD_REGS_0
# define ASM_ARGS_0
# define LOAD_ARGS_1(a1) \
long int __arg1 = (long) (a1); \
LOAD_ARGS_0 ()
# define LOAD_REGS_1 \
register long int _a1 asm ("rdi") = __arg1; \
LOAD_REGS_0
# define ASM_ARGS_1 ASM_ARGS_0, "r" (_a1)
# define LOAD_ARGS_2(a1, a2) \
long int __arg2 = (long) (a2); \
LOAD_ARGS_1 (a1)
# define LOAD_REGS_2 \
register long int _a2 asm ("rsi") = __arg2; \
LOAD_REGS_1
# define ASM_ARGS_2 ASM_ARGS_1, "r" (_a2)
# define LOAD_ARGS_3(a1, a2, a3) \
long int __arg3 = (long) (a3); \
LOAD_ARGS_2 (a1, a2)
# define LOAD_REGS_3 \
register long int _a3 asm ("rdx") = __arg3; \
LOAD_REGS_2
# define ASM_ARGS_3 ASM_ARGS_2, "r" (_a3)
#elif defined __powerpc__
# define INTERNAL_SYSCALL_DECL(err) long int err
# define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
({ \
register long int r0 __asm__ ("r0"); \
register long int r3 __asm__ ("r3"); \
register long int r4 __asm__ ("r4"); \
register long int r5 __asm__ ("r5"); \
register long int r6 __asm__ ("r6"); \
register long int r7 __asm__ ("r7"); \
register long int r8 __asm__ ("r8"); \
LOADARGS_##nr(name, args); \
__asm__ __volatile__ \
("sc\n\t" \
"mfcr %0\n\t" \
: "=&r" (r0), \
"=&r" (r3), "=&r" (r4), "=&r" (r5), \
"=&r" (r6), "=&r" (r7), "=&r" (r8) \
: ASM_INPUT_##nr \
: "r9", "r10", "r11", "r12", \
"cr0", "ctr", "memory"); \
err = r0; \
(int) r3; \
})
# define INTERNAL_SYSCALL(name, err, nr, args...) \
INTERNAL_SYSCALL_NCS (__NR_##name, err, nr, ##args)
# define INTERNAL_SYSCALL_ERROR_P(val, err) \
((void) (val), __builtin_expect ((err) & (1 << 28), 0))
# define LOADARGS_0(name, dummy) \
r0 = name
# define LOADARGS_1(name, __arg1) \
long int arg1 = (long int) (__arg1); \
LOADARGS_0(name, 0); \
r3 = arg1
# define LOADARGS_2(name, __arg1, __arg2) \
long int arg2 = (long int) (__arg2); \
LOADARGS_1(name, __arg1); \
r4 = arg2
# define LOADARGS_3(name, __arg1, __arg2, __arg3) \
long int arg3 = (long int) (__arg3); \
LOADARGS_2(name, __arg1, __arg2); \
r5 = arg3
# define ASM_INPUT_0 "0" (r0)
# define ASM_INPUT_1 ASM_INPUT_0, "1" (r3)
# define ASM_INPUT_2 ASM_INPUT_1, "2" (r4)
# define ASM_INPUT_3 ASM_INPUT_2, "3" (r5)
#elif defined __ia64__
# define DO_INLINE_SYSCALL_NCS(name, nr, args...) \
LOAD_ARGS_##nr (args) \
register long _r8 asm ("r8"); \
register long _r10 asm ("r10"); \
register long _r15 asm ("r15") = name; \
long _retval; \
LOAD_REGS_##nr \
__asm __volatile ("break 0x100000;;" \
: "=r" (_r8), "=r" (_r10), "=r" (_r15) \
ASM_OUTARGS_##nr \
: "2" (_r15) ASM_ARGS_##nr \
: "memory" ASM_CLOBBERS_##nr); \
_retval = _r8;
# define INTERNAL_SYSCALL_DECL(err) long int err
# define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
({ \
DO_INLINE_SYSCALL_NCS (name, nr, args) \
err = _r10; \
_retval; })
# define INTERNAL_SYSCALL(name, err, nr, args...) \
INTERNAL_SYSCALL_NCS (__NR_##name, err, nr, ##args)
# define INTERNAL_SYSCALL_ERROR_P(val, err) (err == -1)
# define LOAD_ARGS_0()
# define LOAD_REGS_0
# define LOAD_ARGS_1(a1) \
long _arg1 = (long) (a1); \
LOAD_ARGS_0 ()
# define LOAD_REGS_1 \
register long _out0 asm ("out0") = _arg1; \
LOAD_REGS_0
# define LOAD_ARGS_2(a1, a2) \
long _arg2 = (long) (a2); \
LOAD_ARGS_1 (a1)
# define LOAD_REGS_2 \
register long _out1 asm ("out1") = _arg2; \
LOAD_REGS_1
# define LOAD_ARGS_3(a1, a2, a3) \
long _arg3 = (long) (a3); \
LOAD_ARGS_2 (a1, a2)
# define LOAD_REGS_3 \
register long _out2 asm ("out2") = _arg3; \
LOAD_REGS_2
# define ASM_OUTARGS_0
# define ASM_OUTARGS_1 ASM_OUTARGS_0, "=r" (_out0)
# define ASM_OUTARGS_2 ASM_OUTARGS_1, "=r" (_out1)
# define ASM_OUTARGS_3 ASM_OUTARGS_2, "=r" (_out2)
# define ASM_ARGS_0
# define ASM_ARGS_1 ASM_ARGS_0, "3" (_out0)
# define ASM_ARGS_2 ASM_ARGS_1, "4" (_out1)
# define ASM_ARGS_3 ASM_ARGS_2, "5" (_out2)
# define ASM_CLOBBERS_0 ASM_CLOBBERS_1, "out0"
# define ASM_CLOBBERS_1 ASM_CLOBBERS_2, "out1"
# define ASM_CLOBBERS_2 ASM_CLOBBERS_3, "out2"
# define ASM_CLOBBERS_3 ASM_CLOBBERS_4, "out3"
# define ASM_CLOBBERS_4 ASM_CLOBBERS_5, "out4"
# define ASM_CLOBBERS_5 ASM_CLOBBERS_6, "out5"
# define ASM_CLOBBERS_6_COMMON , "out6", "out7", \
/* Non-stacked integer registers, minus r8, r10, r15. */ \
"r2", "r3", "r9", "r11", "r12", "r13", "r14", "r16", "r17", "r18", \
"r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", \
"r28", "r29", "r30", "r31", \
/* Predicate registers. */ \
"p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", \
/* Non-rotating fp registers. */ \
"f6", "f7", "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \
/* Branch registers. */ \
"b6"
# define ASM_CLOBBERS_6 ASM_CLOBBERS_6_COMMON , "b7"
#elif defined __s390__
# define INTERNAL_SYSCALL_DECL(err) do { } while (0)
# define INTERNAL_SYSCALL_DIRECT(name, err, nr, args...) \
({ \
DECLARGS_##nr(args) \
register long _ret asm("2"); \
asm volatile ( \
"svc %b1\n\t" \
: "=d" (_ret) \
: "i" (__NR_##name) ASMFMT_##nr \
: "memory" ); \
_ret; })
# define INTERNAL_SYSCALL_SVC0(name, err, nr, args...) \
({ \
DECLARGS_##nr(args) \
register unsigned long _nr asm("1") = (unsigned long)(__NR_##name); \
register long _ret asm("2"); \
asm volatile ( \
"svc 0\n\t" \
: "=d" (_ret) \
: "d" (_nr) ASMFMT_##nr \
: "memory" ); \
_ret; })
# define INTERNAL_SYSCALL(name, err, nr, args...) \
(((__NR_##name) < 256) ? \
INTERNAL_SYSCALL_DIRECT(name, err, nr, args) : \
INTERNAL_SYSCALL_SVC0(name, err,nr, args))
# define INTERNAL_SYSCALL_ERROR_P(val, err) \
((unsigned long) (val) >= -4095UL)
# define DECLARGS_0()
# define DECLARGS_1(arg1) \
register unsigned long gpr2 asm ("2") = (unsigned long)(arg1);
# define DECLARGS_2(arg1, arg2) \
DECLARGS_1(arg1) \
register unsigned long gpr3 asm ("3") = (unsigned long)(arg2);
# define DECLARGS_3(arg1, arg2, arg3) \
DECLARGS_2(arg1, arg2) \
register unsigned long gpr4 asm ("4") = (unsigned long)(arg3);
# define ASMFMT_0
# define ASMFMT_1 , "0" (gpr2)
# define ASMFMT_2 , "0" (gpr2), "d" (gpr3)
# define ASMFMT_3 , "0" (gpr2), "d" (gpr3), "d" (gpr4)
#elif defined __sparc__
# ifndef __arch64__
# define __INTERNAL_SYSCALL_STRING \
"ta 0x10;" \
"bcs,a 1f;" \
" sub %%g0, %%o0, %%o0;" \
"1:"
# define __SYSCALL_CLOBBERS "g2", "g3", "g4", "g5", "g6", \
"f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \
"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \
"f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", \
"f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", \
"cc", "memory"
# else
# define __INTERNAL_SYSCALL_STRING \
"ta 0x6d;" \
"bcs,a,pt %%xcc, 1f;" \
" sub %%g0, %%o0, %%o0;" \
"1:"
# define __SYSCALL_CLOBBERS "g2", "g3", "g4", "g5", "g6", \
"f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \
"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \
"f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", \
"f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", \
"f32", "f34", "f36", "f38", "f40", "f42", "f44", "f46", \
"f48", "f50", "f52", "f54", "f56", "f58", "f60", "f62", \
"cc", "memory"
# endif
#define INTERNAL_SYSCALL_DECL(err) do { } while (0)
#define INTERNAL_SYSCALL(name, err, nr, args...) \
inline_syscall##nr(__INTERNAL_SYSCALL_STRING, __NR_##name, args)
#define INTERNAL_SYSCALL_ERROR_P(val, err) \
((unsigned long) (val) >= -515L)
# define inline_syscall0(string,name,dummy...) \
({ \
register long __o0 __asm__ ("o0"); \
register long __g1 __asm__ ("g1") = name; \
__asm __volatile (string : "=r" (__g1), "=r" (__o0) : \
"0" (__g1) : \
__SYSCALL_CLOBBERS); \
__o0; \
})
# define inline_syscall1(string,name,arg1) \
({ \
register long __o0 __asm__ ("o0") = (long)(arg1); \
register long __g1 __asm__ ("g1") = name; \
__asm __volatile (string : "=r" (__g1), "=r" (__o0) : \
"0" (__g1), "1" (__o0) : \
__SYSCALL_CLOBBERS); \
__o0; \
})
# define inline_syscall2(string,name,arg1,arg2) \
({ \
register long __o0 __asm__ ("o0") = (long)(arg1); \
register long __o1 __asm__ ("o1") = (long)(arg2); \
register long __g1 __asm__ ("g1") = name; \
__asm __volatile (string : "=r" (__g1), "=r" (__o0) : \
"0" (__g1), "1" (__o0), "r" (__o1) : \
__SYSCALL_CLOBBERS); \
__o0; \
})
# define inline_syscall3(string,name,arg1,arg2,arg3) \
({ \
register long __o0 __asm__ ("o0") = (long)(arg1); \
register long __o1 __asm__ ("o1") = (long)(arg2); \
register long __o2 __asm__ ("o2") = (long)(arg3); \
register long __g1 __asm__ ("g1") = name; \
__asm __volatile (string : "=r" (__g1), "=r" (__o0) : \
"0" (__g1), "1" (__o0), "r" (__o1), \
"r" (__o2) : \
__SYSCALL_CLOBBERS); \
__o0; \
})
#elif defined __alpha__
# define INTERNAL_SYSCALL(name, err_out, nr, args...) \
INTERNAL_SYSCALL1(name, err_out, nr, args)
# define INTERNAL_SYSCALL1(name, err_out, nr, args...) \
INTERNAL_SYSCALL_NCS(__NR_##name, err_out, nr, args)
# define INTERNAL_SYSCALL_NCS(name, err_out, nr, args...) \
({ \
long _sc_ret, _sc_err; \
inline_syscall##nr(name, args); \
err_out = _sc_err; \
_sc_ret; \
})
# define INTERNAL_SYSCALL_DECL(err) long int err
# define INTERNAL_SYSCALL_ERROR_P(val, err) err
# define inline_syscall_clobbers \
"$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", \
"$22", "$23", "$24", "$25", "$27", "$28", "memory"
# define inline_syscall_r0_asm
# define inline_syscall_r0_out_constraint "=v"
# define inline_syscall0(name, args...) \
{ \
register long _sc_0 inline_syscall_r0_asm; \
register long _sc_19 __asm__("$19"); \
\
_sc_0 = name; \
__asm__ __volatile__ \
("callsys # %0 %1 <= %2" \
: inline_syscall_r0_out_constraint (_sc_0), \
"=r"(_sc_19) \
: "0"(_sc_0) \
: inline_syscall_clobbers, \
"$16", "$17", "$18", "$20", "$21"); \
_sc_ret = _sc_0, _sc_err = _sc_19; \
}
# define inline_syscall1(name,arg1) \
{ \
register long _sc_0 inline_syscall_r0_asm; \
register long _sc_16 __asm__("$16"); \
register long _sc_19 __asm__("$19"); \
\
_sc_0 = name; \
_sc_16 = (long) (arg1); \
__asm__ __volatile__ \
("callsys # %0 %1 <= %2 %3" \
: inline_syscall_r0_out_constraint (_sc_0), \
"=r"(_sc_19), "=r"(_sc_16) \
: "0"(_sc_0), "2"(_sc_16) \
: inline_syscall_clobbers, \
"$17", "$18", "$20", "$21"); \
_sc_ret = _sc_0, _sc_err = _sc_19; \
}
# define inline_syscall2(name,arg1,arg2) \
{ \
register long _sc_0 inline_syscall_r0_asm; \
register long _sc_16 __asm__("$16"); \
register long _sc_17 __asm__("$17"); \
register long _sc_19 __asm__("$19"); \
\
_sc_0 = name; \
_sc_16 = (long) (arg1); \
_sc_17 = (long) (arg2); \
__asm__ __volatile__ \
("callsys # %0 %1 <= %2 %3 %4" \
: inline_syscall_r0_out_constraint (_sc_0), \
"=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17) \
: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17) \
: inline_syscall_clobbers, \
"$18", "$20", "$21"); \
_sc_ret = _sc_0, _sc_err = _sc_19; \
}
# define inline_syscall3(name,arg1,arg2,arg3) \
{ \
register long _sc_0 inline_syscall_r0_asm; \
register long _sc_16 __asm__("$16"); \
register long _sc_17 __asm__("$17"); \
register long _sc_18 __asm__("$18"); \
register long _sc_19 __asm__("$19"); \
\
_sc_0 = name; \
_sc_16 = (long) (arg1); \
_sc_17 = (long) (arg2); \
_sc_18 = (long) (arg3); \
__asm__ __volatile__ \
("callsys # %0 %1 <= %2 %3 %4 %5" \
: inline_syscall_r0_out_constraint (_sc_0), \
"=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17), \
"=r"(_sc_18) \
: "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), \
"4"(_sc_18) \
: inline_syscall_clobbers, "$20", "$21"); \
_sc_ret = _sc_0, _sc_err = _sc_19; \
}
#endif
int main (int argc, char **argv)
{
const char *arg[] = { "/sbin/ldconfig", 0 };
long ret;
INTERNAL_SYSCALL_DECL (err);
ret = INTERNAL_SYSCALL (access, err, 2, arg[0], X_OK);
if (INTERNAL_SYSCALL_ERROR_P (ret, err))
INTERNAL_SYSCALL (exit, err, 1, 0);
INTERNAL_SYSCALL (execve, err, 3, arg[0], arg, &argv[argc + 1]);
INTERNAL_SYSCALL (exit, err, 1, 110);
return 110;
}
int __libc_multiple_threads __attribute__((nocommon));
int __libc_enable_asynccancel (void) { return 0; }
void __libc_disable_asynccancel (int x) { }
void __libc_csu_init (void) { }
void __libc_csu_fini (void) { }
pid_t __fork (void) { return -1; }
char thr_buf[65536];
#ifndef __powerpc__
int __libc_start_main (int (*main) (int argc, char **argv),
int argc, char **argv,
void (*init) (void), void (*fini) (void),
void (*rtld_fini) (void), void * stack_end)
#else
struct startup_info
{
void *sda_base;
int (*main) (int, char **, char **, void *);
int (*init) (int, char **, char **, void *);
void (*fini) (void);
};
int __libc_start_main (int argc, char **argv, char **ev,
void *auxvec, void (*rtld_fini) (void),
struct startup_info *stinfo,
char **stack_on_entry)
#endif
{
#if defined __ia64__ || defined __powerpc64__
register void *r13 __asm ("r13") = thr_buf + 32768;
__asm ("" : : "r" (r13));
#elif defined __sparc__
register void *g6 __asm ("g6") = thr_buf + 32768;
__thread_self = thr_buf + 32768;
__asm ("" : : "r" (g6), "r" (__thread_self));
#elif defined __s390__ && !defined __s390x__
__asm ("sar %%a0,%0" : : "d" (thr_buf + 32768));
#elif defined __s390x__
__asm ("sar %%a1,%0; srlg 0,%0,32; sar %%a0,0" : : "d" (thr_buf + 32768) : "0");
#elif defined __powerpc__ && !defined __powerpc64__
register void *r2 __asm ("r2") = thr_buf + 32768;
__asm ("" : : "r" (r2));
#endif
#ifdef __powerpc__
argc = (long)*stack_on_entry;
argv = stack_on_entry + 1;
#endif
main (argc, argv);
return 110;
}

View File

@ -1,291 +0,0 @@
.\" Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation
.\" See section COPYING for conditions for redistribution
.\"
.TH protoize 1 "8 December 2006" "GCC" "GNU"
.SH NAME
protoize, unprotoize \- automatically add or remove function prototypes
.SH SYNOPSIS
.HP 7
\fBprotoize\fR [\-CfgklNnqv] [\-B \fIDIRECTORY\fR] [\-c \fICOMPILATION-OPTIONS\fR] [\-d \fIDIRECTORY\fR] [\-i \fISTRING\fR] [\-p \fIPROGRAM\fR] [\-x \fIFILE\fR] [\fIFILE\fR...]
.HP 7
\fBunprotoize\fR [\-fkNnqv] [\-c \fICOMPILATION-OPTIONS\fR] [\-d \fIDIRECTORY\fR] [\-i \fISTRING\fR] [\-p \fIPROGRAM\fR] [\-x \fIFILE\fR] [\fIFILE\fR...]
.SH DESCRIPTION
.PP
\fBprotoize\fR is an optional part of GCC.
You can use it to add prototypes to a program,
thus converting the program to ANSI C in one respect.
The companion program
\fBunprotoize\fR does the reverse: it removes argument types from any prototypes that are found.
.PP
When you run these programs, you must specify a set of source files
as command line arguments.
The conversion programs start out by compiling these files
to see what functions they define.
The information gathered about a file
\fIFOO\fR is saved in a file named \fIFOO.X\fR.
.PP
After scanning comes the actual conversion.
The specified files are all eligible to be converted;
any files they include (whether sources or just headers) are eligible as well.
.PP
But not all the eligible files are converted.
By default,
\fBprotoize\fR and \fBunprotoize\fR
convert only source and header files in the current directory.
You can specify additional directories whose files
should be converted with the
\fB\-d\fR \fIDIRECTORY\fR option.
You can also specify particular files to exclude with the
\fB\-x\fR \fIFILE\fR option.
A file is converted if it is eligible, its directory name matches one of the
specified directory names, and its name within the directory has not
been excluded.
.PP
Basic conversion with
\fBprotoize\fR consists of rewriting most function definitions and function declarations
to specify the types of the arguments.
The only ones not rewritten are those for varargs functions.
.PP
\fBprotoize\fR optionally inserts prototype declarations at the beginning of the source file,
to make them available for any calls that precede the function's definition.
Or it can insert prototype declarations with block scope
in the blocks where undeclared functions are called.
.PP
Basic conversion with
\fBunprotoize\fR
consists of rewriting most function declarations to remove any argument types,
and rewriting function definitions to the old-style pre-ANSI form.
.PP
Both conversion programs print a warning for any function
declaration or definition that they can't convert.
You can suppress these warnings with the
\fB\-q\fR option.
.PP
The output from
\fBprotoize\fR or \fBunprotoize\fR
replaces the original source file.
The original file is renamed to a name ending with
\fI.save\fR.
If the \fI.save\fR file already exists, then the source file is simply discarded.
.PP
\fBprotoize\fR and \fBunprotoize\fR both depend on
\fBgcc\fR\|(1) to scan the program and collect information about the functions it uses.
.PP
The options are as follows:
.TP
\fB\-B\fR \fIDIRECTORY\fR
Look for the file
\fISYSCALLS.c.X\fR in \fIdirectory\fR,
instead of the usual directory (normally \fI/usr/local/lib\fR).
This file contains prototype information about standard system functions.
This option applies only to \fBprotoize\fR.
.TP
\fB\-C\fR
Rename files to end in
\fI.C\fR instead of \fI.c\fR.
This is convenient if you are converting a C program to C++.
This option applies only to
\fBprotoize\fR.
.TP
\fB\-c\fR \fICOMPILATION-OPTIONS\fR
Use \fICOMPILATION-OPTIONS\fR as the options when running \fBgcc\fR\|(1) to produce the
\fI.X\fR files.
The special option \fB\-aux-info\fR is always passed in addition, to tell gcc to write a
\fI.X\fR file.
Note that the compilation options must be given as a single argument to
\fBprotoize\fR or \fBunprotoize\fR.
If you want to specify several gcc options, you must quote the entire set of
compilation options to make them a single word in the shell.
There are certain gcc arguments that you cannot use, because they
would produce the wrong kind of output.
These include
\fB\-g\fR, \fB\-O\fR, \fB\-c\fR, \fB\-S\fR,\fB\-o\fR.
If you include these in the \fICOMPILATION-OPTIONS\fR, they are ignored.
.TP
\fB\-d\fR \fIDIRECTORY\fR
Specify additional directories whose files should be converted.
.TP
\fB\-g\fR
Add explicit global declarations.
This means inserting explicit declarations at the beginning of each
source file for each function that is called in the file and was not declared.
These declarations precede the first function definition that contains a
call to an undeclared function.
This option applies only to
.\fBprotoize\fR.
.TP
\fB\-i\fR \fISTRING\fR
Indent old-style parameter declarations with the string
\fISTRING\fR.
This option applies only to
\fBprotoize\fR.
\fBunprotoize\fR converts prototyped function definitions to old-style
function definitions, where the arguments are declared between the
argument list and the initial
\fB{\fR.
By default,
\fBunprotoize\fR uses five spaces as the indentation.
If you want to indent with just one space instead, use
\fB\-i " "\fR.
.TP
\fB\-k\fR
Keep the
\fI.X\fR files.
Normally, they are deleted after conversion is finished.
.TP
\fB\-l\fR
Add explicit local declarations.
\fBprotoize\fR with
\fB\-l\fR inserts a prototype declaration for each function in each block which calls
the function without any declaration.
This option applies only to
\fBprotoize\fR.
.TP
\fB\-N\fR
Make no \fI.save\fR files.
The original files are simply deleted.
Use this option with caution.
.TP
\fB\-n\fR
Make no real changes.
This mode just prints information about the conversions
that would have been done without
\fB\-n\fR.
.TP
\fB\-p\fR \fIPROGRAM\fR
Use the program
\fBPROGRAM\fR as the compiler.
Normally, the name
\fBgcc\fR is used.
.TP
\fB\-q\fR
Work quietly.
Most warnings are suppressed.
.TP
\fB\-v\fR
Print the version number, just like
\fB\-v\fR for gcc.
.TP
\fB\-x\fR \fBFILE\fR
List of files to exclude from the conversion process.
.PP
If you need special compiler options to compile one of your program's
source files, then you should generate that file's
\fI.X\fR file specially, by running gcc on that source file with
the appropriate options and the option
\fB\-aux-info\fR.
Then run
\fBprotoize\fR on the entire set of files.
\fBprotoize\fR will use the existing
\fI.X\fR file because it is newer than the source file.
For example:
.PP
.DL $ gcc -Dfoo=bar file1.c -aux-info
.DL $ protoize *.c
.PP
You need to include the special files along with the rest in the
\fBprotoize\fR command, even though their
\fI.X\fR files already exist, because otherwise they won't get converted.
.PP
.SH SEE ALSO
\fBgcc\fR\|(1), and the Info entry for \fBgcc\fR, particularly
\fBRunning protoize\fR section.
.SH HISTORY
Ron Guilmette implemented the
\fBprotoize\fR and \fBunprotoize\fR tools.
.SH AUTHORS
See the GCC manual for the contributors to GCC.
.SH CAVEATS
The conversion programs \fBprotoize\fR and \fBunprotoize\fR
can sometimes change a source file in a way that won't work
unless you rearrange it.
.PP
\fBprotoize\fR can insert references to a type name or type tag before
the definition, or in a file where they are not defined.
.PP
If this happens, compiler error messages should indicate where the
new references are, so fixing the file by hand is straightforward.
.PP
There are some C constructs which \fBprotoize\fR
cannot figure out.
For example, it can't determine argument types for declaring a
pointer-to-function variable; this must be done by hand. \fBprotoize\fR
inserts a comment containing \fB???\fR each time it finds such a variable;
all such variables can be found by searching for this string.
ANSI C does not require declaring the argument types of
pointer-to-function types.
.PP
Using \fBunprotoize\fR can easily introduce bugs.
If the program relied on prototypes to bring about conversion of arguments,
these conversions will not take place in the program without prototypes.
One case in which you can be sure \fBunprotoize\fR
is safe is when you are removing prototypes that were made with
\fBprotoize\fR; if the program worked before without any prototypes,
it will work again without them.
.PP
You can find all the places where this problem might occur by
compiling the program with the \fB\-Wconversion\fR option.
It prints a warning whenever an argument is converted.
.PP
Both conversion programs can be confused if there are macro calls
in and around the text to be converted.
In other words, the standard syntax for a declaration or definition
must not result from expanding a macro.
This problem is inherent in the design of C and cannot be fixed.
If only a few functions have confusing macro calls,
you can easily convert them manually.
.PP
\fBprotoize\fR cannot get the argument types for a function whose definition was not
actually compiled due to preprocessing conditionals.
When this happens, \fBprotoize\fR changes nothing in regard to such a function.
\fBprotoize\fR tries to detect such instances and warn about them.
.PP
You can generally work around this problem by using
\fBprotoize\fR step by step, each time specifying a different set of
\fB\-D\fR options for compilation, until all of the functions have been converted.
There is no automatic way to verify that you have got them all, however.
.PP
Confusion may result if there is an occasion to convert a function
declaration or definition in a region of source code where there
is more than one formal parameter list present.
Thus, attempts to convert code containing multiple (conditionally compiled)
versions of a single function header (in the same vicinity)
may not produce the desired (or expected) results.
.PP
If you plan on converting source files which contain such code,
it is recommended that you first make sure that each conditionally
compiled region of source code which contains an alternative
function header also contains at least one additional follower
token (past the final right parenthesis of the function header).
This should circumvent the problem.
.PP
\fBunprotoize\fR can become confused when trying to convert a function
definition or declaration which contains a declaration for a
pointer-to-function formal argument which has the same name as the
function being defined or declared.
We recommand you avoid such choices of formal parameter names.
.PP
It might be necessary to correct some of the indentation by hand and
break long lines.
(The conversion programs don't write lines longer than eighty characters
in any case.)
.SH BUGS
For instructions on reporting bugs, see the GCC manual.
.SH COPYING
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
.PP
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
.PP
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be included in
translations approved by the Free Software Foundation instead of in
the original English.

View File

@ -1 +1,3 @@
f592f2e4d5779b970a7050a864131e69 gcc-4.1.2-20070503.tar.bz2
SHA512 (gcc-10.0.1-20200216.tar.xz) = 56507e273b00e85ed4145e80df65d9b4e4791f23e7cb5d931f85b9420cbf3a7125ba49978dc73c2987c0a6101f741dc5a60a08cb3346d4c5082400cbcfcdd008
SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 9ceea0b883185fe489724d54a7e909bb6ed4785fcadf80162033dc6a133e2657337175601278e4155d1f8fac275ff9c8a02572aea876166c608774c809f832e9
SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7

7
update-gcc.sh Executable file
View File

@ -0,0 +1,7 @@
#!/bin/sh
[ -d gcc-dir.tmp ] && echo gcc-dir.tmp already exists && exit 1
git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp
git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1
d=`date --iso | sed 's/-//g'`
git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-10.0.1-$d/ $1 | xz -9e > gcc-10.0.1-$d.tar.xz
rm -rf gcc-dir.tmp