+2004-07-06 Jan Beulich <jbeulich@novell.com>
+
+ * expmed.c (emit_store_flag): Also special-case double-word
+ (in-)equality comparison against -1.
+
+ * config/i386/i386.c (ix86_gimplify_va_arg): Don't need temporary for
+ passing arguments the containers for which are registers.
+
+ * calls.c (emit_library_call_value_1): Use mode of function parameter
+ rather than that of argument since constants have none.
+
+2004-07-08 Alexandre Oliva <aoliva@redhat.com>
+
+ Introduce H8SX support.
+ * expr.c (expand_strcpy): Renamed and moved to...
+ * builtins.c (expand_movstr): ... here. Tweak.
+ (expand_builtin_strcpy): Adjust. Use movstr if len can't be
+ computed or has side effects.
+ (expand_builtin_stpcpy): Likewise. Use strcpy if return value is
+ unused, or if mempcpy fails. Adjust the return value in the
+ latter case. Use movstr if everything else fails.
+ * doc/md.texi (movstr): Document.
+ (movmemM, clrmemM): Fix explanation of memory block operands.
+ * config/h8300/h8300.md (stpcpy): Renamed to...
+ (movstr): ... this. Adjust.
+ 2004-07-07 Alexandre Oliva <aoliva@redhat.com>
+ * config/h8300/h8300.md: Rename movstr*, except for movstrict*, to
+ movmem* and clrstr* to clrmem*.
+ 2004-06-27 Alexandre Oliva <aoliva@redhat.com>
+ * config/h8300/h8300.c (h8300_reg_class_from_letter): Map 'D' to
+ GENERAL_REGS, always.
+ (h8300_swap_into_er6, h8300_swap_into_er6): Handle the case of
+ getting the stack pointer as addr.
+ * config/h8300/h8300.h (PREDICATE_CODES): Remove constant rtxes
+ from general_operand_dst.
+ * config/h8300/h8300.md (movmd_internal_normal): New, normal-mode
+ variant of...
+ (movmd_internal): ... this. Add modes to operands. Disparage `D'
+ instead of requiring it to match only before reload.
+ (stpcpy_internal_normal): New, normal-mode variant of...
+ (stpcpy_internal): ... this. Add modes to operands. Disparage
+ `D' instead of requiring it to match only before reload.
+ * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Add
+ mode argument.
+ * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Pass it to...
+ * config/h8300/h8300.c (h8300_legitimate_address_p): Pass it to
+ h8300_get_index.
+ * config/h8300/h8300.md (attr type): Add call.
+ (attr can_delay): If type is call, set it no.
+ (call, call_value): Set type to call.
+ 2004-06-21 Alexandre Oliva <aoliva@redhat.com>
+ * config/h8300/h8300.md (logicalhi3_sn, logicalsi3_sn): New.
+ 2004-06-16 Alexandre Oliva <aoliva@redhat.com>
+ * tree.c (get_narrower): Don't narrow integral types into
+ non-integral types.
+ * config/h8300/h8300.c (h8300_expand_epilogue): Initialize
+ frame_size *before* the first use.
+ * config/h8300/h8300.md (movstrictqi): Reintroduce post-increment
+ on input.
+ (peephole2): Don't widen instructions that push SP. Move
+ decrement of SP to the end of all stm-generating peepholes.
+ 2003-07-24 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.md (insv): Prefer to use AND to clear a bitfield
+ and OR to set it to all ones.
+ 2003-07-24 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.md (can_delay): Default to "no" for bit branches.
+ (call, call_value): Set can_delay to "no".
+ 2003-07-22 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.md (extzv): Make subreg check more robust.
+ 2003-07-21 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.md (*brabit): Remove.
+ * config/h8300/h8300.md (*brabc, *brabs): Remove mode from
+ zero_extract. Use bit_memory_operand as the predicate for
+ operand 1 and 'WU' as the constraint. Check the difference
+ between the base length and the final one when deciding which
+ type of branch to use.
+ 2003-07-21 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.md (extzv): Remove mode from operands 0 and 1.
+ Use convert_move to extend the result for TARGET_H8300SX. Check
+ for QImode memory references. Optimize the case where the
+ destination is a paradoxical subreg.
+ 2003-07-21 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.md (*movsf_h8sx): Add an r <- G alternative.
+ * config/h8300/h8300.md (andqi): Remove bclr from h8sx version.
+ 2003-07-21 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.md: Include mova.md
+ (length_table): Add mova and mova_zero.
+ * config/h8300/h8300.c (print_operand): Handle '%o'. Print a length
+ after all constant addresses for '%R', '%X', '%T' and '%S'.
+ (h8300_mova_length): New function.
+ (h8300_insn_length_from_table): Use it to handle mova and mova_zero.
+ * config/h8300/t-h8300 (mova.md): Generate from genmova.sh. Add to
+ dependencies for s-config, etc.
+ * config/h8300/gemova.sh: New file.
+ * config/h8300/mova.md: Generated.
+ 2003-07-20 Alexandre Oliva <aoliva@redhat.com>
+ * config/h8300/h8300.c (h8300_bitfield_length): New.
+ (nibble_operand): Adjust.
+ (h8300_binary_length): Handle conditional binary op.
+ (h8300_insn_length_from_table): Handle bitfield and bitbranch.
+ * config/h8300/h8300.h: Change constraints W# and Y# to P#>X and
+ P#<X, respectively. The original P is now IP4>X. Introduced P#>0
+ and P#<0, unused so far. W and Y are now prefixes to multi-letter
+ constraints. WU is introduced as a variant of U that requires a
+ mem, and is therefore considered an EXTRA_MEMORY_CONSTRAINT.
+ * config/h8300/h8300.md (attr type): Added bitbranch.
+ (attr length_table): Added bitfield and bitbranch.
+ (attr length): Compute bitbranch length.
+ (andqi): Separate pattern for H8300SX. Use bfld for loading the
+ least-significant bit of a byte.
+ (brabit, brabc, brabs): New.
+ (insv, extzv): Emit bfst and bfld on H8300SX.
+ (bfld, bfst, seq, sne): New.
+ (bstzhireg, cmpstz, bstz, bistz): New.
+ (cmpcondbset, condbset, cmpcondbclr, condbclr): New.
+ (cmpcondbsetreg, condbsetreg, cmpcondbclrreg, condbclrreg): New.
+ 2003-07-11 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.c (h8sx_binary_memory_operator): New function.
+ (h8sx_unary_memory_operator): New function.
+ * config/h8300/h8300.h (EXTRA_MEMORY_CONSTRAINT): Disable.
+ (PREDICATE_CODES): Add h8sx_{unary,binary}_memory_operator.
+ * config/h8300/h8300.md: Add peepholes to combine reloads and
+ arithmetic insns.
+ 2003-07-10 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h830.md (cmpqi): Use 'i' rather than 'n' in constraints.
+ (*cmphi_h8300hs, *addqi3, *addhi3_h8sx, subhi3): Likewise.
+ (and?i, ior?i, xor?i): Likewise.
+ 2003-07-10 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.c: Move enums and prototypes to head of file.
+ Various whitespace fixes.
+ (h8300_constant_length): New function, split out from...
+ (h8300_displacement_size): ...here. Rename h8300_displacement_length.
+ (h8300_classify_operand): Use IN_RANGE.
+ (h8300_classify_operand): Use h8300_constant_length.
+ (h8300_short_move_mem_p): Tighten size check.
+ (h8sx_mergeable_memrefs_p): Tighten equality check.
+ 2003-06-30 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.h (TARGET_CPU_CPP_BUILTINS): Define __H8300SX__
+ for -msx.
+ * config/h8300/crti.asm: Use .h8300sx or .h8300sxn for -msx code.
+ * config/h8300/crtn.asm: Likewise.
+ * config/h8300/lib1funcs.asm: Likewise. Use 32-bit pointers
+ if __H8300SX__ is defined.
+ 2003-06-27 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300-protos.h (h8300_get_index): Add mode parameter.
+ * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Update accordingly.
+ (GO_IF_MODE_DEPENDENT_ADDRESS): Treat POST_DEC, PRE_INC and indexed
+ addresses as mode-dependent.
+ * config/h8300/h8300.c (print_operand_address): Update call to
+ h8300_get_index.
+ (h8300_get_index): Take a mode argument. Rework to fix an
+ earlier misunderstanding.
+ 2003-06-26 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.c (zero_extendqisi2): Force the source operand
+ into a register if TARGET_H8300SX.
+ (*zero_extendqisi2_h8300hs, *extendqisi2_h8300): Disable for
+ TARGET_H8300SX. Also disable related define_splits.
+ (*zero_extendqisi2_h8sx, *extendqisi2_h8sx): New patterns.
+ 2003-06-23 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.c (h8300_rtx_costs): Add h8sx handling.
+ 2003-06-20 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.h (OK_FOR_Z): New macro.
+ (EXTRA_CONSTRAINT_STR): Check it.
+ * config/h8300/h8300.c (h8300_classify_operand): Accept null
+ class arguments.
+ (h8300_insn_length_from_table): Handle LENGTH_TABLE_MOV_IMM4.
+ * config/h8300/h8300.md (length_table): Add mov_imm4.
+ (movqi, movhi): Add Z <- W4 alternatives to h8sx patterns.
+ 2003-06-20 Richard Sandiford <rsandifo@redhat.com>
+ * genattrtab.c (write_eligible_delay): Allow candidate_insn to
+ be a label.
+ * config/h8300/h8300.h (DELAY_SLOT_LENGTH): New macro.
+ * config/h8300/h8300.c (h8300_reorg): New function.
+ (TARGET_MACHINE_DEPENDENT_REORG): Define.
+ * config/h8300/h8300.md (length): Subtract the length of the
+ delay slot from (pc) when checking the range of forward branches.
+ (delay_slot, can_delay): New attributes.
+ (define_delay): Add bra/s handling.
+ (movmd_internal, return_h8sx, *return_1): Set can_delay to no.
+ (jump): Add delayed-branch handling.
+ 2003-06-17 Richard Sandiford <rsandifo@redhat.com>
+ * expr.c (expand_strcpy): New function.
+ * builtins.c (expand_builtin_strcpy): Fall back on expand_strcpy.
+ (expand_builtin_stpcpy): Likewise.
+ * config/h8300/h8300-protos.h (h8sx_split_movmd): Remove.
+ (h8300_swap_into_er6, h8300_swap_out_of_er6): Declare.
+ * config/h8300/h8300.c (h8300_reg_class_from_letter): Tweak 'd'
+ handling to improve register allocation for -fno-omit-frame-pointer.
+ (h8sx_split_movmd): Delete, moving er6 handling into...
+ (h8300_swap_into_er6, h8300_swap_out_of_er6): ...these new functions.
+ * config/h8300/h8300.md (UNSPEC_STPCPY): New unspec constant.
+ (movmd): Add calls to copy_rtx.
+ (movmd_internal): In the second alternative, allow the initial and
+ final destination registers to be different . Update the splitter
+ accordingly. Call h8300_swap_into_er6 and h8300_swap_out_of_er6
+ instead of h8sx_split_movmd.
+ (stpcpy, movsd): New expanders.
+ (movsd_internal): New define_insn.
+ 2003-06-13 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300-protos.h (h8300_reg_class_from_letter): Declare.
+ (h8sx_emit_movmd, h8sx_split_movmd): Declare.
+ * config/h8300/h8300.h (reg_class): Add COUNTER_REGS, SOURCE_REGS
+ and DESTINATION_REGS.
+ (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
+ (REGNO_REG_CLASS): Map er4, er5 and er6 to the new classes.
+ (REG_CLASS_FROM_LETTER): Use h8300_reg_class_from_letter.
+ (h8300_move_ratio): Declare.
+ (MOVE_RATIO): Use it.
+ * config/h8300/h8300.c (h8300_move_ratio): New variable.
+ (h8300_init_once): Initialize it.
+ (h8300_reg_class_from_letter): New function.
+ (print_operand): Add an 'm' prefix for printing ".b", ".w" or ".l".
+ (h8sx_emit_movmd, h8sx_split_movmd): New functions.
+ * config/h8300/h8300.md (UNSPEC_MOVMD): New unspec constant.
+ (COUNTER_REG, SOURCE_REG, DESTINATION_REG): New register constants.
+ (movstrsi, movmd): New expanders.
+ (movmd_internal): New insn.
+ 2003-06-06 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.h (EXTRA_MEMORY_CONSTRAINT): Define.
+ 2003-06-04 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/elf.h (LINK_SPEC): Use -m h8300sxnelf for -msx -mn.
+ * config/h8300/h8300.c (asm_file_start): Use .h8300sxn likewise.
+ 2003-06-03 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.c (nibble_operand): Fix warning.
+ * config/h8300/h8300.md (movstricthi): Set adjust_length to no.
+ (movsi_h8sx): Likewise here and the normal h8sx movhi pattern.
+ (movsf_h8300h): Disable for TARGET_H8300SX.
+ 2003-06-03 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.h (PREDICATE_CODES): Add h8300_ldm_parallel,
+ h8300_stm_parallel and h8300_return_parallel.
+ * config/h8300/h8300.c (h8300_push_pop, h8300_stack_offset_p,
+ h8300_ldm_stm_regno, h8300_ldm_stm_parallel, h8300_ldm_parallel,
+ h8300_stm_parallel, h8300_return_parallel): New functions.
+ (h8300_expand_prologue): Don't enforce ldm/stm register alignment
+ if TARGET_H8300SX. Use h8300_push_pop.
+ (h8300_expand_epilogue): Likewise. Try to merge the return insn
+ and final pop when generating h8sx code. Always emit some form
+ of return insn.
+ * config/h8300/h8300.md: Don't enforce register alignment in
+ stm peepholes if TARGET_H8300SX.
+ (ldm_h8300s, stm_h8300s, return_h8sx): New patterns.
+ (ldm_h8300s_[234], stm_h8300_[234]): Disable.
+ (epilogue): Expect h8300_expand_epilogue to emit a return insn.
+ 2003-06-03 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/t-h8300 (MULTILIB_OPTIONS): Add a -msx multilib.
+ (MULTILIB_DIRNAMES): Add a directory for it.
+ (MULTILIB_MATCHES): Delete.
+ 2003-05-28 Richard Sandiford <rsandifo@redhat.com>
+ * final.c (walk_alter_subreg): Handle addresses with subregs
+ inside a ZERO_EXTEND or AND.
+ * config/h8300/h8300-protos.h (h8300_get_index): Declare.
+ * config/h8300/h8300.h (INDEX_REG_CLASS): Set to GENERAL_REGS
+ if TARGET_H8300SX.
+ (GO_IF_LEGITIMATE_ADDRESS): Use h8300_get_index.
+ * config/h8300/h8300.c (print_operand_address): Handle @(dd,RnL.b),
+ @(dd,Rn.w) and @(dd,ERn.L).
+ (h8300_displacement_size): Take the whole address as argument.
+ (h8300_classify_operand, h8300_short_move_mem_p): Adjust accordingly.
+ 2003-05-28 Richard Sandiford <rsandifo@redhat.com>
+ * config/mips/mips-protos.h (h8300_operands_match_p): Declare.
+ (h8sx_mergeable_memrefs_p): Declare.
+ * config/h8300/h8300.h (HAVE_POST_DECREMENT): Define to TARGET_H8300SX.
+ (HAVE_PRE_INCREMENT): Likewise.
+ (GO_IF_LEGITIMATE_ADDRESS): Accept pre/post increment/decrement
+ addresses for TARGET_H8300SX,
+ * config/h8300/h8300.c (print_operand_address): Deal with PRE_INC
+ and POST_DEC.
+ (movb_length_table, movl_length_table): New tables.
+ (movw_length_table): Define to movb_length_table.
+ (h8300_displacement_size): New, split out from...
+ (h8300_classify_address): ...here. Handle pre/post inc/dec.
+ (h8300_short_immediate_length): Allow H8OP_MEM_COMPLEX operands.
+ (h8300_insn_length_from_table): Add cases for movb, movw and movl.
+ (h8sx_mergeable_memrefs_p, h8300_operands_match_p): New functions.
+ (output_plussi): Use add.l #xx:3,Rn and sub.l #xx:3,Rn for h8sx.
+ (compute_plussi_length, compute_plussi_cc): Update accordingly.
+ (h8sx_unary_shift_operator): Get the mode from the operator.
+ (binary_shift_operator): Likewise.
+ * config/h8300/h8300.md: If a peephole2 applies gen_lowpart to
+ a memory reference, check whether the reference is offsettable.
+ (length_table): Add movb, movw and movl.
+ (movqi): Add new h8sx pattern. Don't force one operand to be a
+ register when generating h8sx code.
+ (movhi, movsi, movsf): Likewise.
+ (movstrictqi): Use the length_table attribute.
+ (movstricthi): Likewise. Add h8sx alternative for mov.w #xx:3,Rn.
+ (addqi3): Split into a define_expand and define_insn. Don't accept
+ memory operands in the expander. Use h8300_operands_match_p to
+ check for matching operands in the define_insn.
+ (subqi3, negqi2, one_cmplqi2): Likewise.
+ (add[hs]i3): Don't accept memory operands in the expander. Likewise
+ in any patterns that are unused in h8sx code. In the h8sx patterns,
+ use h8300_operands_match_p to check whether operands match.
+ (sub[hs]i3, and[hi]3, ior[hs]i3, xor[hs]i3, neg[hsi]3,
+ one_cmpl[hs]i3): Likewise.
+ (andqi3, iorqi3, xorqi3): Likewise. Don't call fix_bit_operand
+ in the expander.
+ 2003-05-23 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300-protos.h (expand_a_shift): Return a bool.
+ (h8300_insn_length_from_table): Add a second parameter.
+ (output_h8sx_shift): Declare.
+ * config/h8300/h8300.h (OK_FOR_W, OK_FOR_Y): New macros.
+ (EXTRA_CONSTRAINT): Replace with...
+ (EXTRA_CONSTRAINT_STR): ...this. Use OK_FOR_W and OK_FOR_Y.
+ (CONSTRAINT_LEN): Define, returning 2 for 'W' and 'Y'.
+ (PREDICATE_CODES): Add entries for h8sx_unary_shift_operator
+ and h8sx_binary_shift_operator.
+ * config/h8300/h8300.c (two_insn_adds_subs_operand): Return false
+ for TARGET_H8300SX.
+ (bit_operand): Replace use of EXTRA_CONSTRAINT with OK_FOR_U.
+ (bit_memory_operand, fix_bit_operand): Likewise.
+ (h8300_length_table_for_insn): Remove.
+ (h8300_classify_operand): Fix check for 16-bit operands in 32-bit
+ instructions.
+ (h8300_short_immediate_length, h8300_binary_length): New functions.
+ (h8300_insn_length_from_table): Add an opcodes parameter. Rework.
+ (output_plussi): Use sub to add negative constants.
+ (compute_plussi_length): Adjust accordingly.
+ (h8sx_single_shift_type): New enum.
+ (h8sx_single_shift, h8sx_unary_shift_operator,
+ h8sx_binary_shift_operator, output_h8sx_shift): New functions.
+ (expand_a_shift, expand_a_rotate): Emit nothing if the shift is a
+ single h8sx instruction. Return false in this case.
+ * config/h8300/h8300.md (length_table): Add short_immediate.
+ (length): Pass the operand array to h8300_insn_length_from_table.
+ (adjust_length): Assume "no" for insns with a length_table attribute.
+ (*cmphi_h8300hs, cmpsi): Add alternatives for #xx:3.
+ (*addhi3_h8300hs): Don't use for h8sx.
+ (*addhi3_h8sx): New pattern, with alternatives for add.w #xx:3
+ and sub.w #xx:3.
+ (ashl[qhs]i3, lshr[qhs]i3, ashr[qhs]i3, rotl[qhs]i3): Change operand
+ 1's predicate to nonimmediate_operand. Only skip default expansion
+ if expand_a_shift or expand_a_rotate returns true. Add new patterns
+ for single h8sx shift instructions.
+ 2003-05-22 Alexandre Oliva <aoliva@redhat.com>
+ * config/h8300/h8300.c (nibble_operand): Split out of...
+ (reg_or_nibble_operand): ... this.
+ * config/h8300/h8300.h (PREDICATE_CODES): Added nibble_operand.
+ * config/h8300/h8300.md: (mulqihi3, mulhisi3, umulqihi3,
+ umulhisi3): Introduce expand, and introduce separate insns for
+ sign- or zero-extended REG and already-extended CONST_INT.
+ 2003-05-20 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.c (h8300_unary_length): Fix miscounting.
+ * config/h8300/h8300.md (subqi3): Generalize for h8sx.
+ (subhi3): Likewise. Don't accept immediates for operand 1.
+ Remove the early clobber from second alternative of the h8300s pattern.
+ (subsi3): Generalize for h8sx. Force operand 2 into a register
+ on plain h8300 targets.
+ (subsi3_h8300): Use h8300_dst_operand for consistency with expander.
+ (subsi3_h8300h): Generalize for h8sx.
+ (one_cmplqi2, one_cmplhi2, one_cmplsi2): Likewise.
+ 2003-05-19 Alexandre Oliva <aoliva@redhat.com>
+ * config/h8300/h8300.c (reg_or_nibble_operand): New.
+ * config/h8300/h8300.h (PREDICATE_CODES): Adjust.
+ (TARGET_H8300SXMUL): New.
+ (CONST_OK_FOR_P): New.
+ (CONST_OK_FOR_LETTER_P): Adjust.
+ * config/h8300/h8300.md (mulqihi3, mulhisi3, umulqihi3,
+ umulhisi3): Accept 4-bit immediate on H8SX.
+ (mulhi3, mulsi3, smulsi3_highpart, umulsi3_highpart): New.
+ (udivsi3, divhi3, udivsi3, divsi3): New.
+ 2003-05-19 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300-protos.h (h8300_insn_length_from_table): Declare.
+ * config/h8300/h8300.h (OK_FOR_Q): New macro.
+ (EXTRA_CONSTRAINT): Use it to check the 'Q' constraint.
+ (PREDICATE_CODES): Add h8300_src_operand and h8300_dst_operand.
+ Add ADDRESSOF to the bit_operand entry.
+ * config/h8300/h8300.c (h8300_dst_operand): New predicate.
+ (h8300_src_operand): Likewise.
+ (bit_operand): Check nonimmediate_operand rather than general_operand.
+ Accept any nonimmediate_operand in h8sx code.
+ (h8300_and_costs): Initialize operands[1].
+ (h8300_rtx_costs) <AND>: Return false if the operands aren't valid.
+ (h8300_operand_class): New enum.
+ (h8300_length_table): New typedef.
+ (addb_length_table, addw_length_table, addl_length_table,
+ logicl_length_table): New tables.
+ (logicb_length_table, logicw_length_table): New macros.
+ (h8300_classify_operand, h8300_length_from_table,
+ h8300_length_table_for_insn, h8300_unary_length,
+ h8300_insn_length_from_table): New functions.
+ (output_plussi): Only use adds and subs for register destinations.
+ Disable redundant clause.
+ (compute_plussi_cc): Likewise.
+ (compute_plussi_length): Likewise. Use h8300_length_from_table
+ to work out the length of an insn.
+ (output_logical_op): Only use narrower immediate instructions
+ if the destination is a register.
+ (compute_logical_op_cc): Likewise.
+ (compute_logical_op_length): Likewise. Use h8300_length_from_table.
+ (h8300_adjust_insn_length): Tighten check for reg<->mem moves.
+ * config/h8300/h8300.md (length_table): New attribute.
+ (length): When an instruction has a length_table attribute, use
+ h8300_insn_length_from_table to calculate its default length.
+ (cmpqi): Use h8300_dst_operand for the first operand and
+ h8300_src_operand for the second.
+ (cmphi, *cmphi_h8300hs, cmpsi, negqi2, neghi2, neghi2_h8300h, negsi2,
+ negsi2_h8300h, addqi3, addhi3, *addhi3_h8300, *addhi3_h8300hs, addsi3,
+ addsi_h8300, addsi_h8300h, andhi3, andsi3, iorhi3,
+ iorsi3, xorhi3, xorsi3): Likewise.
+ (andqi3): Use h8300_src_operand for operand 2. Adjust the condition
+ so that it allows any combination of operands for TARGET_H8300SX.
+ (iorqi3, xorqi3): Likewise.
+ (cmpqi): Use the length_table attribute.
+ (*cmphi_h8300hs, cmpsi, addqi, *addhi3_h8300hs, andqi3, iorqi3,
+ xorqi3, negqi2, neghi2_h8300h, negsi2_h8300h): Likewise.
+ (cmpqi): Add 'Q' constraint.
+ (*cmphi_h8300hs, cmpsi, addqi, *addhi3_h8300hs, addsi_h8300h, andqi3,
+ iorqi3, xorqi3, negqi2, neghi2_h8300h, negsi2_h8300h): Likewise.
+ 2003-05-14 Richard Sandiford <rsandifo@redhat.com>
+ * config/h8300/h8300.h (MASK_H8300SX): New macro.
+ (TARGET_H8300S): True for both -ms and -msx.
+ (TARGET_H8300SX): New macro.
+ (TARGET_SWITCHES): Add entries for -msx and -mno-sx.
+ * config/h8300/h8300.c (asm_file_start): Write .h8300sx for -msx.
+ * config/h8300/elf.h (LINK_SPEC): Use -m h8300sxelf for -msx.
+ * config/h8300/t-h8300 (MULTILIB_MATCHES): Use -ms multilibs for -msx.
+ [Temporary change.]
+ 2003-02-28 Alexandre Oliva <aoliva@redhat.com>
+ * config/h8300/h8300.h (SIZE_TYPE, PTRDIFF_TYPE): Use short with
+ 16-bit pointers and 32-bit ints.
+ * config/h8300/h8300.h (LEGITIMATE_CONSTANT_P): Accept
+ CONST_DOUBLE with mode no wider than SImode.
+ * config/h8300/h8300.md (extendqisi2_h8300): Add constraints for
+ output operand.
+ 2003-02-27 Alexandre Oliva <aoliva@redhat.com>
+ * config/h8300/h8300.c (general_operand_src): Match CONSTANT_P_RTX
+ or SUBREG thereof.
+ * config/h8300/h8300.h (PREDICATE_CODES): Adjust.
+ 2003-02-22 Alexandre Oliva <aoliva@redhat.com>
+ * config/h8300/h8300.c (dosize): Truncate sign * size to Pmode.
+
+2004-05-28 Aaron W. LaFramboise <aaronraolete36@aaronwl.com>
+
+ * config.gcc (i[34567]86-*-mingw32*): Enable threads by default.
+
+2004-07-07 Per Bothner <per@bothner.com>
+
+ * flow.c (attempt_auto_inc): Remove now-redundant PUT_CODE.
+
+2004-07-07 Mike Stump <mrs@apple.com>
+
+ * darwin.h (ASM_OUTPUT_LABELREF): Fix -fno-leading-underscore.
+ * darwin.c (machopic_non_lazy_ptr_name, machopic_stub_name)
+ (machopic_finish): Likewise.
+
+2004-07-07 Richard Henderson <rth@redhat.com>
+
+ * tree-ssa-dom.c (simplify_switch_and_lookup_avail_expr): Look
+ through any value-preserving cast.
+
+2004-07-07 Alexandre Oliva <aoliva@redhat.com>
+
+ * function.c (assign_parm_find_data_types): Call
+ FUNCTION_ARG_PASS_BY_REFERENCE only if it's defined.
+
+2004-07-07 Steven Bosscher <stevenb@suse.de>
+
+ * tree-cfg.c (group_case_labels): Remove case labels that have
+ the same target as the default case.
+
+2004-07-07 Steven Bosscher <stevenb@suse.de>
+
+ * tree-inline.c (optimize_inline_calls): Set DECL_INLINED_FNS
+ regardless of DECL_LANG_SPECIFIC being present or not.
+ * tree.h (DECL_NUM_STMTS): Purge.
+
+2004-07-07 Andrew Pinski <apinski@apple.com>
+
+ * configure: Regenerate with the right autoconf.
+
+2004-07-07 David Edelsohn <edelsohn@gnu.org>
+
+ * ifcvt.c (total_bb_rtx_cost): New function.
+ (find_if_case_1): Compare rtx_cost of basic block to cost of
+ BRANCH_COST insns.
+ (find_if_case_2): Same.
+
+2004-07-07 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR target/10567
+ * config/sparc/sparc.c (load_pic_register): Honor flag_delayed_branch.
+ (output_return): Likewise.
+ (output_sibcall): Abort if !flag_delayed_branch.
+ (sparc_function_ok_for_sibcall): Return 0 if !flag_delayed_branch.
+ (emit_and_preserve): New function.
+ (sparc_output_mi_thunk): Use it. Honor flag_delayed_branch. Emit an
+ indirect jump to the thunked-to function if !flag_delayed_branch.
+ * config/sparc/sparc.md (delayed_branch): New attribute.
+ (load_pcrel_sym): Honor flag_delayed_branch. Use above
+ attribute to compute the length of the insn.
+ (goto_handler_and_restore): Likewise.
+
+2004-07-07 Andrew Pinski <apinski@apple.com>
+
+ PR tree-optimization/15777
+ * fold-const.c (fold_single_bit_test): Fold the x^1 expression.
+
+ * expr.c (expand_expr_real_1): Fix formating.
+ BUFFER_REF and IN_EXPR are dead.
+ * fold-const.c (non_lvalue): BUFFER_REF is dead.
+ * tree-inline.c (estimate_num_insns_1): Likewise.
+ * tree-pretty-print.c (dump_generic_node): BUFFER_REF,
+ IN_EXPR, SET_LE_EXPR, and CARD_EXPR are dead.
+ * tree.def (BUFFER_REF, IN_EXPR, SET_LE_EXPR, CARD_EXPR): Kill.
+
+2004-07-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * collect2.c (dump_file): Don't call cplus_demangle if
+ HAVE_LD_DEMANGLE is defined.
+ (main): Pass "--demangle" to ld if no_demangle is not 0 and
+ HAVE_LD_DEMANGLE is defined. Don't set current_demangling_style
+ if HAVE_LD_DEMANGLE is defined.
+
+ * configure.ac (--with-demangler-in-ld): Added
+ (HAVE_LD_DEMANGLE): Define if ld supports --demangle when
+ --with-demangler-in-ld is used.
+ * config.in: Regenerated.
+ * configure: Likewise.
+
+2004-07-07 Roger Sayle <roger@eyesopen.com>
+
+ * config/rs6000/rs6000.c (struct processor_costs): Add new fields
+ for simple floating point operations "fp", double precision
+ multiplication "dmul", and single and double precision division
+ "sdiv" and "ddiv". Update all CPU variant tables as appropriate.
+ (ppc630_cost): New table split from ppc620_cost, to distinguish
+ differences in floating point latencies.
+ (rs6000_override_options): Use ppc630_cost for PROCESSOR_PPC630.
+ (rs6000_rtx_costs): Add support for single and double precision
+ floating point addition, subtraction, multiplication, division,
+ fused-multiply-add, fused-multiply-sub, negation, absolute value
+ and negative absolute value. Tweak MEM case to use prefered idiom.
+
+2004-07-07 Richard Henderson <rth@redhat.com>
+
+ * tree-flow-inline.h (may_propagate_copy): Move...
+ * tree-ssa-copy.c (may_propagate_copy): ... here. Fail if we
+ attempt to copy between types requiring conversion.
+ * tree-flow.h (may_propagate_copy): Update decl.
+ * tree-ssa-dom.c (cprop_operand): Tidy redundant tests.
+
+2004-07-07 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/i386.c (override_options): Don't set x86_prefetch_sse
+ from -mtune= option.
+
+2004-07-07 Alexandre Oliva <aoliva@redhat.com>
+
+ * builtins.c: Rename movstr*, except for movstrict*, to
+ movmem* and clrstr* to clrmem*.
+ * expr.c: Likewise.
+ * expr.h: Likewise.
+ * genopinit.c: Likewise.
+ * integrate.c: Likewise.
+ * local-alloc.c: Likewise.
+ * optabs.c: Likewise.
+ * optabs.h: Likewise.
+ * config/alpha/alpha.h: Likewise.
+ * config/alpha/alpha.md: Likewise.
+ * config/arm/arm-protos.h: Likewise.
+ * config/arm/arm.c: Likewise.
+ * config/arm/arm.md: Likewise.
+ * config/avr/avr.md: Likewise.
+ * config/c4x/c4x.c: Likewise.
+ * config/c4x/c4x.md: Likewise.
+ * config/frv/frv.md: Likewise.
+ * config/i386/i386-protos.h: Likewise.
+ * config/i386/i386.c: Likewise.
+ * config/i386/i386.h: Likewise.
+ * config/i386/i386.md: Likewise.
+ * config/i860/i860.c: Likewise.
+ * config/i860/i860.md: Likewise.
+ * config/ip2k/ip2k.md: Likewise.
+ * config/ip2k/libgcc.S: Likewise.
+ * config/ip2k/t-ip2k: Likewise.
+ * config/m32r/m32r.c: Likewise.
+ * config/m32r/m32r.md: Likewise.
+ * config/mcore/mcore.md: Likewise.
+ * config/mips/mips.c: Likewise.
+ * config/mips/mips.md: Likewise.
+ * config/ns32k/ns32k.c: Likewise.
+ * config/ns32k/ns32k.h: Likewise.
+ * config/ns32k/ns32k.md: Likewise.
+ * config/pa/pa.c: Likewise.
+ * config/pa/pa.md: Likewise.
+ * config/pdp11/pdp11.h: Likewise.
+ * config/pdp11/pdp11.md: Likewise.
+ * config/rs6000/rs6000.c: Likewise.
+ * config/rs6000/rs6000.md: Likewise.
+ * config/s390/s390-protos.h: Likewise.
+ * config/s390/s390.c: Likewise.
+ * config/s390/s390.md: Likewise.
+ * config/sh/lib1funcs.asm: Likewise.
+ * config/sh/sh.c: Likewise.
+ * config/sh/sh.md: Likewise.
+ * config/sh/t-sh: Likewise.
+ * config/sparc/sparc.h: Likewise.
+ * config/vax/vax.md: Likewise.
+ * config/xtensa/xtensa.c: Likewise.
+ * config/xtensa/xtensa.md: Likewise.
+ * doc/invoke.texi: Likewise.
+ * doc/md.texi: Likewise.
+ * doc/rtl.texi: Likewise.
+
+2004-07-07 Richard Sandiford <rsandifo@redhat.com>
+
+ PR target/16407
+ * config/mips/mips-protos.h (mips_declare_common_object): Declare.
+ * config/mips/mips.c (mips_declare_common_object): New function,
+ mostly split out from...
+ (mips_output_aligned_decl_common): ...here.
+ * config/mips/mips.h (ASM_OUTPUT_LOCAL): Remove in favor of...
+ (ASM_OUTPUT_ALIGNED_LOCAL): ...this new definition.
+ * config/mips/iris6.h (ASM_OUTPUT_ALIGNED_LOCAL): Undefine this
+ rather than ASM_OUTPUT_LOCAL. Call mips_declare_common_object.
+
+2004-07-07 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR c/16392
+ * function.c (assign_parms): Fix typo from previous change.
+
+2004-07-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/15815
+ * doc/extend.texi (C++ Interface): Correct information and
+ discourage use.
+
+2004-07-07 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/16130
+ PR target/16142
+ PR target/16143
+ * config/ia64/ia64.c (ia64_dfa_new_cycle): Reset DFA state for asm
+ insn.
+
+2004-07-06 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
+
+ PR target/1679.
+ * config/m32r/m32r.c (m32r_function_symbol): New function:
+ Generate a symbol name RTX with the correct m32r specific flags
+ set.
+ (block_move_call): Use new function to generate correct symbol.
+ * config/m32r/m32r-protos.h: Add prototype for new funcion.
+ * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Use the new
+ function.
+
+2004-07-07 Nathan Sidwell <nathan@codesourcery.com>
+
+ * tree.h (TYPE_BINFO_OFFSET, TYPE_BINFO_VTABLE,
+ TYPE_BINFO_VIRTUALS, TYPE_BINFO_BASETYPES,
+ TYPE_BINFO_BASETYPE): Remove.
+ (BINFO_BASETYPES, BINFO_N_BASETYPES, BINFO_BASETYPE): Rename
+ to ...
+ (BINFO_BASE_BINFOS, BINFO_N_BASE_BINFOS, BINFO_BASE_BINFO): ...
+ here.
+ (BINFO_BASEACCESSES, BINFO_BASEACCESS): Rename to ...
+ (BINFO_BASE_ACCESSES, BINFO_BASE_ACCESS): ... here.
+ (BINFO_INHERITANCE_CHAIN): Redocument as it is actually used.
+ (struct tree_binfo): Rename base_types to base_binfos.
+ * alias.c (record_component_aliases): Adjust BINFO macros.
+ * dbxout.c (dbxout_type): Likewise.
+ * dwarf2out.c (gen_member_die): Likewise.
+ * sdbout.c (sdbout_one_type): Likewise.
+ * tree-dump.c (deque_and_dump): Likewise.
+ * config/i386/i386.c (classify_argument,
+ contains_128bit_aligned_vector_p): Likewise.
+
+2004-07-07 Nick Clifton <nickc@redhat.com>
+
+ * config/fr30/fr30.c (fr30_setup_incoming_varargs): Change
+ arguments to match TARGET_SETUP_INCOMING_VARARGS prototype.
+
+2004-07-07 Nathan Sidwell <nathan@codesourcery.com>
+
+ * vec.h: Fix the example use.
+
+2004-07-06 Richard Henderson <rth@redhat.com>
+
+ * langhooks-def.h (LANG_HOOKS_GIMPLE_BEFORE_INLINING): Remove.
+ * langhooks.h (struct lang_hooks): Remove gimple_before_inlining.
+ * tree-inline.c (copy_body_r, setup_one_parameter,
+ initialize_inlined_parameters, expand_call_inline,
+ declare_inline_vars): Don't check it.
+ (expand_calls_inline): Remove old version, rename new version
+ from gimple_expand_calls_inline.
+ * tree-optimize.c (execute_gimple): Remove.
+ (pass_gimple): Don't run anything.
+
+2004-07-06 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * doc/sourcebuild.texi: Use semicolons instead of commas in
+ section title.
+
+2004-07-06 Richard Henderson <rth@redhat.com>
+
+ * tree-sra.c (struct sra_walk_fns): Revert 2004-07-05 change.
+ (sra_walk_modify_expr, scan_init): Likewise.
+ (generate_element_zero): Check visited before scanning children.
+ (generate_element_init): Set visited on error.
+ (scalarize_init): Handle generate_element_init failure similar
+ to use_block_copy.
+
+2004-07-06 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * toplev.h (NO_FRONT_END_DIAG, ATTRIBUTE_GCC_FE_DIAG): Define.
+ (warning, error, pedwarn, sorry): Use ATTRIBUTE_GCC_FE_DIAG.
+
+2004-07-06 Richard Henderson <rth@redhat.com>
+
+ * config/i386/i386.c (legitimize_pic_address): Make static.
+ (legitimize_address): Handle CONST with TLS operand.
+ (ix86_expand_move): Don't call legitimize_pic_address directly.
+ * config/i386/i386-protos.h (legitimize_pic_address): Remove.
+
+2004-07-06 Roger Sayle <roger@eyesopen.com>
+
+ * ifcvt.c (struct noce_if_info): Add a Boolean b_unconditional field.
+ (noce_try_sign_mask): Tweak rtx_cost check if t is evaluated anyway.
+ (noce_process_if_block): Initialize if_info.b_unconditional if insn_b
+ is currently executed unconditionally, i.e. not in "else_bb".
+
+2004-07-06 Steven Bosscher <stevenb@suse.de>
+
+ * config/alpha/alpha.c (alpha_use_dfa_pipeline_interface): Remove.
+ (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
+ * config/arm/arm.c (arm_use_dfa_pipeline_interface): Remove.
+ (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
+ * config/frv/frv.c (frv_use_dfa_pipeline_interface): Remove.
+ (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
+ * config/i386/i386.c (ia32_use_dfa_pipeline_interface): Remove.
+ (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
+ * config/ia64/ia64.c (ia64_use_dfa_pipeline_interface): Remove.
+ (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
+ * config/pa/pa.c (hhpa_use_dfa_pipeline_interface): Remove.
+ (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
+ * config/sparc/sparc.c (sparc_use_dfa_pipeline_interface): Remove.
+ (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
+ * config/v850/v850.c (v850_use_dfa_pipeline_interface): Remove.
+ (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
+
+2004-07-06 Daniel Berlin <dberlin@dberlin.org>
+
+ * dojump.c (do_jump): REFERENCE_EXPR is dead.
+ * expr.c (expand_expr_real_1): Ditto.
+ * tree-inline.c (estimate_num_insns_1): Ditto.
+ * tree-pretty-print.c (dump_generic_node): Ditto.
+ (op_symbol): Ditto.
+ * tree.def: Ditto.
+
+2004-07-06 Daniel Berlin <dberlin@dberlin.org>
+
+ * tree-ssa-pre.c (reference_node_pool): New pool.
+ (find_or_generate_expression): Class 'r' is okay too.
+ (create_value_expr_from): Ditto.
+ (add_to_sets): LHS should not include vuses.
+ (eliminate): Ditto.
+ (compute_avail): Reverse ordering of tests.
+ Valuize INDIRECT_REF as well.
+
+2004-07-06 Richard Sandiford <rsandifo@redhat.com>
+
+ PR rtl-optimization/16380
+ * loop.c (check_dbra_loop): Sink comparison instructions if they
+ do something other than set cc0.
+
+2004-07-06 James E Wilson <wilson@specifixinc.com>
+
+ * doc/interface.texi (longjmp and automatic variables): Delete
+ paragraph recommending taking the address of a variable.
+
+2004-07-06 Nathan Sidwell <nathan@codesourcery.com>
+
+ * vec.h (VEC_embedded_alloc): Remove.
+ (VEC_embedded_size, VEC_embedded_init): New.
+ (VEC_alloc, VEC_reserve, VEC_safe_push, VEC_safe_insert): Add
+ MEM_STAT_INFO.
+ (VEC_truncate): New.
+ (vec_p_reserve, vec_o_reserve): Add MEM_STAT_DECL.
+ (vec_embedded_alloc): Remove.
+ * vec.c (vec_p_reserve, vec_o_reserve): Add MEM_STAT_DECL, adjust.
+ (vec_embedded_alloc): Remove.
+
+2004-07-06 Mark Mitchell <mark@codesourcery.com>
+
+ * Makefile.in (langhooks.o): Do not depend on gt-langhooks.h.
+ (gt-langhooks.h): Remove.
+
+2004-07-06 George Helffrich <george@gly.bris.ac.uk>
+
+ * xcoffout.h (DBX_FINISH_SYMBOL): Fix typo.
+
+2004-07-06 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sparc.c (get_pc_symbol): Rename into
+ add_pc_to_pic_symbol.
+ (get_pc_symbol_name): Rename into add_pc_to_pic_symbol_name.
+ (load_pic_register): Account for previous changes.
+ Use reg_names. Don't create the label twice.
+ * config/sparc/sparc.md (UNSPEC_GET_PC): Rename into
+ UNSPEC_LOAD_PCREL_SYM.
+ (get_pc): Rename into load_pcrel_sym. Add predicate to
+ operands. Remove condition.
+
+2004-07-06 Nathan Sidwell <nathan@codesourcery.com>
+
+ * dbxout.c (dbxout_type): Don't test whether the binfo slot of
+ RECORD, UNION & QUAL_UNION is actually a binfo.
+
+ * tree.h (TREE_VIA_VIRTUAL): Rename to ...
+ (BINFO_VIRTUAL_P): ... here. Require TREE_BINFO only.
+ (BINFO_MARKED, BINFO_FLAG_[16]): New binfo flags.
+ * dbxout.c (dbxout_type): Use BINFO_VIRTUAL_P.
+ * dwarf2out.c (add_data_member_location_attribute): Likewise.
+ (gen_inheritance_die): Likewise.
+ * tree-dump.c (deque_and_dump): Likewise.
+ * doc/c-tree.texi (Binfos): Add under reconstruction note.
+
+2004-07-06 Steven Bosscher <stevenb@suse.de>
+
+ * config/mcore/mcore.c (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE):
+ Define.
+ * config/mcore/mcore.md: Model memory latency with a simple DFA
+ pipeline description instead of a define_function_unit.
+
+2004-07-05 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * langhooks-def.h (LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P): Extra arg.
+ * langhooks.h (var_mod_type_p): Likewise.
+ * c-decl.c (finish_decl): Add extra arg to variably_modified_type_p.
+ * expr.c (count_type_elements): Properly handle return from
+ array_type_nelts and properly test for overflow.
+ * gimplify.c (gimplify_init_constructor): Properly handle return
+ from array_type_nelts.
+ (gimplify_addr_expr): Remove redundant clear of TREE_SIDE_EFFECTS.
+ * integrate.c (copy_decl_for_inlining): Correct comments.
+ * tree-inline.c (remap_decl): Update comments, remove dead code,
+ and copy DECL_FIELD_OFFSET and DECL_QUALIFIER, if they exist.
+ (remap_type): Only remap if variably modified by vars in function
+ being inlined.
+ (copy_body_r): Use compatible_type langhooks to see when can fold.
+ (setup_one_parameter): Don't remap type.
+ (inline_forbidden_p_1): Add arg to variably_modified_type_p.
+ * tree.c (recompute_tree_invarant_for_addr_expr): Properly
+ compute TREE_INVARIANT for decl case.
+ (find_var_from_fn): New function.
+ (variably_modified_type_p): Add arg and call new function.
+ * tree.h (variably_modified_type_p): Add extra arg.
+
+2004-07-05 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sparc.md (nonlocal_goto): Remove disabled code.
+ (goto_handler_and_restore_v9): Delete disabled insn.
+ (goto_handler_and_restore_v9_sp64): Likewise.
+
+2004-07-05 Roger Sayle <roger@eyesopen.com>
+
+ * calls.c (load_register_parameters): Call expand_shift instead
+ of expand_binop with ashl_optab (or other shift optab) directly.
+ * expr.c (emit_group_load, emit_group_store): Likewise.
+ * function.c (assign_parm_setup_block): Likewise.
+ * stmt.c (shift_return_value): Likewise.
+
+2004-07-05 Jakub Jelinek <jakub@redhat.com>
+
+ * expr.c (expand_assignment): Disable the bitfield += optimizations.
+
+2004-07-05 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * doc/sourcebuild.texi: Revert previous patch.
+
+2004-07-05 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * c-decl.c, config/m32r/m32r.c, expr.c, optabs.c: Don't check
+ TARGET_MEM_FUNCTIONS.
+ * system.h: Poison TARGET_MEM_FUNCTIONS.
+ * libfuncs.h (LTI_bcopy, LTI_bcmp, LTI_bzero, bcopy_libfunc,
+ bcmp_libfunc, bzero_libfunc): Remove.
+ * optabs.c (init_obtabs): Don't set bcopy_libfunc, bcmp_libfunc or
+ bzero_libfunc.
+ * doc/tm.texi (TARGET_MEM_FUNCTIONS): Remove.
+ * doc/standards.texi: Don't mention calling BSD string functions.
+ * doc/invoke.texi: Likewise. Mention that memmove may be called.
+ * config/vax/t-memfuncs: New.
+ * config/memcmp.c, config/memcpy.c, config/memmove.c,
+ config/memset.c: New.
+ * config/pdp11/t-pdp11 (LIB2FUNCS_EXTRA): Use these files.
+ * config.gcc (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*): Use
+ vax/t-memfuncs.
+ * config/alpha/alpha.h, config/arc/arc.h, config/arm/arm.h,
+ config/avr/avr.h, config/c4x/c4x.h, config/cris/aout.h,
+ config/elfos.h, config/gnu.h, config/h8300/h8300.h,
+ config/i386/gas.h, config/ia64/ia64.h, config/interix.h,
+ config/ip2k/ip2k.h, config/lynx-ng.h, config/m32r/m32r.h,
+ config/mcore/mcore.h, config/mips/mips.h, config/mmix/mmix.h,
+ config/netbsd.h, config/openbsd.h, config/pa/pa.h,
+ config/rs6000/rs6000.h, config/rtems.h, config/s390/s390.h,
+ config/sh/sh.h, config/sparc/sparc.h, config/stormy16/stormy16.h,
+ config/svr3.h: Don't define TARGET_MEM_FUNCTIONS.
+
+2004-07-05 Richard Henderson <rth@redhat.com>
+
+ * function.c (assign_parm_setup_reg): Properly rename variables in
+ FUNCTION_ARG_CALLEE_COPIES section.
+
+2004-07-05 Zack Weinberg <zack@codesourcery.com>
+
+ * tree-mudflap.c: Include cgraph.h.
+ (mf_init_extern_trees): Rename to mudflap_init. Export.
+ Rewrite to create synthetic declarations instead of looking
+ up declarations from mf-runtime.h.
+ (mf_make_builtin, mf_make_cache_struct_type): New functions.
+ (mf_cache_shift_decl, mf_cache_mask_decl, mf_unregister_fndecl):
+ Correct commentary.
+ (execute_mudflap_function_decls, mudflap_register_call):
+ Don't call mf_init_extern_trees.
+ (mudflap_finish_file): Use cgraph_build_static_cdtor.
+
+ * tree-mudflap.h: Update prototypes.
+ * c-mudflap.c: Delete file.
+ * c-common.c: Include tree-mudflap.h.
+ (c_common_nodes_and_builtins): Call mudflap_init if appropriate.
+ * Makefile.in: Remove all references to c-mudflap.o.
+ Update dependencies.
+
+2004-07-05 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa.md (prefetch, prefetch_32, prefetch_64): Only allow short
+ displacements with the spatial-locality cache-control completer.
+
+2004-07-05 Zack Weinberg <zack@codesourcery.com>
+
+ * langhooks.c: Don't include gt-langhooks.h.
+ (var_labelno): Delete.
+ (lhd_set_decl_assembler_name): Do not append a distinguishing
+ number to file-scope internal-linkage declarations for the first
+ input file, even if they have DECL_CONTEXT set. Use DECL_UID of
+ the declaration itself (if at block scope), or its containing
+ TRANSLATION_UNIT_DECL (if at file scope) for the distinguishing
+ number.
+
+ * opts.c (cur_in_fname): New global.
+ * opts.h: Declare it.
+ * tree.c: Include opts.h.
+ (make_node_stat): If creating a TRANSLATION_UNIT_DECL, give it
+ DECL_UID equal to cur_in_fname.
+ (copy_node_stat): Do not change DECL_UID when copying a
+ TRANSLATION_UNIT_DECL.
+ (build_common_tree_nodes): Adjust next_decl_uid to reserve the
+ range 0 .. num_in_fnames-1 for TRANSLATION_UNIT_DECLs.
+
+ * c-decl.c (c_static_assembler_name): Delete.
+ * c-tree.h (c_static_assembler_name): Delete prototype.
+ * c-lang.c, objc/objc-lang.c: Don't override
+ LANG_HOOKS_SET_DECL_ASSEMBLER_NAME.
+
+ * Makefile.in (tree.o): Update dependencies.
+ (GTFILES): Remove langhooks.c.
+
+2004-07-05 Roger Sayle <roger@eyesopen.com>
+
+ * fold-const.c (fold) <TRUNC_MOD_EXPR>: Optimize unsigned modulus
+ by a power of two into a bit-wise AND, i.e. "X % C" as "X & (C-1)".
+ Normalize "X % C" as "X % -C" for signed modulus and negative C.
+ Optimize "X % -Y" as "X % Y" for signed modulus.
+ <EQ_EXPR>: Recursively call "fold" when transforming "(X % Y) == 0"
+ into "((unsigned) X % Y) == 0".
+
+2004-07-05 Joseph S. Myers <jsm@polyomino.org.uk>
+
+ * sourcebuild.texi (Config Fragments): Use @comma{} in
+ cross-reference to section title.
+
+2004-07-05 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * tree.h (DECL_SEEN_IN_BIND_EXPR_P): New macro.
+ * gimplify.c (gimple_add_tmp_var, gimplify_bind_expr): Use it.
+ (gimplify_target_expr, gimplify_expr): Likewise.
+ (copy_if_shared_r): No longer need special case for BIND_EXPR.
+ (unshare_body, unvisit_body): Only look at nested if BODY_P is
+ whole function.
+ (gimplify_compound_lval): See if we can strip any useless conversion.
+ (gimplify_modify_expr, gimplify_modify_expr_to_memcpy): Take size
+ from RHS, not LHS.
+ (gimplify_modify_expr_to_memset): Likewise.
+ (gimplify_expr, case CONSTRUCTOR): Handle use as statement.
+ * tree-inline.c (setup_one_parameter): Use DECL_SEEN_IN_BIND_EXPR_P.
+ (declare_inline_vars): Likewise.
+ (walk_type_fields): New function.
+ (walk_tree): Use it.
+ * tree-nested.c (create_tmp_var_for): Show seen in BIND_EXPR.
+
+ * tree-sra.c (struct sra_walk_fns): Init function now returns bool.
+ (sra_walk_modify_expr): Allow init function to fail.
+ (scan_init): Now returns bool.
+ (generate_element_init): If can't understand INIT, return false.
+ (scalarize_init): Return false if generate_element_init does.
+
+ * tree-pretty-print.c (dump_generic_node, case ARRAY_TYPE): Properly
+ print bounds.
+
+ * expr.c (expand_expr_real_1, case SWITCH_EXPR): Don't check against
+ bounds if bounds aren't constant.
+
+ * tree-cfg.c (verify_expr): Use CHECK_OP in binary case.
+
+ * function.c, langhooks-def.h, langhooks.h: Move max_size hook
+ to type hooks; remove bogus PARAMS.
+
+2004-07-05 Nathan Sidwell <nathan@codesourcery.com>
+
+ * c-tree.h (TYPE_ACTUAL_ARG_TYPES): Use TYPE_LANG_SLOT_1.
+ * dwarf2out.c (add_data_member_location_attribute): Check for
+ TREE_BINFO.
+ * tree.c (tree_node_kinds): Add "binfos".
+ (binfo_lang_slots): New.
+ (make_node_stat): Add TREE_BINFO.
+ (make_tree_binfo_stat): New.
+ (tree_node_structure): Add TREE_BINFO.
+ * tree.def (TREE_BINFO): New.
+ * tree.h (REC_OR_UNION_CHECK): Rename to ...
+ (RECORD_OR_UNION_CHECK): ... here.
+ (NOT_RECORD_OR_UNION_CHECK): New.
+ (TRE_VIA_VIRTUAL): Allow TREE_LIST or TREE_BINFO.
+ (TYPE_FIELDS, TYPE_METHODS, TYPE_VFIELD): Adjust for
+ RECORD_OR_UNION_CHECK.
+ (TYPE_BINFO): Use RECORD_OR_UNION_CHECK.
+ (TYPE_LANG_SLOT_1): New.
+ (BINFO_TYPE, BINFO_OFFSET, BINFO_VTABLE, BINFO_VIRTUALS,
+ BINFO_BASETYPES, TYPE_BINFO_BASETYPES, BINFO_VPTR_FIELD,
+ BINFO_BASEACCESSES, BINFO_INHERITANCE_CHAIN): Adjust.
+ (BINFO_ELTS): Remove.
+ (BINFO_LANG_SLOT): New.
+ (struct tree_binfo): New.
+ (binfo_lang_slots): Declare.
+ (enum tree_node_structure_enum): Add TS_BINFO.
+ (union tree_node): Add binfo.
+ (make_tree_binfo_stat): Declare.
+ (make_tree_binfo): New.
+ (enum tree_node_kind): Add binfo_kind.
+
+ * objc/objc-act.c (start_class, objc_declare_protocols,
+ start_protocols): Use TYPE_LANG_SLOT_1.
+ * objc/objc-act.h (CLASS_BINFO_ELTS, PROTOCOL_BINFO_ELTS): Rename
+ to ...
+ (CLASS_LANG_SLOT_ELTS, PROTOCOL_LANG_SLOT_ELTS): ... here.
+ (CLASS_IVARS, CLASS_RAW_IVARS, CLASS_STATIC_TEMPLATE,
+ CLASS_CATEGORY_LIST, CLASS_PROTOCOL_LIST, CLASS_OWN_IVARS,
+ PROTOCOL_LIST, PROTOCOL_FORWARD_DECL): Use TYPE_LANG_SLOT_1.
+
+2004-07-05 Steven Bosscher <stevenb@suse.de>
+
+ * rtl.h (struct rtx_def): Remove the integrated flag.
+ Use the return_val flag for MEM_SCALAR_P.
+ Reshuffle and update flags in CLEAR_RTX_FLAGS.
+
+2004-07-05 Richard Sandiford <rsandifo@redhat.com>
+
+ PR target/16357
+ * config/mips/mips.c (mips_block_move_straight): Pass BLKmode memrefs
+ to mips_expand_unaligned_load, mips_expand_unaligned_store, and
+ move_by_pieces.
+
+2004-07-05 Josef Zlomek <zlomekj@suse.cz>
+
+ * var-tracking.c: Fix some comments.
+ (frame_stack_adjust): New.
+ (vt_stack_adjustments): Init stack_adjust of entry block to
+ minus stack adjustment of function prologue.
+ (adjust_stack_reference): Do not adjust if adjustment == 0.
+ (compute_bb_dataflow): Use plus_constant instead of gen_rtx_PLUS.
+ (emit_notes_in_bb): Likewise.
+ (vt_add_function_parameters): Do not adjust locations of
+ function arguments.
+ (vt_initialize): Compute the stack adjustment of function
+ prologue and offset the initial "location" of frame_base_decl
+ from the stack pointer after prologue.
+
+2004-07-04 Richard Henderson <rth@redhat.com>
+
+ * function.c (struct assign_parm_data_all): New.
+ (struct assign_parm_data_one): New.
+ (assign_parms_initialize_all, assign_parms_augmented_arg_list,
+ assign_parm_find_data_types, assign_parms_setup_varargs,
+ assign_parm_find_entry_rtl, assign_parm_is_stack_parm,
+ assign_parm_find_stack_rtl, assign_parm_adjust_entry_rtl,
+ assign_parm_adjust_stack_rtl, assign_parm_setup_block_p,
+ assign_parm_setup_block, assign_parm_setup_reg,
+ assign_parm_setup_stack, assign_parms_unsplit_complex): Split from ...
+ (assign_parms): ... here.
+
+2004-07-04 Daniel Berlin <dberlin@dberlin.org>
+
+ * tree-ssa-pre.c (bb_value_sets): phi_gen, tmp_gen, new_sets
+ now are bitmap_set_t's.
+ (bitmap_insert_into_set): No point in inserting the value if
+ it's invariant.
+ (bitmap_set_contains): New function.
+ (bitmap_set_replace_value): Add comment on why we do it
+ this way.
+ (set_contains): Removed.
+ (bitmap_set_subtract_from_value_set): New name of
+ set_subtract now that it's arguments are two different
+ types of sets.
+ Update callers.
+ (bitmap_find_leader): Change algorithm used.
+ (find_or_generate_expression): Update use of functions for new
+ bitmap sets.
+ (create_expression_by_pieces): Ditto.
+ (insert_aux): Ditto.
+ (insert): Ditto.
+ (add_to_sets): Ditto.
+ (init_pre): Ditto.
+ (execute_pre): Ditto.
+ (compute_avail): Ditto.
+ Also ignore virtual phis.
+
+2004-07-04 Richard Sandiford <rsandifo@redhat.com>
+
+ * combine.c (simplify_comparison): Fix comment typo.
+
+2004-07-04 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sparc.c (SIBCALL_SLOT_EMPTY_P): Rename
+ into LEAF_SIBCALL_SLOT_RESERVED_P after negation.
+ (eligible_for_sibcall_delay): Adjust use of SIBCALL_SLOT_EMPTY_P.
+ (output_restore): Change parameter from 'insn' to 'pat'.
+ (output_return): Adjust call to output_restore.
+ (output_sibcall): Adjust use of SIBCALL_SLOT_EMPTY_P.
+ Adjust call to output_restore.
+
+2004-07-04 Neil Booth <neil@duron.akihabara.co.uk>
+
+ * config/netbsd.h (NETBSD_OS_CPP_BUILTINS_COMMON): Define __unix__
+ and assert system is bsd.
+
+2004-07-04 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/mips/mips.h (MASK_DEBUG_C, TARGET_DEBUG_C_MODE): Delete.
+ (TARGET_SWITCHES): Remove -mdebugc.
+ * config/mips/mips.md (seq, sne, sgt, sge, slt, sle, sgtu, sgeu)
+ (sltu, sleu): Remove TARGET_DEBUG_C_MODE handling.
+ (seq_[sd]i, sne_[sd]i, sge_[sd]i, sle_[sd]i_reg, sgeu_[sd]i)
+ (sle_[sd]i_reg): Delete.
+
+2004-07-04 Steven Bosscher <stevenb@suse.de>
+
+ * config/iq2000/iq2000.c (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE):
+ Define.
+ * config/iq2000/iq2000.md: Translate old pipeline description to an
+ equivalent new one.
+
+2004-07-04 Roger Sayle <roger@eyesopen.com>
+
+ * tree-ssa-ccp.c (set_rhs): Change function to return a bool.
+ Ensure the replacement rhs is valid gimple before performing
+ the substitution. Return false if these sanity checks fail.
+ (fold_stmt): Only set changed to true, if set_rhs returns true.
+ (execute_fold_all_builtins): Only call modify_stmt if set_rhs
+ succeeds.
+
+2004-07-04 Richard Henderson <rth@redhat.com>
+
+ PR c/16348
+ * c-typeck.c (c_finish_loop): Don't clear cond for cond_is_first loops.
+
+2004-07-04 Mark Mitchell <mark@codesourcery.com>
+
+ * configure.ac (ranlib_flags): New variable.
+ * Makefile.in (RANLIB_FLAGS): New variable.
+ (libbackend.a): Use it.
+ * configure: Regenerated.
+
+2004-07-04 Roger Sayle <roger@eyesopen.com>
+
+ * ifcvt.c (noce_try_sign_mask): Call emit_store_flag to generate
+ a "sign mask" instead of using ashr_optab directly.
+
+2004-07-04 Neil Booth <neil@duron.akihabara.co.uk>
+
+ * doc/cpp.texi: Don't document what we do for ill-formed expressions.
+ * doc/cppopts.texi: Clarify processing of command-line defines.
+
+2004-07-04 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * doc/contrib.texi (Contributors): Adjust link for GNU Classpath.
+
+2004-07-04 Richard Henderson <rth@redhat.com>
+
+ * rtl.def (ADDRESSOF): Remove.
+ * alias.c (rtx_equal_for_memref_p): Don't handle addressof.
+ (find_base_term, memrefs_conflict_p): Likewise.
+ * cse.c (fixed_base_plus_p, find_best_addr: Likewise.
+ (fold_rtx, cse_insn, set_live_p): Likewise.
+ * dwarf2out.c (mem_loc_descriptor): Likewise.
+ (add_location_or_const_value_attribute): Likewise.
+ * emit-rtl.c (copy_insn_1): Likewise.
+ * explow.c (memory_address): Likewise.
+ * expmed.c (store_split_bit_field): Likewise.
+ * expr.c (expand_expr_real_1): Likewise.
+ * function.c (instantiate_decl
+ (instantiate_virtual_regs_1, fix_lexical_addr): Likewise.
+ * genrecog.c (preds, validate_pattern): Likewise.
+ * integrate.c (copy_rtx_and_substitute): Likewise.
+ * recog.c (general_operand, register_operand): Likewise.
+ (memory_address_p): Likwise.
+ * reload1.c (eliminate_regs, elimination_effects): Likewise.
+ * rtl.c (copy_rtx): Likewise.
+ * rtlanal.c (rtx_unstable_p, rtx_varies_p): Likewise.
+ (rtx_addr_can_trap_p, nonzero_address_p, address_cost): Likewise.
+ * rtlhooks.c (gen_lowpart_general): Likewise.
+ * stmt.c (expand_asm_operands): Likewise.
+ * web.c (entry_register, replace_ref, web_main): Likewise.
+ * config/alpha/alpha.c (input_operand, alpha_legitimate_address_p,
+ alpha_expand_block_move, alpha_expand_block_clear): Likewise.
+ * config/arm/arm.c (thumb_rtx_costs): Likewise.
+ * config/c4x/c4x.c (c4x_valid_operands): Likewise.
+ * config/frv/frv.c (move_destination_operand, move_source_operand,
+ condexec_dest_operand, condexec_source_operand,
+ condexec_memory_operand): Likewise.
+ * config/h8300/h8300.h (PREDICATE_CODES): Likewise.
+ * config/ia64/ia64.c (general_xfmode_operand): Likewise.
+ (destination_xfmode_operand): Likewise.
+ * config/mips/mips.h (PREDICATE_CODES): Likewise.
+ * config/mn10300/mn10300.c (mn10300_address_cost_1): Likewise.
+ * config/s390/s390.c (general_s_operand): Likewise.
+ * config/s390/s390.md (mov*): Likewise.
+ * config/sparc/sparc.h (PREDICATE_CODES): Likewise.
+
+ * c-typeck.c (c_mark_addressable): Don't put_var_into_stack.
+ * expr.c (expand_expr_real_1): Likewise.
+ * stmt.c (expand_decl): Likewise.
+ * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
+
+ * function.c (struct fixup_replacement, struct insns_for_mem_entry,
+ postponed_insns, put_var_into_stack, put_reg_into_stack,
+ schedule_fixup_var_refs, fixup_var_refs, find_fixup_replacement,
+ fixup_var_refs_insns, fixup_var_refs_insns_with_hash,
+ fixup_var_refs_insn, fixup_var_refs_1, fixup_memory_subreg,
+ walk_fixup_memory_subreg, fixup_stack_1, optimize_bit_field,
+ gen_mem_addressof, flush_addressof, put_addressof_into_stack,
+ purge_bitfield_addressof_replacements, purge_addressof_replacements,
+ purge_addressof_1, insns_for_mem_hash, insns_for_mem_comp,
+ struct insns_for_mem_walk_info, insns_for_mem_walk,
+ compute_insns_for_mem, is_addressof, purge_addressof, setjmp_protect,
+ setjmp_protect_args): Remove.
+ (push_function_context_to): Don't handle var_refs_queue.
+ (pop_function_context_from, free_after_compilation): Likewise.
+ (instantiate_virtual_regs): Don't handle parm_reg_stack_loc.
+ (assign_parms, allocate_struct_function): Likewise.
+ (use_register_for_decl): New.
+ (expand_function_end): Don't setjmp_protect.
+ * function.h (struct emit_status): Update commentary.
+ (struct function): Remove x_max_parm_reg, x_parm_reg_stack_loc.
+ (max_parm_reg, parm_reg_stack_loc): Remove.
+ * passes.c (DFI_addressof): Remove.
+ (dump_file_info): Remove addressof.
+ (rest_of_handle_addressof): Remove.
+ (rest_of_compilation): Don't call it.
+ * rtl.h (ADDRESSOF_REGNO, ADDRESSOF_DECL): Remove.
+ * stmt.c (expand_decl): Use use_register_for_decl.
+ * tree.h: Update decls.
+ * web.c (mark_addressof): Remove.
+ * doc/invoke.texi (-dF): Remove.
+
+2004-07-03 Richard Henderson <rth@redhat.com>
+
+ * config/ia64/ia64.c (spill_xfmode_operand): Use assign_stack_temp
+ instead of gen_mem_addressof.
+ * config/ia64/ia64.md (movxf): Use assign_stack_temp to handle
+ TImode output register.
+
+2004-07-03 Richard Henderson <rth@redhat.com>
+
+ PR tree-optimization/16341
+ * tree-sra.c (sra_walk_function): Increment to next stmt before
+ processing the current stmt.
+ (sra_insert_after): Always use BSI_SAME_STMT.
+
2004-07-03 Richard Henderson <rth@redhat.com>
* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Don't fold
(walk_tree, case POINTER_TYPE): Deal with mutually recursive pointers.
* tree-sra.c (generate_element_init): Remove any useless conversions.
-
+
* gimplify.c (gimplify_conversion): Remove stripping useless
conversions from here.
(gimplify_expr): Put it here, in place of call to STRIP_MAIN_TYPE_NOPS.