Changes for GCC version 2.5.2 from version 2.5.0.

Changes in files you can reconstruct with Bison, etags, makeinfo, and
TeX have been omitted.  Some of these files are updated just by
building the compiler.  You can update rest of these files by
executing this command

   make TAGS info dvi -f Makefile.in

in the directory of GCC sources, provided the necessary tools
(etags, makeinfo, TeX and texi2dvi) are installed.

Before applying these diffs, go to the directory gcc-2.5.0 and execute
the following commands:

    mv patch-header.c fix-header.c

Then use the command

    patch -p1

feeding it the following diffs as input.
Then rename the directory to gcc-2.5.2.


diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/ChangeLog gcc-2.5.2/ChangeLog
*** gcc-2.5.0/ChangeLog	Fri Oct 22 01:20:41 1993
--- gcc-2.5.2/ChangeLog	Mon Nov  1 01:06:55 1993
***************
*** 1,3 ****
--- 1,361 ----
+ Mon Nov  1 01:06:27 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+ 
+ 	* Version 2.5.2 released.
+ 
+ 	* cccp.c (do_ident): Fix previous change.
+ 
+ Sun Oct 31 14:41:40 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+ 
+ 	* Version 2.5.1 released.
+ 
+ 	* cccp.c (do_ident): Substitute macros and output here.
+ 	(directive_table): Turn off the pass_thru field for #ident.
+ 
+ 	* c-common.c (shorten_compare): Undo previous change.
+ 	Instead, just suppress warnings if both args are constant.
+ 
+ 	* config/m68k/m68k.md (extzv, and its recognizer):
+ 	If width is 32, don't set CC_NOT_NEGATIVE.
+ 	If width is variable, clear the CC status.
+ 
+ 	* config/m68k/m68k.c (output_move_double): Extend the special case
+ 	for *--sp = sp[N] to handle 12 bytes as well as 8 bytes.
+ 
+ Sun Oct 31 17:02:13 1993  Jason Merrill  (jason@deneb.cygnus.com)
+ 
+ 	* cp-init.c (expand_aggr_init_1): When unswitching a COND_EXPR
+ 	initializer (i.e. int a = b ? 1 : 0 => int a; b ? a=1 : a=0),
+ 	set TREE_SIDE_EFFECTS on the result.
+ 
+ Sun Oct 31 13:33:46 1993  Jim Wilson  (wilson@cygnus.com)
+ 
+ 	* expr.c (do_store_flag): For equality test of a single bit, use
+ 	subtarget instead of target in calls.
+ 
+ Sat Oct 30 17:58:37 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+ 
+ 	* config/m68k/hpux7.h: New file.
+ 	* configure (m68k-hp-hpux7*): New alternative.
+ 
+ 	* c-common.c (shorten_compare): Do nothing if both args constant.
+ 
+ 	* config.sub: Re-add hitachi to list of companies not to treat
+ 	as OS names.
+ 
+ 	* expr.c (convert_move): When extending to multi-word register
+ 	via its low word, clobber the whole thing.
+ 
+ 	* config/i386/i386.c (output_move_double): Extend the special case
+ 	for *--sp = sp[N] to handle 12 bytes as well as 8 bytes.
+ 
+ Sat Oct 30 17:21:33 1993  Atsushi Furuta  (furuta@sra.co.jp)
+ 
+ 	* pa-ghiux.h, pa-hiux.h, pa1-ghiux.h: New files, for Hitachi H3050/RX.
+ 	* pa1-hiux.h, x-pa-hiux, xm-pahiux.h: Likewise.
+ 	* config.sub, configure: Add H3050/RX support.
+ 
+ Sat Oct 30 03:40:08 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+ 
+ 	* config/pa/pa.c (output_dbra): Fix argument number in addi at end.
+ 
+ 	* tree.h (enum built_in_function):  Added END_BUILTINS to delimit
+ 	standard from language-specific builtins.
+ 
+ 	* toplev.c (rest_of_compilation): When an `extern inline' is not
+ 	really inline, clear DECL_INITIAL so we don't complain about
+ 	a subsequent non-extern definition.
+ 	* c-decl.c (finish_function): If rest_of_compilation set DECL_INITIAL
+ 	to null, leave it null.
+ 
+ 	* c-common.c (convert_and_check): Don't warn converting 0xff
+ 	to a signed char, etc., unless pedantic.
+ 
+ 	* Makefile.in (mainversion): New variable.
+ 	(distdir): Use mainversion when verifying gcc.texi has been updated.
+ 
+ Sat Oct 30 03:12:54 1993  Torbjorn Granlund  (tege@cygnus.com)
+ 
+ 	* m68k.md (mulsidi3 patterns): Fix typo, LSHIFTRT was ASHIFT.
+ 
+ Fri Oct 29 12:06:09 1993  Ian Lance Taylor  (ian@cygnus.com)
+ 
+ 	* fixinc.svr4 (sys/stat.h): Don't change definitions into
+ 	prototypes if they may already be in prototype form.
+ 
+ Fri Oct 29 16:50:33 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+ 
+ 	* config/i386/linux.h (LIB_SPEC): Use -lieee if -mieee-fp.
+ 
+ Fri Oct 29 13:04:16 1993  Arne H. Juul  (arnej@fm.unit.no)
+ 
+ 	* mips/iris5.h (LINK_SPEC): Pass -no_unresolved if -call_shared.
+ 
+ Fri Oct 29 12:52:54 1993  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
+ 
+ 	* rs6000.md (addsf3, subsf3, mulsf3, divsf3): Put POWERPC first,
+ 	then POWER.
+ 
+ 	* mips/iris5.h ({DBX,SDB,MIPS}_DEBUGGING_INFO): Turn off until working.
+ 
+ Fri Oct 29 12:15:12 1993  Minh Tran-Le  (tranle@intellicorp.com)
+ 
+ 	* i386/xm-aix.h: Define HAVE_PUTENV for AIX PS/2.
+ 
+ Fri Oct 29 11:49:46 1993  DJ Delorie (dj@ctron.com)
+ 
+ 	* i386/go32.h: Add support for coff-based ctor/dtor handling. 
+ 
+ Thu Oct 28 21:33:22 1993  Kresten Krab Thorup  (krab@next.com)
+ 
+ 	* objc-act.c (check_methods_accessible): Fix bug in
+ 	-Wno-protocol.  Reset chain to bottom class for each search. 
+ 
+ Thu Oct 28 21:30:38 1993  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
+ 
+ 	* c-parse.in (init): Remove extraneous pop_momentary in error case.
+ 
+ Thu Oct 28 19:01:33 1993  Ron Guilmette  (rfg@netcom.com)
+ 
+ 	* cp-method.c (hack_identifier): If an overloaded identifier
+ 	can only mean one thing, it can only mean one thing.
+ 
+ Thu Oct 28 18:52:15 1993  John F Carr  (jfc@mit.edu)
+ 
+ 	* cp-typeck.c (get_member_function_from_ptrfunc):  Convert delta
+ 	to size_t before adding to pointer.
+ 
+ Thu Oct 28 18:43:41 1993  Richard Earnshaw (rwe11@cl.cam.ac.uk)
+ 
+ 	* arm.h (ENCODE_SECTION_INFO): Use DECL_RTL for DECLs.
+ 
+ Wed Oct 27 20:58:31 1993  Torbjorn Granlund  (tege@adder.cygnus.com)
+ 
+ 	* pa.c (emit_move_sequence): Fix typo, `Pmode' was `mode'.
+ 
+ Wed Oct 27 00:01:06 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+ 
+ 	* cse.c (cse_insn): When using src_related, copy the rtx.
+ 	Likewise for src_eqv_here.
+ 
+ 	* c-typeck.c (output_pending_init_elements): Don't crash if
+ 	constructor_unfilled_fields is 0.
+ 
+ 	* fixincludes (bsd/sys/wait.h): Undo previous change.
+ 
+ 	* config/m68k/xm-amix.h (abort): Don't use fancy_abort.
+ 	(alloca): In GCC 1, define as __builtin_alloca.
+ 
+ 	* config/m68k/amix.h (ASM_GENERATE_INTERNAL_LABEL)
+ 	(ASM_OUTPUT_INTERNAL_LABEL): #if 0 deleted, to reenable these.
+ 	(NO_DOT_IN_LABEL): Defined.
+ 	(NO_DOLLAR_IN_LABEL): Undefined.
+ 
+ 	* function.c (assign_parms): If parmreg is a CONCAT, handle the
+ 	case where stack_parm is 0.
+ 
+ 	* expr.c (do_jump): Use do_jump_by_parts_equality for complex compares.
+ 
+ 	* c-typeck.c (build_c_cast): When making union constructor,
+ 	copy TREE_CONSTANT from the given value.
+ 	(initializer_constant_valid_p): Special handling for "constant"
+ 	union constructor.
+ 
+ 	* bytecode.def: Rename dup to duplicate.
+ 	* expr.c (expand_assignment): Use duplicate.
+ 	(bc_expand_expr): Likewise.
+ 	(bc_expand_constructor): Likewise.
+ 
+ 	* print-tree.c (print_node_brief): Use unsigned char to print
+ 	the bytes of a real constant.
+ 
+ 	* expmed.c (store_bit_field): When calling operand_subword_force,
+ 	if VALUE has a non-void mode, pass that mode.
+ 
+ 	* config/m68k/amix.h (NO_DOLLAR_IN_LABEL): Defined.
+ 
+ Tue Oct 26 19:05:36 1993  John F Carr  (jfc@mit.edu)
+ 
+ 	* rs6000.c (rs6000_override_options): Support -mcpu=rsc1.
+ 
+ Tue Oct 26 19:01:08 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+ 
+ 	* Makefile.in (deduced.h): Add -I. and -I$(srcdir).
+ 
+ 	* scan-types.sh (CC): Move a " to avoid shell error.
+ 
+ 	* config.sub (paragon): New alias.
+ 	* configure (i860-*-osf*): New alternative.
+ 	* gstdarg.h, gvarargs.h [__i860__]: Add to little-endian list.
+ 	* libgcc2.c (___builtin_saveregs): New alternative for __PARAGON__.
+ 	* va-i860.h: Treat __PARAGON__ like __SVR4__.
+ 	(va_dcl) [__PARAGON__]: Declare va_alist.
+ 	* paragon.h, xm-paragon.h: New files.
+ 
+ Tue Oct 26 18:58:49 1993  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
+ 
+ 	* fix-header.c: Delete duplicate definition of "buf".
+ 	* fix-header.c, gen-protos.c, scan-decls.c, scan.c: Include hconfig.h.
+ 	* scan-decls.c: Remove unused #ifdef OLD.
+ 
+ 	* Makefile.in (gen-protos.o, scan.o, fix-header.o, scan-decls.o):
+ 	Add rule to compile using $(HOST_CC).
+ 	Show using hconfig.h.
+ 
+ 	* rs6000.md (movsi): Can copy a TOC address into a register.
+ 
+ Tue Oct 26 15:03:07 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+ 
+ 	* gcc.c (default_compilers): Define __GNUC_MINOR__, using %v.
+ 	(do_spec_1): Implement %v.
+ 
+ Tue Oct 26 11:06:59 1993  Mike Stump  (mrs@cygnus.com)
+ 
+ 	* cp-lex.c (consume_string): Handle "\"" and '\''.
+ 
+ Tue Oct 26 13:44:17 1993  Jim Wilson  (wilson@sphagnum.cygnus.com)
+ 
+ 	* Makefile.in (fix-header.o): Depend on fix-header.c.
+ 	(scan-decls.o): New target.
+ 	(gen-protos.o, scan.o): New targets.
+ 
+ 	* Makefile.in (gen-protos, fix_header): Add $(HOST_CFLAGS) and
+ 	$(HOST_LDFLAGS).
+ 
+ 	* x-sysv (OLDCC): Add -XNh1500.
+ 	* x-mips: Likewise.
+ 
+ Tue Oct 26 12:21:06 1993  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
+ 
+ 	* fixincludes: Fix NeXT <sys/wait.h> problem in <bsd/sys/wait.h>
+ 	as well, since that is where the file is in NeXTStep 3.0.
+ 
+ Tue Oct 26 07:23:08 1993  Torbjorn Granlund  (tege@adder.cygnus.com)
+ 
+ 	* expmed.c (init_expmed): Use register 10000, not FIRST_PSEUDO_REGISTER
+ 	that gets special treatment in rtx_cost.
+ 	(expand_mult): Decrease max cost to 8.
+ 
+ 	* c-typeck.c (build_binary_op): For TRUNC_MOD_EXPR and FLOOR_MOD_EXPR,
+ 	set common.
+ 
+ Tue Oct 26 01:59:17 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+ 
+ 	* protoize.c [__NeXT__]: Don't declare setjmp or longjmp.
+ 
+ 	* configure: Ignore --verbose option if specified.
+ 
+ 	* expr.c (emit_move_insn_1): Don't call group_insns
+ 	when X is a CONCAT.
+ 	(emit_move_insn_1, case CONJ_EXPR and COMPLEX_EXPR): Likewise.
+ 
+ 	* fixproto (signal.h): Add prototypes only for kill and raise.
+ 	Not for the POSIX signal functions.
+ 	(sys/resource.h): Delete special handling for this file.
+ 
+ 	* c-typeck.c (push_init_level): Align here for element of record.
+ 	(process_init_element): Not here (was before call to push_init_level).
+ 
+ 	* scan-types.sh: Expect GCC source dir as argument.
+ 	In dummy.c, use gstddef.h and gstdarg.h, not stddef.h and stdarg.h.
+ 	* Makefile.in (deduced.h): Pass GCC source dir to scan-types.sh.
+ 
+ Mon Oct 25 23:23:26 1993  Torbjorn Granlund  (tege@blues.cygnus.com)
+ 
+ 	* c-typeck.c (build_binary_op): For TRUNC_MOD_EXPR and FLOOR_MOD_EXPR,
+ 	don't shorten when divisor might be -1.
+ 
+ Mon Oct 25 23:45:20 1993 Minh Tran-Le (tranle@intellicorp.com)
+ 
+ 	* seq-sysv3.h (CPP_SPEC): Define _SEQUENT_ to be compatible with cc.
+ 	(INVOKE__main): Defined.
+ 	(HAVE_ATEXIT): Defined.
+ 
+ 	* configure (i[34]86-sequent-sysv): Use fixinc.srv4 and define
+ 	broken_install.
+ 
+ Mon Oct 25 18:53:51 1993  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
+ 
+ 	* expr.c (expand_expr, case PLACEHOLDER_EXPR): Fix typos.
+ 
+ Mon Oct 25 16:25:58 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+ 
+ 	* scan.c (scan_string, skip_spaces): Add newline before fn name.
+ 
+ 	* scan-decls.c (scan_decls): When reading parameter list,
+ 	handle whitespace differently, and keep track of line number.
+ 
+ 	* config/i386/x-linux (STMP_FIXPROTO): Define as empty.
+ 
+ Mon Oct 25 13:22:37 1993  Kaveh R. Ghazi  (ghazi@caip.rutgers.edu)
+ 
+ 	* fixincludes: Fix bad S_IS* macros in <sys/stat.h> on m88k-sysv3.
+ 
+ Mon Oct 25 22:34:12 BST 1993	Richard Earnshaw (rwe11@cl.cam.ac.uk)
+ 
+ 	* fixincludes: Remove nested brackets in change of Oct 21.
+ 	Fix token pasting operator in ARM/RISCiX include files.
+ 
+ Mon Oct 25 13:01:52 1993  Jim Wilson  (wilson@sphagnum.cygnus.com)
+ 
+ 	* sparc.h (LONG_DOUBLE_TYPE_SIZE): Don't define here.
+ 	* sol2.h (LONG_DOUBLE_TYPE_SIZE): Do define here.
+ 
+ 	* configure (mips-sgi-irix5): Don't use collect.
+ 
+ Sun Oct 24 14:15:12 1993  Jim Wilson  (wilson@sphagnum.cygnus.com)
+ 
+ 	* libgcc2.c (L_bb): Undef NULL before including <stdio.h>.
+ 
+ Sun Oct 24 03:04:53 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+ 
+ 	* Makefile.in (g++.o): New target.
+ 
+ 	* varasm.c (assemble_variable): Set last_assemble_variable_decl.
+ 	(last_assemble_variable_decl): New variable.
+ 	* toplev.c (rest_of_decl_compilation): Test that var.
+ 
+ Sat Oct 23 20:28:13 1993  Jim Wilson  (wilson@mole.gnu.ai.mit.edu)
+ 
+ 	* configure (mips-sgi-irix5): Uncomment.
+ 	* iris5.h: Replace with working version.
+ 	* xm-iris5.h: New file.
+ 
+ 	* mips.c (mips_abicalls): New variable.
+ 	(override_options): Set mips_abicalls.  Allow '^' as print operand
+ 	punctuation character.
+ 	(print_operand): Add support for '^'.
+ 	(mips_asm_file_start): Use ABICALLS_ASM_OP instead of ".abicalls".
+ 	(compute_frame_size): Handle TARGET_ABICALLS case.
+ 	(mips_expand_prologue): Likewise.
+ 	* mips.h (mips_abicalls): Declare new variable.
+ 	(PIC_FUNCTION_ADDR_REGNUM): New macro.
+ 	(STARTING_FRAME_OFFSET): Handle TARGET_ABICALLS case.
+ 	* mips.md (abicalls): New attribute.
+ 	(define_delay): Don't fill call delay slots when TARGET_ABICALLS.
+ 	(call_internal3, call_value_internal3): Renamed from
+ 	call_internal2 and call_value_internal2.
+ 	(call_internal2, call_value_internal2): New call patterns for
+ 	TARGET_ABICALL case.
+ 	(call_internal4, call_value_internal4): Likewise.
+ 
+ Sat Oct 23 00:06:14 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+ 
+ 	* Makefile.in (deduced.h): Depend on GCC_PASSES and stmp-int-hdrs.
+ 	(xsys-protos.h): Depend on GCC_PASSES.
+ 	(fixhdr.ready): New target.
+ 	(stmp-fixproto): Depend on fixhdr.ready, not fix-header itself.
+ 	(clean): Delete fixhdr.ready.
+ 
  Fri Oct 22 01:20:29 1993  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
+ 
+ 	* fix-header.c: Renamed from patch-header.c.
+ 	(progname): Change name.
+ 	* fixproto: Use fix-header.
+ 	* Makefile.in (fix-header, fix-header.o): Renamed from patch-header*.
+ 	(stmp-fixproto, mostlyclean): Rename references to them.
+ 
+ 	* expr.c (store_field): In BLKmode case, return blk_object.
+ 
+ 	* config/m88k/m88k.h (ASM_FINISH_DECLARE_OBJECT): Undef, then define.
  
  	* Version 2.5.0 released.
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/INSTALL gcc-2.5.2/INSTALL
*** gcc-2.5.0/INSTALL	Thu Oct 21 22:34:07 1993
--- gcc-2.5.2/INSTALL	Sun Oct 31 19:39:09 1993
***************
*** 130,143 ****
            GAS is up to you.
  
            The systems where it makes a difference whether you use GAS
            are `hppa1.0-ANYTHING-ANYTHING', `hppa1.1-ANYTHING-ANYTHING',
!           `i386-ANYTHING-sysv', `i860-ANYTHING-bsd', `m68k-bull-sysv',
!           `m68k-hp-hpux', `m68k-sony-bsd', `m68k-altos-sysv',
!           `m68000-hp-hpux', `m68000-att-sysv', and `mips-ANY').  On any
!           other system, `--with-gnu-as' has no effect.
! 
!           On the systems listed above (except for the HP-PA), if you
!           use GAS, you should also use the GNU linker (and specify
!           `--with-gnu-ld').
  
      `--with-gnu-ld'
--- 130,152 ----
            GAS is up to you.
  
+           Conversely, if you *do not* do not wish to use GAS and do not
+           specify `--with-gnu-as' when building GNU CC, it is up to you
+           to make sure that GAS is not installed.  GNU CC searches for
+           a program named `as' in various directories; if the program
+           it finds is GAS, then it runs GAS.  If you are not sure where
+           GNU CC finds the assembler it is using, try specifying `-v'
+           when you run it.
+ 
            The systems where it makes a difference whether you use GAS
            are `hppa1.0-ANYTHING-ANYTHING', `hppa1.1-ANYTHING-ANYTHING',
!           `i386-ANYTHING-sysv', `i386-ANYTHING-isc',
!           `i860-ANYTHING-bsd', `m68k-bull-sysv', `m68k-hp-hpux',
!           `m68k-sony-bsd', `m68k-altos-sysv', `m68000-hp-hpux',
!           `m68000-att-sysv', and `mips-ANY').  On any other system,
!           `--with-gnu-as' has no effect.
! 
!           On the systems listed above (except for the HP-PA and for ISC
!           on the 386), if you use GAS, you should also use the GNU
!           linker (and specify `--with-gnu-ld').
  
      `--with-gnu-ld'
***************
*** 168,171 ****
--- 177,186 ----
            compilation.
  
+           `--with-stabs' is meaningful on the ISC system on the 386,
+           also, if `--with-gas' is used.  It selects use of stabs
+           debugging information embedded in COFF output.  This kind of
+           debugging information supports C++ well; ordinary COFF
+           debugging information does not.
+ 
      `--nfp'
            On certain systems, you must specify whether the machine has
***************
*** 495,498 ****
--- 510,516 ----
       conventions for where to put site-specific things.)
  
+      Unless you have a convention other than `/usr/local' for
+      site-specific files, it is a bad idea to specify `--local-prefix'.
+ 
    6. Make sure the Bison parser generator is installed.  (This is
       unnecessary if the Bison output files `c-parse.c' and `cexp.c' are
***************
*** 503,507 ****
       output for `c-parse.c'.
  
!   7. Build the compiler.  Just type `make LANGUAGES=c' in the compiler
       directory.
  
--- 521,532 ----
       output for `c-parse.c'.
  
!   7. If you have chosen a configuration for GNU CC which requires other
!      GNU tools (such as GAS or the GNU linker) instead of the standard
!      system tools, install the required tools in the build directory
!      under the names `as', `ld' or whatever is appropriate.  This will
!      enable the compiler to find the proper tools for compilation of
!      the program `enquire'.
! 
!   8. Build the compiler.  Just type `make LANGUAGES=c' in the compiler
       directory.
  
***************
*** 537,544 ****
       components have been built.
  
!   8. If you are building a cross-compiler, stop here.  *Note
       Cross-Compiler::.
  
!   9. Move the first-stage object files and executables into a
       subdirectory with this command:
  
--- 562,569 ----
       components have been built.
  
!   9. If you are building a cross-compiler, stop here.  *Note
       Cross-Compiler::.
  
!  10. Move the first-stage object files and executables into a
       subdirectory with this command:
  
***************
*** 549,553 ****
       `rm -r stage1'.
  
!  10. If you have chosen a configuration for GNU CC which requires other
       GNU tools (such as GAS or the GNU linker) instead of the standard
       system tools, install the required tools in the `stage1'
--- 574,578 ----
       `rm -r stage1'.
  
!  11. If you have chosen a configuration for GNU CC which requires other
       GNU tools (such as GAS or the GNU linker) instead of the standard
       system tools, install the required tools in the `stage1'
***************
*** 560,564 ****
       come before the standard system tools.
  
!  11. Recompile the compiler with itself, with this command:
  
            make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O"
--- 585,589 ----
       come before the standard system tools.
  
!  12. Recompile the compiler with itself, with this command:
  
            make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O"
***************
*** 587,591 ****
            make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O -msoft-float"
  
!  12. If you wish to test the compiler by compiling it with itself one
       more time, install any other necessary GNU tools (such as GAS or
       the GNU linker) in the `stage2' subdirectory as you did in the
--- 612,616 ----
            make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O -msoft-float"
  
!  13. If you wish to test the compiler by compiling it with itself one
       more time, install any other necessary GNU tools (such as GAS or
       the GNU linker) in the `stage2' subdirectory as you did in the
***************
*** 632,636 ****
       names to be used in both stages; then you can do the comparison.
  
!  13. Build the Objective C library (if you have built the Objective C
       compiler).  Here is the command to do this:
  
--- 657,661 ----
       names to be used in both stages; then you can do the comparison.
  
!  14. Build the Objective C library (if you have built the Objective C
       compiler).  Here is the command to do this:
  
***************
*** 637,641 ****
            make objc-runtime CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O"
  
!  14. Install the compiler driver, the compiler's passes and run-time
       support with `make install'.  Use the same value for `CC',
       `CFLAGS' and `LANGUAGES' that you used when compiling the files
--- 662,666 ----
            make objc-runtime CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O"
  
!  15. Install the compiler driver, the compiler's passes and run-time
       support with `make install'.  Use the same value for `CC',
       `CFLAGS' and `LANGUAGES' that you used when compiling the files
***************
*** 676,680 ****
       some other compiler.)
  
!  15. Install the Objective C library (if you are installing the
       Objective C compiler).  Here is the command to do this:
  
--- 701,705 ----
       some other compiler.)
  
!  16. Install the Objective C library (if you are installing the
       Objective C compiler).  Here is the command to do this:
  
***************
*** 681,685 ****
            make install-libobjc CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O"
  
!  16. If you're going to use C++, it's likely that you need to also
       install the libg++ distribution.  It should be available from the
       same place where you got the GNU C distribution.  Just as GNU C
--- 706,710 ----
            make install-libobjc CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O"
  
!  17. If you're going to use C++, it's likely that you need to also
       install the libg++ distribution.  It should be available from the
       same place where you got the GNU C distribution.  Just as GNU C
***************
*** 1073,1079 ****
  
     You can check the version of HP-UX you are running by executing the
! command `uname -r'.   If you are indeed running HP-UX 8.02 on a 1.1
! machine and using the HP assembler then configure GCC with
! "hp700-hpux8.02".
  
  Installing GNU CC on the Sun
--- 1098,1103 ----
  
     You can check the version of HP-UX you are running by executing the
! command `uname -r'.   If you are indeed running HP-UX 8.02 on a PA and
! using the HP assembler then configure GCC with "hpNNN-hpux8.02".
  
  Installing GNU CC on the Sun
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/Makefile.in gcc-2.5.2/Makefile.in
*** gcc-2.5.0/Makefile.in	Thu Oct 21 14:40:47 1993
--- gcc-2.5.2/Makefile.in	Sat Oct 30 03:40:55 1993
***************
*** 136,139 ****
--- 136,140 ----
  tmake_file= ... `configure' substitutes actual t- file name here.
  version=`sed -e 's/.*\"\([^ \"]*\)[ \"].*/\1/' < $(srcdir)/version.c`
+ mainversion=`sed -e 's/.*\"\([0-9]*\.[0-9]*\).*/\1/' < $(srcdir)/version.c`
  
  # Directory where sources are, from where we are.
***************
*** 506,509 ****
--- 507,513 ----
  
  # Define the names for selecting languages in LANGUAGES.
+ # Note that it would be nice to move the dependency on g++
+ # into the C++ rule, but that needs a little bit of work
+ # to do the right thing within all.cross.
  C c: cc1
  C++ c++: cc1plus
***************
*** 864,867 ****
--- 868,873 ----
  cp-errfn.o : cp-errfn.c $(CONFIG_H) $(CPLUS_TREE_H)
  
+ g++.o : g++.c $(CONFIG_H) gvarargs.h
+ 
  # To make a configuration always use collect2, set USE_COLLECT2 to ld.
  ld: collect2
***************
*** 1564,1577 ****
  # Files related to the fixproto script.
  
! deduced.h: $(srcdir)/scan-types.sh
! 	CC="$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) -Iinclude -I${SYSTEM_HEADER_DIR}"; \
  	  export CC; \
! 	  $(srcdir)/scan-types.sh >tmp-deduced.h
  	mv tmp-deduced.h deduced.h
  
  gen-protos: gen-protos.o scan.o
! 	${HOST_CC} -o gen-protos gen-protos.o scan.o
  
! xsys-protos.h: $(srcdir)/sys-protos.h deduced.h gen-protos Makefile
  	cat deduced.h $(srcdir)/sys-protos.h > fixtmp.c
  	$(GCC_FOR_TARGET) fixtmp.c -E \
--- 1570,1590 ----
  # Files related to the fixproto script.
  
! deduced.h: $(GCC_PASSES) $(srcdir)/scan-types.sh stmp-int-hdrs
! 	CC="$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) -I. -I$(srcdir) -Iinclude -I${SYSTEM_HEADER_DIR}"; \
  	  export CC; \
! 	  $(srcdir)/scan-types.sh "$(srcdir)" >tmp-deduced.h
  	mv tmp-deduced.h deduced.h
  
  gen-protos: gen-protos.o scan.o
! 	${HOST_CC} $(HOST_CFLAGS) $(HOST_LDFLAGS) -o gen-protos \
! 	  gen-protos.o scan.o
! 
! gen-protos.o: gen-protos.c scan.h hconfig.h
! 	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gen-protos.c
  
! scan.o: scan.c scan.h hconfig.h
! 	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/scan.c
! 
! xsys-protos.h: $(GCC_PASSES) $(srcdir)/sys-protos.h deduced.h gen-protos Makefile
  	cat deduced.h $(srcdir)/sys-protos.h > fixtmp.c
  	$(GCC_FOR_TARGET) fixtmp.c -E \
***************
*** 1580,1590 ****
  	rm -rf fixtmp.c
  
! patch-header: patch-header.o scan-decls.o scan.o xsys-protos.h $(HOST_OBSTACK)
! 	$(HOST_CC) -o patch-header patch-header.o scan-decls.o scan.o $(HOST_OBSTACK)
! 
! patch-header.o: xsys-protos.h
  
  # stmp-headers is to make sure fixincludes has already finished.
! stmp-fixproto: patch-header xsys-protos.h fixproto stmp-headers
  	CPP="$(GCC_FOR_TARGET) -E"; export CPP; \
  	  ${srcdir}/fixproto include include $(SYSTEM_HEADER_DIR)
--- 1593,1619 ----
  	rm -rf fixtmp.c
  
! fix-header: fix-header.o scan-decls.o scan.o xsys-protos.h $(HOST_OBSTACK)
! 	$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o fix-header \
! 	  fix-header.o scan-decls.o scan.o $(HOST_OBSTACK)
! 
! fix-header.o: fix-header.c obstack.h scan.h xsys-protos.h hconfig.h
! 	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/fix-header.c
! 
! scan-decls.o: scan-decls.c scan.h hconfig.h
! 	$(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/scan-decls.c
! 
! # stmp-fixproto depends on this, not on fix-header directly.
! # The idea is to make sure fix-header gets built,
! # but not rerun fixproto after each stage
! # just because fix-header's mtime has changed.
! fixhdr.ready: fix-header
! 	-if [ -f fixhdr.ready ] ; then \
! 		true; \
! 	else \
! 		touch fixhdr.ready; \
! 	fi
  
  # stmp-headers is to make sure fixincludes has already finished.
! stmp-fixproto: fixhdr.ready xsys-protos.h fixproto stmp-headers
  	CPP="$(GCC_FOR_TARGET) -E"; export CPP; \
  	  ${srcdir}/fixproto include include $(SYSTEM_HEADER_DIR)
***************
*** 1659,1663 ****
  	-rm -f collect collect2 ld mips-tfile mips-tdump alloca.s
  # Delete files generated for fixproto
! 	-rm -rf patch-header xsys-protos.h deduced.h tmp-deduced.h \
  	  gen-protos fixproto.list fixtmp.*
  # Delete unwanted output files from TeX.
--- 1688,1692 ----
  	-rm -f collect collect2 ld mips-tfile mips-tdump alloca.s
  # Delete files generated for fixproto
! 	-rm -rf fix-header xsys-protos.h deduced.h tmp-deduced.h \
  	  gen-protos fixproto.list fixtmp.*
  # Delete unwanted output files from TeX.
***************
*** 1682,1685 ****
--- 1711,1715 ----
  # Delete the include directory.
  	-rm -rf stmp-* fixinc.ready include objc-headers
+ 	-rm -rf fixhdr.ready
  
  # Delete all files that users would normally create
***************
*** 1981,1985 ****
  distdir: doc $(srcdir)/INSTALL c-parse.y objc-parse.y cp-parse.y \
    c-parse.c cp-parse.c objc-parse.c cexp.c
! 	if grep -s "for version ${version}" gcc.texi; \
  	then true; \
  	else echo "You must update the version number in \`gcc.texi'"; sleep 10;\
--- 2011,2015 ----
  distdir: doc $(srcdir)/INSTALL c-parse.y objc-parse.y cp-parse.y \
    c-parse.c cp-parse.c objc-parse.c cexp.c
! 	if grep -s "for version ${mainversion}" gcc.texi; \
  	then true; \
  	else echo "You must update the version number in \`gcc.texi'"; sleep 10;\
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/NEWS gcc-2.5.2/NEWS
*** gcc-2.5.0/NEWS	Thu Oct 21 21:46:51 1993
--- gcc-2.5.2/NEWS	Sun Oct 31 15:57:19 1993
***************
*** 6,18 ****
  then transfer them to MVS to assemble them.
  
! * The power pc is now supported.
  
! * Basic block profiling has been enhanced to record the function the basic
! block comes from, and if the module was compiled for debugging, the line number
! and filename.  A default version of the basic block support module has been
! added to libgcc2 that appends the basic block information to a text file
! 'bb.out'.  Machine descriptions can now override the basic block support module
! in the target macro file.
  
  * In C, initializers for static and global variables are now processed
  an element at a time, so that they don't need a lot of storage.
--- 6,18 ----
  then transfer them to MVS to assemble them.
  
! * The Power PC is now supported.
  
! * The i860-based Paragon machine is now supported.
  
+ * The Hitachi 3050 (an HP-PA machine) is now supported.
+ 
+ * The variable __GNUC_MINOR__ holds the minor version number of GCC, as
+ an integer.  For version 2.5.X, the value is 5.
+ 
  * In C, initializers for static and global variables are now processed
  an element at a time, so that they don't need a lot of storage.
***************
*** 33,38 ****
  * GCC now supports `long double' meaningfully on the Sparc (128-bit
  floating point) and on the 386 (96-bit floating point).  The Sparc
! support works reliably only in Solaris 2.x; earlier versions (Sun OS 4)
! have bugs in the emulation.
  
  * All targets now have assertions for cpu, machine and system.  So you
--- 33,38 ----
  * GCC now supports `long double' meaningfully on the Sparc (128-bit
  floating point) and on the 386 (96-bit floating point).  The Sparc
! support is enabled on on Solaris 2.x because earlier system versions
! (SunOS 4) have bugs in the emulation.
  
  * All targets now have assertions for cpu, machine and system.  So you
***************
*** 46,52 ****
  they have.
  
! * To declare a function volatile or const, you must now write
! something like this:
  
      typedef void voidfn ();
  
--- 46,56 ----
  they have.
  
! * To declare that a function does not return, you must now write
! something like this (works only in 2.5):
! 
!     void fatal () __attribute__ ((noreturn));
  
+ or like this (works in older versions too):
+ 
      typedef void voidfn ();
  
***************
*** 60,66 ****
--- 64,89 ----
  else (which is useless).
  
+ Likewise, to declare that a function is side-effect-free
+ so that calls may be deleted or combined, write
+ something like this (works only in 2.5):
+ 
+     void computation () __attribute__ ((const));
+ 
+ or like this (works in older versions too):
+ 
+     typedef void voidfn ();
+ 
+     volatile voidfn computation;
+ 
  * The new option -iwithprefixbefore specifies a directory to add to 
  the search path for include files in the same position where -I would
  put it, but uses the specified prefix just like -iwithprefix.
+ 
+ * Basic block profiling has been enhanced to record the function the
+ basic block comes from, and if the module was compiled for debugging,
+ the line number and filename.  A default version of the basic block
+ support module has been added to libgcc2 that appends the basic block
+ information to a text file 'bb.out'.  Machine descriptions can now
+ override the basic block support module in the target macro file.
  
  New features in g++:
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/README gcc-2.5.2/README
*** gcc-2.5.0/README	Thu Oct 21 22:34:22 1993
--- gcc-2.5.2/README	Mon Nov  1 01:07:36 1993
***************
*** 1,3 ****
! This directory contains the version 2.5.0 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 ----
! This directory contains the version 2.5.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.
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/bytecode.def gcc-2.5.2/bytecode.def
*** gcc-2.5.0/bytecode.def	Wed Sep 22 13:46:33 1993
--- gcc-2.5.2/bytecode.def	Wed Oct 27 02:12:52 1993
***************
*** 52,56 ****
  # Stack manipulations.
  define_operator(drop, 0, ((, (SI))))
! define_operator(dup, 0, ((, (SI), (SI, SI))))
  define_operator(over, 0, ((, (SI), (SI, SI))))
  
--- 52,56 ----
  # Stack manipulations.
  define_operator(drop, 0, ((, (SI))))
! define_operator(duplicate, 0, ((, (SI), (SI, SI))))
  define_operator(over, 0, ((, (SI), (SI, SI))))
  
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/c-common.c gcc-2.5.2/c-common.c
*** gcc-2.5.0/c-common.c	Wed Oct 20 21:43:23 1993
--- gcc-2.5.2/c-common.c	Sun Oct 31 15:18:50 1993
***************
*** 1020,1024 ****
  		&& TREE_CODE (TREE_TYPE (expr)) == INTEGER_TYPE
  		&& TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (expr))))
! 	    warning ("overflow in implicit constant conversion");
  	}
        else
--- 1020,1029 ----
  		&& TREE_CODE (TREE_TYPE (expr)) == INTEGER_TYPE
  		&& TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (expr))))
! 	    /* If EXPR fits in the unsigned version of TYPE,
! 	       don't warn unless pedantic.  */
! 	    if (pedantic
! 		|| TREE_UNSIGNED (type)
! 		|| ! int_fits_type_p (expr, unsigned_type (type)))
! 	      warning ("overflow in implicit constant conversion");
  	}
        else
***************
*** 1232,1235 ****
--- 1237,1242 ----
     See if the operands have both been converted from subword integer types
     and, if so, perhaps change them both back to their original type.
+    This function is also responsible for converting the two operands
+    to the proper common type for comparison.
  
     The arguments of this function are all pointers to local variables
***************
*** 1441,1445 ****
  	}
  
!       if (!max_gt && !unsignedp0)
  	{
  	  /* This is the case of (char)x >?< 0x80, which people used to use
--- 1448,1452 ----
  	}
  
!       if (!max_gt && !unsignedp0 && TREE_CODE (primop1) != INTEGER_CST)
  	{
  	  /* This is the case of (char)x >?< 0x80, which people used to use
***************
*** 1451,1455 ****
  	}
  
!       if (!min_lt && unsignedp0)
  	{
  	  /* This is the case of (unsigned char)x >?< -1 or < 0.  */
--- 1458,1462 ----
  	}
  
!       if (!min_lt && unsignedp0 && TREE_CODE (primop1) != INTEGER_CST)
  	{
  	  /* This is the case of (unsigned char)x >?< -1 or < 0.  */
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/c-decl.c gcc-2.5.2/c-decl.c
*** gcc-2.5.0/c-decl.c	Mon Oct 18 23:18:16 1993
--- gcc-2.5.2/c-decl.c	Sat Oct 30 04:27:13 1993
***************
*** 6486,6490 ****
  	 was an actual function definition.  */
        /* For a nested function, this is done in pop_c_function_context.  */
!       DECL_INITIAL (fndecl) = error_mark_node;
        DECL_ARGUMENTS (fndecl) = 0;
      }
--- 6486,6492 ----
  	 was an actual function definition.  */
        /* For a nested function, this is done in pop_c_function_context.  */
!       /* If rest_of_compilation set this to 0, leave it 0.  */
!       if (DECL_INITIAL (fndecl) != 0)
! 	DECL_INITIAL (fndecl) = error_mark_node;
        DECL_ARGUMENTS (fndecl) = 0;
      }
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/c-parse.in gcc-2.5.2/c-parse.in
*** gcc-2.5.0/c-parse.in	Wed Oct 13 15:46:42 1993
--- gcc-2.5.2/c-parse.in	Thu Oct 28 21:29:39 1993
***************
*** 1128,1133 ****
  
  	| error
! 		{ $$ = error_mark_node;
! 		  pop_momentary (); }
  	;
  
--- 1128,1132 ----
  
  	| error
! 		{ $$ = error_mark_node; }
  	;
  
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/c-typeck.c gcc-2.5.2/c-typeck.c
*** gcc-2.5.0/c-typeck.c	Wed Oct 20 19:07:21 1993
--- gcc-2.5.2/c-typeck.c	Wed Oct 27 15:51:28 1993
***************
*** 1983,1987 ****
      case FLOOR_MOD_EXPR:
        if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE)
! 	shorten = 1;
        break;
  
--- 1983,1997 ----
      case FLOOR_MOD_EXPR:
        if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE)
! 	{
! 	  /* Although it would be tempting to shorten always here, that loses
! 	     on some targets, since the modulo instruction is undefined if the
! 	     quotient can't be represented in the computation mode.  We shorten
! 	     only if unsigned or if dividing by something we know != -1.  */
! 	  shorten = (TREE_UNSIGNED (orig_op0)
! 		     || (TREE_CODE (op1) == INTEGER_CST
! 			 && (TREE_INT_CST_LOW (op1) != -1
! 			     || TREE_INT_CST_HIGH (op1) != -1)));
! 	  common = 1;
! 	}
        break;
  
***************
*** 3460,3464 ****
  	{
  	  char *name;
! 	  tree nvalue;
  
  	  if (pedantic)
--- 3470,3474 ----
  	{
  	  char *name;
! 	  tree t;
  
  	  if (pedantic)
***************
*** 3473,3479 ****
  	  else
  	    name = "";
! 	  return digest_init (type, build (CONSTRUCTOR, type, NULL_TREE,
! 					   build_tree_list (field, value)),
! 			      0, 0);
  	}
        error ("cast to union type from type not present in union");
--- 3483,3491 ----
  	  else
  	    name = "";
! 	  t = digest_init (type, build (CONSTRUCTOR, type, NULL_TREE,
! 					build_tree_list (field, value)),
! 			   0, 0);
! 	  TREE_CONSTANT (t) = TREE_CONSTANT (value);
! 	  return t;
  	}
        error ("cast to union type from type not present in union");
***************
*** 4024,4027 ****
--- 4036,4043 ----
      {
      case CONSTRUCTOR:
+       if (TREE_CODE (TREE_TYPE (value)) == UNION_TYPE
+ 	  && TREE_CONSTANT (value))
+ 	return initializer_constant_valid_p (TREE_VALUE (CONSTRUCTOR_ELTS (value)));
+ 	
        return TREE_STATIC (value) ? null_pointer_node : 0;
  
***************
*** 5019,5022 ****
--- 5035,5056 ----
      }
  
+   /* Structure elements may require alignment.  Do this now
+      if necessary for the subaggregate.  */
+   if (constructor_incremental && TREE_CODE (constructor_type) == RECORD_TYPE)
+     {
+       /* Advance to offset of this element.  */
+       if (! tree_int_cst_equal (constructor_bit_index,
+ 				DECL_FIELD_BITPOS (constructor_fields)))
+ 	{
+ 	  int next = (TREE_INT_CST_LOW
+ 		      (DECL_FIELD_BITPOS (constructor_fields))
+ 		      / BITS_PER_UNIT);
+ 	  int here = (TREE_INT_CST_LOW (constructor_bit_index)
+ 		      / BITS_PER_UNIT);
+ 
+ 	  assemble_zeros (next - here);
+ 	}
+     }
+ 
    p = (struct constructor_stack *) xmalloc (sizeof (struct constructor_stack));
    p->type = constructor_type;
***************
*** 5661,5666 ****
  	      goto retry;
  	    }
! 	  else if (tree_int_cst_lt (DECL_FIELD_BITPOS (TREE_PURPOSE (tail)),
! 				    DECL_FIELD_BITPOS (constructor_unfilled_fields)))
  	    ;
  	  else if (next == 0
--- 5695,5701 ----
  	      goto retry;
  	    }
! 	  else if (constructor_unfilled_fields == 0
! 		   || tree_int_cst_lt (DECL_FIELD_BITPOS (TREE_PURPOSE (tail)),
! 				       DECL_FIELD_BITPOS (constructor_unfilled_fields)))
  	    ;
  	  else if (next == 0
***************
*** 5832,5852 ****
  		       || fieldcode == UNION_TYPE))
  	    {
- 	      /* Structure elements may require alignment.  Do this now
- 		 if necessary for the subaggregate.  */
- 	      if (constructor_incremental)
- 		{
- 		  /* Advance to offset of this element.  */
- 		  if (! tree_int_cst_equal (constructor_bit_index,
- 					    DECL_FIELD_BITPOS (constructor_fields)))
- 		    {
- 		      int next = (TREE_INT_CST_LOW
- 				  (DECL_FIELD_BITPOS (constructor_fields))
- 				  / BITS_PER_UNIT);
- 		      int here = (TREE_INT_CST_LOW (constructor_bit_index)
- 				  / BITS_PER_UNIT);
- 
- 		      assemble_zeros (next - here);
- 		    }
- 		}
  	      push_init_level (1);
  	      continue;
--- 5867,5870 ----
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/cccp.c gcc-2.5.2/cccp.c
*** gcc-2.5.0/cccp.c	Wed Oct 20 19:12:25 1993
--- gcc-2.5.2/cccp.c	Mon Nov  1 01:06:06 1993
***************
*** 906,910 ****
  #endif
    {  6, do_pragma, "pragma", T_PRAGMA, 0, 0, 1},
!   {  5, do_ident, "ident", T_IDENT, 0, 0, 1},
    {  6, do_assert, "assert", T_ASSERT},
    {  8, do_unassert, "unassert", T_UNASSERT},
--- 906,910 ----
  #endif
    {  6, do_pragma, "pragma", T_PRAGMA, 0, 0, 1},
!   {  5, do_ident, "ident", T_IDENT},
    {  6, do_assert, "assert", T_ASSERT},
    {  8, do_unassert, "unassert", T_UNASSERT},
***************
*** 6142,6148 ****
--- 6142,6170 ----
       U_CHAR *buf, *limit;
  {
+   FILE_BUF trybuf;
+   int len;
+   FILE_BUF *op = &outbuf;
+ 
    /* Allow #ident in system headers, since that's not user's fault.  */
    if (pedantic && !instack[indepth].system_header_p)
      pedwarn ("ANSI C does not allow `#ident'");
+ 
+   trybuf = expand_to_temp_buffer (buf, limit, 0, 0);
+   buf = (U_CHAR *) alloca (trybuf.bufp - trybuf.buf + 1);
+   bcopy (trybuf.buf, buf, trybuf.bufp - trybuf.buf);
+   limit = buf + (trybuf.bufp - trybuf.buf);
+   len = (limit - buf);
+   free (trybuf.buf);
+ 
+   /* Output directive name.  */
+   check_expand (op, 8);
+   bcopy ("#ident ", op->bufp, 7);
+   op->bufp += 7;
+ 
+   /* Output the expanded argument line.  */
+   check_expand (op, len);
+   bcopy (buf, op->bufp, len);
+   op->bufp += len;
+ 
    return 0;
  }
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/arm/arm.h gcc-2.5.2/config/arm/arm.h
*** gcc-2.5.0/config/arm/arm.h	Tue Oct 19 17:34:03 1993
--- gcc-2.5.2/config/arm/arm.h	Fri Oct 29 16:43:08 1993
***************
*** 922,926 ****
    if (TREE_CONSTANT (decl)						\
        && (!flag_writable_strings || TREE_CODE (decl) != STRING_CST))	\
!     SYMBOL_REF_FLAG (XEXP (TREE_CST_RTL (decl), 0)) = 1;		\
  }
  
--- 922,930 ----
    if (TREE_CONSTANT (decl)						\
        && (!flag_writable_strings || TREE_CODE (decl) != STRING_CST))	\
!     {									\
!       rtx rtl = (TREE_CODE_CLASS (TREE_CODE (decl)) != 'd'		\
!                  ? TREE_CST_RTL (decl) : DECL_RTL (decl));		\
!       SYMBOL_REF_FLAG (XEXP (rtl, 0)) = 1;				\
!     }									\
  }
  
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/i386/go32.h gcc-2.5.2/config/i386/go32.h
*** gcc-2.5.0/config/i386/go32.h	Sat Oct  2 04:18:20 1993
--- gcc-2.5.2/config/i386/go32.h	Fri Oct 29 11:48:06 1993
***************
*** 10,11 ****
--- 10,59 ----
  #define CPP_PREDEFINES "-Dunix -Di386 -DGO32 -DMSDOS \
    -Asystem(unix) -Asystem(msdos) -Acpu(i386) -Amachine(i386)"
+ 
+ #undef EXTRA_SECTIONS
+ #define EXTRA_SECTIONS in_ctor, in_dtor
+ 
+ #undef EXTRA_SECTION_FUNCTIONS
+ #define EXTRA_SECTION_FUNCTIONS					\
+   CTOR_SECTION_FUNCTION						\
+   DTOR_SECTION_FUNCTION
+ 
+ #define CTOR_SECTION_FUNCTION					\
+ void								\
+ ctor_section ()							\
+ {								\
+   if (in_section != in_ctor)					\
+     {								\
+       fprintf (asm_out_file, "\t.section .ctor\n");		\
+       in_section = in_ctor;					\
+     }								\
+ }
+ 
+ #define DTOR_SECTION_FUNCTION					\
+ void								\
+ dtor_section ()							\
+ {								\
+   if (in_section != in_dtor)					\
+     {								\
+       fprintf (asm_out_file, "\t.section .dtor\n");		\
+       in_section = in_dtor;					\
+     }								\
+ }
+ 
+ #define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME)	\
+   do {						\
+     ctor_section ();				\
+     fprintf (FILE, "%s\t", ASM_LONG);		\
+     assemble_name (FILE, NAME);			\
+     fprintf (FILE, "\n");			\
+   } while (0)
+ 
+ #define ASM_OUTPUT_DESTRUCTOR(FILE,NAME)       	\
+   do {						\
+     dtor_section ();                   		\
+     fprintf (FILE, "%s\t", ASM_LONG);		\
+     assemble_name (FILE, NAME);              	\
+     fprintf (FILE, "\n");			\
+   } while (0)
+ 
+ 
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/i386/i386.c gcc-2.5.2/config/i386/i386.c
*** gcc-2.5.0/config/i386/i386.c	Sun Oct 10 19:11:31 1993
--- gcc-2.5.2/config/i386/i386.c	Sat Oct 30 18:07:33 1993
***************
*** 445,454 ****
  
    /* If insn is effectively movd N (sp),-(sp) then we will do the
!      high word first.  We should use the adjusted operand 1 (which is N+4 (sp))
!      for the low word as well, to compensate for the first decrement of sp.  */
    if (optype0 == PUSHOP
        && REGNO (XEXP (XEXP (operands[0], 0), 0)) == STACK_POINTER_REGNUM
        && reg_overlap_mentioned_p (stack_pointer_rtx, operands[1]))
!     operands[1] = latehalf[1];
  
    /* For (set (reg:DI N) (mem:DI ... (reg:SI N) ...)),
--- 445,456 ----
  
    /* If insn is effectively movd N (sp),-(sp) then we will do the
!      high word first.  We should use the adjusted operand 1
!      (which is N+4 (sp) or N+8 (sp))
!      for the low word and middle word as well,
!      to compensate for the first decrement of sp.  */
    if (optype0 == PUSHOP
        && REGNO (XEXP (XEXP (operands[0], 0), 0)) == STACK_POINTER_REGNUM
        && reg_overlap_mentioned_p (stack_pointer_rtx, operands[1]))
!     middlehalf[1] = operands[1] = latehalf[1];
  
    /* For (set (reg:DI N) (mem:DI ... (reg:SI N) ...)),
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/i386/linux.h gcc-2.5.2/config/i386/linux.h
*** gcc-2.5.0/config/i386/linux.h	Fri Oct  8 18:46:40 1993
--- gcc-2.5.2/config/i386/linux.h	Fri Oct 29 16:50:28 1993
***************
*** 61,65 ****
  
  #undef LIB_SPEC
! #define LIB_SPEC "%{p:-lgmon -lc_p} %{pg:-lgmon -lc_p} %{!p:%{!pg:%{!g*:-lc} %{g*:-lg}}}"
  
  
--- 61,65 ----
  
  #undef LIB_SPEC
! #define LIB_SPEC "%{mieee-fp:-lieee} %{p:-lgmon -lc_p} %{pg:-lgmon -lc_p} %{!p:%{!pg:%{!g*:-lc} %{g*:-lg}}}"
  
  
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/i386/seq-sysv3.h gcc-2.5.2/config/i386/seq-sysv3.h
*** gcc-2.5.0/config/i386/seq-sysv3.h	Mon Aug  2 23:13:17 1993
--- gcc-2.5.2/config/i386/seq-sysv3.h	Mon Oct 25 22:14:13 1993
***************
*** 1,3 ****
! #include "sysv3.h"
  
  /* Sequent Symmetry SVr3 doesn't have crtn.o; crt1.o doesn't work
--- 1,3 ----
! #include "i386/sysv3.h"
  
  /* Sequent Symmetry SVr3 doesn't have crtn.o; crt1.o doesn't work
***************
*** 13,14 ****
--- 13,26 ----
  #undef LIB_SPEC
  #define LIB_SPEC "%{posix:-lcposix} %{shlib:-lc_s} -lc crtend.o%s"
+ 
+ #undef CPP_SPEC
+ #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} -D_SEQUENT_"
+ 
+ /* Although the .init section is used, it is not automatically invoked.
+    This because the _start() function in /lib/crt0.o never calls anything
+    from the .init section */
+ #define INVOKE__main
+ 
+ /* Use atexit for static destructors, instead of defining
+    our own exit function.  */
+ #define HAVE_ATEXIT
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/i386/x-linux gcc-2.5.2/config/i386/x-linux
*** gcc-2.5.0/config/i386/x-linux	Fri Sep  3 13:32:06 1993
--- gcc-2.5.2/config/i386/x-linux	Mon Oct 25 16:25:51 1993
***************
*** 9,10 ****
--- 9,13 ----
  
  BOOT_CFLAGS = -O $(CFLAGS) -Iinclude
+ 
+ # Don't run fixproto
+ STMP_FIXPROTO =
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/i386/xm-aix.h gcc-2.5.2/config/i386/xm-aix.h
*** gcc-2.5.0/config/i386/xm-aix.h	Mon May 24 02:42:37 1993
--- gcc-2.5.2/config/i386/xm-aix.h	Sat Oct 30 12:10:37 1993
***************
*** 1,4 ****
  /* Configuration for GNU C-compiler for IBM PS/2 running AIX/386.
!    Copyright (C) 1988 Free Software Foundation, Inc.
  
  This file is part of GNU CC.
--- 1,4 ----
  /* 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.
***************
*** 33,34 ****
--- 33,36 ----
  #define USE_C_ALLOCA
  #endif
+ 
+ #define HAVE_PUTENV
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/i860/paragon.h gcc-2.5.2/config/i860/paragon.h
*** gcc-2.5.0/config/i860/paragon.h
--- gcc-2.5.2/config/i860/paragon.h	Tue Oct 26 19:32:48 1993
***************
*** 0 ****
--- 1,240 ----
+ /* Target definitions for GNU compiler for Intel 80860 running OSF/1AD
+    Copyright (C) 1991 Free Software Foundation, Inc.
+ 
+    Based upon original work of Ron Guilmette (rfg@ncd.com).
+    Whacked into submission by Andy Pfiffer (andyp@ssd.intel.com).
+    Additional support from:
+ 	Pete Beckman @ Indiana University (beckman@cs.indiana.edu)
+ 	Harry Dolan of Intel Corporation (dolan@ssd.intel.com)
+ 
+ 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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+ 
+ #include "i860/i860.h"
+ #include "svr3.h"
+ 
+ /* For the sake of libgcc2.c, indicate target supports atexit.  */
+ #define HAVE_ATEXIT
+ 
+ #undef TARGET_SWITCHES
+ #define TARGET_SWITCHES  \
+   { {"xp", 1},                  \
+     {"noxp", -1},               \
+     {"xr", -1},                 \
+     {"noieee", -1},		\
+     {"nx", 2},                  \
+     { "", TARGET_DEFAULT}}
+  
+ #undef TARGET_DEFAULT
+ #define TARGET_DEFAULT 1
+ 
+ /* The Intel as860 assembler does not understand .stabs, must use COFF */
+ #define PREFERRED_DEBUGGING_TYPE SDB_DEBUG
+ 
+ #undef TARGET_VERSION
+ #define TARGET_VERSION fprintf (stderr, " (i860 OSF/1AD)");
+ 
+ #undef CPP_PREDEFINES
+ #define CPP_PREDEFINES	"-Di860 -D__i860 -D__i860__ -D__PARAGON__ -D__OSF1__ -D_COFF -Dunix -DMACH -DCMU"
+ 
+ #define CPP_SPEC "%{mnx:-D__NODE}"
+ 
+ /* autoinit.o autolaunches NX applications */
+ #define STARTFILE_SPEC "-ycrt0.o%s %{mnx:-yoptions/autoinit.o%s}"
+ 
+ /* libic.a is the PGI intrisic library */
+ /* libpm.o and guard.o are for the performance monitoring modules (ignored) */
+ /* /usr/lib/noieee contains non-IEEE compliant (but faster) math routines */
+ #if	HAVE_DASH_G
+ #define LIB_SPEC "%{mnoieee:-L/usr/lib/noieee} -L/usr/lib %{mnx:-lnx -lmach} %
+ {g*:-lg} -lc -lic"
+ #else	/* HAVE_DASH_G */
+ /* can't use -g for -lg; libg.a doesn't have a symbol table and ld complains */
+ #define LIB_SPEC "%{mnoieee:-L/usr/lib/noieee} -L/usr/lib %{mnx:-lnx -lmach} -lc -lic"
+ #endif	/* HAVE_DASH_G */
+ 
+ 
+ #undef	I860_REG_PREFIX
+ 
+ #undef	ASM_COMMENT_START
+ #define ASM_COMMENT_START "//"
+ 
+ #undef TYPE_OPERAND_FMT
+ #define TYPE_OPERAND_FMT      "\"%s\""
+ 
+ #define DBX_REGISTER_NUMBER(REGNO) (REGNO)
+ 
+ #undef ASCII_DATA_ASM_OP
+ #define ASCII_DATA_ASM_OP	".byte"
+ 
+ /*
+  *	the assembler we're using doesn't grok .ident...
+  */
+ #undef	ASM_OUTPUT_IDENT
+ #define ASM_OUTPUT_IDENT(FILE, NAME) \
+   fprintf (FILE, "//\t.ident \"%s\"\n", NAME);
+ 
+ /*
+  *	the assembler doesn't grok .double INF and the like
+  *	but does understand .long with hex numbers, so special
+  *	case the "symbolic" IEEE numbers.
+  */
+ #undef ASM_OUTPUT_DOUBLE
+ #define ASM_OUTPUT_DOUBLE(FILE,VALUE)				\
+   {								\
+     if (REAL_VALUE_ISINF (VALUE)				\
+         || REAL_VALUE_ISNAN (VALUE)				\
+ 	|| REAL_VALUE_MINUS_ZERO (VALUE))			\
+       {								\
+ 	long t[2];						\
+ 	REAL_VALUE_TO_TARGET_DOUBLE ((VALUE), t);		\
+ 	fprintf (FILE, "\t.long 0x%lx\n\t.long 0x%lx\n", t[0], t[1]); \
+       }								\
+     else							\
+       fprintf (FILE, "\t.double %.20e\n", VALUE);		\
+   }
+ 
+ #undef ASM_OUTPUT_FLOAT
+ #define ASM_OUTPUT_FLOAT(FILE,VALUE)				\
+   {								\
+     if (REAL_VALUE_ISINF (VALUE)				\
+         || REAL_VALUE_ISNAN (VALUE)				\
+ 	|| REAL_VALUE_MINUS_ZERO (VALUE))			\
+       {								\
+ 	long t;							\
+ 	REAL_VALUE_TO_TARGET_SINGLE ((VALUE), t);		\
+ 	fprintf (FILE, "\t.long 0x%lx\n", t);			\
+       }								\
+     else							\
+       fprintf (FILE, "\t.float %.12e\n", VALUE);		\
+   }
+ 
+ #undef	ASM_OUTPUT_ASCII
+ #define ASM_OUTPUT_ASCII(FILE, STR, LENGTH)			\
+   do								\
+     {								\
+       register unsigned char *str = (unsigned char *) (STR);	\
+       register unsigned char *limit = str + (LENGTH);		\
+       register unsigned bytes_in_chunk = 0;			\
+       for (; str < limit; str++)				\
+         {							\
+           register unsigned ch = *str;				\
+           if (ch < 32 || ch == '\\' || ch == '"' || ch >= 127)	\
+ 	    {							\
+ 	      if (bytes_in_chunk > 0)				\
+ 	        {						\
+ 	          fprintf ((FILE), "\"\n");			\
+ 	          bytes_in_chunk = 0;				\
+ 	        }						\
+ 	      fprintf ((FILE), "\t%s\t%d\n", ASM_BYTE_OP, ch);	\
+ 	    }							\
+           else							\
+ 	    {							\
+ 	      if (bytes_in_chunk >= 60)				\
+ 	        {						\
+ 	          fprintf ((FILE), "\"\n");			\
+ 	          bytes_in_chunk = 0;				\
+ 	        }						\
+ 	      if (bytes_in_chunk == 0)				\
+ 	        fprintf ((FILE), "\t%s\t\"", ASCII_DATA_ASM_OP);\
+ 	      putc (ch, (FILE));				\
+ 	      bytes_in_chunk++;					\
+ 	    }							\
+         }							\
+       if (bytes_in_chunk > 0)					\
+         fprintf ((FILE), "\"\n");				\
+     }								\
+   while (0)
+ 
+ 
+ /* This says how to output an assembler line
+    to define a local common symbol.  */
+ 
+ #undef ASM_OUTPUT_LOCAL
+ #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
+ ( fputs (".lcomm ", (FILE)),			\
+   assemble_name ((FILE), (NAME)),		\
+   fprintf ((FILE), ",%u\n", (ROUNDED)))
+ 
+ /*
+  *	not defining ASM_STABS_OP yields .stabs in the .s file
+  *	when using g++ -- so, I'll define it.
+  */
+ #define	ASM_STABS_OP	"//.stabs"
+ 
+ /* Define this macro if an argument declared as `char' or `short' in a
+    prototype should actually be passed as an `int'.  In addition to
+    avoiding errors in certain cases of mismatch, it also makes for
+    better code on certain machines. */
+ /*#define PROMOTE_PROTOTYPES*/
+ 
+ /* Define this macro if an instruction to load a value narrower
+    than a word from memory into a register also zero-extends the
+    value to the whole  register.  */
+ /*#define BYTE_LOADS_ZERO_EXTEND*/
+ 
+ /* Define this macro as a C expression which is nonzero if
+    accessing less than a word of memory (i.e. a `char' or a
+    `short') is no faster than accessing a word of memory, i.e., if
+    such access require more than one instruction or if there is no
+    difference in cost between byte and (aligned) word loads.
+ 
+    On RISC machines, it tends to generate better code to define
+    this as 1, since it avoids making a QI or HI mode register.  */
+ /*
+ #undef SLOW_BYTE_ACCESS
+ #define SLOW_BYTE_ACCESS 1
+ */
+ 
+ /* Define if shifts truncate the shift count
+    which implies one can omit a sign-extension or zero-extension
+    of a shift count. */
+ #define SHIFT_COUNT_TRUNCATED 1
+ 
+ 
+ #define FASTEST_ALIGNMENT 32
+ 
+ /* Make strings word-aligned so strcpy from constants will be faster.  */
+ #define CONSTANT_ALIGNMENT(EXP, ALIGN)  \
+   (TREE_CODE (EXP) == STRING_CST	\
+    && (ALIGN) < FASTEST_ALIGNMENT ? FASTEST_ALIGNMENT : (ALIGN))
+ 
+ /* Make arrays of chars word-aligned for the same reasons.  */
+ #define DATA_ALIGNMENT(TYPE, ALIGN)		\
+   (TREE_CODE (TYPE) == ARRAY_TYPE		\
+    && TYPE_MODE (TREE_TYPE (TYPE)) == QImode	\
+    && (ALIGN) < FASTEST_ALIGNMENT ? FASTEST_ALIGNMENT : (ALIGN))
+ 
+ /*
+  *	disable a few things picked up from svr3.h
+  */
+ #undef INIT_SECTION_ASM_OP
+ #undef FINI_SECTION_ASM_OP
+ #undef CONST_SECTION_ASM_OP
+ #undef CTORS_SECTION_ASM_OP
+ #undef DTORS_SECTION_ASM_OP
+ #undef DO_GLOBAL_CTORS_BODY
+ #undef ASM_OUTPUT_DESTRUCTOR
+ #undef SELECT_SECTION
+ #undef SELECT_RTX_SECTION
+ #undef READONLY_DATA_SECTION
+ 
+ #define	BSS_SECTION_ASM_OP	".bss"		/* XXX */
+ #undef EXTRA_SECTIONS
+ #define	EXTRA_SECTIONS	in_bss
+ #undef EXTRA_SECTION_FUNCTIONS
+ #define	EXTRA_SECTION_FUNCTIONS		\
+ 	BSS_SECTION_FUNCTION
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/i860/xm-paragon.h gcc-2.5.2/config/i860/xm-paragon.h
*** gcc-2.5.0/config/i860/xm-paragon.h
--- gcc-2.5.2/config/i860/xm-paragon.h	Tue Oct 26 19:33:53 1993
***************
*** 0 ****
--- 1,4 ----
+ /* Configuration for GCC for Intel i860 running OSF/1AD.  */
+ 
+ #include "i860/xm-i860.h"
+ #include "xm-svr3.h"
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/m68k/amix.h gcc-2.5.2/config/m68k/amix.h
*** gcc-2.5.0/config/m68k/amix.h	Sun Aug  1 16:15:38 1993
--- gcc-2.5.2/config/m68k/amix.h	Wed Oct 27 19:35:18 1993
***************
*** 22,25 ****
--- 22,28 ----
  #include "m68k/m68kv4.h"
  
+ /* rhealey@aggregate.com says dots are no good either.  */
+ #define NO_DOT_IN_LABEL
+ 
  /* Alter assembler syntax for fsgldiv and fsglmul.
     It is highly likely that this is a generic SGS m68k assembler dependency.
***************
*** 124,128 ****
  }
  
! #if 0 /* This should be unnecessary as a result of PIC_CASE_VECTOR_ADDRESS.  */
  
  /* Override these for the sake of an assembler bug: the Amix
--- 127,132 ----
  }
  
! /* The following should be unnecessary as a result of PIC_CASE_VECTOR_ADDRESS.
!    But rhealey@aggregate.com says they are still needed.  */
  
  /* Override these for the sake of an assembler bug: the Amix
***************
*** 143,146 ****
    else							\
      asm_fprintf (FILE, "%0L%s%d:\n", PREFIX, NUM)
- 
- #endif /* 0 */
--- 147,148 ----
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/m68k/hpux7.h gcc-2.5.2/config/m68k/hpux7.h
*** gcc-2.5.0/config/m68k/hpux7.h
--- gcc-2.5.2/config/m68k/hpux7.h	Sat Oct 30 23:19:18 1993
***************
*** 0 ****
--- 1,7 ----
+ /* tm.h for m68k running HPUX version 7.  */
+ 
+ /* fletcher@cs.utexas.edu says this is needed.  */
+ #define NO_DOT_IN_LABEL
+ #define NO_BUGS
+ 
+ #include "hp320.h"
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/m68k/m68k.c gcc-2.5.2/config/m68k/m68k.c
*** gcc-2.5.0/config/m68k/m68k.c	Thu Oct 21 00:26:37 1993
--- gcc-2.5.2/config/m68k/m68k.c	Sun Oct 31 13:08:47 1993
***************
*** 1068,1072 ****
        && REGNO (XEXP (XEXP (operands[0], 0), 0)) == STACK_POINTER_REGNUM
        && reg_overlap_mentioned_p (stack_pointer_rtx, operands[1]))
!     operands[1] = latehalf[1];
  
    /* For (set (reg:DI N) (mem:DI ... (reg:SI N) ...)),
--- 1068,1072 ----
        && REGNO (XEXP (XEXP (operands[0], 0), 0)) == STACK_POINTER_REGNUM
        && reg_overlap_mentioned_p (stack_pointer_rtx, operands[1]))
!     operands[1] = middlehalf[1] = latehalf[1];
  
    /* For (set (reg:DI N) (mem:DI ... (reg:SI N) ...)),
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/m68k/m68k.md gcc-2.5.2/config/m68k/m68k.md
*** gcc-2.5.0/config/m68k/m68k.md	Wed Oct 20 23:59:47 1993
--- gcc-2.5.2/config/m68k/m68k.md	Sun Oct 31 18:16:56 1993
***************
*** 2576,2582 ****
  		   (match_operand:SI 2 "nonimmediate_operand" "")))
       (set (subreg:SI (match_dup 0) 0)
! 	  (truncate:SI (ashift:DI (mult:DI (sign_extend:DI (match_dup 1))
! 					   (sign_extend:DI (match_dup 2)))
! 				  (const_int 32))))])]
    "TARGET_68020"
    "")
--- 2576,2582 ----
  		   (match_operand:SI 2 "nonimmediate_operand" "")))
       (set (subreg:SI (match_dup 0) 0)
! 	  (truncate:SI (lshiftrt:DI (mult:DI (sign_extend:DI (match_dup 1))
! 					     (sign_extend:DI (match_dup 2)))
! 				    (const_int 32))))])]
    "TARGET_68020"
    "")
***************
*** 2587,2593 ****
  		 (match_operand:SI 2 "nonimmediate_operand" "dm")))
     (set (match_operand:SI 3 "register_operand" "=d")
! 	(truncate:SI (ashift:DI (mult:DI (sign_extend:DI (match_dup 1))
! 					 (sign_extend:DI (match_dup 2)))
! 				(const_int 32))))]
    "TARGET_68020"
    "muls%.l %2,%3:%0")
--- 2587,2593 ----
  		 (match_operand:SI 2 "nonimmediate_operand" "dm")))
     (set (match_operand:SI 3 "register_operand" "=d")
! 	(truncate:SI (lshiftrt:DI (mult:DI (sign_extend:DI (match_dup 1))
! 					   (sign_extend:DI (match_dup 2)))
! 				  (const_int 32))))]
    "TARGET_68020"
    "muls%.l %2,%3:%0")
***************
*** 2598,2604 ****
  		 (match_operand:SI 2 "const_int_operand" "n")))
     (set (match_operand:SI 3 "register_operand" "=d")
! 	(truncate:SI (ashift:DI (mult:DI (sign_extend:DI (match_dup 1))
! 					 (match_dup 2))
! 				(const_int 32))))]
    "TARGET_68020
     /* This test is a noop on 32 bit machines,
--- 2598,2604 ----
  		 (match_operand:SI 2 "const_int_operand" "n")))
     (set (match_operand:SI 3 "register_operand" "=d")
! 	(truncate:SI (lshiftrt:DI (mult:DI (sign_extend:DI (match_dup 1))
! 					   (match_dup 2))
! 				  (const_int 32))))]
    "TARGET_68020
     /* This test is a noop on 32 bit machines,
***************
*** 3962,3966 ****
    "*
  {
!   cc_status.flags |= CC_NOT_NEGATIVE;
    return \"bfextu %1{%b3:%b2},%0\";
  }")
--- 3962,3974 ----
    "*
  {
!   if (GET_CODE (operands[2]) == CONST_INT)
!     {
!       if (INTVAL (operands[2]) != 32)
! 	cc_status.flags |= CC_NOT_NEGATIVE;
!     }
!   else
!     {
!       CC_STATUS_INIT;
!     }
    return \"bfextu %1{%b3:%b2},%0\";
  }")
***************
*** 4034,4038 ****
    "*
  {
!   cc_status.flags |= CC_NOT_NEGATIVE;
    return \"bfextu %1{%b3:%b2},%0\";
  }")
--- 4042,4054 ----
    "*
  {
!   if (GET_CODE (operands[2]) == CONST_INT)
!     {
!       if (INTVAL (operands[2]) != 32)
! 	cc_status.flags |= CC_NOT_NEGATIVE;
!     }
!   else
!     {
!       CC_STATUS_INIT;
!     }
    return \"bfextu %1{%b3:%b2},%0\";
  }")
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/m68k/xm-amix.h gcc-2.5.2/config/m68k/xm-amix.h
*** gcc-2.5.0/config/m68k/xm-amix.h	Tue Jan  5 03:52:52 1993
--- gcc-2.5.2/config/m68k/xm-amix.h	Wed Oct 27 14:10:56 1993
***************
*** 31,34 ****
--- 31,41 ----
  #define FULL_PROTOTYPES
  
+ #if defined (__GNUC__) && __GNUC__ == 1
+ #define alloca __builtin_alloca
+ #endif
+ 
+ #if 0 /* I don't want individual ports to be inconsistent about this.
+ 	 I regard fancy_abort as a half-solution and not the right way
+ 	 to do things. --rms.  */
  /* The m88k and mips ports make use of fancy_abort to give possibly helpful
     abort information rather than just dumping core.  They do it in their
***************
*** 37,38 ****
--- 44,46 ----
  
  #define abort fancy_abort	/* give possibly helpful abort info */
+ #endif
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/m88k/m88k.h gcc-2.5.2/config/m88k/m88k.h
*** gcc-2.5.0/config/m88k/m88k.h	Thu Oct 21 00:04:37 1993
--- gcc-2.5.2/config/m88k/m88k.h	Fri Oct 22 17:02:49 1993
***************
*** 1940,1943 ****
--- 1940,1944 ----
     by ASM_DECLARE_OBJECT_NAME when it was run for the same decl.  */
  
