Annotation of GNUtools/cc/ChangeLog.3, revision 1.1

1.1     ! root        1: Fri Jul 19 18:56:14 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !             2: 
        !             3:        * cse.c (canon_reg): Allow for recursive call returning 0 (if we had
        !             4:        an EXPR_LIST).
        !             5:        * sched.c (init_aliases_analysis): Ignore REG_EQUAL note when its value
        !             6:        is an EXPR_LIST.
        !             7:        * unroll.c (loop_iterations): Likewise.
        !             8: 
        !             9:        * rs6000.md (andsi3): Fix typo in and-with-cc pattern.
        !            10: 
        !            11: Fri Jul 19 11:23:22 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !            12: 
        !            13:        * toplev.c (set_target_switch): For TARGET_OPTIONS, set the
        !            14:        variable to the variable part of the actual option.
        !            15:        * tm-m88k.h, out-m88k.c: Change the use of m88k_short_data.
        !            16: 
        !            17:        * varasm.c (output_constant_def): Merge get_or_assign_label and
        !            18:        delete it.  Ensure that ENCODE_SEGMENT_INFO is evaluated before
        !            19:        SELECT_SECTION.
        !            20: 
        !            21: Thu Jul 18 19:57:45 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !            22: 
        !            23:        * expr.h (MUST_PASS_IN_STACK_BAD_PADDING): Definitions were backwards.
        !            24: 
        !            25: Thu Jul 18 17:52:46 1991  Jim Wilson  (wilson at wookumz.gnu.ai.mit.edu)
        !            26: 
        !            27:        * unroll.c: Fix typos in comments.
        !            28:        (splittable_regs_updates): New static global variable.
        !            29:        Indicates the number of instructions that modify a split biv
        !            30:        remaining during the last iteration of a loop, so that the last one
        !            31:        can be handled specially.
        !            32:        (unroll_loop): Allocate and clear it.
        !            33:        (copy_loop_body): Use it to determine how to rewrite an insn
        !            34:        modifying a split iv.
        !            35:        (find_splittable_regs): When a splittable biv is identified, set it
        !            36:        equal to the number of insn modifying the biv.
        !            37:        (find_splittable_givs): When a splittable giv is identified, set
        !            38:        it to one if this giv is a reg.
        !            39:        
        !            40:        * unroll.c (copy_loop_body): Instead of trying to special case
        !            41:        insns that use start_label, use the label_map to map the start
        !            42:        label to the appropriate label for all insns except those that
        !            43:        must be inverted and redirected.  The former code did not handle
        !            44:        tablejumps that used the start_label correctly.
        !            45: 
        !            46:        * integrate.c (copy_rtx_and_substitute): Don't legitimize an
        !            47:        address inside of an ADDRESS rtx.  This fails, because this need
        !            48:        not be a validate address, but it is always valid in the context
        !            49:        it appears in.
        !            50: 
        !            51: Thu Jul 18 08:13:56 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !            52: 
        !            53:        * toplev.c (set_target_switch): Support TARGET_OPTIONS for command
        !            54:        options with values.
        !            55: 
        !            56:        * varasm.c (output_constant_def): Set flags with
        !            57:        ENCODE_SEGMENT_INFO for strings and constructors.
        !            58:        * tm-mips.h (ENCODE_SEGMENT_INFO): Must be a VAR_DECL.
        !            59: 
        !            60:        * out-m88k.c, tm-m88k.h, m88k.md: Implement a global pool approach
        !            61:        to short addressing.
        !            62: 
        !            63:        * m88k.md (extendsfdf2, truncdfsf2): Use fsub rather than fadd.
        !            64:        This conforms to IEEE 754 in all rounding modes except round to
        !            65:        negative infinity whereas fadd conforms only in that mode.
        !            66: 
        !            67: Thu Jul 18 01:01:37 1991  Eric Youngdale (youngdale at v6550c.nrl.navy.mil)
        !            68: 
        !            69:        * make-cc1.com: Add command line to compile reg-stack.c, and add
        !            70:        reg-stack.obj to the list of files passed to the VMS linker.
        !            71: 
        !            72: Thu Jul 18 00:11:00 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !            73: 
        !            74:        * Makefile.in (enquire.o): Need not depend on gnulib.
        !            75:        (gnulib2): Renamed from gnulib2.portable.
        !            76:        Don't do ranlib.
        !            77:        (gnulib2.portable): Just refers to gnulib2.
        !            78:        (gnulib1.portable): Don't do ranlib.
        !            79: 
        !            80: Wed Jul 17 11:19:09 1991  Michael Meissner  (meissner at geech.gnu.ai.mit.edu)
        !            81: 
        !            82:        * Makefile.in (gcc): Do a -dumpspecs after building gcc so that -B./
        !            83:        will override any installed specs in /usr/local/lib.
        !            84:        (mostlyclean): Delete *.cpp files which are left if you use
        !            85:        -save-temps.
        !            86: 
        !            87: Wed Jul 17 06:08:33 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !            88: 
        !            89:        * combine.c (try_combine): When putting I2 and/or I1 into NEWPAT,
        !            90:        check for a PARALLEL; if so, just put in the relevant SET instead
        !            91:        of making a PARALLEL containing a PARALLEL.
        !            92: 
        !            93: Tue Jul 16 18:58:51 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !            94: 
        !            95:        * combine.c (record_value_for_reg): Show we haven't seen the death
        !            96:        of a register once we have seen it modified.
        !            97: 
        !            98:        * reload1.c (reload): If we decide to put a pseudo which used to have
        !            99:        a MEM equiv onto the stack, set SOMETHING_CHANGED and reprocess all
        !           100:        eliminations and pseudos without scanning the insns.
        !           101: 
        !           102: Tue Jul 16 13:17:14 1991  Michael Meissner  (meissner at wookumz.gnu.ai.mit.edu)
        !           103: 
        !           104:        * cplus-decl.c (sigsegv): Make signal handler void for full
        !           105:        prototyping systems.
        !           106: 
        !           107: Tue Jul 16 12:25:18 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           108: 
        !           109:        * dbxout.c (dbxout_symbol): Ignore types with no names of any kind.
        !           110: 
        !           111: Tue Jul 16 07:12:52 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !           112: 
        !           113:        * stmt.c (pushcase, pushcase_range): Return label in *DUPLICATE,
        !           114:        not integer value.
        !           115: 
        !           116:        * rtlanal.c (reg_referenced_p, reg_overlap_mentioned_p): Allow X to
        !           117:        be (cc0) or (pc).
        !           118: 
        !           119:        * combine.c (subst, case SET): Delete code to remove "unnecessary"
        !           120:        SUBREG; code was incorrect and this is done (corrected below) in
        !           121:        simplify_comparison.
        !           122:        (simplify_comparison): Can only remove SUBREG for equality comparisons.
        !           123: 
        !           124:        * expr.c (expand_expr, case COND_EXPR): If condition has side effects,
        !           125:        ensure we evaluate it before evaluating an arm of the COND_EXPR.
        !           126: 
        !           127: Mon Jul 15 21:59:36 1991  James Van Artsdalen  (james at bigtex.cactus.org)
        !           128: 
        !           129:        * rtl.h (FUNCTION_FLAGS_RETURNS_STRUCT): Fix typo in value.
        !           130: 
        !           131: Mon Jul 15 22:18:40 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           132: 
        !           133:        * cccp.c (main): Ignore CPATH if -nostdinc.
        !           134: 
        !           135: Mon Jul 15 22:00:02 1991  Michael Meissner  (meissner at churchy.gnu.ai.mit.edu)
        !           136: 
        !           137:        * reload.c (find_reloads): Fix typo (reg_sets_p instead of
        !           138:        reg_set_p).
        !           139: 
        !           140: Mon Jul 15 21:49:09 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           141: 
        !           142:        * c-parse.y (stmt): Emit the nop for the start of a loop
        !           143:        only after the line number.
        !           144: 
        !           145: Mon Jul 15 16:50:51 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edn)
        !           146: 
        !           147:        * rtlanal.c (reg_set_p): If we are passed an insn, only pass the
        !           148:        pattern to note_stores.
        !           149: 
        !           150:        * local-alloc.c (validate_equiv_mem): A CALL_INSN invalidates all
        !           151:        memory.
        !           152: 
        !           153: Sun Jul 14 06:34:47 1991  Richard Kenner  (kenner at vlsi1.ultra.hyu.edu)
        !           154: 
        !           155:        * cse.c (last_jump_equiv_class): New variable.
        !           156:        (record_jump_equiv): Set it.
        !           157:        (cse_insn): Clear it.
        !           158:        (cse_around_loop): Invalidate all entries in last_jump_equiv_class.
        !           159:        (cse_set_around_loop): Ensure our replacement is cheaper.
        !           160: 
        !           161: Sat Jul 13 17:15:30 1991  James Van Artsdalen  (james at bigtex.cactus.org)
        !           162: 
        !           163:        * cplus-decl.c (finish_enum): Fix typo in arguments for finish_decl.
        !           164:        * cplus-class.c (finish_struct): Likewise.
        !           165: 
        !           166: Fri Jul 12 16:45:02 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           167: 
        !           168:        * dbxout.c (dbxout_symbol): Don't crash when DECL_NAME is 0.
        !           169: 
        !           170: Fri Jul 12 15:38:24 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !           171: 
        !           172:        * expr.c (do_tablejump): Don't write BARRIER between jump and table
        !           173:        if they must remain adjacent.
        !           174: 
        !           175:        * varasm.c (make_decl_rtl): Set REG_USERVAR_P when register name
        !           176:        is specified.
        !           177:        * integrate.c (subst_constants): Don't substitute for a user
        !           178:        variable assigned to a hard register.
        !           179: 
        !           180:        * reload.c (find_reloads): Add new vars no_{input,output}_reloads to
        !           181:        indicate when the corresponding reload type is not permitted; reject
        !           182:        an alternative that would try such a reload.
        !           183:        * rs6000.md (decrement-and-branch): No longer need kludges to
        !           184:        avoid output reloads.
        !           185:        Use '0' instead of 'c' for input 1 in alternative 0.
        !           186:        Allow operand 0 to be in non-general register.
        !           187:        
        !           188: Fri Jul 12 10:54:39 1991  James Van Artsdalen  (james at bigtex.cactus.org)
        !           189: 
        !           190:        * c-decl.c (finish_struct, finish_enum): Fix typo in arguments for
        !           191:        finish_decl.
        !           192: 
        !           193:        * i386.md (bit test patterns): Delete bit tests using implicitly
        !           194:        masked bit number operand: the hardware doesn't work like that.
        !           195: 
        !           196: Fri Jul 12 09:50:43 1991  Michael Meissner  (meissner at spiff.gnu.ai.mit.edu)
        !           197: 
        !           198:        * tm-hp9k2bsd.h (toplevel): Remove RCS HISTORY log.
        !           199: 
        !           200: Thu Jul 11 00:46:48 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           201: 
        !           202:        * c-parse.y (yylex): Do try signed int for ANSI nondecimal constants.
        !           203: 
        !           204:        * c-typeck.c (record_format_info): The first time, use xmalloc.
        !           205: 
        !           206: Wed Jul 10 18:54:26 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !           207: 
        !           208:        * jump.c (jump_optimize): Fix typo in "if (...) x = a; else x = b;"
        !           209:        case: had temp3 instead of temp4.
        !           210: 
        !           211:        * cplus-lex.c (lineno, end_of_file): Move definition to before
        !           212:        first use.
        !           213:        (reinit_parse_for_block): Variable `c' must be int to ensure EOF fits.
        !           214:        * cplus-input.c (getch): Remove extraneous declaration of end_of_file.
        !           215: 
        !           216:        * reload1.c: Include insn-flags.h.
        !           217:        (emit_reload_insns): Handle the case where we reload an entire
        !           218:        address; use "reload_load_address" pattern, if it exists.
        !           219:        Remove explicit SImode reference; should have been Pmode, but
        !           220:        IN can be used instead of rebuilding it.
        !           221:        * Makefile.in (reload1.o): Includes insn-flags.h.
        !           222: 
        !           223:        * reload.c (find_reloads): If replacing an output REG with a MEM,
        !           224:        write a CLOBBER for the REG after the insn.
        !           225:        * reload1.c (eliminate_regs): Add new arg INSN; if nonzero, add a
        !           226:        CLOBBER when replacing a REG in SET_DEST with a MEM.
        !           227:        (reload, eliminate_regs_in_insn): Add new arg to eliminate_regs.
        !           228:        * dwarfout.c (output_bound_representation, location_attribute):
        !           229:        Likewise.
        !           230:        
        !           231:        * reload1.c (reload): If a reg_equiv_memory_loc isn't strictly valid
        !           232:        and isn't sufficiently simple, use a stack slot instead.
        !           233:        (alter_regs): Don't delete reg_equiv_init insns here.
        !           234:        (reload_as_needed): Do it here.
        !           235: 
        !           236:        * stor-layout.c (get_best_mode): Correct test for alignment.
        !           237: 
        !           238:        * loop.c (move_movables): Don't get confused by NOTE insns in gnulib
        !           239:        call sequence.
        !           240: 
        !           241: Wed Jul 10 18:40:32 1991  Matthew Self  (mself at geech.gnu.ai.mit.edu)
        !           242: 
        !           243:        * cccp.c (enum node_type):  Added T_WARNING.
        !           244: 
        !           245:        * cccp.c (directive_table):  Added #warning.
        !           246: 
        !           247:        * cccp.c (do_warning):  Print warning message and continue.
        !           248: 
        !           249: Wed Jul 10 18:38:28 1991  Matthew Self  (mself at geech.gnu.ai.mit.edu)
        !           250: 
        !           251:        * c-parse.y, objc-parse.y (attrib):  Pass "format" attribute
        !           252:        through.  Takes one identifier and two constants as args.
        !           253:        identifier must be either printf or scanf.
        !           254: 
        !           255:        * c-common.c (decl_attributes):  Process "format" attributes.
        !           256:        Call new routine record_format_info().
        !           257: 
        !           258:        * c-typeck.c (struct function_info):  Changed function_ident field;
        !           259:        store identifier node rather than char * to speed lookup.
        !           260:        Renamed arg_num field to format_num.  Replaced is_varargs field
        !           261:        with new first_arg_num field.
        !           262: 
        !           263:        * c-typeck.c (check_format):  Modified to use new arg_num and
        !           264:        first_arg_num fields.
        !           265: 
        !           266:        * c-typeck.c (record_format_info):  New routine.  Replaces static
        !           267:        table of functions to check.
        !           268: 
        !           269:        * cplus-typeck.c (record_format_info):  New stub routine so c++
        !           270:        will link.  Someone should implement format checking for c++.
        !           271: 
        !           272:        * c-typeck.c (init_format_info_table):  New routine to add
        !           273:        entries for ANSI functions to table.
        !           274: 
        !           275:        * c-decl.c (init_decl_processing):  Call init_format_info_table().
        !           276: 
        !           277:        * c-typeck.c (build_function_call):  Modified to use dynamic table
        !           278:        rather than static one.  Compare identifier nodes rather than
        !           279:        using strcmp().
        !           280: 
        !           281:        * gcc.texinfo ():  Document "format" attribute.
        !           282: 
        !           283:        * c-typeck.c (check_format):  Call warning() directly rather than
        !           284:        returning the warning string.  This way we can give multiple warnings
        !           285:        by continuing.  Several changes to make continuing safe.
        !           286: 
        !           287:        * c-typeck.c (build_function_call):  Incorporated changed return
        !           288:        value of check_format().
        !           289: 
        !           290:        * c-typeck.c (check_format):  Check for NULL format string.
        !           291: 
        !           292: Wed Jul 10 16:40:54 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !           293: 
        !           294:        * sdbout.c (sdbout_tags): Delete this and use the TYPE_DECL
        !           295:        representation of tagged types.  Types are now output in their
        !           296:        original lexical order.
        !           297:        (sdbout_symbol): Return early (only using sdbout_one_type) when a
        !           298:        tagged type is encountered.
        !           299:        (sdbout_block, sdbout_symbol): Don't use sdbout_tags.
        !           300:        * toplev.c (compile_file): Don't use sdbout_tags.
        !           301:        * varasm.c (assemble_function): Don't use sdbout_tags.
        !           302: 
        !           303: Wed Jul 10 15:13:33 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           304: 
        !           305:        * dbxout.c (dbxout_tags): Function deleted.  Calls deleted too.
        !           306:        (dbxout_tagged_type): New function.
        !           307:        (dbxout_symbol): Call that.
        !           308:        * toplev.c (compile_file): Call to dbxout_tags deleted.
        !           309: 
        !           310:        * c-parse.y (yylex): Simplify choice of type for integers.
        !           311:        When traditional, all integers are signed unless explicitly unsigned.
        !           312: 
        !           313: Wed Jul 10 13:35:27 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !           314: 
        !           315:        * configure (m88k-svr4): Needs make-m88ksvr4.
        !           316:        * make-m88ksvr4: New file.
        !           317: 
        !           318: Wed Jul 10 13:18:03 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           319: 
        !           320:        * c-decl.c (duplicate_decls): Warn if `inline' is not consistent.
        !           321: 
        !           322:        * cccp.c (hack_vms_include_specification): Fix typos.
        !           323: 
        !           324: Tue Jul  9 22:21:22 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !           325: 
        !           326:        * loop.c (find_and_verify_loops): RETURN insns aren't listed in
        !           327:        loop_number_exit_labels, so don't try to remove JUMP_LABEL of a
        !           328:        RETURN from that list.
        !           329: 
        !           330:        * rtlanal.c (reg_referenced_between_p): New function.
        !           331:        * jump.c (jump_optimize): Use it instead of reg_used_between_p when
        !           332:        checking for "if (...) x = a; else x = b;" case.
        !           333: 
        !           334: Tue Jul  9 13:03:53 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           335: 
        !           336:        * expr.c (move_block_to_reg): Don't force_const_mem on non-constant.
        !           337: 
        !           338: Tue Jul  9 09:13:32 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !           339: 
        !           340:        * c-decl.c (finish_struct): Record tagged types as a TYPE_DECL
        !           341:        with a NULL DECL_NAME.
        !           342:        (finish_enum): Ditto.
        !           343:        * cplus-decl.c (finish_enum): Ditto.
        !           344:        * cplus-class.c (finish_struct): Ditto.
        !           345: 
        !           346:        * dbxout.c (dbxout_symbol): Ignore TYPE_DECLs for tagged types.
        !           347:        * cplus-dbxout.c (dbxout_symbol): Ditto.
        !           348:        * sdbout.c (sdbout_symbol): Ditto.
        !           349: 
        !           350:        * toplev.c (compile_file): DECL_NAME may be null.
        !           351: 
        !           352:        * dwarfout.c (output_symbol): Use output_dies_for_tagged_type for
        !           353:        TYPE_DECLs of tagged types.
        !           354:        (dwarfout_output_tagged_type): Deleted.
        !           355:        (output_dies_for_tagged_type): Mark TREE_ASM_WRITTEN early.
        !           356: 
        !           357: Mon Jul  8 19:36:44 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !           358: 
        !           359:        * jump.c (jump_optimize): Check for extra labels when detecting
        !           360:        "if (...) x = a; else x = b;".  Include the insn for "x = a;" when
        !           361:        testing for data conflict.
        !           362: 
        !           363: Mon Jul  8 19:34:14 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !           364: 
        !           365:        * integrate.c (copy_for_inline, case MEM): Must copy a MEM even if
        !           366:        it has a constant address if that address involves a LABEL_REF.
        !           367: 
        !           368:        * rtlanal.c (reg_set_p): Only check for REG_INC notes and a CALL_INSN
        !           369:        if we are passed an insn.
        !           370:        * local-alloc.c (optimize_reg_copy): Remove tests now done in
        !           371:        reg_set_p.
        !           372: 
        !           373: Mon Jul  8 16:38:49 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           374: 
        !           375:        * c-parse.y (yylex): Pedantic warning here for `asm'.
        !           376:        No warning for `__asm__'.
        !           377:        (maybe_type_qual, maybeasm, extdef): No warning here.
        !           378: 
        !           379:        * objc-actions.c: Rename OBJC_SELS_R_INTS to OBJC_INT_SELECTORS.
        !           380:        Rename OBJC_UNIQUE_SELS to OBJ_NONUNIQUE_SELECTORS, reversing sense.
        !           381:        Eliminate OBJC_SELS_R_STRUCT_PTRS.
        !           382: 
        !           383: Mon Jul  8 06:37:00 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !           384: 
        !           385:        * rtlanal.c (reg_{used,set}_between_p): Allow FROM_INSN == TO_INSN;
        !           386:        return 0 in that case.
        !           387: 
        !           388:        * jump.c (mark_jump_label): Fix typo in use of GET_RTX_LENGTH.
        !           389: 
        !           390:        * reload.c (reload_strict_low): Change comment to say that this is
        !           391:        always zero; we don't use it any more.
        !           392: 
        !           393: Sun Jul  7 22:14:13 1991  Michael Meissner  ([email protected])
        !           394: 
        !           395:        * tm-mips.h (FRAME_POINTER_REQUIRED): Fix typo that required a frame
        !           396:        if alloca was not called, instead of the reverse.
        !           397: 
        !           398: Sun Jul  7 17:14:17 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           399: 
        !           400:        * cccp.c (struct file_buf): New field system_header_p.
        !           401:        Everything that pushes on instack now initializes this field.
        !           402:        (finclude): New arg to set that field.  Callers changed.
        !           403:        (do_include): Pass that arg as 1 for <...>, else 0.
        !           404: 
        !           405:        * cccp.c (do_include): Warn for first use of #import
        !           406:        except in system header files.
        !           407:        (handle_directive): Support #import if compiling for Next.
        !           408: 
        !           409:        * cccp.c (do_pragma): For #pragma once, warn it is obsolete.
        !           410: 
        !           411: Sun Jul  7 14:29:04 1991  James Van Artsdalen  (james at bigtex.cactus.org)
        !           412: 
        !           413:        * tm-att386.h (NO_DOLLAR_IN_LABEL): Define this here,
        !           414:        * tm-i386sco.h (NO_DOLLAR_IN_LABEL):    not here.
        !           415: 
        !           416: Sun Jul  7 06:20:03 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !           417: 
        !           418:        * rtlanal.c (reg_set_p): Return 1 if REG is found in a REG_INC
        !           419:        note or if INSN is a CALL_INSN and REG is a hard reg.
        !           420:        (reg_set_last): Only return a register or constant; if returning a
        !           421:        register, ensure it isn't modified between the SET we found and INSN.
        !           422: 
        !           423:        * jump.c (jump_optimize): If SMALL_REGISTER_CLASSES, don't make a
        !           424:        store-flag insn if any register involved is a hard reg.
        !           425: 
        !           426: Sat Jul  6 14:51:15 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           427: 
        !           428:        * expr.c (expand_assignment): Don't abort for volatile structure field
        !           429:        even if the structure is in a register.
        !           430:        NOTE: This leaves the problem of implementing whatever meaning
        !           431:        a volatile field should actually have.
        !           432: 
        !           433:        * fold-const.c (div_and_round_double): Make lnum and lden unsigned.
        !           434:        Use the small-denominator algorithm only for denom < 2**24.
        !           435:        Fix backward conditionals in ?: operators in general case.
        !           436:        Change i + j to i - 1 + j when indexing num.
        !           437: 
        !           438: Fri Jul  5 21:36:57 1991  Ken Raeburn  (raeburn at watch.com)
        !           439: 
        !           440:        * genpeep.c (match_rtx, case MATCH_OP_DUP): Output semicolon after
        !           441:        "goto" statement.
        !           442: 
        !           443: Fri Jul  5 09:45:56 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !           444: 
        !           445:        * rs6000.md (andsi3): Bias alternatives so we always prefer constants.
        !           446:        (define_splits of DImode, SFmode, and DFmode): Don't split
        !           447:        unless after reload.
        !           448:        (ashldi3, lshrdi3): Fix bugs in instruction order; use & in
        !           449:        output constraint so can't conflict with operand 2; use '0'
        !           450:        constraint to allow operands 0 and 1 to be the same register.
        !           451: 
        !           452:        * regclass.c (reg_n_sets): Move definition before use.
        !           453: 
        !           454:        * reorg.c (fill_simple_delay_slots): Candidate for delay slot cannot
        !           455:        set anything set between it and the delay insn.
        !           456: 
        !           457:        * jump.c (jump_optimize): In "if (...) x = a; else x = b;", correctly
        !           458:        specify range to check if X is used or set.
        !           459:        Use rtx_equal_p to check for matching X.
        !           460: 
        !           461: Thu Jul  4 15:55:45 1991  Tom Wood  (wood at geech.gnu.ai.mit.edu)
        !           462: 
        !           463:        * cccp.c (default_include): Add /usr/mach/include for MACH systems.
        !           464: 
        !           465:        * configure (m88k-luna): Needs make-m88kluna.
        !           466:        * make-m88kluna: New file.
        !           467: 
        !           468:        * dwarf.h: New file derived from the UNIX International
        !           469:        Programming Languages Special Interest Group DWARF specification.
        !           470:        * dwarfout.c (includes): Include "dwarf.h".
        !           471:        (subscript_data_attribute): Use FMT_CODE to encode array subscripts.
        !           472:        (languagribute): LANG type no longer provided by dwarf.h.
        !           473:        (output_source_file_die): Determine proper language attribute.
        !           474: 
        !           475: Thu Jul  4 12:14:16 1991  James Van Artsdalen  (james at bigtex.cactus.org)
        !           476: 
        !           477:        * cplus-xref.c: define rindex if USG
        !           478: 
        !           479: Thu Jul  4 12:36:55 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           480: 
        !           481:        * gcc.c (process_command): Correctly split -L from its arg.
        !           482:        * SWITCHES_NEED_SPACES: New host machine option.
        !           483:        This really ought to be defined now for certain hosts,
        !           484:        but I don't know which ones they are.
        !           485: 
        !           486: Wed Jul  3 23:31:00 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           487: 
        !           488:        * tm-m68k.h (ASM_OUTPUT_FLOAT): Check CROSS_COMPILE (there was a typo).
        !           489: 
        !           490: Wed Jul  3 22:05:55 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !           491: 
        !           492:        * cse.c (simplify_binary_operation, case MINUS): Fix typo in op number.
        !           493: 
        !           494:        * cse.c (cse_basic_block): Correctly handle the case where TO
        !           495:        was a label with zero uses at the end of the function.
        !           496: 
        !           497:        * combine.c (significant_valid): New variable.
        !           498:        (combine_instructions): Turn significant_valid off until after
        !           499:        we finished computing reg_significant.
        !           500:        (significant_bits): Ignore reg_significant when significant_valid
        !           501:        is zero.
        !           502: 
        !           503:        * rtlanal.c (reg_set_last): Go past CALL_INSN as long as we are not
        !           504:        looking for a hard register.
        !           505: 
        !           506: Wed Jul  3 21:07:18 1991  Jim Wilson  (wilson at wookumz.gnu.ai.mit.edu)
        !           507: 
        !           508:        * sched.c (schedule_block): When computing what registers are dead
        !           509:        at the end of the current block, correctly handle REG_DEAD notes
        !           510:        that refer to multi-word hard registers.
        !           511: 
        !           512:        * loop.c (mark_loop_jump): When invalidating loops with multiple
        !           513:        entries, must invalidate every nested loop containing the target
        !           514:        of a loop entry jump, except for those that also contain the jump
        !           515:        itself.
        !           516: 
        !           517:        * loop.c (record_giv): When computing whether a giv is
        !           518:        replaceable, check whether the biv update has a valid luid, and
        !           519:        mark it as not replaceable if not.
        !           520: 
        !           521:        * combine.c (gen_rtx_combine): Call rtx_alloc instead of gen_rtx,
        !           522:        because it is much faster, especially on some RISC machines.
        !           523: 
        !           524:        * fixincludes: Add optional argument which indicates where to put
        !           525:        the fixed include files.  Echo the directory name where the
        !           526:        include files will be put.
        !           527: 
        !           528:        * cccp.c (struct default_include): Don't examine
        !           529:        STANDARD_INCLUDE_DIR or /usr/local/include when
        !           530:        NO_STANDARD_INCLUDE_DIR is defined.  This is useful when building
        !           531:        cross compilers. 
        !           532:        (main): Only send SIGPIPE signal if the SIGPIPE signal exists on
        !           533:        the host.
        !           534:        (rescan, handle_directive, skip_if_group, validate_else,
        !           535:        skip_to_end_of_comment, macarg1, discard_comments): Accept '//' as
        !           536:        a comment in Objective-C as well as C++.  The Objective C language
        !           537:        specifies that '//' starts a comment.
        !           538: 
        !           539:        * .gdbinit (ptn): Define new macro to print out the name of a type
        !           540:        node.
        !           541: 
        !           542:        * stab.def: Correct errors in table for values of DSLINE and
        !           543:        BSLINE.  Document the conflict between BROWS and BSLINE.  Document
        !           544:        the value of the BROWS field.
        !           545: 
        !           546: Tue Jul  2 23:26:20 1991  Michael Meissner  (meissner at pogo.gnu.ai.mit.edu)
        !           547: 
        !           548:        * mips-tfile.c (toplevel): Add a comment explaining the MIPS ECOFF
        !           549:        file format at the start of the file.
        !           550: 
        !           551: Tue Jul  2 14:00:39 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           552: 
        !           553:        * c-typeck.c (build_array_ref): Report error here if the "array"
        !           554:        is not an array or pointer.  Don't leave this for the PLUS_EXPR.
        !           555: 
        !           556:        * cccp.c: Inlcude containing file names/lines in error messages.
        !           557:        (print_containing_files): New function.
        !           558:        (error*, warning): Call it.
        !           559:        (finclude): Increment input_file_stack_tick when file changes.
        !           560: 
        !           561:        * cccp.c: Include descrip.h.
        !           562: 
        !           563: Tue Jul  2 07:44:19 1991  Tom Wood  (wood at geech.gnu.ai.mit.edu)
        !           564: 
        !           565:        * tm-m88k.h (ASM_OUTPUT_SOURCE_LINE): Define only for SDB.
        !           566:        * tm-m88kdgux.h (AS_BUG_*): Support these for now.
        !           567: 
        !           568:        * c-decl.c (finish_struct): Invoke dwarfout_output_tagged_type
        !           569:        only when producing DWARF debugging info.
        !           570:        * cplus-class.c (finish_struct): Ditto.
        !           571: 
        !           572: Mon Jul  1 23:03:34 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           573: 
        !           574:        * toplev.c (compile_file): Close stack_reg_dump_file iff STACK_REGS.
        !           575: 
        !           576: Mon Jul  1 15:17:57 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !           577: 
        !           578:        * combine.c (set_significant): Ignore CLOBBERs.
        !           579:        (simplify_and_const_int, case SUBREG): Only ignore paradoxical SUBREGs
        !           580:        if BYTE_LOADS_ZERO_EXTEND.
        !           581:        (record_value_for_reg): Fix typo; had I for REGNO.
        !           582: 
        !           583: Mon Jul  1 08:28:09 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !           584: 
        !           585:        * final.c (output_source_line): Output DWARF line numbers.
        !           586: 
        !           587:        * dwarfout.c (dwarfout_output_tagged_type): New function.
        !           588:        * c-decl.c (finish_struct): Call it.
        !           589:        * cplus-class.c (finish_struct): Call it.
        !           590: 
        !           591:        * dwarfout.c (includes): Need insn-config.h and reload.h.
        !           592:        (location_attribute): Use eliminate_regs for correct expression.
        !           593:        (output_bound_representation): Use SAVE_EXPR_RTL to get rtl and
        !           594:        then use eliminate_regs.
        !           595: 
        !           596:        * reload1.c (reload): When finished, indicate reg_equiv_constant
        !           597:        and reg_equiv_memory_loc are no longer valid.
        !           598:        (eliminate_regs): Don't attempt use of reg_equiv_constant or
        !           599:        reg_equiv_memory_loc if they aren't valid.  No longer static.
        !           600:        * reload.h: Declare eliminate_regs.
        !           601: 
        !           602:        * toplev.c (compile_file): Only call dwarfout_file_scope_symbol
        !           603:        for VAR_DECLs. 
        !           604: 
        !           605: Sun Jun 30 15:49:39 1991  Ken Raeburn  (raeburn at watch.com)
        !           606: 
        !           607:        * expr.c (expand_builtin, case BUILT_IN_MEMCPY): If alignment test
        !           608:        fails, and function was really BUILT_IN_STRCPY, zero out length
        !           609:        parameter before expanding call.
        !           610: 
        !           611: Sun Jun 30 18:27:14 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu)
        !           612: 
        !           613:        * jump.c (jump_optimize): In "if (...) x = a; else x = b;", don't
        !           614:        move the "x = b;" if the test modifies X or if X is a hard register
        !           615:        and SMALL_REGISTER_CLASSES is defined.
        !           616:        Turn "if (...) x = 1; else {...} if (x) ..." code on when we have cc0.
        !           617: 
        !           618: Sun Jun 30 13:49:03 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           619: 
        !           620:        * gnulib2.c (__builtin_saveregs):
        !           621:        For i860, make data structure fit in with va-i860.h.
        !           622: 
        !           623:        * tree.c (gcc_obstack_init):
        !           624:        Support OBSTACK_CHUNK_ALLOC and OBSTACK_CHUNK_FREE.
        !           625: 
        !           626:        * calls.c (prepare_call_address): 3rd arg now address of chain var.
        !           627:        (expand_call): Call changed.
        !           628:        * expr.c (emit_library_call): Call changed.
        !           629: 
        !           630:        * function.c (fix_lexical_addr): In recursive call, pass slot address.
        !           631: 
        !           632:        * Makefile.in (cse.o): Added deps.
        !           633: 
        !           634:        * Makefile.in (GNULIB2_CFLAGS): Use -O2.
        !           635: 
        !           636:        * gnulib1.c, gnulib2.c (abort): Undefine only if defined.
        !           637: 
        !           638:        * genattr.c (main): Fix typo in comment end.
        !           639: 
        !           640: Sat Jun 29 21:57:28 1991  Torbjorn Granlund  (tege at zevs.sics.se)
        !           641: 
        !           642:        * longlong.h (__sparc8__ umul_ppmm): Insert 3 nop:s for wr delay.
        !           643:        * longlong.h (___IBMR2__): Define umul_ppmm, add_ssaaaa, sub_ddmmss..
        !           644:        * longlong.h (__sparc__): Don't call .umul; expand asm instead.
        !           645:          Don't define __umulsidi3 (i.e. use default definition).
        !           646: 
        !           647: Sat Jun 29 06:25:19 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           648: 
        !           649:        * tm-vax.h (CPP_SPEC): New macro.
        !           650:        (LIB_SPEC): Handle -mg.
        !           651: 
        !           652:        * cccp.c (install_builtins): Fix backward test of objc.
        !           653: 
        !           654:        * fold-const.c (size_int): No need to test sign of NUMBER.
        !           655: 
        !           656:        * gcc.c (process_command): Split -L from its arg.
        !           657: 
        !           658:        * gcc.c (S_ISREG): Define if not defined.
        !           659:        (delete_temp_files): Use it.
        !           660: 
        !           661:        * limits.h (UCHAR_MAX, CHAR_MAX, USHRT_MAX): Delete `U'.
        !           662:        (LONG_MAX, ULONG_MAX): Add `L'.
        !           663: 
        !           664: Fri Jun 28 22:22:58 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !           665: 
        !           666:        * Makefile (realclean): Delete stage1, stage2, stage3.
        !           667: 
        !           668:        * gcc.c (fatal) [HAVE_VFPRINTF]: Do print program name.
        !           669: 
        !           670: Fri Jun 28 15:34:08 1991  Jim Wilson  (wilson at wookumz.gnu.ai.mit.edu)
        !           671: 
        !           672:        * out-sparc.c (output_block_move): Correctly handle the case where
        !           673:        the size is not a CONST_INT, and has a value of 0.
        !           674: 
        !           675:        * flags.h (flag_no_inline): Modify comment to match the one in
        !           676:        toplev.c.
        !           677: 
        !           678:        * integrate.c (copy_rtx_and_substitute): When creating new rtx,
        !           679:        make sure all of the new bitfields are copied, e.g.
        !           680:        REG_LOOP_TEST_P, LABEL_OUTPUT_LOOP_P, etc.
        !           681: 
        !           682:        * loop.c (loop_optimize): Call reg_scan after
        !           683:        find_and_verify_loops, because it may change register lifetimes.
        !           684:        (find_and_verify_loops): After moving a block of code outside the
        !           685:        loop, must readjust the loop_number_exit_label and
        !           686:        LABEL_OUTSIDE_LOOP_P data of the modified jump and the moved jump.
        !           687:        toplev.c (rest_of_compilation): Delete reg_scan call before
        !           688:        loop_optimize.
        !           689: 
        !           690: Fri Jun 28 13:16:37 1991  Michael Meissner  (meissner at osf.org)
        !           691: 
        !           692:        * tm-mips.h (toplevel): Add target_flags to externals declared.
        !           693:        (toplevel): Add dslots_number_nops, mips_load_reg{,2},
        !           694:        mips_fill_delay_slot external declarations for delay slot reorg.
        !           695:        (CC1PLUS_SPEC): By default, pass -fno-gnu-binutils to cc1plus.
        !           696:        (TARGET_FLAGS): Add -mwc8, -mwc16, -mwc32 to set size of wchar_t,
        !           697:        though the switches are not used right now.
        !           698:        (TARGET_FLAGS): Add -msoft-float code from [email protected] to compile
        !           699:        on systems w/o floating point.
        !           700:        (TARGET_FLAGS): -mdebugf suppresses filling load delay slots.
        !           701:        (HARD_REGNO_OK): Relax constraints, allow anything in GP
        !           702:        registers, anything in even FP registers, int's only in multiply
        !           703:        and divide registers, int/CC in the FPSW register.
        !           704:        (FRAME_POINTER_REQUIRED): Require frame if alloca is called for
        !           705:        now.
        !           706:        (REG_CLASS_FROM_LETTER): Index from an array (mips_char_to_class)
        !           707:        instead of having lots of ?:'s.  Also, allow 'd' to signify GP
        !           708:        registers.
        !           709:        (ENCODE_SEGMENT_INFO): Only record things being in small data/bss
        !           710:        if -mgpOPT (-O sets by default), -O, and -G xx where xx > 0.
        !           711:        (FINAL_PRESCAN_INSN): Rework to automatically not fill the
        !           712:        previous instruction's load delay slots with nop's if it is safe.
        !           713:        (ASM_OUTPUT_LABEL): If compiling collect, don't use assemble_name.
        !           714:        (ASM_GLOBALIZE_LABEL): If compiling collect, don't use
        !           715:        assemble_name.
        !           716:        (ASM_OUTPUT_LABELREF_AS_INT): Define this for collect.
        !           717:        (ASM_OUTPUT_INT): If collect, don't use output_addr_const.
        !           718: 
        !           719:        * mips.md (all floating point): If -msoft-float, don't allow any
        !           720:        floating point builtin operations.
        !           721:        (all patterns): Use 'd' constraint to limit things to GP
        !           722:        registers, rather than 'r'.  This allows unions of
        !           723:        float/int/double to occupy any registers.
        !           724:        (*extend*): Call mips_move_1word to handle loads, which in turn
        !           725:        sees if we can omit the load nop.
        !           726:        (fix_trunc*): Redo, since register allocator can handle moving to
        !           727:        the appropriate register set.
        !           728:        (movdf_xfer*): Use explicit return's instead of falling through
        !           729:        and having the appropriate value in a register from the previous
        !           730:        call.
        !           731:        (movsf_xfer*): New patterns to accomidate unions of floats and
        !           732:        int's.
        !           733:        (movsi_unaligned): New define_expand to call either movsi_ulw or
        !           734:        movsi_usw.  Also, if not a memory operation, use movsi.
        !           735:        (movsi_ulw): Set up to omit load delay nop if we can.
        !           736:        (movsi_usw): Use memory_operand instead of simple_memory_operand.
        !           737:        Also, allow storing 0 to an unaligned location.
        !           738:        (various move patterns): mips_move_1word now takes a third
        !           739:        argument to specify whether a load should sign or zero extend.
        !           740:        (call_value): Use register_operand on return value.
        !           741:        (probe): Turn into define_expand, and set a register to the
        !           742:        contents of memory pointed to by the stack pointer with volatil
        !           743:        set.
        !           744: 
        !           745:        * out-mips.c (toplevel): Add new global variables:
        !           746:        dslots_number_nops, mips_load_reg{,2}, mips_regno_to_class,
        !           747:        mips_char_to_class.
        !           748:        (simple_memory_operand): If not optimizing, no global memory
        !           749:        reference is assumed to be in the GP area.
        !           750:        (mips_fill_delay_slot): New function to tell FINAL_PRESCAN_INSN
        !           751:        the current insn is a load and may need a nop.
        !           752:        (mips_move_1word): Take a third argument to say whether load byte
        !           753:        and load half-word sign extend or zero extend.  Change all
        !           754:        callers.  If this is a load, call mips_fill_delay_slots to
        !           755:        schedule the nops.  Change all return's to setting a variable, and
        !           756:        falling through to the end.
        !           757:        (mips_move_2words):  If this is a load, call mips_fill_delay_slots
        !           758:        to schedule the nops.  Change all return's to setting a variable,
        !           759:        and falling through to the end.
        !           760:        (function_arg): if -msoft-float, floating point is passed in GP
        !           761:        registers.
        !           762:        (override_options): Initialize mips_char_to_class.
        !           763:        (print_operand): %( and %) no longer do .set nomacro.
        !           764:        (print_operand): %# prints #nop if gas or -mstats.
        !           765:        (print_operand): Check for too many %), %], and %>'s.
        !           766:        (compute_frame_size): Allocate space in stack to hold FP, just in
        !           767:        case we later need a FP and previously thought we could eliminate
        !           768:        it.
        !           769:        (save_restore): Take a string to indicate the 2word load/store to
        !           770:        use, but don't use it at present.  Change all callers.  Home
        !           771:        varargs registers with sd if we can.
        !           772:        (function_epilogue): Deal with one or more outstanding nop's from
        !           773:        FINAL_PRESCAN_INSN.
        !           774:        (function_epilogue): Revamp -mstats output format.
        !           775:        (function_epilogue): Zero new global variables.
        !           776: 
        !           777:        * make-decrose (toplevel): Sort make variables.
        !           778:        (CLIB): Add -lld library.
        !           779:        (LANGUAGES): Add build of collect-osf and g++.
        !           780:        (ULTRIX_DIR): Change internal work directory location.
        !           781:        (cplus-lex.o): Don't optimize to avoid problem with 1.39 compiler.
        !           782:        (collect-osf): Add rules to build OSF/rose version of collect.
        !           783: 
        !           784:        * make-mips (LANGUAGES): Add build of g++.
        !           785: 
        !           786:        * tm-decrose.h (SIZE_TYPE): Specify to be long unsigned int.
        !           787:        (PTRDIFF_TYPE): Specify to be long int.
        !           788:        (WCHAR_TYPE): Specify to be long unsigned int.
        !           789: 
        !           790:        * sdbout.c (plain_type_1): Add support for unknown tags if
        !           791:        SDB_ALLOW_UNKNOWN_REFERENCES is defined.  The MIPS ECOFF support
        !           792:        needs this, but standard COFF typically doesn't allow unknown
        !           793:        references.
        !           794: 
        !           795:        * gcc.texinfo (Debugging Info): Document
        !           796:        SDB_ALLOW_UNKNOWN_REFERENCES and SDB_ALLOW_FORWARD_REFERENCES.
        !           797: 
        !           798:        * collect-osf.c (whole file): New file to provide collect support
        !           799:        on OSF/rose.
        !           800: 
        !           801: Fri Jun 28 09:20:18 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !           802: 
        !           803:        * configure (m88k-luna): New target.
        !           804:        * tm-m88kluna.h: New file for the Omron Luna/88k.
        !           805:        * xm-m88k.h: Don't use USG for the luna88k.
        !           806: 
        !           807:        * tm-m88kdgux.h: DG/UX implements coff and elf.  Currently elf is
        !           808:        a strange variant of coff that's non-standard (it uses SDB
        !           809:        debugging info for example).  Soon, the DG/UX elf will support
        !           810:        DWARF.  These changes provide transitional support for all three.
        !           811:        (DWARF_DEBUGGING_INFO, SDB_DEBUGGING_INFO): Define both.
        !           812:        (VERSION_0300_SYNTAX): True when -msvr4 and -mversion-03.00.
        !           813:        * tm-m88ksvr4.h (ASM_FILE_END, ASM_OUTPUT_DWARF_LINE): Move these
        !           814:        to tm-m88k.h.  They are dwarf specific.
        !           815:        * tm-m88k.h (TARGET_SWITCHES): Add -mversion-03.00 and -mdwarf.
        !           816:        (OVERRIDE_OPTIONS): If using version 03.00 syntax, assume DWARF_DEBUG.
        !           817: 
        !           818:        * tm-m88k.h (REG_ALLOC_ORDER): Adapt slightly for using r26-r29.
        !           819: 
        !           820:        * out-m88k.c (m88k_debugger_offset): Don't complain if the base
        !           821:        register is optimized away.
        !           822: 
        !           823: Thu Jun 27 21:43:36 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !           824: 
        !           825:        * local-alloc.c (memref_referenced_p, memref_used_between_p):
        !           826:        New functions.
        !           827:        (update_equiv_regs): Call memref_used_between_p.
        !           828: 
        !           829: Thu Jun 27 19:59:36 1991  Ken Raeburn  (raeburn at watch.com)
        !           830: 
        !           831:        * print-tree.c (print_node): Changed the various "lang_#" strings to
        !           832:        indicate which of several possible fields are being examined; new
        !           833:        strings are "tree_#", "decl_#", "type_#".
        !           834: 
        !           835: Thu Jun 27 15:05:43 1991  Michael Meissner  (meissner at churchy.gnu.ai.mit.edu)
        !           836: 
        !           837:        * xm-mips.h (ONLY_INT_FIELDS): Define if not compiling with GCC
        !           838:        since the MIPS compiler treats enum bitfields as signed.
        !           839: 
        !           840: Wed Jun 26 19:48:16 1991  Jim Wilson  (wilson at wookumz.gnu.ai.mit.edu)
        !           841: 
        !           842:        * sched.c (memrefs_conflict_p): Explicitly handle case where both
        !           843:        X and Y are CONST.
        !           844:        (sched_analyze_2): Do create dependencies for insns with REG_EQUIV
        !           845:        notes.
        !           846:        (sched_note_set): Correctly handle the case where the destination
        !           847:        register is a multi-word hard register.
        !           848:        (attach_deaths): Don't add a REG_DEAD note to an insn with a
        !           849:        REG_UNUSED note that mentions the same register.  Correctly handle
        !           850:        the case where the destination register is a multi-word hard
        !           851:        register.
        !           852:        (schedule_block): Also call sched_note_set for CLOBBERs when
        !           853:        computing which registers are dead at the end of the basic block.
        !           854:        Also call sched_note_set for USEs when computing what registers
        !           855:        are still live after a just scheduled insn.
        !           856:        (regno_use_in): New function, subroutine of split_hard_reg_notes.
        !           857:        Searches an rtx for any reference to the given register, and
        !           858:        returns the register rtx used if any.
        !           859:        (split_hard_reg_notes): New function.  Handles the case where a
        !           860:        multi-word hard register with a REG_DEAD note gets split.  Creates
        !           861:        a new REG_DEAD note for each part of the original hard register
        !           862:        used by the split insns.
        !           863:        (new_insn_dead_notes): Don't add a REG_DEAD note to an insn with a
        !           864:        REG_UNUSED note which mentions the same register.
        !           865:        (update_links): Add call to new function split_hard_reg_notes.
        !           866:        Correctly handle the case when the dest of the original insn was a
        !           867:        multi-word register which was split in the split insns.  In this
        !           868:        case, the dest is no longer killed here, so must remove the
        !           869:        REG_DEAD on the last previous insn in this basic block which used
        !           870:        dest, if any such exists.
        !           871: 
        !           872:        * unroll.c (reg_dead_after_loop): Check that a CODE_LABEL which is
        !           873:        the target of a JUMP_INSN has a non-zero PREV_INSN field before
        !           874:        trying to derefence it.  Fail if there is no previous insn.
        !           875: 
        !           876:        * loop.c (scan_loop): Fix typo.
        !           877:        * local-alloc.c (optimize_reg_copy): Likewise.
        !           878:        * global-alloc (hard_reg_copy_preferences): Likewise.
        !           879:        * gcc.texinfo (REG_LOOP_TEST_P): Likewise.
        !           880:        * optabs.c (expand_float): Likewise.
        !           881:        * tm-vaxv.h (ASM_OUTPUT_ASCII): Likewise.
        !           882: 
        !           883:        * out-sparc.c (output_move_double): Sign extend CONST_INTs that
        !           884:        feed DImode targets.
        !           885:        * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't accept a LABEL_REF
        !           886:        as a legal address.  Also, delete obsolete parts of preceeding
        !           887:        comment.
        !           888: 
        !           889:        * reload1.c (alter_reg): Only try to delete the reg_equiv_init
        !           890:        insn if it hasn't already been deleted by a previous call to
        !           891:        delete_dead_insn.
        !           892: 
        !           893:        * toplev.c (main): Handle -gdbx in addition to -gsdb for
        !           894:        orthogonality.
        !           895:        * gcc.texinfo: Document -gdbx.
        !           896: 
        !           897: Tue Jun 25 09:57:08 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !           898: 
        !           899:        * m88k.md (casesi): Don't emit a barrier; the dispatch code must
        !           900:        adjoin the table.
        !           901:        * tm-m88k.h (DONT_REDUCE_ADDR): Don't use this.
        !           902:        (CONDITIONAL_REGISTER_USAGE): The PIC register is also call-used.
        !           903:        * out-m88k.c (m88k_layout_frame): Save the PIC register.
        !           904: 
        !           905: Tue Jun 25 07:40:43 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !           906: 
        !           907:        * function.c (expand_function_end): FNDECL should
        !           908:        be CURRENT_FUNCTION_DECL.
        !           909: 
        !           910:        * combine.c (find_split_point): If we see an AND operation as the
        !           911:        first operand of some non-AND operation, use it as a split point.
        !           912:        (subst): Add counter to limit restarts, go to restart more often.
        !           913:        (subst, case AND): If we get (ior (and (X C1) C2)) and can't
        !           914:        restart more than once, rewrite with C1 as small as possible and exit.
        !           915: 
        !           916:        * cse.c (cse_end_of_basic_block): Don't put branch in our path more
        !           917:        than once.
        !           918:        (cse_main): Clear PATH_SIZE when skipping a block.
        !           919:        (cse_basic_block): Use GET_RTX_CLASS.
        !           920: 
        !           921: Tue Jun 25 07:39:29 1991  Matthew Self  (mself at next.com)
        !           922: 
        !           923:        * varasm.c (const_hash, compare_constant_1, record_constant_1):
        !           924:        For ADDR_EXPR's, don't hash address of SYMBOL_REF.  Only use
        !           925:        offset and name of symbol.  This allows constructors which
        !           926:        contain pointers to identical string literals to be uniqued.
        !           927: 
        !           928:        * loop.c (loop_optimize, init_loop):  Moved call to
        !           929:        gcc_obstack_init() from loop_optimize() to init_loop().
        !           930: 
        !           931:        * reload1.c (reload, init_reload):  Moved call to
        !           932:        gcc_obstack_init() from reload() to new function init_reload().
        !           933: 
        !           934:        * toplev.c (compile_file):  Call new function init_reload().
        !           935: 
        !           936: Mon Jun 24 16:05:57 1991  Jim Wilson  (wilson at wookumz.gnu.ai.mit.edu)
        !           937: 
        !           938:        * stmt.c (expand_end_stmt_expr): Fix typo in comment.
        !           939: 
        !           940:        * reload1.c (modes_equiv_for_class_p): Only fail if registers in
        !           941:        CLASS that can hold ALLOCATE_MODE can't also hold OTHER_MODE.  Do
        !           942:        not fail for the reverse test.  ALLOCATE_MODE is always a larger
        !           943:        or same size mode as OTHER_MODE, and will be the mode that reload
        !           944:        uses when allocating spill registers.  Rewrite comments to explain
        !           945:        new behaviour.
        !           946:        (reload): Change call to modes_equiv_for_class_p to match new
        !           947:        semantics.
        !           948: 
        !           949:        * combine.c (simplify_shift_const): When simplifying (ashiftrt
        !           950:        (ashift inner_const_int) const_int), was checking the wrong number of
        !           951:        high order bits of inner_const_int.  Also correct typos in comments.
        !           952: 
        !           953:        * c-convert.c (convert_to_integer): Must also check ARG1 for
        !           954:        unsignedness, because ARG0 could be a constant when EXPR is a
        !           955:        MINUS_EXPR.
        !           956: 
        !           957:        * combine.c (try_combine): When splitting, it is not safe to use
        !           958:        I2DEST if it is referenced by NEWPAT.
        !           959: 
        !           960:        * combine.c (distribute_notes): After converting REG_DEAD notes to
        !           961:        REG_UNUSED notes, clear PLACE if it already has a REG_UNUSED note,
        !           962:        to prevent adding a duplicate REG_UNUSED note.
        !           963: 
        !           964:        * gcc.texinfo (SIGNED_CHAR_SPEC): Document.
        !           965: 
        !           966: Mon Jun 24 10:02:32 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !           967: 
        !           968:        * cse.c (cse_set_around_loop): Ensure the insn we find in front
        !           969:        of the loop does the set in the proper mode.
        !           970: 
        !           971:        * optabs.c (expand_float): Always do conversions to FMODE in the
        !           972:        signedness of the input.
        !           973: 
        !           974:        * reload.c (find_reloads, find_reloads_toplev): If reg_equiv_address
        !           975:        is not a constant address, copy it in case it is shared.
        !           976: 
        !           977:        * reload1.c (eliminate_regs): Copy reg_equiv_memory_loc in case
        !           978:        it is shared and we make a reload inside it.
        !           979: 
        !           980:        * stupid.c (stupid_mark_refs): Registers that aren't used must die
        !           981:        in the insn after their birth so they conflict with other outputs.
        !           982: 
        !           983:        * vax.md: Replace patterns to convert (and (ashiftxx))
        !           984:        into (and (rotatexx)) with the patterns that are actually made
        !           985:        by combine.
        !           986:        We can allow offsettable addresses for operand 0 and it is not
        !           987:        early-clobber.
        !           988: 
        !           989:        * out-rs6000.c (secondary_reload_class): Correctly interpret result of
        !           990:        true_regnum.
        !           991: 
        !           992:        * out-rs6000.c (output_toc): Write FP constants in TOC.
        !           993:        * tm-r6000.h (TARGET_FP_IN_TOC): New flag.
        !           994:        (TARGET_SWITCHES): Add -mfp-in-toc and -mno-fp-in-toc.
        !           995:        (TARGET_DEFAULT): -mfp-in-toc is the default.
        !           996:        (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): FP constants may be put in the TOC.
        !           997: 
        !           998: Mon Jun 24 00:52:44 1991  James Van Artsdalen  (james at bigtex.cactus.org)
        !           999: 
        !          1000:        * out-i386.c (output_fix_trunc): If the dest operand mentions the
        !          1001:        stack pointer, then we must adjust it to account for the temporary
        !          1002:        space we allocate on the stack here.
        !          1003: 
        !          1004: Sat Jun 22 07:24:33 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1005: 
        !          1006:        * cse.c (cse_set_around_loop): Fix typo in call to note_mem_written.
        !          1007: 
        !          1008:        * emit-rtl.c (reorder_insns): Correctly handle case when AFTER is last
        !          1009:        insn.
        !          1010: 
        !          1011:        * expr.c (expand_expr, case COND_EXPR): Correctly handle X ? A : X + 1.
        !          1012:        Previous change called invert_truthvalue which can modify EXP; we now
        !          1013:        call it a second time to undo its action if do_store_flag fails.
        !          1014: 
        !          1015: Sat Jun 22 02:37:59 1991  James Van Artsdalen  (james at bigtex.cactus.org)
        !          1016: 
        !          1017:        * cse.c (cse_set_around_loop): Don't try to initialize an
        !          1018:        automatic structure.
        !          1019: 
        !          1020:        * reg-stack.c (compare_for_stack_reg): If both operands to a
        !          1021:        compare are the same stack reg, don't process death on the second.
        !          1022: 
        !          1023:        * i386.md (all float patterns): Don't allow constants in the
        !          1024:        operand predicates.
        !          1025:        (all patterns using convert_387_op): Split patterns into one using
        !          1026:        FLOAT and another using FLOAT_EXTEND.
        !          1027: 
        !          1028: Fri Jun 21 20:37:03 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          1029: 
        !          1030:        * sched.c (line_note, line_note_head): New vectors for use when
        !          1031:        dealing with line-number notes.
        !          1032:        (unlink_notes): Put line-number notes in LINE_NOTE for reuse.
        !          1033:        (schedule_block): Just before reordering the insns, walk the insns
        !          1034:        and record the line-number note in effect for each one.  When
        !          1035:        reordering is complete, restore the line-number notes as needed.
        !          1036:        (schedule_insns): When debugging information is present, allocate
        !          1037:        and initialize line_note and line_note_head.  After scheduling,
        !          1038:        walk the insns to delete redundant line-number notes.
        !          1039: 
        !          1040: Fri Jun 21 19:54:29 1991  Jim Wilson  (wilson at wookumz.gnu.ai.mit.edu)
        !          1041: 
        !          1042:        * old-sparc.c, out-old-sparc.c, tm-old-sparc.h: Delete obsolete
        !          1043:        files.
        !          1044: 
        !          1045:        * loop.c (loop_number_exit_labels): Expand comment.  Mention that
        !          1046:        returns are not included because all bivs and givs are pseudos and
        !          1047:        hence must be dead after a return.
        !          1048: 
        !          1049: Fri Jun 21 07:10:56 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1050: 
        !          1051:        * combine.c (subst, case PLUS, MINUS): Remove cases for things like
        !          1052:        (x-y)+y; now done in simplify_binary_operation.
        !          1053:        * cse.c (simplify_unary_operation): Handle (sign_extend (truncate ..))
        !          1054:        as used in casesi patterns.
        !          1055:        (simplify_binary_operation, case PLUS, MINUS): Don't do most
        !          1056:        simplifications if IEEE floating-point.
        !          1057:        Add cases for things like (x-y)+y.
        !          1058:        (fold_rtx): Replace PC with LABEL_REF if we are immediately in
        !          1059:        front of a jump table.
        !          1060:        Move code to apply associative law to after we have folded the
        !          1061:        operands.
        !          1062:        (fold_rtx, case MEM): Fix errors in checking for index of jump
        !          1063:        table being out of range.
        !          1064:        For ADDR_DIFF_VEC, return a MINUS or (truncate (minus L1 L2)).
        !          1065:        (fold_rtx, case PLUS): If we have (plus X (label_ref L)), see
        !          1066:        if X is equivalent to (minus L1 L2).
        !          1067:        (cse_insn): Put (minus L1 L2) in `src_const' so it gets in a
        !          1068:        REG_EQUAL note and gets put in the hash table.
        !          1069:        If we are branching to a jump table, we are really branching to
        !          1070:        immediately after the jump table
        !          1071:        Remove special-case kludge for ADDR_DIFF_VEC; now handled properly.
        !          1072: 
        !          1073:        * vax.md (casesi): Make pattern agree with machine instruction;
        !          1074:        specifically, index is multiplied by two and the comparison is LEU,
        !          1075:        not LE.
        !          1076: 
        !          1077:        * cse.c (equiv_constant): If X is a one-word SUBREG of a larger
        !          1078:        quantity, use `lookup_as_function' to see if it is equivalent
        !          1079:        to a CONST_INT.
        !          1080: 
        !          1081:        * jump.c (squeeze_notes): No longer static.
        !          1082:        * loop.c (find_and_verify_loops): Need to call squeeze_notes when
        !          1083:        moving block of code (see last change).
        !          1084: 
        !          1085:        * reload.c (find_reloads): When forcing constant to memory,
        !          1086:        set recog_operand to the result of find_reloads_toplev.
        !          1087: 
        !          1088:        * combine.c (subst, case PLUS): Add (c1 - a) + c2 -> (c1+c2) - a.
        !          1089:        (subst, case MINUS): Use simplify_binary_operation rather than
        !          1090:        making CONST_INT from subtraction of two INTVAL's to ensure it
        !          1091:        gets truncated as appropriate for its mode.
        !          1092:        Add (c1 - (c2 - a)) -> (c1-c2) + a.
        !          1093: 
        !          1094:        * a29k.md (negdf2): Use operand_subword_force, not operand_subword.
        !          1095:        (movsf): Use operand_subword, not gen_lowpart.
        !          1096: 
        !          1097:        * out-rs6000.c (u_short_cint_operand): New function.
        !          1098:        (print_operand): Support auto-decrement.
        !          1099: 
        !          1100:        * tm-rs6000.h (OVERRIDE_OPTIONS): Force profiling off.
        !          1101:        (PREFERRED_RELOAD_CLASS): Return NO_REGS for real CONST_DOUBLE.
        !          1102:        (HAVE_PRE_DECREMENT): Define this.
        !          1103:        (GO_IF_LEGITIMATE_ADDRESS, GO_IF_MODE_DEPENDENT_ADDRESS):
        !          1104:        Support PRE_DEC.
        !          1105: 
        !          1106:        * rs6000.md (zero_extendxx): Use rlinm, not andil so we avoid
        !          1107:        clobbering cr0.
        !          1108:        (arith-and-record patterns): Correct some bad operand numbers.
        !          1109:        Put SImode output as operand 0 to improve register tying.
        !          1110:        (andsi): Prefer rlinm over andil and andiu.
        !          1111:        (load/store-with-update): Add patterns for these instructions.
        !          1112:        (allocate_stack): New, replaces stack probe.
        !          1113:        (add-and-compare): New patterns, with define_split.
        !          1114:        (subtract-one-and-jump): Allow outputs anywhere; handle with
        !          1115:        match_scratch and define_split.
        !          1116: 
        !          1117:        * stmt.c (expand_end_stmt_expr): If `last_expr_value' is 0, set it
        !          1118:        to const0_rtx.
        !          1119: 
        !          1120:        * regclass.c (reg_n_sets): Move definition to before use.
        !          1121: 
        !          1122:        * jump.c (find_cross_jump): Don't try to substitute REG_EQUAL
        !          1123:        values unless they are constants.
        !          1124: 
        !          1125: Fri Jun 21 02:37:59 1991  James Van Artsdalen  (james at bigtex.cactus.org)
        !          1126: 
        !          1127:        * reload1.c (reload): Don't clear after_call for each insn.
        !          1128: 
        !          1129: Sun Jun 16 17:28:43 1991  James Van Artsdalen  (james at bigtex.cactus.org)
        !          1130: 
        !          1131:        * reload1.c (reload, reload_as_needed, choose_reload_regs): Enable
        !          1132:        code to avoid return register when SMALL_REGISTER_CLASSES defined.
        !          1133: 
        !          1134:        * final.c (final_scan_insn): Don't look for no-op moves if
        !          1135:        processor has STACK_REGS.
        !          1136: 
        !          1137:        * hard-reg-set.h (GO_IF_HARD_REG_EQUAL): New macro.
        !          1138: 
        !          1139:        * jump.c (cross_jump_death_matters): New variable.
        !          1140:        (find_cross_jump): If processor has STACK_REGS, compare death
        !          1141:        notes if they matter.
        !          1142: 
        !          1143:        * toplev.c (compile_file, rest_of_compilation): Support new
        !          1144:        stack-regs conversion pass.
        !          1145:        (main, compile_file, rest_of_compilation): Add support for -dk to
        !          1146:        dump after stack-regs conversion.
        !          1147:        * reg-stack.c: New file.  Implements stack-regs conversion pass.
        !          1148:        * Makefile.in (reg-stack.o): New file.
        !          1149: 
        !          1150:        * tm-i386.h (STACK_REGS): New macro.
        !          1151:        (all register macros): Define all eight float point registers.
        !          1152:        (HARD_REGNO_NREGS): Only one float reg is needed for any mode.
        !          1153:        (HARD_REGNO_MODE_OK): Move code here from out-i386.c.
        !          1154:        (FIRST_STACK_REG,LAST_STACK_REG): New macros.
        !          1155:        (ARG_POINTER_REGNUM): Move to reg 16.
        !          1156:        (FP_REGNO_P): Recognize all float regs.
        !          1157:        (QI_REG_P): New macro.
        !          1158:        (STACK_REG_P,NON_STACK_REG_P,STACK_TOP_P): New macros.
        !          1159:        (PRESERVE_DEATH_INFO_REGNO_P): Delete.
        !          1160:        (OVERLAPPING_REGNO_P): Delete.
        !          1161:        (CONST_OK_FOR_LETTER_P): Recognize constant mask for byte or word.
        !          1162:        Recognize constant 0..3 for `lea' shifts.
        !          1163:        (CONST_DOUBLE_OK_FOR_LETTER_P):
        !          1164:        (PREFERRED_RELOAD_CLASS): Don't put CONST_DOUBLE in float regs.
        !          1165:        QImode must go in class Q_REGS.  Float regs can't hold MODE_INT.
        !          1166:        (MOVE_RATIO): New macro.
        !          1167:        (SHIFT_COUNT_TRUNCATED): Delete.  Bit opcodes don't truncate.
        !          1168:        (RTX_COSTS): New macro.
        !          1169:        (CONST_COSTS): Make constants cheaper.
        !          1170:        (QI_HIGH_REGISTER_NAMES): Renamed from QI_REGISTER_NAMES_TOP.
        !          1171:        (INSN_CLOBBERS_REGNO_P): Delete.
        !          1172:        (FP_TOP,RETCOM,POP_ONE_POP,FP_CALL1,FP_CALL): Delete.
        !          1173: 
        !          1174:        * out-i386.c (fp_pop_level): Delete.
        !          1175:        (fp_call_internal, output_asm_insn_double_reg_op, via_memory,
        !          1176:        fp_store_sf,fp_pop_sf,fp_store_df,fp_pop_df,fp_pop_int,
        !          1177:        fp_push_sf,fp_push_df,output_movsf,output_movdf,output_movf,
        !          1178:        top_dead_p,call_top_dead_p,fp_top_dead_p1,mentioned_fp_top): Delete.
        !          1179:        (hard_regno_mode_ok): Moved to tm-i386.h.
        !          1180:        (qi_high_reg_name): New variable.
        !          1181:        (output_op_from_reg, output_to_reg): New function.
        !          1182:        (singlemove_string,output_move_const_single): No longer static.
        !          1183:        (singlemove_string): Use correct operand number in `push' string.
        !          1184:        (standard_80387_constant_p): Use recommended method to extract
        !          1185:        float from CONST_DOUBLE.
        !          1186:        (PRINT_REG): Add 'h' for "high" register names, 'y' for "st(0)".
        !          1187:        (print_operand): Code 'z' prints no size suffix for stack regs.
        !          1188:        Print DImode suffix as "ll", not just "l".
        !          1189:        (output_fix_trunc): New argument `insn'.  Generalize to output to
        !          1190:        MEM or REG.  Return "char *" like other output routines.
        !          1191:        Generalize for SImode or DImode output.
        !          1192:        (binary_387_op,convert_387_op,float_op,fix_op,shift_op): New
        !          1193:        match_operator predicates.
        !          1194:        (output_387_binary_op,output_float_compare): New functions.
        !          1195: 
        !          1196:        * i386.md (all MODE_FLOAT patterns): Replace with new code to use
        !          1197:        all FPU registers.
        !          1198:        (all patterns): Use AS2 and AS1 macros where possible, for
        !          1199:        eventual support of Intel syntax output.
        !          1200:        (tstM): Don't initialize operands unless we need to.
        !          1201:        (cmpM): Choose operange order in output for speed on i386.
        !          1202:        (logical test patterns): The operands commute.  If possible,
        !          1203:        SImode tests should use just QImode.
        !          1204:        (movstrictM): New patterns.
        !          1205:        (movqi): Don't allow a constant of unknown value into Q_REGS.
        !          1206:        (`lea' pattern): Move after addsi3.
        !          1207:        (addsi3): Do three operand adds with `lea'.
        !          1208:        (divsi3,divhi3,udivsi3,udivhi3): Delete in favor of u?divmodM4.
        !          1209:        (divqi3,udivqi3): Remove earlyclobber for operand 0.
        !          1210:        (andM3): Define three operand ANDs for 255 and 65535 using zero
        !          1211:        extend opcode.  Also directly do an AND in the second byte of a
        !          1212:        register.
        !          1213:        (iorM3,xorM3): Do byte ior instead of word where possible.
        !          1214:        (xorqi3): Allow operands[2] from MEM.
        !          1215:        (ashlsi3): Allow three-operand shift of 0..3 with `lea' opcode.
        !          1216:        (lshlM3): Redundant, delete.
        !          1217:        (shift & rotate patterns): Print %0 as destination operand.
        !          1218:        (bit recognizers): New patterns to set, clear and compliment.
        !          1219:        (call insns): Use "%P" code for targets to support Intel syntax.
        !          1220:        (movstrsi): Express changes to the operands instead of just
        !          1221:        clobbering them.  Don't accept non-constant move count, as our
        !          1222:        code isn't as efficient as a library call.
        !          1223: 
        !          1224: Thu Jun 20 13:51:02 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1225: 
        !          1226:        * cse.c (cse_insn): If we fold a conditional or computed branch to an
        !          1227:        unconditional branch, it is now not in the normal format for an
        !          1228:        unconditional branch, and it only has one set, delete it and
        !          1229:        re-emit it.
        !          1230:        Whenever we make an unconditional branch, set `cse_skip_to_next_block'
        !          1231:        and do nothing else.
        !          1232:        (cse_basic_block): Increment LABEL_NUSES on TO if it is a label
        !          1233:        so it won't go away while we are using it as a stopping point.
        !          1234:        If we are done with this block (`cse_skip_to_next_block' nonzero),
        !          1235:        pretend we just did the insn before TO.
        !          1236:        Decrement LABEL_NUSES of TO if it is a label; if it became zero,
        !          1237:        delete it and try to extend the basic block.
        !          1238: 
        !          1239:        * reload.c (find_reloads): Fix typo in check for no alternatives
        !          1240:        found.
        !          1241: 
        !          1242:        * combine.c (reg_significant, significant_mode): New vars.
        !          1243:        (combine_instructions): Allocate and initialize reg_significant.
        !          1244:        (set_significant): New function.
        !          1245:        (significant_bits, case REG): Use reg_significant, if non-zero
        !          1246:        as the significant bits of a register.
        !          1247: 
        !          1248:        * loop.c (n_times_set): Define -2 to mean that a register is
        !          1249:        an candidate to be moved and is a constant.
        !          1250:        (scan_loop): Set n_times_set to -1 or -2 as appropriate.
        !          1251:        (regs_match_p): No need to check REG_FUNCTION_VALUE_P.
        !          1252:        A register and a constant can be equal if the register is known 
        !          1253:        equivalent to the constant.
        !          1254:        (invariant_p): Check n_times_set < 0, not == -1.
        !          1255: 
        !          1256:        * rtl.h (REG_LOOP_TEST_P): New macro.
        !          1257:        * jump.c (duplicate_loop_exit_test): Mark registers used only in
        !          1258:        loop exit test.
        !          1259:        * cse.c (cse_around_loop, cse_check_loop_start, cse_set_around_loop):
        !          1260:        New functions.
        !          1261:        (cse_end_of_basic_block): Add new arg to say if we are being called
        !          1262:        after loop.c has run; if we are being called after loop.c, we can
        !          1263:        ignore NOTE_INSN_LOOP_ENDs.
        !          1264:        (cse_main): Accept new AFTER_LOOP arg; pass to cse_end_of_basic_block.
        !          1265:        If we are called before loop.c, see if we can cse around to the
        !          1266:        start of a loop.  
        !          1267:        * toplev.c (rest_of_compilation): Tell cse_main if it is being called
        !          1268:        before or after loop.c.
        !          1269: 
        !          1270:        * rtl.h (LABEL_OUTSIDE_LOOP_P): New macro.
        !          1271:        * loop.h (uid_loop_num): Renamed from luid_loop_num and now
        !          1272:        maps INSN_UID to loop number instead of INSN_LUID.
        !          1273:        * loop.c (loop_optimize): Modifications for the above.
        !          1274:        (find_and_verify_loop): Change luid_loop_num to uid_loop_num.
        !          1275:        Look for blocks of code ending in an unconditional branch out
        !          1276:        of the loop surrounded by a conditional branch and try to move
        !          1277:        such a block out of the loop.
        !          1278:        (mark_loop_jump): Change luid_loop_num to uid_loop_num.
        !          1279:        Mark all LABEL_REFs that are outside the current loop, for
        !          1280:        branch prediction.
        !          1281:        (strength_reduce, check_dbra_loop): Change luid_loop_num to 
        !          1282:        uid_loop_num.
        !          1283:        * unroll.c (unroll_loop, find_splittable_{regs,givs}): Likewise.
        !          1284:        (reg_dead_after_loop, final_{biv,giv}_value): Likewise.
        !          1285: 
        !          1286:        * flow.c (reg_n_sets): Don't define this here.
        !          1287:        * regclass.c (reg_n_sets): Define it here.
        !          1288:        (reg_scan): Allocate and initialize reg_n_sets.
        !          1289:        (reg_scan_mark_refs): Count sets of a register in reg_n_sets.
        !          1290: 
        !          1291:        * sched.c (reg_known_value_size): New variable.
        !          1292:        (canon_rtx): Don't look in reg_known_value outside its allocated space.
        !          1293:        (init_alias_analysis): Initialize reg_known_value_size.
        !          1294: 
        !          1295:        * loop.c ({unknown,fixed}_aggregate_altered): Deleted.
        !          1296:        (loop_store_mems): Replaces loop_store_addrs and loop_store_widths.
        !          1297:        (loop_optimize): Call init_alias_analysis.
        !          1298:        (prescan_loop, note_addr_stored): Save all MEMs stored into, rather
        !          1299:        than just those that appear fixed; save MEMs rather than addresses
        !          1300:        and widths.
        !          1301:        (invariant_p): Use true_dependence to see if a MEM is invariant;
        !          1302:        compare it with all MEMs stored during the loop.
        !          1303: 
        !          1304:        * sched.c (memrefs_conflict_p): If XSIZE or YSIZE is zero
        !          1305:        the object conflict if they have the same base, irregardless
        !          1306:        of the offsets.
        !          1307: 
        !          1308:        * reorg.c (dbr_schedule): Reallocate unfilled_firstobj after
        !          1309:        freeing memory from the obstack.
        !          1310: 
        !          1311:        * reload.c (push_reload): Always reload object inside SUBREG if
        !          1312:        STRICT_LOW_PART is present.
        !          1313:        Always set RELOAD_STRICT_LOW to zero; maybe we should get rid of it.
        !          1314: 
        !          1315:        * reload.c (make_memloc): Copy the address if it varies to avoid
        !          1316:        potential sharing problems.
        !          1317: 
        !          1318:        * global-alloc.c (hard_reg_copy_preferences): New var.
        !          1319:        (global_alloc): Allocate and initialze it.
        !          1320:        (prune_preferences): Prune it.
        !          1321:        (find_reg): Try preferences in hards_reg_copy_preferences first,
        !          1322:        then hard_reg_preferences.
        !          1323:        (set_preference): Set bit in hard_reg_copy_references, if appropriate.
        !          1324: 
        !          1325:        * emit-rtl.c (try_split): If we are splitting a JUMP_INSN, copy 
        !          1326:        JUMP_LABEL from the old to new insn update the count of that label.
        !          1327: 
        !          1328:        * cse.c (lookup): Always call exp_equiv_p unless we have a REG.
        !          1329: 
        !          1330:        * cse.c (insert): If we are making a register equivalent to a
        !          1331:        constant that was already equivalent to a constant, update
        !          1332:        qty_const_insn.
        !          1333:        (cse_insn): Don't do it here.
        !          1334:        * cse.c (fold_rtx): Always call simplify_unary_operation.
        !          1335: 
        !          1336:        * cse.c (record_jump_equiv): Don't get primary elements for OP0 and
        !          1337:        OP1 since they might not be valid.
        !          1338: 
        !          1339:        * loop.c (get_condition): Accept new arg, EARLIEST that is a pointer
        !          1340:        to where we place the earliest insn used to form the condition.
        !          1341:        Check for comparison with CC0 in main loop, not earlier.
        !          1342:        Never return condition involving CC0.
        !          1343:        (get_condition_for_loop): Call get_condition with new arg.
        !          1344:        * jump.c (jump_optimize): When we make store-flag insn, put new
        !          1345:        insns before earliest insn used to form condition and use new
        !          1346:        psuedo as target, which we copy into VAR immediately after the insn
        !          1347:        that currently sets VAR.
        !          1348:        Turn off "if (...) x = 1; else {...} if (x) ..." code; it is not
        !          1349:        correct and can't be easily fixed.
        !          1350:        (get_label_{before_after}): Use {prev,next}_nonnote_insn.
        !          1351: 
        !          1352:        * jump.c (jump_optimize): Don't interpret NOOP_MOVES as meaning
        !          1353:        "after_reload"; check reload_completed instead.  Don't pass NOOP_MOVES
        !          1354:        to functions that aren't actually trying to noop moves.
        !          1355:        (follow_jumps, tension_vector_labels):  Don't accept AFTER_RELOAD arg;
        !          1356:        check reload_completed instead.
        !          1357: 
        !          1358:        * combine.c (try_combine): Don't check that we don't have a
        !          1359:        single_set when trying to replace a SET_DEST in a PARALLEL in I2.
        !          1360:        (simplify_and_const_int): Always do the AND in the mode passed.
        !          1361:        (significant_bits, case DIV and UDIV): Nothing special known
        !          1362:        about low-order bits here.
        !          1363:        (simplify_shift_const, shift cases): Don't go into infinite loop if
        !          1364:        we combine two shifts in the same direction.
        !          1365: 
        !          1366:        * c-parse.y, cplus-parse.y, objc-parse.y (set_yydebug): Move to
        !          1367:        end of file so we don't have a reference to yydebug after its
        !          1368:        definition; also delete duplicate declaration.
        !          1369: 
        !          1370: Thu Jun 20 09:08:21 1991  Tom Wood  (wood at geech.gnu.ai.mit.edu)
        !          1371: 
        !          1372:        * local-alloc.c (block_alloc): Fixed typo in last edit.
        !          1373: 
        !          1374: Wed Jun 19 17:05:52 1991  Jim Wilson  (wilson at wookumz.gnu.ai.mit.edu)
        !          1375: 
        !          1376:        * reload.c (push_reload): Verify reload_in[i] exists before using
        !          1377:        GET_CODE on it.
        !          1378: 
        !          1379:        * m88k.md: USE insns must be immediately before CALL_INSNs to work
        !          1380:        properly, otherwise sched.c and reorg.c will not associate them will
        !          1381:        the CALL.
        !          1382: 
        !          1383:        * unroll.c (calculate_giv_inc): Accept constant increments
        !          1384:        represented as a LO_SUM.
        !          1385: 
        !          1386:        * flow.c (mark_used_regs): Don't put a REG_DEAD note on insns that
        !          1387:        already have a REG_UNUSED note.  This makes it consistent with
        !          1388:        combine.c.
        !          1389:        * combine.c (distribute_notes): If a REG_UNUSED reg is no longer
        !          1390:        set by an insn, but is still used by the insn, then must convert
        !          1391:        the REG_UNUSED note to a REG_DEAD note.
        !          1392: 
        !          1393:        * gcc.c (SIGNED_CHAR_SPEC): Put ifndefs around it, so that it can
        !          1394:        be overriden by a definition in the tm.h file.
        !          1395: 
        !          1396:        * cse.c (cse_insn): Add missing third parameter to find_reg_note calls.
        !          1397: 
        !          1398:        * tm-arm.h (INIT_CUMULATIVE_ARGS): Take LIBNAME as third argument.
        !          1399: 
        !          1400:        * combine.c (can_combine_p): Remove extra argument in call to
        !          1401:        find_reg_note.
        !          1402: 
        !          1403:        * rtlanal.c (find_regno_note): Verify that the note contains a
        !          1404:        REG before checking its REGNO.
        !          1405: 
        !          1406:        * cse.c (canon_reg): Fix spacing/punctuation error.
        !          1407:        * recog.c (constrain_operands): Likewise.
        !          1408:        * tree.h: Likewise.
        !          1409:        * varasm.c (Assemble function): Likewise.
        !          1410: 
        !          1411: Wed Jun 19 13:14:22 1991  Tom Wood  (wood at geech.gnu.ai.mit.edu)
        !          1412: 
        !          1413:        * local-alloc.c (block_alloc): When counting instructions, abort if
        !          1414:        a loop is detected.  Improperly threaded insns are easy to produce
        !          1415:        when working on the scheduler.
        !          1416: 
        !          1417: Sat Jun 15 06:13:11 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1418: 
        !          1419:        * combine.c (simplify_and_const_int, case ASHIFTRT): Avoid infinite
        !          1420:        loop if simplify_shift_const doesn't do anything.
        !          1421: 
        !          1422: Thu Jun 13 09:05:12 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          1423: 
        !          1424:        * m88k.md (decrement_and_branch_until_zero): Add this insn.
        !          1425:        
        !          1426: Thu Jun 13 07:32:37 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1427: 
        !          1428:        * explow.c (plus_constant): Fix error in last change; CONST case
        !          1429:        wasn't handled correctly.
        !          1430: 
        !          1431:        * tm-m68k.h (CONST_CONSTS): Constants between -7 and -1 are cheap
        !          1432:        because of subq.
        !          1433: 
        !          1434:        * m68k.md (dbra): Operand 0 should have '+' constraint, not '='.
        !          1435: 
        !          1436:        * expmed.c (store_fixed_bit_field): Clean up some confusion between
        !          1437:        targets and results in expand_binop calls.
        !          1438: 
        !          1439:        * local-alloc.c (optimize_reg_copy): Fix several typos relating to
        !          1440:        status updating.
        !          1441:        Correctly handle the case where DEST dies before SRC.
        !          1442:        Fix some comments that had SRC and DEST backwards.
        !          1443: 
        !          1444:        * combine.c (can_combine_p): Swap order of args of && to avoid
        !          1445:        unnecessary calls to use_crosses_set_p.
        !          1446:        (simplify_and_const_int, case SUBREG): Make code agree with comment.
        !          1447: 
        !          1448:        * emit-rtl.c (operand_subword): Avoid compilation warning.
        !          1449: 
        !          1450:        * expmed.c (store_fixed_bit_field): Don't use OP0 as SUBTARGET
        !          1451:        if it is a MEM and -fforce_mem was specified.
        !          1452: 
        !          1453:        * expmed.c (emit_store_flag): After scc insns, convert to wider
        !          1454:        mode using unsigned conversion if STORE_FLAG_VALUE is positive.
        !          1455: 
        !          1456:        * expmed.c (init_expmed): Use mode of size BITS_PER_WORD instead
        !          1457:        of SImode.
        !          1458:        (store_bit_field, extract_bit_field): Replace references to SImode
        !          1459:        with MAXMODE.
        !          1460:        (store_fixed_bit_field, extract_fixed_bit_field): Don't use explicit
        !          1461:        modes; use get_best_mode instead.
        !          1462:        (store_split_bit_field, extract_split_bit_field): Use operand_subword
        !          1463:        and mode_for_size instead of making SUBREGs and using SImode.
        !          1464: 
        !          1465:        * stor-layout.c (get_best_mode): Allow LARGEST_MODE to be VOIDmode,
        !          1466:        in which case we can use any appropriate mode.
        !          1467: 
        !          1468: Wed Jun 12 16:32:37 1991  Michael Tiemann  (tiemann at pogo.gnu.ai.mit.edu)
        !          1469: 
        !          1470:        * cplus-decl.c (init_decl_processing): Compensate for tm-sparc.h
        !          1471:        change to WCHAR_TYPE handling.
        !          1472: 
        !          1473: Wed Jun 12 10:19:13 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1474: 
        !          1475:         * tm-sparc.h (WCHAR_TYPE): Must be "short unsigned int".
        !          1476: 
        !          1477:        * combine.c (subst, make_extraction, simplify_shift_const): Don't
        !          1478:        change mode of volatile MEM; replaces similar change of June 1st.
        !          1479:        * function.c (fixup_var_refs_1, optimize_bit_field): Likewise.
        !          1480:        * recog.c (validate_replace_rtx_1): Likewise.
        !          1481: 
        !          1482: Tue Jun 11 22:09:28 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          1483: 
        !          1484:        * expr.c (expand_expr, case COND_EXPR): Expressions of both the form
        !          1485:        X ? A + 1 : A and X ? A : A + 1 were being done, but only the former
        !          1486:        was being handled correctly.
        !          1487: 
        !          1488: Tue Jun 11 12:13:53 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1489: 
        !          1490:        * recog.c (validate_replace_rtx_1): If putting a CONST_INT in a
        !          1491:        ZERO_EXTEND or SIGN_EXTEND, try to simplify the operation or fail;
        !          1492:        the semantics of the operation require a non-VOIDmode argument.
        !          1493: 
        !          1494:        * cse.c (delete_dead_from_cse): Don't delete last insn in a libcall.
        !          1495: 
        !          1496:        * explow.c (allocate_dynamic_stack_space): Don't clobber SIZE when
        !          1497:        rounding it.
        !          1498: 
        !          1499:        * fold-const.c (fold, case COND_EXPR): Ensure we always return an
        !          1500:        expression in the correct type.
        !          1501: 
        !          1502:        * expr.c (emit_push_insn): Don't need to put X in register if it
        !          1503:        is constant; operand_subword_force can do so if needed.
        !          1504: 
        !          1505:        * reload.c (find_reloads): Simplify nested `if' statements.
        !          1506:        * recog.c (constrain_operands): Likewise.
        !          1507: 
        !          1508:        * jump.c (mark_jump_label): Fix typo (extra paren) in last change.
        !          1509: 
        !          1510: Tue Jun 11 10:03:08 1991  Micheal Tiemann  (tiemann at pogo.gnu.ai.mit.edu)
        !          1511: 
        !          1512:        * collect2.c: New file.
        !          1513: 
        !          1514:        * sched.c (memrefs_conflict_p): Finish removing ASHIFT case.
        !          1515: 
        !          1516:        * emit-rtl.c (operand_subword): Change test of BITS_PER_WORD <
        !          1517:        HOST_BITS_PER_WORD from compile-time to run-time.
        !          1518:        * expr.c (emit_push_insn): Ditto.
        !          1519:        * recog.c (constrain_operands): Ditto.
        !          1520:        * reload.c (find_reloads): Ditto.
        !          1521: 
        !          1522:        * jump.c (jump_optimize): Add `continue' after deleting INSN in case
        !          1523:        where further attempts to optimize the insn are invalid.
        !          1524:        (mark_jump_label): Don't crash if NEXT == 0.
        !          1525: 
        !          1526: Tue Jun 11 09:14:05 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          1527: 
        !          1528:        * out-m88k.c (legitimize_operand): New function to convert
        !          1529:        CONST_DOUBLE to SFmode when possible.
        !          1530:        * m88k.md (cmpdf, adddf3, subdf3, muldf3, divdf3): Use it.
        !          1531:        * tm-m88k.h: Declare it.
        !          1532: 
        !          1533:        * xm-m88k.h (OBSTACK_CHUNK_SIZE): For DG/UX at least, the default
        !          1534:        value results in a perfect checkerboard.
        !          1535: 
        !          1536: Tue Jun 11 07:23:45 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1537: 
        !          1538:        * expr.c (expand_expr, case FLOAT_EXPR, FIX_EXPR): Don't try to
        !          1539:        do any partial conversions here; expand_fix and expand_float now
        !          1540:        handle all modes.
        !          1541:        * optabs.c (fixtab, fixtrunctab, floattab): Table now contains
        !          1542:        all modes.
        !          1543:        (can_fix_p, can_float_p): Use mode as index in tables.
        !          1544:        (init_fixtab, init_floattab): Likewise.
        !          1545:        Add support for QImode and HImode operations.
        !          1546:        (expand_float): Rework to remove dependendence on specific modes.
        !          1547:        Can only use REAL_VALUE_LDEXP in certain configurations.
        !          1548:        (expand_fix): Likewise.
        !          1549:        If can't do operation unsigned, or signed into wider mode, emit a
        !          1550:        sequence that compares operand with 2**(N-1) and, if larger,
        !          1551:        subtracts 2**(N-1), converts, and adds it back. 
        !          1552:        Protect from queue and force not memory at start.
        !          1553:        * m88k.md (fixuns_truncdfsi2, fixuns_truncsfsi2): Deleted; now done
        !          1554:        in expand_fix in optabs.c.
        !          1555: 
        !          1556:        * combine.c (expand_field_assignment): Convert SET_SRC to mode of
        !          1557:        INNER.
        !          1558:        (simplify_shift_const, case ASHIFTRT): Don't use undefined initial
        !          1559:        value of MASK.
        !          1560: 
        !          1561:        * explow.c: Include insn-config.h, recog.h, and insn-codes.h.
        !          1562:        (allocate_dynamic_stack_space): Rework to be more precise in required
        !          1563:        alignment.  Must maintain alignment of stack to STACK_BOUNDARY at
        !          1564:        all times (it must not be momentarily misaligned) and must align
        !          1565:        returned address to BIGGEST_ALIGNMENT. 
        !          1566:        * Makefile.in (explow.o): Show new includes.
        !          1567: 
        !          1568: Tue Jun 11 07:22:54 1991  Matthew Self  (mself at next.com)
        !          1569: 
        !          1570:        * m68k.md:  Change incorrect reference to -m68040-fp to -m68040-only.
        !          1571:        Fix several spelling errors.
        !          1572: 
        !          1573:        * m68k.md (fix_trunc*f*i2):  New insn's to replace fintrz on the
        !          1574:        '040.  These emit a sequence of insn's to change the rounding mode
        !          1575:        to round-to-zero, perform the truncation, and restore the rounding
        !          1576:        mode. 
        !          1577: 
        !          1578: Mon Jun 10 09:57:31 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          1579: 
        !          1580:        * c-lang.c (GNU_xref_{begin,end}): Add stub functions for xref info.
        !          1581: 
        !          1582:        * cplus-decl.c (record_builtin_type): Add support for handling
        !          1583:        builtin types' nicknames (e.g. "unsigned long" for "long unsigned
        !          1584:        int").
        !          1585: 
        !          1586:        * expmed.c (struct algorithm): Change array size from BITS_PER_WORD
        !          1587:        to MAX_BITS_PER_WORD.
        !          1588:        gcc.texinfo: Document MAX_BITS_PER_WORD.
        !          1589: 
        !          1590: Mon Jun 10 07:45:17 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1591: 
        !          1592:        * combine.c (try_combine): When making an I1 from an I2 that is
        !          1593:        a PARALLEL, give the new I1 the same INSN_UID as I2.
        !          1594: 
        !          1595:        * recog.c (constrain_operands, case 'p'): Pass operand mode
        !          1596:        (from match_operand) to strict_memory_address_p.
        !          1597: 
        !          1598:        * m68k.md (andsi3): bclr does not set the condition codes in the
        !          1599:        standard way.
        !          1600: 
        !          1601: Sun Jun  9 11:16:24 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1602: 
        !          1603:        * reload.c (find_reloads): Swap preferred_class and pref_or_nothing
        !          1604:        when we swap commutative operands.
        !          1605: 
        !          1606:        * combine.c (subst, simplify_shift_const): Treat UDIV and MULT
        !          1607:        with a second operand of a constant that is a power of two as the
        !          1608:        appropriate shift if it feeds or is fed by a shift.
        !          1609: 
        !          1610:        * expmed.c (expand_divmod): When searching for the best mode to
        !          1611:        perform the computation, take into account the fact that we sometimes
        !          1612:        do a shift, not a divide.
        !          1613: 
        !          1614:        * expmed.c (emit_store_flag): Correctly handle "a = b < 0;" if A
        !          1615:        is narrower than B.
        !          1616:        Don't check for STORE_FLAG_VALUE equal to just the sign bit of
        !          1617:        OP0 if the width of its mode is larger than HOST_BITS_PER_INT.
        !          1618:        Use switch rather than if/elseif/elseif.
        !          1619: 
        !          1620:        * combine.c (simplify_shift_const, shift cases): We were not forming
        !          1621:        the mask correctly when VAROP is a LSHIFTRT and narrower than X;
        !          1622:        simplify the mask formation by using significant_bits and
        !          1623:        simplify_binary_operation.
        !          1624: 
        !          1625:        * reload.c (make_memloc): Copy RTX_UNCHANGING_P from REG to MEM.
        !          1626:        (find_reloads_address, find_reloads_address_1): Don't shortcut
        !          1627:        reloading the address in reg_equiv_address; always call
        !          1628:        find_reloads_address on it.
        !          1629: 
        !          1630:        * recog.c (constrain_operands, case 'p'): Validate address if
        !          1631:        testing strictly.
        !          1632: 
        !          1633:        * out-alliant.c, out-m68k.md (output_move_double): Extraction of
        !          1634:        parts of CONST_INT was backwards; these machines are words-big-endian.
        !          1635: 
        !          1636: Sat Jun  8 12:19:26 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          1637: 
        !          1638:        * sparc.md: Remove special-case shift insns which load and shift
        !          1639:        memory-based operands.  Combine now does this for us.  Also change
        !          1640:        abs patterns so that they consistently print the negation followed
        !          1641:        by the mov on a single line.
        !          1642: 
        !          1643:        * reload1.c (choose_reload_regs): Cast `enum reg_class' values to
        !          1644:        `int' when using them as array indicies.
        !          1645: 
        !          1646:        * gnulib2.c (LONG_TYPE_SIZE): Don't inherit the definition of
        !          1647:        LONG_TYPE_SIZE from tm.h, since that may be target_flag-specific.
        !          1648:        Instead synthesize the value from `sizeof (long)'.
        !          1649: 
        !          1650:        * cplus-gc.c (build_m_desc): Figure out whether the i_desc should
        !          1651:        constitute a defn of its type or not.  Analogous to May 26 change
        !          1652:        for instance variables.
        !          1653: 
        !          1654: Sat Jun  8 07:11:26 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1655: 
        !          1656:        * combine.c (simplify_and_const_int): Detect and remove redundant
        !          1657:        alignment operation.
        !          1658:        (significant_bits, case REG): Realize that the stack pointer might
        !          1659:        be aligned.
        !          1660:        (significant_bits, case PLUS, MUNUS, MULT, DIV, UDIV): Track low-order
        !          1661:        bits of zero as well as high-order zero bits (so we detect alignment
        !          1662:        operations).
        !          1663:        (record_value_for_reg): If updating a register, try to substitute its
        !          1664:        old value into the expression for better tracking of values.
        !          1665: 
        !          1666:        * a29k.md (fmac/dmac): Delete incorrect patterns.
        !          1667: 
        !          1668: Thu Jun  6 19:08:29 1991  Sean Fagan  (sef at cygint.cygnus.com)
        !          1669: 
        !          1670:        * final.c (output_source_line): Say we are on line number 1 if
        !          1671:        sdb_begin_function_line is -1, not 0.
        !          1672: 
        !          1673: Thu Jun  6 08:01:05 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1674: 
        !          1675:        * stor-layout.c (get_best_mode): Don't assume GET_MODE_SIZE (SImode)
        !          1676:        is UNITS_PER_WORD; if SLOW_BYTE_ACCESS defined, try to return the
        !          1677:        mode whose size is UNITS_PER_WORD.
        !          1678: 
        !          1679:        * sparc.md (floatsisf2, floatsidf2): Add missing mode for
        !          1680:        operand 1; use const_int_operand as predicate.
        !          1681: 
        !          1682:        * cse.c (canon_reg): Add arg INSN; if replacing a pseudo with a hard
        !          1683:        register or vice versa, use validate_change to ensure the insn
        !          1684:        remains valid.
        !          1685:        All callers changed; most pass zero since they validate replacement.
        !          1686:        (cse_insn): Use validate_change on result of canon_reg when
        !          1687:        required.
        !          1688: 
        !          1689:        * c-common.c (combine_strings): Use WCHAR_BYTES instead of
        !          1690:        UNIT_PER_WORD for the size of a wide char.
        !          1691: 
        !          1692:        * emit-rtl.c (gen_lowpart_common): Always extract integral modes
        !          1693:        from integer CONST_INTs and CONST_DOUBLEs.
        !          1694: 
        !          1695:        * integrate.c (copy_for_inline, copy_rtx_and_substitute): Don't
        !          1696:        try to extract a float from a fixed-mode CONST_DOUBLE.
        !          1697:        (copy_for_inline, copy_rtx_and_substitute, restore_constants):
        !          1698:        Declare target of REAL_VALUE_FROM_CONST_DOUBLE to be REAL_VALUE_TYPE.
        !          1699: 
        !          1700:        * local-alloc.c (update_equiv_regs): Fix typo in testing
        !          1701:        reg_basic_block.
        !          1702: 
        !          1703: Wed Jun  5 09:15:09 1991  Ken Raeburn  (raeburn at watch.com)
        !          1704: 
        !          1705:        * Eliminate unneeded binding levels when overloading template class
        !          1706:        names:
        !          1707:        * cplus-pt.c (overload_template_name): Accept second argument
        !          1708:        classlevel, indicating that new decl should be pushed into current
        !          1709:        class binding level; otherwise, assume current level is okay to use.
        !          1710:        Callers changed.
        !          1711:        (undo_template_name_overload): New second argument classlevel
        !          1712:        indicates where binding for variable was made.  Callers changed.
        !          1713: 
        !          1714:        * cplus-parse.y (structsp): Call undo_template_name_overload in all
        !          1715:        appropriate cases.
        !          1716: 
        !          1717:        * Get interface/implementation flags set properly on methods in
        !          1718:        class templates, and use it:
        !          1719:        * cplus-lex.c (store_pending_inline): If inside a class, walk up
        !          1720:        through nested classes to top level looking for template parameters.
        !          1721:        For class methods, use current interface flag settings rather than
        !          1722:        flags for class.
        !          1723:        (extract_interface_info): No longer static.
        !          1724:        (do_pending_inlines, process_next_inline): Call
        !          1725:        extract_interface_info to get interface flags set properly after
        !          1726:        changing file names.
        !          1727:        * cplus-pt.c (instantiate_class_template): Ditto.
        !          1728:        (end_template_instantiation): Ditto.
        !          1729:        (do_pending_expansions): If interface/implementation flags of
        !          1730:        containing class are set, use them.
        !          1731:        * cplus-tree.h (interface_unknown): Added declaration.
        !          1732: 
        !          1733: Wed Jun  5 07:36:44 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1734: 
        !          1735:        * reload.c (find_reloads_address): Unshare a MEM if its address is
        !          1736:        the address of a constant pool location.
        !          1737: 
        !          1738:        * optabs.c (expand_binop): Fix typos in multi-word addition; had
        !          1739:        MODE for SUBMODE.
        !          1740: 
        !          1741:        * reload1.c (alter_reg): Correctly delete insn that makes a REG
        !          1742:        equivalent to a MEM in the case where the MEM is the SET_DEST.
        !          1743: 
        !          1744:        * a29k.md (negdf2): Add missing alternative in operands 2.
        !          1745:        (movdi): Change "i" constraint to "n".
        !          1746:        Split for constant integer as input; split cannot fail.
        !          1747:        Correct typo in DEFINE_SPLIT (DFmode for DImode).
        !          1748:        * out-a29k.c (gen_reg_or_integer_constant_operand): New function.
        !          1749: 
        !          1750:        * configure: Fix typo in reference to tm-sun3-nfp.h.
        !          1751: 
        !          1752: Wed Jun  5 06:56:10 1991  Matthew Self  (mself at next.com)
        !          1753: 
        !          1754:        * c-parse.y, objc-parse.y (attrib): Always pass aligned attribute
        !          1755:        through.  Return $1 on failure rather than NULL_TREE for consistency.
        !          1756: 
        !          1757:        * c-common.c (decl_attributes): Warn if requested alignment is not
        !          1758:        a power of two.  Also warn if decl is not a VAR_DECL or a FIELD_DECL,
        !          1759:        since specifying alignment makes no sense for a TYPE_DECL, and is
        !          1760:        not implemented for a FUNCTION_DECL.
        !          1761: 
        !          1762:        * c-parse.y, objc-parse.y (initdcl, notype_initdcl): Call
        !          1763:        decl_attributes before finish_decl in order for alignment attribute
        !          1764:        to take effect.
        !          1765:        
        !          1766:        * varasm.c (assemble_variable): Warn if DECL_ALIGN is greater than
        !          1767:        MAX_OFILE_ALIGNMENT, if defined.  This allows errors to be
        !          1768:        detected with formats like a.out which support a maximum alignment
        !          1769:        of 4.
        !          1770: 
        !          1771:        * c-parse.y, objc-parse.y (component_declarator): Call decl_attributes
        !          1772:        with correct args.
        !          1773: 
        !          1774:        * stor-layout.c (layout_record, layout_union): Do not clamp struct
        !          1775:        alignment at BIGGEST_ALIGNMENT, since individual fields may have
        !          1776:        requested greater alignment than this.  This check shouldn't have
        !          1777:        done anything anyway.
        !          1778: 
        !          1779:        * c-parse.y (unary_expr):  When alignof is applied to an expression,
        !          1780:        call c_alignof_expr so that we can check DECL_ALIGN instead of calling
        !          1781:        c_alignof (TYPE_ALIGN (TREE_TYPE (expr))).
        !          1782: 
        !          1783:        * c-typeck.c (c_alignof_expr):  New function to compute alignof for
        !          1784:        expr's.  Returns DECL_ALIGN for VAR_DECL's and FIELD_DECL's.  Also
        !          1785:        return 1 after reporting error about applying alignof to bitfields.
        !          1786: 
        !          1787:        * c-tree.h (c_alignof_expr): Add declaration.
        !          1788: 
        !          1789:        * varasm.c (assemble_variable):  MAX_OFILE_ALIGNMENT defaults to
        !          1790:        BIGGEST_ALIGNMENT if not defined in config.h.
        !          1791: 
        !          1792: Wed Jun  5 06:55:12 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          1793: 
        !          1794:        * m88k.md (mov*): Change the interface to emit_move_sequence.
        !          1795:        * out-m88k.c (emit_move_sequence): Similar to the sparc version.
        !          1796: 
        !          1797:        * tm-m88k.h (SIZE_TYPE): Specify as unsigned int.
        !          1798: 
        !          1799:        * xm-m88k.h (HOST_BITS_PER_LONGLONG): Define.
        !          1800: 
        !          1801: Wed Jun  5 01:45:07 1991  Sean Fagan  (sef at cygint.cygnus.com)
        !          1802: 
        !          1803:        * sdbout.c (sdbout_symbol):  don't output definition information for
        !          1804:        a nested function inside the parent function; this makes COFF
        !          1805:        assemblers upset.
        !          1806: 
        !          1807: Tue Jun  4 17:35:13 1991  Sean Fagan  (sef at cygint.cygnus.com)
        !          1808: 
        !          1809:        * function.c (trampoline_address): make the RTL_EXPR node temporary,
        !          1810:        not momentary, so that the trampoline_list doesn't become garbage.
        !          1811:        Fix made by jim wilson ([email protected]).
        !          1812: 
        !          1813: Tue Jun  4 09:40:59 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1814: 
        !          1815:        * expr.c (move_block_to_reg): Fix typo in last change.
        !          1816: 
        !          1817:        * local-alloc.c (update_equiv_regs): Check for reg_n_refs == 2,
        !          1818:        not loop_depth * 2.
        !          1819: 
        !          1820:        * reorg.c (fill_simple_delay_slots): Clear INSN_DELETED_P on insns
        !          1821:        placed in current_function_epilogue_delay_list.
        !          1822: 
        !          1823:        * make-rs6000 (ALLOCA_FLAGS, ALLOCA_FINISH): Add override to
        !          1824:        compensate for the fact that the RS/6000 C compiler has no -S.
        !          1825: 
        !          1826:        * out-rs6000.c (easy_fp_constant): Use operand_subword.
        !          1827:        (print_operand): Use INT_P and INT_LOWPART to allow accepting both
        !          1828:        CONST_INT and CONST_DOUBLE for integers.
        !          1829: 
        !          1830:        * rs6000.md (floatsidf2, floatunssidf2): Rework these to emit only
        !          1831:        two insns, each of which has DImode or DFmode operands.  Then
        !          1832:        split the funny DImode insn to generate it.
        !          1833:        (fix_truncdfsi2, fixuns_truncdfsi2): Surround our call with
        !          1834:        REG_LIBCALL/REG_RETVAL notes.
        !          1835:        Use operand_subword.
        !          1836:        (movsf, movdf): Correctly handle a pseudo passed during reload.
        !          1837:        Use operand_subword.
        !          1838:        Split moves involving "easy" FP constants.
        !          1839:        (subtract-and-branch): Disable for now, to avoid output reload in jump.
        !          1840: 
        !          1841:        * tm-rs6000.h (WCHAR_TYPE): Add definition.
        !          1842:        (INT_REGNO_P): Fix typo; register 31 is a normal register.
        !          1843:        (LEGITIMATE_CONSTANT_P): The only FP constants that are valid are
        !          1844:        the "easy" ones.
        !          1845: 
        !          1846:        * a29k.md (negdf2): Use XOR when not involving accumulator.
        !          1847:        Add SCRATCH so we dont use gr122.
        !          1848:        Handle case where input and output are same register.
        !          1849:        (negsf2): Use SCRATCH.
        !          1850:        (DImode operations): Use operand_subword, not gen_{low,high}_part.
        !          1851:        (movsf, movdf, movdi): Always split if we can look inside CONST_DOUBLE.
        !          1852:        Use operand_subword.
        !          1853:        Don't split into separate words in DEFINE_EXPAND.
        !          1854:        * out-a29k.c (in_operand): Account for fact that integer CONST_DOUBLE
        !          1855:        is VOIDmode.
        !          1856:        (extract_subword): Deleted.
        !          1857:        (print_operand): Add macros INT_P and INT_LOWPART so we can accept
        !          1858:        either CONST_INT or CONST_DOUBLE.
        !          1859: 
        !          1860:        * romp.md (movdi, movdf, negsf2, negdf2): Use operand_subword and
        !          1861:        operand_subword_force, instead of gen_{high,low}part.
        !          1862:        Use force_const_mem instead of force_const_double_mem.
        !          1863: 
        !          1864:        * m88k.md (movdi): Remove 'F' constraint; 'n' now includes integer
        !          1865:        CONST_DOUBLE.
        !          1866:        (anddi3, iordi3, xordi3): Likewise.
        !          1867:        Use operand_subword to extract individual words.
        !          1868:        * out-m88k.c (output_load_const_{float,double,dimode}): Use
        !          1869:        operand_subword.
        !          1870: 
        !          1871:        * Makefile.in (emit-rtl.o): Now includes expr.h.
        !          1872:        * calls.c (expand_call): Pass mode to move_block_to_reg.
        !          1873:        * combine.c (subst, case SUBREG): Simplify SUBREG of hard register
        !          1874:        and some SUBREGs of constants.
        !          1875:        (gen_lowpart_for_combine): If object is desired mode, always return it.
        !          1876:        Use gen_lowpart_common for most cases; just support MEM and
        !          1877:        surrounding with a SUBREG here.
        !          1878:        * cse.c (insert): CONSTANT_P includes CONST_DOUBLE.
        !          1879:        (fold_rtx): Use MODE for GET_MODE (X).
        !          1880:        (fold_rtx, case SUBREG): Handle simple cases of folding SUBREGs.
        !          1881:        (fold_rtx, case MEM): Use operand_subword and gen_lowpart_if_possible
        !          1882:        to get parts of constant instead of gen_lowpart and gen_highpart.
        !          1883:        (gen_lowpart_if_possible): Use gen_lowpart_common for most cases.
        !          1884:        * expr.c: Include expr.h.
        !          1885:        (gen_lowpart_common): New function, from gen_lowpart.
        !          1886:        (gen_lowpart): Use gen_lowpart_common for most cases; just handle MEM.
        !          1887:        (gen_highpart): Deleted.
        !          1888:        (subreg_lowpart_p): Test WORDS_BIG_ENDIAN in `if', not `#if'.
        !          1889:        (operand_subword, operand_subword_force): New functions.
        !          1890:        * explow.c (plus_constant): Handle adding CONST_INT to CONST_DOUBLE.
        !          1891:        Rework to use switch statement.
        !          1892:        Remove obsolete OLD_INDEXING code.
        !          1893:        (plus_constant_for_output): Use plus_constant for most cases.
        !          1894:        (break_out_memory_refs): Refine which constants get broken out.
        !          1895:        * expmed.c (store_bit_field, extract_bit_field): Don't use
        !          1896:        gen_highpart for multi-word fields; instead, loop and use
        !          1897:        operand_subword.  We now support fields more than two words long.
        !          1898:        (mask_rtx, lshift_value): Just pass high and low words to
        !          1899:        immed_double_const; it will mask and choose CONST_INT vs. CONST_DOUBLE.
        !          1900:        * expr.c (convert_move): Use operand_subword instead of gen_highpart.
        !          1901:        Don't assume GET_MODE_SIZE (DImode) > UNITS_PER_WORD.
        !          1902:        (move_block_to_reg): Add MODE arg.
        !          1903:        Use operand_subword_force.
        !          1904:        (move_block_from_reg): Use operand_subword.
        !          1905:        (move_block_from_reg, move_block_to_reg, use_rgs):
        !          1906:        Don't assume GET_MODE_SIZE (SImode) == UNITS_PER_WORD.
        !          1907:        (emit_move_insn, emit_push_insn): Likewise.
        !          1908:        Use operand_subword and operand_subword_force.
        !          1909:        (expand_expr, case INTEGER_CST): Just call immed_double_const.
        !          1910:        (expand_expr, cases FIX_TRUNC_EXPR, FLOAT_EXPR): Don't assume
        !          1911:        GET_MODE_SIZE (SImode) == UNITS_PER_WORD.
        !          1912:        (expand_builtin): Likewise.
        !          1913:        (do_jump_by_parts_{greater,equality): Likewise.
        !          1914:        Use operand_subword_force.
        !          1915:        * expr.h (operand_subword): Remove declaration from here.
        !          1916:        (validize_mem): Add missing declaration.
        !          1917:        * final.c (final_scan_insn): If assembler code string is "#",
        !          1918:        try to split insn.
        !          1919:        Ignore insns with INSN_DELETED_P set.
        !          1920:        (alter_subreg): Remove erroneous code for CONST_DOUBLE.
        !          1921:        (output_addr_const): Integer CONST_DOUBLEs are now VOIDmode.
        !          1922:        * fold-const.c (add_double): No longer static.
        !          1923:        * integrate.c (copy_for_inline, copy_rtx_and_substitute):
        !          1924:        Use validize_mem to validate force_const_mem's result.
        !          1925:        (subst_constants, case SUBREG): Use operand_subword and
        !          1926:        gen_lowpart_common instead of gen_lowpart and gen_highpart.
        !          1927:        (restore_constants): Don't assume all CONST_DOUBLEs are floating.
        !          1928:        Use validize_mem to validate force_const_mem's result.
        !          1929:        * optabs.c (expand_binop,, expand_unop): Don't assume
        !          1930:        GET_MODE_SIZE (SImode) == UNITS_PER_WORD.
        !          1931:        Use operand_subword_force.
        !          1932:        (operand_subword): Deleted from here.  New version in emit-rtl.c.
        !          1933:        * recog.c (validate_replace_rtx_1): Check for any constant,
        !          1934:        not just CONST_INT.
        !          1935:        (constrain_operands, case 'm', 'o'): Any constant OK if strict < 0.
        !          1936:        (constrain_operands, case 'E'): Must have host and target word sizes
        !          1937:        the same.
        !          1938:        (constrain_operands, case 's', 'n'): CONST_DOUBLE can be integer.
        !          1939:        * reload.c (find_reloads, case 'm', 'o', 'E', 's', 'n'): Likewise.
        !          1940:        Don't call force_const_double_mem; use force_const_mem instead.
        !          1941:        (find_reloads_toplev): Likewise.
        !          1942:        Use gen_lowpart_common to get low part of constant.
        !          1943:        * rtl.h (gen_highpart, force_const_double_mem): Deleted.
        !          1944:        (gen_lowpart_common, operand_subword, operand_subword_force):
        !          1945:        New declarations.
        !          1946:        * varasm.c (const_double_chain): Renamed from real_constant_chain.
        !          1947:        (immed_double_const): For integer constants, perform any needed
        !          1948:        masking and make either CONST_INT or CONST_DOUBLE.
        !          1949:        (force_const_double_mem): Deleted; would need a mode arg added
        !          1950:        which would make it almost identical to force_const_mem.
        !          1951:        * out-vax.c (split_quadword_operands): Use operand_subword instead
        !          1952:        of gen_lowpart and gen_highpart.
        !          1953: 
        !          1954:        * function.c (find_replacement): New function.
        !          1955:        (fixup_var_refs_insns): Pass pointer to listhead of (new)
        !          1956:        fixup_replacement structures; if any entries were pseudos, copy from
        !          1957:        memory to the pseudo.
        !          1958:        (fixup_var_refs_1): New arg REPLACEMENTS; provide that arg in
        !          1959:        recursive calls.
        !          1960:        Use find_replacements to ensure we don't break any MATCH_DUPs.
        !          1961: 
        !          1962: Tue Jun  4 05:07:53 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          1963: 
        !          1964:        * stmt.c (pushcase, pushcase_range): Take new parameter DUPLICATE.
        !          1965:        Use this to store existing LABEL_DECL if LABEL is a duplicate.
        !          1966:        * c-parse.y, cplus-parse.y, objc-parse.y, stmt.c: All callers
        !          1967:        changed.
        !          1968: 
        !          1969: Mon Jun  3 17:19:40 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          1970: 
        !          1971:        * cplus-expr.c (decl_in_memory_p): New function.
        !          1972:        * cplus-typeck.c (mark_addressable): Test `decl_in_memory_p' instead
        !          1973:        of testing memory_operand, since the DECL_RTL of a decl may be a
        !          1974:        (MEM ...) by not a valid memory address.
        !          1975: 
        !          1976:        * cplus-typeck.c (mark_addressable): When we decide that a static
        !          1977:        const variable must go to memory, make sure that its rtl is
        !          1978:        allocated from the correct obstack.
        !          1979: 
        !          1980:        * cplus-decl.c (grokdeclarator): Replace undocumented BREAK_C_TAGS
        !          1981:        #define control with comments explaining why or how it is correct
        !          1982:        for GNU C++ to break C's notions of what a tag is.
        !          1983: 
        !          1984:        * cplus-call.c (convert_harshness): Replace undocumented #if
        !          1985:        AMBIGUOUS_WORKING control with a comment explaining the actions
        !          1986:        where this control used to be.
        !          1987: 
        !          1988: Mon Jun  3 15:07:47 1991  Sean Eric Fagan  (sef at kithrup)
        !          1989: 
        !          1990:        * tm-i386.h (TRAMPOLINE_TEMPLATE):  Changed a 040 to 0xe0;
        !          1991:        this is the proper code for a jmp [%eax] instruction.
        !          1992: 
        !          1993: Mon Jun  3 08:07:42 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1994: 
        !          1995:        * cccp.c (initialize_builtins): Install __SIZE__TYPE__,
        !          1996:        __PTRDIFF_TYPE__, and __WCHAR__TYPE__ as builtins.
        !          1997: 
        !          1998: Sun Jun  2 18:18:19 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          1999: 
        !          2000:        * flow.c (mark_set_1): Don't set LAST_MEM_SET from a MEM that has any
        !          2001:        side-effects (such as auto-inc), not just volatile MEMs.
        !          2002: 
        !          2003:        * rtlanal.c (reg_referenced_p): New function.
        !          2004:        * combine.c (try_combine): Correct test for added_sets_1 to account
        !          2005:        for case where I1 and I2 both feed I3.
        !          2006:        (distribute_notes): Don't interpret setting a reg as a use of the
        !          2007:        reg; use new reg_referenced_p and simplify code.
        !          2008: 
        !          2009:        * flow.c (propagate_block): Ensure that LOOP_DEPTH is correct at all
        !          2010:        insns in a basic block, otherwise reg_n_refs will be set incorrectly.
        !          2011: 
        !          2012:        * recog.c (validate_replace_rtx_1): Don't change mode of memory
        !          2013:        reference that is mode-dependent.
        !          2014:        Don't make a MEM with a larger mode than original.
        !          2015: 
        !          2016:        * combine.c (try_combine): Disable code to check MODES_TIEABLE_P
        !          2017:        added May 20th and 22nd; this should not be needed now that
        !          2018:        LIMIT_RELOAD_CLASS has been added to reload.
        !          2019: 
        !          2020:        * flow.c (mark_set_1): Allow for the fact that stack pushes don't have
        !          2021:        REG_INC notes.
        !          2022:        * local-alloc.c (optimize_reg_copy): Likewise.
        !          2023:        Don't change lives of hard registers #ifdef SMALL_REGISTER_CLASSES.
        !          2024:        A USE of a register must not be changed.
        !          2025:        (validate_equiv_mem): Don't make an equivalence to volatile MEMs.
        !          2026: 
        !          2027:        * reorg.c (mark_set_resources): #ifdef PUSH_ROUNDING, mark SP as always
        !          2028:        set since the insn might have a (pre_dec sp).
        !          2029: 
        !          2030: Sun Jun  2 16:03:31 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2031: 
        !          2032:        * Makefile.in (libg_dir): Variable deleted.
        !          2033:        (install-gnulib): Don't bother creating libg.a.
        !          2034: 
        !          2035:        * cccp.c (size_type_string, etc.): Variables deleted.
        !          2036:        (special_symbol): Use macros SIZE_TYPE, etc., directly.
        !          2037: 
        !          2038: Sat Jun  1 12:54:05 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2039: 
        !          2040:        * Let tm.h specify types for size_t, ptrdiff_t and wchar_t.
        !          2041:        (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): New params.
        !          2042:        * cccp.c, c-decl.c: Provide default definitions of the new params.
        !          2043:        * cccp.c (__SIZE_TYPE__, __PTRDIFF_TYPE__, __WCHAR_TYPE__): Builtins.
        !          2044:        (special_symbol): Implement them based on new params.
        !          2045:        * stddef.h (size_t, ptrdiff_t, wchar_t): Declare using those builtins.
        !          2046:        * c-tree.h (ptrdiff_type_node): Declare variable.
        !          2047:        * c-decl.c (init_decl_processing): Use *_TYPE params
        !          2048:        to control setting of sizetype, wchar_type_node and ptrdiff_type_node.
        !          2049:        * c-typeck.c (pointer_diff): Take result type from ptrdiff_type_node.
        !          2050: 
        !          2051:        * configure (target1): Really change / to -.
        !          2052: 
        !          2053: Sat Jun  1 02:49:04 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          2054: 
        !          2055:        * cplus-lex.c (extract_interface_info): Now non-static.  Called
        !          2056:        whenever INPUT_FILENAME changes.
        !          2057:        * cplus-pt.c (instantiate_class_template): Call
        !          2058:        `extract_interface_info' when switching files.
        !          2059:        * cplus-input.c (getch): Ditto.
        !          2060: 
        !          2061:        * combine.c (subst): Don't change the mode of memory access for
        !          2062:        volatile memory.
        !          2063: 
        !          2064:        * tm-sparc.h (CONST_COSTS): Fix typo in computing cost of
        !          2065:        CONST_DOUBLE for DImode integers.
        !          2066: 
        !          2067: Fri May 31 16:11:57 1991  Ken Raeburn  (raeburn at watch.com)
        !          2068: 
        !          2069:        * cplus-lex.c (process_next_inline): Set line number and filename if
        !          2070:        more inline data is to be processed.
        !          2071:        (store_pending_inline): Treat FUNCTION_TYPE like METHOD_TYPE.  Use
        !          2072:        current_class_type instead of extracting it from method type; the
        !          2073:        two should be the same, and the latter doesn't work for statics.
        !          2074: 
        !          2075:        * cplus-decl.c (start_decl): When constructing templates, use
        !          2076:        original name of function rather than "mangled" name.  Look for
        !          2077:        FUNCTION_DECL, not FUNCTION_TYPE, when deciding how to push the
        !          2078:        new decl.
        !          2079:        (start_method): Default inlining does not apply to template
        !          2080:        expansions.
        !          2081: 
        !          2082:        * cplus-pt.c (pending_template_expansions): Moved declaration to
        !          2083:        start of file.
        !          2084:        (tsubst): For FUNCTION_DECL, use original name of source, not
        !          2085:        mangled name.
        !          2086:        (instantiate_template): Local variables now non-static.  Fill in
        !          2087:        pending-inline field of new decl, rather than template-info, and
        !          2088:        chain into either pending-inlines or pending-template-expansions.
        !          2089: 
        !          2090:        * cplus-typeck.c (build_x_function_call): If a template is found,
        !          2091:        treat it as an overloaded declaration.
        !          2092: 
        !          2093: Fri May 31 14:20:45 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2094: 
        !          2095:        * Makefile.in (all.cross): New target.
        !          2096:        * configure: If cross-compiling, change `ALL' to use all.cross.
        !          2097: 
        !          2098: Fri May 31 11:43:31 1991  Matthew Self  (mself at next.com)
        !          2099: 
        !          2100:        * tm-next.h (EXTRA_SECTION_FUNCTIONS):
        !          2101:        Add new constructor and destructor sections.
        !          2102:        (MAX_OFILE_ALIGNMENT): Define as 2^15 for Mach-O.
        !          2103:        (ASM_OUTPUT_ALIGN): Use .align, not .even.  Allow alignments > 2.
        !          2104:        (CPP_PREDEFINES): Added -Dm68k since some code expects this.
        !          2105: 
        !          2106: Fri May 31 05:41:51 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          2107: 
        !          2108:        * cplus-class.c (pushclass): New argument value for MODIFY accepted.
        !          2109:        * cplus-decl2.c (build_push_scope): Call `pushclass' with MODIFY == 3.
        !          2110: 
        !          2111:        * cplus-decl.c (finish_function): Set TREE_PUBLIC and TREE_EXTERNAL
        !          2112:        bits on functions according to #pragma interface/implementation,
        !          2113:        regardless of whether or not the function's inline.  This fixes the
        !          2114:        bug of needless code replication with -fno-inline.
        !          2115: 
        !          2116: Thu May 30 17:39:53 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2117: 
        !          2118:        * expr.c (expand_expr):
        !          2119:        Don't lose volatility of fields in COMPONENT_REF.
        !          2120: 
        !          2121: Thu May 30 17:36:45 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          2122: 
        !          2123:        * cse.c (count_reg_usage, delete_dead_from_cse): New functions.
        !          2124:        * toplev.c (rest_of_compilation): Call delete_dead_from_cse immediately
        !          2125:        after the first cse pass.
        !          2126: 
        !          2127:        * local-alloc.c (validate_equiv_mem_from_store, validate_equiv_mem):
        !          2128:        New functions, to find cases where a REG is equivalent to a MEM.
        !          2129:        (optimize_reg_copy): New function.
        !          2130:        (update_equiv_regs): Call these new functions.
        !          2131:        Look for a register used in only one basic block being stored into
        !          2132:        memory.
        !          2133:        Keep track of loop depth so we can find regs used only once, but
        !          2134:        inside a loop.
        !          2135:        * reload1.c (reload): Use single_set when looking for an insn
        !          2136:        that initializes a register.
        !          2137:        If making a REG equivalent to a MEM, the insn with SET_DEST being
        !          2138:        the register isn't always the one making the equivalence, since the
        !          2139:        equivalence might be occurring due to a store into MEM; in that
        !          2140:        case set reg_equiv_init to the latter insn.
        !          2141: 
        !          2142: Thu May 30 14:23:01 1991  Ken Raeburn  (raeburn at watch.com)
        !          2143: 
        !          2144:        * Pending expansions processed at end-of-file can be processed out
        !          2145:        of order, so freeing the associated data from the obstacks is not
        !          2146:        possible.
        !          2147:        * cplus-tree.h (struct pending_inline): New field can_free
        !          2148:        indicates whether to free the text after processing it.
        !          2149:        * cplus-lex.c (do_pending_inline, process_next_inline): If
        !          2150:        can_free flag is set, specify inline-text obstack, otherwise null
        !          2151:        pointer.
        !          2152:        (cons_up_default_function): Clear flag.
        !          2153:        (reinit_parse_for_method): Set it.
        !          2154:        (store_pending_inline): Clear it when changing obstacks.
        !          2155:        (pending_template_obstack): Deleted.  References changed to use
        !          2156:        permanent_obstack.
        !          2157: 
        !          2158:        * cplus-lex.c (store_pending_inline): Set DECL_PENDING_INLINE_INFO
        !          2159:        value after swapping obstacks, not before.
        !          2160: 
        !          2161: Thu May 30 07:23:18 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          2162: 
        !          2163:        * va-sparc.h: Has to be a char * to be compatible with Sun.
        !          2164:        i.e., we have to pass a `va_list' to vsprintf.  Also, fixed
        !          2165:        bug in passing vararg structs.
        !          2166: 
        !          2167: Thu May 30 00:32:18 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2168: 
        !          2169:        * configure: Delete Makefile.tem before writing it.
        !          2170: 
        !          2171:        * stor-layout.c (layout_record):
        !          2172:        Ignore PCC_BITFIELD_TYPE_MATTERS for incomplete type.
        !          2173: 
        !          2174:        * fixincludes (stdtypes.h): Handle wchar_t like the other types.
        !          2175: 
        !          2176:        * function.c (assign_parms): Don't declare args_so_far register.
        !          2177: 
        !          2178: Wed May 29 15:13:05 1991  Ken Raeburn  (raeburn at watch.com)
        !          2179: 
        !          2180:        * cplus-tree.def (TEMPLATE_PARM_IDX): Deleted.
        !          2181:        (TEMPLATE_TYPE_PARM): New node type, looks like a type node.
        !          2182:        (TEMPLATE_CONST_PARM): New node type, looks like a const node.
        !          2183: 
        !          2184:        * cplus-tree.h (IDENTIFIER_TYPE_VALUE_PTR): Inlined under gcc.
        !          2185:        (TYPE_IDENTIFIER_PTR): Ditto.
        !          2186:        (DECL_NESTED_TYPENAME_PTR): Ditto.
        !          2187:        (struct lang_type): New bitfield `use_template'.
        !          2188:        (CLASSTYPE_USE_TEMPLATE): Accessor macro for above.
        !          2189:        (struct lang_decl): New field `template_info'.
        !          2190:        (DECL_TEMPLATE_INFO): Accessor macro for above.
        !          2191:        (TEMPLATE_EXPANSION_NAME_P): Deleted.
        !          2192:        (push_overloaded_decl_top_level): Added declaration.
        !          2193:        (TEMPLATE_TYPE_TPARMLIST, TEMPLATE_TYPE_IDX,
        !          2194:        TEMPLATE_TYPE_SET_INFO, TEMPLATE_CONST_TPARMLIST,
        !          2195:        TEMPLATE_CONST_IDX, TEMPLATE_CONST_SET_INFO): New macros for
        !          2196:        accessing fields of TEMPLATE_..._PARM nodes.
        !          2197:        (struct pending_inline): New fields for names and values to bind
        !          2198:        to them while processing.
        !          2199:        (struct template_info): Definition moved here from cplus-pt.c.
        !          2200:        (instantiate_template): Added declaration.
        !          2201:        (instantiate_class_template): Ditto.
        !          2202:        (processing_template_{decl,defn}): New variable declarations.
        !          2203: 
        !          2204:        * print-tree.c (print_node): Provide missing argument to
        !          2205:        print_node for `bitpos' field.  Display `virtual' flag, and (for
        !          2206:        function and method types) `class' field; these are only used by
        !          2207:        C++ that I'm aware of, but are defined in common code, so they
        !          2208:        should be displayed here.
        !          2209: 
        !          2210:        * cplus-parse.y (template_def): Separate set of derivations, for
        !          2211:        class and function templates.  Template_def is a type of extdef;
        !          2212:        extern_lang_string before template_def is not permitted.
        !          2213:        (fn_tmpl_end): New nonterminal, anything that signals the end of
        !          2214:        the portion of a template that we should parse.
        !          2215:        (yyprint): Define only if YYDEBUG.  Handle TYPESPEC.
        !          2216:        (datadef): Complain at class template override declaration if that
        !          2217:        specialization has already been produced by expansion.  Template
        !          2218:        definitions no longer belong here.
        !          2219:        (tmpl.2): Always call instantiate_class_template; let it decide
        !          2220:        whether or not to go through with it.
        !          2221:        (template_instantiation): Put decl in global scope only if not
        !          2222:        already there.
        !          2223:        (typespec, scoped_typename): Scoped typename inside template type
        !          2224:        should be a scoped_typename, not a typespec.  However, a
        !          2225:        template_type should be allowed as a typespec.
        !          2226:        (structsp): Don't undo template name overload here.  Deleted
        !          2227:        derivation from template_type.
        !          2228:        (named_class_head_sans_basetype): Don't overload template name.
        !          2229:        (LC): Do it here.
        !          2230:        (notype_declarator): For scoped_id derivations, don't call
        !          2231:        build_push_scope if the scoped_id is a SCOPE_REF.
        !          2232:        (scoped_id): Moved old typespec-from-template_type rule here.
        !          2233:        Call resolve_scope_to_name only if template parms aren't involved.
        !          2234: 
        !          2235:        * cplus-pt.c (struct template_info): Definition deleted.
        !          2236:        (templates, current_template_info): Variables deleted.
        !          2237:        (processing_template_{decl,defn}): New variables.
        !          2238:        (push_template_decls, pop_template_decls): Accept parmlist and
        !          2239:        arglist as separate arguments, instead of deriving both from the
        !          2240:        template.  If class_level is non-zero, push and pop a level,
        !          2241:        making it transparent to tags.  Removed some pointless checks from
        !          2242:        pop_template_decls that are only needed in push_template_decls,
        !          2243:        and some assertions from both.  Callers changed.
        !          2244:        (uses_template_parms): Return non-zero iff argument refers to any
        !          2245:        TEMPLATE_*_PARM nodes.
        !          2246:        (tsubst): Walk tree, substituting for template parms, returning
        !          2247:        new tree.
        !          2248:        (type_unification): Rewritten a bit, to make it work.  New
        !          2249:        argument nsubsts is pointer to place to record number of
        !          2250:        substitutions made when matching.
        !          2251:        (unify): Renamed from unify1.  Rewritten completely, to work.
        !          2252:        Still may need extending for some tree node types.
        !          2253:        (do_pending_expansions): At end-of-file, expand any templates not
        !          2254:        yet expanded which were actually needed.  Needs work to accomodate
        !          2255:        latest specs.
        !          2256:        (process_template_parm): Simplified slightly.  Non-type parms
        !          2257:        should be marked read-only; aggregate types are not allowed, since
        !          2258:        equality checks don't work.
        !          2259:        (end_template_parm_list): Moved to after process_template_parm.
        !          2260:        Push a level, and push decls for TEMPLATE_*_PARMs.  Set
        !          2261:        processing_template_decl flag.
        !          2262:        (end_template_decl): For non-class templates, build a
        !          2263:        TEMPLATE_DECL and store the regular decl in its result field.
        !          2264:        Context and other values get copied over too.  Call poplevel to
        !          2265:        get rid of the TEMPLATE_*_PARM decls, and call
        !          2266:        dont_forget_overload to avoid losing the declaration later.  Clear
        !          2267:        processing_template_decl flag.  Call get_pending_sizes, so later
        !          2268:        function compilation doesn't try to evaluate sizes of templates.
        !          2269:        (mangle_class_name_for_template): Convert type/non-type check from
        !          2270:        switch to if test.  Added support for ENUMERAL_TYPE, REAL_TYPE,
        !          2271:        and POINTER_TYPE parms.
        !          2272:        (instantiate_class_template): Renamed from old
        !          2273:        instantiate_template.  Don't expand if type size is set, or if
        !          2274:        being-defined flag is set, or use-template flag is non-zero.  If
        !          2275:        other-template parms are used in the parm list, construct a simple
        !          2276:        RECORD_TYPE node and return it.  Catch case of template declared
        !          2277:        but not defined before use.  Renamed argument from class to
        !          2278:        classname.  Set processing_template_defn flag.
        !          2279:        (instantiate_template): New routine; constructs new decl node
        !          2280:        given TEMPLATE_DECL node and template arg vector.
        !          2281:        (end_template_instantiation):  Set use-template field to 2 ("did
        !          2282:        use template").  Clear processing_template_defn flag.
        !          2283:        (reinit_parse_for_template): Get template-info ptr from decl node.
        !          2284:        Store template parm vector in it.
        !          2285:        (pending_template_expansions): List of templates that may need
        !          2286:        expanding later for function or class data definitions.
        !          2287: 
        !          2288:        * cplus-method.c (build_overload_value): Ensure tree code is
        !          2289:        PARM_DECL.  Handle ENUMERAL_TYPE like INTEGER_TYPE.  For DImode
        !          2290:        values, compare against integer_zero_node instead of constructing
        !          2291:        another one.  Added support for POINTER_TYPEs.  If not
        !          2292:        REAL_IS_NOT_DOUBLE, support real values as well.
        !          2293:        (build_overload_name): Accept TEMPLATE_*_PARM nodes, but generate
        !          2294:        a string that should cause some assembler errors.
        !          2295: 
        !          2296:        * cplus-ptree.c (print_lang_decl): Retrieve template-info from its
        !          2297:        new place.
        !          2298:        (print_lang_type): For TEMPLATE_TYPE_PARM, print its (short) info
        !          2299:        and return.  For RECORD_TYPE, print use-template and interface-*
        !          2300:        fields.
        !          2301: 
        !          2302:        * cplus-search.c (push_class_decls): Don't call
        !          2303:        push_template_decls; the bindings of template parameter names
        !          2304:        should be associated with the template body, not with the class.
        !          2305:        Do overload the template name, however.
        !          2306:        (pop_class_decls): Don't call pop_template_decls.
        !          2307: 
        !          2308:        * cplus-call.c (build_method_call): Changed to recognize
        !          2309:        constructor of template class.
        !          2310:        (build_overload_call): Add in number of template substitutions as
        !          2311:        extra cost of a candidate function.  For template decls, try
        !          2312:        unification and instantiation before evaluating cost of result.
        !          2313:        This too is incorrect in terms of the spec, but it's a starting
        !          2314:        point for later work.
        !          2315: 
        !          2316:        * cplus-class.c (finish_struct): If structure is named, undo
        !          2317:        overload of its name as a template.
        !          2318:        (pushclass): If prev_class_type was a template class, pop it; the
        !          2319:        decls are handled wrong and should be re-entered.
        !          2320: 
        !          2321:        * cplus-decl.c (poplevel): Assert that the current level is not
        !          2322:        global.
        !          2323:        (push_to_top_level): Include global scope when looking for old
        !          2324:        values, because class bindings aren't listed in any other one
        !          2325:        place.
        !          2326:        (push_overloaded_decl_top_level): New function; like
        !          2327:        push_overloaded_decl, but places decl in global binding level.
        !          2328:        (dont_forget_overload): New function; removes decl from list of
        !          2329:        overloads to be forgotten when scope is exited.
        !          2330:        (start_decl): If template parms are used, construct a
        !          2331:        TEMPLATE_DECL node referencing the current decl.  For function
        !          2332:        templates, call push_overloaded_decl; for class template members,
        !          2333:        chain them into the class template definition.
        !          2334:        (grokdeclarator): Don't try determining size of a
        !          2335:        TEMPLATE_CONST_PARM node.  For template class-data decls,
        !          2336:        construct a phony VAR_DECL node and return it.
        !          2337: 
        !          2338:        * cplus-decl2.c (grokfield): For static class data, use
        !          2339:        build_overload_name result, instead of copying class name, since
        !          2340:        the latter could be a human-readable template class name.  (If
        !          2341:        NEW_OVERLOAD_SCHEME is not defined, do this only if the class has
        !          2342:        a template-derived name.)
        !          2343: 
        !          2344:        * cplus-lex.c (pending_template_obstack): New variable; obstack
        !          2345:        for pending-template stuff to be saved to end-of-file.
        !          2346:        (init_lex): Initialize it.
        !          2347:        (default_def): New variable; used for default definition of copy
        !          2348:        constructors and destructors.
        !          2349:        (do_pending_inlines): Figure out whether text is in an obstack,
        !          2350:        and which one, for calling feed_input.  Push template decls if
        !          2351:        needed, as specified in pending_inline data.  Pass current
        !          2352:        pending_inlines pointer back in PRE_PARSED_FUNCTION_DECL instead
        !          2353:        of next.
        !          2354:        (process_next_inline): Ditto.  Pop pending inline data if needed.
        !          2355:        (store_pending_inline): New function.  Decides which obstack to
        !          2356:        store a pending definition on, and which list to chain it into.
        !          2357:        (reinit_parse_for_method): Call it.
        !          2358:        (reinit_parse_for_block): If character passed in is '=', look for
        !          2359:        a semicolon to end the block; don't require a {} block.  Don't pad
        !          2360:        to 8 bytes on USG, since we aren't feeding input via stdio any
        !          2361:        more.  Also, use newlines instead of # directives for advancing
        !          2362:        line number only a few lines.
        !          2363:        (cons_up_default_function): Punt padding for USG stdio, since we
        !          2364:        aren't using it any more.  Use default_def for definition.  Call
        !          2365:        store_pending_inline to save it away.
        !          2366:        (identifier_type): For TEMPLATE_DECL, DECL_RESULT field non-null
        !          2367:        indicates a non-type template, so don't return PTYPENAME.
        !          2368:        (yylex): If end-of-file and input isn't redirected, call
        !          2369:        do_pending_expansions and maybe start yylex over.  Don't check
        !          2370:        TEMPLATE_EXPANSION_NAME_P; a proper name transformation system
        !          2371:        will eliminate conflicts.  Try for SCOPED_TYPENAME with PTYPENAME
        !          2372:        too.
        !          2373: 
        !          2374: Wed May 29 11:48:34 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2375: 
        !          2376:        * cccp.c (do_include): Check that ->control_macro is non-zero.
        !          2377: 
        !          2378:        * gcc.c (process_command): Use `error' in last change.
        !          2379: 
        !          2380: Wed May 29 11:10:12 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          2381: 
        !          2382:        * m88k.md (movdi): Accept CONST_INT.
        !          2383:        * out-m88k.c (output_load_const_dimode): Accept CONST_INT.
        !          2384:        (output_call): Don't use #plt for jsr.
        !          2385: 
        !          2386: Wed May 29 00:51:36 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          2387: 
        !          2388:        * cplus-type2.c (build_functional_cast): Give error if functional
        !          2389:        cast is missing argument.
        !          2390: 
        !          2391:        * cplus-tree.h (interface_unknown): Add a declaration for this
        !          2392:        variable.
        !          2393: 
        !          2394:        * cplus-type2.c (store_init_value): Normally initialized PIC data
        !          2395:        must be laid into the text segment and then copied into the data
        !          2396:        segment.  But cecause of special things we do for ctors and dtors
        !          2397:        (the only things that can reference such things), we can leave
        !          2398:        vtables in initialized data space.
        !          2399: 
        !          2400:        * cplus-decl.c (finish_decl): Use #pragma interface knowledge if
        !          2401:        available for processing initialized variables of type const.
        !          2402: 
        !          2403: Tue May 28 18:39:20 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          2404: 
        !          2405:        * sched.c ({true,anti,output}_dependence): Correct MEM_IN_STRUCT_P
        !          2406:        code; only avoid conflict if MEM_IN_STRUCT_P ref has varying address.
        !          2407: 
        !          2408:        * protoize.c (stat): Remove declaration of stat; it is defined
        !          2409:        differently (no const in arg 1) on some machines.
        !          2410: 
        !          2411:        * combine.c (simplify_shift_const): Avoid infinite loops by quitting
        !          2412:        when COUNT becomes zero; delete now-unnecessary tests on COUNT.
        !          2413: 
        !          2414:        * flow.c (last_mem_set): New variable.
        !          2415:        (propagate_block): Initialize it.
        !          2416:        Show calls can change memory.
        !          2417:        (insn_dead_p): Remove unneeded arg STRICT_LOW_OK; don't treat
        !          2418:        STRICT_LOW_PART differently than ZERO_EXTRACT.
        !          2419:        All callers changed.
        !          2420:        If insn stores into the same, nonvolatile, MEM as recorded in
        !          2421:        last_mem_set, it is dead.
        !          2422:        (mark_set_1): If writing into register mentioned in last_mem_set or
        !          2423:        writing into memory, clear last_mem_set.
        !          2424:        Record last MEM written.
        !          2425:        (find_auto_inc): New function, from mark_used_regs.
        !          2426:        Add support for pre-increment and pre-decrement.
        !          2427:        (mark_used_regs, case MEM): Clear last_mem_set.
        !          2428:        Call find_auto_inc; move code to there.
        !          2429:        (mark_used_regs, case SET): Don't call recursively on MEM if it is
        !          2430:        SET_DEST, instead call find_auto_inc ourselves.
        !          2431: 
        !          2432: Tue May 28 17:29:52 1991  Micheal Tiemann  (tiemann at wookumz.gnu.ai.mit.edu)
        !          2433: 
        !          2434:        * gnulib1.c (__fixsfsi, __cmpsf2, __extendsfdf2): Add declarations
        !          2435:        for intify.
        !          2436: 
        !          2437:        * gcc.c (default_compilers): Accept `.cxx' as a C++ extension.
        !          2438: 
        !          2439: Tue May 28 17:05:28 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          2440: 
        !          2441:        * m88k.md (movstrsi): Pass original MEM expressions.
        !          2442:        * out-m88k.c (expand_block_move, block_move_{sequence,no_loop,loop}):
        !          2443:        Use original MEM expressions to set RTX_UNCHANGING_P, MEM_VOLATILE_P,
        !          2444:        and MEM_IN_STRUCT_P.
        !          2445: 
        !          2446:        * out-m88k.c (emit_bcnd): Use bxx when optimizing so jump_optimize
        !          2447:        will work on more cases.  Change this back when jump_optimize uses
        !          2448:        get_condition to find the values being compared.
        !          2449: 
        !          2450:        * m88k.md: Don't use operand0 or operand1.
        !          2451: 
        !          2452: Tue May 28 16:00:56 1991  Micheal Tiemann  (tiemann at wookumz.gnu.ai.mit.edu)
        !          2453: 
        !          2454:        * emit-rtl.c (try_split): Make sure `after' exists before checking
        !          2455:        to see if it is a BARRIER.
        !          2456: 
        !          2457: Tue May 28 15:08:44 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2458: 
        !          2459:        * gcc.c (process_command): Warn if -x follows last input file.
        !          2460: 
        !          2461:        * cccp.c: Don't include file twice if a #ifndef would make it a no-op.
        !          2462:        (struct file_name_list): New field, control_macro.
        !          2463:        Initialize it where these structures are created.
        !          2464:        (struct if_stack): Likewise.
        !          2465:        (do_include): If file already known, check its control macro if any.
        !          2466:        Don't include the file if the macro is now defined.
        !          2467:        (do_xifdef): Detect case of successful #ifndef at start of file.
        !          2468:        (condition_skip): Accept macro name as new arg.  Record in if_stack.
        !          2469:        (do_endif): Detect being effectively at end of file.
        !          2470:        (record_control_macro): New function.  Called from do_endif.
        !          2471: 
        !          2472:        * calls.c (store_one_arg): Set used after calling push_rounding.
        !          2473: 
        !          2474:        * sparc.md (floating move peepholes): Allow `r' for operand 2.
        !          2475: 
        !          2476:        * arm.md, tm-arm.h, out-arm.c, xm-arm.h: New files.
        !          2477:        * configure (arm): New alternative.
        !          2478: 
        !          2479: Tue May 28 11:53:21 1991  Michael Meissner  (meissner at osf.org)
        !          2480: 
        !          2481:        * tm-decstatn.h (CPP_PREDEFINES): Add Ultrix 4.2 support.
        !          2482: 
        !          2483:        * tm-mips.h (cmp_type, branch_cmp, branch_type): Global variables
        !          2484:        and type to record what type of comparison is being done.
        !          2485:        (mips_print_operand_punct): New array to specify whether a
        !          2486:        character is valid for print_operand as punctuation.
        !          2487:        (set_nomacro, set_noat, set_noreorder): New variables to record
        !          2488:        whether a .set nomacro, .set noat, or .set noreorder has been
        !          2489:        done.
        !          2490:        (dslots_{filled,total}_{load,jump}): New global variables to
        !          2491:        remember how many delay slots exist and are filled for the -mstats
        !          2492:        option.
        !          2493:        (CC1_SPEC): Combine %{O:...} %{O*:...} cases.  For -G32, pass -G
        !          2494:        32.  Add dummy pattern for -save-temps to avoid error message.
        !          2495:        (DBX_DEBUGGING_INFO): Define this all the time.
        !          2496:        (SDB_ALLOW_FORWARD_REFERENCES): Define this for MIPS ECOFF support.
        !          2497:        (SDB_ALLOW_UNKNOWN_REFERENCES): Define this for MIPS ECOFF support.
        !          2498:        (TARGET_SWITCHES): Add -mstats to print interesting statistics.
        !          2499:        Add -mmemcpy to force memcpy to be called.  Add -mdebug[fghij].
        !          2500:        Add -mno- version of switches.
        !          2501:        (DATA_ALIGNMENT): Align all char/short arrays/unions/structures,
        !          2502:        rather than just char arrays.
        !          2503:        (BYTE_LOADS_ZERO_EXTEND): Define this.
        !          2504:        (CONST_OK_FOR_LETTER_P): 'N' returns true if power of 2.
        !          2505:        (EXTRA_CONSTRAINT): Redefine 'Q' to be 1 word memory references,
        !          2506:        'R' to be multiword memory references.
        !          2507:        (struct frame_info): Add initialized field.
        !          2508:        (current_frame_info): New global structure to hold frame info.
        !          2509:        (INITIAL_FRAME_POINTER_OFFSET): Use current_frame_info.
        !          2510:        (INIT_CUMULATIVE_ARGS): Pass LIBNAME to init_cumulative_args.
        !          2511:        (DELAY_SLOTS_FOR_EPILOGUE): Define this to fill j $r31 delay slot.
        !          2512:        (ELIGIBLE_FOR_EPILOGUE_DELAY): Ditto.
        !          2513:        (ENCODE_SEGMENT_INFO): Don't flag references to 0-sized arrays as
        !          2514:        being in the small data segment.
        !          2515:        (CONST_COSTS): Reword to be more accurate.
        !          2516:        (RTX_COSTS): Define this.
        !          2517:        (ADDRESS_COST): Define this.
        !          2518:        (CLASS_CMP_OP, CLASS_EQUALITY_OP, CLASS_UNS_CMP_OP): New bits for
        !          2519:        rtx_classify to classify various comparison operators.
        !          2520:        (FINAL_PRESCAN_INSN): Define this to collect info for -mstats.
        !          2521:        (NOTICE_UPDATE_CC): Only do CC_STATUS_INIT if the insn is a
        !          2522:        comparison.
        !          2523:        (EXTRA_CC_MODES): Define new modes CC_EQmode, CC_FPmode, CC_0mode.
        !          2524:        (EXTRA_CC_NAMES): Define this.
        !          2525:        (SELECT_CC_MODE): Define this.
        !          2526:        (PRINT_OPERAND_PUNCT_VALID_P): Redefine this to index into
        !          2527:        mips_print_operand_punct.
        !          2528:        (DBR_OUTPUT_SEQEND): Reset .set reorder, .set macro as appropriate.
        !          2529: 
        !          2530:        * out-mips.c (branch_cmp, branch_type): New Global variables
        !          2531:        and type to record what type of comparison is being done.
        !          2532:        (mips_print_operand_punct): New array to specify whether a
        !          2533:        character is valid for print_operand as punctuation.
        !          2534:        (set_nomacro, set_noat, set_noreorder): New variables to record
        !          2535:        whether a .set nomacro, .set noat, or .set noreorder has been
        !          2536:        done.
        !          2537:        (dslots_{filled,total}_{load,jump}): New global variables to
        !          2538:        remember how many delay slots exist and are filled for the -mstats
        !          2539:        option.
        !          2540:        (reg_or_0_operand): Rewrite to add support for CONST_DOUBLE.
        !          2541:        (mips_const_double_ok): Allow normal FP constants (not Infinity,
        !          2542:        Nan, etc) to be used as operands when using the MIPS assembler.
        !          2543:        (simple_memory_operand): Combine GP memory references from
        !          2544:        gp_memory_operand.  Delete gp_memory_operand.
        !          2545:        (equality_op): Return true if EQ or NE.
        !          2546:        (cmp_op): Return true if comparison operator.
        !          2547:        (uns_cmp_op): Return true if unsigned comparison.
        !          2548:        (mips_move_1word): New name for mips_move_instructions.  Also, loads
        !          2549:        of HImode/QImode use unsigned loads, rather than signed loads, so
        !          2550:        that BYTE_LOADS_ZERO_EXTEND can be defined.  Use %z to get name of
        !          2551:        $0, instead of hardwiring it.  Explicitly use lui where appropriate.
        !          2552:        (mips_move_2words): New name for mips_move_2words_instructions.  Use
        !          2553:        %z to get name of $0, instead of hardwiring it.
        !          2554:        (mips_address_cost): New function to define ADDRESS_COST macro.
        !          2555:        (gen_conditional_branch): New function to generate all of the tests
        !          2556:        and branches.
        !          2557:        (block_move_sequence): New function to generate straight line code
        !          2558:        for block moves.
        !          2559:        (block_move_call): New function to set up a call to memcpy/bcopy as
        !          2560:        appropriate for block moves.
        !          2561:        (expand_block_move): New function which is called from the movstrsi
        !          2562:        define_expand, to set up block moves.  At present, unless -mmemcpy
        !          2563:        is used, moves of less than 32 bytes, get straight line code, all
        !          2564:        others get a call.
        !          2565:        (init_cumulative_args): Take libname as third argument.
        !          2566:        (function_arg_partial_nregs): Fix bug, to not return a negative
        !          2567:        number when passing small structs in registers.
        !          2568:        (compare_collect, compare_restore): Remove these functions, since
        !          2569:        they are no longer called.
        !          2570:        (override_options): Initialize mips_rtx_classify for all of the
        !          2571:        comparison operator bits.  Initialize mips_print_operand_punct to
        !          2572:        return TRUE for each of the valid punctuation characters used in
        !          2573:        print_operand.
        !          2574:        (print_operand): %X now prints 32 bit ints in hex format.  %z now
        !          2575:        prints $0 if the operand is the constant integer 0.  %(, %) now turn
        !          2576:        on/off both .set noreorder/.set nomacro.  %<, %> turns on/off .set
        !          2577:        nomacro.  %* turns on both .set noreorder and .set nomacro if
        !          2578:        filling delay slots.  %! turns on .set nomacro if filling delay
        !          2579:        slots.
        !          2580:        (compute_frame_size, save_restore, function_prologue,
        !          2581:        function_epilogue): Change the calling sequence of
        !          2582:        compute_frame_size to save everything in a global structure, which
        !          2583:        has an initialized field to indicate that compute_frame_size needs
        !          2584:        to be called.
        !          2585:        (function_prologue): INIT_CUMULATIVE_ARGS now takes 3 args.
        !          2586:        (function_epilogue): If current_function_epilogue_delay_list is
        !          2587:        non-null, use that to fill the final delay slot.  Also, make sure
        !          2588:        the various asm .set's are reset properly.  Write interesting
        !          2589:        statistics out to stderr if -mstats.
        !          2590:        (mips_epilogue_delay_slots): New function to return # of delay slots
        !          2591:        the epilogue needs.
        !          2592:        (null_epilogue):  Return true if the function has a null epilogue,
        !          2593:        which allows the optimizer to omit jumps to the final j $31 if no
        !          2594:        stack was created.
        !          2595: 
        !          2596:        * mips.md (type attribute): Redo how the type attributes work, and
        !          2597:        change some names.
        !          2598:        (mode attribute): New attribute to describe the insn's result mode.
        !          2599:        (length attribute): New attribute to give insn length in words.
        !          2600:        (dslot attribute): New attribute to return whether an insn needs a
        !          2601:        delay slot.
        !          2602:        (define_delay): Use dslot and length attributes to determine if a
        !          2603:        delay slot is needed.
        !          2604:        (define_function_unit): Define all of the function units now.
        !          2605:        (all patterns): Provide new attribute definitions.
        !          2606:        (all memory reference patterns): modify alternatives to use 'Q' for
        !          2607:        1 word instructions, 'R' for multiword instructions.
        !          2608:        (unnamed patterns): Provide names for all patterns, so that -dp will
        !          2609:        pinpoint exactly which pattern is used.
        !          2610:        (*divsi3, *divmodsi4, *modsi3): If optimizing and not -mdebugc, use
        !          2611:        the *divmodsi4 patterns, so that the opimizer will only use 1 divide
        !          2612:        if doing a = b / c; d = b % c;  This replaces the peepholes, which
        !          2613:        previously were used for this.  If not optimizing, use the normal
        !          2614:        div/mod patterns.
        !          2615:        (zero_extendqihi2, extendqihi2): Allow zero/sign extending from
        !          2616:        memory.
        !          2617:        (fixuns_trunc{df,sf}si2): Use generator patterns to generate
        !          2618:        appropriate branches.
        !          2619:        (movsi_ulw, movsi_usw): New patterns to generate the appropriate
        !          2620:        unaligned load/store for use in the block move expansion.
        !          2621:        (mov*): Provide all possible combinations of moves.
        !          2622:        (movstrsi): New pattern to generate block moves.
        !          2623:        (negsi2): Change to a define_expand, which uses minus.
        !          2624:        (one_cmpsli2): Change to a define_expand, which use the nor pattern.
        !          2625:        (cmp*, b*): Redo comparison/branch completely to save things in
        !          2626:        global variables, call the common C code to expand the branch, and
        !          2627:        provide match_operators to do the actual branch.
        !          2628:        (s*): Provide for the ability to set a register with an integer
        !          2629:        comparison, without using a branch.
        !          2630: 
        !          2631:        * make-decrose (AUX_OUTPUT2): Delete macro, since aux-output.c is
        !          2632:        always compiled separately now.
        !          2633:        (LANGUAGES): Suppress G++, Objc temporarily.
        !          2634:        (cse.o): Rebuild cse if the config files change, to get new cost
        !          2635:        functions, no longer rebuild calls/function since the FUNCTION_ARG
        !          2636:        macros just call functions in out-mips.c.
        !          2637:        (SRCS): Change $(AUX_OUTPUT2_SRC) to aux-output.c.
        !          2638: 
        !          2639:        * make-mips (AUX_OUTPUT2): Delete macro, since aux-output.c is
        !          2640:        always compiler separately now.
        !          2641:        (CONFIG2_H): Add rules to rebuild selected modules when the
        !          2642:        tm-mips.h file changes.
        !          2643:        (mips-tfile): Rules to build mips-tfile.
        !          2644:        (mips-tdump): Rules to build mips-tdump.
        !          2645:        (LANGUAGES): Suppress G++, Objc temporarily, build mips-tfile.
        !          2646: 
        !          2647:        * mips-tfile.c (whole file): New file to put the MIPS specific debug
        !          2648:        information into the object file, after the assembler has been run.
        !          2649:        This is needed because the MIPS assembler provides no method of
        !          2650:        setting up the debug information for local variables.  This is
        !          2651:        enabled by the make-mips Makefile modifier.
        !          2652: 
        !          2653:        * mips-tdump.c (whole file): New file to dump the contents of the
        !          2654:        MIPS ECOFF symbol table in a symbolic format.  This is not currently
        !          2655:        built by default, but make-mips contains rules to build it.
        !          2656: 
        !          2657:        * tm-decrose.h (MD_EXEC_PREFIX): Change to use the test prefix
        !          2658:        /usr/ccs/gcc-2.00/gcc- instead of the release prefix /usr/ccs/gcc.
        !          2659:        (WCHAR_TYPE_SIZE): Define as 16.
        !          2660:        (WCHAR_UNSIGNED): Define as 1.
        !          2661:        (DBX_DEBUGGING_INFO): Define moved to tm-mips.h.
        !          2662: 
        !          2663: 
        !          2664: Tue May 28 06:26:44 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          2665: 
        !          2666:        * expmed.c (store_bit_field, extract_bit_field): If -fforce-mem
        !          2667:        specified, copy OP0 into register (and back again, for store).
        !          2668: 
        !          2669:        * sched.c (memrefs_conflict_p, {true,anti,output}_dependence): Add
        !          2670:        missing parens.
        !          2671: 
        !          2672:        * reload.c (find_reloads): Turn usage of reg_preferred_class back on
        !          2673:        now that the code has been refined.
        !          2674: 
        !          2675: Mon May 27 12:41:14 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2676: 
        !          2677:        * c-typeck.c (build_binary_op_nodefault): Set converted for shifts,
        !          2678:        so op1 is not converted to the result type.
        !          2679:        Clean up some warning messages.
        !          2680: 
        !          2681:        * expr.c (expand_expr): Use temp stack slot for BLKmode SAVE_EXPR.
        !          2682: 
        !          2683:        * Makefile.in (alloca.o): Use new vars ALLOCA_FLAGS and ALLOCA_FINISH.
        !          2684: 
        !          2685: Mon May 27 05:42:20 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          2686: 
        !          2687:        * sched.c ({read,true,anti,output}_dependence): Remove unused arg INSN.
        !          2688:        All callers changed.
        !          2689: 
        !          2690:        * combine.c (subst, case PLUS): Fix typo in (plus (plus X C) Y) case.
        !          2691:        (subst, case MULT): Distribute MULT over PLUS to try to simplify it.
        !          2692: 
        !          2693: Mon May 27 05:15:16 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          2694: 
        !          2695:        * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't accept a SYMBOL_REF
        !          2696:        sum if FLAG_PIC is not 1.  This forces the -fPIC to take effect,
        !          2697:        even when the optimizer knows how to stitch together HIGH and LO_SUM
        !          2698:        combinations.
        !          2699:        (PRINT_OPERAND): Move body to out-sparc.c.
        !          2700:        * out-sparc.c (print_operand): New function, implementing actions of
        !          2701:        old PRINT_OPERAND macro.  Comments written for all cases.
        !          2702:        (reg_unused_after): Don't do anything special with JUMP_INSNs.  Only
        !          2703:        do something special with CALL_INSN if REGNO is a call-used reg.
        !          2704: 
        !          2705:        * cplus-type2.c (store_init_value): Back out 23 Feb change, which
        !          2706:        was completely backward.
        !          2707: 
        !          2708:        * dbxout.c, cplus-dbxout.c (dbxout_parms): Also test that TREE_TYPE
        !          2709:        (PARMS) is not ERROR_MARK_NODE.
        !          2710: 
        !          2711:        * cplus-init.c (build_up_reference): Check FLAGS parameter to see if
        !          2712:        we can accept building a reference to a constructor-generated
        !          2713:        temporary.
        !          2714:        (various places): Change calls to `build_up_reference' that used to
        !          2715:        use an explicit `1' to use LOOKUP_PROTECT instead.
        !          2716:        (build_offset_ref): Use IDENTIFIER_TYPE_VALUE macro to the the type
        !          2717:        associated with CNAME.
        !          2718: 
        !          2719:        * cplus-class.c (build_vbase_path): Fix 11 May change by only
        !          2720:        changing TREE_TYPE (EXPR) if NULL_EXPR.  We might build different
        !          2721:        vbase paths for the same expr in multiple inheritance
        !          2722:        initialization.
        !          2723: 
        !          2724:        * Makefile.in: Change sed script so it matches '^# ' instead of just
        !          2725:        '^#'.  This allows processing of md files with #if/#endif controls
        !          2726:        in their C function bodies.
        !          2727: 
        !          2728:        * cplus-tree.c (build_cplus_new): Set TREE_SIDE_EFFECTS on RVAL.
        !          2729: 
        !          2730:        * stmt.c (warn_if_unused_value): Don't warn about EXIT_EXPRs.
        !          2731:        (expand_decl_cleanup): Add missing type declarations for parameters.
        !          2732: 
        !          2733:        * cplus-call.c, cplus-class.c, cplus-dbxout.c, cplus-edsel.c: Include
        !          2734:        stdio.h after cplus-tree.h since the latter references printf.
        !          2735:        * cplus-search.c, cplus-xref.c: Likewise.
        !          2736:        * cplus-class.c (prev_class_type): Not static; defined in cplus-tree.h.
        !          2737:        * cplus-decl.c (builtin_function, auto_function): Don't put & in
        !          2738:        front of function name.
        !          2739:        * cplus-typeck.c (comptypes,comp_target_types): Likewise.
        !          2740:        * cplus-search.c (report_ambiguous_mi_virtuals): Likewise, for arrays.
        !          2741: 
        !          2742: Sun May 26 22:47:35 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          2743: 
        !          2744:        * cplus-decl.c (make_temporary_for_reference): New function.  Split
        !          2745:        out code from `grok_reference_init' so we could call it in two
        !          2746:        places: where it was called before, and when initializing a
        !          2747:        reference through a constructor for a temporary.
        !          2748:        (grokdeclarator): Give error message instead of aborting if user
        !          2749:        gave method qualifiers for function decl.
        !          2750:        (start_function): Switch to temporary obstack before computing
        !          2751:        destructor and constructor labels, and before building the
        !          2752:        function's RESULT_DECL.
        !          2753: 
        !          2754:        * cplus-decl.c (store_parm_decls): Make a cleanup that controls the
        !          2755:        action of the garbage collector.  This ensures that the call to
        !          2756:        __gc_pop doesn't get skipped in the function issues a return stmt.
        !          2757:        * cplus-gc.c (expand_gc_prologue_and_epilogue): Work with new
        !          2758:        cleanup model.
        !          2759: 
        !          2760:        * cplus-gc.c (build_i_desc): Figure out whether the i_desc should
        !          2761:        constitute a defn of its type or not.
        !          2762: 
        !          2763:        * cplus-typeck.c (c_expand_return): Look through TARGET_EXPR as well
        !          2764:        as NEW_EXPR for returning addresses of local variables.
        !          2765: 
        !          2766:        * reload.c (find_reloads): Intialized `goal_alternative_swapped'
        !          2767:        where `swapped' is initialized to zero.
        !          2768: 
        !          2769: Sun May 26 21:29:26 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2770: 
        !          2771:        * recog.c (const_double_operand): Fix typo.
        !          2772:        * reload1.c (choose_reload_regs): Fix typo--swap #endif with }.
        !          2773: 
        !          2774:        * loop.c (init_loop): Multiply copy_cost by 2.
        !          2775:        (general_induction_var): Use rtx_cost directly.
        !          2776:        (expr_benefit): Function deleted.
        !          2777: 
        !          2778:        * m68k.md (andsi3): Generate bclr if appropriate.
        !          2779: 
        !          2780:        * cccp.c (do_undef): Just a warning, if deleting something unusual.
        !          2781: 
        !          2782: Sun May 26 18:51:33 1991  Jim Wilson  (wilson at sphagnum.cygnus.com)
        !          2783: 
        !          2784:        * expr.c (force_operand): When calling recursively, use
        !          2785:        a temporary to force evaluation of calls.  The C language
        !          2786:        allows `f (g (x), g (y))' to be evaluated in different orders
        !          2787:        on different hosts, which could lead to different code
        !          2788:        generation for different hosts.
        !          2789: 
        !          2790:        * recog.c (const_double_operand): New function for recognizing
        !          2791:        CONST_DOUBLE rtx's.
        !          2792: 
        !          2793:        * expmed.c (expand_mult_add): Add new parameter TARGET which is a
        !          2794:        suggestion of where to store the result; pass it to expand_expr.
        !          2795:        * loop.c (emit_iv_add_mult): Pass REG to expand_mult_add call as
        !          2796:        target for the result.
        !          2797: 
        !          2798:        * gmicro.md, old-sparc.md, pyr.md: Delete obsolete UMULT patterns.
        !          2799: 
        !          2800:        * expmed.c (expand_mult): Convert DImode constants to a CONST_INT
        !          2801:        if possible, so that multiplies by these can be optimized by the
        !          2802:        existing code.
        !          2803: 
        !          2804: Sun May 26 00:59:42 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2805: 
        !          2806:        * gcc.c (process_command): -save-temps is always valid.
        !          2807: 
        !          2808:        * varasm.c (output_constructor): Don't crash if val == 0.
        !          2809: 
        !          2810:        * cse.c (refers_to_mem_p): Handle constant addresses.
        !          2811: 
        !          2812:        * cccp.c (main): Don't store thru last_include if null.
        !          2813: 
        !          2814: Sat May 25 06:33:19 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          2815: 
        !          2816:        * reload.c (find_reloads): Don't assume we have at least two operands
        !          2817:        when we check for a simple copy.
        !          2818: 
        !          2819:        * sched.c (update_reg_known_value): Deleted.
        !          2820:        (init_alias_analysis): If have REG_EQUIV note, can always use NOTE's
        !          2821:        value irrespective of number of sets.
        !          2822:        Take known value from note, not SET_SRC.
        !          2823:        (memrefs_conflict_p): Remove gotos.
        !          2824:        ASHIFT can't occur in an address.
        !          2825:        (true_dependence, anti_dependence, output_dependence): Take into
        !          2826:        account the fact that a MEM_IN_STRUCT_P reference cannot conflict
        !          2827:        with a non-MEM_IN_STRUCT_P reference at a fixed address.
        !          2828: 
        !          2829: Fri May 24 11:34:39 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2830: 
        !          2831:        * Makefile.in (cplus-tab.c): Put back -d option.
        !          2832: 
        !          2833: Fri May 24 06:46:07 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          2834: 
        !          2835:        * rtl.c (rtx_alloc): Ensure we keep the obstack aligned.
        !          2836: 
        !          2837: Fri May 24 00:17:13 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2838: 
        !          2839:        * reload1.c (choose_reload_regs): Try with inheritance, then without.
        !          2840:        #if 0 the code to avoid inheritance in certain cases.
        !          2841: 
        !          2842: Fri May 24 00:13:40 1991  James Van Artsdalen  (james at bigtex.cactus.org)
        !          2843: 
        !          2844:        * out-i386.c (split_di): Check for CONST_DOUBLE before CONSTANT_P.
        !          2845: 
        !          2846:        * tm-i386.h (LIMIT_RELOAD_CLASS): new macro.
        !          2847:        (PREFERRED_RELOAD_CLASS): a CONST_DOUBLE can appear in narrower
        !          2848:        classes than GENERAL_REGS.
        !          2849: 
        !          2850:        * reload.c (push_reload): Limit reload class even if the SUBREG has
        !          2851:        already been stripped.
        !          2852: 
        !          2853: Thu May 23 11:08:21 1991  Jim Wilson  (wilson at sphagnum.cygnus.com)
        !          2854: 
        !          2855:        * sched.c (schedule_insns): Don't schedule a block if the only insn is
        !          2856:        a CODE_LABEL.
        !          2857: 
        !          2858: Thu May 23 07:54:57 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          2859: 
        !          2860:        * reload1.c (choose_reload_regs): Process reload in first pass if
        !          2861:        a subsequent reload requires fewer registers.
        !          2862:        Change criteria for processing from being a strict superset to 
        !          2863:        having an intersecting, non-equal class.
        !          2864:        Ignore optional and turned-off reloads in loop to see what is forced
        !          2865:        to be allocated in first pass.
        !          2866: 
        !          2867:        * toplev.c (compile_file): Fix typo in length of string to allocate
        !          2868:        for sched2 dump's name.
        !          2869: 
        !          2870:        * jump.c (find_cross_jump): Don't crash if single_set returns 0.
        !          2871: 
        !          2872:        * recog.c (general_operand): A SUBREG of a constant is never valid.
        !          2873: 
        !          2874:        * local-alloc.c (qty_compare, qty_compare_1): Make priority function
        !          2875:        the same as in global-alloc: quantities with shorter lives are
        !          2876:        allocated first.  This can speed up some code by a factor of three.
        !          2877: 
        !          2878: Wed May 22 17:40:49 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          2879: 
        !          2880:        * reload1.c (emit_reload_insns): Fix some minor bugs in making
        !          2881:        REG_DEAD notes and recording insn that does store; code sometimes
        !          2882:        assumed that each call to gen_move_insn produced at most one insn.
        !          2883: 
        !          2884: Wed May 22 16:51:53 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2885: 
        !          2886:        * reload.c (push_reload): Support LIMIT_RELOAD_CLASS.
        !          2887: 
        !          2888: Wed May 22 14:14:51 1991  Micheal Tiemann  (tiemann at wookumz.gnu.ai.mit.edu)
        !          2889: 
        !          2890:        * jump.c (jump_optimize): Update the three simplifications that
        !          2891:        start with the "if (...) x = 1;" case.  Add comments explaining how
        !          2892:        to make them more machine independent, and comments explaining how
        !          2893:        they might fail in the future.  Ifdef out the second case, and add
        !          2894:        code explaining why it does not work.
        !          2895: 
        !          2896:        * rtl.h: Put definition of FUNCTION_FLAGS_USES_CONST_POOL here.
        !          2897:        * integrate.c: Remove definition of it here.
        !          2898: 
        !          2899:        * integrate.h: New fields in struct inline_remap, min_insnno and
        !          2900:        max_insnno, which indicate the range of insns covered by insn_map.
        !          2901:        * integrate.c (expand_inline_function): Set min_insnno and max_insnno.
        !          2902: 
        !          2903: Wed May 22 12:31:53 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2904: 
        !          2905:        * tm-vaxv.h (ASM_OUTPUT_LOCAL): Use data_section.
        !          2906: 
        !          2907:        * protoize.c (fancy_abort): Define it.
        !          2908:        * objc-parse.y (yyprint, set_yydebug): New functions.
        !          2909: 
        !          2910:        * tree.h (gettags, get_permanent_types, get_temporary_types):
        !          2911:        Declare them.
        !          2912: 
        !          2913:        * Makefile.in (protoize.o, unprotoize.o):
        !          2914:        Use the standard flags and include dirs.  Don't use -Wall.
        !          2915:        * protoize.c (abort): Declaration deleted.
        !          2916: 
        !          2917:        * cccp.c (main): Ensure `next' field in directory list is initialized.
        !          2918: 
        !          2919: Wed May 22 09:27:49 1991  James Van Artsdalen  (james at bigtex.cactus.org)
        !          2920: 
        !          2921:        * expmed.c (synth_mult): Return cost of -1 if shift is too
        !          2922:        expensive.
        !          2923: 
        !          2924: Wed May 22 07:53:52 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          2925: 
        !          2926:        * out-sparc.c (output_move_double): More SImode->Pmode fixes.
        !          2927: 
        !          2928: Wed May 22 02:43:02 1991  Micheal Tiemann  (tiemann at wookumz.gnu.ai.mit.edu)
        !          2929: 
        !          2930:        * Makefile.in, emit-rtl.c, explow.c, final.c, global-alloc.c,
        !          2931:        gnulib2.c, hard-reg-set.h, regclass.c, reload1.c, cccp.c: Fix typos
        !          2932:        and indentation.
        !          2933: 
        !          2934: Wed May 22 00:14:37 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2935: 
        !          2936:        * combine.c (try_combine): Add to last change; handle subreg
        !          2937:        in src as well as in dest of i3.
        !          2938: 
        !          2939: Tue May 21 22:32:08 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          2940: 
        !          2941:        * m68k.md (dbra): Rewrite pattern so it reflects simplifications that
        !          2942:        combine will make.
        !          2943: 
        !          2944: Tue May 21 10:44:05 1991  Jim Wilson  (wilson at sphagnum.cygnus.com)
        !          2945: 
        !          2946:        * loop.c (strength_reduce): When a loop-vtop note is encountered,
        !          2947:        reset `not_every_iteration'.
        !          2948: 
        !          2949: Tue May 21 00:17:31 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2950: 
        !          2951:        * c-decl.c (init_decl_processing): Always use long type for size_t.
        !          2952: 
        !          2953:        * varasm.c (assemble_variable): Use ASM_DECLARE_OBJECT_NAME.
        !          2954: 
        !          2955:        * protoize.c: Include config.h.
        !          2956:        (chmod, kill): Declarations deleted.
        !          2957:        They aren't needed, and can conflict with system headers.
        !          2958:        (wait): BSD declaration deleted.
        !          2959:        (save_def_or_dec): Add missing fprintf arg.
        !          2960: 
        !          2961:        * tm-next.h (EXTRA_FORMAT_FUNCTIONS): Fix typo.
        !          2962: 
        !          2963:        * protoize.c: Use USG and VMS as most files do.
        !          2964:        Don't expect BSD to be necessary defined outside this file.
        !          2965:        Define getwd using getcwd, not vice-versa, to be like dbxout.c.
        !          2966:        * cccp.c, SYSCALLS.c: Use USG and VMS as most files do.
        !          2967:        Don't expect BSD to be necessary defined outside this file.
        !          2968: 
        !          2969: Mon May 20 16:54:17 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          2970: 
        !          2971:        * tm-i386.h, tm-att386.h, tm-bsd386.h, tm-sun386.h (ASM_BYTE_OP):
        !          2972:        Renamed from ASM_BYTE.
        !          2973:        * varasm.c (ASM_BYTE_OP): Likewise.
        !          2974: 
        !          2975:        * c-decl.c, cplus-class.c (finish_struct): Typo:
        !          2976:        Had PCC_BIT_FIELD_MATTERS which is now PCC_BITFIELD_TYPE_MATTERS.
        !          2977: 
        !          2978:        * gcc.c (handle_braces): Don't deref input_suffix if null.
        !          2979: 
        !          2980: Mon May 20 15:19:27 1991  Michael I Bushnell  (mib at geech.gnu.ai.mit.edu)
        !          2981: 
        !          2982:        * cccp.c (pcfinclude): STRINGDEF struct is now longword aligned.
        !          2983: 
        !          2984: Mon May 20 14:26:18 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          2985: 
        !          2986:        * sparc.md: Remove all arithmetic, logical, and shift patterns for
        !          2987:        sub-SImode operands.  Also fix some DImode patterns.
        !          2988: 
        !          2989:        * out-sparc.c (emit_move_sequence): Simplified considerably.
        !          2990: 
        !          2991:        * rtl.c (rtx_alloc): Inline-code an optimized obstack_alloc.
        !          2992: 
        !          2993:        * cplus-lex.c (make_{pointer,reference}_declaration): Call
        !          2994:        `build_parse_node' instead of `build1' so memory can be freed.
        !          2995: 
        !          2996:        * cplus-parse.y: Remove unneeded epsilon rules to produce an average
        !          2997:        15% reduction in the number of reductions performed.
        !          2998: 
        !          2999:        * cplus-parse.y (RETURN_INIT): Use new interface to speed up
        !          3000:        grammar.
        !          3001:        * cplus-decl.c (store_return_init): Use new interface.
        !          3002: 
        !          3003: Mon May 20 11:16:34 1991  Jim Wilson  (wilson at sphagnum.cygnus.com)
        !          3004: 
        !          3005:        * sched.c (schedule_block): A register which dies in a CALL_INSN
        !          3006:        does not cross calls.  A single insn block must be scheduled, to
        !          3007:        ensure that register lifetime info is corrected updated.
        !          3008: 
        !          3009: Mon May 20 06:50:37 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          3010: 
        !          3011:        * combine.c (try_combine): Don't combine when I1 and I2 both feed
        !          3012:        into I3 and I1 uses the register set in I2.
        !          3013: 
        !          3014:        * reload.c (find_reloads): Prefer pseudos over other things we may
        !          3015:        reload.
        !          3016: 
        !          3017: Mon May 20 02:02:15 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3018: 
        !          3019:        * combine.c (try_combine): Test MODES_TIEABLE_P when i3 src is subreg.
        !          3020: 
        !          3021:        * m68k.md (trunc*): Don't set cc if use wider insn.
        !          3022: 
        !          3023: Sun May 19 14:45:46 1991  Ron Guilmette  (rfg at ncd.com)
        !          3024: 
        !          3025:        * Makefile.in (clean): Delete stage1...stage4.
        !          3026:        (realclean): Delete cexp.output.
        !          3027: 
        !          3028:        * fixincludes: Handle BSD43__IO* and BSD43_CTRL like IO* and CTRL.
        !          3029: 
        !          3030: Sun May 19 15:00:05 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3031: 
        !          3032:        * reload1.c (count_possible_groups): New function.
        !          3033:        (reload): Call it twice.  This checks for possible groups
        !          3034:        after maybe spilling some single regs.
        !          3035: 
        !          3036:        * configure (magnum, m3230): Aliases for mips/mips.
        !          3037: 
        !          3038:        * fixincludes (machine/cpu.h):
        !          3039:        Create in proper dir.  Fix mips/cpu.h too.
        !          3040: 
        !          3041:        * reload.c (find_reloads): Turn off usage of reg_preferred_class.
        !          3042: 
        !          3043: Sun May 19 09:51:24 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          3044: 
        !          3045:        * flow.c (mark_used_regs): Continue putting REG_DEAD notes on 
        !          3046:        fixed registers.
        !          3047: 
        !          3048:        * regclass.c (reg_class_record): Don't count classes in which objects
        !          3049:        won't fit.
        !          3050: 
        !          3051:        * reload.c (find_reloads): Pre-compute preferred classes for each
        !          3052:        operand; if operand 1 is copied to operand 0, merge the classes.
        !          3053:        REJECT is now only 1/3 as costly as LOSERS; ? adds 3 to REJECT so
        !          3054:        that it's semantics don't change.
        !          3055: 
        !          3056:        * expr.c (compare_from_rtx): Do EQ and NE comparisons unsigned since
        !          3057:        they are usually cheaper and will cse with comparisons against zero
        !          3058:        which are already unsigned.
        !          3059: 
        !          3060:        * reload1.c (choose_reload_regs): Don't try to access reload_out
        !          3061:        for disabled reload (reload_strict_low may not have been cleared).
        !          3062: 
        !          3063:        * reload1.c (choose_reload_regs): Don't let optional reloads inherit
        !          3064:        spill regs until all non-optional reloads have been allocated spill
        !          3065:        regs.
        !          3066:        We can use find_equiv_reg even if must_reuse, we just can't get a
        !          3067:        spill reg that way.
        !          3068: 
        !          3069:        * expr.c (do_tablejump): When using LABEL_REF in arithmetic, make it
        !          3070:        in Pmode instead of VOIDmode.
        !          3071: 
        !          3072:        * function.c (fixup_var_refs_1): Don't try to make paradoxical
        !          3073:        memory SUBREGs; instead keep SUBREG_REG a pseudo and copy between
        !          3074:        memory and the pseudo.
        !          3075:        (fixup_memory_subreg): Abort if we try making paradoxical SUBREGs.
        !          3076: 
        !          3077:        * reorg.c (redundant_insn_p): Insns we pass may reference resources
        !          3078:        set by INSN; it is sufficient that they not set resources in INSN.
        !          3079: 
        !          3080: Sun May 19 08:06:17 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          3081: 
        !          3082:        * tm-sparc.h (STRUCT_VALUE): Change SImode to Pmode here, and in
        !          3083:        other places.
        !          3084:        (FIRST_PARM_OFFSET): Change 4 to UNITS_PER_WORD here, and in other
        !          3085:        places.
        !          3086:        (ROUND_ADVANCE): New macro to compute how far to advance the arg
        !          3087:        pointer for a give parameter.
        !          3088:        (FUNCTION_ARG): Use PARM_BOUNDARY instead of 32.
        !          3089:        (EXTRA_CONSTRAINT): Don't depend on `reload_completed'.
        !          3090:        * sparc.md (various places): Change many DImode predicates from
        !          3091:        `general_operand' to `register_operand'.
        !          3092: 
        !          3093:        * jump.c (find_cross_jump): Fixed 18 May change to use
        !          3094:        `validate_change' to make sure we get valid, initialized values
        !          3095:        regardless of which path we choose.
        !          3096: 
        !          3097: Sat May 18 15:07:29 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3098: 
        !          3099:        * cccp.c: Rename FATAL_EXIT_CODE to FAILURE_EXIT_CODE.
        !          3100: 
        !          3101:        * gnulib1.c: Rename SFVALUE to FLOAT_VALUE_TYPE.
        !          3102:        (union flt_or_value): New type.
        !          3103:        (*): Use that instead of flt_or_int in most places.
        !          3104:        Delete some variables `intify' that aren't needed.
        !          3105:        * tm-i386.h: Rename SFVALUE to FLOAT_VALUE_TYPE.
        !          3106: 
        !          3107:        * stor-layout.c (layout_record): BITFIELD_NBYTES_LIMITED now 1 or 0.
        !          3108: 
        !          3109:        * rtl.h (struct rtx_def): Drop SHORT_ENUM_BUG; keep ONLY_INT_FIELDS.
        !          3110: 
        !          3111:        * loop.c (add_cost, copy_cost):
        !          3112:        Variables replace old macros *_BENEFIT and COPY_PENALTY.
        !          3113:        (init_loop): New function to set the variables.
        !          3114:        (expr_benefit): Use rtx_cost.
        !          3115:        * toplev.c (compile_file): Call init_loop.
        !          3116:        * cse.c (rtx_cost): Treat mult by 2**n as a shift by default.
        !          3117: 
        !          3118:        * toplev.c (output_file_directive):
        !          3119:        Typo in ASM_OUTPUT_MAIN_SOURCE_FILENAME.
        !          3120: 
        !          3121:        * gnulib2.c [L_trampoline]: Rename function to __trampoline.
        !          3122:        Always compile it even if empty.  Make it global.
        !          3123: 
        !          3124: Sat May 18 14:11:37 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          3125: 
        !          3126:        * reload.c (find_reloads): Remove unnecessary test when increasing
        !          3127:        cost of alternative due to non-preferred register class.
        !          3128: 
        !          3129:        * reload1.c (choose_reload_regs): Fix typo.
        !          3130: 
        !          3131:        * tm-rs6000.h: Add hard registers for the 8 CR fields; add classes
        !          3132:        CR0_REGS and CR_REGS.
        !          3133:        Don't use CC0; add CCUNSmode and CCFPmode.
        !          3134:        (FIXED_REGISTERS): r31 (fp) is no longer fixed.
        !          3135:        (REG_CLASS_FROM_LETTER): Remove 'd' for GENERAL_REGS; 'r' already
        !          3136:        means this.
        !          3137:        (CONST_DOUBLE_OK_FOR_LETTER): If we can move a constant in two insns
        !          3138:        for DF or one insn for SF, let it match 'G'.
        !          3139:        (SECONDARY_RELOAD_CLASS): Define this new macro.
        !          3140:        (FUNCTION_ARG): Fix typo in testing nargs_prototype.
        !          3141:        (LEGITIMATE_CONSTANT_P): Always return 1.
        !          3142:        (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Do not define.
        !          3143:        * rs6000.md: Don't use CC0; instead use a pseudo which will be assigned
        !          3144:        to CR_REGS or CR0_REGS.  Make variants of arithmetic insns that
        !          3145:        set only the condition code and that set both the condition code
        !          3146:        and a normal result.
        !          3147:        Delete "cc" attribute and add "type" attribute.
        !          3148:        Define delays for cc-setting insns and for loads.
        !          3149:        Replace `d' constraint with `r'.
        !          3150:        Delete patterns for HImode and QImode arithmetic operations.
        !          3151:        Handle putting "easy" DFmode or SFmode constant into a register.
        !          3152:        Rework compare and branches; add scc insns.
        !          3153:        Fix up decrement-and-branch insns, but they still won't be used yet.
        !          3154:        (call insns): Use pseudo for "lr" in indirect calls.
        !          3155:        (movdf, movsf): Explictly handle need to use memory to copy between
        !          3156:        general and FP registers.
        !          3157:        * out-rs6000.c (next_insn_tests_no_unsigned, unsigned_comparisons_p):
        !          3158:        Deleted.
        !          3159:        (update_cc): Likewise.
        !          3160:        (gen_reg_operand): Tighen up a bit.
        !          3161:        (cc_reg_operand, reg_or_u_short_operand, easy_fp_constant): New fns.
        !          3162:        (fp_reg_or_mem_operand, mem_or_easy_const_operand): Likewise.
        !          3163:        (call_operand): Accept pseudo register.
        !          3164:        (branch_comparison_operator, scc_comparison_operator): New functions.
        !          3165:        (secondary_reload_class, ccr_bit, must_save_cr): Likewise.
        !          3166:        (print_operand, case 'w', 'u'): Support CONST_DOUBLE.
        !          3167:        (print_operand, cases 'W', 'f', 'F', 'R', 't', 'T', 'C', 'D'):
        !          3168:        New cases.
        !          3169:        (print_operand, cases 'j' and 'J'): Now use for bit number in CCR.
        !          3170:        (output_{pro,epi}logue): If we call function to save/restore fpr's,
        !          3171:        we need to save/restore LR.
        !          3172:        Save CR if we modify the call-saved fields.
        !          3173: 
        !          3174:        * romp.md: Delete HImode and QImode arithmetic operations.
        !          3175:        (swapxi): Delete; obsolete and never used.
        !          3176: 
        !          3177:        * tm-a29k.h (TARGET_SWITCHES): Change -mnodw to -mndw.
        !          3178:        Add -m{no-,}reuse-arg-regs.
        !          3179:        (SECONDARY_RELOAD_CLASS): Provide a definition for this new macro.
        !          3180:        * a29k.md: Delete all HImode and QImode arithmetic operations.
        !          3181:        * out-a29k.c (secondary_reload_class): New function.
        !          3182:        (incoming_reg): Look at TARGET_NO_REUSE_ARGS.
        !          3183: 
        !          3184:        * reload1.c (eliminate_regs): Don't remove a PLUS unless inside an
        !          3185:        address since it would need to change INSN_CODE and can't do it here.
        !          3186: 
        !          3187:        * reorg.c (uid_to_ruid, max_uid): New vars.
        !          3188:        (mostly_true_jump): Refine prediction slightly.
        !          3189:        Use uid_to_ruid map to accurately see if branches are backward.
        !          3190:        (relax_delay_slots): Pass condition to mostly_true_jump.
        !          3191:        (dbr_schedule): Allocate and build uid_to_ruid map.
        !          3192: 
        !          3193: Sat May 18 12:54:45 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3194: 
        !          3195:        * cse.c (insert): "Unchanging" pseudos count as constant.
        !          3196: 
        !          3197:        * tree.c (make_node): Rewrite end as a switch.
        !          3198: 
        !          3199: Sat May 18 03:51:06 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          3200: 
        !          3201:        * cse.c (FIXED_BASE_PLUS_P): Since this is used when called from
        !          3202:        `expand_inline_function', also catch the case where the base
        !          3203:        register is VIRTUAL_STACK_VARS_RTX.
        !          3204:        (simplify_binary_operation): In EQ and NE case, convert a COMPARE
        !          3205:        operand to something we can optimize.
        !          3206:        (refers_to_mem_p): Handle the case when `base' is a LO_SUM.
        !          3207:        * integrate.c (FIXED_BASE_PLUS_P): Define this to recognize offsets
        !          3208:        from the various virtual registers.
        !          3209:        (expand_inline_function): Expand exprs using EXPAND_SUM so as to get
        !          3210:        stack frame addresses instead of pseudos.  This yields much better
        !          3211:        cse (at little cost) for GNU C++.  Also, test FIXED_BASE_PLUS_P as
        !          3212:        an alternative to CONSTANT_P to record a known register value.
        !          3213:        * jump.c (find_cross_jump): If we are processing a cross jump and
        !          3214:        the insns fail to match, try looking for a REG_EQUAL note that makes
        !          3215:        them equivalent insns.  If found, keep going.  This is important for
        !          3216:        merging cleanup codes when one cleanup path gets frame address in a
        !          3217:        register when the other path gets the frame address explicitly.
        !          3218: 
        !          3219:        * cplus-init.c (build_delete): Fixed residual use of 1-based
        !          3220:        indexing to use 0-based indexing instead.
        !          3221: 
        !          3222:        * cplus-decl2.c (grokclassfn): Fix raeburn's May 12 change so that
        !          3223:        destructors still have the same name.
        !          3224: 
        !          3225:        * cplus-decl.c (decls_match): Remove dependence on MERGED.
        !          3226: 
        !          3227:        * cplus-class.c (build_vbase_path): Fixed bug in computing offsets
        !          3228:        for exprs which are FIXED_TYPE_P.
        !          3229:        (build_vfn_ref): Change initializer for REF from 0 to NULL_TREE.
        !          3230: 
        !          3231:        * cplus-decl.c (maybe_build_cleanup): Add LOOKUP_NONVIRTUAL to flags
        !          3232:        argument in call to `build_delete' if DECL does not use virtual
        !          3233:        baseclasses.  If it does, we go through a function call to save
        !          3234:        space, unless FLAG_EXPENSIVEO_OPTIMIZATIONS is nonzero.  ??Better
        !          3235:        approach is to know, in expand_cleanups, to clear `flag_no_inline'
        !          3236:        during the cleanup's expansion.
        !          3237: 
        !          3238:        * cplus-*.c (various places): Add LOOKUP_DESTRUCTOR to all places
        !          3239:        where we know we are calling a destructor for a non-null object.
        !          3240: 
        !          3241:        * stmt.c (fixup_gotos): Run destructors on cleanups that come
        !          3242:        from the block being exited, in addition to any inner blocks
        !          3243:        for which LABEL is now defined.
        !          3244:        (expand_return): Take care of destructors that occur in the
        !          3245:        current binding level.
        !          3246:        (fixup_cleanups): If we emitted no insns, don't change *BEFORE_JUMP.
        !          3247: 
        !          3248:        * rtlanal.c: Define `target_flags' here...
        !          3249:        * toplev.c: ...not here.  This enables us to link gen* programs
        !          3250:        which might, through rtlanal.o, pull in references to `target_flags'
        !          3251:        that are never used.
        !          3252: 
        !          3253:        * function.c: Add declaration for `current_function_uses_const_pool'.
        !          3254:        * expr.h: Add extern declaration for that variable.
        !          3255:        * function.h (struct function): Add a slot named
        !          3256:        `uses_const_pool' for `current_function_uses_const_pool'.
        !          3257:        * function.c ({push,pop}_function_context): save and restore the
        !          3258:        value of `current_function_uses_const_pool'.
        !          3259:        * rtl.h (FUNCTION_FLAGS_USES_CONST_POOL): Defined to be 0200.
        !          3260:        * integrate.c (initialize_for_inline):
        !          3261:        FUNCTION_FLAGS_USES_CONST_POOL now contributes to the value of
        !          3262:        `function_flags'.
        !          3263:        (output_inline_function): Restore `current_function_uses_const_pool'
        !          3264:        from `function_flags'.
        !          3265:        (save_for_inline_copying): Only call `save_constants' if
        !          3266:        `current_function_uses_const_pool' is nonzero.
        !          3267:        (save_for_inline_nocopy): Ditto.
        !          3268:        (save_constants): Tweaked to perform its treewalk faster.  Notably,
        !          3269:        it no longer accepts ptrs to NULL rtl.  All callers changed.
        !          3270:        * varasm.c (force_const_mem): Set `current_function_uses_const_pool'
        !          3271:        if we create a constant pool reference.
        !          3272: 
        !          3273:        * cplus-parse.y, c-parse.y: Add new function `set_yydebug'.  If
        !          3274:        YYDEBUG is defined, sets `yydebug' to VALUE.  Otherwise, prints
        !          3275:        warning that operation is invalid.
        !          3276:        * toplev.c (main): Call `set_yydebug' instead of setting `yydebug'
        !          3277:        directly.  This allows user to turn YYDEBUG off for faster parsing.
        !          3278: 
        !          3279:        * cse.c (simplify_binary_operation): Eliminate abort when passed
        !          3280:        DImode operands.
        !          3281: 
        !          3282: Fri May 17 21:56:41 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          3283: 
        !          3284:        * hard-reg-set.h (reg_class_superunion): New var.
        !          3285:        * regclass.c (init_reg_sets): Compute reg_class_superunion.
        !          3286:        (reg_classes_intersect_p): New function.
        !          3287: 
        !          3288:        * reload.c (find_reloads): Alternative is discouraged if it puts
        !          3289:        a pseudo in a register class it doesn't prefer.
        !          3290: 
        !          3291:        * reload1.c (basic_block_needs): Now an array, per register class.
        !          3292:        (reload): Compute separate basic_block_needs for each class.
        !          3293:        (spill_hard_reg): If pseudo is only in one block, see if that block
        !          3294:        needs a spill register of a class containing the hard reg; leave the
        !          3295:        pseudo alone if not.
        !          3296: 
        !          3297:        * reload1.c (reload_mode, reload_nregs): New vars.
        !          3298:        (reload_reg_class_lower): Use them.
        !          3299:        (allocate_reload_reg): New function.
        !          3300:        (choose_reload_regs): Track size and class of any groups.  We
        !          3301:        can inherit reloads if we are the size of the largest group or
        !          3302:        if our class is disjoint from those needed for groups.
        !          3303:        Try all inherits first before all spill register allocations
        !          3304:        unless there is a later reload with a smaller class; call
        !          3305:        allocate_reload_reg to do the actual allocation.
        !          3306:        Use new vars above.
        !          3307:        (emit_reload_insns): Delete output reload even if we weren't
        !          3308:        storing to memory.
        !          3309: 
        !          3310:        * reload.h (reload_secondary_reload, reload_secondary_p): New vars.
        !          3311:        * reload.c (push_reload): If secondary reload register is needed,
        !          3312:        make a secondary reload.
        !          3313:        * reload1.c (reload): Reload with reload_secondary_p nonzero is in use.
        !          3314:        (choose_reload_regs): Likewise.
        !          3315:        (emit_reload_insns): Handle secondary reloads, when needed.
        !          3316: 
        !          3317:        * reload1.c (reload): Add pass to remove death notes for things that
        !          3318:        are no longer registers or don't die if we must preserve death notes.
        !          3319:        (emit_reload_insns): Refine REG_DEAD notes to be more accurate; make
        !          3320:        notes for secondary reloads.
        !          3321: 
        !          3322:        * reload1.c (emit_reload_insns): Abort for output reloads for jumps;
        !          3323:        we have to implement this at some point.
        !          3324: 
        !          3325: Fri May 17 20:08:22 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3326: 
        !          3327:        * protoize.c: Handle ultrix like BSD.
        !          3328: 
        !          3329: Fri May 17 15:56:41 1991  Richard Stallman  (rms at geech.gnu.ai.mit.edu)
        !          3330: 
        !          3331:        * Pass library function name to INIT_CUMULATIVE_ARGS.
        !          3332:        * calls.c (expand_call): Pass extra arg to INIT_CUMULATIVE_ARGS.
        !          3333:        * expr.c (emit_library_call): Likewise.
        !          3334:        * function.c (assign_parms): Likewise.
        !          3335:        * tm-*.h (INIT_CUMULATIVE_ARGS): Accept the extra arg.
        !          3336:        (INIT_CUMULATIVE_INCOMING_ARGS): Likewise, just for symmetry.
        !          3337: 
        !          3338: Fri May 17 15:41:22 1991  James Van Artsdalen  (james at bigtex.cactus.org)
        !          3339: 
        !          3340:        * tm-i386v4.h (ASM_OUTPUT_COMMON): Don't attempt alignment on a
        !          3341:        three byte boundary.
        !          3342: 
        !          3343: Fri May 17 15:25:16 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          3344: 
        !          3345:        * function.c (assign_stack_local, assign_outer_stack_local): Make
        !          3346:        the alignment in bytes.
        !          3347: 
        !          3348: Fri May 17 14:31:00 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          3349: 
        !          3350:        * cplus-class.c (build_vbase_path): Only build a COND_EXPR if
        !          3351:        NONNULL is zero.
        !          3352:        (resolves_to_fixed_type_p): Check TREE_HAS_CONSTRUCTOR for
        !          3353:        CALL_EXPRs and INDIRECT_REFs.
        !          3354: 
        !          3355:        * cplus-call.c (build_method_call): Add call to `constructor_name'
        !          3356:        if BASETYPE changes.
        !          3357:        * cplus-init.c (build_new): Add LOOKUP_NONVIRTUAL to FLAGS argument
        !          3358:        to `build_method_call'.  Constructors are never virtual.  Also, set
        !          3359:        TREE_HAS_CONSTRUCTOR bit for return value from `build_method_call'.
        !          3360: 
        !          3361: Thu May 16 21:36:10 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          3362: 
        !          3363:        * rtl.h (CONSTANT_P): Now true for a CONST_DOUBLE.
        !          3364:        * combine.c, cse.c, emit-rtl.c, expr.c, integrate.c, loop.c:
        !          3365:        Update for new meaning of CONSTANT_P to include CONST_DOUBLE.
        !          3366:        * optabs.c, recog.c, reload.c, reload1.c, rtl.h, rtlanal.c:
        !          3367:        Likewise.
        !          3368:        * romp.md, rs6000.md, out-alliant.c, out-convex.c: Likewise.
        !          3369:        * out-gmicro.c, out-i386.c, out-i860.c, out-m68k.c: Likewise.
        !          3370:        * out-sparc.c, out-spur.c, out-tahoe.c: Likewise.
        !          3371: 
        !          3372:        * combine.c (SUBST, SUBST_INT): If INTO equals NEWVAL, don't
        !          3373:        record the substitution.
        !          3374:        (try_combine, subst, make_compound_operation, simplify_and_const_int):
        !          3375:        No longer need check for changes before using SUBST macro.
        !          3376:        (simplify_shift_count): Likewise.
        !          3377: 
        !          3378:        * integrate.c (copy_rtx_and_substitute, case CONST): If what
        !          3379:        was originally a constant becomes something that is not a constant
        !          3380:        when passed through a recursive call, return it without the CONST.
        !          3381: 
        !          3382:        * rtl.c (copy_most_rtx): New function.
        !          3383:        * rtl.h (copy_most_rtx): Declare it.
        !          3384:        * function.c (fixup_var_refs_1, case MEM): If a MEM contains VAR,
        !          3385:        ensure the MEM isn't shared by copying it.
        !          3386: 
        !          3387:        * expmed.c (expand_divmod): If doing MOD, produce divide result
        !          3388:        into unique pseudo so that we might CSE the division.
        !          3389: 
        !          3390: Thu May 16 12:01:42 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3391: 
        !          3392:        * reload.c (push_reload): Try find_dummy_reload before dead regs.
        !          3393: 
        !          3394:        * function.c (assign_stack_local*): Use GET_MODE_ALIGNMENT.
        !          3395:        Use CEIL_ROUND consistently.
        !          3396:        Don't force word alignment even if STRICT_ALIGNMENT (experiment).
        !          3397: 
        !          3398: Thu May 16 10:31:04 1991  Jim Wilson  (wilson at sphagnum.cygnus.com)
        !          3399: 
        !          3400:        * unroll.c (unroll_loop): Don't abort if start label does not
        !          3401:        immediately follow LOOP_BEG note.  This can happen as a result of
        !          3402:        jump threading.
        !          3403:        * reorg.c (mostly_true_jump): Eliminate repeated test in second loop.
        !          3404: 
        !          3405:        * sched.c (priority): Abort if find a NOTE in a groups of insns that
        !          3406:        must be scheduled together.
        !          3407:        (free_pending_lists): New function.  Moves every *_LIST rtx on the
        !          3408:        pending lists to the free list.
        !          3409:        (add_insn_mem_dependence): Get a *_LIST from the free list instead
        !          3410:        of creating one if possible.
        !          3411:        (sched_analyze_1): Don't move an insn across a call if it uses a
        !          3412:        register that is not already live across calls. 
        !          3413:        (sched_analyze_insn): Likewise.
        !          3414:        (sched_analyze_1): When flusing the pending lists, put the *_LIST
        !          3415:        rtx on the free list.
        !          3416:        (sched_analyze): Likewise.
        !          3417:        (schedule_block): Likewise.
        !          3418:        (sched_analyze_2): For a cc0 setter/user pair, put a copy of all
        !          3419:        dependencies on the first insn onto the second insn.
        !          3420:        (sched_analyze_insn): Likewise for call sequences.
        !          3421:        (sched_analyze_insn): Handle REG_INC notes just like SETs.
        !          3422:        (sched_note_set): Handle hard registers same as psuedo regs.
        !          3423:        (attach_deaths): Likewise.  Don't add REG_DEAD notes to the frame
        !          3424:        pointer, arg pointer or stack pointer.
        !          3425:        (schedule_block): Likewise.
        !          3426:        (rank_for_schedule): Do not check whether each insn of a sequence
        !          3427:        that must be scheduled together is ready.  They will only reach here
        !          3428:        if they are all already ready.
        !          3429:        (schedule_block): After reload, don't need to give special treatment
        !          3430:        to insns at function start which set up the function parameters.
        !          3431:        Don't treat tail specially if it is part of a group that must be
        !          3432:        scheduled together.
        !          3433:        When a group of instructions is scheduled together, run the lifetime
        !          3434:        analysis code on every instruction in the group from last to first.
        !          3435:        A call_insn kills all call_used and global regs except those
        !          3436:        explicitly used by the call_insn.
        !          3437:        (schedule_insn): Initialize new variables.  If USE_C_ALLOCA, free
        !          3438:        alloced memory immediately after each schedule_block call, not once
        !          3439:        at the end.
        !          3440: 
        !          3441:        * rtl.c (add_dependence): When adding a dependence that points to an
        !          3442:        insn that is part of a sequence that must be scheduled together,
        !          3443:        make the dependence point to the last insn of the sequence instead.
        !          3444: 
        !          3445: Wed May 15 13:08:32 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          3446: 
        !          3447:        * combine.c (simplify_and_const_int): If we have
        !          3448:        (and (OP (lshiftrt X Y) Z) C), for OP of IOR, XOR, and NOT, commute
        !          3449:        OP and LSHIFTRT to put AND and LSHIFTRT adjacent to try to form
        !          3450:        ZERO_EXTRACT.
        !          3451: 
        !          3452:        * combine.c (subst, gen_lowpart_for_combine, get_last_value_validate):
        !          3453:        Use object's mode instead of VOIDmode when we make
        !          3454:        (clobber (const_int 0)) in case someone uses the mode for significant
        !          3455:        bits.
        !          3456:        * rtlanal.c (side_effects_p): Reject non-VOIDmode CLOBBERs.
        !          3457: 
        !          3458:        * rtlanal.c (reg_set_p_1): Remove test for `reg_set_reg' being MEM.
        !          3459:        (reg_set_p): Abort if passed a MEM.
        !          3460: 
        !          3461:        * toplev.c (strip_off_ending): Strip trailing ".f".
        !          3462: 
        !          3463: Wed May 15 12:54:18 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          3464: 
        !          3465:        * cplus-typeck.c (build_modify_expr_1): If the TREE_TYPE of the
        !          3466:        recursive result is an ARRAY_TYPE, change it to void_type_node so
        !          3467:        build_compound_expr doesn't lose when calling default_conversion.
        !          3468: 
        !          3469:        * cplus-tree.h (lang_type): Remove AS_LIST field from lang_type.
        !          3470:        Use TYPE_MAX_VALUE field of type instead.
        !          3471:        (TREE_REFERENCE_EXPR): New macro.
        !          3472: 
        !          3473:        * cplus-parse.y (LC): If we are not in temporary allocation, call
        !          3474:        permanent_allocation.  This frees up any PARM_DECL nodes that were
        !          3475:        allocated since we processed an inline function.  NOTE: we still
        !          3476:        have to clean up these parms from inline functions that did not go
        !          3477:        inline.
        !          3478: 
        !          3479:        * cplus-decl.c (store_parm_decls): Since we no longer push an extra
        !          3480:        binding level if ! PARMS_HAVE_CLEANUPS, test CLEANUP_LABEL to figure
        !          3481:        out how far up the binding countours we must look.
        !          3482:        (init_decl_processing): If FLAG_NO_INLINE is nonzero, set
        !          3483:        FLAG_DEFAULT_INLINE to zero.
        !          3484: 
        !          3485:        * cplus-class.c (finish_struct_bits): Copy TYPE_MIN_VALUE and
        !          3486:        TYPE_MAX_VALUE.  These actually hold C++-related data that's moved
        !          3487:        up from the lang_type data structure.
        !          3488: 
        !          3489:        * cplus-*.c: Change REFERENCE_EXPR to CONVERT_EXPR.  Set
        !          3490:        TREE_REFERENCE_EXPR bit to indicate a CONVERT_EXPR that's really the
        !          3491:        address of a C++ reference expression.
        !          3492: 
        !          3493: Wed May 15 12:30:26 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3494: 
        !          3495:        * tm-sparc.h (FIXED_REGISTERS): Register 0 is not fixed; it is used
        !          3496:        for the condition code, not to represent the fixed %g0.
        !          3497: 
        !          3498: Tue May 14 18:59:06 1991  Jim Wilson  (wilson at sphagnum.cygnus.com)
        !          3499: 
        !          3500:        * explow.c (find_next_ref): Start search at first insn after INSN.
        !          3501: 
        !          3502:        * jump.c (jump_optimize): Update the three simplications that start
        !          3503:        with the "if (...) x = 1; else {...} if (x) ..." case, so that when
        !          3504:        HAVE_cc0 is not defined, they do not accept TST insns (which could
        !          3505:        just be a register to register move).  They should only accept insns
        !          3506:        with the COMPARE operator.
        !          3507: 
        !          3508: Tue May 14 14:51:33 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          3509: 
        !          3510:        * cse.c (simplify_binary_operation): Don't abort when comparing
        !          3511:        two CONST_DOUBLE values.
        !          3512: 
        !          3513: Tue May 14 11:35:47 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3514: 
        !          3515:        * c-common.c (decl_attributes): Fix typo in name of attribute.
        !          3516:        It should be `aligned'.  Also don't crash on unknown attribute.
        !          3517: 
        !          3518:        * expmed.c (init_expmed): Make a separate object to free back to.
        !          3519: 
        !          3520:        * hard-reg-set.h (HOST_BITS_PER_LONG_LONG): Provide default definition.
        !          3521: 
        !          3522:        * toplev.c (main): Implement -gdwarf.
        !          3523: 
        !          3524: Tue May 14 06:32:48 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          3525: 
        !          3526:        * flow.c (mark_used_regs): Don't make REG_DEAD notes for fixed regs.
        !          3527: 
        !          3528:        * combine.c (subst): Convert (not (ashift C X)) to (or (rotate ..))
        !          3529:        and similarly for (not (lshiftrt C X)).
        !          3530:        (make_field_assignment): Make corresponding change in how we recognize
        !          3531:        bitfield assignment of single bit to zero.
        !          3532: 
        !          3533:        * combine.c (merge_outer_ops): New function.
        !          3534:        (simplify_shift_const): Use merge_outer_ops to generalize and
        !          3535:        simplify handling of outer_ops.
        !          3536:        Try using distributive law followed by invert distributive law
        !          3537:        to simplify combinations of logical operations and shifts.
        !          3538: 
        !          3539:        * emit-rtl.c (gen_highpart): Correct conditional that says when we
        !          3540:        can get the bits of a DFmode object; copy from gen_lowpart.
        !          3541: 
        !          3542:        * cse.c (simplify_binary_operation, case MULT): Simplify zero case.
        !          3543:        (simplify_binary_operation, case DIV): In 0/x, return zero in proper
        !          3544:        mode.
        !          3545: 
        !          3546:        * combine.c (simplify_comparison): Can only extend comparison
        !          3547:        to wider mode if equality comparison or test of sign bit.
        !          3548: 
        !          3549: Tue May 14 03:26:36 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          3550: 
        !          3551:        * cplus-tree.h (lang_type): Change to use TREE_VEC to hold basetype
        !          3552:        info.
        !          3553:        (CLASSTYPE_N_BASECLASSES, CLASSTYPE_BASECLASS): Changed accordingly.
        !          3554:        Baseclasses are now counted [0..n) instead of [1..n].
        !          3555:        (CLASSTYPE_BASETYPECLASSES): Deleted.
        !          3556:        * cplus-*.c (various places): Change code to work with new
        !          3557:        representation for basetypes.
        !          3558: 
        !          3559:        * toplev.c (main): Handle `-gdwarf' as a debug option.
        !          3560: 
        !          3561:        * cse.c (insert): Treat pseudos marked RTX_UNCHANGING_P as being
        !          3562:        const.
        !          3563: 
        !          3564: Mon May 13 22:44:18 1991  Jim Wilson  (wilson at ok.cygnus.com)
        !          3565: 
        !          3566:        * mips.md: In the div/mod peepholes, don't apply the peephole if the
        !          3567:        first operation overwrites one of its two operands.
        !          3568: 
        !          3569: Mon May 13 12:14:51 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3570: 
        !          3571:        * expmed.c (store_bit_field, extract_bit_field):
        !          3572:        Set volatile_p while checking predicates.
        !          3573:        * recog.h (volatile_p): Declare it.
        !          3574:        * explow.c (force_not_mem): Do nothing with BLKmode.
        !          3575: 
        !          3576:        * SYSCALLS.c (u_int): Don't define on DGUX--already defined.
        !          3577: 
        !          3578:        * m68k.md (zero_extend*): Don't make the subreg in the template.
        !          3579:        Make it explicitly, and handle subregs as operand 0.
        !          3580: 
        !          3581:        * tm-convex.h (MODES_TIEABLE_P): Fix typos.
        !          3582: 
        !          3583:        * loop.c (check_dbra_loop): To check for a loop with a `break', use
        !          3584:        loop_number_exit_label, not the uid_luid of each label, since loop
        !          3585:        unrolling may have created new labels with no uid_luid.
        !          3586: 
        !          3587:        * expr.c (push_block): Fixed typo in last change.
        !          3588: 
        !          3589: Mon May 13 12:07:25 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          3590: 
        !          3591:        * combine.c (subst): If we can't change comparison code, see if
        !          3592:        we can instead surround our operation with an XOR.
        !          3593: 
        !          3594:        * combine.c (make_compound_operation, simplify_and_const_int):
        !          3595:        Ensure shift counts are non-negative and in range before using them
        !          3596:        to perform shifts.
        !          3597:        (simplify_comparison): Likewise.
        !          3598: 
        !          3599:        * combine.c (try_combine): See if we have previously merged a
        !          3600:        compare and arithmetic operation.  If so try to take it apart to
        !          3601:        allow further combines (such as making a branch-and-decrement).
        !          3602: 
        !          3603:        * combine.c (try_combine): Don't make VOIDmode register if our split
        !          3604:        point is a constant.
        !          3605: 
        !          3606:        * combine.c (subst): Use COMBINE_RTX_EQUAL_P to see if SET_DEST
        !          3607:        is our register; two hard regs might have different rtx.
        !          3608: 
        !          3609:        * combine.c (subst): Generalize associative law handling to
        !          3610:        cases not involving constants.
        !          3611: 
        !          3612:        * combine.c (expand_compound_operation): If we would return a
        !          3613:        (clobber (const_int 0)), return what we were given.
        !          3614: 
        !          3615:        * combine.c (simplify_shift_const): Clean up by removing fallthrough.
        !          3616: 
        !          3617: Mon May 13 10:26:00 1991  James Van Artsdalen  (james at bigtex.cactus.org)
        !          3618: 
        !          3619:        * i386.md (all calls to output_move_double): call return
        !          3620:        value to avoid spurious compiler warnings.
        !          3621:        Allow REG in all alternatives of operand 0 where possible.
        !          3622:        Remove patterns to recognize increment/decrement.
        !          3623:        (addsi3, addhi3, addqi3): Do this in here instead.
        !          3624:        (floatdidf2): New pattern.
        !          3625:        (adddi3, subdi3, negdi2): New patterns.
        !          3626:        (umulsi3, umulhi3): Remove obsolete UMULT patterns.
        !          3627:        (divM3, udivM3, divmodM4, udivmodM4): Use "r" constraint instead
        !          3628:        of "x" or "abc".
        !          3629:        (sqrtsf2, sqrtdf2): New patterns.
        !          3630:        (ashldi3, ashrdi3, lshldi3, lshrdi3): New patterns
        !          3631:        (All shift and rotate patterns): Don't use reg name explicitly in
        !          3632:        output string: use %N operand reference.
        !          3633:        (ashlM3, lshlM3): Use `add' instead of `shl'/`sal' if possible.
        !          3634:        (insv): Fix output constraint.  Clarify source.  Disable for now -
        !          3635:        makes worse code.
        !          3636:        (SImode bit test, all Scond patterns): Allow MEM operands too.
        !          3637:        (seq, sne): Handle CC_Z_IN_NOT_C.
        !          3638:        (jump, indirect_jump, tablejump): Align code on word boundary
        !          3639:        after unconditional jumps.
        !          3640:        (`loop' patterns): Delete - will never be useful on i386.
        !          3641:        (call_pop, call_value_pop): New patterns.
        !          3642:        (return): New pattern: Do `return' if simple epilogue.  But only if
        !          3643:        the real function epilogue isn't next.
        !          3644:        (movstrsi): Do word moves, not just bytes, if count is unknown.
        !          3645:        (ffsM2): New patterns.
        !          3646: 
        !          3647:        * out-i386.c (FP_TOP, AT_SP, RET, RETCOM, POP_ONE_FP,
        !          3648:        FP_CALL1, FP_CALL): Move to tm-i386.h for use by i386.md.
        !          3649:        (output_movf, fp_call_internal, output_fix_trunc, split_di):
        !          3650:        No longer static - called from i386.md.
        !          3651:        (via_memory): Finish return value change.
        !          3652:        (output_move_const_double): Delete unused function.
        !          3653:        (simple_386_epilogue): New predicate.
        !          3654:        (function_prologue): Allocate frame regardless of whether or not
        !          3655:        there is a frame pointer.
        !          3656:        Use output_asm_insn instead of fprintf to push registers.
        !          3657:        (function_epilogue): Likewise.
        !          3658:        If there is a frame pointer, don't necessarily fix %esp just to
        !          3659:        pop a reg - use offset from frame pointer.
        !          3660:        Fix -fomit-frame-pointer support.
        !          3661:        Fix RETURN_POPS_ARGS case where args > 32K bytes.
        !          3662:        (print_operand): A LABEL_REF gets an OFFSET_PREFIX too.
        !          3663:        (print_operand_address): %esp can only be base reg, never index.
        !          3664:        (split_di): New function.
        !          3665: 
        !          3666:        * tm-i386.h: Remove references to obsolete tm-compaq.h file.
        !          3667:        (TARGET_486): New flag.
        !          3668:        (TARGET_SWITCHES): New options -m486, -mno486, -m386.
        !          3669:        (SMALL_REGISTER_CLASSES): New macro.
        !          3670:        (ASM_OUTPUT_LOOP_ALIGN): New macro.
        !          3671:        (all reg macros, ARG_POINTER_REGNUM): Create argument pointer,
        !          3672:        to be eliminated in favor of %esp or %ebp.
        !          3673:        (HARD_REGNO_NREGS, REGNO_REG_CLASS): Use FP_REGNO_P.
        !          3674:        (REGISTER_MOVE_COSTS): It is expensive to move between integer and
        !          3675:        float registers.
        !          3676:        (FP_REGNO_P): Detect only the FP regs.
        !          3677:        (all class macros): Delete obsolete classes ABC_REGS & ABCI_REGS.
        !          3678:        (REG_CLASS_FROM_LETTER): Add `S' for SIREG, remove `x' for ABCI_REGS.
        !          3679:        (CONST_OK_FOR_LETTER_P): Add `J' for DImode shifts.
        !          3680:        (FIRST_PARM_OFFSET): Offset now zero.
        !          3681:        (ELIMINABLE_REGS, CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
        !          3682:        Use generalized scheme to eliminate frame and arg pointers.
        !          3683:        (INITIAL_FRAME_POINTER_OFFSET): Delete.
        !          3684:        (REG_OK_FOR_BASE_P): allow virtual arg pointer.
        !          3685:        (FP_TOP, AT_SP, RET, RETCOM, POP_ONE_FP, FP_CALL1, FP_CALL):
        !          3686:        Moved here from out-i386.c for use by i386.md.
        !          3687: 
        !          3688:        * tm-compaq.h: Delete obsolete file.
        !          3689: 
        !          3690: Sun May 12 18:38:41 1991  Ken Raeburn  (raeburn at watch.com)
        !          3691: 
        !          3692:        * cplus-decl.c (print_binding_level, print_binding_stack,
        !          3693:        print_other_binding_stack): New debugging routines; dump one or
        !          3694:        more binding levels to stderr.
        !          3695: 
        !          3696:        * cplus-decl.c (push_to_top_level): New routine; saves copies of
        !          3697:        all class and local bindings, and some other state, and clears the
        !          3698:        real values, to effectively move to global scope.
        !          3699:        (pop_from_top_level): Restore the saved state.
        !          3700: 
        !          3701:        * cplus-decl.c (adjust_type_value): No longer static.  Abort if
        !          3702:        current_binding_level is class binding level; need to investigate
        !          3703:        that situation further.
        !          3704: 
        !          3705:        * cplus-decl.c (finish_function): Check that the binding level being
        !          3706:        popped really is a function-parameter binding level.
        !          3707: 
        !          3708:        * cplus-tree.h (DESTRUCTOR_DECL_PREFIX): Replaces
        !          3709:        DESTRUCTOR_DECL_FORMAT; used as a prefix before the class name.
        !          3710:        * cplus-decl2.c (grokclassfn): Use it, and call build_overload_name
        !          3711:        rather than just copying the class name.
        !          3712: 
        !          3713:        * cplus-method.c (fndecl_as_string): Use TREE_TYPE rather than
        !          3714:        indirecting through type name and the identifier's associated type,
        !          3715:        since the latter may have changed.
        !          3716:        (build_nested_name): New argument, text_end; callers changed.  Call
        !          3717:        build_overload_identifier rather than copying class name.
        !          3718:        (build_overload_value): Strip non-lvalue nodes for all arguments.
        !          3719:        Fixed up the handling of negative DImode values.
        !          3720:        (build_overload_identifier): New function.  Copy class name (with
        !          3721:        length) if non-template, or build a name from template parameters.
        !          3722:        (build_overload_name): Call build_overload_identifier for class
        !          3723:        names.
        !          3724: 
        !          3725:        * cplus-parse.y: Added comment about use of $$ for $1.
        !          3726:        (template_type_name): Removed useless precedence specificiation.
        !          3727:        (template_arg_list): Wrap TREE_LIST nodes around all arguments in
        !          3728:        the list.
        !          3729:        (template_arg): Call groktypename on type names.  For expressions,
        !          3730:        specify "UNARY" precedence.
        !          3731:        (PRE_PARSED_CLASS_DECL handling): Put a copy of the new class decl
        !          3732:        into global scope, to avoid recursive expansion, since we start in a
        !          3733:        non-global scope set up for the parameters.
        !          3734: 
        !          3735:        * cplus-pt.c (coerce_template_parms): New function.  Converts
        !          3736:        template arguments to appropriate types, returns a vector containing
        !          3737:        results.
        !          3738:        (mangle_class_name_for_template): Removed nparms argument.
        !          3739:        Changed to deal with arglist as vector.  No longer call
        !          3740:        groktypename.  Some initial code added for PARM_DECL (non-type)
        !          3741:        parameters; work not completed.
        !          3742:        (lookup_template_class): Call coerce_template_parms.  Removed some
        !          3743:        unused code.
        !          3744:        (push_template_decls, pop_template_decls): Fixed to deal with
        !          3745:        arglist as vector.  More code for non-type parameters.
        !          3746:        (instantiate_template): Push to top binding level before pushing any
        !          3747:        declarations.
        !          3748:        (end_template_instantiation): Pop from top level, then push the new
        !          3749:        decl at top level.
        !          3750: 
        !          3751:        * cplus-tree.h (struct lang_identifier): Renamed field "template" to
        !          3752:        "class_template_info"; accessor macros changed.
        !          3753: 
        !          3754:        * cplus-pt.c (struct template_info): Renamed from "template".
        !          3755:        Removed unused fields.
        !          3756: 
        !          3757: Sun May 12 17:38:46 1991  Jim Wilson  (wilson at cygnus.com)
        !          3758: 
        !          3759:        * unroll.c (copy_loop_body): Fix typo: had `==' for `='.
        !          3760: 
        !          3761: Sun May 12 17:05:07 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3762: 
        !          3763:        * genattrtab.c (gen_attr): Clear has_asm_insn field in new object.
        !          3764: 
        !          3765: Sun May 12 04:21:52 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          3766: 
        !          3767:        * hard-reg-set.h (HARD_CONST): New macro.  Converts integer
        !          3768:        constants to appropriate type for use with HARD_REG_SET.
        !          3769:        ({SET,CLEAR,TEST}_HARD_REG_BIT): Use this macro where appropriate.
        !          3770:        (GO_IF_HARD_REG_SUBSET): Ditto.
        !          3771:        (HARD_REG_SET): Add new case if FIRST_PSEUDO_REGISTER <=
        !          3772:        HOST_BITS_PER_LONGLONG.
        !          3773:        * global-alloc.c: Pass HARD_CONST (0) instead of 0 to functions
        !          3774:        which are looking for a HARD_REG_SET argument.
        !          3775:        * reorg.c (resource_conflicts_p): Change comparison of HARD_REG_SET
        !          3776:        value to compare against HARD_CONST.
        !          3777: 
        !          3778:        * all xm-*.h files: Added HOST_BITS_PER_LONGLONG where
        !          3779:        HOST_BITS_PER_LONG was defined.
        !          3780:        * tm-sparc.h (REG_CLASS_CONTENTS): Fixed in case we're using long
        !          3781:        long HARD_REG_SETs.
        !          3782: 
        !          3783:        * toplev.c (main): support -gdwarf switch.
        !          3784: 
        !          3785:        * longlong.h (umulsidi3): SPARC .umul routine returns the value in
        !          3786:        WORD_LITTLE_ENDIAN form, so swap.  Other word-endian changes for
        !          3787:        inline mul routines.
        !          3788: 
        !          3789:        * gnulib2.c (__divdi3): If C is nonzero, negate whole division
        !          3790:        instead of returning negation of quotient.
        !          3791: 
        !          3792: Sat May 11 20:06:08 1991  Torbjorn Granlund  (tege at krishna.sics.se)
        !          3793: 
        !          3794:        * expmed.c (outside of functions): New vars: lea_cost, lea_max_mul.
        !          3795:        (init_expmed): Initialize lea_cost and lea_max_mul. 
        !          3796:        (synth_mult): Use them.
        !          3797: 
        !          3798: Sat May 11 20:11:41 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          3799: 
        !          3800:        * cplus-class.c (build_vbase_path): Rewritten and simplified.
        !          3801:        * cplus-cvt.c (build_up_reference): Try to get away without building
        !          3802:        a NOP_EXPR around the return value of `build_component_addr'.
        !          3803:        Ditto for return value from `convert_pointer_to'.
        !          3804: 
        !          3805:        * cplus-decl.c (void_zero_node): New node.  Used in conditional
        !          3806:        expressions where one arm must do nothing.
        !          3807:        * various places: replace calls that built this node dynamically to
        !          3808:        just use the global copy.
        !          3809:        * cplus-tree.h (void_zero_node): Declare it globally.
        !          3810: 
        !          3811:        (maybe_build_cleanup): Don't call `convert_force' on the return
        !          3812:        value of `build_unary_op'.  We should have license to modify its
        !          3813:        type without harm.
        !          3814:        * cplus-gc.c (protect_value_from_gc): Same idea for VAR_DECL and
        !          3815:        PARM_DECL nodes.
        !          3816: 
        !          3817:        * toplev.c (f_options): Add choice for -fPIC.
        !          3818: 
        !          3819:        * varasm.c (assemble_function): If it's a function name that's the
        !          3820:        first global name, strip of a leading '*' if there is one.
        !          3821: 
        !          3822:        * reload.c (find_reloads): Fix comment.
        !          3823: 
        !          3824:        * stmt.c (expand_return): Call `any_pending_cleanups' with argument.
        !          3825: 
        !          3826:        * expr.c (expand_expr): In TARGET_EXPR case, If TARGET is null and
        !          3827:        DECL already has rtl, use that as the target.
        !          3828:        (expand_expr): In BIND_EXPR try using expand_{start,end}_bindings to
        !          3829:        catch cleanups...otherwise fixup_cleanups must be modified to deal
        !          3830:        with cleanups not in any contours.
        !          3831: 
        !          3832: Sat May 11 15:09:42 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3833: 
        !          3834:        * out-i386.c (via_memory): Return a memref to the stack.
        !          3835:        (fp_call_internal): Change call to via_memory.
        !          3836: 
        !          3837:        * expr.c (push_block): New arg BELOW specifies padding direction.
        !          3838:        All callers changed.
        !          3839:        (emit_push_insn): Pass an interesting value for BELOW.
        !          3840: 
        !          3841:        * c-parse.y (typespec): Pass the TYPE_DECL for a typedef name.
        !          3842:        * c-decl.c (grokdeclarator): Handle TYPE_DECL in declspecs.
        !          3843: 
        !          3844: Thu May  9 15:17:44 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          3845: 
        !          3846:        * m88k.md (zero_extend pattern): Compute correct constant.
        !          3847: 
        !          3848: Thu May  9 07:44:20 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          3849: 
        !          3850:        * combine.c (subst): Remove WAS_REPLACED; always check the rtl
        !          3851:        for specific cases of interest and don't use TO and FROM when
        !          3852:        looking into the rtl.
        !          3853: 
        !          3854:        * combine.c (subst, case MEM): Call make_compound_operation here
        !          3855:        so any ASHIFTs will be MULTs for mode_dependant_address_p calls later.
        !          3856:        (subst, case PLUS): Remove cases already done elsewhere.
        !          3857: 
        !          3858:        * expmed.c (emit_store_flag): Don't let the delete_insns_since call
        !          3859:        we do kill insns to do an auto-inc.
        !          3860: 
        !          3861:        * flow.c (propagate_block): Don't treat global regs as clobbered
        !          3862:        over a CALL_INSN even if call-clobbered. 
        !          3863: 
        !          3864:        * stmt.c (expand_end_stmt_expr): Correctly handle the case where an
        !          3865:        expression statement  is just an auto-inc of a var.
        !          3866: 
        !          3867:        * sparc.md (fix_trunc[sd]fsi2): Finish change to use MATCH_SCRATCH
        !          3868:        by eliminating DEFINE_EXPAND and making DEFINE_INSN a named pattern.
        !          3869: 
        !          3870: Wed May  8 13:31:23 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3871: 
        !          3872:        * cccp.c (rescan): Handle symbols before // as before /*.
        !          3873: 
        !          3874:        * Makefile.in (objc-parse.o): Specify the command.
        !          3875: 
        !          3876:        * c-parse.y (typespec): Fix previous change.
        !          3877: 
        !          3878:        * reload1.c (choose_reload_regs): Use spillregs in round robin.
        !          3879: 
        !          3880: Wed May  8 11:00:29 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          3881: 
        !          3882:        * cplus-lex.c (tree_node_kinds): Renamed to `tree_node_counts'.
        !          3883: 
        !          3884: Wed May  8 05:50:29 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          3885: 
        !          3886:        * integrate.c (copy_rtx_and_substitute): Don't round frame size.
        !          3887: 
        !          3888:        * loop.c: Must include insn-flags.h to get
        !          3889:        HAVE_decrement_and_branch_until_zero.
        !          3890:        * Makefile.in (loop.o): Likewise.
        !          3891: 
        !          3892:        * expmed.c (expand_divmod): Use LOG instead of INTVAL (OP1)
        !          3893:        once we start generating rtl.
        !          3894: 
        !          3895: Wed May  8 05:38:06 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          3896: 
        !          3897:        * cplus-decl.c (duplicate_decls): Don't crash on duplicate
        !          3898:        TEMPLATE_DECLs.
        !          3899:        (globalize_nested_type): Handle globalizing types when
        !          3900:        CLASS_BINDING_LEVEL goes out of effect.
        !          3901:        (init_decl_processing): Comment out decls for ABS, FABS and LABS.
        !          3902:        They conflict with libg++ inlines.
        !          3903: 
        !          3904:        * cplus-decl2.c (build_push_scope): Fix bug in last change.
        !          3905:        (finish_file): Make the dummy decl that we tack on to the global
        !          3906:        scope a TYPE_DECL instead of a VAR_DECL.  Fake global VAR_DECLs are
        !          3907:        problematic on some machines (i.e. MIPS).
        !          3908: 
        !          3909:        * cplus-init.c (init_vfields): Use TREE_TYPE (VFIELDS) to find the
        !          3910:        type for which the VFIELD was last distinguished.  This picks up
        !          3911:        cases where single inheritance overrides base class vtables and the
        !          3912:        base class does not get a new vtable for the override.
        !          3913: 
        !          3914:        * cplus-parse.y (named_class_head_sans_basetype): Handle a
        !          3915:        `template_type_name' by itself.  This happens with e.g.
        !          3916:        friend class Stack<T>.
        !          3917: 
        !          3918:        * cplus-pt.c (mangle_class_name_for_template): Put ',' between
        !          3919:        parameters.
        !          3920:        (push_template_decls): Don't crash if ARGLIST is ERROR_MARK_NODE.
        !          3921: 
        !          3922:        * cplus-class.c (finish_base_struct): Compute MAX_HAS_VIRTUAL by
        !          3923:        looking at all the base classes relevant to VFIELDS.
        !          3924:        (build_vbase_path): Initialize NONNULL to zero.
        !          3925: 
        !          3926: Tue May  7 23:47:42 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3927: 
        !          3928:        * stmt.c (any_pending_cleanups): Don't fail if block_stack is empty.
        !          3929: 
        !          3930: Tue May  7 22:46:16 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          3931: 
        !          3932:        * cse.c (simplify_binary_operation; case EQ, NE): Don't assume
        !          3933:        the address of a symbol is non-zero.
        !          3934: 
        !          3935:        * sched.c (schedule_insns): Ensure we free memory used by
        !          3936:        schedule_block when using the C alloca.
        !          3937: 
        !          3938: Tue May  7 14:13:57 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3939: 
        !          3940:        * reload1.c (mark_reload_reg_in_use): New arg MODE.  Mark all the regs.
        !          3941:        (choose_reload_regs): Pass that arg; don't loop here.
        !          3942: 
        !          3943:        * c-parse.y (typespec): Convert a TYPENAME to its meaning.
        !          3944: 
        !          3945:        * fold-const.c (fold): Don't assume symbolic constant is nonzero.
        !          3946: 
        !          3947:        * c-typeck.c (c_expand_asm_operands): Convert arrays, fcns to pointers.
        !          3948: 
        !          3949: Mon May  6 23:29:21 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          3950: 
        !          3951:        * cse.c (cse_insn): Only make a REG_WAS_0 note if the previous
        !          3952:        set was to the same register, not just the same quantity;
        !          3953:        if previous REG_WAS_0 note, update back pointer.
        !          3954:        If setting a register to a constant, update QTY_CONST and
        !          3955:        QTY_CONST_INSN so it points to the last set.
        !          3956:        In special case for (set REG0 REG1), ensure any REG_WAS_0 notes are
        !          3957:        updated correctly.
        !          3958: 
        !          3959:        * genrecog.c (make_insn_sequence): Don't clobber `i' when it is
        !          3960:        still needed.
        !          3961: 
        !          3962:        * out-vax.c (print_operand_address): Fix bug in last change in handling
        !          3963:        (plus (reg) (reg)).
        !          3964: 
        !          3965: Mon May  6 16:41:50 1991  Torbjorn Granlund  (tege at zevs.sics.se)
        !          3966: 
        !          3967:        * expmed.c (synth_mult): Make it handle t == 0. Improve comments.
        !          3968:        Use (max_cost <= add_cost) instead of (max_cost < add_cost) to
        !          3969:        determine if we should fail early (to better prune the search).  
        !          3970:        Remove loop with n from factor synthesis.  Remove -2 bias from m
        !          3971:        loop (for clearity).  Add code to use load-effective-address
        !          3972:        instructions.  Use bit-fiddling instead of loop to determine q in
        !          3973:        the last synthesis case.
        !          3974: 
        !          3975: Mon May  6 11:21:45 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3976: 
        !          3977:        * c-typeck.c (convert_for_assignment): Reword an error message.
        !          3978: 
        !          3979:        * c-typeck.c (build_conditional_expr): Typo in last change.
        !          3980: 
        !          3981:        * Makefile.in (enquire, enquire.o): Depend on gnulib.
        !          3982: 
        !          3983: Sun May 5 17:28:22 1991    (Eric Youngdale at [email protected])
        !          3984: 
        !          3985:        * make-cc1.com: Update for GCC 2.0; build insn-attr.h, insn-attrtab.c.
        !          3986:        Compile and add obj to linker list: c-aux-info.c, c-common.c, c-lang.c,
        !          3987:        aux-output.c, calls.c, dwarfout.c, function.c, reorg.c, sched.c,
        !          3988:        sdbout.c, unroll.c, insn-attrtab.c.  Remove references to symout.c.
        !          3989: 
        !          3990: Sun May  5 15:32:01 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          3991: 
        !          3992:        * Makefile.in (rest.encap): Make gnulib before float.h.
        !          3993: 
        !          3994:        * c-typeck.c (build_conditional_expr):
        !          3995:        Don't assume symbolic constant is nonzero.
        !          3996: 
        !          3997:        * reload1.c (choose_reload_regs): Ignore avoid_return_reg.
        !          3998:        (reload_as_needed, reload): Don't bother setting avoid_return_reg.
        !          3999: 
        !          4000: Sun May  5 14:30:14 1991  Michael Tiemann  (tiemann at cygint.cygnus.com)
        !          4001: 
        !          4002:        * cplus-class.c (prev_class_type): Declare this to be static.
        !          4003:        (build_vbase_path): Test NONNULL to decide whether a COND_EXPR is
        !          4004:        actually needed.
        !          4005:        (finish_struct): Another sort of hard virtual function to deal with
        !          4006:        is one which comes from the non-leftmost baseclass, and who's index
        !          4007:        is different between that class and the main derived class.  Use new
        !          4008:        variable DOING_HARD_VIRTUALS to control when we punt and when we
        !          4009:        plow through.
        !          4010:        (modify_vtable_entry): If we find at this point that we have a hard
        !          4011:        virtual function, just put it on the list PENDING_HARD_VIRTUALS if
        !          4012:        DOING_HARD_VIRTUALS is nonzero.
        !          4013:        (fixed_type_p): Handle SAVE_EXPR, RTL_EXPR, PLUS_EXPR, MINUS_EXPR,
        !          4014:        NOP_EXPR and CONVERT_EXPR.
        !          4015:        (pushclass): Fixed comment.  Also change test for whether this is
        !          4016:        the top-level class scope from an obscure one to an obvious one, and
        !          4017:        add comment.
        !          4018:        (pushclass,popclass): Now always allocate a binding level.  Later
        !          4019:        we'll have to rewrite this to actually use it.
        !          4020: 
        !          4021:        * cplus-gc.c (type_needs_gc_entry): Don't need a GC entry for
        !          4022:        ERROR_MARK_NODE.
        !          4023: 
        !          4024:        * cplus-init.c (build_new): Set TREE_CALLS_NEW on RTL_EXPR.  This
        !          4025:        gives us a case that `fixed_type_p' can grok.
        !          4026: 
        !          4027:        * cplus-lex.c (identifier_type): Make this __inline if compiling
        !          4028:        with GNU C.
        !          4029:        (tree_node_kinds): Renamed to `tree_node_counts'.
        !          4030: 
        !          4031:        * cplus-parse.y (various places): Take advantage of default rule
        !          4032:        `$$ = $1', and where possible, use $$ instead of $1.
        !          4033:        Also, back out change for setting `looking_for_typename' to 1 at top
        !          4034:        level.
        !          4035: 
        !          4036:        * cplus-decl2.c (build_push_scope): If the user gives X::foo in X's
        !          4037:        scope, don't return a SCOPE_REF.  Just return `foo' instead.
        !          4038: 
        !          4039:        * cplus-decl.c (init_decl_processing): Don't define `alloca' as a
        !          4040:        built-in function until libg++ header files agree with its built-in
        !          4041:        type.
        !          4042:        (finish_decl): Don't crash if TYPE is error_mark_node.
        !          4043: 
        !          4044:        * fold-const.c (split_tree): When splitting the tree, don't call
        !          4045:        convert if the TYPE_MODEs are the smae.  This screws up C++ where
        !          4046:        conversion of one pointer type to another can cause the pointer's
        !          4047:        value to change.
        !          4048: 
        !          4049:        * tree.c (get_identifier): Speed up `get_identifier' by about a
        !          4050:        factor of 2.  This becomes noticable with the long names used for
        !          4051:        C++ overloading.
        !          4052:        (tree_cons): Make this most frequent user of `make_node' perform its
        !          4053:        actions inline.
        !          4054: 
        !          4055:        * calls.c (expand_call): Eliminate many (most) calls to strcmp by
        !          4056:        being smarter about when to call it.  Also, don't call `push_block'
        !          4057:        in the trivial case when it's not needed.
        !          4058: 
        !          4059: Sun May  5 08:51:14 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          4060: 
        !          4061:        * expr.c (convert_to_mode): Fix (for the second time) test for when
        !          4062:        gen_lowpart should be called.
        !          4063: 
        !          4064:        * cse.c (find_best_addr): Try to fold address.
        !          4065:        (fold_rtx): Do associativity and (not (not ...)) checks here.
        !          4066:        (cse_insn): Not here.
        !          4067: 
        !          4068:        * combine.c (recog_for_combine): New parameter, PNOTES.
        !          4069:        When we add a CLOBBER, put a REG_UNUSED note for it in *PNOTES.
        !          4070:        (try_combine): Call recog_for_combine with new parameter.
        !          4071:        Delete any now-invalid REG_UNUSED notes in OTHER_INSN and add any
        !          4072:        required new ones.
        !          4073:        Add REG_NOTES to I3 and I2 due to added CLOBBERs.
        !          4074:        (remove_death): Call new function, remove_note.
        !          4075:        (move_deaths): Don't get confused by a CLOBBER.
        !          4076:        (distribute_notes): Don't make duplicate REG_UNUSED notes.
        !          4077:        Don't put a REG_DEAD note on an insn when the register is
        !          4078:        partially modified, but remains valid.
        !          4079: 
        !          4080:        * rtlanal.c (remove_note): New function.
        !          4081: 
        !          4082:        * combine.c (try_combine): When making a PARALLEL that does a compare
        !          4083:        and arithmetic, don't simplify the COMPARE.
        !          4084: 
        !          4085:        * combine.c (try_combine): Validate that I1DEST isn't being
        !          4086:        modified invalidly.
        !          4087: 
        !          4088:        * combine.c (simplify_comparison): In ZERO_EXTRACT case, add missing
        !          4089:        test for equality comparison against zero; also invert comparison
        !          4090:        condition.
        !          4091:        If we can't do a comparison in a narrower mode, but we know that
        !          4092:        some wider bits are zero, see if we can do it in a wider more.
        !          4093: 
        !          4094:        * cse.c (simplify_binary_operation): Remove obsolete code to convert
        !          4095:        negative shift counts to the opposite shift.
        !          4096:        Don't fold invalid shifts since they may trap (e.g., on Vax).
        !          4097: 
        !          4098:        * reload1.c (emit_reload_insns): Use rtx_equal_p to see if a result
        !          4099:        is already in the desired register.
        !          4100: 
        !          4101:        * combine.c (find_split_point): Add two more ways to split an insn.
        !          4102: 
        !          4103:        * combine.c (gen_binary): Put a complex operand first in addition to
        !          4104:        putting constants second, just like subst would do.
        !          4105: 
        !          4106:        * combine.c (significant_bits): Correct computation of significant bits
        !          4107:        for division operations.
        !          4108: 
        !          4109:        * combine.c (apply_distributive_law): Reject complex SUBREGs.
        !          4110:        SUBREG distributes over logical and addition operations.
        !          4111: 
        !          4112:        * combine.c (subst; case AND, IOR, XOR): Add some boolean
        !          4113:        arithmetic simplifications.
        !          4114: 
        !          4115:        * expr.c (do_jump): ADDRESS_EXPR is not always zero, unfortunately.
        !          4116: 
        !          4117:        * expr.c (do_store_flag): In case where we are testing a single bit,
        !          4118:        don't convert to output mode until after we do the shift.
        !          4119:        
        !          4120:        * optabs.c (expand_binop, expand_unop, expand_fix): Compare
        !          4121:        enum insn_code objects against CODE_FOR_nothing instead of 0.
        !          4122: 
        !          4123:        * romp.md (bit_insv): Use CC0 in standard way; i.e., in NE.
        !          4124: 
        !          4125: Sat May 4 20:41:12 1991    (Eric Youngdale at [email protected])
        !          4126: 
        !          4127:        * c-aux-info.c (gen_aux_info_record): Use getcwd on VMS a la USG.
        !          4128:        * dbxout.c: Same here.
        !          4129:        * xm-vms.h: Define unlink as remove
        !          4130:        (GCC_INCLUDE_DIR): Provide a dummy definition.
        !          4131: 
        !          4132: Sat May  4 16:46:48 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          4133: 
        !          4134:        * combine.c (can_combine_p, try_combine): Use SMALL_REGISTER_CLASSES
        !          4135:        to indicate when it is valid to do combines involving hard registers.
        !          4136:        * cse.c (canon_hash): #ifdef SMALL_REGISTER_CLASSES, don't record
        !          4137:        hard registers unless they are fp, ap, sp or are fixed.
        !          4138:        * loop.c (valid_initial_value_p): #ifdef SMALL_REGISTER_CLASSES, 
        !          4139:        hard register aren't valid initial values.
        !          4140:        * reload1.c (reload): Initialize FORBIDDEN_REGS depending on
        !          4141:        whether we have small register classes or not.
        !          4142: 
        !          4143:        * ns32k.md: Replace const_int with const_int_operand.
        !          4144:        Remove HImode extractions.
        !          4145:        Remove patterns assigning an AND to CC0.
        !          4146:        (andcbxx3): Remove name and eliminate case with NOT as second operand.
        !          4147:        (sbitx, cbitx): Remove patterns involving IOR and ASHIFT; add patterns
        !          4148:        with ZERO_EXTRACT as destination.
        !          4149:        (ibitx): Put ASHIFT as first operand in XOR.
        !          4150:        (bitfield compare): Remove comparison of 1 bit field with 1; combine
        !          4151:        converts this to comparison with zero.
        !          4152:        (and-compare-branch): Fold PLUS or MINUS into constant, like combine
        !          4153:        will do.
        !          4154:        Remove patterns for reversed cases.
        !          4155:        * out-ns32k.c (const_int): Deleted.
        !          4156:        
        !          4157:        * rtlanal.c (reg_used_between_p, reg_set_between_p): Use GET_RTX_CLASS.
        !          4158:        (reg_set_p_1): If we are setting a MEM, don't think we are setting
        !          4159:        registers used in its address.
        !          4160: 
        !          4161:        * m68k.md (cmpsf, cmpdf, tstsf, tstdf for FPA): Use MATCH_SCRATCH.
        !          4162:        * sparc.md (memory store patterns): Likewise.
        !          4163: 
        !          4164:        * function.c (assign_parms): Function is varargs function if the
        !          4165:        last parameter is `__builtin_va_alist_' instead of checking the first
        !          4166:        parameter.  Normally, this is the same, but some functions in MACH
        !          4167:        have named parameters before va_alist.
        !          4168: 
        !          4169:        * combine.c (simplify_comparison): Remove abort on paradoxical SUBREGs
        !          4170:        now that we know they can occur.
        !          4171: 
        !          4172:        * reload.c (decompose): Handle SCRATCH; it can't conflict with
        !          4173:        anything.
        !          4174:        (find_reloads): All operands can set earlyclobber, not just REG & MEM.
        !          4175:        Add support for "X" constraint.
        !          4176:        SCRATCH does not match "g" constraint.
        !          4177: 
        !          4178: Sat May  4 14:03:16 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          4179: 
        !          4180:        * enquire.c (EPROP): Avoid a <= out if bad is set.
        !          4181: 
        !          4182:        * SYSCALLS.c: Test bsd4_2 along with BSD.
        !          4183: 
        !          4184: Fri May  3 14:26:51 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          4185: 
        !          4186:        * c-decl.c (pushdecl): Stop looping on type if find error mark.
        !          4187: 
        !          4188:        * loop.c (invariant_p): An address with a PLUS is not the same as
        !          4189:        MEM_IN_STRUCT_P being set.
        !          4190: 
        !          4191:        * tree.h (TREE_NO_UNUSED_WARNING): New macro.
        !          4192:        * stmt.c (warn_if_unused_value): That flag suppresses warnings.
        !          4193:        * c-typeck.c (build_unary_op): Set flag when converting postinc.
        !          4194: 
        !          4195: Fri May  3 08:09:47 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          4196: 
        !          4197:        * tm-m88k.h (GO_IF_LEGITIMATE_ADDRESS): Remove workarounds for
        !          4198:        register elimination problems.
        !          4199: 
        !          4200: Fri May  3 07:14:22 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          4201: 
        !          4202:        * a29k.md: Fix typo in dmac pattern.
        !          4203:        Make many define_splits that convert DFmode and DImode to one word
        !          4204:        at a time to operate only after reload completes to improve reg alloc.
        !          4205:        (movdf): Correct typo in mfacc.
        !          4206:        (rotlsi3): Count is QImode, not SImode.
        !          4207: 
        !          4208:        * tm-a29kunix.h (BIGGEST_ALIGNMENT): Change to 64.
        !          4209:        
        !          4210:        * tm-romp.h (OPTIMIZATION_OPTIONS): Enable insn scheduling.
        !          4211:        (register definitions): No longer need dummy register and class;
        !          4212:        register numbers for FP register change.
        !          4213:        * romp.md: Use MATCH_SCRATCH instead of allocating pseudos
        !          4214:        to the dummy register class or base register depending on alternative.
        !          4215:        (FP insns): Add missing "=" to constraints in CLOBBERs.
        !          4216:        (extendqisi2, extendqihi2): Now DEFINE_EXPAND.
        !          4217:        (mc03 peephole): Can do if right shift >= 24 bits.
        !          4218:        * out-romp.c (reg_15_operand): Remove special case for FP delay slot.
        !          4219:        (romp_sa_size, output_fpop, output_loadsave_fpops, output_fpops):
        !          4220:        Change floating-point register numbers.
        !          4221: 
        !          4222:        * combine.c (simplify_shift_const, case for shifts): Verify that 
        !          4223:        the host word size is wide enough.
        !          4224:        Properly handle (ashift (subreg (ashiftrt ...) ...) ...).
        !          4225: 
        !          4226:        * out-vax.c (print_operand_address, case PLUS): Handle all addresses
        !          4227:        accepted by GO_IF_LEGITIMATE_ADDRESS.
        !          4228: 
        !          4229:        * explow.c (plus_constant): force_const_mem does not necessarily
        !          4230:        return a valid address.
        !          4231:        * integrate.c (copy_rtx_and_substitute): Likewise.
        !          4232: 
        !          4233:        * Makefile.in (local-alloc.o): Includes output.h.
        !          4234:        * rtl.def (SCRATCH, MATCH_SCRATCH): New RTL codes.
        !          4235:        * regs.h (max_scratch): Add definition.
        !          4236:        * genconfig.c (walk_insn_part): Handle MATCH_SCRATCH.
        !          4237:        * genextract.c (walk_rtx): Likewise.
        !          4238:        * genemit.c (max_operand_1): Likewise.
        !          4239:        (gen_exp): Emit a SCRATCH for for MATCH_SCRATCH.
        !          4240:        (gen_insn): We can create (clobber (scratch)).
        !          4241:        * genoutput.c (scan_operands): Handle MATCH_SCRATCH;
        !          4242:        use switch instead of if's.
        !          4243:        * genrecog.c (make_insn_sequence): We can created (clobber (scratch)).
        !          4244:        (add_to_sequence): Handle MATCH_SCRATCH.
        !          4245:        * flow.c (life_analysis): Initialize max_scratch.
        !          4246:        (propagate_block): Update max_scratch with count from this block.
        !          4247:        (mark_set_1): Make REG_UNUSED note for SCRATCH and count it.
        !          4248:        * local-alloc.c: Include output.h.
        !          4249:        (qty_scratch_rtx): New variable.
        !          4250:        (alloc_qty): Rename INSN_NUMBER to BIRTH since that's what it is.
        !          4251:        (alloc_qty_for_scratch): New function.
        !          4252:        (local_alloc): Account for quantities needed for SCRATCH.
        !          4253:        Allocate and initialize qty_scratch_rtx.
        !          4254:        (block_alloc): Allocate quantities for SCRATCH operands.
        !          4255:        (requires_inout_p): Add "X" constraint.
        !          4256:        * recog.c (scratch_operand): New function.
        !          4257:        (constrain_operands): SCRATCH matches a register constraint unless
        !          4258:        strict.
        !          4259:        Add "X" constraint.
        !          4260:        * regclass.c (reg_class_record): Add "X" constraint.
        !          4261:        * reload1.c (emit_reload_insns): Add SCRATCH to test for operand that
        !          4262:        dies right away; update REG_UNUSED note for SCRATCH.
        !          4263:        Never need reload insn for SCRATCH, even if no REG_UNUSED note.
        !          4264:        * rtlanal.c (reg_mentioned_p, reg_overlap_mentioned_p, rtx_equal_p):
        !          4265:        Support SCRATCH.
        !          4266:        (volatile_refs_p, side_effects_p, may_trap_p): Likewise.
        !          4267:        (inequality_comparisons_p, replace_regs): Likewise.
        !          4268: 
        !          4269:        * flow.c (mark_set_1): Don't do anything special with partial
        !          4270:        assignments; this is already handled by mark_used_regs and we now
        !          4271:        want to make LOG_LINKS for these.
        !          4272: 
        !          4273:        * combine.c: Includes expr.h.
        !          4274:        (expand_field_assignment, make_extraction): New functions.
        !          4275:        (get_pos_from_mask, make_field_assignment): Likewise.
        !          4276:        (can_combine_p): Remove special case for SUBREG in SET_DEST; call
        !          4277:        expand_field_assignment instead.
        !          4278:        (try_combine): Remove code to handle STRICT_LOW_PART here.
        !          4279:        Call expand_field_assignment on SETs in I3.
        !          4280:        (find_split_point): Split up simple cases of bitfield assignments.
        !          4281:        (subst, case ZERO_EXTRACT): Remove processing of ZERO_EXTRACT in a
        !          4282:        SET_DEST from here.
        !          4283:        (subst, case SET): Try to convert this into a field assignment by
        !          4284:        calling make_field_assignment.
        !          4285:        No need to call make_compound_operation for COMPAREs;
        !          4286:        make_compound_operation now returns an rtx and is no longer passed
        !          4287:        a pointer.
        !          4288:        Remove tests for ZERO_EXTRACT in SET_DEST.
        !          4289:        (make_compound_operation): Now returns rtx and is passed rtx, instead
        !          4290:        of rtx *.
        !          4291:        Call make_extraction.
        !          4292:        (simplify_comparison): Call make_compound_operation here and remove any
        !          4293:        outermost SUBREGs that aren't doing anything.
        !          4294: 
        !          4295:        * Makefile.in (combine.o): Includes expr.h.
        !          4296: 
        !          4297:        * expr.c (convert_to_mode): Correct which cases can use gen_lowpart.
        !          4298: 
        !          4299:        * final.c (final_scan_insn): Don't set INSN_DELETED_P after writing
        !          4300:        insn.
        !          4301: 
        !          4302:        * genoutput.c (main): Don't include aux-output.c in insn-output.c.
        !          4303:        Include stdio.h before output.h.
        !          4304:        (output_epilogue): Write definitions for all the predicates
        !          4305:        placed in `insn_operand_predicate'.
        !          4306:        * output.h: No longer need to define operand-predicate functions.
        !          4307:        * configure: (m88k/dg): Only difference between xm-m88k{,dgux}.h was
        !          4308:        definition of SEPARATE_AUX_OUTPUT, so we don't need xm-m88kdgux.h.
        !          4309:        * xm-m88kdgux.h: Deleted.
        !          4310:        Fix typo setting `target' in Makefile.
        !          4311:        * Makefile.in (AUX_OUTPUT2): Deleted.
        !          4312:        (OBJS): Remove AUX_OUTPUT2 and add aux-output.o.
        !          4313:        (aux-output2.o): Now aux-output.o.
        !          4314:        (insn-output.o): No longer depends on aux-output.c.
        !          4315:        * make-m88kdgux (AUX_OUTPUT2): No longer define.
        !          4316:        * tm-m68k.h, tm-romp.h, tm-sparc.h: Define functions in out-*.c and
        !          4317:        used by insn-output.c.
        !          4318:        * tm-m88k.h: Remove conditionalization for SEPARATE_AUX_OUTPUT; now
        !          4319:        always done.
        !          4320:        No longer define predicate functions; done by genoutput.c.
        !          4321:        * tm-mips.h: No longer define SEPARATE_AUX_OUTPUT.
        !          4322:        * out-*.c: Add includes previously present in insn-output.c.
        !          4323:        * out-sparc.c (output_fp_move_double): No longer static.
        !          4324:        (output_sized_memop): No longer need to define asm_out_file here.
        !          4325:        (output_function_epilogue): Correct type; function is void, not char *.
        !          4326: 
        !          4327: Fri May  3 01:05:44 1991  Micheal Tiemann  (tiemann at pogo.gnu.ai.mit.edu)
        !          4328: 
        !          4329:        * sdbout.c (sdbout_one_type): TYPE_FIELDs may contain other kinds of
        !          4330:        _DECL nodes than just FIELD_DECL nodes (in GNU C++, at least).
        !          4331:        Don't look through such nodes until further mods are made to handle
        !          4332:        them better.
        !          4333: 
        !          4334: Thu May  2 14:43:48 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          4335: 
        !          4336:        * c-decl.c (finish_enum): Don't store enum type as type of value.
        !          4337: 
        !          4338:        * c-parse.y (YYPRINT, yyprint): New macro and new function.
        !          4339: 
        !          4340:        * expmed.c (expand_and): Handle both args constant.
        !          4341: 
        !          4342:        * expr.c (store_field): Avoid refetching from bitfield if possible.
        !          4343: 
        !          4344:        * math-68881.h (pow): Negate x if negative when taking log.
        !          4345: 
        !          4346:        * expr.c (emit_move_insn): Fixed typo in `y1 = change_address' call.
        !          4347:        Reenable the code to move objects word at a time.
        !          4348: 
        !          4349: Thu May  2 12:29:16 1991  Eric Youngdale  (youngdale at v6550c.nrl.navy.mil)
        !          4350: 
        !          4351:        * cccp.c (hack_vms_include_specification): Modified conversion of
        !          4352:        unix filenames to VMS filenames, if no VMS device or directory is
        !          4353:        present, and a unix style directory name is present, then use the
        !          4354:        first unix directory name as the VMS device spec. This is only
        !          4355:        used in '#include <...>' type includes, when the include file has
        !          4356:        not been found in the standard locations.
        !          4357: 
        !          4358: Thu May  2 10:06:47 1991  Micheal Tiemann  (tiemann at pogo.gnu.ai.mit.edu)
        !          4359: 
        !          4360:        * cplus-decl.c (init_decl_processing): Call init_gc_processing if
        !          4361:        -fgc is requested.
        !          4362:        * cplus-init.c (build_new): Argument to build_compound_expr must be
        !          4363:        a TREE_LIST all the way.  The last elt of the chain cannot be an
        !          4364:        _EXPR.
        !          4365: 
        !          4366: Thu May  2 07:33:50 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          4367: 
        !          4368:        * expr.c (expand_expr, case CONVERT_EXPR): Pass bitsize to store_field
        !          4369:        instead of size in bytes.
        !          4370: 
        !          4371: Wed May  1 13:33:58 1991  Micheal Tiemann  (tiemann at pogo.gnu.ai.mit.edu)
        !          4372: 
        !          4373:        * version.c: Bumped version number to 1.93.
        !          4374: 
        !          4375: Wed May  1 12:26:36 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          4376: 
        !          4377:        * gcc.c (link_command_spec): Pass plain -m to ld.
        !          4378: 
        !          4379:        * c-decl.c (finish_enum): Clean up re-laying out of type.
        !          4380: 
        !          4381: Wed May  1 08:04:44 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          4382: 
        !          4383:        * Makefile.in: Handle new cplus-*.c files.
        !          4384: 
        !          4385:        * cplus-typeck.c (common_base_type): Make this function recursive.
        !          4386:        (build_component_ref): Test whether or not a FIELD_DECL, not whether
        !          4387:        or not a VAR_DECL||CONST_DECL||TYPE_DECL.
        !          4388: 
        !          4389:        * cplus-parse.y: Fixed grammar so that template type decls could be
        !          4390:        used.  Previously, support existed for template decls following
        !          4391:        types, but not as types.
        !          4392:        * cplus-pt.c ({push,pop}_template_decls): New functions.
        !          4393:        (instantiate_template): Call `push_template_decls'.
        !          4394:        (end_template_instantiation): Let `poplevel' restore old bindings.
        !          4395:        No need to clear out extra stuff.
        !          4396:        (pushclass, popclass): Call `{push,pop}_template_decls' if the class
        !          4397:        we are pushing or popping has template arguments.  These arguments
        !          4398:        go at class level.
        !          4399: 
        !          4400:        * cplus-method.c (build_opfncall): Test TRY_SECOND before testing
        !          4401:        possibly uninitialized XARG2.
        !          4402: 
        !          4403:        * cplus-lex.c (init_lex): Initialize NODE_TABLE, OPNAME_TAB and
        !          4404:        ASSIGNOP_TAB to hold zero.  Since these come from malloc'd memory,
        !          4405:        we cannot trust them to be initialized on startup.
        !          4406: 
        !          4407:        * cplus-init.c (expand_aggr_init_1): When initializing through a
        !          4408:        TARGET_EXPR for objects of the same type (e.g., X a = X (10);)
        !          4409:        use EXP's DECL_RTL as the DECL_RTL of the TARGET_EXPR.
        !          4410: 
        !          4411:        * cplus-decl2.c (finish_file): Handle new flag `-fgnu-binutils'.
        !          4412:        When zero, don't use GNU extensions to a.out format.  ???Should be
        !          4413:        merged into varasm.c.
        !          4414: 
        !          4415:        * cplus-class.c: Added support for `dossiers'.  This support is
        !          4416:        implemented by extending the virtual function table and by giving
        !          4417:        all C++ objects a virtual function table to hold it's dossier.
        !          4418:        * cplus-decl.c (record_builtin_type): New function to construct
        !          4419:        dossier information for built-in types.
        !          4420:        (output_builtin_tdesc_entries): To keep repeated information under
        !          4421:        control, we only output this information for the file that contains
        !          4422:        `main'.
        !          4423:        (init_decl_processing): Many dossier-related changes.   
        !          4424:        (init_lex): Recognize new reserved words `headof' and `classof' if
        !          4425:        -fgc.
        !          4426:        * cplus-parse.y: Grammar now recognizes `headof' and `classof'
        !          4427:        expressions.
        !          4428:        * cplus-method.c: Added dossier constructors here.
        !          4429:        * cplus-tree.h (CLASSTYPE_DOSSIER): New macro: `dossier' is a new
        !          4430:        field in lang_type.
        !          4431:        * cplus-typeck.c (convert_for_assignment): Handle
        !          4432:        `class_star_type_node'.
        !          4433: 
        !          4434:        * cplus-class.c: New variable current_class_depth.  Used to tell
        !          4435:        what class nesting level the compiler is at.
        !          4436:        * cplus-decl.c (grokdeclarator): Now supports references to decls
        !          4437:        that come from nested types.  For example, int foo::bar (foo_tag);
        !          4438:        where `foo_tag' is a tag that comes from foo.  Previously this was
        !          4439:        supported only as int foo::bar (foo::foo_tag);
        !          4440:        * cplus-decl2.c (build_push_scope): build a SCOPE_REF node while
        !          4441:        pushing into the context for the scope.  When `grokdeclarator' sees
        !          4442:        one of these nodes (distinuished by its TREE_COMPLEXITY being set to
        !          4443:        the current_class_depth), it processes the decl and pops the scope.
        !          4444: 
        !          4445:        * cplus-class.c (build_vbase_path): Trust objects that are
        !          4446:        `fixed_type_p'.  Also, don't assume an object is non-null unless
        !          4447:        flag says this is explicitly so.  InterViews creates and may
        !          4448:        manipulate (via delete) lots of null objects.
        !          4449:        (build_vfn_reference): Use IS_AGGR_TYPE test on type, not in
        !          4450:        INSTANCE.
        !          4451:        (resolves_to_fixed_type_p): New argument NONNULL is used in case we
        !          4452:        know and object to be non-zero.  All callers changed.
        !          4453: 
        !          4454:        * cplus-call.c: New file, from file cplus-class.c.  Contains code to
        !          4455:        generate method calls.
        !          4456:        * cplus-class.h: New file, contains common declarations for
        !          4457:        cplus-class.c and cplus-call.c.
        !          4458: 
        !          4459:        * cplus-class.c (finish_struct_bits): Don't leave last_conversions
        !          4460:        uninitialized.
        !          4461: 
        !          4462: Tue Apr 30 17:14:00 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          4463: 
        !          4464:        * expr.c (expand_expr):
        !          4465:        Preserve volatility when changing ARRAY_REF to use a pointer.
        !          4466: 
        !          4467:        * vax.md (indirect_jump): Use parens around register, not @.
        !          4468: 
        !          4469:        * fixincludes (machine/cpu.h): Delete superfluous `static'.
        !          4470: 
        !          4471:        * tm-decstatn.h (CPP_PREDEFINES): Define __mips and __LANGUAGE_C.
        !          4472: 
        !          4473:        * explow.c (allocate_dynamic_stack_space): Compensate if
        !          4474:        STACK_POINTER_OFFSET throws off the alignment.
        !          4475: 
        !          4476:        * loop.c (strength_reduce): Typos setting not_every_iteration.
        !          4477: 
        !          4478: Tue Apr 30 16:10:32 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          4479: 
        !          4480:        * vax.md (bicb): Fix typo that caused operand not to be negated.
        !          4481:        (jlbs/jlbc): Operand[0] cannot be a constant.
        !          4482: 
        !          4483:        * rtl.h: Put NOTE_INSN_... codes in order.
        !          4484:        (find_regno_note): Add missing definition.
        !          4485: 
        !          4486:        * reload.c (find_reloads_address): Handle an indexed stack slot that
        !          4487:        is made out of range by frame pointer elimination.
        !          4488: 
        !          4489: Tue Apr 30 14:09:28 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          4490: 
        !          4491:        * toplev.c (compile_file): Output gcc2_compiled, not gcc_compiled.
        !          4492:        * tm-tower-as.h (ASM_IDENTIFY_GCC): Likewise.
        !          4493: 
        !          4494: Tue Apr 30 13:56:40 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          4495: 
        !          4496:        * varasm.c (output_addressed_constants): Return and indication of
        !          4497:        whether the variable requires link-time relocations.
        !          4498:        (assemble_variable, get_or_assign_label): Use this value when
        !          4499:        choosing the section.  Use the data section for variables and
        !          4500:        constants that are otherwise read-only when -fpic is given and
        !          4501:        when link-time relocations are required.
        !          4502:        * tm-*.h (SELECT_SECTION): Accept a new second parameter RELOC.
        !          4503: 
        !          4504: Tue Apr 30 10:24:36 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          4505: 
        !          4506:        * rtl.h (NOTE_INSN_LOOP_VTOP), rtl.c (note_insn_name): Add a new
        !          4507:        note indicating the virtual top of a loop.
        !          4508:        * jump.c (duplicate_loop_exit_test): Mark the duplicated exit code
        !          4509:        in the loop as the virtual top of the converted loop.
        !          4510:        (squeeze_notes): Move loop-vtop notes as well.
        !          4511:        * loop.c (scan_loop): When a loop-vtop note is encountered, reset
        !          4512:        `maybe_never' and `call_passed'.
        !          4513:        (strength_reduce): Similarly, reset `not_every_iteration'.
        !          4514: 
        !          4515: Tue Apr 30 08:15:50 1991  Michael Meissner  (meissner at osf.org)
        !          4516: 
        !          4517:        * expr.c (do_store_flag): Move the join label after setting the
        !          4518:        target value to 0, rather than before, which generates code that
        !          4519:        always stores 0 into the target if the machine does not have a
        !          4520:        builtin scc operation.
        !          4521: 
        !          4522: Tue Apr 30 06:26:36 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          4523: 
        !          4524:        * reload1.c (reload): When making reg_equiv_mem and reg_equiv_address
        !          4525:        from reg_equiv_memory_loc, clear the one we aren't setting; it might
        !          4526:        have been previously set.
        !          4527: 
        !          4528:        * final.c (final_scan_insn): Correctly handle when the first insn in a
        !          4529:        SEQUENCE is a JUMP_INSN that forces restoration of a comparison
        !          4530:        previously thought unnecessary.
        !          4531: 
        !          4532:        * fold-const.c (fold, case PLUS_EXPR): If we have 2 * real_cst, 
        !          4533:        fold into a new constant instead of making real_cst + real_cst.
        !          4534: 
        !          4535: Mon Apr 29 23:09:17 1991  Ken Raeburn  (raeburn at watch.com)
        !          4536: 
        !          4537:        * cplus-decl.c (output_builtin_tdesc_entries): Corrected
        !          4538:        declaration of permanent_obstack.
        !          4539:        (init_decl_processing): Record declaration of int with name "int"
        !          4540:        rather than null.
        !          4541:        (finish_decl): Fix typo in comment.
        !          4542: 
        !          4543:        * cplus-class.c (finish_struct): Made error message for union
        !          4544:        member requiring constructor/destructor a little tidier.
        !          4545:        (resolve_scope_to_name): Look at fields of current type as well as
        !          4546:        tags, in case of local typedefs.
        !          4547:        (build_method_call): Permit explicit call of destructor in class
        !          4548:        that doesn't have one.  (That's what the ARM says....)
        !          4549: 
        !          4550:        * cplus-decl.c (set_nested_typename): New function, extracted from
        !          4551:        within pushtag.  Extended to deal with null classname.
        !          4552:        (pushtag): Call it.
        !          4553:        (pushdecl): For a TYPE_DECL, ensure that the nested typename gets
        !          4554:        set.
        !          4555:        (pushdecl_class_level): Ditto.
        !          4556:        (constructor_name): Test various assertions.
        !          4557:        (hack_incomplete_structures): If type is a class template, punt.
        !          4558: 
        !          4559:        * cplus-input.c (getch): Renamed from get_character.  Callers
        !          4560:        changed.
        !          4561:        cplus-lex.c (old getch): Deleted.
        !          4562: 
        !          4563:        * cplus-lex.c (save_pending_input, restore_pending_input): New
        !          4564:        functions for saving and restoring lexer state.
        !          4565:        (process_next_inline): Restore lexer state after each function.
        !          4566:        cplus-pt.c (end_template_instantiation): Ditto.
        !          4567:        cplus-input.c (struct input_source, getch, feed_input): Preserve
        !          4568:        putback_char and lexer state.
        !          4569: 
        !          4570:        * cplus-input.c (getch): Return magic cookie on end of saved input
        !          4571:        for lexer to recognize.
        !          4572:        cplus-lex.c (yylex): Turn it into END_OF_SAVED_INPUT.
        !          4573:        (process_next_inline): Require it after inline function body.
        !          4574: 
        !          4575:        * cplus-lex.c (do_pending_inlines): Don't save away current
        !          4576:        file/line-no info; character input processing should do that.
        !          4577:        (yyungetc): Turn conditional abort into assertion test.
        !          4578:        (note_list_got_semicolon): Since variable "type" is available, use
        !          4579:        it rather than recompute.
        !          4580:        (identifier_type): Now static.
        !          4581:        (yylex): Warn about conflicts with class template expansion names.
        !          4582: 
        !          4583:        * cplus-parse.y (temporary_scope): New variable.
        !          4584:        (object and scoped_id actions): Set it to current type.
        !          4585:        (many other actions): Clear it.
        !          4586:        (scoped_typename): Now derivable also from scoped_id and TYPENAME.
        !          4587:        cplus-lex.c (yylex): If temporary_scope is set, use it to
        !          4588:        determine type of current token being examined, instead of looking
        !          4589:        always in the global scope.  (Can't properly do nested template
        !          4590:        classes otherwise.)
        !          4591: 
        !          4592:        * cplus-ptree.c (print_lang_decl): Print out template-info,
        !          4593:        original-name, decl-main-variant, and pending-inline-info nodes if
        !          4594:        not null.
        !          4595: 
        !          4596:        * cplus-pt.c (mangle_class_name_for_template): For negative
        !          4597:        numbers, use "m" prefix rather than printf's "-".
        !          4598:        (overload_template_name): Test more assertions.  Use
        !          4599:        SET_IDENTIFIER_TYPE_VALUE macro.
        !          4600:        (lookup_template_class): Assert template decl node is non-null.
        !          4601:        Push to permanent obstacks for new allocations.
        !          4602:        (instantiate_template): Return new class type in a list.
        !          4603: 
        !          4604:        * cplus-pt.c (undo_template_name_overload): Clear type local
        !          4605:        definition of template name.
        !          4606:        (end_template_instantiation): Call it.
        !          4607:        cplus-parse.y (structsp actions): Ditto.
        !          4608:        (named_class_head_sans_basetype): Don't call
        !          4609:        overload_template_name here.
        !          4610:        (named_class_head): Call xref_tag, to define a tag, before calling
        !          4611:        it here.
        !          4612: 
        !          4613:        * cplus-parse.y (tmpl.1, tmpl.2): Delete type declarations, since
        !          4614:        they have no values.
        !          4615:        (yyprint, YYPRINT): New function and macro to work with debugging
        !          4616:        code added to bison.
        !          4617:        (datadef -> template_header... actions): Assign yychar, rather
        !          4618:        than calling yyungetc and yylex.  Require trailing semicolon.
        !          4619:        (fn.def1 -> PRE_PARSED_FUNCTION_DECL action): Preserve all of
        !          4620:        terminal value, instead of just TREE_PURPOSE.
        !          4621:        (tmpl.1 action): Do instantiation only if '{' or ':' not found.
        !          4622:        (template_instantiation): Call overload_template_name right away.
        !          4623:        (primary -> .scope new '(' typename ')' '[' ...): Detect and warn
        !          4624:        about this construct, which appears to be recognizeable, though
        !          4625:        disallowed by the ARM.
        !          4626:        (primary -> delete[]): Return error_mark_node.
        !          4627:        (primary -> obj TYPESPEC::~TYPESPEC()): Catch, parse as valid.
        !          4628:        Returned value not determined yet.
        !          4629:        (typespec): No longer derived from PTYPENAME.
        !          4630:        (LC): Added missing semicolon at end of rule.
        !          4631:        (stmt): A PTYPENAME can also be used as a label name.
        !          4632: 
        !          4633: Mon Apr 29 22:18:47 1991  James Van Artsdalen  (james at bigtex.cactus.org)
        !          4634: 
        !          4635:        * tm-att386.h (ASM_OUTPUT_LOCAL): Align static local variables.
        !          4636: 
        !          4637: Mon Apr 29 15:20:35 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          4638: 
        !          4639:        * fold-const.c (fold): Don't assume an address is nonzero.
        !          4640:        * cse.c (fold_rtx): Likewise.
        !          4641: 
        !          4642:        * stmt.c (warn_if_unused_value): No warning for cast of cast of modify.
        !          4643: 
        !          4644:        * Makefile.in (USER_H): Remove float.h.
        !          4645: 
        !          4646: Mon Apr 29 13:46:48 1991  Jim Wilson  (wilson at cygnus.com)
        !          4647: 
        !          4648:        * loop.c (scan_loop): When see a REG_EQUAL note, check for both
        !          4649:        the move_insn and the REG_RETVAL case, since they can occur together.
        !          4650:        (move_movables): For the move_insn case, handle library calls just
        !          4651:        like the older normal case code below, that is, skip to the end of a
        !          4652:        library call when when see a REG_LIBCALL note, and delete an entire
        !          4653:        library call if when see a REG_RETVAL note.
        !          4654: 
        !          4655: Mon Apr 29 12:58:19 1991  Jim Wilson  (wilson at cygnus.com)
        !          4656: 
        !          4657:        * sched.c: (schedule_block): Rewrite code that computes which
        !          4658:        registers are live at the end of the block.  Compute this from
        !          4659:        basic_block_live_at_start info of current block, instead of from
        !          4660:        all reachable blocks.  Previous code failed if one of the
        !          4661:        reachable blocks consisted of dead code.
        !          4662:        (sched_note_set): Set bb_live_regs when DEATH is false.
        !          4663: 
        !          4664:        * sched.c: Update copyright.  Correct various problems with
        !          4665:        indentation and white space.
        !          4666:        (canon_rtx): Delete obsolete code handling INSN_LIST rtx.  Add
        !          4667:        code to recurse on the operands of a PLUS rtx.
        !          4668:        (find_symbolic_term): New function.  Recursively search an rtx for
        !          4669:        a SYMBOL_REF or a LABEL_REF and return pointer to one if found.
        !          4670:        (memrefs_conflict_p): No longer needs to call canon_rtx on
        !          4671:        operands of a plus.  Now handles case of two addresses with
        !          4672:        different base addresses.
        !          4673:        (schedule_block): Don't set INSN_DELETED_P bit of ignored notes.
        !          4674:        Verify that REG_DEAD notes have a register value.
        !          4675:        (sched_analyze_1): Ifdef out obsolete code which calculates cc0
        !          4676:        dependencies.
        !          4677:        (sched_analyze): Likewise.
        !          4678:        (schedule_block): Likewise.
        !          4679:        (launch_links): Delete obsolete code for handling SPARC 'orcc' insns.
        !          4680: 
        !          4681: Mon Apr 29 12:09:32 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          4682: 
        !          4683:        * configure: Allow spaces between options and their args.
        !          4684: 
        !          4685: Mon Apr 29 06:35:09 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          4686: 
        !          4687:        * jump.c (jump_optimize): Don't emit jump to next insn; this would
        !          4688:        cause jump_optimize to loop.
        !          4689:        (jump_optimize, duplicate_loop_end_test, do_cross_jump): Never put
        !          4690:        insn in jump_chain if its INSN_UID is too large.
        !          4691:        (redirect_tablejump): Likewise.
        !          4692: 
        !          4693: Sun Apr 28 08:00:01 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          4694: 
        !          4695:        * cplus-decl.c (init_decl_processing): Merge changes in builtin
        !          4696:        function handling to match the way that c-decl.c now works.
        !          4697:        Also add global variables to support that change.
        !          4698:        (define_function): Ditto.
        !          4699: 
        !          4700:        * cplus-decl2.c: Add flags for gc and xref.
        !          4701:        * cplus-tree.h (DECL_GC_OFFEST): New macro for gc.
        !          4702:        * cplus-tree.h: Rearrange CLASSTYPE_ASSOC and CLASSTYPE_BASETYPES so
        !          4703:        that the former now uses TYPE_LANG_SPECIFIC storage, and the latter
        !          4704:        uses TYPE_BASETYPES.
        !          4705:        * cplus-tree.h: Change overload names of new and delete to `nw' and
        !          4706:        `dl'.  Formerly, `new' was being seen as `ne', the encoding for `not
        !          4707:        equal'.
        !          4708: 
        !          4709:        * cplus-xref.c: New file.  Adds support for generating
        !          4710:        cross-reference information such as a class browser or program
        !          4711:        analyzer would use.
        !          4712: 
        !          4713:        * cplus-gc.c: New file.  Add support for garbage collection.
        !          4714:        * cplus-decl.c (finish_decl): Tie decls to their places in the
        !          4715:        garbage collector.
        !          4716:        * cplus-init.c (build_new): Added hooks for gc.
        !          4717:        * cplus-typeck.c (convert_arguments): protect arguments from the
        !          4718:        garbage collector if -fgc.
        !          4719:        (build_modify_expr): More gc-related changes.
        !          4720: 
        !          4721: Fri Apr 26 07:31:26 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          4722: 
        !          4723:        * integrate.c (expand_inline_function): Add missing increment of I.
        !          4724: 
        !          4725: Thu Apr 25 11:07:11 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          4726: 
        !          4727:        * m88k.md (various patterns): Use nonimmediate_operand in place of
        !          4728:        reg_or_nonsymb_mem_operand and constraint `m' in place of `Q'.
        !          4729:        * tm-m88k.h (EXTRA_CONSTRAINT): Only needed for a call address.
        !          4730:        * out-m88k.c: reg_or_nonsymb_mem_operand and symbolic_memory_p are
        !          4731:        now unused.
        !          4732: 
        !          4733:        * m88k.md (symbolic store patterns): These patterns are all
        !          4734:        unnecessary and are deleted.
        !          4735:        * out-m88k.c (emit_move_sequence): Eliminate the case that
        !          4736:        generated a CLOBBER.  This was intended to use the symbolic store
        !          4737:        patterns, but isn't needed.
        !          4738:        (symbolic_memory_operand): Delete, no longer used.
        !          4739:        (output_prologue): Don't check for suspicious register elimination
        !          4740:        changes.
        !          4741:        * tm-m88k.h (GO_IF_LEGITIMATE_ADDRESS): Treat the frame pointer
        !          4742:        like the argument pointer as both may change to REG+SMALLINT.
        !          4743: 
        !          4744: Tue Apr 23 15:08:03 1991  Jim Wilson  (wilson at cygnus.com)
        !          4745: 
        !          4746:        * out-sparc.c (output_scc_insn): Clean up and expand comments.
        !          4747:        Don't assume that JUMP_LABEL fields are always valid, they aren't
        !          4748:        when compiling without optimization.
        !          4749: 
        !          4750: Mon Apr 22 13:56:43 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          4751: 
        !          4752:        * cplus-class.c (prepare_fresh_vtable): Thoroughly update virtual
        !          4753:        function tables that come from baseclasses to contain the latest
        !          4754:        overrides from derived classes.  This was done (in a different way)
        !          4755:        for virtual baseclasses, but left undone for non-virtual
        !          4756:        baseclasses.
        !          4757:        (finish_struct_bits): Use assoc lists instead of class basetype list
        !          4758:        to walk through the classes base classes.  This gives us more
        !          4759:        relavant classes to check against.
        !          4760:        * cplus-init.c (init_vfields): New function to recursively walk
        !          4761:        objects and make sure their vfields are initialized.
        !          4762:        * cplus-init.c (emit_base_init): Call `init_vfields' from top level.
        !          4763: 
        !          4764:        * cplus-tree.h (TYPE_IDENTIFIER): New macro, gives the
        !          4765:        IDENTIFIER_NODE for a given aggr TYPE.
        !          4766:        * cplus-class.c (add_method): Use TYPE_IDENTIFIER.
        !          4767:        * cplus-cvt.c (various places): Ditto.
        !          4768: 
        !          4769:        * cplus-class.c (finish_struct): Add TYPE_DECLs to the list of a
        !          4770:        class's members that come from the types implicitly declared tags.
        !          4771: 
        !          4772:        * cplus-decl.c (grokdeclarator): If a function is declared `static
        !          4773:        inline', don't give it global visibility, regardless of what #pragma
        !          4774:        interface/implementation suggests.
        !          4775: 
        !          4776:        * cplus-decl.c (finish_function): ??? Questionable change for PIC:
        !          4777:        don't let constructors and destructors that manipulate vtables go
        !          4778:        inline, since this somehow reduces page sharing.  Really???
        !          4779: 
        !          4780:        * cplus-except.c (init_exception_processing): Use `pushdecl' to
        !          4781:        install global info that this function sets up.  That way later
        !          4782:        decls can override this info (such as with an inline function).
        !          4783: 
        !          4784:        * cplus-init.c (build_vec_delete): Set TREE_SIDE_EFFECTS of
        !          4785:        controller.  Otherwise the loop won't execute.
        !          4786: 
        !          4787:        * cplus-method.c (prepare_inline): Rewritten and simplified.
        !          4788:        (do_inline_method_hair): Ditto.
        !          4789: 
        !          4790:        * cplus-tree.c (lang_output_debug_info): Only output nested type if
        !          4791:        we would also output enclosing type.
        !          4792: 
        !          4793:        * cplus-typekc.c (c_expand_return): Use pseudo for intermediate
        !          4794:        return value if necessary.  GCC can't read the function return
        !          4795:        registers in an inline functino when the return value is being
        !          4796:        ignored.
        !          4797: 
        !          4798: Mon Apr 22 14:36:01 1991  Jim Wilson  (wilson at cygnus.com)
        !          4799: 
        !          4800:        * sched.c (init_alias_analysis): Handle REG_EQUIV notes just like
        !          4801:        REG_EQUAL notes.
        !          4802: 
        !          4803:        * sched.c (sched_analyze_2): Don't recurse on constant rtx's.
        !          4804:        This is necessary so that the cc0_rtx in CONST_DOUBLEs won't be seen.
        !          4805:        (sched_analyze): Call sched_analyze_insn for JUMP_INSNS also, so
        !          4806:        that cc0 users will get an automatic dependence on their previous
        !          4807:        insn.
        !          4808:        (launch_links): Ifdef out special treatment of insns which set the
        !          4809:        condition codes.  This is obsolete, and was SPARC specific anyways.
        !          4810:        (new_sometimes_live): Clarify code that aborts if regno is greater
        !          4811:        than max_regno.
        !          4812:        (schedule_block): If the last insn sets cc0, then it must always
        !          4813:        be left in place.
        !          4814:        (new_insn_dead_notes): New function.  Determines whether a SET or
        !          4815:        CLOBBER in an insn created by splitting needs a REG_DEAD or
        !          4816:        REG_UNUSED note added.
        !          4817:        (update_links): Ignore REG_EQUIV and REG_EQUAL notes on insns that
        !          4818:        have more than one set.  Generalize flow analysis of the sets in
        !          4819:        the new insns so that it can handle new insns which have multiple
        !          4820:        sets or new clobbers.
        !          4821: 
        !          4822: Mon Apr 22 08:15:50 1991  Michael Meissner  (meissner at osf.org)
        !          4823: 
        !          4824:        * gcc.c (input_suffix): New global var; holds current file's suffix.
        !          4825:        (handle_braces): Substitute X in %{.S:X} if the current file has
        !          4826:        suffix .S.  Similarly, substitute X in %{!.S:X} if the current file
        !          4827:        does not have suffix .S.
        !          4828:        (validate_switches): Ignore .S part in %{.S:X} construct.
        !          4829: 
        !          4830: Sat Apr 20 14:41:17 1991  Micheal Tiemann  (tiemann at pogo.gnu.ai.mit.edu)
        !          4831: 
        !          4832:        * final.c (leaf_function_p): Define this in any event.
        !          4833: 
        !          4834: Sat Apr 20 10:45:43 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          4835: 
        !          4836:        * loop.c (check_dbra_loop): Use GET_RTX_CLASS when appropriate.
        !          4837:        Check for setting biv with single_set rather than only allowing a SET.
        !          4838:        If a loop has a `break', we can't reverse it.
        !          4839: 
        !          4840:        * cse.c (cse_insn): Fold inside operands of a CALL (mostly to find the
        !          4841:        best address form to use).
        !          4842: 
        !          4843:        * cse.c (simplify_unary_operation): Convert (neg (neg ..)) to NEG.
        !          4844:        Similarly for NOT.
        !          4845:        (simplify_binary_operation): Simplify things like (-a) + b.
        !          4846:        Convert UDIV with divisor a constant power of two into LSHIFTRT.
        !          4847:        Similarly for UMOD.
        !          4848:        Only fold shifts of a zero by a value into zero if the value has
        !          4849:        no side effects.
        !          4850:        Remove code to handle negative shift counts.
        !          4851: 
        !          4852:        * tm-a29k.h (OPTIMIZATION_OPTIONS): Allow insn scheduling to be
        !          4853:        enabled, now that it works for the 29k.
        !          4854: 
        !          4855:        * tm-rs6000.h (LINK_SPEC): Add "-bhalt:4" to LINK_SPEC (don't ask!).
        !          4856: 
        !          4857: Fri Apr 19 13:18:52 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          4858: 
        !          4859:        * explow.c (memory_address): Test `cse_not_expected' instead of
        !          4860:        `optimize' so that we don't make new pseudos after flow is run.
        !          4861: 
        !          4862:        * genflags.c (gen_insn): If extra condition is more than one line,
        !          4863:        use \'s to make proper multi-line macro definition.
        !          4864: 
        !          4865: Thu Apr 18 13:40:01 1991  Jim Wilson  (wilson at cygnus.com)
        !          4866: 
        !          4867:        * loop.c (check_dbra_loop): Reenable no_use_except_for_counting code
        !          4868:        which was mistakenly ifdefed out as buggy.  The actual bug was in
        !          4869:        strength_reduce, and has already been fixed.
        !          4870: 
        !          4871: Thu Apr 18 09:47:25 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          4872: 
        !          4873:        * loop.c (record_giv): Allow for the case where regno_last_uid
        !          4874:        of DEST_REG has been moved or deleted.
        !          4875: 
        !          4876:        * rtlanal.c (replace_regs): Add missing argument in recursive call.
        !          4877: 
        !          4878:        * recog.c (nonmemory_operand): Only call general_operand for
        !          4879:        a SUBREG if it is a MEM, just like register_operand.
        !          4880: 
        !          4881:        * local-alloc.c (block_alloc): Handle case where the last insn of
        !          4882:        a REG_NO_CONFLICT block requires some CLOBBERs, but is a single SET.
        !          4883: 
        !          4884:        * out-romp.c, out-rs6000.c (next_insn_tests_no_unsigned): If a
        !          4885:        REG_UNUSED note for (cc0) is present on INSN, return 1.
        !          4886: 
        !          4887:        * jump.c (delete_jump): If the previous insn sets cc0 but we can't
        !          4888:        delete it for some reason, add a REG_UNUSED note for cc0 in that insn.
        !          4889: 
        !          4890:        * out-a29k.c: Rename input_operand to in_operand and output_operand
        !          4891:        to out_operand to avoid conflict with output_operand in final.c.
        !          4892:        * a29k.md: Likewise.
        !          4893:        (call patterns): Don't put SYMBOL_REF in MEM for recursive call;
        !          4894:        it might not be recursive if inlined; let cse do it later.
        !          4895:        * tm-a29k.h (RTX_COST, ADDRESS_COST): All addresses have the same
        !          4896:        cost, but MEM is expensive.
        !          4897: 
        !          4898: Tue Apr 16 16:01:47 1991  Michael Meissner  (meissner at osf.org)
        !          4899: 
        !          4900:        * configure: Add osfrose, osf, and mips/dec-osfrose.
        !          4901: 
        !          4902:        * out-mips.c (toplevel): Include necessary include files so
        !          4903:        out-mips.c can be compiled separately.
        !          4904:        (g_switch_value): New variable to hold -G xx value.
        !          4905:        (g_switch_set): New variable to indicate if -G xx used.
        !          4906:        (current_function_file): New variable to hold last .file.
        !          4907:        (file_in_function_warning): New variable to hold if we've warned the
        !          4908:        user that ECOFF can't switch files within a function.
        !          4909:        (mips_rtx_classify): New array to classify an insn.
        !          4910:        (mips_reg_names): New array to hold the register names.
        !          4911:        REGISTER_NAMES initializes all elements to point into here, and
        !          4912:        override_options resets the names if -mrnames is used.
        !          4913:        (mips_sw_reg_names): New array to hold the alternate register names.
        !          4914:        (mips_regno_to_class): New array to map hard register number to
        !          4915:        register class.
        !          4916:        (uns_arith_operand): Rewrite so call to register_operand is done
        !          4917:        last, not first.
        !          4918:        (arith_operand): ditto.
        !          4919:        (arith32_operand): ditto.
        !          4920:        (large_int): New function to return true if int constant will take 2
        !          4921:        instructions to load into a register.
        !          4922:        (reg_or_0_operand): New function to return true if a register or
        !          4923:        constant 0 is the operand for use in store patterns.
        !          4924:        (md_register_operand): New function to return true if either the hi
        !          4925:        or lo register is used.
        !          4926:        (mips_const_double_ok): New function to return true if a
        !          4927:        CONST_DOUBLE can be used as a constant in a RTL expression.  At
        !          4928:        present, only DImode constants and 0.0 is allowed.
        !          4929:        (simple_memory_operand): New function to return true if a memory
        !          4930:        reference is a simple register + small offset.
        !          4931:        (gp_memory_operand): New function to return true if a memory
        !          4932:        reference uses the global pointer.
        !          4933:        (mips_move_instructions): New function to handle all data movement
        !          4934:        of one word or less.
        !          4935:        (mips_move_2words_instructions): New function to handle all data
        !          4936:        movement of two words.
        !          4937:        (init_cumulative_args): Remove print_tree debug call.
        !          4938:        (function_arg_partial_nregs): Fix bug in passing structures where
        !          4939:        the wrong field was used.
        !          4940:        (print_options): Enable this function, body was in #if 0.
        !          4941:        (override_options): Spell function name with two r's.  Change how
        !          4942:        the -G xx and -mGx options are handled.  If neither passed use the
        !          4943:        appropriate default.  If -mgas make sure debug format is DBX, and if
        !          4944:        not -mgas, use SDB debug format.  If -mrnames and -mgas, give an
        !          4945:        error message, otherwise set up mips_reg_names.  Set up the
        !          4946:        mips_rtx_classify array.
        !          4947:        (print_options): New function instead of a long macro.  Add %C to
        !          4948:        print part of the opcode for a branch condition, %N to print the
        !          4949:        inverted branch condition, %( to do .set noreorder, %) to do .set
        !          4950:        reorder, %[ to do .set noat, %] to do .set at, %& to do .set
        !          4951:        noreorder if filling delay slots, and %# to print nop if delay slot
        !          4952:        not filled.
        !          4953:        (print_operand_address): New function instead of a long macro.
        !          4954:        (compute_frame_size): New function to abstract all the frame related
        !          4955:        information like frame size, saved registers, etc.
        !          4956:        (save_restore): Common function between the prologue and epilogue to
        !          4957:        save/restore the registers in the proper order.  Make $31 saved at
        !          4958:        function pc +4.
        !          4959:        (function_prologue): Call compute_frame_size and save_restore.  Make
        !          4960:        sure the appropriate .file is done before any statement in the
        !          4961:        prologue since the MIPS ECOFF requires this.
        !          4962:        (function_epilogue): Call compute_frame_size and save_restore.
        !          4963: 
        !          4964:        * tm-decstatn.h (CPP_PREDEFINES): Define the appropriate macros.
        !          4965:        (*_SPEC): Move the DECstation related specs here from tm-mips.h.
        !          4966: 
        !          4967:        * tm-decrose.h (new file): File to support OSF/1 with OSF/rose
        !          4968:        object format.
        !          4969: 
        !          4970:        * tm-mips-sysv.h (CPP_PREDEFINES): Define the appropriate macros.
        !          4971:        (*_SPEC): Move the DECstation related specs here from tm-mips.h.
        !          4972: 
        !          4973:        * tm-mips-bsd.h (CPP_PREDEFINES): Define the appropriate macros.
        !          4974:        (*_SPEC): Move the DECstation related specs here from tm-mips.h.
        !          4975: 
        !          4976:        * tm-mips-news.h (CPP_PREDEFINES): Define the appropriate macros.
        !          4977:        (*_SPEC): Move the DECstation related specs here from tm-mips.h.
        !          4978: 
        !          4979:        * tm-iris.h (CPP_PREDEFINES): Define the appropriate macros.
        !          4980:        (*_SPEC): Move the DECstation related specs here from tm-mips.h.
        !          4981:        (SET_FILE_NUMBER): Define, so that .file number is always 1.
        !          4982:        (LABEL_AFTER_LOC): Define, so that a label appears after .loc.
        !          4983:        (STACK_ARGS_ADJUST): Iris frames require 32 bytes at the top of the
        !          4984:        call frame instead of the normal MIPS 16.
        !          4985: 
        !          4986:        * mips.md (all): Add first cut at attributes to identify insn type.
        !          4987:        (all): Where appropriate, use @ form for alternates, instead of
        !          4988:        using C code.
        !          4989:        (define_delay): Put arithmetic and one word stores in call, jump,
        !          4990:        branch delay slots.
        !          4991:        (define_function_unit): Add functional unit definitions for memory
        !          4992:        and integer multiply/divide.
        !          4993:        (anonymous add/subtract insn): Remove support for reg + large offset
        !          4994:        that omitting the frame pointer caused in 1.xx to see if it is
        !          4995:        needed anymore.
        !          4996:        (mulsi3): Add clobbers for the hi/lo registers.  Add a define_split
        !          4997:        and an anonymous define_insn to separate the mult instruction from
        !          4998:        the mflo.
        !          4999:        (divmodsi4): Add clobbers for the hi/lo registers.
        !          5000:        (udivmodsi4): Add clobbers for the hi/lo registers.
        !          5001:        (divsi3): Add clobbers for the hi/lo registers.  Restrict divides
        !          5002:        and modulus to register / register.
        !          5003:        (modsi3): ditto.
        !          5004:        (udivsi3): ditto.
        !          5005:        (ymodsi3): ditto.
        !          5006:        (divide peepholes): Add two peepholes to catch divide followed by
        !          5007:        modulus of the same values.
        !          5008:        (anddi3): Remove pattern, use default behavior.
        !          5009:        (iordi3): Remove pattern, use default behavior.
        !          5010:        (xordi3): Remove pattern, use default behavior.
        !          5011:        (truncsiqi2): Remove pattern, use default behavior.
        !          5012:        (truncsihi2): Remove pattern, use default behavior.
        !          5013:        (trunchiqi2): Remove pattern, use default behavior.
        !          5014:        (truncdfsf2): Remove asm comment.
        !          5015:        (extendhisi2): Add a define_split for shift case.
        !          5016:        (extendqisi2): Add a define_split for shift case.
        !          5017:        (extendqihi2): Add a define_split for shift case.
        !          5018:        (movdi): Turn into a define_expand to guarantee that memory <->
        !          5019:        memory moves go through a register.
        !          5020:        (movsi): ditto.
        !          5021:        (movhi): ditto.
        !          5022:        (movqi): ditto.
        !          5023:        (movsf): ditto.
        !          5024:        (movdf): ditto.
        !          5025:        (movdi_internal): new define_insn.  Add fp registers to the
        !          5026:        alternatives.  Call mips_move_2words_instructions to do the actual
        !          5027:        movement.  Require memory addresses to be offsetable.
        !          5028:        (movdf_internal): ditto.
        !          5029:        (movsi_internal): new define_insn.  Add storing 0 to memory
        !          5030:        directly using $0.  Add transfer to/from multiply/divide registers,
        !          5031:        and to the fp status register.  Call mips_move_instructions to do
        !          5032:        the actual work.
        !          5033:        (movhi_internal): ditto.
        !          5034:        (movqi_internal): ditto.
        !          5035:        (movsf_internal): ditto.
        !          5036:        (jump): Add %& to turn on .set noreorder if filling delay slot.
        !          5037:        (tablejump): Ditto.
        !          5038:        (call): Ditto.
        !          5039:        (call_value): Ditto.
        !          5040:        (indirect_jump): New required pattern, add %& for delay slot.
        !          5041:        (nop): Use %( %) to turn on/off .set noreorder.
        !          5042:        (probe): Use %[ %] to turn on/off .set noat.
        !          5043: 
        !          5044:        * tm-mips.h (abort): Define abort to be fancy_abort for now.
        !          5045:        (toplevel): Move all extern's to the start of the file, rather than
        !          5046:        scattered throughout.
        !          5047:        (OPTIMIZATION_OPTIONS): New macro, -O sets -fomit-frame-pointer, and
        !          5048:        -fdelayed-branch.  -O2 sets -fstrength-reduce, -fcse-follow-jumps,
        !          5049:        -fexpensive-optimizations, -fthread-jumps, -frerun-cse-after-loop.
        !          5050:        -O3 sets -finline-functions.
        !          5051:        (*_SPEC): Move most of the target specific spec's to the appropriate
        !          5052:        file, rather than defining them in tm-mips.h.  Defaults are for MIPS
        !          5053:        RISC-OS with default system.
        !          5054:        (CPP_SPEC): If preprocessing .S files, define LANGUAGE_ASSEMBLY
        !          5055:        instead of LANGUAGE_C.
        !          5056:        (MIPS_VERSION): Add meissner version number.
        !          5057:        (MIPS_DEBUGGING_INFO): Define this for the future.
        !          5058:        (TARGET_*): reorder which bit means what.  Add bits so we can tell
        !          5059:        whether any of the -mG[012] options were used.  Redefine some debug
        !          5060:        switches.
        !          5061:        (BYTES_BIG_ENDIAN): Always define to 0/1 now.
        !          5062:        (WORDS_BIG_ENDIAN): Always define to 0/1 now.
        !          5063:        (MAX_PARM_BOUNDARY): Delete, since it's no longer used.
        !          5064:        (BIGGEST_FIELD_ALIGNMENT): Define to be 64.
        !          5065:        (CONSTANT_ALIGNMENT): New macro, make sure strings are aligned.
        !          5066:        (DATA_ALIGNMENT): New macro, make sure byte arrays are aligned.
        !          5067:        (FIRST_PSEUDO_REGISTER): Bump to 67, add hi, lo, fcr31.
        !          5068:        (FIXED_REGISTERS): Add initializations for hi, lo, and fcr31.
        !          5069:        (CALL_USED_REGISTERS): Add initializations for hi, lo, and fcr31.
        !          5070:        (MD_REG_P): New macro to return if hi/lo register.
        !          5071:        (ST_REG_P): New macro to return if fp control register.
        !          5072:        (HARD_REGNO_NREGS): Return 4 for single precision complex.
        !          5073:        (MODES_TIEABLE_P): Add complex float type support.
        !          5074:        (FRAME_POINTER_REQUIRED): Make this always 0.
        !          5075:        (NO_RECURSIVE_FUNCTION_CSE): New macro, define as 1.
        !          5076:        (enum reg_class): Add class for the hi register, lo register, either
        !          5077:        hi or lo registers, status registers.
        !          5078:        (REG_CLASS_NAMES): Support new register classes.
        !          5079:        (REG_CLASS_CONTENTS): ditto.
        !          5080:        (REG_CLASS_FROM_LETTER): ditto.
        !          5081:        (REGNO_REG_CLASS): Use an array to map register # -> class.
        !          5082:        (CONST_OK_FOR_LETTER_P): Add `L' for constants which have bottom 16
        !          5083:        bits all zero, and `M' which require two instructions to load.
        !          5084:        (CONST_DOUBLE_OK_FOR_LETTER_P): Use `CONST_DOUBLE_HIGH' and
        !          5085:        `CONST_DOUBLE_LOW'.
        !          5086:        (EXTRA_CONSTRAINT): New macro, `Q' for gp memory references, and `R'
        !          5087:        for reg + small offset references.
        !          5088:        (struct mips_frame_info): New structure to hold all frame related
        !          5089:        information, calculated by compute_frame_size.
        !          5090:        (INITIAL_FRAME_POINTER_OFFSET): New macro, use compute_frame_size to
        !          5091:        calculate where the frame should go.
        !          5092:        (ACCUMULATE_OUTGOING_ARGS): New macro, define so stack pushes are
        !          5093:        folded into the frame.
        !          5094:        (REG_PARM_STACK_SPACE): Redefine to take an argument and return 16.
        !          5095:        (OUTGOING_REG_PARM_STACK_SPACE): New macro, define to say we must
        !          5096:        allocate stack space for arguments passed in registers.
        !          5097:        (TARGET_FLOAT_FORMAT): New macro, define as IEEE_FLOAT_FORMAT.
        !          5098:        (FUNCTION_ARG_BOUNDARY): New macro to determine argument padding
        !          5099:        requirements.
        !          5100:        (MIPS_STACK_ALIGN): New name for AL_ADJUST_ALIGN macro.
        !          5101:        (FIX_FRAME_POINTER_ADDRESS): Delete, no longer used.
        !          5102:        (FUNCTION_PROFILER): No longer have to switch between different
        !          5103:        register names, override_options now sets up reg_names correctly.
        !          5104:        (TRAMPOLINE_TEMPLATE): New macro, define as a dummy.
        !          5105:        (TRAMPOLINE_SIZE): ditto.
        !          5106:        (INITIALIZE_TRAMPOLINE): ditto.
        !          5107:        (INDIRECTABLE_ADDRESS): Delete, fold into GO_IF_LEGITIMATE_ADDRESS.
        !          5108:        (GO_IF_LEGITIMATE_ADDRESS): If -mdebuga, don't allow <label>(<reg>)
        !          5109:        type addresses, which the machine really doesn't support, but you
        !          5110:        currently get better code in some instances by pretending it does
        !          5111:        support it.
        !          5112:        (LEGITIMATE_CONSTANT_P): Call mips_const_double_ok if CONST_DOUBLE.
        !          5113:        (ENCODE_SEGMENT_INFO): New macro, set SYMBOL_REF_FLAG (ie, volatil)
        !          5114:        if refering to an item via the gp pointer.
        !          5115:        (SLOW_BYTE_ACCESS): Define to 1, it is supposed to generate better
        !          5116:        code on RISC machines.
        !          5117:        (classify_op): New macro to classify an insn.
        !          5118:        (additive_op): Use classify_op to figure out if PLUS or MINUS.
        !          5119:        (divmod_op): New macro to identify DIV, MOD, UDIV, UMOD insns.
        !          5120:        (unsigned_op): New macro to identify UDIV, UMOD insns.
        !          5121:        (REGISTER_NAMES): All names are now pointers into mips_reg_names, so
        !          5122:        that we don't have to continually test whether -mrnames is used or
        !          5123:        not.  The override_options function sets this up appropriately.
        !          5124:        (REGISTER_NUMCHAR): Deleted.
        !          5125:        (REG_NAME): Deleted.
        !          5126:        (ADDITIONAL_REGISTER_NAMES): Define both names for the gp registers,
        !          5127:        so people can use either $r4 or a0 in asm statements.
        !          5128:        (PRINT_OPERAND): Call print_operand function instead of expanding a
        !          5129:        huge macro.  Add %C, %N, %(, %), %[, %], %&, %#.
        !          5130:        (PRINT_OPERAND_PUNCT_VALID_P): Add `(', `)', `[', `]', `&', and `#'.
        !          5131:        (PRINT_OPERAND_ADDRESS): Call print_operand_address function instead
        !          5132:        of expanding a huge macro.
        !          5133:        (DBX_OUTPUT_SEQEND): New macro, emit .set reorder after filling
        !          5134:        delay slot(s).
        !          5135:        (ASM_OUTPUT_SOURCE_FILENAME): Add check for doing .file of same file
        !          5136:        -- this is needed for the prologue to do a .file before all prologue
        !          5137:        instructions, rather than after the instructions which set up the
        !          5138:        stack.  Also, warn about #line requests that cannot be honored in
        !          5139:        MIPS ECOFF binaries.
        !          5140:        (ASM_OUTPUT_CASE_END): Delete, since it was only used to go back to
        !          5141:        the text section, and GCC does this now automatically.
        !          5142:        (READONLY_DATA_SECTION): New macro, define to be rdata_section.
        !          5143:        (SELECT_SECTION): Don't force volatile readonly items into .data.
        !          5144:        (ASM_COMMENT_START): New macro, define to be '\t\t# ' for -dp.
        !          5145:        (SEPARATE_AUX_OUTPUT): New macro, define this to separately compile
        !          5146:        out-mips.c.
        !          5147: 
        !          5148: Tue Apr 16 15:00:51 1991  Jim Wilson  (wilson at cygnus.com)
        !          5149: 
        !          5150:        * unroll.c (final_giv_value): Use expand_binop instead of
        !          5151:        gen_sub2_insn when emitting subtract insns, since expand_binop
        !          5152:        will work for any operands.
        !          5153: 
        !          5154:        * sched.c (schedule_insns): Don't split no-op moves; doing so
        !          5155:        breaks the code that handles REG_NO_CONFLICT blocks.
        !          5156:        (update_links): Delete the code that prints a warning for
        !          5157:        REG_EQUAL notes where the original dest can't be found.  This no
        !          5158:        longer occurs because of the above change.
        !          5159: 
        !          5160:        * sched.c: Generalize memory aliasing code so that it will work on
        !          5161:        non-RISC machines.  Instead of saving just the insn on the pending
        !          5162:        lists, now saves both the insn and the mem rtx.  Old variables
        !          5163:        pending_read and pending_write replaced with pending_read_insns,
        !          5164:        pending_read_mems, pending_write_insns, and pending_write_mems.
        !          5165:        (read_dependence, true_dependence, anti_dependence,
        !          5166:        output_dependence): Now passed a MEM rtx instead of a PATtern.
        !          5167:        (add_insn_mem_dependence): New function.  Adds an insn and a mem
        !          5168:        to a pending list pair.
        !          5169:        (sched_analyze_1, sched_analyze_2, sched_analyze): Modified to use
        !          5170:        new pending list scheme.
        !          5171:        (schedule_block): Likewise.
        !          5172:        (schedule_insns): Likewise.
        !          5173: 
        !          5174: Tue Apr 16 12:31:07 1991  Jeffrey A. Law  (law at mole.gnu.ai.mit.edu)
        !          5175: 
        !          5176:        * Makefile.in (install-man): Look for protoize.1 and unprotoize.1
        !          5177:        in the current directory, not $(srcdir)
        !          5178:        (install-headers): Use basename to strip off $(srcdir) from 
        !          5179:        include files when installing and changing mode.
        !          5180: 
        !          5181: Tue Apr 16 08:10:38 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          5182: 
        !          5183:        * rs6000.md (extendqixi2): Add CLOBBER to the first SET as well as
        !          5184:        the second.
        !          5185:        (load_multiple): Fix typo in operand number and add newline.
        !          5186: 
        !          5187:        * reload.c (find_reloads_address_1): Pass actual location of a
        !          5188:        MEM used in an address; also handle the case when the MEM was
        !          5189:        copied.  Ensure we reload the copy, not the original address.
        !          5190: 
        !          5191:        * reload1.c (eliminate_regs, case {INSN,EXPR}_LIST): Correctly handle
        !          5192:        the cases when one or more operations is (nil).
        !          5193: 
        !          5194:        * local-alloc.c (block_alloc): Check for REG_EQUAL on list insn
        !          5195:        of REG_NO_CLOBBER sequence, not first.
        !          5196:        (no_conflict_p): Set LAST and use INSN instead of P for loop start.
        !          5197: 
        !          5198: Mon Apr 15 12:55:12 1991  Jim Wilson  (wilson at cygnus.com)
        !          5199: 
        !          5200:        * loop.c (strength_reduce): Don't emit an insn after loop_end to
        !          5201:        set the final value of a reversed biv.  There is already an insn
        !          5202:        there setting the biv's proper final value.
        !          5203: 
        !          5204: Sun Apr 14 18:32:05 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          5205: 
        !          5206:        * gnulib1.c (various functions): Added declaration of INTIFY to
        !          5207:        every function which has a FLOAT_ARG_TYPE argument or return value.
        !          5208: 
        !          5209: Sun Apr 14 18:31:59 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          5210: 
        !          5211:        * c-decl.c (store_parm_decls): Traditional float parm becomes double.
        !          5212: 
        !          5213: Sat Apr 13 17:35:07 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          5214: 
        !          5215:        * m68k.md (storing 32-bit field with movl): Allow any immediate arg 3.
        !          5216: 
        !          5217:        * expmed.c (store_bit_field): For fields bigger than a word:
        !          5218:        Avoid special use of SImode, and don't crash if VALUE is CONST_INT.
        !          5219: 
        !          5220: Fri Apr 12 02:04:46 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          5221: 
        !          5222:        * reload.c (find_reloads): Like prev change here, for optional reloads.
        !          5223: 
        !          5224:        * tm-sparc.h (FUNCTION_BLOCK_PROFILER): Must set %o0 to the address
        !          5225:        LPBX0 by adding in the low part of the address before calling
        !          5226:        ___bb_init_func.
        !          5227: 
        !          5228:        * tm-next.h (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR):
        !          5229:        New macros.  Place reference to constructor or destructor into
        !          5230:        constructor or destructor section.
        !          5231: 
        !          5232:        * tm-next.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS):  Add
        !          5233:        new constructor and destructor sections.
        !          5234: 
        !          5235:        * jump.c (squeeze_block_notes,squeeze_notes): Chage the name of
        !          5236:        squeeze_block_notes to squeeze_notes.  Also handle LOOP_BEG, LOOP_CONT
        !          5237:        and LOOP_END notes, since these must remain in their original order.
        !          5238: 
        !          5239:        * cccp.c (skip_to_end_of_comment): Handle warn_comment.
        !          5240: 
        !          5241:        * m68k.md (dbra patterns): Use `=' in constraint of op 0.
        !          5242: 
        !          5243:        * gcc.c (process_command): Handle -save-temps.
        !          5244:        (do_spec_1): Handle %g like %b if -save-temps.
        !          5245:        (verbose_flag): Renamed from `vflag'.
        !          5246: 
        !          5247:        * tm-sparc.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Don't define this.
        !          5248: 
        !          5249: Fri Apr 12 00:57:48 1991  Jim Wilson  (wilson at cygnus.com)
        !          5250: 
        !          5251:        * sched.c: Update all comments to reflect source changes.
        !          5252:        Make old_live_regs a static global, instead of local to schedule_block.
        !          5253:        Schedule_block is now void, since its return value was always 1.
        !          5254:        Rename last_function_call_not_const to last_pending_memory flush.
        !          5255:        This can not be a CALL_INSN or a INSN that writes memory.
        !          5256:        New variable pending_lists_length so that the lists can be flushed
        !          5257:        when they get too long.
        !          5258:        Use GET_RTX_CLASS instead of multiple GET_CODE calls whenever it
        !          5259:        makes sense.
        !          5260:        (read_dependence): New Function.  Returns one if two reads are
        !          5261:        dependent.  This can happen if both are volatile reads.
        !          5262:        (true_dependence, anti_dependence, output_dependence): Two volatile
        !          5263:        memory access are always dependent.
        !          5264:        (order_calls): Function deleted.  It was very short, it was only called
        !          5265:        once, and it no longer did what its name implied.  Its one call was
        !          5266:        replaced with the body of the function.
        !          5267:        (sched_analyze_1): Correctly handle stripping of SUBREGs, etc from
        !          5268:        the set dest.
        !          5269:        If the pending lists are longer than 32 when processing a memory
        !          5270:        write, then make this write depend on all previous and all future
        !          5271:        memory accesses so we can flush the pending list.  This is necessary
        !          5272:        because the algorithms used are O(N*N).
        !          5273:        (sched_analyze_2): For memory reads, check whether it is read
        !          5274:        dependent on any previous memory read (this can happen if both reads
        !          5275:        are volatile).
        !          5276:        (sched_analyze_insn): Replace call to order_calls with the body of
        !          5277:        that function.
        !          5278:        (sched_analyze): Don't clear last_memory_pending_flush for a non-const
        !          5279:        call, since any future call must still depend on all previous memory
        !          5280:        accesses.
        !          5281:        (sched_note_set): Correct handling of SUBREGs, etc.  For partial sets
        !          5282:        of a register, must treat this exactly the same way as flow.c, i.e.
        !          5283:        a partial set of a register does not kill the register.  Delete
        !          5284:        ifdefed out code which is obsolete.
        !          5285:        (attach_deaths): New argument SET_P, which indicates whether this is
        !          5286:        a set (if true) or a use (if false) of the rtx X.  Correct handling
        !          5287:        of REG_DEAD notes, to account for the new REG_UNUSED note.
        !          5288:        (attach_deaths_insn): Pass new additional parameter to attach_deaths.
        !          5289:        Always call attach_deaths for sets within a parallel.  Call
        !          5290:        attach_deaths for clobbers.
        !          5291:        (new_sometimes_live): Ifdef out code which should never be executed,
        !          5292:        and replaced with call to abort.
        !          5293:        (schedule_block): Now void.
        !          5294:        When processing block to find dead_regs, don't unlink REG_UNUSED notes,
        !          5295:        but must mark the indicated register as dead.
        !          5296:        (update_links): Completely rewritten to make more general.  Now handles
        !          5297:        all REG_NOTEs except REG_INC and REG_LABEL.  No longer makes simple
        !          5298:        assumptions about the form of instructions.  New argument orig_insn,
        !          5299:        which is the original unsplit insn.
        !          5300:        (schedule_insns): Delete unused volatilep code.  Pass new parameter
        !          5301:        to update_links.
        !          5302: 
        !          5303: Thu Apr 11 15:34:44 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          5304: 
        !          5305:        * out-m88k.c (pic_addressing_base_rtx): Use pic_offset_table_rtx
        !          5306:        instead.  Otherwise, PIC fails miserably for inline functions.
        !          5307:        (legitimize_address): Support -mbig-pic.
        !          5308:        (print_operand): Add `g' for printing #got_rel (for -mbig-pic).
        !          5309:        * tm-m88k.h (CONDITIONAL_REGISTER_USAGE): PIC_OFFSET_TABLE_REGNUM
        !          5310:        is used and is fixed for PIC.
        !          5311:        (GO_IF_LEGITIMATE_ADDRESS): Distinguish the -mbig-pic case.
        !          5312:        * m88k.md (SImode hi16/lo16): Use %g for -mbig-pic.
        !          5313: 
        !          5314: Wed Apr 10 21:53:32 1991  Jim Wilson  (wilson at cygnus.com)
        !          5315: 
        !          5316:        * unroll.c: Change global variable declarations to static.
        !          5317:        Four new global variables loop_iteration_var, loop_initial_value,
        !          5318:        loop_increment, and loop_final_value, used for communication between
        !          5319:        loop_iterations and precondition_loop_p.
        !          5320:        (unroll_loop): Before deleteing the insns in the original loop body,
        !          5321:        emit a label after the last insn to be deleted, to ensure that no
        !          5322:        delete_insn call will delete past that point.
        !          5323:        (precondition_loop_p): Use global loop_* variables setup by
        !          5324:        loop_iterations, instead of trying to calculate their values again.
        !          5325:        (copy_loop_body): Don't emit copies of the start_label.
        !          5326:        (approx_final_value): COMPARISON argument now passed as the pair
        !          5327:        COMPARISON_CODE and COMPARISON_VALUE.
        !          5328:        (find_splittable_regs): When completely unrolling a loop, and the
        !          5329:        initial value of a biv is a hard register or itself, then must
        !          5330:        create a new register to hold its initial value for splitting.
        !          5331:        (loop_iterations): Set the new global variables loop_*.
        !          5332:        If the comparison value is an invariant register, then search the insns
        !          5333:        before the loop to try to find a constant value for the register.
        !          5334: 
        !          5335: Wed Apr 10 16:02:16 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          5336: 
        !          5337:        * out-m88k.c (pic_addressing_base_rtx): A pseudo register coined
        !          5338:        for each function as needed in legitimize_address.
        !          5339:        (emit_move_sequence): Use legitimize_address instead of generating
        !          5340:        HIGH/LO_SUM.
        !          5341:        (legitimize_address): Rework, based on the sparc version, to
        !          5342:        implement PIC.
        !          5343:        (output_call): Use the #plt form when doing PIC.
        !          5344:        (m88k_layout_frame): The addressing base register is no longer
        !          5345:        fixed and r1 need not be saved for PIC.
        !          5346:        (output_prologue): Output instructions to setup the addressing
        !          5347:        base register if one is needed.
        !          5348:        (print_operand_address): Support the PIC case.
        !          5349:        * m88k.md (most patterns using hi16/lo16): Disable these for PIC.
        !          5350:        * tm-m88k.h (CONDITIONAL_REGISTER_USAGE): No longer needed.
        !          5351:        (ADDRESSING_BASE_REGNUM): Derived from pic_addressing_base_rtx.
        !          5352:        (GO_IF_LEGITIMATE_ADDRESS): Accept the PIC case.
        !          5353:        (LEGITIMIZE_ADDRESS): Use legitimize_address instead of HIGH/LO_SUM.
        !          5354: 
        !          5355:        * make-m88k, make-m88kdgux: Use SysV INSTALL = cp and for DG/UX,
        !          5356:        use the bison -l option to allow debugging in c-parse.tab.c.
        !          5357: 
        !          5358:        * From [email protected].
        !          5359:        * out-m88k.c: Include insn-config.h before conditions.h, which
        !          5360:        requires it.
        !          5361:        * xm-m88kdgux.h: Define SEPARATE_AUX_OUTPUT before including config.h.
        !          5362:        * tm-m88k.h: Declare MD functions only if SEPARATE_AUX_OUTPUT.
        !          5363: 
        !          5364:        * tm-m88k.h, tm-m88kdgux.h, tm-m88ksvr4.h: Rework TARGET_VERSION.
        !          5365: 
        !          5366: Wed Apr 10 08:19:02 1991  Richard Stallman  (rms at apple-gunkies)
        !          5367: 
        !          5368:        * caller-save.c (emit_mult_restore): Typo testing offset[regno] sign.
        !          5369: 
        !          5370:        * fold-const.c (target_isinf): Test real value for infinitude.
        !          5371:        * real.h (REAL_VALUE_ISINF): Use target_isinf.
        !          5372: 
        !          5373:        * configure: Change / to -- in value of `target' in Makefile.
        !          5374: 
        !          5375: Tue Apr  9 20:09:49 1991  James Van Artsdalen  (james at bigtex.cactus.org)
        !          5376: 
        !          5377:        * configure: Modify assignment to `target' in Makefile.
        !          5378:        (AIX target): Use correct config files.
        !          5379:        
        !          5380:        * make-aix386: New file.
        !          5381: 
        !          5382: Tue Apr  9 19:28:16 1991  Torbjorn Granlund  (tege at zevs.sics.se)
        !          5383: 
        !          5384:        * longlong.h (header):
        !          5385:        Modify definition of count_leading_zeros for input = 0.
        !          5386:        * (68020): Test for __NeXT__ too.
        !          5387:        * (68020 __umulsidi3, umul_ppmm, udiv_qrnnd):
        !          5388:        Use constraints "dmi", not "g" (avoid address registers).
        !          5389:        * (88000 add_ssaaa, sub_ddmmss): Use r modifier for output
        !          5390:        templates, use J, not I, as constraint for the carry-in insns
        !          5391:        * (at the end of the file): If UDIV_NEEDS_NORMALIZATION is not
        !          5392:        defined, define it as 0.
        !          5393: 
        !          5394: Tue Apr  9 19:14:34 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          5395: 
        !          5396:        * function.c (optimize_bit_field): Fix typo.
        !          5397: 
        !          5398:        * cccp.c (do_define): Don't crash when a builtin macro is
        !          5399:        redefined.
        !          5400: 
        !          5401: Tue Apr  9 15:11:42 1991  Richard Stallman  (rms at apple-gunkies)
        !          5402: 
        !          5403:        * expr.c (move_by_pieces): Don't fail to compile if no movqi.
        !          5404: 
        !          5405:        * emit-rtl.c (get_last_insn_anywhere): Use first nonempty seq.
        !          5406: 
        !          5407:        * varasm.c (assemble_constructor): Fix typo.
        !          5408: 
        !          5409: Fri Apr  5 22:15:57 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          5410: 
        !          5411:        * rs6000.md (extendqixi): Add CLOBBER to ASHIFTRT insn.
        !          5412: 
        !          5413:        * combine.c (simplify_shift_const): Shift operand of PLUS using
        !          5414:        correct mode.
        !          5415:        Correctly simplify outer_const when done.
        !          5416: 
        !          5417:        * reload.c (push_reload): Don't de-reference INLOC if it is 0.
        !          5418: 
        !          5419:        * expr.c (convert_to_mode): Call protect_from_queue.
        !          5420: 
        !          5421: Fri Apr  5 13:29:55 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          5422: 
        !          5423:        * varasm.c (ASM_OUTPUT_CONSTRUCTOR, ASM_OUTPUT_DESTRUCTOR):
        !          5424:        Accept two arguments.
        !          5425: 
        !          5426: Fri Apr  5 08:45:18 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          5427: 
        !          5428:        * expmed.c (expand_divmod): Convert OP1 to COMPUTE_MODE when we
        !          5429:        convert OP0.
        !          5430: 
        !          5431:        * combine.c (subst): Use gen_binary.
        !          5432:        (simplify_comparison): If we have a ZERO_EXTRACT from a constant
        !          5433:        with only one bit set, convert into comparison of position with
        !          5434:        location of bit in constant; this simplifies ((1 << x) & 1) == 0.
        !          5435: 
        !          5436:        * combine.c (gen_lowpart_for_combine): Copy code for CONST_DOUBLE
        !          5437:        from gen_lowpart instead of calling it; it will abort for certain
        !          5438:        floating-point cases, while we will just surround the object with
        !          5439:        a SUBREG.
        !          5440: 
        !          5441: Thu Apr  4 22:31:36 1991  Jim Wilson  (wilson at cygnus.com)
        !          5442: 
        !          5443:        * unroll.c (new file): Implements loop unrolling.  Completely
        !          5444:        unrolls small constant bounded loops.  Unrolls other constant
        !          5445:        bounded loops by an amount modulo the number of iterations so that
        !          5446:        only one exit test is needed.  Preconditions loops whose iteration
        !          5447:        count can be calculated at run time, so that only one exit test
        !          5448:        is needed.  Can also unroll any other loop by having multiple
        !          5449:        copies of the exit tests.  Tries to simplify addresses while
        !          5450:        unrolling.
        !          5451: 
        !          5452:        * tree.def: BLOCK trees have 4 fields, not 5.
        !          5453: 
        !          5454:        * toplev.c: Add new flag -dt to dump RTL after the second cse pass.
        !          5455:        Define two new flags, flag_unroll_loops and flag_unroll_all_loops,
        !          5456:        and add code to support their use for loop unrolling.  Print the
        !          5457:        exec time for the shorten-branch pass in the proper place, i.e.
        !          5458:        after delayed branch reorganization.
        !          5459: 
        !          5460:        * stmt.c (find_loop_tree_blocks): New function.  Creates a mapping
        !          5461:        between BLOCK trees and loops.  This info is needed when doing both
        !          5462:        loop unrolling and outputting debugger info.
        !          5463:        (unroll_block_trees): New function.  Makes COPIES copies of the block
        !          5464:        trees corresponding the loop indicated by LOOP_NUMBER, so that the
        !          5465:        BLOCK notes inside the loop will still match the BLOCK trees for
        !          5466:        the loop.
        !          5467: 
        !          5468:        * rtl.h: Document the new named pattern
        !          5469:        "decrement_and_branch_until_zero".  Add macros to access new
        !          5470:        field of inline_header rtx, which holds a pointer to the function's
        !          5471:        original DECL_INITIAL tree.
        !          5472: 
        !          5473:        * rtl.def: New entry for inline_header to hold a pointer to the
        !          5474:        function's original DECL_INITIAL tree.
        !          5475: 
        !          5476:        * loop.h (new file): Move many declarations from loop.c to the new
        !          5477:        file loop.h, and change some from static to extern, so that they
        !          5478:        can be shared with unroll.c.  Also globalize names for variables
        !          5479:        changed from static to extern.
        !          5480: 
        !          5481:        * loop.c: Move many declarations from loop.c to the new file loop.h,
        !          5482:        and change some from static to extern, so that they can be shared
        !          5483:        with unroll.c.  Add misc comments to better explain the code.
        !          5484:        Change name of global arrays loop_start and loop_end to
        !          5485:        loop_number_loop_starts and loop_number_loop_ends so that they won't
        !          5486:        be confused with local loop_start and loop_end variables.
        !          5487:        New variables loop_number_exit_labels, loop_number_first_block,
        !          5488:        loop_number_last_block, loop_number_block_level, loop_n_iterations.
        !          5489:        Old_max_reg renamed to max_reg_before_loop.  Max_uid renamed to
        !          5490:        max_uid_for_loop.  Induct_var renamed to reg_iv_type.
        !          5491:        Induct_struct renamed to reg_iv_info.  Class_struct renamed to
        !          5492:        reg_biv_class.  Iv_list renamed to loop_iv_list.
        !          5493:        Rename (struct induction) field always to always_computable.
        !          5494:        Rename (struct induction) field family to next_iv.
        !          5495:        New (struct induction) field not_replaceable.
        !          5496:        (loop_opt): Add code to allocate some new arrays for unrolling
        !          5497:        support.  Add call to find_loop_tree_blocks to create the BLOCK tree
        !          5498:        to loop map needed when unrolling and outputting debugger info.
        !          5499:        (scan_loop): Fix setting of maybe_never of label/jump.  The old code
        !          5500:        always failed.
        !          5501:        (prescan_loop): Delete obsolete code.
        !          5502:        (find_and_verify_loops): Add code to initialize
        !          5503:        loop_number_exit_labels.
        !          5504:        (mark_loop_jump): Add code for keep chain of loop_number_exit_labels
        !          5505:        for each loop.
        !          5506:        (invariant_p): LABEL_REFs are not invariant when doing loop unrolling.
        !          5507:        Remove static from definition, so that it can be called from unroll.c.
        !          5508:        (strength_reduce): Change name of variable maybe_never to
        !          5509:        not_every_iteration, to help emphasize that it is not the same
        !          5510:        as the variable maybe_never in the code motion code.  Modify code
        !          5511:        that computes its value so that it will be false more often, resulting
        !          5512:        in better code.
        !          5513:        (strength_reduce): Added code to call the new loop unrolling
        !          5514:        functions, e.g. unroll_loop, loop_iterations, etc.
        !          5515:        (strength_reduce): New code to handle biv's and giv's which must
        !          5516:        be set to their final_value after the loop exits.
        !          5517:        (strength_reduce): Reversed giv's and biv's must have their values
        !          5518:        calculated differently.  Add new field reversed to struct induction,
        !          5519:        and code to check and use its value.
        !          5520:        (strength_reduce): Only check value of bl->nonneg for architectures
        !          5521:        that have a decrement_and_branch_until_zero instruction.
        !          5522:        (find_mem_givs): New argument loop_start.
        !          5523:        (record_giv): New argument loop_start.
        !          5524:        The always_computable field for DEST_ADDR givs is always set true.
        !          5525:        New code to check for case of spaghetti code, in which case the
        !          5526:        giv can never be considered replaceable.
        !          5527:        (check_final_value): New function. For givs which are not otherwise
        !          5528:        replaceable, try to calculate their final value, and then try
        !          5529:        to use this to make them replaceable.
        !          5530:        (update_giv_derive): Skip inner loop if giv is known to be underivable
        !          5531:        at the beginning.  Must set cant_derive if we pass an insn that
        !          5532:        modifies the giv's biv, and we can't calculate an adjustment.
        !          5533:        (emit_iv_add_mult): Remove static definition so that it is callable
        !          5534:        from unroll.c.
        !          5535:        (check_dbra_loop): Reversed biv's must be marked as such, so that
        !          5536:        they can be treated specially in the rest of loop.c.
        !          5537:        (final_biv_value): Moved to unroll.c, alongside the new function
        !          5538:        final_giv_value.  Extensively rewritten to work for most common
        !          5539:        cases.
        !          5540:        (update_reg_last_use): Verify that insns have a valid luid before
        !          5541:        trying to use it.  Don't perform any action if no value luid.
        !          5542:        (get_condition): Correct initial comment.
        !          5543:        (get_condition_for_loop): Remove static definition so it is callable
        !          5544:        from unroll.c.
        !          5545: 
        !          5546:        * integrate.h: Replace `tree' use in definition with
        !          5547:        `union tree_node *' so that tree.h does not have to be included when
        !          5548:        this file is included.  
        !          5549: 
        !          5550:        * integrate.c (initialize_for_inline): Pass additional argument,
        !          5551:        the DECL_INITIAL (fndecl) tree, to gen_inline_header_rtx.  Update
        !          5552:        and correct comment.
        !          5553:        (save_for_inline_copying): Copy the decl tree, so that virtual reg
        !          5554:        instantiation, and loop unrolling, won't affect the saved tree.
        !          5555:        (copy_decl_tree): New argument, functionbody, which distinguished
        !          5556:        between calls from save_for_inline_copying and calls from
        !          5557:        expand_inline_function.
        !          5558:        (copy_rtx_and_substitute): Return orig instead of aborting when
        !          5559:        inline_target is zero so that loop unrolling can use this code.
        !          5560: 
        !          5561:        * gcc.texinfo: Document the new optimization flags -funroll-loops
        !          5562:        and -funroll-all-loops, the new dump option -dt, and the new named
        !          5563:        pattern "decrement_and_branch_until_zero".
        !          5564: 
        !          5565:        * flags.h: Define two new flags, flag_unroll_loops and
        !          5566:        flag_unroll_all_loops.
        !          5567: 
        !          5568:        * emit-rtl.c (gen_inline_header_rtx): New argument
        !          5569:        original_decl_initial.  Pass to gen_rtx call.
        !          5570: 
        !          5571:        * alliant.md, m68k.md: Name the pattern that uses the REG_NONNEG
        !          5572:        note to "decrement_and_branch_until_zero".
        !          5573: 
        !          5574:        * Makefile.in: Add source file unroll.c and header file loop.h to
        !          5575:        the cc1 dependencies.  Add *.cse2 to the list of files deleted by
        !          5576:        `make clean'.
        !          5577: 
        !          5578: Thu Apr  4 16:13:37 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          5579: 
        !          5580:        * varasm.c (assemble_constructor, assemble_destructor): New functions.
        !          5581:        They use ASM_OUTPUT_CONSTRUCTOR and ASM_OUTPUT_DESTRUCTOR.
        !          5582:        * cplus-decl2.c (finish_file): Use them.
        !          5583: 
        !          5584:        * reload.c (find_reloads): Pass location as outloc for output reload.
        !          5585: 
        !          5586:        * objc-actions.c (objc_class_id, synth_module_prologue):
        !          5587:        Initialize new variable to hold identifier for "objc_class".
        !          5588: 
        !          5589:        * objc-actions.c (objc_comptypes): Allow assigning between types
        !          5590:        id and Class without warning.
        !          5591: 
        !          5592:        * c-typeck.c (warn_for_assignment): When there is a type mismatch
        !          5593:        in the hidden arguments of a message expression, don't print the
        !          5594:        argument number as 0 or -1.  Instead print the warning as would
        !          5595:        be done for an explicit call to objc_msgSend (this should never
        !          5596:        happen, but just in case).
        !          5597: 
        !          5598:        * emit-rtl.c (gen_lowpart): Reverse #if for CONST_DOUBLE case.
        !          5599: 
        !          5600: Thu Apr  4 13:27:02 1991  Michael Meissner  (meissner at osf.org)
        !          5601: 
        !          5602:        * hard-reg-set.h (SET_HARD_REG_BIT, CLEAR_HARD_REG_BIT,
        !          5603:        TEST_HARD_REG_BIT): Use unsigned arithmetic to isolate the word and
        !          5604:        bit number, which produces better optimized code.
        !          5605: 
        !          5606: Thu Apr  4 07:34:17 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          5607: 
        !          5608:        * reorg.c (relax_delay_slots): Avoid adjusting LABEL_NUSES if the
        !          5609:        insn is a conditional return.
        !          5610: 
        !          5611:        * reload1.c (reload): If we find that a replacement cannot be
        !          5612:        done and that replacement now enables a secondary replacement,
        !          5613:        this may disable a third replacement in some cases.
        !          5614:        (eliminate_regs, case SET): Don't stop after we find the first
        !          5615:        match when looking for modified registers.
        !          5616: 
        !          5617:        * combine.c (previous_num_undos): New var.
        !          5618:        (try_combine): Set it after each call to subst.
        !          5619:        When substituting I1 into I2, somtimes make a copy of PATTERN (i2).
        !          5620:        (gen_rtx_combine): Start at PREVIOUS_NUM_UNDOS.
        !          5621: 
        !          5622:        * combine.c (can_combine_p): Start check for volatile references
        !          5623:        after INSN, not at INSN.
        !          5624: 
        !          5625:        * combine.c (try_combine): When we find a split point, ensure
        !          5626:        that I2 is a register.  If it is of the wrong mode, change the
        !          5627:        mode if we can, just like we do with CCmode registers.
        !          5628:        (find_split_point): Don't split an extraction if it crosses the
        !          5629:        boundary given by the field (i.e., a byte boundary if QImode).
        !          5630:        Correct typo: Should generate LSHIFTRT, not LSHIFT.
        !          5631:        (subst): Correctly test to see if we can change the mode of
        !          5632:        a register for a MODE_CC comparison.
        !          5633:        (distribute_notes): If a NOTE references a pseudo-register,
        !          5634:        ensure it references the latest copy of that register.
        !          5635:        When scanning for last use, don't stop at CALL_INSNs.
        !          5636: 
        !          5637:        * combine.c (expand_compound_operation): Don't get confused about
        !          5638:        (zero_extend (asm_operands ..)) because of the VOIDmode ASM_OPERANDS.
        !          5639:        (simplify_and_const_int): Ensure we do computations in proper mode.
        !          5640:        Simplify ZERO_EXTRACT and ZERO_EXTEND when we have a PLUS.
        !          5641:        (significant_bits): Don't call get_last_value on a SUBREG, just REG.
        !          5642:        Correct significant bits for comparison operations.
        !          5643:        (simplify_shift_const): When VAROP is logical, use proper mode when
        !          5644:        computing shifted constant.
        !          5645: 
        !          5646:        * combine.c (gen_lowpart_for_combine): Call gen_lowpart if we have
        !          5647:        a CONST_DOUBLE.
        !          5648: 
        !          5649:        * genconfig.c (walk_insn_part, main): Write a definition
        !          5650:        for HAVE_lo_sum if a LO_SUM is present in the machine description.
        !          5651: 
        !          5652:        * combine.c (try_combine): If we have a PARALLEL of a SIGN_EXTEND
        !          5653:        and a load of memory, split it into a load and SUBREG assignment.
        !          5654:        (find_split_point): If we have LO_SUM for this machine,
        !          5655:        split (mem (symbol_ref ..)) using HIGH and LO_SUM.
        !          5656:        If we have operation with second operand constant, maybe we couldn't
        !          5657:        fit the constant in the insn, so try to split there.
        !          5658:        Move NOT to first operand so we'll try to split the other operand
        !          5659:        first.
        !          5660:        (subst): No reason to avoid making paradoxical SUBREGs and we miss
        !          5661:        some optimizations if we don't.
        !          5662:        Convert (lo_sum (high FOO) FOO) to FOO.
        !          5663:        Convert (C1 + (x + C2) to (C1 - C2) - x.
        !          5664:        Use distributive law in more places with logical operations.
        !          5665:        (apply_distributive_law): Properly distribute IOR over XOR.
        !          5666:        (simplify_shift_const): Simplify (ashift (plus ..) ...).
        !          5667:        (simplify_comparison): Add code to remove extraneous AND
        !          5668:        operations when comparing result of two comparisons on some machines.
        !          5669:        Ignore bits not applicable in our mode.
        !          5670:        Treat some SUBREGs as ZERO_EXTENDs.
        !          5671:        Convert equality comparison of AND with sign bit into LT or GE
        !          5672:        comparison.
        !          5673:        
        !          5674:        * combine.c (gen_binary, gen_unary): New functions.
        !          5675:        (apply_distributive_law, simplify_shift_const): Use gen_binary.
        !          5676: 
        !          5677: Wed Apr  3 16:15:17 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          5678: 
        !          5679:        * Makefile.in (gnulib): Insert only .o files in combined archive.
        !          5680:        (gnulib1.portable): Use $(HPXT).
        !          5681:        * make-hp9k320g: Define HPXT.
        !          5682: 
        !          5683:        * From [email protected].
        !          5684:        * sched.c (schedule_block): Delete previously unused variable last_q.
        !          5685:        Correct handling of registers with multiple lifetimes within a single
        !          5686:        block, always save lifetime info, and clear the appropriate bit in
        !          5687:        old_live_regs.  Delete now unused variable sched_reg_n_sets.
        !          5688: 
        !          5689: Wed Apr  3 07:43:35 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          5690: 
        !          5691:        * tm-romp.h (CONST_COSTS): All CONST_INTs are cost 0.  Symbolic
        !          5692:        values cost two insns.
        !          5693: 
        !          5694:        * function.c (fixup_var_refs_1): Correctly perform position
        !          5695:        computation for bit extracts; disallow mode-dependent addresses.
        !          5696:        (optimize_bit_field): Likewise.
        !          5697:        Remove explicit mention of HImode and QImode by calling mode_for_size.
        !          5698:        No need to check for offsettable_address_p; we call change_address
        !          5699:        and are not called after reload; don't call adj_offsettable_operand.
        !          5700:        * recog.c (validate_replace_rtx_1): Correct endian computation
        !          5701:        and don't change mode of a MEM with a mode-dependent address.
        !          5702: 
        !          5703:        * expmed.c (expand_divmod): Try to figure out what mode will be used
        !          5704:        and convert to that once at the beginning, rather than repeatedly,
        !          5705:        since we may be writing jumps.
        !          5706: 
        !          5707:        * vax.md ({zero,sign}_extract patterns): Field width is QImode, not
        !          5708:        SImode.
        !          5709: 
        !          5710: Tue Apr  2 08:42:23 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          5711: 
        !          5712:        * cse.c (simplify_ternary_operation): Add argument for previous
        !          5713:        mode of operand 0.
        !          5714:        Don't do anything for extractions if bits don't fit in OP0_MODE.
        !          5715:        Use OP0_mode instead of mode of OP0 for endian correction.
        !          5716:        (fold_rtx): Pass new operand to simpllify_ternary operation.
        !          5717:        * integrate.c (subst_constants): Add extra arg to call to
        !          5718:        simplify_ternary_operation and call for rtx class 'b'.
        !          5719:        * combine.c (find_split_point): Don't split an extract when the
        !          5720:        bits are outside the mode of operand 0.
        !          5721:        (subst): Pass new parameter to simplify_ternary operation and call
        !          5722:        for rtx class 'b'.
        !          5723:        (subst, case ZERO_EXTRACT): Don't change the mode of a MEM
        !          5724:        if it is a mode-dependent address.
        !          5725:        Correctly do endian adjustments so they are correct for fields that
        !          5726:        go outside a byte boundary.
        !          5727:        (subst, case {ZERO,SIGN}_EXTRACT): Don't adjust MEM here for non-dest
        !          5728:        objects; already done in make_compound_operation.
        !          5729:        (make_compound_operation): Rework code that makes extracts and
        !          5730:        extends to correcty compute positions, taking into account the fact
        !          5731:        that field can cross byte boundaries.  Remove redundant adjustments.
        !          5732:        Use mode_dependent_address_p to validate changing modes of MEM.
        !          5733:        (simplify_shift_const): Check for mode-dependent address when
        !          5734:        changing mode of a MEM.
        !          5735:        (gen_lowpart_for_combine): Likewise.
        !          5736: 
        !          5737:        * expmed.c (expand_shift): Code to use extzv for logical right shift
        !          5738:        had numerous assumptions about specific modes and did not validate
        !          5739:        operands properly.
        !          5740: 
        !          5741:        * expr.c (expand_expr, case NOP_EXPR): If no target was specified,
        !          5742:        use convert_to_mode instead of convert_move; this may return a SUBREG.
        !          5743: 
        !          5744:        * expr.c (do_jump): Conversion isn't NOP if it narrows the object.
        !          5745:        If testing A & CONST and the result fits in a smaller mode, try
        !          5746:        the compare there.
        !          5747: 
        !          5748:        * cse.c (simplify_binary_operation): If eliminating reference to
        !          5749:        operand, verify that it has no side effects.
        !          5750:        Add cases for "a | (~a)" and "a & (~a)".
        !          5751: 
        !          5752:        * recog.c (register_operand): Only call general_operand for
        !          5753:        (subreg (mem ...) X), not all SUBREGs.
        !          5754: 
        !          5755:        * jump.c (jump_optimize): Remove needless incrementing of LABEL_NUSES
        !          5756:        which can cause a dead label not to go away.
        !          5757: 
        !          5758: Mon Apr  1 19:08:40 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          5759: 
        !          5760:        * cse.c (cse_insn): Add missing call to insert_regs.
        !          5761: 
        !          5762: Mon Apr  1 18:21:33 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          5763: 
        !          5764:        * optabs.c (init_optabs): Change #if to #ifdef.
        !          5765: 
        !          5766:        * loop.c (check_dbra_loop): Take out Feb 24 change.
        !          5767: 
        !          5768: Sun Mar 31 22:43:39 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          5769: 
        !          5770:        * final.c (insn_counter): New variable.
        !          5771:        (final_scan_insn): Increment it.
        !          5772:        (output_asm_insn): Use it for %=.
        !          5773: 
        !          5774: Sun Mar 31 22:16:31 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          5775: 
        !          5776:        * out-a29k.c (output_prolog): Correctly write stack size in tag word.
        !          5777: 
        !          5778:        * out-a29k.c (srcb_operand): If QImode, any constant is OK since
        !          5779:        we only care about 8 bits.
        !          5780:        (print_operand): Add %Q for QImode srcb values.
        !          5781:        * a29k.md (QImode patterns): srcb's that accept constants should have
        !          5782:        'n' constraint, not 'I'; use %Q to output.
        !          5783: 
        !          5784:        * reload1.c (gen_input_reload): Properly generate reload when we are
        !          5785:        adding a pseudo and a hard register.
        !          5786: 
        !          5787:        * cse.c (simplify_unary_operation): Don't use ffs.
        !          5788: 
        !          5789: Sun Mar 31 20:59:52 1991  Micheal Tiemann  (tiemann at pogo.gnu.ai.mit.edu)
        !          5790: 
        !          5791:        * gnulib1.c (perform_ash{l,r}si3): Fix typo that had these
        !          5792:        performaces swapped.
        !          5793: 
        !          5794: Sun Mar 31 13:35:50 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          5795: 
        !          5796:        * rtl.h (FIND_REG_INC_NOTE): New macro.
        !          5797:        * rtl.h (AUTO_INC_DEC): Define here.
        !          5798:        * flow.c (AUTO_INC_DEC): Not here.
        !          5799:        * combine.c (can_combine_p, try_combine): Use FIND_REG_INC_NOTE.
        !          5800:        Make other scans for REG_INC notes conditional on AUTO_INC_DEC.
        !          5801:        * final.c (final_scan_insn): Use FIND_REG_INC_NOTE.
        !          5802:        * jump.c (delete_jump): Likewise.
        !          5803:        * loop.c (get_condition): Likewise.
        !          5804:        * reload.c (find_reloads_address_1, find_equiv_reg): Likewise.
        !          5805:        * reload1.c (reload_as_needed): Likewise.
        !          5806:        * reorg.c (delete_scheduled_jump, mark_set_resources): Likewise.
        !          5807:        * global-alloc.c (global_conflicts): Likewise.
        !          5808: 
        !          5809:        * dbxout.c (dbxout_type): For integers, reals, and arrays,
        !          5810:        use actual type number of int or char, in case those are not 1 and 2.
        !          5811: 
        !          5812:        * toplev.c (compile_file): Take out last change (regarding lang_init).
        !          5813: 
        !          5814:        * emit-rtl.c (sequence_element_free_list): Change data type.
        !          5815:        (get_last_insn_anywhyere, add_insn_after): Finish last change.
        !          5816: 
        !          5817:        * expr.c (expand_builtin): Finish last change.
        !          5818: 
        !          5819: Sat Mar 30 15:16:16 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          5820: 
        !          5821:        * function.h (struct sequence_stack): New data type.
        !          5822:        (sequence_stack): Declare variable.  Use new data type.
        !          5823:        * emit-rtl.c (get_last_insn_anywhere, add_insn_after): Adapt to that.
        !          5824:        (start_sequence, end_sequence, in_sequence): Likewise.
        !          5825:        (start_sequence): Allocate stack links as permanent.
        !          5826:        (init_emit_once): Init sequence_stack here.
        !          5827:        (init_emit): Not here.
        !          5828:        * function.c (push_temp_slots, pop_temp_slots):
        !          5829:        (expand_function_end): Use in_sequence.
        !          5830:        (fixup_var_refs): Use new data type.
        !          5831:        (put_var_into_stack): Don't declare sequence_stack.
        !          5832: 
        !          5833:        * function.c (expand_function_start):
        !          5834:        Trace static chain properly past first link.
        !          5835: 
        !          5836:        * ns32k.md (andcbhi3, andcbqi3): Constraint shouldn't say commutative.
        !          5837: 
        !          5838: Sat Mar 30 02:06:20 1991 North-Keys (erlkonig at apple-gunkies.gnu.ai.mit.edu)
        !          5839: 
        !          5840:        * c-decl.c (init_decl_processing): Fix typo `integer_tpe_node'.
        !          5841:        * dbxout.c (dbxout-symbol): Added char * declaration for `name'.
        !          5842:        * objc-actions.c (encode_array): Avoid returning a value.
        !          5843: 
        !          5844: Fri Mar 29 15:59:22 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          5845: 
        !          5846:        * c-decl.c (init_decl_processing): Define __builtin_constant_p.
        !          5847:        * expr.c (expand_builtin): Implement it.
        !          5848:        * tree.h (enum built_in_function): New alternative.
        !          5849: 
        !          5850:        * toplev.c (compile_file): Move lang_init call after debugger init.
        !          5851: 
        !          5852:        * gcc.c (default_compilers): Define __cplusplus for C++ code.
        !          5853: 
        !          5854:        * c-decl.c (start_function): Use 0 for name of result decl.
        !          5855:        (value_identifier): Variable deleted.
        !          5856: 
        !          5857:        * dbxout.c (dbxout_type): Handle LANG_TYPE.
        !          5858:        (dbxout_symbol): Handle RESULT_DECL.
        !          5859:        Handle variables with constant values that are not output.
        !          5860:        Use the mangled name when appropriate.
        !          5861:        (dbxout_tags): Output equivalent typedef when appropriate.
        !          5862:        (dbxout_function): Output the DECL_RESULT if it has a name.
        !          5863: 
        !          5864:        * varasm.c (assemble_variable): Delete calls to set_current_gdbfile.
        !          5865: 
        !          5866: Thu Mar 28 16:14:13 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          5867: 
        !          5868:        * gcc.c (main): Calculate basename_length to exclude last period.
        !          5869: 
        !          5870:        * optabs.c (expand_binop, expand_unop):
        !          5871:        When widening, don't keep CONST_INT beyond a single word.
        !          5872: 
        !          5873:        * tm-vax.h (CHECK_FLOAT_VALUE): Change float max to ...444e+38.
        !          5874: 
        !          5875:        * Makefile.in (gnulib1, gnulib2.portable):
        !          5876:        Make test of $$? normally succeed, not normally fail.
        !          5877:        (gnulib1): Don't use -e in second loop.  Test explicitly instead.
        !          5878: 
        !          5879:        * dbxout.c (lastfile): New static variable.
        !          5880:        (dbxout_init): Initialize lastfile.
        !          5881:        * final.c (lastfile): Deleted.
        !          5882:        (init_final): Don't set lastfile.
        !          5883: 
        !          5884:        * final.c (set_current_gdbfile): Function deleted.
        !          5885:        (output_source_line): Handling of GDB debugging info deleted.
        !          5886:        (final_start_function, final_end_function): Likewise.
        !          5887: 
        !          5888: Thu Mar 28 09:58:18 1991  Micheal Tiemann  (tiemann at pogo.gnu.ai.mit.edu)
        !          5889: 
        !          5890:        * cplus-decl.h (decl_context): Add missing declaration for BITFIELD.
        !          5891: 
        !          5892:        * tm-sparc.h (CC1_SPEC): Change to handle new interpretation of -O2.
        !          5893:        (OPTIMIZATION_OPTIONS): Use this macro to control default expensive
        !          5894:        optimizations.
        !          5895:        (MODES_TIABLE_P): Use GET_MODE_CLASS to simplify this macro.
        !          5896:        (FUNCTION_ARG,FUNCTION_ARG_PARTIAL_NREGS): Make sure TYPE is nonzero
        !          5897:        before we use it.
        !          5898:        (FUNCTION_BLOCK_PROFILER): Fix a bug in the asm code.
        !          5899:        (EXTRA_CONSTRAINT): For 'S' constraint, if OP is a register, make
        !          5900:        sure it's not a pseudo.  Also, change call to `memory_address_p' to
        !          5901:        `strict _memory_address_p'.  Both of these are for the strict cases.
        !          5902:        (SLOW_BYTE_ACCESS): Try going with this set 1.
        !          5903:        * sparc.md: Take advantage of new combiner to handle signed bitfield
        !          5904:        comparisons and signed sub-word comparisons.
        !          5905:        Added peepholes for doing subword memory tests and operations.
        !          5906: 
        !          5907: Thu Mar 28 09:43:30 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          5908: 
        !          5909:        * emit-rtl.c (start_sequence, gen_sequence): Ensure we allocate rtl
        !          5910:        on saveable_obstack since we will be saving it and we may be called
        !          5911:        from an optimizer that will reuse allocated memory in current_obstack.
        !          5912: 
        !          5913: Wed Mar 27 18:46:27 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          5914: 
        !          5915:        * toplev.c (main): Print version with -version, regardless of
        !          5916:        -quiet.
        !          5917: 
        !          5918:        * Makefile.in (gnulib, gnulib2.ready): Put `-' before `if'.
        !          5919: 
        !          5920:        * make-hp9k320, make-hp9k320g (CC, OLDCC): Delete -lsetjmp.
        !          5921:        Add -Wc,-Nw2000.
        !          5922: 
        !          5923:        * dbxout.c (dbxout_source_file): New name for fn moved from final.c.
        !          5924:        * final.c (output_source_file): Moved to dbxout.c.  Callers changed.
        !          5925:        (output_source_line): Call dbxout_source_file.
        !          5926: 
        !          5927: Wed Mar 27 11:09:13 1991  Micheal Tiemann  (tiemann at pogo.gnu.ai.mit.edu)
        !          5928: 
        !          5929:        * version.c: Bumped to version 1.92.
        !          5930: 
        !          5931:        * final.c (output_source_{file,line}): Fix bug in new handling of
        !          5932:        "Ltext".
        !          5933: 
        !          5934:        * cplus-cvt.c (build_up_reference): Handle BIND_EXPR.
        !          5935: 
        !          5936:        * Makefile.in (cplus-lex.o): depend on cplus-input.c.
        !          5937:        * cplus-input.c: New file.
        !          5938: 
        !          5939:        * cplus-method.c (do_inline_function_hair): Call a different
        !          5940:        `prepare_inline', and don't deal with pending_inlines here.
        !          5941:        * cplus-lex.c (do_pending_inlines): Deal with pending_inlines
        !          5942:        here...
        !          5943:        (reinit_parse_for_method): ...and here.
        !          5944: 
        !          5945:        * cplus-decl.c (grok_ctor_properties): Use TYPE_NAME_STRING where
        !          5946:        appropriate.  Also, don't assume that CURRENT_CLASS_TYPE is what we
        !          5947:        use for error message; use CTYPE instead.
        !          5948: 
        !          5949:        * cplus-type2.c (digest_init): Strip NON_LVALUE_EXPRs.
        !          5950: 
        !          5951:        * cplus-tree.c (__eprintf): Added this function from gnulib2 until
        !          5952:        gnulib configuration is worked out.
        !          5953: 
        !          5954:        * cplus-parse.y (member_init): Call do_member_init.  Previous code
        !          5955:        was wrong (using a goto to factor common code) because the parse
        !          5956:        stack was different in the two contexts.
        !          5957:        * cplus-init.c (do_member_init): New function.
        !          5958: 
        !          5959:        * cplus-typeck.c (build_compound_expr): Convert arrays to pointers.
        !          5960:        (build_c_cast): Warn about possible alignment problems.
        !          5961: 
        !          5962: Wed Mar 27 05:55:32 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          5963: 
        !          5964:        * reload.c (find_reloads): Disallow a PLUS as an operand even if
        !          5965:        "g" is in the constraint; this is only valid for "p".
        !          5966: 
        !          5967: Tue Mar 26 06:46:48 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          5968: 
        !          5969:        * local-alloc.c (block_alloc): Have insn numbers start at 1, not 2.
        !          5970: 
        !          5971:        * rtlanal.c (replace_regs): Move to here; add new parameter.
        !          5972:        * loop.c (replace_regs): Delete from here.
        !          5973:        (move_movables, strength_reduce): Pass new parameter to replace_regs.
        !          5974:        * jump.c (duplicate_loop_exit_test): Make new pseudos for pseudos
        !          5975:        used only in loop exit test; this prevents unnecessay sharing
        !          5976:        between code inside and outside of loop.
        !          5977:        * toplev.c (rest_of_compilation): Call reg_scan before jump.
        !          5978: 
        !          5979:        * combine.c (distribute_notes): If we are searching back for the last
        !          5980:        use of a register I3 and I2 no longer use and the last use is a SET
        !          5981:        of that register, place a REG_UNUSED note instead of a REG_DEAD note.
        !          5982:        No longer need handle REG_DEAD note for output of I3; it will now be
        !          5983:        a REG_UNUSED note.
        !          5984: 
        !          5985:        * combine.c (try_combine): If I3SRC is a register and I2 is a
        !          5986:        multi-output insn, see if we can replace one of the outputs with
        !          5987:        I3DEST.  If so, move LOG_LINKS pointing at the other outputs to
        !          5988:        now point to I3 instead of I2.
        !          5989: 
        !          5990:        * rtlanal.c (single_set): Return 0 if not an insn.
        !          5991:        Only ignore SET with unused output if it has no side effects.
        !          5992:        (side_effects_p): New function.
        !          5993:        * combine.c (can_combine_p): Only ignore SET with unused output if
        !          5994:        it has no side effect.
        !          5995:        Don't extend the life of a hard register.
        !          5996:        (try_combine): Always give up if I1 or I2 used reg inc'd in I3.
        !          5997:        (significant_bits): Return mode mask if mode wider than host int.
        !          5998:        Don't get confused by (zero_extend (const_int ..)) and similar where
        !          5999:        the inner mode is VOIDmode.
        !          6000:        Arithmetic operations now always have same modes on operands as
        !          6001:        on the result.
        !          6002: 
        !          6003:        * jump.c (jump_optimize): Set this_is_{simple,cond}jump at the start
        !          6004:        of loop, not in middle, and use consistently.
        !          6005:        Use can_reverse_comparison_p in case where we make scc insn.
        !          6006:        Don't use can_reverse_comparison_p when we call invert_jump.
        !          6007:        Use indirect_jump instead of indirect_exp.
        !          6008:        Check invert_jump's result before making any other changes; handle
        !          6009:        failure.
        !          6010:        Simplify code that looks for and deletes USE insns.
        !          6011:        (jump_back_p): Call can_reverse_comparison_p only if we have to
        !          6012:        reverse the comparison.
        !          6013:        (can_reverse_comparison_p): Accept comparison expression and insn
        !          6014:        it comes from.
        !          6015:        Rework to be more general now that we have MODE_CC and tighten
        !          6016:        up a bit.
        !          6017:        (invert_jump): Allow invert_exp and redirect_jump to fail.
        !          6018:        (invert_exp): Only invert jump, don't change target.
        !          6019:        If can reverse comparison code, try it using validate_change.
        !          6020:        If that doesn't work, swap the arms of the IF_THEN_ELSE.  If that
        !          6021:        doesn't work, return 0.
        !          6022:        (redirect_exp): Now static.
        !          6023:        * expr.c (do_jump_for_compare): Call invert_jump to invert jump
        !          6024:        to false label after emitting jump; if this fails, convert to
        !          6025:        jump around unconditional jump to false label.
        !          6026:        (do_store_flag): Set to 1 first, then branch, then set to 0.  This
        !          6027:        avoids inverting branches.
        !          6028:        * reorg.c (optimize_skip, relax_delay_slots): Always allow invert_jump
        !          6029:        to fail.
        !          6030:        * rtlanal.c (single_set): Return 0 if not INSN, CALL_INSN,
        !          6031:        or JUMP_INSN.
        !          6032: 
        !          6033:        * reload1.c (eliminate_regs): If any eliminable regs occur in a USE,
        !          6034:        eliminate them.
        !          6035: 
        !          6036: Tue Mar 26 00:09:18 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          6037: 
        !          6038:        * c-decl.c (implicitly_declare): Always make implicit decl permanent.
        !          6039: 
        !          6040: Mon Mar 25 16:38:14 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          6041: 
        !          6042:        * genextract.c (walk_rtx): Record operand numbers that are seen.
        !          6043:        (gen_insn): If there are gaps in operand numbers, make code to store
        !          6044:        something for the operands not used in this pattern.
        !          6045:        (main): Initialize data structures.
        !          6046: 
        !          6047:        * c-typeck.c (initializer_constant_valid_p):
        !          6048:        Always allow length-preserving conversions between integer types. 
        !          6049: 
        !          6050:        * regclass.c (reg_class_record): Return right away if operand is 0.
        !          6051: 
        !          6052:        * c-decl.c (duplicate_decls): Warn if declare fcn inline after calls.
        !          6053: 
        !          6054:        * reload.c (combine_reloads):
        !          6055:        Test reg_overlap_mentioned_p in both directions.
        !          6056: 
        !          6057: Mon Mar 25 15:05:29 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          6058: 
        !          6059:        * genoutput.c (output_epilogue): Choose a name for an unnamed
        !          6060:        pattern as an offset from the closest named pattern.  Define
        !          6061:        `insn_name_ptr' as a pointer to `insn_name' for use by print_rtx.
        !          6062:        * final.c (output_asm_insn): Use the pattern name chosen by
        !          6063:        genoutput and output the INSN_UID as well.
        !          6064:        * rtl.c (insn_name_ptr): Provide an alternate definition to avoid
        !          6065:        link errors when rtl.o is not linked with insn-output.o.
        !          6066:        (print_rtx): When printing the INSN_CODE field of an insn, print
        !          6067:        the name if it is available.
        !          6068: 
        !          6069: Mon Mar 25 09:39:43 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          6070: 
        !          6071:        * regs.h (reg_first_use): Deleted.
        !          6072:        * rtl.h (REG_UNSET): Deleted.
        !          6073:        (REG_UNUSED): New note.
        !          6074:        * combine.c (combine_instructions): Delete loop fixing up
        !          6075:        reg_first_use.
        !          6076:        (can_combine_p): Ignore a branch of a PARALLEL if its output is
        !          6077:        never used.
        !          6078:        (move_deaths): Don't update reg_first_use.
        !          6079:        (distribute_notes): Don't handle REG_UNSET; add code for REG_UNUSED.
        !          6080:        * flow.c (reg_first_use): Deleted.
        !          6081:        (life_analysis): Restore code that marks vars live at start of function
        !          6082:        as globals.  These are registers that were never set.
        !          6083:        (allocate_for_life_analysis): Don't allocate reg_first_use.
        !          6084:        (propagate_block): Search for cc0-setting insn with prev_nonnote_insn.
        !          6085:        (mark_set_1): Don't set reg_first_use.
        !          6086:        If register is never used, make REG_UNUSED note, not REG_DEAD.
        !          6087:        (mark_used_regs): Don't set reg_first_use.
        !          6088:        * global-alloc.c (global-conflicts): Dead outputs are now denoted by
        !          6089:        REG_UNUSED notes, not REG_DEAD.
        !          6090:        * reload.c (find_dummy_reload): Delete test of REG_UNSET; add test
        !          6091:        of REG_UNUSED.
        !          6092:        (find_equiv_reg): Don't re-use an output marked as REG_UNUSED;
        !          6093:        we want these notes to be accurate; this would rarely win anyway.
        !          6094:        * reload1.c (emit_reload_insns): Test REG_UNUSED to see if an
        !          6095:        output won't be used any more.
        !          6096:        * reorg.c (mark_target_live_regs): Use REG_UNUSED notes to kill 
        !          6097:        registers dead after an insn.
        !          6098:        * rtl.c (reg_note_name): Delete REG_UNSET, add REG_UNUSED.
        !          6099:        * rtlanal.c (single_set): Ignore a SET whose output has a REG_UNUSED
        !          6100:        note.
        !          6101:        * sched.c (update_first_use): Deleted.
        !          6102:        (update_links): No need to call update_first_use.
        !          6103: 
        !          6104:        * local-alloc.c: Major changes to use REG_UNUSED notes, make
        !          6105:        handling of only-set registers more consistent, and allow
        !          6106:        two consecutive CLOBBERs to share a register.  Also, avoid loops
        !          6107:        over all register each basic block; eliminating these make local-alloc
        !          6108:        three times faster!
        !          6109:        Quantity numbers now start at zero.
        !          6110:        (qty_first_reg, reg_next_in_qty): New variables.
        !          6111:        (qty_clobber): No longer needed.
        !          6112:        (reg_qty): -1 if register cannot be allocated by local-alloc.
        !          6113:        Now undefined for hard registers.
        !          6114:        (reg_offset): Now char *.
        !          6115:        (call_seen): Deleted, never used.
        !          6116:        (regs_live_at): Now two entries per insn.
        !          6117:        (alloc_qty): Initialize chain of register in quantity.
        !          6118:        (local_alloc): Remove all per-block loops over registers.
        !          6119:        Only allocate qty_... vars for max_reg - FIRST_PSEUDO_REGISTER.
        !          6120:        Initialize reg_qty once per function.
        !          6121:        Don't initialize qty_... vars that are always set before use.
        !          6122:        (block_alloc): Delete insn_map, max_uid, and call_used.
        !          6123:        Insn numbers start at 1 and we have two entries in regs_live_at
        !          6124:        for each insn.
        !          6125:        Search for REG_NO_CONFLICT block when we see a CLOBBER insn; this
        !          6126:        avoids having already seen sets to the output register.
        !          6127:        Call wipe_dead_reg for anything in a REG_UNUSED note.
        !          6128:        Delete references to reg_first_use.
        !          6129:        Don't check for invalid birth and death here.
        !          6130:        Don't call qsort if we have 0 or 1 quantities.
        !          6131:        Find all registers for a quantity using reg_next_in_qty chain instead
        !          6132:        of looping over all pseudos.
        !          6133:        (combine_regs): Refine tests to agree with new conventions.  
        !          6134:        Never tie pseudos if SREG already has a quantity assigned.
        !          6135:        When updating size, use reg_next_in_qty instead of looping over
        !          6136:        all registers.
        !          6137:        (reg_is_set): Just call reg_is_born.  Where it is born depends on
        !          6138:        whether we have a CLOBBER or not.  Birth location is now twice
        !          6139:        the insn number.
        !          6140:        (reg_is_born): Handle case when a hard reg is born before the
        !          6141:        current insn.
        !          6142:        Show we don't know the death location.
        !          6143:        (wipe_dead_reg): Parameters are now just register and an in/out flag.
        !          6144:        Death locations are now twice the insn number.
        !          6145:        Support hard regs that die immediately after current insn.
        !          6146:        Don't make REG_UNSET notes.
        !          6147:        (find_free_reg): Validate BIRTH and DEATH here.
        !          6148:        We no longer have qty_clobber.
        !          6149:        (post_mark_life): Eliminate CLOBBER parameter.
        !          6150:        (no_conflict_p): Now passed CLOBBER at start of block.  Return 0 if
        !          6151:        can't find death note or if R1 is a hard register.
        !          6152: 
        !          6153:        * m68k.md (divsi3, udivsi3): Remove patterns.  Using divmodsi4 and
        !          6154:        udivmodsi4 produces better code.
        !          6155:        (divmodsi4, udivmodsi4): If remainder isn't needed, use divsl/divul
        !          6156:        instead of divsll/divull.
        !          6157: 
        !          6158:        * integrate.c (expand_inline_function): Remove change of March 20th.
        !          6159:        Instead, expand args in two passes.  First, expand all that go
        !          6160:        into registers.  Then do those in memory with store_expr.
        !          6161: 
        !          6162:        * integrate.c (initialize_for_inline): Put the original copy of the
        !          6163:        address into ARG_VECTOR; the new one will be modified.
        !          6164: 
        !          6165:        * reload.c (push_reload): Handle paradoxical SUBREGs on an output
        !          6166:        as well as an input.
        !          6167: 
        !          6168:        * flow.c (mark_label_ref): Don't blow up when X is 0.
        !          6169: 
        !          6170:        * combine.c (make_compound_operation): Fix typos; result of 
        !          6171:        exact_log2 is interesting if >=0.
        !          6172: 
        !          6173:        * a29k.md (store_multiple): Allow gen_store_multiple{_no,}_bug to fail;
        !          6174:        we fail if they do.
        !          6175: 
        !          6176:        * reorg.c (emit_delay_sequence): Record that we deleted a BARRIER
        !          6177:        and restore it precisely on those occaisions.
        !          6178: 
        !          6179: Sun Mar 24 21:19:55 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          6180: 
        !          6181:        * gcc.c (xmalloc, xrealloc): Change error message.
        !          6182:        * toplev.c (various): Change error messages.
        !          6183: 
        !          6184:        * final.c (final_scan_insn): Handle ASM_OUTPUT_LOOP_ALIGN.
        !          6185: 
        !          6186:        * calls.c (emit_call_1): Pass number of bytes to pop to call_pop.
        !          6187:        * vax.md (call_pop, call_value_pop): Use that arg.
        !          6188: 
        !          6189: Sat Mar 23 23:28:59 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          6190: 
        !          6191:        * Makefile.in (version): Run awk, not gcc, to get this value.
        !          6192: 
        !          6193: Sat Mar 23 18:04:23 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          6194: 
        !          6195:        * cse.c (simplify_unary_operation): Add missing cases for ABS and FFS.
        !          6196: 
        !          6197:        * alliant.md: Eliminate unneeded patterns: HImode zero_extract, 
        !          6198:        (set (cc0 (subreg ...))), (set (cc0) (and ...)),
        !          6199:        (and (zero_extend ...) ...), shift right of 24 and 16.
        !          6200:        Use alternatives to select assembler template when possible.
        !          6201:        Use const_int_operand instead of immediate_operand when
        !          6202:        possible to avoid explicit test for CONST_INT.
        !          6203:        Write add-and-branch patterns with PLUS removed, the way combine
        !          6204:        produces them.
        !          6205: 
        !          6206:        * rtlanal.c (refers_to_regno_p): If X is a SUBREG of a hard
        !          6207:        register, treat it as if it were the appropriate register.
        !          6208:        CLOBBER doesn't refer to anything.
        !          6209:        
        !          6210:        * final.c (final_scan_insn): Use prev_nonnote_insn, not PREV_INSN,
        !          6211:        to find cc0-setting insn from cc0-using insn.
        !          6212: 
        !          6213:        * global-alloc.c (find_reg): Don't look for other registers to
        !          6214:        renumber unless we know that we are sharing registers.
        !          6215: 
        !          6216:        * emit-rtl.c (end_sequence): Fix typo that prevented speedup of
        !          6217:        Dec 26th from doing anything.
        !          6218: 
        !          6219:        * toplev.c (do_abort): New function, just calls abort.
        !          6220:        (main): Set lang_expand_expr to address of do_abort; abort might be
        !          6221:        a macro that is more than just a function name.
        !          6222: 
        !          6223:        * cse.c: (qty_... variables): Refined to be undefined for indices
        !          6224:        less than MAX_REG.  Thus, we need not intialize them at the start
        !          6225:        of a basic block and can instead inialize a quantity as we create it.
        !          6226:        (reg_{next,prev}_eqv): These variables will now be defined only when
        !          6227:        reg_qty[N] != N and hence need not be initialized every block either.
        !          6228:        (new_basic_block): Need not initialize reg_rtx for new block; the
        !          6229:        only time we can inherit values from previous blocks is for hard
        !          6230:        regs and it doesn't matter in that case.
        !          6231: 
        !          6232:        * c-parse.y (yylex): Avoid use of size_t; it may not be defined.
        !          6233:        Cast alloca to (char *).
        !          6234: 
        !          6235:        * out-romp.c (update_cc): cc_status.value[12] can also be a COMPARE,
        !          6236:        so use reg_overlap_mentioned_p to see if an insn that modifies a
        !          6237:        register invalidates cc0.
        !          6238: 
        !          6239:        * reorg.c (link_cc0_insns): If next insn is a SEQUENCE, the insn
        !          6240:        using cc0 is the first insn in the sequence.
        !          6241:        (mark_target_live_regs): Don't assume that a REG_DEAD note always
        !          6242:        refers to a register.
        !          6243: 
        !          6244: Sat Mar 23 15:35:59 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          6245: 
        !          6246:        * reload1.c (reload_reg_free_before_p):
        !          6247:        An input reload is use before an output or output address reload.
        !          6248: 
        !          6249:        * genoutput.c (validate_insn_alternatives): New function.
        !          6250:        Loop over insn's alternatives to find out how many
        !          6251:        alternatives the insn pattern is to support.  Verify that if
        !          6252:        any alternatives are specified for a given operand that the
        !          6253:        number of alternatives match the numer of alternatives for
        !          6254:        this insn.
        !          6255:        (gen_{insn,peephole,expand,split}): Call
        !          6256:        `validate_insn_alternatives' after scanning the insn.  This
        !          6257:        sets up the value N_ALTERNATIVES for the insn so that
        !          6258:        `process_template' can check that the number of alternitves
        !          6259:        given matches the number of asm choices for `@' constructs.
        !          6260: 
        !          6261: Sat Mar 23 08:09:57 1991  Michael Meissner  (meissner at osf.org)
        !          6262: 
        !          6263:        * dbxout.c (toplevel, dbxout_init): Instead of always using `Ltext'
        !          6264:        as the label at the beginning of the text region, properly localize
        !          6265:        it, so that machines which do not put leading underscores in front
        !          6266:        of external names do not have a problem if the user uses `Ltext'.
        !          6267:        (dbxout_init): Call text_section before putting out localized
        !          6268:        `Ltext', in case ASM_FILE_START put us into a different section.
        !          6269: 
        !          6270: Fri Mar 22 19:26:23 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          6271: 
        !          6272:        * a29k.md (jumpfdec): Simplify pattern to match what combine will
        !          6273:        produce; remove reversed pattern.
        !          6274:        * out-a29k.c (gen_reg_operand): Speed up by not calling
        !          6275:        register_operand; check register number ourself.
        !          6276: 
        !          6277:        * out-romp.c (update_cc, case CC_COMPARE): Call CC_STATUS_INIT.
        !          6278:        * romp.md: In pattern that sets cc0 and copies a register to another
        !          6279:        register, allow the output to be in memory so that we don't get an
        !          6280:        output reload, which will cause problems.
        !          6281: 
        !          6282:        * varasm.c (assemble_variable): Ensure DECL_INITIAL is non-zero
        !          6283:        before we reference it; it might be zero if -fno-common.
        !          6284: 
        !          6285: Fri Mar 22 16:11:35 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          6286: 
        !          6287:        * toplev.c (abort): Don't declare if defined as macro.
        !          6288: 
        !          6289: Fri Mar 22 11:49:43 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          6290: 
        !          6291:        * m88k.md (bxxu): Don't attempt to use bcnd.
        !          6292:        (umulsi3, ashift/and): Remove these patterns.
        !          6293:        (dummy): This must be a define_expand.
        !          6294:        * out-m88k.c (m88k_handle_pragma_token): Handle #pragma weak.
        !          6295:        * tm-m88k.h, tm-m88kdgux.h, tm-m88ksvr4.h, tm-v88r32.h: Various
        !          6296:        changes to support SVR4, including support for #pragma weak.
        !          6297:        (SLOW_BYTE_ACCESS): Better code if this is true.
        !          6298: 
        !          6299: Thu Mar 21 09:15:47 1991  Tom Wood  (wood at gen-rtx)
        !          6300: 
        !          6301:        * c-parse.y (MULTIBYTE_CHARS): New macro.
        !          6302:        (init_lex): Change to the native locale.
        !          6303:        (yylex): Process wide character literals and wide character string
        !          6304:        literals using mbtowc and mbstowcs based on MULTIBYTE_CHARS.
        !          6305: 
        !          6306: Thu Mar 21 15:46:45 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          6307: 
        !          6308:        * rtlanal.c (dead_or_set_p): A register is dead if it is assigned
        !          6309:        via a SUBREG that references the all the words in the register.
        !          6310: 
        !          6311:        * tm-vax.h (CONST_OK_FOR_LETTER_P): Define `I' to be constant zero.
        !          6312:        (CONST_DOUBLE_OK_FOR_LETTER_P): Define `G' to be floating zero.
        !          6313:        (CONST_COSTS): +/- 1 should be very cheap due to decl/inc/aob/sob.
        !          6314:        (PRINT_OPERAND): Add `P', `N', `H', and `B'.
        !          6315:        * vax.md: Rework many patterns to avoid C code for output template;
        !          6316:        use "@" construct whenever possible.
        !          6317:        Use INSN_DELETED_P.
        !          6318:        Remove extendsidi2; the supplied pattern does exactly what convert_move
        !          6319:        will do when the pattern is not present.
        !          6320:        Use constm1_rtx to check for constant of -1.
        !          6321:        Add mulsidi3 and related add-multiply pattern for emul insn.
        !          6322:        Use const_int_operand as predicate instead of checking for CONST_INT.
        !          6323:        Remove unneeded (set (pc) (if_then_else (ne (and ...) ...) ...))
        !          6324:        patterns.
        !          6325:        Merge jlbs and jbs and similarly for jlbc and jbc.
        !          6326:        Remove unneeded reverse branch patterns for above insns.
        !          6327:        Rewrite patterns for add-and-branch insns to take into account
        !          6328:        simplifications done by combine and remove reversed cases.
        !          6329:        Convert peepholes for optimizing extzv followed or preceeded by andl
        !          6330:        into patterns for a single insn.
        !          6331: 
        !          6332: Thu Mar 21 15:46:21 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          6333: 
        !          6334:        * toplev.c (abort): Declare it.
        !          6335: 
        !          6336: Thu Mar 21 08:16:12 1991  Michael Meissner  (meissner at osf.org)
        !          6337: 
        !          6338:        * va-mips.h (whole file): Replace with the 1.39 version of this
        !          6339:        file, which was a total rewrite of the 1.37.1 version.  Add
        !          6340:        primitive support for 2.00.
        !          6341: 
        !          6342: Wed Mar 20 18:31:42 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          6343: 
        !          6344:        * jump.c (duplicate_loop_exit_test): Make copy of contents of
        !          6345:        register note; if it was a REG_EQUAL note, it might have been an
        !          6346:        arbitrary expression and sharing it can cause problems in cse.
        !          6347: 
        !          6348:        * rtl.def (UMULT): Remove unsigned multiply code.
        !          6349:        * combine.c (subst, significant_bits): Remove code UMULT and
        !          6350:        support for indicating widening multiply with different modes
        !          6351:        on the MULT operation vs. its operands.
        !          6352:        * cse.c (simplify_binary_operation): Remove support for widening
        !          6353:        multiply.
        !          6354:        (rtx_code, exp_equiv_p, simplify_binary_operation, cse_insn): Remove
        !          6355:        code UMULT.
        !          6356:        * function.c (instantiate_virtual_regs_1): Likewise.
        !          6357:        * reload1.c (eliminate_regs): Likewise.
        !          6358:        * local-alloc.c (block_alloc): Likewise; replace with GET_RTX_CLASS.
        !          6359:        * loop.c (simplify_giv_expr, expr_benefit): Remove code UMULT
        !          6360:        and support for widening multiply.
        !          6361:        * optabs.c (init_optabs): Set code of widening multiply tables
        !          6362:        to UNKNOWN.
        !          6363: 
        !          6364:        * a29k.md (mulsidi2, umulsidi2): Rewrite using SIGN_EXTEND and
        !          6365:        ZERO_EXTEND.  Also fix typo in SUBREG_WORD when splitting.
        !          6366:        * tm-alliant.h, tm-m68k.h (NOTICE_UPDATE_CC): Remove code UMULT.
        !          6367:        * alliant.md, m68.md (mulhisi3, umulhisi3): Rewrite using
        !          6368:        SIGN_EXTEND and ZERO_EXTEND.
        !          6369:        (divhisi3, udivhisi3, modhisi3, umodhisi3): Rewrite using TRUNCATE.
        !          6370:        * alliant.md, ns32k.md (umulsi3, umulhi3, umulqi3): Remove unneeded
        !          6371:        patterns that use UMULT.
        !          6372:        * ns32k.md (umulsidi3): Rewrite using ZERO_EXTEND.
        !          6373: 
        !          6374:        * tm-alliant.h (NOTICE_UPDATE_CC): MOD and (trunc (mod ...))
        !          6375:        clobber CC.
        !          6376:        * alliant.md (mod*, umod*): No longer need CC_STATUS_INIT.
        !          6377: 
        !          6378:        * recog.c: Include insn-attr.h.
        !          6379:        (general_operand): If we have insn scheduling, don't allow paradoxical
        !          6380:        SUBREGs since they can prevent scheduling memory references; they
        !          6381:        aren't helpful on RISCs anyway and can cause poor register allocation.
        !          6382:        * Makefile.in (recog.o): Includes insn-attr.h.
        !          6383: 
        !          6384:        * cse.c (COST): A register only in NO_REGS isn't a specially-cheap reg.
        !          6385:        (simplify_unary_operation, case {ZERO,SIGN}_EXTEND): If OP_MODE was
        !          6386:        given as VOIDmode, use MODE; allow mode size of HOST_BITS_PER_INT.
        !          6387:        (cse_insn): Don't make SET_SRC equal SET_DEST if doing so will cause
        !          6388:        two registers to be live containing the same value.
        !          6389:        (cse_end_of_basic_block): Count SETs in CALL_INSNs and JUMP_INSNs.
        !          6390: 
        !          6391: Wed Mar 20 15:40:48 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          6392: 
        !          6393:        * gcc.c (MD_EXEC_PREFIX, MD_STARTFILE_PREFIX): New macros.
        !          6394:        (md_exec_prefix, md_startfile_prefix): New variables.
        !          6395:        (process_command): Put those prefixes on the paths.
        !          6396: 
        !          6397:        * toplev.c (main): Use abort, not fancy_abort.
        !          6398: 
        !          6399:        * integrate.c (expand_inline_function): Use emit_block_move
        !          6400:        to copy BLKmode parm value.  Save size and alignment for this.
        !          6401: 
        !          6402:        * gnulib2.c (__builtin_saveregs)[MIPS]: Go to text section.
        !          6403: 
        !          6404:        * final.c (final_scan_insn): Don't go to text after jump-tab label.
        !          6405: 
        !          6406: Tue Mar 19 21:27:09 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          6407: 
        !          6408:        * tm-a29k.h (SETUP_INCOMING_VARARGS): Always write registers to 
        !          6409:        0(ap), no matter how many named args are present.
        !          6410: 
        !          6411:        * combine.c (subst): In IF_THEN_ELSE, canonicalize to put the (pc)
        !          6412:        in the second operand if we can reverse the comparison.
        !          6413:        (significant_bits): Support TRUNCATE and SIGN_EXTEND.
        !          6414: 
        !          6415:        * tm-romp.h (CC_UNSIGNED): New flag for cc_status.
        !          6416:        * out-romp.c (update_cc, case CC_COMPARE): Record the operands of the
        !          6417:        compare and mark whether the test will be signed or unsigned.
        !          6418:        (restore_compare_p): New function.
        !          6419:        * romp.md (conditional branch and return patterns): Use new
        !          6420:        restore_compare_p to see if we need to tell final to reinclude
        !          6421:        deleted compare insn.
        !          6422: 
        !          6423:        * output.h (const_int_operand): Define.
        !          6424:        * recog.c (const_int_operand): New function.
        !          6425:        * out-a29k.c, out-romp.c, out-rs6000.c (const_int_operand): Remove from
        !          6426:        these.
        !          6427: 
        !          6428:        * tree.c (rtl_in_saveable_obstack): New function.
        !          6429:        * varasm.c (immed_double_const, immed_real_const_1): Ensure that things
        !          6430:        that get placed on the chain are always put into saveable_obstack.
        !          6431: 
        !          6432: Tue Mar 19 17:21:30 1991  Richard Stallman  (rms at mole.gnu.ai.mit.edu)
        !          6433: 
        !          6434:        * stddef.h (wchar_t): New typedef.
        !          6435: 
        !          6436:        * out-sparc.c (output_block_move): Handle NO_UNDERSCORES syntax.
        !          6437: 
        !          6438:        * tm-pbd.h, xm-pbd.h: New files.
        !          6439: 
        !          6440:        * toplev.c (report_error_function): Don't crash if between functions.
        !          6441: 
        !          6442: Tue Mar 19 12:58:13 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          6443: 
        !          6444:        * sched.c (memrefs_conflict_p): C was being used as offset for X,
        !          6445:        not for Y.  Flipping + and - in offset uses cleared up this problem.
        !          6446:        ({true,anti,output}_dependence): Add declaration for INSN.
        !          6447:        (order_calls): Interface changed; now returns void.  All callers
        !          6448:        changed.
        !          6449:        (sched_analyze_{1,2}): Make dependence between calls and
        !          6450:        call-clobbered registers explicit.
        !          6451:        (sched_analyze): Track last_function_call_not_const.
        !          6452:        (sched_note_set): New parameter DEATH says whether X is marked for
        !          6453:        death.  Also, look through SUBREGs and extractions.
        !          6454:        (rank_for_schedule): Stabilize for qsort.
        !          6455:        (attach_deaths): We should not end up with more REG_DEAD notes than
        !          6456:        we started with, so abort if we run out early.
        !          6457:        (attach_deaths_insn): Handle more complicated cases of registers
        !          6458:        dying in insns.
        !          6459:        (unlink_notes): Work from back-to-front instead of front-to-back.
        !          6460:        (new_sometimes_live): Fix code that looks for an element already in
        !          6461:        the table.
        !          6462:        (schedule_block): New variable TAIL_PRIORITY  used to help determine
        !          6463:        max IPC of scheduled code.  Also, for now we analyze (schedule) all
        !          6464:        blocks, even ones which won't benfit from scheduling.  This is
        !          6465:        necessary to keep register live info correct, but has the
        !          6466:        disadvantage of screwing *all* debug info, not just for the blocks
        !          6467:        that were scheduled.
        !          6468:        (update_links): Fix complicated code that was to be a simple
        !          6469:        head-cons to be a simple head-cons.
        !          6470:        (schedule_insns): Update REG_LIVE_LENGTH and REG_N_CALLS_CROSSED
        !          6471:        after scheduling.
        !          6472: 
        !          6473:        * sparc.md (cmpdf): Define an expand pattern for this.  (Dropped by
        !          6474:        mistake when converted from old-style to new-style condition codes).
        !          6475: 
        !          6476:        * out-sparc.c (singlemove_string): Catch case where `sethi' can be
        !          6477:        used instead of `mov'.
        !          6478: 
        !          6479:        * gcc.texinfo (Optimize Options): Add documentation about the
        !          6480:        `-finline' option (actually, the `-fno-inline' option).
        !          6481: 
        !          6482:        * out-sparc.c (output_block_move): Use `rtx_alloc' instead of
        !          6483:        `gen_rtx' to cons a CONST_INT whose INTVAL we can change.
        !          6484: 
        !          6485:        * toplev.c (main): Recognize all -O strings (i.e. -O3, -O69), not
        !          6486:        just -O and -O2.
        !          6487: 
        !          6488: Mon Mar 18 22:30:21 1991  Richard Stallman  ([email protected])
        !          6489: 
        !          6490:        * expr.c (expand_expr): For TRUTH_ANDIF_EXPR, don't use hard target
        !          6491:        if not optimizing.
        !          6492: 
        !          6493:        * combine.c: Fix some comments; reorder the variable declarations.
        !          6494: 
        !          6495: Mon Mar 18 12:07:03 1991  Matthew Self ([email protected])
        !          6496: 
        !          6497:        * tm-next.h (WORD_SWITCH_TAKES_ARG):  Return number of args taken.
        !          6498: 
        !          6499:        * tm-next.h (CPLUSPLUS):  Deleted (obsolete).
        !          6500: 
        !          6501:        * out-next.c (flag_no_mach_text_sections, handle_pragma):
        !          6502:        Handle #pragma CC_NO_MACH_TEXT_SECTIONS.
        !          6503: 
        !          6504: Mon Mar 18 12:12:13 1991  Richard Stallman  (rms at goldman)
        !          6505: 
        !          6506:        * cplus-pt.c: Renamed from cplus-template.c.
        !          6507:        * Makefile.in (cplus-pt.o): New target.
        !          6508: 
        !          6509:        * c-typeck.c (initializer_constant_valid_p):
        !          6510:        Allow casts that change width only for explicit values.
        !          6511:        * tree.c (really_constant_p): New function.
        !          6512:        * expr.c (expand_expr): Handle MINUS_EXPR with EXPAND_SUM.
        !          6513: 
        !          6514:        * tm-m68k.h (FUNCTION_EXTRA_EPILOGUE): Don't normally define this.
        !          6515:        * out-m68k.c (use_return_insn): Don't look at FUNCTION_EXTRA_EPILOGUE.
        !          6516: 
        !          6517:        * out-sparc.c (normal_comp_operator): Replace comparison_code_p.
        !          6518: 
        !          6519: Sun Mar 17 22:53:25 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          6520: 
        !          6521:        * m68k.md: Delete patterns now converted by combine to simpler
        !          6522:        patterns or otherwise obsolete.  Specifically:  ZERO_EXTRACT from
        !          6523:        an HImode object, setting cc0 to SUBREG or AND, umulhi3, umulsi3,
        !          6524:        AND of a ZERO_EXTRACT, shifts of 24 and 16 from MEM, and patterns with
        !          6525:        constants as first operand of comparison operator.
        !          6526:        Remove COMPARE except as a SET_SRC.
        !          6527: 
        !          6528:        * alliant.md, tahoe.md, rs6000.md: Remove COMPARE except as a SET_SRC.
        !          6529: 
        !          6530:        * flags.h (flag_combine_regs): Deleted.
        !          6531:        * toplev.c: Likewise.
        !          6532:        * tm-a29k.h, tm-romp.h, tm-rs6000.h (OVERRIDE_OPTIONS): No longer
        !          6533:        turn on flag_combine_regs.
        !          6534: 
        !          6535:        * tm-romp.h, tm-rs6000.h (SLOW_BYTE_ACCESS): Set to 1.
        !          6536: 
        !          6537:        * Makefile.in (combine.o): Include insn-codes.h and insn-attr.h.
        !          6538: 
        !          6539:        * combine.c: Major rework to support many more simplifications in
        !          6540:        a more regular manner and support combining three insns into two.
        !          6541:        The most significant changes are the following:
        !          6542:        (subst): Remove simplifications involving ZERO_EXTRACT, SIGN_EXTRACT,
        !          6543:        ZERO_EXTEND, SIGN_EXTEND, AND, and shifts.
        !          6544:        Call new routines below; in the case of comparisons, handle call
        !          6545:        find_next_use if we need to change the comparison code or the
        !          6546:        particular MODE_CC mode required.
        !          6547:        No need to ever change ASHIFT to MULT here.
        !          6548:        (expand_compound_operation): New function to convert
        !          6549:        {ZERO,SIGN}_{EXTRACT,EXTEND} into the appropriate pair of shifts.
        !          6550:        (make_compound_operation): New function to make
        !          6551:        {ZERO,SIGN}_{EXTRACT,EXTEND} operations from shifts and ANDs.
        !          6552:        If we are on a machine (like a Vax) that has only arithmetic shifts,
        !          6553:        convert logical to arithmetic shifts when it doesn't matter 
        !          6554:        which shift is used (simplify_shift_const canonicalizes to
        !          6555:        logical shifts).
        !          6556:        If inside an address, convert ASHIFT to MULT.
        !          6557:        (significant_bits): New function to determine which bits of
        !          6558:        a value are known to be zero.
        !          6559:        (simplify_and_const_int): Use significant_bits.
        !          6560:        Call expand_compound_operation when required.
        !          6561:        Handle AND of an ASHIFTRT with a constant.
        !          6562:        Don't make ZERO_{EXTEND,EXTRACT} here.
        !          6563:        (simplify_shift_const): New function to simplify a shift of an
        !          6564:        an object by a constant integer.
        !          6565:        (gen_lowpart_for_combine): When applied to a comparison operator,
        !          6566:        return comparison operator in requested mode.
        !          6567:        (simplify_set_cc0_and): Deleted.
        !          6568:        (try_combine): No longer call simplify_set_cc0_and.
        !          6569:        (reversible_comparison_p): New function.
        !          6570:        (simplify_comparison): New function.
        !          6571: 
        !          6572:        (combine_instructions): Allocate and initialize new vars
        !          6573:        reg_last_set_{table_tick,label,invalid}.
        !          6574:        (update_table_tick, record_value_for_reg): New functions.
        !          6575:        (get_last_value_validate, get_last_value): New functions.
        !          6576:        (record_dead_and_set_regs): Call record_value_for_reg.
        !          6577: 
        !          6578:        (find_split_point): New function to locate a place where a complex
        !          6579:        pattern can be split into two insns.
        !          6580:        (try_combine): If we are combining three insns and can't recognize the
        !          6581:        new pattern, try to split it.
        !          6582:        Call new functions below to update insn status.
        !          6583:        Return insn at which to continue scan.
        !          6584:        (adjacent_insns_p, add_links, remove_links): Deleted.
        !          6585:        (add_incs, add_no_conflicts, remove_death, move_deaths_2): Deleted.
        !          6586:        (move_deaths): Generalize to include movements in both directions.
        !          6587:        Update reg_first_use when we make an earlier use.
        !          6588:        (distribute_notes, distribute_links): New functions.
        !          6589:        (combine_instructions): No longer need check for LOG_LINKS
        !          6590:        pointing at a NOTE.
        !          6591:        Rescan from location indicated by try_combine, if any, when
        !          6592:        combining three insns.
        !          6593:        Update reg_first_use if we moved a use to a later insn.
        !          6594: 
        !          6595:        (try_distrib): Deleted.
        !          6596:        (apply_distributive_law): New function, contains code from old
        !          6597:        try_distrib.
        !          6598:        (subst): Call apply_distributive_law for applicable operations.
        !          6599:        Try to apply associative law.
        !          6600:        (combine_instructions): No longer call try_distrib.
        !          6601:        (dump_combine_stats, dump_combine_total_stats, combine_instructions):
        !          6602:        No longer count distributer statistics.
        !          6603: 
        !          6604:        (can_combine_p): New function to see if I2 or I1 is combinable.
        !          6605:        Be more precise about when we can combine insns involving cc0.
        !          6606:        Eliminate -fcombine-regs; always do it.
        !          6607:        (try_combine): 
        !          6608:        Call can_combine_p to validate I2 and I1.
        !          6609:        If -fexpensive-optimizations, try to simplify I1 or I2.
        !          6610:        Handle (set (foo) (const_int 0)) followed by a STRICT_LOW_PART
        !          6611:        assignment to FOO as a ZERO_EXTEND.
        !          6612:        (subst): Quit very early if X is a root node (like PC0).
        !          6613:        Remove most canonicalizations done in first switch statement; now
        !          6614:        done elsewhere.
        !          6615:        Call simplify_{unary,binary,ternary}_operation.
        !          6616:        Add cases involving logical and arithmetic operations applied
        !          6617:        to comparison operators or values with only one significant bit.
        !          6618:        Add more cases involving ABS since comparisons returning values
        !          6619:        can be done with ABS.
        !          6620:        Avoid generating (const (const ...) ...).
        !          6621:        Convert (xmult (x_extend ...) ...) to a widening multiply.
        !          6622: 
        !          6623:        (gen_rtx_combine): New function to search for an operation in
        !          6624:        undobuf.  Many callers to gen_rtx changed to call this function.
        !          6625:        (copy_substitutions): Only copy a substitution if it was placed into
        !          6626:        more than one location.
        !          6627: 
        !          6628: Sun Mar 17 17:26:09 1991  Richard Stallman  ([email protected])
        !          6629: 
        !          6630:        * c-common.c (shorten_compare): Warn for (unsigned char) == -1.
        !          6631: 
        !          6632:        * final.c (final_scan_insn): Set debug_insn before first output.
        !          6633:        (output_asm_insn): Clear it here.
        !          6634: 
        !          6635:        * expr.c (do_jump): Don't try to split non-integers.
        !          6636: 
        !          6637:        * fixincludes (dnetdb.h): Fix missing semi in nodeent.
        !          6638:        (rusers.h): Code to fix this file was duplicated.
        !          6639: 
        !          6640:        * toplev.c (decl_printable_name): Now given an extra arg.
        !          6641:        (decl_name): Accept that arg.
        !          6642:        (announce_function, report_error_function): Pass that arg.
        !          6643:        (error_with_decl, warning_with_decl): Likewise.
        !          6644: 
        !          6645:        * dbxout.c (getwd) [USG]: Define as macro.
        !          6646: 
        !          6647:        * c-decl.c (init_decl_processing): Indicate byte alignment for void.
        !          6648: 
        !          6649:        * expr.c (do_jump_by_parts_*): Compute nwords from compare arg.
        !          6650:        Pass 0 as size and alignment to compare_from_rtx.
        !          6651:        (do_jump_by_parts_greater): Compare high word first.
        !          6652:        Handle unsigned compares properly.
        !          6653:        Fix logic for dropping through versus failing.
        !          6654: 
        !          6655:        * expr.c (expand_builtin): Change cmpstrsi4 to cmpstrsi as in optabs.c.
        !          6656: 
        !          6657:        * c-common.c (truthvalue_conversion): Handle ptr vs int in MINUS_EXPR.
        !          6658: 
        !          6659: Sun Mar 17 15:43:48 1991  Matthew Self ([email protected])
        !          6660: 
        !          6661:        Allow multiple return points in some framless functions (2/2/91):
        !          6662: 
        !          6663:        * m68k.md (return):  New insn pattern for rts (and rtd).
        !          6664: 
        !          6665:        * tm-m68k.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE,
        !          6666:        USE_RETURN_INSN):       Call new functions to avoid giant macros
        !          6667:        which are hard to edit.
        !          6668: 
        !          6669:        * out-m68k.c (output_function_prologue,
        !          6670:        output_function_epilogue):  New functions.
        !          6671: 
        !          6672:        * out-m68k.c (use_return_insn):  New function.  Determines
        !          6673:        whether the epilogue will consist of a single insn.  Some
        !          6674:        code was duplicated from output_function_epilogue.  There
        !          6675:        should be probably a new layout routine to do this common
        !          6676:        work.  Also #include "flags.h".
        !          6677: 
        !          6678:        *out-m68k.c (output_function_epilogue):  Don't output
        !          6679:        anything if the epilogue was output as RTL.  We detect this
        !          6680:        by the barrier insn which is always placed after a return
        !          6681:        insn.  This machine-independent test should probably be moved
        !          6682:        back into final.c and removed from out-sparc.c and out-m88k.c.
        !          6683: 
        !          6684:        * out-next.c:  Don't #include "flags.h".
        !          6685: 
        !          6686: Sun Mar 17 00:07:20 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          6687: 
        !          6688:        * genemit.c (gen_exp): Support constm1_rtx.
        !          6689:        * genrecog.c (add_to_sequence): Likewise.
        !          6690: 
        !          6691: Sat Mar 16 17:26:58 1991  Richard Stallman  ([email protected])
        !          6692: 
        !          6693:        * c-lang.c (maybe_building_objc_message_expr): New dummy function.
        !          6694:        * c-typeck.c (warn_for_assignment): Use it.
        !          6695: 
        !          6696:        * toplev.c (compile_file): Write out all static consts that are used.
        !          6697: 
        !          6698: Sat Mar 16 14:08:12 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          6699: 
        !          6700:        * integrate.c (subst_constants): Don't replace registers in USE or
        !          6701:        CLOBBER expressions.
        !          6702: 
        !          6703:        * genattrtab.c (main): Properly set up a default DEFINE_ASM_ATTRIBUTES.
        !          6704: 
        !          6705:        * cse.c (cse_insn): Correctly check for a hash table element equal to
        !          6706:        the destination of a SET.
        !          6707: 
        !          6708: Fri Mar 15 16:55:32 1991  Ron Guilmette (rfg at pepper.ncd.com)
        !          6709: 
        !          6710:        * Makefile.in (OBJS): Added dwarfout.o to list of things to be
        !          6711:        built.
        !          6712: 
        !          6713:        * Makefile.in (dwarfout.o): Added this rule.
        !          6714: 
        !          6715:        * dwarfout.c (FT_*_long_long): Added default definitions for all of
        !          6716:        these extended fundamental type codes to cater to plain vanilla
        !          6717:        <dwarf.h> file which do not define codes for these fundamental types.
        !          6718: 
        !          6719:        * dwarfout.c (TREE_UID): Added a local definition of this macro
        !          6720:        because gcc v2 no longer provides a definition for it and because
        !          6721:        dwarfout.c needs some way of getting a unique numeric code for each
        !          6722:        type.
        !          6723: 
        !          6724:        * dwarfout.c (CLASSTYPE_*): Added some local default definitions
        !          6725:        for these macros in order to get around the fact that they are
        !          6726:        currently defined only in cplus-tree.h (and rms wants dwarfout.c
        !          6727:        to be language independent).
        !          6728: 
        !          6729:        * dwarfout.c (BITFIELD_OFFSET_*): Added some local macros to help
        !          6730:        compute various quantities relating to bitfield offsets.
        !          6731: 
        !          6732:        * dwarfout.c (location_attribute): Changed code which outputs location
        !          6733:        attributes for bitfield so that it uses gcc2 macros.
        !          6734: 
        !          6735:        * dwarfout.c (byte_size_attribute): Changed code which outputs the
        !          6736:        byte_size attribute so that it no longer uses the obsolete
        !          6737:        DECL_SIZE_UNIT macro (from gcc1).
        !          6738: 
        !          6739:        * dwarfout.c:  Replaced all uses of the obsolete macro TREE_PACKED
        !          6740:        to uses of the new gcc2 macro DECL_BIT_FIELD.
        !          6741: 
        !          6742:        * dwarfout.c (deriv_list_attribute): Fixed typo "decl" => "type".
        !          6743: 
        !          6744:        * dwarfout.c (output_dies_for_type): Replaced bogus reference to the
        !          6745:        non-existant routine "output_member_function_type_die" with a proper
        !          6746:        reference to the routine "output_subroutine_type_die".
        !          6747: 
        !          6748:        * dwarfout.c (output_symbols_for_block): Fixed calling error which
        !          6749:        was introduced by rms.
        !          6750: 
        !          6751:        * dwarfout.c: Replaced all uses of the obsolete macro STMT_SUBBLOCKS
        !          6752:        with uses of the new gcc2 macro BLOCK_SUBBLOCKS.
        !          6753: 
        !          6754:        * dwarfout.c (output_symbol): Removed reference to TAG_DECL.  The
        !          6755:        use of TAG_DECLs was an early idea which didn't work out.
        !          6756: 
        !          6757:        * dwarfout.c: (dwarfout_init): Changed name from dwarfout_initialize
        !          6758:        because rms failed to do so when he changed the name in the call.
        !          6759: 
        !          6760: Fri Mar 15 17:22:14 1991  Richard Stallman  ([email protected])
        !          6761: 
        !          6762:        * c-decl.c (pushdecl): Add `%s' to some error messages.
        !          6763: 
        !          6764:        * sparc.md: Add extra assembler alternative in last change.
        !          6765: 
        !          6766:        * cse.c (simplify_unary_operation, simplify_binary_operation):
        !          6767:        Remove error checks that rejected SFmode.
        !          6768: 
        !          6769:        * expr.c (get_pointer_alignment): Don't lose on casts from integer
        !          6770:        to pointer.
        !          6771: 
        !          6772: Fri Mar 15 07:57:19 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          6773: 
        !          6774:        * c-decl.c (pushdecl): Fix typo in previous change.
        !          6775: 
        !          6776:        * cse.c (simplify_{unary,binary}_operation): Fix usage of
        !          6777:        REAL_VALUE_FROM_CONST_DOUBLE in recent change.
        !          6778: 
        !          6779: Thu Mar 14 18:56:53 1991  Richard Stallman  ([email protected])
        !          6780: 
        !          6781:        * c-decl.c (pushdecl): Warn if mismatch with implicit decl.
        !          6782: 
        !          6783:        * final.c (final_start_function): Handle NON_SAVING_SETJMP.
        !          6784:        Include hard-reg-set.h.
        !          6785:        * function.c (setjmp_protect, setjmp_protect_args): Likewise.
        !          6786:        (expand_function_end): Call those if NON_SAVING_SETJMP.
        !          6787: 
        !          6788: Thu Mar 14 14:40:45 1991  James Wilson (wilson at cygnus.com)
        !          6789: 
        !          6790:        * reload1.c (order_regs_for_reload): When REG_ALLOC_ORDER is defined,
        !          6791:        use that definition only to order regs, do not try to put call
        !          6792:        used regs first.  This eliminates the benefits of defining the macro
        !          6793:        in the first place.
        !          6794: 
        !          6795:        * real.h: New macros for real arithmetic, REAL_VALUE_FIX_TRUNCATE,
        !          6796:        REAL_VALUE_UNSIGNED_FIX_TRUNCATE, REAL_VALUE_FIX,
        !          6797:        REAL_VALUE_UNSIGNED_FIX.
        !          6798: 
        !          6799:        * cse.c (simplify_unary_operation): Added code to simplify floating
        !          6800:        point rtx.  Now simplifies UNSIGNED_FLOAT, ABS, FLOAT_TRUNCATE,
        !          6801:        FLOAT_EXTEND, FIX, and UNSIGNED_FIX.  Add aborts to default case
        !          6802:        of switches.
        !          6803:        (simplify_binary_operation): Added code to simplify floating point
        !          6804:        rtx.  Now simplifies PLUS, MINUS, MULT, and DIV.  Add aborts to
        !          6805:        default case of switches.
        !          6806:        (*): Always use REAL_VALUE_TYPE and REAL_VALUE_FROM_CONST_DOUBLE
        !          6807:        when extracting a floating point number from a CONST_DOUBLE.
        !          6808: 
        !          6809: Thu Mar 14 14:40:45 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          6810: 
        !          6811:        * expr.c (get_pointer_alignment): Update ALIGN for NOP_EXPR.
        !          6812: 
        !          6813:        * c-decl.c (builtin_function): New arg LIBRARY_NAME.
        !          6814:        (initialize_decl_processing): Pass that argument.
        !          6815: 
        !          6816:        * c-decl.c (grokdeclarator): Handle C_TYPE_FIELDS_VOLATILE.
        !          6817:        (finish_struct): Likewise.
        !          6818:        * c-tree.h (C_TYPE_FIELDS_VOLATILE): Define it.
        !          6819: 
        !          6820:        * Makefile.in (gnulib1, gnulib2.portable): Test $$? after compilation.
        !          6821: 
        !          6822:        * c-typeck.c (check_format): Discard multiple NOP_EXPR levels.
        !          6823: 
        !          6824:        * objc-actions.c (build_message_expr, build_selector_expr,
        !          6825:        build_encode_expr, get_class_ivars, start_class):  Finding
        !          6826:        Objective-C code in c source files is now a fatal error.
        !          6827:        (They should recompile with -lang-objc.)
        !          6828: 
        !          6829:        * objc-actions.c (gen_method_decl):  Don't crash for syntax
        !          6830:        error in method declaration: -bar: x, y
        !          6831:        (encode_array):  Treat an undimensioned array the same as a pointer.
        !          6832: 
        !          6833: Thu Mar 14 07:39:30 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          6834: 
        !          6835:        * reorg.c (try_merge_delay_insns): Previous fix had effect of 
        !          6836:        disabling this function.  Rework to take into account things
        !          6837:        needed, instead of set.  This is still somewhat of a kludge.
        !          6838: 
        !          6839:        * recog.c (apply_change_group): An insn consisting of just a USE
        !          6840:        or CLOBBER is always valid, but recog_memoized returns a -1 for it.
        !          6841: 
        !          6842:        * genattrtab.c: Count all definitions as well as counting insns; use
        !          6843:        definition # in error message.
        !          6844:        Most functions that accepted insn_code now accept insn_index as well
        !          6845:        and similarly for structures containing insn_code.
        !          6846: 
        !          6847:        * reorg.c (try_merge_delay_insns): If not an annulling branch, take 
        !          6848:        into account things set in the delay slot.  This prevents merging
        !          6849:        two increments into one.
        !          6850: 
        !          6851:        * reorg.c (dbr_schedule): Fix typo in printing statistics.
        !          6852: 
        !          6853: Thu Mar 14 02:11:56 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          6854: 
        !          6855:        * genemit.c, genoutput.c, genrecog.c: Count all definitions
        !          6856:        as well as counting insns; use # of definition in error messages.
        !          6857: 
        !          6858:        * toplev.c (pipe_closed, float_signal): Give it an explicit arg.
        !          6859:        * cplus-decl.c (sigsegv): Likewise.
        !          6860:        * cccp.c (pipe_closed): Likewise.
        !          6861: 
        !          6862:        * cccp.c: Delete trigraph from comment.
        !          6863: 
        !          6864:        * Makefile.in (realclean): Delete objc parser files.
        !          6865: 
        !          6866:        * assert.h (__assert for __GNUC__): Don't return value of abort.
        !          6867: 
        !          6868: Wed Mar 13 16:12:54 1991  Richard Stallman  (rms at churchy.ai.mit.edu)
        !          6869: 
        !          6870:        * expr.c (do_jump_by_parts_greater): Don't lose if labels are 0.
        !          6871: 
        !          6872:        * cplus-edsel.c: New name for cplus-cadillac.c.
        !          6873:        * Makefile.in (cplus-edsel.o): Fix the compilation rule.
        !          6874: 
        !          6875: Wed Mar 13 06:47:53 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          6876: 
        !          6877:        * reorg.c (mark_set_resources): Any registers mentioned in REG_INC
        !          6878:        notes are set by an INSN.
        !          6879: 
        !          6880:        * flags.h (flag_expensive_optimizations): Add new flag.
        !          6881:        * toplev.c: Support -fexpensive-optimizations and turn on for -O2.
        !          6882:        * stmt.c (preserve_subexpressions_p): Use flag_expensive_optimizations
        !          6883:        instead of testing for -O2 explicitly.
        !          6884: 
        !          6885:        * expr.h (operand_subword): Add missing declaration.
        !          6886: 
        !          6887:        * reload1.c (eliminate_regs): Handle INSN_LIST (found in REG_NOTES).
        !          6888: 
        !          6889:        * tm-i386.h (RETURN_POPS_ARGS): Don't call aggregate_type_p with 
        !          6890:        IDENTIFIER_NODE.
        !          6891: 
        !          6892: Wed Mar 13 00:00:29 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          6893: 
        !          6894:        * optabs.c (expand_binop, expand_unop): If wordwise, make target non0.
        !          6895: 
        !          6896: Tue Mar 12 15:24:09 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          6897: 
        !          6898:        * fixincludes: Quote the # in an echo.
        !          6899:        * fixincludes: Fix typos handling size_t and ptrdiff_t.
        !          6900:        * fixincludes (sys/file.h): Fix incorrect conditional in Ultrix.
        !          6901: 
        !          6902:        * c-typeck.c (initializer_constant_valid_p): Allow NON_LVALUE_EXPR.
        !          6903:        Return a tree that indicates the relocation.
        !          6904:        All callers changed.
        !          6905: 
        !          6906:        * jump.c (jump_optimize): Rerecognize jump insn after inverting it.
        !          6907: 
        !          6908:        * expr.c (do_jump):
        !          6909:        Use can_compare_p on the operand mode, not the comparison's mode.
        !          6910: 
        !          6911:        * reload.c (subst_reloads): Fix dumb error in last change.
        !          6912: 
        !          6913:        * expr.c (do_jump_by_parts_equality*): Fix logic errors.
        !          6914: 
        !          6915: Mon Mar 11 14:27:40 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          6916: 
        !          6917:        * reload.c (subst_reloads): Don't make subregs, just new regs.
        !          6918: 
        !          6919:        * expr.c (do_jump_by_parts_equality, do_jump_by_parts_greater):
        !          6920:        (do_jump_for_compare, do_jump_by_parts_equality_rtx): New functions.
        !          6921:        (do_jump): Use them to handle wide values.
        !          6922:        * optabs.c (can_compare_p): New function.
        !          6923: 
        !          6924:        * reload1.c (emit_reload_insns): Don't make subreg around RELOADREG;
        !          6925:        just make a new REG.
        !          6926: 
        !          6927:        * cse.c, varasm.c: Fix typos.
        !          6928: 
        !          6929:        * sparc.md (move SI to reg_or_nonsymb_mem_operand):
        !          6930:        Separate third alternative into two alternatives.
        !          6931:        * tm-sparc.h (PREFERRED_RELOAD_CLASS): Return CLASS as given.
        !          6932: 
        !          6933:        * optabs.c (operand_subword): Fix typo.
        !          6934: 
        !          6935:        * longlong.h (__umulsidi3): Return .ll field.
        !          6936: 
        !          6937: Mon Mar 11 11:43:21 1991  Jeffrey A. Law  (law at mole.ai.mit.edu)
        !          6938: 
        !          6939:        * make-hp9k2bsd: New file.
        !          6940:        * configure (hp9k200-bsd): Use it.
        !          6941: 
        !          6942: Mon Mar 11 07:08:12 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          6943: 
        !          6944:        * cplus-lex.c (check_newline): Clear TREE_INT_CST_HIGH once instead
        !          6945:        of clearing TREE_INT_CST_LOW twice.
        !          6946: 
        !          6947: Mon Mar 11 06:51:52 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          6948: 
        !          6949:        * flow.c (mark_used_regs): If we are going to use a later
        !          6950:        register to auto-increment, make sure it really is a REG.
        !          6951:        In the case above, count any calls crossed by the new register.
        !          6952: 
        !          6953:        * global-alloc.c (global_conflicts): Mark registers modified by
        !          6954:        virtue of a REG_INC note as modified in the insn to make conflicts.
        !          6955:        (mark_reg_store): Accept SETTER value of 0.
        !          6956: 
        !          6957: Sun Mar 10 16:56:25 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          6958: 
        !          6959:        * optabs.c (operand_subword): New function to get one word of operand.
        !          6960:        (expand_binop, expand_unop): Use it for word at a time case.
        !          6961: 
        !          6962:        * configure (a29-bsd*): Renamed from a29-sysv*.
        !          6963: 
        !          6964:        * expr.c (emit_library_call): Handle GNULIB_NEEDS_DOUBLE.
        !          6965:        * tm-i860.h (GNULIB_NEEDS_DOUBLE): Define it.
        !          6966: 
        !          6967:        * tm-harris.h (ASM_FILE_START): Output a .file.
        !          6968: 
        !          6969:        * reload1.c (constraint_accepts_reg_p): Understand reg classes.
        !          6970: 
        !          6971: Sun Mar 10 06:58:20 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          6972: 
        !          6973:        * expr.c (move_by_pieces, move_by_pieces_ninsns, emit_push_insn):
        !          6974:        If SLOW_UNALIGNED_ACCESS is defined, respect alignment even if
        !          6975:        STRICT_ALIGNMENT is not defined.
        !          6976:        * tm-a29k.h (SLOW_UNALIGNED_ACCESS): Define this.
        !          6977: 
        !          6978: Sun Mar 10 02:57:40 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          6979: 
        !          6980:        * cccp.c (handle_directive): If pass_thru and -C, print the
        !          6981:        input before removing comments from it.
        !          6982: 
        !          6983: Sat Mar         9 21:18:48 1991  Torbjorn Granlund  (tege at musta.nada.kth.se)
        !          6984: 
        !          6985:        * gnulib2.c (div_qrnnd, __umulsidi3, lowpart, highpart, B): Move
        !          6986:        to longlong.h.
        !          6987:        (udiv_qrnnd): New name of div_qrnnd.  Rewrite to work correctly.
        !          6988:        (file header): Remove obsolete comment about internal format.
        !          6989:        (bits): Remove this function.  count_leading_zeros in longlong.h
        !          6990:        is similar.
        !          6991:        (__udivdi3): Use count_leading_zeros instead of bits.
        !          6992:        (__udivdi3): Use umul_ppmm instead of __umulsidi3, as this makes
        !          6993:        better code.
        !          6994: 
        !          6995: Sat Mar         9 18:02:47 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          6996: 
        !          6997:        * jump.c (jump_optimize): Avoid looking at PATTERN of NOTE
        !          6998:        or CODE_LABEL.
        !          6999: 
        !          7000:        * reload1.c (reg_is_output_reload, count_for_*groups): Use
        !          7001:        HARD_REG_SET instead of array to avoid bzero calls.
        !          7002:        (reload_reg_used*): Likewise.
        !          7003: 
        !          7004:        * emit-rtl.c (gen_rtx, init_emit_once): Pre-compute CONST_INTs
        !          7005:        from -64 to 64 to save space.
        !          7006: 
        !          7007: Sat Mar         9 14:28:37 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7008: 
        !          7009:        * reload1.c (choose_reload_regs): Fix typo in last change.
        !          7010: 
        !          7011: Sat Mar         9 01:03:01 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          7012: 
        !          7013:        * cplus-decl.c (pushtag): Don't call `pushdecl' for nested type if
        !          7014:        the type is already defined.
        !          7015: 
        !          7016: Fri Mar         8 17:24:20 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7017: 
        !          7018:        * ns32k.md, vax.md (right shift patterns): When generating a right
        !          7019:        shift, use xSHIFTRT but use (neg x) as the shift count to
        !          7020:        more accurately represent what is supported by the machine.
        !          7021: 
        !          7022:        * expmed.c (emit_store_flag): Can't narrow result of scc insn before
        !          7023:        normalizing.
        !          7024: 
        !          7025: Fri Mar         8 12:56:41 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          7026: 
        !          7027:        * cplus-class.c (pushclass): Set CURRENT_FUNCTION_DECL to
        !          7028:        appropriate value so that pushtag does the right thing for tags
        !          7029:        pushed into scope.
        !          7030: 
        !          7031: Fri Mar         8 02:47:53 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7032: 
        !          7033:        * gcc.c (delete_temp_files): Delete only ordinary files.
        !          7034: 
        !          7035:        * tree.c, cplus-tree.c (TYPE_HASH): 777777 was supposed to be octal.
        !          7036: 
        !          7037:        * reload1.c (choose_reload_regs): Properly ensure EQUIV
        !          7038:        is free and of the desired class.
        !          7039:        When a reload may be a group, mark all its regs in use.
        !          7040: 
        !          7041:        * reload.c (push_reload): Don't call reg_overlap_mentioned_p
        !          7042:        unless IN is a REG or MEM.
        !          7043: 
        !          7044:        * c-common.c, cplus-search.c, cplus-class.c (NULL):
        !          7045:        Undef before defining.
        !          7046: 
        !          7047:        * sdbout.c (sdbout_one_type): Don't temporarily clear KNOWN_TYPE_TAG.
        !          7048: 
        !          7049: Thu Mar         7 10:53:32 1991  Tom Wood  (wood at dg-rtp.dg.com
        !          7050: 
        !          7051:        * toplev.c (main): Add -dp: annotate the assembly with a comment
        !          7052:        describing the pattern and alternative used.  Also, make -dm work
        !          7053:        for USG systems.
        !          7054:        * genoutput.c (output_epilogue): Output the array `insn_name'.
        !          7055:        * final.c (debug_insn, final_scan_insn): Record the value of the
        !          7056:        last insn processed by final_scan_insn.
        !          7057:        (output_asm_insn): Annotate the assembly output.
        !          7058:        (ASM_COMMENT_START): Provide a default value.
        !          7059:        * tm-att386.h, tm-bsd386.h, tm-sun386.h (ASM_COMMENT_START):
        !          7060:        Specify "/".
        !          7061: 
        !          7062: Thu Mar         7 06:15:04 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          7063: 
        !          7064:        * cplus-class.c (propagate_basetype_offsets): Check ASSOC_TYPE in
        !          7065:        addition to return value from assoc value before aborting.   ???
        !          7066:        should figure out why assocs are not shared.
        !          7067: 
        !          7068: Wed Mar         6 16:29:37 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7069: 
        !          7070:        * c-decl.c (NULL): Undef before defining.
        !          7071: 
        !          7072:        * cccp.c (do_include): Allocate file name permanently.
        !          7073: 
        !          7074: Wed Mar         6 09:06:39 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          7075: 
        !          7076:        * m88k.md (and/ashift): Added for the new combine.c (ashift/and
        !          7077:        works with the previous version).
        !          7078:        (bcnd insns): Use bcnd to test for sign and zero.
        !          7079:        (muldf3, divdf3): Use new method to deal with a power of two.
        !          7080:        (andsi3, iorsi3, xorsi3): Split into two insns for some constants.
        !          7081:        (call, call_value): Deal properly with a CONST_INT address.
        !          7082:        * out-m88k.c (call_address_operand): Don't allow CONST_INT.
        !          7083:        (uses_arg_area_p): New function for -moptimize-arg-area.
        !          7084:        * tm-m88k.h (TARGET_SWITCHES): Delete -mpic in favor of -fpic.
        !          7085:        Add -moptimize-arg-area and -mno-optimize-arg-area.
        !          7086: 
        !          7087: Wed Mar         6 00:07:09 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7088: 
        !          7089:        * real.h (REAL_VALUE_FROM_CONST_DOUBLE): Takes input and output args.
        !          7090:        * integrate.c (copy_for_inline, copy_rtx_and_substitute):
        !          7091:        (restore_constants): Calls changed.
        !          7092: 
        !          7093: Tue Mar         5 23:06:36 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7094: 
        !          7095:        * stmt.c (fixup_gotos): Handle jumping to end of rtl.
        !          7096: 
        !          7097:        * c-decl.c (store_parm_decls): If -traditional,
        !          7098:        allow unsigned int in prototype in place of int.
        !          7099: 
        !          7100:        * cplus-cadillac.c: Delete all but the stubs.
        !          7101: 
        !          7102: Tue Mar         5 16:59:18 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7103: 
        !          7104:        * jump.c (jump_optimize): Handle case of only NOTE insns after
        !          7105:        NOTE_INSN_LOOP_BEG.
        !          7106:        (duplicate_loop_exit_test): Return 0 when we hit a block
        !          7107:        start or end, rather than quitting loop and getting confused.
        !          7108: 
        !          7109:        * integrate.c (subst_constants): Correctly move constants to
        !          7110:        second operand of commutative operations.
        !          7111: 
        !          7112:        * jump.c (comparison_code_p): Deleted.
        !          7113:        * combine.c (subst): Use GET_RTX_CLASS instead of comparison_code_p.
        !          7114:        * cse.c (find_comparison_args): Likewise.
        !          7115:        * recog.c (comparison_operator): Likewise.
        !          7116:        * loop.c (get_condition): Likewise.
        !          7117: 
        !          7118: Tue Mar         5 14:21:57 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7119: 
        !          7120:        * cse.c (fold_rtx): When checking for constant pool addresses,
        !          7121:        handle addresses constructed from LO_SUM.
        !          7122: 
        !          7123:        * recog.c (constrain_operands): If before reload, `m' and `o'
        !          7124:        accept all that could be reloaded to fit those constraints.
        !          7125: 
        !          7126:        * reload1.c (gen_input_reload): Return the first insn emitted by
        !          7127:        this function, instead of the last insn emitted.
        !          7128: 
        !          7129:        * stmt.c (expand_end_loop): When move exit test to loop bottom,
        !          7130:        also move a preceeding NOTE_INSN_LOOP_CONT note if it exists.
        !          7131: 
        !          7132:        * gcc.c (process_command): Check for running out of args after option.
        !          7133: 
        !          7134:        * out-mips.c, out-romp.c: Test BYTES_BIG_ENDIAN with #if.
        !          7135:        * tm-i860.h (*_BIG_ENDIAN): Define as 0.
        !          7136:        * tm-mips-news.h (BYTES_BIG_ENDIAN, WORDS_BIG_ENDIAN): Deleted.
        !          7137:        (DECSTATION): Deleted.
        !          7138: 
        !          7139:        * tm-mips.h: Test WORDS_BIG_ENDIAN with #if.
        !          7140: 
        !          7141:        * tm-mips.h, tm-sparc.h, tm-spur.h (CONST_DOUBLE_OK_FOR_LETTER_P):
        !          7142:        Use CONST_DOUBLE_LOW and CONST_DOUBLE_HIGH.
        !          7143: 
        !          7144:        * real.h: dconst0, dconst1, dconstm1 are declared twice.
        !          7145:        Eliminate the second redundant declaration.
        !          7146: 
        !          7147:        * cse.c (FIXED_REGNO_P): Exclude OVERLAPPING_REGNO_P registers.
        !          7148: 
        !          7149:        * cccp.c (path_include): Handle empty names in path.
        !          7150: 
        !          7151:        * final.c: Use gvarargs.h, not varargs.h
        !          7152: 
        !          7153:        * configure (i860, i860-bsd): Handle +gas.
        !          7154:        * tm-i860g.h, tm-i860bsdg.h: New files.
        !          7155: 
        !          7156: Mon Mar         4 22:41:36 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7157: 
        !          7158:        * cse.c (simplify_unary_operation): When making a real const, use MODE.
        !          7159: 
        !          7160: Mon Mar         4 21:35:47 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7161: 
        !          7162:        * cse.c (cse_end_of_basic_block): Correctly handle case where
        !          7163:        we find a "new" branch to follow.
        !          7164:        (cse_end_of_basic_block, cse_main, cse_basic_block): PATH_SIZE
        !          7165:        is now actual size, not size - 1.
        !          7166: 
        !          7167: Mon Mar         4 06:44:27 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          7168: 
        !          7169:        * cplus-decl.c (poplevel): Change test for whether to clobber the
        !          7170:        DECL_CONTEXT of local variables.  Now we won't clobber context for
        !          7171:        any nested types.
        !          7172: 
        !          7173: Mon Mar         4 00:39:11 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7174: 
        !          7175:        * jump.c (jump_optimize): When deleting x=y after y=x,
        !          7176:        don't delete more than one death note, and don't delete any
        !          7177:        unless we really do delete x=y.
        !          7178: 
        !          7179:        * cccp.c (main): Support -lang-objc++.
        !          7180:        Eliminate compilation parameter CPLUSPLUS.
        !          7181: 
        !          7182:        * cccp.c (main): Handle leading or trailing space in `predefs'.
        !          7183: 
        !          7184:        * fixincludes: Fix typos handling size_t and ptrdiff_t.
        !          7185: 
        !          7186: Sun Mar         3 16:41:24 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7187: 
        !          7188:        * cccp.c (main): Handle multiple spaces, and tabs, in `predefs'.
        !          7189:        * gcc.c (do_spec_1):  Allow extra whitespace in CPP_PREDEFINES.
        !          7190:        Also transform -Dfoo=bar into -D__foo__=bar correctly.
        !          7191: 
        !          7192:        * varasm.c (assemble_zeros): Use ASM_BYTE if defined.
        !          7193: 
        !          7194:        * reload1.c (reload): Only special-case a spill reg alone in a class
        !          7195:        if there is non-group need for that class.  Be careful not to count
        !          7196:        a reg in the usual place if it was counted in the special case.
        !          7197: 
        !          7198:        * reload1.c (order_regs_for_reload): Make fixed regs and
        !          7199:        eliminable regs twice as bad as explicitly mentioned regs.
        !          7200: 
        !          7201:        * reload1.c (choose_reload_regs): Fix typos in last change.
        !          7202: 
        !          7203:        * c-decl.c (init_decl_processing):
        !          7204:        Return type of memcpy varies if -traditional.
        !          7205:        (ptr_ftype_ptr_cptr_sizet): Global var deleted.
        !          7206: 
        !          7207:        * reload1.c (emit_reload_insns): When updating reg_reloaded_contents,
        !          7208:        first always clear, then maybe store nonzero value.
        !          7209: 
        !          7210: Sun Mar         3 16:12:17 1991  Ken Raeburn  (raeburn at watch.com)
        !          7211: 
        !          7212:        * cplus-template.c (mangle_class_name_for_template): Add two
        !          7213:        leading underscores, to avoid conflicts with programmer's names.
        !          7214: 
        !          7215:        * cplus-tree.h (struct lang_identifier): New field `template'
        !          7216:        points to template info from which this identifier was
        !          7217:        constructed.
        !          7218: 
        !          7219:        * cplus-template.c (current_template_expansion,
        !          7220:        current_template_name): Variables deleted.
        !          7221: 
        !          7222:        * cplus-template.c (lookup_template_class): Top half of old
        !          7223:        instantiate_template; returns the id_node.
        !          7224:        (instantiate_template): Takes the id_node as argument now.
        !          7225:        * cplus-parse.y (template rules): Use separate rule for checking
        !          7226:        whether expansion is required.  For base classes, always try it;
        !          7227:        else do it only if `{' is not next token.
        !          7228:        (template_type_name): New nonterminal for template class name
        !          7229:        without expansion.
        !          7230:        (template_type): Includes expansion, if needed.
        !          7231: 
        !          7232:        * cplus-input.c (input_from_saved_text): Deleted.
        !          7233:        * cplus-template.c (instantiate_template): Call feed_input directly.
        !          7234: 
        !          7235:        * cplus-parse.y (base_class_visibility_list): Now type <itype>,
        !          7236:        cast to tree in base_class action.
        !          7237: 
        !          7238: Sun Mar         3 07:46:55 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7239: 
        !          7240:        * expr.c (do_store_flag): Consider A & single-bit as cheap.
        !          7241: 
        !          7242:        * fold-const.c (operand_equal_p): If ARG0 and ARG1 are the same
        !          7243:        SAVE_EXPR, they are equal.
        !          7244: 
        !          7245:        * function.c (fixup_var_refs_1): Move mispositioned code in
        !          7246:        (set (zero_extract ...) ...) case; fix incorrect indentation.
        !          7247: 
        !          7248: Sun Mar         3 01:11:46 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7249: 
        !          7250:        * cccp.c (include_defaults, cplusplus_include_defaults):
        !          7251:        Use STANDARD_INCLUDE_DIR.
        !          7252:        (STANDARD_INCLUDE_DIR): Define by default as /use/include.
        !          7253:        * tm-mips.h (STANDARD_INCLUDE_DIR): Define, if MIPS_BSD43.
        !          7254:        (CPP_SPEC): Don't do -I to handle -ZSYSV, -ZBSD43.
        !          7255: 
        !          7256: Sat Mar         2 17:20:57 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7257: 
        !          7258:        * expr.c (expand_expr, case COND_EXPR): Remove unneeded calls to
        !          7259:        safe_from_p in A ? A : FOO cases.
        !          7260: 
        !          7261: Sat Mar         2 16:14:24 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7262: 
        !          7263:        * reload1.c (choose_reload_regs): Support subreg as reload_override_in.
        !          7264:        Likewise reload_reg_rtx.  Just don't use REGNO on them.
        !          7265:        (emit_reload_insns): Handle subreg as OLDEQUIV.
        !          7266: 
        !          7267:        * reload1.c (delete_output_reload): Pass the output reload insn,
        !          7268:        not a spill reg index.  Call in emit_reload_insns changed.
        !          7269:        (emit_reload_insns): Don't actually update spill_reg_store
        !          7270:        till after all reload insns have been made.
        !          7271: 
        !          7272:        * reload.c (push_reload): If existing reload has a reload reg,
        !          7273:        make sure it fits the class of this reload.
        !          7274: 
        !          7275:        * stmt.c (fixup_gotos): Fix typo in last change.
        !          7276: 
        !          7277:        * reload1.c (choose_reload_regs): Don't use equiv reg
        !          7278:        that is clobbered in this insn.
        !          7279: 
        !          7280: Sat Mar         2 12:19:19 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          7281: 
        !          7282:        * cplus-dem.c (optable): Add op for `operator,'.
        !          7283: 
        !          7284:        * toplev.c (main): Clear WARN_INLINE if FLAG_NO_INLINE is nonzero.
        !          7285: 
        !          7286:        * cplus-typeck.c (c_expand_return): Perform conversion to reference
        !          7287:        in time that we can warn about the return of more non-lvalues.
        !          7288:        Also, fix what appeared to be bugs in the code dealing with
        !          7289:        WHATS_RETURNED.
        !          7290: 
        !          7291: Sat Mar         2 00:11:18 1991  Ken Raeburn  (raeburn at watch.com)
        !          7292: 
        !          7293:        * cplus-parse.y (base_class): Base class may be a template class.
        !          7294:        Split off non-visibility portion into base_class.1.
        !          7295: 
        !          7296:        * cplus-parse.y: Replaced PUBLIC, PRIVATE, PROTECTED with a single
        !          7297:        terminal VISSPEC, with <itype> value, to simplify parser slightly.
        !          7298:        * cplus-parse.h (enum rid): Added values for VISSPEC terminal.
        !          7299:        * cplus-lex.c (is_reserved_word): Changed token types to VISSPEC,
        !          7300:        rid values as appropriate.
        !          7301:        (yylex): For VISSPEC, set itype value rather than ttype.
        !          7302: 
        !          7303: Fri Mar         1 21:50:23 1991  Ken Raeburn  (raeburn at watch.com)
        !          7304: 
        !          7305:        * cplus-parse.y (.set_base_init): Discarded `preserve' code, which
        !          7306:        was doing nothing.
        !          7307: 
        !          7308: Fri Mar         1 19:01:25 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7309: 
        !          7310:        * reorg.c (redundant_insn_p): Rename second arg to TARGET.
        !          7311:        Handle the case where TARGET is a SEQUENCE.
        !          7312:        (mark_target_live_regs): Don't get confused by registers conditionally
        !          7313:        set in a JUMP_INSN when looking for regs set before used.
        !          7314: 
        !          7315: Thu Feb 28 17:25:59 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7316: 
        !          7317:        * loop.c (check_dbra_loop): Replace code that thinks it knows
        !          7318:        exactly what the RTL looks like (and gets it wrong) with call
        !          7319:        to get_condition_for_loop.
        !          7320: 
        !          7321: Thu Feb 28 16:35:21 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7322: 
        !          7323:        * c-typeck.c (build_compound_expr): Convert array to pointer.
        !          7324: 
        !          7325: Wed Feb 27 15:46:54 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7326: 
        !          7327:        * gnulib1.c (FLOAT_ARG_TYPE, FLOATIFY): New macros.
        !          7328:        (__*sf*): Use them for `float' args.
        !          7329: 
        !          7330:        * stmt.c (expand_end_case):
        !          7331:        Test value of HAVE_casesi and HAVE_tablejump at runtime.
        !          7332: 
        !          7333:        * stmt.c (fixup_gotos): Check that jump into bindings
        !          7334:        really comes from before the start of the bindings.
        !          7335:        Use TREE_REGDECL to indicate error message printed.
        !          7336: 
        !          7337: Wed Feb 27 15:01:51 1991  Ken Raeburn  (raeburn at watch.com)
        !          7338: 
        !          7339:        * cplus-template.c (end_template_decl): Store correct name in new
        !          7340:        decl.  Use pushdecl, not pushtag.
        !          7341:        (instantiate_template): Use identifier's global value, not its
        !          7342:        type.  Pass back both template and new class in token value.
        !          7343:        * cplus-lex.c (identifier_type): Templates now have type
        !          7344:        TEMPLATE_DECL, not TYPE_DECL wrapped around a TEMPLATE_DECL.
        !          7345: 
        !          7346: Wed Feb 27 06:27:45 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7347: 
        !          7348:        * loop.c (replace_regs): Don't make nested SUBREGs.
        !          7349: 
        !          7350:        * reload.c (push_reload): SUBREG_LOC applies only to INLOC, not OUTLOC.
        !          7351: 
        !          7352:        * cse.c (simplify_binary_operation): Simplify A&A, A|A, and A^A.
        !          7353: 
        !          7354:        * reload.c (find_reloads_address_1): Correctly handle (post_inc (mem)).
        !          7355: 
        !          7356: Tue Feb 26 21:49:15 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7357: 
        !          7358:        * expmed.c (store_bit_field, extract_bit_field):  Calls to
        !          7359:        get_best_mode were passing alignment in bytes rather than
        !          7360:        alignment in bits.
        !          7361: 
        !          7362:        * flags.h (flag_pedantic_errors): Declare it.
        !          7363: 
        !          7364:        * c-tree.h (C_TYPEDEF_EXPLICITLY_SIGNED): New flag.
        !          7365:        * c-decl.c (grokdeclarator): Record that flag in new typedefs.
        !          7366:        Check it when determining signedness of bitfields.
        !          7367: 
        !          7368:        * expr.c (expand_expr): In A ? A : B, make output safe from A and B.
        !          7369: 
        !          7370:        * reload.c (find_reloads_address, find_reloads_address_1):
        !          7371:        Reload any reg that appears in a clobber in the same insn.
        !          7372:        (regno_clobbered_p): New function.
        !          7373: 
        !          7374: Tue Feb 26 21:41:43 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          7375: 
        !          7376:        * expr.c (expand_expr): Add missing arg to exapnd_exit_loop in
        !          7377:        EXIT_EXPR case.
        !          7378: 
        !          7379: Tue Feb 26 14:35:47 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7380: 
        !          7381:        * c-decl.c (grokdeclarator): Check pedantic error last.
        !          7382: 
        !          7383:        * tm-i386.h (STRUCT_VALUE, STRUCT_VALUE_INCOMING): Value is 0.
        !          7384:        (RETURN_POPS_ARGS): Pop the structure return pointer here.
        !          7385:        * out-i386.c (function_epilogue):
        !          7386:        current_function_pops_args says how many args to pop.
        !          7387: 
        !          7388:        * tm-i386.h (CC_Z_IN_NOT_C): New cc flag.
        !          7389:        * i386.md (je and jne patterns): Handle this flag.
        !          7390:        (pattern using bt insns): Set the flag.
        !          7391:        Output test insn instead if bit number is constant.
        !          7392:        (insv): Changed constraint.
        !          7393: 
        !          7394:        * tm-i386.h (enum reg_class): Define ABCI_REGS.
        !          7395:        (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Support ABCI_REGS.
        !          7396:        Fix the contents for ABC_REGS.
        !          7397:        (REG_CLASS_FROM_LETTER): Define `x' for ABCI_REGS.
        !          7398:        * i386.md (divsi3, udivsi3): Use `xm' for operand 2 constraint.
        !          7399:        (divhi3, udivhi3, divmod*, udivmod*): Likewise.
        !          7400: 
        !          7401:        * cccp.c (pedwarn): Declare as void.
        !          7402: 
        !          7403: Tue Feb 26 06:41:34 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          7404: 
        !          7405:        * tree.h (IDENTIFIER_VIRTUAL_P): New macro for IDENTIFIER_NODE.
        !          7406:        Nonzero means that this identifier is used by a function declared
        !          7407:        virtual.
        !          7408:        * cplus-decl.c (grokfndecl): Set IDENTIFIER_VIRTUAL_P instead of
        !          7409:        DECL_VIRTUAL_P.
        !          7410:        * cplus-search.c (get_first_matching_virtual): Test
        !          7411:        IDENTIFIER_VIRTUAL_P instead of DECL_VIRTUAL_P.
        !          7412: 
        !          7413:        * cplus-decl.c (pushtag): Handle classes which are nested in
        !          7414:        function scope (as opposed to class scope).
        !          7415:        (lookup_nested_type): Ditto.
        !          7416:        * cplus-method.c (build_overload_nested_name): Ditto.
        !          7417: 
        !          7418:        * cplus-decl.c (grokdeclarator): Only globalize non-nested classes
        !          7419:        declared in class scope (i.e., don't globalize in function scope).
        !          7420: 
        !          7421: Tue Feb 26 06:11:37 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7422: 
        !          7423:        * a29k.md (storem): Fix typo in operand number.
        !          7424: 
        !          7425:        * expr.c (do_store_flag): Add missing cast required for some compilers.
        !          7426: 
        !          7427:        * tm-a29k.h (REG_CLASS_*, REGNO_REG_CLASS): Add new class Q_REGS
        !          7428:        and constraint letter `q' for the Q register.  Requested by tege.
        !          7429: 
        !          7430:        * tm-a29k.h (PRINT_OPERAND_ADDRESS): Allow short constant as address.
        !          7431: 
        !          7432: Mon Feb 25 20:46:43 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7433: 
        !          7434:        * expr.c (expand_expr): In handling A : A ? FOO, use safe_from_p
        !          7435:        against FOO.  Fix many incorrect operand refs in A : FOO ? A.
        !          7436: 
        !          7437:        * sdbout.c (plain_type_1): Record type name only if using forward refs.
        !          7438: 
        !          7439:        * reload.c (find_reloads): Mark those RELOAD_OTHER reloads
        !          7440:        that are used for output addresses, for choose_reload_regs.
        !          7441: 
        !          7442:        * integrate.c (copy_rtx_and_substitute):
        !          7443:        Copy REG_USERVAR_P from original regs to new regs.
        !          7444: 
        !          7445:        * c-typeck.c (digest_init): Handle STRING_CST before same-type case.
        !          7446: 
        !          7447: Mon Feb 25 13:31:51 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          7448: 
        !          7449:        * cplus-decl.c (grokdeclarator): Handle the identification of
        !          7450:        constructors declared in nested scope.
        !          7451: 
        !          7452: Mon Feb 25 06:27:28 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7453: 
        !          7454:        * reorg.c (next_insn_no_annul): New function.
        !          7455:        (mark_set_resources, mark_target_live_regs): Don't count insns from
        !          7456:        the target of a branch if the branch is annulling.
        !          7457: 
        !          7458:        * expmed.c (emit_store_flag): Get new register for target if
        !          7459:        preserve_subexpressions_p returns nonzero.
        !          7460:        Convert to desired mode, then normalize, instead of doing it
        !          7461:        the other way around; this allows better combining.
        !          7462: 
        !          7463: Sun Feb 24 20:07:02 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7464: 
        !          7465:        * cse.c (find_comparison_args): Fix indentation and misplaced paren.
        !          7466: 
        !          7467:        * Makefile.in (install-headers): Remove extraneous parens from
        !          7468:        uses of shelllibsubdir.
        !          7469: 
        !          7470: Sun Feb 24 15:49:42 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7471: 
        !          7472:        * loop.c (check_dbra_loop): Win if loop biv is used only for counting.
        !          7473: 
        !          7474:        * cccp.c (struct definition): Record file and line.
        !          7475:        (create_definition): Store that information.
        !          7476:        (do_define): Identify location of previous definition.
        !          7477:        (pedwarn_with_file_and_line): New function.
        !          7478: 
        !          7479: Sat Feb 23 13:36:13 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7480: 
        !          7481:        * c-decl.c (grokdeclarator): Error for `signed void', etc.
        !          7482:        Warning for `signed my_int', and only if pedantic.
        !          7483: 
        !          7484:        * toplev.c (warn_cast_align): New flag, with -W option.
        !          7485:        * c-typeck.c (build_c_cast): Warn if target alignment increases.
        !          7486: 
        !          7487: Sat Feb 23 10:22:03 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          7488: 
        !          7489:        * cplus-type2.c (store_init_value): Global variables must be
        !          7490:        specially initialized in PIC under SunOS.
        !          7491: 
        !          7492:        * cplus-dbxout.c (dbxout_tags): Test that the tag's value has not
        !          7493:        been cleared before trying to use it as a type.  This happens when a
        !          7494:        class starts out looking like a nested class, but turns out to be a
        !          7495:        reference to an implicitly defined global class.
        !          7496: 
        !          7497: Sat Feb 23 06:16:44 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7498: 
        !          7499:        * jump.c (true_regnum): If given a pseudo not assigned a hard reg,
        !          7500:        return the pseudo register number.
        !          7501: 
        !          7502:        * out-rs6000.c (update_cc): Remove CC_REVERSE and CC_NONNEG.
        !          7503:        * rs6000.md (define_attr "cc"): Remove reverse.
        !          7504:        (cmpsi): Only allow second arg to be a constant.
        !          7505:        Remove some unneeded comparison patterns.
        !          7506: 
        !          7507:        * rs6000.md (misc logical patterns): Only add CLOBBER for MQ
        !          7508:        when we really clobber it; we used to do so in more cases to
        !          7509:        work around a since-fixed restriction in combine.c
        !          7510: 
        !          7511:        * rs6000.md (extend*): Use DEFINE_EXPAND instead of a pattern
        !          7512:        that generates two insns.  Remove (sign_extend (ashift ..) ...)
        !          7513:        and similar patterns; no longer neeed.
        !          7514: 
        !          7515:        * rs6000.md (fma instruction): Add missing single-precision case.
        !          7516: 
        !          7517:        * out-rs6000.c (print_operand, case 's' and 'S'): Truncate to low-order
        !          7518:        5 bits.
        !          7519: 
        !          7520:        * out-rs6000.c (output_prolog, output_epilog): Correct code to handle
        !          7521:        large stack frames; used 65535 instead of 32767 and had a typo.
        !          7522: 
        !          7523:        * tm-romp.h (CC_IN_NOT_TB): Deleted.
        !          7524:        * out-romp.c (update_cc): No longer need CC_REVERSE, CC_NONNEG, or
        !          7525:        CC_NOTTBIT.
        !          7526:        (print_operand): Remove use of CC_IN_NOT_TB.
        !          7527:        * romp.md (define_attr "cc"): Remove reverse,nonneg, and nottbit.
        !          7528:        (mttbi): Remove redundant pattern.
        !          7529:        (cmpsi): First arg can only be register_operand.
        !          7530:        Remove some unneeded COMPARE patterns.
        !          7531:        
        !          7532:        * romp.md (movhi): Use zero-extend, not sign-extend load.
        !          7533: 
        !          7534:        * out-romp.c: (float_conversion): Allow CONST_INT as operand.
        !          7535: 
        !          7536:        * out-romp.c (first_reg_to_save): Ensure we save r14 if we use it.
        !          7537: 
        !          7538:        * a29k.md (divsf3): Fix typo in name; was divds3.
        !          7539: 
        !          7540:        * tm-a29k.h: Add new -mno-storem-bug and TARGET_NO_STOREM_BUG.
        !          7541:        (TARGET_SWITCHES): -m29050 turns on -mno-storem-bug.
        !          7542:        * a29k.md: (store_multiple_bug): New pattern to work around chip bug.
        !          7543:        (store_multiple_no_bug): New name for original pattern.
        !          7544:        (store_multiple): Choose depending on TARGET_NO_STOREM_BUG.
        !          7545:        (storem patterns): Two cases, with and without bug.
        !          7546: 
        !          7547:        * a29k.md (extend*): Don't define single insn for sign_extend.
        !          7548:        Instead, use DEFINE_EXPAND.  Delete DEFINE_SPLITs for the old patterns.
        !          7549: 
        !          7550:        * a29k.md (jumpfdec pattern): Fix typo.
        !          7551: 
        !          7552:        * tm-a29k.h, tm-romp.h, tm-rs6000.h (CC1_SPEC): Remove optimization
        !          7553:        selections.
        !          7554:        (OPTIMIZATION_OPTIONS): Turn off insn scheduling by default until
        !          7555:        it is fixed.
        !          7556: 
        !          7557:        * tm-a29k.h, tm-romp.h, tm-rs6000.h (SETUP_INCOMING_VARARGS):
        !          7558:        Correctly handle the case of the special argument being other than
        !          7559:        the first arg.
        !          7560: 
        !          7561:        * tm-a29k.h (GO_IF_LEGITIMATE_ADDRESS): A tiny constant (< 255)
        !          7562:        is also a valid address.
        !          7563: 
        !          7564:        * tm-a29k.h, tm-romp.h, tm-rs6000.h (BYTE_LOADS_ZERO_EXTEND): Add to
        !          7565:        support combine.c in development.
        !          7566: 
        !          7567:        * jump.c (jump_optimize, can_reverse_comparison_p, delete_jump):
        !          7568:        Consistently allow NOTEs between the set and use of CC0.
        !          7569:        * reorg.c (delete_scheduled_jump): Likewise.
        !          7570: 
        !          7571:        * expmed.c (emit_store_flag): Pass in UNSIGNEDP; can't derive it from
        !          7572:        comparison code.
        !          7573:        * expr.c (do_store_flag): Add UNSIGNEDP arg to emit_store_flag call.
        !          7574:        * jump.c (jump_optimize): Likewise.
        !          7575:        * optabs.c (expand_binop): Likewise.
        !          7576: 
        !          7577:        * local-alloc.c (requires_inout_p): New function.
        !          7578:        (block_alloc): Use high-priority preferences if we have a hard
        !          7579:        register used in an insn that requires the same register for
        !          7580:        input as for the output.
        !          7581:        (combine_regs): Rename argument COPY to MAY_SAVE_COPY.
        !          7582: 
        !          7583:        * cse.c (simplify_binary_operation, case MULT): Convert multiply
        !          7584:        by power of two to shift.
        !          7585:        (cse_insn): Don't share rtx obtained from the hash table; copy it.
        !          7586: 
        !          7587: Sat Feb 23 00:27:26 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7588: 
        !          7589:        * rtlanal.c (dead_or_set_p): Don't check for REG_INC.
        !          7590: 
        !          7591:        * reload.c (push_reload): (subreg:m1 (reg:m2 ...) ...) with M1 wider
        !          7592:        than M2 is also a paradoxical SUBREG.
        !          7593: 
        !          7594: Fri Feb 22 14:43:44 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7595: 
        !          7596:        * reload1.c (possible_group_p): Add missing forward declaration.
        !          7597: 
        !          7598:        * reload1.c (eliminate_regs, case PLUS): Ensure we handle the
        !          7599:        case of (plus reg1 reg2) where REG1 is eliminable and REG2 is
        !          7600:        psuedo that didn't get a hard reg and has reg_equiv_constant nonzero.
        !          7601:        (choose_reload_regs): If reload_needed_for_multiple,
        !          7602:        the reload can't be input-only or output-only.
        !          7603:        (emit_reload_regs): Avoid regno_dead_p.
        !          7604:        * combine.c (regno_dead_p): Function deleted.
        !          7605: 
        !          7606:        * Makefile.in (maketest): Finish renaming config to configure.
        !          7607: 
        !          7608:        * gcc.c (lookup_compiler): Create a new entry to represent
        !          7609:        the result of searching for an alias entry.
        !          7610: 
        !          7611:        * reload.c (combine_reloads): Swap args to reg_overlap_mentioned_p.
        !          7612: 
        !          7613: Fri Feb 22 09:40:50 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          7614: 
        !          7615:        * cplus-parse.y (base_class_list): Re-fix precedence so we can use MI.
        !          7616: 
        !          7617:        * cplus-except.c (init_exception_processing): Push exception ctors
        !          7618:        and dtors into scope so they can be inlined.
        !          7619: 
        !          7620: Fri Feb 22 08:03:47 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7621: 
        !          7622:        * genemit.c (output_init_mov_optab): New function.
        !          7623:        (main): Have insn-emit.c include insn-codes.h.
        !          7624:        Call output_init_mov_optab.
        !          7625:        * optabs.c (gen_move_insn): Handle moving MODE_CC modes; we may have
        !          7626:        to find a different mode to do this in.
        !          7627:        (init_optabs): Try to initialize CCmode in mov_optab; if we have
        !          7628:        EXTRA_CC_MODES, call init_mov_optab.
        !          7629:        * Makefile.in (insn-emit.o): Now depends on insn-codes.h.
        !          7630: 
        !          7631:        * rtl.h (get_last_insn_anywhere): Add missing declaration.
        !          7632: 
        !          7633:        * stmt.c: Now includes hard-reg-set.h (for n_non_fixed_regs).
        !          7634:        (preserve_subexpressions_p): Renamed from inside_loop.
        !          7635:        Always return true if optimize >= 2; always return false if
        !          7636:        optimize == 0.  If optimize == 1, only return true if we aren't
        !          7637:        very far into a loop instead of whenever we are in any loop.
        !          7638:        * Makefile.in (stmt.o): Now includes hard-reg-set.h.
        !          7639:        * expr.c (expand_expr): Use preserve_subexpressions_p instead of
        !          7640:        inside_loop.
        !          7641:        Only set TARGET to SUBTARGET if TARGET isn't a pseudo register.
        !          7642:        (expand_expr, case REAL_CST): Don't call force_reg; now done in
        !          7643:        expand_binop, if required.
        !          7644:        * optabs.c (expand_binop, expand_twoval_binop, emit_cmp_insn):
        !          7645:        If arg is expensive constant and preserve_subexpressions_p is true,
        !          7646:        force it into a register.
        !          7647:        * out-sparc.c (emit_move_sequence): Call preserve_subexpressions_p
        !          7648:        instead of inside_loop.
        !          7649: 
        !          7650:        * reload1.c (eliminate_regs, case SUBREG): Correct test for paradoxical
        !          7651:        SUBREG.
        !          7652: 
        !          7653:        * varasm.c (output_constant_pool): If entry refers to a deleted label,
        !          7654:        write a zero instead of the undefined label.
        !          7655: 
        !          7656: Fri Feb 22 02:49:24 1991  Ken Raeburn  (raeburn at watch.com)
        !          7657: 
        !          7658:        * Reversed all changes dated 20 February.
        !          7659:        * cplus-template.c (pending_template_expansion): New function;
        !          7660:        given template name, returns class name of expansion in progress.
        !          7661:        * cplus-parse.y (PTYPENAME -> typespec): Call it.
        !          7662:        ('~' PTYPENAME -> notype_declarator): Ditto.
        !          7663: 
        !          7664: Thu Feb 21 15:17:13 1991  Craig Burley (burley at geech.ai.mit.edu)
        !          7665: 
        !          7666:        * c-common.c (check_case_value): If value is NULL_TREE, return it
        !          7667:        without any further checking.
        !          7668: 
        !          7669:        * stmt.c (pushcase_range): If value1 is NULL_TREE, substitute
        !          7670:        minimum value for the type, if value2 is NULL_TREE, substitute
        !          7671:        maximum value for the type, from then on assume both are not NULL_TREE.
        !          7672:        These changes appear to provide minimal support for case ranges.
        !          7673: 
        !          7674:        * c-typeck.c (digest_init): For explicit array element initializer
        !          7675:        case, change check against max value of domain so index may equal it.
        !          7676:        For array element initialization, give next initializer a chance to
        !          7677:        override the choice of next index before falling out of loop because
        !          7678:        next index is out of range.  For structure initialization, give next
        !          7679:        initializer a similar chance before falling out of loop because no
        !          7680:        more fields exist.
        !          7681: 
        !          7682:        * reload1.c (possible_group_p): Needed a forward decl (static).
        !          7683: 
        !          7684: Thu Feb 21 14:37:01 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7685: 
        !          7686:        * c-decl.c (grokdeclarator):
        !          7687:        Don't make bitfield type unsigned if comes from typedef.
        !          7688: 
        !          7689:        * reload1.c (reload): Don't require INITIAL_FRAME_POINTER_OFFSET
        !          7690:        if cannot eliminate the frame pointer.
        !          7691: 
        !          7692:        * i860.md (cbranch, inverse_cbranch): Use eq to test cc0.
        !          7693:        (negated branch patterns): New patterns.
        !          7694: 
        !          7695:        * tm-i860.h (INITIALIZE_TRAMPOLINE): Use size_int, not build_int.
        !          7696: 
        !          7697:        * reload1.c (reload): Save and restore notes around find_reloads.
        !          7698: 
        !          7699:        * tm-sun2os4.h (LINK_SPEC): New macro.
        !          7700:        * tm-sun386i.h (LINK_SPEC): Undef before redefining.
        !          7701: 
        !          7702:        * cccp.c (do_include): Check for -2, not -1, as value of lookup_import.
        !          7703: 
        !          7704:        * c-parse.y (initlist): Fix typo.
        !          7705: 
        !          7706: Mon Feb 18 02:50:38 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          7707: 
        !          7708:        * cplus-decl.c (grokdeclarator): Try to come up with better magic
        !          7709:        for implicitly globalizing classes implicitly declared in class
        !          7710:        scope.
        !          7711: 
        !          7712: Sun Feb 17 09:27:38 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          7713: 
        !          7714:        * cplus-tree.c (virtual_offset): New function.  Returns the offset
        !          7715:        of a baseclass that is virtual or comes from a virtual baseclass, or
        !          7716:        NULL if there is no such baseclass.
        !          7717:        * cplus-class.c (modify_vtable_entries): Call this function instead
        !          7718:        of `virtual_member'.  `virtual_member' can return the wrong thing if
        !          7719:        we try to use it for an offset computation of a baseclass which is
        !          7720:        not strictly a virtual baseclass.
        !          7721: 
        !          7722: Sat Feb 16 06:21:03 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7723: 
        !          7724:        * recog.c (validate_replace_rtx_1): Use correct rtx_code for the
        !          7725:        new operation when commuting operands.
        !          7726:        Generalize to commute operands on comparison operation.
        !          7727: 
        !          7728: Fri Feb 15 23:01:24 1991  Richard Stallman  (rms at geech.ai.mit.edu)
        !          7729: 
        !          7730:        * c-parse.y (initlist): Finish changing `case N:' to `[N]'.
        !          7731: 
        !          7732:        * combine.c (try_combine): Update reg_first_use.  Flush useless links.
        !          7733: 
        !          7734: Thu Feb 14 17:06:44 1991  Ken Raeburn  (raeburn at watch.com)
        !          7735: 
        !          7736:        * cplus-parse.y (template_parm): New derivation from `class ID',
        !          7737:        for consistent return of `identifier_node' nodes with `class A :
        !          7738:        B' case.
        !          7739:        * cplus-template (end_template_parm_list): Nothing to strip off of
        !          7740:        identifier_nodes now.
        !          7741:        (process_template_parm): Strip off one level of tree_list,
        !          7742:        discarding (for now) the required base class.  Don't need to run
        !          7743:        through grok* any more.
        !          7744: 
        !          7745: Sun Feb 10 19:23:21 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7746: 
        !          7747:        * gcc.c (main, process_command, default_compilers): Fix typos.
        !          7748: 
        !          7749: Sat Feb         9 15:06:43 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7750: 
        !          7751:        * gcc.c (process_command): Handle separate args for -B, -b, -V.
        !          7752: 
        !          7753:        * gcc.c (lookup_compiler): New function.  Handles alias entries.
        !          7754:        (main): Call that.
        !          7755:        (default_compilers): Make all real suffixes into alias entries.
        !          7756:        (infiles): Now a vector of structures, containing specified language.
        !          7757:        (process_command): Handle -x to specify language.
        !          7758:        (main): Use specified language if any.
        !          7759: 
        !          7760: Fri Feb         8 18:31:00 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7761: 
        !          7762:        * fold-const.c (fold): Set TREE_USED when create COMPOUND_EXPR.
        !          7763:        * stmt.c (warn_if_unused_value): Don't warn if TREE_USED.
        !          7764:        * c-typeck.c (build_unary_op): Handle multiple casts inside ++.
        !          7765: 
        !          7766: Fri Feb         8 07:37:24 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7767: 
        !          7768:        * real.h (dconst2): New variable.
        !          7769:        * emit-rtl.c (init_emit_once): Initialize dconst2.
        !          7770:        * tree.c (real_twop): New function.
        !          7771:        * cse.c (simplify_unary_operation): Fold FLOAT, FLOAT_EXTEND, and
        !          7772:        FLOAT_TRUNCATE.
        !          7773:        (simplify_binary_operation): Convert x*2 to x+x.
        !          7774:        (cse_insn): Handle case where constant equivalent is in table.
        !          7775:        Fix minor bug with merging src_related_elt.
        !          7776:        * fold-const.c (fold): If commutative operation, move a constant
        !          7777:        first operand to the second operand.
        !          7778:        Remove tests of constants as first operand for commutative operations.
        !          7779:        Convert x*2 to x+x.
        !          7780: 
        !          7781: Fri Feb         8 03:07:34 1991  Ken Raeburn  (raeburn at watch.com)
        !          7782: 
        !          7783:        * cplus-ptree.c (print_lang_decl): Corrected argument list.  Print
        !          7784:        address of template info for TEMPLATE_DECL nodes.
        !          7785: 
        !          7786:        * cplus-decl.c (set_current_level_tags_transparency): New
        !          7787:        function, for altering tag-transparency of a context.
        !          7788: 
        !          7789:        * cplus-parse.y (PRE_PARSED_METHOD_DEF): Was unused; now gone.
        !          7790:        (template_instantiation): Handle $-references correctly.  Generate
        !          7791:        a class_head-like value for LC actions to operate on.
        !          7792:        (maybe_base_class_list): New non-terminal: colon and base class
        !          7793:        list, or empty.
        !          7794:        (named_class_head): Use it.
        !          7795:        (unnamed_class_head): Use '{', not LC.
        !          7796:        (class_head): If template_instantiation found, use its value.
        !          7797:        (template_arg): Apply groktypename to typename args.
        !          7798: 
        !          7799:        * cplus-template.c (template_text_obstack): Deleted, just use
        !          7800:        permanent_obstack instead.
        !          7801:        (init_template): Deleted; callers changed.
        !          7802:        (current_template_info): New variable: pointer to last-saved
        !          7803:        template info record.
        !          7804:        (end_template_decl): Use DECL_NAME, DECL_ARGUMENTS,
        !          7805:        DECL_LANG_SPECIFIC, rather than TREE_OPERANDs.  Save most of
        !          7806:        template info here.
        !          7807:        (reinit_parse_for_template): Only save text here, in
        !          7808:        already-allocated template info record.
        !          7809:        (mangle_class_name_for_template): New function.
        !          7810:        (instantiate_template): Finally written.
        !          7811: 
        !          7812: Thu Feb         7 22:06:56 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7813: 
        !          7814:        * tm-i386v4.h (ASM_OUTPUT_COMMON): Specify rounding in the output.
        !          7815:        (ASM_OUTPUT_LOCAL): Use .local and .comm.
        !          7816: 
        !          7817:        * tm-news.h (FUNCTION_PROLOGUE): Correct syntax of link insn.
        !          7818:        (PRINT_OPERAND_ADDRESS): Use period, not colon, before index reg width.
        !          7819: 
        !          7820:        * stmt.c (pushcase, pushcase_range):
        !          7821:        Don't warn for code before first `case' if there is a label on it.
        !          7822: 
        !          7823: Thu Feb         7 06:23:10 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7824: 
        !          7825:        * integrate.c (initialize_for_inline): Accept COPY argument.
        !          7826:        Only copy parameter DECL_RTL if COPY non-zero; in that case,
        !          7827:        also replace DECL_RTL with copy.  All callers changed.
        !          7828:        (copy_decl_rtls): New function.
        !          7829:        (save_for_inline_copying): Use copy_decl_rtls to copy MEM DECL_RTLs
        !          7830:        in the function.
        !          7831:        Copy address of pseudos if they are a MEM.
        !          7832: 
        !          7833: Wed Feb         6 19:19:25 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7834: 
        !          7835:        * c-typeck.c (build_binary_op_nodefault): No warn for RSHIFT by 0.
        !          7836: 
        !          7837: Wed Feb         6 17:37:23 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7838: 
        !          7839:        * function.c (fixup_var_refs_1):  Accept a location in rtx instead
        !          7840:        of an rtx.
        !          7841:        Unless -fforce-mem, if an insn is valid with MEM, leave it alone.
        !          7842:        Rework ZERO_ and SIGN_EXTRACT cases to properly do adjustments
        !          7843:        and generalize to support other than QImode MEMs.
        !          7844:        (fixup_var_refs_insns): Change call to fixup_var_refs_1.
        !          7845: 
        !          7846: Wed Feb         6 08:14:21 1991  Tom Wood  (wood at dg-rtp.dg.com)
        !          7847: 
        !          7848:        * m88k.md (cmp): Use reg_or_0_operand to avoid swapped compares.
        !          7849:        (call patterns): Put use of r1 in a parallel construct.
        !          7850:        (multiply and divide by a power of two): Now just multiply.  The
        !          7851:        new combiner will change divide by a power of two into multiply.
        !          7852:        (movhi, movqi): Use zero-extend load.
        !          7853:        * tm-m88k.h (BYTE_LOADS_ZERO_EXTEND): Use it.
        !          7854:        (H constraint): Changed to mean one or two.
        !          7855:        * out-m88k.c: Use the proper includes for non-USG systems.
        !          7856:        * xm-m88k.h: Include tm.h at the end.   
        !          7857: 
        !          7858: Wed Feb         6 02:24:38 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          7859: 
        !          7860:        * cplus-decl.c (pushtag): Don't try to nest classes from non-C++
        !          7861:        language scopes.
        !          7862: 
        !          7863: Wed Feb         6 01:33:16 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7864: 
        !          7865:        * cse.c (simplify_binary_operation): Don't change div into mult.
        !          7866: 
        !          7867: Tue Feb         5 10:59:53 1991  Ken Raeburn  (raeburn at watch.com)
        !          7868: 
        !          7869:        * cplus-parse.y (template_instantiation): Supply base class list
        !          7870:        and use guts of class declaration.  Untested; will have to be
        !          7871:        fixed up to deal with template context manipulations.
        !          7872: 
        !          7873: Tue Feb         5 00:52:57 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7874: 
        !          7875:        * c-common.c (combine_strings): Finish fixing wide strings.
        !          7876: 
        !          7877:        * reload1.c (possible_group_p): New subroutine.
        !          7878:        (reload): Don't kill last group when looking for a non-group.
        !          7879: 
        !          7880:        * expmed.c (expand_divmod): If emit cmp insn, force op0 into reg.
        !          7881: 
        !          7882:        * objc-parse.y (init_lex, yylex): max_wide now measured in chars. 
        !          7883:        (yylex): Treat \r as whitespace if traditional.
        !          7884: 
        !          7885:        * toplev.c (compile_file): Add missing arg for dbxout_finish.
        !          7886: 
        !          7887:        * objc-actions.c (lang_finish): New dummy function.
        !          7888: 
        !          7889:        * calls.c (expand_call): Recognize other names for setjmp-like fns.
        !          7890: 
        !          7891:        * gcc.c (main): Use obstack_init, not gcc_obstack_init.
        !          7892: 
        !          7893:        * varasm.c (assemble_zeros): New function.
        !          7894:        All calls to ASM_OUTPUT_SKIP elsewhere now use this function.
        !          7895:        Handle ASM_NO_SKIP_IN_TEXT.
        !          7896:        * toplev.c (compile_file): Use assemble_zeros.
        !          7897:        * final.c (end_final): Likewise.
        !          7898:        * tm-3b1.h, tm-att386.h, tm-mot3300.h (ASM_NO_SKIP_IN_TEXT):
        !          7899:        Define as 1.
        !          7900:        * tm-3b1.h (ASM_OUTPUT_SKIP): Don't deal with outputting zeros.
        !          7901: 
        !          7902: Mon Feb         4 20:37:33 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7903: 
        !          7904:        * m68k.md: Use %$ and %& where appropriate.
        !          7905:        (special float_truncate pattern): New, for 68040.
        !          7906:        (68881 DF multiply recognizers): Avoid fscale if 68040. 
        !          7907:        (68881 SF multiply recognizers): Avoid fsglmul if 68040.
        !          7908: 
        !          7909:        * tm-next.h (SECTION_FUNCTION): Simplify; remove last arg. 
        !          7910:        (EXTRA_SECTION_FUNCTIONS): Rewrite to go with that change. 
        !          7911: 
        !          7912: Mon Feb         4 18:22:54 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)
        !          7913: 
        !          7914:        * reorg.c (link_cc0_isns): New function.
        !          7915:        (fill_simple_delay_slots, fill_slots_from_thread): Call it.
        !          7916:        (fill_slots_from_thread): Don't make REG_CC_STATUS notes.
        !          7917:        (delete_scheduled_jump): Use REG_CC_SETTER instead of REG_CC_STATUS.
        !          7918:        Correctly locate compare insn in CC0 case.
        !          7919:        (steal_delay_list_from_target): Don't steal an insn that sets cc0;
        !          7920:        we can't safely copy it.
        !          7921:        (fill_slots_from_thread): Can't put insn that sets CC0 in delay slot
        !          7922:        if we don't own its thread; this would otherwise require copying it.
        !          7923:        (relax_delay_slots): Don't collapse jump to next insn if it has a
        !          7924:        cc0-setting insn in a delay slot.
        !          7925: 
        !          7926:        * reorg.c (update_block): Accept location to place USE marker; use if
        !          7927:        INSN is in a delay slot.
        !          7928:        (mark_target_live_regs): Handle the case where we deleted the start
        !          7929:        of the basic block that was previously used for a target.
        !          7930:        Ignore insns with INSN_FROM_TARGET_P.
        !          7931:        (optimize_skip, try_merge_delay_insns, fill_simple_delay_slots):
        !          7932:        Pass new argument to update_block.
        !          7933:        (try_merge_delay_insns, redundant_insn_p): Clear INSN_FROM_TARGET_P
        !          7934:        to show that this insn will be used in both paths of the branch.
        !          7935:        (try_merge_delay_insns): Add calls to update_block for insns deleted
        !          7936:        from delay slots.
        !          7937: 
        !          7938:        * reorg.c (mostly_true_jump): If no jumps between target and end of
        !          7939:        function, predict as false.
        !          7940:        If comparison == 0, predict false; != 0, predict true.
        !          7941: 
        !          7942:        * reorg.c (steal_delay_list_from_{target,fallthrough}):
        !          7943:        Ignore redundant insn even if it can't be placed in our delay slot.
        !          7944:        (fill_slots_from_thread): Likewise.
        !          7945:        Ensure we don't call redundant_insn_p on any insns that conflict
        !          7946:        with what we need and set.
        !          7947: 
        !          7948:        * reorg.c (fill_eager_delay_slots): Pick up new value of JUMP_LABEL;
        !          7949:        it may have been changed by first call to fill_slots_from_thread.
        !          7950: 
        !          7951:        * rtl.h (REG_TAIL_CALL): Deleted; never documented or used.
        !          7952:        (REG_CC_SETTER, REG_CC_USER): Replacements for REG_CC_STATUS.
        !          7953:        * rtl.c (reg_note_name): New names.
        !          7954:        * final.c (final_scan_insn): Replace REG_CC_STATUS with REG_CC_SETTER;
        !          7955:        now only one insn.
        !          7956:        * emit-rtl.c (next_cc0_user, prev_cc0_setter): Use REG_CC_SETTER and
        !          7957:        REG_CC_USER.
        !          7958: 
        !          7959:        * cplus-cadillac.c, cplus-class.c, cplus-decl.c, cplus-lex.c:
        !          7960:        Replace obstack_init with gcc_obstack_init.
        !          7961:        * cplus-search.c, flow.c, gcc.c, loop.c, reload1.c: Likewise.
        !          7962:        * reorg.c, stmt.c: Likewise.
        !          7963: 
        !          7964:        * reload1.c (eliminate_regs, case ASM_OPERANDS): Fix typo when making
        !          7965:        new ASM_OPERANDS.
        !          7966: 
        !          7967:        * recog.c: Now includes insn-flags.h and insn-codes.h.
        !          7968:        (validate_replace_rtx_1): If replacing the source of a ZERO_ or
        !          7969:        SIGN_EXTRACT with a MEM, try to put the MEM in the mode to be used for
        !          7970:        the MEM.
        !          7971:        * Makefile.in (recog.o): Depends on insn-flags.h and insn-codes.h.
        !          7972: 
        !          7973: Mon Feb         4 17:39:36 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          7974: 
        !          7975:        * c-typeck.c (digest_init): Error if init array with another array.
        !          7976: 
        !          7977: Mon Feb         4 04:58:20 1991  Ken Raeburn  (raeburn at watch.com)
        !          7978: 
        !          7979:        * cplus-tree.def (TEMPLATE_DECL): New node type.
        !          7980:        (TEMPLATE_PARM_IDX): New node type; like integer, with an extra
        !          7981:        field.
        !          7982: 
        !          7983:        * cplus-method.c (check_text_len): Fix up error message to be more
        !          7984:        correct.  Moved function before new_text_len so that the latter
        !          7985:        can call it and inlining can work.
        !          7986:        (new_text_len): Call check_text_len.
        !          7987: 
        !          7988:        * cplus-method.c (build_overload_name): No longer static.
        !          7989: 
        !          7990:        * cplus-class.c (unuse_fields): Now static.
        !          7991:        (popclass): Use a temporary when building C_C_D.
        !          7992: 
        !          7993:        * cplus-decl.c (lookup_tag): Don't complain about type mismatch if
        !          7994:        the tag found is for a template.
        !          7995: 
        !          7996:        * cplus-lex.c: New lookup tables, for new "template" keyword.
        !          7997:        (reinit_lang_specific): Call init_template.
        !          7998:        (init_lex): Ditto.
        !          7999:        (file_from_saved_text): Renamed from input_from_saved_text.
        !          8000: 
        !          8001:        * cplus-lex.c (identifier_type): New function; returns primary
        !          8002:        type (IDENTIFIER, TYPENAME, PTYPENAME) indicated by token name.  A
        !          8003:        PTYPENAME is returned for (TYPE_DECL (TEMPLATE_DECL ...)) nodes.
        !          8004:        (see_typename): Call it.
        !          8005: 
        !          8006:        * cplus-lex.c (yylex): In handling identifiers, use subset of
        !          8007:        TYPENAME code for PTYPENAME tokens.
        !          8008: 
        !          8009:        * cplus-template.c: New file.
        !          8010:        (begin_template_parm_list): Push new scope and switch to permanent
        !          8011:        obstack.
        !          8012:        (end_template_parm_list): Return parameter list as a tree vector.
        !          8013:        (end_template_decl): Save away new TEMPLATE_DECL node.
        !          8014:        (process_template_parm): Build up tree list of template
        !          8015:        parameters.
        !          8016:        (instantiate_template): For now, just complain.
        !          8017:        (init_template): Set up template obstack.
        !          8018:        (reinit_parse_for_template): Gobble up class definition text and
        !          8019:        save it away.
        !          8020: 
        !          8021:        * cplus-parse.y (template_header, template_parm_list): Call above
        !          8022:        routines.
        !          8023:        (datadef): Put template declarations here, instead of in
        !          8024:        class_head.
        !          8025:        (named_class_head_sans_basetype, named_class_head,
        !          8026:        unnamed_class_head): Break up old class_head derivations.
        !          8027:        (class_head): Now any of the above, plus template types with or
        !          8028:        without instantiation.
        !          8029:        (template_type): Call instantiate_template.
        !          8030:        (template_arg_list): Build up list of args.
        !          8031: 
        !          8032:        * cplus-tree.h (lang_type): Add TEMPLATE field.  Also add macro
        !          8033:        TYPE_TEMPLATE.
        !          8034: 
        !          8035: Sun Feb         3 21:16:36 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          8036: 
        !          8037:        * tm-m68k.h (PRINT_OPERAND): Handle `&' and `$'.
        !          8038:        (PRINT_OPERAND_PUNCT_VALID): They are valid.
        !          8039: 
        !          8040:        * out-next.c (handle_pragma): Unread the newline.
        !          8041: 
        !          8042:        * toplev.c (main): Warn if meaningless optimizations are requested.
        !          8043:        Don't enable options by default that would get warnings.
        !          8044: 
        !          8045:        * m68k.md (extend QI to HI): Typo in clr insn.
        !          8046: 
        !          8047:        * c-common.c (combine_strings): Decrement LEN properly when copying.
        !          8048:        * c-parse.y (init_lex, yylex): max_wide now measured in chars. 
        !          8049: 
        !          8050:        * tree.c (gcc_obstack_init): Fix typo in forward decl.
        !          8051: 
        !          8052: Sat Feb         2 09:24:56 1991  Michael Tiemann  (tiemann at cygnus.com)
        !          8053: 
        !          8054:        * cplus-decl.c (poplevel): Change DECL_CONTEXT of decls only of
        !          8055:        their context is CURRENT_FUNCTION_DECL.
        !          8056: 
        !          8057: Fri Feb         1 13:46:07 1991  Richard Stallman  (rms at mole.ai.mit.edu)
        !          8058: 
        !          8059:        * print-tree.c (print_node): Don't print chain for `c' and `x' nodes.
        !          8060: 
        !          8061:        * loop.c (record_excess_regs): Moved here.
        !          8062: 
        !          8063: See file ChangeLog.2.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.