X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2FChangeLog;h=74463e757b7797862ecc03bc13e2d2f7bc4c3892;hb=2986c3244f204d919d8b058f38918de768c11140;hp=5ab89e1acaae4b0211da73321bea22491ebdcbdb;hpb=2d0bca8baeaa6b8003cb20f239ce653a41635154;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5ab89e1acaa..74463e757b7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,1282 @@ +2004-07-06 Jan Beulich + + * 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 + + 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 + * config/h8300/h8300.md: Rename movstr*, except for movstrict*, to + movmem* and clrstr* to clrmem*. + 2004-06-27 Alexandre Oliva + * 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 + * config/h8300/h8300.md (logicalhi3_sn, logicalsi3_sn): New. + 2004-06-16 Alexandre Oliva + * 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 + * 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 + * 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 + * config/h8300/h8300.md (extzv): Make subreg check more robust. + 2003-07-21 Richard Sandiford + * 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 + * 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 + * 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 + * 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 + * 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. 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 + * 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 + * 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 + * 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 + * 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 + * 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 + * 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 + * config/h8300/h8300.c (h8300_rtx_costs): Add h8sx handling. + 2003-06-20 Richard Sandiford + * 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 + * 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 + * 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 + * 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 + * config/h8300/h8300.h (EXTRA_MEMORY_CONSTRAINT): Define. + 2003-06-04 Richard Sandiford + * 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 + * 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 + * 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 + * 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 + * 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 + * 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 + * 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 + * 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 + * 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 + * 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 + * 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) : 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 + * 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 + * 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 + * 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 + * config/h8300/h8300.c (dosize): Truncate sign * size to Pmode. + +2004-05-28 Aaron W. LaFramboise + + * config.gcc (i[34567]86-*-mingw32*): Enable threads by default. + +2004-07-07 Per Bothner + + * flow.c (attempt_auto_inc): Remove now-redundant PUT_CODE. + +2004-07-07 Mike Stump + + * 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 + + * tree-ssa-dom.c (simplify_switch_and_lookup_avail_expr): Look + through any value-preserving cast. + +2004-07-07 Alexandre Oliva + + * function.c (assign_parm_find_data_types): Call + FUNCTION_ARG_PASS_BY_REFERENCE only if it's defined. + +2004-07-07 Steven Bosscher + + * tree-cfg.c (group_case_labels): Remove case labels that have + the same target as the default case. + +2004-07-07 Steven Bosscher + + * 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 + + * configure: Regenerate with the right autoconf. + +2004-07-07 David Edelsohn + + * 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 + + 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 + + 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 + + * 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 + + * 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 + + * 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 + + * config/i386/i386.c (override_options): Don't set x86_prefetch_sse + from -mtune= option. + +2004-07-07 Alexandre Oliva + + * 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 + + 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 + + PR c/16392 + * function.c (assign_parms): Fix typo from previous change. + +2004-07-07 Jason Merrill + + PR c++/15815 + * doc/extend.texi (C++ Interface): Correct information and + discourage use. + +2004-07-07 Vladimir Makarov + + 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 + + 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 + + * 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 + + * config/fr30/fr30.c (fr30_setup_incoming_varargs): Change + arguments to match TARGET_SETUP_INCOMING_VARARGS prototype. + +2004-07-07 Nathan Sidwell + + * vec.h: Fix the example use. + +2004-07-06 Richard Henderson + + * 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 + + * doc/sourcebuild.texi: Use semicolons instead of commas in + section title. + +2004-07-06 Richard Henderson + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + 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 + + * doc/interface.texi (longjmp and automatic variables): Delete + paragraph recommending taking the address of a variable. + +2004-07-06 Nathan Sidwell + + * 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 + + * Makefile.in (langhooks.o): Do not depend on gt-langhooks.h. + (gt-langhooks.h): Remove. + +2004-07-06 George Helffrich + + * xcoffout.h (DBX_FINISH_SYMBOL): Fix typo. + +2004-07-06 Eric Botcazou + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * expr.c (expand_assignment): Disable the bitfield += optimizations. + +2004-07-05 Joseph S. Myers + + * doc/sourcebuild.texi: Revert previous patch. + +2004-07-05 Joseph S. Myers + + * 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 + + * function.c (assign_parm_setup_reg): Properly rename variables in + FUNCTION_ARG_CALLEE_COPIES section. + +2004-07-05 Zack Weinberg + + * 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 + + * pa.md (prefetch, prefetch_32, prefetch_64): Only allow short + displacements with the spatial-locality cache-control completer. + +2004-07-05 Zack Weinberg + + * 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 + + * fold-const.c (fold) : 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. + : Recursively call "fold" when transforming "(X % Y) == 0" + into "((unsigned) X % Y) == 0". + +2004-07-05 Joseph S. Myers + + * sourcebuild.texi (Config Fragments): Use @comma{} in + cross-reference to section title. + +2004-07-05 Richard Kenner + + * 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 + + * 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 + + * 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 + + 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 + + * 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 + + * 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 + + * 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 + + * combine.c (simplify_comparison): Fix comment typo. + +2004-07-04 Eric Botcazou + + * 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 + + * config/netbsd.h (NETBSD_OS_CPP_BUILTINS_COMMON): Define __unix__ + and assert system is bsd. + +2004-07-04 Richard Sandiford + + * 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 + + * 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 + + * 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 + + PR c/16348 + * c-typeck.c (c_finish_loop): Don't clear cond for cond_is_first loops. + +2004-07-04 Mark Mitchell + + * configure.ac (ranlib_flags): New variable. + * Makefile.in (RANLIB_FLAGS): New variable. + (libbackend.a): Use it. + * configure: Regenerated. + +2004-07-04 Roger Sayle + + * 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 + + * 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 + + * doc/contrib.texi (Contributors): Adjust link for GNU Classpath. + +2004-07-04 Richard Henderson + + * 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 + + * 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 + + 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 * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Don't fold @@ -24,7 +1303,7 @@ (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.