diff options
Diffstat (limited to 'gnu/usr.bin/cc25/gcc258-freebsd.patch')
| -rw-r--r-- | gnu/usr.bin/cc25/gcc258-freebsd.patch | 1188 |
1 files changed, 1188 insertions, 0 deletions
diff --git a/gnu/usr.bin/cc25/gcc258-freebsd.patch b/gnu/usr.bin/cc25/gcc258-freebsd.patch new file mode 100644 index 000000000000..bcc8ef2728bd --- /dev/null +++ b/gnu/usr.bin/cc25/gcc258-freebsd.patch @@ -0,0 +1,1188 @@ +diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/config/i386/freebsd.h gcc-2.5.8/config/i386/freebsd.h +*** gcc-2.5.8.gnu/config/i386/freebsd.h Thu Jan 1 01:00:00 1970 +--- gcc-2.5.8/config/i386/freebsd.h Sun Feb 27 00:40:55 1994 +*************** +*** 0 **** +--- 1,341 ---- ++ /* Configuration for an i386 running FreeBSD as the target machine. ++ * ++ * 7th feb 1994, Poul-Henning Kamp <phk@login.dkuug.dk> ++ * Made to fit FreeBSD 1.1 and GCC 2.5.8 ++ */ ++ ++ /* This goes away when the math-emulator is fixed */ ++ #define TARGET_CPU_DEFAULT 0400 /* TARGET_NO_FANCY_MATH_387 */ ++ ++ /* Just in case. (Cross-compilations &c) */ ++ #ifndef __FreeBSD__ ++ #define __FreeBSD__ 1 ++ #endif ++ ++ /* This is tested by i386gas.h. */ ++ #define YES_UNDERSCORES ++ ++ #include "i386/gstabs.h" ++ ++ /* Get perform_* macros to build libgcc.a. */ ++ #include "i386/perform.h" ++ ++ #undef CPP_PREDEFINES ++ #define CPP_PREDEFINES "-Dunix -Di386 -D__FreeBSD__ -D__386BSD__ -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)" ++ ++ #define INCLUDE_DEFAULTS { \ ++ { "/usr/include", 0 }, \ ++ { "/usr/include/g++", 1 }, \ ++ { 0, 0} \ ++ } ++ ++ /* Like the default, except no -lg. */ ++ #define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}" ++ ++ #undef SIZE_TYPE ++ #define SIZE_TYPE "unsigned int" ++ ++ #undef PTRDIFF_TYPE ++ #define PTRDIFF_TYPE "int" ++ ++ #undef WCHAR_TYPE ++ #define WCHAR_TYPE "short unsigned int" ++ ++ #define WCHAR_UNSIGNED 1 ++ ++ #undef WCHAR_TYPE_SIZE ++ #define WCHAR_TYPE_SIZE 16 ++ ++ #define HAVE_ATEXIT ++ ++ /* Redefine this to use %eax instead of %edx. */ ++ #undef FUNCTION_PROFILER ++ #define FUNCTION_PROFILER(FILE, LABELNO) \ ++ { \ ++ if (flag_pic) \ ++ { \ ++ fprintf (FILE, "\tleal %sP%d@GOTOFF(%%ebx),%%eax\n", \ ++ LPREFIX, (LABELNO)); \ ++ fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \ ++ } \ ++ else \ ++ { \ ++ fprintf (FILE, "\tmovl $%sP%d,%%eax\n", LPREFIX, (LABELNO)); \ ++ fprintf (FILE, "\tcall mcount\n"); \ ++ } \ ++ } ++ ++ /* There are conflicting reports about whether this system uses ++ a different assembler syntax. wilson@cygnus.com says # is right. */ ++ #undef COMMENT_BEGIN ++ #define COMMENT_BEGIN "#" ++ ++ #undef ASM_APP_ON ++ #define ASM_APP_ON "#APP\n" ++ ++ #undef ASM_APP_OFF ++ #define ASM_APP_OFF "#NO_APP\n" ++ ++ /* The following macros are stolen from i386v4.h */ ++ /* These have to be defined to get PIC code correct */ ++ ++ /* 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 ++ i386.md for an explanation of the expression this outputs. */ ++ ++ #undef ASM_OUTPUT_ADDR_DIFF_ELT ++ #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, VALUE, REL) \ ++ fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE) ++ ++ /* Indicate that jump tables go in the text section. This is ++ necessary when compiling PIC code. */ ++ ++ #define JUMP_TABLES_IN_TEXT_SECTION ++ ++ /* 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 ++ ++ /* ++ * Some imports from svr4.h in support of shared libraries. ++ * Currently, we need the DECLARE_OBJECT_SIZE stuff. ++ */ ++ ++ /* Define the strings used for the special svr4 .type and .size directives. ++ These strings generally do not vary from one system running svr4 to ++ another, but if a given system (e.g. m88k running svr) needs to use ++ different pseudo-op names for these, they may be overridden in the ++ file which includes this one. */ ++ ++ #define TYPE_ASM_OP ".type" ++ #define SIZE_ASM_OP ".size" ++ #define WEAK_ASM_OP ".weak" ++ ++ /* The following macro defines the format used to output the second ++ operand of the .type assembler directive. Different svr4 assemblers ++ expect various different forms for this operand. The one given here ++ is just a default. You may need to override it in your machine- ++ specific tm.h file (depending upon the particulars of your assembler). */ ++ ++ #define TYPE_OPERAND_FMT "@%s" ++ ++ /* Write the extra assembler code needed to declare a function's result. ++ Most svr4 assemblers don't require any special declaration of the ++ result value, but there are exceptions. */ ++ ++ #ifndef ASM_DECLARE_RESULT ++ #define ASM_DECLARE_RESULT(FILE, RESULT) ++ #endif ++ ++ /* These macros generate the special .type and .size directives which ++ are used to set the corresponding fields of the linker symbol table ++ entries in an ELF object file under SVR4. These macros also output ++ the starting labels for the relevant functions/objects. */ ++ ++ /* Write the extra assembler code needed to declare a function properly. ++ Some svr4 assemblers need to also have something extra said about the ++ function's return value. We allow for that here. */ ++ ++ #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \ ++ do { \ ++ fprintf (FILE, "\t%s\t ", TYPE_ASM_OP); \ ++ assemble_name (FILE, NAME); \ ++ putc (',', FILE); \ ++ fprintf (FILE, TYPE_OPERAND_FMT, "function"); \ ++ putc ('\n', FILE); \ ++ ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL)); \ ++ ASM_OUTPUT_LABEL(FILE, NAME); \ ++ } while (0) ++ ++ /* Write the extra assembler code needed to declare an object properly. */ ++ ++ #define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \ ++ do { \ ++ fprintf (FILE, "\t%s\t ", TYPE_ASM_OP); \ ++ assemble_name (FILE, NAME); \ ++ putc (',', FILE); \ ++ fprintf (FILE, TYPE_OPERAND_FMT, "object"); \ ++ putc ('\n', FILE); \ ++ size_directive_output = 0; \ ++ if (!flag_inhibit_size_directive && DECL_SIZE (DECL)) \ ++ { \ ++ size_directive_output = 1; \ ++ fprintf (FILE, "\t%s\t ", SIZE_ASM_OP); \ ++ assemble_name (FILE, NAME); \ ++ fprintf (FILE, ",%d\n", int_size_in_bytes (TREE_TYPE (DECL))); \ ++ } \ ++ ASM_OUTPUT_LABEL(FILE, NAME); \ ++ } while (0) ++ ++ /* Output the size directive for a decl in rest_of_decl_compilation ++ in the case where we did not do so before the initializer. ++ Once we find the error_mark_node, we know that the value of ++ size_directive_output was set ++ by ASM_DECLARE_OBJECT_NAME when it was run for the same decl. */ ++ ++ #define ASM_FINISH_DECLARE_OBJECT(FILE, DECL, TOP_LEVEL, AT_END) \ ++ do { \ ++ char *name = XSTR (XEXP (DECL_RTL (DECL), 0), 0); \ ++ if (!flag_inhibit_size_directive && DECL_SIZE (DECL) \ ++ && ! AT_END && TOP_LEVEL \ ++ && DECL_INITIAL (DECL) == error_mark_node \ ++ && !size_directive_output) \ ++ { \ ++ fprintf (FILE, "\t%s\t ", SIZE_ASM_OP); \ ++ assemble_name (FILE, name); \ ++ fprintf (FILE, ",%d\n", int_size_in_bytes (TREE_TYPE (DECL)));\ ++ } \ ++ } while (0) ++ ++ ++ /* This is how to declare the size of a function. */ ++ ++ #define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \ ++ do { \ ++ if (!flag_inhibit_size_directive) \ ++ { \ ++ char label[256]; \ ++ static int labelno; \ ++ labelno++; \ ++ ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \ ++ ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); \ ++ fprintf (FILE, "\t%s\t ", SIZE_ASM_OP); \ ++ assemble_name (FILE, (FNAME)); \ ++ fprintf (FILE, ","); \ ++ assemble_name (FILE, label); \ ++ fprintf (FILE, "-"); \ ++ assemble_name (FILE, (FNAME)); \ ++ putc ('\n', FILE); \ ++ } \ ++ } while (0) ++ ++ #define ASM_SPEC " %| %{fpic:-k} %{fPIC:-k}" ++ #define LINK_SPEC \ ++ "%{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} %{assert*}" ++ ++ #define CUSTOM_DEFAULT_COMPILERS \ ++ /***** ljo's Fortran rule *****/ \ ++ {".f", "@f2c"}, \ ++ {"@f2c", \ ++ "f2c %{checksubscripts:-C} %{I2} %{onetrip} %{honorcase:-U} %{u} %{w}\ ++ %{ANSIC:-A} %{a} %{C++}\ ++ %{c} %{E} %{ec} %{ext} %{f} %{72} %{g} %{h} %{i2} %{kr}\ ++ %{P} %{p} %{r} %{r8} %{s} %{w8} %{z} %{N*}\ ++ %i %{!pipe: -o %g.c} %{pipe:-o -}|\n", \ ++ "gcpp -lang-c %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %I\ ++ %{C:%{!E:%eGNU C does not support -C without using -E}}\ ++ %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d}\ ++ -undef -D__GNUC__=2 %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\ ++ %{!undef:%{!ansi:%p} %P} %{trigraphs} \ ++ %c %{O*:%{!O0:-D__OPTIMIZE__}} %{traditional} %{ftraditional:-traditional}\ ++ %{traditional-cpp:-traditional}\ ++ %{g*} %{W*} %{w} %{pedantic*} %{H} %{d*} %C %{D*} %{U*} %{i*}\ ++ %{pipe:-} %{!pipe:%g.c} %{!M:%{!MM:%{!E:%{!pipe:%g.i}}}}%{E:%W{o*}}%{M:%W{o*}}%{MM:%W{o*}} |\n", \ ++ "%{!M:%{!MM:%{!E:gcc1 %{!pipe:%g.i} %1 \ ++ %{!Q:-quiet} -dumpbase %b.c %{d*} %{m*} %{a}\ ++ %{g*} %{O*} %{W*} %{w} %{pedantic*} %{ansi} \ ++ %{traditional} %{v:-version} %{pg:-p} %{p} %{f*}\ ++ %{aux-info*}\ ++ %{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\ ++ %{S:%W{o*}%{!o*:-o %b.s}}%{!S:-o %{|!pipe:%g.s}} |\n\ ++ %{!S:as %{R} %{j} %{J} %{h} %{d2} %a %Y\ ++ %{c:%W{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%u.o}\ ++ %{!pipe:%g.s} %A\n }}}}"}, \ ++ /***** End of ljo's Fortran rule *****/ ++ ++ /* This section stolen from i386/osfrose.h */ ++ ++ /* A C statement or compound statement to output to FILE some ++ assembler code to initialize basic-block profiling for the current ++ object module. This code should call the subroutine ++ `__bb_init_func' once per object module, passing it as its sole ++ argument the address of a block allocated in the object module. ++ ++ The name of the block is a local symbol made with this statement: ++ ++ ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 0); ++ ++ Of course, since you are writing the definition of ++ `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you ++ can take a short cut in the definition of this macro and use the ++ name that you know will result. ++ ++ The first word of this block is a flag which will be nonzero if the ++ object module has already been initialized. So test this word ++ first, and do not call `__bb_init_func' if the flag is nonzero. */ ++ ++ #undef FUNCTION_BLOCK_PROFILER ++ #define FUNCTION_BLOCK_PROFILER(STREAM, LABELNO) \ ++ do \ ++ { \ ++ if (!flag_pic) \ ++ { \ ++ fprintf (STREAM, "\tcmpl $0,%sPBX0\n", LPREFIX); \ ++ fprintf (STREAM, "\tjne 0f\n"); \ ++ fprintf (STREAM, "\tpushl $%sPBX0\n", LPREFIX); \ ++ fprintf (STREAM, "\tcall ___bb_init_func\n"); \ ++ fprintf (STREAM, "0:\n"); \ ++ } \ ++ else \ ++ { \ ++ fprintf (STREAM, "\tpushl %eax\n"); \ ++ fprintf (STREAM, "\tmovl %sPBX0@GOT(%ebx),%eax\n"); \ ++ fprintf (STREAM, "\tcmpl $0,(%eax)\n"); \ ++ fprintf (STREAM, "\tjne 0f\n"); \ ++ fprintf (STREAM, "\tpushl %eax\n"); \ ++ fprintf (STREAM, "\tcall ___bb_init_func@PLT\n"); \ ++ fprintf (STREAM, "0:\n"); \ ++ fprintf (STREAM, "\tpopl %eax\n"); \ ++ } \ ++ } \ ++ while (0) ++ ++ /* A C statement or compound statement to increment the count ++ associated with the basic block number BLOCKNO. Basic blocks are ++ numbered separately from zero within each compilation. The count ++ associated with block number BLOCKNO is at index BLOCKNO in a ++ vector of words; the name of this array is a local symbol made ++ with this statement: ++ ++ ASM_GENERATE_INTERNAL_LABEL (BUFFER, "LPBX", 2); ++ ++ Of course, since you are writing the definition of ++ `ASM_GENERATE_INTERNAL_LABEL' as well as that of this macro, you ++ can take a short cut in the definition of this macro and use the ++ name that you know will result. */ ++ ++ #undef BLOCK_PROFILER ++ #define BLOCK_PROFILER(STREAM, BLOCKNO) \ ++ do \ ++ { \ ++ if (!flag_pic) \ ++ fprintf (STREAM, "\tincl %sPBX2+%d\n", LPREFIX, (BLOCKNO)*4); \ ++ else \ ++ { \ ++ fprintf (STREAM, "\tpushl %eax\n"); \ ++ fprintf (STREAM, "\tmovl %sPBX2@GOT(%ebx),%eax\n", LPREFIX); \ ++ fprintf (STREAM, "\tincl %d(%eax)\n", (BLOCKNO)*4); \ ++ fprintf (STREAM, "\tpopl %eax\n"); \ ++ } \ ++ } \ ++ while (0) ++ ++ /* This is defined when gcc is compiled in the BSD-directory-tree, and must ++ * make up for the gap to all the stuff done in the GNU-makefiles. ++ * XXX Do these right ++ */ ++ ++ #ifdef FREEBSD_NATIVE ++ ++ #undef MD_EXEC_PREFIX ++ #define MD_EXEC_PREFIX "/usr/libexec/" ++ ++ #undef STANDARD_STARTFILE_PREFIX ++ #define STANDARD_STARTFILE_PREFIX "/usr/lib" ++ ++ #define DEFAULT_TARGET_MACHINE "i386-unknown-freebsd_1.0" ++ #define GPLUSPLUS_INCLUDE_DIR "/usr/local/lib/gcc-lib/i386-unknown-freebsd_1.0/2.5.8/include" ++ #define TOOL_INCLUDE_DIR "/usr/local/i386-unknown-freebsd_1.0/include" ++ #define GCC_INCLUDE_DIR "/usr/local/lib/gcc-lib/i386-unknown-freebsd_1.0/2.5.8/include" ++ ++ #endif /* FREEBSD_NATIVE */ +diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/config/i386/i386.h gcc-2.5.8/config/i386/i386.h +*** gcc-2.5.8.gnu/config/i386/i386.h Wed Oct 13 07:02:27 1993 +--- gcc-2.5.8/config/i386/i386.h Sun Feb 27 00:40:56 1994 +*************** +*** 90,95 **** +--- 90,99 ---- + the 387 to be used, which is compatible with most calling conventions. */ + #define TARGET_FLOAT_RETURNS_IN_80387 (target_flags & 0200) + ++ /* Disable generation of FP sin, cos and sqrt operations for 387. ++ This is because FreeBSD lacks these in the math-emulator-code */ ++ #define TARGET_NO_FANCY_MATH_387 (target_flags & 0400) ++ + /* Macro to define tables used to set the flags. + This is a list in braces of pairs in braces, + each pair being { "NAME", VALUE } +*************** +*** 114,119 **** +--- 118,125 ---- + { "no-ieee-fp", -0100}, \ + { "fp-ret-in-387", 0200}, \ + { "no-fp-ret-in-387", -0200}, \ ++ { "no-fancy-math-387", 0400}, \ ++ { "fancy-math-387", -0400}, \ + SUBTARGET_SWITCHES \ + { "", TARGET_DEFAULT | TARGET_CPU_DEFAULT}} + +diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/config/i386/i386.md gcc-2.5.8/config/i386/i386.md +*** gcc-2.5.8.gnu/config/i386/i386.md Tue Oct 5 06:43:30 1993 +--- gcc-2.5.8/config/i386/i386.md Sun Feb 27 00:40:59 1994 +*************** +*** 2935,3012 **** + (define_insn "sqrtsf2" + [(set (match_operand:SF 0 "register_operand" "=f") + (sqrt:SF (match_operand:SF 1 "general_operand" "0")))] +! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)" + "fsqrt") + + (define_insn "sqrtdf2" + [(set (match_operand:DF 0 "register_operand" "=f") + (sqrt:DF (match_operand:DF 1 "general_operand" "0")))] +! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)" + "fsqrt") + + (define_insn "" + [(set (match_operand:DF 0 "register_operand" "=f") + (sqrt:DF (float_extend:DF + (match_operand:SF 1 "general_operand" "0"))))] +! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)" + "fsqrt") + + (define_insn "sqrtxf2" + [(set (match_operand:XF 0 "register_operand" "=f") + (sqrt:XF (match_operand:XF 1 "general_operand" "0")))] +! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)" + "fsqrt") + + (define_insn "" + [(set (match_operand:XF 0 "register_operand" "=f") + (sqrt:XF (float_extend:XF + (match_operand:DF 1 "general_operand" "0"))))] +! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)" + "fsqrt") + + (define_insn "" + [(set (match_operand:XF 0 "register_operand" "=f") + (sqrt:XF (float_extend:XF + (match_operand:SF 1 "general_operand" "0"))))] +! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)" + "fsqrt") + + (define_insn "sindf2" + [(set (match_operand:DF 0 "register_operand" "=f") + (unspec:DF [(match_operand:DF 1 "register_operand" "0")] 1))] +! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)" + "fsin") + + (define_insn "sinsf2" + [(set (match_operand:SF 0 "register_operand" "=f") + (unspec:SF [(match_operand:SF 1 "register_operand" "0")] 1))] +! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)" + "fsin") + + (define_insn "" + [(set (match_operand:DF 0 "register_operand" "=f") + (unspec:DF [(float_extend:DF + (match_operand:SF 1 "register_operand" "0"))] 1))] +! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)" + "fsin") + + (define_insn "cosdf2" + [(set (match_operand:DF 0 "register_operand" "=f") + (unspec:DF [(match_operand:DF 1 "register_operand" "0")] 2))] +! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)" + "fcos") + + (define_insn "cossf2" + [(set (match_operand:SF 0 "register_operand" "=f") + (unspec:SF [(match_operand:SF 1 "register_operand" "0")] 2))] +! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)" + "fcos") + + (define_insn "" + [(set (match_operand:DF 0 "register_operand" "=f") + (unspec:DF [(float_extend:DF + (match_operand:SF 1 "register_operand" "0"))] 2))] +! "TARGET_80387 && (TARGET_IEEE_FP || flag_fast_math)" + "fcos") + + ;;- one complement instructions +--- 2935,3024 ---- + (define_insn "sqrtsf2" + [(set (match_operand:SF 0 "register_operand" "=f") + (sqrt:SF (match_operand:SF 1 "general_operand" "0")))] +! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 && +! (TARGET_IEEE_FP || flag_fast_math) " + "fsqrt") + + (define_insn "sqrtdf2" + [(set (match_operand:DF 0 "register_operand" "=f") + (sqrt:DF (match_operand:DF 1 "general_operand" "0")))] +! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 && +! (TARGET_IEEE_FP || flag_fast_math) " + "fsqrt") + + (define_insn "" + [(set (match_operand:DF 0 "register_operand" "=f") + (sqrt:DF (float_extend:DF + (match_operand:SF 1 "general_operand" "0"))))] +! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 && +! (TARGET_IEEE_FP || flag_fast_math) " + "fsqrt") + + (define_insn "sqrtxf2" + [(set (match_operand:XF 0 "register_operand" "=f") + (sqrt:XF (match_operand:XF 1 "general_operand" "0")))] +! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 && +! (TARGET_IEEE_FP || flag_fast_math) " + "fsqrt") + + (define_insn "" + [(set (match_operand:XF 0 "register_operand" "=f") + (sqrt:XF (float_extend:XF + (match_operand:DF 1 "general_operand" "0"))))] +! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 && +! (TARGET_IEEE_FP || flag_fast_math) " + "fsqrt") + + (define_insn "" + [(set (match_operand:XF 0 "register_operand" "=f") + (sqrt:XF (float_extend:XF + (match_operand:SF 1 "general_operand" "0"))))] +! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 && +! (TARGET_IEEE_FP || flag_fast_math) " + "fsqrt") + + (define_insn "sindf2" + [(set (match_operand:DF 0 "register_operand" "=f") + (unspec:DF [(match_operand:DF 1 "register_operand" "0")] 1))] +! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 && +! (TARGET_IEEE_FP || flag_fast_math) " + "fsin") + + (define_insn "sinsf2" + [(set (match_operand:SF 0 "register_operand" "=f") + (unspec:SF [(match_operand:SF 1 "register_operand" "0")] 1))] +! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 && +! (TARGET_IEEE_FP || flag_fast_math) " + "fsin") + + (define_insn "" + [(set (match_operand:DF 0 "register_operand" "=f") + (unspec:DF [(float_extend:DF + (match_operand:SF 1 "register_operand" "0"))] 1))] +! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 && +! (TARGET_IEEE_FP || flag_fast_math) " + "fsin") + + (define_insn "cosdf2" + [(set (match_operand:DF 0 "register_operand" "=f") + (unspec:DF [(match_operand:DF 1 "register_operand" "0")] 2))] +! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 && +! (TARGET_IEEE_FP || flag_fast_math) " + "fcos") + + (define_insn "cossf2" + [(set (match_operand:SF 0 "register_operand" "=f") + (unspec:SF [(match_operand:SF 1 "register_operand" "0")] 2))] +! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 && +! (TARGET_IEEE_FP || flag_fast_math) " + "fcos") + + (define_insn "" + [(set (match_operand:DF 0 "register_operand" "=f") + (unspec:DF [(float_extend:DF + (match_operand:SF 1 "register_operand" "0"))] 2))] +! "(!TARGET_NO_FANCY_MATH_387) && TARGET_80387 && +! (TARGET_IEEE_FP || flag_fast_math) " + "fcos") + + ;;- one complement instructions +diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/config.guess gcc-2.5.8/config.guess +*** gcc-2.5.8.gnu/config.guess Sun Dec 12 12:50:10 1993 +--- gcc-2.5.8/config.guess Sun Feb 27 00:41:00 1994 +*************** +*** 171,176 **** +--- 171,179 ---- + hp3[0-9][05]:NetBSD:*:*) + echo m68k-hp-netbsd${UNAME_RELEASE} + exit 0 ;; ++ i[34]86:FreeBSD:*:*) ++ echo ${UNAME_MACHINE}-unknown-freebsd ++ exit 0 ;; + i[34]86:NetBSD:*:*) + echo ${UNAME_MACHINE}-unknown-netbsd${UNAME_RELEASE} + exit 0 ;; +diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/config.sub gcc-2.5.8/config.sub +*** gcc-2.5.8.gnu/config.sub Thu Jan 13 11:43:23 1994 +--- gcc-2.5.8/config.sub Sun Feb 27 00:41:00 1994 +*************** +*** 534,540 **** + | -amigados* | -msdos* | -newsos* | -unicos* | -aos* \ + | -nindy* | -vxworks* | -ebmon* | -hms* | -mvs* | -clix* \ + | -riscos* | -linux* | -uniplus* | -iris* | -rtu* | -xenix* \ +! | -hiux* | -386bsd* | -netbsd* | -riscix* | -lynxos*) + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` +--- 534,540 ---- + | -amigados* | -msdos* | -newsos* | -unicos* | -aos* \ + | -nindy* | -vxworks* | -ebmon* | -hms* | -mvs* | -clix* \ + | -riscos* | -linux* | -uniplus* | -iris* | -rtu* | -xenix* \ +! | -hiux* | -386bsd* | -netbsd* | -riscix* | -lynxos* | -freebsd*) + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` +diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/configure gcc-2.5.8/configure +*** gcc-2.5.8.gnu/configure Fri Nov 19 22:44:16 1993 +--- gcc-2.5.8/configure Sun Feb 27 00:41:03 1994 +*************** +*** 385,390 **** +--- 385,394 ---- + tmake_file=i386/t-next + xmake_file=i386/x-next + ;; ++ i[34]86-*-freebsd*) ++ cpu_type=i386 ++ tm_file=i386/freebsd.h ++ ;; + i[34]86-*-bsd*) + cpu_type=i386 + tm_file=i386/386bsd.h +diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/expmed.c gcc-2.5.8/expmed.c +*** gcc-2.5.8.gnu/expmed.c Sun Nov 14 04:50:40 1993 +--- gcc-2.5.8/expmed.c Sun Feb 27 22:17:01 1994 +*************** +*** 1,6 **** + /* Medium-level subroutines: convert bit-field store and extract + and shifts, multiplies and divides to rtl instructions. +! Copyright (C) 1987, 1988, 1989, 1992, 1993 Free Software Foundation, Inc. + + This file is part of GNU CC. + +--- 1,6 ---- + /* Medium-level subroutines: convert bit-field store and extract + and shifts, multiplies and divides to rtl instructions. +! Copyright (C) 1987, 88, 89, 92, 93, 1994 Free Software Foundation, Inc. + + This file is part of GNU CC. + +*************** +*** 421,427 **** + /* If xop0 is a register, we need it in MAXMODE + to make it acceptable to the format of insv. */ + if (GET_CODE (xop0) == SUBREG) +! PUT_MODE (xop0, maxmode); + if (GET_CODE (xop0) == REG && GET_MODE (xop0) != maxmode) + xop0 = gen_rtx (SUBREG, maxmode, xop0, 0); + +--- 421,429 ---- + /* If xop0 is a register, we need it in MAXMODE + to make it acceptable to the format of insv. */ + if (GET_CODE (xop0) == SUBREG) +! /* We can't just change the mode, because this might clobber op0, +! and we will need the original value of op0 if insv fails. */ +! xop0 = gen_rtx (SUBREG, maxmode, SUBREG_REG (xop0), SUBREG_WORD (xop0)); + if (GET_CODE (xop0) == REG && GET_MODE (xop0) != maxmode) + xop0 = gen_rtx (SUBREG, maxmode, xop0, 0); + +*************** +*** 556,561 **** +--- 558,573 ---- + + total_bits = GET_MODE_BITSIZE (mode); + ++ /* Make sure bitpos is valid for the chosen mode. Adjust BITPOS to ++ be be in the range 0 to total_bits-1, and put any excess bytes in ++ OFFSET. */ ++ if (bitpos >= total_bits) ++ { ++ offset += (bitpos / total_bits) * (total_bits / BITS_PER_UNIT); ++ bitpos -= ((bitpos / total_bits) * (total_bits / BITS_PER_UNIT) ++ * BITS_PER_UNIT); ++ } ++ + /* Get ref to an aligned byte, halfword, or word containing the field. + Adjust BITPOS to be position within a word, + and OFFSET to be the offset of that word. +*************** +*** 691,697 **** + { + rtx word = gen_lowpart_common (word_mode, value); + +! if (word) + value = word; + else + value = gen_lowpart_common (word_mode, +--- 703,709 ---- + { + rtx word = gen_lowpart_common (word_mode, value); + +! if (word && (value != word)) + value = word; + else + value = gen_lowpart_common (word_mode, +*************** +*** 721,731 **** + >> (bitsize - bitsdone - thissize)) + & (((HOST_WIDE_INT) 1 << thissize) - 1)); + else +! /* The args are chosen so that the last part +! includes the lsb. */ +! part = extract_fixed_bit_field (word_mode, value, 0, thissize, +! BITS_PER_WORD - bitsize + bitsdone, +! NULL_RTX, 1, align); + #else + /* Fetch successively more significant portions. */ + if (GET_CODE (value) == CONST_INT) +--- 733,751 ---- + >> (bitsize - bitsdone - thissize)) + & (((HOST_WIDE_INT) 1 << thissize) - 1)); + else +! { +! /* The args are chosen so that the last part +! includes the lsb. */ +! int bit_offset = 0; +! /* If the value isn't in memory, then it must be right aligned +! if a register, so skip past the padding on the left. If it +! is in memory, then there is no padding on the left. */ +! if (GET_CODE (value) != MEM) +! bit_offset = BITS_PER_WORD - bitsize; +! part = extract_fixed_bit_field (word_mode, value, 0, thissize, +! bit_offset + bitsdone, +! NULL_RTX, 1, align); +! } + #else + /* Fetch successively more significant portions. */ + if (GET_CODE (value) == CONST_INT) +*************** +*** 1592,1597 **** +--- 1612,1625 ---- + + op1 = expand_expr (amount, NULL_RTX, VOIDmode, 0); + ++ #if SHIFT_COUNT_TRUNCATED ++ if (SHIFT_COUNT_TRUNCATED ++ && GET_CODE (op1) == CONST_INT ++ && (unsigned HOST_WIDE_INT) INTVAL (op1) >= GET_MODE_BITSIZE (mode)) ++ op1 = GEN_INT ((unsigned HOST_WIDE_INT) INTVAL (op1) ++ % GET_MODE_BITSIZE (mode)); ++ #endif ++ + if (op1 == const0_rtx) + return shifted; + +*************** +*** 1843,1852 **** + int cost_limit; + { + int m; +! struct algorithm *best_alg +! = (struct algorithm *)alloca (sizeof (struct algorithm)); +! struct algorithm *alg_in +! = (struct algorithm *)alloca (sizeof (struct algorithm)); + unsigned int cost; + unsigned HOST_WIDE_INT q; + +--- 1871,1877 ---- + int cost_limit; + { + int m; +! struct algorithm *alg_in, *best_alg; + unsigned int cost; + unsigned HOST_WIDE_INT q; + +*************** +*** 1881,1886 **** +--- 1906,1916 ---- + } + } + ++ /* We'll be needing a couple extra algorithm structures now. */ ++ ++ alg_in = (struct algorithm *)alloca (sizeof (struct algorithm)); ++ best_alg = (struct algorithm *)alloca (sizeof (struct algorithm)); ++ + /* If we have a group of zero bits at the low-order part of T, try + multiplying by the remaining bits and then doing a shift. */ + +*************** +*** 2043,2058 **** + } + } + +- /* If we are getting a too long sequence for `struct algorithm' +- to record, make this search fail. */ +- if (best_alg->ops == MAX_BITS_PER_WORD) +- return; +- + /* If cost_limit has not decreased since we stored it in alg_out->cost, + we have not found any algorithm. */ + if (cost_limit == alg_out->cost) + return; + + /* Copy the algorithm from temporary space to the space at alg_out. + We avoid using structure assignment because the majority of + best_alg is normally undefined, and this is a critical function. */ +--- 2073,2088 ---- + } + } + + /* If cost_limit has not decreased since we stored it in alg_out->cost, + we have not found any algorithm. */ + if (cost_limit == alg_out->cost) + return; + ++ /* If we are getting a too long sequence for `struct algorithm' ++ to record, make this search fail. */ ++ if (best_alg->ops == MAX_BITS_PER_WORD) ++ return; ++ + /* Copy the algorithm from temporary space to the space at alg_out. + We avoid using structure assignment because the majority of + best_alg is normally undefined, and this is a critical function. */ +*************** +*** 2153,2161 **** + for (opno = 1; opno < alg.ops; opno++) + { + int log = alg.log[opno]; +! rtx shift_subtarget = preserve_subexpressions_p () ? 0 : accum; + rtx add_target = opno == alg.ops - 1 && target != 0 ? target : 0; +! + switch (alg.op[opno]) + { + case alg_shift: +--- 2183,2193 ---- + for (opno = 1; opno < alg.ops; opno++) + { + int log = alg.log[opno]; +! int preserve = preserve_subexpressions_p (); +! rtx shift_subtarget = preserve ? 0 : accum; + rtx add_target = opno == alg.ops - 1 && target != 0 ? target : 0; +! rtx accum_target = preserve ? 0 : accum; +! + switch (alg.op[opno]) + { + case alg_shift: +*************** +*** 2168,2174 **** + tem = expand_shift (LSHIFT_EXPR, mode, op0, + build_int_2 (log, 0), NULL_RTX, 0); + accum = force_operand (gen_rtx (PLUS, mode, accum, tem), +! add_target ? add_target : accum); + val_so_far += (HOST_WIDE_INT) 1 << log; + break; + +--- 2200,2206 ---- + tem = expand_shift (LSHIFT_EXPR, mode, op0, + build_int_2 (log, 0), NULL_RTX, 0); + accum = force_operand (gen_rtx (PLUS, mode, accum, tem), +! add_target ? add_target : accum_target); + val_so_far += (HOST_WIDE_INT) 1 << log; + break; + +*************** +*** 2176,2198 **** + tem = expand_shift (LSHIFT_EXPR, mode, op0, + build_int_2 (log, 0), NULL_RTX, 0); + accum = force_operand (gen_rtx (MINUS, mode, accum, tem), +! add_target ? add_target : accum); + val_so_far -= (HOST_WIDE_INT) 1 << log; + break; + + case alg_add_t2_m: + accum = expand_shift (LSHIFT_EXPR, mode, accum, +! build_int_2 (log, 0), accum, 0); + accum = force_operand (gen_rtx (PLUS, mode, accum, op0), +! add_target ? add_target : accum); + val_so_far = (val_so_far << log) + 1; + break; + + case alg_sub_t2_m: + accum = expand_shift (LSHIFT_EXPR, mode, accum, +! build_int_2 (log, 0), accum, 0); + accum = force_operand (gen_rtx (MINUS, mode, accum, op0), +! add_target ? add_target : accum); + val_so_far = (val_so_far << log) - 1; + break; + +--- 2208,2232 ---- + tem = expand_shift (LSHIFT_EXPR, mode, op0, + build_int_2 (log, 0), NULL_RTX, 0); + accum = force_operand (gen_rtx (MINUS, mode, accum, tem), +! add_target ? add_target : accum_target); + val_so_far -= (HOST_WIDE_INT) 1 << log; + break; + + case alg_add_t2_m: + accum = expand_shift (LSHIFT_EXPR, mode, accum, +! build_int_2 (log, 0), shift_subtarget, +! 0); + accum = force_operand (gen_rtx (PLUS, mode, accum, op0), +! add_target ? add_target : accum_target); + val_so_far = (val_so_far << log) + 1; + break; + + case alg_sub_t2_m: + accum = expand_shift (LSHIFT_EXPR, mode, accum, +! build_int_2 (log, 0), shift_subtarget, +! 0); + accum = force_operand (gen_rtx (MINUS, mode, accum, op0), +! add_target ? add_target : accum_target); + val_so_far = (val_so_far << log) - 1; + break; + +*************** +*** 2200,2206 **** + tem = expand_shift (LSHIFT_EXPR, mode, accum, + build_int_2 (log, 0), NULL_RTX, 0); + accum = force_operand (gen_rtx (PLUS, mode, accum, tem), +! add_target ? add_target : accum); + val_so_far += val_so_far << log; + break; + +--- 2234,2240 ---- + tem = expand_shift (LSHIFT_EXPR, mode, accum, + build_int_2 (log, 0), NULL_RTX, 0); + accum = force_operand (gen_rtx (PLUS, mode, accum, tem), +! add_target ? add_target : accum_target); + val_so_far += val_so_far << log; + break; + +*************** +*** 2208,2214 **** + tem = expand_shift (LSHIFT_EXPR, mode, accum, + build_int_2 (log, 0), NULL_RTX, 0); + accum = force_operand (gen_rtx (MINUS, mode, tem, accum), +! add_target ? add_target : tem); + val_so_far = (val_so_far << log) - val_so_far; + break; + +--- 2242,2249 ---- + tem = expand_shift (LSHIFT_EXPR, mode, accum, + build_int_2 (log, 0), NULL_RTX, 0); + accum = force_operand (gen_rtx (MINUS, mode, tem, accum), +! (add_target ? add_target +! : preserve ? 0 : tem)); + val_so_far = (val_so_far << log) - val_so_far; + break; + +*************** +*** 3196,3198 **** +--- 3231,3234 ---- + + return tem; + } ++ +diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/gcc.c gcc-2.5.8/gcc.c +*** gcc-2.5.8.gnu/gcc.c Thu Dec 23 23:49:43 1993 +--- gcc-2.5.8/gcc.c Sun Feb 27 00:41:06 1994 +*************** +*** 586,591 **** +--- 586,594 ---- + "%{!S:%{!gnatc:%{!gnats:as %{R} %{j} %{J} %{h} %{d2} %a %Y\ + %{c:%W{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%u.o}\ + %{!pipe:%g.s} %A\n}}} "}, ++ #ifdef CUSTOM_DEFAULT_COMPILERS ++ CUSTOM_DEFAULT_COMPILERS ++ #endif /* CUSTOM_DEFAULT_COMPILERS */ + /* Mark end of table */ + {0, 0} + }; +*************** +*** 608,614 **** + static char *link_command_spec = "\ + %{!fsyntax-only: \ + %{!c:%{!M:%{!MM:%{!E:%{!S:ld %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} \ +! %{r} %{s} %{t} %{u*} %{x} %{z}\ + %{!A:%{!nostartfiles:%{!nostdlib:%S}}} %{static:}\ + %{L*} %D %{T*} %o %{!nostdlib:libgcc.a%s %L libgcc.a%s %{!A:%E}}\n }}}}}}"; + #else +--- 611,617 ---- + static char *link_command_spec = "\ + %{!fsyntax-only: \ + %{!c:%{!M:%{!MM:%{!E:%{!S:ld %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} \ +! %{r} %{s} %{t} %{u*} %{x} %{z} %{Z}\ + %{!A:%{!nostartfiles:%{!nostdlib:%S}}} %{static:}\ + %{L*} %D %{T*} %o %{!nostdlib:libgcc.a%s %L libgcc.a%s %{!A:%E}}\n }}}}}}"; + #else +*************** +*** 617,623 **** + static char *link_command_spec = "\ + %{!fsyntax-only: \ + %{!c:%{!M:%{!MM:%{!E:%{!S:ld %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} \ +! %{r} %{s} %{t} %{u*} %{x} %{z}\ + %{!A:%{!nostartfiles:%{!nostdlib:%S}}} %{static:}\ + %{L*} %{T*} %o %{!nostdlib:libgcc.a%s %L libgcc.a%s %{!A:%E}}\n }}}}}}"; + #else +--- 620,626 ---- + static char *link_command_spec = "\ + %{!fsyntax-only: \ + %{!c:%{!M:%{!MM:%{!E:%{!S:ld %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} \ +! %{r} %{s} %{t} %{u*} %{x} %{z} %{Z}\ + %{!A:%{!nostartfiles:%{!nostdlib:%S}}} %{static:}\ + %{L*} %{T*} %o %{!nostdlib:libgcc.a%s %L libgcc.a%s %{!A:%E}}\n }}}}}}"; + #else +*************** +*** 625,631 **** + static char *link_command_spec = "\ + %{!fsyntax-only: \ + %{!c:%{!M:%{!MM:%{!E:%{!S:ld %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} \ +! %{r} %{s} %{t} %{u*} %{x} %{z}\ + %{!A:%{!nostartfiles:%{!nostdlib:%S}}} %{static:}\ + %{L*} %D %{T*} %o %{!nostdlib:-lgcc %L -lgcc %{!A:%E}}\n }}}}}}"; + #endif +--- 628,634 ---- + static char *link_command_spec = "\ + %{!fsyntax-only: \ + %{!c:%{!M:%{!MM:%{!E:%{!S:ld %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} \ +! %{r} %{s} %{t} %{u*} %{x} %{z} %{Z}\ + %{!A:%{!nostartfiles:%{!nostdlib:%S}}} %{static:}\ + %{L*} %D %{T*} %o %{!nostdlib:-lgcc %L -lgcc %{!A:%E}}\n }}}}}}"; + #endif +*************** +*** 3202,3224 **** + { + if (! strncmp (y, "-D", 2)) + { +! *x++ = *y++; +! *x++ = *y++; + + if (strncmp (y, "__", 2)) + { + /* Stick __ at front of macro name. */ + *x++ = '_'; + *x++ = '_'; +- } +- +- /* Copy the macro name. */ +- while (*y && *y != '=' && *y != ' ' && *y != '\t') +- *x++ = *y++; + +! /* Copy the value given, if any. */ +! while (*y && *y != ' ' && *y != '\t') +! *x++ = *y++; + } + else if (*y == ' ' || *y == '\t') + /* Copy whitespace to the result. */ +--- 3205,3235 ---- + { + if (! strncmp (y, "-D", 2)) + { +! y++; +! y++; + + if (strncmp (y, "__", 2)) + { ++ *x++ = '-'; ++ *x++ = 'D'; + /* Stick __ at front of macro name. */ + *x++ = '_'; + *x++ = '_'; + +! /* Copy the macro name. */ +! while (*y && *y != '=' && *y != ' ' && *y != '\t') +! *x++ = *y++; +! +! /* Copy the value given, if any. */ +! while (*y && *y != ' ' && *y != '\t') +! *x++ = *y++; +! } +! else +! { +! /* Skip this one, we have done it once already */ +! while (*y && *y != ' ' && *y != '\t') +! y++; +! } + } + else if (*y == ' ' || *y == '\t') + /* Copy whitespace to the result. */ +diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/gstdarg.h gcc-2.5.8/gstdarg.h +*** gcc-2.5.8.gnu/gstdarg.h Sat Nov 13 02:53:58 1993 +--- gcc-2.5.8/gstdarg.h Sun Feb 27 00:41:06 1994 +*************** +*** 136,148 **** + But on BSD NET2 we must not test or define or undef it. + (Note that the comments in NET 2's ansi.h + are incorrect for _VA_LIST_--see stdio.h!) */ +! #if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) + /* The macro _VA_LIST is used in SCO Unix 3.2. */ + #ifndef _VA_LIST + /* The macro _VA_LIST_T_H is used in the Bull dpx2 */ + #ifndef _VA_LIST_T_H + #define _VA_LIST_T_H +! #if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__)) + #define _VA_LIST_ + #endif + #define _VA_LIST +--- 136,148 ---- + But on BSD NET2 we must not test or define or undef it. + (Note that the comments in NET 2's ansi.h + are incorrect for _VA_LIST_--see stdio.h!) */ +! #if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__FreeBSD__) + /* The macro _VA_LIST is used in SCO Unix 3.2. */ + #ifndef _VA_LIST + /* The macro _VA_LIST_T_H is used in the Bull dpx2 */ + #ifndef _VA_LIST_T_H + #define _VA_LIST_T_H +! #if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__FreeBSD__)) + #define _VA_LIST_ + #endif + #define _VA_LIST +diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/gstddef.h gcc-2.5.8/gstddef.h +*** gcc-2.5.8.gnu/gstddef.h Fri Dec 3 12:46:59 1993 +--- gcc-2.5.8/gstddef.h Sun Feb 27 00:41:07 1994 +*************** +*** 22,28 **** + + /* On 4.3bsd-net2, make sure ansi.h is included, so we have + one less case to deal with in the following. */ +! #if defined (__BSD_NET2__) || defined (____386BSD____) + #include <machine/ansi.h> + #endif + +--- 22,28 ---- + + /* On 4.3bsd-net2, make sure ansi.h is included, so we have + one less case to deal with in the following. */ +! #if defined (__BSD_NET2__) || defined (____386BSD____) || defined (__FreeBSD__) + #include <machine/ansi.h> + #endif + +diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/gvarargs.h gcc-2.5.8/gvarargs.h +*** gcc-2.5.8.gnu/gvarargs.h Sat Nov 13 09:33:23 1993 +--- gcc-2.5.8/gvarargs.h Sun Feb 27 00:41:07 1994 +*************** +*** 150,162 **** + /* Michael Eriksson <mer@sics.se> at Thu Sep 30 11:00:57 1993: + Sequent defines _VA_LIST_ in <machine/machtypes.h> to be the type to + use for va_list (``typedef _VA_LIST_ va_list'') */ +! #if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) + /* The macro _VA_LIST is used in SCO Unix 3.2. */ + #ifndef _VA_LIST + /* The macro _VA_LIST_T_H is used in the Bull dpx2 */ + #ifndef _VA_LIST_T_H + #define _VA_LIST_T_H +! #if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__)) + #define _VA_LIST_ + #endif + #define _VA_LIST +--- 150,162 ---- + /* Michael Eriksson <mer@sics.se> at Thu Sep 30 11:00:57 1993: + Sequent defines _VA_LIST_ in <machine/machtypes.h> to be the type to + use for va_list (``typedef _VA_LIST_ va_list'') */ +! #if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__) + /* The macro _VA_LIST is used in SCO Unix 3.2. */ + #ifndef _VA_LIST + /* The macro _VA_LIST_T_H is used in the Bull dpx2 */ + #ifndef _VA_LIST_T_H + #define _VA_LIST_T_H +! #if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__)) + #define _VA_LIST_ + #endif + #define _VA_LIST +diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/invoke.texi gcc-2.5.8/invoke.texi +*** gcc-2.5.8.gnu/invoke.texi Thu Nov 11 14:31:43 1993 +--- gcc-2.5.8/invoke.texi Sun Feb 27 00:41:10 1994 +*************** +*** 252,258 **** + + @emph{i386 Options} + -m486 -mno-486 -msoft-float -msvr3-shlib -mieee-fp +! -mno-fp-ret-in-387 + + @emph{HPPA Options} + -mpa-risc-1-0 +--- 252,258 ---- + + @emph{i386 Options} + -m486 -mno-486 -msoft-float -msvr3-shlib -mieee-fp +! -mno-fp-ret-in-387 -mno-fancy-math-387 + + @emph{HPPA Options} + -mpa-risc-1-0 +*************** +*** 3090,3095 **** +--- 3090,3103 ---- + + The option @samp{-mno-fp-ret-in-387} causes such values to be returned + in ordinary CPU registers instead. ++ ++ @item -mno-fancy-math-387 ++ Do not generate sin, cos and sqrt instructions to the 387. ++ ++ Some 387-emulators are less complete than one would expect, and usually ++ the hard parts are missing, this option fixes one such case for the ++ FreeBSD OS, where this option is set as default. ++ + @c FIXME!! What about these options listed in @node Option Summary ?? + @c -msvr3-shlib -mieee-fp + @end table +diff -C3 -r --unidirectional-new-file gcc-2.5.8.gnu/objc/objects.c gcc-2.5.8/objc/objects.c +*** gcc-2.5.8.gnu/objc/objects.c Thu Nov 18 09:07:33 1993 +--- gcc-2.5.8/objc/objects.c Sun Feb 27 00:41:11 1994 +*************** +*** 24,30 **** + however invalidate any other reasons why the executable file might be + covered by the GNU General Public License. */ + +! #include "../tconfig.h" /* include defs of bzero for target */ + #include "runtime.h" /* the kitchen sink */ + + id __objc_object_alloc(Class*); +--- 24,30 ---- + however invalidate any other reasons why the executable file might be + covered by the GNU General Public License. */ + +! #include "tconfig.h" /* include defs of bzero for target */ + #include "runtime.h" /* the kitchen sink */ + + id __objc_object_alloc(Class*); |
