Wed Dec 30 23:38:55 1998 Jeffrey A Law (law@cygnus.com) * m68k.md (adddi_dilshr32): Allow all operands to be registers too. (adddi_dishl32): Similarly. * cse.c (invalidate_skipped_block): Call invalidate_from_clobbers for each insn in the skipped block. * reload1.c (reload_as_needed): Verify that the insn satisfies its constraints after replacing a register address with an autoincrement address for reload inheritance purposes. * i386.md (doubleword shifts): Avoid namespace pollution. Wed Dec 30 23:00:28 1998 David O'Brien * configure.in (FreeBSD ELF): Needs special crt files. Wed Dec 30 22:50:13 1998 Geoffrey Noer * i386/xm-cygwin.h: Change DIR_SEPARATOR to forward slash. 1998-12-30 Andreas Schwab * loop.c (check_dbra_loop): While reversing the loop, if the comparison value has a VOID mode use the mode of the other operand to compute the mask. Wed Dec 30 22:24:00 1998 Michael Meissner * rs6000.md ({save,restore}_stack_function): Take 2 operands to avoid warnings in compiling explow.c. (patch from Ken Raeburn, raeburn@cygnus.com) * rs6000.c (rs6000_stack_info): Force 8-byte alignment of fpmem_offset. Compute total size after that, and then rs6000_fpmem_offset using both values. Mon Dec 28 19:26:32 1998 Gerald Pfeifer * gcc.texi (Non-bugs): ``Empty'' loops will be optimized away in the future; indeed that already happens in some cases. Tue Dec 29 11:58:53 1998 Richard Henderson * sparc.c (input_operand): Recognize (const (constant_p_rtx)). (arith_operand): Remove constant_p_rtx handling. (const64_operand, const64_high_operand): Likewise. (arith11_operand, arith10_operand, arith_double_operand): Likewise. (arith11_double_operand, arith10_double_operand, small_int): Likewise. (small_int_or_double, uns_small_int, zero_operand): Likewise. * sparc.h (PREDICATE_CODES): Likewise. * rtl.h (CONSTANT_P): Remove CONSTANT_P_RTX. Tue Dec 29 11:32:54 1998 Richard Kenner * rtl.def (CONSTANT_P_RTX): Clarify commentary. * expr.c (expand_builtin, case BUILT_IN_CONSTANT_P): Rework to consider constant CONSTRUCTOR constant and to defer some cases to cse. * cse.c (fold_rtx, case CONST): Add handling for CONSTANT_P_RTX. * regclass.c (reg_scan_mark_refs, case CONST): Likewise. Tue Dec 29 11:30:10 1998 Richard Henderson * expr.c (init_expr_once): Kill can_handle_constant_p recognition. * cse.c (fold_rtx, case 'x'): Remove standalone CONSTANT_P_RTX code. * alpha.c (reg_or_6bit_operand): Remove CONSTANT_P_RTX handling. (reg_or_8bit_operand, cint8_operand, add_operand): Likewise. (sext_add_operand, and_operand, or_operand): Likewise. (reg_or_cint_operand, some_operand, input_operand): Likewise. * alpha.h (PREDICATE_CODES): Likewise. Sat Dec 26 23:26:26 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Sat Dec 26 09:17:04 1998 Jeffrey A Law (law@cygnus.com) * gengenrtl.c (gencode): Always use bzero to clear memory instead of dangerous casts and stores. * Makefile.in (compare, gnucompare): Add missing else true clauses. Fri Dec 25 23:00:56 1998 Jeffrey A Law (law@cygnus.com) * alpha.md (builtin_longjmp): Add missing "DONE". Thu Dec 24 10:39:57 1998 Stan Cox * gcc.c (execute): Enable -pipe with win32. Wed Dec 23 10:27:44 1998 Nick Clifton * config/arm/t-arm-elf: Add multiplib option for leading underscores. * config/arm/thumb.h (ASM_OUTPUT_LABELREF): Use variable 'user_label_prefix' rather than macro USER_LABEL_PREFIX. (thumb_shiftable_const): Use macro 'BASE_REG_CLASS' rather than variable 'reload_address_base_reg_class'. [Note this change is unrelated to the others in this patch]. * config/arm/unknown-elf.h (USER_LABEL_PREFIX): Default to no leading underscore. Wed Dec 23 09:51:32 1998 Kaveh R. Ghazi * alias.c (record_alias_subset): Remove ignored `&'. (init_alias_once): Likewise. * c-lex.c (UNGETC): Cast first argument of comma expression to void. * config/mips/mips.c (mips_asm_file_end): Cast the result of fwrite to `int' when comparing against one. * config/mips/mips.h (CAN_ELIMINATE): Add parens around && within ||. (INITIAL_ELIMINATION_OFFSET): Add braces to avoid ambiguous `else'. * cse.c (rehash_using_reg): Change type of variable `i' to unsigned int. * dwarf2out.c (initial_return_save): Cast -1 to unsigned before assigning it to one. * except.c (duplicate_eh_handlers): Remove unused variable `tmp'. * final.c (final_scan_insn): Likewise for variable `i'. (output_asm_insn): Cast a char to unsigned char when used as an array index. * gcse.c (compute_pre_ppinout): Cast -1 to SBITMAP_ELT_TYPE when assigning it to one. * loop.c (strength_reduce): Remove unused variables `count' and `temp'. * recog.c (preprocess_constraints): Cast a char to unsigned char when used as an array index. * regmove.c (find_matches): Likewise. * reload1.c (calculate_needs): Add default case in switch. (eliminate_regs_in_insn): Initialize variable `offset'. (set_offsets_for_label): Change type of variable `i' to unsigned. (reload_as_needed): Wrap variable `i' in macro check on AUTO_INC_DEC || INSN_CLOBBERS_REGNO_P. * scan-decls.c (scan_decls): Mark parameters `argc' and `argv' with ATTRIBUTE_UNUSED. Cast variable `start_written' to size_t when comparing against one. * stor-layout.c (layout_decl): Cast maximum_field_alignment to unsigned when comparing against one. Likewise for GET_MODE_ALIGNMENT(). (layout_record): Cast record_align to int when comparing against a signed value. (layout_type): Cast TYPE_ALIGN() to int when comparing against a signed value. * tree.c (get_identifier): Cast variable `len' to unsigned when comparing against one. (maybe_get_identifier): Likewise Wed Dec 23 00:10:01 1998 Jeffrey A Law (law@cygnus.com) * toplev.c (rest_of_compilation): Do not set reload_completed. * reload1.c (reload): Set reload_completed before calling cleanup_subreg_operands. Tue Dec 22 23:58:31 1998 Richard Henderson * reload1.c (emit_reload_insns): Check `set' not null before use. Tue Dec 22 15:15:45 1998 Nick Clifton * rtlanal.c (multiple_sets): Change type of 'found' from 'rtx' to 'int'. Tue Dec 22 13:55:44 1998 Theodore Papadopoulo * halfpic.c (half_pic_encode): Delete redundant code. Tue Dec 22 13:02:22 1998 Michael Meissner * toplev.c (main): Delete handling of -dM as a preprocessor option. Mon Dec 21 17:39:38 1998 Michael Meissner * toplev.c (main): Don't emit any warnings when using -dD, -dM, or -dI, which are handled by the preprocessor. Sun Dec 20 16:13:44 1998 John F. Carr * configure.in: Handle Digital UNIX 5.x the same as 4.x. * i386/sol2.h: Define LOCAL_LABEL_PREFIX as ".". Sun Dec 20 07:39:52 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Sat Dec 19 22:24:22 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Sat Dec 19 21:41:32 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Sat Dec 19 09:52:27 1998 Kaveh R. Ghazi * genattr.c (fatal): Qualify a char* with the `const' keyword. * genattrtab.c (fatal, attr_printf, attr_string, write_attr_set, write_unit_name, write_eligible_delay, expand_units, make_length_attrs, write_attr_case, find_attr, make_internal_attr): Likewise. * gencheck.c (tree_codes): Likewise. * gencodes.c (fatal): Likewise. * genconfig.c (fatal): Likewise. * genemit.c (fatal): Likewise. * genextract.c (fatal, walk_rtx, copystr): Likewise. * genflags.c (fatal): Likewise. * genopinit.c (fatal, optabs, gen_insn): Likewise. * genoutput.c (fatal, error, predicates): Likewise. * genpeep.c (fatal): Likewise. * genrecog.c (fatal, decision, pred_table, add_to_sequence, write_tree_1, write_tree, change_state, copystr, indents): Likewise. Thu Dec 17 18:21:49 1998 Rainer Orth * configure.in (with-fast-fixincludes): Fix whitespace. * configure: Rebuilt. * fixincludes (c_asm.h): Wrap Digital UNIX V4.0B DEC C specific asm() etc. function declarations in __DECC. Thu Dec 17 13:57:23 1998 Nick Clifton * expr.c (emit_move_insn_1): Only emit a clobber if the target is a pseudo register. Thu Dec 17 13:50:29 1998 Nick Clifton * gcse.c: Include expr.h in order to get the prototype for get_condition() which is used in delete_null_pointer_checks(). Thu Dec 17 15:58:26 1998 Kaveh R. Ghazi * hwint.h: New file to consolidate HOST_WIDE_INT (etc) macros. Thu Dec 17 12:31:12 1998 Jim Wilson * Makefile.in (INTERNAL_CFLAGS): Add SCHED_CFLAGS. (ALL_CFLAGS): Delete SCHED_CFLAGS. 1998-12-17 Vladimir N. Makarov * config/i60/i960.md (extendqihi2): Fix typo (usage ',' instead of ';'). 1998-12-17 Michael Tiemann * i960.md (extend*, zero_extend*): Don't generate rtl that looks like (subreg:SI (reg:SI N) 0), because it's wrong, and it hides optimizations from the combiner. Thu Dec 17 08:27:03 1998 J"orn Rennecke * loop.c (combine_givs_used_by_other): Don't depend on n_times_set. Wed Dec 16 17:30:35 1998 Nick Clifton * toplev.c (main): Disable optimize_size if a specific optimization level is requested. Always set optimization level to 2 if -Os is specified. Wed Dec 16 16:33:04 1998 Dave Brolley * objc/lang-specs.h: Pass -MD, -MMD and -MG to cc1obj if configured with cpplib. * cpplib.c (cpp_start_read): If in_fname is not initialized, try to initialize it using fname. 1998-12-16 Zack Weinberg * cpplib.c (do_include): Treat #include_next in the primary source file as #include plus warning. Treat #include_next in a file included by absolute path as an error. fp == CPP_NULL_BUFFER is a fatal inconsistency. Wed Dec 16 12:28:54 1998 Kaveh R. Ghazi * cccp.c: Don't define MIN/MAX anymore. * cpplib.c: Likewise. * machmode.h: Likewise. * system.h: Provide definitions for MIN/MAX. Tue Dec 15 23:47:42 1998 Zack Weinberg * fix-header.c: Don't define xstrdup here. Wed Dec 16 05:11:04 1998 J"orn Rennecke * loop.c (consec_sets_giv): New argument last_consec_insn. (strength_reduce): Provide / use it. Wed Dec 16 17:24:07 1998 Michael Hayes * loop.h (loop_info): New field 'vtop'. * loop.c (check_dbra_loop): Use loop_info->vtop rather than scanning loop for vtop. * unroll.c (subtract_reg_term, find_common_reg_term): New functions. (loop_iterations): Use them to determine if loop has a constant number of iterations. Set loop_info->vtop. Don't subtract common reg term from initial_value and final_value if have a do-while loop. Tue Dec 15 13:49:55 1998 Jeffrey A Law (law@cygnus.com) * mn10200.md (addsi3 expander): Use "nonmemory_operand" for operand 2. * mn10300.md (bset, bclr): Operand 0 is a read/write operand. * mn10200.md (abssf2, negsf2): New expanders. * mn10300.md (absdf2, abssf2, negdf2, negsf2): New expanders. Tue Dec 15 11:55:30 1998 Nick Clifton * integrate.c (copy_rtx_and_substitute): If a SUBREG is replaced by a CONCAT whose components do not have the same mode as the original SUBREG, use a new SUBREG to restore the mode. * emit-rtl.c (subreg_realpart_p): Cope with subregs containing multiword complex values. 1998-12-15 Zack Weinberg * cppalloc.c: Add xstrdup here. * cpplib.h: Remove savestring prototype. * cpplib.c: Remove savestring function. s/savestring/xstrdup/ throughout. * cppfiles.c: s/savestring/xstrdup/ throughout. 1998-12-15 Zack Weinberg * cpplib.c: Make all directive handlers read their own arguments. (struct directive): Remove last two arguments from FUNC member prototype. Remove `command_reads_line' member entirely. (directive_table): Remove initializations of command_reads_line flag. Pretty-print. (eval_if_expression, do_define, do_line, do_include, do_undef, do_error, do_pragma, do_ident, do_if, do_xifdef, do_else, do_elif, do_sccs, do_assert, do_unassert, do_warning): Take only two args. (cpp_define): Call do_define with two args and the text to define stuffed into a buffer. (make_assertion): Call do_assert with two args. (handle_directive): Call do_line with two args. Call kt->func with two args. Remove command_reads_line processing. (do_define, do_undef, do_error, do_warning, do_pragma, do_sccs): Read the rest of the line here. (do_ident): Gobble rest of line, as cccp does. (cpp_undef): New function. (cpp_start_read): Call cpp_undef instead of do_undef. 1998-12-15 Zack Weinberg * cpphash.h (union hash_value): Remove `keydef' member, add a `struct hashnode *aschain' member for #assert. * cpplib.c (struct tokenlist_list, struct assertion_hashnode): Delete structure definitions. (assertion_install, assertion_lookup, delete_assertion, check_assertion, compare_token_lists, reverse_token_list, read_token_list, free_token_list): Delete functions. (parse_assertion): New function. (cpp_cleanup): Don't destroy the assertion_hashtable. (do_assert): Gut and rewrite. #assert foo (bar) places entries for `#foo' and `#foo(bar)' in the macro hash table, type T_ASSERT. The value union's `aschain' member is used to chain all answers for a given predicate together. (do_unassert): Also rewritten. Take an un-asserted answer off the chain from its predicate and call delete_macro on the hashnode, or walk a predicate chain calling delete_macro on all the entries. (cpp_read_check_assertion): Simply call parse_assertion to get the canonical assertion name, and look that up in the hash table. * cpplib.h (ASSERTION_HASHNODE,ASSERTION_HASHSIZE,assertion_hashtab): Removed. * cpphash.c (install): Use bcopy instead of an explicit loop to copy the macro name. * cppexp.c (cpp_lex): Convert the result of cpp_read_check_assertion to a `struct operation' directly; don't go through parse_number. Tue Dec 15 18:27:39 1998 J"orn Rennecke * loop.h (struct induction): Delete times_used member. * loop.c (n_times_set): Rename to set_in_loop. Changed all users. (n_times_used): Rename to n_times_set. Changed all users. (scan_loop): Free reg_single_usage before strength reduction. (record_giv, combine_givs): Remove handling of times_used member. (combine_givs_used_once): Rename to: (combine_givs_used_by_other) . Changed all callers. Tue Dec 15 01:45:26 1998 Jason Merrill * dwarf2out.c (gen_struct_or_union_type_die): Check AGGREGATE_TYPE_P instead of TREE_CODE_CLASS == 't'. (gen_type_die): Likewise. (scope_die_for): Ignore FUNCTION_TYPE "scopes". Mon Dec 14 16:23:27 1998 Jim Wilson * real.c (endian): Disable last change unless HOST_BITS_PER_WIDE_INT is greater than 32. Mon Dec 14 17:13:36 1998 Andrew MacLeod * output.h (force_data_section): New prototype. * varasm.c (force_data_section): New function to force the data section, regardless of what in_section thinks. * dwarf2out.c (output_call_frame_info): Call force_data_section since varasm may not realize we've changes sections. Mon Dec 14 14:09:34 1998 Nick Clifton * reload1.c (reload): Delete REG_RETVAL and REG_LIBCALL notes after completing reload. * rtl.texi: Document that REG_RETVAL and REG_LIBCALL are deleted after reload. Mon Dec 14 01:39:28 1998 Jeffrey A Law (law@cygnus.com) * rtl.h (multiple_sets): Fix prototype. * rtlanal.c (multiple_sets): Fix return type. Sun Dec 13 12:43:58 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Sun Dec 13 01:05:22 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. 1998-12-13 Manfred Hollstein * protoize.c (fputs): Wrap extern declaration in #ifndef fputs. Sun Dec 13 00:24:14 1998 J"orn Rennecke * rtl.h (recompute_reg_usage): Add second argument. * flow.c (recompute_reg_usage): Likewise. * toplev.c (rest_of_compilation): Supply second argument to recompute_reg_usage. * reload1.c (compute_use_by_pseudos): Allow reg_renumber[regno] < 0 after reload. Sat Dec 12 23:39:10 1998 Jeffrey A Law (law@cygnus.com) * m68k/t-m68kelf (MULTILIB_OPTIONS): Add mcpu32. (MULTILIB_MATCHES): -m68332 now uses mcpu32 libraries, not m68000. (MULTILIB_EXCEPTIONS): Don't build 68881 libraries for m68000, mcpu32 or m5200. * i386/next.h (ASM_OUTPUT_ALIGN): Use 0x90 for fill character. * rtlanal.c (multiple_sets): New function. * rtl.h (multiple_sets): Declare it. * local-alloc.c (wipe_dead_reg): Use it. * global.c (global_conflicts): Likewise. Sat Dec 12 22:13:02 1998 Mark Mitchell * global.c (record_conflicts): Don't use an array of shorts to store an array of ints. (global_conflicts): Likewise. Sat Dec 12 16:49:24 1998 Richard Henderson * alpha.c (alpha_expand_block_move): mode_for_size expects bits, not bytes. Infer extra alignment from addressof. 1998-12-11 Michael Meissner * rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_LOCAL): Put small data in the .sbss section, not .sdata. 1998-12-11 Manfred Hollstein * cccp.c: Do not #include here; this is already done by "system.h". * collect2.c: Likewise. * cpplib.h: Likewise. * gcc.c: Likewise. * gcov.c: Likewise. * getpwd.c: Likewise. * protoize.c: Likewise. * toplev.c: Likewise. * cpplib.h (HOST_WIDE_INT): Get definition from "machmode.h" and don't try to define it here. * Makefile.in (cppmain.o): Depend on machmode.h. (cpplib.o): Likewise. (cpperror.o): Likewise. (cppexp.o): Likewise. (cppfiles.o): Likewise. (cpphash.o): Likewise. (cppalloc.o): Likewise. (fix-header.o): Likewise. (scan-decls.o): Likewise. Fri Dec 11 11:02:49 1998 Stan Cox * sh.c (print_operand): Lookup interrupt_handler attribute instead of relying on static variable. * (calc_live_regs): Likewise. * (sh_pragma_insert_attributes): Create interrupt_handler attribute if a pragma was specified. * (sh_valid_machine_decl_attribute): Don't set static flag. * sh.h (PRAGMA_INSERT_ATTRIBUTES): New. Fri Dec 11 12:56:07 1998 J"orn Rennecke * reload1.c (reload_combine): Use BASIC_BLOCK_LIVE_AT_START to determine if a register is live at a jump destination. Everything is dead at a BARRIER. Thu Dec 10 16:02:06 1998 Jim Wilson * cse.c (simplify_unary_operation): Sign-extend constants when they have the most significant bit set for the target. * real.c (endian): Sign-extend 32 bit output values on a 64 bit host. * m32r/m32r.c (m32r_expand_prologue): Store pretend_size in HOST_WIDE_INT temporary before negating it. * m32r/m32r.md (movsi_insn+1): Use ~0xffff instead of 0xffff0000. Thu Dec 10 15:05:59 1998 Dave Brolley * objc/objc-act.c (lang_init_options): Enclose cpplib related code in #if USE_CPPLIB. Thu Dec 10 13:39:46 1998 Kaveh R. Ghazi * collect2.h: New header file for prototypes. * Makefile.in (collect2.o, tlink.o): Depend on collect2.h. * collect2.c: Include collect2.h. * tlink.c: Likewise. Wed Dec 9 23:55:11 1998 Jeffrey A Law (law@cygnus.com) * flow.c: Update some comments. Wed Dec 9 15:29:26 1998 Dave Brolley * objc/objc-act.c (cpp_initialized): Removed. (lang_init_options): Initialize cpplib. (lang_decode_option): Move initialization of cpplib to lang_init_options. * c-lang.c (parse_options,parse_in): Added. (lang_init_options): Initialized cpplib here. * c-decl.c (parse_options,cpp_initialized): Removed. (c_decode_option): Move initialization of cpplib to lang_init_options. Wed Dec 9 19:36:57 1998 J"orn Rennecke * reload1.c (reload_combine, reload_combine_note_store): Make STORE_RUID always valid. (reload_combine): Check if BASE is clobbered too early. Wed Dec 9 09:53:58 1998 Nick Clifton * reload.c (find_reloads): Display the insn that cannot be reloaded. Wed Dec 9 12:15:26 1998 Dave Brolley * cccp.c (create_definition): Fix end of buffer logic. Wed Dec 9 10:15:45 1998 Kaveh R. Ghazi * except.c (duplicate_eh_handlers, rethrow_symbol_map): Function pointer parameters changed to use the PARAMS() macro. Wed Dec 9 09:12:40 1998 Andrew MacLeod * except.h (struct handler_info): Add handler_number field. * except.c (gen_exception_label): EH labels no longer need to be on the permanent obstack. (get_new_handler): Set the label number field. (output_exception_table_entry): Regenerate handler label reference from the label number field. (init_eh): Remove a blank line. * integrate.c (get_label_from_map): Labels no longer need to be on the permanent obstack. Tue Dec 8 22:04:33 1998 Jim Wilson * i960/i960.h (CONST_COSTS, case CONST_INT): Accept power2_operand only when OUTER_CODE is SET. Tue Dec 8 22:47:15 1998 J"orn Rennecke * loop.c (strength_reduce): If scan_start points to the loop exit test, be wary of subversive use of gotos inside expression statements. Don't set maybe_multiple for a backward jump that does not include the label under consideration into its range. * unroll.c (biv_total_increment): Make use of maybe_multiple field. Tue Dec 8 22:33:18 1998 J"orn Rennecke * explow.c (plus_constant_wide): Don't immediately return with result of recursive call. Tue Dec 8 15:32:56 1998 Andrew MacLeod * eh-common.h (struct eh_context): Add table_index for rethrows. * rtl.h (enum reg_note): Add REG_EH_REGION and REG_EH_RETHROW reg notes. (SYMBOL_REF_NEED_ADJUST): New flag indicating symbol needs to be processed when inlined or unrolled (ie duplicated in some way). * rtl.c (reg_note_name): Add strings for new reg_note enums. * expr.h (rethrow_libfunc): New library decl. * optabs.c (rethrow_libfunc): Initialize. * except.h (struct eh_entry): Add new field 'rethrow_label'. (new_eh_region_entry): No longer exported from except.c. (duplicate_handlers): Renamed to duplicate_eh_handlers and different prototype. (rethrow_symbol_map, rethrow_used): New exported functions. (eh_region_from_symbol): New exported function. * except.c (create_rethrow_ref): New function to create a single SYMBOL_REF for a rethrow region. (push_eh_entry): Initialize a rethrow ref. (func_eh_entry): Add a rethrow_label field. (new_eh_region_entry): Make static, and initialize the rethrow entry. (duplicate_eh_handlers): Create a new region, and remap labels/symbols. (eh_region_from_symbol): Find an EH region based on its rethrow symbol. (rethrow_symbol_map): Given a label map, maps a rethrow symbol for a region into an appropriate new symbol. (rethrow_used): Indicate whether a rethrow symbol has been referenced. (expand_eh_region_end): Don't issue jump around code for new-exceptions. (end_catch_handler): Emit a barrier for new-exceptions since control can never drop through the end of a catch block. (expand_end_all_catch): new-exceptions never fall through a catch block. (expand_rethrow): Use __rethrow routine for new exceptions. (output_exception_table_entry): Generate rethrow labels, if needed. (output_exception_table): Generate start and end rethrow labels. (init_eh): Create rethrow symbols for beginning and end of table. (scan_region): Don't eliminate EH regions which are the targets of rethrows. * flow.c (make_edges): Add different edges for rethrow calls, identified by having the REG_EH_RETHROW reg label. (delete_unreachable_blocks): Don't delete regions markers which are the target of a rethrow. * integrate.c (save_for_inline_eh_labelmap): New callback routine to allow save_for_inline_copying to call duplicate_eh_handlers. (save_for_inline_copying): Call duplicate_eh_handlers instead of exposing internal details of exception regions. (copy_for_inline): Check if SYMBOL_REFs need adjustment. (expand_inline_function_eh_labelmap): New callback routine to allow expand_inline_function to call duplicate_eh_handlers. (expand_inline_function): Call duplicate_eh_handlers instead of exposing internal details of exception regions. (copy_rtx_and_substitute): Adjust SYMBOL_REFS if SYMBOL_REF_NEED_ADJUST flag is set. * libgcc2.c (find_exception_handler): Generalize to enable it to pick up processing where it left off last time for a rethrow. (__unwinding_cleanup): New function. debug hook which is called before unwinding when __throw finds there is nothing but cleanups left. (throw_helper): Common parts of __throw extracted out for reuse. (__throw): Common parts moved to throw_helper. (__rethrow): New function for performing rethrows. Tue Dec 8 13:11:04 1998 Jeffrey A Law (law@cygnus.com) * reload1.c (current_function_decl): Tweak declaration. Tue Dec 8 10:23:52 1998 Richard Henderson * c-decl.c (flag_isoc9x): Default off. (c_decode_option): Kill -std=gnu, add -std=gnu89 and -std=gnu9x. * cccp.c (print_help, main): Likewise. * gcc.c (default_compilers): Update for -std=gnu*. Tue Dec 8 01:14:46 1998 Jeffrey A Law (law@cygnus.com) * Makefile.in (DEMANGLE_H): Change location to shared demangle.h. * demangle.h: Deleted. * reload1.c (current_function_decl): Declare. Tue Dec 8 11:58:51 1998 Kaveh R. Ghazi * cpplib.c (convert_string): Use `0x00ff', not `0x00ffU'. Tue Dec 8 09:28:36 1998 Kaveh R. Ghazi * dbxout.c: If USG is defined use gstab.h, even if HAVE_STAB_H is set. 1998-12-08 Ulrich Drepper * configure.in: Test for availability of putc_unlocked, fputc_unlocked, and fputs_unlocked. * configure: Rebuilt. * system.h: If the *_unlocked functions are available use them instead of the locked counterparts by defining macros. * config.in: Regenerated. Tue Dec 8 00:34:05 1998 Mike Stump * i386/bsd.h (ASM_FILE_START): Don't use dump_base_name, it is wrong and should only be used for dump related things, not debugging information, instead main_input_filename should be used. Also, reuse output_file_directive if possible. * i386/aix386ng.h (ASM_FILE_START): Likewise. * i386/isc.h (ASM_FILE_START): Likewise. * i386/win-nt.h (ASM_FILE_START): Likewise. * i386/sun386.h (ASM_FILE_START): Likewise. Mon Dec 7 23:56:28 1998 Robert Lipe * configure.in (mips*-*-linux*): Handle big and little endian systems. * configure: Rebuilt. Mon Dec 7 23:14:51 1998 Mike Stump * emit-rtl.c: Fix typo. Mon Dec 7 23:07:38 1998 Nathan Sidwell * reload1.c (eliminate_regs): Don't do anything, if we're not generating code. Mon Dec 7 15:27:09 1998 DJ Delorie * mips/mips.h (ENCODE_SECTION_INFO): Handle TARGET_EMBEDDED_DATA. Add comment. * mips/mips.c (mips_select_section): Add comment. Mon Dec 7 17:55:06 1998 Mike Stump * cccp.c (ignore_escape_flag): Add support for \ as `natural' characters in file names in #line to be consistent with #include handling. We support escape processing in the # 1 "..." version of the command. See also support in cp/lex.c. (handle_directive): Likewise. (do_line): Likewise. 1998-12-07 Zack Weinberg * cpplib.c (initialize_char_syntax): Use ISALPHA and ISALNUM so it'll work on non-ASCII platforms. Always consider $ an identifier character. Take no arguments. (cpp_reader_init): Call initialize_char_syntax with no arguments. (cpp_start_read): Don't call initialize_char_syntax again. Clear is_idchar['$'] and is_idstart['$'] if not opts->dollars_in_ident. * cpplib.h (struct cpp_reader): Replace void *data element by cpp_options *opts. Rearrange elements to make gdb printout less annoying (put buffer stack at end). (CPP_OPTIONS): Get rid of now-unnecessary cast. * cppmain.c: s/data/opts/ when initializing cpp_reader structure. * c-decl.c: Likewise. * objc/objc-act.c: Likewise. * fix-header.c: Likewise. 1998-12-07 Zack Weinberg * cpplib.h (struct cpp_buffer): Replace dir and dlen members with a struct file_name_list pointer. (struct cpp_reader): Add pointer to chain of `actual directory' include searchpath entries. (struct file_name_list): Add *alloc pointer for the sake of the actual-directory chain. Move definition of HOST_WIDE_INT here. (cpp_parse_escape): Change prototype to match changes in cppexp.c. * cppfiles.c (actual_directory): New function. (finclude): Use it to initialize the buffer's actual_dir entry. (find_include_file): We don't need to fix up max_include_len here. * cpplib.c (do_include): Don't allocate a file_name_list on the fly for current directory "" includes, use the one that's been preallocated in pfile->buffer->actual_dir. Hoist out duplicate code from the search_start selection logic. (cpp_reader_init): Initialize pfile->actual_dirs. Remove definition of HOST_WIDE_INT. Change calls to cpp_parse_escape to match changes in cppexp.c (note hardcoded MASK, which is safe since this is the source character set). * cppexp.c: Bring over changes to cpp_parse_escape from cccp.c to handle wide character constants in #if directives. The function now returns a HOST_WIDE_INT, and takes a third argument which is a binary mask for all legal values (0x00ff for 8-bit `char', 0xffff for 16-bit `wchar_t', etc.) Define MAX_CHAR_TYPE_MASK and MAX_WCHAR_TYPE_MASK. Change callers of cpp_parse_escape to match. [Fixes c-torture/execute/widechar-1.c] Mon Dec 7 15:38:25 1998 Dave Brolley * gcc.c (default_compilers): Fix typo in USE_CPPLIB spec for cc1. Mon Dec 7 15:38:25 1998 Kaveh R. Ghazi * c-aux-info.c (concat): Wrap function definition in !USE_CPPLIB. * cppalloc.c: Move function `xcalloc' from cpplib.c to here. * cpplib.c: Move function `xcalloc' from here to cppalloc.c. Mon Dec 7 11:30:49 1998 Nick Clifton * final.c (output_asm_name): Use tabs to separate comments from assembly text. Include instruction lengths (if defined) in output. Mon Dec 7 10:53:38 1998 Michael Hayes * loop.c (check_dbra_loop): Fix initial_value and initial_equiv_value in the loop_info structure. Mon Dec 7 11:04:40 1998 Catherine Moore * configure.in (arm*-*-ecos-elf): New target. * configure: Regenerated. * config/arm/elf.h (ASM_WEAKEN_LABEL): Define. * config/arm/ecos-elf.h: New file. * config/arm/unknown-elf.h (TARGET_VERSION): Check for redefinition. Mon Dec 7 16:15:51 1998 J"orn Rennecke * sh.c (output_far_jump): Emit braf only for TARGET_SH2. Sun Dec 6 04:19:45 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Sun Dec 6 05:16:16 1998 Michael Hayes * loop.c (check_dbra_loop): New argument loop_info. Update fields as needed. Sun Dec 6 03:40:13 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Sun Dec 6 07:49:29 1998 Alexandre Oliva * gcc.texi (Bug Reporting): 40Kb is a soft limit, larger compressed reports are ok and preferred over URLs. Sun Dec 6 07:45:33 1998 Alexandre Oliva * invoke.texi (Warning Options): Soften the tone of -pedantic. Sun Dec 6 00:20:44 1998 H.J. Lu (hjl@gnu.org) * print-rtl.c (print_rtx): Add prototype. * unroll.c (iteration_info): Make it static. Sun Dec 6 01:19:46 1998 Richard Henderson * alias.c (memrefs_conflict_p): A second ANDed address disables the aligned address optimization. Sat Dec 5 18:48:25 1998 Richard Henderson * alpha.c (alpha_emit_set_const_1): Fix parenthesis error in -c << n case. Sat Dec 5 15:14:52 1998 Jason Merrill * i960.h (BOOL_TYPE_SIZE): Define. Sun Dec 6 00:28:16 1998 Michael Hayes * config/c4x/c4x.c (valid_parallel_load_store): Flog functionality from old valid_parallel_operands_4. (valid_parallel_operands_4): Check that operands for 4 operand parallel insns are valid, excluding load/store insns. * config/c4x/c4x.h (valid_parallel_load_store): Add prototype. * config/c4x/c4x.md (*movqf_parallel, *movqi_parallel): Use valid_parallel_load_store instead of valid_parallel_operands_4. (*absqf2_movqf_clobber, *floatqiqf2_movqf_clobber, *negqf2_movqf_clobber, *absqi2_movqi_clobber, *fixqfqi2_movqi_clobber, *negqi2_movqi_clobber, *notqi_movqi_clobber): Use valid_parallel_operands_4. (*subqf3_movqf_clobber, *ashlqi3_movqi_clobber, *ashrqi3_movqi_clobber, *lshrqi3_movqi_clobber, *subqi3_movqi_clobber): Use valid_parallel_operands_5. Sat Dec 5 23:52:01 1998 Michael Hayes * config/c4x/c4x.c (iteration_info): Delete extern. Fri Dec 4 20:15:57 1998 Bernd Schmidt * tm.texi (SMALL_REGISTER_CLASSES): Make description match reality. * final.c (cleanup_subreg_operands): Delete some unused code. * recog.h (MAX_RECOG_ALTERNATIVES): New macro. (struct insn_alternative): New structure definition. (recog_op_alt): Declare variable. (preprocess_constraints): Declare function. * recog.c (recog_op_alt): New variable. (extract_insn): Verify number of alternatives is in range. (preprocess_constraints): New function. * reg-stack.c: Include recog.h. (constrain_asm_operands): Delete. (get_asm_operand_lengths): Delete. (get_asm_operand_n_inputs): New function. (record_asm_reg_life): Delete OPERANDS, CONSTRAINTS, N_INPUTS and N_OUTPUTS args. All callers changed. Compute number of inputs and outputs here by calling get_asm_operand_n_inputs. Instead of constrain_asm_operands, call extract_insn, constrain_operands and preprocess_constraints. Use information computed by these functions throughout. (record_reg_life): Delete code that is unused due to changes in record_asm_reg_life. (subst_asm_stack_regs): Delete OPERANDS, OPERAND_LOC, CONSTRAINTS, N_INPUTS and N_OUTPUTS args. All callers changed. Similar changes as in record_asm_reg_life. (subst_stack_regs): Move n_operands declaration into the if statement where it's used. Delete code that is unused due to changes in subst_asm_stack_regs. * stmt.c (expand_asm_operands): Verify number of alternatives is in range. * Makefile.in (reg-stack.o): Depend on recog.h. Fri Dec 4 02:23:24 1998 Jeffrey A Law (law@cygnus.com) * except.c (set_exception_version_code): Argument is an "int". Fri Dec 4 01:29:28 1998 Jeffrey A Law (law@cygnus.com) * configure.in (hppa2*-*-*): Handle like hppa1.1-*-* for now. * configure: Rebuilt. Fri Dec 4 01:29:28 1998 Robert Lipe * configure.in (mipsel-*-linux*): New target. * mips/linux.h: New file, based on other Linux targets. Thu Dec 3 11:19:50 1998 Mike Stump * gthr-vxworks.h (__ehdtor): Fix memory leak. The delete hook runs in the context of the deleter, not the deletee, so we must use taskVarGet to find the correct memory to free. (__gthread_key_create): Initialize the task variable subsystem so that the task variable is still active when the delete hook is run. 1998-12-03 Joseph S. Myers * pdp11.h: Use optimize_size for space optimizations. * pdp11.c: Likewise. * pdp11.md: Likewise. * pdp11.h (TARGET_40_PLUS): Fix typo. Thu Dec 3 11:48:32 1998 Jeffrey A Law (law@cygnus.com) * local-alloc.c (block_alloc): Slightly retune heuristic to widen qty lifetimes. Thu Dec 3 22:30:18 1998 Michael Hayes * alias.c (addr_side_effect_eval): New function. (memrefs_conflict_p): Use it. * rtl.h (addr_side_effect_eval): Prototype it. 1998-12-02 Joseph S. Myers * pdp11.md (extendsfdf2): Fix mode mismatch in SET. Wed Dec 2 11:23:07 1998 Jim Wilson * reload.c (find_reloads): When force const to memory, put result in substed_operand not *recog_operand_loc. 1998-12-02 Ulrich Drepper * c-lex.c: Fix indentation from last patch. Remove trailing whitespace. * real.c: Likewise. Wed Dec 2 10:11:12 1998 Jeffrey A Law (law@cygnus.com) * flow.c (delete_block): Call set_last_insn after we have reset NEXT_INSN (kept_tail). Wed Dec 2 00:47:31 1998 Jeffrey A Law (law@cygnus.com) * mips.md (trap_if): Use "$0" for the value zero. Tue Dec 1 20:49:49 1998 Ulrich Drepper Stephen L Moshier Richard Henderson * c-common.c (declare_function_name): Declare predefined variable `__func__'. * c-decl.c (flag_isoc9x): Set to 1 by default. (c_decode_option): Handle -std= option. Remove -flang-isoc9x. (grokdeclarator): Always emit warning about implicit int for ISO C 9x. * c-parse.in: Allow constructors in ISO C 9x. Rewrite designator list handling. Allow [*] parameters. Don't warn about comma at end of enum definition for ISO C 9x. * cccp.c (c9x): New variable. (rest_extension): New variable. (print_help): Document new -std= option. (main): Recognize -std= option. Set c9x appropriately. (create_definition): Recognize ISO C 9x vararg macros. * gcc.c (default_compilers): Adjust specs for -std options. (option_map): Add --std. (display_help): Document -std. * toplev.c (documented_lang_options): Add -std and remove -flang-isoc9x. * c-lex.c (yylex): Recognize hex FP constants and call REAL_VALUE_ATOF or REAL_VALUE_HTOF based on base of the constants. * fold-const.c (real_hex_to_f): New function. Replacement function for hex FP conversion if REAL_ARITHMETIC is not defined. * real.c (asctoeg): Add handling of hex FP constants. * real.h: Define REAL_VALUE_HTOF if necessary using ereal_atof or real_hex_to_f. Tue Dec 1 16:45:49 1998 Stan Cox * mips.md (divmodsi4*, divmoddi4*, udivmodsi4*, udivmoddi4): Add -mcheck-range-division/-mcheck-zero-division checking. Avoid as macro expansion. Use hi/lo as destination register. (div_trap): New. (divsi3*, divdi3*, modsi3*, moddi3*, udivsi3*, udivdi3*, umodsi3*, umoddi3*): Add -mcheck-range-division/-mcheck-zero-division checking. Avoid as macro expansion. Use hi/lo as destination register. * mips.h (MASK_CHECK_RANGE_DIV): New. (MASK_NO_CHECK_ZERO_DIV): New. (ELIMINABLE_REGS): Added GP_REG_FIRST + 31. (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET): Allow for getting return address for leaf functions out of r31 to support builtin_return_address. Tue Dec 1 15:03:30 1998 Herman A.J. ten Brugge * jump.c (jump_optimize): Call regs_set_between_p with PREV_INSN(x), NEXT_INSN(x) to check insn x. Tue Dec 1 15:20:44 1998 Jeffrey A Law (law@cygnus.com) * flow.c (delete_block): Call set_last_insn if we end up deleting the last insn in the rtl chain. * reload1.c (reload): Do not set reload_completed or split insns here. Instead... * toplev.c (rest_of_compilation): Set reload_completed after reload returns. Split insns after reload_cse has run. Tue Dec 1 11:55:04 1998 Richard Henderson * final.c (final_scan_insn): Abort if block_depth falls below 0. Tue Dec 1 10:23:16 1998 Nick Clifton * config/arm/t-arm-elf (LIBGCC2_CFLAGS): Define inhibit_libc. Tue Dec 1 10:22:18 1998 Nick Clifton * config/arm/unknown-elf.h (ASM_OUTPUT_DWARF2_ADDR_CONST): Remove use of user-label_prefix. Tue Dec 1 17:58:26 1998 J"orn Rennecke * reload1.c (emit_reload_insns): Clear spill_reg_store when doing a new non-inherited reload from the same pseudo. * local-alloc.c (function_invariant_p): New function. (update_equiv_regs): Use function_invariant_p instead of CONSTANT_P to decide if an equivalence should be recorded. * reload1.c (num_eliminable_invariants): New static variable. (reload): Set it. Use function_invariant_p instead of CONSTANT_P to decide if an equivalence should be recorded. Unshare PLUS. (calculate_needs_all_insns): Skip insns that only set an equivalence. Take num_eliminable_invariants into account when deciding if register elimination should be done. (reload_as_needed): Take num_eliminable_invariants into account when deciding if register elimination should be done. (eliminate_regs): Handle non-constant reg_equiv_constant. * rtl.h (function_invariant_p): Declare. Mon Nov 30 02:00:08 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Mon Nov 30 00:42:59 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Sun Nov 29 22:59:40 1998 Jason Merrill * except.c (add_new_handler): Complain about additional handlers after one that catches everything. Sat Nov 28 10:56:32 1998 Jeffrey A Law (law@cygnus.com) * configure.in (alpha*-*-netbsd): Fix typo. * configure: Rebuilt. Fri Nov 27 12:28:56 1998 Kaveh R. Ghazi * system.h: Include libiberty.h. * c-aux-info.c: Remove prototypes for concat/concat3. Change function `concat' from fixed parameters to variable parameters, as is done in libiberty. All callers of concat/concat3 changed to use the new `concat' with variable args. * cccp.c: Remove things made redundant by libiberty.h and/or conform to libiberty standards. * cexp.y: Likewise. * collect2.c: Likewise. * config/1750a/1750a.h: Likewise. * cppalloc.c: Likewise. * cppexp.c: Likewise. * cppfiles.c: Likewise. * cpphash.c: Likewise. * cpplib.c: Likewise. * dyn-string.c: Likewise. * fix-header.c: Likewise. * gcc.c: Likewise. * gcov.c: Likewise. * genattr.c: Likewise. * genattrtab.c: Likewise. * gencheck.c: Likewise. * gencodes.c: Likewise. * genconfig.c: Likewise. * genemit.c: Likewise. * genextract.c: Likewise. * genflags.c: Likewise. * gengenrtl.c: Likewise. * genopinit.c: Likewise. * genoutput.c: Likewise. * genpeep.c: Likewise. * genrecog.c: Likewise. * getpwd.c: Likewise. * halfpic.c: Likewise. * hash.c: Likewise. * mips-tdump.c: Likewise. Wrap malloc/realloc/calloc prototypes in NEED_DECLARATION_* macros. * mips-tfile.c: Remove things made redundant by libiberty.h and/or conform to libiberty standards. (fatal): Fix const-ification of variable `format' in !ANSI_PROTOTYPES case. * prefix.c: Remove things made redundant by libiberty.h and/or conform to libiberty standards. * print-rtl.c: Rename variable `spaces' to `xspaces' to avoid conflicting with function `spaces' from libiberty. * profile.c: Remove things made redundant by libiberty.h and/or conform to libiberty standards. * protoize.c: Likewise. * rtl.h: Likewise. * scan.h: Likewise. * tlink.c: Likewise. * toplev.c: Likewise. * toplev.h: Likewise. * tree.h: Likewise. Thu Nov 26 08:38:06 1998 Kaveh R. Ghazi * cppfiles.c (simplify_pathname): Un-ANSI-fy function definition. Thu Nov 26 23:45:37 1998 Michael Hayes * README.C4X: Updated URLs. * config/c4x/c4x.c (c4x_address_conflict): Fix typo. (valid_parallel_operands_5): Remove unused variable. Thu Nov 26 23:40:03 1998 Michael Hayes * config/c4x/c4x.h (TARGET_DEFAULT): Fix typo. 1998-11-26 Manfred Hollstein * Makefile.in (CONFIG_LANGUAGES): New macro taking all languages which can be configured. (LANGUAGES): Use $(CONFIG_LANGUAGES) instead of @all_languages@ (Makefile): Pass actual LANGUAGES through the environment when re-configuring. (cstamp-h): Likewise. (config.status): Likewise. * configure.in (enable_languages): Add new configuration parameter "--enable-languages=lang1,lang2,...". (${srcdir}/*/config-lang.in): Change handling to configure only those directories, that the user might have enabled; default to "all" existing languages. * configure: Regenerate. Thu Nov 26 00:19:19 1998 Richard Henderson * rtlanal.c (regs_set_between_p): New function. * rtl.h (regs_set_between_p): Prototype it. * jump.c (jump_optimize): Use it instead of modified_between_p in the Sep 2 change. Wed Nov 25 23:32:02 1998 Ian Dall Matthias Pfaller * invoke.texi (Option Summary, NS32K Options): Add description of NS32K specific options. * ns32k.md (tstdf, cmpdf, movdf, truncdfsf2, fixdfqi2, fixdfhi2, fixdfsi2, fixunsdfqi2, fixunsdfhi2, fixunsdfsi2, fix_truncdfqi2, fix_truncdfhi2, fix_truncdfsi2, adddf3, subdf3, muldf3, divdf3, negdf2, absdf2): Use l instead of f since the double class and float class are no longer the same. (cmpsi, truncsiqi2, truncsihi2, addsi3, subsi3, mulsi3, umulsidi3, divsi3, modsi3, andsi3, iorsi3, xorsi3, negsi2, one_cmplsi2, ashlsi3, ashlhi3, ashlqi3, rotlsi3, rotlhi3, rotlqi3, abssi2,...): Use "g" instead of "rmn" since LEGITIMATE_PIC_OPERAND has been fixed. (cmpsi, cmphi, cmpqi): Use general_operand instead of non_immediate_operand. Removes erroneous assumption that can't compare constants. (movsf, movsi, movhi, movqi,...): New register numbering scheme. (movsi, addsi3): Use NS32K_DISPLACEMENT_P instead of hard coded constants. (movstrsi, movstrsi1, movstrsi2): Completely new block move scheme. (...): Patterns to exploit multiply-add instructions. (udivmodsi4, udivmodsi_internal4, udivmodhi4, udivmoddihi4_internal, udivmodqi4, udivmoddiqi4_internal): New patterns to exploit extended divide insns. (udivsi3, udivhi3, udivqi3): Remove since superseded by udivmodsi etc patterns. * ns32k.h (FUNCTION_VALUE, LIBCALL_VALUE): Use f0 for complex float return values as well as simple scalar floats. (TARGET_32381, TARGET_MULT_ADD, TARGET_SWITCHES): Support new flag to denote 32381 fpu. (OVERRIDE_OPTIONS): 32381 is a strict superset of 32081. (CONDITIONAL_REGISTER_USAGE): Disable extra 32381 registers if not compiling for 32381. (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES, ADDITIONAL_REGISTER_NAMES, OUTPUT_REGISTER_NAMES, REG_ALLOC_ORDER, DBX_REGISTER_NUMBER, R0_REGNUM, F0_REGNUM, L1_REGNUM, STACK_POINTER_REGNUM, FRAME_POINTER_REGNUM, LONG_FP_REGS_P, ARG_POINTER_REGNUM, reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS, SUBSET_P,REGNO_REG_CLASS, REG_CLASS_FROM_LETTER, FUNCTION_PROLOGUE, FUNCTION_EPILOGUE, REGNO_OK_FOR_INDEX_P, FP_REG_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P, MEM_REG): New register scheme to include 32381 fpu registers and special register classes for new 32381 instructions dotf and polyf. (MODES_TIEABLE_P): Allow all integer modes, notably DI and SI, to be tieable. (INCOMING_RETURN_ADDR_RTX, RETURN_ADDR_RTX, INCOMING_FRAME_SP_OFFSET): New macros in case DWARF support is required. (SMALL_REGISTER_CLASSES): Make dependent on -mmult-add option. (MOVE_RATIO): Set to zero because of smart movstrsi implementation. (REGISTER_MOVE_COST): Move code to register_move_cost function for ease of coding and debugging. (CLASS_LIKELY_SPILLED_P): Under new register scheme class LONG_FLOAT_REGO is likely spilled but not caught by default definition. (CONSTANT_ADDRESS_P, CONSTANT_ADDRESS_NO_LABEL_P): Use macro instead of hard coded numbers in range check. (ASM_OUTPUT_LABELREF_AS_INT): Delete since unused. (...): Add prototypes for functions in ns32k.c but disable because of problems when ns32k.h is included in machine independent files. * ns32k.c: Include "system.h", "tree.h", "expr.h", "flags.h". (ns32k_reg_class_contents, regcass_map, ns32k_out_reg_names, hard_regno_mode_ok, secondary_reload_class, print_operand, print_operand_address): New register scheme to include 32381 fpu registers and special register classes for new 32381 instructions dotf and polyf. (gen_indexed_expr): Make static to keep namespace clean. (check_reg): Remove since never called. (move_tail, expand_block_move): Helper functions for "movstrsi" block move insn. (register_move_cost): Helper function for REGISTER_MOVE_COST macro. Increase cost of moves which go via memory. * netbsd.h (TARGET_DEFAULT): Set (new) 32381 fpu flag. (CPP_PREDEFINES): No longer predefine "unix". * ns32k.md (movsi, movsi, adddi3, subdi3, subsi3, subhi3, subqi3,...): Remove erroneous %$. print_operand() can work out from the rtx is an immediate prefix is required. * ns32k.h (RETURN_POPS_ARGS, VALID_MACHINE_DECL_ATTRIBUTE, VALID_MACHINE_TYPE_ATTRIBUTE, COMP_TYPE_ATTRIBUTES, SET_DEFAULT_TYPE_ATTRIBUTES): Support for -mrtd calling convention. (LEGITIMATE_PIC_OPERAND_P, SYMBOLIC_CONST): Correct handling of pic operands. * ns32k.c (symbolic_reference_mentioned_p, print_operand): Correct handling of pic operands. (ns32k_valid_decl_attribute_p, ns32k_valid_type_attribute_p, ns32k_comp_type_attributes, ns32k_return_pops_args): Support for -mrtd calling convention. Wed Nov 25 23:42:20 1998 Tom Tromey * gcc.c (option_map): Recognize --output-class-directory. Thu Nov 26 18:26:21 1998 Michael Hayes * loop.h (precondition_loop_p): Added new mode argument. * unroll.c (precondition_loop_p): Likewise. (approx_final_value): Function deleted and subsumed into loop_iterations. (loop_find_equiv_value): New function. (loop_iterations): Use loop_find_equiv_value to find increments too large to be immediate constants. Also use it to find terms common to initial and final iteration values that can be removed. Thu Nov 26 18:05:04 1998 Michael Hayes * loop.h (struct loop_info): Define new structure. (precondition_loop_p): Added prototype. (unroll_loop): Added new argument loop_info to prototype. (final_biv_value, final_giv_value): Added new argument n_iterations to prototype. * loop.c (strength_reduce): Declare new structure loop_iteration_info and new pointer loop_info. (loop_n_iterations): Replace global variable by element in loop_info structure. (check_final_value): New argument n_iterations. (insert_bct): New argument loop_info. (loop_unroll_factor): Replace global array by element in loop_info structure. (loop_optimize): Remove code to allocate and initialize loop_unroll_factor_array. * unroll.c (precondition_loop_p): No longer static since used by branch on count optimization. (precondition_loop_p, unroll_loop): New argument loop_info. (final_biv_value, final_giv_value, find_splittable_regs): New argument n_iterations. (loop_iteration_var, loop_initial_value, loop_increment, loop_final_value, loop_comparison_code, loop_unroll_factor): Replaced global variables by loop_info structure. (loop_unroll_factor): Replace global array by element in loop_info structure. Thu Nov 26 17:49:29 1998 Michael Hayes * loop.c (check_dbra_loop): Update JUMP_LABEL field of jump insn when loop reversed. * unroll.c (precondition_loop_p): Return loop_initial_value for initial_value instead of loop_iteration_var. Thu Nov 26 17:15:38 1998 Michael Hayes * config/c4x/c4x.md: Fix minor formatting problems. Update docs. (*b, *b_rev, *b_noov, *b_noov_rev, *db, decrement_and_branch_until_zero, rptb_end): Use c4x_output_cbranch to output the instruction sequences. (rpts): Delete. (rptb_top): Provide alternatives to use any register or memory for loop counter. (rptb_end): Emit use of operands rather than assigning them explicitly to the RS and RE registers. Thu Nov 26 16:37:59 1998 Michael Hayes * config/c4x/c4x.c (c4x_modified_between_p, c4x_mem_set_p, c4x_mem_set_p, c4x_mem_modified_between_p, c4x_insn_moveable_p, c4x_parallel_pack, c4x_parallel_find, c4x_update_info_reg, c4x_update_info_regs, c4x_copy_insn_after, c4x_copy_insns_after, c4x_merge_notes, c4x_parallel_process, c4x_combine_parallel_independent, c4x_combine_parallel_dependent, c4x_combine_parallel): Delete. Thu Nov 26 15:16:05 1998 Michael Hayes * config/c4x/c4x.c (c4x_override_options): For compatibility with old target options clear flag_branch_on_count_reg if -mno-rptb specified and set flag_argument_alias is -mno-aliases specified. (c4x_output_cbranch): Handle a sequence of insns rather than a single insn. (c4x_rptb_insert): Do not emit a RPTB insn if the RC register has not been allocated as the loop counter. (c4x_address_conflict): Do not allow two volatile memory references. (valid_parallel_operands_4, valid_parallel_operands_5, valid_parallel_operands_6): Reject pattern if the register destination of the first set is used as part of an address in the second set. Thu Nov 26 14:56:32 1998 Michael Hayes * config/c4x/c4x.h (TARGET_DEFAULT): Add PARALEL_MPY_FLAG. (TARGET_SMALL_REG_CLASS): Set to 0 so that SMALL_REGISTER_CLASSES is no longer enabled if PARALLEL_MPY_FLAG set. (HARD_REGNO_CALL_CLOBBERED): Add parentheses to remove ambiguity. (REG_CLASS_CONTENTS): Add braces around initializers. (HAVE_MULTIPLE_PACK): Define. (ASM_OUTPUT_BYTE_FLOAT): Use %lf format specifier with REAL_VALUE_TO_DECIMAL. (ASM_OUTPUT_SHORT_FLOAT): Use %lf format specifier with REAL_VALUE_TO_DECIMAL. (ar0_reg_operand): Add prototype. (ar0_mem_operand): Likewise. (ar1_reg_operand): Likewise. (ar1_mem_operand): Likewise. (ar2_reg_operand): Likewise. (ar2_mem_operand): Likewise. (ar3_reg_operand): Likewise. (ar3_mem_operand): Likewise. (ar4_reg_operand): Likewise. (ar4_mem_operand): Likewise. (ar5_reg_operand): Likewise. (ar5_mem_operand): Likewise. (ar6_reg_operand): Likewise. (ar6_mem_operand): Likewise. (ar7_reg_operand): Likewise. (ar7_mem_operand): Likewise. (ir0_reg_operand): Likewise. (ir0_mem_operand): Likewise. (ir1_reg_operand): Likewise. (ir1_mem_operand): Likewise. (group1_reg_operand): Likewise. (group1_mem_operand): Likewise. (ir1_reg_operand): Likewise. (arx_reg_operand): Likewise. (not_rc_reg): Likewise. (not_modify_reg): Likewise. (c4x_group1_reg_operand): Remove prototype. (c4x_group1_mem_operand): Likewise. (c4x_arx_reg_operand): Likewise. Wed Nov 25 19:02:55 1998 (Stephen L Moshier) * emit-rtl.c (gen_lowpart_common): Remove earlier change. * real.c (make_nan): Make SIGN arg actually specify the sign bit. Thu Nov 26 14:12:05 1998 Michael Hayes * config/c4x/c4x.md (addqi3): Emit addqi3_noclobber pattern during reload. Wed Nov 25 22:05:28 1998 J"orn Rennecke * config/sh/lib1funcs.asm (___udivsi3_i4): Don't switch to sz == 1 unless FMOVD_WORKS is defined. Wed Nov 25 20:11:04 1998 J"orn Rennecke * regclass.c (init_reg_sets): Move code that calculates tables dependent on reg_class_contents from here... (init_reg_sets_1): To here. Wed Nov 25 14:54:46 1998 Zack Weinberg * cpplib.h: Delete struct import_file. Add ihash element to struct cpp_buffer. Delete dont_repeat_files and import_hash_table elements from cpp_reader; change all_include_files to a hash table. Delete all foobar_include / last_foobar_include elements from struct cpp_options; put back four such: quote_include, bracket_include, system_include, after_include. Redo struct file_name_list completely. Add new structure type include_hash. Add prototypes for merge_include_chains and include_hash. Change prototypes for finclude, find_include_file, and append_include_chain to match changes below. * cppfiles.c (simplify_pathname, include_hash, remap_filename, merge_include_chains): New functions. (add_import, lookup_import, open_include_file): Removed. (INO_T_EQ): Define this (copied from cccp.c). (hack_vms_include_specification): Remove all calls and #if 0 out the definition. It was being called incorrectly and at the wrong times. Until a VMSie can look at this, it's better to not pretend to support it. (append_include_chain): Change calling convention; now takes only one directory at a time, and sets up the data structure itself. (redundant_include_p): Rewritten - this is now used for all include redundancy, whether by #ifndef, #import, or #pragma once. Looks up things in the include hash table. (file_cleanup): Decrement pfile->system_include_depth here if it's >0. (find_include_file): Calling convention changed; now passes around a struct include_hash instead of 3 separate parameters. Guts ripped out and replaced with new include_hash mechanism. (finclude): Calling convention changed as for find_include_file. Error exits pulled out-of-line. Reformat. (safe_read): Return a long, not an int. (deps_output): Don't recurse. * cpplib.c (is_system_include): Deleted. (path_include): Fix up call to append_include_chain. (do_include): Fix up calls to find_include_file and finclude. Clean up dependency output a bit. Shorten obnoxiously lengthy #import warning message. Don't decrement pfile->system_include_depth here. (do_pragma): Understand the include_hash structure. Reformat. (do_endif): Correct handling of control macros. Understand the include_hash. (cpp_start_read): Fix up calls to finclude. Call merge_include_chains. (cpp_handle_option): Fix up calls to append_include_chain. Understand the four partial include chains. (cpp_finish): Add debugging code (#if 0-ed out) for the include_hash. (cpp_cleanup): Free the include_hash, not the import hash and the all_include and dont_repeat lists which no longer exist. Wed Nov 25 11:26:19 1998 Jeffrey A Law (law@cygnus.com) * toplev.c (no_new_pseudos): Define. (rest_of_compilation): Set no_new_pseudos as needed. * emit-rtl.c (gen_reg_rtx): Abort if we try to create a new pseudo if no_new_pseudos is set. * rtl.h (no_new_pseudos): Declare it. * reload1.c (reload): Update comments. * md.texi: Corresponding changes. Wed Nov 25 11:26:17 1998 Bernd Schmidt * reload1.c (reg_used_in_insn): Renamed from reg_used_by_pseudo. (choose_reload_regs): Rename it here as well. When computing it, also merge in used hardregs. 1998-11-25 Zack Weinberg * gcc.c: Split out Objective-C specs to... * objc/lang-specs.h: here. (New file.) Make the specs cpplib aware. * c-lex.c (init_parse): Always initialize the filename global. * objc/objc-act.c (lang_init): Always call check_newline at beginning of file. Wed Nov 25 00:48:29 1998 Graham * reload1.c (reload): Remove unused variable. (reload_reg_free_for_value_p): Add missing parameter definition. * jump.c (jump_optimize): Remove unused variable. Wed Nov 25 00:07:11 1998 Jeffrey A Law (law@cygnus.com) * Makefile.in (graph.o): Depend on $(RTL_H), not rtl.h. * cse.c (fold_rtx): Make autoincrement addressing mode tests be runtime selectable. * expr.c (move_by_pieces): Similarly. (move_by_pieces_1, clear_by_pieces, clear_by_pieces_1): Similarly. * flow.c (find_auto_inc): Similarly. (try_pre_increment): Similarly. * loop.c (strength_reduce): Similarly. * regclass.c (auto_inc_dec_reg_p): Similarly. * regmove.c (try_auto_increment): Similarly. (fixup_match_1): Similarly. * rtl.h (HAVE_PRE_INCREMENT): Define if not already defined. (HAVE_PRE_DECREMENT): Similarly. (HAVE_POST_INCREMENT, HAVE_POST_DECREMENT): Similarly. * Corresponding changes to all target header files. * tm.texi: Update docs for autoinc addressing modes. Tue Nov 24 20:24:59 1998 Jim Wilson * configure.in (m68020-*-elf*, m68k-*-elf*): New targets. * configure: Rebuild. * config/elfos.h: New file. * config/m68k/m68020-elf.h, config/m68k/m68kelf.h, config/m68k/t-m68kelf: New file. Tue Nov 24 13:40:06 1998 Jeffrey A Law (law@cygnus.com) * Makefile.in (HOST_AR): Define. (HOST_AR_FLAGS, HOST_RANLIB, HOST_RANLIB_TEST): Similarly. (libcpp.a): Use the host tools explicitly. (STAGESTUFF): Add libcpp.a. Tue Nov 24 09:33:49 1998 Nick Clifton * config/m32r/m32r.md (movstrsi_internal): Describe changes made to source and destination registers. Mon Nov 23 20:28:02 1998 Mike Stump * libgcc2.c (top_elt): Remove top_elt, it isn't thread safe. The strategy we now use is to pre allocate the top_elt along with the EH context so that each thread has its own top_elt. This is necessary as the dynamic cleanup chain is used on the top element of the stack and each thread MUST have its own. (eh_context_static): Likewise. (new_eh_context): Likewise. (__sjthrow): Likewise. Mon Nov 23 20:25:03 1998 Jason Merrill * i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Wrap in do...while. * i386.md (prologue_get_pc): Remove unused variable. Mon Nov 23 17:05:40 1998 Geoffrey Noer * i386/xm-cygwin.h: Rename cygwin_ path funcs back to cygwin32_. Mon Nov 23 16:40:00 1998 Ulrich Drepper * Makefile.in (OBJS): Add graph.o. (graph.o): New dependency list. * flags.h: Declare dump_for_graph and define graph_dump_types type. * print-rtl.c (dump_for_graph): Define new variable. (print_rtx): Rewrite to allow use in graph dumping functions. * toplev.c: Declare print_rtl_graph_with_bb, clean_graph_dump_file, finish_graph_dump_file. Define graph_dump_format. (compile_file): If graph dumping is enabled also clear these files. Finish graph dump files. (rest_of_compilation): Also dump graph information if enabled. (main): Recognize -dv to enabled VCG based graph dumping. * graph.c: New file. Graph dumping functions. Mon Nov 23 16:39:04 1998 Richard Henderson * configure.in: Look for . * system.h: Include it before substitute S_ISREG definitions. Mon Nov 23 17:40:37 1998 Gavin Romig-Koch * config/mips/abi.h: Use ABI_O64, duplicating ABI_32 usage. * config/mips/iris6.h: Same. * config/mips/mips.md: Same. * config/mips/mips.c: Same; also add "-mabi=o64" option. * config/mips/mips.h: Same; also define ABI_O64. Mon Nov 23 17:02:27 1998 Kaveh R. Ghazi * configure.in: Use AC_PREREQ(2.12.1). Mon Nov 23 10:16:38 1998 Melissa O'Neill * cccp.c (S_ISREG, S_ISDIR): Delete defines. * cpplib.c, gcc.c: Likewise. * system.h (S_ISREG, S_ISDIR): Define if not already defined. Mon Nov 23 09:53:44 1998 Richard Henderson * local-alloc.c (local_alloc): Use malloc not alloca for reg_qty, reg_offset, ref_next_in_qty. Mon Nov 23 16:46:46 1998 J"orn Rennecke * caller-save.c (insert_one_insn): Initialize the live_before and live_after register sets. Add SH4 support: * config/sh/lib1funcs.asm (___movstr_i4_even, ___movstr_i4_odd): Define. (___movstrSI12_i4, ___sdivsi3_i4, ___udivsi3_i4): Define. * sh.c (reg_class_from_letter, regno_reg_class): Add DF_REGS. (fp_reg_names, assembler_dialect): New variables. (print_operand_address): Handle SUBREGs. (print_operand): Added 'o' case. Don't use adj_offsettable_operand on PRE_DEC / POST_INC. Name of FP registers depends on mode. (expand_block_move): Emit different code for SH4 hardware. (prepare_scc_operands): Use emit_sf_insn / emit_df_insn as appropriate. (from_compare): Likewise. (add_constant): New argument last_value. Changed all callers. (find_barrier): Don't try HImode load for FPUL_REG. (machine_dependent_reorg): Likewise. (sfunc_uses_reg): A CLOBBER cannot be the address register use. (gen_far_branch): Emit a barrier after the new jump. (barrier_align): Don't trust instruction lengths before fixing up pcloads. (machine_dependent_reorg): Add support for FIRST_XD_REG .. LAST_XD_REG. Use auto-inc addressing for fp registers if doubles need to be loaded in two steps. Set sh_flag_remove_dead_before_cse. (push): Support for TARGET_FMOVD. Use gen_push_fpul for fpul. (pop): Support for TARGET_FMOVD. Use gen_pop_fpul for fpul. (calc_live_regs): Support for TARGET_FMOVD. Don't save FPSCR. Support for FIRST_XD_REG .. LAST_XD_REG. (sh_expand_prologue): Support for FIRST_XD_REG .. LAST_XD_REG. (sh_expand_epilogue): Likewise. (sh_builtin_saveregs): Use DFmode moves for fp regs on SH4. (initial_elimination_offset): Take TARGET_ALIGN_DOUBLE into account. (arith_reg_operand): FPUL_REG is OK for SH4. (fp_arith_reg_operand, fp_extended_operand): New functions. (tertiary_reload_operand, fpscr_operand): Likewise. (commutative_float_operator, noncommutative_float_operator): Likewise. (binary_float_operator, get_fpscr_rtx, emit_sf_insn): Likewise. (emit_df_insn, expand_sf_unop, expand_sf_binop): Likewise. (expand_df_unop, expand_df_binop, expand_fp_branch): Likewise. (emit_fpscr_use, mark_use, remove_dead_before_cse): Likewise. * sh.h (CPP_SPEC): Add support for -m4, m4-single, m4-single-only. (CONDITIONAL_REGISTER_USAGE): Likewise. (HARD_SH4_BIT, FPU_SINGLE_BIT, SH4_BIT, FMOVD_BIT): Define. (TARGET_CACHE32, TARGET_SUPERSCALAR, TARGET_HARWARD): Define. (TARGET_HARD_SH4, TARGET_FPU_SINGLE, TARGET_SH4, TARGET_FMOVD): Define. (target_flag): Add -m4, m4-single, m4-single-only, -mfmovd. (OPTIMIZATION_OPTIONS): If optimizing, set flag_omit_frame_pointer to -1 and sh_flag_remove_dead_before_cse to 1. (ASSEMBLER_DIALECT): Define to assembler_dialect. (assembler_dialect, fp_reg_names): Declare. (OVERRIDE_OPTIONS): Add code for TARGET_SH4. Hide names of registers that are not accessible. (CACHE_LOG): Take TARGET_CACHE32 into account. (LOOP_ALIGN): Take TARGET_HARWARD into account. (FIRST_XD_REG, LAST_XD_REG, FPSCR_REG): Define. (FIRST_PSEUDO_REGISTER: Now 49. (FIXED_REGISTERS, CALL_USED_REGISTERS): Include values for registers. (HARD_REGNO_NREGS): Special treatment of FIRST_XD_REG .. LAST_XD_REG. (HARD_REGNO_MODE_OK): Update. (enum reg_class): Add DF_REGS and FPSCR_REGS. (REG_CLASS_NAMES, REG_CLASS_CONTENTS, REG_ALLOC_ORDER): Likewise. (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Update. (CLASS_CANNOT_CHANGE_SIZE, DEBUG_REGISTER_NAMES): Define. (NPARM_REGS): Eight floating point parameter registers on SH4. (BASE_RETURN_VALUE_REG): SH4 also passes double values in floating point registers. (GET_SH_ARG_CLASS): Likewise. Complex float types are also returned in float registers. (BASE_ARG_REG): Complex float types are also passes in float registers. (FUNCTION_VALUE): Change mode like PROMOTE_MODE does. (LIBCALL_VALUE): Remove trailing semicolon. (ROUND_REG): Round when double precision value is passed in floating point register(s). (FUNCTION_ARG_ADVANCE): No change wanted for SH4 when things are passed on the stack. (FUNCTION_ARG): Little endian adjustment for SH4 SFmode. (FUNCTION_ARG_PARTIAL_NREGS): Zero for SH4. (TRAMPOLINE_ALIGNMENT): Take TARGET_HARWARD into account. (INITIALIZE_TRAMPOLINE): Emit ic_invalidate_line for TARGET_HARWARD. (MODE_DISP_OK_8): Not for SH4 DFmode. (GO_IF_LEGITIMATE_ADDRESS): No base reg + index reg for SH4 DFmode. Allow indexed addressing for PSImode after reload. (LEGITIMIZE_ADDRESS): Not for SH4 DFmode. (LEGITIMIZE_RELOAD_ADDRESS): Handle SH3E SFmode. Don't change SH4 DFmode nor PSImode RELOAD_FOR_INPUT_ADDRESS. (DOUBLE_TYPE_SIZE): 64 for SH4. (RTX_COSTS): Add PLUS case. Increase cost of ASHIFT, ASHIFTRT, LSHIFTRT case. (REGISTER_MOVE_COST): Add handling of R0_REGS, FPUL_REGS, T_REGS, MAC_REGS, PR_REGS, DF_REGS. (REGISTER_NAMES): Use fp_reg_names. (enum processor_type): Add PROCESSOR_SH4. (sh_flag_remove_dead_before_cse): Declare. (rtx_equal_function_value_matters, fpscr_rtx, get_fpscr_rtx): Declare. (PREDICATE_CODES): Add binary_float_operator, commutative_float_operator, fp_arith_reg_operand, fp_extended_operand, fpscr_operand, noncommutative_float_operator. (ADJUST_COST): Use different scale for TARGET_SUPERSCALAR. (SH_DYNAMIC_SHIFT_COST): Cheaper for SH4. * sh.md (attribute cpu): Add value sh4. (attrbutes fmovd, issues): Define. (attribute type): Add values dfp_arith, dfp_cmp, dfp_conv, dfdiv. (function units memory, int, mpy, fp): Make dependent on issue rate. (function units issue, single_issue, load_si, load): Define. (function units load_store, fdiv, gp_fpul): Define. (attribute hit_stack): Provide proper default. (use_sfunc_addr+1, udivsi3): Predicated on ! TARGET_SH4. (udivsi3_i4, udivsi3_i4_single, divsi3_i4, divsi3_i4_single): New insns. (udivsi3, divsi3): Emit special patterns for SH4 hardware, (mulsi3_call): Now uses match_operand for function address. (mulsi3): Also emit code for SH1 case. Wrap result in REG_LIBCALL / REG_RETVAL notes. (push, pop, push_e, pop_e): Now define_expands. (push_fpul, push_4, pop_fpul, pop_4, ic_invalidate_line): New expanders. (movsi_ie): Added y/i alternative. (ic_invalidate_line_i, movdf_i4): New insns. (movdf_i4+[123], reload_outdf+[12345], movsi_y+[12]): New splitters. (reload_indf, reload_outdf, reload_outsf, reload_insi): New expanders. (movdf): Add special code for SH4. (movsf_ie, movsf_ie+1, reload_insf, calli): Make use of fpscr visible. (call_valuei, calli, call_value): Likewise. (movsf): Emit no-op move. (mov_nop, movsi_y): New insns. (blt, sge): Generalize to handle DFmode. (return predicate): Call emit_fpscr_use and remove_dead_before_cse. (block_move_real, block_lump_real): Predicate on ! TARGET_HARD_SH4. (block_move_real_i4, block_lump_real_i4, fpu_switch): New insns. (fpu_switch0, fpu_switch1, movpsi): New expanders. (fpu_switch+[12], fix_truncsfsi2_i4_2+1): New splitters. (toggle_sz): New insn. (addsf3, subsf3, mulsf3, divsf3): Now define_expands. (addsf3_i, subsf3_i, mulsf3_i4, mulsf3_ie, divsf3_i): New insns. (macsf3): Make use of fpscr visible. Disable for SH4. (floatsisf2): Make use of fpscr visible. (floatsisf2_i4): New insn. (floatsisf2_ie, fixsfsi, cmpgtsf_t, cmpeqsf_t): Disable for SH4. (ieee_ccmpeqsf_t): Likewise. (fix_truncsfsi2): Emit different code for SH4. (fix_truncsfsi2_i4, fix_truncsfsi2_i4_2, cmpgtsf_t_i4): New insns. (cmpeqsf_t_i4, ieee_ccmpeqsf_t_4): New insns. (negsf2, sqrtsf2, abssf2): Now expanders. (adddf3, subdf3i, muldf2, divdf3, floatsidf2): New expanders. (negsf2_i, sqrtsf2_i, abssf2_i, adddf3_i, subdf3_i): New insns. (muldf3_i, divdf3_i, floatsidf2_i, fix_truncdfsi2_i): New insns. (fix_truncdfsi2, cmpdf, negdf2, sqrtdf2, absdf2): New expanders. (fix_truncdfsi2_i4, cmpgtdf_t, cmpeqdf_t, ieee_ccmpeqdf_t): New insns. (fix_truncdfsi2_i4_2+1): New splitters. (negdf2_i, sqrtdf2_i, absdf2_i, extendsfdf2_i4): New insns. (extendsfdf2, truncdfsf2): New expanders. (truncdfsf2_i4): New insn. * t-sh (LIB1ASMFUNCS): Add _movstr_i4, _sdivsi3_i4, _udivsi3_i4. (MULTILIB_OPTIONS): Add m4-single-only/m4-single/m4. * float-sh.h: When testing for __SH3E__, also test for __SH4_SINGLE_ONLY__ . * va-sh.h (__va_freg): Define to float. (__va_greg, __fa_freg, __gnuc_va_list, va_start): Define for __SH4_SINGLE_ONLY__ like for __SH3E__ . (__PASS_AS_FLOAT, __TARGET_SH4_P): Likewise. (__PASS_AS_FLOAT): Use different definition for __SH4__ and __SH4_SINGLE__. (TARGET_SH4_P): Define. (va_arg): Use it. * sh.md (movdf_k, movsf_i): Tweak the condition so that init_expr_once is satisfied about the existence of load / store insns. * sh.md (movsi_i, movsi_ie, movsi_i_lowpart, movsf_i, movsf_ie): Change m constraint in source operand to mr / mf. * va-sh.h (__va_arg_sh1): Use __asm instead of asm. * (__VA_REEF): Define. (__va_arg_sh1): Use it. * va-sh.h (va_start, va_arg, va_copy): Add parentheses. Sun Nov 22 21:34:02 1998 Jeffrey A Law (law@cygnus.com) * i386/dgux.c (struct option): Add new "description field". * m88k/m88k.c (struct option): Likewise. Sun Nov 22 16:07:57 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Sun Nov 22 13:40:02 1998 Bernd Schmidt * regmove.c (regmove_profitable_p): Use return value of find_matches properly. Sun Nov 22 02:47:37 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Sat Nov 21 22:12:09 1998 Jeffrey A Law (law@cygnus.com) * reload1.c (eliminate_regs): Do not lose if eliminate_regs is called without reload having been called earlier. * v850.c (ep_memory_operand): Offsets < 0 are not valid for EP addressing modes. (v850_reorg): Similarly. * loop.c (check_dbra_loop): Avoid using gen_add2_insn. Sat Nov 21 02:18:38 1998 J"orn Rennecke * loop.c (move_movables): Start of libcall might be new loop start. Fri Nov 20 12:14:16 1998 Kaveh R. Ghazi * hash.c (hash_table_init_n): Wrap prototype arguments in PARAMS(). Fri Nov 20 08:34:00 1998 Bernd Schmidt * function.c (nonlocal_goto_handler_slots): Renamed from nonlocal_goto_handler_slot; now an EXPR_LIST chain. (push_function_context_to): Adjust for this change. (pop_function_context_from): Likewise. (init_function_start): Likewise. (expand_function_end): Likewise. * function.h (struct function): Likewise. * calls.c (expand_call): Likewise. * explow.c (allocate_dynamic_stack_space): Likewise. * expr.h (nonlocal_goto_handler_slots): Rename its declaration. * stmt.c (declare_nonlocal_label): Make a new handler slot for each label. (expand_goto): When doing a nonlocal goto, find corresponding handler slot for it. Don't put the label address in the static chain register. (expand_end_bindings): Break out nonlocal goto handling code into three new functions. (expand_nl_handler_label, expand_nl_goto_receiver, expand_nl_goto_receivers): New static functions, broken out of expand_end_bindings and adapted to create one handler per nonlocal label. * function.c (delete_handlers): Delete insn if it references any of the nonlocal goto handler slots. * i960.md (nonlocal_goto): Comment out code that modifies static_chain_rtx. * sparc.md (nonlocal_goto): Likewise. (goto_handler_and_restore_v9): Comment out. (goto_handler_and_restore_v9_sp64): Comment out. Thu Nov 19 23:44:38 1998 Bernd Schmidt * expr.c (STACK_BYTES): Delete unused macro. * calls.c: Provide default for PREFERRED_STACK_BOUNDARY. (STACK_BYTES): Use PREFERRED_STACK_BOUNDARY, not STACK_BOUNDARY. (expand_call): Likewise. (emit_library_call): Likewise. (emit_library_call_value): Likewise. * function.c: Provide default for PREFERRED_STACK_BOUNDARY. (STACK_BYTES): Use PREFERRED_STACK_BOUNDARY, not STACK_BOUNDARY. * explow.c: Provide default for PREFERRED_STACK_BOUNDARY. (round_push): Use PREFERRED_STACK_BOUNDARY, not STACK_BOUNDARY. (allocate_dynamic_stack_space): Likewise. * tm.texi (PREFERRED_STACK_BOUNDARY): Document new macro. (STACK_BOUNDARY): Update description to reflect the new situation. Thu Nov 19 22:20:51 1998 Jeffrey A Law (law@cygnus.com) * reorg.c (relax_delay_slots): When optimizing for code size, if a return with a filled delay slot is followed by a return with an unfilled delay slot, delete the first return and reemit the insn that was previously in its delay slot. * i860.c (single_insn_src_p): Add missing parens. * ginclude/math-3300.h: Likewise. Thu Nov 19 20:55:59 1998 H.J. Lu (hjl@gnu.org) * regclass.c (init_reg_sets_1): Add prototype. (init_reg_modes): Likewise. 1998-11-19 Zack Weinberg * c-common.c: Change warning messages to say `comparison is always true' or `comparison is always false' instead of the confusing `is always 0', `is always 1'. Thu Nov 19 19:05:49 1998 Per Bothner * print-tree.c (print_node): After printing BLOCK or BIND_EXPR, break instead of return (which loses closing '>'). Thu Nov 19 19:34:13 1998 Jeffrey A Law (law@cygnus.com) * i386.h (LEGITIMATE_CONSTANT_P): Reject CONST_DOUBLEs that are not standard 387 constants. * i386.md (jump): Explicitly set "memory" attribute. (indirect_jump, prologue_set_stack_ptr): Likewise. (prologue_get_pc_and_set_got, pop): Likewise. (allocate_stack_worder, blockage, return_internal): Likewise. (return_pop_internal, nop): Likewise. (epilogue_set_stack_ptr, leave): Likewise. Thu Nov 19 15:42:54 1998 Nick Clifton * config/arm/coff.h: Set USER_LABEL_PREFIX to "_". Thu Nov 19 23:20:59 1998 J"orn Rennecke * reload1.c (reload_reg_free_for_value_p): Early auto_inc reloads don't conflict with outputs. Thu Nov 19 12:58:55 1998 Kaveh R. Ghazi * configure.in: Don't do AC_CHECK_HEADERS(wait.h sys/wait.h). Instead call AC_HEADER_SYS_WAIT. * collect2.c: Don't provide defaults for sys/wait.h macros. * gcc.c: Likewise. * protoize.c: Likewise. Also, don't include sys/wait.h. * system.h: Include sys/wait.h and provide macro defaults. 1998-11-19 Andreas Schwab * Makefile.in (mandir): Set to @mandir@. (man1dir): New variable to hold the former value of $(mandir). Replace all uses of $(mandir) by $(man1dir). Wed Nov 18 16:31:28 1998 Jim Wilson * reload.c (find_reloads_address_part): If have a CONST_INT, create a new one before passing it to force_const_mem. * reload.c (find_reloads_toplev): Pass &x instead of NULL_PTR in find_reloads_address call. Wed Nov 18 22:13:00 1998 J"orn Rennecke * expr.c (store_expr): Don't generate load-store pair if TEMP is identical (according to ==) with TARGET. Tue Nov 17 22:25:16 1998 J"orn Rennecke * reload1.c (reload_reg_free_for_value_p): When considered reload has an output, matching inputs are not sufficient to avoid conflict. Tue Nov 17 11:51:16 1998 Mark Mitchell * hash.h (hash_table_key): New type. (hash_entry): Change `string' field to generic `key'. (hash_table): Add `comp' and `hash' functions. (hash_table_init): Take them as input. (hash_table_init_n): Likewise. (hash_lookup): Modify for generic keys. (hash_newfunc): Likewise. (hash_traverse): Likewise. (string_hash): New function. (string_compare): Likewise. (string_copy): Likewise. * hash.c (hash_table_init_n): Modify for generic keys. (hash_table_init): Likewise. (hash_lookup): Likewise. (hash_newfunc): Likewise. (hash_traverse): Likewise. (string_hash): Split out from hash_lookup. (string_compare): New function. (string_copy): Split out from hash_lookup. * tlink.c (symbol_hash_newfunc): Modify for new interfaces to hash tables. (symbol_hash_lookup): Likewise. (file_hash_newfunc): Likewise. (file_hash_lookup): Likewise. (demangled_hash_newfunc): Likewise. (demangled_hash_lookup): Likewise. (tlink_int): Likewise. (read_repo_file): Likewise. (recompile_files): Likewise. (demangle_new_symbols): Likewise. (scan_linker_output): Likewise. Tue Nov 17 17:13:53 1998 J"orn Rennecke * flow.c (insn_dead_p): New argument NOTES. Changed all callers. Mon Nov 16 17:56:07 1998 David Edelsohn * rs6000.c (output_mi_thunk): Improve test for local branch. Mon Nov 16 17:56:07 1998 Franz Sirl * rs6000.c (output_mi_thunk): Correct test for aggregate values. Mon Nov 16 21:02:52 1998 J"orn Rennecke * reload1.c (reload_reg_free_before_p): Delete. Changed all callers to use reload_reg_free_for_value_p instead. (reload_reg_free_for_value_p): Handle more reload types. A RELOAD_FOR_INPUT doesn't conflict with its RELOAD_FOR_INPUT_ADDRESS / RELOAD_FOR_INPADDR_ADDRESS. Add special case for OUT == const0_rtx. Added ignore_address_reloads argument. Changed all callers. Mon Nov 16 02:22:29 1998 Jason Merrill * toplev.c (compile_file): Don't pedwarn about undefined static functions just because we passed -Wunused. Mon Nov 16 04:41:41 1998 J"orn Rennecke * function.c (purge_addressof_1): Unshare rtl created by store_bit_field. Mon Nov 16 04:23:06 1998 J"orn Rennecke * regmove.c (regmove_optimize): Don't do anything but optimize_reg_copy[123] when flag_regmove is not set. Sat Nov 14 15:05:07 1998 Richard Henderson * alpha.md (addsi3, subsi3): Revise 5 Nov change to store DImode value in paradoxical SImode result, rather than truncating midpoint. Fri Nov 13 22:19:23 1998 Richard Henderson * alpha.c (reg_not_elim_operand): New. * alpha.h (PREDICATE_CODES): Add it. * alpha.md (s48addq, s48subq patterns): Use it as the predicate for the multiplicand. Fri Nov 13 22:50:37 1998 David Edelsohn * rs6000.md (movsf): Remove explicit secondary-reload-like functionality. Only truncate SFmode store if in FPR. (movsf splitters): Combine const_double splitters. (movsf_hardfloat): Add GPR support. Fri Nov 13 11:02:11 1998 Stan Cox * splet.h (SUBTARGET_OVERRIDE_OPTIONS): New to deprecate -mlive-g0 and -mbroken-saverestore. * t-splet (MULTILIB_OPTIONS): Likewise. * sparc.c (sparc_flat_compute_frame_size): Correctly calc args_size in a leaf function. Clarify total_size/extra_size relationship. Thu Nov 12 19:20:57 1998 Geoffrey Noer * i386/cygwin32.asm: Delete. * i386/cygwin.asm: New file, renamed from cygwin32.asm. * i386/cygwin32.h: Delete. * i386/cygwin.h: New file, renamed from cygwin32.h. * i386/t-cygwin32: Delete. * i386/t-cygwin: New file, renamed from t-cygwin32. Include cygwin.asm instead of cygwin32.asm. Remove "32" from comment. * i386/x-cygwin32: Delete. * i386/x-cygwin: New file, renamed from x-cygwin32. * i386/xm-cygwin32: Delete. * i386/xm-cygwin: New file, renamed from xm-cygwin32. Use newly renamed cygwin_ funcs for path translations. * i386/win32.h: Define __CYGWIN__ when -mcygwin given. * i386/winnt.c: Remove "32" from comment about cygwin. * i386/mingw32.h: Fix references to cygwin32.h in light of above. * rs6000/cygwin32.h: Delete. * rs6000/cygwin.h: New file, renamed from cygwin32.h. Add -D__CYGWIN__ to CPP_PREDEFINES. * rs6000/x-cygwin32: Delete. * rs6000/x-cygwin: New file, renamed from x-cygwin32. * rs6000/xm-cygwin32: Delete. * rs6000/xm-cygwin: New file, renamed from xm-cygwin32. * configure.in: Check for cygwin* instead of cygwin32. Account for the rename of cygwin-related config files to lose the "32"s. * configure: Regenerate. * cccp.c, collect2.c, gcc.c, getpwd.c, libgcc2.c, protoize.c, toplev.c: Change all refs to __CYGWIN32__ to __CYGWIN__. Wed Nov 11 12:25:19 1998 Tom Tromey * Makefile.in (JAVAGC): New macro. * configure: Rebuilt. * configure.in: Recognize --enable-java-gc argument. Subst `JAVAGC' variable. Thu Nov 12 03:32:16 1998 J"orn Rennecke Handle equivalences that have been obscured by gcse: * reload1.c (reload): Handle equivalences set up in multiple places. * local-alloc.c (reg_equiv_init_insns): New variable. (no_equiv): New function. (update_equiv_regs): Handle equivalences set up in multiple places. Don't ignore an insn just because its destination is likely to be spilled. Wed Nov 11 13:46:13 1998 Jim Wilson * except.c (expand_eh_return): Readd force_operand call lost in Sept 15 change. Tue Nov 10 17:04:11 1998 David Edelsohn * rs6000.h (LEGITIMIZE_ADDRESS): Add missing goto on last case. 1998-11-09 Andreas Schwab * dbxout.c: Check HAVE_STAB_H instead of HAVE_STABS_H. Mon Nov 9 20:15:19 1998 Bernd Schmidt * regmove.c (regmove_optimize): Fix error in last change. Mon Nov 9 16:37:52 1998 Andrew Cagney * mips.c (function_prologue): When TARGET_MIPS16, adjust the register offset in the .mask pseudo to compensate for frame pointer adjustments. (mips16_fp_args, build_mips16_call_stub): For little endian, do not word swap arguments moved to/from FP registers. * mips16.S (DFREVCMP): Reverse arguments to OPCODE. Mon Nov 9 09:47:06 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Mon Nov 9 02:14:14 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Mon Nov 9 03:06:24 1998 Jeffrey A Law (law@cygnus.com) * reload1.c (delete_output_reload_insn): If a pseudo is set multiple times, then it can not be completely replaced. Mon Nov 9 00:39:02 1998 Richard Henderson * alpha.md (call, call_value) [OSF]: Correct alt 3 insn length. Sun Nov 8 17:50:30 1998 Kaveh R. Ghazi * gansidecl.h: Prepend a "G" to the macro wrapping this file (to distinguish it from the macro wrapping ansidecl.h.) Include libiberty's ansidecl.h. Remove all redundant definitions. Define the PROTO() style macros in terms of the PARAMS() ones. * calls.c (emit_library_call): Switch on ANSI_PROTOTYPES, not __STDC__, when deciding whether to use ANSI variable args. (emit_library_call_value): Likewise. * cccp.c (error): Likewise. (warning): Likewise. (error_with_line): Likewise. (warning_with_line): Likewise. (pedwarn): Likewise. (pedwarn_with_line): Likewise. (pedwarn_with_file_and_line): Likewise. (fatal): Likewise. * cexp.y (error): Likewise. (pedwarn): Likewise. (warning): Likewise. * collect2.c (fatal_perror): Likewise. (fatal): Likewise. (error): Likewise. * combine.c (gen_rtx_combine): Likewise. * cpperror.c (cpp_message): Likewise. (cpp_fatal): Likewise. * cpplib.c (cpp_error): Likewise. (cpp_warning): Likewise. (cpp_pedwarn): Likewise. (cpp_error_with_line): Likewise. (cpp_warning_with_line): Likewise. (cpp_pedwarn_with_line): Likewise. (cpp_pedwarn_with_file_and_line): Likewise. * cpplib.h: Don't define PARAMS() macro. * demangle.h: Likewise. * doprint.c (checkit): Switch on ANSI_PROTOTYPES, not __STDC__, when deciding whether to use ANSI variable args. * emit-rtl.c (gen_rtx): Likewise. (gen_rtvec): Likewise. * final.c (asm_fprintf): Likewise. * fix-header.c (cpp_message): Likewise. (fatal): Likewise. (cpp_fatal): Likewise. * gcc.c (concat): Likewise. (fatal): Likewise. (error): Likewise. * genattr.c (fatal): Likewise. * genattrtab.c (attr_rtx): Likewise. (attr_printf): Likewise. (fatal): Likewise. * gencodes.c (fatal): Likewise. * genconfig.c (fatal): Likewise. * genemit.c (fatal): Likewise. * genextract.c (fatal): Likewise. * genflags.c (fatal): Likewise. * genopinit.c (fatal): Likewise. * genoutput.c (fatal): Likewise. (error): Likewise. * genpeep.c (fatal): Likewise. * genrecog.c (fatal): Likewise. * halfpic.h: Switch on ANSI_PROTOTYPES, not __STDC__, when deciding whether to declare `tree_node' and `rtx_def'. * hash.h: Don't define stuff we get from gansidecl.h. * mips-tfile.c: Likewise. Define __proto() in terms of PARAMS(). (fatal): Switch on ANSI_PROTOTYPES, not __STDC__, when deciding whether to use ANSI variable args. (error): Likewise. * prefix.c (concat): Likewise. * scan.h: Likewise. * system.h: Likewise. * toplev.c (error_with_file_and_line): Likewise. (error_with_decl): Likewise. (error_for_asm): Likewise. (error): Likewise. (fatal): Likewise. (warning_with_file_and_line): Likewise. (warning_with_decl): Likewise. (warning_for_asm): Likewise. (warning): Likewise. (pedwarn): Likewise. (pedwarn_with_decl): Likewise. (pedwarn_with_file_and_line): Likewise. (sorry): Likewise. (really_sorry): Likewise. * toplev.h: Switch on ANSI_PROTOTYPES, not __STDC__, when deciding whether to declare `tree_node' and `rtx_def'. * tree.c (build): Switch on ANSI_PROTOTYPES, not __STDC__, when deciding whether to use ANSI variable args. (build_nt): Likewise. (build_parse_node): Likewise. Sun Nov 8 13:10:55 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Sat Nov 7 23:34:01 1998 Kaveh R. Ghazi * Makefile.in (libcpp.a): Check RANLIB_TEST before runing RANLIB. Sat Nov 7 22:26:19 1998 David Edelsohn * collect2.c (main, case 'b'): Use else if. Sat Nov 7 15:35:25 1998 Kaveh R. Ghazi * configure.in (host_xm_file, build_xm_file, xm_file, tm_file): Arrange to include gansidecl.h in {ht}config.h & tm.h just before the config/ directory headers. (tm_file_list, host_xm_file_list, build_xm_file_list): Handle gansidecl.h in the list of dependencies. * Makefile.in (RTL_BASE_H): Don't depend on gansidecl.h. (TREE_H, DEMANGLE_H, RECOG_H, REGS_H, libgcc2.a, stmp-multilib, mbchar.o, collect2.o, pexecute.o, vfprintf.o, splay-tree.o, gcc.o, gencheck.o, choose-temp.o, mkstemp.o, mkstemp.o, prefix.o, dyn-string.o, cexp.o, cccp.o, cppmain.o, cpplib.o, cpperror.o, cppexp.o, cppfiles.o, cpphash.o, cppalloc.o, scan-decls.o): Likewise. * cccp.c: Don't include gansidecl.h. * cexp.y: Likewise. * collect2.c: Likewise. * config/c4x/c4x.c: Likewise. * config/v850/v850.h: Likewise. * cppalloc.c: Likewise. * cpperror.c: Likewise. * cppexp.c: Likewise. * cppfiles.c: Likewise. * cpphash.c: Likewise. * cpplib.c: Likewise. * cppmain.c: Likewise. * cppulp.c: Likewise. * demangle.h: Likewise. * doprint.c: Likewise. * dyn-string.c: Likewise. * eh-common.h: Likewise. * fix-header.c: Likewise. * frame.c: Likewise. * gcc.c: Likewise. * gcov.c: Likewise. * gen-protos.c: Likewise. * gencheck.c: Likewise. * halfpic.h: Likewise. * hash.c: Likewise. * machmode.h: Likewise. * mbchar.c: Likewise. * prefix.c: Likewise. * protoize.c: Likewise. * recog.h: Likewise. * rtl.h: Likewise. * scan-decls.c: Likewise. * tree.h: Likewise. * varray.h: Likewise. Sat Nov 7 11:37:53 1998 Richard Henderson * i386.md (call_value_pop): If we're not popping anything, defer to call_value. (call_pop): Likewise defer to call. Sat Nov 7 02:49:56 1998 Richard Henderson * function.c (purge_addressof): Clear purge_addressof_replacements only after processing the whole function. Sat Nov 7 00:54:55 1998 Jeffrey A Law (law@cygnus.com) * reload1.c (reload): If we can not perform a particular elimination when we thought we could earlier, then we must always iterate through the loop at least one more time. Fri Nov 6 19:37:33 1998 Richard Henderson * alpha.c (add_operand): Simplify the CONST_INT match. (sext_add_operand): Correct typo in comparison by using CONST_OK_FOR_LETTER_P. * alpha.md (s?addq): Use sext_add_operand to allow the negative constant alternatives to be generated. (mulsi3, muldi3, umuldi3_highpart): Loosen constraints to allow small constants, since the hw instructions do. Fri Nov 6 20:15:19 1998 Bernd Schmidt * reload1.c (emit_reload_insns): When rewriting the SET_DEST of a previous insn to store directly into our reload register, make sure that if the source of the previous insn is a reload register, its spill_reg_store and spill_reg_stored_to values are cleared. Fri Nov 6 16:35:10 1998 David Edelsohn * rs6000.md (floatunssidf2_internal splitter): Use base register operand, not hard-coded SP. Fri Nov 6 04:07:53 1998 David S. Miller * jump.c (calculate_can_reach_end): Fix thinko. Fri Nov 6 00:16:04 1998 Jeffrey A Law (law@cygnus.com) * reorg.c (fill_simple_delay_slots): Fix typo. * romp.h (LEGITIMIZE_ADDRESS): Fix typo. Fri Nov 6 00:10:00 1998 Jan Hubicka (hubicka@freesoft.cz) * i386.md (extendsidi2): Use # in the output template. (extendsidi splitters): New splitters. Thu Nov 5 11:13:27 1998 Nick Clifton * configure.in: Use unknown-elf.h as tm_file for arm-elf configurations. * configure: Regenerate. Thu Nov 5 07:59:05 1998 David S. Miller * jump.c (init_label_info, delete_barrier_successors, mark_all_labels, delete_unreferenced_labels, delete_noop_moves, calculate_can_reach_end): New functions broken out of jump_optimize. (jump_optimize): Use them. Thu Nov 5 07:57:45 1998 Andrew MacLeod * except.c (expand_fixup_region_end): Make sure outer context labels are not issued in an inner context during cleanups. Thu Nov 5 04:03:06 1998 Richard Henderson * alpha.md (addsi3, subsi3): No new temporaries once cse is no longer expected. Thu Nov 5 03:29:19 1998 Richard Henderson * alpha.md (addsi3, subsi3): Expand to a DImode temporary so as to expose this midpoint to CSE. Thu Nov 5 03:42:54 1998 David S. Miller * config/sparc/sparc.md (movdf_const_intreg_sp64): Enable again. Thu Nov 5 10:53:01 1998 Andreas Schwab * configure.in: Bring over gcc2 change of Nov 19 1997. Wed Nov 4 23:43:08 1998 Graham * toplev.c (output_lang_identify): Make definition dependent on ASM_IDENTIFY_LANGUAGE. * print-rtl.c (spaces): Make static. Wed Nov 4 22:16:36 1998 Hans-Peter Nilsson * extend.texi: Clarify proper uses for register clobbers in asms. Wed Nov 4 22:16:36 1998 Bernd Schmidt * recog.h (enum op_type): Define. (constrain_operands): Adjust prototype. (recog_op_type): Declare new variable. * recog.c (recog_op_type): New variable. (insn_invalid_p): Allow modifying an asm statement after reload. (extract_insn): Set up recog_op_type. (constrain_operands): Lose INSN_CODE_NUM arg. All callers changed. Don't compute operand types, use recog_op_type. Use the information computed by extract_insn instead of the previous method of finding it by insn code number. * caller-save.c (init_caller_save): Use extract_insn, not insn_extract. * reorg.c (fill_slots_from_thread): Likewise. * reload1.c (reload_as_needed): Likewise. (gen_reload): Likewise. (inc_for_reload): Likewise. (reload_cse_simplify_operands): Likewise. Use the information computed by extract_insn instead of the previous method of finding it by insn code number. * genattrtab.c (write_attr_case): Generate call to extract_insn, not insn_extract. * final.c (final_scan_insn): Use extract_insn, not insn_extract. (cleanup_operand_subregs): Use extract_insn, not insn_extract. Use the information computed by extract_insn instead of the previous method of finding it by insn code number. * regmove.c (find_matches): Likewise. Change meaning of the return value to be nonzero if the optimization can be performed, zero if not. All callers changed. Shorten some variable names to fix formatting problems. (regmove_optimize): Shorten some variable names to fix formatting problems. Use the information computed by extract_insn instead of the previous method of finding it by insn code number. * regclass.c (scan_one_insn): Likewise. (record_reg_classes): Don't compute operand types, use recog_op_type. * reload.c (find_reloads): Lose CONSTRAINTS1 variable; use recog_constraints instead. Wed Nov 4 21:37:46 1998 Jeffrey A Law (law@cygnus.com) * rtl.h (flow2_completed): Declare. * flow.c (flow2_completed): Definition. * toplev.c (rest_of_compilation): Set and clear flow2_completed as necessary. Wed Nov 4 19:15:37 1998 Melissa O'Neill * Makefile.in (libcpp.a): Ranlib libcpp.a. * cppulp.c (user_label_prefix): Initialize. Wed Nov 4 19:07:08 1998 John Wehle (john@feith.com) * flow.c (mark_regs_live_at_end): Mark the stack pointer as live at a RETURN if current_function_sp_is_unchanging is set. Wed Nov 4 18:16:29 1998 Herman A.J. ten Brugge * emit-rtl.c (try_split): Fixed error in Oct 10 patch. Wed Nov 4 15:11:15 1998 Geoffrey Noer * i386/cygwin32.h (MASK_WIN32, MASK_CYGWIN, MASK_WINDOWS, MASK_DLL, TARGET_WIN32, TARGET_CYGWIN, TARGET_WINDOWS, TARGET_DLL): New. (SUBTARGET_SWITCHES): Add -mno-cygwin, -mcygwin, and -mdll options. (CPP_PREDEFINES): Don't define __CYGWIN32__ here. (STARTFILE_SPEC): Handle -mdll, -mno-cygwin options. (CPP_SPEC): Handle -mno-cygwin option. Define __CYWIN__ in addition to __CYGWIN32__. (LIB_SPEC): Handle -mno-cygwin option. (LINK_SPEC): Handle -mdll. Wed Nov 4 22:56:14 1998 J"orn Rennecke * reload.c (find_reloads): Fix test for usage by other reload to handle secondary reloads properly. Wed Nov 4 17:25:10 1998 Kaveh R. Ghazi * reload1.c (ELIMINABLE_REGS, NUM_ELIMINABLE_REGS): Introduce an intermediate structure which has exactly the members provided by ELIMINABLE_REGS. Define NUM_ELIMINABLE_REGS in terms of the static intermediate structure. (init_elim_table): Xmalloc() `reg_eliminate', and initialize it from the intermediate structure. Do the same analogous fix in the case where ELIMINABLE_REGS is not defined. Tue Nov 3 20:50:03 1998 Jeffrey A Law (law@cygnus.com) * pa.h (SELECT_SECTION): Fix thinko. Tue Nov 3 17:51:36 1998 Jim Wilson * dwarf2out.c (output_call_frame_info): Comments on last change. Tue Nov 3 07:51:43 1998 Richard Earnshaw (rearnsha@arm.com) * arm.c (add_constant): When taking the address of an item in the pool, get the mode of the item addressed. * arm.c (final_prescan_insn case INSN): If an insn doesn't contain a SET or a PARALLEL, don't consider it for conditional execution. Restore ABI compatibility for NetBSD. * arm/netbsd.h (DEFAULT_PCC_STRUCT_RETURN): Override setting in arm.h. (RETURN_IN_MEMORY): Likewise. Mon Nov 2 11:46:17 1998 Doug Evans * m32r/m32r.c (m32r_expand_block_move): Fix byte count computations. (m32r_output_block_move): Rewrite bytes < 4 handling. Mon Nov 2 10:10:35 1998 Kaveh R. Ghazi * configure.in: Call AC_FUNC_VFORK. * collect2.c: Define VFORK_STRING as a printable string for error messages (either "vfork" or "fork".) If HAVE_VFORK_H is defined, include vfork.h. If VMS is defined, define vfork() appropriately. Remove vfork check on USG, we're using autoconf. (collect_execute): Pass VFORK_STRING to fatal_perror instead of checking locally what string to pass. (scan_prog_file): Likewise. (scan_libraries): Likewise. * gcc.c: Remove vfork check on USG, we're using autoconf. Besides, no calls to vfork/fork occur in this file. * protoize.c: Likewise. Mon Nov 2 07:52:28 1998 Alexandre Oliva * configure.in (DEFAULT_LINKER): Renamed from LD. (DEFAULT_ASSEMBLER): Renamed from AS; reverted Schwab's patch. (gcc_cv_as): Try $DEFAULT_ASSEMBLER before $AS. * configure: Rebuilt. Mon Nov 2 01:48:10 1998 Alexandre Oliva * BUGS: Fix the regexp for `more' to find the appropriate node. Reported by Joerg Pietschmann * BUGS: Added link to the WWW FAQ. Sun Nov 1 18:27:15 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Sun Nov 1 11:04:32 1998 Jeffrey A Law (law@cygnus.com) * From Christian Gafton: * i386/linux.h (CPP_PREDEFINES): Add -D__i386__. * sparc/linux.h (CPP_PREDEFINES): Add -D__sparc__. * sparc/linux64.h (CPP_PREDEFINES): Add -D__sparc__. Sat Oct 31 21:42:39 1998 Mark Mitchell * c-common.c (c_get_alias_set): Allow all type-punning through unions. Don't get confused about the type of a bit-field, despite the antics of build_modify_expr. Sat Oct 31 22:35:29 1998 Jean-Pierre Radley * fixinc.sco: Parameterize #include_next values. * fixinc/fixinc.sco: Likewise. Sat Oct 31 20:39:35 1998 Jeffrey A Law (law@cygnus.com) * toplev.c (rest_of_compilation): No longer set reload_completed. * reload1.c (reload): Set it here. Perform instruction splitting after reload has completed if we will be running the scheduler again. Sat Oct 31 12:30:02 1998 Jeffrey A Law (law@cygnus.com) * jump.c (jump_optimize): Initialize mappings from INSN_UID to EH region if exceptions are enabled and we're performing cross jump optimizations. (find_cross_jump): Exit loop if the insns are in different EH regions. Sat Oct 31 10:02:48 1998 Mark Mitchell * dwarf2out.c (output_call_frame_info): Use ASM_OUTPUT_DWARF_DELTA4 for the CIE offset to match frame.c. Sat Oct 31 10:23:14 1998 Kaveh R. Ghazi Reinstall Apr 24th fix, lost during May 6th gcc2 merge: * c-common.c (check_format_info): Don't check for the 'x' format character twice, instead check for 'x' and 'X' Fri Oct 30 14:50:25 1998 Jeffrey A Law (law@cygnus.com) * configure.in (assembler features): Also make gas is configured if we find it in the source tree. Fri Oct 30 13:23:20 1998 Richard Henderson * i386.c (i386_comp_type_attributes): Compare whether the attributes are defined, not their tree nodes. Fri Oct 30 11:39:47 1998 Alexandre Oliva * configure.in (gxx_include_dir): Bitten by autoconf quoting characters. :-( * configure: Rebuilt. Fri Oct 30 10:43:29 1998 Andreas Schwab * configure.in: Ignore non-absolute value in $AS. Fri Oct 30 00:54:25 1998 Peter Jakubek * m68k.h (INDIRECTABLE_1_ADDRESS_P): Fix thinko. Fri Oct 30 00:42:34 1998 Mark Elbrecht * configure.in (msdosdjgpp): Set exeext and target_alias. Thu Oct 29 23:55:43 1998 Bernd Schmidt * flow.c (XNMALLOC): New macro. (flow_int_list_blocks, basic_block_succ, basic_block_pred): New static variables. (add_edge, add_edge_to_label): New static functions. (free_bb_memory): New function. (flow_delete_insn): Delete function. (basic_block_drops_in): Delete variable. (find_basic_blocks): Allocate and initialize basic_block_head, basic_block_succ. Don't allocate basic_block_drops_in. Call free_bb_memory at the beginning. (find_basic_blocks_1): Don't do multiple passes. Delete code to compute basic_block_drops_in. After calling make_edges, mark blocks reached by current block live. Update test for unreachable live blocks. (mark_label_ref): Delete args X, CHECKDUP. Add PRED arg. All callers changed. Simplify to call add_edge_to_label when a LABEL_REF is found. (make_edges): Simplify to call add_edge_to_label instead of mark_label_ref most of the time. Compute here whether control drops into the next block. (delete_unreachable_blocks): Return void. All callers changed. Delete unreachable blocks in reverse order. After deleting all unreachable blocks, renumber the remaining ones and update n_basic_blocks. (delete_block): Speed up deletion a bit. Don't set basic_block_drops_in for deleted blocks. (free_basic_block_vars): Don't free basic_block_drops_in. (life_analysis_1): Update to use new edge representation. (dump_flow_info): Delete code to print basic block info; call dump_bb_data instead. (compute_preds_succs): Delete code to recompute basic_block_drops_in and uid_block_number. Simply copy the previously computed cfg. (dump_bb_data): New arg LIVE_INFO. All callers changed. Print register lifetime information if LIVE_INFO is nonzero. * basic-block.h (dump_bb_data): Adjust prototype. * gcse.c (gcse_main): Update call to dump_bb_data. * rtl.h (free_bb_memory): Declare. * toplev.c (rest_of_compilation): Call free_bb_memory. * reload1.c (struct elim_table): Delete MAX_OFFSET member. (update_eliminable_offsets): Don't compute it. (set_initial_elim_offsets): Don't initialize it. Break out some code into set_initial_label_offsets so the rest of this function can be called from reload_as_needed. Assume that INITIAL_FRAME_POINTER_OFFSET is defined when ELIMINABLE_REGS isn't. (set_initial_label_offsets): New function, broken out of set_initial_elim_offsets. (set_offsets_for_label): New function, broken out of set_label_offsets and reload_as_needed. (reload): Call the two new functions. (reload_as_needed): Call set_initial_elim_offsets instead of duplicating the code. Likewise for set_offsets_for_label. * reload1.c (choose_reload_regs): Fix typo in Oct 17 change. (emit_reload_insns): Ensure that when we set reg_reloaded_valid for any hard reg, reg_reloaded_dead contains valid data. Thu Oct 29 22:30:54 1998 Marcus Meissner * i386.c (i386_comp_type_attributes): Return nonzero for mismatched "stdcall" and "cdecl" attributes. Thu Oct 29 19:05:17 1998 Jim Wilson * sched.c (update_flow_info): Add code to ! found_orig_dest case to handle deleted no-op moves of hard registers. * haifa-sched.c (update_flow_info): Likewise. Thu Oct 29 18:07:47 1998 Jeffrey A Law (law@cygnus.com) * mips.md (reload_{in,out}{si,di}): Emit a USE of HILO at the end of the sequences to reload the HILO register which do not actually reference HILO. Thu Oct 29 12:39:35 1998 Jim Wilson * c-common.c (c_get_alias_set): Handle ARRAY_REF of union field. Thu Oct 29 14:10:22 1998 Andrew MacLeod * except.c (emit_eh_context): Make the EH context register stay alive at -O0 so stupid.c doesn't get confused. 1998-10-29 Herman A.J. ten Brugge * emit-rtl.c (try_split): Do not try to split a BARRIER. Thu Oct 29 01:33:54 1998 Jan Hubicka Jeffrey A Law (law@cygnus.com) * i386.md: Change ix86_cpu == PROCESSOR_PENTIUM to TARGET_PENTIUM. (zero_extendsidi2): Use # in output template and handle completely by splits. (zero_extend splitters): New define_splits. (ashiftrt_32): New pattern. Wed Oct 28 22:58:35 1998 Jason Merrill * tree.c (append_random_chars): New fn. (get_file_function_name_long): Use it. Wed Oct 28 22:27:05 1998 Richard Henderson * Makefile.in (cc1): Put C_OBJS, and thence @extra_c_objs@ last. (LIBCPP_OBJS): New. Add cppulp.o. (cppmain, fix-header): Depend on and use libcpp.a. * configure.in (extra_c_objs, extra_cxx_objs): Use libcpp.a instead of the individual object files. * objc/Make-lang.in (cc1obj): Put OBJC_OBJS, and thence @extra_c_objs@, last. * cccp.c (user_label_prefix): New. (main): Set it off -f*leading-underscore. (special_symbol): Use it. * cpplib.c (special_symbol): Likewise. (cpp_handle_option): Handle -f*leading-underscore. * cppulp.c: New file. * output.h (user_label_prefix): Declare it. * dwarf2out.c (ASM_NAME_TO_STRING): Prepend user_label_prefix. * toplev.c (f_options, main): Handle -f*leading-underscore. * defaults.h (ASM_OUTPUT_LABELREF): Use asm_fprintf instead of referencing USER_LABEL_PREFIX directly. * config/nextstep.h (ASM_OUTPUT_LABELREF): Likewise. * m32r/m32r.h (ASM_OUTPUT_LABELREF): Likewise. * final.c (asm_fprintf): Use user_label_prefix instead. * arm/thumb.c (thumb_print_operand): Likewise. * gcc.c (default_compilers): Pass -f*leading-underscore on to cpp wherever appropriate. Wed Oct 28 23:09:25 1998 Robert Lipe * sco5.h (SUBTARGET_SWITCHES): Add documentation for OpenServer- specific compiler switches. Wed Oct 28 21:05:53 1998 Jeffrey A Law (law@cygnus.com) * Makefile.in (c-common.o): Depend on c-pragma.h. Use $(RTL_H) instead of rtl.h. Wed Oct 28 20:52:47 1998 Kaveh R. Ghazi * gcc.c (EXTRA_SPECS, extra_specs): Introduce an intermediate structure which has exactly the members provided by EXTRA_SPECS. Xmalloc() the real `extra_specs', and initialize it from this intermediate structure. * alpha.h (EXTRA_SPECS): Revert change for missing initializers. * mips.h (EXTRA_SPECS): Likewise. * sparc.h (EXTRA_SPECS): Likewise. Wed Oct 28 16:46:07 1998 Andreas Schwab * function.c (purge_addressof_1): Instead of aborting when a bitfield insertion as a replacement for (MEM (ADDRESSOF)) does not work just put the ADDRESSOF on stack. Otherwise remember all such successful replacements, so that exactly the same replacements can be made on the REG_NOTEs. Remove the special case for CALL insns again. (purge_addressof_replacements): New variable. (purge_addressof): Clear it at end. 1998-10-28 Zack Weinberg * c-lang.c: Declare extern char *yy_cur if USE_CPPLIB. (lang_init): Call check_newline always. * c-lex.c (init_parse) [USE_CPPLIB=1]: After calling cpp_start_read, set yy_cur and yy_lim to read from parse_in.token_buffer, so that we'll see the first #line directive. * cpplib.c (cpp_start_read): finclude the main input file before processing -include/-imacros. Process -imacros and -include separately, and handle -include by stacking a buffer for the file in question as if it'd been #included. * toplev.c (documented_lang_options): Recognize -H when USE_CPPLIB is on. 1998-10-28 Zack Weinberg * cpplib.c: Merge do_once into do_pragma. Break file handling code out of do_include. Move append_include_chain, deps_output, file_cleanup, redundant_include_p, import_hash, lookup_import, add_import, read_filename_string, read_name_map, open_include_file, finclude, safe_read to cppfiles.c. Move prototypes for deps_output, append_include_chain, finclude to cpplib.h. Move definition of struct file_name_list there also. * cppfiles.c: New file. Contains all the above functions broken out of cpplib.c; also hack_vms_include_specification from cccp.c and find_include_file, a new function broken out of do_include. * Makefile.in (cppmain): Depend on cppfiles.o. (fix-header): Likewise. (cppfiles.o): New target. * configure.in (--enable-c-cpplib): Add cppfiles.o to extra_c_objs. Add ../cppfiles.o to extra_cxx_objs. Wed Oct 28 14:06:49 1998 Jim Wilson * dwarfout.c (dwarfout_file_scope_decl): If DECL_CONTEXT, don't abort if pending_types is nonzero. (dwarfout_finish): Verify pending_types is zero before finishing. Wed Oct 28 10:29:09 1998 Nick Clifton * expr.c (convert_move): Use shifts to perform the move if a suitable extend pattern cannot be found. Code written by Richard Henderson . Wed Oct 28 03:59:29 1998 Bernd Schmidt * regclass.c (renumber, regno_allocated): New static variables, moved out of allocate_reg_info. (allocate_reg_info): Move these two variables outside the function. Move code to free memory into new function free_reg_info. (free_reg_info): New function, broken out of allocate_reg_info. * toplev.c (compile_file): Call free_reg_info, not allocate_reg_info. * rtl.h (allocate_reg_info): Don't declare. (free_reg_info): Declare. * final.c (cleanup_subreg_operands): ASM_INPUTs need no treatment. Wed Oct 28 02:38:12 1998 Jason Merrill * toplev.c (compile_file): Temporarily revert last change. Wed Oct 28 00:00:35 1998 Jason Merrill * c-typeck.c (convert_for_assignment): Parenthesize. 1998-10-28 Andreas Schwab * reload1.c (delete_output_reload): Avoid ambigous else. Wed Oct 28 00:10:35 1998 Jeffrey A Law (law@cygnus.com) * toplev.c (compile_file): Call allocate_reg_info to free register table memory. * rtl.h (allocate_reg_info): Declare. * PROJECTS: Remove entry for local spilling. * final.c (cleanup_subreg_operands): New function. (final_scan_insn): Use it. (alter_subreg): Clear the "used" field when we turn a SUBREG into a REG. * reload1.c (reload): Delete CLOBBER insns and also cleanup SUBREG operands when reload has finished. * reload.h (cleanup_subreg_operands): Declare.. * flow.c (life_analysis_1): No longer delete CLOBBER insns after reload. Handled in reload itself. Tue Oct 27 23:32:34 1998 Bernd Schmidt * reload1.c (verify_initial_offsets): New function. (reload): Call it after reload_as_needed. Also verify that the frame size stays constant during reload_as_needed. * i386.h (CONST_DOUBLE_OK_FOR_LETTER_P): Undo Jul 26 change. * reload.h (struct insn_chain): Add need_operand_change element. * reload1.c (new_insn_chain): Clear it. (calculate_needs_all_insns): Set it; don't overload need_reload. (reload_as_needed): Use it. * reload.c (find_reloads_address): Use BASE_REG_CLASS instead of reload_address_base_reg_class throughout. Similar for INDEX_REG_CLASS and reload_address_index_reg_class. (find_reloads_address_1): Likewise. * reload.h (reload_address_base_reg_class, reload_address_index_reg_class): Don't declare. * reload1.c (reg_old_renumber, pseudo_previous_regs, pseudo_forbidden_regs, bad_spill_regs_global): New static variables. (used_spill_regs): Now static. (reload_address_base_reg_class, reload_address_index_reg_class, regs_explicitly_used, counted_for_groups, counted_for_nongroups, basic_block_needs, max_needs, group_size, group_mode, max_groups, max_nongroups, max_needs_insn, max_groups_insn, max_nongroups_insn, forbidden_regs): Deleted variables. (init_reload): Delete code to compute base/index reg classes. (reload): Delete variable J. Delete code to manage basic_block_needs. Don't compute regs_explicitly_used. Allocate, initialize and free reg_old_renumber, pseudo_forbidden_regs, pseudo_previous_regs. Initialize bad_spill_regs_global. Don't call order_regs_for_reload here. Don't initialize spill_reg_order and n_spills. Don't forbid explicitly used regs to be used for spill regs. Change main loop to infinite loop, with explicit break statements. Make SOMETHING_CHANGED variable local to that loop. Don't initialize max_needs, max_groups, max_nongroups, max_needs_insn, max_groups_insn, max_nongroups_insn, group_size, group_mode. Make sure spilled_pseudos is cleared before calling spill_hard_reg or new_spill_reg. Don't call dump_needs. Delete code to reset potential_reload_regs. Delete code to terminate loop conditional on the global needs variables showing no further needs. (calculate_needs_all_insns): Return void. All callers changed. Initialize something_needs_elimination here, not in reload. Delete avoid_return_reg kludge. (calculate_needs): Lose AVOID_RETURN_REG and GLOBAL args, return void. All callers changed. Initialize the group_mode and group_size elements of the arg CHAIN. Delete code to manage basic_block_needs. Operate on elements of CHAIN instead of global variables. Delete avoid_return_reg kludge. (find_tworeg_group): Lose GLOBAL arg, take CHAIN arg, return void. All callers changed. Operate on elements of CHAIN instead of global variables. Delete special SMALL_REGISTER_CLASSES code. Delete spill_failure code; now in new_spill_reg. (find_group): Lose GLOBAL arg, take CHAIN arg, return void. All callers changed. Operate on elements of CHAIN instead of global variables. (maybe_mark_pseudo_spilled): New static function. (find_reload_regs): Lose GLOBAL arg, take CHAIN arg, return void. All callers changed. Operate on elements of CHAIN instead of global variables. Call order_regs_for_reload here, not in reload. Initialize spill_reg_order and n_spills. Simplify test whether an asm insn is involved. Delete spill_failure code; now in new_spill_reg. Call maybe_mark_pseudo_spilled for everything marked as live in CHAIN. Merge CHAIN's used_spill_regs into the global variable used_spill_regs. (dump_needs): Take CHAIN arg. No longer static, to prevent the compiler from optimizing this function (now unused) away. Operate on elements of CHAIN instead of global variables. (possible_group_p): Lose MAX_GROUPS arg, take CHAIN arg. All callers changed. Operate on elements of CHAIN instead of global variables. (count_possible_groups): Lose GROUP_SIZE, GROUP_MODE, MAX_GROUPS args, take CHAIN arg. All callers changed. Operate on elements of CHAIN instead of global variables. (new_spill_reg): Lose MAX_NEEDS, MAX_NONGROUPS, GLOBAL args, take CHAIN, NONGROUP args. Return void. All callers changed. Verify caller isn't trying to spill a pseudo. Simplify test for illegal reg, just use bad_spill_regs. Generate better error messages. Operate on elements of CHAIN instead of global variables. Mark spilled register in CHAIN's used_spill_regs element. Don't call spill_hard_reg. (spill_hard_reg): Lose GLOBAL arg, return void. All callers changed. Mark spilled hard regs in bad_spill_regs_global. Mark affected pseudos in spilled_pseudos, but don't spill them. (ior_hard_reg_set): New static function. (finish_spills): Return int. All callers changed. Compute spill_reg_order, n_spills and spill_regs here. Also update regs_ever_live for regs used as spills. For every pseudo in spilled_pseudos, spill it and mark the previous hard reg it had in pseudo_previous_regs. Compute which hard regs are used as spills in insns during which it is live, and retry global register allocation. Update all life information in the reload_insn_chain not to include pseudos without hard regs. Call alter_reg for all affected speudos. (scan_paradoxical_subregs): Disable SMALL_REGISTER_CLASSES special case, it's not clear what it's supposed to do. (hard_reg_use_compare): Take bad_spill_regs into account. (pseudos_counted): New static variable. (count_pseudo): New static function. (order_regs_for_reload): Take CHAIN arg. All callers changed. Initialize bad_spill_regs from bad_spill_regs_global, then merge any hard registers explicitly used across the current insn into the set. Compute hard_reg_n_uses taking only pseudos live across this insn into account. Tweak sorting of potential_reload_regs. (compare_spill_regs): Delete function. (reload_as_needed): Don't sort the spill_regs array, it's computed in proper order in finish_spills. Delete avoid_return_reg kludge. Delete code to manage basic_block_needs. (allocate_reload_reg): Minor speed/readability tweaks. Operate on elements of CHAIN instead of global variables. (choose_reload_regs): Lose AVOID_RETURN_REG arg. All callers changed. Delete avoid_return_reg kludge. Initialize reload_reg_used from CHAIN's used_spill_regs element. Delete unused label FAIL. (reload_combine): Replace reload_address_index_reg_class with INDEX_REGS. Don't use used_spill_regs to determine information about lifetime of hard regs. Tue Oct 27 13:15:02 1998 Nick Clifton * toplev.c (display_help): Ignore empty target specific options, and if -W is also specified on the command line then display undocumented options. * config/arm/arm.c: Updated with changes in devo sources. * config/arm/arm.h: Updated with changes in devo sources. * config/arm/lib1funcs.asm: Updated with changes in devo sources. * config/arm/lib1thumb.asm: Add ELF support. Tue Oct 27 16:11:43 1998 David Edelsohn * collect2.c (aix64_flag): New variable. (main, case 'b'): Parse it. (GCC_CHECK_HDR): Object magic number must match mode. (scan_prog_file): Only check for shared object if valid header. Print debugging if header/mode mismatch. Tue Oct 27 10:15:02 1998 Nick Clifton Added support for arm-elf-linux configuration, submitted by Philip Blundell , and integrated this with the arm-elf code developed by Catherine Moore . The following files are affected: * configure.in: Add arm-*-linux-gnu, armv2-*-linux and arm-*-elf targets. * configure: Regenerated. * config/arm/aout.h: Add default definitions of REGISTER_PREFIX, USER_LABEL_PREFIX and LOCAL_LABEL_PREFIX. Make other macro definitions conditional on their not having been already defined. * config/arm/lin1funcs.asm: Add ELF only macros to generate .size and .type directives, and add "(PLT)" qualification to function calls. * config/arm/linux.h: Deleted. This file is now superseded by either linux-elf.h or linux-aout.h. * config/arm/linux-gas.h: Define `inhibit_libc' if cross-compiling. (CLEAR_INSN_CACHE): New macro, currently disabled (awaiting kernel support). Move definitions from old linux.h file here. * config/arm/elf.h: New file. Generic ARM/ELF support. * config/arm/linux-aout.h: New file. Support for Linux with a.out. * config/arm/linux-elf.h: New file. Support for Linux with ELF. * config/arm/linux-elf26.h: New file. Support for Linux with ELF using the 26bit APCS. * config/arm/unknown-elf.h: New file. Support for OS'es other than Linux with ELF. * config/arm/t-arm-elf: New file. makefile fragment for arm-elf builds. * config/arm/coff.h: Include aout.h for basic assembler macros. Add support for -mstructure_size_boundary= command line option. * config/arm/arm.h: Add support for -mstructure_size_boundary= command line option. Make macro definitions conditional on their not having been already defined. * config/arm/arm.c: Add support for -mstructure_size_boundary= command line option. Tue Oct 27 08:56:46 1998 Andrew MacLeod * dwarfout.c (ASM_OUTPUT_DWARF_STRING_NEWLINE): ASM_OUTPUT_DWARF_STRING has been changed to not include a newline. Use this macro instead. (output_enumeral_list, const_value_attribute, name_attribute, comp_dir_attribute, prototyped_attribute, producer_attribute, inline_attribute, pure_or_virtual_attribute, output_inheritance_die, dwarfout_file_scope_decl, generate_new_sfname_entry, generate_macinfo_entry, dwarfout_init, dwarfout_finish): Use ASM_OUTPUT_DWARF_STRING_NEWLINE macro. Mon Oct 26 13:35:02 1998 Richard Henderson * combine.c (subst): Process the inputs to a parallel asm_operands only once. Mon Oct 26 13:32:31 1998 Richard Henderson * stmt.c (expand_asm_operands): Accept `=' or `+' at any position. Mon Oct 26 12:53:14 1998 Jeffrey A Law (law@cygnus.com) * tm.texi (ASM_OUTPUT_MAX_SKIP_ALIGN): Document. Mon Oct 26 00:36:58 1998 Jeff Law (law@cygnus.com) * version.c: Bump for snapshot. Sun Oct 25 23:36:52 1998 Jason Merrill * stmt.c (expand_fixup): Set fixup->before_jump to a NOTE_INSN_DELETED instead of a NOTE_INSN_BLOCK_BEG. Sun Oct 25 15:49:57 1998 Kaveh R. Ghazi * Makefile.in (recog.o): Depend on toplev.h. (insn-emit.o): Depend on recog.h. (insn-peep.o): Depend on recog.h and insn-config.h. * combine.c (simplify_set): Remove unused variable `scratches'. * final.c (final_scan_insn): Wrap declaration of variables `vlen' and `idx' in macro conditional controlling their use. * genemit.c (main): Make the generated output file include recog.h. Don't have it declare `insn_operand_constraint', since we get it from recog.h. * genpeep.c (main): Make the generated output file include insn-config.h and recog.h. * recog.c: Include toplev.h. (extract_insn): Remove unused variable `p'. * regclass.c (fix_register): Add missing braces around initializer for `what_option'. (allocate_reg_info): Move variable `i' into the scope where it is used. Change its type to `size_t'. Sun Oct 25 13:10:15 1998 Bernd Schmidt * reload.c (push_reload): When merging reloads, make sure that reload_in_reg and reload_in are from the same reload in all cases. Sun Oct 25 12:07:00 1998 Mumit Khan * i386/crtdll.h (CPP_PREDEFINES): Fix typo. * i386/mingw32.h (CPP_PREDEFINES): Likewise. Fri Oct 23 23:42:03 1998 David Edelsohn * loop.c (loop_has_tablejump): New variable. (prescan_loop): Scan for it. (insert_bct): Replace explicit scan with use of it. * regclass.c (regclass): Restore loop variable j. (record_reg_classes): Deterine op_types modifiers and initialize classes[i] before matching constraints. Handle matching constraints 5-9. Fri Oct 23 13:55:48 1998 Jim Wilson * m32r/m32r.c (gen_split_move_double): Call alter_subreg. Delete subreg support. Fri Oct 23 16:19:24 1998 Kaveh R. Ghazi * mips.h (EXTRA_SPECS): Add missing initializers. Fri Oct 23 16:08:39 1998 Kaveh R. Ghazi * sparc.h (EXTRA_SPECS): Add missing initializers. (sparc_defer_case_vector): Provide a prototype. * svr4.h (ASM_OUTPUT_ASCII): Cast STRING_LIMIT to (long) when comparing it to the result of a pointer subtraction. Fri Oct 23 15:34:14 1998 Kaveh R. Ghazi * alpha.c (override_options): Use ISDIGIT(), not isdigit(). Cast the argument to (unsigned char). * alpha.h (EXTRA_SPECS): Add missing initializers. (ASM_GENERATE_INTERNAL_LABEL): Ensure the argument matches the format specifier. Fri Oct 23 13:12:35 1998 Jeffrey A Law (law@cygnus.com) * flow.c (life_analysis_1): Enable "rescan" code after reload. (propagate_block): Delete dead code after reload. * sched.c (update_flow_info): Revert Oct 19, 1998 change. Brings back Oct 15, 1998 change. * haifa-sched.c (update_flow_info): Likewise. * flow.c (life_analysis_1): Delete CLOBBER insns after reload. * mn10200.md (truncated shift): Accept constant inputs too. Fri Oct 23 04:06:57 1998 Richard Earnshaw (rearnsha@arm.com) * machmode.h (mode_mask_array): No longer const. * rtl.c (init_rtl): Fully initialize it if EXTRA_CC_MODES defined. Fri Oct 23 11:19:06 1998 Martin v. Löwis * frame.c: Somewhat explain `FDE'. Suggested by Brendan Kehoe Fri Oct 23 00:56:11 1998 Jason Merrill * expr.c (pending_chain): Move up. (save_expr_status): Do save pending_chain. (restore_expr_status): And restore it. * function.h (struct function): Add pending_chain. 1998-10-23 Herman A.J. ten Brugge * reorg.c (relax_delay_slots): Fixed test for mostly_true_jump. The did not match the code. Fri Oct 23 00:07:01 1998 Bernd Schmidt * regclass.c (regclass): Break out some code into new function scan_one_insn, and into regclass_init. (init_cost): New static variable, moved out of regclass. (regclass_init): Initialize it here, not in . (scan_one_insn): New static function, broken out of regclass. * recog.c (apply_change_group): Break out some code into new function insn_invalid_p. (insn_invalid_p): New static fn, broken out of apply_change_group. Thu Oct 22 22:34:42 1998 Jim Wilson * reload1.c (reload_as_needed): When rewrite POST_INC, verify reg_reloaded_contents matches incremented pseudo. * v850/v850.c (v850_reorg): Call alter_subreg. Delete subreg support. Fri Oct 23 11:11:56 1998 Michael Hayes * rtl.def (POST_MODIFY, PRE_MODIFY): New generalized operators for addressing modes with side effects. These are currently placeholders for the C4x target. Thu Oct 22 16:46:35 1998 Bernd Schmidt * loop.c (express_from): Make sure that when generating a PLUS of a PLUS, any constant expression appears on the outermost PLUS. Thu Oct 22 15:46:23 1998 Per Bothner (bothner@cygnus.com) * Makefile.in (distdir-cvs, distdir-start): Clean up so it works if "$(srcdir)" != ".". Wed Oct 21 19:23:59 1998 Jim Wilson * expmed.c (store_bit_field): If need to add a SUBREG, then remove existing SUBREG if we can, otherwise abort. Wed Oct 21 09:58:51 1998 Mark Mitchell * c-common.c (c_apply_type_quals_to_decl): Don't crash when `restrict' is applied to a non-pointer variable. Wed Oct 21 09:18:58 1998 Mark Mitchell * invoke.texi: Document -flang-isoc9x. * Makefile.in (OBJS): Add splay-tree.o. (c-common.o): Depend on rtl.h. (splay-tree.o): List dependencies and provide build rule. * rtl.h (record_alias_subset): New function. * alias.c: Include splay-tree.h. (alias_set_entry): New type. (CHECK_ALIAS_SETS_FOR_CONSISTENCY): Remove. (DIFFERENT_ALIAS_SETS_P): Use mem_in_disjoint_alias_sets_p. (mems_in_disjoin_alias_sets_p): New function. (alias_set_compare): Likewise. (insert_subset_children): Likewise. (get_alias_set_entry): Likewise. * tree.h (TYPE_RESTRICT): New macro. (TYPE_UNQUALIFIED): New manifest constant. (TYPE_QUAL_CONST): Likewise. (TYPE_QUAL_VOLATILE): Likewise. (TYPE_QUAL_RESTRICT): Likewise. (tree_type): Add restrict_flag. Reduce count of free bits. (DECL_POINTER_ALIAS_SET): New macro. (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise. (tree_decl): Add pointer_alias_set. (build_qualified_type): New function. (build_type_variant): Define in terms of build_qualified_type. * tree.c (set_type_quals): New function. (make_node): Initialize DECL_POINTER_ALIAS_SET. (build_type_attribute_variant): Use build_qualified_type and set_type_quals. (build_type_variant): Rename, and modify, to become... (build_qualified_type): New function. (build_complex_type): Use set_type_quals. * c-tree.h (C_TYPE_OBJECT_P): New macro. (C_TYPE_FUNCTION_P): Likewise. (C_TYPE_INCOMPLETE_P): Likewise. (C_TYPE_OBJECT_OR_INCOMPLETE_P): Likewise. (c_apply_type_quals_to_decl): New function. (c_build_qualified_type): New function. (c_build_type_variant): Define in terms of c_build_qualified_type. (flag_isoc9x): Declare. * c-typeck.c (qualify_type): Use c_build_qualified_type. (common_type): Change to use TYPE_QUALS. (comptypes): Likewise. (convert_for_assignment): Likewise. * c-aux-info.c (gen_type): Likewise. Deal with `restrict'. * c-decl.c (flag_isoc9x): Define. (c_decode_option): Handle -flang-isoc9x. (grokdeclarator): Update to handle restrict. Use TYPE_QUALS, c_build_qualified_type, etc. Use c_apply_type_quals_to_decl. * c-lex.c (init_lex): Deal with restrict. (init_lex): Don't treat restrict as a reserved word in -traditional mo