+2000-05-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * invoke.texi (-Wtraditional): Update WRT function macros.
+
+Tue May 30 09:57:32 2000 Philippe De Muyter <phdm@macqel.be>
+
+ * except.c (free_exception_table): Do not free NULL.
+
+2000-05-29 Zack Weinberg <zack@wolery.cumb.org>
+
+ * cpplib.c (do_if): Don't save and restore only_seen_white here.
+ * cppexp.c (_cpp_parse_expr): Save and restore only_seen_white
+ and skipping here.
+
+2000-05-29 Richard Earnshaw (rearnsha@arm.com)
+
+ * flow.c (mark_used_reg): If a register is unconditionally live,
+ remove any conditional death information.
+
+2000-05-29 Richard Henderson <rth@cygnus.com>
+
+ * final.c (current_output_insn): New.
+ (final_scan_insn): Set it.
+ * output.h: Declare it.
+
+2000-05-29 Richard Henderson <rth@cygnus.com>
+
+ * stor-layout.c (finalize_record_size): Fix typo.
+
+ * jump.c (redirect_jump): Don't emit NOTE_INSN_FUNCTION_END
+ if nlabel is null.
+
+2000-05-29 Zack Weinberg <zack@wolery.cumb.org>
+
+ * cpplib.h (cpp_reader): Remove if_stack. Change
+ potential_control_macro to a cpp_hashnode *. Add skipping flag.
+ * cpphash.h (struct ihash): Change control_macro to a
+ cpp_hashnode * and shorten name to cmacro.
+ Add NEVER_REINCLUDE constant.
+
+ * cppfiles.c (redundant_include_p): Drop cpp_reader argument.
+ Examine the cmacro node directly, no need to call cpp_defined.
+ (_cpp_execute_include, read_include_file): Set cmacro to
+ NEVER_REINCLUDE, not U"".
+ * cpplex.c (cpp_push_buffer): Don't set new->if_stack.
+ (cpp_get_token): If pfile->skipping is true, discard text and
+ keep scanning until we hit a directive; don't expand macros.
+
+ * cpplib.c (struct if_stack): Remove if_succeeded, add
+ was_skipping. Change control_macro to a cpp_hashnode * and
+ shorten name to cmacro. Remove typedef IF_STACK.
+ (parse_ifdef), detect_if_not_defined): Return a cpp_hashnode *.
+ (conditional_skip, skip_if_group,
+ consider_directive_while_skipping): Delete.
+ (push_conditional): New.
+ (_cpp_handle_directive): Don't process directives other than
+ conditionals if we are skipping.
+
+ (do_ifdef, do_ifndef, do_if, do_else, do_elif, do_endif):
+ Update to new scheme.
+ (validate_else): Skip rest of line here, unconditionally.
+ (_cpp_unwind_if_stack): The stack is per-buffer. Force
+ pfile->skipping off.
+
+ (all): Remove `scare quotes' from error messages.
+
+2000-05-29 Richard Henderson <rth@cygnus.com>
+
+ * function.c (emit_return_into_block): New line_note arg; emit it.
+ (thread_prologue_and_epilogue_insns): Attempt to locate a line note
+ for the close brace to accompany HAVE_return. Move all line notes
+ following the epilogue to before the NOTE_INSN_EPILOGUE_BEG.
+
+2000-05-29 Richard Henderson <rth@cygnus.com>
+
+ * longlong.h [__alpha] (count_leading_zeros): New.
+ (count_trailing_zeros): New.
+ (COUNT_LEADING_ZEROS_0): New.
+
+ * config/alpha/alpha.c (alpha_zero_comparison_operator): New.
+ (alpha_split_conditional_move): New.
+ * config/alpha/alpha-protos.h: Prototype them.
+ * config/alpha/alpha.h (PREDICATE_CODES): Update.
+ (CPP_CPU_DEFAULT_SPEC): Fix typo for EV67.
+ * config/alpha/alpha.md: Update ffs cix commentary.
+ (*ze_and_ne): New.
+ (*nabssf2, *nabsdf2): New.
+ (*mov[qhsd]icc_internal): Use add_operand.
+ (if_then_else constant splitters): New.
+ (*cmp_sadd_di, *cmp_sadd_si, *cmp_sadd_sidi): New.
+ (*cmp_ssub_di, *cmp_ssub_si, *cmp_ssub_sidi): New.
+
+2000-05-29 Richard Henderson <rth@cygnus.com>
+
+ * combine.c (force_to_mode) [MINUS]: Convert subtraction from
+ a constant to NEG or NOT when conditions allow.
+
+ * combine.c (combine_simplify_rtx): Don't create an if_then_else
+ unless both args are general_operand. Don't canonicalize plus
+ to ior unless it helps.
+
+ * toplev.c (rest_of_compilation): Set no_new_pseudos after flow1;
+ instead track register_life_up_to_date. Toggle no_new_pseudos
+ around if_convert.
+
+2000-05-28 Geoff Keating <geoffk@cygnus.com>
+
+ * config/rs6000/rs6000.c (output_cbranch): Escape '%' characters
+ so output_operand doesn't see them.
+
+Sun May 28 18:37:07 2000 Clinton Popetz <cpopetz@cygnus.com>
+
+ * lcm.c (make_preds_opaque): Fix comment.
+ (optimize_mode_switching): Use NORMAL_MODE instead of
+ MODE_USES_IN_EXIT_BLOCK. Change leftover instance of
+ FP_MODE_NONE to no_mode. Rename MODE_AT_ENTRY to NORMAL_MODE.
+ Handle insertions before an existing NOTE_INSN_BASIC_BLOCK.
+ * tm.texi (OPTIMIZE_MODE_SWITCHING): Refer to NORMAL_MODE.
+ (MODE_USES_IN_EXIT_BLOCK): Delete.
+ (MODE_AT_ENTRY) Rename to NORMAL_MODE.
+ * sh.h (MODE_USES_IN_EXIT_BLOCK): Delete.
+ (MODE_AT_ENTRY): Rename to NORMAL_MODE.
+ (MODE_NEEDED): Don't look for USE.
+ (EPILOGUE_USES): Define.
+
+Sun May 28 23:26:59 2000 Philippe De Muyter <phdm@macqel.be>
+
+ * mklibgcc.in (all): Variable initialised to `libgcc'.
+
+2000-05-28 Gabriel Dos Reis <gdr@codesourcery.com>
+
+ * toplev.h (skip_leading_substring): New macro.
+ * toplev.c (decode_f_option): Use skip_leading_substring instead
+ of strncmp.
+ (decode_W_option): Likewise.
+
+2000-05-28 Nick Clifton <nickc@cygnus.com>
+
+ * tm.texi (CONDITIONAL_REGISTER_USAGE): Document that it can
+ modify reg_names.
+
+2000-05-28 Richard Henderson <rth@cygnus.com>
+
+ * regclass.c (record_operand_costs): Protect reg_changes_size
+ with CLASS_CANNOT_CHANGE_SIZE.
+
+ * loop.c (instrument_loop_bct): Set JUMP_LABEL on the new insn.
+
+2000-05-28 Richard Henderson <rth@cygnus.com>
+
+ * function.c (diddle_return_value): A pcc-style struct return
+ returns a pointer.
+
+2000-05-27 Zack Weinberg <zack@wolery.cumb.org>
+
+ * cppfiles.c: Read files in, using mmap if possible, then
+ prescan them separately.
+ (read_file, read_with_read): New functions.
+ * cpplex.c: Don't define UCHAR_MAX.
+ (_cpp_read_and_prescan): Rename to _cpp_prescan. Don't read
+ the file here.
+
+ * cppinit.c (handle_option): Automatically define __cplusplus,
+ __OBJC__, __ASEEMBLER__, _LANGUAGE_FORTRAN here when we see
+ the respective -lang switch.
+
+ * cpphash.h (enum node_type, struct hashnode, _cpp_lookup
+ prototype): Move to...
+ * cpplib.h: ... here. Rename struct hashnode to struct
+ cpp_hashnode and give it a typedef. Rename _cpp_lookup to
+ cpp_lookup. Add 'fe_value' slot, a union tree_node *.
+
+2000-05-27 Geoffrey Keating <geoffk@cygnus.com>
+
+ * config/rs6000/rs6000.md (movsi): Constify 'name'.
+
+ * regclass.c [CLASS_CANNOT_CHANGE_SIZE]
+ (class_can_change_size): New variable.
+ (reg_changes_size): New variable.
+ (init_reg_sets_1): Initialise class_can_change_size.
+ (record_operand_costs): Remove subreg_changes_size.
+ Don't pass it around. Instead update reg_changes_size.
+ (regclass): Initialise and free reg_changes_size. If a register
+ changes size, don't preference it to a class that contains
+ registers that can't change size.
+ (record_reg_classes): Don't look at subreg_changes_size.
+
+2000-05-27 Richard Henderson <rth@cygnus.com>
+
+ * print-rtl.c (reg_names): Remove const.
+ * regclass.c (reg_names): Likewise.
+ * regs.h (reg_names): Likewise.
+ * hard-reg-set.h (reg_names): Likewise.
+
+2000-05-27 Richard Henderson <rth@cygnus.com>
+
+ * config/rs6000/rs6000.md (untyped_call): Use GEN_CALL.
+
+2000-05-27 Richard Henderson <rth@cygnus.com>
+
+ * config/alpha/alpha.c (alpha_does_function_need_gp): Test
+ TARGET_PROFILING_NEEDS_GP in the if, instead of with an ifdef.
+ (alpha_expand_prologue): Emit prologue_mcount if needed.
+ * config/alpha/alpha.h (TARGET_PROFILING_NEEDS_GP): Default to 0.
+ * config/alpha/alpha.md (prologue_mcount): New.
+ * config/alpha/linux.h (FUNCTION_PROFILER): Remove.
+ (TARGET_PROFILING_NEEDS_GP): Undef before redefining.
+ * config/alpha/netbsd.h: Likewise.
+
+2000-05-27 Richard Henderson <rth@cygnus.com>
+
+ * config/alpha/elf.h (SELECT_SECTION): Mirror Kenner's May 19
+ change to config/elfos.h.
+
+2000-05-27 Richard Henderson <rth@cygnus.com>
+
+ * Makefile.in (resource.o): Depend on except.h.
+ * except.h (output_exception_table_data): Prototype.
+ * genconfig.c (gen_peephole2): Prototype.
+ * genemit.c (main): Include ggc.h.
+ * genoutput.c: Revert parts of last change: include errors.h
+ (main): Set progname.
+ * recog.c: Include hard-reg-set.h before recog.h.
+ * resource.c: Include except.h.
+
+ * config/alpha/alpha-protos.h (alpha_arg_info_reg_val): Protect
+ with RTX_CODE.
+ (alpha_write_linkage): Protect with BUFSIZ.
+ (alpha_need_linkage): Update prototype.
+ * config/alpha/alpha.c (function_arg): Move VMS code here.
+ (alpha_links_base): Remove.
+ (alpha_links): New.
+ (mark_alpha_links_node, mark_alpha_links): New.
+ (alpha_write_one_linkage): New.
+ (alpha_need_linkage): Use a splay tree. Build the linkage symbol.
+ (alpha_write_linkage): Use splay_tree_foreach.
+ * config/alpha/alpha.md (call_vms): Use alpha_need_linkage
+ to get the linkage symbol.
+ (call_value_vms): Likewise.
+ * config/alpha/elf.h (output_file_directive): Remove decl.
+ (ctors_section, dtors_section): Prototype.
+ (sbss_section, sdata_section): Prototype.
+ * config/alpha/vms.h (FUNCTION_ARG): Remove.
+ (readonly_section, link_section, literals_section): Prototype.
+ (ctors_section, dtors_section): Prototype.
+ (vms_valid_decl_attribute_p): Remove decl.
+ (alpha_arg_type, alpha_arg_info_reg_val): Likewise.
+
+2000-05-27 Geoff Keating <geoffk@cygnus.com>
+
+ * reload.c (get_secondary_mem): Don't widen floating-point modes.
+
+ * combine.c (subst): Honour CLASS_CANNOT_CHANGE_SIZE when
+ substituting the REG in a (subreg:X (reg:Y ...)).
+
+2000-05-28 Neil Booth <NeilB@earthling.net>
+
+ * cpplex.c (_cpp_lex_line): Merge vertical space. Flag
+ first token of a line BOL. Update EOF code for this.
+ Remove illegal directive check - it appears in the (not
+ yet committed) caller.
+ * cpplib.h (BOL): New flag.
+
+2000-05-28 Neil Booth <NeilB@earthling.net>
+
+ * cpplex.c (_cpp_init_toklist): No comment space to initialise.
+ (_cpp_free_toklist): No comment space to free.
+ (expand_comment_space): Remove.
+ (save_comment_space): Place the comment in the current token and
+ not in a separate comment space.
+ (_cpp_lex_line): Save comments during plain code and #define
+ directives only.
+ * cpplib.h (struct _cpp_toklist): Remove comment space.
+
+2000-05-28 Neil Booth <NeilB@earthling.net>
+
+ * cppexp.c (parse_assertion): Supply extra argument to
+ _cpp_init_toklist.
+ * cpplib.c (do_assert, do_unassert): Similarly.
+ * cpphash.h (_cpp_init_toklist) Update.
+ (_cpp_expand_token_space): New.
+ (DUMMY_TOKEN, NO_DUMMY_TOKEN): New.
+ * cpplex.c (_cpp_init_toklist): New argument.
+ (parse_string2): New argument multiline_ok.
+ (spell_token): Take a const cpp_token *.
+ (INIT_NAME): Replace with INIT_TOKEN_NAME. Update tokens_used.
+ (SPELL_ macros): Replace with enum.
+ (expand_token_space): Replace with _cpp_expand_token_space.
+ Take COUNT argument.
+ (IS_DIRECTIVE): Update.
+ (_cpp_lex_line): Update token structure before parsing number.
+ Don't assume start at beginning of token list.
+ (save_comment): Use INIT_TOKEN_NAME.
+
+2000-05-27 Zack Weinberg <zack@wolery.cumb.org>
+
+ * configure.in (stage1_warn_cflags): Add -Wstrict-prototypes
+ -Wmissing-prototypes.
+ * configure: Regenerate.
+ * gcc.texi: Remove explanation of MD_CALL_PROTOTYPES.
+
+ * builtins.c, calls.c: Change all instances of gen_call_* or
+ gen_sibcall_* to GEN_CALL_* and GEN_SIBCALL_*.
+ * calls.c (struct_value_size_rtx): Separate definition from
+ initialization to avoid unused variable warning.
+
+ * genflags.c (gen_macro): New function.
+ (gen_proto): Call it for gen_call_* and gen_sibcall_*.
+ (gen_nonproto): Delete.
+ (gen_insn): Put all insns on the same obstack.
+ (main): Generate prototypes for everything unconditionally.
+
+ * configure.in: Add AC_CHECK_TYPE(ssize_t). Remove commented
+ out check for wchar_t.
+ * acconfig.h: Add template for ssize_t. Remove @TOP@.
+ * system.h: Add infrastructure for defining missing
+ TYPE_MAX/TYPE_MIN macros. Use it to provide fallback
+ definitions of UCHAR_MAX and SSIZE_MAX.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+
+ * Makefile.in (libgcc2.ready): Rename to libgcc.ready.
+ Depend on $(LANGUAGES) as well as $(GCC_PATCHES) and fixed
+ headers.
+ (clean): No need to delete libgcc1.a, libgcc1-asm.a,
+ libgcc2.a, or libgcc1.null.
+
+2000-05-27 Richard Henderson <rth@cygnus.com>
+
+ * Makefile.in (recog.o): Don't depend on resource.h.
+ * recog.c: Don't include resource.h.
+ (recog_last_allowed_insn): Remove.
+ (recog_next_insn): Remove.
+ (struct peep2_insn_data): New.
+ (peep2_insn_data, peep2_current): New.
+ (peep2_next_insn): New.
+ (peep2_regno_dead_p, peep2_reg_dead_p): New.
+ (peep2_find_free_register): New.
+ (peephole2_optimize): Track life information by insn as we go.
+ * recog.h: Update declarations.
+ * resource.c (find_free_register, reg_dead_p): Remove.
+ * resource.h: Remove their declarations.
+ * toplev.c: Include hard-reg-set.h before recog.h.
+
+ * genconfig.c (max_insns_per_peep2): New.
+ (gen_peephole2): New.
+ (main): Call it.
+ * genemit.c (output_peephole2_scratches): Generate calls to
+ peep2_find_free_register; adjust surrounding code.
+ (main): Have insn-emit.c include hard-reg-set.h before recog.h.
+ * genrecog.c (change_state): Don't track last_insn.
+ (write_action): Write into *_pmatch_len before accepting.
+ (write_tree): Adjust peephole2_insns and subroutines to match.
+
+ * config/i386/i386.md (all peepholes): Use peep2_regno_dead_p.
+
+ * config/alpha/alpha.c (hard_fp_register_operand): Mind the mode.
+ (hard_int_register_operand): New.
+ * config/alpha/alpha-protos.h: Declare it.
+ * config/alpha/alpha.h (PREDICATE_CODES): Update.
+ * config/alpha/alpha.md (peep2 patterns): Use hard_int_register_operand
+ as needed; use peep2_reg_dead_p instead of dead_or_set_p.
+
+2000-05-27 Richard Henderson <rth@cygnus.com>
+
+ * function.c (thread_prologue_epilogue_insns): Don't move the
+ line note at the head of the chain. Only force a lineno note
+ before the end of block 0.
+
+2000-05-27 Richard Henderson <rth@cygnus.com>
+
+ * gensupport.c (collect_insn_data): Record the maximum number
+ of alternatives, not the last seen.
+
+ * genoutput.c: Don't include errors.h.
+ (struct data): Add lineno member.
+ (have_error): New.
+ (scan_operands): Use message_with_line instead of error.
+ (validate_insn_alternatives): Likewise.
+ (gen_insn): Accept and store the pattern's line number.
+ (gen_peephole, gen_expand, gen_split): Likewise.
+ (main): Don't set progname. Pass line_no to gen_foo.
+
2000-05-27 Richard Henderson <rth@cygnus.com>
* config/d30v/d30v.c (d30v_print_operand): Handle ':'.