+ #undef ASM_FINISH_DECLARE_OBJECT
  #define ASM_FINISH_DECLARE_OBJECT(FILE, DECL, TOP_LEVEL, AT_END)	 \
  do {									 \
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/mips/iris5.h gcc-2.5.2/config/mips/iris5.h
*** gcc-2.5.0/config/mips/iris5.h	Thu Oct 21 14:36:26 1993
--- gcc-2.5.2/config/mips/iris5.h	Fri Oct 29 13:03:00 1993
***************
*** 18,43 ****
  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  
! #define TARGET_DEFAULT MASK_ABICALLS
  #define ABICALLS_ASM_OP ".option pic2"
  
  #include "mips/iris4.h"
  
! /* mips-tfile doesn't work yet.  No debugging is supported.  */
! #undef ASM_FINAL_SPEC
! #undef SDB_DEBUGGING_INFO
! #undef DBX_DEBUGGING_INFO
  
  #undef CPP_PREDEFINES
! #define CPP_PREDEFINES	"\
! -D_MIPS_FPSET=16 -D_MIPS_ISA=_MIPS_ISA_MIPS1 -D_MIPS_SIM_ABI32 \
! -Dunix -Dmips -Dsgi -DSVR3 -Dhost_mips -DMIPSEB -DSYSTYPE_SYSV \
! -D_SYSTYPE_SVR4 -D_LONGLONG -D_MIPSEB -D_SGI_SOURCE -D__SDO__  \
! -D_MIPS_SZLONG=32 -D_MIPS_SZINT=32 -D_MIPS_SZPTR=32 -D_SVR4_SOURCE \
! -Asystem(unix) -Asystem(svr3) -Acpu(mips) -Amachine(mips)"
  
! #undef ASM_SPEC
! #define ASM_SPEC "-elf -KPIC -EB %{O*:-O2 -fullasopt} %{!O*:-O1}"
  
  #undef LINK_SPEC
! #define LINK_SPEC "-elf -_SYSTYPE_SVR4 -require_dynamic_link \
!  _rld_new_interface -no_unresolved -KPIC -call_shared -transitive_link"
--- 18,90 ----
  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  
! #define	TARGET_DEFAULT	MASK_ABICALLS
  #define ABICALLS_ASM_OP ".option pic2"
  
+ #define OBJECT_FORMAT_ELF
+ 
  #include "mips/iris4.h"
  
! /* Specify size_t, ptrdiff_t, and wchar_t types.  */
! #undef	SIZE_TYPE
! #undef	PTRDIFF_TYPE
! #undef	WCHAR_TYPE
! #undef	WCHAR_TYPE_SIZE
  
+ #define SIZE_TYPE	"unsigned int"
+ #define PTRDIFF_TYPE	"int"
+ #define WCHAR_TYPE	"long int"
+ #define WCHAR_TYPE_SIZE	LONG_TYPE_SIZE
+ 
+ /* ??? _MIPS_SIM and _MIPS_SZPTR should eventually depend on options when
+    options for them exist.  */
+ 
  #undef CPP_PREDEFINES
! #define CPP_PREDEFINES \
!  "-Dunix -Dmips -Dsgi -Dhost_mips -DMIPSEB -DSYSTYPE_SVR4 \
!   -D_SVR4_SOURCE -D_MODERN_C -D__DSO__ \
!   -D_MIPS_SIM=_MIPS_SIM_ABI32 -D_MIPS_SZPTR=32 \
!   -Asystem(unix) -Asystem(svr4) -Acpu(mips) -Amachine(sgi)"
  
! #undef CPP_SPEC
! #define CPP_SPEC "\
! %{!ansi:-D__EXTENSIONS__ -D_SGI_SOURCE -D_LONGLONG} \
! %{.S:	-D_LANGUAGE_ASSEMBLY %{!ansi:-DLANGUAGE_ASSEMBLY}} \
! %{.cc:	-D_LANGUAGE_C_PLUS_PLUS} \
! %{.cxx:	-D_LANGUAGE_C_PLUS_PLUS} \
! %{.C:	-D_LANGUAGE_C_PLUS_PLUS} \
! %{.m:	-D_LANGUAGE_OBJECTIVE_C} \
! %{!.S: %{!.cc: %{!.cxx: %{!.C: %{!.m: -D_LANGUAGE_C %{!ansi:-DLANGUAGE_C}}}}}}\
! %{!mfp64: -D_MIPS_FPSET=16}%{mfp64: -D_MIPS_FPSET=32} \
! %{mips1: -D_MIPS_ISA=_MIPS_ISA_MIPS1} \
! %{mips2: -D_MIPS_ISA=_MIPS_ISA_MIPS2} \
! %{mips3: -D_MIPS_ISA=_MIPS_ISA_MIPS3} \
! %{!mips1: %{!mips2: %{!mips3: -D_MIPS_ISA=_MIPS_ISA_MIPS1}}} \
! %{!mint64: -D_MIPS_SZINT=32}%{mint64: -D_MIPS_SZINT=64} \
! %{!mlong64: -D_MIPS_SZLONG=32}%{mlong64: -D_MIPS_SZLONG=64}"
  
  #undef LINK_SPEC
! #define LINK_SPEC "\
! %{G*} \
! %{!mgas: \
! 	%{mips1} %{mips2} %{mips3} %{bestGnum} \
! 	%{shared} %{non_shared} %{call_shared} %{no_archive} %{exact_version} \
! 	%{!shared: %{!non_shared: \
! 		   %{!call_shared: -call_shared -no_unresolved}}} \
! 	-_SYSTYPE_SVR4 }"
! 
! #undef LIB_SPEC
! #define LIB_SPEC "%{p:-lprof1} %{pg:-lprof1} -lc crtn.o%s"
! 
! /* We do not want to run mips-tfile!  */
! #undef ASM_FINAL_SPEC
! 
! #undef OBJECT_FORMAT_COFF
! 
! /* We don't support debugging info for now. */
! #undef DBX_DEBUGGING_INFO
! #undef SDB_DEBUGGING_INFO
! #undef MIPS_DEBUGGING_INFO
! 
! #undef MACHINE_TYPE
! #define MACHINE_TYPE "SGI running IRIX 5.0"
! 
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/mips/mips.c gcc-2.5.2/config/mips/mips.c
*** gcc-2.5.0/config/mips/mips.c	Thu Oct 21 17:11:53 1993
--- gcc-2.5.2/config/mips/mips.c	Sat Oct 23 20:19:13 1993
***************
*** 191,194 ****
--- 191,197 ----
  char *mips_isa_string;		/* for -mips{1,2,3} */
  
+ /* Generating calls to position independent functions?  */
+ enum attr_abicalls mips_abicalls;
+ 
  /* Array to RTX class classification.  At present, we care about
     whether the operator is an add-type operator, or a divide/modulus,
***************
*** 2901,2904 ****
--- 2904,2912 ----
      HALF_PIC_INIT ();
  
+   if (TARGET_ABICALLS)
+     mips_abicalls = ABICALLS_YES;
+   else
+     mips_abicalls = ABICALLS_NO;
+ 
    /* -mrnames says to use the MIPS software convention for register
       names instead of the hardware names (ie, a0 instead of $4).
***************
*** 2971,2974 ****
--- 2979,2983 ----
    mips_print_operand_punct['{'] = TRUE;
    mips_print_operand_punct['}'] = TRUE;
+   mips_print_operand_punct['^'] = TRUE;
  
    mips_char_to_class['d'] = GR_REGS;
***************
*** 3121,3125 ****
     '?'	Print 'l' if we are to use a branch likely instead of normal branch.
     '@'	Print the name of the assembler temporary register (at or $1).
!    '.'	Print the name of the register with a hard-wired zero (zero or $0).  */
  
  void
--- 3130,3135 ----
     '?'	Print 'l' if we are to use a branch likely instead of normal branch.
     '@'	Print the name of the assembler temporary register (at or $1).
!    '.'	Print the name of the register with a hard-wired zero (zero or $0).
!    '^'	Print the name of the pic call-through register (t9 or $25).  */
  
  void
***************
*** 3148,3151 ****
--- 3158,3165 ----
  	  break;
  
+ 	case '^':
+ 	  fputs (reg_names [PIC_FUNCTION_ADDR_REGNUM], file);
+ 	  break;
+ 
  	case '.':
  	  fputs (reg_names [GP_REG_FIRST + 0], file);
***************
*** 3664,3668 ****
      fprintf (stream, "\t.set\tnobopt\n");
  
!   /* Generate the pseudo ops that the Pyramid based System V.4 wants.  */
  #ifndef ABICALLS_ASM_OP
  #define ABICALLS_ASM_OP ".abicalls"
--- 3678,3682 ----
      fprintf (stream, "\t.set\tnobopt\n");
  
!   /* Generate the pseudo ops that System V.4 wants.  */
  #ifndef ABICALLS_ASM_OP
  #define ABICALLS_ASM_OP ".abicalls"
***************
*** 3669,3672 ****
--- 3683,3687 ----
  #endif
    if (TARGET_ABICALLS)
+     /* ??? but do not want this (or want pic0) if -non-shared? */
      fprintf (stream, "\t%s\n", ABICALLS_ASM_OP);
  
***************
*** 3889,3898 ****
  	|  arguments passed	|	|  arguments passed	|
  	|  in registers, even	|	|  in registers, even	|
!     SP->|  if not passed.       |   FP->|  if not passed.	|
  	+-----------------------+       +-----------------------+
- 					|			|
- 					|  GP save for V.4 abi	|
- 					|			|
- 					+-----------------------+
  					|		        |
                                          |  fp register save     |
--- 3904,3909 ----
  	|  arguments passed	|	|  arguments passed	|
  	|  in registers, even	|	|  in registers, even	|
!     SP->|  if not passed.       |  VFP->|  if not passed.	|
  	+-----------------------+       +-----------------------+
  					|		        |
                                          |  fp register save     |
***************
*** 3912,3915 ****
--- 3923,3930 ----
  					+-----------------------+
  					|			|
+ 					|  GP save for V.4 abi	|
+ 					|			|
+ 					+-----------------------+
+ 					|			|
                                          |  arguments on stack   |
          				|		        |
***************
*** 3994,3997 ****
--- 4009,4021 ----
    if (total_size == extra_size)
      total_size = extra_size = 0;
+   else if (TARGET_ABICALLS)
+     {
+       /* Add the context-pointer to the saved registers.  */
+       gp_reg_size += UNITS_PER_WORD;
+       mask |= 1L << (PIC_OFFSET_TABLE_REGNUM - GP_REG_FIRST);
+       total_size -= gp_reg_rounded;
+       gp_reg_rounded = MIPS_STACK_ALIGN (gp_reg_size);
+       total_size += gp_reg_rounded;
+     }
  
    /* Save other computed information.  */
***************
*** 4010,4014 ****
    if (mask)
      {
!       unsigned long offset = args_size + var_size + gp_reg_size - UNITS_PER_WORD;
        current_frame_info.gp_sp_offset = offset;
        current_frame_info.gp_save_offset = offset - total_size;
--- 4034,4039 ----
    if (mask)
      {
!       unsigned long offset = args_size + extra_size + var_size
! 			     + gp_reg_size - UNITS_PER_WORD;
        current_frame_info.gp_sp_offset = offset;
        current_frame_info.gp_save_offset = offset - total_size;
***************
*** 4023,4027 ****
    if (fmask)
      {
!       unsigned long offset = args_size + var_size + gp_reg_rounded + fp_reg_size - 2*UNITS_PER_WORD;
        current_frame_info.fp_sp_offset = offset;
        current_frame_info.fp_save_offset = offset - total_size + UNITS_PER_WORD;
--- 4048,4053 ----
    if (fmask)
      {
!       unsigned long offset = args_size + extra_size + var_size
! 			     + gp_reg_rounded + fp_reg_size - 2*UNITS_PER_WORD;
        current_frame_info.fp_sp_offset = offset;
        current_frame_info.fp_save_offset = offset - total_size + UNITS_PER_WORD;
***************
*** 4142,4155 ****
  		  if (store_p)
  		    emit_move_insn (mem_rtx, reg_rtx);
! 		  else
  		    emit_move_insn (reg_rtx, mem_rtx);
  		}
  	      else
! 		fprintf (file, "\t%s\t%s,%ld(%s)\n",
! 			 (store_p) ? "sw" : "lw",
! 			 reg_names[regno],
! 			 gp_offset - base_offset,
! 			 reg_names[REGNO(base_reg_rtx)]);
  
  	      gp_offset -= UNITS_PER_WORD;
  	    }
--- 4168,4186 ----
  		  if (store_p)
  		    emit_move_insn (mem_rtx, reg_rtx);
! 		  else if (!TARGET_ABICALLS
! 			   || regno != (PIC_OFFSET_TABLE_REGNUM - GP_REG_FIRST))
  		    emit_move_insn (reg_rtx, mem_rtx);
  		}
  	      else
! 		{
! 		  if (store_p || !TARGET_ABICALLS
! 		      || regno != (PIC_OFFSET_TABLE_REGNUM - GP_REG_FIRST))
! 		    fprintf (file, "\t%s\t%s,%ld(%s)\n",
! 			     (store_p) ? "sw" : "lw",
! 			     reg_names[regno],
! 			     gp_offset - base_offset,
! 			     reg_names[REGNO(base_reg_rtx)]);
  
+ 		}
  	      gp_offset -= UNITS_PER_WORD;
  	    }
***************
*** 4275,4288 ****
    fputs (":\n", file);
  
!   if (TARGET_ABICALLS)
!     fprintf (file,
! 	     "\t.set\tnoreorder\n\t.cpload\t%s\n\t.set\treorder\n",
! 	     reg_names[ GP_REG_FIRST + 25 ]);
! 
!   tsize = current_frame_info.total_size;
!   if (tsize > 0 && TARGET_ABICALLS)
!     fprintf (file, "\t.cprestore %d\n", tsize + STARTING_FRAME_OFFSET);
! 
!   fprintf (file, "\t.frame\t%s,%d,%s\t\t# vars= %d, regs= %d/%d, args = %d, extra= %d\n",
  	   reg_names[ (frame_pointer_needed) ? FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM ],
  	   tsize,
--- 4306,4310 ----
    fputs (":\n", file);
  
!   fprintf (file, "\t.frame\t%s,%d,%s\t\t# vars= %d, regs= %d/%d, args= %d, extra= %d\n",
  	   reg_names[ (frame_pointer_needed) ? FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM ],
  	   tsize,
***************
*** 4299,4302 ****
--- 4321,4337 ----
  	   current_frame_info.fmask,
  	   current_frame_info.fp_save_offset);
+ 
+   if (TARGET_ABICALLS)
+     {
+       char *sp_str = reg_names[STACK_POINTER_REGNUM];
+ 
+       fprintf (file, "\t.set\tnoreorder\n\t.cpload\t%s\n\t.set\treorder\n",
+ 	       reg_names[PIC_FUNCTION_ADDR_REGNUM]);
+       if (tsize > 0)
+ 	{
+ 	  fprintf (file, "\tsubu\t%s,%s,%d\n", sp_str, sp_str, tsize);
+ 	  fprintf (file, "\t.cprestore %d\n", current_frame_info.args_size);
+ 	}
+     }
  }
  
***************
*** 4406,4409 ****
--- 4441,4446 ----
      }
  
+   tsize = compute_frame_size (get_frame_size ());
+ 
    /* If this function is a varargs function, store any registers that
       would normally hold arguments ($4 - $7) on the stack.  */
***************
*** 4414,4429 ****
  	      || (arg_name[0] == 'v' && strcmp (arg_name, "va_alist") == 0))))
      {
        for (; regno <= GP_ARG_LAST; regno++)
  	{
! 	  rtx ptr = stack_pointer_rtx;
! 	  if (regno != GP_ARG_FIRST)
! 	    ptr = gen_rtx (PLUS, Pmode, ptr,
! 			   GEN_INT ((regno - GP_ARG_FIRST) * UNITS_PER_WORD));
! 
! 	  emit_move_insn (gen_rtx (MEM, Pmode, ptr), gen_rtx (REG, Pmode, regno));
  	}
      }
  
