This commit was generated by cvs2svn to track changes on a CVS vendor
[unix-history] / gnu / usr.bin / cc25 / gcc258-freebsd.patch
CommitLineData
8cacc98c
PHK
1diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/config/i386/freebsd.h gcc-2.5.8/config/i386/freebsd.h
2*** gcc-2.5.8.gnu/config/i386/freebsd.h Thu Jan 1 01:00:00 1970
3--- gcc-2.5.8/config/i386/freebsd.h Sun Feb 27 00:40:55 1994
4***************
5*** 0 ****
6--- 1,341 ----
7+ /* Configuration for an i386 running FreeBSD as the target machine.
8+ *
9+ * 7th feb 1994, Poul-Henning Kamp <phk@login.dkuug.dk>
10+ * Made to fit FreeBSD 1.1 and GCC 2.5.8
11+ */
12+
13+ /* This goes away when the math-emulator is fixed */
14+ #define TARGET_CPU_DEFAULT 0400 /* TARGET_NO_FANCY_MATH_387 */
15+
16+ /* Just in case. (Cross-compilations &c) */
17+ #ifndef __FreeBSD__
18+ #define __FreeBSD__ 1
19+ #endif
20+
21+ /* This is tested by i386gas.h. */
22+ #define YES_UNDERSCORES
23+
24+ #include "i386/gstabs.h"
25+
26+ /* Get perform_* macros to build libgcc.a. */
27+ #include "i386/perform.h"
28+
29+ #undef CPP_PREDEFINES
30+ #define CPP_PREDEFINES "-Dunix -Di386 -D__FreeBSD__ -D__386BSD__ -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)"
31+
32+ #define INCLUDE_DEFAULTS { \
33+ { "/usr/include", 0 }, \
34+ { "/usr/include/g++", 1 }, \
35+ { 0, 0} \
36+ }
37+
38+ /* Like the default, except no -lg. */
39+ #define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}"
40+
41+ #undef SIZE_TYPE
42+ #define SIZE_TYPE "unsigned int"
43+
44+ #undef PTRDIFF_TYPE
45+ #define PTRDIFF_TYPE "int"
46+
47+ #undef WCHAR_TYPE
48+ #define WCHAR_TYPE "short unsigned int"
49+
50+ #define WCHAR_UNSIGNED 1
51+
52+ #undef WCHAR_TYPE_SIZE
53+ #define WCHAR_TYPE_SIZE 16
54+
55+ #define HAVE_ATEXIT
56+
57+ /* Redefine this to use %eax instead of %edx. */
58+ #undef FUNCTION_PROFILER
59+ #define FUNCTION_PROFILER(FILE, LABELNO) \
60+ { \
61+ if (flag_pic) \
62+ { \
63+ fprintf (FILE, "\tleal %sP%d@GOTOFF(%%ebx),%%eax\n", \
64+ LPREFIX, (LABELNO)); \
65+ fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \
66+ } \
67+ else \
68+ { \
69+ fprintf (FILE, "\tmovl $%sP%d,%%eax\n", LPREFIX, (LABELNO)); \
70+ fprintf (FILE, "\tcall mcount\n"); \
71+ } \
72+ }
73+
74+ /* There are conflicting reports about whether this system uses
75+ a different assembler syntax. wilson@cygnus.com says # is right. */
76+ #undef COMMENT_BEGIN
77+ #define COMMENT_BEGIN "#"
78+
79+ #undef ASM_APP_ON
80+ #define ASM_APP_ON "#APP\n"
81+
82+ #undef ASM_APP_OFF
83+ #define ASM_APP_OFF "#NO_APP\n"
84+ \f
85+ /* The following macros are stolen from i386v4.h */
86+ /* These have to be defined to get PIC code correct */
87+
88+ /* This is how to output an element of a case-vector that is relative.
89+ This is only used for PIC code. See comments by the `casesi' insn in
90+ i386.md for an explanation of the expression this outputs. */
91+
92+ #undef ASM_OUTPUT_ADDR_DIFF_ELT
93+ #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, VALUE, REL) \
94+ fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
95+
96+ /* Indicate that jump tables go in the text section. This is
97+ necessary when compiling PIC code. */
98+
99+ #define JUMP_TABLES_IN_TEXT_SECTION
100+
101+ /* Don't default to pcc-struct-return, because gcc is the only compiler, and
102+ we want to retain compatibility with older gcc versions. */
103+ #define DEFAULT_PCC_STRUCT_RETURN 0
104+
105+ /*
106+ * Some imports from svr4.h in support of shared libraries.
107+ * Currently, we need the DECLARE_OBJECT_SIZE stuff.
108+ */
109+
110+ /* Define the strings used for the special svr4 .type and .size directives.
111+ These strings generally do not vary from one system running svr4 to
112+ another, but if a given system (e.g. m88k running svr) needs to use
113+ different pseudo-op names for these, they may be overridden in the
114+ file which includes this one. */
115+
116+ #define TYPE_ASM_OP ".type"
117+ #define SIZE_ASM_OP ".size"
118+ #define WEAK_ASM_OP ".weak"
119+
120+ /* The following macro defines the format used to output the second
121+ operand of the .type assembler directive. Different svr4 assemblers
122+ expect various different forms for this operand. The one given here
123+ is just a default. You may need to override it in your machine-
124+ specific tm.h file (depending upon the particulars of your assembler). */
125+
126+ #define TYPE_OPERAND_FMT "@%s"
127+
128+ /* Write the extra assembler code needed to declare a function's result.
129+ Most svr4 assemblers don't require any special declaration of the
130+ result value, but there are exceptions. */
131+
132+ #ifndef ASM_DECLARE_RESULT
133+ #define ASM_DECLARE_RESULT(FILE, RESULT)
134+ #endif
135+
136+ /* These macros generate the special .type and .size directives which
137+ are used to set the corresponding fields of the linker symbol table
138+ entries in an ELF object file under SVR4. These macros also output
139+ the starting labels for the relevant functions/objects. */
140+
141+ /* Write the extra assembler code needed to declare a function properly.
142+ Some svr4 assemblers need to also have something extra said about the
143+ function's return value. We allow for that here. */
144+
145+ #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
146+ do { \
147+ fprintf (FILE, "\t%s\t ", TYPE_ASM_OP); \
148+ assemble_name (FILE, NAME); \
149+ putc (',', FILE); \
150+ fprintf (FILE, TYPE_OPERAND_FMT, "function"); \
151+ putc ('\n', FILE); \
152+ ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL)); \
153+ ASM_OUTPUT_LABEL(FILE, NAME); \
154+ } while (0)
155+
156+ /* Write the extra assembler code needed to declare an object properly. */
157+
158+ #define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \
159+ do { \
160+ fprintf (FILE, "\t%s\t ", TYPE_ASM_OP); \
161+ assemble_name (FILE, NAME); \
162+ putc (',', FILE); \
163+ fprintf (FILE, TYPE_OPERAND_FMT, "object"); \
164+ putc ('\n', FILE); \
165+ size_directive_output = 0; \
166+ if (!flag_inhibit_size_directive && DECL_SIZE (DECL)) \
167+ { \
168+ size_directive_output = 1; \
169+ fprintf (FILE, "\t%s\t ", SIZE_ASM_OP); \
170+ assemble_name (FILE, NAME); \
171+ fprintf (FILE, ",%d\n", int_size_in_bytes (TREE_TYPE (DECL))); \
172+ } \
173+ ASM_OUTPUT_LABEL(FILE, NAME); \
174+ } while (0)
175+
176+ /* Output the size directive for a decl in rest_of_decl_compilation
177+ in the case where we did not do so before the initializer.
178+ Once we find the error_mark_node, we know that the value of
179+ size_directive_output was set
180+ by ASM_DECLARE_OBJECT_NAME when it was run for the same decl. */
181+
182+ #define ASM_FINISH_DECLARE_OBJECT(FILE, DECL, TOP_LEVEL, AT_END) \
183+ do { \
184+ char *name = XSTR (XEXP (DECL_RTL (DECL), 0), 0); \
185+ if (!flag_inhibit_size_directive && DECL_SIZE (DECL) \
186+ && ! AT_END && TOP_LEVEL \
187+ && DECL_INITIAL (DECL) == error_mark_node \
188+ && !size_directive_output) \
189+ { \
190+ fprintf (FILE, "\t%s\t ", SIZE_ASM_OP); \
191+ assemble_name (FILE, name); \
192+ fprintf (FILE, ",%d\n", int_size_in_bytes (TREE_TYPE (DECL)));\
193+ } \
194+ } while (0)
195+
196+
197+ /* This is how to declare the size of a function. */
198+
199+ #define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
200+ do { \
201+ if (!flag_inhibit_size_directive) \
202+ { \
203+ char label[256]; \
204+ static int labelno; \
205+ labelno++; \
206+ ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \
207+ ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); \
208+ fprintf (FILE, "\t%s\t ", SIZE_ASM_OP); \
209+ assemble_name (FILE, (FNAME)); \
210+ fprintf (FILE, ","); \
211+ assemble_name (FILE, label); \
212+ fprintf (FILE, "-"); \
213+ assemble_name (FILE, (FNAME)); \
214+ putc ('\n', FILE); \
215+ } \
216+ } while (0)
217+
218+ #define ASM_SPEC " %| %{fpic:-k} %{fPIC:-k}"
219+ #define LINK_SPEC \
220+ "%{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} %{assert*}"
221+
222+ #define CUSTOM_DEFAULT_COMPILERS \
223+ /***** ljo's Fortran rule *****/ \
224+ {".f", "@f2c"}, \
225+ {"@f2c", \
226+ "f2c %{checksubscripts:-C} %{I2} %{onetrip} %{honorcase:-U} %{u} %{w}\
227+ %{ANSIC:-A} %{a} %{C++}\
228+ %{c} %{E} %{ec} %{ext} %{f} %{72} %{g} %{h} %{i2} %{kr}\
229+ %{P} %{p} %{r} %{r8} %{s} %{w8} %{z} %{N*}\
230+ %i %{!pipe: -o %g.c} %{pipe:-o -}|\n", \
231+ "gcpp -lang-c %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %I\
232+ %{C:%{!E:%eGNU C does not support -C without using -E}}\
233+ %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d}\
234+ -undef -D__GNUC__=2 %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\
235+ %{!undef:%{!ansi:%p} %P} %{trigraphs} \
236+ %c %{O*:%{!O0:-D__OPTIMIZE__}} %{traditional} %{ftraditional:-traditional}\
237+ %{traditional-cpp:-traditional}\
238+ %{g*} %{W*} %{w} %{pedantic*} %{H} %{d*} %C %{D*} %{U*} %{i*}\
239+ %{pipe:-} %{!pipe:%g.c} %{!M:%{!MM:%{!E:%{!pipe:%g.i}}}}%{E:%W{o*}}%{M:%W{o*}}%{MM:%W{o*}} |\n", \
240+ "%{!M:%{!MM:%{!E:gcc1 %{!pipe:%g.i} %1 \
241+ %{!Q:-quiet} -dumpbase %b.c %{d*} %{m*} %{a}\
242+ %{g*} %{O*} %{W*} %{w} %{pedantic*} %{ansi} \
243+ %{traditional} %{v:-version} %{pg:-p} %{p} %{f*}\
244+ %{aux-info*}\
245+ %{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\
246+ %{S:%W{o*}%{!o*:-o %b.s}}%{!S:-o %{|!pipe:%g.s}} |\n\
247+ %{!S:as %{R} %{j} %{J} %{h} %{d2} %a %Y\
248+ %{c:%W{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%u.o}\
249+ %{!pipe:%g.s} %A\n }}}}"}, \
250+ /***** End of ljo's Fortran rule *****/
251+
252+ /* This section stolen from i386/osfrose.h */
253+
254+ /* A C statement or compound statement to output to FILE some
255+ assembler code to initialize basic-block profiling for the current
256+ object module. This code should call the subroutine
257+ `__bb_init_func' once per object module, passing it as its sole
258+ argument the address of a block allocated in the object module.
259+
260+ The name of the block is a local symbol made with this statement:
261+
262+ ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 0);
263+
264+ Of course, since you are writing the definition of
265+ `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you
266+ can take a short cut in the definition of this macro and use the
267+ name that you know will result.
268+
269+ The first word of this block is a flag which will be nonzero if the
270+ object module has already been initialized. So test this word
271+ first, and do not call `__bb_init_func' if the flag is nonzero. */
272+
273+ #undef FUNCTION_BLOCK_PROFILER
274+ #define FUNCTION_BLOCK_PROFILER(STREAM, LABELNO) \
275+ do \
276+ { \
277+ if (!flag_pic) \
278+ { \
279+ fprintf (STREAM, "\tcmpl $0,%sPBX0\n", LPREFIX); \
280+ fprintf (STREAM, "\tjne 0f\n"); \
281+ fprintf (STREAM, "\tpushl $%sPBX0\n", LPREFIX); \
282+ fprintf (STREAM, "\tcall ___bb_init_func\n"); \
283+ fprintf (STREAM, "0:\n"); \
284+ } \
285+ else \
286+ { \
287+ fprintf (STREAM, "\tpushl %eax\n"); \
288+ fprintf (STREAM, "\tmovl %sPBX0@GOT(%ebx),%eax\n"); \
289+ fprintf (STREAM, "\tcmpl $0,(%eax)\n"); \
290+ fprintf (STREAM, "\tjne 0f\n"); \
291+ fprintf (STREAM, "\tpushl %eax\n"); \
292+ fprintf (STREAM, "\tcall ___bb_init_func@PLT\n"); \
293+ fprintf (STREAM, "0:\n"); \
294+ fprintf (STREAM, "\tpopl %eax\n"); \
295+ } \
296+ } \
297+ while (0)
298+
299+ /* A C statement or compound statement to increment the count
300+ associated with the basic block number BLOCKNO. Basic blocks are
301+ numbered separately from zero within each compilation. The count
302+ associated with block number BLOCKNO is at index BLOCKNO in a
303+ vector of words; the name of this array is a local symbol made
304+ with this statement:
305+
306+ ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 2);
307+
308+ Of course, since you are writing the definition of
309+ `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you
310+ can take a short cut in the definition of this macro and use the
311+ name that you know will result. */
312+
313+ #undef BLOCK_PROFILER
314+ #define BLOCK_PROFILER(STREAM, BLOCKNO) \
315+ do \
316+ { \
317+ if (!flag_pic) \
318+ fprintf (STREAM, "\tincl %sPBX2+%d\n", LPREFIX, (BLOCKNO)*4); \
319+ else \
320+ { \
321+ fprintf (STREAM, "\tpushl %eax\n"); \
322+ fprintf (STREAM, "\tmovl %sPBX2@GOT(%ebx),%eax\n", LPREFIX); \
323+ fprintf (STREAM, "\tincl %d(%eax)\n", (BLOCKNO)*4); \
324+ fprintf (STREAM, "\tpopl %eax\n"); \
325+ } \
326+ } \
327+ while (0)
328+
329+ /* This is defined when gcc is compiled in the BSD-directory-tree, and must
330+ * make up for the gap to all the stuff done in the GNU-makefiles.
331+ * XXX Do these right
332+ */
333+
334+ #ifdef FREEBSD_NATIVE
335+
336+ #undef MD_EXEC_PREFIX
337+ #define MD_EXEC_PREFIX "/usr/libexec/"
338+
339+ #undef STANDARD_STARTFILE_PREFIX
340+ #define STANDARD_STARTFILE_PREFIX "/usr/lib"
341+
342+ #define DEFAULT_TARGET_MACHINE "i386-unknown-freebsd_1.0"
343+ #define GPLUSPLUS_INCLUDE_DIR "/usr/local/lib/gcc-lib/i386-unknown-freebsd_1.0/2.5.8/include"
344+ #define TOOL_INCLUDE_DIR "/usr/local/i386-unknown-freebsd_1.0/include"
345+ #define GCC_INCLUDE_DIR "/usr/local/lib/gcc-lib/i386-unknown-freebsd_1.0/2.5.8/include"
346+
347+ #endif /* FREEBSD_NATIVE */
348diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/config/i386/i386.h gcc-2.5.8/config/i386/i386.h
349*** gcc-2.5.8.gnu/config/i386/i386.h Wed Oct 13 07:02:27 1993
350--- gcc-2.5.8/config/i386/i386.h Sun Feb 27 00:40:56 1994
351***************
352*** 90,95 ****
353--- 90,99 ----
354 the 387 to be used, which is compatible with most calling conventions. */
355 #define TARGET_FLOAT_RETURNS_IN_80387 (target_flags & 0200)
356
357+ /* Disable generation of FP sin, cos and sqrt operations for 387.
358+ This is because FreeBSD lacks these in the math-emulator-code */
359+ #define TARGET_NO_FANCY_MATH_387 (target_flags & 0400)
360+
361 /* Macro to define tables used to set the flags.
362 This is a list in braces of pairs in braces,
363 each pair being { "NAME", VALUE }
364***************
365*** 114,119 ****
366--- 118,125 ----
367 { "no-ieee-fp", -0100}, \
368 { "fp-ret-in-387", 0200}, \
369 { "no-fp-ret-in-387", -0200}, \
370+ { "no-fancy-math-387", 0400}, \
371+ { "fancy-math-387", -0400}, \
372 SUBTARGET_SWITCHES \
373 { "", TARGET_DEFAULT | TARGET_CPU_DEFAULT}}
374
375diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/config/i386/i386.md gcc-2.5.8/config/i386/i386.md
376*** gcc-2.5.8.gnu/config/i386/i386.md Tue Oct 5 06:43:30 1993
377--- gcc-2.5.8/config/i386/i386.md Sun Feb 27 00:40:59 1994
378***************
379*** 2935,3012 ****
380 (define_insn "sqrtsf2"
381 [(set (match_operand:SF 0 "register_operand" "=f")
382 (sqrt:SF (match_operand:SF 1 "general_operand" "0")))]
383! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
384 "fsqrt")
385
386 (define_insn "sqrtdf2"
387 [(set (match_operand:DF 0 "register_operand" "=f")
388 (sqrt:DF (match_operand:DF 1 "general_operand" "0")))]
389! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
390 "fsqrt")
391
392 (define_insn ""
393 [(set (match_operand:DF 0 "register_operand" "=f")
394 (sqrt:DF (float_extend:DF
395 (match_operand:SF 1 "general_operand" "0"))))]
396! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
397 "fsqrt")
398
399 (define_insn "sqrtxf2"
400 [(set (match_operand:XF 0 "register_operand" "=f")
401 (sqrt:XF (match_operand:XF 1 "general_operand" "0")))]
402! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
403 "fsqrt")
404
405 (define_insn ""
406 [(set (match_operand:XF 0 "register_operand" "=f")
407 (sqrt:XF (float_extend:XF
408 (match_operand:DF 1 "general_operand" "0"))))]
409! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
410 "fsqrt")
411
412 (define_insn ""
413 [(set (match_operand:XF 0 "register_operand" "=f")
414 (sqrt:XF (float_extend:XF
415 (match_operand:SF 1 "general_operand" "0"))))]
416! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
417 "fsqrt")
418
419 (define_insn "sindf2"
420 [(set (match_operand:DF 0 "register_operand" "=f")
421 (unspec:DF [(match_operand:DF 1 "register_operand" "0")] 1))]
422! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
423 "fsin")
424
425 (define_insn "sinsf2"
426 [(set (match_operand:SF 0 "register_operand" "=f")
427 (unspec:SF [(match_operand:SF 1 "register_operand" "0")] 1))]
428! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
429 "fsin")
430
431 (define_insn ""
432 [(set (match_operand:DF 0 "register_operand" "=f")
433 (unspec:DF [(float_extend:DF
434 (match_operand:SF 1 "register_operand" "0"))] 1))]
435! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
436 "fsin")
437
438 (define_insn "cosdf2"
439 [(set (match_operand:DF 0 "register_operand" "=f")
440 (unspec:DF [(match_operand:DF 1 "register_operand" "0")] 2))]
441! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
442 "fcos")
443
444 (define_insn "cossf2"
445 [(set (match_operand:SF 0 "register_operand" "=f")
446 (unspec:SF [(match_operand:SF 1 "register_operand" "0")] 2))]
447! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
448 "fcos")
449
450 (define_insn ""
451 [(set (match_operand:DF 0 "register_operand" "=f")
452 (unspec:DF [(float_extend:DF
453 (match_operand:SF 1 "register_operand" "0"))] 2))]
454! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)"
455 "fcos")
456 \f
457 ;;- one complement instructions
458--- 2935,3024 ----
459 (define_insn "sqrtsf2"
460 [(set (match_operand:SF 0 "register_operand" "=f")
461 (sqrt:SF (match_operand:SF 1 "general_operand" "0")))]
462! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 &&
463! (TARGET_IEEE_FP || flag_fast_math) "
464 "fsqrt")
465
466 (define_insn "sqrtdf2"
467 [(set (match_operand:DF 0 "register_operand" "=f")
468 (sqrt:DF (match_operand:DF 1 "general_operand" "0")))]
469! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 &&
470! (TARGET_IEEE_FP || flag_fast_math) "
471 "fsqrt")
472
473 (define_insn ""
474 [(set (match_operand:DF 0 "register_operand" "=f")
475 (sqrt:DF (float_extend:DF
476 (match_operand:SF 1 "general_operand" "0"))))]
477! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 &&
478! (TARGET_IEEE_FP || flag_fast_math) "
479 "fsqrt")
480
481 (define_insn "sqrtxf2"
482 [(set (match_operand:XF 0 "register_operand" "=f")
483 (sqrt:XF (match_operand:XF 1 "general_operand" "0")))]
484! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 &&
485! (TARGET_IEEE_FP || flag_fast_math) "
486 "fsqrt")
487
488 (define_insn ""
489 [(set (match_operand:XF 0 "register_operand" "=f")
490 (sqrt:XF (float_extend:XF
491 (match_operand:DF 1 "general_operand" "0"))))]
492! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 &&
493! (TARGET_IEEE_FP || flag_fast_math) "
494 "fsqrt")
495
496 (define_insn ""
497 [(set (match_operand:XF 0 "register_operand" "=f")
498 (sqrt:XF (float_extend:XF
499 (match_operand:SF 1 "general_operand" "0"))))]
500! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 &&
501! (TARGET_IEEE_FP || flag_fast_math) "
502 "fsqrt")
503
504 (define_insn "sindf2"
505 [(set (match_operand:DF 0 "register_operand" "=f")
506 (unspec:DF [(match_operand:DF 1 "register_operand" "0")] 1))]
507! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 &&
508! (TARGET_IEEE_FP || flag_fast_math) "
509 "fsin")
510
511 (define_insn "sinsf2"
512 [(set (match_operand:SF 0 "register_operand" "=f")
513 (unspec:SF [(match_operand:SF 1 "register_operand" "0")] 1))]
514! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 &&
515! (TARGET_IEEE_FP || flag_fast_math) "
516 "fsin")
517
518 (define_insn ""
519 [(set (match_operand:DF 0 "register_operand" "=f")
520 (unspec:DF [(float_extend:DF
521 (match_operand:SF 1 "register_operand" "0"))] 1))]
522! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 &&
523! (TARGET_IEEE_FP || flag_fast_math) "
524 "fsin")
525
526 (define_insn "cosdf2"
527 [(set (match_operand:DF 0 "register_operand" "=f")
528 (unspec:DF [(match_operand:DF 1 "register_operand" "0")] 2))]
529! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 &&
530! (TARGET_IEEE_FP || flag_fast_math) "
531 "fcos")
532
533 (define_insn "cossf2"
534 [(set (match_operand:SF 0 "register_operand" "=f")
535 (unspec:SF [(match_operand:SF 1 "register_operand" "0")] 2))]
536! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 &&
537! (TARGET_IEEE_FP || flag_fast_math) "
538 "fcos")
539
540 (define_insn ""
541 [(set (match_operand:DF 0 "register_operand" "=f")
542 (unspec:DF [(float_extend:DF
543 (match_operand:SF 1 "register_operand" "0"))] 2))]
544! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 &&
545! (TARGET_IEEE_FP || flag_fast_math) "
546 "fcos")
547 \f
548 ;;- one complement instructions
549diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/config.guess gcc-2.5.8/config.guess
550*** gcc-2.5.8.gnu/config.guess Sun Dec 12 12:50:10 1993
551--- gcc-2.5.8/config.guess Sun Feb 27 00:41:00 1994
552***************
553*** 171,176 ****
554--- 171,179 ----
555 hp3[0-9][05]:NetBSD:*:*)
556 echo m68k-hp-netbsd${UNAME_RELEASE}
557 exit 0 ;;
558+ i[34]86:FreeBSD:*:*)
559+ echo ${UNAME_MACHINE}-unknown-freebsd
560+ exit 0 ;;
561 i[34]86:NetBSD:*:*)
562 echo ${UNAME_MACHINE}-unknown-netbsd${UNAME_RELEASE}
563 exit 0 ;;
564diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/config.sub gcc-2.5.8/config.sub
565*** gcc-2.5.8.gnu/config.sub Thu Jan 13 11:43:23 1994
566--- gcc-2.5.8/config.sub Sun Feb 27 00:41:00 1994
567***************
568*** 534,540 ****
569 | -amigados* | -msdos* | -newsos* | -unicos* | -aos* \
570 | -nindy* | -vxworks* | -ebmon* | -hms* | -mvs* | -clix* \
571 | -riscos* | -linux* | -uniplus* | -iris* | -rtu* | -xenix* \
572! | -hiux* | -386bsd* | -netbsd* | -riscix* | -lynxos*)
573 ;;
574 -sunos5*)
575 os=`echo $os | sed -e 's|sunos5|solaris2|'`
576--- 534,540 ----
577 | -amigados* | -msdos* | -newsos* | -unicos* | -aos* \
578 | -nindy* | -vxworks* | -ebmon* | -hms* | -mvs* | -clix* \
579 | -riscos* | -linux* | -uniplus* | -iris* | -rtu* | -xenix* \
580! | -hiux* | -386bsd* | -netbsd* | -riscix* | -lynxos* | -freebsd*)
581 ;;
582 -sunos5*)
583 os=`echo $os | sed -e 's|sunos5|solaris2|'`
584diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/configure gcc-2.5.8/configure
585*** gcc-2.5.8.gnu/configure Fri Nov 19 22:44:16 1993
586--- gcc-2.5.8/configure Sun Feb 27 00:41:03 1994
587***************
588*** 385,390 ****
589--- 385,394 ----
590 tmake_file=i386/t-next
591 xmake_file=i386/x-next
592 ;;
593+ i[34]86-*-freebsd*)
594+ cpu_type=i386
595+ tm_file=i386/freebsd.h
596+ ;;
597 i[34]86-*-bsd*)
598 cpu_type=i386
599 tm_file=i386/386bsd.h
600diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/expmed.c gcc-2.5.8/expmed.c
601*** gcc-2.5.8.gnu/expmed.c Sun Nov 14 04:50:40 1993
602--- gcc-2.5.8/expmed.c Sun Feb 27 22:17:01 1994
603***************
604*** 1,6 ****
605 /* Medium-level subroutines: convert bit-field store and extract
606 and shifts, multiplies and divides to rtl instructions.
607! Copyright (C) 1987, 1988, 1989, 1992, 1993 Free Software Foundation, Inc.
608
609 This file is part of GNU CC.
610
611--- 1,6 ----
612 /* Medium-level subroutines: convert bit-field store and extract
613 and shifts, multiplies and divides to rtl instructions.
614! Copyright (C) 1987, 88, 89, 92, 93, 1994 Free Software Foundation, Inc.
615
616 This file is part of GNU CC.
617
618***************
619*** 421,427 ****
620 /* If xop0 is a register, we need it in MAXMODE
621 to make it acceptable to the format of insv. */
622 if (GET_CODE (xop0) == SUBREG)
623! PUT_MODE (xop0, maxmode);
624 if (GET_CODE (xop0) == REG && GET_MODE (xop0) != maxmode)
625 xop0 = gen_rtx (SUBREG, maxmode, xop0, 0);
626
627--- 421,429 ----
628 /* If xop0 is a register, we need it in MAXMODE
629 to make it acceptable to the format of insv. */
630 if (GET_CODE (xop0) == SUBREG)
631! /* We can't just change the mode, because this might clobber op0,
632! and we will need the original value of op0 if insv fails. */
633! xop0 = gen_rtx (SUBREG, maxmode, SUBREG_REG (xop0), SUBREG_WORD (xop0));
634 if (GET_CODE (xop0) == REG && GET_MODE (xop0) != maxmode)
635 xop0 = gen_rtx (SUBREG, maxmode, xop0, 0);
636
637***************
638*** 556,561 ****
639--- 558,573 ----
640
641 total_bits = GET_MODE_BITSIZE (mode);
642
643+ /* Make sure bitpos is valid for the chosen mode. Adjust BITPOS to
644+ be be in the range 0 to total_bits-1, and put any excess bytes in
645+ OFFSET. */
646+ if (bitpos >= total_bits)
647+ {
648+ offset += (bitpos / total_bits) * (total_bits / BITS_PER_UNIT);
649+ bitpos -= ((bitpos / total_bits) * (total_bits / BITS_PER_UNIT)
650+ * BITS_PER_UNIT);
651+ }
652+
653 /* Get ref to an aligned byte, halfword, or word containing the field.
654 Adjust BITPOS to be position within a word,
655 and OFFSET to be the offset of that word.
656***************
657*** 691,697 ****
658 {
659 rtx word = gen_lowpart_common (word_mode, value);
660
661! if (word)
662 value = word;
663 else
664 value = gen_lowpart_common (word_mode,
665--- 703,709 ----
666 {
667 rtx word = gen_lowpart_common (word_mode, value);
668
669! if (word && (value != word))
670 value = word;
671 else
672 value = gen_lowpart_common (word_mode,
673***************
674*** 721,731 ****
675 >> (bitsize - bitsdone - thissize))
676 & (((HOST_WIDE_INT) 1 << thissize) - 1));
677 else
678! /* The args are chosen so that the last part
679! includes the lsb. */
680! part = extract_fixed_bit_field (word_mode, value, 0, thissize,
681! BITS_PER_WORD - bitsize + bitsdone,
682! NULL_RTX, 1, align);
683 #else
684 /* Fetch successively more significant portions. */
685 if (GET_CODE (value) == CONST_INT)
686--- 733,751 ----
687 >> (bitsize - bitsdone - thissize))
688 & (((HOST_WIDE_INT) 1 << thissize) - 1));
689 else
690! {
691! /* The args are chosen so that the last part
692! includes the lsb. */
693! int bit_offset = 0;
694! /* If the value isn't in memory, then it must be right aligned
695! if a register, so skip past the padding on the left. If it
696! is in memory, then there is no padding on the left. */
697! if (GET_CODE (value) != MEM)
698! bit_offset = BITS_PER_WORD - bitsize;
699! part = extract_fixed_bit_field (word_mode, value, 0, thissize,
700! bit_offset + bitsdone,
701! NULL_RTX, 1, align);
702! }
703 #else
704 /* Fetch successively more significant portions. */
705 if (GET_CODE (value) == CONST_INT)
706***************
707*** 1592,1597 ****
708--- 1612,1625 ----
709
710 op1 = expand_expr (amount, NULL_RTX, VOIDmode, 0);
711
712+ #if SHIFT_COUNT_TRUNCATED
713+ if (SHIFT_COUNT_TRUNCATED
714+ && GET_CODE (op1) == CONST_INT
715+ && (unsigned HOST_WIDE_INT) INTVAL (op1) >= GET_MODE_BITSIZE (mode))
716+ op1 = GEN_INT ((unsigned HOST_WIDE_INT) INTVAL (op1)
717+ % GET_MODE_BITSIZE (mode));
718+ #endif
719+
720 if (op1 == const0_rtx)
721 return shifted;
722
723***************
724*** 1843,1852 ****
725 int cost_limit;
726 {
727 int m;
728! struct algorithm *best_alg
729! = (struct algorithm *)alloca (sizeof (struct algorithm));
730! struct algorithm *alg_in
731! = (struct algorithm *)alloca (sizeof (struct algorithm));
732 unsigned int cost;
733 unsigned HOST_WIDE_INT q;
734
735--- 1871,1877 ----
736 int cost_limit;
737 {
738 int m;
739! struct algorithm *alg_in, *best_alg;
740 unsigned int cost;
741 unsigned HOST_WIDE_INT q;
742
743***************
744*** 1881,1886 ****
745--- 1906,1916 ----
746 }
747 }
748
749+ /* We'll be needing a couple extra algorithm structures now. */
750+
751+ alg_in = (struct algorithm *)alloca (sizeof (struct algorithm));
752+ best_alg = (struct algorithm *)alloca (sizeof (struct algorithm));
753+
754 /* If we have a group of zero bits at the low-order part of T, try
755 multiplying by the remaining bits and then doing a shift. */
756
757***************
758*** 2043,2058 ****
759 }
760 }
761
762- /* If we are getting a too long sequence for `struct algorithm'
763- to record, make this search fail. */
764- if (best_alg->ops == MAX_BITS_PER_WORD)
765- return;
766-
767 /* If cost_limit has not decreased since we stored it in alg_out->cost,
768 we have not found any algorithm. */
769 if (cost_limit == alg_out->cost)
770 return;
771
772 /* Copy the algorithm from temporary space to the space at alg_out.
773 We avoid using structure assignment because the majority of
774 best_alg is normally undefined, and this is a critical function. */
775--- 2073,2088 ----
776 }
777 }
778
779 /* If cost_limit has not decreased since we stored it in alg_out->cost,
780 we have not found any algorithm. */
781 if (cost_limit == alg_out->cost)
782 return;
783
784+ /* If we are getting a too long sequence for `struct algorithm'
785+ to record, make this search fail. */
786+ if (best_alg->ops == MAX_BITS_PER_WORD)
787+ return;
788+
789 /* Copy the algorithm from temporary space to the space at alg_out.
790 We avoid using structure assignment because the majority of
791 best_alg is normally undefined, and this is a critical function. */
792***************
793*** 2153,2161 ****
794 for (opno = 1; opno < alg.ops; opno++)
795 {
796 int log = alg.log[opno];
797! rtx shift_subtarget = preserve_subexpressions_p () ? 0 : accum;
798 rtx add_target = opno == alg.ops - 1 && target != 0 ? target : 0;
799!
800 switch (alg.op[opno])
801 {
802 case alg_shift:
803--- 2183,2193 ----
804 for (opno = 1; opno < alg.ops; opno++)
805 {
806 int log = alg.log[opno];
807! int preserve = preserve_subexpressions_p ();
808! rtx shift_subtarget = preserve ? 0 : accum;
809 rtx add_target = opno == alg.ops - 1 && target != 0 ? target : 0;
810! rtx accum_target = preserve ? 0 : accum;
811!
812 switch (alg.op[opno])
813 {
814 case alg_shift:
815***************
816*** 2168,2174 ****
817 tem = expand_shift (LSHIFT_EXPR, mode, op0,
818 build_int_2 (log, 0), NULL_RTX, 0);
819 accum = force_operand (gen_rtx (PLUS, mode, accum, tem),
820! add_target ? add_target : accum);
821 val_so_far += (HOST_WIDE_INT) 1 << log;
822 break;
823
824--- 2200,2206 ----
825 tem = expand_shift (LSHIFT_EXPR, mode, op0,
826 build_int_2 (log, 0), NULL_RTX, 0);
827 accum = force_operand (gen_rtx (PLUS, mode, accum, tem),
828! add_target ? add_target : accum_target);
829 val_so_far += (HOST_WIDE_INT) 1 << log;
830 break;
831
832***************
833*** 2176,2198 ****
834 tem = expand_shift (LSHIFT_EXPR, mode, op0,
835 build_int_2 (log, 0), NULL_RTX, 0);
836 accum = force_operand (gen_rtx (MINUS, mode, accum, tem),
837! add_target ? add_target : accum);
838 val_so_far -= (HOST_WIDE_INT) 1 << log;
839 break;
840
841 case alg_add_t2_m:
842 accum = expand_shift (LSHIFT_EXPR, mode, accum,
843! build_int_2 (log, 0), accum, 0);
844 accum = force_operand (gen_rtx (PLUS, mode, accum, op0),
845! add_target ? add_target : accum);
846 val_so_far = (val_so_far << log) + 1;
847 break;
848
849 case alg_sub_t2_m:
850 accum = expand_shift (LSHIFT_EXPR, mode, accum,
851! build_int_2 (log, 0), accum, 0);
852 accum = force_operand (gen_rtx (MINUS, mode, accum, op0),
853! add_target ? add_target : accum);
854 val_so_far = (val_so_far << log) - 1;
855 break;
856
857--- 2208,2232 ----
858 tem = expand_shift (LSHIFT_EXPR, mode, op0,
859 build_int_2 (log, 0), NULL_RTX, 0);
860 accum = force_operand (gen_rtx (MINUS, mode, accum, tem),
861! add_target ? add_target : accum_target);
862 val_so_far -= (HOST_WIDE_INT) 1 << log;
863 break;
864
865 case alg_add_t2_m:
866 accum = expand_shift (LSHIFT_EXPR, mode, accum,
867! build_int_2 (log, 0), shift_subtarget,
868! 0);
869 accum = force_operand (gen_rtx (PLUS, mode, accum, op0),
870! add_target ? add_target : accum_target);
871 val_so_far = (val_so_far << log) + 1;
872 break;
873
874 case alg_sub_t2_m:
875 accum = expand_shift (LSHIFT_EXPR, mode, accum,
876! build_int_2 (log, 0), shift_subtarget,
877! 0);
878 accum = force_operand (gen_rtx (MINUS, mode, accum, op0),
879! add_target ? add_target : accum_target);
880 val_so_far = (val_so_far << log) - 1;
881 break;
882
883***************
884*** 2200,2206 ****
885 tem = expand_shift (LSHIFT_EXPR, mode, accum,
886 build_int_2 (log, 0), NULL_RTX, 0);
887 accum = force_operand (gen_rtx (PLUS, mode, accum, tem),
888! add_target ? add_target : accum);
889 val_so_far += val_so_far << log;
890 break;
891
892--- 2234,2240 ----
893 tem = expand_shift (LSHIFT_EXPR, mode, accum,
894 build_int_2 (log, 0), NULL_RTX, 0);
895 accum = force_operand (gen_rtx (PLUS, mode, accum, tem),
896! add_target ? add_target : accum_target);
897 val_so_far += val_so_far << log;
898 break;
899
900***************
901*** 2208,2214 ****
902 tem = expand_shift (LSHIFT_EXPR, mode, accum,
903 build_int_2 (log, 0), NULL_RTX, 0);
904 accum = force_operand (gen_rtx (MINUS, mode, tem, accum),
905! add_target ? add_target : tem);
906 val_so_far = (val_so_far << log) - val_so_far;
907 break;
908
909--- 2242,2249 ----
910 tem = expand_shift (LSHIFT_EXPR, mode, accum,
911 build_int_2 (log, 0), NULL_RTX, 0);
912 accum = force_operand (gen_rtx (MINUS, mode, tem, accum),
913! (add_target ? add_target
914! : preserve ? 0 : tem));
915 val_so_far = (val_so_far << log) - val_so_far;
916 break;
917
918***************
919*** 3196,3198 ****
920--- 3231,3234 ----
921
922 return tem;
923 }
924+
925diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/gcc.c gcc-2.5.8/gcc.c
926*** gcc-2.5.8.gnu/gcc.c Thu Dec 23 23:49:43 1993
927--- gcc-2.5.8/gcc.c Sun Feb 27 00:41:06 1994
928***************
929*** 586,591 ****
930--- 586,594 ----
931 "%{!S:%{!gnatc:%{!gnats:as %{R} %{j} %{J} %{h} %{d2} %a %Y\
932 %{c:%W{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%u.o}\
933 %{!pipe:%g.s} %A\n}}} "},
934+ #ifdef CUSTOM_DEFAULT_COMPILERS
935+ CUSTOM_DEFAULT_COMPILERS
936+ #endif /* CUSTOM_DEFAULT_COMPILERS */
937 /* Mark end of table */
938 {0, 0}
939 };
940***************
941*** 608,614 ****
942 static char *link_command_spec = "\
943 %{!fsyntax-only: \
944 %{!c:%{!M:%{!MM:%{!E:%{!S:ld %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} \
945! %{r} %{s} %{t} %{u*} %{x} %{z}\
946 %{!A:%{!nostartfiles:%{!nostdlib:%S}}} %{static:}\
947 %{L*} %D %{T*} %o %{!nostdlib:libgcc.a%s %L libgcc.a%s %{!A:%E}}\n }}}}}}";
948 #else
949--- 611,617 ----
950 static char *link_command_spec = "\
951 %{!fsyntax-only: \
952 %{!c:%{!M:%{!MM:%{!E:%{!S:ld %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} \
953! %{r} %{s} %{t} %{u*} %{x} %{z} %{Z}\
954 %{!A:%{!nostartfiles:%{!nostdlib:%S}}} %{static:}\
955 %{L*} %D %{T*} %o %{!nostdlib:libgcc.a%s %L libgcc.a%s %{!A:%E}}\n }}}}}}";
956 #else
957***************
958*** 617,623 ****
959 static char *link_command_spec = "\
960 %{!fsyntax-only: \
961 %{!c:%{!M:%{!MM:%{!E:%{!S:ld %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} \
962! %{r} %{s} %{t} %{u*} %{x} %{z}\
963 %{!A:%{!nostartfiles:%{!nostdlib:%S}}} %{static:}\
964 %{L*} %{T*} %o %{!nostdlib:libgcc.a%s %L libgcc.a%s %{!A:%E}}\n }}}}}}";
965 #else
966--- 620,626 ----
967 static char *link_command_spec = "\
968 %{!fsyntax-only: \
969 %{!c:%{!M:%{!MM:%{!E:%{!S:ld %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} \
970! %{r} %{s} %{t} %{u*} %{x} %{z} %{Z}\
971 %{!A:%{!nostartfiles:%{!nostdlib:%S}}} %{static:}\
972 %{L*} %{T*} %o %{!nostdlib:libgcc.a%s %L libgcc.a%s %{!A:%E}}\n }}}}}}";
973 #else
974***************
975*** 625,631 ****
976 static char *link_command_spec = "\
977 %{!fsyntax-only: \
978 %{!c:%{!M:%{!MM:%{!E:%{!S:ld %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} \
979! %{r} %{s} %{t} %{u*} %{x} %{z}\
980 %{!A:%{!nostartfiles:%{!nostdlib:%S}}} %{static:}\
981 %{L*} %D %{T*} %o %{!nostdlib:-lgcc %L -lgcc %{!A:%E}}\n }}}}}}";
982 #endif
983--- 628,634 ----
984 static char *link_command_spec = "\
985 %{!fsyntax-only: \
986 %{!c:%{!M:%{!MM:%{!E:%{!S:ld %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} \
987! %{r} %{s} %{t} %{u*} %{x} %{z} %{Z}\
988 %{!A:%{!nostartfiles:%{!nostdlib:%S}}} %{static:}\
989 %{L*} %D %{T*} %o %{!nostdlib:-lgcc %L -lgcc %{!A:%E}}\n }}}}}}";
990 #endif
991***************
992*** 3202,3224 ****
993 {
994 if (! strncmp (y, "-D", 2))
995 {
996! *x++ = *y++;
997! *x++ = *y++;
998
999 if (strncmp (y, "__", 2))
1000 {
1001 /* Stick __ at front of macro name. */
1002 *x++ = '_';
1003 *x++ = '_';
1004- }
1005-
1006- /* Copy the macro name. */
1007- while (*y && *y != '=' && *y != ' ' && *y != '\t')
1008- *x++ = *y++;
1009
1010! /* Copy the value given, if any. */
1011! while (*y && *y != ' ' && *y != '\t')
1012! *x++ = *y++;
1013 }
1014 else if (*y == ' ' || *y == '\t')
1015 /* Copy whitespace to the result. */
1016--- 3205,3235 ----
1017 {
1018 if (! strncmp (y, "-D", 2))
1019 {
1020! y++;
1021! y++;
1022
1023 if (strncmp (y, "__", 2))
1024 {
1025+ *x++ = '-';
1026+ *x++ = 'D';
1027 /* Stick __ at front of macro name. */
1028 *x++ = '_';
1029 *x++ = '_';
1030
1031! /* Copy the macro name. */
1032! while (*y && *y != '=' && *y != ' ' && *y != '\t')
1033! *x++ = *y++;
1034!
1035! /* Copy the value given, if any. */
1036! while (*y && *y != ' ' && *y != '\t')
1037! *x++ = *y++;
1038! }
1039! else
1040! {
1041! /* Skip this one, we have done it once already */
1042! while (*y && *y != ' ' && *y != '\t')
1043! y++;
1044! }
1045 }
1046 else if (*y == ' ' || *y == '\t')
1047 /* Copy whitespace to the result. */
1048diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/gstdarg.h gcc-2.5.8/gstdarg.h
1049*** gcc-2.5.8.gnu/gstdarg.h Sat Nov 13 02:53:58 1993
1050--- gcc-2.5.8/gstdarg.h Sun Feb 27 00:41:06 1994
1051***************
1052*** 136,148 ****
1053 But on BSD NET2 we must not test or define or undef it.
1054 (Note that the comments in NET 2's ansi.h
1055 are incorrect for _VA_LIST_--see stdio.h!) */
1056! #if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__)
1057 /* The macro _VA_LIST is used in SCO Unix 3.2. */
1058 #ifndef _VA_LIST
1059 /* The macro _VA_LIST_T_H is used in the Bull dpx2 */
1060 #ifndef _VA_LIST_T_H
1061 #define _VA_LIST_T_H
1062! #if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__))
1063 #define _VA_LIST_
1064 #endif
1065 #define _VA_LIST
1066--- 136,148 ----
1067 But on BSD NET2 we must not test or define or undef it.
1068 (Note that the comments in NET 2's ansi.h
1069 are incorrect for _VA_LIST_--see stdio.h!) */
1070! #if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__FreeBSD__)
1071 /* The macro _VA_LIST is used in SCO Unix 3.2. */
1072 #ifndef _VA_LIST
1073 /* The macro _VA_LIST_T_H is used in the Bull dpx2 */
1074 #ifndef _VA_LIST_T_H
1075 #define _VA_LIST_T_H
1076! #if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__FreeBSD__))
1077 #define _VA_LIST_
1078 #endif
1079 #define _VA_LIST
1080diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/gstddef.h gcc-2.5.8/gstddef.h
1081*** gcc-2.5.8.gnu/gstddef.h Fri Dec 3 12:46:59 1993
1082--- gcc-2.5.8/gstddef.h Sun Feb 27 00:41:07 1994
1083***************
1084*** 22,28 ****
1085
1086 /* On 4.3bsd-net2, make sure ansi.h is included, so we have
1087 one less case to deal with in the following. */
1088! #if defined (__BSD_NET2__) || defined (____386BSD____)
1089 #include <machine/ansi.h>
1090 #endif
1091
1092--- 22,28 ----
1093
1094 /* On 4.3bsd-net2, make sure ansi.h is included, so we have
1095 one less case to deal with in the following. */
1096! #if defined (__BSD_NET2__) || defined (____386BSD____) || defined (__FreeBSD__)
1097 #include <machine/ansi.h>
1098 #endif
1099
1100diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/gvarargs.h gcc-2.5.8/gvarargs.h
1101*** gcc-2.5.8.gnu/gvarargs.h Sat Nov 13 09:33:23 1993
1102--- gcc-2.5.8/gvarargs.h Sun Feb 27 00:41:07 1994
1103***************
1104*** 150,162 ****
1105 /* Michael Eriksson <mer@sics.se> at Thu Sep 30 11:00:57 1993:
1106 Sequent defines _VA_LIST_ in <machine/machtypes.h> to be the type to
1107 use for va_list (``typedef _VA_LIST_ va_list'') */
1108! #if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__)
1109 /* The macro _VA_LIST is used in SCO Unix 3.2. */
1110 #ifndef _VA_LIST
1111 /* The macro _VA_LIST_T_H is used in the Bull dpx2 */
1112 #ifndef _VA_LIST_T_H
1113 #define _VA_LIST_T_H
1114! #if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__))
1115 #define _VA_LIST_
1116 #endif
1117 #define _VA_LIST
1118--- 150,162 ----
1119 /* Michael Eriksson <mer@sics.se> at Thu Sep 30 11:00:57 1993:
1120 Sequent defines _VA_LIST_ in <machine/machtypes.h> to be the type to
1121 use for va_list (``typedef _VA_LIST_ va_list'') */
1122! #if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__)
1123 /* The macro _VA_LIST is used in SCO Unix 3.2. */
1124 #ifndef _VA_LIST
1125 /* The macro _VA_LIST_T_H is used in the Bull dpx2 */
1126 #ifndef _VA_LIST_T_H
1127 #define _VA_LIST_T_H
1128! #if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__))
1129 #define _VA_LIST_
1130 #endif
1131 #define _VA_LIST
1132diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/invoke.texi gcc-2.5.8/invoke.texi
1133*** gcc-2.5.8.gnu/invoke.texi Thu Nov 11 14:31:43 1993
1134--- gcc-2.5.8/invoke.texi Sun Feb 27 00:41:10 1994
1135***************
1136*** 252,258 ****
1137
1138 @emph{i386 Options}
1139 -m486 -mno-486 -msoft-float -msvr3-shlib -mieee-fp
1140! -mno-fp-ret-in-387
1141
1142 @emph{HPPA Options}
1143 -mpa-risc-1-0
1144--- 252,258 ----
1145
1146 @emph{i386 Options}
1147 -m486 -mno-486 -msoft-float -msvr3-shlib -mieee-fp
1148! -mno-fp-ret-in-387 -mno-fancy-math-387
1149
1150 @emph{HPPA Options}
1151 -mpa-risc-1-0
1152***************
1153*** 3090,3095 ****
1154--- 3090,3103 ----
1155
1156 The option @samp{-mno-fp-ret-in-387} causes such values to be returned
1157 in ordinary CPU registers instead.
1158+
1159+ @item -mno-fancy-math-387
1160+ Do not generate sin, cos and sqrt instructions to the 387.
1161+
1162+ Some 387-emulators are less complete than one would expect, and usually
1163+ the hard parts are missing, this option fixes one such case for the
1164+ FreeBSD OS, where this option is set as default.
1165+
1166 @c FIXME!! What about these options listed in @node Option Summary ??
1167 @c -msvr3-shlib -mieee-fp
1168 @end table
1169diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/objc/objects.c gcc-2.5.8/objc/objects.c
1170*** gcc-2.5.8.gnu/objc/objects.c Thu Nov 18 09:07:33 1993
1171--- gcc-2.5.8/objc/objects.c Sun Feb 27 00:41:11 1994
1172***************
1173*** 24,30 ****
1174 however invalidate any other reasons why the executable file might be
1175 covered by the GNU General Public License. */
1176
1177! #include "../tconfig.h" /* include defs of bzero for target */
1178 #include "runtime.h" /* the kitchen sink */
1179
1180 id __objc_object_alloc(Class*);
1181--- 24,30 ----
1182 however invalidate any other reasons why the executable file might be
1183 covered by the GNU General Public License. */
1184
1185! #include "tconfig.h" /* include defs of bzero for target */
1186 #include "runtime.h" /* the kitchen sink */
1187
1188 id __objc_object_alloc(Class*);