Changes for GCC version 2.5.3 from version 2.5.2. 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.2. Then use the command patch -p1 feeding it the following diffs as input. Then rename the directory to gcc-2.5.3. 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.2/ChangeLog gcc-2.5.3/ChangeLog *** gcc-2.5.2/ChangeLog Mon Nov 1 01:06:55 1993 --- gcc-2.5.3/ChangeLog Thu Nov 11 10:52:54 1993 *************** *** 1,2 **** --- 1,482 ---- + Thu Nov 11 00:00:55 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 2.5.3 released. + + * fix-header.c, gen-protos.c (fancy_abort): New function. + + * c-typeck.c (mark_addressable): Handle REALPART_EXPR and + IMAGPART_EXPR. + + * integrate.h (global_const_equiv_map_size): Declared. + + * dbxout.c (dbxout_symbol): If it's C++, don't check the + DECL_SOURCE_LINE of a typedef. + (dbxout_parms): Fix previous change. + + Wed Nov 10 10:33:28 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk) + + * fixproto (rel_source_subdir): Prune out redundant /subdir/../ to + prevent recursion. + + Wed Nov 10 22:30:16 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * config/ns32k/encore.h (ASM_OUTPUT_ASCII): Declare i. + + Wed Nov 10 16:18:19 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * cp-decl.c (grokvardecl): Undo change of Jan 15 1993 which + tried to implement the "one definition rule". The duplicate_decls + call in pushdecl does implement this; grokvardecl got some bad hits. + + Wed Nov 10 08:44:17 1993 Niklas Hallqvist (niklas@appli.se) + + * cp-search.c (compute_visibility): Revert Tiemann's patch of + Nov 5. Instead check that privately inherited entities don't + get restricted visibility if the private derivation is a + shallow derivation (i.e. one leading to the most derived + class) and we're actually in the most derived class' scope. + + * cp-search.c (dfs_pushdecls): Don't be confused by the fact that + overloaded methods from an outer scope almost looks like an + envelope. + + Wed Nov 10 18:55:22 1993 Richard Earnshaw (rwe11@cl.cam.ac.uk) + + * fixincludes: Copy files needed for other files at the very end. + + * arm.md (reload patterns for mla instruction): New. + + Wed Nov 10 18:17:40 1993 Jim Wilson (wilson@cygnus.com) + + * dbxout.c (dbxout_parms): For parms passed via invisible + reference, accept any reg except FP, SP, and AP. + + * unroll.c (unroll_loop): Set global_const_equiv_map_size. + + Wed Nov 10 17:52:33 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * combine.c (subst_prev_insn): New variable. + (try_combine): Set it. + (get_last_value): Use subst_prev_insn if set instead of + looking for the first insn before SUBST_LOW_CUID. + + * integrate.c (global_const_equiv_map_size): New variable. + (expand_inline_function): Set it. + (expand_inline_function, copy_rtx_and_substitute, try_constants): + Never access const_equiv_map without checking for out-of-range. + (mark_stores): Likewise. + + * alpha.md (smaxdi3): Was incorrectly called maxdi3. + + * rs6000.h (LINK_SPEC): Don't pass -btextro if -r. + + * alpha/osf12.h: New file. + * configure (alpha-dec-osf1.2): New case, to use new file. + + * rs6000.md (sqrtdf2): Fix typo in extra condition. + (plus/eq pattern): Fix typo: "addze" was "adddze". + + Wed Nov 10 12:32:56 1993 Jim Wilson (wilson@sphagnum.cygnus.com) + + * expmed.c (expand_divmod): If rem_flag, always force op0 to a + register. + + * expr.c (expand_expr): Use a smaller alignment when reading from + a field with a variable offset. + + Wed Nov 10 01:28:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * expr.c (expand_assignment): Use a smaller alignment when storing + into a field with a variable offset. + + * fixincludes (math.h): Delete inline definitions for sqr. + + Tue Nov 9 15:33:45 1993 Jason Merrill (jason@deneb.cygnus.com) + + * cp-method.c (hack_identifier): Undo rfg's earlier patch. + + Tue Nov 9 19:30:02 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * reload1.c (reload) [SMALL_REGISTER_CLASSES]: Try, at least, + to avoid 2-groups whose second register is explicitly used. + + Tue Nov 9 19:08:47 1993 Jim Wilson (wilson@cygnus.com) + + * mips.md (adddi3): Use DImode not SImode in force_reg call. + + * mips.c (PIC_OFFSET_TABLE_MASK): New macro. + (function_epilogue): When -mabicalls, ignore + PIC_OFFSET_TABLE_REGNUM when calculating load_only_r31. + + * loop.c (strength_reduce): Accept VOIDmode initial values. + + Tue Nov 9 09:23:31 1993 Torbjorn Granlund (tege@mole.gnu.ai.mit.edu) + + * pa.md (negscc): Add mode for NEG. + + Tue Nov 9 12:51:54 1993 John Hassey (hassey@dg-rtp.dg.com) + + * m88k.md ("cmpsf" & "cmpdf"): Undo inadvertent change included + with CCEVENmode change. + + Tue Nov 9 01:31:58 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * fixincludes (loop on $required): When a file is copied + because another file needs it, scan it for what files it needs. + + * fix-header.c (write_rbrac): When adding proto for memmove, + put it inside #ifndef memmove. + + Mon Nov 8 16:50:49 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * sdbout.c (sdbout_init) [RMS_QUICK_HACK_1]: Call sdbout_symbol + for __vtbl_ptr_type. + + * cp-decl.c (init_decl_processing): Undo previous change. + + * c-typeck.c (build_binary_op): Warn for ordered compare of ptr with 0 + only if pedantic in both cases. + + Mon Nov 8 18:25:06 1993 David Edelsohn (edelsohn@npac.syr.edu) + + * rs6000.h (ASM_FILE_START): Emit filename directive. + + Sun Nov 7 00:24:04 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile.in (mostlyclean): Delete fixhdr.ready here. + (clean): Not here. + + * scan-decls.c (scan_decls): After seeing an extern variable + declaration, goto new_statement to read a new token, rather + than going to handle_statement (which uses the current token). + + Sat Nov 6 19:40:22 1993 Pat Rankin (rankin@eql.caltech.edu) + + * config/vax/vms.h (__MAIN_NAME): Define as " main(" rather + rather than " main (" to reflect current cc1plus. + + * config/vax/vms.h: Add __GNUC_MINOR__=5 to CPP_PREDEFINES. + + Sat Nov 6 22:54:25 1993 Tor Egge (tegge@pvv.unit.no) + + * m88k.c (partial_ccmode_register_operand, even_relop) + (odd_relop): New functions, for support of CCEVENmode. + (print_operand, new case '!'): Revert following condition. + * m88k.h (EXTRA_CC_MODES, EXTRA_CC_NAMES, SELECT_CC_MODE): + New macros to define CCEVENmode. + * m88k.md: Handle CCEVENmode as a new mode. Logical operations + on CCmode registers now results in CCEVENmode. + Add patterns for jumps and ext's for CCEVENmode. + (cmpsf, cmpdf): Use reg 65 and clobber reg 64. + + Sat Nov 6 17:07:54 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * cp-decl.c (init_decl_processing) [RMS_QUICK_HACK_1]: + If sdb output, call sdbout_symbol for vtable_entry_type. + * config/m88k/dgux.h (RMS_QUICK_HACK_1): Defined. + + Sat Nov 6 12:32:31 1993 Jim Wilson (wilson@sphagnum.cygnus.com) + + * unroll.c (unroll_loop): Don't unroll loop if jump has combined + the original loop start label with another label. + + Sat Nov 6 05:01:31 1993 Chris Smith (csmith@convex.com) + + * convex.md (untyped_call, blockage): Add new patterns. + + Sat Nov 6 03:11:46 1993 Noah Friedman (friedman@gnu.ai.mit.edu) + + * just-fixinc: Rename fixed native limits.h to syslimits.h (or + install gsyslimits.h) before renaming gcc's limits.h from tmpfoo + directory. + + Sat Nov 6 00:07:41 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * expr.c (emit_move_insn_1): Push the components of a complex + in proper order: imag part has higher address. + + Fri Nov 5 16:23:51 1993 Jim Wilson (wilson@sphagnum.cygnus.com) + + * mips.c (mips_abicalls): Change type to enum mips_abicalls_type. + (override_options): Use MIPS_ABICALLS_{NO,YES} instead of + ABICALLS_{NO,YES}. + * mips.h (enum mips_abicalls_type): New type. + (mips_abicalls_attr): New define. + (mips_abicalls): Change type to enum mips_abicalls_type. + * mips.md (abicalls): Use mips_abicalls_attr not mips_abicalls. + + Fri Nov 5 20:34:19 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * fixproto (stdio.h): Don't add protos for vprintf, vfprintf, vsprintf. + + Fri Nov 5 20:32:53 1993 Torbjorn Granlund (tege@adder.cygnus.com) + + * config/pa/pa.md (decrement_and_branch_until_zero): + Add missing `return'. + + Fri Nov 5 16:08:34 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * listing: Handle i386-linux like m68020. + Pass compilation options thru an awk variable, not as ordinary args. + + * cccp.c (safe_read, safe_write): Handle EINTR. + (output_line_command): Handle NO_IMPLICIT_EXTERN_C here. + (main): Not here. + + * protoize.c (safe_read, safe_write): Handle EINTR. + (safe_write): Return right away after safe_write. + + Fri Nov 5 11:40:59 1993 Jeff Law (law@snake.cs.utah.edu) + + * pa-ghpux.h (NO_IMPLICIT_EXTERN_C): Define. + * pa-hpux.h (NO_IMPLICIT_EXTERN_C): Define. + + Fri Nov 5 09:45:20 1993 Kresten Krab Thorup (krab@viking) + + * objc/archive.c (objc_read_string): Allocate string properly. + * objc/hash.h (compare_strings): Check for null pointers. + + Fri Nov 5 11:29:26 1993 David Edelsohn (edelsohn@npac.syr.edu) + + * rs6000.h (ASM_OUTPUT_DOUBLE, ASM_OUTPUT_FLOAT): Use + REAL_ARITHMETIC macros including hex for special values. + + Fri Nov 5 10:26:34 1993 Brendan Kehoe (brendan@lisa.cygnus.com) + + * cp-call.c (build_method_call): For unions, don't use get_binfo and + convert_pointer_to_real, since unions can't be involved in complex MI + situations. (Fixes union ctor crash, and completes Sep 27 fix.) + + Fri Nov 5 07:39:00 1993 Michael Tiemann (tiemann@blues.cygnus.com) + + * cp-search.c (compute_visibility): Don't lose access to public + members from base classes of base classes. + + * cp-search.c (get_base_distance): Initialize BASETYPE_PATH before + using. Also, initialize RVAL from get_base_distance_recursive. + + Fri Nov 5 05:48:04 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * config/i860/paragon.h (SIZE_TYPE): #undef it. + + * config/m88k/dgux.h (LIB_SPEC): Handle -msvr4. + (GPLUSPLUS_INCLUDE_DIR): Definition and #undef deleted. + + * cccp.c (main): Handle NO_IMPLICIT_EXTERN_C. + + Fri Nov 5 03:11:05 1993 Torbjorn Granlund (tege@adder.cygnus.com) + + * config/m68k/m68k.h (RTX_COST): Return actual costs for + multiplication, not costs for theoretical special cases that are + not handled in the md. + + Fri Nov 5 00:42:09 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * emit-rtl.c (gen_highpart): If arg is function value hard reg, + return a subreg of it (as in gen_lowpart_common). + + * integrate.c (expand_inline_function): Handle CONCAT as rtl for parm. + (copy_rtx_and_substitute): For subreg, handle case where the reg + inside turns into a CONCAT. + + * configure: Treat hppa1.[01]-hpux8.0[01] like hppa1.[01]-hpux8.02. + + * fixproto: Don't scan sub-directories whose names end in CC + or contain ++ - these are probably C++ directories. + + Thu Nov 4 12:02:04 1993 Jim Wilson (wilson@sphagnum.cygnus.com) + + * integrate.c (expand_inline_function): Don't call + push_temp_slots, free_temp_slots, and pop_temp_slots when handling + parameters, because they might end up in a temp slot. + + Thu Nov 4 15:00:38 1993 Samuel Figueroa (figueroa@cs.nyu.edu) + + * i386/os2.h, i386/xm-os2.h: New files. + + Thu Nov 4 14:36:54 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * c-decl.c (finish_enum): Undo previous change. + + Thu Nov 4 13:30:16 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * loop.c (strength_reduce): Ignore initial value if it is the + wrong mode. + (record_initial): Don't ignore any set of the register. + + * rs6000.md (movdf): Don't have reload choose alternative of + loading a constant into a GPR. + + * reload.c (find_reloads, case 'o'): A pseudo is not always + an offsettable memref. + (find_reloads): If we reload a constant into a register via + memory, count it as two reloads. + + * function.c (expand_function_start): If not optimizing, ensure + we mark context display regs as live for the entire function. + + Thu Nov 4 02:24:22 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * tree.h (DECL_IN_TEXT_SECTION): New macro. + * varasm.c (assemble_variable): Set DECL_IN_TEXT_SECTION. + * dbxout.c (dbxout_symbol_location): Test DECL_IN_TEXT_SECTION. + + Wed Nov 3 23:59:48 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * c-typeck.c (build_function_call): Initialize fundecl to 0. + + Wed Nov 3 16:34:01 1993 Torbjorn Granlund (tege@adder.cygnus.com) + + * pa.h (REGISTER_MOVE_COST): Decrease cost for move from + SHIFT_REGS to avoid regclass overflow. + + Wed Nov 3 15:35:44 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * config/m68k/m68k.c (output_move_double): Fix up the test for overlap + of source address with operands[0]. + + * regclass.c (regclass): Consider commutativity even when + one arg is a constant. + + Wed Nov 3 12:06:23 1993 Jim Wilson (wilson@sphagnum.cygnus.com) + + * expmed.c (expand_divmod): Use target as copy_to_suggested_reg + argument only if it has the same mode as op0. + + Wed Nov 3 04:58:26 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * protoize.c (safe_write, safe_read): Really use arg DESC. + + * libgcc2.c (exit): Fix declaration of _exit. + + * c-common.c (check_format_info): Make warning nicer for mismatch + of int vs long, etc. + Don't warn if field width is an unsigned int. + + * c-decl.c (finish_enum): Always make an enum signed if it will fit. + + Wed Nov 3 14:23:52 1993 Torbjorn Granlund (tege@adder.cygnus.com) + + * cse.c (cse_insn): Call `invalidate' also for STRICT_LOW_PART and + ZERO_EXTRACT (three places). + (invalidate_from_clobbers): Likewise (two places). + (cse_around_loop): Likewise. + (invalidate_skipped_set): Likewise. + (cse_set_around_loop): Likewise. + + Wed Nov 3 03:56:55 1993 Paul Eggert (eggert@twinsun.com) + + * dbxout.c (dbxout_type): Print `-2' instead of `0037777777776' + for an enumeration constant whose value is -2; + otherwise, GDB 4.11 rejects the type. + + Wed Nov 3 04:35:13 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile.in (fix-header, gen-protos): Link with HOST_LIBS. + Depend on HOST_LIBDEPS. + + Wed Nov 3 00:07:18 1993 Per Bothner (bothner@wombat.gnu.ai.mit.edu) + + * fixproto: When checking for uses of _flsbuf, make sure to + not match (say) __flsbuf or other non-word _flsbuf strings. + * fixproto: Be more robust when checking for files indirectly + needed (via #include directives). E.g. handle "../foo/bar.h" + properly, and silently ignore missing include files. + + Tue Nov 2 17:37:39 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * gcc.c (do_spec_1): Use spec_version for %v, not version_string. + Distinguish %v1 and %v2. + (default_compilers): For __GNUC_MINOR__, use %v2. + For __GNUC__ and __GNUG__, use %v1. + + * protoize.c (safe_read): New function. + (process_aux_info_file, edit_file): Use safe_read. + + * cccp.c (safe_read): New function. + (main, finclude, check_precompiled): Use safe_read. + + Tue Nov 2 14:31:42 1993 Ian Lance Taylor (ian@cygnus.com) + + * fixincludes: Don't remove /**/ from X11/Xlibint.h or + X11/extensions/multibufst.h; unnecessary. + + Tue Nov 2 07:20:12 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) + + * optabs.c (init_optabs): Function `ffs' takes `int', not mode that + is BITS_PER_WORD wide. + + Tue Nov 2 02:53:26 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * cp-typeck.c (comptypes): Fix typo in changing STRICT from 2 to 1. + + * protoize.c (edit_file): Use safe_write. + (safe_write): New subroutine. + + * calls.c (expand_call): Discard __ prefix like _ or __x. + + * objc/objects.c: Include tconfig.h. + + Mon Nov 1 23:34:46 1993 Rainer Orth (ro@anemone.techfak.uni-bielefeld.de) + + * fixincludes (sys/stat.h) fix fchmod prototype, first arg is + int, not char * [AIX 3.2.4] + (rpc/svc.h): avoid nested comments [Ultrix 4.3] + (stdio.h, stdlib.h): fixed getopt prototypes to match POSIX.2 + [DEC Alpha OSF/1 1.3] + + Mon Nov 1 11:42:29 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) + + * fixincludes: Fix like . + + * fixincludes: Unquote 'f' in #define _IO. Fix elf.h like + elf_abi.h. For Irix 5. + + Mon Nov 1 15:15:38 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * configure (mips-sgi-irix5*): Add fixincludes=Makefile.in. + + * fixproto (setjmp.h): Don't require siglongjmp and sigsetjmp. + They need sigjmp_buf, and are missing on many systems. + + * Makefile.in (stmp-fixproto): Print a notice that warnings and errors + from fixproto are normal. + (distdir): Avoid spurious output from gcc.texi version number check. + (diff): New target. + + Mon Nov 1 15:19:09 1993 Ian Lance Taylor (ian@cygnus.com) + + * fixincludes: Don't remove /**/ from X11/xmd.h; breaks gcc + -traditional on some systems. + + Mon Nov 1 07:38:58 1993 Richard Kenner (kenner@vlsi1.ultra.nyu.edu + + * rs6000.md: Add set_attr for "length" when we are going to split + an insn at output time. + + * rs6000.md (bdn/bdz): Fix typo in checking for when we + need to split. + + * rs6000.md (mulsi3): Make alternatives be "mq" and "no_mq" + instead of "power" and "powerpc". Only allow one pattern (either + with or without the clobber of MQ) to match. + + * stmt.c (expand_decl_init): If CONST_DECL, don't generate any + code, but call expand_expr if DECL_INITIAL is a constant. + + Mon Nov 1 06:17:16 1993 Torbjorn Granlund (tege@adder.cygnus.com) + + * m68k.md (divhisi3, udivhisi3, modhisi3, umodhi3): Comment out. + (divhisi3, udivhisi3, modhisi3, umodhi3 recognizers): Comment out. + + * expmed.c (synth_mult): When factoring T, break from loop after + first factor. + (expand_mult): Increase max cost to 12 again. + + Mon Nov 1 01:06:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * cccp.c (safe_write): New function. + (write_output): Use safe_write. + Mon Nov 1 01:06:27 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) 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.2/INSTALL gcc-2.5.3/INSTALL *** gcc-2.5.2/INSTALL Sun Oct 31 19:39:09 1993 --- gcc-2.5.3/INSTALL Thu Nov 11 10:42:08 1993 *************** *** 9,12 **** --- 9,17 ---- Here is the procedure for installing GNU CC on a Unix system. + You cannot install GNU C by itself on MSDOS; it will not compile + under any MSDOS compiler except itself. You need to get the complete + compilation package DJGPP, which includes binaries as well as sources, + and includes all the necessary compilation tools and libraries. + 1. If you have built GNU CC previously in the same directory for a different target machine, do `make distclean' to delete all files *************** *** 130,138 **** 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. --- 135,143 ---- GAS is up to you. ! Conversely, if you *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. *************** *** 139,148 **** 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 --- 144,155 ---- The systems where it makes a difference whether you use GAS ! are ! `hppa1.0-ANY-ANY', `hppa1.1-ANY-ANY', `i386-ANY-sysv', ! `i386-ANY-isc', ! `i860-ANY-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 *************** *** 305,308 **** --- 312,322 ---- with GNU CC (any version) seems not to have this problem. + `i860-intel-osf1' + This is the Paragon. If you have version 1.0 of the + operating system, you need to take special steps to build GNU + CC due to peculiarities of the system. Newer system versions + have no problem. See the section `Installation Problems' in + the GNU CC Manual. + `m68000-att' AT&T 3b1, a.k.a. 7300 PC. Special procedures are needed to *************** *** 527,530 **** --- 541,548 ---- enable the compiler to find the proper tools for compilation of the program `enquire'. + + Alternatively, you can do subsequent compilation using a value of + the `PATH' environment variable such that the necessary GNU tools + come before the standard system tools. 8. Build the compiler. Just type `make LANGUAGES=c' in the compiler 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.2/Makefile.in gcc-2.5.3/Makefile.in *** gcc-2.5.2/Makefile.in Sat Oct 30 03:40:55 1993 --- gcc-2.5.3/Makefile.in Sun Nov 7 00:24:00 1993 *************** *** 1576,1582 **** 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 --- 1576,1582 ---- mv tmp-deduced.h deduced.h ! gen-protos: gen-protos.o scan.o $(HOST_LIBDEPS) ${HOST_CC} $(HOST_CFLAGS) $(HOST_LDFLAGS) -o gen-protos \ ! gen-protos.o scan.o $(HOST_LIBS) gen-protos.o: gen-protos.c scan.h hconfig.h *************** *** 1593,1599 **** 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 --- 1593,1599 ---- rm -rf fixtmp.c ! fix-header: fix-header.o scan-decls.o scan.o xsys-protos.h $(HOST_LIBDEPS) $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o fix-header \ ! fix-header.o scan-decls.o scan.o $(HOST_LIBS) fix-header.o: fix-header.c obstack.h scan.h xsys-protos.h hconfig.h *************** *** 1616,1619 **** --- 1616,1620 ---- # stmp-headers is to make sure fixincludes has already finished. stmp-fixproto: fixhdr.ready xsys-protos.h fixproto stmp-headers + @echo "Various warnings and error messages from fixproto are normal" CPP="$(GCC_FOR_TARGET) -E"; export CPP; \ ${srcdir}/fixproto include include $(SYSTEM_HEADER_DIR) *************** *** 1689,1693 **** # 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. -rm -f *.toc *.log *.vr *.fn *.cp *.tp *.ky *.pg --- 1690,1694 ---- # Delete files generated for fixproto -rm -rf fix-header xsys-protos.h deduced.h tmp-deduced.h \ ! gen-protos fixproto.list fixtmp.* fixhdr.ready # Delete unwanted output files from TeX. -rm -f *.toc *.log *.vr *.fn *.cp *.tp *.ky *.pg *************** *** 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 --- 1712,1715 ---- *************** *** 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;\ --- 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 > /dev/null; \ then true; \ else echo "You must update the version number in \`gcc.texi'"; sleep 10;\ *************** *** 2053,2056 **** --- 2053,2066 ---- # Get rid of everything we don't want in the distribution. cd gcc-$(version); make -f Makefile.in extraclean + + # make diff oldversion=M.N + # creates a diff file between an older distribution and this one. + # The -P option assumes this is GNU diff. + diff: + 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-$(oldversion) gcc-$(version) > diffs # do make -f ../gcc/Makefile maketest DIR=../gcc 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.2/NEWS gcc-2.5.3/NEWS *** gcc-2.5.2/NEWS Sun Oct 31 15:57:19 1993 --- gcc-2.5.3/NEWS Sun Nov 7 00:16:12 1993 *************** *** 1,2 **** --- 1,10 ---- + Addendum for version 2.5.3: + + The method of "mangling" C++ function names has been changed. So you + must to recompile all C++ programs completely when you start using GCC + 2.5. Also, GCC 2.5 requires libg++ version 2.5. Earlier libg++ + versions won't work with GCC 2.5. (This is generally true--GCC + version M.N requires libg++ version M.N.) + Noteworthy GCC changes in version 2.5: *************** *** 68,78 **** 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 --- 76,86 ---- something like this (works only in 2.5): ! int computation () __attribute__ ((const)); or like this (works in older versions too): ! typedef int intfn (); ! const intfn computation; * The new option -iwithprefixbefore specifies a directory to add to 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.2/README gcc-2.5.3/README *** gcc-2.5.2/README Mon Nov 1 01:07:36 1993 --- gcc-2.5.3/README Thu Nov 11 10:42:13 1993 *************** *** 1,8 **** ! 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. - - This is still a beta test release, but aside from the Objective C - run-time, it ought to be close to reliable. The GNU C compiler is free software. See the file COPYING for copying --- 1,5 ---- ! This directory contains the version 2.5.3 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. The GNU C compiler is free software. See the file COPYING for copying 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.2/c-common.c gcc-2.5.3/c-common.c *** gcc-2.5.2/c-common.c Sun Oct 31 15:18:50 1993 --- gcc-2.5.3/c-common.c Thu Nov 11 05:00:40 1993 *************** *** 686,691 **** have the same mode. But might as well warn anyway, since it will fail on other machines. */ ! if (TYPE_MAIN_VARIANT (TREE_TYPE (cur_param)) ! != integer_type_node) { sprintf (message, --- 686,694 ---- have the same mode. But might as well warn anyway, since it will fail on other machines. */ ! if ((TYPE_MAIN_VARIANT (TREE_TYPE (cur_param)) ! != integer_type_node) ! && ! (TYPE_MAIN_VARIANT (TREE_TYPE (cur_param)) ! != unsigned_type_node)) { sprintf (message, *************** *** 935,938 **** --- 938,949 ---- that = "different type"; } + + /* Make the warning better in case of mismatch of int vs long. */ + if (TREE_CODE (cur_type) == INTEGER_TYPE + && TREE_CODE (wanted_type) == INTEGER_TYPE + && TYPE_PRECISION (cur_type) == TYPE_PRECISION (wanted_type) + && TYPE_NAME (cur_type) != 0 + && TREE_CODE (TYPE_NAME (cur_type)) == TYPE_DECL) + that = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (cur_type))); if (strcmp (this, that) != 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.2/c-typeck.c gcc-2.5.3/c-typeck.c *** gcc-2.5.2/c-typeck.c Wed Oct 27 15:51:28 1993 --- gcc-2.5.3/c-typeck.c Thu Nov 11 06:10:14 1993 *************** *** 1413,1417 **** tree function, params; { ! register tree fntype, fundecl; register tree coerced_params; tree name = NULL_TREE, assembler_name = NULL_TREE; --- 1413,1417 ---- tree function, params; { ! register tree fntype, fundecl = 0; register tree coerced_params; tree name = NULL_TREE, assembler_name = NULL_TREE; *************** *** 2212,2216 **** result_type = integer_type_node; op1 = null_pointer_node; ! if (! flag_traditional) pedwarn ("ordered comparison of pointer with integer zero"); } --- 2212,2216 ---- result_type = integer_type_node; op1 = null_pointer_node; ! if (pedantic) pedwarn ("ordered comparison of pointer with integer zero"); } *************** *** 3115,3118 **** --- 3115,3120 ---- case COMPONENT_REF: case ARRAY_REF: + case REALPART_EXPR: + case IMAGPART_EXPR: x = TREE_OPERAND (x, 0); 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.2/calls.c gcc-2.5.3/calls.c *** gcc-2.5.2/calls.c Fri Oct 8 18:26:59 1993 --- gcc-2.5.3/calls.c Tue Nov 2 03:15:55 1993 *************** *** 796,801 **** char *tname = name; if (name[0] == '_') ! tname += ((name[1] == '_' && name[2] == 'x') ? 3 : 1); if (tname[0] == 's') --- 796,809 ---- char *tname = name; + /* Disregard prefix _, __ or __x. */ if (name[0] == '_') ! { ! if (name[1] == '_' && name[2] == 'x') ! tname += 3; ! else if (name[1] == '_') ! tname += 2; ! else ! tname += 1; ! } if (tname[0] == 's') 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.2/cccp.c gcc-2.5.3/cccp.c *** gcc-2.5.2/cccp.c Mon Nov 1 01:06:06 1993 --- gcc-2.5.3/cccp.c Fri Nov 5 17:28:28 1993 *************** *** 981,984 **** --- 981,1036 ---- static int ignore_srcdir; + /* Read LEN bytes at PTR from descriptor DESC, for file FILENAME, + retrying if necessary. Return the actual number of bytes read. */ + + static int + safe_read (desc, ptr, len) + int desc; + char *ptr; + int len; + { + int left = len; + while (left > 0) { + int nchars = read (desc, ptr, left); + if (nchars < 0) + { + #ifdef EINTR + if (errno == EINTR) + continue; + #endif + return nchars; + } + if (nchars == 0) + break; + ptr += nchars; + left -= nchars; + } + return len - left; + } + + /* Write LEN bytes at PTR to descriptor DESC, + retrying if necessary, and treating any real error as fatal. */ + + static void + safe_write (desc, ptr, len) + int desc; + char *ptr; + int len; + { + while (len > 0) { + int written = write (desc, ptr, len); + if (written < 0) + { + #ifdef EINTR + if (errno == EINTR) + continue; + #endif + pfatal_with_name (out_fname); + } + ptr += written; + len -= written; + } + } + int main (argc, argv) *************** *** 1881,1885 **** bufp = fp->buf; for (;;) { ! cnt = read (f, bufp, bsize - size); if (cnt < 0) goto perror; /* error! */ if (cnt == 0) break; /* End of file */ --- 1933,1937 ---- bufp = fp->buf; for (;;) { ! cnt = safe_read (f, bufp, bsize - size); if (cnt < 0) goto perror; /* error! */ if (cnt == 0) break; /* End of file */ *************** *** 1901,1905 **** while (st_size > 0) { ! i = read (f, fp->buf + fp->length, st_size); if (i <= 0) { if (i == 0) break; --- 1953,1957 ---- while (st_size > 0) { ! i = safe_read (f, fp->buf + fp->length, st_size); if (i <= 0) { if (i == 0) break; *************** *** 4208,4213 **** include file directory, or within any subdirectory thereof, then the given file must be a "system" include file. This function tells us ! if we should suppress pedantic errors/warnings for the given FILENAME. */ static int is_system_include (filename) --- 4260,4268 ---- include file directory, or within any subdirectory thereof, then the given file must be a "system" include file. This function tells us ! if we should suppress pedantic errors/warnings for the given FILENAME. + The value is 2 if the file is a C-language system header file + for which C++ should (on most systems) assume `extern "C"'. */ + static int is_system_include (filename) *************** *** 4280,4284 **** on the number of bytes we can read. */ while (st_size > 0) { ! i = read (f, fp->buf + fp->length, st_size); if (i <= 0) { if (i == 0) break; --- 4335,4339 ---- on the number of bytes we can read. */ while (st_size > 0) { ! i = safe_read (f, fp->buf + fp->length, st_size); if (i <= 0) { if (i == 0) break; *************** *** 4308,4312 **** for (;;) { ! i = read (f, bufp, bsize - st_size); if (i < 0) goto nope; /* error! */ --- 4363,4367 ---- for (;;) { ! i = safe_read (f, bufp, bsize - st_size); if (i < 0) goto nope; /* error! */ *************** *** 4522,4526 **** while (st_size > 0) { ! i = read (pcf, buf + length, st_size); if (i < 0) goto nope; --- 4577,4581 ---- while (st_size > 0) { ! i = safe_read (pcf, buf + length, st_size); if (i < 0) goto nope; *************** *** 4757,4760 **** --- 4812,4816 ---- char *line_command = xmalloc (line_command_len); int len; + int written; /* In each run through the loop, either cur_buf_loc == */ *************** *** 4777,4784 **** next_string->filename), "\n"); ! if (write (fileno (stdout), line_command, strlen (line_command)) < 0) ! pfatal_with_name (out_fname); ! if (write (fileno (stdout), next_string->contents, next_string->len) < 0) ! pfatal_with_name (out_fname); } next_string = next_string->chain; --- 4833,4838 ---- next_string->filename), "\n"); ! safe_write (fileno (stdout), line_command, strlen (line_command)); ! safe_write (fileno (stdout), next_string->contents, next_string->len); } next_string = next_string->chain; *************** *** 4790,4795 **** : outbuf.bufp - cur_buf_loc); ! if (write (fileno (stdout), cur_buf_loc, len) < len) ! pfatal_with_name (out_fname); cur_buf_loc += len; } --- 4844,4848 ---- : outbuf.bufp - cur_buf_loc); ! safe_write (fileno (stdout), cur_buf_loc, len); cur_buf_loc += len; } *************** *** 7143,7146 **** --- 7196,7200 ---- *line_end++ = '3'; } + #ifndef NO_IMPLICIT_EXTERN_C /* Tell cc1plus if following text should be treated as C. */ if (ip->system_header_p == 2 && cplusplus) { *************** *** 7148,7151 **** --- 7202,7206 ---- *line_end++ = '4'; } + #endif *line_end++ = '\n'; len = line_end - line_cmd_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.2/combine.c gcc-2.5.3/combine.c *** gcc-2.5.2/combine.c Tue Oct 19 00:41:14 1993 --- gcc-2.5.3/combine.c Wed Nov 10 21:31:30 1993 *************** *** 160,163 **** --- 160,168 ---- static rtx subst_insn; + /* If nonzero, this is the insn that should be presumed to be + immediately in front of `subst_insn'. */ + + static rtx subst_prev_insn; + /* This is the lowest CUID that `subst' is currently dealing with. get_last_value will not return a value if the register was set at or *************** *** 1196,1199 **** --- 1201,1206 ---- temp = i1, i1 = i2, i2 = temp; + subst_prev_insn = 0; + /* First check for one important special-case that the code below will not handle. Namely, the case where I1 is zero, I2 has multiple sets, *************** *** 1308,1313 **** as I2 will not cause a problem. */ ! i1 = gen_rtx (INSN, VOIDmode, INSN_UID (i2), 0, i2, ! XVECEXP (PATTERN (i2), 0, 1), -1, 0, 0); SUBST (PATTERN (i2), XVECEXP (PATTERN (i2), 0, 0)); --- 1315,1321 ---- as I2 will not cause a problem. */ ! subst_prev_insn = i1 ! = gen_rtx (INSN, VOIDmode, INSN_UID (i2), 0, i2, ! XVECEXP (PATTERN (i2), 0, 1), -1, 0, 0); SUBST (PATTERN (i2), XVECEXP (PATTERN (i2), 0, 0)); *************** *** 9495,9502 **** rtx insn, set; ! for (insn = prev_nonnote_insn (subst_insn); ! insn && INSN_CUID (insn) >= subst_low_cuid; ! insn = prev_nonnote_insn (insn)) ! ; if (insn --- 9503,9515 ---- rtx insn, set; ! /* If there is an insn that is supposed to be immediately ! in front of subst_insn, use it. */ ! if (subst_prev_insn != 0) ! insn = subst_prev_insn; ! else ! for (insn = prev_nonnote_insn (subst_insn); ! insn && INSN_CUID (insn) >= subst_low_cuid; ! insn = prev_nonnote_insn (insn)) ! ; if (insn 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.2/config/alpha/alpha.md gcc-2.5.3/config/alpha/alpha.md *** gcc-2.5.2/config/alpha/alpha.md Thu Oct 7 08:53:51 1993 --- gcc-2.5.3/config/alpha/alpha.md Wed Nov 10 18:49:15 1993 *************** *** 1367,1371 **** "") ! (define_expand "maxdi3" [(set (match_dup 3) (le:DI (match_operand:DI 1 "reg_or_0_operand" "") --- 1367,1371 ---- "") ! (define_expand "smaxdi3" [(set (match_dup 3) (le:DI (match_operand:DI 1 "reg_or_0_operand" "") 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.2/config/alpha/osf12.h gcc-2.5.3/config/alpha/osf12.h *** gcc-2.5.2/config/alpha/osf12.h --- gcc-2.5.3/config/alpha/osf12.h Wed Nov 10 18:03:27 1993 *************** *** 0 **** --- 1,29 ---- + /* Definitions of target machine for GNU compiler, for DEC Alpha. + Copyright (C) 1992, 1993 Free Software Foundation, Inc. + Contributed by Richard Kenner (kenner@nyu.edu) + + 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 "alpha/alpha.h" + + /* In OSF 1.2, there is a linker bug that prevents use of -O3 to + the linker. */ + + #undef LINK_SPEC + #define LINK_SPEC \ + "-G 8 -O1 %{static:-non_shared} %{!static:-call_shared}" 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.2/config/arm/arm.md gcc-2.5.3/config/arm/arm.md *** gcc-2.5.2/config/arm/arm.md Tue Oct 19 17:34:39 1993 --- gcc-2.5.3/config/arm/arm.md Wed Nov 10 18:54:05 1993 *************** *** 4137,4140 **** --- 4137,4196 ---- [(set_attr "conds" "set") (set_attr "length" "5")]) + + ;; These are similar, but are needed when the mla pattern contains the + ;; eliminated register as operand 3. + + (define_insn "" + [(set (match_operand:SI 0 "" "=&r,&r") + (plus:SI (plus:SI (mult:SI (match_operand:SI 1 "" "%0,r") + (match_operand:SI 2 "" "r,r")) + (match_operand:SI 3 "" "r,r")) + (match_operand:SI 4 "const_int_operand" "n,n")))] + "reload_in_progress" + "* + arm_output_asm_insn (\"mla\\t%0, %2, %1, %3\", operands); + operands[2] = operands[4]; + operands[1] = operands[0]; + return output_add_immediate (operands); + " + [(set_attr "length" "5")]) + + (define_insn "" + [(set (reg:CC_NOOV 24) + (compare:CC_NOOV (plus:SI (plus:SI (mult:SI + (match_operand:SI 3 "" "r") + (match_operand:SI 4 "" "r")) + (match_operand:SI 1 "" "r")) + (match_operand:SI 2 "const_int_operand" "n")) + (const_int 0))) + (set (match_operand:SI 0 "" "=&r") + (plus:SI (plus:SI (mult:SI (match_dup 3) (match_dup 4)) (match_dup 1)) + (match_dup 2)))] + "reload_in_progress" + "* + output_add_immediate (operands); + return arm_output_asm_insn (\"mlas\\t%0, %3, %4, %0\", operands); + " + [(set_attr "length" "5") + (set_attr "conds" "set")]) + + (define_insn "" + [(set (reg:CC_NOOV 24) + (compare:CC_NOOV (plus:SI (plus:SI (mult:SI + (match_operand:SI 3 "" "r") + (match_operand:SI 4 "" "r")) + (match_operand:SI 1 "" "r")) + (match_operand:SI 2 "const_int_operand" "n")) + (const_int 0))) + (clobber (match_scratch:SI 0 "=&r"))] + "reload_in_progress" + "* + output_add_immediate (operands); + return arm_output_asm_insn (\"mlas\\t%0, %3, %4, %0\", operands); + " + [(set_attr "length" "5") + (set_attr "conds" "set")]) + + 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.2/config/convex/convex.md gcc-2.5.3/config/convex/convex.md *** gcc-2.5.2/config/convex/convex.md Sat May 29 21:17:14 1993 --- gcc-2.5.3/config/convex/convex.md Sat Nov 6 04:59:31 1993 *************** *** 1909,1912 **** --- 1909,1950 ---- "* return output_call (insn, &operands[1]); ") + ;; Call subroutine returning any type. + + (define_expand "untyped_call" + [(parallel [(call (match_operand 0 "" "") + (const_int 0)) + (match_operand 1 "" "") + (match_operand 2 "" "")])] + "" + " + { + int i; + + emit_call_insn (gen_call_pop (operands[0], const0_rtx, + const0_rtx, const0_rtx)); + + for (i = 0; i < XVECLEN (operands[2], 0); i++) + { + rtx set = XVECEXP (operands[2], 0, i); + emit_move_insn (SET_DEST (set), SET_SRC (set)); + } + + /* The optimizer does not know that the call sets the function value + registers we stored in the result block. We avoid problems by + claiming that all hard registers are used and clobbered at this + point. */ + emit_insn (gen_blockage ()); + + DONE; + }") + + ;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and + ;; all of memory. This blocks insns from being moved across this point. + + (define_insn "blockage" + [(unspec_volatile [(const_int 0)] 0)] + "" + "") + (define_expand "return" [(return)] 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.2/config/i386/os2.h gcc-2.5.3/config/i386/os2.h *** gcc-2.5.2/config/i386/os2.h --- gcc-2.5.3/config/i386/os2.h Thu Nov 4 14:59:27 1993 *************** *** 0 **** --- 1,69 ---- + /* Definitions of target machine for GNU compiler + for an Intel i386 or later processor running OS/2 2.x. + Copyright (C) 1993 Free Software Foundation, Inc. + Contributed by Samuel Figueroa (figueroa@cs.nyu.edu) + + 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 DEFAULT_TARGET_MACHINE + #define DEFAULT_TARGET_MACHINE "i386-os2" + #endif + #ifndef STARTFILE_SPEC + #define STARTFILE_SPEC "" + #endif + #ifndef MD_EXEC_PREFIX + #define MD_EXEC_PREFIX "\\gcc\\bin\\" + #endif + #ifndef STANDARD_STARTFILE_PREFIX + #define STANDARD_STARTFILE_PREFIX "\\gcc\\lib\\" + #endif + #ifndef LOCAL_INCLUDE_DIR + #define LOCAL_INCLUDE_DIR "\\gcc\\include" + #endif + + #define YES_UNDERSCORES + #include "i386/gstabs.h" + + #define USE_COLLECT + + #define BIGGEST_FIELD_ALIGNMENT \ + (maximum_field_alignment ? maximum_field_alignment : 32) + + extern int maximum_field_alignment; + + #undef PCC_BITFIELD_TYPE_MATTERS + #define PCC_BITFIELD_TYPE_MATTERS (maximum_field_alignment == 0) + + /* Define this macro if it is advisible to hold scalars in registers + in a wider mode than that declared by the program. In such cases, + the value is constrained to be within the bounds of the declared + type, but kept valid in the wider mode. The signedness of the + extension may differ from that of the type. */ + + #define PROMOTE_MODE(MODE,UNSIGNEDP,TYPE) \ + if (GET_MODE_CLASS (MODE) == MODE_INT \ + && GET_MODE_SIZE (MODE) < UNITS_PER_WORD) \ + (MODE) = SImode; + + /* Define this if function arguments should also be promoted using the above + procedure. */ + + #define PROMOTE_FUNCTION_ARGS + + /* Likewise, if the function return value is promoted. */ + + #define PROMOTE_FUNCTION_RETURN 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.2/config/i386/xm-os2.h gcc-2.5.3/config/i386/xm-os2.h *** gcc-2.5.2/config/i386/xm-os2.h --- gcc-2.5.3/config/i386/xm-os2.h Thu Nov 4 14:59:30 1993 *************** *** 0 **** --- 1,47 ---- + /* Configuration for GNU compiler + for an Intel i386 or later processor running OS/2 2.x. + Copyright (C) 1993 Free Software Foundation, Inc. + Contributed by Samuel Figueroa (figueroa@cs.nyu.edu) + + 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 OS2 + #define OS2 + #endif + + #ifdef __IBMC__ + #include /* this defines alloca */ + #define USG + #define ONLY_INT_FIELDS + #define HAVE_PUTENV + #define USE_PROTOTYPES 1 + #define bcmp(a,b,c) memcmp (a,b,c) + #define bcopy(a,b,c) memcpy (b,a,c) + #define bzero(a,b) memset (a,0,b) + #define index strchr + #define rindex strrchr + #define kill(a,b) raise(b) + #define mktemp tmpnam + #else + #define ____386BSD____ + int spawnv (int modeflag, char *path, char *argv[]); + int spawnvp (int modeflag, char *path, char *argv[]); + #endif /* __IBMC__ */ + + #define EXECUTABLE_SUFFIX ".exe" + + #include "i386/xm-i386.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.2/config/i860/paragon.h gcc-2.5.3/config/i860/paragon.h *** gcc-2.5.2/config/i860/paragon.h Tue Oct 26 19:32:48 1993 --- gcc-2.5.3/config/i860/paragon.h Fri Nov 5 11:19:23 1993 *************** *** 4,8 **** 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) --- 4,8 ---- Based upon original work of Ron Guilmette (rfg@ncd.com). Whacked into submission by Andy Pfiffer (andyp@ssd.intel.com). ! Partially inspired by Pete Beckman @ Indiana University (beckman@cs.indiana.edu) Harry Dolan of Intel Corporation (dolan@ssd.intel.com) *************** *** 67,70 **** --- 67,72 ---- #endif /* HAVE_DASH_G */ + /* Get rid of definition from svr3.h. */ + #undef SIZE_TYPE #undef I860_REG_PREFIX 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.2/config/m68k/m68k.c gcc-2.5.3/config/m68k/m68k.c *** gcc-2.5.2/config/m68k/m68k.c Sun Oct 31 13:08:47 1993 --- gcc-2.5.3/config/m68k/m68k.c Wed Nov 3 16:17:46 1993 *************** *** 1078,1086 **** && (optype1 == OFFSOP || optype1 == MEMOP)) { ! if (reg_overlap_mentioned_p (operands[0], XEXP (operands[1], 0)) && reg_overlap_mentioned_p (latehalf[0], XEXP (operands[1], 0))) { /* If both halves of dest are used in the src memory address, ! compute the address into latehalf of dest. */ compadr: xops[0] = latehalf[0]; --- 1078,1089 ---- && (optype1 == OFFSOP || optype1 == MEMOP)) { ! rtx testlow = gen_rtx (REG, SImode, REGNO (operands[0])); ! ! if (reg_overlap_mentioned_p (testlow, XEXP (operands[1], 0)) && reg_overlap_mentioned_p (latehalf[0], XEXP (operands[1], 0))) { /* If both halves of dest are used in the src memory address, ! compute the address into latehalf of dest. ! Note that this can't happen if the dest is two data regs. */ compadr: xops[0] = latehalf[0]; *************** *** 1103,1108 **** XEXP (operands[1], 0))) { ! /* Check for two regs used by both source and dest. */ ! if (reg_overlap_mentioned_p (operands[0], XEXP (operands[1], 0)) || reg_overlap_mentioned_p (latehalf[0], XEXP (operands[1], 0))) goto compadr; --- 1106,1116 ---- XEXP (operands[1], 0))) { ! /* Check for two regs used by both source and dest. ! Note that this can't happen if the dest is all data regs. ! It can happen if the dest is d6, d7, a0. ! But in that case, latehalf is an addr reg, so ! the code at compadr does ok. */ ! ! if (reg_overlap_mentioned_p (testlow, XEXP (operands[1], 0)) || reg_overlap_mentioned_p (latehalf[0], XEXP (operands[1], 0))) goto compadr; *************** *** 1118,1122 **** return ""; } ! else if (reg_overlap_mentioned_p (operands[0], XEXP (operands[1], 0))) /* If the low half of dest is mentioned in the source memory address, the arrange to emit the move late half first. */ --- 1126,1130 ---- return ""; } ! else if (reg_overlap_mentioned_p (testlow, XEXP (operands[1], 0))) /* If the low half of dest is mentioned in the source memory address, the arrange to emit the move late half first. */ 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.2/config/m68k/m68k.h gcc-2.5.3/config/m68k/m68k.h *** gcc-2.5.2/config/m68k/m68k.h Tue Sep 21 22:40:16 1993 --- gcc-2.5.3/config/m68k/m68k.h Fri Nov 5 03:09:54 1993 *************** *** 1403,1424 **** break; \ case MULT: \ ! if (GET_CODE (XEXP (x, 1)) == CONST_INT \ ! && exact_log2 (INTVAL (XEXP (x, 1))) >= 0) \ ! { \ ! /* A shift by a big integer takes an extra instruction. */ \ ! if (GET_CODE (XEXP (X, 1)) == CONST_INT \ ! && (INTVAL (XEXP (X, 1)) == (1 << 16))) \ ! return COSTS_N_INSNS (2); /* clrw;swap */ \ ! if (GET_CODE (XEXP (X, 1)) == CONST_INT \ ! && !(INTVAL (XEXP (X, 1)) > 1 \ ! && INTVAL (XEXP (X, 1)) <= 256)) \ ! return COSTS_N_INSNS (3); /* lsr #i,dn */ \ ! break; \ ! } \ ! else if (GET_MODE (X) == QImode || GET_MODE (X) == HImode) \ return COSTS_N_INSNS (MULW_COST); \ else \ return COSTS_N_INSNS (MULL_COST); \ - break; \ case DIV: \ case UDIV: \ --- 1403,1410 ---- break; \ case MULT: \ ! if (GET_MODE (X) == QImode || GET_MODE (X) == HImode) \ return COSTS_N_INSNS (MULW_COST); \ else \ return COSTS_N_INSNS (MULL_COST); \ case DIV: \ case UDIV: \ 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.2/config/m68k/m68k.md gcc-2.5.3/config/m68k/m68k.md *** gcc-2.5.2/config/m68k/m68k.md Sun Oct 31 18:16:56 1993 --- gcc-2.5.3/config/m68k/m68k.md Mon Nov 1 12:29:02 1993 *************** *** 2716,2748 **** }") ! (define_insn "divhisi3" ! [(set (match_operand:HI 0 "general_operand" "=d") ! (truncate:HI ! (div:SI ! (match_operand:SI 1 "general_operand" "0") ! (sign_extend:SI (match_operand:HI 2 "nonimmediate_operand" "dm")))))] ! "" ! "* ! { ! #ifdef MOTOROLA ! return \"divs%.w %2,%0\"; ! #else ! return \"divs %2,%0\"; ! #endif ! }") ! ! (define_insn "" ! [(set (match_operand:HI 0 "general_operand" "=d") ! (truncate:HI (div:SI (match_operand:SI 1 "general_operand" "0") ! (match_operand:SI 2 "const_int_operand" "n"))))] ! "" ! "* ! { ! #ifdef MOTOROLA ! return \"divs%.w %2,%0\"; ! #else ! return \"divs %2,%0\"; ! #endif ! }") (define_insn "udivhi3" --- 2716,2752 ---- }") ! ;; These patterns don't work because the divs instruction is undefined if ! ;; the quotient is more than 16 bits. This valid C would be miscompiled: ! ;; int n; short d; unsigned short q; ... q = (unsigned int) (n / d); ! ;; Imagine what happens when n = 100000 and d = 1. ! ;;(define_insn "divhisi3" ! ;; [(set (match_operand:HI 0 "general_operand" "=d") ! ;; (truncate:HI ! ;; (div:SI ! ;; (match_operand:SI 1 "general_operand" "0") ! ;; (sign_extend:SI (match_operand:HI 2 "nonimmediate_operand" "dm")))))] ! ;; "" ! ;; "* ! ;;{ ! ;;#ifdef MOTOROLA ! ;; return \"divs%.w %2,%0\"; ! ;;#else ! ;; return \"divs %2,%0\"; ! ;;#endif ! ;;}") ! ! ;;(define_insn "" ! ;; [(set (match_operand:HI 0 "general_operand" "=d") ! ;; (truncate:HI (div:SI (match_operand:SI 1 "general_operand" "0") ! ;; (match_operand:SI 2 "const_int_operand" "n"))))] ! ;; "" ! ;; "* ! ;;{ ! ;;#ifdef MOTOROLA ! ;; return \"divs%.w %2,%0\"; ! ;;#else ! ;; return \"divs %2,%0\"; ! ;;#endif ! ;;}") (define_insn "udivhi3" *************** *** 2760,2792 **** }") ! (define_insn "udivhisi3" ! [(set (match_operand:HI 0 "general_operand" "=d") ! (truncate:HI ! (udiv:SI ! (match_operand:SI 1 "general_operand" "0") ! (zero_extend:SI (match_operand:HI 2 "nonimmediate_operand" "dm")))))] ! "" ! "* ! { ! #ifdef MOTOROLA ! return \"divu%.w %2,%0\"; ! #else ! return \"divu %2,%0\"; ! #endif ! }") ! ! (define_insn "" ! [(set (match_operand:HI 0 "general_operand" "=d") ! (truncate:HI (udiv:SI (match_operand:SI 1 "general_operand" "0") ! (match_operand:SI 2 "const_int_operand" "n"))))] ! "" ! "* ! { ! #ifdef MOTOROLA ! return \"divu%.w %2,%0\"; ! #else ! return \"divu %2,%0\"; ! #endif ! }") (define_expand "divdf3" --- 2764,2797 ---- }") ! ;; See comment before divhisi3 why these are commented out. ! ;;(define_insn "udivhisi3" ! ;; [(set (match_operand:HI 0 "general_operand" "=d") ! ;; (truncate:HI ! ;; (udiv:SI ! ;; (match_operand:SI 1 "general_operand" "0") ! ;; (zero_extend:SI (match_operand:HI 2 "nonimmediate_operand" "dm")))))] ! ;; "" ! ;; "* ! ;;{ ! ;;#ifdef MOTOROLA ! ;; return \"divu%.w %2,%0\"; ! ;;#else ! ;; return \"divu %2,%0\"; ! ;;#endif ! ;;}") ! ! ;;(define_insn "" ! ;; [(set (match_operand:HI 0 "general_operand" "=d") ! ;; (truncate:HI (udiv:SI (match_operand:SI 1 "general_operand" "0") ! ;; (match_operand:SI 2 "const_int_operand" "n"))))] ! ;; "" ! ;; "* ! ;;{ ! ;;#ifdef MOTOROLA ! ;; return \"divu%.w %2,%0\"; ! ;;#else ! ;; return \"divu %2,%0\"; ! ;;#endif ! ;;}") (define_expand "divdf3" *************** *** 2889,2925 **** }") ! (define_insn "modhisi3" ! [(set (match_operand:HI 0 "general_operand" "=d") ! (truncate:HI ! (mod:SI ! (match_operand:SI 1 "general_operand" "0") ! (sign_extend:SI (match_operand:HI 2 "nonimmediate_operand" "dm")))))] ! "" ! "* ! { ! /* The swap insn produces cc's that don't correspond to the result. */ ! CC_STATUS_INIT; ! #ifdef MOTOROLA ! return \"divs%.w %2,%0\;swap %0\"; ! #else ! return \"divs %2,%0\;swap %0\"; ! #endif ! }") ! ! (define_insn "" ! [(set (match_operand:HI 0 "general_operand" "=d") ! (truncate:HI (mod:SI (match_operand:SI 1 "general_operand" "0") ! (match_operand:SI 2 "const_int_operand" "n"))))] ! "" ! "* ! { ! /* The swap insn produces cc's that don't correspond to the result. */ ! CC_STATUS_INIT; ! #ifdef MOTOROLA ! return \"divs%.w %2,%0\;swap %0\"; ! #else ! return \"divs %2,%0\;swap %0\"; ! #endif ! }") (define_insn "umodhi3" --- 2894,2931 ---- }") ! ;; See comment before divhisi3 why these are commented out. ! ;;(define_insn "modhisi3" ! ;; [(set (match_operand:HI 0 "general_operand" "=d") ! ;; (truncate:HI ! ;; (mod:SI ! ;; (match_operand:SI 1 "general_operand" "0") ! ;; (sign_extend:SI (match_operand:HI 2 "nonimmediate_operand" "dm")))))] ! ;; "" ! ;; "* ! ;;{ ! ;; /* The swap insn produces cc's that don't correspond to the result. */ ! ;; CC_STATUS_INIT; ! ;;#ifdef MOTOROLA ! ;; return \"divs%.w %2,%0\;swap %0\"; ! ;;#else ! ;; return \"divs %2,%0\;swap %0\"; ! ;;#endif ! ;;}") ! ! ;;(define_insn "" ! ;; [(set (match_operand:HI 0 "general_operand" "=d") ! ;; (truncate:HI (mod:SI (match_operand:SI 1 "general_operand" "0") ! ;; (match_operand:SI 2 "const_int_operand" "n"))))] ! ;; "" ! ;; "* ! ;;{ ! ;; /* The swap insn produces cc's that don't correspond to the result. */ ! ;; CC_STATUS_INIT; ! ;;#ifdef MOTOROLA ! ;; return \"divs%.w %2,%0\;swap %0\"; ! ;;#else ! ;; return \"divs %2,%0\;swap %0\"; ! ;;#endif ! ;;}") (define_insn "umodhi3" *************** *** 2939,2975 **** }") ! (define_insn "umodhisi3" ! [(set (match_operand:HI 0 "general_operand" "=d") ! (truncate:HI ! (umod:SI ! (match_operand:SI 1 "general_operand" "0") ! (zero_extend:SI (match_operand:HI 2 "nonimmediate_operand" "dm")))))] ! "" ! "* ! { ! /* The swap insn produces cc's that don't correspond to the result. */ ! CC_STATUS_INIT; ! #ifdef MOTOROLA ! return \"divu%.w %2,%0\;swap %0\"; ! #else ! return \"divu %2,%0\;swap %0\"; ! #endif ! }") ! ! (define_insn "" ! [(set (match_operand:HI 0 "general_operand" "=d") ! (truncate:HI (umod:SI (match_operand:SI 1 "general_operand" "0") ! (match_operand:SI 2 "const_int_operand" "n"))))] ! "" ! "* ! { ! /* The swap insn produces cc's that don't correspond to the result. */ ! CC_STATUS_INIT; ! #ifdef MOTOROLA ! return \"divu%.w %2,%0\;swap %0\"; ! #else ! return \"divu %2,%0\;swap %0\"; ! #endif ! }") (define_insn "divmodsi4" --- 2945,2982 ---- }") ! ;; See comment before divhisi3 why these are commented out. ! ;;(define_insn "umodhisi3" ! ;; [(set (match_operand:HI 0 "general_operand" "=d") ! ;; (truncate:HI ! ;; (umod:SI ! ;; (match_operand:SI 1 "general_operand" "0") ! ;; (zero_extend:SI (match_operand:HI 2 "nonimmediate_operand" "dm")))))] ! ;; "" ! ;; "* ! ;;{ ! ;; /* The swap insn produces cc's that don't correspond to the result. */ ! ;; CC_STATUS_INIT; ! ;;#ifdef MOTOROLA ! ;; return \"divu%.w %2,%0\;swap %0\"; ! ;;#else ! ;; return \"divu %2,%0\;swap %0\"; ! ;;#endif ! ;;}") ! ! ;;(define_insn "" ! ;; [(set (match_operand:HI 0 "general_operand" "=d") ! ;; (truncate:HI (umod:SI (match_operand:SI 1 "general_operand" "0") ! ;; (match_operand:SI 2 "const_int_operand" "n"))))] ! ;; "" ! ;; "* ! ;;{ ! ;; /* The swap insn produces cc's that don't correspond to the result. */ ! ;; CC_STATUS_INIT; ! ;;#ifdef MOTOROLA ! ;; return \"divu%.w %2,%0\;swap %0\"; ! ;;#else ! ;; return \"divu %2,%0\;swap %0\"; ! ;;#endif ! ;;}") (define_insn "divmodsi4" 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.2/config/m88k/dgux.h gcc-2.5.3/config/m88k/dgux.h *** gcc-2.5.2/config/m88k/dgux.h Sat Oct 2 04:20:57 1993 --- gcc-2.5.3/config/m88k/dgux.h Sat Nov 6 17:09:27 1993 *************** *** 29,32 **** --- 29,35 ---- #define PREFERRED_DEBUGGING_TYPE \ (GET_VERSION_0300_SYNTAX ? DWARF_DEBUG : SDB_DEBUG) + /* This controls a bug fix in cp-decl.c. + For version 2.6, someone should figure out the right condition. */ + #define RMS_QUICK_HACK_1 #ifndef NO_BUGS *************** *** 108,112 **** not being done. */ #undef LIB_SPEC ! #define LIB_SPEC "%{!shared:%{!symbolic:-lc}} crtend.o%s" #undef LINK_SPEC #define LINK_SPEC "%{z*} %{h*} %{V} %{v:%{!V:-V}} \ --- 111,115 ---- not being done. */ #undef LIB_SPEC ! #define LIB_SPEC "%{msvr4:%{!shared:-lstaticdgc}} %{!shared:%{!symbolic:-lc}} crtend.o%s" #undef LINK_SPEC #define LINK_SPEC "%{z*} %{h*} %{V} %{v:%{!V:-V}} \ *************** *** 122,128 **** %{!ansi:%{traditional:/lib/values-Xt.o} \ %{!traditional:/usr/lib/values-Xa.o}}}}}" - - #undef GPLUSPLUS_INCLUDE_DIR - #define GPLUSPLUS_INCLUDE_DIR "/usr/opt/g++/lib/g++-include" /* Fast DG/UX version of profiler that does not require lots of --- 125,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.2/config/m88k/m88k.c gcc-2.5.3/config/m88k/m88k.c *** gcc-2.5.2/config/m88k/m88k.c Wed Sep 8 11:14:03 1993 --- gcc-2.5.3/config/m88k/m88k.c Sat Nov 6 23:33:38 1993 *************** *** 1342,1345 **** --- 1342,1356 ---- } + /* Return true if OP is valid to use in the context of logic aritmethic + on condition codes. */ + + int + partial_ccmode_register_operand (op, mode) + rtx op; + enum machine_mode mode; + { + return register_operand (op, CCmode) || register_operand (op, CCEVENmode); + } + /* Return true if OP is a relational operator. */ *************** *** 1367,1370 **** --- 1378,1417 ---- } + int + even_relop (op, mode) + rtx op; + enum machine_mode mode; + { + switch (GET_CODE (op)) + { + case EQ: + case LT: + case GT: + case LTU: + case GTU: + return 1; + default: + return 0; + } + } + + int + odd_relop (op, mode) + rtx op; + enum machine_mode mode; + { + switch (GET_CODE (op)) + { + case NE: + case LE: + case GE: + case LEU: + case GEU: + return 1; + default: + return 0; + } + } + /* Return true if OP is a relational operator, and is not an unsigned relational operator. */ *************** *** 2804,2807 **** --- 2851,2858 ---- return; + case '!': /* Reverse the following condition. */ + sequencep++; + reversep = 1; + return; case 'R': /* reverse the condition of the next print_operand if operand is a label_ref. */ 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.2/config/m88k/m88k.h gcc-2.5.3/config/m88k/m88k.h *** gcc-2.5.2/config/m88k/m88k.h Fri Oct 22 17:02:49 1993 --- gcc-2.5.3/config/m88k/m88k.h Sat Nov 6 23:26:51 1993 *************** *** 1249,1252 **** --- 1249,1258 ---- /*** Addressing Modes ***/ + #define EXTRA_CC_MODES CCEVENmode + + #define EXTRA_CC_NAMES "CCEVEN" + + #define SELECT_CC_MODE(OP,X,Y) CCmode + /* #define HAVE_POST_INCREMENT */ /* #define HAVE_POST_DECREMENT */ *************** *** 1454,1457 **** --- 1460,1466 ---- {"reg_or_0_operand", {SUBREG, REG, CONST_INT}}, \ {"relop", {EQ, NE, LT, LE, GE, GT, LTU, LEU, GEU, GTU}}, \ + {"even_relop", {EQ, LT, GT, LTU, GTU}}, \ + {"odd_relop", { NE, LE, GE, LEU, GEU}}, \ + {"partial_ccmode_register_operand", { SUBREG, REG}}, \ {"relop_no_unsigned", {EQ, NE, LT, LE, GE, GT}}, \ {"equality_op", {EQ, NE}}, \ 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.2/config/m88k/m88k.md gcc-2.5.3/config/m88k/m88k.md *** gcc-2.5.2/config/m88k/m88k.md Sun Jun 6 03:56:22 1993 --- gcc-2.5.3/config/m88k/m88k.md Tue Nov 9 13:32:05 1993 *************** *** 1,4 **** ;;- Machine description for the Motorola 88000 for GNU C compiler ! ;; Copyright (C) 1988, 1989, 1990, 1991 Free Software Foundation, Inc. ;; Contributed by Michael Tiemann (tiemann@mcc.com) ;; Additional changes by Michael Meissner (meissner@osf.org) --- 1,4 ---- ;;- Machine description for the Motorola 88000 for GNU C compiler ! ;; Copyright (C) 1988, 1989, 1990, 1991, 1993 Free Software Foundation, Inc. ;; Contributed by Michael Tiemann (tiemann@mcc.com) ;; Additional changes by Michael Meissner (meissner@osf.org) *************** *** 398,401 **** --- 398,402 ---- ;; relationship of the compare bits. This allows a future branch prediction ;; pass the degree of freedom needed to change and/bb0-le into or/bb1-gt. + ;; THIS IS CURRENTLY FALSE! ;; ;; Opportunities arise when conditional expressions using && and || are made *************** *** 420,429 **** [(set (match_operand:SI 0 "register_operand" "=r") (ior:SI (neg:SI ! (match_operator 1 "relop" ! [(match_operand:CC 2 "register_operand" "%r") (const_int 0)])) (neg:SI (match_operator 3 "relop" ! [(match_operand:CC 4 "register_operand" "r") (const_int 0)])))) (clobber (match_operand:SI 5 "register_operand" "=r"))] --- 421,430 ---- [(set (match_operand:SI 0 "register_operand" "=r") (ior:SI (neg:SI ! (match_operator 1 "even_relop" ! [(match_operand 2 "partial_ccmode_register_operand" "%r") (const_int 0)])) (neg:SI (match_operator 3 "relop" ! [(match_operand 4 "partial_ccmode_register_operand" "r") (const_int 0)])))) (clobber (match_operand:SI 5 "register_operand" "=r"))] *************** *** 430,438 **** "" [(set (match_dup 5) ! (ior:CC (match_dup 4) (match_dup 2))) (set (match_dup 0) (neg:SI (match_op_dup 1 [(match_dup 5) (const_int 0)])))] ! "operands[5] = gen_rtx (SUBREG, CCmode, operands[5], 0); if (GET_CODE (operands[1]) == GET_CODE (operands[3])) ; /* The conditions match. */ --- 431,439 ---- "" [(set (match_dup 5) ! (ior:CCEVEN (match_dup 4) (match_dup 2))) (set (match_dup 0) (neg:SI (match_op_dup 1 [(match_dup 5) (const_int 0)])))] ! "operands[5] = gen_rtx(SUBREG, CCEVENmode, operands[5], 0); if (GET_CODE (operands[1]) == GET_CODE (operands[3])) ; /* The conditions match. */ *************** *** 457,465 **** (define_split [(set (match_operand:SI 0 "register_operand" "=r") ! (ior:SI (match_operator 1 "relop" ! [(match_operand:CC 2 "register_operand" "%r") (const_int 0)]) (match_operator 3 "relop" ! [(match_operand:CC 4 "register_operand" "r") (const_int 0)]))) (clobber (match_operand:SI 5 "register_operand" "=r"))] --- 458,529 ---- (define_split [(set (match_operand:SI 0 "register_operand" "=r") ! (ior:SI (neg:SI ! (match_operator 1 "odd_relop" ! [(match_operand 2 "partial_ccmode_register_operand" "%r") ! (const_int 0)])) ! (neg:SI ! (match_operator 3 "odd_relop" ! [(match_operand 4 "partial_ccmode_register_operand" "r") ! (const_int 0)])))) ! (clobber (match_operand:SI 5 "register_operand" "=r"))] ! "" ! [(set (match_dup 5) ! (and:CCEVEN (match_dup 4) ! (match_dup 2))) ! (set (match_dup 0) ! (neg:SI (match_op_dup 1 [(match_dup 5) (const_int 0)])))] ! "operands[5] = gen_rtx(SUBREG, CCEVENmode, operands[5], 0); ! if (GET_CODE (operands[1]) == GET_CODE (operands[3])) ! ; /* The conditions match. */ ! else ! { ! /* Make the condition pairs line up by rotating the compare word. */ ! int cv1 = condition_value (operands[1]); ! int cv2 = condition_value (operands[3]); ! ! operands[4] = gen_rtx (ROTATE, CCmode, operands[4], ! gen_rtx (CONST_INT, VOIDmode, ! (cv2 - cv1) & 0x1f)); ! }") ! ! (define_split ! [(set (match_operand:SI 0 "register_operand" "=r") ! (ior:SI (neg:SI ! (match_operator 1 "odd_relop" ! [(match_operand 2 "partial_ccmode_register_operand" "%r") ! (const_int 0)])) ! (neg:SI ! (match_operator 3 "even_relop" ! [(match_operand 4 "partial_ccmode_register_operand" "r") ! (const_int 0)])))) ! (clobber (match_operand:SI 5 "register_operand" "=r"))] ! "" ! [(set (match_dup 5) ! (ior:CCEVEN (not:CC (match_dup 2)) ! (match_dup 4))) ! (set (match_dup 0) ! (neg:SI (match_op_dup 3 [(match_dup 5) (const_int 0)])))] ! "operands[5] = gen_rtx(SUBREG, CCEVENmode, operands[5], 0); ! if (GET_CODE (operands[1]) ! == reverse_condition (GET_CODE (operands[3]))) ! ; ! else ! { ! /* Make the condition pairs line up by rotating the compare word. */ ! int cv1 = condition_value (operands[1]); ! int cv2 = condition_value (operands[3]); ! ! operands[2] = gen_rtx (ROTATE, CCmode, operands[2], ! gen_rtx (CONST_INT, VOIDmode, ! ((cv1 & ~1) - (cv2 & ~1)) & 0x1f)); ! }") ! ! (define_split ! [(set (match_operand:SI 0 "register_operand" "=r") ! (ior:SI (match_operator 1 "even_relop" ! [(match_operand 2 "partial_ccmode_register_operand" "%r") (const_int 0)]) (match_operator 3 "relop" ! [(match_operand 4 "partial_ccmode_register_operand" "r") (const_int 0)]))) (clobber (match_operand:SI 5 "register_operand" "=r"))] *************** *** 467,475 **** || GET_CODE (operands[1]) == reverse_condition (GET_CODE (operands[3]))" [(set (match_dup 5) ! (ior:CC (match_dup 4) (match_dup 2))) (set (match_dup 0) (match_op_dup 1 [(match_dup 5) (const_int 0)]))] ! "operands[5] = gen_rtx (SUBREG, CCmode, operands[5], 0); /* Reverse the condition by complimenting the compare word. */ if (GET_CODE (operands[1]) != GET_CODE (operands[3])) --- 531,539 ---- || GET_CODE (operands[1]) == reverse_condition (GET_CODE (operands[3]))" [(set (match_dup 5) ! (ior:CCEVEN (match_dup 4) (match_dup 2))) (set (match_dup 0) (match_op_dup 1 [(match_dup 5) (const_int 0)]))] ! "operands[5] = gen_rtx(SUBREG, CCEVENmode, operands[5], 0); /* Reverse the condition by complimenting the compare word. */ if (GET_CODE (operands[1]) != GET_CODE (operands[3])) *************** *** 478,488 **** (define_split [(set (match_operand:SI 0 "register_operand" "=r") (and:SI (neg:SI ! (match_operator 1 "relop" ! [(match_operand:CC 2 "register_operand" "%r") (const_int 0)])) (neg:SI (match_operator 3 "relop" ! [(match_operand:CC 4 "register_operand" "r") (const_int 0)])))) (clobber (match_operand:SI 5 "register_operand" "=r"))] --- 542,586 ---- (define_split [(set (match_operand:SI 0 "register_operand" "=r") + (ior:SI (match_operator 1 "odd_relop" + [(match_operand 2 "partial_ccmode_register_operand" "%r") + (const_int 0)]) + (match_operator 3 "odd_relop" + [(match_operand 4 "partial_ccmode_register_operand" "r") + (const_int 0)]))) + (clobber (match_operand:SI 5 "register_operand" "=r"))] + "GET_CODE (operands[1]) == GET_CODE (operands[3])" + [(set (match_dup 5) + (and:CCEVEN (match_dup 4) + (match_dup 2))) + (set (match_dup 0) + (match_op_dup 1 [(match_dup 5) (const_int 0)]))] + "operands[5] = gen_rtx(SUBREG, CCEVENmode, operands[5], 0);") + + (define_split + [(set (match_operand:SI 0 "register_operand" "=r") + (ior:SI (match_operator 1 "odd_relop" + [(match_operand 2 "partial_ccmode_register_operand" "%r") + (const_int 0)]) + (match_operator 3 "even_relop" + [(match_operand 4 "partial_ccmode_register_operand" "r") + (const_int 0)]))) + (clobber (match_operand:SI 5 "register_operand" "=r"))] + "GET_CODE (operands[1]) == reverse_condition (GET_CODE (operands[3]))" + [(set (match_dup 5) + (ior:CCEVEN (not:CC (match_dup 4)) + (match_dup 2))) + (set (match_dup 0) + (match_op_dup 1 [(match_dup 5) (const_int 0)]))] + "operands[5] = gen_rtx(SUBREG, CCEVENmode, operands[5], 0);") + + (define_split + [(set (match_operand:SI 0 "register_operand" "=r") (and:SI (neg:SI ! (match_operator 1 "even_relop" ! [(match_operand 2 "partial_ccmode_register_operand" "%r") (const_int 0)])) (neg:SI (match_operator 3 "relop" ! [(match_operand 4 "partial_ccmode_register_operand" "r") (const_int 0)])))) (clobber (match_operand:SI 5 "register_operand" "=r"))] *************** *** 489,497 **** "" [(set (match_dup 5) ! (and:CC (match_dup 4) (match_dup 2))) (set (match_dup 0) (neg:SI (match_op_dup 1 [(match_dup 5) (const_int 0)])))] ! "operands[5] = gen_rtx (SUBREG, CCmode, operands[5], 0); if (GET_CODE (operands[1]) == GET_CODE (operands[3])) ; /* The conditions match. */ --- 587,595 ---- "" [(set (match_dup 5) ! (and:CCEVEN (match_dup 4) (match_dup 2))) (set (match_dup 0) (neg:SI (match_op_dup 1 [(match_dup 5) (const_int 0)])))] ! "operands[5] = gen_rtx(SUBREG, CCEVENmode, operands[5], 0); if (GET_CODE (operands[1]) == GET_CODE (operands[3])) ; /* The conditions match. */ *************** *** 505,509 **** int cv1 = condition_value (operands[1]); int cv2 = condition_value (operands[3]); - operands[4] = gen_rtx (ROTATE, CCmode, operands[4], gen_rtx (CONST_INT, VOIDmode, --- 603,606 ---- *************** *** 516,524 **** (define_split [(set (match_operand:SI 0 "register_operand" "=r") ! (and:SI (match_operator 1 "relop" ! [(match_operand:CC 2 "register_operand" "%r") (const_int 0)]) (match_operator 3 "relop" ! [(match_operand:CC 4 "register_operand" "r") (const_int 0)]))) (clobber (match_operand:SI 5 "register_operand" "=r"))] --- 613,682 ---- (define_split [(set (match_operand:SI 0 "register_operand" "=r") ! (and:SI (neg:SI ! (match_operator 1 "odd_relop" ! [(match_operand 2 "partial_ccmode_register_operand" "%r") ! (const_int 0)])) ! (neg:SI ! (match_operator 3 "odd_relop" ! [(match_operand 4 "partial_ccmode_register_operand" "r") ! (const_int 0)])))) ! (clobber (match_operand:SI 5 "register_operand" "=r"))] ! "" ! [(set (match_dup 5) ! (ior:CCEVEN (match_dup 4) ! (match_dup 2))) ! (set (match_dup 0) ! (neg:SI (match_op_dup 1 [(match_dup 5) (const_int 0)])))] ! "operands[5] = gen_rtx(SUBREG, CCEVENmode, operands[5], 0); ! if (GET_CODE (operands[1]) == GET_CODE (operands[3])) ! ; /* The conditions match. */ ! else ! { ! /* Make the condition pairs line up by rotating the compare word. */ ! int cv1 = condition_value (operands[1]); ! int cv2 = condition_value (operands[3]); ! operands[4] = gen_rtx (ROTATE, CCmode, operands[4], ! gen_rtx (CONST_INT, VOIDmode, ! (cv2 - cv1) & 0x1f)); ! }") ! ! (define_split ! [(set (match_operand:SI 0 "register_operand" "=r") ! (and:SI (neg:SI ! (match_operator 1 "odd_relop" ! [(match_operand 2 "partial_ccmode_register_operand" "%r") ! (const_int 0)])) ! (neg:SI ! (match_operator 3 "even_relop" ! [(match_operand 4 "partial_ccmode_register_operand" "r") ! (const_int 0)])))) ! (clobber (match_operand:SI 5 "register_operand" "=r"))] ! "" ! [(set (match_dup 5) ! (and:CCEVEN (not:CC (match_dup 2)) ! (match_dup 4))) ! (set (match_dup 0) ! (neg:SI (match_op_dup 3 [(match_dup 5) (const_int 0)])))] ! "operands[5] = gen_rtx(SUBREG, CCEVENmode, operands[5], 0); ! if (GET_CODE (operands[1]) ! == reverse_condition (GET_CODE (operands[3]))) ! ; ! else ! { ! /* Make the condition pairs line up by rotating the compare word. */ ! int cv1 = condition_value (operands[1]); ! int cv2 = condition_value (operands[3]); ! operands[2] = gen_rtx (ROTATE, CCmode, operands[2], ! gen_rtx (CONST_INT, VOIDmode, ! ((cv1 & ~1) - (cv2 & ~1)) & 0x1f)); ! }") ! ! (define_split ! [(set (match_operand:SI 0 "register_operand" "=r") ! (and:SI (match_operator 1 "even_relop" ! [(match_operand 2 "partial_ccmode_register_operand" "%r") (const_int 0)]) (match_operator 3 "relop" ! [(match_operand 4 "partial_ccmode_register_operand" "r") (const_int 0)]))) (clobber (match_operand:SI 5 "register_operand" "=r"))] *************** *** 526,537 **** || GET_CODE (operands[1]) == reverse_condition (GET_CODE (operands[3]))" [(set (match_dup 5) ! (and:CC (match_dup 4) (match_dup 2))) (set (match_dup 0) (match_op_dup 1 [(match_dup 5) (const_int 0)]))] ! "operands[5] = gen_rtx (SUBREG, CCmode, operands[5], 0); /* Reverse the condition by complimenting the compare word. */ if (GET_CODE (operands[1]) != GET_CODE (operands[3])) operands[4] = gen_rtx (NOT, CCmode, operands[4]);") ;; Logical operations on compare words. --- 684,730 ---- || GET_CODE (operands[1]) == reverse_condition (GET_CODE (operands[3]))" [(set (match_dup 5) ! (and:CCEVEN (match_dup 4) (match_dup 2))) (set (match_dup 0) (match_op_dup 1 [(match_dup 5) (const_int 0)]))] ! "operands[5] = gen_rtx(SUBREG, CCEVENmode, operands[5], 0); /* Reverse the condition by complimenting the compare word. */ if (GET_CODE (operands[1]) != GET_CODE (operands[3])) operands[4] = gen_rtx (NOT, CCmode, operands[4]);") + + (define_split + [(set (match_operand:SI 0 "register_operand" "=r") + (and:SI (match_operator 1 "odd_relop" + [(match_operand 2 "partial_ccmode_register_operand" "%r") + (const_int 0)]) + (match_operator 3 "odd_relop" + [(match_operand 4 "partial_ccmode_register_operand" "r") + (const_int 0)]))) + (clobber (match_operand:SI 5 "register_operand" "=r"))] + "GET_CODE (operands[1]) == GET_CODE (operands[3])" + [(set (match_dup 5) + (ior:CCEVEN (match_dup 4) + (match_dup 2))) + (set (match_dup 0) + (match_op_dup 1 [(match_dup 5) (const_int 0)]))] + "operands[5] = gen_rtx(SUBREG, CCEVENmode, operands[5], 0);") + + (define_split + [(set (match_operand:SI 0 "register_operand" "=r") + (and:SI (match_operator 1 "odd_relop" + [(match_operand 2 "partial_ccmode_register_operand" "%r") + (const_int 0)]) + (match_operator 3 "even_relop" + [(match_operand 4 "partial_ccmode_register_operand" "r") + (const_int 0)]))) + (clobber (match_operand:SI 5 "register_operand" "=r"))] + "GET_CODE (operands[1]) == reverse_condition (GET_CODE (operands[3]))" + [(set (match_dup 5) + (and:CCEVEN (not:CC (match_dup 2)) + (match_dup 4))) + (set (match_dup 0) + (match_op_dup 3 [(match_dup 5) (const_int 0)]))] + "operands[5] = gen_rtx(SUBREG, CCEVENmode, operands[5], 0);") + ;; Logical operations on compare words. *************** *** 538,552 **** (define_insn "" ! [(set (match_operand:CC 0 "register_operand" "=r") ! (and:CC (not:CC (match_operand:CC 1 "register_operand" "r")) ! (match_operand:CC 2 "register_operand" "r")))] "" "and.c %0,%2,%1") - (define_insn "" ! [(set (match_operand:CC 0 "register_operand" "=r") ! (and:CC (match_operand:CC 1 "register_operand" "%r") ! (match_operand:CC 2 "register_operand" "r")))] "" "and %0,%1,%2") --- 731,744 ---- (define_insn "" ! [(set (match_operand:CCEVEN 0 "register_operand" "=r") ! (and:CCEVEN (not:CC (match_operand 1 "partial_ccmode_register_operand" "r")) ! (match_operand 2 "partial_ccmode_register_operand" "r")))] "" "and.c %0,%2,%1") (define_insn "" ! [(set (match_operand:CCEVEN 0 "register_operand" "=r") ! (and:CCEVEN (match_operand 1 "partial_ccmode_register_operand" "%r") ! (match_operand 2 "partial_ccmode_register_operand" "r")))] "" "and %0,%1,%2") *************** *** 553,559 **** (define_insn "" ! [(set (match_operand:CC 0 "register_operand" "=r") ! (ior:CC (not:CC (match_operand:CC 1 "register_operand" "r")) ! (match_operand:CC 2 "register_operand" "r")))] "" "or.c %0,%2,%1") --- 745,751 ---- (define_insn "" ! [(set (match_operand:CCEVEN 0 "register_operand" "=r") ! (ior:CCEVEN (not:CC (match_operand 1 "partial_ccmode_register_operand" "r")) ! (match_operand 2 "partial_ccmode_register_operand" "r")))] "" "or.c %0,%2,%1") *************** *** 560,566 **** (define_insn "" ! [(set (match_operand:CC 0 "register_operand" "=r") ! (ior:CC (match_operand:CC 1 "register_operand" "%r") ! (match_operand:CC 2 "register_operand" "r")))] "" "or %0,%1,%2") --- 752,758 ---- (define_insn "" ! [(set (match_operand:CCEVEN 0 "register_operand" "=r") ! (ior:CCEVEN (match_operand 1 "partial_ccmode_register_operand" "%r") ! (match_operand 2 "partial_ccmode_register_operand" "r")))] "" "or %0,%1,%2") *************** *** 574,585 **** [(set_attr "type" "bit")]) ;; rotate/and[.c] and rotate/ior[.c] (define_split ! [(set (match_operand:CC 0 "register_operand" "=r") ! (ior:CC (rotate:CC (match_operand:CC 1 "register_operand" "r") (match_operand:CC 2 "int5_operand" "")) ! (match_operand:CC 3 "register_operand" "r"))) ! (clobber (match_operand:CC 4 "register_operand" "=r"))] "" [(set (match_dup 4) --- 766,785 ---- [(set_attr "type" "bit")]) + (define_insn "" + [(set (match_operand:CCEVEN 0 "register_operand" "=r") + (rotate:CC (match_operand 1 "partial_ccmode_register_operand" "r") + (match_operand:CC 2 "int5_operand" "")))] + "" + "rot %0,%1,%2" + [(set_attr "type" "bit")]) + ;; rotate/and[.c] and rotate/ior[.c] (define_split ! [(set (match_operand:CCEVEN 0 "register_operand" "=r") ! (ior:CCEVEN (rotate:CC (match_operand 1 "partial_ccmode_register_operand" "r") (match_operand:CC 2 "int5_operand" "")) ! (match_operand 3 "partial_ccmode_register_operand" "r"))) ! (clobber (match_operand:CCEVEN 4 "register_operand" "=r"))] "" [(set (match_dup 4) *************** *** 586,598 **** (rotate:CC (match_dup 1) (match_dup 2))) (set (match_dup 0) ! (ior:CC (match_dup 4) (match_dup 3)))] "") (define_insn "" ! [(set (match_operand:CC 0 "register_operand" "=r") ! (ior:CC (rotate:CC (match_operand:CC 1 "register_operand" "r") (match_operand:CC 2 "int5_operand" "")) ! (match_operand:CC 3 "register_operand" "r"))) ! (clobber (match_scratch:CC 4 "=r"))] "" "#") --- 786,798 ---- (rotate:CC (match_dup 1) (match_dup 2))) (set (match_dup 0) ! (ior:CCEVEN (match_dup 4) (match_dup 3)))] "") (define_insn "" ! [(set (match_operand:CCEVEN 0 "register_operand" "=r") ! (ior:CC (rotate:CC (match_operand 1 "partial_ccmode_register_operand" "r") (match_operand:CC 2 "int5_operand" "")) ! (match_operand 3 "partial_ccmode_register_operand" "r"))) ! (clobber (match_scratch:CCEVEN 4 "=r"))] "" "#") *************** *** 599,607 **** (define_split ! [(set (match_operand:CC 0 "register_operand" "=r") ! (ior:CC (not:CC (rotate:CC (match_operand:CC 1 "register_operand" "r") (match_operand:CC 2 "int5_operand" ""))) ! (match_operand:CC 3 "register_operand" "r"))) ! (clobber (match_operand:CC 4 "register_operand" "=r"))] "" [(set (match_dup 4) --- 799,807 ---- (define_split ! [(set (match_operand:CCEVEN 0 "register_operand" "=r") ! (ior:CCEVEN (not:CC (rotate:CC (match_operand 1 "partial_ccmode_register_operand" "r") (match_operand:CC 2 "int5_operand" ""))) ! (match_operand 3 "partial_ccmode_register_operand" "r"))) ! (clobber (match_operand:CCEVEN 4 "register_operand" "=r"))] "" [(set (match_dup 4) *************** *** 608,620 **** (rotate:CC (match_dup 1) (match_dup 2))) (set (match_dup 0) ! (ior:CC (not:CC (match_dup 4)) (match_dup 3)))] "") (define_insn "" ! [(set (match_operand:CC 0 "register_operand" "=r") ! (ior:CC (not:CC (rotate:CC (match_operand:CC 1 "register_operand" "r") (match_operand:CC 2 "int5_operand" ""))) ! (match_operand:CC 3 "register_operand" "r"))) ! (clobber (match_scratch:CC 4 "=r"))] "" "#") --- 808,820 ---- (rotate:CC (match_dup 1) (match_dup 2))) (set (match_dup 0) ! (ior:CCEVEN (not:CC (match_dup 4)) (match_dup 3)))] "") (define_insn "" ! [(set (match_operand:CCEVEN 0 "register_operand" "=r") ! (ior:CCEVEN (not:CC (rotate:CC (match_operand 1 "partial_ccmode_register_operand" "r") (match_operand:CC 2 "int5_operand" ""))) ! (match_operand 3 "partial_ccmode_register_operand" "r"))) ! (clobber (match_scratch:CCEVEN 4 "=r"))] "" "#") *************** *** 621,629 **** (define_split ! [(set (match_operand:CC 0 "register_operand" "=r") ! (and:CC (rotate:CC (match_operand:CC 1 "register_operand" "r") (match_operand:CC 2 "int5_operand" "")) ! (match_operand:CC 3 "register_operand" "r"))) ! (clobber (match_operand:CC 4 "register_operand" "=r"))] "" [(set (match_dup 4) --- 821,829 ---- (define_split ! [(set (match_operand:CCEVEN 0 "register_operand" "=r") ! (and:CCEVEN (rotate:CC (match_operand 1 "partial_ccmode_register_operand" "r") (match_operand:CC 2 "int5_operand" "")) ! (match_operand 3 "partial_ccmode_register_operand" "r"))) ! (clobber (match_operand:CCEVEN 4 "register_operand" "=r"))] "" [(set (match_dup 4) *************** *** 630,642 **** (rotate:CC (match_dup 1) (match_dup 2))) (set (match_dup 0) ! (and:CC (match_dup 4) (match_dup 3)))] "") (define_insn "" ! [(set (match_operand:CC 0 "register_operand" "=r") ! (and:CC (rotate:CC (match_operand:CC 1 "register_operand" "r") (match_operand:CC 2 "int5_operand" "")) ! (match_operand:CC 3 "register_operand" "r"))) ! (clobber (match_scratch:CC 4 "=r"))] "" "#") --- 830,842 ---- (rotate:CC (match_dup 1) (match_dup 2))) (set (match_dup 0) ! (and:CCEVEN (match_dup 4) (match_dup 3)))] "") (define_insn "" ! [(set (match_operand:CCEVEN 0 "register_operand" "=r") ! (and:CCEVEN (rotate:CC (match_operand 1 "partial_ccmode_register_operand" "r") (match_operand:CC 2 "int5_operand" "")) ! (match_operand 3 "partial_ccmode_register_operand" "r"))) ! (clobber (match_scratch:CCEVEN 4 "=r"))] "" "#") *************** *** 643,651 **** (define_split ! [(set (match_operand:CC 0 "register_operand" "=r") ! (and:CC (not:CC (rotate:CC (match_operand:CC 1 "register_operand" "r") (match_operand:CC 2 "int5_operand" ""))) ! (match_operand:CC 3 "register_operand" "r"))) ! (clobber (match_operand:CC 4 "register_operand" "=r"))] "" [(set (match_dup 4) --- 843,851 ---- (define_split ! [(set (match_operand:CCEVEN 0 "register_operand" "=r") ! (and:CCEVEN (not:CC (rotate:CC (match_operand 1 "partial_ccmode_register_operand" "r") (match_operand:CC 2 "int5_operand" ""))) ! (match_operand 3 "partial_ccmode_register_operand" "r"))) ! (clobber (match_operand:CCEVEN 4 "register_operand" "=r"))] "" [(set (match_dup 4) *************** *** 652,666 **** (rotate:CC (match_dup 1) (match_dup 2))) (set (match_dup 0) ! (and:CC (not:CC (match_dup 4)) (match_dup 3)))] "") (define_insn "" ! [(set (match_operand:CC 0 "register_operand" "=r") ! (and:CC (not:CC (rotate:CC (match_operand:CC 1 "register_operand" "r") (match_operand:CC 2 "int5_operand" ""))) ! (match_operand:CC 3 "register_operand" "r"))) ! (clobber (match_scratch:CC 4 "=r"))] "" "#") ;; Recognize bcnd instructions for integer values. This is distinguished --- 852,867 ---- (rotate:CC (match_dup 1) (match_dup 2))) (set (match_dup 0) ! (and:CCEVEN (not:CC (match_dup 4)) (match_dup 3)))] "") (define_insn "" ! [(set (match_operand:CCEVEN 0 "register_operand" "=r") ! (and:CCEVEN (not:CC (rotate:CC (match_operand 1 "partial_ccmode_register_operand" "r") (match_operand:CC 2 "int5_operand" ""))) ! (match_operand 3 "partial_ccmode_register_operand" "r"))) ! (clobber (match_scratch:CCEVEN 4 "=r"))] "" "#") + ;; Recognize bcnd instructions for integer values. This is distinguished *************** *** 1180,1183 **** --- 1381,1422 ---- (define_insn "" [(set (match_operand:SI 0 "register_operand" "=r") + (match_operator:SI 1 "even_relop" + [(match_operand:CCEVEN 2 "register_operand" "r") + (const_int 0)]))] + "" + "ext %0,%2,1<%C1>" + [(set_attr "type" "bit")]) + + (define_insn "" + [(set (match_operand:SI 0 "register_operand" "=r") + (not:SI (match_operator:SI 1 "odd_relop" + [(match_operand:CCEVEN 2 "register_operand" "r") + (const_int 0)])))] + "" + "ext %0,%2,1<%!%C1>" + [(set_attr "type" "bit")]) + + (define_split + [(set (match_operand:SI 0 "register_operand" "=r") + (match_operator:SI 1 "odd_relop" + [(match_operand:CCEVEN 2 "register_operand" "r") + (const_int 0)])) + (clobber (match_operand:SI 3 "register_operand" "=r"))] + "" + [(set (match_dup 3) (not:SI (match_op_dup 1 [(match_dup 2) (const_int 0)]))) + (set (match_dup 0) (not:SI (match_dup 3)))] + "") + + (define_insn "" + [(set (match_operand:SI 0 "register_operand" "=r") + (match_operator:SI 1 "odd_relop" + [(match_operand:CCEVEN 2 "register_operand" "r") + (const_int 0)])) + (clobber (match_scratch:SI 3 "=r"))] + "" + "#") + + (define_insn "" + [(set (match_operand:SI 0 "register_operand" "=r") (neg:SI (match_operator:SI 1 "relop" *************** *** 1187,1190 **** --- 1426,1474 ---- "extu %0,%2,1<%C1>" [(set_attr "type" "bit")]) + + (define_insn "" + [(set (match_operand:SI 0 "register_operand" "=r") + (neg:SI + (match_operator:SI 1 "even_relop" + [(match_operand:CCEVEN 2 "register_operand" "r") + (const_int 0)])))] + "" + "extu %0,%2,1<%C1>" + [(set_attr "type" "bit")]) + + (define_insn "" + [(set (match_operand:SI 0 "register_operand" "=r") + (neg:SI + (not:SI (match_operator:SI 1 "odd_relop" + [(match_operand:CCEVEN 2 "register_operand" "r") + (const_int 0)]))))] + "" + "extu %0,%2,1<%!%C1>" + [(set_attr "type" "bit")]) + + (define_split + [(set (match_operand:SI 0 "register_operand" "=r") + (neg:SI (match_operator:SI 1 "odd_relop" + [(match_operand:CCEVEN 2 "register_operand" "r") + (const_int 0)]))) + (clobber (match_operand:SI 3 "register_operand" "=r"))] + "" + [(set (match_dup 3) (neg:SI (not:SI (match_op_dup 1 [(match_dup 2) + (const_int 0)])))) + (set (match_dup 0) (xor:SI (match_dup 3) (const_int 1)))] + "") + + (define_insn + "" + [(set (match_operand:SI 0 "register_operand" "=r") + (neg:SI (match_operator:SI 1 "odd_relop" + [(match_operand:CCEVEN 2 "register_operand" "r") + (const_int 0)]))) + (clobber (match_scratch:SI 3 "=r"))] + "" + "#") + + + ;; Conditional branch insns. The compare insns set a register *************** *** 1361,1366 **** --- 1645,1680 ---- [(set_attr "type" "branch")]) + ;; + ;; Here branch prediction is sacrificed. To get it back, you need + ;; - CCODD (CC mode where the ODD bits are valid) + ;; - several define_split that can apply De Morgan's Law. + ;; - transformations between CCEVEN and CCODD modes. + ;; + + (define_insn "" + [(set (pc) (if_then_else + (match_operator 0 "even_relop" + [(match_operand:CCEVEN 1 "register_operand" "r") + (const_int 0)]) + (match_operand 2 "pc_or_label_ref" "") + (match_operand 3 "pc_or_label_ref" "")))] + "" + "bb%L2%. %C0,%1,%P2%P3" + [(set_attr "type" "branch")]) + + (define_insn "" + [(set (pc) (if_then_else + (match_operator 0 "odd_relop" + [(match_operand:CCEVEN 1 "register_operand" "r") + (const_int 0)]) + (match_operand 2 "pc_or_label_ref" "") + (match_operand 3 "pc_or_label_ref" "")))] + "" + "bb%L3%. %!%C0,%1,%P2%P3" + [(set_attr "type" "branch")]) + ;; Branch conditional on scc values. These arise from manipulations on ;; compare words above. + ;; Are these really used ? (define_insn "" *************** *** 1380,1383 **** --- 1694,1723 ---- [(set (pc) (if_then_else + (ne (match_operator 0 "even_relop" + [(match_operand:CCEVEN 1 "register_operand" "r") + (const_int 0)]) + (const_int 0)) + (match_operand 2 "pc_or_label_ref" "") + (match_operand 3 "pc_or_label_ref" "")))] + "" + "bb%L2 %C0,%1,%P2%P3" + [(set_attr "type" "branch")]) + + (define_insn "" + [(set (pc) + (if_then_else + (ne (match_operator 0 "odd_relop" + [(match_operand:CCEVEN 1 "register_operand" "r") + (const_int 0)]) + (const_int 0)) + (match_operand 2 "pc_or_label_ref" "") + (match_operand 3 "pc_or_label_ref" "")))] + "" + "bb%L3 %!%C0,%1,%P2%P3" + [(set_attr "type" "branch")]) + + (define_insn "" + [(set (pc) + (if_then_else (eq (match_operator 0 "relop" [(match_operand:CC 1 "register_operand" "r") *************** *** 1388,1391 **** --- 1728,1757 ---- "" "bb%L3 %C0,%1,%P2%P3" + [(set_attr "type" "branch")]) + + (define_insn "" + [(set (pc) + (if_then_else + (eq (match_operator 0 "even_relop" + [(match_operand:CCEVEN 1 "register_operand" "r") + (const_int 0)]) + (const_int 0)) + (match_operand 2 "pc_or_label_ref" "") + (match_operand 3 "pc_or_label_ref" "")))] + "" + "bb%L3 %C0,%1,%P2%P3" + [(set_attr "type" "branch")]) + + (define_insn "" + [(set (pc) + (if_then_else + (eq (match_operator 0 "odd_relop" + [(match_operand:CCEVEN 1 "register_operand" "r") + (const_int 0)]) + (const_int 0)) + (match_operand 2 "pc_or_label_ref" "") + (match_operand 3 "pc_or_label_ref" "")))] + "" + "bb%L2 %!%C0,%1,%P2%P3" [(set_attr "type" "branch")]) 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.2/config/mips/mips.c gcc-2.5.3/config/mips/mips.c *** gcc-2.5.2/config/mips/mips.c Sat Oct 23 20:19:13 1993 --- gcc-2.5.3/config/mips/mips.c Tue Nov 9 23:00:13 1993 *************** *** 192,196 **** /* Generating calls to position independent functions? */ ! enum attr_abicalls mips_abicalls; /* Array to RTX class classification. At present, we care about --- 192,196 ---- /* Generating calls to position independent functions? */ ! enum mips_abicalls_type mips_abicalls; /* Array to RTX class classification. At present, we care about *************** *** 2905,2911 **** if (TARGET_ABICALLS) ! mips_abicalls = ABICALLS_YES; else ! mips_abicalls = ABICALLS_NO; /* -mrnames says to use the MIPS software convention for register --- 2905,2911 ---- if (TARGET_ABICALLS) ! mips_abicalls = MIPS_ABICALLS_YES; else ! mips_abicalls = MIPS_ABICALLS_NO; /* -mrnames says to use the MIPS software convention for register *************** *** 4503,4506 **** --- 4503,4507 ---- #define RA_MASK ((long) 0x80000000) /* 1 << 31 */ + #define PIC_OFFSET_TABLE_MASK (1 << (PIC_OFFSET_TABLE_REGNUM - GP_REG_FIRST)) void *************** *** 4611,4615 **** save_restore_insns (FALSE, tmp_rtx, tsize, file); ! load_only_r31 = (current_frame_info.mask == RA_MASK && current_frame_info.fmask == 0); --- 4612,4618 ---- save_restore_insns (FALSE, tmp_rtx, tsize, file); ! load_only_r31 = (((current_frame_info.mask ! & ~ (TARGET_ABICALLS ? PIC_OFFSET_TABLE_MASK : 0)) ! == RA_MASK) && current_frame_info.fmask == 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.2/config/mips/mips.h gcc-2.5.3/config/mips/mips.h *** gcc-2.5.2/config/mips/mips.h Sat Oct 23 20:19:25 1993 --- gcc-2.5.3/config/mips/mips.h Fri Nov 5 22:32:38 1993 *************** *** 74,77 **** --- 74,87 ---- #define mips_cpu_attr ((enum attr_cpu)mips_cpu) + /* Whether to emit abicalls code sequences or not. */ + + enum mips_abicalls_type { + MIPS_ABICALLS_NO, + MIPS_ABICALLS_YES + }; + + /* Recast the abicalls class to be the abicalls attribute. */ + #define mips_abicalls_attr ((enum attr_abicalls)mips_abicalls) + /* Which type of block move to do (whether or not the last store is split out so it can fill a branch delay slot). */ *************** *** 106,113 **** extern enum cmp_type branch_type; /* what type of branch to use */ extern enum processor_type mips_cpu; /* which cpu are we scheduling for */ extern int mips_isa; /* architectural level */ extern char *mips_cpu_string; /* for -mcpu= */ 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 */ --- 116,123 ---- extern enum cmp_type branch_type; /* what type of branch to use */ extern enum processor_type mips_cpu; /* which cpu are we scheduling for */ + extern enum mips_abicalls_type mips_abicalls;/* for svr4 abi pic calls */ extern int mips_isa; /* architectural level */ extern char *mips_cpu_string; /* for -mcpu= */ extern char *mips_isa_string; /* for -mips{1,2,3} */ extern int dslots_load_total; /* total # load related delay slots */ extern int dslots_load_filled; /* # filled load delay 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.2/config/mips/mips.md gcc-2.5.3/config/mips/mips.md *** gcc-2.5.2/config/mips/mips.md Sat Oct 23 20:19:36 1993 --- gcc-2.5.3/config/mips/mips.md Tue Nov 9 23:41:15 1993 *************** *** 99,103 **** ;; whether or not generating calls to position independent functions (define_attr "abicalls" "no,yes" ! (const (symbol_ref "mips_abicalls"))) --- 99,103 ---- ;; whether or not generating calls to position independent functions (define_attr "abicalls" "no,yes" ! (const (symbol_ref "mips_abicalls_attr"))) *************** *** 338,342 **** { if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) == -32768) ! operands[2] = force_reg (SImode, operands[2]); operands[3] = gen_reg_rtx (SImode); --- 338,342 ---- { if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) == -32768) ! operands[2] = force_reg (DImode, operands[2]); operands[3] = gen_reg_rtx (SImode); 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.2/config/ns32k/encore.h gcc-2.5.3/config/ns32k/encore.h *** gcc-2.5.2/config/ns32k/encore.h Wed Oct 13 16:00:32 1993 --- gcc-2.5.3/config/ns32k/encore.h Wed Nov 10 22:30:15 1993 *************** *** 128,131 **** --- 128,132 ---- #define ASM_OUTPUT_ASCII(file, p, size) \ { \ + int i; \ for (i = 0; i < (size); 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.2/config/pa/pa-ghpux.h gcc-2.5.3/config/pa/pa-ghpux.h *** gcc-2.5.2/config/pa/pa-ghpux.h Sat Oct 2 04:22:32 1993 --- gcc-2.5.3/config/pa/pa-ghpux.h Fri Nov 5 16:50:48 1993 *************** *** 43,44 **** --- 43,48 ---- #undef LINK_SPEC #define LINK_SPEC "-u main %{static: -a archive}%{g: -a archive}" + + /* hpux8 and later have C++ compatable include files, so do not + pretend they are `extern "C"'. */ + #define NO_IMPLICIT_EXTERN_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.2/config/pa/pa-hpux.h gcc-2.5.3/config/pa/pa-hpux.h *** gcc-2.5.2/config/pa/pa-hpux.h Sat Oct 2 04:22:38 1993 --- gcc-2.5.3/config/pa/pa-hpux.h Fri Nov 5 16:50:52 1993 *************** *** 48,49 **** --- 48,53 ---- #undef LINK_SPEC #define LINK_SPEC "-u main %{static: -a archive}%{g: -a archive}" + + /* hpux8 and later have C++ compatable include files, so do not + pretend they are `extern "C"'. */ + #define NO_IMPLICIT_EXTERN_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.2/config/pa/pa.h gcc-2.5.3/config/pa/pa.h *** gcc-2.5.2/config/pa/pa.h Wed Oct 20 18:08:40 1993 --- gcc-2.5.3/config/pa/pa.h Wed Nov 3 16:09:25 1993 *************** *** 1476,1480 **** and another. ! Make moves from SAR so expensive they should never happen. Copies involving a FP register and a non-FP register are relatively --- 1476,1481 ---- and another. ! Make moves from SAR so expensive they should never happen. We used to ! have 0xffff here, but that generates overflow in rare cases. Copies involving a FP register and a non-FP register are relatively *************** *** 1483,1487 **** Other copies are reasonably cheap. */ #define REGISTER_MOVE_COST(CLASS1, CLASS2) \ ! (CLASS1 == SHIFT_REGS ? 0xffff \ : FP_REG_CLASS_P (CLASS1) && ! FP_REG_CLASS_P (CLASS2) ? 16 \ : FP_REG_CLASS_P (CLASS2) && ! FP_REG_CLASS_P (CLASS1) ? 16 \ --- 1484,1488 ---- Other copies are reasonably cheap. */ #define REGISTER_MOVE_COST(CLASS1, CLASS2) \ ! (CLASS1 == SHIFT_REGS ? 0x100 \ : FP_REG_CLASS_P (CLASS1) && ! FP_REG_CLASS_P (CLASS2) ? 16 \ : FP_REG_CLASS_P (CLASS2) && ! FP_REG_CLASS_P (CLASS1) ? 16 \ 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.2/config/pa/pa.md gcc-2.5.3/config/pa/pa.md *** gcc-2.5.2/config/pa/pa.md Wed Oct 20 18:08:52 1993 --- gcc-2.5.3/config/pa/pa.md Tue Nov 9 15:17:01 1993 *************** *** 390,394 **** (define_insn "negscc" [(set (match_operand:SI 0 "register_operand" "=r") ! (neg (match_operator:SI 3 "comparison_operator" [(match_operand:SI 1 "register_operand" "r") (match_operand:SI 2 "arith11_operand" "rI")])))] --- 390,394 ---- (define_insn "negscc" [(set (match_operand:SI 0 "register_operand" "=r") ! (neg:SI (match_operator:SI 3 "comparison_operator" [(match_operand:SI 1 "register_operand" "r") (match_operand:SI 2 "arith11_operand" "rI")])))] *************** *** 3079,3083 **** (clobber (match_scratch:SI 4 "=X,r,r"))] "" ! "* output_dbra (operands, insn, which_alternative); " ;; Do not expect to understand this the first time through. [(set_attr "type" "cbranch,multi,multi") --- 3079,3083 ---- (clobber (match_scratch:SI 4 "=X,r,r"))] "" ! "* return output_dbra (operands, insn, which_alternative); " ;; Do not expect to understand this the first time through. [(set_attr "type" "cbranch,multi,multi") 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.2/config/rs6000/rs6000.h gcc-2.5.3/config/rs6000/rs6000.h *** gcc-2.5.2/config/rs6000/rs6000.h Thu Oct 21 21:54:54 1993 --- gcc-2.5.3/config/rs6000/rs6000.h Wed Nov 10 18:42:15 1993 *************** *** 51,55 **** csects. See AIX documentation for more information about this. */ ! #define LINK_SPEC "-T512 -H512 -btextro -bhalt:4 -bnodelcsect\ %{static:-bnso -bI:/lib/syscalls.exp} %{g*:-bexport:/usr/lib/libg.exp}" --- 51,55 ---- csects. See AIX documentation for more information about this. */ ! #define LINK_SPEC "-T512 -H512 %{!r:-btextro} -bhalt:4 -bnodelcsect\ %{static:-bnso -bI:/lib/syscalls.exp} %{g*:-bexport:/usr/lib/libg.exp}" *************** *** 1479,1482 **** --- 1479,1484 ---- Initialize the section names for the RS/6000 at this point. + Specify filename to assembler. + We want to go into the TOC section so at least one .toc will be emitted. Also, in order to output proper .bs/.es pairs, we need at least one static *************** *** 1497,1500 **** --- 1499,1503 ---- main_input_filename, ".ro_"); \ \ + output_file_directive (FILE, main_input_filename); \ toc_section (); \ if (write_symbols != NO_DEBUG) \ *************** *** 1891,1901 **** /* This is how to output an assembler line defining a `double' constant. */ ! #define ASM_OUTPUT_DOUBLE(FILE,VALUE) \ ! fprintf (FILE, "\t.double 0d%.20e\n", (VALUE)) /* This is how to output an assembler line defining a `float' constant. */ ! #define ASM_OUTPUT_FLOAT(FILE,VALUE) \ ! fprintf (FILE, "\t.float 0d%.20e\n", (VALUE)) /* This is how to output an assembler line defining an `int' constant. */ --- 1894,1935 ---- /* This is how to output an assembler line defining a `double' constant. */ ! #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] & 0xffffffff, t[1] & 0xffffffff); \ ! } \ ! else \ ! { \ ! char str[30]; \ ! REAL_VALUE_TO_DECIMAL (VALUE, "%.20e", str); \ ! fprintf (FILE, "\t.double 0d%s\n", str); \ ! } \ ! } /* This is how to output an assembler line defining a `float' constant. */ ! #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 & 0xffffffff); \ ! } \ ! else \ ! { \ ! char str[30]; \ ! REAL_VALUE_TO_DECIMAL ((VALUE), "%.20e", str); \ ! fprintf (FILE, "\t.float 0d%s\n", str); \ ! } \ ! } /* This is how to output an assembler line defining an `int' constant. */ 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.2/config/rs6000/rs6000.md gcc-2.5.3/config/rs6000/rs6000.md *** gcc-2.5.2/config/rs6000/rs6000.md Fri Oct 29 12:54:10 1993 --- gcc-2.5.3/config/rs6000/rs6000.md Wed Nov 10 17:51:22 1993 *************** *** 641,651 **** { if (TARGET_POWER) ! emit_insn (gen_mulsi3_power (operands[0], operands[1], operands[2])); else ! emit_insn (gen_mulsi3_powerpc (operands[0], operands[1], operands[2])); DONE; }") ! (define_insn "mulsi3_power" [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r") (mult:SI (match_operand:SI 1 "gpc_reg_operand" "%r,r") --- 641,651 ---- { if (TARGET_POWER) ! emit_insn (gen_mulsi3_mq (operands[0], operands[1], operands[2])); else ! emit_insn (gen_mulsi3_no_mq (operands[0], operands[1], operands[2])); DONE; }") ! (define_insn "mulsi3_mq" [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r") (mult:SI (match_operand:SI 1 "gpc_reg_operand" "%r,r") *************** *** 658,666 **** [(set_attr "type" "imul")]) ! (define_insn "mulsi3_powerpc" [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r") (mult:SI (match_operand:SI 1 "gpc_reg_operand" "%r,r") (match_operand:SI 2 "reg_or_short_operand" "r,I")))] ! "TARGET_POWERPC" "@ mullw %0,%1,%2 --- 658,666 ---- [(set_attr "type" "imul")]) ! (define_insn "mulsi3_no_mq" [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r") (mult:SI (match_operand:SI 1 "gpc_reg_operand" "%r,r") (match_operand:SI 2 "reg_or_short_operand" "r,I")))] ! "! TARGET_POWER" "@ mullw %0,%1,%2 *************** *** 2369,2373 **** [(set (match_operand:DF 0 "gpc_reg_operand" "=f") (sqrt:DF (match_operand:DF 1 "gpc_reg_operand" "f")))] ! "TARGET_POWERPCSQR | TARGET_POWER2" "fsqrt %0,%1" [(set_attr "type" "dsqrt")]) --- 2369,2373 ---- [(set (match_operand:DF 0 "gpc_reg_operand" "=f") (sqrt:DF (match_operand:DF 1 "gpc_reg_operand" "f")))] ! "TARGET_POWERPCSQR || TARGET_POWER2" "fsqrt %0,%1" [(set_attr "type" "dsqrt")]) *************** *** 2447,2451 **** && GET_CODE (operands[3]) == CONST_DOUBLE && CONST_DOUBLE_LOW (operands[3]) == 0" ! "#") (define_split --- 2447,2452 ---- && GET_CODE (operands[3]) == CONST_DOUBLE && CONST_DOUBLE_LOW (operands[3]) == 0" ! "#" ! [(set_attr "length" "8")]) (define_split *************** *** 2485,2489 **** && GET_CODE (operands[2]) == CONST_DOUBLE && CONST_DOUBLE_LOW (operands[2]) == 0" ! "#") (define_expand "fix_truncdfsi2" --- 2486,2491 ---- && GET_CODE (operands[2]) == CONST_DOUBLE && CONST_DOUBLE_LOW (operands[2]) == 0" ! "#" ! [(set_attr "length" "8")]) (define_expand "fix_truncdfsi2" *************** *** 3058,3063 **** operands[5] = operand_subword (operands[1], 1, 0, DFmode); }") (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=!r,r,o,r,f,f,m") (match_operand:DF 1 "input_operand" "r,o,r,G,f,m,f"))] "register_operand (operands[0], DFmode) --- 3060,3071 ---- operands[5] = operand_subword (operands[1], 1, 0, DFmode); }") + ;; Don't have reload use general registers to load a constant. First, + ;; it might not work if the output operand has is the equivalent of + ;; a non-offsettable memref, but also it is less efficient than loading + ;; the constant into an FP register, since it will probably be used there. + ;; The "??" is a kludge until we can figure out a more reasonable way + ;; of handling these non-offsettable values. (define_insn "" ! [(set (match_operand:DF 0 "nonimmediate_operand" "=!r,??r,o,!r,f,f,m") (match_operand:DF 1 "input_operand" "r,o,r,G,f,m,f"))] "register_operand (operands[0], DFmode) *************** *** 4130,4134 **** (plus:SI (match_dup 1) (match_operand:SI 4 "short_cint_operand" "i")))] "" ! "#") (define_insn "" --- 4138,4143 ---- (plus:SI (match_dup 1) (match_operand:SI 4 "short_cint_operand" "i")))] "" ! "#" ! [(set_attr "length" "8")]) (define_insn "" *************** *** 4139,4143 **** (plus:SI (match_dup 1) (match_operand:SI 4 "short_cint_operand" "i")))] "" ! "#") (define_split --- 4148,4153 ---- (plus:SI (match_dup 1) (match_operand:SI 4 "short_cint_operand" "i")))] "" ! "#" ! [(set_attr "length" "8")]) (define_split *************** *** 4384,4388 **** {xoril|xori} %4,%1,%b2\;{sfi|subfic} %4,%4,0\;{aze|addze} %0,%3 {xoriu|xoris} %4,%1,%u2\;{sfi|subfic} %4,%4,0\;{aze|addze} %0,%3 ! {sfi|subfic} %4,%1,%2\;{sfi|subfic} %4,%4,0\;{aze|adddze} %0,%3" [(set_attr "length" "12,8,12,12,12")]) --- 4394,4398 ---- {xoril|xori} %4,%1,%b2\;{sfi|subfic} %4,%4,0\;{aze|addze} %0,%3 {xoriu|xoris} %4,%1,%u2\;{sfi|subfic} %4,%4,0\;{aze|addze} %0,%3 ! {sfi|subfic} %4,%1,%2\;{sfi|subfic} %4,%4,0\;{aze|addze} %0,%3" [(set_attr "length" "12,8,12,12,12")]) *************** *** 5411,5415 **** "* { ! if (which_alternative == 1) return \"#\"; else if (get_attr_length (insn) == 8) --- 5421,5425 ---- "* { ! if (which_alternative != 0) return \"#\"; else if (get_attr_length (insn) == 8) *************** *** 5418,5422 **** return \"bdz $+8\;b %l2\"; }" ! [(set_attr "type" "branch")]) ;; Similar, but we can use GE since we have a REG_NONNEG. --- 5428,5433 ---- return \"bdz $+8\;b %l2\"; }" ! [(set_attr "type" "branch") ! (set_attr "length" "*,12,16")]) ;; Similar, but we can use GE since we have a REG_NONNEG. *************** *** 5434,5438 **** "* { ! if (which_alternative == 1) return \"#\"; else if (get_attr_length (insn) == 8) --- 5445,5449 ---- "* { ! if (which_alternative != 0) return \"#\"; else if (get_attr_length (insn) == 8) *************** *** 5441,5445 **** return \"bdz $+8\;b %l2\"; }" ! [(set_attr "type" "branch")]) (define_insn "" --- 5452,5457 ---- return \"bdz $+8\;b %l2\"; }" ! [(set_attr "type" "branch") ! (set_attr "length" "*,12,16")]) (define_insn "" *************** *** 5456,5460 **** "* { ! if (which_alternative == 1) return \"#\"; else if (get_attr_length (insn) == 8) --- 5468,5472 ---- "* { ! if (which_alternative != 0) return \"#\"; else if (get_attr_length (insn) == 8) *************** *** 5463,5467 **** return \"{bdn|bdnz} $+8\;b %l2\"; }" ! [(set_attr "type" "branch")]) (define_split --- 5475,5480 ---- return \"{bdn|bdnz} $+8\;b %l2\"; }" ! [(set_attr "type" "branch") ! (set_attr "length" "*,12,16")]) (define_split 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.2/config/vax/vms.h gcc-2.5.3/config/vax/vms.h *** gcc-2.5.2/config/vax/vms.h Sat Oct 2 04:24:19 1993 --- gcc-2.5.3/config/vax/vms.h Sun Nov 7 05:16:03 1993 *************** *** 38,42 **** /* Predefine this in CPP because VMS limits the size of command options and GNU CPP is not used on VMS except with GNU C. */ ! #define CPP_PREDEFINES "-Dvax -Dvms -DVMS -D__GNUC__=2 -Asystem(vms) -Acpu(vax) -Amachine(vax)" /* These match the definitions used in VAXCRTL, the VMS C run-time library */ --- 38,42 ---- /* Predefine this in CPP because VMS limits the size of command options and GNU CPP is not used on VMS except with GNU C. */ ! #define CPP_PREDEFINES "-Dvax -Dvms -DVMS -D__GNUC__=2 -D__GNUC_MINOR__=5 -Asystem(vms) -Acpu(vax) -Amachine(vax)" /* These match the definitions used in VAXCRTL, the VMS C run-time library */ *************** *** 87,91 **** else fprintf (FILE, "\tsubl2 $%d,sp\n", newsize); } ! #define __MAIN_NAME " main (" /* * The MAYBE_VMS_FUNCTION_PROLOGUE macro works for both gcc and g++. It --- 87,91 ---- else fprintf (FILE, "\tsubl2 $%d,sp\n", newsize); } ! #define __MAIN_NAME " main(" /* * The MAYBE_VMS_FUNCTION_PROLOGUE macro works for both gcc and g++. It *************** *** 94,98 **** * see if __MAIN_NAME is part of current_function_name, which will only happen * if we are running g++, and add the jsb if it is. In gcc there should never ! * be a space in the function name, and in g++ there is always a "(" in the * function name, thus there should never be any confusion. * --- 94,98 ---- * see if __MAIN_NAME is part of current_function_name, which will only happen * if we are running g++, and add the jsb if it is. In gcc there should never ! * be a paren in the function name, and in g++ there is always a "(" in the * function name, thus there should never be any confusion. * 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.2/config.guess gcc-2.5.3/config.guess *** gcc-2.5.2/config.guess Mon Nov 1 01:08:12 1993 --- gcc-2.5.3/config.guess Thu Nov 11 10:43:03 1993 *************** *** 19,25 **** # # This script attempts to guess a canonical system name similar to ! # config.sub. If it succeeds, it prints the system name on stdout, and ! # exits with 0. Otherwise, it prints an error message on stderr, and ! # exits with 1. # # The plan is that this can be called by configure scripts if you --- 19,24 ---- # # This script attempts to guess a canonical system name similar to ! # config.sub. If it succeeds, it prints the system name on stdout, and ! # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you *************** *** 46,49 **** --- 45,51 ---- echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^V//'` exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; sun4*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` *************** *** 76,79 **** --- 78,88 ---- echo m88k-motorola-sysv3 exit 0 ;; + AViiON:dgux:*:*) + echo m88k-dg-dgux${UNAME_RELEASE} + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; *:IRIX:*:*) echo mips-sgi-irix${UNAME_RELEASE} *************** *** 112,115 **** --- 121,151 ---- echo hppa1.0-hp-hpux exit 0 ;; + 3050*:HI-UX:*:*) + sed 's/^ //' << EOF >dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } + EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?7:4.3bsd:*:* ) echo hppa1.1-hp-bsd *************** *** 164,170 **** M680[234]0:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; ! 33??:*:4.0:*) uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; esac --- 200,215 ---- M680[234]0:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; ! 3[34]??:*:4.0:*) uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; + m680[234]0:LynxOS:2.2*:*) + echo m68k-lynx-lynxos${UNAME_RELEASE} + exit 0 ;; + i[34]86:LynxOS:2.2*:*) + echo i386-lynx-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.2*:*) + echo sparc-lynx-lynxos${UNAME_RELEASE} + exit 0 ;; esac *************** *** 180,183 **** --- 225,232 ---- printf("m68k-sony-newsos\n"); exit(0); #endif + #endif + + #if defined (__arm) && defined (__acorn) && defined (__unix) + printf("arm-acorn-riscix"); exit (0); #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.2/configure gcc-2.5.3/configure *** gcc-2.5.2/configure Sat Oct 30 23:20:41 1993 --- gcc-2.5.3/configure Wed Nov 10 18:04:36 1993 *************** *** 1043,1046 **** --- 1043,1047 ---- xm_file=mips/xm-iris5.h broken_install=yes + fixincludes=Makefile.in xmake_file=mips/x-iris # mips-tfile doesn't work yet *************** *** 1448,1452 **** use_collect2=yes ;; ! hppa1.0-*-hpux8.02*) cpu_type=pa xm_file=pa/xm-pahpux.h --- 1449,1453 ---- use_collect2=yes ;; ! hppa1.0-*-hpux8.0[0-2]*) cpu_type=pa xm_file=pa/xm-pahpux.h *************** *** 1463,1467 **** use_collect2=yes ;; ! hppa1.1-*-hpux8.02*) cpu_type=pa xm_file=pa/xm-pahpux.h --- 1464,1468 ---- use_collect2=yes ;; ! hppa1.1-*-hpux8.0[0-2]*) cpu_type=pa xm_file=pa/xm-pahpux.h *************** *** 1547,1550 **** --- 1548,1557 ---- sh-*-*) cpu_type=sh + ;; + alpha-dec-osf1.2) + extra_passes="mips-tfile mips-tdump" + tm_file=alpha/osf12.h + broken_install=yes + use_collect2=yes ;; alpha-*-osf*) 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.2/cp-call.c gcc-2.5.3/cp-call.c *** gcc-2.5.2/cp-call.c Fri Oct 8 14:59:19 1993 --- gcc-2.5.3/cp-call.c Fri Nov 5 13:36:36 1993 *************** *** 3594,3600 **** if (!integer_zerop (TREE_VALUE (parms))) { ! tree binfo = get_binfo (basetype, TREE_TYPE (TREE_TYPE (TREE_VALUE (parms))), 0); ! instance_ptr = convert_pointer_to_real (binfo, TREE_VALUE (parms)); ! instance_ptr = convert_pointer_to (build_type_variant (basetype, constp, volatilep), instance_ptr); if (TREE_CODE (instance_ptr) == COND_EXPR) --- 3594,3615 ---- if (!integer_zerop (TREE_VALUE (parms))) { ! /* Since we can't have inheritance with a union, doing get_binfo ! on it won't work. We do all the convert_pointer_to_real ! stuff to handle MI correctly...for unions, that's not ! an issue, so we must short-circuit that extra work here. */ ! tree tmp = TREE_TYPE (TREE_TYPE (TREE_VALUE (parms))); ! if (tmp != NULL_TREE && TREE_CODE (tmp) == UNION_TYPE) ! instance_ptr = TREE_VALUE (parms); ! else ! { ! tree binfo = get_binfo (basetype, ! TREE_TYPE (TREE_TYPE (TREE_VALUE (parms))), ! 0); ! instance_ptr = convert_pointer_to_real (binfo, TREE_VALUE (parms)); ! } ! instance_ptr ! = convert_pointer_to (build_type_variant (basetype, ! constp, volatilep), ! instance_ptr); if (TREE_CODE (instance_ptr) == COND_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.2/cp-decl.c gcc-2.5.3/cp-decl.c *** gcc-2.5.2/cp-decl.c Fri Oct 8 19:55:08 1993 --- gcc-2.5.3/cp-decl.c Wed Nov 10 23:20:27 1993 *************** *** 6920,6938 **** tree decl; - /* This implements the "one definition rule" for global variables. - Note that declarator can come in as null when we're doing work - on an anonymous union. Don't complain about duplicate - definitions of `extern "C"' vars. */ - if (declarator && IDENTIFIER_GLOBAL_VALUE (declarator) - && current_binding_level == global_binding_level - && TREE_STATIC (IDENTIFIER_GLOBAL_VALUE (declarator)) - && current_lang_name == lang_name_cplusplus - && (RIDBIT_NOTSETP (RID_EXTERN, specbits) - || initialized)) - { - error ("redefinition of `%s'", IDENTIFIER_POINTER (declarator)); - cp_error_at ("previously defined here", IDENTIFIER_GLOBAL_VALUE (declarator)); - } - if (TREE_CODE (type) == OFFSET_TYPE) { --- 6920,6923 ---- 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.2/cp-method.c gcc-2.5.3/cp-method.c *** gcc-2.5.2/cp-method.c Thu Oct 28 19:53:32 1993 --- gcc-2.5.3/cp-method.c Tue Nov 9 23:50:45 1993 *************** *** 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) { --- 1378,1381 ---- 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.2/cp-search.c gcc-2.5.3/cp-search.c *** gcc-2.5.2/cp-search.c Fri Oct 8 15:01:58 1993 --- gcc-2.5.3/cp-search.c Thu Nov 11 02:01:29 1993 *************** *** 674,681 **** int head, tail; int is_private = 0; ! int rval = -1; int depth = 0; int rval_private = 0; ! tree type, basetype_path; tree friends; tree new_binfo = NULL_TREE; --- 674,681 ---- int head, tail; int is_private = 0; ! int rval; int depth = 0; int rval_private = 0; ! tree type, basetype_path = NULL_TREE; tree friends; tree new_binfo = NULL_TREE; *************** *** 698,702 **** if (path_ptr) - { basetype_path = TYPE_BINFO (type); --- 698,701 ---- *************** *** 713,717 **** } ! rval = get_base_distance_recursive (binfo, 0, 0, NULL_TREE, rval, &rval_private, &new_binfo, parent, path_ptr, protect, &via_virtual, 0); --- 712,716 ---- } ! rval = get_base_distance_recursive (binfo, 0, 0, NULL_TREE, -1, &rval_private, &new_binfo, parent, path_ptr, protect, &via_virtual, 0); *************** *** 936,942 **** { if (TREE_VIA_PROTECTED (types)) ! visibility = visibility_protected; else if (! TREE_VIA_PUBLIC (types)) ! visibility = visibility_private; } } --- 935,946 ---- { if (TREE_VIA_PROTECTED (types)) ! { ! visibility = visibility_protected; ! } else if (! TREE_VIA_PUBLIC (types)) ! { ! if (current_class_type != type) ! visibility = visibility_private; ! } } } *************** *** 984,989 **** } ! if (visibility == visibility_private ! && current_class_type != NULL_TREE) { reverse_path (basetype_path); --- 988,992 ---- } ! if (visibility == visibility_private && current_class_type != NULL_TREE) { reverse_path (basetype_path); *************** *** 3162,3166 **** install the new one and if it's a TYPE_DECL do the same to the IDENTIFIER_TYPE_VALUE. Such an envelope is recognized by seeing that ! the TREE_PURPOSE slot is non-null. */ static void --- 3165,3170 ---- install the new one and if it's a TYPE_DECL do the same to the IDENTIFIER_TYPE_VALUE. Such an envelope is recognized by seeing that ! the TREE_PURPOSE slot is a _DECL node of some sort. Because if it's ! not, it could be a set of overloaded methods from an outer scope. */ static void *************** *** 3205,3209 **** decls in there. */ if (class_value && TREE_CODE (class_value) == TREE_LIST ! && TREE_PURPOSE (class_value) != NULL_TREE) { tree value = TREE_PURPOSE (class_value); --- 3209,3215 ---- decls in there. */ if (class_value && TREE_CODE (class_value) == TREE_LIST ! && TREE_PURPOSE (class_value) != NULL_TREE ! && (TREE_CODE_CLASS (TREE_CODE (TREE_PURPOSE (class_value))) ! == 'd')) { tree value = TREE_PURPOSE (class_value); 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.2/cp-typeck.c gcc-2.5.3/cp-typeck.c *** gcc-2.5.2/cp-typeck.c Thu Oct 28 19:16:34 1993 --- gcc-2.5.3/cp-typeck.c Tue Nov 2 03:42:55 1993 *************** *** 549,554 **** return 0; } if (strict > 1) ! strict == 1; /* Qualifiers must match. */ --- 549,557 ---- return 0; } + + /* The special treatment for REFERENCE_TYPE with STRICT == 2 + should not be done recursively. */ if (strict > 1) ! strict = 1; /* Qualifiers must match. */ 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.2/cse.c gcc-2.5.3/cse.c *** gcc-2.5.2/cse.c Wed Oct 27 19:15:17 1993 --- gcc-2.5.3/cse.c Thu Nov 4 03:26:09 1993 *************** *** 5856,5863 **** { register rtx y = XVECEXP (x, 0, i); ! if (GET_CODE (y) == CLOBBER ! && (GET_CODE (XEXP (y, 0)) == REG ! || GET_CODE (XEXP (y, 0)) == SUBREG)) ! invalidate (XEXP (y, 0)); } --- 5856,5870 ---- { register rtx y = XVECEXP (x, 0, i); ! if (GET_CODE (y) == CLOBBER) ! { ! rtx clobbered = XEXP (y, 0); ! ! if (GET_CODE (clobbered) == REG ! || GET_CODE (clobbered) == SUBREG) ! invalidate (clobbered); ! else if (GET_CODE (clobbered) == STRICT_LOW_PART ! || GET_CODE (clobbered) == ZERO_EXTRACT) ! invalidate (XEXP (clobbered, 0)); ! } } *************** *** 6718,6721 **** --- 6725,6731 ---- || GET_CODE (dest) == MEM) invalidate (dest); + else if (GET_CODE (dest) == STRICT_LOW_PART + || GET_CODE (dest) == ZERO_EXTRACT) + invalidate (XEXP (dest, 0)); sets[i].rtl = 0; } *************** *** 6861,6864 **** --- 6871,6877 ---- || (! writes_memory.all && ! cse_rtx_addr_varies_p (dest))) invalidate (dest); + else if (GET_CODE (dest) == STRICT_LOW_PART + || GET_CODE (dest) == ZERO_EXTRACT) + invalidate (XEXP (dest, 0)); } *************** *** 7177,7184 **** { rtx ref = XEXP (x, 0); ! if (ref ! && (GET_CODE (ref) == REG || GET_CODE (ref) == SUBREG ! || (GET_CODE (ref) == MEM && ! w->all))) ! invalidate (ref); } else if (GET_CODE (x) == PARALLEL) --- 7190,7202 ---- { rtx ref = XEXP (x, 0); ! if (ref) ! { ! if (GET_CODE (ref) == REG || GET_CODE (ref) == SUBREG ! || (GET_CODE (ref) == MEM && ! w->all)) ! invalidate (ref); ! else if (GET_CODE (ref) == STRICT_LOW_PART ! || GET_CODE (ref) == ZERO_EXTRACT) ! invalidate (XEXP (ref, 0)); ! } } else if (GET_CODE (x) == PARALLEL) *************** *** 7191,7198 **** { rtx ref = XEXP (y, 0); ! if (ref ! &&(GET_CODE (ref) == REG || GET_CODE (ref) == SUBREG ! || (GET_CODE (ref) == MEM && !w->all))) ! invalidate (ref); } } --- 7209,7221 ---- { rtx ref = XEXP (y, 0); ! if (ref) ! { ! if (GET_CODE (ref) == REG || GET_CODE (ref) == SUBREG ! || (GET_CODE (ref) == MEM && !w->all)) ! invalidate (ref); ! else if (GET_CODE (ref) == STRICT_LOW_PART ! || GET_CODE (ref) == ZERO_EXTRACT) ! invalidate (XEXP (ref, 0)); ! } } } *************** *** 7323,7326 **** --- 7346,7352 ---- || GET_CODE (p->exp) == SUBREG) invalidate (p->exp); + else if (GET_CODE (p->exp) == STRICT_LOW_PART + || GET_CODE (p->exp) == ZERO_EXTRACT) + invalidate (XEXP (p->exp, 0)); /* Process insns starting after LOOP_START until we hit a CALL_INSN or *************** *** 7382,7385 **** --- 7408,7414 ---- || (! skipped_writes_memory.all && ! cse_rtx_addr_varies_p (dest))) invalidate (dest); + else if (GET_CODE (dest) == STRICT_LOW_PART + || GET_CODE (dest) == ZERO_EXTRACT) + invalidate (XEXP (dest, 0)); } *************** *** 7534,7537 **** --- 7563,7569 ---- && ! cse_rtx_addr_varies_p (SET_DEST (x)))) invalidate (SET_DEST (x)); + else if (GET_CODE (SET_DEST (x)) == STRICT_LOW_PART + || GET_CODE (SET_DEST (x)) == ZERO_EXTRACT) + invalidate (XEXP (SET_DEST (x), 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.2/dbxout.c gcc-2.5.3/dbxout.c *** gcc-2.5.2/dbxout.c Tue Oct 19 17:47:40 1993 --- gcc-2.5.3/dbxout.c Thu Nov 11 08:24:14 1993 *************** *** 1271,1280 **** fprintf (asmfile, "%s:", IDENTIFIER_POINTER (TREE_PURPOSE (tem))); if (TREE_INT_CST_HIGH (TREE_VALUE (tem)) == 0) ! { ! if (TREE_INT_CST_LOW (TREE_VALUE (tem)) < 0) ! fprintf (asmfile, "%u", TREE_INT_CST_LOW (TREE_VALUE (tem))); ! else ! fprintf (asmfile, "%d", TREE_INT_CST_LOW (TREE_VALUE (tem))); ! } else print_int_cst_octal (TREE_VALUE (tem)); --- 1271,1280 ---- fprintf (asmfile, "%s:", IDENTIFIER_POINTER (TREE_PURPOSE (tem))); if (TREE_INT_CST_HIGH (TREE_VALUE (tem)) == 0) ! fprintf (asmfile, "%lu", ! (unsigned long) TREE_INT_CST_LOW (TREE_VALUE (tem))); ! else if (TREE_INT_CST_HIGH (TREE_VALUE (tem)) == -1 ! && TREE_INT_CST_LOW (TREE_VALUE (tem)) < 0) ! fprintf (asmfile, "%ld", ! (long) TREE_INT_CST_LOW (TREE_VALUE (tem))); else print_int_cst_octal (TREE_VALUE (tem)); *************** *** 1570,1574 **** /* Distinguish the implicit typedefs of C++ from explicit ones that might be found in C. */ ! && DECL_SOURCE_LINE (decl) == 0) { tree name = TYPE_NAME (type); --- 1570,1577 ---- /* Distinguish the implicit typedefs of C++ from explicit ones that might be found in C. */ ! && (!strcmp (lang_identify (), "cplusplus") ! /* The following line maybe unnecessary; ! in 2.6, try removing it. */ ! || DECL_SOURCE_LINE (decl) == 0)) { tree name = TYPE_NAME (type); *************** *** 1797,1801 **** if (!DECL_INITIAL (decl)) current_sym_code = N_LCSYM; ! else if (in_text_section ()) /* This is not quite right, but it's the closest of all the codes that Unix defines. */ --- 1800,1804 ---- if (!DECL_INITIAL (decl)) current_sym_code = N_LCSYM; ! else if (DECL_IN_TEXT_SECTION (decl)) /* This is not quite right, but it's the closest of all the codes that Unix defines. */ *************** *** 2155,2160 **** else if (GET_CODE (DECL_RTL (parms)) == MEM && GET_CODE (XEXP (DECL_RTL (parms), 0)) == REG ! && (REGNO (XEXP (DECL_RTL (parms), 0)) ! >= FIRST_PSEUDO_REGISTER)) { /* Parm was passed via invisible reference. --- 2158,2167 ---- else if (GET_CODE (DECL_RTL (parms)) == MEM && GET_CODE (XEXP (DECL_RTL (parms), 0)) == REG ! && REGNO (XEXP (DECL_RTL (parms), 0)) != HARD_FRAME_POINTER_REGNUM ! && REGNO (XEXP (DECL_RTL (parms), 0)) != STACK_POINTER_REGNUM ! #if ARG_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM ! && REGNO (XEXP (DECL_RTL (parms), 0)) != ARG_POINTER_REGNUM ! #endif ! ) { /* Parm was passed via invisible reference. 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.2/emit-rtl.c gcc-2.5.3/emit-rtl.c *** gcc-2.5.2/emit-rtl.c Wed Oct 27 01:25:12 1993 --- gcc-2.5.3/emit-rtl.c Fri Nov 5 01:48:54 1993 *************** *** 892,895 **** --- 892,898 ---- #endif if (REGNO (x) < FIRST_PSEUDO_REGISTER + /* integrate.c can't handle parts of a return value register. */ + && (! REG_FUNCTION_VALUE_P (x) + || ! rtx_equal_function_value_matters) /* We want to keep the stack, frame, and arg pointers special. */ && REGNO (x) != FRAME_POINTER_REGNUM 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.2/expmed.c gcc-2.5.3/expmed.c *** gcc-2.5.2/expmed.c Wed Oct 27 01:26:20 1993 --- gcc-2.5.3/expmed.c Wed Nov 10 16:27:40 1993 *************** *** 1972,1975 **** --- 1972,1977 ---- cost_limit = cost; } + /* Other factors will have been taken care of in the recursion. */ + break; } *************** *** 1989,1992 **** --- 1991,1995 ---- cost_limit = cost; } + break; } } *************** *** 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); --- 2107,2111 ---- 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); *************** *** 2401,2406 **** { /* If we want the remainder, we may need to use OP0, so make sure ! it and ADJUSTED_OP0 are in different registers. If we want to ! preserve subexpressions, make sure OP0 is in a register. If we don't want the remainder, we aren't going to use OP0 anymore. --- 2404,2410 ---- { /* If we want the remainder, we may need to use OP0, so make sure ! it and ADJUSTED_OP0 are in different registers. We force OP0 ! to a register in case it has any queued subexpressions, because ! emit_cmp_insn will call emit_queue. If we don't want the remainder, we aren't going to use OP0 anymore. *************** *** 2412,2420 **** equal TARGET. */ ! if (rem_flag && preserve_subexpressions_p ()) op0 = force_reg (compute_mode, op0); if (! can_clobber_op0) ! adjusted_op0 = copy_to_suggested_reg (op0, target, compute_mode); } --- 2416,2431 ---- equal TARGET. */ ! if (rem_flag) op0 = force_reg (compute_mode, op0); if (! can_clobber_op0) ! { ! if (target && GET_MODE (target) == compute_mode) ! adjusted_op0 = target; ! else ! adjusted_op0 = 0; ! adjusted_op0 = copy_to_suggested_reg (op0, adjusted_op0, ! compute_mode); ! } } 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.2/expr.c gcc-2.5.3/expr.c *** gcc-2.5.2/expr.c Sun Oct 31 13:31:49 1993 --- gcc-2.5.3/expr.c Wed Nov 10 16:31:00 1993 *************** *** 1803,1820 **** if (stack) { #ifdef STACK_GROWS_DOWNWARD emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code) (gen_rtx (MEM, submode, (XEXP (x, 0))), ! gen_highpart (submode, y))); emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code) (gen_rtx (MEM, submode, (XEXP (x, 0))), ! gen_lowpart (submode, y))); #else emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code) (gen_rtx (MEM, submode, (XEXP (x, 0))), ! gen_lowpart (submode, y))); emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code) (gen_rtx (MEM, submode, (XEXP (x, 0))), ! gen_highpart (submode, y))); #endif } --- 1803,1822 ---- if (stack) { + /* Note that the real part always precedes the imag part in memory + regardless of machine's endianness. */ #ifdef STACK_GROWS_DOWNWARD emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code) (gen_rtx (MEM, submode, (XEXP (x, 0))), ! gen_imagpart (submode, y))); emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code) (gen_rtx (MEM, submode, (XEXP (x, 0))), ! gen_realpart (submode, y))); #else emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code) (gen_rtx (MEM, submode, (XEXP (x, 0))), ! gen_realpart (submode, y))); emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code) (gen_rtx (MEM, submode, (XEXP (x, 0))), ! gen_imagpart (submode, y))); #endif } *************** *** 2346,2349 **** --- 2348,2352 ---- int volatilep = 0; tree tem; + int alignment; push_temp_slots (); *************** *** 2357,2360 **** --- 2360,2364 ---- tem = stabilize_reference (tem); + alignment = TYPE_ALIGN (TREE_TYPE (tem)) / BITS_PER_UNIT; to_rtx = expand_expr (tem, NULL_RTX, VOIDmode, 0); if (offset != 0) *************** *** 2367,2370 **** --- 2371,2382 ---- gen_rtx (PLUS, Pmode, XEXP (to_rtx, 0), force_reg (Pmode, offset_rtx))); + /* If we have a variable offset, the known alignment + is only that of the innermost structure containing the field. + (Actually, we could sometimes do better by using the + align of an element of the innermost array, but no need.) */ + if (TREE_CODE (to) == COMPONENT_REF + || TREE_CODE (to) == BIT_FIELD_REF) + alignment + = TYPE_ALIGN (TREE_TYPE (TREE_OPERAND (to, 0))) / BITS_PER_UNIT; } if (volatilep) *************** *** 2387,2391 **** unsignedp, /* Required alignment of containing datum. */ ! TYPE_ALIGN (TREE_TYPE (tem)) / BITS_PER_UNIT, int_size_in_bytes (TREE_TYPE (tem))); preserve_temp_slots (result); --- 2399,2403 ---- unsignedp, /* Required alignment of containing datum. */ ! alignment, int_size_in_bytes (TREE_TYPE (tem))); preserve_temp_slots (result); *************** *** 4303,4306 **** --- 4315,4319 ---- tree tem = get_inner_reference (exp, &bitsize, &bitpos, &offset, &mode1, &unsignedp, &volatilep); + int alignment; /* If we got back the original object, something is wrong. Perhaps *************** *** 4326,4329 **** --- 4339,4343 ---- } + alignment = TYPE_ALIGN (TREE_TYPE (tem)) / BITS_PER_UNIT; if (offset != 0) { *************** *** 4335,4338 **** --- 4349,4360 ---- gen_rtx (PLUS, Pmode, XEXP (op0, 0), force_reg (Pmode, offset_rtx))); + /* If we have a variable offset, the known alignment + is only that of the innermost structure containing the field. + (Actually, we could sometimes do better by using the + size of an element of the innermost array, but no need.) */ + if (TREE_CODE (exp) == COMPONENT_REF + || TREE_CODE (exp) == BIT_FIELD_REF) + alignment = (TYPE_ALIGN (TREE_TYPE (TREE_OPERAND (exp, 0))) + / BITS_PER_UNIT); } *************** *** 4371,4375 **** op0 = extract_bit_field (validize_mem (op0), bitsize, bitpos, unsignedp, target, ext_mode, ext_mode, ! TYPE_ALIGN (TREE_TYPE (tem)) / BITS_PER_UNIT, int_size_in_bytes (TREE_TYPE (tem))); if (mode == BLKmode) --- 4393,4397 ---- op0 = extract_bit_field (validize_mem (op0), bitsize, bitpos, unsignedp, target, ext_mode, ext_mode, ! alignment, int_size_in_bytes (TREE_TYPE (tem))); if (mode == BLKmode) 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.2/extend.texi gcc-2.5.3/extend.texi *** gcc-2.5.2/extend.texi Sat Oct 30 03:31:19 1993 --- gcc-2.5.3/extend.texi Sat Nov 6 14:40:06 1993 *************** *** 1079,1087 **** indices or structure field names they apply to. ! To specify an array index, write @samp{[@var{index}]} before the element value. For example, @example ! int a[6] = @{ [4] 29, [2] 15 @}; @end example --- 1079,1087 ---- indices or structure field names they apply to. ! To specify an array index, write @samp{[@var{index}] =} before the element value. For example, @example ! int a[6] = @{ [4] = 29, [2] = 15 @}; @end example *************** *** 1119,1126 **** @end example ! You can also use an element label when initializing a union, to ! specify which element of the union should be used. For example, @example union foo @{ int i; double d; @}; --- 1119,1134 ---- @end example ! Another syntax which has the same meaning is @samp{.@var{fieldname} =}., ! as shown here: @example + struct point p = @{ .y = yvalue, .x = xvalue @}; + @end example + + You can also use an element label (with either the colon syntax or the + period-equal syntax) when initializing a union, to specify which element + of the union should be used. For example, + + @example union foo @{ int i; double d; @}; *************** *** 1140,1144 **** @example ! int a[6] = @{ [1] v1, v2, [4] v4 @}; @end example --- 1148,1152 ---- @example ! int a[6] = @{ [1] = v1, v2, [4] = v4 @}; @end example *************** *** 1156,1161 **** @example int whitespace[256] ! = @{ [' '] 1, ['\t'] 1, ['\h'] 1, ! ['\f'] 1, ['\n'] 1, ['\r'] 1 @}; @end example --- 1164,1169 ---- @example int whitespace[256] ! = @{ [' '] = 1, ['\t'] = 1, ['\h'] = 1, ! ['\f'] = 1, ['\n'] = 1, ['\r'] = 1 @}; @end example *************** *** 1388,1391 **** --- 1396,1403 ---- modify the header file @file{stdio.h}. @end table + + You can specify multiple attributes in a declaration by separating them + by commas within the double parentheses. Currently it is never useful + to do this for a function, but it can be useful for a variable. @cindex @code{#pragma}, reason for not using 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.2/fix-header.c gcc-2.5.3/fix-header.c *** gcc-2.5.2/fix-header.c Tue Oct 26 21:46:57 1993 --- gcc-2.5.3/fix-header.c Thu Nov 11 10:50:54 1993 *************** *** 113,120 **** int seen_S_IFLNK = 0, seen_S_ISLNK = 0; int seen_S_IFREG = 0, seen_S_ISREG = 0; ! /* Wrapper around free, to avoid prototype clashes. */ ! void xfree (ptr) char *ptr; { --- 113,121 ---- int seen_S_IFLNK = 0, seen_S_ISLNK = 0; int seen_S_IFREG = 0, seen_S_ISREG = 0; ! /* Wrapper around free, to avoid prototype clashes. */ ! void ! xfree (ptr) char *ptr; { *************** *** 122,125 **** --- 123,136 ---- } + /* Avoid error if config defines abort as fancy_abort. + It's not worth "really" implementing this because ordinary + compiler users never run fix-header. */ + + void + fancy_abort () + { + abort (); + } + #define obstack_chunk_alloc xmalloc #define obstack_chunk_free xfree *************** *** 361,369 **** --- 372,392 ---- for (rptr = required_functions; *rptr; rptr++) { + int macro_protect = 0; + fn = lookup_std_proto (*rptr); if (fn == NULL || !REQUIRED (fn)) continue; + + /* In the case of memmove, protect in case the application + defines it as a macro before including the header. */ + if (!strcmp (fn->fname, "memmove")) + macro_protect = 1; + + if (macro_protect) + fprintf (outf, "#ifndef %s\n", fn->fname); fprintf (outf, "extern %s %s (%s);\n", fn->rtype, fn->fname, fn->params); + if (macro_protect) + fprintf (outf, "#endif\n"); } if (required_unseen_count) 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.2/fixincludes gcc-2.5.3/fixincludes *** gcc-2.5.2/fixincludes Wed Oct 27 14:15:13 1993 --- gcc-2.5.3/fixincludes Thu Nov 11 03:20:03 1993 *************** *** 292,296 **** /[ ]_IO[A-Z]*[ ]*(/ s/\(_IO[A-Z]*[ ]*(\)\(.\),/\1'\''\2'\'',/ /[ ]BSD43__IO[A-Z]*[ ]*(/ s/(\(.\),/('\''\1'\'',/ ! /#define._IO/ s/'\''\([cgxt]\)'\''/\1/g /#define.BSD43__IO/ s/'\''\([cgx]\)'\''/\1/g /[^A-Z0-9_]CTRL[ ]*(/ s/\([^'\'']\))/'\''\1'\'')/ --- 292,296 ---- /[ ]_IO[A-Z]*[ ]*(/ s/\(_IO[A-Z]*[ ]*(\)\(.\),/\1'\''\2'\'',/ /[ ]BSD43__IO[A-Z]*[ ]*(/ s/(\(.\),/('\''\1'\'',/ ! /#define._IO/ s/'\''\([cgxtf]\)'\''/\1/g /#define.BSD43__IO/ s/'\''\([cgx]\)'\''/\1/g /[^A-Z0-9_]CTRL[ ]*(/ s/\([^'\'']\))/'\''\1'\'')/ *************** *** 338,359 **** done - # Make sure that any include files referenced using double quotes - # exist in the fixed directory. - set x $required - shift - while [ $# != 0 ]; do - # $1 is the directory to copy from, $2 is the unfixed file, - # $3 is the fixed file name. - cd ${INPUT} - cd $1 - if [ -r $2 ] && [ ! -r $3 ]; then - cp $2 $3 >/dev/null 2>&1 || echo "Can't copy $2" - chmod +w $3 2>/dev/null - chmod a+r $3 2>/dev/null - echo Copied $2 - fi - shift; shift; shift - done - cd ${INPUT} --- 338,341 ---- *************** *** 879,892 **** fi ! # Another IRIX 4.0.1 header file contains the string "//" ! file=elf_abi.h ! if [ -r ${LIB}/$file ]; then ! echo Fixing $file, overeager sed script ! sed -e 's|"/\*"\*/|"//"|' ${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 # Same problem with a file from SunOS 4.1.3 : a header file containing --- 861,875 ---- fi ! # Some IRIX header files contains the string "//" ! for file in elf_abi.h elf.h; do ! if [ -r ${LIB}/$file ]; then ! echo Fixing $file, overeager sed script ! sed -e 's|"/\*"\*/|"//"|' ${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 # Same problem with a file from SunOS 4.1.3 : a header file containing *************** *** 1002,1005 **** --- 985,1007 ---- fi + # Wrong fchmod prototype on RS/6000. + file=sys/stat.h + if [ -r $file ] && [ ! -r ${LIB}/$file ]; then + mkdir ${LIB}/sys 2>/dev/null + 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, fchmod prototype + sed -e 's/fchmod(char \*/fchmod(int/' \ + ${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 + # 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, *************** *** 1079,1082 **** --- 1081,1086 ---- -e 's@inline int abs(int d) { return (d>0)?d:-d; }@@' \ -e 's@inline double abs(double d) { return fabs(d); }@@' \ + -e 's@inline int sqr(int x) {return(x*x);} /* For AT&T compatibility */@@' \ + -e 's@inline double sqr(double x) {return(x*x);}@@' \ ${LIB}/$file > ${LIB}/${file}.sed rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file *************** *** 1086,1089 **** --- 1090,1112 ---- fi + # Avoid nested comments on Ultrix 4.3. + file=rpc/svc.h + if [ -r $file ] && [ ! -r ${LIB}/$file ]; then + mkdir ${LIB}/rpc 2>/dev/null + 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, nested comment + sed -e 's@^\( \* int protocol; \)/\*@\1*/ /*@' \ + ${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 + # In limits.h, put #ifndefs around things that are supposed to be defined # in float.h to avoid redefinition errors if float.h is included first. *************** *** 1093,1140 **** # we find a #ifndef FLT_MIN we assume that all the required #ifndefs # are there, and we do not add them ourselves. ! file=limits.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 ! if egrep 'ifndef[ ]+FLT_MIN' ${LIB}/$file >/dev/null; then ! true ! else ! echo Fixing $file ! sed -e '/[ ]FLT_MIN[ ]/i\ #ifndef FLT_MIN'\ ! -e '/[ ]FLT_MIN[ ]/a\ #endif'\ ! -e '/[ ]FLT_MAX[ ]/i\ #ifndef FLT_MAX'\ ! -e '/[ ]FLT_MAX[ ]/a\ #endif'\ ! -e '/[ ]FLT_DIG[ ]/i\ #ifndef FLT_DIG'\ ! -e '/[ ]FLT_DIG[ ]/a\ #endif'\ ! -e '/[ ]DBL_MIN[ ]/i\ #ifndef DBL_MIN'\ ! -e '/[ ]DBL_MIN[ ]/a\ #endif'\ ! -e '/[ ]DBL_MAX[ ]/i\ #ifndef DBL_MAX'\ ! -e '/[ ]DBL_MAX[ ]/a\ #endif'\ ! -e '/[ ]DBL_DIG[ ]/i\ #ifndef DBL_DIG'\ ! -e '/[ ]DBL_DIG[ ]/a\ #endif'\ ! ${LIB}/$file > ${LIB}/${file}.sed ! rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file ! fi ! if cmp $file ${LIB}/$file >/dev/null 2>&1; then ! echo Deleting ${LIB}/$file\; no fixes were needed. ! rm -f ${LIB}/$file fi ! fi # In math.h, put #ifndefs around things that might be defined in a gcc --- 1116,1165 ---- # we find a #ifndef FLT_MIN we assume that all the required #ifndefs # are there, and we do not add them ourselves. ! for file in limits.h sys/limits.h; do ! if [ -r $file ] && [ ! -r ${LIB}/$file ]; then ! mkdir ${LIB}/sys 2>/dev/null ! 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 ! if egrep 'ifndef[ ]+FLT_MIN' ${LIB}/$file >/dev/null; then ! true ! else ! echo Fixing $file ! sed -e '/[ ]FLT_MIN[ ]/i\ #ifndef FLT_MIN'\ ! -e '/[ ]FLT_MIN[ ]/a\ #endif'\ ! -e '/[ ]FLT_MAX[ ]/i\ #ifndef FLT_MAX'\ ! -e '/[ ]FLT_MAX[ ]/a\ #endif'\ ! -e '/[ ]FLT_DIG[ ]/i\ #ifndef FLT_DIG'\ ! -e '/[ ]FLT_DIG[ ]/a\ #endif'\ ! -e '/[ ]DBL_MIN[ ]/i\ #ifndef DBL_MIN'\ ! -e '/[ ]DBL_MIN[ ]/a\ #endif'\ ! -e '/[ ]DBL_MAX[ ]/i\ #ifndef DBL_MAX'\ ! -e '/[ ]DBL_MAX[ ]/a\ #endif'\ ! -e '/[ ]DBL_DIG[ ]/i\ #ifndef DBL_DIG'\ ! -e '/[ ]DBL_DIG[ ]/a\ #endif'\ ! ${LIB}/$file > ${LIB}/${file}.sed ! rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file ! fi ! if cmp $file ${LIB}/$file >/dev/null 2>&1; then ! echo Deleting ${LIB}/$file\; no fixes were needed. ! rm -f ${LIB}/$file ! fi fi ! done # In math.h, put #ifndefs around things that might be defined in a gcc *************** *** 1198,1201 **** --- 1223,1245 ---- fi + # Fix getopt declarations in stdio.h and stdlib.h on Alpha OSF/1. + for file in stdio.h stdlib.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 + echo Fixing $file, getopt declaration + sed -e 's/getopt(int, char \*\[\],char \*)/getopt(int, char *const[], const char *)/' \ + ${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 two files on SunOS 4 are included by other files # in the same directory, using "...". So we must make sure they exist *************** *** 1267,1273 **** # 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 --- 1311,1315 ---- # 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 Xm.acorn/XmP.h do if [ -r $file ] && [ ! -r ${LIB}/$file ]; then *************** *** 1307,1310 **** --- 1349,1381 ---- done fi + + # Make sure that any include files referenced using double quotes + # exist in the fixed directory. This comes last since otherwise + # we might end up deleting some of these files "because they don't + # need any change." + while [ -n "$required" ]; do + newreq= + set x $required + shift + while [ $# != 0 ]; do + # $1 is the directory to copy from, $2 is the unfixed file, + # $3 is the fixed file name. + cd ${INPUT} + cd $1 + if [ -r $2 ] && [ ! -r $3 ]; then + cp $2 $3 >/dev/null 2>&1 || echo "Can't copy $2" + chmod +w $3 2>/dev/null + chmod a+r $3 2>/dev/null + echo Copied $2 + for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' $3 | sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'`; do + dir=`echo $2 | sed -e s'|/[^/]*$||'` + dir2=`echo $3 | sed -e s'|/[^/]*$||'` + newreq="$newreq $1 $dir/$include $dir2/$include" + done + fi + shift; shift; shift + done + required=$newreq + done echo 'Cleaning up DONE files.' 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.2/fixproto gcc-2.5.3/fixproto *** gcc-2.5.2/fixproto Tue Oct 26 02:48:50 1993 --- gcc-2.5.3/fixproto Thu Nov 11 05:59:35 1993 *************** *** 136,141 **** for d in $dirs ; do # Find all directories under $d, relative to $d, excluding $d itself. subdirs="$subdirs "`cd $rel_source_dir/$d; find . -type d -print | \ ! sed -e '/^\.$/d' -e "s|^\./|${d}/|" -e 's|^\./||'` links= links=`cd $rel_source_dir; find $d/. -type l -print | \ --- 136,144 ---- for d in $dirs ; do # Find all directories under $d, relative to $d, excluding $d itself. + # Assume directory names ending in CC or containing ++ are + # for C++, so skip those. subdirs="$subdirs "`cd $rel_source_dir/$d; find . -type d -print | \ ! sed -e '/^\.$/d' -e "s|^\./|${d}/|" -e 's|^\./||' \ ! -e '/CC$/d' -e '/\+\+/d'` links= links=`cd $rel_source_dir; find $d/. -type l -print | \ *************** *** 190,193 **** --- 193,201 ---- new_files_to_check="" for file in $files_to_check ; do + xxfile=`echo $file | sed -e 's|/\([^/\.][^/\.]*\)/\.\./|/|'` + # Just in case we have edited out a symbolic link + if [ -f $src_dir_std/$file -a -f $src_dir_std/$xxfile ] ; then + file=$xxfile + fi case " $rel_source_files " in *" ${file} "*) *************** *** 195,204 **** ;; *) ! new_files_to_check="$new_files_to_check `sed -n \ -e 's@ @ @g' \ ! -e 's@^ *# *include *<\([^>]*\)>.*$@\1@p' \ ! -e 's@^ *# *include *\"\([^\"]*\)\".*$@\1@p' \ ! <$src_dir_std/$file`" ! rel_source_files="$rel_source_files $file" ;; esac --- 203,217 ---- ;; *) ! if test -f $src_dir_std/$file ; then ! rel_dir=`echo $file | sed -n -e 's|^\(.*/\)[^/]*$|\1|p'` ! # For #include "foo.h", that might be either "foo.h" ! # or "${rel_dir}foo.h (or something bogus). ! new_files_to_check="$new_files_to_check "`sed -n \ -e 's@ @ @g' \ ! -e 's@^ *# *include *<\([^>]*\)>.*$@\1@p' -e \ ! 's@^ *# *include *\"\([^\"]*\)\".*$@\1 '$rel_dir'\1@p'\ ! <$src_dir_std/$file` ! rel_source_files="$rel_source_files $file" ! fi ;; esac *************** *** 250,254 **** required_list="getpwnam getpwuid" ;; setjmp.h) ! required_list="longjmp setjmp siglongjmp sigsetjmp" ;; signal.h) # Left out signal() - its prototype is too complex for us! --- 263,268 ---- required_list="getpwnam getpwuid" ;; setjmp.h) ! # Left out siglongjmp sigsetjmp - these depend on sigjmp_buf. ! required_list="longjmp setjmp" ;; signal.h) # Left out signal() - its prototype is too complex for us! *************** *** 259,264 **** 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" ! if grep _flsbuf <$abs_source_file >/dev/null ; then required_list="$required_list _flsbuf _filbuf" fi --- 273,281 ---- required_list="kill raise" ;; stdio.h) ! # Omitted vfprintf, vprintf, vsprintf because it's hard ! # to specify the right data type, and because not all systems ! # have them. ! 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" ! if grep '[^_a-zA-Z0-9]_flsbuf' <$abs_source_file >/dev/null; then required_list="$required_list _flsbuf _filbuf" 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.2/function.c gcc-2.5.3/function.c *** gcc-2.5.2/function.c Wed Oct 27 04:06:09 1993 --- gcc-2.5.3/function.c Thu Nov 4 13:29:06 1993 *************** *** 4861,4864 **** --- 4861,4870 ---- last_ptr = copy_to_reg (gen_rtx (MEM, Pmode, memory_address (Pmode, last_ptr))); + + /* If we are not optimizing, ensure that we know that this + piece of context is live over the entire function. */ + if (! optimize) + save_expr_regs = gen_rtx (EXPR_LIST, VOIDmode, last_ptr, + save_expr_regs); } 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.2/gcc.c gcc-2.5.3/gcc.c *** gcc-2.5.2/gcc.c Tue Oct 26 14:52:47 1993 --- gcc-2.5.3/gcc.c Tue Nov 2 18:02:35 1993 *************** *** 245,249 **** %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. --- 245,251 ---- %X Output the accumulated linker options specified by compilations. %Y Output the accumulated assembler options specified by compilations. ! %v1 Substitute the major version number of GCC. ! (For version 2.5.n, this is 2.) ! %v2 Substitute the minor version number of GCC. (For version 2.5.n, this is 5.) %a process ASM_SPEC as a spec. *************** *** 447,451 **** %{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} \ --- 449,453 ---- %{C:%{!E:%eGNU C does not support -C without using -E}}\ %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d}\ ! -undef -D__GNUC__=%v1 -D__GNUC_MINOR__=%v2\ %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\ %{!undef:%{!ansi:%p} %P} %{trigraphs} \ *************** *** 468,472 **** %{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}\ --- 470,474 ---- %{C:%{!E:%eGNU C does not support -C without using -E}}\ %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d}\ ! -undef -D__GNUC__=%v1 %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\ %{!undef:%{!ansi:%p} %P} %{trigraphs}\ %c %{O*:%{!O0:-D__OPTIMIZE__}} %{traditional} %{ftraditional:-traditional}\ *************** *** 480,484 **** %{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}\ --- 482,486 ---- %{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__=%v1 -D__GNUC_MINOR__=%v2\ %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\ %{!undef:%{!ansi:%p} %P} %{trigraphs}\ *************** *** 504,508 **** %{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}\ --- 506,510 ---- %{C:%{!E:%eGNU C does not support -C without using -E}}\ %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} \ ! -undef -D__GNUC__=%v1 -D__GNUC_MINOR__=%v2\ %{ansi:-trigraphs -$ -D__STRICT_ANSI__}\ %{!undef:%{!ansi:%p} %P} %{trigraphs}\ *************** *** 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}\ --- 520,524 ---- %{C:%{!E:%eGNU C++ does not support -C without using -E}}\ %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} \ ! -undef -D__GNUC__=%v1 -D__GNUG__=%v1 -D__cplusplus -D__GNUC_MINOR__=%v2\ %{ansi:-trigraphs -$ -D__STRICT_ANSI__} %{!undef:%{!ansi:%p} %P}\ %c %{O*:%{!O0:-D__OPTIMIZE__}} %{traditional} %{ftraditional:-traditional}\ *************** *** 3353,3362 **** 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++; --- 3355,3369 ---- case 'v': { ! int c1 = *p++; /* Select first or second version number. */ ! char *p = spec_version; char *q, *copy; ! /* If desired, advance to second version number. */ ! if (c1 == '2') ! { ! /* Set P after the first period. */ ! while (*p != '.') p++; ! p++; ! } ! /* Set Q at the next period or at the end. */ q = p; while (*q != '.' && *q != 0) q++; 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.2/gcc.cps gcc-2.5.3/gcc.cps *** gcc-2.5.2/gcc.cps Thu Oct 14 04:56:50 1993 --- gcc-2.5.3/gcc.cps Thu Nov 11 09:03:49 1993 *************** *** 1,33 **** \initial {!} ! \entry {\samp {!} in constraint}{258} \initial {#} ! \entry {\samp {#} in constraint}{259} ! \entry {\code {#} in template}{251} ! \entry {\code {#pragma}}{398} \entry {\code {#pragma implementation}, implied}{149} ! \entry {\code {#pragma}, reason for not using}{127} \initial {$} \entry {$}{129} \initial {%} ! \entry {\samp {%} in constraint}{259} ! \entry {\samp {%} in template}{249} \initial {&} ! \entry {\samp {&} in constraint}{259} \initial {'} ! \entry {'}{162} \initial {(} ! \entry {(nil)}{202} \initial {*} ! \entry {\samp {*} in constraint}{260} ! \entry {\code {*} in template}{251} \initial {/} ! \entry {\samp {/i} in RTL dump}{205} ! \entry {\samp {/s} in RTL dump}{205, 206} ! \entry {\samp {/u} in RTL dump}{205} ! \entry {\samp {/v} in RTL dump}{205} \initial {=} ! \entry {\samp {=} in constraint}{259} \initial {?} ! \entry {\samp {?} in constraint}{258} \entry {\code {?:} extensions}{115, 116} \entry {?: side effect}{117} --- 1,33 ---- \initial {!} ! \entry {\samp {!} in constraint}{260} \initial {#} ! \entry {\samp {#} in constraint}{261} ! \entry {\code {#} in template}{253} ! \entry {\code {#pragma}}{401} \entry {\code {#pragma implementation}, implied}{149} ! \entry {\code {#pragma}, reason for not using}{128} \initial {$} \entry {$}{129} \initial {%} ! \entry {\samp {%} in constraint}{261} ! \entry {\samp {%} in template}{251} \initial {&} ! \entry {\samp {&} in constraint}{261} \initial {'} ! \entry {'}{163} \initial {(} ! \entry {(nil)}{204} \initial {*} ! \entry {\samp {*} in constraint}{262} ! \entry {\code {*} in template}{253} \initial {/} ! \entry {\samp {/i} in RTL dump}{207} ! \entry {\samp {/s} in RTL dump}{207, 208} ! \entry {\samp {/u} in RTL dump}{207} ! \entry {\samp {/v} in RTL dump}{207} \initial {=} ! \entry {\samp {=} in constraint}{261} \initial {?} ! \entry {\samp {?} in constraint}{260} \entry {\code {?:} extensions}{115, 116} \entry {?: side effect}{117} *************** *** 34,255 **** \initial {{\_}} \entry {\samp {{\_}} in variables in macros}{114} ! \entry {\code {{\_}{\_}bb{\_}init{\_}func}}{350} \entry {\code {{\_}{\_}builtin{\_}apply}}{113} \entry {\code {{\_}{\_}builtin{\_}apply{\_}args}}{113} ! \entry {\code {{\_}{\_}builtin{\_}args{\_}info}}{352} ! \entry {\code {{\_}{\_}builtin{\_}classify{\_}type}}{352} ! \entry {\code {{\_}{\_}builtin{\_}next{\_}arg}}{352} \entry {\code {{\_}{\_}builtin{\_}return}}{113} ! \entry {\code {{\_}{\_}builtin{\_}saveregs}}{351} ! \entry {\code {{\_}{\_}CTOR{\_}LIST{\_}{\_}}}{378} ! \entry {\code {{\_}{\_}DTOR{\_}LIST{\_}{\_}}}{378} \initial {{\tt\char43}} ! \entry {\samp {{\tt\char43}} in constraint}{259} \initial {{\tt\gtr}} ! \entry {\samp {{\tt\gtr}} in constraint}{254} \entry {\code {{\tt\gtr}?}}{147} \initial {{\tt\indexbackslash }} ! \entry {{\tt\indexbackslash }}{250} \initial {{\tt\less}} ! \entry {\samp {{\tt\less}} in constraint}{253} \entry {\code {{\tt\less}?}}{147} \initial {0} ! \entry {\samp {0} in constraint}{255} \initial {3} ! \entry {3b1 installation}{96} \initial {A} ! \entry {\code {abort}}{25, 191} ! \entry {\code {abs}}{25, 220} ! \entry {\code {abs} and attributes}{293} ! \entry {\code {abs\var {m}2} instruction pattern}{268} ! \entry {absolute value}{220} ! \entry {access to operands}{202} ! \entry {accessors}{202} ! \entry {\code {ACCUMULATE{\_}OUTGOING{\_}ARGS}}{338} ! \entry {\code {ACCUMULATE{\_}OUTGOING{\_}ARGS} and stack frames}{348} ! \entry {\code {ADDITIONAL{\_}REGISTER{\_}NAMES}}{381} ! \entry {\code {add\var {m}3} instruction pattern}{267} ! \entry {\code {addr{\_}diff{\_}vec}}{229} ! \entry {\code {addr{\_}diff{\_}vec}, length of}{298} ! \entry {\code {addr{\_}vec}}{229} ! \entry {\code {addr{\_}vec}, length of}{298} ! \entry {\code {address}}{249} ! \entry {address constraints}{255} \entry {address of a label}{109} ! \entry {\code {ADDRESS{\_}COST}}{364} ! \entry {\code {address{\_}operand}}{255} ! \entry {addressing modes}{359} ! \entry {\code {ADJUST{\_}COST}}{367} ! \entry {\code {ADJUST{\_}INSN{\_}LENGTH}}{298} ! \entry {aggregates as return values}{345} \entry {\code {aligned} attribute}{131} \entry {alignment}{130} ! \entry {\code {ALL{\_}REGS}}{327} ! \entry {Alliant}{159} \entry {\code {alloca}}{25} ! \entry {\code {alloca} and SunOs}{87} \entry {\code {alloca} vs variable-length arrays}{119} \entry {\code {alloca}, for SunOs}{96} \entry {\code {alloca}, for Unos}{97} ! \entry {\code {allocate{\_}stack} instruction pattern}{274} ! \entry {\code {ALLOCATE{\_}TRAMPOLINE}}{354} \entry {alternate keywords}{141} \entry {AMD29K options}{54} ! \entry {analysis, data flow}{197} ! \entry {\code {and}}{219} ! \entry {\code {and} and attributes}{292} ! \entry {\code {and}, canonicalization of}{279} ! \entry {\code {and\var {m}3} instruction pattern}{267} \entry {ANSI support}{24} ! \entry {apostrophes}{162} ! \entry {\code {APPLY{\_}RESULT{\_}SIZE}}{344} ! \entry {\code {ARG{\_}POINTER{\_}REGNUM}}{335} ! \entry {\code {ARG{\_}POINTER{\_}REGNUM} and virtual registers}{215} ! \entry {\code {arg{\_}pointer{\_}rtx}}{336} ! \entry {\code {ARGS{\_}GROW{\_}DOWNWARD}}{333} ! \entry {argument passing}{193} \entry {arguments in frame (88k)}{56} ! \entry {arguments in registers}{340} ! \entry {arguments on stack}{338} ! \entry {arithmetic libraries}{194} ! \entry {arithmetic shift}{220} ! \entry {arithmetic simplifications}{195} ! \entry {arithmetic, in RTL}{218} \entry {arrays of length zero}{118} \entry {arrays of variable length}{119} \entry {arrays, non-lvalue}{121} ! \entry {\code {ashift}}{220} ! \entry {\code {ashift} and attributes}{293} ! \entry {\code {ashiftrt}}{220} ! \entry {\code {ashiftrt} and attributes}{293} ! \entry {\code {ashl\var {m}3} instruction pattern}{267} ! \entry {\code {ashr\var {m}3} instruction pattern}{268} \entry {\code {asm} expressions}{133} ! \entry {\code {ASM{\_}APP{\_}OFF}}{371} ! \entry {\code {ASM{\_}APP{\_}ON}}{371} ! \entry {\code {ASM{\_}BYTE{\_}OP}}{372} ! \entry {\code {ASM{\_}CLOSE{\_}PAREN}}{373} ! \entry {\code {ASM{\_}COMMENT{\_}START}}{371} ! \entry {\code {ASM{\_}DECLARE{\_}FUNCTION{\_}NAME}}{375} ! \entry {\code {ASM{\_}DECLARE{\_}FUNCTION{\_}SIZE}}{375} ! \entry {\code {ASM{\_}DECLARE{\_}OBJECT{\_}NAME}}{375} ! \entry {\code {ASM{\_}FILE{\_}END}}{370} ! \entry {\code {ASM{\_}FILE{\_}START}}{370} ! \entry {\code {ASM{\_}FINAL{\_}SPEC}}{306} ! \entry {\code {ASM{\_}FORMAT{\_}PRIVATE{\_}NAME}}{377} ! \entry {\code {asm{\_}fprintf}}{383} ! \entry {\code {ASM{\_}GENERATE{\_}INTERNAL{\_}LABEL}}{376} ! \entry {\code {ASM{\_}GLOBALIZE{\_}LABEL}}{375} ! \entry {\code {ASM{\_}IDENTIFY{\_}GCC}}{370} ! \entry {\code {asm{\_}input}}{229} ! \entry {\code {ASM{\_}NO{\_}SKIP{\_}IN{\_}TEXT}}{385} ! \entry {\code {asm{\_}noperands}}{235} ! \entry {\code {ASM{\_}OPEN{\_}PAREN}}{373} ! \entry {\code {asm{\_}operands}, RTL sharing}{241} ! \entry {\code {asm{\_}operands}, usage}{230} ! \entry {\code {ASM{\_}OUTPUT{\_}ADDR{\_}DIFF{\_}ELT}}{384} ! \entry {\code {ASM{\_}OUTPUT{\_}ADDR{\_}VEC{\_}ELT}}{384} ! \entry {\code {ASM{\_}OUTPUT{\_}ALIGN}}{385} ! \entry {\code {ASM{\_}OUTPUT{\_}ALIGN{\_}CODE}}{385} ! \entry {\code {ASM{\_}OUTPUT{\_}ALIGNED{\_}COMMON}}{374} ! \entry {\code {ASM{\_}OUTPUT{\_}ALIGNED{\_}LOCAL}}{375} ! \entry {\code {ASM{\_}OUTPUT{\_}ASCII}}{372} ! \entry {\code {ASM{\_}OUTPUT{\_}BYTE}}{372} ! \entry {\code {ASM{\_}OUTPUT{\_}CASE{\_}END}}{385} ! \entry {\code {ASM{\_}OUTPUT{\_}CASE{\_}LABEL}}{385} ! \entry {\code {ASM{\_}OUTPUT{\_}CHAR}}{372} ! \entry {\code {ASM{\_}OUTPUT{\_}COMMON}}{374} ! \entry {\code {ASM{\_}OUTPUT{\_}CONSTRUCTOR}}{380} ! \entry {\code {ASM{\_}OUTPUT{\_}DESTRUCTOR}}{380} ! \entry {\code {ASM{\_}OUTPUT{\_}DOUBLE}}{372} ! \entry {\code {ASM{\_}OUTPUT{\_}DOUBLE{\_}INT}}{372} ! \entry {\code {ASM{\_}OUTPUT{\_}EXTERNAL}}{376} ! \entry {\code {ASM{\_}OUTPUT{\_}EXTERNAL{\_}LIBCALL}}{376} ! \entry {\code {ASM{\_}OUTPUT{\_}FLOAT}}{372} ! \entry {\code {ASM{\_}OUTPUT{\_}IDENT}}{371} ! \entry {\code {ASM{\_}OUTPUT{\_}INT}}{372} ! \entry {\code {ASM{\_}OUTPUT{\_}INTERNAL{\_}LABEL}}{376} ! \entry {\code {ASM{\_}OUTPUT{\_}LABEL}}{375} ! \entry {\code {ASM{\_}OUTPUT{\_}LABELREF}}{376} ! \entry {\code {ASM{\_}OUTPUT{\_}LOCAL}}{374} ! \entry {\code {ASM{\_}OUTPUT{\_}LONG{\_}DOUBLE}}{372} ! \entry {\code {ASM{\_}OUTPUT{\_}LOOP{\_}ALIGN}}{385} ! \entry {\code {ASM{\_}OUTPUT{\_}OPCODE}}{381} ! \entry {\code {ASM{\_}OUTPUT{\_}POOL{\_}PROLOGUE}}{372} ! \entry {\code {ASM{\_}OUTPUT{\_}QUADRUPLE{\_}INT}}{372} ! \entry {\code {ASM{\_}OUTPUT{\_}REG{\_}POP}}{384} ! \entry {\code {ASM{\_}OUTPUT{\_}REG{\_}PUSH}}{384} ! \entry {\code {ASM{\_}OUTPUT{\_}SHARED{\_}COMMON}}{374} ! \entry {\code {ASM{\_}OUTPUT{\_}SHARED{\_}LOCAL}}{375} ! \entry {\code {ASM{\_}OUTPUT{\_}SHORT}}{372} ! \entry {\code {ASM{\_}OUTPUT{\_}SKIP}}{385} ! \entry {\code {ASM{\_}OUTPUT{\_}SOURCE{\_}FILENAME}}{371} ! \entry {\code {ASM{\_}OUTPUT{\_}SOURCE{\_}LINE}}{371} ! \entry {\code {ASM{\_}OUTPUT{\_}SPECIAL{\_}POOL{\_}ENTRY}}{373} ! \entry {\code {ASM{\_}SPEC}}{306} ! \entry {\code {ASM{\_}STABD{\_}OP}}{387} ! \entry {\code {ASM{\_}STABN{\_}OP}}{387} ! \entry {\code {ASM{\_}STABS{\_}OP}}{387} ! \entry {\code {assemble{\_}name}}{375} ! \entry {assembler format}{370} \entry {assembler instructions}{133} ! \entry {assembler instructions in RTL}{230} \entry {assembler names for identifiers}{137} \entry {assembler syntax, 88k}{57} ! \entry {\code {ASSEMBLER{\_}DIALECT}}{383} ! \entry {assembly code, invalid}{173} ! \entry {assigning attribute values to insns}{294} ! \entry {asterisk in template}{251} ! \entry {\code {atof}}{392} ! \entry {\code {attr}}{295} ! \entry {\code {attr{\_}flag}}{294} ! \entry {attribute expressions}{292} \entry {attribute of variables}{131} ! \entry {attribute specifications}{296} ! \entry {attribute specifications example}{296} ! \entry {attributes, defining}{290} ! \entry {autoincrement addressing, availability}{191} ! \entry {autoincrement/decrement addressing}{253} ! \entry {autoincrement/decrement analysis}{197} \entry {automatic \code {inline} for C{\tt\char43}{\tt\char43} member fns}{132} \initial {B} ! \entry {backslash}{250} ! \entry {backtrace for bug reports}{177} ! \entry {\code {barrier}}{233} ! \entry {\code {BASE{\_}REG{\_}CLASS}}{328} ! \entry {basic blocks}{197} ! \entry {\code {bcmp}}{403} ! \entry {\code {b\var {cond}} instruction pattern}{270} ! \entry {\code {bcopy}, implicit usage}{357} ! \entry {\code {BIGGEST{\_}ALIGNMENT}}{314} ! \entry {\code {BIGGEST{\_}FIELD{\_}ALIGNMENT}}{314} \entry {Bison parser generator}{85} ! \entry {bit fields}{222} \entry {bit shift overflow (88k)}{58} ! \entry {\code {BITFIELD{\_}NBYTES{\_}LIMITED}}{316} ! \entry {\code {BITS{\_}BIG{\_}ENDIAN}}{312} ! \entry {\code {BITS{\_}BIG{\_}ENDIAN}, effect on \code {sign{\_}extract}}{223} ! \entry {\code {BITS{\_}PER{\_}UNIT}}{312} ! \entry {\code {BITS{\_}PER{\_}WORD}}{312} ! \entry {bitwise complement}{219} ! \entry {bitwise exclusive-or}{220} ! \entry {bitwise inclusive-or}{220} ! \entry {bitwise logical-and}{219} ! \entry {\code {BLKmode}}{209} ! \entry {\code {BLKmode}, and function return values}{240} ! \entry {\code {BLOCK{\_}PROFILER}}{350} ! \entry {\code {BLOCK{\_}PROFILER{\_}CODE}}{351} ! \entry {\code {BRANCH{\_}COST}}{365} ! \entry {\code {break{\_}out{\_}memory{\_}refs}}{361} ! \entry {bug criteria}{173} ! \entry {bug report mailing lists}{174} ! \entry {bugs}{173} \entry {bugs, known}{151} \entry {builtin functions}{25} \entry {byte writes (29k)}{54} ! \entry {\code {byte{\_}mode}}{212} ! \entry {\code {BYTES{\_}BIG{\_}ENDIAN}}{312} ! \entry {\code {bzero}}{403} ! \entry {\code {bzero}, implicit usage}{357} \initial {C} \entry {C compilation options}{17} --- 34,256 ---- \initial {{\_}} \entry {\samp {{\_}} in variables in macros}{114} ! \entry {\code {{\_}{\_}bb{\_}init{\_}func}}{352} \entry {\code {{\_}{\_}builtin{\_}apply}}{113} \entry {\code {{\_}{\_}builtin{\_}apply{\_}args}}{113} ! \entry {\code {{\_}{\_}builtin{\_}args{\_}info}}{354} ! \entry {\code {{\_}{\_}builtin{\_}classify{\_}type}}{354} ! \entry {\code {{\_}{\_}builtin{\_}next{\_}arg}}{354} \entry {\code {{\_}{\_}builtin{\_}return}}{113} ! \entry {\code {{\_}{\_}builtin{\_}saveregs}}{353} ! \entry {\code {{\_}{\_}CTOR{\_}LIST{\_}{\_}}}{380} ! \entry {\code {{\_}{\_}DTOR{\_}LIST{\_}{\_}}}{380} \initial {{\tt\char43}} ! \entry {\samp {{\tt\char43}} in constraint}{261} \initial {{\tt\gtr}} ! \entry {\samp {{\tt\gtr}} in constraint}{256} \entry {\code {{\tt\gtr}?}}{147} \initial {{\tt\indexbackslash }} ! \entry {{\tt\indexbackslash }}{252} \initial {{\tt\less}} ! \entry {\samp {{\tt\less}} in constraint}{255} \entry {\code {{\tt\less}?}}{147} \initial {0} ! \entry {\samp {0} in constraint}{257} \initial {3} ! \entry {3b1 installation}{97} \initial {A} ! \entry {\code {abort}}{25, 193} ! \entry {\code {abs}}{25, 222} ! \entry {\code {abs} and attributes}{295} ! \entry {\code {abs\var {m}2} instruction pattern}{270} ! \entry {absolute value}{222} ! \entry {access to operands}{204} ! \entry {accessors}{204} ! \entry {\code {ACCUMULATE{\_}OUTGOING{\_}ARGS}}{340} ! \entry {\code {ACCUMULATE{\_}OUTGOING{\_}ARGS} and stack frames}{350} ! \entry {\code {ADDITIONAL{\_}REGISTER{\_}NAMES}}{383} ! \entry {\code {add\var {m}3} instruction pattern}{269} ! \entry {\code {addr{\_}diff{\_}vec}}{231} ! \entry {\code {addr{\_}diff{\_}vec}, length of}{300} ! \entry {\code {addr{\_}vec}}{231} ! \entry {\code {addr{\_}vec}, length of}{300} ! \entry {\code {address}}{251} ! \entry {address constraints}{257} \entry {address of a label}{109} ! \entry {\code {ADDRESS{\_}COST}}{366} ! \entry {\code {address{\_}operand}}{257} ! \entry {addressing modes}{361} ! \entry {\code {ADJUST{\_}COST}}{369} ! \entry {\code {ADJUST{\_}INSN{\_}LENGTH}}{300} ! \entry {aggregates as return values}{347} \entry {\code {aligned} attribute}{131} \entry {alignment}{130} ! \entry {\code {ALL{\_}REGS}}{329} ! \entry {Alliant}{160} \entry {\code {alloca}}{25} ! \entry {\code {alloca} and SunOs}{88} \entry {\code {alloca} vs variable-length arrays}{119} \entry {\code {alloca}, for SunOs}{96} \entry {\code {alloca}, for Unos}{97} ! \entry {\code {allocate{\_}stack} instruction pattern}{276} ! \entry {\code {ALLOCATE{\_}TRAMPOLINE}}{356} \entry {alternate keywords}{141} \entry {AMD29K options}{54} ! \entry {analysis, data flow}{199} ! \entry {\code {and}}{221} ! \entry {\code {and} and attributes}{294} ! \entry {\code {and}, canonicalization of}{281} ! \entry {\code {and\var {m}3} instruction pattern}{269} \entry {ANSI support}{24} ! \entry {apostrophes}{163} ! \entry {\code {APPLY{\_}RESULT{\_}SIZE}}{346} ! \entry {\code {ARG{\_}POINTER{\_}REGNUM}}{337} ! \entry {\code {ARG{\_}POINTER{\_}REGNUM} and virtual registers}{217} ! \entry {\code {arg{\_}pointer{\_}rtx}}{338} ! \entry {\code {ARGS{\_}GROW{\_}DOWNWARD}}{335} ! \entry {argument passing}{195} \entry {arguments in frame (88k)}{56} ! \entry {arguments in registers}{342} ! \entry {arguments on stack}{340} ! \entry {arithmetic libraries}{196} ! \entry {arithmetic shift}{222} ! \entry {arithmetic simplifications}{197} ! \entry {arithmetic, in RTL}{220} \entry {arrays of length zero}{118} \entry {arrays of variable length}{119} \entry {arrays, non-lvalue}{121} ! \entry {\code {ashift}}{222} ! \entry {\code {ashift} and attributes}{295} ! \entry {\code {ashiftrt}}{222} ! \entry {\code {ashiftrt} and attributes}{295} ! \entry {\code {ashl\var {m}3} instruction pattern}{269} ! \entry {\code {ashr\var {m}3} instruction pattern}{270} \entry {\code {asm} expressions}{133} ! \entry {\code {ASM{\_}APP{\_}OFF}}{373} ! \entry {\code {ASM{\_}APP{\_}ON}}{373} ! \entry {\code {ASM{\_}BYTE{\_}OP}}{374} ! \entry {\code {ASM{\_}CLOSE{\_}PAREN}}{375} ! \entry {\code {ASM{\_}COMMENT{\_}START}}{373} ! \entry {\code {ASM{\_}DECLARE{\_}FUNCTION{\_}NAME}}{377} ! \entry {\code {ASM{\_}DECLARE{\_}FUNCTION{\_}SIZE}}{377} ! \entry {\code {ASM{\_}DECLARE{\_}OBJECT{\_}NAME}}{377} ! \entry {\code {ASM{\_}FILE{\_}END}}{372} ! \entry {\code {ASM{\_}FILE{\_}START}}{372} ! \entry {\code {ASM{\_}FINAL{\_}SPEC}}{308} ! \entry {\code {ASM{\_}FINISH{\_}DECLARE{\_}OBJECT}}{377} ! \entry {\code {ASM{\_}FORMAT{\_}PRIVATE{\_}NAME}}{379} ! \entry {\code {asm{\_}fprintf}}{385} ! \entry {\code {ASM{\_}GENERATE{\_}INTERNAL{\_}LABEL}}{379} ! \entry {\code {ASM{\_}GLOBALIZE{\_}LABEL}}{378} ! \entry {\code {ASM{\_}IDENTIFY{\_}GCC}}{372} ! \entry {\code {asm{\_}input}}{231} ! \entry {\code {ASM{\_}NO{\_}SKIP{\_}IN{\_}TEXT}}{388} ! \entry {\code {asm{\_}noperands}}{237} ! \entry {\code {ASM{\_}OPEN{\_}PAREN}}{375} ! \entry {\code {asm{\_}operands}, RTL sharing}{243} ! \entry {\code {asm{\_}operands}, usage}{232} ! \entry {\code {ASM{\_}OUTPUT{\_}ADDR{\_}DIFF{\_}ELT}}{386} ! \entry {\code {ASM{\_}OUTPUT{\_}ADDR{\_}VEC{\_}ELT}}{387} ! \entry {\code {ASM{\_}OUTPUT{\_}ALIGN}}{388} ! \entry {\code {ASM{\_}OUTPUT{\_}ALIGN{\_}CODE}}{387} ! \entry {\code {ASM{\_}OUTPUT{\_}ALIGNED{\_}COMMON}}{376} ! \entry {\code {ASM{\_}OUTPUT{\_}ALIGNED{\_}LOCAL}}{377} ! \entry {\code {ASM{\_}OUTPUT{\_}ASCII}}{374} ! \entry {\code {ASM{\_}OUTPUT{\_}BYTE}}{374} ! \entry {\code {ASM{\_}OUTPUT{\_}CASE{\_}END}}{387} ! \entry {\code {ASM{\_}OUTPUT{\_}CASE{\_}LABEL}}{387} ! \entry {\code {ASM{\_}OUTPUT{\_}CHAR}}{374} ! \entry {\code {ASM{\_}OUTPUT{\_}COMMON}}{376} ! \entry {\code {ASM{\_}OUTPUT{\_}CONSTRUCTOR}}{382} ! \entry {\code {ASM{\_}OUTPUT{\_}DESTRUCTOR}}{383} ! \entry {\code {ASM{\_}OUTPUT{\_}DOUBLE}}{374} ! \entry {\code {ASM{\_}OUTPUT{\_}DOUBLE{\_}INT}}{374} ! \entry {\code {ASM{\_}OUTPUT{\_}EXTERNAL}}{378} ! \entry {\code {ASM{\_}OUTPUT{\_}EXTERNAL{\_}LIBCALL}}{378} ! \entry {\code {ASM{\_}OUTPUT{\_}FLOAT}}{374} ! \entry {\code {ASM{\_}OUTPUT{\_}IDENT}}{373} ! \entry {\code {ASM{\_}OUTPUT{\_}INT}}{374} ! \entry {\code {ASM{\_}OUTPUT{\_}INTERNAL{\_}LABEL}}{378} ! \entry {\code {ASM{\_}OUTPUT{\_}LABEL}}{377} ! \entry {\code {ASM{\_}OUTPUT{\_}LABELREF}}{378} ! \entry {\code {ASM{\_}OUTPUT{\_}LOCAL}}{376} ! \entry {\code {ASM{\_}OUTPUT{\_}LONG{\_}DOUBLE}}{374} ! \entry {\code {ASM{\_}OUTPUT{\_}LOOP{\_}ALIGN}}{387} ! \entry {\code {ASM{\_}OUTPUT{\_}OPCODE}}{384} ! \entry {\code {ASM{\_}OUTPUT{\_}POOL{\_}PROLOGUE}}{374} ! \entry {\code {ASM{\_}OUTPUT{\_}QUADRUPLE{\_}INT}}{374} ! \entry {\code {ASM{\_}OUTPUT{\_}REG{\_}POP}}{386} ! \entry {\code {ASM{\_}OUTPUT{\_}REG{\_}PUSH}}{386} ! \entry {\code {ASM{\_}OUTPUT{\_}SHARED{\_}COMMON}}{376} ! \entry {\code {ASM{\_}OUTPUT{\_}SHARED{\_}LOCAL}}{377} ! \entry {\code {ASM{\_}OUTPUT{\_}SHORT}}{374} ! \entry {\code {ASM{\_}OUTPUT{\_}SKIP}}{388} ! \entry {\code {ASM{\_}OUTPUT{\_}SOURCE{\_}FILENAME}}{373} ! \entry {\code {ASM{\_}OUTPUT{\_}SOURCE{\_}LINE}}{373} ! \entry {\code {ASM{\_}OUTPUT{\_}SPECIAL{\_}POOL{\_}ENTRY}}{375} ! \entry {\code {ASM{\_}SPEC}}{308} ! \entry {\code {ASM{\_}STABD{\_}OP}}{390} ! \entry {\code {ASM{\_}STABN{\_}OP}}{390} ! \entry {\code {ASM{\_}STABS{\_}OP}}{389} ! \entry {\code {assemble{\_}name}}{377} ! \entry {assembler format}{372} \entry {assembler instructions}{133} ! \entry {assembler instructions in RTL}{232} \entry {assembler names for identifiers}{137} \entry {assembler syntax, 88k}{57} ! \entry {\code {ASSEMBLER{\_}DIALECT}}{386} ! \entry {assembly code, invalid}{175} ! \entry {assigning attribute values to insns}{296} ! \entry {asterisk in template}{253} ! \entry {\code {atof}}{394} ! \entry {\code {attr}}{297} ! \entry {\code {attr{\_}flag}}{296} ! \entry {attribute expressions}{294} \entry {attribute of variables}{131} ! \entry {attribute specifications}{298} ! \entry {attribute specifications example}{298} ! \entry {attributes, defining}{292} ! \entry {autoincrement addressing, availability}{193} ! \entry {autoincrement/decrement addressing}{255} ! \entry {autoincrement/decrement analysis}{199} \entry {automatic \code {inline} for C{\tt\char43}{\tt\char43} member fns}{132} \initial {B} ! \entry {backslash}{252} ! \entry {backtrace for bug reports}{179} ! \entry {\code {barrier}}{235} ! \entry {\code {BASE{\_}REG{\_}CLASS}}{330} ! \entry {basic blocks}{199} ! \entry {\code {bcmp}}{405} ! \entry {\code {b\var {cond}} instruction pattern}{272} ! \entry {\code {bcopy}, implicit usage}{359} ! \entry {\code {BIGGEST{\_}ALIGNMENT}}{316} ! \entry {\code {BIGGEST{\_}FIELD{\_}ALIGNMENT}}{316} \entry {Bison parser generator}{85} ! \entry {bit fields}{224} \entry {bit shift overflow (88k)}{58} ! \entry {\code {BITFIELD{\_}NBYTES{\_}LIMITED}}{318} ! \entry {\code {BITS{\_}BIG{\_}ENDIAN}}{314} ! \entry {\code {BITS{\_}BIG{\_}ENDIAN}, effect on \code {sign{\_}extract}}{225} ! \entry {\code {BITS{\_}PER{\_}UNIT}}{314} ! \entry {\code {BITS{\_}PER{\_}WORD}}{314} ! \entry {bitwise complement}{221} ! \entry {bitwise exclusive-or}{222} ! \entry {bitwise inclusive-or}{222} ! \entry {bitwise logical-and}{221} ! \entry {\code {BLKmode}}{211} ! \entry {\code {BLKmode}, and function return values}{242} ! \entry {\code {BLOCK{\_}PROFILER}}{352} ! \entry {\code {BLOCK{\_}PROFILER{\_}CODE}}{353} ! \entry {\code {BRANCH{\_}COST}}{367} ! \entry {\code {break{\_}out{\_}memory{\_}refs}}{363} ! \entry {bug criteria}{175} ! \entry {bug report mailing lists}{176} ! \entry {bugs}{175} \entry {bugs, known}{151} \entry {builtin functions}{25} \entry {byte writes (29k)}{54} ! \entry {\code {byte{\_}mode}}{214} ! \entry {\code {BYTES{\_}BIG{\_}ENDIAN}}{314} ! \entry {\code {bzero}}{405} ! \entry {\code {bzero}, implicit usage}{359} \initial {C} \entry {C compilation options}{17} *************** *** 257,261 **** \entry {C language extensions}{107} \entry {C language, traditional}{25} ! \entry {C statements for assembler output}{251} \entry {\code {C{\_}INCLUDE{\_}PATH}}{72} \entry {\code {c{\tt\char43}{\tt\char43}}}{23} --- 258,262 ---- \entry {C language extensions}{107} \entry {C language, traditional}{25} ! \entry {C statements for assembler output}{253} \entry {\code {C{\_}INCLUDE{\_}PATH}}{72} \entry {\code {c{\tt\char43}{\tt\char43}}}{23} *************** *** 265,269 **** \entry {C{\tt\char43}{\tt\char43} language extensions}{145} \entry {C{\tt\char43}{\tt\char43} member fns, automatically \code {inline}}{132} ! \entry {C{\tt\char43}{\tt\char43} misunderstandings}{166} \entry {C{\tt\char43}{\tt\char43} named return value}{145} \entry {C{\tt\char43}{\tt\char43} options, command line}{27} --- 266,270 ---- \entry {C{\tt\char43}{\tt\char43} language extensions}{145} \entry {C{\tt\char43}{\tt\char43} member fns, automatically \code {inline}}{132} ! \entry {C{\tt\char43}{\tt\char43} misunderstandings}{167} \entry {C{\tt\char43}{\tt\char43} named return value}{145} \entry {C{\tt\char43}{\tt\char43} options, command line}{27} *************** *** 270,572 **** \entry {C{\tt\char43}{\tt\char43} pragmas, effect on inlining}{149} \entry {C{\tt\char43}{\tt\char43} source file suffixes}{23} ! \entry {C{\tt\char43}{\tt\char43} static data, declaring and defining}{166} ! \entry {\code {call}}{226} ! \entry {\code {call} instruction pattern}{271} ! \entry {\code {call} usage}{239} ! \entry {call-clobbered register}{321} ! \entry {call-saved register}{321} ! \entry {call-used register}{321} ! \entry {\code {call{\_}insn}}{233} ! \entry {\code {call{\_}insn} and \samp {/u}}{206} ! \entry {\code {call{\_}pop} instruction pattern}{271} ! \entry {\code {CALL{\_}USED{\_}REGISTERS}}{321} ! \entry {\code {call{\_}used{\_}regs}}{321} ! \entry {\code {call{\_}value} instruction pattern}{271} ! \entry {\code {call{\_}value{\_}pop} instruction pattern}{271} ! \entry {\code {CALLER{\_}SAVE{\_}PROFITABLE}}{346} ! \entry {calling conventions}{333} ! \entry {calling functions in RTL}{239} ! \entry {\code {CAN{\_}ELIMINATE}}{337} ! \entry {canonicalization of instructions}{279} \entry {case labels in initializers}{123} \entry {case ranges}{124} ! \entry {case sensitivity and VMS}{189} ! \entry {\code {CASE{\_}DROPS{\_}THROUGH}}{395} ! \entry {\code {CASE{\_}VALUES{\_}THRESHOLD}}{395} ! \entry {\code {CASE{\_}VECTOR{\_}MODE}}{395} ! \entry {\code {CASE{\_}VECTOR{\_}PC{\_}RELATIVE}}{395} ! \entry {\code {casesi} instruction pattern}{273} \entry {cast to a union}{125} \entry {casts as lvalues}{115} ! \entry {\code {cc{\_}status}}{362} ! \entry {\code {CC{\_}STATUS{\_}MDEP}}{362} ! \entry {\code {CC{\_}STATUS{\_}MDEP{\_}INIT}}{362} ! \entry {\code {cc0}}{216} ! \entry {\code {cc0}, RTL sharing}{241} ! \entry {\code {cc0{\_}rtx}}{217} ! \entry {\code {CC1{\_}SPEC}}{306} ! \entry {\code {CC1PLUS{\_}SPEC}}{306} ! \entry {\code {CCmode}}{209} ! \entry {\code {CDImode}}{209} ! \entry {\code {change{\_}address}}{265} ! \entry {\code {CHAR{\_}TYPE{\_}SIZE}}{318} ! \entry {\code {CHECK{\_}FLOAT{\_}VALUE}}{316} ! \entry {\code {CHImode}}{209} ! \entry {class definitions, register}{327} ! \entry {class preference constraints}{259} ! \entry {\code {CLASS{\_}LIKELY{\_}SPILLED{\_}P}}{331} ! \entry {\code {CLASS{\_}MAX{\_}NREGS}}{332} ! \entry {classes of RTX codes}{203} ! \entry {\code {CLEAR{\_}INSN{\_}CACHE (BEG, END)}}{355} ! \entry {\code {clobber}}{226} ! \entry {\code {cmp\var {m}} instruction pattern}{268} ! \entry {\code {cmpstr\var {m}} instruction pattern}{269} \entry {code generation conventions}{68} ! \entry {code generation RTL sequences}{284} ! \entry {code motion}{197} ! \entry {\code {code{\_}label}}{233} ! \entry {\code {code{\_}label} and \samp {/i}}{207} ! \entry {\code {CODE{\_}LABEL{\_}NUMBER}}{233} ! \entry {codes, RTL expression}{201} ! \entry {\code {COImode}}{209} ! \entry {combiner pass}{216} \entry {command options}{17} ! \entry {common subexpression elimination}{197} ! \entry {\code {compare}}{218} ! \entry {\code {compare}, canonicalization of}{279} \entry {compilation in a separate directory}{88} ! \entry {compiler bugs, reporting}{175} \entry {compiler compared to C{\tt\char43}{\tt\char43} preprocessor}{15} \entry {compiler options, C{\tt\char43}{\tt\char43}}{27} ! \entry {compiler passes and files}{195} \entry {compiler version, specifying}{49} \entry {\code {COMPILER{\_}PATH}}{71} ! \entry {complement, bitwise}{219} \entry {complex numbers}{117} \entry {compound expressions as lvalues}{115} \entry {computed gotos}{109} ! \entry {computing the length of an insn}{297} ! \entry {\code {cond}}{222} ! \entry {\code {cond} and attributes}{292} ! \entry {condition code register}{216} ! \entry {condition code status}{362} ! \entry {condition codes}{221} \entry {conditional expressions as lvalues}{115} \entry {conditional expressions, extensions}{116} ! \entry {\code {CONDITIONAL{\_}REGISTER{\_}USAGE}}{321} ! \entry {conditions, in patterns}{244} ! \entry {configuration file}{401} ! \entry {conflicting types}{164} \entry {\code {const} applied to function}{126} ! \entry {\code {CONST{\_}CALL{\_}P}}{206} ! \entry {\code {CONST{\_}COSTS}}{364} ! \entry {\code {const{\_}double}}{212} ! \entry {\code {const{\_}double}, RTL sharing}{241} ! \entry {\code {CONST{\_}DOUBLE{\_}CHAIN}}{212} ! \entry {\code {CONST{\_}DOUBLE{\_}LOW}}{212} ! \entry {\code {CONST{\_}DOUBLE{\_}MEM}}{212} ! \entry {\code {CONST{\_}DOUBLE{\_}OK{\_}FOR{\_}LETTER{\_}P}}{332} ! \entry {\code {const{\_}int}}{212} ! \entry {\code {const{\_}int} and attribute tests}{292} ! \entry {\code {const{\_}int} and attributes}{292} ! \entry {\code {const{\_}int}, RTL sharing}{241} ! \entry {\code {CONST{\_}OK{\_}FOR{\_}LETTER{\_}P}}{332} ! \entry {\code {const{\_}string}}{213} ! \entry {\code {const{\_}string} and attributes}{292} ! \entry {\code {const{\_}true{\_}rtx}}{212} ! \entry {\code {const0{\_}rtx}}{212} ! \entry {\code {CONST0{\_}RTX}}{213} ! \entry {\code {const1{\_}rtx}}{212} ! \entry {\code {CONST1{\_}RTX}}{213} ! \entry {\code {const2{\_}rtx}}{212} ! \entry {\code {CONST2{\_}RTX}}{213} ! \entry {constant attributes}{299} ! \entry {constant folding}{195} ! \entry {constant folding and floating point}{393} ! \entry {constant propagation}{197} ! \entry {\code {CONSTANT{\_}ADDRESS{\_}P}}{359} ! \entry {\code {CONSTANT{\_}ALIGNMENT}}{314} ! \entry {\code {CONSTANT{\_}P}}{359} ! \entry {\code {CONSTANT{\_}POOL{\_}ADDRESS{\_}P}}{206} ! \entry {constants in constraints}{254} ! \entry {\code {constm1{\_}rtx}}{212} ! \entry {constraint modifier characters}{259} ! \entry {constraint, matching}{255} ! \entry {constraints}{253} ! \entry {constraints, machine specific}{260} \entry {constructing calls}{113} \entry {constructor expressions}{122} \entry {constructors vs \code {goto}}{148} ! \entry {constructors, output of}{378} \entry {contributors}{9} ! \entry {controlling register usage}{321} ! \entry {controlling the compilation driver}{305} ! \entry {conventions, run-time}{193} ! \entry {conversions}{223} \entry {Convex options}{53} ! \entry {\code {copy{\_}rtx{\_}if{\_}shared}}{241} ! \entry {core dump}{173} \entry {\code {cos}}{25} ! \entry {costs of instructions}{364} ! \entry {\code {COSTS{\_}N{\_}INSNS}}{364} \entry {\code {CPLUS{\_}INCLUDE{\_}PATH}}{72} ! \entry {\code {CPP{\_}PREDEFINES}}{309} ! \entry {\code {CPP{\_}SPEC}}{305} ! \entry {\code {CQImode}}{209} ! \entry {cross compilation and floating point}{392} \entry {cross compiling}{49} \entry {cross-compiler, installation}{89} ! \entry {cross-jumping}{199} ! \entry {\code {CSImode}}{209} ! \entry {\code {CTImode}}{209} ! \entry {\code {CUMULATIVE{\_}ARGS}}{342} ! \entry {\code {current{\_}function{\_}epilogue{\_}delay{\_}list}}{349} ! \entry {\code {current{\_}function{\_}outgoing{\_}args{\_}size}}{338} ! \entry {\code {current{\_}function{\_}pops{\_}args}}{349} ! \entry {\code {current{\_}function{\_}pretend{\_}args{\_}size}}{348} \initial {D} ! \entry {\samp {d} in constraint}{254} ! \entry {data flow analysis}{197} ! \entry {\code {DATA{\_}ALIGNMENT}}{314} ! \entry {\code {data{\_}section}}{368} ! \entry {\code {DATA{\_}SECTION{\_}ASM{\_}OP}}{367} ! \entry {\code {DBR{\_}OUTPUT{\_}SEQEND}}{383} ! \entry {\code {dbr{\_}sequence{\_}length}}{383} ! \entry {DBX}{156} ! \entry {\code {DBX{\_}CONTIN{\_}CHAR}}{387} ! \entry {\code {DBX{\_}CONTIN{\_}LENGTH}}{387} ! \entry {\code {DBX{\_}DEBUGGING{\_}INFO}}{387} ! \entry {\code {DBX{\_}FUNCTION{\_}FIRST}}{388} ! \entry {\code {DBX{\_}LBRAC{\_}FIRST}}{388} ! \entry {\code {DBX{\_}MEMPARM{\_}STABS{\_}LETTER}}{388} ! \entry {\code {DBX{\_}NO{\_}XREFS}}{387} ! \entry {\code {DBX{\_}OUTPUT{\_}ENUM}}{389} ! \entry {\code {DBX{\_}OUTPUT{\_}FUNCTION{\_}END}}{389} ! \entry {\code {DBX{\_}OUTPUT{\_}LBRAC}}{389} ! \entry {\code {DBX{\_}OUTPUT{\_}MAIN{\_}SOURCE{\_}DIRECTORY}}{390} ! \entry {\code {DBX{\_}OUTPUT{\_}MAIN{\_}SOURCE{\_}FILE{\_}END}}{390} ! \entry {\code {DBX{\_}OUTPUT{\_}MAIN{\_}SOURCE{\_}FILENAME}}{390} ! \entry {\code {DBX{\_}OUTPUT{\_}RBRAC}}{389} ! \entry {\code {DBX{\_}OUTPUT{\_}SOURCE{\_}FILENAME}}{390} ! \entry {\code {DBX{\_}OUTPUT{\_}STANDARD{\_}TYPES}}{389} ! \entry {\code {DBX{\_}REGISTER{\_}NUMBER}}{386} ! \entry {\code {DBX{\_}REGPARM{\_}STABS{\_}CODE}}{388} ! \entry {\code {DBX{\_}REGPARM{\_}STABS{\_}LETTER}}{388} ! \entry {\code {DBX{\_}STATIC{\_}CONST{\_}VAR{\_}CODE}}{388} ! \entry {\code {DBX{\_}STATIC{\_}STAB{\_}DATA{\_}SECTION}}{388} ! \entry {\code {DBX{\_}TYPE{\_}DECL{\_}STABS{\_}CODE}}{388} ! \entry {\code {DBX{\_}WORKING{\_}DIRECTORY}}{390} ! \entry {\code {DCmode}}{209} ! \entry {De Morgan's law}{279} ! \entry {dead code}{196} ! \entry {\code {dead{\_}or{\_}set{\_}p}}{282} \entry {deallocating variable length arrays}{119} ! \entry {death notes}{326} ! \entry {\code {debug{\_}rtx}}{178} ! \entry {\code {DEBUG{\_}SYMS{\_}TEXT}}{387} ! \entry {\code {DEBUGGER{\_}ARG{\_}OFFSET}}{386} ! \entry {\code {DEBUGGER{\_}AUTO{\_}OFFSET}}{386} ! \entry {debugging information generation}{199} \entry {debugging information options}{36} \entry {debugging, 88k OCS}{56} ! \entry {declaration scope}{162} \entry {declarations inside expressions}{107} ! \entry {declarations, RTL}{224} \entry {declaring attributes of functions}{126} ! \entry {declaring static data in C{\tt\char43}{\tt\char43}}{166} ! \entry {\code {DEFAULT{\_}CALLER{\_}SAVES}}{346} ! \entry {\code {DEFAULT{\_}GDB{\_}EXTENSIONS}}{387} ! \entry {\code {DEFAULT{\_}MAIN{\_}RETURN}}{399} ! \entry {\code {DEFAULT{\_}PCC{\_}STRUCT{\_}RETURN}}{345} ! \entry {\code {DEFAULT{\_}SHORT{\_}ENUMS}}{318} ! \entry {\code {DEFAULT{\_}SIGNED{\_}CHAR}}{318} ! \entry {\code {define{\_}asm{\_}attributes}}{296} ! \entry {\code {define{\_}attr}}{290} ! \entry {\code {define{\_}delay}}{300} ! \entry {\code {define{\_}expand}}{284} ! \entry {\code {define{\_}function{\_}unit}}{301} ! \entry {\code {define{\_}insn}}{243} ! \entry {\code {define{\_}insn} example}{244} ! \entry {\code {define{\_}peephole}}{284} ! \entry {define{\_}split}{287} ! \entry {defining attributes and their values}{290} ! \entry {defining jump instruction patterns}{277} ! \entry {defining peephole optimizers}{280} ! \entry {defining RTL sequences for code generation}{284} ! \entry {defining static data in C{\tt\char43}{\tt\char43}}{166} ! \entry {delay slots, defining}{299} ! \entry {\code {DELAY{\_}SLOTS{\_}FOR{\_}EPILOGUE}}{349} ! \entry {delayed branch scheduling}{199} \entry {dependencies for make as output}{72} \entry {dependencies, make}{45} \entry {\code {DEPENDENCIES{\_}OUTPUT}}{72} ! \entry {Dependent Patterns}{275} \entry {destructors vs \code {goto}}{148} ! \entry {destructors, output of}{378} \entry {detecting \w {\samp {-traditional}}}{26} ! \entry {\code {DFmode}}{209} \entry {dialect options}{24} ! \entry {digits in constraint}{255} ! \entry {\code {DImode}}{209} \entry {directory options}{48} ! \entry {disabling certain registers}{321} ! \entry {dispatch table}{384} ! \entry {\code {div}}{219} ! \entry {\code {div} and attributes}{293} ! \entry {\code {DIVDI3{\_}LIBCALL}}{357} \entry {divide instruction, 88k}{57} ! \entry {division}{219} ! \entry {\code {div\var {m}3} instruction pattern}{267} ! \entry {\code {divmod\var {m}4} instruction pattern}{267} ! \entry {\code {DIVSI3{\_}LIBCALL}}{356} \entry {dollar signs in identifier names}{129} ! \entry {\code {DOLLARS{\_}IN{\_}IDENTIFIERS}}{399} ! \entry {\code {DONE}}{285} ! \entry {\code {DONT{\_}REDUCE{\_}ADDR}}{366} \entry {double-word arithmetic}{117} ! \entry {\code {DOUBLE{\_}TYPE{\_}SIZE}}{318} \entry {downward funargs}{110} ! \entry {driver}{305} \entry {DW bit (29k)}{54} ! \entry {\code {DWARF{\_}DEBUGGING{\_}INFO}}{391} ! \entry {\code {DYNAMIC{\_}CHAIN{\_}ADDRESS}}{334} \initial {E} ! \entry {\samp {E} in constraint}{254} ! \entry {\code {EASY{\_}DIV{\_}EXPR}}{396} ! \entry {\code {EDOM}, implicit usage}{357} ! \entry {\code {ELIGIBLE{\_}FOR{\_}EPILOGUE{\_}DELAY}}{349} ! \entry {\code {ELIMINABLE{\_}REGS}}{337} ! \entry {empty constraints}{264} ! \entry {\code {EMPTY{\_}FIELD{\_}BOUNDARY}}{314} ! \entry {\code {ENCODE{\_}SECTION{\_}INFO}}{368} ! \entry {\code {ENCODE{\_}SECTION{\_}INFO} and address validation}{360} ! \entry {\code {ENCODE{\_}SECTION{\_}INFO} usage}{383} ! \entry {\code {ENDFILE{\_}SPEC}}{307} ! \entry {endianness}{191} ! \entry {\code {enum machine{\_}mode}}{208} ! \entry {\code {enum reg{\_}class}}{328} \entry {enumeration clash warnings}{34} \entry {environment variables}{71} ! \entry {epilogue}{347} ! \entry {\code {eq}}{221} ! \entry {\code {eq} and attributes}{293} ! \entry {\code {eq{\_}attr}}{293} ! \entry {equal}{221} ! \entry {\code {errno}, implicit usage}{357} ! \entry {\code {error}}{316} ! \entry {error messages}{172} \entry {escape sequences, traditional}{26} ! \entry {exclamation point}{258} ! \entry {exclusive-or, bitwise}{220} ! \entry {\code {EXECUTABLE{\_}SUFFIX}}{402} \entry {\code {exit}}{25} ! \entry {exit status and VMS}{188} ! \entry {\code {EXIT{\_}BODY}}{399} ! \entry {\code {EXIT{\_}IGNORE{\_}STACK}}{348} ! \entry {\code {EXPAND{\_}BUILTIN{\_}SAVEREGS}}{352} ! \entry {expander definitions}{284} \entry {explicit register variables}{138} ! \entry {\code {expr{\_}list}}{239} ! \entry {expression codes}{201} \entry {expressions containing statements}{107} \entry {expressions, compound, as lvalues}{115} --- 271,574 ---- \entry {C{\tt\char43}{\tt\char43} pragmas, effect on inlining}{149} \entry {C{\tt\char43}{\tt\char43} source file suffixes}{23} ! \entry {C{\tt\char43}{\tt\char43} static data, declaring and defining}{167} ! \entry {\code {call}}{228} ! \entry {\code {call} instruction pattern}{273} ! \entry {\code {call} usage}{241} ! \entry {call-clobbered register}{323} ! \entry {call-saved register}{323} ! \entry {call-used register}{323} ! \entry {\code {call{\_}insn}}{235} ! \entry {\code {call{\_}insn} and \samp {/u}}{208} ! \entry {\code {call{\_}pop} instruction pattern}{273} ! \entry {\code {CALL{\_}USED{\_}REGISTERS}}{323} ! \entry {\code {call{\_}used{\_}regs}}{323} ! \entry {\code {call{\_}value} instruction pattern}{273} ! \entry {\code {call{\_}value{\_}pop} instruction pattern}{273} ! \entry {\code {CALLER{\_}SAVE{\_}PROFITABLE}}{348} ! \entry {calling conventions}{335} ! \entry {calling functions in RTL}{241} ! \entry {\code {CAN{\_}ELIMINATE}}{339} ! \entry {canonicalization of instructions}{281} \entry {case labels in initializers}{123} \entry {case ranges}{124} ! \entry {case sensitivity and VMS}{191} ! \entry {\code {CASE{\_}DROPS{\_}THROUGH}}{397} ! \entry {\code {CASE{\_}VALUES{\_}THRESHOLD}}{397} ! \entry {\code {CASE{\_}VECTOR{\_}MODE}}{397} ! \entry {\code {CASE{\_}VECTOR{\_}PC{\_}RELATIVE}}{397} ! \entry {\code {casesi} instruction pattern}{275} \entry {cast to a union}{125} \entry {casts as lvalues}{115} ! \entry {\code {cc{\_}status}}{364} ! \entry {\code {CC{\_}STATUS{\_}MDEP}}{364} ! \entry {\code {CC{\_}STATUS{\_}MDEP{\_}INIT}}{364} ! \entry {\code {cc0}}{218} ! \entry {\code {cc0}, RTL sharing}{243} ! \entry {\code {cc0{\_}rtx}}{219} ! \entry {\code {CC1{\_}SPEC}}{308} ! \entry {\code {CC1PLUS{\_}SPEC}}{308} ! \entry {\code {CCmode}}{211} ! \entry {\code {CDImode}}{211} ! \entry {\code {change{\_}address}}{267} ! \entry {\code {CHAR{\_}TYPE{\_}SIZE}}{320} ! \entry {\code {CHECK{\_}FLOAT{\_}VALUE}}{318} ! \entry {\code {CHImode}}{211} ! \entry {class definitions, register}{329} ! \entry {class preference constraints}{261} ! \entry {\code {CLASS{\_}LIKELY{\_}SPILLED{\_}P}}{333} ! \entry {\code {CLASS{\_}MAX{\_}NREGS}}{334} ! \entry {classes of RTX codes}{205} ! \entry {\code {CLEAR{\_}INSN{\_}CACHE (BEG, END)}}{357} ! \entry {\code {clobber}}{228} ! \entry {\code {cmp\var {m}} instruction pattern}{270} ! \entry {\code {cmpstr\var {m}} instruction pattern}{271} \entry {code generation conventions}{68} ! \entry {code generation RTL sequences}{286} ! \entry {code motion}{199} ! \entry {\code {code{\_}label}}{235} ! \entry {\code {code{\_}label} and \samp {/i}}{209} ! \entry {\code {CODE{\_}LABEL{\_}NUMBER}}{235} ! \entry {codes, RTL expression}{203} ! \entry {\code {COImode}}{211} ! \entry {combiner pass}{218} \entry {command options}{17} ! \entry {common subexpression elimination}{199} ! \entry {\code {compare}}{220} ! \entry {\code {compare}, canonicalization of}{281} \entry {compilation in a separate directory}{88} ! \entry {compiler bugs, reporting}{177} \entry {compiler compared to C{\tt\char43}{\tt\char43} preprocessor}{15} \entry {compiler options, C{\tt\char43}{\tt\char43}}{27} ! \entry {compiler passes and files}{197} \entry {compiler version, specifying}{49} \entry {\code {COMPILER{\_}PATH}}{71} ! \entry {complement, bitwise}{221} \entry {complex numbers}{117} \entry {compound expressions as lvalues}{115} \entry {computed gotos}{109} ! \entry {computing the length of an insn}{299} ! \entry {\code {cond}}{224} ! \entry {\code {cond} and attributes}{294} ! \entry {condition code register}{218} ! \entry {condition code status}{364} ! \entry {condition codes}{223} \entry {conditional expressions as lvalues}{115} \entry {conditional expressions, extensions}{116} ! \entry {\code {CONDITIONAL{\_}REGISTER{\_}USAGE}}{323} ! \entry {conditions, in patterns}{246} ! \entry {configuration file}{403} ! \entry {conflicting types}{166} \entry {\code {const} applied to function}{126} ! \entry {\code {const} function attribute}{127} ! \entry {\code {CONST{\_}CALL{\_}P}}{208} ! \entry {\code {CONST{\_}COSTS}}{366} ! \entry {\code {const{\_}double}}{214} ! \entry {\code {const{\_}double}, RTL sharing}{243} ! \entry {\code {CONST{\_}DOUBLE{\_}CHAIN}}{214} ! \entry {\code {CONST{\_}DOUBLE{\_}LOW}}{214} ! \entry {\code {CONST{\_}DOUBLE{\_}MEM}}{214} ! \entry {\code {CONST{\_}DOUBLE{\_}OK{\_}FOR{\_}LETTER{\_}P}}{334} ! \entry {\code {const{\_}int}}{214} ! \entry {\code {const{\_}int} and attribute tests}{294} ! \entry {\code {const{\_}int} and attributes}{294} ! \entry {\code {const{\_}int}, RTL sharing}{243} ! \entry {\code {CONST{\_}OK{\_}FOR{\_}LETTER{\_}P}}{334} ! \entry {\code {const{\_}string}}{215} ! \entry {\code {const{\_}string} and attributes}{294} ! \entry {\code {const{\_}true{\_}rtx}}{214} ! \entry {\code {const0{\_}rtx}}{214} ! \entry {\code {CONST0{\_}RTX}}{215} ! \entry {\code {const1{\_}rtx}}{214} ! \entry {\code {CONST1{\_}RTX}}{215} ! \entry {\code {const2{\_}rtx}}{214} ! \entry {\code {CONST2{\_}RTX}}{215} ! \entry {constant attributes}{301} ! \entry {constant folding}{197} ! \entry {constant folding and floating point}{396} ! \entry {constant propagation}{199} ! \entry {\code {CONSTANT{\_}ADDRESS{\_}P}}{361} ! \entry {\code {CONSTANT{\_}ALIGNMENT}}{316} ! \entry {\code {CONSTANT{\_}P}}{361} ! \entry {\code {CONSTANT{\_}POOL{\_}ADDRESS{\_}P}}{208} ! \entry {constants in constraints}{256} ! \entry {\code {constm1{\_}rtx}}{214} ! \entry {constraint modifier characters}{261} ! \entry {constraint, matching}{257} ! \entry {constraints}{255} ! \entry {constraints, machine specific}{262} \entry {constructing calls}{113} \entry {constructor expressions}{122} \entry {constructors vs \code {goto}}{148} ! \entry {constructors, output of}{380} \entry {contributors}{9} ! \entry {controlling register usage}{323} ! \entry {controlling the compilation driver}{307} ! \entry {conventions, run-time}{195} ! \entry {conversions}{225} \entry {Convex options}{53} ! \entry {\code {copy{\_}rtx{\_}if{\_}shared}}{243} ! \entry {core dump}{175} \entry {\code {cos}}{25} ! \entry {costs of instructions}{366} ! \entry {\code {COSTS{\_}N{\_}INSNS}}{366} \entry {\code {CPLUS{\_}INCLUDE{\_}PATH}}{72} ! \entry {\code {CPP{\_}PREDEFINES}}{311} ! \entry {\code {CPP{\_}SPEC}}{307} ! \entry {\code {CQImode}}{211} ! \entry {cross compilation and floating point}{394} \entry {cross compiling}{49} \entry {cross-compiler, installation}{89} ! \entry {cross-jumping}{201} ! \entry {\code {CSImode}}{211} ! \entry {\code {CTImode}}{211} ! \entry {\code {CUMULATIVE{\_}ARGS}}{344} ! \entry {\code {current{\_}function{\_}epilogue{\_}delay{\_}list}}{351} ! \entry {\code {current{\_}function{\_}outgoing{\_}args{\_}size}}{340} ! \entry {\code {current{\_}function{\_}pops{\_}args}}{351} ! \entry {\code {current{\_}function{\_}pretend{\_}args{\_}size}}{350} \initial {D} ! \entry {\samp {d} in constraint}{256} ! \entry {data flow analysis}{199} ! \entry {\code {DATA{\_}ALIGNMENT}}{316} ! \entry {\code {data{\_}section}}{370} ! \entry {\code {DATA{\_}SECTION{\_}ASM{\_}OP}}{369} ! \entry {\code {DBR{\_}OUTPUT{\_}SEQEND}}{385} ! \entry {\code {dbr{\_}sequence{\_}length}}{385} ! \entry {DBX}{157} ! \entry {\code {DBX{\_}CONTIN{\_}CHAR}}{390} ! \entry {\code {DBX{\_}CONTIN{\_}LENGTH}}{390} ! \entry {\code {DBX{\_}DEBUGGING{\_}INFO}}{389} ! \entry {\code {DBX{\_}FUNCTION{\_}FIRST}}{391} ! \entry {\code {DBX{\_}LBRAC{\_}FIRST}}{391} ! \entry {\code {DBX{\_}MEMPARM{\_}STABS{\_}LETTER}}{391} ! \entry {\code {DBX{\_}NO{\_}XREFS}}{390} ! \entry {\code {DBX{\_}OUTPUT{\_}ENUM}}{391} ! \entry {\code {DBX{\_}OUTPUT{\_}FUNCTION{\_}END}}{391} ! \entry {\code {DBX{\_}OUTPUT{\_}LBRAC}}{391} ! \entry {\code {DBX{\_}OUTPUT{\_}MAIN{\_}SOURCE{\_}DIRECTORY}}{393} ! \entry {\code {DBX{\_}OUTPUT{\_}MAIN{\_}SOURCE{\_}FILE{\_}END}}{393} ! \entry {\code {DBX{\_}OUTPUT{\_}MAIN{\_}SOURCE{\_}FILENAME}}{393} ! \entry {\code {DBX{\_}OUTPUT{\_}RBRAC}}{391} ! \entry {\code {DBX{\_}OUTPUT{\_}SOURCE{\_}FILENAME}}{393} ! \entry {\code {DBX{\_}OUTPUT{\_}STANDARD{\_}TYPES}}{392} ! \entry {\code {DBX{\_}REGISTER{\_}NUMBER}}{388} ! \entry {\code {DBX{\_}REGPARM{\_}STABS{\_}CODE}}{390} ! \entry {\code {DBX{\_}REGPARM{\_}STABS{\_}LETTER}}{391} ! \entry {\code {DBX{\_}STATIC{\_}CONST{\_}VAR{\_}CODE}}{390} ! \entry {\code {DBX{\_}STATIC{\_}STAB{\_}DATA{\_}SECTION}}{390} ! \entry {\code {DBX{\_}TYPE{\_}DECL{\_}STABS{\_}CODE}}{390} ! \entry {\code {DBX{\_}WORKING{\_}DIRECTORY}}{393} ! \entry {\code {DCmode}}{211} ! \entry {De Morgan's law}{281} ! \entry {dead code}{198} ! \entry {\code {dead{\_}or{\_}set{\_}p}}{284} \entry {deallocating variable length arrays}{119} ! \entry {death notes}{328} ! \entry {\code {debug{\_}rtx}}{180} ! \entry {\code {DEBUG{\_}SYMS{\_}TEXT}}{389} ! \entry {\code {DEBUGGER{\_}ARG{\_}OFFSET}}{389} ! \entry {\code {DEBUGGER{\_}AUTO{\_}OFFSET}}{389} ! \entry {debugging information generation}{201} \entry {debugging information options}{36} \entry {debugging, 88k OCS}{56} ! \entry {declaration scope}{163} \entry {declarations inside expressions}{107} ! \entry {declarations, RTL}{226} \entry {declaring attributes of functions}{126} ! \entry {declaring static data in C{\tt\char43}{\tt\char43}}{167} ! \entry {\code {DEFAULT{\_}CALLER{\_}SAVES}}{348} ! \entry {\code {DEFAULT{\_}GDB{\_}EXTENSIONS}}{389} ! \entry {\code {DEFAULT{\_}MAIN{\_}RETURN}}{402} ! \entry {\code {DEFAULT{\_}PCC{\_}STRUCT{\_}RETURN}}{347} ! \entry {\code {DEFAULT{\_}SHORT{\_}ENUMS}}{320} ! \entry {\code {DEFAULT{\_}SIGNED{\_}CHAR}}{320} ! \entry {\code {define{\_}asm{\_}attributes}}{298} ! \entry {\code {define{\_}attr}}{292} ! \entry {\code {define{\_}delay}}{302} ! \entry {\code {define{\_}expand}}{286} ! \entry {\code {define{\_}function{\_}unit}}{303} ! \entry {\code {define{\_}insn}}{245} ! \entry {\code {define{\_}insn} example}{246} ! \entry {\code {define{\_}peephole}}{286} ! \entry {define{\_}split}{289} ! \entry {defining attributes and their values}{292} ! \entry {defining jump instruction patterns}{279} ! \entry {defining peephole optimizers}{282} ! \entry {defining RTL sequences for code generation}{286} ! \entry {defining static data in C{\tt\char43}{\tt\char43}}{167} ! \entry {delay slots, defining}{301} ! \entry {\code {DELAY{\_}SLOTS{\_}FOR{\_}EPILOGUE}}{351} ! \entry {delayed branch scheduling}{201} \entry {dependencies for make as output}{72} \entry {dependencies, make}{45} \entry {\code {DEPENDENCIES{\_}OUTPUT}}{72} ! \entry {Dependent Patterns}{277} \entry {destructors vs \code {goto}}{148} ! \entry {destructors, output of}{380} \entry {detecting \w {\samp {-traditional}}}{26} ! \entry {\code {DFmode}}{211} \entry {dialect options}{24} ! \entry {digits in constraint}{257} ! \entry {\code {DImode}}{211} \entry {directory options}{48} ! \entry {disabling certain registers}{323} ! \entry {dispatch table}{386} ! \entry {\code {div}}{221} ! \entry {\code {div} and attributes}{295} ! \entry {\code {DIVDI3{\_}LIBCALL}}{359} \entry {divide instruction, 88k}{57} ! \entry {division}{221} ! \entry {\code {div\var {m}3} instruction pattern}{269} ! \entry {\code {divmod\var {m}4} instruction pattern}{269} ! \entry {\code {DIVSI3{\_}LIBCALL}}{358} \entry {dollar signs in identifier names}{129} ! \entry {\code {DOLLARS{\_}IN{\_}IDENTIFIERS}}{401} ! \entry {\code {DONE}}{287} ! \entry {\code {DONT{\_}REDUCE{\_}ADDR}}{368} \entry {double-word arithmetic}{117} ! \entry {\code {DOUBLE{\_}TYPE{\_}SIZE}}{320} \entry {downward funargs}{110} ! \entry {driver}{307} \entry {DW bit (29k)}{54} ! \entry {\code {DWARF{\_}DEBUGGING{\_}INFO}}{393} ! \entry {\code {DYNAMIC{\_}CHAIN{\_}ADDRESS}}{336} \initial {E} ! \entry {\samp {E} in constraint}{256} ! \entry {\code {EASY{\_}DIV{\_}EXPR}}{398} ! \entry {\code {EDOM}, implicit usage}{359} ! \entry {\code {ELIGIBLE{\_}FOR{\_}EPILOGUE{\_}DELAY}}{351} ! \entry {\code {ELIMINABLE{\_}REGS}}{339} ! \entry {empty constraints}{266} ! \entry {\code {EMPTY{\_}FIELD{\_}BOUNDARY}}{316} ! \entry {\code {ENCODE{\_}SECTION{\_}INFO}}{370} ! \entry {\code {ENCODE{\_}SECTION{\_}INFO} and address validation}{362} ! \entry {\code {ENCODE{\_}SECTION{\_}INFO} usage}{385} ! \entry {\code {ENDFILE{\_}SPEC}}{309} ! \entry {endianness}{193} ! \entry {\code {enum machine{\_}mode}}{210} ! \entry {\code {enum reg{\_}class}}{330} \entry {enumeration clash warnings}{34} \entry {environment variables}{71} ! \entry {epilogue}{349} ! \entry {\code {eq}}{223} ! \entry {\code {eq} and attributes}{295} ! \entry {\code {eq{\_}attr}}{295} ! \entry {equal}{223} ! \entry {\code {errno}, implicit usage}{359} ! \entry {\code {error}}{318} ! \entry {error messages}{173} \entry {escape sequences, traditional}{26} ! \entry {exclamation point}{260} ! \entry {exclusive-or, bitwise}{222} ! \entry {\code {EXECUTABLE{\_}SUFFIX}}{404} \entry {\code {exit}}{25} ! \entry {exit status and VMS}{190} ! \entry {\code {EXIT{\_}BODY}}{402} ! \entry {\code {EXIT{\_}IGNORE{\_}STACK}}{350} ! \entry {\code {EXPAND{\_}BUILTIN{\_}SAVEREGS}}{354} ! \entry {expander definitions}{286} \entry {explicit register variables}{138} ! \entry {\code {expr{\_}list}}{241} ! \entry {expression codes}{203} \entry {expressions containing statements}{107} \entry {expressions, compound, as lvalues}{115} *************** *** 574,686 **** \entry {expressions, constructor}{122} \entry {extended \code {asm}}{133} ! \entry {\code {extend\var {mn}} instruction pattern}{269} ! \entry {extensible constraints}{255} \entry {extensions, \code {?:}}{115, 116} \entry {extensions, C language}{107} \entry {extensions, C{\tt\char43}{\tt\char43} language}{145} ! \entry {\code {extern int target{\_}flags}}{310} ! \entry {external declaration scope}{162} ! \entry {\code {EXTRA{\_}CC{\_}MODES}}{363} ! \entry {\code {EXTRA{\_}CC{\_}NAMES}}{363} ! \entry {\code {EXTRA{\_}CONSTRAINT}}{332} ! \entry {\code {EXTRA{\_}SECTION{\_}FUNCTIONS}}{368} ! \entry {\code {EXTRA{\_}SECTIONS}}{367} ! \entry {\code {extv} instruction pattern}{270} ! \entry {\code {extzv} instruction pattern}{270} \initial {F} ! \entry {\samp {F} in constraint}{254} \entry {\code {fabs}}{25} ! \entry {\code {FAIL}}{285} ! \entry {\code {FAILURE{\_}EXIT{\_}CODE}}{401} ! \entry {fatal signal}{173} ! \entry {features, optional, in system conventions}{310} ! \entry {\code {ffs}}{25, 220} ! \entry {\code {ffs\var {m}2} instruction pattern}{268} \entry {file name suffix}{21} \entry {file names}{46} ! \entry {files and passes of the compiler}{195} ! \entry {final pass}{199} ! \entry {\code {FINAL{\_}PRESCAN{\_}INSN}}{382} ! \entry {\code {FINAL{\_}REG{\_}PARM{\_}STACK{\_}SPACE}}{339} ! \entry {\code {final{\_}scan{\_}insn}}{349} ! \entry {\code {final{\_}sequence}}{383} ! \entry {\code {FINALIZE{\_}PIC}}{369} ! \entry {\code {FIRST{\_}INSN{\_}ADDRESS}}{298} ! \entry {\code {FIRST{\_}PARM{\_}OFFSET}}{333} ! \entry {\code {FIRST{\_}PARM{\_}OFFSET} and virtual registers}{215} ! \entry {\code {FIRST{\_}PSEUDO{\_}REGISTER}}{320} ! \entry {\code {FIRST{\_}STACK{\_}REG}}{325} ! \entry {\code {FIRST{\_}VIRTUAL{\_}REGISTER}}{214} ! \entry {\code {fix}}{224} ! \entry {\code {fix{\_}trunc\var {mn}2} instruction pattern}{269} ! \entry {fixed register}{320} ! \entry {\code {FIXED{\_}REGISTERS}}{320} ! \entry {\code {fixed{\_}regs}}{321} ! \entry {\code {fix\var {mn}2} instruction pattern}{269} ! \entry {\code {FIXUNS{\_}TRUNC{\_}LIKE{\_}FIX{\_}TRUNC}}{395} ! \entry {\code {fixuns{\_}trunc\var {mn}2} instruction pattern}{269} ! \entry {\code {fixuns\var {mn}2} instruction pattern}{269} ! \entry {flags in RTL expression}{205} ! \entry {\code {float}}{224} ! \entry {\code {float} as function value type}{163} ! \entry {\code {FLOAT{\_}ARG{\_}TYPE}}{358} ! \entry {\code {float{\_}extend}}{224} ! \entry {\code {FLOAT{\_}STORE{\_}FLAG{\_}VALUE}}{398} ! \entry {\code {float{\_}truncate}}{224} ! \entry {\code {FLOAT{\_}TYPE{\_}SIZE}}{318} ! \entry {\code {FLOAT{\_}VALUE{\_}TYPE}}{358} ! \entry {\code {FLOAT{\_}WORDS{\_}BIG{\_}ENDIAN}}{312} ! \entry {\code {FLOATIFY}}{358} ! \entry {floating point and cross compilation}{392} ! \entry {\code {float\var {mn}2} instruction pattern}{269} ! \entry {\code {floatuns\var {mn}2} instruction pattern}{269} ! \entry {\code {force{\_}reg}}{265} ! \entry {\code {format} attribute}{128} \entry {forwarding calls}{113} ! \entry {frame layout}{333} ! \entry {\code {FRAME{\_}GROWS{\_}DOWNWARD}}{333} ! \entry {\code {FRAME{\_}GROWS{\_}DOWNWARD} and virtual registers}{215} ! \entry {\code {frame{\_}pointer{\_}needed}}{347} ! \entry {\code {FRAME{\_}POINTER{\_}REGNUM}}{335} ! \entry {\code {FRAME{\_}POINTER{\_}REGNUM} and virtual registers}{215} ! \entry {\code {FRAME{\_}POINTER{\_}REQUIRED}}{336} ! \entry {\code {frame{\_}pointer{\_}rtx}}{336} ! \entry {\code {fscanf}, and constant strings}{161} ! \entry {\code {ftrunc\var {m}2} instruction pattern}{269} \entry {function attributes}{126} ! \entry {function call conventions}{193} ! \entry {function entry and exit}{347} \entry {function pointers, arithmetic}{121} \entry {function prototype declarations}{128} ! \entry {function units, for scheduling}{301} \entry {function, size of pointer to}{121} ! \entry {function-call insns}{239} ! \entry {\code {FUNCTION{\_}ARG}}{340} ! \entry {\code {FUNCTION{\_}ARG{\_}ADVANCE}}{342} ! \entry {\code {FUNCTION{\_}ARG{\_}BOUNDARY}}{343} ! \entry {\code {FUNCTION{\_}ARG{\_}CALLEE{\_}COPIES}}{341} ! \entry {\code {FUNCTION{\_}ARG{\_}PADDING}}{342} ! \entry {\code {FUNCTION{\_}ARG{\_}PARTIAL{\_}NREGS}}{341} ! \entry {\code {FUNCTION{\_}ARG{\_}PASS{\_}BY{\_}REFERENCE}}{341} ! \entry {\code {FUNCTION{\_}ARG{\_}REGNO{\_}P}}{343} ! \entry {\code {FUNCTION{\_}BLOCK{\_}PROFILER}}{350} ! \entry {\code {FUNCTION{\_}BOUNDARY}}{313} ! \entry {\code {FUNCTION{\_}CONVERSION{\_}BUG}}{402} ! \entry {\code {FUNCTION{\_}EPILOGUE}}{348} ! \entry {\code {FUNCTION{\_}EPILOGUE} and trampolines}{354} ! \entry {\code {FUNCTION{\_}INCOMING{\_}ARG}}{341} ! \entry {\code {FUNCTION{\_}MODE}}{398} ! \entry {\code {FUNCTION{\_}OUTGOING{\_}VALUE}}{344} ! \entry {\code {FUNCTION{\_}PROFILER}}{350} ! \entry {\code {FUNCTION{\_}PROLOGUE}}{347} ! \entry {\code {FUNCTION{\_}PROLOGUE} and trampolines}{354} ! \entry {\code {FUNCTION{\_}VALUE}}{343} ! \entry {\code {FUNCTION{\_}VALUE{\_}REGNO{\_}P}}{344} \entry {functions that have no side effects}{126} \entry {functions that never return}{126} ! \entry {functions, leaf}{324} \initial {G} ! \entry {\samp {g} in constraint}{254} ! \entry {\samp {G} in constraint}{254} \entry {\code {g{\tt\char43}{\tt\char43}}}{23} \entry {G{\tt\char43}{\tt\char43}}{15} --- 576,689 ---- \entry {expressions, constructor}{122} \entry {extended \code {asm}}{133} ! \entry {\code {extend\var {mn}} instruction pattern}{271} ! \entry {extensible constraints}{257} \entry {extensions, \code {?:}}{115, 116} \entry {extensions, C language}{107} \entry {extensions, C{\tt\char43}{\tt\char43} language}{145} ! \entry {\code {extern int target{\_}flags}}{312} ! \entry {external declaration scope}{163} ! \entry {\code {EXTRA{\_}CC{\_}MODES}}{365} ! \entry {\code {EXTRA{\_}CC{\_}NAMES}}{365} ! \entry {\code {EXTRA{\_}CONSTRAINT}}{334} ! \entry {\code {EXTRA{\_}SECTION{\_}FUNCTIONS}}{370} ! \entry {\code {EXTRA{\_}SECTIONS}}{369} ! \entry {\code {extv} instruction pattern}{272} ! \entry {\code {extzv} instruction pattern}{272} \initial {F} ! \entry {\samp {F} in constraint}{256} \entry {\code {fabs}}{25} ! \entry {\code {FAIL}}{287} ! \entry {\code {FAILURE{\_}EXIT{\_}CODE}}{403} ! \entry {fatal signal}{175} ! \entry {features, optional, in system conventions}{312} ! \entry {\code {ffs}}{25, 222} ! \entry {\code {ffs\var {m}2} instruction pattern}{270} \entry {file name suffix}{21} \entry {file names}{46} ! \entry {files and passes of the compiler}{197} ! \entry {final pass}{201} ! \entry {\code {FINAL{\_}PRESCAN{\_}INSN}}{384} ! \entry {\code {FINAL{\_}REG{\_}PARM{\_}STACK{\_}SPACE}}{341} ! \entry {\code {final{\_}scan{\_}insn}}{351} ! \entry {\code {final{\_}sequence}}{385} ! \entry {\code {FINALIZE{\_}PIC}}{371} ! \entry {\code {FIRST{\_}INSN{\_}ADDRESS}}{300} ! \entry {\code {FIRST{\_}PARM{\_}OFFSET}}{335} ! \entry {\code {FIRST{\_}PARM{\_}OFFSET} and virtual registers}{217} ! \entry {\code {FIRST{\_}PSEUDO{\_}REGISTER}}{322} ! \entry {\code {FIRST{\_}STACK{\_}REG}}{327} ! \entry {\code {FIRST{\_}VIRTUAL{\_}REGISTER}}{216} ! \entry {\code {fix}}{226} ! \entry {\code {fix{\_}trunc\var {mn}2} instruction pattern}{271} ! \entry {fixed register}{322} ! \entry {\code {FIXED{\_}REGISTERS}}{322} ! \entry {\code {fixed{\_}regs}}{323} ! \entry {\code {fix\var {mn}2} instruction pattern}{271} ! \entry {\code {FIXUNS{\_}TRUNC{\_}LIKE{\_}FIX{\_}TRUNC}}{398} ! \entry {\code {fixuns{\_}trunc\var {mn}2} instruction pattern}{271} ! \entry {\code {fixuns\var {mn}2} instruction pattern}{271} ! \entry {flags in RTL expression}{207} ! \entry {\code {float}}{226} ! \entry {\code {float} as function value type}{164} ! \entry {\code {FLOAT{\_}ARG{\_}TYPE}}{360} ! \entry {\code {float{\_}extend}}{226} ! \entry {\code {FLOAT{\_}STORE{\_}FLAG{\_}VALUE}}{400} ! \entry {\code {float{\_}truncate}}{226} ! \entry {\code {FLOAT{\_}TYPE{\_}SIZE}}{320} ! \entry {\code {FLOAT{\_}VALUE{\_}TYPE}}{360} ! \entry {\code {FLOAT{\_}WORDS{\_}BIG{\_}ENDIAN}}{314} ! \entry {\code {FLOATIFY}}{360} ! \entry {floating point and cross compilation}{394} ! \entry {\code {float\var {mn}2} instruction pattern}{271} ! \entry {\code {floatuns\var {mn}2} instruction pattern}{271} ! \entry {\code {force{\_}reg}}{267} ! \entry {\code {format} function attribute}{127} \entry {forwarding calls}{113} ! \entry {frame layout}{335} ! \entry {\code {FRAME{\_}GROWS{\_}DOWNWARD}}{335} ! \entry {\code {FRAME{\_}GROWS{\_}DOWNWARD} and virtual registers}{217} ! \entry {\code {frame{\_}pointer{\_}needed}}{349} ! \entry {\code {FRAME{\_}POINTER{\_}REGNUM}}{337} ! \entry {\code {FRAME{\_}POINTER{\_}REGNUM} and virtual registers}{217} ! \entry {\code {FRAME{\_}POINTER{\_}REQUIRED}}{338} ! \entry {\code {frame{\_}pointer{\_}rtx}}{338} ! \entry {\code {fscanf}, and constant strings}{162} ! \entry {\code {ftrunc\var {m}2} instruction pattern}{271} \entry {function attributes}{126} ! \entry {function call conventions}{195} ! \entry {function entry and exit}{349} \entry {function pointers, arithmetic}{121} \entry {function prototype declarations}{128} ! \entry {function units, for scheduling}{303} \entry {function, size of pointer to}{121} ! \entry {function-call insns}{241} ! \entry {\code {FUNCTION{\_}ARG}}{342} ! \entry {\code {FUNCTION{\_}ARG{\_}ADVANCE}}{344} ! \entry {\code {FUNCTION{\_}ARG{\_}BOUNDARY}}{345} ! \entry {\code {FUNCTION{\_}ARG{\_}CALLEE{\_}COPIES}}{343} ! \entry {\code {FUNCTION{\_}ARG{\_}PADDING}}{344} ! \entry {\code {FUNCTION{\_}ARG{\_}PARTIAL{\_}NREGS}}{343} ! \entry {\code {FUNCTION{\_}ARG{\_}PASS{\_}BY{\_}REFERENCE}}{343} ! \entry {\code {FUNCTION{\_}ARG{\_}REGNO{\_}P}}{345} ! \entry {\code {FUNCTION{\_}BLOCK{\_}PROFILER}}{352} ! \entry {\code {FUNCTION{\_}BOUNDARY}}{315} ! \entry {\code {FUNCTION{\_}CONVERSION{\_}BUG}}{404} ! \entry {\code {FUNCTION{\_}EPILOGUE}}{350} ! \entry {\code {FUNCTION{\_}EPILOGUE} and trampolines}{356} ! \entry {\code {FUNCTION{\_}INCOMING{\_}ARG}}{343} ! \entry {\code {FUNCTION{\_}MODE}}{401} ! \entry {\code {FUNCTION{\_}OUTGOING{\_}VALUE}}{346} ! \entry {\code {FUNCTION{\_}PROFILER}}{352} ! \entry {\code {FUNCTION{\_}PROLOGUE}}{349} ! \entry {\code {FUNCTION{\_}PROLOGUE} and trampolines}{356} ! \entry {\code {FUNCTION{\_}VALUE}}{345} ! \entry {\code {FUNCTION{\_}VALUE{\_}REGNO{\_}P}}{346} \entry {functions that have no side effects}{126} \entry {functions that never return}{126} ! \entry {functions with \code {printf} or \code {scanf} style arguments}{126} ! \entry {functions, leaf}{326} \initial {G} ! \entry {\samp {g} in constraint}{256} ! \entry {\samp {G} in constraint}{256} \entry {\code {g{\tt\char43}{\tt\char43}}}{23} \entry {G{\tt\char43}{\tt\char43}}{15} *************** *** 690,739 **** \entry {GCC}{15} \entry {\code {GCC{\_}EXEC{\_}PREFIX}}{71} ! \entry {\code {ge}}{222} ! \entry {\code {ge} and attributes}{293} ! \entry {\code {GEN{\_}ERRNO{\_}RTX}}{357} ! \entry {\code {gencodes}}{196} ! \entry {\code {genconfig}}{199} ! \entry {\code {general{\_}operand}}{246} ! \entry {\code {GENERAL{\_}REGS}}{327} \entry {generalized lvalues}{115} ! \entry {generating assembler output}{251} ! \entry {generating insns}{245} ! \entry {\code {genflags}}{196} \entry {\code {genflags}, crash on Sun 4}{153} ! \entry {\code {get{\_}attr}}{293} ! \entry {\code {get{\_}attr{\_}length}}{298} ! \entry {\code {GET{\_}CLASS{\_}NARROWEST{\_}MODE}}{211} ! \entry {\code {GET{\_}CODE}}{201} ! \entry {\code {get{\_}frame{\_}size}}{337} ! \entry {\code {get{\_}insns}}{232} ! \entry {\code {get{\_}last{\_}insn}}{232} ! \entry {\code {GET{\_}MODE}}{211} ! \entry {\code {GET{\_}MODE{\_}ALIGNMENT}}{211} ! \entry {\code {GET{\_}MODE{\_}BITSIZE}}{211} ! \entry {\code {GET{\_}MODE{\_}CLASS}}{211} ! \entry {\code {GET{\_}MODE{\_}MASK}}{211} ! \entry {\code {GET{\_}MODE{\_}NAME}}{211} ! \entry {\code {GET{\_}MODE{\_}NUNITS}}{211} ! \entry {\code {GET{\_}MODE{\_}SIZE}}{211} ! \entry {\code {GET{\_}MODE{\_}UNIT{\_}SIZE}}{211} ! \entry {\code {GET{\_}MODE{\_}WIDER{\_}MODE}}{211} ! \entry {\code {GET{\_}RTX{\_}CLASS}}{203} ! \entry {\code {GET{\_}RTX{\_}FORMAT}}{203} ! \entry {\code {GET{\_}RTX{\_}LENGTH}}{203} ! \entry {\code {geu}}{222} ! \entry {\code {geu} and attributes}{293} \entry {global offset table}{69} \entry {global register after \code {longjmp}}{140} ! \entry {global register allocation}{198} \entry {global register variables}{138} ! \entry {\code {GLOBALDEF}}{186} ! \entry {\code {GLOBALREF}}{186} ! \entry {\code {GLOBALVALUEDEF}}{186} ! \entry {\code {GLOBALVALUEREF}}{186} ! \entry {GNU CC and portability}{191} \entry {GNU CC command options}{17} ! \entry {\code {GO{\_}IF{\_}LEGITIMATE{\_}ADDRESS}}{360} ! \entry {\code {GO{\_}IF{\_}MODE{\_}DEPENDENT{\_}ADDRESS}}{361} \entry {\code {goto} in C{\tt\char43}{\tt\char43}}{148} \entry {goto with computed label}{109} --- 693,742 ---- \entry {GCC}{15} \entry {\code {GCC{\_}EXEC{\_}PREFIX}}{71} ! \entry {\code {ge}}{224} ! \entry {\code {ge} and attributes}{295} ! \entry {\code {GEN{\_}ERRNO{\_}RTX}}{359} ! \entry {\code {gencodes}}{198} ! \entry {\code {genconfig}}{201} ! \entry {\code {general{\_}operand}}{248} ! \entry {\code {GENERAL{\_}REGS}}{329} \entry {generalized lvalues}{115} ! \entry {generating assembler output}{253} ! \entry {generating insns}{247} ! \entry {\code {genflags}}{198} \entry {\code {genflags}, crash on Sun 4}{153} ! \entry {\code {get{\_}attr}}{295} ! \entry {\code {get{\_}attr{\_}length}}{300} ! \entry {\code {GET{\_}CLASS{\_}NARROWEST{\_}MODE}}{213} ! \entry {\code {GET{\_}CODE}}{203} ! \entry {\code {get{\_}frame{\_}size}}{339} ! \entry {\code {get{\_}insns}}{234} ! \entry {\code {get{\_}last{\_}insn}}{234} ! \entry {\code {GET{\_}MODE}}{213} ! \entry {\code {GET{\_}MODE{\_}ALIGNMENT}}{213} ! \entry {\code {GET{\_}MODE{\_}BITSIZE}}{213} ! \entry {\code {GET{\_}MODE{\_}CLASS}}{213} ! \entry {\code {GET{\_}MODE{\_}MASK}}{213} ! \entry {\code {GET{\_}MODE{\_}NAME}}{213} ! \entry {\code {GET{\_}MODE{\_}NUNITS}}{213} ! \entry {\code {GET{\_}MODE{\_}SIZE}}{213} ! \entry {\code {GET{\_}MODE{\_}UNIT{\_}SIZE}}{213} ! \entry {\code {GET{\_}MODE{\_}WIDER{\_}MODE}}{213} ! \entry {\code {GET{\_}RTX{\_}CLASS}}{205} ! \entry {\code {GET{\_}RTX{\_}FORMAT}}{205} ! \entry {\code {GET{\_}RTX{\_}LENGTH}}{205} ! \entry {\code {geu}}{224} ! \entry {\code {geu} and attributes}{295} \entry {global offset table}{69} \entry {global register after \code {longjmp}}{140} ! \entry {global register allocation}{200} \entry {global register variables}{138} ! \entry {\code {GLOBALDEF}}{188} ! \entry {\code {GLOBALREF}}{188} ! \entry {\code {GLOBALVALUEDEF}}{188} ! \entry {\code {GLOBALVALUEREF}}{188} ! \entry {GNU CC and portability}{193} \entry {GNU CC command options}{17} ! \entry {\code {GO{\_}IF{\_}LEGITIMATE{\_}ADDRESS}}{362} ! \entry {\code {GO{\_}IF{\_}MODE{\_}DEPENDENT{\_}ADDRESS}}{363} \entry {\code {goto} in C{\tt\char43}{\tt\char43}}{148} \entry {goto with computed label}{109} *************** *** 740,820 **** \entry {gp-relative references (MIPS)}{63} \entry {\code {gprof}}{38} ! \entry {greater than}{222} \entry {grouping options}{17} ! \entry {\code {gt}}{222} ! \entry {\code {gt} and attributes}{293} ! \entry {\code {gtu}}{222} ! \entry {\code {gtu} and attributes}{293} \initial {H} ! \entry {\samp {H} in constraint}{254} ! \entry {\code {HANDLE{\_}PRAGMA}}{398} ! \entry {hard registers}{214} ! \entry {\code {HARD{\_}FRAME{\_}POINTER{\_}REGNUM}}{335} ! \entry {\code {HARD{\_}REGNO{\_}MODE{\_}OK}}{322} ! \entry {\code {HARD{\_}REGNO{\_}NREGS}}{322} \entry {hardware models and configurations, specifying}{50} ! \entry {\code {HAVE{\_}ATEXIT}}{399} ! \entry {\code {HAVE{\_}POST{\_}DECREMENT}}{359} ! \entry {\code {HAVE{\_}POST{\_}INCREMENT}}{359} ! \entry {\code {HAVE{\_}PRE{\_}DECREMENT}}{359} ! \entry {\code {HAVE{\_}PRE{\_}INCREMENT}}{359} ! \entry {\code {HAVE{\_}PUTENV}}{402} ! \entry {\code {HAVE{\_}VPRINTF}}{402} ! \entry {header files and VMS}{185} ! \entry {\code {high}}{213} ! \entry {\code {HImode}}{209} ! \entry {\code {HImode}, in \code {insn}}{234} ! \entry {\code {HOST{\_}BITS{\_}PER{\_}CHAR}}{401} ! \entry {\code {HOST{\_}BITS{\_}PER{\_}INT}}{401} ! \entry {\code {HOST{\_}BITS{\_}PER{\_}LONG}}{401} ! \entry {\code {HOST{\_}BITS{\_}PER{\_}SHORT}}{401} ! \entry {\code {HOST{\_}FLOAT{\_}FORMAT}}{401} ! \entry {\code {HOST{\_}FLOAT{\_}WORDS{\_}BIG{\_}ENDIAN}}{401} ! \entry {\code {HOST{\_}WORDS{\_}BIG{\_}ENDIAN}}{401} \entry {HPPA Options}{64} \initial {I} ! \entry {\samp {i} in constraint}{254} ! \entry {\samp {I} in constraint}{254} \entry {i386 Options}{64} \entry {IBM RS/6000 and PowerPC Options}{58} \entry {IBM RT options}{60} ! \entry {IBM RT PC}{159} \entry {identifier names, dollar signs in}{129} \entry {identifiers, names in assembler code}{137} \entry {identifying source, compiler (88k)}{55} ! \entry {\code {IEEE{\_}FLOAT{\_}FORMAT}}{316} ! \entry {\code {if{\_}then{\_}else}}{222} ! \entry {\code {if{\_}then{\_}else} and attributes}{292} ! \entry {\code {if{\_}then{\_}else} usage}{225} ! \entry {\code {immediate{\_}operand}}{246} ! \entry {\code {IMMEDIATE{\_}PREFIX}}{383} \entry {implicit argument: return value}{145} ! \entry {\code {IMPLICIT{\_}FIX{\_}EXPR}}{395} \entry {implied \code {#pragma implementation}}{149} ! \entry {\code {in{\_}data}}{367} ! \entry {\code {in{\_}struct}}{207} ! \entry {\code {in{\_}struct}, in \code {code{\_}label}}{207} ! \entry {\code {in{\_}struct}, in \code {insn}}{206, 207} ! \entry {\code {in{\_}struct}, in \code {label{\_}ref}}{206} ! \entry {\code {in{\_}struct}, in \code {mem}}{205} ! \entry {\code {in{\_}struct}, in \code {reg}}{205} ! \entry {\code {in{\_}struct}, in \code {subreg}}{205} ! \entry {\code {in{\_}text}}{367} ! \entry {include files and VMS}{185} ! \entry {\code {INCLUDE{\_}DEFAULTS}}{308} ! \entry {inclusive-or, bitwise}{220} ! \entry {\code {INCOMING{\_}REGNO}}{321} ! \entry {incompatibilities of GNU CC}{160} ! \entry {increment operators}{173} ! \entry {\code {INDEX{\_}REG{\_}CLASS}}{328} ! \entry {\code {indirect{\_}jump} instruction pattern}{272} ! \entry {\code {INIT{\_}CUMULATIVE{\_}ARGS}}{342} ! \entry {\code {INIT{\_}CUMULATIVE{\_}INCOMING{\_}ARGS}}{342} ! \entry {\code {INIT{\_}SECTION{\_}ASM{\_}OP}}{367, 380} ! \entry {\code {INITIAL{\_}ELIMINATION{\_}OFFSET}}{337} ! \entry {\code {INITIAL{\_}FRAME{\_}POINTER{\_}OFFSET}}{337} ! \entry {initialization routines}{378} \entry {initializations in expressions}{122} ! \entry {\code {INITIALIZE{\_}TRAMPOLINE}}{354} \entry {initializers with labeled elements}{123} \entry {initializers, non-constant}{122} --- 743,823 ---- \entry {gp-relative references (MIPS)}{63} \entry {\code {gprof}}{38} ! \entry {greater than}{224} \entry {grouping options}{17} ! \entry {\code {gt}}{224} ! \entry {\code {gt} and attributes}{295} ! \entry {\code {gtu}}{224} ! \entry {\code {gtu} and attributes}{295} \initial {H} ! \entry {\samp {H} in constraint}{256} ! \entry {\code {HANDLE{\_}PRAGMA}}{401} ! \entry {hard registers}{216} ! \entry {\code {HARD{\_}FRAME{\_}POINTER{\_}REGNUM}}{337} ! \entry {\code {HARD{\_}REGNO{\_}MODE{\_}OK}}{324} ! \entry {\code {HARD{\_}REGNO{\_}NREGS}}{324} \entry {hardware models and configurations, specifying}{50} ! \entry {\code {HAVE{\_}ATEXIT}}{402} ! \entry {\code {HAVE{\_}POST{\_}DECREMENT}}{361} ! \entry {\code {HAVE{\_}POST{\_}INCREMENT}}{361} ! \entry {\code {HAVE{\_}PRE{\_}DECREMENT}}{361} ! \entry {\code {HAVE{\_}PRE{\_}INCREMENT}}{361} ! \entry {\code {HAVE{\_}PUTENV}}{404} ! \entry {\code {HAVE{\_}VPRINTF}}{404} ! \entry {header files and VMS}{187} ! \entry {\code {high}}{215} ! \entry {\code {HImode}}{211} ! \entry {\code {HImode}, in \code {insn}}{236} ! \entry {\code {HOST{\_}BITS{\_}PER{\_}CHAR}}{403} ! \entry {\code {HOST{\_}BITS{\_}PER{\_}INT}}{403} ! \entry {\code {HOST{\_}BITS{\_}PER{\_}LONG}}{403} ! \entry {\code {HOST{\_}BITS{\_}PER{\_}SHORT}}{403} ! \entry {\code {HOST{\_}FLOAT{\_}FORMAT}}{403} ! \entry {\code {HOST{\_}FLOAT{\_}WORDS{\_}BIG{\_}ENDIAN}}{403} ! \entry {\code {HOST{\_}WORDS{\_}BIG{\_}ENDIAN}}{403} \entry {HPPA Options}{64} \initial {I} ! \entry {\samp {i} in constraint}{256} ! \entry {\samp {I} in constraint}{256} \entry {i386 Options}{64} \entry {IBM RS/6000 and PowerPC Options}{58} \entry {IBM RT options}{60} ! \entry {IBM RT PC}{160} \entry {identifier names, dollar signs in}{129} \entry {identifiers, names in assembler code}{137} \entry {identifying source, compiler (88k)}{55} ! \entry {\code {IEEE{\_}FLOAT{\_}FORMAT}}{318} ! \entry {\code {if{\_}then{\_}else}}{224} ! \entry {\code {if{\_}then{\_}else} and attributes}{294} ! \entry {\code {if{\_}then{\_}else} usage}{227} ! \entry {\code {immediate{\_}operand}}{248} ! \entry {\code {IMMEDIATE{\_}PREFIX}}{385} \entry {implicit argument: return value}{145} ! \entry {\code {IMPLICIT{\_}FIX{\_}EXPR}}{398} \entry {implied \code {#pragma implementation}}{149} ! \entry {\code {in{\_}data}}{369} ! \entry {\code {in{\_}struct}}{209} ! \entry {\code {in{\_}struct}, in \code {code{\_}label}}{209} ! \entry {\code {in{\_}struct}, in \code {insn}}{208, 209} ! \entry {\code {in{\_}struct}, in \code {label{\_}ref}}{208} ! \entry {\code {in{\_}struct}, in \code {mem}}{207} ! \entry {\code {in{\_}struct}, in \code {reg}}{207} ! \entry {\code {in{\_}struct}, in \code {subreg}}{207} ! \entry {\code {in{\_}text}}{369} ! \entry {include files and VMS}{187} ! \entry {\code {INCLUDE{\_}DEFAULTS}}{310} ! \entry {inclusive-or, bitwise}{222} ! \entry {\code {INCOMING{\_}REGNO}}{323} ! \entry {incompatibilities of GNU CC}{162} ! \entry {increment operators}{175} ! \entry {\code {INDEX{\_}REG{\_}CLASS}}{330} ! \entry {\code {indirect{\_}jump} instruction pattern}{274} ! \entry {\code {INIT{\_}CUMULATIVE{\_}ARGS}}{344} ! \entry {\code {INIT{\_}CUMULATIVE{\_}INCOMING{\_}ARGS}}{344} ! \entry {\code {INIT{\_}SECTION{\_}ASM{\_}OP}}{369, 382} ! \entry {\code {INITIAL{\_}ELIMINATION{\_}OFFSET}}{339} ! \entry {\code {INITIAL{\_}FRAME{\_}POINTER{\_}OFFSET}}{339} ! \entry {initialization routines}{380} \entry {initializations in expressions}{122} ! \entry {\code {INITIALIZE{\_}TRAMPOLINE}}{356} \entry {initializers with labeled elements}{123} \entry {initializers, non-constant}{122} *************** *** 822,893 **** \entry {inline functions}{132} \entry {inline functions, omission of}{132} ! \entry {inline, automatic}{196} \entry {inlining and C{\tt\char43}{\tt\char43} pragmas}{149} ! \entry {\code {insn}}{232} ! \entry {\code {insn} and \samp {/i}}{207} ! \entry {\code {insn} and \samp {/s}}{206} ! \entry {\code {insn} and \samp {/u}}{206} ! \entry {insn attributes}{290} ! \entry {insn canonicalization}{279} ! \entry {insn lengths, computing}{297} ! \entry {insn splitting}{287} ! \entry {\code {insn-attr.h}}{291} ! \entry {\code {INSN{\_}ANNULLED{\_}BRANCH{\_}P}}{206} ! \entry {\code {INSN{\_}CACHE{\_}DEPTH}}{355} ! \entry {\code {INSN{\_}CACHE{\_}LINE{\_}WIDTH}}{355} ! \entry {\code {INSN{\_}CACHE{\_}SIZE}}{355} ! \entry {\code {INSN{\_}CLOBBERS{\_}REGNO{\_}P}}{326} ! \entry {\code {INSN{\_}CODE}}{235} ! \entry {\code {INSN{\_}DELETED{\_}P}}{206} ! \entry {\code {INSN{\_}FROM{\_}TARGET{\_}P}}{206} ! \entry {\code {insn{\_}list}}{239} ! \entry {\code {INSN{\_}REFERENCES{\_}ARE{\_}DELAYED}}{399} ! \entry {\code {INSN{\_}SETS{\_}ARE{\_}DELAYED}}{399} ! \entry {\code {INSN{\_}UID}}{231} ! \entry {insns}{231} ! \entry {insns, generating}{245} ! \entry {insns, recognizing}{245} \entry {installation trouble}{151} \entry {installing GNU CC}{77} ! \entry {installing GNU CC on the 3b1}{96} \entry {installing GNU CC on the Sun}{96} \entry {installing GNU CC on Unos}{97} \entry {installing GNU CC on VMS}{98} ! \entry {instruction attributes}{290} ! \entry {instruction combination}{198} ! \entry {instruction patterns}{243} ! \entry {instruction recognizer}{200} ! \entry {instruction scheduling}{198} ! \entry {instruction splitting}{287} ! \entry {\code {insv} instruction pattern}{270} ! \entry {\code {INT{\_}TYPE{\_}SIZE}}{317} ! \entry {\code {INTEGRATE{\_}THRESHOLD}}{398} ! \entry {\code {integrated}}{208} ! \entry {\code {integrated}, in \code {insn}}{206} ! \entry {\code {integrated}, in \code {reg}}{205} \entry {integrating function code}{132} \entry {Intel 386 Options}{64} ! \entry {Interdependence of Patterns}{275} \entry {interface and implementation headers, C{\tt\char43}{\tt\char43}}{148} ! \entry {interfacing to GNU CC output}{193} \entry {intermediate C version, nonexistent}{15} ! \entry {\code {INTIFY}}{358} ! \entry {invalid assembly code}{173} ! \entry {invalid input}{174} \entry {invoking \code {g{\tt\char43}{\tt\char43}}}{23} ! \entry {\code {ior}}{220} ! \entry {\code {ior} and attributes}{292} ! \entry {\code {ior}, canonicalization of}{279} ! \entry {\code {ior\var {m}3} instruction pattern}{267} ! \entry {\code {isinf}}{393} ! \entry {\code {isnan}}{393} \initial {J} ! \entry {jump instruction patterns}{277} ! \entry {jump instructions and \code {set}}{225} ! \entry {jump optimization}{196} ! \entry {jump threading}{197} ! \entry {\code {jump{\_}insn}}{232} ! \entry {\code {JUMP{\_}LABEL}}{233} ! \entry {\code {JUMP{\_}TABLES{\_}IN{\_}TEXT{\_}SECTION}}{368} \initial {K} \entry {kernel and user registers (29k)}{55} --- 825,896 ---- \entry {inline functions}{132} \entry {inline functions, omission of}{132} ! \entry {inline, automatic}{198} \entry {inlining and C{\tt\char43}{\tt\char43} pragmas}{149} ! \entry {\code {insn}}{234} ! \entry {\code {insn} and \samp {/i}}{209} ! \entry {\code {insn} and \samp {/s}}{208} ! \entry {\code {insn} and \samp {/u}}{208} ! \entry {insn attributes}{292} ! \entry {insn canonicalization}{281} ! \entry {insn lengths, computing}{299} ! \entry {insn splitting}{289} ! \entry {\code {insn-attr.h}}{293} ! \entry {\code {INSN{\_}ANNULLED{\_}BRANCH{\_}P}}{208} ! \entry {\code {INSN{\_}CACHE{\_}DEPTH}}{357} ! \entry {\code {INSN{\_}CACHE{\_}LINE{\_}WIDTH}}{357} ! \entry {\code {INSN{\_}CACHE{\_}SIZE}}{357} ! \entry {\code {INSN{\_}CLOBBERS{\_}REGNO{\_}P}}{328} ! \entry {\code {INSN{\_}CODE}}{237} ! \entry {\code {INSN{\_}DELETED{\_}P}}{208} ! \entry {\code {INSN{\_}FROM{\_}TARGET{\_}P}}{208} ! \entry {\code {insn{\_}list}}{241} ! \entry {\code {INSN{\_}REFERENCES{\_}ARE{\_}DELAYED}}{402} ! \entry {\code {INSN{\_}SETS{\_}ARE{\_}DELAYED}}{402} ! \entry {\code {INSN{\_}UID}}{233} ! \entry {insns}{233} ! \entry {insns, generating}{247} ! \entry {insns, recognizing}{247} \entry {installation trouble}{151} \entry {installing GNU CC}{77} ! \entry {installing GNU CC on the 3b1}{97} \entry {installing GNU CC on the Sun}{96} \entry {installing GNU CC on Unos}{97} \entry {installing GNU CC on VMS}{98} ! \entry {instruction attributes}{292} ! \entry {instruction combination}{200} ! \entry {instruction patterns}{245} ! \entry {instruction recognizer}{202} ! \entry {instruction scheduling}{200} ! \entry {instruction splitting}{289} ! \entry {\code {insv} instruction pattern}{272} ! \entry {\code {INT{\_}TYPE{\_}SIZE}}{319} ! \entry {\code {INTEGRATE{\_}THRESHOLD}}{401} ! \entry {\code {integrated}}{210} ! \entry {\code {integrated}, in \code {insn}}{208} ! \entry {\code {integrated}, in \code {reg}}{207} \entry {integrating function code}{132} \entry {Intel 386 Options}{64} ! \entry {Interdependence of Patterns}{277} \entry {interface and implementation headers, C{\tt\char43}{\tt\char43}}{148} ! \entry {interfacing to GNU CC output}{195} \entry {intermediate C version, nonexistent}{15} ! \entry {\code {INTIFY}}{360} ! \entry {invalid assembly code}{175} ! \entry {invalid input}{176} \entry {invoking \code {g{\tt\char43}{\tt\char43}}}{23} ! \entry {\code {ior}}{222} ! \entry {\code {ior} and attributes}{294} ! \entry {\code {ior}, canonicalization of}{281} ! \entry {\code {ior\var {m}3} instruction pattern}{269} ! \entry {\code {isinf}}{396} ! \entry {\code {isnan}}{396} \initial {J} ! \entry {jump instruction patterns}{279} ! \entry {jump instructions and \code {set}}{227} ! \entry {jump optimization}{198} ! \entry {jump threading}{199} ! \entry {\code {jump{\_}insn}}{234} ! \entry {\code {JUMP{\_}LABEL}}{235} ! \entry {\code {JUMP{\_}TABLES{\_}IN{\_}TEXT{\_}SECTION}}{370} \initial {K} \entry {kernel and user registers (29k)}{55} *************** *** 895,904 **** \entry {known causes of trouble}{151} \initial {L} ! \entry {\code {LABEL{\_}NUSES}}{233} ! \entry {\code {LABEL{\_}OUTSIDE{\_}LOOP{\_}P}}{206} ! \entry {\code {LABEL{\_}PRESERVE{\_}P}}{207} ! \entry {\code {label{\_}ref}}{213} ! \entry {\code {label{\_}ref} and \samp {/s}}{206} ! \entry {\code {label{\_}ref}, RTL sharing}{241} \entry {labeled elements in initializers}{123} \entry {labels as values}{109} --- 898,907 ---- \entry {known causes of trouble}{151} \initial {L} ! \entry {\code {LABEL{\_}NUSES}}{235} ! \entry {\code {LABEL{\_}OUTSIDE{\_}LOOP{\_}P}}{208} ! \entry {\code {LABEL{\_}PRESERVE{\_}P}}{209} ! \entry {\code {label{\_}ref}}{215} ! \entry {\code {label{\_}ref} and \samp {/s}}{208} ! \entry {\code {label{\_}ref}, RTL sharing}{243} \entry {labeled elements in initializers}{123} \entry {labels as values}{109} *************** *** 906,985 **** \entry {language dialect options}{24} \entry {large bit shifts (88k)}{58} ! \entry {large return values}{345} ! \entry {\code {LAST{\_}STACK{\_}REG}}{325} ! \entry {\code {LAST{\_}VIRTUAL{\_}REGISTER}}{214} ! \entry {\code {ldexp}}{392} ! \entry {\code {le}}{222} ! \entry {\code {le} and attributes}{293} ! \entry {leaf functions}{324} ! \entry {\code {leaf{\_}function}}{325} ! \entry {\code {leaf{\_}function{\_}p}}{272} ! \entry {\code {LEAF{\_}REG{\_}REMAP}}{324} ! \entry {\code {LEAF{\_}REGISTERS}}{324} ! \entry {left rotate}{220} ! \entry {left shift}{220} ! \entry {\code {LEGITIMATE{\_}CONSTANT{\_}P}}{362} ! \entry {\code {LEGITIMATE{\_}PIC{\_}OPERAND{\_}P}}{369} ! \entry {\code {LEGITIMIZE{\_}ADDRESS}}{361} \entry {length-zero arrays}{118} ! \entry {less than}{222} ! \entry {less than or equal}{222} ! \entry {\code {leu}}{222} ! \entry {\code {leu} and attributes}{293} ! \entry {\code {LIB{\_}SPEC}}{306} ! \entry {\code {LIBCALL{\_}VALUE}}{344} ! \entry {\file {libgcc.a}}{356} ! \entry {\code {LIBGCC{\_}NEEDS{\_}DOUBLE}}{357} \entry {Libraries}{46} ! \entry {library subroutine names}{356} \entry {\code {LIBRARY{\_}PATH}}{72} ! \entry {\code {LIMIT{\_}RELOAD{\_}CLASS}}{329} \entry {link options}{46} ! \entry {\code {LINK{\_}LIBGCC{\_}SPECIAL}}{307} ! \entry {\code {LINK{\_}LIBGCC{\_}SPECIAL{\_}1}}{307} ! \entry {\code {LINK{\_}SPEC}}{306} ! \entry {\code {lo{\_}sum}}{218} ! \entry {load address instruction}{255} ! \entry {\code {LOAD{\_}EXTEND{\_}OP}}{395} ! \entry {\code {load{\_}multiple} instruction pattern}{266} \entry {local labels}{108} ! \entry {local register allocation}{198} \entry {local variables in macros}{114} \entry {local variables, specifying registers}{140} ! \entry {\code {LOCAL{\_}INCLUDE{\_}DIR}}{308} ! \entry {\code {LOCAL{\_}LABEL{\_}PREFIX}}{383} ! \entry {\code {LOG{\_}LINKS}}{235} ! \entry {logical shift}{220} ! \entry {logical-and, bitwise}{219} \entry {\code {long long} data types}{117} ! \entry {\code {LONG{\_}DOUBLE{\_}TYPE{\_}SIZE}}{318} ! \entry {\code {LONG{\_}LONG{\_}TYPE{\_}SIZE}}{318} ! \entry {\code {LONG{\_}TYPE{\_}SIZE}}{317} \entry {\code {longjmp}}{140} ! \entry {\code {longjmp} and automatic variables}{25, 193} ! \entry {\code {longjmp} incompatibilities}{161} \entry {\code {longjmp} warnings}{32} ! \entry {\code {LONGJMP{\_}RESTORE{\_}FROM{\_}STACK}}{337} ! \entry {loop optimization}{197} ! \entry {\code {lshift}}{220} ! \entry {\code {lshift} and attributes}{293} ! \entry {\code {lshiftrt}}{220} ! \entry {\code {lshiftrt} and attributes}{293} ! \entry {\code {lshl\var {m}3} instruction pattern}{268} ! \entry {\code {lshr\var {m}3} instruction pattern}{268} ! \entry {\code {lt}}{222} ! \entry {\code {lt} and attributes}{293} ! \entry {\code {ltu}}{222} \entry {lvalues, generalized}{115} \initial {M} ! \entry {\samp {m} in constraint}{253} \entry {M680x0 options}{51} \entry {M88k options}{55} \entry {machine dependent options}{50} ! \entry {machine description macros}{305} ! \entry {machine descriptions}{243} ! \entry {machine mode conversions}{223} ! \entry {machine modes}{208} ! \entry {machine specific constraints}{260} \entry {macro with variable arguments}{120} \entry {macros containing \code {asm}}{136} --- 909,988 ---- \entry {language dialect options}{24} \entry {large bit shifts (88k)}{58} ! \entry {large return values}{347} ! \entry {\code {LAST{\_}STACK{\_}REG}}{327} ! \entry {\code {LAST{\_}VIRTUAL{\_}REGISTER}}{216} ! \entry {\code {ldexp}}{395} ! \entry {\code {le}}{224} ! \entry {\code {le} and attributes}{295} ! \entry {leaf functions}{326} ! \entry {\code {leaf{\_}function}}{327} ! \entry {\code {leaf{\_}function{\_}p}}{274} ! \entry {\code {LEAF{\_}REG{\_}REMAP}}{326} ! \entry {\code {LEAF{\_}REGISTERS}}{326} ! \entry {left rotate}{222} ! \entry {left shift}{222} ! \entry {\code {LEGITIMATE{\_}CONSTANT{\_}P}}{364} ! \entry {\code {LEGITIMATE{\_}PIC{\_}OPERAND{\_}P}}{371} ! \entry {\code {LEGITIMIZE{\_}ADDRESS}}{363} \entry {length-zero arrays}{118} ! \entry {less than}{224} ! \entry {less than or equal}{224} ! \entry {\code {leu}}{224} ! \entry {\code {leu} and attributes}{295} ! \entry {\code {LIB{\_}SPEC}}{308} ! \entry {\code {LIBCALL{\_}VALUE}}{346} ! \entry {\file {libgcc.a}}{358} ! \entry {\code {LIBGCC{\_}NEEDS{\_}DOUBLE}}{359} \entry {Libraries}{46} ! \entry {library subroutine names}{358} \entry {\code {LIBRARY{\_}PATH}}{72} ! \entry {\code {LIMIT{\_}RELOAD{\_}CLASS}}{331} \entry {link options}{46} ! \entry {\code {LINK{\_}LIBGCC{\_}SPECIAL}}{309} ! \entry {\code {LINK{\_}LIBGCC{\_}SPECIAL{\_}1}}{309} ! \entry {\code {LINK{\_}SPEC}}{308} ! \entry {\code {lo{\_}sum}}{220} ! \entry {load address instruction}{257} ! \entry {\code {LOAD{\_}EXTEND{\_}OP}}{398} ! \entry {\code {load{\_}multiple} instruction pattern}{268} \entry {local labels}{108} ! \entry {local register allocation}{200} \entry {local variables in macros}{114} \entry {local variables, specifying registers}{140} ! \entry {\code {LOCAL{\_}INCLUDE{\_}DIR}}{310} ! \entry {\code {LOCAL{\_}LABEL{\_}PREFIX}}{385} ! \entry {\code {LOG{\_}LINKS}}{237} ! \entry {logical shift}{222} ! \entry {logical-and, bitwise}{221} \entry {\code {long long} data types}{117} ! \entry {\code {LONG{\_}DOUBLE{\_}TYPE{\_}SIZE}}{320} ! \entry {\code {LONG{\_}LONG{\_}TYPE{\_}SIZE}}{320} ! \entry {\code {LONG{\_}TYPE{\_}SIZE}}{319} \entry {\code {longjmp}}{140} ! \entry {\code {longjmp} and automatic variables}{25, 195} ! \entry {\code {longjmp} incompatibilities}{162} \entry {\code {longjmp} warnings}{32} ! \entry {\code {LONGJMP{\_}RESTORE{\_}FROM{\_}STACK}}{339} ! \entry {loop optimization}{199} ! \entry {\code {lshift}}{222} ! \entry {\code {lshift} and attributes}{295} ! \entry {\code {lshiftrt}}{222} ! \entry {\code {lshiftrt} and attributes}{295} ! \entry {\code {lshl\var {m}3} instruction pattern}{270} ! \entry {\code {lshr\var {m}3} instruction pattern}{270} ! \entry {\code {lt}}{224} ! \entry {\code {lt} and attributes}{295} ! \entry {\code {ltu}}{224} \entry {lvalues, generalized}{115} \initial {M} ! \entry {\samp {m} in constraint}{255} \entry {M680x0 options}{51} \entry {M88k options}{55} \entry {machine dependent options}{50} ! \entry {machine description macros}{307} ! \entry {machine descriptions}{245} ! \entry {machine mode conversions}{225} ! \entry {machine modes}{210} ! \entry {machine specific constraints}{262} \entry {macro with variable arguments}{120} \entry {macros containing \code {asm}}{136} *************** *** 988,1178 **** \entry {macros, local variables in}{114} \entry {macros, statements in expressions}{107} ! \entry {macros, target description}{305} \entry {macros, types of arguments}{114} ! \entry {\code {main} and the exit status}{188} \entry {make}{45} ! \entry {\code {make{\_}safe{\_}from}}{286} ! \entry {\code {match{\_}dup}}{246} ! \entry {\code {match{\_}dup} and attributes}{298} ! \entry {\code {match{\_}op{\_}dup}}{248} ! \entry {\code {match{\_}operand}}{245} ! \entry {\code {match{\_}operand} and attributes}{292} ! \entry {\code {match{\_}operator}}{246} ! \entry {\code {match{\_}par{\_}dup}}{249} ! \entry {\code {match{\_}parallel}}{248} ! \entry {\code {match{\_}scratch}}{246} ! \entry {matching constraint}{255} ! \entry {matching operands}{250} ! \entry {math libraries}{194} ! \entry {math, in RTL}{218} ! \entry {\code {MAX{\_}BITS{\_}PER{\_}WORD}}{312} ! \entry {\code {MAX{\_}CHAR{\_}TYPE{\_}SIZE}}{318} ! \entry {\code {MAX{\_}FIXED{\_}MODE{\_}SIZE}}{316} ! \entry {\code {MAX{\_}INT{\_}TYPE{\_}SIZE}}{317} ! \entry {\code {MAX{\_}LONG{\_}TYPE{\_}SIZE}}{317} ! \entry {\code {MAX{\_}MOVE{\_}MAX}}{396} ! \entry {\code {MAX{\_}OFILE{\_}ALIGNMENT}}{314} ! \entry {\code {MAX{\_}REGS{\_}PER{\_}ADDRESS}}{359} ! \entry {\code {MAX{\_}UNITS{\_}PER{\_}WORD}}{312} ! \entry {\code {MAX{\_}WCHAR{\_}TYPE{\_}SIZE}}{319} \entry {maximum operator}{147} ! \entry {\code {max\var {m}3} instruction pattern}{267} ! \entry {\code {MAYBE{\_}REG{\_}PARM{\_}STACK{\_}SPACE}}{339} ! \entry {\code {mcount}}{350} ! \entry {\code {MD{\_}CALL{\_}PROTOTYPES}}{403} ! \entry {\code {MD{\_}EXEC{\_}PREFIX}}{307} ! \entry {\code {MD{\_}STARTFILE{\_}PREFIX}}{307} ! \entry {\code {MD{\_}STARTFILE{\_}PREFIX{\_}1}}{307} ! \entry {\code {mem}}{217} ! \entry {\code {mem} and \samp {/s}}{205} ! \entry {\code {mem} and \samp {/u}}{205} ! \entry {\code {mem} and \samp {/v}}{205} ! \entry {\code {mem}, RTL sharing}{241} ! \entry {\code {MEM{\_}IN{\_}STRUCT{\_}P}}{205} ! \entry {\code {MEM{\_}VOLATILE{\_}P}}{205} \entry {member fns, automatically \code {inline}}{132} \entry {\code {memcmp}}{25} \entry {\code {memcpy}}{25} ! \entry {\code {memcpy}, implicit usage}{357} \entry {memory model (29k)}{55} ! \entry {memory reference, nonoffsettable}{257} ! \entry {memory references in constraints}{253} ! \entry {\code {MEMORY{\_}MOVE{\_}COST}}{365} ! \entry {\code {memset}, implicit usage}{357} \entry {messages, warning}{31} ! \entry {messages, warning and error}{172} \entry {middle-operands, omitted}{116} \entry {minimum operator}{147} ! \entry {\code {min\var {m}3} instruction pattern}{267} ! \entry {\code {minus}}{218} ! \entry {\code {minus} and attributes}{293} ! \entry {\code {minus}, canonicalization of}{279} \entry {MIPS options}{61} ! \entry {misunderstandings in C{\tt\char43}{\tt\char43}}{166} ! \entry {\code {mktemp}, and constant strings}{161} ! \entry {\code {mod}}{219} ! \entry {\code {mod} and attributes}{293} ! \entry {\code {MODDI3{\_}LIBCALL}}{357} \entry {\code {mode} attribute}{131} ! \entry {mode classes}{210} ! \entry {\code {MODE{\_}CC}}{210} ! \entry {\code {MODE{\_}COMPLEX{\_}FLOAT}}{210} ! \entry {\code {MODE{\_}COMPLEX{\_}INT}}{210} ! \entry {\code {MODE{\_}FLOAT}}{210} ! \entry {\code {MODE{\_}FUNCTION}}{210} ! \entry {\code {MODE{\_}INT}}{210} ! \entry {\code {MODE{\_}PARTIAL{\_}INT}}{210} ! \entry {\code {MODE{\_}RANDOM}}{210} ! \entry {\code {MODES{\_}TIEABLE{\_}P}}{324} ! \entry {modifiers in constraints}{259} ! \entry {\code {mod\var {m}3} instruction pattern}{267} ! \entry {\code {MODSI3{\_}LIBCALL}}{356} ! \entry {\code {MOVE{\_}MAX}}{396} ! \entry {\code {MOVE{\_}RATIO}}{366} ! \entry {\code {mov\var {m}} instruction pattern}{265} ! \entry {\code {movstrict\var {m}} instruction pattern}{266} ! \entry {\code {movstr\var {m}} instruction pattern}{268} ! \entry {\code {MULDI3{\_}LIBCALL}}{356} ! \entry {\code {mulhisi3} instruction pattern}{267} ! \entry {\code {mul\var {m}3} instruction pattern}{267} ! \entry {\code {mulqihi3} instruction pattern}{267} ! \entry {\code {MULSI3{\_}LIBCALL}}{356} ! \entry {\code {mulsidi3} instruction pattern}{267} ! \entry {\code {mult}}{219} ! \entry {\code {mult} and attributes}{293} ! \entry {\code {mult}, canonicalization of}{279} ! \entry {\code {MULTIBYTE{\_}CHARS}}{402} ! \entry {multiple alternative constraints}{257} ! \entry {multiplication}{219} \entry {multiprecision arithmetic}{117} ! \entry {\code {MUST{\_}PASS{\_}IN{\_}STACK}, and \code {FUNCTION{\_}ARG}}{340} \initial {N} ! \entry {\samp {n} in constraint}{254} ! \entry {\code {N{\_}REG{\_}CLASSES}}{328} ! \entry {name augmentation}{189} ! \entry {named patterns and conditions}{244} \entry {named return value in C{\tt\char43}{\tt\char43}}{145} \entry {names used in assembler code}{137} ! \entry {names, pattern}{265} \entry {naming convention, implementation headers}{149} \entry {naming types}{113} ! \entry {\code {ne}}{221} ! \entry {\code {ne} and attributes}{293} ! \entry {\code {neg}}{219} ! \entry {\code {neg} and attributes}{293} ! \entry {\code {neg}, canonicalization of}{279} ! \entry {\code {neg\var {m}2} instruction pattern}{268} \entry {nested functions}{110} ! \entry {nested functions, trampolines for}{353} \entry {newline vs string constants}{26} ! \entry {\code {next{\_}cc0{\_}user}}{278} ! \entry {\code {NEXT{\_}INSN}}{232} ! \entry {\code {NEXT{\_}OBJC{\_}RUNTIME}}{359} ! \entry {nil}{202} ! \entry {no constraints}{264} ! \entry {no-op move instructions}{199} ! \entry {\code {NO{\_}BUILTIN{\_}PTRDIFF{\_}TYPE}}{305} ! \entry {\code {NO{\_}BUILTIN{\_}SIZE{\_}TYPE}}{305} ! \entry {\code {NO{\_}DOLLAR{\_}IN{\_}LABEL}}{399} ! \entry {\code {NO{\_}FUNCTION{\_}CSE}}{366} ! \entry {\code {NO{\_}MD{\_}PROTOTYPES}}{403} ! \entry {\code {NO{\_}RECURSIVE{\_}FUNCTION{\_}CSE}}{367} ! \entry {\code {NO{\_}REGS}}{327} ! \entry {\code {NO{\_}STAB{\_}H}}{403} ! \entry {\code {NO{\_}SYS{\_}SIGLIST}}{402} \entry {non-constant initializers}{122} \entry {non-static inline function}{132} ! \entry {\code {NON{\_}SAVING{\_}SETJMP}}{321} ! \entry {\code {nongcc{\_}SI{\_}type}}{358} ! \entry {\code {nongcc{\_}word{\_}type}}{359} ! \entry {nonoffsettable memory reference}{257} ! \entry {\code {nop} instruction pattern}{272} ! \entry {\code {not}}{219} ! \entry {\code {not} and attributes}{292} ! \entry {not equal}{221} ! \entry {not using constraints}{264} ! \entry {\code {not}, canonicalization of}{279} ! \entry {\code {note}}{233} ! \entry {\code {NOTE{\_}INSN{\_}BLOCK{\_}BEG}}{234} ! \entry {\code {NOTE{\_}INSN{\_}BLOCK{\_}END}}{234} ! \entry {\code {NOTE{\_}INSN{\_}DELETED}}{234} ! \entry {\code {NOTE{\_}INSN{\_}FUNCTION{\_}END}}{234} ! \entry {\code {NOTE{\_}INSN{\_}LOOP{\_}BEG}}{234} ! \entry {\code {NOTE{\_}INSN{\_}LOOP{\_}CONT}}{234} ! \entry {\code {NOTE{\_}INSN{\_}LOOP{\_}END}}{234} ! \entry {\code {NOTE{\_}INSN{\_}LOOP{\_}VTOP}}{234} ! \entry {\code {NOTE{\_}INSN{\_}SETJMP}}{234} ! \entry {\code {NOTE{\_}LINE{\_}NUMBER}}{233} ! \entry {\code {NOTE{\_}SOURCE{\_}FILE}}{233} ! \entry {\code {NOTICE{\_}UPDATE{\_}CC}}{362} ! \entry {\code {NUM{\_}MACHINE{\_}MODES}}{211} \initial {O} ! \entry {\samp {o} in constraint}{253} ! \entry {\code {OBJC{\_}GEN{\_}METHOD{\_}LABEL}}{377} \entry {\code {OBJC{\_}INCLUDE{\_}PATH}}{72} ! \entry {\code {OBJC{\_}INT{\_}SELECTORS}}{319} ! \entry {\code {OBJC{\_}PROLOGUE}}{371} ! \entry {\code {OBJC{\_}SELECTORS{\_}WITHOUT{\_}LABELS}}{319} ! \entry {\code {OBJECT{\_}FORMAT{\_}COFF}}{381} ! \entry {\code {OBJECT{\_}FORMAT{\_}ROSE}}{381} \entry {Objective C}{15} ! \entry {\code {OBSTACK{\_}CHUNK{\_}ALLOC}}{402} ! \entry {\code {OBSTACK{\_}CHUNK{\_}FREE}}{402} ! \entry {\code {OBSTACK{\_}CHUNK{\_}SIZE}}{402} \entry {\code {obstack{\_}free}}{97} \entry {OCS (88k)}{56} ! \entry {offsettable address}{253} \entry {old-style function definitions}{128} \entry {omitted middle-operands}{116} ! \entry {\code {one{\_}cmpl\var {m}2} instruction pattern}{268} ! \entry {\code {ONLY{\_}INT{\_}FIELDS}}{401} \entry {open coding}{132} ! \entry {operand access}{202} ! \entry {operand constraints}{253} ! \entry {operand substitution}{249} ! \entry {\code {operands}}{244} ! \entry {\code {OPTIMIZATION{\_}OPTIONS}}{311} \entry {optimize options}{39} ! \entry {optional hardware or system features}{310} \entry {options to control warnings}{31} \entry {options, C{\tt\char43}{\tt\char43}}{27} --- 991,1184 ---- \entry {macros, local variables in}{114} \entry {macros, statements in expressions}{107} ! \entry {macros, target description}{307} \entry {macros, types of arguments}{114} ! \entry {\code {main} and the exit status}{190} \entry {make}{45} ! \entry {\code {make{\_}safe{\_}from}}{288} ! \entry {\code {match{\_}dup}}{248} ! \entry {\code {match{\_}dup} and attributes}{300} ! \entry {\code {match{\_}op{\_}dup}}{250} ! \entry {\code {match{\_}operand}}{247} ! \entry {\code {match{\_}operand} and attributes}{294} ! \entry {\code {match{\_}operator}}{248} ! \entry {\code {match{\_}par{\_}dup}}{251} ! \entry {\code {match{\_}parallel}}{250} ! \entry {\code {match{\_}scratch}}{248} ! \entry {matching constraint}{257} ! \entry {matching operands}{252} ! \entry {math libraries}{196} ! \entry {math, in RTL}{220} ! \entry {\code {MAX{\_}BITS{\_}PER{\_}WORD}}{314} ! \entry {\code {MAX{\_}CHAR{\_}TYPE{\_}SIZE}}{320} ! \entry {\code {MAX{\_}FIXED{\_}MODE{\_}SIZE}}{318} ! \entry {\code {MAX{\_}INT{\_}TYPE{\_}SIZE}}{319} ! \entry {\code {MAX{\_}LONG{\_}TYPE{\_}SIZE}}{319} ! \entry {\code {MAX{\_}MOVE{\_}MAX}}{398} ! \entry {\code {MAX{\_}OFILE{\_}ALIGNMENT}}{316} ! \entry {\code {MAX{\_}REGS{\_}PER{\_}ADDRESS}}{361} ! \entry {\code {MAX{\_}UNITS{\_}PER{\_}WORD}}{314} ! \entry {\code {MAX{\_}WCHAR{\_}TYPE{\_}SIZE}}{321} \entry {maximum operator}{147} ! \entry {\code {max\var {m}3} instruction pattern}{269} ! \entry {\code {MAYBE{\_}REG{\_}PARM{\_}STACK{\_}SPACE}}{341} ! \entry {\code {mcount}}{352} ! \entry {\code {MD{\_}CALL{\_}PROTOTYPES}}{405} ! \entry {\code {MD{\_}EXEC{\_}PREFIX}}{309} ! \entry {\code {MD{\_}STARTFILE{\_}PREFIX}}{309} ! \entry {\code {MD{\_}STARTFILE{\_}PREFIX{\_}1}}{309} ! \entry {\code {mem}}{219} ! \entry {\code {mem} and \samp {/s}}{207} ! \entry {\code {mem} and \samp {/u}}{207} ! \entry {\code {mem} and \samp {/v}}{207} ! \entry {\code {mem}, RTL sharing}{243} ! \entry {\code {MEM{\_}IN{\_}STRUCT{\_}P}}{207} ! \entry {\code {MEM{\_}VOLATILE{\_}P}}{207} \entry {member fns, automatically \code {inline}}{132} \entry {\code {memcmp}}{25} \entry {\code {memcpy}}{25} ! \entry {\code {memcpy}, implicit usage}{359} \entry {memory model (29k)}{55} ! \entry {memory reference, nonoffsettable}{259} ! \entry {memory references in constraints}{255} ! \entry {\code {MEMORY{\_}MOVE{\_}COST}}{367} ! \entry {\code {memset}, implicit usage}{359} \entry {messages, warning}{31} ! \entry {messages, warning and error}{173} \entry {middle-operands, omitted}{116} \entry {minimum operator}{147} ! \entry {\code {min\var {m}3} instruction pattern}{269} ! \entry {\code {minus}}{220} ! \entry {\code {minus} and attributes}{295} ! \entry {\code {minus}, canonicalization of}{281} \entry {MIPS options}{61} ! \entry {misunderstandings in C{\tt\char43}{\tt\char43}}{167} ! \entry {\code {mktemp}, and constant strings}{162} ! \entry {\code {mod}}{221} ! \entry {\code {mod} and attributes}{295} ! \entry {\code {MODDI3{\_}LIBCALL}}{359} \entry {\code {mode} attribute}{131} ! \entry {mode classes}{212} ! \entry {\code {MODE{\_}CC}}{212} ! \entry {\code {MODE{\_}COMPLEX{\_}FLOAT}}{212} ! \entry {\code {MODE{\_}COMPLEX{\_}INT}}{212} ! \entry {\code {MODE{\_}FLOAT}}{212} ! \entry {\code {MODE{\_}FUNCTION}}{212} ! \entry {\code {MODE{\_}INT}}{212} ! \entry {\code {MODE{\_}PARTIAL{\_}INT}}{212} ! \entry {\code {MODE{\_}RANDOM}}{212} ! \entry {\code {MODES{\_}TIEABLE{\_}P}}{326} ! \entry {modifiers in constraints}{261} ! \entry {\code {mod\var {m}3} instruction pattern}{269} ! \entry {\code {MODSI3{\_}LIBCALL}}{358} ! \entry {\code {MOVE{\_}MAX}}{398} ! \entry {\code {MOVE{\_}RATIO}}{368} ! \entry {\code {mov\var {m}} instruction pattern}{267} ! \entry {\code {movstrict\var {m}} instruction pattern}{268} ! \entry {\code {movstr\var {m}} instruction pattern}{270} ! \entry {\code {MULDI3{\_}LIBCALL}}{358} ! \entry {\code {mulhisi3} instruction pattern}{269} ! \entry {\code {mul\var {m}3} instruction pattern}{269} ! \entry {\code {mulqihi3} instruction pattern}{269} ! \entry {\code {MULSI3{\_}LIBCALL}}{358} ! \entry {\code {mulsidi3} instruction pattern}{269} ! \entry {\code {mult}}{221} ! \entry {\code {mult} and attributes}{295} ! \entry {\code {mult}, canonicalization of}{281} ! \entry {\code {MULTIBYTE{\_}CHARS}}{404} ! \entry {multiple alternative constraints}{259} ! \entry {multiplication}{221} \entry {multiprecision arithmetic}{117} ! \entry {\code {MUST{\_}PASS{\_}IN{\_}STACK}, and \code {FUNCTION{\_}ARG}}{342} \initial {N} ! \entry {\samp {n} in constraint}{256} ! \entry {\code {N{\_}REG{\_}CLASSES}}{330} ! \entry {name augmentation}{191} ! \entry {named patterns and conditions}{246} \entry {named return value in C{\tt\char43}{\tt\char43}}{145} \entry {names used in assembler code}{137} ! \entry {names, pattern}{267} \entry {naming convention, implementation headers}{149} \entry {naming types}{113} ! \entry {\code {ne}}{223} ! \entry {\code {ne} and attributes}{295} ! \entry {\code {neg}}{221} ! \entry {\code {neg} and attributes}{295} ! \entry {\code {neg}, canonicalization of}{281} ! \entry {\code {neg\var {m}2} instruction pattern}{270} \entry {nested functions}{110} ! \entry {nested functions, trampolines for}{355} \entry {newline vs string constants}{26} ! \entry {\code {next{\_}cc0{\_}user}}{280} ! \entry {\code {NEXT{\_}INSN}}{234} ! \entry {\code {NEXT{\_}OBJC{\_}RUNTIME}}{361} ! \entry {nil}{204} ! \entry {no constraints}{266} ! \entry {no-op move instructions}{201} ! \entry {\code {NO{\_}BUILTIN{\_}PTRDIFF{\_}TYPE}}{307} ! \entry {\code {NO{\_}BUILTIN{\_}SIZE{\_}TYPE}}{307} ! \entry {\code {NO{\_}DOLLAR{\_}IN{\_}LABEL}}{401} ! \entry {\code {NO{\_}DOT{\_}IN{\_}LABEL}}{402} ! \entry {\code {NO{\_}FUNCTION{\_}CSE}}{368} ! \entry {\code {NO{\_}IMPLICIT{\_}EXTERN{\_}C}}{401} ! \entry {\code {NO{\_}MD{\_}PROTOTYPES}}{405} ! \entry {\code {NO{\_}RECURSIVE{\_}FUNCTION{\_}CSE}}{369} ! \entry {\code {NO{\_}REGS}}{329} ! \entry {\code {NO{\_}STAB{\_}H}}{405} ! \entry {\code {NO{\_}SYS{\_}SIGLIST}}{404} \entry {non-constant initializers}{122} \entry {non-static inline function}{132} ! \entry {\code {NON{\_}SAVING{\_}SETJMP}}{323} ! \entry {\code {nongcc{\_}SI{\_}type}}{360} ! \entry {\code {nongcc{\_}word{\_}type}}{361} ! \entry {nonoffsettable memory reference}{259} ! \entry {\code {nop} instruction pattern}{274} ! \entry {\code {noreturn} function attribute}{126} ! \entry {\code {not}}{221} ! \entry {\code {not} and attributes}{294} ! \entry {not equal}{223} ! \entry {not using constraints}{266} ! \entry {\code {not}, canonicalization of}{281} ! \entry {\code {note}}{235} ! \entry {\code {NOTE{\_}INSN{\_}BLOCK{\_}BEG}}{236} ! \entry {\code {NOTE{\_}INSN{\_}BLOCK{\_}END}}{236} ! \entry {\code {NOTE{\_}INSN{\_}DELETED}}{236} ! \entry {\code {NOTE{\_}INSN{\_}FUNCTION{\_}END}}{236} ! \entry {\code {NOTE{\_}INSN{\_}LOOP{\_}BEG}}{236} ! \entry {\code {NOTE{\_}INSN{\_}LOOP{\_}CONT}}{236} ! \entry {\code {NOTE{\_}INSN{\_}LOOP{\_}END}}{236} ! \entry {\code {NOTE{\_}INSN{\_}LOOP{\_}VTOP}}{236} ! \entry {\code {NOTE{\_}INSN{\_}SETJMP}}{236} ! \entry {\code {NOTE{\_}LINE{\_}NUMBER}}{235} ! \entry {\code {NOTE{\_}SOURCE{\_}FILE}}{235} ! \entry {\code {NOTICE{\_}UPDATE{\_}CC}}{364} ! \entry {\code {NUM{\_}MACHINE{\_}MODES}}{213} \initial {O} ! \entry {\samp {o} in constraint}{255} ! \entry {\code {OBJC{\_}GEN{\_}METHOD{\_}LABEL}}{379} \entry {\code {OBJC{\_}INCLUDE{\_}PATH}}{72} ! \entry {\code {OBJC{\_}INT{\_}SELECTORS}}{321} ! \entry {\code {OBJC{\_}PROLOGUE}}{373} ! \entry {\code {OBJC{\_}SELECTORS{\_}WITHOUT{\_}LABELS}}{321} ! \entry {\code {OBJECT{\_}FORMAT{\_}COFF}}{383} ! \entry {\code {OBJECT{\_}FORMAT{\_}ROSE}}{383} \entry {Objective C}{15} ! \entry {\code {OBSTACK{\_}CHUNK{\_}ALLOC}}{404} ! \entry {\code {OBSTACK{\_}CHUNK{\_}FREE}}{404} ! \entry {\code {OBSTACK{\_}CHUNK{\_}SIZE}}{404} \entry {\code {obstack{\_}free}}{97} \entry {OCS (88k)}{56} ! \entry {offsettable address}{255} \entry {old-style function definitions}{128} \entry {omitted middle-operands}{116} ! \entry {\code {one{\_}cmpl\var {m}2} instruction pattern}{270} ! \entry {\code {ONLY{\_}INT{\_}FIELDS}}{403} \entry {open coding}{132} ! \entry {operand access}{204} ! \entry {operand constraints}{255} ! \entry {operand substitution}{251} ! \entry {\code {operands}}{246} ! \entry {\code {OPTIMIZATION{\_}OPTIONS}}{313} \entry {optimize options}{39} ! \entry {optional hardware or system features}{312} \entry {options to control warnings}{31} \entry {options, C{\tt\char43}{\tt\char43}}{27} *************** *** 1187,1548 **** \entry {options, order}{17} \entry {options, preprocessor}{44} ! \entry {order of evaluation, side effects}{171} \entry {order of options}{17} ! \entry {order of register allocation}{322} ! \entry {\code {ORDER{\_}REGS{\_}FOR{\_}LOCAL{\_}ALLOC}}{322} ! \entry {Ordering of Patterns}{274} \entry {other directory, compilation in}{88} ! \entry {\code {OUTGOING{\_}REG{\_}PARM{\_}STACK{\_}SPACE}}{339} ! \entry {\code {OUTGOING{\_}REGNO}}{321} \entry {output file option}{23} ! \entry {output of assembler code}{370} ! \entry {output statements}{251} ! \entry {output templates}{249} ! \entry {\code {output{\_}addr{\_}const}}{372} ! \entry {\code {output{\_}asm{\_}insn}}{252} ! \entry {overflow while constant folding}{394} ! \entry {\code {OVERLAPPING{\_}REGNO{\_}P}}{326} \entry {overloaded virtual fn, warning}{36} ! \entry {\code {OVERRIDE{\_}OPTIONS}}{311} \initial {P} ! \entry {\samp {p} in constraint}{255} \entry {\code {packed} attribute}{131} ! \entry {\code {parallel}}{227} \entry {parameter forward declaration}{120} ! \entry {parameters, miscellaneous}{394} ! \entry {\code {PARM{\_}BOUNDARY}}{313} \entry {parser generator, Bison}{85} ! \entry {parsing pass}{195} ! \entry {passes and files of the compiler}{195} ! \entry {passing arguments}{193} ! \entry {\code {PATTERN}}{235} ! \entry {pattern conditions}{244} ! \entry {pattern names}{265} ! \entry {Pattern Ordering}{274} ! \entry {patterns}{243} ! \entry {\code {pc}}{217} ! \entry {\code {pc} and attributes}{298} ! \entry {\code {pc}, RTL sharing}{241} ! \entry {\code {pc{\_}rtx}}{217} ! \entry {\code {PCC{\_}BITFIELD{\_}TYPE{\_}MATTERS}}{315} ! \entry {\code {PCC{\_}STATIC{\_}STRUCT{\_}RETURN}}{346} ! \entry {\code {PDImode}}{209} ! \entry {peephole optimization}{199} ! \entry {peephole optimization, RTL representation}{228} ! \entry {peephole optimizer definitions}{280} ! \entry {percent sign}{249} ! \entry {\code {perform{\_}\dots {}}}{359} ! \entry {PIC}{69, 369} ! \entry {\code {PIC{\_}OFFSET{\_}TABLE{\_}REGNUM}}{369} ! \entry {\code {plus}}{218} ! \entry {\code {plus} and attributes}{293} ! \entry {\code {plus}, canonicalization of}{279} ! \entry {\code {Pmode}}{398} \entry {pointer arguments}{127} ! \entry {\code {POINTER{\_}SIZE}}{313} ! \entry {portability}{191} ! \entry {portions of temporary objects, pointers to}{166} ! \entry {position independent code}{369} ! \entry {\code {post{\_}dec}}{230} ! \entry {\code {post{\_}inc}}{230} ! \entry {\code {pragma}}{398} ! \entry {pragma, reason for not using}{127} \entry {pragmas in C{\tt\char43}{\tt\char43}, effect on inlining}{149} \entry {pragmas, interface and implementation}{148} ! \entry {\code {pre{\_}dec}}{229} ! \entry {\code {pre{\_}inc}}{230} ! \entry {predefined macros}{309} ! \entry {\code {PREDICATE{\_}CODES}}{394} ! \entry {\code {PREFERRED{\_}OUTPUT{\_}RELOAD{\_}CLASS}}{329} ! \entry {\code {PREFERRED{\_}RELOAD{\_}CLASS}}{329} ! \entry {preprocessing numbers}{163} ! \entry {preprocessing tokens}{163} \entry {preprocessor options}{44} ! \entry {\code {PRESERVE{\_}DEATH{\_}INFO{\_}REGNO{\_}P}}{326} ! \entry {\code {prev{\_}cc0{\_}setter}}{278} ! \entry {\code {PREV{\_}INSN}}{231} ! \entry {\code {prev{\_}nonnote{\_}insn}}{282} ! \entry {\code {PRINT{\_}OPERAND}}{382} ! \entry {\code {PRINT{\_}OPERAND{\_}ADDRESS}}{383} ! \entry {\code {PRINT{\_}OPERAND{\_}PUNCT{\_}VALID{\_}P}}{382} \entry {processor selection (29k)}{55} ! \entry {product}{219} \entry {\code {prof}}{38} ! \entry {\code {PROFILE{\_}BEFORE{\_}PROLOGUE}}{350} ! \entry {profiling, code generation}{350} ! \entry {program counter}{217} ! \entry {prologue}{347} ! \entry {\code {PROMOTE{\_}FUNCTION{\_}ARGS}}{313} ! \entry {\code {PROMOTE{\_}FUNCTION{\_}RETURN}}{313} ! \entry {\code {PROMOTE{\_}MODE}}{313} ! \entry {\code {PROMOTE{\_}PROTOTYPES}}{338} \entry {promotion of formal parameters}{128} ! \entry {pseudo registers}{214} ! \entry {\code {PSImode}}{209} ! \entry {\code {PTRDIFF{\_}TYPE}}{319} ! \entry {push address instruction}{255} ! \entry {\code {PUSH{\_}ROUNDING}}{338} ! \entry {\code {PUSH{\_}ROUNDING}, interaction with \code {STACK{\_}BOUNDARY}}{313} ! \entry {\code {PUT{\_}CODE}}{201} ! \entry {\code {PUT{\_}MODE}}{211} ! \entry {\code {PUT{\_}REG{\_}NOTE{\_}KIND}}{236} ! \entry {\code {PUT{\_}SDB{\_}\dots {}}}{391} ! \entry {\code {putenv}}{402} \initial {Q} ! \entry {\samp {Q}, in constraint}{255} ! \entry {\code {QImode}}{209} ! \entry {\code {QImode}, in \code {insn}}{234} \entry {\code {qsort}, and global register variables}{139} ! \entry {question mark}{258} ! \entry {quotient}{219} \initial {R} ! \entry {\samp {r} in constraint}{254} \entry {r0-relative references (88k)}{56} \entry {ranges in case statements}{124} ! \entry {read-only strings}{161} ! \entry {\code {READONLY{\_}DATA{\_}SECTION}}{368} ! \entry {\code {REAL{\_}ARITHMETIC}}{393} ! \entry {\code {REAL{\_}INFINITY}}{393} ! \entry {\code {REAL{\_}NM{\_}FILE{\_}NAME}}{381} ! \entry {\code {REAL{\_}VALUE{\_}ATOF}}{393} ! \entry {\code {REAL{\_}VALUE{\_}FIX}}{392} ! \entry {\code {REAL{\_}VALUE{\_}FROM{\_}INT}}{394} ! \entry {\code {REAL{\_}VALUE{\_}ISINF}}{393} ! \entry {\code {REAL{\_}VALUE{\_}ISNAN}}{393} ! \entry {\code {REAL{\_}VALUE{\_}LDEXP}}{392} ! \entry {\code {REAL{\_}VALUE{\_}NEGATE}}{394} ! \entry {\code {REAL{\_}VALUE{\_}RNDZINT}}{393} ! \entry {\code {REAL{\_}VALUE{\_}TO{\_}DECIMAL}}{374} ! \entry {\code {REAL{\_}VALUE{\_}TO{\_}INT}}{394} ! \entry {\code {REAL{\_}VALUE{\_}TO{\_}TARGET{\_}DOUBLE}}{373} ! \entry {\code {REAL{\_}VALUE{\_}TO{\_}TARGET{\_}LONG{\_}DOUBLE}}{373} ! \entry {\code {REAL{\_}VALUE{\_}TO{\_}TARGET{\_}SINGLE}}{373} ! \entry {\code {REAL{\_}VALUE{\_}TRUNCATE}}{394} ! \entry {\code {REAL{\_}VALUE{\_}TYPE}}{392} ! \entry {\code {REAL{\_}VALUE{\_}UNSIGNED{\_}FIX}}{393} ! \entry {\code {REAL{\_}VALUE{\_}UNSIGNED{\_}RNDZINT}}{393} ! \entry {\code {REAL{\_}VALUES{\_}EQUAL}}{392} ! \entry {\code {REAL{\_}VALUES{\_}LESS}}{392} ! \entry {\code {recog{\_}operand}}{382} ! \entry {recognizing insns}{245} ! \entry {\code {reg}}{214} ! \entry {\code {reg} and \samp {/i}}{205} ! \entry {\code {reg} and \samp {/s}}{205} ! \entry {\code {reg} and \samp {/u}}{205} ! \entry {\code {reg} and \samp {/v}}{205} ! \entry {\code {reg}, RTL sharing}{241} ! \entry {\code {REG{\_}ALLOC{\_}ORDER}}{322} ! \entry {\code {REG{\_}CC{\_}SETTER}}{239} ! \entry {\code {REG{\_}CC{\_}USER}}{239} ! \entry {\code {REG{\_}CLASS{\_}CONTENTS}}{328} ! \entry {\code {REG{\_}CLASS{\_}FROM{\_}LETTER}}{329} ! \entry {\code {REG{\_}CLASS{\_}NAMES}}{328} ! \entry {\code {REG{\_}DEAD}}{236} ! \entry {\code {REG{\_}DEP{\_}ANTI}}{239} ! \entry {\code {REG{\_}DEP{\_}OUTPUT}}{239} ! \entry {\code {REG{\_}EQUAL}}{237} ! \entry {\code {REG{\_}EQUIV}}{237} ! \entry {\code {REG{\_}FUNCTION{\_}VALUE{\_}P}}{205} ! \entry {\code {REG{\_}INC}}{236} ! \entry {\code {REG{\_}LABEL}}{237} ! \entry {\code {REG{\_}LEAF{\_}ALLOC{\_}ORDER}}{325} ! \entry {\code {REG{\_}LIBCALL}}{238} ! \entry {\code {REG{\_}LOOP{\_}TEST{\_}P}}{205} ! \entry {\code {reg{\_}names}}{382} ! \entry {\code {REG{\_}NO{\_}CONFLICT}}{236} ! \entry {\code {REG{\_}NONNEG}}{236} ! \entry {\code {REG{\_}NOTE{\_}KIND}}{236} ! \entry {\code {REG{\_}NOTES}}{235} ! \entry {\code {REG{\_}OK{\_}FOR{\_}BASE{\_}P}}{361} ! \entry {\code {REG{\_}OK{\_}FOR{\_}INDEX{\_}P}}{361} ! \entry {\code {REG{\_}OK{\_}STRICT}}{360} ! \entry {\code {REG{\_}PARM{\_}STACK{\_}SPACE}}{338} ! \entry {\code {REG{\_}PARM{\_}STACK{\_}SPACE}, and \code {FUNCTION{\_}ARG}}{340} ! \entry {\code {REG{\_}RETVAL}}{238} ! \entry {\code {REG{\_}UNUSED}}{238} ! \entry {\code {REG{\_}USERVAR{\_}P}}{205} ! \entry {\code {REG{\_}WAS{\_}0}}{238} ! \entry {register allocation}{198} ! \entry {register allocation order}{322} ! \entry {register allocation, stupid}{197} ! \entry {register class definitions}{327} ! \entry {register class preference constraints}{259} ! \entry {register class preference pass}{198} ! \entry {register pairs}{323} \entry {register positions in frame (88k)}{56} ! \entry {Register Transfer Language (RTL)}{201} ! \entry {register usage}{320} ! \entry {register use analysis}{197} \entry {register variable after \code {longjmp}}{140} ! \entry {register-to-stack conversion}{199} ! \entry {\code {REGISTER{\_}MOVE{\_}COST}}{365} ! \entry {\code {REGISTER{\_}NAMES}}{381} ! \entry {\code {register{\_}operand}}{246} ! \entry {\code {REGISTER{\_}PREFIX}}{383} \entry {registers}{133} ! \entry {registers arguments}{340} \entry {registers for local variables}{140} ! \entry {registers in constraints}{254} \entry {registers, global allocation}{138} \entry {registers, global variables in}{138} ! \entry {\code {REGNO{\_}OK{\_}FOR{\_}BASE{\_}P}}{329} ! \entry {\code {REGNO{\_}OK{\_}FOR{\_}INDEX{\_}P}}{329} ! \entry {\code {REGNO{\_}REG{\_}CLASS}}{328} ! \entry {\code {regs{\_}ever{\_}live}}{347} ! \entry {relative costs}{364} ! \entry {\code {RELATIVE{\_}PREFIX{\_}NOT{\_}LINKDIR}}{307} ! \entry {reload pass}{216} ! \entry {\code {reload{\_}completed}}{272} ! \entry {\code {reload{\_}in} instruction pattern}{266} ! \entry {\code {reload{\_}in{\_}progress}}{265} ! \entry {\code {reload{\_}out} instruction pattern}{266} ! \entry {reloading}{198} ! \entry {remainder}{219} ! \entry {reporting bugs}{173} ! \entry {representation of RTL}{201} \entry {rest argument (in macro)}{120} ! \entry {\code {rest{\_}of{\_}compilation}}{195} ! \entry {\code {rest{\_}of{\_}decl{\_}compilation}}{195} ! \entry {\code {restore{\_}stack{\_}block} instruction pattern}{273} ! \entry {\code {restore{\_}stack{\_}function} instruction pattern}{273} ! \entry {\code {restore{\_}stack{\_}nonlocal} instruction pattern}{273} ! \entry {\code {return}}{226} ! \entry {\code {return} instruction pattern}{272} ! \entry {return value of \code {main}}{188} \entry {return value, named, in C{\tt\char43}{\tt\char43}}{145} ! \entry {return values in registers}{343} \entry {\code {return}, in C{\tt\char43}{\tt\char43} function header}{145} ! \entry {\code {RETURN{\_}ADDR{\_}IN{\_}PREVIOUS{\_}FRAME}}{334} ! \entry {\code {RETURN{\_}ADDR{\_}RTX}}{334} ! \entry {\code {RETURN{\_}IN{\_}MEMORY}}{345} ! \entry {\code {RETURN{\_}POPS{\_}ARGS}}{339} ! \entry {returning aggregate values}{345} ! \entry {returning structures and unions}{193} ! \entry {right rotate}{220} ! \entry {right shift}{220} ! \entry {\code {rotate}}{220} ! \entry {\code {rotatert}}{220} ! \entry {\code {rotl\var {m}3} instruction pattern}{268} ! \entry {\code {rotr\var {m}3} instruction pattern}{268} ! \entry {\code {ROUND{\_}TYPE{\_}ALIGN}}{316} ! \entry {\code {ROUND{\_}TYPE{\_}SIZE}}{316} \entry {RS/6000 and PowerPC Options}{58} \entry {RT options}{60} ! \entry {RT PC}{159} ! \entry {RTL addition}{218} ! \entry {RTL comparison}{218} ! \entry {RTL comparison operations}{221} ! \entry {RTL constant expression types}{212} ! \entry {RTL constants}{212} ! \entry {RTL declarations}{224} ! \entry {RTL difference}{218} ! \entry {RTL expression}{201} ! \entry {RTL expressions for arithmetic}{218} ! \entry {RTL format}{202} ! \entry {RTL format characters}{202} ! \entry {RTL function-call insns}{239} ! \entry {RTL generation}{196} ! \entry {RTL insn template}{245} ! \entry {RTL integers}{201} ! \entry {RTL memory expressions}{214} ! \entry {RTL object types}{201} ! \entry {RTL postdecrement}{229} ! \entry {RTL postincrement}{229} ! \entry {RTL predecrement}{229} ! \entry {RTL preincrement}{229} ! \entry {RTL register expressions}{214} ! \entry {RTL representation}{201} ! \entry {RTL side effect expressions}{225} ! \entry {RTL strings}{201} ! \entry {RTL structure sharing assumptions}{241} ! \entry {RTL subtraction}{218} ! \entry {RTL sum}{218} ! \entry {RTL vectors}{201} ! \entry {RTX (See RTL)}{201} ! \entry {\code {RTX{\_}COSTS}}{364} ! \entry {\code {RTX{\_}INTEGRATED{\_}P}}{206} ! \entry {\code {RTX{\_}UNCHANGING{\_}P}}{205} ! \entry {run-time conventions}{193} \entry {run-time options}{68} ! \entry {run-time target specification}{309} \initial {S} ! \entry {\samp {s} in constraint}{254} ! \entry {\code {save{\_}stack{\_}block} instruction pattern}{273} ! \entry {\code {save{\_}stack{\_}function} instruction pattern}{273} ! \entry {\code {save{\_}stack{\_}nonlocal} instruction pattern}{273} ! \entry {\code {saveable{\_}obstack}}{360} ! \entry {scalars, returned as values}{343} ! \entry {\code {scanf}, and constant strings}{161} ! \entry {\code {SCCS{\_}DIRECTIVE}}{398} ! \entry {\code {SCHED{\_}GROUP{\_}P}}{207} ! \entry {scheduling, delayed branch}{199} ! \entry {scheduling, instruction}{198} ! \entry {\code {SCmode}}{209} ! \entry {\code {s\var {cond}} instruction pattern}{270} \entry {scope of a variable length array}{119} ! \entry {scope of declaration}{164} ! \entry {scope of external declarations}{162} ! \entry {\code {scratch}}{216} ! \entry {scratch operands}{216} ! \entry {\code {scratch}, RTL sharing}{241} ! \entry {\code {SDB{\_}ALLOW{\_}FORWARD{\_}REFERENCES}}{391} ! \entry {\code {SDB{\_}ALLOW{\_}UNKNOWN{\_}REFERENCES}}{391} ! \entry {\code {SDB{\_}DEBUGGING{\_}INFO}}{391} ! \entry {\code {SDB{\_}DELIM}}{391} ! \entry {\code {SDB{\_}GENERATE{\_}FAKE}}{391} \entry {search path}{48} \entry {second include path}{44} ! \entry {\code {SECONDARY{\_}INPUT{\_}RELOAD{\_}CLASS}}{330} ! \entry {\code {SECONDARY{\_}MEMORY{\_}NEEDED}}{331} ! \entry {\code {SECONDARY{\_}MEMORY{\_}NEEDED{\_}RTX}}{331} ! \entry {\code {SECONDARY{\_}OUTPUT{\_}RELOAD{\_}CLASS}}{330} ! \entry {\code {SECONDARY{\_}RELOAD{\_}CLASS}}{330} ! \entry {\code {SELECT{\_}CC{\_}MODE}}{363} ! \entry {\code {SELECT{\_}RTX{\_}SECTION}}{368} ! \entry {\code {SELECT{\_}SECTION}}{368} \entry {separate directory, compilation in}{88} ! \entry {\code {sequence}}{228} \entry {sequential consistency on 88k}{56} ! \entry {\code {set}}{225} ! \entry {\code {set{\_}attr}}{295} ! \entry {\code {set{\_}attr{\_}alternative}}{295} ! \entry {\code {SET{\_}DEST}}{226} ! \entry {\code {SET{\_}SRC}}{226} \entry {\code {setjmp}}{140} ! \entry {\code {setjmp} incompatibilities}{161} ! \entry {\code {SETUP{\_}FRAME{\_}ADDRESSES}}{334} ! \entry {\code {SETUP{\_}INCOMING{\_}VARARGS}}{353} ! \entry {\code {SFmode}}{209} ! \entry {shared strings}{161} ! \entry {shared VMS run time system}{189} ! \entry {\code {SHARED{\_}SECTION{\_}ASM{\_}OP}}{367} ! \entry {sharing of RTL components}{241} ! \entry {shift}{220} ! \entry {\code {SHIFT{\_}COUNT{\_}TRUNCATED}}{396} ! \entry {\code {SHORT{\_}TYPE{\_}SIZE}}{317} \entry {side effect in ?:}{117} \entry {side effects, macro argument}{108} ! \entry {side effects, order of evaluation}{171} ! \entry {\code {sign{\_}extend}}{223} ! \entry {\code {sign{\_}extract}}{223} ! \entry {\code {sign{\_}extract}, canonicalization of}{280} ! \entry {signed division}{219} ! \entry {signed maximum}{219} ! \entry {signed minimum}{219} ! \entry {\code {SIGNED{\_}CHAR{\_}SPEC}}{306} ! \entry {\code {SImode}}{209} ! \entry {simple constraints}{253} ! \entry {simplifications, arithmetic}{195} \entry {\code {sin}}{25} ! \entry {\code {SIZE{\_}TYPE}}{318} \entry {\code {sizeof}}{114} ! \entry {\code {SLOW{\_}BYTE{\_}ACCESS}}{366} ! \entry {\code {SLOW{\_}UNALIGNED{\_}ACCESS}}{366} ! \entry {\code {SLOW{\_}ZERO{\_}EXTEND}}{366} ! \entry {\code {SMALL{\_}REGISTER{\_}CLASSES}}{331} \entry {smaller data references (88k)}{56} \entry {smaller data references (MIPS)}{63} ! \entry {\code {smax}}{219} ! \entry {\code {smin}}{219} \entry {SPARC options}{52} \entry {specified registers}{138} --- 1193,1555 ---- \entry {options, order}{17} \entry {options, preprocessor}{44} ! \entry {order of evaluation, side effects}{173} \entry {order of options}{17} ! \entry {order of register allocation}{324} ! \entry {\code {ORDER{\_}REGS{\_}FOR{\_}LOCAL{\_}ALLOC}}{324} ! \entry {Ordering of Patterns}{276} \entry {other directory, compilation in}{88} ! \entry {\code {OUTGOING{\_}REG{\_}PARM{\_}STACK{\_}SPACE}}{341} ! \entry {\code {OUTGOING{\_}REGNO}}{323} \entry {output file option}{23} ! \entry {output of assembler code}{372} ! \entry {output statements}{253} ! \entry {output templates}{251} ! \entry {\code {output{\_}addr{\_}const}}{374} ! \entry {\code {output{\_}asm{\_}insn}}{254} ! \entry {overflow while constant folding}{396} ! \entry {\code {OVERLAPPING{\_}REGNO{\_}P}}{328} \entry {overloaded virtual fn, warning}{36} ! \entry {\code {OVERRIDE{\_}OPTIONS}}{313} \initial {P} ! \entry {\samp {p} in constraint}{257} \entry {\code {packed} attribute}{131} ! \entry {\code {parallel}}{229} \entry {parameter forward declaration}{120} ! \entry {parameters, miscellaneous}{397} ! \entry {\code {PARM{\_}BOUNDARY}}{315} \entry {parser generator, Bison}{85} ! \entry {parsing pass}{197} ! \entry {passes and files of the compiler}{197} ! \entry {passing arguments}{195} ! \entry {\code {PATTERN}}{237} ! \entry {pattern conditions}{246} ! \entry {pattern names}{267} ! \entry {Pattern Ordering}{276} ! \entry {patterns}{245} ! \entry {\code {pc}}{219} ! \entry {\code {pc} and attributes}{300} ! \entry {\code {pc}, RTL sharing}{243} ! \entry {\code {pc{\_}rtx}}{219} ! \entry {\code {PCC{\_}BITFIELD{\_}TYPE{\_}MATTERS}}{317} ! \entry {\code {PCC{\_}STATIC{\_}STRUCT{\_}RETURN}}{348} ! \entry {\code {PDImode}}{211} ! \entry {peephole optimization}{201} ! \entry {peephole optimization, RTL representation}{230} ! \entry {peephole optimizer definitions}{282} ! \entry {percent sign}{251} ! \entry {\code {perform{\_}\dots {}}}{361} ! \entry {PIC}{69, 371} ! \entry {\code {PIC{\_}OFFSET{\_}TABLE{\_}REGNUM}}{371} ! \entry {\code {plus}}{220} ! \entry {\code {plus} and attributes}{295} ! \entry {\code {plus}, canonicalization of}{281} ! \entry {\code {Pmode}}{401} \entry {pointer arguments}{127} ! \entry {\code {POINTER{\_}SIZE}}{315} ! \entry {portability}{193} ! \entry {portions of temporary objects, pointers to}{168} ! \entry {position independent code}{371} ! \entry {\code {post{\_}dec}}{232} ! \entry {\code {post{\_}inc}}{232} ! \entry {\code {pragma}}{401} ! \entry {pragma, reason for not using}{128} \entry {pragmas in C{\tt\char43}{\tt\char43}, effect on inlining}{149} \entry {pragmas, interface and implementation}{148} ! \entry {\code {pre{\_}dec}}{231} ! \entry {\code {pre{\_}inc}}{232} ! \entry {predefined macros}{311} ! \entry {\code {PREDICATE{\_}CODES}}{397} ! \entry {\code {PREFERRED{\_}DEBUGGING{\_}TYPE}}{389} ! \entry {\code {PREFERRED{\_}OUTPUT{\_}RELOAD{\_}CLASS}}{331} ! \entry {\code {PREFERRED{\_}RELOAD{\_}CLASS}}{331} ! \entry {preprocessing numbers}{164} ! \entry {preprocessing tokens}{164} \entry {preprocessor options}{44} ! \entry {\code {PRESERVE{\_}DEATH{\_}INFO{\_}REGNO{\_}P}}{328} ! \entry {\code {prev{\_}cc0{\_}setter}}{280} ! \entry {\code {PREV{\_}INSN}}{233} ! \entry {\code {prev{\_}nonnote{\_}insn}}{284} ! \entry {\code {PRINT{\_}OPERAND}}{384} ! \entry {\code {PRINT{\_}OPERAND{\_}ADDRESS}}{385} ! \entry {\code {PRINT{\_}OPERAND{\_}PUNCT{\_}VALID{\_}P}}{385} \entry {processor selection (29k)}{55} ! \entry {product}{221} \entry {\code {prof}}{38} ! \entry {\code {PROFILE{\_}BEFORE{\_}PROLOGUE}}{352} ! \entry {profiling, code generation}{352} ! \entry {program counter}{219} ! \entry {prologue}{349} ! \entry {\code {PROMOTE{\_}FUNCTION{\_}ARGS}}{315} ! \entry {\code {PROMOTE{\_}FUNCTION{\_}RETURN}}{315} ! \entry {\code {PROMOTE{\_}MODE}}{315} ! \entry {\code {PROMOTE{\_}PROTOTYPES}}{340} \entry {promotion of formal parameters}{128} ! \entry {pseudo registers}{216} ! \entry {\code {PSImode}}{211} ! \entry {\code {PTRDIFF{\_}TYPE}}{321} ! \entry {push address instruction}{257} ! \entry {\code {PUSH{\_}ROUNDING}}{340} ! \entry {\code {PUSH{\_}ROUNDING}, interaction with \code {STACK{\_}BOUNDARY}}{315} ! \entry {\code {PUT{\_}CODE}}{203} ! \entry {\code {PUT{\_}MODE}}{213} ! \entry {\code {PUT{\_}REG{\_}NOTE{\_}KIND}}{238} ! \entry {\code {PUT{\_}SDB{\_}\dots {}}}{394} ! \entry {\code {putenv}}{404} \initial {Q} ! \entry {\samp {Q}, in constraint}{257} ! \entry {\code {QImode}}{211} ! \entry {\code {QImode}, in \code {insn}}{236} \entry {\code {qsort}, and global register variables}{139} ! \entry {question mark}{260} ! \entry {quotient}{221} \initial {R} ! \entry {\samp {r} in constraint}{256} \entry {r0-relative references (88k)}{56} \entry {ranges in case statements}{124} ! \entry {read-only strings}{162} ! \entry {\code {READONLY{\_}DATA{\_}SECTION}}{370} ! \entry {\code {REAL{\_}ARITHMETIC}}{396} ! \entry {\code {REAL{\_}INFINITY}}{396} ! \entry {\code {REAL{\_}NM{\_}FILE{\_}NAME}}{383} ! \entry {\code {REAL{\_}VALUE{\_}ATOF}}{395} ! \entry {\code {REAL{\_}VALUE{\_}FIX}}{395} ! \entry {\code {REAL{\_}VALUE{\_}FROM{\_}INT}}{397} ! \entry {\code {REAL{\_}VALUE{\_}ISINF}}{396} ! \entry {\code {REAL{\_}VALUE{\_}ISNAN}}{396} ! \entry {\code {REAL{\_}VALUE{\_}LDEXP}}{395} ! \entry {\code {REAL{\_}VALUE{\_}NEGATE}}{396} ! \entry {\code {REAL{\_}VALUE{\_}RNDZINT}}{395} ! \entry {\code {REAL{\_}VALUE{\_}TO{\_}DECIMAL}}{376} ! \entry {\code {REAL{\_}VALUE{\_}TO{\_}INT}}{397} ! \entry {\code {REAL{\_}VALUE{\_}TO{\_}TARGET{\_}DOUBLE}}{375} ! \entry {\code {REAL{\_}VALUE{\_}TO{\_}TARGET{\_}LONG{\_}DOUBLE}}{375} ! \entry {\code {REAL{\_}VALUE{\_}TO{\_}TARGET{\_}SINGLE}}{375} ! \entry {\code {REAL{\_}VALUE{\_}TRUNCATE}}{396} ! \entry {\code {REAL{\_}VALUE{\_}TYPE}}{395} ! \entry {\code {REAL{\_}VALUE{\_}UNSIGNED{\_}FIX}}{395} ! \entry {\code {REAL{\_}VALUE{\_}UNSIGNED{\_}RNDZINT}}{395} ! \entry {\code {REAL{\_}VALUES{\_}EQUAL}}{395} ! \entry {\code {REAL{\_}VALUES{\_}LESS}}{395} ! \entry {\code {recog{\_}operand}}{384} ! \entry {recognizing insns}{247} ! \entry {\code {reg}}{216} ! \entry {\code {reg} and \samp {/i}}{207} ! \entry {\code {reg} and \samp {/s}}{207} ! \entry {\code {reg} and \samp {/u}}{207} ! \entry {\code {reg} and \samp {/v}}{207} ! \entry {\code {reg}, RTL sharing}{243} ! \entry {\code {REG{\_}ALLOC{\_}ORDER}}{324} ! \entry {\code {REG{\_}CC{\_}SETTER}}{241} ! \entry {\code {REG{\_}CC{\_}USER}}{241} ! \entry {\code {REG{\_}CLASS{\_}CONTENTS}}{330} ! \entry {\code {REG{\_}CLASS{\_}FROM{\_}LETTER}}{331} ! \entry {\code {REG{\_}CLASS{\_}NAMES}}{330} ! \entry {\code {REG{\_}DEAD}}{238} ! \entry {\code {REG{\_}DEP{\_}ANTI}}{241} ! \entry {\code {REG{\_}DEP{\_}OUTPUT}}{241} ! \entry {\code {REG{\_}EQUAL}}{239} ! \entry {\code {REG{\_}EQUIV}}{239} ! \entry {\code {REG{\_}FUNCTION{\_}VALUE{\_}P}}{207} ! \entry {\code {REG{\_}INC}}{238} ! \entry {\code {REG{\_}LABEL}}{239} ! \entry {\code {REG{\_}LEAF{\_}ALLOC{\_}ORDER}}{327} ! \entry {\code {REG{\_}LIBCALL}}{240} ! \entry {\code {REG{\_}LOOP{\_}TEST{\_}P}}{207} ! \entry {\code {reg{\_}names}}{385} ! \entry {\code {REG{\_}NO{\_}CONFLICT}}{238} ! \entry {\code {REG{\_}NONNEG}}{238} ! \entry {\code {REG{\_}NOTE{\_}KIND}}{238} ! \entry {\code {REG{\_}NOTES}}{237} ! \entry {\code {REG{\_}OK{\_}FOR{\_}BASE{\_}P}}{363} ! \entry {\code {REG{\_}OK{\_}FOR{\_}INDEX{\_}P}}{363} ! \entry {\code {REG{\_}OK{\_}STRICT}}{362} ! \entry {\code {REG{\_}PARM{\_}STACK{\_}SPACE}}{340} ! \entry {\code {REG{\_}PARM{\_}STACK{\_}SPACE}, and \code {FUNCTION{\_}ARG}}{342} ! \entry {\code {REG{\_}RETVAL}}{240} ! \entry {\code {REG{\_}UNUSED}}{240} ! \entry {\code {REG{\_}USERVAR{\_}P}}{207} ! \entry {\code {REG{\_}WAS{\_}0}}{240} ! \entry {register allocation}{200} ! \entry {register allocation order}{324} ! \entry {register allocation, stupid}{199} ! \entry {register class definitions}{329} ! \entry {register class preference constraints}{261} ! \entry {register class preference pass}{200} ! \entry {register pairs}{325} \entry {register positions in frame (88k)}{56} ! \entry {Register Transfer Language (RTL)}{203} ! \entry {register usage}{322} ! \entry {register use analysis}{199} \entry {register variable after \code {longjmp}}{140} ! \entry {register-to-stack conversion}{201} ! \entry {\code {REGISTER{\_}MOVE{\_}COST}}{367} ! \entry {\code {REGISTER{\_}NAMES}}{383} ! \entry {\code {register{\_}operand}}{248} ! \entry {\code {REGISTER{\_}PREFIX}}{385} \entry {registers}{133} ! \entry {registers arguments}{342} \entry {registers for local variables}{140} ! \entry {registers in constraints}{256} \entry {registers, global allocation}{138} \entry {registers, global variables in}{138} ! \entry {\code {REGNO{\_}OK{\_}FOR{\_}BASE{\_}P}}{331} ! \entry {\code {REGNO{\_}OK{\_}FOR{\_}INDEX{\_}P}}{331} ! \entry {\code {REGNO{\_}REG{\_}CLASS}}{330} ! \entry {\code {regs{\_}ever{\_}live}}{349} ! \entry {relative costs}{366} ! \entry {\code {RELATIVE{\_}PREFIX{\_}NOT{\_}LINKDIR}}{309} ! \entry {reload pass}{218} ! \entry {\code {reload{\_}completed}}{274} ! \entry {\code {reload{\_}in} instruction pattern}{268} ! \entry {\code {reload{\_}in{\_}progress}}{267} ! \entry {\code {reload{\_}out} instruction pattern}{268} ! \entry {reloading}{200} ! \entry {remainder}{221} ! \entry {reporting bugs}{175} ! \entry {representation of RTL}{203} \entry {rest argument (in macro)}{120} ! \entry {\code {rest{\_}of{\_}compilation}}{197} ! \entry {\code {rest{\_}of{\_}decl{\_}compilation}}{197} ! \entry {\code {restore{\_}stack{\_}block} instruction pattern}{275} ! \entry {\code {restore{\_}stack{\_}function} instruction pattern}{275} ! \entry {\code {restore{\_}stack{\_}nonlocal} instruction pattern}{275} ! \entry {\code {return}}{228} ! \entry {\code {return} instruction pattern}{274} ! \entry {return value of \code {main}}{190} \entry {return value, named, in C{\tt\char43}{\tt\char43}}{145} ! \entry {return values in registers}{345} \entry {\code {return}, in C{\tt\char43}{\tt\char43} function header}{145} ! \entry {\code {RETURN{\_}ADDR{\_}IN{\_}PREVIOUS{\_}FRAME}}{336} ! \entry {\code {RETURN{\_}ADDR{\_}RTX}}{336} ! \entry {\code {RETURN{\_}IN{\_}MEMORY}}{347} ! \entry {\code {RETURN{\_}POPS{\_}ARGS}}{341} ! \entry {returning aggregate values}{347} ! \entry {returning structures and unions}{195} ! \entry {right rotate}{222} ! \entry {right shift}{222} ! \entry {\code {rotate}}{222} ! \entry {\code {rotatert}}{222} ! \entry {\code {rotl\var {m}3} instruction pattern}{270} ! \entry {\code {rotr\var {m}3} instruction pattern}{270} ! \entry {\code {ROUND{\_}TYPE{\_}ALIGN}}{318} ! \entry {\code {ROUND{\_}TYPE{\_}SIZE}}{318} \entry {RS/6000 and PowerPC Options}{58} \entry {RT options}{60} ! \entry {RT PC}{160} ! \entry {RTL addition}{220} ! \entry {RTL comparison}{220} ! \entry {RTL comparison operations}{223} ! \entry {RTL constant expression types}{214} ! \entry {RTL constants}{214} ! \entry {RTL declarations}{226} ! \entry {RTL difference}{220} ! \entry {RTL expression}{203} ! \entry {RTL expressions for arithmetic}{220} ! \entry {RTL format}{204} ! \entry {RTL format characters}{204} ! \entry {RTL function-call insns}{241} ! \entry {RTL generation}{198} ! \entry {RTL insn template}{247} ! \entry {RTL integers}{203} ! \entry {RTL memory expressions}{216} ! \entry {RTL object types}{203} ! \entry {RTL postdecrement}{231} ! \entry {RTL postincrement}{231} ! \entry {RTL predecrement}{231} ! \entry {RTL preincrement}{231} ! \entry {RTL register expressions}{216} ! \entry {RTL representation}{203} ! \entry {RTL side effect expressions}{227} ! \entry {RTL strings}{203} ! \entry {RTL structure sharing assumptions}{243} ! \entry {RTL subtraction}{220} ! \entry {RTL sum}{220} ! \entry {RTL vectors}{203} ! \entry {RTX (See RTL)}{203} ! \entry {\code {RTX{\_}COSTS}}{366} ! \entry {\code {RTX{\_}INTEGRATED{\_}P}}{208} ! \entry {\code {RTX{\_}UNCHANGING{\_}P}}{207} ! \entry {run-time conventions}{195} \entry {run-time options}{68} ! \entry {run-time target specification}{311} \initial {S} ! \entry {\samp {s} in constraint}{256} ! \entry {\code {save{\_}stack{\_}block} instruction pattern}{275} ! \entry {\code {save{\_}stack{\_}function} instruction pattern}{275} ! \entry {\code {save{\_}stack{\_}nonlocal} instruction pattern}{275} ! \entry {\code {saveable{\_}obstack}}{362} ! \entry {scalars, returned as values}{345} ! \entry {\code {scanf}, and constant strings}{162} ! \entry {\code {SCCS{\_}DIRECTIVE}}{401} ! \entry {\code {SCHED{\_}GROUP{\_}P}}{209} ! \entry {scheduling, delayed branch}{201} ! \entry {scheduling, instruction}{200} ! \entry {\code {SCmode}}{211} ! \entry {\code {s\var {cond}} instruction pattern}{272} \entry {scope of a variable length array}{119} ! \entry {scope of declaration}{166} ! \entry {scope of external declarations}{163} ! \entry {\code {scratch}}{218} ! \entry {scratch operands}{218} ! \entry {\code {scratch}, RTL sharing}{243} ! \entry {\code {SDB{\_}ALLOW{\_}FORWARD{\_}REFERENCES}}{394} ! \entry {\code {SDB{\_}ALLOW{\_}UNKNOWN{\_}REFERENCES}}{394} ! \entry {\code {SDB{\_}DEBUGGING{\_}INFO}}{393} ! \entry {\code {SDB{\_}DELIM}}{394} ! \entry {\code {SDB{\_}GENERATE{\_}FAKE}}{394} \entry {search path}{48} \entry {second include path}{44} ! \entry {\code {SECONDARY{\_}INPUT{\_}RELOAD{\_}CLASS}}{332} ! \entry {\code {SECONDARY{\_}MEMORY{\_}NEEDED}}{333} ! \entry {\code {SECONDARY{\_}MEMORY{\_}NEEDED{\_}RTX}}{333} ! \entry {\code {SECONDARY{\_}OUTPUT{\_}RELOAD{\_}CLASS}}{332} ! \entry {\code {SECONDARY{\_}RELOAD{\_}CLASS}}{332} ! \entry {\code {SELECT{\_}CC{\_}MODE}}{365} ! \entry {\code {SELECT{\_}RTX{\_}SECTION}}{370} ! \entry {\code {SELECT{\_}SECTION}}{370} \entry {separate directory, compilation in}{88} ! \entry {\code {sequence}}{230} \entry {sequential consistency on 88k}{56} ! \entry {\code {set}}{227} ! \entry {\code {set{\_}attr}}{297} ! \entry {\code {set{\_}attr{\_}alternative}}{297} ! \entry {\code {SET{\_}DEST}}{228} ! \entry {\code {SET{\_}SRC}}{228} \entry {\code {setjmp}}{140} ! \entry {\code {setjmp} incompatibilities}{162} ! \entry {\code {SETUP{\_}FRAME{\_}ADDRESSES}}{336} ! \entry {\code {SETUP{\_}INCOMING{\_}VARARGS}}{355} ! \entry {\code {SFmode}}{211} ! \entry {shared strings}{162} ! \entry {shared VMS run time system}{191} ! \entry {\code {SHARED{\_}SECTION{\_}ASM{\_}OP}}{369} ! \entry {sharing of RTL components}{243} ! \entry {shift}{222} ! \entry {\code {SHIFT{\_}COUNT{\_}TRUNCATED}}{398} ! \entry {\code {SHORT{\_}TYPE{\_}SIZE}}{319} \entry {side effect in ?:}{117} \entry {side effects, macro argument}{108} ! \entry {side effects, order of evaluation}{173} ! \entry {\code {sign{\_}extend}}{225} ! \entry {\code {sign{\_}extract}}{225} ! \entry {\code {sign{\_}extract}, canonicalization of}{282} ! \entry {signed division}{221} ! \entry {signed maximum}{221} ! \entry {signed minimum}{221} ! \entry {\code {SIGNED{\_}CHAR{\_}SPEC}}{308} ! \entry {\code {SImode}}{211} ! \entry {simple constraints}{255} ! \entry {simplifications, arithmetic}{197} \entry {\code {sin}}{25} ! \entry {\code {SIZE{\_}TYPE}}{320} \entry {\code {sizeof}}{114} ! \entry {\code {SLOW{\_}BYTE{\_}ACCESS}}{368} ! \entry {\code {SLOW{\_}UNALIGNED{\_}ACCESS}}{368} ! \entry {\code {SLOW{\_}ZERO{\_}EXTEND}}{368} ! \entry {\code {SMALL{\_}REGISTER{\_}CLASSES}}{333} \entry {smaller data references (88k)}{56} \entry {smaller data references (MIPS)}{63} ! \entry {\code {smax}}{221} ! \entry {\code {smin}}{221} \entry {SPARC options}{52} \entry {specified registers}{138} *************** *** 1551,1756 **** \entry {specifying machine version}{49} \entry {specifying registers for local variables}{140} ! \entry {speed of instructions}{364} ! \entry {splitting instructions}{287} ! \entry {\code {sqrt}}{25, 220} ! \entry {\code {sqrt\var {m}2} instruction pattern}{268} ! \entry {square root}{220} ! \entry {\code {sscanf}, and constant strings}{161} ! \entry {stack arguments}{338} \entry {stack checks (29k)}{55} ! \entry {stack frame layout}{333} ! \entry {\code {STACK{\_}BOUNDARY}}{313} ! \entry {\code {STACK{\_}DYNAMIC{\_}OFFSET}}{334} ! \entry {\code {STACK{\_}DYNAMIC{\_}OFFSET} and virtual registers}{215} ! \entry {\code {STACK{\_}GROWS{\_}DOWNWARD}}{333} ! \entry {\code {STACK{\_}PARMS{\_}IN{\_}REG{\_}PARM{\_}AREA}}{339} ! \entry {\code {STACK{\_}POINTER{\_}OFFSET}}{333} ! \entry {\code {STACK{\_}POINTER{\_}OFFSET} and virtual registers}{215} ! \entry {\code {STACK{\_}POINTER{\_}REGNUM}}{335} ! \entry {\code {STACK{\_}POINTER{\_}REGNUM} and virtual registers}{215} ! \entry {\code {stack{\_}pointer{\_}rtx}}{336} ! \entry {\code {STACK{\_}REGS}}{325} ! \entry {stage1}{85} ! \entry {standard pattern names}{265} ! \entry {\code {STANDARD{\_}EXEC{\_}PREFIX}}{307} ! \entry {\code {STANDARD{\_}INCLUDE{\_}DIR}}{308} ! \entry {\code {STANDARD{\_}STARTFILE{\_}PREFIX}}{307} \entry {start files}{91} ! \entry {\code {STARTFILE{\_}SPEC}}{306} ! \entry {\code {STARTING{\_}FRAME{\_}OFFSET}}{333} ! \entry {\code {STARTING{\_}FRAME{\_}OFFSET} and virtual registers}{215} \entry {statements inside expressions}{107} ! \entry {static data in C{\tt\char43}{\tt\char43}, declaring and defining}{166} ! \entry {\code {STATIC{\_}CHAIN}}{336} ! \entry {\code {STATIC{\_}CHAIN{\_}INCOMING}}{336} ! \entry {\code {STATIC{\_}CHAIN{\_}INCOMING{\_}REGNUM}}{335} ! \entry {\code {STATIC{\_}CHAIN{\_}REGNUM}}{335} ! \entry {\file {stdarg.h} and register arguments}{340} \entry {\file {stdarg.h} and RT PC}{60} ! \entry {\code {STDC{\_}VALUE}}{309} ! \entry {storage layout}{312} ! \entry {\code {STORE{\_}FLAG{\_}VALUE}}{397} ! \entry {\samp {store{\_}multiple} instruction pattern}{267} \entry {\code {strcmp}}{25} ! \entry {\code {strcpy}}{25, 314} ! \entry {strength-reduction}{197} ! \entry {\code {STRICT{\_}ALIGNMENT}}{314} ! \entry {\code {strict{\_}low{\_}part}}{224} ! \entry {string constants}{161} \entry {string constants vs newline}{26} ! \entry {\code {STRIP{\_}NAME{\_}ENCODING}}{369} \entry {\code {strlen}}{25} ! \entry {\code {strlen\var {m}} instruction pattern}{269} ! \entry {\code {STRUCT{\_}VALUE}}{345} ! \entry {\code {STRUCT{\_}VALUE{\_}INCOMING}}{346} ! \entry {\code {STRUCT{\_}VALUE{\_}INCOMING{\_}REGNUM}}{346} ! \entry {\code {STRUCT{\_}VALUE{\_}REGNUM}}{345} \entry {structure passing (88k)}{58} ! \entry {structure value address}{345} ! \entry {\code {STRUCTURE{\_}SIZE{\_}BOUNDARY}}{314} ! \entry {structures}{163} \entry {structures, constructor expression}{122} ! \entry {structures, returning}{193} ! \entry {stupid register allocation}{197} ! \entry {\code {sub\var {m}3} instruction pattern}{267} \entry {submodel options}{50} ! \entry {\code {subreg}}{215} ! \entry {\code {subreg} and \samp {/s}}{205} ! \entry {\code {subreg} and \samp {/u}}{205} ! \entry {\code {subreg}, in \code {strict{\_}low{\_}part}}{224} ! \entry {\code {subreg}, special reload handling}{216} ! \entry {\code {SUBREG{\_}PROMOTED{\_}UNSIGNED{\_}P}}{205} ! \entry {\code {SUBREG{\_}PROMOTED{\_}VAR{\_}P}}{205} ! \entry {\code {SUBREG{\_}REG}}{216} ! \entry {\code {SUBREG{\_}WORD}}{216} \entry {subscripting}{121} \entry {subscripting and function values}{121} ! \entry {\code {SUCCESS{\_}EXIT{\_}CODE}}{401} \entry {suffixes for C{\tt\char43}{\tt\char43} source}{23} \entry {Sun installation}{96} \entry {suppressing warnings}{31} ! \entry {surprises in C{\tt\char43}{\tt\char43}}{166} \entry {SVr4}{57} ! \entry {\code {SWITCH{\_}TAKES{\_}ARG}}{305} ! \entry {\code {SWITCHES{\_}NEED{\_}SPACES}}{305} ! \entry {\code {symbol{\_}ref}}{213} ! \entry {\code {symbol{\_}ref} and \samp {/u}}{206} ! \entry {\code {symbol{\_}ref} and \samp {/v}}{206} ! \entry {\code {symbol{\_}ref}, RTL sharing}{241} ! \entry {\code {SYMBOL{\_}REF{\_}FLAG}}{206} ! \entry {\code {SYMBOL{\_}REF{\_}FLAG}, in \code {ENCODE{\_}SECTION{\_}INFO}}{369} ! \entry {\code {SYMBOL{\_}REF{\_}USED}}{206} ! \entry {symbolic label}{241} \entry {syntax checking}{31} ! \entry {\code {sys{\_}siglist}}{403} ! \entry {\code {SYSTEM{\_}INCLUDE{\_}DIR}}{308} \initial {T} ! \entry {\code {tablejump} instruction pattern}{273} ! \entry {tagging insns}{294} ! \entry {tail recursion optimization}{196} ! \entry {target description macros}{305} \entry {target machine, specifying}{49} \entry {target options}{49} ! \entry {target specifications}{309} ! \entry {target-parameter-dependent code}{196} ! \entry {\code {TARGET{\_}BELL}}{319} ! \entry {\code {TARGET{\_}BS}}{319} ! \entry {\code {TARGET{\_}CR}}{320} ! \entry {\code {TARGET{\_}EDOM}}{357} ! \entry {\code {TARGET{\_}FF}}{320} ! \entry {\code {TARGET{\_}FLOAT{\_}FORMAT}}{316} ! \entry {\code {TARGET{\_}MEM{\_}FUNCTIONS}}{357} ! \entry {\code {TARGET{\_}NEWLINE}}{319} ! \entry {\code {TARGET{\_}OPTIONS}}{310} ! \entry {\code {TARGET{\_}SWITCHES}}{310} ! \entry {\code {TARGET{\_}TAB}}{319} ! \entry {\code {TARGET{\_}VERSION}}{311} ! \entry {\code {TARGET{\_}VT}}{320} ! \entry {\code {TCmode}}{209} \entry {\code {tcov}}{38} \entry {template debugging}{34} ! \entry {temporaries, lifetime of}{166} ! \entry {termination routines}{378} ! \entry {\code {text{\_}section}}{368} ! \entry {\code {TEXT{\_}SECTION{\_}ASM{\_}OP}}{367} ! \entry {\code {TFmode}}{209} \entry {thunks}{110} ! \entry {\code {TImode}}{209} ! \entry {\file {tm.h} macros}{305} \entry {\code {TMPDIR}}{71} ! \entry {top level of compiler}{195} \entry {traditional C language}{25} ! \entry {\code {TRADITIONAL{\_}RETURN{\_}FLOAT}}{343} ! \entry {\code {TRAMPOLINE{\_}ALIGNMENT}}{354} ! \entry {\code {TRAMPOLINE{\_}SECTION}}{354} ! \entry {\code {TRAMPOLINE{\_}SIZE}}{354} ! \entry {\code {TRAMPOLINE{\_}TEMPLATE}}{354} ! \entry {trampolines for nested functions}{353} ! \entry {\code {TRANSFER{\_}FROM{\_}TRAMPOLINE}}{356} ! \entry {\code {TRULY{\_}NOOP{\_}TRUNCATION}}{396} ! \entry {\code {truncate}}{224} ! \entry {\code {trunc\var {mn}} instruction pattern}{269} ! \entry {\code {tst\var {m}} instruction pattern}{268} \entry {type alignment}{130} ! \entry {typedef names as function parameters}{162} \entry {\code {typeof}}{114} \initial {U} ! \entry {\code {udiv}}{219} ! \entry {\code {UDIVDI3{\_}LIBCALL}}{357} ! \entry {\code {udiv\var {m}3} instruction pattern}{267} ! \entry {\code {udivmod\var {m}4} instruction pattern}{267} ! \entry {\code {UDIVSI3{\_}LIBCALL}}{356} ! \entry {Ultrix calling convention}{159} ! \entry {\code {umax}}{219} ! \entry {\code {umax\var {m}3} instruction pattern}{267} ! \entry {\code {umin}}{219} ! \entry {\code {umin\var {m}3} instruction pattern}{267} ! \entry {\code {umod}}{219} ! \entry {\code {UMODDI3{\_}LIBCALL}}{357} ! \entry {\code {umod\var {m}3} instruction pattern}{267} ! \entry {\code {UMODSI3{\_}LIBCALL}}{356} ! \entry {\code {umulhisi3} instruction pattern}{267} ! \entry {\code {umulqihi3} instruction pattern}{267} ! \entry {\code {umulsidi3} instruction pattern}{267} ! \entry {\code {unchanging}}{208} ! \entry {\code {unchanging}, in \code {call{\_}insn}}{206} ! \entry {\code {unchanging}, in \code {insn}}{206} ! \entry {\code {unchanging}, in \code {reg} and \code {mem}}{205} ! \entry {\code {unchanging}, in \code {subreg}}{205} ! \entry {\code {unchanging}, in \code {symbol{\_}ref}}{206} ! \entry {undefined behavior}{173} ! \entry {undefined function value}{173} \entry {underscores in variables in macros}{114} \entry {underscores, avoiding (88k)}{56} \entry {union, casting to a}{125} ! \entry {unions}{163} ! \entry {unions, returning}{193} ! \entry {\code {UNITS{\_}PER{\_}WORD}}{312} ! \entry {\code {UNKNOWN{\_}FLOAT{\_}FORMAT}}{317} \entry {Unos installation}{97} ! \entry {unreachable code}{196} ! \entry {\code {unshare{\_}all{\_}rtl}}{241} ! \entry {unsigned division}{219} ! \entry {unsigned greater than}{222} ! \entry {unsigned less than}{222} ! \entry {unsigned minimum and maximum}{219} ! \entry {\code {unsigned{\_}fix}}{224} ! \entry {\code {unsigned{\_}float}}{224} ! \entry {\code {unspec}}{229} ! \entry {\code {unspec{\_}volatile}}{229} ! \entry {\code {untyped{\_}call} instruction pattern}{271} ! \entry {\code {untyped{\_}return} instruction pattern}{272} ! \entry {\code {use}}{227} ! \entry {\code {USE{\_}C{\_}ALLOCA}}{402} ! \entry {\code {USE{\_}PROTOTYPES}}{403} ! \entry {\code {used}}{207} ! \entry {\code {used}, in \code {symbol{\_}ref}}{206} ! \entry {\code {USER{\_}LABEL{\_}PREFIX}}{383} ! \entry {\code {USG}}{401} \initial {V} ! \entry {\samp {V} in constraint}{253} \entry {value after \code {longjmp}}{140} ! \entry {values, returned by functions}{343} ! \entry {varargs implementation}{351} \entry {\file {varargs.h} and RT PC}{60} \entry {variable alignment}{130} --- 1558,1763 ---- \entry {specifying machine version}{49} \entry {specifying registers for local variables}{140} ! \entry {speed of instructions}{366} ! \entry {splitting instructions}{289} ! \entry {\code {sqrt}}{25, 222} ! \entry {\code {sqrt\var {m}2} instruction pattern}{270} ! \entry {square root}{222} ! \entry {\code {sscanf}, and constant strings}{162} ! \entry {stack arguments}{340} \entry {stack checks (29k)}{55} ! \entry {stack frame layout}{335} ! \entry {\code {STACK{\_}BOUNDARY}}{315} ! \entry {\code {STACK{\_}DYNAMIC{\_}OFFSET}}{336} ! \entry {\code {STACK{\_}DYNAMIC{\_}OFFSET} and virtual registers}{217} ! \entry {\code {STACK{\_}GROWS{\_}DOWNWARD}}{335} ! \entry {\code {STACK{\_}PARMS{\_}IN{\_}REG{\_}PARM{\_}AREA}}{341} ! \entry {\code {STACK{\_}POINTER{\_}OFFSET}}{335} ! \entry {\code {STACK{\_}POINTER{\_}OFFSET} and virtual registers}{217} ! \entry {\code {STACK{\_}POINTER{\_}REGNUM}}{337} ! \entry {\code {STACK{\_}POINTER{\_}REGNUM} and virtual registers}{217} ! \entry {\code {stack{\_}pointer{\_}rtx}}{338} ! \entry {\code {STACK{\_}REGS}}{327} ! \entry {stage1}{86} ! \entry {standard pattern names}{267} ! \entry {\code {STANDARD{\_}EXEC{\_}PREFIX}}{309} ! \entry {\code {STANDARD{\_}INCLUDE{\_}DIR}}{310} ! \entry {\code {STANDARD{\_}STARTFILE{\_}PREFIX}}{309} \entry {start files}{91} ! \entry {\code {STARTFILE{\_}SPEC}}{308} ! \entry {\code {STARTING{\_}FRAME{\_}OFFSET}}{335} ! \entry {\code {STARTING{\_}FRAME{\_}OFFSET} and virtual registers}{217} \entry {statements inside expressions}{107} ! \entry {static data in C{\tt\char43}{\tt\char43}, declaring and defining}{167} ! \entry {\code {STATIC{\_}CHAIN}}{338} ! \entry {\code {STATIC{\_}CHAIN{\_}INCOMING}}{338} ! \entry {\code {STATIC{\_}CHAIN{\_}INCOMING{\_}REGNUM}}{337} ! \entry {\code {STATIC{\_}CHAIN{\_}REGNUM}}{337} ! \entry {\file {stdarg.h} and register arguments}{342} \entry {\file {stdarg.h} and RT PC}{60} ! \entry {\code {STDC{\_}VALUE}}{311} ! \entry {storage layout}{314} ! \entry {\code {STORE{\_}FLAG{\_}VALUE}}{399} ! \entry {\samp {store{\_}multiple} instruction pattern}{269} \entry {\code {strcmp}}{25} ! \entry {\code {strcpy}}{25, 316} ! \entry {strength-reduction}{199} ! \entry {\code {STRICT{\_}ALIGNMENT}}{316} ! \entry {\code {strict{\_}low{\_}part}}{226} ! \entry {string constants}{162} \entry {string constants vs newline}{26} ! \entry {\code {STRIP{\_}NAME{\_}ENCODING}}{371} \entry {\code {strlen}}{25} ! \entry {\code {strlen\var {m}} instruction pattern}{271} ! \entry {\code {STRUCT{\_}VALUE}}{347} ! \entry {\code {STRUCT{\_}VALUE{\_}INCOMING}}{348} ! \entry {\code {STRUCT{\_}VALUE{\_}INCOMING{\_}REGNUM}}{348} ! \entry {\code {STRUCT{\_}VALUE{\_}REGNUM}}{347} \entry {structure passing (88k)}{58} ! \entry {structure value address}{347} ! \entry {\code {STRUCTURE{\_}SIZE{\_}BOUNDARY}}{316} ! \entry {structures}{164} \entry {structures, constructor expression}{122} ! \entry {structures, returning}{195} ! \entry {stupid register allocation}{199} ! \entry {\code {sub\var {m}3} instruction pattern}{269} \entry {submodel options}{50} ! \entry {\code {subreg}}{217} ! \entry {\code {subreg} and \samp {/s}}{207} ! \entry {\code {subreg} and \samp {/u}}{207} ! \entry {\code {subreg}, in \code {strict{\_}low{\_}part}}{226} ! \entry {\code {subreg}, special reload handling}{218} ! \entry {\code {SUBREG{\_}PROMOTED{\_}UNSIGNED{\_}P}}{207} ! \entry {\code {SUBREG{\_}PROMOTED{\_}VAR{\_}P}}{207} ! \entry {\code {SUBREG{\_}REG}}{218} ! \entry {\code {SUBREG{\_}WORD}}{218} \entry {subscripting}{121} \entry {subscripting and function values}{121} ! \entry {\code {SUCCESS{\_}EXIT{\_}CODE}}{403} \entry {suffixes for C{\tt\char43}{\tt\char43} source}{23} \entry {Sun installation}{96} \entry {suppressing warnings}{31} ! \entry {surprises in C{\tt\char43}{\tt\char43}}{167} \entry {SVr4}{57} ! \entry {\code {SWITCH{\_}TAKES{\_}ARG}}{307} ! \entry {\code {SWITCHES{\_}NEED{\_}SPACES}}{307} ! \entry {\code {symbol{\_}ref}}{215} ! \entry {\code {symbol{\_}ref} and \samp {/u}}{208} ! \entry {\code {symbol{\_}ref} and \samp {/v}}{208} ! \entry {\code {symbol{\_}ref}, RTL sharing}{243} ! \entry {\code {SYMBOL{\_}REF{\_}FLAG}}{208} ! \entry {\code {SYMBOL{\_}REF{\_}FLAG}, in \code {ENCODE{\_}SECTION{\_}INFO}}{371} ! \entry {\code {SYMBOL{\_}REF{\_}USED}}{208} ! \entry {symbolic label}{243} \entry {syntax checking}{31} ! \entry {\code {sys{\_}siglist}}{405} ! \entry {\code {SYSTEM{\_}INCLUDE{\_}DIR}}{310} \initial {T} ! \entry {\code {tablejump} instruction pattern}{275} ! \entry {tagging insns}{296} ! \entry {tail recursion optimization}{198} ! \entry {target description macros}{307} \entry {target machine, specifying}{49} \entry {target options}{49} ! \entry {target specifications}{311} ! \entry {target-parameter-dependent code}{198} ! \entry {\code {TARGET{\_}BELL}}{321} ! \entry {\code {TARGET{\_}BS}}{321} ! \entry {\code {TARGET{\_}CR}}{322} ! \entry {\code {TARGET{\_}EDOM}}{359} ! \entry {\code {TARGET{\_}FF}}{322} ! \entry {\code {TARGET{\_}FLOAT{\_}FORMAT}}{318} ! \entry {\code {TARGET{\_}MEM{\_}FUNCTIONS}}{359} ! \entry {\code {TARGET{\_}NEWLINE}}{321} ! \entry {\code {TARGET{\_}OPTIONS}}{312} ! \entry {\code {TARGET{\_}SWITCHES}}{312} ! \entry {\code {TARGET{\_}TAB}}{321} ! \entry {\code {TARGET{\_}VERSION}}{313} ! \entry {\code {TARGET{\_}VT}}{322} ! \entry {\code {TCmode}}{211} \entry {\code {tcov}}{38} \entry {template debugging}{34} ! \entry {temporaries, lifetime of}{168} ! \entry {termination routines}{380} ! \entry {\code {text{\_}section}}{370} ! \entry {\code {TEXT{\_}SECTION{\_}ASM{\_}OP}}{369} ! \entry {\code {TFmode}}{211} \entry {thunks}{110} ! \entry {\code {TImode}}{211} ! \entry {\file {tm.h} macros}{307} \entry {\code {TMPDIR}}{71} ! \entry {top level of compiler}{197} \entry {traditional C language}{25} ! \entry {\code {TRADITIONAL{\_}RETURN{\_}FLOAT}}{345} ! \entry {\code {TRAMPOLINE{\_}ALIGNMENT}}{356} ! \entry {\code {TRAMPOLINE{\_}SECTION}}{356} ! \entry {\code {TRAMPOLINE{\_}SIZE}}{356} ! \entry {\code {TRAMPOLINE{\_}TEMPLATE}}{356} ! \entry {trampolines for nested functions}{355} ! \entry {\code {TRANSFER{\_}FROM{\_}TRAMPOLINE}}{358} ! \entry {\code {TRULY{\_}NOOP{\_}TRUNCATION}}{399} ! \entry {\code {truncate}}{226} ! \entry {\code {trunc\var {mn}} instruction pattern}{271} ! \entry {\code {tst\var {m}} instruction pattern}{270} \entry {type alignment}{130} ! \entry {typedef names as function parameters}{163} \entry {\code {typeof}}{114} \initial {U} ! \entry {\code {udiv}}{221} ! \entry {\code {UDIVDI3{\_}LIBCALL}}{359} ! \entry {\code {udiv\var {m}3} instruction pattern}{269} ! \entry {\code {udivmod\var {m}4} instruction pattern}{269} ! \entry {\code {UDIVSI3{\_}LIBCALL}}{358} ! \entry {Ultrix calling convention}{160} ! \entry {\code {umax}}{221} ! \entry {\code {umax\var {m}3} instruction pattern}{269} ! \entry {\code {umin}}{221} ! \entry {\code {umin\var {m}3} instruction pattern}{269} ! \entry {\code {umod}}{221} ! \entry {\code {UMODDI3{\_}LIBCALL}}{359} ! \entry {\code {umod\var {m}3} instruction pattern}{269} ! \entry {\code {UMODSI3{\_}LIBCALL}}{358} ! \entry {\code {umulhisi3} instruction pattern}{269} ! \entry {\code {umulqihi3} instruction pattern}{269} ! \entry {\code {umulsidi3} instruction pattern}{269} ! \entry {\code {unchanging}}{210} ! \entry {\code {unchanging}, in \code {call{\_}insn}}{208} ! \entry {\code {unchanging}, in \code {insn}}{208} ! \entry {\code {unchanging}, in \code {reg} and \code {mem}}{207} ! \entry {\code {unchanging}, in \code {subreg}}{207} ! \entry {\code {unchanging}, in \code {symbol{\_}ref}}{208} ! \entry {undefined behavior}{175} ! \entry {undefined function value}{175} \entry {underscores in variables in macros}{114} \entry {underscores, avoiding (88k)}{56} \entry {union, casting to a}{125} ! \entry {unions}{164} ! \entry {unions, returning}{195} ! \entry {\code {UNITS{\_}PER{\_}WORD}}{314} ! \entry {\code {UNKNOWN{\_}FLOAT{\_}FORMAT}}{319} \entry {Unos installation}{97} ! \entry {unreachable code}{198} ! \entry {\code {unshare{\_}all{\_}rtl}}{243} ! \entry {unsigned division}{221} ! \entry {unsigned greater than}{224} ! \entry {unsigned less than}{224} ! \entry {unsigned minimum and maximum}{221} ! \entry {\code {unsigned{\_}fix}}{226} ! \entry {\code {unsigned{\_}float}}{226} ! \entry {\code {unspec}}{231} ! \entry {\code {unspec{\_}volatile}}{231} ! \entry {\code {untyped{\_}call} instruction pattern}{273} ! \entry {\code {untyped{\_}return} instruction pattern}{274} ! \entry {\code {use}}{229} ! \entry {\code {USE{\_}C{\_}ALLOCA}}{404} ! \entry {\code {USE{\_}PROTOTYPES}}{405} ! \entry {\code {used}}{209} ! \entry {\code {used}, in \code {symbol{\_}ref}}{208} ! \entry {\code {USER{\_}LABEL{\_}PREFIX}}{385} ! \entry {\code {USG}}{403} \initial {V} ! \entry {\samp {V} in constraint}{255} \entry {value after \code {longjmp}}{140} ! \entry {values, returned by functions}{345} ! \entry {varargs implementation}{353} \entry {\file {varargs.h} and RT PC}{60} \entry {variable alignment}{130} *************** *** 1761,1788 **** \entry {variables in specified registers}{138} \entry {variables, local, in macros}{114} ! \entry {Vax calling convention}{159} \entry {VAX options}{52} ! \entry {\code {VAX{\_}FLOAT{\_}FORMAT}}{317} ! \entry {\file {VAXCRTL}}{189} ! \entry {\code {VIRTUAL{\_}INCOMING{\_}ARGS{\_}REGNUM}}{214} ! \entry {\code {VIRTUAL{\_}OUTGOING{\_}ARGS{\_}REGNUM}}{215} ! \entry {\code {VIRTUAL{\_}STACK{\_}DYNAMIC{\_}REGNUM}}{215} ! \entry {\code {VIRTUAL{\_}STACK{\_}VARS{\_}REGNUM}}{215} ! \entry {\code {VMS}}{401} ! \entry {VMS and case sensitivity}{189} ! \entry {VMS and include files}{185} \entry {VMS installation}{98} \entry {void pointers, arithmetic}{121} \entry {void, size of pointer to}{121} ! \entry {\code {VOIDmode}}{209} ! \entry {\code {volatil}}{207} ! \entry {\code {volatil}, in \code {insn}}{206} ! \entry {\code {volatil}, in \code {mem}}{205} ! \entry {\code {volatil}, in \code {reg}}{205} ! \entry {\code {volatil}, in \code {symbol{\_}ref}}{206} \entry {\code {volatile} applied to function}{126} ! \entry {volatile memory references}{207} ! \entry {voting between constraint alternatives}{259} ! \entry {\code {vprintf}}{402} \initial {W} \entry {warning for enumeration conversions}{34} --- 1768,1795 ---- \entry {variables in specified registers}{138} \entry {variables, local, in macros}{114} ! \entry {Vax calling convention}{160} \entry {VAX options}{52} ! \entry {\code {VAX{\_}FLOAT{\_}FORMAT}}{319} ! \entry {\file {VAXCRTL}}{191} ! \entry {\code {VIRTUAL{\_}INCOMING{\_}ARGS{\_}REGNUM}}{216} ! \entry {\code {VIRTUAL{\_}OUTGOING{\_}ARGS{\_}REGNUM}}{217} ! \entry {\code {VIRTUAL{\_}STACK{\_}DYNAMIC{\_}REGNUM}}{217} ! \entry {\code {VIRTUAL{\_}STACK{\_}VARS{\_}REGNUM}}{217} ! \entry {\code {VMS}}{403} ! \entry {VMS and case sensitivity}{191} ! \entry {VMS and include files}{187} \entry {VMS installation}{98} \entry {void pointers, arithmetic}{121} \entry {void, size of pointer to}{121} ! \entry {\code {VOIDmode}}{211} ! \entry {\code {volatil}}{209} ! \entry {\code {volatil}, in \code {insn}}{208} ! \entry {\code {volatil}, in \code {mem}}{207} ! \entry {\code {volatil}, in \code {reg}}{207} ! \entry {\code {volatil}, in \code {symbol{\_}ref}}{208} \entry {\code {volatile} applied to function}{126} ! \entry {volatile memory references}{209} ! \entry {voting between constraint alternatives}{261} ! \entry {\code {vprintf}}{404} \initial {W} \entry {warning for enumeration conversions}{34} *************** *** 1789,1823 **** \entry {warning for overloaded virtual fn}{36} \entry {warning messages}{31} ! \entry {warnings vs errors}{172} ! \entry {\code {WCHAR{\_}TYPE}}{319} ! \entry {\code {WCHAR{\_}TYPE{\_}SIZE}}{319} ! \entry {\code {which{\_}alternative}}{252} ! \entry {whitespace}{162} ! \entry {\code {word{\_}mode}}{212} ! \entry {\code {WORD{\_}REGISTER{\_}OPERATIONS}}{395} ! \entry {\code {WORD{\_}SWITCH{\_}TAKES{\_}ARG}}{305} ! \entry {\code {WORDS{\_}BIG{\_}ENDIAN}}{312} ! \entry {\code {WORDS{\_}BIG{\_}ENDIAN}, effect on \code {subreg}}{216} \initial {X} ! \entry {\samp {X} in constraint}{254} ! \entry {\code {XCmode}}{209} ! \entry {\code {XCOFF{\_}DEBUGGING{\_}INFO}}{387} ! \entry {\code {XEXP}}{203} ! \entry {\code {XFmode}}{209} ! \entry {\code {XINT}}{203} ! \entry {\file {xm-\var {machine}.h}}{401} ! \entry {\code {xor}}{220} ! \entry {\code {xor}, canonicalization of}{280} ! \entry {\code {xor\var {m}3} instruction pattern}{267} ! \entry {\code {XSTR}}{203} ! \entry {\code {XVEC}}{204} ! \entry {\code {XVECEXP}}{204} ! \entry {\code {XVECLEN}}{204} ! \entry {\code {XWINT}}{203} \initial {Z} \entry {zero division on 88k}{57} \entry {zero-length arrays}{118} ! \entry {\code {zero{\_}extend}}{223} ! \entry {\code {zero{\_}extend\var {mn}} instruction pattern}{269} ! \entry {\code {zero{\_}extract}}{223} ! \entry {\code {zero{\_}extract}, canonicalization of}{280} --- 1796,1830 ---- \entry {warning for overloaded virtual fn}{36} \entry {warning messages}{31} ! \entry {warnings vs errors}{173} ! \entry {\code {WCHAR{\_}TYPE}}{321} ! \entry {\code {WCHAR{\_}TYPE{\_}SIZE}}{321} ! \entry {\code {which{\_}alternative}}{254} ! \entry {whitespace}{163} ! \entry {\code {word{\_}mode}}{214} ! \entry {\code {WORD{\_}REGISTER{\_}OPERATIONS}}{398} ! \entry {\code {WORD{\_}SWITCH{\_}TAKES{\_}ARG}}{307} ! \entry {\code {WORDS{\_}BIG{\_}ENDIAN}}{314} ! \entry {\code {WORDS{\_}BIG{\_}ENDIAN}, effect on \code {subreg}}{218} \initial {X} ! \entry {\samp {X} in constraint}{256} ! \entry {\code {XCmode}}{211} ! \entry {\code {XCOFF{\_}DEBUGGING{\_}INFO}}{389} ! \entry {\code {XEXP}}{205} ! \entry {\code {XFmode}}{211} ! \entry {\code {XINT}}{205} ! \entry {\file {xm-\var {machine}.h}}{403} ! \entry {\code {xor}}{222} ! \entry {\code {xor}, canonicalization of}{282} ! \entry {\code {xor\var {m}3} instruction pattern}{269} ! \entry {\code {XSTR}}{205} ! \entry {\code {XVEC}}{206} ! \entry {\code {XVECEXP}}{206} ! \entry {\code {XVECLEN}}{206} ! \entry {\code {XWINT}}{205} \initial {Z} \entry {zero division on 88k}{57} \entry {zero-length arrays}{118} ! \entry {\code {zero{\_}extend}}{225} ! \entry {\code {zero{\_}extend\var {mn}} instruction pattern}{271} ! \entry {\code {zero{\_}extract}}{225} ! \entry {\code {zero{\_}extract}, canonicalization of}{282} 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.2/gcc.texi gcc-2.5.3/gcc.texi *** gcc-2.5.2/gcc.texi Thu Oct 21 22:15:54 1993 --- gcc-2.5.3/gcc.texi Wed Nov 10 16:20:28 1993 *************** *** 1057,1060 **** --- 1057,1070 ---- @item + If you build GNU CC on a BSD system using a directory stored in a System + V file system, problems may occur in running @code{fixincludes} if the + System V file system doesn't support symbolic links. These problems + result in a failure to fix the declaration of @code{size_t} in + @file{sys/types.h}. If you find that @code{size_t} is a signed type and + that type mismatches occur, this could be the cause. + + The solution is not to use such a directory for building GNU CC. + + @item In previous versions of GNU CC, the @code{gcc} driver program looked for @code{as} and @code{ld} in various places; for example, in files *************** *** 1194,1198 **** when optimizing floating point code. Otherwise, the assembler will complain when the GCC compiler fills a branch delay slot with a ! floating point instruction, such as add.d. @item --- 1204,1208 ---- when optimizing floating point code. Otherwise, the assembler will complain when the GCC compiler fills a branch delay slot with a ! floating point instruction, such as @code{add.d}. @item *************** *** 1207,1210 **** --- 1217,1239 ---- @item + In Ultrix 4.0 on the MIPS machine, @file{stdio.h} does not work with GNU + CC at all unless it has been fixed with @code{fixincludes}. This causes + problems in building GNU CC. Once GNU CC is installed, the problems go + away. + + To work around this problem, when making the stage 1 compiler, specify + this option to Make: + + @example + GCC_FOR_TARGET="./xgcc -B./ -I./include" + @end example + + When making stage 2 and stage 3, specify this option: + + @example + CFLAGS="-g -I./include" + @end example + + @item Users have reported some problems with version 2.0 of the MIPS compiler tools that were shipped with Ultrix 4.1. Version 2.10 *************** *** 1216,1220 **** libraries on RISC-OS 5.0, and DEC's OSF/1 systems. This is a bug in the linker, that is supposed to be fixed in future revisions. ! To protect against this, GCC passes @samp{-non_shared} to the linker unless you pass an explicit @samp{-shared} or @samp{-call_shared} switch. --- 1245,1249 ---- libraries on RISC-OS 5.0, and DEC's OSF/1 systems. This is a bug in the linker, that is supposed to be fixed in future revisions. ! To protect against this, GNU CC passes @samp{-non_shared} to the linker unless you pass an explicit @samp{-shared} or @samp{-call_shared} switch. *************** *** 1253,1256 **** --- 1282,1290 ---- @item + On NeXTStep 3.0, the Objective C compiler does not work, due, + apparently, to a kernel bug that it happens to trigger. This problem + does not happen on 3.1. + + @item On the Tower models 4@var{n}0 and 6@var{n}0, by default a process is not allowed to have more than one megabyte of memory. GNU CC cannot compile *************** *** 1309,1312 **** --- 1343,1385 ---- @item + On the Intel Paragon (an i860 machine), if you are using operating + system version 1.0, you will get warnings or errors about redefinition + of @code{va_arg} when you build GNU CC. + + If this happens, then you need to link most programs with the library + @file{iclib.a}. You must also modify @file{stdio.h} as follows: before + the lines + + @example + #if defined(__i860__) && !defined(_VA_LIST) + #include + @end example + + @noindent + insert the line + + @example + #if __PGC__ + @end example + + @noindent + and after the lines + + @example + extern int vprintf(const char *, va_list ); + extern int vsprintf(char *, const char *, va_list ); + #endif + @end example + + @noindent + insert the line + + @example + #endif /* __PGC__ */ + @end example + + These problems don't exist in operating system version 1.1. + + @item On the Altos 3068, programs compiled with GNU CC won't work unless you fix a kernel bug. This happens using system versions V.2.2 1.0gT1 and *************** *** 1370,1378 **** @itemize @bullet @item - If you are using version 2.3 of libg++, you need to rebuild it with - @samp{make CC=gcc} to avoid mismatches in the definition of - @code{size_t}. - - @item Objective C does not work on the RS/6000 or the Alpha. --- 1443,1446 ---- *************** *** 1407,1411 **** @item ! On some BSD systems including some versions of Ultrix, use of profiling causes static variable destructors (currently used only in C++) not to be run. --- 1475,1479 ---- @item ! On some BSD systems, including some versions of Ultrix, use of profiling causes static variable destructors (currently used only in C++) not to be run. *************** *** 1455,1458 **** --- 1523,1532 ---- @item + On some SGI systems, when you use @samp{-lgl_s} as an option, + it gets translated magically to @samp{-lgl_s -lX11_s -lc_s}. + Naturally, this does not happen when you use GNU CC. + You must specify all three options explicitly. + + @item On a Sparc, GNU CC aligns all values of type @code{double} on an 8-byte boundary, and it expects every @code{double} to be so aligned. The Sun *************** *** 2071,2074 **** --- 2145,2156 ---- different machine models, and arrange a structure of symbolic links so as to use the proper set, but you'll have to do this by hand. + + @item + On Lynxos, GNU CC by default does not fix the header files. This is + because bugs in the shell cause the @code{fixincludes} script to fail. + + This means you will encounter problems due to bugs in the system header + files. It may be no comfort that they aren't GNU CC's fault, but it + does mean that there's nothing for us to do about them. @end itemize 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.2/gen-protos.c gcc-2.5.3/gen-protos.c *** gcc-2.5.2/gen-protos.c Tue Oct 26 21:47:01 1993 --- gcc-2.5.3/gen-protos.c Thu Nov 11 10:52:26 1993 *************** *** 28,31 **** --- 28,41 ---- sstring linebuf; + /* Avoid error if config defines abort as fancy_abort. + It's not worth "really" implementing this because ordinary + compiler users never run fix-header. */ + + void + fancy_abort () + { + abort (); + } + int main (argc, argv) *************** *** 109,114 **** /* NOTE: If you edit this, ! also edit lookup_std_proto in patch-header.c !! */ ! i = hash(name_start) % HASH_SIZE; i0 = i; if (hash_tab[i] != 0) --- 119,124 ---- /* NOTE: If you edit this, ! also edit lookup_std_proto in fix-header.c !! */ ! i = hash (name_start) % HASH_SIZE; i0 = i; if (hash_tab[i] != 0) *************** *** 118,122 **** i = (i+1) % HASH_SIZE; if (i == i0) ! abort(); if (hash_tab[i] == 0) break; --- 128,132 ---- i = (i+1) % HASH_SIZE; if (i == i0) ! abort (); if (hash_tab[i] == 0) 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.2/install.texi gcc-2.5.3/install.texi *** gcc-2.5.2/install.texi Sat Oct 30 18:26:48 1993 --- gcc-2.5.3/install.texi Thu Nov 11 10:40:34 1993 *************** *** 29,37 **** @iftex See below for VMS systems, and modified procedures needed on other ! systems including HP, Sun, 3b1, SCO Unix and Unos. The following section ! says how to compile in a separate directory on Unix; here we assume you ! compile in the same directory that contains the source files. @end iftex @enumerate @item --- 29,44 ---- @iftex See below for VMS systems, and modified procedures needed on other ! systems including HP, Sun, 3b1, SCO Unix and Unos. ! ! The following section says how to compile in a separate directory on ! Unix; here we assume you compile in the same directory that contains the ! source files. @end iftex + You cannot install GNU C by itself on MSDOS; it will not compile under + any MSDOS compiler except itself. You need to get the complete + compilation package DJGPP, which includes binaries as well as sources, + and includes all the necessary compilation tools and libraries. + @enumerate @item *************** *** 179,198 **** 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 ! @samp{mips-@var{any}}). On any other system, @samp{--with-gnu-as} has ! no effect. On the systems listed above (except for the HP-PA and for ISC on the --- 186,204 ---- GNU CC to work with GAS. Building and installing GAS is up to you. ! Conversely, if you @emph{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{any}-@var{any}}, @samp{hppa1.1-@var{any}-@var{any}}, ! @samp{i386-@var{any}-sysv}, @samp{i386-@var{any}-isc},@* ! @samp{i860-@var{any}-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 @samp{mips-@var{any}}). On any other system, @samp{--with-gnu-as} ! has no effect. On the systems listed above (except for the HP-PA and for ISC on the *************** *** 373,376 **** --- 379,396 ---- seems not to have this problem. + @item i860-intel-osf1 + This is the Paragon. + @ifset INSTALLONLY + If you have version 1.0 of the operating system, you need to take + special steps to build GNU CC due to peculiarities of the system. Newer + system versions have no problem. See the section `Installation Problems' + in the GNU CC Manual. + @end ifset + @ifclear INSTALLONLY + If you have version 1.0 of the operating system, + see @ref{Installation Problems}, for special things you need to do to + compensate for peculiarities in the system. + @end ifclear + @item m68000-att AT&T 3b1, a.k.a. 7300 PC. Special procedures are needed to compile GNU *************** *** 608,611 **** --- 628,635 ---- compiler to find the proper tools for compilation of the program @file{enquire}. + + Alternatively, you can do subsequent compilation using a value of the + @code{PATH} environment variable such that the necessary GNU tools come + before the standard system tools. @item 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.2/integrate.c gcc-2.5.3/integrate.c *** gcc-2.5.2/integrate.c Tue Sep 28 21:23:56 1993 --- gcc-2.5.3/integrate.c Wed Nov 10 19:30:18 1993 *************** *** 1106,1109 **** --- 1106,1110 ---- rtx *global_const_equiv_map; + int global_const_equiv_map_size; #define FIXED_BASE_PLUS_P(X) \ *************** *** 1354,1358 **** parameters into their memory location. */ ! push_temp_slots (); for (i = 0; i < nargs; i++) { --- 1355,1361 ---- parameters into their memory location. */ ! /* Don't try to free temp stack slots here, because we may put one of the ! parameters into a temp stack slot. */ ! for (i = 0; i < nargs; i++) { *************** *** 1375,1379 **** { temp = copy_addr_to_reg (copy); ! if (CONSTANT_P (copy) || FIXED_BASE_PLUS_P (copy)) { map->const_equiv_map[REGNO (temp)] = copy; --- 1378,1383 ---- { temp = copy_addr_to_reg (copy); ! if ((CONSTANT_P (copy) || FIXED_BASE_PLUS_P (copy)) ! && REGNO (temp) < map->const_equiv_map_size) { map->const_equiv_map[REGNO (temp)] = copy; *************** *** 1412,1416 **** temp = copy_to_mode_reg (GET_MODE (loc), copy); REG_USERVAR_P (temp) = REG_USERVAR_P (loc); ! if (CONSTANT_P (copy) || FIXED_BASE_PLUS_P (copy)) { map->const_equiv_map[REGNO (temp)] = copy; --- 1416,1421 ---- temp = copy_to_mode_reg (GET_MODE (loc), copy); REG_USERVAR_P (temp) = REG_USERVAR_P (loc); ! if ((CONSTANT_P (copy) || FIXED_BASE_PLUS_P (copy)) ! && REGNO (temp) < map->const_equiv_map_size) { map->const_equiv_map[REGNO (temp)] = copy; *************** *** 1421,1429 **** map->reg_map[REGNO (loc)] = copy; } else abort (); - - /* Free any temporaries we made setting up this parameter. */ - free_temp_slots (); } --- 1426,1484 ---- map->reg_map[REGNO (loc)] = copy; } + else if (GET_CODE (loc) == CONCAT) + { + /* This is the good case where the parameter is in a + pair of separate pseudos. + If it is read-only and our argument is a constant, set up the + constant equivalence. + + If LOC is REG_USERVAR_P, the usual case, COPY must also have + that flag set if it is a register. + + Also, don't allow hard registers here; they might not be valid + when substituted into insns. */ + rtx locreal = gen_realpart (GET_MODE (XEXP (loc, 0)), loc); + rtx locimag = gen_imagpart (GET_MODE (XEXP (loc, 0)), loc); + rtx copyreal = gen_realpart (GET_MODE (locreal), copy); + rtx copyimag = gen_imagpart (GET_MODE (locimag), copy); + + if ((GET_CODE (copyreal) != REG && GET_CODE (copyreal) != SUBREG) + || (GET_CODE (copyreal) == REG && REG_USERVAR_P (locreal) + && ! REG_USERVAR_P (copyreal)) + || (GET_CODE (copyreal) == REG + && REGNO (copyreal) < FIRST_PSEUDO_REGISTER)) + { + temp = copy_to_mode_reg (GET_MODE (locreal), copyreal); + REG_USERVAR_P (temp) = REG_USERVAR_P (locreal); + if ((CONSTANT_P (copyreal) || FIXED_BASE_PLUS_P (copyreal)) + && REGNO (temp) < map->const_equiv_map_size) + { + map->const_equiv_map[REGNO (temp)] = copyreal; + map->const_age_map[REGNO (temp)] = CONST_AGE_PARM; + } + copyreal = temp; + } + map->reg_map[REGNO (locreal)] = copyreal; + + if ((GET_CODE (copyimag) != REG && GET_CODE (copyimag) != SUBREG) + || (GET_CODE (copyimag) == REG && REG_USERVAR_P (locimag) + && ! REG_USERVAR_P (copyimag)) + || (GET_CODE (copyimag) == REG + && REGNO (copyimag) < FIRST_PSEUDO_REGISTER)) + { + temp = copy_to_mode_reg (GET_MODE (locimag), copyimag); + REG_USERVAR_P (temp) = REG_USERVAR_P (locimag); + if ((CONSTANT_P (copyimag) || FIXED_BASE_PLUS_P (copyimag)) + && REGNO (temp) < map->const_equiv_map_size) + { + map->const_equiv_map[REGNO (temp)] = copyimag; + map->const_age_map[REGNO (temp)] = CONST_AGE_PARM; + } + copyimag = temp; + } + map->reg_map[REGNO (locimag)] = copyimag; + } else abort (); } *************** *** 1455,1466 **** temp = change_address (temp, VOIDmode, XEXP (temp, 0)); store_expr (arg_trees[i], temp, 0); - - /* Free any temporaries we made setting up this parameter. */ - free_temp_slots (); } } - pop_temp_slots (); - /* Deal with the places that the function puts its result. We are driven by what is placed into DECL_RESULT. --- 1510,1516 ---- *************** *** 1493,1500 **** temp = force_reg (Pmode, structure_value_addr); map->reg_map[REGNO (XEXP (loc, 0))] = temp; ! if (CONSTANT_P (structure_value_addr) ! || (GET_CODE (structure_value_addr) == PLUS ! && XEXP (structure_value_addr, 0) == virtual_stack_vars_rtx ! && GET_CODE (XEXP (structure_value_addr, 1)) == CONST_INT)) { map->const_equiv_map[REGNO (temp)] = structure_value_addr; --- 1543,1551 ---- temp = force_reg (Pmode, structure_value_addr); map->reg_map[REGNO (XEXP (loc, 0))] = temp; ! if ((CONSTANT_P (structure_value_addr) ! || (GET_CODE (structure_value_addr) == PLUS ! && XEXP (structure_value_addr, 0) == virtual_stack_vars_rtx ! && GET_CODE (XEXP (structure_value_addr, 1)) == CONST_INT)) ! && REGNO (temp) < map->const_equiv_map_size) { map->const_equiv_map[REGNO (temp)] = structure_value_addr; *************** *** 1564,1567 **** --- 1615,1619 ---- via note_stores. */ global_const_equiv_map = map->const_equiv_map; + global_const_equiv_map_size = map->const_equiv_map_size; /* Now copy the insns one by one. Do this in two passes, first the insns and *************** *** 1969,1974 **** map->reg_map[regno] = temp = force_reg (Pmode, force_operand (loc, NULL_RTX)); ! map->const_equiv_map[REGNO (temp)] = loc; ! map->const_age_map[REGNO (temp)] = CONST_AGE_PARM; seq = gen_sequence (); --- 2021,2030 ---- map->reg_map[regno] = temp = force_reg (Pmode, force_operand (loc, NULL_RTX)); ! ! if (REGNO (temp) < map->const_equiv_map_size) ! { ! map->const_equiv_map[REGNO (temp)] = loc; ! map->const_age_map[REGNO (temp)] = CONST_AGE_PARM; ! } seq = gen_sequence (); *************** *** 1995,2000 **** map->reg_map[regno] = temp = force_reg (Pmode, force_operand (loc, NULL_RTX)); ! map->const_equiv_map[REGNO (temp)] = loc; ! map->const_age_map[REGNO (temp)] = CONST_AGE_PARM; seq = gen_sequence (); --- 2051,2060 ---- map->reg_map[regno] = temp = force_reg (Pmode, force_operand (loc, NULL_RTX)); ! ! if (REGNO (temp) < map->const_equiv_map_size) ! { ! map->const_equiv_map[REGNO (temp)] = loc; ! map->const_age_map[REGNO (temp)] = CONST_AGE_PARM; ! } seq = gen_sequence (); *************** *** 2035,2038 **** --- 2095,2100 ---- return gen_rtx (SUBREG, GET_MODE (orig), SUBREG_REG (copy), SUBREG_WORD (orig) + SUBREG_WORD (copy)); + else if (GET_CODE (copy) == CONCAT) + return (subreg_lowpart_p (orig) ? XEXP (copy, 0) : XEXP (copy, 1)); else return gen_rtx (SUBREG, GET_MODE (orig), copy, *************** *** 2326,2334 **** int regno = REGNO (map->equiv_sets[i].dest); ! if (map->const_equiv_map[regno] == 0 ! /* Following clause is a hack to make case work where GNU C++ ! reassigns a variable to make cse work right. */ ! || ! rtx_equal_p (map->const_equiv_map[regno], ! map->equiv_sets[i].equiv)) { map->const_equiv_map[regno] = map->equiv_sets[i].equiv; --- 2388,2397 ---- int regno = REGNO (map->equiv_sets[i].dest); ! if (regno < map->const_equiv_map_size ! && (map->const_equiv_map[regno] == 0 ! /* Following clause is a hack to make case work where GNU C++ ! reassigns a variable to make cse work right. */ ! || ! rtx_equal_p (map->const_equiv_map[regno], ! map->equiv_sets[i].equiv))) { map->const_equiv_map[regno] = map->equiv_sets[i].equiv; *************** *** 2643,2647 **** for (i = regno; i <= last_reg; i++) ! global_const_equiv_map[i] = 0; } } --- 2706,2711 ---- for (i = regno; i <= last_reg; i++) ! if (i < global_const_equiv_map_size) ! global_const_equiv_map[i] = 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.2/integrate.h gcc-2.5.3/integrate.h *** gcc-2.5.2/integrate.h Fri May 14 13:19:47 1993 --- gcc-2.5.3/integrate.h Thu Nov 11 00:12:05 1993 *************** *** 118,120 **** --- 118,125 ---- extern void mark_stores PROTO((rtx, rtx)); + /* Unfortunately, we need a global copy of const_equiv map for communication + with a function called from note_stores. Be *very* careful that this + is used properly in the presence of recursion. */ + extern rtx *global_const_equiv_map; + extern int global_const_equiv_map_size; 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.2/invoke.texi gcc-2.5.3/invoke.texi *** gcc-2.5.2/invoke.texi Tue Oct 26 19:03:06 1993 --- gcc-2.5.3/invoke.texi Thu Nov 11 08:32:01 1993 *************** *** 2788,2798 **** @kindex -mnew-mnemonics @kindex -mold-mnemonics ! Select the mnemonics for GNU CC to use in the generated assembler code. ! @samp{-mnew-mnemonics} requests GNU CC to produce output that uses the ! assembler mnemonics defined for the PowerPC architecture and the ! @samp{-mold-mnemonics} requests GNU CC to use the assembler mnemonics ! defined for the POWER architecture. Instructions defined in only one ! architecture have only one mnemonic; GNU CC uses that mnemonic ! irrespective of which of thse options is specified. PowerPC assemblers support both the old and new mnemonics, as will later --- 2788,2798 ---- @kindex -mnew-mnemonics @kindex -mold-mnemonics ! Select which mnemonics to use in the generated assembler code. ! @samp{-mnew-mnemonics} requests output that uses the assembler mnemonics ! defined for the PowerPC architecture, while @samp{-mold-mnemonics} ! requests the assembler mnemonics defined for the POWER architecture. ! Instructions defined in only one architecture have only one mnemonic; ! GNU CC uses that mnemonic irrespective of which of thse options is ! specified. PowerPC assemblers support both the old and new mnemonics, as will later *************** *** 2799,2803 **** POWER assemblers. Current POWER assemblers only support the old mnemonics. Specify @samp{-mnew-mnemonics} if you have an assembler that ! sypports them, otherwise specify @samp{-mold-mnemonics}. The default value of these options depends on how GNU CC was configured. --- 2799,2803 ---- POWER assemblers. Current POWER assemblers only support the old mnemonics. Specify @samp{-mnew-mnemonics} if you have an assembler that ! supports them, otherwise specify @samp{-mold-mnemonics}. The default value of these options depends on how GNU CC was configured. 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.2/just-fixinc gcc-2.5.3/just-fixinc *** gcc-2.5.2/just-fixinc Tue Sep 21 17:39:48 1993 --- gcc-2.5.3/just-fixinc Sat Nov 6 03:59:25 1993 *************** *** 1,5 **** #!/bin/sh # This script exists for use after installing ! # the Solaris binaries from the FSF CD-ROM. # Use it *after* copying the directory of binaries # to the proper installed location. --- 1,5 ---- #!/bin/sh # This script exists for use after installing ! # the Solaris binaries from a distribution tape/CDROM. # Use it *after* copying the directory of binaries # to the proper installed location. *************** *** 11,20 **** # It only modifies copies in the GCC installation directory. ! installed=/opt/gnu/lib/gcc-lib/sparc-sun-solaris2/2.4.2 cd $installed/include rmdir tmpfoo > /dev/null 2>&1 mkdir tmpfoo mv va-sparc.h varargs.h stdarg.h stddef.h limits.h float.h proto.h tmpfoo $installed/fixinc.svr4 $installed/include /usr/include $installed mv tmpfoo/* . rmdir tmpfoo --- 11,35 ---- # It only modifies copies in the GCC installation directory. ! installed=/opt/gnu/lib/gcc-lib/sparc-sun-solaris2/2.5.0 cd $installed/include + rmdir tmpfoo > /dev/null 2>&1 mkdir tmpfoo mv va-sparc.h varargs.h stdarg.h stddef.h limits.h float.h proto.h tmpfoo + $installed/fixinc.svr4 $installed/include /usr/include $installed + + # Make sure fixed native limits.h gets renamed to syslimits.h before gcc's + # limits.h from tmpfoo is moved back. + rm -f syslimits.h + if test -f limits.h ; then + mv limits.h syslimits.h + else + cp $installed/gsyslimits.h syslimits.h + fi + chmod a+r syslimits.h + mv tmpfoo/* . rmdir tmpfoo + + # eof 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.2/libgcc2.c gcc-2.5.3/libgcc2.c *** gcc-2.5.2/libgcc2.c Tue Oct 26 19:26:59 1993 --- gcc-2.5.3/libgcc2.c Wed Nov 3 13:59:49 1993 *************** *** 1990,1994 **** extern void __do_global_dtors (); extern void _cleanup (); ! extern volatile void _exit (); void --- 1990,1994 ---- extern void __do_global_dtors (); extern void _cleanup (); ! extern void _exit () __attribute__ ((noreturn)); void 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.2/listing gcc-2.5.3/listing *** gcc-2.5.2/listing Thu May 7 02:36:31 1992 --- gcc-2.5.3/listing Fri Nov 5 20:20:32 1993 *************** *** 30,33 **** --- 30,34 ---- # sparc for SPARC (SUN-4, ..) # i386 for i386 (Sun i386, ...) + # i386-linux for i386 (Linux, ...) # uncomment the line you need: *************** *** 36,42 **** # MYSYS=sparc # MYSYS=i386 # MYSYS=`mach` # this will work on Suns with SunOS > 4.0.0 ! exec gawk -vsys=$MYSYS ' # commandline arguments: # ARGV[0] = "gawk" --- 37,47 ---- # MYSYS=sparc # MYSYS=i386 + # MYSYS=i386-linux # MYSYS=`mach` # this will work on Suns with SunOS > 4.0.0 ! FILENAME=$1 ! shift ! ! exec gawk -vsys=$MYSYS -voptions="$*" ' # commandline arguments: # ARGV[0] = "gawk" *************** *** 43,49 **** # ARGV[1] = processid # ARGV[2] = filename - # ARGV[3] .. ARGV[ARGC-1] = compiler options BEGIN { ! if (ARGC < 3) { usage() exit 1 --- 48,53 ---- # ARGV[1] = processid # ARGV[2] = filename BEGIN { ! if (ARGC != 3) { usage() exit 1 *************** *** 66,70 **** line_hint = "^[ \t]*\.stabn.*" } ! else if (sys == "mc68020" || sys == "mc68030") { line_hint = "^[ \t]*\.stabd.*" } --- 70,74 ---- line_hint = "^[ \t]*\.stabn.*" } ! else if (sys == "mc68020" || sys == "mc68030" || sys == "i386-linux") { line_hint = "^[ \t]*\.stabd.*" } *************** *** 146,153 **** # now we append the compiler options specified by the user ! for (i = 3; i < ARGC; i++) { ! cmdline = cmdline " " ARGV[i] ! ARGV[i] = "" # we do not want to treat it as an inputfile ! } # last but not least: the name of the file to compile --- 150,154 ---- # now we append the compiler options specified by the user ! cmdline = cmdline " " options # last but not least: the name of the file to compile *************** *** 155,157 **** } ! ' $$ $* --- 156,159 ---- } ! ' $$ $FILENAME ! 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.2/loop.c gcc-2.5.3/loop.c *** gcc-2.5.2/loop.c Wed Oct 20 07:56:35 1993 --- gcc-2.5.3/loop.c Tue Nov 9 19:07:15 1993 *************** *** 3411,3415 **** bl->regno, INSN_UID (bl->init_insn)); ! if (valid_initial_value_p (src, bl->init_insn, call_seen, loop_start)) { bl->initial_value = src; --- 3411,3417 ---- bl->regno, INSN_UID (bl->init_insn)); ! if ((GET_MODE (src) == GET_MODE (regno_reg_rtx[bl->regno]) ! || GET_MODE (src) == VOIDmode) ! && valid_initial_value_p (src, bl->init_insn, call_seen, loop_start)) { bl->initial_value = src; *************** *** 6240,6246 **** if (GET_CODE (dest) != REG || REGNO (dest) >= max_reg_before_loop ! || reg_iv_type[REGNO (dest)] != BASIC_INDUCT ! /* Reject this insn if the source isn't valid for the mode of DEST. */ ! || GET_MODE (dest) != GET_MODE (SET_DEST (set))) return; --- 6242,6246 ---- if (GET_CODE (dest) != REG || REGNO (dest) >= max_reg_before_loop ! || reg_iv_type[REGNO (dest)] != BASIC_INDUCT) return; 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.2/md.texi gcc-2.5.3/md.texi *** gcc-2.5.2/md.texi Wed Oct 13 03:26:37 1993 --- gcc-2.5.3/md.texi Thu Nov 11 08:42:06 1993 *************** *** 508,514 **** instructions. ! If @code{ASSEMBLER_DIALECT} is defined, templates may contain strings of ! the form @samp{@{option0|option1|option2@}} which represent variants of ! assembler language syntax. @xref{Instruction Output}. @node Output Statement --- 508,515 ---- instructions. ! If @code{ASSEMBLER_DIALECT} is defined, you can use ! @samp{@{option0|option1|option2@}} constructs in the templates. These ! describe multiple variants of assembler language syntax. ! @xref{Instruction Output}. @node Output Statement 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.2/objc/archive.c gcc-2.5.3/objc/archive.c *** gcc-2.5.2/objc/archive.c Wed Sep 22 14:03:44 1993 --- gcc-2.5.3/objc/archive.c Fri Nov 5 15:31:17 1993 *************** *** 618,623 **** case _B_UCOMM: { ! len = __objc_read_nbyte_uint(stream, (buf[0] & _B_VALUE), &key); ! (*string) = hash_value_for_key (stream->stream_table, (void*)key); } break; --- 618,626 ---- case _B_UCOMM: { ! char *tmp; ! len = __objc_read_nbyte_uint (stream, (buf[0] & _B_VALUE), &key); ! tmp = hash_value_for_key (stream->stream_table, (void*)key); ! *string = __objc_xmalloc (strlen (tmp) + 1); ! strcpy (*string, tmp); } 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.2/objc/hash.h gcc-2.5.3/objc/hash.h *** gcc-2.5.2/objc/hash.h Sun May 9 10:29:09 1993 --- gcc-2.5.3/objc/hash.h Fri Nov 5 15:30:53 1993 *************** *** 194,198 **** compare_strings (const void *k1, const void *k2) { ! return !strcmp (k1, k2); } --- 194,203 ---- compare_strings (const void *k1, const void *k2) { ! if (k1 == k2) ! return 1; ! else if (k1 == 0 || k2 == 0) ! return 0; ! else ! return !strcmp (k1, k2); } 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.2/objc/objects.c gcc-2.5.3/objc/objects.c *** gcc-2.5.2/objc/objects.c Thu May 6 05:24:39 1993 --- gcc-2.5.3/objc/objects.c Tue Nov 2 02:53:20 1993 *************** *** 26,29 **** --- 26,30 ---- #include "runtime.h" /* the kitchen sink */ + #include "../tconfig.h" /* include defs of bzero for target */ id __objc_object_alloc(Class*); 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.2/optabs.c gcc-2.5.3/optabs.c *** gcc-2.5.2/optabs.c Sat Sep 18 09:27:36 1993 --- gcc-2.5.3/optabs.c Tue Nov 2 07:18:54 1993 *************** *** 3725,3729 **** = gen_rtx (SYMBOL_REF, Pmode, "cabs"); ! ffs_optab->handlers[(int) mode_for_size (BITS_PER_WORD, MODE_INT, 0)] .libfunc = gen_rtx (SYMBOL_REF, Pmode, "ffs"); --- 3725,3733 ---- = gen_rtx (SYMBOL_REF, Pmode, "cabs"); ! /* The ffs function operates on `int'. */ ! #ifndef INT_TYPE_SIZE ! #define INT_TYPE_SIZE BITS_PER_WORD ! #endif ! ffs_optab->handlers[(int) mode_for_size (INT_TYPE_SIZE, MODE_INT, 0)] .libfunc = gen_rtx (SYMBOL_REF, Pmode, "ffs"); 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.2/protoize.c gcc-2.5.3/protoize.c *** gcc-2.5.2/protoize.c Tue Oct 26 04:50:49 1993 --- gcc-2.5.3/protoize.c Fri Nov 5 16:55:14 1993 *************** *** 733,736 **** --- 733,791 ---- } + /* Read LEN bytes at PTR from descriptor DESC, for file FILENAME, + retrying if necessary. Return the actual number of bytes read. */ + + static int + safe_read (desc, ptr, len) + int desc; + char *ptr; + int len; + { + int left = len; + while (left > 0) { + int nchars = read (desc, ptr, left); + if (nchars < 0) + { + #ifdef EINTR + if (errno == EINTR) + continue; + #endif + return nchars; + } + if (nchars == 0) + break; + ptr += nchars; + left -= nchars; + } + return len - left; + } + + /* Write LEN bytes at PTR to descriptor DESC, + retrying if necessary, and treating any real error as fatal. */ + + static void + safe_write (desc, ptr, len, out_fname) + int desc; + char *ptr; + int len; + char *out_fname; + { + while (len > 0) { + int written = write (desc, ptr, len); + if (written < 0) + { + #ifdef EINTR + if (errno == EINTR) + continue; + #endif + fprintf (stderr, "%s: error writing file `%s': %s\n", + pname, shortpath (NULL, out_fname), sys_errlist[errno]); + return; + } + ptr += written; + len -= written; + } + } + /* Get setup to recover in case the edit we are about to do goes awry. */ *************** *** 2229,2233 **** /* Read the aux_info file into memory. */ ! if (read (aux_info_file, aux_info_base, aux_info_size) != aux_info_size) { fprintf (stderr, "%s: error reading aux info file `%s': %s\n", --- 2284,2288 ---- /* Read the aux_info file into memory. */ ! if (safe_read (aux_info_file, aux_info_base, aux_info_size) != aux_info_size) { fprintf (stderr, "%s: error reading aux info file `%s': %s\n", *************** *** 4147,4151 **** make sure that it ends with a newline followed by a null. */ ! if (read (input_file, new_orig_text_base, orig_size) != orig_size) { close (input_file); --- 4202,4206 ---- make sure that it ends with a newline followed by a null. */ ! if (safe_read (input_file, new_orig_text_base, orig_size) != orig_size) { close (input_file); *************** *** 4191,4197 **** /* Write the clean file. */ ! if (write (clean_file, new_clean_text_base, clean_size) != clean_size) ! fprintf (stderr, "%s: error writing file `%s': %s\n", ! pname, shortpath (NULL, clean_filename), sys_errlist[errno]); close (clean_file); --- 4246,4250 ---- /* Write the clean file. */ ! safe_write (clean_file, new_clean_text_base, clean_size, clean_filename); close (clean_file); *************** *** 4327,4334 **** unsigned int out_size = (repl_write_ptr + 1) - repl_text_base; ! if (write (output_file, repl_text_base, out_size) != out_size) ! fprintf (stderr, "%s: error writing file `%s': %s\n", ! pname, shortpath (NULL, convert_filename), ! sys_errlist[errno]); } --- 4380,4384 ---- unsigned int out_size = (repl_write_ptr + 1) - repl_text_base; ! safe_write (output_file, repl_text_base, out_size, convert_filename); } 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.2/regclass.c gcc-2.5.3/regclass.c *** gcc-2.5.2/regclass.c Mon Oct 11 15:51:48 1993 --- gcc-2.5.3/regclass.c Wed Nov 3 15:35:40 1993 *************** *** 758,768 **** /* Check for commutative in a separate loop so everything will ! have been initialized. Don't bother doing anything if the ! second operand is a constant since that is the case ! for which the constraints should have been written. */ for (i = 0; i < noperands - 1; i++) ! if (constraints[i][0] == '%' ! && ! CONSTANT_P (recog_operand[i+1])) { char *xconstraints[MAX_RECOG_OPERANDS]; --- 758,766 ---- /* Check for commutative in a separate loop so everything will ! have been initialized. We must do this even if one operand ! is a constant--see addsi3 in m68k.md. */ for (i = 0; i < noperands - 1; i++) ! if (constraints[i][0] == '%') { char *xconstraints[MAX_RECOG_OPERANDS]; 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.2/reload.c gcc-2.5.3/reload.c *** gcc-2.5.2/reload.c Tue Oct 19 19:19:01 1993 --- gcc-2.5.3/reload.c Thu Nov 4 18:57:23 1993 *************** *** 2823,2827 **** || (GET_CODE (operand) == REG && REGNO (operand) >= FIRST_PSEUDO_REGISTER ! && reg_renumber[REGNO (operand)] < 0)) win = 1; if (CONSTANT_P (operand) || GET_CODE (operand) == MEM) --- 2823,2834 ---- || (GET_CODE (operand) == REG && REGNO (operand) >= FIRST_PSEUDO_REGISTER ! && reg_renumber[REGNO (operand)] < 0 ! /* If reg_equiv_address is nonzero, we will be ! loading it into a register; hence it will be ! offsettable, but we cannot say that reg_equiv_mem ! is offsettable without checking. */ ! && ((reg_equiv_mem[REGNO (operand)] != 0 ! && offsettable_memref_p (reg_equiv_mem[REGNO (operand)])) ! || (reg_equiv_address[REGNO (operand)] != 0)))) win = 1; if (CONSTANT_P (operand) || GET_CODE (operand) == MEM) *************** *** 2980,2983 **** --- 2987,3006 ---- bad = 1; + /* If this is a constant that is reloaded into the desired + class by copying it to memory first, count that as another + reload. This is consistent with other code and is + required to avoid chosing another alternative when + the constant is moved into memory by this function on + an early reload pass. Note that the test here is + precisely the same as in the code below that calls + force_const_mem. */ + if (CONSTANT_P (operand) + && (PREFERRED_RELOAD_CLASS (operand, + (enum reg_class) this_alternative[i]) + == NO_REGS) + && this_alternative[i] != (int) NO_REGS + && operand_mode[i] != VOIDmode) + losers++; + /* We prefer to reload pseudos over reloading other things, since such reloads may be able to be eliminated later. *************** *** 3324,3328 **** /* Handle an operand with a nonoffsettable address appearing where an offsettable address will do ! by reloading the address into a base register. */ else if (goal_alternative_matched[i] == -1 && goal_alternative_offmemok[i] --- 3347,3355 ---- /* Handle an operand with a nonoffsettable address appearing where an offsettable address will do ! by reloading the address into a base register. ! ! ??? We can also do this when the operand is a register and ! reg_equiv_mem is not offsettable, but this is a bit tricky, ! so we don't bother with it. It may not be worth doing. */ else if (goal_alternative_matched[i] == -1 && goal_alternative_offmemok[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.2/reload1.c gcc-2.5.3/reload1.c *** gcc-2.5.2/reload1.c Wed Oct 20 00:08:00 1993 --- gcc-2.5.3/reload1.c Tue Nov 9 19:28:32 1993 *************** *** 1696,1699 **** --- 1696,1727 ---- } /* We can't complete a group, so start one. */ + #ifdef SMALL_REGISTER_CLASSES + /* Look for a pair neither of which is explicitly used. */ + if (i == FIRST_PSEUDO_REGISTER) + for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) + { + int k; + j = potential_reload_regs[i]; + /* Verify that J+1 is a potential reload reg. */ + for (k = 0; k < FIRST_PSEUDO_REGISTER; k++) + if (potential_reload_regs[k] == j + 1) + break; + if (j >= 0 && j + 1 < FIRST_PSEUDO_REGISTER + && k < FIRST_PSEUDO_REGISTER + && spill_reg_order[j] < 0 && spill_reg_order[j + 1] < 0 + && TEST_HARD_REG_BIT (reg_class_contents[class], j) + && TEST_HARD_REG_BIT (reg_class_contents[class], j + 1) + && HARD_REGNO_MODE_OK (j, group_mode[class]) + && ! TEST_HARD_REG_BIT (counted_for_nongroups, + j + 1) + && ! TEST_HARD_REG_BIT (bad_spill_regs, j + 1) + /* Reject J at this stage + if J+1 was explicitly used. */ + && ! regs_explicitly_used[j + 1]) + break; + } + #endif + /* Now try any group at all + whose registers are not in bad_spill_regs. */ if (i == FIRST_PSEUDO_REGISTER) for (i = 0; i < FIRST_PSEUDO_REGISTER; 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.2/scan-decls.c gcc-2.5.3/scan-decls.c *** gcc-2.5.2/scan-decls.c Tue Oct 26 21:47:08 1993 --- gcc-2.5.3/scan-decls.c Sun Nov 7 22:08:34 1993 *************** *** 186,190 **** { recognized_extern (buf.base, rtype.base); ! goto handle_statement; } else --- 186,190 ---- { recognized_extern (buf.base, rtype.base); ! goto new_statement; } 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.2/scan.c gcc-2.5.3/scan.c *** gcc-2.5.2/scan.c Tue Oct 26 21:47:12 1993 --- gcc-2.5.3/scan.c Sat Nov 6 01:09:44 1993 *************** *** 1,3 **** ! /* scan.c - Utility functions for scan-decls and patch-header programs. Copyright (C) 1993 Free Software Foundation, Inc. --- 1,3 ---- ! /* scan.c - Utility functions for scan-decls and fix-header programs. Copyright (C) 1993 Free Software Foundation, Inc. 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.2/scan.h gcc-2.5.3/scan.h *** gcc-2.5.2/scan.h Sun Jul 25 19:59:59 1993 --- gcc-2.5.3/scan.h Sat Nov 6 01:09:48 1993 *************** *** 1,3 **** ! /* scan.h - Utility declarations for scan-decls and patch-header programs. Copyright (C) 1993 Free Software Foundation, Inc. --- 1,3 ---- ! /* scan.h - Utility declarations for scan-decls and fix-header programs. Copyright (C) 1993 Free Software Foundation, Inc. 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.2/sdbout.c gcc-2.5.3/sdbout.c *** gcc-2.5.2/sdbout.c Tue Oct 12 17:06:16 1993 --- gcc-2.5.3/sdbout.c Mon Nov 8 17:56:14 1993 *************** *** 286,289 **** --- 286,297 ---- tree syms; { + #ifdef RMS_QUICK_HACK_1 + tree t; + for (t = syms; t; t = TREE_CHAIN (t)) + if (DECL_NAME (t) && IDENTIFIER_POINTER (DECL_NAME (t)) != 0 + && !strcmp (IDENTIFIER_POINTER (DECL_NAME (t)), "__vtbl_ptr_type")) + sdbout_symbol (t, 0); + #endif + #if 0 /* Nothing need be output for the predefined types. */ /* Get all permanent types that have typedef names, 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.2/stmt.c gcc-2.5.3/stmt.c *** gcc-2.5.2/stmt.c Sun Sep 26 22:51:21 1993 --- gcc-2.5.3/stmt.c Mon Nov 1 07:38:03 1993 *************** *** 3605,3608 **** --- 3605,3622 ---- int was_used = TREE_USED (decl); + /* If this is a CONST_DECL, we don't have to generate any code, but + if DECL_INITIAL is a constant, call expand_expr to force TREE_CST_RTL + to be set while in the obstack containing the constant. If we don't + do this, we can lose if we have functions nested three deep and the middle + function makes a CONST_DECL whose DECL_INITIAL is a STRING_CST while + the innermost function is the first to expand that STRING_CST. */ + if (TREE_CODE (decl) == CONST_DECL) + { + if (DECL_INITIAL (decl) && TREE_CONSTANT (DECL_INITIAL (decl))) + expand_expr (DECL_INITIAL (decl), NULL_RTX, VOIDmode, + EXPAND_INITIALIZER); + return; + } + if (TREE_STATIC (decl)) return; 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.2/tm.texi gcc-2.5.3/tm.texi *** gcc-2.5.2/tm.texi Thu Oct 21 18:25:23 1993 --- gcc-2.5.3/tm.texi Thu Nov 11 08:45:26 1993 *************** *** 2668,2673 **** pass an address to the subroutine. ! This macro has effect in @samp{-fpcc-struct-return} mode, but not in ! @samp{-freg-struct-return} mode. @end table --- 2668,2673 ---- pass an address to the subroutine. ! This macro has effect in @samp{-fpcc-struct-return} mode, but it does ! nothing when you use @samp{-freg-struct-return} mode. @end table *************** *** 5023,5032 **** first variant. ! When this macro is defined, you may include strings of the form ! @samp{@{option0|option1|option2@}} within output templates ! (@pxref{Output Template}) or the operand to @code{asm_fprintf}. GNU CC ! will output either @samp{option0}, @samp{option1} or @samp{option2} if ! the value of @code{ASSEMBLER_DIALECT} is zero, one or two, respectively. ! Any special characters within these strings retain their usual meaning. If you do not define this macro, the characters @samp{@{}, @samp{|} and --- 5023,5033 ---- first variant. ! If this macro is defined, you may use ! @samp{@{option0|option1|option2@dots{}@}} constructs in the output ! templates of patterns (@pxref{Output Template}) or in the first argument ! of @code{asm_fprintf}. This construct outputs @samp{option0}, ! @samp{option1} or @samp{option2}, etc., if the value of ! @code{ASSEMBLER_DIALECT} is zero, one or two, etc. Any special ! characters within these strings retain their usual meaning. If you do not define this macro, the characters @samp{@{}, @samp{|} and *************** *** 5034,5043 **** operands to @code{asm_fprintf}. ! Define the @code{REGISTER_PREFIX}, @code{LOCAL_LABEL_PREFIX}, ! @code{USER_LABEL_PREFIX} and @code{IMMEDIATE_PREFIX} macros above if you ! can express the variations in assemble language syntax with that ! mechanism. Define @code{ASSEMBLER_DIALECT} and use the ! @samp{@{option0|option1@}} syntax if the syntax variant are larger and ! involve such things as different opcodes or operand order. @findex ASM_OUTPUT_REG_PUSH --- 5035,5044 ---- operands to @code{asm_fprintf}. ! Define the macros @code{REGISTER_PREFIX}, @code{LOCAL_LABEL_PREFIX}, ! @code{USER_LABEL_PREFIX} and @code{IMMEDIATE_PREFIX} if you can express ! the variations in assemble language syntax with that mechanism. Define ! @code{ASSEMBLER_DIALECT} and use the @samp{@{option0|option1@}} syntax ! if the syntax variant are larger and involve such things as different ! opcodes or operand order. @findex ASM_OUTPUT_REG_PUSH *************** *** 6005,6008 **** --- 6006,6016 ---- and print no error message. + @findex NO_IMPLICIT_EXTERN_C + @item NO_IMPLICIT_EXTERN_C + Define this macro if the system header files support C++ as well as C. + This macro inhibits the usual method of using system header files in + C++, which is to pretend that the file's contents are enclosed in + @samp{extern "C" @{@dots{}@}}. + @findex HANDLE_PRAGMA @findex #pragma *************** *** 6033,6036 **** --- 6041,6051 ---- G++ have @samp{$} in the identifiers. If this macro is defined, @samp{.} is used instead. + + @findex NO_DOT_IN_LABEL + @item NO_DOT_IN_LABEL + Define this macro if the assembler does not accept the character + @samp{.} in label names. By default constructors and destructors in G++ + have names that use @samp{.}. If this macro is defined, these names + are rewritten to avoid @samp{.}. @findex DEFAULT_MAIN_RETURN 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.2/tree.h gcc-2.5.3/tree.h *** gcc-2.5.2/tree.h Sat Oct 30 11:42:21 1993 --- gcc-2.5.3/tree.h Thu Nov 4 02:24:17 1993 *************** *** 874,877 **** --- 874,880 ---- /* In a FUNCTION_DECL, nonzero means a built in function. */ #define DECL_BUILT_IN(NODE) ((NODE)->decl.bit_field_flag) + /* In a VAR_DECL that's static, + nonzero if the space is in the text section. */ + #define DECL_IN_TEXT_SECTION(NODE) ((NODE)->decl.bit_field_flag) /* Used in VAR_DECLs to indicate that the variable is a vtable. 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.2/unroll.c gcc-2.5.3/unroll.c *** gcc-2.5.2/unroll.c Mon Oct 11 17:01:46 1993 --- gcc-2.5.3/unroll.c Wed Nov 10 19:46:37 1993 *************** *** 601,604 **** --- 601,616 ---- return; } + if (LABEL_NAME (start_label)) + { + /* The jump optimization pass must have combined the original start label + with a named label for a goto. We can't unroll this case because + jumps which go to the named label must be handled differently than + jumps to the loop start, and it is impossible to differentiate them + in this case. */ + if (loop_dump_stream) + fprintf (loop_dump_stream, + "Unrolling failure: loop start label is gone\n"); + return; + } if (unroll_type == UNROLL_NAIVE *************** *** 742,745 **** --- 754,758 ---- map->const_equiv_map_size = maxregnum; global_const_equiv_map = map->const_equiv_map; + global_const_equiv_map_size = maxregnum; init_reg_map (map, maxregnum); *************** *** 1002,1005 **** --- 1015,1019 ---- map->const_equiv_map_size = new_maxregnum; global_const_equiv_map = map->const_equiv_map; + global_const_equiv_map_size = new_maxregnum; /* Search the list of bivs and givs to find ones which need to be remapped 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.2/varasm.c gcc-2.5.3/varasm.c *** gcc-2.5.2/varasm.c Sun Oct 24 03:05:50 1993 --- gcc-2.5.3/varasm.c Thu Nov 4 13:20:32 1993 *************** *** 1104,1107 **** --- 1104,1111 ---- #endif + /* dbxout.c needs to know this. */ + if (in_text_section ()) + DECL_IN_TEXT_SECTION (decl) = 1; + /* Record current section so we can restore it if dbxout.c clobbers it. */ saved_in_section = in_section; *************** *** 1130,1133 **** --- 1134,1139 ---- declarations. */ + /* If the debugging output changed sections, reselect the section + that's supposed to be selected. */ if (in_section != saved_in_section) { 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.2/version.c gcc-2.5.3/version.c *** gcc-2.5.2/version.c Mon Nov 1 01:07:22 1993 --- gcc-2.5.3/version.c Thu Nov 11 08:23:02 1993 *************** *** 1 **** ! char *version_string = "2.5.2"; --- 1 ---- ! char *version_string = "2.5.3";