-   tsize = compute_frame_size (get_frame_size ());
    if (tsize > 0)
      {
--- 4451,4471 ----
  	      || (arg_name[0] == 'v' && strcmp (arg_name, "va_alist") == 0))))
      {
+       int offset = (regno - GP_ARG_FIRST) * UNITS_PER_WORD;
+       rtx ptr = stack_pointer_rtx;
+ 
+       /* If we are doing svr4-abi, sp has already been decremented by tsize. */
+       if (TARGET_ABICALLS)
+ 	offset += tsize;
+ 
        for (; regno <= GP_ARG_LAST; regno++)
  	{
! 	  if (offset != 0)
! 	    ptr = gen_rtx (PLUS, Pmode, stack_pointer_rtx, GEN_INT (offset));
! 	  emit_move_insn (gen_rtx (MEM, Pmode, ptr),
! 			  gen_rtx (REG, Pmode, regno));
! 	  offset += UNITS_PER_WORD;
  	}
      }
  
    if (tsize > 0)
      {
***************
*** 4430,4441 ****
        rtx tsize_rtx = GEN_INT (tsize);
  
!       if (tsize > 32767)
  	{
! 	  tmp_rtx = gen_rtx (REG, SImode, MIPS_TEMP1_REGNUM);
! 	  emit_move_insn (tmp_rtx, tsize_rtx);
! 	  tsize_rtx = tmp_rtx;
! 	}
  
!       emit_insn (gen_subsi3 (stack_pointer_rtx, stack_pointer_rtx, tsize_rtx));
  
        save_restore_insns (TRUE, tmp_rtx, tsize, (FILE *)0);
--- 4472,4488 ----
        rtx tsize_rtx = GEN_INT (tsize);
  
!       /* If we are doing svr4-abi, sp move is done by function_prologue.  */
!       if (!TARGET_ABICALLS)
  	{
! 	  if (tsize > 32767)
! 	    {
! 	      tmp_rtx = gen_rtx (REG, SImode, MIPS_TEMP1_REGNUM);
! 	      emit_move_insn (tmp_rtx, tsize_rtx);
! 	      tsize_rtx = tmp_rtx;
! 	    }
  
! 	  emit_insn (gen_subsi3 (stack_pointer_rtx, stack_pointer_rtx,
! 				 tsize_rtx));
! 	}
  
        save_restore_insns (TRUE, tmp_rtx, tsize, (FILE *)0);
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/mips/mips.h gcc-2.5.2/config/mips/mips.h
*** gcc-2.5.0/config/mips/mips.h	Thu Oct 21 17:12:05 1993
--- gcc-2.5.2/config/mips/mips.h	Sat Oct 23 20:19:25 1993
***************
*** 109,112 ****
--- 109,113 ----
  extern char *mips_cpu_string;		/* for -mcpu=<xxx> */
  extern char *mips_isa_string;		/* for -mips{1,2,3} */
+ extern enum attr_abicalls mips_abicalls;/* for svr4 abi pic calls */
  extern int dslots_load_total;		/* total # load related delay slots */
  extern int dslots_load_filled;		/* # filled load delay slots */
***************
*** 1248,1251 ****
--- 1249,1254 ----
  #define PIC_OFFSET_TABLE_REGNUM (GP_REG_FIRST + 28)
  
+ #define PIC_FUNCTION_ADDR_REGNUM (GP_REG_FIRST + 25)
+ 
  
  /* Define the classes of registers for register constraints in the
***************
*** 1513,1517 ****
     first local allocated.  Otherwise, it is the offset to the BEGINNING
     of the first local allocated.  */
! #define STARTING_FRAME_OFFSET current_function_outgoing_args_size
  
  /* Offset from the stack pointer register to an item dynamically
--- 1516,1522 ----
     first local allocated.  Otherwise, it is the offset to the BEGINNING
     of the first local allocated.  */
! #define STARTING_FRAME_OFFSET						\
!   (current_function_outgoing_args_size					\
!    + (TARGET_ABICALLS ? MIPS_STACK_ALIGN (UNITS_PER_WORD) : 0))
  
  /* Offset from the stack pointer register to an item dynamically
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/mips/mips.md gcc-2.5.2/config/mips/mips.md
*** gcc-2.5.0/config/mips/mips.md	Fri Oct  8 18:31:50 1993
--- gcc-2.5.2/config/mips/mips.md	Sat Oct 23 20:19:36 1993
***************
*** 97,100 ****
--- 97,104 ----
    [(set_attr "type" "multi")])
  
+ ;; whether or not generating calls to position independent functions
+ (define_attr "abicalls" "no,yes"
+   (const (symbol_ref "mips_abicalls")))
+ 
  
  
***************
*** 110,114 ****
     (and (eq_attr "branch_likely" "yes") (and (eq_attr "dslot" "no") (eq_attr "length" "1")))])
  
! (define_delay (eq_attr "type" "call,jump")
    [(and (eq_attr "dslot" "no") (eq_attr "length" "1"))
     (nil)
--- 114,123 ----
     (and (eq_attr "branch_likely" "yes") (and (eq_attr "dslot" "no") (eq_attr "length" "1")))])
  
! (define_delay (eq_attr "type" "jump")
!   [(and (eq_attr "dslot" "no") (eq_attr "length" "1"))
!    (nil)
!    (nil)])
! 
! (define_delay (and (eq_attr "type" "call") (eq_attr "abicalls" "no"))
    [(and (eq_attr "dslot" "no") (eq_attr "length" "1"))
     (nil)
***************
*** 4090,4094 ****
  	 (match_operand 1 "" "i"))
     (clobber (match_operand:SI 2 "register_operand" "=d"))]
!   "!TARGET_LONG_CALLS"
    "*
  {
--- 4099,4103 ----
  	 (match_operand 1 "" "i"))
     (clobber (match_operand:SI 2 "register_operand" "=d"))]
!   "!TARGET_ABICALLS && !TARGET_LONG_CALLS"
    "*
  {
***************
*** 4115,4122 ****
  
  (define_insn "call_internal2"
    [(call (mem:SI (match_operand:SI 0 "register_operand" "r"))
  	 (match_operand 1 "" "i"))
     (clobber (match_operand:SI 2 "register_operand" "=d"))]
!   "TARGET_LONG_CALLS"
    "%*jal\\t%2,%0"
    [(set_attr "type"	"call")
--- 4124,4162 ----
  
  (define_insn "call_internal2"
+   [(call (match_operand 0 "call_insn_operand" "m")
+ 	 (match_operand 1 "" "i"))
+    (clobber (match_operand:SI 2 "register_operand" "=d"))]
+   "TARGET_ABICALLS && !TARGET_LONG_CALLS"
+   "*
+ {
+   register rtx target = XEXP (operands[0], 0);
+ 
+   if (GET_CODE (target) == SYMBOL_REF)
+     return \"jal\\t%0\";
+ 
+   else if (GET_CODE (target) == CONST_INT)
+     {
+       operands[0] = target;
+       return \"li\\t%^,%0\\n\\tjal\\t%2,%^\";
+     }
+ 
+   else
+     {
+       operands[0] = target;
+       if (REGNO (target) != PIC_FUNCTION_ADDR_REGNUM)
+ 	return \"move\\t%^,%0\\n\\tjal\\t%2,%^\";
+       else
+ 	return \"jal\\t%2,%0\";
+     }
+ }"
+   [(set_attr "type"	"call")
+    (set_attr "mode"	"none")
+    (set_attr "length"	"2")])
+ 
+ (define_insn "call_internal3"
    [(call (mem:SI (match_operand:SI 0 "register_operand" "r"))
  	 (match_operand 1 "" "i"))
     (clobber (match_operand:SI 2 "register_operand" "=d"))]
!   "!TARGET_ABICALLS && TARGET_LONG_CALLS"
    "%*jal\\t%2,%0"
    [(set_attr "type"	"call")
***************
*** 4124,4127 ****
--- 4164,4183 ----
     (set_attr "length"	"1")])
  
+ (define_insn "call_internal4"
+   [(call (mem:SI (match_operand:SI 0 "register_operand" "r"))
+ 	 (match_operand 1 "" "i"))
+    (clobber (match_operand:SI 2 "register_operand" "=d"))]
+   "TARGET_ABICALLS && TARGET_LONG_CALLS"
+   "*
+ {
+   if (REGNO (operands[0]) != PIC_FUNCTION_ADDR_REGNUM)
+     return \"move\\t%^,%0\\n\\tjal\\t%2,%^\";
+   else
+     return \"jal\\t%2,%0\";
+ }"
+   [(set_attr "type"	"call")
+    (set_attr "mode"	"none")
+    (set_attr "length"	"2")])
+ 
  
  ;; calls.c now passes a fourth argument, make saber happy
***************
*** 4175,4179 ****
                (match_operand 2 "" "i")))
     (clobber (match_operand:SI 3 "register_operand" "=d"))]
!   "!TARGET_LONG_CALLS"
    "*
  {
--- 4231,4235 ----
                (match_operand 2 "" "i")))
     (clobber (match_operand:SI 3 "register_operand" "=d"))]
!   "!TARGET_ABICALLS && !TARGET_LONG_CALLS"
    "*
  {
***************
*** 4201,4208 ****
  (define_insn "call_value_internal2"
    [(set (match_operand 0 "register_operand" "=df")
          (call (mem:SI (match_operand:SI 1 "register_operand" "r"))
  	      (match_operand 2 "" "i")))
     (clobber (match_operand:SI 3 "register_operand" "=d"))]
!   "TARGET_LONG_CALLS"
    "%*jal\\t%3,%1"
    [(set_attr "type"	"call")
--- 4257,4296 ----
  (define_insn "call_value_internal2"
    [(set (match_operand 0 "register_operand" "=df")
+         (call (match_operand 1 "call_insn_operand" "m")
+               (match_operand 2 "" "i")))
+    (clobber (match_operand:SI 3 "register_operand" "=d"))]
+   "TARGET_ABICALLS && !TARGET_LONG_CALLS"
+   "*
+ {
+   register rtx target = XEXP (operands[1], 0);
+ 
+   if (GET_CODE (target) == SYMBOL_REF)
+     return \"jal\\t%1\";
+ 
+   else if (GET_CODE (target) == CONST_INT)
+     {
+       operands[1] = target;
+       return \"li\\t%^,%1\\n\\tjal\\t%3,%^\";
+     }
+ 
+   else
+     {
+       operands[1] = target;
+       if (REGNO (target) != PIC_FUNCTION_ADDR_REGNUM)
+ 	return \"move\\t%^,%1\\n\\tjal\\t%3,%^\";
+       else
+ 	return \"jal\\t%3,%1\";
+     }
+ }"
+   [(set_attr "type"	"call")
+    (set_attr "mode"	"none")
+    (set_attr "length"	"2")])
+ 
+ (define_insn "call_value_internal3"
+   [(set (match_operand 0 "register_operand" "=df")
          (call (mem:SI (match_operand:SI 1 "register_operand" "r"))
  	      (match_operand 2 "" "i")))
     (clobber (match_operand:SI 3 "register_operand" "=d"))]
!   "!TARGET_ABICALLS && TARGET_LONG_CALLS"
    "%*jal\\t%3,%1"
    [(set_attr "type"	"call")
***************
*** 4209,4212 ****
--- 4297,4317 ----
     (set_attr "mode"	"none")
     (set_attr "length"	"1")])
+ 
+ (define_insn "call_value_internal4"
+   [(set (match_operand 0 "register_operand" "=df")
+         (call (mem:SI (match_operand:SI 1 "register_operand" "r"))
+ 	      (match_operand 2 "" "i")))
+    (clobber (match_operand:SI 3 "register_operand" "=d"))]
+   "TARGET_ABICALLS && TARGET_LONG_CALLS"
+   "*
+ {
+   if (REGNO (operands[1]) != PIC_FUNCTION_ADDR_REGNUM)
+     return \"move\\t%^,%1\\n\\tjal\\t%3,%^\";
+   else
+     return \"jal\\t%3,%1\";
+ }"
+   [(set_attr "type"	"call")
+    (set_attr "mode"	"none")
+    (set_attr "length"	"2")])
  
  ;; Call subroutine returning any type.
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/mips/x-mips gcc-2.5.2/config/mips/x-mips
*** gcc-2.5.0/config/mips/x-mips	Sun Jul 19 11:30:40 1992
--- gcc-2.5.2/config/mips/x-mips	Tue Oct 26 13:42:48 1993
***************
*** 11,15 ****
  CC		= $(OLDCC)
  OPT		= -O1
! OLDCC		= cc -Wf,-XNg1500 -Olimit 3000 $(OPT)
  
  # The bison output files are machine-indep,
--- 11,15 ----
  CC		= $(OLDCC)
  OPT		= -O1
! OLDCC		= cc -Wf,-XNg1500,-XNh1500 -Olimit 3000 $(OPT)
  
  # The bison output files are machine-indep,
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/mips/x-sysv gcc-2.5.2/config/mips/x-sysv
*** gcc-2.5.0/config/mips/x-sysv	Wed Jul 28 13:45:39 1993
--- gcc-2.5.2/config/mips/x-sysv	Tue Oct 26 13:42:50 1993
***************
*** 11,15 ****
  CC		= $(OLDCC)
  OPT		= -O1
! OLDCC		= cc -Wf,-XNg1500 -Olimit 3000 $(OPT)
  
  # The bison output files are machine-indep,
--- 11,15 ----
  CC		= $(OLDCC)
  OPT		= -O1
! OLDCC		= cc -Wf,-XNg1500,-XNh1500 -Olimit 3000 $(OPT)
  
  # The bison output files are machine-indep,
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/mips/xm-iris5.h gcc-2.5.2/config/mips/xm-iris5.h
*** gcc-2.5.0/config/mips/xm-iris5.h
--- gcc-2.5.2/config/mips/xm-iris5.h	Sat Oct 23 20:22:48 1993
***************
*** 0 ****
--- 1,9 ----
+ #include "mips/xm-mips.h"
+ 
+ #define USG
+ #define HAVE_VPRINTF
+ 
+ #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)
+ 
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/pa/pa-ghiux.h gcc-2.5.2/config/pa/pa-ghiux.h
*** gcc-2.5.0/config/pa/pa-ghiux.h
--- gcc-2.5.2/config/pa/pa-ghiux.h	Sat Oct 30 17:18:43 1993
***************
*** 0 ****
--- 1,55 ----
+ /* Definitions of target machine for GNU compiler, for HI-UX using GNU as.
+    Copyright (C) 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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+ 
+ #ifndef TARGET_DEFAULT
+ #define TARGET_DEFAULT 0
+ #endif
+ 
+ #include "pa/pa.h"
+ 
+ /* Make GCC agree with types.h.  */
+ #undef SIZE_TYPE
+ #undef PTRDIFF_TYPE
+ #undef WCHAR_TYPE
+ #undef WCHAR_TYPE_SIZE
+ 
+ #define SIZE_TYPE "unsigned int"
+ #define PTRDIFF_TYPE "int"
+ #define WCHAR_TYPE "unsigned int"
+ #define WCHAR_TYPE_SIZE 32
+ 
+ /* Like the default, except no -lg.  */
+ #define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-L/lib/libp/ -lc}%{pg:-L/lib/libp/ -lc}"
+ 
+ #undef CPP_SPEC
+ #if (TARGET_DEFAULT & 1) == 0
+ #define CPP_SPEC "%{msnake:-D_PA_RISC1_1}\
+  %{mpa-risc-1-1:-D_PA_RISC1_1}"
+ #else
+ #define CPP_SPEC "%{!mpa-risc-1-0:%{!mnosnake:-D_PA_RISC1_1}}"
+ #endif
+ 
+ #undef CC1_SPEC
+ #define CC1_SPEC "-fwritable-strings %{pg:} %{p:}"
+ 
+ #undef CPP_PREDEFINES
+ #define CPP_PREDEFINES "-Dhppa -DPWB -Dunix -D_HIUX_SOURCE -D__H3050R -D__H3050RX"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC "-u main -a archive"
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/pa/pa-hiux.h gcc-2.5.2/config/pa/pa-hiux.h
*** gcc-2.5.0/config/pa/pa-hiux.h
--- gcc-2.5.2/config/pa/pa-hiux.h	Sat Oct 30 17:19:13 1993
***************
*** 0 ****
--- 1,58 ----
+ /* Definitions of target machine for GNU compiler, for HI-UX.
+    Copyright (C) 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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+ 
+ #ifndef TARGET_DEFAULT
+ #define TARGET_DEFAULT 0
+ #endif
+ 
+ #include "pa/pa.h"
+ 
+ /* Make GCC agree with types.h.  */
+ #undef SIZE_TYPE
+ #undef PTRDIFF_TYPE
+ #undef WCHAR_TYPE
+ #undef WCHAR_TYPE_SIZE
+ 
+ #define SIZE_TYPE "unsigned int"
+ #define PTRDIFF_TYPE "int"
+ #define WCHAR_TYPE "unsigned int"
+ #define WCHAR_TYPE_SIZE 32
+ 
+ /* HPUX doesn't use any debugging format that GCC knows about.  */
+ #undef DBX_DEBUGGING_INFO
+ 
+ /* Like the default, except no -lg.  */
+ #define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-L/lib/libp/ -lc}%{pg:-L/lib/libp/ -lc}"
+ 
+ #undef CPP_SPEC
+ #if (TARGET_DEFAULT & 1) == 0
+ #define CPP_SPEC "%{msnake:-D_PA_RISC1_1}\
+  %{mpa-risc-1-1:-D_PA_RISC1_1}"
+ #else
+ #define CPP_SPEC "%{!mpa-risc-1-0:%{!mnosnake:-D_PA_RISC1_1}}"
+ #endif
+ 
+ #undef CC1_SPEC
+ #define CC1_SPEC "-fwritable-strings %{pg:} %{p:}"
+ 
+ #undef CPP_PREDEFINES
+ #define CPP_PREDEFINES "-Dhppa -DPWB -Dunix -D_HIUX_SOURCE -D__H3050R -D__H3050RX"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC "-u main -a archive"
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/pa/pa.c gcc-2.5.2/config/pa/pa.c
*** gcc-2.5.0/config/pa/pa.c	Thu Oct 21 01:51:02 1993
--- gcc-2.5.2/config/pa/pa.c	Sat Oct 30 16:32:36 1993
***************
*** 803,807 ****
        xoperands[0] = scratch_reg;
        xoperands[1] = XEXP (force_const_mem (mode, operand1), 0);
!       emit_move_sequence (xoperands, mode, 0);
  
        /* Now load the destination register.  */
--- 803,807 ----
        xoperands[0] = scratch_reg;
        xoperands[1] = XEXP (force_const_mem (mode, operand1), 0);
!       emit_move_sequence (xoperands, Pmode, 0);
  
        /* Now load the destination register.  */
***************
*** 3672,3676 ****
  	return "addib,%C2 %1,%4,%3\n\tstw %4,%0";
        else
! 	return "addi,%N2 %1,%4,%0\n\tbl %3,0\n\tstw %4,%0";
      }
  }
--- 3672,3676 ----
  	return "addib,%C2 %1,%4,%3\n\tstw %4,%0";
        else
! 	return "addi,%N2 %1,%4,%4\n\tbl %3,0\n\tstw %4,%0";
      }
  }
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/pa/pa1-ghiux.h gcc-2.5.2/config/pa/pa1-ghiux.h
*** gcc-2.5.0/config/pa/pa1-ghiux.h
--- gcc-2.5.2/config/pa/pa1-ghiux.h	Sat Oct 30 17:20:33 1993
***************
*** 0 ****
--- 1,27 ----
+ /* Definitions of target machine for GNU compiler, for HP PA-RISC 1.1 on HI-UX.
+    Copyright (C) 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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+ 
+ /* This is the same as pa-hiux.h, except that we generate snake code by
+    default and we have to deal with assembler weirdness. */
+ 
+ #define HP_FP_ARG_DESCRIPTOR_REVERSED
+ 
+ #define TARGET_DEFAULT 1	/* TARGET_SNAKE */
+ 
+ #include "pa/pa-ghiux.h"
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/pa/pa1-hiux.h gcc-2.5.2/config/pa/pa1-hiux.h
*** gcc-2.5.0/config/pa/pa1-hiux.h
--- gcc-2.5.2/config/pa/pa1-hiux.h	Sat Oct 30 17:19:49 1993
***************
*** 0 ****
--- 1,27 ----
+ /* Definitions of target machine for GNU compiler, for HP PA-RISC 1.1 on HU-IX.
+    Copyright (C) 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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+ 
+ /* This is the same as pa-hiux.h, except that we generate snake code by
+    default and have to deal with assembler weirdness. */
+ 
+ #define HP_FP_ARG_DESCRIPTOR_REVERSED
+ 
+ #define TARGET_DEFAULT 1	/* TARGET_SNAKE */
+ 
+ #include "pa/pa-hiux.h"
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/pa/x-pa-hiux gcc-2.5.2/config/pa/x-pa-hiux
*** gcc-2.5.0/config/pa/x-pa-hiux
--- gcc-2.5.2/config/pa/x-pa-hiux	Sat Oct 30 17:12:57 1993
***************
*** 0 ****
--- 1 ----
+ ALLOCA=alloca.o
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/pa/xm-pahiux.h gcc-2.5.2/config/pa/xm-pahiux.h
*** gcc-2.5.0/config/pa/xm-pahiux.h
--- gcc-2.5.2/config/pa/xm-pahiux.h	Sat Oct 30 17:21:23 1993
***************
*** 0 ****
--- 1,62 ----
+ /* Configuration for GNU C-compiler for PA-RISC on HI-UX.
+    Copyright (C) 1988 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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+ 
+ 
+ /* HI-UX is a flavor of System V */
+ #define USG
+ 
+ /* Use System V memory functions.  */
+ #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 rindex strrchr
+ #define index strchr
+ 
+ /* #defines that need visibility everywhere.  */
+ #define FALSE 0
+ #define TRUE 1
+ 
+ /* This describes the machine the compiler is hosted on.  */
+ #define HOST_BITS_PER_CHAR 8
+ #define HOST_BITS_PER_SHORT 16
+ #define HOST_BITS_PER_INT 32
+ #define HOST_BITS_PER_LONG 32
+ #define HOST_BITS_PER_LONGLONG 64
+ 
+ /* Doubles are stored in memory with the high order word first.  This
+    matters when cross-compiling.  */
+ #define HOST_WORDS_BIG_ENDIAN 1
+ 
+ /* Place any machine-dependent include files here, in case we
+    are bootstrapping.  */
+ 
+ /* target machine dependencies.
+    tm.h is a symbolic link to the actual target specific file.   */
+ #include "tm.h"
+ 
+ /* Arguments to use with `exit'.  */
+ #define SUCCESS_EXIT_CODE 0
+ #define FATAL_EXIT_CODE 33
+ 
+ /* Don't try to use sys_siglist.  */
+ #define NO_SYS_SIGLIST
+ 
+ /* HP's compiler has problems with enum bitfields.  */
+ #define ONLY_INT_FIELDS
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/rs6000/rs6000.c gcc-2.5.2/config/rs6000/rs6000.c
*** gcc-2.5.0/config/rs6000/rs6000.c	Wed Oct 20 21:56:55 1993
--- gcc-2.5.2/config/rs6000/rs6000.c	Tue Oct 26 19:03:58 1993
***************
*** 86,89 ****
--- 86,91 ----
  	 {"rios", PROCESSOR_RIOS1, MASK_POWER, MASK_POWER2 | POWERPC_MASKS},
  	 {"rios1", PROCESSOR_RIOS1, MASK_POWER, MASK_POWER2 | POWERPC_MASKS},
+ 	 {"rsc", PROCESSOR_PPC601, MASK_POWER, MASK_POWER2 | POWERPC_MASKS},
+ 	 {"rsc1", PROCESSOR_PPC601, MASK_POWER, MASK_POWER2 | POWERPC_MASKS},
  	 {"rios2", PROCESSOR_RIOS2, MASK_POWER | MASK_POWER2 , POWERPC_MASKS},
  	 {"601", PROCESSOR_PPC601,
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/rs6000/rs6000.md gcc-2.5.2/config/rs6000/rs6000.md
*** gcc-2.5.0/config/rs6000/rs6000.md	Wed Oct 20 21:57:21 1993
--- gcc-2.5.2/config/rs6000/rs6000.md	Fri Oct 29 12:54:10 1993
***************
*** 169,172 ****
--- 169,173 ----
    1 0
    [(eq_attr "type" "imul,idiv")])
+ 
  (define_function_unit "imuldiv" 1 0
    (and (eq_attr "type" "imul")
***************
*** 174,177 ****
--- 175,179 ----
    2 0
    [(eq_attr "type" "integer")])
+ 
  (define_function_unit "imuldiv" 1 0
    (and (eq_attr "type" "idiv")
***************
*** 179,182 ****
--- 181,185 ----
    13 0
    [(eq_attr "type" "integer")])
+ 
  (define_function_unit "fpu2" 2 0
    (and (eq_attr "type" "fp")
***************
*** 2101,2106 ****
  	(plus:SF (match_operand:SF 1 "gpc_reg_operand" "%f")
  		 (match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWER"
!   "{fa|fadd} %0,%1,%2"
    [(set_attr "type" "fp")])
  
--- 2104,2109 ----
  	(plus:SF (match_operand:SF 1 "gpc_reg_operand" "%f")
  		 (match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWERPC"
!   "fadds %0,%1,%2"
    [(set_attr "type" "fp")])
  
***************
*** 2109,2114 ****
  	(plus:SF (match_operand:SF 1 "gpc_reg_operand" "%f")
  		 (match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWERPC"
!   "fadds %0,%1,%2"
    [(set_attr "type" "fp")])
  
--- 2112,2117 ----
  	(plus:SF (match_operand:SF 1 "gpc_reg_operand" "%f")
  		 (match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWER"
!   "{fa|fadd} %0,%1,%2"
    [(set_attr "type" "fp")])
  
***************
*** 2124,2129 ****
  	(minus:SF (match_operand:SF 1 "gpc_reg_operand" "f")
  		  (match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWER"
!   "{fs|fsub} %0,%1,%2"
    [(set_attr "type" "fp")])
  
--- 2127,2132 ----
  	(minus:SF (match_operand:SF 1 "gpc_reg_operand" "f")
  		  (match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWERPC"
!   "fsubs %0,%1,%2"
    [(set_attr "type" "fp")])
  
***************
*** 2132,2137 ****
  	(minus:SF (match_operand:SF 1 "gpc_reg_operand" "f")
  		  (match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWERPC"
!   "fsubs %0,%1,%2"
    [(set_attr "type" "fp")])
  
--- 2135,2140 ----
  	(minus:SF (match_operand:SF 1 "gpc_reg_operand" "f")
  		  (match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWER"
!   "{fs|fsub} %0,%1,%2"
    [(set_attr "type" "fp")])
  
***************
*** 2147,2152 ****
  	(mult:SF (match_operand:SF 1 "gpc_reg_operand" "%f")
  		 (match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWER"
!   "{fm|fmul} %0,%1,%2"
    [(set_attr "type" "fp")])
  
--- 2150,2155 ----
  	(mult:SF (match_operand:SF 1 "gpc_reg_operand" "%f")
  		 (match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWERPC"
!   "fmuls %0,%1,%2"
    [(set_attr "type" "fp")])
  
***************
*** 2155,2160 ****
  	(mult:SF (match_operand:SF 1 "gpc_reg_operand" "%f")
  		 (match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWERPC"
!   "fmuls %0,%1,%2"
    [(set_attr "type" "fp")])
  
--- 2158,2163 ----
  	(mult:SF (match_operand:SF 1 "gpc_reg_operand" "%f")
  		 (match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWER"
!   "{fm|fmul} %0,%1,%2"
    [(set_attr "type" "fp")])
  
***************
*** 2170,2175 ****
  	(div:SF (match_operand:SF 1 "gpc_reg_operand" "f")
  		(match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWER"
!   "{fd|fdiv} %0,%1,%2"
    [(set_attr "type" "sdiv")])
  
--- 2173,2178 ----
  	(div:SF (match_operand:SF 1 "gpc_reg_operand" "f")
  		(match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWERPC"
!   "fdivs %0,%1,%2"
    [(set_attr "type" "sdiv")])
  
***************
*** 2178,2183 ****
  	(div:SF (match_operand:SF 1 "gpc_reg_operand" "f")
  		(match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWERPC"
!   "fdivs %0,%1,%2"
    [(set_attr "type" "sdiv")])
  
--- 2181,2186 ----
  	(div:SF (match_operand:SF 1 "gpc_reg_operand" "f")
  		(match_operand:SF 2 "gpc_reg_operand" "f")))]
!   "TARGET_POWER"
!   "{fd|fdiv} %0,%1,%2"
    [(set_attr "type" "sdiv")])
  
***************
*** 2187,2192 ****
  			  (match_operand:SF 2 "gpc_reg_operand" "f"))
  		 (match_operand:SF 3 "gpc_reg_operand" "f")))]
!   "TARGET_POWER"
!   "{fma|fmadd} %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
--- 2190,2195 ----
  			  (match_operand:SF 2 "gpc_reg_operand" "f"))
  		 (match_operand:SF 3 "gpc_reg_operand" "f")))]
!   "TARGET_POWERPC"
!   "fmadds %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
***************
*** 2196,2201 ****
  			  (match_operand:SF 2 "gpc_reg_operand" "f"))
  		 (match_operand:SF 3 "gpc_reg_operand" "f")))]
!   "TARGET_POWERPC"
!   "fmadds %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
--- 2199,2204 ----
  			  (match_operand:SF 2 "gpc_reg_operand" "f"))
  		 (match_operand:SF 3 "gpc_reg_operand" "f")))]
!   "TARGET_POWER"
!   "{fma|fmadd} %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
***************
*** 2205,2210 ****
  			   (match_operand:SF 2 "gpc_reg_operand" "f"))
  		  (match_operand:SF 3 "gpc_reg_operand" "f")))]
!   "TARGET_POWER"
!   "{fms|fmsub} %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
--- 2208,2213 ----
  			   (match_operand:SF 2 "gpc_reg_operand" "f"))
  		  (match_operand:SF 3 "gpc_reg_operand" "f")))]
!   "TARGET_POWERPC"
!   "fmsubs %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
***************
*** 2214,2219 ****
  			   (match_operand:SF 2 "gpc_reg_operand" "f"))
  		  (match_operand:SF 3 "gpc_reg_operand" "f")))]
!   "TARGET_POWERPC"
!   "fmsubs %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
--- 2217,2222 ----
  			   (match_operand:SF 2 "gpc_reg_operand" "f"))
  		  (match_operand:SF 3 "gpc_reg_operand" "f")))]
!   "TARGET_POWER"
!   "{fms|fmsub} %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
***************
*** 2223,2228 ****
  				  (match_operand:SF 2 "gpc_reg_operand" "f"))
  			 (match_operand:SF 3 "gpc_reg_operand" "f"))))]
!   "TARGET_POWER"
!   "{fnma|fnmadd} %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
--- 2226,2231 ----
  				  (match_operand:SF 2 "gpc_reg_operand" "f"))
  			 (match_operand:SF 3 "gpc_reg_operand" "f"))))]
!   "TARGET_POWERPC"
!   "fnmadds %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
***************
*** 2232,2237 ****
  				  (match_operand:SF 2 "gpc_reg_operand" "f"))
  			 (match_operand:SF 3 "gpc_reg_operand" "f"))))]
!   "TARGET_POWERPC"
!   "fnmadds %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
--- 2235,2240 ----
  				  (match_operand:SF 2 "gpc_reg_operand" "f"))
  			 (match_operand:SF 3 "gpc_reg_operand" "f"))))]
!   "TARGET_POWER"
!   "{fnma|fnmadd} %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
***************
*** 2241,2246 ****
  				   (match_operand:SF 2 "gpc_reg_operand" "f"))
  			  (match_operand:SF 3 "gpc_reg_operand" "f"))))]
!   "TARGET_POWER"
!   "{fnms|fnmsub} %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
--- 2244,2249 ----
  				   (match_operand:SF 2 "gpc_reg_operand" "f"))
  			  (match_operand:SF 3 "gpc_reg_operand" "f"))))]
!   "TARGET_POWERPC"
!   "fnmsubs %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
***************
*** 2250,2255 ****
  				   (match_operand:SF 2 "gpc_reg_operand" "f"))
  			  (match_operand:SF 3 "gpc_reg_operand" "f"))))]
!   "TARGET_POWERPC"
!   "fnmsubs %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
--- 2253,2258 ----
  				   (match_operand:SF 2 "gpc_reg_operand" "f"))
  			  (match_operand:SF 3 "gpc_reg_operand" "f"))))]
!   "TARGET_POWER"
!   "{fnms|fnmsub} %0,%1,%2,%3"
    [(set_attr "type" "fp")])
  
***************
*** 2700,2704 ****
      operands[1] = force_reg (SImode, operands[1]);
  
!   if (CONSTANT_P (operands[1]) && GET_CODE (operands[1]) != CONST_INT)
      {
        operands[1] = force_const_mem (SImode, operands[1]);
--- 2703,2708 ----
      operands[1] = force_reg (SImode, operands[1]);
  
!   if (CONSTANT_P (operands[1]) && GET_CODE (operands[1]) != CONST_INT
!       && ! LEGITIMATE_CONSTANT_POOL_ADDRESS_P (operands[1]))
      {
        operands[1] = force_const_mem (SImode, operands[1]);
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/sparc/sol2.h gcc-2.5.2/config/sparc/sol2.h
*** gcc-2.5.0/config/sparc/sol2.h	Sat Oct  2 04:23:38 1993
--- gcc-2.5.2/config/sparc/sol2.h	Mon Oct 25 13:57:59 1993
***************
*** 226,227 ****
--- 226,233 ----
     || (CHAR) == 'h' \
     || (CHAR) == 'z')
+ 
+ /* ??? This does not work in SunOS 4.x, so it is not enabled in sparc.h.
+    Instead, it is enabled here, because it does work under Solaris.  */
+ /* Define for support of TFmode long double and REAL_ARITHMETIC.
+    Sparc ABI says that long double is 4 words.  */
+ #define LONG_DOUBLE_TYPE_SIZE 128
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config/sparc/sparc.h gcc-2.5.2/config/sparc/sparc.h
*** gcc-2.5.0/config/sparc/sparc.h	Wed Oct 20 18:21:25 1993
--- gcc-2.5.2/config/sparc/sparc.h	Mon Oct 25 13:58:08 1993
***************
*** 180,186 ****
--- 180,190 ----
  /* target machine storage layout */
  
+ #if 0
+ /* ??? This does not work in SunOS 4.x, so it is not enabled here.
+    Instead, it is enabled in sol2.h, because it does work under Solaris.  */
  /* Define for support of TFmode long double and REAL_ARITHMETIC.
     Sparc ABI says that long double is 4 words.  */
  #define LONG_DOUBLE_TYPE_SIZE 128
+ #endif
  
  /* Define for cross-compilation to a sparc target with no TFmode from a host
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/config.sub gcc-2.5.2/config.sub
*** gcc-2.5.0/config.sub	Mon Oct 18 23:25:53 1993
--- gcc-2.5.2/config.sub	Sat Oct 30 22:46:16 1993
***************
*** 66,70 ****
  	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
  	-unicom* | -ibm* | -next* | -hp | -isi* | -apollo | -altos* | \
! 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi | \
  	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
  	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp )
--- 66,70 ----
  	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
  	-unicom* | -ibm* | -next* | -hp | -isi* | -apollo | -altos* | \
! 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
  	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
  	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp )
***************
*** 72,75 ****
--- 72,78 ----
  		basic_machine=$1
  		;;
+ 	-hiux*)
+ 		os==-hiuxwe2
+ 		;;
  	-sco4)
  		os=-sco3.2v4
***************
*** 161,164 ****
--- 164,171 ----
  		basic_machine=spur-unknown
  		;;
+ 	paragon)
+ 		basic_machine=i860-intel
+ 		os=-osf
+ 		;;
  	alliant | fx80)
  		basic_machine=fx80-alliant
***************
*** 314,317 ****
--- 321,332 ----
  		basic_machine=hppa1.0-hp
  		;;
+ 	h3050r* | hiux*)
+ 		basic_machine=hppa1.1-hitachi
+ 		os=-hiuxwe2
+ 		;;
+ 	pa-hitachi)
+ 		basic_machine=hppa1.1-hitachi
+ 		os=-hiuxwe2
+ 		;;
  	isi68 | isi)
  		basic_machine=m68k-isi
***************
*** 520,524 ****
  	      | -nindy* | -vxworks* | -ebmon* | -hms* | -mvs* | -clix* \
  	      | -riscos* | -linux* | -uniplus* | -iris* | -rtu* | -xenix* \
! 	      | -386bsd* | -netbsd* | -riscix* | -lynxos*)
  		;;
  	-sunos5*)
--- 535,539 ----
  	      | -nindy* | -vxworks* | -ebmon* | -hms* | -mvs* | -clix* \
  	      | -riscos* | -linux* | -uniplus* | -iris* | -rtu* | -xenix* \
! 	      | -hiux* | -386bsd* | -netbsd* | -riscix* | -lynxos*)
  		;;
  	-sunos5*)
***************
*** 616,619 ****
--- 631,637 ----
  		os=-hpux
  		;;
+ 	*-hitachi)
+ 		os=-hiux
+ 		;;
  	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
  		os=-sysv
***************
*** 690,693 ****
--- 708,714 ----
  			-hpux*)
  				vendor=hp
+ 				;;
+ 			-hiux*)
+ 				vendor=hitachi
  				;;
  			-unos*)
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/configure gcc-2.5.2/configure
*** gcc-2.5.0/configure	Thu Oct 21 14:38:34 1993
--- gcc-2.5.2/configure	Sat Oct 30 23:20:41 1993
***************
*** 190,193 ****
--- 190,194 ----
       -enable-* | --enable-*) ;; #ignored
       -x | --x) ;; # ignored
+      --verbose) ;; # ignored for now
       -*)
  	echo "Invalid option \`$arg'" 1>&2
***************
*** 509,512 ****
--- 510,515 ----
  		tm_file=i386/seq-sysv3.h
  		tmake_file=t-svr3
+ 		fixincludes=fixinc.svr4
+ 		broken_install=yes
  		;;
  	i[34]86-*-sysv*)		# Intel 80386's running system V
***************
*** 550,553 ****
--- 553,562 ----
  		fixincludes=Makefile.in
  		;;
+ 	i860-*-osf*)			# Intel Paragon XP/S, OSF/1AD
+ 		xm_file=i860/xm-paragon.h
+ 		tm_file=i860/paragon.h
+ 		tmake_file=t-osf
+ 		broken_install=yes
+ 		;;
  	i860-*-mach*)
  		xm_file=i860/xm-i860.h
***************
*** 698,701 ****
--- 707,726 ----
  		header_files=math-68881.h
  		;;
+ 	m68k-hp-hpux7*)	# HP 9000 series 300 running HPUX version 7.
+ 		xm_file=m68k/xm-hp320.h
+ 		if [ x$gas = xyes ]
+ 		then
+ 			xmake_file=m68k/x-hp320g
+ 			tmake_file=m68k/t-hp320g
+ 			tm_file=m68k/hp320g.h
+ 		else
+ 			xmake_file=m68k/x-hp320
+ 			tm_file=m68k/hpux7.h
+ 		fi
+ 		broken_install=yes
+ 		install_headers_dir=install-headers-cpio
+ 		use_collect2=yes
+ 		header_files=math-68881.h
+ 		;;
  	m68k-hp-hpux*)	# HP 9000 series 300
  		xm_file=m68k/xm-hp320.h
***************
*** 1014,1029 ****
  		use_collect2=yes
  		;;
! #	mips-sgi-irix5*)                # Mostly like a MIPS.
! #		tm_file=mips/iris5.h
! #		xm_file=mips/xm-iris4.h
! #		broken_install=yes
! #		xmake_file=mips/x-iris
! #		# mips-tfile doesn't work yet
! #		tmake_file=mips/t-mips-gas
! #		if [ x$gnu_ld != xyes ]
! #		then
! #			use_collect2=yes
! #		fi
! #		;;
  	mips-sgi-irix4loser*)		# Mostly like a MIPS.
  		if [ x$stabs = xyes ]; then
--- 1039,1050 ----
  		use_collect2=yes
  		;;
! 	mips-sgi-irix5*)		# SGI System V.4., IRIX 5
! 		tm_file=mips/iris5.h
! 		xm_file=mips/xm-iris5.h
! 		broken_install=yes
! 		xmake_file=mips/x-iris
! 		# mips-tfile doesn't work yet
! 		tmake_file=mips/t-mips-gas
! 		;;
  	mips-sgi-irix4loser*)		# Mostly like a MIPS.
  		if [ x$stabs = xyes ]; then
***************
*** 1482,1485 ****
--- 1503,1536 ----
  		else
  			tm_file=pa/pa-hpux.h
+ 		fi
+ 		broken_install=yes
+ 		install_headers_dir=install-headers-cpio
+ 		use_collect2=yes
+ 		;;
+ 	hppa1.1-*-hiux*)
+ 		cpu_type=pa
+ 		xm_file=pa/xm-pahiux.h
+ 		xmake_file=pa/x-pa-hiux
+ 		tmake_file=t-libc-ok
+ 		if [ x$gas = xyes ]
+ 		then
+ 			tm_file=pa/pa1-ghiux.h
+ 		else
+ 			tm_file=pa/pa1-hiux.h
+ 		fi
+ 		broken_install=yes
+ 		install_headers_dir=install-headers-cpio
+ 		use_collect2=yes
+ 		;;
+ 	hppa1.0-*-hiux*)
+ 		cpu_type=pa
+ 		xm_file=pa/xm-pahiux.h
+ 		xmake_file=pa/x-pa-hiux
+ 		tmake_file=t-libc-ok
+ 		if [ x$gas = xyes ]
+ 		then
+ 			tm_file=pa/pa-ghiux.h
+ 		else
+ 			tm_file=pa/pa-hiux.h
  		fi
  		broken_install=yes
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/cp-init.c gcc-2.5.2/cp-init.c
*** gcc-2.5.0/cp-init.c	Fri Oct  8 15:00:59 1993
--- gcc-2.5.2/cp-init.c	Sun Oct 31 16:41:49 1993
***************
*** 1546,1549 ****
--- 1546,1550 ----
  	      if (exp == DECL_RESULT (current_function_decl))
  		DECL_INITIAL (exp) = init;
+ 	      TREE_SIDE_EFFECTS (init) = 1;
  	      expand_expr (init, const0_rtx, VOIDmode, 0);
  	      free_temp_slots ();
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/cp-lex.c gcc-2.5.2/cp-lex.c
*** gcc-2.5.0/cp-lex.c	Fri Oct  8 15:01:12 1993
--- gcc-2.5.2/cp-lex.c	Tue Oct 26 14:25:20 1993
***************
*** 1231,1234 ****
--- 1231,1237 ----
  	  c = getch ();
  	  obstack_1grow (this_obstack, c);
+ 
+ 	  /* Make sure we continue the loop */
+ 	  c = 0;
  	  continue;
  	}
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/cp-method.c gcc-2.5.2/cp-method.c
*** gcc-2.5.0/cp-method.c	Fri Oct  8 15:01:27 1993
--- gcc-2.5.2/cp-method.c	Thu Oct 28 19:53:32 1993
***************
*** 1378,1381 ****
--- 1378,1387 ----
    tree type;
  
+   /* There need never be any confusion about the meaning of a non-overloaded
+      name.  If it only designates one thing, then it only designates one
+      thing.  */
+   if (TREE_CODE (value) == TREE_LIST && TREE_CHAIN (value) == 0)
+     value = TREE_VALUE (value);
+ 
    if (TREE_CODE (value) == ERROR_MARK)
      {
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/cp-typeck.c gcc-2.5.2/cp-typeck.c
*** gcc-2.5.0/cp-typeck.c	Fri Oct  8 19:55:43 1993
--- gcc-2.5.2/cp-typeck.c	Thu Oct 28 19:16:34 1993
***************
*** 2044,2049 ****
  
        vtbl = build1 (ADDR_EXPR, ptr_type_node, instance);
!       vtbl = build (PLUS_EXPR, build_pointer_type (build_pointer_type (vtable_entry_type)),
! 		    vtbl, delta2);
        vtbl = build_indirect_ref (vtbl, NULL_PTR);
        aref = build_array_ref (vtbl, size_binop (MINUS_EXPR,
--- 2044,2050 ----
  
        vtbl = build1 (ADDR_EXPR, ptr_type_node, instance);
!       vtbl = build (PLUS_EXPR,
! 		    build_pointer_type (build_pointer_type (vtable_entry_type)),
! 		    vtbl, convert (sizetype, delta2));
        vtbl = build_indirect_ref (vtbl, NULL_PTR);
        aref = build_array_ref (vtbl, size_binop (MINUS_EXPR,
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/cse.c gcc-2.5.2/cse.c
*** gcc-2.5.0/cse.c	Wed Oct 20 22:44:15 1993
--- gcc-2.5.2/cse.c	Wed Oct 27 19:15:17 1993
***************
*** 6404,6410 ****
            else if (src_eqv_cost <= src_related_cost
  	           && src_eqv_cost <= src_elt_cost)
! 	    trial = src_eqv_here, src_eqv_cost = 10000;
            else if (src_related_cost <= src_elt_cost)
! 	    trial = src_related, src_related_cost = 10000;
            else
  	    {
--- 6404,6410 ----
            else if (src_eqv_cost <= src_related_cost
  	           && src_eqv_cost <= src_elt_cost)
! 	    trial = copy_rtx (src_eqv_here), src_eqv_cost = 10000;
            else if (src_related_cost <= src_elt_cost)
! 	    trial = copy_rtx (src_related), src_related_cost = 10000;
            else
  	    {
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/expmed.c gcc-2.5.2/expmed.c
*** gcc-2.5.0/expmed.c	Thu Oct 21 13:44:37 1993
--- gcc-2.5.2/expmed.c	Wed Oct 27 01:26:20 1993
***************
*** 71,75 ****
    /* This is "some random pseudo register" for purposes of calling recog
       to see what insns exist.  */
!   rtx reg = gen_rtx (REG, word_mode, FIRST_PSEUDO_REGISTER);
    rtx shift_insn, shiftadd_insn, shiftsub_insn;
    int dummy;
--- 71,75 ----
    /* This is "some random pseudo register" for purposes of calling recog
       to see what insns exist.  */
!   rtx reg = gen_rtx (REG, word_mode, 10000);
    rtx shift_insn, shiftadd_insn, shiftsub_insn;
    int dummy;
***************
*** 320,324 ****
  				     bitsize - i * BITS_PER_WORD),
  			   bitnum + bit_offset, word_mode,
! 			   operand_subword_force (value, wordnum, fieldmode),
  			   align, total_size);
  	}
--- 320,327 ----
  				     bitsize - i * BITS_PER_WORD),
  			   bitnum + bit_offset, word_mode,
! 			   operand_subword_force (value, wordnum,
! 						  (GET_MODE (value) == VOIDmode
! 						   ? fieldmode
! 						   : GET_MODE (value))),
  			   align, total_size);
  	}
***************
*** 2101,2105 ****
  
        mult_cost = rtx_cost (gen_rtx (MULT, mode, op0, op1), SET);
!       mult_cost = MIN (12 * add_cost, mult_cost);
  
        synth_mult (&alg, val, mult_cost);
--- 2104,2108 ----
  
        mult_cost = rtx_cost (gen_rtx (MULT, mode, op0, op1), SET);
!       mult_cost = MIN (8 * add_cost, mult_cost);
  
        synth_mult (&alg, val, mult_cost);
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/expr.c gcc-2.5.2/expr.c
*** gcc-2.5.0/expr.c	Wed Oct 20 17:36:56 1993
--- gcc-2.5.2/expr.c	Sun Oct 31 13:31:49 1993
***************
*** 875,878 ****
--- 875,880 ----
  		   != CODE_FOR_nothing))
  	{
+ 	  if (GET_CODE (to) == REG)
+ 	    emit_insn (gen_rtx (CLOBBER, VOIDmode, to));
  	  convert_move (gen_lowpart (word_mode, to), from, unsignedp);
  	  emit_unop_insn (code, to,
***************
*** 1825,1829 ****
  	}
  
!       group_insns (prev);
  
        return get_last_insn ();
--- 1827,1835 ----
  	}
  
!       if (GET_CODE (x) != CONCAT)
! 	/* If X is a CONCAT, we got insns like RD = RS, ID = IS,
! 	   each with a separate pseudo as destination.
! 	   It's not correct for flow to treat them as a unit.  */
! 	group_insns (prev);
  
        return get_last_insn ();
***************
*** 2311,2315 ****
  
        bc_expand_expr (from);
!       bc_emit_instruction (dup);
  
        dest_innermost = bc_expand_address (to);
--- 2317,2321 ----
  
        bc_expand_expr (from);
!       bc_emit_instruction (duplicate);
  
        dest_innermost = bc_expand_address (to);
***************
*** 2972,2978 ****
  		   align, total_size);
  
        emit_move_insn (target, object);
  
!       return target;
      }
  
--- 2978,2986 ----
  		   align, total_size);
  
+       /* Even though we aren't returning target, we need to
+ 	 give it the updated value.  */
        emit_move_insn (target, object);
  
!       return blk_object;
      }
  
***************
*** 3927,3937 ****
  	       TREE_TYPE (object) != type
  	       && (TREE_CODE_CLASS (TREE_CODE (object)) == 'r'
! 		   || TREE_CODE_CLASS (TREE_CODE (object) == '1'
! 		   || TREE_CODE_CLASS (TREE_CODE (object) == '2'
! 		   || TREE_CODE_CLASS (TREE_CODE (object) == 'e'))));
  	       object = TREE_OPERAND (object, 0))
  	    ;
  
! 	  if (object && TREE_TYPE (object))
  	    return expand_expr (object, original_target, tmode, modifier);
  	}
--- 3935,3945 ----
  	       TREE_TYPE (object) != type
  	       && (TREE_CODE_CLASS (TREE_CODE (object)) == 'r'
! 		   || TREE_CODE_CLASS (TREE_CODE (object)) == '1'
! 		   || TREE_CODE_CLASS (TREE_CODE (object)) == '2'
! 		   || TREE_CODE_CLASS (TREE_CODE (object)) == 'e');
  	       object = TREE_OPERAND (object, 0))
  	    ;
  
! 	  if (object && TREE_TYPE (object) == type)
  	    return expand_expr (object, original_target, tmode, modifier);
  	}
***************
*** 5768,5772 ****
  
  	/* Complex construction should appear as a single unit.  */
! 	group_insns (prev);
  
  	return target;
--- 5776,5784 ----
  
  	/* Complex construction should appear as a single unit.  */
! 	if (GET_CODE (target) != CONCAT)
! 	  /* If TARGET is a CONCAT, we got insns like RD = RS, ID = IS,
! 	     each with a separate pseudo as destination.
! 	     It's not correct for flow to treat them as a unit.  */
! 	  group_insns (prev);
  
  	return target;
***************
*** 5808,5812 ****
  
  	/* Conjugate should appear as a single unit */
! 	group_insns (prev);
  
  	return target;
--- 5820,5828 ----
  
  	/* Conjugate should appear as a single unit */
! 	if (GET_CODE (target) != CONCAT)
! 	  /* If TARGET is a CONCAT, we got insns like RD = RS, ID = - IS,
! 	     each with a separate pseudo as destination.
! 	     It's not correct for flow to treat them as a unit.  */
! 	  group_insns (prev);
  
  	return target;
***************
*** 6000,6004 ****
  						   TYPE_ALIGN (TREE_TYPE(exp)));
  	  bc_expand_expr (TREE_OPERAND (exp, 0));
! 	  bc_emit_instruction (dup);
  	  
  	  bc_load_localaddr (SAVE_EXPR_RTL (exp));
--- 6016,6020 ----
  						   TYPE_ALIGN (TREE_TYPE(exp)));
  	  bc_expand_expr (TREE_OPERAND (exp, 0));
! 	  bc_emit_instruction (duplicate);
  	  
  	  bc_load_localaddr (SAVE_EXPR_RTL (exp));
***************
*** 6316,6320 ****
    lab = bc_get_bytecode_label ();
    
!   bc_emit_instruction (dup);
    bc_emit_bytecode (opcode);
    bc_emit_bytecode_labelref (lab);
--- 6332,6336 ----
    lab = bc_get_bytecode_label ();
    
!   bc_emit_instruction (duplicate);
    bc_emit_bytecode (opcode);
    bc_emit_bytecode_labelref (lab);
***************
*** 8281,8288 ****
        if (integer_zerop (TREE_OPERAND (exp, 1)))
  	do_jump (TREE_OPERAND (exp, 0), if_true_label, if_false_label);
!       else if ((GET_MODE_CLASS (TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0))))
! 		== MODE_INT)
! 	       && 
! 	       !can_compare_p (TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0)))))
  	do_jump_by_parts_equality (exp, if_false_label, if_true_label);
        else
--- 8297,8306 ----
        if (integer_zerop (TREE_OPERAND (exp, 1)))
  	do_jump (TREE_OPERAND (exp, 0), if_true_label, if_false_label);
!       else if (((GET_MODE_CLASS (TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0))))
! 		 == MODE_INT)
! 		&& 
! 		!can_compare_p (TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0)))))
! 	       || GET_MODE_CLASS (TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0)))) == MODE_COMPLEX_FLOAT
! 	       || GET_MODE_CLASS (TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0)))) == MODE_COMPLEX_INT)
  	do_jump_by_parts_equality (exp, if_false_label, if_true_label);
        else
***************
*** 8293,8300 ****
        if (integer_zerop (TREE_OPERAND (exp, 1)))
  	do_jump (TREE_OPERAND (exp, 0), if_false_label, if_true_label);
!       else if ((GET_MODE_CLASS (TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0))))
! 		== MODE_INT)
! 	       && 
! 	       !can_compare_p (TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0)))))
  	do_jump_by_parts_equality (exp, if_true_label, if_false_label);
        else
--- 8311,8320 ----
        if (integer_zerop (TREE_OPERAND (exp, 1)))
  	do_jump (TREE_OPERAND (exp, 0), if_false_label, if_true_label);
!       else if (((GET_MODE_CLASS (TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0))))
! 		 == MODE_INT)
! 		&& 
! 		!can_compare_p (TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0)))))
! 	       || GET_MODE_CLASS (TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0)))) == MODE_COMPLEX_FLOAT
! 	       || GET_MODE_CLASS (TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0)))) == MODE_COMPLEX_INT)
  	do_jump_by_parts_equality (exp, if_true_label, if_false_label);
        else
***************
*** 8922,8926 ****
        if (bitnum != 0)
  	op0 = expand_shift (RSHIFT_EXPR, GET_MODE (op0), op0,
! 			    size_int (bitnum), target, ops_unsignedp);
  
        if (GET_MODE (op0) != mode)
--- 8942,8946 ----
        if (bitnum != 0)
  	op0 = expand_shift (RSHIFT_EXPR, GET_MODE (op0), op0,
! 			    size_int (bitnum), subtarget, ops_unsignedp);
  
        if (GET_MODE (op0) != mode)
***************
*** 8928,8932 ****
  
        if ((code == EQ && ! invert) || (code == NE && invert))
! 	op0 = expand_binop (mode, xor_optab, op0, const1_rtx, target,
  			    ops_unsignedp, OPTAB_LIB_WIDEN);
  
--- 8948,8952 ----
  
        if ((code == EQ && ! invert) || (code == NE && invert))
! 	op0 = expand_binop (mode, xor_optab, op0, const1_rtx, subtarget,
  			    ops_unsignedp, OPTAB_LIB_WIDEN);
  
***************
*** 8933,8937 ****
        /* Put the AND last so it can combine with more things.  */
        if (bitnum != TYPE_PRECISION (type) - 1)
! 	op0 = expand_and (op0, const1_rtx, target);
  
        return op0;
--- 8953,8957 ----
        /* Put the AND last so it can combine with more things.  */
        if (bitnum != TYPE_PRECISION (type) - 1)
! 	op0 = expand_and (op0, const1_rtx, subtarget);
  
        return op0;
***************
*** 9638,9642 ****
  	  != list_length (TYPE_FIELDS (TREE_TYPE (constr))))
  	{
! 	  bc_emit_instruction (dup);
  	  bc_emit_instruction (constSI, (HOST_WIDE_INT) int_size_in_bytes (TREE_TYPE (constr)));
  	  bc_emit_instruction (clearBLK);
--- 9658,9662 ----
  	  != list_length (TYPE_FIELDS (TREE_TYPE (constr))))
  	{
! 	  bc_emit_instruction (duplicate);
  	  bc_emit_instruction (constSI, (HOST_WIDE_INT) int_size_in_bytes (TREE_TYPE (constr)));
  	  bc_emit_instruction (clearBLK);
***************
*** 9685,9689 ****
  	if (list_length (CONSTRUCTOR_ELTS (constr)) < maxelt - minelt + 1)
  	  {
! 	    bc_emit_instruction (dup);
  	    bc_emit_instruction (constSI, (HOST_WIDE_INT) int_size_in_bytes (TREE_TYPE (constr)));
  	    bc_emit_instruction (clearBLK);
--- 9705,9709 ----
  	if (list_length (CONSTRUCTOR_ELTS (constr)) < maxelt - minelt + 1)
  	  {
! 	    bc_emit_instruction (duplicate);
  	    bc_emit_instruction (constSI, (HOST_WIDE_INT) int_size_in_bytes (TREE_TYPE (constr)));
  	    bc_emit_instruction (clearBLK);
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/extend.texi gcc-2.5.2/extend.texi
*** gcc-2.5.0/extend.texi	Mon Aug  2 16:09:20 1993
--- gcc-2.5.2/extend.texi	Sat Oct 30 03:31:19 1993
***************
*** 75,78 ****
--- 75,79 ----
  * Conditionals::        Omitting the middle operand of a @samp{?:} expression.
  * Long Long::		Double-word integers---@code{long long int}.
+ * Complex::             Data types for complex numbers.
  * Zero Length::         Zero-length arrays.
  * Variable Length::     Arrays whose length is computed at run time.
***************
*** 346,355 ****
  
  Here, the function @code{intermediate} receives the address of
! @code{store} as an argument.  If @code{intermediate} calls
! @code{store}, the arguments given to @code{store} are used to store
! into @code{array}.  But this technique works only so long as the
! containing function (@code{hack}, in this example) does not exit.  If
! you try to call the nested function through its address after the
! containing function has exited, all hell will break loose.
  
  GNU CC implements taking the address of a nested function using a
--- 347,362 ----
  
  Here, the function @code{intermediate} receives the address of
! @code{store} as an argument.  If @code{intermediate} calls @code{store},
! the arguments given to @code{store} are used to store into @code{array}.
! But this technique works only so long as the containing function
! (@code{hack}, in this example) does not exit.
! 
! If you try to call the nested function through its address after the
! containing function has exited, all hell will break loose.  If you try
! to call it after a containing scope level has exited, and if it refers
! to some of the variables that are no longer in scope, you may be lucky,
! but it's not wise to take the risk.  If, however, the nested function
! does not refer to anything that has gone out of scope, you should be
! safe.
  
  GNU CC implements taking the address of a nested function using a
***************
*** 1252,1269 ****
  @cindex @code{volatile} applied to function
  @cindex @code{const} applied to function
  
  In GNU C, you declare certain things about functions called in your program
! which help the compiler optimize function calls.
  
  A few standard library functions, such as @code{abort} and @code{exit},
  cannot return.  GNU CC knows this automatically.  Some programs define
  their own functions that never return.  You can declare them
! @code{volatile} to tell the compiler this fact.  For example,
  
  @smallexample
! typedef void voidfn ();
  
- volatile voidfn fatal;
- 
  void
  fatal (@dots{})
--- 1259,1286 ----
  @cindex @code{volatile} applied to function
  @cindex @code{const} applied to function
+ @cindex functions with @code{printf} or @code{scanf} style arguments
  
  In GNU C, you declare certain things about functions called in your program
! which help the compiler optimize function calls and check your code more
! carefully.
  
+ The keyword @code{__attribute__} allows you to specify special
+ attributes when making a declaration.  This keyword is followed by an
+ attribute specification inside double parentheses.  Three attributes,
+ @code{noreturn}, @code{const} and @code{format}, are currently defined
+ for functions.  Others are implemented for variables and structure fields
+ (@pxref{Variable Attributes}).
+ 
+ @table @code
+ @cindex @code{noreturn} function attribute
+ @item noreturn
  A few standard library functions, such as @code{abort} and @code{exit},
  cannot return.  GNU CC knows this automatically.  Some programs define
  their own functions that never return.  You can declare them
! @code{noreturn} to tell the compiler this fact.  For example,
  
  @smallexample
! void fatal () __attribute__ ((noreturn));
  
  void
  fatal (@dots{})
***************
*** 1274,1278 ****
  @end smallexample
  
! The @code{volatile} keyword tells the compiler to assume that
  @code{fatal} cannot return.  It can then optimize without regard to what
  would happen if @code{fatal} ever did return.  This makes slightly
--- 1291,1295 ----
  @end smallexample
  
! The @code{noreturn} keyword tells the compiler to assume that
  @code{fatal} cannot return.  It can then optimize without regard to what
  would happen if @code{fatal} ever did return.  This makes slightly
***************
*** 1281,1289 ****
  
  Do not assume that registers saved by the calling function are
! restored before calling the @code{volatile} function.
  
! It does not make sense for a @code{volatile} function to have a return
  type other than @code{void}.
  
  Many functions do not examine any values except their arguments, and
  have no effects except the return value.  Such a function can be subject
--- 1298,1319 ----
  
  Do not assume that registers saved by the calling function are
! restored before calling the @code{noreturn} function.
  
! It does not make sense for a @code{noreturn} function to have a return
  type other than @code{void}.
  
+ The attribute @code{noreturn} is not implemented in GNU C versions
+ earlier than 2.5.  An alternative way to declare that a function does
+ not return, which works in the current version and in some older
+ versions, is as follows:
+ 
+ @smallexample  
+ typedef void voidfn ();
+ 
+ volatile voidfn fatal;
+ @end smallexample
+ 
+ @cindex @code{const} function attribute
+ @item const
  Many functions do not examine any values except their arguments, and
  have no effects except the return value.  Such a function can be subject
***************
*** 1290,1299 ****
  to common subexpression elimination and loop optimization just as an
  arithmetic operator would be.  These functions should be declared
! @code{const}.  For example,
  
  @smallexample
! typedef int intfn ();
! 
! extern const intfn square;
  @end smallexample
  
--- 1320,1327 ----
  to common subexpression elimination and loop optimization just as an
  arithmetic operator would be.  These functions should be declared
! with the attribute @code{const}.  For example,
  
  @smallexample
! int square (int) __attribute__ ((const));
  @end smallexample
  
***************
*** 1302,1305 ****
--- 1330,1344 ----
  fewer times than the program says.
  
+ The attribute @code{const} is not implemented in GNU C versions earlier
+ than 2.5.  An alternative way to declare that a function has no side
+ effects, which works in the current version and in some older versions,
+ is as follows:
+ 
+ @smallexample
+ typedef int intfn ();
+ 
+ extern const intfn square;
+ @end smallexample
+ 
  @cindex pointer arguments
  Note that a function that has pointer arguments and examines the data
***************
*** 1309,1353 ****
  return @code{void}.
  
- The examples above use @code{typedef} because that is the only way to
- declare a function @code{const} or @code{volatile}.  A declaration like
- this:
- 
- @smallexample
- extern const int square ();
- @end smallexample
- 
- @noindent
- does not have this effect; it says that the return type of @code{square}
- is @code{const}, not @code{square} itself.
-   
- @cindex @code{#pragma}, reason for not using
- @cindex pragma, reason for not using
- Some people object to this feature, suggesting that ANSI C's
- @code{#pragma} should be used instead.  There are two reasons for not
- doing this.
- 
- @enumerate
- @item
- It is impossible to generate @code{#pragma} commands from a macro.
- 
- @item
- There is no telling what the same @code{#pragma} might mean in another
- compiler.
- @end enumerate
- 
- These two reasons apply to almost any application that might be proposed
- for @code{#pragma}.  It is basically a mistake to use @code{#pragma} for
- @emph{anything}.
- 
- The keyword @code{__attribute__} allows you to specify special
- attributes when making a declaration.  This keyword is followed by an
- attribute specification inside double parentheses.  One attribute,
- @code{format}, is currently defined for functions.  Others are
- implemented for variables and structure fields (@pxref{Variable
- Attributes}).
- 
- @table @code
  @item format (@var{archetype}, @var{string-index}, @var{first-to-check})
! @cindex @code{format} attribute
  The @code{format} attribute specifies that a function takes @code{printf}
  or @code{scanf} style arguments which should be type-checked against a
--- 1348,1353 ----
  return @code{void}.
  
  @item format (@var{archetype}, @var{string-index}, @var{first-to-check})
! @cindex @code{format} function attribute
  The @code{format} attribute specifies that a function takes @code{printf}
  or @code{scanf} style arguments which should be type-checked against a
***************
*** 1388,1391 ****
--- 1388,1410 ----
  modify the header file @file{stdio.h}.
  @end table
+ 
+ @cindex @code{#pragma}, reason for not using
+ @cindex pragma, reason for not using
+ Some people object to the @code{__attribute__} feature, suggesting that ANSI C's
+ @code{#pragma} should be used instead.  There are two reasons for not
+ doing this.
+ 
+ @enumerate
+ @item
+ It is impossible to generate @code{#pragma} commands from a macro.
+ 
+ @item
+ There is no telling what the same @code{#pragma} might mean in another
+ compiler.
+ @end enumerate
+ 
+ These two reasons apply to almost any application that might be proposed
+ for @code{#pragma}.  It is basically a mistake to use @code{#pragma} for
+ @emph{anything}.
  
  @node Function Prototypes
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/fix-header.c gcc-2.5.2/fix-header.c
*** gcc-2.5.0/fix-header.c	Wed Oct 20 20:59:03 1993
--- gcc-2.5.2/fix-header.c	Tue Oct 26 21:46:57 1993
***************
*** 1,3 ****
! /* patch-header.c - Make C header file suitable for C++.
     Copyright (C) 1993 Free Software Foundation, Inc.
  
--- 1,3 ----
! /* fix-header.c - Make C header file suitable for C++.
     Copyright (C) 1993 Free Software Foundation, Inc.
  
***************
*** 60,64 ****
  
     Usage:
! 	patch-header FOO.H INFILE.H OUTFILE.H REQUIRED_FUNCS <SCAN-FILE
     where:
     * FOO.H is the relative file name of the include file,
--- 60,64 ----
  
     Usage:
! 	fix-header FOO.H INFILE.H OUTFILE.H REQUIRED_FUNCS <SCAN-FILE
     where:
     * FOO.H is the relative file name of the include file,
***************
*** 79,86 ****
  #define O_RDONLY 0
  #endif
  #include "obstack.h"
  #include "scan.h"
  
- sstring buf;
  int verbose = 0;
  int partial_count = 0;
--- 79,86 ----
  #define O_RDONLY 0
  #endif
+ #include "hconfig.h"
  #include "obstack.h"
  #include "scan.h"
  
  int verbose = 0;
  int partial_count = 0;
***************
*** 149,153 ****
  char *inc_filename;
  int inc_filename_length;
! char *progname = "patch-header";
  FILE *outf;
  sstring buf;
--- 149,153 ----
  char *inc_filename;
  int inc_filename_length;
! char *progname = "fix-header";
  FILE *outf;
  sstring buf;
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/fixinc.svr4 gcc-2.5.2/fixinc.svr4
*** gcc-2.5.0/fixinc.svr4	Tue Sep 28 18:38:37 1993
--- gcc-2.5.2/fixinc.svr4	Fri Oct 29 23:08:15 1993
***************
*** 1128,1132 ****
    cp $file_to_fix /tmp/$base
    chmod +w /tmp/$base
!   sed -e '/^stat(/{
  N
  N
--- 1128,1132 ----
    cp $file_to_fix /tmp/$base
    chmod +w /tmp/$base
!   sed -e '/^stat([ 	]*[^c]/{
  N
  N
***************
*** 1135,1139 ****
  s/;$/)/
  }' \
!   -e '/^lstat(/{
  N
  N
--- 1135,1139 ----
  s/;$/)/
  }' \
!   -e '/^lstat([ 	]*[^c]/{
  N
  N
***************
*** 1142,1146 ****
  s/;$/)/
  }' \
!   -e '/^fstat(/{
  N
  N
--- 1142,1146 ----
  s/;$/)/
  }' \
!   -e '/^fstat([ 	]*[^i]/{
  N
  N
***************
*** 1149,1153 ****
  s/;$/)/
  }' \
!   -e '/^mknod(/{
  N
  N
--- 1149,1153 ----
  s/;$/)/
  }' \
!   -e '/^mknod([ 	]*[^c]/{
  N
  N
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/fixincludes gcc-2.5.2/fixincludes
*** gcc-2.5.0/fixincludes	Thu Oct 21 11:12:58 1993
--- gcc-2.5.2/fixincludes	Wed Oct 27 14:15:13 1993
***************
*** 473,478 ****
  if [ -r ${LIB}/$file ]; then
    echo Fixing $file
!   sed -e "s/\(#[ 	]*\(ifndef\)[ 	]*\)__wchar_t/\1_GCC_WCHAR_T/" \
!       -e "s/\(#[ 	]*\(define\)[ 	]*\)__wchar_t/\1_GCC_WCHAR_T/" \
       ${LIB}/$file > ${LIB}/${file}.sed
    rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
--- 473,478 ----
  if [ -r ${LIB}/$file ]; then
    echo Fixing $file
!   sed -e "s/\(#[ 	]*ifndef[ 	]*\)__wchar_t/\1_GCC_WCHAR_T/" \
!       -e "s/\(#[ 	]*define[ 	]*\)__wchar_t/\1_GCC_WCHAR_T/" \
       ${LIB}/$file > ${LIB}/${file}.sed
    rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
***************
*** 1002,1006 ****
  fi
  
! # NeXT defines 'int wait(union wait*)', which conflicts with Posix.1.
  file=sys/wait.h
  if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
--- 1002,1009 ----
  fi
  
! # NeXT 2.0 defines 'int wait(union wait*)', which conflicts with Posix.1.
! # Note that version 3 of the NeXT system has wait.h in a different directory,
! # so that this code won't do anything.  But wait.h in version 3 has a
! # conditional, so it doesn't need this fix.  So everything is okay.
  file=sys/wait.h
  if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
***************
*** 1176,1179 ****
--- 1179,1201 ----
  fi
  
+ # Fix incorrect S_IF* definitions on m88k-sysv3.
+ file=sys/stat.h
+ if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
+   cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
+   chmod +w ${LIB}/$file 2>/dev/null
+   chmod a+r ${LIB}/$file 2>/dev/null
+ fi
+ 
+ if [ -r ${LIB}/$file ]; then
+   echo Fixing $file
+   sed -e 's/^\(#define[ 	]*S_IS[A-Z]*(m)\)[ 	]*(m[ 	]*&[ 	]*\(S_IF[A-Z][A-Z][A-Z][A-Z]*\)[ 	]*)/\1 (((m)\&S_IFMT)==\2)/' \
+       -e 's/^\(#define[ 	]*S_IS[A-Z]*(m)\)[ 	]*(m[ 	]*&[ 	]*\(0[0-9]*\)[ 	]*)/\1 (((m)\&S_IFMT)==\2)/' \
+     ${LIB}/$file > ${LIB}/${file}.sed
+   rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
+   if cmp $file ${LIB}/$file >/dev/null 2>&1; then
+     rm -f ${LIB}/$file
+   fi
+ fi
+ 
  # These two files on SunOS 4 are included by other files
  # in the same directory, using "...".  So we must make sure they exist
***************
*** 1227,1230 ****
--- 1249,1273 ----
  	sun4/asm_linkage.h sun4c/asm_linkage.h sun4m/asm_linkage.h	\
  	sun4c/debug/asm_linkage.h sun4m/debug/asm_linkage.h;
+ do
+   if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
+     cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
+     chmod +w ${LIB}/$file 2>/dev/null
+     chmod a+r ${LIB}/$file 2>/dev/null
+   fi
+ 
+   if [ -r ${LIB}/$file ]; then
+     sed -e 's|/\*\*/|##|g' ${LIB}/$file > ${LIB}/${file}.sed
+     rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
+     if cmp $file ${LIB}/$file >/dev/null 2>&1; then
+       rm -f ${LIB}/$file
+     fi
+   fi
+ done
+ 
+ # These files in ARM/RISCiX use /**/ to concatenate tokens.
+ for file in arm/as_support.h arm/mc_type.h arm/xcb.h dev/chardefmac.h \
+ 	dev/ps_irq.h dev/screen.h dev/scsi.h sys/tty.h \
+ 	X11/extensions/multibufst.h X11/Xmd.h X11/Xlibinit.h \
+ 	Xm.acorn/XmP.h
  do
    if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/fixproto gcc-2.5.2/fixproto
*** gcc-2.5.0/fixproto	Tue Oct 12 18:53:04 1993
--- gcc-2.5.2/fixproto	Tue Oct 26 02:48:50 1993
***************
*** 35,43 ****
  #       Each include file is fed through cpp, and the scan-decls program
  #	parses it, and emits any found function declarations.
! #	The patch-header program analyzes the scan-decls output,
  #	together with the original include file, and writes a "fixed"
  #	include file, if needed.
  #
! #	The comment at the beginning of patch-header.c lists specifically
  #	what kind of changes are made.
  #
--- 35,43 ----
  #       Each include file is fed through cpp, and the scan-decls program
  #	parses it, and emits any found function declarations.
! #	The fix-header program analyzes the scan-decls output,
  #	together with the original include file, and writes a "fixed"
  #	include file, if needed.
  #
! #	The comment at the beginning of fix-header.c lists specifically
  #	what kind of changes are made.
  #
***************
*** 252,257 ****
  	      required_list="longjmp setjmp siglongjmp sigsetjmp" ;;
  	    signal.h)
- 	      required_list="kill raise sigaction sigaddset sigdelset sigemptyset sigfillset sigismember sigpending sigprocmask sigsuspend" ;;
  	      # Left out signal() - its prototype is too complex for us!
  	    stdio.h)
  	      required_list="clearerr fclose feof ferror fflush fgetc fgetpos fgets fopen fprintf fputc fputs fread freopen fscanf fseek fsetpos ftell fwrite getc getchar gets perror printf putc putchar puts remove rename rewind scanf setbuf setvbuf sprintf sscanf tmpfile tmpnam ungetc vfprintf vprintf vsprintf"
--- 252,261 ----
  	      required_list="longjmp setjmp siglongjmp sigsetjmp" ;;
  	    signal.h)
  	      # Left out signal() - its prototype is too complex for us!
+ 	      # Also left out "sigaction sigaddset sigdelset sigemptyset
+ 	      # sigfillset sigismember sigpending sigprocmask sigsuspend"
+ 	      # because these need sigset_t or struct sigaction.
+ 	      # Most systems that provide them will also declare them.
+ 	      required_list="kill raise" ;;
  	    stdio.h)
  	      required_list="clearerr fclose feof ferror fflush fgetc fgetpos fgets fopen fprintf fputc fputs fread freopen fscanf fseek fsetpos ftell fwrite getc getchar gets perror printf putc putchar puts remove rename rewind scanf setbuf setvbuf sprintf sscanf tmpfile tmpnam ungetc vfprintf vprintf vsprintf"
***************
*** 272,277 ****
  	      required_list="times" ;;
  # "sys/types.h" add types (not in old g++-include)
- 	    sys/resource.h)
- 	      required_list="getrusage getrlimit setrlimit getpriority setpriority" ;;
  	    sys/utsname.h)
  	      required_list="uname" ;;
--- 276,279 ----
***************
*** 298,302 ****
  	  if ${CPP} -D__STDC__ -D__cplusplus -D_POSIX_SOURCE $include_path fixtmp.c >fixtmp.i 2>/dev/null
  	  then
! 	   $original_dir/patch-header $rel_source_file $abs_source_file $abs_target_file "$required_list" <fixtmp.i
  	  else
  	    echo "${progname}: cpp could not parse ${abs_source_file} (ignored)"
--- 300,304 ----
  	  if ${CPP} -D__STDC__ -D__cplusplus -D_POSIX_SOURCE $include_path fixtmp.c >fixtmp.i 2>/dev/null
  	  then
! 	   $original_dir/fix-header $rel_source_file $abs_source_file $abs_target_file "$required_list" <fixtmp.i
  	  else
  	    echo "${progname}: cpp could not parse ${abs_source_file} (ignored)"
***************
*** 337,341 ****
  #endif
  EOF
!     $original_dir/patch-header $rel_source_file tmp.h $abs_target_dir/$rel_source_file "$required_list" </dev/null
      rm tmp.h
    fi
--- 339,343 ----
  #endif
  EOF
!     $original_dir/fix-header $rel_source_file tmp.h $abs_target_dir/$rel_source_file "$required_list" </dev/null
      rm tmp.h
    fi
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/function.c gcc-2.5.2/function.c
*** gcc-2.5.0/function.c	Tue Oct 19 23:40:34 1993
--- gcc-2.5.2/function.c	Wed Oct 27 04:06:09 1993
***************
*** 3490,3497 ****
  	      enum machine_mode submode = GET_MODE (XEXP (parmreg, 0));
  
! 	      parm_reg_stack_loc[REGNO (gen_lowpart (submode, parmreg))]
! 	        = gen_lowpart (submode, stack_parm);
! 	      parm_reg_stack_loc[REGNO (gen_highpart (submode, parmreg))]
! 		= gen_highpart (submode, stack_parm);
  	    }
  	  else
--- 3490,3507 ----
  	      enum machine_mode submode = GET_MODE (XEXP (parmreg, 0));
  
! 	      if (stack_parm != 0)
! 		{
! 		  parm_reg_stack_loc[REGNO (gen_lowpart (submode, parmreg))]
! 		    = gen_lowpart (submode, stack_parm);
! 		  parm_reg_stack_loc[REGNO (gen_highpart (submode, parmreg))]
! 		    = gen_highpart (submode, stack_parm);
! 		}
! 	      else
! 		{
! 		  parm_reg_stack_loc[REGNO (gen_lowpart (submode, parmreg))]
! 		    = 0;
! 		  parm_reg_stack_loc[REGNO (gen_highpart (submode, parmreg))]
! 		    = 0;
! 		}
  	    }
  	  else
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/gcc.c gcc-2.5.2/gcc.c
*** gcc-2.5.0/gcc.c	Wed Oct 20 19:12:52 1993
--- gcc-2.5.2/gcc.c	Tue Oct 26 14:52:47 1993
***************
*** 245,248 ****
--- 245,250 ----
   %X	Output the accumulated linker options specified by compilations.
   %Y	Output the accumulated assembler options specified by compilations.
+  %v	Substitute the minor version number of GCC.
+ 	(For version 2.5.n, this is 5.)
   %a     process ASM_SPEC as a spec.
          This allows config.h to specify part of the spec for running as.
***************
*** 445,449 ****
  	%{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}\
--- 447,452 ----
  	%{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 -D__GNUC_MINOR__=%v\
! 	%{ansi:-trigraphs -$ -D__STRICT_ANSI__}\
  	%{!undef:%{!ansi:%p} %P} %{trigraphs} \
          %c %{O*:%{!O0:-D__OPTIMIZE__}} %{traditional} %{ftraditional:-traditional}\
***************
*** 477,481 ****
  	%{C:%{!E:%eGNU C does not support -C without using -E}}\
  	%{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d}\
!         -undef -D__OBJC__ -D__GNUC__=2 %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\
  	%{!undef:%{!ansi:%p} %P} %{trigraphs}\
          %c %{O*:%{!O0:-D__OPTIMIZE__}} %{traditional} %{ftraditional:-traditional}\
--- 480,485 ----
  	%{C:%{!E:%eGNU C does not support -C without using -E}}\
  	%{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d}\
!         -undef -D__OBJC__ -D__GNUC__=2 -D__GNUC_MINOR__=%v\
! 	 %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\
  	%{!undef:%{!ansi:%p} %P} %{trigraphs}\
          %c %{O*:%{!O0:-D__OPTIMIZE__}} %{traditional} %{ftraditional:-traditional}\
***************
*** 500,504 ****
  	%{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}\
--- 504,509 ----
  	%{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 -D__GNUC_MINOR__=%v\
! 	 %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\
  	%{!undef:%{!ansi:%p} %P} %{trigraphs}\
          %c %{O*:%{!O0:-D__OPTIMIZE__}} %{traditional} %{ftraditional:-traditional}\
***************
*** 513,517 ****
  	%{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 -D__GNUG__=2 -D__cplusplus \
  	%{ansi:-trigraphs -$ -D__STRICT_ANSI__} %{!undef:%{!ansi:%p} %P}\
          %c %{O*:%{!O0:-D__OPTIMIZE__}} %{traditional} %{ftraditional:-traditional}\
--- 518,522 ----
  	%{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 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=%v\
  	%{ansi:-trigraphs -$ -D__STRICT_ANSI__} %{!undef:%{!ansi:%p} %P}\
          %c %{O*:%{!O0:-D__OPTIMIZE__}} %{traditional} %{ftraditional:-traditional}\
***************
*** 3343,3346 ****
--- 3348,3367 ----
  	      if (*p)
  		p++;
+ 	    }
+ 	    break;
+ 
+ 	  case 'v':
+ 	    {
+ 	      char *p = version_string;
+ 	      char *q, *copy;
+ 	      /* Set P after the first period.  */
+ 	      while (*p != '.') p++;
+ 	      p++;
+ 	      /* Set Q at the second period or at the end.  */
+ 	      q = p;
+ 	      while (*q != '.' && *q != 0) q++;
+ 	      /* Put that part into the command.  */
+ 	      obstack_grow (&obstack, p, q - p);
+ 	      arg_going = 1;
  	    }
  	    break;
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/gen-protos.c gcc-2.5.2/gen-protos.c
*** gcc-2.5.0/gen-protos.c	Mon Oct 18 18:56:12 1993
--- gcc-2.5.2/gen-protos.c	Tue Oct 26 21:47:01 1993
***************
*** 18,21 ****
--- 18,22 ----
  #include <stdio.h>
  #include <ctype.h>
+ #include "hconfig.h"
  #include "scan.h"
  
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/gstdarg.h gcc-2.5.2/gstdarg.h
*** gcc-2.5.0/gstdarg.h	Thu Aug 26 17:49:01 1993
--- gcc-2.5.2/gstdarg.h	Tue Oct 26 19:26:14 1993
***************
*** 76,80 ****
     a warning about increasing the alignment requirement.  */
  
! #if defined (__arm__) || defined (__i386__) || defined (__ns32000__) || defined (__vax__)
  /* This is for little-endian machines; small args are padded upward.  */
  #define va_arg(AP, TYPE)						\
--- 76,80 ----
     a warning about increasing the alignment requirement.  */
  
! #if defined (__arm__) || defined (__i386__) || defined (__i860__) || defined (__ns32000__) || defined (__vax__)
  /* This is for little-endian machines; small args are padded upward.  */
  #define va_arg(AP, TYPE)						\
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/gvarargs.h gcc-2.5.2/gvarargs.h
*** gcc-2.5.0/gvarargs.h	Fri Oct  1 22:11:43 1993
--- gcc-2.5.2/gvarargs.h	Tue Oct 26 19:26:37 1993
***************
*** 94,98 ****
    (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
  
! #if defined (__arm__) || defined (__i386__) || defined (__ns32000__) || defined (__vax__)
  /* This is for little-endian machines; small args are padded upward.  */
  #define va_arg(AP, TYPE)						\
--- 94,98 ----
    (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
  
! #if defined (__arm__) || defined (__i386__) || defined (__i860__) || defined (__ns32000__) || defined (__vax__)
  /* This is for little-endian machines; small args are padded upward.  */
  #define va_arg(AP, TYPE)						\
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/install.texi gcc-2.5.2/install.texi
*** gcc-2.5.0/install.texi	Thu Oct 21 21:58:03 1993
--- gcc-2.5.2/install.texi	Sat Oct 30 18:26:48 1993
***************
*** 179,187 ****
  GNU CC to work with GAS.  Building and installing GAS is up to you.
  
  The systems where it makes a difference whether you use GAS are
  @samp{hppa1.0-@var{anything}-@var{anything}},
  @samp{hppa1.1-@var{anything}-@var{anything}},
! @samp{i386-@var{anything}-sysv}, @samp{i860-@var{anything}-bsd},
! @samp{m68k-bull-sysv},
  @samp{m68k-hp-hpux}, @samp{m68k-sony-bsd}, @samp{m68k-altos-sysv},
  @samp{m68000-hp-hpux}, @samp{m68000-att-sysv}, and
--- 179,194 ----
  GNU CC to work with GAS.  Building and installing GAS is up to you.
  
+ Conversely, if you @emph{do not} do not wish to use GAS and do not
+ specify @samp{--with-gnu-as} when building GNU CC, it is up to you to
+ make sure that GAS is not installed.  GNU CC searches for a program
+ named @code{as} in various directories; if the program it finds is GAS,
+ then it runs GAS.  If you are not sure where GNU CC finds the assembler
+ it is using, try specifying @samp{-v} when you run it.
+ 
  The systems where it makes a difference whether you use GAS are
  @samp{hppa1.0-@var{anything}-@var{anything}},
  @samp{hppa1.1-@var{anything}-@var{anything}},
! @samp{i386-@var{anything}-sysv}, @samp{i386-@var{anything}-isc},
! @samp{i860-@var{anything}-bsd}, @samp{m68k-bull-sysv},
  @samp{m68k-hp-hpux}, @samp{m68k-sony-bsd}, @samp{m68k-altos-sysv},
  @samp{m68000-hp-hpux}, @samp{m68000-att-sysv}, and
***************
*** 189,194 ****
  no effect.
  
! On the systems listed above (except for the HP-PA), if you use GAS, you
! should also use the GNU linker (and specify @samp{--with-gnu-ld}).
  
  @item --with-gnu-ld
--- 196,202 ----
  no effect.
  
! On the systems listed above (except for the HP-PA and for ISC on the
! 386), if you use GAS, you should also use the GNU linker (and specify
! @samp{--with-gnu-ld}).
  
  @item --with-gnu-ld
***************
*** 217,220 ****
--- 225,233 ----
  the debug format for a particular compilation.
  
+ @samp{--with-stabs} is meaningful on the ISC system on the 386, also, if
+ @samp{--with-gas} is used.  It selects use of stabs debugging
+ information embedded in COFF output.  This kind of debugging information
+ supports C++ well; ordinary COFF debugging information does not.
+ 
  @item --nfp
  On certain systems, you must specify whether the machine has a floating
***************
*** 574,577 ****
--- 587,593 ----
  have different conventions for where to put site-specific things.)
  
+ Unless you have a convention other than @file{/usr/local} for
+ site-specific files, it is a bad idea to specify @samp{--local-prefix}.
+ 
  @cindex Bison parser generator
  @cindex parser generator, Bison
***************
*** 586,589 ****
--- 602,613 ----
  
  @item
+ If you have chosen a configuration for GNU CC which requires other GNU
+ tools (such as GAS or the GNU linker) instead of the standard system
+ tools, install the required tools in the build directory under the names
+ @file{as}, @file{ld} or whatever is appropriate.  This will enable the
+ compiler to find the proper tools for compilation of the program
+ @file{enquire}.
+ 
+ @item
  Build the compiler.  Just type @samp{make LANGUAGES=c} in the compiler
  directory.
***************
*** 1262,1267 ****
  
  You can check the version of HP-UX you are running by executing the command
! @samp{uname -r}.   If you are indeed running HP-UX 8.02 on a 1.1 machine and 
! using the HP assembler then configure GCC with "hp700-hpux8.02".
  
  @node Sun Install
--- 1286,1291 ----
  
  You can check the version of HP-UX you are running by executing the command
! @samp{uname -r}.   If you are indeed running HP-UX 8.02 on a PA and 
! using the HP assembler then configure GCC with "hp@var{nnn}-hpux8.02".
  
  @node Sun Install
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/invoke.texi gcc-2.5.2/invoke.texi
*** gcc-2.5.0/invoke.texi	Wed Oct 13 18:48:45 1993
--- gcc-2.5.2/invoke.texi	Tue Oct 26 19:03:06 1993
***************
*** 2812,2817 ****
  default, @var{cpu_type} is the target system defined when GNU CC was
  configured.  Supported values for @var{cpu_type} are @samp{rios1},
! @samp{rios2}, @samp{601}, @samp{603}, @samp{604}, @samp{620} and
! @samp{all}.@refill
  
  Specifying @samp{-mcpu=rios1} or @samp{-mcpu=rios2} enables the
--- 2812,2817 ----
  default, @var{cpu_type} is the target system defined when GNU CC was
  configured.  Supported values for @var{cpu_type} are @samp{rios1},
! @samp{rios2}, @samp{rsc1}, @samp{601}, @samp{603}, @samp{604},
! @samp{620} and @samp{all}.@refill
  
  Specifying @samp{-mcpu=rios1} or @samp{-mcpu=rios2} enables the
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/libgcc2.c gcc-2.5.2/libgcc2.c
*** gcc-2.5.0/libgcc2.c	Wed Sep 22 13:44:40 1993
--- gcc-2.5.2/libgcc2.c	Tue Oct 26 19:26:59 1993
***************
*** 1190,1195 ****
--- 1190,1262 ----
  
  #else /* not __svr4__ */
+ #if defined(__PARAGON__)
+ 	/*
+ 	 *	we'll use SVR4-ish varargs but need SVR3.2 assembler syntax,
+ 	 *	and we stand a better chance of hooking into libraries
+ 	 *	compiled by PGI.  [andyp@ssd.intel.com]
+ 	 */
  	asm ("	.text");
  	asm ("	.align	4");
+ 	asm (".globl	__builtin_saveregs");
+ asm ("__builtin_saveregs:");
+ 	asm (".globl	___builtin_saveregs");
+ asm ("___builtin_saveregs:");
+ 
+         asm ("	andnot	0x0f,sp,sp");	/* round down to 16-byte boundary */
+ 	asm ("	adds	-96,sp,sp");	/* allocate stack space for reg save
+ 					   area and also for a new va_list
+ 					   structure */
+ 	/* Save all argument registers in the arg reg save area.  The
+ 	   arg reg save area must have the following layout (according
+ 	   to the svr4 ABI):
+ 
+ 		struct {
+ 		  union  {
+ 		    float freg[8];
+ 		    double dreg[4];
+ 		  } float_regs;
+ 		  long	ireg[12];
+ 		};
+ 	*/
+ 
+ 	asm ("	fst.q	f8,  0(sp)");
+ 	asm ("	fst.q	f12,16(sp)"); 
+ 	asm ("	st.l	r16,32(sp)");
+ 	asm ("	st.l	r17,36(sp)"); 
+ 	asm ("	st.l	r18,40(sp)");
+ 	asm ("	st.l	r19,44(sp)");
+ 	asm ("	st.l	r20,48(sp)");
+ 	asm ("	st.l	r21,52(sp)");
+ 	asm ("	st.l	r22,56(sp)");
+ 	asm ("	st.l	r23,60(sp)");
+ 	asm ("	st.l	r24,64(sp)");
+ 	asm ("	st.l	r25,68(sp)");
+ 	asm ("	st.l	r26,72(sp)");
+ 	asm ("	st.l	r27,76(sp)");
+ 
+ 	asm ("	adds	80,sp,r16");  /* compute the address of the new
+ 					   va_list structure.  Put in into
+ 					   r16 so that it will be returned
+ 					   to the caller.  */
+ 
+ 	/* Initialize all fields of the new va_list structure.  This
+ 	   structure looks like:
+ 
+ 		typedef struct {
+ 		    unsigned long	ireg_used;
+ 		    unsigned long	freg_used;
+ 		    long		*reg_base;
+ 		    long		*mem_ptr;
+ 		} va_list;
+ 	*/
+ 
+ 	asm ("	st.l	r0, 0(r16)"); /* nfixed */
+ 	asm ("	st.l	r0, 4(r16)"); /* nfloating */
+ 	asm ("  st.l    sp, 8(r16)"); /* __va_ctl points to __va_struct.  */
+ 	asm ("	bri	r1");		/* delayed return */
+ 	asm ("	 st.l	r28,12(r16)"); /* pointer to overflow args */
+ #else /* not __PARAGON__ */
+ 	asm ("	.text");
+ 	asm ("	.align	4");
  
  	asm (".globl	___builtin_saveregs");
***************
*** 1227,1230 ****
--- 1294,1298 ----
  				/* recover stack and pass address to start 
  				   of data.  */
+ #endif /* not __PARAGON__ */
  #endif /* not __svr4__ */
  #else /* not __i860__ */
***************
*** 1320,1323 ****
--- 1388,1392 ----
     it requires atexit and stdio.  */
  
+ #undef NULL /* Avoid errors if stdio.h and our stddef.h mismatch.  */
  #include <stdio.h>
  
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/objc-act.c gcc-2.5.2/objc-act.c
*** gcc-2.5.0/objc-act.c	Tue Aug 24 06:02:19 1993
--- gcc-2.5.2/objc-act.c	Thu Oct 28 21:32:22 1993
***************
*** 5364,5370 ****
--- 5364,5372 ----
    int first = 1;
    tree list;
+   tree base_context = context;
  
    while (chain)
      {
+       context = base_context;
        while (context)
  	{
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/print-tree.c gcc-2.5.2/print-tree.c
*** gcc-2.5.0/print-tree.c	Sat Aug  7 07:38:37 1993
--- gcc-2.5.2/print-tree.c	Wed Oct 27 01:55:26 1993
***************
*** 134,138 ****
        {
  	int i;
! 	char *p = (char *) &TREE_REAL_CST (node);
  	fprintf (file, " 0x");
  	for (i = 0; i < sizeof TREE_REAL_CST (node); i++)
--- 134,138 ----
        {
  	int i;
! 	unsigned char *p = (unsigned char *) &TREE_REAL_CST (node);
  	fprintf (file, " 0x");
  	for (i = 0; i < sizeof TREE_REAL_CST (node); i++)
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/protoize.c gcc-2.5.2/protoize.c
*** gcc-2.5.0/protoize.c	Wed Oct 20 19:13:08 1993
--- gcc-2.5.2/protoize.c	Tue Oct 26 04:50:49 1993
***************
*** 164,167 ****
--- 164,170 ----
  extern int access ();
  extern int execvp ();
+ /* In 2.6, try deleting these decls entirely since setjmp.h should
+    take care of them.  */
+ #ifndef __NeXT__
  #ifndef setjmp
  extern int setjmp ();
***************
*** 169,172 ****
--- 172,176 ----
  #ifndef longjmp
  extern void longjmp ();
+ #endif
  #endif
  
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/scan-decls.c gcc-2.5.2/scan-decls.c
*** gcc-2.5.0/scan-decls.c	Tue Oct 12 18:53:05 1993
--- gcc-2.5.2/scan-decls.c	Tue Oct 26 21:47:08 1993
***************
*** 18,26 ****
     Written by Per Bothner <bothner@cygnus.com>, July 1993.  */
  
- #ifdef OLD
- #endif
- 
  #include <stdio.h>
  #include <ctype.h>
  #include "scan.h"
  
--- 18,24 ----
     Written by Per Bothner <bothner@cygnus.com>, July 1993.  */
  
  #include <stdio.h>
  #include <ctype.h>
+ #include "hconfig.h"
  #include "scan.h"
  
***************
*** 33,37 ****
  /* The first extern_C_braces_length elements of extern_C_braces
     indicate the (brace nesting levels of) left braces that were
!    prefixed by extern "C". */
  int extern_C_braces_length = 0;
  char extern_C_braces[20];
--- 31,35 ----
  /* The first extern_C_braces_length elements of extern_C_braces
     indicate the (brace nesting levels of) left braces that were
!    prefixed by extern "C".  */
  int extern_C_braces_length = 0;
  char extern_C_braces[20];
***************
*** 39,43 ****
  
  /* True if the function declaration currently being scanned is
!    prefixed by extern "C". */
  int current_extern_C = 0;
  
--- 37,41 ----
  
  /* True if the function declaration currently being scanned is
!    prefixed by extern "C".  */
  int current_extern_C = 0;
  
***************
*** 78,82 ****
    if (c == '}')
      {
!       /* pop an 'extern "C"' nesting level, if appropriate */
        if (extern_C_braces_length
  	  && extern_C_braces[extern_C_braces_length - 1] == brace_nesting)
--- 76,80 ----
    if (c == '}')
      {
!       /* Pop an 'extern "C"' nesting level, if appropriate.  */
        if (extern_C_braces_length
  	  && extern_C_braces[extern_C_braces_length - 1] == brace_nesting)
***************
*** 101,109 ****
      {
        /* For certain interesting macro names, fixproto puts
! 	   #ifdef FOO
! 	   __DEFINED_MACRO_FOO
! 	   #endif
  	 into the file to be pre-processed.  So if we see __DEFINED_MACRO_FOO,
! 	 it means FOO was defined, which we may want to make a note of. */
        recognized_macro (buf.base+16);
        goto new_statement;
--- 99,107 ----
      {
        /* For certain interesting macro names, fixproto puts
! 	 #ifdef FOO
! 	 __DEFINED_MACRO_FOO
! 	 #endif
  	 into the file to be pre-processed.  So if we see __DEFINED_MACRO_FOO,
! 	 it means FOO was defined, which we may want to make a note of.  */
        recognized_macro (buf.base+16);
        goto new_statement;
***************
*** 135,139 ****
        int followingc = getc (fp); /* char following token in buf */
  
!       MAKE_SSTRING_SPACE(&rtype, 1);
        *rtype.ptr = 0;
  
--- 133,137 ----
        int followingc = getc (fp); /* char following token in buf */
  
!       MAKE_SSTRING_SPACE (&rtype, 1);
        *rtype.ptr = 0;
  
***************
*** 144,152 ****
  	    {
  	      int nesting = 1;
  
  	      arg_list.ptr = arg_list.base;
- 	      c = skip_spaces (fp, ' ');
  	      for (;;)
  		{
  		  if (c == '(')
  		    nesting++;
--- 142,152 ----
  	    {
  	      int nesting = 1;
+ 	      int func_lineno = source_lineno;
+ 	      char *args;
  
  	      arg_list.ptr = arg_list.base;
  	      for (;;)
  		{
+ 		  c = getc (fp);
  		  if (c == '(')
  		    nesting++;
***************
*** 157,171 ****
  		    break;
  		  if (c == '\n')
! 		    c = ' ';
! 		  SSTRING_PUT(&arg_list, c);
! 		  c = getc (fp);
  		}
! 	      SSTRING_PUT(&arg_list, '\0');
  	      recognized_function (buf.base,
! 				  saw_inline ? 'I'
! 				  : in_extern_C_brace || current_extern_C
! 				  ? 'F' : 'f',
! 				  rtype.base, arg_list.base,
! 				  source_filename.base, source_lineno);
  	      c = get_token (fp, &buf);
  	      if (c == '{')
--- 157,177 ----
  		    break;
  		  if (c == '\n')
! 		    {
! 		      c = ' ';
! 		      source_lineno++;
! 		      lineno++;
! 		    }
! 		  SSTRING_PUT (&arg_list, c);
  		}
! 	      SSTRING_PUT (&arg_list, '\0');
! 	      args = arg_list.base;
! 	      while (*args == ' ')
! 		args++;
  	      recognized_function (buf.base,
! 				   (saw_inline ? 'I'
! 				    : in_extern_C_brace || current_extern_C
! 				    ? 'F' : 'f'),
! 				   rtype.base, args,
! 				   source_filename.base, func_lineno);
  	      c = get_token (fp, &buf);
  	      if (c == '{')
***************
*** 191,195 ****
        sstring_append (&rtype, &buf);
        if (followingc == ' ' || followingc == '\t' || followingc == '\n')
! 	SSTRING_PUT(&rtype, ' ');
        c = get_token (fp, &buf);
      }
--- 197,201 ----
        sstring_append (&rtype, &buf);
        if (followingc == ' ' || followingc == '\t' || followingc == '\n')
! 	SSTRING_PUT (&rtype, ' ');
        c = get_token (fp, &buf);
      }
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/scan-types.sh gcc-2.5.2/scan-types.sh
*** gcc-2.5.0/scan-types.sh	Tue Oct 12 18:53:07 1993
--- gcc-2.5.2/scan-types.sh	Tue Oct 26 19:01:02 1993
***************
*** 3,9 ****
  # Emits macros definitions for these, and some other types.
  # Intended to be used to massage the sys-protos.h file.
  
! CC=${CC-./xgcc}
! CPP=${CPP-`echo ${CC} -E`}
  SED=sed
  
--- 3,10 ----
  # Emits macros definitions for these, and some other types.
  # Intended to be used to massage the sys-protos.h file.
+ # Expects one arg, which is the GCC source directory.
  
! CC=${CC-"./xgcc -B$1/"}
! CPP=${CPP-`echo ${CC} -E -I"$1/"`}
  SED=sed
  
***************
*** 15,20 ****
  cat >dummy.c <<!EOF!
  #include <sys/types.h>
! #include <stddef.h>
! #include <stdarg.h>
  #include <stdio.h>
  #include <time.h>
--- 16,21 ----
  cat >dummy.c <<!EOF!
  #include <sys/types.h>
! #include "gstddef.h"
! #include "gstdarg.h"
  #include <stdio.h>
  #include <time.h>
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/scan.c gcc-2.5.2/scan.c
*** gcc-2.5.0/scan.c	Sun Jul 25 19:59:58 1993
--- gcc-2.5.2/scan.c	Tue Oct 26 21:47:12 1993
***************
*** 17,20 ****
--- 17,21 ----
  
  #include "scan.h"
+ #include "hconfig.h"
  #include <ctype.h>
  
***************
*** 109,113 ****
  }
  
! int scan_string (fp, s, init)
       register FILE *fp;
       register sstring *s;
--- 110,115 ----
  }
  
! int
! scan_string (fp, s, init)
       register FILE *fp;
       register sstring *s;
***************
*** 141,145 ****
  /* Skip horizontal white spaces (spaces, tabs, and C-style comments). */
  
! int skip_spaces (fp, c)
       register FILE *fp;
       int c;
--- 143,148 ----
  /* Skip horizontal white spaces (spaces, tabs, and C-style comments). */
  
! int
! skip_spaces (fp, c)
       register FILE *fp;
       int c;
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/toplev.c gcc-2.5.2/toplev.c
*** gcc-2.5.0/toplev.c	Wed Oct 20 17:14:48 1993
--- gcc-2.5.2/toplev.c	Sat Oct 30 04:21:39 1993
***************
*** 91,94 ****
--- 91,95 ----
  
  extern int size_directive_output;
+ extern tree last_assemble_variable_decl;
  
  extern void init_lex ();
***************
*** 2246,2251 ****
  			    || DECL_INITIAL (decl) == error_mark_node)))
  		   assemble_variable (decl, top_level, at_end, 0);
! 	       ASM_FINISH_DECLARE_OBJECT (asm_out_file, decl,
! 					  top_level, at_end);
  	     });
    else if (DECL_REGISTER (decl) && asmspec != 0)
--- 2247,2255 ----
  			    || DECL_INITIAL (decl) == error_mark_node)))
  		   assemble_variable (decl, top_level, at_end, 0);
! 	       if (decl == last_assemble_variable_decl)
! 		 {
! 		   ASM_FINISH_DECLARE_OBJECT (asm_out_file, decl,
! 					      top_level, at_end);
! 		 }
  	     });
    else if (DECL_REGISTER (decl) && asmspec != 0)
***************
*** 2336,2340 ****
  			  it was only declared.  */
  		       if (DECL_EXTERNAL (decl))
! 			 goto exit_rest_of_compilation;
  		     }
  		   else
--- 2340,2347 ----
  			  it was only declared.  */
  		       if (DECL_EXTERNAL (decl))
! 			 {
! 			   DECL_INITIAL (decl) = 0;
! 			   goto exit_rest_of_compilation;
! 			 }
  		     }
  		   else
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/tree.h gcc-2.5.2/tree.h
*** gcc-2.5.0/tree.h	Tue Oct 12 17:04:52 1993
--- gcc-2.5.2/tree.h	Sat Oct 30 11:42:21 1993
***************
*** 98,102 ****
    BUILT_IN_VEC_NEW,
    BUILT_IN_DELETE,
!   BUILT_IN_VEC_DELETE
  };
  
--- 98,105 ----
    BUILT_IN_VEC_NEW,
    BUILT_IN_DELETE,
!   BUILT_IN_VEC_DELETE,
! 
!   /* Upper bound on non-language-specific builtins. */
!   END_BUILTINS
  };
  
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/va-i860.h gcc-2.5.2/va-i860.h
*** gcc-2.5.0/va-i860.h	Sat Feb 27 15:26:00 1993
--- gcc-2.5.2/va-i860.h	Tue Oct 26 19:27:24 1993
***************
*** 16,20 ****
  
  typedef struct {
! #if defined (__SVR4__) || defined (__svr4__) || defined (__alliant__)
    __f_regs __float_regs; long __ireg[12];
  #else /* pre-SVR4 */
--- 16,20 ----
  
  typedef struct {
! #if defined (__SVR4__) || defined (__svr4__) || defined (__alliant__) || defined (__PARAGON__)
    __f_regs __float_regs; long __ireg[12];
  #else /* pre-SVR4 */
***************
*** 24,28 ****
  
  typedef struct {
! #if defined(__SVR4__) || defined(__svr4__) || defined(__alliant__)
    unsigned	__ireg_used;	/* How many int regs consumed 'til now? */
    unsigned	__freg_used;	/* How many flt regs consumed 'til now? */
--- 24,28 ----
  
  typedef struct {
! #if defined(__SVR4__) || defined(__svr4__) || defined(__alliant__) || defined (__PARAGON__)
    unsigned	__ireg_used;	/* How many int regs consumed 'til now? */
    unsigned	__freg_used;	/* How many flt regs consumed 'til now? */
***************
*** 46,50 ****
--- 46,54 ----
  /* varargs support */
  #define va_alist __builtin_va_alist
+ #if defined (__PARAGON__)
+ #define va_dcl int va_alist;
+ #else	/* __PARAGON__ */
  #define va_dcl
+ #endif	/* __PARAGON__ */
  #define va_start(pvar) ((pvar) = * (__gnuc_va_list *) __builtin_saveregs ())
  
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/varasm.c gcc-2.5.2/varasm.c
*** gcc-2.5.0/varasm.c	Thu Oct 21 13:14:24 1993
--- gcc-2.5.2/varasm.c	Sun Oct 24 03:05:50 1993
***************
*** 88,91 ****
--- 88,98 ----
  int size_directive_output;
  
+ /* The last decl for which assemble_variable was called,
+    if it did ASM_DECLARE_OBJECT_NAME.
+    If the last call to assemble_variable didn't do that,
+    this holds 0.  */
+ 
+ tree last_assemble_variable_decl;
+ 
  /* Nonzero if at least one function definition has been seen.  */
  static int function_defined;
***************
*** 859,862 ****
--- 866,871 ----
    enum in_section saved_in_section;
  
+   last_assemble_variable_decl = 0;
+ 
    if (output_bytecode)
      return;
***************
*** 1180,1183 ****
--- 1189,1193 ----
    /* Do any machine/system dependent processing of the object.  */
  #ifdef ASM_DECLARE_OBJECT_NAME
+   last_assemble_variable_decl = decl;
    ASM_DECLARE_OBJECT_NAME (asm_out_file, name, decl);
  #else
diff -rc2P -x c-parse.y -x c-parse.c -x c-parse.h -x objc-parse.y -x cp-parse.c -x cp-parse.h -x cexp.c -x objc-parse.c -x TAGS -x gcc.?? -x gcc.??z -x gcc.aux -x cpp.??s -x cpp.?? -x cpp.aux -x cpp.info* -x gcc.info* gcc-2.5.0/version.c gcc-2.5.2/version.c
*** gcc-2.5.0/version.c	Thu Oct 14 12:46:52 1993
--- gcc-2.5.2/version.c	Mon Nov  1 01:07:22 1993
***************
*** 1 ****
! char *version_string = "2.5.0";
--- 1 ----
! char *version_string = "2.5.2";
