📄 changelog.3
字号:
Sat Jun 29 06:25:19 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) * tm-vax.h (CPP_SPEC): New macro. (LIB_SPEC): Handle -mg. * cccp.c (install_builtins): Fix backward test of objc. * fold-const.c (size_int): No need to test sign of NUMBER. * gcc.c (process_command): Split -L from its arg. * gcc.c (S_ISREG): Define if not defined. (delete_temp_files): Use it. * limits.h (UCHAR_MAX, CHAR_MAX, USHRT_MAX): Delete `U'. (LONG_MAX, ULONG_MAX): Add `L'.Fri Jun 28 22:22:58 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) * Makefile (realclean): Delete stage1, stage2, stage3. * gcc.c (fatal) [HAVE_VFPRINTF]: Do print program name.Fri Jun 28 15:34:08 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) * out-sparc.c (output_block_move): Correctly handle the case where the size is not a CONST_INT, and has a value of 0. * flags.h (flag_no_inline): Modify comment to match the one in toplev.c. * integrate.c (copy_rtx_and_substitute): When creating new rtx, make sure all of the new bitfields are copied, e.g. REG_LOOP_TEST_P, LABEL_OUTPUT_LOOP_P, etc. * loop.c (loop_optimize): Call reg_scan after find_and_verify_loops, because it may change register lifetimes. (find_and_verify_loops): After moving a block of code outside the loop, must readjust the loop_number_exit_label and LABEL_OUTSIDE_LOOP_P data of the modified jump and the moved jump. toplev.c (rest_of_compilation): Delete reg_scan call before loop_optimize.Fri Jun 28 13:16:37 1991 Michael Meissner (meissner at osf.org) * tm-mips.h (toplevel): Add target_flags to externals declared. (toplevel): Add dslots_number_nops, mips_load_reg{,2}, mips_fill_delay_slot external declarations for delay slot reorg. (CC1PLUS_SPEC): By default, pass -fno-gnu-binutils to cc1plus. (TARGET_FLAGS): Add -mwc8, -mwc16, -mwc32 to set size of wchar_t, though the switches are not used right now. (TARGET_FLAGS): Add -msoft-float code from rfg@ncd.com to compile on systems w/o floating point. (TARGET_FLAGS): -mdebugf suppresses filling load delay slots. (HARD_REGNO_OK): Relax constraints, allow anything in GP registers, anything in even FP registers, int's only in multiply and divide registers, int/CC in the FPSW register. (FRAME_POINTER_REQUIRED): Require frame if alloca is called for now. (REG_CLASS_FROM_LETTER): Index from an array (mips_char_to_class) instead of having lots of ?:'s. Also, allow 'd' to signify GP registers. (ENCODE_SEGMENT_INFO): Only record things being in small data/bss if -mgpOPT (-O sets by default), -O, and -G xx where xx > 0. (FINAL_PRESCAN_INSN): Rework to automatically not fill the previous instruction's load delay slots with nop's if it is safe. (ASM_OUTPUT_LABEL): If compiling collect, don't use assemble_name. (ASM_GLOBALIZE_LABEL): If compiling collect, don't use assemble_name. (ASM_OUTPUT_LABELREF_AS_INT): Define this for collect. (ASM_OUTPUT_INT): If collect, don't use output_addr_const. * mips.md (all floating point): If -msoft-float, don't allow any floating point builtin operations. (all patterns): Use 'd' constraint to limit things to GP registers, rather than 'r'. This allows unions of float/int/double to occupy any registers. (*extend*): Call mips_move_1word to handle loads, which in turn sees if we can omit the load nop. (fix_trunc*): Redo, since register allocator can handle moving to the appropriate register set. (movdf_xfer*): Use explicit return's instead of falling through and having the appropriate value in a register from the previous call. (movsf_xfer*): New patterns to accomidate unions of floats and int's. (movsi_unaligned): New define_expand to call either movsi_ulw or movsi_usw. Also, if not a memory operation, use movsi. (movsi_ulw): Set up to omit load delay nop if we can. (movsi_usw): Use memory_operand instead of simple_memory_operand. Also, allow storing 0 to an unaligned location. (various move patterns): mips_move_1word now takes a third argument to specify whether a load should sign or zero extend. (call_value): Use register_operand on return value. (probe): Turn into define_expand, and set a register to the contents of memory pointed to by the stack pointer with volatil set. * out-mips.c (toplevel): Add new global variables: dslots_number_nops, mips_load_reg{,2}, mips_regno_to_class, mips_char_to_class. (simple_memory_operand): If not optimizing, no global memory reference is assumed to be in the GP area. (mips_fill_delay_slot): New function to tell FINAL_PRESCAN_INSN the current insn is a load and may need a nop. (mips_move_1word): Take a third argument to say whether load byte and load half-word sign extend or zero extend. Change all callers. If this is a load, call mips_fill_delay_slots to schedule the nops. Change all return's to setting a variable, and falling through to the end. (mips_move_2words): If this is a load, call mips_fill_delay_slots to schedule the nops. Change all return's to setting a variable, and falling through to the end. (function_arg): if -msoft-float, floating point is passed in GP registers. (override_options): Initialize mips_char_to_class. (print_operand): %( and %) no longer do .set nomacro. (print_operand): %# prints #nop if gas or -mstats. (print_operand): Check for too many %), %], and %>'s. (compute_frame_size): Allocate space in stack to hold FP, just in case we later need a FP and previously thought we could eliminate it. (save_restore): Take a string to indicate the 2word load/store to use, but don't use it at present. Change all callers. Home varargs registers with sd if we can. (function_epilogue): Deal with one or more outstanding nop's from FINAL_PRESCAN_INSN. (function_epilogue): Revamp -mstats output format. (function_epilogue): Zero new global variables. * make-decrose (toplevel): Sort make variables. (CLIB): Add -lld library. (LANGUAGES): Add build of collect-osf and g++. (ULTRIX_DIR): Change internal work directory location. (cplus-lex.o): Don't optimize to avoid problem with 1.39 compiler. (collect-osf): Add rules to build OSF/rose version of collect. * make-mips (LANGUAGES): Add build of g++. * tm-decrose.h (SIZE_TYPE): Specify to be long unsigned int. (PTRDIFF_TYPE): Specify to be long int. (WCHAR_TYPE): Specify to be long unsigned int. * sdbout.c (plain_type_1): Add support for unknown tags if SDB_ALLOW_UNKNOWN_REFERENCES is defined. The MIPS ECOFF support needs this, but standard COFF typically doesn't allow unknown references. * gcc.texinfo (Debugging Info): Document SDB_ALLOW_UNKNOWN_REFERENCES and SDB_ALLOW_FORWARD_REFERENCES. * collect-osf.c (whole file): New file to provide collect support on OSF/rose.Fri Jun 28 09:20:18 1991 Tom Wood (wood at dg-rtp.dg.com) * configure (m88k-luna): New target. * tm-m88kluna.h: New file for the Omron Luna/88k. * xm-m88k.h: Don't use USG for the luna88k. * tm-m88kdgux.h: DG/UX implements coff and elf. Currently elf is a strange variant of coff that's non-standard (it uses SDB debugging info for example). Soon, the DG/UX elf will support DWARF. These changes provide transitional support for all three. (DWARF_DEBUGGING_INFO, SDB_DEBUGGING_INFO): Define both. (VERSION_0300_SYNTAX): True when -msvr4 and -mversion-03.00. * tm-m88ksvr4.h (ASM_FILE_END, ASM_OUTPUT_DWARF_LINE): Move these to tm-m88k.h. They are dwarf specific. * tm-m88k.h (TARGET_SWITCHES): Add -mversion-03.00 and -mdwarf. (OVERRIDE_OPTIONS): If using version 03.00 syntax, assume DWARF_DEBUG. * tm-m88k.h (REG_ALLOC_ORDER): Adapt slightly for using r26-r29. * out-m88k.c (m88k_debugger_offset): Don't complain if the base register is optimized away.Thu Jun 27 21:43:36 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * local-alloc.c (memref_referenced_p, memref_used_between_p): New functions. (update_equiv_regs): Call memref_used_between_p.Thu Jun 27 19:59:36 1991 Ken Raeburn (raeburn at watch.com) * print-tree.c (print_node): Changed the various "lang_#" strings to indicate which of several possible fields are being examined; new strings are "tree_#", "decl_#", "type_#".Thu Jun 27 15:05:43 1991 Michael Meissner (meissner at churchy.gnu.ai.mit.edu) * xm-mips.h (ONLY_INT_FIELDS): Define if not compiling with GCC since the MIPS compiler treats enum bitfields as signed.Wed Jun 26 19:48:16 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) * sched.c (memrefs_conflict_p): Explicitly handle case where both X and Y are CONST. (sched_analyze_2): Do create dependencies for insns with REG_EQUIV notes. (sched_note_set): Correctly handle the case where the destination register is a multi-word hard register. (attach_deaths): Don't add a REG_DEAD note to an insn with a REG_UNUSED note that mentions the same register. Correctly handle the case where the destination register is a multi-word hard register. (schedule_block): Also call sched_note_set for CLOBBERs when computing which registers are dead at the end of the basic block. Also call sched_note_set for USEs when computing what registers are still live after a just scheduled insn. (regno_use_in): New function, subroutine of split_hard_reg_notes. Searches an rtx for any reference to the given register, and returns the register rtx used if any. (split_hard_reg_notes): New function. Handles the case where a multi-word hard register with a REG_DEAD note gets split. Creates a new REG_DEAD note for each part of the original hard register used by the split insns. (new_insn_dead_notes): Don't add a REG_DEAD note to an insn with a REG_UNUSED note which mentions the same register. (update_links): Add call to new function split_hard_reg_notes. Correctly handle the case when the dest of the original insn was a multi-word register which was split in the split insns. In this case, the dest is no longer killed here, so must remove the REG_DEAD on the last previous insn in this basic block which used dest, if any such exists. * unroll.c (reg_dead_after_loop): Check that a CODE_LABEL which is the target of a JUMP_INSN has a non-zero PREV_INSN field before trying to derefence it. Fail if there is no previous insn. * loop.c (scan_loop): Fix typo. * local-alloc.c (optimize_reg_copy): Likewise. * global-alloc (hard_reg_copy_preferences): Likewise. * gcc.texinfo (REG_LOOP_TEST_P): Likewise. * optabs.c (expand_float): Likewise. * tm-vaxv.h (ASM_OUTPUT_ASCII): Likewise. * out-sparc.c (output_move_double): Sign extend CONST_INTs that feed DImode targets. * tm-sparc.h (GO_IF_LEGITIMATE_ADDRESS): Don't accept a LABEL_REF as a legal address. Also, delete obsolete parts of preceeding comment. * reload1.c (alter_reg): Only try to delete the reg_equiv_init insn if it hasn't already been deleted by a previous call to delete_dead_insn. * toplev.c (main): Handle -gdbx in addition to -gsdb for orthogonality. * gcc.texinfo: Document -gdbx.Tue Jun 25 09:57:08 1991 Tom Wood (wood at dg-rtp.dg.com) * m88k.md (casesi): Don't emit a barrier; the dispatch code must adjoin the table. * tm-m88k.h (DONT_REDUCE_ADDR): Don't use this. (CONDITIONAL_REGISTER_USAGE): The PIC register is also call-used. * out-m88k.c (m88k_layout_frame): Save the PIC register.Tue Jun 25 07:40:43 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * function.c (expand_function_end): FNDECL should be CURRENT_FUNCTION_DECL. * combine.c (find_split_point): If we see an AND operation as the first operand of some non-AND operation, use it as a split point. (subst): Add counter to limit restarts, go to restart more often. (subst, case AND): If we get (ior (and (X C1) C2)) and can't restart more than once, rewrite with C1 as small as possible and exit. * cse.c (cse_end_of_basic_block): Don't put branch in our path more than once. (cse_main): Clear PATH_SIZE when skipping a block. (cse_basic_block): Use GET_RTX_CLASS.Tue Jun 25 07:39:29 1991 Matthew Self (mself at next.com) * varasm.c (const_hash, compare_constant_1, record_constant_1): For ADDR_EXPR's, don't hash address of SYMBOL_REF. Only use offset and name of symbol. This allows constructors which contain pointers to identical string literals to be uniqued. * loop.c (loop_optimize, init_loop): Moved call to gcc_obstack_init() from loop_optimize() to init_loop(). * reload1.c (reload, init_reload): Moved call to gcc_obstack_init() from reload() to new function init_reload(). * toplev.c (compile_file): Call new function init_reload().Mon Jun 24 16:05:57 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) * stmt.c (expand_end_stmt_expr): Fix typo in comment. * reload1.c (modes_equiv_for_class_p): Only fail if registers in CLASS that can hold ALLOCATE_MODE can't also hold OTHER_MODE. Do not fail for the reverse test. ALLOCATE_MODE is always a larger or same size mode as OTHER_MODE, and will be the mode that reload uses when allocating spill registers. Rewrite comments to explain new behaviour. (reload): Change call to modes_equiv_for_class_p to match new semantics. * combine.c (simplify_shift_const): When simplifying (ashiftrt (ashift inner_const_int) const_int), was checking the wrong number of high order bits of inner_const_int. Also correct typos in comments. * c-convert.c (convert_to_integer): Must also check ARG1 for unsignedness, because ARG0 could be a constant when EXPR is a MINUS_EXPR. * combine.c (try_combine): When splitting, it is not safe to use I2DEST if it is referenced by NEWPAT. * combine.c (distribute_notes): After converting REG_DEAD notes to REG_UNUSED notes, clear PLACE if it already has a REG_UNUSED note, to prevent adding a duplicate REG_UNUSED note. * gcc.texinfo (SIGNED_CHAR_SPEC): Document.Mon Jun 24 10:02:32 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * cse.c (cse_set_around_loop): Ensure the insn we find in front of the loop does the set in the proper mode.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -