📄 changelog.2
字号:
* tm-rs6000.h (REG_ALLOC_ORDER): Put r12 after r13; it might be holding a DImode value and so might be very expensive (we won't worry about TImode). * rs6000.md (subtract patterns): Fix incorrect operand number in %I. (movti): Disallow indexed memory operands. * out-rs6000.c (print_operand, case 'm'): Fix typo. (includes_rshift_p): Correctly compute mask. * out-a29k.c (output_operand): Add missing parentheses. (print_operand): Replace if/then/else structure with switch statement. * a29k.md (beq, bne): Try to use NE test whenever possible; it will produce better code if we have bit-tests.Sun Dec 30 12:02:03 1990 Michael Tiemann (tiemann at cygnus.com) * tm-sparc.h (PRINT_OPERAND): Put 'R' case before REG so that it takes when 'R' is passed in as CODE. Also, handle 'B' letter. * sparc.md: (pattern for converting DFmode to SImode): Second argument to `output_asm_insn' should be `operands', not zero. (tablejump): The jump insn is "jmp", not "jump". (gen_fixtruncdfsi2): operands[2] should get the pseudo, not operands[3] (which is nonexistent). (call): Fix typo which had %o7 being emitted as %o. (various patterns): Fixed places where match_operand had the wrong operand number.Sat Dec 29 17:27:00 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * sparc.md: cc_status no longer handles condition code updates. Instead, condition codes are explicitly set and used via hard register 0. Special attributes specific to condition codes (such as whether conditional branches should test the integer or floating-point condition codes, or that the condition codes cannot be tested for a condition which would test the overflow bit) are handled by encoding the attribute in the mode for the condition code register. (type attributes): type "unary" insns have one input operand (1) and one output operand (0) type "binary" insns have two input operands (1,2) and one output (0) type "compare" insns have one or two input operands (0,1) and no output type "move" and type "arith" have been deleted. (prescan attribute): Deleted. Machine description now puts floating-point zero in registers when needed. (use_cc attribute): Deleted. (fpcc define_delay): No longer depend on "use_cc" attribute. Also, fpcc delay characteristics hold for "fpcc" type insns. (cc attribute): Deleted. (cmpxx patterns): Now written as `define_expand's so we can stow away operands. When the pattern that will use the results of the conditional test is emitted, it can use these operands to figure out the right way to emit the compare. (bcc patterns): Rewritten to emit comparison (based on stowed-away info) before emitting branch. (scc patterns): Handle all the cases with branch-free code. Added new pattern to recognize (x + (i == 0)). (movsi pattern recognizer): Split into two patterns so that e.g. "(set:SI (mem:SI ...) (const_int 5))" is never considered valid. Instead this has to be a two-insn sequence. (mov{hq}i pattern recognizers): Ditto. (movstrsi): Force operands[2] out of memory if it was in memory. ({zero,sign}_extendXY): Now written as `define_expand's instead of `define_insn's for more accurate machine modeling. Added new pattern to optimize bit-field compares. (floatsisf2 patterns): Delete redundant setting of "in_call_delay" attribute. (fix_trunc{sf,df}si2 pattern): Use clobberable register in which the conversion can take place. Used to use %f30,%f31. ({add,sub}di3 pattern): Put explicit clobber of (reg 0) in the pattern. (negdi2 pattern): Ditto. Added new patterns to handle merging of addition/subtraction with condition code testing (with (reg:CC_NOOV 0)). ({and,ior,xor}cbsi3 pattern): Obsolete. Deleted. Added patterns to represent setting of condition codes in addition to performing logical operations. ({neg,abs}df2 pattern): Use `R' print letter to overcome the need to use a C action instead of a simple template. (ash{l,r}{hi,qi}3): Define patterns for shifts on sub-SImode operands. (jump pattern): Use `*' print code to obviate the need for a C action when a template can do. (tablejump pattern): Ditto, with `^' code as well. Deleted `define_split's that were used to handle mem-mem moves in the case of PIC generation. Since all move insns are emitted and maintained as SPARC-valid insns, these should no longer be needed. (various patterns): (HI ...) is spelled (HI:SI ...). Also, use `gen_lowpart' instead of building subregs directly. New `define_split's were added to split scc insns into simpler components which have single-insn templates. Fixed a return peephole when returning a SFmode value (it was missing the "ret"!). Lots of complicated peepholes that brought cc testing and arithmetic operations together were deleted. This is because the combiner should now handle all these cases. * out-sparc.c (sparc_compare_op{0,1}): New global variables. Used to hold the operand(s) to compare insns in lieu of emitting a compare. (reg_or_cc0_operand): Deleted. (normal_comp_operator): New function. (cc_arithop): Now returns 0 for PLUS and MINUS. (cc_arithopn): Now returns 0 for XOR. (gen_compare_reg): New function. (sparc_address_cost): Simplified because it turns out it doesn't matter what is returned for illegitimate addresses. (hard_regno_mode_ok): Updated to use these new #defines. (C_MODES): New #define, for condition code modes. (S_MODES): Ditto, for single-word (and smaller) quantities. (D_MODES): Ditto, for double-word (and smaller) quantities. (T_MODES): Ditto, for tetra-word (and smaller) quantities. (SF_MODES): Ditto, for SFmode quantities. (DF_MODES): Ditto, for SF_MODE, DFmode, SCmode, etc. (TF_MODES): Ditto, for DF_MODE, TFmode, DCmode, etc. (output_floatsi{df,sf}2): Greatly simplified. (output_pic_sequence,output_pic_sequence_2,fp_zero_hook, output_tail_call): Turned off. * tm-sparc.h (ASM_SPEC): Pass `-k' to assembler if compiling PIC. (WORDS_BIG_ENDIAN): Define as 1, not 0. (FIXED_REGISTERS): %f30 and %f31 are now allocatable. (REG_CC0_RTX, CC0_REGNUM): Deleted. (EXTRA_CC_MODES): New modes CC_NOOVmode and CCFPmode. The former is for when the overflow bit it not to be tested; the latter is for when the condition is sitting in the floating point unit. (SELECT_CC_MODE): New macro. (FINAL_PRESCAN_INSN): Deleted. (CC_* macros): Deleted. (PRINT_OPERAND_PUNCT_VALID_P): New valid chars are '#' (for whether to print a noop or not), '*' (for whether to print a ",a" or not), and '^' (for whether to emit code for PIC branch or not). (PRINT_OPERAND{,_ADDRESS}): Replace calls to fprintf by calls to fputs where that is convenient. * expr.h, cplus-dbxout.c: #ifdef BYTES_BIG_ENDIAN should be #if. * reload.c (struct replacement): Add new field subreg_loc. (push_reload): If reloading SUBREG_REG of a paradoxical SUBREG, store the location of the SUBREG in subreg_loc in REPLACEMENTS. (push_replacement): Initialize subreg_loc. (subst_reloads): Don't produce nested SUBREGs; use subreg_loc. * regclass.c (regclass): Handle (set X (op CONST Y)) properly when the modes of operands 0 and 1 are different.Sat Dec 29 16:37:10 1990 Richard Stallman (rms at mole.ai.mit.edu) * cccp.c (macroexpand): Test traditional when computing expansion size. * toplev.c (compile_file): If profiling, leave some space after `gcc_compiled.'. * tm-m88k.h, tm-sparc.h, tm-sun386i.h (ASM_IDENTIFY_GCC): Deleted. * reload1.c (emit_reload_insns): Set reg_reloaded_contents, etc, here. (choose_reload_regs): Not here--except for reg_has_output_reload. * c-parse.y (nested_function, notype_nested_function): Use compstmt for body, not compstmt_or_error. * Makefile.in (install-headers): Use basename on * stupid.c (stupid_mark_refs): Really do mark clobbered hardreg live before the insn.Fri Dec 28 05:44:10 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * emit-rtl.c (subreg_lowpart_p): Use correct modes in WORDS_BIG_ENDIAN case. * reload.c (combine_reloads): Don't try to reference insn_operand_constraint for an ASM insn. Fix typo in testing for modified operand.Thu Dec 27 19:02:54 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * cse.c (cse_insn): Ensure we invalidate SET_DEST if SET_SRC is a CALL. * cse.c (fold_rtx): Save mode of original first operand in case this is becoming (sign_extend (const_int)).Thu Dec 27 16:15:56 1990 Tom Wood (wood at dg-rtp.dg.com) * m88k.md, out-m88k.c (CCmode): Use it. (emit_bcnd): Avoid loosing when bcnd is changed into sxx. (hi16/lo16): Don't use these to form 16-bit immediate values. Introduce and use %X/%x. (length attribute): Make better use of defaults. * tm-v88r32.h (LIB_SPEC): Goes here rather than in xm-v88r32.h. * xm-*88*.h: Clean these up. Most differences go away by relying on the 88open standards.Thu Dec 27 12:48:26 1990 Richard Stallman (rms at mole.ai.mit.edu) * expmed.c (store_bit_field, extract_bit_field): Change #ifdef to #if, testing BYTES_BIG_ENDIAN.Thu Dec 27 07:36:45 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * reorg.c (find_end_label): Ignore USE and CLOBBERs when looking for label at end of function.Wed Dec 26 22:35:59 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * emit-rtl.c (sequence_element_free_list, sequence_result): New vars. (restore_emit_status, init_emit): Initialize them. (emit_insn_before, emit_insn_after, emit_insn): Save SEQUENCE in sequence_result. Make these three routines more alike in structure. (start_sequence, end_sequence, push_to_sequence): Cache INSN_LIST pairs in sequence_element_free_list rather than making new ones. (start_sequence): No longer return unused rtx; only one caller needed to be changed (in function.c, see below). (end_sequence): No longer has argument. (gen_sequence): Try obtaining a pre-built SEQUENCE from sequence_result; no longer special-case length 0 vectors. * function.c (fixup_memory_subreg): start_sequence no longer returns an rtx and end_sequence no longer has an argument. * rtl.h (start_sequence): Now void. (push_to_sequence, end_sequence): Define.Wed Dec 26 13:19:40 1990 Richard Stallman (rms at mole.ai.mit.edu) * gnulib.c: No longer #undef perform_* if not __GNUC__. (perform_*): Define each if not already def.Tue Dec 25 17:31:17 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * loop.c (get_condition): Rework scan that looks for sets of things being compared to allow intervening insns; check to ensure that they don't set something that we need. Return 0 if the best we can do is find something whose mode is in class MODE_CC. * calls.c (emit_call_1): RETURN_POPS_ARGS now gets the length of arguments on the stack and returns the number of bytes popped by the called function. * output.h (current_function_pops_args): Change description. * function.c (current_function_pops_args): Likewise. (assign_parms): Initialize current_function_pops_args here. (init_function_start): Not here. * tm-*.h (RETURN_POPS_ARGS): Reflect new meaning. (FUNCTION_EPILOGUE): Use new meaning of current_function_pops_args. * out-i386.c (function_epilogue): Likewise.Tue Dec 25 15:52:06 1990 Richard Stallman (rms at mole.ai.mit.edu) * gnulib.c (all functions): Support a hook for redefining contents. These hooks are called perform_addsi3, and so on. They are used only if compiling with GCC. * rtlanal.c (single_set): Moved from loop.c. * cse.c (fold_rtx): For a MEM, fold address when looking for constant. (cse_insn): When fetch a constant label from a dispatch, substitute into following tablejump. (find_best_addr): Clear do_not_record before hashing. * jump.c (mark_jump_label): Don't record table-labels on non-jumps. * m68k.md (casesi_2 recognizer): Use register_operand as predicate.Mon Dec 24 17:54:42 1990 Richard Stallman (rms at mole.ai.mit.edu) * cse.c (fold_rtx): Handle ADDR_DIFF_VEC like ADDR_VEC, when the index in it is constant. * c-decl.c (start_function): Handle new option -Wmissing_prototypes. (c_decode_option): Likewise.Mon Dec 24 07:21:06 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * rtl.h (reload_completed, reload_in_progress): Now defined here. * output.h (reload_completed): No longer defined here. * emit-rtl.c, optabs.c, recog.c, sched.c, toplev.c, out-a29k.c: Don't define reload_in_progress or reload_completed. * a29k.md, romp.md, rs6000.md: Likewise. * machmode.def: Terminate GET_MODE_WIDER_MODE chains with VOIDmode, not zero. (CCmode): New mode. * machmode.h (enum machine_mode): Includes modes in EXTRA_CC_MODES, if defined. (enum mode_class): New class MODE_CC; delete MODE_FUNCTION. * rtl.c (mode_name): Define to be known size; add names for extra CC modes, if present. (mode_class, mode_size, mode_unit_size, mode_wider_mode): Define to be known size. (init_rtl): Initialize extra CC modes.Sat Dec 22 19:33:54 1990 Richard Stallman (rms at mole.ai.mit.edu) * tm-i386v.h (MAXPATHLEN): Define if not already defined. * tm-i386vgas.h: New file. * out-i386.c (print_operand_address): Handle scaled indexing.Sat Dec 22 11:15:03 1990 Tom Wood (wood at dg-rtp.dg.com) * m88k.md, out-m88k.c, tm-m88k.h (swapped cmpsi): Don't rely on NOTICE_UPDATE_CC doing the job. Instead, compliment the swapped compare. Also, make COMPARE SImode. (and/cmpsi/sxx/neg): Add patterns to do this in one instruction. Change sign_extend/sxx to neg/sxx for other cases. (iorsi3/xorsi3): Use alternatives and explicit patterns. (casesi): Make the constant the second operand to cmpsi. (output_and): Must compliment value to use the clr instruction. (output_reg_adjust): Simplify the interface and use TEMP_REGNUM. (TARGET_SWITCHES): Eliminate needless no-* options.Fri Dec 21 05:46:34 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * recog.c (find_single_use{,_1}): New functions. * rtl.h (find_single_use): Declare it.Thu Dec 20 21:27:36 1990 Richard Stallman (rms at mole.ai.mit.edu) * optabs.c (init_optabs): Add __ to names of floating compare fcns.Thu Dec 20 18:21:38 1990 Richard Kenner (kenner at vlsi1.ultra.nyu.edu)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -