⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 changelog.3

📁 早期freebsd实现
💻 3
📖 第 1 页 / 共 5 页
字号:
	* optabs.c (expand_float): Always do conversions to FMODE in the	signedness of the input.	* reload.c (find_reloads, find_reloads_toplev): If reg_equiv_address	is not a constant address, copy it in case it is shared.	* reload1.c (eliminate_regs): Copy reg_equiv_memory_loc in case	it is shared and we make a reload inside it.	* stupid.c (stupid_mark_refs): Registers that aren't used must die	in the insn after their birth so they conflict with other outputs.	* vax.md: Replace patterns to convert (and (ashiftxx))	into (and (rotatexx)) with the patterns that are actually made	by combine.	We can allow offsettable addresses for operand 0 and it is not	early-clobber.	* out-rs6000.c (secondary_reload_class): Correctly interpret result of	true_regnum.	* out-rs6000.c (output_toc): Write FP constants in TOC.	* tm-r6000.h (TARGET_FP_IN_TOC): New flag.	(TARGET_SWITCHES): Add -mfp-in-toc and -mno-fp-in-toc.	(TARGET_DEFAULT): -mfp-in-toc is the default.	(ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): FP constants may be put in the TOC.Mon Jun 24 00:52:44 1991  James Van Artsdalen  (james at bigtex.cactus.org)	* out-i386.c (output_fix_trunc): If the dest operand mentions the	stack pointer, then we must adjust it to account for the temporary	space we allocate on the stack here.Sat Jun 22 07:24:33 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)	* cse.c (cse_set_around_loop): Fix typo in call to note_mem_written.	* emit-rtl.c (reorder_insns): Correctly handle case when AFTER is last	insn.	* expr.c (expand_expr, case COND_EXPR): Correctly handle X ? A : X + 1.	Previous change called invert_truthvalue which can modify EXP; we now	call it a second time to undo its action if do_store_flag fails.Sat Jun 22 02:37:59 1991  James Van Artsdalen  (james at bigtex.cactus.org)	* cse.c (cse_set_around_loop): Don't try to initialize an	automatic structure.	* reg-stack.c (compare_for_stack_reg): If both operands to a	compare are the same stack reg, don't process death on the second.	* i386.md (all float patterns): Don't allow constants in the	operand predicates.	(all patterns using convert_387_op): Split patterns into one using	FLOAT and another using FLOAT_EXTEND.Fri Jun 21 20:37:03 1991  Tom Wood  (wood at dg-rtp.dg.com)	* sched.c (line_note, line_note_head): New vectors for use when	dealing with line-number notes.	(unlink_notes): Put line-number notes in LINE_NOTE for reuse.	(schedule_block): Just before reordering the insns, walk the insns	and record the line-number note in effect for each one.  When	reordering is complete, restore the line-number notes as needed.	(schedule_insns): When debugging information is present, allocate	and initialize line_note and line_note_head.  After scheduling,	walk the insns to delete redundant line-number notes.Fri Jun 21 19:54:29 1991  Jim Wilson  (wilson at wookumz.gnu.ai.mit.edu)	* old-sparc.c, out-old-sparc.c, tm-old-sparc.h: Delete obsolete	files.	* loop.c (loop_number_exit_labels): Expand comment.  Mention that	returns are not included because all bivs and givs are pseudos and	hence must be dead after a return.Fri Jun 21 07:10:56 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)	* combine.c (subst, case PLUS, MINUS): Remove cases for things like	(x-y)+y; now done in simplify_binary_operation.	* cse.c (simplify_unary_operation): Handle (sign_extend (truncate ..))	as used in casesi patterns.	(simplify_binary_operation, case PLUS, MINUS): Don't do most	simplifications if IEEE floating-point.	Add cases for things like (x-y)+y.	(fold_rtx): Replace PC with LABEL_REF if we are immediately in	front of a jump table.	Move code to apply associative law to after we have folded the	operands.	(fold_rtx, case MEM): Fix errors in checking for index of jump	table being out of range.	For ADDR_DIFF_VEC, return a MINUS or (truncate (minus L1 L2)).	(fold_rtx, case PLUS): If we have (plus X (label_ref L)), see	if X is equivalent to (minus L1 L2).	(cse_insn): Put (minus L1 L2) in `src_const' so it gets in a	REG_EQUAL note and gets put in the hash table.	If we are branching to a jump table, we are really branching to	immediately after the jump table	Remove special-case kludge for ADDR_DIFF_VEC; now handled properly.	* vax.md (casesi): Make pattern agree with machine instruction;	specifically, index is multiplied by two and the comparison is LEU,	not LE.	* cse.c (equiv_constant): If X is a one-word SUBREG of a larger	quantity, use `lookup_as_function' to see if it is equivalent	to a CONST_INT.	* jump.c (squeeze_notes): No longer static.	* loop.c (find_and_verify_loops): Need to call squeeze_notes when	moving block of code (see last change).	* reload.c (find_reloads): When forcing constant to memory,	set recog_operand to the result of find_reloads_toplev.	* combine.c (subst, case PLUS): Add (c1 - a) + c2 -> (c1+c2) - a.	(subst, case MINUS): Use simplify_binary_operation rather than	making CONST_INT from subtraction of two INTVAL's to ensure it	gets truncated as appropriate for its mode.	Add (c1 - (c2 - a)) -> (c1-c2) + a.	* a29k.md (negdf2): Use operand_subword_force, not operand_subword.	(movsf): Use operand_subword, not gen_lowpart.	* out-rs6000.c (u_short_cint_operand): New function.	(print_operand): Support auto-decrement.	* tm-rs6000.h (OVERRIDE_OPTIONS): Force profiling off.	(PREFERRED_RELOAD_CLASS): Return NO_REGS for real CONST_DOUBLE.	(HAVE_PRE_DECREMENT): Define this.	(GO_IF_LEGITIMATE_ADDRESS, GO_IF_MODE_DEPENDENT_ADDRESS):	Support PRE_DEC.	* rs6000.md (zero_extendxx): Use rlinm, not andil so we avoid	clobbering cr0.	(arith-and-record patterns): Correct some bad operand numbers.	Put SImode output as operand 0 to improve register tying.	(andsi): Prefer rlinm over andil and andiu.	(load/store-with-update): Add patterns for these instructions.	(allocate_stack): New, replaces stack probe.	(add-and-compare): New patterns, with define_split.	(subtract-one-and-jump): Allow outputs anywhere; handle with	match_scratch and define_split.	* stmt.c (expand_end_stmt_expr): If `last_expr_value' is 0, set it	to const0_rtx.	* regclass.c (reg_n_sets): Move definition to before use.	* jump.c (find_cross_jump): Don't try to substitute REG_EQUAL	values unless they are constants.Fri Jun 21 02:37:59 1991  James Van Artsdalen  (james at bigtex.cactus.org)	* reload1.c (reload): Don't clear after_call for each insn.Sun Jun 16 17:28:43 1991  James Van Artsdalen  (james at bigtex.cactus.org)	* reload1.c (reload, reload_as_needed, choose_reload_regs): Enable	code to avoid return register when SMALL_REGISTER_CLASSES defined.	* final.c (final_scan_insn): Don't look for no-op moves if	processor has STACK_REGS.	* hard-reg-set.h (GO_IF_HARD_REG_EQUAL): New macro.	* jump.c (cross_jump_death_matters): New variable.	(find_cross_jump): If processor has STACK_REGS, compare death	notes if they matter.	* toplev.c (compile_file, rest_of_compilation): Support new	stack-regs conversion pass.	(main, compile_file, rest_of_compilation): Add support for -dk to	dump after stack-regs conversion.	* reg-stack.c: New file.  Implements stack-regs conversion pass.	* Makefile.in (reg-stack.o): New file.	* tm-i386.h (STACK_REGS): New macro.	(all register macros): Define all eight float point registers.	(HARD_REGNO_NREGS): Only one float reg is needed for any mode.	(HARD_REGNO_MODE_OK): Move code here from out-i386.c.	(FIRST_STACK_REG,LAST_STACK_REG): New macros.	(ARG_POINTER_REGNUM): Move to reg 16.	(FP_REGNO_P): Recognize all float regs.	(QI_REG_P): New macro.	(STACK_REG_P,NON_STACK_REG_P,STACK_TOP_P): New macros.	(PRESERVE_DEATH_INFO_REGNO_P): Delete.	(OVERLAPPING_REGNO_P): Delete.	(CONST_OK_FOR_LETTER_P): Recognize constant mask for byte or word.	Recognize constant 0..3 for `lea' shifts.	(CONST_DOUBLE_OK_FOR_LETTER_P):	(PREFERRED_RELOAD_CLASS): Don't put CONST_DOUBLE in float regs.	QImode must go in class Q_REGS.  Float regs can't hold MODE_INT.	(MOVE_RATIO): New macro.	(SHIFT_COUNT_TRUNCATED): Delete.  Bit opcodes don't truncate.	(RTX_COSTS): New macro.	(CONST_COSTS): Make constants cheaper.	(QI_HIGH_REGISTER_NAMES): Renamed from QI_REGISTER_NAMES_TOP.	(INSN_CLOBBERS_REGNO_P): Delete.	(FP_TOP,RETCOM,POP_ONE_POP,FP_CALL1,FP_CALL): Delete.	* out-i386.c (fp_pop_level): Delete.	(fp_call_internal, output_asm_insn_double_reg_op, via_memory,	fp_store_sf,fp_pop_sf,fp_store_df,fp_pop_df,fp_pop_int,	fp_push_sf,fp_push_df,output_movsf,output_movdf,output_movf,	top_dead_p,call_top_dead_p,fp_top_dead_p1,mentioned_fp_top): Delete.	(hard_regno_mode_ok): Moved to tm-i386.h.	(qi_high_reg_name): New variable.	(output_op_from_reg, output_to_reg): New function.	(singlemove_string,output_move_const_single): No longer static.	(singlemove_string): Use correct operand number	in `push' string.	(standard_80387_constant_p): Use recommended method to extract	float from CONST_DOUBLE.	(PRINT_REG): Add 'h' for "high" register names, 'y' for "st(0)".	(print_operand): Code 'z' prints no size suffix for stack regs.	Print DImode suffix as "ll", not just "l".	(output_fix_trunc): New argument `insn'.  Generalize to output to	MEM or REG.  Return "char *" like other output routines.	Generalize for SImode or DImode output.	(binary_387_op,convert_387_op,float_op,fix_op,shift_op): New	match_operator predicates.	(output_387_binary_op,output_float_compare): New functions.	* i386.md (all MODE_FLOAT patterns): Replace with new code to use	all FPU registers.	(all patterns): Use AS2 and AS1 macros where possible, for	eventual support of Intel syntax output.	(tstM): Don't initialize operands unless we need to.	(cmpM): Choose operange order in output for speed on i386.	(logical test patterns): The operands commute.  If possible,	SImode tests should use just QImode.	(movstrictM): New patterns.	(movqi): Don't allow a constant of unknown value into Q_REGS.	(`lea' pattern): Move after addsi3.	(addsi3): Do three operand adds with `lea'.	(divsi3,divhi3,udivsi3,udivhi3): Delete in favor of u?divmodM4.	(divqi3,udivqi3): Remove earlyclobber for operand 0.	(andM3): Define three operand ANDs for 255 and 65535 using zero	extend opcode.  Also directly do an AND in the second byte of a	register.	(iorM3,xorM3): Do byte ior instead of word where possible.	(xorqi3): Allow operands[2] from MEM.	(ashlsi3): Allow three-operand shift of 0..3 with `lea' opcode.	(lshlM3): Redundant, delete.	(shift & rotate patterns): Print %0 as destination operand.	(bit recognizers): New patterns to set, clear and compliment.	(call insns): Use "%P" code for targets to support Intel syntax.	(movstrsi): Express changes to the operands instead of just	clobbering them.  Don't accept non-constant move count, as our	code isn't as efficient as a library call.Thu Jun 20 13:51:02 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)	* cse.c (cse_insn): If we fold a conditional or computed branch to an	unconditional branch, it is now not in the normal format for an	unconditional branch, and it only has one set, delete it and	re-emit it.	Whenever we make an unconditional branch, set `cse_skip_to_next_block'	and do nothing else.	(cse_basic_block): Increment LABEL_NUSES on TO if it is a label	so it won't go away while we are using it as a stopping point.	If we are done with this block (`cse_skip_to_next_block' nonzero),	pretend we just did the insn before TO.	Decrement LABEL_NUSES of TO if it is a label; if it became zero,	delete it and try to extend the basic block.	* reload.c (find_reloads): Fix typo in check for no alternatives	found.	* combine.c (reg_significant, significant_mode): New vars.	(combine_instructions): Allocate and initialize reg_significant.	(set_significant): New function.	(significant_bits, case REG): Use reg_significant, if non-zero	as the significant bits of a register.	* loop.c (n_times_set): Define -2 to mean that a register is	an candidate to be moved and is a constant.	(scan_loop): Set n_times_set to -1 or -2 as appropriate.	(regs_match_p): No need to check REG_FUNCTION_VALUE_P.	A register and a constant can be equal if the register is known		equivalent to the constant.	(invariant_p): Check n_times_set < 0, not == -1.	* rtl.h (REG_LOOP_TEST_P): New macro.	* jump.c (duplicate_loop_exit_test): Mark registers used only in	loop exit test.	* cse.c (cse_around_loop, cse_check_loop_start, cse_set_around_loop):	New functions.	(cse_end_of_basic_block): Add new arg to say if we are being called	after loop.c has run; if we are being called after loop.c, we can	ignore NOTE_INSN_LOOP_ENDs.	(cse_main): Accept new AFTER_LOOP arg; pass to cse_end_of_basic_block.	If we are called before loop.c, see if we can cse around to the	start of a loop.  	* toplev.c (rest_of_compilation): Tell cse_main if it is being called	before or after loop.c.	* rtl.h (LABEL_OUTSIDE_LOOP_P): New macro.	* loop.h (uid_loop_num): Renamed from luid_loop_num and now	maps INSN_UID to loop number instead of INSN_LUID.	* loop.c (loop_optimize): Modifications for the above.	(find_and_verify_loop): Change luid_loop_num to uid_loop_num.	Look for blocks of code ending in an unconditional branch out	of the loop surrounded by a conditional branch and try to move	such a block out of the loop.	(mark_loop_jump): Change luid_loop_num to uid_loop_num.	Mark all LABEL_REFs that are outside the current loop, for	branch prediction.	(strength_reduce, check_dbra_loop): Change luid_loop_num to 	uid_loop_num.	* unroll.c (unroll_loop, find_splittable_{regs,givs}): Likewise.	(reg_dead_after_loop, final_{biv,giv}_value): Likewise.	* flow.c (reg_n_sets): Don't define this here.	* regclass.c (reg_n_sets): Define it here.	(reg_scan): Allocate and initialize reg_n_sets.	(reg_scan_mark_refs): Count sets of a register in reg_n_sets.	* sched.c (reg_known_value_size): New variable.	(canon_rtx): Don't look in reg_known_value outside its allocated space.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -