mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 12:00:03 -05:00
Compare commits
466 Commits
devel/c++-
...
releases/e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
39dd4ec572 | ||
|
|
05c82e09de | ||
|
|
54c256f3bb | ||
|
|
60aadc205a | ||
|
|
3c674cd258 | ||
|
|
420a0fef08 | ||
|
|
b4eef00864 | ||
|
|
c451b7af55 | ||
|
|
b7e4085cb5 | ||
|
|
8f1e93eb41 | ||
|
|
13dfc36b82 | ||
|
|
08f85f29f3 | ||
|
|
c451a222bc | ||
|
|
06f3c331a2 | ||
|
|
589da19d6c | ||
|
|
d743b12d65 | ||
|
|
c20caf10fa | ||
|
|
1a8154138a | ||
|
|
3f462aa49a | ||
|
|
4d7761c103 | ||
|
|
c0f9bcf543 | ||
|
|
9de98ef0ea | ||
|
|
e4b2ca3109 | ||
|
|
753ef1cc46 | ||
|
|
467b550627 | ||
|
|
0590646a91 | ||
|
|
baa8d3ab9e | ||
|
|
77c1d679bb | ||
|
|
3e4536775e | ||
|
|
c478a154c0 | ||
|
|
d772098eae | ||
|
|
464b5afc75 | ||
|
|
e52a452768 | ||
|
|
27ab8a6426 | ||
|
|
c24aee6678 | ||
|
|
0f18ab541e | ||
|
|
685bfb8109 | ||
|
|
a9d7ff9465 | ||
|
|
6ce1fac585 | ||
|
|
1e2786a0c5 | ||
|
|
4830c7497d | ||
|
|
d41d06cbc3 | ||
|
|
2be7388ca0 | ||
|
|
dea1d02475 | ||
|
|
30b871ed83 | ||
|
|
c3d4efa2e4 | ||
|
|
7b8b104055 | ||
|
|
49969cec22 | ||
|
|
e51d42b0b0 | ||
|
|
671705c04c | ||
|
|
bbc4fb5fd1 | ||
|
|
b0759f4541 | ||
|
|
29c26b3cf0 | ||
|
|
6df7f2364d | ||
|
|
76c6669848 | ||
|
|
070a620f7e | ||
|
|
856776ffb8 | ||
|
|
208001d9e6 | ||
|
|
8e8a617081 | ||
|
|
67d8d58a2e | ||
|
|
1e823712b2 | ||
|
|
1cd1d4683e | ||
|
|
50906b399f | ||
|
|
696b936d80 | ||
|
|
7d6964b4aa | ||
|
|
cfd97c3355 | ||
|
|
1f47bc2e9c | ||
|
|
1aa8c7f505 | ||
|
|
d24f30e236 | ||
|
|
8a221f6bfd | ||
|
|
e461cdbbde | ||
|
|
331178a8a4 | ||
|
|
7a461ed20c | ||
|
|
a85cb89e62 | ||
|
|
80fd696f25 | ||
|
|
07fca381bd | ||
|
|
87d20d286e | ||
|
|
4fd20f2471 | ||
|
|
e83684e381 | ||
|
|
5d97bc9e77 | ||
|
|
d197b4ecb7 | ||
|
|
fd1486a9ad | ||
|
|
ca74ec2b42 | ||
|
|
fb2cf15517 | ||
|
|
5152744c9a | ||
|
|
f2ba9fd561 | ||
|
|
3a7d4f6d26 | ||
|
|
707bbb16a0 | ||
|
|
cdb72201e4 | ||
|
|
6fa1e8702e | ||
|
|
beb2e02146 | ||
|
|
3a104217c0 | ||
|
|
97c7a2f593 | ||
|
|
d6c698d36f | ||
|
|
a5a9eab2d9 | ||
|
|
30b346da8a | ||
|
|
c460d9b4fb | ||
|
|
63f27eb2c2 | ||
|
|
d5873b6f2f | ||
|
|
4d7863a87e | ||
|
|
bedf39fadd | ||
|
|
fe7804f9b8 | ||
|
|
35df0befa4 | ||
|
|
00265515f4 | ||
|
|
8e8fc57dfb | ||
|
|
8a08c48284 | ||
|
|
bb11e5734d | ||
|
|
9cfff97414 | ||
|
|
82efcc018b | ||
|
|
4c65c53052 | ||
|
|
0ca7255f7f | ||
|
|
228d6768fb | ||
|
|
de5387cf21 | ||
|
|
0e5432d553 | ||
|
|
56177e0311 | ||
|
|
4f3e86548e | ||
|
|
55b8af4eb7 | ||
|
|
70ba17e596 | ||
|
|
4959c33f37 | ||
|
|
51b9a5d17e | ||
|
|
706bd2c013 | ||
|
|
f73597c55e | ||
|
|
d04f92250c | ||
|
|
6440448006 | ||
|
|
cf8a198218 | ||
|
|
70670b6c5f | ||
|
|
a0e6060ac2 | ||
|
|
5826cf6728 | ||
|
|
bd70cc68a1 | ||
|
|
384fd0392e | ||
|
|
6d409462ca | ||
|
|
70f4da1feb | ||
|
|
d9b6589c95 | ||
|
|
25feafa8d5 | ||
|
|
9e1c6151d5 | ||
|
|
6a97e7f786 | ||
|
|
beae2e38b2 | ||
|
|
82f5e975e9 | ||
|
|
999a719f44 | ||
|
|
622385b4d3 | ||
|
|
e61bc35727 | ||
|
|
5a36e653aa | ||
|
|
31a053c85f | ||
|
|
9abeb1031a | ||
|
|
90c6448cbe | ||
|
|
035add6ca4 | ||
|
|
bb1b39e626 | ||
|
|
0b9db4a2b3 | ||
|
|
ffabfd9ea6 | ||
|
|
987fbe99b4 | ||
|
|
b98e367abb | ||
|
|
37c62b687e | ||
|
|
e5cd1d8212 | ||
|
|
59c06042bd | ||
|
|
d59f13370c | ||
|
|
da0f17e241 | ||
|
|
b6d4d48091 | ||
|
|
ec7bdb51e5 | ||
|
|
49a158b7d2 | ||
|
|
c65b5ad8c4 | ||
|
|
3d3d534c98 | ||
|
|
54659c296e | ||
|
|
9b5cd76775 | ||
|
|
bdb43221de | ||
|
|
5e6bc4bf15 | ||
|
|
181ff70208 | ||
|
|
9854a9c835 | ||
|
|
7c668de308 | ||
|
|
4f2756c71f | ||
|
|
aaae7cecd6 | ||
|
|
a0d9528b3a | ||
|
|
434233dea5 | ||
|
|
4fc4344dd0 | ||
|
|
1a57e9a998 | ||
|
|
f613cfa45b | ||
|
|
bd0698a1c5 | ||
|
|
424a57f356 | ||
|
|
14748a7df6 | ||
|
|
16b4d4c610 | ||
|
|
30461a931e | ||
|
|
51e8c352b3 | ||
|
|
0435ef254f | ||
|
|
f12e6e0d5c | ||
|
|
aa41a5afa0 | ||
|
|
f043b51f6b | ||
|
|
cd22039ac0 | ||
|
|
34d5548803 | ||
|
|
0b8b4eac13 | ||
|
|
77ad537cca | ||
|
|
c13740d59b | ||
|
|
723228fae8 | ||
|
|
18ad46b1a5 | ||
|
|
6382c3cdfd | ||
|
|
53a5e77d1c | ||
|
|
a60e231528 | ||
|
|
3899a85cc6 | ||
|
|
f40b7dfe81 | ||
|
|
bf961e84bf | ||
|
|
0240581e23 | ||
|
|
649e3d0e84 | ||
|
|
a4343d2b64 | ||
|
|
26c24ab4aa | ||
|
|
91b7921789 | ||
|
|
8f026f7e70 | ||
|
|
c013c0a093 | ||
|
|
7d20b493cb | ||
|
|
5cd60685eb | ||
|
|
2ddb7e13cd | ||
|
|
209b1e5408 | ||
|
|
58dac5b04b | ||
|
|
2e8824c51d | ||
|
|
d65b06437c | ||
|
|
02aaaeb171 | ||
|
|
e891a0791e | ||
|
|
0ee2047555 | ||
|
|
f2ed243b06 | ||
|
|
74eb05c6d7 | ||
|
|
f67dd9ef7f | ||
|
|
0ecaed0792 | ||
|
|
66d642d7f0 | ||
|
|
3daee5797d | ||
|
|
ad59466b3e | ||
|
|
6988a14b6d | ||
|
|
ebd4393cab | ||
|
|
1ef885eb44 | ||
|
|
59401b4c89 | ||
|
|
d8594fbb30 | ||
|
|
4efdce9a33 | ||
|
|
bed3c5f863 | ||
|
|
9adfedd81e | ||
|
|
22a42cf6ae | ||
|
|
a568d90fe0 | ||
|
|
bd27b3f849 | ||
|
|
e959ccc77b | ||
|
|
ae86b6f750 | ||
|
|
a7e1082cca | ||
|
|
3ecadfed1f | ||
|
|
47908a7fca | ||
|
|
79d6aa2ea1 | ||
|
|
41d6208d54 | ||
|
|
0ac695d7bc | ||
|
|
20d60bcd58 | ||
|
|
b9caac5328 | ||
|
|
92da8147ff | ||
|
|
4eee0e38ed | ||
|
|
ef5c8fb753 | ||
|
|
2b51506ca5 | ||
|
|
608eb7e38c | ||
|
|
806e89e441 | ||
|
|
3fd153fe3d | ||
|
|
aa27d43bcf | ||
|
|
d68447e240 | ||
|
|
628d51e164 | ||
|
|
2cdd969f5e | ||
|
|
48285f29f8 | ||
|
|
75f22de8d3 | ||
|
|
d9952eb363 | ||
|
|
6204c034f0 | ||
|
|
d1a7313d87 | ||
|
|
a8a02b6aed | ||
|
|
1cb35273de | ||
|
|
0c87662cc5 | ||
|
|
08bc73a937 | ||
|
|
99d93a16d4 | ||
|
|
3b7cc63e40 | ||
|
|
4217bb1376 | ||
|
|
5aaf204851 | ||
|
|
5fbbdd88ac | ||
|
|
2651814314 | ||
|
|
45440bb148 | ||
|
|
ff67b46467 | ||
|
|
db3527a701 | ||
|
|
b0e79d590f | ||
|
|
190160b847 | ||
|
|
656ec0baba | ||
|
|
ad12176a6c | ||
|
|
909ca86632 | ||
|
|
8cbc1021b0 | ||
|
|
d3c9802f05 | ||
|
|
51c97c4c50 | ||
|
|
c8d78be0ae | ||
|
|
be31dbfab9 | ||
|
|
5e3a0ff9f2 | ||
|
|
4925058ac1 | ||
|
|
ad0b58639b | ||
|
|
779b41e13f | ||
|
|
046542bf6f | ||
|
|
1c5004b28b | ||
|
|
ceac010168 | ||
|
|
7817454ead | ||
|
|
51800ea362 | ||
|
|
78ea33e5a9 | ||
|
|
4b64acaca3 | ||
|
|
4c06b5a6fc | ||
|
|
f90d7c6537 | ||
|
|
3b28278748 | ||
|
|
b740e0621a | ||
|
|
40b024d82a | ||
|
|
5ed54e2adf | ||
|
|
00c53999b9 | ||
|
|
8e15238813 | ||
|
|
b880bf9671 | ||
|
|
d6a9b88918 | ||
|
|
4aa8d78b5c | ||
|
|
33b6a84f7c | ||
|
|
1ec0787f33 | ||
|
|
43dee8707d | ||
|
|
73e40266c1 | ||
|
|
61d3c798b0 | ||
|
|
5f1ac55e0e | ||
|
|
aa2190502f | ||
|
|
43787558d6 | ||
|
|
7cb3632945 | ||
|
|
6b1fd5bddb | ||
|
|
d08d97e74b | ||
|
|
8e79adb65d | ||
|
|
e2522337dc | ||
|
|
f70ddf2279 | ||
|
|
394959aab7 | ||
|
|
3f2404487b | ||
|
|
22a44c7c45 | ||
|
|
49a7f1f269 | ||
|
|
67e7228d2e | ||
|
|
7b3febb3a8 | ||
|
|
1e2ff7a752 | ||
|
|
99a87146bd | ||
|
|
a25aaee8c4 | ||
|
|
3c1858da07 | ||
|
|
beded638ab | ||
|
|
4cabac59eb | ||
|
|
ea4fbd5c33 | ||
|
|
0a767371a5 | ||
|
|
6f604907f9 | ||
|
|
1bf1505a96 | ||
|
|
53287e7a99 | ||
|
|
6efbfd6c37 | ||
|
|
e6d503f412 | ||
|
|
5889cbd757 | ||
|
|
54b12f20bf | ||
|
|
75fca0669c | ||
|
|
53cb46ec64 | ||
|
|
876b20d8aa | ||
|
|
a2b056c861 | ||
|
|
f8b81c7685 | ||
|
|
eb94593726 | ||
|
|
5da2b8654f | ||
|
|
ea2746b6f0 | ||
|
|
9fac33031a | ||
|
|
5ca4275dba | ||
|
|
d8a5fb6fb1 | ||
|
|
b2851a2b06 | ||
|
|
7f3e8e24b2 | ||
|
|
2101ccc496 | ||
|
|
2e1e21933b | ||
|
|
bd9b49602e | ||
|
|
a242a4d509 | ||
|
|
a174460352 | ||
|
|
63a314dbb3 | ||
|
|
36541e42af | ||
|
|
d6eff81e9b | ||
|
|
a74f1d6442 | ||
|
|
e6f185a66a | ||
|
|
c794abffe0 | ||
|
|
de8afaea01 | ||
|
|
4b2f2cbe98 | ||
|
|
2ab771aa56 | ||
|
|
cfe50c05d5 | ||
|
|
e9d9af0b23 | ||
|
|
bd40fc0d3b | ||
|
|
4cdb35ceda | ||
|
|
8e70e10d70 | ||
|
|
36a638704c | ||
|
|
b97cf30e61 | ||
|
|
efaa096c5b | ||
|
|
9961d34ef7 | ||
|
|
2c12b03b9d | ||
|
|
47d60857de | ||
|
|
42bbd001f4 | ||
|
|
092ec197c9 | ||
|
|
c46e42ca1e | ||
|
|
d089c22636 | ||
|
|
6d3d79c855 | ||
|
|
61442ed4f8 | ||
|
|
73a5fb2b6a | ||
|
|
98feb76c9e | ||
|
|
6407a93063 | ||
|
|
aae0fd27cf | ||
|
|
6e4f7f10b9 | ||
|
|
0c5f4ff46c | ||
|
|
2650007e4c | ||
|
|
50fded8afc | ||
|
|
7f0627eebb | ||
|
|
a73e6800de | ||
|
|
24c32a7bb6 | ||
|
|
00d98df3a3 | ||
|
|
b237dd93c1 | ||
|
|
9933df16ca | ||
|
|
61a375c710 | ||
|
|
9d68a7e112 | ||
|
|
a8a406fff8 | ||
|
|
70da41c649 | ||
|
|
56f800f3ec | ||
|
|
9ba66cd7e0 | ||
|
|
07b69426b2 | ||
|
|
7ffec30f52 | ||
|
|
95e922e064 | ||
|
|
d89ed65240 | ||
|
|
3dd1aa6d33 | ||
|
|
c94ace644e | ||
|
|
d85b4ec13a | ||
|
|
c11407982b | ||
|
|
7e00207d3c | ||
|
|
d92770e65e | ||
|
|
a799b751a9 | ||
|
|
c99bad34ff | ||
|
|
ba645a1b64 | ||
|
|
c43fab9509 | ||
|
|
fa68ae5b43 | ||
|
|
4030d892f9 | ||
|
|
4de8ac18ab | ||
|
|
379993e0ef | ||
|
|
5a5a4b9359 | ||
|
|
87c2129050 | ||
|
|
329c8b60a0 | ||
|
|
22236925b9 | ||
|
|
4dcc58ac79 | ||
|
|
390bc80e33 | ||
|
|
4e75d3af82 | ||
|
|
7dded0b0b7 | ||
|
|
22b7ac7856 | ||
|
|
9437bd3785 | ||
|
|
f479858d79 | ||
|
|
197eb82015 | ||
|
|
201269d635 | ||
|
|
4486520944 | ||
|
|
b926413b75 | ||
|
|
b35718338b | ||
|
|
c37324b890 | ||
|
|
59a5296dea | ||
|
|
9cecccd847 | ||
|
|
de1fe093d9 | ||
|
|
8220b1a6eb | ||
|
|
188bd10e80 | ||
|
|
f761294fd9 | ||
|
|
546ef33ab8 | ||
|
|
8c8eed0b21 | ||
|
|
319ecbc3c5 | ||
|
|
683b64e696 | ||
|
|
ccac8678c2 | ||
|
|
f21356e1b3 | ||
|
|
501cf7c407 | ||
|
|
885f2d73c0 | ||
|
|
ae6e3dcd18 | ||
|
|
b316e7b85b | ||
|
|
1f223a3e08 | ||
|
|
75f909ba8e | ||
|
|
28044fd437 | ||
|
|
1564a80485 | ||
|
|
354a44b02c | ||
|
|
07d0bb4cb7 | ||
|
|
14e63f906c | ||
|
|
3094bae109 | ||
|
|
7fb96c2bc5 | ||
|
|
221405a561 | ||
|
|
9d8aee72c2 | ||
|
|
f4839469cf |
60
ChangeLog
60
ChangeLog
@@ -1,3 +1,63 @@
|
||||
Sun Mar 14 02:38:07 PST 1999 Jeff Law (law@cygnus.com)
|
||||
|
||||
* egcs-1.1.2 Released.
|
||||
|
||||
Mon Mar 1 23:37:06 1999 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
Fri Dec 4 01:33:05 1998 Niall Smart <nialls@euristix.ie>
|
||||
* config.guess: Recognize FreeBSD using ELF automatically.
|
||||
|
||||
Thu Feb 25 02:19:26 1999 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
Thu Feb 18 19:55:09 1999 Marc Espie <espie@cvs.openbsd.org>
|
||||
* config.guess: Recognize openbsd-*-hppa.
|
||||
|
||||
Mon Feb 22 23:25:59 1999 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
Wed Feb 17 01:38:59 1999 H.J. Lu (hjl@gnu.org)
|
||||
* Makefile.in (REALLY_SET_LIB_PATH): Append $$$(RPATH_ENVVAR)
|
||||
only if it is not empty.
|
||||
|
||||
Sat Feb 13 12:03:28 1999 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
Sat Jan 30 06:09:00 1999 Robert Lipe (robertlipe@usa.net)
|
||||
* config.guess: Improve detection of i686 on UnixWare 7.
|
||||
|
||||
Wed Dec 2 01:44:03 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* egcs-1.1.1 Released.
|
||||
|
||||
Fri Oct 23 22:24:47 1998 Robert Lipe <robertl@dgii.com>
|
||||
|
||||
* config.guess: Match any version of Unixware7.
|
||||
|
||||
Fri Oct 2 01:29:30 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* README: Remove installation instructions and refer to the
|
||||
INSTALL directory instead.
|
||||
|
||||
Fri Oct 2 01:13:31 1998 John Hughes <john@Calva.COM>
|
||||
|
||||
* configure.in: Do not assume x86-svr4 or x86-unixware can handle
|
||||
stabs.
|
||||
|
||||
Tue Sep 1 01:58:21 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* egcs-1.1 Released.
|
||||
|
||||
Sat Aug 29 14:32:55 1998 David Edelsohn <edelsohn@mhpcc.edu>
|
||||
|
||||
* configure.in: Use mh-aix43.
|
||||
|
||||
1998-07-29 Manfred Hollstein <manfred@s-direktnet.de>
|
||||
|
||||
* configure: Fix --without/--disable cases for gxx-include-dir.
|
||||
|
||||
Sat Jul 18 14:32:43 CDT 1998 Robert Lipe <robertl@dgii.com>
|
||||
|
||||
* config.guess: (*-pc-sco3.2v5) Add detection for Pentium II.
|
||||
(*-pc-unixware7) Add detection for Pentium II, Pentium Pro.
|
||||
|
||||
Sat Jun 27 22:46:32 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* Makefile.in (BASE_FLAGS_TO_PASS): Add TARGET_SUBDIR.
|
||||
|
||||
@@ -81,6 +81,7 @@ Alexandre Oliva oliva@dcc.unicamp.br
|
||||
Catherine Moore clm@cygnus.com
|
||||
Vladimir Markarov vmakarov@cygnus.com
|
||||
Martin v. Löwis loewis@informatik.hu-berlin.de
|
||||
Gerald Pfeifer pfeifer@dbai.tuwien.ac.at
|
||||
|
||||
|
||||
* Indicates folks we need to get Kerberos/ssh accounts ready so they
|
||||
|
||||
@@ -173,7 +173,11 @@ RPATH_ENVVAR = LD_LIBRARY_PATH
|
||||
|
||||
# configure.in sets SET_LIB_PATH to this if --enable-shared was used.
|
||||
REALLY_SET_LIB_PATH = \
|
||||
$(RPATH_ENVVAR)=$$r/bfd:$$r/opcodes:$$$(RPATH_ENVVAR); \
|
||||
if [ x"$$$(RPATH_ENVVAR)" != x ]; then \
|
||||
$(RPATH_ENVVAR)=$$r/bfd:$$r/opcodes:$$$(RPATH_ENVVAR); \
|
||||
else \
|
||||
$(RPATH_ENVVAR)=$$r/bfd:$$r/opcodes; \
|
||||
fi; \
|
||||
export $(RPATH_ENVVAR);
|
||||
|
||||
ALL = all.normal
|
||||
|
||||
34
README
34
README
@@ -3,40 +3,10 @@
|
||||
This directory contains various GNU compilers, assemblers, linkers,
|
||||
debuggers, etc., plus their support routines, definitions, and documentation.
|
||||
|
||||
If you are receiving this as part of a GDB release, see the file gdb/README.
|
||||
If with a binutils release, see binutils/README; if with a libg++ release,
|
||||
see libg++/README, etc. That'll give you info about this
|
||||
package -- supported targets, how to use it, how to report bugs, etc.
|
||||
|
||||
It is now possible to automatically configure and build a variety of
|
||||
tools with one command. To build all of the tools contained herein,
|
||||
run the ``configure'' script here, e.g.:
|
||||
Check the INSTALL directory for detailed configuration and installation
|
||||
instructions.
|
||||
|
||||
./configure
|
||||
make
|
||||
|
||||
To install them (by default in /usr/local/bin, /usr/local/lib, etc),
|
||||
then do:
|
||||
make install
|
||||
|
||||
(If the configure script can't determine your type of computer, give it
|
||||
the name as an argument, for instance ``./configure sun4''. You can
|
||||
use the script ``config.sub'' to test whether a name is recognized; if
|
||||
it is, config.sub translates it to a triplet specifying CPU, vendor,
|
||||
and OS.)
|
||||
|
||||
If you have more than one compiler on your system, it is often best to
|
||||
explicitly set CC in the environment before running configure, and to
|
||||
also set CC when running make. For example (assuming sh/bash/ksh):
|
||||
|
||||
CC=gcc ./configure
|
||||
make
|
||||
|
||||
A similar example using csh:
|
||||
|
||||
setenv CC gcc
|
||||
./configure
|
||||
make
|
||||
|
||||
Much of the code and documentation enclosed is copyright by
|
||||
the Free Software Foundation, Inc. See the file COPYING or
|
||||
|
||||
17
config.guess
vendored
17
config.guess
vendored
@@ -421,6 +421,9 @@ EOF
|
||||
parisc*:Lites*:*:*)
|
||||
echo hppa1.1-hp-lites
|
||||
exit 0 ;;
|
||||
hppa*:OpenBSD:*:*)
|
||||
echo hppa-unknown-openbsd
|
||||
exit 0 ;;
|
||||
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
|
||||
echo c1-convex-bsd
|
||||
exit 0 ;;
|
||||
@@ -474,7 +477,11 @@ EOF
|
||||
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:FreeBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
|
||||
if test -x /usr/bin/objformat -a "elf" = "`/usr/bin/objformat`"; then
|
||||
echo ${UNAME_MACHINE}-unknown-freebsdelf`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
|
||||
else
|
||||
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
|
||||
fi
|
||||
exit 0 ;;
|
||||
*:NetBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
|
||||
@@ -679,11 +686,15 @@ EOF
|
||||
echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
|
||||
fi
|
||||
exit 0 ;;
|
||||
i?86:*:5:7)
|
||||
i?86:*:5:7*)
|
||||
UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
|
||||
(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
|
||||
(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
|
||||
&& UNAME_MACHINE=i586
|
||||
(/bin/uname -X|egrep '^Machine.*Pent.*II' >/dev/null) \
|
||||
&& UNAME_MACHINE=i686
|
||||
(/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
|
||||
&& UNAME_MACHINE=i686
|
||||
echo ${UNAME_MACHINE}-${UNAME_SYSTEM}${UNAME_VERSION}-sysv${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
i?86:*:3.2:*)
|
||||
@@ -697,6 +708,8 @@ EOF
|
||||
&& UNAME_MACHINE=i586
|
||||
(/bin/uname -X|egrep '^Machine.*PentII' >/dev/null) \
|
||||
&& UNAME_MACHINE=i686
|
||||
(/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
|
||||
&& UNAME_MACHINE=i686
|
||||
echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
|
||||
else
|
||||
echo ${UNAME_MACHINE}-pc-sysv32
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
Sun Mar 14 02:38:07 PST 1999 Jeff Law (law@cygnus.com)
|
||||
|
||||
* egcs-1.1.2 Released.
|
||||
|
||||
Mon Aug 31 17:50:53 1998 David Edelsohn <edelsohn@mhpcc.edu>
|
||||
|
||||
* mh-aix43 (NM_FOR_TARGET): Add -X32_64 as well.
|
||||
|
||||
Sat Aug 29 14:32:55 1998 David Edelsohn <edelsohn@mhpcc.edu>
|
||||
|
||||
* mh-aix43: New file.
|
||||
|
||||
Mon Aug 10 00:15:47 1998 HJ Lu (hjl@gnu.org)
|
||||
|
||||
* mt-linux (CXXFLAGS_FOR_TARGET): Add -D_GNU_SOURCE.
|
||||
|
||||
Wed Apr 22 12:24:28 1998 Michael Meissner <meissner@cygnus.com>
|
||||
|
||||
* mt-ospace: New file, support using -Os instead of -O2 to compile
|
||||
|
||||
4
config/mh-aix43
Normal file
4
config/mh-aix43
Normal file
@@ -0,0 +1,4 @@
|
||||
# AIX 4.3 and above requires -X32_64 flag to all ar and nm commands
|
||||
# to handle both 32-bit and 64-bit objects.
|
||||
AR_FOR_TARGET=ar -X32_64
|
||||
NM_FOR_TARGET=nm -X32_64
|
||||
@@ -1,53 +1,4 @@
|
||||
Tue Nov 26 12:34:12 1996 Stan Shebs <shebs@andros.cygnus.com>
|
||||
Sun Mar 14 02:38:07 PST 1999 Jeff Law (law@cygnus.com)
|
||||
|
||||
* g-mpw-make.sed: Fix some comments.
|
||||
* egcs-1.1.2 Released.
|
||||
|
||||
Mon Sep 16 14:42:52 1996 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* g-mpw-make.sed (HLDENV): Edit out all references.
|
||||
|
||||
Thu Aug 15 19:49:23 1996 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* true: New script, identical to mpw-true.
|
||||
* g-mpw-make.sed: Add @DASH_C_FLAG@ and @SEGMENT_FLAG()@
|
||||
to the editors for compile commands.
|
||||
|
||||
Thu Aug 1 15:01:42 1996 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* mpw-true, mpw-touch, null-command: New scripts.
|
||||
* README: Describe usage in more detail.
|
||||
|
||||
Tue Dec 12 14:51:51 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* g-mpw-make.sed: Don't edit out "version=" occurrences.
|
||||
|
||||
Fri Dec 1 11:46:18 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* g-mpw-make.sed (bindir, libdir): Edit the positions of
|
||||
pathname separators to work with other pathnames better.
|
||||
|
||||
Tue Nov 7 15:08:07 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* g-mpw-make.sed: Add comment about Duplicate vs Catenate,
|
||||
add additional pattern for editing link-compile commands.
|
||||
|
||||
Tue Oct 24 14:28:51 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* g-mpw-make.sed: Add handling for *.tab.[hc] files.
|
||||
(CHILL_FOR_TARGET, CHILL_LIB): Edit out tricky definitions
|
||||
of these.
|
||||
|
||||
Thu Sep 28 21:05:10 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* g-mpw-make.sed: New file, generic sed commands to translate
|
||||
Unix makefiles into MPW makefile syntax.
|
||||
|
||||
Fri Mar 17 11:51:20 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* README: Clarify instructions.
|
||||
* fi: Remove.
|
||||
|
||||
Wed Dec 21 15:45:53 1994 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* MoveIfChange, README, fi, forward-include, open-brace,
|
||||
tr-7to8-src: New files.
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
# When using glibc 2 on Linux we must always use vtable thunks.
|
||||
CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -fvtable-thunks
|
||||
CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -fvtable-thunks -D_GNU_SOURCE
|
||||
|
||||
19
configure
vendored
19
configure
vendored
@@ -1240,14 +1240,29 @@ EOF
|
||||
# provide a proper gxx_include_dir to all subdirs.
|
||||
# Note, if you change the default, make sure to fix both here
|
||||
# and in the gcc subdirectory.
|
||||
if test -z "${with_gxx_include_dir}"; then
|
||||
# Check whether --with-gxx-include-dir or --without-gxx-include-dir was given.
|
||||
gxx_include_dir=
|
||||
if test -n "${with_gxx_include_dir}"; then
|
||||
case "${with_gxx_include_dir}" in
|
||||
yes )
|
||||
echo "configure: error: bad value ${withval} given for g++ include directory" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
no )
|
||||
;;
|
||||
* )
|
||||
gxx_include_dir=${with_gxx_include_dir}
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if test x${gxx_include_dir} = x; then
|
||||
if test x${enable_version_specific_runtime_libs} = xyes; then
|
||||
echo gxx_include_dir = '${libsubdir}/include/g++' >> ${Makefile}
|
||||
else
|
||||
echo gxx_include_dir = '${prefix}/include/g++' >> ${Makefile}
|
||||
fi
|
||||
else
|
||||
echo gxx_include_dir = ${with_gxx_include_dir} >> ${Makefile}
|
||||
echo gxx_include_dir = ${gxx_include_dir} >> ${Makefile}
|
||||
fi
|
||||
|
||||
# record if we want to build shared libs.
|
||||
|
||||
@@ -212,6 +212,9 @@ case "${host}" in
|
||||
*-*-lynxos*)
|
||||
host_makefile_frag="${host_makefile_frag} config/mh-lynxos"
|
||||
;;
|
||||
*-*-aix4.[3456789]* | *-*-aix[56789].*)
|
||||
host_makefile_frag="${host_makefile_frag} config/mh-aix43"
|
||||
;;
|
||||
*-*-sysv4*)
|
||||
host_makefile_frag="${host_makefile_frag} config/mh-sysv4"
|
||||
;;
|
||||
@@ -435,7 +438,7 @@ if [ x${with_stabs} = x ]; then
|
||||
case "${target}" in
|
||||
mips*-*-irix6*)
|
||||
;;
|
||||
mips*-*-* | alpha*-*-osf* | i[3456]86*-*-sysv4* | i[3456]86*-*-unixware*)
|
||||
mips*-*-* | alpha*-*-osf*)
|
||||
with_stabs=yes;
|
||||
withoptions="${withoptions} --with-stabs"
|
||||
;;
|
||||
|
||||
@@ -1,3 +1,39 @@
|
||||
Sun Mar 14 02:38:07 PST 1999 Jeff Law (law@cygnus.com)
|
||||
|
||||
* egcs-1.1.2 Released.
|
||||
|
||||
1998-11-29 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_summary (EOF): remove double backslash
|
||||
Reported by Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
|
||||
|
||||
1998-11-29 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_summary: updated to version in development branch
|
||||
|
||||
1998-08-14 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_installed: new script for testing already-installed
|
||||
gcc/g++/g77
|
||||
|
||||
1998-08-13 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_summary: assigned copyright to FSF
|
||||
|
||||
Wed Aug 12 19:59:36 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* egcs_update: Assigned copyright to FSF.
|
||||
|
||||
Tue Aug 11 17:55:53 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* egcs_update: New switch --nostdflags and documentation
|
||||
enhancements.
|
||||
|
||||
Tue Aug 11 17:33:19 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* egcs_update: New script.
|
||||
|
||||
Fri Jun 19 02:36:59 1998 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_summary: new switch (-i) and environment variable
|
||||
|
||||
74
contrib/egcs_update
Executable file
74
contrib/egcs_update
Executable file
@@ -0,0 +1,74 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Update a local CVS tree from the egcs repository, with an emphasis
|
||||
# on treating generated files correctly, so that autoconf, bison et
|
||||
# al are not required for the ``end'' user.
|
||||
#
|
||||
# By default all command-line options are passed to `cvs update` in
|
||||
# addition to $UPDATE_OPTIONS (defined below). If the first parameter
|
||||
# reads --nostdflags, $UPDATE_OPTIONS as well as this parameter itself
|
||||
# are omitted.
|
||||
#
|
||||
# Examples:
|
||||
#
|
||||
# contrib/egcs_update -r egcs_latest_snapshot
|
||||
# contrib/egcs_update -A
|
||||
# contrib/egcs_update --nostdflags -P -r egcs_1_1_branch gcc/testsuite
|
||||
#
|
||||
#
|
||||
# (C) 1998 Free Software Foundation
|
||||
# Originally by Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>, August 1998.
|
||||
#
|
||||
# This script is Free Software, and it can be copied, distributed and
|
||||
# modified as defined in the GNU General Public License. A copy of
|
||||
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
|
||||
|
||||
|
||||
UPDATE_OPTIONS=-P
|
||||
# Add -d to create any directories that exist in the repository but not
|
||||
# locally.
|
||||
# Add -A to reset any sticky tags, dates, or `-k' options.
|
||||
|
||||
|
||||
echo "Current directory is `pwd`."
|
||||
|
||||
# First of all, check whether this indeed looks like a local CVS of egcs.
|
||||
if [ ! -d CVS ] || [ ! -f gcc/version.c ]; then
|
||||
echo "This does not seem to be an egcs CVS tree!"
|
||||
exit
|
||||
fi
|
||||
|
||||
# Check command-line options
|
||||
|
||||
if [ x"${1}"x = x"--nostdflags"x ]; then
|
||||
shift
|
||||
else
|
||||
set -- $UPDATE_OPTIONS ${1+"$@"}
|
||||
fi
|
||||
|
||||
|
||||
echo "Pass 1: Updating autoconf and bison generated files"
|
||||
find . -name configure.in -o -name '*.y' | xargs cvs -q update
|
||||
|
||||
echo "Pass 2: Updating full tree"
|
||||
cvs -q update ${1+"$@"}
|
||||
|
||||
echo "Pass 3: Fixing local tree"
|
||||
touch `find . -name configure -print`
|
||||
touch `find texinfo -name Makefile.in -print`
|
||||
touch `find texinfo -name \*.pot -print`
|
||||
touch `find texinfo -name \*.gmo -print`
|
||||
for f in gcc/c-parse.y \
|
||||
gcc/cstamp-h.in \
|
||||
gcc/c-gperf.h \
|
||||
gcc/c-parse.c \
|
||||
gcc/c-parse.h \
|
||||
gcc/cexp.c \
|
||||
gcc/cp/parse.c \
|
||||
gcc/cp/parse.h \
|
||||
gcc/objc/objc-parse.c \
|
||||
gcc/objc/objc-parse.y \
|
||||
libf2c/libU77/stamp-h.in
|
||||
do
|
||||
touch $f
|
||||
done
|
||||
114
contrib/test_installed
Executable file
114
contrib/test_installed
Executable file
@@ -0,0 +1,114 @@
|
||||
#! /bin/sh
|
||||
|
||||
# (C) 1998 Free Software Foundation
|
||||
# Originally by Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
# This script is Free Software, and it can be copied, distributed and
|
||||
# modified as defined in the GNU General Public License. A copy of
|
||||
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
|
||||
|
||||
# This scripts assumes it lives in the contrib directory of the egcs
|
||||
# source tree, so it will find the testsuite tree from its location.
|
||||
# If you move it elsewhere, or want to use another testsuite tree, you
|
||||
# can override the defaults with --srcdir=/some/dir/egcs or
|
||||
# --testsuite=/some/dir/egcs/gcc/testsuite. If you specify
|
||||
# --testsuite, --srcdir will be ignored; otherwise, `/gcc/testsuite'
|
||||
# will be appended to the srcdir.
|
||||
|
||||
# You may specify where the binaries to be tested should be picked up
|
||||
# from. If you specify --prefix=/some/dir, gcc, g++ and g77 will be
|
||||
# looked for at /some/dir/bin. Each one may be overridden by
|
||||
# specifying --with-gcc=/pathname/to/gcc, --with-g++=/pathname/to/g++
|
||||
# and --with-g77=/pathname/to/g77. If you specify --without-gcc,
|
||||
# --without-g++ or --without-g77, the test for the specified program
|
||||
# will be skipped. By default, gcc, g++ and g77 will be searched in
|
||||
# the PATH.
|
||||
|
||||
# An additional argument may specify --tmpdir=/some/dir; by default,
|
||||
# temporaries will be stored in the current directory, where the log
|
||||
# files will be stored.
|
||||
|
||||
# The script will interpret arguments until it finds one it does not
|
||||
# understand. The remaining ones will be passed to `runtest'. A
|
||||
# double-dash can be used to explicitly separate the arguments to
|
||||
# `test_installed' from the ones to `runtest'.
|
||||
|
||||
# This script should be run in an empty directory; it will refuse to
|
||||
# run if it finds a file named site.exp in the current directory.
|
||||
|
||||
|
||||
if test -f site.exp; then
|
||||
echo site.exp already exists >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while true; do
|
||||
case "$1" in
|
||||
--with-testsuite=*) testsuite=`echo "$1" | sed 's/[^=]*=//'`; shift;;
|
||||
--srcdir=*) srcdir=`echo "$1" | sed 's/[^=]*=//'`; shift;;
|
||||
|
||||
--prefix=*) prefix=`echo "$1" | sed 's/[^=]*=//'`; shift;;
|
||||
--with-gcc=*) GCC_UNDER_TEST=`echo "$1" | sed 's/[^=]*=//'`; shift;;
|
||||
--with-g++=*) GXX_UNDER_TEST=`echo "$1" | sed 's/[^=]*=//'`; shift;;
|
||||
--with-g77=*) G77_UNDER_TEST=`echo "$1" | sed 's/[^=]*=//'`; shift;;
|
||||
--without-gcc) GCC_UNDER_TEST=no; shift;;
|
||||
--without-g++) GXX_UNDER_TEST=no; shift;;
|
||||
--without-g77) G77_UNDER_TEST=no; shift;;
|
||||
|
||||
--tmpdir=*) tmpdir=`echo "$1" | sed 's/[^=]*=//'`; shift;;
|
||||
|
||||
--help) cat <<\EOF
|
||||
Runs the testsuite for an installed version of gcc/g++/g77
|
||||
Copyright (C) 1998 Free Software Foundation
|
||||
by Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
Supported arguments:
|
||||
|
||||
--help prints this page
|
||||
|
||||
--with-testsuite=/some/dir/gcc/testsuite specify the testsuite directory
|
||||
--srcdir=/some/dir same as --with-testsuite=/some/dir/gcc/testsuite
|
||||
[deduced from shell-script pathname]
|
||||
|
||||
--prefix=/some/dir use gcc, g++ and g77 from /some/dir/bin [PATH]
|
||||
--with-gcc=/some/dir/bin/gcc use specified gcc program [gcc]
|
||||
--with-g++=/some/dir/bin/g++ use specified g++ program [g++]
|
||||
--with-g77=/some/dir/bin/g77 use specified g77 program [g77]
|
||||
--without-gcc do not run gcc testsuite
|
||||
--without-g++ do not run g++ testsuite
|
||||
--without-g77 do not run g77 testsuite
|
||||
|
||||
--tmpdir=/some/dir create temporaries and leave failed programs
|
||||
at specified directory [.]
|
||||
|
||||
-- end of argument list; following arguments are passed to runtest
|
||||
EOF
|
||||
exit
|
||||
;;
|
||||
|
||||
--) shift; break;;
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
|
||||
if test x"${testsuite+set}" != x"set" && test x"${srcdir+set}" != x"set"; then
|
||||
file=$0
|
||||
while [ -h $file ]; do
|
||||
file=`ls -l $file | sed s/'.* -> '//`
|
||||
done
|
||||
srcdir=`CDPATH=. && cd \`echo "$file" | sed 's,/*[^/]*$,,;s,^$,.,'\`/.. >/dev/null && pwd`
|
||||
fi
|
||||
|
||||
cat >site.exp <<EOF
|
||||
set tmpdir "${tmpdir-`pwd`}"
|
||||
set srcdir "${testsuite-${srcdir}/gcc/testsuite}"
|
||||
set GCC_UNDER_TEST "${GCC_UNDER_TEST-${prefix}${prefix+/bin/}gcc}"
|
||||
set GXX_UNDER_TEST "${GXX_UNDER_TEST-${prefix}${prefix+/bin/}g++}"
|
||||
set G77_UNDER_TEST "${G77_UNDER_TEST-${prefix}${prefix+/bin/}g77}"
|
||||
EOF
|
||||
|
||||
test x"${GCC_UNDER_TEST}" = x"no" || runtest --tool gcc ${1+"$@"}
|
||||
test x"${GXX_UNDER_TEST}" = x"no" || runtest --tool g++ ${1+"$@"}
|
||||
test x"${G77_UNDER_TEST}" = x"no" || runtest --tool g77 ${1+"$@"}
|
||||
|
||||
exit 0
|
||||
@@ -1,6 +1,7 @@
|
||||
#! /bin/sh
|
||||
|
||||
# (C) 1998 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
# (C) 1998 Free Software Foundation
|
||||
# Originally by Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
# This script is Free Software, and it can be copied, distributed and
|
||||
# modified as defined in the GNU General Public License. A copy of
|
||||
@@ -22,16 +23,19 @@
|
||||
|
||||
# The usage pattern of this script is as follows:
|
||||
|
||||
# summarize | more # so as to observe what should be done
|
||||
# test_summary | more # so as to observe what should be done
|
||||
|
||||
# summarize | sh # so as to actually send e-mail and move log files
|
||||
# test_summary | sh # so as to actually send e-mail and move log files
|
||||
|
||||
# It accepts a few command line arguments. For example:
|
||||
# -o: re-reads logs that have been mailed already (.sum.sent)
|
||||
# -t: prevents logs from being renamed
|
||||
# -p: prepend specified file (or list of files: -p "a b") to the report
|
||||
# -i: append specified file (or list of files: -i "a b") to the report
|
||||
# -m: specify the e-mail address to send notes to. An appropriate default should be selected from the log files.
|
||||
# -f: force reports to be mailed; if omitted, only reports that differ from the sent.* version are sent
|
||||
# -m: specify the e-mail address to send notes to. An appropriate default
|
||||
# should be selected from the log files.
|
||||
# -f: force reports to be mailed; if omitted, only reports that differ
|
||||
# from the sent.* version are sent.
|
||||
|
||||
# Find a good awk.
|
||||
if test -z "$AWK" ; then
|
||||
@@ -51,6 +55,7 @@ while true; do
|
||||
case "$1" in
|
||||
-o) filesuffix=.sent; move=false; : ${mailto=nobody}; shift;;
|
||||
-t) move=false; shift;;
|
||||
-p) prepend_logs=${prepend_logs+"$prepend_logs "}"$2"; shift 2;;
|
||||
-i) append_logs=${append_logs+"$append_logs "}"$2"; shift 2;;
|
||||
-m) mailto=$2; forcemail=true; shift 2;;
|
||||
-f) unset mailto; forcemail=true; shift;;
|
||||
@@ -80,7 +85,8 @@ if $forcemail || $anychange; then :; else mailto=nobody; fi &&
|
||||
$AWK '
|
||||
BEGIN {
|
||||
lang="";
|
||||
print "cat <<EOF |";
|
||||
print "cat <<\EOF |";
|
||||
'${prepend_logs+" system(\"cat $prepend_logs\"); "}'
|
||||
}
|
||||
$1 ~ /\/configure$/ { $1 = "configure flags:"; configflags = $0 }
|
||||
/^Running target / { print ""; print; }
|
||||
@@ -90,13 +96,13 @@ $1 ~ /\/configure$/ { $1 = "configure flags:"; configflags = $0 }
|
||||
if (lang == "") lang = " "$2" "; else lang = " ";
|
||||
}
|
||||
/\/ss(\/|c? )/ {
|
||||
program="ss"; comment="";
|
||||
program="ss";
|
||||
if (lang == " ") address="nobody";
|
||||
else if (lang == " gcc ") address="gcc2@cygnus.com";
|
||||
else address="g++@cygnus.com";
|
||||
}
|
||||
/\/egcsh?((-[^ ]*)?\/|c?[ -])/ {
|
||||
address="egcs@cygnus.com";
|
||||
address="egcs-testresults@egcs.cygnus.com";
|
||||
if (version == 0) version="egcs";
|
||||
}
|
||||
/--disable-haifa/ { prefix="haifa-disabled "; }
|
||||
@@ -111,6 +117,8 @@ $2 == "version" { save = $0; $1 = ""; $2 = ""; version = $0; gsub(/^ */, "", ver
|
||||
/^$/ && blanks>0 { print; --blanks; }
|
||||
END { if (lang != "") {
|
||||
print "";
|
||||
print "Compiler version: " prefix version lang;
|
||||
print "Platform: " host;
|
||||
print configflags;
|
||||
'${BOOT_CFLAGS+'print "BOOT_CFLAGS='"${BOOT_CFLAGS}"'";'}'
|
||||
if (boot_cflags != 0) print boot_cflags;
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
Sun Mar 14 02:38:07 PST 1999 Jeff Law (law@cygnus.com)
|
||||
|
||||
* egcs-1.1.2 Released.
|
||||
|
||||
Thu May 14 14:43:10 1998 Nick Clifton <nickc@cygnus.com>
|
||||
|
||||
* targetdoc/arm-interwork.texi: Document dlltool support of
|
||||
|
||||
226
gcc/ABOUT-NLS
226
gcc/ABOUT-NLS
@@ -1,226 +0,0 @@
|
||||
Notes on the Free Translation Project
|
||||
*************************************
|
||||
|
||||
Free software is going international! The Free Translation Project
|
||||
is a way to get maintainers of free software, translators, and users all
|
||||
together, so that will gradually become able to speak many languages.
|
||||
A few packages already provide translations for their messages.
|
||||
|
||||
If you found this `ABOUT-NLS' file inside a distribution, you may
|
||||
assume that the distributed package does use GNU `gettext' internally,
|
||||
itself available at your nearest GNU archive site. But you do *not*
|
||||
need to install GNU `gettext' prior to configuring, installing or using
|
||||
this package with messages translated.
|
||||
|
||||
Installers will find here some useful hints. These notes also
|
||||
explain how users should proceed for getting the programs to use the
|
||||
available translations. They tell how people wanting to contribute and
|
||||
work at translations should contact the appropriate team.
|
||||
|
||||
When reporting bugs in the `intl/' directory or bugs which may be
|
||||
related to internationalization, you should tell about the version of
|
||||
`gettext' which is used. The information can be found in the
|
||||
`intl/VERSION' file, in internationalized packages.
|
||||
|
||||
One advise in advance
|
||||
=====================
|
||||
|
||||
If you want to exploit the full power of internationalization, you
|
||||
should configure it using
|
||||
|
||||
./configure --with-included-gettext
|
||||
|
||||
to force usage of internationalizing routines provided within this
|
||||
package, despite the existence of internationalizing capabilities in the
|
||||
operating system where this package is being installed. So far, only
|
||||
the `gettext' implementation in the GNU C library version 2 provides as
|
||||
many features (such as locale alias or message inheritance) as the
|
||||
implementation here. It is also not possible to offer this additional
|
||||
functionality on top of a `catgets' implementation. Future versions of
|
||||
GNU `gettext' will very likely convey even more functionality. So it
|
||||
might be a good idea to change to GNU `gettext' as soon as possible.
|
||||
|
||||
So you need not provide this option if you are using GNU libc 2 or
|
||||
you have installed a recent copy of the GNU gettext package with the
|
||||
included `libintl'.
|
||||
|
||||
INSTALL Matters
|
||||
===============
|
||||
|
||||
Some packages are "localizable" when properly installed; the
|
||||
programs they contain can be made to speak your own native language.
|
||||
Most such packages use GNU `gettext'. Other packages have their own
|
||||
ways to internationalization, predating GNU `gettext'.
|
||||
|
||||
By default, this package will be installed to allow translation of
|
||||
messages. It will automatically detect whether the system provides
|
||||
usable `catgets' (if using this is selected by the installer) or
|
||||
`gettext' functions. If neither is available, the GNU `gettext' own
|
||||
library will be used. This library is wholly contained within this
|
||||
package, usually in the `intl/' subdirectory, so prior installation of
|
||||
the GNU `gettext' package is *not* required. Installers may use
|
||||
special options at configuration time for changing the default
|
||||
behaviour. The commands:
|
||||
|
||||
./configure --with-included-gettext
|
||||
./configure --with-catgets
|
||||
./configure --disable-nls
|
||||
|
||||
will respectively bypass any pre-existing `catgets' or `gettext' to use
|
||||
the internationalizing routines provided within this package, enable
|
||||
the use of the `catgets' functions (if found on the locale system), or
|
||||
else, *totally* disable translation of messages.
|
||||
|
||||
When you already have GNU `gettext' installed on your system and run
|
||||
configure without an option for your new package, `configure' will
|
||||
probably detect the previously built and installed `libintl.a' file and
|
||||
will decide to use this. This might be not what is desirable. You
|
||||
should use the more recent version of the GNU `gettext' library. I.e.
|
||||
if the file `intl/VERSION' shows that the library which comes with this
|
||||
package is more recent, you should use
|
||||
|
||||
./configure --with-included-gettext
|
||||
|
||||
to prevent auto-detection.
|
||||
|
||||
By default the configuration process will not test for the `catgets'
|
||||
function and therefore they will not be used. The reasons are already
|
||||
given above: the emulation on top of `catgets' cannot provide all the
|
||||
extensions provided by the GNU `gettext' library. If you nevertheless
|
||||
want to use the `catgets' functions use
|
||||
|
||||
./configure --with-catgets
|
||||
|
||||
to enable the test for `catgets' (this causes no harm if `catgets' is
|
||||
not available on your system). If you really select this option we
|
||||
would like to hear about the reasons because we cannot think of any
|
||||
good one ourself.
|
||||
|
||||
Internationalized packages have usually many `po/LL.po' files, where
|
||||
LL gives an ISO 639 two-letter code identifying the language. Unless
|
||||
translations have been forbidden at `configure' time by using the
|
||||
`--disable-nls' switch, all available translations are installed
|
||||
together with the package. However, the environment variable `LINGUAS'
|
||||
may be set, prior to configuration, to limit the installed set.
|
||||
`LINGUAS' should then contain a space separated list of two-letter
|
||||
codes, stating which languages are allowed.
|
||||
|
||||
Using This Package
|
||||
==================
|
||||
|
||||
As a user, if your language has been installed for this package, you
|
||||
only have to set the `LANG' environment variable to the appropriate
|
||||
ISO 639 `LL' two-letter code prior to using the programs in the
|
||||
package. For example, let's suppose that you speak German. At the
|
||||
shell prompt, merely execute `setenv LANG de' (in `csh'),
|
||||
`export LANG; LANG=de' (in `sh') or `export LANG=de' (in `bash'). This
|
||||
can be done from your `.login' or `.profile' file, once and for all.
|
||||
|
||||
An operating system might already offer message localization for
|
||||
many of its programs, while other programs have been installed locally
|
||||
with the full capabilities of GNU `gettext'. Just using `gettext'
|
||||
extended syntax for `LANG' would break proper localization of already
|
||||
available operating system programs. In this case, users should set
|
||||
both `LANGUAGE' and `LANG' variables in their environment, as programs
|
||||
using GNU `gettext' give preference to `LANGUAGE'. For example, some
|
||||
Swedish users would rather read translations in German than English for
|
||||
when Swedish is not available. This is easily accomplished by setting
|
||||
`LANGUAGE' to `sv:de' while leaving `LANG' to `sv'.
|
||||
|
||||
Translating Teams
|
||||
=================
|
||||
|
||||
For the Free Translation Project to be a success, we need interested
|
||||
people who like their own language and write it well, and who are also
|
||||
able to synergize with other translators speaking the same language.
|
||||
Each translation team has its own mailing list, courtesy of Linux
|
||||
International. You may reach your translation team at the address
|
||||
`LL@li.org', replacing LL by the two-letter ISO 639 code for your
|
||||
language. Language codes are *not* the same as the country codes given
|
||||
in ISO 3166. The following translation teams exist, as of December
|
||||
1997:
|
||||
|
||||
Chinese `zh', Czech `cs', Danish `da', Dutch `nl', English `en',
|
||||
Esperanto `eo', Finnish `fi', French `fr', German `de', Hungarian
|
||||
`hu', Irish `ga', Italian `it', Indonesian `id', Japanese `ja',
|
||||
Korean `ko', Latin `la', Norwegian `no', Persian `fa', Polish
|
||||
`pl', Portuguese `pt', Russian `ru', Slovenian `sl', Spanish `es',
|
||||
Swedish `sv', and Turkish `tr'.
|
||||
|
||||
For example, you may reach the Chinese translation team by writing to
|
||||
`zh@li.org'.
|
||||
|
||||
If you'd like to volunteer to *work* at translating messages, you
|
||||
should become a member of the translating team for your own language.
|
||||
The subscribing address is *not* the same as the list itself, it has
|
||||
`-request' appended. For example, speakers of Swedish can send a
|
||||
message to `sv-request@li.org', having this message body:
|
||||
|
||||
subscribe
|
||||
|
||||
Keep in mind that team members are expected to participate
|
||||
*actively* in translations, or at solving translational difficulties,
|
||||
rather than merely lurking around. If your team does not exist yet and
|
||||
you want to start one, or if you are unsure about what to do or how to
|
||||
get started, please write to `translation@iro.umontreal.ca' to reach the
|
||||
coordinator for all translator teams.
|
||||
|
||||
The English team is special. It works at improving and uniformizing
|
||||
the terminology in use. Proven linguistic skill are praised more than
|
||||
programming skill, here.
|
||||
|
||||
Available Packages
|
||||
==================
|
||||
|
||||
Languages are not equally supported in all packages. The following
|
||||
matrix shows the current state of internationalization, as of December
|
||||
1997. The matrix shows, in regard of each package, for which languages
|
||||
PO files have been submitted to translation coordination.
|
||||
|
||||
Ready PO files cs da de en es fi fr it ja ko nl no pl pt ru sl sv
|
||||
.----------------------------------------------------.
|
||||
bash | [] [] [] | 3
|
||||
bison | [] [] [] | 3
|
||||
clisp | [] [] [] [] | 4
|
||||
cpio | [] [] [] [] [] [] | 6
|
||||
diffutils | [] [] [] [] [] | 5
|
||||
enscript | [] [] [] [] [] [] | 6
|
||||
fileutils | [] [] [] [] [] [] [] [] [] [] | 10
|
||||
findutils | [] [] [] [] [] [] [] [] [] | 9
|
||||
flex | [] [] [] [] | 4
|
||||
gcal | [] [] [] [] [] | 5
|
||||
gettext | [] [] [] [] [] [] [] [] [] [] [] | 12
|
||||
grep | [] [] [] [] [] [] [] [] [] [] | 10
|
||||
hello | [] [] [] [] [] [] [] [] [] [] [] | 11
|
||||
id-utils | [] [] [] | 3
|
||||
indent | [] [] [] [] [] | 5
|
||||
libc | [] [] [] [] [] [] [] | 7
|
||||
m4 | [] [] [] [] [] [] | 6
|
||||
make | [] [] [] [] [] [] | 6
|
||||
music | [] [] | 2
|
||||
ptx | [] [] [] [] [] [] [] [] | 8
|
||||
recode | [] [] [] [] [] [] [] [] [] | 9
|
||||
sh-utils | [] [] [] [] [] [] [] [] | 8
|
||||
sharutils | [] [] [] [] [] [] | 6
|
||||
tar | [] [] [] [] [] [] [] [] [] [] [] | 11
|
||||
texinfo | [] [] [] | 3
|
||||
textutils | [] [] [] [] [] [] [] [] [] | 9
|
||||
wdiff | [] [] [] [] [] [] [] [] | 8
|
||||
`----------------------------------------------------'
|
||||
17 languages cs da de en es fi fr it ja ko nl no pl pt ru sl sv
|
||||
27 packages 6 4 25 1 18 1 26 2 1 12 20 9 19 7 4 7 17 179
|
||||
|
||||
Some counters in the preceding matrix are higher than the number of
|
||||
visible blocks let us expect. This is because a few extra PO files are
|
||||
used for implementing regional variants of languages, or language
|
||||
dialects.
|
||||
|
||||
For a PO file in the matrix above to be effective, the package to
|
||||
which it applies should also have been internationalized and
|
||||
distributed as such by its maintainer. There might be an observable
|
||||
lag between the mere existence a PO file and its wide availability in a
|
||||
distribution.
|
||||
|
||||
If December 1997 seems to be old, you may fetch a more recent copy
|
||||
of this `ABOUT-NLS' file on most GNU archive sites.
|
||||
|
||||
1113
gcc/ChangeLog
1113
gcc/ChangeLog
File diff suppressed because it is too large
Load Diff
242
gcc/INSTALL
242
gcc/INSTALL
@@ -1,14 +1,30 @@
|
||||
This file documents the installation of the GNU compiler. Copyright
|
||||
This is Info file INSTALL, produced by Makeinfo version 1.68 from the
|
||||
input file install1.texi.
|
||||
|
||||
This file documents the installation of the GNU compiler. Copyright
|
||||
(C) 1988, 1989, 1992, 1994, 1995 Free Software Foundation, Inc. You
|
||||
may copy, distribute, and modify it freely as long as you preserve this
|
||||
copyright notice and permission notice.
|
||||
|
||||
|
||||
File: INSTALL, Node: Installation, Up: (dir)
|
||||
|
||||
Installing GNU CC
|
||||
*****************
|
||||
|
||||
Note most of this information is out of date and superceded by the
|
||||
EGCS install procedures. It is provided for historical reference only.
|
||||
|
||||
* Menu:
|
||||
|
||||
* Configurations:: Configurations Supported by GNU CC.
|
||||
* Other Dir:: Compiling in a separate directory (not where the source is).
|
||||
* Cross-Compiler:: Building and installing a cross-compiler.
|
||||
* Sun Install:: See below for installation on the Sun.
|
||||
* VMS Install:: See below for installation on VMS.
|
||||
* Collect2:: How `collect2' works; how it finds `ld'.
|
||||
* Header Dirs:: Understanding the standard header file directories.
|
||||
|
||||
Here is the procedure for installing GNU CC on a Unix system. See
|
||||
*Note VMS Install::, for VMS systems. In this section we assume you
|
||||
compile in the same directory that contains the source files; see *Note
|
||||
@@ -48,13 +64,13 @@ and includes all the necessary compilation tools and libraries.
|
||||
what your configuration is or guesses wrong.
|
||||
|
||||
In those cases, specify the build machine's "configuration name"
|
||||
with the `--build' option; the host and target will default to be
|
||||
the same as the build machine. (If you are building a
|
||||
with the `--host' option; the host and target will default to be
|
||||
the same as the host machine. (If you are building a
|
||||
cross-compiler, see *Note Cross-Compiler::.)
|
||||
|
||||
Here is an example:
|
||||
|
||||
./configure --build=sparc-sun-sunos4.1
|
||||
./configure --host=sparc-sun-sunos4.1
|
||||
|
||||
A configuration name may be canonical or it may be more or less
|
||||
abbreviated.
|
||||
@@ -163,7 +179,6 @@ and includes all the necessary compilation tools and libraries.
|
||||
other systems where it could usefully make a difference.
|
||||
|
||||
`--enable-haifa'
|
||||
|
||||
`--disable-haifa'
|
||||
Use `--enable-haifa' to enable use of an experimental
|
||||
instruction scheduler (from IBM Haifa). This may or may not
|
||||
@@ -182,6 +197,14 @@ and includes all the necessary compilation tools and libraries.
|
||||
possibilities for TYPE are `single', `posix', `win32',
|
||||
`solaris', `irix' and `mach'.
|
||||
|
||||
`--enable-checking'
|
||||
When you specify this option, the compiler is built to
|
||||
perform checking of tree node types when referencing fields
|
||||
of that node. This does not change the generated code, but
|
||||
adds error checking within the compiler. This will slow down
|
||||
the compiler and may only work properly if you are building
|
||||
the compiler with GNU C.
|
||||
|
||||
The `configure' script searches subdirectories of the source
|
||||
directory for other compilers that are to be integrated into GNU
|
||||
CC. The GNU compiler for C++, called G++ is in a subdirectory
|
||||
@@ -227,20 +250,22 @@ and includes all the necessary compilation tools and libraries.
|
||||
name to use instead of `/usr/local' for all purposes with one
|
||||
exception: the directory `/usr/local/include' is searched for
|
||||
header files no matter where you install the compiler. To override
|
||||
this name, use the `--local-prefix' option below.
|
||||
this name, use the `--with-local-prefix' option below. The
|
||||
directory you specify need not exist, but its parent directory
|
||||
must exist.
|
||||
|
||||
5. Specify `--local-prefix=DIR' if you want the compiler to search
|
||||
directory `DIR/include' for locally installed header files
|
||||
5. Specify `--with-local-prefix=DIR' if you want the compiler to
|
||||
search directory `DIR/include' for locally installed header files
|
||||
*instead* of `/usr/local/include'.
|
||||
|
||||
You should specify `--local-prefix' *only* if your site has a
|
||||
You should specify `--with-local-prefix' *only* if your site has a
|
||||
different convention (not `/usr/local') for where to put
|
||||
site-specific files.
|
||||
|
||||
The default value for `--local-prefix' is `/usr/local' regardless
|
||||
of the value of `--prefix'. Specifying `--prefix' has no effect
|
||||
on which directory GNU CC searches for local header files. This
|
||||
may seem counterintuitive, but actually it is logical.
|
||||
The default value for `--with-local-prefix' is `/usr/local'
|
||||
regardless of the value of `--prefix'. Specifying `--prefix' has
|
||||
no effect on which directory GNU CC searches for local header
|
||||
files. This may seem counterintuitive, but actually it is logical.
|
||||
|
||||
The purpose of `--prefix' is to specify where to *install GNU CC*.
|
||||
The local header files in `/usr/local/include'--if you put any in
|
||||
@@ -248,12 +273,12 @@ and includes all the necessary compilation tools and libraries.
|
||||
programs--perhaps many others. (GNU CC installs its own header
|
||||
files in another directory which is based on the `--prefix' value.)
|
||||
|
||||
*Do not* specify `/usr' as the `--local-prefix'! The directory
|
||||
you use for `--local-prefix' *must not* contain any of the
|
||||
system's standard header files. If it did contain them, certain
|
||||
programs would be miscompiled (including GNU Emacs, on certain
|
||||
targets), because this would override and nullify the header file
|
||||
corrections made by the `fixincludes' script.
|
||||
*Do not* specify `/usr' as the `--with-local-prefix'! The
|
||||
directory you use for `--with-local-prefix' *must not* contain any
|
||||
of the system's standard header files. If it did contain them,
|
||||
certain programs would be miscompiled (including GNU Emacs, on
|
||||
certain targets), because this would override and nullify the
|
||||
header file corrections made by the `fixincludes' script.
|
||||
|
||||
Indications are that people who use this option use it based on
|
||||
mistaken ideas of what it is for. People use it as if it specified
|
||||
@@ -300,8 +325,9 @@ and includes all the necessary compilation tools and libraries.
|
||||
escape sequence" are normal in `genopinit.c' and perhaps some
|
||||
other files. Likewise, you should ignore warnings about "constant
|
||||
is so large that it is unsigned" in `insn-emit.c' and
|
||||
`insn-recog.c' and a warning about a comparison always being zero
|
||||
in `enquire.o'. Any other compilation errors may represent bugs in
|
||||
`insn-recog.c', a warning about a comparison always being zero in
|
||||
`enquire.o', and warnings about shift counts exceeding type widths
|
||||
in `cexp.y'. Any other compilation errors may represent bugs in
|
||||
the port to your machine or operating system, and should be
|
||||
investigated and reported.
|
||||
|
||||
@@ -433,12 +459,12 @@ and includes all the necessary compilation tools and libraries.
|
||||
This copies the files `cc1', `cpp' and `libgcc.a' to files `cc1',
|
||||
`cpp' and `libgcc.a' in the directory
|
||||
`/usr/local/lib/gcc-lib/TARGET/VERSION', which is where the
|
||||
compiler driver program looks for them. Here TARGET is the target
|
||||
machine type specified when you ran `configure', and VERSION is
|
||||
the version number of GNU CC. This naming scheme permits various
|
||||
versions and/or cross-compilers to coexist. It also copies the
|
||||
executables for compilers for other languages (e.g., `cc1plus' for
|
||||
C++) to the same directory.
|
||||
compiler driver program looks for them. Here TARGET is the
|
||||
canonicalized form of target machine type specified when you ran
|
||||
`configure', and VERSION is the version number of GNU CC. This
|
||||
naming scheme permits various versions and/or cross-compilers to
|
||||
coexist. It also copies the executables for compilers for other
|
||||
languages (e.g., `cc1plus' for C++) to the same directory.
|
||||
|
||||
This also copies the driver program `xgcc' into
|
||||
`/usr/local/bin/gcc', so that it appears in typical execution
|
||||
@@ -465,8 +491,13 @@ and includes all the necessary compilation tools and libraries.
|
||||
library. All I/O functionality, special class libraries, etc., are
|
||||
provided by the C++ runtime library.
|
||||
|
||||
Here's one way to build and install a C++ runtime library for GNU
|
||||
CC:
|
||||
The standard C++ runtime library for GNU CC is called `libstdc++'.
|
||||
An obsolescent library `libg++' may also be available, but it's
|
||||
necessary only for older software that hasn't been converted yet;
|
||||
if you don't know whether you need `libg++' then you probably don't
|
||||
need it.
|
||||
|
||||
Here's one way to build and install `libstdc++' for GNU CC:
|
||||
|
||||
* Build and install GNU CC, so that invoking `gcc' obtains the
|
||||
GNU CC that was just built.
|
||||
@@ -535,6 +566,9 @@ and includes all the necessary compilation tools and libraries.
|
||||
|
||||
* thr-win32 Microsoft Win32 API thread support.
|
||||
|
||||
|
||||
File: INSTALL, Node: Configurations, Next: Other Dir, Up: Installation
|
||||
|
||||
Configurations Supported by GNU CC
|
||||
==================================
|
||||
|
||||
@@ -742,9 +776,10 @@ special things you must know:
|
||||
AMD Am29050 used in a system running a variant of BSD Unix.
|
||||
|
||||
`decstation-*'
|
||||
DECstations can support three different personalities: Ultrix, DEC
|
||||
OSF/1, and OSF/rose. To configure GCC for these platforms use the
|
||||
following configurations:
|
||||
MIPS-based DECstations can support three different personalities:
|
||||
Ultrix, DEC OSF/1, and OSF/rose. (Alpha-based DECstation products
|
||||
have a configuration name beginning with `alpha-dec'.) To
|
||||
configure GCC for these platforms use the following configurations:
|
||||
|
||||
`decstation-ultrix'
|
||||
Ultrix configuration.
|
||||
@@ -799,7 +834,9 @@ special things you must know:
|
||||
later). These can be retrieved from all the traditional GNU ftp
|
||||
archive sites.
|
||||
|
||||
GAS will need to be installed into a directory before `/bin',
|
||||
On some versions of HP-UX, you will need to install GNU `sed'.
|
||||
|
||||
You will need to be install GAS into a directory before `/bin',
|
||||
`/usr/bin', and `/usr/ccs/bin' in your search path. You should
|
||||
install GAS before you build GNU CC.
|
||||
|
||||
@@ -834,24 +871,32 @@ special things you must know:
|
||||
|
||||
`i386-*-sco3.2v5*'
|
||||
Use this for the SCO OpenServer Release family including 5.0.0,
|
||||
5.0.2, 5.0.4, Internet FastStart 1.0, and Internet FastStart 1.1.
|
||||
5.0.2, 5.0.4, 5.0.5, Internet FastStart 1.0, and Internet
|
||||
FastStart 1.1.
|
||||
|
||||
GNU CC can generate ELF binaries (if you specify `-melf') or COFF
|
||||
binaries (the default). If you are going to build your compiler
|
||||
in ELF mode (once you have bootstrapped the first stage compiler)
|
||||
you *must* specify `-melf' as part of `CC', *not* `CFLAGS', for
|
||||
example as `CC="stage1/xgcc -melf -Bstage1/" '. If you do not do
|
||||
this, the bootstrap will generate incorrect versions of `libgcc.a'.
|
||||
GNU CC can generate COFF binaries if you specify `-mcoff' or ELF
|
||||
binaries, the default. A full `make bootstrap' is recommended
|
||||
so that an ELF compiler that builds ELF is generated.
|
||||
|
||||
You must have TLS597 (from ftp.sco.com/TLS) installed for ELF
|
||||
binaries to work correctly. Note that Open Server 5.0.2 *does*
|
||||
need TLS597 installed.
|
||||
You must have TLS597 from `ftp://ftp.sco.com/TLS' installed for ELF
|
||||
C++ binaries to work correctly on releases before 5.0.4.
|
||||
|
||||
*NOTE:* You must follow the instructions about invoking `make
|
||||
bootstrap' because the native OpenServer compiler builds a
|
||||
`cc1plus' that will not correctly parse many valid C++ programs.
|
||||
You must do a `make bootstrap' if you are building with the native
|
||||
compiler.
|
||||
The native SCO assembler that is provided with the OS at no charge
|
||||
is normally required. If, however, you must be able to use the GNU
|
||||
assembler (perhaps you have complex asms) you must configure this
|
||||
package `--with-gnu-as'. To do this, install (cp or symlink)
|
||||
gcc/as to your copy of the GNU assembler. You must use a recent
|
||||
version of GNU binutils; version 2.9.1 seems to work well. If you
|
||||
select this option, you will be unable to build COFF images.
|
||||
Trying to do so will result in non-obvious failures. In general,
|
||||
the "-with-gnu-as" option isn't as well tested as the native
|
||||
assembler.
|
||||
|
||||
*NOTE:* If you are building C++, you must follow the instructions
|
||||
about invoking `make bootstrap' because the native OpenServer
|
||||
compiler may build a `cc1plus' that will not correctly parse many
|
||||
valid C++ programs. You must do a `make bootstrap' if you are
|
||||
building with the native compiler.
|
||||
|
||||
`i386-*-isc'
|
||||
It may be a good idea to link with GNU malloc instead of the
|
||||
@@ -872,10 +917,8 @@ special things you must know:
|
||||
Go to the Berkeley universe before compiling.
|
||||
|
||||
`i386-sequent-ptx1*'
|
||||
Sequent DYNIX/ptx 1.x.
|
||||
|
||||
`i386-sequent-ptx2*'
|
||||
Sequent DYNIX/ptx 2.x.
|
||||
You must install GNU `sed' before running `configure'.
|
||||
|
||||
`i386-sun-sunos4'
|
||||
You may find that you need another version of GNU CC to begin
|
||||
@@ -970,7 +1013,7 @@ special things you must know:
|
||||
options to `configure'.
|
||||
|
||||
Note the C compiler that comes with this system cannot compile GNU
|
||||
CC. You can fine binaries of GNU CC for bootstrapping on
|
||||
CC. You can find binaries of GNU CC for bootstrapping on
|
||||
`jagubox.gsfc.nasa.gov'. You will also a patched version of
|
||||
`/bin/ld' there that raises some of the arbitrary limits found in
|
||||
the original.
|
||||
@@ -1059,9 +1102,9 @@ special things you must know:
|
||||
In addition, if you wish to use gas `--with-gnu-as' you must use
|
||||
gas version 2.1 or later, and you must use the GNU linker version
|
||||
2.1 or later. Earlier versions of gas relied upon a program which
|
||||
converted the gas output into the native HP/UX format, but that
|
||||
converted the gas output into the native HP-UX format, but that
|
||||
program has not been kept up to date. gdb does not understand
|
||||
that native HP/UX format, so you must use gas if you wish to use
|
||||
that native HP-UX format, so you must use gas if you wish to use
|
||||
gdb.
|
||||
|
||||
`m68k-sun'
|
||||
@@ -1248,13 +1291,15 @@ special things you must know:
|
||||
xlc-1.2.1.8, xlc-1.3.0.0 (distributed with AIX 3.2.5), and
|
||||
xlc-1.3.0.19. Both xlc-1.2.1.28 and xlc-1.3.0.24 (PTF 432238) are
|
||||
known to produce working versions of GNU CC, but most other recent
|
||||
releases correctly bootstrap GNU CC. Also, releases of AIX prior
|
||||
to AIX 3.2.4 include a version of the IBM assembler which does not
|
||||
accept debugging directives: assembler updates are available as
|
||||
PTFs. Also, if you are using AIX 3.2.5 or greater and the GNU
|
||||
assembler, you must have a version modified after October 16th,
|
||||
1995 in order for the GNU C compiler to build. See the file
|
||||
`README.RS6000' for more details on of these problems.
|
||||
releases correctly bootstrap GNU CC.
|
||||
|
||||
Release 4.3.0 of AIX and ones prior to AIX 3.2.4 include a version
|
||||
of the IBM assembler which does not accept debugging directives:
|
||||
assembler updates are available as PTFs. Also, if you are using
|
||||
AIX 3.2.5 or greater and the GNU assembler, you must have a
|
||||
version modified after October 16th, 1995 in order for the GNU C
|
||||
compiler to build. See the file `README.RS6000' for more details
|
||||
on any of these problems.
|
||||
|
||||
GNU CC does not yet support the 64-bit PowerPC instructions.
|
||||
|
||||
@@ -1401,6 +1446,9 @@ special things you must know:
|
||||
You may need to raise the ULIMIT setting to build a C++ compiler,
|
||||
as the file `cc1plus' is larger than one megabyte.
|
||||
|
||||
|
||||
File: INSTALL, Node: Other Dir, Next: Cross-Compiler, Prev: Configurations, Up: Installation
|
||||
|
||||
Compilation in a Separate Directory
|
||||
===================================
|
||||
|
||||
@@ -1445,6 +1493,9 @@ configuration steps shown above, when ordinary source files change. You
|
||||
must, however, run `configure' again when the configuration files
|
||||
change, if your system does not support symbolic links.
|
||||
|
||||
|
||||
File: INSTALL, Node: Cross-Compiler, Next: Sun Install, Prev: Other Dir, Up: Installation
|
||||
|
||||
Building and Installing a Cross-Compiler
|
||||
========================================
|
||||
|
||||
@@ -1471,6 +1522,20 @@ If you want to link on other than the target machine, you need a
|
||||
cross-linker as well. You also need header files and libraries suitable
|
||||
for the target machine that you can install on the host machine.
|
||||
|
||||
* Menu:
|
||||
|
||||
* Steps of Cross:: Using a cross-compiler involves several steps
|
||||
that may be carried out on different machines.
|
||||
* Configure Cross:: Configuring a cross-compiler.
|
||||
* Tools and Libraries:: Where to put the linker and assembler, and the C library.
|
||||
* Cross Headers:: Finding and installing header files
|
||||
for a cross-compiler.
|
||||
* Cross Runtime:: Supplying arithmetic runtime routines (`libgcc1.a').
|
||||
* Build Cross:: Actually compiling the cross-compiler.
|
||||
|
||||
|
||||
File: INSTALL, Node: Steps of Cross, Next: Configure Cross, Up: Cross-Compiler
|
||||
|
||||
Steps of Cross-Compilation
|
||||
--------------------------
|
||||
|
||||
@@ -1496,6 +1561,9 @@ machine, since then you can do it all with a single invocation of GNU
|
||||
CC. This requires a suitable cross-assembler and cross-linker. For
|
||||
some targets, the GNU assembler and linker are available.
|
||||
|
||||
|
||||
File: INSTALL, Node: Configure Cross, Next: Tools and Libraries, Prev: Steps of Cross, Up: Cross-Compiler
|
||||
|
||||
Configuring a Cross-Compiler
|
||||
----------------------------
|
||||
|
||||
@@ -1508,6 +1576,9 @@ system running BSD on a system that `configure' can correctly identify:
|
||||
|
||||
./configure --target=m68k-hp-bsd4.3
|
||||
|
||||
|
||||
File: INSTALL, Node: Tools and Libraries, Next: Cross Headers, Prev: Configure Cross, Up: Cross-Compiler
|
||||
|
||||
Tools and Libraries for a Cross-Compiler
|
||||
----------------------------------------
|
||||
|
||||
@@ -1576,6 +1647,9 @@ machine:
|
||||
mget *crt*.o
|
||||
quit
|
||||
|
||||
|
||||
File: INSTALL, Node: Cross Runtime, Next: Build Cross, Prev: Cross Headers, Up: Cross-Compiler
|
||||
|
||||
`libgcc.a' and Cross-Compilers
|
||||
------------------------------
|
||||
|
||||
@@ -1661,6 +1735,9 @@ Otherwise, you should place your replacement library under the name
|
||||
`libgcc1.a' in the directory in which you will build the
|
||||
cross-compiler, before you run `make'.
|
||||
|
||||
|
||||
File: INSTALL, Node: Cross Headers, Next: Cross Runtime, Prev: Tools and Libraries, Up: Cross-Compiler
|
||||
|
||||
Cross-Compilers and Header Files
|
||||
--------------------------------
|
||||
|
||||
@@ -1709,6 +1786,9 @@ machine. On the target machine, do this:
|
||||
quit
|
||||
tar xf tarfile
|
||||
|
||||
|
||||
File: INSTALL, Node: Build Cross, Prev: Cross Runtime, Up: Cross-Compiler
|
||||
|
||||
Actually Building the Cross-Compiler
|
||||
------------------------------------
|
||||
|
||||
@@ -1742,11 +1822,19 @@ must specify a 68030 as the host when you configure it.
|
||||
|
||||
To install the cross-compiler, use `make install', as usual.
|
||||
|
||||
|
||||
File: INSTALL, Node: Sun Install, Next: VMS Install, Prev: Cross-Compiler, Up: Installation
|
||||
|
||||
Installing GNU CC on the Sun
|
||||
============================
|
||||
|
||||
On Solaris (version 2.1), do not use the linker or other tools in
|
||||
`/usr/ucb' to build GNU CC. Use `/usr/ccs/bin'.
|
||||
On Solaris, do not use the linker or other tools in `/usr/ucb' to
|
||||
build GNU CC. Use `/usr/ccs/bin'.
|
||||
|
||||
If the assembler reports `Error: misaligned data' when bootstrapping,
|
||||
you are probably using an obsolete version of the GNU assembler.
|
||||
Upgrade to the latest version of GNU `binutils', or use the Solaris
|
||||
assembler.
|
||||
|
||||
Make sure the environment variable `FLOAT_OPTION' is not set when
|
||||
you compile `libgcc.a'. If this option were set to `f68881' when
|
||||
@@ -1772,6 +1860,9 @@ error which does not recur if you run it again. To fix the problem,
|
||||
install Sun recommended patch 100726 (for SunOS 4.1.3) or 101508 (for
|
||||
SunOS 4.1.3_U1), or upgrade to a later SunOS release.
|
||||
|
||||
|
||||
File: INSTALL, Node: VMS Install, Next: Collect2, Prev: Sun Install, Up: Installation
|
||||
|
||||
Installing GNU CC on VMS
|
||||
========================
|
||||
|
||||
@@ -1977,6 +2068,9 @@ edit the file `tm.h' (created by `vmsconfig.com') to define the macro
|
||||
`QSORT_WORKAROUND' is always defined when GNU CC is compiled with
|
||||
VAX C, to avoid a problem in case `gcclib.olb' is not yet available.
|
||||
|
||||
|
||||
File: INSTALL, Node: Collect2, Next: Header Dirs, Prev: VMS Install, Up: Installation
|
||||
|
||||
`collect2'
|
||||
==========
|
||||
|
||||
@@ -2042,6 +2136,9 @@ search path.
|
||||
`collect2' searches for the utilities `nm' and `strip' using the
|
||||
same algorithm as above for `ld'.
|
||||
|
||||
|
||||
File: INSTALL, Node: Header Dirs, Prev: Collect2, Up: Installation
|
||||
|
||||
Standard Header File Directories
|
||||
================================
|
||||
|
||||
@@ -2070,3 +2167,22 @@ use. For a cross-compiler, this is the equivalent of `/usr/include'.
|
||||
When you build a cross-compiler, `fixincludes' processes any header
|
||||
files in this directory.
|
||||
|
||||
|
||||
|
||||
Tag Table:
|
||||
Node: Installation351
|
||||
Node: Configurations26618
|
||||
Node: Other Dir65739
|
||||
Node: Cross-Compiler67454
|
||||
Node: Steps of Cross69284
|
||||
Node: Configure Cross70401
|
||||
Node: Tools and Libraries71037
|
||||
Node: Cross Runtime73475
|
||||
Node: Cross Headers77555
|
||||
Node: Build Cross79553
|
||||
Node: Sun Install81428
|
||||
Node: VMS Install83099
|
||||
Node: Collect293028
|
||||
Node: Header Dirs95592
|
||||
|
||||
End Tag Table
|
||||
|
||||
@@ -63,7 +63,7 @@ XCFLAGS =
|
||||
TCFLAGS =
|
||||
CFLAGS = -g
|
||||
BOOT_CFLAGS = -O2 $(CFLAGS)
|
||||
WARN_CFLAGS = -W -Wall
|
||||
WARN_CFLAGS =
|
||||
# These exists to be overridden by the x-* and t-* files, respectively.
|
||||
X_CFLAGS =
|
||||
T_CFLAGS =
|
||||
@@ -280,6 +280,8 @@ includedir = $(local_prefix)/include
|
||||
assertdir = $(tooldir)/include
|
||||
# where the info files go
|
||||
infodir = @infodir@
|
||||
# Where cpp should go besides $prefix/bin if necessary
|
||||
cpp_install_dir = @cpp_install_dir@
|
||||
# Extension (if any) to put in installed man-page filename.
|
||||
manext = .1
|
||||
objext = .o
|
||||
@@ -383,6 +385,10 @@ LIB1FUNCS_EXTRA =
|
||||
# Assembler files should have names ending in `.asm'.
|
||||
LIB2FUNCS_EXTRA =
|
||||
|
||||
# Handle cpp installation.
|
||||
INSTALL_CPP=
|
||||
UNINSTALL_CPP=
|
||||
|
||||
# Default float.h source to use for cross-compiler.
|
||||
# This is overridden by configure.
|
||||
CROSS_FLOAT_H=$(srcdir)/config/float-@float_format@.h
|
||||
@@ -641,7 +647,8 @@ OBJS = toplev.o version.o tree.o print-tree.o stor-layout.o fold-const.o \
|
||||
regclass.o local-alloc.o global.o reload.o reload1.o caller-save.o gcse.o \
|
||||
insn-peep.o reorg.o $(SCHED_PREFIX)sched.o final.o recog.o reg-stack.o \
|
||||
insn-opinit.o insn-recog.o insn-extract.o insn-output.o insn-emit.o \
|
||||
profile.o insn-attrtab.o $(out_object_file) getpwd.o $(EXTRA_OBJS) convert.o
|
||||
profile.o insn-attrtab.o $(out_object_file) getpwd.o $(EXTRA_OBJS) convert.o \
|
||||
dyn-string.o
|
||||
|
||||
# GEN files are listed separately, so they can be built before doing parallel
|
||||
# makes for cc1 or cc1plus. Otherwise sequent parallel make attempts to load
|
||||
@@ -1413,7 +1420,7 @@ dwarfout.o : dwarfout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) dwarf.h \
|
||||
flags.h insn-config.h reload.h output.h defaults.h toplev.h dwarfout.h
|
||||
dwarf2out.o : dwarf2out.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) dwarf2.h \
|
||||
flags.h insn-config.h reload.h output.h defaults.h \
|
||||
hard-reg-set.h $(REGS_H) $(EXPR_H) toplev.h dwarf2out.h
|
||||
hard-reg-set.h $(REGS_H) $(EXPR_H) toplev.h dwarf2out.h dyn-string.h
|
||||
xcoffout.o : xcoffout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) xcoffout.h \
|
||||
flags.h toplev.h output.h dbxout.h
|
||||
emit-rtl.o : emit-rtl.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
|
||||
@@ -1428,7 +1435,7 @@ integrate.o : integrate.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
|
||||
|
||||
jump.o : jump.c $(CONFIG_H) system.h $(RTL_H) flags.h hard-reg-set.h $(REGS_H) \
|
||||
insn-config.h insn-flags.h $(RECOG_H) $(EXPR_H) real.h except.h \
|
||||
toplev.h
|
||||
toplev.h insn-attr.h
|
||||
stupid.o : stupid.c $(CONFIG_H) system.h $(RTL_H) $(REGS_H) hard-reg-set.h \
|
||||
flags.h toplev.h
|
||||
|
||||
@@ -1489,6 +1496,7 @@ recog.o : recog.c $(CONFIG_H) system.h $(RTL_H) \
|
||||
insn-flags.h insn-codes.h real.h
|
||||
reg-stack.o : reg-stack.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) \
|
||||
$(REGS_H) hard-reg-set.h flags.h insn-config.h insn-flags.h toplev.h
|
||||
dyn-string.o: dyn-string.c dyn-string.h $(CONFIG_H) system.h gansidecl.h
|
||||
|
||||
$(out_object_file): $(out_file) $(CONFIG_H) $(TREE_H) \
|
||||
$(RTL_H) $(REGS_H) hard-reg-set.h real.h insn-config.h conditions.h \
|
||||
@@ -2002,9 +2010,12 @@ stmp-fixinc: $(FIXINCLUDES) gsyslimits.h
|
||||
$(SHELL) $(srcdir)/$(FIXINCLUDES) include $$dir; \
|
||||
else true; fi; \
|
||||
done; \
|
||||
rm -f include/assert.h; \
|
||||
cp $(srcdir)/assert.h include/assert.h; \
|
||||
chmod a+r include/assert.h; \
|
||||
if [ x$(INSTALL_ASSERT_H) != x ] ; \
|
||||
then \
|
||||
rm -f include/assert.h; \
|
||||
cp $(srcdir)/assert.h include/assert.h; \
|
||||
chmod a+r include/assert.h; \
|
||||
fi \
|
||||
else true; \
|
||||
fi
|
||||
rm -f include/syslimits.h
|
||||
@@ -2254,7 +2265,8 @@ install: $(INSTALL_TARGET) ; @true
|
||||
# Install the driver last so that the window when things are
|
||||
# broken is small.
|
||||
install-normal: install-common $(INSTALL_HEADERS) $(INSTALL_LIBGCC) \
|
||||
install-man install-info lang.install-normal install-driver
|
||||
$(INSTALL_CPP) install-man install-info lang.install-normal \
|
||||
install-driver
|
||||
|
||||
# Do nothing while making gcc with a cross-compiler. The person who
|
||||
# makes gcc for the target machine has to know how to put a complete
|
||||
@@ -2266,6 +2278,25 @@ install-build: force
|
||||
# to finish installation of cross compiler.
|
||||
install-cross-rest: install-float-h-cross
|
||||
|
||||
# Handle cpp installation.
|
||||
install-cpp: cpp.sh
|
||||
-rm -f $(bindir)/cpp
|
||||
$(INSTALL_PROGRAM) -m 755 cpp.sh $(bindir)/cpp
|
||||
if [ x$(cpp_install_dir) != x ]; then \
|
||||
rm -f $(cpp_install_dir)/cpp; \
|
||||
$(INSTALL_PROGRAM) -m 755 cpp.sh $(cpp_install_dir)/cpp; \
|
||||
else true; fi
|
||||
|
||||
cpp.sh: $(srcdir)/cpp.in Makefile
|
||||
sed -e 's%@GCC@%'$(GCC_INSTALL_NAME)'%' $(srcdir)/cpp.in > xcpp.T
|
||||
mv -f xcpp.T cpp.sh
|
||||
|
||||
uninstall-cpp:
|
||||
-rm -f $(bindir)/cpp
|
||||
-if [ x$(cpp_install_dir) != x ]; then \
|
||||
rm -f $(cpp_install_dir)/cpp; \
|
||||
else true; fi
|
||||
|
||||
# Install float.h for cross compiler.
|
||||
# Run this on the target machine!
|
||||
install-float-h-cross: installdirs
|
||||
@@ -2384,9 +2415,11 @@ install-info: doc installdirs lang.install-info
|
||||
$(INSTALL_DATA) $$f $(infodir)/$$f; \
|
||||
done
|
||||
-if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
|
||||
if [ -f $(infodir)/dir ] ; then \
|
||||
for f in cpp.info gcc.info; do \
|
||||
install-info --dir-file=$(infodir)/dir $(infodir)/$$f; \
|
||||
done; \
|
||||
else true; fi; \
|
||||
else true; fi;
|
||||
-chmod a-x $(infodir)/cpp.info* $(infodir)/gcc.info*
|
||||
|
||||
@@ -2494,7 +2527,7 @@ install-collect2: collect2 installdirs
|
||||
$(INSTALL_PROGRAM) xgcc$(exeext) $(libsubdir)/gcc$(exeext)
|
||||
|
||||
# Cancel installation by deleting the installed files.
|
||||
uninstall: lang.uninstall
|
||||
uninstall: lang.uninstall $(UNINSTALL_CPP)
|
||||
-rm -rf $(libsubdir)
|
||||
-rm -rf $(bindir)/$(GCC_INSTALL_NAME)$(exeext)
|
||||
-rm -rf $(bindir)/$(GCC_CROSS_NAME)$(exeext)
|
||||
@@ -2739,9 +2772,11 @@ compare compare3 compare4 compare-lean compare3-lean compare4-lean: force
|
||||
for dir in tmp-foo $(SUBDIRS); do \
|
||||
if [ "`echo $$dir/*$(objext)`" != "$$dir/*$(objext)" ] ; then \
|
||||
for file in $$dir/*$(objext); do \
|
||||
tail +16c ./$$file > tmp-foo1; \
|
||||
tail +16c stage$$stage/$$file > tmp-foo2 \
|
||||
&& (cmp tmp-foo1 tmp-foo2 > /dev/null 2>&1 || echo $$file differs >> .bad_compare) || true; \
|
||||
if [ $$file != objc/NXConstStr.o -a $$file != objc/Object.o -a $$file != objc/Protocol.o -a $$file != objc/linking.o ] ; then \
|
||||
tail +16c ./$$file > tmp-foo1; \
|
||||
tail +16c stage$$stage/$$file > tmp-foo2 \
|
||||
&& (cmp tmp-foo1 tmp-foo2 > /dev/null 2>&1 || echo $$file differs >> .bad_compare) || true; \
|
||||
else true; fi; \
|
||||
done; \
|
||||
fi; \
|
||||
done
|
||||
@@ -2772,7 +2807,9 @@ gnucompare gnucompare3 gnucompare4 gnucompare-lean gnucompare3-lean gnucompare4-
|
||||
for dir in tmp-foo $(SUBDIRS); do \
|
||||
if [ "`echo $$dir/*$(objext)`" != "$$dir/*$(objext)" ] ; then \
|
||||
for file in $$dir/*$(objext); do \
|
||||
(cmp --ignore-initial=16 $$file stage$$stage/$$file > /dev/null 2>&1 || echo $$file differs >> .bad_compare) || true; \
|
||||
if [ $$file != objc/NXConstStr.o -a $$file != objc/Object.o -a $$file != objc/Protocol.o -a $$file != objc/linking.o ] ; then \
|
||||
(cmp --ignore-initial=16 $$file stage$$stage/$$file > /dev/null 2>&1 || echo $$file differs >> .bad_compare) || true; \
|
||||
else true; fi; \
|
||||
done; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
106
gcc/NEWS
106
gcc/NEWS
@@ -1,4 +1,104 @@
|
||||
Noteworthy changes in GCC for EGCS.
|
||||
Noteworthy changes in GCC for EGCS 1.1.
|
||||
---------------------------------------
|
||||
|
||||
The compiler now implements global common subexpression elimination (gcse) as
|
||||
well as global constant/copy propagation. (link to gcse page).
|
||||
|
||||
More major improvements have been made to the alias analysis code. A new
|
||||
option to allow front-ends to provide alias information to the optimizers
|
||||
has also been added (-fstrict-aliasing). -fstrict-aliasing is off by default
|
||||
now, but will be enabled by default in the future. (link to alias page)
|
||||
|
||||
Major changes continue in the exception handling support. This release
|
||||
includes some changes to reduce static overhead for exception handling. It
|
||||
also includes some major changes to the setjmp/longjmp based EH mechanism to
|
||||
make it less pessimistic. And finally, major infrastructure improvements
|
||||
to the dwarf2 EH mechanism have been made to make our EH support extensible.
|
||||
|
||||
We have fixed the infamous security problems with temporary files.
|
||||
|
||||
The "regmove" optimization pass has been nearly completely rewritten. It now
|
||||
uses much more information about the target to determine profitability of
|
||||
transformations.
|
||||
|
||||
The compiler now recomputes register usage information immediately before
|
||||
register allocation. Previously such information was only not kept up to
|
||||
date after instruction combination which led to poor register allocation
|
||||
choices by our priority based register allocator.
|
||||
|
||||
The register reloading phase of the compiler has been improved to better
|
||||
optimize spill code. This primarily helps targets which generate lots of
|
||||
spills (like the x86 ports and many register poor embedded ports).
|
||||
|
||||
A few changes in the heuristics used by the register allocator and scheduler
|
||||
have been made which can significantly improve performance for certain
|
||||
applications.
|
||||
|
||||
The compiler's branch shortening algorithms have been significantly improved
|
||||
to work better on targets which align jump targets.
|
||||
|
||||
The compiler now supports the "ADDRESSOF" optimization which can significantly
|
||||
reduce the overhead for certain inline calls (and inline calls in general).
|
||||
|
||||
The compiler now supports a code size optimization switch (-Os). When enabled
|
||||
the compiler will prefer optimizations which improve code size over those
|
||||
which improve code speed.
|
||||
|
||||
The compiler has been improved to completely eliminate library calls which
|
||||
compute constant values. This is particularly useful on machines which
|
||||
do not have integer mul/div or floating point support on-chip.
|
||||
|
||||
GCC now supports a "--help" option to print detailed help information.
|
||||
|
||||
cpplib has been greatly improved. It is probably useable for some sites now
|
||||
(major missing feature is trigraphs).
|
||||
|
||||
Memory footprint for the compiler has been significantly reduced for certain
|
||||
pathalogical cases.
|
||||
|
||||
Build time improvements for targets which support lots of sched parameters
|
||||
(alpha and mips primarily).
|
||||
|
||||
Compile time for certain programs using large constant initializers has been
|
||||
improved (effects glibc significantly).
|
||||
|
||||
Plus an incredible number of infrastructure changes, warning fixes, bugfixes
|
||||
and local optimizations.
|
||||
|
||||
Various improvements have been made to better support cross compilations. They
|
||||
are still not easy, but they are improving.
|
||||
|
||||
Target specific NEWS
|
||||
|
||||
Sparc: Now includes V8 plus and V9 support, lots of tuning for Ultrasparcs
|
||||
and uses the Haifa scheduler by default.
|
||||
|
||||
Alpha: EV6 tuned, optimized expansion of memcpy/bzero.
|
||||
|
||||
x86: Data in the static store is aligned per Intel recommendations. Jump
|
||||
targets are aligned per Intel recommendations. Improved epilogue
|
||||
sequences for Pentium chips. Backend improvements which should help
|
||||
register allocation on all x86 variants. Support for PPro conditional
|
||||
move instructions has been fixed and enabled. Random changes
|
||||
throughout the port to make generated code more Pentium friendly.
|
||||
Improved support for 64bit integer operations.
|
||||
Unixware 7, a System V Release 5 target is now supported.
|
||||
SCO OpenServer targets can support GAS. See gcc/INSTALL for details.
|
||||
|
||||
RS6000/PowerPC: Includes AIX4.3 support as well as PowerPC64 support.
|
||||
Haifa instruction scheduling is enabled by default now.
|
||||
|
||||
MIPS: Multiply/Multiply-Add support has been largely rewritten to generate
|
||||
more efficient code. Includes mips16 support.
|
||||
|
||||
M68K: Various micro-optimizations and Coldfire fixes.
|
||||
|
||||
M32r: Major improvements to this port.
|
||||
|
||||
Arm: Includes Thumb and super interworking support.
|
||||
|
||||
EGCS includes all gcc2 changes up to and including the June 9, 1998 snapshot.
|
||||
|
||||
|
||||
Noteworthy changes in GCC version 2.8.1
|
||||
---------------------------------------
|
||||
@@ -138,7 +238,7 @@ New features for Motorola 68k family:
|
||||
|
||||
New features for the HP PA RISC:
|
||||
|
||||
-mspace and m-no-space
|
||||
-mspace and -mno-space
|
||||
-mlong-load-store and -mno-long-load-store
|
||||
-mbig-switch -mno-big-switch
|
||||
|
||||
@@ -171,7 +271,7 @@ New features for rs6000 and PowerPC systems:
|
||||
The Linux-based GNU system running on PowerPC's.
|
||||
-mcpu=604e,602,603e,620,801,823,mpc505,821,860,power2
|
||||
-mtune=xxx
|
||||
-mrelocatable-lib, m-no-relocatable-lib
|
||||
-mrelocatable-lib, -mno-relocatable-lib
|
||||
-msim, -mmve, -memb
|
||||
-mupdate, -mno-update
|
||||
-mfused-madd, -mno-fused-madd
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
This directory contains the egcs version 1.0 release of the GNU C
|
||||
This directory contains the egcs version 1.1.2 release of the GNU C
|
||||
compiler. It includes all of the support for compiling C++ and
|
||||
Objective C, including a run-time library for Objective C.
|
||||
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
AIX 4.3 archive libraries
|
||||
|
||||
AIX 4.3 utilizes a new "large format" archive to support both 32-bit and
|
||||
64-bit object modules. The routines provided in AIX 4.3.0 and AIX 4.3.1
|
||||
to parse archive libraries did not handle the new format correctly. These
|
||||
routines are used by GCC and result in error messages during linking such
|
||||
as "not a COFF file". The version of the routines shipped with AIX 4.3.1
|
||||
should work for a 32-bit environment. The "-g" option of the archive
|
||||
command may be used to create archives of 32-bit objects using the
|
||||
original "small format". A correct version of the routines is shipped
|
||||
with AIX 4.3.2.
|
||||
|
||||
|
||||
AIX 4.3 assembler
|
||||
|
||||
The AIX 4.3.0.0 assembler generates incorrect object files if the ".bs"
|
||||
@@ -5,12 +18,19 @@ pseudo-op references symbols in certain sections. If GCC is invoked with
|
||||
the -g debugging option (including during bootstrapping), incorrect object
|
||||
files will be produced and the AIX linker will fail with a severe error.
|
||||
A fix for APAR IX74254 (64BIT DISASSEMBLED OUPUT FROM COMPILER FAILS TO
|
||||
ASSEMBLE/BIND) is available from IBM Customer Support and IBM's
|
||||
ASSEMBLE/BIND) is available from IBM Customer Support and from its
|
||||
service.boulder.ibm.com website as PTF U453956.
|
||||
|
||||
|
||||
AIX 4.1 binder
|
||||
|
||||
Some versions of the AIX binder (linker) can fail with a relocation
|
||||
overflow severe error when the -bbigtoc option is used to link
|
||||
GCC-produced object files into an executable that overflows the TOC.
|
||||
Linking f771, the GNU Fortran backend, will fail in this manner. A fix
|
||||
for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
|
||||
available from IBM Customer Support and from its website as PTF U455193.
|
||||
|
||||
Due to changes in the way that GCC invokes the binder (linker) for AIX 4.1,
|
||||
the link step now may produce warnings of duplicate symbols which were not
|
||||
reported before. The assembly files generated by GCC for AIX always have
|
||||
@@ -104,8 +124,7 @@ assembler.
|
||||
|
||||
Any customer can order and get the replacement assembler, and install it on
|
||||
one or more machines. It is available on diskette from IBM Customer Support
|
||||
and from the IBM Internet fix anonymous ftp server (FixDist) at
|
||||
service.boulder.ibm.com (198.17.57.66).
|
||||
and from its website.
|
||||
|
||||
If you contact IBM Customer Support, they may also ask you for your customer
|
||||
number. If you do not know it, you will still be able to get the fix, but
|
||||
|
||||
277
gcc/README.g77
277
gcc/README.g77
@@ -1,134 +1,221 @@
|
||||
1998-03-08
|
||||
1998-08-11
|
||||
|
||||
This directory contains the version 0.5.22 release of the GNU Fortran
|
||||
compiler. The GNU Fortran compiler is free software. See the file
|
||||
COPYING.g77 for copying permission.
|
||||
This directory contains the egcs variant of version 0.5.24 of the
|
||||
GNU Fortran compiler (g77). The GNU Fortran compiler is free software.
|
||||
See the file COPYING.g77 for copying permission.
|
||||
|
||||
* IMPORTANT: Things you *must* do are marked with a * at the beginning of
|
||||
the line in this file!!!
|
||||
Currently, two variants of g77 exist. One is the Free Software Foundation
|
||||
(FSF) variant. The other is the egcs variant. As of egcs version 1.1,
|
||||
these variants are kept fairly similar in most respects. Pertinent
|
||||
differences, such as the layout of the source code, are specified below.
|
||||
|
||||
* DO NOT send any email (reporting bugs, asking questions, etc.) to
|
||||
<fortran@gnu.org> without *first* reading the g77 documentation,
|
||||
using `info', Info mode in GNU Emacs, or a text viewer such as `more'.
|
||||
The g77 documentation is in the files named `g77.info', `g77.info-1',
|
||||
`g77.info-2', and so on in g77 `f' directory. If these files are
|
||||
not present or you can't find them, contact the person or organization
|
||||
that put together the g77 distribution you are using (probably not the
|
||||
FSF), or ask your system administrator for help.
|
||||
Below, `[FSF]' denotes information applicable to only the FSF variant of
|
||||
g77, while `[egcs]' denotes egcs-only information.
|
||||
|
||||
This README is for GNU Fortran, and describes the files in the f/
|
||||
directory. The f/ directory is intended to be a subdirectory of a
|
||||
gcc source tree. These directories are referred to below as gcc/,
|
||||
which is the top-level directory containing the gcc back end, the
|
||||
gcc C front end, and other non-Fortran files, and gcc/f/, which
|
||||
contains all of the Fortran files.
|
||||
|
||||
* To build GNU Fortran, you must have a source distribution of gcc
|
||||
version 2.7.2.3. Do not attempt to use any other version
|
||||
of gcc, because this version of g77 is designed to work only with
|
||||
gcc version 2.7.2.3.
|
||||
* IMPORTANT: Things you *must* do (or avoid) are marked with a * at the
|
||||
beginning of the line in this file!!!
|
||||
|
||||
* Note that you must have source copies of these gcc distributions!!
|
||||
You cannot build g77 just using binaries of gcc. Also, unless you
|
||||
are an expert, avoid using any distribution of gcc not identical to
|
||||
the one distributed by the FSF.
|
||||
|
||||
If you have just unpacked the g77 distribution, before proceeding,
|
||||
The email address to which bugs are to be reported is either
|
||||
[FSF] <fortran@gnu.org> or [egcs] <egcs-bugs@cygnus.com>.
|
||||
|
||||
* *DO NOT* send any email (reporting bugs, asking questions, etc.) to
|
||||
either of these addresses without *first* reading the g77 documentation.
|
||||
Use `info', Info mode in GNU Emacs, or a text viewer such as `more' to
|
||||
do this.
|
||||
|
||||
The g77 documentation is in the source files named `g77.info',
|
||||
`g77.info-1', `g77.info-2', and so on in the `f' subdirectory. If these
|
||||
files are not present or you can't find them, contact the person or
|
||||
organization that put together the g77 distribution you are using (probably
|
||||
not the FSF or egcs), or ask your system administrator for help.
|
||||
|
||||
|
||||
This README applies to only the g77-specific portions of the source-code
|
||||
tree that contains it. These portions include:
|
||||
|
||||
- The README.g77 and [FSF] COPYING.g77 files, in this directory, "this
|
||||
directory" being [FSF] the top-level directory containing a g77
|
||||
distribution or [egcs] the gcc/ subdirectory of an egcs distribution.
|
||||
|
||||
- The g77 front end, in the f/ subdirectory of this directory.
|
||||
|
||||
- The libg2c library, in [FSF] the f/runtime/ subdirectory of this
|
||||
directory or [egcs] the libf2c/ directory under the top-level
|
||||
directory of the egcs distribution.
|
||||
|
||||
|
||||
* To build g77, you must have a source distribution of [FSF] gcc
|
||||
version 2.8 or [egcs] egcs version 1.1. Do not attempt to use
|
||||
any other version of gcc or egcs, because this version of g77 is
|
||||
designed to work with only those versions.
|
||||
|
||||
Note that you must have *source* copies of the gcc or egcs distribution!
|
||||
You cannot build g77 just using binaries of gcc or egcs. Also, unless
|
||||
you are an expert, avoid using any distribution of gcc or egcs not
|
||||
identical to the ones distributed by the FSF and Cygnus Support,
|
||||
respectively. The primary FSF distribution site is:
|
||||
|
||||
<ftp://ftp.gnu.org/pub/gnu/>
|
||||
|
||||
The primary egcs distribution site is:
|
||||
|
||||
<ftp://ftp.cygnus.com/pub/egcs/>
|
||||
|
||||
Both of these sites have approved mirror sites from which valid
|
||||
distributions also may be obtained.
|
||||
|
||||
* Do not attempt to combine the egcs version of g77 with the FSF
|
||||
gcc distribution, or the FSF version of g77 with the egcs gcc
|
||||
distribution. Although the differences are minor, they might
|
||||
be sufficient to prevent g77 from building properly, or from
|
||||
working properly if the build appears to succeed.
|
||||
|
||||
[FSF] g77 is distributed as g77-<version>/f/ so that unpacking the g77
|
||||
distribution is done in the normal GNU way, resulting in a directory having
|
||||
the version number in the name. However, to build g77, the g77 distribution
|
||||
must be merged with an appropriate gcc distribution, normally in a gcc
|
||||
source directory, before configuring, building, and installing g77.
|
||||
|
||||
[FSF] If you have just unpacked the g77 distribution, before proceeding,
|
||||
you must merge the contents of the g77 distribution with the appropriate
|
||||
gcc distribution on your system before proceeding.
|
||||
gcc distribution on your system.
|
||||
|
||||
* Read and follow the instructions in g77-0.5.22/f/INSTALL that
|
||||
* [FSF] Read and follow the instructions in f/INSTALL that
|
||||
explain how to merge a g77 source directory into a gcc source
|
||||
directory. You can use Info to read the same installation
|
||||
instructions via:
|
||||
|
||||
info -f g77-0.5.22/f/g77.info -n Unpacking
|
||||
info -f f/g77.info -n Unpacking
|
||||
|
||||
The resulting directory layout includes the following, where gcc/ might be
|
||||
a link to, for example, gcc-2.7.2.3/:
|
||||
[FSF] The resulting directory layout includes the following, where gcc/
|
||||
might be a link to, for example, gcc-2.8.1/:
|
||||
|
||||
gcc/ Non-Fortran files in gcc (not part of g77*.tar)
|
||||
gcc/ Non-g77 files in gcc
|
||||
gcc/COPYING.g77 A copy of the GPL, under which g77 is licensed
|
||||
gcc/README.g77 This file
|
||||
gcc/f/ GNU Fortran front end
|
||||
gcc/f/gbe/ Patches required for gcc back end versions
|
||||
gcc/f/runtime/ libf2c configuration and f2c.h file generation
|
||||
gcc/f/runtime/libF77/ Non-I/O portion of libf2c
|
||||
gcc/f/runtime/libI77/ I/O portion of libf2c
|
||||
gcc/f/runtime/libU77/ Additional interfaces to libc for libf2c
|
||||
gcc/f/runtime/ libg2c configuration and g2c.h file generation
|
||||
gcc/f/runtime/libF77/ Non-I/O portion of libg2c
|
||||
gcc/f/runtime/libI77/ I/O portion of libg2c
|
||||
gcc/f/runtime/libU77/ Additional interfaces to libc for libg2c
|
||||
|
||||
gcc/f/ as a whole contains the program GNU Fortran (g77), plus a portion
|
||||
of the separate program f2c, which is in gcc/f/runtime. NOTE: The libf2c
|
||||
code is not part of the program g77, just distributed with it.
|
||||
|
||||
This directory is named gcc/f/ because it, along with its contents, is
|
||||
designed to be a subdirectory of a GNU CC (gcc) development directory. I.e.
|
||||
when a gcc distribution is unpacked into a directory (named gcc/ for
|
||||
example), it typically contains subdirectories like gcc/config/ and
|
||||
gcc/cp/. The latter is the subdirectory for the GNU C++ (g++) program.
|
||||
|
||||
Similarly, the g77 directory f/ is designed to be placed in gcc/ so that
|
||||
it becomes the subdirectory gcc/f/. g77 is distributed as g77-someversion/f/
|
||||
so that unpacking the g77 distribution is done in the normal GNU way,
|
||||
resulting in a directory having the version number in the name. However,
|
||||
to build g77, the g77 distribution must be merged with an appropriate gcc
|
||||
distribution, normally in a gcc directory, before configuring, building,
|
||||
and installing g77.
|
||||
|
||||
Applying g77 patches in the form of .diff files is done by typing
|
||||
`patch -p1 -d gcc' (where gcc/f/ is the active version). That is,
|
||||
[FSF] Applying g77 patches in the form of .diff files is done by typing
|
||||
`patch -p1 -d gcc' (where gcc/ contains the f/ subdirectory). That is,
|
||||
g77 patches are distributed in the same form, and at the same directory
|
||||
level, as patches to the gcc distribution. (Note: make sure you're
|
||||
using GNU patch, version 2.5 or later! Other versions of patch
|
||||
have trouble with g77-related patches.)
|
||||
|
||||
gcc/f/ has text files that document the Fortran compiler, source
|
||||
[egcs] The egcs version of g77 is distributed already merged with
|
||||
the rest of egcs (such as the gcc back end).
|
||||
|
||||
[egcs] The resulting directory layout includes the following, where egcs/
|
||||
might be a link to, for example, egcs-1.1/:
|
||||
|
||||
egcs/gcc/ Non-g77 files in gcc
|
||||
egcs/gcc/README.g77 This file
|
||||
egcs/gcc/f/ GNU Fortran front end
|
||||
egcs/libf2c/ libg2c configuration and g2c.h file generation
|
||||
egcs/libf2c/libF77/ Non-I/O portion of libg2c
|
||||
egcs/libf2c/libI77/ I/O portion of libg2c
|
||||
egcs/libf2c/libU77/ Additional interfaces to libc for libg2c
|
||||
|
||||
[egcs] Applying g77-specific patches to egcs is done the same way as
|
||||
applying other egcs patches.
|
||||
|
||||
|
||||
Below, `libf2c/' shall denote [FSF] gcc/f/runtime/ or [egcs] egcs/libf2c/,
|
||||
while `f/' shall denote [FSF] the rest of gcc/f/ or [egcs] egcs/gcc/f/.
|
||||
|
||||
|
||||
Components of note in g77 are described below.
|
||||
|
||||
f/ as a whole contains the program GNU Fortran (g77), while libf2c/
|
||||
contains a portion of the separate program f2c. Note: The libf2c
|
||||
code is not part of the program g77, just distributed with it.
|
||||
|
||||
f/ contains text files that document the Fortran compiler, source
|
||||
files for the GNU Fortran Front End (FFE), and some other stuff.
|
||||
The g77 compiler code is placed in f/ because it, along with its contents,
|
||||
is designed to be a subdirectory of a GNU CC (gcc) source directory, gcc/,
|
||||
which is structured so that language-specific front ends can be "dropped
|
||||
in" as subdirectories. The C++ front end (g++), is an example of this --
|
||||
it resides in the cp/ subdirectory. Note that the C front end (also
|
||||
referred to as gcc) is an exception to this, as its source files reside
|
||||
in the gcc/ directory itself.
|
||||
|
||||
gcc/f/gbe/ has patch files for various versions of gcc, primarily
|
||||
needed to patch the GNU compiler Back End (GBE) to fix and improve it
|
||||
for use with g77. If a patch file exists for the version of gcc you
|
||||
want to build along with g77, you MUST apply the patch before building
|
||||
g77 with that version or g77 will not build or work properly.*
|
||||
libf2c/ contains the run-time libraries for the f2c program, also used
|
||||
by g77. These libraries normally referred to collectively as libf2c.
|
||||
When built as part of g77, libf2c is installed under the name libg2c to avoid
|
||||
conflict with any existing version of libf2c, and thus is often referred
|
||||
to as libg2c when the g77 version is specifically being referred to.
|
||||
|
||||
* Read gcc/f/gbe/README for more information.
|
||||
The netlib version of libf2c/ contains two distinct libraries, libF77 and
|
||||
libI77, each in their own subdirectories. In g77, this distinction is not
|
||||
made, beyond maintaining the subdirectory structure in the source-code tree.
|
||||
|
||||
gcc/f/runtime/ contains the run-time libraries for the f2c program, also used
|
||||
by g77, and referred to as libf2c (though libf2c is really a combination of
|
||||
two distinct libraries, libF77 and libI77 -- in g77, this distinction is
|
||||
not made, and, further, Dave Love's implementation of libU77 is added
|
||||
to the mix). This separate subdirectory is not part of the program g77, just
|
||||
distributed with it. Some new files have been added to this subdirectory
|
||||
and some minor changes made to the files contained therein, to fix some
|
||||
bugs and facilitate automatic configuration, building, and installation of
|
||||
libf2c for use by g77 users. See gcc/f/runtime/README for more information.
|
||||
libf2c/ is not part of the program g77, just distributed with it. It
|
||||
contains files not present in the official (netlib) version of libf2c,
|
||||
and also contains some minor changes made from libf2c, to fix some bugs,
|
||||
and to facilitate automatic configuration, building, and installation of
|
||||
libf2c (as libg2c) for use by g77 users.
|
||||
|
||||
gcc/f/BUGS lists some important bugs known to be in g77. Or:
|
||||
* See libf2c/README for more information, including licensing conditions
|
||||
governing distribution of programs containing code from libg2c.
|
||||
|
||||
info -f gcc/f/g77.info -n "Actual Bugs"
|
||||
libg2c, g77's version of libf2c, adds Dave Love's implementation of
|
||||
libU77, in the libf2c/libU77/ directory. This library is distributed
|
||||
under the GNU Library General Public License (LGPL) -- see the
|
||||
file libf2c/libU77/COPYING.LIB for more information, as this license
|
||||
governs distribution conditions for programs containing code from
|
||||
this portion of the library.
|
||||
|
||||
gcc/f/ChangeLog lists recent changes to g77 internals.
|
||||
|
||||
gcc/f/INSTALL describes how to build and install GNU Fortran. Or:
|
||||
Files of note in g77 are described below.
|
||||
|
||||
info -f gcc/f/g77.info -n Installation
|
||||
f/BUGS lists some important bugs known to be in g77. Or:
|
||||
|
||||
gcc/f/NEWS contains the per-release changes (not just user-visible ones
|
||||
seen in gcc/f/DOC) listed in the ~fortran/.plan file. Or:
|
||||
info -f f/g77.info -n "Actual Bugs"
|
||||
|
||||
info -f gcc/f/g77.info -n News
|
||||
f/ChangeLog lists recent changes to g77 internals.
|
||||
|
||||
* Read gcc/f/BUGS, gcc/f/INSTALL, and gcc/f/NEWS at the very least!
|
||||
All users of g77 (not just installers) should read gcc/f/g77.info*
|
||||
libf2c/ChangeLog lists recent changes to libg2c internals.
|
||||
|
||||
[FSF] f/INSTALL describes how to build and install GNU Fortran. Or:
|
||||
|
||||
info -f f/g77.info -n Installation
|
||||
|
||||
f/NEWS contains the per-release changes. These include the user-visible
|
||||
changes described under "Changes" in the g77 documentation, plus internal
|
||||
changes of import. Or:
|
||||
|
||||
info -f f/g77.info -n News
|
||||
|
||||
* All users of g77 (not just installers) should read f/g77.info*
|
||||
as well, using the `more' command if neither the `info' command,
|
||||
nor GNU Emacs (with its Info mode), are available, or if they
|
||||
aren't yet accustomed to using these tools.
|
||||
aren't yet accustomed to using these tools. Read f/BUGS and f/NEWS
|
||||
plus, if you are planning on building or installing the FSF version
|
||||
of g77, f/INSTALL, at the very least! All of these files are
|
||||
readable as "plain text" files.
|
||||
|
||||
If you want to get into the FFE code, which lives entirely in gcc/f/, here
|
||||
are a few clues. The file g77.c is the stand-alone source file for the
|
||||
`g77' command driver only -- this just invokes the `gcc' command, so it has
|
||||
nothing to do with the rest of the code in g77. Most of the code
|
||||
ends up in an executable named `f771', which does the actual compiling,
|
||||
so it has the FFE merged with the gcc back end.
|
||||
* Also see <ftp://alpha.gnu.org/g77.plan> for up-to-date information
|
||||
regarding g77 bug reports, known bugs, bug-fixes, and new versions.
|
||||
|
||||
|
||||
The rest of this file is of note to only those who wish to
|
||||
debug, modify, or test the FFE (in conjunction with the gcc back end).
|
||||
|
||||
If you want to explore the FFE code, which lives entirely in f/, here
|
||||
are a few clues. The file g77spec.c contains the g77-specific source code
|
||||
for the `g77' command only -- this just forms a variant of the `gcc'
|
||||
command, so, just as the `gcc' command itself does not contain
|
||||
the C front end, the `g77' command does not contain the Fortran front
|
||||
end (FFE). The FFE code ends up in an executable named `f771', which
|
||||
does the actual compiling, so it contains the FFE plus the gcc back end
|
||||
(the latter to do most of the optimization, and the code generation).
|
||||
|
||||
The file parse.c is the source file for main() for a stand-alone FFE and
|
||||
yyparse() for f771. (Stand-alone building of the FFE doesn't work these days.)
|
||||
@@ -158,7 +245,7 @@ is being dynamically configured by ffecom_init_0); com.h and com.c, which
|
||||
interface to the target back end (currently only FFE stand-alone and the GBE);
|
||||
ste.c, which contains code for implementing recognized executable statements
|
||||
in the target back end (again currently either FFE or GBE); src.h and src.c,
|
||||
which describe information on the format(s) of source files (like whether
|
||||
which describe information on the format(s) of source files (such as whether
|
||||
they are never to be processed as case-insensitive with regard to Fortran
|
||||
keywords); and proj.c, which contains whatever code is needed to support
|
||||
the language defined by proj.h.
|
||||
@@ -173,4 +260,4 @@ the compiler is in the second pass, otherwise it is in the first.
|
||||
(This information might help you reduce a test case and/or work around
|
||||
a bug in g77 until a fix is available.)
|
||||
|
||||
Any questions or comments on these topics, email <fortran@gnu.org>.
|
||||
Any questions or comments on these topics? Read the g77 documentation!
|
||||
|
||||
831
gcc/SERVICE
831
gcc/SERVICE
File diff suppressed because it is too large
Load Diff
15
gcc/alias.c
15
gcc/alias.c
@@ -942,9 +942,15 @@ true_dependence (mem, mem_mode, x, varies)
|
||||
|
||||
If either memory reference is a variable structure the other is a
|
||||
fixed scalar and there is no aliasing. */
|
||||
if ((MEM_IN_STRUCT_P (mem) && varies (mem_addr))
|
||||
|| (MEM_IN_STRUCT_P (x) && varies (x_addr)))
|
||||
return 0;
|
||||
|
||||
/* Disabled by default for egcs 1.1.x as alias analysis isn't good
|
||||
enough yet to discover all cases where this doesn't apply. */
|
||||
if (flag_structure_noalias)
|
||||
{
|
||||
if ((MEM_IN_STRUCT_P (mem) && varies (mem_addr))
|
||||
|| (MEM_IN_STRUCT_P (x) && varies (x_addr)))
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -1174,7 +1180,8 @@ init_alias_analysis ()
|
||||
&& (((note = find_reg_note (insn, REG_EQUAL, 0)) != 0
|
||||
&& REG_N_SETS (REGNO (SET_DEST (set))) == 1)
|
||||
|| (note = find_reg_note (insn, REG_EQUIV, NULL_RTX)) != 0)
|
||||
&& GET_CODE (XEXP (note, 0)) != EXPR_LIST)
|
||||
&& GET_CODE (XEXP (note, 0)) != EXPR_LIST
|
||||
&& ! reg_overlap_mentioned_p (SET_DEST (set), XEXP (note, 0)))
|
||||
{
|
||||
int regno = REGNO (SET_DEST (set));
|
||||
reg_known_value[regno] = XEXP (note, 0);
|
||||
|
||||
@@ -845,8 +845,16 @@ decl_attributes (node, attributes, prefix_attributes)
|
||||
"`%s' defined both normally and as an alias");
|
||||
else if (decl_function_context (decl) == 0)
|
||||
{
|
||||
tree id = get_identifier (TREE_STRING_POINTER
|
||||
(TREE_VALUE (args)));
|
||||
tree id;
|
||||
|
||||
id = TREE_VALUE (args);
|
||||
if (TREE_CODE (id) != STRING_CST)
|
||||
{
|
||||
error ("alias arg not a string");
|
||||
break;
|
||||
}
|
||||
id = get_identifier (TREE_STRING_POINTER (id));
|
||||
|
||||
if (TREE_CODE (decl) == FUNCTION_DECL)
|
||||
DECL_INITIAL (decl) = error_mark_node;
|
||||
else
|
||||
@@ -2276,6 +2284,12 @@ shorten_compare (op0_ptr, op1_ptr, restype_ptr, rescode_ptr)
|
||||
|
||||
type = signed_or_unsigned_type (unsignedp0, TREE_TYPE (primop0));
|
||||
|
||||
/* If TYPE is an enumeration, then we need to get its min/max
|
||||
values from it's underlying integral type, not the enumerated
|
||||
type itself. */
|
||||
if (TREE_CODE (type) == ENUMERAL_TYPE)
|
||||
type = type_for_size (TYPE_PRECISION (type), unsignedp0);
|
||||
|
||||
maxval = TYPE_MAX_VALUE (type);
|
||||
minval = TYPE_MIN_VALUE (type);
|
||||
|
||||
|
||||
@@ -6216,6 +6216,7 @@ finish_enum (enumtype, values, attributes)
|
||||
TYPE_MIN_VALUE (tem) = TYPE_MIN_VALUE (enumtype);
|
||||
TYPE_MAX_VALUE (tem) = TYPE_MAX_VALUE (enumtype);
|
||||
TYPE_SIZE (tem) = TYPE_SIZE (enumtype);
|
||||
TYPE_SIZE_UNIT (tem) = TYPE_SIZE_UNIT (enumtype);
|
||||
TYPE_MODE (tem) = TYPE_MODE (enumtype);
|
||||
TYPE_PRECISION (tem) = TYPE_PRECISION (enumtype);
|
||||
TYPE_ALIGN (tem) = TYPE_ALIGN (enumtype);
|
||||
|
||||
@@ -4442,7 +4442,7 @@ get_filename:
|
||||
*/
|
||||
/* Note: The argument of ISALPHA() can be evaluated twice, so do
|
||||
the pre-decrement outside of the macro. */
|
||||
if (retried && (--fbeg, ISALPHA(*(U_CHAR *) (fbeg)))) {
|
||||
if (retried && (--fin, ISALPHA(*(U_CHAR *) (fin)))) {
|
||||
while (fin != limit && (!ISSPACE(*fin)))
|
||||
*fend++ = *fin++;
|
||||
warning ("VAX-C-style include specification found, use '#include <filename.h>' !");
|
||||
|
||||
@@ -198,6 +198,7 @@ static int rflag; /* true if -r */
|
||||
static int strip_flag; /* true if -s */
|
||||
#ifdef COLLECT_EXPORT_LIST
|
||||
static int export_flag; /* true if -bE */
|
||||
static int aix64_flag; /* true if -b64 */
|
||||
#endif
|
||||
|
||||
int debug; /* true if -debug */
|
||||
@@ -1194,6 +1195,8 @@ main (argc, argv)
|
||||
case 'b':
|
||||
if (arg[2] == 'E' || strncmp (&arg[2], "export", 6) == 0)
|
||||
export_flag = 1;
|
||||
if (arg[2] == '6' && arg[3] == '4')
|
||||
aix64_flag = 1;
|
||||
break;
|
||||
#endif
|
||||
|
||||
@@ -2669,7 +2672,9 @@ scan_libraries (prog_name)
|
||||
(((X).n_sclass == C_EXT) && ((X).n_scnum == N_UNDEF))
|
||||
# define GCC_SYMINC(X) ((X).n_numaux+1)
|
||||
# define GCC_SYMZERO(X) 0
|
||||
# define GCC_CHECK_HDR(X) (1)
|
||||
# define GCC_CHECK_HDR(X) \
|
||||
((HEADER (X).f_magic == U802TOCMAGIC && ! aix64_flag) \
|
||||
|| (HEADER (X).f_magic == 0757 && aix64_flag))
|
||||
#endif
|
||||
|
||||
extern char *ldgetname ();
|
||||
@@ -2712,18 +2717,19 @@ scan_prog_file (prog_name, which_pass)
|
||||
#endif
|
||||
if ((ldptr = ldopen (prog_name, ldptr)) != NULL)
|
||||
{
|
||||
|
||||
if (!MY_ISCOFF (HEADER (ldptr).f_magic))
|
||||
if (! MY_ISCOFF (HEADER (ldptr).f_magic))
|
||||
fatal ("%s: not a COFF file", prog_name);
|
||||
|
||||
#ifdef COLLECT_EXPORT_LIST
|
||||
/* Is current archive member a shared object? */
|
||||
is_shared = HEADER (ldptr).f_flags & F_SHROBJ;
|
||||
#endif
|
||||
if (GCC_CHECK_HDR (ldptr))
|
||||
{
|
||||
sym_count = GCC_SYMBOLS (ldptr);
|
||||
sym_index = GCC_SYMZERO (ldptr);
|
||||
|
||||
#ifdef COLLECT_EXPORT_LIST
|
||||
/* Is current archive member a shared object? */
|
||||
is_shared = HEADER (ldptr).f_flags & F_SHROBJ;
|
||||
#endif
|
||||
|
||||
while (sym_index < sym_count)
|
||||
{
|
||||
GCC_SYMENT symbol;
|
||||
@@ -2841,6 +2847,16 @@ scan_prog_file (prog_name, which_pass)
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#ifdef COLLECT_EXPORT_LIST
|
||||
else
|
||||
{
|
||||
/* If archive contains both 32-bit and 64-bit objects,
|
||||
we want to skip objects in other mode so mismatch normal. */
|
||||
if (debug)
|
||||
fprintf (stderr, "%s : magic=%o aix64=%d mismatch\n",
|
||||
prog_name, HEADER (ldptr).f_magic, aix64_flag);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
267
gcc/combine.c
267
gcc/combine.c
@@ -1,5 +1,5 @@
|
||||
/* Optimize by combining instructions for GNU compiler.
|
||||
Copyright (C) 1987, 88, 92-97, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1987, 88, 92-98, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
@@ -3060,104 +3060,155 @@ subst (x, from, to, in_dest, unique_copy)
|
||||
if (COMBINE_RTX_EQUAL_P (x, to))
|
||||
return to;
|
||||
|
||||
len = GET_RTX_LENGTH (code);
|
||||
fmt = GET_RTX_FORMAT (code);
|
||||
/* Parallel asm_operands need special attention because all of the
|
||||
inputs are shared across the arms. Furthermore, unsharing the
|
||||
rtl results in recognition failures. Failure to handle this case
|
||||
specially can result in circular rtl.
|
||||
|
||||
/* We don't need to process a SET_DEST that is a register, CC0, or PC, so
|
||||
set up to skip this common case. All other cases where we want to
|
||||
suppress replacing something inside a SET_SRC are handled via the
|
||||
IN_DEST operand. */
|
||||
if (code == SET
|
||||
&& (GET_CODE (SET_DEST (x)) == REG
|
||||
|| GET_CODE (SET_DEST (x)) == CC0
|
||||
|| GET_CODE (SET_DEST (x)) == PC))
|
||||
fmt = "ie";
|
||||
Solve this by doing a normal pass across the first entry of the
|
||||
parallel, and only processing the SET_DESTs of the subsequent
|
||||
entries. Ug. */
|
||||
|
||||
/* Get the mode of operand 0 in case X is now a SIGN_EXTEND of a
|
||||
constant. */
|
||||
if (fmt[0] == 'e')
|
||||
op0_mode = GET_MODE (XEXP (x, 0));
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
if (code == PARALLEL
|
||||
&& GET_CODE (XVECEXP (x, 0, 0)) == SET
|
||||
&& GET_CODE (SET_SRC (XVECEXP (x, 0, 0))) == ASM_OPERANDS)
|
||||
{
|
||||
if (fmt[i] == 'E')
|
||||
new = subst (XVECEXP (x, 0, 0), from, to, 0, unique_copy);
|
||||
|
||||
/* If this substitution failed, this whole thing fails. */
|
||||
if (GET_CODE (new) == CLOBBER
|
||||
&& XEXP (new, 0) == const0_rtx)
|
||||
return new;
|
||||
|
||||
SUBST (XVECEXP (x, 0, 0), new);
|
||||
|
||||
for (i = XVECLEN (x, 0) - 1; i >= 1; i--)
|
||||
{
|
||||
register int j;
|
||||
for (j = XVECLEN (x, i) - 1; j >= 0; j--)
|
||||
rtx dest = SET_DEST (XVECEXP (x, 0, i));
|
||||
|
||||
if (GET_CODE (dest) != REG
|
||||
&& GET_CODE (dest) != CC0
|
||||
&& GET_CODE (dest) != PC)
|
||||
{
|
||||
if (COMBINE_RTX_EQUAL_P (XVECEXP (x, i, j), from))
|
||||
new = subst (dest, from, to, 0, unique_copy);
|
||||
|
||||
/* If this substitution failed, this whole thing fails. */
|
||||
if (GET_CODE (new) == CLOBBER
|
||||
&& XEXP (new, 0) == const0_rtx)
|
||||
return new;
|
||||
|
||||
SUBST (SET_DEST (XVECEXP (x, 0, i)), new);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
len = GET_RTX_LENGTH (code);
|
||||
fmt = GET_RTX_FORMAT (code);
|
||||
|
||||
/* We don't need to process a SET_DEST that is a register, CC0,
|
||||
or PC, so set up to skip this common case. All other cases
|
||||
where we want to suppress replacing something inside a
|
||||
SET_SRC are handled via the IN_DEST operand. */
|
||||
if (code == SET
|
||||
&& (GET_CODE (SET_DEST (x)) == REG
|
||||
|| GET_CODE (SET_DEST (x)) == CC0
|
||||
|| GET_CODE (SET_DEST (x)) == PC))
|
||||
fmt = "ie";
|
||||
|
||||
/* Get the mode of operand 0 in case X is now a SIGN_EXTEND of a
|
||||
constant. */
|
||||
if (fmt[0] == 'e')
|
||||
op0_mode = GET_MODE (XEXP (x, 0));
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if (fmt[i] == 'E')
|
||||
{
|
||||
register int j;
|
||||
for (j = XVECLEN (x, i) - 1; j >= 0; j--)
|
||||
{
|
||||
if (COMBINE_RTX_EQUAL_P (XVECEXP (x, i, j), from))
|
||||
{
|
||||
new = (unique_copy && n_occurrences
|
||||
? copy_rtx (to) : to);
|
||||
n_occurrences++;
|
||||
}
|
||||
else
|
||||
{
|
||||
new = subst (XVECEXP (x, i, j), from, to, 0,
|
||||
unique_copy);
|
||||
|
||||
/* If this substitution failed, this whole thing
|
||||
fails. */
|
||||
if (GET_CODE (new) == CLOBBER
|
||||
&& XEXP (new, 0) == const0_rtx)
|
||||
return new;
|
||||
}
|
||||
|
||||
SUBST (XVECEXP (x, i, j), new);
|
||||
}
|
||||
}
|
||||
else if (fmt[i] == 'e')
|
||||
{
|
||||
if (COMBINE_RTX_EQUAL_P (XEXP (x, i), from))
|
||||
{
|
||||
/* In general, don't install a subreg involving two
|
||||
modes not tieable. It can worsen register
|
||||
allocation, and can even make invalid reload
|
||||
insns, since the reg inside may need to be copied
|
||||
from in the outside mode, and that may be invalid
|
||||
if it is an fp reg copied in integer mode.
|
||||
|
||||
We allow two exceptions to this: It is valid if
|
||||
it is inside another SUBREG and the mode of that
|
||||
SUBREG and the mode of the inside of TO is
|
||||
tieable and it is valid if X is a SET that copies
|
||||
FROM to CC0. */
|
||||
|
||||
if (GET_CODE (to) == SUBREG
|
||||
&& ! MODES_TIEABLE_P (GET_MODE (to),
|
||||
GET_MODE (SUBREG_REG (to)))
|
||||
&& ! (code == SUBREG
|
||||
&& MODES_TIEABLE_P (GET_MODE (x),
|
||||
GET_MODE (SUBREG_REG (to))))
|
||||
#ifdef HAVE_cc0
|
||||
&& ! (code == SET && i == 1 && XEXP (x, 0) == cc0_rtx)
|
||||
#endif
|
||||
)
|
||||
return gen_rtx_CLOBBER (VOIDmode, const0_rtx);
|
||||
|
||||
new = (unique_copy && n_occurrences ? copy_rtx (to) : to);
|
||||
n_occurrences++;
|
||||
}
|
||||
else
|
||||
{
|
||||
new = subst (XVECEXP (x, i, j), from, to, 0, unique_copy);
|
||||
/* If we are in a SET_DEST, suppress most cases unless we
|
||||
have gone inside a MEM, in which case we want to
|
||||
simplify the address. We assume here that things that
|
||||
are actually part of the destination have their inner
|
||||
parts in the first expression. This is true for SUBREG,
|
||||
STRICT_LOW_PART, and ZERO_EXTRACT, which are the only
|
||||
things aside from REG and MEM that should appear in a
|
||||
SET_DEST. */
|
||||
new = subst (XEXP (x, i), from, to,
|
||||
(((in_dest
|
||||
&& (code == SUBREG || code == STRICT_LOW_PART
|
||||
|| code == ZERO_EXTRACT))
|
||||
|| code == SET)
|
||||
&& i == 0), unique_copy);
|
||||
|
||||
/* If this substitution failed, this whole thing fails. */
|
||||
if (GET_CODE (new) == CLOBBER && XEXP (new, 0) == const0_rtx)
|
||||
return new;
|
||||
}
|
||||
/* If we found that we will have to reject this combination,
|
||||
indicate that by returning the CLOBBER ourselves, rather than
|
||||
an expression containing it. This will speed things up as
|
||||
well as prevent accidents where two CLOBBERs are considered
|
||||
to be equal, thus producing an incorrect simplification. */
|
||||
|
||||
SUBST (XVECEXP (x, i, j), new);
|
||||
if (GET_CODE (new) == CLOBBER && XEXP (new, 0) == const0_rtx)
|
||||
return new;
|
||||
|
||||
SUBST (XEXP (x, i), new);
|
||||
}
|
||||
}
|
||||
else if (fmt[i] == 'e')
|
||||
{
|
||||
if (COMBINE_RTX_EQUAL_P (XEXP (x, i), from))
|
||||
{
|
||||
/* In general, don't install a subreg involving two modes not
|
||||
tieable. It can worsen register allocation, and can even
|
||||
make invalid reload insns, since the reg inside may need to
|
||||
be copied from in the outside mode, and that may be invalid
|
||||
if it is an fp reg copied in integer mode.
|
||||
|
||||
We allow two exceptions to this: It is valid if it is inside
|
||||
another SUBREG and the mode of that SUBREG and the mode of
|
||||
the inside of TO is tieable and it is valid if X is a SET
|
||||
that copies FROM to CC0. */
|
||||
if (GET_CODE (to) == SUBREG
|
||||
&& ! MODES_TIEABLE_P (GET_MODE (to),
|
||||
GET_MODE (SUBREG_REG (to)))
|
||||
&& ! (code == SUBREG
|
||||
&& MODES_TIEABLE_P (GET_MODE (x),
|
||||
GET_MODE (SUBREG_REG (to))))
|
||||
#ifdef HAVE_cc0
|
||||
&& ! (code == SET && i == 1 && XEXP (x, 0) == cc0_rtx)
|
||||
#endif
|
||||
)
|
||||
return gen_rtx_CLOBBER (VOIDmode, const0_rtx);
|
||||
|
||||
new = (unique_copy && n_occurrences ? copy_rtx (to) : to);
|
||||
n_occurrences++;
|
||||
}
|
||||
else
|
||||
/* If we are in a SET_DEST, suppress most cases unless we
|
||||
have gone inside a MEM, in which case we want to
|
||||
simplify the address. We assume here that things that
|
||||
are actually part of the destination have their inner
|
||||
parts in the first expression. This is true for SUBREG,
|
||||
STRICT_LOW_PART, and ZERO_EXTRACT, which are the only
|
||||
things aside from REG and MEM that should appear in a
|
||||
SET_DEST. */
|
||||
new = subst (XEXP (x, i), from, to,
|
||||
(((in_dest
|
||||
&& (code == SUBREG || code == STRICT_LOW_PART
|
||||
|| code == ZERO_EXTRACT))
|
||||
|| code == SET)
|
||||
&& i == 0), unique_copy);
|
||||
|
||||
/* If we found that we will have to reject this combination,
|
||||
indicate that by returning the CLOBBER ourselves, rather than
|
||||
an expression containing it. This will speed things up as
|
||||
well as prevent accidents where two CLOBBERs are considered
|
||||
to be equal, thus producing an incorrect simplification. */
|
||||
|
||||
if (GET_CODE (new) == CLOBBER && XEXP (new, 0) == const0_rtx)
|
||||
return new;
|
||||
|
||||
SUBST (XEXP (x, i), new);
|
||||
}
|
||||
}
|
||||
|
||||
/* Try to simplify X. If the simplification changed the code, it is likely
|
||||
@@ -7943,13 +7994,15 @@ num_sign_bit_copies (x, mode)
|
||||
is known to be positive, the number of sign bit copies is the
|
||||
same as that of the input. Finally, if the input has just one bit
|
||||
that might be nonzero, all the bits are copies of the sign bit. */
|
||||
num0 = num_sign_bit_copies (XEXP (x, 0), mode);
|
||||
if (bitwidth > HOST_BITS_PER_WIDE_INT)
|
||||
return num0 > 1 ? num0 - 1 : 1;
|
||||
|
||||
nonzero = nonzero_bits (XEXP (x, 0), mode);
|
||||
if (nonzero == 1)
|
||||
return bitwidth;
|
||||
|
||||
num0 = num_sign_bit_copies (XEXP (x, 0), mode);
|
||||
if (num0 > 1
|
||||
&& bitwidth <= HOST_BITS_PER_WIDE_INT
|
||||
&& (((HOST_WIDE_INT) 1 << (bitwidth - 1)) & nonzero))
|
||||
num0--;
|
||||
|
||||
@@ -7993,19 +8046,27 @@ num_sign_bit_copies (x, mode)
|
||||
|
||||
result = bitwidth - (bitwidth - num0) - (bitwidth - num1);
|
||||
if (result > 0
|
||||
&& bitwidth <= HOST_BITS_PER_WIDE_INT
|
||||
&& ((nonzero_bits (XEXP (x, 0), mode)
|
||||
& ((HOST_WIDE_INT) 1 << (bitwidth - 1))) != 0)
|
||||
&& ((nonzero_bits (XEXP (x, 1), mode)
|
||||
& ((HOST_WIDE_INT) 1 << (bitwidth - 1))) != 0))
|
||||
&& (bitwidth > HOST_BITS_PER_WIDE_INT
|
||||
|| (((nonzero_bits (XEXP (x, 0), mode)
|
||||
& ((HOST_WIDE_INT) 1 << (bitwidth - 1))) != 0)
|
||||
&& ((nonzero_bits (XEXP (x, 1), mode)
|
||||
& ((HOST_WIDE_INT) 1 << (bitwidth - 1))) != 0))))
|
||||
result--;
|
||||
|
||||
return MAX (1, result);
|
||||
|
||||
case UDIV:
|
||||
/* The result must be <= the first operand. */
|
||||
return num_sign_bit_copies (XEXP (x, 0), mode);
|
||||
|
||||
/* The result must be <= the first operand. If the first operand
|
||||
has the high bit set, we know nothing about the number of sign
|
||||
bit copies. */
|
||||
if (bitwidth > HOST_BITS_PER_WIDE_INT)
|
||||
return 1;
|
||||
else if ((nonzero_bits (XEXP (x, 0), mode)
|
||||
& ((HOST_WIDE_INT) 1 << (bitwidth - 1))) != 0)
|
||||
return 1;
|
||||
else
|
||||
return num_sign_bit_copies (XEXP (x, 0), mode);
|
||||
|
||||
case UMOD:
|
||||
/* The result must be <= the scond operand. */
|
||||
return num_sign_bit_copies (XEXP (x, 1), mode);
|
||||
@@ -8016,20 +8077,20 @@ num_sign_bit_copies (x, mode)
|
||||
to add 1. */
|
||||
result = num_sign_bit_copies (XEXP (x, 0), mode);
|
||||
if (result > 1
|
||||
&& bitwidth <= HOST_BITS_PER_WIDE_INT
|
||||
&& (nonzero_bits (XEXP (x, 1), mode)
|
||||
& ((HOST_WIDE_INT) 1 << (bitwidth - 1))) != 0)
|
||||
result --;
|
||||
&& (bitwidth > HOST_BITS_PER_WIDE_INT
|
||||
|| (nonzero_bits (XEXP (x, 1), mode)
|
||||
& ((HOST_WIDE_INT) 1 << (bitwidth - 1))) != 0))
|
||||
result--;
|
||||
|
||||
return result;
|
||||
|
||||
case MOD:
|
||||
result = num_sign_bit_copies (XEXP (x, 1), mode);
|
||||
if (result > 1
|
||||
&& bitwidth <= HOST_BITS_PER_WIDE_INT
|
||||
&& (nonzero_bits (XEXP (x, 1), mode)
|
||||
& ((HOST_WIDE_INT) 1 << (bitwidth - 1))) != 0)
|
||||
result --;
|
||||
&& (bitwidth > HOST_BITS_PER_WIDE_INT
|
||||
|| (nonzero_bits (XEXP (x, 1), mode)
|
||||
& ((HOST_WIDE_INT) 1 << (bitwidth - 1))) != 0))
|
||||
result--;
|
||||
|
||||
return result;
|
||||
|
||||
|
||||
@@ -19,13 +19,10 @@ along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef FILE
|
||||
#include <stdio.h>
|
||||
#endif
|
||||
#include <string.h>
|
||||
|
||||
#define __datalbl
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "rtl.h"
|
||||
#include "tree.h"
|
||||
#include "expr.h"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Subroutines used for code generation on AMD Am29000.
|
||||
Copyright (C) 1987, 88, 90-94, 1995 Free Software Foundation, Inc.
|
||||
Copyright (C) 1987, 88, 90-94, 1995, 1997 Free Software Foundation, Inc.
|
||||
Contributed by Richard Kenner (kenner@nyu.edu)
|
||||
|
||||
This file is part of GNU CC.
|
||||
@@ -19,8 +19,8 @@ along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <stdio.h>
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include "rtl.h"
|
||||
#include "regs.h"
|
||||
#include "hard-reg-set.h"
|
||||
|
||||
@@ -2468,6 +2468,8 @@ alpha_return_addr (count, frame)
|
||||
static int
|
||||
alpha_ra_ever_killed ()
|
||||
{
|
||||
rtx top;
|
||||
|
||||
#ifdef ASM_OUTPUT_MI_THUNK
|
||||
if (current_function_is_thunk)
|
||||
return 0;
|
||||
@@ -2475,8 +2477,11 @@ alpha_ra_ever_killed ()
|
||||
if (!alpha_return_addr_rtx)
|
||||
return regs_ever_live[REG_RA];
|
||||
|
||||
return reg_set_between_p (gen_rtx_REG (Pmode, REG_RA),
|
||||
get_insns(), NULL_RTX);
|
||||
push_topmost_sequence ();
|
||||
top = get_insns();
|
||||
pop_topmost_sequence ();
|
||||
|
||||
return reg_set_between_p (gen_rtx_REG (Pmode, REG_RA), top, NULL_RTX);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -23,14 +23,18 @@ Boston, MA 02111-1307, USA. */
|
||||
/* Write out the correct language type definition for the header files.
|
||||
Unless we have assembler language, write out the symbols for C. */
|
||||
#define CPP_SPEC "\
|
||||
%{!.S: -D__LANGUAGE_C__ -D__LANGUAGE_C %{!ansi:-DLANGUAGE_C}} \
|
||||
%{.S: -D__LANGUAGE_ASSEMBLY__ -D__LANGUAGE_ASSEMBLY %{!ansi:-DLANGUAGE_ASSEMBLY}} \
|
||||
%{.cc: -D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS -D__cplusplus} \
|
||||
%{.cxx: -D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS -D__cplusplus} \
|
||||
%{.C: -D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS -D__cplusplus} \
|
||||
%{.m: -D__LANGUAGE_OBJECTIVE_C__ -D__LANGUAGE_OBJECTIVE_C} \
|
||||
%{mieee:-D_IEEE_FP} \
|
||||
%{mieee-with-inexact:-D_IEEE_FP -D_IEEE_FP_INEXACT}"
|
||||
%{!undef:\
|
||||
%{.S:-D__LANGUAGE_ASSEMBLY__ -D__LANGUAGE_ASSEMBLY %{!ansi:-DLANGUAGE_ASSEMBLY }}\
|
||||
%{.cc|.cxx|.C:-D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS -D__cplusplus }\
|
||||
%{.m:-D__LANGUAGE_OBJECTIVE_C__ -D__LANGUAGE_OBJECTIVE_C }\
|
||||
%{!.S:%{!.cc:%{!.cxx:%{!.C:%{!.m:-D__LANGUAGE_C__ -D__LANGUAGE_C %{!ansi:-DLANGUAGE_C }}}}}}\
|
||||
%{mieee:-D_IEEE_FP }\
|
||||
%{mieee-with-inexact:-D_IEEE_FP -D_IEEE_FP_INEXACT }}\
|
||||
%(cpp_cpu) %(cpp_subtarget)"
|
||||
|
||||
#ifndef CPP_SUBTARGET_SPEC
|
||||
#define CPP_SUBTARGET_SPEC ""
|
||||
#endif
|
||||
|
||||
/* Set the spec to use for signed char. The default tests the above macro
|
||||
but DEC's compiler can't handle the conditional in a "constant"
|
||||
@@ -240,6 +244,88 @@ extern char *alpha_mlat_string; /* For -mmemory-latency= */
|
||||
{"memory-latency=", &alpha_mlat_string}, \
|
||||
}
|
||||
|
||||
/* Attempt to describe CPU characteristics to the preprocessor. */
|
||||
|
||||
/* Corresponding to amask... */
|
||||
#define CPP_AM_BWX_SPEC "-D__alpha_bwx__ -Acpu(bwx)"
|
||||
#define CPP_AM_MAX_SPEC "-D__alpha_max__ -Acpu(max)"
|
||||
#define CPP_AM_CIX_SPEC "-D__alpha_cix__ -Acpu(cix)"
|
||||
|
||||
/* Corresponding to implver... */
|
||||
#define CPP_IM_EV4_SPEC "-D__alpha_ev4__ -Acpu(ev4)"
|
||||
#define CPP_IM_EV5_SPEC "-D__alpha_ev5__ -Acpu(ev5)"
|
||||
#define CPP_IM_EV6_SPEC "-D__alpha_ev6__ -Acpu(ev6)"
|
||||
|
||||
/* Common combinations. */
|
||||
#define CPP_CPU_EV4_SPEC "%(cpp_im_ev4)"
|
||||
#define CPP_CPU_EV5_SPEC "%(cpp_im_ev5)"
|
||||
#define CPP_CPU_EV56_SPEC "%(cpp_im_ev5) %(cpp_am_bwx)"
|
||||
#define CPP_CPU_PCA56_SPEC "%(cpp_im_ev5) %(cpp_am_bwx) %(cpp_am_max)"
|
||||
#define CPP_CPU_EV6_SPEC "%(cpp_im_ev6) %(cpp_am_bwx) %(cpp_am_max) %(cpp_am_cix)"
|
||||
|
||||
#ifndef CPP_CPU_DEFAULT_SPEC
|
||||
# if TARGET_CPU_DEFAULT & MASK_CPU_EV6
|
||||
# define CPP_CPU_DEFAULT_SPEC CPP_CPU_EV6_SPEC
|
||||
# else
|
||||
# if TARGET_CPU_DEFAULT & MASK_CPU_EV5
|
||||
# if TARGET_CPU_DEFAULT & MASK_MAX
|
||||
# define CPP_CPU_DEFAULT_SPEC CPP_CPU_PCA56_SPEC
|
||||
# else
|
||||
# if TARGET_CPU_DEFAULT & MASK_BWX
|
||||
# define CPP_CPU_DEFAULT_SPEC CPP_CPU_EV56_SPEC
|
||||
# else
|
||||
# define CPP_CPU_DEFAULT_SPEC CPP_CPU_EV5_SPEC
|
||||
# endif
|
||||
# endif
|
||||
# else
|
||||
# define CPP_CPU_DEFAULT_SPEC CPP_CPU_EV4_SPEC
|
||||
# endif
|
||||
# endif
|
||||
#endif /* CPP_CPU_DEFAULT_SPEC */
|
||||
|
||||
#ifndef CPP_CPU_SPEC
|
||||
#define CPP_CPU_SPEC "\
|
||||
%{!undef:-Acpu(alpha) -Amachine(alpha) -D__alpha -D__alpha__ \
|
||||
%{mcpu=ev4|mcpu=21064:%(cpp_cpu_ev4) }\
|
||||
%{mcpu=ev5|mcpu=21164:%(cpp_cpu_ev5) }\
|
||||
%{mcpu=ev56|mcpu=21164a:%(cpp_cpu_ev56) }\
|
||||
%{mcpu=pca56|mcpu=21164pc|mcpu=21164PC:%(cpp_cpu_pca56) }\
|
||||
%{mcpu=ev6|mcpu=21264:%(cpp_cpu_ev6) }\
|
||||
%{!mcpu*:%(cpp_cpu_default) }}"
|
||||
#endif
|
||||
|
||||
/* This macro defines names of additional specifications to put in the
|
||||
specs that can be used in various specifications like CC1_SPEC. Its
|
||||
definition is an initializer with a subgrouping for each command option.
|
||||
|
||||
Each subgrouping contains a string constant, that defines the
|
||||
specification name, and a string constant that used by the GNU CC driver
|
||||
program.
|
||||
|
||||
Do not define this macro if it does not need to do anything. */
|
||||
|
||||
#ifndef SUBTARGET_EXTRA_SPECS
|
||||
#define SUBTARGET_EXTRA_SPECS
|
||||
#endif
|
||||
|
||||
#define EXTRA_SPECS \
|
||||
{ "cpp_am_bwx", CPP_AM_BWX_SPEC }, \
|
||||
{ "cpp_am_max", CPP_AM_MAX_SPEC }, \
|
||||
{ "cpp_am_cix", CPP_AM_CIX_SPEC }, \
|
||||
{ "cpp_im_ev4", CPP_IM_EV4_SPEC }, \
|
||||
{ "cpp_im_ev5", CPP_IM_EV5_SPEC }, \
|
||||
{ "cpp_im_ev6", CPP_IM_EV6_SPEC }, \
|
||||
{ "cpp_cpu_ev4", CPP_CPU_EV4_SPEC }, \
|
||||
{ "cpp_cpu_ev5", CPP_CPU_EV5_SPEC }, \
|
||||
{ "cpp_cpu_ev56", CPP_CPU_EV56_SPEC }, \
|
||||
{ "cpp_cpu_pca56", CPP_CPU_PCA56_SPEC }, \
|
||||
{ "cpp_cpu_ev6", CPP_CPU_EV6_SPEC }, \
|
||||
{ "cpp_cpu_default", CPP_CPU_DEFAULT_SPEC }, \
|
||||
{ "cpp_cpu", CPP_CPU_SPEC }, \
|
||||
{ "cpp_subtarget", CPP_SUBTARGET_SPEC }, \
|
||||
SUBTARGET_EXTRA_SPECS
|
||||
|
||||
|
||||
/* Sometimes certain combinations of command options do not make sense
|
||||
on a particular target machine. You can define a macro
|
||||
`OVERRIDE_OPTIONS' to take account of this. This macro, if
|
||||
@@ -525,18 +611,20 @@ extern void override_options ();
|
||||
/* Value is 1 if hard register REGNO can hold a value of machine-mode MODE.
|
||||
On Alpha, the integer registers can hold any mode. The floating-point
|
||||
registers can hold 32-bit and 64-bit integers as well, but not 16-bit
|
||||
or 8-bit values. If we only allowed the larger integers into FP registers,
|
||||
we'd have to say that QImode and SImode aren't tiable, which is a
|
||||
pain. So say all registers can hold everything and see how that works. */
|
||||
or 8-bit values. */
|
||||
|
||||
#define HARD_REGNO_MODE_OK(REGNO, MODE) 1
|
||||
#define HARD_REGNO_MODE_OK(REGNO, MODE) \
|
||||
((REGNO) < 32 || ((MODE) != QImode && (MODE) != HImode))
|
||||
|
||||
/* Value is 1 if it is a good idea to tie two pseudo registers
|
||||
when one has mode MODE1 and one has mode MODE2.
|
||||
If HARD_REGNO_MODE_OK could produce different values for MODE1 and MODE2,
|
||||
for any hard reg, then this must be 0 for correct output. */
|
||||
|
||||
#define MODES_TIEABLE_P(MODE1, MODE2) 1
|
||||
#define MODES_TIEABLE_P(MODE1, MODE2) \
|
||||
((MODE1) == QImode || (MODE1) == HImode \
|
||||
? (MODE2) == QImode || (MODE2) == HImode \
|
||||
: 1)
|
||||
|
||||
/* Specify the registers used for certain standard purposes.
|
||||
The values of these macros are register numbers. */
|
||||
@@ -1209,7 +1297,7 @@ do { \
|
||||
/* A C expression whose value is RTL representing the value of the return
|
||||
address for the frame COUNT steps up from the current frame.
|
||||
FRAMEADDR is the frame pointer of the COUNT frame, or the frame pointer of
|
||||
the COUNT-1 frame if RETURN_ADDR_IN_PREVIOUS_FRAME} is defined. */
|
||||
the COUNT-1 frame if RETURN_ADDR_IN_PREVIOUS_FRAME is defined. */
|
||||
|
||||
#define RETURN_ADDR_RTX alpha_return_addr
|
||||
extern struct rtx_def *alpha_return_addr ();
|
||||
@@ -1414,6 +1502,18 @@ extern void alpha_init_expanders ();
|
||||
|
||||
#define LEGITIMIZE_RELOAD_ADDRESS(X,MODE,OPNUM,TYPE,IND_LEVELS,WIN) \
|
||||
do { \
|
||||
/* We must recognize output that we have already generated ourselves. */ \
|
||||
if (GET_CODE (X) == PLUS \
|
||||
&& GET_CODE (XEXP (X, 0)) == PLUS \
|
||||
&& GET_CODE (XEXP (XEXP (X, 0), 0)) == REG \
|
||||
&& GET_CODE (XEXP (XEXP (X, 0), 1)) == CONST_INT \
|
||||
&& GET_CODE (XEXP (X, 1)) == CONST_INT) \
|
||||
{ \
|
||||
push_reload (XEXP (X, 0), NULL_RTX, &XEXP (X, 0), NULL_PTR, \
|
||||
BASE_REG_CLASS, GET_MODE (X), VOIDmode, 0, 0, \
|
||||
OPNUM, TYPE); \
|
||||
goto WIN; \
|
||||
} \
|
||||
if (GET_CODE (X) == PLUS \
|
||||
&& GET_CODE (XEXP (X, 0)) == REG \
|
||||
&& REGNO (XEXP (X, 0)) < FIRST_PSEUDO_REGISTER \
|
||||
@@ -2059,12 +2159,14 @@ literal_section () \
|
||||
#define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \
|
||||
do { \
|
||||
char *fn_name = XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0); \
|
||||
int reg; \
|
||||
\
|
||||
/* Mark end of prologue. */ \
|
||||
output_end_prologue (FILE); \
|
||||
\
|
||||
/* Rely on the assembler to macro expand a large delta. */ \
|
||||
fprintf (FILE, "\tlda $16,%ld($16)\n", (long)(DELTA)); \
|
||||
reg = aggregate_value_p (TREE_TYPE (TREE_TYPE (FUNCTION))) ? 17 : 16; \
|
||||
fprintf (FILE, "\tlda $%d,%ld($%d)\n", reg, (long)(DELTA), reg); \
|
||||
\
|
||||
if (current_file_function_operand (XEXP (DECL_RTL (FUNCTION), 0))) \
|
||||
{ \
|
||||
|
||||
@@ -2729,6 +2729,17 @@
|
||||
[(set_attr "type" "fadd")
|
||||
(set_attr "trap" "yes")])
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DF 0 "register_operand" "=&f")
|
||||
(match_operator:DF 1 "alpha_comparison_operator"
|
||||
[(float_extend:DF
|
||||
(match_operand:SF 2 "reg_or_fp0_operand" "fG"))
|
||||
(match_operand:DF 3 "reg_or_fp0_operand" "fG")]))]
|
||||
"TARGET_FP && alpha_tp == ALPHA_TP_INSN"
|
||||
"cmp%-%C1%' %R2,%R3,%0"
|
||||
[(set_attr "type" "fadd")
|
||||
(set_attr "trap" "yes")])
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DF 0 "register_operand" "=f")
|
||||
(match_operator:DF 1 "alpha_comparison_operator"
|
||||
@@ -2740,6 +2751,17 @@
|
||||
[(set_attr "type" "fadd")
|
||||
(set_attr "trap" "yes")])
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DF 0 "register_operand" "=&f")
|
||||
(match_operator:DF 1 "alpha_comparison_operator"
|
||||
[(match_operand:DF 2 "reg_or_fp0_operand" "fG")
|
||||
(float_extend:DF
|
||||
(match_operand:SF 3 "reg_or_fp0_operand" "fG"))]))]
|
||||
"TARGET_FP && alpha_tp == ALPHA_TP_INSN"
|
||||
"cmp%-%C1%' %R2,%R3,%0"
|
||||
[(set_attr "type" "fadd")
|
||||
(set_attr "trap" "yes")])
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DF 0 "register_operand" "=f")
|
||||
(match_operator:DF 1 "alpha_comparison_operator"
|
||||
@@ -2751,6 +2773,18 @@
|
||||
[(set_attr "type" "fadd")
|
||||
(set_attr "trap" "yes")])
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DF 0 "register_operand" "=&f")
|
||||
(match_operator:DF 1 "alpha_comparison_operator"
|
||||
[(float_extend:DF
|
||||
(match_operand:SF 2 "reg_or_fp0_operand" "fG"))
|
||||
(float_extend:DF
|
||||
(match_operand:SF 3 "reg_or_fp0_operand" "fG"))]))]
|
||||
"TARGET_FP && alpha_tp == ALPHA_TP_INSN"
|
||||
"cmp%-%C1%' %R2,%R3,%0"
|
||||
[(set_attr "type" "fadd")
|
||||
(set_attr "trap" "yes")])
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DF 0 "register_operand" "=f")
|
||||
(match_operator:DF 1 "alpha_comparison_operator"
|
||||
@@ -2763,20 +2797,6 @@
|
||||
[(set_attr "type" "fadd")
|
||||
(set_attr "trap" "yes")])
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DF 0 "register_operand" "=&f,f")
|
||||
(if_then_else:DF
|
||||
(match_operator 3 "signed_comparison_operator"
|
||||
[(match_operand:DF 4 "reg_or_fp0_operand" "fG,fG")
|
||||
(match_operand:DF 2 "fp0_operand" "G,G")])
|
||||
(match_operand:DF 1 "reg_or_fp0_operand" "fG,0")
|
||||
(match_operand:DF 5 "reg_or_fp0_operand" "0,fG")))]
|
||||
"TARGET_FP && alpha_tp == ALPHA_TP_INSN"
|
||||
"@
|
||||
fcmov%C3 %R4,%R1,%0
|
||||
fcmov%D3 %R4,%R5,%0"
|
||||
[(set_attr "type" "fcmov")])
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
||||
(if_then_else:DF
|
||||
@@ -2785,21 +2805,7 @@
|
||||
(match_operand:DF 2 "fp0_operand" "G,G")])
|
||||
(match_operand:DF 1 "reg_or_fp0_operand" "fG,0")
|
||||
(match_operand:DF 5 "reg_or_fp0_operand" "0,fG")))]
|
||||
"TARGET_FP && alpha_tp != ALPHA_TP_INSN"
|
||||
"@
|
||||
fcmov%C3 %R4,%R1,%0
|
||||
fcmov%D3 %R4,%R5,%0"
|
||||
[(set_attr "type" "fcmov")])
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SF 0 "register_operand" "=&f,f")
|
||||
(if_then_else:SF
|
||||
(match_operator 3 "signed_comparison_operator"
|
||||
[(match_operand:DF 4 "reg_or_fp0_operand" "fG,fG")
|
||||
(match_operand:DF 2 "fp0_operand" "G,G")])
|
||||
(match_operand:SF 1 "reg_or_fp0_operand" "fG,0")
|
||||
(match_operand:SF 5 "reg_or_fp0_operand" "0,fG")))]
|
||||
"TARGET_FP && alpha_tp == ALPHA_TP_INSN"
|
||||
"TARGET_FP"
|
||||
"@
|
||||
fcmov%C3 %R4,%R1,%0
|
||||
fcmov%D3 %R4,%R5,%0"
|
||||
@@ -2813,7 +2819,7 @@
|
||||
(match_operand:DF 2 "fp0_operand" "G,G")])
|
||||
(match_operand:SF 1 "reg_or_fp0_operand" "fG,0")
|
||||
(match_operand:SF 5 "reg_or_fp0_operand" "0,fG")))]
|
||||
"TARGET_FP && alpha_tp != ALPHA_TP_INSN"
|
||||
"TARGET_FP"
|
||||
"@
|
||||
fcmov%C3 %R4,%R1,%0
|
||||
fcmov%D3 %R4,%R5,%0"
|
||||
@@ -2827,7 +2833,7 @@
|
||||
(match_operand:DF 2 "fp0_operand" "G,G")])
|
||||
(float_extend:DF (match_operand:SF 1 "reg_or_fp0_operand" "fG,0"))
|
||||
(match_operand:DF 5 "reg_or_fp0_operand" "0,fG")))]
|
||||
"TARGET_FP && alpha_tp != ALPHA_TP_INSN"
|
||||
"TARGET_FP"
|
||||
"@
|
||||
fcmov%C3 %R4,%R1,%0
|
||||
fcmov%D3 %R4,%R5,%0"
|
||||
@@ -2842,7 +2848,7 @@
|
||||
(match_operand:DF 2 "fp0_operand" "G,G")])
|
||||
(match_operand:DF 1 "reg_or_fp0_operand" "fG,0")
|
||||
(match_operand:DF 5 "reg_or_fp0_operand" "0,fG")))]
|
||||
"TARGET_FP && alpha_tp != ALPHA_TP_INSN"
|
||||
"TARGET_FP"
|
||||
"@
|
||||
fcmov%C3 %R4,%R1,%0
|
||||
fcmov%D3 %R4,%R5,%0"
|
||||
@@ -2857,7 +2863,7 @@
|
||||
(match_operand:DF 2 "fp0_operand" "G,G")])
|
||||
(match_operand:SF 1 "reg_or_fp0_operand" "fG,0")
|
||||
(match_operand:SF 5 "reg_or_fp0_operand" "0,fG")))]
|
||||
"TARGET_FP && alpha_tp != ALPHA_TP_INSN"
|
||||
"TARGET_FP"
|
||||
"@
|
||||
fcmov%C3 %R4,%R1,%0
|
||||
fcmov%D3 %R4,%R5,%0"
|
||||
@@ -2872,7 +2878,7 @@
|
||||
(match_operand:DF 2 "fp0_operand" "G,G")])
|
||||
(float_extend:DF (match_operand:SF 1 "reg_or_fp0_operand" "fG,0"))
|
||||
(match_operand:DF 5 "reg_or_fp0_operand" "0,fG")))]
|
||||
"TARGET_FP && alpha_tp != ALPHA_TP_INSN"
|
||||
"TARGET_FP"
|
||||
"@
|
||||
fcmov%C3 %R4,%R1,%0
|
||||
fcmov%D3 %R4,%R5,%0"
|
||||
|
||||
@@ -43,7 +43,7 @@ Boston, MA 02111-1307, USA. */
|
||||
%{!shared: \
|
||||
%{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
%{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}}\
|
||||
%{!dynamic-linker:-dynamic-linker %(elf_dynamic_linker)}} \
|
||||
%{static:-static}}"
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
|
||||
@@ -22,13 +22,17 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#undef TARGET_VERSION
|
||||
#define TARGET_VERSION fprintf (stderr, " (Alpha GNU/Linux for ELF)");
|
||||
|
||||
#undef SUBTARGET_EXTRA_SPECS
|
||||
#define SUBTARGET_EXTRA_SPECS \
|
||||
{ "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
|
||||
|
||||
#undef SUB_CPP_PREDEFINES
|
||||
#define SUB_CPP_PREDEFINES "-D__ELF__"
|
||||
#define SUB_CPP_PREDEFINES "-D__ELF__"
|
||||
|
||||
#ifdef USE_GNULIBC_1
|
||||
#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
|
||||
#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
|
||||
#else
|
||||
#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
|
||||
#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
|
||||
#endif
|
||||
|
||||
#ifndef USE_GNULIBC_1
|
||||
@@ -39,7 +43,5 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#ifndef USE_GNULIBC_1
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC \
|
||||
"%{shared: -lc} \
|
||||
%{!shared: %{mieee-fp:-lieee} %{pthread:-lpthread} \
|
||||
%{profile:-lc_p} %{!profile: -lc}}"
|
||||
"%{shared:-lc}%{!shared:%{pthread:-lpthread }%{profile:-lc_p}%{!profile:-lc}} "
|
||||
#endif
|
||||
|
||||
@@ -23,9 +23,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#define TARGET_DEFAULT (MASK_FP | MASK_FPREGS | MASK_GAS)
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "\
|
||||
-D__alpha -D__alpha__ -D__linux__ -D__linux -D_LONGLONG -Dlinux -Dunix \
|
||||
-Asystem(linux) -Acpu(alpha) -Amachine(alpha) " SUB_CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES \
|
||||
"-Dlinux -Dunix -Asystem(linux) -D_LONGLONG -D__alpha__ " SUB_CPP_PREDEFINES
|
||||
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC "%{pg:-lgmon} %{pg:-lc_p} %{!pg:-lc}"
|
||||
|
||||
@@ -24,4 +24,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#undef SUB_CPP_PREDEFINES
|
||||
#define SUB_CPP_PREDEFINES "-D__ELF__"
|
||||
|
||||
#define ELF_DYNAMIC_LINKER "/usr/libexec/ld.elf_so"
|
||||
#undef SUBTARGET_EXTRA_SPECS
|
||||
#define SUBTARGET_EXTRA_SPECS \
|
||||
{ "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
|
||||
|
||||
#define ELF_DYNAMIC_LINKER "/usr/libexec/ld.elf_so"
|
||||
|
||||
@@ -22,9 +22,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#define TARGET_DEFAULT (MASK_FP | MASK_FPREGS | MASK_GAS)
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "\
|
||||
-D__alpha -D__alpha__ -D__linux__ -D__linux -D_LONGLONG -Dnetbsd -Dunix \
|
||||
-Asystem(linux) -Acpu(alpha) -Amachine(alpha) " SUB_CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-D_LONGLONG -Dnetbsd -Dunix " SUB_CPP_PREDEFINES
|
||||
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC "%{pg:-lgmon} %{pg:-lc_p} %{!pg:-lc}"
|
||||
|
||||
126
gcc/config/alpha/openbsd.h
Normal file
126
gcc/config/alpha/openbsd.h
Normal file
@@ -0,0 +1,126 @@
|
||||
/* Configuration file for an alpha OpenBSD target.
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
GNU CC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU CC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* We settle for little endian for now. */
|
||||
#define TARGET_ENDIAN_DEFAULT 0
|
||||
|
||||
#include <alpha/alpha.h>
|
||||
|
||||
#define OBSD_NO_DYNAMIC_LIBRARIES
|
||||
#define OBSD_HAS_DECLARE_FUNCTION_NAME
|
||||
#define OBSD_HAS_DECLARE_FUNCTION_SIZE
|
||||
#define OBSD_HAS_DECLARE_OBJECT
|
||||
|
||||
/* alpha ecoff supports only weak aliases, see below. */
|
||||
#define ASM_WEAKEN_LABEL(FILE,NAME) ASM_OUTPUT_WEAK_ALIAS (FILE,NAME,0)
|
||||
|
||||
#include <openbsd.h>
|
||||
|
||||
/* Controlling the compilation driver. */
|
||||
|
||||
/* alpha needs __start. */
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC \
|
||||
"%{!nostdlib:%{!r*:%{!e*:-e __start}}} -dc -dp %{assert*}"
|
||||
|
||||
/* run-time target specifications */
|
||||
#define CPP_PREDEFINES "-D__unix__ -D__ANSI_COMPAT -Asystem(unix) \
|
||||
-D__OpenBSD__ -D__alpha__ -D__alpha"
|
||||
|
||||
/* Layout of source language data types. */
|
||||
|
||||
/* This must agree with <machine/ansi.h> */
|
||||
#undef SIZE_TYPE
|
||||
#define SIZE_TYPE "long unsigned int"
|
||||
|
||||
#undef PTRDIFF_TYPE
|
||||
#define PTRDIFF_TYPE "long int"
|
||||
|
||||
#undef WCHAR_TYPE
|
||||
#define WCHAR_TYPE "int"
|
||||
|
||||
#undef WCHAR_TYPE_SIZE
|
||||
#define WCHAR_TYPE_SIZE 32
|
||||
|
||||
|
||||
#undef PREFERRED_DEBUGGING_TYPE
|
||||
#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
|
||||
|
||||
#define LOCAL_LABEL_PREFIX "."
|
||||
|
||||
/* We don't have an init section yet. */
|
||||
#undef HAS_INIT_SECTION
|
||||
|
||||
/* collect2 support (assembler format: macros for initialization). */
|
||||
|
||||
/* Don't tell collect2 we use COFF as we don't have (yet ?) a dynamic ld
|
||||
library with the proper functions to handle this -> collect2 will
|
||||
default to using nm. */
|
||||
#undef OBJECT_FORMAT_COFF
|
||||
#undef EXTENDED_COFF
|
||||
|
||||
/* Assembler format: exception region output. */
|
||||
|
||||
/* All configurations that don't use elf must be explicit about not using
|
||||
dwarf unwind information. egcs doesn't try too hard to check internal
|
||||
configuration files... */
|
||||
#ifdef INCOMING_RETURN_ADDR_RTX
|
||||
#undef DWARF2_UNWIND_INFO
|
||||
#define DWARF2_UNWIND_INFO 0
|
||||
#endif
|
||||
|
||||
/* Assembler format: file framework. */
|
||||
|
||||
/* Taken from alpha/osf.h. This used to be common to all alpha
|
||||
configurations, but elf has departed from it.
|
||||
Check alpha/alpha.h, alpha/osf.h for it when egcs is upgraded. */
|
||||
#ifndef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
{ \
|
||||
alpha_write_verstamp (FILE); \
|
||||
fprintf (FILE, "\t.set noreorder\n"); \
|
||||
fprintf (FILE, "\t.set volatile\n"); \
|
||||
fprintf (FILE, "\t.set noat\n"); \
|
||||
if (TARGET_SUPPORT_ARCH) \
|
||||
fprintf (FILE, "\t.arch %s\n", \
|
||||
alpha_cpu == PROCESSOR_EV6 ? "ev6" \
|
||||
: (alpha_cpu == PROCESSOR_EV5 \
|
||||
? (TARGET_MAX ? "pca56" : TARGET_BWX ? "ev56" : "ev5") \
|
||||
: "ev4")); \
|
||||
\
|
||||
ASM_OUTPUT_SOURCE_FILENAME (FILE, main_input_filename); \
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Assembler format: label output. */
|
||||
|
||||
#define ASM_OUTPUT_WEAK_ALIAS(FILE,NAME,VALUE) \
|
||||
do { \
|
||||
fputs ("\t.weakext\t", FILE); \
|
||||
assemble_name (FILE, NAME); \
|
||||
if (VALUE) \
|
||||
{ \
|
||||
fputs (" , ", FILE); \
|
||||
assemble_name (FILE, VALUE); \
|
||||
} \
|
||||
fputc ('\n', FILE); \
|
||||
} while (0)
|
||||
|
||||
|
||||
@@ -27,8 +27,8 @@ Boston, MA 02111-1307, USA. */
|
||||
/* Names to predefine in the preprocessor for this target machine. */
|
||||
|
||||
#define CPP_PREDEFINES "\
|
||||
-Dunix -D__osf__ -D__alpha -D__alpha__ -D_LONGLONG -DSYSTYPE_BSD \
|
||||
-D_SYSTYPE_BSD -Asystem(unix) -Asystem(xpg4) -Acpu(alpha) -Amachine(alpha)"
|
||||
-Dunix -D__osf__ -D_LONGLONG -DSYSTYPE_BSD \
|
||||
-D_SYSTYPE_BSD -Asystem(unix) -Asystem(xpg4)"
|
||||
|
||||
/* Under OSF4, -p and -pg require -lprof1, and -lprof1 requires -lpdf. */
|
||||
|
||||
|
||||
16
gcc/config/alpha/va_list.h
Normal file
16
gcc/config/alpha/va_list.h
Normal file
@@ -0,0 +1,16 @@
|
||||
/* A replacement for Digital Unix's <va_list.h>. */
|
||||
|
||||
#include <va-alpha.h>
|
||||
|
||||
#if !defined(_VA_LIST) && !defined(_HIDDEN_VA_LIST)
|
||||
#define _VA_LIST
|
||||
typedef __gnuc_va_list va_list;
|
||||
|
||||
#elif defined(_HIDDEN_VA_LIST) && !defined(_HIDDEN_VA_LIST_DONE)
|
||||
#define _HIDDEN_VA_LIST_DONE
|
||||
typedef __gnuc_va_list __va_list;
|
||||
|
||||
#elif defined(_HIDDEN_VA_LIST) && defined(_VA_LIST)
|
||||
#undef _HIDDEN_VA_LIST
|
||||
|
||||
#endif
|
||||
@@ -31,20 +31,13 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES \
|
||||
"-D__ALPHA -Dvms -DVMS -D__alpha__ -D__alpha -D__vms__ -D__VMS__\
|
||||
-Asystem(vms) -Acpu(alpha) -Amachine(alpha)"
|
||||
"-D__ALPHA -Dvms -DVMS -D__vms__ -D__VMS__ -Asystem(vms)"
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC "\
|
||||
#undef CPP_SUBTARGET_SPEC
|
||||
#define CPP_SUBTARGET_SPEC "\
|
||||
%{mfloat-ieee:-D__IEEE_FLOAT} \
|
||||
%{mfloat-vax:-D__G_FLOAT} \
|
||||
%{!mfloat-vax:-D__IEEE_FLOAT} \
|
||||
%{!.S: -D__LANGUAGE_C__ -D__LANGUAGE_C %{!ansi:-DLANGUAGE_C}} \
|
||||
%{.S: -D__LANGUAGE_ASSEMBLY__ -D__LANGUAGE_ASSEMBLY %{!ansi:-DLANGUAGE_ASSEMBLY}} \
|
||||
%{.cc: -D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS -D__cplusplus} \
|
||||
%{.cxx: -D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS -D__cplusplus} \
|
||||
%{.C: -D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS -D__cplusplus} \
|
||||
%{.m: -D__LANGUAGE_OBJECTIVE_C__ -D__LANGUAGE_OBJECTIVE_C}"
|
||||
%{!mfloat-vax:-D__IEEE_FLOAT}"
|
||||
|
||||
/* Under OSF4, -p and -pg require -lprof1, and -lprof1 requires -lpdf. */
|
||||
|
||||
|
||||
@@ -20,20 +20,16 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* This file just exists to give specs for the Alpha running on VxWorks. */
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC "\
|
||||
#undef CPP_SUBTARGET_SPEC
|
||||
#define CPP_SUBTARGET_SPEC "\
|
||||
%{mvxsim:-DCPU=SIMALPHADUNIX} \
|
||||
%{!mvxsim: %{!mcpu*:-DCPU=21064} \
|
||||
%{mcpu=21064:-DCPU=21064} \
|
||||
%{mcpu=21164:-DCPU=21164}} \
|
||||
%{posix: -D_POSIX_SOURCE} \
|
||||
%{!.S: -D__LANGUAGE_C__ -D__LANGUAGE_C %{!ansi:-DLANGUAGE_C}} \
|
||||
%{.S: -D__LANGUAGE_ASSEMBLY__ -D__LANGUAGE_ASSEMBLY %{!ansi:-DLANGUAGE_ASSEMBLY}}"
|
||||
%{!mvxsim: %{!mcpu*|mcpu=21064:-DCPU=21064} %{mcpu=21164:-DCPU=21164}} \
|
||||
%{posix: -D_POSIX_SOURCE}"
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "\
|
||||
-D__vxworks -D__alpha_vxworks -Asystem(vxworks) \
|
||||
-Asystem(embedded) -D_LONGLONG -Acpu(alpha) -Amachine(alpha)"
|
||||
-Asystem(embedded) -D_LONGLONG"
|
||||
|
||||
/* VxWorks does all the library stuff itself. */
|
||||
|
||||
|
||||
@@ -29,10 +29,8 @@ Boston, MA 02111-1307, USA. */
|
||||
/* Names to predefine in the preprocessor for this target machine. */
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-DWIN32 -D_WIN32 -DWINNT -D__STDC__=0 -DALMOST_STDC\
|
||||
-D_M_ALPHA -D_ALPHA_ -D__alpha -D__alpha__\
|
||||
-D_LONGLONG -D__unaligned= -D__stdcall= \
|
||||
-Asystem(winnt) -Acpu(alpha) -Amachine(alpha)"
|
||||
#define CPP_PREDEFINES "-DWIN32 -D_WIN32 -DWINNT -D__STDC__=0 -DALMOST_STDC \
|
||||
-D_M_ALPHA -D_ALPHA_ -D_LONGLONG -D__unaligned= -D__stdcall= -Asystem(winnt)"
|
||||
|
||||
#undef ASM_SPEC
|
||||
#undef ASM_FINAL_SPEC
|
||||
@@ -113,12 +111,14 @@ Boston, MA 02111-1307, USA. */
|
||||
#define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \
|
||||
do { \
|
||||
char *op, *fn_name = XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0); \
|
||||
int reg; \
|
||||
\
|
||||
/* Mark end of prologue. */ \
|
||||
output_end_prologue (FILE); \
|
||||
\
|
||||
/* Rely on the assembler to macro expand a large delta. */ \
|
||||
fprintf (FILE, "\tlda $16,%ld($16)\n", (long)(DELTA)); \
|
||||
reg = aggregate_value_p (TREE_TYPE (TREE_TYPE (FUNCTION))) ? 17 : 16; \
|
||||
fprintf (FILE, "\tlda $%d,%ld($%d)\n", reg, (long)(DELTA), reg); \
|
||||
\
|
||||
op = "jsr"; \
|
||||
if (current_file_function_operand (XEXP (DECL_RTL (FUNCTION), 0))) \
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
CLIB=-lmld
|
||||
EXTRA_HEADERS = $(srcdir)/config/alpha/va_list.h
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
/* Definitions of target machine for GNU compiler, for HAL
|
||||
SPARC running Solaris 2 HALOS
|
||||
Copyright 1998 Free Software Foundation, Inc.
|
||||
Contributed by Carol LePage (carolo@hal.com)
|
||||
/* Configuration file for an host running alpha OpenBSD.
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
@@ -20,14 +18,6 @@ along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Need different command line for assembler */
|
||||
#include <xm-openbsd.h>
|
||||
#include <alpha/xm-alpha.h>
|
||||
|
||||
#undef ASM_SPEC
|
||||
#define ASM_SPEC \
|
||||
"%{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Wa,*:%*} -e1 \
|
||||
%{fpic:-K PIC} %{fPIC:-K PIC}"
|
||||
|
||||
/* Need DWARF for debuggers. */
|
||||
|
||||
#undef PREFERRED_DEBUGGING_TYPE
|
||||
#define PREFERRED_DEBUGGING_TYPE DWARF_DEBUG
|
||||
@@ -39,50 +39,3 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Define a symbol indicating that we are using aoutos.h. */
|
||||
#define USING_AOUTOS_H
|
||||
|
||||
/* A C statement (sans semicolon) to output an element in the table of
|
||||
global constructors.
|
||||
If using GNU LD, tell it that this is part of the static destructor set.
|
||||
This code works for any machine provided you use GNU as/ld.
|
||||
If not using GNU LD, rely on a "collect" program to look for names defined
|
||||
in the particular form we choose as global constructor function names. */
|
||||
|
||||
#define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME) \
|
||||
do { \
|
||||
if (flag_gnu_linker) \
|
||||
{ \
|
||||
/* Output an N_SETT (0x16, 22.) for the name. */ \
|
||||
fprintf (FILE, "%s \"___CTOR_LIST__\",22,0,0,", ASM_STABS_OP); \
|
||||
assemble_name (FILE, NAME); \
|
||||
fputc ('\n', FILE); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
/* A C statement (sans semicolon) to output an element in the table of
|
||||
global destructors. */
|
||||
|
||||
#define ASM_OUTPUT_DESTRUCTOR(FILE,NAME) \
|
||||
do { \
|
||||
if (flag_gnu_linker) \
|
||||
{ \
|
||||
/* Output an N_SETT (0x16, 22.) for the name. */ \
|
||||
fprintf (FILE, "%s \"___DTOR_LIST__\",22,0,0,", ASM_STABS_OP); \
|
||||
assemble_name (FILE, NAME); \
|
||||
fputc ('\n', FILE); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* Likewise for entries we want to record for garbage collection.
|
||||
Garbage collection is still under development. */
|
||||
|
||||
#define ASM_OUTPUT_GC_ENTRY(FILE,NAME) \
|
||||
do { \
|
||||
if (flag_gnu_linker) \
|
||||
{ \
|
||||
/* Output an N_SETT (0x16, 22.) for the name. */ \
|
||||
fprintf (FILE, "%s \"___PTR_LIST__\",22,0,0,", ASM_STABS_OP); \
|
||||
assemble_name (FILE, NAME); \
|
||||
fputc ('\n', FILE); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
@@ -55,7 +55,7 @@ static int arm_naked_function_p PROTO ((tree));
|
||||
static void init_fpa_table PROTO ((void));
|
||||
static enum machine_mode select_dominance_cc_mode PROTO ((enum rtx_code, rtx,
|
||||
rtx, HOST_WIDE_INT));
|
||||
static HOST_WIDE_INT add_constant PROTO ((rtx, enum machine_mode));
|
||||
static HOST_WIDE_INT add_constant PROTO ((rtx, enum machine_mode, int *));
|
||||
static void dump_table PROTO ((rtx));
|
||||
static int fixit PROTO ((rtx, enum machine_mode, int));
|
||||
static rtx find_barrier PROTO ((rtx, int));
|
||||
@@ -310,7 +310,7 @@ arm_override_options ()
|
||||
assembler and linker, and the ARMASM assembler seems to lack some
|
||||
required directives. */
|
||||
if (flag_pic)
|
||||
warning ("Position independent code not supported. Ignored");
|
||||
warning ("Position independent code not supported");
|
||||
|
||||
if (TARGET_APCS_FLOAT)
|
||||
warning ("Passing floating point arguments in fp regs not yet supported");
|
||||
@@ -1769,7 +1769,9 @@ bad_signed_byte_operand (op, mode)
|
||||
|
||||
/* A sum of anything more complex than reg + reg or reg + const is bad */
|
||||
if ((GET_CODE (op) == PLUS || GET_CODE (op) == MINUS)
|
||||
&& ! s_register_operand (XEXP (op, 0), VOIDmode))
|
||||
&& (! s_register_operand (XEXP (op, 0), VOIDmode)
|
||||
|| (! s_register_operand (XEXP (op, 1), VOIDmode)
|
||||
&& GET_CODE (XEXP (op, 1)) != CONST_INT)))
|
||||
return 1;
|
||||
|
||||
/* Big constants are also bad */
|
||||
@@ -3446,18 +3448,31 @@ static pool_node pool_vector[MAX_POOL_SIZE];
|
||||
static int pool_size;
|
||||
static rtx pool_vector_label;
|
||||
|
||||
/* Add a constant to the pool and return its label. */
|
||||
/* Add a constant to the pool and return its offset within the current
|
||||
pool.
|
||||
|
||||
X is the rtx we want to replace. MODE is its mode. On return,
|
||||
ADDRESS_ONLY will be non-zero if we really want the address of such
|
||||
a constant, not the constant itself. */
|
||||
static HOST_WIDE_INT
|
||||
add_constant (x, mode)
|
||||
add_constant (x, mode, address_only)
|
||||
rtx x;
|
||||
enum machine_mode mode;
|
||||
int *address_only;
|
||||
{
|
||||
int i;
|
||||
HOST_WIDE_INT offset;
|
||||
|
||||
*address_only = 0;
|
||||
if (mode == SImode && GET_CODE (x) == MEM && CONSTANT_P (XEXP (x, 0))
|
||||
&& CONSTANT_POOL_ADDRESS_P (XEXP (x, 0)))
|
||||
x = get_pool_constant (XEXP (x, 0));
|
||||
else if (GET_CODE (x) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P(x))
|
||||
{
|
||||
*address_only = 1;
|
||||
mode = get_pool_mode (x);
|
||||
x = get_pool_constant (x);
|
||||
}
|
||||
#ifndef AOF_ASSEMBLER
|
||||
else if (GET_CODE (x) == UNSPEC && XINT (x, 1) == 3)
|
||||
x = XVECEXP (x, 0, 0);
|
||||
@@ -3709,6 +3724,7 @@ arm_reorg (first)
|
||||
rtx newsrc;
|
||||
rtx addr;
|
||||
int scratch;
|
||||
int address_only;
|
||||
|
||||
/* If this is an HImode constant load, convert it into
|
||||
an SImode constant load. Since the register is always
|
||||
@@ -3722,39 +3738,50 @@ arm_reorg (first)
|
||||
PUT_MODE (dst, SImode);
|
||||
}
|
||||
|
||||
offset = add_constant (src, mode);
|
||||
offset = add_constant (src, mode, &address_only);
|
||||
addr = plus_constant (gen_rtx (LABEL_REF, VOIDmode,
|
||||
pool_vector_label),
|
||||
offset);
|
||||
|
||||
/* For wide moves to integer regs we need to split the
|
||||
address calculation off into a separate insn, so that
|
||||
the load can then be done with a load-multiple. This is
|
||||
safe, since we have already noted the length of such
|
||||
insns to be 8, and we are immediately over-writing the
|
||||
scratch we have grabbed with the final result. */
|
||||
if (GET_MODE_SIZE (mode) > 4
|
||||
/* If we only want the address of the pool entry, or
|
||||
for wide moves to integer regs we need to split
|
||||
the address calculation off into a separate insn.
|
||||
If necessary, the load can then be done with a
|
||||
load-multiple. This is safe, since we have
|
||||
already noted the length of such insns to be 8,
|
||||
and we are immediately over-writing the scratch
|
||||
we have grabbed with the final result. */
|
||||
if ((address_only || GET_MODE_SIZE (mode) > 4)
|
||||
&& (scratch = REGNO (dst)) < 16)
|
||||
{
|
||||
rtx reg = gen_rtx (REG, SImode, scratch);
|
||||
rtx reg;
|
||||
|
||||
if (mode == SImode)
|
||||
reg = dst;
|
||||
else
|
||||
reg = gen_rtx (REG, SImode, scratch);
|
||||
|
||||
newinsn = emit_insn_after (gen_movaddr (reg, addr),
|
||||
newinsn);
|
||||
addr = reg;
|
||||
}
|
||||
|
||||
newsrc = gen_rtx (MEM, mode, addr);
|
||||
if (! address_only)
|
||||
{
|
||||
newsrc = gen_rtx (MEM, mode, addr);
|
||||
|
||||
/* Build a jump insn wrapper around the move instead
|
||||
of an ordinary insn, because we want to have room for
|
||||
the target label rtx in fld[7], which an ordinary
|
||||
insn doesn't have. */
|
||||
newinsn = emit_jump_insn_after (gen_rtx (SET, VOIDmode,
|
||||
dst, newsrc),
|
||||
newinsn);
|
||||
JUMP_LABEL (newinsn) = pool_vector_label;
|
||||
/* XXX Fixme -- I think the following is bogus. */
|
||||
/* Build a jump insn wrapper around the move instead
|
||||
of an ordinary insn, because we want to have room for
|
||||
the target label rtx in fld[7], which an ordinary
|
||||
insn doesn't have. */
|
||||
newinsn = emit_jump_insn_after
|
||||
(gen_rtx (SET, VOIDmode, dst, newsrc), newinsn);
|
||||
JUMP_LABEL (newinsn) = pool_vector_label;
|
||||
|
||||
/* But it's still an ordinary insn */
|
||||
PUT_CODE (newinsn, INSN);
|
||||
/* But it's still an ordinary insn */
|
||||
PUT_CODE (newinsn, INSN);
|
||||
}
|
||||
|
||||
/* Kill old insn */
|
||||
delete_insn (scan);
|
||||
@@ -5840,9 +5867,9 @@ final_prescan_insn (insn, opvec, noperands)
|
||||
/* Instructions using or affecting the condition codes make it
|
||||
fail. */
|
||||
scanbody = PATTERN (this_insn);
|
||||
if ((GET_CODE (scanbody) == SET
|
||||
|| GET_CODE (scanbody) == PARALLEL)
|
||||
&& get_attr_conds (this_insn) != CONDS_NOCOND)
|
||||
if (! (GET_CODE (scanbody) == SET
|
||||
|| GET_CODE (scanbody) == PARALLEL)
|
||||
|| get_attr_conds (this_insn) != CONDS_NOCOND)
|
||||
fail = TRUE;
|
||||
break;
|
||||
|
||||
|
||||
@@ -874,7 +874,7 @@ enum reg_class
|
||||
|
||||
/* If we need to load shorts byte-at-a-time, then we need a scratch. */
|
||||
#define SECONDARY_INPUT_RELOAD_CLASS(CLASS,MODE,X) \
|
||||
(((MODE) == HImode && TARGET_SHORT_BY_BYTES \
|
||||
(((MODE) == HImode && ! arm_arch4 && TARGET_SHORT_BY_BYTES \
|
||||
&& (GET_CODE (X) == MEM \
|
||||
|| ((GET_CODE (X) == REG || GET_CODE (X) == SUBREG) \
|
||||
&& true_regnum (X) == -1))) \
|
||||
|
||||
@@ -2399,6 +2399,12 @@
|
||||
XEXP (operands[2], 0) = plus_constant (operands[3], low);
|
||||
operands[1] = plus_constant (XEXP (operands[1], 0), offset - low);
|
||||
}
|
||||
/* Ensure the sum is in correct canonical form */
|
||||
else if (GET_CODE (operands[1]) == PLUS
|
||||
&& GET_CODE (XEXP (operands[1], 1)) != CONST_INT
|
||||
&& ! s_register_operand (XEXP (operands[1], 1), VOIDmode))
|
||||
operands[1] = gen_rtx (PLUS, GET_MODE (operands[1]),
|
||||
XEXP (operands[1], 1), XEXP (operands[1], 0));
|
||||
}
|
||||
")
|
||||
|
||||
@@ -2464,6 +2470,12 @@
|
||||
XEXP (operands[2], 0) = plus_constant (operands[0], low);
|
||||
operands[1] = plus_constant (XEXP (operands[1], 0), offset - low);
|
||||
}
|
||||
/* Ensure the sum is in correct canonical form */
|
||||
else if (GET_CODE (operands[1]) == PLUS
|
||||
&& GET_CODE (XEXP (operands[1], 1)) != CONST_INT
|
||||
&& ! s_register_operand (XEXP (operands[1], 1), VOIDmode))
|
||||
operands[1] = gen_rtx (PLUS, GET_MODE (operands[1]),
|
||||
XEXP (operands[1], 1), XEXP (operands[1], 0));
|
||||
}
|
||||
")
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/* Definitions of target machine for GNU compiler. ARM Linux version.
|
||||
/* Definitions of target machine for GNU compiler. ARM Linux-based GNU
|
||||
systems version.
|
||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
Contributed by Russell King <rmk92@ecs.soton.ac.uk>.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Definitions for ARM running Linux
|
||||
/* Definitions for ARM running Linux-based GNU systems.
|
||||
Copyright (C) 1993, 1994, 1997 Free Software Foundation, Inc.
|
||||
Adapted from ARM Linux by Russell King <rmk92@ecs.soton.ac.uk>.
|
||||
Contributed by Russell King <rmk92@ecs.soton.ac.uk>.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
@@ -31,7 +31,7 @@ Boston, MA 02111-1307, USA. */
|
||||
#undef COMMENT_BEGIN
|
||||
|
||||
/* We default to ARM3. */
|
||||
#define TARGET_CPU_DEFAULT TARGET_CPU_arm3
|
||||
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm3
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES \
|
||||
@@ -56,8 +56,7 @@ Boston, MA 02111-1307, USA. */
|
||||
#define HANDLE_SYSV_PRAGMA
|
||||
|
||||
/* Run-time Target Specification. */
|
||||
#define TARGET_VERSION \
|
||||
fputs (" (ARM Linux/a.out)", stderr);
|
||||
#define TARGET_VERSION fputs (" (ARM GNU/Linux with a.out)", stderr);
|
||||
|
||||
/* This is used in ASM_FILE_START */
|
||||
#define ARM_OS_NAME "Linux"
|
||||
|
||||
@@ -36,7 +36,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
|
||||
|
||||
/* Default is to use APCS-32 mode. */
|
||||
#define TARGET_DEFAULT ARM_FLAG_APCS_32
|
||||
#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_SOFT_FLOAT)
|
||||
|
||||
#include "arm/aout.h"
|
||||
|
||||
@@ -67,6 +67,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#undef CPP_APCS_PC_DEFAULT_SPEC
|
||||
#define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
|
||||
|
||||
/* Because TARGET_DEFAULT sets ARM_FLAG_SOFT_FLOAT */
|
||||
#undef CPP_FLOAT_DEFAULT_SPEC
|
||||
#define CPP_FLOAT_DEFAULT_SPEC "-D__SOFTFP__"
|
||||
|
||||
/* Pass -X to the linker so that it will strip symbols starting with 'L' */
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC "\
|
||||
@@ -112,6 +116,15 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#undef TYPE_OPERAND_FMT
|
||||
#define TYPE_OPERAND_FMT "%%%s"
|
||||
|
||||
/* NetBSD uses the old PCC style aggregate returning conventions. */
|
||||
#undef DEFAULT_PCC_STRUCT_RETURN
|
||||
#define DEFAULT_PCC_STRUCT_RETURN 1
|
||||
|
||||
/* Although not normally relevant (since by default, all aggregates
|
||||
are returned in memory) compiling some parts of libc requires
|
||||
non-APCS style struct returns. */
|
||||
#undef RETURN_IN_MEMORY
|
||||
|
||||
/* VERY BIG NOTE : Change of structure alignment for RiscBSD.
|
||||
There are consequences you should be aware of...
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ ENQUIRE=
|
||||
CROSS_LIBGCC1 = libgcc1-asm.a
|
||||
LIBGCC1 = libgcc1-asm.a
|
||||
LIB1ASMSRC = arm/lib1funcs.asm
|
||||
LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls
|
||||
LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
|
||||
|
||||
MULTILIB_OPTIONS = mapcs-32
|
||||
MULTILIB_DIRNAMES = apcs-32
|
||||
|
||||
@@ -5,7 +5,3 @@ LIBGCC2_CFLAGS=-O2 -fomit-frame-pointer $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) -g0
|
||||
|
||||
# Don't build enquire
|
||||
ENQUIRE=
|
||||
|
||||
CROSS_LIBGCC1 = libgcc1-asm.a
|
||||
LIB1ASMSRC = arm/lib1funcs.asm
|
||||
LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls
|
||||
|
||||
@@ -6,4 +6,3 @@ X_CFLAGS= -DPOSIX -Dopterr=gcc_opterr -Doptind=gcc_optind \
|
||||
OLDCC=/usr/ucb/cc
|
||||
CC=$(OLDCC)
|
||||
FIXPROTO_DEFINES= -D_POSIX_SOURCE -D_XOPEN_C -D_BSD_C -D_XOPEN_SOURCE
|
||||
INSTALL=$(srcdir)/install.sh -c
|
||||
|
||||
@@ -44,12 +44,6 @@ Boston, MA 02111-1307, USA. */
|
||||
#define USE_C_ALLOCA
|
||||
#endif
|
||||
|
||||
/* Define this if the library function putenv is available on your machine */
|
||||
#define HAVE_PUTENV 1
|
||||
|
||||
/* Define this if the library function vprintf is available on your machine */
|
||||
#define HAVE_VPRINTF 1
|
||||
|
||||
/* Define this to be 1 if you know the host compiler supports prototypes, even
|
||||
if it doesn't define __STDC__, or define it to be 0 if you do not want any
|
||||
prototypes when compiling GNU CC. */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Definitions of target machine for GNU compiler. Clipper/Clix version.
|
||||
Copyright (C) 1988, 1993, 1996 Free Software Foundation, Inc.
|
||||
Copyright (C) 1988, 1993, 1996, 1997 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
@@ -31,6 +31,8 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
#undef LIB_SPEC
|
||||
|
||||
#define TARGET_MEM_FUNCTIONS
|
||||
|
||||
#undef HAVE_ATEXIT
|
||||
#define HAVE_ATEXIT
|
||||
|
||||
|
||||
@@ -27,13 +27,4 @@
|
||||
/* isinf isn't there, but finite is. */
|
||||
#define isinf(x) (!finite(x))
|
||||
|
||||
|
||||
#define USG
|
||||
|
||||
#define bcopy(a,b,c) memcpy (b,a,c)
|
||||
#define bzero(a,b) memset (a,0,b)
|
||||
#define bcmp(a,b,c) memcmp (a,b,c)
|
||||
#define index strchr
|
||||
#define rindex strrchr
|
||||
|
||||
#define TARGET_MEM_FUNCTIONS
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Subroutines for insn-output.c for Convex.
|
||||
Copyright (C) 1988, 1993, 1994 Free Software Foundation, Inc.
|
||||
Copyright (C) 1988, 1993, 1994, 1997 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
@@ -19,6 +19,7 @@ the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include "tree.h"
|
||||
#include "rtl.h"
|
||||
#include "regs.h"
|
||||
@@ -31,9 +32,6 @@ Boston, MA 02111-1307, USA. */
|
||||
#include "output.h"
|
||||
#include "expr.h"
|
||||
|
||||
#undef NULL
|
||||
#include <stdio.h>
|
||||
|
||||
/* Tables used in convex.h */
|
||||
|
||||
char regno_ok_for_index_p_base[1 + LAST_VIRTUAL_REGISTER + 1];
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# ld can make exe's c2-only if this lib is searched even though not loaded
|
||||
CCLIBFLAGS = -tm c1
|
||||
CCLIBFLAGS = -tm c1
|
||||
|
||||
# Use -pcc to avoid surprises.
|
||||
CC = cc -pcc
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Configuration for GNU C-compiler for Convex.
|
||||
Copyright (C) 1989, 1993 Free Software Foundation, Inc.
|
||||
Copyright (C) 1989, 1993, 1997 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
@@ -42,11 +42,6 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
#define P_tmpdir "/tmp/"
|
||||
|
||||
/* Use memcpy and memset -- either would work but these get inlined. */
|
||||
|
||||
#define bcopy(a,b,c) memcpy (b,a,c)
|
||||
#define bzero(a,b) memset (a,0,b)
|
||||
|
||||
/* Convex uses Vax or IEEE floats.
|
||||
Both formats have Vax semantics. */
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Subroutines for insn-output.c for GNU compiler. Elxsi version.
|
||||
Copyright (C) 1987, 1992 Free Software Foundation, Inc
|
||||
Copyright (C) 1987, 1992, 1997 Free Software Foundation, Inc
|
||||
This port, done by Mike Stump <mrs@cygnus.com> in 1988, and is the first
|
||||
64 bit port of GNU CC.
|
||||
Based upon the VAX port.
|
||||
@@ -21,8 +21,8 @@ along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <stdio.h>
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include "rtl.h"
|
||||
|
||||
extern char *reg_names[];
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Subroutines for insn-output.c for Alliant FX computers.
|
||||
Copyright (C) 1989,1991 Free Software Foundation, Inc.
|
||||
Copyright (C) 1989, 1991, 1997 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
@@ -20,8 +20,8 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
|
||||
/* Some output-actions in alliant.md need these. */
|
||||
#include <stdio.h>
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include "rtl.h"
|
||||
#include "regs.h"
|
||||
#include "hard-reg-set.h"
|
||||
|
||||
@@ -1,12 +1,5 @@
|
||||
/* Configuration common to all targets running the GNU system. */
|
||||
|
||||
/* Macro to produce CPP_PREDEFINES for GNU on a given machine. */
|
||||
#define GNU_CPP_PREDEFINES(machine) \
|
||||
"-D" machine " -Acpu(" machine ") -Amachine(" machine ") \
|
||||
-Dunix -Asystem(unix) \
|
||||
-DMACH -Asystem(mach) \
|
||||
-D__GNU__ -Asystem(gnu)"
|
||||
|
||||
/* Provide GCC options for standard feature-test macros. */
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{bsd:-D_BSD_SOURCE}"
|
||||
|
||||
@@ -2996,7 +2996,7 @@ h8300_encode_label (decl)
|
||||
newstr = obstack_alloc (saveable_obstack, len + 2);
|
||||
|
||||
strcpy (newstr + 1, str);
|
||||
*newstr = '*';
|
||||
*newstr = '&';
|
||||
XSTR (XEXP (DECL_RTL (decl), 0), 0) = newstr;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Definitions of target machine for GNU compiler.
|
||||
Hitachi H8/300 version generating coff
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
|
||||
Copyright (C) 1992, 93-98, 1999 Free Software Foundation, Inc.
|
||||
Contributed by Steve Chamberlain (sac@cygnus.com),
|
||||
Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
|
||||
|
||||
@@ -1117,7 +1117,7 @@ readonly_data() \
|
||||
} \
|
||||
}
|
||||
|
||||
#define TINY_DATA_NAME_P(NAME) (*(NAME) == '*')
|
||||
#define TINY_DATA_NAME_P(NAME) (*(NAME) == '&')
|
||||
|
||||
/* If we are referencing a function that is supposed to be called
|
||||
through the function vector, the SYMBOL_REF_FLAG in the rtl
|
||||
@@ -1138,7 +1138,7 @@ readonly_data() \
|
||||
/* Store the user-specified part of SYMBOL_NAME in VAR.
|
||||
This is sort of inverse to ENCODE_SECTION_INFO. */
|
||||
#define STRIP_NAME_ENCODING(VAR,SYMBOL_NAME) \
|
||||
(VAR) = (SYMBOL_NAME) + ((SYMBOL_NAME)[0] == '*' || (SYMBOL_NAME)[0] == '@');
|
||||
(VAR) = (SYMBOL_NAME) + ((SYMBOL_NAME)[0] == '*' || (SYMBOL_NAME)[0] == '@' || (SYMBOL_NAME)[0] == '&')
|
||||
|
||||
/* How to refer to registers in assembler output.
|
||||
This sequence is indexed by compiler's hard-register-number (see above). */
|
||||
@@ -1186,6 +1186,9 @@ readonly_data() \
|
||||
#define ASM_OUTPUT_LABEL(FILE, NAME) \
|
||||
do { assemble_name (FILE, NAME); fputs (":\n", FILE); } while (0)
|
||||
|
||||
#define ASM_OUTPUT_LABELREF(FILE,NAME) \
|
||||
asm_fprintf ((FILE), "%U%s", (NAME) + (TINY_DATA_NAME_P (NAME) ? 1 : 0))
|
||||
|
||||
#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME)
|
||||
|
||||
/* This is how to output a command to make the user-level label named NAME
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Subroutines for insn-output.c for System/370.
|
||||
Copyright (C) 1989, 1993, 1995 Free Software Foundation, Inc.
|
||||
Copyright (C) 1989, 1993, 1995, 1997 Free Software Foundation, Inc.
|
||||
Contributed by Jan Stein (jan@cd.chalmers.se).
|
||||
Modified for MVS C/370 by Dave Pitts (dpitts@nyx.cs.du.edu)
|
||||
|
||||
@@ -20,10 +20,10 @@ along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include "config.h"
|
||||
#include "rtl.h"
|
||||
#include "regs.h"
|
||||
#include "hard-reg-set.h"
|
||||
@@ -35,6 +35,11 @@ Boston, MA 02111-1307, USA. */
|
||||
#include "insn-attr.h"
|
||||
#include "flags.h"
|
||||
#include "recog.h"
|
||||
#ifdef sun
|
||||
#include <sys/types.h>
|
||||
#include <ctype.h>
|
||||
#endif
|
||||
#include <time.h>
|
||||
|
||||
|
||||
/* Label node, this structure is used to keep track of labels on the
|
||||
@@ -285,7 +290,7 @@ mvs_add_label (id)
|
||||
label_anchor = lp;
|
||||
}
|
||||
|
||||
/* Check to see if the label is in the list. If 1 is returned then a load
|
||||
/* Check to see if the label is in the list. If 1 is returned then a load
|
||||
and branch on register must be generated.
|
||||
ID is the label number of the label being checked. */
|
||||
|
||||
@@ -480,3 +485,100 @@ unsigned_jump_follows_p (insn)
|
||||
return GET_CODE (insn) != GE && GET_CODE (insn) != GT
|
||||
&& GET_CODE (insn) != LE && GET_CODE (insn) != LT;
|
||||
}
|
||||
|
||||
void
|
||||
i370_function_prolog (f, l)
|
||||
FILE *f;
|
||||
int l;
|
||||
{
|
||||
#if MACROPROLOGUE == 1
|
||||
fprintf (f, "\tEDCPRLG USRDSAL=%d,BASEREG=%d\n",
|
||||
STACK_POINTER_OFFSET + l - 120 +
|
||||
current_function_outgoing_args_size, BASE_REGISTER);
|
||||
fprintf (f, "PG%d\tEQU\t*\n", mvs_page_num );
|
||||
fprintf (f, "\tLR\t11,1\n");
|
||||
fprintf (f, "\tL\t%d,=A(PGT%d)\n", PAGE_REGISTER, mvs_page_num);
|
||||
mvs_page_code = 6;
|
||||
mvs_page_lit = 4;
|
||||
mvs_check_page (f, 0, 0);
|
||||
function_base_page = mvs_page_num;
|
||||
#else /* MACROPROLOGUE != 1 */
|
||||
static int function_label_index = 1;
|
||||
static int function_first = 0;
|
||||
static int function_year, function_month, function_day;
|
||||
static int function_hour, function_minute, function_second;
|
||||
int i;
|
||||
if (!function_first)
|
||||
{
|
||||
struct tm *function_time;
|
||||
time_t lcltime;
|
||||
time (&lcltime);
|
||||
function_time = localtime (&lcltime);
|
||||
function_year = function_time->tm_year + 1900;
|
||||
function_month = function_time->tm_mon + 1;
|
||||
function_day = function_time->tm_mday;
|
||||
function_hour = function_time->tm_hour;
|
||||
function_minute = function_time->tm_min;
|
||||
function_second = function_time->tm_sec;
|
||||
fprintf (f, "PPA2\tDS\t0F\n");
|
||||
fprintf (f, "\tDC\tX'03',X'00',X'33',X'00'\n");
|
||||
fprintf (f, "\tDC\tV(CEESTART),A(0)\n");
|
||||
fprintf (f, "\tDC\tA(CEETIMES)\n");
|
||||
fprintf (f, "CEETIMES\tDS\t0F\n");
|
||||
fprintf (f, "\tDC\tCL4'%d',CL4'%02d%02d',CL6'%02d%02d00'\n",
|
||||
function_year, function_month, function_day,
|
||||
function_hour, function_minute, function_second);
|
||||
fprintf (f, "\tDC\tCL2'01',CL4'0100'\n");
|
||||
}
|
||||
fprintf (f, "$DSD%03d\tDSECT\n", function_label_index);
|
||||
fprintf (f, "\tDS\tD\n");
|
||||
fprintf (f, "\tDS\tCL(%d)\n", STACK_POINTER_OFFSET + l
|
||||
+ current_function_outgoing_args_size);
|
||||
fprintf (f, "\tORG\t$DSD%03d\n", function_label_index);
|
||||
fprintf (f, "\tDS\tCL(120+8)\n");
|
||||
fprintf (f, "\tORG\n");
|
||||
fprintf (f, "\tDS\t0D\n");
|
||||
fprintf (f, "$DSL%03d\tEQU\t*-$DSD%03d-8\n", function_label_index,
|
||||
function_label_index);
|
||||
fprintf (f, "\tDS\t0H\n");
|
||||
assemble_name (f, mvs_function_name);
|
||||
fprintf (f, "\tEQU\t*\n");
|
||||
fprintf (f, "\tUSING\t*,15\n");
|
||||
fprintf (f, "\tB\tFPL%03d\n", function_label_index);
|
||||
fprintf (f, "\tDC\tAL1(FPL%03d+4-*)\n", function_label_index + 1);
|
||||
fprintf (f, "\tDC\tX'CE',X'A0',AL1(16)\n");
|
||||
fprintf (f, "\tDC\tAL4(PPA2)\n");
|
||||
fprintf (f, "\tDC\tAL4(0)\n");
|
||||
fprintf (f, "\tDC\tAL4($DSL%03d)\n", function_label_index);
|
||||
fprintf (f, "FPL%03d\tEQU\t*\n", function_label_index + 1);
|
||||
fprintf (f, "\tDC\tAL2(%d),C'%s'\n", strlen (mvs_function_name),
|
||||
mvs_function_name);
|
||||
fprintf (f, "FPL%03d\tDS\t0H\n", function_label_index);
|
||||
fprintf (f, "\tSTM\t14,12,12(13)\n");
|
||||
fprintf (f, "\tL\t2,76(,13)\n");
|
||||
fprintf (f, "\tL\t0,16(,15)\n");
|
||||
fprintf (f, "\tALR\t0,2\n");
|
||||
fprintf (f, "\tCL\t0,12(,12)\n");
|
||||
fprintf (f, "\tBNH\t*+10\n");
|
||||
fprintf (f, "\tL\t15,116(,12)\n");
|
||||
fprintf (f, "\tBALR\t14,15\n");
|
||||
fprintf (f, "\tL\t15,72(,13)\n");
|
||||
fprintf (f, "\tSTM\t15,0,72(2)\n");
|
||||
fprintf (f, "\tMVI\t0(2),X'10'\n");
|
||||
fprintf (f, "\tST\t2,8(,13)\n ");
|
||||
fprintf (f, "\tST\t13,4(,2)\n ");
|
||||
fprintf (f, "\tLR\t13,2\n");
|
||||
fprintf (f, "\tDROP\t15\n");
|
||||
fprintf (f, "\tBALR\t%d,0\n", BASE_REGISTER);
|
||||
fprintf (f, "PG%d\tEQU\t*\n", mvs_page_num );
|
||||
fprintf (f, "\tUSING\t*,%d\n", BASE_REGISTER);
|
||||
fprintf (f, "\tLR\t11,1\n");
|
||||
fprintf (f, "\tL\t%d,=A(PGT%d)\n", PAGE_REGISTER, mvs_page_num);
|
||||
mvs_page_code = 4;
|
||||
mvs_page_lit = 4;
|
||||
mvs_check_page (f, 0, 0);
|
||||
function_base_page = mvs_page_num;
|
||||
function_first = 1;
|
||||
function_label_index += 2;
|
||||
#endif /* MACROPROLOGUE */
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Configuration for GNU C-compiler for System/370.
|
||||
Copyright (C) 1989, 1993 Free Software Foundation, Inc.
|
||||
Copyright (C) 1989, 1993, 1997 Free Software Foundation, Inc.
|
||||
Contributed by Jan Stein (jan@cd.chalmers.se).
|
||||
Modified for MVS C/370 by Dave Pitts (dpitts@nyx.cs.du.edu)
|
||||
|
||||
@@ -44,10 +44,6 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include "tm.h"
|
||||
|
||||
#define bcopy(a,b,c) memcpy (b,a,c)
|
||||
#define bzero(a,b) memset (a,0,b)
|
||||
#define bcmp(a,b,c) memcmp (a,b,c)
|
||||
|
||||
/* Arguments to use with `exit'. */
|
||||
|
||||
#define SUCCESS_EXIT_CODE 0
|
||||
|
||||
@@ -22,6 +22,15 @@ along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-Di386 -D_WIN32 -DWIN32 -D__WIN32__ \
|
||||
-D__MINGW32__ -DWINNT -D_X86_=1 -D__STDC__=1\
|
||||
-D__stdcall=__attribute__((__stdcall__)) \
|
||||
-D_stdcall=__attribute__((__stdcall__)) \
|
||||
-D__cdecl=__attribute__((__cdecl__)) \
|
||||
-D__declspec(x)=__attribute__((x)) \
|
||||
-Asystem(winnt) -Acpu(i386) -Amachine(i386)"
|
||||
|
||||
#undef LIBGCC_SPEC
|
||||
#define LIBGCC_SPEC "-lmingw32 -lgcc -lmoldname -lcrtdll"
|
||||
|
||||
|
||||
@@ -97,6 +97,15 @@ extern int i386_pe_valid_decl_attribute_p ();
|
||||
#define VALID_MACHINE_DECL_ATTRIBUTE(DECL, ATTRIBUTES, IDENTIFIER, ARGS) \
|
||||
i386_pe_valid_decl_attribute_p (DECL, ATTRIBUTES, IDENTIFIER, ARGS)
|
||||
|
||||
/* A C expression whose value is nonzero if IDENTIFIER with arguments ARGS
|
||||
is a valid machine specific attribute for TYPE.
|
||||
The attributes in ATTRIBUTES have previously been assigned to TYPE. */
|
||||
|
||||
#undef VALID_MACHINE_TYPE_ATTRIBUTE
|
||||
#define VALID_MACHINE_TYPE_ATTRIBUTE(TYPE, ATTRIBUTES, IDENTIFIER, ARGS) \
|
||||
i386_pe_valid_type_attribute_p (TYPE, ATTRIBUTES, IDENTIFIER, ARGS)
|
||||
extern int i386_pe_valid_type_attribute_p ();
|
||||
|
||||
extern union tree_node *i386_pe_merge_decl_attributes ();
|
||||
#define MERGE_MACHINE_DECL_ATTRIBUTES(OLD, NEW) \
|
||||
i386_pe_merge_decl_attributes ((OLD), (NEW))
|
||||
@@ -325,21 +334,50 @@ extern void i386_pe_unique_section ();
|
||||
NULL_TREE. Some target formats do not support arbitrary sections. Do not
|
||||
define this macro in such cases. */
|
||||
#undef ASM_OUTPUT_SECTION_NAME
|
||||
#define ASM_OUTPUT_SECTION_NAME(STREAM, DECL, NAME, RELOC) \
|
||||
do { \
|
||||
if ((DECL) && TREE_CODE (DECL) == FUNCTION_DECL) \
|
||||
fprintf (STREAM, "\t.section %s,\"x\"\n", (NAME)); \
|
||||
else if ((DECL) && DECL_READONLY_SECTION (DECL, RELOC)) \
|
||||
fprintf (STREAM, "\t.section %s,\"\"\n", (NAME)); \
|
||||
else \
|
||||
fprintf (STREAM, "\t.section %s,\"w\"\n", (NAME)); \
|
||||
/* Functions may have been compiled at various levels of \
|
||||
optimization so we can't use `same_size' here. Instead, \
|
||||
have the linker pick one. */ \
|
||||
if ((DECL) && DECL_ONE_ONLY (DECL)) \
|
||||
fprintf (STREAM, "\t.linkonce %s\n", \
|
||||
TREE_CODE (DECL) == FUNCTION_DECL \
|
||||
? "discard" : "same_size"); \
|
||||
#define ASM_OUTPUT_SECTION_NAME(STREAM, DECL, NAME, RELOC) \
|
||||
do { \
|
||||
static struct section_info \
|
||||
{ \
|
||||
struct section_info *next; \
|
||||
char *name; \
|
||||
enum sect_enum {SECT_RW, SECT_RO, SECT_EXEC} type; \
|
||||
} *sections; \
|
||||
struct section_info *s; \
|
||||
char *mode; \
|
||||
enum sect_enum type; \
|
||||
\
|
||||
for (s = sections; s; s = s->next) \
|
||||
if (!strcmp (NAME, s->name)) \
|
||||
break; \
|
||||
\
|
||||
if (DECL && TREE_CODE (DECL) == FUNCTION_DECL) \
|
||||
type = SECT_EXEC, mode = "x"; \
|
||||
else if (DECL && DECL_READONLY_SECTION (DECL, RELOC)) \
|
||||
type = SECT_RO, mode = ""; \
|
||||
else \
|
||||
type = SECT_RW, mode = "w"; \
|
||||
\
|
||||
if (s == 0) \
|
||||
{ \
|
||||
s = (struct section_info *) xmalloc (sizeof (struct section_info)); \
|
||||
s->name = xmalloc ((strlen (NAME) + 1) * sizeof (*NAME)); \
|
||||
strcpy (s->name, NAME); \
|
||||
s->type = type; \
|
||||
s->next = sections; \
|
||||
sections = s; \
|
||||
fprintf (STREAM, ".section\t%s,\"%s\"\n", NAME, mode); \
|
||||
/* Functions may have been compiled at various levels of \
|
||||
optimization so we can't use `same_size' here. Instead, \
|
||||
have the linker pick one. */ \
|
||||
if ((DECL) && DECL_ONE_ONLY (DECL)) \
|
||||
fprintf (STREAM, "\t.linkonce %s\n", \
|
||||
TREE_CODE (DECL) == FUNCTION_DECL \
|
||||
? "discard" : "same_size"); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
fprintf (STREAM, ".section\t%s,\"%s\"\n", NAME, mode); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* Write the extra assembler code needed to declare a function
|
||||
@@ -408,3 +446,8 @@ do { \
|
||||
extern void i386_pe_record_external_function PROTO((char *));
|
||||
extern void i386_pe_declare_function_type STDIO_PROTO((FILE *, char *, int));
|
||||
extern void i386_pe_asm_file_end STDIO_PROTO((FILE *));
|
||||
|
||||
/* For Win32 ABI compatibility */
|
||||
#undef DEFAULT_PCC_STRUCT_RETURN
|
||||
#define DEFAULT_PCC_STRUCT_RETURN 0
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/* Subroutines for GNU compiler for Intel 80x86 running DG/ux
|
||||
Copyright (C) 1993, 1995 Free Software Foundation, Inc.
|
||||
|
||||
Copyright (C) 1993, 1995, 1997 Free Software Foundation, Inc.
|
||||
Currently maintained by (gcc@dg-rtp.dg.com)
|
||||
|
||||
This file is part of GNU CC.
|
||||
@@ -96,7 +95,7 @@ output_options (file, f_options, f_len, W_options, W_len,
|
||||
indent, pos, max);
|
||||
|
||||
pos = output_option (file, sep, "-mcpu=", ix86_cpu_string, indent, pos, max);
|
||||
pos = output_option (file, sep, "-march=", ix86_isa_string, indent, pos, max);
|
||||
pos = output_option (file, sep, "-march=", ix86_arch_string, indent, pos, max);
|
||||
fprintf (file, term);
|
||||
}
|
||||
|
||||
|
||||
@@ -26,8 +26,13 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* The svr4 ABI for the i386 says that records and unions are returned
|
||||
in memory. */
|
||||
/* On FreeBSD, we do not. */
|
||||
#undef DEFAULT_PCC_STRUCT_RETURN
|
||||
#define DEFAULT_PCC_STRUCT_RETURN 1
|
||||
#define DEFAULT_PCC_STRUCT_RETURN 0
|
||||
|
||||
/* This gets defined in tm.h->linux.h->svr4.h, and keeps us from using
|
||||
libraries compiled with the native cc, so undef it. */
|
||||
#undef NO_DOLLAR_IN_LABEL
|
||||
|
||||
/* This is how to output an element of a case-vector that is relative.
|
||||
This is only used for PIC code. See comments by the `casesi' insn in
|
||||
|
||||
@@ -89,6 +89,10 @@ Boston, MA 02111-1307, USA. */
|
||||
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
|
||||
we want to retain compatibility with older gcc versions. */
|
||||
#define DEFAULT_PCC_STRUCT_RETURN 0
|
||||
|
||||
/* Ensure we the configuration knows our system correctly so we can link with
|
||||
libraries compiled with the native cc. */
|
||||
#undef NO_DOLLAR_IN_LABEL
|
||||
|
||||
/* i386 freebsd still uses old binutils that don't insert nops by default
|
||||
when the .align directive demands to insert extra space in the text
|
||||
|
||||
@@ -31,23 +31,18 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Re rework of the solaris 2 version of gmon by J.W.Hawtin 12/8/1996
|
||||
* Does not work right yet.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This is a modified gmon.c by J.W.Hawtin <J.W.Hawtin@lboro.ac.uk>,
|
||||
* This is a modified gmon.c by J.W.Hawtin <oolon@ankh.org>,
|
||||
* 14/8/96 based on the original gmon.c in GCC and the hacked version
|
||||
* solaris 2 sparc version (config/sparc/gmon-sol.c) by Mark Eichin. To do
|
||||
* process profiling on solaris 2.4 X86
|
||||
* process profiling on solaris 2.X X86
|
||||
*
|
||||
* It must be used in conjunction with sol2-gc1.asm, which is used to start
|
||||
* and stop process monitoring.
|
||||
*
|
||||
* Differences.
|
||||
*
|
||||
* On Solaris 2 _mcount is called my library functions not mcount, so support
|
||||
* On Solaris 2 _mcount is called by library functions not mcount, so support
|
||||
* has been added for both.
|
||||
*
|
||||
* Also the prototype for profil() is different
|
||||
@@ -58,7 +53,7 @@
|
||||
*
|
||||
* Notes
|
||||
*
|
||||
* This code could easily be integrated with the orginal gmon.c and perhaps
|
||||
* This code could easily be integrated with the original gmon.c and perhaps
|
||||
* should be.
|
||||
*/
|
||||
|
||||
@@ -90,7 +85,7 @@ struct phdr {
|
||||
#define HASHFRACTION 1
|
||||
#define ARCDENSITY 2
|
||||
#define MINARCS 50
|
||||
#define BASEADDRESS 0x8000000 /* On Solaris 2 X86 all excutables start here
|
||||
#define BASEADDRESS 0x8000000 /* On Solaris 2 X86 all executables start here
|
||||
and not at 0 */
|
||||
|
||||
struct tostruct {
|
||||
@@ -264,6 +259,7 @@ internal_mcount()
|
||||
register struct tostruct *top;
|
||||
register struct tostruct *prevtop;
|
||||
register long toindex;
|
||||
static char already_setup;
|
||||
|
||||
/*
|
||||
* find the return address for mcount,
|
||||
@@ -277,6 +273,17 @@ internal_mcount()
|
||||
This identifies the caller of the function just entered. */
|
||||
frompcindex = (void *) __builtin_return_address (1);
|
||||
|
||||
if(!already_setup) {
|
||||
extern etext();
|
||||
already_setup = 1;
|
||||
/* monstartup(0, etext); */
|
||||
monstartup(0x08040000, etext);
|
||||
#ifdef USE_ONEXIT
|
||||
on_exit(_mcleanup, 0);
|
||||
#else
|
||||
atexit(_mcleanup);
|
||||
#endif
|
||||
}
|
||||
/*
|
||||
* check that we are profiling
|
||||
* and that we aren't recursively invoked.
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
|
||||
#include "dbxcoff.h"
|
||||
|
||||
#define NO_STAB_H /* DJGPP has no stab.h */
|
||||
|
||||
/* Don't assume anything about the header files. */
|
||||
#define NO_IMPLICIT_EXTERN_C
|
||||
|
||||
@@ -88,3 +86,11 @@ dtor_section () \
|
||||
#undef ASM_OUTPUT_ALIGN
|
||||
#define ASM_OUTPUT_ALIGN(FILE,LOG) \
|
||||
if ((LOG) != 0) fprintf ((FILE), "\t.p2align %d\n", LOG)
|
||||
|
||||
/* djgpp has atexit (). */
|
||||
#undef HAVE_ATEXIT
|
||||
#define HAVE_ATEXIT
|
||||
|
||||
/* djgpp automatically calls its own version of __main, so don't define one
|
||||
in libgcc, nor call one in main(). */
|
||||
#define HAS_INIT_SECTION
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Subroutines for insn-output.c for Intel X86.
|
||||
Copyright (C) 1988, 92, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1988, 92, 94-98, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
@@ -546,6 +546,7 @@ i386_valid_type_attribute_p (type, attributes, identifier, args)
|
||||
tree args;
|
||||
{
|
||||
if (TREE_CODE (type) != FUNCTION_TYPE
|
||||
&& TREE_CODE (type) != METHOD_TYPE
|
||||
&& TREE_CODE (type) != FIELD_DECL
|
||||
&& TREE_CODE (type) != TYPE_DECL)
|
||||
return 0;
|
||||
@@ -891,6 +892,17 @@ output_to_reg (dest, dies, scratch_mem)
|
||||
{
|
||||
if (dies)
|
||||
output_asm_insn (AS1 (fistp%z3,%y0), xops);
|
||||
else if (GET_MODE (xops[3]) == DImode && ! dies)
|
||||
{
|
||||
/* There is no DImode version of this without a stack pop, so
|
||||
we must emulate it. It doesn't matter much what the second
|
||||
instruction is, because the value being pushed on the FP stack
|
||||
is not used except for the following stack popping store.
|
||||
This case can only happen without optimization, so it doesn't
|
||||
matter that it is inefficient. */
|
||||
output_asm_insn (AS1 (fistp%z3,%0), xops);
|
||||
output_asm_insn (AS1 (fild%z3,%0), xops);
|
||||
}
|
||||
else
|
||||
output_asm_insn (AS1 (fist%z3,%y0), xops);
|
||||
}
|
||||
@@ -5196,12 +5208,6 @@ output_fp_conditional_move (which_alternative, operands)
|
||||
output_asm_insn (AS2 (fcmov%f1,%3,%0), operands);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
/* r <- cond ? r : arg */
|
||||
output_asm_insn (AS2 (fcmov%F1,%2,%0), operands);
|
||||
output_asm_insn (AS2 (fcmov%f1,%3,%0), operands);
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
}
|
||||
@@ -5261,17 +5267,6 @@ output_int_conditional_move (which_alternative, operands)
|
||||
output_asm_insn (AS2 (cmov%c1,%3,%0), xops);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
/* rm <- cond ? arg1 : arg2 */
|
||||
output_asm_insn (AS2 (cmov%C1,%2,%0), operands);
|
||||
output_asm_insn (AS2 (cmov%c1,%3,%0), operands);
|
||||
if (mode == DImode)
|
||||
{
|
||||
output_asm_insn (AS2 (cmov%C1,%2,%0), xops);
|
||||
output_asm_insn (AS2 (cmov%c1,%3,%0), xops);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
}
|
||||
|
||||
@@ -896,10 +896,19 @@ enum reg_class
|
||||
/* Similar, but for floating constants, and defining letters G and H.
|
||||
Here VALUE is the CONST_DOUBLE rtx itself. We allow constants even if
|
||||
TARGET_387 isn't set, because the stack register converter may need to
|
||||
load 0.0 into the function value register. */
|
||||
load 0.0 into the function value register.
|
||||
|
||||
We disallow these constants when -fomit-frame-pointer and compiling
|
||||
PIC code since reload might need to force the constant to memory.
|
||||
Forcing the constant to memory changes the elimination offsets after
|
||||
the point where they must stay constant.
|
||||
|
||||
However, we must allow them after reload as completed as reg-stack.c
|
||||
will create insns which use these constants. */
|
||||
|
||||
#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) \
|
||||
((C) == 'G' ? standard_80387_constant_p (VALUE) : 0)
|
||||
(((reload_completed || !flag_pic || !flag_omit_frame_pointer) && (C) == 'G') \
|
||||
? standard_80387_constant_p (VALUE) : 0)
|
||||
|
||||
/* Place additional restrictions on the register class to use when it
|
||||
is necessary to be able to hold a value of mode MODE in a reload
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
; GCC machine description for Intel X86.
|
||||
;; Copyright (C) 1988, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1988, 94, 95, 96, 97, 98, 1999 Free Software Foundation, Inc.
|
||||
;; Mostly by William Schelter.
|
||||
|
||||
;; This file is part of GNU CC.
|
||||
@@ -1109,7 +1109,7 @@
|
||||
/* Fastest way to change a 0 to a 1.
|
||||
If inc%B0 isn't allowed, use inc%L0. */
|
||||
if (NON_QI_REG_P (operands[0]))
|
||||
return AS1 (inc%L0,%0);
|
||||
return AS1 (inc%L0,%k0);
|
||||
else
|
||||
return AS1 (inc%B0,%0);
|
||||
}
|
||||
@@ -4544,8 +4544,7 @@ byte_xor_operation:
|
||||
""
|
||||
"*
|
||||
{
|
||||
rtx xops[4], low[1], high[1];
|
||||
static HOST_WIDE_INT ashldi_label_number;
|
||||
rtx xops[5], low[1], high[1];
|
||||
|
||||
CC_STATUS_INIT;
|
||||
|
||||
@@ -4554,15 +4553,16 @@ byte_xor_operation:
|
||||
xops[1] = GEN_INT (32);
|
||||
xops[2] = low[0];
|
||||
xops[3] = high[0];
|
||||
xops[4] = gen_label_rtx ();
|
||||
|
||||
output_asm_insn (AS3_SHIFT_DOUBLE (shld%L3,%0,%2,%3), xops);
|
||||
output_asm_insn (AS2 (sal%L2,%0,%2), xops);
|
||||
output_asm_insn (AS2 (test%B0,%1,%b0), xops);
|
||||
asm_fprintf (asm_out_file, \"\\tje %LLASHLDI%d\\n\", ashldi_label_number);
|
||||
output_asm_insn (AS1 (je,%X4), xops);
|
||||
output_asm_insn (AS2 (mov%L3,%2,%3), xops); /* Fast shift by 32 */
|
||||
output_asm_insn (AS2 (xor%L2,%2,%2), xops);
|
||||
asm_fprintf (asm_out_file, \"%LLASHLDI%d:\\n\", ashldi_label_number++);
|
||||
|
||||
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, \"L\",
|
||||
CODE_LABEL_NUMBER (xops[4]));
|
||||
RET;
|
||||
}")
|
||||
|
||||
@@ -4732,8 +4732,7 @@ byte_xor_operation:
|
||||
""
|
||||
"*
|
||||
{
|
||||
rtx xops[4], low[1], high[1];
|
||||
static HOST_WIDE_INT ashrdi_label_number;
|
||||
rtx xops[5], low[1], high[1];
|
||||
|
||||
CC_STATUS_INIT;
|
||||
|
||||
@@ -4742,16 +4741,17 @@ byte_xor_operation:
|
||||
xops[1] = GEN_INT (32);
|
||||
xops[2] = low[0];
|
||||
xops[3] = high[0];
|
||||
xops[4] = gen_label_rtx ();
|
||||
|
||||
output_asm_insn (AS3_SHIFT_DOUBLE (shrd%L2,%0,%3,%2), xops);
|
||||
output_asm_insn (AS2 (sar%L3,%0,%3), xops);
|
||||
output_asm_insn (AS2 (test%B0,%1,%b0), xops);
|
||||
asm_fprintf (asm_out_file, \"\\tje %LLASHRDI%d\\n\", ashrdi_label_number);
|
||||
output_asm_insn (AS1 (je,%X4), xops);
|
||||
xops[1] = GEN_INT (31);
|
||||
output_asm_insn (AS2 (mov%L2,%3,%2), xops);
|
||||
output_asm_insn (AS2 (sar%L3,%1,%3), xops); /* shift by 32 */
|
||||
asm_fprintf (asm_out_file, \"%LLASHRDI%d:\\n\", ashrdi_label_number++);
|
||||
|
||||
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, \"L\",
|
||||
CODE_LABEL_NUMBER (xops[4]));
|
||||
RET;
|
||||
}")
|
||||
|
||||
@@ -4887,8 +4887,7 @@ byte_xor_operation:
|
||||
""
|
||||
"*
|
||||
{
|
||||
rtx xops[4], low[1], high[1];
|
||||
static HOST_WIDE_INT lshrdi_label_number;
|
||||
rtx xops[5], low[1], high[1];
|
||||
|
||||
CC_STATUS_INIT;
|
||||
|
||||
@@ -4897,15 +4896,16 @@ byte_xor_operation:
|
||||
xops[1] = GEN_INT (32);
|
||||
xops[2] = low[0];
|
||||
xops[3] = high[0];
|
||||
xops[4] = gen_label_rtx ();
|
||||
|
||||
output_asm_insn (AS3_SHIFT_DOUBLE (shrd%L2,%0,%3,%2), xops);
|
||||
output_asm_insn (AS2 (shr%L3,%0,%3), xops);
|
||||
output_asm_insn (AS2 (test%B0,%1,%b0), xops);
|
||||
asm_fprintf (asm_out_file, \"\\tje %LLLSHRDI%d\\n\", lshrdi_label_number);
|
||||
output_asm_insn (AS1 (je,%X4), xops);
|
||||
output_asm_insn (AS2 (mov%L2,%3,%2), xops); /* Fast shift by 32 */
|
||||
output_asm_insn (AS2 (xor%L3,%3,%3), xops);
|
||||
asm_fprintf (asm_out_file, \"%LLLSHRDI%d:\\n\", lshrdi_label_number++);
|
||||
|
||||
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, \"L\",
|
||||
CODE_LABEL_NUMBER (xops[4]));
|
||||
RET;
|
||||
}")
|
||||
|
||||
@@ -7238,32 +7238,32 @@ byte_xor_operation:
|
||||
}")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r")
|
||||
[(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
|
||||
(if_then_else:SI (match_operator 1 "comparison_operator"
|
||||
[(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m,q,m")
|
||||
(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn,qmn,qn")])
|
||||
(match_operand:SI 4 "nonimmediate_operand" "rm,rm,0,0,rm,rm")
|
||||
(match_operand:SI 5 "nonimmediate_operand" "0,0,rm,rm,rm,rm")))]
|
||||
[(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m")
|
||||
(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn")])
|
||||
(match_operand:SI 4 "nonimmediate_operand" "rm,rm,0,0")
|
||||
(match_operand:SI 5 "nonimmediate_operand" "0,0,rm,rm")))]
|
||||
"TARGET_CMOVE"
|
||||
"#")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r,r")
|
||||
[(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
|
||||
(if_then_else:SI (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "r,m,r,m,r,m")
|
||||
(match_operand 3 "general_operand" "rmi,ri,rmi,ri,rmi,ri")])
|
||||
(match_operand:SI 4 "nonimmediate_operand" "rm,rm,0,0,rm,rm")
|
||||
(match_operand:SI 5 "nonimmediate_operand" "0,0,rm,rm,rm,rm")))]
|
||||
[(match_operand 2 "nonimmediate_operand" "r,m,r,m")
|
||||
(match_operand 3 "general_operand" "rmi,ri,rmi,ri")])
|
||||
(match_operand:SI 4 "nonimmediate_operand" "rm,rm,0,0")
|
||||
(match_operand:SI 5 "nonimmediate_operand" "0,0,rm,rm")))]
|
||||
"TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT"
|
||||
"#")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:SI 0 "register_operand" "=r,r,r")
|
||||
[(set (match_operand:SI 0 "register_operand" "=r,r")
|
||||
(if_then_else:SI (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "")
|
||||
(const_int 0)])
|
||||
(match_operand:SI 3 "nonimmediate_operand" "rm,0,rm")
|
||||
(match_operand:SI 4 "nonimmediate_operand" "0,rm,rm")))]
|
||||
(match_operand:SI 3 "nonimmediate_operand" "rm,0")
|
||||
(match_operand:SI 4 "nonimmediate_operand" "0,rm")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
[(set (cc0)
|
||||
(match_dup 2))
|
||||
@@ -7273,12 +7273,12 @@ byte_xor_operation:
|
||||
"")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:SI 0 "register_operand" "=r,r,r")
|
||||
[(set (match_operand:SI 0 "register_operand" "=r,r")
|
||||
(if_then_else:SI (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "")
|
||||
(match_operand 3 "general_operand" "")])
|
||||
(match_operand:SI 4 "nonimmediate_operand" "rm,0,rm")
|
||||
(match_operand:SI 5 "nonimmediate_operand" "0,rm,rm")))]
|
||||
(match_operand:SI 4 "nonimmediate_operand" "rm,0")
|
||||
(match_operand:SI 5 "nonimmediate_operand" "0,rm")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
[(set (cc0) (compare (match_dup 2) (match_dup 3)))
|
||||
(set (match_dup 0)
|
||||
@@ -7287,11 +7287,11 @@ byte_xor_operation:
|
||||
"")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SI 0 "register_operand" "=r,r,r")
|
||||
[(set (match_operand:SI 0 "register_operand" "=r,r")
|
||||
(if_then_else:SI (match_operator 1 "comparison_operator"
|
||||
[(cc0) (const_int 0)])
|
||||
(match_operand:SI 2 "nonimmediate_operand" "rm,0,rm")
|
||||
(match_operand:SI 3 "nonimmediate_operand" "0,rm,rm")))]
|
||||
(match_operand:SI 2 "nonimmediate_operand" "rm,0")
|
||||
(match_operand:SI 3 "nonimmediate_operand" "0,rm")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
"* return output_int_conditional_move (which_alternative, operands);")
|
||||
|
||||
@@ -7312,32 +7312,32 @@ byte_xor_operation:
|
||||
}")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r,r")
|
||||
[(set (match_operand:HI 0 "register_operand" "=r,r,r,r")
|
||||
(if_then_else:HI (match_operator 1 "comparison_operator"
|
||||
[(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m,q,m")
|
||||
(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn,qmn,qn")])
|
||||
(match_operand:HI 4 "nonimmediate_operand" "rm,rm,0,0,rm,rm")
|
||||
(match_operand:HI 5 "nonimmediate_operand" "0,0,rm,rm,rm,rm")))]
|
||||
[(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m")
|
||||
(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn")])
|
||||
(match_operand:HI 4 "nonimmediate_operand" "rm,rm,0,0")
|
||||
(match_operand:HI 5 "nonimmediate_operand" "0,0,rm,rm")))]
|
||||
"TARGET_CMOVE"
|
||||
"#")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:HI 0 "register_operand" "=r,r,r,r,r,r")
|
||||
[(set (match_operand:HI 0 "register_operand" "=r,r,r,r")
|
||||
(if_then_else:HI (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "r,m,r,m,r,m")
|
||||
(match_operand 3 "general_operand" "rmi,ri,rmi,ri,rmi,ri")])
|
||||
(match_operand:HI 4 "nonimmediate_operand" "rm,rm,0,0,rm,rm")
|
||||
(match_operand:HI 5 "nonimmediate_operand" "0,0,rm,rm,rm,rm")))]
|
||||
[(match_operand 2 "nonimmediate_operand" "r,m,r,m")
|
||||
(match_operand 3 "general_operand" "rmi,ri,rmi,ri")])
|
||||
(match_operand:HI 4 "nonimmediate_operand" "rm,rm,0,0")
|
||||
(match_operand:HI 5 "nonimmediate_operand" "0,0,rm,rm")))]
|
||||
"TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT"
|
||||
"#")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:HI 0 "register_operand" "=r,r,r")
|
||||
[(set (match_operand:HI 0 "register_operand" "=r,r")
|
||||
(if_then_else:HI (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "")
|
||||
(const_int 0)])
|
||||
(match_operand:HI 3 "nonimmediate_operand" "rm,0,rm")
|
||||
(match_operand:HI 4 "nonimmediate_operand" "0,rm,rm")))]
|
||||
(match_operand:HI 3 "nonimmediate_operand" "rm,0")
|
||||
(match_operand:HI 4 "nonimmediate_operand" "0,rm")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
[(set (cc0)
|
||||
(match_dup 2))
|
||||
@@ -7347,12 +7347,12 @@ byte_xor_operation:
|
||||
"")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:HI 0 "register_operand" "=r,r,r")
|
||||
[(set (match_operand:HI 0 "register_operand" "=r,r")
|
||||
(if_then_else:HI (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "")
|
||||
(match_operand 3 "general_operand" "")])
|
||||
(match_operand:HI 4 "nonimmediate_operand" "rm,0,rm")
|
||||
(match_operand:HI 5 "nonimmediate_operand" "0,rm,rm")))]
|
||||
(match_operand:HI 4 "nonimmediate_operand" "rm,0")
|
||||
(match_operand:HI 5 "nonimmediate_operand" "0,rm")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
[(set (cc0)
|
||||
(compare (match_dup 2) (match_dup 3)))
|
||||
@@ -7362,11 +7362,11 @@ byte_xor_operation:
|
||||
"")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:HI 0 "register_operand" "=r,r,r")
|
||||
[(set (match_operand:HI 0 "register_operand" "=r,r")
|
||||
(if_then_else:HI (match_operator 1 "comparison_operator"
|
||||
[(cc0) (const_int 0)])
|
||||
(match_operand:HI 2 "nonimmediate_operand" "rm,0,rm")
|
||||
(match_operand:HI 3 "nonimmediate_operand" "0,rm,rm")))]
|
||||
(match_operand:HI 2 "nonimmediate_operand" "rm,0")
|
||||
(match_operand:HI 3 "nonimmediate_operand" "0,rm")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
"* return output_int_conditional_move (which_alternative, operands);")
|
||||
|
||||
@@ -7411,36 +7411,36 @@ byte_xor_operation:
|
||||
}")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SF 0 "register_operand" "=f,f,f,f,f,f")
|
||||
[(set (match_operand:SF 0 "register_operand" "=f,f,f,f")
|
||||
(if_then_else:SF (match_operator 1 "comparison_operator"
|
||||
[(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m,q,m")
|
||||
(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn,qmn,qn")])
|
||||
(match_operand:SF 4 "register_operand" "f,f,0,0,f,f")
|
||||
(match_operand:SF 5 "register_operand" "0,0,f,f,f,f")))]
|
||||
[(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m")
|
||||
(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn")])
|
||||
(match_operand:SF 4 "register_operand" "f,f,0,0")
|
||||
(match_operand:SF 5 "register_operand" "0,0,f,f")))]
|
||||
"TARGET_CMOVE
|
||||
&& GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
|
||||
&& GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
|
||||
"#")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SF 0 "register_operand" "=f,f,f,f,f,f")
|
||||
[(set (match_operand:SF 0 "register_operand" "=f,f,f,f")
|
||||
(if_then_else:SF (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "r,m,r,m,r,m")
|
||||
(match_operand 3 "general_operand" "rmi,ri,rmi,ri,rmi,ri")])
|
||||
(match_operand:SF 4 "register_operand" "f,f,0,0,f,f")
|
||||
(match_operand:SF 5 "register_operand" "0,0,f,f,f,f")))]
|
||||
[(match_operand 2 "nonimmediate_operand" "r,m,r,m")
|
||||
(match_operand 3 "general_operand" "rmi,ri,rmi,ri")])
|
||||
(match_operand:SF 4 "register_operand" "f,f,0,0")
|
||||
(match_operand:SF 5 "register_operand" "0,0,f,f")))]
|
||||
"TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT
|
||||
&& GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
|
||||
&& GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
|
||||
"#")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:SF 0 "register_operand" "=f,f,f")
|
||||
[(set (match_operand:SF 0 "register_operand" "=f,f")
|
||||
(if_then_else:SF (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "")
|
||||
(const_int 0)])
|
||||
(match_operand:SF 3 "register_operand" "f,0,f")
|
||||
(match_operand:SF 4 "register_operand" "0,f,f")))]
|
||||
(match_operand:SF 3 "register_operand" "f,0")
|
||||
(match_operand:SF 4 "register_operand" "0,f")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
[(set (cc0)
|
||||
(match_dup 2))
|
||||
@@ -7450,12 +7450,12 @@ byte_xor_operation:
|
||||
"")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:SF 0 "register_operand" "=f,f,f")
|
||||
[(set (match_operand:SF 0 "register_operand" "=f,f")
|
||||
(if_then_else:SF (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "")
|
||||
(match_operand 3 "general_operand" "")])
|
||||
(match_operand:SF 4 "register_operand" "f,0,f")
|
||||
(match_operand:SF 5 "register_operand" "0,f,f")))]
|
||||
(match_operand:SF 4 "register_operand" "f,0")
|
||||
(match_operand:SF 5 "register_operand" "0,f")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
[(set (cc0) (compare (match_dup 2) (match_dup 3)))
|
||||
(set (match_dup 0)
|
||||
@@ -7464,11 +7464,11 @@ byte_xor_operation:
|
||||
"")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SF 0 "register_operand" "=f,f,f")
|
||||
[(set (match_operand:SF 0 "register_operand" "=f,f")
|
||||
(if_then_else:SF (match_operator 1 "comparison_operator"
|
||||
[(cc0) (const_int 0)])
|
||||
(match_operand:SF 2 "register_operand" "f,0,f")
|
||||
(match_operand:SF 3 "register_operand" "0,f,f")))]
|
||||
(match_operand:SF 2 "register_operand" "f,0")
|
||||
(match_operand:SF 3 "register_operand" "0,f")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
"* return output_fp_conditional_move (which_alternative, operands);")
|
||||
|
||||
@@ -7513,36 +7513,36 @@ byte_xor_operation:
|
||||
}")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DF 0 "register_operand" "=f,f,f,f,f,f")
|
||||
[(set (match_operand:DF 0 "register_operand" "=f,f,f,f")
|
||||
(if_then_else:DF (match_operator 1 "comparison_operator"
|
||||
[(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m,q,m")
|
||||
(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn,qmn,qn")])
|
||||
(match_operand:DF 4 "register_operand" "f,f,0,0,f,f")
|
||||
(match_operand:DF 5 "register_operand" "0,0,f,f,f,f")))]
|
||||
[(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m")
|
||||
(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn")])
|
||||
(match_operand:DF 4 "register_operand" "f,f,0,0")
|
||||
(match_operand:DF 5 "register_operand" "0,0,f,f")))]
|
||||
"TARGET_CMOVE
|
||||
&& GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
|
||||
&& GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
|
||||
"#")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DF 0 "register_operand" "=f,f,f,f,f,f")
|
||||
[(set (match_operand:DF 0 "register_operand" "=f,f,f,f")
|
||||
(if_then_else:DF (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "r,m,r,m,r,m")
|
||||
(match_operand 3 "general_operand" "rmi,ri,rmi,ri,rmi,ri")])
|
||||
(match_operand:DF 4 "register_operand" "f,f,0,0,f,f")
|
||||
(match_operand:DF 5 "register_operand" "0,0,f,f,f,f")))]
|
||||
[(match_operand 2 "nonimmediate_operand" "r,m,r,m")
|
||||
(match_operand 3 "general_operand" "rmi,ri,rmi,ri")])
|
||||
(match_operand:DF 4 "register_operand" "f,f,0,0")
|
||||
(match_operand:DF 5 "register_operand" "0,0,f,f")))]
|
||||
"TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT
|
||||
&& GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
|
||||
&& GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
|
||||
"#")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:DF 0 "register_operand" "=f,f,f")
|
||||
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
||||
(if_then_else:DF (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "")
|
||||
(const_int 0)])
|
||||
(match_operand:DF 3 "register_operand" "f,0,f")
|
||||
(match_operand:DF 4 "register_operand" "0,f,f")))]
|
||||
(match_operand:DF 3 "register_operand" "f,0")
|
||||
(match_operand:DF 4 "register_operand" "0,f")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
[(set (cc0)
|
||||
(match_dup 2))
|
||||
@@ -7552,12 +7552,12 @@ byte_xor_operation:
|
||||
"")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:DF 0 "register_operand" "=f,f,f")
|
||||
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
||||
(if_then_else:DF (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "")
|
||||
(match_operand 3 "general_operand" "")])
|
||||
(match_operand:DF 4 "register_operand" "f,0,f")
|
||||
(match_operand:DF 5 "register_operand" "0,f,f")))]
|
||||
(match_operand:DF 4 "register_operand" "f,0")
|
||||
(match_operand:DF 5 "register_operand" "0,f")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
[(set (cc0) (compare (match_dup 2) (match_dup 3)))
|
||||
(set (match_dup 0)
|
||||
@@ -7566,11 +7566,11 @@ byte_xor_operation:
|
||||
"")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DF 0 "register_operand" "=f,f,f")
|
||||
[(set (match_operand:DF 0 "register_operand" "=f,f")
|
||||
(if_then_else:DF (match_operator 1 "comparison_operator"
|
||||
[(cc0) (const_int 0)])
|
||||
(match_operand:DF 2 "register_operand" "f,0,f")
|
||||
(match_operand:DF 3 "register_operand" "0,f,f")))]
|
||||
(match_operand:DF 2 "register_operand" "f,0")
|
||||
(match_operand:DF 3 "register_operand" "0,f")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
"* return output_fp_conditional_move (which_alternative, operands);")
|
||||
|
||||
@@ -7615,36 +7615,36 @@ byte_xor_operation:
|
||||
}")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:XF 0 "register_operand" "=f,f,f,f,f,f")
|
||||
[(set (match_operand:XF 0 "register_operand" "=f,f,f,f")
|
||||
(if_then_else:XF (match_operator 1 "comparison_operator"
|
||||
[(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m,q,m")
|
||||
(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn,qmn,qn")])
|
||||
(match_operand:XF 4 "register_operand" "f,f,0,0,f,f")
|
||||
(match_operand:XF 5 "register_operand" "0,0,f,f,f,f")))]
|
||||
[(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m")
|
||||
(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn")])
|
||||
(match_operand:XF 4 "register_operand" "f,f,0,0")
|
||||
(match_operand:XF 5 "register_operand" "0,0,f,f")))]
|
||||
"TARGET_CMOVE
|
||||
&& GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
|
||||
&& GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
|
||||
"#")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:XF 0 "register_operand" "=f,f,f,f,f,f")
|
||||
[(set (match_operand:XF 0 "register_operand" "=f,f,f,f")
|
||||
(if_then_else:XF (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "r,m,r,m,r,m")
|
||||
(match_operand 3 "general_operand" "rmi,ri,rmi,ri,rmi,ri")])
|
||||
(match_operand:XF 4 "register_operand" "f,f,0,0,f,f")
|
||||
(match_operand:XF 5 "register_operand" "0,0,f,f,f,f")))]
|
||||
[(match_operand 2 "nonimmediate_operand" "r,m,r,m")
|
||||
(match_operand 3 "general_operand" "rmi,ri,rmi,ri")])
|
||||
(match_operand:XF 4 "register_operand" "f,f,0,0")
|
||||
(match_operand:XF 5 "register_operand" "0,0,f,f")))]
|
||||
"TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT
|
||||
&& GET_CODE (operands[1]) != LT && GET_CODE (operands[1]) != LE
|
||||
&& GET_CODE (operands[1]) != GE && GET_CODE (operands[1]) != GT"
|
||||
"#")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:XF 0 "register_operand" "=f,f,f")
|
||||
[(set (match_operand:XF 0 "register_operand" "=f,f")
|
||||
(if_then_else:XF (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "")
|
||||
(const_int 0)])
|
||||
(match_operand:XF 3 "register_operand" "f,0,f")
|
||||
(match_operand:XF 4 "register_operand" "0,f,f")))]
|
||||
(match_operand:XF 3 "register_operand" "f,0")
|
||||
(match_operand:XF 4 "register_operand" "0,f")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
[(set (cc0)
|
||||
(match_dup 2))
|
||||
@@ -7654,12 +7654,12 @@ byte_xor_operation:
|
||||
"")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:XF 0 "register_operand" "=f,f,f")
|
||||
[(set (match_operand:XF 0 "register_operand" "=f,f")
|
||||
(if_then_else:XF (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "")
|
||||
(match_operand 3 "general_operand" "")])
|
||||
(match_operand:XF 4 "register_operand" "f,0,f")
|
||||
(match_operand:XF 5 "register_operand" "0,f,f")))]
|
||||
(match_operand:XF 4 "register_operand" "f,0")
|
||||
(match_operand:XF 5 "register_operand" "0,f")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
[(set (cc0) (compare (match_dup 2) (match_dup 3)))
|
||||
(set (match_dup 0)
|
||||
@@ -7668,11 +7668,11 @@ byte_xor_operation:
|
||||
"")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:XF 0 "register_operand" "=f,f,f")
|
||||
[(set (match_operand:XF 0 "register_operand" "=f,f")
|
||||
(if_then_else:XF (match_operator 1 "comparison_operator"
|
||||
[(cc0) (const_int 0)])
|
||||
(match_operand:XF 2 "register_operand" "f,0,f")
|
||||
(match_operand:XF 3 "register_operand" "0,f,f")))]
|
||||
(match_operand:XF 2 "register_operand" "f,0")
|
||||
(match_operand:XF 3 "register_operand" "0,f")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
"* return output_fp_conditional_move (which_alternative, operands);")
|
||||
|
||||
@@ -7693,32 +7693,32 @@ byte_xor_operation:
|
||||
}")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DI 0 "register_operand" "=&r,&r,&r,&r,&r,&r")
|
||||
[(set (match_operand:DI 0 "register_operand" "=&r,&r,&r,&r")
|
||||
(if_then_else:DI (match_operator 1 "comparison_operator"
|
||||
[(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m,q,m")
|
||||
(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn,qmn,qn")])
|
||||
(match_operand:DI 4 "nonimmediate_operand" "ro,ro,0,0,ro,ro")
|
||||
(match_operand:DI 5 "nonimmediate_operand" "0,0,ro,ro,ro,ro")))]
|
||||
[(match_operand:QI 2 "nonimmediate_operand" "q,m,q,m")
|
||||
(match_operand:QI 3 "general_operand" "qmn,qn,qmn,qn")])
|
||||
(match_operand:DI 4 "nonimmediate_operand" "ro,ro,0,0")
|
||||
(match_operand:DI 5 "nonimmediate_operand" "0,0,ro,ro")))]
|
||||
"TARGET_CMOVE"
|
||||
"#")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DI 0 "register_operand" "=&r,&r,&r,&r,&r,&r")
|
||||
[(set (match_operand:DI 0 "register_operand" "=&r,&r,&r,&r")
|
||||
(if_then_else:DI (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "r,m,r,m,r,m")
|
||||
(match_operand 3 "general_operand" "rmi,ri,rmi,ri,rmi,ri")])
|
||||
(match_operand:DI 4 "nonimmediate_operand" "ro,ro,0,0,ro,ro")
|
||||
(match_operand:DI 5 "nonimmediate_operand" "0,0,ro,ro,ro,ro")))]
|
||||
[(match_operand 2 "nonimmediate_operand" "r,m,r,m")
|
||||
(match_operand 3 "general_operand" "rmi,ri,rmi,ri")])
|
||||
(match_operand:DI 4 "nonimmediate_operand" "ro,ro,0,0")
|
||||
(match_operand:DI 5 "nonimmediate_operand" "0,0,ro,ro")))]
|
||||
"TARGET_CMOVE && GET_MODE_CLASS (GET_MODE (operands[2])) == MODE_INT"
|
||||
"#")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:DI 0 "register_operand" "=&r,&r,&r")
|
||||
[(set (match_operand:DI 0 "register_operand" "=&r,&r")
|
||||
(if_then_else:DI (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "")
|
||||
(const_int 0)])
|
||||
(match_operand:DI 3 "nonimmediate_operand" "ro,0,ro")
|
||||
(match_operand:DI 4 "nonimmediate_operand" "0,ro,ro")))]
|
||||
(match_operand:DI 3 "nonimmediate_operand" "ro,0")
|
||||
(match_operand:DI 4 "nonimmediate_operand" "0,ro")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
[(set (cc0)
|
||||
(match_dup 2))
|
||||
@@ -7728,12 +7728,12 @@ byte_xor_operation:
|
||||
"")
|
||||
|
||||
(define_split
|
||||
[(set (match_operand:DI 0 "register_operand" "=&r,&r,&r")
|
||||
[(set (match_operand:DI 0 "register_operand" "=&r,&r")
|
||||
(if_then_else:DI (match_operator 1 "comparison_operator"
|
||||
[(match_operand 2 "nonimmediate_operand" "")
|
||||
(match_operand 3 "general_operand" "")])
|
||||
(match_operand:DI 4 "nonimmediate_operand" "ro,0,ro")
|
||||
(match_operand:DI 5 "nonimmediate_operand" "0,ro,ro")))]
|
||||
(match_operand:DI 4 "nonimmediate_operand" "ro,0")
|
||||
(match_operand:DI 5 "nonimmediate_operand" "0,ro")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
[(set (cc0) (compare (match_dup 2) (match_dup 3)))
|
||||
(set (match_dup 0)
|
||||
@@ -7742,11 +7742,11 @@ byte_xor_operation:
|
||||
"")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DI 0 "register_operand" "=&r,&r,&r")
|
||||
[(set (match_operand:DI 0 "register_operand" "=&r,&r")
|
||||
(if_then_else:DI (match_operator 1 "comparison_operator"
|
||||
[(cc0) (const_int 0)])
|
||||
(match_operand:DI 2 "nonimmediate_operand" "ro,0,ro")
|
||||
(match_operand:DI 3 "nonimmediate_operand" "0,ro,ro")))]
|
||||
(match_operand:DI 2 "nonimmediate_operand" "ro,0")
|
||||
(match_operand:DI 3 "nonimmediate_operand" "0,ro")))]
|
||||
"TARGET_CMOVE && reload_completed"
|
||||
"* return output_int_conditional_move (which_alternative, operands);")
|
||||
|
||||
|
||||
@@ -150,8 +150,9 @@ Boston, MA 02111-1307, USA. */
|
||||
#undef WCHAR_TYPE_SIZE
|
||||
#define WCHAR_TYPE_SIZE BITS_PER_WORD
|
||||
|
||||
/* The egcs-1.1 branch is the last time we will have -Di386. -D__i386__ is the thing to use. */
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-D__ELF__ -Dunix -Dlinux -Asystem(posix)"
|
||||
#define CPP_PREDEFINES "-D__ELF__ -Dunix -Di386 -D__i386__ -Dlinux -Asystem(posix)"
|
||||
|
||||
#undef CPP_SPEC
|
||||
#ifdef USE_GNULIBC_1
|
||||
|
||||
@@ -26,10 +26,14 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include "i386/cygwin32.h"
|
||||
|
||||
/* Please keep changes to CPP_PREDEFINES in sync with i386/crtdll. The
|
||||
only difference between the two should be __MSVCRT__ needed to
|
||||
distinguish MSVC from CRTDLL runtime in mingw headers. */
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-Di386 -D_WIN32 -DWIN32 -D__WIN32__ \
|
||||
-D__MINGW32__ -DWINNT -D_X86_=1 -D__STDC__=1\
|
||||
-D__MINGW32__ -D__MSVCRT__ -DWINNT -D_X86_=1 -D__STDC__=1\
|
||||
-D__stdcall=__attribute__((__stdcall__)) \
|
||||
-D_stdcall=__attribute__((__stdcall__)) \
|
||||
-D__cdecl=__attribute__((__cdecl__)) \
|
||||
-D__declspec(x)=__attribute__((x)) \
|
||||
-Asystem(winnt) -Acpu(i386) -Amachine(i386)"
|
||||
|
||||
@@ -224,3 +224,10 @@ Boston, MA 02111-1307, USA. */
|
||||
== void_type_node))) ? (SIZE) : 0)
|
||||
|
||||
/* END Calling Convention CHANGES */
|
||||
|
||||
/* NeXT still uses old binutils that don't insert nops by default
|
||||
when the .align directive demands to insert extra space in the text
|
||||
segment. */
|
||||
#undef ASM_OUTPUT_ALIGN
|
||||
#define ASM_OUTPUT_ALIGN(FILE,LOG) \
|
||||
if ((LOG)!=0) fprintf ((FILE), "\t.align %d,0x90\n", (LOG))
|
||||
|
||||
130
gcc/config/i386/openbsd.h
Normal file
130
gcc/config/i386/openbsd.h
Normal file
@@ -0,0 +1,130 @@
|
||||
/* Configuration for an OpenBSD i386 target.
|
||||
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
GNU CC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU CC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* This is tested by i386gas.h. */
|
||||
#define YES_UNDERSCORES
|
||||
|
||||
#include <i386/gstabs.h>
|
||||
|
||||
/* Get perform_* macros to build libgcc.a. */
|
||||
#include <i386/perform.h>
|
||||
|
||||
/* Get generic OpenBSD definitions. */
|
||||
#define OBSD_OLD_GAS
|
||||
#include <openbsd.h>
|
||||
|
||||
/* Run-time target specifications */
|
||||
#define CPP_PREDEFINES "-D__unix__ -D__i386__ -D__OpenBSD__ -Asystem(unix) -Asystem(OpenBSD) -Acpu(i386) -Amachine(i386)"
|
||||
|
||||
/* Layout of source language data types. */
|
||||
|
||||
/* This must agree with <machine/ansi.h> */
|
||||
#undef SIZE_TYPE
|
||||
#define SIZE_TYPE "unsigned int"
|
||||
|
||||
#undef PTRDIFF_TYPE
|
||||
#define PTRDIFF_TYPE "int"
|
||||
|
||||
#undef WCHAR_TYPE
|
||||
#define WCHAR_TYPE "int"
|
||||
|
||||
#undef WCHAR_TYPE_SIZE
|
||||
#define WCHAR_TYPE_SIZE 32
|
||||
|
||||
/* Assembler format: overall framework. */
|
||||
|
||||
#undef ASM_APP_ON
|
||||
#define ASM_APP_ON "#APP\n"
|
||||
|
||||
#undef ASM_APP_OFF
|
||||
#define ASM_APP_OFF "#NO_APP\n"
|
||||
|
||||
/* The following macros were originally stolen from i386v4.h.
|
||||
These have to be defined to get PIC code correct. */
|
||||
|
||||
/* Assembler format: dispatch tables. */
|
||||
|
||||
/* How to output an element of a case-vector that is relative.
|
||||
This is only used for PIC code. See comments by the `casesi' insn in
|
||||
i386.md for an explanation of the expression this outputs. */
|
||||
#undef ASM_OUTPUT_ADDR_DIFF_ELT
|
||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
|
||||
fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
|
||||
|
||||
/* Assembler format: sections. */
|
||||
|
||||
/* Indicate when jump tables go in the text section. This is
|
||||
necessary when compiling PIC code. */
|
||||
#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
|
||||
|
||||
/* Stack & calling: aggregate returns. */
|
||||
|
||||
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
|
||||
we want to retain compatibility with older gcc versions. */
|
||||
#define DEFAULT_PCC_STRUCT_RETURN 0
|
||||
|
||||
/* Assembler format: alignment output. */
|
||||
|
||||
/* Kludgy test: when gas is upgraded, it will have p2align, and no problems
|
||||
with nops. */
|
||||
#ifndef HAVE_GAS_MAX_SKIP_P2ALIGN
|
||||
/* i386 OpenBSD still uses an older gas that doesn't insert nops by default
|
||||
when the .align directive demands to insert extra space in the text
|
||||
segment. */
|
||||
#undef ASM_OUTPUT_ALIGN
|
||||
#define ASM_OUTPUT_ALIGN(FILE,LOG) \
|
||||
if ((LOG)!=0) fprintf ((FILE), "\t.align %d,0x90\n", (LOG))
|
||||
#endif
|
||||
|
||||
/* Stack & calling: profiling. */
|
||||
|
||||
/* OpenBSD's profiler recovers all information from the stack pointer.
|
||||
The icky part is not here, but in machine/profile.h. */
|
||||
#undef FUNCTION_PROFILER
|
||||
#define FUNCTION_PROFILER(FILE, LABELNO) \
|
||||
fputs (flag_pic ? "\tcall mcount@PLT\n": "\tcall mcount\n", FILE);
|
||||
|
||||
/* Assembler format: exception region output. */
|
||||
|
||||
/* All configurations that don't use elf must be explicit about not using
|
||||
dwarf unwind information. egcs doesn't try too hard to check internal
|
||||
configuration files... */
|
||||
#define DWARF2_UNWIND_INFO 0
|
||||
|
||||
/* Assembler format: alignment output. */
|
||||
|
||||
/* A C statement to output to the stdio stream FILE an assembler
|
||||
command to advance the location counter to a multiple of 1<<LOG
|
||||
bytes if it is within MAX_SKIP bytes.
|
||||
|
||||
This will be used to align code labels according to Intel
|
||||
recommendations, in prevision of binutils upgrade. */
|
||||
#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
|
||||
#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \
|
||||
do { \
|
||||
if ((LOG) != 0) \
|
||||
if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
|
||||
else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
/* Note that we pick up ASM_OUTPUT_MI_THUNK from unix.h. */
|
||||
|
||||
@@ -805,7 +805,8 @@ dtors_section () \
|
||||
|
||||
#undef STARTFILE_SPEC
|
||||
#define STARTFILE_SPEC \
|
||||
"%{!shared:\
|
||||
"%{shared: %{!mcoff: crti.o%s}} \
|
||||
%{!shared:\
|
||||
%{!symbolic: \
|
||||
%{pg:gcrt.o%s}%{!pg:%{p:mcrt1.o%s}%{!p:crt1.o%s}}}} \
|
||||
%{ansi:values-Xc.o%s} \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
! crt1.s for Solaris 2, x86
|
||||
|
||||
! Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
! Copyright (C) 1993, 1998 Free Software Foundation, Inc.
|
||||
! Written By Fred Fish, Nov 1992
|
||||
!
|
||||
! This file is free software; you can redistribute it and/or modify it
|
||||
@@ -149,7 +149,7 @@ _start:
|
||||
! A dummy profiling support routine for non-profiling executables,
|
||||
! in case we link in some objects that have been compiled for profiling.
|
||||
|
||||
.globl _mcount
|
||||
.weak _mcount
|
||||
_mcount:
|
||||
ret
|
||||
.type _mcount,@function
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
! information obtained by single stepping executables on other i386 SVR4
|
||||
! implementations. This file is the first thing linked into any executable.
|
||||
|
||||
! This is a modified crt1.s by J.W.Hawtin <J.W.Hawtin@lboro.ac.uk> 15/8/96,
|
||||
! This is a modified crt1.s by J.W.Hawtin <oolon@ankh.org> 15/8/96,
|
||||
! to allow program profiling, by calling monstartup on entry and _mcleanup
|
||||
! on exit
|
||||
|
||||
|
||||
@@ -14,3 +14,14 @@
|
||||
#ifdef DWARF_DEBUGGING_INFO
|
||||
#undef DWARF_DEBUGGING_INFO
|
||||
#endif
|
||||
|
||||
/*
|
||||
Changed from config/svr4.h in the following ways:
|
||||
|
||||
- Added "%{V}".
|
||||
- Modified "{%v:-V}" to take into account "%{V}".
|
||||
- Added "-s" so that stabs are saved in the final executable. */
|
||||
|
||||
#undef ASM_SPEC
|
||||
#define ASM_SPEC \
|
||||
"%{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} -s"
|
||||
|
||||
@@ -14,3 +14,7 @@ MULTILIB_EXTRA_OPTS =
|
||||
|
||||
LIBGCC=stmp-multilib
|
||||
INSTALL_LIBGCC=install-multilib
|
||||
|
||||
crti.o: $(srcdir)/config/i386/sol2-ci.asm $(GCC_PASSES)
|
||||
sed -e '/^!/d' <$(srcdir)/config/i386/sol2-ci.asm >crti.s
|
||||
$(GCC_FOR_TARGET) -c -o crti.o crti.s
|
||||
|
||||
@@ -14,3 +14,7 @@ MULTILIB_EXTRA_OPTS =
|
||||
|
||||
LIBGCC=stmp-multilib
|
||||
INSTALL_LIBGCC=install-multilib
|
||||
|
||||
crti.o: $(srcdir)/config/i386/sol2-ci.asm $(GCC_PASSES)
|
||||
sed -e '/^!/d' <$(srcdir)/config/i386/sol2-ci.asm >crti.s
|
||||
$(GCC_FOR_TARGET) -c -o crti.o crti.s
|
||||
|
||||
@@ -20,7 +20,7 @@ the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include "system.h"
|
||||
#include "rtl.h"
|
||||
#include "regs.h"
|
||||
#include "hard-reg-set.h"
|
||||
@@ -50,17 +50,40 @@ i386_pe_valid_decl_attribute_p (decl, attributes, attr, args)
|
||||
tree attr;
|
||||
tree args;
|
||||
{
|
||||
if (args != NULL_TREE)
|
||||
return 0;
|
||||
|
||||
if (is_attribute_p ("dllexport", attr))
|
||||
return 1;
|
||||
if (is_attribute_p ("dllimport", attr))
|
||||
return 1;
|
||||
if (args == NULL_TREE)
|
||||
{
|
||||
if (is_attribute_p ("dllexport", attr))
|
||||
return 1;
|
||||
if (is_attribute_p ("dllimport", attr))
|
||||
return 1;
|
||||
}
|
||||
|
||||
return i386_valid_decl_attribute_p (decl, attributes, attr, args);
|
||||
}
|
||||
|
||||
/* Return nonzero if ATTR is a valid attribute for TYPE.
|
||||
ATTRIBUTES are any existing attributes and ARGS are the arguments
|
||||
supplied with ATTR. */
|
||||
|
||||
int
|
||||
i386_pe_valid_type_attribute_p (type, attributes, attr, args)
|
||||
tree type;
|
||||
tree attributes;
|
||||
tree attr;
|
||||
tree args;
|
||||
{
|
||||
if (args == NULL_TREE
|
||||
&& (TREE_CODE (type) == RECORD_TYPE || TREE_CODE (type) == UNION_TYPE))
|
||||
{
|
||||
if (is_attribute_p ("dllexport", attr))
|
||||
return 1;
|
||||
if (is_attribute_p ("dllimport", attr))
|
||||
return 1;
|
||||
}
|
||||
|
||||
return i386_valid_type_attribute_p (type, attributes, attr, args);
|
||||
}
|
||||
|
||||
/* Merge attributes in decls OLD and NEW.
|
||||
|
||||
This handles the following situation:
|
||||
@@ -114,49 +137,33 @@ i386_pe_merge_decl_attributes (old, new)
|
||||
return a;
|
||||
}
|
||||
|
||||
/* Check a type that has a virtual table, and see if any virtual methods are
|
||||
marked for import or export, and if so, arrange for the vtable to
|
||||
be imported or exported. */
|
||||
/* Return the type that we should use to determine if DECL is
|
||||
imported or exported. */
|
||||
|
||||
static int
|
||||
i386_pe_check_vtable_importexport (type)
|
||||
tree type;
|
||||
static tree
|
||||
associated_type (decl)
|
||||
tree decl;
|
||||
{
|
||||
tree methods = TYPE_METHODS (type);
|
||||
tree fndecl;
|
||||
tree t = NULL_TREE;
|
||||
|
||||
if (TREE_CODE (methods) == FUNCTION_DECL)
|
||||
fndecl = methods;
|
||||
else if (TREE_VEC_ELT (methods, 0) != NULL_TREE)
|
||||
fndecl = TREE_VEC_ELT (methods, 0);
|
||||
else
|
||||
fndecl = TREE_VEC_ELT (methods, 1);
|
||||
|
||||
while (fndecl)
|
||||
/* In the C++ frontend, DECL_CONTEXT for a method doesn't actually refer
|
||||
to the containing class. So we look at the 'this' arg. */
|
||||
if (TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE)
|
||||
{
|
||||
if (DECL_VIRTUAL_P (fndecl) || DECL_VINDEX (fndecl) != NULL_TREE)
|
||||
{
|
||||
tree exp = lookup_attribute ("dllimport",
|
||||
DECL_MACHINE_ATTRIBUTES (fndecl));
|
||||
if (exp == 0)
|
||||
exp = lookup_attribute ("dllexport",
|
||||
DECL_MACHINE_ATTRIBUTES (fndecl));
|
||||
if (exp)
|
||||
return 1;
|
||||
}
|
||||
|
||||
fndecl = TREE_CHAIN (fndecl);
|
||||
/* Artificial methods are not affected by the import/export status of
|
||||
their class unless they are virtual. */
|
||||
if (! DECL_ARTIFICIAL (decl) || DECL_VINDEX (decl))
|
||||
t = TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (decl))));
|
||||
}
|
||||
else if (DECL_CONTEXT (decl)
|
||||
&& TREE_CODE_CLASS (TREE_CODE (DECL_CONTEXT (decl))) == 't')
|
||||
t = DECL_CONTEXT (decl);
|
||||
|
||||
return 0;
|
||||
return t;
|
||||
}
|
||||
|
||||
/* Return non-zero if DECL is a dllexport'd object. */
|
||||
|
||||
#if 0
|
||||
tree current_class_type; /* FIXME */
|
||||
#endif
|
||||
|
||||
int
|
||||
i386_pe_dllexport_p (decl)
|
||||
tree decl;
|
||||
@@ -170,22 +177,14 @@ i386_pe_dllexport_p (decl)
|
||||
if (exp)
|
||||
return 1;
|
||||
|
||||
#if 0 /* This was a hack to get vtable's exported or imported since only one
|
||||
copy of them is ever output. Disabled pending better solution. */
|
||||
/* For C++, the vtables might have to be marked. */
|
||||
if (TREE_CODE (decl) == VAR_DECL && DECL_VIRTUAL_P (decl))
|
||||
/* Class members get the dllexport status of their class. */
|
||||
if (associated_type (decl))
|
||||
{
|
||||
if (TREE_PUBLIC (decl)
|
||||
&& DECL_EXTERNAL (decl) == 0
|
||||
&& (DECL_CONTEXT (decl)
|
||||
? i386_pe_check_vtable_importexport (DECL_CONTEXT (decl))
|
||||
: current_class_type
|
||||
? i386_pe_check_vtable_importexport (current_class_type)
|
||||
: 0)
|
||||
)
|
||||
exp = lookup_attribute ("dllexport",
|
||||
TYPE_ATTRIBUTES (associated_type (decl)));
|
||||
if (exp)
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -209,22 +208,14 @@ i386_pe_dllimport_p (decl)
|
||||
if (imp)
|
||||
return 1;
|
||||
|
||||
#if 0 /* This was a hack to get vtable's exported or imported since only one
|
||||
copy of them is ever output. Disabled pending better solution. */
|
||||
/* For C++, the vtables might have to be marked. */
|
||||
if (TREE_CODE (decl) == VAR_DECL && DECL_VIRTUAL_P (decl))
|
||||
/* Class members get the dllimport status of their class. */
|
||||
if (associated_type (decl))
|
||||
{
|
||||
if (TREE_PUBLIC (decl)
|
||||
&& DECL_EXTERNAL (decl)
|
||||
&& (DECL_CONTEXT (decl)
|
||||
? i386_pe_check_vtable_importexport (DECL_CONTEXT (decl))
|
||||
: current_class_type
|
||||
? i386_pe_check_vtable_importexport (current_class_type)
|
||||
: 0)
|
||||
)
|
||||
imp = lookup_attribute ("dllimport",
|
||||
TYPE_ATTRIBUTES (associated_type (decl)));
|
||||
if (imp)
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -570,7 +561,7 @@ i386_pe_asm_file_end (file)
|
||||
decl = get_identifier (p->name);
|
||||
|
||||
/* Positively ensure only one declaration for any given symbol. */
|
||||
if (! TREE_ASM_WRITTEN (decl))
|
||||
if (! TREE_ASM_WRITTEN (decl) && TREE_SYMBOL_REFERENCED (decl))
|
||||
{
|
||||
TREE_ASM_WRITTEN (decl) = 1;
|
||||
i386_pe_declare_function_type (file, p->name, TREE_PUBLIC (decl));
|
||||
|
||||
@@ -17,7 +17,6 @@ DEBUG =
|
||||
DEBUG_COLLECT = # -DDEBUG
|
||||
CCLIBFLAGS = -O -DNO_HALF_PIC
|
||||
GCC_CFLAGS = $(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(CFLAGS) -B./ -DPOSIX -DNO_HALF_PIC
|
||||
INSTALL = installbsd -c
|
||||
LDFLAGS =
|
||||
MSTATS = # -mstats
|
||||
OLDCC = /usr/ccs/gcc/gcc
|
||||
|
||||
@@ -1,37 +1,2 @@
|
||||
/* Configuration for GNU C-compiler for IBM PS/2 running AIX/386.
|
||||
Copyright (C) 1988, 1993 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
GNU CC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU CC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#define USG
|
||||
|
||||
#undef TRUE
|
||||
#undef FALSE
|
||||
|
||||
#include "i386/xm-i386.h"
|
||||
|
||||
#define bcopy(a,b,c) memcpy (b,a,c)
|
||||
#define bzero(a,b) memset (a,0,b)
|
||||
#define bcmp(a,b,c) memcmp (a,b,c)
|
||||
|
||||
/* If not compiled with GNU C, use the portable alloca. */
|
||||
#ifndef __GNUC__
|
||||
#define USE_C_ALLOCA
|
||||
#endif
|
||||
|
||||
#define HAVE_PUTENV
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
#include "i386/xm-sysv3.h"
|
||||
|
||||
#ifndef REAL_ARITHMETIC
|
||||
#define REAL_VALUE_ATOF(x, mode) strtod ((x), (char **)0)
|
||||
extern double strtod ();
|
||||
|
||||
23
gcc/config/i386/xm-openbsd.h
Normal file
23
gcc/config/i386/xm-openbsd.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/* Configuration file for i386 hosts running OpenBSD.
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
GNU CC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU CC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <xm-openbsd.h>
|
||||
#include <i386/xm-i386.h>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* Configuration for GNU compiler
|
||||
for an Intel i386 or later processor running OS/2 2.x.
|
||||
Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
|
||||
Contributed by Samuel Figueroa (figueroa@cs.nyu.edu)
|
||||
Copyright (C) 1993, 1994, 1995, 1997, 1998 Free Software Foundation, Inc.
|
||||
Contributed by Samuel Figueroa (figueroa@apple.com)
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
@@ -28,20 +28,24 @@ Boston, MA 02111-1307, USA. */
|
||||
#include <stdlib.h> /* this defines alloca */
|
||||
#define USG
|
||||
#define ONLY_INT_FIELDS
|
||||
#define HAVE_PUTENV
|
||||
#define USE_PROTOTYPES 1
|
||||
#define bcmp(a,b,c) memcmp (a,b,c)
|
||||
#define bcopy(a,b,c) memcpy (b,a,c)
|
||||
#define bzero(a,b) memset (a,0,b)
|
||||
#define index strchr
|
||||
#define rindex strrchr
|
||||
#define strcasecmp stricmp
|
||||
#define kill(a,b) raise(b)
|
||||
#define mktemp tmpnam
|
||||
#else
|
||||
#ifdef __EMX__
|
||||
#define EMX
|
||||
#define USG
|
||||
#define BSTRING
|
||||
#define HAVE_PUTENV
|
||||
#define HAVE_VPRINTF
|
||||
#define HAVE_STRERROR
|
||||
#define strcasecmp stricmp
|
||||
#else
|
||||
#define ____386BSD____
|
||||
int spawnv (int modeflag, char *path, char *argv[]);
|
||||
int spawnvp (int modeflag, char *path, char *argv[]);
|
||||
#endif /* __EMX__ */
|
||||
#endif /* __IBMC__ */
|
||||
|
||||
#ifndef PATH_SEPARATOR
|
||||
@@ -52,6 +56,14 @@ int spawnvp (int modeflag, char *path, char *argv[]);
|
||||
#endif
|
||||
|
||||
#define EXECUTABLE_SUFFIX ".exe"
|
||||
|
||||
/* The EMX compiler uses regular .o files */
|
||||
#ifndef __EMX__
|
||||
#define OBJECT_SUFFIX ".obj"
|
||||
#endif
|
||||
|
||||
/* This is required to make temporary file names unique on file
|
||||
systems which severely restrict the length of file names. */
|
||||
#define MKTEMP_EACH_FILE
|
||||
|
||||
#include "i386/xm-i386.h"
|
||||
|
||||
@@ -1,32 +1,2 @@
|
||||
/* Configuration for GNU C-compiler for 386 running OSF/1
|
||||
Copyright (C) 1994 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
GNU CC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU CC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#undef TRUE
|
||||
#undef FALSE
|
||||
|
||||
#include "i386/xm-i386.h"
|
||||
|
||||
#define bcopy(a,b,c) memcpy (b,a,c)
|
||||
#define bzero(a,b) memset (a,0,b)
|
||||
#define bcmp(a,b,c) memcmp (a,b,c)
|
||||
|
||||
#define HAVE_PUTENV
|
||||
#define HAVE_VPRINTF
|
||||
|
||||
|
||||
@@ -1,18 +1,9 @@
|
||||
/* Configuration for GCC for Intel i386 running SCO. */
|
||||
|
||||
#include "i386/xm-sysv3.h"
|
||||
|
||||
/* On SCO 3.2.1, ldexp rejects values outside [0.5, 1). */
|
||||
|
||||
#define BROKEN_LDEXP
|
||||
|
||||
/* Big buffers improve performance. */
|
||||
|
||||
#define IO_BUFFER_SIZE (0x8000 - 1024)
|
||||
|
||||
/* SCO has a very small ARG_MAX. */
|
||||
#define SMALL_ARG_MAX
|
||||
|
||||
#ifndef __GNUC__
|
||||
/* The SCO compiler gets it wrong, and treats enumerated bitfields
|
||||
as signed quantities, making it impossible to use an 8-bit enum
|
||||
@@ -20,6 +11,3 @@
|
||||
#define ONLY_INT_FIELDS 1
|
||||
#define CODE_FIELD_BUG 1
|
||||
#endif
|
||||
|
||||
/* SCO lacks sys_siglist. */
|
||||
#define NO_SYS_SIGLIST
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user