📄 changelog.3
字号:
(init_alias_analysis): Initialize reg_known_value_size. * loop.c ({unknown,fixed}_aggregate_altered): Deleted. (loop_store_mems): Replaces loop_store_addrs and loop_store_widths. (loop_optimize): Call init_alias_analysis. (prescan_loop, note_addr_stored): Save all MEMs stored into, rather than just those that appear fixed; save MEMs rather than addresses and widths. (invariant_p): Use true_dependence to see if a MEM is invariant; compare it with all MEMs stored during the loop. * sched.c (memrefs_conflict_p): If XSIZE or YSIZE is zero the object conflict if they have the same base, irregardless of the offsets. * reorg.c (dbr_schedule): Reallocate unfilled_firstobj after freeing memory from the obstack. * reload.c (push_reload): Always reload object inside SUBREG if STRICT_LOW_PART is present. Always set RELOAD_STRICT_LOW to zero; maybe we should get rid of it. * reload.c (make_memloc): Copy the address if it varies to avoid potential sharing problems. * global-alloc.c (hard_reg_copy_preferences): New var. (global_alloc): Allocate and initialze it. (prune_preferences): Prune it. (find_reg): Try preferences in hards_reg_copy_preferences first, then hard_reg_preferences. (set_preference): Set bit in hard_reg_copy_references, if appropriate. * emit-rtl.c (try_split): If we are splitting a JUMP_INSN, copy JUMP_LABEL from the old to new insn update the count of that label. * cse.c (lookup): Always call exp_equiv_p unless we have a REG. * cse.c (insert): If we are making a register equivalent to a constant that was already equivalent to a constant, update qty_const_insn. (cse_insn): Don't do it here. * cse.c (fold_rtx): Always call simplify_unary_operation. * cse.c (record_jump_equiv): Don't get primary elements for OP0 and OP1 since they might not be valid. * loop.c (get_condition): Accept new arg, EARLIEST that is a pointer to where we place the earliest insn used to form the condition. Check for comparison with CC0 in main loop, not earlier. Never return condition involving CC0. (get_condition_for_loop): Call get_condition with new arg. * jump.c (jump_optimize): When we make store-flag insn, put new insns before earliest insn used to form condition and use new psuedo as target, which we copy into VAR immediately after the insn that currently sets VAR. Turn off "if (...) x = 1; else {...} if (x) ..." code; it is not correct and can't be easily fixed. (get_label_{before_after}): Use {prev,next}_nonnote_insn. * jump.c (jump_optimize): Don't interpret NOOP_MOVES as meaning "after_reload"; check reload_completed instead. Don't pass NOOP_MOVES to functions that aren't actually trying to noop moves. (follow_jumps, tension_vector_labels): Don't accept AFTER_RELOAD arg; check reload_completed instead. * combine.c (try_combine): Don't check that we don't have a single_set when trying to replace a SET_DEST in a PARALLEL in I2. (simplify_and_const_int): Always do the AND in the mode passed. (significant_bits, case DIV and UDIV): Nothing special known about low-order bits here. (simplify_shift_const, shift cases): Don't go into infinite loop if we combine two shifts in the same direction. * c-parse.y, cplus-parse.y, objc-parse.y (set_yydebug): Move to end of file so we don't have a reference to yydebug after its definition; also delete duplicate declaration.Thu Jun 20 09:08:21 1991 Tom Wood (wood at geech.gnu.ai.mit.edu) * local-alloc.c (block_alloc): Fixed typo in last edit.Wed Jun 19 17:05:52 1991 Jim Wilson (wilson at wookumz.gnu.ai.mit.edu) * reload.c (push_reload): Verify reload_in[i] exists before using GET_CODE on it. * m88k.md: USE insns must be immediately before CALL_INSNs to work properly, otherwise sched.c and reorg.c will not associate them will the CALL. * unroll.c (calculate_giv_inc): Accept constant increments represented as a LO_SUM. * flow.c (mark_used_regs): Don't put a REG_DEAD note on insns that already have a REG_UNUSED note. This makes it consistent with combine.c. * combine.c (distribute_notes): If a REG_UNUSED reg is no longer set by an insn, but is still used by the insn, then must convert the REG_UNUSED note to a REG_DEAD note. * gcc.c (SIGNED_CHAR_SPEC): Put ifndefs around it, so that it can be overriden by a definition in the tm.h file. * cse.c (cse_insn): Add missing third parameter to find_reg_note calls. * tm-arm.h (INIT_CUMULATIVE_ARGS): Take LIBNAME as third argument. * combine.c (can_combine_p): Remove extra argument in call to find_reg_note. * rtlanal.c (find_regno_note): Verify that the note contains a REG before checking its REGNO. * cse.c (canon_reg): Fix spacing/punctuation error. * recog.c (constrain_operands): Likewise. * tree.h: Likewise. * varasm.c (Assemble function): Likewise.Wed Jun 19 13:14:22 1991 Tom Wood (wood at geech.gnu.ai.mit.edu) * local-alloc.c (block_alloc): When counting instructions, abort if a loop is detected. Improperly threaded insns are easy to produce when working on the scheduler.Sat Jun 15 06:13:11 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * combine.c (simplify_and_const_int, case ASHIFTRT): Avoid infinite loop if simplify_shift_const doesn't do anything.Thu Jun 13 09:05:12 1991 Tom Wood (wood at dg-rtp.dg.com) * m88k.md (decrement_and_branch_until_zero): Add this insn. Thu Jun 13 07:32:37 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * explow.c (plus_constant): Fix error in last change; CONST case wasn't handled correctly. * tm-m68k.h (CONST_CONSTS): Constants between -7 and -1 are cheap because of subq. * m68k.md (dbra): Operand 0 should have '+' constraint, not '='. * expmed.c (store_fixed_bit_field): Clean up some confusion between targets and results in expand_binop calls. * local-alloc.c (optimize_reg_copy): Fix several typos relating to status updating. Correctly handle the case where DEST dies before SRC. Fix some comments that had SRC and DEST backwards. * combine.c (can_combine_p): Swap order of args of && to avoid unnecessary calls to use_crosses_set_p. (simplify_and_const_int, case SUBREG): Make code agree with comment. * emit-rtl.c (operand_subword): Avoid compilation warning. * expmed.c (store_fixed_bit_field): Don't use OP0 as SUBTARGET if it is a MEM and -fforce_mem was specified. * expmed.c (emit_store_flag): After scc insns, convert to wider mode using unsigned conversion if STORE_FLAG_VALUE is positive. * expmed.c (init_expmed): Use mode of size BITS_PER_WORD instead of SImode. (store_bit_field, extract_bit_field): Replace references to SImode with MAXMODE. (store_fixed_bit_field, extract_fixed_bit_field): Don't use explicit modes; use get_best_mode instead. (store_split_bit_field, extract_split_bit_field): Use operand_subword and mode_for_size instead of making SUBREGs and using SImode. * stor-layout.c (get_best_mode): Allow LARGEST_MODE to be VOIDmode, in which case we can use any appropriate mode.Wed Jun 12 16:32:37 1991 Michael Tiemann (tiemann at pogo.gnu.ai.mit.edu) * cplus-decl.c (init_decl_processing): Compensate for tm-sparc.h change to WCHAR_TYPE handling.Wed Jun 12 10:19:13 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * tm-sparc.h (WCHAR_TYPE): Must be "short unsigned int". * combine.c (subst, make_extraction, simplify_shift_const): Don't change mode of volatile MEM; replaces similar change of June 1st. * function.c (fixup_var_refs_1, optimize_bit_field): Likewise. * recog.c (validate_replace_rtx_1): Likewise.Tue Jun 11 22:09:28 1991 Michael Tiemann (tiemann at cygint.cygnus.com) * expr.c (expand_expr, case COND_EXPR): Expressions of both the form X ? A + 1 : A and X ? A : A + 1 were being done, but only the former was being handled correctly.Tue Jun 11 12:13:53 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * recog.c (validate_replace_rtx_1): If putting a CONST_INT in a ZERO_EXTEND or SIGN_EXTEND, try to simplify the operation or fail; the semantics of the operation require a non-VOIDmode argument. * cse.c (delete_dead_from_cse): Don't delete last insn in a libcall. * explow.c (allocate_dynamic_stack_space): Don't clobber SIZE when rounding it. * fold-const.c (fold, case COND_EXPR): Ensure we always return an expression in the correct type. * expr.c (emit_push_insn): Don't need to put X in register if it is constant; operand_subword_force can do so if needed. * reload.c (find_reloads): Simplify nested `if' statements. * recog.c (constrain_operands): Likewise. * jump.c (mark_jump_label): Fix typo (extra paren) in last change.Tue Jun 11 10:03:08 1991 Micheal Tiemann (tiemann at pogo.gnu.ai.mit.edu) * collect2.c: New file. * sched.c (memrefs_conflict_p): Finish removing ASHIFT case. * emit-rtl.c (operand_subword): Change test of BITS_PER_WORD < HOST_BITS_PER_WORD from compile-time to run-time. * expr.c (emit_push_insn): Ditto. * recog.c (constrain_operands): Ditto. * reload.c (find_reloads): Ditto. * jump.c (jump_optimize): Add `continue' after deleting INSN in case where further attempts to optimize the insn are invalid. (mark_jump_label): Don't crash if NEXT == 0.Tue Jun 11 09:14:05 1991 Tom Wood (wood at dg-rtp.dg.com) * out-m88k.c (legitimize_operand): New function to convert CONST_DOUBLE to SFmode when possible. * m88k.md (cmpdf, adddf3, subdf3, muldf3, divdf3): Use it. * tm-m88k.h: Declare it. * xm-m88k.h (OBSTACK_CHUNK_SIZE): For DG/UX at least, the default value results in a perfect checkerboard.Tue Jun 11 07:23:45 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * expr.c (expand_expr, case FLOAT_EXPR, FIX_EXPR): Don't try to do any partial conversions here; expand_fix and expand_float now handle all modes. * optabs.c (fixtab, fixtrunctab, floattab): Table now contains all modes. (can_fix_p, can_float_p): Use mode as index in tables. (init_fixtab, init_floattab): Likewise. Add support for QImode and HImode operations. (expand_float): Rework to remove dependendence on specific modes. Can only use REAL_VALUE_LDEXP in certain configurations. (expand_fix): Likewise. If can't do operation unsigned, or signed into wider mode, emit a sequence that compares operand with 2**(N-1) and, if larger, subtracts 2**(N-1), converts, and adds it back. Protect from queue and force not memory at start. * m88k.md (fixuns_truncdfsi2, fixuns_truncsfsi2): Deleted; now done in expand_fix in optabs.c. * combine.c (expand_field_assignment): Convert SET_SRC to mode of INNER. (simplify_shift_const, case ASHIFTRT): Don't use undefined initial value of MASK. * explow.c: Include insn-config.h, recog.h, and insn-codes.h. (allocate_dynamic_stack_space): Rework to be more precise in required alignment. Must maintain alignment of stack to STACK_BOUNDARY at all times (it must not be momentarily misaligned) and must align returned address to BIGGEST_ALIGNMENT. * Makefile.in (explow.o): Show new includes.Tue Jun 11 07:22:54 1991 Matthew Self (mself at next.com) * m68k.md: Change incorrect reference to -m68040-fp to -m68040-only. Fix several spelling errors. * m68k.md (fix_trunc*f*i2): New insn's to replace fintrz on the '040. These emit a sequence of insn's to change the rounding mode to round-to-zero, perform the truncation, and restore the rounding mode. Mon Jun 10 09:57:31 1991 Michael Tiemann (tiemann at cygint.cygnus.com) * c-lang.c (GNU_xref_{begin,end}): Add stub functions for xref info. * cplus-decl.c (record_builtin_type): Add support for handling builtin types' nicknames (e.g. "unsigned long" for "long unsigned int"). * expmed.c (struct algorithm): Change array size from BITS_PER_WORD to MAX_BITS_PER_WORD. gcc.texinfo: Document MAX_BITS_PER_WORD.Mon Jun 10 07:45:17 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * combine.c (try_combine): When making an I1 from an I2 that is a PARALLEL, give the new I1 the same INSN_UID as I2. * recog.c (constrain_operands, case 'p'): Pass operand mode (from match_operand) to strict_memory_address_p. * m68k.md (andsi3): bclr does not set the condition codes in the standard way.Sun Jun 9 11:16:24 1991 Richard Kenner (kenner at vlsi1.ultra.nyu.edu) * reload.c (find_reloads): Swap preferred_class and pref_or_nothing when we swap commutative operands. * combine.c (subst, simplify_shift_const): Treat UDIV and MULT with a second operand of a constant that is a power of two as the appropriate shift if it feeds or is fed by a shift. * expmed.c (expand_divmod): When searching for the best mode to perform the computation, take into account the fact that we sometimes do a shift, not a divide. * expmed.c (emit_store_flag): Correctly handle "a = b < 0;" if A is narrower tha
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -