blob: 92a4d69b804a50bc3b82e9ecf14b6fbb39961c3c [file] [log] [blame]
2004-06-30 Roger Sayle <>
* expmed.c (expand_shift): Consider expanding LSHIFT_EXPR by a
constant as a sequence of additions depending upon the rtx_costs.
(synth_mult): Update the "observed" cost of a shift, based upon
the above optimization.
2004-06-28 Geoffrey Keating <>
Andreas Tobler <>
PR 15813
* dwarf2out.c (reg_save): Output DW_CFA_same_value when a
register is saved in itself.
(initial_return_save): If the return address is a register,
it's already there, don't bother to mention it in the CFI.
(struct queued_reg_save): Add field saved_reg.
(struct reg_saved_in_data): New.
(regs_saved_in_regs): New.
(num_regs_saved_in_regs): New.
(queue_reg_save): Add extra parameter to specify register saved
in register. Remove duplicate entries from queue. Add comment
for function.
(flush_queued_reg_saves): Handle registers saved in registers.
Update regs_saved_in_regs. Add comment for function.
(clobbers_queued_reg_save): Add comment for function. Allow
for regs_saved_in_regs.
(reg_saved_in): New.
(dwarf2out_frame_debug_expr): Handle saving registers in other
(dwarf2out_frame_debug): Reset regs_saved_in_regs.
* unwind-dw2.c (execute_cfa_program): Correct handling of
DW_CFA_same_value. Add FIXME comment about incorrect implementation
of DW_CFA_restore_extended.
* config/rs6000/rs6000.c (rs6000_emit_prologue): Let
dwarf2out_frame_debug_expr see instructions that save registers
in other registers or save those other registers in memory.
* unwind-dw2.c (DWARF_FRAME_REGISTERS): Move to unwind-dw2.h.
(_Unwind_FrameState): Likewise.
* unwind-dw2.h: New.
* (LIB2ADDEHDEP): Add unwind-dw2.h.
* config/rs6000/darwin-fallback.c: New file.
* config/rs6000/darwin.h (MD_FALLBACK_FRAME_STATE_FOR): Define.
* config/rs6000/t-darwin (LIB2FUNCS_EXTRA): Add darwin-fallback.o.
2004-07-01 Alan Modra <>
* config/rs6000/rs6000.c (rs6000_mixed_function_arg): Rewrite.
(function_arg): Use rs6000_arg_size rather than CLASS_MAX_NREGS in
calculating gpr size for altivec. Simplify and correct
rs6000_mixed_function_arg calls. Call rs6000_mixed_function_arg
for ABI_V4 gpr case too. Fix off-by-one error in long double
reg test. Generate the correct PARALLEL to handle long double
for ABI_AIX 32-bit. Use this for -m32 -mpowerpc64 fpr case too.
(function_arg_partial_nregs): Align before calculating regs left.
Don't return info on partial fprs when we need info on gprs.
Correct long double fpr off-by-one error.
2004-06-30 John David Anglin <>
* pa-protos.h (prefetch_operand): Add prototype.
* pa.c (prefetch_operand): New function.
* pa.h (prefetch_operand): Add to PREDICATE_CODES.
* (prefetch, prefetch_32, prefetch_64): New prefetch patterns.
2004-06-30 Richard Henderson <>
* function.h (struct function): Remove x_whole_function_mode_p.
* c-decl.c (store_parm_decls): Don't set it.
* tree-optimize.c (tree_rest_of_compilation): Likewise.
* passes.c (rest_of_compilation): Don't check it.
* stmt.c (expand_fixup): Likewise.
* function.c (fixup_var_refs_insn): Remove unused variable.
2004-06-30 Richard Henderson <>
* tree.h (immediate_size_expand): Delete.
* stor-layout.c (immediate_size_expand): Delete.
(variable_size): Don't look at it.
* c-decl.c (push_parm_decl): Don't frob immediate_size_expand.
(start_function): Likewise.
* cfgexpand.c (construct_exit_block): Likewise.
* function.c (init_function_start, expand_function_end): Likewise.
* tree-optimize.c (tree_rest_of_compilation): Likewise.
2004-06-30 Richard Henderson <>
* gimplify.c (gimplify_compound_lval): Take fallback argument
instead of want_lvalue.
(gimplify_call_expr): Take want_value argument instead of test
function. Gimplify arguments to val only if reg_type; otherwise
allow lvalue forms.
(gimplify_expr): Update gimplify_compound_lval and gimplify_call_expr
* tree-gimple.c: Update GIMPLE grammer. Use true/false not 1/0.
Tidy commentary globally.
(get_call_expr_in): Remove RETURN_EXPR handling. Tidy.
* tree-gimple.h (is_gimple_call_addr): Mark extern.
* gimplify.c (gimplify_modify_expr_to_memcpy): Fix typo.
2004-06-30 Richard Henderson <>
* tree-gimple.c (right_assocify_expr): Kill
(rationalize_compound_expr): Kill.
* tree-gimple.h: Likewise.
* tree-inline.c (expand_call_inline): Don't call it.
* function.h (struct function): Remove x_last_parm_insn,
(last_parm_insn): Remove.
* function.c (free_after_compilation): Don't clear them.
(fixup_var_refs_insn, assign_parms): Don't set them.
* function.c, rtl.h (get_first_nonparm_insn): Remove.
2004-06-30 Joseph S. Myers <>
* c-common.h (check_function_format): Remove first parameter.
* c-format.c (format_check_context): Remove status.
(check_format_info, check_format_info_main,
maybe_read_dollar_number, avoid_dollar_number,
finish_dollar_format_checking, check_format_types,
check_function_format): Remove first parameter. Don't use
(check_format_arg): Don't use status_warning.
(status_warning): Remove.
* c-common.c (check_function_arguments): Update call to
2004-06-30 Eric Botcazou <>
* config/sparc/sparc-protos.h (output_cbranch): Constify return
(output_v9branch): Likewise.
(sparc_v8plus_shift): Likewise. Rename into output_v8plus_shift.
* config/sparc/sparc.c (output_cbranch): Constify return value.
Prettify output for delay slots.
(output_v9branch): Likewise.
(sparc_v8plus_shift): Constify return value. Rename into
* config/sparc/ (ashldi3_v8plus): Adjust call to
(ashrdi3_v8plus): Likewise.
(lshrdi3_v8plus): Likewise.
(call_address_struct_value_sp32): Prettify output for delay slots.
(call_symbolic_struct_value_sp32): Likewise.
(call_address_untyped_struct_value_sp32): Likewise.
(call_symbolic_untyped_struct_value_sp32): Likewise.
2004-06-30 Zdenek Dvorak <>
* common.opt (ftree-loop-optimize): New flag.
* tree-flow.h (kill_redundant_phi_nodes): Declare.
* tree-optimize.c (init_tree_optimization_passes): Add pass_loop.
* tree-pass.h (pass_loop_init, pass_loop_done): Declare.
* tree-ssa-loop.c (current_loops): New variable.
(tree_loop_optimizer_init, gate_loop, tree_ssa_loop_init,
tree_ssa_loop_done): New functions.
(pass_loop, pass_loop_init, pass_loop_done): New passes.
* tree-ssa.c (kill_redundant_phi_nodes): Export.
* doc/invoke.texi (-ftree-loop-optimize): Document.
2004-06-30 Zdenek Dvorak <>
* tree-ssa-loop-ch.c: New file.
* (tree-ssa-loop-ch.o): Add.
(tree-into-ssa.o): Add GGC_H dependency.
* tree-cfg.c (tree_duplicate_bb): Copy virtual arguments.
* tree-flow.h (rewrite_into_ssa): Declaration changed.
(rewrite_ssa_into_ssa, compute_global_livein, duplicate_ssa_name):
* tree-into-ssa.c: Include ggc.h.
(struct def_blocks_d): Add phi_blocks field.
(struct mark_def_sites_global_data): Add names_to_rename field.
(struct ssa_name_info): New.
(compute_global_livein): Export.
(set_def_block, insert_phi_nodes, mark_def_sites, set_livein_block,
insert_phi_nodes_1, rewrite_finalize_block, insert_phi_nodes_for,
register_new_def, get_reaching_def, def_blocks_free,
get_def_blocks_for, rewrite_into_ssa): Modified to work with
(get_ssa_name_ann, get_phi_state, set_phi_state, get_current_def,
set_current_def, ssa_mark_def_sites_initialize_block,
ssa_mark_phi_uses, ssa_mark_def_sites, duplicate_ssa_name,
ssa_register_new_def, ssa_rewrite_initialize_block,
ssa_rewrite_phi_arguments, ssa_rewrite_finalize_block,
ssa_rewrite_stmt, rewrite_ssa_into_ssa, rewrite_all_into_ssa): New
(pass_build_ssa): Call rewrite_all_into_ssa.
* tree-optimize.c (execute_todo, execute_one_pass,
tree_rest_of_compilation): Allocate vars_to_rename only once.
* tree-ssa-dom.c (tree_ssa_dominator_optimize): Provide parameter
to rewrite_into_ssa.
* tree-ssa-loop.c (should_duplicate_loop_header_p,
mark_defs_for_rewrite, duplicate_blocks, do_while_loop_p,
copy_loop_headers, gate_ch, pass_ch): Moved to tree-ssa-loop-ch.c.
Use rewrite_ssa_into_ssa.
* tree-ssa-operands.c (copy_virtual_operands): New function.
* tree-ssa-operands.h (copy_virtual_operands): Declare.
* tree.h (struct tree_ssa_name): Add aux field.
(SSA_NAME_AUX): New macro to access it.
2004-05-28 Aaron W. LaFramboise <>
* prefix.c (lookup_key): Cast buffer to LPBYTE.
2004-06-30 Per Bothner <>
Conditionally compile support for --enable-mapped_location.
* input.h: #include line-map.h for source_location typedef.
LOCATION_FILE, LOCATION_LINE): New macros and functions.
(expanded_location, source_locus): New typedefs.
(push_srcloc): Change parameter list if USE_MAPPED_LOCATION.
* rtl.def (NOTE, ASM_OPERANDS): Modify specifcation, if
* rtl.h (NOTE_DELETED_LABEL_NAME): New macro.
New conditional macros.
DECL_IS_BUILTIN): New macros, most depending on USE_MAPPED__LOCATION.
(tree_exp): Change type of locus to use new source_locus typedef.
* tree.c (build1_stat): Use SET_EXPR_LOCATION.
(annotate_with_locus, annotate_with_file_line): Conditionalize.
(expand_location): New function.
* toplev.c (unknown_location): New static, when USE_MAPPED_LOCATION.
(push_srcloc, pop_loc): Adjust parameter handling.
(process_options): Don't set input_filename by itself.
(lang_dependent_init): Save, set input_location to <built-in>.
(warn_deprecated_use): Use expand_location.
* basic-block.h (struct edge_def): Use new source_locus typedef.
* c-common.c (fname_decl): Update save/clear/store of input_location.
(c_do_switch_warnings): Update for USE_MAPPED_LOCATION case.
* c-decl.c: Likewise.
* c-dump.c (dump_stmt): Likewise.
* c-gimplify.c (c-gimplify.c): Generalize using SET_EXPR_LOCATION.
* c-lex.c (cb_line_change): If USE_MAPPED_LOCATION use token's src_loc
to set input_location direction, rather than using linemap_lookup.
(fe_file_change, cb_def_pragma): Again use source_location directly.
* c-opts.c (saved_lineno): Remove static variable.
(c_common_post_options, c_common_init): Don't bothner to save,
clear and restore input_Location - now handled by lang_dependent_init.
* function.c (init_function_start): Use new DECL_IS_BUILTIN macro.
* xcoffout.c (xcoff_assign_fundamental_type_number): Likewise.
* tree-mudflap.c (mf_file_function_line_tree): Take a location_t
rather than a pointer to one. Use expand_location.
(mf_varname_tree): Use expand_location.
* tree-dump.c: Use expand_location on DECL_SOURCE_LOCATION.
* coverage.c: Likewise.
* print-tree.c: Likewise.
* c-aux-info.c (gen_aux_info_record): Likewise.
* gimple-low.c: Likewise.
* tree-mudflap.c: Likewise.
* gimplify.c: Likewise. Also use EXPR_LOCATION and EXPR_HAS_LOCATION.
* c-ppoutput.c: Use new source_location typedef instead of fileline.
* c-semantics.c: Use new macros.
* c-typeck.c: Likewise.
* cfgexpand.c: Handle USE_MAPPED_LOCATION case for function_end_locus.
* cfglayout.c (insn_locators_initialize): Const cleanup. New macros.
* cfgrtl.c (delete_insn): Use new NOTE_DELETED_LABEL_NAME macro.
* print-rtl.c (print_rtx): Likewise.
* emit-rtl.c: Don't clear NOTE_SOURCE_FILE if USE_MAPPED_LOCATION.
* combine.c: Use new SET_INSN_DELETED macro.
* flow.c: Likewise.
* haifa-sched.c: Likewise.
* ifcvt.c: Likewise.
* recog.c: Likewise.
* reload1.c: Likewise.
* diagnostic.c: Use expand_location macro.
* pretty-print.c (pp_base_format_text): Likewise.
* profile.c: Likewise.
* dwarf2out.c: Likewise. Also use expand_location, DECL_IS_BUILTIN.
* dwarf2out.c (dwarf2out_decl: Use BUILTINS_LOCATION.
* emit-rtl.c (emit_line_note): Simplify if USE_MAPPED_LOCATION.
(force_next_line_note, insn_emit): Handle USE_MAPPED_LOCATION case.
* final.c (final): Likewise.
* haifa-sched.c: Likewise.
* integrate.c: Likewise.
* jump.c: Likewise.
* rtl-error.c: Likewise.
* stmt.c (check_seenlabel): Likewise.
* tree-pretty-print.c: Likewise.
* gengtype-lex.l: Temporary kludge to avoid duplicate typedef.
* gengtype.c: Update for now typdefs in input.h. More kludges.
* modulo-sched.c (sms_schedule): Use NOTE_EXPANDED_LOCATION macro.
* ra-debug.c (ra_print_rtl): Likewise.
* sched-rgn.c: Likewise.
* sched-vis.c: Likewise.
* rtl.h (gen_rtx_ASM_OPERANDS): Redefine if USE_MAPPED_LOCATION.
* stmt.c (expand_asm_operands): Adjust calls to gen_rtx_ASM_OPERANDS.
* tree-cfg.c: Use new macros and typedefs.
* tree-flow-inline.h: Likewise.
2004-06-30 Richard Sandiford <>
Eric Christopher <>
* config/mips/ Improve description.
2004-06-30 Paul Brook <>
* config/arm/ (cirrus_arm_movdi, cirrus_movsf_hard_insn,
cirrus_movdf_hard_insn): Set pool ranges for coprocessor loads.
2004-06-30 Sebastian Pop <>
* (OBJS-common): Add tree-chrec.o.
(tree-chrec.o): New rule.
(GTFILES): Add tree-chrec.h.
* gengtype.c (open_base_files): Add tree-chrec.h.
* tree-chrec.c: New file.
* tree-chrec.h: New file.
2004-06-30 Roger Sayle <>
* combine.c: Include "output.h" to define dump_file.
(uid_insn_cost, last_insn_cost): New global variables.
(combine_insn_cost): New function to estimate cost of an insn.
(combine_validate_cost): New function to determine whether a
try_combine replacement sequence is cheaper than the original.
(combine_instructions): Allocate and populate uid_insn_cost
array at the start of the combine pass, and deallocate it after.
(try_combine): Check combine_validate_cost to determine whether
a "recombination" should be rejected as being more expensive.
* (combine.o): Add dependency upon output.h.
2004-06-30 Roger Sayle <>
* config/rs6000/rs6000.c (rs6000_rtx_costs) <MINUS_EXPR>: Handle
subtractions identically to additions, always COSTS_N_INSNS (1).
2004-06-30 J"orn Rennecke <>
* expmed.c (expand_smod_pow2): Fix sign of mask.
2004-06-29 Diego Novillo <>
* tree-ssa-pre.c (phi_trans_add): Use is_gimple_min_invariant
to check for constants.
(set_remove): Likewise.
(value_replace_in_set): Likewise.
(find_leader): Likewise.
* tree-vn.c (set_value_handle): Likewise.
(vn_lookup): Likewise.
(vn_lookup_or_add): Likewise.
2004-06-30 Eric Botcazou <>
RTL prologue/epilogue for SPARC
* config/sparc/sparc-protos.h (sparc_emitting_epilogue): Delete.
(sparc_skip_caller_unimp): Likewise.
(load_pic_register): Likewise.
(leaf_return_peephole_ok): Likewise.
(compute_frame_size): Rename into sparc_compute_frame_size.
(sparc_expand_prologue): New prototype.
(sparc_expand_epilogue): Likewise.
(output_return): Likewise.
(eligible_for_epilogue_delay): Rename into eligible_for_return_delay.
* config/sparc/sparc.h (INITIAL_ELIMINATION_OFFSET): Adjust call to
compute_frame_size. Move comment up.
(EPILOGUE_USES): Return true for %g1 if the function uses EH return.
* config/sparc/ (UNSPECV_SAVEW): New constant.
(type attribute): Add 'return' and 'savew'.
(eligible_for_return_delay): New attribute.
(return): New delay_slot.
(sibcall_epilogue): Call sparc_expand_epilogue.
(prologue): Likewise. Move up.
(save_register_window): New expander.
(save_register_windowsi): New pattern.
(save_register_windowdi): Likewise.
(epilogue): New expander.
(return_internal): New pattern.
(Return peepholes): Delete.
* config/sparc/sparc.c (SIBCALL_SLOT_EMPTY_P): New macro.
(sparc_emitting_epilogue): Delete.
(sparc_skip_caller_unimp): Likewise.
(sparc_sr_alias_set): New global variable.
(frame_base_name): Delete.
(frame_base_reg): New global variable.
(sparc_override_options): Get new alias set for save/restore.
(leaf_return_peephole_ok): Delete.
(eligible_for_epilogue_delay): Rename into eligible_for_return_delay.
Factor out code into eligible_for_restore_insn_delay.
(eligible_for_restore_insn_delay): New function extraced from above.
(eligible_for_sibcall_delay): Use SIBCALL_SLOT_EMPTY_P.
Factor out code into eligible_for_restore_insn_delay.
(load_pic_register): Make static. Remove check.
(save_regs): Delete.
(restore_regs): Likewise.
(compute_frame_size): Rename into sparc_compute_frame_size.
Rename leaf_function into leaf_function_p.
(build_big_number): Delete.
(save_or_restore_regs): New function.
(emit_save_regs): Likewise.
(emit_restore_regs): Likewise.
(emit_stack_pointer_increment ): Likewise.
(emit_stack_pointer_decrement): Likewise.
(sparc_expand_prologue): Likewise.
(sparc_function_prologue): Rename into sparc_asm_function_prologue.
Remove all code to emit instructions.
(sparc_expand_epilogue): New function.
(sparc_function_epilogue): Rename into sparc_asm_function_epilogue.
Remove all code to emit instructions.
(output_restore): New function.
(output_return): Likewise.
(output_sibcall): Factor out code into output_restore.
(print_operand): Adjust for frame_base_reg.
* target.h (struct gcc_target): New field 'late_rtl_prologue_epilogue'.
* target-def.h (TARGET_LATE_RTL_PROLOGUE_EPILOGUE): New define.
* passes.c (rest_of_compilation): Set the conditional predicate
'current_function_uses_only_leaf_regs' before sched2. If target
has 'late_rtl_prologue_epilogue', emit RTL prologue/epilogue right
before sched2.
* reorg.c (return_insn_p): New predicate.
(find_end_label): Use it.
(relax_delay_slots): Do not thread an unconditional jump that points
to the end return label.
* doc/tm.texi (Registers) <Leaf Functions>: Clarify the validity
domain of 'current_function_uses_only_leaf_regs'.
(Stack and Calling) <Function Entry>: Document new target hook
2004-06-30 Jakub Jelinek <>
* simplify-rtx.c (simplify_binary_operation): Simplify
((A & N) + B) & M -> (A + B) & M if M is pow2 minus 1 constant and
N has at least all bits in M set as well.
PR tree-optimization/15310
* expr.c (expand_assignment): Optimize += or -= on a bit field in
most significant bits.
2004-06-30 Steven Bosscher <>
* config/c4x/ Fix comment.
2004-06-30 Akos Kiss <>
* (cond_return_inverted): Add "length" attribute.
2004-06-29 Per Bothner <>
* config/i386/winnt.c (i386_pe_encode_section_info): Smash rtlname's
XSTR in place, so we don't lose SYMBOL_REF_DECL info.
2004-06-29 Zack Weinberg <>
* config/ia64/hpux.h: Target does too support thread-local storage.
2004-06-29 Zack Weinberg <>
* combine.c (distribute_notes): Don't look at global_regs for
2004-06-29 Richard Henderson <>
* gimplify.c (gimplify_modify_expr_rhs): Move immediately before
(gimplify_init_constructor): Likewise. Gimplify the null
CONSTRUCTOR assignment.
(gimplify_modify_expr_to_memcpy): New.
(gimplify_modify_expr_to_memset): New.
(gimplify_modify_expr): Use them.
2004-06-29 Roman Zippel <>
* web.c (union_defs): use all defs of an instruction to create a
union with a read/write use
2004-06-29 Richard Henderson <>
PR middle-end/16216
* builtins.c (gimplify_va_arg_expr): Check for valist being
an error_mark_node.
2004-06-29 Jakub Jelinek <>
PR target/16195
* config/rs6000/rs6000.c (rs6000_conditional_register_usage): Make
(first_reg_to_save): Pretend call_used_regs[30] is 0 if
(rs6000_emit_prologue, rs6000_emit_epilogue): Likewise.
2004-06-29 J"orn Rennecke <>
Fix gcc.dg/builtin-apply2.c failures:
* sh.c (extra_push): Delete.
(sh_expand_prologue): Don't do extra stack adjustment for
current_function_pretend_args_size if it comes from varargs setup.
Use TARGET_VARARGS_PRETEND_ARGS. Don't set extra_push.
(sh_expand_epilogue): Don't use extra_push.
(sh_setup_incoming_varargs): Set pretend_arg_size when necessary.
2004-06-29 Roger Sayle <>
* expmed.c (expand_smod_pow2): Provide alternate implementations
that avoid conditional jumps, and choose between them based upon
the target's rtx_costs.
2004-06-29 Andrew Pinski <>
* tree-sra.c: Include expr.h for definition of MOVE_RATIO.
* (tree-sra.c): Update dependencies.
2004-06-29 Richard Henderson <>
* tree-sra.c: Rewrite from scratch. Handle nested aggregates.
2004-06-29 Nathan Sidwell <>
* vec.h (VEC_T_safe_push, VEC_T_safe_insert): Tweak for when
size_t is bigger than int.
2004-06-29 Paul Brook <>
(TARGET_CXX): Use them.
* target.h (struct gcc_target): Add cxx.get_cookie_size and
* targhooks.c (default_cxx_get_cookie_size): New fucntion.
* targhooks.h (default_cxx_get_cookie_size): Add prototype.
* config/arm/arm.c (TARGET_CXX_GET_COOKIE_SIZE,
(arm_get_cookie_size, arm_cookie_has_size): New functions.
* (cp/init.o): Add dependency on $(TARGET_H).
* doc/tm.texi: Document TARGET_CXX_GET_COOKIE_SIZE and
2004-06-29 J"orn Rennecke <>
* cfglayout.c (fixup_reorder_chain): Don't do anything for
e_fall->dest == EXIT_BLOCK_PTR.
2004-06-28 Richard Henderson <>
* tree-cfg.c (verify_stmt): Add last_in_block parameter. Verify
that eh stmts can throw.
(verify_stmts): Update verify_stmt call.
(tree_purge_dead_eh_edges, tree_purge_all_dead_eh_edges): New.
* tree-eh.c (remove_stmt_from_eh_region): New.
(lower_eh_constructs): Fix throw_stmt_table delete routine.
(tree_could_trap_p): Match may_trap_p.
(maybe_clean_eh_stmt): New.
* tree-flow.h: Update decls.
* tree-ssa-ccp.c (pass_ccp): Add TODO_verify_stmts.
(substitute_and_fold): Clean eh edges.
* tree-ssa-dce.c (mark_control_dependent_edges_necessary): Handle
empty basic blocks.
* tree-ssa-dom.c (need_eh_cleanup): New.
(tree_ssa_dominator_optimize): Allocate it. Cleanup eh edges.
(optimize_stmt): Cleanup eh stmts; set need_eh_cleanup.
2004-06-29 Alan Modra <>
* function.c (assign_parms): Don't abort with zero size stack
parm failing the PARM_BOUNDARY check.
2004-06-28 Diego Novillo <>
* common.opt (ftree-fre): New flag.
* flags.h (flag_tree_fre): Declare.
* opts.c (decode_options): Set.
* timevar.def (TV_TREE_FRE): Define.
* tree-flow-inline.h (may_propagate_copy): Re-arrange for
readability. Handle destinations that are not SSA_NAMEs.
* tree-flow.h (struct ptr_info_def): Move from tree.h
(cprop_into_stmt, cprop_into_successor_phis): Remove.
(vn_compute, vn_lookup_or_add, vn_add, vn_lookup): Add
vuse_optype parameter.
* tree-pass.h (pass_fre): Declare.
* tree-ssa-copy.c (cprop_operand): Move to tree-ssa-dom.c
(cprop_into_stmt): Likewise.
(cprop_into_successor_phis): Likewise.
* tree-ssa-dom.c (eliminate_redundant_computations): Fix
argument ordering in call to may_propagate_copy.
* tree-ssa-pre.c (is_undefined_value): Assume hard registers
to be always defined.
(add_to_sets): New local function.
(create_value_expr_from): New local function.
(compute_avail): Call them.
(eliminate): Don't ignore statements with virtual operands.
(init_pre): New local function.
(fini_pre): New local function.
(execute_pre): Call them.
Add argument DO_FRE. Don't do insertion if DO_FRE is true.
(do_pre): New function.
(do_fre): New function.
(gate_fre): New function.
(pass_fre): Declare.
* tree-ssa.c (init_tree_ssa): Don't call vn_init.
(delete_tree_ssa): Don't call vn_delete.
* tree-vn.c (val_expr_pair_d): Add documentation.
(vn_compute): Add VUSES argument to incorporate in computing
hash values. Update all callers.
(expressions_equal_p): Call operand_equal_p with
(vn_add): Add VUSES argument. Update all callers.
(vn_lookup): Likewise.
(vn_lookup_or_add): Likewise.
* doc/invoke.texi: Document -ftree-fre and -fdump-tree-fre.
2004-06-28 Steven Bosscher <>
* config/m32r/m32r.c (m32r_sched_odd_word_p, m32r_adjust_cost,
m32r_sched_init, m32r_sched_reorder, m32r_variable_issue): Remove.
* config/m32r/ Rewrite the pipeline description as a DFA.
2004-06-28 Richard Henderson <>
* tree.def (REALPART_EXPR, IMAGPART_EXPR): Change class to 'r'.
* fold-const.c (operand_equal_p <case 'r'>): Add REALPART_EXPR,
* tree-dump.c (dequeue_and_dump): Handle REALPART_EXPR and
IMAGPART_EXPR explicitly.
* tree-inline.c (estimate_num_insns_1): Don't handle REALPART_EXPR
and IMAGPART_EXPR specially.
* tree.c (build1_stat): Copy TREE_THIS_VOLATILE into class 'r'.
2004-06-28 J"orn Rennecke <>
* config.gcc (sh*-*elf*): Remove dead assignment of sh_multilibs.
2004-06-28 Joseph S. Myers <>
* builtins.def (execl, execlp, execle, execv, execvp, execve,
fork): Change to DEF_EXT_LIB_BUILTIN.
2004-06-28 Roger Sayle <>
* expmed.c (expand_smod_pow2): New function to expand signed
remainder by a constant power of 2, such as "x % 16".
(expand_divmod): Call new expand_smod_pow2 when appropriate.
Minor corrections to comments, e.g. wrapping long lines.
2004-06-28 Ulrich Weigand <>
* (vec.o): Fix dependencies.
2004-06-28 Andreas Tobler <>
* Fix parallel make dependency problem on vec.o.
2004-06-28 Dhananjay Deshpande <>
PR target/14041
* config/h8300/h8300.h (ASM_OUTPUT_ALIGNED_BSS): Define.
2004-06-28 Nathan Sidwell <>
* tree.h (tree_check_failed): Make varadic.
(tree_not_check_failed): New prototype.
(tree_check2_failed, tree_check3_failed,
tree_check4_failed, tree_check5_failed): Remove.
TREE_CHECK5): Adjust.
* tree.c (tree_check_failed): Make varadic.
(tree_not_check_failed): New.
(tree_check2_failed, tree_check3_failed,
tree_check4_failed, tree_check5_failed): Remove.
2004-06-28 Ulrich Weigand <>
* combine.c (can_combine_p): Do not prevent building insns that use
and clobber the same fixed hard register.
(reg_dead_at_p): Likewise.
2004-06-28 Richard Kenner <>
* tree-sra.c (is_sra_candidate_ref): Remove second arg; all callers
(is_sra_candidate_complex_ref): New function.
(scalarize_modify_expr): Call it and check for LHS also.
* tree-pretty-print.c (dump_function_declaration): New.
(dump_generic_node, case FUNCTION_TYPE): Call it.
(dump_generic_node, case RECORD_TYPE): Don't output dup semicolon.
(dump_generic_node, case DECL_EXPR): New case.
(dump_generic_node, case PLACEHOLDER_EXPR): Handle.
(print_declaration): Handle type and function declarations.
* tree-nested.c (create_tmp_var_for): Allow ARRAY_TYPE.
(convert_nonlocal_reference, convert_local_reference): Properly
convert nest of handled component references.
2004-06-28 Nathan Sidwell <>
* vec.h, vec.c: New, type safe vector API.
* (OBJS-common): Add vec.o.
(vec.o): New target.
(gengtype-lex.o): Depend on vec.h.
2004-06-28 Paolo Bonzini <>
* fold-const.c (fold_cond_expr_with_comparison): Add ARG1
parameter. Use it instead of ARG00 to produce the result.
2004-06-28 Alexandre Oliva <>
* config/mn10300/mn10300-protos.h (legitimate_address_p): Declare.
* config/mn10300/mn10300.c (legitimate_address_p): New. Test that
index is legitimate, compared with code moved from...
* config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): here.
(REG_STRICT): Define, according to REG_OK_STRICT.
RTX_OK_FOR_BASE_P): Use them.
2004-06-28 Ben Elliston <>
* doc/cfg.texi (Basic Blocks): Define dominators.
2004-06-27 Andrew Pinski <>
PR c++/16205
* c-common.c (warn_for_collisions_1): Warn for only decls which
have a name.
PR c++/15145
* c.opt (Wsequence-point): Enable for C++ and ObjC++.
PR c/14963
* c-decl.c (start_decl): Check for null types.
2004-06-27 David Edelsohn <>
* config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
Accept TOC addresses.
2004-06-27 Ulrich Weigand <>
* config/s390/s390-protos.h (s390_load_got): Update prototype.
* config/s390/s390.c (struct machine_function): Add member base_reg.
(s390_decompose_address): Accept UNSPEC_LTREF. Simplify logic.
(s390_split_branches): Annotate late pool references.
(annotate_constant_pool_refs): New function.
(find_constant_pool_ref): Work on annotated pool references.
(replace_constant_pool_ref): Likewise. Use explicit base.
(replace_ltrel_base): Use explicit base.
(s390_mainpool_start): Reflect main_pool pattern change.
(s390_mainpool_finish): Use base register from main_pool.
Update calls to replace_ltrel_base and replace_constant_pool_ref.
(s390_chunkify_start): Use base_reg from struct machine_function.
(s390_chunkify_finish): Remove base_reg argument. Update calls
to replace_ltrel_base and replace_constant_pool_ref.
(s390_reorg): Don't decide upon base register. Update calls.
(s390_load_got): Remove MAYBE_DEAD handling. Do not emit insns
but return sequence instead.
(s390_emit_prologue): Decide upon base register to use. Annotate
all literal pool references. Adapt to main_pool pattern change.
Update s390_load_got call; move MAYBE_DEAD handling here.
(s390_emit_epilogue): Annotate late literal pool references.
Remove barrier before register restore instruction.
* config/s390/ (UNSPEC_LTREF): New constant.
("builtin_setjmp_receiver"): Update s390_load_got call.
("main_pool"): Explicitly reference base register.
2004-06-27 Roger Sayle <>
* fold-const.c (fold) <BIT_IOR_EXPR>: Optimize ~X|X and X|~X as -1.
<BIT_XOR_EXPR>: Optimize ~X|X and X|~X as -1.
<BIT_AND_EXPR>: Optimize ~X&X and X&~X as 0.
<TRUTH_AND_EXPR, TRUTH_ANDIF_EXPR>: Optimize !X&&X and X&&!X as false.
<TRUTH_OR_EXPR, TRUTH_ORIF_EXPR>: Optimize !X||X and !X||X as true.
<TRUTH_XOR_EXPR>: Optimize !X^X and X^X! as true. Now that
TRUTH_XOR_EXPR is a commutative tree code, don't test whether arg0
is a constant.
2004-06-26 Richard Kenner <>
* c-common.c (c_safe_from_p, c_walk_subtrees): Deleted.
* c-common.def (DECL_STMT): Remove.
* c-common.h (DECL_STMT_DECL): Deleted.
(c_safe_from_p, c_walk_subtrees): Deleted.
* c-decl.c,, c-pretty-print.c: DECL_STMT now DECL_EXPR.
* c-dump.c (c_dump_tree, case DECL_STMT): Deleted.
* c-gimplify.c (gimplify_decl_stmt): Deleted.
(gimplify_compound_literal_expr): Use DECL_EXPR_DECL
and gimplify_and_add.
(c_gimplify_expr, case DECL_EXPR): New case.
(c_gimplify_expr, case DECL_STMT): Deleted.
* c-lang.c (LANG_HOOKS_SAFE_FROM_P): Likewise.
* expr.c (safe_from_p, case 's'): New case.
* gimplify.c (gimplify_decl_expr): New function.
(gimplify_expr, case DECL_EXPR): New case.
* tree-inline.c (walk_tree): Walk into all fields of a type and
decl only if they are in a DECL_EXPR.
(mark_local_for_remap_r): Minor code cleanup.
* tree-outof-ssa.c (discover_nonconstant_array_refs_r): Add else.
* tree.c (has_cleanups, case DECL_EXPR): New case.
* tree.def (DECL_EXPR): New code.
* tree.h (DECL_EXPR_DECL): New macro.
* objc/objc-lang.c (LANG_HOOKS_SAFE_FROM_P): Deleted.
2004-06-26 Andrew Pinski <>
PR 13334
* doc/install.texi: Document non-standard CFLAGS and bootstrap
failures and warnings.
2004-06-26 Andrew Haley <>
* emit-rtl.c (set_mem_attributes_minus_bitpos): Check
* tree-eh.c (tree_could_trap_p): Check TREE_THIS_NOTRAP.
* tree.h (TREE_THIS_NOTRAP): New.
2004-06-26 Kaz Kojima <>
* genattrtab.c (write_test_expr): Put a unsigned cast before
the first operand for GEU, GTU, LEU and LTU.
2004-06-26 Kazu Hirata <>
* c-typeck.c, cfgexpand.c, ddg.c, ddg.h, df.c, fold-const.c,
gcov.c, gimplify.c, modulo-sched.c, passes.c, tree-cfg.c,
tree-mudflap.c, tree-nrv.c, tree-outof-ssa.c, tree-ssa-dom.c,
tree-ssa-dse.c, tree-ssa-operands.c, tree-ssa-pre.c,
tree-tailcall.c: Fix comment typos. Follow spelling
2004-06-25 Eric Christopher <>
* config/mips/ Add back scheduling exclusion info.
2004-06-25 Roger Sayle <>
* ifcvt.c (seq_contains_jump): Delete function.
(end_ifcvt_sequence): Replace call to seq_contains_jump with an
inline test for a jump instruction in the existing "insn" loop.
(block_fallthru): Document function.
2004-06-25 Philip Blundell <>
PR wrong-code/15089
* loop.c (scan_loop): Do not move user-specified register
2004-06-25 DJ Delorie <>
* c-common.h (warn_cast_qual, warn_missing_format_attribute,
warn_pointer_arith, warn_missing_prototypes, warn_parentheses,
warn_missing_braces, warn_sign_compare, warn_long_long,
warn_redundant_decls, warn_float_equal, warn_char_subscripts,
warn_conversion, warn_format_y2k, warn_format_extra_args,
warn_format_zero_length, warn_format_nonliteral,
warn_format_security, mesg_implicit_function_declaration,
warn_bad_function_cast, warn_traditional,
warn_declaration_after_statement, warn_strict_prototypes,
warn_missing_declarations, warn_nested_externs,
warn_sequence_point, warn_init_self, warn_div_by_zero,
warn_implicit_int, warn_nonnull, warn_old_style_definition,
warn_selector, warn_undeclared_selector, warn_protocol,
warn_abi, warn_invalid_offsetof, warn_ctor_dtor_privacy,
warn_overloaded_virtual, warn_nonvdtor, warn_reorder,
warn_synth, warn_pmf2ptr, warn_ecpp, warn_sign_promo,
warn_old_style_cast, warn_nontemplate_friend,
warn_deprecated): Remove explicit declarations.
* c-common.c: Likewise, remove explicit definitions.
* c-opts.c: Likewise, remove explicit assignments.
* c.opts: Likewise, add implicit declare/define/assign.
2004-06-25 Richard Kenner <>
* gimplify.c (lookup_tmp_var): Set TREE_READONLY in is_formal case.
(build_addr_expr_with_type): Deleted.
(build_addr_expr): Deleted; callers changed to build_fold_addr_expr.
(gimplify_compound_lval): Make two passes over reference nest.
* tree-nested.c (build_addr): Merge real/imagpart with
(convert_nonlocal_reference, convert_local_reference): Process extra
* tree-outof-ssa.c (discover_nonconstant_array_refs_r): Check for
lower bound and field offset being constant.
2004-06-25 Mark Mitchell <>
PR wrong-code/16129
* alias.c (get_alias_set): Adjust setting of
DECL_POINTER_ALIAS_SET for pointers to aggregates.
2004-06-24 Richard Kenner <>
* tree-inline.c (remap_type): Arrange to have just one pointer type
for each type, mode, and 'can alias' value.
(setup_one_parameter): Remap type when making VAR_DECL for PARM_DECL.
(estimate_num_insns_1): Minor code reformatting.
(inline_forbidden_p_1): Likewise; add; missing return statement.
2004-06-25 Roger Sayle <>
PR middle-end/15825
* ifcvt.c (unshare_ifcvt_sequence): Rename to end_ifcvt_sequence.
Use get_isns and end_sequence instead of accepting a seq argument.
Scan the instruction sequence for unrecognizable or jump insns.
(noce_try_move, noce_try_store_flag, noce_try_store_flag_constants,
noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove,
noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
noce_try_sign_mask): Use end_ifcvt_sequence to factor common code.
2004-06-24 Jeff Law <>
* gimplify.c (gimplify_compound_lval): Reset TREE_SIDE_EFFECTS
after gimplifying the innermost component.
2004-06-25 Richard Sandiford <>
PR target/16176
* config/mips/mips.c (mips_expand_unaligned_load): Use a temporary
register for the destination of the lwl or ldl.
2004-06-25 Richard Kenner <>
* tree-dfa.c (get_virtual_var): Merge real/imaginary parts with
handled_component_p handling.
* tree-gimple.c (get_base_address): Likewise and fix typo that
caused both recursion and looping.
* tree-cfg.c (verify_expr): Add macro CHECK_OK.
Properly test for nest of handled_components in LHS context.
2004-06-25 Devang Patel <>
* doc/tree-ssa.texi: Document info about MODIFY_EXPR's type
2004-06-25 Paul Brook <>
TARGET_CXX): Define.
* target.h (struct gcc_target): Add struct cxx.
* targhooks.h (default_cxx_guard_type): Add prototype.
* targhooks.c (default_cxx_guard_type): New function.
(arm_cxx_guard_type, arm_cxx_guard_mask_bit): New functions.
* doc/tm.texi: Document TARGET_CXX_GUARD_TYPE and
2004-06-25 Devang Patel <>
* config/rs6000/darwin.h (CC1_SPEC): Handle -gused and -gfull.
* config/i386/darwin.h (CC1_SPEC): Same.
2004-06-25 Mark G. Adams <>
* dbxout.h: Add include guards
2004-06-25 Paul Brook <>
* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_EABI__.
2004-06-25 Richard Earnshaw <>
* arm.c (arm_arch4t): New variable.
(arm_override_options): Initialize it. If compiling for armv5 or
higher clear TARGET_INTERWORK.
(output_call): Abort if called for armv5. Use BX if it's available.
(output_call_mem): Use BLX if available and ensure that all armv5
code is interworking safe.
(output_return_instruction): Always use BX in preference to MOV if
it's available.
(arm_output_epilogue): Likewise.
(arm_final_prescan_insn): Never conditionally call a subroutine
on armv5.
* arm.h (arm_arch4t): Declare.
* (call_reg_armv5, call_value_reg_armv5): New.
(call_reg_arm, call_value_reg_arm): Renamed from call_reg and
call_value_reg respectively.
(call_reg_thumb_v5, call_value_reg_thumb_v5): New.
(call_reg_thumb, call_value_reg_thumb): Renamed from call_indirect
and call_value_indirect respectively.
2004-06-25 Richard Sandiford <>
* config/mips/mips.c (reg_or_const_float_1_operand): Reimplement
in terms of const_float_1_operand.
2004-06-25 Richard Sandiford <>
PR target/16144
* config/mips/ (divsf, divdf): Don't FAIL if the first operand
is 1.0; force it into a register instead.
2004-06-25 Bernardo Innocenti <>
* config/m68k/m68k.h: Restore valid comment removed by mistake with
the recent m68k comments cleanup.
2004-06-24 Richard Kenner <>
* c-gimplify.c (gimplify_for_stmt): Use gimplify_and_add.
* gimplify.c (internal_get_tmp_var, gimplify_return_expr): Likewise.
(gimplify_loop_expr, gimplify_init_constructor): Likewise.
(gimplify_self_mod_expr, gimplify_cond_expr): Likewise.
* gimplify.c (voidify_wrapper_expr): Allow TARGET_EXPR.
* gimplify.c: Remove unneeded forward declarations.
* gimplify.c (append_to_compound_expr): Deleted.
* tree-gimple.h (append_to_compound_expr): Deleted.
* fold-const.c (fold_addr_expr_with_type): Look through all
valid LHS modifiers to find a base to mark addressable.
* tree.h (debug_find_tree): Add declaration.
* tree-inline.c (debug_find_tree): Remove extern declaration.
2004-06-24 Eric Christopher <>
* config/rs6000/ Apply change mistakenly
deleted with 2004-06-22 patch.
2004-06-24 Richard Henderson <>
* c-decl.c (c_in_iteration_stmt, c_in_case_stmt): Remove.
(c_break_label, c_cont_label): New.
(start_function): Update initializations.
(c_push_function_context): Update saves.
(c_pop_function_context): Update restores.
* Update expected conflicts.
(stmt_count, compstmt_count): Remove. Remove all updates.
(if_prefix, simple_if, do_stmt_start): Remove.
(lineno_labeled_stmt): Remove.
(lineno_labels): New.
(c99_block_lineno_labeled_stmt): Use it.
(lineno_stmt, lineno_label): Don't clear EXPR_LOCUS before calling
(select_or_iter_stmt): Replace by ...
(condition, if_statement_1, if_statement_2, if_statement,
start_break, start_continue, while_statement, do_statement,
for_cond_expr, for_incr_expr, for_statement, switch_statement): New.
(stmt): Split out ...
(stmt_nocomp): ... this. Use c_finish_bc_stmt, c_finish_goto_label,
* c-semantics.c (add_stmt): Don't add line numbers to labels.
* c-tree.h: Update prototypes.
(struct language_function): Remove x_in_iteration_stmt, x_in_case_stmt;
add x_break_label, x_cont_label, x_switch_stack.
(c_switch_stack): Declare.
* c-typeck.c (c_finish_goto_label, c_finish_goto_ptr): New.
(c_finish_return): Return the statement.
(c_switch_stack): Rename from switch_stack; export.
(if_elt, if_stack, if_stack_space, if_stack_pointer): Remove.
(c_begin_if_stmt, c_finish_if_cond, c_finish_then, c_begin_else,
c_finish_else): Remove.
(c_finish_if_stmt): Rewrite to perform the entire operation.
(c_begin_while_stmt, c_finish_while_stmt_cond, c_finish_while_stmt,
c_begin_for_stmt, c_finish_for_stmt_init, c_finish_for_stmt_cond,
c_finish_for_stmt_incr, c_finish_for_stmt): Remove.
(c_finish_loop): New.
(c_finish_bc_stmt): New.
(c_finish_expr_stmt): Return the statement. Split out...
(c_process_expr_stmt): ... this. Don't add locus to error marks.
* gimplify.c (gimplify_cond_expr): Accept NULL type statements.
* tree-gimple.c (is_gimple_stmt): Likewise.
* tree-pretty-print.c (dump_generic_node <COND_EXPR>): Likewise.
(print_struct_decl): Delete empty compound statement.
* objc/objc-act.c (objc_build_throw_stmt): Return the statement.
* objc/objc-act.h: Update decl.
2004-06-24 Richard Kenner <>
* tree-pretty-print.c (dump_generic_node, case TYPE_DECL):
2004-06-24 Andrew Pinski <>
* objc-act.c (build_objc_method_call): Save the lookup_object
so we do not call it twice.
2004-06-24 Richard Henderson <>
* tree-ssa-dom.c (real_avail_expr_hash): New.
(tree_ssa_dominator_optimize): Use it in the htab.
2004-06-24 Frank Ch. Eigler <>
* tree-mudflap.c (mx_register_decls): Add third (type) argument
to synthesized __mf_unregister call.
2004-06-24 Roger Sayle <>
PR middle-end/15239
* expmed.c (expand_mult): Remove artificial restriction on the
maximum cost of a synthetic multiplication sequence.
2004-06-24 Eric Christopher <>
* combine.c (distribute_notes): Don't delete sets to
global register variables.
2004-06-24 Jakub Jelinek <>
* config/i386/ (ffsdi2, clzdi2): New expanders.
(ffs_rex64): New splitter.
(ffsdi_1, ctzdi2, bsr_rex64): New instructions.
2004-06-24 Andrew Pinski <>
* config/darwin7.h (MATH_LIBRARY): Remove.
(LIB_SPEC): Define.
* config/darwin.h (MATH_LIBRARY): Define always to empty.
(LIB_SPEC): Only define if not already defined.
2004-06-24 Revital Eres <>
* loop-iv.c (iv_analyze, simple_set_p): Support for identifying
shifts of induction variable.
(iv_shift): New function.
2004-06-24 Richard Henderson <>
* gimplify.c (gimplify_body): Watch for body vanishing.
2004-06-24 Jeff Law <>
* tree-ssa-dom.c (record_dominating_conditions): New function.
(dom_opt_finalize_block, get_eq_expr_value): Use it.
2004-06-24 Richard Sandiford <>
* calls.c (shift_returned_value): Fix handling of non-integer
2004-06-24 Ulrich Weigand <>
* c-decl.c (finish_function): Do not check for DEFAULT_MAIN_RETURN.
* system.h (DEFAULT_MAIN_RETURN): Poison.
* doc/tm.texi (DEFAULT_MAIN_RETURN): Remove documentation.
2004-06-24 Ben Elliston <>
* doc/cfg.texi (Edges): Fix typo.
2004-06-24 Paul Brook <>
* config/arm/arm.c (arm_output_epilogue): Remove excess checks.
2004-06-23 Andrew Pinski <>
PR middle-end/15988
* fold-const.c (fold_convert): Types which are compatible
can be converted with only a NOP_EXPR.
2004-06-24 Alan Modra <>
* calls.c (expand_call): Call INIT_CUMULATIVE_ARGS earlier, and
pass raw n_named_args to it.
* targhooks.c: Formatting.
(hook_bool_CUMULATIVE_ARGS_false): Correct comment.
2004-06-23 Richard Henderson <>
* c-gimplify.c (gimplify_decl_stmt): Push gimplify_one_sizepos inside
non-constant size check. Gimplify the type too. Tidy building
2004-06-23 Roger Sayle <>
* c-common.c (expand_unordered_cmp): Delete.
(expand_tree_builtin): Delete.
* c-common.h (expand_tree_builtin): Delete function prototype.
* c-typeck.c (build_function_call): Don't call expand_tree_builtin.
2004-06-23 Richard Henderson <>
* gimplify.c (gimplify_compound_lval): Don't set ARRAY_REF or
COMPONENT_REF variable fields unless they're non-constant.
2004-06-23 Robert Millan <>
* config.gcc: Merge kfreebsd*-gnu with linux* and add knetbsd*-gnu.
* config/i386/linux.h: Allow overriding of LINK_EMULATION,
DYNAMIC_LINKER and register names in sc_ structure.
* config/kfreebsd-gnu.h: New. kfreebsd-gnu followup for linux.h.
* config/i386/kfreebsd-gnu.h: New. Ditto for i386-kfreebsd-gnu.
* config/knetbsd-gnu.h: New. Ditto for knetbsd-gnu.
* config/i386/knetbsd-gnu.h: New. Ditto for i386-knetbsd-gnu.
* config/kfreebsdgnu.h: Remove.
* config/t-kfreebsd-gnu: Likewise.
* config/i386/kfreebsdgnu.h: Likewise.
2004-06-23 Eric Christopher <>
* fold-const.c (make_range): Cleanup type checking through function.
Remove orig_type. Replace with checks to exp_type and arg0_type.
Clarify comment when converting from unsigned to signed.
2004-06-23 Eric Christopher <>
* config/mips/mips.c (mips_use_dfa_pipeline_interface): Add R3000.
* config/mips/ Remove R3000 scheduling description.
* config/mips/ New file.
2004-06-23 Ulrich Weigand <>
* config/s390/s390-protos.h (s390_emit_compare): Add prototype.
(s390_emit_jump): Likewise.
* config/s390/s390.c (s390_emit_compare): New function.
(s390_emit_jump): Likewise.
* config/s390/ ("beq", "bne", "bgt", "bgtu", "blt", "bltu",
"bge", "bgeu", "ble", "bleu", "bunordered", "bordered", "buneq",
"bungt", "bunlt", "bunge", "bunle", "bltgt"): Use s390_emit_compare
and s390_emit_jump.
("cjump"): Remove, replace by ...
("*cjump_64", "*cjump_31"): ... these insns. Improve length default.
("icjump", "*icjump_64", "*icjump_31"): Likewise.
("trap"): Fix type attribute.
("conditional_trap"): Use s390_emit_compare.
("doloop_si"): Remove, replace by ...
("doloop_si64", "doloop_si31"): ... these new insn_and_split.
Merge existing splitter into insn_and_split. Improve length default.
("doloop_di"): Merge with existing splitter into insn_and_split.
("doloop"): Adapt.
("jump"): Convert to expander. Use s390_emit_jump.
("*jump_64", "*jump_31"): New insns. Improve length default.
2004-06-23 Wu Yongwei <>
* gthr-win32.h (__GTHREAD_MUTEX_INIT_DEFAULT): Adjust.
(__gthr_i486_lock_cmp_xchg): New inline assembly function.
(__GTHR_W32_InterlockedCompareExchange): New macro to choose a
suitable function for interlocked compare-and-exchange.
(__gthread_mutex_trylock): Use
(__gthread_mutex_init_function, __gthread_mutex_lock,
__gthread_mutex_trylock, __gthread_mutex_unlock): Adjust the
initial counter value to work correctly under Windows 95.
* config/i386/gthr-win32.c: Adjust include order.
Define __GTHREAD_I486_INLINE_LOCK_PRIMITIVES before including
(__gthr_win32_mutex_init_function, __gthr_win32_mutex_lock,
__gthr_win32_mutex_trylock, __gthr_win32_mutex_unlock): Adjust
to match inline versions in gthr-win32.h.
2004-06-23 David Edelsohn <>
* config/rs6000/rs6000.c (rs6000_use_dfa_pipeline_interface): Delete.
(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Redefine a hook_int_void_1.
(insvdi_rshift_rlwimi_p): New function.
* config/rs6000/ (insvdi_internal2/3): New patterns.
(extendsfdf2): Convert to define_insn_and_split.
* config/rs6000/rs6000-protos.h (insvdi_rshift_rlwimi_p): Prototype.
2004-06-23 Andrew Pinski <>
* c-typeck.c (composite_type, <case ARRAY_TYPE>): Abort if we have
type qualifiers at all.
If both of the type domains are null and the new element type is
the same as one of the, return the one which the element type.
Do not call qualify_type on the new type.
2004-06-23 Ulrich Weigand <>
* config/s390/s390.h (DEFAULT_MAIN_RETURN): Remove.
2004-06-23 Roger Sayle <>
* convert.c (strip_float_extension): Skip both NOP_EXPR and
CONVERT_EXPR floating point extensions.
2004-06-23 Diego Novillo <>
* (tree-vn.o): New.
(tree-ssa-pre.o): Don't depend on RTL_H.
* tree-dfa.c (find_referenced_vars): Don't call init_tree_ssa.
* tree-flow.h (struct var_ann_d): Remove field expr_set.
(add_to_value, expressions_equal_p, get_value_handle, vn_compute,
vn_lookup_or_add, vn_add, vn_lookup, vn_init, vn_delete): Declare.
* tree-optimize.c (execute_init_datastructures): New local function.
(pass_init_datastructures): New local variable.
(init_tree_optimization_passes): Sequence pass_init_datastructures.
* tree-pretty-print.c (MASK_POINTER): Remove.
(dump_generic_node): Handle VALUE_HANDLE.
* tree-ssa-pre.c: Move all value numbering routines to tree-vn.c.
Update callers to use new function names.
variable annotations.
* tree-ssa.c (init_tree_ssa): Call vn_init.
(delete_tree_ssa): Call vn_delete.
* tree-vn.c: New file.
* tree.c (tree_size): Handle VALUE_HANDLE.
(tree_node_structure): Likewise.
(iterative_hash_expr): Likewise.
* tree.def (VALUE_HANDLE): New code.
* tree.h (struct tree_value_handle): New.
(enum tree_node_structure_enum): Add TS_VALUE_HANDLE.
(union tree_node): Add struct tree_value_handle.
2004-06-23 Andrew Pinski <>
* c-typeck.c (composite_type):
<case POINTER_TYPE>: Build a qualified type of
the new type.
<case ARRAY_TYPE>: Likewise.
<case FUNCTION_TYPE>: Likewise.
2004-06-23 Pat Haugen <>
PR optimization/15633
* value-prof.c (divmod_fixed_value_transform): Compute probability
of taking optimal path and pass along to gen_ routine.
(mod_pow2_value_transform): Same.
(mod_subtract_transform): Same.
(gen_divmod_fixed_value): Add new probability parameter.
Add probability to newly created jump.
(gen_mod_pow2): Same.
(gen_mod_subtract): Same.
2004-06-23 Richard Earnshaw <>
* PR target/15948
* (bicsi3_cbranch): Add alternative to handle tying operands
one and two.
2004-06-23 Richard Earnshaw <>
PR target/15927
* arm.h (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Don't need a secondary
reload if CLASS is BASE_REGS.
2004-06-23 Richard Sandiford <>
* gengtype-yacc.y (option): Avoid use of non-constant struct
2004-06-23 Nathan Sidwell <>
* doc/extend.texi (Function Attributes): Alphabetize.
2004-06-23 Richard Henderson <>
* c-gimplify.c (gimplify_decl_stmt): Update gimplify_type_sizes call.
Use gimplify_and_add.
* c-typeck.c (c_finish_if_stmt): Use NULL instead of empty stmt.
* gimplify.c (build_and_jump, gimplify_exit_expr,
gimplify_init_constructor, gimplify_save_expr, gimple_push_cleanup,
gimplify_stmt, gimplify_expr): Likewise.
(shortcut_cond_expr): Handle NULL arms of COND_EXPR.
(gimplify_statement_list): Remove NULL entries.
(gimplify_to_stmt_list): Handle NULL results.
(gimplify_type_sizes): Add list_p argument.
(gimplify_one_sizepos): Don't use internal pre/post queue.
* tree-gimple.h (gimplify_type_sizes): Update.
2004-06-22 Eric Christopher <>
* config/rs6000/ (*insvsi_internal5/6): New patterns.
2004-06-22 Pat Haugen <>
* cfghooks.c (make_forwarder_block): Decrement count on fallthru edge
when redirecting back edges.
* cfghooks.c (split_block): Call make_single_succ_edge so that edge
count/probability are set correctly.
2004-06-22 Richard Henderson <>
* c-typeck.c (emit_side_effect_warnings): Ignore error marks.
(c_finish_stmt_expr): Likewise.
* config/i386/i386.c (TARGET_STRUCT_VALUE_RTX): New.
(ix86_return_in_memory): Move SSE vector return warning ...
(ix86_struct_value_rtx): ... here. New.
2004-06-22 Richard Henderson <>
* tree.def (VTABLE_REF): Remove.
* expr.c (expand_expr_real_1): Replace VTABLE_REF with OBJ_TYPE_REF.
* fold-const.c (non_lvalue): Likewise.
* gimplify.c (gimplify_expr): Likewise.
(gimplify_call_expr): Use is_gimple_call_addr.
* langhooks-def.h (LANG_HOOKS_FOLD_OBJ_TYPE_REF): New.
* langhooks.h (fold_obj_type_ref): New.
* tree-gimple.c (is_gimple_call_addr): New.
* tree-gimple.h (is_gimple_call_addr): Declare.
* tree-inline.c (inlinable_function_p): Fix merge error.
(estimate_num_insns_1): Replace VTABLE_REF with OBJ_TYPE_REF.
* tree-pretty-print.c (dump_generic_node): Likewise.
(print_call_name): Handle OBJ_TYPE_REF.
* tree-ssa-ccp.c (fold_stmt): Fold OBJ_TYPE_REF.
* tree-ssa-operands.c (get_expr_operands): Handle OBJ_TYPE_REF.
* tree.h (OBJ_TYPE_REF_EXPR): New.
* doc/c-tree.texi (VTABLE_REF): Remove.
* objc/objc-act.c (build_objc_method_call): Build an OBJ_TYPE_REF.
2004-06-22 Richard Henderson <>
PR middle-end/16026
* function.c (assign_parms): Don't abort for overaligned PARALLEL.
2004-06-22 Joseph S. Myers <>
* (distclean): Don't try to remove empty directories.
2004-06-22 Richard Sandiford <>
PR target/15869
* config/mips/mips.c (mips_avoid_hazards): Call split_all_insns_noflow.
2004-06-22 Alexandre Oliva <>
* config/mn10300/ (movdi, movdf): Use high/low for movu
2004-06-22 Dale Johannesen <>
* config/rs6000/rs6000.c (legitimate_offset_address_p): Make
global, rename rs6000_legitimate_offset_address_p.
(rs6000_legitimate_address_p): Adjust calls to it.
(lmw_operation): Ditto.
(stmw_operation): Ditto.
* config/rs6000/rs6000-protos.h: Declare it.
* config/rs6000/ (*movdf_hardfloat32): Use it
instead of offsettable_memref_p.
2004-06-22 Dale Johannesen <>
* config/rs6000/rs6000.c (rs6000_legitimate_address): Disallow
[reg+reg] mode for TFmode memory accesses.
(rs6000_eliminate_indexed_memrefs): New.
(rs6000_emit_move): Call preceding for TImode and TFmode.
2004-06-22 Paolo Bonzini <>
* tree-cfg.c (pass_warn_function_return): It needs
CFG, not SSA.
2004-06-22 Nathan Sidwell <>
* doc/invoke.texi (Machine Dependent Options): Alphabetize.
(Submodel Options): Likewise.
2004-06-21 Andrew Pinski <>
Radar #: 3701874
* c-decl.c (push_file_scope): Return early if we already
have a file scope.
2004-06-21 Geoffrey Keating <>
* c-opts.c (c_common_handle_option): Handle -fpch-preprocess.
* c-common.h (flag_pch_preprocess): Declare.
(c_common_pch_pragma): Likewise.
* c-common.c (flag_pch_preprocess): New.
* c-pch.c (c_common_read_pch): Support -fpreprocess-only.
(c_common_pch_pragma): New.
* c-ppoutput.c (cb_read_pch): New.
(init_pp_output): Support -fpch-preprocess.
* c-pragma.c (init_pragma): Support #pragma GNUC pch_preprocess.
* c.opt (fpch-preprocess): New.
* gcc.c (cpp_options): When save-temps, pass -fpch-preprocess.
* doc/cppopts.texi: Document -fpch-preprocess.
* doc/invoke.texi (Precompiled Headers): Mention that
-fpreprocessed is safe for PCH. Mention that if an option is
listed as safe that doesn't mean it does what you expect.
2004-06-22 Ben Elliston <>
* tree-ssa.c (ssa_redirect_edge): Correct leading comment.
2004-06-21 Richard Kenner <>
* (gimplify.o): Add cgraph.h.
* alias.c (adjust_offset_for_component_ref): Use
* c-decl.c (build_array_declarator): Add news args for ARRAY_REF.
* c-gimplify.c (gimplify_expr_stmt): Use alloc_stmt_list.
(gimplify_decl_stmt): Call gimplify_type_sizes for type.
For decl, call gimplify_one_sizepos and use statement list.
(gimplify_compound_literal_expr): New arg PRE_P.
Add statement to PRE_P list and return DECL.
(c_gimplify_expr, case COMPOUND_LITERAL_EXPR): Add arg to
* c-tree.h (getdecls): Deleted.
* c-typeck.c (build_component_ref): Add operand for COMPONENT_REF.
(build_array_ref): Add two operands for ARRAY_REF.
(build_unary_op): Set TREE_INVARIANT and TREE_CONSTANT for
* coverage.c (tree_coverage_counter_ref): Add new operands
* emit-rtl.c (component_ref_for_mem_expr): Add new operand
(set_mem_attributes_minus_bitpos): Use array_ref_low_bound
and array_ref_element_size.
(widen_memory_access):Use component_ref_field_offset.
* explow.c (update_nonlocal_goto_save_area): Add two operands
* expr.c (array_ref_element_size, array_ref_low_bound): New functions.
(component_ref_field_offset): Likewise.
(get_inner_reference): Use them.
(expand_expr_real_1, case ARRAY_REF): Use array_ref_low_bound.
* fold-const.c (fold, case EQ_EXPR): Properly handle DECL_SIZE.
(fold_read_from_constant_string): Use array_ref_low_bound.
Verify that result is a character type.
(build_fold_indirect_ref): Add two operands for ARRAY_REF.
* function.c (expand_function_start): Likewise.
* gimple-low.c (expand_var_p): Delete duplicated line.
* gimplify.c: Add static decls for local functions.
(cgraph.h): Now included.
(create_tmp_var): Remove check for ARRAY_TYPE.
(copy_if_shared_r): Look at bounds and sizes of types.
(build_and_jump): Return alloc_stmt_list instead of build_empty_stmt.
(gimplify_exit_expr, shortcut_cond_expr): Likewise.
(gimplify_save_expr, gimple_push_cleanup): Likewise.
(gimplify_init_constructor): Likewise.
WANT_VALUE now bool.
If empty list with no result wanted, return GS_UNHANDLED.
Add additional operands for ARRAY_REF and COMPONENT_REF.
(canonicalize_component_ref): Convert to &array[L].
(gimplify_array_ref_to_plus): Use array_ref_element_size and
(build_addr_expr_with_type, build_addr_expr): New functions.
(gimplify_compound_lval): WANT_LVALUE now bool.
Major rework to allow handle_component_p and initialize and
gimplify new operands for ARRAY_REF, ARRAY_RANGE_REF, and
(gimplify_array_ref): Deleted.
(gimplify_self_mod_expr): WANT_VALUE now bool.
(gimplify_modify_expr): Gimplify to_p and from_p later.
Factor out code into gimplify_modify_expr_rhs and call twice.
Move variable-size code earlier and handle PLACEHOLDER_EXPR.
(gimplify_modify_expr_rhs, gimplify_variable_sized_compare): New fns.
(gimplify_addr_expr, case VIEW_CONVERT_EXPR): New case.
(gimplify_expr, case ARRAY_REF): Delete special case.
Instead handle like COMPONENT_REF; also do ARRAY_RANGE_REF,
IMAGPART, and REALPART the same way.
(gimplify_expr, case VIEW_CONVERT_EXPR): New case.
(gimplify_expr): Call gimplify_variable_sized_compare if applicable.
Call alloc_stmt_list instead of build_empty_stmt.
Deal with _REF that's volatile.
(gimplify_type_sizes, gimplify_one_sizepos): New functions.
(unshare_body, unvisit_body): New functions.
(gimplify_body): Call them.
* stmt.c (expand_stack_alloc): Don't expand TYPE_MAX_VALUE.
* stor-layout.c (get_pending_sizes): Don't change SAVE_EXPR_CONTEXT.
* tree-alias-common.c (get_alias_var): Also skip ARRAY_RANGE_REF.
* tree-cfg.c (tree_node_can_be_shared): Treat ARRAY_RANGE_REF
(verify_expr, case ADDR_EXPR): Use handled_component_p.
* tree-dfa.c (get_virtual_var): Likewise.
* tree-dump.c (dequeue_and_dump, case COMPONENT_REF, ARRAY_REF):
New cases to dump new operands; likewise for ARRAY_RANGE_REF.
* tree-eh.c (tree_could_trap, case ARRAY_RANGE_REF): Like ARRAY_REF.
* tree-gimple.c (is_gimple_addr_expr_arg): Add ARRAY_RANGE_REF
(get_base_address): Use handled_component_p.
* tree-gimple.h (gimplify_type_sizes, gimplify_one_sizepos): New.
* tree-inline.c (walk_tree): Walk more things for types and decls.
* tree-mudflap.c (mf_build_check_statement_for): Add new operands
(mx_xform_derefs_1): Clean up usage of decl sizes.
* tree-nested.c (build_addr): Use handled_component_p.
(walk_stmts, case CATCH_EXPR): Add missing "break".
(get_static_chain, get_frame_field): Add new operand for COMPONENT_REF.
(finalize_nesting_tree_1): Likewise.
(convert_nonlocal_reference, case ARRAY_RANGE_REF): Like ARRAY_REF
and process additional operands.
(convert_local_reference): Likewise.
* tree-outof-ssa.c (discover_nonconstant_array_refs_r): Treat
* tree-pretty-print.c (dump_generic_node, case QUAL_UNION_TYPE): Handle
(dump_generic_node, case COMPONENT_REF): Print offset operand.
(dump_generic_node, case ARRAY_RANGE_REF): Treat like ARRAY_REF
and print lower bound and element size for both.
(op_prio, case ARRAY_RANGE_REF): Like ARRAY_REF.
* tree-sra.c (csc_build_component_ref): Add new operand.
(scalarize_call_expr): Use get_base_address.
* tree-ssa-ccp.c (widen_bitfield): Clean up size handling.
(maybe_fold_offset_to_array_ref): Rework to handle input having an
ARRAY_REF, refine handling of lower bound, and add new operands
(maybe_fold_to_component_ref): Add new operand for COMPONENT_REF.
(maybe_fold_stmt_indirect): Only fold *&B to B if types match.
(maybe_fold_stmt_addition): Only handle constant lower bound.
* tree-ssa-operands.c (get_expr_operands): Minor rearrangements.
Treat ARRAY_REF and ARRAY_RANGE_REF the same; look at extra operands.
Look at new offset operand of COMPONENT_REF.
* tree-ssa.c (set_is_used): Use handled_component_p.
* tree.c (substitute_in_expr, case COMPONENT_REF): Add new operand.
(stabilize_reference, case COMPONENT_REF): Likewise.
(stabilize_reference, case ARRAY_RANGE_REF, ARRAY_REF): Similarly.
(recompute_tree_invariant_for_addr_expr): Completely rework to
be more precise. Also set TREE_SIDE_EFFECTS.
(build1_stat, case ARRAY_EXPR): Don't handle TREE_SIDE_EFFECTS here.
(build2_stat, build3_stat, build4_stat): For references,
(get_unwidened): Add new operand for COMPONENT_REF.
(get_narrower): Likewise; use host_integerp for DECL_SIZE.
* tree.def (COMPONENT_REF): Add new operand.
(ARRAY_REF, ARRAY_RANGE_REF): Add two new operands.
* tree.h (array_ref_element_size, array_ref_low_bound): New decls.
(component_ref_field_offset): Likewise.
* config/alpha/alpha.c (alpha_va_start): Add new op for COMPONENT_REF.
(alpha_gimplify_va_arg): Likewise.
* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
* config/i860/i860.c (i860_va_start, i860_va_arg): Likewise.
* config/iq2000/iq2000.c (iq2000_va_arg): Likewise.
* config/mips/mips.c (mips_va_start, mips_va_arg): Likewise.
* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg):
* config/s390/s390.c (s390_va_start, s390_gimplify_va_arg): Likewise.
* config/sh/sh.c (sh_va_start, sh_va_arg): Likewise.
* config/stormy16/stormy16.c (xstormy1_expand_builin_va_start):
(xstormy16_expand_builtin_va_arg): Likewise.
* config/xtensa/xtensa.c (xtensa_va_start, xtensa_va_arg): Likewise.
* objc/objc-act.c (generate_static_references): Likewise.
(generate_strings, build_method_prototype_list_template): Likewise.
(generate_protocol_list): Likewise.
2004-06-21 John David Anglin <>
PR rtl-optimization/14782
* pa.c (emit_move_sequence): Use SFmode for 4-byte modes when doing
the address checks for secondary reloads for loads from and stores
to floating-point registers.
* pa.h (EXTRA_CONSTRAINT, case T): Use SFmode for 4-byte modes
in the address check. Move work around for ELF32 targets to
(GO_IF_LEGITIMATE_ADDRESS): Require constant offsets to be
correctly aligned for DImode loads and stores. Don't allow long
SFmode displacements on ELF32.
2004-06-21 Richard Henderson <>
PR rtl-opt/16114
* cse.c (merge_equiv_classes): Also rehash in response to
delete_reg_equiv changes.
(rehash_using_reg): Don't exclude REGs from rehashing.
2004-06-21 Richard Henderson <>
* c-common.def (RETURN_STMT): Remove.
* c-common.h (RETURN_STMT_EXPR): Remove.
(c_expand_return, build_return_stmt): Remove.
(c_common_stmt_codes): Remove RETURN_STMT.
* c-dump.c (dump_next_stmt): Remove.
(c_dump_tree): Remove RETURN_STMT.
* c-decl.c (finish_function): Use c_finish_return.
* (stmt): Likewise.
* c-gimplify.c (gimplify_return_stmt): Remove.
(c_gimplify_expr): Remove RETURN_STMT.
* c-pretty-print.c (pp_c_statement): Likewise.
* c-semantics.c (build_return_stmt): Remove.
* c-tree.h (c_finish_return): Declare.
* c-typeck.c (c_finish_return): Rename from c_expand_return.
Return void. Build RETURN_EXPR directly.
* tree-dump.h (dump_next_stmt): Remove.
2004-06-21 Zack Weinberg <>
* c-decl.c (start_function): Don't call make_decl_rtl. Don't
look at TREE_ADDRESSABLE of symbol name.
2004-06-21 Kelley Cook <>
PR target/15551
(allocate_stack_worker): Make unspec_volatile.
(allocate_stack_worker_rex64): Likewise.
(allocate_stack_worker_postreload): Likewise.
(allocate_stack_worker_rex64_postreload): Likewise.
2004-06-21 Daniel Berlin <>
Fix PR optimization/15982
* tree-ssa-pre.c: Update a few comments and todos to
reflect constants change.
(get_value_handle): Constants now value number to themselves.
(lookup): Constants lookup to themselves.
(add_to_value): Adjust to always be on.
(set_contains_value): Adjust for constants change.
(find_leader): Ditto.
(phi_translate): 'r' nodes are never ANTIC right now.
(valid_in_set): Ditto.
(get_expr_set): New function.
(find_or_generate_expression): New function, broken out from
(create_expression_by_pieces): Ditto, plus additional
machinery to handle complex values.
(compute_avail): Remove dead RETURN_EXPR handling.
2004-06-21 Steven Bosscher <>
* config/i386/i386.c: Include insn-codes.h
* config/i386/i386.h (FLAGS_REG, FPSR_REG, DIRFLAG_REG): Don't
define here.
* config/i386/ (BP_REG, SP_REG, FLAGS_REG, FPSR_REG,
DIRFLAG_REG): New define_constants. Use them everywhere.
2004-06-21 Kaz Kojima <>
* config/sh/t-linux (MULTILIB_OPTIONS): Remove.
2004-06-21 J"orn Rennecke <>
* sh.h (SUPPORT_SH1, SUPPORT_SH2E, SUPPORT_SH4): Conditionally define.
(TARGET_SWITCHES): Break out switches for cpu subtargets:
(SELECT_SH5_64, SELECT_SH5_64_NOFPU): Rename to:
(SELECT_SH5_32, SELECT_SH5_32_NOFPU): Rename to:
* sh64.h (ASM_SPEC, LINK_DEFAULT_CPU_EMUL): Don't redefine.
* config/sh/t-elf: Amend comment.
* config/sh/t-1e, config/sh/t-mlib-sh1: New files.
* config/sh/t-mlib-sh2, config/sh/t-mlib-sh2e: Likewise.
* config/sh/t-mlib-sh3, config/sh/t-mlib-sh3e: Likewise.
* config/sh/t-mlib-sh4, config/sh/t-mlib-sh4-nofpu: Likewise.
* config/sh/t-mlib-sh4-single: Likewise.
* config/sh/t-mlib-sh4-single-only: Likewise.
* config/sh/t-mlib-sh5-32media: Likewise.
* config/sh/t-mlib-sh5-32media-nofpu: Likewise.
* config/sh/t-mlib-sh5-64media: Likewise.
* config/sh/t-mlib-sh5-64media-nofpu: Likewise.
* config/sh/t-mlib-sh5-compact: Likewise.
* config/sh/t-mlib-sh5-compact-nofpu: Likewise.
* config/sh/t-sh: (MULTILIB_ENDIAN): Add mb.
(MULTILIB_MATCHES): Use some shell code to calculate it.
(MULTILIB_EXCEPTIONS): Change to ml/m1.
* config/sh/netbsd-elf.h: Update code which sets TARGET_VERSION_CPU.
(LINK_DEFAULT_CPU_EMUL): Don't redefine.
* config/sh/t-netbsd (MULTILIB_OPTIONS): Don't append to.
* config/sh/t-netbsd-sh5-64 (MULTILIB_OPTIONS): Don't redefine.
* config/sh/t-sh64 (MULTILIB_OPTIONS): Don't redefine.
* config.gcc: Also set cpu_type / need_64bit_hwint for sh[be]*-*-*.
(sh*linux configurations): Merge into:
(sh*elf / sh*kaos configurations). Support --with-endian, --with-cpu,
--with-multilib-list options. Support sh-superh-elf configuration.
(sh*-netbsd*): Use SELECT_SH* macros.
(supported_defaults): sh[123456ble]-*-* | sh-*-* support "cpu".
Merge sh*-*-netbsd* configurations into sh-elf configurations.
* config/sh/t-netbsd-sh5, config/sh/t-be, config/sh/t-le: Delete.
* config/sh/t-monolib: Likewise.
2004-06-21 Paul Brook <>
* config/arm/arm.h (ARM_LEGITIMIZE_RELOAD_ADDRESS): Soft-float need
not imply FPA.
2004-06-21 Roger Sayle <>
* fold-const.c (operand_equal_p): Pass flags in recursive calls for
binary and relational operations. Add support for TRUTH_ANDIF_EXPR,
* tree.c (commutative_tree_code): Also list UNORDERED_EXPR,
2004-06-21 Paolo Bonzini <>
* rtlanal.c (may_trap_p): Mark LTGT as trapping.
2004-06-21 Joseph S. Myers <>
* tree-alias-common.h (struct tree_alias_ops): Change ip and
ip_partial to unsigned int.
2004-06-21 Richard Henderson <>
* c-common.c (verify_sequence_points): Export.
(c_expand_expr_stmt): Move to c-typeck.c.
* c-common.h (c_expand_expr_stmt): Remove.
(verify_sequence_points): Declare.
* c-mudflap.c (mflang_flush_calls): Use c_finish_expr_stmt.
* (for_init_stmt, stmt): Likewise.
* c-tree.h (c_finish_expr_stmt): Declare.
(c_tree_expr_nonnegative_p): Remove.
* c-typeck.c (c_tree_expr_nonnegative_p): Remove.
(build_conditional_expr, build_binary_op): Use tree_expr_nonnegative_p.
(emit_side_effect_warnings): New.
(c_finish_expr_stmt): Rename from c_expand_expr_stmt. Use it.
(c_finish_stmt_expr): Work without EXPR_STMT. Handle eh regions.
Use emit_side_effect_warnings.
(push_cleanup): Copy STATEMENT_LIST_STMT_EXPR.
* fold-const.c (tree_expr_nonnegative_p): Handle TARGET_EXPR.
* gimplify.c (gimplify_modify_expr): Don't discard TARGET_EXPR
with void initializer.
(gimplify_target_expr): Handle void BIND_EXPR initializer.
* tree-inline.c (estimate_num_insns_1): Fix type lookup for
* objc/objc-act.c (build_module_descriptor): Use add_stmt
instead of c_expand_expr_stmt.
2004-06-21 Paolo Bonzini <>
* fold-const.c (fold_cond_expr_with_comparison):
New function, extracted from fold.
(fold): Extract code to fold A op B ? A : C, use
it to fold A op B ? C : A. Really optimize
A & N ? N : 0 where N is a power of two. Avoid
relying on canonicalization and recursion for
foldings of COND_EXPR to happen.
2004-06-20 David Ayers <>
* objc/objc-act.h (get_object_reference): Rename to
(super_type): Rename to objc_super_type.
(selector_type): Rename to objc_selector_type.
(id_type): Rename to objc_id_type.
(instance_type): Rename to objc_instance_type.
(protocol_type): Rename to objc_protocol_type.
(IS_ID): Update reference to id_type.
* objc/objc-act.c (get_object_reference): Rename to
get_protocol_reference; add documentation; update references to
(lookup_method_in_protocol_list): Rename class_meth to
is_class; add documentation.
(finish_message_expr): Rename is_class to class_tree.
(synth_module_prologue, objc_is_object_ptr, objc_build_exc_ptr,
next_sjlj_build_try_catch_finally, objc_begin_catch_clause,
build_next_objc_exception_stuff, get_arg_type_list,
build_objc_method_call): Update references to id_type.
(synth_module_prologue, build_objc_symtab_template,
build_selector_reference_decl, build_selector,
build_selector_translation_table, build_typed_selector_reference,
get_arg_type_list, synth_self_and_ucmd_args, get_arg_type_list,
synth_self_and_ucmd_args): Update references to selector_type.
(build_private_template, build_ivar_reference): Update references
to instance_type.
(synth_module_prologue, build_protocol_reference,
build_protocol_expr, start_protocol): Update references to
(synth_module_prologue, get_arg_type_list, build_objc_method_call):
Update references to super_type.
* (typespec_nonreserved_nonattr): Update
references to get_object_reference.
* objc/objc-tree.def: Add C mode identifier sequence.
2004-06-20 Zdenek Dvorak <>
* loop-invariant.c: New file.
* (loop-invariant.o): New.
* cfgloop.h (global_cost_for_size, init_set_costs,
move_loop_invariants): Declare.
* cfgloopanal.c (seq_cost, init_set_costs, global_cost_for_size): New
(avail_regs, res_regs, small_cost, pres_cost, spill_cost): New
* common.opt (floop-optimize2, fmove-loop-invariants): New options.
* loop-init.c (loop_optimizer_init): Call init_set_costs.
* passes.c (rest_of_handle_loop2): Call move_loop_invariants.
(rest_of_compilation): Check flag_loop_optimize2.
* toplev.c (process_options): Handle flag_loop_optimize2.
* doc/invoke.texi (-floop-optimize2, -fmove-loop-invariants): Document.
* doc/passes.texi (loop-invariant.c): Document.
2004-06-20 Zdenek Dvorak <>
* tree-ssa-pre.c (compute_antic): Keep BB_VISITED flag zeroed.
2004-06-20 Richard Henderson <>
* stmt.c (warn_if_unused_value): Add locus argument.
* tree.h (warn_if_unused_value): Update decl.
* c-typeck.c (internal_build_compound_expr): Update call.
* c-gimplify.c (gimplify_expr_stmt): Likewise.
2004-06-20 Andrew Pinski <>
PR middle-end/16089
* builtins.c (entry_of_function): Move to ...
* cfgrtl.c (entry_of_function): Here and make non-static.
* integrate.c (emit_initial_value_sets): Use entry_of_function.
* rtl.h (entry_of_function): Prototype.
2004-06-20 Roger Sayle <>
* config/i386/i386.c (pentium4_cost): Increase "lea" cost from 1 to 3.
(ix86_rtx_costs) <ASHIFT, PLUS>: Consider ix86_cost->lea even when
2004-06-20 Richard Henderson <>
* c-common.h (add_decl_stmt): Move to cp-tree.h.
* c-decl.c (finish_decl): Don't use add_decl_stmt.
* Likewise.
* c-gimplify.c (gimplify_expr_stmt): Don't build CLEANUP_POINT_EXPR.
(gimplify_c_loop, gimplify_return_stmt, gimplify_decl_stmt): Likewise.
* c-semantics.c (add_decl_stmt): Move to cp/semantics.c.
2004-06-20 Richard Henderson <>
* c-common.def (IF_STMT, CLEANUP_STMT): Move to cp-tree.def.
CLEANUP_EXPR, CLEANUP_DECL): Move to cp-tree.h.
(c_common_stmt_codes): Remove IF_STMT, CLEANUP_STMT.
* c-dump.c (c_dump_tree): Move IF_STMT, CLEANUP_STMT to cp_dump_tree.
* c-pretty-print.c (pp_c_statement): Similarly.
* c-gimplify.c (gimplify_cleanup_stmt, gimplify_cleanup_stmts,
gimplify_if_stmt): Move to cp-gimplify.c.
(c_genericize, c_gimplify_expr): Don't call them.
* c-semantics.c (push_cleanup): Move to cp/semantics.c.
* c-typeck.c (push_cleanup): New.
(c_begin_if_stmt, c_finish_if_cond, c_finish_then, c_finish_else,
c_finish_if_stmt): Use COND_EXPR.
* tree.h (CLEANUP_EH_ONLY): Update documentation.
2004-06-20 Zack Weinberg <>
* c-common.h (has_c_linkage): New interface.
* c-cppbuiltin.c: Include target.h.
(c_cpp_builtins): Define __PRAGMA_REDEFINE_EXTNAME and
__PRAGMA_EXTERN_PREFIX when appropriate.
* c-pragma.c: Include target.h.
Document clarified semantics of symbol-renaming #pragmas.
(handle_pragma_redefine_extname, handle_pragma_extern_prefix)
(maybe_apply_renaming_pragma): Rewrite according to clarified
semantics. Always recognize, but do not necessarily execute.
(init_pragma): Unconditionally register symbol-renaming pragmas.
* target.h (struct gcc_target): Add handle_pragma_redefine_extname
and handle_pragma_extern_prefix flags.
* target-def.h: Add defaults for TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME
* (c-pragma.o, c-cppbuiltin.o): Update dependencies.
(TRANSFER_FROM_TRAMPOLINE): Prototype mprotect.
* config/alpha/osf.h: Define TARGET_HANDLE_PRAGMA_EXTERN_PREFIX,
* doc/extend.texi (Solaris Pragmas, Tru64 Pragmas): Combine
into one section "Symbol-Renaming Pragmas"; clarify; document
adjusted semantics.
* builtins.c (expand_builtin): Do not issue error for a builtin
with no special case code and no DECL_ASSEMBLER_NAME; just do the
library call.
* c-decl.c (builtin_function): Don't call make_decl_rtl.
* c-objc-common.c (has_c_linkage): Stub implementation.
* cgraphunit.c (cgraph_expand_function)
(cgraph_remove_unreachable_nodes): Don't clear DECL_ARGUMENTS.
2004-06-19 Roger Sayle <>
* builtins.c (fold_builtin_unordered_cmp): Take an EXP argument
instead of both an ARGLIST and a result TYPE. Handle these C99
comparison functions as "polymorphic" builtins. Also handle
lowering of BUILT_IN_ISUNORDERED to an UNORDERED_EXPR tree node.
(fold_builtin_1): Update calls to fold_builtin_unordered_cmp.
Move handling of BUILT_IN_ISUNORDERED from here to there.
2004-06-19 Richard Henderson <>
* c-common.c, c-common.h (lang_gimplify_stmt): Remove.
* c-gimplify.c: Remove unnecessary prototypes.
(c_gimplify_stmt): Merge into ...
(c_gimplify_expr): ... here. Don't play with prep_stmt.
* c-semantics.c (prep_stmt): Remove.
* gimplify.c (annotate_one_with_locus): Break out from ...
(annotate_all_with_locus): ... here.
(gimplify_expr): Add locus to expressions even if pre/post queues
are not present.
2004-06-19 Richard Henderson <>
PR target/15941
* function.c (assign_parms): If not padding upward or intentionally
forcing upward padding, take offset_rtx into account when determining
the alignment for stack_parm.
2004-06-19 Richard Henderson <>
PR target/15550
* ifcvt.c (noce_try_move): Recognize all generated instructions.
2004-06-19 Jan Hubicka <>
* function.c (free_after_compilation): Do not free computed_goto_common*.
* function.h (struct function): Kill computed_goto_common*.
* stmt.c (expand_computed_goto): Do not commonize the computed gotos.
* tree-cfg.c (disband_implicit_edges): Do not forward across the
commonized computed goto.
2004-06-19 John David Anglin <>
* doc/invoke.texi: Remove obsolete comment regarding PA 2.0 support
in binutils.
2004-06-19 Andrew Pinski <>
PR c++/15721
* toplev.c (wrapup_global_declarations): Do not check
cgraph_varpool_node's needed field.
2004-06-19 Jan Hubicka <>
Steven Bosscher <>
CFG transparent RTL expansion:
* (cfgexpand.o): New object file.
(builtins.o): Add dependency on basic-block.h
* builtins.c: Include basic-block.h
(entry_of_function): New function.
(expand_builtin_apply_args, expand_builtin_saveargs): Use it.
* cfgexpand.c: New file.
* expr.c (execute_expand, pass_expand): Kill.
* pass.c (rest_of_compilation): Do not build CFG unless called from
coverage code.
* tree-cfg.c (delete_tree_cfg): Rename to..
(delete_tree_cfg_annotations): ... this one; Do not remove the CFG itself.
* tree-flow.h (delete_tree_cfg_annotations): Declare.
(dleete_tree_cfg): Kill.
* tree-optimize.c (execute_rebuild_bind, pass_rebuild_bind): Kill.
(execute_del_cfg): Rename to...
(execute_free_datastructures): This one...
(pass_del_cfg): Rename to...
(pass_free_datastructures): ... this one; Do not kill PROP_cfg.
(init_tree_optimization_passes): Make cfg build and profiling to happen
2004-06-19 Steven Bosscher <>
* tree-mudflap.c (mf_decl_cache_locals): Skip labels before
inserting the cache variables.
* tree-mudflap.c: Include headers to make basic_block available.
Move functions around such that related functions are near each
other. Add prototypes for all static functions. Add comments
briefly explaining what IR the mudflap1 and mudflap2 work on and
what they do.
(mudflap_function_decls): Rename to execute_mudflap_function_decls.
(mudflap_function_ops): Rename to execute_mudflap_function_ops.
(pass_mudflap_1, pass_mudflap_2): Update.
(mf_decl_cache_locals): Make it work on the CFG instead of the saved
function tree.
(mf_build_check_statement_for): Make it work on the CFG.
(mf_xform_derefs_1): Likewise. Cleanup code style.
(mf_xform_derefs): Likewise.
2004-06-19 Jan Hubicka <>
* tree-cfg.c (label_to_block): Invent the label destination for
undefined labels.
(cleanup_dead_labels): Update table in the case label_to_block added
new label.
2004-06-18 Richard Henderson <>
PR c++/16036
* gimple-low.c (lower_function_body): Generate return statement for
fall off the end of the function here ...
* tree-cfg.c (make_edges): ... instead of here.
* gimplify.c (gimplify_return_expr): Mark return temp TREE_NO_WARNING.
2004-06-18 Zdenek Dvorak <>
* tree-ssa.c (raise_value): Removed.
(get_eq_name, check_phi_redundancy): New functions.
(kill_redundant_phi_nodes): Use standard ssa minimalization algorithm.
2004-06-18 Roger Sayle <>
constant folding for unordered comparison tree nodes. If both
operands are real constants, call fold_relational_const. If either
operand is a NaN, evaluate the other for side-effects and return a
constant. Optimize (double)float1 CMP (double)float2 into the
equivalent float1 CMP float2.
(nondestructive_fold_binary_to_constant) <UNORDERED_EXPR,
LTGT_EXPR>: Call fold_relational_const for constant operands.
(fold_relational_const): Add support for unordered comparison tree
nodes. Don't constant fold "ordered" floating point comparisons
against NaN if when flag_trapping_math is set.
2004-06-19 Jakub Jelinek <>
* fold-const.c (build_range_check): If !in_p and recursive call
fails, exit immediately. If high - low overflows and etype is
a signed type, retry with unsigned etype.
(merge_ranges): If !in0_p and !in1_p, handle even range2 adjacent
2004-06-18 Richard Henderson <>
* c-gimplify.c (gimplify_condition): Remove.
(gimplify_c_loop, gimplify_if_stmt, gimplify_switch_stmt): Don't
call it.
2004-06-18 Richard Henderson <>
* tree-eh.c (decide_copy_try_finally): Fix scaling of copy and
switch estimates.
2004-06-18 Andrew Pinski <>
* config/i386/darwin.h (HOT_TEXT_SECTION_NAME): Define.
2004-06-18 Steven Bosscher <>
* config/xtensa/xtensa.c
* Replace the old pipeline description with a DFA model.
2004-06-18 Steven Bosscher <>
Ulrich Weigand <>
* config/s390/ Remove the generic pipeline description.
* config/s390/ Make all insn reservations apply to
the z900, g5 and g6.
* config/s390/s390.c (s390_use_dfa_pipeline_interface): Remove.
Define to hook_int_void_1.
(s390_adjust_cost): Cleanup. Don't check address dependency here.
(s390_first_cycle_multipass_dfa_lookahead): Always return 4.
2004-06-18 Daniel Berlin <>
Diego Novillo <>
* tree-dfa.c (create_var_ann): tree_ann -> tree_ann_t.
(create_stmt_ann): Ditto.
(create_tree_ann): New function.
(create_cst_ann): Remove.
(create_expr_ann): Ditto.
* tree-flow-inline.h (cst_ann): Remove.
(get_cst_ann): Ditto.
(get_expr_ann): Ditto.
(expr_ann): Ditto.
(get_tree_ann): New function.
(tree_ann): Ditto.
(ann_type): tree_ann -> tree_ann_t.
* tree-flow.h (tree_ann_type): CST_ANN, EXPR_ANN removed.
(struct cst_ann_d): Removed.
(struct expr_ann_d): Ditto.
(union tree_ann_d): Removed cst and expr.
(tree_ann): Renamed to tree_ann_t.
* tree-ssa-ccp.c (set_rhs): tree_ann -> tree_ann_t.
* tree-ssa-pre.c (get_value_handle): Rewrite for single common
(set_value_handle): Ditto.
(phi_translate): Ditto.
* tree-tailcall.c (adjust_return_value): tree_ann -> tree_ann_t.
2004-06-18 Kaz Kojima <>
* config/sh/t-linux64: New file.
* config.gcc: Add it to tmake_file for sh64*-*-linux*.
2004-06-18 Paolo Bonzini <>
* emit-rtl.c (unshare_all_rtl_1): New name of unshare_all_rtl.
(unshare_all_rtl_again): Call unshare_all_rtl_1.
(unshare_all_rtl): New.
* function.c (instantiate_virtual_regs): Remove parameters.
* function.h (instantiate_virtual_regs): Add prototype.
* rtl.h (unshare_all_rtl): Add prototype.
* tree.h (instantiate_virtual_regs, unshare_all_rtl): Remove
* passes.c: Remove assertions on the parameters to
rest_of_handle_* functions. Remove the parameters to
the functions, replacing decl with current_function_decl
and insns with get_insns ().
2004-06-17 Roger Sayle <>
* fold-const.c (constant_boolean_node): Handle boolean_type_node
directly, return either boolean_true_node or boolean_false_node.
2004-06-18 Kelley Cook <>
* Delete. Break out generated code to next four files.
* opt-gather.awk: New file.
* optc-gen.awk: New file.
* opth-gen.awk: New file.
* opt-functions.awk: New common file.
* Update for above.
* Update comment.
* configure: Regenerate.
2004-06-17 Richard Henderson <>
* c-common.c (flag_objc_sjlj_exceptions): New.
* c-common.h (flag_objc_sjlj_exceptions): Declare.
* c-opts.c (c_common_handle_option): Set it.
(c_common_post_options): Handle interation of different
objective-c exception and runtime switches.
* c-decl.c (c_eh_initialized_p): New.
(finish_decl): Use it instead of local eh_initialized_p.
* (nested_function, notype_nested_function): Record
the result of compstmt.
(compstmt_or_error): Likewise.
(compstmt): Don't add_stmt the result.
(stmt): Don't return anything. Rewrite objc try and sync rules.
(objc_try_stmt, objc_catch_list): Remove.
(objc_catch_block, objc_finally_block): Remove.
(objc_catch_prefix, objc_catch_clause, objc_opt_catch_list): New.
(objc_try_catch_clause, objc_finally_clause): New.
(objc_try_catch_stmt): Rewrite.
* c-tree.h (c_eh_initialized_p): Declare.
* c-opt (fobjc-sjlj-exceptions): New.
* except.c (output_function_exception_table): Don't call cgraph
on non-decls.
catch_count_stack, exc_binding_stack, if_nesting_count,
blk_nesting_count, objc_enter_block, objc_exit_block,
objc_declare_variable, val_stack_push, val_stack_pop,
objc_build_try_enter_fragment, objc_build_extract_expr,
objc_build_try_exit_fragment, objc_build_extract_fragment,
objc_build_try_prologue, objc_build_try_epilogue,
objc_build_catch_stmt, objc_build_catch_epilogue,
objc_build_finally_prologue, objc_build_finally_epilogue,
objc_build_try_catch_finally_stmt, objc_build_synchronized_prologue,
objc_build_synchronized_epilogue): Remove.
(objc_create_temporary_var, struct objc_try_context, cur_try_context,
objc_eh_runtime_type, objc_init_exceptions, objc_build_exc_ptr,
next_sjlj_build_try_exit, next_sjlj_build_enter_and_setjmp,
next_sjlj_build_exc_extract, next_sjlj_build_catch_list,
next_sjlj_build_try_catch_finally, objc_begin_try_stmt,
objc_begin_catch_clause, objc_finish_catch_clause,
objc_build_finally_clause, objc_finish_try_stmt,
objc_build_synchronized): New.
(objc_is_object_id, objc_is_class_id): New.
(objc_comptypes): Use them.
(build_next_objc_exception_stuff): Break NeXT sjlj out from
(synth_module_prologue): Update to match.
(objc_build_throw_stmt): Use cur_try_context to decide if
we're in a @catch.
* objc/objc-act.h: Update prototypes.
(OCTI_EXCEPTION_BLK_STACK, objc_exception_block_stack): Remove.
2004-06-17 Andrew Pinski <>
* c-typeck.c (tagged_types_tu_compatible_p <case UNION_TYPE>):
2004-06-17 Jason Merrill <>
PR c++/16015
* gimplify.c (gimplify_target_expr): Handle void initializer.
* expr.c (expand_expr_real_1) [TARGET_EXPR]: Likewise.
* doc/c-tree.texi (Expression trees): Update TARGET_EXPR
2004-06-17 Roger Sayle <>
* fold-const.c (fold_relational_const): Use constant_boolean_node.
2004-06-17 Jan Hubicka <>
PR target/15433
* (SSE SF cmov 0 splitter): The conditional is VOIDmode; fix
operand numbering in the output template.
(SSE DF cmov 0 splitter): The conditional is VOIDmode.
2004-06-17 Jan Hubicka <>
* except.c (can_throw_internal): Recognize RESX expresisons.
2004-06-17 Jan Hubicka <>
* cfgbuild.c (make_edges): Do not use label_value_list.
(find_basic_blocks_1): Do not collect label_value_list.
(find_sub_basic_blocks): Update call of make_edges.
2004-06-17 Andrew MacLeod <>
* tree-cfg.c (tree_make_forwarder_block): Use SET_PHI_RESULT.
* tree-flow-inline.h (get_use_op_ptr): Return a use_operand_p.
(get_use_from_ptr, get_def_from_ptr): New. Return operand pointers.
(get_def_op_ptr): Return a def_operand_p instead of a 'tree *'.
(get_v_may_def_result_ptr): Return a def_operand_p.
(get_v_may_def_op_ptr, get_vuse_op_ptr): Return a use_operand_p.
(get_v_must_def_op_ptr): Return a def_operand_p.
(get_phi_result_ptr): New. Return a pointer to the result of a PHI.
(get_phi_arg_def_ptr): New. Return a pointer to an argument of a PHI.
(phi_element_for_edge): Remove.
* tree-flow.h (propagate_value, replace_exp): Change prototype.
(propagate_tree_value): Add new prototype.
(phi_element_for_edge): Remove prototype.
* tree-into-ssa.c (mark_def_sites): Use new operand types.
(prepare_operand_for_rename): Split into two functions.
(prepare_use_operand_for_rename): Prepare use operands.
(prepare_def_operand_for_rename): Prepare def operands.
(rewrite_stmt): Use new operand types.
(rewrite_operand): Use new operand types, change parameter type.
* tree-outof-ssa.c (replace_variable): Split into two functions.
(replace_use_variable): Rewrite uses.
(replace_def_variable): Rewrite defs.
(rewrite_trees, rewrite_vars_out_of_ssa): Use new operand types.
* tree-phinodes.c (make_phi_node, resize_phi_node): Use new types.
(add_phi_arg, remove_phi_arg_num): Use new operand types.
* tree-ssa-ccp.c (substitute_and_fold): Use new operand types.
(ccp_fold, replace_uses_in): Use new operand types.
* tree-ssa-copy.c (replace_ssa_names): Rename to replace_ssa_names_ann
and no longer set the value, change parameter type.
(replace_exp_1): Use new operand types.
(propagate_value): Change parameter type, use new operand types.
(propagate_tree_value): Propagate_value without SSA operands.
(replace_exp, cprop_operand, cprop_into_stmt): Use new operand types.
(cprop_into_successor_phis): Use new operand types.
* tree-ssa-dom.c (thread_across_edge): Use new operand types.
(eliminate_redundant_computations): Use new operand types.
* tree-ssa-dse.c (fix_phi_uses): Use new operand_types.
(fix_stmt_v_may_defs): Use new operand_types.
* tree-ssa-live.c (create_ssa_var_map): Use new operand_types.
(build_tree_conflict_graph): Use new operand_types.
* tree-ssa-loop.c (duplicate_blocks): Use PHI_ARG_DEF_FROM_EDGE.
* tree-ssa-operands.c (struct freelist_d): Remove.
(check_optype_freelist, add_optype_freelist): Remove.
(allocate_def_optype, allocate_use_optype, allocate_v_may_def_optype,
allocate_vuse_optype, allocate_v_must_def_optype): Call ggc_alloc.
(free_uses, free_defs, free_vuses, free_v_may_defs, free_v_must_defs):
Call ggc_free instead of add_optype_freelist.
(init_ssa_operands, fini_ssa_operands): Remove free list code.
(finalize_ssa_defs, finalize_ssa_uses): Set new use/def operands.
* tree-ssa-operands.h (struct def_optype_d): Change underlying type.
(struct use_optype_d): Change underlying type.
(def_operand_p, use_operand_p): New types for pointers to operands.
V_MUST_DEF_OP): Use new pointer type instead of dereferencing directly.
(USE_FROM_PTR, DEF_FROM_PTR): New macros to "dereference" operand
pointer types.
(SET_USE, SET_DEF): New macros to set operands from their pointer.
SET_VUSE_OP, SET_V_MUST_DEF_OP): New SET routines for operands.
PHI result as an operand.
PHI_ARG_DEF_PTR_FROM_EDGE): Macros to manage the PHI arguments.
* tree-ssa-pre.c (eliminate): Call propagate_tree_value.
* tree-tailcall.c (independent_of_stmt_p, propagate_through_phis): Use
* tree.h (PHI_RESULT): Renamed to PHI_RESULT_TREE.
2004-06-17 Zdenek Dvorak <>
PR tree-optimization/15991
* tree-cfg.c (tree_block_label): Export.
* tree-flow-inline.h (bsi_after_labels): New function.
* tree-flow.h (bsi_after_labels, tree_block_label): Declare.
* tree-ssa.c (propagate_into_addr): New function.
(replace_immediate_uses): Handle propagation of pointer constants.
(raise_value): Do not restrict propagation of pointer constants.
* tree-ssanames.c (duplicate_ssa_name): New function.
* tree.h (duplicate_ssa_name): Declare.
2004-06-17 David Ayers <>
* Unify Objective-C token names.
2004-06-17 Zack Weinberg <>
Bug 14610
* (min-insn-modes.o): Correct dependencies.
* real.c (encode_ieee_extended, decode_ieee_extended): Always
produce/consume 12-byte little-endian Intel format.
(encode_ieee_extended_128, decode_ieee_extended_128): Delete.
(encode_ieee_extended_motorola, decode_ieee_extended_motorola)
(encode_ieee_extended_intel_96, decode_ieee_extended_intel_96)
(encode_ieee_extended_intel_128, decode_ieee_extended_intel_128):
New functions which convert between 12-byte little-endian Intel
format and the desired format.
(ieee_extended_motorola_format, ieee_extended_intel_96_round_53_format)
(ieee_extended_intel_96_format, ieee_extended_intel_128_format):
2004-06-17 Zack Weinberg <>
* expmed.c (expand_mult_const): In sanity check, compare only
the bits of val and val_so_far that are significant in the
result mode.
2004-06-17 Daniel Berlin <>
* tree-ssa-pre.c: Update comments.
(val_expr_pair_eq): Factor code from here.
(expr_pred_trans_eq): and here.
(expressions_equal_p): To here.
(print_value_set): Print value for expression.
(phi_trans_lookup): Rename some variables.
(lookup): Ditto.
(value_exists_in_set_bitmap): Ditto.
(value_remove_from_set_bitmap): Ditto.
(value_insert_into_set_bitmap): Ditto.
2004-06-17 Ulrich Weigand <>
* config/s390/s390-modes.def (CCL3mode): New machine mode.
* config/s390/s390.c (s390_match_ccmode_set): Support CCL3mode.
(s390_alc_comparison, s390_slb_comparison): Likewise.
(s390_branch_condition_mask): Likewise.
* config/s390/ ("*subdi3_cc2", "*subdi3_cconly2"): New.
("*subsi3_cc2", "*subsi3_cconly2"): New.
* config/s390/s390.h (PREDICATE_CODE): Accept SIGN_EXTEND and
ZERO_EXTEND for s390_alc_comparison and s390_slb_comparison.
* config/s390/s390.c (s390_alc_comparison, s390_slb_comparison):
* config/s390/s390-protos.h (s390_expand_addcc): New prototype.
* config/s390/s390.c (s390_expand_addcc): New function.
* config/s390/ ("adddicc", "addsicc"): New expanders.
("*sconddi", "*scondsi", "*sconddi_neg", "*scondsi_neg"): New insns.
("sltu", "sgtu", "sleu", "sgeu"): New expanders.
2004-06-17 Ben Elliston <>
* tree-alias-common.c: Add whitespace.
* tree-inline.c: Correct comment about this file's purpose.
* tree-optimize.c: Likewise.
* tree-tailcall.c: Likewise.
* tree-alias-ander.h: Add standard top-of-file comment.
* tree-alias-common.h: Likewise.
* tree-alias-type.h: Likewise.
2004-06-16 Daniel Berlin <>
* tree-ssa-pre.c (compute_avail): Value number uses as well.
Strip useless type conversions.
Casts have to be treated slightly different than normal unaries.
2004-06-16 Richard Henderson <>
* c-common.def (COMPOUND_STMT): Remove.
* c-common.c (finish_fname_decls): Don't look through it.
* c-typeck.c (c_tree_expr_nonnegative_p): Likewise.
* c-common.h (COMPOUND_BODY): Remove.
(c_common_stmt_codes): Remove COMPOUND_STMT.
* c-dump.c (c_dump_tree): Likewise.
* c-gimplify.c (c_gimplify_stmt): Likewise.
* c-pretty-print.c (pp_c_statement): Likewise.
* tree.h (DECL_SAVED_TREE): Update commentary.
* doc/c-tree.texi (ASM_EXPR): Rename from ASM_STMT.
(GOTO_EXPR): Rename from GOTO_STMT.
(GOTO_FAKE_P): Remove.
(STMT_EXPR): Likewise.
(SCOPE_STMT): Remove.
* objc/objc-act.c (objc_build_try_catch_finally_stmt): Don't look
2004-06-16 Richard Henderson <>
* c-common.h (c_begin_if_stmt, c_begin_while_stmt,
c_finish_while_stmt_cond): Remove decls.
* (if_prefix): Don't save c_begin_if_stmt result.
* c-typeck.c (c_begin_if_stmt): Return void.
(c_begin_else): Tidy. Save stmt_count.
* c-tree.h (c_begin_if_stmt): Update decl.
* objc/objc-act.c (objc_build_try_enter_fragment,
objc_build_extract_fragment, objc_build_try_epilogue,
objc_build_catch_stmt, objc_build_catch_epilogue,
objc_build_finally_prologue, objc_build_finally_epilogue): Update
for if builder function changes.
2004-06-16 Ulrich Weigand <>
* config/s390/s390.c (struct machine_function): New member
(s390_frame_info): Add BASE_USED and RETURN_ADDR_USED parameters.
Do not modify machine->save_return_addr_p or regs_ever_live.
Fill in machine->last_restore_gpr.
(s390_optimize_prolog): Use s390_frame_info to compute registers
to save/restore, remove duplicated code.
(s390_arg_frame_offset): Use s390_frame_info to compute frame
size, remove duplicated code.
(s390_emit_prologue): Adapt s390_frame_info call. Update
machine->save_return_addr_p and regs_ever_live.
(s390_emit_epilogue): Use machine->last_restore_gpr instead of
2004-06-16 Richard Henderson <>
* (if_stmt_locus): Remove.
(if_prefix): Increment stmt_count; pass it to c_finish_if_cond.
(select_or_iter_stmt): Move empty if warnings to c-typeck.c.
* c-typeck.c (if_elt): Sort by expected size. Rename locus to
empty_locus. Add stmt_count, saw_else.
(c_begin_if_stmt): Push if_stack here.
(c_finish_if_cond): Rename from c_expand_end_cond. Record stmt_count.
(c_finish_then, c_finish_else): Record empty_locus.
(c_begin_else): Rename from c_expand_start_else. Record stmt_count.
(c_finish_if_stmt): Rename from c_expand_end_cond. Warn for empty
if or else body.
* c-tree.h: Update prototypes.
2004-06-16 Steven Bosscher <>
* tree.h (PHI_CHAIN): New.
* (tree-cfg.c, tree-dfa.c, tree-flow-inline.h, tree-into-ssa.c,
tree-outof-ssa.c, tree-phinodes.c, tree-pretty-print.c,
tree-ssa-alias.c, tree-ssa-ccp.c, tree-ssa-dom.c, tree-ssa-dse.c,
tree-ssa-live.c, tree-ssa-loop.c, tree-ssa-phiopt.c, tree-ssa-pre.c,
tree-ssa.c, tree-tailcall.c): Use PHI_CHAIN instead of TREE_CHAIN
when traversing a list of PHI_NODEs.
2004-06-16 Bernardo Innocenti <>
PR target/13292
* config/m68k/m68k.h (TARGET_SWITCHES): Don't remove MASK_68040_ONLY
on -msoft-float.
(TARGET_FLT_EVAL_METHOD): Don't advertise extended precision for
68040 and soft-float.
* config/m68k/ (truncdfsf2): Explicitly require TARGET_68881
in the TARGET_68040_ONLY case.
2004-06-16 Peter Barada <>
* config/m68k/ (movsi_cfv4): New pattern to allow mov3q.
(movsi_cf): Make named, don't match TARGET_CFV4.
(pushexthisi_const): Use mov3q if possible.
(extendhisi2, cvf4_extendhisi2): Split extendhisi2 pattern
to special case mvz.w for ColdFire V4.
(extendqisi2, cvf4_extendqisi2): Split extendhisi2 pattern
to special case mvz.b for ColdFire V4.
(udivmodhi4, divmodhi4): Use mvz to zero extend arg for
(iorsi3, xorsi3, andsi3): Use bitfield instructions if possible.
* config/m68k/m68k.c(valid_mov3q_const): New function.
(const_method): SWAP is valid for ColdFire.
(MULL_COST, MULW_COST): Fix costs for ColdFire V3/V4.
* config/m68k/m68k-protos.h (valid_mov3q_const): Prototype here.
2004-06-16 Richard Henderson <>
* c-common.def (CASE_LABEL): Remove.
* c-common.c (c_add_case_label): Use CASE_LABEL, not CASE_LABEL_DECL.
(match_case_to_enum_1): Likewise.
* c-common.h (c_common_stmt_codes): Remove CASE_LABEL.
* c-dump.c (c_dump_tree): Likewise.
* c-gimplify.c (c_gimplify_stmt): Likewise.
* c-pretty-print.c (pp_c_statement): Likewise.
* c-semantics.c (build_case_label): Use CASE_LABEL_EXPR.
* tree.h (CASE_LOW): Update commentary.
2004-06-16 Richard Henderson <>
* c-common.def (ASM_STMT): Remove.
* c-common.h (c_common_stmt_codes): Remove ASM_STMT.
* c-dump.c (c_dump_tree): Likewise.
* c-gimplify.c (c_gimplify_stmt): Likewise.
* c-pretty-print.c (pp_c_statement): Likewise.
* c-typeck.c (build_asm_expr): Use ASM_EXPR.
* tree.h: Fix commentary.
2004-06-16 Richard Henderson <>
* c-common.def (GOTO_STMT, LABEL_STMT): Remove.
* c-common.c (c_add_case_label): Use LABEL_EXPR.
* c-common.h (GOTO_FAKE_P, LABEL_STMT_LABEL): Remove.
(c_common_stmt_codes): Remove GOTO_STMT, LABEL_STMT.
* c-dump.c (c_dump_tree): Likewise.
* c-gimplify.c (c_gimplify_stmt): Likewise.
* c-pretty-print.c (pp_c_statement): Likewise.
* (stmt): Use GOTO_EXPR.
(label): Use LABEL_EXPR.
* c-semantics.c (build_stmt): Set TREE_TYPE to void.
* tree-inline.c (copy_body_r): Don't build empty BLOCKs.
2004-06-16 J"orn Rennecke <>
* cfgcleanup.c (try_simplify_condjump): Update test to make
sure we have a conditional branch around am unconditional branch.
2004-06-16 Daniel Berlin <>
* tree-cfg.c (pass_split_crit_edge): Give it a name and a dump file.
2004-06-16 Dale Johannesen <>
* loop.c (loop_givs_reduce): Avoid miscompilation of
loops entered at bottom.
2004-06-16 J"orn Rennecke <>
* cfglayout.c (fixup_reorder_chain): Handle case where the
destination of E_FALL is EXIT_BLOCK_PTR.
2004-06-16 Vladimir Makarov <>
PR target/15653
* config/ia64/ia64.c (ia64_dfa_new_cycle): Do not insert nops
after shifts before asm.
2004-06-16 Zdenek Dvorak <>
PR tree-optimization/15993
* tree-ssa-dom.c (thread_across_edge): Do not thread edge if its
destination is unchanged.
2004-06-16 Andreas Jaeger <>
* doc/install.texi (Configuration): Update description for
2004-06-16 Paolo Bonzini <>
* doc/install.texi: boehm-gc now uses automake 1.8.5.
2004-06-16 Paolo Bonzini <>
* toplev.h (rest_of_compilation): Adjust prototype.
2004-06-16 Paolo Bonzini <>
* coverage.c: Remove argument to rest_of_compilation.
* expr.c (execute_expand, set_save_expr_context, pass_expand): New.
* passes.c (rest_of_compilation): Remove argument.
(pass_rest_of_compilation): New.
(rest_of_handle_final, rest_of_handle_delay_slots,
rest_of_handle_stack_regs, rest_of_handle_variable_tracking
rest_of_handle_machine_reorg, rest_of_handle_regrename
rest_of_handle_sched, rest_of_handle_sched2, rest_of_handle_gcse2
rest_of_handle_regmove, rest_of_handle_tracer
rest_of_handle_if_conversion, rest_of_handle_if_after_combine
rest_of_handle_web, rest_of_handle_branch_prob
rest_of_handle_value_profile_transformations, rest_of_handle_cfg
rest_of_handle_addressof, rest_of_handle_jump_bypass
rest_of_handle_life, rest_of_handle_cse, rest_of_handle_cse2):
Check that the two arguments are actually superfluous.
* tree-optimize.c (register_dump_files): Add properties argument.
Track validity of passes. Only initialize dump files for
tree-based passes. Store the full set of provided passes in
the pass.
(init_tree_optimization_passes): Register pass_expand and
(execute_one_pass): Do not track the presence of required properties
here. Set in_gimple_form. Do not update current_properties.
(current_properties): Remove.
(set_save_expr_context): Remove.
(tree_rest_of_compilation): Do not set in_gimple_form. Do not
expand to RTL here, and do not call rest_of_compilation. Push
GGC context even before gimplification.
* tree-pass.h (PROP_rtl, PROP_trees): New flags.
(pass_expand, pass_rest_of_compilation): Declare.
2004-06-15 Jeff Law <>
* fold-const.c (swap_tree_comparison): No longer static.
(tree_swap_operands_p): Similarly. Return true if both operands
are SSA_NAMEs and the first operand has a higher version number than
the second operand.
* tree.h (swap_tree_comparison): Prototype.
(tree_swap_operands_p): Prototype.
* tree-ssa-operands.c (get_expr_operands): For commutative
operators and relational comparisons, canonicalize the
order of the operands.
2004-06-15 Richard Henderson <>
* c-common.c (lang_gimplify_stmt): Remove next_p argument.
(if_elt, if_stack, if_stack_space, c_expand_start_cond, c_finish_then,
c_expand_end_cond, c_expand_start_else, c_finish_else, c_begin_if_stmt,
c_begin_while_stmt, c_finish_while_stmt_cond): Move to c-typeck.c.
(finish_fname_decls, fname_decl): Use statement_lists.
(c_expand_expr_stmt): Don't set last_expr_type.
(c_type_hash): Fix indentation.
(c_safe_from_p): Don't follow TREE_CHAIN.
(c_tree_chain_matters_p): Remove.
* c-common.def (SCOPE_STMT): Remove.
(CLEANUP_STMT): Redefine to contain its own body.
* c-common.h (struct stmt_tree_s): Remove x_last_stmt,
x_last_expr_type, x_last_expr_filename, x_scope_stmt_stack.
Add x_cur_stmt_list.
(last_tree, last_expr_type, last_expr_filename, RECHAIN_STMTS): Remove.
(cur_stmt_list): New.
(CLEANUP_DECL): Move to operand 2.
(c_common_stmt_codes): Remove SCOPE_STMT.
* c-decl.c (c_scope_stmt_stack, current_scope_stmt_stack): Remove.
(c_push_function_context, c_pop_function_context): Don't save it.
(finish_decl): Set TREE_USED on the decl for a cleanup.
Use push_cleanup.
(store_parm_decls): Use statement lists.
(finish_function): Remove compstmt rule workaround. Use statement
lists. Call finish_fname_decls after finalizing the body.
(c_begin_compound_stmt): Move to c-typeck.c.
* c-dump.c (c_dump_tree): Remove SCOPE_STMT.
* c-gimplify.c (gimplify_cleanup_stmt, gimplify_cleanup_stmts): New.
(c_genericize): Invoke them.
(c_gimplify_stmt): Don't look through TREE_CHAIN. Kill SCOPE_STMT.
(c_build_bind_expr): Export.
(gimplify_block, gimplify_cleanup): Remove.
(gimplify_condition): Use gimplify_stmt.
(gimplify_for_stmt): Remove FOR_INIT_STMT chaining hack.
(gimplify_if_stmt): Remove recursion hack.
(c_gimplify_expr): Remove STMT_EXPR handling.
(stmt_expr_last_stmt, gimplify_stmt_expr): Remove.
(is_last_stmt_of_scope): Remove.
* c-mudflap.c (mflang_flush_calls): Use c_begin_compound_stmt,
* c-objc-common.c (build_cdtor): Likewise.
* (primary): Use c_finish_stmt_expr.
(push_scope, pop_scope): Remove.
(c99_block_start, compstmt_start): Use c_begin_compound_stmt.
(c99_block_end, compstmt): Use c_end_compound_stmt.
(c99_block_lineno_labeled_stmt): Likewise.
(compstmt_primary_start): Use c_begin_stmt_expr.
(simple_if, select_or_iter_stmt): Update calls to stmt builders.
(do_stmt_start): Fill in body directly.
(lineno_stmt): Avoid setting lineno on constants.
* c-pretty-print.c (pp_c_statement): Handle STATEMENT_LIST.
* c-semantics.c (begin_stmt_tree): Remove.
(push_stmt_list, re_push_stmt_list, pop_stmt_list): New.
(add_stmt): Use statement lists.
(add_scope_stmt, finish_stmt_tree): Remove.
(push_cleanup): New.
* c-tree.h: Move some decls from c-common.h.
* c-typeck.c (c_tree_expr_nonnegative_p): Simplify for statement lists.
(do_case, c_finish_case): Likewise.
(c_finish_then): Take body for then as argument.
(c_finish_else): Similarly.
(c_begin_for_stmt, c_finish_for_stmt_init, c_finish_for_stmt_cond,
c_finish_for_stmt_incr, c_finish_for_stmt): New.
(c_begin_stmt_expr, c_finish_stmt_expr): New.
(c_begin_compound_stmt): Do scope management.
(c_end_compound_stmt): New.
* fold-const.c (tree_expr_nonnegative_p): Fix BIND_EXPR.
* gimplify.c (voidify_wrapper_expr): Accept temporary argument.
Look through exception handling constructs.
(gimplify_bind_expr): Accept temporary argument.
(gimplify_target_expr): Special case BIND_EXPR bodies.
(gimplify_expr): Handle fallback == fb_none like a statement.
* langhooks.c (lhd_tree_inlining_tree_chain_matters_p): Remove.
* langhooks.h (tree_chain_matters_p): Remove.
* stub-objc.c (objc_clear_super_receiver): New.
* tree-gimple.h (voidify_wrapper_expr): Update decl.
(append_to_statement_list, append_to_statement_list_force): Move
to tree-iterator.h.
* tree-inline.c (expand_call_inline): Update call.
(clone_body): Use statement lists.
(walk_tree): Don't check tree_chain_matters_p.
(copy_tree_r): Likewise.
* tree-iterator.c (alloc_stmt_list): Clear lang bits.
(tsi_link_before, tsi_link_after): Set TREE_SIDE_EFFECTS properly.
* tree-iterator.h (append_to_statement_list,
append_to_statement_list_force): Moved from tree-gimple.h.
* tree-pretty-print.c (dump_generic_node): Clean up TARGET_EXPR dump.
* objc/objc-act.c (build_module_descriptor): Use c_begin_compound_stmt.
(objc_enter_block): Likewise.
(objc_exit_block): Use c_end_compound_stmt.
(objc_build_try_enter_fragment): Add #error and comment for
rewriting for OBJCPLUS.
(objc_build_extract_fragment, objc_build_try_epilogue,
objc_build_catch_stmt, objc_build_finally_prologue,
objc_build_finally_epilogue): Update for C statement builders.
2004-06-15 Zdenek Dvorak <>
* df.c (df_reg_clobber_gen): Removed.
(df_bb_rd_local_compute, df_insn_refs_record, df_rd_local_compute):
Make more effective for hard regs.
* ra-build.c (livethrough_conflicts_bb): Check contains_call.
2004-06-15 Alexandre Oliva <>
* c-pragma.h (c_lex_string_translate): Change type to int.
* Change all assignments of c_lex_string_translate
to true and false to 1 and 0.
* c-lex.c (c_lex_string_translate): Likewise.
(lex_string): Convert string without translation in the -1
2004-06-15 Mark G. Adams <>
* convert.h: Add include guards
2004-06-15 Daniel Berlin <>
* tree-flow-inline.h: Document all functions.
2004-06-15 Daniel Berlin <>
* tree-flow-inline.h (stmt_ann): Remove use of is_essa_node.
* tree-dfa.c (create_stmt_ann): Ditto.
* tree-pretty-print.c (dump_generic_node): Remove E* node handling.
* tree-inline.c (estimate_num_insns_1): Ditto.
* tree.c (tree_size): Ditto.
(make_node_stat): Ditto.
(tree_node_structure): Ditto.
(ephi_node_elt_check_failed): Remove.
(is_essa_node): Ditto.
* tree.def (EPHI_NODE): Ditto.
(EEXIT_NODE): Ditto.
(EUSE_NODE): Ditto.
(EKILL_NODE): Ditto.
* tree.h (EREF_NODE_CHECK): Remove.
(struct tree_eref_common): Ditto.
(struct tree_euse_node): Ditto.
(struct ephi_arg_d): Ditto.
(struct tree_ephi_node): Ditto.
(ephi_node_elt_check_failed): Remove prototype.
(is_essa_node): Ditto.
(enum tree_node_structure_enum): Remove TS_E*_NODE.
(union tree_node): Remove E*_NODE uses.
2004-06-15 Jerry Quinn <>
* alias.c (record_set, record_base_value, canon_rtx, get_addr,
nonlocal_mentioned_p_1, init_alias_analysis): Use REG_P.
* bt-load.c (find_btr_reference, insn_sets_btr_p, note_btr_set):
* builtins.c (expand_builtin_setjmp, expand_builtin_apply,
expand_builtin_mathfn, expand_builtin_strlen, expand_builtin_memcmp,
expand_builtin_strcmp, expand_builtin_strncmp,
expand_builtin_frame_address): Likewise.
* caller-save.c (mark_set_regs, add_stored_regs, mark_referenced_regs,
insert_one_insn): Likewise.
* calls.c (prepare_call_address, precompute_register_parameters,
precompute_arguments, expand_call, emit_library_call_value_1): Likewise.
* cfganal.c (flow_active_insn_p): Likewise.
* combine.c (set_nonzero_bits_and_sign_copies, can_combine_p,
combinable_i3pat, try_combine, find_split_point, COMBINE_RTX_EQUAL_P,
subst, combine_simplify_rtx, simplify_if_then_else, simplify_set,
make_extraction, recog_for_combine, gen_lowpart_for_combine,
simplify_comparison, record_dead_and_set_regs_1,
record_dead_and_set_regs, record_promoted_value,
check_promoted_subreg, get_last_value_validate, get_last_value,
reg_dead_at_p_1, reg_bitfield_target_p, distribute_notes,
unmentioned_reg_p_1): Likewise.
* conflict.c (mark_reg): Likewise.
* cse.c (HASH, COST, COST_IN, approx_reg_cost_1, notreg_cost,
mention_regs, insert_regs, lookup, lookup_for_remove, insert,
merge_equiv_classes, flush_hash_table, invalidate,
remove_invalid_refs, remove_invalid_subreg_refs, rehash_using_reg,
invalidate_for_call, use_related_value, canon_hash, exp_equiv_p,
cse_rtx_varies_p, canon_reg, find_best_addr, fold_rtx, equiv_constant,
record_jump_cond, cse_insn, addr_affects_sp_p,
invalidate_from_clobbers, cse_process_notes, cse_around_loop,
cse_set_around_loop, count_reg_usage, set_live_p, cse_change_cc_mode,
cse_cc_succs, cse_condition_code_reg): Likewise.
* cselib.c (cselib_reg_set_mode, rtx_equal_for_cselib_p,
cselib_lookup, cselib_invalidate_regno, cselib_invalidate_rtx,
cselib_record_set, cselib_record_sets): Likewise.
* dbxout.c (dbxout_symbol_location, dbxout_parms, dbxout_reg_parms,
dbxout_block): Likewise.
* df.c (df_ref_record, df_def_record_1, df_uses_record): Likewise.
* dojump.c (do_jump): Likewise.
* dwarf2out.c (dwarf2out_frame_debug_expr, is_pseudo_reg,
is_based_loc, rtl_for_decl_location): Likewise.
* emit-rtl.c (set_reg_attrs_for_parm, set_decl_rtl,
set_decl_incoming_rtl, mark_user_reg): Likewise.
* explow.c (copy_all_regs, copy_all_regs, memory_address, force_reg,
copy_to_suggested_reg, allocate_dynamic_stack_space,
probe_stack_range, hard_function_value): Likewise.
* expmed.c (store_bit_field, store_fixed_bit_field,
store_split_bit_field, extract_bit_field, extract_fixed_bit_field,
extract_split_bit_field, expand_divmod, emit_store_flag_force):
* expr.c (convert_move, convert_modes,
block_move_libcall_safe_for_call_parm, emit_group_load, use_reg,
use_group_regs, emit_move_insn, emit_move_insn_1,
compress_float_constant, push_block, emit_single_push_insn,
emit_push_insn, get_subtarget, expand_assignment, store_expr,
store_constructor, store_field, force_operand, safe_from_p,
expand_expr_real_1, expand_increment, do_store_flag, do_tablejump):
* final.c (profile_function, final_scan_insn, alter_subreg,
get_mem_expr_from_op, output_asm_operand_names, output_operand,
only_leaf_regs_used, leaf_renumber_regs_insn): Likewise.
* flow.c (verify_wide_reg_1, mark_regs_live_at_end,
find_regno_partial, propagate_one_insn, init_propagate_block_info,
insn_dead_p, libcall_dead_p, mark_set_1, not_reg_cond,
attempt_auto_inc, find_auto_inc, mark_used_regs,
count_or_remove_death_notes_bb): Likewise.
* function.c (find_temp_slot_from_address, update_temp_slot_address,
preserve_temp_slots, put_var_into_stack, fixup_var_refs_insn,
fixup_var_refs_1, fixup_stack_1, optimize_bit_field, flush_addressof,
put_addressof_into_stack, purge_addressof_1, insns_for_mem_walk,
purge_single_hard_subreg_set, instantiate_decl,
instantiate_virtual_regs_1, aggregate_value_p, assign_parms,
promoted_input_arg, setjmp_vars_warning, setjmp_args_warning,
setjmp_protect, setjmp_protect_args, fix_lexical_addr,
expand_function_start, diddle_return_value, clobber_return_register,
expand_function_end, keep_stack_depressed, handle_epilogue_set,
update_epilogue_consts): Likewise.
* genemit.c (gen_exp, gen_insn): Likewise.
* genrecog.c (make_insn_sequence): Likewise.
* global.c (global_conflicts, expand_preferences, mark_reg_store,
mark_reg_conflicts, set_preference, reg_becomes_live,
build_insn_chain, mark_reg_change): Likewise.
* haifa_sched.c (CONST_BASED_ADDRESS_P, find_set_reg_weight):
* ifcvt.c (noce_try_abs, noce_get_condition, noce_process_if_block):
* integrate.c (copy_rtx_and_substitute, try_constants,
subst_constants, mark_stores, allocate_initial_values): Likewise.
* jump.c (reversed_comparison_code_parts, delete_prior_computation,
delete_computation, rtx_renumbered_equal_p, true_regnum,
reg_or_subregno): Likewise.
* lcm.c (reg_dies, reg_becomes_live): Likewise.
* local-alloc.c (validate_equiv_mem_from_store, validate_equiv_mem,
update_equiv_regs, no_equiv, block_alloc, combine_regs, reg_is_set,
wipe_dead_reg, no_conflict_p): Likewise.
* loop-iv.c (simple_reg_p, simple_set_p, kill_sets,
iv_get_reaching_def, iv_analyze_biv, altered_reg_used, mark_altered,
simple_rhs_p, simplify_using_assignment, implies_p): Likewise.
* loop.c (scan_loop, combine_movables, rtx_equal_for_loop_p,
move_movables, note_set_pseudo_multiple_uses, consec_sets_invariant_p,
find_single_use_in_loop, count_one_set, loop_bivs_init_find,
loop_givs_rescan, check_insn_for_bivs, check_insn_for_givs,
valid_initial_value_p, simplify_giv_expr, consec_sets_giv,
loop_regs_update, check_dbra_loop, maybe_eliminate_biv,
maybe_eliminate_biv_1, record_initial, update_reg_last_use,
canonicalize_condition, loop_regs_scan, load_mems, try_copy_prop,
try_swap_copy_prop): Likewise.
* optabs.c (expand_binop, expand_vector_binop, expand_vector_unop,
expand_abs, emit_no_conflict_block, emit_libcall_block, expand_float):
* postreload.c (reload_cse_simplify, reload_cse_simplify_set,
reload_cse_simplify_operands, reload_combine,
reload_combine_note_store, reload_combine_note_use,
reload_cse_move2add, move2add_note_store): Likewise.
* print-rtl.c (print_rtx): Likewise.
* ra-build.c (copy_insn_p, remember_move, init_one_web_common,
contains_pseudo, handle_asm_insn): Likewise.
* ra-debug.c (ra_print_rtx_object, dump_constraints,
dump_static_insn_cost): Likewise.
* ra-rewrite.c (slots_overlap_p, emit_colors,
remove_suspicious_death_notes): Likewise.
* recog.c (validate_replace_rtx_1, find_single_use_1, find_single_use,
register_operand, scratch_operand, nonmemory_operand,
constrain_operands): Likewise.
* reg-stack (check_asm_stack_operands, remove_regno_note,
emit_swap_insn, swap_rtx_condition, subst_stack_regs_pat,
subst_asm_stack_regs): Likewise.
* regclass.c (scan_one_insn, record_reg_classes, copy_cost,
record_address_regs, reg_scan_mark_refs): Likewise.
* regmove.c (discover_flags_reg, replacement_quality,
copy_src_to_dest, reg_is_remote_constant_p, regmove_optimize,
fixup_match_1): Likewise.
* regrename.c (note_sets, clear_dead_regs, build_def_use, kill_value,
kill_set_value, copyprop_hardreg_forward_1): Likewise.
* reload.c (MATCHES, push_secondary_reload, find_reusable_reload,
reload_inner_reg_of_subreg, can_reload_into, push_reload,
combine_reloads, find_dummy_reload, hard_reg_set_here_p,
operands_match_p, decompose, find_reloads, find_reloads_toplev,
find_reloads_address, subst_indexed_address, find_reloads_address_1,
find_reloads_subreg_address, find_replacement,
refers_to_regno_for_reload_p, reg_overlap_mentioned_for_reload_p,
refers_to_mem_for_reload_p, find_equiv_reg, regno_clobbered_p): Likewise.
* reload1.c (replace_pseudos_in, reload, calculate_needs_all_insns,
find_reg, delete_dead_insn, alter_reg, eliminate_regs,
elimination_effects, eliminate_regs_in_insn, scan_paradoxical_subregs,
forget_old_reloads_1, reload_reg_free_for_value_p, choose_reload_regs,
emit_input_reload_insns, emit_output_reload_insns, do_input_reload,
do_output_reload, emit_reload_insns, gen_reload,
delete_address_reloads_1, inc_for_reload): Likewise.
* reorg.c (update_reg_dead_notes, fix_reg_dead_note,
update_reg_unused_notes, fill_slots_from_thread): Likewise.
* resource.c (update_live_status, mark_referenced_resources,
mark_set_resources, mark_target_live_regs): Likewise.
* rtlanal.c (nonzero_address_p, get_jump_table_offset,
global_reg_mentioned_p_1, reg_mentioned_p, reg_referenced_p,
reg_set_p, set_noop_p, find_last_value, refers_to_regno_p,
note_stores, dead_or_set_p, dead_or_set_regno_p, find_regno_note,
find_reg_fusage, find_regno_fusage, replace_regs, regno_use_in,
parms_set, find_first_parameter_load, keep_with_call_p,
hoist_test_store, hoist_update_store, address_cost, nonzero_bits1,
num_sign_bit_copies1): Likewise.
* rtlhooks.c (gen_lowpart_general): Likewise.
* sched-deps.c (deps_may_trap_p, sched_analyze_1, sched_analyze_insn,
sched_analyze): Likewise.
* sched-rgn.c (check_live_1, update_live_1, sets_likely_spilled_1):
* sdbout.c (sdbout_symbol, sdbout_parms, sdbout_reg_parms): Likewise.
* simplify-rtx.c (simplify_replace_rtx, simplify_unary_operation,
simplify_binary_operation, simplify_const_relational_operation,
simplify_subreg): Likewise.
* stmt.c (decl_conflicts_with_clobbers_p, expand_asm_operands,
expand_end_stmt_expr, expand_return, expand_decl,
expand_anon_union_decl): Likewise.
* unroll.c (precondition_loop_p, calculate_giv_inc, copy_loop_body,
find_splittable_regs, find_splittable_givs, find_common_reg_term,
loop_iterations): Likewise.
* var-tracking.c (variable_union, variable_part_different_p,
variable_different_p, count_uses, add_uses, add_stores,
compute_bb_dataflow, set_variable_part, delete_variable_part,
emit_notes_in_bb, vt_get_decl_and_offset, vt_add_function_parameters):
* varasm.c (assemble_variable): Likewise.
2004-06-15 Chris Demetriou <>
* config/mips/linux.h (ASM_PREFERRED_EH_DATA_FORMAT): Remove
* config/mips/linux64.h (ASM_PREFERRED_EH_DATA_FORMAT): Remove
#undef and #if 0'd definition.
2004-06-15 J"orn Rennecke <>
* combine.c (distribute_notes): Comment typo fix.
2004-06-15 Roger Sayle <>
* expmed.c (synth_mult): Mask bits of the multiplier to the
machine mode of the multiplication. Don't consider shifts
by more than (or equal to) the width of the operation's mode.
2004-06-15 Paolo Bonzini <>
* doc/install.texi: Yet another update for autoconf
and automake versions.
2004-06-15 Paolo Bonzini <>
* function.h (struct function): Remove cannot_inline field.
(current_function_cannot_inline): Remove.
* passes.c (rest_of_compilation): Reset DECL_DEFER_OUTPUT.
Simplify conditionals to ignore warn_return_type.
* tree-optimize.c (tree_rest_of_compilation): Do not reset
* objc/objc-act.c (build_module_descriptor, finish_method_def):
Do not set current_function_cannot_inline.
2004-06-15 J"orn Rennecke <>
* cfglayout.c (fixup_reorder_chain): Handle case where the
destination of E_TAKEN is EXIT_BLOCK_PTR.
2004-06-15 Diego Novillo <>
* tree-ssa-copy.c (cprop_into_successor_phis): Fix typo.
2004-06-15 Paolo Bonzini <>
* fold-const.c (operand_equal_p): Update comment.
2004-06-15 Kazuhiro Inaoka <>
* config/m32r/m32r.h (RETURN_ADDR_RTX): Define.
* config/m32r/m32r-protos.h (m32r_return_addr): Added.
* config/m32r/m32r.c (m32r_exppand_prologue): Changed for
(m32r_return_addr): Added for __builtin_return_address(0).
(m32r_reload_lr): Ditto.
* longlong.h: Fix macros for m32r add_ssaaaa and sub_ddmmss.
2004-06-15 Paolo Bonzini <>
* doc/install.texi (Prerequisites): Update libbanshee,
fastjar, libcpp, libjava/libltdl entries to
automake 1.8.5.
2004-06-15 Eric Botcazou <>
Olivier Hainque <>
* function.c (fixup_var_refs): Also adjust the start of sequence
after fixing up the insns.
2004-06-15 Giovanni Bajo <>
* Update optimization -> tree-optimization/rtl-optimization.
2004-06-14 Benjamin Kosnik <>
* doc/install.texi (Prerequisites): Update libstdc++ entry to
automake 1.8.5.
2004-06-14 Eric Christopher <>
* config/s390/s390.h (TARGET_SWITCHES): Change -mtpf (-mno-tpf)
to -mtpf-trace (-mno-tpf-trace).
* doc/invoke.texi (S/390 and zSeries Options): Add tpf option
2004-06-14 Eric Botcazou <>
* real.c: Fix bit count in head comment.
2004-06-14 Jeff Law <>
* tree-ssa.c (kill_redundant_phi_nodes): More correctly handle
PHIs where the destination or an argument is marked with
2004-06-14 Jakub Jelinek <>
PR middle-end/15945
* simplify-rtx.c (simplify_binary_operation): Don't optimize out
Inf + -Inf, Inf - Inf, Inf / Inf and 0 * Inf if flag_trapping_math.
2004-06-14 Zdenek Dvorak <>
* (var_args): Fix regexp.
2004-06-14 Jakub Jelinek <>
PR target/15178
* config/i386/sol2.h (ASM_OUTPUT_DEF_FROM_DECLS): Define.
2004-06-14 Paul Brook <>
* dwarf2out.c (output_call_frame_info): Support dwarf3 cie entries.
2004-06-14 Zdenek Dvorak <>
* (FLAGS_H): New.
(flags.h): Replace by FLAGS_H.
* c.opt: Document Var, VarExists, Init and Report attributes.
* common.opt: Fill the values of the attributes.
* diagnostic.c (flag_fatal_errors): Do not define.
* except.c (flag_non_call_exceptions): Do not define.
* flags.h: Include options.h. Remove declarations conflicting with
the automatically defined ones.
* opts.c: Remove automatically defined variables.
(handle_option): Perform default initialization.
(common_handle_option): Do not handle options covered by the
default initialization.
* opts.h (struct cl_option): Add flag_var, has_set_value and set_value
* Generate variable declarations, handle CL_REPORT.
* toplev.c: Remove automatically defined variables.
(f_options): Removed.
(print_switch_values): Use cl_options instead of f_options.
* toplev.h (version_flag): Declaration removed.
2004-06-14 Ian Lance Taylor <>
* config/sparc/sparc.h: Correct comment about availability of
little endian option.
* config.gcc: Remove sparc64-*-aout*.
* config/sparc/sparc.c (sparc_aout_select_rtx_section): Remove.
* config/sparc/sp64-aout.h: Remove.
* config/sparc/aout.h: Remove.
2004-06-14 Ulrich Weigand <>
* config/s390/s390.c: Include "tree-gimple.h".
(s390_gimplify_va_arg): New function.
(s390_va_arg): Remove.
* config/s390/s390-protos.h (s390_va_arg): Remove.
* config/s390/s390.h (EXPAND_BUILTIN_VA_ARG): Call abort ().
2004-06-14 J"orn Rennecke <>
* basic-block.h (could_fall_through): Declare.
* cfganal.c (can_fallthru): Succeed if the target is EXIT_BLOCK_PTR.
Fail if the source already has a fallthrough edge to the exit
block pointer.
(could_fall_through): New function.
* cfgbuild.c (make_edges): Check if we already have a fallthrough
edge to the exit block pointer.
* cfglayout.c (fixup_fallthru_exit_predecessor): Check that it is
not called before reload has completed.
Handle special case of first block having a fall-through exit edge.
(cfg_layout_finalize): Don't call it before reload or if we have
rtl epilogues.
(fixup_reorder_chain): A fall through to the exit block does not
require the block to come last. Add sanity checks.
* cfgrtl.c (rtl_split_edge): Add special handling of fall through
edges to the exit block.
* function.c (cfglayout.h): #include.
(thread_prologue_and_epilogue_insns): If we have neither return nor
epilogue, but a fall through to the exit block from mid-function,
force a non-fall-through exit.
* (function.o): Depend on CFGLAYOUT_H.
2004-06-14 Alan Modra <>
* config/rs6000/rs6000.h (ASM_CPU_SPEC): Handle -mpowerpc64 and -mcpu
for power5 and rs64a. Correct condition for default. Correct power3,
620, 630, 7400, 7450, G4, 970 and G5 -mcpu entries. Add -many.
2004-06-13 Steven Bosscher <>
* gcse.c (hash_scan_set, hash_scan_insn, mark_set, mark_oprs_set):
Revert previous change, don't use CALL_P.
2004-06-13 Jason Merrill <>
* tree.h: Move std_gimplify_va_arg_expr protoype here.
* tree-gimple.h: From here.
2004-06-13 Daniel Berlin <>
Fix PR tree-optimization/15979
Fix PR tree-optimization/15981
* tree-ssa-pre.c (insert_aux): Fix faulty logic so that we don't
try to insert values undefined along some path.
2004-06-13 Daniel Berlin <>
* tree-ssa-pre.c (add_to_value): is_gimple_min_invariant things
are available everywhere too.
2004-06-13 Andrew Pinski <>
* fold-const.c (fold_checksum_tree <case 't'>): Only
look at TREE_VALUES if the EXPR is an ENUMERAL_TYPE.
EXPR is an INTEGERAL_TYPE or a scalar float type.
2004-06-13 Diego Novillo <>
* tree-sra.c (tree_sra): Update documentation.
2004-06-13 Joseph S. Myers <>
* c-typeck.c (comptypes, tagged_types_tu_compatible_p,
function_types_compatible_p, type_lists_compatible_p): Remove
flags parameter.
* c-tree.h (comptypes): Likewise.
* c-decl.c, c-lang.c,, c-typeck.c, objc/objc-act.c: All
callers changed.
2004-06-13 Eric Christopher <>
* c-decl.c (diagnose_mismatched_decls): Improve error message.
Remove unused code.
* c-typeck.c (comptypes): Add location in standard we're checking.
2004-06-13 Kaz Kojima <>
* config/sh/libgcc-std.ver: Add __unorddf2 and __unordsf2 with
version 3.3.4.
2004-06-12 Roger Sayle <>
* expmed.c (shift_cost, shiftadd_cost, shiftsub_cost): Additionally
index by machine mode.
(init_expmed): Initialize shift_cost, shiftadd_cost and shiftsub_cost
tables inside the loop over machine modes.
(synth_mult, expand_mult_highpart_optab, expand_mult_highpart,
expand_divmod): Index shift*_cost by the appropriate machine mode.
2004-06-12 Eric Christopher <>
* config/s390/s390.h: Rename TARGET_TPF to TARGET_TPF_PROFILING.
* config/s390/ Ditto.
* config/s390/s390.c: Ditto.
(s390_frame_info): Conditionalize frame and setup info on
(s390_arg_frame_offset): Ditto.
2004-06-12 Roger Sayle <>
* fold-const.c (omit_two_operands): New function.
* tree.h (omit_two_operands): Prototype here.
* builtins.c (fold_builtin_unordered_cmp): New function to lower
C99 unordered comparison builtins to the appropriate tree nodes.
(fold_builtin_1): Use fold_builtin_unordered_cmp to lower
BUILT_IN_ISUNORDERED comparisons to an UNORDERED_EXPR tree node.
(simplify_builtin_memcmp, simplify_builtin_strncmp,
simplify_builtin_strncat, simplify_builtin_strspn): Use the new
omit_two_operands function to build the required COMPOUND_EXPRs.
2004-06-12 Steven Bosscher <>,
Andreas Jaeger <>
* gcse.c (record_set_info): Use predicates like REG_P.
(mems_conflict_for_gcse_p): Likewise.
(load_killed_in_block_p): Likewise.
(hash_expr_1): Likewise.
(insert_set_in_table): Likewise.
(gcse_constant_p): Likewise.
(hash_scan_set): Likewise.
(hash_scan_insn): Likewise.
(canon_list_insert): Likewise.
(record_last_mem_set_info): Likewise.
(record_last_set_info): Likewise.
(compute_hash_table_work): Likewise.
(mark_set): Likewise.
(mark_clobber): Likewise.
(mark_oprs_set): Likewise.
(compute_transp): Likewise.
(find_avail_set): Likewise.
(cprop_insn): Likewise.
(do_local_cprop): Likewise.
(cprop): Likewise.
(find_implicit_sets): Likewise.
(find_bypass_set): Likewise.
(bypass_conditional_jumps): Likewise.
(insert_insn_end_bb): Likewise.
(pre_insert_copy_insn): Likewise.
(compute_transpout): Likewise.
(next_ls_expr): Likewise.
(invalidate_any_buried_refs): Likewise.
(compute_ld_motion_mems): Likewise.
(reg_set_info): Likewise.
(reg_clear_last_set): Likewise.
(find_moveable_store): Likewise.
(compute_store_table): Likewise.
(find_loads): Likewise.
(store_killed_in_insn): Likewise.
(insert_insn_start_bb): Likewise.
(reg_set_between_after_reload_p): Likewise.
(reg_used_between_after_reload_p): Likewise.
(is_jump_table_basic_block): Likewise.
(gcse_after_reload): Likewise.
(hash_scan_set_after_reload): Likewise.
(compute_hash_table_after_reload): Likewise.
2004-06-12 Steven Bosscher <>
* rtl.h (MEM_P, NONJUMP_INSN_P, CALL_INSN_P): New predicates.
(INSN_P): Don't look at the rtx code class, just explicitly
check for one of the tree RTX_INSN codes.
2004-06-11 Zack Weinberg <>
* c-typeck.c (default_function_array_conversion): Use
build_pointer_type not TYPE_POINTER_TO.
2004-06-11 Zack Weinberg <>
* Don't invoke ACX_HEADER_STDBOOL.
* configure, Regenerate.
* system.h: Unconditionally define bool as unsigned char,
BOOL_BITFIELD as unsigned int.
* domwalk.h: Use BOOL_BITFIELD.
2004-06-12 Andreas Jaeger <>
* libgcc-std.ver: Add __unorddf2 and __unordsf2 with version 3.3.4.
* libgcc-darwin.ver: Likewise.
2004-06-12 Peter Jakubek <>
* reload.c (find_reloads): Force reload for pseudo registers on big
endian machines.
2004-06-11 Steven Bosscher <>
* tree-ssa-dce.c (mark_control_dependent_edges_necessary):
Don't try to mark anything control dependent on the entry or
exit blocks.
2004-06-11 Daniel Berlin <>
Fix Bug 15899
Fix Bug 15460
* tree.h (SSA_NAME_VALUE): New macro.
(struct tree_ssa_name): Add value_handle member.
* tree-ssa-pre.c: Replaced.
* tree-flow.h (tree_ann_type): Add CST_ANN, EXPR_ANN.
(struct cst_ann_d): New.
(struct expr_ann_d): New.
(union tree_ann_d): Add cst_ann, expr_ann.
* tree-dfa.c (create_cst_ann): New function.
(create_expr_ann): Ditto.
* tree-flow-inline.h (cst_ann): New function.
(expr_ann): Ditto.
(get_cst_ann): Ditto.
(get_expr_ann): Ditto..
2004-06-11 John David Anglin <>
* pa.c (pa_hpux_init_libfunc): Add support for unord_optab.
* pa/quadlib.c (enum qfcmp_magic): Define magic values for call to
_U_Qfcmp library function.
(_U_Qfltgt, _U_Qfunle, _U_Qfunlt, _U_Qfunge, _U_Qfungt, _U_Qfuneq,
_U_Qfunord, _U_Qford): Add more TFmode builtin compare functions.
* pa.c (legitimize_pic_address): Use UNSPEC_DLTIND14R to identify
unspec used for loading address from DLT.
* Define constants for the uses of UNSPEC and UNSPEC_VOLATILE.
Change all users of UNSPEC and UNSPEC_VOLATILE to use new constants.
Don't use short code sequence when loading the address of a nonlocal
(nonlocal_goto): New expander.
(indirect_goto): New jump pattern for nonlocal gotos.
(short_jump): Remove extra whitespace.
(builtin_longjmp): Clobber memory and hard frame pointer. Restore
frame pointer via virtual_stack_vars_rtx when we have a nonlocal goto
2004-06-11 Roger Sayle <>
* expmed.c (synth_mult): Add an additional MODE argument for the
machine mode of the multiplication. Update recursive calls. Use
mode instead of word_mode for determining operation costs.
(choose_mult_variant): Update calls to synth_mult with "mode".
2004-06-11 Richard Henderson <>
* tree-ssa-operands.c (get_stmt_operands): Clear makes_aliased_loads
and makes_aliased_stores.
2004-06-11 Andrew Pinski <>
* doc/install.text (--enable-shared): Fix typo.
2004-06-11 Richard Henderson <>
* config/alpha/alpha.c (alpha_gimplify_va_arg_1): Remove post_p
argument. Use internal post for call to gimplify_expr. Tidy
rounded type size computation.
(alpha_gimplify_va_arg): Use get_formal_tmp_var and
2004-06-11 Andrew Pinski <>
* doc/install.texi (--enable-shared): Update libobjc's shared library
status. Remove reference to libf2c.
2004-06-11 Jason Merrill <>
* config/i386/i386.h (EXPAND_BUILTIN_VA_ARG): Just abort.
* config/i386/i386.c (ix86_va_arg): Remove.
* config/rs6000/rs6000.h (EXPAND_BUILTIN_VA_ARG): Just abort.
* config/rs6000/rs6000.c (rs6000_va_arg): Remove.
* config/alpha/alpha.h (EXPAND_BUILTIN_VA_ARG): Just abort.
* config/alpha/alpha.c (alpha_va_arg): Remove.
* config/sparc/sparc.h (EXPAND_BUILTIN_VA_ARG): Just abort.
* config/sparc/sparc.c (sparc_va_arg): Remove.
* tree-ssa-operands.c (get_stmt_operands): Use a V_MAY_DEF if the
assignment might throw.
* tree-eh.c (tree_could_throw_p): Support non-call exceptions in
2004-06-11 J"orn Rennecke <>
PR 15886:
* sh.h (ALLOCATE_INITIAL_VALUE): Use return_address_pointer_rtx.
2004-06-11 Joseph S. Myers <>
* doc/install.texi (Prerequisites): Update documentation of
required versions of autoconf and automake. Remove mention of
2004-06-11 Jason Merrill <>
* config/sparc/sparc.c (sparc_gimplify_va_arg): New fn.
2004-06-11 Jerry Quinn <>
* typeclass.h: Add GPL plus exception license. Add include
2004-06-10 Jason Merrill <>
* gimplify.c (gimplify_modify_expr): Don't force a temporary
of an aggregate_value_p type.
2004-06-10 Jeff Law <>
* fold-const.c (fold_inf_compare): Avoid creating non-gimple
code when we are in gimple form.
2004-06-10 Diego Novillo <>
* (tree-ssanames.o): Depend on TREE_FLOW_H.
* tree-flow.h (ssa_names, num_ssa_names, ssa_name): Declare.
(highest_ssa_version): Remove.
* tree-outof-ssa.c (new_temp_expr_table): Replace
highest_ssa_version with num_ssa_names.
(dump_replaceable_exprs): Likewise.
(rewrite_vars_out_of_ssa): Likewise.
* tree-ssa-ccp.c (initialize): Likewise
* tree-ssa-copyrename.c (rename_ssa_copies): Likewise.
* tree-ssa-dce.c (tree_dce_init): Likewise.
* tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
* tree-ssa-live.c (create_ssa_var_map): Likewise.
(dump_var_map): Likewise.
* tree-ssa.c (verify_ssa): Likewise.
(kill_redundant_phi_nodes): Likewise.
Do not build a local array of SSA_NAMEs. Use the ssa_names table.
* tree-ssanames.c: Include tree-flow.h
(ssa_names): New varray.
(init_ssa_names): Initialize ssa_names.
Reserve the first slot of the ssa_names table.
(make_ssa_name): Push the newly created SSA_NAME into ssa_names.
Assign version numbers using num_ssa_names.
2004-06-10 Joseph S. Myers <>
* doc/sourcebuild.texi (Front End): Add details of more
installation documentation required.
2004-06-10 Brian Booth <>
* doc/tree-ssa.texi: Remove references to VDEF and add descriptions
* tree-dfa.c (dfa_stats_d): Add num_v_must_defs and rename
num_vdefs to num_v_may_defs.
(compute_immediate_uses_for_stmt): Rename occurences of vdef
to v_may_def.
(redirect_immediate_uses): Ditto.
(dump_dfa_stats): Ditto. Also added code to dump num_v_must_defs.
(collect_dfa_stats_r): Rename occurences of vdef to v_may_def.
Also add code to sum up the number of v_must_defs.
(vdefs_disappeared_p): Replace with...
(v_may_defs_disappeared_p): This.
(v_must_defs_disappeared_p): New function.
(mark_new_vars_to_rename): Rename occurences of vdef to v_may_def.
Also add code to mark new variables found in V_MUST_DEFs for
* tree-flow.h (stmt_ann_d): Add v_must_def_ops and replace
vdef_ops to v_may_def_ops.
(get_vdef_ops): Replace with...
(get_v_may_def_ops): This.
* tree-flow-inline.h (get_vdef_ops): Replace with...
(get_v_may_def_ops): This.
(get_v_must_def_ops): New function.
(get_vdef_result_ptr): Replace with...
(get_v_may_def_result_ptr): This.
(get_vdef_op_ptr): Ditto with...
(get_v_may_def_op_ptr); This.
(get_v_must_def_op_ptr): New function.
* tree-into-ssa.c (mark_def_sites): Rename occurences of vdef
to v_may_def. Also add code to mark statements with
V_MUST_DEFs as definition sites.
(rewrite_stmt): Rename occurences of vdef to v_may_def. Also
add code to register new V_MUST_DEFs made by the statement.
* tree-outof-ssa.c (VIRTUAL_PARTITION): Update comments.
(check_replaceable): Rename occurences of vdef to v_may_def. Also
add check for V_MUST_DEFs.
(find_replaceable_in_bb): Ditto.
* tree-pretty-print.c (dump_vops): Rename occurences of vdef
to v_may_def. Also add code to dump V_MUST_DEFs.
* tree-sra.c (mark_all_vdefs): Replace with...
(mark_all_v_may_defs): This.
(mark_all_v_must_defs): New function.
(create_scalar_copies): Replace call to mark_all_vdefs with
calls to mark_all_v_may_defs and mark_all_v_must_defs.
(scalarize_structures): Rename occurences of vdef to v_may_def.
Also add a check for V_MUST_DEFs.
(scalarize_modify_expr): Rename occurences of vdef to v_may_def.
* tree-ssa-alias.c (global_var): Update comment.
(compute_may_aliases): Ditto.
(compute_points_to_and_addr_escape): Rename occurences of vdef
to v_may_def. Also add code to mark variables in V_MUST_DEF
operands as being written to.
(group_aliases): Update comment.
(maybe_create_global_var): Ditto.
* tree-ssa.c (verify_ssa): Rename occurences of vdef to v_may_def.
Also add a check for V_MUST_DEFs on GIMPLE registers.
(replace_immediate_uses): Rename occurences of vdef to v_may_def.
* tree-ssa-ccp.c (visit_stmt): Rename occurences of vdef
to v_may_def. Also add code to mark all V_MUST_DEF operands
(initialize): Ditto.
(set_rhs): Rename occurences of vdef to v_may_def. Also add
code to update SSA_NAMEs in V_MUST_DEFs.
* tree-ssa-copy.c (cprop_into_stmt): Rename occurences of vdef
to v_may_def.
* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Rename
occurences of vdef to v_may_def. Also add code to mark statements
with V_MUST_DEFs as necessary.
(propagate_necessity): Rename occurences of vdef to v_may_def.
* tree-ssa-dom.c (redirect_edges_and_update_ssa_graph): Rename
occurences of vdef to v_may_def. Also add code to mark operands
in V_MUST_DEFs for renaming.
(eliminate_redundant_computations): Rename occurences of vdef
to v_may_def.
(record_equivalences_from_stmt): Rename occurences of vdef
to v_may_def. Also add code to record VUSEs for V_MUST_DEFs.
(optimize_stmt): Remove unnesessary variable vdefs. Update
(register_definitions_for_stmt): Rename occurences of vdef
to v_may_def. Also add code to register definitions made with
* tree-ssa-dse.c (fix_stmt_vdefs): Replace with...
(fix_stmt_v_may_defs): This.
(fix_phi_uses): Rename occurences of vdef to v_may_def.
(dse_optimize_stmt): Ditto.
* tree-ssa-live.c (create_ssa_var_map): Rename occurences of vdef
to v_may_def. Also add code to mark V_MUST_DEF operands as being
used in virtual operators.
* tree-ssa-loop.c (mark_defs_for_rewrite): Rename occurences of
vdef to v_may_def. Also add code to mark V_MUST_DEF operands for
* tree-ssa-operands.c (opf_kill_def): New flag for killing
(build_vdefs): Renamed to...
(build_v_may_defs): This.
(build_v_must_defs): New variable.
(voperands_d): Add v_must_def_ops and replace vdef_ops with
(append_vdef): Replace with...
(append_v_may_def): This.
(append_v_must_def): New function.
(NUM_FREE): Increment for V_MUST_DEF
(optype_freelist): Increment its size for V_MUST_DEF
(allocate_vdef_optype): Replace with...
(allocate_v_may_def_optype): This.
(allocate_v_must_def_optype): New function.
(free_vdefs): Replace with...
(free_v_may_defs): This.
(free_v_must_defs): New function.
(remove_vdefs): Replace with...
(remove_v_may_defs): This.
(remove_v_must_defs): New function.
(init_ssa_operands): Rename occurences of vdef to v_may_def. Also
add code to initialize build_v_must_defs.
(finalize_ssa_vdefs): Replace with...
(finalize_ssa_v_may_defs): This.
(finalize_ssa_vuses): Rename occurences of vdef to v_may_def.
(finalize_ssa_v_must_defs): New function.
(finalize_ssa_stmt_operands): Replace call to finalize_ssa_vdefs
with calls to finalize_ssa_v_may_defs and finalize_ssa_v_must_defs.
(verify_start_operands): Rename occurences of vdef to v_may_def.
Also add check for build_v_must_defs.
(get_stmt_operands): Rename occurences of vdef to v_may_def.
Also add code to handle V_MUST_DEFs and to use opf_kill_def for
killing definitions.
(get_expr_operands): Update comment and use opf_kill_def for
killing definitions.
(add_stmt_operand): Replace code that appends VDEFs with code
that appends V_MUST_DEFs when opf_kill_def is set and V_MAY_DEFs
(add_call_clobber_ops): Update comments.
* tree-ssa-operands.h (vdef_optype_d): Replace with...
(v_may_def_optype_d): This.
(v_must_def_optype_d): New structure.
(VDEF_OPS): Replace with...
(V_MAY_DEF_OPS): This.
(STMT_VDEF_OPS): Same with...
(NUM_VDEFS): And...
(VDEF_RESULT_PTR): As well as...
(VDEF_RESULT): Same goes for...
(VDEF_OP_PTR): And...
(VDEF_OP): And...
(V_MAY_DEF_OP): This.
(V_MUST_DEF_OPS): New macro.
(V_MUST_DEF_OP): Ditto.
(remove_vdefs): Replace signature with...
(remove_v_may_defs): This.
(remove_v_must_defs): New function signature.
* tree-ssa-pre.c (subst_phis): Replace call to remove_vdefs
with calls to remove_v_may_defs and remove_v_must_defs.
(process_left_occs_and_kills): Rename occurences of vdef to v_may_def.
Also add code that marks left occurences of operands in V_MUST_DEFs.
* tree-tailcall.c (find_tail_calls): Rename occurences of vdef
to v_may_def. Also add check for V_MUST_DEFs.
(eliminate_tail_call):Rename occurences of vdef to v_may_def.
2004-06-10 Vladimir Makarov <>
PR target/15653
* haifa-sched.c (schedule_block): Finish cycle after issuing asm
2004-06-10 Volker Reichelt <>
PR web/15263
* doc/install.texi: Remove superfluous linebreak.
2004-06-10 Roger Sayle <>
* builtins.c (expand_builtin): Fall back to library function call for
conj, conjf, conjl, creal, crealf, creall, cimag, cimagf and cimagl.
(fold_builtin_1): Lower built-ins BUILT_IN_CONJ{,F,L} to CONJ_EXPR,
IMAGPART_EXPR respectively.
2004-06-10 J"orn Rennecke <>
* sh.c (dump_table): New argument start. Changed caller.
(fixup_mova): New function.
(find_barrier): Use it.
(sh_reorg): Likewise. Check for CODE_FOR_casesi_worker_2.
If the label a mova refers to is above the mova itself, change
the mova into a load.
* (*casesi_worker): Rename to:
(casesi_worker_2): New insn.
2004-06-10 Jason Merrill <>
* target.h (struct gcc_target): Change gimplify_va_arg_expr
hook signature.
* tree-gimple.h: Adjust.
* config/alpha/alpha.c (alpha_gimplify_va_arg): Adjust.
* config/i386/i386.c (ix86_gimplify_va_arg): Adjust.
Use fold_convert.
* config/ia64/ia64.c (ia64_gimplify_va_arg): Adjust.
* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust.
Use COMPLEX_EXPR for complex numbers. Use fold_convert.
* builtins.c (std_gimplify_va_arg_expr): Adjust. Use fold_convert.
(gimplify_va_arg_expr): Return GS_ERROR in error case.
Gimplify valist rather than calling stabilize_va_list.
2004-06-10 Zdenek Dvorak <>
* (df.o): Remove fibheap dependency.
* df.h: Do not include sbitmap.h.
(struct ref): New field "data".
(DF_REF_DATA): New accessor macro.
(struct df): Field "dom" removed.
(df_analyze_subcfg): New function.
(transfer_function_sbitmap, transfer_function_bitmap): Replaced by ...
(transfer_function): ... new type.
(iterative_dataflow_sbitmap, iterative_dataflow_bitmap): Replaced by ...
(iterative_dataflow): ... new function.
(enum set_representation, struct dataflow): New.
* df.c: Do not include fibheap.h.
(df_reg_def_chain_clean, df_reg_use_chain_clean,
(df_bb_table_realloc, df_analyse_subcfg, free_reg_ref_chain,
prune_to_subcfg, df_bb_modify): New functions.
(df_bitmaps_alloc, df_reg_def_chain_create, df_reg_use_chain_create,
df_refs_update, df_reg_table_realloc, df_ref_create,
df_bb_reg_def_chain_create, df_bb_reg_use_chain_create,
df_bb_rd_local_compute, df_bb_ru_local_compute, df_bb_lr_local_compute,
df_analyse_1, df_insn_modify): Support analysing only a part of the cfg.
(dataflow_set_a_op_b, dataflow_set_copy): New functions.
(df_rd_transfer_function, df_ru_transfer_function,
df_lr_transfer_function): Type of bitmaps changed to void *.
(hybrid_search_bitmap, hybrid_search_sbitmap): Merge into ...
(hybrid_search): ... new function.
(iterative_dataflow_bitmap, iterative_dataflow_sbitmap): Merge into ...
(iterative_dataflow): ... new function. Avoid use of fibheaps for
a worklist. Do not process basic blocks unnecessarily.
2004-06-10 Roger Sayle <>
* fold-const.c (fold_abs_const): Make extern.
* tree.h (fold_abs_const): Prototype here.
* builtins.c (fold_builtin_fabs): New function to transform
fabs, fabsf and fabsl builtins into ABS_EXPR tree nodes.
(fold_builtin_abs): New function to transform abs, labs, llabs
and imaxabs builtins into ABS_EXPR tree nodes.
(expand_builtin): Fall back to a function call for abs, labs,
llabs and imaxabs builtins that survive constant folding.
(fold_builtin_1): Call fold_builtin_fabs for FABS, FABSF and
FABSL, and fold_builtin_abs for ABS, LABS, LLABS and IMAXABS.
2004-06-10 Jakub Jelinek <>
* config/ia64/unwind-ia64.c (uw_frame_state_for): Don't assume a
leaf function without unwind info at RP 0.
2004-06-10 Jakub Jelinek <>
PR c++/14791
* tree.h (enum tree_index): Add TI_FILEPTR_TYPE.
(fileptr_type_node): Define.
* tree.c (build_common_tree_nodes_2): Initialize
fileptr_type_node to ptr_type_node.
* c-common.c (c_common_nodes_and_builtins): For C++, make
fileptr_type_node a distinct type copy.
the above *FILEPTR* types instead of *PTR*.
2004-06-09 Daniel Berlin <>
* tree-ssa.c (verify_ssa): Verify that vdefs/makes_aliased_stores
2004-06-09 Roger Sayle <>
* fold-const.c (fold_not_const): New function.
(fold) <ABS_EXPR>: Don't bother testing wins.
(fold) <BIT_NOT_EXPR>: Call fold_not_const.
(nondestructive_fold_unary_to_constant) <BIT_NOT_EXPR>: Likewise.
2004-06-09 Richard Henderson <>
PR middle-end/15228
* function.c (assign_parms): Always set_mem_align with the computed
2004-06-09 Richard Henderson <>
PR opt/15108
* tree-tailcall.c (find_tail_calls): Don't check early for
tail_recursion failure.
2004-06-09 Diego Novillo <>
Move SSA_NAME annotations into tree_ssa_name.
* tree-dfa.c (create_ssa_name_ann): Remove.
* tree-flow-inline.h (ssa_name_ann, get_ssa_name_ann): Remove.
* tree-flow.h (enum tree_ann_type): Remove SSA_NAME_ANN.
(struct ssa_name_ann_d): Remove.
(union tree_ann_d): Update.
(ssa_name_ann_t): Remove.
* tree-ssa-alias.c: (get_ptr_info): New local function.
Replace references to ssa_name_ann_t with struct ptr_info_def.
* tree-ssa-operands.c (get_expr_operands): Likewise.
* tree.h (SSA_NAME_PTR_INFO): Define.
(struct ptr_info_def): Declare.
(struct tree_ssa_name): Add field 'ptr_info'.
2004-06-09 Danny Smith <>
* config/i386/winnt.c (i386_pe_output_labelref): Correct
misplaced ')'.
2004-06-09 Steven Bosscher <>
* config/i386/ Rewrite using the DFA model.
* config/i386/i386.c (ix86_adjust_cost): Don't increase the
cost of load-operation insns for the K6.
(ia32_use_dfa_pipeline_interface): Add TARGET_K6.
(ia32_multipass_dfa_lookahead): Likewise.
2004-06-09 Richard Henderson <>
* config/alpha/alpha.c (alpha_gimplify_va_arg_1,
alpha_gimplify_va_arg, TARGET_GIMPLIFY_VA_ARG_EXPR): New.
2004-06-09 Richard Henderson <>
* expmed.c (emit_store_flag): Cope with FLOAT_STORE_FLAG_VALUE.
2004-06-09 Geoffrey Keating <>
* (CPPLIB_H): Put files in order of inclusion.
(gtype-desc.o): Update dependencies.
2004-06-09 Mark Mitchell <>
PR c++/15815
2004-06-07 Mark Mitchell <>
* doc/extend.texi: Deprecate #pragma interface and #pragma
2004-06-09 David S. Miller <>
* config/sparc/sparc.h (MOVE_RATIO): New definition.
2004-06-09 Richard Henderson <>
* basic-block.h (struct edge_def): Add goto_locus.
* tree-cfg.c (make_goto_expr_edges): Set it.
(disband_implicit_edges): Use it.
* tree-pretty-print.c (dump_implicit_edges): Print it.
2004-06-08 Anil Paranjpe <>
* (ldm_h8300s_4): Fix condition for expander.
2004-06-08 Jason Merrill <>
Gimplify VA_ARG_EXPR into simpler forms.
* target.h: Add gimplify_va_arg_expr hook.
* target-def.h: Add TARGET_GIMPLIFY_VA_ARG_EXPR.
* fold-const.c (build_fold_addr_expr)
(build_fold_addr_expr_with_type): Move from gimplify.c.
* tree.h: Declare them.
* gimplify.c (gimplify_and_add): New fn.
(build_addr_expr, build_addr_expr_with_type): Move to fold-const.c.
(gimplify_array_ref_to_plus, gimplify_modify_expr)
(gimplify_expr): Use build_fold_*.
(copy_if_shared_r): Only mark VA_ARG_EXPR volatile if we
don't know how to gimplify it.
* builtins.c (std_gimplify_va_arg_expr): New fn.
(dummy_object): New static fn.
(gimplify_va_arg_expr): New fn.
(stabilize_va_list): Use build_fold_*.
* tree-gimple.h: Declare new fns.
* config/i386/i386.c (TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
(ix86_gimplify_va_arg): New fn.
* config/ia64/ia64.c (TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
(ia64_gimplify_va_arg): New fn.
* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): New fn.
* alias.c (get_varargs_alias_set): Just return 0 for now.
* c-objc-common.c (c_tree_printer): Improve handling of %T.
2004-06-09 Andrew Pinski <>
* tree-complex.c (expand_complex_comparison): Use fold_convert instead
of convert.
* tree-inline.c (setup_one_parameter): Likewise.
* tree-sra.c (csc_build_component_ref): Likewise.
* tree-ssa-ccp.c (ccp_fold): Likewise.
* tree-ssa-copy.c (cprop_operand): Likewise.
* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Likewise.
* tree-tailcall.c (tree_optimize_tail_calls_1): Likewise.
2004-06-09 J"orn Rennecke <>
PR rtl-optimization/15521:
* sched-int.h (in_post_call_group_p): Change type to enum.
* sched-deps.c (sched_analyze_insn):
(sched_analyze): When in_post_call_group_p is post_call_initial,
don't add a dependency, but still set SCHED_GROUP_P and CANT_MOVE,
and also reset in_post_call_group_p to post_call.
(sched_analyze): When the previous basic block ended in a CALL_INSN,
initialize in_post_call_group_p as post_call_initial.
(init_deps): initialize in_post_call_group_p to not_post_call.
2004-06-09 Arnaud Charlet <>
PR ada/6637
* doc/install.texi: List ada, libada as options to --enable-shared
2004-06-09 Paolo Bonzini <>
* aclocal.m4 (gcc_AC_PROG_LN): Remove.
(gcc_AC_CHECK_DECLS): Use AH_TEMPLATE to generate entries.
* Call ACX_PROG_LN, falling back to $LN_S
if hard links are not available.
* configure: Regenerate.
* Regenerate.
2004-06-08 Per Bothner <>
* New --enable-mapped-location sets USE_MAPPED_LOCATION.
2004-06-08 Richard Kenner <>
* toplev.c (floor_log2_wide): Correct casts for 64-bit hosts.
Correct formatting.
2004-06-08 James E Wilson <>
PR target/15790
* config/i386/i386-coff.h (ASM_OUTPUT_ALIGN): Define.
2004-06-08 Andrew Pinski <>
* fold-const.c (fold_convert): Treat OFFSET_TYPE like
2004-06-08 Bernardo Innocenti <>
* modulo-sched.c: Compile only when INSN_SCHEDULING is
2004-06-08 Jeff Law <>
* doc/contrib.texi: Add entries for Stefan Olsson and
Ola Ronnerup.
2004-06-08 DJ Delorie <>
* toplev.c (floor_log2_wide): Replace loop with faster bit
(exact_log2_wide): Define in terms of the above.
* toplev.h (floor_log2): Use _builtin_clz family of builtins if
2004-06-08 Andrew Pinski <>
* config/rs6000/rs6000.c (print_operand, <case 'z'>):
Make sure that we are in INDIRECT mode when getting the
stub name.
2004-06-08 Anil Paranjpe <>
* (extendqisi2_h8300): Add constraints.
(ldm_h8300s_4_normal): Fix typo.
2004-06-08 Richard Henderson <>
* gimple-low.c (struct lower_data): Replace the_return_label and
one_return_stmt with return_statements.
(lower_function_body): Process the entire list of return_statements.
(lower_return_expr): Check source value before unifying return_exprs.
* gimplify.c (gimplify_return_expr): Force the use of a temporary
for !aggregate_value_p.
* tree-gimple.c: Update RETURN_EXPR grammer.
2004-06-08 Vladimir Makarov <>
PR target/15598
* config/ia64/ia64.c (bundling): Add missed TYPE_A.
2004-06-08 Zdenek Dvorak <>
PR rtl-optimization/15717
* config/i386/i386.c (legitimate_constant_p): Do not allow
x - symbol_ref.
2004-06-08 Alexandre Oliva <>
* gimplify.c (copy_if_shared_r): Revert:
2004-05-21 Richard Henderson <>
* gimplify.c [...] Don't mark VA_ARG_EXPRs volatile here.
2004-06-07 Roger Sayle <>
* expmed.c (add_cost, neg_cost, sdiv_pow2_cheap, smod_pow2_cheap):
Make arrays indexed by machine mode. Rename negate_cost to neg_cost.
(init_expmed): Initialize these cost arrays as appropriate.
(store_bit_field, extract_bit_field): Correct whitespace.
(synth_mult, choose_mult_variant, expand_mult, expand_mult_highpart,
expand_mult_highpart_optab, expand_divmod): Update uses of add_cost,
neg_cost, sdiv_pow2_cheap, smod_pow2_cheap to index with mode,
word_mode or compute_mode as appropriate.
2004-06-07 Eric Botcazou <>
PR target/15783
* config/sparc/sparc.c (function_arg_union_value): Add 'mode'
parameter. Enumerate the registers inside the PARALLEL.
(function_arg): Adjust call to function_arg_union_value.
(function_value): Likewise.
* config/sparc/sparc.c (sparc_function_epilogue): Properly format.
2004-06-07 Roger Sayle <>
* real.c (real_copysign): New function to implement libm's copysign.
* real.h (real_copysign): Prototype here.
* fold-const.c (tree_expr_nonnegative_p): The result of sqrt, sqrtf
and sqrtl can be negative, as sqrt(-0.0) = -0.0. Correct whitespace.
* builtins.c (fold_builtin_isascii, fold_builtin_toascii,
fold_builtin_isdigit): Add function prototypes.
(fold_builtin_copysign): New function to fold copysign, copysignf
and copysignl. Optimize copysign(x,x) as x. Evaluate copysign of
constant arguments at compile-time using real_copysign. Fold
copysign(X,Y) as fabs(X) if Y is always non-negative.
(fold_builtin_1): Correct minor whitespace/style issues. Call
fold_builtin_copysign for BUILT_IN_COPYSIGN{,F,L}.
2004-06-07 J"orn Rennecke <>
* tree.c (iterative_hash_expr): Use real_hash.
2004-06-07 Joseph S. Myers <>
PR c/14765
* (compstmt_primary_start): Set last_expr_type to
2004-06-07 Mark Mitchell <>
PR c++/15815
* doc/extend.texi: Deprecate #pragma interface and #pragma
2004-06-07 Alexandre Oliva <>
PR middle-end/15666
* c-decl.c (finish_decl): Use change_decl_assembler_name for the
builtin decl as well.
2004-06-07 Roger Sayle <>
PR c/14649
* c-typeck.c (require_constant_value, require_constant_elements):
Move declarations to the top of the file.
(build_function_call): If we require a constant value, fold with
fold_initializer. If the result is a constant, and the function
wasn't called using __builtin_foo, issue a pedantic warning.
(build_unary_op): If we require a constant value, fold tree with
(build_binary_op): Use require_constant_value to determine whether
to call fold or fold_initializer.
2004-06-07 Richard Henderson <>
* gimple-low.c (struct lower_data): Add the_return_label and
(lower_function_body): Initialize and use them.
(lower_return_expr): New.
(lower_stmt): Call it.
* gimplify.c (gimplify_return_expr): Force the argument to be either
null or a result_decl.
* tree-gimple.c: Update gimple grammer to match.
* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Deny
coalescing of result_decls.
2004-06-07 Richard Henderson <>
PR rtl-opt/15193
* expmed.c (extract_bit_field): Fix vector_extract return.
* config/i386/ (negv4sf2): New pattern.
2004-06-07 Mark Mitchell <>
PR c++/15337
* c-common.c (c_sizeof_or_alignof_type): Use more detailed error
2004-06-06 Paolo Bonzini <>
* Regenerate.
2004-06-06 Steven Bosscher <>
* tree-cfg.c (tree_verify_flow_info): Make sure that labels in
SWITCH_LABELS are always sorted.
2004-06-06 Steven Bosscher <>
* hooks.c (hook_int_void_1): New generic hook.
* hooks.h (hook_int_void_1): Add prototype.
Define to hook_int_void_1.
* config/c4x/ Replace dummies for the old pipeline model
with dummies for the new one.
2004-06-06 Roger Sayle <roge